<?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>20795</bug_id>
          
          <creation_ts>2008-09-12 07:46:24 -0700</creation_ts>
          <short_desc>text/plain form encoding ignored and incorrectly specified in request header</short_desc>
          <delta_ts>2011-11-01 11:41: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>Forms</component>
          <version>525.x (Safari 3.1)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://carsten.orthbandt.de/formtest.html</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="Carsten Orthbandt">carsten.orthbandt</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>code.vineet</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
    
    <cc>philip.tellis</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90929</commentid>
    <comment_count>0</comment_count>
    <who name="Carsten Orthbandt">carsten.orthbandt</who>
    <bug_when>2008-09-12 07:46:24 -0700</bug_when>
    <thetext>Set up a HTML form like this:

		&lt;form action=&quot;&quot; method=&quot;post&quot; enctype=&quot;text/plain&quot;&gt;
			test1:&lt;input name=&quot;test1&quot; size=&quot;10&quot;&gt;
			test2:&lt;input name=&quot;test2&quot; size=&quot;10&quot;&gt;
			&lt;input type=&quot;submit&quot;&gt;
		&lt;/form&gt;

The request header will say:
Content-Type: text/plain; boundary=
but the actual content is encoded as &quot;application/x-www-form-urlencoded&quot;.

It&apos;s bad enough that the form enctype parameter is more or less ignored, but specifying a different encoding in the header than is used in the body is a serious problem.

Yes, I can change my forms not to use &quot;text/plain&quot;. But it&apos;s still a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91051</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-09-13 08:04:57 -0700</bug_when>
    <thetext>Confirmed with r35843 on Mac OS X 10.4.11 as a difference with Firefox.

