<?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>62256</bug_id>
          
          <creation_ts>2011-06-07 18:36:43 -0700</creation_ts>
          <short_desc>webkitpy: clean up code prior to functional changes for server startup/shutdown</short_desc>
          <delta_ts>2011-06-22 11:04:05 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>62829</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>62251</dependson>
          <blocked>59993</blocked>
    
    <blocked>62180</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416998</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-07 18:36:43 -0700</bug_when>
    <thetext>webkitpy: clean up code prior to functional changes for server startup/shutdown</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417002</commentid>
    <comment_count>1</comment_count>
      <attachid>96351</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-07 18:42:25 -0700</bug_when>
    <thetext>Created attachment 96351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417013</commentid>
    <comment_count>2</comment_count>
      <attachid>96354</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-07 19:13:19 -0700</bug_when>
    <thetext>Created attachment 96354
ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417023</commentid>
    <comment_count>3</comment_count>
      <attachid>96357</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-07 19:31:08 -0700</bug_when>
    <thetext>Created attachment 96357
add missing ServerError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418370</commentid>
    <comment_count>4</comment_count>
      <attachid>96357</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-06-09 16:04:13 -0700</bug_when>
    <thetext>Comment on attachment 96357
add missing ServerError

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

Looks fine in general.  Just a few small questions.

&gt; Tools/Scripts/webkitpy/layout_tests/port/apache_http_server.py:44
&gt; +    name = &apos;apache&apos;

Nit: I would give this a ALL_CAPS name since it&apos;s a static constant.

&gt; Tools/Scripts/webkitpy/layout_tests/port/http_server.py:44
&gt; +    name = &apos;lighttpd&apos;

Same here.  Maybe SERVER_NAME or something?

&gt; Tools/Scripts/webkitpy/layout_tests/port/http_server_base.py:48
&gt; +    pid_file = None

Should this be in __init__?  It&apos;s not clear to me what makes it different from self._process.

&gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:40
&gt;  import http_server
&gt; +import http_server_base

Should we switch these to full imports while we&apos;re here?

&gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:201
&gt; +        if self.pid_file:

Do we need this check?  It looks like self.pid_file should always be set in __init__.

&gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:211
&gt; +        elif self.pid_file:

Same question as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418428</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-09 17:38:58 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 96357 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96357&amp;action=review
&gt; 
&gt; Looks fine in general.  Just a few small questions.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/apache_http_server.py:44
&gt; &gt; +    name = &apos;apache&apos;
&gt; 
&gt; Nit: I would give this a ALL_CAPS name since it&apos;s a static constant.
&gt; 

It&apos;s not a static constant in all of the subclasses; in websocket_server.py it is possible for it to be overridden per-object if we&apos;re running the TLS version. 

The reason is it declared where it is is because it&apos;s effectively a readonly property after initialization. I can move it into the __init__ call if you think that would make things clearer.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/http_server.py:44
&gt; &gt; +    name = &apos;lighttpd&apos;
&gt; 
&gt; Same here.  Maybe SERVER_NAME or something?
&gt;

As above.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/http_server_base.py:48
&gt; &gt; +    pid_file = None
&gt; 
&gt; Should this be in __init__?  It&apos;s not clear to me what makes it different from self._process.
&gt; 

pid_file will eventually be the path of the file containing the current running process ID. It is also a readonly public property, but I can move it into init as well

self._process is the actual process object returned from executive/subprocess. The pid_file object is only really used in the websocket implementation but eventually will be used everywhere, to be consistent.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:40
&gt; &gt;  import http_server
&gt; &gt; +import http_server_base
&gt; 
&gt; Should we switch these to full imports while we&apos;re here?
&gt; 

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:201
&gt; &gt; +        if self.pid_file:
&gt; 
&gt; Do we need this check?  It looks like self.pid_file should always be set in __init__.
&gt;

You&apos;ll notice that the default value of pidfile in the __init__ is None, so, yes, we still need it.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:211
&gt; &gt; +        elif self.pid_file:
&gt; 
&gt; Same question as above.

Same answer :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418435</commentid>
    <comment_count>6</comment_count>
      <attachid>96675</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-09 17:43:14 -0700</bug_when>
    <thetext>Created attachment 96675
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418739</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-06-10 09:41:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 96357 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96357&amp;action=review
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/apache_http_server.py:44
&gt; &gt; &gt; +    name = &apos;apache&apos;
&gt; &gt; 
&gt; &gt; Nit: I would give this a ALL_CAPS name since it&apos;s a static constant.
&gt; 
&gt; It&apos;s not a static constant in all of the subclasses; in websocket_server.py it is possible for it to be overridden per-object if we&apos;re running the TLS version.
&gt; The reason is it declared where it is is because it&apos;s effectively a readonly property after initialization. I can move it into the __init__ call if you think that would make things clearer.

It is a static constant.  In websocket_server.py, you&apos;re setting self.name which is not the same as PyWebSocket.name.  It sounds like it should be moved into __init__.

&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/http_server_base.py:48
&gt; &gt; &gt; +    pid_file = None
&gt; &gt; 
&gt; &gt; Should this be in __init__?  It&apos;s not clear to me what makes it different from self._process.
&gt; &gt; 
&gt; 
&gt; pid_file will eventually be the path of the file containing the current running process ID. It is also a readonly public property, but I can move it into init as well

It sounds like pid_file should also be moved into __init__ with an accessor method to make it read only.

&gt; self._process is the actual process object returned from executive/subprocess. The pid_file object is only really used in the websocket implementation but eventually will be used everywhere, to be consistent.

Sorry, I was unclear.  I meant I didn&apos;t understand why _process was in __init__, but pid_file wasn&apos;t.  They have the same lifetime so it seemed like they should be initialized in the same place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419141</commentid>
    <comment_count>8</comment_count>
      <attachid>96840</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-10 20:39:10 -0700</bug_when>
    <thetext>Created attachment 96840
update w/ more review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419610</commentid>
    <comment_count>9</comment_count>
      <attachid>96840</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-06-13 09:54:24 -0700</bug_when>
    <thetext>Comment on attachment 96840
update w/ more review feedback

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

&gt; Tools/ChangeLog:12
&gt; +        removing unused code paths and functions, using &apos;name&apos; and
&gt; +        &apos;pid_file&apos; as public properties on the server objects, and using

Nit: Please update the part about &apos;name&apos; and &apos;pid_file&apos; being public properties.

&gt; Tools/Scripts/webkitpy/layout_tests/port/apache_http_server.py:44
&gt;  class LayoutTestApacheHttpd(http_server_base.HttpServerBase):
&gt; +    name = &apos;apache&apos;

This is no longer needed, right?

&gt; Tools/Scripts/webkitpy/layout_tests/port/http_server.py:91
&gt; +            raise http_server_base.ServerError(&apos;Lighttpd already running&apos;)

Nit: Should this use self._name?

&gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:200
&gt; +        if self.pid_file:
&gt; +            self._filesystem.write_text_file(self.pid_file, &quot;%d&quot; % self._process.pid)

This is now self._pid_file, right?

&gt; Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py:210
&gt; +        elif self.pid_file:
&gt; +            pid = int(self._filesystem.read_text_file(self.pid_file))

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419776</commentid>
    <comment_count>10</comment_count>
      <attachid>96990</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-13 12:32:56 -0700</bug_when>
    <thetext>Created attachment 96990
fix more typos found by tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424215</commentid>
    <comment_count>11</comment_count>
      <attachid>96990</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-20 20:16:39 -0700</bug_when>
    <thetext>Comment on attachment 96990
fix more typos found by tony

clearing review flag, this fix won&apos;t work as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425378</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-22 11:04:05 -0700</bug_when>
    <thetext>finally fixed in bug 62829.

*** This bug has been marked as a duplicate of bug 62829 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96351</attachid>
            <date>2011-06-07 18:42:25 -0700</date>
            <delta_ts>2011-06-07 19:13:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62256-20110607184224.patch</filename>
            <type>text/plain</type>
            <size>19024</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyODgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MmUzZDIzYzk5MzIyZTZiYjk2OTdiMzAyNTZkNDliMmVh
YWJiYTY4Li41ODFlNGI0NzQ5MzA2ZjZlZGE1NjJjMGFjZDJmYjdiOTIyYWQ3MDM5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjYg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICB3ZWJr
aXRweTogY2xlYW4gdXAgY29kZSBwcmlvciB0byBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIHNlcnZl
ciBzdGFydHVwL3NodXRkb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MjI1NgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBhIGJ1bmNoIG9mIG1p
bm9yIGNsZWFudXAgb2YgdGhlIGNvZGUsIGJ1dCB0aGVyZQorICAgICAgICBzaG91bGQgYmUgbm8g
ZnVuY3Rpb25hbCBjaGFuZ2VzIGV4Y2VwdCB0aGF0IGFsbCBvZiB0aGUgbW9kdWxlcworICAgICAg
ICB3aWxsIG5vdyB1c2UgdGhlIHNhbWUgZXhjZXB0aW9uIHR5cGUuIE90aGVyIGNoYW5nZXMgaW5j
bHVkZQorICAgICAgICByZW1vdmluZyB1bnVzZWQgY29kZSBwYXRocyBhbmQgZnVuY3Rpb25zLCB1
c2luZyAnbmFtZScgYW5kCisgICAgICAgICdwaWRfZmlsZScgYXMgcHVibGljIHByb3BlcnRpZXMg
b24gdGhlIHNlcnZlciBvYmplY3RzLCBhbmQgdXNpbmcKKyAgICAgICAgdGhlIEZpbGVzeXN0ZW0g
b2JqZWN0IGluc3RlYWQgb2YgdGhlIGNvZGVjcywgdGVtcGZpbGUsIGFuZAorICAgICAgICBzaHV0
aWxzIG1vZHVsZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHk6CisKKzIw
MTEtMDYtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgd2Via2l0cHk6IGFkZCBpbnRl
Z3JhdGlvbiB0ZXN0cyBmb3IgbmV3LXJ1bi13ZWJraXQtaHR0cGQsIHN0b3AgY2FsbGluZyBzaHV0
X2Rvd25faHR0cF9zZXJ2ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyMjUxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKaW5kZXggMmNjNGE1
ZThlOWU4YWE2NGFiYzc1NWExY2QwMjVlOTIyZTU1MDc5Ny4uZTA4NmRlMGMxYTA1YThhNTc1ZjNj
ODBhOTRjYWU2ZjRkZjAwNjZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTMw
LDE0ICszMCw5IEBACiAiIiJBIGNsYXNzIHRvIHN0YXJ0L3N0b3AgdGhlIGFwYWNoZSBodHRwIHNl
cnZlciB1c2VkIGJ5IGxheW91dCB0ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3B0cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0
IHN5cwogCiBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQpAQCAtNDYsNiArNDEsNyBAQCBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmFwYWNoZV9odHRw
X3NlcnZlciIpCiAKIAogY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jh
c2UuSHR0cFNlcnZlckJhc2UpOgorICAgIG5hbWUgPSAnYXBhY2hlJwogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyKToKICAgICAgICAgIiIiQXJnczoKQEAgLTU0
LDcgKzUwLDYgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5I
dHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0X29iaikKICAgICAgICAgc2VsZi5fb3V0
cHV0X2RpciA9IG91dHB1dF9kaXIKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IE5vbmUKICAg
ICAgICAgcG9ydF9vYmoubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKIAogICAgICAg
ICBzZWxmLm1hcHBpbmdzID0gW3sncG9ydCc6IDgwMDB9LApAQCAtNzAsNyArNjUsNyBAQCBjbGFz
cyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6
CiAgICAgICAgICMgVGhlIFBJRCByZXR1cm5lZCB3aGVuIEFwYWNoZSBpcyBzdGFydGVkIGdvZXMg
YXdheSAoZHVlIHRvIGRyb3BwaW5nCiAgICAgICAgICMgcHJpdmlsZWdlcz8pLiBUaGUgcHJvcGVy
IGNvbnRyb2xsaW5nIFBJRCBpcyB3cml0dGVuIHRvIGEgZmlsZSBpbiB0aGUKICAgICAgICAgIyBh
cGFjaGUgcnVudGltZSBkaXJlY3RvcnkuCi0gICAgICAgIHNlbGYuX3BpZF9maWxlID0gb3MucGF0
aC5qb2luKHNlbGYuX3J1bnRpbWVfcGF0aCwgJ2h0dHBkLnBpZCcpCisgICAgICAgIHNlbGYucGlk
X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcnVudGltZV9wYXRoLCAnaHR0cGQucGlkJykKIAog
ICAgICAgICB0ZXN0X2RpciA9IHNlbGYuX3BvcnRfb2JqLmxheW91dF90ZXN0c19kaXIoKQogICAg
ICAgICBqc190ZXN0X3Jlc291cmNlc19kaXIgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKHRlc3Rf
ZGlyLCAiZmFzdCIsICJqcyIsCkBAIC0xNTcsOSArMTUyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEFw
YWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIK
ICAgICAgICAgaHR0cGRfY29uZmlnID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfdG9fYXBhY2hlX2Nv
bmZpZ19maWxlKCkKICAgICAgICAgaHR0cGRfY29uZmlnX2NvcHkgPSBvcy5wYXRoLmpvaW4ob3V0
cHV0X2RpciwgImh0dHBkLmNvbmYiKQotICAgICAgICAjIGh0dHBkLmNvbmYgaXMgYWx3YXlzIHV0
Zi04IGFjY29yZGluZyB0byBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2duYXRzLzEwMTI1Ci0g
ICAgICAgIHdpdGggY29kZWNzLm9wZW4oaHR0cGRfY29uZmlnLCAiciIsICJ1dGYtOCIpIGFzIGh0
dHBkX2NvbmZpZ19maWxlOgotICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmZpZ19m
aWxlLnJlYWQoKQorICAgICAgICBodHRwZF9jb25mID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZShodHRwZF9jb25maWcpCiAgICAgICAgIGlmIHNlbGYuX2lzX2N5Z3dpbigpOgogICAg
ICAgICAgICAgIyBUaGlzIGlzIGEgZ3Jvc3MgaGFjaywgYnV0IGl0IGxldHMgdXMgdXNlIHRoZSB1
cHN0cmVhbSAuY29uZiBmaWxlCiAgICAgICAgICAgICAjIGFuZCBvdXIgY2hlY2tlZCBpbiBjeWd3
aW4uIFRoaXMgdGVsbHMgdGhlIHNlcnZlciB0aGUgcm9vdApAQCAtMTcyLDIyICsxNjUsMTIgQEAg
Y2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJh
c2UpOgogICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmYucmVwbGFjZSgnU2VydmVy
Um9vdCAiL3VzciInLAogICAgICAgICAgICAgICAgICdTZXJ2ZXJSb290ICIlcyInICUgc2VsZi5f
Z2V0X2N5Z3dpbl9wYXRoKGN5Z3VzcikpCiAKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihodHRw
ZF9jb25maWdfY29weSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZShodHRwZF9jb25mKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShodHRwZF9jb25maWdfY29weSwgaHR0cGRfY29uZikKIAogICAgICAgICBpZiBzZWxmLl9pc19j
eWd3aW4oKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY3lnd2luX3BhdGgoaHR0cGRf
Y29uZmlnX2NvcHkpCiAgICAgICAgIHJldHVybiBodHRwZF9jb25maWdfY29weQogCi0gICAgZGVm
IF9nZXRfdmlydHVhbF9ob3N0X2NvbmZpZyhzZWxmLCBkb2N1bWVudF9yb290LCBwb3J0LCBzc2w9
RmFsc2UpOgotICAgICAgICAiIiJSZXR1cm5zIGEgPFZpcnR1YWxIb3N0PiBkaXJlY3RpdmUgYmxv
Y2sgZm9yIGFuIGh0dHBkLmNvbmYgZmlsZS4KLSAgICAgICAgSXQgd2lsbCBsaXN0ZW4gdG8gMTI3
LjAuMC4xIG9uIGVhY2ggb2YgdGhlIGdpdmVuIHBvcnQuCi0gICAgICAgICIiIgotICAgICAgICBy
ZXR1cm4gJ1xuJy5qb2luKCgnPFZpcnR1YWxIb3N0IDEyNy4wLjAuMTolcz4nICUgcG9ydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RvY3VtZW50Um9vdCAiJXMiJyAlIGRvY3VtZW50X3Jv
b3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNzbCBhbmQgJ1NTTEVuZ2luZSBPbicgb3Ig
JycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICc8L1ZpcnR1YWxIb3N0PicsICcnKSkKLQog
ICAgIGRlZiBfc3RhcnRfaHR0cGRfcHJvY2VzcyhzZWxmKToKICAgICAgICAgIiIiU3RhcnRzIHRo
ZSBodHRwZCBwcm9jZXNzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2VyZSBlcnJvcnMuIiIi
CiAgICAgICAgICMgVXNlIHNoZWxsPVRydWUgYmVjYXVzZSB3ZSBqb2luIHRoZSBhcmd1bWVudHMg
aW50byBhIHN0cmluZyBmb3IKQEAgLTE5NywxMCArMTgwLDggQEAgY2xhc3MgTGF5b3V0VGVzdEFw
YWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAjIHNo
ZWxsPVRydWUgaXMgYSB0cmFpbCBvZiB0ZWFycy4KICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFk
IHNhZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgIF9sb2cuZGVi
dWcoJ1N0YXJ0aW5nIGh0dHAgc2VydmVyLCBjbWQ9IiVzIicgJSBzdHIoc2VsZi5fc3RhcnRfY21k
KSkKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5fc3Rh
cnRfY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRl
cnI9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXJy
ID0gc2VsZi5faHR0cGRfcHJvYy5zdGRlcnIucmVhZCgpCisgICAgICAgIHNlbGYuX3Byb2Nlc3Mg
PSBzZWxmLl9leGVjdXRpdmUucG9wZW4oc2VsZi5fc3RhcnRfY21kLCBzdGRlcnI9c2VsZi5fZXhl
Y3V0aXZlLlBJUEUsIHNoZWxsPVRydWUpCisgICAgICAgIGVyciA9IHNlbGYuX3Byb2Nlc3Muc3Rk
ZXJyLnJlYWQoKQogICAgICAgICBpZiBsZW4oZXJyKToKICAgICAgICAgICAgIF9sb2cuZGVidWco
ZXJyKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yMTEsNyArMTkyLDcgQEAgY2xhc3Mg
TGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgog
ICAgICAgICAjIFN0b3AgYW55IGN1cnJlbnRseSBydW5uaW5nIHNlcnZlcnMuCiAgICAgICAgIHNl
bGYuc3RvcCgpCiAKLSAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgYXBhY2hlIGh0dHAgc2Vy
dmVyIikKKyAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgJXMgc2VydmVyIiAlIHNlbGYubmFt
ZSkKICAgICAgICAgc2VydmVyX3N0YXJ0ZWQgPSBzZWxmLndhaXRfZm9yX2FjdGlvbihzZWxmLl9z
dGFydF9odHRwZF9wcm9jZXNzKQogICAgICAgICBpZiBzZXJ2ZXJfc3RhcnRlZDoKICAgICAgICAg
ICAgIF9sb2cuZGVidWcoIkFwYWNoZSBzdGFydGVkLiBUZXN0aW5nIHBvcnRzIikKQEAgLTIyMSwx
NSArMjAyLDE1IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNl
Lkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgaWYgc2VydmVyX3N0YXJ0ZWQ6CiAgICAgICAgICAg
ICBfbG9nLmRlYnVnKCJTZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQiKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cCBzZXJ2
ZXInKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFp
bGVkIHRvIHN0YXJ0IGh0dHAgc2VydmVyJykKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAg
ICAiIiJTdG9wcyB0aGUgYXBhY2hlIGh0dHAgc2VydmVyLiIiIgogICAgICAgICBfbG9nLmRlYnVn
KCJTaHV0dGluZyBkb3duIGFueSBydW5uaW5nIGh0dHAgc2VydmVycyIpCiAgICAgICAgIGh0dHBk
X3BpZCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5faHR0cGRfcHJvYzoKLSAgICAgICAgICAgIGh0
dHBkX3BpZCA9IHNlbGYuX2h0dHBkX3Byb2MucGlkCi0gICAgICAgIGVsaWYgb3MucGF0aC5leGlz
dHMoc2VsZi5fcGlkX2ZpbGUpOgotICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9wZW4oc2Vs
Zi5fcGlkX2ZpbGUpLnJlYWRsaW5lKCkpCisgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6CisgICAg
ICAgICAgICBodHRwZF9waWQgPSBzZWxmLl9wcm9jZXNzLnBpZAorICAgICAgICBlbGlmIG9zLnBh
dGguZXhpc3RzKHNlbGYucGlkX2ZpbGUpOgorICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9w
ZW4oc2VsZi5waWRfZmlsZSkucmVhZGxpbmUoKSkKICAgICAgICAgaWYgaHR0cGRfcGlkOgogICAg
ICAgICAgICAgc2VsZi5fcG9ydF9vYmouX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3MoaHR0cGRfcGlk
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9o
dHRwX3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
aHR0cF9zZXJ2ZXIucHkKaW5kZXggMTZhODU3NzUzNTExZjEwYjIyMDA3ZDM4YWE3ZTM3NjVhZjg0
MGRiOS4uMzMyNTEyYTYyYTAyZjNhNWE5MWI2ZmE4Y2M2YzE5ZDE3MTRjZWJhYiAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2Vy
dmVyLnB5CkBAIC0yOSwyNiArMjksMTkgQEAKIAogIiIiQSBjbGFzcyB0byBoZWxwIHN0YXJ0L3N0
b3AgdGhlIGxpZ2h0dHBkIHNlcnZlciB1c2VkIGJ5IGxheW91dCB0ZXN0cy4iIiIKIAotZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQg
bG9nZ2luZwotaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9y
dCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBp
bXBvcnQgdXJsbGliCiAKLWltcG9ydCBmYWN0b3J5CiBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lmh0
dHBfc2VydmVyIikKIAogCiBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2
ZXJCYXNlKToKKyAgICBuYW1lID0gJ2xpZ2h0dHBkJwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnRfb2JqLCBvdXRwdXRfZGlyLCBiYWNrZ3JvdW5kPUZhbHNlLCBwb3J0PU5vbmUsCiAgICAg
ICAgICAgICAgICAgIHJvb3Q9Tm9uZSwgcnVuX2JhY2tncm91bmQ9Tm9uZSwgbGF5b3V0X3Rlc3Rz
X2Rpcj1Ob25lKToKQEAgLTcwLDE4ICs2Myw5IEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVy
X2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICBpZiBub3Qgc2VsZi5fbGF5b3V0X3Rlc3Rz
X2RpcjoKICAgICAgICAgICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIgPSBzZWxmLl9wb3J0X29i
ai5sYXlvdXRfdGVzdHNfZGlyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl93
ZWJraXRfdGVzdHMgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fbGF5b3V0
X3Rlc3RzX2RpciwgJ2h0dHAnLCAndGVzdHMnKQotICAgICAgICAgICAgc2VsZi5fanNfdGVzdF9y
ZXNvdXJjZSA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVz
dHNfZGlyLCAnZmFzdCcsICdqcycsICdyZXNvdXJjZXMnKQotICAgICAgICAgICAgc2VsZi5fbWVk
aWFfcmVzb3VyY2UgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fbGF5b3V0
X3Rlc3RzX2RpciwgJ21lZGlhJykKLQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxm
Ll93ZWJraXRfdGVzdHMgPSBOb25lCi0gICAgICAgICAgICBzZWxmLl9qc190ZXN0X3Jlc291cmNl
ID0gTm9uZQotICAgICAgICAgICAgc2VsZi5fbWVkaWFfcmVzb3VyY2UgPSBOb25lCisgICAgICAg
IHNlbGYuX3dlYmtpdF90ZXN0cyA9IG9zLnBhdGguam9pbihzZWxmLl9sYXlvdXRfdGVzdHNfZGly
LCAnaHR0cCcsICd0ZXN0cycpCisgICAgICAgIHNlbGYuX2pzX3Rlc3RfcmVzb3VyY2UgPSBvcy5w
YXRoLmpvaW4oc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciwgJ2Zhc3QnLCAnanMnLCAncmVzb3VyY2Vz
JykKKyAgICAgICAgc2VsZi5fbWVkaWFfcmVzb3VyY2UgPSBvcy5wYXRoLmpvaW4oc2VsZi5fbGF5
b3V0X3Rlc3RzX2RpciwgJ21lZGlhJykKIAogICAgICAgICAjIFNlbGYgZ2VuZXJhdGVkIGNlcnRp
ZmljYXRlIGZvciBTU0wgc2VydmVyIChmb3IgY2xpZW50IGNlcnQgZ2V0CiAgICAgICAgICMgPGJh
c2UtcGF0aD5cY2hyb21lXHRlc3RcZGF0YVxzc2xcY2VydHNccm9vdF9jYV9jZXJ0LmNydCkKQEAg
LTEwNCw3ICs4OCw3IEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZl
ckJhc2UpOgogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlzX3J1bm5p
bmcoKToKLSAgICAgICAgICAgIHJhaXNlICdMaWdodHRwZCBhbHJlYWR5IHJ1bm5pbmcnCisgICAg
ICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9yKCdMaWdodHRwZCBhbHJl
YWR5IHJ1bm5pbmcnKQogCiAgICAgICAgIGJhc2VfY29uZl9maWxlID0gc2VsZi5fcG9ydF9vYmou
cGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdUb29scycsCiAgICAgICAgICAgICAnU2NyaXB0cycsICd3
ZWJraXRweScsICdsYXlvdXRfdGVzdHMnLCAncG9ydCcsICdsaWdodHRwZC5jb25mJykKQEAgLTEy
MCwxNCArMTA0LDExIEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZl
ckJhc2UpOgogICAgICAgICBzZWxmLnJlbW92ZV9sb2dfZmlsZXMoc2VsZi5fb3V0cHV0X2Rpciwg
ImVycm9yLmxvZy0iKQogCiAgICAgICAgICMgV3JpdGUgb3V0IHRoZSBjb25maWcKLSAgICAgICAg
d2l0aCBjb2RlY3Mub3BlbihiYXNlX2NvbmZfZmlsZSwgInIiLCAidXRmLTgiKSBhcyBmaWxlOgot
ICAgICAgICAgICAgYmFzZV9jb25mID0gZmlsZS5yZWFkKCkKKyAgICAgICAgYmFzZV9jb25mID0g
c2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShiYXNlX2NvbmZfZmlsZSkKIAogICAgICAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZS13b3JrZWQgc28gdGhhdCB0aGlzIGJsb2NrIGNh
bgogICAgICAgICAjIHVzZSB3aXRoIG9wZW4oKSBpbnN0ZWFkIG9mIGEgbWFudWFsIGZpbGUuY2xv
c2UoKSBjYWxsLgotICAgICAgICAjIGxpZ2h0dHBkLmNvbmYgZmlsZXMgc2VlbSB0byBiZSBVVEYt
OCB3aXRob3V0IEJPTToKLSAgICAgICAgIyBodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvaXNz
dWVzLzk5MgotICAgICAgICBmID0gY29kZWNzLm9wZW4ob3V0X2NvbmZfZmlsZSwgInciLCAidXRm
LTgiKQorICAgICAgICBmID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3Jp
dGluZyhvdXRfY29uZl9maWxlKQogICAgICAgICBmLndyaXRlKGJhc2VfY29uZikKIAogICAgICAg
ICAjIFdyaXRlIG91dCBvdXIgY2dpIGhhbmRsZXJzLiAgUnVuIHBlcmwgdGhyb3VnaCBlbnYgc28g
dGhhdCBpdApAQCAtMjA0LDEzICsxODUsMTIgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJf
YmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo
dG1wX21vZHVsZV9wYXRoKToKICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyh0bXBfbW9kdWxl
X3BhdGgpCiAgICAgICAgICAgICBsaWJfZmlsZSA9ICdsaWJsaWdodGNvbXAuZHlsaWInCi0gICAg
ICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG1vZHVsZV9wYXRoLCBsaWJfZmls
ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRtcF9tb2R1bGVf
cGF0aCwgbGliX2ZpbGUpKQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5jb3B5ZmlsZShv
cy5wYXRoLmpvaW4obW9kdWxlX3BhdGgsIGxpYl9maWxlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRtcF9tb2R1bGVfcGF0aCwgbGliX2ZpbGUp
KQogCiAgICAgICAgIGVudiA9IHNlbGYuX3BvcnRfb2JqLnNldHVwX2Vudmlyb25fZm9yX3NlcnZl
cigpCi0gICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5nIGh0dHAgc2VydmVyLCBjbWQ9IiVzIicg
JSBzdHIoc3RhcnRfY21kKSkKLSAgICAgICAgIyBGSVhNRTogU2hvdWxkIHVzZSBFeGVjdXRpdmUu
cnVuX2NvbW1hbmQKLSAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oc3Rh
cnRfY21kLCBlbnY9ZW52LCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIF9sb2cuZGVi
dWcoJ1N0YXJ0aW5nICVzIHNlcnZlciwgY21kPSIlcyInICUgKHNlbGYubmFtZSwgc3RyKHN0YXJ0
X2NtZCkpKQorICAgICAgICBzZWxmLl9wcm9jZXNzID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKHN0
YXJ0X2NtZCwgZW52PWVudiwgc3RkaW49c2VsZi5fZXhlY3V0aXZlLlBJUEUpCiAKICAgICAgICAg
IyBXYWl0IGZvciBzZXJ2ZXIgdG8gc3RhcnQuCiAgICAgICAgIHNlbGYubWFwcGluZ3MgPSBtYXBw
aW5ncwpAQCAtMjE5LDcgKzE5OSw3IEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UpOgogCiAgICAgICAgICMgT3VyIHByb2Nlc3MgdGVybWluYXRlZCBhbHJl
YWR5CiAgICAgICAgIGlmIG5vdCBzZXJ2ZXJfc3RhcnRlZCBvciBzZWxmLl9wcm9jZXNzLnJldHVy
bmNvZGUgIT0gTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHN0
YXJ0IGh0dHBkLicpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVy
cm9yKCdGYWlsZWQgdG8gc3RhcnQgJXMuJyAlIHNlbGYubmFtZSkKIAogICAgICAgICBfbG9nLmRl
YnVnKCJTZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQiKQogCkBAIC0yMjcsNyArMjA3LDcgQEAg
Y2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgIyBw
cm9iYWJseSBub3QgYmVpbmcgZmx1c2hlZCwgZXRjLi4uIHdoeSBkb2Vzbid0IG91ciBweXRob24g
aGF2ZSBvcy5raWxsID8KIAogICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICBpZiBub3QgZm9y
Y2UgYW5kIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfcnVu
bmluZygpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgaHR0cGRfcGlkID0gTm9uZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRw
X3NlcnZlcl9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9odHRwX3NlcnZlcl9iYXNlLnB5CmluZGV4IDJhNDNlODE5NzhiOTJjNmNhNjgxYThhNGMyOGY5
OWI4M2I4NzZlYmIuLmJiNmMzOWJkY2MwMjEyMjQ0MGQ5MTg0NWIyMjg0YmY1Yjg4MDk2NTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9z
ZXJ2ZXJfYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2h0dHBfc2VydmVyX2Jhc2UucHkKQEAgLTQwLDkgKzQwLDE0IEBAIF9sb2cgPSBsb2dnaW5n
LmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuaHR0cF9zZXJ2ZXJfYmFzZSIp
CiAKIAogY2xhc3MgSHR0cFNlcnZlckJhc2Uob2JqZWN0KToKKyAgICBuYW1lID0gJzx2aXJ0dWFs
PicKKyAgICBwaWRfZmlsZSA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29i
aik6CiAgICAgICAgIHNlbGYuX3BvcnRfb2JqID0gcG9ydF9vYmoKKyAgICAgICAgc2VsZi5fZXhl
Y3V0aXZlID0gcG9ydF9vYmouX2V4ZWN1dGl2ZQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0g
cG9ydF9vYmouX2ZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5vbmUKIAogICAg
IGRlZiB3YWl0X2Zvcl9hY3Rpb24oc2VsZiwgYWN0aW9uKToKICAgICAgICAgIiIiUmVwZWF0IHRo
ZSBhY3Rpb24gZm9yIDIwIHNlY29uZHMgb3IgdW50aWwgaXQgc3VjY2VlZHMuIFJldHVybnMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29j
a2V0X3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Vic29ja2V0X3NlcnZlci5weQppbmRleCBlMzhiNjI5M2Y4ZGEyZjcwMmFiMmVmNWI0MDU5YjZm
OTZjN2NiZDQzLi43OGI5MzE4OGQzZTEwMjdkOTY0YjEzMDEzMjcwODUyOWQ4YzZhNDA5IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tl
dF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJzb2NrZXRfc2VydmVyLnB5CkBAIC0zMCwyMCArMzAsMTQgQEAKICIiIkEgY2xhc3MgdG8g
aGVscCBzdGFydC9zdG9wIHRoZSBQeVdlYlNvY2tldCBzZXJ2ZXIgdXNlZCBieSBsYXlvdXQgdGVz
dHMuIiIiCiAKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBv
cnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKLWlt
cG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1l
CiBpbXBvcnQgdXJsbGliCiAKLWltcG9ydCBmYWN0b3J5CiBpbXBvcnQgaHR0cF9zZXJ2ZXIKK2lt
cG9ydCBodHRwX3NlcnZlcl9iYXNlCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVj
dXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogCkBAIC04NCwxNSArNzgsOCBAQCBkZWYgdXJsX2lzX2Fs
aXZlKHVybCk6CiAgICAgcmV0dXJuIEZhbHNlCiAKIAotY2xhc3MgUHlXZWJTb2NrZXROb3RTdGFy
dGVkKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIFB5V2ViU29ja2V0Tm90Rm91bmQo
RXhjZXB0aW9uKToKLSAgICBwYXNzCi0KLQogY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIu
TGlnaHR0cGQpOgorICAgIG5hbWUgPSAncHl3ZWJzb2NrZXQnCiAKICAgICBkZWYgX19pbml0X18o
c2VsZiwgcG9ydF9vYmosIG91dHB1dF9kaXIsIHBvcnQ9X0RFRkFVTFRfV1NfUE9SVCwKICAgICAg
ICAgICAgICAgICAgcm9vdD1Ob25lLCB1c2VfdGxzPUZhbHNlLApAQCAtMTEzLDEwICsxMDAsOCBA
QCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAgICAgIGlmIHNl
bGYuX3BvcnQ6CiAgICAgICAgICAgICBzZWxmLl9wb3J0ID0gaW50KHNlbGYuX3BvcnQpCiAgICAg
ICAgIGlmIHNlbGYuX3VzZV90bHM6Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSA9ICdQ
eVdlYlNvY2tldChTZWN1cmUpJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc2Vy
dmVyX25hbWUgPSAnUHlXZWJTb2NrZXQnCi0gICAgICAgIHNlbGYuX3BpZGZpbGUgPSBwaWRmaWxl
CisgICAgICAgICAgICBzZWxmLm5hbWUgPSAncHl3ZWJzb2NrZXRfc2VjdXJlJworICAgICAgICBz
ZWxmLnBpZF9maWxlID0gcGlkZmlsZQogICAgICAgICBzZWxmLl93c291dCA9IE5vbmUKIAogICAg
ICAgICAjIFdlYmtpdCB0ZXN0cwpAQCAtMTM1LDExICsxMjAsMTAgQEAgY2xhc3MgUHlXZWJTb2Nr
ZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAg
ICBpZiBub3Qgc2VsZi5fd2ViX3NvY2tldF90ZXN0czoKLSAgICAgICAgICAgIF9sb2cuaW5mbygn
Tm8gbmVlZCB0byBzdGFydCAlcyBzZXJ2ZXIuJyAlIHNlbGYuX3NlcnZlcl9uYW1lKQorICAgICAg
ICAgICAgX2xvZy5pbmZvKCdObyBuZWVkIHRvIHN0YXJ0ICVzIHNlcnZlci4nICUgc2VsZi5uYW1l
KQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgotICAg
ICAgICAgICAgcmFpc2UgUHlXZWJTb2NrZXROb3RTdGFydGVkKCclcyBpcyBhbHJlYWR5IHJ1bm5p
bmcuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vy
dmVyX25hbWUpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9y
KCclcyBpcyBhbHJlYWR5IHJ1bm5pbmcuJyAlIHNlbGYubmFtZSkKIAogICAgICAgICB0aW1lX3N0
ciA9IHRpbWUuc3RyZnRpbWUoJyVkJWIlWS0lSCVNJVMnKQogICAgICAgICBpZiBzZWxmLl91c2Vf
dGxzOgpAQCAtMTU0LDcgKzEzOCw3IEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxp
Z2h0dHBkKToKICAgICAgICAgZXJyb3JfbG9nID0gb3MucGF0aC5qb2luKHNlbGYuX291dHB1dF9k
aXIsIGxvZ19maWxlX25hbWUgKyAiLWVyci50eHQiKQogCiAgICAgICAgIG91dHB1dF9sb2cgPSBv
cy5wYXRoLmpvaW4oc2VsZi5fb3V0cHV0X2RpciwgbG9nX2ZpbGVfbmFtZSArICItb3V0LnR4dCIp
Ci0gICAgICAgIHNlbGYuX3dzb3V0ID0gY29kZWNzLm9wZW4ob3V0cHV0X2xvZywgInciLCAidXRm
LTgiKQorICAgICAgICBzZWxmLl93c291dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ub3Blbl90ZXh0X2Zp
bGVfZm9yX3dyaXRpbmcob3V0cHV0X2xvZykKIAogICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkuYXV0b2luc3RhbGxlZC5weXdlYnNvY2tldCBpbXBvcnQgbW9kX3B5d2Vic29ja2V0CiAg
ICAgICAgIHB5dGhvbl9pbnRlcnAgPSBzeXMuZXhlY3V0YWJsZQpAQCAtMTkxLDE2ICsxNzUsMTMg
QEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBlbnZb
J1BZVEhPTlBBVEgnXSA9IChweXdlYnNvY2tldF9iYXNlICsgb3MucGF0aC5wYXRoc2VwICsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LmdldCgnUFlUSE9OUEFUSCcsICcnKSkKIAot
ICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyAlcyBzZXJ2ZXIgb24gJWQuJyAlICgKLSAgICAg
ICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5fcG9ydCkpCi0gICAgICAgIF9s
b2cuZGVidWcoJ2NtZGxpbmU6ICVzJyAlICcgJy5qb2luKHN0YXJ0X2NtZCkpCi0gICAgICAgICMg
RklYTUU6IFdlIHNob3VsZCBkaXJlY3QgdGhpcyBjYWxsIHRocm91Z2ggRXhlY3V0aXZlIGZvciB0
ZXN0aW5nLgorICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyAlcyBzZXJ2ZXIgb24gJWQsIGNt
ZD0iJXMiLicgJSAoc2VsZi5uYW1lLCBzZWxmLl9wb3J0LCBzdHIoc3RhcnRfY21kKSkpCiAgICAg
ICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3Vl
MjMyMAotICAgICAgICBzZWxmLl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzdGFydF9jbWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPW9wZW4ob3Mu
ZGV2bnVsbCwgJ3InKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3Rkb3V0PXNlbGYuX3dzb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudj1lbnYpCisgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzZWxmLl9l
eGVjdXRpdmUucG9wZW4oc3RhcnRfY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZGluPW9wZW4ob3MuZGV2bnVsbCwgJ3InKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c2VsZi5fd3NvdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXNlbGYu
X2V4ZWN1dGl2ZS5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW52PWVudikKIAogICAgICAgICBpZiBzZWxmLl91c2VfdGxzOgogICAgICAgICAg
ICAgdXJsID0gJ2h0dHBzJwpAQCAtMjEwLDIwICsxOTEsMTUgQEAgY2xhc3MgUHlXZWJTb2NrZXQo
aHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBpZiBub3QgdXJsX2lzX2FsaXZlKHVybCk6
CiAgICAgICAgICAgICBpZiBzZWxmLl9wcm9jZXNzLnJldHVybmNvZGUgPT0gTm9uZToKICAgICAg
ICAgICAgICAgICBzZWxmLl9wb3J0X29iai5fZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9w
cm9jZXNzLnBpZCkKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ob3V0cHV0X2xvZywgInIi
LCAidXRmLTgiKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAg
ICAgICAgICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQotICAgICAgICAgICAgcmFpc2UgUHlXZWJT
b2NrZXROb3RTdGFydGVkKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gc3RhcnQgJXMgc2Vy
dmVyIG9uIHBvcnQgJXMuJyAlCi0gICAgICAgICAgICAgICAgICAgIChzZWxmLl9zZXJ2ZXJfbmFt
ZSwgc2VsZi5fcG9ydCkpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLnJlYWRfdGV4dF9m
aWxlKG91dHB1dF9sb2cpLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9y
KGxpbmUpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9yKCdG
YWlsZWQgdG8gc3RhcnQgJXMgc2VydmVyIG9uIHBvcnQgJXMuJyAlIChzZWxmLm5hbWUsIHNlbGYu
X3BvcnQpKQogCiAgICAgICAgICMgT3VyIHByb2Nlc3MgdGVybWluYXRlZCBhbHJlYWR5CiAgICAg
ICAgIGlmIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29kZSAhPSBOb25lOgotICAgICAgICAgICAgcmFp
c2UgUHlXZWJTb2NrZXROb3RTdGFydGVkKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gc3Rh
cnQgJXMgc2VydmVyLicgJSBzZWxmLl9zZXJ2ZXJfbmFtZSkKLSAgICAgICAgaWYgc2VsZi5fcGlk
ZmlsZToKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oc2VsZi5fcGlkZmlsZSwgInciLCAi
YXNjaWkiKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoIiVkIiAlIHNlbGYu
X3Byb2Nlc3MucGlkKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJF
cnJvcignRmFpbGVkIHRvIHN0YXJ0ICVzIHNlcnZlci4nICUgc2VsZi5uYW1lKQorICAgICAgICBp
ZiBzZWxmLnBpZF9maWxlOgorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0
X2ZpbGUoc2VsZi5waWRfZmlsZSwgIiVkIiAlIHNlbGYuX3Byb2Nlc3MucGlkKQogCiAgICAgZGVm
IHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKQEAgLTIzMiwx
NSArMjA4LDEzIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAg
ICAgICAgcGlkID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9wcm9jZXNzOgogICAgICAgICAgICAg
cGlkID0gc2VsZi5fcHJvY2Vzcy5waWQKLSAgICAgICAgZWxpZiBzZWxmLl9waWRmaWxlOgotICAg
ICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihzZWxmLl9waWRmaWxlLCAiciIsICJhc2NpaSIpIGFz
IGZpbGU6Ci0gICAgICAgICAgICAgICAgcGlkID0gaW50KGZpbGUucmVhZCgpLnN0cmlwKCkpCisg
ICAgICAgIGVsaWYgc2VsZi5waWRfZmlsZToKKyAgICAgICAgICAgIHBpZCA9IGludChzZWxmLl9m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHNlbGYucGlkX2ZpbGUpKQogCiAgICAgICAgIGlmIG5v
dCBwaWQ6Ci0gICAgICAgICAgICByYWlzZSBQeVdlYlNvY2tldE5vdEZvdW5kKAotICAgICAgICAg
ICAgICAgICdGYWlsZWQgdG8gZmluZCAlcyBzZXJ2ZXIgcGlkLicgJSBzZWxmLl9zZXJ2ZXJfbmFt
ZSkKKyAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxl
ZCB0byBmaW5kICVzIHNlcnZlciBwaWQuJyAlIHNlbGYubmFtZSkKIAotICAgICAgICBfbG9nLmRl
YnVnKCdTaHV0dGluZyBkb3duICVzIHNlcnZlciAlZC4nICUgKHNlbGYuX3NlcnZlcl9uYW1lLCBw
aWQpKQorICAgICAgICBfbG9nLmRlYnVnKCdTaHV0dGluZyBkb3duICVzIHNlcnZlciAlZC4nICUg
KHNlbGYubmFtZSwgcGlkKSkKICAgICAgICAgc2VsZi5fcG9ydF9vYmouX2V4ZWN1dGl2ZS5raWxs
X3Byb2Nlc3MocGlkKQogCiAgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96354</attachid>
            <date>2011-06-07 19:13:19 -0700</date>
            <delta_ts>2011-06-07 19:31:05 -0700</delta_ts>
            <desc>ready for review</desc>
            <filename>bug-62256-20110607191318.patch</filename>
            <type>text/plain</type>
            <size>18691</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyODgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNjE4ZDQ1NzZlY2JlMDJhODhmYmQ4ODQ3NTljMTgzNDA3
