<?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>42767</bug_id>
          
          <creation_ts>2010-07-21 10:12:50 -0700</creation_ts>
          <short_desc>[Windows] Home hey doesn&apos;t work in first DIV inside a TABLE</short_desc>
          <delta_ts>2010-07-22 16:21:15 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>enrica</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>254382</commentid>
    <comment_count>0</comment_count>
      <attachid>62202</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-07-21 10:12:50 -0700</bug_when>
    <thetext>Created attachment 62202
Test case

Repro steps:
1. Create a page with the following HTML (or use attached test case):
&lt;TABLE&gt;
  &lt;TR&gt;
    &lt;TD&gt;
      &lt;DIV contenteditable=&quot;true&quot;&gt;
        &lt;DIV&gt;Line 1 - home does not work&lt;/DIV&gt;
        &lt;DIV&gt;Line 2 - home does work&lt;/DIV&gt;
      &lt;/DIV&gt;
    &lt;/TD&gt;
  &lt;/TR&gt;
&lt;/TABLE&gt;
2. Click into the contenteditable div and place the cursor inside Line 1.
3. Press Home

Expected result:
The cursor moves to the beginning of the line.

Result:
The cursor doesn&apos;t move.

Other notes:
* Happens in both Chromium on Windows and Safari on Windows.
* Works as expected on Line 2.
* Effects Google Sites (first line of any Sites page exhibits this bug).

(Related Chromium bug - crbug.com/49780)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254392</commentid>
    <comment_count>1</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-07-21 10:21:56 -0700</bug_when>
    <thetext>Note that this is Windows only - Mac behavior is correct to not move the cursor when home key is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254397</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-21 10:23:35 -0700</bug_when>
    <thetext>I guess Home/End doesn&apos;t move the caret in the line so this bug doesn&apos;t reproduce on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254416</commentid>
    <comment_count>3</comment_count>
      <attachid>62211</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-21 10:48:43 -0700</bug_when>
    <thetext>Created attachment 62211
demonstrates the bug on mac using modify(move, backward, line-boundary)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254590</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-21 17:05:13 -0700</bug_when>
    <thetext>The problem lies in http://trac.webkit.org/browser/trunk/WebCore/editing/visible_units.cpp#L376 which is called by logicalStartPositionForLine &lt; logicalStartOfLine &lt; SelectionController::modifyMovingBackward.  Here, we are avoiding the first position in the table even if the previous position wasn&apos;t editable.  One line fix to add isEditablePosition(previous.deepEquivalent()) will fix the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254652</commentid>
    <comment_count>5</comment_count>
      <attachid>62262</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-21 21:48:27 -0700</bug_when>
    <thetext>Created attachment 62262
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254874</commentid>
    <comment_count>6</comment_count>
      <attachid>62262</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-22 10:44:36 -0700</bug_when>
    <thetext>Comment on attachment 62262
fixes the bug

It would be nice if, in the cases where there are multiple dump calls, if each one could be prefixed. Also, it would be good if dump took a second optional argument for a description string. For example, I&apos;d like the test expectations for this test to be something like the following:

Tests whether home moves the caret to the beginning of line inside a content-editable in an uneditable table.

Dump of markup 1:
&lt;DIV id=&quot;test&quot; contentEditable=&quot;true&quot;&gt;
&lt;#text&gt;
&lt;/#text&gt;
&lt;DIV id=&quot;l1&quot;&gt;
&lt;#text&gt;The caret is initially &lt;selection-caret&gt;here but should move to the beginning of the line.&lt;/#text&gt;
&lt;/DIV&gt;
&lt;#text&gt;
&lt;/#text&gt;
&lt;DIV&gt;
&lt;#text&gt;dummy text&lt;/#text&gt;
&lt;/DIV&gt;
&lt;#text&gt;
&lt;/#text&gt;
&lt;/DIV&gt;

Dump of markup 2:
&lt;DIV id=&quot;test&quot; contentEditable=&quot;true&quot;&gt;
&lt;#text&gt;
&lt;/#text&gt;
&lt;DIV id=&quot;l1&quot;&gt;
&lt;#text&gt;&lt;selection-caret&gt;The caret is initially here but should move to the beginning of the line.&lt;/#text&gt;
&lt;/DIV&gt;
&lt;#text&gt;
&lt;/#text&gt;
&lt;DIV&gt;
&lt;#text&gt;dummy text&lt;/#text&gt;
&lt;/DIV&gt;
&lt;#text&gt;
&lt;/#text&gt;
&lt;/DIV&gt;

Where &quot;Dump of markup *&quot; is the default value for the optional description string. If Markup.dump is only called once, without a description string, then it should not print a description before dumping. Finally, if you make this change, then rename Markup._description to Markup._test_description to avoid confusion.

&gt; +++ LayoutTests/resources/dump-as-markup.js	(working copy)

Your indentation is off in many places in this file.

&gt; +	var markup = &quot;&quot;;
&gt; +
&gt; +	if (Markup._description &amp;&amp; !Markup._container)
&gt; +		markup = Markup._description + &apos;\n&apos;;

This should be += (imagine if a line got inserted above this one modifying markup). 

&gt; +        Markup._container.style.cssText = &apos;width:100%&apos;;

I know you&apos;re just modifying existing code, but this should probably be &quot;Markup._container.style.width = &apos;100%&apos;;&quot;. No reason to use cssText if we&apos;re not actually setting multiple properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254903</commentid>
    <comment_count>7</comment_count>
      <attachid>62320</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-22 11:32:58 -0700</bug_when>
    <thetext>Created attachment 62320
fixed per Ojan&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254968</commentid>
    <comment_count>8</comment_count>
      <attachid>62320</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-22 13:54:43 -0700</bug_when>
    <thetext>Comment on attachment 62320
fixed per Ojan&apos;s comment

Just a couple more small things.

