<?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>14439</bug_id>
          
          <creation_ts>2007-06-27 17:51:22 -0700</creation_ts>
          <short_desc>Can&apos;t set el.type on a &lt;button&gt; element</short_desc>
          <delta_ts>2012-06-13 11:54:26 -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>DOM</component>
          <version>523.x (Safari 3)</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>EasyFix, HasReduction, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kravvitz">kravvitz_webkit</reporter>
          <assigned_to name="Edaena Salinas">edaena</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ian</cc>
    
    <cc>ojan</cc>
    
    <cc>olmo.maldonado</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>6058</commentid>
    <comment_count>0</comment_count>
    <who name="Kravvitz">kravvitz_webkit</who>
    <bug_when>2007-06-27 17:51:22 -0700</bug_when>
    <thetext>Setting el.type on a button element created with document.createElement() doesn&apos;t work. You can set it with el.setAttribute(), however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5737</commentid>
    <comment_count>1</comment_count>
      <attachid>15350</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-07-02 05:53:50 -0700</bug_when>
    <thetext>Created attachment 15350
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5738</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-07-02 05:55:16 -0700</bug_when>
    <thetext>Confirmed with r23841.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5288</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-07-07 08:48:19 -0700</bug_when>
    <thetext>This is not a regression as the same bug occurs in Safari 2.0.4 (419.3) with original WebKit on Mac OS X 10.4.10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5285</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-07-07 09:10:50 -0700</bug_when>
    <thetext>type is a readonly attribute according to &lt;http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-34812697&gt;. Do other browsers allow you to change it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5275</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-07-07 10:09:17 -0700</bug_when>
    <thetext>Yes, the test case passes in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2622</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-08-10 08:45:21 -0700</bug_when>
    <thetext>This is very easy to fix by changing HTMLButtonElement.h/cpp/idl to add setType, that just sets the type attribute.

