<?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>29140</bug_id>
          
          <creation_ts>2009-09-10 12:16:22 -0700</creation_ts>
          <short_desc>getResponseHeader returns &quot;&quot; instead of null as the spec requires.</short_desc>
          <delta_ts>2009-09-24 16:44:30 -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>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27065</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carol Szabo">carol</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>146286</commentid>
    <comment_count>0</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-10 12:16:22 -0700</bug_when>
    <thetext>getResponseHeader returns an empty string when called with &quot;Set-Cookie&quot; as a parameter in the proper readyState. http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#the-getresponseheader-method specifies that null should be returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146287</commentid>
    <comment_count>1</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-10 12:16:59 -0700</bug_when>
    <thetext>Intend to submit patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147070</commentid>
    <comment_count>2</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-14 09:36:27 -0700</bug_when>
    <thetext>I have read the discussion on bug 15356, and I saw that some changes were made to the spec probably because of those discussions, but I believe that WebKit is still not conforming to the spec and not only that, but due to its behavior makes it difficult for JavaScript developers to distinguish between missing and empty headers, while the spec makes that easy and I also do not believe that changing this behavior should cause major compatibility issues.
If nobody dares to break with a bad legacy, progress will die, and furthermore things will become worse and worse, as mistakes will keep creeping in over the years.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147119</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-14 11:13:11 -0700</bug_when>
    <thetext>That&apos;s very interesting - from my reading of the code, this doesn&apos;t seem to be the case for JS bindings at least.

&gt; If nobody dares to break with a bad legacy, progress will die

This is not the kind of argument that helps move a patch forward - instead, many people will avoid bugs with politically charged discussions.

Please do test what IE and Firefox return, both for blacklisted headers like Set-Cookie, and for ones that just aren&apos;t in the response.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147120</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-14 11:13:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; That&apos;s very interesting - from my reading of the code, this doesn&apos;t seem to be
&gt; the case for JS bindings at least.

Oh sorry, my reading was incorrect :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147817</commentid>
    <comment_count>5</comment_count>
      <attachid>39698</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-17 09:41:26 -0700</bug_when>
    <thetext>Created attachment 39698
Proposed patch

I have verified that Firefox returns null for the valid states (&gt;=2), but does not throw an exception for the 0 state, and in some versions not for the 1 state either.
I was unable to install a recent version of IE (7.0 or better) on the computers that I have access to (download restrictions and failure of internal install packages) thus I am not sure what recent IE behavior is but IE 6.0 is very far from the standard: has redefined states, headers being accessible only after the entire document is loaded, and then sometimes it returns an empty string, sometimes it throws an exception (like in the case of null).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148677</commentid>
    <comment_count>6</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-21 08:35:49 -0700</bug_when>
    <thetext>I have checked IE and IE is inconsistent in handling XMLHttpRequest between major versions, but for the most part it returns an empty string for missing, unsafe. empty, and malformed header names.
I believe that we should go with the specification, not only because it is the specification, but because it allows distinguishing a missing header from a header with an empty value in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149098</commentid>
    <comment_count>7</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-22 10:28:19 -0700</bug_when>
    <thetext>Here is the response from the editor of the XMLHttpRequest Level 2
specification to the question that this bug report is trying to address:

Re: XMLHttpRequest: IE compatibility: null versus empty string for    
requesting missing, unsafe, or malformed header names
To: carol.szabo@nokia.com
Cc: ap@webkit.org
On Mon, Sep 21, 2009 at 6:57 PM,  &lt;carol.szabo@nokia.com&gt; wrote:
&gt; IE 8.0 returns an empty string, except that it throws an exception if the
&gt; header name argument is null.
&gt; The standard that I read specifies null for the cases mentioned in the
&gt; subject. Is this difference intentional?
&gt; I personally prefer to have it the way the standard specifies the handling
&gt; of these cases, as it allows a distinction between a header not being
&gt; present and having an empty value, but I would like to know whether the
&gt; current state of the standard is likely to remain as is, or it is likely to
&gt; change to emulate IE, which while providing less information makes it easier
&gt; for the developers to treat missing and empty headers the same way, which is
&gt; probably ok in most cases.
&gt;
&gt; Any thoughts that you might have on this issue are greatly appreciated.

The standard at one point returned the empty string. We changed it for
exactly the reason you mention and I do not plan to change that. By
the way, it&apos;s better to use annevk@opera.com if you want to reach me
on such matters. annevankesteren+webkit@gmail.com is just for WebKit
Bugzilla.

Cheers,


-- 
Anne van Kesteren
http://annevankesteren.nl/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149156</commentid>
    <comment_count>8</comment_count>
      <attachid>39698</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-22 12:50:42 -0700</bug_when>
    <thetext>Comment on attachment 39698
Proposed patch

&gt; -    if (!isValidToken(name))
&gt; -        return &quot;&quot;;
&lt;...&gt;
&gt; +    //if name is not a &quot;Valid token&quot; it shall not match any valid header name thus the check for isValidToken is not needed.
&gt; +    //since httpHeaderField(name) returns a null string anyway.
&gt;      return m_response.httpHeaderField(name);

It seems fine to remove the check - I think that we should suggest removing this clause form XMLHttpRequest spec, too.

I do not think that the comment is helpful - it talks about code that used to be there, but isn&apos;t any more. Also, sentences should start with capital letters, and there should be a space after &quot;//&quot;. I suggest just removing the comment, and e-mailing W3C WebApps working group about changing the spec.

&gt; +        * http/tests/xmlhttprequest/xmlhttprequest-invalidHeader-getRequestHeader.html: Removed.
&gt; +          getResponseHeader.html now covers this case as well.

You should remove expected results for this test, as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149181</commentid>
    <comment_count>9</comment_count>
      <attachid>39943</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-22 14:14:02 -0700</bug_when>
    <thetext>Created attachment 39943
Proposed Patch: Addresses AP&apos;s concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149262</commentid>
    <comment_count>10</comment_count>
      <attachid>39943</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-22 16:36:09 -0700</bug_when>
    <thetext>Comment on attachment 39943
Proposed Patch: Addresses AP&apos;s concerns.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149597</commentid>
    <comment_count>11</comment_count>
      <attachid>39943</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 18:01:45 -0700</bug_when>
    <thetext>Comment on attachment 39943
Proposed Patch: Addresses AP&apos;s concerns.

Carol is not a committer, so assuming he wanted this auto-committed given no indication otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149605</commentid>
    <comment_count>12</comment_count>
      <attachid>39943</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-23 18:08:12 -0700</bug_when>
    <thetext>Comment on attachment 39943
Proposed Patch: Addresses AP&apos;s concerns.

Rejecting patch 39943 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11318 test cases.
http/tests/xmlhttprequest/getResponseHeader.html -&gt; failed

Exiting early after 1 failures. 8974 tests run.
252.41s total testing time

8973 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
5 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149608</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 18:16:22 -0700</bug_when>
    <thetext>The test failure looks related to your change, so this rejection is real (not a flakey test).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149739</commentid>
    <comment_count>14</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-24 06:00:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; The test failure looks related to your change, so this rejection is real (not a
&gt; flakey test).

Eric,
I have run this test in my environment and it succeeded. I think the output is apparently different on Mac than on Linux, I assume that there probably are extra warnings or something.
Can you provide the actual output of the failed test such that I can address the issue.

Thanks,
Carol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149789</commentid>
    <comment_count>15</comment_count>
      <attachid>40076</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-24 11:26:02 -0700</bug_when>
    <thetext>Created attachment 40076
Fixed a problem in the getResonseHeader-expected.txt. The test should succeed now.

I fixed the expected test result for the failing test. The difference was in the output formatting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149802</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-24 13:03:24 -0700</bug_when>
    <thetext>OK.  Best to let ap set r+ again since he reviewed the original patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149889</commentid>
    <comment_count>17</comment_count>
      <attachid>40076</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-24 16:32:13 -0700</bug_when>
    <thetext>Comment on attachment 40076
Fixed a problem in the getResonseHeader-expected.txt. The test should succeed now.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149900</commentid>
    <comment_count>18</comment_count>
      <attachid>40076</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-24 16:44:25 -0700</bug_when>
    <thetext>Comment on attachment 40076
Fixed a problem in the getResonseHeader-expected.txt. The test should succeed now.

Clearing flags on attachment: 40076

Committed r48739: &lt;http://trac.webkit.org/changeset/48739&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149901</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-24 16:44:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39698</attachid>
            <date>2009-09-17 09:41:26 -0700</date>
            <delta_ts>2009-09-22 12:50:41 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patchFor29140-2.txt</filename>
            <type>text/plain</type>
            <size>16171</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQ2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMTcgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYktpdCByZXR1cm5zICIiIGluc3RlYWQgb2YgbnVsbCB3aGVuIGdldHRpbmcKKyAgICAgICAg