YmYyNGM4Li40NjljZDRmMTI4NWNiOWVhZjcxYjI2N2VjZjkxOWJkNjZiMzIxZDhhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjYg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICB3ZWJr
aXRweTogY2xlYW4gdXAgY29kZSBwcmlvciB0byBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIHNlcnZl
ciBzdGFydHVwL3NodXRkb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MjI1NgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBhIGJ1bmNoIG9mIG1p
bm9yIGNsZWFudXAgb2YgdGhlIGNvZGUsIGJ1dCB0aGVyZQorICAgICAgICBzaG91bGQgYmUgbm8g
ZnVuY3Rpb25hbCBjaGFuZ2VzIGV4Y2VwdCB0aGF0IGFsbCBvZiB0aGUgbW9kdWxlcworICAgICAg
ICB3aWxsIG5vdyB1c2UgdGhlIHNhbWUgZXhjZXB0aW9uIHR5cGUuIE90aGVyIGNoYW5nZXMgaW5j
bHVkZQorICAgICAgICByZW1vdmluZyB1bnVzZWQgY29kZSBwYXRocyBhbmQgZnVuY3Rpb25zLCB1
c2luZyAnbmFtZScgYW5kCisgICAgICAgICdwaWRfZmlsZScgYXMgcHVibGljIHByb3BlcnRpZXMg
b24gdGhlIHNlcnZlciBvYmplY3RzLCBhbmQgdXNpbmcKKyAgICAgICAgdGhlIEZpbGVzeXN0ZW0g
b2JqZWN0IGluc3RlYWQgb2YgdGhlIGNvZGVjcywgdGVtcGZpbGUsIGFuZAorICAgICAgICBzaHV0
aWxzIG1vZHVsZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHk6CisKKzIw
MTEtMDYtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgd2Via2l0cHk6IGFkZCBpbnRl
Z3JhdGlvbiB0ZXN0cyBmb3IgbmV3LXJ1bi13ZWJraXQtaHR0cGQsIHN0b3AgY2FsbGluZyBzaHV0
X2Rvd25faHR0cF9zZXJ2ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyMjUxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKaW5kZXggOTA5Mjk3
OGZmMmRkMDE2Mjc5YzVjMmRiMzdjMmU0N2UxOGQ1MzhlYy4uNWEzYWE3Nzg2M2M5OTJhMzY1NTA0
NGJkMDJiODU2ZDA3ZTUyMmI5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTMw
LDE0ICszMCw5IEBACiAiIiJBIGNsYXNzIHRvIHN0YXJ0L3N0b3AgdGhlIGFwYWNoZSBodHRwIHNl
cnZlciB1c2VkIGJ5IGxheW91dCB0ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3B0cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0
IHN5cwogCiBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQpAQCAtNDYsNiArNDEsNyBAQCBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmFwYWNoZV9odHRw
X3NlcnZlciIpCiAKIAogY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jh
c2UuSHR0cFNlcnZlckJhc2UpOgorICAgIG5hbWUgPSAnYXBhY2hlJwogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyKToKICAgICAgICAgIiIiQXJnczoKQEAgLTU0
LDcgKzUwLDYgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5I
dHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0X29iaikKICAgICAgICAgc2VsZi5fb3V0
cHV0X2RpciA9IG91dHB1dF9kaXIKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IE5vbmUKICAg
ICAgICAgcG9ydF9vYmoubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKIAogICAgICAg
ICBzZWxmLm1hcHBpbmdzID0gW3sncG9ydCc6IDgwMDB9LApAQCAtNzAsNyArNjUsNyBAQCBjbGFz
cyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6
CiAgICAgICAgICMgVGhlIFBJRCByZXR1cm5lZCB3aGVuIEFwYWNoZSBpcyBzdGFydGVkIGdvZXMg
YXdheSAoZHVlIHRvIGRyb3BwaW5nCiAgICAgICAgICMgcHJpdmlsZWdlcz8pLiBUaGUgcHJvcGVy
IGNvbnRyb2xsaW5nIFBJRCBpcyB3cml0dGVuIHRvIGEgZmlsZSBpbiB0aGUKICAgICAgICAgIyBh
cGFjaGUgcnVudGltZSBkaXJlY3RvcnkuCi0gICAgICAgIHNlbGYuX3BpZF9maWxlID0gb3MucGF0
aC5qb2luKHNlbGYuX3J1bnRpbWVfcGF0aCwgJ2h0dHBkLnBpZCcpCisgICAgICAgIHNlbGYucGlk
X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcnVudGltZV9wYXRoLCAnaHR0cGQucGlkJykKIAog
ICAgICAgICB0ZXN0X2RpciA9IHNlbGYuX3BvcnRfb2JqLmxheW91dF90ZXN0c19kaXIoKQogICAg
ICAgICBqc190ZXN0X3Jlc291cmNlc19kaXIgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKHRlc3Rf
ZGlyLCAiZmFzdCIsICJqcyIsCkBAIC0xNTcsOSArMTUyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEFw
YWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIK
ICAgICAgICAgaHR0cGRfY29uZmlnID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfdG9fYXBhY2hlX2Nv
bmZpZ19maWxlKCkKICAgICAgICAgaHR0cGRfY29uZmlnX2NvcHkgPSBvcy5wYXRoLmpvaW4ob3V0
cHV0X2RpciwgImh0dHBkLmNvbmYiKQotICAgICAgICAjIGh0dHBkLmNvbmYgaXMgYWx3YXlzIHV0
Zi04IGFjY29yZGluZyB0byBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2duYXRzLzEwMTI1Ci0g
ICAgICAgIHdpdGggY29kZWNzLm9wZW4oaHR0cGRfY29uZmlnLCAiciIsICJ1dGYtOCIpIGFzIGh0
dHBkX2NvbmZpZ19maWxlOgotICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmZpZ19m
aWxlLnJlYWQoKQorICAgICAgICBodHRwZF9jb25mID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZShodHRwZF9jb25maWcpCiAgICAgICAgIGlmIHNlbGYuX2lzX2N5Z3dpbigpOgogICAg
ICAgICAgICAgIyBUaGlzIGlzIGEgZ3Jvc3MgaGFjaywgYnV0IGl0IGxldHMgdXMgdXNlIHRoZSB1
cHN0cmVhbSAuY29uZiBmaWxlCiAgICAgICAgICAgICAjIGFuZCBvdXIgY2hlY2tlZCBpbiBjeWd3
aW4uIFRoaXMgdGVsbHMgdGhlIHNlcnZlciB0aGUgcm9vdApAQCAtMTcyLDIyICsxNjUsMTIgQEAg
Y2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJh
c2UpOgogICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmYucmVwbGFjZSgnU2VydmVy
Um9vdCAiL3VzciInLAogICAgICAgICAgICAgICAgICdTZXJ2ZXJSb290ICIlcyInICUgc2VsZi5f
Z2V0X2N5Z3dpbl9wYXRoKGN5Z3VzcikpCiAKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihodHRw
ZF9jb25maWdfY29weSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZShodHRwZF9jb25mKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShodHRwZF9jb25maWdfY29weSwgaHR0cGRfY29uZikKIAogICAgICAgICBpZiBzZWxmLl9pc19j
eWd3aW4oKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY3lnd2luX3BhdGgoaHR0cGRf
Y29uZmlnX2NvcHkpCiAgICAgICAgIHJldHVybiBodHRwZF9jb25maWdfY29weQogCi0gICAgZGVm
IF9nZXRfdmlydHVhbF9ob3N0X2NvbmZpZyhzZWxmLCBkb2N1bWVudF9yb290LCBwb3J0LCBzc2w9
RmFsc2UpOgotICAgICAgICAiIiJSZXR1cm5zIGEgPFZpcnR1YWxIb3N0PiBkaXJlY3RpdmUgYmxv
Y2sgZm9yIGFuIGh0dHBkLmNvbmYgZmlsZS4KLSAgICAgICAgSXQgd2lsbCBsaXN0ZW4gdG8gMTI3
LjAuMC4xIG9uIGVhY2ggb2YgdGhlIGdpdmVuIHBvcnQuCi0gICAgICAgICIiIgotICAgICAgICBy
ZXR1cm4gJ1xuJy5qb2luKCgnPFZpcnR1YWxIb3N0IDEyNy4wLjAuMTolcz4nICUgcG9ydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RvY3VtZW50Um9vdCAiJXMiJyAlIGRvY3VtZW50X3Jv
b3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNzbCBhbmQgJ1NTTEVuZ2luZSBPbicgb3Ig
JycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICc8L1ZpcnR1YWxIb3N0PicsICcnKSkKLQog
ICAgIGRlZiBfc3RhcnRfaHR0cGRfcHJvY2VzcyhzZWxmKToKICAgICAgICAgIiIiU3RhcnRzIHRo
ZSBodHRwZCBwcm9jZXNzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2VyZSBlcnJvcnMuIiIi
CiAgICAgICAgICMgVXNlIHNoZWxsPVRydWUgYmVjYXVzZSB3ZSBqb2luIHRoZSBhcmd1bWVudHMg
aW50byBhIHN0cmluZyBmb3IKQEAgLTE5NywxMCArMTgwLDggQEAgY2xhc3MgTGF5b3V0VGVzdEFw
YWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAjIHNo
ZWxsPVRydWUgaXMgYSB0cmFpbCBvZiB0ZWFycy4KICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFk
IHNhZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgIF9sb2cuZGVi
dWcoJ1N0YXJ0aW5nIGh0dHAgc2VydmVyLCBjbWQ9IiVzIicgJSBzdHIoc2VsZi5fc3RhcnRfY21k
KSkKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5fc3Rh
cnRfY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRl
cnI9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXJy
ID0gc2VsZi5faHR0cGRfcHJvYy5zdGRlcnIucmVhZCgpCisgICAgICAgIHNlbGYuX3Byb2Nlc3Mg
PSBzZWxmLl9leGVjdXRpdmUucG9wZW4oc2VsZi5fc3RhcnRfY21kLCBzdGRlcnI9c2VsZi5fZXhl
Y3V0aXZlLlBJUEUsIHNoZWxsPVRydWUpCisgICAgICAgIGVyciA9IHNlbGYuX3Byb2Nlc3Muc3Rk
ZXJyLnJlYWQoKQogICAgICAgICBpZiBsZW4oZXJyKToKICAgICAgICAgICAgIF9sb2cuZGVidWco
ZXJyKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yMTEsNyArMTkyLDcgQEAgY2xhc3Mg
TGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgog
ICAgICAgICAjIFN0b3AgYW55IGN1cnJlbnRseSBydW5uaW5nIHNlcnZlcnMuCiAgICAgICAgIHNl
bGYuc3RvcCgpCiAKLSAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgYXBhY2hlIGh0dHAgc2Vy
dmVyIikKKyAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgJXMgc2VydmVyIiAlIHNlbGYubmFt
ZSkKICAgICAgICAgc2VydmVyX3N0YXJ0ZWQgPSBzZWxmLndhaXRfZm9yX2FjdGlvbihzZWxmLl9z
dGFydF9odHRwZF9wcm9jZXNzKQogICAgICAgICBpZiBzZXJ2ZXJfc3RhcnRlZDoKICAgICAgICAg
ICAgIF9sb2cuZGVidWcoIkFwYWNoZSBzdGFydGVkLiBUZXN0aW5nIHBvcnRzIikKQEAgLTIyMSwx
NSArMjAyLDE1IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNl
Lkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgaWYgc2VydmVyX3N0YXJ0ZWQ6CiAgICAgICAgICAg
ICBfbG9nLmRlYnVnKCJTZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQiKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cCBzZXJ2
ZXInKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFp
bGVkIHRvIHN0YXJ0IGh0dHAgc2VydmVyJykKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAg
ICAiIiJTdG9wcyB0aGUgYXBhY2hlIGh0dHAgc2VydmVyLiIiIgogICAgICAgICBfbG9nLmRlYnVn
KCJTaHV0dGluZyBkb3duIGFueSBydW5uaW5nIGh0dHAgc2VydmVycyIpCiAgICAgICAgIGh0dHBk
X3BpZCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5faHR0cGRfcHJvYzoKLSAgICAgICAgICAgIGh0
dHBkX3BpZCA9IHNlbGYuX2h0dHBkX3Byb2MucGlkCi0gICAgICAgIGVsaWYgb3MucGF0aC5leGlz
dHMoc2VsZi5fcGlkX2ZpbGUpOgotICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9wZW4oc2Vs
Zi5fcGlkX2ZpbGUpLnJlYWRsaW5lKCkpCisgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6CisgICAg
ICAgICAgICBodHRwZF9waWQgPSBzZWxmLl9wcm9jZXNzLnBpZAorICAgICAgICBlbGlmIG9zLnBh
dGguZXhpc3RzKHNlbGYucGlkX2ZpbGUpOgorICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9w
ZW4oc2VsZi5waWRfZmlsZSkucmVhZGxpbmUoKSkKICAgICAgICAgaWYgaHR0cGRfcGlkOgogICAg
ICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhodHRwZF9waWQpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZl
ci5weQppbmRleCAzYTU0Yzk5YjIwMDg4YjE3MDMxMzIzYTAwMTY1NTc3NTkxM2VkMmUxLi44OGVk
NzYxMDU5YmZkNWYyN2M4NmM5YWIxNDBmYmQxNmM3MjJjYWIxIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXIucHkKQEAg
LTI5LDI2ICsyOSwxOSBAQAogCiAiIiJBIGNsYXNzIHRvIGhlbHAgc3RhcnQvc3RvcCB0aGUgbGln
aHR0cGQgc2VydmVyIHVzZWQgYnkgbGF5b3V0IHRlc3RzLiIiIgogCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN1YnByb2Nl
c3MKIGltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxs
aWIKIAotaW1wb3J0IGZhY3RvcnkKIGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuaHR0cF9zZXJ2ZXIi
KQogCiAKIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgor
ICAgIG5hbWUgPSAnbGlnaHR0cGQnCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmos
IG91dHB1dF9kaXIsIGJhY2tncm91bmQ9RmFsc2UsIHBvcnQ9Tm9uZSwKICAgICAgICAgICAgICAg
ICAgcm9vdD1Ob25lLCBydW5fYmFja2dyb3VuZD1Ob25lLCBsYXlvdXRfdGVzdHNfZGlyPU5vbmUp
OgpAQCAtNzAsMTggKzYzLDkgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRw
U2VydmVyQmFzZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9sYXlvdXRfdGVzdHNfZGlyOgogICAg
ICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3BvcnRfb2JqLmxheW91dF90
ZXN0c19kaXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dlYmtpdF90ZXN0
cyA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGly
LCAnaHR0cCcsICd0ZXN0cycpCi0gICAgICAgICAgICBzZWxmLl9qc190ZXN0X3Jlc291cmNlID0g
b3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIsICdm
YXN0JywgJ2pzJywgJ3Jlc291cmNlcycpCi0gICAgICAgICAgICBzZWxmLl9tZWRpYV9yZXNvdXJj
ZSA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGly
LCAnbWVkaWEnKQotCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuX3dlYmtpdF90
ZXN0cyA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuX2pzX3Rlc3RfcmVzb3VyY2UgPSBOb25lCi0g
ICAgICAgICAgICBzZWxmLl9tZWRpYV9yZXNvdXJjZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fd2Vi
a2l0X3Rlc3RzID0gb3MucGF0aC5qb2luKHNlbGYuX2xheW91dF90ZXN0c19kaXIsICdodHRwJywg
J3Rlc3RzJykKKyAgICAgICAgc2VsZi5fanNfdGVzdF9yZXNvdXJjZSA9IG9zLnBhdGguam9pbihz
ZWxmLl9sYXlvdXRfdGVzdHNfZGlyLCAnZmFzdCcsICdqcycsICdyZXNvdXJjZXMnKQorICAgICAg
ICBzZWxmLl9tZWRpYV9yZXNvdXJjZSA9IG9zLnBhdGguam9pbihzZWxmLl9sYXlvdXRfdGVzdHNf
ZGlyLCAnbWVkaWEnKQogCiAgICAgICAgICMgU2VsZiBnZW5lcmF0ZWQgY2VydGlmaWNhdGUgZm9y
IFNTTCBzZXJ2ZXIgKGZvciBjbGllbnQgY2VydCBnZXQKICAgICAgICAgIyA8YmFzZS1wYXRoPlxj
aHJvbWVcdGVzdFxkYXRhXHNzbFxjZXJ0c1xyb290X2NhX2NlcnQuY3J0KQpAQCAtMTA0LDcgKzg4
LDcgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAK
ICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgotICAg
ICAgICAgICAgcmFpc2UgJ0xpZ2h0dHBkIGFscmVhZHkgcnVubmluZycKKyAgICAgICAgICAgIHJh
aXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0xpZ2h0dHBkIGFscmVhZHkgcnVubmlu
ZycpCiAKICAgICAgICAgYmFzZV9jb25mX2ZpbGUgPSBzZWxmLl9wb3J0X29iai5wYXRoX2Zyb21f
d2Via2l0X2Jhc2UoJ1Rvb2xzJywKICAgICAgICAgICAgICdTY3JpcHRzJywgJ3dlYmtpdHB5Jywg
J2xheW91dF90ZXN0cycsICdwb3J0JywgJ2xpZ2h0dHBkLmNvbmYnKQpAQCAtMTIwLDE0ICsxMDQs
MTEgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAg
ICAgICAgIHNlbGYucmVtb3ZlX2xvZ19maWxlcyhzZWxmLl9vdXRwdXRfZGlyLCAiZXJyb3IubG9n
LSIpCiAKICAgICAgICAgIyBXcml0ZSBvdXQgdGhlIGNvbmZpZwotICAgICAgICB3aXRoIGNvZGVj
cy5vcGVuKGJhc2VfY29uZl9maWxlLCAiciIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAg
ICBiYXNlX2NvbmYgPSBmaWxlLnJlYWQoKQorICAgICAgICBiYXNlX2NvbmYgPSBzZWxmLl9maWxl
c3lzdGVtLnJlYWRfdGV4dF9maWxlKGJhc2VfY29uZl9maWxlKQogCiAgICAgICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIGJlIHJlLXdvcmtlZCBzbyB0aGF0IHRoaXMgYmxvY2sgY2FuCiAgICAgICAg
ICMgdXNlIHdpdGggb3BlbigpIGluc3RlYWQgb2YgYSBtYW51YWwgZmlsZS5jbG9zZSgpIGNhbGwu
Ci0gICAgICAgICMgbGlnaHR0cGQuY29uZiBmaWxlcyBzZWVtIHRvIGJlIFVURi04IHdpdGhvdXQg
Qk9NOgotICAgICAgICAjIGh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9pc3N1ZXMvOTkyCi0g
ICAgICAgIGYgPSBjb2RlY3Mub3BlbihvdXRfY29uZl9maWxlLCAidyIsICJ1dGYtOCIpCisgICAg
ICAgIGYgPSBzZWxmLl9maWxlc3lzdGVtLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKG91dF9j
b25mX2ZpbGUpCiAgICAgICAgIGYud3JpdGUoYmFzZV9jb25mKQogCiAgICAgICAgICMgV3JpdGUg
b3V0IG91ciBjZ2kgaGFuZGxlcnMuICBSdW4gcGVybCB0aHJvdWdoIGVudiBzbyB0aGF0IGl0CkBA
IC0yMDQsMTMgKzE4NSwxMiBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBT
ZXJ2ZXJCYXNlKToKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0bXBfbW9kdWxl
X3BhdGgpOgogICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHRtcF9tb2R1bGVfcGF0aCkKICAg
ICAgICAgICAgIGxpYl9maWxlID0gJ2xpYmxpZ2h0Y29tcC5keWxpYicKLSAgICAgICAgICAgIHNo
dXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4obW9kdWxlX3BhdGgsIGxpYl9maWxlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odG1wX21vZHVsZV9wYXRoLCBsaWJf
ZmlsZSkpCisgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLmNvcHlmaWxlKG9zLnBhdGguam9p
bihtb2R1bGVfcGF0aCwgbGliX2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcy5wYXRoLmpvaW4odG1wX21vZHVsZV9wYXRoLCBsaWJfZmlsZSkpCiAKICAgICAg
ICAgZW52ID0gc2VsZi5fcG9ydF9vYmouc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKLSAgICAg
ICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgaHR0cCBzZXJ2ZXIsIGNtZD0iJXMiJyAlIHN0cihzdGFy
dF9jbWQpKQotICAgICAgICAjIEZJWE1FOiBTaG91bGQgdXNlIEV4ZWN1dGl2ZS5ydW5fY29tbWFu
ZAotICAgICAgICBzZWxmLl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzdGFydF9jbWQsIGVu
dj1lbnYsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRp
bmcgJXMgc2VydmVyLCBjbWQ9IiVzIicgJSAoc2VsZi5uYW1lLCBzdHIoc3RhcnRfY21kKSkpCisg
ICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4oc3RhcnRfY21kLCBl
bnY9ZW52LCBzdGRpbj1zZWxmLl9leGVjdXRpdmUuUElQRSkKIAogICAgICAgICAjIFdhaXQgZm9y
IHNlcnZlciB0byBzdGFydC4KICAgICAgICAgc2VsZi5tYXBwaW5ncyA9IG1hcHBpbmdzCkBAIC0y
MTksNyArMTk5LDcgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVy
QmFzZSk6CiAKICAgICAgICAgIyBPdXIgcHJvY2VzcyB0ZXJtaW5hdGVkIGFscmVhZHkKICAgICAg
ICAgaWYgbm90IHNlcnZlcl9zdGFydGVkIG9yIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29kZSAhPSBO
b25lOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cGQu
JykKKyAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxl
ZCB0byBzdGFydCAlcy4nICUgc2VsZi5uYW1lKQogCiAgICAgICAgIF9sb2cuZGVidWcoIlNlcnZl
ciBzdWNjZXNzZnVsbHkgc3RhcnRlZCIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weQppbmRleCA4
ZTNkMjA2NThlZWI0MjU1YWUxMjkzYjY5ZTFmMzgwYzMyYWJkNDUwLi5iYjZjMzliZGNjMDIxMjI0
NDBkOTE4NDViMjI4NGJmNWI4ODA5NjU2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlcl9iYXNlLnB5CkBAIC00
MCwxMCArNDAsMTQgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC5odHRwX3NlcnZlcl9iYXNlIikKIAogCiBjbGFzcyBIdHRwU2VydmVyQmFzZShv
YmplY3QpOgorICAgIG5hbWUgPSAnPHZpcnR1YWw+JworICAgIHBpZF9maWxlID0gTm9uZQogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqKToKICAgICAgICAgc2VsZi5fcG9ydF9vYmog
PSBwb3J0X29iagogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBwb3J0X29iai5fZXhlY3V0aXZl
CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0X29iai5fZmlsZXN5c3RlbQorICAgICAg
ICBzZWxmLl9wcm9jZXNzID0gTm9uZQogCiAgICAgZGVmIHdhaXRfZm9yX2FjdGlvbihzZWxmLCBh
Y3Rpb24pOgogICAgICAgICAiIiJSZXBlYXQgdGhlIGFjdGlvbiBmb3IgMjAgc2Vjb25kcyBvciB1
bnRpbCBpdCBzdWNjZWVkcy4gUmV0dXJucwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CmluZGV4IGE3
ZDZkOWJjMjI1OWUwZTkxZTI1YTUzNjE3Mzc5ZTU3NmI0Mzk3NDkuLjU4ZjFiNzlkNjc3YThjOGU0
MTZjOGFiNTgwYWJlMGRiOTEzYmM0MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKQEAgLTMw
LDIwICszMCwxNCBAQAogIiIiQSBjbGFzcyB0byBoZWxwIHN0YXJ0L3N0b3AgdGhlIFB5V2ViU29j
a2V0IHNlcnZlciB1c2VkIGJ5IGxheW91dCB0ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMK
LWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxsaWIKIAotaW1wb3J0IGZh
Y3RvcnkKIGltcG9ydCBodHRwX3NlcnZlcgoraW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UKIAogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiAKQEAg
LTg0LDE1ICs3OCw4IEBAIGRlZiB1cmxfaXNfYWxpdmUodXJsKToKICAgICByZXR1cm4gRmFsc2UK
IAogCi1jbGFzcyBQeVdlYlNvY2tldE5vdFN0YXJ0ZWQoRXhjZXB0aW9uKToKLSAgICBwYXNzCi0K
LQotY2xhc3MgUHlXZWJTb2NrZXROb3RGb3VuZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCiBj
bGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CisgICAgbmFtZSA9ICdweXdl
YnNvY2tldCcKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgb3V0cHV0X2Rpciwg
cG9ydD1fREVGQVVMVF9XU19QT1JULAogICAgICAgICAgICAgICAgICByb290PU5vbmUsIHVzZV90
bHM9RmFsc2UsCkBAIC0xMTMsMTAgKzEwMCw4IEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2Vy
dmVyLkxpZ2h0dHBkKToKICAgICAgICAgaWYgc2VsZi5fcG9ydDoKICAgICAgICAgICAgIHNlbGYu
X3BvcnQgPSBpbnQoc2VsZi5fcG9ydCkKICAgICAgICAgaWYgc2VsZi5fdXNlX3RsczoKLSAgICAg
ICAgICAgIHNlbGYuX3NlcnZlcl9uYW1lID0gJ1B5V2ViU29ja2V0KFNlY3VyZSknCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSA9ICdQeVdlYlNvY2tldCcKLSAg
ICAgICAgc2VsZi5fcGlkZmlsZSA9IHBpZGZpbGUKKyAgICAgICAgICAgIHNlbGYubmFtZSA9ICdw
eXdlYnNvY2tldF9zZWN1cmUnCisgICAgICAgIHNlbGYucGlkX2ZpbGUgPSBwaWRmaWxlCiAgICAg
ICAgIHNlbGYuX3dzb3V0ID0gTm9uZQogCiAgICAgICAgICMgV2Via2l0IHRlc3RzCkBAIC0xMzUs
MTEgKzEyMCwxMCBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAK
ICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl93ZWJfc29ja2V0X3Rl
c3RzOgotICAgICAgICAgICAgX2xvZy5pbmZvKCdObyBuZWVkIHRvIHN0YXJ0ICVzIHNlcnZlci4n
ICUgc2VsZi5fc2VydmVyX25hbWUpCisgICAgICAgICAgICBfbG9nLmluZm8oJ05vIG5lZWQgdG8g
c3RhcnQgJXMgc2VydmVyLicgJSBzZWxmLm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAg
ICAgaWYgc2VsZi5pc19ydW5uaW5nKCk6Ci0gICAgICAgICAgICByYWlzZSBQeVdlYlNvY2tldE5v
dFN0YXJ0ZWQoJyVzIGlzIGFscmVhZHkgcnVubmluZy4nICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSkKKyAgICAgICAgICAgIHJhaXNl
IGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJyVzIGlzIGFscmVhZHkgcnVubmluZy4nICUg
c2VsZi5uYW1lKQogCiAgICAgICAgIHRpbWVfc3RyID0gdGltZS5zdHJmdGltZSgnJWQlYiVZLSVI
JU0lUycpCiAgICAgICAgIGlmIHNlbGYuX3VzZV90bHM6CkBAIC0xNTQsNyArMTM4LDcgQEAgY2xh
c3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBlcnJvcl9sb2cg
PSBvcy5wYXRoLmpvaW4oc2VsZi5fb3V0cHV0X2RpciwgbG9nX2ZpbGVfbmFtZSArICItZXJyLnR4
dCIpCiAKICAgICAgICAgb3V0cHV0X2xvZyA9IG9zLnBhdGguam9pbihzZWxmLl9vdXRwdXRfZGly
LCBsb2dfZmlsZV9uYW1lICsgIi1vdXQudHh0IikKLSAgICAgICAgc2VsZi5fd3NvdXQgPSBjb2Rl
Y3Mub3BlbihvdXRwdXRfbG9nLCAidyIsICJ1dGYtOCIpCisgICAgICAgIHNlbGYuX3dzb3V0ID0g
c2VsZi5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyhvdXRwdXRfbG9nKQog
CiAgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5d2Vic29j
a2V0IGltcG9ydCBtb2RfcHl3ZWJzb2NrZXQKICAgICAgICAgcHl0aG9uX2ludGVycCA9IHN5cy5l
eGVjdXRhYmxlCkBAIC0xOTEsMTYgKzE3NSwxMyBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3Nl
cnZlci5MaWdodHRwZCk6CiAgICAgICAgIGVudlsnUFlUSE9OUEFUSCddID0gKHB5d2Vic29ja2V0
X2Jhc2UgKyBvcy5wYXRoLnBhdGhzZXAgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bnYuZ2V0KCdQWVRIT05QQVRIJywgJycpKQogCi0gICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5n
ICVzIHNlcnZlciBvbiAlZC4nICUgKAotICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9u
YW1lLCBzZWxmLl9wb3J0KSkKLSAgICAgICAgX2xvZy5kZWJ1ZygnY21kbGluZTogJXMnICUgJyAn
LmpvaW4oc3RhcnRfY21kKSkKLSAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGRpcmVjdCB0aGlz
IGNhbGwgdGhyb3VnaCBFeGVjdXRpdmUgZm9yIHRlc3RpbmcuCisgICAgICAgIF9sb2cuZGVidWco
J1N0YXJ0aW5nICVzIHNlcnZlciBvbiAlZCwgY21kPSIlcyIuJyAlIChzZWxmLm5hbWUsIHNlbGYu
X3BvcnQsIHN0cihzdGFydF9jbWQpKSkKICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6
IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Mg
PSBzdWJwcm9jZXNzLlBvcGVuKHN0YXJ0X2NtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkaW49b3Blbihvcy5kZXZudWxsLCAncicpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c2VsZi5fd3NvdXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9V
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAg
ICAgICAgc2VsZi5fcHJvY2VzcyA9IHNlbGYuX2V4ZWN1dGl2ZS5wb3BlbihzdGFydF9jbWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49b3Blbihv
cy5kZXZudWxsLCAncicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zZWxmLl93c291dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGRlcnI9c2VsZi5fZXhlY3V0aXZlLlNURE9VVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52KQogCiAgICAgICAg
IGlmIHNlbGYuX3VzZV90bHM6CiAgICAgICAgICAgICB1cmwgPSAnaHR0cHMnCkBAIC0yMTAsMjAg
KzE5MSwxNSBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAg
ICAgIGlmIG5vdCB1cmxfaXNfYWxpdmUodXJsKToKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2Nl
c3MucmV0dXJuY29kZSA9PSBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5r
aWxsX3Byb2Nlc3Moc2VsZi5fcHJvY2Vzcy5waWQpCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5v
cGVuKG91dHB1dF9sb2csICJyIiwgInV0Zi04IikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgZm9y
IGxpbmUgaW4gZnA6Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IobGluZSkKLSAgICAg
ICAgICAgIHJhaXNlIFB5V2ViU29ja2V0Tm90U3RhcnRlZCgKLSAgICAgICAgICAgICAgICAnRmFp
bGVkIHRvIHN0YXJ0ICVzIHNlcnZlciBvbiBwb3J0ICVzLicgJQotICAgICAgICAgICAgICAgICAg
ICAoc2VsZi5fc2VydmVyX25hbWUsIHNlbGYuX3BvcnQpKQorICAgICAgICAgICAgZm9yIGxpbmUg
aW4gc2VsZi5yZWFkX3RleHRfZmlsZShvdXRwdXRfbG9nKS5zcGxpdGxpbmVzKCk6CisgICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJf
YmFzZS5TZXJ2ZXJFcnJvcignRmFpbGVkIHRvIHN0YXJ0ICVzIHNlcnZlciBvbiBwb3J0ICVzLicg
JSAoc2VsZi5uYW1lLCBzZWxmLl9wb3J0KSkKIAogICAgICAgICAjIE91ciBwcm9jZXNzIHRlcm1p
bmF0ZWQgYWxyZWFkeQogICAgICAgICBpZiBzZWxmLl9wcm9jZXNzLnJldHVybmNvZGUgIT0gTm9u
ZToKLSAgICAgICAgICAgIHJhaXNlIFB5V2ViU29ja2V0Tm90U3RhcnRlZCgKLSAgICAgICAgICAg
ICAgICAnRmFpbGVkIHRvIHN0YXJ0ICVzIHNlcnZlci4nICUgc2VsZi5fc2VydmVyX25hbWUpCi0g
ICAgICAgIGlmIHNlbGYuX3BpZGZpbGU6Ci0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHNl
bGYuX3BpZGZpbGUsICJ3IiwgImFzY2lpIikgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxl
LndyaXRlKCIlZCIgJSBzZWxmLl9wcm9jZXNzLnBpZCkKKyAgICAgICAgICAgIHJhaXNlIGh0dHBf
c2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxlZCB0byBzdGFydCAlcyBzZXJ2ZXIuJyAlIHNl
bGYubmFtZSkKKyAgICAgICAgaWYgc2VsZi5waWRfZmlsZToKKyAgICAgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHNlbGYucGlkX2ZpbGUsICIlZCIgJSBzZWxmLl9wcm9j
ZXNzLnBpZCkKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19y
dW5uaW5nKCk6CkBAIC0yMzIsMTUgKzIwOCwxMyBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3Nl
cnZlci5MaWdodHRwZCk6CiAgICAgICAgIHBpZCA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5fcHJv
Y2VzczoKICAgICAgICAgICAgIHBpZCA9IHNlbGYuX3Byb2Nlc3MucGlkCi0gICAgICAgIGVsaWYg
c2VsZi5fcGlkZmlsZToKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oc2VsZi5fcGlkZmls
ZSwgInIiLCAiYXNjaWkiKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHBpZCA9IGludChmaWxl
LnJlYWQoKS5zdHJpcCgpKQorICAgICAgICBlbGlmIHNlbGYucGlkX2ZpbGU6CisgICAgICAgICAg
ICBwaWQgPSBpbnQoc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShzZWxmLnBpZF9maWxl
KSkKIAogICAgICAgICBpZiBub3QgcGlkOgotICAgICAgICAgICAgcmFpc2UgUHlXZWJTb2NrZXRO
b3RGb3VuZCgKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGZpbmQgJXMgc2VydmVyIHBpZC4n
ICUgc2VsZi5fc2VydmVyX25hbWUpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNl
LlNlcnZlckVycm9yKCdGYWlsZWQgdG8gZmluZCAlcyBzZXJ2ZXIgcGlkLicgJSBzZWxmLm5hbWUp
CiAKLSAgICAgICAgX2xvZy5kZWJ1ZygnU2h1dHRpbmcgZG93biAlcyBzZXJ2ZXIgJWQuJyAlIChz
ZWxmLl9zZXJ2ZXJfbmFtZSwgcGlkKSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnU2h1dHRpbmcgZG93
biAlcyBzZXJ2ZXIgJWQuJyAlIChzZWxmLm5hbWUsIHBpZCkpCiAgICAgICAgIHNlbGYuX2V4ZWN1
dGl2ZS5raWxsX3Byb2Nlc3MocGlkKQogCiAgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96357</attachid>
            <date>2011-06-07 19:31:08 -0700</date>
            <delta_ts>2011-06-09 17:43:11 -0700</delta_ts>
            <desc>add missing ServerError</desc>
            <filename>bug-62256-20110607193107.patch</filename>
            <type>text/plain</type>
            <size>18783</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyODgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNjE4ZDQ1NzZlY2JlMDJhODhmYmQ4ODQ3NTljMTgzNDA3