&gt; +++ LayoutTests/resources/dump-as-markup.js	(working copy)
&gt; +    if (typeof opt_node == &apos;string&apos;) {
&gt; +        // Allow to specify the node by id and to pass the description in the first argument
&gt; +        if (document.getElementById(opt_node))
&gt; +            opt_node = document.getElementById(opt_node);
&gt; +        else {
&gt; +            opt_node = null;
&gt; +            opt_description = opt_node;
&gt; +        }

Why do we have this else clause? If opt_node is a string and the node is not in the document, we should just error.

&gt; +    if (Markup._test_description &amp;&amp; !Markup._container)
&gt; +        markup += Markup._test_description + &apos;\n&apos;;
&gt; +
&gt; +    Markup._dumpCalls++;
&gt; +
&gt; +    // If dump is called not by notifyDone or dump has already been called then
&gt; +    // print out optional description because this is a test with multiple calls of dump.
&gt; +    if (!Markup._done || opt_description) {
&gt; +        if (!opt_description)
&gt; +            opt_description = &quot;Dump of markup &quot; + Markup._dumpCalls
&gt; +        if (Markup._container)

Checking Markup._container here and above is a bit confusing to me. How about checking that Markup._dumpCalls &gt; 1? That should have the same effect, right?

&gt; +            markup += &apos;\n&apos;;
&gt; +        markup += &apos;\n&apos; + opt_description;

Nit: Can you add add a colon after the description? I think it makes the output a bit more readable.

&gt; -    Markup.dump();
&gt; +    Markup._done = true;
&gt; +
&gt; +    // If dump has already been called, don&apos;t bother to dump again
I like this!

&gt; +    if (!Markup._dumpCalls)
&gt; +        Markup.dump();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254976</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-22 14:16:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 62320 [details])
&gt; Just a couple more small things.
&gt; 
&gt; &gt; +++ LayoutTests/resources/dump-as-markup.js	(working copy)
&gt; &gt; +    if (typeof opt_node == &apos;string&apos;) {
&gt; &gt; +        // Allow to specify the node by id and to pass the description in the first argument
&gt; &gt; +        if (document.getElementById(opt_node))
&gt; &gt; +            opt_node = document.getElementById(opt_node);
&gt; &gt; +        else {
&gt; &gt; +            opt_node = null;
&gt; &gt; +            opt_description = opt_node;
&gt; &gt; +        }
&gt; 
&gt; Why do we have this else clause? If opt_node is a string and the node is not in the document, we should just error.

What if I&apos;ve already called setNodeToDump and just want to pass-in the description?  Then I have to specify the node again in order to dump a subtree.  So I added that else clause to allow the description being passed through opt_node.

&gt; &gt; +    if (Markup._test_description &amp;&amp; !Markup._container)
&gt; &gt; +        markup += Markup._test_description + &apos;\n&apos;;
&gt; &gt; +
&gt; &gt; +    Markup._dumpCalls++;
&gt; &gt; +
&gt; &gt; +    // If dump is called not by notifyDone or dump has already been called then
&gt; &gt; +    // print out optional description because this is a test with multiple calls of dump.
&gt; &gt; +    if (!Markup._done || opt_description) {
&gt; &gt; +        if (!opt_description)
&gt; &gt; +            opt_description = &quot;Dump of markup &quot; + Markup._dumpCalls
&gt; &gt; +        if (Markup._container)
&gt; 
&gt; Checking Markup._container here and above is a bit confusing to me. How about checking that Markup._dumpCalls &gt; 1? That should have the same effect, right?

Will do.

&gt; &gt; +            markup += &apos;\n&apos;;
&gt; &gt; +        markup += &apos;\n&apos; + opt_description;
&gt; 
&gt; Nit: Can you add add a colon after the description? I think it makes the output a bit more readable.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254982</commentid>
    <comment_count>10</comment_count>
      <attachid>62339</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-22 14:26:10 -0700</bug_when>
    <thetext>Created attachment 62339
fixed per ojan&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254997</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-22 14:43:44 -0700</bug_when>
    <thetext>&gt; What if I&apos;ve already called setNodeToDump and just want to pass-in the description?  Then I have to specify the node again in order to dump a subtree.  So I added that else clause to allow the description being passed through opt_node.

Yikes. Having the arguments swap places like that is too confusing to be worth it. You can just do Markup.dump(null, &quot;foo&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255003</commentid>
    <comment_count>12</comment_count>
      <attachid>62345</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-22 14:56:33 -0700</bug_when>
    <thetext>Created attachment 62345
fixed per ojan&apos;s comments

(In reply to comment #11)
&gt; &gt; What if I&apos;ve already called setNodeToDump and just want to pass-in the description?  Then I have to specify the node again in order to dump a subtree.  So I added that else clause to allow the description being passed through opt_node.
&gt; 
&gt; Yikes. Having the arguments swap places like that is too confusing to be worth it. You can just do Markup.dump(null, &quot;foo&quot;).

Ok, removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255007</commentid>
    <comment_count>13</comment_count>
      <attachid>62345</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-22 15:03:42 -0700</bug_when>
    <thetext>Comment on attachment 62345
fixed per ojan&apos;s comments

You lost your ChangeLog modifications. Please put those back in and feel free to commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255048</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-22 16:21:15 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/63918.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62202</attachid>
            <date>2010-07-21 10:12:50 -0700</date>
            <delta_ts>2010-07-21 10:48:43 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>homebroken.html</filename>
            <type>text/html</type>
            <size>201</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">PFRBQkxFPg0KICA8VFI+DQogICAgPFREPg0KICAgICAgPERJViBjb250ZW50ZWRpdGFibGU9InRy
dWUiPg0KICAgICAgICA8RElWPkxpbmUgMSAtIEhvbWUgZG9lcyBub3Qgd29yazwvRElWPg0KICAg
ICAgICA8RElWPkxpbmUgMiAtIEhvbWUga2V5IGRvZXMgd29yazwvRElWPg0KICAgICAgPC9ESVY+
DQogICAgPC9URD4NCiAgPC9UUj4NCjwvVEFCTEU+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62211</attachid>
            <date>2010-07-21 10:48:43 -0700</date>
            <delta_ts>2010-07-21 10:48:43 -0700</delta_ts>
            <desc>demonstrates the bug on mac using modify(move, backward, line-boundary)</desc>
            <filename>tabletest.html</filename>
            <type>text/html</type>
            <size>344</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PFRBQkxFPgogIDxUUj4KICAgIDxURD4KCTxESVYgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KCSAg
PERJViBpZD0ibDEiPkxpbmUgMSAtIGhvbWUgZG9lcyBub3Qgd29yazwvRElWPgoJICA8RElWIGlk
PSJsMiI+TGluZSAyIC0gaG9tZSBkb2VzIHdvcms8L0RJVj4KCTwvRElWPgogICAgPC9URD4KICA8
L1RSPgo8L1RBQkxFPgo8c2NyaXB0PgoKdmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cgpz
LnNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsMScpLmZpcnN0Q2hpbGQsIDEw
KTsKcy5tb2RpZnkoIm1vdmUiLCAiYmFja3dhcmQiLCAibGluZWJvdW5kYXJ5Iik7Cgo8L3Njcmlw
dD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62262</attachid>
            <date>2010-07-21 21:48:27 -0700</date>
            <delta_ts>2010-07-22 11:32:58 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>fix42767</filename>
            <type>text/plain</type>
            <size>6455</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mzg3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDctMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dp
bmRvd3NdIEhvbWUgaGV5IGRvZXNuJ3Qgd29yayBpbiBmaXJzdCBESVYgaW5zaWRlIGEgVEFCTEUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNzY3CisK
KyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IHBvc2l0aW9uQXZvaWRpbmdGaXJzdFBvc2l0
aW9uSW5UYWJsZSBtb3Zpbmcgb3V0c2lkZSBvZiB0aGUgZWRpdGluZyByZWdpb24uCisgICAgICAg
IEFkZGVkIGEgY2hlY2sgc28gdGhhdCBpdCBhdm9pZHMgdGhlIGZpcnN0IHBvc2l0aW9uIGluIHRo
ZSB0YWJsZSBvbmx5IGlmIHRoZSB0YWJsZSBpcyBlZGl0YWJsZS4KKworICAgICAgICBUZXN0OiBl
ZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS5odG1sCisKKyAg
ICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9z
aXRpb25Bdm9pZGluZ0ZpcnN0UG9zaXRpb25JblRhYmxlKToKKwogMjAxMC0wNy0yMSAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiA2Mzg3MykK
KysrIFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzc3LDkgKzM3Nyw5IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Bdm9pZGluZ0YK
IHsKICAgICAvLyByZXR1cm4gdGFibGUgb2Zmc2V0IDAgaW5zdGVhZCBvZiB0aGUgZmlyc3QgVmlz
aWJsZVBvc2l0aW9uIGluc2lkZSB0aGUgdGFibGUKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXMgPSBjLnByZXZpb3VzKCk7Ci0gICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUocHJl
dmlvdXMpKQorICAgIGlmIChpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHByZXZpb3VzKSAmJiBp
c0VkaXRhYmxlUG9zaXRpb24ocHJldmlvdXMuZGVlcEVxdWl2YWxlbnQoKSkpCiAgICAgICAgIHJl
dHVybiBwcmV2aW91czsKLSAgICAKKwogICAgIHJldHVybiBjOwogfQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2Mzg3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIwIEBACisyMDEwLTA3LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXaW5k
b3dzXSBIb21lIGhleSBkb2Vzbid0IHdvcmsgaW4gZmlyc3QgRElWIGluc2lkZSBhIFRBQkxFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjc2NworCisg
ICAgICAgIEFkZGVkIGEgdGVzdCB0byBtb3ZlIGNhcmV0IGJhY2t3YXJkcyB0byB0aGUgbGluZSBi
b3VuZGFyeSBpbnNpZGUgYSBjb250ZW50LWVkaXRhYmxlIGRpdgorICAgICAgICBpbnNpZGUgYSBu
b24tZWRpdGFibGUgdGFibGUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9ob21lLWlu
c2lkZS1ub25lZGl0YWJsZS10YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHJlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qczogTW9kaWZpZWQgdG8gc3Vw
cG9ydCBtdWx0aXBsZSBjYWxscyB0byBkdW1wCisgICAgICAgIChNYXJrdXAuZHVtcC5nZXQgaWYp
OgorICAgICAgICAoTWFya3VwLmR1bXApOgorICAgICAgICAoTWFya3VwLm5vdGlmeURvbmUpOgor
CiAyMDEwLTA3LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0
YWJsZS10YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3RzIHdoZXRoZXIgaG9tZSBtb3ZlcyB0
aGUgY2FyZXQgdG8gdGhlIGJlZ2lubmluZyBvZiBsaW5lIGluc2lkZSBhIGNvbnRlbnQtZWRpdGFi
bGUgaW4gYW4gdW5lZGl0YWJsZSB0YWJsZS4KKworPERJViBpZD0idGVzdCIgY29udGVudEVkaXRh
YmxlPSJ0cnVlIj4KKzwjdGV4dD4KKzwvI3RleHQ+Cis8RElWIGlkPSJsMSI+Cis8I3RleHQ+VGhl
IGNhcmV0IGlzIGluaXRpYWxseSA8c2VsZWN0aW9uLWNhcmV0PmhlcmUgYnV0IHNob3VsZCBtb3Zl
IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuPC8jdGV4dD4KKzwvRElWPgorPCN0ZXh0Pgor
PC8jdGV4dD4KKzxESVY+Cis8I3RleHQ+ZHVtbXkgdGV4dDwvI3RleHQ+Cis8L0RJVj4KKzwjdGV4
dD4KKzwvI3RleHQ+Cis8L0RJVj4KKzxESVYgaWQ9InRlc3QiIGNvbnRlbnRFZGl0YWJsZT0idHJ1
ZSI+Cis8I3RleHQ+Cis8LyN0ZXh0PgorPERJViBpZD0ibDEiPgorPCN0ZXh0PjxzZWxlY3Rpb24t
Y2FyZXQ+VGhlIGNhcmV0IGlzIGluaXRpYWxseSBoZXJlIGJ1dCBzaG91bGQgbW92ZSB0byB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBsaW5lLjwvI3RleHQ+Cis8L0RJVj4KKzwjdGV4dD4KKzwvI3RleHQ+
Cis8RElWPgorPCN0ZXh0PmR1bW15IHRleHQ8LyN0ZXh0PgorPC9ESVY+Cis8I3RleHQ+Cis8LyN0
ZXh0PgorPC9ESVY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWlu
c2lkZS1ub25lZGl0YWJsZS10YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25l
ZGl0YWJsZS10YWJsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzx0YWJs
ZT4KKyAgPHRyPgorICAgIDx0ZD4KKwk8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU9InRy
dWUiPgorCSAgPGRpdiBpZD0ibDEiPlRoZSBjYXJldCBpcyBpbml0aWFsbHkgaGVyZSBidXQgc2hv
dWxkIG1vdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS48L2Rpdj4KKwkgIDxkaXY+ZHVt
bXkgdGV4dDwvZGl2PgorCTwvZGl2PgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHNj
cmlwdD4KKworTWFya3VwLmRlc2NyaXB0aW9uKCJUZXN0cyB3aGV0aGVyIGhvbWUgbW92ZXMgdGhl
IGNhcmV0IHRvIHRoZSBiZWdpbm5pbmcgb2YgbGluZSBpbnNpZGUgYSBjb250ZW50LWVkaXRhYmxl
IGluIGFuIHVuZWRpdGFibGUgdGFibGUuIikKK01hcmt1cC5zZXROb2RlVG9EdW1wKCd0ZXN0Jyk7
CisKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOworcy5zZXRQb3NpdGlvbihkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbDEnKS5maXJzdENoaWxkLCAyMyk7CitNYXJrdXAuZHVtcCgpOwor
cy5tb2RpZnkoIm1vdmUiLCAiYmFja3dhcmQiLCAibGluZWJvdW5kYXJ5Iik7CisKKzwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwkocmV2aXNpb24g
NjM4NzMpCisrKyBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDIwICszNiwxNyBAQCBNYXJrdXAuZGVzY3JpcHRpb24gPSBmdW5jdGlv
bihkZXNjcmlwdGlvCiBNYXJrdXAuZHVtcCA9IGZ1bmN0aW9uKG9wdF9ub2RlKQogewogICAgIHZh
ciBub2RlID0gb3B0X25vZGUgfHwgTWFya3VwLl9ub2RlIHx8IGRvY3VtZW50LmJvZHkucGFyZW50
RWxlbWVudAorCXZhciBtYXJrdXAgPSAiIjsKKworCWlmIChNYXJrdXAuX2Rlc2NyaXB0aW9uICYm
ICFNYXJrdXAuX2NvbnRhaW5lcikKKwkJbWFya3VwID0gTWFya3VwLl9kZXNjcmlwdGlvbiArICdc
bic7CiAKLSAgICB2YXIgbWFya3VwID0gTWFya3VwLl9kZXNjcmlwdGlvbiA/IE1hcmt1cC5fZGVz
Y3JpcHRpb24gKyAnXG4nIDogIiI7CiAgICAgbWFya3VwICs9IE1hcmt1cC5nZXQobm9kZSk7CiAK
LSAgICB2YXIgY29udGFpbmVyOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmJvZHk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IC8vIEluIG5vbi1sYXlvdXQgdGVzdCBtb2RlLCBhcHBlbmQgdGhlIHJlc3VsdHMgaW4gYSBwcmUg
c28gdGhhdCB3ZSBkb24ndAotICAgICAgICAvLyBjbG9iYmVyIHRoZSB0ZXN0IGl0c2VsZi4gQnV0
IHdoZW4gaW4gbGF5b3V0IHRlc3QgbW9kZSwgd2UgZG9uJ3Qgd2FudAotICAgICAgICAvLyBzaWRl
IGVmZmVjdHMgZnJvbSB0aGUgdGVzdCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0cy4KLSAg
ICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7Ci0gICAgICAg
IGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gJ3dpZHRoOjEwMCUnOwotICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisgICAgaWYgKCFNYXJrdXAuX2NvbnRhaW5l
cikgeworICAgICAgICBNYXJrdXAuX2NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3ByZScpOworICAgICAgICBNYXJrdXAuX2NvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gJ3dpZHRo
OjEwMCUnOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKE1hcmt1cC5fY29udGFp
bmVyKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSGF2ZSB0aGlzIHJlc3BlY3QgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0PwpAQCAtNjQsNyArNjEsNyBAQCBNYXJr
dXAuZHVtcCA9IGZ1bmN0aW9uKG9wdF9ub2RlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgY29u
dGFpbmVyLmlubmVyVGV4dCA9IG1hcmt1cDsKKwlNYXJrdXAuX2NvbnRhaW5lci5pbm5lclRleHQg
Kz0gbWFya3VwOwogfQogCiBNYXJrdXAud2FpdFVudGlsRG9uZSA9IGZ1bmN0aW9uKCkKQEAgLTc2
LDYgKzczLDEyIEBAIE1hcmt1cC5ub3RpZnlEb25lID0gZnVuY3Rpb24oKQogewogICAgIE1hcmt1
cC5kdW1wKCk7CiAKKyAgICAvLyBJbiBub24tbGF5b3V0IHRlc3QgbW9kZSwgYXBwZW5kIHRoZSBy
ZXN1bHRzIGluIGEgcHJlIHNvIHRoYXQgd2UgZG9uJ3QKKyAgICAvLyBjbG9iYmVyIHRoZSB0ZXN0
IGl0c2VsZi4gQnV0IHdoZW4gaW4gbGF5b3V0IHRlc3QgbW9kZSwgd2UgZG9uJ3Qgd2FudAorICAg
IC8vIHNpZGUgZWZmZWN0cyBmcm9tIHRoZSB0ZXN0IHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXN1
bHRzLgorCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisJCWRvY3VtZW50LmJvZHku
aW5uZXJUZXh0ID0gTWFya3VwLl9jb250YWluZXIuaW5uZXJUZXh0OworCiAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOwogfQo=
</data>
<flag name="review"
          id="50418"
          type_id="1"
          status="-"
          setter="ojan"
    />
    <flag name="commit-queue"
          id="50419"
          type_id="3"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62320</attachid>
            <date>2010-07-22 11:32:58 -0700</date>
            <delta_ts>2010-07-22 14:26:10 -0700</delta_ts>
            <desc>fixed per Ojan&apos;s comment</desc>
            <filename>fix42767b</filename>
            <type>text/plain</type>
            <size>9343</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Mzg3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDctMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dp
bmRvd3NdIEhvbWUgaGV5IGRvZXNuJ3Qgd29yayBpbiBmaXJzdCBESVYgaW5zaWRlIGEgVEFCTEUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNzY3CisK
KyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IHBvc2l0aW9uQXZvaWRpbmdGaXJzdFBvc2l0
aW9uSW5UYWJsZSBtb3Zpbmcgb3V0c2lkZSBvZiB0aGUgZWRpdGluZyByZWdpb24uCisgICAgICAg
IEFkZGVkIGEgY2hlY2sgc28gdGhhdCBpdCBhdm9pZHMgdGhlIGZpcnN0IHBvc2l0aW9uIGluIHRo
ZSB0YWJsZSBvbmx5IGlmIHRoZSB0YWJsZSBpcyBlZGl0YWJsZS4KKworICAgICAgICBUZXN0OiBl
ZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS5odG1sCisKKyAg
ICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9z
aXRpb25Bdm9pZGluZ0ZpcnN0UG9zaXRpb25JblRhYmxlKToKKwogMjAxMC0wNy0yMSAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiA2Mzg3MykK
KysrIFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzc3LDkgKzM3Nyw5IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Bdm9pZGluZ0YK
IHsKICAgICAvLyByZXR1cm4gdGFibGUgb2Zmc2V0IDAgaW5zdGVhZCBvZiB0aGUgZmlyc3QgVmlz
aWJsZVBvc2l0aW9uIGluc2lkZSB0aGUgdGFibGUKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlv
dXMgPSBjLnByZXZpb3VzKCk7Ci0gICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUocHJl
dmlvdXMpKQorICAgIGlmIChpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHByZXZpb3VzKSAmJiBp
c0VkaXRhYmxlUG9zaXRpb24ocHJldmlvdXMuZGVlcEVxdWl2YWxlbnQoKSkpCiAgICAgICAgIHJl
dHVybiBwcmV2aW91czsKLSAgICAKKwogICAgIHJldHVybiBjOwogfQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2Mzg3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIwIEBACisyMDEwLTA3LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXaW5k
b3dzXSBIb21lIGhleSBkb2Vzbid0IHdvcmsgaW4gZmlyc3QgRElWIGluc2lkZSBhIFRBQkxFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjc2NworCisg
ICAgICAgIEFkZGVkIGEgdGVzdCB0byBtb3ZlIGNhcmV0IGJhY2t3YXJkcyB0byB0aGUgbGluZSBi
b3VuZGFyeSBpbnNpZGUgYSBjb250ZW50LWVkaXRhYmxlIGRpdgorICAgICAgICBpbnNpZGUgYSBu
b24tZWRpdGFibGUgdGFibGUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9ob21lLWlu
c2lkZS1ub25lZGl0YWJsZS10YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHJlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qczogTW9kaWZpZWQgdG8gc3Vw
cG9ydCBtdWx0aXBsZSBjYWxscyB0byBkdW1wCisgICAgICAgIChNYXJrdXAuZHVtcC5nZXQgaWYp
OgorICAgICAgICAoTWFya3VwLmR1bXApOgorICAgICAgICAoTWFya3VwLm5vdGlmeURvbmUpOgor
CiAyMDEwLTA3LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0
YWJsZS10YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3RzIHdoZXRoZXIgaG9tZSBtb3ZlcyB0
aGUgY2FyZXQgdG8gdGhlIGJlZ2lubmluZyBvZiBsaW5lIGluc2lkZSBhIGNvbnRlbnQtZWRpdGFi
bGUgaW4gYW4gdW5lZGl0YWJsZSB0YWJsZS4KKworRHVtcCBvZiBtYXJrdXAgMQorPERJViBpZD0i
dGVzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj4KKzwjdGV4dD4KKzwvI3RleHQ+Cis8RElWIGlk
PSJsMSI+Cis8I3RleHQ+VGhlIGNhcmV0IGlzIGluaXRpYWxseSA8c2VsZWN0aW9uLWNhcmV0Pmhl
cmUgYnV0IHNob3VsZCBtb3ZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuPC8jdGV4dD4K
KzwvRElWPgorPCN0ZXh0PgorPC8jdGV4dD4KKzxESVY+Cis8I3RleHQ+ZHVtbXkgdGV4dDwvI3Rl
eHQ+Cis8L0RJVj4KKzwjdGV4dD4KKzwvI3RleHQ+Cis8L0RJVj4KKworRHVtcCBvZiBtYXJrdXAg
MgorPERJViBpZD0idGVzdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj4KKzwjdGV4dD4KKzwvI3Rl
eHQ+Cis8RElWIGlkPSJsMSI+Cis8I3RleHQ+PHNlbGVjdGlvbi1jYXJldD5UaGUgY2FyZXQgaXMg
aW5pdGlhbGx5IGhlcmUgYnV0IHNob3VsZCBtb3ZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxp
bmUuPC8jdGV4dD4KKzwvRElWPgorPCN0ZXh0PgorPC8jdGV4dD4KKzxESVY+Cis8I3RleHQ+ZHVt
bXkgdGV4dDwvI3RleHQ+Cis8L0RJVj4KKzwjdGV4dD4KKzwvI3RleHQ+Cis8L0RJVj4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRh
YmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9t
ZS1pbnNpZGUtbm9uZWRpdGFibGUtdGFibGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHRhYmxlPgorICA8dHI+CisgICAgPHRk
PgorCTxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+CisJICA8ZGl2IGlkPSJs
MSI+VGhlIGNhcmV0IGlzIGluaXRpYWxseSBoZXJlIGJ1dCBzaG91bGQgbW92ZSB0byB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBsaW5lLjwvZGl2PgorCSAgPGRpdj5kdW1teSB0ZXh0PC9kaXY+CisJPC9k
aXY+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8c2NyaXB0PgorCitNYXJrdXAuZGVz
Y3JpcHRpb24oIlRlc3RzIHdoZXRoZXIgaG9tZSBtb3ZlcyB0aGUgY2FyZXQgdG8gdGhlIGJlZ2lu
bmluZyBvZiBsaW5lIGluc2lkZSBhIGNvbnRlbnQtZWRpdGFibGUgaW4gYW4gdW5lZGl0YWJsZSB0
YWJsZS4iKQorTWFya3VwLnNldE5vZGVUb0R1bXAoJ3Rlc3QnKTsKKwordmFyIHMgPSB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCk7CitzLnNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
MScpLmZpcnN0Q2hpbGQsIDIzKTsKK01hcmt1cC5kdW1wKCk7CitzLm1vZGlmeSgibW92ZSIsICJi
YWNrd2FyZCIsICJsaW5lYm91bmRhcnkiKTsKK01hcmt1cC5kdW1wKCk7CisKKzwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcwkocmV2aXNpb24gNjM4
NzMpCisrKyBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDEyICsxMCwxMCBAQAogICogICAgaXQgZHVtcHMgdGhlIGNvbnRlbnQgb2Yg
dGhlIHNwZWNpZmllZCBlbGVtZW50IGFzIHN1cHBvc2VkIHRvIHRoZSBlbnRpcmUgRE9NIHRyZWUu
CiAgKgogICogMy4gRHVtcCB0aGUgY29udGVudCBvZiBhIHNwZWNpZmljIGVsZW1lbnQgbXVsdGlw
bGUgdGltZXMgd2hpbGUgdGhlIHBhZ2UgaXMgbG9hZGluZwotICogICAgQ2FsbGluZyBNYXJrdXAu
ZHVtcCB3b3VsZCBkdW1wIHRoZSBjb250ZW50IG9mIHRoZSBzcGVjaWZpZWQgZWxlbWVudCBvciB0
aGUgZW50aXJlIERPTS4KLSAqICAgIE9uIHRoZSBwYWdlIGxvYWQsIGl0IGR1bXBzIHRoZSBjb250
ZW50IG9mIHRoZSBjdXJyZW50IG5vZGUgKHNldCBieSBzZXROb2RlVG9EdW1wKQotICogICAgb3Ig
dGhlIGVudGlyZSBET00gaWYgdGhlIG5vZGUgd2FzIG5ldmVyIHNldC4KKyAqICAgIENhbGxpbmcg
TWFya3VwLmR1bXAgd291bGQgZHVtcCB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBzZXQgYnkg
c2V0Tm9kZVRvRHVtcCBvciB0aGUgZW50aXJlIERPTS4KKyAqICAgIE9wdGlvbmFsbHkgc3BlY2lm
eSB0aGUgbm9kZSB0byBkdW1wIGFuZCB0aGUgZGVzY3JpcHRpb24gZm9yIGVhY2ggY2FsbCBvZiBk
dW1wLgogICovCiAKLQogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CkBAIC0yNywyOSArMjUsNDggQEAgdmFyIE1hcmt1cCA9IHt9Owog
Ly8gVGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyB0ZXN0IGlzIHRlc3RpbmcuIEdldHMgcHJl
cGVuZGVkIHRvIHRoZSBkdW1wZWQgbWFya3VwLgogTWFya3VwLmRlc2NyaXB0aW9uID0gZnVuY3Rp
b24oZGVzY3JpcHRpb24pCiB7Ci0gICAgTWFya3VwLl9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9u
OworICAgIE1hcmt1cC5fdGVzdF9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwogfQogCiAvLyBE
dW1wcyB0aGUgbWFya3VwIGZvciB0aGUgZ2l2ZW4gbm9kZSAoSFRNTCBlbGVtZW50IGlmIG5vIG5v
ZGUgaXMgZ2l2ZW4pLgogLy8gT3Zlci13cml0ZXMgdGhlIGJvZHkncyBjb250ZW50IHdpdGggdGhl
IG1hcmt1cCBpbiBsYXlvdXQgdGVzdCBtb2RlLiBBcHBlbmRzCiAvLyBhIHByZSBlbGVtZW50IHdo
ZW4gbG9hZGVkIG1hbnVhbGx5LCBpbiBvcmRlciB0byBhaWQgZGVidWdnaW5nLgotTWFya3VwLmR1
bXAgPSBmdW5jdGlvbihvcHRfbm9kZSkKK01hcmt1cC5kdW1wID0gZnVuY3Rpb24ob3B0X25vZGUs
IG9wdF9kZXNjcmlwdGlvbikKIHsKKyAgICBpZiAodHlwZW9mIG9wdF9ub2RlID09ICdzdHJpbmcn
KSB7CisgICAgICAgIC8vIEFsbG93IHRvIHNwZWNpZnkgdGhlIG5vZGUgYnkgaWQgYW5kIHRvIHBh
c3MgdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBmaXJzdCBhcmd1bWVudAorICAgICAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQob3B0X25vZGUpKQorICAgICAgICAgICAgb3B0X25vZGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRfbm9kZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgb3B0X25vZGUgPSBudWxsOworICAgICAgICAgICAgb3B0X2Rlc2NyaXB0aW9uID0gb3B0
X25vZGU7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2YXIgbm9kZSA9IG9wdF9ub2RlIHx8IE1h
cmt1cC5fbm9kZSB8fCBkb2N1bWVudC5ib2R5LnBhcmVudEVsZW1lbnQKKyAgICB2YXIgbWFya3Vw
ID0gIiI7CisKKyAgICBpZiAoTWFya3VwLl90ZXN0X2Rlc2NyaXB0aW9uICYmICFNYXJrdXAuX2Nv
bnRhaW5lcikKKyAgICAgICAgbWFya3VwICs9IE1hcmt1cC5fdGVzdF9kZXNjcmlwdGlvbiArICdc
bic7CisKKyAgICBNYXJrdXAuX2R1bXBDYWxscysrOworCisgICAgLy8gSWYgZHVtcCBpcyBjYWxs
ZWQgbm90IGJ5IG5vdGlmeURvbmUgb3IgZHVtcCBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCB0aGVu
CisgICAgLy8gcHJpbnQgb3V0IG9wdGlvbmFsIGRlc2NyaXB0aW9uIGJlY2F1c2UgdGhpcyBpcyBh
IHRlc3Qgd2l0aCBtdWx0aXBsZSBjYWxscyBvZiBkdW1wLgorICAgIGlmICghTWFya3VwLl9kb25l
IHx8IG9wdF9kZXNjcmlwdGlvbikgeworICAgICAgICBpZiAoIW9wdF9kZXNjcmlwdGlvbikKKyAg
ICAgICAgICAgIG9wdF9kZXNjcmlwdGlvbiA9ICJEdW1wIG9mIG1hcmt1cCAiICsgTWFya3VwLl9k
dW1wQ2FsbHMKKyAgICAgICAgaWYgKE1hcmt1cC5fY29udGFpbmVyKQorICAgICAgICAgICAgbWFy
a3VwICs9ICdcbic7CisgICAgICAgIG1hcmt1cCArPSAnXG4nICsgb3B0X2Rlc2NyaXB0aW9uOwor
ICAgIH0KIAotICAgIHZhciBtYXJrdXAgPSBNYXJrdXAuX2Rlc2NyaXB0aW9uID8gTWFya3VwLl9k
ZXNjcmlwdGlvbiArICdcbicgOiAiIjsKICAgICBtYXJrdXAgKz0gTWFya3VwLmdldChub2RlKTsK
IAotICAgIHZhciBjb250YWluZXI7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuYm9keTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgLy8gSW4gbm9uLWxheW91dCB0ZXN0IG1vZGUsIGFwcGVuZCB0aGUgcmVzdWx0cyBpbiBhIHBy
ZSBzbyB0aGF0IHdlIGRvbid0Ci0gICAgICAgIC8vIGNsb2JiZXIgdGhlIHRlc3QgaXRzZWxmLiBC
dXQgd2hlbiBpbiBsYXlvdXQgdGVzdCBtb2RlLCB3ZSBkb24ndCB3YW50Ci0gICAgICAgIC8vIHNp
ZGUgZWZmZWN0cyBmcm9tIHRoZSB0ZXN0IHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRzLgot
ICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKLSAgICAg
ICAgY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSAnd2lkdGg6MTAwJSc7Ci0gICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKyAgICBpZiAoIU1hcmt1cC5fY29udGFp
bmVyKSB7CisgICAgICAgIE1hcmt1cC5fY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgncHJlJyk7CisgICAgICAgIE1hcmt1cC5fY29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUn
OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKE1hcmt1cC5fY29udGFpbmVyKTsK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogSGF2ZSB0aGlzIHJlc3BlY3QgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0PwpAQCAtNjQsNyArODEsNyBAQCBNYXJrdXAuZHVt
cCA9IGZ1bmN0aW9uKG9wdF9ub2RlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgY29udGFpbmVy
LmlubmVyVGV4dCA9IG1hcmt1cDsKKyAgICBNYXJrdXAuX2NvbnRhaW5lci5pbm5lclRleHQgKz0g
bWFya3VwOwogfQogCiBNYXJrdXAud2FpdFVudGlsRG9uZSA9IGZ1bmN0aW9uKCkKQEAgLTc0LDcg
KzkxLDE3IEBAIE1hcmt1cC53YWl0VW50aWxEb25lID0gZnVuY3Rpb24oKQogCiBNYXJrdXAubm90
aWZ5RG9uZSA9IGZ1bmN0aW9uKCkKIHsKLSAgICBNYXJrdXAuZHVtcCgpOworICAgIE1hcmt1cC5f
ZG9uZSA9IHRydWU7CisKKyAgICAvLyBJZiBkdW1wIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkLCBk
b24ndCBib3RoZXIgdG8gZHVtcCBhZ2FpbgorICAgIGlmICghTWFya3VwLl9kdW1wQ2FsbHMpCisg
ICAgICAgIE1hcmt1cC5kdW1wKCk7CisKKyAgICAvLyBJbiBub24tbGF5b3V0IHRlc3QgbW9kZSwg
YXBwZW5kIHRoZSByZXN1bHRzIGluIGEgcHJlIHNvIHRoYXQgd2UgZG9uJ3QKKyAgICAvLyBjbG9i
YmVyIHRoZSB0ZXN0IGl0c2VsZi4gQnV0IHdoZW4gaW4gbGF5b3V0IHRlc3QgbW9kZSwgd2UgZG9u
J3Qgd2FudAorICAgIC8vIHNpZGUgZWZmZWN0cyBmcm9tIHRoZSB0ZXN0IHRvIGJlIGluY2x1ZGVk
IGluIHRoZSByZXN1bHRzLgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gTWFya3VwLl9jb250YWluZXIuaW5uZXJU
ZXh0OwogCiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpAQCAtODIsOSArMTA5LDkgQEAgTWFya3Vw
Lm5vdGlmeURvbmUgPSBmdW5jdGlvbigpCiAKIE1hcmt1cC5zZXROb2RlVG9EdW1wID0gZnVuY3Rp
b24obm9kZSkKIHsKLSAgaWYgKHR5cGVvZiBub2RlID09ICJzdHJpbmciKQotICAgIG5vZGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChub2RlKTsKLSAgTWFya3VwLl9ub2RlID0gbm9kZQorICAg
IGlmICh0eXBlb2Ygbm9kZSA9PSAic3RyaW5nIikKKyAgICAgICAgbm9kZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKG5vZGUpOworICAgIE1hcmt1cC5fbm9kZSA9IG5vZGUKIH0KIAogLy8gUmV0
dXJucyB0aGUgbWFya3VwIGZvciB0aGUgZ2l2ZW4gbm9kZS4gVG8gYmUgdXNlZCBmb3IgY2FzZXMg
d2hlcmUgYSB0ZXN0IG5lZWRzCkBAIC0xMzMsNiArMTYwLDggQEAgTWFya3VwLmdldCA9IGZ1bmN0
aW9uKG5vZGUsIG9wdF9kZXB0aCkKICAgICByZXR1cm4gbWFya3VwOwogfQogCitNYXJrdXAuX2R1
bXBDYWxscyA9IDAKKwogTWFya3VwLl9zcGFjZXMgPSBmdW5jdGlvbihtdWx0aXBsaWVyKQogewog
ICAgIHJldHVybiBuZXcgQXJyYXkobXVsdGlwbGllciAqIDQgKyAxKS5qb2luKCcgJyk7Cg==
</data>
<flag name="review"
          id="50495"
          type_id="1"
          status="-"
          setter="ojan"
    />
    <flag name="commit-queue"
          id="50496"
          type_id="3"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62339</attachid>
            <date>2010-07-22 14:26:10 -0700</date>
            <delta_ts>2010-07-22 14:56:33 -0700</delta_ts>
            <desc>fixed per ojan&apos;s comments</desc>
            <filename>fix42767c</filename>
            <type>text/plain</type>
            <size>7540</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDYzOTAxKQorKysgV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsOSAr
Mzc3LDkgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkF2b2lkaW5nRgogewogICAg
IC8vIHJldHVybiB0YWJsZSBvZmZzZXQgMCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBWaXNpYmxlUG9z
aXRpb24gaW5zaWRlIHRoZSB0YWJsZQogICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyA9IGMu
cHJldmlvdXMoKTsKLSAgICBpZiAoaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZShwcmV2aW91cykp
CisgICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUocHJldmlvdXMpICYmIGlzRWRpdGFi
bGVQb3NpdGlvbihwcmV2aW91cy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgcmV0dXJuIHBy
ZXZpb3VzOwotICAgIAorCiAgICAgcmV0dXJuIGM7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lk
ZS1ub25lZGl0YWJsZS10YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3RzIHdoZXRoZXIgaG9t
ZSBtb3ZlcyB0aGUgY2FyZXQgdG8gdGhlIGJlZ2lubmluZyBvZiBsaW5lIGluc2lkZSBhIGNvbnRl
bnQtZWRpdGFibGUgaW4gYW4gdW5lZGl0YWJsZSB0YWJsZS4KKworRHVtcCBvZiBtYXJrdXAgMToK
KzxESVYgaWQ9InRlc3QiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+Cis8I3RleHQ+Cis8LyN0ZXh0
PgorPERJViBpZD0ibDEiPgorPCN0ZXh0PlRoZSBjYXJldCBpcyBpbml0aWFsbHkgPHNlbGVjdGlv
bi1jYXJldD5oZXJlIGJ1dCBzaG91bGQgbW92ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5l
LjwvI3RleHQ+Cis8L0RJVj4KKzwjdGV4dD4KKzwvI3RleHQ+Cis8RElWPgorPCN0ZXh0PmR1bW15
IHRleHQ8LyN0ZXh0PgorPC9ESVY+Cis8I3RleHQ+Cis8LyN0ZXh0PgorPC9ESVY+CisKK0R1bXAg
b2YgbWFya3VwIDI6Cis8RElWIGlkPSJ0ZXN0IiBjb250ZW50RWRpdGFibGU9InRydWUiPgorPCN0
ZXh0PgorPC8jdGV4dD4KKzxESVYgaWQ9ImwxIj4KKzwjdGV4dD48c2VsZWN0aW9uLWNhcmV0PlRo
ZSBjYXJldCBpcyBpbml0aWFsbHkgaGVyZSBidXQgc2hvdWxkIG1vdmUgdG8gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgbGluZS48LyN0ZXh0PgorPC9ESVY+Cis8I3RleHQ+Cis8LyN0ZXh0PgorPERJVj4K
KzwjdGV4dD5kdW1teSB0ZXh0PC8jdGV4dD4KKzwvRElWPgorPCN0ZXh0PgorPC8jdGV4dD4KKzwv
RElWPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1pbnNpZGUtbm9u
ZWRpdGFibGUtdGFibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1pbnNpZGUtbm9uZWRpdGFibGUt
dGFibGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+Cis8dGFibGU+CisgIDx0
cj4KKyAgICA8dGQ+CisJPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KKwkg
IDxkaXYgaWQ9ImwxIj5UaGUgY2FyZXQgaXMgaW5pdGlhbGx5IGhlcmUgYnV0IHNob3VsZCBtb3Zl
IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuPC9kaXY+CisJICA8ZGl2PmR1bW15IHRleHQ8
L2Rpdj4KKwk8L2Rpdj4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxzY3JpcHQ+CisK
K01hcmt1cC5kZXNjcmlwdGlvbigiVGVzdHMgd2hldGhlciBob21lIG1vdmVzIHRoZSBjYXJldCB0
byB0aGUgYmVnaW5uaW5nIG9mIGxpbmUgaW5zaWRlIGEgY29udGVudC1lZGl0YWJsZSBpbiBhbiB1
bmVkaXRhYmxlIHRhYmxlLiIpCitNYXJrdXAuc2V0Tm9kZVRvRHVtcCgndGVzdCcpOworCit2YXIg
cyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3Muc2V0UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2wxJykuZmlyc3RDaGlsZCwgMjMpOworTWFya3VwLmR1bXAoKTsKK3MubW9kaWZ5
KCJtb3ZlIiwgImJhY2t3YXJkIiwgImxpbmVib3VuZGFyeSIpOworTWFya3VwLmR1bXAoKTsKKwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCShy
ZXZpc2lvbiA2MzkwMSkKKysrIExheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMTAsMTIgKzEwLDEwIEBACiAgKiAgICBpdCBkdW1wcyB0aGUg
Y29udGVudCBvZiB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgYXMgc3VwcG9zZWQgdG8gdGhlIGVudGly
ZSBET00gdHJlZS4KICAqCiAgKiAzLiBEdW1wIHRoZSBjb250ZW50IG9mIGEgc3BlY2lmaWMgZWxl
bWVudCBtdWx0aXBsZSB0aW1lcyB3aGlsZSB0aGUgcGFnZSBpcyBsb2FkaW5nCi0gKiAgICBDYWxs
aW5nIE1hcmt1cC5kdW1wIHdvdWxkIGR1bXAgdGhlIGNvbnRlbnQgb2YgdGhlIHNwZWNpZmllZCBl
bGVtZW50IG9yIHRoZSBlbnRpcmUgRE9NLgotICogICAgT24gdGhlIHBhZ2UgbG9hZCwgaXQgZHVt
cHMgdGhlIGNvbnRlbnQgb2YgdGhlIGN1cnJlbnQgbm9kZSAoc2V0IGJ5IHNldE5vZGVUb0R1bXAp
Ci0gKiAgICBvciB0aGUgZW50aXJlIERPTSBpZiB0aGUgbm9kZSB3YXMgbmV2ZXIgc2V0LgorICog
ICAgQ2FsbGluZyBNYXJrdXAuZHVtcCB3b3VsZCBkdW1wIHRoZSBjb250ZW50IG9mIHRoZSBlbGVt
ZW50IHNldCBieSBzZXROb2RlVG9EdW1wIG9yIHRoZSBlbnRpcmUgRE9NLgorICogICAgT3B0aW9u
YWxseSBzcGVjaWZ5IHRoZSBub2RlIHRvIGR1bXAgYW5kIHRoZSBkZXNjcmlwdGlvbiBmb3IgZWFj
aCBjYWxsIG9mIGR1bXAuCiAgKi8KIAotCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKQEAgLTI3LDI5ICsyNSw0OCBAQCB2YXIgTWFy
a3VwID0ge307CiAvLyBUaGUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHRlc3QgaXMgdGVzdGlu
Zy4gR2V0cyBwcmVwZW5kZWQgdG8gdGhlIGR1bXBlZCBtYXJrdXAuCiBNYXJrdXAuZGVzY3JpcHRp
b24gPSBmdW5jdGlvbihkZXNjcmlwdGlvbikKIHsKLSAgICBNYXJrdXAuX2Rlc2NyaXB0aW9uID0g
ZGVzY3JpcHRpb247CisgICAgTWFya3VwLl90ZXN0X2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247
CiB9CiAKIC8vIER1bXBzIHRoZSBtYXJrdXAgZm9yIHRoZSBnaXZlbiBub2RlIChIVE1MIGVsZW1l
bnQgaWYgbm8gbm9kZSBpcyBnaXZlbikuCiAvLyBPdmVyLXdyaXRlcyB0aGUgYm9keSdzIGNvbnRl
bnQgd2l0aCB0aGUgbWFya3VwIGluIGxheW91dCB0ZXN0IG1vZGUuIEFwcGVuZHMKIC8vIGEgcHJl
IGVsZW1lbnQgd2hlbiBsb2FkZWQgbWFudWFsbHksIGluIG9yZGVyIHRvIGFpZCBkZWJ1Z2dpbmcu
Ci1NYXJrdXAuZHVtcCA9IGZ1bmN0aW9uKG9wdF9ub2RlKQorTWFya3VwLmR1bXAgPSBmdW5jdGlv
bihvcHRfbm9kZSwgb3B0X2Rlc2NyaXB0aW9uKQogeworICAgIGlmICh0eXBlb2Ygb3B0X25vZGUg
PT0gJ3N0cmluZycpIHsKKyAgICAgICAgLy8gQWxsb3cgdG8gc3BlY2lmeSB0aGUgbm9kZSBieSBp
ZCBhbmQgdG8gcGFzcyB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIGZpcnN0IGFyZ3VtZW50CisgICAg
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRfbm9kZSkpCisgICAgICAgICAgICBv
cHRfbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdF9ub2RlKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBvcHRfbm9kZSA9IG51bGw7CisgICAgICAgICAgICBvcHRfZGVzY3Jp
cHRpb24gPSBvcHRfbm9kZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZhciBub2RlID0gb3B0
X25vZGUgfHwgTWFya3VwLl9ub2RlIHx8IGRvY3VtZW50LmJvZHkucGFyZW50RWxlbWVudAorICAg
IHZhciBtYXJrdXAgPSAiIjsKKworICAgIGlmIChNYXJrdXAuX3Rlc3RfZGVzY3JpcHRpb24gJiYg
IU1hcmt1cC5fZHVtcENhbGxzKQorICAgICAgICBtYXJrdXAgKz0gTWFya3VwLl90ZXN0X2Rlc2Ny
aXB0aW9uICsgJ1xuJzsKKworICAgIE1hcmt1cC5fZHVtcENhbGxzKys7CisKKyAgICAvLyBJZiBk
dW1wIGlzIGNhbGxlZCBub3QgYnkgbm90aWZ5RG9uZSBvciBkdW1wIGhhcyBhbHJlYWR5IGJlZW4g
Y2FsbGVkIHRoZW4KKyAgICAvLyBwcmludCBvdXQgb3B0aW9uYWwgZGVzY3JpcHRpb24gYmVjYXVz
ZSB0aGlzIGlzIGEgdGVzdCB3aXRoIG11bHRpcGxlIGNhbGxzIG9mIGR1bXAuCisgICAgaWYgKCFN
YXJrdXAuX2RvbmUgfHwgb3B0X2Rlc2NyaXB0aW9uKSB7CisgICAgICAgIGlmICghb3B0X2Rlc2Ny
aXB0aW9uKQorICAgICAgICAgICAgb3B0X2Rlc2NyaXB0aW9uID0gIkR1bXAgb2YgbWFya3VwICIg
KyBNYXJrdXAuX2R1bXBDYWxscworICAgICAgICBpZiAoTWFya3VwLl9kdW1wQ2FsbHMgPiAxKQor
ICAgICAgICAgICAgbWFya3VwICs9ICdcbic7CisgICAgICAgIG1hcmt1cCArPSAnXG4nICsgb3B0
X2Rlc2NyaXB0aW9uICsgJzonOworICAgIH0KIAotICAgIHZhciBtYXJrdXAgPSBNYXJrdXAuX2Rl
c2NyaXB0aW9uID8gTWFya3VwLl9kZXNjcmlwdGlvbiArICdcbicgOiAiIjsKICAgICBtYXJrdXAg
Kz0gTWFya3VwLmdldChub2RlKTsKIAotICAgIHZhciBjb250YWluZXI7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuYm9k
eTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gSW4gbm9uLWxheW91dCB0ZXN0IG1vZGUsIGFwcGVu
ZCB0aGUgcmVzdWx0cyBpbiBhIHByZSBzbyB0aGF0IHdlIGRvbid0Ci0gICAgICAgIC8vIGNsb2Ji
ZXIgdGhlIHRlc3QgaXRzZWxmLiBCdXQgd2hlbiBpbiBsYXlvdXQgdGVzdCBtb2RlLCB3ZSBkb24n
dCB3YW50Ci0gICAgICAgIC8vIHNpZGUgZWZmZWN0cyBmcm9tIHRoZSB0ZXN0IHRvIGJlIGluY2x1
ZGVkIGluIHRoZSByZXN1bHRzLgotICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdwcmUnKTsKLSAgICAgICAgY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSAnd2lkdGg6
MTAwJSc7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKyAg
ICBpZiAoIU1hcmt1cC5fY29udGFpbmVyKSB7CisgICAgICAgIE1hcmt1cC5fY29udGFpbmVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7CisgICAgICAgIE1hcmt1cC5fY29udGFpbmVy
LnN0eWxlLndpZHRoID0gJzEwMCUnOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KE1hcmt1cC5fY29udGFpbmVyKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSGF2ZSB0aGlzIHJl
c3BlY3QgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0PwpAQCAtNjQs
NyArODEsNyBAQCBNYXJrdXAuZHVtcCA9IGZ1bmN0aW9uKG9wdF9ub2RlKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgY29udGFpbmVyLmlubmVyVGV4dCA9IG1hcmt1cDsKKyAgICBNYXJrdXAuX2Nv
bnRhaW5lci5pbm5lclRleHQgKz0gbWFya3VwOwogfQogCiBNYXJrdXAud2FpdFVudGlsRG9uZSA9
IGZ1bmN0aW9uKCkKQEAgLTc0LDcgKzkxLDE3IEBAIE1hcmt1cC53YWl0VW50aWxEb25lID0gZnVu
Y3Rpb24oKQogCiBNYXJrdXAubm90aWZ5RG9uZSA9IGZ1bmN0aW9uKCkKIHsKLSAgICBNYXJrdXAu
ZHVtcCgpOworICAgIE1hcmt1cC5fZG9uZSA9IHRydWU7CisKKyAgICAvLyBJZiBkdW1wIGhhcyBh
bHJlYWR5IGJlZW4gY2FsbGVkLCBkb24ndCBib3RoZXIgdG8gZHVtcCBhZ2FpbgorICAgIGlmICgh
TWFya3VwLl9kdW1wQ2FsbHMpCisgICAgICAgIE1hcmt1cC5kdW1wKCk7CisKKyAgICAvLyBJbiBu
b24tbGF5b3V0IHRlc3QgbW9kZSwgYXBwZW5kIHRoZSByZXN1bHRzIGluIGEgcHJlIHNvIHRoYXQg
d2UgZG9uJ3QKKyAgICAvLyBjbG9iYmVyIHRoZSB0ZXN0IGl0c2VsZi4gQnV0IHdoZW4gaW4gbGF5
b3V0IHRlc3QgbW9kZSwgd2UgZG9uJ3Qgd2FudAorICAgIC8vIHNpZGUgZWZmZWN0cyBmcm9tIHRo
ZSB0ZXN0IHRvIGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRzLgorICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gTWFy
a3VwLl9jb250YWluZXIuaW5uZXJUZXh0OwogCiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpAQCAt
ODIsOSArMTA5LDkgQEAgTWFya3VwLm5vdGlmeURvbmUgPSBmdW5jdGlvbigpCiAKIE1hcmt1cC5z
ZXROb2RlVG9EdW1wID0gZnVuY3Rpb24obm9kZSkKIHsKLSAgaWYgKHR5cGVvZiBub2RlID09ICJz
dHJpbmciKQotICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChub2RlKTsKLSAgTWFy
a3VwLl9ub2RlID0gbm9kZQorICAgIGlmICh0eXBlb2Ygbm9kZSA9PSAic3RyaW5nIikKKyAgICAg
ICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5vZGUpOworICAgIE1hcmt1cC5fbm9k
ZSA9IG5vZGUKIH0KIAogLy8gUmV0dXJucyB0aGUgbWFya3VwIGZvciB0aGUgZ2l2ZW4gbm9kZS4g
VG8gYmUgdXNlZCBmb3IgY2FzZXMgd2hlcmUgYSB0ZXN0IG5lZWRzCkBAIC0xMzMsNiArMTYwLDgg
QEAgTWFya3VwLmdldCA9IGZ1bmN0aW9uKG5vZGUsIG9wdF9kZXB0aCkKICAgICByZXR1cm4gbWFy
a3VwOwogfQogCitNYXJrdXAuX2R1bXBDYWxscyA9IDAKKwogTWFya3VwLl9zcGFjZXMgPSBmdW5j
dGlvbihtdWx0aXBsaWVyKQogewogICAgIHJldHVybiBuZXcgQXJyYXkobXVsdGlwbGllciAqIDQg
KyAxKS5qb2luKCcgJyk7Cg==
</data>
<flag name="review"
          id="50520"
          type_id="1"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62345</attachid>
            <date>2010-07-22 14:56:33 -0700</date>
            <delta_ts>2010-07-22 15:03:41 -0700</delta_ts>
            <desc>fixed per ojan&apos;s comments</desc>
            <filename>fix42767d</filename>
            <type>text/plain</type>
            <size>7248</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDYzOTAxKQorKysgV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsOSAr
Mzc3LDkgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkF2b2lkaW5nRgogewogICAg
IC8vIHJldHVybiB0YWJsZSBvZmZzZXQgMCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCBWaXNpYmxlUG9z
aXRpb24gaW5zaWRlIHRoZSB0YWJsZQogICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91cyA9IGMu
cHJldmlvdXMoKTsKLSAgICBpZiAoaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZShwcmV2aW91cykp
CisgICAgaWYgKGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUocHJldmlvdXMpICYmIGlzRWRpdGFi
bGVQb3NpdGlvbihwcmV2aW91cy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgcmV0dXJuIHBy
ZXZpb3VzOwotICAgIAorCiAgICAgcmV0dXJuIGM7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2hvbWUtaW5zaWRlLW5vbmVkaXRhYmxlLXRhYmxlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lk
ZS1ub25lZGl0YWJsZS10YWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3RzIHdoZXRoZXIgaG9t
ZSBtb3ZlcyB0aGUgY2FyZXQgdG8gdGhlIGJlZ2lubmluZyBvZiBsaW5lIGluc2lkZSBhIGNvbnRl
bnQtZWRpdGFibGUgaW4gYW4gdW5lZGl0YWJsZSB0YWJsZS4KKworRHVtcCBvZiBtYXJrdXAgMToK
KzxESVYgaWQ9InRlc3QiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+Cis8I3RleHQ+Cis8LyN0ZXh0
PgorPERJViBpZD0ibDEiPgorPCN0ZXh0PlRoZSBjYXJldCBpcyBpbml0aWFsbHkgPHNlbGVjdGlv
bi1jYXJldD5oZXJlIGJ1dCBzaG91bGQgbW92ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5l
LjwvI3RleHQ+Cis8L0RJVj4KKzwjdGV4dD4KKzwvI3RleHQ+Cis8RElWPgorPCN0ZXh0PmR1bW15
IHRleHQ8LyN0ZXh0PgorPC9ESVY+Cis8I3RleHQ+Cis8LyN0ZXh0PgorPC9ESVY+CisKK0R1bXAg
b2YgbWFya3VwIDI6Cis8RElWIGlkPSJ0ZXN0IiBjb250ZW50RWRpdGFibGU9InRydWUiPgorPCN0
ZXh0PgorPC8jdGV4dD4KKzxESVYgaWQ9ImwxIj4KKzwjdGV4dD48c2VsZWN0aW9uLWNhcmV0PlRo
ZSBjYXJldCBpcyBpbml0aWFsbHkgaGVyZSBidXQgc2hvdWxkIG1vdmUgdG8gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgbGluZS48LyN0ZXh0PgorPC9ESVY+Cis8I3RleHQ+Cis8LyN0ZXh0PgorPERJVj4K
KzwjdGV4dD5kdW1teSB0ZXh0PC8jdGV4dD4KKzwvRElWPgorPCN0ZXh0PgorPC8jdGV4dD4KKzwv
RElWPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1pbnNpZGUtbm9u
ZWRpdGFibGUtdGFibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9ob21lLWluc2lkZS1ub25lZGl0YWJsZS10YWJsZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1pbnNpZGUtbm9uZWRpdGFibGUt
dGFibGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+Cis8dGFibGU+CisgIDx0
cj4KKyAgICA8dGQ+CisJPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KKwkg
IDxkaXYgaWQ9ImwxIj5UaGUgY2FyZXQgaXMgaW5pdGlhbGx5IGhlcmUgYnV0IHNob3VsZCBtb3Zl
IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuPC9kaXY+CisJICA8ZGl2PmR1bW15IHRleHQ8
L2Rpdj4KKwk8L2Rpdj4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxzY3JpcHQ+CisK
K01hcmt1cC5kZXNjcmlwdGlvbigiVGVzdHMgd2hldGhlciBob21lIG1vdmVzIHRoZSBjYXJldCB0
byB0aGUgYmVnaW5uaW5nIG9mIGxpbmUgaW5zaWRlIGEgY29udGVudC1lZGl0YWJsZSBpbiBhbiB1
bmVkaXRhYmxlIHRhYmxlLiIpCitNYXJrdXAuc2V0Tm9kZVRvRHVtcCgndGVzdCcpOworCit2YXIg
cyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3Muc2V0UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2wxJykuZmlyc3RDaGlsZCwgMjMpOworTWFya3VwLmR1bXAoKTsKK3MubW9kaWZ5
KCJtb3ZlIiwgImJhY2t3YXJkIiwgImxpbmVib3VuZGFyeSIpOworTWFya3VwLmR1bXAoKTsKKwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCShy
ZXZpc2lvbiA2MzkwMSkKKysrIExheW91dFRlc3RzL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMTAsMTIgKzEwLDEwIEBACiAgKiAgICBpdCBkdW1wcyB0aGUg
Y29udGVudCBvZiB0aGUgc3BlY2lmaWVkIGVsZW1lbnQgYXMgc3VwcG9zZWQgdG8gdGhlIGVudGly
ZSBET00gdHJlZS4KICAqCiAgKiAzLiBEdW1wIHRoZSBjb250ZW50IG9mIGEgc3BlY2lmaWMgZWxl
bWVudCBtdWx0aXBsZSB0aW1lcyB3aGlsZSB0aGUgcGFnZSBpcyBsb2FkaW5nCi0gKiAgICBDYWxs
aW5nIE1hcmt1cC5kdW1wIHdvdWxkIGR1bXAgdGhlIGNvbnRlbnQgb2YgdGhlIHNwZWNpZmllZCBl
bGVtZW50IG9yIHRoZSBlbnRpcmUgRE9NLgotICogICAgT24gdGhlIHBhZ2UgbG9hZCwgaXQgZHVt
cHMgdGhlIGNvbnRlbnQgb2YgdGhlIGN1cnJlbnQgbm9kZSAoc2V0IGJ5IHNldE5vZGVUb0R1bXAp
Ci0gKiAgICBvciB0aGUgZW50aXJlIERPTSBpZiB0aGUgbm9kZSB3YXMgbmV2ZXIgc2V0LgorICog
ICAgQ2FsbGluZyBNYXJrdXAuZHVtcCB3b3VsZCBkdW1wIHRoZSBjb250ZW50IG9mIHRoZSBlbGVt
ZW50IHNldCBieSBzZXROb2RlVG9EdW1wIG9yIHRoZSBlbnRpcmUgRE9NLgorICogICAgT3B0aW9u
YWxseSBzcGVjaWZ5IHRoZSBub2RlIHRvIGR1bXAgYW5kIHRoZSBkZXNjcmlwdGlvbiBmb3IgZWFj
aCBjYWxsIG9mIGR1bXAuCiAgKi8KIAotCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKQEAgLTI3LDI5ICsyNSw0MSBAQCB2YXIgTWFy
a3VwID0ge307CiAvLyBUaGUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHRlc3QgaXMgdGVzdGlu
Zy4gR2V0cyBwcmVwZW5kZWQgdG8gdGhlIGR1bXBlZCBtYXJrdXAuCiBNYXJrdXAuZGVzY3JpcHRp
b24gPSBmdW5jdGlvbihkZXNjcmlwdGlvbikKIHsKLSAgICBNYXJrdXAuX2Rlc2NyaXB0aW9uID0g
ZGVzY3JpcHRpb247CisgICAgTWFya3VwLl90ZXN0X2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247
CiB9CiAKIC8vIER1bXBzIHRoZSBtYXJrdXAgZm9yIHRoZSBnaXZlbiBub2RlIChIVE1MIGVsZW1l
bnQgaWYgbm8gbm9kZSBpcyBnaXZlbikuCiAvLyBPdmVyLXdyaXRlcyB0aGUgYm9keSdzIGNvbnRl
bnQgd2l0aCB0aGUgbWFya3VwIGluIGxheW91dCB0ZXN0IG1vZGUuIEFwcGVuZHMKIC8vIGEgcHJl
IGVsZW1lbnQgd2hlbiBsb2FkZWQgbWFudWFsbHksIGluIG9yZGVyIHRvIGFpZCBkZWJ1Z2dpbmcu
Ci1NYXJrdXAuZHVtcCA9IGZ1bmN0aW9uKG9wdF9ub2RlKQorTWFya3VwLmR1bXAgPSBmdW5jdGlv
bihvcHRfbm9kZSwgb3B0X2Rlc2NyaXB0aW9uKQogeworICAgIGlmICh0eXBlb2Ygb3B0X25vZGUg
PT0gJ3N0cmluZycpCisgICAgICAgIG9wdF9ub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
b3B0X25vZGUpOworCiAgICAgdmFyIG5vZGUgPSBvcHRfbm9kZSB8fCBNYXJrdXAuX25vZGUgfHwg
ZG9jdW1lbnQuYm9keS5wYXJlbnRFbGVtZW50CisgICAgdmFyIG1hcmt1cCA9ICIiOworCisgICAg
aWYgKE1hcmt1cC5fdGVzdF9kZXNjcmlwdGlvbiAmJiAhTWFya3VwLl9kdW1wQ2FsbHMpCisgICAg
ICAgIG1hcmt1cCArPSBNYXJrdXAuX3Rlc3RfZGVzY3JpcHRpb24gKyAnXG4nOworCisgICAgTWFy
a3VwLl9kdW1wQ2FsbHMrKzsKKworICAgIC8vIElmIGR1bXAgaXMgbm90IGNhbGxlZCBieSBub3Rp
ZnlEb25lLCB0aGVuIHByaW50IG91dCBvcHRpb25hbCBkZXNjcmlwdGlvbgorICAgIC8vIGJlY2F1
c2UgdGhpcyB0ZXN0IGlzIG1hbnVhbGx5IGNhbGxpbmcgZHVtcC4KKyAgICBpZiAoIU1hcmt1cC5f
ZG9uZSB8fCBvcHRfZGVzY3JpcHRpb24pIHsKKyAgICAgICAgaWYgKCFvcHRfZGVzY3JpcHRpb24p
CisgICAgICAgICAgICBvcHRfZGVzY3JpcHRpb24gPSAiRHVtcCBvZiBtYXJrdXAgIiArIE1hcmt1
cC5fZHVtcENhbGxzCisgICAgICAgIGlmIChNYXJrdXAuX2R1bXBDYWxscyA+IDEpCisgICAgICAg
ICAgICBtYXJrdXAgKz0gJ1xuJzsKKyAgICAgICAgbWFya3VwICs9ICdcbicgKyBvcHRfZGVzY3Jp
cHRpb24gKyAnOic7CisgICAgfQogCi0gICAgdmFyIG1hcmt1cCA9IE1hcmt1cC5fZGVzY3JpcHRp
b24gPyBNYXJrdXAuX2Rlc2NyaXB0aW9uICsgJ1xuJyA6ICIiOwogICAgIG1hcmt1cCArPSBNYXJr
dXAuZ2V0KG5vZGUpOwogCi0gICAgdmFyIGNvbnRhaW5lcjsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5ib2R5OwotICAg
IGVsc2UgewotICAgICAgICAvLyBJbiBub24tbGF5b3V0IHRlc3QgbW9kZSwgYXBwZW5kIHRoZSBy
ZXN1bHRzIGluIGEgcHJlIHNvIHRoYXQgd2UgZG9uJ3QKLSAgICAgICAgLy8gY2xvYmJlciB0aGUg
dGVzdCBpdHNlbGYuIEJ1dCB3aGVuIGluIGxheW91dCB0ZXN0IG1vZGUsIHdlIGRvbid0IHdhbnQK
LSAgICAgICAgLy8gc2lkZSBlZmZlY3RzIGZyb20gdGhlIHRlc3QgdG8gYmUgaW5jbHVkZWQgaW4g
dGhlIHJlc3VsdHMuCi0gICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3ByZScpOwotICAgICAgICBjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9ICd3aWR0aDoxMDAlJzsK
LSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpOworICAgIGlmICgh
TWFya3VwLl9jb250YWluZXIpIHsKKyAgICAgICAgTWFya3VwLl9jb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICAgICAgTWFya3VwLl9jb250YWluZXIuc3R5bGUu
d2lkdGggPSAnMTAwJSc7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoTWFya3Vw
Ll9jb250YWluZXIpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBIYXZlIHRoaXMgcmVzcGVjdCBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQ/CkBAIC02NCw3ICs3NCw3
IEBAIE1hcmt1cC5kdW1wID0gZnVuY3Rpb24ob3B0X25vZGUpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBjb250YWluZXIuaW5uZXJUZXh0ID0gbWFya3VwOworICAgIE1hcmt1cC5fY29udGFpbmVy
LmlubmVyVGV4dCArPSBtYXJrdXA7CiB9CiAKIE1hcmt1cC53YWl0VW50aWxEb25lID0gZnVuY3Rp
b24oKQpAQCAtNzQsNyArODQsMTcgQEAgTWFya3VwLndhaXRVbnRpbERvbmUgPSBmdW5jdGlvbigp
CiAKIE1hcmt1cC5ub3RpZnlEb25lID0gZnVuY3Rpb24oKQogewotICAgIE1hcmt1cC5kdW1wKCk7
CisgICAgTWFya3VwLl9kb25lID0gdHJ1ZTsKKworICAgIC8vIElmIGR1bXAgaGFzIGFscmVhZHkg
YmVlbiBjYWxsZWQsIGRvbid0IGJvdGhlciB0byBkdW1wIGFnYWluCisgICAgaWYgKCFNYXJrdXAu
X2R1bXBDYWxscykKKyAgICAgICAgTWFya3VwLmR1bXAoKTsKKworICAgIC8vIEluIG5vbi1sYXlv
dXQgdGVzdCBtb2RlLCBhcHBlbmQgdGhlIHJlc3VsdHMgaW4gYSBwcmUgc28gdGhhdCB3ZSBkb24n
dAorICAgIC8vIGNsb2JiZXIgdGhlIHRlc3QgaXRzZWxmLiBCdXQgd2hlbiBpbiBsYXlvdXQgdGVz
dCBtb2RlLCB3ZSBkb24ndCB3YW50CisgICAgLy8gc2lkZSBlZmZlY3RzIGZyb20gdGhlIHRlc3Qg
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdHMuCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSBNYXJrdXAuX2Nv
bnRhaW5lci5pbm5lclRleHQ7CiAKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CkBAIC04Miw5ICsx
MDIsOSBAQCBNYXJrdXAubm90aWZ5RG9uZSA9IGZ1bmN0aW9uKCkKIAogTWFya3VwLnNldE5vZGVU
b0R1bXAgPSBmdW5jdGlvbihub2RlKQogewotICBpZiAodHlwZW9mIG5vZGUgPT0gInN0cmluZyIp
Ci0gICAgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5vZGUpOwotICBNYXJrdXAuX25v
ZGUgPSBub2RlCisgICAgaWYgKHR5cGVvZiBub2RlID09ICJzdHJpbmciKQorICAgICAgICBub2Rl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobm9kZSk7CisgICAgTWFya3VwLl9ub2RlID0gbm9k
ZQogfQogCiAvLyBSZXR1cm5zIHRoZSBtYXJrdXAgZm9yIHRoZSBnaXZlbiBub2RlLiBUbyBiZSB1
c2VkIGZvciBjYXNlcyB3aGVyZSBhIHRlc3QgbmVlZHMKQEAgLTEzMyw2ICsxNTMsOCBAQCBNYXJr
dXAuZ2V0ID0gZnVuY3Rpb24obm9kZSwgb3B0X2RlcHRoKQogICAgIHJldHVybiBtYXJrdXA7CiB9
CiAKK01hcmt1cC5fZHVtcENhbGxzID0gMAorCiBNYXJrdXAuX3NwYWNlcyA9IGZ1bmN0aW9uKG11
bHRpcGxpZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBBcnJheShtdWx0aXBsaWVyICogNCArIDEpLmpv
aW4oJyAnKTsK
</data>
<flag name="review"
          id="50525"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>