<?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>128422</bug_id>
          
          <creation_ts>2014-02-07 17:22:21 -0800</creation_ts>
          <short_desc>Web Inspector: update check-webkit-style to flag single quotes in WebInspectorUI projects</short_desc>
          <delta_ts>2014-03-02 12:46:00 -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>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dpino</cc>
    
    <cc>glenn</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978191</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-02-07 17:22:21 -0800</bug_when>
    <thetext>Since WebInspectorUI style has the additional requirement to use double-quotes only, update check-webkit-style to flag single-quotes in WebInspectorUI files. I&apos;ve forgotten this several times. Seems like an easy win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978192</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-07 17:22:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/16017987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980198</commentid>
    <comment_count>2</comment_count>
      <attachid>224055</attachid>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-13 03:02:32 -0800</bug_when>
    <thetext>Created attachment 224055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980200</commentid>
    <comment_count>3</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-13 03:12:16 -0800</bug_when>
    <thetext>The checker does the following:

   * Multi line and single line comments are removed. Single quotes should be valid in comments.
   * Check for single quotes. Single quotes that happen within strings (&quot;&quot;) or regular expressions should be valid.
   * Otherwise error.

The current js.py checker is only used to validate the JavaScript files of the Web Inspector, so added validation for single quotes to that file.

In addition to this, there are currently some files from the Inspector that include single quotes. Here is the list:

CookieStorageContentView.js(254):     if (cookieDomain.charAt(0) !== &apos;.&apos;)
DOMTreeElement.js(539):             tag.textContent = &apos;&apos;;
DOMTreeElement.js(540):             tag.appendChild(document.createTextNode(&apos;&lt;&apos;+nodeName));
DOMTreeElement.js(542):             tag.appendChild(document.createTextNode(&apos;&gt;&apos;));
DOMTreeElement.js(752):             tagNameElement.removeEventListener(&apos;keyup&apos;, keyupListener, false);
DOMTreeElement.js(752):             tagNameElement.removeEventListener(&apos;keyup&apos;, keyupListener, false);
DOMTreeElement.js(762):         tagNameElement.addEventListener(&apos;keyup&apos;, keyupListener, false);
DataGrid.js(678):             emptyData[identifier] = &apos;&apos;;
ColorPicker.js(49):     this._opacityPattern = &apos;url(&quot;data:image/svg+xml;base64,&apos; + btoa(&apos;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;6&quot; height=&quot;6&quot; fill=&quot;rgb(204, 204, 204)&quot;&gt;&lt;rect width=&quot;3&quot; height=&quot;3&quot; /&gt;&lt;rect x=&quot;3&quot; y=&quot;3&quot; width=&quot;3&quot; height=&quot;3&quot;/&gt;&lt;/svg&gt;&apos;) + &apos;&quot;)&apos;;
DOMTreeOutline.js(380):         event.dataTransfer.dropEffect = &apos;move&apos;;
Main.js(491):         console.assert(profileTitle[0] === &apos;/&apos;);

I have concerns for ColorPicker.js because single quotes are used to wrap double quotes. It looks a reasonable use of single quotes. Either we escape the double quotes or add logic to the checker to handle this case.

The rest of files I think they should be modified. And don&apos;t know if it&apos;s better to do this in this patch or to file a new bug to remove single quotes from these files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980369</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-13 10:55:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; The checker does the following:
&gt; 
&gt;    * Multi line and single line comments are removed. Single quotes should be valid in comments.
&gt;    * Check for single quotes. Single quotes that happen within strings (&quot;&quot;) or regular expressions should be valid.
&gt;    * Otherwise error.

Awesome!


&gt; The rest of files I think they should be modified. And don&apos;t know if it&apos;s better to do this in this patch or to file a new bug to remove single quotes from these files.

Either approach works. The cleanest would be separate patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981725</commentid>
    <comment_count>5</comment_count>
      <attachid>224055</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-17 17:06:03 -0800</bug_when>
    <thetext>Comment on attachment 224055