aW5leGlzdGVudCwgZm9yYmlkZGVuIG9yIGludmFsaWRseSBuYW1lZCBoZWFkZXJzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxNDAKKworICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Z2V0UmVzcG9uc2VIZWFkZXIpOgorICAgICAgICBDaGFuZ2VkIHRvIHJldHVybiBudWxs
IGFzIGl0IHNob3VsZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCisKIDIwMDktMDktMTcgIEF2aSBE
cmlzc21hbiAgPGF2aUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDQ4NDQyKQorKysgV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTUsMjMgKzc1
NSwyMSBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyCiB7CiAgICAg
aWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIH0KIAotICAgIGlmICghaXNWYWxpZFRva2VuKG5hbWUpKQotICAgICAgICByZXR1cm4gIiI7
Ci0KICAgICAvLyBTZWUgY29tbWVudCBpbiBnZXRBbGxSZXNwb25zZUhlYWRlcnMgYWJvdmUuCiAg
ICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKG5hbWUpICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygpKSB7CiAgICAgICAg
IHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8g
Z2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwotICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKICAgICBpZiAoIW1fc2FtZU9yaWdp
blJlcXVlc3QgJiYgIWlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3QobmFt
ZSkpIHsKICAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7Ci0gICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KLQorICAgIC8v
aWYgbmFtZSBpcyBub3QgYSAiVmFsaWQgdG9rZW4iIGl0IHNoYWxsIG5vdCBtYXRjaCBhbnkgdmFs
aWQgaGVhZGVyIG5hbWUgdGh1cyB0aGUgY2hlY2sgZm9yIGlzVmFsaWRUb2tlbiBpcyBub3QgbmVl
ZGVkLgorICAgIC8vc2luY2UgaHR0cEhlYWRlckZpZWxkKG5hbWUpIHJldHVybnMgYSBudWxsIHN0
cmluZyBhbnl3YXkuCiAgICAgcmV0dXJuIG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKG5hbWUp
OwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODQ2OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTA5LTE3ICBDYXJvbCBTemFi
byAgPGNhcm9sLnN6YWJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJLaXQgcmV0dXJucyAiIiBpbnN0ZWFkIG9mIG51bGwgd2hl
biBnZXR0aW5nCisgICAgICAgIGluZXhpc3RlbnQsIGZvcmJpZGRlbiBvciBpbnZhbGlkbHkgbmFt
ZWQgaGVhZGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI5MTQwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldC1kYW5n
ZXJvdXMtaGVhZGVycy5odG1sOgorICAgICAgICAgIFVwZGF0ZWQgdG8gdGVzdCBmb3IgbnVsbCBp
bnN0ZWFkIG9mICIiCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNw
b25zZUhlYWRlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sOgorICAgICAgICAgIEV4dGVuZGVkIHRvIGFsc28g
dGVzdCBmb3IgaGVhZGVycyB0aGF0IHNob3VsZCByZXR1cm4gbnVsbC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFsaWRIZWFkZXItZ2V0UmVx
dWVzdEhlYWRlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyLmh0
bWwgbm93IGNvdmVycyB0aGlzIGNhc2UgYXMgd2VsbC4KKwogMjAwOS0wOS0xNyAgQW5kcmFzIEJl
Y3NpICA8YmVjc2kuYW5kcmFzQHN0dWQudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2dldC1kYW5nZXJvdXMtaGVhZGVycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0LWRhbmdlcm91cy1oZWFkZXJzLmh0bWwJ
KHJldmlzaW9uIDQ4NDQyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9nZXQtZGFuZ2Vyb3VzLWhlYWRlcnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsMTMgKzEy
LDEzIEBACiAKICAgICB2YXIgcmVzdWx0ID0gIlBBU1MiOwogCi0gICAgaWYgKHJlcS5nZXRSZXNw
b25zZUhlYWRlcigiU2V0LUNvb2tpZSIpICE9ICIiICYmIHJlc3VsdCA9PSAiUEFTUyIpCisgICAg
aWYgKHJlcS5nZXRSZXNwb25zZUhlYWRlcigiU2V0LUNvb2tpZSIpICE9IG51bGwgJiYgcmVzdWx0
ID09ICJQQVNTIikKICAgICAgICAgcmVzdWx0ID0gIkZBSUw6IFNhdyBhIFNldC1Db29raWUgaGVh
ZGVyIHdpdGggZ2V0UmVzcG9uc2VIZWFkZXIuIjsKLSAgICBpZiAocmVxLmdldFJlc3BvbnNlSGVh
ZGVyKCJzZXQtY29va2llIikgIT0gIiIgJiYgcmVzdWx0ID09ICJQQVNTIikKKyAgICBpZiAocmVx
LmdldFJlc3BvbnNlSGVhZGVyKCJzZXQtY29va2llIikgIT0gbnVsbCAmJiByZXN1bHQgPT0gIlBB
U1MiKQogICAgICAgICByZXN1bHQgPSAiRkFJTDogU2F3IGEgc2V0LWNvb2tpZSBoZWFkZXIgd2l0
aCBnZXRSZXNwb25zZUhlYWRlci4iOwotICAgIGlmIChyZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlNl
dC1Db29raWUyIikgIT0gIiIgJiYgcmVzdWx0ID09ICJQQVNTIikKKyAgICBpZiAocmVxLmdldFJl
c3BvbnNlSGVhZGVyKCJTZXQtQ29va2llMiIpICE9IG51bGwgJiYgcmVzdWx0ID09ICJQQVNTIikK
ICAgICAgICAgcmVzdWx0ID0gIkZBSUw6IFNhdyBhIFNldC1Db29raWUyIGhlYWRlciB3aXRoIGdl
dFJlc3BvbnNlSGVhZGVyLiI7Ci0gICAgaWYgKHJlcS5nZXRSZXNwb25zZUhlYWRlcigic2V0LWNv
b2tpZTIiKSAhPSAiIiAmJiByZXN1bHQgPT0gIlBBU1MiKQorICAgIGlmIChyZXEuZ2V0UmVzcG9u
c2VIZWFkZXIoInNldC1jb29raWUyIikgIT0gbnVsbCAmJiByZXN1bHQgPT0gIlBBU1MiKQogICAg
ICAgICByZXN1bHQgPSAiRkFJTDogU2F3IGEgc2V0LWNvb2tpZTIgaGVhZGVyIHdpdGggZ2V0UmVz
cG9uc2VIZWFkZXIuIjsKIAogICAgIGlmIChyZXEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkubWF0
Y2goL1NldC1Db29raWUvKSAmJiByZXN1bHQgPT0gIlBBU1MiKQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRS
ZXNwb25zZUhlYWRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ4NDQyKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMzMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAxOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJTZVQtQ09vS2llIgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgInNFdC1jb09rSUUy
IgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIg
IlNlVC1DT29LaWUiCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBnZXQgdW5z
YWZlIGhlYWRlciAic0V0LWNvT2tJRTIiCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNl
ZCB0byBnZXQgdW5zYWZlIGhlYWRlciAiU2VULUNPb0tpZSIKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAxOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJzRXQtY29Pa0lFMiIKIFRlc3QgcGFn
ZSBmb3IgYnVnIDE1MzU2IGFuZCBidWcgMjkxMjEKIAotQXNzZXJ0aW9uOiBJbnZva2luZyBnZXRS
ZXNwb25zZUhlYWRlciBtZXRob2Qgd2hlbiByZWFkeVN0YXRlID49IDIgKEhFQURFUlNfUkVDRUlW
RUQpIHNob3VsZCByZXR1cm4gYSBoZWFkZXIgdmFsdWUgaWYgdGhlIGhlYWRlciBleGlzdHMuCitB
c3NlcnRpb246IEludm9raW5nIHRoZSBnZXRSZXNwb25zZUhlYWRlciBtZXRob2Qgd2hlbiByZWFk
eVN0YXRlID49IDIgKEhFQURFUlNfUkVDRUlWRUQpIHJldHVybnMgYSBoZWFkZXIgdmFsdWUgaWYg
dGhlIGhlYWRlciBleGlzdHMuCiAKLVBBU1NFRCAwCi1QQVNTRUQgMQotUEFTU0VEIDI6IGdldFJl
c3BvbnNlSGVhZGVyKENvbnRlbnQtVHlwZSkgcmV0dXJuZWQgYSB2YWx1ZS4KLVBBU1NFRCAzCi1Q
QVNTRUQgNAorQXNzZXJ0aW9uOiBJbnZva2luZyB0aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9k
IHdpdGggdGhlIHBhcmFtZXRlciBzYXRpc2Z5aW5nIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBj
YXVzZXMgZ2V0UmVzcG9uc2VIZWFkZXIgdG8gcmV0dXJuIG51bGw6IDFhLiBUaGUgcGFyYW1ldGVy
IGNhc2UtaW5zZW5zaXRpdmVseSBtYXRjaGVzIFNldC1Db29raWU7IDFiLiBUaGUgcGFyYW1ldGVy
IGNhc2UtaW5zZW5zaXRpdmVseSBtYXRjaGVzIFNldC1Db29raWUyOyAyLiBUaGUgcGFyYW1ldGVy
IGRvZXMgbm90IG1hdGNoIGFueSBoZWFkZXIgaW4gdGhlIHJlc3BvbnNlIDNhLiBUaGUgcGFyYW1l
dGVyIGlzIG51bGwgKGl0IGlzIG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKS4gM2IuIFRoZSBwYXJh
bWV0ZXIgaXMgIkNvbnRlbnQtVHlwZToiIChpdCBpcyBub3QgYSB2YWxpZCBoZWFkZXIgbmFtZSku
CisKK1BBU1NFRCAwIENvbnRlbnQtVHlwZTogZXhjZXB0aW9uIHRocm93bi4KK1BBU1NFRCAxIENv
bnRlbnQtVHlwZTogZXhjZXB0aW9uIHRocm93bgorUEFTU0VEIDIgQ29udGVudC1UeXBlOiBSZXNw
b25zZUhlYWRlcihDb250ZW50LVR5cGUpIHJldHVybmVkIGEgdmFsdWUuCitQQVNTRUQgMiBTZVQt
Q09vS2llOiBnZXRSZXNwb25zZUhlYWRlcihTZVQtQ09vS2llKSByZXR1cm5lZCBudWxsLgorUEFT
U0VEIDIgc0V0LWNvT2tJRTI6IGdldFJlc3BvbnNlSGVhZGVyKHNFdC1jb09rSUUyKSByZXR1cm5l
ZCBudWxsLgorUEFTU0VEIDIgeHh4LW15dGVzdC1oZWFkZXJhYmM6IGdldFJlc3BvbnNlSGVhZGVy
KHh4eC1teXRlc3QtaGVhZGVyYWJjKSByZXR1cm5lZCBudWxsLgorUEFTU0VEIDIgbnVsbDogZ2V0
UmVzcG9uc2VIZWFkZXIobnVsbCkgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCAyIENvbnRlbnQtVHlw
ZTo6IGdldFJlc3BvbnNlSGVhZGVyKENvbnRlbnQtVHlwZTopIHJldHVybmVkIG51bGwuCitQQVNT
RUQgMyBDb250ZW50LVR5cGU6IENvbnRlbnQtVHlwZQorUEFTU0VEIDMgU2VULUNPb0tpZTogZ2V0
UmVzcG9uc2VIZWFkZXIoU2VULUNPb0tpZSkgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCAzIHNFdC1j
b09rSUUyOiBnZXRSZXNwb25zZUhlYWRlcihzRXQtY29Pa0lFMikgcmV0dXJuZWQgbnVsbC4KK1BB
U1NFRCAzIHh4eC1teXRlc3QtaGVhZGVyYWJjOiBnZXRSZXNwb25zZUhlYWRlcih4eHgtbXl0ZXN0
LWhlYWRlcmFiYykgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCAzIG51bGw6IGdldFJlc3BvbnNlSGVh
ZGVyKG51bGwpIHJldHVybmVkIG51bGwuCitQQVNTRUQgMyBDb250ZW50LVR5cGU6OiBnZXRSZXNw
b25zZUhlYWRlcihDb250ZW50LVR5cGU6KSByZXR1cm5lZCBudWxsLgorUEFTU0VEIDQgQ29udGVu
dC1UeXBlOiBDb250ZW50LVR5cGUKK1BBU1NFRCA0IFNlVC1DT29LaWU6IGdldFJlc3BvbnNlSGVh
ZGVyKFNlVC1DT29LaWUpIHJldHVybmVkIG51bGwuCitQQVNTRUQgNCBzRXQtY29Pa0lFMjogZ2V0
UmVzcG9uc2VIZWFkZXIoc0V0LWNvT2tJRTIpIHJldHVybmVkIG51bGwuCitQQVNTRUQgNCB4eHgt
bXl0ZXN0LWhlYWRlcmFiYzogZ2V0UmVzcG9uc2VIZWFkZXIoeHh4LW15dGVzdC1oZWFkZXJhYmMp
IHJldHVybmVkIG51bGwuCitQQVNTRUQgNCBudWxsOiBnZXRSZXNwb25zZUhlYWRlcihudWxsKSBy
ZXR1cm5lZCBudWxsLgorUEFTU0VEIDQgQ29udGVudC1UeXBlOjogZ2V0UmVzcG9uc2VIZWFkZXIo
Q29udGVudC1UeXBlOikgcmV0dXJuZWQgbnVsbC4KIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXIu
aHRtbAkocmV2aXNpb24gNDg0NDIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTMgKzMs
MjQgQEAKICAgICA8dGl0bGU+Q2hlY2sgZXhjZXB0aW9uIHRocm93biBieSBnZXRSZXBvbnNlSGVh
ZGVyIDwvdGl0bGU+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAKK3ZhciBzYXZl
ZEhlYWRlciA9IG51bGw7Cit2YXIgaGVhZGVyTmFtZT0iQ29udGVudC1UeXBlIjsKK3ZhciBudWxs
VGVzdHMgPSAgbmV3IEFycmF5KCJTZVQtQ09vS2llIiwgInNFdC1jb09rSUUyIiwgCisgICAgInh4
eC1teXRlc3QtaGVhZGVyYWJjIiwgbnVsbCwgIkNvbnRlbnQtVHlwZToiKTsKKwogZnVuY3Rpb24g
bG9nIChtc2cpIHsKICAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
bGkiKTsKICAgICBwYXJhZ3JhcGguaW5uZXJIVE1MPW1zZy5yZXBsYWNlKC9cbi9nbSwiPGJyPiIp
OwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFy
YWdyYXBoKTsKIH0KIAotdmFyIHhocjsKK2Z1bmN0aW9uIGxvZzQoc3RhdHVzLCByU3RhdGUsIHN1
YlN0YXRlLCBtc2cpIHsKKyAgICBsb2coc3RhdHVzICsgIiAiICsgclN0YXRlICsgIiAiICsgc3Vi
U3RhdGUgKyAiOiAiICsgbXNnKTsKK30KKworZnVuY3Rpb24gbG9nMyhzdGF0dXMsIHJTdGF0ZSwg
bXNnKSB7CisgICAgbG9nNChzdGF0dXMsIHJTdGF0ZSwgaGVhZGVyTmFtZSwgbXNnKTsKK30KIAog
aWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkgewogICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dCgpOwpAQCAtMjEsOCArMzIsNiBAQCBpZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0KSB7CiAgICAg
fQogfQogCi12YXIgc2F2ZWRIZWFkZXIgPSBudWxsOwotdmFyIGhlYWRlck5hbWU9IkNvbnRlbnQt
VHlwZSI7CiB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJT
dGF0ZSA9IHRoaXMucmVhZHlTdGF0ZTsKICAgICAvLyBXZSBleHBlY3QgYW4gSU5WQUxJRF9TVEFU
RV9FUlIgZXhjZXB0aW9uIGZvciByZWFkeVN0YXRlIDwgMgpAQCAtMzAsMzYgKzM5LDQ3IEBAIHho
ci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICB0cnkgewogICAgICAgICB2
YXIgaGVhZGVyID0gdGhpcy5nZXRSZXNwb25zZUhlYWRlcihoZWFkZXJOYW1lKTsKICAgICAgICAg
aWYgKHJTdGF0ZSAhPSB0aGlzLnJlYWR5U3RhdGUpCi0gICAgICAgICAgICBsb2coIlVOQ0VSVEFJ
TiAiICsgclN0YXRlICsgIjogcmVhZHlTdGF0ZSBjaGFuZ2VkIHdoaWxlIGdldHRpbmcgdGhlIGhl
YWRlci4iKTsKKyAgICAgICAgICAgIGxvZzMoIlVOQ0VSVEFJTiIsIHJTdGF0ZSwgInJlYWR5U3Rh
dGUgY2hhbmdlZCB3aGlsZSBnZXR0aW5nIHRoZSBoZWFkZXIuIik7CiAgICAgICAgIGlmIChyU3Rh
dGUgPCAyKSB7Ci0gICAgICAgICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRlICsgIjogIiArIGhl
YWRlck5hbWUgKyAiPSIgKyBoZWFkZXIpOwotICAgICAgICB9IGVsc2UgaWYgKGhlYWRlcikKKyAg
ICAgICAgICAgIGxvZzMoIkZBSUxFRCIsIHJTdGF0ZSwgaGVhZGVyTmFtZSArICI9IiArIGhlYWRl
cik7CisgICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyKSB7CiAgICAgICAgICAgICBpZiAoc2F2ZWRI
ZWFkZXIpCiAgICAgICAgICAgICAgICAgaWYgKHNhdmVkSGVhZGVyICE9IGhlYWRlcikgewotICAg
ICAgICAgICAgICAgICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRlICsKLSI6IENvbnRlbnQtVHlw
ZSBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBmaXJzdCByZXR1cm5lZC4gUHJldmlvdXMgIiArIGhlYWRl
ck5hbWUKLSsgIj0iICsgc2F2ZWRIZWFkZXIgKyAiOyBOZXcgIiArIGhlYWRlck5hbWUgKyAiPSIg
KyBoZWFkZXIgKyAiLiIpOworICAgICAgICAgICAgICAgICAgICBsb2czKCJGQUlMRUQiLCByU3Rh
dGUsaGVhZGVyTmFtZSArICIgY2hhbmdlZCBhZnRlciBpdCB3YXMgZmlyc3QgcmV0dXJuZWQuIFBy
ZXZpb3VzICIgKyBoZWFkZXJOYW1lCisgICAgICAgICAgICAgICAgICAgICAgICArICI9IiArIHNh
dmVkSGVhZGVyICsgIjsgTmV3ICIgKyBoZWFkZXJOYW1lICsgIj0iICsgaGVhZGVyICsgIi4iKTsK
ICAgICAgICAgICAgICAgICBzYXZlZEhlYWRlciA9IGhlYWRlcjsKICAgICAgICAgICAgICAgICB9
IAogICAgICAgICAgICAgICAgIGVsc2UgLy9zYXZlZEhlYWRlciA9PSBoZWFkZXIgaGVyZTsgbm8g
bmVlZCB0byByZXByaW50IGhlYWRlcgotICAgICAgICAgICAgICAgICAgICBsb2coIlBBU1NFRCAi
ICsgclN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nMygiUEFTU0VEIiwgclN0YXRlLCBo
ZWFkZXJOYW1lKTsKICAgICAgICAgICAgIGVsc2Ugey8vZmlyc3QgaGVhZGVyIHZhbHVlIHJldHJp
ZXZlZAogICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAv
L2RvIG5vdCBwcmludCB0aGUgaGVhZGVyJ3MgdmFsdWUgZm9yIGF1dG9tYXRlZCB0ZXN0cyB0byBh
dm9pZCBmYWxzZSBmYWlsdXJlcy4KLSAgICAgICAgICAgICAgICAgICAgbG9nKCJQQVNTRUQgIiAr
IHJTdGF0ZSArCi0iOiBnZXRSZXNwb25zZUhlYWRlcigiICsgaGVhZGVyTmFtZSArICIpIHJldHVy
bmVkIGEgdmFsdWUuIik7CisgICAgICAgICAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0
ZSwgIlJlc3BvbnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQgYSB2YWx1ZS4i
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvZygiUEFTU0VE
ICIgKyByU3RhdGUgKwotIjogZ2V0UmVzcG9uc2VIZWFkZXIoIiArIGhlYWRlck5hbWUgKyAiKSBy
ZXR1cm5lZDogIiArIGhlYWRlciArICIuIik7CisgICAgICAgICAgICAgICAgICAgIGxvZzMoIlBB
U1NFRCIsIHJTdGF0ZSwgImdldFJlc3BvbnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0
dXJuZWQ6ICIgKyBoZWFkZXIgKyAiLiIpOwogICAgICAgICAgICAgICAgIHNhdmVkSGVhZGVyID0g
aGVhZGVyOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8bnVsbFRl
c3RzLmxlbmd0aDsrK2kpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgc3RyID0gdGhpcy5nZXRSZXNwb25zZUhlYWRlcihudWxsVGVzdHNbaV0pOworICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RyID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgICAg
ICBsb2c0KCJQQVNTRUQiLCByU3RhdGUsIG51bGxUZXN0c1tpXSwgImdldFJlc3BvbnNlSGVhZGVy
KCIgKyBudWxsVGVzdHNbaV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIHJldHVy
bmVkIG51bGwuIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZzQoIkZBSUxFRCIsIHJTdGF0ZSwgbnVsbFRlc3RzW2ldLCAiZ2V0UmVzcG9uc2VI
ZWFkZXIoIiArIG51bGxUZXN0c1tpXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikg
cmV0dXJuZWQgXCIiICsgc3RyICsgIlwiIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICAgICAgICAgIGxvZzQoIkZBSUxFRCIsIHJTdGF0ZSwgbnVsbFRlc3RzW2ld
LCAiZ2V0UmVzcG9uc2VIZWFkZXIoIiArIG51bGxUZXN0c1tpXSArICIpIHRocmV3IGV4Y2VwdGlv
bjoiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgICAgIGVsc2UgLy9oZWFkZXIgaXMgbnVsbAotICAgICAgICAgICAgbG9nKCJGQUlMRUQgIiAr
IHJTdGF0ZSArICI6IG51bGwgIiArIGhlYWRlck5hbWUgKyAiIHJldHVybmVkLiIpOworICAgICAg
ICAgICAgbG9nMygiRkFJTEVEIiwgclN0YXRlLCAibnVsbCAiICsgaGVhZGVyTmFtZSArICIgcmV0
dXJuZWQuIik7CiAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICBpZiAoclN0YXRlIDwgMikKLSAg
ICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUpOworICAgICAgICAgICAgbG9nMygiUEFT
U0VEIiwgclN0YXRlLCAiZXhjZXB0aW9uIHRocm93biIpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRlICsgIjogRVhDRVBUSU9OIFRIUk9XTjogIiArIGUu
bWVzc2FnZSArICIuIik7CisgICAgICAgICAgICBsb2czKCJGQUlMRUQiLCByU3RhdGUsICJleGNl
cHRpb24gdGhyb3duOiAiICsgZS5tZXNzYWdlICsgIi4iKTsKICAgICB9CiAgICAgaWYgKChyU3Rh
dGUgPT0gNCkgJiYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikpCiAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CkBAIC03NCwxNSArOTQsMTUgQEAgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICAvLyBUZXN0IGZvciByZWFkeVN0YXRlID0gMAogICAgIHRyeSB7
CiAgICAgICAgIHZhciBoZWFkZXIgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoaGVhZGVyTmFtZSk7
Ci0gICAgICAgIGxvZygiRkFJTEVEICIgKyB4aHIucmVhZHlTdGF0ZSArICI6ICIgKyBoZWFkZXJO
YW1lICsgIj0iICsgaGVhZGVyICsgIi4iKTsKKyAgICAgICAgbG9nMygiRkFJTEVEIiwgeGhyLnJl
YWR5U3RhdGUsIGhlYWRlck5hbWUgKyAiPSIgKyBoZWFkZXIgKyAiLiIpOwogICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgbG9nKCJQQVNTRUQgIiArIHhoci5yZWFkeVN0YXRlKTsKKyAgICAgICAg
bG9nMygiUEFTU0VEIiwgeGhyLnJlYWR5U3RhdGUsICJleGNlcHRpb24gdGhyb3duLiIpOwogICAg
IH0KICAgICB0cnkgewogICAgICAgICB4aHIub3BlbigiR0VUIiwicmVzb3VyY2VzLzEyNTEuaHRt
bCIsIHRydWUpOwogICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICB9IGNhdGNoKGUpIHsKLSAg
ICAgICAgbG9nKCJGQUlMRUQgb3Blbi9zZW5kOiBFWENFUFRJT04gVEhST1dOOiAiICsgZS5tZXNz
YWdlICsiLiIpOworICAgICAgICBsb2czKCJGQUlMRUQiLCAib3Blbi9zZW5kIiwgImV4Y2VwdGlv
biB0aHJvd246ICIgKyBlLm1lc3NhZ2UgKyIuIik7CiAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CiAgICAgfQpAQCAtOTQsMTUgKzExNCwyNSBAQCBmdW5jdGlvbiB0ZXN0KCkgewogPHA+
VGVzdCBwYWdlIGZvciA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTM1NiI+YnVnCiAxNTM1NjwvYT4KIGFuZCA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTEyMSI+YnVnIDI5MTIxPC9hPjwvcD4KLTxwPkFzc2Vy
dGlvbjogSW52b2tpbmcgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdoZW4gcmVhZHlTdGF0ZSA+
PSAyCi0oSEVBREVSU19SRUNFSVZFRCkgc2hvdWxkIHJldHVybiBhIGhlYWRlciB2YWx1ZSBpZiB0
aGUgaGVhZGVyIGV4aXN0cy48L3A+Cis8cD5Bc3NlcnRpb246IEludm9raW5nIHRoZSBnZXRSZXNw
b25zZUhlYWRlciBtZXRob2Qgd2hlbiByZWFkeVN0YXRlID49IDIKKyhIRUFERVJTX1JFQ0VJVkVE
KSByZXR1cm5zIGEgaGVhZGVyIHZhbHVlIGlmIHRoZSBoZWFkZXIgZXhpc3RzLjwvcD4KKzxwPkFz
c2VydGlvbjogSW52b2tpbmcgdGhlIGdldFJlc3BvbnNlSGVhZGVyIG1ldGhvZCB3aXRoIHRoZSBw
YXJhbWV0ZXIKKyAgICBzYXRpc2Z5aW5nIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBjYXVzZXMg
Z2V0UmVzcG9uc2VIZWFkZXIKKyAgICB0byByZXR1cm4gbnVsbDoKKzxsaT4xYS4gVGhlIHBhcmFt
ZXRlciBjYXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyBTZXQtQ29va2llOzwvbGk+Cis8bGk+MWIu
IFRoZSBwYXJhbWV0ZXIgY2FzZS1pbnNlbnNpdGl2ZWx5IG1hdGNoZXMgU2V0LUNvb2tpZTI7PC9s
aT4KKzxsaT4yLiAgVGhlIHBhcmFtZXRlciBkb2VzIG5vdCBtYXRjaCBhbnkgaGVhZGVyIGluIHRo
ZSByZXNwb25zZTs8L2xpPgorPGxpPjNhLiBUaGUgcGFyYW1ldGVyIGlzIG51bGwgKGl0IGlzIG5v
dCBhIHZhbGlkIGhlYWRlciBuYW1lKTs8L2xpPgorPGxpPjNiLiBUaGUgcGFyYW1ldGVyIGlzICJD
b250ZW50LVR5cGU6IiAoaXQgaXMgbm90IGEgdmFsaWQgaGVhZGVyIG5hbWUpLjwvbGk+CisKIDxz
Y3JpcHQ+CiAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCI8cD5JZiB0aGUgdGVzdCBwYXNzZXMgb25lIHNob3VsZCBzZWUgXAotYmVs
b3cgdGhlIHJ1bGVyIHRoZSB0ZXh0IFwicGFzc2VkXCIgaW4gYWxsIGNhcGl0YWwgbGV0dGVycywg
NSB0aW1lcywgXAotZm9sbG93ZWQgZWFjaCB0aW1lIGJ5IGEgc3BhY2UgYW5kIHRoZSByZWFkeVN0
YXRlIG51bWJlci48L3A+XG5cCi08cD5SZWFkeVN0YXRlbnVtYmVycyBzaG91bGQgYmUgaW4gYXNj
ZW5kaW5nIG9yZGVyIDAgdG8gNC48L3A+XG5cCi08cD5UaGUgdmFsdWUgb2YgdGhlICIgKyBoZWFk
ZXJOYW1lICsgIiBoZWFkZXIgc2hvdWxkIGFsc28gYmUgcHJpbnRlZC48L3A+Iik7CitiZWxvdyB0
aGUgcnVsZXIgdGhlIHRleHQgXCJwYXNzZWRcIiBpbiBhbGwgY2FwaXRhbCBsZXR0ZXJzLCBvbmNl
IGZvciBldmVyeSByZWFkeSBzdGF0ZSAmbHQ7IDIsIFwKK2ZvbGxvd2VkIGVhY2ggdGltZSBieSBh
IHNwYWNlIGFuZCB0aGUgcmVhZHlTdGF0ZSBudW1iZXIgYW5kIDYgdGltZXMgZm9yIGV2ZXJ5IHJl
YWR5IHN0YXRlID49IDIuPC9wPlxuXAorPHA+UmVhZHlTdGF0ZSBudW1iZXJzIHNob3VsZCBiZSBp
biBhc2NlbmRpbmcgb3JkZXIgMCB0byA0LjwvcD5cblwKKzxwPlJlYWR5U3RhdGUgbnVtYmVycyBz
aG91bGQgYmUgZm9sbG93ZWQgYnkgYSBibGFuaywgdGhlIG5hbWUgb2YgdGhlIGhlYWRlciB0ZXN0
ZWQsIGNvbG9uIGEgc3BhY2UgYW5kIGEgbWVzc2FnZS48L3A+XAorPHA+VGhlIHZhbHVlIG9mIHRo
ZSAiICsgaGVhZGVyTmFtZSArICIgaGVhZGVyIHNob3VsZCAgYmUgcHJpbnRlZCBmb3IgcmVhZHkg
c3RhdGUgMi48L3A+Iik7CiA8L3NjcmlwdD4KICA8aHI+CiAgPHA+PG9sIGlkPWNvbnNvbGU+PC9v
bD48L3A+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LWludmFsaWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRlci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
aW52YWxpZEhlYWRlci1nZXRSZXF1ZXN0SGVhZGVyLmh0bWwJKHJldmlzaW9uIDQ4NDQyKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZh
bGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0NyAr
MCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAgIDx0aXRsZT5DaGVjayBiZWhhdmlvdXIgd2hlbiBy
ZXF1ZXN0aW9uZyBhbiBpbnZhbGlkIGhlYWRlciBpbiAgZ2V0UmVwb25zZUhlYWRlciA8L3RpdGxl
PgotPC9oZWFkPgotPGJvZHk+Ci0KLTxwPlRlc3QgcGFnZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Ij5idWcgMTUzNTY8L2E+IDog
Z2V0UmVzcG9uc2VIZWFkZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVycyBkbyBub3QgdGhyb3cg
ZXhjZXB0aW9uczwvcD4KLQotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0KLWZ1bmN0aW9uIGxvZyAobXNnKSB7Ci0gICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKLSAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOwotfQotCi12
YXIgeGhyOwotCi1pZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0KSB7Ci0gICAgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7Ci19IGVsc2UgewotICAgIHRyeSB7Ci0gICAgICAgIHhociA9IG5ldyBB
Y3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAg
ICAgIHhociA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpOwotICAgIH0K
LX0KLQoteGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotICAgIHZhciByU3Rh
dGUgPSB0aGlzLnJlYWR5U3RhdGU7Ci0gICAgaWYgKHJTdGF0ZSA+IDIpIHsKLSAgICAgICAgLy8g
V2UgZXhwZWN0IGFuIGVtcHR5IHN0cmluZyBvciBudWxsCi0gICAgICAgIHZhciBoZWFkZXIgPSB0
aGlzLmdldFJlc3BvbnNlSGVhZGVyKCIoPD5AKSIpOwotICAgICAgICBpZiAoaGVhZGVyID09ICIi
KSB7Ci0gICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUpOwotICAgICAgICB9Ci0gICAg
fQotfQoteGhyLm9wZW4oIkdFVCIsInJlc291cmNlcy8xMjUxLmh0bWwiLCB0cnVlKTsKLXhoci5z
ZW5kKG51bGwpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>
<flag name="review"
          id="20826"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39943</attachid>
            <date>2009-09-22 14:14:02 -0700</date>
            <delta_ts>2009-09-24 11:26:02 -0700</delta_ts>
            <desc>Proposed Patch: Addresses AP&apos;s concerns.</desc>
            <filename>patchFor29140-3.txt</filename>
            <type>text/plain</type>
            <size>16525</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQ2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMTcgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYktpdCByZXR1cm5zICIiIGluc3RlYWQgb2YgbnVsbCB3aGVuIGdldHRpbmcKKyAgICAgICAg
