<?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>146298</bug_id>
          
          <creation_ts>2015-06-24 16:49:23 -0700</creation_ts>
          <short_desc>REGRESSION (r181889): basspro.com hangs on load under JSC::ErrorInstance::finishCreation(JSC::ExecState*, JSC::VM&amp;, WTF::String const&amp;, bool) + 2801 (JavaScriptCore + 3560689)</short_desc>
          <delta_ts>2015-06-25 10:38:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104543</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 16:49:23 -0700</bug_when>
    <thetext>We hang in the static function named functionCallBase() in ExceptionHelpers.cpp.

rdar://problem/21487736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104577</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 18:42:17 -0700</bug_when>
    <thetext>*** Bug 146303 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104581</commentid>
    <comment_count>2</comment_count>
      <attachid>255537</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-24 18:48:41 -0700</bug_when>
    <thetext>Created attachment 255537
Patch

Without the fix the test will fail.  Filed &lt;https://bugs.webkit.org/show_bug.cgi?id=146305&gt; - &quot;Add command line option and private function to set timeout in jsc command&quot; to add a timeout to jsc.  I&apos;ll add a timeout to this test when that is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104583</commentid>
    <comment_count>3</comment_count>
      <attachid>255537</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-06-24 19:42:04 -0700</bug_when>
    <thetext>Comment on attachment 255537
Patch

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

r=me assuming at least my comment about sourceText[rightToLeftIndex - 1] is addressed.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:121
&gt; +    unsigned index = 0;
&gt; +    unsigned rightToLeftIndex = rightToLeftIndexFromIndex(length, index);

