<?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>32051</bug_id>
          
          <creation_ts>2009-12-01 20:31:10 -0800</creation_ts>
          <short_desc>check-webkit-style should check for camelCase variable names</short_desc>
          <delta_ts>2009-12-04 00:03:59 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>167854</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-01 20:31:10 -0800</bug_when>
    <thetext>check-webkit-style should check for camelCase variable names

WebKit requires camelCase instead of underbar_style variable names.  check-webkit-style should check for this.

This is a common mistake for those coming from Google&apos;s C++ style:
https://bugs.webkit.org/show_bug.cgi?id=32048#c9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167996</commentid>
    <comment_count>1</comment_count>
      <attachid>44148</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-02 08:08:48 -0800</bug_when>
    <thetext>Created attachment 44148
Incorrect code in WebGLRenderingContext.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167997</commentid>
    <comment_count>2</comment_count>
      <attachid>44149</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-02 08:10:02 -0800</bug_when>
    <thetext>Created attachment 44149
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167999</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-02 08:15:19 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44149 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168001</commentid>
    <comment_count>4</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-02 08:18:48 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=44148) [details]
&gt; Incorrect code in WebGLRenderingContext.cpp

Oops, I mistook the usage of bugzilla-tool. Hmm... I did similar mistakes several times and it&apos;s a bit embarrassing. Can I add confirmation to post-* and land-* ? This would show the message and filenames about to post/land, and ask [Y/n] . If this plan sounds to someone, I&apos;ll open another bug and try adding the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168014</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-02 09:19:13 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=44148) [details] [details]
&gt; &gt; Incorrect code in WebGLRenderingContext.cpp
&gt; 
&gt; Oops, I mistook the usage of bugzilla-tool. Hmm... I did similar mistakes
&gt; several times and it&apos;s a bit embarrassing. Can I add confirmation to post-* and
&gt; land-* ? This would show the message and filenames about to post/land, and ask
&gt; [Y/n] . If this plan sounds to someone, I&apos;ll open another bug and try adding
&gt; the feature.

I did the exact same thing yesterday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168016</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-02 09:20:39 -0800</bug_when>
    <thetext>I encourage you to file a bug about adding confirmation.  I think confirmation on these &quot;dangerous&quot; commands would be a good thing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168020</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-02 09:27:17 -0800</bug_when>
    <thetext>I filed bug 32071 with my thoughts on the subject of confirmation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168085</commentid>
    <comment_count>8</comment_count>
      <attachid>44149</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-02 11:16:57 -0800</bug_when>
    <thetext>Comment on attachment 44149
Patch v1

&gt; diff --git a/WebKitTools/Scripts/modules/cpp_style.py b/WebKitTools/Scripts/modules/cpp_style.py

&gt; +def check_identifier_name(filename, line_number, line, error):
&gt; +    &quot;&quot;&quot;Checks if identifier names don&apos;t contain an underscore.
How about&quot;
  Checks if identifier names contain any underscores.

&gt; +    # Remove storage sepcifiers, ...

typo: sepcifiers

Instead of saying &quot;what is the code doing?&quot; in the comment. It would be good to answer &quot;why?&quot; (When I read the code, I don&apos;t understand why this is necessary.)

&gt; +    line = re.sub(r&apos;(?:unsigned|signed|inline|using|static|const|volatile|auto|register|extern|typedef|else|restrict|struct|class|virtual|return) &apos;, &apos;&apos;, line)
&gt; +
&gt; +    # Remove all template parameters by removing matching &lt; and &gt;.

Why?

&gt; +    while True:
&gt; +        line, removed_numbers = re.subn(r&apos;&lt;[\w\s*&amp;:]+&gt;&apos;, &apos;&apos;, line)

s/removed_numbers/number_of_replacements/

&gt; +        if not removed_numbers:
&gt; +            break
&gt; +
&gt; +    # Remove for statement.
Why?