aW5leGlzdGVudCwgZm9yYmlkZGVuIG9yIGludmFsaWRseSBuYW1lZCBoZWFkZXJzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxNDAKKworICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Z2V0UmVzcG9uc2VIZWFkZXIpOgorICAgICAgICBDaGFuZ2VkIHRvIHJldHVybiBudWxs
IGFzIGl0IHNob3VsZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCisKIDIwMDktMDktMTcgIEF2aSBE
cmlzc21hbiAgPGF2aUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDQ4NDQyKQorKysgV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTUsMjMgKzc1
NSwxOSBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyCiB7CiAgICAg
aWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIH0KIAotICAgIGlmICghaXNWYWxpZFRva2VuKG5hbWUpKQotICAgICAgICByZXR1cm4gIiI7
Ci0KICAgICAvLyBTZWUgY29tbWVudCBpbiBnZXRBbGxSZXNwb25zZUhlYWRlcnMgYWJvdmUuCiAg
ICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKG5hbWUpICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygpKSB7CiAgICAgICAg
IHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlJlZnVzZWQgdG8g
Z2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwotICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKICAgICBpZiAoIW1fc2FtZU9yaWdp
blJlcXVlc3QgJiYgIWlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3QobmFt
ZSkpIHsKICAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsgIlwiIik7Ci0gICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KLQogICAgIHJl
dHVybiBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChuYW1lKTsKIH0KIApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gNDg0NjkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAwOS0wOS0xNyAgQ2Fyb2wgU3phYm8gIDxjYXJvbC5zemFib0Bub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViS2l0IHJldHVybnMgIiIgaW5zdGVhZCBvZiBudWxsIHdoZW4gZ2V0dGluZworICAgICAgICBp
bmV4aXN0ZW50LCBmb3JiaWRkZW4gb3IgaW52YWxpZGx5IG5hbWVkIGhlYWRlcnMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE0MAorCisgICAgICAg
ICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXQtZGFuZ2Vyb3VzLWhlYWRlcnMuaHRtbDoK
KyAgICAgICAgICBVcGRhdGVkIHRvIHRlc3QgZm9yIG51bGwgaW5zdGVhZCBvZiAiIgorICAgICAg
ICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFk
ZXIuaHRtbDoKKyAgICAgICAgICBFeHRlbmRlZCB0byBhbHNvIHRlc3QgZm9yIGhlYWRlcnMgdGhh
dCBzaG91bGQgcmV0dXJuIG51bGwuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgICBnZXRSZXNwb25zZUhlYWRlci5odG1sIG5vdyBjb3ZlcnMgdGhpcyBj
YXNlIGFzIHdlbGwuCisKIDIwMDktMDktMTcgIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFuZHJhc0Bz
dHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXQtZGFuZ2Vyb3Vz
LWhlYWRlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2dldC1kYW5nZXJvdXMtaGVhZGVycy5odG1sCShyZXZpc2lvbiA0ODQ0MikKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0LWRhbmdlcm91cy1oZWFk
ZXJzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDEzICsxMiwxMyBAQAogCiAgICAgdmFyIHJl
c3VsdCA9ICJQQVNTIjsKIAotICAgIGlmIChyZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlNldC1Db29r
aWUiKSAhPSAiIiAmJiByZXN1bHQgPT0gIlBBU1MiKQorICAgIGlmIChyZXEuZ2V0UmVzcG9uc2VI
ZWFkZXIoIlNldC1Db29raWUiKSAhPSBudWxsICYmIHJlc3VsdCA9PSAiUEFTUyIpCiAgICAgICAg
IHJlc3VsdCA9ICJGQUlMOiBTYXcgYSBTZXQtQ29va2llIGhlYWRlciB3aXRoIGdldFJlc3BvbnNl
SGVhZGVyLiI7Ci0gICAgaWYgKHJlcS5nZXRSZXNwb25zZUhlYWRlcigic2V0LWNvb2tpZSIpICE9
ICIiICYmIHJlc3VsdCA9PSAiUEFTUyIpCisgICAgaWYgKHJlcS5nZXRSZXNwb25zZUhlYWRlcigi
c2V0LWNvb2tpZSIpICE9IG51bGwgJiYgcmVzdWx0ID09ICJQQVNTIikKICAgICAgICAgcmVzdWx0
ID0gIkZBSUw6IFNhdyBhIHNldC1jb29raWUgaGVhZGVyIHdpdGggZ2V0UmVzcG9uc2VIZWFkZXIu
IjsKLSAgICBpZiAocmVxLmdldFJlc3BvbnNlSGVhZGVyKCJTZXQtQ29va2llMiIpICE9ICIiICYm
IHJlc3VsdCA9PSAiUEFTUyIpCisgICAgaWYgKHJlcS5nZXRSZXNwb25zZUhlYWRlcigiU2V0LUNv
b2tpZTIiKSAhPSBudWxsICYmIHJlc3VsdCA9PSAiUEFTUyIpCiAgICAgICAgIHJlc3VsdCA9ICJG
QUlMOiBTYXcgYSBTZXQtQ29va2llMiBoZWFkZXIgd2l0aCBnZXRSZXNwb25zZUhlYWRlci4iOwot
ICAgIGlmIChyZXEuZ2V0UmVzcG9uc2VIZWFkZXIoInNldC1jb29raWUyIikgIT0gIiIgJiYgcmVz
dWx0ID09ICJQQVNTIikKKyAgICBpZiAocmVxLmdldFJlc3BvbnNlSGVhZGVyKCJzZXQtY29va2ll
MiIpICE9IG51bGwgJiYgcmVzdWx0ID09ICJQQVNTIikKICAgICAgICAgcmVzdWx0ID0gIkZBSUw6
IFNhdyBhIHNldC1jb29raWUyIGhlYWRlciB3aXRoIGdldFJlc3BvbnNlSGVhZGVyLiI7CiAKICAg
ICBpZiAocmVxLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLm1hdGNoKC9TZXQtQ29va2llLykgJiYg
cmVzdWx0ID09ICJQQVNTIikKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA0ODQ0MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFkZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEwICsxLDMzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBnZXQg
dW5zYWZlIGhlYWRlciAiU2VULUNPb0tpZSIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1
c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJzRXQtY29Pa0lFMiIKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAxOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJTZVQtQ09vS2llIgorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgInNFdC1jb09r
SUUyIgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFk
ZXIgIlNlVC1DT29LaWUiCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBnZXQg
dW5zYWZlIGhlYWRlciAic0V0LWNvT2tJRTIiCiBUZXN0IHBhZ2UgZm9yIGJ1ZyAxNTM1NiBhbmQg
YnVnIDI5MTIxCiAKLUFzc2VydGlvbjogSW52b2tpbmcgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9k
IHdoZW4gcmVhZHlTdGF0ZSA+PSAyIChIRUFERVJTX1JFQ0VJVkVEKSBzaG91bGQgcmV0dXJuIGEg
aGVhZGVyIHZhbHVlIGlmIHRoZSBoZWFkZXIgZXhpc3RzLgorQXNzZXJ0aW9uOiBJbnZva2luZyB0
aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdoZW4gcmVhZHlTdGF0ZSA+PSAyIChIRUFERVJT
X1JFQ0VJVkVEKSByZXR1cm5zIGEgaGVhZGVyIHZhbHVlIGlmIHRoZSBoZWFkZXIgZXhpc3RzLgog
Ci1QQVNTRUQgMAotUEFTU0VEIDEKLVBBU1NFRCAyOiBnZXRSZXNwb25zZUhlYWRlcihDb250ZW50
LVR5cGUpIHJldHVybmVkIGEgdmFsdWUuCi1QQVNTRUQgMwotUEFTU0VEIDQKK0Fzc2VydGlvbjog
SW52b2tpbmcgdGhlIGdldFJlc3BvbnNlSGVhZGVyIG1ldGhvZCB3aXRoIHRoZSBwYXJhbWV0ZXIg
c2F0aXNmeWluZyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgY2F1c2VzIGdldFJlc3BvbnNlSGVh
ZGVyIHRvIHJldHVybiBudWxsOiAxYS4gVGhlIHBhcmFtZXRlciBjYXNlLWluc2Vuc2l0aXZlbHkg
bWF0Y2hlcyBTZXQtQ29va2llOyAxYi4gVGhlIHBhcmFtZXRlciBjYXNlLWluc2Vuc2l0aXZlbHkg
bWF0Y2hlcyBTZXQtQ29va2llMjsgMi4gVGhlIHBhcmFtZXRlciBkb2VzIG5vdCBtYXRjaCBhbnkg
aGVhZGVyIGluIHRoZSByZXNwb25zZSAzYS4gVGhlIHBhcmFtZXRlciBpcyBudWxsIChpdCBpcyBu
b3QgYSB2YWxpZCBoZWFkZXIgbmFtZSkuIDNiLiBUaGUgcGFyYW1ldGVyIGlzICJDb250ZW50LVR5
cGU6IiAoaXQgaXMgbm90IGEgdmFsaWQgaGVhZGVyIG5hbWUpLgorCitQQVNTRUQgMCBDb250ZW50
LVR5cGU6IGV4Y2VwdGlvbiB0aHJvd24uCitQQVNTRUQgMSBDb250ZW50LVR5cGU6IGV4Y2VwdGlv
biB0aHJvd24KK1BBU1NFRCAyIENvbnRlbnQtVHlwZTogUmVzcG9uc2VIZWFkZXIoQ29udGVudC1U
eXBlKSByZXR1cm5lZCBhIHZhbHVlLgorUEFTU0VEIDIgU2VULUNPb0tpZTogZ2V0UmVzcG9uc2VI
ZWFkZXIoU2VULUNPb0tpZSkgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCAyIHNFdC1jb09rSUUyOiBn
ZXRSZXNwb25zZUhlYWRlcihzRXQtY29Pa0lFMikgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCAyIHh4
eC1teXRlc3QtaGVhZGVyYWJjOiBnZXRSZXNwb25zZUhlYWRlcih4eHgtbXl0ZXN0LWhlYWRlcmFi
YykgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCAyIG51bGw6IGdldFJlc3BvbnNlSGVhZGVyKG51bGwp
IHJldHVybmVkIG51bGwuCitQQVNTRUQgMiBDb250ZW50LVR5cGU6OiBnZXRSZXNwb25zZUhlYWRl
cihDb250ZW50LVR5cGU6KSByZXR1cm5lZCBudWxsLgorUEFTU0VEIDMgQ29udGVudC1UeXBlOiBD
b250ZW50LVR5cGUKK1BBU1NFRCAzIFNlVC1DT29LaWU6IGdldFJlc3BvbnNlSGVhZGVyKFNlVC1D
T29LaWUpIHJldHVybmVkIG51bGwuCitQQVNTRUQgMyBzRXQtY29Pa0lFMjogZ2V0UmVzcG9uc2VI
ZWFkZXIoc0V0LWNvT2tJRTIpIHJldHVybmVkIG51bGwuCitQQVNTRUQgMyB4eHgtbXl0ZXN0LWhl
YWRlcmFiYzogZ2V0UmVzcG9uc2VIZWFkZXIoeHh4LW15dGVzdC1oZWFkZXJhYmMpIHJldHVybmVk
IG51bGwuCitQQVNTRUQgMyBudWxsOiBnZXRSZXNwb25zZUhlYWRlcihudWxsKSByZXR1cm5lZCBu
dWxsLgorUEFTU0VEIDMgQ29udGVudC1UeXBlOjogZ2V0UmVzcG9uc2VIZWFkZXIoQ29udGVudC1U
eXBlOikgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCA0IENvbnRlbnQtVHlwZTogQ29udGVudC1UeXBl
CitQQVNTRUQgNCBTZVQtQ09vS2llOiBnZXRSZXNwb25zZUhlYWRlcihTZVQtQ09vS2llKSByZXR1
cm5lZCBudWxsLgorUEFTU0VEIDQgc0V0LWNvT2tJRTI6IGdldFJlc3BvbnNlSGVhZGVyKHNFdC1j
b09rSUUyKSByZXR1cm5lZCBudWxsLgorUEFTU0VEIDQgeHh4LW15dGVzdC1oZWFkZXJhYmM6IGdl
dFJlc3BvbnNlSGVhZGVyKHh4eC1teXRlc3QtaGVhZGVyYWJjKSByZXR1cm5lZCBudWxsLgorUEFT
U0VEIDQgbnVsbDogZ2V0UmVzcG9uc2VIZWFkZXIobnVsbCkgcmV0dXJuZWQgbnVsbC4KK1BBU1NF
RCA0IENvbnRlbnQtVHlwZTo6IGdldFJlc3BvbnNlSGVhZGVyKENvbnRlbnQtVHlwZTopIHJldHVy
bmVkIG51bGwuCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
Z2V0UmVzcG9uc2VIZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLmh0bWwJKHJldmlzaW9uIDQ4NDQy
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhl
YWRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDEzICszLDI0IEBACiAgICAgPHRpdGxlPkNo
ZWNrIGV4Y2VwdGlvbiB0aHJvd24gYnkgZ2V0UmVwb25zZUhlYWRlciA8L3RpdGxlPgogPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCit2YXIgc2F2ZWRIZWFkZXIgPSBudWxsOwordmFy
IGhlYWRlck5hbWU9IkNvbnRlbnQtVHlwZSI7Cit2YXIgbnVsbFRlc3RzID0gIG5ldyBBcnJheSgi
U2VULUNPb0tpZSIsICJzRXQtY29Pa0lFMiIsIAorICAgICJ4eHgtbXl0ZXN0LWhlYWRlcmFiYyIs
IG51bGwsICJDb250ZW50LVR5cGU6Iik7CisKIGZ1bmN0aW9uIGxvZyAobXNnKSB7CiAgICAgdmFy
IHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CiAgICAgcGFyYWdyYXBo
LmlubmVySFRNTD1tc2cucmVwbGFjZSgvXG4vZ20sIjxicj4iKTsKICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7CiB9CiAKLXZhciB4
aHI7CitmdW5jdGlvbiBsb2c0KHN0YXR1cywgclN0YXRlLCBzdWJTdGF0ZSwgbXNnKSB7CisgICAg
bG9nKHN0YXR1cyArICIgIiArIHJTdGF0ZSArICIgIiArIHN1YlN0YXRlICsgIjogIiArIG1zZyk7
Cit9CisKK2Z1bmN0aW9uIGxvZzMoc3RhdHVzLCByU3RhdGUsIG1zZykgeworICAgIGxvZzQoc3Rh
dHVzLCByU3RhdGUsIGhlYWRlck5hbWUsIG1zZyk7Cit9CiAKIGlmICh3aW5kb3cuWE1MSHR0cFJl
cXVlc3QpIHsKICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKQEAgLTIxLDggKzMyLDYg
QEAgaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkgewogICAgIH0KIH0KIAotdmFyIHNhdmVkSGVh
ZGVyID0gbnVsbDsKLXZhciBoZWFkZXJOYW1lPSJDb250ZW50LVR5cGUiOwogeGhyLm9ucmVhZHlz
dGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgIHZhciByU3RhdGUgPSB0aGlzLnJlYWR5U3Rh
dGU7CiAgICAgLy8gV2UgZXhwZWN0IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBmb3Ig
cmVhZHlTdGF0ZSA8IDIKQEAgLTMwLDM2ICszOSw0NyBAQCB4aHIub25yZWFkeXN0YXRlY2hhbmdl
ID0gZnVuY3Rpb24oKSB7CiAgICAgdHJ5IHsKICAgICAgICAgdmFyIGhlYWRlciA9IHRoaXMuZ2V0
UmVzcG9uc2VIZWFkZXIoaGVhZGVyTmFtZSk7CiAgICAgICAgIGlmIChyU3RhdGUgIT0gdGhpcy5y
ZWFkeVN0YXRlKQotICAgICAgICAgICAgbG9nKCJVTkNFUlRBSU4gIiArIHJTdGF0ZSArICI6IHJl
YWR5U3RhdGUgY2hhbmdlZCB3aGlsZSBnZXR0aW5nIHRoZSBoZWFkZXIuIik7CisgICAgICAgICAg
ICBsb2czKCJVTkNFUlRBSU4iLCByU3RhdGUsICJyZWFkeVN0YXRlIGNoYW5nZWQgd2hpbGUgZ2V0
dGluZyB0aGUgaGVhZGVyLiIpOwogICAgICAgICBpZiAoclN0YXRlIDwgMikgewotICAgICAgICAg
ICAgbG9nKCJGQUlMRUQgIiArIHJTdGF0ZSArICI6ICIgKyBoZWFkZXJOYW1lICsgIj0iICsgaGVh
ZGVyKTsKLSAgICAgICAgfSBlbHNlIGlmIChoZWFkZXIpCisgICAgICAgICAgICBsb2czKCJGQUlM
RUQiLCByU3RhdGUsIGhlYWRlck5hbWUgKyAiPSIgKyBoZWFkZXIpOworICAgICAgICB9IGVsc2Ug
aWYgKGhlYWRlcikgewogICAgICAgICAgICAgaWYgKHNhdmVkSGVhZGVyKQogICAgICAgICAgICAg
ICAgIGlmIChzYXZlZEhlYWRlciAhPSBoZWFkZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9n
KCJGQUlMRUQgIiArIHJTdGF0ZSArCi0iOiBDb250ZW50LVR5cGUgY2hhbmdlZCBhZnRlciBpdCB3
YXMgZmlyc3QgcmV0dXJuZWQuIFByZXZpb3VzICIgKyBoZWFkZXJOYW1lCi0rICI9IiArIHNhdmVk
SGVhZGVyICsgIjsgTmV3ICIgKyBoZWFkZXJOYW1lICsgIj0iICsgaGVhZGVyICsgIi4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgbG9nMygiRkFJTEVEIiwgclN0YXRlLGhlYWRlck5hbWUgKyAiIGNo
YW5nZWQgYWZ0ZXIgaXQgd2FzIGZpcnN0IHJldHVybmVkLiBQcmV2aW91cyAiICsgaGVhZGVyTmFt
ZQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiPSIgKyBzYXZlZEhlYWRlciArICI7IE5ldyAi
ICsgaGVhZGVyTmFtZSArICI9IiArIGhlYWRlciArICIuIik7CiAgICAgICAgICAgICAgICAgc2F2
ZWRIZWFkZXIgPSBoZWFkZXI7CiAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICBl
bHNlIC8vc2F2ZWRIZWFkZXIgPT0gaGVhZGVyIGhlcmU7IG5vIG5lZWQgdG8gcmVwcmludCBoZWFk
ZXIKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJQQVNTRUQgIiArIHJTdGF0ZSk7CisgICAgICAg
ICAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwgaGVhZGVyTmFtZSk7CiAgICAgICAg
ICAgICBlbHNlIHsvL2ZpcnN0IGhlYWRlciB2YWx1ZSByZXRyaWV2ZWQKICAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogLy9kbyBub3QgcHJpbnQgdGhlIGhl
YWRlcidzIHZhbHVlIGZvciBhdXRvbWF0ZWQgdGVzdHMgdG8gYXZvaWQgZmFsc2UgZmFpbHVyZXMu
Ci0gICAgICAgICAgICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUgKwotIjogZ2V0UmVz
cG9uc2VIZWFkZXIoIiArIGhlYWRlck5hbWUgKyAiKSByZXR1cm5lZCBhIHZhbHVlLiIpOworICAg
ICAgICAgICAgICAgICAgICBsb2czKCJQQVNTRUQiLCByU3RhdGUsICJSZXNwb25zZUhlYWRlcigi
ICsgaGVhZGVyTmFtZSArICIpIHJldHVybmVkIGEgdmFsdWUuIik7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlICsKLSI6IGdl
dFJlc3BvbnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQ6ICIgKyBoZWFkZXIg
KyAiLiIpOworICAgICAgICAgICAgICAgICAgICBsb2czKCJQQVNTRUQiLCByU3RhdGUsICJnZXRS
ZXNwb25zZUhlYWRlcigiICsgaGVhZGVyTmFtZSArICIpIHJldHVybmVkOiAiICsgaGVhZGVyICsg
Ii4iKTsKICAgICAgICAgICAgICAgICBzYXZlZEhlYWRlciA9IGhlYWRlcjsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPG51bGxUZXN0cy5sZW5ndGg7KytpKSB7Cisg
ICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IHRoaXMu
Z2V0UmVzcG9uc2VIZWFkZXIobnVsbFRlc3RzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHN0ciA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nNCgiUEFTU0VEIiwgclN0
YXRlLCBudWxsVGVzdHNbaV0sICJnZXRSZXNwb25zZUhlYWRlcigiICsgbnVsbFRlc3RzW2ldICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSByZXR1cm5lZCBudWxsLiIpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBsb2c0KCJGQUlMRUQi
LCByU3RhdGUsIG51bGxUZXN0c1tpXSwgImdldFJlc3BvbnNlSGVhZGVyKCIgKyBudWxsVGVzdHNb
aV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIHJldHVybmVkIFwiIiArIHN0ciAr
ICJcIiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgICAg
ICBsb2c0KCJGQUlMRUQiLCByU3RhdGUsIG51bGxUZXN0c1tpXSwgImdldFJlc3BvbnNlSGVhZGVy
KCIgKyBudWxsVGVzdHNbaV0gKyAiKSB0aHJldyBleGNlcHRpb246IiArIGUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBlbHNlIC8vaGVhZGVy
IGlzIG51bGwKLSAgICAgICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUgKyAiOiBudWxsICIg
KyBoZWFkZXJOYW1lICsgIiByZXR1cm5lZC4iKTsKKyAgICAgICAgICAgIGxvZzMoIkZBSUxFRCIs
IHJTdGF0ZSwgIm51bGwgIiArIGhlYWRlck5hbWUgKyAiIHJldHVybmVkLiIpOwogICAgIH0gY2F0
Y2ggKGUpIHsKICAgICAgICAgaWYgKHJTdGF0ZSA8IDIpCi0gICAgICAgICAgICBsb2coIlBBU1NF
RCAiICsgclN0YXRlKTsKKyAgICAgICAgICAgIGxvZzMoIlBBU1NFRCIsIHJTdGF0ZSwgImV4Y2Vw
dGlvbiB0aHJvd24iKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJGQUlMRUQgIiAr
IHJTdGF0ZSArICI6IEVYQ0VQVElPTiBUSFJPV046ICIgKyBlLm1lc3NhZ2UgKyAiLiIpOworICAg
ICAgICAgICAgbG9nMygiRkFJTEVEIiwgclN0YXRlLCAiZXhjZXB0aW9uIHRocm93bjogIiArIGUu
bWVzc2FnZSArICIuIik7CiAgICAgfQogICAgIGlmICgoclN0YXRlID09IDQpICYmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpKQogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOwpAQCAtNzQsMTUgKzk0LDE1IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
Ly8gVGVzdCBmb3IgcmVhZHlTdGF0ZSA9IDAKICAgICB0cnkgewogICAgICAgICB2YXIgaGVhZGVy
ID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKGhlYWRlck5hbWUpOwotICAgICAgICBsb2coIkZBSUxF
RCAiICsgeGhyLnJlYWR5U3RhdGUgKyAiOiAiICsgaGVhZGVyTmFtZSArICI9IiArIGhlYWRlciAr
ICIuIik7CisgICAgICAgIGxvZzMoIkZBSUxFRCIsIHhoci5yZWFkeVN0YXRlLCBoZWFkZXJOYW1l
ICsgIj0iICsgaGVhZGVyICsgIi4iKTsKICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGxvZygi
UEFTU0VEICIgKyB4aHIucmVhZHlTdGF0ZSk7CisgICAgICAgIGxvZzMoIlBBU1NFRCIsIHhoci5y
ZWFkeVN0YXRlLCAiZXhjZXB0aW9uIHRocm93bi4iKTsKICAgICB9CiAgICAgdHJ5IHsKICAgICAg
ICAgeGhyLm9wZW4oIkdFVCIsInJlc291cmNlcy8xMjUxLmh0bWwiLCB0cnVlKTsKICAgICAgICAg
eGhyLnNlbmQobnVsbCk7CiAgICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIGxvZygiRkFJTEVEIG9w
ZW4vc2VuZDogRVhDRVBUSU9OIFRIUk9XTjogIiArIGUubWVzc2FnZSArIi4iKTsKKyAgICAgICAg
bG9nMygiRkFJTEVEIiwgIm9wZW4vc2VuZCIsICJleGNlcHRpb24gdGhyb3duOiAiICsgZS5tZXNz
YWdlICsiLiIpOwogICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0KQEAgLTk0
LDE1ICsxMTQsMjUgQEAgZnVuY3Rpb24gdGVzdCgpIHsKIDxwPlRlc3QgcGFnZSBmb3IgPGEgaHJl
Zj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYiPmJ1ZwogMTUz
NTY8L2E+CiBhbmQgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjkxMjEiPmJ1ZyAyOTEyMTwvYT48L3A+Ci08cD5Bc3NlcnRpb246IEludm9raW5nIGdldFJl
c3BvbnNlSGVhZGVyIG1ldGhvZCB3aGVuIHJlYWR5U3RhdGUgPj0gMgotKEhFQURFUlNfUkVDRUlW
RUQpIHNob3VsZCByZXR1cm4gYSBoZWFkZXIgdmFsdWUgaWYgdGhlIGhlYWRlciBleGlzdHMuPC9w
PgorPHA+QXNzZXJ0aW9uOiBJbnZva2luZyB0aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdo
ZW4gcmVhZHlTdGF0ZSA+PSAyCisoSEVBREVSU19SRUNFSVZFRCkgcmV0dXJucyBhIGhlYWRlciB2
YWx1ZSBpZiB0aGUgaGVhZGVyIGV4aXN0cy48L3A+Cis8cD5Bc3NlcnRpb246IEludm9raW5nIHRo
ZSBnZXRSZXNwb25zZUhlYWRlciBtZXRob2Qgd2l0aCB0aGUgcGFyYW1ldGVyCisgICAgc2F0aXNm
eWluZyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgY2F1c2VzIGdldFJlc3BvbnNlSGVhZGVyCisg
ICAgdG8gcmV0dXJuIG51bGw6Cis8bGk+MWEuIFRoZSBwYXJhbWV0ZXIgY2FzZS1pbnNlbnNpdGl2
ZWx5IG1hdGNoZXMgU2V0LUNvb2tpZTs8L2xpPgorPGxpPjFiLiBUaGUgcGFyYW1ldGVyIGNhc2Ut
aW5zZW5zaXRpdmVseSBtYXRjaGVzIFNldC1Db29raWUyOzwvbGk+Cis8bGk+Mi4gIFRoZSBwYXJh
bWV0ZXIgZG9lcyBub3QgbWF0Y2ggYW55IGhlYWRlciBpbiB0aGUgcmVzcG9uc2U7PC9saT4KKzxs
aT4zYS4gVGhlIHBhcmFtZXRlciBpcyBudWxsIChpdCBpcyBub3QgYSB2YWxpZCBoZWFkZXIgbmFt
ZSk7PC9saT4KKzxsaT4zYi4gVGhlIHBhcmFtZXRlciBpcyAiQ29udGVudC1UeXBlOiIgKGl0IGlz
IG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKS48L2xpPgorCiA8c2NyaXB0PgogICAgIGlmICghd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+SWYg
dGhlIHRlc3QgcGFzc2VzIG9uZSBzaG91bGQgc2VlIFwKLWJlbG93IHRoZSBydWxlciB0aGUgdGV4
dCBcInBhc3NlZFwiIGluIGFsbCBjYXBpdGFsIGxldHRlcnMsIDUgdGltZXMsIFwKLWZvbGxvd2Vk
IGVhY2ggdGltZSBieSBhIHNwYWNlIGFuZCB0aGUgcmVhZHlTdGF0ZSBudW1iZXIuPC9wPlxuXAot
PHA+UmVhZHlTdGF0ZW51bWJlcnMgc2hvdWxkIGJlIGluIGFzY2VuZGluZyBvcmRlciAwIHRvIDQu
PC9wPlxuXAotPHA+VGhlIHZhbHVlIG9mIHRoZSAiICsgaGVhZGVyTmFtZSArICIgaGVhZGVyIHNo
b3VsZCBhbHNvIGJlIHByaW50ZWQuPC9wPiIpOworYmVsb3cgdGhlIHJ1bGVyIHRoZSB0ZXh0IFwi
cGFzc2VkXCIgaW4gYWxsIGNhcGl0YWwgbGV0dGVycywgb25jZSBmb3IgZXZlcnkgcmVhZHkgc3Rh
dGUgJmx0OyAyLCBcCitmb2xsb3dlZCBlYWNoIHRpbWUgYnkgYSBzcGFjZSBhbmQgdGhlIHJlYWR5
U3RhdGUgbnVtYmVyIGFuZCA2IHRpbWVzIGZvciBldmVyeSByZWFkeSBzdGF0ZSA+PSAyLjwvcD5c
blwKKzxwPlJlYWR5U3RhdGUgbnVtYmVycyBzaG91bGQgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIDAg
dG8gNC48L3A+XG5cCis8cD5SZWFkeVN0YXRlIG51bWJlcnMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5
IGEgYmxhbmssIHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdGVzdGVkLCBjb2xvbiBhIHNwYWNlIGFu
ZCBhIG1lc3NhZ2UuPC9wPlwKKzxwPlRoZSB2YWx1ZSBvZiB0aGUgIiArIGhlYWRlck5hbWUgKyAi
IGhlYWRlciBzaG91bGQgIGJlIHByaW50ZWQgZm9yIHJlYWR5IHN0YXRlIDIuPC9wPiIpOwogPC9z
Y3JpcHQ+CiAgPGhyPgogIDxwPjxvbCBpZD1jb25zb2xlPjwvb2w+PC9wPgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVh
ZGVyLWdldFJlcXVlc3RIZWFkZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW52YWxpZEhlYWRl
ci1nZXRSZXF1ZXN0SGVhZGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDg0NDIpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFsaWRI
ZWFkZXItZ2V0UmVxdWVzdEhlYWRlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMCwwIEBACi1UZXN0IHBhZ2UgZm9yIHRoZSBidWcgMTUzNTYgOiBnZXRSZXNwb25zZUhlYWRl
ciBhbmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zCi0KLVBB
U1NFRCAzCi1QQVNTRUQgNAotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFsaWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRlci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtaW52YWxpZEhlYWRlci1nZXRSZXF1ZXN0SGVhZGVyLmh0bWwJKHJldmlzaW9u
IDQ4NDQyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw0NyArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAgIDx0aXRsZT5DaGVjayBiZWhh
dmlvdXIgd2hlbiByZXF1ZXN0aW9uZyBhbiBpbnZhbGlkIGhlYWRlciBpbiAgZ2V0UmVwb25zZUhl
YWRlciA8L3RpdGxlPgotPC9oZWFkPgotPGJvZHk+Ci0KLTxwPlRlc3QgcGFnZSBmb3IgdGhlIDxh
IGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Ij5idWcg
MTUzNTY8L2E+IDogZ2V0UmVzcG9uc2VIZWFkZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVycyBk
byBub3QgdGhyb3cgZXhjZXB0aW9uczwvcD4KLQotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0KLWZ1bmN0aW9uIGxvZyAobXNnKSB7Ci0gICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsK
LSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJy
IikpOwotfQotCi12YXIgeGhyOwotCi1pZiAod2luZG93LlhNTEh0dHBSZXF1ZXN0KSB7Ci0gICAg
eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci19IGVsc2UgewotICAgIHRyeSB7Ci0gICAgICAg
IHhociA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOwotICAgIH0gY2F0Y2gg
KGV4KSB7Ci0gICAgICAgIHhociA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRU
UCIpOwotICAgIH0KLX0KLQoteGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewot
ICAgIHZhciByU3RhdGUgPSB0aGlzLnJlYWR5U3RhdGU7Ci0gICAgaWYgKHJTdGF0ZSA+IDIpIHsK
LSAgICAgICAgLy8gV2UgZXhwZWN0IGFuIGVtcHR5IHN0cmluZyBvciBudWxsCi0gICAgICAgIHZh
ciBoZWFkZXIgPSB0aGlzLmdldFJlc3BvbnNlSGVhZGVyKCIoPD5AKSIpOwotICAgICAgICBpZiAo
aGVhZGVyID09ICIiKSB7Ci0gICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUpOwotICAg
ICAgICB9Ci0gICAgfQotfQoteGhyLm9wZW4oIkdFVCIsInJlc291cmNlcy8xMjUxLmh0bWwiLCB0
cnVlKTsKLXhoci5zZW5kKG51bGwpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>
<flag name="review"
          id="21094"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="21200"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40076</attachid>
            <date>2009-09-24 11:26:02 -0700</date>
            <delta_ts>2009-09-24 16:44:25 -0700</delta_ts>
            <desc>Fixed a problem in the getResonseHeader-expected.txt. The test should succeed now.</desc>
            <filename>patchFor29140-4.txt</filename>
            <type>text/plain</type>
            <size>16529</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMTcgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYktpdCByZXR1cm5zICIiIGluc3RlYWQgb2YgbnVsbCB3aGVuIGdldHRpbmcKKyAgICAgICAg