YmYyNGM4Li40NjljZDRmMTI4NWNiOWVhZjcxYjI2N2VjZjkxOWJkNjZiMzIxZDhhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjYg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICB3ZWJr
aXRweTogY2xlYW4gdXAgY29kZSBwcmlvciB0byBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIHNlcnZl
ciBzdGFydHVwL3NodXRkb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MjI1NgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBhIGJ1bmNoIG9mIG1p
bm9yIGNsZWFudXAgb2YgdGhlIGNvZGUsIGJ1dCB0aGVyZQorICAgICAgICBzaG91bGQgYmUgbm8g
ZnVuY3Rpb25hbCBjaGFuZ2VzIGV4Y2VwdCB0aGF0IGFsbCBvZiB0aGUgbW9kdWxlcworICAgICAg
ICB3aWxsIG5vdyB1c2UgdGhlIHNhbWUgZXhjZXB0aW9uIHR5cGUuIE90aGVyIGNoYW5nZXMgaW5j
bHVkZQorICAgICAgICByZW1vdmluZyB1bnVzZWQgY29kZSBwYXRocyBhbmQgZnVuY3Rpb25zLCB1
c2luZyAnbmFtZScgYW5kCisgICAgICAgICdwaWRfZmlsZScgYXMgcHVibGljIHByb3BlcnRpZXMg
b24gdGhlIHNlcnZlciBvYmplY3RzLCBhbmQgdXNpbmcKKyAgICAgICAgdGhlIEZpbGVzeXN0ZW0g
b2JqZWN0IGluc3RlYWQgb2YgdGhlIGNvZGVjcywgdGVtcGZpbGUsIGFuZAorICAgICAgICBzaHV0
aWxzIG1vZHVsZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHk6CisKKzIw
MTEtMDYtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgd2Via2l0cHk6IGFkZCBpbnRl
Z3JhdGlvbiB0ZXN0cyBmb3IgbmV3LXJ1bi13ZWJraXQtaHR0cGQsIHN0b3AgY2FsbGluZyBzaHV0
X2Rvd25faHR0cF9zZXJ2ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyMjUxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKaW5kZXggOTA5Mjk3
OGZmMmRkMDE2Mjc5YzVjMmRiMzdjMmU0N2UxOGQ1MzhlYy4uNWEzYWE3Nzg2M2M5OTJhMzY1NTA0
NGJkMDJiODU2ZDA3ZTUyMmI5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTMw
LDE0ICszMCw5IEBACiAiIiJBIGNsYXNzIHRvIHN0YXJ0L3N0b3AgdGhlIGFwYWNoZSBodHRwIHNl
cnZlciB1c2VkIGJ5IGxheW91dCB0ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3B0cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0
IHN5cwogCiBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQpAQCAtNDYsNiArNDEsNyBAQCBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmFwYWNoZV9odHRw
X3NlcnZlciIpCiAKIAogY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jh
c2UuSHR0cFNlcnZlckJhc2UpOgorICAgIG5hbWUgPSAnYXBhY2hlJwogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyKToKICAgICAgICAgIiIiQXJnczoKQEAgLTU0
LDcgKzUwLDYgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5I
dHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0X29iaikKICAgICAgICAgc2VsZi5fb3V0
cHV0X2RpciA9IG91dHB1dF9kaXIKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IE5vbmUKICAg
ICAgICAgcG9ydF9vYmoubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKIAogICAgICAg
ICBzZWxmLm1hcHBpbmdzID0gW3sncG9ydCc6IDgwMDB9LApAQCAtNzAsNyArNjUsNyBAQCBjbGFz
cyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6
CiAgICAgICAgICMgVGhlIFBJRCByZXR1cm5lZCB3aGVuIEFwYWNoZSBpcyBzdGFydGVkIGdvZXMg
YXdheSAoZHVlIHRvIGRyb3BwaW5nCiAgICAgICAgICMgcHJpdmlsZWdlcz8pLiBUaGUgcHJvcGVy
IGNvbnRyb2xsaW5nIFBJRCBpcyB3cml0dGVuIHRvIGEgZmlsZSBpbiB0aGUKICAgICAgICAgIyBh
cGFjaGUgcnVudGltZSBkaXJlY3RvcnkuCi0gICAgICAgIHNlbGYuX3BpZF9maWxlID0gb3MucGF0
aC5qb2luKHNlbGYuX3J1bnRpbWVfcGF0aCwgJ2h0dHBkLnBpZCcpCisgICAgICAgIHNlbGYucGlk
X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcnVudGltZV9wYXRoLCAnaHR0cGQucGlkJykKIAog
ICAgICAgICB0ZXN0X2RpciA9IHNlbGYuX3BvcnRfb2JqLmxheW91dF90ZXN0c19kaXIoKQogICAg
ICAgICBqc190ZXN0X3Jlc291cmNlc19kaXIgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKHRlc3Rf
ZGlyLCAiZmFzdCIsICJqcyIsCkBAIC0xNTcsOSArMTUyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEFw
YWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIK
ICAgICAgICAgaHR0cGRfY29uZmlnID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfdG9fYXBhY2hlX2Nv
bmZpZ19maWxlKCkKICAgICAgICAgaHR0cGRfY29uZmlnX2NvcHkgPSBvcy5wYXRoLmpvaW4ob3V0
cHV0X2RpciwgImh0dHBkLmNvbmYiKQotICAgICAgICAjIGh0dHBkLmNvbmYgaXMgYWx3YXlzIHV0
Zi04IGFjY29yZGluZyB0byBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2duYXRzLzEwMTI1Ci0g
ICAgICAgIHdpdGggY29kZWNzLm9wZW4oaHR0cGRfY29uZmlnLCAiciIsICJ1dGYtOCIpIGFzIGh0
dHBkX2NvbmZpZ19maWxlOgotICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmZpZ19m
aWxlLnJlYWQoKQorICAgICAgICBodHRwZF9jb25mID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZShodHRwZF9jb25maWcpCiAgICAgICAgIGlmIHNlbGYuX2lzX2N5Z3dpbigpOgogICAg
ICAgICAgICAgIyBUaGlzIGlzIGEgZ3Jvc3MgaGFjaywgYnV0IGl0IGxldHMgdXMgdXNlIHRoZSB1
cHN0cmVhbSAuY29uZiBmaWxlCiAgICAgICAgICAgICAjIGFuZCBvdXIgY2hlY2tlZCBpbiBjeWd3
aW4uIFRoaXMgdGVsbHMgdGhlIHNlcnZlciB0aGUgcm9vdApAQCAtMTcyLDIyICsxNjUsMTIgQEAg
Y2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJh
c2UpOgogICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmYucmVwbGFjZSgnU2VydmVy
Um9vdCAiL3VzciInLAogICAgICAgICAgICAgICAgICdTZXJ2ZXJSb290ICIlcyInICUgc2VsZi5f
Z2V0X2N5Z3dpbl9wYXRoKGN5Z3VzcikpCiAKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihodHRw
ZF9jb25maWdfY29weSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53
cml0ZShodHRwZF9jb25mKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmls
ZShodHRwZF9jb25maWdfY29weSwgaHR0cGRfY29uZikKIAogICAgICAgICBpZiBzZWxmLl9pc19j
eWd3aW4oKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY3lnd2luX3BhdGgoaHR0cGRf
Y29uZmlnX2NvcHkpCiAgICAgICAgIHJldHVybiBodHRwZF9jb25maWdfY29weQogCi0gICAgZGVm
IF9nZXRfdmlydHVhbF9ob3N0X2NvbmZpZyhzZWxmLCBkb2N1bWVudF9yb290LCBwb3J0LCBzc2w9
RmFsc2UpOgotICAgICAgICAiIiJSZXR1cm5zIGEgPFZpcnR1YWxIb3N0PiBkaXJlY3RpdmUgYmxv
Y2sgZm9yIGFuIGh0dHBkLmNvbmYgZmlsZS4KLSAgICAgICAgSXQgd2lsbCBsaXN0ZW4gdG8gMTI3
LjAuMC4xIG9uIGVhY2ggb2YgdGhlIGdpdmVuIHBvcnQuCi0gICAgICAgICIiIgotICAgICAgICBy
ZXR1cm4gJ1xuJy5qb2luKCgnPFZpcnR1YWxIb3N0IDEyNy4wLjAuMTolcz4nICUgcG9ydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RvY3VtZW50Um9vdCAiJXMiJyAlIGRvY3VtZW50X3Jv
b3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNzbCBhbmQgJ1NTTEVuZ2luZSBPbicgb3Ig
JycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICc8L1ZpcnR1YWxIb3N0PicsICcnKSkKLQog
ICAgIGRlZiBfc3RhcnRfaHR0cGRfcHJvY2VzcyhzZWxmKToKICAgICAgICAgIiIiU3RhcnRzIHRo
ZSBodHRwZCBwcm9jZXNzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2VyZSBlcnJvcnMuIiIi
CiAgICAgICAgICMgVXNlIHNoZWxsPVRydWUgYmVjYXVzZSB3ZSBqb2luIHRoZSBhcmd1bWVudHMg
aW50byBhIHN0cmluZyBmb3IKQEAgLTE5NywxMCArMTgwLDggQEAgY2xhc3MgTGF5b3V0VGVzdEFw
YWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAjIHNo
ZWxsPVRydWUgaXMgYSB0cmFpbCBvZiB0ZWFycy4KICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFk
IHNhZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgIF9sb2cuZGVi
dWcoJ1N0YXJ0aW5nIGh0dHAgc2VydmVyLCBjbWQ9IiVzIicgJSBzdHIoc2VsZi5fc3RhcnRfY21k
KSkKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5fc3Rh
cnRfY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRl
cnI9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXJy
ID0gc2VsZi5faHR0cGRfcHJvYy5zdGRlcnIucmVhZCgpCisgICAgICAgIHNlbGYuX3Byb2Nlc3Mg
PSBzZWxmLl9leGVjdXRpdmUucG9wZW4oc2VsZi5fc3RhcnRfY21kLCBzdGRlcnI9c2VsZi5fZXhl
Y3V0aXZlLlBJUEUsIHNoZWxsPVRydWUpCisgICAgICAgIGVyciA9IHNlbGYuX3Byb2Nlc3Muc3Rk
ZXJyLnJlYWQoKQogICAgICAgICBpZiBsZW4oZXJyKToKICAgICAgICAgICAgIF9sb2cuZGVidWco
ZXJyKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yMTEsNyArMTkyLDcgQEAgY2xhc3Mg
TGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgog
ICAgICAgICAjIFN0b3AgYW55IGN1cnJlbnRseSBydW5uaW5nIHNlcnZlcnMuCiAgICAgICAgIHNl
bGYuc3RvcCgpCiAKLSAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgYXBhY2hlIGh0dHAgc2Vy
dmVyIikKKyAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgJXMgc2VydmVyIiAlIHNlbGYubmFt
ZSkKICAgICAgICAgc2VydmVyX3N0YXJ0ZWQgPSBzZWxmLndhaXRfZm9yX2FjdGlvbihzZWxmLl9z
dGFydF9odHRwZF9wcm9jZXNzKQogICAgICAgICBpZiBzZXJ2ZXJfc3RhcnRlZDoKICAgICAgICAg
ICAgIF9sb2cuZGVidWcoIkFwYWNoZSBzdGFydGVkLiBUZXN0aW5nIHBvcnRzIikKQEAgLTIyMSwx
NSArMjAyLDE1IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNl
Lkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgaWYgc2VydmVyX3N0YXJ0ZWQ6CiAgICAgICAgICAg
ICBfbG9nLmRlYnVnKCJTZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQiKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cCBzZXJ2
ZXInKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFp
bGVkIHRvIHN0YXJ0IGh0dHAgc2VydmVyJykKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAg
ICAiIiJTdG9wcyB0aGUgYXBhY2hlIGh0dHAgc2VydmVyLiIiIgogICAgICAgICBfbG9nLmRlYnVn
KCJTaHV0dGluZyBkb3duIGFueSBydW5uaW5nIGh0dHAgc2VydmVycyIpCiAgICAgICAgIGh0dHBk
X3BpZCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5faHR0cGRfcHJvYzoKLSAgICAgICAgICAgIGh0
dHBkX3BpZCA9IHNlbGYuX2h0dHBkX3Byb2MucGlkCi0gICAgICAgIGVsaWYgb3MucGF0aC5leGlz
dHMoc2VsZi5fcGlkX2ZpbGUpOgotICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9wZW4oc2Vs
Zi5fcGlkX2ZpbGUpLnJlYWRsaW5lKCkpCisgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6CisgICAg
ICAgICAgICBodHRwZF9waWQgPSBzZWxmLl9wcm9jZXNzLnBpZAorICAgICAgICBlbGlmIG9zLnBh
dGguZXhpc3RzKHNlbGYucGlkX2ZpbGUpOgorICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9w
ZW4oc2VsZi5waWRfZmlsZSkucmVhZGxpbmUoKSkKICAgICAgICAgaWYgaHR0cGRfcGlkOgogICAg
ICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhodHRwZF9waWQpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZl
ci5weQppbmRleCAzYTU0Yzk5YjIwMDg4YjE3MDMxMzIzYTAwMTY1NTc3NTkxM2VkMmUxLi44OGVk
NzYxMDU5YmZkNWYyN2M4NmM5YWIxNDBmYmQxNmM3MjJjYWIxIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXIucHkKQEAg
LTI5LDI2ICsyOSwxOSBAQAogCiAiIiJBIGNsYXNzIHRvIGhlbHAgc3RhcnQvc3RvcCB0aGUgbGln
aHR0cGQgc2VydmVyIHVzZWQgYnkgbGF5b3V0IHRlc3RzLiIiIgogCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN1YnByb2Nl
c3MKIGltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxs
aWIKIAotaW1wb3J0IGZhY3RvcnkKIGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuaHR0cF9zZXJ2ZXIi
KQogCiAKIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgor
ICAgIG5hbWUgPSAnbGlnaHR0cGQnCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmos
IG91dHB1dF9kaXIsIGJhY2tncm91bmQ9RmFsc2UsIHBvcnQ9Tm9uZSwKICAgICAgICAgICAgICAg
ICAgcm9vdD1Ob25lLCBydW5fYmFja2dyb3VuZD1Ob25lLCBsYXlvdXRfdGVzdHNfZGlyPU5vbmUp
OgpAQCAtNzAsMTggKzYzLDkgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRw
U2VydmVyQmFzZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9sYXlvdXRfdGVzdHNfZGlyOgogICAg
ICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYuX3BvcnRfb2JqLmxheW91dF90
ZXN0c19kaXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dlYmtpdF90ZXN0
cyA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGly
LCAnaHR0cCcsICd0ZXN0cycpCi0gICAgICAgICAgICBzZWxmLl9qc190ZXN0X3Jlc291cmNlID0g
b3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIsICdm
YXN0JywgJ2pzJywgJ3Jlc291cmNlcycpCi0gICAgICAgICAgICBzZWxmLl9tZWRpYV9yZXNvdXJj
ZSA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGly
LCAnbWVkaWEnKQotCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuX3dlYmtpdF90
ZXN0cyA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuX2pzX3Rlc3RfcmVzb3VyY2UgPSBOb25lCi0g
ICAgICAgICAgICBzZWxmLl9tZWRpYV9yZXNvdXJjZSA9IE5vbmUKKyAgICAgICAgc2VsZi5fd2Vi
a2l0X3Rlc3RzID0gb3MucGF0aC5qb2luKHNlbGYuX2xheW91dF90ZXN0c19kaXIsICdodHRwJywg
J3Rlc3RzJykKKyAgICAgICAgc2VsZi5fanNfdGVzdF9yZXNvdXJjZSA9IG9zLnBhdGguam9pbihz
ZWxmLl9sYXlvdXRfdGVzdHNfZGlyLCAnZmFzdCcsICdqcycsICdyZXNvdXJjZXMnKQorICAgICAg
ICBzZWxmLl9tZWRpYV9yZXNvdXJjZSA9IG9zLnBhdGguam9pbihzZWxmLl9sYXlvdXRfdGVzdHNf
ZGlyLCAnbWVkaWEnKQogCiAgICAgICAgICMgU2VsZiBnZW5lcmF0ZWQgY2VydGlmaWNhdGUgZm9y
IFNTTCBzZXJ2ZXIgKGZvciBjbGllbnQgY2VydCBnZXQKICAgICAgICAgIyA8YmFzZS1wYXRoPlxj
aHJvbWVcdGVzdFxkYXRhXHNzbFxjZXJ0c1xyb290X2NhX2NlcnQuY3J0KQpAQCAtMTA0LDcgKzg4
LDcgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAK
ICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgotICAg
ICAgICAgICAgcmFpc2UgJ0xpZ2h0dHBkIGFscmVhZHkgcnVubmluZycKKyAgICAgICAgICAgIHJh
aXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0xpZ2h0dHBkIGFscmVhZHkgcnVubmlu
ZycpCiAKICAgICAgICAgYmFzZV9jb25mX2ZpbGUgPSBzZWxmLl9wb3J0X29iai5wYXRoX2Zyb21f
d2Via2l0X2Jhc2UoJ1Rvb2xzJywKICAgICAgICAgICAgICdTY3JpcHRzJywgJ3dlYmtpdHB5Jywg
J2xheW91dF90ZXN0cycsICdwb3J0JywgJ2xpZ2h0dHBkLmNvbmYnKQpAQCAtMTIwLDE0ICsxMDQs
MTEgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAg
ICAgICAgIHNlbGYucmVtb3ZlX2xvZ19maWxlcyhzZWxmLl9vdXRwdXRfZGlyLCAiZXJyb3IubG9n
LSIpCiAKICAgICAgICAgIyBXcml0ZSBvdXQgdGhlIGNvbmZpZwotICAgICAgICB3aXRoIGNvZGVj
cy5vcGVuKGJhc2VfY29uZl9maWxlLCAiciIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgICAg
ICBiYXNlX2NvbmYgPSBmaWxlLnJlYWQoKQorICAgICAgICBiYXNlX2NvbmYgPSBzZWxmLl9maWxl
c3lzdGVtLnJlYWRfdGV4dF9maWxlKGJhc2VfY29uZl9maWxlKQogCiAgICAgICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIGJlIHJlLXdvcmtlZCBzbyB0aGF0IHRoaXMgYmxvY2sgY2FuCiAgICAgICAg
ICMgdXNlIHdpdGggb3BlbigpIGluc3RlYWQgb2YgYSBtYW51YWwgZmlsZS5jbG9zZSgpIGNhbGwu
Ci0gICAgICAgICMgbGlnaHR0cGQuY29uZiBmaWxlcyBzZWVtIHRvIGJlIFVURi04IHdpdGhvdXQg
Qk9NOgotICAgICAgICAjIGh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9pc3N1ZXMvOTkyCi0g
ICAgICAgIGYgPSBjb2RlY3Mub3BlbihvdXRfY29uZl9maWxlLCAidyIsICJ1dGYtOCIpCisgICAg
ICAgIGYgPSBzZWxmLl9maWxlc3lzdGVtLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKG91dF9j
b25mX2ZpbGUpCiAgICAgICAgIGYud3JpdGUoYmFzZV9jb25mKQogCiAgICAgICAgICMgV3JpdGUg
b3V0IG91ciBjZ2kgaGFuZGxlcnMuICBSdW4gcGVybCB0aHJvdWdoIGVudiBzbyB0aGF0IGl0CkBA
IC0yMDQsMTMgKzE4NSwxMiBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBT
ZXJ2ZXJCYXNlKToKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0bXBfbW9kdWxl
X3BhdGgpOgogICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHRtcF9tb2R1bGVfcGF0aCkKICAg
ICAgICAgICAgIGxpYl9maWxlID0gJ2xpYmxpZ2h0Y29tcC5keWxpYicKLSAgICAgICAgICAgIHNo
dXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4obW9kdWxlX3BhdGgsIGxpYl9maWxlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odG1wX21vZHVsZV9wYXRoLCBsaWJf
ZmlsZSkpCisgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLmNvcHlmaWxlKG9zLnBhdGguam9p
bihtb2R1bGVfcGF0aCwgbGliX2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcy5wYXRoLmpvaW4odG1wX21vZHVsZV9wYXRoLCBsaWJfZmlsZSkpCiAKICAgICAg
ICAgZW52ID0gc2VsZi5fcG9ydF9vYmouc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKLSAgICAg
ICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgaHR0cCBzZXJ2ZXIsIGNtZD0iJXMiJyAlIHN0cihzdGFy
dF9jbWQpKQotICAgICAgICAjIEZJWE1FOiBTaG91bGQgdXNlIEV4ZWN1dGl2ZS5ydW5fY29tbWFu
ZAotICAgICAgICBzZWxmLl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzdGFydF9jbWQsIGVu
dj1lbnYsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRp
bmcgJXMgc2VydmVyLCBjbWQ9IiVzIicgJSAoc2VsZi5uYW1lLCBzdHIoc3RhcnRfY21kKSkpCisg
ICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4oc3RhcnRfY21kLCBl
bnY9ZW52LCBzdGRpbj1zZWxmLl9leGVjdXRpdmUuUElQRSkKIAogICAgICAgICAjIFdhaXQgZm9y
IHNlcnZlciB0byBzdGFydC4KICAgICAgICAgc2VsZi5tYXBwaW5ncyA9IG1hcHBpbmdzCkBAIC0y
MTksNyArMTk5LDcgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVy
QmFzZSk6CiAKICAgICAgICAgIyBPdXIgcHJvY2VzcyB0ZXJtaW5hdGVkIGFscmVhZHkKICAgICAg
ICAgaWYgbm90IHNlcnZlcl9zdGFydGVkIG9yIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29kZSAhPSBO
b25lOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cGQu
JykKKyAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxl
ZCB0byBzdGFydCAlcy4nICUgc2VsZi5uYW1lKQogCiAgICAgICAgIF9sb2cuZGVidWcoIlNlcnZl
ciBzdWNjZXNzZnVsbHkgc3RhcnRlZCIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weQppbmRleCA4
ZTNkMjA2NThlZWI0MjU1YWUxMjkzYjY5ZTFmMzgwYzMyYWJkNDUwLi43MWU3YjFlMmFiZjYwMDQy
YWYzNmFkNGU1YjliNWQyNTdlNjU5MWI0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlcl9iYXNlLnB5CkBAIC0z
OSwxMSArMzksMTkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lz
dGVtCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
Lmh0dHBfc2VydmVyX2Jhc2UiKQogCiAKK2NsYXNzIFNlcnZlckVycm9yKEV4Y2VwdGlvbik6Cisg
ICAgcGFzcworCisKIGNsYXNzIEh0dHBTZXJ2ZXJCYXNlKG9iamVjdCk6CisgICAgbmFtZSA9ICc8
dmlydHVhbD4nCisgICAgcGlkX2ZpbGUgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydF9vYmopOgogICAgICAgICBzZWxmLl9wb3J0X29iaiA9IHBvcnRfb2JqCiAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZSA9IHBvcnRfb2JqLl9leGVjdXRpdmUKKyAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbSA9IHBvcnRfb2JqLl9maWxlc3lzdGVtCisgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBOb25l
CiAKICAgICBkZWYgd2FpdF9mb3JfYWN0aW9uKHNlbGYsIGFjdGlvbik6CiAgICAgICAgICIiIlJl
cGVhdCB0aGUgYWN0aW9uIGZvciAyMCBzZWNvbmRzIG9yIHVudGlsIGl0IHN1Y2NlZWRzLiBSZXR1
cm5zCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYnNvY2tldF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKaW5kZXggYTdkNmQ5YmMyMjU5ZTBlOTFlMjVhNTM2
MTczNzllNTc2YjQzOTc0OS4uNThmMWI3OWQ2NzdhOGM4ZTQxNmM4YWI1ODBhYmUwZGI5MTNiYzQx
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJzb2NrZXRfc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQpAQCAtMzAsMjAgKzMwLDE0IEBACiAiIiJBIGNs
YXNzIHRvIGhlbHAgc3RhcnQvc3RvcCB0aGUgUHlXZWJTb2NrZXQgc2VydmVyIHVzZWQgYnkgbGF5
b3V0IHRlc3RzLiIiIgogCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQK
LQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcHRwYXJzZQogaW1wb3J0
IG9zCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBv
cnQgdGltZQogaW1wb3J0IHVybGxpYgogCi1pbXBvcnQgZmFjdG9yeQogaW1wb3J0IGh0dHBfc2Vy
dmVyCitpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIApAQCAtODQsMTUgKzc4LDggQEAgZGVmIHVy
bF9pc19hbGl2ZSh1cmwpOgogICAgIHJldHVybiBGYWxzZQogCiAKLWNsYXNzIFB5V2ViU29ja2V0
Tm90U3RhcnRlZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1jbGFzcyBQeVdlYlNvY2tldE5v
dEZvdW5kKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBf
c2VydmVyLkxpZ2h0dHBkKToKKyAgICBuYW1lID0gJ3B5d2Vic29ja2V0JwogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyLCBwb3J0PV9ERUZBVUxUX1dTX1BPUlQs
CiAgICAgICAgICAgICAgICAgIHJvb3Q9Tm9uZSwgdXNlX3Rscz1GYWxzZSwKQEAgLTExMywxMCAr
MTAwLDggQEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAg
ICBpZiBzZWxmLl9wb3J0OgogICAgICAgICAgICAgc2VsZi5fcG9ydCA9IGludChzZWxmLl9wb3J0
KQogICAgICAgICBpZiBzZWxmLl91c2VfdGxzOgotICAgICAgICAgICAgc2VsZi5fc2VydmVyX25h
bWUgPSAnUHlXZWJTb2NrZXQoU2VjdXJlKScKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
bGYuX3NlcnZlcl9uYW1lID0gJ1B5V2ViU29ja2V0JwotICAgICAgICBzZWxmLl9waWRmaWxlID0g
cGlkZmlsZQorICAgICAgICAgICAgc2VsZi5uYW1lID0gJ3B5d2Vic29ja2V0X3NlY3VyZScKKyAg
ICAgICAgc2VsZi5waWRfZmlsZSA9IHBpZGZpbGUKICAgICAgICAgc2VsZi5fd3NvdXQgPSBOb25l
CiAKICAgICAgICAgIyBXZWJraXQgdGVzdHMKQEAgLTEzNSwxMSArMTIwLDEwIEBAIGNsYXNzIFB5
V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKIAogICAgIGRlZiBzdGFydChzZWxmKToK
ICAgICAgICAgaWYgbm90IHNlbGYuX3dlYl9zb2NrZXRfdGVzdHM6Ci0gICAgICAgICAgICBfbG9n
LmluZm8oJ05vIG5lZWQgdG8gc3RhcnQgJXMgc2VydmVyLicgJSBzZWxmLl9zZXJ2ZXJfbmFtZSkK
KyAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gbmVlZCB0byBzdGFydCAlcyBzZXJ2ZXIuJyAlIHNl
bGYubmFtZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLmlzX3J1bm5pbmco
KToKLSAgICAgICAgICAgIHJhaXNlIFB5V2ViU29ja2V0Tm90U3RhcnRlZCgnJXMgaXMgYWxyZWFk
eSBydW5uaW5nLicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3NlcnZlcl9uYW1lKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2
ZXJFcnJvcignJXMgaXMgYWxyZWFkeSBydW5uaW5nLicgJSBzZWxmLm5hbWUpCiAKICAgICAgICAg
dGltZV9zdHIgPSB0aW1lLnN0cmZ0aW1lKCclZCViJVktJUglTSVTJykKICAgICAgICAgaWYgc2Vs
Zi5fdXNlX3RsczoKQEAgLTE1NCw3ICsxMzgsNyBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3Nl
cnZlci5MaWdodHRwZCk6CiAgICAgICAgIGVycm9yX2xvZyA9IG9zLnBhdGguam9pbihzZWxmLl9v
dXRwdXRfZGlyLCBsb2dfZmlsZV9uYW1lICsgIi1lcnIudHh0IikKIAogICAgICAgICBvdXRwdXRf
bG9nID0gb3MucGF0aC5qb2luKHNlbGYuX291dHB1dF9kaXIsIGxvZ19maWxlX25hbWUgKyAiLW91
dC50eHQiKQotICAgICAgICBzZWxmLl93c291dCA9IGNvZGVjcy5vcGVuKG91dHB1dF9sb2csICJ3
IiwgInV0Zi04IikKKyAgICAgICAgc2VsZi5fd3NvdXQgPSBzZWxmLl9maWxlc3lzdGVtLm9wZW5f
dGV4dF9maWxlX2Zvcl93cml0aW5nKG91dHB1dF9sb2cpCiAKICAgICAgICAgZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHl3ZWJzb2NrZXQgaW1wb3J0IG1vZF9weXdlYnNv
Y2tldAogICAgICAgICBweXRob25faW50ZXJwID0gc3lzLmV4ZWN1dGFibGUKQEAgLTE5MSwxNiAr
MTc1LDEzIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAgICAg
ICAgZW52WydQWVRIT05QQVRIJ10gPSAocHl3ZWJzb2NrZXRfYmFzZSArIG9zLnBhdGgucGF0aHNl
cCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5nZXQoJ1BZVEhPTlBBVEgnLCAn
JykpCiAKLSAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgJXMgc2VydmVyIG9uICVkLicgJSAo
Ci0gICAgICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX25hbWUsIHNlbGYuX3BvcnQpKQotICAg
ICAgICBfbG9nLmRlYnVnKCdjbWRsaW5lOiAlcycgJSAnICcuam9pbihzdGFydF9jbWQpKQotICAg
ICAgICAjIEZJWE1FOiBXZSBzaG91bGQgZGlyZWN0IHRoaXMgY2FsbCB0aHJvdWdoIEV4ZWN1dGl2
ZSBmb3IgdGVzdGluZy4KKyAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgJXMgc2VydmVyIG9u
ICVkLCBjbWQ9IiVzIi4nICUgKHNlbGYubmFtZSwgc2VsZi5fcG9ydCwgc3RyKHN0YXJ0X2NtZCkp
KQogICAgICAgICAjIE5vdGU6IE5vdCB0aHJlYWQgc2FmZTogaHR0cDovL2J1Z3MucHl0aG9uLm9y
Zy9pc3N1ZTIzMjAKLSAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oc3Rh
cnRfY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1v
cGVuKG9zLmRldm51bGwsICdyJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zZWxmLl93c291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52KQorICAgICAgICBzZWxmLl9wcm9jZXNzID0g
c2VsZi5fZXhlY3V0aXZlLnBvcGVuKHN0YXJ0X2NtZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1vcGVuKG9zLmRldm51bGwsICdyJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXNlbGYuX3dz
b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVy
cj1zZWxmLl9leGVjdXRpdmUuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVudj1lbnYpCiAKICAgICAgICAgaWYgc2VsZi5fdXNlX3RsczoKICAg
ICAgICAgICAgIHVybCA9ICdodHRwcycKQEAgLTIxMCwyMCArMTkxLDE1IEBAIGNsYXNzIFB5V2Vi
U29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAgICAgICAgaWYgbm90IHVybF9pc19hbGl2
ZSh1cmwpOgogICAgICAgICAgICAgaWYgc2VsZi5fcHJvY2Vzcy5yZXR1cm5jb2RlID09IE5vbmU6
CiAgICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhzZWxmLl9wcm9j
ZXNzLnBpZCkKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ob3V0cHV0X2xvZywgInIiLCAi
dXRmLTgiKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAgICAg
ICAgICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQotICAgICAgICAgICAgcmFpc2UgUHlXZWJTb2Nr
ZXROb3RTdGFydGVkKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gc3RhcnQgJXMgc2VydmVy
IG9uIHBvcnQgJXMuJyAlCi0gICAgICAgICAgICAgICAgICAgIChzZWxmLl9zZXJ2ZXJfbmFtZSwg
c2VsZi5fcG9ydCkpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLnJlYWRfdGV4dF9maWxl
KG91dHB1dF9sb2cpLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGxp
bmUpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9yKCdGYWls
ZWQgdG8gc3RhcnQgJXMgc2VydmVyIG9uIHBvcnQgJXMuJyAlIChzZWxmLm5hbWUsIHNlbGYuX3Bv
cnQpKQogCiAgICAgICAgICMgT3VyIHByb2Nlc3MgdGVybWluYXRlZCBhbHJlYWR5CiAgICAgICAg
IGlmIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29kZSAhPSBOb25lOgotICAgICAgICAgICAgcmFpc2Ug
UHlXZWJTb2NrZXROb3RTdGFydGVkKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gc3RhcnQg
JXMgc2VydmVyLicgJSBzZWxmLl9zZXJ2ZXJfbmFtZSkKLSAgICAgICAgaWYgc2VsZi5fcGlkZmls
ZToKLSAgICAgICAgICAgIHdpdGggY29kZWNzLm9wZW4oc2VsZi5fcGlkZmlsZSwgInciLCAiYXNj
aWkiKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoIiVkIiAlIHNlbGYuX3By
b2Nlc3MucGlkKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJv
cignRmFpbGVkIHRvIHN0YXJ0ICVzIHNlcnZlci4nICUgc2VsZi5uYW1lKQorICAgICAgICBpZiBz
ZWxmLnBpZF9maWxlOgorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2Zp
bGUoc2VsZi5waWRfZmlsZSwgIiVkIiAlIHNlbGYuX3Byb2Nlc3MucGlkKQogCiAgICAgZGVmIHN0
b3Aoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKQEAgLTIzMiwxNSAr
MjA4LDEzIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAgICAg
ICAgcGlkID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9wcm9jZXNzOgogICAgICAgICAgICAgcGlk
ID0gc2VsZi5fcHJvY2Vzcy5waWQKLSAgICAgICAgZWxpZiBzZWxmLl9waWRmaWxlOgotICAgICAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihzZWxmLl9waWRmaWxlLCAiciIsICJhc2NpaSIpIGFzIGZp
bGU6Ci0gICAgICAgICAgICAgICAgcGlkID0gaW50KGZpbGUucmVhZCgpLnN0cmlwKCkpCisgICAg
ICAgIGVsaWYgc2VsZi5waWRfZmlsZToKKyAgICAgICAgICAgIHBpZCA9IGludChzZWxmLl9maWxl
c3lzdGVtLnJlYWRfdGV4dF9maWxlKHNlbGYucGlkX2ZpbGUpKQogCiAgICAgICAgIGlmIG5vdCBw
aWQ6Ci0gICAgICAgICAgICByYWlzZSBQeVdlYlNvY2tldE5vdEZvdW5kKAotICAgICAgICAgICAg
ICAgICdGYWlsZWQgdG8gZmluZCAlcyBzZXJ2ZXIgcGlkLicgJSBzZWxmLl9zZXJ2ZXJfbmFtZSkK
KyAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxlZCB0
byBmaW5kICVzIHNlcnZlciBwaWQuJyAlIHNlbGYubmFtZSkKIAotICAgICAgICBfbG9nLmRlYnVn
KCdTaHV0dGluZyBkb3duICVzIHNlcnZlciAlZC4nICUgKHNlbGYuX3NlcnZlcl9uYW1lLCBwaWQp
KQorICAgICAgICBfbG9nLmRlYnVnKCdTaHV0dGluZyBkb3duICVzIHNlcnZlciAlZC4nICUgKHNl
bGYubmFtZSwgcGlkKSkKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhwaWQp
CiAKICAgICAgICAgaWYgc2VsZi5fcHJvY2VzczoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96675</attachid>
            <date>2011-06-09 17:43:14 -0700</date>
            <delta_ts>2011-06-10 20:39:06 -0700</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-62256-20110609174313.patch</filename>
            <type>text/plain</type>
            <size>20591</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyODgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNjE4ZDQ1NzZlY2JlMDJhODhmYmQ4ODQ3NTljMTgzNDA3