Patch

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

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:64
&gt; +            &quot;&quot;&quot;FIXME: Despite stripping comments, there are two single-line comments
&gt; +            not stripped in CodeMirrorAdditions.js. &quot;&quot;&quot;
&gt; +            if (line.strip().find(&quot;//&quot;) == 0):
&gt; +                continue

Oh, what comments are these? The first part of the regex very clearly handles &apos;//.*?$&apos; so its surprising to me that some might have been missed.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:67
&gt; +            &quot;&quot;&quot;Single-quotes within strings and regular expressions are valid.&quot;&quot;&quot;
&gt; +            if (self._within_string(line, &quot;&apos;&quot;) or self._within_regex(line, &quot;&apos;&quot;)):
&gt; +                continue

Nit: You can just use python &quot;# foo&quot; comment syntax here. Unless there is an advantage to the &quot;&quot;&quot;....&quot;&quot;&quot; syntax that I don&apos;t know about. These just look like generic inline comments.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:71
&gt; +            if (pos != -1):
&gt; +                line_number, original_line = self._find_original_line(content, line)
&gt; +                self._handle_style_error(line_number, &quot;js/syntax&quot;, 5, &quot;Line contains single-quote character.&quot;)

This is pretty basic, which may be okay. It checks for the first single quote and verifies that it is not within the first double quoted string on the list. Likewise for regex. I don&apos;t think it can give false positives, but issues that I think would go undetected include:

    foo(&quot;a&apos;b&quot;, &apos;c&apos;);
    foo(&quot;a/&apos;b&quot;, &apos;/c&apos;);
    foo(/&apos;/, &apos;c&apos;);

You might be able to detect these by (1) checking all the single quotes on a line and (2) if you do a find and rfind around the position of the character itself:
http://docs.python.org/2/library/string.html#string.find

Alternatively, now that comments are removed you could just search for single quoted strings. The regular expression in _remove_comments looks like it would already be sufficient if you ignore double quoted strings.

However, that being said our code tends to be rather straightforward, so this looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981731</commentid>
    <comment_count>6</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2014-02-17 17:30:50 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Nit: You can just use python &quot;# foo&quot; comment syntax here. Unless there is an advantage to the &quot;&quot;&quot;....&quot;&quot;&quot; syntax that I don&apos;t know about. These just look like generic inline comments.

Convention is to use triple-quote comments for docstrings:
http://en.wikibooks.org/wiki/Python_Programming/Source_Documentation_and_Comments#Documentation_Strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981740</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-17 17:59:32 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Nit: You can just use python &quot;# foo&quot; comment syntax here. Unless there is an advantage to the &quot;&quot;&quot;....&quot;&quot;&quot; syntax that I don&apos;t know about. These just look like generic inline comments.
&gt; 
&gt; Convention is to use triple-quote comments for docstrings:
&gt; http://en.wikibooks.org/wiki/Python_Programming/Source_Documentation_and_Comments#Documentation_Strings

To quote the documentation:

&gt; Fortunately, Python has such a capability. Documentation strings (or docstrings)
&gt; are used to create easily-accessible documentation. You can add a docstring to a
&gt; function, class, or module by adding a string as the first indented statement.

In these cases it is never the first indented line statement. Hence my confusion on why the syntax is being used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981742</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-17 18:00:42 -0800</bug_when>
    <thetext>And having a &quot;FIXME: ...&quot; be a docstring is also confusing to me =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981835</commentid>
    <comment_count>9</comment_count>
      <attachid>224055</attachid>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-18 01:22:11 -0800</bug_when>
    <thetext>Comment on attachment 224055
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/js.py:64
&gt;&gt; +                continue
&gt; 
&gt; Oh, what comments are these? The first part of the regex very clearly handles &apos;//.*?$&apos; so its surprising to me that some might have been missed.

Yes, I don&apos;t know because it seems to be working OK for more comments like this even if this very same file. If I remove that checking I got:

CodeMirrorAdditions.js(44):         // If the stream isn&apos;t at the end of line then we found the end quote.
CodeMirrorAdditions.js(111):             // We don&apos;t expect other tokens between attribute and string since

Actually, it&apos;s not happening for just these two lines (there are two because they contain a single-quote), it&apos;s happening for more lines in CodeMirrorAdditions.js. I isolated the function in its own file, run it and I got:

        // If the stream isn&apos;t at the end of line then we found the end quote.
        // In the case, change _linkTokenize to parse the end of the link next.
        // Otherwise _linkTokenize will stay as-is to parse more of the link.
        // Eat the quote character to style it with the base style.
        // Clean up the state.
            // Call the link tokenizer instead.
        // Remember the start position so we can rewind if needed.
            // Look for &quot;href&quot; or &quot;src&quot; attributes. If found then we should
            // expect a string later that should get the &quot;link&quot; style instead.
            // This is a link, so setup the state to process it next.
            // The attribute may or may not be quoted.
            // Rewind the steam to the start of this token.
            // Eat the open quote of the string so the string style
            // will be used for the quote character.
            // We don&apos;t expect other tokens between attribute and string since

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/js.py:71
&gt;&gt; +                self._handle_style_error(line_number, &quot;js/syntax&quot;, 5, &quot;Line contains single-quote character.&quot;)
&gt; 
&gt; This is pretty basic, which may be okay. It checks for the first single quote and verifies that it is not within the first double quoted string on the list. Likewise for regex. I don&apos;t think it can give false positives, but issues that I think would go undetected include:
&gt; 
&gt;     foo(&quot;a&apos;b&quot;, &apos;c&apos;);
&gt;     foo(&quot;a/&apos;b&quot;, &apos;/c&apos;);
&gt;     foo(/&apos;/, &apos;c&apos;);
&gt; 
&gt; You might be able to detect these by (1) checking all the single quotes on a line and (2) if you do a find and rfind around the position of the character itself:
&gt; http://docs.python.org/2/library/string.html#string.find
&gt; 
&gt; Alternatively, now that comments are removed you could just search for single quoted strings. The regular expression in _remove_comments looks like it would already be sufficient if you ignore double quoted strings.
&gt; 
&gt; However, that being said our code tends to be rather straightforward, so this looks good to me.

OK, I think I will leave like this then. Thanks for pointing those cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981837</commentid>
    <comment_count>10</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-18 01:32:35 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Nit: You can just use python &quot;# foo&quot; comment syntax here. Unless there is an advantage to the &quot;&quot;&quot;....&quot;&quot;&quot; syntax that I don&apos;t know about. These just look like generic inline comments.
&gt; 
&gt; Convention is to use triple-quote comments for docstrings:
&gt; http://en.wikibooks.org/wiki/Python_Programming/Source_Documentation_and_Comments#Documentation_Strings

I didn&apos;t know about this convention. I checked a few .py file of the codebase and I only found examples of these type of comments being used, so I thought hash comments were not allowed (which I was clearly wrong because they are used extensively in other files such as cpp.py).

I will change the comments to &quot;# foo&quot; where appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981844</commentid>
    <comment_count>11</comment_count>
      <attachid>224482</attachid>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-18 01:41:39 -0800</bug_when>
    <thetext>Created attachment 224482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981997</commentid>
    <comment_count>12</comment_count>
      <attachid>224482</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-18 11:13:58 -0800</bug_when>
    <thetext>Comment on attachment 224482
Patch

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

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:30
&gt; +This checker is only used to check WebInspector Javascript files.

Typo: &quot;Javascript&quot; =&gt; &quot;JavaScript&quot;.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:63
&gt; +            # FIXME: Despite stripping comments, there are two single-line comments

Apparently this comment is wrong. There are more then two single-line comments that are not stripped.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:100
&gt; +        pattern = re.compile(r&apos;//.*?$|/\*.*?\*/|\&apos;(?:\\.|[^\\\&apos;])*\&apos;|&quot;(?:\\.|[^\\&quot;])*&quot;&apos;, re.DOTALL | re.MULTILINE)

I wonder if the string regexes are too greedy. Given that they are multiline.

The string regex components are:

    \&apos;(?:\\.|[^\\\&apos;])*\&apos;

and:

    &quot;(?:\\.|[^\\&quot;])*&quot;

Both of these are greedy. I believe the pattern /A(.)*A/ should be /A(.)*?A/. This may explain why some things are not getting stripped properly.

Also, the regex attempts to avoid escape sequences. If you&apos;re in a single quoted string it attempts to avoid the sequence |\&apos;| in the regex with [^\\\&apos;]. However, that is wrong.

Maybe we should rethink this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982328</commentid>
    <comment_count>13</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-19 05:33:22 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 224482 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224482&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/js.py:30
&gt; &gt; +This checker is only used to check WebInspector Javascript files.
&gt; 
&gt; Typo: &quot;Javascript&quot; =&gt; &quot;JavaScript&quot;.
&gt; 

Ok

&gt; &gt; Tools/Scripts/webkitpy/style/checkers/js.py:63
&gt; &gt; +            # FIXME: Despite stripping comments, there are two single-line comments
&gt; 
&gt; Apparently this comment is wrong. There are more then two single-line comments that are not stripped.
&gt; 

Ok

&gt; &gt; Tools/Scripts/webkitpy/style/checkers/js.py:100
&gt; &gt; +        pattern = re.compile(r&apos;//.*?$|/\*.*?\*/|\&apos;(?:\\.|[^\\\&apos;])*\&apos;|&quot;(?:\\.|[^\\&quot;])*&quot;&apos;, re.DOTALL | re.MULTILINE)
&gt; 
&gt; I wonder if the string regexes are too greedy. Given that they are multiline.
&gt; 
&gt; The string regex components are:
&gt; 
&gt;     \&apos;(?:\\.|[^\\\&apos;])*\&apos;
&gt; 
&gt; and:
&gt; 
&gt;     &quot;(?:\\.|[^\\&quot;])*&quot;
&gt; 
&gt; Both of these are greedy. I believe the pattern /A(.)*A/ should be /A(.)*?A/. This may explain why some things are not getting stripped properly.
&gt;

I tried non-greedy and got the same results.
 
&gt; Also, the regex attempts to avoid escape sequences. If you&apos;re in a single quoted string it attempts to avoid the sequence |\&apos;| in the regex with [^\\\&apos;]. However, that is wrong.
&gt;

My fault, the snippet of code was intented for removing comments in C. In addition, to have it completely ready for JavaScript it should match regular expressions too (in case a // or /* happens within a regex) :/
 
&gt; Maybe we should rethink this.

I spent some time yesterday but I still got nothing. Before sending this patch I used a tool called jsstrip (https://code.google.com/p/jsstrip/wiki/UsagePython) to remove the comments. It worked well but it seemed to me a little bit overkill to include an external tool just for that (and there might be problems with licenses, etc). I&apos;ve been taking a look at jsmin too (http://code.google.com/p/v8/source/browse/branches/bleeding_edge/tools/jsmin.py?r=3565) to see what it does for handling comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982420</commentid>
    <comment_count>14</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-19 10:43:55 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 224482 [details] [details])
&gt; I spent some time yesterday but I still got nothing. Before sending this patch I used a tool called jsstrip (https://code.google.com/p/jsstrip/wiki/UsagePython) to remove the comments. It worked well but it seemed to me a little bit overkill to include an external tool just for that (and there might be problems with licenses, etc). I&apos;ve been taking a look at jsmin too (http://code.google.com/p/v8/source/browse/branches/bleeding_edge/tools/jsmin.py?r=3565) to see what it does for handling comments.

We try to be conservative in pulling in external libraries. We do have a copy of jsmin.py in JavaScriptCore/inspector/scripts/jsmin.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982802</commentid>
    <comment_count>15</comment_count>
      <attachid>224749</attachid>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-20 05:17:41 -0800</bug_when>
    <thetext>Created attachment 224749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982803</commentid>
    <comment_count>16</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-20 05:28:23 -0800</bug_when>
    <thetext>I recoded the whole thing. 

Now what the script does is iterating through lines, checks if line is in a multi-line-comment (it assumes that a line starting with &apos;*&apos; is a line within a multi-line-comment). If line is not a multi-line-comment, removes the content of strings, single-line-comment (if any) and regular expressions. If after that, there&apos;s a single quote character returns error.

I also added the other tests suggested by Joseph.

After checking against the whole Web Inspector code base, the results are the following:

CookieStorageContentView.js(254):     if (cookieDomain.charAt(0) !== &apos;.&apos;)
DOMTreeElement.js(539):             tag.textContent = &apos;&apos;;
DOMTreeElement.js(540):             tag.appendChild(document.createTextNode(&apos;&lt;&apos;+nodeName));
DOMTreeElement.js(542):             tag.appendChild(document.createTextNode(&apos;&gt;&apos;));
DOMTreeElement.js(752):             tagNameElement.removeEventListener(&apos;keyup&apos;, keyupListener, false);
DOMTreeElement.js(758):             tagNameElement.removeEventListener(&apos;keyup&apos;, keyupListener, false);
DOMTreeElement.js(762):         tagNameElement.addEventListener(&apos;keyup&apos;, keyupListener, false);
DataGrid.js(660):             emptyData[identifier] = &apos;&apos;;
DataGrid.js(1111):                     var columnTitle = this.dataGrid.columns.get(columnIdentifier).get(&apos;title&apos;);
ColorPicker.js(49):     this._opacityPattern = &apos;url(&quot;data:image/svg+xml;base64,&apos; + btoa(&apos;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;6&quot; height=&quot;6&quot; fill=&quot;rgb(204, 204, 204)&quot;&gt;&lt;rect width=&quot;3&quot; height=&quot;3&quot; /&gt;&lt;rect x=&quot;3&quot; y=&quot;3&quot; width=&quot;3&quot; height=&quot;3&quot;/&gt;&lt;/svg&gt;&apos;) + &apos;&quot;)&apos;;
DOMTreeOutline.js(380):         event.dataTransfer.dropEffect = &apos;move&apos;;
Main.js(491):         console.assert(profileTitle[0] === &apos;/&apos;);

Same results as before (the single quote in DataGrid:1111 was added recently). Hope this approach can work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982844</commentid>
    <comment_count>17</comment_count>
      <attachid>224749</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-20 09:08:27 -0800</bug_when>
    <thetext>Comment on attachment 224749
Patch

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

Looking good to me, but I will let Joe review too.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:67
&gt; +            if (line.endswith(&quot;*/&quot;)):

We have had cases where there is a space after the comment ends that this wouldn&apos;t catch.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:71
&gt; +            if (line.startswith(&quot;/*&quot;) or line.startswith(&quot;*&quot;)):

Not a foolproof check for multi-line comments, but we don&apos;t use them much at all. This will take care of the license comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982927</commentid>
    <comment_count>18</comment_count>
      <attachid>224749</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-20 12:10:15 -0800</bug_when>
    <thetext>Comment on attachment 224749
Patch

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

r=me! I like this much better! Thanks for looking into it again.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:75
&gt; +            # Remove strings

Nit: Remove &quot;double quoted&quot; strings.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:76
&gt; +            line = re.compile(r&apos;&quot;(?:[^&quot;\\]|\\.)*&quot;&apos;, re.MULTILINE).sub(&apos;&quot;&quot;&apos;, line)

Nit: I don&apos;t think you need re.MULTILINE. The input string (line) is only a single line anyways right?

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:78
&gt; +            # Remove single line comment if any

Nit: Comment should be full sentences that end in a period. That applies to all these # comments.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:88
&gt; +            line = re.compile(&apos;/.+?/&apos;, re.MULTILINE).sub(&apos;//&apos;, line)

Ditto regarding MULTILINE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983163</commentid>
    <comment_count>19</comment_count>
      <attachid>224848</attachid>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-21 02:28:12 -0800</bug_when>
    <thetext>Created attachment 224848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983164</commentid>
    <comment_count>20</comment_count>
      <attachid>224749</attachid>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-21 02:35:03 -0800</bug_when>
    <thetext>Comment on attachment 224749
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/js.py:67
&gt;&gt; +            if (line.endswith(&quot;*/&quot;)):
&gt; 
&gt; We have had cases where there is a space after the comment ends that this wouldn&apos;t catch.

Line is stripped, that means that leading and trailing whitespace characters are removed before the check.
http://docs.python.org/2/library/string.html

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/js.py:76
&gt;&gt; +            line = re.compile(r&apos;&quot;(?:[^&quot;\\]|\\.)*&quot;&apos;, re.MULTILINE).sub(&apos;&quot;&quot;&apos;, line)
&gt; 
&gt; Nit: I don&apos;t think you need re.MULTILINE. The input string (line) is only a single line anyways right?

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983252</commentid>
    <comment_count>21</comment_count>
      <attachid>224848</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-21 10:41:00 -0800</bug_when>
    <thetext>Comment on attachment 224848
Patch

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

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:74
&gt; +            #  Remove &quot;double quoted&quot; strings.

Double space in comment.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:80
&gt; +                    line = line[:single_line_comment_pos]

Double indent.

&gt; Tools/Scripts/webkitpy/style/checkers/js.py:91
&gt; +                self._handle_style_error(line_number, &quot;js/syntax&quot;, 5, &quot;Line contains single-quote character.&quot;)

It might be nice to dump the line at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983257</commentid>
    <comment_count>22</comment_count>
      <attachid>224848</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 11:12:08 -0800</bug_when>
    <thetext>Comment on attachment 224848
Patch

Clearing flags on attachment: 224848

Committed r164487: &lt;http://trac.webkit.org/changeset/164487&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983258</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 11:12:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983865</commentid>
    <comment_count>24</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2014-02-24 04:26:42 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 224848 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224848&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/js.py:74
&gt; &gt; +            #  Remove &quot;double quoted&quot; strings.
&gt; 
&gt; Double space in comment.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/js.py:80
&gt; &gt; +                    line = line[:single_line_comment_pos]
&gt; 
&gt; Double indent.
&gt; 

Fixed in r164582.

&gt; &gt; Tools/Scripts/webkitpy/style/checkers/js.py:91
&gt; &gt; +                self._handle_style_error(line_number, &quot;js/syntax&quot;, 5, &quot;Line contains single-quote character.&quot;)
&gt; 
&gt; It might be nice to dump the line at the same time.

Agree, but I think that in case of solving that it makes to do it in for all type of errors, that means to change how handle_style_error works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986154</commentid>
    <comment_count>25</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-02 12:46:00 -0800</bug_when>
    <thetext>*** Bug 119901 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224055</attachid>
            <date>2014-02-13 03:02:32 -0800</date>
            <delta_ts>2014-02-18 01:41:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128422-20140213120230.patch</filename>
            <type>text/plain</type>
            <size>6047</size>
            <attacher name="Diego Pino">dpino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzOTY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjVhZWQ1MmNjZDk5ZDFhYzc5ZDMxY2JjZTNiMjZiZDU4
YTllZTQ1YS4uODJjMTYyZDEzMzY2ODMxNDkyMjdhNDI1OGZjMTZhNmQ3NGFmNTcwNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE0LTAyLTEzICBEaWVnbyBQaW5vIEdhcmPDrWEgIDxkcGlub0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVwZGF0ZSBjaGVjay13ZWJraXQtc3R5bGUgdG8gZmxh
ZyBzaW5nbGUgcXVvdGVzIGluIFdlYkluc3BlY3RvclVJIHByb2plY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvanMucHk6CisgICAgICAgIChKU0NoZWNrZXIuX19pbml0X18pOgorICAgICAg
ICAoSlNDaGVja2VyLmNoZWNrKToKKyAgICAgICAgKFNpbmdsZVF1b3RlQ2hlY2tlcik6CisgICAg
ICAgIChTaW5nbGVRdW90ZUNoZWNrZXIuX19pbml0X18pOgorICAgICAgICAoU2luZ2xlUXVvdGVD
aGVja2VyLmNoZWNrKToKKyAgICAgICAgKFNpbmdsZVF1b3RlQ2hlY2tlci5fZmluZF9vcmlnaW5h
bF9saW5lKToKKyAgICAgICAgKFNpbmdsZVF1b3RlQ2hlY2tlci5fd2l0aGluX3N0cmluZyk6Cisg
ICAgICAgIChTaW5nbGVRdW90ZUNoZWNrZXIuX3dpdGhpbl9yZWdleCk6CisgICAgICAgIChTaW5n
bGVRdW90ZUNoZWNrZXIuX3JlbW92ZV9jb21tZW50cyk6CisgICAgICAgIChTaW5nbGVRdW90ZUNo
ZWNrZXIuX3JlbW92ZV9jb21tZW50cy5yZXBsYWNlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9qc191bml0dGVzdC5weToKKyAgICAgICAgKEpTVGVzdENhc2Uu
YXNzZXJ0RXJyb3IuZXJyb3JfZm9yX3Rlc3QpOgorICAgICAgICAoSlNUZXN0Q2FzZS50ZXN0X25v
X2Vycm9yKToKKyAgICAgICAgKEpTVGVzdENhc2UudGVzdF9lcnJvcik6CisKIDIwMTQtMDItMTEg
IE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBvc3Np
YmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvanMucHkKaW5kZXggZmUyYzg3Mzc4MjRjNDVkZTY1YjNkNzIyNTNm
MjlkN2E1OTE1NjA1OC4uZWRiM2E4ZGQ2MDI2YTExODQ3YjA3ZDcxNjcyMDk4NjM1MDRmNTA0OSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzLnB5CkBAIC0xLDQg
KzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI1LDggKzI2LDEwIEBACiAKICIiIlN1
cHBvcnRzIGNoZWNraW5nIFdlYktpdCBzdHlsZSBpbiBKYXZhU2NyaXB0IGZpbGVzIiIiCiAKLWZy
b20gY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCisiIiJUaGlzIGNoZWNrZXIgaXMgb25seSB1c2Vk
IHRvIGNoZWNrIFdlYkluc3BlY3RvciBKYXZhc2NyaXB0IGZpbGVzLiIiIgogCitmcm9tIGNvbW1v
biBpbXBvcnQgVGFiQ2hlY2tlcgoraW1wb3J0IHJlCiAKIGNsYXNzIEpTQ2hlY2tlcihvYmplY3Qp
OgogICAgICIiIlByb2Nlc3NlcyBKYXZhU2NyaXB0IGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4i
IiIKQEAgLTM3LDYgKzQwLDYwIEBAIGNsYXNzIEpTQ2hlY2tlcihvYmplY3QpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CiAgICAgICAgIHNl
bGYuX2hhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgogICAgICAgICBzZWxm
Ll90YWJfY2hlY2tlciA9IFRhYkNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3Ip
CisgICAgICAgIHNlbGYuX3NpbmdsZV9xdW90ZV9jaGVja2VyID0gU2luZ2xlUXVvdGVDaGVja2Vy
KGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogCiAgICAgZGVmIGNoZWNrKHNlbGYsIGxp
bmVzKToKICAgICAgICAgc2VsZi5fdGFiX2NoZWNrZXIuY2hlY2sobGluZXMpCisgICAgICAgIHNl
bGYuX3NpbmdsZV9xdW90ZV9jaGVja2VyLmNoZWNrKGxpbmVzKQorCisKK2NsYXNzIFNpbmdsZVF1
b3RlQ2hlY2tlcihvYmplY3QpOgorICAgICIiIkNoZWNrcyB0aGVyZSBhcmUgbm90IHNpbmdsZSBx
dW90ZXMgaW4gc291cmNlLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwg
aGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICAgICAgc2VsZi5fZmlsZV9wYXRoID0gZmlsZV9wYXRo
CisgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgor
CisgICAgZGVmIGNoZWNrKHNlbGYsIGxpbmVzKToKKyAgICAgICAgY29udGVudCA9ICJcbiIuam9p
bihsaW5lcykKKworICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9yZW1vdmVfY29tbWVudHMoY29u
dGVudCkuc3BsaXQoIlxuIik6CisgICAgICAgICAgICAiIiJGSVhNRTogRGVzcGl0ZSBzdHJpcHBp
bmcgY29tbWVudHMsIHRoZXJlIGFyZSB0d28gc2luZ2xlLWxpbmUgY29tbWVudHMKKyAgICAgICAg
ICAgIG5vdCBzdHJpcHBlZCBpbiBDb2RlTWlycm9yQWRkaXRpb25zLmpzLiAiIiIKKyAgICAgICAg
ICAgIGlmIChsaW5lLnN0cmlwKCkuZmluZCgiLy8iKSA9PSAwKToKKyAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgIiIiU2luZ2xlLXF1b3RlcyB3aXRoaW4gc3RyaW5ncyBhbmQg
cmVndWxhciBleHByZXNzaW9ucyBhcmUgdmFsaWQuIiIiCisgICAgICAgICAgICBpZiAoc2VsZi5f
d2l0aGluX3N0cmluZyhsaW5lLCAiJyIpIG9yIHNlbGYuX3dpdGhpbl9yZWdleChsaW5lLCAiJyIp
KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcG9zID0gbGluZS5maW5k
KCInIikKKyAgICAgICAgICAgIGlmIChwb3MgIT0gLTEpOgorICAgICAgICAgICAgICAgIGxpbmVf
bnVtYmVyLCBvcmlnaW5hbF9saW5lID0gc2VsZi5fZmluZF9vcmlnaW5hbF9saW5lKGNvbnRlbnQs
IGxpbmUpCisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVt
YmVyLCAianMvc3ludGF4IiwgNSwgIkxpbmUgY29udGFpbnMgc2luZ2xlLXF1b3RlIGNoYXJhY3Rl
ci4iKQorCisgICAgZGVmIF9maW5kX29yaWdpbmFsX2xpbmUoc2VsZiwgY29udGVudCwgc3Vic3Ry
KToKKyAgICAgICAgc3Vic3RyID0gc3Vic3RyLnN0cmlwKCkKKyAgICAgICAgbGluZV9udW1iZXIg
PSAxCisgICAgICAgIGZvciBsaW5lIGluIGNvbnRlbnQuc3BsaXQoIlxuIik6CisgICAgICAgICAg
ICBpZiBzdWJzdHIgaW4gbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4gW2xpbmVfbnVtYmVy
LCBsaW5lXQorICAgICAgICAgICAgbGluZV9udW1iZXIgKz0gMQorICAgICAgICByZXR1cm4gWzAs
ICIiXQorCisgICAgZGVmIF93aXRoaW5fc3RyaW5nKHNlbGYsIGxpbmUsIGNoYXIpOgorICAgICAg
ICBwb3MgPSBsaW5lLmZpbmQoY2hhcikKKyAgICAgICAgcmV0dXJuIHBvcyAhPSAtMSBhbmQgKGxp
bmUuZmluZCgnIicpIDwgcG9zIDwgbGluZS5yZmluZCgnIicpKQorCisgICAgZGVmIF93aXRoaW5f
cmVnZXgoc2VsZiwgbGluZSwgY2hhcik6CisgICAgICAgIHBvcyA9IGxpbmUuZmluZChjaGFyKQor
ICAgICAgICByZXR1cm4gcG9zICE9IC0xIGFuZCAobGluZS5maW5kKCcvJykgPCBwb3MgPCBsaW5l
LnJmaW5kKCcvJykpCisKKyAgICAiIiJDb2RlIGJ5IE1hcmt1cyBKYXJkZXJvdCBodHRwOi8vc3Rh
Y2tvdmVyZmxvdy5jb20vYS8yNDE1MDYvMTM0NzU4IiIiCisgICAgZGVmIF9yZW1vdmVfY29tbWVu
dHMoc2VsZiwgdGV4dCk6CisgICAgICAgIGRlZiByZXBsYWNlcihtYXRjaCk6CisgICAgICAgICAg
ICBzID0gbWF0Y2guZ3JvdXAoMCkKKyAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnLycpOgor
ICAgICAgICAgICAgICAgIHJldHVybiAiIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcworICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZShyJy8vLio/JHwvXCou
Kj9cKi98XCcoPzpcXC58W15cXFwnXSkqXCd8Iig/OlxcLnxbXlxcIl0pKiInLCByZS5ET1RBTEwg
fCByZS5NVUxUSUxJTkUpCisgICAgICAgIHJldHVybiByZS5zdWIocGF0dGVybiwgcmVwbGFjZXIs
IHRleHQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2pzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9q
c191bml0dGVzdC5weQppbmRleCAyOGJhNDRkNjRhYjhjZTQzY2RmNTdhMmQ3MDMwMjBiMzc0N2Nl
ODg0Li4yZDg5ODJhMWFkY2FiMWFkZGYxODkwNjcwOTMxOGM3ZmUwY2MzZDcwIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNfdW5pdHRlc3QucHkK
QEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgSlNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIGRlZiBlcnJvcl9mb3JfdGVzdChsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVu
Y2UsIG1lc3NhZ2UpOgogICAgICAgICAgICAgIiIiQ2hlY2tzIGlmIHRoZSBleHBlY3RlZCBlcnJv
ciBvY2N1cnMuIiIiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2xpbmVf
bnVtYmVyLCBsaW5lX251bWJlcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3doaXRl
c3BhY2UvdGFiJywgY2F0ZWdvcnkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2F0ZWdv
cnkgaW4gWyd3aGl0ZXNwYWNlL3RhYicsICdqcy9zeW50YXgnXSkKICAgICAgICAgICAgIHNlbGYu
aGFkX2Vycm9yID0gVHJ1ZQogCiAgICAgICAgIGNoZWNrZXIgPSBKU0NoZWNrZXIoJycsIGVycm9y
X2Zvcl90ZXN0KQpAQCAtNjcsNyArNjcsMTMgQEAgY2xhc3MgSlNUZXN0Q2FzZSh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgICIiIlRlc3RzIGZvciBubyBlcnJvciBjYXNlcy4iIiIKICAgICAg
ICAgc2VsZi5hc3NlcnROb0Vycm9yKFsnJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm9FcnJvcihb
J2FiYyBkZWYnLCAnZ2dnJ10pCisgICAgICAgICIiIlNpbmdsZS1xdW90ZXMgd2l0aGluIHN0cmlu
ZyBhcmUgT0suIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9FcnJvcihbJ3ZhciBmb28gPSAiJyci
J10pCisgICAgICAgICIiIlNpbmdsZS1xdW90ZXMgd2l0aGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBh
cmUgT0suIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9FcnJvcihbInZhciByZWdleCA9IC9bYS16
J10vIl0pCiAKICAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKICAgICAgICAgIiIiVGVzdHMgZm9y
IGVycm9yIGNhc2VzLiIiIgogICAgICAgICBzZWxmLmFzc2VydEVycm9yKFsnXHR2YXIgZm9vID0g
d2luZG93O1xuJ10sIDEpCisgICAgICAgICIiIlNpbmdsZS1xdW90ZXMgYXJlIG5vdCBPSy4iIiIK
KyAgICAgICAgc2VsZi5hc3NlcnRFcnJvcihbInZhciBmb28gPSAnSGVsbG8gd29ybGQhOydcbiJd
LCAxKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224482</attachid>
            <date>2014-02-18 01:41:39 -0800</date>
            <delta_ts>2014-02-20 05:17:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128422-20140218104137.patch</filename>
            <type>text/plain</type>
            <size>6280</size>
            <attacher name="Diego Pino">dpino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0Mjc0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTM1MmYxYWNlMDUyNDc1NDdjNmFmN2Q0YzExNjVhYzNk
ZGMwYTQ5NC4uYjQ1OTY0Mzg5ZTYyZWEyNTM1MWY5MmJiN2ZlZjRlY2ZkNTA3M2VhNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE0LTAyLTE3ICBEaWVnbyBQaW5vIEdhcmPDrWEgIDxkcGlub0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVwZGF0ZSBjaGVjay13ZWJraXQtc3R5bGUgdG8gZmxh
ZyBzaW5nbGUgcXVvdGVzIGluIFdlYkluc3BlY3RvclVJIHByb2plY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2pzLnB5OgorICAgICAgICAoSlNDaGVja2VyLl9faW5pdF9fKToKKyAgICAg
ICAgKEpTQ2hlY2tlci5jaGVjayk6CisgICAgICAgIChTaW5nbGVRdW90ZUNoZWNrZXIpOgorICAg
ICAgICAoU2luZ2xlUXVvdGVDaGVja2VyLl9faW5pdF9fKToKKyAgICAgICAgKFNpbmdsZVF1b3Rl
Q2hlY2tlci5jaGVjayk6CisgICAgICAgIChTaW5nbGVRdW90ZUNoZWNrZXIuX2ZpbmRfb3JpZ2lu
YWxfbGluZSk6CisgICAgICAgIChTaW5nbGVRdW90ZUNoZWNrZXIuX3dpdGhpbl9zdHJpbmcpOgor
ICAgICAgICAoU2luZ2xlUXVvdGVDaGVja2VyLl93aXRoaW5fcmVnZXgpOgorICAgICAgICAoU2lu
Z2xlUXVvdGVDaGVja2VyLl9yZW1vdmVfY29tbWVudHMpOgorICAgICAgICAoU2luZ2xlUXVvdGVD
aGVja2VyLl9yZW1vdmVfY29tbWVudHMucmVwbGFjZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvanNfdW5pdHRlc3QucHk6CisgICAgICAgIChKU1Rlc3RDYXNl
LmFzc2VydEVycm9yLmVycm9yX2Zvcl90ZXN0KToKKyAgICAgICAgKEpTVGVzdENhc2UudGVzdF9u
b19lcnJvcik6CisgICAgICAgIChKU1Rlc3RDYXNlLnRlc3RfZXJyb3IpOgorCiAyMDE0LTAyLTE3
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBQ
TEFURk9STShNQUMpIGluIER1bXBSZW5kZXJUcmVlIGV4Y2VwdCB3aGVyZSBpdCBtZWFucyDigJxP
UyBYIGJ1dCBub3QgaU9T4oCdCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2pzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9qcy5weQppbmRleCBmZTJjODczNzgyNGM0NWRlNjViM2Q3MjI1M2YyOWQ3YTU5MTU2MDU4Li44
Nzk1ZDg0MTIyYzk0ZmY3OWVkMjk5MTY3OWM1YzQ1ZjU1NDAyODE3IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanMucHkKQEAgLTEsNCArMSw1IEBACiAjIENvcHly
aWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtMjMsMTAgKzI0LDE0IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCi0iIiJTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gSmF2YVNjcmlw
dCBmaWxlcyIiIgorIiIiCitTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gSmF2YVNj
cmlwdCBmaWxlcy4KIAotZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKK1RoaXMgY2hlY2tl
ciBpcyBvbmx5IHVzZWQgdG8gY2hlY2sgV2ViSW5zcGVjdG9yIEphdmFzY3JpcHQgZmlsZXMuCisi
IiIKIAorZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKK2ltcG9ydCByZQogCiBjbGFzcyBK
U0NoZWNrZXIob2JqZWN0KToKICAgICAiIiJQcm9jZXNzZXMgSmF2YVNjcmlwdCBsaW5lcyBmb3Ig
Y2hlY2tpbmcgc3R5bGUuIiIiCkBAIC0zNyw2ICs0Miw2MCBAQCBjbGFzcyBKU0NoZWNrZXIob2Jq
ZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJy
b3IpOgogICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJy
b3IKICAgICAgICAgc2VsZi5fdGFiX2NoZWNrZXIgPSBUYWJDaGVja2VyKGZpbGVfcGF0aCwgaGFu
ZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLl9zaW5nbGVfcXVvdGVfY2hlY2tlciA9IFNp
bmdsZVF1b3RlQ2hlY2tlcihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKIAogICAgIGRl
ZiBjaGVjayhzZWxmLCBsaW5lcyk6CiAgICAgICAgIHNlbGYuX3RhYl9jaGVja2VyLmNoZWNrKGxp
bmVzKQorICAgICAgICBzZWxmLl9zaW5nbGVfcXVvdGVfY2hlY2tlci5jaGVjayhsaW5lcykKKwor
CitjbGFzcyBTaW5nbGVRdW90ZUNoZWNrZXIob2JqZWN0KToKKyAgICAiIiJDaGVja3MgdGhlcmUg
YXJlIG5vdCBzaW5nbGUgcXVvdGVzIGluIHNvdXJjZS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CisgICAgICAgIHNlbGYuX2ZpbGVf
cGF0aCA9IGZpbGVfcGF0aAorICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5k
bGVfc3R5bGVfZXJyb3IKKworICAgIGRlZiBjaGVjayhzZWxmLCBsaW5lcyk6CisgICAgICAgIGNv
bnRlbnQgPSAiXG4iLmpvaW4obGluZXMpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fcmVt
b3ZlX2NvbW1lbnRzKGNvbnRlbnQpLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgIyBGSVhNRTog
RGVzcGl0ZSBzdHJpcHBpbmcgY29tbWVudHMsIHRoZXJlIGFyZSB0d28gc2luZ2xlLWxpbmUgY29t
bWVudHMKKyAgICAgICAgICAgICMgbm90IHN0cmlwcGVkIGluIENvZGVNaXJyb3JBZGRpdGlvbnMu
anMuCisgICAgICAgICAgICBpZiAobGluZS5zdHJpcCgpLmZpbmQoIi8vIikgPT0gMCk6CisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgU2luZ2xlLXF1b3RlcyB3aXRoaW4g
c3RyaW5ncyBhbmQgcmVndWxhciBleHByZXNzaW9ucyBhcmUgdmFsaWQuCisgICAgICAgICAgICBp
ZiAoc2VsZi5fd2l0aGluX3N0cmluZyhsaW5lLCAiJyIpIG9yIHNlbGYuX3dpdGhpbl9yZWdleChs
aW5lLCAiJyIpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcG9zID0g
bGluZS5maW5kKCInIikKKyAgICAgICAgICAgIGlmIChwb3MgIT0gLTEpOgorICAgICAgICAgICAg
ICAgIGxpbmVfbnVtYmVyLCBvcmlnaW5hbF9saW5lID0gc2VsZi5fZmluZF9vcmlnaW5hbF9saW5l
KGNvbnRlbnQsIGxpbmUpCisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9y
KGxpbmVfbnVtYmVyLCAianMvc3ludGF4IiwgNSwgIkxpbmUgY29udGFpbnMgc2luZ2xlLXF1b3Rl
IGNoYXJhY3Rlci4iKQorCisgICAgZGVmIF9maW5kX29yaWdpbmFsX2xpbmUoc2VsZiwgY29udGVu
dCwgc3Vic3RyKToKKyAgICAgICAgc3Vic3RyID0gc3Vic3RyLnN0cmlwKCkKKyAgICAgICAgbGlu
ZV9udW1iZXIgPSAxCisgICAgICAgIGZvciBsaW5lIGluIGNvbnRlbnQuc3BsaXQoIlxuIik6Cisg
ICAgICAgICAgICBpZiBzdWJzdHIgaW4gbGluZToKKyAgICAgICAgICAgICAgICByZXR1cm4gW2xp
bmVfbnVtYmVyLCBsaW5lXQorICAgICAgICAgICAgbGluZV9udW1iZXIgKz0gMQorICAgICAgICBy
ZXR1cm4gWzAsICIiXQorCisgICAgZGVmIF93aXRoaW5fc3RyaW5nKHNlbGYsIGxpbmUsIGNoYXIp
OgorICAgICAgICBwb3MgPSBsaW5lLmZpbmQoY2hhcikKKyAgICAgICAgcmV0dXJuIHBvcyAhPSAt
MSBhbmQgKGxpbmUuZmluZCgnIicpIDwgcG9zIDwgbGluZS5yZmluZCgnIicpKQorCisgICAgZGVm
IF93aXRoaW5fcmVnZXgoc2VsZiwgbGluZSwgY2hhcik6CisgICAgICAgIHBvcyA9IGxpbmUuZmlu
ZChjaGFyKQorICAgICAgICByZXR1cm4gcG9zICE9IC0xIGFuZCAobGluZS5maW5kKCcvJykgPCBw
b3MgPCBsaW5lLnJmaW5kKCcvJykpCisKKyAgICAjIENvZGUgYnkgTWFya3VzIEphcmRlcm90IGh0
dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI0MTUwNi8xMzQ3NTgKKyAgICBkZWYgX3JlbW92ZV9j
b21tZW50cyhzZWxmLCB0ZXh0KToKKyAgICAgICAgZGVmIHJlcGxhY2VyKG1hdGNoKToKKyAgICAg
ICAgICAgIHMgPSBtYXRjaC5ncm91cCgwKQorICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKCcv
Jyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICIiCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIHJldHVybiBzCisgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKHInLy8uKj8k
fC9cKi4qP1wqL3xcJyg/OlxcLnxbXlxcXCddKSpcJ3wiKD86XFwufFteXFwiXSkqIicsIHJlLkRP
VEFMTCB8IHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIHJlLnN1YihwYXR0ZXJuLCByZXBs
YWNlciwgdGV4dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvanNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2pzX3VuaXR0ZXN0LnB5CmluZGV4IDI4YmE0NGQ2NGFiOGNlNDNjZGY1N2EyZDcwMzAyMGIz
NzQ3Y2U4ODQuLjJkODk4MmExYWRjYWIxYWRkZjE4OTA2NzA5MzE4YzdmZTBjYzNkNzAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc191bml0dGVz
dC5weQpAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBKU1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgZGVmIGVycm9yX2Zvcl90ZXN0KGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29u
ZmlkZW5jZSwgbWVzc2FnZSk6CiAgICAgICAgICAgICAiIiJDaGVja3MgaWYgdGhlIGV4cGVjdGVk
IGVycm9yIG9jY3Vycy4iIiIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRf
bGluZV9udW1iZXIsIGxpbmVfbnVtYmVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
d2hpdGVzcGFjZS90YWInLCBjYXRlZ29yeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShj
YXRlZ29yeSBpbiBbJ3doaXRlc3BhY2UvdGFiJywgJ2pzL3N5bnRheCddKQogICAgICAgICAgICAg
c2VsZi5oYWRfZXJyb3IgPSBUcnVlCiAKICAgICAgICAgY2hlY2tlciA9IEpTQ2hlY2tlcignJywg
ZXJyb3JfZm9yX3Rlc3QpCkBAIC02Nyw3ICs2NywxMyBAQCBjbGFzcyBKU1Rlc3RDYXNlKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIiIiVGVzdHMgZm9yIG5vIGVycm9yIGNhc2VzLiIiIgog
ICAgICAgICBzZWxmLmFzc2VydE5vRXJyb3IoWycnXSkKICAgICAgICAgc2VsZi5hc3NlcnROb0Vy
cm9yKFsnYWJjIGRlZicsICdnZ2cnXSkKKyAgICAgICAgIiIiU2luZ2xlLXF1b3RlcyB3aXRoaW4g
c3RyaW5nIGFyZSBPSy4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnROb0Vycm9yKFsndmFyIGZvbyA9
ICInJyInXSkKKyAgICAgICAgIiIiU2luZ2xlLXF1b3RlcyB3aXRoaW4gcmVndWxhciBleHByZXNz
aW9uIGFyZSBPSy4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnROb0Vycm9yKFsidmFyIHJlZ2V4ID0g
L1thLXonXS8iXSkKIAogICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgogICAgICAgICAiIiJUZXN0
cyBmb3IgZXJyb3IgY2FzZXMuIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXJyb3IoWydcdHZhciBm
b28gPSB3aW5kb3c7XG4nXSwgMSkKKyAgICAgICAgIiIiU2luZ2xlLXF1b3RlcyBhcmUgbm90IE9L
LiIiIgorICAgICAgICBzZWxmLmFzc2VydEVycm9yKFsidmFyIGZvbyA9ICdIZWxsbyB3b3JsZCE7
J1xuIl0sIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224749</attachid>
            <date>2014-02-20 05:17:41 -0800</date>
            <delta_ts>2014-02-21 02:35:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128422-20140220141734.patch</filename>
            <type>text/plain</type>
            <size>5824</size>
            <attacher name="Diego Pino">dpino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NDI0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGE4ZTFjZGNkY2NmMzRjNjk5OWRhN2M3ZjRmMDMwZDY0
MWIxMzgzOS4uZTBiOTY0ZTM4YTY0ZWQwZjk2ZmIwZWRkZTcyOTgxNzMwMWFhMmIxYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE0LTAyLTIwICBEaWVnbyBQaW5vIEdhcmPDrWEgIDxkcGlub0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVwZGF0ZSBjaGVjay13ZWJraXQtc3R5bGUgdG8gZmxh
ZyBzaW5nbGUgcXVvdGVzIGluIFdlYkluc3BlY3RvclVJIHByb2plY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvanMucHk6CisgICAgICAgIChKU0NoZWNrZXIuX19pbml0X18pOgorICAgICAg
ICAoSlNDaGVja2VyLmNoZWNrKToKKyAgICAgICAgKFNpbmdsZVF1b3RlQ2hlY2tlcik6CisgICAg
ICAgIChTaW5nbGVRdW90ZUNoZWNrZXIuX19pbml0X18pOgorICAgICAgICAoU2luZ2xlUXVvdGVD
aGVja2VyLmNoZWNrKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2pzX3VuaXR0ZXN0LnB5OgorICAgICAgICAoSlNUZXN0Q2FzZS5hc3NlcnRFcnJvci5lcnJvcl9m
b3JfdGVzdCk6CisgICAgICAgIChKU1Rlc3RDYXNlLmFzc2VydEVycm9yKToKKyAgICAgICAgKEpT
VGVzdENhc2UudGVzdF9ub19lcnJvcik6CisgICAgICAgIChKU1Rlc3RDYXNlLnRlc3RfZXJyb3Ip
OgorCiAyMDE0LTAyLTE5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFA
Y29sbGFib3JhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgbmV3IEFSTSBidWlsZCBzbGF2ZSBm
b3IgR1RLKwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9qcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanMucHkKaW5k
ZXggZmUyYzg3Mzc4MjRjNDVkZTY1YjNkNzIyNTNmMjlkN2E1OTE1NjA1OC4uNWMxMWQ5OWI5NjVh
YjRmNWEzZTA5M2I1N2VhZmI0Yjk1OGJjYmY3OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2pzLnB5CkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIw
MTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTIzLDEwICsyNCwxNCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
IiIiU3VwcG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0eWxlIGluIEphdmFTY3JpcHQgZmlsZXMiIiIK
KyIiIgorU3VwcG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0eWxlIGluIEphdmFTY3JpcHQgZmlsZXMu
CiAKLWZyb20gY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCitUaGlzIGNoZWNrZXIgaXMgb25seSB1
c2VkIHRvIGNoZWNrIFdlYkluc3BlY3RvciBKYXZhU2NyaXB0IGZpbGVzLgorIiIiCiAKK2Zyb20g
Y29tbW9uIGltcG9ydCBUYWJDaGVja2VyCitpbXBvcnQgcmUKIAogY2xhc3MgSlNDaGVja2VyKG9i
amVjdCk6CiAgICAgIiIiUHJvY2Vzc2VzIEphdmFTY3JpcHQgbGluZXMgZm9yIGNoZWNraW5nIHN0
eWxlLiIiIgpAQCAtMzcsNiArNDIsNTEgQEAgY2xhc3MgSlNDaGVja2VyKG9iamVjdCk6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKICAgICAg
ICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yID0gaGFuZGxlX3N0eWxlX2Vycm9yCiAgICAgICAg
IHNlbGYuX3RhYl9jaGVja2VyID0gVGFiQ2hlY2tlcihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9l
cnJvcikKKyAgICAgICAgc2VsZi5fc2luZ2xlX3F1b3RlX2NoZWNrZXIgPSBTaW5nbGVRdW90ZUNo
ZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAKICAgICBkZWYgY2hlY2soc2Vs
ZiwgbGluZXMpOgogICAgICAgICBzZWxmLl90YWJfY2hlY2tlci5jaGVjayhsaW5lcykKKyAgICAg
ICAgc2VsZi5fc2luZ2xlX3F1b3RlX2NoZWNrZXIuY2hlY2sobGluZXMpCisKKworY2xhc3MgU2lu
Z2xlUXVvdGVDaGVja2VyKG9iamVjdCk6CisgICAgIiIiQ2hlY2tzIHRoZXJlIGFyZSBub3Qgc2lu
Z2xlIHF1b3RlcyBpbiBzb3VyY2UuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9w
YXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICBzZWxmLl9maWxlX3BhdGggPSBmaWxl
X3BhdGgKKyAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yID0gaGFuZGxlX3N0eWxlX2Vy
cm9yCisKKyAgICBkZWYgY2hlY2soc2VsZiwgbGluZXMpOgorICAgICAgICBpbl9tdWx0aWxpbmVf
Y29tbWVudCA9IEZhbHNlCisgICAgICAgIGxpbmVfbnVtYmVyID0gMAorICAgICAgICBmb3IgbGlu
ZSBpbiBsaW5lczoKKyAgICAgICAgICAgIG9yaWdpbmFsX2xpbmUgPSBsaW5lCisgICAgICAgICAg
ICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBsaW5lX251bWJlciA9IGxpbmVfbnVt
YmVyICsgMQorCisgICAgICAgICAgICBpZiAobGluZS5lbmRzd2l0aCgiKi8iKSk6CisgICAgICAg
ICAgICAgICAgaW5fbXVsdGlsaW5lX2NvbW1lbnQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisKKyAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c3dpdGgoIi8qIikgb3IgbGluZS5z
dGFydHN3aXRoKCIqIikpOgorICAgICAgICAgICAgICAgIGluX211bHRpbGluZV9jb21tZW50ID0g
VHJ1ZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgUmVtb3ZlIHN0
cmluZ3MKKyAgICAgICAgICAgIGxpbmUgPSByZS5jb21waWxlKHInIig/OlteIlxcXXxcXC4pKiIn
LCByZS5NVUxUSUxJTkUpLnN1YignIiInLCBsaW5lKQorCisgICAgICAgICAgICAjIFJlbW92ZSBz
aW5nbGUgbGluZSBjb21tZW50IGlmIGFueQorICAgICAgICAgICAgc2luZ2xlX2xpbmVfY29tbWVu
dF9wb3MgPSBsaW5lLmZpbmQoJy8vJykKKyAgICAgICAgICAgIGlmIChzaW5nbGVfbGluZV9jb21t
ZW50X3BvcyAhPSAtMSk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzpzaW5nbGVf
bGluZV9jb21tZW50X3Bvc10KKworICAgICAgICAgICAgIyBUaGUgd2hvbGUgbGluZSB3YXMgYSBz
aW5nbGUgbGluZSBjb21tZW50LCBzbyBjb250aW51ZQorICAgICAgICAgICAgaWYgKGxlbihsaW5l
KSA9PSAwKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIFJlbW92
ZSByZWdleGVzCisgICAgICAgICAgICBsaW5lID0gcmUuY29tcGlsZSgnLy4rPy8nLCByZS5NVUxU
SUxJTkUpLnN1YignLy8nLCBsaW5lKQorCisgICAgICAgICAgICBzaW5nbGVfcXVvdGVfcG9zID0g
bGluZS5maW5kKCInIikKKyAgICAgICAgICAgIGlmIChzaW5nbGVfcXVvdGVfcG9zICE9IC0xKToK
KyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsICJq
cy9zeW50YXgiLCA1LCAiTGluZSBjb250YWlucyBzaW5nbGUtcXVvdGUgY2hhcmFjdGVyLiIpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc191bml0dGVz
dC5weQppbmRleCAyOGJhNDRkNjRhYjhjZTQzY2RmNTdhMmQ3MDMwMjBiMzc0N2NlODg0Li5hMDIz
OTliZDE3NDI0NmI4ODEyOGJmM2M3ZDdmNGI0ODMyNjVmNTJlIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNfdW5pdHRlc3QucHkKQEAgLTU2LDE4
ICs1NiwyNyBAQCBjbGFzcyBKU1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
ZGVmIGVycm9yX2Zvcl90ZXN0KGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVz
c2FnZSk6CiAgICAgICAgICAgICAiIiJDaGVja3MgaWYgdGhlIGV4cGVjdGVkIGVycm9yIG9jY3Vy
cy4iIiIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfbGluZV9udW1iZXIs
IGxpbmVfbnVtYmVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd2hpdGVzcGFjZS90
YWInLCBjYXRlZ29yeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYXRlZ29yeSBpbiBb
J3doaXRlc3BhY2UvdGFiJywgJ2pzL3N5bnRheCddKQogICAgICAgICAgICAgc2VsZi5oYWRfZXJy
b3IgPSBUcnVlCiAKICAgICAgICAgY2hlY2tlciA9IEpTQ2hlY2tlcignJywgZXJyb3JfZm9yX3Rl
c3QpCiAgICAgICAgIGNoZWNrZXIuY2hlY2sobGluZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShzZWxmLmhhZF9lcnJvciwgJyVzIHNob3VsZCBoYXZlIGFuIGVycm9yIFt3aGl0ZXNwYWNlL3Rh
Yl0uJyAlIGxpbmVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5oYWRfZXJyb3IsICcl
cyBzaG91bGQgaGF2ZSBhbiBlcnJvciBbd2hpdGVzcGFjZS90YWJdIG9yIFtqcy9zeW50YXhdLicg
JSBsaW5lcykKIAogICAgIGRlZiB0ZXN0X25vX2Vycm9yKHNlbGYpOgogICAgICAgICAiIiJUZXN0
cyBmb3Igbm8gZXJyb3IgY2FzZXMuIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm9FcnJvcihbJydd
KQogICAgICAgICBzZWxmLmFzc2VydE5vRXJyb3IoWydhYmMgZGVmJywgJ2dnZyddKQorICAgICAg
ICAjIFNpbmdsZS1xdW90ZXMgd2l0aGluIHN0cmluZyBhcmUgT0suCisgICAgICAgIHNlbGYuYXNz
ZXJ0Tm9FcnJvcihbJ3ZhciBmb28gPSAiJyciJ10pCisgICAgICAgICMgU2luZ2xlLXF1b3RlcyB3
aXRoaW4gcmVndWxhciBleHByZXNzaW9uIGFyZSBPSy4KKyAgICAgICAgc2VsZi5hc3NlcnROb0Vy
cm9yKFsidmFyIHJlZ2V4ID0gL1thLXonXS8iXSkKIAogICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYp
OgogICAgICAgICAiIiJUZXN0cyBmb3IgZXJyb3IgY2FzZXMuIiIiCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXJyb3IoWydcdHZhciBmb28gPSB3aW5kb3c7XG4nXSwgMSkKKyAgICAgICAgIyBTaW5nbGUt
cXVvdGVzIGFyZSBub3QgT0suCisgICAgICAgIHNlbGYuYXNzZXJ0RXJyb3IoWyJ2YXIgZm9vID0g
J0hlbGxvIHdvcmxkITsnXG4iXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcnJvcihbImZvbyhc
ImEnYlwiLCAnYycpOyJdLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVycm9yKFsiZm9vKFwiYS8n
YlwiLCAnL2MnKTsiXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcnJvcihbImZvbygvJy8sICdj
Jyk7Il0sIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224848</attachid>
            <date>2014-02-21 02:28:12 -0800</date>
            <delta_ts>2014-02-21 11:12:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128422-20140221112810.patch</filename>
            <type>text/plain</type>
            <size>5768</size>
            <attacher name="Diego Pino">dpino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NDI0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGE4ZTFjZGNkY2NmMzRjNjk5OWRhN2M3ZjRmMDMwZDY0
MWIxMzgzOS4uMTNmZGMwZTE0ZTM4Njc1NGJkOTE1Nzk3NGRlMzA5NzcwNjFiZmRhZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE0LTAyLTIwICBEaWVnbyBQaW5vIEdhcmPDrWEgIDxkcGlub0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHVwZGF0ZSBjaGVjay13ZWJraXQtc3R5bGUgdG8gZmxh
ZyBzaW5nbGUgcXVvdGVzIGluIFdlYkluc3BlY3RvclVJIHByb2plY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2pzLnB5OgorICAgICAgICAoSlNDaGVja2VyLl9faW5pdF9fKToKKyAgICAg
ICAgKEpTQ2hlY2tlci5jaGVjayk6CisgICAgICAgIChTaW5nbGVRdW90ZUNoZWNrZXIpOgorICAg
ICAgICAoU2luZ2xlUXVvdGVDaGVja2VyLl9faW5pdF9fKToKKyAgICAgICAgKFNpbmdsZVF1b3Rl
Q2hlY2tlci5jaGVjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9qc191bml0dGVzdC5weToKKyAgICAgICAgKEpTVGVzdENhc2UuYXNzZXJ0RXJyb3IuZXJyb3Jf
Zm9yX3Rlc3QpOgorICAgICAgICAoSlNUZXN0Q2FzZS5hc3NlcnRFcnJvcik6CisgICAgICAgIChK
U1Rlc3RDYXNlLnRlc3Rfbm9fZXJyb3IpOgorICAgICAgICAoSlNUZXN0Q2FzZS50ZXN0X2Vycm9y
KToKKwogMjAxNC0wMi0xOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3Jvbmhh
QGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIG5ldyBBUk0gYnVpbGQgc2xhdmUg
Zm9yIEdUSysKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvanMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzLnB5Cmlu
ZGV4IGZlMmM4NzM3ODI0YzQ1ZGU2NWIzZDcyMjUzZjI5ZDdhNTkxNTYwNTguLjIwYmVjMzhlOWQw
OTg1OTNlN2FkODlhYjdhNmUwZDAyNzlkYjhkMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9qcy5weQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAy
MDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0yMywxMCArMjQsMTQgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
LSIiIlN1cHBvcnRzIGNoZWNraW5nIFdlYktpdCBzdHlsZSBpbiBKYXZhU2NyaXB0IGZpbGVzIiIi
CisiIiIKK1N1cHBvcnRzIGNoZWNraW5nIFdlYktpdCBzdHlsZSBpbiBKYXZhU2NyaXB0IGZpbGVz
LgogCi1mcm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgorVGhpcyBjaGVja2VyIGlzIG9ubHkg
dXNlZCB0byBjaGVjayBXZWJJbnNwZWN0b3IgSmF2YVNjcmlwdCBmaWxlcy4KKyIiIgogCitmcm9t
IGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgoraW1wb3J0IHJlCiAKIGNsYXNzIEpTQ2hlY2tlcihv
YmplY3QpOgogICAgICIiIlByb2Nlc3NlcyBKYXZhU2NyaXB0IGxpbmVzIGZvciBjaGVja2luZyBz
dHlsZS4iIiIKQEAgLTM3LDYgKzQyLDUwIEBAIGNsYXNzIEpTQ2hlY2tlcihvYmplY3QpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CiAgICAg
ICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgogICAgICAg
ICBzZWxmLl90YWJfY2hlY2tlciA9IFRhYkNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVf
ZXJyb3IpCisgICAgICAgIHNlbGYuX3NpbmdsZV9xdW90ZV9jaGVja2VyID0gU2luZ2xlUXVvdGVD
aGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogCiAgICAgZGVmIGNoZWNrKHNl
bGYsIGxpbmVzKToKICAgICAgICAgc2VsZi5fdGFiX2NoZWNrZXIuY2hlY2sobGluZXMpCisgICAg
ICAgIHNlbGYuX3NpbmdsZV9xdW90ZV9jaGVja2VyLmNoZWNrKGxpbmVzKQorCisKK2NsYXNzIFNp
bmdsZVF1b3RlQ2hlY2tlcihvYmplY3QpOgorICAgICIiIkNoZWNrcyB0aGVyZSBhcmUgbm90IHNp
bmdsZSBxdW90ZXMgaW4gc291cmNlLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVf
cGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICAgICAgc2VsZi5fZmlsZV9wYXRoID0gZmls
ZV9wYXRoCisgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9l
cnJvcgorCisgICAgZGVmIGNoZWNrKHNlbGYsIGxpbmVzKToKKyAgICAgICAgaW5fbXVsdGlsaW5l
X2NvbW1lbnQgPSBGYWxzZQorICAgICAgICBsaW5lX251bWJlciA9IDAKKyAgICAgICAgZm9yIGxp
bmUgaW4gbGluZXM6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAg
ICBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyICsgMQorCisgICAgICAgICAgICBpZiAobGluZS5l
bmRzd2l0aCgiKi8iKSk6CisgICAgICAgICAgICAgICAgaW5fbXVsdGlsaW5lX2NvbW1lbnQgPSBG
YWxzZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIChsaW5lLnN0
YXJ0c3dpdGgoIi8qIikgb3IgbGluZS5zdGFydHN3aXRoKCIqIikpOgorICAgICAgICAgICAgICAg
IGluX211bHRpbGluZV9jb21tZW50ID0gVHJ1ZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICMgIFJlbW92ZSAiZG91YmxlIHF1b3RlZCIgc3RyaW5ncy4KKyAgICAgICAg
ICAgIGxpbmUgPSByZS5zdWIociciKD86W14iXFxdfFxcLikqIicsICciIicsIGxpbmUpCisKKyAg
ICAgICAgICAgICMgUmVtb3ZlIHNpbmdsZSBsaW5lIGNvbW1lbnQgaWYgYW55LgorICAgICAgICAg
ICAgc2luZ2xlX2xpbmVfY29tbWVudF9wb3MgPSBsaW5lLmZpbmQoJy8vJykKKyAgICAgICAgICAg
IGlmIChzaW5nbGVfbGluZV9jb21tZW50X3BvcyAhPSAtMSk6CisgICAgICAgICAgICAgICAgICAg
IGxpbmUgPSBsaW5lWzpzaW5nbGVfbGluZV9jb21tZW50X3Bvc10KKworICAgICAgICAgICAgIyBU
aGUgd2hvbGUgbGluZSB3YXMgYSBzaW5nbGUgbGluZSBjb21tZW50LCBzbyBjb250aW51ZS4KKyAg
ICAgICAgICAgIGlmIChsZW4obGluZSkgPT0gMCk6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgIyBSZW1vdmUgcmVnZXhlcy4KKyAgICAgICAgICAgIGxpbmUgPSByZS5z
dWIoJy8uKz8vJywgJy8vJywgbGluZSkKKworICAgICAgICAgICAgc2luZ2xlX3F1b3RlX3BvcyA9
IGxpbmUuZmluZCgiJyIpCisgICAgICAgICAgICBpZiAoc2luZ2xlX3F1b3RlX3BvcyAhPSAtMSk6
CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAi
anMvc3ludGF4IiwgNSwgIkxpbmUgY29udGFpbnMgc2luZ2xlLXF1b3RlIGNoYXJhY3Rlci4iKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc191bml0
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNfdW5pdHRl
c3QucHkKaW5kZXggMjhiYTQ0ZDY0YWI4Y2U0M2NkZjU3YTJkNzAzMDIwYjM3NDdjZTg4NC4uYTAy
Mzk5YmQxNzQyNDZiODgxMjhiZjNjN2Q3ZjRiNDgzMjY1ZjUyZSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc191bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzX3VuaXR0ZXN0LnB5CkBAIC01Niwx
OCArNTYsMjcgQEAgY2xhc3MgSlNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IGRlZiBlcnJvcl9mb3JfdGVzdChsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1l
c3NhZ2UpOgogICAgICAgICAgICAgIiIiQ2hlY2tzIGlmIHRoZSBleHBlY3RlZCBlcnJvciBvY2N1
cnMuIiIiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2xpbmVfbnVtYmVy
LCBsaW5lX251bWJlcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3doaXRlc3BhY2Uv
dGFiJywgY2F0ZWdvcnkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2F0ZWdvcnkgaW4g
Wyd3aGl0ZXNwYWNlL3RhYicsICdqcy9zeW50YXgnXSkKICAgICAgICAgICAgIHNlbGYuaGFkX2Vy
cm9yID0gVHJ1ZQogCiAgICAgICAgIGNoZWNrZXIgPSBKU0NoZWNrZXIoJycsIGVycm9yX2Zvcl90
ZXN0KQogICAgICAgICBjaGVja2VyLmNoZWNrKGxpbmVzKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUoc2VsZi5oYWRfZXJyb3IsICclcyBzaG91bGQgaGF2ZSBhbiBlcnJvciBbd2hpdGVzcGFjZS90
YWJdLicgJSBsaW5lcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaGFkX2Vycm9yLCAn
JXMgc2hvdWxkIGhhdmUgYW4gZXJyb3IgW3doaXRlc3BhY2UvdGFiXSBvciBbanMvc3ludGF4XS4n
ICUgbGluZXMpCiAKICAgICBkZWYgdGVzdF9ub19lcnJvcihzZWxmKToKICAgICAgICAgIiIiVGVz
dHMgZm9yIG5vIGVycm9yIGNhc2VzLiIiIgogICAgICAgICBzZWxmLmFzc2VydE5vRXJyb3IoWycn
XSkKICAgICAgICAgc2VsZi5hc3NlcnROb0Vycm9yKFsnYWJjIGRlZicsICdnZ2cnXSkKKyAgICAg
ICAgIyBTaW5nbGUtcXVvdGVzIHdpdGhpbiBzdHJpbmcgYXJlIE9LLgorICAgICAgICBzZWxmLmFz
c2VydE5vRXJyb3IoWyd2YXIgZm9vID0gIicnIiddKQorICAgICAgICAjIFNpbmdsZS1xdW90ZXMg
d2l0aGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBhcmUgT0suCisgICAgICAgIHNlbGYuYXNzZXJ0Tm9F
cnJvcihbInZhciByZWdleCA9IC9bYS16J10vIl0pCiAKICAgICBkZWYgdGVzdF9lcnJvcihzZWxm
KToKICAgICAgICAgIiIiVGVzdHMgZm9yIGVycm9yIGNhc2VzLiIiIgogICAgICAgICBzZWxmLmFz
c2VydEVycm9yKFsnXHR2YXIgZm9vID0gd2luZG93O1xuJ10sIDEpCisgICAgICAgICMgU2luZ2xl
LXF1b3RlcyBhcmUgbm90IE9LLgorICAgICAgICBzZWxmLmFzc2VydEVycm9yKFsidmFyIGZvbyA9
ICdIZWxsbyB3b3JsZCE7J1xuIl0sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXJyb3IoWyJmb28o
XCJhJ2JcIiwgJ2MnKTsiXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcnJvcihbImZvbyhcImEv
J2JcIiwgJy9jJyk7Il0sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXJyb3IoWyJmb28oLycvLCAn
YycpOyJdLCAxKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>