aW5leGlzdGVudCwgZm9yYmlkZGVuIG9yIGludmFsaWRseSBuYW1lZCBoZWFkZXJzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxNDAKKworICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6Z2V0UmVzcG9uc2VIZWFkZXIpOgorICAgICAgICBDaGFuZ2VkIHRvIHJldHVybiBudWxs
IGFzIGl0IHNob3VsZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCisKIDIwMDktMDktMjQgIFZpdGFs
eSBSZXBlc2hrbyAgPHZpdGFseXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDQ4
NzIxKQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MDksMjMgKzcwOSwxOSBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVh
ZGVyCiB7CiAgICAgaWYgKG1fc3RhdGUgPCBIRUFERVJTX1JFQ0VJVkVEKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIH0KIAotICAgIGlmICghaXNWYWxpZFRva2VuKG5hbWUpKQotICAgICAg
ICByZXR1cm4gIiI7Ci0KICAgICAvLyBTZWUgY29tbWVudCBpbiBnZXRBbGxSZXNwb25zZUhlYWRl
cnMgYWJvdmUuCiAgICAgaWYgKGlzU2V0Q29va2llSGVhZGVyKG5hbWUpICYmICFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291cmNlcygp
KSB7CiAgICAgICAgIHJlcG9ydFVuc2FmZVVzYWdlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
IlJlZnVzZWQgdG8gZ2V0IHVuc2FmZSBoZWFkZXIgXCIiICsgbmFtZSArICJcIiIpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKICAgICBpZiAo
IW1fc2FtZU9yaWdpblJlcXVlc3QgJiYgIWlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJX
aGl0ZWxpc3QobmFtZSkpIHsKICAgICAgICAgcmVwb3J0VW5zYWZlVXNhZ2Uoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCAiUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciBcIiIgKyBuYW1lICsg
IlwiIik7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KLQogICAgIHJldHVybiBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChuYW1lKTsKIH0KIApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNDg3MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0wOS0xNyAgQ2Fyb2wgU3phYm8gIDxjYXJv
bC5zemFib0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2ViS2l0IHJldHVybnMgIiIgaW5zdGVhZCBvZiBudWxsIHdoZW4gZ2V0dGlu
ZworICAgICAgICBpbmV4aXN0ZW50LCBmb3JiaWRkZW4gb3IgaW52YWxpZGx5IG5hbWVkIGhlYWRl
cnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE0
MAorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXQtZGFuZ2Vyb3VzLWhl
YWRlcnMuaHRtbDoKKyAgICAgICAgICBVcGRhdGVkIHRvIHRlc3QgZm9yIG51bGwgaW5zdGVhZCBv
ZiAiIgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9uc2VIZWFk
ZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0
UmVzcG9uc2VIZWFkZXIuaHRtbDoKKyAgICAgICAgICBFeHRlbmRlZCB0byBhbHNvIHRlc3QgZm9y
IGhlYWRlcnMgdGhhdCBzaG91bGQgcmV0dXJuIG51bGwuCisgICAgICAgICogaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFk
ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgICBnZXRSZXNwb25zZUhlYWRlci5odG1sIG5vdyBj
b3ZlcnMgdGhpcyBjYXNlIGFzIHdlbGwuCisKIDIwMDktMDktMjQgIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkocm9sbG91dCkKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0LWRhbmdlcm91cy1o
ZWFkZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9nZXQtZGFuZ2Vyb3VzLWhlYWRlcnMuaHRtbAkocmV2aXNpb24gNDg3MjEpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldC1kYW5nZXJvdXMtaGVhZGVy
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxMyArMTIsMTMgQEAKIAogICAgIHZhciByZXN1
bHQgPSAiUEFTUyI7CiAKLSAgICBpZiAocmVxLmdldFJlc3BvbnNlSGVhZGVyKCJTZXQtQ29va2ll
IikgIT0gIiIgJiYgcmVzdWx0ID09ICJQQVNTIikKKyAgICBpZiAocmVxLmdldFJlc3BvbnNlSGVh
ZGVyKCJTZXQtQ29va2llIikgIT0gbnVsbCAmJiByZXN1bHQgPT0gIlBBU1MiKQogICAgICAgICBy
ZXN1bHQgPSAiRkFJTDogU2F3IGEgU2V0LUNvb2tpZSBoZWFkZXIgd2l0aCBnZXRSZXNwb25zZUhl
YWRlci4iOwotICAgIGlmIChyZXEuZ2V0UmVzcG9uc2VIZWFkZXIoInNldC1jb29raWUiKSAhPSAi
IiAmJiByZXN1bHQgPT0gIlBBU1MiKQorICAgIGlmIChyZXEuZ2V0UmVzcG9uc2VIZWFkZXIoInNl
dC1jb29raWUiKSAhPSBudWxsICYmIHJlc3VsdCA9PSAiUEFTUyIpCiAgICAgICAgIHJlc3VsdCA9
ICJGQUlMOiBTYXcgYSBzZXQtY29va2llIGhlYWRlciB3aXRoIGdldFJlc3BvbnNlSGVhZGVyLiI7
Ci0gICAgaWYgKHJlcS5nZXRSZXNwb25zZUhlYWRlcigiU2V0LUNvb2tpZTIiKSAhPSAiIiAmJiBy
ZXN1bHQgPT0gIlBBU1MiKQorICAgIGlmIChyZXEuZ2V0UmVzcG9uc2VIZWFkZXIoIlNldC1Db29r
aWUyIikgIT0gbnVsbCAmJiByZXN1bHQgPT0gIlBBU1MiKQogICAgICAgICByZXN1bHQgPSAiRkFJ
TDogU2F3IGEgU2V0LUNvb2tpZTIgaGVhZGVyIHdpdGggZ2V0UmVzcG9uc2VIZWFkZXIuIjsKLSAg
ICBpZiAocmVxLmdldFJlc3BvbnNlSGVhZGVyKCJzZXQtY29va2llMiIpICE9ICIiICYmIHJlc3Vs
dCA9PSAiUEFTUyIpCisgICAgaWYgKHJlcS5nZXRSZXNwb25zZUhlYWRlcigic2V0LWNvb2tpZTIi
KSAhPSBudWxsICYmIHJlc3VsdCA9PSAiUEFTUyIpCiAgICAgICAgIHJlc3VsdCA9ICJGQUlMOiBT
YXcgYSBzZXQtY29va2llMiBoZWFkZXIgd2l0aCBnZXRSZXNwb25zZUhlYWRlci4iOwogCiAgICAg
aWYgKHJlcS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKS5tYXRjaCgvU2V0LUNvb2tpZS8pICYmIHJl
c3VsdCA9PSAiUEFTUyIpCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2dldFJlc3BvbnNlSGVhZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNDg3MjEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L2dldFJlc3BvbnNlSGVhZGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMCArMSwzOCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZ2V0IHVu
c2FmZSBoZWFkZXIgIlNlVC1DT29LaWUiCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNl
ZCB0byBnZXQgdW5zYWZlIGhlYWRlciAic0V0LWNvT2tJRTIiCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTogUmVmdXNlZCB0byBnZXQgdW5zYWZlIGhlYWRlciAiU2VULUNPb0tpZSIKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVyICJzRXQtY29Pa0lF
MiIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGdldCB1bnNhZmUgaGVhZGVy
ICJTZVQtQ09vS2llIgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZ2V0IHVu
c2FmZSBoZWFkZXIgInNFdC1jb09rSUUyIgogVGVzdCBwYWdlIGZvciBidWcgMTUzNTYgYW5kIGJ1
ZyAyOTEyMQogCi1Bc3NlcnRpb246IEludm9raW5nIGdldFJlc3BvbnNlSGVhZGVyIG1ldGhvZCB3
aGVuIHJlYWR5U3RhdGUgPj0gMiAoSEVBREVSU19SRUNFSVZFRCkgc2hvdWxkIHJldHVybiBhIGhl
YWRlciB2YWx1ZSBpZiB0aGUgaGVhZGVyIGV4aXN0cy4KK0Fzc2VydGlvbjogSW52b2tpbmcgdGhl
IGdldFJlc3BvbnNlSGVhZGVyIG1ldGhvZCB3aGVuIHJlYWR5U3RhdGUgPj0gMiAoSEVBREVSU19S
RUNFSVZFRCkgcmV0dXJucyBhIGhlYWRlciB2YWx1ZSBpZiB0aGUgaGVhZGVyIGV4aXN0cy4KIAot
UEFTU0VEIDAKLVBBU1NFRCAxCi1QQVNTRUQgMjogZ2V0UmVzcG9uc2VIZWFkZXIoQ29udGVudC1U
eXBlKSByZXR1cm5lZCBhIHZhbHVlLgotUEFTU0VEIDMKLVBBU1NFRCA0CitBc3NlcnRpb246IElu
dm9raW5nIHRoZSBnZXRSZXNwb25zZUhlYWRlciBtZXRob2Qgd2l0aCB0aGUgcGFyYW1ldGVyIHNh
dGlzZnlpbmcgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGNhdXNlcyBnZXRSZXNwb25zZUhlYWRl
ciB0byByZXR1cm4gbnVsbDoKKworMWEuIFRoZSBwYXJhbWV0ZXIgY2FzZS1pbnNlbnNpdGl2ZWx5
IG1hdGNoZXMgU2V0LUNvb2tpZTsKKzFiLiBUaGUgcGFyYW1ldGVyIGNhc2UtaW5zZW5zaXRpdmVs
eSBtYXRjaGVzIFNldC1Db29raWUyOworMi4gVGhlIHBhcmFtZXRlciBkb2VzIG5vdCBtYXRjaCBh
bnkgaGVhZGVyIGluIHRoZSByZXNwb25zZTsKKzNhLiBUaGUgcGFyYW1ldGVyIGlzIG51bGwgKGl0
IGlzIG5vdCBhIHZhbGlkIGhlYWRlciBuYW1lKTsKKzNiLiBUaGUgcGFyYW1ldGVyIGlzICJDb250
ZW50LVR5cGU6IiAoaXQgaXMgbm90IGEgdmFsaWQgaGVhZGVyIG5hbWUpLgorUEFTU0VEIDAgQ29u
dGVudC1UeXBlOiBleGNlcHRpb24gdGhyb3duLgorUEFTU0VEIDEgQ29udGVudC1UeXBlOiBleGNl
cHRpb24gdGhyb3duCitQQVNTRUQgMiBDb250ZW50LVR5cGU6IFJlc3BvbnNlSGVhZGVyKENvbnRl
bnQtVHlwZSkgcmV0dXJuZWQgYSB2YWx1ZS4KK1BBU1NFRCAyIFNlVC1DT29LaWU6IGdldFJlc3Bv
bnNlSGVhZGVyKFNlVC1DT29LaWUpIHJldHVybmVkIG51bGwuCitQQVNTRUQgMiBzRXQtY29Pa0lF
MjogZ2V0UmVzcG9uc2VIZWFkZXIoc0V0LWNvT2tJRTIpIHJldHVybmVkIG51bGwuCitQQVNTRUQg
MiB4eHgtbXl0ZXN0LWhlYWRlcmFiYzogZ2V0UmVzcG9uc2VIZWFkZXIoeHh4LW15dGVzdC1oZWFk
ZXJhYmMpIHJldHVybmVkIG51bGwuCitQQVNTRUQgMiBudWxsOiBnZXRSZXNwb25zZUhlYWRlcihu
dWxsKSByZXR1cm5lZCBudWxsLgorUEFTU0VEIDIgQ29udGVudC1UeXBlOjogZ2V0UmVzcG9uc2VI
ZWFkZXIoQ29udGVudC1UeXBlOikgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCAzIENvbnRlbnQtVHlw
ZTogQ29udGVudC1UeXBlCitQQVNTRUQgMyBTZVQtQ09vS2llOiBnZXRSZXNwb25zZUhlYWRlcihT
ZVQtQ09vS2llKSByZXR1cm5lZCBudWxsLgorUEFTU0VEIDMgc0V0LWNvT2tJRTI6IGdldFJlc3Bv
bnNlSGVhZGVyKHNFdC1jb09rSUUyKSByZXR1cm5lZCBudWxsLgorUEFTU0VEIDMgeHh4LW15dGVz
dC1oZWFkZXJhYmM6IGdldFJlc3BvbnNlSGVhZGVyKHh4eC1teXRlc3QtaGVhZGVyYWJjKSByZXR1
cm5lZCBudWxsLgorUEFTU0VEIDMgbnVsbDogZ2V0UmVzcG9uc2VIZWFkZXIobnVsbCkgcmV0dXJu
ZWQgbnVsbC4KK1BBU1NFRCAzIENvbnRlbnQtVHlwZTo6IGdldFJlc3BvbnNlSGVhZGVyKENvbnRl
bnQtVHlwZTopIHJldHVybmVkIG51bGwuCitQQVNTRUQgNCBDb250ZW50LVR5cGU6IENvbnRlbnQt
VHlwZQorUEFTU0VEIDQgU2VULUNPb0tpZTogZ2V0UmVzcG9uc2VIZWFkZXIoU2VULUNPb0tpZSkg
cmV0dXJuZWQgbnVsbC4KK1BBU1NFRCA0IHNFdC1jb09rSUUyOiBnZXRSZXNwb25zZUhlYWRlcihz
RXQtY29Pa0lFMikgcmV0dXJuZWQgbnVsbC4KK1BBU1NFRCA0IHh4eC1teXRlc3QtaGVhZGVyYWJj
OiBnZXRSZXNwb25zZUhlYWRlcih4eHgtbXl0ZXN0LWhlYWRlcmFiYykgcmV0dXJuZWQgbnVsbC4K
K1BBU1NFRCA0IG51bGw6IGdldFJlc3BvbnNlSGVhZGVyKG51bGwpIHJldHVybmVkIG51bGwuCitQ
QVNTRUQgNCBDb250ZW50LVR5cGU6OiBnZXRSZXNwb25zZUhlYWRlcihDb250ZW50LVR5cGU6KSBy
ZXR1cm5lZCBudWxsLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2dldFJlc3BvbnNlSGVhZGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9nZXRSZXNwb25zZUhlYWRlci5odG1sCShyZXZpc2lvbiA0
ODcyMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvZ2V0UmVzcG9u
c2VIZWFkZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxMyArMywyNCBAQAogICAgIDx0aXRs
ZT5DaGVjayBleGNlcHRpb24gdGhyb3duIGJ5IGdldFJlcG9uc2VIZWFkZXIgPC90aXRsZT4KIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIAordmFyIHNhdmVkSGVhZGVyID0gbnVsbDsK
K3ZhciBoZWFkZXJOYW1lPSJDb250ZW50LVR5cGUiOwordmFyIG51bGxUZXN0cyA9ICBuZXcgQXJy
YXkoIlNlVC1DT29LaWUiLCAic0V0LWNvT2tJRTIiLCAKKyAgICAieHh4LW15dGVzdC1oZWFkZXJh
YmMiLCBudWxsLCAiQ29udGVudC1UeXBlOiIpOworCiBmdW5jdGlvbiBsb2cgKG1zZykgewogICAg
IHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwogICAgIHBhcmFn
cmFwaC5pbm5lckhUTUw9bXNnLnJlcGxhY2UoL1xuL2dtLCI8YnI+Iik7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwogfQogCi12
YXIgeGhyOworZnVuY3Rpb24gbG9nNChzdGF0dXMsIHJTdGF0ZSwgc3ViU3RhdGUsIG1zZykgewor
ICAgIGxvZyhzdGF0dXMgKyAiICIgKyByU3RhdGUgKyAiICIgKyBzdWJTdGF0ZSArICI6ICIgKyBt
c2cpOworfQorCitmdW5jdGlvbiBsb2czKHN0YXR1cywgclN0YXRlLCBtc2cpIHsKKyAgICBsb2c0
KHN0YXR1cywgclN0YXRlLCBoZWFkZXJOYW1lLCBtc2cpOworfQogCiBpZiAod2luZG93LlhNTEh0
dHBSZXF1ZXN0KSB7CiAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CkBAIC0yMSw4ICsz
Miw2IEBAIGlmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpIHsKICAgICB9CiB9CiAKLXZhciBzYXZl
ZEhlYWRlciA9IG51bGw7Ci12YXIgaGVhZGVyTmFtZT0iQ29udGVudC1UeXBlIjsKIHhoci5vbnJl
YWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICB2YXIgclN0YXRlID0gdGhpcy5yZWFk
eVN0YXRlOwogICAgIC8vIFdlIGV4cGVjdCBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24g
Zm9yIHJlYWR5U3RhdGUgPCAyCkBAIC0zMCwzNiArMzksNDcgQEAgeGhyLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IGZ1bmN0aW9uKCkgewogICAgIHRyeSB7CiAgICAgICAgIHZhciBoZWFkZXIgPSB0aGlz
LmdldFJlc3BvbnNlSGVhZGVyKGhlYWRlck5hbWUpOwogICAgICAgICBpZiAoclN0YXRlICE9IHRo
aXMucmVhZHlTdGF0ZSkKLSAgICAgICAgICAgIGxvZygiVU5DRVJUQUlOICIgKyByU3RhdGUgKyAi
OiByZWFkeVN0YXRlIGNoYW5nZWQgd2hpbGUgZ2V0dGluZyB0aGUgaGVhZGVyLiIpOworICAgICAg
ICAgICAgbG9nMygiVU5DRVJUQUlOIiwgclN0YXRlLCAicmVhZHlTdGF0ZSBjaGFuZ2VkIHdoaWxl
IGdldHRpbmcgdGhlIGhlYWRlci4iKTsKICAgICAgICAgaWYgKHJTdGF0ZSA8IDIpIHsKLSAgICAg
ICAgICAgIGxvZygiRkFJTEVEICIgKyByU3RhdGUgKyAiOiAiICsgaGVhZGVyTmFtZSArICI9IiAr
IGhlYWRlcik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaGVhZGVyKQorICAgICAgICAgICAgbG9nMygi
RkFJTEVEIiwgclN0YXRlLCBoZWFkZXJOYW1lICsgIj0iICsgaGVhZGVyKTsKKyAgICAgICAgfSBl
bHNlIGlmIChoZWFkZXIpIHsKICAgICAgICAgICAgIGlmIChzYXZlZEhlYWRlcikKICAgICAgICAg
ICAgICAgICBpZiAoc2F2ZWRIZWFkZXIgIT0gaGVhZGVyKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGxvZygiRkFJTEVEICIgKyByU3RhdGUgKwotIjogQ29udGVudC1UeXBlIGNoYW5nZWQgYWZ0ZXIg
aXQgd2FzIGZpcnN0IHJldHVybmVkLiBQcmV2aW91cyAiICsgaGVhZGVyTmFtZQotKyAiPSIgKyBz
YXZlZEhlYWRlciArICI7IE5ldyAiICsgaGVhZGVyTmFtZSArICI9IiArIGhlYWRlciArICIuIik7
CisgICAgICAgICAgICAgICAgICAgIGxvZzMoIkZBSUxFRCIsIHJTdGF0ZSxoZWFkZXJOYW1lICsg
IiBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBmaXJzdCByZXR1cm5lZC4gUHJldmlvdXMgIiArIGhlYWRl
ck5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIj0iICsgc2F2ZWRIZWFkZXIgKyAiOyBO
ZXcgIiArIGhlYWRlck5hbWUgKyAiPSIgKyBoZWFkZXIgKyAiLiIpOwogICAgICAgICAgICAgICAg
IHNhdmVkSGVhZGVyID0gaGVhZGVyOwogICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAg
ICAgZWxzZSAvL3NhdmVkSGVhZGVyID09IGhlYWRlciBoZXJlOyBubyBuZWVkIHRvIHJlcHJpbnQg
aGVhZGVyCi0gICAgICAgICAgICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUpOworICAg
ICAgICAgICAgICAgICAgICBsb2czKCJQQVNTRUQiLCByU3RhdGUsIGhlYWRlck5hbWUpOwogICAg
ICAgICAgICAgZWxzZSB7Ly9maXJzdCBoZWFkZXIgdmFsdWUgcmV0cmlldmVkCiAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIC8vZG8gbm90IHByaW50IHRo
ZSBoZWFkZXIncyB2YWx1ZSBmb3IgYXV0b21hdGVkIHRlc3RzIHRvIGF2b2lkIGZhbHNlIGZhaWx1
cmVzLgotICAgICAgICAgICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlICsKLSI6IGdl
dFJlc3BvbnNlSGVhZGVyKCIgKyBoZWFkZXJOYW1lICsgIikgcmV0dXJuZWQgYSB2YWx1ZS4iKTsK
KyAgICAgICAgICAgICAgICAgICAgbG9nMygiUEFTU0VEIiwgclN0YXRlLCAiUmVzcG9uc2VIZWFk
ZXIoIiArIGhlYWRlck5hbWUgKyAiKSByZXR1cm5lZCBhIHZhbHVlLiIpOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJQQVNTRUQgIiArIHJTdGF0ZSArCi0i
OiBnZXRSZXNwb25zZUhlYWRlcigiICsgaGVhZGVyTmFtZSArICIpIHJldHVybmVkOiAiICsgaGVh
ZGVyICsgIi4iKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nMygiUEFTU0VEIiwgclN0YXRlLCAi
Z2V0UmVzcG9uc2VIZWFkZXIoIiArIGhlYWRlck5hbWUgKyAiKSByZXR1cm5lZDogIiArIGhlYWRl
ciArICIuIik7CiAgICAgICAgICAgICAgICAgc2F2ZWRIZWFkZXIgPSBoZWFkZXI7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxudWxsVGVzdHMubGVuZ3RoOysraSkg
eworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSB0
aGlzLmdldFJlc3BvbnNlSGVhZGVyKG51bGxUZXN0c1tpXSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzdHIgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZzQoIlBBU1NFRCIs
IHJTdGF0ZSwgbnVsbFRlc3RzW2ldLCAiZ2V0UmVzcG9uc2VIZWFkZXIoIiArIG51bGxUZXN0c1tp
XSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgcmV0dXJuZWQgbnVsbC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nNCgiRkFJ
TEVEIiwgclN0YXRlLCBudWxsVGVzdHNbaV0sICJnZXRSZXNwb25zZUhlYWRlcigiICsgbnVsbFRl
c3RzW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSByZXR1cm5lZCBcIiIgKyBz
dHIgKyAiXCIiKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbG9nNCgiRkFJTEVEIiwgclN0YXRlLCBudWxsVGVzdHNbaV0sICJnZXRSZXNwb25zZUhl
YWRlcigiICsgbnVsbFRlc3RzW2ldICsgIikgdGhyZXcgZXhjZXB0aW9uOiIgKyBlKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgZWxzZSAvL2hl
YWRlciBpcyBudWxsCi0gICAgICAgICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRlICsgIjogbnVs
bCAiICsgaGVhZGVyTmFtZSArICIgcmV0dXJuZWQuIik7CisgICAgICAgICAgICBsb2czKCJGQUlM
RUQiLCByU3RhdGUsICJudWxsICIgKyBoZWFkZXJOYW1lICsgIiByZXR1cm5lZC4iKTsKICAgICB9
IGNhdGNoIChlKSB7CiAgICAgICAgIGlmIChyU3RhdGUgPCAyKQotICAgICAgICAgICAgbG9nKCJQ
QVNTRUQgIiArIHJTdGF0ZSk7CisgICAgICAgICAgICBsb2czKCJQQVNTRUQiLCByU3RhdGUsICJl
eGNlcHRpb24gdGhyb3duIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTEVE
ICIgKyByU3RhdGUgKyAiOiBFWENFUFRJT04gVEhST1dOOiAiICsgZS5tZXNzYWdlICsgIi4iKTsK
KyAgICAgICAgICAgIGxvZzMoIkZBSUxFRCIsIHJTdGF0ZSwgImV4Y2VwdGlvbiB0aHJvd246ICIg
KyBlLm1lc3NhZ2UgKyAiLiIpOwogICAgIH0KICAgICBpZiAoKHJTdGF0ZSA9PSA0KSAmJiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSkKICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKQEAgLTc0LDE1ICs5NCwxNSBAQCBmdW5jdGlvbiB0ZXN0KCkgewog
ICAgIC8vIFRlc3QgZm9yIHJlYWR5U3RhdGUgPSAwCiAgICAgdHJ5IHsKICAgICAgICAgdmFyIGhl
YWRlciA9IHhoci5nZXRSZXNwb25zZUhlYWRlcihoZWFkZXJOYW1lKTsKLSAgICAgICAgbG9nKCJG
QUlMRUQgIiArIHhoci5yZWFkeVN0YXRlICsgIjogIiArIGhlYWRlck5hbWUgKyAiPSIgKyBoZWFk
ZXIgKyAiLiIpOworICAgICAgICBsb2czKCJGQUlMRUQiLCB4aHIucmVhZHlTdGF0ZSwgaGVhZGVy
TmFtZSArICI9IiArIGhlYWRlciArICIuIik7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBs
b2coIlBBU1NFRCAiICsgeGhyLnJlYWR5U3RhdGUpOworICAgICAgICBsb2czKCJQQVNTRUQiLCB4
aHIucmVhZHlTdGF0ZSwgImV4Y2VwdGlvbiB0aHJvd24uIik7CiAgICAgfQogICAgIHRyeSB7CiAg
ICAgICAgIHhoci5vcGVuKCJHRVQiLCJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1ZSk7CiAgICAg
ICAgIHhoci5zZW5kKG51bGwpOwogICAgIH0gY2F0Y2goZSkgewotICAgICAgICBsb2coIkZBSUxF
RCBvcGVuL3NlbmQ6IEVYQ0VQVElPTiBUSFJPV046ICIgKyBlLm1lc3NhZ2UgKyIuIik7CisgICAg
ICAgIGxvZzMoIkZBSUxFRCIsICJvcGVuL3NlbmQiLCAiZXhjZXB0aW9uIHRocm93bjogIiArIGUu
bWVzc2FnZSArIi4iKTsKICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICB9CkBA
IC05NCwxNSArMTE0LDI1IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiA8cD5UZXN0IHBhZ2UgZm9yIDxh
IGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Ij5idWcK
IDE1MzU2PC9hPgogYW5kIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI5MTIxIj5idWcgMjkxMjE8L2E+PC9wPgotPHA+QXNzZXJ0aW9uOiBJbnZva2luZyBn
ZXRSZXNwb25zZUhlYWRlciBtZXRob2Qgd2hlbiByZWFkeVN0YXRlID49IDIKLShIRUFERVJTX1JF
Q0VJVkVEKSBzaG91bGQgcmV0dXJuIGEgaGVhZGVyIHZhbHVlIGlmIHRoZSBoZWFkZXIgZXhpc3Rz
LjwvcD4KKzxwPkFzc2VydGlvbjogSW52b2tpbmcgdGhlIGdldFJlc3BvbnNlSGVhZGVyIG1ldGhv
ZCB3aGVuIHJlYWR5U3RhdGUgPj0gMgorKEhFQURFUlNfUkVDRUlWRUQpIHJldHVybnMgYSBoZWFk
ZXIgdmFsdWUgaWYgdGhlIGhlYWRlciBleGlzdHMuPC9wPgorPHA+QXNzZXJ0aW9uOiBJbnZva2lu
ZyB0aGUgZ2V0UmVzcG9uc2VIZWFkZXIgbWV0aG9kIHdpdGggdGhlIHBhcmFtZXRlcgorICAgIHNh
dGlzZnlpbmcgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGNhdXNlcyBnZXRSZXNwb25zZUhlYWRl
cgorICAgIHRvIHJldHVybiBudWxsOgorPGxpPjFhLiBUaGUgcGFyYW1ldGVyIGNhc2UtaW5zZW5z
aXRpdmVseSBtYXRjaGVzIFNldC1Db29raWU7PC9saT4KKzxsaT4xYi4gVGhlIHBhcmFtZXRlciBj
YXNlLWluc2Vuc2l0aXZlbHkgbWF0Y2hlcyBTZXQtQ29va2llMjs8L2xpPgorPGxpPjIuICBUaGUg
cGFyYW1ldGVyIGRvZXMgbm90IG1hdGNoIGFueSBoZWFkZXIgaW4gdGhlIHJlc3BvbnNlOzwvbGk+
Cis8bGk+M2EuIFRoZSBwYXJhbWV0ZXIgaXMgbnVsbCAoaXQgaXMgbm90IGEgdmFsaWQgaGVhZGVy
IG5hbWUpOzwvbGk+Cis8bGk+M2IuIFRoZSBwYXJhbWV0ZXIgaXMgIkNvbnRlbnQtVHlwZToiIChp
dCBpcyBub3QgYSB2YWxpZCBoZWFkZXIgbmFtZSkuPC9saT4KKwogPHNjcmlwdD4KICAgICBpZiAo
IXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxw
PklmIHRoZSB0ZXN0IHBhc3NlcyBvbmUgc2hvdWxkIHNlZSBcCi1iZWxvdyB0aGUgcnVsZXIgdGhl
IHRleHQgXCJwYXNzZWRcIiBpbiBhbGwgY2FwaXRhbCBsZXR0ZXJzLCA1IHRpbWVzLCBcCi1mb2xs
b3dlZCBlYWNoIHRpbWUgYnkgYSBzcGFjZSBhbmQgdGhlIHJlYWR5U3RhdGUgbnVtYmVyLjwvcD5c
blwKLTxwPlJlYWR5U3RhdGVudW1iZXJzIHNob3VsZCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgMCB0
byA0LjwvcD5cblwKLTxwPlRoZSB2YWx1ZSBvZiB0aGUgIiArIGhlYWRlck5hbWUgKyAiIGhlYWRl
ciBzaG91bGQgYWxzbyBiZSBwcmludGVkLjwvcD4iKTsKK2JlbG93IHRoZSBydWxlciB0aGUgdGV4
dCBcInBhc3NlZFwiIGluIGFsbCBjYXBpdGFsIGxldHRlcnMsIG9uY2UgZm9yIGV2ZXJ5IHJlYWR5
IHN0YXRlICZsdDsgMiwgXAorZm9sbG93ZWQgZWFjaCB0aW1lIGJ5IGEgc3BhY2UgYW5kIHRoZSBy
ZWFkeVN0YXRlIG51bWJlciBhbmQgNiB0aW1lcyBmb3IgZXZlcnkgcmVhZHkgc3RhdGUgPj0gMi48
L3A+XG5cCis8cD5SZWFkeVN0YXRlIG51bWJlcnMgc2hvdWxkIGJlIGluIGFzY2VuZGluZyBvcmRl
ciAwIHRvIDQuPC9wPlxuXAorPHA+UmVhZHlTdGF0ZSBudW1iZXJzIHNob3VsZCBiZSBmb2xsb3dl
ZCBieSBhIGJsYW5rLCB0aGUgbmFtZSBvZiB0aGUgaGVhZGVyIHRlc3RlZCwgY29sb24gYSBzcGFj
ZSBhbmQgYSBtZXNzYWdlLjwvcD5cCis8cD5UaGUgdmFsdWUgb2YgdGhlICIgKyBoZWFkZXJOYW1l
ICsgIiBoZWFkZXIgc2hvdWxkICBiZSBwcmludGVkIGZvciByZWFkeSBzdGF0ZSAyLjwvcD4iKTsK
IDwvc2NyaXB0PgogIDxocj4KICA8cD48b2wgaWQ9Y29uc29sZT48L29sPjwvcD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW52YWxp
ZEhlYWRlci1nZXRSZXF1ZXN0SGVhZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFsaWRI
ZWFkZXItZ2V0UmVxdWVzdEhlYWRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ4NzIxKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZh
bGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzAsMCBAQAotVGVzdCBwYWdlIGZvciB0aGUgYnVnIDE1MzU2IDogZ2V0UmVzcG9uc2VI
ZWFkZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVycyBkbyBub3QgdGhyb3cgZXhjZXB0aW9ucwot
Ci1QQVNTRUQgMwotUEFTU0VEIDQKLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LWludmFsaWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRlci5odG1sCShyZXZp
c2lvbiA0ODcyMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtaW52YWxpZEhlYWRlci1nZXRSZXF1ZXN0SGVhZGVyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNDcgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgICA8dGl0bGU+Q2hlY2sg
YmVoYXZpb3VyIHdoZW4gcmVxdWVzdGlvbmcgYW4gaW52YWxpZCBoZWFkZXIgaW4gIGdldFJlcG9u
c2VIZWFkZXIgPC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotCi08cD5UZXN0IHBhZ2UgZm9yIHRo
ZSA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NiI+
YnVnIDE1MzU2PC9hPiA6IGdldFJlc3BvbnNlSGVhZGVyIGFuZCBnZXRBbGxSZXNwb25zZUhlYWRl
cnMgZG8gbm90IHRocm93IGV4Y2VwdGlvbnM8L3A+Ci0KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi1mdW5jdGlvbiBsb2cgKG1zZykgewot
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNn
KSk7Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJiciIpKTsKLX0KLQotdmFyIHhocjsKLQotaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkgewot
ICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotfSBlbHNlIHsKLSAgICB0cnkgewotICAg
ICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAiKTsKLSAgICB9IGNh
dGNoIChleCkgewotICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhN
TEhUVFAiKTsKLSAgICB9Ci19Ci0KLXhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigp
IHsKLSAgICB2YXIgclN0YXRlID0gdGhpcy5yZWFkeVN0YXRlOwotICAgIGlmIChyU3RhdGUgPiAy
KSB7Ci0gICAgICAgIC8vIFdlIGV4cGVjdCBhbiBlbXB0eSBzdHJpbmcgb3IgbnVsbAotICAgICAg
ICB2YXIgaGVhZGVyID0gdGhpcy5nZXRSZXNwb25zZUhlYWRlcigiKDw+QCkiKTsKLSAgICAgICAg
aWYgKGhlYWRlciA9PSAiIikgewotICAgICAgICAgICAgbG9nKCJQQVNTRUQgIiArIHJTdGF0ZSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRlKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLXhoci5vcGVuKCJHRVQiLCJyZXNvdXJjZXMvMTI1MS5odG1s
IiwgdHJ1ZSk7Ci14aHIuc2VuZChudWxsKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>