YmYyNGM4Li40NjljZDRmMTI4NWNiOWVhZjcxYjI2N2VjZjkxOWJkNjZiMzIxZDhhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjYg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICB3ZWJr
aXRweTogY2xlYW4gdXAgY29kZSBwcmlvciB0byBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIHNlcnZl
ciBzdGFydHVwL3NodXRkb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MjI1NgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBhIGJ1bmNoIG9mIG1p
bm9yIGNsZWFudXAgb2YgdGhlIGNvZGUsIGJ1dCB0aGVyZQorICAgICAgICBzaG91bGQgYmUgbm8g
ZnVuY3Rpb25hbCBjaGFuZ2VzIGV4Y2VwdCB0aGF0IGFsbCBvZiB0aGUgbW9kdWxlcworICAgICAg
ICB3aWxsIG5vdyB1c2UgdGhlIHNhbWUgZXhjZXB0aW9uIHR5cGUuIE90aGVyIGNoYW5nZXMgaW5j
bHVkZQorICAgICAgICByZW1vdmluZyB1bnVzZWQgY29kZSBwYXRocyBhbmQgZnVuY3Rpb25zLCB1
c2luZyAnbmFtZScgYW5kCisgICAgICAgICdwaWRfZmlsZScgYXMgcHVibGljIHByb3BlcnRpZXMg
b24gdGhlIHNlcnZlciBvYmplY3RzLCBhbmQgdXNpbmcKKyAgICAgICAgdGhlIEZpbGVzeXN0ZW0g
b2JqZWN0IGluc3RlYWQgb2YgdGhlIGNvZGVjcywgdGVtcGZpbGUsIGFuZAorICAgICAgICBzaHV0
aWxzIG1vZHVsZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHk6CisKKzIw
MTEtMDYtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgd2Via2l0cHk6IGFkZCBpbnRl
Z3JhdGlvbiB0ZXN0cyBmb3IgbmV3LXJ1bi13ZWJraXQtaHR0cGQsIHN0b3AgY2FsbGluZyBzaHV0
X2Rvd25faHR0cF9zZXJ2ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyMjUxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKaW5kZXggOTA5Mjk3
OGZmMmRkMDE2Mjc5YzVjMmRiMzdjMmU0N2UxOGQ1MzhlYy4uMWMwMmZlYjczNDhlMWNhMGY2YzZj
Y2QzYjBmYjk4MzVjM2Y3YmFlOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTEs
NSArMSw1IEBACiAjIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzAsMjIgKzMwLDE4IEBACiAiIiJBIGNsYXNzIHRvIHN0YXJ0L3N0b3AgdGhlIGFw
YWNoZSBodHRwIHNlcnZlciB1c2VkIGJ5IGxheW91dCB0ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dn
aW5nCi1pbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJv
Y2VzcwogaW1wb3J0IHN5cwogCi1pbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQorZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmFwYWNoZV9odHRwX3Nl
cnZlciIpCiAKIAogY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UpOgorICAgIG5hbWUgPSAnYXBhY2hlJwogCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyKToKICAgICAgICAgIiIiQXJnczoKQEAgLTU0LDcg
KzUwLDYgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0
cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRw
U2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0X29iaikKICAgICAgICAgc2VsZi5fb3V0cHV0
X2RpciA9IG91dHB1dF9kaXIKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IE5vbmUKICAgICAg
ICAgcG9ydF9vYmoubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKIAogICAgICAgICBz
ZWxmLm1hcHBpbmdzID0gW3sncG9ydCc6IDgwMDB9LApAQCAtNzAsNyArNjUsNyBAQCBjbGFzcyBM
YXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAg
ICAgICAgICMgVGhlIFBJRCByZXR1cm5lZCB3aGVuIEFwYWNoZSBpcyBzdGFydGVkIGdvZXMgYXdh
eSAoZHVlIHRvIGRyb3BwaW5nCiAgICAgICAgICMgcHJpdmlsZWdlcz8pLiBUaGUgcHJvcGVyIGNv
bnRyb2xsaW5nIFBJRCBpcyB3cml0dGVuIHRvIGEgZmlsZSBpbiB0aGUKICAgICAgICAgIyBhcGFj
aGUgcnVudGltZSBkaXJlY3RvcnkuCi0gICAgICAgIHNlbGYuX3BpZF9maWxlID0gb3MucGF0aC5q
b2luKHNlbGYuX3J1bnRpbWVfcGF0aCwgJ2h0dHBkLnBpZCcpCisgICAgICAgIHNlbGYucGlkX2Zp
bGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcnVudGltZV9wYXRoLCAnaHR0cGQucGlkJykKIAogICAg
ICAgICB0ZXN0X2RpciA9IHNlbGYuX3BvcnRfb2JqLmxheW91dF90ZXN0c19kaXIoKQogICAgICAg
ICBqc190ZXN0X3Jlc291cmNlc19kaXIgPSBzZWxmLl9jeWd3aW5fc2FmZV9qb2luKHRlc3RfZGly
LCAiZmFzdCIsICJqcyIsCkBAIC0xNTcsOSArMTUyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNo
ZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAg
ICAgICAgaHR0cGRfY29uZmlnID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfdG9fYXBhY2hlX2NvbmZp
Z19maWxlKCkKICAgICAgICAgaHR0cGRfY29uZmlnX2NvcHkgPSBvcy5wYXRoLmpvaW4ob3V0cHV0
X2RpciwgImh0dHBkLmNvbmYiKQotICAgICAgICAjIGh0dHBkLmNvbmYgaXMgYWx3YXlzIHV0Zi04
IGFjY29yZGluZyB0byBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2duYXRzLzEwMTI1Ci0gICAg
ICAgIHdpdGggY29kZWNzLm9wZW4oaHR0cGRfY29uZmlnLCAiciIsICJ1dGYtOCIpIGFzIGh0dHBk
X2NvbmZpZ19maWxlOgotICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmZpZ19maWxl
LnJlYWQoKQorICAgICAgICBodHRwZF9jb25mID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRf
ZmlsZShodHRwZF9jb25maWcpCiAgICAgICAgIGlmIHNlbGYuX2lzX2N5Z3dpbigpOgogICAgICAg
ICAgICAgIyBUaGlzIGlzIGEgZ3Jvc3MgaGFjaywgYnV0IGl0IGxldHMgdXMgdXNlIHRoZSB1cHN0
cmVhbSAuY29uZiBmaWxlCiAgICAgICAgICAgICAjIGFuZCBvdXIgY2hlY2tlZCBpbiBjeWd3aW4u
IFRoaXMgdGVsbHMgdGhlIHNlcnZlciB0aGUgcm9vdApAQCAtMTcyLDIyICsxNjUsMTIgQEAgY2xh
c3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2Up
OgogICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmYucmVwbGFjZSgnU2VydmVyUm9v
dCAiL3VzciInLAogICAgICAgICAgICAgICAgICdTZXJ2ZXJSb290ICIlcyInICUgc2VsZi5fZ2V0
X2N5Z3dpbl9wYXRoKGN5Z3VzcikpCiAKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihodHRwZF9j
b25maWdfY29weSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0
ZShodHRwZF9jb25mKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSho
dHRwZF9jb25maWdfY29weSwgaHR0cGRfY29uZikKIAogICAgICAgICBpZiBzZWxmLl9pc19jeWd3
aW4oKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY3lnd2luX3BhdGgoaHR0cGRfY29u
ZmlnX2NvcHkpCiAgICAgICAgIHJldHVybiBodHRwZF9jb25maWdfY29weQogCi0gICAgZGVmIF9n
ZXRfdmlydHVhbF9ob3N0X2NvbmZpZyhzZWxmLCBkb2N1bWVudF9yb290LCBwb3J0LCBzc2w9RmFs
c2UpOgotICAgICAgICAiIiJSZXR1cm5zIGEgPFZpcnR1YWxIb3N0PiBkaXJlY3RpdmUgYmxvY2sg
Zm9yIGFuIGh0dHBkLmNvbmYgZmlsZS4KLSAgICAgICAgSXQgd2lsbCBsaXN0ZW4gdG8gMTI3LjAu
MC4xIG9uIGVhY2ggb2YgdGhlIGdpdmVuIHBvcnQuCi0gICAgICAgICIiIgotICAgICAgICByZXR1
cm4gJ1xuJy5qb2luKCgnPFZpcnR1YWxIb3N0IDEyNy4wLjAuMTolcz4nICUgcG9ydCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0RvY3VtZW50Um9vdCAiJXMiJyAlIGRvY3VtZW50X3Jvb3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNzbCBhbmQgJ1NTTEVuZ2luZSBPbicgb3IgJycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICc8L1ZpcnR1YWxIb3N0PicsICcnKSkKLQogICAg
IGRlZiBfc3RhcnRfaHR0cGRfcHJvY2VzcyhzZWxmKToKICAgICAgICAgIiIiU3RhcnRzIHRoZSBo
dHRwZCBwcm9jZXNzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2VyZSBlcnJvcnMuIiIiCiAg
ICAgICAgICMgVXNlIHNoZWxsPVRydWUgYmVjYXVzZSB3ZSBqb2luIHRoZSBhcmd1bWVudHMgaW50
byBhIHN0cmluZyBmb3IKQEAgLTE5NywxMCArMTgwLDggQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNo
ZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAjIHNoZWxs
PVRydWUgaXMgYSB0cmFpbCBvZiB0ZWFycy4KICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNh
ZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgIF9sb2cuZGVidWco
J1N0YXJ0aW5nIGh0dHAgc2VydmVyLCBjbWQ9IiVzIicgJSBzdHIoc2VsZi5fc3RhcnRfY21kKSkK
LSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5fc3RhcnRf
Y21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9
c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXJyID0g
c2VsZi5faHR0cGRfcHJvYy5zdGRlcnIucmVhZCgpCisgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBz
ZWxmLl9leGVjdXRpdmUucG9wZW4oc2VsZi5fc3RhcnRfY21kLCBzdGRlcnI9c2VsZi5fZXhlY3V0
aXZlLlBJUEUsIHNoZWxsPVRydWUpCisgICAgICAgIGVyciA9IHNlbGYuX3Byb2Nlc3Muc3RkZXJy
LnJlYWQoKQogICAgICAgICBpZiBsZW4oZXJyKToKICAgICAgICAgICAgIF9sb2cuZGVidWcoZXJy
KQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yMTEsNyArMTkyLDcgQEAgY2xhc3MgTGF5
b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAg
ICAgICAjIFN0b3AgYW55IGN1cnJlbnRseSBydW5uaW5nIHNlcnZlcnMuCiAgICAgICAgIHNlbGYu
c3RvcCgpCiAKLSAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgYXBhY2hlIGh0dHAgc2VydmVy
IikKKyAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgJXMgc2VydmVyIiAlIHNlbGYubmFtZSkK
ICAgICAgICAgc2VydmVyX3N0YXJ0ZWQgPSBzZWxmLndhaXRfZm9yX2FjdGlvbihzZWxmLl9zdGFy
dF9odHRwZF9wcm9jZXNzKQogICAgICAgICBpZiBzZXJ2ZXJfc3RhcnRlZDoKICAgICAgICAgICAg
IF9sb2cuZGVidWcoIkFwYWNoZSBzdGFydGVkLiBUZXN0aW5nIHBvcnRzIikKQEAgLTIyMSwxNSAr
MjAyLDE1IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0
dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgaWYgc2VydmVyX3N0YXJ0ZWQ6CiAgICAgICAgICAgICBf
bG9nLmRlYnVnKCJTZXJ2ZXIgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQiKQogICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cCBzZXJ2ZXIn
KQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFpbGVk
IHRvIHN0YXJ0IGh0dHAgc2VydmVyJykKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICAi
IiJTdG9wcyB0aGUgYXBhY2hlIGh0dHAgc2VydmVyLiIiIgogICAgICAgICBfbG9nLmRlYnVnKCJT
aHV0dGluZyBkb3duIGFueSBydW5uaW5nIGh0dHAgc2VydmVycyIpCiAgICAgICAgIGh0dHBkX3Bp
ZCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5faHR0cGRfcHJvYzoKLSAgICAgICAgICAgIGh0dHBk
X3BpZCA9IHNlbGYuX2h0dHBkX3Byb2MucGlkCi0gICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMo
c2VsZi5fcGlkX2ZpbGUpOgotICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9wZW4oc2VsZi5f
cGlkX2ZpbGUpLnJlYWRsaW5lKCkpCisgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6CisgICAgICAg
ICAgICBodHRwZF9waWQgPSBzZWxmLl9wcm9jZXNzLnBpZAorICAgICAgICBlbGlmIG9zLnBhdGgu
ZXhpc3RzKHNlbGYucGlkX2ZpbGUpOgorICAgICAgICAgICAgaHR0cGRfcGlkID0gaW50KG9wZW4o
c2VsZi5waWRfZmlsZSkucmVhZGxpbmUoKSkKICAgICAgICAgaWYgaHR0cGRfcGlkOgogICAgICAg
ICAgICAgc2VsZi5fZXhlY3V0aXZlLmtpbGxfcHJvY2VzcyhodHRwZF9waWQpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlci5w
eQppbmRleCAzYTU0Yzk5YjIwMDg4YjE3MDMxMzIzYTAwMTY1NTc3NTkxM2VkMmUxLi41NzUxYzg4
YmM2OGVmN2RkYjFlNzNjODgxZDk5YWE3MjBjYzg3NWRjIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXIucHkKQEAgLTEs
NSArMSw1IEBACiAjIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMjksMjYgKzI5LDE5IEBACiAKICIiIkEgY2xhc3MgdG8gaGVscCBzdGFydC9zdG9w
IHRoZSBsaWdodHRwZCBzZXJ2ZXIgdXNlZCBieSBsYXlvdXQgdGVzdHMuIiIiCiAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGxv
Z2dpbmcKLWltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQg
c3VicHJvY2VzcwogaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQogaW1w
b3J0IHVybGxpYgogCi1pbXBvcnQgZmFjdG9yeQotaW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UKIAog
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5odHRw
X3NlcnZlciIpCiAKIAogY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVy
QmFzZSk6CisgICAgbmFtZSA9ICdsaWdodHRwZCcKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
b3J0X29iaiwgb3V0cHV0X2RpciwgYmFja2dyb3VuZD1GYWxzZSwgcG9ydD1Ob25lLAogICAgICAg
ICAgICAgICAgICByb290PU5vbmUsIHJ1bl9iYWNrZ3JvdW5kPU5vbmUsIGxheW91dF90ZXN0c19k
aXI9Tm9uZSk6CkBAIC03MCwxOCArNjMsOSBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9i
YXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgaWYgbm90IHNlbGYuX2xheW91dF90ZXN0c19k
aXI6CiAgICAgICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGlyID0gc2VsZi5fcG9ydF9vYmou
bGF5b3V0X3Rlc3RzX2RpcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fd2Vi
a2l0X3Rlc3RzID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF90
ZXN0c19kaXIsICdodHRwJywgJ3Rlc3RzJykKLSAgICAgICAgICAgIHNlbGYuX2pzX3Rlc3RfcmVz
b3VyY2UgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3Rz
X2RpciwgJ2Zhc3QnLCAnanMnLCAncmVzb3VyY2VzJykKLSAgICAgICAgICAgIHNlbGYuX21lZGlh
X3Jlc291cmNlID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF90
ZXN0c19kaXIsICdtZWRpYScpCi0KLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5f
d2Via2l0X3Rlc3RzID0gTm9uZQotICAgICAgICAgICAgc2VsZi5fanNfdGVzdF9yZXNvdXJjZSA9
IE5vbmUKLSAgICAgICAgICAgIHNlbGYuX21lZGlhX3Jlc291cmNlID0gTm9uZQorICAgICAgICBz
ZWxmLl93ZWJraXRfdGVzdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5fbGF5b3V0X3Rlc3RzX2Rpciwg
J2h0dHAnLCAndGVzdHMnKQorICAgICAgICBzZWxmLl9qc190ZXN0X3Jlc291cmNlID0gb3MucGF0
aC5qb2luKHNlbGYuX2xheW91dF90ZXN0c19kaXIsICdmYXN0JywgJ2pzJywgJ3Jlc291cmNlcycp
CisgICAgICAgIHNlbGYuX21lZGlhX3Jlc291cmNlID0gb3MucGF0aC5qb2luKHNlbGYuX2xheW91
dF90ZXN0c19kaXIsICdtZWRpYScpCiAKICAgICAgICAgIyBTZWxmIGdlbmVyYXRlZCBjZXJ0aWZp
Y2F0ZSBmb3IgU1NMIHNlcnZlciAoZm9yIGNsaWVudCBjZXJ0IGdldAogICAgICAgICAjIDxiYXNl
LXBhdGg+XGNocm9tZVx0ZXN0XGRhdGFcc3NsXGNlcnRzXHJvb3RfY2FfY2VydC5jcnQpCkBAIC0x
MDQsNyArODgsNyBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJC
YXNlKToKIAogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgaWYgc2VsZi5pc19ydW5uaW5n
KCk6Ci0gICAgICAgICAgICByYWlzZSAnTGlnaHR0cGQgYWxyZWFkeSBydW5uaW5nJworICAgICAg
ICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignTGlnaHR0cGQgYWxyZWFk
eSBydW5uaW5nJykKIAogICAgICAgICBiYXNlX2NvbmZfZmlsZSA9IHNlbGYuX3BvcnRfb2JqLnBh
dGhfZnJvbV93ZWJraXRfYmFzZSgnVG9vbHMnLAogICAgICAgICAgICAgJ1NjcmlwdHMnLCAnd2Vi
a2l0cHknLCAnbGF5b3V0X3Rlc3RzJywgJ3BvcnQnLCAnbGlnaHR0cGQuY29uZicpCkBAIC0xMjAs
MTQgKzEwNCwxMSBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJC
YXNlKToKICAgICAgICAgc2VsZi5yZW1vdmVfbG9nX2ZpbGVzKHNlbGYuX291dHB1dF9kaXIsICJl
cnJvci5sb2ctIikKIAogICAgICAgICAjIFdyaXRlIG91dCB0aGUgY29uZmlnCi0gICAgICAgIHdp
dGggY29kZWNzLm9wZW4oYmFzZV9jb25mX2ZpbGUsICJyIiwgInV0Zi04IikgYXMgZmlsZToKLSAg
ICAgICAgICAgIGJhc2VfY29uZiA9IGZpbGUucmVhZCgpCisgICAgICAgIGJhc2VfY29uZiA9IHNl
bGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoYmFzZV9jb25mX2ZpbGUpCiAKICAgICAgICAg
IyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmUtd29ya2VkIHNvIHRoYXQgdGhpcyBibG9jayBjYW4K
ICAgICAgICAgIyB1c2Ugd2l0aCBvcGVuKCkgaW5zdGVhZCBvZiBhIG1hbnVhbCBmaWxlLmNsb3Nl
KCkgY2FsbC4KLSAgICAgICAgIyBsaWdodHRwZC5jb25mIGZpbGVzIHNlZW0gdG8gYmUgVVRGLTgg
d2l0aG91dCBCT006Ci0gICAgICAgICMgaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L2lzc3Vl
cy85OTIKLSAgICAgICAgZiA9IGNvZGVjcy5vcGVuKG91dF9jb25mX2ZpbGUsICJ3IiwgInV0Zi04
IikKKyAgICAgICAgZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRp
bmcob3V0X2NvbmZfZmlsZSkKICAgICAgICAgZi53cml0ZShiYXNlX2NvbmYpCiAKICAgICAgICAg
IyBXcml0ZSBvdXQgb3VyIGNnaSBoYW5kbGVycy4gIFJ1biBwZXJsIHRocm91Z2ggZW52IHNvIHRo
YXQgaXQKQEAgLTIwNCwxMyArMTg1LDEyIEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jh
c2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRt
cF9tb2R1bGVfcGF0aCk6CiAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnModG1wX21vZHVsZV9w
YXRoKQogICAgICAgICAgICAgbGliX2ZpbGUgPSAnbGlibGlnaHRjb21wLmR5bGliJwotICAgICAg
ICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihtb2R1bGVfcGF0aCwgbGliX2ZpbGUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih0bXBfbW9kdWxlX3Bh
dGgsIGxpYl9maWxlKSkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weWZpbGUob3Mu
cGF0aC5qb2luKG1vZHVsZV9wYXRoLCBsaWJfZmlsZSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih0bXBfbW9kdWxlX3BhdGgsIGxpYl9maWxlKSkK
IAogICAgICAgICBlbnYgPSBzZWxmLl9wb3J0X29iai5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIo
KQotICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyBodHRwIHNlcnZlciwgY21kPSIlcyInICUg
c3RyKHN0YXJ0X2NtZCkpCi0gICAgICAgICMgRklYTUU6IFNob3VsZCB1c2UgRXhlY3V0aXZlLnJ1
bl9jb21tYW5kCi0gICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHN0YXJ0
X2NtZCwgZW52PWVudiwgc3RkaW49c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBfbG9nLmRlYnVn
KCdTdGFydGluZyAlcyBzZXJ2ZXIsIGNtZD0iJXMiJyAlIChzZWxmLk5BTUUsIHN0cihzdGFydF9j
bWQpKSkKKyAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHNlbGYuX2V4ZWN1dGl2ZS5wb3BlbihzdGFy
dF9jbWQsIGVudj1lbnYsIHN0ZGluPXNlbGYuX2V4ZWN1dGl2ZS5QSVBFKQogCiAgICAgICAgICMg
V2FpdCBmb3Igc2VydmVyIHRvIHN0YXJ0LgogICAgICAgICBzZWxmLm1hcHBpbmdzID0gbWFwcGlu
Z3MKQEAgLTIxOSw3ICsxOTksNyBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0
dHBTZXJ2ZXJCYXNlKToKIAogICAgICAgICAjIE91ciBwcm9jZXNzIHRlcm1pbmF0ZWQgYWxyZWFk
eQogICAgICAgICBpZiBub3Qgc2VydmVyX3N0YXJ0ZWQgb3Igc2VsZi5fcHJvY2Vzcy5yZXR1cm5j
b2RlICE9IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ZhaWxlZCB0byBzdGFy
dCBodHRwZC4nKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJv
cignRmFpbGVkIHRvIHN0YXJ0ICVzLicgJSBzZWxmLk5BTUUpCiAKICAgICAgICAgX2xvZy5kZWJ1
ZygiU2VydmVyIHN1Y2Nlc3NmdWxseSBzdGFydGVkIikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlcl9iYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlcl9iYXNlLnB5
CmluZGV4IDhlM2QyMDY1OGVlYjQyNTVhZTEyOTNiNjllMWYzODBjMzJhYmQ0NTAuLmJhYTQ2Yjdl
MmQ2MDgyMDZhM2Q2YTk3YzdiZjBhNDQ5MzU1YjgxMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2Uu
cHkKQEAgLTEsNSArMSw1IEBACiAjIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtMjcsNyArMjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAotIiIiQmFzZSBjbGFzcyB3aXRoIGNvbW1vbiByb3V0aW5lcyBiZXR3ZWVuIHRoZSBB
cGFjaGUgYW5kIExpZ2h0dHBkIHNlcnZlcnMuIiIiCisiIiJCYXNlIGNsYXNzIHdpdGggY29tbW9u
IHJvdXRpbmVzIGJldHdlZW4gdGhlIEFwYWNoZSwgTGlnaHR0cGQsIGFuZCB3ZWJzb2NrZXQgc2Vy
dmVycy4iIiIKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwpAQCAtMzksMTEgKzM5LDE5IEBA
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbQogX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5odHRwX3NlcnZlcl9i
YXNlIikKIAogCitjbGFzcyBTZXJ2ZXJFcnJvcihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCiBj
bGFzcyBIdHRwU2VydmVyQmFzZShvYmplY3QpOgorICAgIG5hbWUgPSAnPHZpcnR1YWw+JworICAg
IHBpZF9maWxlID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqKToKICAg
ICAgICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0X29iagogICAgICAgICBzZWxmLl9leGVjdXRpdmUg
PSBwb3J0X29iai5fZXhlY3V0aXZlCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0X29i
ai5fZmlsZXN5c3RlbQorICAgICAgICBzZWxmLl9wcm9jZXNzID0gTm9uZQogCiAgICAgZGVmIHdh
aXRfZm9yX2FjdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgICAiIiJSZXBlYXQgdGhlIGFjdGlv
biBmb3IgMjAgc2Vjb25kcyBvciB1bnRpbCBpdCBzdWNjZWVkcy4gUmV0dXJucwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2Vy
dmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2Nr
ZXRfc2VydmVyLnB5CmluZGV4IGE3ZDZkOWJjMjI1OWUwZTkxZTI1YTUzNjE3Mzc5ZTU3NmI0Mzk3
NDkuLjZkNjYwNGE3M2M1NjgxZDhlNWYyNTcyNjNlOTcxMzFmZDA4MTY4ZTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNv
Y2tldF9zZXJ2ZXIucHkKQEAgLTEsNSArMSw1IEBACiAjIS91c3IvYmluL2VudiBweXRob24KLSMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzAsMjIgKzMwLDE0IEBACiAiIiJBIGNsYXNz
IHRvIGhlbHAgc3RhcnQvc3RvcCB0aGUgUHlXZWJTb2NrZXQgc2VydmVyIHVzZWQgYnkgbGF5b3V0
IHRlc3RzLiIiIgogCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQot
aW1wb3J0IGNvZGVjcwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9z
Ci1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQg
dGltZQogaW1wb3J0IHVybGxpYgogCi1pbXBvcnQgZmFjdG9yeQotaW1wb3J0IGh0dHBfc2VydmVy
Ci0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2
ZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgaHR0cF9zZXJ2ZXIKK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UKIAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lndl
YnNvY2tldF9zZXJ2ZXIiKQpAQCAtODQsMTUgKzc2LDggQEAgZGVmIHVybF9pc19hbGl2ZSh1cmwp
OgogICAgIHJldHVybiBGYWxzZQogCiAKLWNsYXNzIFB5V2ViU29ja2V0Tm90U3RhcnRlZChFeGNl
cHRpb24pOgotICAgIHBhc3MKLQotCi1jbGFzcyBQeVdlYlNvY2tldE5vdEZvdW5kKEV4Y2VwdGlv
bik6Ci0gICAgcGFzcwotCi0KIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBk
KToKKyAgICBuYW1lID0gJ3B5d2Vic29ja2V0JwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBv
cnRfb2JqLCBvdXRwdXRfZGlyLCBwb3J0PV9ERUZBVUxUX1dTX1BPUlQsCiAgICAgICAgICAgICAg
ICAgIHJvb3Q9Tm9uZSwgdXNlX3Rscz1GYWxzZSwKQEAgLTExMywxMCArOTgsOCBAQCBjbGFzcyBQ
eVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAgICAgIGlmIHNlbGYuX3BvcnQ6
CiAgICAgICAgICAgICBzZWxmLl9wb3J0ID0gaW50KHNlbGYuX3BvcnQpCiAgICAgICAgIGlmIHNl
bGYuX3VzZV90bHM6Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSA9ICdQeVdlYlNvY2tl
dChTZWN1cmUpJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc2VydmVyX25hbWUg
PSAnUHlXZWJTb2NrZXQnCi0gICAgICAgIHNlbGYuX3BpZGZpbGUgPSBwaWRmaWxlCisgICAgICAg
ICAgICBzZWxmLm5hbWUgPSAncHl3ZWJzb2NrZXRfc2VjdXJlJworICAgICAgICBzZWxmLnBpZF9m
aWxlID0gcGlkZmlsZQogICAgICAgICBzZWxmLl93c291dCA9IE5vbmUKIAogICAgICAgICAjIFdl
YmtpdCB0ZXN0cwpAQCAtMTM1LDExICsxMTgsMTAgQEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9z
ZXJ2ZXIuTGlnaHR0cGQpOgogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICBpZiBub3Qg
c2VsZi5fd2ViX3NvY2tldF90ZXN0czoKLSAgICAgICAgICAgIF9sb2cuaW5mbygnTm8gbmVlZCB0
byBzdGFydCAlcyBzZXJ2ZXIuJyAlIHNlbGYuX3NlcnZlcl9uYW1lKQorICAgICAgICAgICAgX2xv
Zy5pbmZvKCdObyBuZWVkIHRvIHN0YXJ0ICVzIHNlcnZlci4nICUgc2VsZi5uYW1lKQogICAgICAg
ICAgICAgcmV0dXJuCiAgICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgotICAgICAgICAgICAg
cmFpc2UgUHlXZWJTb2NrZXROb3RTdGFydGVkKCclcyBpcyBhbHJlYWR5IHJ1bm5pbmcuJyAlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX25hbWUp
CisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9yKCclcyBpcyBh
bHJlYWR5IHJ1bm5pbmcuJyAlIHNlbGYubmFtZSkKIAogICAgICAgICB0aW1lX3N0ciA9IHRpbWUu
c3RyZnRpbWUoJyVkJWIlWS0lSCVNJVMnKQogICAgICAgICBpZiBzZWxmLl91c2VfdGxzOgpAQCAt
MTU0LDcgKzEzNiw3IEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToK
ICAgICAgICAgZXJyb3JfbG9nID0gb3MucGF0aC5qb2luKHNlbGYuX291dHB1dF9kaXIsIGxvZ19m
aWxlX25hbWUgKyAiLWVyci50eHQiKQogCiAgICAgICAgIG91dHB1dF9sb2cgPSBvcy5wYXRoLmpv
aW4oc2VsZi5fb3V0cHV0X2RpciwgbG9nX2ZpbGVfbmFtZSArICItb3V0LnR4dCIpCi0gICAgICAg
IHNlbGYuX3dzb3V0ID0gY29kZWNzLm9wZW4ob3V0cHV0X2xvZywgInciLCAidXRmLTgiKQorICAg
ICAgICBzZWxmLl93c291dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3dy
aXRpbmcob3V0cHV0X2xvZykKIAogICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0
b2luc3RhbGxlZC5weXdlYnNvY2tldCBpbXBvcnQgbW9kX3B5d2Vic29ja2V0CiAgICAgICAgIHB5
dGhvbl9pbnRlcnAgPSBzeXMuZXhlY3V0YWJsZQpAQCAtMTkxLDE2ICsxNzMsMTMgQEAgY2xhc3Mg
UHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBlbnZbJ1BZVEhPTlBB
VEgnXSA9IChweXdlYnNvY2tldF9iYXNlICsgb3MucGF0aC5wYXRoc2VwICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW52LmdldCgnUFlUSE9OUEFUSCcsICcnKSkKIAotICAgICAgICBf
bG9nLmRlYnVnKCdTdGFydGluZyAlcyBzZXJ2ZXIgb24gJWQuJyAlICgKLSAgICAgICAgICAgICAg
ICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSwgc2VsZi5fcG9ydCkpCi0gICAgICAgIF9sb2cuZGVidWco
J2NtZGxpbmU6ICVzJyAlICcgJy5qb2luKHN0YXJ0X2NtZCkpCi0gICAgICAgICMgRklYTUU6IFdl
IHNob3VsZCBkaXJlY3QgdGhpcyBjYWxsIHRocm91Z2ggRXhlY3V0aXZlIGZvciB0ZXN0aW5nLgor
ICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyAlcyBzZXJ2ZXIgb24gJWQsIGNtZD0iJXMiLicg
JSAoc2VsZi5uYW1lLCBzZWxmLl9wb3J0LCBzdHIoc3RhcnRfY21kKSkpCiAgICAgICAgICMgTm90
ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAotICAg
ICAgICBzZWxmLl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihzdGFydF9jbWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPW9wZW4ob3MuZGV2bnVsbCwg
J3InKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXNl
bGYuX3dzb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRl
cnI9c3VicHJvY2Vzcy5TVERPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudj1lbnYpCisgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzZWxmLl9leGVjdXRpdmUu
cG9wZW4oc3RhcnRfY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZGluPW9wZW4ob3MuZGV2bnVsbCwgJ3InKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c2VsZi5fd3NvdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXNlbGYuX2V4ZWN1dGl2
ZS5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW52PWVudikKIAogICAgICAgICBpZiBzZWxmLl91c2VfdGxzOgogICAgICAgICAgICAgdXJsID0g
J2h0dHBzJwpAQCAtMjEwLDIwICsxODksMTUgQEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2
ZXIuTGlnaHR0cGQpOgogICAgICAgICBpZiBub3QgdXJsX2lzX2FsaXZlKHVybCk6CiAgICAgICAg
ICAgICBpZiBzZWxmLl9wcm9jZXNzLnJldHVybmNvZGUgPT0gTm9uZToKICAgICAgICAgICAgICAg
ICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2Nlc3MucGlkKQotICAgICAg
ICAgICAgd2l0aCBjb2RlY3Mub3BlbihvdXRwdXRfbG9nLCAiciIsICJ1dGYtOCIpIGFzIGZwOgot
ICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZwOgotICAgICAgICAgICAgICAgICAgICBfbG9n
LmVycm9yKGxpbmUpCi0gICAgICAgICAgICByYWlzZSBQeVdlYlNvY2tldE5vdFN0YXJ0ZWQoCi0g
ICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBzdGFydCAlcyBzZXJ2ZXIgb24gcG9ydCAlcy4nICUK
LSAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3NlcnZlcl9uYW1lLCBzZWxmLl9wb3J0KSkKKyAg
ICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYucmVhZF90ZXh0X2ZpbGUob3V0cHV0X2xvZykuc3Bs
aXRsaW5lcygpOgorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IobGluZSkKKyAgICAgICAgICAg
IHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxlZCB0byBzdGFydCAlcyBz
ZXJ2ZXIgb24gcG9ydCAlcy4nICUgKHNlbGYubmFtZSwgc2VsZi5fcG9ydCkpCiAKICAgICAgICAg
IyBPdXIgcHJvY2VzcyB0ZXJtaW5hdGVkIGFscmVhZHkKICAgICAgICAgaWYgc2VsZi5fcHJvY2Vz
cy5yZXR1cm5jb2RlICE9IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBQeVdlYlNvY2tldE5vdFN0
YXJ0ZWQoCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBzdGFydCAlcyBzZXJ2ZXIuJyAlIHNl
bGYuX3NlcnZlcl9uYW1lKQotICAgICAgICBpZiBzZWxmLl9waWRmaWxlOgotICAgICAgICAgICAg
d2l0aCBjb2RlY3Mub3BlbihzZWxmLl9waWRmaWxlLCAidyIsICJhc2NpaSIpIGFzIGZpbGU6Ci0g
ICAgICAgICAgICAgICAgZmlsZS53cml0ZSgiJWQiICUgc2VsZi5fcHJvY2Vzcy5waWQpCisgICAg
ICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9yKCdGYWlsZWQgdG8gc3Rh
cnQgJXMgc2VydmVyLicgJSBzZWxmLm5hbWUpCisgICAgICAgIGlmIHNlbGYucGlkX2ZpbGU6Cisg
ICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShzZWxmLnBpZF9maWxl
LCAiJWQiICUgc2VsZi5fcHJvY2Vzcy5waWQpCiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAg
ICAgaWYgbm90IHNlbGYuaXNfcnVubmluZygpOgpAQCAtMjMyLDE1ICsyMDYsMTMgQEAgY2xhc3Mg
UHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBwaWQgPSBOb25lCiAg
ICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6CiAgICAgICAgICAgICBwaWQgPSBzZWxmLl9wcm9jZXNz
LnBpZAotICAgICAgICBlbGlmIHNlbGYuX3BpZGZpbGU6Ci0gICAgICAgICAgICB3aXRoIGNvZGVj
cy5vcGVuKHNlbGYuX3BpZGZpbGUsICJyIiwgImFzY2lpIikgYXMgZmlsZToKLSAgICAgICAgICAg
ICAgICBwaWQgPSBpbnQoZmlsZS5yZWFkKCkuc3RyaXAoKSkKKyAgICAgICAgZWxpZiBzZWxmLnBp
ZF9maWxlOgorICAgICAgICAgICAgcGlkID0gaW50KHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0
X2ZpbGUoc2VsZi5waWRfZmlsZSkpCiAKICAgICAgICAgaWYgbm90IHBpZDoKLSAgICAgICAgICAg
IHJhaXNlIFB5V2ViU29ja2V0Tm90Rm91bmQoCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBm
aW5kICVzIHNlcnZlciBwaWQuJyAlIHNlbGYuX3NlcnZlcl9uYW1lKQorICAgICAgICAgICAgcmFp
c2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFpbGVkIHRvIGZpbmQgJXMgc2VydmVy
IHBpZC4nICUgc2VsZi5uYW1lKQogCi0gICAgICAgIF9sb2cuZGVidWcoJ1NodXR0aW5nIGRvd24g
JXMgc2VydmVyICVkLicgJSAoc2VsZi5fc2VydmVyX25hbWUsIHBpZCkpCisgICAgICAgIF9sb2cu
ZGVidWcoJ1NodXR0aW5nIGRvd24gJXMgc2VydmVyICVkLicgJSAoc2VsZi5uYW1lLCBwaWQpKQog
ICAgICAgICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHBpZCkKIAogICAgICAgICBpZiBz
ZWxmLl9wcm9jZXNzOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96840</attachid>
            <date>2011-06-10 20:39:10 -0700</date>
            <delta_ts>2011-06-13 12:32:52 -0700</delta_ts>
            <desc>update w/ more review feedback</desc>
            <filename>bug-62256-20110610203909.patch</filename>
            <type>text/plain</type>
            <size>19994</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyODgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNjE4ZDQ1NzZlY2JlMDJhODhmYmQ4ODQ3NTljMTgzNDA3