I got confused what &quot;rightToLeftIndex&quot; meant.
I think it&apos;s better to call the former traversalCount or traversalIndex and the latter indexInSourceText or sourceIndex.
But I really don&apos;t think having an index that traverses the string backwards is bad.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:143
&gt; -            if (curChar == &apos;*&apos; &amp;&amp; sourceText[idx - 1] == &apos;/&apos;) {
&gt; +            if (curChar == &apos;*&apos; &amp;&amp; sourceText[rightToLeftIndex - 1] == &apos;/&apos;) {

rightToLeftIndex is not guaranteed to be greater than 0 is it?
Specifically when index = length - 1, rightToLeftIndex = length - 1 - index = 0 so this may end up accessing a random byte.
I think we should explicitly check for rightToLeftIndex being greater than 0.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:151
&gt; -        else if (curChar == &apos;/&apos; &amp;&amp; sourceText[idx - 1] == &apos;*&apos;) {
&gt; +        else if (curChar == &apos;/&apos; &amp;&amp; sourceText[rightToLeftIndex - 1] == &apos;*&apos;) {

Ditto.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:-144
&gt; -
&gt; -        idx -= 1;

If we kept the original sematnics of idx, we can check whether idx is 0 or not before the decrement and exit early when it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104585</commentid>
    <comment_count>4</comment_count>
      <attachid>255537</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-24 20:06:24 -0700</bug_when>
    <thetext>Comment on attachment 255537
Patch

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

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:145
&gt; +            if (curChar == &apos;*&apos; &amp;&amp; sourceText[rightToLeftIndex - 1] == &apos;/&apos;) {
&gt;                  isInMultiLineComment = false;
&gt; -                idx -= 1;
&gt; +                index++;

I know this is pre-existing code, but this backwards scan method of detecting the start of a multiline comment seems inadequate to me.  Consider the case where we have a comment like this: /* A /* B */.  Scanning backwards, we’d think the /* before B is the start of the comment, whereas a source parser will say that the /* before A is the start of the comment.  You should test this case and see if we need to file a bug for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104659</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-25 09:23:54 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 255537 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255537&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:145
&gt; &gt; +            if (curChar == &apos;*&apos; &amp;&amp; sourceText[rightToLeftIndex - 1] == &apos;/&apos;) {
&gt; &gt;                  isInMultiLineComment = false;
&gt; &gt; -                idx -= 1;
&gt; &gt; +                index++;
&gt; 
&gt; I know this is pre-existing code, but this backwards scan method of
&gt; detecting the start of a multiline comment seems inadequate to me.  Consider
&gt; the case where we have a comment like this: /* A /* B */.  Scanning
&gt; backwards, we’d think the /* before B is the start of the comment, whereas a
&gt; source parser will say that the /* before A is the start of the comment. 
&gt; You should test this case and see if we need to file a bug for it.

I filed &lt;https://bugs.webkit.org/show_bug.cgi?id=146304&gt; &quot;ExceptionHelpers.cpp::functionCallBase doesn&apos;t properly handle embedded comments and string literals&quot;, but forgot to mention it in a FIXME comment.

I will shortly upload a new patch that addresses Ryosuke&apos;s concerns and includes a FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104660</commentid>
    <comment_count>6</comment_count>
      <attachid>255558</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-25 09:26:42 -0700</bug_when>
    <thetext>Created attachment 255558
Patch

Reverted back to the original method.  Added checks that idx is inbounds as well as an exit condition when idx goes to 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104669</commentid>
    <comment_count>7</comment_count>
      <attachid>255558</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-25 09:56:45 -0700</bug_when>
    <thetext>Comment on attachment 255558
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        We were underflowing in ExceptionHelpers.cpp::functionCallBase() with a right to left
&gt; +        string index.  Restructured the code to derive the right to left index from a normal
&gt; +        index.  Also added a check for the index being in range as a loop exit condition.
&gt; +
&gt; +        * runtime/ExceptionHelpers.cpp:
&gt; +        (JSC::rightToLeftIndexFromIndex): New helper function to map a forward index to a 
&gt; +        reverse index.
&gt; +        (JSC::functionCallBase):
&gt; +        (JSC::notAFunctionSourceAppender):

Your comment is stale.  Definitely no more rightToLeftIndexFromIndex().

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:117
&gt; +    // FIXME: This function has simple processing of /* */ style comments.
&gt; +    // It doesn&apos;t properly handle embedded comments of string literals that contain
&gt; +    // parenthesis or comment constructs, e.g. foo.bar(&quot;/abc\)*/&quot;).
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=146304

I suggest moving this comment down to just above the while loop below where it is more relevant.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:123
&gt; +    if (sourceLength &lt; 2 || sourceText[idx] != &apos;)&apos;) {
&gt;          // For function calls that have many new lines in between their open parenthesis
&gt;          // and their closing parenthesis, the text range passed into the message appender 
&gt;          // will not inlcude the text in between these parentheses, it will just be the desired

Is this (sourceLength &lt; 2) correct?  I don’t entirely understand what the original code is checking for here, but the comment below it seems to suggest that it is intended to allow for sourceText that is more than 1 in length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104670</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-25 10:09:27 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 255558 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255558&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:16
&gt; &gt; +        We were underflowing in ExceptionHelpers.cpp::functionCallBase() with a right to left
&gt; &gt; +        string index.  Restructured the code to derive the right to left index from a normal
&gt; &gt; +        index.  Also added a check for the index being in range as a loop exit condition.
&gt; &gt; +
&gt; &gt; +        * runtime/ExceptionHelpers.cpp:
&gt; &gt; +        (JSC::rightToLeftIndexFromIndex): New helper function to map a forward index to a 
&gt; &gt; +        reverse index.
&gt; &gt; +        (JSC::functionCallBase):
&gt; &gt; +        (JSC::notAFunctionSourceAppender):
&gt; 
&gt; Your comment is stale.  Definitely no more rightToLeftIndexFromIndex().

I updated it to say that we now check idx for underflow and terminate when it gets to 0.

&gt; &gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:117
&gt; &gt; +    // FIXME: This function has simple processing of /* */ style comments.
&gt; &gt; +    // It doesn&apos;t properly handle embedded comments of string literals that contain
&gt; &gt; +    // parenthesis or comment constructs, e.g. foo.bar(&quot;/abc\)*/&quot;).
&gt; &gt; +    // https://bugs.webkit.org/show_bug.cgi?id=146304
&gt; 
&gt; I suggest moving this comment down to just above the while loop below where
&gt; it is more relevant.

I put this comment at the top of the loop since it describes short comings of the function and not just the reverse index loop.

&gt; &gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:123
&gt; &gt; +    if (sourceLength &lt; 2 || sourceText[idx] != &apos;)&apos;) {
&gt; &gt;          // For function calls that have many new lines in between their open parenthesis
&gt; &gt;          // and their closing parenthesis, the text range passed into the message appender 
&gt; &gt;          // will not inlcude the text in between these parentheses, it will just be the desired
&gt; 
&gt; Is this (sourceLength &lt; 2) correct?  I don’t entirely understand what the
&gt; original code is checking for here, but the comment below it seems to
&gt; suggest that it is intended to allow for sourceText that is more than 1 in
&gt; length.

This is a little subtle.  The original code basically says that if we don&apos;t have a trailing close parenthesis, there is no need for further processing.  My added check says that if the length is 0 or 1, there is no need to process as well because there can&apos;t be a match set of parenthesis.  Without checking for length of 0, the existing check underflows in the string.  The check for length of 1 protects the idx -= 1 on line 130.

The comment below basically says that for multiline function declarations, this function will never see the opening and closing parentheses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104671</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-25 10:10:37 -0700</bug_when>
    <thetext>&gt; I put this comment at the top of the loop since it describes short comings
&gt; of the function and not just the reverse index loop.

I mean *top to the function*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104674</commentid>
    <comment_count>10</comment_count>
      <attachid>255558</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-25 10:20:19 -0700</bug_when>
    <thetext>Comment on attachment 255558
Patch

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

r=me

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:117
&gt;&gt;&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=146304
&gt;&gt; 
&gt;&gt; I suggest moving this comment down to just above the while loop below where it is more relevant.
&gt; 
&gt; I put this comment at the top of the loop since it describes short comings of the function and not just the reverse index loop.

ok.  nit: adding a line break between the comment and the next line would help.  As is, I instinctively associate it with the if (sourceLength &lt; 2 || sourceText[idx] != &apos;)’) check.  But I won’t be heart broken if you don’t.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:123
&gt;&gt;&gt;          // will not inlcude the text in between these parentheses, it will just be the desired
&gt;&gt; 
&gt;&gt; Is this (sourceLength &lt; 2) correct?  I don’t entirely understand what the original code is checking for here, but the comment below it seems to suggest that it is intended to allow for sourceText that is more than 1 in length.
&gt; 
&gt; This is a little subtle.  The original code basically says that if we don&apos;t have a trailing close parenthesis, there is no need for further processing.  My added check says that if the length is 0 or 1, there is no need to process as well because there can&apos;t be a match set of parenthesis.  Without checking for length of 0, the existing check underflows in the string.  The check for length of 1 protects the idx -= 1 on line 130.
&gt; 
&gt; The comment below basically says that for multiline function declarations, this function will never see the opening and closing parentheses.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104678</commentid>
    <comment_count>11</comment_count>
      <attachid>255558</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-06-25 10:35:53 -0700</bug_when>
    <thetext>Comment on attachment 255558
Patch

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

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:136
&gt; -            if (curChar == &apos;*&apos; &amp;&amp; sourceText[idx - 1] == &apos;/&apos;) {
&gt; +            if (idx &gt; 1 &amp;&amp; curChar == &apos;*&apos; &amp;&amp; sourceText[idx - 1] == &apos;/&apos;) {

So &apos;/&apos; can never appear at sourceText[0]??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104679</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-25 10:35:59 -0700</bug_when>
    <thetext>Committed r185954: &lt;http://trac.webkit.org/changeset/185954&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104680</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-25 10:38:10 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 255558 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255558&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:136
&gt; &gt; -            if (curChar == &apos;*&apos; &amp;&amp; sourceText[idx - 1] == &apos;/&apos;) {
&gt; &gt; +            if (idx &gt; 1 &amp;&amp; curChar == &apos;*&apos; &amp;&amp; sourceText[idx - 1] == &apos;/&apos;) {
&gt; 
&gt; So &apos;/&apos; can never appear at sourceText[0]??

I&apos;ll change the check to &quot;idx &gt; 0&quot; here and the other location as well.

rs=you?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255537</attachid>
            <date>2015-06-24 18:48:41 -0700</date>
            <delta_ts>2015-06-25 09:26:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>146298.patch</filename>
            <type>text/plain</type>
            <size>6808</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1OTQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE1LTA2LTI0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxODE4ODkpOiBiYXNzcHJvLmNvbSBoYW5ncyBvbiBsb2FkIHVuZGVy
IEpTQzo6RXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlZNJiwgV1RGOjpTdHJpbmcgY29uc3QmLCBib29sKSArIDI4MDEgKEphdmFTY3JpcHRDb3JlICsg
MzU2MDY4OSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHdlcmUgdW5kZXJmbG93aW5nIGluIEV4Y2VwdGlvbkhlbHBlcnMuY3BwOjpmdW5jdGlvbkNh
bGxCYXNlKCkgd2l0aCBhIHJpZ2h0IHRvIGxlZnQKKyAgICAgICAgc3RyaW5nIGluZGV4LiAgUmVz
dHJ1Y3R1cmVkIHRoZSBjb2RlIHRvIGRlcml2ZSB0aGUgcmlnaHQgdG8gbGVmdCBpbmRleCBmcm9t
IGEgbm9ybWFsCisgICAgICAgIGluZGV4LiAgQWxzbyBhZGRlZCBhIGNoZWNrIGZvciB0aGUgaW5k
ZXggYmVpbmcgaW4gcmFuZ2UgYXMgYSBsb29wIGV4aXQgY29uZGl0aW9uLgorCisgICAgICAgICog
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6cmlnaHRUb0xlZnRJ
bmRleEZyb21JbmRleCk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdG8gbWFwIGEgZm9yd2FyZCBpbmRl
eCB0byBhIAorICAgICAgICByZXZlcnNlIGluZGV4LgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNh
bGxCYXNlKToKKyAgICAgICAgKEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorCiAy
MDE1LTA2LTI0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIG9uIGdvZy5jb20gZHVlIHRvIFBvbHltb3JwaGljQ2FsbE5vZGUncyBoYXZpbmcgc3Rh
bGUgcmVmZXJlbmNlcyB0byBDYWxsTGlua0luZm8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAxODU5MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4LDExICsxMDgsMTkgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0
U291cmNlQXBwZW5kZXIoY29ucwogICAgIHJldHVybiBtYWtlU3RyaW5nKG9yaWdpbmFsTWVzc2Fn
ZSwgIiAoZXZhbHVhdGluZyAnIiwgc291cmNlVGV4dCwgIicpIik7CiB9CiAKK3N0YXRpYyB1bnNp
Z25lZCByaWdodFRvTGVmdEluZGV4RnJvbUluZGV4KHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
aW5kZXgpCit7CisgICAgcmV0dXJuIGxlbmd0aCAtIDEgLSBpbmRleDsKK30KKwogc3RhdGljIFN0
cmluZyBmdW5jdGlvbkNhbGxCYXNlKGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCkKIHsgCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlICdmb28uYmFyJyBzdWJzdHJpbmcgZnJvbSAn
Zm9vLmJhcihiYXopJy4KLSAgICB1bnNpZ25lZCBpZHggPSBzb3VyY2VUZXh0Lmxlbmd0aCgpIC0g
MTsKLSAgICBpZiAoc291cmNlVGV4dFtpZHhdICE9ICcpJykgeworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHNvdXJjZVRleHQubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHVu
c2lnbmVkIHJpZ2h0VG9MZWZ0SW5kZXggPSByaWdodFRvTGVmdEluZGV4RnJvbUluZGV4KGxlbmd0
aCwgaW5kZXgpOworCisgICAgaWYgKHNvdXJjZVRleHRbcmlnaHRUb0xlZnRJbmRleF0gIT0gJykn
KSB7CiAgICAgICAgIC8vIEZvciBmdW5jdGlvbiBjYWxscyB0aGF0IGhhdmUgbWFueSBuZXcgbGlu
ZXMgaW4gYmV0d2VlbiB0aGVpciBvcGVuIHBhcmVudGhlc2lzCiAgICAgICAgIC8vIGFuZCB0aGVp
ciBjbG9zaW5nIHBhcmVudGhlc2lzLCB0aGUgdGV4dCByYW5nZSBwYXNzZWQgaW50byB0aGUgbWVz
c2FnZSBhcHBlbmRlciAKICAgICAgICAgLy8gd2lsbCBub3QgaW5sY3VkZSB0aGUgdGV4dCBpbiBi
ZXR3ZWVuIHRoZXNlIHBhcmVudGhlc2VzLCBpdCB3aWxsIGp1c3QgYmUgdGhlIGRlc2lyZWQKQEAg
LTEyMiwyOSArMTMwLDMxIEBAIHN0YXRpYyBTdHJpbmcgZnVuY3Rpb25DYWxsQmFzZShjb25zdCBT
dHIKIAogICAgIHVuc2lnbmVkIHBhcmVuU3RhY2sgPSAxOwogICAgIGJvb2wgaXNJbk11bHRpTGlu
ZUNvbW1lbnQgPSBmYWxzZTsKLSAgICBpZHggLT0gMTsKKyAgICBpbmRleCsrOwogICAgIC8vIE5v
dGUgdGhhdCB3ZSdyZSBzY2FubmluZyB0ZXh0IHJpZ2h0IHRvIGxlZnQgaW5zdGVhZCBvZiB0aGUg
bW9yZSBjb21tb24gbGVmdCB0byByaWdodCwgCiAgICAgLy8gc28gc3ludGF4IGRldGVjdGlvbiBp
cyBiYWNrd2FyZHMuCi0gICAgd2hpbGUgKHBhcmVuU3RhY2sgPiAwKSB7Ci0gICAgICAgIFVDaGFy
IGN1ckNoYXIgPSBzb3VyY2VUZXh0W2lkeF07CisgICAgZm9yICg7aW5kZXggPCBsZW5ndGggJiYg
cGFyZW5TdGFjayA+IDA7IGluZGV4KyspIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbG9vcCBk
b2Vzbid0IHByb3Blcmx5IGhhbmRsZSBwYXJlbnRoZXNlcyBvciBjb21tZW50IHN0YXJ0IG9yIGVu
ZCBiZWluZyBpbgorICAgICAgICAvLyBhIHN0cmluZyBsaXRlcmFsLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MzA0CisgICAgICAgIHJpZ2h0VG9MZWZ0SW5kZXgg
PSByaWdodFRvTGVmdEluZGV4RnJvbUluZGV4KGxlbmd0aCwgaW5kZXgpOworCisgICAgICAgIFVD
aGFyIGN1ckNoYXIgPSBzb3VyY2VUZXh0W3JpZ2h0VG9MZWZ0SW5kZXhdOwogICAgICAgICBpZiAo
aXNJbk11bHRpTGluZUNvbW1lbnQpICB7Ci0gICAgICAgICAgICBpZiAoY3VyQ2hhciA9PSAnKicg
JiYgc291cmNlVGV4dFtpZHggLSAxXSA9PSAnLycpIHsKKyAgICAgICAgICAgIGlmIChjdXJDaGFy
ID09ICcqJyAmJiBzb3VyY2VUZXh0W3JpZ2h0VG9MZWZ0SW5kZXggLSAxXSA9PSAnLycpIHsKICAg
ICAgICAgICAgICAgICBpc0luTXVsdGlMaW5lQ29tbWVudCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIGlkeCAtPSAxOworICAgICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAoY3VyQ2hhciA9PSAnKCcpCiAgICAgICAgICAgICBwYXJlblN0YWNr
IC09IDE7CiAgICAgICAgIGVsc2UgaWYgKGN1ckNoYXIgPT0gJyknKQogICAgICAgICAgICAgcGFy
ZW5TdGFjayArPSAxOwotICAgICAgICBlbHNlIGlmIChjdXJDaGFyID09ICcvJyAmJiBzb3VyY2VU
ZXh0W2lkeCAtIDFdID09ICcqJykgeworICAgICAgICBlbHNlIGlmIChjdXJDaGFyID09ICcvJyAm
JiBzb3VyY2VUZXh0W3JpZ2h0VG9MZWZ0SW5kZXggLSAxXSA9PSAnKicpIHsKICAgICAgICAgICAg
IGlzSW5NdWx0aUxpbmVDb21tZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlkeCAtPSAxOworICAg
ICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgfQotCi0gICAgICAgIGlkeCAtPSAxOwogICAgIH0K
IAotICAgIHJldHVybiBzb3VyY2VUZXh0LmxlZnQoaWR4ICsgMSk7CisgICAgcmV0dXJuIHNvdXJj
ZVRleHQubGVmdChyaWdodFRvTGVmdEluZGV4RnJvbUluZGV4KGxlbmd0aCwgaW5kZXgpICsgMSk7
CiB9CiAKIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIoY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5
cGUgdHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1
cnJlbmNlKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1OTQwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDYtMjQgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjE4MTg4
OSk6IGJhc3Nwcm8uY29tIGhhbmdzIG9uIGxvYWQgdW5kZXIgSlNDOjpFcnJvckluc3RhbmNlOjpm
aW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6Vk0mLCBXVEY6OlN0cmluZyBjb25z
dCYsIGJvb2wpICsgMjgwMSAoSmF2YVNjcmlwdENvcmUgKyAzNTYwNjg5KQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2Mjk4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHJlZ3Jlc3Npb24gdGVzdC4K
KworICAgICAgICAqIGpzL3JlZ3Jlc3MtMTQ2Mjk4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvcmVncmVzcy0xNDYyOTguaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0
LXRlc3RzL3JlZ3Jlc3MtMTQ2Mjk4LmpzOiBBZGRlZC4KKwogMjAxNS0wNi0yNCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBj
b2xvciAtYXBwbGUtd2lyZWxlc3MtcGxheWJhY2stdGFyZ2V0LWFjdGl2ZQpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy0xNDYyOTgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MtMTQ2Mjk4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQ2Mjk4LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitWZXJpZnkgdGhhdCB3ZSBkb24ndCBoYW5nIHdoaWxlIGhhbmRsaW5n
IGFuIGV4Y2VwdGlvbiBmb3IgYW4gdW5kZWZpbmVkIG5hdGl2ZSBmdW5jdGlvbi4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgUHJvcGVybHkgaGFuZGxlZCB1bmRlZmluZWQg
bmF0aXZlIGZ1bmN0aW9uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDYyOTguaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0NjI5OC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDYyOTguaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvcmVncmVzcy0xNDYyOTguanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3MtMTQ2Mjk4LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdyZXNzLTE0NjI5OC5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdyZXNzLTE0NjI5OC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQg
d2UgZG9uJ3QgaGFuZyB3aGlsZSBoYW5kbGluZyBhbiBleGNlcHRpb24gZm9yIGFuIHVuZGVmaW5l
ZCBuYXRpdmUgZnVuY3Rpb24uIik7CisKK215U3RyaW5nID0gIlRoZSBxdWljayBicm93biBmb3gu
Li4uIjsKKworZm9yIChpID0gMDsgaSA8IDEwMDA7IGkrKykKK3sKKyAgICB0cnkgeworICAgICAg
ICBpZiAobXlTdHJpbmcuc2VhcmNoKCJlbmQgb2YgY29tbWVudCAqLyIpICE9IC0xKQorICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiSW5jb3JyZWN0IGluZGV4IHJldHVybmVkIGZyb20gU3RyaW5nLnNl
YXJjaCgpLCBleHBlY3RlZCAtMSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKGkgPT0gOTAwKQorICAgICAgICBTdHJpbmcucHJvdG90eXBlLnNl
YXJjaCA9IHVuZGVmaW5lZDsKK30KKwordGVzdFBhc3NlZCgiUHJvcGVybHkgaGFuZGxlZCB1bmRl
ZmluZWQgbmF0aXZlIGZ1bmN0aW9uIik7Cg==
</data>
<flag name="review"
          id="280619"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255558</attachid>
            <date>2015-06-25 09:26:42 -0700</date>
            <delta_ts>2015-06-25 10:20:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>146298-2.patch</filename>
            <type>text/plain</type>
            <size>5970</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1OTQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE1LTA2LTI0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxODE4ODkpOiBiYXNzcHJvLmNvbSBoYW5ncyBvbiBsb2FkIHVuZGVy
IEpTQzo6RXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlZNJiwgV1RGOjpTdHJpbmcgY29uc3QmLCBib29sKSArIDI4MDEgKEphdmFTY3JpcHRDb3JlICsg
MzU2MDY4OSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHdlcmUgdW5kZXJmbG93aW5nIGluIEV4Y2VwdGlvbkhlbHBlcnMuY3BwOjpmdW5jdGlvbkNh
bGxCYXNlKCkgd2l0aCBhIHJpZ2h0IHRvIGxlZnQKKyAgICAgICAgc3RyaW5nIGluZGV4LiAgUmVz
dHJ1Y3R1cmVkIHRoZSBjb2RlIHRvIGRlcml2ZSB0aGUgcmlnaHQgdG8gbGVmdCBpbmRleCBmcm9t
IGEgbm9ybWFsCisgICAgICAgIGluZGV4LiAgQWxzbyBhZGRlZCBhIGNoZWNrIGZvciB0aGUgaW5k
ZXggYmVpbmcgaW4gcmFuZ2UgYXMgYSBsb29wIGV4aXQgY29uZGl0aW9uLgorCisgICAgICAgICog
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6cmlnaHRUb0xlZnRJ
bmRleEZyb21JbmRleCk6IE5ldyBoZWxwZXIgZnVuY3Rpb24gdG8gbWFwIGEgZm9yd2FyZCBpbmRl
eCB0byBhIAorICAgICAgICByZXZlcnNlIGluZGV4LgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNh
bGxCYXNlKToKKyAgICAgICAgKEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorCiAy
MDE1LTA2LTI0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIG9uIGdvZy5jb20gZHVlIHRvIFBvbHltb3JwaGljQ2FsbE5vZGUncyBoYXZpbmcgc3Rh
bGUgcmVmZXJlbmNlcyB0byBDYWxsTGlua0luZm8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAxODU5MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTExLDggKzExMSwxMyBAQCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRT
b3VyY2VBcHBlbmRlcihjb25zCiBzdGF0aWMgU3RyaW5nIGZ1bmN0aW9uQ2FsbEJhc2UoY29uc3Qg
U3RyaW5nJiBzb3VyY2VUZXh0KQogeyAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0
aGUgJ2Zvby5iYXInIHN1YnN0cmluZyBmcm9tICdmb28uYmFyKGJheiknLgotICAgIHVuc2lnbmVk
IGlkeCA9IHNvdXJjZVRleHQubGVuZ3RoKCkgLSAxOwotICAgIGlmIChzb3VyY2VUZXh0W2lkeF0g
IT0gJyknKSB7CisgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaGFzIHNpbXBsZSBwcm9jZXNz
aW5nIG9mIC8qICovIHN0eWxlIGNvbW1lbnRzLgorICAgIC8vIEl0IGRvZXNuJ3QgcHJvcGVybHkg
aGFuZGxlIGVtYmVkZGVkIGNvbW1lbnRzIG9mIHN0cmluZyBsaXRlcmFscyB0aGF0IGNvbnRhaW4K
KyAgICAvLyBwYXJlbnRoZXNpcyBvciBjb21tZW50IGNvbnN0cnVjdHMsIGUuZy4gZm9vLmJhcigi
L2FiY1wpKi8iKS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ2MzA0CisgICAgdW5zaWduZWQgc291cmNlTGVuZ3RoID0gc291cmNlVGV4dC5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBpZHggPSBzb3VyY2VMZW5ndGggLSAxOworICAgIGlmIChzb3VyY2VM
ZW5ndGggPCAyIHx8IHNvdXJjZVRleHRbaWR4XSAhPSAnKScpIHsKICAgICAgICAgLy8gRm9yIGZ1
bmN0aW9uIGNhbGxzIHRoYXQgaGF2ZSBtYW55IG5ldyBsaW5lcyBpbiBiZXR3ZWVuIHRoZWlyIG9w
ZW4gcGFyZW50aGVzaXMKICAgICAgICAgLy8gYW5kIHRoZWlyIGNsb3NpbmcgcGFyZW50aGVzaXMs
IHRoZSB0ZXh0IHJhbmdlIHBhc3NlZCBpbnRvIHRoZSBtZXNzYWdlIGFwcGVuZGVyIAogICAgICAg
ICAvLyB3aWxsIG5vdCBpbmxjdWRlIHRoZSB0ZXh0IGluIGJldHdlZW4gdGhlc2UgcGFyZW50aGVz
ZXMsIGl0IHdpbGwganVzdCBiZSB0aGUgZGVzaXJlZApAQCAtMTI4LDcgKzEzMyw3IEBAIHN0YXRp
YyBTdHJpbmcgZnVuY3Rpb25DYWxsQmFzZShjb25zdCBTdHIKICAgICB3aGlsZSAocGFyZW5TdGFj
ayA+IDApIHsKICAgICAgICAgVUNoYXIgY3VyQ2hhciA9IHNvdXJjZVRleHRbaWR4XTsKICAgICAg
ICAgaWYgKGlzSW5NdWx0aUxpbmVDb21tZW50KSAgewotICAgICAgICAgICAgaWYgKGN1ckNoYXIg
PT0gJyonICYmIHNvdXJjZVRleHRbaWR4IC0gMV0gPT0gJy8nKSB7CisgICAgICAgICAgICBpZiAo
aWR4ID4gMSAmJiBjdXJDaGFyID09ICcqJyAmJiBzb3VyY2VUZXh0W2lkeCAtIDFdID09ICcvJykg
ewogICAgICAgICAgICAgICAgIGlzSW5NdWx0aUxpbmVDb21tZW50ID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgaWR4IC09IDE7CiAgICAgICAgICAgICB9CkBAIC0xMzYsMTEgKzE0MSwxNCBAQCBz
dGF0aWMgU3RyaW5nIGZ1bmN0aW9uQ2FsbEJhc2UoY29uc3QgU3RyCiAgICAgICAgICAgICBwYXJl
blN0YWNrIC09IDE7CiAgICAgICAgIGVsc2UgaWYgKGN1ckNoYXIgPT0gJyknKQogICAgICAgICAg
ICAgcGFyZW5TdGFjayArPSAxOwotICAgICAgICBlbHNlIGlmIChjdXJDaGFyID09ICcvJyAmJiBz
b3VyY2VUZXh0W2lkeCAtIDFdID09ICcqJykgeworICAgICAgICBlbHNlIGlmIChpZHggPiAxICYm
IGN1ckNoYXIgPT0gJy8nICYmIHNvdXJjZVRleHRbaWR4IC0gMV0gPT0gJyonKSB7CiAgICAgICAg
ICAgICBpc0luTXVsdGlMaW5lQ29tbWVudCA9IHRydWU7CiAgICAgICAgICAgICBpZHggLT0gMTsK
ICAgICAgICAgfQogCisgICAgICAgIGlmICghaWR4KQorICAgICAgICAgICAgYnJlYWs7CisKICAg
ICAgICAgaWR4IC09IDE7CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODU5NDApCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
NS0wNi0yNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OIChyMTgxODg5KTogYmFzc3Byby5jb20gaGFuZ3Mgb24gbG9hZCB1bmRlciBKU0M6
OkVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpWTSYs
IFdURjo6U3RyaW5nIGNvbnN0JiwgYm9vbCkgKyAyODAxIChKYXZhU2NyaXB0Q29yZSArIDM1NjA2
ODkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYy
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcg
cmVncmVzc2lvbiB0ZXN0LgorCisgICAgICAgICoganMvcmVncmVzcy0xNDYyOTgtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzLTE0NjI5OC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDYyOTguanM6IEFkZGVkLgorCiAyMDE1
LTA2LTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGEgbmV3IGNvbG9yIC1hcHBsZS13aXJlbGVzcy1wbGF5YmFjay10YXJnZXQtYWN0
aXZlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0NjI5OC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDYyOTgtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy0xNDYyOTgtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1ZlcmlmeSB0aGF0IHdlIGRvbid0IGhh
bmcgd2hpbGUgaGFuZGxpbmcgYW4gZXhjZXB0aW9uIGZvciBhbiB1bmRlZmluZWQgbmF0aXZlIGZ1
bmN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBQcm9wZXJseSBo
YW5kbGVkIHVuZGVmaW5lZCBuYXRpdmUgZnVuY3Rpb24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
LTE0NjI5OC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MtMTQ2Mjk4
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzLTE0NjI5OC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdyZXNzLTE0NjI5OC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVncmVzcy0xNDYy
OTguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ3Jlc3Mt
MTQ2Mjk4LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Jl
Z3Jlc3MtMTQ2Mjk4LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKK2Rlc2NyaXB0
aW9uKCJWZXJpZnkgdGhhdCB3ZSBkb24ndCBoYW5nIHdoaWxlIGhhbmRsaW5nIGFuIGV4Y2VwdGlv
biBmb3IgYW4gdW5kZWZpbmVkIG5hdGl2ZSBmdW5jdGlvbi4iKTsKKworbXlTdHJpbmcgPSAiVGhl
IHF1aWNrIGJyb3duIGZveC4uLi4iOworCitmb3IgKGkgPSAwOyBpIDwgMTAwMDsgaSsrKQorewor
ICAgIHRyeSB7CisgICAgICAgIGlmIChteVN0cmluZy5zZWFyY2goImVuZCBvZiBjb21tZW50ICov
IikgIT0gLTEpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbmNvcnJlY3QgaW5kZXggcmV0dXJu
ZWQgZnJvbSBTdHJpbmcuc2VhcmNoKCksIGV4cGVjdGVkIC0xIik7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaSA9PSA5MDApCisgICAgICAgIFN0
cmluZy5wcm90b3R5cGUuc2VhcmNoID0gdW5kZWZpbmVkOworfQorCit0ZXN0UGFzc2VkKCJQcm9w
ZXJseSBoYW5kbGVkIHVuZGVmaW5lZCBuYXRpdmUgZnVuY3Rpb24iKTsK
</data>
<flag name="review"
          id="280634"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>