&gt; +    line = re.sub(r&apos;^\s*for\s*\(&apos;, &apos;&apos;, line)
&gt; +    # Remove other control statements.
&gt; +    line, control_statement = re.subn(r&apos;^\s*(?:while|if|switch)\s*\(&apos;, &apos;&apos;, line)

Why?

&gt; +    # Detect variable and functions.
&gt; +    matched = match(r&apos;\s*\w(?:[\w:]|\s*[*&amp;])+\s+([\w:]+)\s*([;(=[])&apos;, line)

This regex is hard to read as is. I don&apos;t know what it is attempting to do with all of its clauses. One way to fix this is to make parts of the part into separate strings that are put in variables which have names explaining what they do.

&gt; +    if not matched:
&gt; +        return
&gt; +    # If we removed a non-for-control statement, the character after
&gt; +    # the identifier should be &apos;=&apos;. With this rule, we can avoid the
&gt; +    # case like &quot;if (val &amp; INT_MAX) {&quot;.

What are you trying to avoid?  Flagging INT_MAX?

Why not just avoid flagging TEXT_THAT_LOOKS_LIKE_THIS since this is a defined value


&gt; +    if control_statement and matched.group(2) != &apos;=&apos;:
&gt; +        return
&gt; +
&gt; +    identifier = matched.group(1)

It would be nice to use named groups.

&gt; +    # Remove &quot;m_&quot; and &quot;s_&quot; to alow them.

typo: alow

&gt; +    modified_identifier = re.sub(r&apos;(?:^|(?&lt;=::))[ms]_&apos;, &apos;&apos;, identifier)
&gt; +    if modified_identifier.find(&apos;_&apos;) &gt;= 0:
&gt; +        error(filename, line_number, &apos;readability/naming&apos;, 4, identifier + &quot; is unallowed naming. Don&apos;t use underscores in your identifier names.&quot;)

s/unallowed naming/incorrectly named/

I expected to see a loop here that checked each identifier but I don&apos;t see it. How does this code check the following?
  myFunction(int variable1, int another_variable)
  int variable1, another_variable;
  int first_variable, secondVariable;
etc.

&gt; diff --git a/WebKitTools/Scripts/modules/cpp_style_unittest.py b/WebKitTools/Scripts/modules/cpp_style_unittest.py

&gt; +        self.assert_lint(&apos;short _length;&apos;,
&gt; +                         &apos;_length&apos; + name_error_message)

What about a test for length_ as well?

&gt; +        self.assert_lint(&apos;const int UNDER_SCORE;&apos;,
&gt; +                         &apos;UNDER_SCORE&apos; + name_error_message)

Given how simple the regex matching is. I think that allowing NAMES_LIKE_THIS is fine. People rarely make that mistake and it is a valid name for a #define&apos;d item.


&gt; +        self.assert_lint(&apos;static inline const char const &amp; const under_score;&apos;,

&amp; is in the wrong place.

&gt; +        self.assert_lint(&apos;WTF::Vector&lt;WTF::RefPtr&lt;const RenderObject * const&gt; &gt; under_score;&apos;,

The * is in the wrong place.

&gt; +        self.assert_lint(&apos;while (foo &amp; under_score) {&apos;, &apos;&apos;)

Ideally this would produce an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168156</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-02 14:02:07 -0800</bug_when>
    <thetext>Two more comments:
1. It would be great if this only flagged the first instance of a particular identifier (in a given file) to avoid lots of warnings for the same identifier and to avoid giving a warning when someone is fixing some code and just using a variable that was already in the file.

2. Please run this on existing code (if you haven&apos;t already) and verify that it doesn&apos;t give false alarms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168359</commentid>
    <comment_count>10</comment_count>
      <attachid>44229</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-03 04:39:52 -0800</bug_when>
    <thetext>Created attachment 44229
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168361</commentid>
    <comment_count>11</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-03 04:40:29 -0800</bug_when>
    <thetext>Thanks for the detailed comments! It helped me a lot.

I think I addressed all small issues such as typo, variable names, and
wrong English. Also, I wrote more comments, sorry for poor comments in
the previous patch.

It was very bad that I didn&apos;t write docstring which kind of
identifiers the function I added will check, sorry. The function I
added only checks identifiers in their declaration. If we check the
use of identifiers, it would be very difficult to avoid false alarms
because there would be several identifiers which violates our style
guide in libraries we are using. I also wrote this in the docstring.

I think this decision can be objected. If the checker complains about
the use of wrongly named symbols, we will have more chance to fix
them when we are just using them. However, I think the benefit to
reduce the risk of false alarming for third-party&apos;s variables wins the
benefit of more warnings. Also, we may need to add some exception
lists for static_cast or something like this. What do you think?

&gt; Why not just avoid flagging TEXT_THAT_LOOKS_LIKE_THIS since this is
&gt; a defined value

At first, I considered this solution, but I imagined there may be
global variables which has name_like_this in third-party libraries.
So, I&apos;m guessing we need check like this anyway.

&gt; I expected to see a loop here that checked each identifier but I don&apos;t see it.
&gt; How does this code check the following?
&gt;   myFunction(int variable1, int another_variable)
&gt;   int variable1, another_variable;
&gt;   int first_variable, secondVariable;
&gt; etc.

Oops, I completely forgot about the latter two cases, and I didn&apos;t
implement the first one because this seemed to be a bit more
difficult and this case would be not so common like errors in local
variables. Anyway, I&apos;ve implemented both cases and added test cases.

&gt; &gt; +        self.assert_lint(&apos;while (foo &amp; under_score) {&apos;, &apos;&apos;)
&gt;
&gt; Ideally this would produce an error.

This test is intended to check a global variables in third-party
library isn&apos;t warned. I renamed &quot;under_score&quot; to
&quot;value_in_thirdparty_library&quot; to describe the intention clearly.

&gt; 1. It would be great if this only flagged the first instance of a
&gt; particular identifier (in a given file) to avoid lots of warnings for
&gt; the same identifier and to avoid giving a warning when someone is
&gt; fixing some code and just using a variable that was already in the
&gt; file.

As the function only checks declaration, I think the warnings won&apos;t be
so noisy without this.

&gt; 2. Please run this on existing code (if you haven&apos;t already) and
&gt; verify that it doesn&apos;t give false alarms.

Yes, I&apos;m running the script for WebCore/*/*.{cpp,h} to check this.
This produces 494 warnings now and I don&apos;t see any false alarms in the
list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168362</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 04:44:54 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44229 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168442</commentid>
    <comment_count>13</comment_count>
      <attachid>44252</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-03 09:53:38 -0800</bug_when>
    <thetext>Created attachment 44252
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168443</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 09:56:00 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44252 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168444</commentid>
    <comment_count>15</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-03 09:57:26 -0800</bug_when>
    <thetext>David suggested I should use cache mechanism for re.sub and re.subn. I updated
my patch so now it uses the cache.

I re-ran the unittest and there were no failures. I also confirmed that this doesn&apos;t change the result for WebCore/*/*.{cpp,h}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168507</commentid>
    <comment_count>16</comment_count>
      <attachid>44252</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-12-03 12:45:54 -0800</bug_when>
    <thetext>Comment on attachment 44252
Patch v3

Looks good. I&apos;ve noted a few things that you may want to consider changing when landing but none are critical.

&gt; diff --git a/WebKitTools/Scripts/modules/cpp_style.py b/WebKitTools/Scripts/modules/cpp_style.py
&gt; +def check_identifier_name_in_declaration(filename, line_number, line, error):
&gt; +    &quot;&quot;&quot;Checks if identifier names contain any underscores.
&gt; +
&gt; +    As identifiers in libraries we are using have a bunch of
&gt; +    underscores, we only warn the declarations of identifiers and

s/warn/warn about/


&gt; +      error: The function to call with any errors found.
&gt; +    &quot;&quot;&quot;
&gt; +    if match(&apos;\s*return&apos;, line):

Should there be a \b after return?

&gt; +    # Convert &quot;long long&quot;, &quot;long double&quot;, and &quot;long long int&quot; to
&gt; +    # simple types, but don&apos;t remove simple &quot;long&quot;.
&gt; +    line = sub(r&apos;long (?:long )?(?=long|double|int)&apos;, &apos;&apos;, line)

I&apos;m not sure why this uses the non-group form of parenthesis (and the same comment goes for other places especially now that the code uses named groups). (The code doesn&apos;t need the group, but putting in the ?: just introduces more visual noise for me at least.)

&gt; +    line = sub(r&apos;^\s*for\s*\(&apos;, &apos;&apos;, line)
&gt; +    line, control_statement = subn(r&apos;^\s*(?:while|else if|if|switch)\s*\(&apos;, &apos;&apos;, line)

I think qt uses foreach as well but it is probably fine to leave it as unsupported for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168677</commentid>
    <comment_count>17</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-03 23:42:32 -0800</bug_when>
    <thetext>Committed r51682: &lt;http://trac.webkit.org/changeset/51682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168687</commentid>
    <comment_count>18</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-04 00:03:59 -0800</bug_when>
    <thetext>Thanks for your review. I landed my patch with the following changes.

&gt; s/warn/warn about/

Fixed.

&gt; Should there be a \b after return?

Ah, nice catch. Fixed, thanks! I also added a test case for this:

        self.assert_lint(&apos;return_t under_score;&apos;,
                         &apos;under_score&apos; + name_error_message)

&gt; I&apos;m not sure why this uses the non-group form of parenthesis (and the same
&gt; comment goes for other places especially now that the code uses named groups).
&gt; (The code doesn&apos;t need the group, but putting in the ?: just introduces more
&gt; visual noise for me at least.)

This is my habit because using (?:) is slightly faster than (). As I agree this is less readable and this is inconsistent with other code in this file, I remove them.

&gt; &gt; +    line = sub(r&apos;^\s*for\s*\(&apos;, &apos;&apos;, line)
&gt; &gt; +    line, control_statement = subn(r&apos;^\s*(?:while|else if|if|switch)\s*\(&apos;, &apos;&apos;, line)
&gt; 
&gt; I think qt uses foreach as well but it is probably fine to leave it as
&gt; unsupported for now.

It seems foreach isn&apos;t so common. Please let me leave it as is.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44148</attachid>
            <date>2009-12-02 08:08:48 -0800</date>
            <delta_ts>2009-12-02 08:09:56 -0800</delta_ts>
            <desc>Incorrect code in WebGLRenderingContext.cpp</desc>
            <filename>bug-32051-20091203010846.patch</filename>
            <type>text/plain</type>
            <size>2131</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA5ZDdjOS4uNzhhNTcwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0xMi0wMSAgRGF2aWQgTGV2aW4g
IDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CisKKyAgICAgICAgSW5jb3JyZWN0IGNvZGUgaW4gV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwNDYKKwor
ICAgICAgICBGaXggaW5jb3JyZWN0IGNvZGUgdGhhdCBoYXBwZW5lZCB0byB3b3JrLiAhPSBoYXMg
aGlnaGVyIHByZWNlbmRlbmNlIHRoYW4gJi4KKyAgICAgICAgVGhlIHNpbXBsZXN0IGZpeCBpcyB0
byByZW1vdmUgdGhlICIhPSAwIiB3aGljaCB2aW9sYXRlcyBXZWJLaXQgc3R5bGUKKyAgICAgICAg
Z3VpZGVsaW5lcyBhbnl3YXkuCisKKyAgICAgICAgQWxzbyBhZGRlZCBwZXJpb2RzIHRvIGZldyBj
b21tZW50cyBpbiB0aGUgc2FtZSBmdW5jdGlvbi4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZhbGlkYXRlSW5kZXhBcnJheSk6CisKIDIwMDktMTItMDEgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IDMyMjIyZDQuLmExOWQ1YzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTU3NywxMSArNTc3LDExIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZUluZGV4QXJyYXkodW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQg
bG9uCiAgICAgdW5zaWduZWQgbG9uZyB1b2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4ob2Zmc2V0KTsKICAgICAKICAgICBpZiAodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfU0hPUlQpIHsKLSAgICAgICAgLy8gRm9yIGFuIHVuc2lnbmVkIHNob3J0IGFycmF5LCBv
ZmZzZXQgbXVzdCBiZSBkaXZpc2libGUgYnkgMiBmb3IgYWxpZ25tZW50IHJlYXNvbnMKLSAgICAg
ICAgaWYgKHVvZmZzZXQgJiAxICE9IDApCisgICAgICAgIC8vIEZvciBhbiB1bnNpZ25lZCBzaG9y
dCBhcnJheSwgb2Zmc2V0IG11c3QgYmUgZGl2aXNpYmxlIGJ5IDIgZm9yIGFsaWdubWVudCByZWFz
b25zLgorICAgICAgICBpZiAodW9mZnNldCAmIDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAotICAgICAgICAvLyBNYWtlIHVvZmZzZXQgYW4gZWxlbWVudCBvZmZzZXQKKyAg
ICAgICAgLy8gTWFrZSB1b2Zmc2V0IGFuIGVsZW1lbnQgb2Zmc2V0LgogICAgICAgICB1b2Zmc2V0
IC89IDI7CiAgICAgCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbiA9IG1fYm91bmRFbGVtZW50QXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSKSAvIDI7CkBAIC02MDcsNyArNjA3LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlSW5kZXhBcnJheSh1bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb24KICAg
ICAgICAgfQogICAgIH0gICAgCiAgICAgICAgIAotICAgIC8vIFRoZW4gc2V0IHRoZSBsYXN0IGlu
ZGV4IGluIHRoZSBpbmRleCBhcnJheSBhbmQgbWFrZSBzdXJlIGl0IGlzIHZhbGlkCisgICAgLy8g
VGhlbiBzZXQgdGhlIGxhc3QgaW5kZXggaW4gdGhlIGluZGV4IGFycmF5IGFuZCBtYWtlIHN1cmUg
aXQgaXMgdmFsaWQuCiAgICAgbnVtRWxlbWVudHMgPSBsYXN0SW5kZXggKyAxOwogICAgIHJldHVy
biBudW1FbGVtZW50cyA+IDA7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44149</attachid>
            <date>2009-12-02 08:10:02 -0800</date>
            <delta_ts>2009-12-03 04:39:46 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-32051-20091203011000.patch</filename>
            <type>text/plain</type>
            <size>9757</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4ZDNhM2RhLi4wY2U4MTdiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTIt
MDIgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjaGVjay13ZWJraXQtc3R5bGUg
c2hvdWxkIGNoZWNrIGZvciBjYW1lbENhc2UgdmFyaWFibGUgbmFtZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDUxCisKKyAgICAgICAgKiBTY3Jp
cHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBf
c3R5bGVfdW5pdHRlc3QucHk6CisKIDIwMDktMTItMDEgIFlhYXIgU2Nobml0bWFuICA8eWFhckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgYnVpbGQtd2Via2l0OiBSZW1vdmUgZmxleCxiaXNvbixn
cGVyZiBjaGVjayBmb3IgY2hyb21pdW0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9jcHBfc3R5bGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0
eWxlLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOTkwZmNmZS4uODIw
OWRjOAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHkKQEAgLTEzMCw2ICsxMzAs
NyBAQCBfRVJST1JfQ0FURUdPUklFUyA9ICcnJ1wKICAgICByZWFkYWJpbGl0eS9mdW5jdGlvbgog
ICAgIHJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50CiAgICAgcmVhZGFiaWxpdHkvbXVsdGls
aW5lX3N0cmluZworICAgIHJlYWRhYmlsaXR5L25hbWluZwogICAgIHJlYWRhYmlsaXR5L251bGwK
ICAgICByZWFkYWJpbGl0eS9zdHJlYW1zCiAgICAgcmVhZGFiaWxpdHkvdG9kbwpAQCAtMjYxNiw2
ICsyNjE3LDQ4IEBAIGRlZiBjaGVja19sYW5ndWFnZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxp
bmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgaW5jbHVkZV9zCiAgICAgICAgICAgICAgICdodHRw
Oi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnht
bCNOYW1lc3BhY2VzJwogICAgICAgICAgICAgICAnIGZvciBtb3JlIGluZm9ybWF0aW9uLicpCiAK
KyAgICBjaGVja19pZGVudGlmaWVyX25hbWUoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBl
cnJvcikKKworCitkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgbGluZSwgZXJyb3IpOgorICAgICIiIkNoZWNrcyBpZiBpZGVudGlmaWVyIG5hbWVzIGRvbid0
IGNvbnRhaW4gYW4gdW5kZXJzY29yZS4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVy
IG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgbGluZTogVGhlIGxpbmUgb2YgY29kZSB0byBj
aGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMg
Zm91bmQuCisgICAgIiIiCisgICAgIyBSZW1vdmUgc3RvcmFnZSBzZXBjaWZpZXJzLCAuLi4KKyAg
ICBsaW5lID0gcmUuc3ViKHInKD86dW5zaWduZWR8c2lnbmVkfGlubGluZXx1c2luZ3xzdGF0aWN8
Y29uc3R8dm9sYXRpbGV8YXV0b3xyZWdpc3RlcnxleHRlcm58dHlwZWRlZnxlbHNlfHJlc3RyaWN0
fHN0cnVjdHxjbGFzc3x2aXJ0dWFsfHJldHVybikgJywgJycsIGxpbmUpCisKKyAgICAjIFJlbW92
ZSBhbGwgdGVtcGxhdGUgcGFyYW1ldGVycyBieSByZW1vdmluZyBtYXRjaGluZyA8IGFuZCA+Lgor
ICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUsIHJlbW92ZWRfbnVtYmVycyA9IHJlLnN1Ym4o
cic8W1x3XHMqJjpdKz4nLCAnJywgbGluZSkKKyAgICAgICAgaWYgbm90IHJlbW92ZWRfbnVtYmVy
czoKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAjIFJlbW92ZSBmb3Igc3RhdGVtZW50LgorICAg
IGxpbmUgPSByZS5zdWIocideXHMqZm9yXHMqXCgnLCAnJywgbGluZSkKKyAgICAjIFJlbW92ZSBv
dGhlciBjb250cm9sIHN0YXRlbWVudHMuCisgICAgbGluZSwgY29udHJvbF9zdGF0ZW1lbnQgPSBy
ZS5zdWJuKHInXlxzKig/OndoaWxlfGlmfHN3aXRjaClccypcKCcsICcnLCBsaW5lKQorICAgICMg
RGV0ZWN0IHZhcmlhYmxlIGFuZCBmdW5jdGlvbnMuCisgICAgbWF0Y2hlZCA9IG1hdGNoKHInXHMq
XHcoPzpbXHc6XXxccypbKiZdKStccysoW1x3Ol0rKVxzKihbOyg9W10pJywgbGluZSkKKyAgICBp
ZiBub3QgbWF0Y2hlZDoKKyAgICAgICAgcmV0dXJuCisgICAgIyBJZiB3ZSByZW1vdmVkIGEgbm9u
LWZvci1jb250cm9sIHN0YXRlbWVudCwgdGhlIGNoYXJhY3RlciBhZnRlcgorICAgICMgdGhlIGlk
ZW50aWZpZXIgc2hvdWxkIGJlICc9Jy4gV2l0aCB0aGlzIHJ1bGUsIHdlIGNhbiBhdm9pZCB0aGUK
KyAgICAjIGNhc2UgbGlrZSAiaWYgKHZhbCAmIElOVF9NQVgpIHsiLgorICAgIGlmIGNvbnRyb2xf
c3RhdGVtZW50IGFuZCBtYXRjaGVkLmdyb3VwKDIpICE9ICc9JzoKKyAgICAgICAgcmV0dXJuCisK
KyAgICBpZGVudGlmaWVyID0gbWF0Y2hlZC5ncm91cCgxKQorCisgICAgIyBSZW1vdmUgIm1fIiBh
bmQgInNfIiB0byBhbG93IHRoZW0uCisgICAgbW9kaWZpZWRfaWRlbnRpZmllciA9IHJlLnN1Yihy
Jyg/Ol58KD88PTo6KSlbbXNdXycsICcnLCBpZGVudGlmaWVyKQorICAgIGlmIG1vZGlmaWVkX2lk
ZW50aWZpZXIuZmluZCgnXycpID49IDA6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L25hbWluZycsIDQsIGlkZW50aWZpZXIgKyAiIGlzIHVuYWxsb3dl
ZCBuYW1pbmcuIERvbid0IHVzZSB1bmRlcnNjb3JlcyBpbiB5b3VyIGlkZW50aWZpZXIgbmFtZXMu
IikKKwogCiBkZWYgY2hlY2tfY19zdHlsZV9jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGlu
ZSwgcmF3X2xpbmUsIGNhc3RfdHlwZSwgcGF0dGVybiwKICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3IpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHls
ZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5p
dHRlc3QucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3ZjU0MDNmLi40
Mjk1Njk3Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRl
c3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVz
dC5weQpAQCAtOTM0LDE1ICs5MzQsMTUgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVz
dEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgZG91Ymxlc2l6ZVtzb21lX3Zh
ciAqIDJdOycsIGVycm1zZykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbYWZ1bmN0
aW9uKCldOycsIGVycm1zZykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbZnVuY3Rp
b24oa01heEZvb0JhcnMpXTsnLCBlcnJtc2cpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Jv
b2wgYV9saXN0W2l0ZW1zXy0+c2l6ZSgpXTsnLCBlcnJtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2Jvb2wgYUxpc3RbaXRlbXNfLT5zaXplKCldOycsIGVycm1zZykKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnbmFtZXNwYWNlOjpUeXBlIGJ1ZmZlcltsZW4rMV07JywgZXJybXNnKQog
CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWzY0XTsnLCAnJykKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnaW50IGFbMHhGRl07JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCBmaXJzdFsyNTZdLCBzZWNvbmRbMjU2XTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnaW50IGFycmF5X25hbWVba0NvbXBpbGVUaW1lQ29uc3RhbnRdOycsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYXJyYXlOYW1lW2tDb21waWxlVGltZUNvbnN0YW50
XTsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY2hhciBidWZbc29tZW5hbWVzcGFj
ZTo6a0J1ZlNpemVdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYXJyYXlf
bmFtZVtBTExfQ0FQU107JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhcnJh
eU5hbWVbQUxMX0NBUFNdOycsICcnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdBQ2xhc3Mg
YXJyYXkxW2Zvbzo6YmFyOjpBTExfQ0FQU107JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCBhW2tNYXhTdHJMZW4gKyAxXTsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IGFbc2l6ZW9mKGZvbyldOycsICcnKQpAQCAtMTUyMiwxNCArMTUyMiwxNCBAQCBjbGFz
cyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAKICAgICBkZWYgdGVzdF9pbmRlbnQo
c2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBpbnQgbm9pbmRlbnQ7Jywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBpbnQgZm91cl9zcGFjZV9pbmRlbnQ7
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBpbnQgb25lX3NwYWNlX2luZGVudDsn
LAorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgaW50IGZvdXJTcGFjZUluZGVudDsnLCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGludCBvbmVTcGFjZUluZGVudDsnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3Rh
cnQuICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNl
IGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnICAgaW50IHRocmVlX3NwYWNlX2luZGVudDsnLAorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCcgICBpbnQgdGhyZWVTcGFjZUluZGVudDsnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNl
L2luZGVudF0gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGNoYXIqIG9uZV9zcGFj
ZV9pbmRlbnQgPSAicHVibGljOiI7JywKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGNoYXIq
IG9uZVNwYWNlSW5kZW50ID0gInB1YmxpYzoiOycsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
J1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PyAgW3doaXRlc3BhY2Uv
aW5kZW50XSBbM10nKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgcHVibGljOicsICcnKQpA
QCAtMTk2Miw3ICsxOTYyLDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2Up
OgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdkb3VibGUgY29uc3Qgc3RhdGljIGZvbyA9IDIu
MDsnLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3Jf
bWVzc2FnZSkKIAotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd1aW50NjQgdHlwZWRlZiB1bnNp
Z25lZF9sb25nX2xvbmc7JywKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndWludDY0IHR5cGVk
ZWYgdW5zaWduZWRMb25nTG9uZzsnLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0
b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKIAogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdp
bnQgcmVnaXN0ZXIgZm9vID0gMDsnLApAQCAtMjA0Niw2ICsyMDQ2LDcgQEAgY2xhc3MgQ3BwU3R5
bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICdDaGFu
Z2luZyBwb2ludGVyIGluc3RlYWQgb2YgdmFsdWUgKG9yIHVudXNlZCB2YWx1ZSBvZiAnCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ29wZXJhdG9yKikuICBbcnVudGltZS9pbnZhbGlkX2luY3Jl
bWVudF0gWzVdJykKIAorCiBjbGFzcyBDbGVhbnNlZExpbmVzVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKICAgICAgICAgbGluZXMgPSBbJ0xpbmUgMScs
CkBAIC0zNTkwLDggKzM1OTEsNjMgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVz
dEJhc2UpOgogICAgICAgICAgICAgJ2Zvby5oJykKIAogICAgIGRlZiB0ZXN0X25hbWVzKHNlbGYp
OgotICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICAgICAgcGFzcworICAgICAg
ICBuYW1lX2Vycm9yX21lc3NhZ2UgPSAiIGlzIHVuYWxsb3dlZCBuYW1pbmcuIERvbid0IHVzZSB1
bmRlcnNjb3JlcyBpbiB5b3VyIGlkZW50aWZpZXIgbmFtZXMuICBbcmVhZGFiaWxpdHkvbmFtaW5n
XSBbNF0iCisKKyAgICAgICAgIyBCYXNpYyBjYXNlcyBmcm9tIFdlYktpdCBzdHlsZSBndWlkZS4K
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RydWN0IERhdGE7JywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3NpemVfdCBidWZmZXJTaXplOycsICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdjbGFzcyBIVE1MRG9jdW1lbnQ7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ1N0cmluZyBtaW1lVHlwZSgpOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdzaXplX3QgYnVmZmVyX3NpemU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYnVmZmVy
X3NpemUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdz
aG9ydCBtX2xlbmd0aDsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc2hvcnQgX2xl
bmd0aDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdfbGVuZ3RoJyArIG5hbWVfZXJyb3Jf
bWVzc2FnZSkKKworICAgICAgICAjIFBvaW50ZXJzLCByZWZlcmVuY2VzLCBmdW5jdGlvbnMsIHRl
bXBsYXRlcywgYW5kIGFkamVjdGl2ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIq
IHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyAr
IG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY29uc3QgaW50
IFVOREVSX1NDT1JFOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1VOREVSX1NDT1JFJyAr
IG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIGlu
bGluZSBjb25zdCBjaGFyIGNvbnN0ICYgY29uc3QgdW5kZXJfc2NvcmU7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHVuZGVyX3Njb3JlOycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVz
c2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGZ1bmNfbmFtZSgpOycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Z1bmNfbmFtZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxSZW5kZXJPYmplY3QqPiB1bmRlcl9zY29y
ZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dURjo6VmVjdG9yPFdURjo6UmVm
UHRyPGNvbnN0IFJlbmRlck9iamVjdCAqIGNvbnN0PiA+IHVuZGVyX3Njb3JlOycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKwor
ICAgICAgICAjIERlY2xhcmF0aW9ucyBpbiBjb250cm9sIHN0YXRlbWVudC4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnaWYgKGludCB1bmRlcl9zY29yZSA9IDQyKSB7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGludCB1bmRlcl9zY29yZSA9IDQyOyBjb25kOyBpKysp
IHsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbyAmIHVuZGVy
X3Njb3JlID0gNDIpIHsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScg
KyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoZm9v
ICogdW5kZXJfc2NvcmUgPSBwOyBjb25kOyBpKyspIHsnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ2ZvciAoZm9vICogdW5kZXJfc2NvcmU7IGNvbmQ7IGkrKykgeycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbyAmIHVuZGVyX3Njb3JlKSB7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlIChmb28gKiB1bmRlcl9zY29yZSkgeycs
ICcnKQorCisgICAgICAgICMgTW9yZSBtZW1iZXIgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBTb21lQ2xhc3M6OnNfdmFsaWROYW1lJywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBtX3VuZGVyX3Njb3JlOycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ21fdW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgU29tZUNsYXNzOjpzX3VuZGVyX3Njb3JlID0g
MDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTb21lQ2xhc3M6OnNfdW5kZXJfc2NvcmUn
ICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgU29t
ZUNsYXNzOjp1bmRlcl9zY29yZSA9IDA7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU29t
ZUNsYXNzOjp1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAgIyBP
dGhlciBzdGF0ZW1lbnRzLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdyZXR1cm4gSU5UX01B
WDsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZ290byB1bmRlcl9zY29yZTsnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3Nh
Z2UpCiAKICAgICBkZWYgdGVzdF9vdGhlcihzZWxmKToKICAgICAgICAgIyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44229</attachid>
            <date>2009-12-03 04:39:52 -0800</date>
            <delta_ts>2009-12-03 09:53:32 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-32051-20091203213950.patch</filename>
            <type>text/plain</type>
            <size>14523</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4ZDNhM2RhLi42NmMwNDMyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTIt
MDMgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjaGVjay13ZWJraXQtc3R5bGUg
c2hvdWxkIGNoZWNrIGZvciBjYW1lbENhc2UgdmFyaWFibGUgbmFtZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDUxCisKKyAgICAgICAgKiBTY3Jp
cHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBf
c3R5bGVfdW5pdHRlc3QucHk6CisKIDIwMDktMTItMDEgIFlhYXIgU2Nobml0bWFuICA8eWFhckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgYnVpbGQtd2Via2l0OiBSZW1vdmUgZmxleCxiaXNvbixn
cGVyZiBjaGVjayBmb3IgY2hyb21pdW0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9jcHBfc3R5bGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0
eWxlLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOTkwZmNmZS4uNzg0
MjQzNwotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHkKQEAgLTEzMCw2ICsxMzAs
NyBAQCBfRVJST1JfQ0FURUdPUklFUyA9ICcnJ1wKICAgICByZWFkYWJpbGl0eS9mdW5jdGlvbgog
ICAgIHJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50CiAgICAgcmVhZGFiaWxpdHkvbXVsdGls
aW5lX3N0cmluZworICAgIHJlYWRhYmlsaXR5L25hbWluZwogICAgIHJlYWRhYmlsaXR5L251bGwK
ICAgICByZWFkYWJpbGl0eS9zdHJlYW1zCiAgICAgcmVhZGFiaWxpdHkvdG9kbwpAQCAtMjYxNiw2
ICsyNjE3LDEwNiBAQCBkZWYgY2hlY2tfbGFuZ3VhZ2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGluY2x1ZGVfcwogICAgICAgICAgICAgICAnaHR0
cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54
bWwjTmFtZXNwYWNlcycKICAgICAgICAgICAgICAgJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKQog
CisgICAgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgbGluZSwgZXJyb3IpCisKKworZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9k
ZWNsYXJhdGlvbihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGxpbmUsIGVycm9yKToKKyAgICAiIiJD
aGVja3MgaWYgaWRlbnRpZmllciBuYW1lcyBjb250YWluIGFueSB1bmRlcnNjb3Jlcy4KKworICAg
IEFzIGlkZW50aWZpZXJzIGluIGxpYnJhcmllcyB3ZSBhcmUgdXNpbmcgaGF2ZSBhIGJ1bmNoIG9m
CisgICAgdW5kZXJzY29yZXMsIHdlIG9ubHkgd2FybiB0aGUgZGVjbGFyYXRpb25zIG9mIGlkZW50
aWZpZXJzIGFuZAorICAgIGRvbid0IGNoZWNrIHVzZSBvZiBpZGVudGlmaWVycy4KKworICAgIEFy
Z3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAg
IGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgbGlu
ZTogVGhlIGxpbmUgb2YgY29kZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24g
dG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgIyBXZSBkb24ndCBj
aGVjayBhIHJldHVybiBzdGF0ZW1lbnQuCisgICAgaWYgbWF0Y2goJ1xzKnJldHVybicsIGxpbmUp
OgorICAgICAgICByZXR1cm4KKworICAgICMgQmFzaWNhbGx5LCBhIGRlY2xhcmF0aW9uIGlzIGEg
dHlwZSBuYW1lIGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2VzCisgICAgIyBmb2xsb3dlZCBieSBhbiBp
ZGVudGlmaWVyLiBUaGUgdHlwZSBuYW1lIGNhbiBiZSBjb21wbGljYXRlZAorICAgICMgZHVlIHRv
IHR5cGUgYWRqZWN0aXZlcyBhbmQgdGVtcGxhdGVzLiBXZSByZW1vdmUgdGhlbSBmaXJzdCB0bwor
ICAgICMgc2ltcGxpZnkgdGhlIHByb2Nlc3MgdG8gZmluZCBkZWNsYXJhdGlvbnMgb2YgaWRlbnRp
ZmllcnMuCisKKyAgICAjIENvbnZlcnQgImxvbmcgbG9uZyIsICJsb25nIGRvdWJsZSIsIGFuZCAi
bG9uZyBsb25nIGludCIgdG8KKyAgICAjIHNpbXBsZSB0eXBlcywgYnV0IGRvbid0IHJlbW92ZSBz
aW1wbGUgImxvbmciLgorICAgIGxpbmUgPSByZS5zdWIocidsb25nICg/OmxvbmcgKT8oPz1sb25n
fGRvdWJsZXxpbnQpJywgJycsIGxpbmUpCisgICAgbGluZSA9IHJlLnN1YihyJ1xiKD86dW5zaWdu
ZWR8c2lnbmVkfGlubGluZXx1c2luZ3xzdGF0aWN8Y29uc3R8dm9sYXRpbGV8YXV0b3xyZWdpc3Rl
cnxleHRlcm58dHlwZWRlZnxyZXN0cmljdHxzdHJ1Y3R8Y2xhc3N8dmlydHVhbCkoPz1cVyknLCAn
JywgbGluZSkKKworICAgICMgUmVtb3ZlIGFsbCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGJ5IHJlbW92
aW5nIG1hdGNoaW5nIDwgYW5kID4uCisgICAgIyBMb29wIHVudGlsIG5vIHRlbXBsYXRlcyBhcmUg
cmVtb3ZlZCB0byByZW1vdmUgbmVzdGVkIHRlbXBsYXRlcy4KKyAgICB3aGlsZSBUcnVlOgorICAg
ICAgICBsaW5lLCBudW1iZXJfb2ZfcmVwbGFjZW1lbnRzID0gcmUuc3VibihyJzwoPzpbXHdcczpd
fDo6KStccypbKiZdKlxzKj4nLCAnJywgbGluZSkKKyAgICAgICAgaWYgbm90IG51bWJlcl9vZl9y
ZXBsYWNlbWVudHM6CisgICAgICAgICAgICBicmVhaworCisgICAgIyBEZWNsYXJhdGlvbnMgb2Yg
bG9jYWwgdmFyaWFibGVzIGNhbiBiZSBpbiBjb25kaXRpb24gZXhwcmVzc2lvbnMKKyAgICAjIG9m
IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzIChlLmcuLCAiaWYgKFJlbmRlck9iamVjdCogcCA9IG8t
PnBhcmVudCgpKSIpLgorICAgICMgV2UgcmVtb3ZlIHRoZSBrZXl3b3JkcyBhbmQgdGhlIGZpcnN0
IHBhcmVudGhlc2lzLgorICAgICMKKyAgICAjIERlY2xhcmF0aW9ucyBpbiAid2hpbGUiLCAiaWYi
LCBhbmQgInN3aXRjaCIgYXJlIGRpZmZlcmVudCBmcm9tCisgICAgIyBvdGhlciBkZWNsYXJhdGlv
bnMgaW4gdHdvIGFzcGVjdHM6CisgICAgIworICAgICMgLSBUaGVyZSBjYW4gYmUgb25seSBvbmUg
ZGVjbGFyYXRpb24gYmV0d2VlbiB0aGUgcGFyZW50aGVzZXMuCisgICAgIyAgIChpLmUuLCB5b3Ug
Y2Fubm90IHdyaXRlICJpZiAoaW50IGkgPSAwLCBqID0gMSkge30iKQorICAgICMgLSBUaGUgdmFy
aWFibGUgbXVzdCBiZSBpbml0aWFsaXplZC4KKyAgICAjICAgKGkuZS4sIHlvdSBjYW5ub3Qgd3Jp
dGUgImlmIChpbnQgaSkge30iKQorICAgICMKKyAgICAjIGFuZCB3ZSB3aWxsIG5lZWQgZGlmZmVy
ZW50IHRyZWF0bWVudHMgZm9yIHRoZW0uCisgICAgbGluZSA9IHJlLnN1YihyJ15ccypmb3Jccypc
KCcsICcnLCBsaW5lKQorICAgIGxpbmUsIGNvbnRyb2xfc3RhdGVtZW50ID0gcmUuc3VibihyJ15c
cyooPzp3aGlsZXxlbHNlIGlmfGlmfHN3aXRjaClccypcKCcsICcnLCBsaW5lKQorCisgICAgIyBE
ZXRlY3QgdmFyaWFibGUgYW5kIGZ1bmN0aW9ucy4KKyAgICB0eXBlX3JlZ2V4cCA9IHInXHcoPzpb
XHddfFxzKlsqJl1ccyp8OjopKycKKyAgICBpZGVudGlmaWVyX3JlZ2V4cCA9IHInKD9QPGlkZW50
aWZpZXI+W1x3Ol0rKScKKyAgICBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllcl9yZWdleHAgPSBy
Jyg/UDxjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllcj5bWzsoKT0sXSknCisgICAgZGVjbGFyYXRp
b25fd2l0aG91dF90eXBlX3JlZ2V4cCA9IHInXHMqJyArIGlkZW50aWZpZXJfcmVnZXhwICsgcidc
cyonICsgY2hhcmFjdGVyX2FmdGVyX2lkZW50aWZpZXJfcmVnZXhwCisgICAgZGVjbGFyYXRpb25f
d2l0aF90eXBlX3JlZ2V4cCA9IHInXHMqJyArIHR5cGVfcmVnZXhwICsgcidccycgKyBkZWNsYXJh
dGlvbl93aXRob3V0X3R5cGVfcmVnZXhwCisgICAgaXNfZnVuY3Rpb25fYXJndW1lbnRzID0gRmFs
c2UKKyAgICBudW1iZXJfb2ZfaWRlbnRpZmllcnMgPSAwCisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgIyBJZiB3ZSBhcmUgc2VlaW5nIHRoZSBmaXJzdCBpZGVudGlmaWVyIG9yIGFyZ3VtZW50cyBv
ZiBhCisgICAgICAgICMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBhIHR5cGUgbmFtZSBiZWZv
cmUgYW4gaWRlbnRpZmllci4KKyAgICAgICAgaWYgbm90IG51bWJlcl9vZl9pZGVudGlmaWVycyBv
ciBpc19mdW5jdGlvbl9hcmd1bWVudHM6CisgICAgICAgICAgICBkZWNsYXJhdGlvbl9yZWdleHAg
PSBkZWNsYXJhdGlvbl93aXRoX3R5cGVfcmVnZXhwCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBkZWNsYXJhdGlvbl9yZWdleHAgPSBkZWNsYXJhdGlvbl93aXRob3V0X3R5cGVfcmVnZXhwCisK
KyAgICAgICAgbWF0Y2hlZCA9IG1hdGNoKGRlY2xhcmF0aW9uX3JlZ2V4cCwgbGluZSkKKyAgICAg
ICAgaWYgbm90IG1hdGNoZWQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWRlbnRpZmll
ciA9IG1hdGNoZWQuZ3JvdXAoJ2lkZW50aWZpZXInKQorICAgICAgICBjaGFyYWN0ZXJfYWZ0ZXJf
aWRlbnRpZmllciA9IG1hdGNoZWQuZ3JvdXAoJ2NoYXJhY3Rlcl9hZnRlcl9pZGVudGlmaWVyJykK
KworICAgICAgICAjIElmIHdlIHJlbW92ZWQgYSBub24tZm9yLWNvbnRyb2wgc3RhdGVtZW50LCB0
aGUgY2hhcmFjdGVyIGFmdGVyCisgICAgICAgICMgdGhlIGlkZW50aWZpZXIgc2hvdWxkIGJlICc9
Jy4gV2l0aCB0aGlzIHJ1bGUsIHdlIGNhbiBhdm9pZAorICAgICAgICAjIHdhcm5pbmcgZm9yIGNh
c2VzIGxpa2UgImlmICh2YWwgJiBJTlRfTUFYKSB7Ii4KKyAgICAgICAgaWYgY29udHJvbF9zdGF0
ZW1lbnQgYW5kIGNoYXJhY3Rlcl9hZnRlcl9pZGVudGlmaWVyICE9ICc9JzoKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIGlzX2Z1bmN0aW9uX2FyZ3VtZW50cyA9IGlzX2Z1bmN0aW9uX2Fy
Z3VtZW50cyBvciBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllciA9PSAnKCcKKworICAgICAgICAj
IFJlbW92ZSAibV8iIGFuZCAic18iIHRvIGFsbG93IHRoZW0uCisgICAgICAgIG1vZGlmaWVkX2lk
ZW50aWZpZXIgPSByZS5zdWIocicoPzpefCg/PD06OikpW21zXV8nLCAnJywgaWRlbnRpZmllcikK
KyAgICAgICAgaWYgbW9kaWZpZWRfaWRlbnRpZmllci5maW5kKCdfJykgPj0gMDoKKyAgICAgICAg
ICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L25hbWluZycsIDQs
IGlkZW50aWZpZXIgKyAiIGlzIGluY29ycmVjdGx5IG5hbWVkLiBEb24ndCB1c2UgdW5kZXJzY29y
ZXMgaW4geW91ciBpZGVudGlmaWVyIG5hbWVzLiIpCisKKyAgICAgICAgIyBUaGVyZSBjYW4gYmUg
b25seSBvbmUgZGVjbGFyYXRpb24gaW4gbm9uLWZvci1jb250cm9sIHN0YXRlbWVudHMuCisgICAg
ICAgIGlmIGNvbnRyb2xfc3RhdGVtZW50OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMg
V2Ugc2hvdWxkIGNvbnRpbnVlIGNoZWNraW5nIGlmIHRoaXMgaXMgYSBmdW5jdGlvbgorICAgICAg
ICAjIGRlY2xhcmF0aW9uIGJlY2F1c2Ugd2UgbmVlZCB0byBjaGVjayBpdHMgYXJndW1lbnRzLgor
ICAgICAgICAjIEFsc28sIHdlIG5lZWQgdG8gY2hlY2sgbXVsdGlwbGUgZGVjbGFyYXRpb25zLgor
ICAgICAgICBpZiBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllciAhPSAnKCcgYW5kIGNoYXJhY3Rl
cl9hZnRlcl9pZGVudGlmaWVyICE9ICcsJzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
IG51bWJlcl9vZl9pZGVudGlmaWVycyArPSAxCisgICAgICAgIGxpbmUgPSBsaW5lW21hdGNoZWQu
ZW5kKCk6XQorCiAKIGRlZiBjaGVja19jX3N0eWxlX2Nhc3QoZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCBsaW5lLCByYXdfbGluZSwgY2FzdF90eXBlLCBwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3Bw
X3N0eWxlX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHls
ZV91bml0dGVzdC5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDdmNTQw
M2YuLmQ3ZDk0OWMKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91
bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlX3Vu
aXR0ZXN0LnB5CkBAIC05MzQsMTUgKzkzNCwxNSBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5
bGVUZXN0QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBkb3VibGVzaXplW3Nv
bWVfdmFyICogMl07JywgZXJybXNnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVth
ZnVuY3Rpb24oKV07JywgZXJybXNnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtm
dW5jdGlvbihrTWF4Rm9vQmFycyldOycsIGVycm1zZykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnYm9vbCBhX2xpc3RbaXRlbXNfLT5zaXplKCldOycsIGVycm1zZykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnYm9vbCBhTGlzdFtpdGVtc18tPnNpemUoKV07JywgZXJybXNnKQogICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCduYW1lc3BhY2U6OlR5cGUgYnVmZmVyW2xlbisxXTsnLCBlcnJt
c2cpCiAKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbNjRdOycsICcnKQogICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVsweEZGXTsnLCAnJykKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnaW50IGZpcnN0WzI1Nl0sIHNlY29uZFsyNTZdOycsICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdpbnQgYXJyYXlfbmFtZVtrQ29tcGlsZVRpbWVDb25zdGFudF07JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhcnJheU5hbWVba0NvbXBpbGVUaW1lQ29u
c3RhbnRdOycsICcnKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyIGJ1Zltzb21lbmFt
ZXNwYWNlOjprQnVmU2l6ZV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBh
cnJheV9uYW1lW0FMTF9DQVBTXTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50
IGFycmF5TmFtZVtBTExfQ0FQU107JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0FD
bGFzcyBhcnJheTFbZm9vOjpiYXI6OkFMTF9DQVBTXTsnLCAnJykKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnaW50IGFba01heFN0ckxlbiArIDFdOycsICcnKQogICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdpbnQgYVtzaXplb2YoZm9vKV07JywgJycpCkBAIC0xNTIyLDE0ICsxNTIyLDE0IEBA
IGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAogICAgIGRlZiB0ZXN0X2lu
ZGVudChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIGludCBub2luZGVu
dDsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGludCBmb3VyX3NwYWNlX2lu
ZGVudDsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGludCBvbmVfc3BhY2VfaW5k
ZW50OycsCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBpbnQgZm91clNwYWNlSW5kZW50
OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgaW50IG9uZVNwYWNlSW5kZW50Oycs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGlu
ZS1zdGFydC4gICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQt
c3BhY2UgaW5kZW50PyAgW3doaXRlc3BhY2UvaW5kZW50XSBbM10nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCcgICBpbnQgdGhyZWVfc3BhY2VfaW5kZW50OycsCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJyAgIGludCB0aHJlZVNwYWNlSW5kZW50OycsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PyAgW3doaXRl
c3BhY2UvaW5kZW50XSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgY2hhciogb25l
X3NwYWNlX2luZGVudCA9ICJwdWJsaWM6IjsnLAorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcg
Y2hhciogb25lU3BhY2VJbmRlbnQgPSAicHVibGljOiI7JywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAgJwogICAgICAgICAg
ICAgICAgICAgICAgICAgICdBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVz
cGFjZS9pbmRlbnRdIFszXScpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBwdWJsaWM6Jywg
JycpCkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0
QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2RvdWJsZSBjb25zdCBzdGF0aWMgZm9v
ID0gMi4wOycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19l
cnJvcl9tZXNzYWdlKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3VpbnQ2NCB0eXBlZGVm
IHVuc2lnbmVkX2xvbmdfbG9uZzsnLAorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd1aW50NjQg
dHlwZWRlZiB1bnNpZ25lZExvbmdMb25nOycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYnVp
bGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCByZWdpc3RlciBmb28gPSAwOycsCkBAIC0yMDQ2LDYgKzIwNDYsNyBAQCBjbGFzcyBD
cHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
J0NoYW5naW5nIHBvaW50ZXIgaW5zdGVhZCBvZiB2YWx1ZSAob3IgdW51c2VkIHZhbHVlIG9mICcK
ICAgICAgICAgICAgICAgICAgICAgICAgICAnb3BlcmF0b3IqKS4gIFtydW50aW1lL2ludmFsaWRf
aW5jcmVtZW50XSBbNV0nKQogCisKIGNsYXNzIENsZWFuc2VkTGluZXNUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgogICAgICAgICBsaW5lcyA9IFsnTGlu
ZSAxJywKQEAgLTM1OTAsOCArMzU5MSw5MyBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwU3R5
bGVUZXN0QmFzZSk6CiAgICAgICAgICAgICAnZm9vLmgnKQogCiAgICAgZGVmIHRlc3RfbmFtZXMo
c2VsZik6Ci0gICAgICAgICMgRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgICAgICBwYXNzCisg
ICAgICAgIG5hbWVfZXJyb3JfbWVzc2FnZSA9ICIgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIERvbid0
IHVzZSB1bmRlcnNjb3JlcyBpbiB5b3VyIGlkZW50aWZpZXIgbmFtZXMuICBbcmVhZGFiaWxpdHkv
bmFtaW5nXSBbNF0iCisKKyAgICAgICAgIyBCYXNpYyBjYXNlcyBmcm9tIFdlYktpdCBzdHlsZSBn
dWlkZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RydWN0IERhdGE7JywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3NpemVfdCBidWZmZXJTaXplOycsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdjbGFzcyBIVE1MRG9jdW1lbnQ7JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1N0cmluZyBtaW1lVHlwZSgpOycsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdzaXplX3QgYnVmZmVyX3NpemU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
YnVmZmVyX3NpemUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdzaG9ydCBtX2xlbmd0aDsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc2hv
cnQgX2xlbmd0aDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdfbGVuZ3RoJyArIG5hbWVf
ZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc2hvcnQgbGVuZ3RoXzsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICdsZW5ndGhfJyArIG5hbWVfZXJyb3JfbWVzc2Fn
ZSkKKworICAgICAgICAjIFBvaW50ZXJzLCByZWZlcmVuY2VzLCBmdW5jdGlvbnMsIHRlbXBsYXRl
cywgYW5kIGFkamVjdGl2ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIqIHVuZGVy
X3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVf
ZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY29uc3QgaW50IFVOREVS
X1NDT1JFOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1VOREVSX1NDT1JFJyArIG5hbWVf
ZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIGlubGluZSBj
b25zdCBjaGFyIGNvbnN0JiBjb25zdCB1bmRlcl9zY29yZTsnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1dlYkNvcmU6OlJlbmRlck9iamVjdCogdW5kZXJfc2NvcmU7JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgZnVuY19uYW1lKCk7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnZnVuY19uYW1lJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPFJlbmRlck9iamVjdCo+IHVuZGVyX3Njb3JlOycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2Fn
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnV1RGOjpWZWN0b3I8V1RGOjpSZWZQdHI8Y29u
c3QgUmVuZGVyT2JqZWN0KiBjb25zdD4gPiB1bmRlcl9zY29yZTsnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ludCB1bmRlcl9zY29yZVtdOycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnc3RydWN0IGRpcmVudCogdW5kZXJfc2NvcmU7JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdsb25nIHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnbG9uZyBsb25nIHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnbG9uZyBkb3VibGUgdW5kZXJfc2NvcmU7JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdsb25nIGxvbmcgaW50IHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKworICAgICAg
ICAjIERlY2xhcmF0aW9ucyBpbiBjb250cm9sIHN0YXRlbWVudC4KKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnaWYgKGludCB1bmRlcl9zY29yZSA9IDQyKSB7JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdlbHNlIGlmIChpbnQgdW5kZXJfc2NvcmUgPSA0MikgeycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChpbnQgdW5kZXJfc2NvcmUgPSA0MjsgY29uZDsg
aSsrKSB7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9l
cnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd3aGlsZSAoZm9vICYgdW5k
ZXJfc2NvcmUgPSBiYXIpIHsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29y
ZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAo
Zm9vICogdW5kZXJfc2NvcmUgPSBwOyBjb25kOyBpKyspIHsnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2ZvciAoZm9vICogdW5kZXJfc2NvcmU7IGNvbmQ7IGkrKykgeycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbyAmIHZhbHVlX2luX3RoaXJkcGFy
dHlfbGlicmFyeSkgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd3aGlsZSAoZm9v
ICogdmFsdWVfaW5fdGhpcmRwYXJ0eV9saWJyYXJ5KSB7JywgJycpCisKKyAgICAgICAgIyBNb3Jl
IG1lbWJlciB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IFNvbWVDbGFzczo6c192YWxpZE5hbWUnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnaW50IG1fdW5kZXJfc2NvcmU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbV91
bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2ludCBTb21lQ2xhc3M6OnNfdW5kZXJfc2NvcmUgPSAwOycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1NvbWVDbGFzczo6c191bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2Up
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBTb21lQ2xhc3M6OnVuZGVyX3Njb3JlID0g
MDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTb21lQ2xhc3M6OnVuZGVyX3Njb3JlJyAr
IG5hbWVfZXJyb3JfbWVzc2FnZSkKKworICAgICAgICAjIE90aGVyIHN0YXRlbWVudHMuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3JldHVybiBJTlRfTUFYOycsICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdnb3RvIHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKworICAgICAgICAjIE11bHRp
cGxlIHZhcmlhYmxlcyBpbiBvbmUgbGluZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9p
ZCBteUZ1bmN0aW9uKGludCB2YXJpYWJsZTEsIGludCBhbm90aGVyX3ZhcmlhYmxlKTsnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICdhbm90aGVyX3ZhcmlhYmxlJyArIG5hbWVfZXJyb3JfbWVz
c2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IHZhcmlhYmxlMSwgYW5vdGhlcl92
YXJpYWJsZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdhbm90aGVyX3ZhcmlhYmxlJyAr
IG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGZpcnN0
X3ZhcmlhYmxlLCBzZWNvbmRWYXJpYWJsZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdm
aXJzdF92YXJpYWJsZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3ZvaWQgbXlfZnVuY3Rpb24oaW50IHZhcmlhYmxlXzEsIGludCB2YXJpYWJsZV8yKTsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnbXlfZnVuY3Rpb24nICsgbmFtZV9lcnJvcl9t
ZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVfMScgKyBuYW1lX2Vy
cm9yX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZV8yJyArIG5h
bWVfZXJyb3JfbWVzc2FnZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoaW50IHZh
cmlhYmxlXzEsIHZhcmlhYmxlXzI7OykgeycsCisgICAgICAgICAgICAgICAgICAgICAgICAgWyd2
YXJpYWJsZV8xJyArIG5hbWVfZXJyb3JfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3ZhcmlhYmxlXzInICsgbmFtZV9lcnJvcl9tZXNzYWdlXSkKIAogICAgIGRlZiB0ZXN0X290
aGVyKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44252</attachid>
            <date>2009-12-03 09:53:38 -0800</date>
            <delta_ts>2009-12-03 12:45:54 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-32051-20091204025336.patch</filename>
            <type>text/plain</type>
            <size>16942</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4ZDNhM2RhLi42NmMwNDMyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTIt
MDMgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjaGVjay13ZWJraXQtc3R5bGUg
c2hvdWxkIGNoZWNrIGZvciBjYW1lbENhc2UgdmFyaWFibGUgbmFtZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDUxCisKKyAgICAgICAgKiBTY3Jp
cHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBf
c3R5bGVfdW5pdHRlc3QucHk6CisKIDIwMDktMTItMDEgIFlhYXIgU2Nobml0bWFuICA8eWFhckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgYnVpbGQtd2Via2l0OiBSZW1vdmUgZmxleCxiaXNvbixn
cGVyZiBjaGVjayBmb3IgY2hyb21pdW0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9jcHBfc3R5bGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0
eWxlLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOTkwZmNmZS4uZjJk
YWUwNwotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHkKQEAgLTEzMCw2ICsxMzAs
NyBAQCBfRVJST1JfQ0FURUdPUklFUyA9ICcnJ1wKICAgICByZWFkYWJpbGl0eS9mdW5jdGlvbgog
ICAgIHJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50CiAgICAgcmVhZGFiaWxpdHkvbXVsdGls
aW5lX3N0cmluZworICAgIHJlYWRhYmlsaXR5L25hbWluZwogICAgIHJlYWRhYmlsaXR5L251bGwK
ICAgICByZWFkYWJpbGl0eS9zdHJlYW1zCiAgICAgcmVhZGFiaWxpdHkvdG9kbwpAQCAtMjQzLDE0
ICsyNDQsMTQgQEAgX1BSSU1BUllfSEVBREVSID0gMQogX09USEVSX0hFQURFUiA9IDIKIAogCisj
IFRoZSByZWdleHAgY29tcGlsYXRpb24gY2FjaGluZyBpcyBpbmxpbmVkIGluIGFsbCByZWdleHAg
ZnVuY3Rpb25zIGZvcgorIyBwZXJmb3JtYW5jZSByZWFzb25zOyBmYWN0b3JpbmcgaXQgb3V0IGlu
dG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiB0dXJucyBvdXQKKyMgdG8gYmUgbm90aWNlYWJseSBleHBl
bnNpdmUuCiBfcmVnZXhwX2NvbXBpbGVfY2FjaGUgPSB7fQogCiAKIGRlZiBtYXRjaChwYXR0ZXJu
LCBzKToKICAgICAiIiJNYXRjaGVzIHRoZSBzdHJpbmcgd2l0aCB0aGUgcGF0dGVybiwgY2FjaGlu
ZyB0aGUgY29tcGlsZWQgcmVnZXhwLiIiIgotICAgICMgVGhlIHJlZ2V4cCBjb21waWxhdGlvbiBj
YWNoaW5nIGlzIGlubGluZWQgaW4gYm90aCBtYXRjaCBhbmQgc2VhcmNoIGZvcgotICAgICMgcGVy
Zm9ybWFuY2UgcmVhc29uczsgZmFjdG9yaW5nIGl0IG91dCBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rp
b24gdHVybnMgb3V0Ci0gICAgIyB0byBiZSBub3RpY2VhYmx5IGV4cGVuc2l2ZS4KICAgICBpZiBu
b3QgcGF0dGVybiBpbiBfcmVnZXhwX2NvbXBpbGVfY2FjaGU6CiAgICAgICAgIF9yZWdleHBfY29t
cGlsZV9jYWNoZVtwYXR0ZXJuXSA9IHNyZV9jb21waWxlLmNvbXBpbGUocGF0dGVybikKICAgICBy
ZXR1cm4gX3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dLm1hdGNoKHMpCkBAIC0yNjMsNiAr
MjY0LDIwIEBAIGRlZiBzZWFyY2gocGF0dGVybiwgcyk6CiAgICAgcmV0dXJuIF9yZWdleHBfY29t
cGlsZV9jYWNoZVtwYXR0ZXJuXS5zZWFyY2gocykKIAogCitkZWYgc3ViKHBhdHRlcm4sIHJlcGxh
Y2VtZW50LCBzKToKKyAgICAiIiJTdWJzdGl0dXRlcyBvY2N1cnJlbmNlcyBvZiBhIHBhdHRlcm4s
IGNhY2hpbmcgdGhlIGNvbXBpbGVkIHJlZ2V4cC4iIiIKKyAgICBpZiBub3QgcGF0dGVybiBpbiBf
cmVnZXhwX2NvbXBpbGVfY2FjaGU6CisgICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0
ZXJuXSA9IHNyZV9jb21waWxlLmNvbXBpbGUocGF0dGVybikKKyAgICByZXR1cm4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlW3BhdHRlcm5dLnN1YihyZXBsYWNlbWVudCwgcykKKworCitkZWYgc3Vibihw
YXR0ZXJuLCByZXBsYWNlbWVudCwgcyk6CisgICAgIiIiU3Vic3RpdHV0ZXMgb2NjdXJyZW5jZXMg
b2YgYSBwYXR0ZXJuLCBjYWNoaW5nIHRoZSBjb21waWxlZCByZWdleHAuIiIiCisgICAgaWYgbm90
IHBhdHRlcm4gaW4gX3JlZ2V4cF9jb21waWxlX2NhY2hlOgorICAgICAgICBfcmVnZXhwX2NvbXBp
bGVfY2FjaGVbcGF0dGVybl0gPSBzcmVfY29tcGlsZS5jb21waWxlKHBhdHRlcm4pCisgICAgcmV0
dXJuIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXS5zdWJuKHJlcGxhY2VtZW50LCBzKQor
CisKIGNsYXNzIF9JbmNsdWRlU3RhdGUoZGljdCk6CiAgICAgIiIiVHJhY2tzIGxpbmUgbnVtYmVy
cyBmb3IgaW5jbHVkZXMsIGFuZCB0aGUgb3JkZXIgaW4gd2hpY2ggaW5jbHVkZXMgYXBwZWFyLgog
CkBAIC04NjgsNyArODgzLDcgQEAgZGVmIGdldF9oZWFkZXJfZ3VhcmRfY3BwX3ZhcmlhYmxlKGZp
bGVuYW1lKToKICAgICAiIiIKIAogICAgIGZpbGVpbmZvID0gRmlsZUluZm8oZmlsZW5hbWUpCi0g
ICAgcmV0dXJuIHJlLnN1YihyJ1stLi9cc10nLCAnXycsIGZpbGVpbmZvLnJlcG9zaXRvcnlfbmFt
ZSgpKS51cHBlcigpICsgJ18nCisgICAgcmV0dXJuIHN1YihyJ1stLi9cc10nLCAnXycsIGZpbGVp
bmZvLnJlcG9zaXRvcnlfbmFtZSgpKS51cHBlcigpICsgJ18nCiAKIAogZGVmIGNoZWNrX2Zvcl9o
ZWFkZXJfZ3VhcmQoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CkBAIC0xNTMyLDcgKzE1NDcsNyBA
QCBkZWYgY2hlY2tfc3BhY2luZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcik6CiAgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgZ2V0
IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncwogCiAgICAgIyBEb24ndCB0cnkgdG8gZG8gc3Bh
Y2luZyBjaGVja3MgZm9yIG9wZXJhdG9yIG1ldGhvZHMKLSAgICBsaW5lID0gcmUuc3ViKHInb3Bl
cmF0b3IoPT18IT18PHw8PHw8PXw+PXw+Pnw+KVwoJywgJ29wZXJhdG9yXCgnLCBsaW5lKQorICAg
IGxpbmUgPSBzdWIocidvcGVyYXRvcig9PXwhPXw8fDw8fDw9fD49fD4+fD4pXCgnLCAnb3BlcmF0
b3JcKCcsIGxpbmUpCiAgICAgIyBEb24ndCB0cnkgdG8gZG8gc3BhY2luZyBjaGVja3MgZm9yICNp
bmNsdWRlIG9yICNpbXBvcnQgc3RhdGVtZW50cyBhdAogICAgICMgbWluaW11bSBiZWNhdXNlIGl0
IG1lc3NlcyB1cCBjaGVja3MgZm9yIHNwYWNpbmcgYXJvdW5kIC8KICAgICBpZiBtYXRjaChyJ1xz
KiNccyooPzppbmNsdWRlfGltcG9ydCknLCBsaW5lKToKQEAgLTI2MTYsNiArMjYzMSwxMDYgQEAg
ZGVmIGNoZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZp
bGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3MKICAgICAgICAgICAgICAgJ2h0dHA6Ly9nb29nbGUtc3R5
bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI05hbWVzcGFjZXMn
CiAgICAgICAgICAgICAgICcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykKIAorICAgIGNoZWNrX2lk
ZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGxpbmUs
IGVycm9yKQorCisKK2RlZiBjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24oZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBlcnJvcik6CisgICAgIiIiQ2hlY2tzIGlmIGlkZW50
aWZpZXIgbmFtZXMgY29udGFpbiBhbnkgdW5kZXJzY29yZXMuCisKKyAgICBBcyBpZGVudGlmaWVy
cyBpbiBsaWJyYXJpZXMgd2UgYXJlIHVzaW5nIGhhdmUgYSBidW5jaCBvZgorICAgIHVuZGVyc2Nv
cmVzLCB3ZSBvbmx5IHdhcm4gdGhlIGRlY2xhcmF0aW9ucyBvZiBpZGVudGlmaWVycyBhbmQKKyAg
ICBkb24ndCBjaGVjayB1c2Ugb2YgaWRlbnRpZmllcnMuCisKKyAgICBBcmdzOgorICAgICAgZmls
ZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBsaW5lX251bWJlcjog
VGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGxpbmU6IFRoZSBsaW5lIG9m
IGNvZGUgdG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBh
bnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorICAgICMgV2UgZG9uJ3QgY2hlY2sgYSByZXR1cm4g
c3RhdGVtZW50LgorICAgIGlmIG1hdGNoKCdccypyZXR1cm4nLCBsaW5lKToKKyAgICAgICAgcmV0
dXJuCisKKyAgICAjIEJhc2ljYWxseSwgYSBkZWNsYXJhdGlvbiBpcyBhIHR5cGUgbmFtZSBmb2xs
b3dlZCBieSB3aGl0ZXNwYWNlcworICAgICMgZm9sbG93ZWQgYnkgYW4gaWRlbnRpZmllci4gVGhl
IHR5cGUgbmFtZSBjYW4gYmUgY29tcGxpY2F0ZWQKKyAgICAjIGR1ZSB0byB0eXBlIGFkamVjdGl2
ZXMgYW5kIHRlbXBsYXRlcy4gV2UgcmVtb3ZlIHRoZW0gZmlyc3QgdG8KKyAgICAjIHNpbXBsaWZ5
IHRoZSBwcm9jZXNzIHRvIGZpbmQgZGVjbGFyYXRpb25zIG9mIGlkZW50aWZpZXJzLgorCisgICAg
IyBDb252ZXJ0ICJsb25nIGxvbmciLCAibG9uZyBkb3VibGUiLCBhbmQgImxvbmcgbG9uZyBpbnQi
IHRvCisgICAgIyBzaW1wbGUgdHlwZXMsIGJ1dCBkb24ndCByZW1vdmUgc2ltcGxlICJsb25nIi4K
KyAgICBsaW5lID0gc3ViKHInbG9uZyAoPzpsb25nICk/KD89bG9uZ3xkb3VibGV8aW50KScsICcn
LCBsaW5lKQorICAgIGxpbmUgPSBzdWIocidcYig/OnVuc2lnbmVkfHNpZ25lZHxpbmxpbmV8dXNp
bmd8c3RhdGljfGNvbnN0fHZvbGF0aWxlfGF1dG98cmVnaXN0ZXJ8ZXh0ZXJufHR5cGVkZWZ8cmVz
dHJpY3R8c3RydWN0fGNsYXNzfHZpcnR1YWwpKD89XFcpJywgJycsIGxpbmUpCisKKyAgICAjIFJl
bW92ZSBhbGwgdGVtcGxhdGUgcGFyYW1ldGVycyBieSByZW1vdmluZyBtYXRjaGluZyA8IGFuZCA+
LgorICAgICMgTG9vcCB1bnRpbCBubyB0ZW1wbGF0ZXMgYXJlIHJlbW92ZWQgdG8gcmVtb3ZlIG5l
c3RlZCB0ZW1wbGF0ZXMuCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSwgbnVtYmVyX29m
X3JlcGxhY2VtZW50cyA9IHN1Ym4ocic8KD86W1x3XHM6XXw6OikrXHMqWyomXSpccyo+JywgJycs
IGxpbmUpCisgICAgICAgIGlmIG5vdCBudW1iZXJfb2ZfcmVwbGFjZW1lbnRzOgorICAgICAgICAg
ICAgYnJlYWsKKworICAgICMgRGVjbGFyYXRpb25zIG9mIGxvY2FsIHZhcmlhYmxlcyBjYW4gYmUg
aW4gY29uZGl0aW9uIGV4cHJlc3Npb25zCisgICAgIyBvZiBjb250cm9sIGZsb3cgc3RhdGVtZW50
cyAoZS5nLiwgImlmIChSZW5kZXJPYmplY3QqIHAgPSBvLT5wYXJlbnQoKSkiKS4KKyAgICAjIFdl
IHJlbW92ZSB0aGUga2V5d29yZHMgYW5kIHRoZSBmaXJzdCBwYXJlbnRoZXNpcy4KKyAgICAjCisg
ICAgIyBEZWNsYXJhdGlvbnMgaW4gIndoaWxlIiwgImlmIiwgYW5kICJzd2l0Y2giIGFyZSBkaWZm
ZXJlbnQgZnJvbQorICAgICMgb3RoZXIgZGVjbGFyYXRpb25zIGluIHR3byBhc3BlY3RzOgorICAg
ICMKKyAgICAjIC0gVGhlcmUgY2FuIGJlIG9ubHkgb25lIGRlY2xhcmF0aW9uIGJldHdlZW4gdGhl
IHBhcmVudGhlc2VzLgorICAgICMgICAoaS5lLiwgeW91IGNhbm5vdCB3cml0ZSAiaWYgKGludCBp
ID0gMCwgaiA9IDEpIHt9IikKKyAgICAjIC0gVGhlIHZhcmlhYmxlIG11c3QgYmUgaW5pdGlhbGl6
ZWQuCisgICAgIyAgIChpLmUuLCB5b3UgY2Fubm90IHdyaXRlICJpZiAoaW50IGkpIHt9IikKKyAg
ICAjCisgICAgIyBhbmQgd2Ugd2lsbCBuZWVkIGRpZmZlcmVudCB0cmVhdG1lbnRzIGZvciB0aGVt
LgorICAgIGxpbmUgPSBzdWIocideXHMqZm9yXHMqXCgnLCAnJywgbGluZSkKKyAgICBsaW5lLCBj
b250cm9sX3N0YXRlbWVudCA9IHN1Ym4ocideXHMqKD86d2hpbGV8ZWxzZSBpZnxpZnxzd2l0Y2gp
XHMqXCgnLCAnJywgbGluZSkKKworICAgICMgRGV0ZWN0IHZhcmlhYmxlIGFuZCBmdW5jdGlvbnMu
CisgICAgdHlwZV9yZWdleHAgPSByJ1x3KD86W1x3XXxccypbKiZdXHMqfDo6KSsnCisgICAgaWRl
bnRpZmllcl9yZWdleHAgPSByJyg/UDxpZGVudGlmaWVyPltcdzpdKyknCisgICAgY2hhcmFjdGVy
X2FmdGVyX2lkZW50aWZpZXJfcmVnZXhwID0gcicoP1A8Y2hhcmFjdGVyX2FmdGVyX2lkZW50aWZp
ZXI+W1s7KCk9LF0pJworICAgIGRlY2xhcmF0aW9uX3dpdGhvdXRfdHlwZV9yZWdleHAgPSByJ1xz
KicgKyBpZGVudGlmaWVyX3JlZ2V4cCArIHInXHMqJyArIGNoYXJhY3Rlcl9hZnRlcl9pZGVudGlm
aWVyX3JlZ2V4cAorICAgIGRlY2xhcmF0aW9uX3dpdGhfdHlwZV9yZWdleHAgPSByJ1xzKicgKyB0
eXBlX3JlZ2V4cCArIHInXHMnICsgZGVjbGFyYXRpb25fd2l0aG91dF90eXBlX3JlZ2V4cAorICAg
IGlzX2Z1bmN0aW9uX2FyZ3VtZW50cyA9IEZhbHNlCisgICAgbnVtYmVyX29mX2lkZW50aWZpZXJz
ID0gMAorICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgSWYgd2UgYXJlIHNlZWluZyB0aGUgZmly
c3QgaWRlbnRpZmllciBvciBhcmd1bWVudHMgb2YgYQorICAgICAgICAjIGZ1bmN0aW9uLCB0aGVy
ZSBzaG91bGQgYmUgYSB0eXBlIG5hbWUgYmVmb3JlIGFuIGlkZW50aWZpZXIuCisgICAgICAgIGlm
IG5vdCBudW1iZXJfb2ZfaWRlbnRpZmllcnMgb3IgaXNfZnVuY3Rpb25fYXJndW1lbnRzOgorICAg
ICAgICAgICAgZGVjbGFyYXRpb25fcmVnZXhwID0gZGVjbGFyYXRpb25fd2l0aF90eXBlX3JlZ2V4
cAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVjbGFyYXRpb25fcmVnZXhwID0gZGVjbGFy
YXRpb25fd2l0aG91dF90eXBlX3JlZ2V4cAorCisgICAgICAgIG1hdGNoZWQgPSBtYXRjaChkZWNs
YXJhdGlvbl9yZWdleHAsIGxpbmUpCisgICAgICAgIGlmIG5vdCBtYXRjaGVkOgorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIGlkZW50aWZpZXIgPSBtYXRjaGVkLmdyb3VwKCdpZGVudGlmaWVy
JykKKyAgICAgICAgY2hhcmFjdGVyX2FmdGVyX2lkZW50aWZpZXIgPSBtYXRjaGVkLmdyb3VwKCdj
aGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllcicpCisKKyAgICAgICAgIyBJZiB3ZSByZW1vdmVkIGEg
bm9uLWZvci1jb250cm9sIHN0YXRlbWVudCwgdGhlIGNoYXJhY3RlciBhZnRlcgorICAgICAgICAj
IHRoZSBpZGVudGlmaWVyIHNob3VsZCBiZSAnPScuIFdpdGggdGhpcyBydWxlLCB3ZSBjYW4gYXZv
aWQKKyAgICAgICAgIyB3YXJuaW5nIGZvciBjYXNlcyBsaWtlICJpZiAodmFsICYgSU5UX01BWCkg
eyIuCisgICAgICAgIGlmIGNvbnRyb2xfc3RhdGVtZW50IGFuZCBjaGFyYWN0ZXJfYWZ0ZXJfaWRl
bnRpZmllciAhPSAnPSc6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpc19mdW5jdGlv
bl9hcmd1bWVudHMgPSBpc19mdW5jdGlvbl9hcmd1bWVudHMgb3IgY2hhcmFjdGVyX2FmdGVyX2lk
ZW50aWZpZXIgPT0gJygnCisKKyAgICAgICAgIyBSZW1vdmUgIm1fIiBhbmQgInNfIiB0byBhbGxv
dyB0aGVtLgorICAgICAgICBtb2RpZmllZF9pZGVudGlmaWVyID0gc3ViKHInKD86XnwoPzw9Ojop
KVttc11fJywgJycsIGlkZW50aWZpZXIpCisgICAgICAgIGlmIG1vZGlmaWVkX2lkZW50aWZpZXIu
ZmluZCgnXycpID49IDA6CisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIs
ICdyZWFkYWJpbGl0eS9uYW1pbmcnLCA0LCBpZGVudGlmaWVyICsgIiBpcyBpbmNvcnJlY3RseSBu
YW1lZC4gRG9uJ3QgdXNlIHVuZGVyc2NvcmVzIGluIHlvdXIgaWRlbnRpZmllciBuYW1lcy4iKQor
CisgICAgICAgICMgVGhlcmUgY2FuIGJlIG9ubHkgb25lIGRlY2xhcmF0aW9uIGluIG5vbi1mb3It
Y29udHJvbCBzdGF0ZW1lbnRzLgorICAgICAgICBpZiBjb250cm9sX3N0YXRlbWVudDoKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAjIFdlIHNob3VsZCBjb250aW51ZSBjaGVja2luZyBpZiB0
aGlzIGlzIGEgZnVuY3Rpb24KKyAgICAgICAgIyBkZWNsYXJhdGlvbiBiZWNhdXNlIHdlIG5lZWQg
dG8gY2hlY2sgaXRzIGFyZ3VtZW50cy4KKyAgICAgICAgIyBBbHNvLCB3ZSBuZWVkIHRvIGNoZWNr
IG11bHRpcGxlIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgaWYgY2hhcmFjdGVyX2FmdGVyX2lkZW50
aWZpZXIgIT0gJygnIGFuZCBjaGFyYWN0ZXJfYWZ0ZXJfaWRlbnRpZmllciAhPSAnLCc6CisgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICBudW1iZXJfb2ZfaWRlbnRpZmllcnMgKz0gMQorICAg
ICAgICBsaW5lID0gbGluZVttYXRjaGVkLmVuZCgpOl0KKwogCiBkZWYgY2hlY2tfY19zdHlsZV9j
YXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgcmF3X2xpbmUsIGNhc3RfdHlwZSwgcGF0
dGVybiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHkKb2xkIG1vZGUgMTAwNjQ0Cm5l
dyBtb2RlIDEwMDc1NQppbmRleCA3ZjU0MDNmLi5kN2Q5NDljCi0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5weQpAQCAtOTM0LDE1ICs5MzQsMTUgQEAg
Y2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdpbnQgZG91Ymxlc2l6ZVtzb21lX3ZhciAqIDJdOycsIGVycm1zZykKICAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGFbYWZ1bmN0aW9uKCldOycsIGVycm1zZykKICAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGFbZnVuY3Rpb24oa01heEZvb0JhcnMpXTsnLCBlcnJtc2cp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Jvb2wgYV9saXN0W2l0ZW1zXy0+c2l6ZSgpXTsn
LCBlcnJtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Jvb2wgYUxpc3RbaXRlbXNfLT5z
aXplKCldOycsIGVycm1zZykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbmFtZXNwYWNlOjpU
eXBlIGJ1ZmZlcltsZW4rMV07JywgZXJybXNnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2ludCBhWzY0XTsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbMHhGRl07
JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBmaXJzdFsyNTZdLCBzZWNvbmRb
MjU2XTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFycmF5X25hbWVba0Nv
bXBpbGVUaW1lQ29uc3RhbnRdOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQg
YXJyYXlOYW1lW2tDb21waWxlVGltZUNvbnN0YW50XTsnLCAnJykKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnY2hhciBidWZbc29tZW5hbWVzcGFjZTo6a0J1ZlNpemVdOycsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdpbnQgYXJyYXlfbmFtZVtBTExfQ0FQU107JywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhcnJheU5hbWVbQUxMX0NBUFNdOycsICcnKQogICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdBQ2xhc3MgYXJyYXkxW2Zvbzo6YmFyOjpBTExfQ0FQU107
JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW2tNYXhTdHJMZW4gKyAxXTsn
LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mKGZvbyldOycsICcn
KQpAQCAtMTUyMiwxNCArMTUyMiwxNCBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0
QmFzZSk6CiAKICAgICBkZWYgdGVzdF9pbmRlbnQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3N0YXRpYyBpbnQgbm9pbmRlbnQ7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJyAgICBpbnQgZm91cl9zcGFjZV9pbmRlbnQ7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJyBpbnQgb25lX3NwYWNlX2luZGVudDsnLAorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCcgICAgaW50IGZvdXJTcGFjZUluZGVudDsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnIGludCBvbmVTcGFjZUluZGVudDsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdXZWly
ZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVu
dF0gWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgaW50IHRocmVlX3NwYWNlX2lu
ZGVudDsnLAorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICBpbnQgdGhyZWVTcGFjZUluZGVu
dDsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0
IGxpbmUtc3RhcnQuICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FyZSB5b3UgdXNpbmcg
YSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnIGNoYXIqIG9uZV9zcGFjZV9pbmRlbnQgPSAicHVibGljOiI7JywKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnIGNoYXIqIG9uZVNwYWNlSW5kZW50ID0gInB1YmxpYzoi
OycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQg
bGluZS1zdGFydC4gICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBh
IDQtc3BhY2UgaW5kZW50PyAgW3doaXRlc3BhY2UvaW5kZW50XSBbM10nKQogICAgICAgICBzZWxm
LmFzc2VydF9saW50KCcgcHVibGljOicsICcnKQpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgY2xhc3Mg
Q3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdkb3VibGUgY29uc3Qgc3RhdGljIGZvbyA9IDIuMDsnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKIAotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCd1aW50NjQgdHlwZWRlZiB1bnNpZ25lZF9sb25nX2xvbmc7JywKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgndWludDY0IHR5cGVkZWYgdW5zaWduZWRMb25nTG9uZzsnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkK
IAogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgcmVnaXN0ZXIgZm9vID0gMDsnLApAQCAt
MjA0Niw2ICsyMDQ2LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICdDaGFuZ2luZyBwb2ludGVyIGluc3RlYWQgb2YgdmFs
dWUgKG9yIHVudXNlZCB2YWx1ZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wZXJh
dG9yKikuICBbcnVudGltZS9pbnZhbGlkX2luY3JlbWVudF0gWzVdJykKIAorCiBjbGFzcyBDbGVh
bnNlZExpbmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfaW5pdChzZWxm
KToKICAgICAgICAgbGluZXMgPSBbJ0xpbmUgMScsCkBAIC0zNTkwLDggKzM1OTEsOTMgQEAgY2xh
c3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgJ2Zvby5o
JykKIAogICAgIGRlZiB0ZXN0X25hbWVzKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcy4KLSAgICAgICAgcGFzcworICAgICAgICBuYW1lX2Vycm9yX21lc3NhZ2UgPSAiIGlz
IGluY29ycmVjdGx5IG5hbWVkLiBEb24ndCB1c2UgdW5kZXJzY29yZXMgaW4geW91ciBpZGVudGlm
aWVyIG5hbWVzLiAgW3JlYWRhYmlsaXR5L25hbWluZ10gWzRdIgorCisgICAgICAgICMgQmFzaWMg
Y2FzZXMgZnJvbSBXZWJLaXQgc3R5bGUgZ3VpZGUuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3N0cnVjdCBEYXRhOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzaXplX3QgYnVm
ZmVyU2l6ZTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY2xhc3MgSFRNTERvY3Vt
ZW50OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdTdHJpbmcgbWltZVR5cGUoKTsn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc2l6ZV90IGJ1ZmZlcl9zaXplOycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2J1ZmZlcl9zaXplJyArIG5hbWVfZXJyb3JfbWVzc2Fn
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc2hvcnQgbV9sZW5ndGg7JywgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3Nob3J0IF9sZW5ndGg7JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnX2xlbmd0aCcgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3Nob3J0IGxlbmd0aF87JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbGVu
Z3RoXycgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAgIyBQb2ludGVycywgcmVmZXJl
bmNlcywgZnVuY3Rpb25zLCB0ZW1wbGF0ZXMsIGFuZCBhZGplY3RpdmVzLgorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdjaGFyKiB1bmRlcl9zY29yZTsnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ2NvbnN0IGludCBVTkRFUl9TQ09SRTsnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICdVTkRFUl9TQ09SRScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciBjb25zdCYgY29uc3QgdW5kZXJfc2Nv
cmU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJv
cl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QqIHVuZGVyX3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3Jl
JyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGZ1
bmNfbmFtZSgpOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmNfbmFtZScgKyBuYW1l
X2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxSZW5kZXJP
YmplY3QqPiB1bmRlcl9zY29yZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9z
Y29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1dU
Rjo6VmVjdG9yPFdURjo6UmVmUHRyPGNvbnN0IFJlbmRlck9iamVjdCogY29uc3Q+ID4gdW5kZXJf
c2NvcmU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9l
cnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgdW5kZXJfc2NvcmVb
XTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cnVjdCBkaXJlbnQqIHVuZGVy
X3Njb3JlOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVf
ZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbG9uZyB1bmRlcl9zY29y
ZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2xvbmcgbG9uZyB1bmRlcl9zY29y
ZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9y
X21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2xvbmcgZG91YmxlIHVuZGVyX3Nj
b3JlOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJy
b3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnbG9uZyBsb25nIGludCB1bmRl
cl9zY29yZTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1l
X2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAgIyBEZWNsYXJhdGlvbnMgaW4gY29udHJvbCBzdGF0
ZW1lbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChpbnQgdW5kZXJfc2NvcmUgPSA0
MikgeycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJy
b3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZWxzZSBpZiAoaW50IHVuZGVy
X3Njb3JlID0gNDIpIHsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScg
KyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoaW50
IHVuZGVyX3Njb3JlID0gNDI7IGNvbmQ7IGkrKykgeycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3VuZGVyX3Njb3JlJyArIG5hbWVfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnd2hpbGUgKGZvbyAmIHVuZGVyX3Njb3JlID0gYmFyKSB7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbyAqIHVuZGVyX3Njb3JlID0gcDsgY29uZDsgaSsr
KSB7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndW5kZXJfc2NvcmUnICsgbmFtZV9lcnJv
cl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbyAqIHVuZGVyX3Nj
b3JlOyBjb25kOyBpKyspIHsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29y
ZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxl
IChmb28gJiB2YWx1ZV9pbl90aGlyZHBhcnR5X2xpYnJhcnkpIHsnLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbyAqIHZhbHVlX2luX3RoaXJkcGFydHlfbGlicmFyeSkg
eycsICcnKQorCisgICAgICAgICMgTW9yZSBtZW1iZXIgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMu
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBTb21lQ2xhc3M6OnNfdmFsaWROYW1lJywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBtX3VuZGVyX3Njb3JlOycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ21fdW5kZXJfc2NvcmUnICsgbmFtZV9lcnJvcl9tZXNzYWdl
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgU29tZUNsYXNzOjpzX3VuZGVyX3Njb3Jl
ID0gMDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTb21lQ2xhc3M6OnNfdW5kZXJfc2Nv
cmUnICsgbmFtZV9lcnJvcl9tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQg
U29tZUNsYXNzOjp1bmRlcl9zY29yZSA9IDA7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
U29tZUNsYXNzOjp1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAg
IyBPdGhlciBzdGF0ZW1lbnRzLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdyZXR1cm4gSU5U
X01BWDsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZ290byB1bmRlcl9zY29yZTsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcl9zY29yZScgKyBuYW1lX2Vycm9yX21l
c3NhZ2UpCisKKyAgICAgICAgIyBNdWx0aXBsZSB2YXJpYWJsZXMgaW4gb25lIGxpbmUuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgbXlGdW5jdGlvbihpbnQgdmFyaWFibGUxLCBpbnQg
YW5vdGhlcl92YXJpYWJsZSk7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYW5vdGhlcl92
YXJpYWJsZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2ludCB2YXJpYWJsZTEsIGFub3RoZXJfdmFyaWFibGU7JywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnYW5vdGhlcl92YXJpYWJsZScgKyBuYW1lX2Vycm9yX21lc3NhZ2UpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ludCBmaXJzdF92YXJpYWJsZSwgc2Vjb25kVmFyaWFibGU7JywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3RfdmFyaWFibGUnICsgbmFtZV9lcnJvcl9tZXNz
YWdlKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIG15X2Z1bmN0aW9uKGludCB2YXJp
YWJsZV8xLCBpbnQgdmFyaWFibGVfMik7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ215
X2Z1bmN0aW9uJyArIG5hbWVfZXJyb3JfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3ZhcmlhYmxlXzEnICsgbmFtZV9lcnJvcl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAndmFyaWFibGVfMicgKyBuYW1lX2Vycm9yX21lc3NhZ2VdKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdmb3IgKGludCB2YXJpYWJsZV8xLCB2YXJpYWJsZV8yOzspIHsnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIFsndmFyaWFibGVfMScgKyBuYW1lX2Vycm9yX21lc3NhZ2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZV8yJyArIG5hbWVfZXJyb3JfbWVz
c2FnZV0pCiAKICAgICBkZWYgdGVzdF9vdGhlcihzZWxmKToKICAgICAgICAgIyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCg==
</data>
<flag name="review"
          id="26056"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="26072"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>