YmYyNGM4Li40NjljZDRmMTI4NWNiOWVhZjcxYjI2N2VjZjkxOWJkNjZiMzIxZDhhIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjYg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICB3ZWJr
aXRweTogY2xlYW4gdXAgY29kZSBwcmlvciB0byBmdW5jdGlvbmFsIGNoYW5nZXMgZm9yIHNlcnZl
ciBzdGFydHVwL3NodXRkb3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MjI1NgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBhIGJ1bmNoIG9mIG1p
bm9yIGNsZWFudXAgb2YgdGhlIGNvZGUsIGJ1dCB0aGVyZQorICAgICAgICBzaG91bGQgYmUgbm8g
ZnVuY3Rpb25hbCBjaGFuZ2VzIGV4Y2VwdCB0aGF0IGFsbCBvZiB0aGUgbW9kdWxlcworICAgICAg
ICB3aWxsIG5vdyB1c2UgdGhlIHNhbWUgZXhjZXB0aW9uIHR5cGUuIE90aGVyIGNoYW5nZXMgaW5j
bHVkZQorICAgICAgICByZW1vdmluZyB1bnVzZWQgY29kZSBwYXRocyBhbmQgZnVuY3Rpb25zLCB1
c2luZyAnbmFtZScgYW5kCisgICAgICAgICdwaWRfZmlsZScgYXMgcHVibGljIHByb3BlcnRpZXMg
b24gdGhlIHNlcnZlciBvYmplY3RzLCBhbmQgdXNpbmcKKyAgICAgICAgdGhlIEZpbGVzeXN0ZW0g
b2JqZWN0IGluc3RlYWQgb2YgdGhlIGNvZGVjcywgdGVtcGZpbGUsIGFuZAorICAgICAgICBzaHV0
aWxzIG1vZHVsZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHk6CisKKzIw
MTEtMDYtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgd2Via2l0cHk6IGFkZCBpbnRl
Z3JhdGlvbiB0ZXN0cyBmb3IgbmV3LXJ1bi13ZWJraXQtaHR0cGQsIHN0b3AgY2FsbGluZyBzaHV0
X2Rvd25faHR0cF9zZXJ2ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyMjUxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKaW5kZXggOTA5Mjk3
OGZmMmRkMDE2Mjc5YzVjMmRiMzdjMmU0N2UxOGQ1MzhlYy4uNDExMzMxMjJlMzJlMTE1ZTI1NTFi
YjJmOGY4MjM2YzRhOGE0Y2JjNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTEs
NSArMSw1IEBACiAjIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzAsMjIgKzMwLDE4IEBACiAiIiJBIGNsYXNzIHRvIHN0YXJ0L3N0b3AgdGhlIGFw
YWNoZSBodHRwIHNlcnZlciB1c2VkIGJ5IGxheW91dCB0ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dn
aW5nCi1pbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc3VicHJv
Y2VzcwogaW1wb3J0IHN5cwogCi1pbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQorZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmFwYWNoZV9odHRwX3Nl
cnZlciIpCiAKIAogY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UpOgorICAgIG5hbWUgPSAnYXBhY2hlJwogCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyKToKICAgICAgICAgIiIiQXJnczoKQEAgLTU0LDcg
KzUwLDYgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0
cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRw
U2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0X29iaikKICAgICAgICAgc2VsZi5fb3V0cHV0
X2RpciA9IG91dHB1dF9kaXIKLSAgICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IE5vbmUKICAgICAg
ICAgcG9ydF9vYmoubWF5YmVfbWFrZV9kaXJlY3Rvcnkob3V0cHV0X2RpcikKIAogICAgICAgICBz
ZWxmLm1hcHBpbmdzID0gW3sncG9ydCc6IDgwMDB9LApAQCAtMTU3LDkgKzE1Miw3IEBAIGNsYXNz
IExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToK
ICAgICAgICAgIiIiCiAgICAgICAgIGh0dHBkX2NvbmZpZyA9IHNlbGYuX3BvcnRfb2JqLl9wYXRo
X3RvX2FwYWNoZV9jb25maWdfZmlsZSgpCiAgICAgICAgIGh0dHBkX2NvbmZpZ19jb3B5ID0gb3Mu
cGF0aC5qb2luKG91dHB1dF9kaXIsICJodHRwZC5jb25mIikKLSAgICAgICAgIyBodHRwZC5jb25m
IGlzIGFsd2F5cyB1dGYtOCBhY2NvcmRpbmcgdG8gaHR0cDovL2FyY2hpdmUuYXBhY2hlLm9yZy9n
bmF0cy8xMDEyNQotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGh0dHBkX2NvbmZpZywgInIiLCAi
dXRmLTgiKSBhcyBodHRwZF9jb25maWdfZmlsZToKLSAgICAgICAgICAgIGh0dHBkX2NvbmYgPSBo
dHRwZF9jb25maWdfZmlsZS5yZWFkKCkKKyAgICAgICAgaHR0cGRfY29uZiA9IHNlbGYuX2ZpbGVz
eXN0ZW0ucmVhZF90ZXh0X2ZpbGUoaHR0cGRfY29uZmlnKQogICAgICAgICBpZiBzZWxmLl9pc19j
eWd3aW4oKToKICAgICAgICAgICAgICMgVGhpcyBpcyBhIGdyb3NzIGhhY2ssIGJ1dCBpdCBsZXRz
IHVzIHVzZSB0aGUgdXBzdHJlYW0gLmNvbmYgZmlsZQogICAgICAgICAgICAgIyBhbmQgb3VyIGNo
ZWNrZWQgaW4gY3lnd2luLiBUaGlzIHRlbGxzIHRoZSBzZXJ2ZXIgdGhlIHJvb3QKQEAgLTE3Miwy
MiArMTY1LDEyIEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNl
Lkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgICAgIGh0dHBkX2NvbmYgPSBodHRwZF9jb25mLnJl
cGxhY2UoJ1NlcnZlclJvb3QgIi91c3IiJywKICAgICAgICAgICAgICAgICAnU2VydmVyUm9vdCAi
JXMiJyAlIHNlbGYuX2dldF9jeWd3aW5fcGF0aChjeWd1c3IpKQogCi0gICAgICAgIHdpdGggY29k
ZWNzLm9wZW4oaHR0cGRfY29uZmlnX2NvcHksICJ3IiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAg
ICAgICAgIGZpbGUud3JpdGUoaHR0cGRfY29uZikKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53
cml0ZV90ZXh0X2ZpbGUoaHR0cGRfY29uZmlnX2NvcHksIGh0dHBkX2NvbmYpCiAKICAgICAgICAg
aWYgc2VsZi5faXNfY3lnd2luKCk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2N5Z3dp
bl9wYXRoKGh0dHBkX2NvbmZpZ19jb3B5KQogICAgICAgICByZXR1cm4gaHR0cGRfY29uZmlnX2Nv
cHkKIAotICAgIGRlZiBfZ2V0X3ZpcnR1YWxfaG9zdF9jb25maWcoc2VsZiwgZG9jdW1lbnRfcm9v
dCwgcG9ydCwgc3NsPUZhbHNlKToKLSAgICAgICAgIiIiUmV0dXJucyBhIDxWaXJ0dWFsSG9zdD4g
ZGlyZWN0aXZlIGJsb2NrIGZvciBhbiBodHRwZC5jb25mIGZpbGUuCi0gICAgICAgIEl0IHdpbGwg
bGlzdGVuIHRvIDEyNy4wLjAuMSBvbiBlYWNoIG9mIHRoZSBnaXZlbiBwb3J0LgotICAgICAgICAi
IiIKLSAgICAgICAgcmV0dXJuICdcbicuam9pbigoJzxWaXJ0dWFsSG9zdCAxMjcuMC4wLjE6JXM+
JyAlIHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdEb2N1bWVudFJvb3QgIiVzIicg
JSBkb2N1bWVudF9yb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wgYW5kICdTU0xF
bmdpbmUgT24nIG9yICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9WaXJ0dWFsSG9z
dD4nLCAnJykpCi0KICAgICBkZWYgX3N0YXJ0X2h0dHBkX3Byb2Nlc3Moc2VsZik6CiAgICAgICAg
ICIiIlN0YXJ0cyB0aGUgaHR0cGQgcHJvY2VzcyBhbmQgcmV0dXJucyB3aGV0aGVyIHRoZXJlIHdl
cmUgZXJyb3JzLiIiIgogICAgICAgICAjIFVzZSBzaGVsbD1UcnVlIGJlY2F1c2Ugd2Ugam9pbiB0
aGUgYXJndW1lbnRzIGludG8gYSBzdHJpbmcgZm9yCkBAIC0xOTcsMTAgKzE4MCw4IEBAIGNsYXNz
IExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToK
ICAgICAgICAgIyBzaGVsbD1UcnVlIGlzIGEgdHJhaWwgb2YgdGVhcnMuCiAgICAgICAgICMgTm90
ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAogICAg
ICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyBodHRwIHNlcnZlciwgY21kPSIlcyInICUgc3RyKHNl
bGYuX3N0YXJ0X2NtZCkpCi0gICAgICAgIHNlbGYuX2h0dHBkX3Byb2MgPSBzdWJwcm9jZXNzLlBv
cGVuKHNlbGYuX3N0YXJ0X2NtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgIHNoZWxsPVRydWUp
Ci0gICAgICAgIGVyciA9IHNlbGYuX2h0dHBkX3Byb2Muc3RkZXJyLnJlYWQoKQorICAgICAgICBz
ZWxmLl9wcm9jZXNzID0gc2VsZi5fZXhlY3V0aXZlLnBvcGVuKHNlbGYuX3N0YXJ0X2NtZCwgc3Rk
ZXJyPXNlbGYuX2V4ZWN1dGl2ZS5QSVBFLCBzaGVsbD1UcnVlKQorICAgICAgICBlcnIgPSBzZWxm
Ll9wcm9jZXNzLnN0ZGVyci5yZWFkKCkKICAgICAgICAgaWYgbGVuKGVycik6CiAgICAgICAgICAg
ICBfbG9nLmRlYnVnKGVycikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMjExLDcgKzE5
Miw3IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBT
ZXJ2ZXJCYXNlKToKICAgICAgICAgIyBTdG9wIGFueSBjdXJyZW50bHkgcnVubmluZyBzZXJ2ZXJz
LgogICAgICAgICBzZWxmLnN0b3AoKQogCi0gICAgICAgIF9sb2cuZGVidWcoIlN0YXJ0aW5nIGFw
YWNoZSBodHRwIHNlcnZlciIpCisgICAgICAgIF9sb2cuZGVidWcoIlN0YXJ0aW5nICVzIHNlcnZl
ciIgJSBzZWxmLl9uYW1lKQogICAgICAgICBzZXJ2ZXJfc3RhcnRlZCA9IHNlbGYud2FpdF9mb3Jf
YWN0aW9uKHNlbGYuX3N0YXJ0X2h0dHBkX3Byb2Nlc3MpCiAgICAgICAgIGlmIHNlcnZlcl9zdGFy
dGVkOgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiQXBhY2hlIHN0YXJ0ZWQuIFRlc3RpbmcgcG9y
dHMiKQpAQCAtMjIxLDE0ICsyMDIsMTQgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0
dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICBpZiBzZXJ2ZXJfc3RhcnRl
ZDoKICAgICAgICAgICAgIF9sb2cuZGVidWcoIlNlcnZlciBzdWNjZXNzZnVsbHkgc3RhcnRlZCIp
CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ZhaWxlZCB0byBz
dGFydCBodHRwIHNlcnZlcicpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNl
cnZlckVycm9yKCdGYWlsZWQgdG8gc3RhcnQgaHR0cCBzZXJ2ZXInKQogCiAgICAgZGVmIHN0b3Ao
c2VsZik6CiAgICAgICAgICIiIlN0b3BzIHRoZSBhcGFjaGUgaHR0cCBzZXJ2ZXIuIiIiCiAgICAg
ICAgIF9sb2cuZGVidWcoIlNodXR0aW5nIGRvd24gYW55IHJ1bm5pbmcgaHR0cCBzZXJ2ZXJzIikK
ICAgICAgICAgaHR0cGRfcGlkID0gTm9uZQotICAgICAgICBpZiBzZWxmLl9odHRwZF9wcm9jOgot
ICAgICAgICAgICAgaHR0cGRfcGlkID0gc2VsZi5faHR0cGRfcHJvYy5waWQKKyAgICAgICAgaWYg
c2VsZi5fcHJvY2VzczoKKyAgICAgICAgICAgIGh0dHBkX3BpZCA9IHNlbGYuX3Byb2Nlc3MucGlk
CiAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoc2VsZi5fcGlkX2ZpbGUpOgogICAgICAgICAg
ICAgaHR0cGRfcGlkID0gaW50KG9wZW4oc2VsZi5fcGlkX2ZpbGUpLnJlYWRsaW5lKCkpCiAgICAg
ICAgIGlmIGh0dHBkX3BpZDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyLnB5CmluZGV4IDNhNTRjOTliMjAwODhiMTcwMzEz
MjNhMDAxNjU1Nzc1OTEzZWQyZTEuLmVhNDg1MjUzMjgxOGQyYThhMmRkNjQ3ZGI0MTRjYjBmYzcy
MjFhMDEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9odHRwX3NlcnZlci5weQpAQCAtMSw1ICsxLDUgQEAKICMhL3Vzci9iaW4vZW52IHB5
dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwyMSArMjksMTMgQEAKIAog
IiIiQSBjbGFzcyB0byBoZWxwIHN0YXJ0L3N0b3AgdGhlIGxpZ2h0dHBkIHNlcnZlciB1c2VkIGJ5
IGxheW91dCB0ZXN0cy4iIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVu
dAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9wdHBhcnNlCiBpbXBv
cnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1pbXBv
cnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBpbXBvcnQgdXJsbGliCiAKLWltcG9ydCBmYWN0b3J5
Ci1pbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgaHR0cF9zZXJ2ZXJfYmFzZQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lmh0dHBfc2VydmVyIikKIApAQCAtNTcsNiArNDksNyBA
QCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAg
ICAgIiIiCiAgICAgICAgICMgV2Via2l0IHRlc3RzCiAgICAgICAgIGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UuX19pbml0X18oc2VsZiwgcG9ydF9vYmopCisgICAgICAgIHNlbGYuX25h
bWUgPSAnbGlnaHR0cGQnCiAgICAgICAgIHNlbGYuX291dHB1dF9kaXIgPSBvdXRwdXRfZGlyCiAg
ICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBOb25lCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CkBA
IC03MCwxOCArNjMsOSBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2
ZXJCYXNlKToKICAgICAgICAgaWYgbm90IHNlbGYuX2xheW91dF90ZXN0c19kaXI6CiAgICAgICAg
ICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGlyID0gc2VsZi5fcG9ydF9vYmoubGF5b3V0X3Rlc3Rz
X2RpcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fd2Via2l0X3Rlc3RzID0g
b3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIsICdo
dHRwJywgJ3Rlc3RzJykKLSAgICAgICAgICAgIHNlbGYuX2pzX3Rlc3RfcmVzb3VyY2UgPSBvcy5w
YXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciwgJ2Zhc3Qn
LCAnanMnLCAncmVzb3VyY2VzJykKLSAgICAgICAgICAgIHNlbGYuX21lZGlhX3Jlc291cmNlID0g
b3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIsICdt
ZWRpYScpCi0KLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5fd2Via2l0X3Rlc3Rz
ID0gTm9uZQotICAgICAgICAgICAgc2VsZi5fanNfdGVzdF9yZXNvdXJjZSA9IE5vbmUKLSAgICAg
ICAgICAgIHNlbGYuX21lZGlhX3Jlc291cmNlID0gTm9uZQorICAgICAgICBzZWxmLl93ZWJraXRf
dGVzdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciwgJ2h0dHAnLCAndGVz
dHMnKQorICAgICAgICBzZWxmLl9qc190ZXN0X3Jlc291cmNlID0gb3MucGF0aC5qb2luKHNlbGYu
X2xheW91dF90ZXN0c19kaXIsICdmYXN0JywgJ2pzJywgJ3Jlc291cmNlcycpCisgICAgICAgIHNl
bGYuX21lZGlhX3Jlc291cmNlID0gb3MucGF0aC5qb2luKHNlbGYuX2xheW91dF90ZXN0c19kaXIs
ICdtZWRpYScpCiAKICAgICAgICAgIyBTZWxmIGdlbmVyYXRlZCBjZXJ0aWZpY2F0ZSBmb3IgU1NM
IHNlcnZlciAoZm9yIGNsaWVudCBjZXJ0IGdldAogICAgICAgICAjIDxiYXNlLXBhdGg+XGNocm9t
ZVx0ZXN0XGRhdGFcc3NsXGNlcnRzXHJvb3RfY2FfY2VydC5jcnQpCkBAIC0xMDQsNyArODgsNyBA
QCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKIAogICAg
IGRlZiBzdGFydChzZWxmKToKICAgICAgICAgaWYgc2VsZi5pc19ydW5uaW5nKCk6Ci0gICAgICAg
ICAgICByYWlzZSAnTGlnaHR0cGQgYWxyZWFkeSBydW5uaW5nJworICAgICAgICAgICAgcmFpc2Ug
aHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignTGlnaHR0cGQgYWxyZWFkeSBydW5uaW5nJykK
IAogICAgICAgICBiYXNlX2NvbmZfZmlsZSA9IHNlbGYuX3BvcnRfb2JqLnBhdGhfZnJvbV93ZWJr
aXRfYmFzZSgnVG9vbHMnLAogICAgICAgICAgICAgJ1NjcmlwdHMnLCAnd2Via2l0cHknLCAnbGF5
b3V0X3Rlc3RzJywgJ3BvcnQnLCAnbGlnaHR0cGQuY29uZicpCkBAIC0xMjAsMTQgKzEwNCwxMSBA
QCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAg
ICAgc2VsZi5yZW1vdmVfbG9nX2ZpbGVzKHNlbGYuX291dHB1dF9kaXIsICJlcnJvci5sb2ctIikK
IAogICAgICAgICAjIFdyaXRlIG91dCB0aGUgY29uZmlnCi0gICAgICAgIHdpdGggY29kZWNzLm9w
ZW4oYmFzZV9jb25mX2ZpbGUsICJyIiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAgIGJh
c2VfY29uZiA9IGZpbGUucmVhZCgpCisgICAgICAgIGJhc2VfY29uZiA9IHNlbGYuX2ZpbGVzeXN0
ZW0ucmVhZF90ZXh0X2ZpbGUoYmFzZV9jb25mX2ZpbGUpCiAKICAgICAgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcmUtd29ya2VkIHNvIHRoYXQgdGhpcyBibG9jayBjYW4KICAgICAgICAgIyB1
c2Ugd2l0aCBvcGVuKCkgaW5zdGVhZCBvZiBhIG1hbnVhbCBmaWxlLmNsb3NlKCkgY2FsbC4KLSAg
ICAgICAgIyBsaWdodHRwZC5jb25mIGZpbGVzIHNlZW0gdG8gYmUgVVRGLTggd2l0aG91dCBCT006
Ci0gICAgICAgICMgaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L2lzc3Vlcy85OTIKLSAgICAg
ICAgZiA9IGNvZGVjcy5vcGVuKG91dF9jb25mX2ZpbGUsICJ3IiwgInV0Zi04IikKKyAgICAgICAg
ZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcob3V0X2NvbmZf
ZmlsZSkKICAgICAgICAgZi53cml0ZShiYXNlX2NvbmYpCiAKICAgICAgICAgIyBXcml0ZSBvdXQg
b3VyIGNnaSBoYW5kbGVycy4gIFJ1biBwZXJsIHRocm91Z2ggZW52IHNvIHRoYXQgaXQKQEAgLTIw
NCwxMyArMTg1LDEyIEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZl
ckJhc2UpOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRtcF9tb2R1bGVfcGF0
aCk6CiAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnModG1wX21vZHVsZV9wYXRoKQogICAgICAg
ICAgICAgbGliX2ZpbGUgPSAnbGlibGlnaHRjb21wLmR5bGliJwotICAgICAgICAgICAgc2h1dGls
LmNvcHlmaWxlKG9zLnBhdGguam9pbihtb2R1bGVfcGF0aCwgbGliX2ZpbGUpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih0bXBfbW9kdWxlX3BhdGgsIGxpYl9maWxl
KSkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weWZpbGUob3MucGF0aC5qb2luKG1v
ZHVsZV9wYXRoLCBsaWJfZmlsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbih0bXBfbW9kdWxlX3BhdGgsIGxpYl9maWxlKSkKIAogICAgICAgICBl
bnYgPSBzZWxmLl9wb3J0X29iai5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoKQotICAgICAgICBf
bG9nLmRlYnVnKCdTdGFydGluZyBodHRwIHNlcnZlciwgY21kPSIlcyInICUgc3RyKHN0YXJ0X2Nt
ZCkpCi0gICAgICAgICMgRklYTUU6IFNob3VsZCB1c2UgRXhlY3V0aXZlLnJ1bl9jb21tYW5kCi0g
ICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHN0YXJ0X2NtZCwgZW52PWVu
diwgc3RkaW49c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyAl
cyBzZXJ2ZXIsIGNtZD0iJXMiJyAlIChzZWxmLl9uYW1lLCBzdHIoc3RhcnRfY21kKSkpCisgICAg
ICAgIHNlbGYuX3Byb2Nlc3MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4oc3RhcnRfY21kLCBlbnY9
ZW52LCBzdGRpbj1zZWxmLl9leGVjdXRpdmUuUElQRSkKIAogICAgICAgICAjIFdhaXQgZm9yIHNl
cnZlciB0byBzdGFydC4KICAgICAgICAgc2VsZi5tYXBwaW5ncyA9IG1hcHBpbmdzCkBAIC0yMTks
NyArMTk5LDcgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFz
ZSk6CiAKICAgICAgICAgIyBPdXIgcHJvY2VzcyB0ZXJtaW5hdGVkIGFscmVhZHkKICAgICAgICAg
aWYgbm90IHNlcnZlcl9zdGFydGVkIG9yIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29kZSAhPSBOb25l
OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cGQuJykK
KyAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxlZCB0
byBzdGFydCAlcy4nICUgc2VsZi5fbmFtZSkKIAogICAgICAgICBfbG9nLmRlYnVnKCJTZXJ2ZXIg
c3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQiKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXggOGUz
ZDIwNjU4ZWViNDI1NWFlMTI5M2I2OWUxZjM4MGMzMmFiZDQ1MC4uOTc5OWRmOGVhNTZmYzU1ZWY5
ZDNhOTk4NWYxMDkyNGQ1MzQ4YmIwMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlcl9iYXNlLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weQpAQCAtMSw1
ICsxLDUgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0yNyw3ICsyNyw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0i
IiJCYXNlIGNsYXNzIHdpdGggY29tbW9uIHJvdXRpbmVzIGJldHdlZW4gdGhlIEFwYWNoZSBhbmQg
TGlnaHR0cGQgc2VydmVycy4iIiIKKyIiIkJhc2UgY2xhc3Mgd2l0aCBjb21tb24gcm91dGluZXMg
YmV0d2VlbiB0aGUgQXBhY2hlLCBMaWdodHRwZCwgYW5kIHdlYnNvY2tldCBzZXJ2ZXJzLiIiIgog
CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCkBAIC0zOSwxMSArMzksMTkgQEAgZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0Lmh0dHBfc2VydmVyX2Jhc2UiKQogCiAK
K2NsYXNzIFNlcnZlckVycm9yKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKIGNsYXNzIEh0dHBT
ZXJ2ZXJCYXNlKG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmopOgor
ICAgICAgICBzZWxmLl9uYW1lID0gJzx2aXJ0dWFsPicKKyAgICAgICAgc2VsZi5fcGlkX2ZpbGUg
PSBOb25lCiAgICAgICAgIHNlbGYuX3BvcnRfb2JqID0gcG9ydF9vYmoKICAgICAgICAgc2VsZi5f
ZXhlY3V0aXZlID0gcG9ydF9vYmouX2V4ZWN1dGl2ZQorICAgICAgICBzZWxmLl9maWxlc3lzdGVt
ID0gcG9ydF9vYmouX2ZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5vbmUKIAog
ICAgIGRlZiB3YWl0X2Zvcl9hY3Rpb24oc2VsZiwgYWN0aW9uKToKICAgICAgICAgIiIiUmVwZWF0
IHRoZSBhY3Rpb24gZm9yIDIwIHNlY29uZHMgb3IgdW50aWwgaXQgc3VjY2VlZHMuIFJldHVybnMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
c29ja2V0X3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Vic29ja2V0X3NlcnZlci5weQppbmRleCBhN2Q2ZDliYzIyNTllMGU5MWUyNWE1MzYxNzM3
OWU1NzZiNDM5NzQ5Li44NGVlOGY2MTRiNTIyYzY1MmEyMWY1YmY2YjE3NGYwNWI0MGZlZjNiIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNv
Y2tldF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CkBAIC0xLDUgKzEsNSBAQAogIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMwLDIyICszMCwxNCBAQAog
IiIiQSBjbGFzcyB0byBoZWxwIHN0YXJ0L3N0b3AgdGhlIFB5V2ViU29ja2V0IHNlcnZlciB1c2Vk
IGJ5IGxheW91dCB0ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3Rh
dGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UK
IGltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmls
ZQogaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxsaWIKIAotaW1wb3J0IGZhY3RvcnkKLWltcG9ydCBo
dHRwX3NlcnZlcgotCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9y
dCBFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGh0dHBf
c2VydmVyCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBodHRwX3NlcnZl
cl9iYXNlCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydC53ZWJzb2NrZXRfc2VydmVyIikKQEAgLTg0LDE0ICs3Niw2IEBAIGRlZiB1cmxfaXNf
YWxpdmUodXJsKToKICAgICByZXR1cm4gRmFsc2UKIAogCi1jbGFzcyBQeVdlYlNvY2tldE5vdFN0
YXJ0ZWQoRXhjZXB0aW9uKToKLSAgICBwYXNzCi0KLQotY2xhc3MgUHlXZWJTb2NrZXROb3RGb3Vu
ZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCiBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZl
ci5MaWdodHRwZCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1dF9k
aXIsIHBvcnQ9X0RFRkFVTFRfV1NfUE9SVCwKQEAgLTExMiwxMSArOTYsMTAgQEAgY2xhc3MgUHlX
ZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBzZWxmLl9jZXJ0aWZpY2F0
ZSA9IHNlbGYuX3BlbV9maWxlCiAgICAgICAgIGlmIHNlbGYuX3BvcnQ6CiAgICAgICAgICAgICBz
ZWxmLl9wb3J0ID0gaW50KHNlbGYuX3BvcnQpCisgICAgICAgIHNlbGYuX25hbWUgPSAncHl3ZWJz
b2NrZXQnCiAgICAgICAgIGlmIHNlbGYuX3VzZV90bHM6Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2
ZXJfbmFtZSA9ICdQeVdlYlNvY2tldChTZWN1cmUpJwotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgc2VsZi5fc2VydmVyX25hbWUgPSAnUHlXZWJTb2NrZXQnCi0gICAgICAgIHNlbGYuX3BpZGZp
bGUgPSBwaWRmaWxlCisgICAgICAgICAgICBzZWxmLl9uYW1lID0gJ3B5d2Vic29ja2V0X3NlY3Vy
ZScKKyAgICAgICAgc2VsZi5fcGlkX2ZpbGUgPSBwaWRmaWxlCiAgICAgICAgIHNlbGYuX3dzb3V0
ID0gTm9uZQogCiAgICAgICAgICMgV2Via2l0IHRlc3RzCkBAIC0xMzUsMTEgKzExOCwxMCBAQCBj
bGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAKICAgICBkZWYgc3RhcnQo
c2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl93ZWJfc29ja2V0X3Rlc3RzOgotICAgICAgICAg
ICAgX2xvZy5pbmZvKCdObyBuZWVkIHRvIHN0YXJ0ICVzIHNlcnZlci4nICUgc2VsZi5fc2VydmVy
X25hbWUpCisgICAgICAgICAgICBfbG9nLmluZm8oJ05vIG5lZWQgdG8gc3RhcnQgJXMgc2VydmVy
LicgJSBzZWxmLl9uYW1lKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIHNlbGYuaXNf
cnVubmluZygpOgotICAgICAgICAgICAgcmFpc2UgUHlXZWJTb2NrZXROb3RTdGFydGVkKCclcyBp
cyBhbHJlYWR5IHJ1bm5pbmcuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VydmVyX25hbWUpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9i
YXNlLlNlcnZlckVycm9yKCclcyBpcyBhbHJlYWR5IHJ1bm5pbmcuJyAlIHNlbGYuX25hbWUpCiAK
ICAgICAgICAgdGltZV9zdHIgPSB0aW1lLnN0cmZ0aW1lKCclZCViJVktJUglTSVTJykKICAgICAg
ICAgaWYgc2VsZi5fdXNlX3RsczoKQEAgLTE1NCw3ICsxMzYsNyBAQCBjbGFzcyBQeVdlYlNvY2tl
dChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAgICAgIGVycm9yX2xvZyA9IG9zLnBhdGguam9p
bihzZWxmLl9vdXRwdXRfZGlyLCBsb2dfZmlsZV9uYW1lICsgIi1lcnIudHh0IikKIAogICAgICAg
ICBvdXRwdXRfbG9nID0gb3MucGF0aC5qb2luKHNlbGYuX291dHB1dF9kaXIsIGxvZ19maWxlX25h
bWUgKyAiLW91dC50eHQiKQotICAgICAgICBzZWxmLl93c291dCA9IGNvZGVjcy5vcGVuKG91dHB1
dF9sb2csICJ3IiwgInV0Zi04IikKKyAgICAgICAgc2VsZi5fd3NvdXQgPSBzZWxmLl9maWxlc3lz
dGVtLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKG91dHB1dF9sb2cpCiAKICAgICAgICAgZnJv
bSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHl3ZWJzb2NrZXQgaW1wb3J0IG1v
ZF9weXdlYnNvY2tldAogICAgICAgICBweXRob25faW50ZXJwID0gc3lzLmV4ZWN1dGFibGUKQEAg
LTE5MSwxNiArMTczLDEzIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBk
KToKICAgICAgICAgZW52WydQWVRIT05QQVRIJ10gPSAocHl3ZWJzb2NrZXRfYmFzZSArIG9zLnBh
dGgucGF0aHNlcCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5nZXQoJ1BZVEhP
TlBBVEgnLCAnJykpCiAKLSAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgJXMgc2VydmVyIG9u
ICVkLicgJSAoCi0gICAgICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX25hbWUsIHNlbGYuX3Bv
cnQpKQotICAgICAgICBfbG9nLmRlYnVnKCdjbWRsaW5lOiAlcycgJSAnICcuam9pbihzdGFydF9j
bWQpKQotICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgZGlyZWN0IHRoaXMgY2FsbCB0aHJvdWdo
IEV4ZWN1dGl2ZSBmb3IgdGVzdGluZy4KKyAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgJXMg
c2VydmVyIG9uICVkLCBjbWQ9IiVzIi4nICUgKHNlbGYuX25hbWUsIHNlbGYuX3BvcnQsIHN0cihz
dGFydF9jbWQpKSkKICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdz
LnB5dGhvbi5vcmcvaXNzdWUyMzIwCi0gICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzdWJwcm9jZXNz
LlBvcGVuKHN0YXJ0X2NtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkaW49b3Blbihvcy5kZXZudWxsLCAncicpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGRvdXQ9c2VsZi5fd3NvdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgc2VsZi5f
cHJvY2VzcyA9IHNlbGYuX2V4ZWN1dGl2ZS5wb3BlbihzdGFydF9jbWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49b3Blbihvcy5kZXZudWxsLCAn
cicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91
dD1zZWxmLl93c291dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRlcnI9c2VsZi5fZXhlY3V0aXZlLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52KQogCiAgICAgICAgIGlmIHNlbGYuX3Vz
ZV90bHM6CiAgICAgICAgICAgICB1cmwgPSAnaHR0cHMnCkBAIC0yMTAsMjAgKzE4OSwxNSBAQCBj
bGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAgICAgIGlmIG5vdCB1
cmxfaXNfYWxpdmUodXJsKToKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29k
ZSA9PSBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Mo
c2VsZi5fcHJvY2Vzcy5waWQpCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG91dHB1dF9s
b2csICJyIiwgInV0Zi04IikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnA6
Ci0gICAgICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IobGluZSkKLSAgICAgICAgICAgIHJhaXNl
IFB5V2ViU29ja2V0Tm90U3RhcnRlZCgKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHN0YXJ0
ICVzIHNlcnZlciBvbiBwb3J0ICVzLicgJQotICAgICAgICAgICAgICAgICAgICAoc2VsZi5fc2Vy
dmVyX25hbWUsIHNlbGYuX3BvcnQpKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5yZWFk
X3RleHRfZmlsZShvdXRwdXRfbG9nKS5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgX2xv
Zy5lcnJvcihsaW5lKQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJF
cnJvcignRmFpbGVkIHRvIHN0YXJ0ICVzIHNlcnZlciBvbiBwb3J0ICVzLicgJSAoc2VsZi5fbmFt
ZSwgc2VsZi5fcG9ydCkpCiAKICAgICAgICAgIyBPdXIgcHJvY2VzcyB0ZXJtaW5hdGVkIGFscmVh
ZHkKICAgICAgICAgaWYgc2VsZi5fcHJvY2Vzcy5yZXR1cm5jb2RlICE9IE5vbmU6Ci0gICAgICAg
ICAgICByYWlzZSBQeVdlYlNvY2tldE5vdFN0YXJ0ZWQoCi0gICAgICAgICAgICAgICAgJ0ZhaWxl
ZCB0byBzdGFydCAlcyBzZXJ2ZXIuJyAlIHNlbGYuX3NlcnZlcl9uYW1lKQotICAgICAgICBpZiBz
ZWxmLl9waWRmaWxlOgotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihzZWxmLl9waWRmaWxl
LCAidyIsICJhc2NpaSIpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZSgiJWQi
ICUgc2VsZi5fcHJvY2Vzcy5waWQpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNl
LlNlcnZlckVycm9yKCdGYWlsZWQgdG8gc3RhcnQgJXMgc2VydmVyLicgJSBzZWxmLl9uYW1lKQor
ICAgICAgICBpZiBzZWxmLnBpZF9maWxlOgorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53
cml0ZV90ZXh0X2ZpbGUoc2VsZi5waWRfZmlsZSwgIiVkIiAlIHNlbGYuX3Byb2Nlc3MucGlkKQog
CiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToK
QEAgLTIzMiwxNSArMjA2LDEzIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0
dHBkKToKICAgICAgICAgcGlkID0gTm9uZQogICAgICAgICBpZiBzZWxmLl9wcm9jZXNzOgogICAg
ICAgICAgICAgcGlkID0gc2VsZi5fcHJvY2Vzcy5waWQKLSAgICAgICAgZWxpZiBzZWxmLl9waWRm
aWxlOgotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihzZWxmLl9waWRmaWxlLCAiciIsICJh
c2NpaSIpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgcGlkID0gaW50KGZpbGUucmVhZCgpLnN0
cmlwKCkpCisgICAgICAgIGVsaWYgc2VsZi5waWRfZmlsZToKKyAgICAgICAgICAgIHBpZCA9IGlu
dChzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHNlbGYucGlkX2ZpbGUpKQogCiAgICAg
ICAgIGlmIG5vdCBwaWQ6Ci0gICAgICAgICAgICByYWlzZSBQeVdlYlNvY2tldE5vdEZvdW5kKAot
ICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZmluZCAlcyBzZXJ2ZXIgcGlkLicgJSBzZWxmLl9z
ZXJ2ZXJfbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJy
b3IoJ0ZhaWxlZCB0byBmaW5kICVzIHNlcnZlciBwaWQuJyAlIHNlbGYuX25hbWUpCiAKLSAgICAg
ICAgX2xvZy5kZWJ1ZygnU2h1dHRpbmcgZG93biAlcyBzZXJ2ZXIgJWQuJyAlIChzZWxmLl9zZXJ2
ZXJfbmFtZSwgcGlkKSkKKyAgICAgICAgX2xvZy5kZWJ1ZygnU2h1dHRpbmcgZG93biAlcyBzZXJ2
ZXIgJWQuJyAlIChzZWxmLl9uYW1lLCBwaWQpKQogICAgICAgICBzZWxmLl9leGVjdXRpdmUua2ls
bF9wcm9jZXNzKHBpZCkKIAogICAgICAgICBpZiBzZWxmLl9wcm9jZXNzOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96990</attachid>
            <date>2011-06-13 12:32:56 -0700</date>
            <delta_ts>2011-06-20 20:16:47 -0700</delta_ts>
            <desc>fix more typos found by tony</desc>
            <filename>bug-62256-20110613123255.patch</filename>
            <type>text/plain</type>
            <size>19872</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyODgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZmFmYTAzZjFkYWY2NzM4YTIyMmU1NzQ5MWZhM2E1MmNl