Note however that text/plain form serialization is not defined in HTML4 (http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4), and is not yet defined in HTML5 (http://www.w3.org/html/wg/html5/#textplain).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91061</commentid>
    <comment_count>2</comment_count>
    <who name="Carsten Orthbandt">carsten.orthbandt</who>
    <bug_when>2008-09-13 08:46:55 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Confirmed with r35843 on Mac OS X 10.4.11 as a difference with Firefox.
&gt; Note however that text/plain form serialization is not defined in HTML4
&gt; (http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4), and is not yet
&gt; defined in HTML5 (http://www.w3.org/html/wg/html5/#textplain).

Well, especially the HTML5 doc _does_ list text/plain as a valid form encoding (which is a change compared to HTML4). Calling it &quot;not defined&quot; looks like an excuse though, since none of the other encodings are defined there either (yet).
While surprisingly there seems to be no official standard on name/value encoding in text/plain, all browsers I&apos;ve used back to stone-age Mosaic used the same format.
So I&apos;d expect the upcoming definition to match exactly that.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230421</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-25 13:44:54 -0700</bug_when>
    <thetext>HTML5 now defines this, &lt;http://dev.w3.org/html5/spec/Overview.html#text-plain-encoding-algorithm&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306674</commentid>
    <comment_count>4</comment_count>
    <who name="Philip Tellis">philip.tellis</who>
    <bug_when>2010-11-09 02:18:26 -0800</bug_when>
    <thetext>I&apos;ve written a patch to fix this bug, but I don&apos;t know how to write a regression test for it.  How do I go about testing what a form would POST to the server without actually having a server side script?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306679</commentid>
    <comment_count>5</comment_count>
      <attachid>73350</attachid>
    <who name="Philip Tellis">philip.tellis</who>
    <bug_when>2010-11-09 02:45:47 -0800</bug_when>
    <thetext>Created attachment 73350
Patch that handles enctype=&quot;text/plain&quot; correctly

The attached patch changes the behaviour of form submissions when the enctype is set to text/plain and the action is a non mailto: URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306805</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-09 08:30:58 -0800</bug_when>
    <thetext>&gt; How do I go about testing what a form would POST to the server without actually having a server side
&gt; script?

Actually, you can have a server side script - tests in LayoutTests/http/tests are served by Apache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306906</commentid>
    <comment_count>7</comment_count>
    <who name="Philip Tellis">philip.tellis</who>
    <bug_when>2010-11-09 11:52:29 -0800</bug_when>
    <thetext>Thanks, will work on the tests today then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307067</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-09 17:14:43 -0800</bug_when>
    <thetext>Thanks! 

Apache is launched automatically by run-webkit-tests, or you could use the run-webkit-httpd script for debugging in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307128</commentid>
    <comment_count>9</comment_count>
      <attachid>73453</attachid>
    <who name="Philip Tellis">philip.tellis</who>
    <bug_when>2010-11-09 19:52:44 -0800</bug_when>
    <thetext>Created attachment 73453
Patch that handles enctype=&quot;text/plain&quot; correctly

Updated patch that also includes test cases, and handles GET requests correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307457</commentid>
    <comment_count>10</comment_count>
      <attachid>73453</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-10 11:37:43 -0800</bug_when>
    <thetext>Comment on attachment 73453
Patch that handles enctype=&quot;text/plain&quot; correctly

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

Please clarify what exactly this patch implements, and add test coverage. Besides what is mentioned below, there should be a test with non-ASCII data.

&gt; WebCore/ChangeLog:13
&gt; +        Implementation algorithm defined here:
&gt; +        http://dev.w3.org/html5/spec/Overview.html#text-plain-encoding-algorithm

You reference the HTML5 algorithm, but is it fully implemented? We don&apos;t implement accept-charset, and we don&apos;t implement _charset_ entries. There is no test for sending a file input as text/plain.

&gt; WebCore/loader/FormSubmission.cpp:168
&gt; +        formData = FormData::create(*(static_cast&lt;FormDataList*&gt;(domFormData.get())), domFormData-&gt;encoding(), isMailtoForm || attributes.method() == GetMethod ? &quot;application/x-www-form-urlencoded&quot; : encodingType);

This doesn&apos;t seem to match what HTML5 says. GET/mailto is always &quot;application/x-www-form-urlencoded&quot;, but POST/mailto uses &quot;appropriate form encoding algorithm&quot;.

&gt; WebCore/platform/network/FormData.h:98
&gt; +    static PassRefPtr&lt;FormData&gt; create(const FormDataList&amp;, const TextEncoding&amp;, const String encodingType = &quot;application/x-www-form-urlencoded&quot;);

The encoding type definitely shouldn&apos;t be passed as string copy. Maybe String reference, maybe an AtomicString, or maybe an enum constant. The constant is probably most appropriate.

&gt; WebCore/platform/network/FormDataBuilder.cpp:190
&gt; +        // http://dev.w3.org/html5/spec/Overview.html#text-plain-encoding-algorithm

I don&apos;t think that a link to an interim version of HTML5 is useful. That&apos;s where one would look by default anyway.

&gt; LayoutTests/http/tests/misc/form-post-textplain.html:13
&gt; +    &lt;input type=&quot;hidden&quot; name=&quot;f1&quot; value=&quot;This is field #1 &amp;!@$%&apos;&lt;&gt;&quot;&gt;
&gt; +    &lt;input type=&quot;hidden&quot; name=&quot;f2&quot; value=&apos;This is field #2 &quot;&quot;&apos;&gt;

Interesting characters to test should include &apos;=&apos; and newlines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307462</commentid>
    <comment_count>11</comment_count>
    <who name="Philip Tellis">philip.tellis</who>
    <bug_when>2010-11-10 11:48:10 -0800</bug_when>
    <thetext>Thanks for the comments, will fix what I can.  As far as I know, this has been a standard as far back as HTML 3.0, but I can&apos;t find a reference to the algorithm in the specifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489102</commentid>
    <comment_count>12</comment_count>
      <attachid>73453</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-23 18:58:45 -0700</bug_when>
    <thetext>Comment on attachment 73453
Patch that handles enctype=&quot;text/plain&quot; correctly

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

&gt;&gt; WebCore/platform/network/FormData.h:98
&gt;&gt; +    static PassRefPtr&lt;FormData&gt; create(const FormDataList&amp;, const TextEncoding&amp;, const String encodingType = &quot;application/x-www-form-urlencoded&quot;);
&gt; 
&gt; The encoding type definitely shouldn&apos;t be passed as string copy. Maybe String reference, maybe an AtomicString, or maybe an enum constant. The constant is probably most appropriate.

I agree with Alexey.  We had better introduce an enum set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489956</commentid>
    <comment_count>13</comment_count>
      <attachid>112317</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-10-25 04:45:02 -0700</bug_when>
    <thetext>Created attachment 112317
initial approach to fix this issue.

This is just code patch incorporating above review comments.
Please let me know your review comments on this. 
I will update ChangeLog too once code review is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490025</commentid>
    <comment_count>14</comment_count>
      <attachid>112317</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-25 07:19:24 -0700</bug_when>
    <thetext>Comment on attachment 112317
initial approach to fix this issue.

Please read the style guide: http://www.webkit.org/coding/coding-style.html
&gt; Enum members should user InterCaps with an initial capital letter.

Also, I feel application_x_www_form_urlencoded is too long :-)  FormURLEncoded is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490989</commentid>
    <comment_count>15</comment_count>
      <attachid>112559</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-10-26 10:24:28 -0700</bug_when>
    <thetext>Created attachment 112559
updated patch

Modified Enum members as per style guidelines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490991</commentid>
    <comment_count>16</comment_count>
      <attachid>112559</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-26 10:28:15 -0700</bug_when>
    <thetext>Comment on attachment 112559
updated patch

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

Is this correct behavior? Do other browsers do this? What websites use this feature?

&gt; Source/WebCore/platform/network/FormData.cpp:102
&gt; +PassRefPtr&lt;FormData&gt; FormData::create(const FormDataList&amp; list, const TextEncoding&amp; encoding, const EncodingType encodingType)

This should just be EncodingType, not const EncodingType.

&gt; Source/WebCore/platform/network/FormData.cpp:183
&gt; +void FormData::appendKeyValuePairItems(const FormDataList&amp; list, const TextEncoding&amp; encoding, bool isMultiPartForm, Document* document, const EncodingType encodingType)

No const here either.

&gt; Source/WebCore/platform/network/FormData.h:104
&gt; +    static PassRefPtr&lt;FormData&gt; create(const FormDataList&amp;, const TextEncoding&amp;, const EncodingType encodingType = FormURLEncoded);

This should be:

    EncodingType = FormURLEncoded

The const is not needed or helpful, and the argument name is not helpful.

&gt; Source/WebCore/platform/network/FormData.h:138
&gt; +    static EncodingType getEncodingType(const String&amp; type)

Functions like this are not named with the word “get” in WebKit. This is covered in the coding style guide.

This should probably be named “parseEncodingType”.

&gt; Source/WebCore/platform/network/FormData.h:143
&gt; +             return MultipartFormData;

Extra space here.

&gt; Source/WebCore/platform/network/FormData.h:151
&gt; +    void appendKeyValuePairItems(const FormDataList&amp;, const TextEncoding&amp;, bool isMultiPartForm, Document*, const EncodingType encodingType = FormURLEncoded);

Same comment as above.

&gt; Source/WebCore/platform/network/FormDataBuilder.cpp:184
&gt; +void FormDataBuilder::addKeyValuePairAsFormData(Vector&lt;char&gt;&amp; buffer, const CString&amp; key, const CString&amp; value, const FormData::EncodingType encodingType)

Same comment as above.

&gt; Source/WebCore/platform/network/FormDataBuilder.h:47
&gt; +    static void addKeyValuePairAsFormData(Vector&lt;char&gt;&amp;, const CString&amp; key, const CString&amp; value, FormData::EncodingType encodingType = FormData::FormURLEncoded);

Should omit the argument name here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490992</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-26 10:28:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;ve written a patch to fix this bug, but I don&apos;t know how to write a regression test for it.  How do I go about testing what a form would POST to the server without actually having a server side script?

We do need a test for this patch. As Alexey pointed out, we have many tests that do involve server side scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491018</commentid>
    <comment_count>18</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-10-26 11:01:26 -0700</bug_when>
    <thetext>
Thank you Darin for review comments,

Yes this is correct behavior because in webkit forms with post method and &quot;text/plain&quot; enctype are encoded as &quot;application/x-www-form-urlencoded&quot;.

This can be verified with latest firefox.

(In reply to comment #17)
&gt; We do need a test for this patch. As Alexey pointed out, we have many tests that do involve server side scripts.

I have added form-post-textplain.html and form-get-textplain.html to test this  behavior, do you want me to add more tests for this?

I will upload patch again incorporating all your comments, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491029</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-26 11:21:27 -0700</bug_when>
    <thetext>Attachment 112559 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/platform/network/FormDataBuilder.h:47:  The parameter name &quot;encodingType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/network/FormData.h:104:  The parameter name &quot;encodingType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/network/FormData.h:151:  The parameter name &quot;encodingType&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491407</commentid>
    <comment_count>20</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-27 01:31:47 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 112559 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112559&amp;action=review
&gt; 
&gt; Is this correct behavior? Do other browsers do this? What websites use this feature?

According to http://crbug.com/73979, IE, Firefox, and Opera support text/plain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491644</commentid>
    <comment_count>21</comment_count>
      <attachid>112695</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-10-27 09:44:45 -0700</bug_when>
    <thetext>Created attachment 112695
updated_patch

updated patch contains form-post-textplain.html and form-get-textplain.html to test this  behavior, 
please let me know if I need add more tests for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491734</commentid>
    <comment_count>22</comment_count>
      <attachid>112695</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 11:07:45 -0700</bug_when>
    <thetext>Comment on attachment 112695
updated_patch

Attachment 112695 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10226774

New failing tests:
fast/forms/mailto/formenctype-attribute-input-html.html
fast/forms/mailto/post-text-plain-with-accept-charset.html
fast/forms/mailto/formenctype-attribute-button-html.html
fast/forms/mailto/post-text-plain.html
fast/forms/mailto/post-multiple-items-text-plain.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491887</commentid>
    <comment_count>23</comment_count>
      <attachid>112740</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-10-27 13:43:35 -0700</bug_when>
    <thetext>Created attachment 112740
updated_patch

(In reply to comment #22)
&gt; (From update of attachment 112695 [details])
&gt; Attachment 112695 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10226774
&gt; 
&gt; New failing tests:
&gt; fast/forms/mailto/formenctype-attribute-input-html.html
&gt; fast/forms/mailto/post-text-plain-with-accept-charset.html
&gt; fast/forms/mailto/formenctype-attribute-button-html.html
&gt; fast/forms/mailto/post-text-plain.html
&gt; fast/forms/mailto/post-multiple-items-text-plain.html

Hello Darin/Alexey,
could you please review this patch once more, sorry for failing test cases :(.
As Alexey mentioned earlier
&gt; GET/mailto is always &quot;application/x-www-form-urlencoded&quot;, but POST/mailto uses &quot;appropriate form encoding algorithm&quot;.
Above test cases uses post method and test/plain enctype so I have to modify the expected results for above test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493520</commentid>
    <comment_count>24</comment_count>
      <attachid>112740</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-31 15:10:00 -0700</bug_when>
    <thetext>Comment on attachment 112740
updated_patch

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

&gt; Source/WebCore/platform/network/FormData.h:145
&gt; +    static EncodingType parseEncodingType(const String&amp; type)
&gt; +    {
&gt; +        if (equalIgnoringCase(type, &quot;text/plain&quot;))
&gt; +            return TextPlain;
&gt; +        if (equalIgnoringCase(type, &quot;multipart/form-data&quot;))
&gt; +            return MultipartFormData;
&gt; +        return FormURLEncoded;
&gt; +    }

Seems a little ugly to include this entire function body here in the class definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493578</commentid>
    <comment_count>25</comment_count>
      <attachid>112740</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-31 16:03:03 -0700</bug_when>
    <thetext>Comment on attachment 112740
updated_patch

Clearing flags on attachment: 112740

Committed r98896: &lt;http://trac.webkit.org/changeset/98896&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493579</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-31 16:03:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493761</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-31 23:38:02 -0700</bug_when>
    <thetext>Two forms/mailto tests are failing after this patch on SL, Qt, Cr Win, &amp; Cr Linux:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r98926%20(34333)/results.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fforms%2Fmailto%2Fformenctype-attribute-button-html.html&amp;group=%40ToT%20-%20webkit.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493768</commentid>
    <comment_count>28</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-10-31 23:47:44 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Two forms/mailto tests are failing after this patch on SL, Qt, Cr Win, &amp; Cr Linux:
&gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r98926%20(34333)/results.html
&gt; 
&gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fforms%2Fmailto%2Fformenctype-attribute-button-html.html&amp;group=%40ToT%20-%20webkit.org

Failing tests were platform specific so I have added those to all test_expectations.txt except gtk so those could be rebaselined. Can you please correct me to fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494003</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-01 10:35:47 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; Two forms/mailto tests are failing after this patch on SL, Qt, Cr Win, &amp; Cr Linux:
&gt; &gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r98926%20(34333)/results.html
&gt; &gt; 
&gt; &gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fforms%2Fmailto%2Fformenctype-attribute-button-html.html&amp;group=%40ToT%20-%20webkit.org
&gt; 
&gt; Failing tests were platform specific so I have added those to all test_expectations.txt except gtk so those could be rebaselined. Can you please correct me to fix this?

When did this happen (which revision)? Also, no port except Chromium port uses test_expectations.txt for this purpose. You typically grab the results out of bots (build.webkit.org) and check that in instead of skiping/adding failing expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494032</commentid>
    <comment_count>30</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-01 11:05:48 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; Two forms/mailto tests are failing after this patch on SL, Qt, Cr Win, &amp; Cr Linux:
&gt; &gt; &gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r98926%20(34333)/results.html
&gt; &gt; &gt; 
&gt; &gt; &gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=fast%2Fforms%2Fmailto%2Fformenctype-attribute-button-html.html&amp;group=%40ToT%20-%20webkit.org
&gt; &gt; 
&gt; &gt; Failing tests were platform specific so I have added those to all test_expectations.txt except gtk so those could be rebaselined. Can you please correct me to fix this?
&gt; 
&gt; When did this happen (which revision)? Also, no port except Chromium port uses test_expectations.txt for this purpose. You typically grab the results out of bots (build.webkit.org) and check that in instead of skiping/adding failing expectations.

In the revision http://trac.webkit.org/changeset/98979 itself I have added failing tests to test_expectations.txt and even build bot didn&apos;t give error on attached patch :(. Please let me know if you want me to rebaseline the results for the ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494046</commentid>
    <comment_count>31</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-01 11:41:26 -0700</bug_when>
    <thetext>Rebaseline done in http://trac.webkit.org/changeset/98984 (fixed change log in http://trac.webkit.org/changeset/98986).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73350</attachid>
            <date>2010-11-09 02:45:47 -0800</date>
            <delta_ts>2010-11-09 19:52:44 -0800</delta_ts>
            <desc>Patch that handles enctype=&quot;text/plain&quot; correctly</desc>
            <filename>text-plain-form.diff</filename>
            <type>text/plain</type>
            <size>7973</size>
            <attacher name="Philip Tellis">philip.tellis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTYxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMTEtMDkgIFBoaWxpcCBUZWxsaXMgIDxwaGlsaXBAYmx1ZXNt
b29uLmluZm8+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgdGV4dC9wbGFpbiBmb3JtIGVuY29kaW5nIGlnbm9yZWQgYW5kIGluY29ycmVjdGx5IHNwZWNp
ZmllZCBpbiByZXF1ZXN0IGhlYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3OTUKKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBiZWhh
dmlvdXIgb2YgZm9ybXMgd2hlcmUgZW5jdHlwZSBpcyBzZXQgdG8KKyAgICAgICAgdGV4dC9wbGFp
bi4gUE9TVGVkIGZvcm0gY29udGVudCBpcyBzZW50IGFzIGEgQ1ItTEYgc2VwYXJhdGVkIGxpc3Qg
b2YKKyAgICAgICAga2V5PXZhbHVlIHBhaXJzLiAgTmVpdGhlciBrZXlzIG5vciB2YWx1ZXMgYXJl
IFVSTCBFbmNvZGVkLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIGFsZ29yaXRobSBkZWZpbmVk
IGhlcmU6CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRt
bCN0ZXh0LXBsYWluLWVuY29kaW5nLWFsZ29yaXRobQorCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHNpbmNlIEkgY291bGRuJ3QgZmlndXJlIG91dCBob3cgdG8gdGVzdCBmb3JtIFBPU1RpbmcKKyAg
ICAgICAgTm9uZSBvZiB0aGUgY3VycmVudCB0ZXN0cyBkbyBhbnl0aGluZyB1c2VmdWwgd2l0aCBQ
T1NULiAoT09QUyEpCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVt
cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaDoKKwogMjAxMC0xMS0wOSAgQ2hyaXMgUm9n
ZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
UnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJldmlzaW9uIDcxNjE1
KQorKysgV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjUsNyArMTY1LDcgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Np
bwogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoKihzdGF0aWNf
Y2FzdDxGb3JtRGF0YUxpc3QqPihkb21Gb3JtRGF0YS5nZXQoKSkpLCBkb21Gb3JtRGF0YS0+ZW5j
b2RpbmcoKSwgZG9jdW1lbnQpOwogICAgICAgICBib3VuZGFyeSA9IGZvcm1EYXRhLT5ib3VuZGFy
eSgpLmRhdGEoKTsKICAgICB9IGVsc2UgewotICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpj
cmVhdGUoKihzdGF0aWNfY2FzdDxGb3JtRGF0YUxpc3QqPihkb21Gb3JtRGF0YS5nZXQoKSkpLCBk
b21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSk7CisgICAgICAgIGZvcm1EYXRhID0gRm9ybURhdGE6OmNy
ZWF0ZSgqKHN0YXRpY19jYXN0PEZvcm1EYXRhTGlzdCo+KGRvbUZvcm1EYXRhLmdldCgpKSksIGRv
bUZvcm1EYXRhLT5lbmNvZGluZygpLCBpc01haWx0b0Zvcm0gPyAiYXBwbGljYXRpb24veC13d3ct
Zm9ybS11cmxlbmNvZGVkIiA6IGVuY29kaW5nVHlwZSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVz
Lm1ldGhvZCgpID09IFBvc3RNZXRob2QgJiYgaXNNYWlsdG9Gb3JtKSB7CiAgICAgICAgICAgICAv
LyBDb252ZXJ0IHRoZSBmb3JtIGRhdGEgaW50byBhIHN0cmluZyB0aGF0IHdlIHB1dCBpbnRvIHRo
ZSBVUkwuCiAgICAgICAgICAgICBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChhY3Rpb25V
UkwsICpmb3JtRGF0YSwgZW5jb2RpbmdUeXBlKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAkocmV2aXNpb24gNzE2MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NywxMCArOTcsMTAgQEAgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjbwogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0
IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKK1Bhc3NS
ZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0
LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcgZW5jb2RpbmdUeXBl
KQogewogICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7Ci0gICAgcmVzdWx0
LT5hcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhsaXN0LCBlbmNvZGluZywgZmFsc2UsIDApOworICAg
IHJlc3VsdC0+YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMobGlzdCwgZW5jb2RpbmcsIGZhbHNlLCAw
LCBlbmNvZGluZ1R5cGUpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCkBAIC0x
NzgsNyArMTc4LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBLVVJMJiBibAog
fQogI2VuZGlmCiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0
IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBp
c011bHRpUGFydEZvcm0sIERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVu
ZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nIGVuY29kaW5nVHlwZSkKIHsKICAgICBpZiAoaXNNdWx0aVBhcnRGb3Jt
KQogICAgICAgICBtX2JvdW5kYXJ5ID0gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJv
dW5kYXJ5U3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5k
S2V5VmFsdWVQYWlySXRlbXMoYwogICAgICAgICAgICAgaWYgKGVuY29kZWREYXRhLmlzRW1wdHko
KSAmJiBrZXkuZGF0YSgpID09ICJpc2luZGV4IikKICAgICAgICAgICAgICAgICBGb3JtRGF0YUJ1
aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoZW5jb2RlZERhdGEsIHZhbHVlLmRhdGEoKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgRm9ybURhdGFCdWlsZGVyOjphZGRL
ZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKGVuY29kZWREYXRhLCBrZXkuZGF0YSgpLCB2YWx1ZS5kYXRh
KCkpOworICAgICAgICAgICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNG
b3JtRGF0YShlbmNvZGVkRGF0YSwga2V5LmRhdGEoKSwgdmFsdWUuZGF0YSgpLCBlbmNvZGluZ1R5
cGUpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAkocmV2aXNpb24gNzE2MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6ZV90KTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0
JiwgY29uc3QgVGV4dEVuY29kaW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBjb25zdCBT
dHJpbmcgZW5jb2RpbmdUeXBlID0gImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIp
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGVNdWx0aVBhcnQoY29uc3Qg
Rm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgRG9jdW1lbnQqKTsKICAgICBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
ZGVlcENvcHkoKSBjb25zdDsKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIEZvcm1E
YXRhKCk7CiAgICAgRm9ybURhdGEoY29uc3QgRm9ybURhdGEmKTsKIAotICAgIHZvaWQgYXBwZW5k
S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5n
JiwgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50Kik7CisgICAgdm9pZCBhcHBlbmRLZXlW
YWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBi
b29sIGlzTXVsdGlQYXJ0Rm9ybSwgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcgZW5jb2RpbmdUeXBl
ID0gImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwogCiAgICAgVmVjdG9yPEZv
cm1EYXRhRWxlbWVudD4gbV9lbGVtZW50czsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHJldmlzaW9uIDcxNjE1KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUs
NiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFs
ZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwOCBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQorICogQ29weXJpZ2h0IChDKSAyMDEwIFBoaWxpcCBUZWxsaXMgKHBoaWxpcEBi
bHVlc21vb24uaW5mbykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTgzLDE0ICsxODQsMjQgQEAg
dm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmZpbmlzaE11bHRpUGFydEhlYQogICAgIGFwcGVuZChidWZm
ZXIsICJcclxuXHJcbiIpOwogfQogCi12b2lkIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQ
YWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgY29uc3QgQ1N0cmluZyYga2V5LCBj
b25zdCBDU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRm9ybURhdGFCdWlsZGVyOjphZGRLZXlWYWx1ZVBh
aXJBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBrZXksIGNv
bnN0IENTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcgZW5jb2RpbmdUeXBlKQogewotICAgIGlm
ICghYnVmZmVyLmlzRW1wdHkoKSkKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgJyYnKTsKLQotICAg
IGVuY29kZVN0cmluZ0FzRm9ybURhdGEoYnVmZmVyLCBrZXkpOwotICAgIGFwcGVuZChidWZmZXIs
ICc9Jyk7Ci0gICAgZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShidWZmZXIsIHZhbHVlKTsKKyAgICBp
ZiAoZW5jb2RpbmdUeXBlID09ICJ0ZXh0L3BsYWluIikgeworICAgICAgICAvLyBodHRwOi8vZGV2
LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjdGV4dC1wbGFpbi1lbmNvZGluZy1hbGdv
cml0aG0KKyAgICAgICAgaWYgKCFidWZmZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgYXBwZW5k
KGJ1ZmZlciwgIlxyXG4iKTsKKworICAgICAgICBhcHBlbmQoYnVmZmVyLCBrZXkpOworICAgICAg
ICBhcHBlbmQoYnVmZmVyLCAnPScpOworICAgICAgICBhcHBlbmQoYnVmZmVyLCB2YWx1ZSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFidWZmZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAg
YXBwZW5kKGJ1ZmZlciwgJyYnKTsKKworICAgICAgICBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJ1
ZmZlciwga2V5KTsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgJz0nKTsKKyAgICAgICAgZW5jb2Rl
U3RyaW5nQXNGb3JtRGF0YShidWZmZXIsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgRm9ybURh
dGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBj
b25zdCBDU3RyaW5nJiBzdHJpbmcpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGFCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhQnVpbGRlci5oCShyZXZpc2lvbiA3MTYxNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZmluaXNoTXVsdGlQYXJ0SGVhZGVyKFZlY3RvcjxjaGFy
PiYpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IEhUTUxGb3JtRWxlbWVudC9X
TUxHb0VsZW1lbnQgZm9yIG5vbiBtdWx0aS1wYXJ0IGZvcm0gZGF0YQotICAgIHN0YXRpYyB2b2lk
IGFkZEtleVZhbHVlUGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiwgY29uc3QgQ1N0cmluZyYg
a2V5LCBjb25zdCBDU3RyaW5nJiB2YWx1ZSk7CisgICAgc3RhdGljIHZvaWQgYWRkS2V5VmFsdWVQ
YWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mLCBjb25zdCBDU3RyaW5nJiBrZXksIGNvbnN0IENT
dHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcgZW5jb2RpbmdUeXBlID0gImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCIpOwogICAgIHN0YXRpYyB2b2lkIGVuY29kZVN0cmluZ0FzRm9y
bURhdGEoVmVjdG9yPGNoYXI+JiwgY29uc3QgQ1N0cmluZyYpOwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73453</attachid>
            <date>2010-11-09 19:52:44 -0800</date>
            <delta_ts>2011-10-23 18:58:45 -0700</delta_ts>
            <desc>Patch that handles enctype=&quot;text/plain&quot; correctly</desc>
            <filename>text-plain-form.diff</filename>
            <type>text/plain</type>
            <size>13332</size>
            <attacher name="Philip Tellis">philip.tellis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTcxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMTEtMDkgIFBoaWxpcCBUZWxsaXMgIDxwaGlsaXBAYmx1ZXNt
b29uLmluZm8+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgdGV4dC9wbGFpbiBmb3JtIGVuY29kaW5nIGlnbm9yZWQgYW5kIGluY29ycmVjdGx5IHNwZWNp
ZmllZCBpbiByZXF1ZXN0IGhlYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA3OTUKKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBiZWhh
dmlvdXIgb2YgZm9ybXMgd2hlcmUgZW5jdHlwZSBpcyBzZXQgdG8KKyAgICAgICAgdGV4dC9wbGFp
bi4gUE9TVGVkIGZvcm0gY29udGVudCBpcyBzZW50IGFzIGEgQ1ItTEYgc2VwYXJhdGVkIGxpc3Qg
b2YKKyAgICAgICAga2V5PXZhbHVlIHBhaXJzLiAgTmVpdGhlciBrZXlzIG5vciB2YWx1ZXMgYXJl
IFVSTCBFbmNvZGVkLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIGFsZ29yaXRobSBkZWZpbmVk
IGhlcmU6CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRt
bCN0ZXh0LXBsYWluLWVuY29kaW5nLWFsZ29yaXRobQorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zv
cm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21p
c2MvZm9ybS1wb3N0LXRleHRwbGFpbi5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRL
ZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaDoKKwogMjAxMC0x
MS0wOSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCkluZGV4OiBXZWJDb3JlL2xvYWRlci9Gb3Jt
U3VibWlzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Np
b24uY3BwCShyZXZpc2lvbiA3MTY4NSkKKysrIFdlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIFBhc3NSZWZQdHI8Rm9ybVN1
Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW8KICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3Jl
YXRlTXVsdGlQYXJ0KCooc3RhdGljX2Nhc3Q8Rm9ybURhdGFMaXN0Kj4oZG9tRm9ybURhdGEuZ2V0
KCkpKSwgZG9tRm9ybURhdGEtPmVuY29kaW5nKCksIGRvY3VtZW50KTsKICAgICAgICAgYm91bmRh
cnkgPSBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
Zm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCooc3RhdGljX2Nhc3Q8Rm9ybURhdGFMaXN0Kj4o
ZG9tRm9ybURhdGEuZ2V0KCkpKSwgZG9tRm9ybURhdGEtPmVuY29kaW5nKCkpOworICAgICAgICBm
b3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKihzdGF0aWNfY2FzdDxGb3JtRGF0YUxpc3QqPihk
b21Gb3JtRGF0YS5nZXQoKSkpLCBkb21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSwgaXNNYWlsdG9Gb3Jt
IHx8IGF0dHJpYnV0ZXMubWV0aG9kKCkgPT0gR2V0TWV0aG9kID8gImFwcGxpY2F0aW9uL3gtd3d3
LWZvcm0tdXJsZW5jb2RlZCIgOiBlbmNvZGluZ1R5cGUpOwogICAgICAgICBpZiAoYXR0cmlidXRl
cy5tZXRob2QoKSA9PSBQb3N0TWV0aG9kICYmIGlzTWFpbHRvRm9ybSkgewogICAgICAgICAgICAg
Ly8gQ29udmVydCB0aGUgZm9ybSBkYXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBwdXQgaW50byB0
aGUgVVJMLgogICAgICAgICAgICAgYXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoYWN0aW9u
VVJMLCAqZm9ybURhdGEsIGVuY29kaW5nVHlwZSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAJKHJldmlzaW9uIDcxNjg1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTAgKzk3LDEwIEBAIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY28KICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjb25z
dCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCitQYXNz
UmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlz
dCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nIGVuY29kaW5nVHlw
ZSkKIHsKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlc3VsdCA9IGNyZWF0ZSgpOwotICAgIHJlc3Vs
dC0+YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMobGlzdCwgZW5jb2RpbmcsIGZhbHNlLCAwKTsKKyAg
ICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxpc3QsIGVuY29kaW5nLCBmYWxzZSwg
MCwgZW5jb2RpbmdUeXBlKTsKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIApAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZEJsb2IoY29uc3QgS1VSTCYgYmwK
IH0KICNlbmRpZgogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25z
dCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wg
aXNNdWx0aVBhcnRGb3JtLCBEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEZvcm1EYXRhOjphcHBl
bmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgaXNNdWx0aVBhcnRGb3JtLCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyBlbmNvZGluZ1R5cGUpCiB7CiAgICAgaWYgKGlzTXVsdGlQYXJ0Rm9y
bSkKICAgICAgICAgbV9ib3VuZGFyeSA9IEZvcm1EYXRhQnVpbGRlcjo6Z2VuZXJhdGVVbmlxdWVC
b3VuZGFyeVN0cmluZygpOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVu
ZEtleVZhbHVlUGFpckl0ZW1zKGMKICAgICAgICAgICAgIGlmIChlbmNvZGVkRGF0YS5pc0VtcHR5
KCkgJiYga2V5LmRhdGEoKSA9PSAiaXNpbmRleCIpCiAgICAgICAgICAgICAgICAgRm9ybURhdGFC
dWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGVuY29kZWREYXRhLCB2YWx1ZS5kYXRhKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6YWRk
S2V5VmFsdWVQYWlyQXNGb3JtRGF0YShlbmNvZGVkRGF0YSwga2V5LmRhdGEoKSwgdmFsdWUuZGF0
YSgpKTsKKyAgICAgICAgICAgICAgICBGb3JtRGF0YUJ1aWxkZXI6OmFkZEtleVZhbHVlUGFpckFz
Rm9ybURhdGEoZW5jb2RlZERhdGEsIGtleS5kYXRhKCksIHZhbHVlLmRhdGEoKSwgZW5jb2RpbmdU
eXBlKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgJKHJldmlzaW9uIDcxNjg1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBDU3RyaW5nJik7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlz
dCYsIGNvbnN0IFRleHRFbmNvZGluZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgY29uc3Qg
U3RyaW5nIGVuY29kaW5nVHlwZSA9ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQi
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlTXVsdGlQYXJ0KGNvbnN0
IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYsIERvY3VtZW50Kik7CiAgICAgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gY29weSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGRlZXBDb3B5KCkgY29uc3Q7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBGb3Jt
RGF0YSgpOwogICAgIEZvcm1EYXRhKGNvbnN0IEZvcm1EYXRhJik7CiAKLSAgICB2b2lkIGFwcGVu
ZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGlu
ZyYsIGJvb2wgaXNNdWx0aVBhcnRGb3JtLCBEb2N1bWVudCopOworICAgIHZvaWQgYXBwZW5kS2V5
VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwg
Ym9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50KiwgY29uc3QgU3RyaW5nIGVuY29kaW5nVHlw
ZSA9ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKIAogICAgIFZlY3RvcjxG
b3JtRGF0YUVsZW1lbnQ+IG1fZWxlbWVudHM7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCShyZXZpc2lvbiA3MTY4NSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
VG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBQaGlsaXAgVGVsbGlzIChwaGlsaXBA
Ymx1ZXNtb29uLmluZm8pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE4MywxNCArMTg0LDI0IEBA
IHZvaWQgRm9ybURhdGFCdWlsZGVyOjpmaW5pc2hNdWx0aVBhcnRIZWEKICAgICBhcHBlbmQoYnVm
ZmVyLCAiXHJcblxyXG4iKTsKIH0KIAotdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmFkZEtleVZhbHVl
UGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIGtleSwg
Y29uc3QgQ1N0cmluZyYgdmFsdWUpCit2b2lkIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQ
YWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgY29uc3QgQ1N0cmluZyYga2V5LCBj
b25zdCBDU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nIGVuY29kaW5nVHlwZSkKIHsKLSAgICBp
ZiAoIWJ1ZmZlci5pc0VtcHR5KCkpCi0gICAgICAgIGFwcGVuZChidWZmZXIsICcmJyk7Ci0KLSAg
ICBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJ1ZmZlciwga2V5KTsKLSAgICBhcHBlbmQoYnVmZmVy
LCAnPScpOwotICAgIGVuY29kZVN0cmluZ0FzRm9ybURhdGEoYnVmZmVyLCB2YWx1ZSk7CisgICAg
aWYgKGVuY29kaW5nVHlwZSA9PSAidGV4dC9wbGFpbiIpIHsKKyAgICAgICAgLy8gaHR0cDovL2Rl
di53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI3RleHQtcGxhaW4tZW5jb2RpbmctYWxn
b3JpdGhtCisgICAgICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFwcGVu
ZChidWZmZXIsICJcclxuIik7CisKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwga2V5KTsKKyAgICAg
ICAgYXBwZW5kKGJ1ZmZlciwgJz0nKTsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgdmFsdWUpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGFwcGVuZChidWZmZXIsICcmJyk7CisKKyAgICAgICAgZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShi
dWZmZXIsIGtleSk7CisgICAgICAgIGFwcGVuZChidWZmZXIsICc9Jyk7CisgICAgICAgIGVuY29k
ZVN0cmluZ0FzRm9ybURhdGEoYnVmZmVyLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIEZvcm1E
YXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwg
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YUJ1aWxkZXIuaAkocmV2aXNpb24gNzE2ODUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGFCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGZpbmlzaE11bHRpUGFydEhlYWRlcihWZWN0b3I8Y2hh
cj4mKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSBIVE1MRm9ybUVsZW1lbnQv
V01MR29FbGVtZW50IGZvciBub24gbXVsdGktcGFydCBmb3JtIGRhdGEKLSAgICBzdGF0aWMgdm9p
ZCBhZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYsIGNvbnN0IENTdHJpbmcm
IGtleSwgY29uc3QgQ1N0cmluZyYgdmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGFkZEtleVZhbHVl
UGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiwgY29uc3QgQ1N0cmluZyYga2V5LCBjb25zdCBD
U3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nIGVuY29kaW5nVHlwZSA9ICJhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVTdHJpbmdBc0Zv
cm1EYXRhKFZlY3RvcjxjaGFyPiYsIGNvbnN0IENTdHJpbmcmKTsKIAogcHJpdmF0ZToKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDcxNzEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDkgIFBoaWxpcCBUZWxsaXMgIDxwaGlsaXBA
Ymx1ZXNtb29uLmluZm8+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIEdFVCBhbmQgUE9TVCBtZXRob2RzIGZvciB0ZXh0L3Bs
YWluIGVuY3R5cGUKKyAgICAgICAgU2VlIGJ1ZyAyMDc5NQorCisgICAgICAgICogZmFzdC9mb3Jt
cy9mb3JtLWdldC10ZXh0cGxhaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvZm9ybS1wb3N0LXRleHRwbGFpbi5waHA6
IEFkZGVkLgorCiAyMDEwLTExLTA5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFlldCBhbm90aGVyIHVucmV2aWV3ZWQgQ2hyb21pdW0gcmViYXNlbGluZXMgZm9y
IHI3MTQ2NS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWlu
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0t
Z2V0LXRleHRwbGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIG5lZ2F0aXZlIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5NSwgaXQgbWFrZXMgc3VyZSB0aGF0IGZvcm1z
IHN1Ym1pdHRlZCB1c2luZyBHRVQgd2l0aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0L3BsYWluIGFj
dHVhbGx5IHNlbmQgZGF0YSBpbiBVUkwgZW5jb2RlZCBpbiB0aGUgVVJMCisKK1N1Y2Nlc3MKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWluLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxhaW4uaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWlu
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+UmVncmVzc2lvbiB0ZXN0IGZvciBidWcgMjA3OTU8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UaGlzIGlzIGEgbmVnYXRpdmUgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNzk1LCBpdCBtYWtlcyBzdXJlIHRoYXQgZm9ybXMgc3VibWl0dGVk
IHVzaW5nIEdFVCB3aXRoIGEgY29udGVudC10eXBlIG9mIHRleHQvcGxhaW4gYWN0dWFsbHkgc2Vu
ZCBkYXRhIGluIFVSTCBlbmNvZGVkIGluIHRoZSBVUkw8L3A+Cis8Zm9ybSBlbmN0eXBlPSJ0ZXh0
L3BsYWluIiBtZXRob2Q9ImdldCIgYWN0aW9uPSI/IiBuYW1lPSJmIj4KKyAgICA8aW5wdXQgdHlw
ZT0iaGlkZGVuIiBuYW1lPSJmMSIgdmFsdWU9IlRoaXMgaXMgZmllbGQgIzEgJiFAJCUnPD4iPgor
ICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImYyIiB2YWx1ZT0nVGhpcyBpcyBmaWVsZCAj
MiAiIic+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InByZXNzIG1lIj4KKzwvZm9y
bT4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKGRvY3VtZW50LlVSTC5zdWJzdHJpbmcoMCwgNCkg
PT0gImZpbGUiKSB7CisKKyAgICBpZiAoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSA9PSAtMSkg
eworCisgICAgICAgIGRvY3VtZW50LmYuc3VibWl0KCk7CisKKyAgICB9IGVsc2UgeworCisJZG9j
dW1lbnQuZi5zdHlsZS5kaXNwbGF5PSJub25lIjsKKyAgICAgICAgaWYgKGRvY3VtZW50LlVSTC5z
dWJzdHJpbmcoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSsxLCBkb2N1bWVudC5VUkwubGVuZ3Ro
KSA9PSAiZjE9VGhpcytpcytmaWVsZCslMjMxKyUyNiUyMSU0MCUyNCUyNSUyNyUzQyUzRSZmMj1U
aGlzK2lzK2ZpZWxkKyUyMzIrJTIyJTIyIikKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8
cD5TdWNjZXNzPC9wPiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudC53cml0
ZSgiPHA+RmFpbHVyZTogKCIgKyBkb2N1bWVudC5VUkwgKyAiKTwvcD4iKTsKKworICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworfSBlbHNlIHsKKworICAgIGRvY3VtZW50
LndyaXRlKCI8cD5UaGlzIHRlc3QgZG9lc24ndCB3b3JrIGRpcmVjdGx5IGZyb20gYnVnemlsbGEs
IHBsZWFzZSBzYXZlIGl0IHRvIGEgbG9jYWwgZmlsZSBmaXJzdC48L3A+Iik7Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9m
b3JtLXBvc3QtdGV4dHBsYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFp
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRl
c3QgZm9yIDIwNzk1LCBpdCBtYWtlcyBzdXJlIHRoYXQgZm9ybXMgUE9TVGVkIHdpdGggYSBjb250
ZW50LXR5cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4gdGV4dC9wbGFpbgor
CitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRl
eHRwbGFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9m
b3JtLXBvc3QtdGV4dHBsYWluLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVn
IDIwNzk1PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+CitUaGlzIGlzIGEgdGVzdCBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzk1LCBpdCBtYWtlcyBz
dXJlIHRoYXQKK2Zvcm1zIFBPU1RlZCB3aXRoIGEgY29udGVudC10eXBlIG9mIHRleHQvcGxhaW4g
YWN0dWFsbHkgc2VuZCBkYXRhIGluIHRleHQvcGxhaW4KKzwvcD4KKworPGZvcm0gZW5jdHlwZT0i
dGV4dC9wbGFpbiIgbWV0aG9kPSJwb3N0IiBhY3Rpb249InJlc291cmNlcy9mb3JtLXBvc3QtdGV4
dHBsYWluLnBocCIgbmFtZT0iZiI+CisgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZjEi
IHZhbHVlPSJUaGlzIGlzIGZpZWxkICMxICYhQCQlJzw+Ij4KKyAgICA8aW5wdXQgdHlwZT0iaGlk
ZGVuIiBuYW1lPSJmMiIgdmFsdWU9J1RoaXMgaXMgZmllbGQgIzIgIiInPgorICAgIDxpbnB1dCB0
eXBlPSJzdWJtaXQiIHZhbHVlPSJwcmVzcyBtZSI+Cis8L2Zvcm0+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisKK2RvY3VtZW50LmYuc3VibWl0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvZm9ybS1wb3N0LXRleHRw
bGFpbi5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291
cmNlcy9mb3JtLXBvc3QtdGV4dHBsYWluLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvZm9ybS1wb3N0LXRleHRwbGFpbi5waHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzw/cGhwCitoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4
dC9odG1sOyBjaGFyc2V0PVVURi04Iik7Cis/PgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5SZWdy
ZXNzaW9uIHRlc3QgZm9yIGJ1ZyAyMDc5NTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgor
VGhpcyBpcyBhIHRlc3QgZm9yIDIwNzk1LCBpdCBtYWtlcyBzdXJlIHRoYXQgZm9ybXMgUE9TVGVk
IHdpdGggYSBjb250ZW50LXR5cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4g
dGV4dC9wbGFpbgorPC9wPgorPD9waHAKKyRkYXRhID0gZmlsZV9nZXRfY29udGVudHMoInBocDov
L2lucHV0Iik7CisKK2lmKCRkYXRhID09ICJmMT1UaGlzIGlzIGZpZWxkICMxICYhQCQlJzw+XHJc
bmYyPVRoaXMgaXMgZmllbGQgIzIgXCJcIiIpIHsKKyAgICBlY2hvICI8cD5TVUNDRVNTPC9wPiI7
Cit9IGVsc2UgeworICAgIGVjaG8gIjxwPkZBSUxVUkU6ICRkYXRhPC9wPiI7Cit9Cis/PgorPHNj
cmlwdD4KK2lmKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="63895"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112317</attachid>
            <date>2011-10-25 04:45:02 -0700</date>
            <delta_ts>2011-10-26 10:24:28 -0700</delta_ts>
            <desc>initial approach to fix this issue.</desc>
            <filename>vineet_form_enctype_005.diff</filename>
            <type>text/plain</type>
            <size>13976</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4MzMyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTAtMjUgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICB0ZXh0
L3BsYWluIGZvcm0gZW5jb2RpbmcgaWdub3JlZCBhbmQgaW5jb3JyZWN0bHkgc3BlY2lmaWVkIGlu
IHJlcXVlc3QgaGVhZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBiZWhhdmlvdXIgb2YgZm9ybXMgd2hlcmUgZW5j
dHlwZSBpcyBzZXQgdG8KKyAgICAgICAgdGV4dC9wbGFpbiwgZW5jb2Rpbmcgc2hvdWxkIGJlIGFs
c28gdGV4dC9wbGFpbgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRw
bGFpbi5odG1sCisgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLmh0
bWwKKworICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
RGF0YTo6Z2V0RW5jb2RpbmdUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUJ1aWxkZXI6OmFkZEtl
eVZhbHVlUGFpckFzRm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGFCdWlsZGVyLmg6CisKIDIwMTEtMTAtMjEgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gUm91dGUgQ29uc29sZTo6dGltZSBhbmQgQ29uc29sZTo6
dGltZUVuZCB0byB0cmFjZV9ldmVudApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwCShyZXZpc2lvbiA5ODMyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw4ICsxOTgsOCBAQCBQYXNz
UmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlzc2lvCiAgICAgaWYgKGlzTXVsdGlQYXJ0
Rm9ybSkgewogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoKihz
dGF0aWNfY2FzdDxGb3JtRGF0YUxpc3QqPihkb21Gb3JtRGF0YS5nZXQoKSkpLCBkb21Gb3JtRGF0
YS0+ZW5jb2RpbmcoKSwgZG9jdW1lbnQpOwogICAgICAgICBib3VuZGFyeSA9IGZvcm1EYXRhLT5i
b3VuZGFyeSgpLmRhdGEoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmb3JtRGF0YSA9IEZvcm1E
YXRhOjpjcmVhdGUoKihzdGF0aWNfY2FzdDxGb3JtRGF0YUxpc3QqPihkb21Gb3JtRGF0YS5nZXQo
KSkpLCBkb21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSk7CisgICAgfSBlbHNlIHsgICAgICAgIAorICAg
ICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKihzdGF0aWNfY2FzdDxGb3JtRGF0YUxp
c3QqPihkb21Gb3JtRGF0YS5nZXQoKSkpLCBkb21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSwgRm9ybURh
dGE6OmdldEVuY29kaW5nVHlwZShlbmNvZGluZ1R5cGUpKTsKICAgICAgICAgaWYgKGNvcGllZEF0
dHJpYnV0ZXMubWV0aG9kKCkgPT0gUG9zdE1ldGhvZCAmJiBpc01haWx0b0Zvcm0pIHsKICAgICAg
ICAgICAgIC8vIENvbnZlcnQgdGhlIGZvcm0gZGF0YSBpbnRvIGEgc3RyaW5nIHRoYXQgd2UgcHV0
IGludG8gdGhlIFVSTC4KICAgICAgICAgICAgIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJM
KGFjdGlvblVSTCwgKmZvcm1EYXRhLCBlbmNvZGluZ1R5cGUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHJldmlzaW9uIDk4MzIxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDEwICs5OSwxMCBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3Jl
YXRlKGNvCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9y
bURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBU
ZXh0RW5jb2RpbmcmIGVuY29kaW5nKQorUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNy
ZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rp
bmcsIGNvbnN0IEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUpCiB7CiAgICAgUmVmUHRyPEZvcm1E
YXRhPiByZXN1bHQgPSBjcmVhdGUoKTsKLSAgICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0
ZW1zKGxpc3QsIGVuY29kaW5nLCBmYWxzZSwgMCk7CisgICAgcmVzdWx0LT5hcHBlbmRLZXlWYWx1
ZVBhaXJJdGVtcyhsaXN0LCBlbmNvZGluZywgZmFsc2UsIDAsIGVuY29kaW5nVHlwZSk7CiAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIEZv
cm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IEtVUkwmIGJsCiB9CiAjZW5kaWYKIAotdm9pZCBGb3Jt
RGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGlzTXVsdGlQYXJ0Rm9ybSwgRG9jdW1l
bnQqIGRvY3VtZW50KQordm9pZCBGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29u
c3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29s
IGlzTXVsdGlQYXJ0Rm9ybSwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFbmNvZGluZ1R5cGUg
ZW5jb2RpbmdUeXBlKQogewogICAgIGlmIChpc011bHRpUGFydEZvcm0pCiAgICAgICAgIG1fYm91
bmRhcnkgPSBGb3JtRGF0YUJ1aWxkZXI6OmdlbmVyYXRlVW5pcXVlQm91bmRhcnlTdHJpbmcoKTsK
QEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVt
cyhjCiAgICAgICAgICAgICBpZiAoZW5jb2RlZERhdGEuaXNFbXB0eSgpICYmIGtleS5kYXRhKCkg
PT0gImlzaW5kZXgiKQogICAgICAgICAgICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3Ry
aW5nQXNGb3JtRGF0YShlbmNvZGVkRGF0YSwgdmFsdWUuZGF0YSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBGb3JtRGF0YUJ1aWxkZXI6OmFkZEtleVZhbHVlUGFpckFzRm9y
bURhdGEoZW5jb2RlZERhdGEsIGtleS5kYXRhKCksIHZhbHVlLmRhdGEoKSk7CisgICAgICAgICAg
ICAgICAgRm9ybURhdGFCdWlsZGVyOjphZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKGVuY29kZWRE
YXRhLCBrZXkuZGF0YSgpLCB2YWx1ZS5kYXRhKCksIGVuY29kaW5nVHlwZSk7CiAgICAgICAgIH0K
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgJKHJldmlzaW9uIDk4MzIxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSwxMSArOTEsMTcgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBGb3JtRGF0YUVsZQogCiBjbGFzcyBGb3JtRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEZvcm1EYXRhPiB7CiBwdWJsaWM6CisgICAgZW51bSBFbmNvZGluZ1R5cGUgewor
ICAgICAgICBhcHBsaWNhdGlvbl94X3d3d19mb3JtX3VybGVuY29kZWQsIC8vIGZvciBhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgICAgICAgdGV4dF9wbGFpbiwgLy8gZm9yIHRl
eHQvcGxhaW4KKyAgICAgICAgbXVsdGlwYXJ0X2Zvcm1fZGF0YSAvLyBmb3IgbXVsdGlwYXJ0L2Zv
cm0tZGF0YQorICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRl
KCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lkKiwg
c2l6ZV90KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IENT
dHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IFZl
Y3RvcjxjaGFyPiYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29u
c3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5j
b2RpbmcmLCBjb25zdCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlID0gYXBwbGljYXRpb25feF93
d3dfZm9ybV91cmxlbmNvZGVkKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3Jl
YXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYsIERv
Y3VtZW50Kik7CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY29weSgpIGNvbnN0OwogICAgIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7CkBAIC0xMjksMTEgKzEzNSwyMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZGVudGlmaWVyKGludDY0X3QgaWRlbnRpZmllcikgeyBt
X2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAgICAgaW50NjRfdCBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKKyAgICBzdGF0aWMgRW5jb2RpbmdUeXBlIGdl
dEVuY29kaW5nVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgeworICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UodHlwZSwgInRleHQvcGxhaW4iKSkKKyAgICAgICAgICAgIHJldHVybiB0
ZXh0X3BsYWluOworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgIm11bHRpcGFy
dC9mb3JtLWRhdGEiKSkKKyAgICAgICAgICAgICByZXR1cm4gbXVsdGlwYXJ0X2Zvcm1fZGF0YTsK
KyAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uX3hfd3d3X2Zvcm1fdXJsZW5jb2RlZDsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgRm9ybURhdGEoKTsKICAgICBGb3JtRGF0YShjb25zdCBGb3JtRGF0
YSYpOwogCi0gICAgdm9pZCBhcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxp
c3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBib29sIGlzTXVsdGlQYXJ0Rm9ybSwgRG9jdW1lbnQq
KTsKKyAgICB2b2lkIGFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYs
IGNvbnN0IFRleHRFbmNvZGluZyYsIGJvb2wgaXNNdWx0aVBhcnRGb3JtLCBEb2N1bWVudCosIGNv
bnN0IEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUgPSBhcHBsaWNhdGlvbl94X3d3d19mb3JtX3Vy
bGVuY29kZWQpOwogCiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gbV9lbGVtZW50czsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFC
dWlsZGVyLmNwcAkocmV2aXNpb24gOTgzMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSwxNCArMTgx
LDIxIEBAIHZvaWQgRm9ybURhdGFCdWlsZGVyOjpmaW5pc2hNdWx0aVBhcnRIZWEKICAgICBhcHBl
bmQoYnVmZmVyLCAiXHJcblxyXG4iKTsKIH0KIAotdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmFkZEtl
eVZhbHVlUGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcm
IGtleSwgY29uc3QgQ1N0cmluZyYgdmFsdWUpCit2b2lkIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5
VmFsdWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgY29uc3QgQ1N0cmluZyYg
a2V5LCBjb25zdCBDU3RyaW5nJiB2YWx1ZSwgY29uc3QgRm9ybURhdGE6OkVuY29kaW5nVHlwZSBl
bmNvZGluZ1R5cGUpCiB7Ci0gICAgaWYgKCFidWZmZXIuaXNFbXB0eSgpKQotICAgICAgICBhcHBl
bmQoYnVmZmVyLCAnJicpOwotCi0gICAgZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShidWZmZXIsIGtl
eSk7Ci0gICAgYXBwZW5kKGJ1ZmZlciwgJz0nKTsKLSAgICBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRh
KGJ1ZmZlciwgdmFsdWUpOworICAgIGlmIChlbmNvZGluZ1R5cGUgPT0gRm9ybURhdGE6OnRleHRf
cGxhaW4pIHsKKyAgICAgICAgaWYgKCFidWZmZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgYXBw
ZW5kKGJ1ZmZlciwgIlxyXG4iKTsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwga2V5KTsKKyAgICAg
ICAgYXBwZW5kKGJ1ZmZlciwgJz0nKTsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgdmFsdWUpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGFwcGVuZChidWZmZXIsICcmJyk7CisgICAgICAgIGVuY29kZVN0cmluZ0FzRm9ybURhdGEoYnVm
ZmVyLCBrZXkpOworICAgICAgICBhcHBlbmQoYnVmZmVyLCAnPScpOworICAgICAgICBlbmNvZGVT
dHJpbmdBc0Zvcm1EYXRhKGJ1ZmZlciwgdmFsdWUpOworICAgIH0KIH0KIAogdm9pZCBGb3JtRGF0
YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNv
bnN0IENTdHJpbmcmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGFCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaAkocmV2aXNpb24gOTgzMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIEZvcm1EYXRhQnVpbGRlcl9oCiAjZGVmaW5lIEZv
cm1EYXRhQnVpbGRlcl9oCiAKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNDMsNyArNDQsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZmluaXNoTXVsdGlQYXJ0SGVhZGVyKFZlY3Rvcjxj
aGFyPiYpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IEhUTUxGb3JtRWxlbWVu
dCBmb3Igbm9uIG11bHRpLXBhcnQgZm9ybSBkYXRhCi0gICAgc3RhdGljIHZvaWQgYWRkS2V5VmFs
dWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mLCBjb25zdCBDU3RyaW5nJiBrZXksIGNvbnN0
IENTdHJpbmcmIHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRLZXlWYWx1ZVBhaXJBc0Zvcm1E
YXRhKFZlY3RvcjxjaGFyPiYsIGNvbnN0IENTdHJpbmcmIGtleSwgY29uc3QgQ1N0cmluZyYgdmFs
dWUsIGNvbnN0IEZvcm1EYXRhOjpFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlID0gRm9ybURhdGE6
OmFwcGxpY2F0aW9uX3hfd3d3X2Zvcm1fdXJsZW5jb2RlZCk7CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlU3RyaW5nQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mLCBjb25zdCBDU3RyaW5nJik7CiAKIHBy
aXZhdGU6CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODMzMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTEwLTI1ICBWaW5lZXQgQ2hh
dWRoYXJ5ICA8dmluZWV0LmNoYXVkaGFyeUBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgdGV4dC9w
bGFpbiBmb3JtIGVuY29kaW5nIGlnbm9yZWQgYW5kIGluY29ycmVjdGx5IHNwZWNpZmllZCBpbiBy
ZXF1ZXN0IGhlYWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdGVzdHMgZm9yIEdFVCBhbmQgUE9TVCBtZXRob2RzIGZvciB0ZXh0L3BsYWlu
IGVuY3R5cGUuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWlu
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBs
YWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2Zvcm0t
cG9zdC10ZXh0cGxhaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL3Jl
c291cmNlcy9mb3JtLXBvc3QtdGV4dHBsYWluLnBocDogQWRkZWQuCisKIDIwMTEtMTAtMjUgIFpv
bHRhbiBBcnZhaSAgPHphcnZhaUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBSZW1v
dmUgZnJvbSBTa2lwcGVkIGxpc3QuIFRlc3QgcGFzc2VzOiBmYXN0L3RyYW5zZm9ybXMvc2Nyb2xs
SW50b1ZpZXctdHJhbnNmb3JtZWQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
b3JtLWdldC10ZXh0cGxhaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWluLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgbmVnYXRpdmUgdGVzdCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzk1LCBpdCBtYWtl
cyBzdXJlIHRoYXQgZm9ybXMgc3VibWl0dGVkIHVzaW5nIEdFVCB3aXRoIGEgY29udGVudC10eXBl
IG9mIHRleHQvcGxhaW4gYWN0dWFsbHkgc2VuZCBkYXRhIGluIFVSTCBlbmNvZGVkIGluIHRoZSBV
UkwKKworU3VjY2VzcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0
cGxhaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZ2V0
LXRleHRwbGFpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
b3JtLWdldC10ZXh0cGxhaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5SZWdyZXNzaW9uIHRlc3QgZm9yIGJ1ZyAyMDc5NTwvdGl0bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSBuZWdhdGl2ZSB0ZXN0IGZvciBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTUsIGl0IG1ha2VzIHN1cmUgdGhh
dCBmb3JtcyBzdWJtaXR0ZWQgdXNpbmcgR0VUIHdpdGggYSBjb250ZW50LXR5cGUgb2YgdGV4dC9w
bGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4gVVJMIGVuY29kZWQgaW4gdGhlIFVSTDwvcD4KKzxm
b3JtIGVuY3R5cGU9InRleHQvcGxhaW4iIG1ldGhvZD0iZ2V0IiBhY3Rpb249Ij8iIG5hbWU9ImYi
PgorICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImYxIiB2YWx1ZT0iVGhpcyBpcyBmaWVs
ZCAjMSAmIUAkJSc8PiI+CisgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZjIiIHZhbHVl
PSdUaGlzIGlzIGZpZWxkICMyICIiJz4KKyAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i
cHJlc3MgbWUiPgorPC9mb3JtPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAoZG9jdW1lbnQuVVJM
LnN1YnN0cmluZygwLCA0KSA9PSAiZmlsZSIpIHsKKworICAgIGlmIChkb2N1bWVudC5VUkwuaW5k
ZXhPZignPycpID09IC0xKSB7CisKKyAgICAgICAgZG9jdW1lbnQuZi5zdWJtaXQoKTsKKworICAg
IH0gZWxzZSB7CisKKwlkb2N1bWVudC5mLnN0eWxlLmRpc3BsYXk9Im5vbmUiOworICAgICAgICBp
ZiAoZG9jdW1lbnQuVVJMLnN1YnN0cmluZyhkb2N1bWVudC5VUkwuaW5kZXhPZignPycpKzEsIGRv
Y3VtZW50LlVSTC5sZW5ndGgpID09ICJmMT1UaGlzK2lzK2ZpZWxkKyUyMzErJTI2JTIxJTQwJTI0
JTI1JTI3JTNDJTNFJmYyPVRoaXMraXMrZmllbGQrJTIzMislMjIlMjIiKQorICAgICAgICAgICAg
ZG9jdW1lbnQud3JpdGUoIjxwPlN1Y2Nlc3M8L3A+Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGRvY3VtZW50LndyaXRlKCI8cD5GYWlsdXJlOiAoIiArIGRvY3VtZW50LlVSTCArICIpPC9w
PiIpOworCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCit9IGVsc2Ug
eworCisgICAgZG9jdW1lbnQud3JpdGUoIjxwPlRoaXMgdGVzdCBkb2Vzbid0IHdvcmsgZGlyZWN0
bHkgZnJvbSBidWd6aWxsYSwgcGxlYXNlIHNhdmUgaXQgdG8gYSBsb2NhbCBmaWxlIGZpcnN0Ljwv
cD4iKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9m
b3JtLXBvc3QtdGV4dHBsYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
IEBACitUaGlzIGlzIGEgdGVzdCBmb3IgMjA3OTUsIGl0IG1ha2VzIHN1cmUgdGhhdCBmb3JtcyBQ
T1NUZWQgd2l0aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0L3BsYWluIGFjdHVhbGx5IHNlbmQgZGF0
YSBpbiB0ZXh0L3BsYWluCisKK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4uaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+UmVncmVz
c2lvbiB0ZXN0IGZvciBidWcgMjA3OTU8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1Ro
aXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3OTUsIGl0IG1ha2VzIHN1cmUgdGhhdAorZm9ybXMgUE9TVGVkIHdpdGggYSBjb250ZW50LXR5
cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4gdGV4dC9wbGFpbgorPC9wPgor
Cis8Zm9ybSBlbmN0eXBlPSJ0ZXh0L3BsYWluIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0icmVzb3Vy
Y2VzL2Zvcm0tcG9zdC10ZXh0cGxhaW4ucGhwIiBuYW1lPSJmIj4KKyAgICA8aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSJmMSIgdmFsdWU9IlRoaXMgaXMgZmllbGQgIzEgJiFAJCUnPD4iPgorICAg
IDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImYyIiB2YWx1ZT0nVGhpcyBpcyBmaWVsZCAjMiAi
Iic+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InByZXNzIG1lIj4KKzwvZm9ybT4K
KzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKworZG9jdW1lbnQuZi5zdWJtaXQoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNl
cy9mb3JtLXBvc3QtdGV4dHBsYWluLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0tcG9zdC10ZXh0cGxhaW4ucGhwCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9mb3JtLXBvc3QtdGV4
dHBsYWluLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPD9waHAKK2hlYWRlcigi
Q29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiKTsKKz8+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVnIDIwNzk1PC90aXRsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+CitUaGlzIGlzIGEgdGVzdCBmb3IgMjA3OTUsIGl0IG1ha2VzIHN1cmUg
dGhhdCBmb3JtcyBQT1NUZWQgd2l0aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0L3BsYWluIGFjdHVh
bGx5IHNlbmQgZGF0YSBpbiB0ZXh0L3BsYWluCis8L3A+Cis8P3BocAorJGRhdGEgPSBmaWxlX2dl
dF9jb250ZW50cygicGhwOi8vaW5wdXQiKTsKKworaWYoJGRhdGEgPT0gImYxPVRoaXMgaXMgZmll
bGQgIzEgJiFAJCUnPD5cclxuZjI9VGhpcyBpcyBmaWVsZCAjMiBcIlwiIikgeworICAgIGVjaG8g
IjxwPlNVQ0NFU1M8L3A+IjsKK30gZWxzZSB7CisgICAgZWNobyAiPHA+RkFJTFVSRTogJGRhdGE8
L3A+IjsKK30KKz8+Cis8c2NyaXB0PgoraWYod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112559</attachid>
            <date>2011-10-26 10:24:28 -0700</date>
            <delta_ts>2011-10-27 09:44:45 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>form_enctype_enum_003.diff</filename>
            <type>text/plain</type>
            <size>14204</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NDk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTAtMjYgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICB0ZXh0
L3BsYWluIGZvcm0gZW5jb2RpbmcgaWdub3JlZCBhbmQgaW5jb3JyZWN0bHkgc3BlY2lmaWVkIGlu
IHJlcXVlc3QgaGVhZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBiZWhhdmlvdXIgb2YgZm9ybXMgd2hlcmUgZW5j
dHlwZSBpcyBzZXQgdG8KKyAgICAgICAgdGV4dC9wbGFpbiwgZW5jb2RpbmcgaXMgYWxzbyB0ZXh0
L3BsYWluLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OmdldEVuY29kaW5nVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFCdWlsZGVyOjphZGRL
ZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhQnVpbGRlci5oOgorCiAyMDExLTEwLTI2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjk0ODg3KTogU2Nyb2xsaW5nIHRo
ZSBIVE1MIHNwZWMgaXMgbW9yZSBqZXJreSBub3cgdGhhbiBpdCB3YXMgKHJlZ3Jlc3Npb24pCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJldmlzaW9uIDk4
MzMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZv
cm1TdWJtaXNzaW8KICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0
KCooc3RhdGljX2Nhc3Q8Rm9ybURhdGFMaXN0Kj4oZG9tRm9ybURhdGEuZ2V0KCkpKSwgZG9tRm9y
bURhdGEtPmVuY29kaW5nKCksIGRvY3VtZW50KTsKICAgICAgICAgYm91bmRhcnkgPSBmb3JtRGF0
YS0+Ym91bmRhcnkoKS5kYXRhKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9ybURhdGEgPSBG
b3JtRGF0YTo6Y3JlYXRlKCooc3RhdGljX2Nhc3Q8Rm9ybURhdGFMaXN0Kj4oZG9tRm9ybURhdGEu
Z2V0KCkpKSwgZG9tRm9ybURhdGEtPmVuY29kaW5nKCkpOworICAgICAgICBmb3JtRGF0YSA9IEZv
cm1EYXRhOjpjcmVhdGUoKihzdGF0aWNfY2FzdDxGb3JtRGF0YUxpc3QqPihkb21Gb3JtRGF0YS5n
ZXQoKSkpLCBkb21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSwgYXR0cmlidXRlcy5tZXRob2QoKSA9PSBH
ZXRNZXRob2QgPyBGb3JtRGF0YTo6Rm9ybVVSTEVuY29kZWQgOiBGb3JtRGF0YTo6Z2V0RW5jb2Rp
bmdUeXBlKGVuY29kaW5nVHlwZSkpOwogICAgICAgICBpZiAoY29waWVkQXR0cmlidXRlcy5tZXRo
b2QoKSA9PSBQb3N0TWV0aG9kICYmIGlzTWFpbHRvRm9ybSkgewogICAgICAgICAgICAgLy8gQ29u
dmVydCB0aGUgZm9ybSBkYXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBwdXQgaW50byB0aGUgVVJM
LgogICAgICAgICAgICAgYXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoYWN0aW9uVVJMLCAq
Zm9ybURhdGEsIGVuY29kaW5nVHlwZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAkocmV2aXNpb24gOTgzMzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMTAg
Kzk5LDEwIEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY28KICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURh
dGE6OmNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYg
ZW5jb2RpbmcpCitQYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IEZv
cm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3QgRW5j
b2RpbmdUeXBlIGVuY29kaW5nVHlwZSkKIHsKICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlc3VsdCA9
IGNyZWF0ZSgpOwotICAgIHJlc3VsdC0+YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMobGlzdCwgZW5j
b2RpbmcsIGZhbHNlLCAwKTsKKyAgICByZXN1bHQtPmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGxp
c3QsIGVuY29kaW5nLCBmYWxzZSwgMCwgZW5jb2RpbmdUeXBlKTsKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKIH0KIApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVu
ZEJsb2IoY29uc3QgS1VSTCYgYmwKIH0KICNlbmRpZgogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRL
ZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3QmIGxpc3QsIGNvbnN0IFRleHRFbmNv
ZGluZyYgZW5jb2RpbmcsIGJvb2wgaXNNdWx0aVBhcnRGb3JtLCBEb2N1bWVudCogZG9jdW1lbnQp
Cit2b2lkIEZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxp
c3QmIGxpc3QsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgaXNNdWx0aVBhcnRG
b3JtLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEVuY29kaW5nVHlwZSBlbmNvZGluZ1R5cGUp
CiB7CiAgICAgaWYgKGlzTXVsdGlQYXJ0Rm9ybSkKICAgICAgICAgbV9ib3VuZGFyeSA9IEZvcm1E
YXRhQnVpbGRlcjo6Z2VuZXJhdGVVbmlxdWVCb3VuZGFyeVN0cmluZygpOwpAQCAtMjYzLDcgKzI2
Myw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGMKICAgICAgICAg
ICAgIGlmIChlbmNvZGVkRGF0YS5pc0VtcHR5KCkgJiYga2V5LmRhdGEoKSA9PSAiaXNpbmRleCIp
CiAgICAgICAgICAgICAgICAgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRh
KGVuY29kZWREYXRhLCB2YWx1ZS5kYXRhKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShlbmNvZGVk
RGF0YSwga2V5LmRhdGEoKSwgdmFsdWUuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBGb3JtRGF0
YUJ1aWxkZXI6OmFkZEtleVZhbHVlUGFpckFzRm9ybURhdGEoZW5jb2RlZERhdGEsIGtleS5kYXRh
KCksIHZhbHVlLmRhdGEoKSwgZW5jb2RpbmdUeXBlKTsKICAgICAgICAgfQogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAkocmV2aXNpb24g
OTgzMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDExICs5MSwxNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZvcm1EYXRhRWxlCiAKIGNsYXNzIEZvcm1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9y
bURhdGE+IHsKIHB1YmxpYzoKKyAgICBlbnVtIEVuY29kaW5nVHlwZSB7CisgICAgICAgIEZvcm1V
UkxFbmNvZGVkLCAvLyBmb3IgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCisgICAg
ICAgIFRleHRQbGFpbiwgLy8gZm9yIHRleHQvcGxhaW4KKyAgICAgICAgTXVsdGlwYXJ0Rm9ybURh
dGEgLy8gZm9yIG11bHRpcGFydC9mb3JtLWRhdGEKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBjcmVhdGUoY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGNyZWF0ZShjb25zdCBDU3RyaW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGlu
ZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRm9ybURh
dGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgY29uc3QgRW5jb2RpbmdUeXBlIGVuY29kaW5n
VHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Y3JlYXRlTXVsdGlQYXJ0KGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNvZGluZyYs
IERvY3VtZW50Kik7CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY29weSgpIGNvbnN0OwogICAg
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7CkBAIC0xMjksMTEgKzEzNSwy
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZGVudGlmaWVyKGludDY0X3QgaWRlbnRpZmllcikg
eyBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAgICAgaW50NjRfdCBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKKyAgICBzdGF0aWMgRW5jb2RpbmdUeXBl
IGdldEVuY29kaW5nVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgeworICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgInRleHQvcGxhaW4iKSkKKyAgICAgICAgICAgIHJldHVy
biBUZXh0UGxhaW47CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0eXBlLCAibXVsdGlw
YXJ0L2Zvcm0tZGF0YSIpKQorICAgICAgICAgICAgIHJldHVybiBNdWx0aXBhcnRGb3JtRGF0YTsK
KyAgICAgICAgcmV0dXJuIEZvcm1VUkxFbmNvZGVkOworICAgIH0KKwogcHJpdmF0ZToKICAgICBG
b3JtRGF0YSgpOwogICAgIEZvcm1EYXRhKGNvbnN0IEZvcm1EYXRhJik7CiAKLSAgICB2b2lkIGFw
cGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYsIGNvbnN0IFRleHRFbmNv
ZGluZyYsIGJvb2wgaXNNdWx0aVBhcnRGb3JtLCBEb2N1bWVudCopOworICAgIHZvaWQgYXBwZW5k
S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5n
JiwgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50KiwgY29uc3QgRW5jb2RpbmdUeXBlIGVu
Y29kaW5nVHlwZSA9IEZvcm1VUkxFbmNvZGVkKTsKIAogICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1l
bnQ+IG1fZWxlbWVudHM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGFCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAJKHJldmlzaW9uIDk4MzMyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsMTQgKzE4MSwyMSBAQCB2b2lkIEZvcm1EYXRhQnVpbGRlcjo6ZmluaXNoTXVs
dGlQYXJ0SGVhCiAgICAgYXBwZW5kKGJ1ZmZlciwgIlxyXG5cclxuIik7CiB9CiAKLXZvaWQgRm9y
bURhdGFCdWlsZGVyOjphZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVm
ZmVyLCBjb25zdCBDU3RyaW5nJiBrZXksIGNvbnN0IENTdHJpbmcmIHZhbHVlKQordm9pZCBGb3Jt
RGF0YUJ1aWxkZXI6OmFkZEtleVZhbHVlUGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZm
ZXIsIGNvbnN0IENTdHJpbmcmIGtleSwgY29uc3QgQ1N0cmluZyYgdmFsdWUsIGNvbnN0IEZvcm1E
YXRhOjpFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQogewotICAgIGlmICghYnVmZmVyLmlzRW1w
dHkoKSkKLSAgICAgICAgYXBwZW5kKGJ1ZmZlciwgJyYnKTsKLQotICAgIGVuY29kZVN0cmluZ0Fz
Rm9ybURhdGEoYnVmZmVyLCBrZXkpOwotICAgIGFwcGVuZChidWZmZXIsICc9Jyk7Ci0gICAgZW5j
b2RlU3RyaW5nQXNGb3JtRGF0YShidWZmZXIsIHZhbHVlKTsKKyAgICBpZiAoZW5jb2RpbmdUeXBl
ID09IEZvcm1EYXRhOjpUZXh0UGxhaW4pIHsKKyAgICAgICAgaWYgKCFidWZmZXIuaXNFbXB0eSgp
KQorICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgIlxyXG4iKTsKKyAgICAgICAgYXBwZW5kKGJ1
ZmZlciwga2V5KTsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgJz0nKTsKKyAgICAgICAgYXBwZW5k
KGJ1ZmZlciwgdmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghYnVmZmVyLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICcmJyk7CisgICAgICAgIGVuY29kZVN0
cmluZ0FzRm9ybURhdGEoYnVmZmVyLCBrZXkpOworICAgICAgICBhcHBlbmQoYnVmZmVyLCAnPScp
OworICAgICAgICBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJ1ZmZlciwgdmFsdWUpOworICAgIH0K
IH0KIAogdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoVmVjdG9y
PGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaAkocmV2aXNpb24g
OTgzMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIEZvcm1EYXRhQnVp
bGRlcl9oCiAjZGVmaW5lIEZvcm1EYXRhQnVpbGRlcl9oCiAKKyNpbmNsdWRlICJGb3JtRGF0YS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IApAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZmluaXNoTXVsdGlQ
YXJ0SGVhZGVyKFZlY3RvcjxjaGFyPiYpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB1c2Vk
IGJ5IEhUTUxGb3JtRWxlbWVudCBmb3Igbm9uIG11bHRpLXBhcnQgZm9ybSBkYXRhCi0gICAgc3Rh
dGljIHZvaWQgYWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mLCBjb25zdCBD
U3RyaW5nJiBrZXksIGNvbnN0IENTdHJpbmcmIHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRL
ZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYsIGNvbnN0IENTdHJpbmcmIGtleSwg
Y29uc3QgQ1N0cmluZyYgdmFsdWUsIEZvcm1EYXRhOjpFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBl
ID0gRm9ybURhdGE6OkZvcm1VUkxFbmNvZGVkKTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVTdHJp
bmdBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYsIGNvbnN0IENTdHJpbmcmKTsKIAogcHJpdmF0ZToK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDk4NDk0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTAtMjYgIFZpbmVldCBDaGF1ZGhhcnkg
IDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICB0ZXh0L3BsYWluIGZv
cm0gZW5jb2RpbmcgaWdub3JlZCBhbmQgaW5jb3JyZWN0bHkgc3BlY2lmaWVkIGluIHJlcXVlc3Qg
aGVhZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCB0ZXN0cyBmb3IgR0VUIGFuZCBQT1NUIG1ldGhvZHMgZm9yIHRleHQvcGxhaW4gZW5jdHlw
ZS4KKyAgICAgICAgRm9ybXMgc3VibWl0dGVkIHVzaW5nIEdFVCB3aXRoIGEgY29udGVudC10eXBl
IG9mIHRleHQvcGxhaW4gYWN0dWFsbHksCisgICAgICAgIHNlbmQgZGF0YSBpbiBVUkwgZW5jb2Rl
ZCBpbiB0aGUgVVJMLgorICAgICAgICBGb3JtcyB3aXRoIFBPU1QgbWV0aG9kIGFuZCBjb250ZW50
LXR5cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4gdGV4dC9wbGFpbi4KKwor
ICAgICAgICAqIGZhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWluLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxhaW4uaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFp
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0t
cG9zdC10ZXh0cGxhaW4ucGhwOiBBZGRlZC4KKwogMjAxMS0xMC0yNiAgRGltaXRyaSBHbGF6a292
ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHI5NDg4Nyk6
IFNjcm9sbGluZyB0aGUgSFRNTCBzcGVjIGlzIG1vcmUgamVya3kgbm93IHRoYW4gaXQgd2FzIChy
ZWdyZXNzaW9uKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxh
aW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9y
bS1nZXQtdGV4dHBsYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgbmVnYXRpdmUgdGVzdCBmb3IgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzk1LCBpdCBtYWtlcyBzdXJlIHRoYXQgZm9y
bXMgc3VibWl0dGVkIHVzaW5nIEdFVCB3aXRoIGEgY29udGVudC10eXBlIG9mIHRleHQvcGxhaW4g
YWN0dWFsbHkgc2VuZCBkYXRhIGluIFVSTCBlbmNvZGVkIGluIHRoZSBVUkwKKworU3VjY2VzcwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxhaW4uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxh
aW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5SZWdyZXNzaW9uIHRlc3QgZm9yIGJ1ZyAyMDc5NTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPlRoaXMgaXMgYSBuZWdhdGl2ZSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTUsIGl0IG1ha2VzIHN1cmUgdGhhdCBmb3JtcyBzdWJtaXR0
ZWQgdXNpbmcgR0VUIHdpdGggYSBjb250ZW50LXR5cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBz
ZW5kIGRhdGEgaW4gVVJMIGVuY29kZWQgaW4gdGhlIFVSTDwvcD4KKzxmb3JtIGVuY3R5cGU9InRl
eHQvcGxhaW4iIG1ldGhvZD0iZ2V0IiBhY3Rpb249Ij8iIG5hbWU9ImYiPgorICAgIDxpbnB1dCB0
eXBlPSJoaWRkZW4iIG5hbWU9ImYxIiB2YWx1ZT0iVGhpcyBpcyBmaWVsZCAjMSAmIUAkJVxuPSc8
PiI+CisgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZjIiIHZhbHVlPSdUaGlzIGlzIGZp
ZWxkICMyICIiJz4KKyAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0icHJlc3MgbWUiPgor
PC9mb3JtPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAoZG9jdW1lbnQuVVJMLnN1YnN0cmluZygw
LCA0KSA9PSAiZmlsZSIpIHsKKworICAgIGlmIChkb2N1bWVudC5VUkwuaW5kZXhPZignPycpID09
IC0xKSB7CisKKyAgICAgICAgZG9jdW1lbnQuZi5zdWJtaXQoKTsKKworICAgIH0gZWxzZSB7CisK
Kwlkb2N1bWVudC5mLnN0eWxlLmRpc3BsYXk9Im5vbmUiOworICAgICAgICBpZiAoZG9jdW1lbnQu
VVJMLnN1YnN0cmluZyhkb2N1bWVudC5VUkwuaW5kZXhPZignPycpKzEsIGRvY3VtZW50LlVSTC5s
ZW5ndGgpID09ICJmMT1UaGlzK2lzK2ZpZWxkKyUyMzErJTI2JTIxJTQwJTI0JTI1JTVDbiUzRCUy
NyUzQyUzRSZmMj1UaGlzK2lzK2ZpZWxkKyUyMzIrJTIyJTIyIikKKyAgICAgICAgICAgIGRvY3Vt
ZW50LndyaXRlKCI8cD5TdWNjZXNzPC9wPiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBk
b2N1bWVudC53cml0ZSgiPHA+RmFpbHVyZTogKCIgKyBkb2N1bWVudC5VUkwgKyAiKTwvcD4iKTsK
KworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworfSBlbHNlIHsKKwor
ICAgIGRvY3VtZW50LndyaXRlKCI8cD5UaGlzIHRlc3QgZG9lc24ndCB3b3JrIGRpcmVjdGx5IGZy
b20gYnVnemlsbGEsIHBsZWFzZSBzYXZlIGl0IHRvIGEgbG9jYWwgZmlsZSBmaXJzdC48L3A+Iik7
Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1w
b3N0LXRleHRwbGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAor
VGhpcyBpcyBhIHRlc3QgZm9yIDIwNzk1LCBpdCBtYWtlcyBzdXJlIHRoYXQgZm9ybXMgUE9TVGVk
IHdpdGggYSBjb250ZW50LXR5cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4g
dGV4dC9wbGFpbgorCitGQUlMVVJFOiBmMT1UaGlzIGlzIGZpZWxkICMxICYhQCQlXG49Jzw+IGYy
PVRoaXMgaXMgZmllbGQgIzIgIiIKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9m
b3JtLXBvc3QtdGV4dHBsYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+UmVncmVzc2lvbiB0
ZXN0IGZvciBidWcgMjA3OTU8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1RoaXMgaXMg
YSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTUs
IGl0IG1ha2VzIHN1cmUgdGhhdAorZm9ybXMgUE9TVGVkIHdpdGggYSBjb250ZW50LXR5cGUgb2Yg
dGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4gdGV4dC9wbGFpbgorPC9wPgorCis8Zm9y
bSBlbmN0eXBlPSJ0ZXh0L3BsYWluIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0icmVzb3VyY2VzL2Zv
cm0tcG9zdC10ZXh0cGxhaW4ucGhwIiBuYW1lPSJmIj4KKyAgICA8aW5wdXQgdHlwZT0iaGlkZGVu
IiBuYW1lPSJmMSIgdmFsdWU9IlRoaXMgaXMgZmllbGQgIzEgJiFAJCVcbj0nPD4iPgorICAgIDxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImYyIiB2YWx1ZT0nVGhpcyBpcyBmaWVsZCAjMiAiIic+
CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InByZXNzIG1lIj4KKzwvZm9ybT4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKworZG9jdW1lbnQuZi5zdWJtaXQoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9m
b3JtLXBvc3QtdGV4dHBsYWluLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0tcG9zdC10ZXh0cGxhaW4ucGhwCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9mb3JtLXBvc3QtdGV4dHBs
YWluLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPD9waHAKK2hlYWRlcigiQ29u
dGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiKTsKKz8+Cis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPlJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVnIDIwNzk1PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+CitUaGlzIGlzIGEgdGVzdCBmb3IgMjA3OTUsIGl0IG1ha2VzIHN1cmUgdGhh
dCBmb3JtcyBQT1NUZWQgd2l0aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0L3BsYWluIGFjdHVhbGx5
IHNlbmQgZGF0YSBpbiB0ZXh0L3BsYWluCis8L3A+Cis8P3BocAorJGRhdGEgPSBmaWxlX2dldF9j
b250ZW50cygicGhwOi8vaW5wdXQiKTsKKworaWYoJGRhdGEgPT0gImYxPVRoaXMgaXMgZmllbGQg
IzEgJiFAJCVcbj0nPD5cclxuZjI9VGhpcyBpcyBmaWVsZCAjMiBcIlwiIikgeworICAgIGVjaG8g
IjxwPlNVQ0NFU1M8L3A+IjsKK30gZWxzZSB7CisgICAgZWNobyAiPHA+RkFJTFVSRTogJGRhdGE8
L3A+IjsKK30KKz8+Cis8c2NyaXB0PgoraWYod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="110645"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112695</attachid>
            <date>2011-10-27 09:44:45 -0700</date>
            <delta_ts>2011-10-27 13:43:35 -0700</delta_ts>
            <desc>updated_patch</desc>
            <filename>form_enctype_enum_004.diff</filename>
            <type>text/plain</type>
            <size>14068</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NTkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTAtMjcgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICB0ZXh0
L3BsYWluIGZvcm0gZW5jb2RpbmcgaWdub3JlZCBhbmQgaW5jb3JyZWN0bHkgc3BlY2lmaWVkIGlu
IHJlcXVlc3QgaGVhZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBiZWhhdmlvdXIgb2YgZm9ybXMgd2hlcmUgZW5j
dHlwZSBpcyBzZXQgdG8KKyAgICAgICAgdGV4dC9wbGFpbiwgZW5jb2RpbmcgaXMgYWxzbyB0ZXh0
L3BsYWluLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OnBhcnNlRW5jb2RpbmdUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhQnVpbGRlci5jcHA6IE1vZGlmaWVkIGVuY29kaW5nIHNjaGVtZSBmb3IgdGV4dC9wbGFp
bi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNG
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaDoK
KwogMjAxMS0xMC0yNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVnZW5lcmF0ZSBXZWJDb3JlJ3MgTG9jYWxpemFibGUuc3RyaW5ncyBmaWxlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJldmlzaW9uIDk4MzMyKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk5LDcgKzE5OSw3IEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNz
aW8KICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQYXJ0KCooc3RhdGlj
X2Nhc3Q8Rm9ybURhdGFMaXN0Kj4oZG9tRm9ybURhdGEuZ2V0KCkpKSwgZG9tRm9ybURhdGEtPmVu
Y29kaW5nKCksIGRvY3VtZW50KTsKICAgICAgICAgYm91bmRhcnkgPSBmb3JtRGF0YS0+Ym91bmRh
cnkoKS5kYXRhKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6
Y3JlYXRlKCooc3RhdGljX2Nhc3Q8Rm9ybURhdGFMaXN0Kj4oZG9tRm9ybURhdGEuZ2V0KCkpKSwg
ZG9tRm9ybURhdGEtPmVuY29kaW5nKCkpOworICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpj
cmVhdGUoKihzdGF0aWNfY2FzdDxGb3JtRGF0YUxpc3QqPihkb21Gb3JtRGF0YS5nZXQoKSkpLCBk
b21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSwgYXR0cmlidXRlcy5tZXRob2QoKSA9PSBHZXRNZXRob2Qg
PyBGb3JtRGF0YTo6Rm9ybVVSTEVuY29kZWQgOiBGb3JtRGF0YTo6cGFyc2VFbmNvZGluZ1R5cGUo
ZW5jb2RpbmdUeXBlKSk7CiAgICAgICAgIGlmIChjb3BpZWRBdHRyaWJ1dGVzLm1ldGhvZCgpID09
IFBvc3RNZXRob2QgJiYgaXNNYWlsdG9Gb3JtKSB7CiAgICAgICAgICAgICAvLyBDb252ZXJ0IHRo
ZSBmb3JtIGRhdGEgaW50byBhIHN0cmluZyB0aGF0IHdlIHB1dCBpbnRvIHRoZSBVUkwuCiAgICAg
ICAgICAgICBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChhY3Rpb25VUkwsICpmb3JtRGF0
YSwgZW5jb2RpbmdUeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCShyZXZpc2lvbiA5ODMzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMCArOTksMTAg
QEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0ZShjbwogICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y3Jl
YXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGlu
ZykKK1Bhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVhdGUoY29uc3QgRm9ybURhdGFM
aXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBFbmNvZGluZ1R5cGUgZW5j
b2RpbmdUeXBlKQogewogICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0ID0gY3JlYXRlKCk7Ci0g
ICAgcmVzdWx0LT5hcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhsaXN0LCBlbmNvZGluZywgZmFsc2Us
IDApOworICAgIHJlc3VsdC0+YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMobGlzdCwgZW5jb2Rpbmcs
IGZhbHNlLCAwLCBlbmNvZGluZ1R5cGUpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwog
fQogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBL
VVJMJiBibAogfQogI2VuZGlmCiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0
ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGlu
ZywgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgRm9ybURh
dGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50
KiBkb2N1bWVudCwgRW5jb2RpbmdUeXBlIGVuY29kaW5nVHlwZSkKIHsKICAgICBpZiAoaXNNdWx0
aVBhcnRGb3JtKQogICAgICAgICBtX2JvdW5kYXJ5ID0gRm9ybURhdGFCdWlsZGVyOjpnZW5lcmF0
ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKCk7CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGb3JtRGF0
YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoYwogICAgICAgICAgICAgaWYgKGVuY29kZWREYXRh
LmlzRW1wdHkoKSAmJiBrZXkuZGF0YSgpID09ICJpc2luZGV4IikKICAgICAgICAgICAgICAgICBG
b3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEoZW5jb2RlZERhdGEsIHZhbHVl
LmRhdGEoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgRm9ybURhdGFCdWls
ZGVyOjphZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKGVuY29kZWREYXRhLCBrZXkuZGF0YSgpLCB2
YWx1ZS5kYXRhKCkpOworICAgICAgICAgICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFs
dWVQYWlyQXNGb3JtRGF0YShlbmNvZGVkRGF0YSwga2V5LmRhdGEoKSwgdmFsdWUuZGF0YSgpLCBl
bmNvZGluZ1R5cGUpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCShyZXZpc2lvbiA5ODMzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtOTEs
MTEgKzkxLDE3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9ybURhdGFFbGUKIAog
Y2xhc3MgRm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxGb3JtRGF0YT4gewogcHVibGljOgor
ICAgIGVudW0gRW5jb2RpbmdUeXBlIHsKKyAgICAgICAgRm9ybVVSTEVuY29kZWQsIC8vIGZvciBh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgICAgICAgVGV4dFBsYWluLCAvLyBm
b3IgdGV4dC9wbGFpbgorICAgICAgICBNdWx0aXBhcnRGb3JtRGF0YSAvLyBmb3IgbXVsdGlwYXJ0
L2Zvcm0tZGF0YQorICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3Jl
YXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCB2b2lk
Kiwgc2l6ZV90KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0
IENTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gY3JlYXRlKGNvbnN0
IFZlY3RvcjxjaGFyPiYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiBjcmVhdGUo
Y29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0
RW5jb2RpbmcmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25zdCBGb3JtRGF0YUxpc3QmLCBj
b25zdCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOwogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGNvcHkoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkZWVwQ29weSgpIGNvbnN0
OwpAQCAtMTI5LDExICsxMzUsMjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWRlbnRpZmllcihp
bnQ2NF90IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogICAgIGlu
dDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAg
c3RhdGljIEVuY29kaW5nVHlwZSBwYXJzZUVuY29kaW5nVHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
CisgICAgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgInRleHQvcGxhaW4i
KSkKKyAgICAgICAgICAgIHJldHVybiBUZXh0UGxhaW47CisgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQorICAgICAgICAgICAgcmV0dXJu
IE11bHRpcGFydEZvcm1EYXRhOworICAgICAgICByZXR1cm4gRm9ybVVSTEVuY29kZWQ7CisgICAg
fQorCiBwcml2YXRlOgogICAgIEZvcm1EYXRhKCk7CiAgICAgRm9ybURhdGEoY29uc3QgRm9ybURh
dGEmKTsKIAotICAgIHZvaWQgYXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFM
aXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50
Kik7CisgICAgdm9pZCBhcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBGb3JtRGF0YUxpc3Qm
LCBjb25zdCBUZXh0RW5jb2RpbmcmLCBib29sIGlzTXVsdGlQYXJ0Rm9ybSwgRG9jdW1lbnQqLCBF
bmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CiAKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVt
ZW50PiBtX2VsZW1lbnRzOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCShyZXZpc2lvbiA5ODMzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTgxLDE0ICsxODEsMjEgQEAgdm9pZCBGb3JtRGF0YUJ1aWxkZXI6OmZpbmlzaE11
bHRpUGFydEhlYQogICAgIGFwcGVuZChidWZmZXIsICJcclxuXHJcbiIpOwogfQogCi12b2lkIEZv
cm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mIGJ1
ZmZlciwgY29uc3QgQ1N0cmluZyYga2V5LCBjb25zdCBDU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRm9y
bURhdGFCdWlsZGVyOjphZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVm
ZmVyLCBjb25zdCBDU3RyaW5nJiBrZXksIGNvbnN0IENTdHJpbmcmIHZhbHVlLCBGb3JtRGF0YTo6
RW5jb2RpbmdUeXBlIGVuY29kaW5nVHlwZSkKIHsKLSAgICBpZiAoIWJ1ZmZlci5pc0VtcHR5KCkp
Ci0gICAgICAgIGFwcGVuZChidWZmZXIsICcmJyk7Ci0KLSAgICBlbmNvZGVTdHJpbmdBc0Zvcm1E
YXRhKGJ1ZmZlciwga2V5KTsKLSAgICBhcHBlbmQoYnVmZmVyLCAnPScpOwotICAgIGVuY29kZVN0
cmluZ0FzRm9ybURhdGEoYnVmZmVyLCB2YWx1ZSk7CisgICAgaWYgKGVuY29kaW5nVHlwZSA9PSBG
b3JtRGF0YTo6VGV4dFBsYWluKSB7CisgICAgICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIGFwcGVuZChidWZmZXIsICJcclxuIik7CisgICAgICAgIGFwcGVuZChidWZmZXIs
IGtleSk7CisgICAgICAgIGFwcGVuZChidWZmZXIsICc9Jyk7CisgICAgICAgIGFwcGVuZChidWZm
ZXIsIHZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWJ1ZmZlci5pc0VtcHR5KCkp
CisgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAnJicpOworICAgICAgICBlbmNvZGVTdHJpbmdB
c0Zvcm1EYXRhKGJ1ZmZlciwga2V5KTsKKyAgICAgICAgYXBwZW5kKGJ1ZmZlciwgJz0nKTsKKyAg
ICAgICAgZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShidWZmZXIsIHZhbHVlKTsKKyAgICB9CiB9CiAK
IHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKFZlY3RvcjxjaGFy
PiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmgJKHJldmlzaW9uIDk4MzMy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBGb3JtRGF0YUJ1aWxkZXJf
aAogI2RlZmluZSBGb3JtRGF0YUJ1aWxkZXJfaAogCisjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAg
LTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGZpbmlzaE11bHRpUGFydEhl
YWRlcihWZWN0b3I8Y2hhcj4mKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSBI
VE1MRm9ybUVsZW1lbnQgZm9yIG5vbiBtdWx0aS1wYXJ0IGZvcm0gZGF0YQotICAgIHN0YXRpYyB2
b2lkIGFkZEtleVZhbHVlUGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiwgY29uc3QgQ1N0cmlu
ZyYga2V5LCBjb25zdCBDU3RyaW5nJiB2YWx1ZSk7CisgICAgc3RhdGljIHZvaWQgYWRkS2V5VmFs
dWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mLCBjb25zdCBDU3RyaW5nJiBrZXksIGNvbnN0
IENTdHJpbmcmIHZhbHVlLCBGb3JtRGF0YTo6RW5jb2RpbmdUeXBlID0gRm9ybURhdGE6OkZvcm1V
UkxFbmNvZGVkKTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKFZlY3Rv
cjxjaGFyPiYsIGNvbnN0IENTdHJpbmcmKTsKIAogcHJpdmF0ZToKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDk4NTkwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTEtMTAtMjcgIFZpbmVldCBDaGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICB0ZXh0L3BsYWluIGZvcm0gZW5jb2RpbmcgaWdub3Jl
ZCBhbmQgaW5jb3JyZWN0bHkgc3BlY2lmaWVkIGluIHJlcXVlc3QgaGVhZGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgR0VU
IGFuZCBQT1NUIG1ldGhvZHMgZm9yIHRleHQvcGxhaW4gZW5jdHlwZS4KKyAgICAgICAgRm9ybXMg
c3VibWl0dGVkIHVzaW5nIEdFVCB3aXRoIGEgY29udGVudC10eXBlIG9mIHRleHQvcGxhaW4gYWN0
dWFsbHksCisgICAgICAgIHNlbmQgZGF0YSBpbiBVUkwgZW5jb2RlZCBpbiB0aGUgVVJMLgorICAg
ICAgICBGb3JtcyB3aXRoIFBPU1QgbWV0aG9kIGFuZCBjb250ZW50LXR5cGUgb2YgdGV4dC9wbGFp
biBhY3R1YWxseSBzZW5kIGRhdGEgaW4gdGV4dC9wbGFpbi4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvZm9ybS1nZXQtdGV4dHBsYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxhaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0tcG9zdC10ZXh0cGxhaW4ucGhw
OiBBZGRlZC4KKwogMjAxMS0xMC0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHJlYmFzZWxpbmUuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxhaW4tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10
ZXh0cGxhaW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMg
aXMgYSBuZWdhdGl2ZSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA3OTUsIGl0IG1ha2VzIHN1cmUgdGhhdCBmb3JtcyBzdWJtaXR0ZWQgdXNpbmcgR0VU
IHdpdGggYSBjb250ZW50LXR5cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4g
VVJMIGVuY29kZWQgaW4gdGhlIFVSTAorCitTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWluLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlJlZ3Jlc3Npb24gdGVzdCBm
b3IgYnVnIDIwNzk1PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIG5lZ2F0
aXZlIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5
NSwgaXQgbWFrZXMgc3VyZSB0aGF0IGZvcm1zIHN1Ym1pdHRlZCB1c2luZyBHRVQgd2l0aCBhIGNv
bnRlbnQtdHlwZSBvZiB0ZXh0L3BsYWluIGFjdHVhbGx5IHNlbmQgZGF0YSBpbiBVUkwgZW5jb2Rl
ZCBpbiB0aGUgVVJMPC9wPgorPGZvcm0gZW5jdHlwZT0idGV4dC9wbGFpbiIgbWV0aG9kPSJnZXQi
IGFjdGlvbj0iPyIgbmFtZT0iZiI+CisgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZjEi
IHZhbHVlPSJUaGlzIGlzIGZpZWxkICMxICYhQCQlXG49Jzw+Ij4KKyAgICA8aW5wdXQgdHlwZT0i
aGlkZGVuIiBuYW1lPSJmMiIgdmFsdWU9J1RoaXMgaXMgZmllbGQgIzIgIiInPgorICAgIDxpbnB1
dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJwcmVzcyBtZSI+Cis8L2Zvcm0+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2lmIChkb2N1bWVudC5VUkwuc3Vic3RyaW5nKDAsIDQpID09ICJmaWxlIikgeworCisg
ICAgaWYgKGRvY3VtZW50LlVSTC5pbmRleE9mKCc/JykgPT0gLTEpIHsKKworICAgICAgICBkb2N1
bWVudC5mLnN1Ym1pdCgpOworCisgICAgfSBlbHNlIHsKKworCWRvY3VtZW50LmYuc3R5bGUuZGlz
cGxheT0ibm9uZSI7CisgICAgICAgIGlmIChkb2N1bWVudC5VUkwuc3Vic3RyaW5nKGRvY3VtZW50
LlVSTC5pbmRleE9mKCc/JykrMSwgZG9jdW1lbnQuVVJMLmxlbmd0aCkgPT0gImYxPVRoaXMraXMr
ZmllbGQrJTIzMSslMjYlMjElNDAlMjQlMjUlNUNuJTNEJTI3JTNDJTNFJmYyPVRoaXMraXMrZmll
bGQrJTIzMislMjIlMjIiKQorICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPlN1Y2Nlc3M8
L3A+Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5GYWls
dXJlOiAoIiArIGRvY3VtZW50LlVSTCArICIpPC9wPiIpOworCisgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgfQorCit9IGVsc2UgeworCisgICAgZG9jdW1lbnQud3JpdGUoIjxw
PlRoaXMgdGVzdCBkb2Vzbid0IHdvcmsgZGlyZWN0bHkgZnJvbSBidWd6aWxsYSwgcGxlYXNlIHNh
dmUgaXQgdG8gYSBsb2NhbCBmaWxlIGZpcnN0LjwvcD4iKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zvcm0tcG9zdC10
ZXh0cGxhaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3IgMjA3
OTUsIGl0IG1ha2VzIHN1cmUgdGhhdCBmb3JtcyBQT1NUZWQgd2l0aCBhIGNvbnRlbnQtdHlwZSBv
ZiB0ZXh0L3BsYWluIGFjdHVhbGx5IHNlbmQgZGF0YSBpbiB0ZXh0L3BsYWluCisKK0ZBSUxVUkU6
IGYxPVRoaXMgaXMgZmllbGQgIzEgJiFAJCVcbj0nPD4gZjI9VGhpcyBpcyBmaWVsZCAjMiAiIgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRl
eHRwbGFpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2Zvcm0tcG9zdC10ZXh0cGxhaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5SZWdyZXNzaW9uIHRlc3QgZm9yIGJ1ZyAyMDc5NTwvdGl0
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5NSwgaXQgbWFrZXMgc3VyZSB0aGF0Citm
b3JtcyBQT1NUZWQgd2l0aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0L3BsYWluIGFjdHVhbGx5IHNl
bmQgZGF0YSBpbiB0ZXh0L3BsYWluCis8L3A+CisKKzxmb3JtIGVuY3R5cGU9InRleHQvcGxhaW4i
IG1ldGhvZD0icG9zdCIgYWN0aW9uPSJyZXNvdXJjZXMvZm9ybS1wb3N0LXRleHRwbGFpbi5waHAi
IG5hbWU9ImYiPgorICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImYxIiB2YWx1ZT0iVGhp
cyBpcyBmaWVsZCAjMSAmIUAkJVxuPSc8PiI+CisgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFt
ZT0iZjIiIHZhbHVlPSdUaGlzIGlzIGZpZWxkICMyICIiJz4KKyAgICA8aW5wdXQgdHlwZT0ic3Vi
bWl0IiB2YWx1ZT0icHJlc3MgbWUiPgorPC9mb3JtPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitkb2N1
bWVudC5mLnN1Ym1pdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0tcG9zdC10ZXh0cGxhaW4ucGhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvZm9y
bS1wb3N0LXRleHRwbGFpbi5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0tcG9zdC10ZXh0cGxhaW4ucGhwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI2IEBACis8P3BocAoraGVhZGVyKCJDb250ZW50LXR5cGU6IHRleHQvaHRtbDsg
Y2hhcnNldD1VVEYtOCIpOworPz4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+UmVncmVzc2lvbiB0
ZXN0IGZvciBidWcgMjA3OTU8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1RoaXMgaXMg
YSB0ZXN0IGZvciAyMDc5NSwgaXQgbWFrZXMgc3VyZSB0aGF0IGZvcm1zIFBPU1RlZCB3aXRoIGEg
Y29udGVudC10eXBlIG9mIHRleHQvcGxhaW4gYWN0dWFsbHkgc2VuZCBkYXRhIGluIHRleHQvcGxh
aW4KKzwvcD4KKzw/cGhwCiskZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJwaHA6Ly9pbnB1dCIp
OworCitpZigkZGF0YSA9PSAiZjE9VGhpcyBpcyBmaWVsZCAjMSAmIUAkJVxuPSc8PlxyXG5mMj1U
aGlzIGlzIGZpZWxkICMyIFwiXCIiKSB7CisgICAgZWNobyAiPHA+U1VDQ0VTUzwvcD4iOworfSBl
bHNlIHsKKyAgICBlY2hvICI8cD5GQUlMVVJFOiAkZGF0YTwvcD4iOworfQorPz4KKzxzY3JpcHQ+
CitpZih3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="110818"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="110835"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112740</attachid>
            <date>2011-10-27 13:43:35 -0700</date>
            <delta_ts>2011-10-31 16:03:03 -0700</delta_ts>
            <desc>updated_patch</desc>
            <filename>form_enctype_enum_006.diff</filename>
            <type>text/plain</type>
            <size>20900</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NjI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTAtMjcgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICB0ZXh0
L3BsYWluIGZvcm0gZW5jb2RpbmcgaWdub3JlZCBhbmQgaW5jb3JyZWN0bHkgc3BlY2lmaWVkIGlu
IHJlcXVlc3QgaGVhZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBiZWhhdmlvdXIgb2YgZm9ybXMgd2hlcmUgZW5j
dHlwZSBpcyBzZXQgdG8KKyAgICAgICAgdGV4dC9wbGFpbiwgZW5jb2RpbmcgaXMgYWxzbyB0ZXh0
L3BsYWluLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9ybVN1Ym1pc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bURhdGE6OnBhcnNlRW5jb2RpbmdUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUJ1aWxkZXI6OmFk
ZEtleVZhbHVlUGFpckFzRm9ybURhdGEpOiBNb2RpZmllZCBlbmNvZGluZyBzY2hlbWUgZm9yIHRl
eHQvcGxhaW4uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaDoK
KwogMjAxMS0xMC0yNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnZlc3RpZ2F0ZSBzdG9yaW5nIHN0cmluZ3MgaW4gOC1iaXQgYnVmZmVycyB3aGVuIHBv
c3NpYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJl
dmlzaW9uIDk4MzMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1p
c3Npb24+IEZvcm1TdWJtaXNzaW8KICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRl
TXVsdGlQYXJ0KCooc3RhdGljX2Nhc3Q8Rm9ybURhdGFMaXN0Kj4oZG9tRm9ybURhdGEuZ2V0KCkp
KSwgZG9tRm9ybURhdGEtPmVuY29kaW5nKCksIGRvY3VtZW50KTsKICAgICAgICAgYm91bmRhcnkg
PSBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9y
bURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCooc3RhdGljX2Nhc3Q8Rm9ybURhdGFMaXN0Kj4oZG9t
Rm9ybURhdGEuZ2V0KCkpKSwgZG9tRm9ybURhdGEtPmVuY29kaW5nKCkpOworICAgICAgICBmb3Jt
RGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKihzdGF0aWNfY2FzdDxGb3JtRGF0YUxpc3QqPihkb21G
b3JtRGF0YS5nZXQoKSkpLCBkb21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSwgYXR0cmlidXRlcy5tZXRo
b2QoKSA9PSBHZXRNZXRob2QgPyBGb3JtRGF0YTo6Rm9ybVVSTEVuY29kZWQgOiBGb3JtRGF0YTo6
cGFyc2VFbmNvZGluZ1R5cGUoZW5jb2RpbmdUeXBlKSk7CiAgICAgICAgIGlmIChjb3BpZWRBdHRy
aWJ1dGVzLm1ldGhvZCgpID09IFBvc3RNZXRob2QgJiYgaXNNYWlsdG9Gb3JtKSB7CiAgICAgICAg
ICAgICAvLyBDb252ZXJ0IHRoZSBmb3JtIGRhdGEgaW50byBhIHN0cmluZyB0aGF0IHdlIHB1dCBp
bnRvIHRoZSBVUkwuCiAgICAgICAgICAgICBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChh
Y3Rpb25VUkwsICpmb3JtRGF0YSwgZW5jb2RpbmdUeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCShyZXZpc2lvbiA5ODMzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05OSwxMCArOTksMTAgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gRm9ybURhdGE6OmNyZWF0
ZShjbwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1E
YXRhPiBGb3JtRGF0YTo6Y3JlYXRlKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4
dEVuY29kaW5nJiBlbmNvZGluZykKK1Bhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpjcmVh
dGUoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5n
LCBFbmNvZGluZ1R5cGUgZW5jb2RpbmdUeXBlKQogewogICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVz
dWx0ID0gY3JlYXRlKCk7Ci0gICAgcmVzdWx0LT5hcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhsaXN0
LCBlbmNvZGluZywgZmFsc2UsIDApOworICAgIHJlc3VsdC0+YXBwZW5kS2V5VmFsdWVQYWlySXRl
bXMobGlzdCwgZW5jb2RpbmcsIGZhbHNlLCAwLCBlbmNvZGluZ1R5cGUpOwogICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOwogfQogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBGb3JtRGF0YTo6
YXBwZW5kQmxvYihjb25zdCBLVVJMJiBibAogfQogI2VuZGlmCiAKLXZvaWQgRm9ybURhdGE6OmFw
cGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4
dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBpc011bHRpUGFydEZvcm0sIERvY3VtZW50KiBkb2N1
bWVudCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1E
YXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBpc011bHRp
UGFydEZvcm0sIERvY3VtZW50KiBkb2N1bWVudCwgRW5jb2RpbmdUeXBlIGVuY29kaW5nVHlwZSkK
IHsKICAgICBpZiAoaXNNdWx0aVBhcnRGb3JtKQogICAgICAgICBtX2JvdW5kYXJ5ID0gRm9ybURh
dGFCdWlsZGVyOjpnZW5lcmF0ZVVuaXF1ZUJvdW5kYXJ5U3RyaW5nKCk7CkBAIC0yNjMsNyArMjYz
LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kS2V5VmFsdWVQYWlySXRlbXMoYwogICAgICAgICAg
ICAgaWYgKGVuY29kZWREYXRhLmlzRW1wdHkoKSAmJiBrZXkuZGF0YSgpID09ICJpc2luZGV4IikK
ICAgICAgICAgICAgICAgICBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kZVN0cmluZ0FzRm9ybURhdGEo
ZW5jb2RlZERhdGEsIHZhbHVlLmRhdGEoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgRm9ybURhdGFCdWlsZGVyOjphZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKGVuY29kZWRE
YXRhLCBrZXkuZGF0YSgpLCB2YWx1ZS5kYXRhKCkpOworICAgICAgICAgICAgICAgIEZvcm1EYXRh
QnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShlbmNvZGVkRGF0YSwga2V5LmRhdGEo
KSwgdmFsdWUuZGF0YSgpLCBlbmNvZGluZ1R5cGUpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCShyZXZpc2lvbiA5
ODMzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtOTEsMTEgKzkxLDE3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgRm9ybURhdGFFbGUKIAogY2xhc3MgRm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxGb3Jt
RGF0YT4gewogcHVibGljOgorICAgIGVudW0gRW5jb2RpbmdUeXBlIHsKKyAgICAgICAgRm9ybVVS
TEVuY29kZWQsIC8vIGZvciBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgICAg
ICAgVGV4dFBsYWluLCAvLyBmb3IgdGV4dC9wbGFpbgorICAgICAgICBNdWx0aXBhcnRGb3JtRGF0
YSAvLyBmb3IgbXVsdGlwYXJ0L2Zvcm0tZGF0YQorICAgIH07CisKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGNyZWF0ZShjb25zdCB2b2lkKiwgc2l6ZV90KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gY3JlYXRlKGNvbnN0IENTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBjcmVhdGUoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5n
Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZShjb25zdCBGb3JtRGF0
YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2Rl
ZCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGNyZWF0ZU11bHRpUGFydChjb25z
dCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBEb2N1bWVudCopOwogICAgIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGNvcHkoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBkZWVwQ29weSgpIGNvbnN0OwpAQCAtMTI5LDExICsxMzUsMjAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SWRlbnRpZmllcihpbnQ2NF90IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRl
bnRpZmllcjsgfQogICAgIGludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogCisgICAgc3RhdGljIEVuY29kaW5nVHlwZSBwYXJzZUVuY29kaW5nVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCisgICAgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dHlwZSwgInRleHQvcGxhaW4iKSkKKyAgICAgICAgICAgIHJldHVybiBUZXh0UGxhaW47CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0eXBlLCAibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpKQor
ICAgICAgICAgICAgcmV0dXJuIE11bHRpcGFydEZvcm1EYXRhOworICAgICAgICByZXR1cm4gRm9y
bVVSTEVuY29kZWQ7CisgICAgfQorCiBwcml2YXRlOgogICAgIEZvcm1EYXRhKCk7CiAgICAgRm9y
bURhdGEoY29uc3QgRm9ybURhdGEmKTsKIAotICAgIHZvaWQgYXBwZW5kS2V5VmFsdWVQYWlySXRl
bXMoY29uc3QgRm9ybURhdGFMaXN0JiwgY29uc3QgVGV4dEVuY29kaW5nJiwgYm9vbCBpc011bHRp
UGFydEZvcm0sIERvY3VtZW50Kik7CisgICAgdm9pZCBhcHBlbmRLZXlWYWx1ZVBhaXJJdGVtcyhj
b25zdCBGb3JtRGF0YUxpc3QmLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBib29sIGlzTXVsdGlQYXJ0
Rm9ybSwgRG9jdW1lbnQqLCBFbmNvZGluZ1R5cGUgPSBGb3JtVVJMRW5jb2RlZCk7CiAKICAgICBW
ZWN0b3I8Rm9ybURhdGFFbGVtZW50PiBtX2VsZW1lbnRzOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCShyZXZpc2lv
biA5ODMzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWls
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDE0ICsxODEsMjEgQEAgdm9pZCBGb3JtRGF0
YUJ1aWxkZXI6OmZpbmlzaE11bHRpUGFydEhlYQogICAgIGFwcGVuZChidWZmZXIsICJcclxuXHJc
biIpOwogfQogCi12b2lkIEZvcm1EYXRhQnVpbGRlcjo6YWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0
YShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgY29uc3QgQ1N0cmluZyYga2V5LCBjb25zdCBDU3RyaW5n
JiB2YWx1ZSkKK3ZvaWQgRm9ybURhdGFCdWlsZGVyOjphZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRh
KFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBrZXksIGNvbnN0IENTdHJpbmcm
IHZhbHVlLCBGb3JtRGF0YTo6RW5jb2RpbmdUeXBlIGVuY29kaW5nVHlwZSkKIHsKLSAgICBpZiAo
IWJ1ZmZlci5pc0VtcHR5KCkpCi0gICAgICAgIGFwcGVuZChidWZmZXIsICcmJyk7Ci0KLSAgICBl
bmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJ1ZmZlciwga2V5KTsKLSAgICBhcHBlbmQoYnVmZmVyLCAn
PScpOwotICAgIGVuY29kZVN0cmluZ0FzRm9ybURhdGEoYnVmZmVyLCB2YWx1ZSk7CisgICAgaWYg
KGVuY29kaW5nVHlwZSA9PSBGb3JtRGF0YTo6VGV4dFBsYWluKSB7CisgICAgICAgIGlmICghYnVm
ZmVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICJcclxuIik7CisgICAg
ICAgIGFwcGVuZChidWZmZXIsIGtleSk7CisgICAgICAgIGFwcGVuZChidWZmZXIsICc9Jyk7Cisg
ICAgICAgIGFwcGVuZChidWZmZXIsIHZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
IWJ1ZmZlci5pc0VtcHR5KCkpCisgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCAnJicpOworICAg
ICAgICBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJ1ZmZlciwga2V5KTsKKyAgICAgICAgYXBwZW5k
KGJ1ZmZlciwgJz0nKTsKKyAgICAgICAgZW5jb2RlU3RyaW5nQXNGb3JtRGF0YShidWZmZXIsIHZh
bHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgRm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zv
cm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVy
LmgJKHJldmlzaW9uIDk4MzMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRl
ZiBGb3JtRGF0YUJ1aWxkZXJfaAogI2RlZmluZSBGb3JtRGF0YUJ1aWxkZXJfaAogCisjaW5jbHVk
ZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGZpbmlzaE11bHRpUGFydEhlYWRlcihWZWN0b3I8Y2hhcj4mKTsKIAogICAgIC8vIEhlbHBlciBm
dW5jdGlvbnMgdXNlZCBieSBIVE1MRm9ybUVsZW1lbnQgZm9yIG5vbiBtdWx0aS1wYXJ0IGZvcm0g
ZGF0YQotICAgIHN0YXRpYyB2b2lkIGFkZEtleVZhbHVlUGFpckFzRm9ybURhdGEoVmVjdG9yPGNo
YXI+JiwgY29uc3QgQ1N0cmluZyYga2V5LCBjb25zdCBDU3RyaW5nJiB2YWx1ZSk7CisgICAgc3Rh
dGljIHZvaWQgYWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mLCBjb25zdCBD
U3RyaW5nJiBrZXksIGNvbnN0IENTdHJpbmcmIHZhbHVlLCBGb3JtRGF0YTo6RW5jb2RpbmdUeXBl
ID0gRm9ybURhdGE6OkZvcm1VUkxFbmNvZGVkKTsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGVTdHJp
bmdBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYsIGNvbnN0IENTdHJpbmcmKTsKIAogcHJpdmF0ZToK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDk4NjI1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTAtMjcgIFZpbmVldCBDaGF1ZGhhcnkg
IDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICB0ZXh0L3BsYWluIGZv
cm0gZW5jb2RpbmcgaWdub3JlZCBhbmQgaW5jb3JyZWN0bHkgc3BlY2lmaWVkIGluIHJlcXVlc3Qg
aGVhZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCB0ZXN0cyBmb3IgR0VUIGFuZCBQT1NUIG1ldGhvZHMgZm9yIHRleHQvcGxhaW4gZW5jdHlw
ZS4KKyAgICAgICAgRm9ybXMgc3VibWl0dGVkIHVzaW5nIEdFVCB3aXRoIGEgY29udGVudC10eXBl
IG9mIHRleHQvcGxhaW4gYWN0dWFsbHksCisgICAgICAgIHNlbmQgZGF0YSBpbiBVUkwgZW5jb2Rl
ZCBpbiB0aGUgVVJMLgorICAgICAgICBGb3JtcyB3aXRoIFBPU1QgbWV0aG9kIGFuZCBjb250ZW50
LXR5cGUgb2YgdGV4dC9wbGFpbiBhY3R1YWxseSBzZW5kIGRhdGEgaW4gdGV4dC9wbGFpbi4KKyAg
ICAgICAgTW9kaWZpZWQgZXhwZWN0ZWQgcmVzdWx0cyBmb3IgbWFpbHRvIHRlc3RzIGFzIHBlciB0
aGUgbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxh
aW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRl
eHRwbGFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL21haWx0by9wb3N0LW11
bHRpcGxlLWl0ZW1zLXRleHQtcGxhaW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZm9y
bXMvbWFpbHRvL3Bvc3QtdGV4dC1wbGFpbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9m
b3Jtcy9tYWlsdG8vcG9zdC10ZXh0LXBsYWluLXdpdGgtYWNjZXB0LWNoYXJzZXQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0
cGxhaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9m
b3JtLXBvc3QtdGV4dHBsYWluLnBocDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2Zv
cm1zL21haWx0by9mb3JtZW5jdHlwZS1hdHRyaWJ1dGUtYnV0dG9uLWh0bWwtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL21haWx0by9mb3JtZW5jdHlwZS1h
dHRyaWJ1dGUtaW5wdXQtaHRtbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vcXQv
dGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi90ZXN0X2V4cGVj
dGF0aW9ucy50eHQ6CisKIDIwMTEtMTAtMjcgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbW9yZSBjaHJvbWl1bSBiYXNlbGluZXMgZm9yIG5l
dyBtdWx0aWNvbCB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQt
dGV4dHBsYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2Zvcm0tZ2V0LXRleHRwbGFpbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIG5lZ2F0aXZlIHRlc3QgZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5NSwgaXQgbWFrZXMgc3VyZSB0
aGF0IGZvcm1zIHN1Ym1pdHRlZCB1c2luZyBHRVQgd2l0aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0
L3BsYWluIGFjdHVhbGx5IHNlbmQgZGF0YSBpbiBVUkwgZW5jb2RlZCBpbiB0aGUgVVJMCisKK1N1
Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQtdGV4dHBsYWluLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9mb3JtLWdldC10ZXh0cGxh
aW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZm9ybS1nZXQt
dGV4dHBsYWluLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+UmVncmVzc2lvbiB0ZXN0IGZvciBidWcgMjA3OTU8L3RpdGxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgbmVnYXRpdmUgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzk1LCBpdCBtYWtlcyBzdXJlIHRoYXQgZm9ybXMg
c3VibWl0dGVkIHVzaW5nIEdFVCB3aXRoIGEgY29udGVudC10eXBlIG9mIHRleHQvcGxhaW4gYWN0
dWFsbHkgc2VuZCBkYXRhIGluIFVSTCBlbmNvZGVkIGluIHRoZSBVUkw8L3A+Cis8Zm9ybSBlbmN0
eXBlPSJ0ZXh0L3BsYWluIiBtZXRob2Q9ImdldCIgYWN0aW9uPSI/IiBuYW1lPSJmIj4KKyAgICA8
aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmMSIgdmFsdWU9IlRoaXMgaXMgZmllbGQgIzEgJiFA
JCVcbj0nPD4iPgorICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImYyIiB2YWx1ZT0nVGhp
cyBpcyBmaWVsZCAjMiAiIic+CisgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9InByZXNz
IG1lIj4KKzwvZm9ybT4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKGRvY3VtZW50LlVSTC5zdWJz
dHJpbmcoMCwgNCkgPT0gImZpbGUiKSB7CisKKyAgICBpZiAoZG9jdW1lbnQuVVJMLmluZGV4T2Yo
Jz8nKSA9PSAtMSkgeworCisgICAgICAgIGRvY3VtZW50LmYuc3VibWl0KCk7CisKKyAgICB9IGVs
c2UgeworCisJZG9jdW1lbnQuZi5zdHlsZS5kaXNwbGF5PSJub25lIjsKKyAgICAgICAgaWYgKGRv
Y3VtZW50LlVSTC5zdWJzdHJpbmcoZG9jdW1lbnQuVVJMLmluZGV4T2YoJz8nKSsxLCBkb2N1bWVu
dC5VUkwubGVuZ3RoKSA9PSAiZjE9VGhpcytpcytmaWVsZCslMjMxKyUyNiUyMSU0MCUyNCUyNSU1
Q24lM0QlMjclM0MlM0UmZjI9VGhpcytpcytmaWVsZCslMjMyKyUyMiUyMiIpCisgICAgICAgICAg
ICBkb2N1bWVudC53cml0ZSgiPHA+U3VjY2VzczwvcD4iKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkZhaWx1cmU6ICgiICsgZG9jdW1lbnQuVVJMICsgIik8
L3A+Iik7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKK30gZWxz
ZSB7CisKKyAgICBkb2N1bWVudC53cml0ZSgiPHA+VGhpcyB0ZXN0IGRvZXNuJ3Qgd29yayBkaXJl
Y3RseSBmcm9tIGJ1Z3ppbGxhLCBwbGVhc2Ugc2F2ZSBpdCB0byBhIGxvY2FsIGZpbGUgZmlyc3Qu
PC9wPiIpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL21haWx0by9wb3N0LW11bHRpcGxlLWl0ZW1zLXRleHQtcGxhaW4tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3Qt
bXVsdGlwbGUtaXRlbXMtdGV4dC1wbGFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4MzMyKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vcG9zdC1tdWx0aXBsZS1pdGVtcy10ZXh0
LXBsYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKLVBvbGlj
eSBkZWxlZ2F0ZTogYXR0ZW1wdCB0byBsb2FkIG1haWx0bzo/Ym9keT10byUzRG9uZSU0MGV4YW1w
bGUub3JnJTBEJTBBYm9keSUzRExpbmUlMjAxJTBEJTBBTGluZSUyMDIlMEQlMEElNDAlMjYlM0Ql
MkMlM0IlM0YlMjIlMkIlMEQlMEEgd2l0aCBuYXZpZ2F0aW9uIHR5cGUgJ2Zvcm0gc3VibWl0dGVk
JworUG9saWN5IGRlbGVnYXRlOiBhdHRlbXB0IHRvIGxvYWQgbWFpbHRvOj9ib2R5PXRvJTNEb25l
JTQwZXhhbXBsZS5vcmclMEQlMEFib2R5JTNETGluZSUyMDElMEQlMEFMaW5lJTIwMiUwRCUwQSU0
MCUwRCUwQSUzRCUyQyUzQiUzRiUyMiUyMCUwRCUwQSB3aXRoIG5hdmlnYXRpb24gdHlwZSAnZm9y
bSBzdWJtaXR0ZWQnCiBGaWVsZCAxOiAgRmllbGQgMjogIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9tYWlsdG8vcG9zdC10ZXh0LXBsYWluLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21haWx0by9wb3N0LXRleHQtcGxhaW4tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5ODMzMikKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvbWFpbHRvL3Bv
c3QtdGV4dC1wbGFpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBA
Ci1Qb2xpY3kgZGVsZWdhdGU6IGF0dGVtcHQgdG8gbG9hZCBtYWlsdG86b25lQGV4YW1wbGUub3Jn
P2NjPXR3b0BleGFtcGxlLm9yZyZzdWJqZWN0PSVDMyVCQyVEMCVCMCVEMSU5MSZib2R5PVN0cmEl
QzMlOUZlJTNEJUMzJUJDJUQwJUIwJUQxJTkxJTBEJTBBIHdpdGggbmF2aWdhdGlvbiB0eXBlICdm
b3JtIHN1Ym1pdHRlZCcKK1BvbGljeSBkZWxlZ2F0ZTogYXR0ZW1wdCB0byBsb2FkIG1haWx0bzpv
bmVAZXhhbXBsZS5vcmc/Y2M9dHdvQGV4YW1wbGUub3JnJnN1YmplY3Q9JUMzJUJDJUQwJUIwJUQx
JTkxJmJvZHk9U3RyYSVDMyU4MyVDNSVCOGUlM0QlQzMlODMlQzIlQkMlQzMlOTAlQzIlQjAlQzMl
OTElRTIlODAlOTglMEQlMEEgd2l0aCBuYXZpZ2F0aW9uIHR5cGUgJ2Zvcm0gc3VibWl0dGVkJwog
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9tYWlsdG8vcG9zdC10ZXh0LXBsYWluLXdp
dGgtYWNjZXB0LWNoYXJzZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvbWFpbHRvL3Bvc3QtdGV4dC1wbGFpbi13aXRoLWFjY2VwdC1jaGFyc2V0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gOTgzMzIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL21h
aWx0by9wb3N0LXRleHQtcGxhaW4td2l0aC1hY2NlcHQtY2hhcnNldC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1Qb2xpY3kgZGVsZWdhdGU6IGF0dGVtcHQgdG8g
bG9hZCBtYWlsdG86b25lQGV4YW1wbGUub3JnP2NjPXR3b0BleGFtcGxlLm9yZyZzdWJqZWN0PSVD
MyVCQyVEMCVCMCVEMSU5MSZib2R5PVN0cmElQzMlOUZlJTNEJUMzJUJDJUQwJUIwJUQxJTkxJTBE
JTBBIHdpdGggbmF2aWdhdGlvbiB0eXBlICdmb3JtIHN1Ym1pdHRlZCcKK1BvbGljeSBkZWxlZ2F0
ZTogYXR0ZW1wdCB0byBsb2FkIG1haWx0bzpvbmVAZXhhbXBsZS5vcmc/Y2M9dHdvQGV4YW1wbGUu
b3JnJnN1YmplY3Q9JUMzJUJDJUQwJUIwJUQxJTkxJmJvZHk9U3RyYSVDMyU4MyVDNSVCOGUlM0Ql
QzMlODMlQzIlQkMlQzMlOTAlQzIlQjAlQzMlOTElRTIlODAlOTglMEQlMEEgd2l0aCBuYXZpZ2F0
aW9uIHR5cGUgJ2Zvcm0gc3VibWl0dGVkJwogIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3QtdGV4dHBsYWluLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mb3JtLXBvc3Qt
dGV4dHBsYWluLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlz
IGlzIGEgdGVzdCBmb3IgMjA3OTUsIGl0IG1ha2VzIHN1cmUgdGhhdCBmb3JtcyBQT1NUZWQgd2l0
aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0L3BsYWluIGFjdHVhbGx5IHNlbmQgZGF0YSBpbiB0ZXh0
L3BsYWluCisKK0ZBSUxVUkU6IGYxPVRoaXMgaXMgZmllbGQgIzEgJiFAJCVcbj0nPD4gZjI9VGhp
cyBpcyBmaWVsZCAjMiAiIgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zvcm0t
cG9zdC10ZXh0cGxhaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvZm9ybS1wb3N0LXRleHRwbGFpbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2Zvcm0tcG9zdC10ZXh0cGxhaW4uaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5SZWdyZXNzaW9uIHRlc3Qg
Zm9yIGJ1ZyAyMDc5NTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgorVGhpcyBpcyBhIHRl
c3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5NSwgaXQg
bWFrZXMgc3VyZSB0aGF0Citmb3JtcyBQT1NUZWQgd2l0aCBhIGNvbnRlbnQtdHlwZSBvZiB0ZXh0
L3BsYWluIGFjdHVhbGx5IHNlbmQgZGF0YSBpbiB0ZXh0L3BsYWluCis8L3A+CisKKzxmb3JtIGVu
Y3R5cGU9InRleHQvcGxhaW4iIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJyZXNvdXJjZXMvZm9ybS1w
b3N0LXRleHRwbGFpbi5waHAiIG5hbWU9ImYiPgorICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9ImYxIiB2YWx1ZT0iVGhpcyBpcyBmaWVsZCAjMSAmIUAkJVxuPSc8PiI+CisgICAgPGlucHV0
IHR5cGU9ImhpZGRlbiIgbmFtZT0iZjIiIHZhbHVlPSdUaGlzIGlzIGZpZWxkICMyICIiJz4KKyAg
ICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0icHJlc3MgbWUiPgorPC9mb3JtPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorCitkb2N1bWVudC5mLnN1Ym1pdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0t
cG9zdC10ZXh0cGxhaW4ucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9yZXNvdXJjZXMvZm9ybS1wb3N0LXRleHRwbGFpbi5waHAJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2Zvcm0tcG9zdC10ZXh0cGxhaW4u
cGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8P3BocAoraGVhZGVyKCJDb250ZW50
LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIpOworPz4KKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+UmVncmVzc2lvbiB0ZXN0IGZvciBidWcgMjA3OTU8L3RpdGxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8cD4KK1RoaXMgaXMgYSB0ZXN0IGZvciAyMDc5NSwgaXQgbWFrZXMgc3VyZSB0aGF0IGZv
cm1zIFBPU1RlZCB3aXRoIGEgY29udGVudC10eXBlIG9mIHRleHQvcGxhaW4gYWN0dWFsbHkgc2Vu
ZCBkYXRhIGluIHRleHQvcGxhaW4KKzwvcD4KKzw/cGhwCiskZGF0YSA9IGZpbGVfZ2V0X2NvbnRl
bnRzKCJwaHA6Ly9pbnB1dCIpOworCitpZigkZGF0YSA9PSAiZjE9VGhpcyBpcyBmaWVsZCAjMSAm
IUAkJVxuPSc8PlxyXG5mMj1UaGlzIGlzIGZpZWxkICMyIFwiXCIiKSB7CisgICAgZWNobyAiPHA+
U1VDQ0VTUzwvcD4iOworfSBlbHNlIHsKKyAgICBlY2hvICI8cD5GQUlMVVJFOiAkZGF0YTwvcD4i
OworfQorPz4KKzxzY3JpcHQ+CitpZih3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA5ODMzMikKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzgw
Nyw0ICszODA3LDggQEAgQlVHV0s3MDY0MCBTTk9XTEVPUEFSRCA6IGZhc3QvbXVsdGljb2wvdgog
QlVHV0s3MDY0MSBTTk9XTEVPUEFSRCA6IGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc2Ny
aXB0aW5nLmh0bWwgPSBQQVNTIENSQVNICiBCVUdXSzY3MDMxIFNOT1dMRU9QQVJEIERFQlVHIDog
c3RvcmFnZS9kb21zdG9yYWdlL2V2ZW50cy9iYXNpYy1ib2R5LWF0dHJpYnV0ZS5odG1sID0gUEFT
UyBDUkFTSAogCisvLyBOZWVkcyByZWJhc2VsaW5lCitCVUdXSzIwNzk1IDogZmFzdC9mb3Jtcy9t
YWlsdG8vZm9ybWVuY3R5cGUtYXR0cmlidXRlLWlucHV0LWh0bWwuaHRtbCA9IFRFWFQKK0JVR1dL
MjA3OTUgOiBmYXN0L2Zvcm1zL21haWx0by9mb3JtZW5jdHlwZS1hdHRyaWJ1dGUtYnV0dG9uLWh0
bWwuaHRtbCA9IFRFWFQKKwogQlVHV0s3MDc0OSBTTk9XTEVPUEFSRCBDUFUgR1BVIDogZmFzdC9y
dWJ5L2Jhc2Utc2hvcnRlci10aGFuLXRleHQuaHRtbCA9IElNQUdFK1RFWFQgUEFTUwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvbWFpbHRvL2Zvcm1lbmN0eXBlLWF0
dHJpYnV0ZS1idXR0b24taHRtbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvbWFpbHRvL2Zvcm1lbmN0eXBlLWF0dHJpYnV0ZS1i
dXR0b24taHRtbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk4MzMyKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvbWFpbHRvL2Zvcm1lbmN0eXBlLWF0dHJpYnV0ZS1idXR0
b24taHRtbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwyIEBACi1Qb2xp
Y3kgZGVsZWdhdGU6IGF0dGVtcHQgdG8gbG9hZCBtYWlsdG86P2JvZHk9dG8lM0RvbmUlNDBleGFt
cGxlLm9yZyUwRCUwQWJvZHklM0RMaW5lJTIwMSUwRCUwQUxpbmUlMjAyJTBEJTBBJTQwJTI2JTNE
JTJDJTNCJTNGJTIyJTJCJTBEJTBBIHdpdGggbmF2aWdhdGlvbiB0eXBlICdmb3JtIHN1Ym1pdHRl
ZCcKK1BvbGljeSBkZWxlZ2F0ZTogYXR0ZW1wdCB0byBsb2FkIG1haWx0bzo/Ym9keT10byUzRG9u
ZSU0MGV4YW1wbGUub3JnJTBEJTBBYm9keSUzRExpbmUlMjAxJTBEJTBBTGluZSUyMDIlMEQlMEEl
NDAlMEQlMEElM0QlMkMlM0IlM0YlMjIlMjAlMEQlMEEgd2l0aCBuYXZpZ2F0aW9uIHR5cGUgJ2Zv
cm0gc3VibWl0dGVkJwogRmllbGQgMTogIEZpZWxkIDI6ICAKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L2Zvcm1zL21haWx0by9mb3JtZW5jdHlwZS1hdHRyaWJ1dGUtaW5wdXQt
aHRtbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2Zhc3QvZm9ybXMvbWFpbHRvL2Zvcm1lbmN0eXBlLWF0dHJpYnV0ZS1pbnB1dC1odG1sLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gOTgzMzIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9mb3Jtcy9tYWlsdG8vZm9ybWVuY3R5cGUtYXR0cmlidXRlLWlucHV0LWh0bWwtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMiBAQAotUG9saWN5IGRlbGVnYXRlOiBhdHRl
bXB0IHRvIGxvYWQgbWFpbHRvOj9ib2R5PXRvJTNEb25lJTQwZXhhbXBsZS5vcmclMEQlMEFib2R5
JTNETGluZSUyMDElMEQlMEFMaW5lJTIwMiUwRCUwQSU0MCUyNiUzRCUyQyUzQiUzRiUyMiUyQiUw
RCUwQSB3aXRoIG5hdmlnYXRpb24gdHlwZSAnZm9ybSBzdWJtaXR0ZWQnCitQb2xpY3kgZGVsZWdh
dGU6IGF0dGVtcHQgdG8gbG9hZCBtYWlsdG86P2JvZHk9dG8lM0RvbmUlNDBleGFtcGxlLm9yZyUw
RCUwQWJvZHklM0RMaW5lJTIwMSUwRCUwQUxpbmUlMjAyJTBEJTBBJTQwJTBEJTBBJTNEJTJDJTNC
JTNGJTIyJTIwJTBEJTBBIHdpdGggbmF2aWdhdGlvbiB0eXBlICdmb3JtIHN1Ym1pdHRlZCcKIEZp
ZWxkIDE6ICBGaWVsZCAyOiAgCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvdGVz
dF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA5ODMzMikKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTks
MTAgQEAgQlVHX1FUX1NMT1cgU0xPVyBERUJVRzogZWRpdGluZy9zZWxlY3RpbwogQlVHX1FUX1NM
T1cgREVCVUc6IGZhc3QvanMvYXJyYXktc29ydC1tb2RpZnlpbmctdG9zdHJpbmcuaHRtbCA9IFRJ
TUVPVVQgUEFTUwogQlVHX1FUX1NMT1cgU0xPVyBERUJVRzogZmFzdC9vdmVyZmxvdy9sb3RzLW9m
LXNpYmxpbmctaW5saW5lLWJveGVzLmh0bWwgPSBQQVNTCiAKKy8vIE5lZWRzIHJlYmFzZWxpbmUK
K0JVR1dLMjA3OTUgOiBmYXN0L2Zvcm1zL21haWx0by9mb3JtZW5jdHlwZS1hdHRyaWJ1dGUtaW5w
dXQtaHRtbC5odG1sID0gVEVYVAorQlVHV0syMDc5NSA6IGZhc3QvZm9ybXMvbWFpbHRvL2Zvcm1l
bmN0eXBlLWF0dHJpYnV0ZS1idXR0b24taHRtbC5odG1sID0gVEVYVAorCiBCVUdXSzY3MDA3IERF
QlVHIDogZmFzdC9ydWJ5L2FmdGVyLWJsb2NrLWRvZXNudC1jcmFzaC5odG1sID0gQ1JBU0gKIEJV
R1dLNjcwMDcgREVCVUcgOiBmYXN0L3J1YnkvYWZ0ZXItdGFibGUtZG9lc250LWNyYXNoLmh0bWwg
PSBDUkFTSAogQlVHV0s2NzAwNyBERUJVRyA6IGZhc3QvcnVieS9nZW5lcmF0ZWQtYWZ0ZXItY291
bnRlci1kb2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDk4MzMyKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNyw1ICs3LDkgQEAgQlVHV0s2NzAwNyBERUJVRyA6IGZhc3QvcnVieS9hZnRlci10YWJs
ZQogQlVHV0s2NzAwNyBERUJVRyA6IGZhc3QvcnVieS9nZW5lcmF0ZWQtYWZ0ZXItY291bnRlci1k
b2VzbnQtY3Jhc2guaHRtbCA9IENSQVNICiBCVUdXSzY3MDA3IERFQlVHIDogZmFzdC9ydWJ5L2dl
bmVyYXRlZC1iZWZvcmUtYW5kLWFmdGVyLWNvdW50ZXItZG9lc250LWNyYXNoLmh0bWwgPSBDUkFT
SAogCisvLyBOZWVkcyByZWJhc2VsaW5lCitCVUdXSzIwNzk1IDogZmFzdC9mb3Jtcy9tYWlsdG8v
Zm9ybWVuY3R5cGUtYXR0cmlidXRlLWlucHV0LWh0bWwuaHRtbCA9IFRFWFQKK0JVR1dLMjA3OTUg
OiBmYXN0L2Zvcm1zL21haWx0by9mb3JtZW5jdHlwZS1hdHRyaWJ1dGUtYnV0dG9uLWh0bWwuaHRt
bCA9IFRFWFQKKwogLy8gTmVlZCByZWJhc2VsaW5lCiBCVUdXSzY1MzYxIDogZmFzdC9mb3Jtcy9p
bnB1dC1kaXNhYmxlZC1jb2xvci5odG1sID0gSU1BR0UrVEVYVAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>