If we decide to make the change, we should also tell the HTML 5 folks, since this behavior conflicts with the DOM Level 2 standard, so we can standardize on Firefox&apos;s behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642796</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-06-06 14:09:17 -0700</bug_when>
    <thetext>HTML5 removes the readonly restriction (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#htmlbuttonelement) so we should too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647114</commentid>
    <comment_count>8</comment_count>
      <attachid>147118</attachid>
    <who name="Edaena Salinas">edaena</who>
    <bug_when>2012-06-12 11:26:36 -0700</bug_when>
    <thetext>Created attachment 147118
Proposed fix and tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647117</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 11:29:20 -0700</bug_when>
    <thetext>Please wait for approval from timothy@apple.com (or another member of the Apple Safari Team) before submitting because this patch contains changes to the Apple Mac WebKit.framework public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647145</commentid>
    <comment_count>10</comment_count>
      <attachid>147118</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-12 11:52:15 -0700</bug_when>
    <thetext>Comment on attachment 147118
Proposed fix and tests.

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

&gt; Source/WebCore/html/HTMLButtonElement.cpp:67
&gt; +void HTMLButtonElement::setType(const String&amp; type)
&gt; +{
&gt; +    if (type.lower() == &quot;reset&quot;)
&gt; +        m_type = RESET;
&gt; +    else if (type.lower() == &quot;submit&quot;)
&gt; +        m_type = SUBMIT;
&gt; +    else if (type.lower() == &quot;button&quot;)
&gt; +        m_type = BUTTON;
&gt; +    else
&gt; +        m_type = SUBMIT;
&gt; +    
&gt; +}

This is probably the wrong way to do it. The right way for this to work is for the setter half of this to be straight content attribute reflection. This is explained in the HTML standard in the section that talks about content attribute that are enumerated attributes and IDL attributes are limited to only known values. The getter is special but the setter is just straight content attribute reflection. Since I believe there is no IDL syntax to make the setter reflect and the getter work with custom code, you will need to write a standard reflection setter function. That looks like this:

void HTMLButtonElement::setType(const AtomicString&amp; type)
{
    setAttribute(typeAttr, type);
}

And we need test cases showing that getAttribute can see the actual value string the type attribute was set to and can distinguish strings even though the type attribute will return only one of the three valid type strings.

If you look at the HTMLInputElement::setType you’ll see an example of something almost exactly like this, only with an unneeded special case for empty string.

Later we could add IDL syntax for setter-only reflection and then it would autogenerate the setter and we could delete the function.

If we were keeping this function, we should use equalIgnoringCase rather than lower, and we should not have a case for submit.

&gt; LayoutTests/fast/dom/HTMLButtonElement/change-type.html:21
&gt; +    btn.type = &quot;submit&quot;;
&gt; +    shouldBe(&quot;btn.type = &apos;submit&apos;; btn.type&quot;, &quot;&apos;submit&apos;&quot;);

There is no need to set the type twice. This code does it outside the shouldBe expression and then a second time inside the shouldBe expression. Only the one inside the shouldBe is needed.

As I mentioned above we need to test both what btn.type returns and also what btn.getAttribute(&apos;type&apos;) returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647148</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-12 11:52:26 -0700</bug_when>
    <thetext>Thanks for taking this on!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647378</commentid>
    <comment_count>12</comment_count>
      <attachid>147172</attachid>
    <who name="Edaena Salinas">edaena</who>
    <bug_when>2012-06-12 14:59:34 -0700</bug_when>
    <thetext>Created attachment 147172
Proposed fix and tests.

I am not sure about the behavior of getAttribute(&apos;type&apos;) since it is not returning the same value as el.type. It does not return a lowercase valid value or an invalid value reseted to &apos;submit&apos;.  

In addition, when setting btn.type = null, btn.getAttribute(&apos;type&apos;) returns &apos;&apos; in Firefox. In WebKit it returns null + &apos;&apos; (null of type string).  Because of this, the corresponding test will fail in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647389</commentid>
    <comment_count>13</comment_count>
      <attachid>147172</attachid>
    <who name="Edaena Salinas">edaena</who>
    <bug_when>2012-06-12 15:06:04 -0700</bug_when>
    <thetext>Comment on attachment 147172
Proposed fix and tests.

I&apos;m not sure about the behavior of getAttribute(&quot;type&quot;). It does not ignore uppercase letters of valid inputs such as &apos;RESET&apos; and it does not return &apos;submit&apos; when invalid values were set using el.type.

In addition, when setting btn.type = null, btn.getAttribute(&apos;type&apos;) returns &apos;&apos; in Firefox. In WebKit it returns null + &apos;&apos;. The corresponding test for this fails in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647521</commentid>
    <comment_count>14</comment_count>
      <attachid>147172</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-06-12 17:27:33 -0700</bug_when>
    <thetext>Comment on attachment 147172
Proposed fix and tests.

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

&gt; Source/WebCore/html/HTMLButtonElement.idl:33
&gt; +        attribute DOMString type;

I believe with the [Reflect] extended attribute added here you don&apos;t need setType() on HTMLButtonElement.{h,cpp}, since the bindings generator will automatically create it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647528</commentid>
    <comment_count>15</comment_count>
      <attachid>147172</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-06-12 17:33:01 -0700</bug_when>
    <thetext>Comment on attachment 147172
Proposed fix and tests.

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

&gt;&gt; Source/WebCore/html/HTMLButtonElement.idl:33
&gt;&gt; +        attribute DOMString type;
&gt; 
&gt; I believe with the [Reflect] extended attribute added here you don&apos;t need setType() on HTMLButtonElement.{h,cpp}, since the bindings generator will automatically create it.

Ach! I missed Darin&apos;s comment, please ignore.
I would, however, file a new bug to extend the bindings generator to allow for custom get/set with reflection, and cite this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647539</commentid>
    <comment_count>16</comment_count>
      <attachid>147172</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-12 17:55:50 -0700</bug_when>
    <thetext>Comment on attachment 147172
Proposed fix and tests.

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

&gt; Source/WebCore/html/HTMLButtonElement.cpp:56
&gt; +void HTMLButtonElement::setType(const String&amp; type)

We’ll get slightly better efficiency if we make the type of this argument be AtomicString. But we can do that after this lands in a separate patch.

&gt; LayoutTests/fast/dom/HTMLButtonElement/change-type.html:61
&gt; +    shouldBe(&quot;btn.type = null; btn.type&quot;, &quot;&apos;submit&apos;&quot;);
&gt; +    shouldBe(&quot;btn.getAttribute(&apos;type&apos;)&quot;, &quot;null + &apos;&apos;&quot;);

The better way to write the expected value here is just &quot;&apos;null&apos;&quot;, since it’s just the string null that we expect. &quot;null + &apos;&apos;&quot; is a roundabout way to write that.

But I am surprised this is the correct behavior. It might be worth looking more closely at the HTML specification and the other web browsers to double check. I would have expected that setting type to null would delete the type attribute, not set it to the string &quot;null&quot;, and if so we can achieve that by setting the right flag in the IDL file.

&gt; LayoutTests/fast/dom/HTMLButtonElement/change-type.html:64
&gt; +    shouldBe(&quot;btn.type = undefined; btn.type&quot;, &quot;&apos;submit&apos;&quot;);
&gt; +    shouldBe(&quot;btn.getAttribute(&apos;type&apos;)&quot;, &quot;undefined + &apos;&apos;&quot;);

As with null, &quot;&apos;undefined&apos;&quot; would be better than &quot;undefined + &apos;&apos;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647544</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-12 18:00:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;m not sure about the behavior of getAttribute(&quot;type&quot;). It does not ignore uppercase letters of valid inputs such as &apos;RESET&apos;

That is correct behavior.

&gt; it does not return &apos;submit&apos; when invalid values were set using el.type.

That is also correct behavior.

&gt; In addition, when setting btn.type = null, btn.getAttribute(&apos;type&apos;) returns &apos;&apos; in Firefox. In WebKit it returns null + &apos;&apos;. The corresponding test for this fails in Firefox.

Yes, I think we have a bug here, and it’s worth fixing it.

We have to nail down what the expected result really is. I would not expect the empty string, though, I’d expect a JavaScript null.

Then, to get that behavior, we would need to add something like [TreatNullAs=NullString] to the attribute in the IDL file; not sure I have the syntax right. This would pass through the JavaScript null as a null string, which setAttribute would handle by removing the attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647663</commentid>
    <comment_count>18</comment_count>
      <attachid>147172</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 21:50:59 -0700</bug_when>
    <thetext>Comment on attachment 147172
Proposed fix and tests.

Clearing flags on attachment: 147172

Committed r120158: &lt;http://trac.webkit.org/changeset/120158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647664</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 21:51:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648173</commentid>
    <comment_count>20</comment_count>
    <who name="Edaena Salinas">edaena</who>
    <bug_when>2012-06-13 09:59:29 -0700</bug_when>
    <thetext>(In reply to comment #17)

&gt; Then, to get that behavior, we would need to add something like [TreatNullAs=NullString] to the attribute in the IDL file; not sure I have the syntax right. This would pass through the JavaScript null as a null string, which setAttribute would handle by removing the attribute.

Does this also apply to undefined? [TreatUndefinedAs=NullString]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648316</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-13 11:54:26 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #17)
&gt; &gt; Then, to get that behavior, we would need to add something like [TreatNullAs=NullString] to the attribute in the IDL file; not sure I have the syntax right. This would pass through the JavaScript null as a null string, which setAttribute would handle by removing the attribute.
&gt; 
&gt; Does this also apply to undefined?

I believe it does not. I think that undefined is supposed to change into the string &quot;undefined&quot;. But that’s from memory. Might want to research or test with other browsers to be 100% sure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15350</attachid>
            <date>2007-07-02 05:53:50 -0700</date>
            <delta_ts>2007-07-02 05:53:50 -0700</delta_ts>
            <desc>test case</desc>
            <filename>14439.html</filename>
            <type>text/html</type>
            <size>220</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGJvZHk+Cjxmb3JtIGFjdGlvbj0iI3N1Ym1pdHRlZCI+CiAgPGlucHV0IHR5cGU9InRleHQiPgog
IDxidXR0b24gaWQ9ImIiIHR5cGU9InN1Ym1pdCI+cmVzZXQ8L2J1dHRvbj4KPC9mb3JtPgo8c2Ny
aXB0Pgp0cnkgewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiIikudHlwZSA9ICJyZXNldCI7
Cn0gY2F0Y2ggKGV4KSB7CiAgYWxlcnQoZXgpOwp9Cjwvc2NyaXB0Pgo8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147118</attachid>
            <date>2012-06-12 11:26:36 -0700</date>
            <delta_ts>2012-06-12 14:59:34 -0700</delta_ts>
            <desc>Proposed fix and tests.</desc>
            <filename>TypePatch.txt</filename>
            <type>text/plain</type>
            <size>8915</size>
            <attacher name="Edaena Salinas">edaena</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMDAxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA2LTExICBFZGFlbmEg
U2FsaW5hcyBKYXNzbyAgPGVkYWVuYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FuJ3Qgc2V0IGVs
LnR5cGUgb24gYSA8YnV0dG9uPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0hUTUxCdXR0b25FbGVtZW50L2NoYW5n
ZS10eXBlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNl
cy5oOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUpOiBBZGRlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBzZXRUeXBlIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxCdXR0b25FbGVtZW50KTogQWRkZWQgc2V0
VHlwZSBtZXRob2QuCisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGw6IFJlbW92
ZWQgcmVhZG9ubHkgcmVzdHJpY3Rpb24gdG8gdGhlIHR5cGUgdmFyaWFibGUuCisKIDIwMTItMDYt
MTEgIE1heCBGZWlsICA8bWZlaWxAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVW5l
eHBlY3RlZCByZXBlYXRzIG9mIHNob3J0IG1lZGlhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gMTE5NTAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAsNyBAQCBAaW50ZXJmYWNlIERPTUhUTUxCdXR0
b25FbGVtZW50IDogRE9NSFRNCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgRE9NSFRNTEZv
cm1FbGVtZW50ICpmb3JtOwogQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7CiBAcHJvcGVydHkoY29w
eSkgTlNTdHJpbmcgKm5hbWU7Ci1AcHJvcGVydHkocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp0
eXBlOworQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICp0eXBlOwogQHByb3BlcnR5KGNvcHkpIE5T
U3RyaW5nICp2YWx1ZTsKIEBwcm9wZXJ0eSBCT09MIGF1dG9mb2N1cyBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOwogQHByb3BlcnR5KHJlYWRvbmx5KSBCT09MIHdpbGxWYWxpZGF0ZSBB
VkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDExOTUwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1
MywxOSBAQCBQYXNzUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MQnV0dG9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9y
bSkpOwogfQogCit2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKK3sKKyAgICBpZiAodHlwZS5sb3dlcigpID09ICJyZXNldCIpCisgICAgICAgIG1fdHlw
ZSA9IFJFU0VUOworICAgIGVsc2UgaWYgKHR5cGUubG93ZXIoKSA9PSAic3VibWl0IikKKyAgICAg
ICAgbV90eXBlID0gU1VCTUlUOworICAgIGVsc2UgaWYgKHR5cGUubG93ZXIoKSA9PSAiYnV0dG9u
IikKKyAgICAgICAgbV90eXBlID0gQlVUVE9OOworICAgIGVsc2UKKyAgICAgICAgbV90eXBlID0g
U1VCTUlUOworICAgIAorfQorCiBSZW5kZXJPYmplY3QqIEhUTUxCdXR0b25FbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAkocmV2aXNpb24gMTE5NTAwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4
IEBAIGNsYXNzIEhUTUxCdXR0b25FbGVtZW50IDogcHVibGljIEhUTUxGb3IKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQnV0dG9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogCisgICAgdm9pZCBzZXRU
eXBlKGNvbnN0IFN0cmluZyYpOworICAgIAogICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogCiBw
cml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwJ
KHJldmlzaW9uIDExOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBodG1sIHsKICAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIGZvcm1Ob1ZhbGlkYXRlOwogICAgICAg
ICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBmb3JtVGFyZ2V0OwogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBuYW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHR5cGU7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKICAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgdmFsdWU7CiAKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2lsbFZhbGlkYXRlOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTIwMDE4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMDYtMTEgIEVkYWVuYSBTYWxpbmFzIEphc3NvICA8ZWRhZW5hQGFwcGxl
LmNvbT4KKworICAgICAgICBDYW4ndCBzZXQgZWwudHlwZSBvbiBhIDxidXR0b24+IGVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MQnV0dG9uRWxlbWVudC9jaGFuZ2UtdHlwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxCdXR0b25FbGVtZW50L2NoYW5nZS10eXBlLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTA2LTExICBNYXggRmVpbCAgPG1mZWlsQHJpbS5jb20+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIFVuZXhwZWN0ZWQgcmVwZWF0cyBvZiBzaG9ydCBtZWRpYQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEJ1dHRvbkVsZW1lbnQvY2hhbmdlLXR5cGUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxCdXR0b25FbGVtZW50L2No
YW5nZS10eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxCdXR0b25FbGVtZW50L2NoYW5nZS10eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyOCBAQAorVGVzdHMgZm9yIGJ1ZyAxNDQzOS4gQnV0dG9uIHR5cGUgc2hv
dWxkIGJlIHNldCB1c2luZyBlbC50eXBlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBidG4udHlwZSA9ICdzdWJtaXQnOyBidG4udHlwZSBpcyAnc3VibWl0JworUEFTUyBi
dG4udHlwZSA9ICdyZXNldCc7IGJ0bi50eXBlIGlzICdyZXNldCcKK1BBU1MgYnRuLnR5cGUgPSAn
YnV0dG9uJzsgYnRuLnR5cGUgaXMgJ2J1dHRvbicKK1BBU1MgYnRuLnR5cGUgPSAncmVzZXQnOyBi
dG4udHlwZSBpcyAncmVzZXQnCitQQVNTIGJ0bi50eXBlID0gJ3N1Qm1pVCc7IGJ0bi50eXBlIGlz
ICdzdWJtaXQnCitQQVNTIGJ0bi50eXBlID0gJyc7IGJ0bi50eXBlIGlzICdzdWJtaXQnCitQQVNT
IGJ0bi50eXBlID0gJ2InOyBidG4udHlwZSBpcyAnc3VibWl0JworUEFTUyBidG4udHlwZSA9ICdS
RVNFVCc7IGJ0bi50eXBlIGlzICdyZXNldCcKK1BBU1MgYnRuLnR5cGUgPSAnJzsgYnRuLnR5cGUg
aXMgJ3N1Ym1pdCcKK1BBU1MgYnRuLnR5cGUgPSAnLyc7IGJ0bi50eXBlIGlzICdzdWJtaXQnCitQ
QVNTIGJ0bi50eXBlID0gJyAnOyBidG4udHlwZSBpcyAnc3VibWl0JworUEFTUyBidG4udHlwZSA9
ICdidXR0b24gJzsgYnRuLnR5cGUgaXMgJ3N1Ym1pdCcKK1BBU1MgYnRuLnR5cGUgPSAnIGIgdSB0
IHQgbyBuICc7IGJ0bi50eXBlIGlzICdzdWJtaXQnCitQQVNTIGJ0bi50eXBlID0gbnVsbDsgYnRu
LnR5cGUgaXMgJ3N1Ym1pdCcKK1BBU1MgYnRuLnR5cGUgPSB1bmRlZmluZWQ7IGJ0bi50eXBlIGlz
ICdzdWJtaXQnCitQQVNTIGJ0bi50eXBlID0gJ3Jlc2V0JzsgdHh0LnZhbHVlID0gJ2hlbGxvJzsg
YnRuLmNsaWNrKCk7IHR4dC52YWx1ZSBpcyAnJworUEFTUyBkaWRTdWJtaXQgaXMgZmFsc2UKK1BB
U1MgYnRuLnR5cGUgPSAnYnV0dG9uJzsgdHh0LnZhbHVlID0gJ2hlbGxvJzsgYnRuLmNsaWNrKCk7
IHR4dC52YWx1ZSBpcyAnaGVsbG8nCitQQVNTIGJ0bi50eXBlID0gJ3N1Ym1pdCc7IGJ0bi5jbGlj
aygpOyBkaWRTdWJtaXQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisgIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJ1dHRv
bkVsZW1lbnQvY2hhbmdlLXR5cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQnV0dG9uRWxlbWVudC9jaGFuZ2UtdHlwZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJ1dHRvbkVsZW1lbnQvY2hhbmdlLXR5cGUuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0cygpIj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyBmb3IgPGEgaHJlZj1c
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQzOVwiPiBcCitidWcg
MTQ0Mzk8L2E+LiBCdXR0b24gdHlwZSBzaG91bGQgYmUgc2V0IHVzaW5nIGVsLnR5cGUuIik7CisK
K3ZhciBkaWRTdWJtaXQgPSBmYWxzZTsKK3ZhciBidG47Cit2YXIgdHh0OworCitmdW5jdGlvbiB0
ZXN0VHlwZVZhbHVlKCkKK3sKKyAgICBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYiIp
OworICAgIGJ0bi50eXBlID0gInN1Ym1pdCI7CisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJ3N1
Ym1pdCc7IGJ0bi50eXBlIiwgIidzdWJtaXQnIik7CisKKyAgICBidG4udHlwZSA9ICJyZXNldCI7
CisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJ3Jlc2V0JzsgYnRuLnR5cGUiLCAiJ3Jlc2V0JyIp
OworCisgICAgYnRuLnR5cGUgPSAiYnV0dG9uIjsKKyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSAn
YnV0dG9uJzsgYnRuLnR5cGUiLCAiJ2J1dHRvbiciKTsKKworICAgIGJ0bi50eXBlID0gInJlc2V0
IjsKKyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSAncmVzZXQnOyBidG4udHlwZSIsICIncmVzZXQn
Iik7CisKKyAgICBidG4udHlwZSA9ICJzdUJtaVQiOworICAgIHNob3VsZEJlKCJidG4udHlwZSA9
ICdzdUJtaVQnOyBidG4udHlwZSIsICInc3VibWl0JyIpOworCisgICAgYnRuLnR5cGUgPSAiIjsK
KyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSAnJzsgYnRuLnR5cGUiLCAiJ3N1Ym1pdCciKTsKKwor
ICAgIGJ0bi50eXBlID0gImIiOworICAgIHNob3VsZEJlKCJidG4udHlwZSA9ICdiJzsgYnRuLnR5
cGUiLCAiJ3N1Ym1pdCciKTsKKworICAgIGJ0bi50eXBlID0gIlJFU0VUIjsKKyAgICBzaG91bGRC
ZSgiYnRuLnR5cGUgPSAnUkVTRVQnOyBidG4udHlwZSIsICIncmVzZXQnIik7CisKKyAgICBidG4u
dHlwZSA9ICIiOworICAgIHNob3VsZEJlKCJidG4udHlwZSA9ICcnOyBidG4udHlwZSIsICInc3Vi
bWl0JyIpOworCisgICAgYnRuLnR5cGUgPSAiLyI7CisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0g
Jy8nOyBidG4udHlwZSIsICInc3VibWl0JyIpOworCisgICAgYnRuLnR5cGUgPSAiICI7CisgICAg
c2hvdWxkQmUoImJ0bi50eXBlID0gJyAnOyBidG4udHlwZSIsICInc3VibWl0JyIpOworCisgICAg
YnRuLnR5cGUgPSAiYnV0dG9uICI7CisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJ2J1dHRvbiAn
OyBidG4udHlwZSIsICInc3VibWl0JyIpOworCisgICAgYnRuLnR5cGUgPSAiIGIgdSB0IHQgbyBu
ICI7CisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJyBiIHUgdCB0IG8gbiAnOyBidG4udHlwZSIs
ICInc3VibWl0JyIpOworCisgICAgYnRuLnR5cGUgPSBudWxsOworICAgIHNob3VsZEJlKCJidG4u
dHlwZSA9IG51bGw7IGJ0bi50eXBlIiwgIidzdWJtaXQnIik7CisKKyAgICBidG4udHlwZSA9IHVu
ZGVmaW5lZDsKKyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSB1bmRlZmluZWQ7IGJ0bi50eXBlIiwg
IidzdWJtaXQnIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RUeXBlQmVoYXZpb3IoKQoreworICAgIGJ0
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiIik7CisgICAgdHh0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInQiKTsKKworICAgIGJ0bi50eXBlID0gInN1Ym1pdCI7CisgICAgdHh0LnZh
bHVlID0gImhlbGxvIjsKKworICAgIGJ0bi50eXBlID0gInJlc2V0IjsKKyAgICBidG4uY2xpY2so
KTsKKyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSAncmVzZXQnOyB0eHQudmFsdWUgPSAnaGVsbG8n
OyBidG4uY2xpY2soKTsgdHh0LnZhbHVlIiwgIicnIik7CisgICAgc2hvdWxkQmUoImRpZFN1Ym1p
dCIsICJmYWxzZSIpOworCisgICAgdHh0LnZhbHVlID0gImhlbGxvIjsKKyAgICBidG4udHlwZSA9
ICJidXR0b24iOworICAgIGJ0bi5jbGljaygpOworICAgIHNob3VsZEJlKCJidG4udHlwZSA9ICdi
dXR0b24nOyB0eHQudmFsdWUgPSAnaGVsbG8nOyBidG4uY2xpY2soKTsgdHh0LnZhbHVlIiwgIido
ZWxsbyciKTsKK30KKworZnVuY3Rpb24gdGVzdFN1Ym1pdEJlaGF2aW9yKCkKK3sKKyAgICBidG4u
dHlwZSA9ICJzdWJtaXQiOworICAgIGJ0bi5jbGljaygpOworICAgIHNob3VsZEJlKCJidG4udHlw
ZSA9ICdzdWJtaXQnOyBidG4uY2xpY2soKTsgZGlkU3VibWl0IiwgInRydWUiKTsKKyAgICBkaWRT
dWJtaXQgPSBmYWxzZTsKKyAgICB0eHQudmFsdWUgPSAiIjsKK30KKworZnVuY3Rpb24gZm9ybVdh
c1N1Ym1pdHRlZCgpCit7CisgICAgZGlkU3VibWl0ID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdHMoKQoreworICAgIHRlc3RUeXBlVmFsdWUoKTsKKyAgICB0ZXN0VHlwZUJlaGF2aW9yKCk7
CisgICAgdGVzdFN1Ym1pdEJlaGF2aW9yKCk7CisgICAgCisgICAgd2FzUG9zdFRlc3RTY3JpcHRQ
YXJzZWQgPSB0cnVlOworCisgICAgaWYgKHdpbmRvdy5qc1Rlc3RJc0FzeW5jKSB7CisgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cud2FzRmluaXNo
SlNUZXN0Q2FsbGVkKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSBlbHNlCisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKzwvc2NyaXB0PgorPGZvcm0gaWQ9ImYiIGFj
dGlvbj0iI3N1Ym1pdHRlZCIgb25zdWJtaXQ9ImZvcm1XYXNTdWJtaXR0ZWQoKTsiPgorICA8aW5w
dXQgaWQ9InQiIHR5cGU9InRleHQiIC8+CisgIDxidXR0b24gaWQ9ImIiPjwvYnV0dG9uPgorPC9m
b3JtPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="154551"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="154552"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147172</attachid>
            <date>2012-06-12 14:59:34 -0700</date>
            <delta_ts>2012-06-12 21:50:59 -0700</delta_ts>
            <desc>Proposed fix and tests.</desc>
            <filename>TypePatch.txt</filename>
            <type>text/plain</type>
            <size>9691</size>
            <attacher name="Edaena Salinas">edaena</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMDAxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA2LTExICBFZGFlbmEg
U2FsaW5hcyBKYXNzbyAgPGVkYWVuYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FuJ3Qgc2V0IGVs
LnR5cGUgb24gYSA8YnV0dG9uPiBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0hUTUxCdXR0b25FbGVtZW50L2NoYW5n
ZS10eXBlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNl
cy5oOgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OnNldFR5cGUpOiBBZGRlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBzZXRUeXBlIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxCdXR0b25FbGVtZW50KTogQWRkZWQgc2V0
VHlwZSBtZXRob2QuCisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGw6IFJlbW92
ZWQgcmVhZG9ubHkgcmVzdHJpY3Rpb24gdG8gdGhlIHR5cGUgdmFyaWFibGUuCisKIDIwMTItMDYt
MTEgIE1heCBGZWlsICA8bWZlaWxAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVW5l
eHBlY3RlZCByZXBlYXRzIG9mIHNob3J0IG1lZGlhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gMTE5NTAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAsNyBAQCBAaW50ZXJmYWNlIERPTUhUTUxCdXR0
b25FbGVtZW50IDogRE9NSFRNCiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgRE9NSFRNTEZv
cm1FbGVtZW50ICpmb3JtOwogQHByb3BlcnR5IEJPT0wgZGlzYWJsZWQ7CiBAcHJvcGVydHkoY29w
eSkgTlNTdHJpbmcgKm5hbWU7Ci1AcHJvcGVydHkocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp0
eXBlOworQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICp0eXBlOwogQHByb3BlcnR5KGNvcHkpIE5T
U3RyaW5nICp2YWx1ZTsKIEBwcm9wZXJ0eSBCT09MIGF1dG9mb2N1cyBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOwogQHByb3BlcnR5KHJlYWRvbmx5KSBCT09MIHdpbGxWYWxpZGF0ZSBB
VkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDExOTUwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1
MywxMSBAQCBQYXNzUmVmUHRyPEhUTUxCdXR0b25FbGVtZW50PiBIVE1MQnV0dG9uCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MQnV0dG9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9y
bSkpOwogfQogCit2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKK3sKKyAgICBzZXRBdHRyaWJ1dGUodHlwZUF0dHIsIHR5cGUpOworfQorCiBSZW5kZXJP
YmplY3QqIEhUTUxCdXR0b25FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9u
KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAkocmV2
aXNpb24gMTE5NTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIGNsYXNzIEhUTUxCdXR0b25FbGVtZW50
IDogcHVibGljIEhUTUxGb3IKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQnV0
dG9uRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxG
b3JtRWxlbWVudCopOwogCisgICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIAog
ICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5pZGwJKHJldmlzaW9uIDExOTUwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBi
b29sZWFuIGZvcm1Ob1ZhbGlkYXRlOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0
cmluZyBmb3JtVGFyZ2V0OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBu
YW1lOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHR5cGU7CisgICAgICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBE
T01TdHJpbmcgdmFsdWU7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2ls
bFZhbGlkYXRlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwMDE4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTEgIEVkYWVu
YSBTYWxpbmFzIEphc3NvICA8ZWRhZW5hQGFwcGxlLmNvbT4KKworICAgICAgICBDYW4ndCBzZXQg
ZWwudHlwZSBvbiBhIDxidXR0b24+IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQnV0dG9uRWxlbWVudC9jaGFuZ2Ut
dHlwZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxCdXR0b25F
bGVtZW50L2NoYW5nZS10eXBlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTExICBNYXggRmVpbCAg
PG1mZWlsQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVuZXhwZWN0ZWQgcmVwZWF0
cyBvZiBzaG9ydCBtZWRpYQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJ1dHRvbkVs
ZW1lbnQvY2hhbmdlLXR5cGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxCdXR0b25FbGVtZW50L2NoYW5nZS10eXBlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxCdXR0b25FbGVtZW50L2NoYW5n
ZS10eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorVGVzdHMg
Zm9yIGJ1ZyAxNDQzOS4gQnV0dG9uIHR5cGUgc2hvdWxkIGJlIHNldCB1c2luZyBlbC50eXBlLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBidG4udHlwZSA9ICdzdWJtaXQn
OyBidG4udHlwZSBpcyAnc3VibWl0JworUEFTUyBidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykgaXMg
J3N1Ym1pdCcKK1BBU1MgYnRuLnR5cGUgPSAncmVzZXQnOyBidG4udHlwZSBpcyAncmVzZXQnCitQ
QVNTIGJ0bi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSBpcyAncmVzZXQnCitQQVNTIGJ0bi50eXBlID0g
J2J1dHRvbic7IGJ0bi50eXBlIGlzICdidXR0b24nCitQQVNTIGJ0bi5nZXRBdHRyaWJ1dGUoJ3R5
cGUnKSBpcyAnYnV0dG9uJworUEFTUyBidG4udHlwZSA9ICdyZXNldCc7IGJ0bi50eXBlIGlzICdy
ZXNldCcKK1BBU1MgYnRuLmdldEF0dHJpYnV0ZSgndHlwZScpIGlzICdyZXNldCcKK1BBU1MgYnRu
LnR5cGUgPSAnc3VCbWlUJzsgYnRuLnR5cGUgaXMgJ3N1Ym1pdCcKK1BBU1MgYnRuLmdldEF0dHJp
YnV0ZSgndHlwZScpIGlzICdzdUJtaVQnCitQQVNTIGJ0bi50eXBlID0gJyc7IGJ0bi50eXBlIGlz
ICdzdWJtaXQnCitQQVNTIGJ0bi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSBpcyAnJworUEFTUyBidG4u
dHlwZSA9ICdiJzsgYnRuLnR5cGUgaXMgJ3N1Ym1pdCcKK1BBU1MgYnRuLmdldEF0dHJpYnV0ZSgn
dHlwZScpIGlzICdiJworUEFTUyBidG4udHlwZSA9ICdSRVNFVCc7IGJ0bi50eXBlIGlzICdyZXNl
dCcKK1BBU1MgYnRuLmdldEF0dHJpYnV0ZSgndHlwZScpIGlzICdSRVNFVCcKK1BBU1MgYnRuLnR5
cGUgPSAnJzsgYnRuLnR5cGUgaXMgJ3N1Ym1pdCcKK1BBU1MgYnRuLmdldEF0dHJpYnV0ZSgndHlw
ZScpIGlzICcnCitQQVNTIGJ0bi50eXBlID0gJy8nOyBidG4udHlwZSBpcyAnc3VibWl0JworUEFT
UyBidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykgaXMgJy8nCitQQVNTIGJ0bi50eXBlID0gJyAnOyBi
dG4udHlwZSBpcyAnc3VibWl0JworUEFTUyBidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykgaXMgJyAn
CitQQVNTIGJ0bi50eXBlID0gJ2J1dHRvbiAnOyBidG4udHlwZSBpcyAnc3VibWl0JworUEFTUyBi
dG4uZ2V0QXR0cmlidXRlKCd0eXBlJykgaXMgJ2J1dHRvbiAnCitQQVNTIGJ0bi50eXBlID0gJyBi
IHUgdCB0IG8gbiAnOyBidG4udHlwZSBpcyAnc3VibWl0JworUEFTUyBidG4uZ2V0QXR0cmlidXRl
KCd0eXBlJykgaXMgJyBiIHUgdCB0IG8gbiAnCitQQVNTIGJ0bi50eXBlID0gbnVsbDsgYnRuLnR5
cGUgaXMgJ3N1Ym1pdCcKK1BBU1MgYnRuLmdldEF0dHJpYnV0ZSgndHlwZScpIGlzIG51bGwgKyAn
JworUEFTUyBidG4udHlwZSA9IHVuZGVmaW5lZDsgYnRuLnR5cGUgaXMgJ3N1Ym1pdCcKK1BBU1Mg
YnRuLmdldEF0dHJpYnV0ZSgndHlwZScpIGlzIHVuZGVmaW5lZCArICcnCitQQVNTIGJ0bi50eXBl
ID0gJ3Jlc2V0JzsgdHh0LnZhbHVlID0gJ2hlbGxvJzsgYnRuLmNsaWNrKCk7IHR4dC52YWx1ZSBp
cyAnJworUEFTUyBkaWRTdWJtaXQgaXMgZmFsc2UKK1BBU1MgYnRuLnR5cGUgPSAnYnV0dG9uJzsg
dHh0LnZhbHVlID0gJ2hlbGxvJzsgYnRuLmNsaWNrKCk7IHR4dC52YWx1ZSBpcyAnaGVsbG8nCitQ
QVNTIGJ0bi50eXBlID0gJ3N1Ym1pdCc7IGJ0bi5jbGljaygpOyBkaWRTdWJtaXQgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEJ1dHRvbkVsZW1lbnQvY2hhbmdlLXR5cGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQnV0dG9uRWxlbWVudC9j
aGFuZ2UtdHlwZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEJ1dHRvbkVsZW1lbnQvY2hhbmdlLXR5cGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKzxzY3JpcHQ+CisK
K2Rlc2NyaXB0aW9uKCJUZXN0cyBmb3IgPGEgaHJlZj1cImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQzOVwiPiBcCitidWcgMTQ0Mzk8L2E+LiBCdXR0b24gdHlwZSBz
aG91bGQgYmUgc2V0IHVzaW5nIGVsLnR5cGUuIik7CisKK3ZhciBkaWRTdWJtaXQgPSBmYWxzZTsK
K3ZhciBidG47Cit2YXIgdHh0OworCitmdW5jdGlvbiB0ZXN0VHlwZVZhbHVlKCkKK3sKKyAgICBi
dG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYiIpOworCisgICAgc2hvdWxkQmUoImJ0bi50
eXBlID0gJ3N1Ym1pdCc7IGJ0bi50eXBlIiwgIidzdWJtaXQnIik7CisgICAgc2hvdWxkQmUoImJ0
bi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSIsICInc3VibWl0JyIpOworICAgIAorICAgIHNob3VsZEJl
KCJidG4udHlwZSA9ICdyZXNldCc7IGJ0bi50eXBlIiwgIidyZXNldCciKTsKKyAgICBzaG91bGRC
ZSgiYnRuLmdldEF0dHJpYnV0ZSgndHlwZScpIiwgIidyZXNldCciKTsKKyAgICAKKyAgICBzaG91
bGRCZSgiYnRuLnR5cGUgPSAnYnV0dG9uJzsgYnRuLnR5cGUiLCAiJ2J1dHRvbiciKTsKKyAgICBz
aG91bGRCZSgiYnRuLmdldEF0dHJpYnV0ZSgndHlwZScpIiwgIididXR0b24nIik7CisgICAgCisg
ICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJ3Jlc2V0JzsgYnRuLnR5cGUiLCAiJ3Jlc2V0JyIpOwor
ICAgIHNob3VsZEJlKCJidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykiLCAiJ3Jlc2V0JyIpOworICAg
IAorICAgIHNob3VsZEJlKCJidG4udHlwZSA9ICdzdUJtaVQnOyBidG4udHlwZSIsICInc3VibWl0
JyIpOworICAgIHNob3VsZEJlKCJidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykiLCAiJ3N1Qm1pVCci
KTsKKyAgICAKKyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSAnJzsgYnRuLnR5cGUiLCAiJ3N1Ym1p
dCciKTsKKyAgICBzaG91bGRCZSgiYnRuLmdldEF0dHJpYnV0ZSgndHlwZScpIiwgIicnIik7Cisg
ICAgCisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJ2InOyBidG4udHlwZSIsICInc3VibWl0JyIp
OworICAgIHNob3VsZEJlKCJidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykiLCAiJ2InIik7CisgICAg
CisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJ1JFU0VUJzsgYnRuLnR5cGUiLCAiJ3Jlc2V0JyIp
OworICAgIHNob3VsZEJlKCJidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykiLCAiJ1JFU0VUJyIpOwor
ICAgIAorICAgIHNob3VsZEJlKCJidG4udHlwZSA9ICcnOyBidG4udHlwZSIsICInc3VibWl0JyIp
OworICAgIHNob3VsZEJlKCJidG4uZ2V0QXR0cmlidXRlKCd0eXBlJykiLCAiJyciKTsKKyAgICAK
KyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSAnLyc7IGJ0bi50eXBlIiwgIidzdWJtaXQnIik7Cisg
ICAgc2hvdWxkQmUoImJ0bi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSIsICInLyciKTsKKyAgICAKKyAg
ICBzaG91bGRCZSgiYnRuLnR5cGUgPSAnICc7IGJ0bi50eXBlIiwgIidzdWJtaXQnIik7CisgICAg
c2hvdWxkQmUoImJ0bi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSIsICInICciKTsKKyAgICAKKyAgICBz
aG91bGRCZSgiYnRuLnR5cGUgPSAnYnV0dG9uICc7IGJ0bi50eXBlIiwgIidzdWJtaXQnIik7Cisg
ICAgc2hvdWxkQmUoImJ0bi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSIsICInYnV0dG9uICciKTsKKyAg
ICAKKyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSAnIGIgdSB0IHQgbyBuICc7IGJ0bi50eXBlIiwg
IidzdWJtaXQnIik7CisgICAgc2hvdWxkQmUoImJ0bi5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSIsICIn
IGIgdSB0IHQgbyBuICciKTsKKyAgICAKKyAgICBzaG91bGRCZSgiYnRuLnR5cGUgPSBudWxsOyBi
dG4udHlwZSIsICInc3VibWl0JyIpOworICAgIHNob3VsZEJlKCJidG4uZ2V0QXR0cmlidXRlKCd0
eXBlJykiLCAibnVsbCArICcnIik7CisgICAgCisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gdW5k
ZWZpbmVkOyBidG4udHlwZSIsICInc3VibWl0JyIpOworICAgIHNob3VsZEJlKCJidG4uZ2V0QXR0
cmlidXRlKCd0eXBlJykiLCAidW5kZWZpbmVkICsgJyciKTsKK30KKworZnVuY3Rpb24gdGVzdFR5
cGVCZWhhdmlvcigpCit7CisgICAgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImIiKTsK
KyAgICB0eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidCIpOworCisgICAgYnRuLnR5cGUg
PSAic3VibWl0IjsKKyAgICB0eHQudmFsdWUgPSAiaGVsbG8iOworCisgICAgc2hvdWxkQmUoImJ0
bi50eXBlID0gJ3Jlc2V0JzsgdHh0LnZhbHVlID0gJ2hlbGxvJzsgYnRuLmNsaWNrKCk7IHR4dC52
YWx1ZSIsICInJyIpOworICAgIHNob3VsZEJlKCJkaWRTdWJtaXQiLCAiZmFsc2UiKTsKKyAgICBz
aG91bGRCZSgiYnRuLnR5cGUgPSAnYnV0dG9uJzsgdHh0LnZhbHVlID0gJ2hlbGxvJzsgYnRuLmNs
aWNrKCk7IHR4dC52YWx1ZSIsICInaGVsbG8nIik7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdWJtaXRC
ZWhhdmlvcigpCit7CisgICAgc2hvdWxkQmUoImJ0bi50eXBlID0gJ3N1Ym1pdCc7IGJ0bi5jbGlj
aygpOyBkaWRTdWJtaXQiLCAidHJ1ZSIpOworICAgIGRpZFN1Ym1pdCA9IGZhbHNlOworICAgIHR4
dC52YWx1ZSA9ICIiOworfQorCitmdW5jdGlvbiBmb3JtV2FzU3VibWl0dGVkKCkKK3sKKyAgICBk
aWRTdWJtaXQgPSB0cnVlOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgdGVzdFR5
cGVWYWx1ZSgpOworICAgIHRlc3RUeXBlQmVoYXZpb3IoKTsKKyAgICB0ZXN0U3VibWl0QmVoYXZp
b3IoKTsKKyAgICAKKyAgICB3YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7CisKKyAgICBp
ZiAod2luZG93LmpzVGVzdElzQXN5bmMpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy53YXNGaW5pc2hKU1Rlc3RDYWxsZWQpCisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfQorPC9zY3JpcHQ+Cis8Zm9ybSBpZD0iZiIgYWN0aW9uPSIjc3VibWl0dGVkIiBvbnN1
Ym1pdD0iZm9ybVdhc1N1Ym1pdHRlZCgpOyI+CisgIDxpbnB1dCBpZD0idCIgdHlwZT0idGV4dCIg
Lz4KKyAgPGJ1dHRvbiBpZD0iYiI+PC9idXR0b24+Cis8L2Zvcm0+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>