NmI0ZjY5Li43MTRhOGJkYjkxOTY1NGU0NWQ4Mjc0M2IxZDJkNzMxYjlmNDI1YWU0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUg
QEAKIDIwMTEtMDYtMDcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2Via2l0cHk6IGNs
ZWFuIHVwIGNvZGUgcHJpb3IgdG8gZnVuY3Rpb25hbCBjaGFuZ2VzIGZvciBzZXJ2ZXIgc3RhcnR1
cC9zaHV0ZG93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjIyNTYKKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgYSBidW5jaCBvZiBtaW5vciBjbGVh
bnVwIG9mIHRoZSBjb2RlLCBidXQgdGhlcmUKKyAgICAgICAgc2hvdWxkIGJlIG5vIGZ1bmN0aW9u
YWwgY2hhbmdlcyBleGNlcHQgdGhhdCBhbGwgb2YgdGhlIG1vZHVsZXMKKyAgICAgICAgd2lsbCBu
b3cgdXNlIHRoZSBzYW1lIGV4Y2VwdGlvbiB0eXBlLiBPdGhlciBjaGFuZ2VzIGluY2x1ZGUKKyAg
ICAgICAgcmVtb3ZpbmcgdW51c2VkIGNvZGUgcGF0aHMgYW5kIGZ1bmN0aW9ucywgcHVzaGluZyAn
bmFtZScgYW5kCisgICAgICAgICdwaWRfZmlsZScgaW50byB0aGUgYmFzZSBjbGFzcyBvZiB0aGUg
c2VydmVyIG9iamVjdHMsIGFuZCB1c2luZworICAgICAgICB0aGUgRmlsZXN5c3RlbSBvYmplY3Qg
aW5zdGVhZCBvZiB0aGUgY29kZWNzLCB0ZW1wZmlsZSwgYW5kCisgICAgICAgIHNodXRpbHMgbW9k
dWxlcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBh
Y2hlX2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvaHR0cF9zZXJ2ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlcl9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weToKKworMjAxMS0wNi0w
NyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdl
ZCBieSBUb255IENoYW5nLgogCiAgICAgICAgIHdlYmtpdHB5OiBhZGQgaW50ZWdyYXRpb24gdGVz
dHMgZm9yIG5ldy1ydW4td2Via2l0LWh0dHBkLCBzdG9wIGNhbGxpbmcgc2h1dF9kb3duX2h0dHBf
c2VydmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2FwYWNoZV9odHRwX3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5CmluZGV4IDkwOTI5NzhmZjJkZDAxNjI3
OWM1YzJkYjM3YzJlNDdlMThkNTM4ZWMuLjYwMzI4NGE3ZmZjOGJiMjYwODQzMjQwMDFiMzg1ZDQ3
Y2I4NDk4YjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYXBhY2hlX2h0dHBfc2VydmVyLnB5CkBAIC0xLDUgKzEsNSBAQAog
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMw
LDE3ICszMCwxMiBAQAogIiIiQSBjbGFzcyB0byBzdGFydC9zdG9wIHRoZSBhcGFjaGUgaHR0cCBz
ZXJ2ZXIgdXNlZCBieSBsYXlvdXQgdGVzdHMuIiIiCiAKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0
IG9wdHBhcnNlCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9y
dCBzeXMKIAotaW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQgaW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5hcGFjaGVfaHR0cF9zZXJ2ZXIiKQogCkBA
IC01NCw3ICs0OSw3IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9i
YXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgIiIiCiAgICAgICAgIGh0dHBfc2VydmVyX2Jh
c2UuSHR0cFNlcnZlckJhc2UuX19pbml0X18oc2VsZiwgcG9ydF9vYmopCiAgICAgICAgIHNlbGYu
X291dHB1dF9kaXIgPSBvdXRwdXRfZGlyCi0gICAgICAgIHNlbGYuX2h0dHBkX3Byb2MgPSBOb25l
CisgICAgICAgIHNlbGYuX25hbWUgPSAnYXBhY2hlJwogICAgICAgICBwb3J0X29iai5tYXliZV9t
YWtlX2RpcmVjdG9yeShvdXRwdXRfZGlyKQogCiAgICAgICAgIHNlbGYubWFwcGluZ3MgPSBbeydw
b3J0JzogODAwMH0sCkBAIC0xNTcsOSArMTUyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0
dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAgICAg
ICAgaHR0cGRfY29uZmlnID0gc2VsZi5fcG9ydF9vYmouX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19m
aWxlKCkKICAgICAgICAgaHR0cGRfY29uZmlnX2NvcHkgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rp
ciwgImh0dHBkLmNvbmYiKQotICAgICAgICAjIGh0dHBkLmNvbmYgaXMgYWx3YXlzIHV0Zi04IGFj
Y29yZGluZyB0byBodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2duYXRzLzEwMTI1Ci0gICAgICAg
IHdpdGggY29kZWNzLm9wZW4oaHR0cGRfY29uZmlnLCAiciIsICJ1dGYtOCIpIGFzIGh0dHBkX2Nv
bmZpZ19maWxlOgotICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmZpZ19maWxlLnJl
YWQoKQorICAgICAgICBodHRwZF9jb25mID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShodHRwZF9jb25maWcpCiAgICAgICAgIGlmIHNlbGYuX2lzX2N5Z3dpbigpOgogICAgICAgICAg
ICAgIyBUaGlzIGlzIGEgZ3Jvc3MgaGFjaywgYnV0IGl0IGxldHMgdXMgdXNlIHRoZSB1cHN0cmVh
bSAuY29uZiBmaWxlCiAgICAgICAgICAgICAjIGFuZCBvdXIgY2hlY2tlZCBpbiBjeWd3aW4uIFRo
aXMgdGVsbHMgdGhlIHNlcnZlciB0aGUgcm9vdApAQCAtMTcyLDIyICsxNjUsMTIgQEAgY2xhc3Mg
TGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgog
ICAgICAgICAgICAgaHR0cGRfY29uZiA9IGh0dHBkX2NvbmYucmVwbGFjZSgnU2VydmVyUm9vdCAi
L3VzciInLAogICAgICAgICAgICAgICAgICdTZXJ2ZXJSb290ICIlcyInICUgc2VsZi5fZ2V0X2N5
Z3dpbl9wYXRoKGN5Z3VzcikpCiAKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihodHRwZF9jb25m
aWdfY29weSwgInciLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZSho
dHRwZF9jb25mKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShodHRw
ZF9jb25maWdfY29weSwgaHR0cGRfY29uZikKIAogICAgICAgICBpZiBzZWxmLl9pc19jeWd3aW4o
KToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY3lnd2luX3BhdGgoaHR0cGRfY29uZmln
X2NvcHkpCiAgICAgICAgIHJldHVybiBodHRwZF9jb25maWdfY29weQogCi0gICAgZGVmIF9nZXRf
dmlydHVhbF9ob3N0X2NvbmZpZyhzZWxmLCBkb2N1bWVudF9yb290LCBwb3J0LCBzc2w9RmFsc2Up
OgotICAgICAgICAiIiJSZXR1cm5zIGEgPFZpcnR1YWxIb3N0PiBkaXJlY3RpdmUgYmxvY2sgZm9y
IGFuIGh0dHBkLmNvbmYgZmlsZS4KLSAgICAgICAgSXQgd2lsbCBsaXN0ZW4gdG8gMTI3LjAuMC4x
IG9uIGVhY2ggb2YgdGhlIGdpdmVuIHBvcnQuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4g
J1xuJy5qb2luKCgnPFZpcnR1YWxIb3N0IDEyNy4wLjAuMTolcz4nICUgcG9ydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0RvY3VtZW50Um9vdCAiJXMiJyAlIGRvY3VtZW50X3Jvb3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHNzbCBhbmQgJ1NTTEVuZ2luZSBPbicgb3IgJycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICc8L1ZpcnR1YWxIb3N0PicsICcnKSkKLQogICAgIGRl
ZiBfc3RhcnRfaHR0cGRfcHJvY2VzcyhzZWxmKToKICAgICAgICAgIiIiU3RhcnRzIHRoZSBodHRw
ZCBwcm9jZXNzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2VyZSBlcnJvcnMuIiIiCiAgICAg
ICAgICMgVXNlIHNoZWxsPVRydWUgYmVjYXVzZSB3ZSBqb2luIHRoZSBhcmd1bWVudHMgaW50byBh
IHN0cmluZyBmb3IKQEAgLTE5NywxMCArMTgwLDggQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0
dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAjIHNoZWxsPVRy
dWUgaXMgYSB0cmFpbCBvZiB0ZWFycy4KICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6
IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCiAgICAgICAgIF9sb2cuZGVidWcoJ1N0
YXJ0aW5nIGh0dHAgc2VydmVyLCBjbWQ9IiVzIicgJSBzdHIoc2VsZi5fc3RhcnRfY21kKSkKLSAg
ICAgICAgc2VsZi5faHR0cGRfcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5fc3RhcnRfY21k
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3Vi
cHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXJyID0gc2Vs
Zi5faHR0cGRfcHJvYy5zdGRlcnIucmVhZCgpCisgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzZWxm
Ll9leGVjdXRpdmUucG9wZW4oc2VsZi5fc3RhcnRfY21kLCBzdGRlcnI9c2VsZi5fZXhlY3V0aXZl
LlBJUEUsIHNoZWxsPVRydWUpCisgICAgICAgIGVyciA9IHNlbGYuX3Byb2Nlc3Muc3RkZXJyLnJl
YWQoKQogICAgICAgICBpZiBsZW4oZXJyKToKICAgICAgICAgICAgIF9sb2cuZGVidWcoZXJyKQog
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yMTEsNyArMTkyLDcgQEAgY2xhc3MgTGF5b3V0
VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAg
ICAjIFN0b3AgYW55IGN1cnJlbnRseSBydW5uaW5nIHNlcnZlcnMuCiAgICAgICAgIHNlbGYuc3Rv
cCgpCiAKLSAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgYXBhY2hlIGh0dHAgc2VydmVyIikK
KyAgICAgICAgX2xvZy5kZWJ1ZygiU3RhcnRpbmcgJXMgc2VydmVyIiAlIHNlbGYuX25hbWUpCiAg
ICAgICAgIHNlcnZlcl9zdGFydGVkID0gc2VsZi53YWl0X2Zvcl9hY3Rpb24oc2VsZi5fc3RhcnRf
aHR0cGRfcHJvY2VzcykKICAgICAgICAgaWYgc2VydmVyX3N0YXJ0ZWQ6CiAgICAgICAgICAgICBf
bG9nLmRlYnVnKCJBcGFjaGUgc3RhcnRlZC4gVGVzdGluZyBwb3J0cyIpCkBAIC0yMjEsMTQgKzIw
MiwxNCBAQCBjbGFzcyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRw
U2VydmVyQmFzZSk6CiAgICAgICAgIGlmIHNlcnZlcl9zdGFydGVkOgogICAgICAgICAgICAgX2xv
Zy5kZWJ1ZygiU2VydmVyIHN1Y2Nlc3NmdWxseSBzdGFydGVkIikKICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHN0YXJ0IGh0dHAgc2VydmVyJykK
KyAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxlZCB0
byBzdGFydCBodHRwIHNlcnZlcicpCiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgIiIi
U3RvcHMgdGhlIGFwYWNoZSBodHRwIHNlcnZlci4iIiIKICAgICAgICAgX2xvZy5kZWJ1ZygiU2h1
dHRpbmcgZG93biBhbnkgcnVubmluZyBodHRwIHNlcnZlcnMiKQogICAgICAgICBodHRwZF9waWQg
PSBOb25lCi0gICAgICAgIGlmIHNlbGYuX2h0dHBkX3Byb2M6Ci0gICAgICAgICAgICBodHRwZF9w
aWQgPSBzZWxmLl9odHRwZF9wcm9jLnBpZAorICAgICAgICBpZiBzZWxmLl9wcm9jZXNzOgorICAg
ICAgICAgICAgaHR0cGRfcGlkID0gc2VsZi5fcHJvY2Vzcy5waWQKICAgICAgICAgZWxpZiBvcy5w
YXRoLmV4aXN0cyhzZWxmLl9waWRfZmlsZSk6CiAgICAgICAgICAgICBodHRwZF9waWQgPSBpbnQo
b3BlbihzZWxmLl9waWRfZmlsZSkucmVhZGxpbmUoKSkKICAgICAgICAgaWYgaHR0cGRfcGlkOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRw
X3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvaHR0
cF9zZXJ2ZXIucHkKaW5kZXggM2E1NGM5OWIyMDA4OGIxNzAzMTMyM2EwMDE2NTU3NzU5MTNlZDJl
MS4uNmRhNWQ1MjU5Mjg3ZjFlYWU5NmRjNzU0Y2Y5NGUxNjVmYzE2NTA3NyAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9odHRwX3NlcnZlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVy
LnB5CkBAIC0xLDUgKzEsNSBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI5LDIxICsyOSwxMyBAQAogCiAiIiJBIGNsYXNzIHRvIGhlbHAg
c3RhcnQvc3RvcCB0aGUgbGlnaHR0cGQgc2VydmVyIHVzZWQgYnkgbGF5b3V0IHRlc3RzLiIiIgog
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MK
IGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwotaW1wb3J0IHNodXRp
bAotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0
IHRpbWUKIGltcG9ydCB1cmxsaWIKIAotaW1wb3J0IGZhY3RvcnkKLWltcG9ydCBodHRwX3NlcnZl
cl9iYXNlCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBodHRwX3NlcnZl
cl9iYXNlCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQuaHR0cF9zZXJ2ZXIiKQogCkBAIC01Nyw2ICs0OSw3IEBAIGNsYXNzIExpZ2h0dHBkKGh0
dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAiIiIKICAgICAgICAgIyBX
ZWJraXQgdGVzdHMKICAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2lu
aXRfXyhzZWxmLCBwb3J0X29iaikKKyAgICAgICAgc2VsZi5fbmFtZSA9ICdsaWdodHRwZCcKICAg
ICAgICAgc2VsZi5fb3V0cHV0X2RpciA9IG91dHB1dF9kaXIKICAgICAgICAgc2VsZi5fcHJvY2Vz
cyA9IE5vbmUKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKQEAgLTcwLDE4ICs2Myw5IEBAIGNs
YXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICBp
ZiBub3Qgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpcjoKICAgICAgICAgICAgIHNlbGYuX2xheW91dF90
ZXN0c19kaXIgPSBzZWxmLl9wb3J0X29iai5sYXlvdXRfdGVzdHNfZGlyKCkKIAotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLl93ZWJraXRfdGVzdHMgPSBvcy5wYXRoLmpvaW4oCi0gICAg
ICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciwgJ2h0dHAnLCAndGVzdHMnKQotICAg
ICAgICAgICAgc2VsZi5fanNfdGVzdF9yZXNvdXJjZSA9IG9zLnBhdGguam9pbigKLSAgICAgICAg
ICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGlyLCAnZmFzdCcsICdqcycsICdyZXNvdXJjZXMn
KQotICAgICAgICAgICAgc2VsZi5fbWVkaWFfcmVzb3VyY2UgPSBvcy5wYXRoLmpvaW4oCi0gICAg
ICAgICAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciwgJ21lZGlhJykKLQotICAgICAgICBl
eGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLl93ZWJraXRfdGVzdHMgPSBOb25lCi0gICAgICAgICAg
ICBzZWxmLl9qc190ZXN0X3Jlc291cmNlID0gTm9uZQotICAgICAgICAgICAgc2VsZi5fbWVkaWFf
cmVzb3VyY2UgPSBOb25lCisgICAgICAgIHNlbGYuX3dlYmtpdF90ZXN0cyA9IG9zLnBhdGguam9p
bihzZWxmLl9sYXlvdXRfdGVzdHNfZGlyLCAnaHR0cCcsICd0ZXN0cycpCisgICAgICAgIHNlbGYu
X2pzX3Rlc3RfcmVzb3VyY2UgPSBvcy5wYXRoLmpvaW4oc2VsZi5fbGF5b3V0X3Rlc3RzX2Rpciwg
J2Zhc3QnLCAnanMnLCAncmVzb3VyY2VzJykKKyAgICAgICAgc2VsZi5fbWVkaWFfcmVzb3VyY2Ug
PSBvcy5wYXRoLmpvaW4oc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciwgJ21lZGlhJykKIAogICAgICAg
ICAjIFNlbGYgZ2VuZXJhdGVkIGNlcnRpZmljYXRlIGZvciBTU0wgc2VydmVyIChmb3IgY2xpZW50
IGNlcnQgZ2V0CiAgICAgICAgICMgPGJhc2UtcGF0aD5cY2hyb21lXHRlc3RcZGF0YVxzc2xcY2Vy
dHNccm9vdF9jYV9jZXJ0LmNydCkKQEAgLTEwNCw3ICs4OCw3IEBAIGNsYXNzIExpZ2h0dHBkKGh0
dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgog
ICAgICAgICBpZiBzZWxmLmlzX3J1bm5pbmcoKToKLSAgICAgICAgICAgIHJhaXNlICdMaWdodHRw
ZCBhbHJlYWR5IHJ1bm5pbmcnCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNl
cnZlckVycm9yKCclcyBhbHJlYWR5IHJ1bm5pbmcnICUgc2VsZi5fbmFtZSkKIAogICAgICAgICBi
YXNlX2NvbmZfZmlsZSA9IHNlbGYuX3BvcnRfb2JqLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnVG9v
bHMnLAogICAgICAgICAgICAgJ1NjcmlwdHMnLCAnd2Via2l0cHknLCAnbGF5b3V0X3Rlc3RzJywg
J3BvcnQnLCAnbGlnaHR0cGQuY29uZicpCkBAIC0xMjAsMTQgKzEwNCwxMSBAQCBjbGFzcyBMaWdo
dHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgc2VsZi5yZW1v
dmVfbG9nX2ZpbGVzKHNlbGYuX291dHB1dF9kaXIsICJlcnJvci5sb2ctIikKIAogICAgICAgICAj
IFdyaXRlIG91dCB0aGUgY29uZmlnCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4oYmFzZV9jb25m
X2ZpbGUsICJyIiwgInV0Zi04IikgYXMgZmlsZToKLSAgICAgICAgICAgIGJhc2VfY29uZiA9IGZp
bGUucmVhZCgpCisgICAgICAgIGJhc2VfY29uZiA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0
X2ZpbGUoYmFzZV9jb25mX2ZpbGUpCiAKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
cmUtd29ya2VkIHNvIHRoYXQgdGhpcyBibG9jayBjYW4KICAgICAgICAgIyB1c2Ugd2l0aCBvcGVu
KCkgaW5zdGVhZCBvZiBhIG1hbnVhbCBmaWxlLmNsb3NlKCkgY2FsbC4KLSAgICAgICAgIyBsaWdo
dHRwZC5jb25mIGZpbGVzIHNlZW0gdG8gYmUgVVRGLTggd2l0aG91dCBCT006Ci0gICAgICAgICMg
aHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L2lzc3Vlcy85OTIKLSAgICAgICAgZiA9IGNvZGVj
cy5vcGVuKG91dF9jb25mX2ZpbGUsICJ3IiwgInV0Zi04IikKKyAgICAgICAgZiA9IHNlbGYuX2Zp
bGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcob3V0X2NvbmZfZmlsZSkKICAgICAg
ICAgZi53cml0ZShiYXNlX2NvbmYpCiAKICAgICAgICAgIyBXcml0ZSBvdXQgb3VyIGNnaSBoYW5k
bGVycy4gIFJ1biBwZXJsIHRocm91Z2ggZW52IHNvIHRoYXQgaXQKQEAgLTIwNCwxMyArMTg1LDEy
IEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAg
ICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRtcF9tb2R1bGVfcGF0aCk6CiAgICAgICAg
ICAgICAgICAgb3MubWFrZWRpcnModG1wX21vZHVsZV9wYXRoKQogICAgICAgICAgICAgbGliX2Zp
bGUgPSAnbGlibGlnaHRjb21wLmR5bGliJwotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9z
LnBhdGguam9pbihtb2R1bGVfcGF0aCwgbGliX2ZpbGUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9zLnBhdGguam9pbih0bXBfbW9kdWxlX3BhdGgsIGxpYl9maWxlKSkKKyAgICAgICAg
ICAgIHNlbGYuX2ZpbGVzeXN0ZW0uY29weWZpbGUob3MucGF0aC5qb2luKG1vZHVsZV9wYXRoLCBs
aWJfZmlsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGgu
am9pbih0bXBfbW9kdWxlX3BhdGgsIGxpYl9maWxlKSkKIAogICAgICAgICBlbnYgPSBzZWxmLl9w
b3J0X29iai5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoKQotICAgICAgICBfbG9nLmRlYnVnKCdT
dGFydGluZyBodHRwIHNlcnZlciwgY21kPSIlcyInICUgc3RyKHN0YXJ0X2NtZCkpCi0gICAgICAg
ICMgRklYTUU6IFNob3VsZCB1c2UgRXhlY3V0aXZlLnJ1bl9jb21tYW5kCi0gICAgICAgIHNlbGYu
X3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHN0YXJ0X2NtZCwgZW52PWVudiwgc3RkaW49c3Vi
cHJvY2Vzcy5QSVBFKQorICAgICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyAlcyBzZXJ2ZXIsIGNt
ZD0iJXMiJyAlIChzZWxmLl9uYW1lLCBzdHIoc3RhcnRfY21kKSkpCisgICAgICAgIHNlbGYuX3By
b2Nlc3MgPSBzZWxmLl9leGVjdXRpdmUucG9wZW4oc3RhcnRfY21kLCBlbnY9ZW52LCBzdGRpbj1z
ZWxmLl9leGVjdXRpdmUuUElQRSkKIAogICAgICAgICAjIFdhaXQgZm9yIHNlcnZlciB0byBzdGFy
dC4KICAgICAgICAgc2VsZi5tYXBwaW5ncyA9IG1hcHBpbmdzCkBAIC0yMTksNyArMTk5LDcgQEAg
Y2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAKICAgICAg
ICAgIyBPdXIgcHJvY2VzcyB0ZXJtaW5hdGVkIGFscmVhZHkKICAgICAgICAgaWYgbm90IHNlcnZl
cl9zdGFydGVkIG9yIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29kZSAhPSBOb25lOgotICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gc3RhcnQgaHR0cGQuJykKKyAgICAgICAgICAg
IHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxlZCB0byBzdGFydCAlcy4n
ICUgc2VsZi5fbmFtZSkKIAogICAgICAgICBfbG9nLmRlYnVnKCJTZXJ2ZXIgc3VjY2Vzc2Z1bGx5
IHN0YXJ0ZWQiKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXggOGUzZDIwNjU4ZWViNDI1
NWFlMTI5M2I2OWUxZjM4MGMzMmFiZDQ1MC4uOTc5OWRmOGVhNTZmYzU1ZWY5ZDNhOTk4NWYxMDky
NGQ1MzQ4YmIwMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9odHRwX3NlcnZlcl9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvaHR0cF9zZXJ2ZXJfYmFzZS5weQpAQCAtMSw1ICsxLDUgQEAKICMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNyw3
ICsyNyw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiJCYXNlIGNsYXNz
IHdpdGggY29tbW9uIHJvdXRpbmVzIGJldHdlZW4gdGhlIEFwYWNoZSBhbmQgTGlnaHR0cGQgc2Vy
dmVycy4iIiIKKyIiIkJhc2UgY2xhc3Mgd2l0aCBjb21tb24gcm91dGluZXMgYmV0d2VlbiB0aGUg
QXBhY2hlLCBMaWdodHRwZCwgYW5kIHdlYnNvY2tldCBzZXJ2ZXJzLiIiIgogCiBpbXBvcnQgbG9n
Z2luZwogaW1wb3J0IG9zCkBAIC0zOSwxMSArMzksMTkgQEAgZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0Lmh0dHBfc2VydmVyX2Jhc2UiKQogCiAKK2NsYXNzIFNlcnZl
ckVycm9yKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKIGNsYXNzIEh0dHBTZXJ2ZXJCYXNlKG9i
amVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmopOgorICAgICAgICBzZWxm
Ll9uYW1lID0gJzx2aXJ0dWFsPicKKyAgICAgICAgc2VsZi5fcGlkX2ZpbGUgPSBOb25lCiAgICAg
ICAgIHNlbGYuX3BvcnRfb2JqID0gcG9ydF9vYmoKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0g
cG9ydF9vYmouX2V4ZWN1dGl2ZQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcG9ydF9vYmou
X2ZpbGVzeXN0ZW0KKyAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5vbmUKIAogICAgIGRlZiB3YWl0
X2Zvcl9hY3Rpb24oc2VsZiwgYWN0aW9uKToKICAgICAgICAgIiIiUmVwZWF0IHRoZSBhY3Rpb24g
Zm9yIDIwIHNlY29uZHMgb3IgdW50aWwgaXQgc3VjY2VlZHMuIFJldHVybnMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0
X3NlcnZlci5weQppbmRleCBhN2Q2ZDliYzIyNTllMGU5MWUyNWE1MzYxNzM3OWU1NzZiNDM5NzQ5
Li5kNDZhNDE5MmJlNzA2NjI4MDcxNjJiMjMyNzRiMDA2NDQ0NjE0ZWVhIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2Nr
ZXRfc2VydmVyLnB5CkBAIC0xLDUgKzEsNSBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMwLDIyICszMCwxNCBAQAogIiIiQSBjbGFzcyB0
byBoZWxwIHN0YXJ0L3N0b3AgdGhlIFB5V2ViU29ja2V0IHNlcnZlciB1c2VkIGJ5IGxheW91dCB0
ZXN0cy4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWlt
cG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwot
aW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRp
bWUKIGltcG9ydCB1cmxsaWIKIAotaW1wb3J0IGZhY3RvcnkKLWltcG9ydCBodHRwX3NlcnZlcgot
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUK
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGh0dHBfc2VydmVyCitmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCiAKIAog
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJz
b2NrZXRfc2VydmVyIikKQEAgLTg0LDE0ICs3Niw2IEBAIGRlZiB1cmxfaXNfYWxpdmUodXJsKToK
ICAgICByZXR1cm4gRmFsc2UKIAogCi1jbGFzcyBQeVdlYlNvY2tldE5vdFN0YXJ0ZWQoRXhjZXB0
aW9uKToKLSAgICBwYXNzCi0KLQotY2xhc3MgUHlXZWJTb2NrZXROb3RGb3VuZChFeGNlcHRpb24p
OgotICAgIHBhc3MKLQotCiBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6
CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1dF9kaXIsIHBvcnQ9X0RF
RkFVTFRfV1NfUE9SVCwKQEAgLTExMiwxMSArOTYsMTAgQEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0
cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBzZWxmLl9jZXJ0aWZpY2F0ZSA9IHNlbGYuX3Bl
bV9maWxlCiAgICAgICAgIGlmIHNlbGYuX3BvcnQ6CiAgICAgICAgICAgICBzZWxmLl9wb3J0ID0g
aW50KHNlbGYuX3BvcnQpCisgICAgICAgIHNlbGYuX25hbWUgPSAncHl3ZWJzb2NrZXQnCiAgICAg
ICAgIGlmIHNlbGYuX3VzZV90bHM6Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfbmFtZSA9ICdQ
eVdlYlNvY2tldChTZWN1cmUpJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc2Vy
dmVyX25hbWUgPSAnUHlXZWJTb2NrZXQnCi0gICAgICAgIHNlbGYuX3BpZGZpbGUgPSBwaWRmaWxl
CisgICAgICAgICAgICBzZWxmLl9uYW1lID0gJ3B5d2Vic29ja2V0X3NlY3VyZScKKyAgICAgICAg
c2VsZi5fcGlkX2ZpbGUgPSBwaWRmaWxlCiAgICAgICAgIHNlbGYuX3dzb3V0ID0gTm9uZQogCiAg
ICAgICAgICMgV2Via2l0IHRlc3RzCkBAIC0xMzUsMTEgKzExOCwxMCBAQCBjbGFzcyBQeVdlYlNv
Y2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAg
ICAgIGlmIG5vdCBzZWxmLl93ZWJfc29ja2V0X3Rlc3RzOgotICAgICAgICAgICAgX2xvZy5pbmZv
KCdObyBuZWVkIHRvIHN0YXJ0ICVzIHNlcnZlci4nICUgc2VsZi5fc2VydmVyX25hbWUpCisgICAg
ICAgICAgICBfbG9nLmluZm8oJ05vIG5lZWQgdG8gc3RhcnQgJXMgc2VydmVyLicgJSBzZWxmLl9u
YW1lKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIHNlbGYuaXNfcnVubmluZygpOgot
ICAgICAgICAgICAgcmFpc2UgUHlXZWJTb2NrZXROb3RTdGFydGVkKCclcyBpcyBhbHJlYWR5IHJ1
bm5pbmcuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
c2VydmVyX25hbWUpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVy
cm9yKCclcyBpcyBhbHJlYWR5IHJ1bm5pbmcuJyAlIHNlbGYuX25hbWUpCiAKICAgICAgICAgdGlt
ZV9zdHIgPSB0aW1lLnN0cmZ0aW1lKCclZCViJVktJUglTSVTJykKICAgICAgICAgaWYgc2VsZi5f
dXNlX3RsczoKQEAgLTE1NCw3ICsxMzYsNyBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZl
ci5MaWdodHRwZCk6CiAgICAgICAgIGVycm9yX2xvZyA9IG9zLnBhdGguam9pbihzZWxmLl9vdXRw
dXRfZGlyLCBsb2dfZmlsZV9uYW1lICsgIi1lcnIudHh0IikKIAogICAgICAgICBvdXRwdXRfbG9n
ID0gb3MucGF0aC5qb2luKHNlbGYuX291dHB1dF9kaXIsIGxvZ19maWxlX25hbWUgKyAiLW91dC50
eHQiKQotICAgICAgICBzZWxmLl93c291dCA9IGNvZGVjcy5vcGVuKG91dHB1dF9sb2csICJ3Iiwg
InV0Zi04IikKKyAgICAgICAgc2VsZi5fd3NvdXQgPSBzZWxmLl9maWxlc3lzdGVtLm9wZW5fdGV4
dF9maWxlX2Zvcl93cml0aW5nKG91dHB1dF9sb2cpCiAKICAgICAgICAgZnJvbSB3ZWJraXRweS50
aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHl3ZWJzb2NrZXQgaW1wb3J0IG1vZF9weXdlYnNvY2tl
dAogICAgICAgICBweXRob25faW50ZXJwID0gc3lzLmV4ZWN1dGFibGUKQEAgLTE5MSwxNiArMTcz
LDEzIEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAgICAgICAg
ZW52WydQWVRIT05QQVRIJ10gPSAocHl3ZWJzb2NrZXRfYmFzZSArIG9zLnBhdGgucGF0aHNlcCAr
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5nZXQoJ1BZVEhPTlBBVEgnLCAnJykp
CiAKLSAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgJXMgc2VydmVyIG9uICVkLicgJSAoCi0g
ICAgICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX25hbWUsIHNlbGYuX3BvcnQpKQotICAgICAg
ICBfbG9nLmRlYnVnKCdjbWRsaW5lOiAlcycgJSAnICcuam9pbihzdGFydF9jbWQpKQotICAgICAg
ICAjIEZJWE1FOiBXZSBzaG91bGQgZGlyZWN0IHRoaXMgY2FsbCB0aHJvdWdoIEV4ZWN1dGl2ZSBm
b3IgdGVzdGluZy4KKyAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgJXMgc2VydmVyIG9uICVk
LCBjbWQ9IiVzIi4nICUgKHNlbGYuX25hbWUsIHNlbGYuX3BvcnQsIHN0cihzdGFydF9jbWQpKSkK
ICAgICAgICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcv
aXNzdWUyMzIwCi0gICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHN0YXJ0
X2NtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49b3Bl
bihvcy5kZXZudWxsLCAncicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGRvdXQ9c2VsZi5fd3NvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAgICAgICAgc2VsZi5fcHJvY2VzcyA9IHNl
bGYuX2V4ZWN1dGl2ZS5wb3BlbihzdGFydF9jbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkaW49b3Blbihvcy5kZXZudWxsLCAncicpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zZWxmLl93c291
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9
c2VsZi5fZXhlY3V0aXZlLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnY9ZW52KQogCiAgICAgICAgIGlmIHNlbGYuX3VzZV90bHM6CiAgICAg
ICAgICAgICB1cmwgPSAnaHR0cHMnCkBAIC0yMTAsMjAgKzE4OSwxNSBAQCBjbGFzcyBQeVdlYlNv
Y2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAgICAgIGlmIG5vdCB1cmxfaXNfYWxpdmUo
dXJsKToKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3MucmV0dXJuY29kZSA9PSBOb25lOgog
ICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvY2Vz
cy5waWQpCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKG91dHB1dF9sb2csICJyIiwgInV0
Zi04IikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnA6Ci0gICAgICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IobGluZSkKLSAgICAgICAgICAgIHJhaXNlIFB5V2ViU29ja2V0
Tm90U3RhcnRlZCgKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHN0YXJ0ICVzIHNlcnZlciBv
biBwb3J0ICVzLicgJQotICAgICAgICAgICAgICAgICAgICAoc2VsZi5fc2VydmVyX25hbWUsIHNl
bGYuX3BvcnQpKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5yZWFkX3RleHRfZmlsZShv
dXRwdXRfbG9nKS5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihsaW5l
KQorICAgICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFpbGVk
IHRvIHN0YXJ0ICVzIHNlcnZlciBvbiBwb3J0ICVzLicgJSAoc2VsZi5fbmFtZSwgc2VsZi5fcG9y
dCkpCiAKICAgICAgICAgIyBPdXIgcHJvY2VzcyB0ZXJtaW5hdGVkIGFscmVhZHkKICAgICAgICAg
aWYgc2VsZi5fcHJvY2Vzcy5yZXR1cm5jb2RlICE9IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBQ
eVdlYlNvY2tldE5vdFN0YXJ0ZWQoCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBzdGFydCAl
cyBzZXJ2ZXIuJyAlIHNlbGYuX3NlcnZlcl9uYW1lKQotICAgICAgICBpZiBzZWxmLl9waWRmaWxl
OgotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihzZWxmLl9waWRmaWxlLCAidyIsICJhc2Np
aSIpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZSgiJWQiICUgc2VsZi5fcHJv
Y2Vzcy5waWQpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9y
KCdGYWlsZWQgdG8gc3RhcnQgJXMgc2VydmVyLicgJSBzZWxmLl9uYW1lKQorICAgICAgICBpZiBz
ZWxmLl9waWRfZmlsZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKHNlbGYuX3BpZF9maWxlLCAiJWQiICUgc2VsZi5fcHJvY2Vzcy5waWQpCiAKICAgICBkZWYg
c3RvcChzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfcnVubmluZygpOgpAQCAtMjMyLDE1
ICsyMDYsMTMgQEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAg
ICAgICBwaWQgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX3Byb2Nlc3M6CiAgICAgICAgICAgICBw
aWQgPSBzZWxmLl9wcm9jZXNzLnBpZAotICAgICAgICBlbGlmIHNlbGYuX3BpZGZpbGU6Ci0gICAg
ICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHNlbGYuX3BpZGZpbGUsICJyIiwgImFzY2lpIikgYXMg
ZmlsZToKLSAgICAgICAgICAgICAgICBwaWQgPSBpbnQoZmlsZS5yZWFkKCkuc3RyaXAoKSkKKyAg
ICAgICAgZWxpZiBzZWxmLl9waWRfZmlsZToKKyAgICAgICAgICAgIHBpZCA9IGludChzZWxmLl9m
aWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHNlbGYuX3BpZF9maWxlKSkKIAogICAgICAgICBpZiBu
b3QgcGlkOgotICAgICAgICAgICAgcmFpc2UgUHlXZWJTb2NrZXROb3RGb3VuZCgKLSAgICAgICAg
ICAgICAgICAnRmFpbGVkIHRvIGZpbmQgJXMgc2VydmVyIHBpZC4nICUgc2VsZi5fc2VydmVyX25h
bWUpCisgICAgICAgICAgICByYWlzZSBodHRwX3NlcnZlcl9iYXNlLlNlcnZlckVycm9yKCdGYWls
ZWQgdG8gZmluZCAlcyBzZXJ2ZXIgcGlkLicgJSBzZWxmLl9uYW1lKQogCi0gICAgICAgIF9sb2cu
ZGVidWcoJ1NodXR0aW5nIGRvd24gJXMgc2VydmVyICVkLicgJSAoc2VsZi5fc2VydmVyX25hbWUs
IHBpZCkpCisgICAgICAgIF9sb2cuZGVidWcoJ1NodXR0aW5nIGRvd24gJXMgc2VydmVyICVkLicg
JSAoc2VsZi5fbmFtZSwgcGlkKSkKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlLmtpbGxfcHJvY2Vz
cyhwaWQpCiAKICAgICAgICAgaWYgc2VsZi5fcHJvY2VzczoK
</data>

          </attachment>
      

    </bug>

</bugzilla>