<?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>181885</bug_id>
          
          <creation_ts>2018-01-19 15:20:24 -0800</creation_ts>
          <short_desc>[webkitpy] Move apache configuration setup to port object.</short_desc>
          <delta_ts>2018-07-12 16:27:44 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>basuke</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1391220</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-01-19 15:20:24 -0800</bug_when>
    <thetext>In layout_tests/servers/apache_http_server.py, the configuration to launch apache process is maintained in the constructor of this object. It already has is_win() branch in it and we are about to add WinCairo configuration on it. Since there are many path manipulation and platform specific settings, it is good idea to move them into port object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392175</commentid>
    <comment_count>1</comment_count>
      <attachid>332054</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-01-23 11:59:16 -0800</bug_when>
    <thetext>Created attachment 332054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392603</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-01-24 09:38:36 -0800</bug_when>
    <thetext>I&apos;m curious what other contributors think about placing more logic like this in the port class.

I am actually against a change like this.  I think that we&apos;ve placed too much in the port class, and am unhappy that a class like LayoutTestApacheHttpd even requires the port object at all. I would much rather LayoutTestApacheHttpd take a host object and preform and platform specific path manipulation itself. The advantage of this would be that it turns LayoutTestApacheHttpd into ApacheHttpd which is not wedded to layout tests in the first place (which will be helpful for API tests, for example).

I would much rather we just add the WinCairo branch and keep this logic inside LayoutTestApacheHttpd rather than continuing to pollute the port class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392649</commentid>
    <comment_count>3</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-01-24 11:27:37 -0800</bug_when>
    <thetext>&gt; I am actually against a change like this.  I think that we&apos;ve placed too much in the port class, and am unhappy that a class like LayoutTestApacheHttpd even requires the port object at all.

The point is that launching httpd server is the duty of port object ( start_server() ). That means each port has different requirements for launching servers. Actually current implementation for win is for AppleWin, but WinCairo has different requirements.

&gt; I would much rather LayoutTestApacheHttpd take a host object and preform and platform specific path manipulation itself.

With above reason, host object is not enough.

&gt; The advantage of this would be that it turns LayoutTestApacheHttpd into ApacheHttpd which is not wedded to layout tests in the first place (which will be helpful for API tests, for example).

I agree with this. Httpd should be more generic. I also don&apos;t like too much dependencies. 

One solution may passing arguments for httpd by constructor. Things to configure are just paths to be passed to start command. They can be an simple dictionary.

For now, we really need this change to achieve http tests on WinCairo. Of course we can keep patching onto current LayoutTestApacheHttpd without this refactoring, but that may bring another madness on it and ended up to hardly maintainable code. With taking this refactoring and those madness are gone from LayoutTestApacheHttpd and other ports. They appears only on WinCairoPort, but we can manage that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392706</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2018-01-24 13:10:23 -0800</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #3)
&gt; ...
&gt; 
&gt; For now, we really need this change to achieve http tests on WinCairo. Of
&gt; course we can keep patching onto current LayoutTestApacheHttpd without this
&gt; refactoring, but that may bring another madness on it and ended up to hardly
&gt; maintainable code. With taking this refactoring and those madness are gone
&gt; from LayoutTestApacheHttpd and other ports. They appears only on
&gt; WinCairoPort, but we can manage that.

I would prefer this code remain in LayoutTestApacheHttpd.  Your statements about platforminfo being insufficient are correct.  I would be be for using arguments to LayoutTestApacheHttpd.  Another possible solution might be to override Port.start_http_server(...) for win-cairo and create a class which inherits from LayoutTestApacheHttpd to handle the win-cairo specific bits.

I&apos;m also curious how win-cairo is differentiated from the other ports. I wouldn&apos;t expect LayoutTestApacheHttpd to differ much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392764</commentid>
    <comment_count>5</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-01-24 14:26:39 -0800</bug_when>
    <thetext>Actually WinCairo tries to be as same as other ports. AppleWin did different thing than others. I don&apos;t have detail about that, but they do that change always on is_win() == true. See the patched win.py.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332054</attachid>
            <date>2018-01-23 11:59:16 -0800</date>
            <delta_ts>2018-07-12 16:27:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>181885.diff</filename>
            <type>text/plain</type>
            <size>15552</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYzcz
Zjk3OWJiOS4uZTg1NjIzOTYwMGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0wMS0yMyAgQmFzdWtlIFN1enVr
aSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW3dlYmtpdHB5XSBNb3ZlIGFw
YWNoZSBjb25maWd1cmF0aW9uIHNldHVwIHRvIHBvcnQgb2JqZWN0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxODg1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKExheW91dFRl
c3RBcGFjaGVIdHRwZC5fX2luaXRfXyk6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hlSHR0cGQp
OgorICAgICAgICAoTGF5b3V0VGVzdEFwYWNoZUh0dHBkLnBpZF9maWxlKToKKyAgICAgICAgKExh
eW91dFRlc3RBcGFjaGVIdHRwZC5zZXRfcGlkX2ZpbGUpOgorICAgICAgICAoTGF5b3V0VGVzdEFw
YWNoZUh0dHBkLm91dHB1dF9kaXIpOgorICAgICAgICAoTGF5b3V0VGVzdEFwYWNoZUh0dHBkLnNl
dF9vdXRwdXRfZGlyKToKKyAgICAgICAgKExheW91dFRlc3RBcGFjaGVIdHRwZC5fZ2V0X2FwYWNo
ZV9jb25maWdfZmlsZV9wYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQudG8uY29uZmlndXJlX2FwYWNoZV9odHRwX3Nl
cnZlcik6CisgICAgICAgIChQb3J0Ll9jb3B5X2FwYWNoZV9jb25maWdfZmlsZV9wYXRoKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5OgorICAgICAgICAoV2luUG9ydC5j
b25maWd1cmVfYXBhY2hlX2h0dHBfc2VydmVyKToKKyAgICAgICAgKFdpblBvcnQpOgorICAgICAg
ICAoV2luUG9ydC5fY29weV9hcGFjaGVfY29uZmlnX2ZpbGVfcGF0aCk6CisKIDIwMTgtMDEtMjMg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjcyNzkgYW5kIHIyMjczNzMuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hl
X2h0dHBfc2VydmVyLnB5CmluZGV4IDc1NWNmNzhhMjQ3Li44NDMwZjAwODQ1NCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0
cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2Vy
dmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTMzLDcgKzMzLDYgQEAKIGltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHNvY2tldAogCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBodHRwX3NlcnZlcl9iYXNlCiAKQEAgLTY0LDg4
ICs2Myw3IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0
dHBTZXJ2ZXJCYXNlKToKIAogICAgICAgICBzZWxmLl9waWRfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbihzZWxmLl9ydW50aW1lX3BhdGgsICclcy5waWQnICUgc2VsZi5fbmFtZSkKIAotICAg
ICAgICBpZiBwb3J0X29iai5ob3N0LnBsYXRmb3JtLmlzX3dpbigpOgotICAgICAgICAgICAgIyBD
b252ZXJ0IHRvIE1TRE9TIGZpbGUgbmFtaW5nOgotICAgICAgICAgICAgcHJlY29tcGlsZWRCdWls
ZGJvdCA9IHJlLmNvbXBpbGUoJ14vaG9tZS9idWlsZGJvdCcpCi0gICAgICAgICAgICBwcmVjb21w
aWxlZERyaXZlID0gcmUuY29tcGlsZSgnXi9jeWdkcml2ZS9bY0NdJykKLSAgICAgICAgICAgIG91
dHB1dF9kaXIgPSBwcmVjb21waWxlZEJ1aWxkYm90LnN1YigiQzovY3lnd2luL2hvbWUvYnVpbGRi
b3QiLCBvdXRwdXRfZGlyKQotICAgICAgICAgICAgb3V0cHV0X2RpciA9IHByZWNvbXBpbGVkRHJp
dmUuc3ViKCJDOiIsIG91dHB1dF9kaXIpCi0gICAgICAgICAgICBzZWxmLnRlc3RzX2RpciA9IHBy
ZWNvbXBpbGVkQnVpbGRib3Quc3ViKCJDOi9jeWd3aW4vaG9tZS9idWlsZGJvdCIsIHNlbGYudGVz
dHNfZGlyKQotICAgICAgICAgICAgc2VsZi50ZXN0c19kaXIgPSBwcmVjb21waWxlZERyaXZlLnN1
YigiQzoiLCBzZWxmLnRlc3RzX2RpcikKLSAgICAgICAgICAgIHNlbGYuX3BpZF9maWxlID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKCJDOi94YW1wcC9hcGFjaGUvbG9ncyIsICclcy5waWQnICUgc2Vs
Zi5fbmFtZSkKLQotICAgICAgICBtaW1lX3R5cGVzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpv
aW4oc2VsZi50ZXN0c19kaXIsICJodHRwIiwgImNvbmYiLCAibWltZS50eXBlcyIpCi0gICAgICAg
IGNlcnRfZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX2RpciwgImh0dHAi
LCAiY29uZiIsICJ3ZWJraXQtaHR0cGQucGVtIikKLSAgICAgICAgYWNjZXNzX2xvZyA9IHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihvdXRwdXRfZGlyLCAiYWNjZXNzX2xvZy50eHQiKQotICAgICAgICBl
cnJvcl9sb2cgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3V0cHV0X2RpciwgImVycm9yX2xvZy50
eHQiKQotICAgICAgICBkb2N1bWVudF9yb290ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
dGVzdHNfZGlyLCAiaHR0cCIsICJ0ZXN0cyIpCi0gICAgICAgIHBocF9pbmlfZGlyID0gc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfZGlyLCAiaHR0cCIsICJjb25mIikKLQotICAgICAg
ICBpZiBwb3J0X29iai5nZXRfb3B0aW9uKCdodHRwX2FjY2Vzc19sb2cnKToKLSAgICAgICAgICAg
IGFjY2Vzc19sb2cgPSBwb3J0X29iai5nZXRfb3B0aW9uKCdodHRwX2FjY2Vzc19sb2cnKQotCi0g
ICAgICAgIGlmIHBvcnRfb2JqLmdldF9vcHRpb24oJ2h0dHBfZXJyb3JfbG9nJyk6Ci0gICAgICAg
ICAgICBlcnJvcl9sb2cgPSBwb3J0X29iai5nZXRfb3B0aW9uKCdodHRwX2Vycm9yX2xvZycpCi0K
LSAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcgYSBwcm90ZWN0ZWQgbWV0
aG9kIG9mIF9wb3J0X29iaiEKLSAgICAgICAgZXhlY3V0YWJsZSA9IHNlbGYuX3BvcnRfb2JqLl9w
YXRoX3RvX2FwYWNoZSgpCi0KLSAgICAgICAgc3RhcnRfY21kID0gW2V4ZWN1dGFibGUsCi0gICAg
ICAgICAgICAnLWYnLCAiXCIlc1wiIiAlIHNlbGYuX2dldF9hcGFjaGVfY29uZmlnX2ZpbGVfcGF0
aChzZWxmLnRlc3RzX2Rpciwgb3V0cHV0X2RpciksCi0gICAgICAgICAgICAnLUMnLCAiXCdEb2N1
bWVudFJvb3QgXCIlc1wiXCciICUgZG9jdW1lbnRfcm9vdCwKLSAgICAgICAgICAgICctYycsICJc
J1R5cGVzQ29uZmlnIFwiJXNcIlwnIiAlIG1pbWVfdHlwZXNfcGF0aCwKLSAgICAgICAgICAgICct
YycsICJcJ1BIUElOSURpciBcIiVzXCJcJyIgJSBwaHBfaW5pX2RpciwKLSAgICAgICAgICAgICct
YycsICJcJ0N1c3RvbUxvZyBcIiVzXCIgY29tbW9uXCciICUgYWNjZXNzX2xvZywKLSAgICAgICAg
ICAgICctYycsICJcJ0Vycm9yTG9nIFwiJXNcIlwnIiAlIGVycm9yX2xvZywKLSAgICAgICAgICAg
ICctYycsICJcJ1BpZEZpbGUgJXMnIiAlIHNlbGYuX3BpZF9maWxlLAotICAgICAgICAgICAgJy1r
JywgInN0YXJ0Il0KLQotICAgICAgICBmb3IgYWxpYXMgaW4gc2VsZi5hbGlhc2VzKCk6Ci0gICAg
ICAgICAgICBzdGFydF9jbWQuZXh0ZW5kKFsnLWMnLCAiXCdBbGlhcyAlcyBcIiVzXCInIiAlIChh
bGlhc1swXSwgYWxpYXNbMV0pXSkKLQotICAgICAgICBpZiBub3QgcG9ydF9vYmouaG9zdC5wbGF0
Zm9ybS5pc193aW4oKToKLSAgICAgICAgICAgIHN0YXJ0X2NtZC5leHRlbmQoWyctQycsICJcJ1Vz
ZXIgXCIlc1wiXCciICUgb3MuZW52aXJvbi5nZXQoIlVTRVJOQU1FIiwgb3MuZW52aXJvbi5nZXQo
IlVTRVIiLCAiIikpXSkKLQotICAgICAgICBlbmFibGVfaXB2NiA9IHNlbGYuX3BvcnRfb2JqLmh0
dHBfc2VydmVyX3N1cHBvcnRzX2lwdjYoKQotICAgICAgICAjIFBlcmZvcm0gcGFydCBvZiB0aGUg
Y2hlY2tzIEFwYWNoZSdzIEFQUiBkb2VzIHdoZW4gdHJ5aW5nIHRvIGxpc3RlbiB0bwotICAgICAg
ICAjIGEgc3BlY2lmaWMgaG9zdC9wb3J0LiBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCB0cnlpbmcg
dG8gbGlzdGVuIHRvCi0gICAgICAgICMgSVBWNiBhZGRyZXNzZXMgd2hlbiBpdCBmYWlscyBvbiBB
cGFjaGUuIEFQUiBpdHNlbGYgdHJpZXMgdG8gY2FsbAotICAgICAgICAjIGdldGFkZHJpbmZvKCkg
YWdhaW4gd2l0aG91dCBBSV9BRERSQ09ORklHIGlmIHRoZSBmaXJzdCBjYWxsIGZhaWxzCi0gICAg
ICAgICMgd2l0aCBFQkFERkxBR1MsIGJ1dCB0aGF0IGlzIG5vdCBob3cgaXQgbm9ybWFsbHkgZmFp
bHMgaW4gb3VyIHVzZQotICAgICAgICAjIGNhc2VzLCBzbyBpZ25vcmUgdGhhdCBmb3Igbm93Lgot
ICAgICAgICAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg2
MDIjYzcKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCc6OjEn
LCAwLCAwLCAwLCAwLCBzb2NrZXQuQUlfQUREUkNPTkZJRykKLSAgICAgICAgZXhjZXB0OgotICAg
ICAgICAgICAgZW5hYmxlX2lwdjYgPSBGYWxzZQotCi0gICAgICAgIGJpbmRfYWRkcmVzcyA9ICcn
IGlmIHNlbGYuX3BvcnRfb2JqLmdldF9vcHRpb24oImh0dHBfYWxsX2ludGVyZmFjZXMiKSBlbHNl
ICcxMjcuMC4wLjE6JwotCi0gICAgICAgIGZvciBtYXBwaW5nIGluIHNlbGYuX21hcHBpbmdzOgot
ICAgICAgICAgICAgcG9ydCA9IG1hcHBpbmdbJ3BvcnQnXQotCi0gICAgICAgICAgICBzdGFydF9j
bWQgKz0gWyctQycsICJcJ0xpc3RlbiAlcyVkXCciICUgKGJpbmRfYWRkcmVzcywgcG9ydCldCi0K
LSAgICAgICAgICAgICMgV2UgbGlzdGVuIHRvIGJvdGggSVB2NCBhbmQgSVB2NiBsb29wLWJhY2sg
YWRkcmVzc2VzLCBidXQgaWdub3JlCi0gICAgICAgICAgICAjIHJlcXVlc3RzIHRvIDgwMDAgZnJv
bSByYW5kb20gdXNlcnMgb24gbmV0d29yay4KLSAgICAgICAgICAgICMgU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzEwNAotICAgICAgICAgICAgaWYgZW5hYmxl
X2lwdjY6Ci0gICAgICAgICAgICAgICAgc3RhcnRfY21kICs9IFsnLUMnLCAiXCdMaXN0ZW4gWzo6
MV06JWRcJyIgJSBwb3J0XQotCi0gICAgICAgIGlmIGFkZGl0aW9uYWxfZGlyczoKLSAgICAgICAg
ICAgIGZvciBhbGlhcywgcGF0aCBpbiBhZGRpdGlvbmFsX2RpcnMuaXRlcml0ZW1zKCk6Ci0gICAg
ICAgICAgICAgICAgc3RhcnRfY21kICs9IFsnLWMnLCAiXCdBbGlhcyAlcyBcIiVzXCJcJyIgJSAo
YWxpYXMsIHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBEaXNhYmxlIENHSSBoYW5k
bGVyIGZvciBhZGRpdGlvbmFsIGRpcnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAnLWMnLCAi
XCc8TG9jYXRpb24gJXM+XCciICUgYWxpYXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAnLWMn
LCAiXCdSZW1vdmVIYW5kbGVyIC5jZ2kgLnBsXCciLAotICAgICAgICAgICAgICAgICAgICAgICAg
Jy1jJywgIlwnPC9Mb2NhdGlvbj5cJyJdCi0KLSAgICAgICAgc3RvcF9jbWQgPSBbZXhlY3V0YWJs
ZSwKLSAgICAgICAgICAgICctZicsICJcIiVzXCIiICUgc2VsZi5fZ2V0X2FwYWNoZV9jb25maWdf
ZmlsZV9wYXRoKHNlbGYudGVzdHNfZGlyLCBvdXRwdXRfZGlyKSwKLSAgICAgICAgICAgICctYycs
ICJcJ1BpZEZpbGUgJXMnIiAlIHNlbGYuX3BpZF9maWxlLAotICAgICAgICAgICAgJy1rJywgInN0
b3AiXQotCi0gICAgICAgIHN0YXJ0X2NtZC5leHRlbmQoWyctYycsICJcJ1NTTENlcnRpZmljYXRl
RmlsZSAlc1wnIiAlIGNlcnRfZmlsZV0pCisgICAgICAgIHN0YXJ0X2NtZCwgc3RvcF9jbWQgPSBz
ZWxmLl9wb3J0X29iai5jb25maWd1cmVfYXBhY2hlX2h0dHBfc2VydmVyKHNlbGYsIGFkZGl0aW9u
YWxfZGlycykKICAgICAgICAgIyBKb2luIHRoZSBzdHJpbmcgaGVyZSBzbyB0aGF0IEN5Z3dpbi9X
aW5kb3dzIGFuZCBNYWMvTGludXgKICAgICAgICAgIyBjYW4gdXNlIHRoZSBzYW1lIGNvZGUuIE90
aGVyd2lzZSwgd2UgY291bGQgcmVtb3ZlIHRoZSBzaW5nbGUKICAgICAgICAgIyBxdW90ZXMgYWJv
dmUgYW5kIGtlZXAgY21kIGFzIGEgc2VxdWVuY2UuCkBAIC0xNTMsMjcgKzcxLDIxIEBAIGNsYXNz
IExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToK
ICAgICAgICAgc2VsZi5fc3RhcnRfY21kID0gIiAiLmpvaW4oc3RhcnRfY21kKQogICAgICAgICBz
ZWxmLl9zdG9wX2NtZCA9ICIgIi5qb2luKHN0b3BfY21kKQogCi0gICAgZGVmIF9nZXRfYXBhY2hl
X2NvbmZpZ19maWxlX3BhdGgoc2VsZiwgdGVzdF9kaXIsIG91dHB1dF9kaXIpOgotICAgICAgICAi
IiJSZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBhcGFjaGUgY29uZmlnIGZpbGUgdG8gdXNlLgotICAg
ICAgICBBcmdzOgotICAgICAgICAgIHRlc3RfZGlyOiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBMYXlv
dXRUZXN0cyBkaXJlY3RvcnkuCi0gICAgICAgICAgb3V0cHV0X2RpcjogYWJzb2x1dGUgcGF0aCB0
byB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0cyBkaXJlY3RvcnkuCi0gICAgICAgICIiIgotICAgICAg
ICBodHRwZF9jb25maWcgPSBzZWxmLl9wb3J0X29iai5fcGF0aF90b19hcGFjaGVfY29uZmlnX2Zp
bGUoKQotICAgICAgICBodHRwZF9jb25maWdfY29weSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGly
LCAiaHR0cGQuY29uZiIpCi0gICAgICAgIGh0dHBkX2NvbmYgPSBzZWxmLl9maWxlc3lzdGVtLnJl
YWRfdGV4dF9maWxlKGh0dHBkX2NvbmZpZykKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGlkX2Zp
bGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9waWRfZmlsZQogCi0gICAgICAgICMgRklY
TUU6IFdoeSBkbyB3ZSBuZWVkIHRvIGNvcHkgdGhlIGNvbmZpZyBmaWxlIHNpbmNlIHdlJ3JlIG5v
dCBtb2RpZnlpbmcgaXQ/Ci0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KGh0dHBkX2NvbmZpZ19jb3B5LCBodHRwZF9jb25mKQorICAgIEBwaWRfZmlsZS5zZXR0ZXIKKyAg
ICBkZWYgc2V0X3BpZF9maWxlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fcGlkX2ZpbGUg
PSB2YWx1ZQogCi0gICAgICAgIGlmIHNlbGYuX3BvcnRfb2JqLmhvc3QucGxhdGZvcm0uaXNfd2lu
KCk6Ci0gICAgICAgICAgICAjIENvbnZlcnQgdG8gTVNET1MgZmlsZSBuYW1pbmc6Ci0gICAgICAg
ICAgICBwcmVjb21waWxlZERyaXZlID0gcmUuY29tcGlsZSgnXi9jeWdkcml2ZS9bY0NdJykKLSAg
ICAgICAgICAgIGh0dHBkX2NvbmZpZ19jb3B5ID0gcHJlY29tcGlsZWREcml2ZS5zdWIoIkM6Iiwg
aHR0cGRfY29uZmlnX2NvcHkpCi0gICAgICAgICAgICBwcmVjb21waWxlZEJ1aWxkYm90ID0gcmUu
Y29tcGlsZSgnXi9ob21lL2J1aWxkYm90JykKLSAgICAgICAgICAgIGh0dHBkX2NvbmZpZ19jb3B5
ID0gcHJlY29tcGlsZWRCdWlsZGJvdC5zdWIoIkM6L2N5Z3dpbi9ob21lL2J1aWxkYm90IiwgaHR0
cGRfY29uZmlnX2NvcHkpCisgICAgQHByb3BlcnR5CisgICAgZGVmIG91dHB1dF9kaXIoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLl9vdXRwdXRfZGlyCiAKLSAgICAgICAgcmV0dXJuIGh0dHBk
X2NvbmZpZ19jb3B5CisgICAgQG91dHB1dF9kaXIuc2V0dGVyCisgICAgZGVmIHNldF9vdXRwdXRf
ZGlyKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fb3V0cHV0X2RpciA9IHZhbHVlCiAKICAg
ICBkZWYgX3NwYXduX3Byb2Nlc3Moc2VsZik6CiAgICAgICAgIF9sb2cuZGVidWcoJ1N0YXJ0aW5n
ICVzIHNlcnZlciwgY21kPSIlcyInICUgKHNlbGYuX25hbWUsIHN0cihzZWxmLl9zdGFydF9jbWQp
KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggYzJkZTFmYmZmMWQuLmJmMDk1
NDE2ZGQ3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMzgsNiArMzgsNyBA
QCBpbXBvcnQgb3MKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgcmUK
K2ltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3Jk
ZXJlZERpY3QKQEAgLTk3Myw2ICs5NzQsODcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICBzZXJ2ZXIuc3RhcnQoKQogICAgICAgICBzZWxmLl9odHRwX3NlcnZlciA9IHNlcnZlcgogCisg
ICAgZGVmIGNvbmZpZ3VyZV9hcGFjaGVfaHR0cF9zZXJ2ZXIoc2VsZiwgc2VydmVyLCBhZGRpdGlv
bmFsX2RpcnMpOgorICAgICAgICB0ZXN0c19kaXIgPSBzZWxmLmxheW91dF90ZXN0c19kaXIoKQor
ICAgICAgICBvdXRwdXRfZGlyID0gc2VydmVyLm91dHB1dF9kaXIKKworICAgICAgICBtaW1lX3R5
cGVzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VydmVyLnRlc3RzX2RpciwgImh0dHAi
LCAiY29uZiIsICJtaW1lLnR5cGVzIikKKyAgICAgICAgYWNjZXNzX2xvZyA9IHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbihvdXRwdXRfZGlyLCAiYWNjZXNzX2xvZy50eHQiKQorICAgICAgICBlcnJvcl9s
b2cgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3V0cHV0X2RpciwgImVycm9yX2xvZy50eHQiKQor
ICAgICAgICBkb2N1bWVudF9yb290ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlcnZlci50ZXN0
c19kaXIsICJodHRwIiwgInRlc3RzIikKKyAgICAgICAgcGhwX2luaV9kaXIgPSBzZWxmLl9maWxl
c3lzdGVtLmpvaW4oc2VydmVyLnRlc3RzX2RpciwgImh0dHAiLCAiY29uZiIpCisKKyAgICAgICAg
aWYgc2VsZi5nZXRfb3B0aW9uKCdodHRwX2FjY2Vzc19sb2cnKToKKyAgICAgICAgICAgIGFjY2Vz
c19sb2cgPSBzZWxmLmdldF9vcHRpb24oJ2h0dHBfYWNjZXNzX2xvZycpCisKKyAgICAgICAgaWYg
c2VsZi5nZXRfb3B0aW9uKCdodHRwX2Vycm9yX2xvZycpOgorICAgICAgICAgICAgZXJyb3JfbG9n
ID0gc2VsZi5nZXRfb3B0aW9uKCdodHRwX2Vycm9yX2xvZycpCisKKyAgICAgICAgZXhlY3V0YWJs
ZSA9IHNlbGYuX3BhdGhfdG9fYXBhY2hlKCkKKworICAgICAgICBjb25maWdfcGF0aCA9IHNlbGYu
X2NvcHlfYXBhY2hlX2NvbmZpZ19maWxlX3BhdGgob3V0cHV0X2RpcikKKworICAgICAgICBzdGFy
dF9jbWQgPSBbZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICctZicsICJcIiVzXCIiICUgY29uZmln
X3BhdGgsCisgICAgICAgICAgICAnLUMnLCAiXCdEb2N1bWVudFJvb3QgXCIlc1wiXCciICUgZG9j
dW1lbnRfcm9vdCwKKyAgICAgICAgICAgICctYycsICJcJ1R5cGVzQ29uZmlnIFwiJXNcIlwnIiAl
IG1pbWVfdHlwZXNfcGF0aCwKKyAgICAgICAgICAgICctYycsICJcJ1BIUElOSURpciBcIiVzXCJc
JyIgJSBwaHBfaW5pX2RpciwKKyAgICAgICAgICAgICctYycsICJcJ0N1c3RvbUxvZyBcIiVzXCIg
Y29tbW9uXCciICUgYWNjZXNzX2xvZywKKyAgICAgICAgICAgICctYycsICJcJ0Vycm9yTG9nIFwi
JXNcIlwnIiAlIGVycm9yX2xvZywKKyAgICAgICAgICAgICctYycsICJcJ1BpZEZpbGUgJXMnIiAl
IHNlcnZlci5waWRfZmlsZSwKKyAgICAgICAgICAgICctaycsICJzdGFydCJdCisKKyAgICAgICAg
Zm9yIGFsaWFzIGluIHNlcnZlci5hbGlhc2VzKCk6CisgICAgICAgICAgICBzdGFydF9jbWQuZXh0
ZW5kKFsnLWMnLCAiXCdBbGlhcyAlcyBcIiVzXCInIiAlIChhbGlhc1swXSwgYWxpYXNbMV0pXSkK
KworICAgICAgICB1c2VyID0gb3MuZW52aXJvbi5nZXQoIlVTRVJOQU1FIiwgb3MuZW52aXJvbi5n
ZXQoIlVTRVIiLCAiIikpCisgICAgICAgIGlmIHVzZXI6CisgICAgICAgICAgICBzdGFydF9jbWQu
ZXh0ZW5kKFsnLUMnLCAiXCdVc2VyIFwiJXNcIlwnIiAlIHVzZXJdKQorCisgICAgICAgIGVuYWJs
ZV9pcHY2ID0gc2VsZi5odHRwX3NlcnZlcl9zdXBwb3J0c19pcHY2KCkKKyAgICAgICAgIyBQZXJm
b3JtIHBhcnQgb2YgdGhlIGNoZWNrcyBBcGFjaGUncyBBUFIgZG9lcyB3aGVuIHRyeWluZyB0byBs
aXN0ZW4gdG8KKyAgICAgICAgIyBhIHNwZWNpZmljIGhvc3QvcG9ydC4gVGhpcyBhbGxvd3MgdXMg
dG8gYXZvaWQgdHJ5aW5nIHRvIGxpc3RlbiB0bworICAgICAgICAjIElQVjYgYWRkcmVzc2VzIHdo
ZW4gaXQgZmFpbHMgb24gQXBhY2hlLiBBUFIgaXRzZWxmIHRyaWVzIHRvIGNhbGwKKyAgICAgICAg
IyBnZXRhZGRyaW5mbygpIGFnYWluIHdpdGhvdXQgQUlfQUREUkNPTkZJRyBpZiB0aGUgZmlyc3Qg
Y2FsbCBmYWlscworICAgICAgICAjIHdpdGggRUJBREZMQUdTLCBidXQgdGhhdCBpcyBub3QgaG93
IGl0IG5vcm1hbGx5IGZhaWxzIGluIG91ciB1c2UKKyAgICAgICAgIyBjYXNlcywgc28gaWdub3Jl
IHRoYXQgZm9yIG5vdy4KKyAgICAgICAgIyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk4NjAyI2M3CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2tldC5n
ZXRhZGRyaW5mbygnOjoxJywgMCwgMCwgMCwgMCwgc29ja2V0LkFJX0FERFJDT05GSUcpCisgICAg
ICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGVuYWJsZV9pcHY2ID0gRmFsc2UKKworICAgICAgICBi
aW5kX2FkZHJlc3MgPSAnJyBpZiBzZWxmLmdldF9vcHRpb24oImh0dHBfYWxsX2ludGVyZmFjZXMi
KSBlbHNlICcxMjcuMC4wLjE6JworCisgICAgICAgIGZvciBtYXBwaW5nIGluIHNlcnZlci5fbWFw
cGluZ3M6CisgICAgICAgICAgICBwb3J0ID0gbWFwcGluZ1sncG9ydCddCisKKyAgICAgICAgICAg
IHN0YXJ0X2NtZCArPSBbJy1DJywgIlwnTGlzdGVuICVzJWRcJyIgJSAoYmluZF9hZGRyZXNzLCBw
b3J0KV0KKworICAgICAgICAgICAgIyBXZSBsaXN0ZW4gdG8gYm90aCBJUHY0IGFuZCBJUHY2IGxv
b3AtYmFjayBhZGRyZXNzZXMsIGJ1dCBpZ25vcmUKKyAgICAgICAgICAgICMgcmVxdWVzdHMgdG8g
ODAwMCBmcm9tIHJhbmRvbSB1c2VycyBvbiBuZXR3b3JrLgorICAgICAgICAgICAgIyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTA0CisgICAgICAgICAgICBp
ZiBlbmFibGVfaXB2NjoKKyAgICAgICAgICAgICAgICBzdGFydF9jbWQgKz0gWyctQycsICJcJ0xp
c3RlbiBbOjoxXTolZFwnIiAlIHBvcnRdCisKKyAgICAgICAgaWYgYWRkaXRpb25hbF9kaXJzOgor
ICAgICAgICAgICAgZm9yIGFsaWFzLCBwYXRoIGluIGFkZGl0aW9uYWxfZGlycy5pdGVyaXRlbXMo
KToKKyAgICAgICAgICAgICAgICBzdGFydF9jbWQgKz0gWyctYycsICJcJ0FsaWFzICVzIFwiJXNc
IlwnIiAlIChhbGlhcywgcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAjIERpc2FibGUg
Q0dJIGhhbmRsZXIgZm9yIGFkZGl0aW9uYWwgZGlycy4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICctYycsICJcJzxMb2NhdGlvbiAlcz5cJyIgJSBhbGlhcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICctYycsICJcJ1JlbW92ZUhhbmRsZXIgLmNnaSAucGxcJyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnLWMnLCAiXCc8L0xvY2F0aW9uPlwnIl0KKworICAgICAgICBjZXJ0X2ZpbGUgPSBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4odGVzdHNfZGlyLCAiaHR0cCIsICJjb25mIiwgIndlYmtpdC1o
dHRwZC5wZW0iKQorICAgICAgICBzdGFydF9jbWQuZXh0ZW5kKFsnLWMnLCByIidTU0xDZXJ0aWZp
Y2F0ZUZpbGUgJXMnIiAlIGNlcnRfZmlsZV0pCisKKyAgICAgICAgc3RvcF9jbWQgPSBbZXhlY3V0
YWJsZSwKKyAgICAgICAgICAgICctZicsICJcIiVzXCIiICUgY29uZmlnX3BhdGgsCisgICAgICAg
ICAgICAnLWMnLCAiXCdQaWRGaWxlICVzJyIgJSBzZXJ2ZXIucGlkX2ZpbGUsCisgICAgICAgICAg
ICAnLWsnLCAic3RvcCJdCisKKyAgICAgICAgcmV0dXJuIHN0YXJ0X2NtZCwgc3RvcF9jbWQKKwog
ICAgIGRlZiBpc19odHRwX3NlcnZlcl9ydW5uaW5nKHNlbGYpOgogICAgICAgICByZXR1cm4gaHR0
cF9zZXJ2ZXJfYmFzZS5pc19odHRwX3NlcnZlcl9ydW5uaW5nKCkKIApAQCAtMTI3NSw2ICsxMzU3
LDIwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgY29uZmlnX2ZpbGVfbmFtZSA9IHNl
bGYuX2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShzeXMucGxhdGZvcm0pCiAg
ICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGly
KCksICdodHRwJywgJ2NvbmYnLCBjb25maWdfZmlsZV9uYW1lKQogCisgICAgZGVmIF9jb3B5X2Fw
YWNoZV9jb25maWdfZmlsZV9wYXRoKHNlbGYsIG91dHB1dF9kaXIpOgorICAgICAgICAiIiJSZXR1
cm5zIHRoZSBwYXRoIHRvIHRoZSBhcGFjaGUgY29uZmlnIGZpbGUgdG8gdXNlLgorICAgICAgICBB
cmdzOgorICAgICAgICAgIG91dHB1dF9kaXI6IGFic29sdXRlIHBhdGggdG8gdGhlIGxheW91dCB0
ZXN0IHJlc3VsdHMgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgaHR0cGRfY29uZmln
ID0gc2VsZi5fcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoKQorICAgICAgICBodHRwZF9jb25m
aWdfY29weSA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCAiaHR0cGQuY29uZiIpCisgICAgICAg
IGh0dHBkX2NvbmYgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGh0dHBkX2NvbmZp
ZykKKworICAgICAgICAjIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0byBjb3B5IHRoZSBjb25maWcg
ZmlsZSBzaW5jZSB3ZSdyZSBub3QgbW9kaWZ5aW5nIGl0PworICAgICAgICBzZWxmLl9maWxlc3lz
dGVtLndyaXRlX3RleHRfZmlsZShodHRwZF9jb25maWdfY29weSwgaHR0cGRfY29uZikKKworICAg
ICAgICByZXR1cm4gaHR0cGRfY29uZmlnX2NvcHkKKwogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxm
LCAqY29tcHMpOgogICAgICAgICByb290X2RpcmVjdG9yeSA9IHNlbGYuZ2V0X29wdGlvbignX2Nh
Y2hlZF9yb290Jykgb3Igc2VsZi5nZXRfb3B0aW9uKCdyb290JykKICAgICAgICAgaWYgbm90IHJv
b3RfZGlyZWN0b3J5OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dp
bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKaW5kZXggNTgzOTk1MDBj
M2YuLmQ5MGI2ODkyMzhhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
d2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKQEAgLTE5MCw2
ICsxOTAsNDMgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICBfbG9nLmVycm9y
KCJDb3VsZCBub3QgZmluZCBhcGFjaGUuIE5vdCBpbnN0YWxsZWQgb3IgdW5rbm93biBwYXRoLiIp
CiAgICAgICAgIHJldHVybiBOb25lCiAKKyAgICBkZWYgY29uZmlndXJlX2FwYWNoZV9odHRwX3Nl
cnZlcihzZWxmLCBzZXJ2ZXIsIGFkZGl0aW9uYWxfZGlycyk6CisgICAgICAgICMgQ29udmVydCB0
byBNU0RPUyBmaWxlIG5hbWluZzoKKyAgICAgICAgcHJlY29tcGlsZWRCdWlsZGJvdCA9IHJlLmNv
bXBpbGUoJ14vaG9tZS9idWlsZGJvdCcpCisgICAgICAgIHByZWNvbXBpbGVkRHJpdmUgPSByZS5j
b21waWxlKCdeL2N5Z2RyaXZlL1tjQ10nKQorICAgICAgICBvdXRwdXRfZGlyID0gcHJlY29tcGls
ZWRCdWlsZGJvdC5zdWIoIkM6L2N5Z3dpbi9ob21lL2J1aWxkYm90Iiwgc2VydmVyLm91dHB1dF9k
aXIpCisgICAgICAgIHNlcnZlci5vdXRwdXRfZGlyID0gb3V0cHV0X2RpciA9IHByZWNvbXBpbGVk
RHJpdmUuc3ViKCJDOiIsIG91dHB1dF9kaXIpCisgICAgICAgIHNlcnZlci50ZXN0c19kaXIgPSBw
cmVjb21waWxlZEJ1aWxkYm90LnN1YigiQzovY3lnd2luL2hvbWUvYnVpbGRib3QiLCBzZXJ2ZXIu
dGVzdHNfZGlyKQorICAgICAgICBzZXJ2ZXIudGVzdHNfZGlyID0gcHJlY29tcGlsZWREcml2ZS5z
dWIoIkM6Iiwgc2VydmVyLnRlc3RzX2RpcikKKyAgICAgICAgc2VydmVyLnBpZF9maWxlID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKCJDOi94YW1wcC9hcGFjaGUvbG9ncyIsICclcy5waWQnICUgc2Vy
dmVyLl9uYW1lKQorCisgICAgICAgIHN0YXJ0X2NtZCwgc3RvcF9jbWQgPSBzdXBlcihXaW5Qb3J0
LCBzZWxmKS5jb25maWd1cmVfaHR0cF9jb25maWd1cmVfYXBhY2hlX2h0dHBfc2VydmVyc2VydmVy
KHNlcnZlciwgYWRkaXRpb25hbF9kaXJzKQorCisgICAgICAgICMgdHJ5IHJlbW92aW5nICItQyAn
VXNlciB4eHh4JyIgYXJndW1lbnRzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluZGV4ID0g
bmV4dChpbmRleCBmb3IgaW5kZXgsIHZhbHVlIGluIGVudW1lcmF0ZShzdGFydF9jbWQpIGlmIHZh
bHVlLnN0YXJ0c3dpdGgoIidVc2VyIikpCisgICAgICAgICAgICBpZiBpbmRleCA+IDA6CisgICAg
ICAgICAgICAgICAgc3RhcnRfY21kW2luZGV4IC0gMTppbmRleCArIDFdID0gW10KKyAgICAgICAg
ZXhjZXB0IFN0b3BJdGVyYXRpb24sIGU6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcmV0
dXJuIHN0YXJ0X2NtZCwgc3RvcF9jbWQKKworICAgIGRlZiBfY29weV9hcGFjaGVfY29uZmlnX2Zp
bGVfcGF0aChzZWxmLCBvdXRwdXRfZGlyKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgcGF0aCB0
byB0aGUgYXBhY2hlIGNvbmZpZyBmaWxlIHRvIHVzZS4KKyAgICAgICAgQXJnczoKKyAgICAgICAg
ICBvdXRwdXRfZGlyOiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsYXlvdXQgdGVzdCByZXN1bHRzIGRp
cmVjdG9yeS4KKyAgICAgICAgIiIiCisgICAgICAgIGh0dHBkX2NvbmZpZ19jb3B5ID0gc3VwZXIo
V2luUG9ydCwgc2VsZikuX2NvcHlfYXBhY2hlX2NvbmZpZ19maWxlX3BhdGgob3V0cHV0X2RpcikK
KworICAgICAgICAjIENvbnZlcnQgdG8gTVNET1MgZmlsZSBuYW1pbmc6CisgICAgICAgIHByZWNv
bXBpbGVkRHJpdmUgPSByZS5jb21waWxlKCdeL2N5Z2RyaXZlL1tjQ10nKQorICAgICAgICBodHRw
ZF9jb25maWdfY29weSA9IHByZWNvbXBpbGVkRHJpdmUuc3ViKCJDOiIsIGh0dHBkX2NvbmZpZ19j
b3B5KQorICAgICAgICBwcmVjb21waWxlZEJ1aWxkYm90ID0gcmUuY29tcGlsZSgnXi9ob21lL2J1
aWxkYm90JykKKyAgICAgICAgaHR0cGRfY29uZmlnX2NvcHkgPSBwcmVjb21waWxlZEJ1aWxkYm90
LnN1YigiQzovY3lnd2luL2hvbWUvYnVpbGRib3QiLCBodHRwZF9jb25maWdfY29weSkKKworICAg
ICAgICByZXR1cm4gaHR0cGRfY29uZmlnX2NvcHkKKwogICAgIGRlZiBfcGF0aF90b19saWdodHRw
ZChzZWxmKToKICAgICAgICAgcmV0dXJuICIvdXNyL3NiaW4vbGlnaHR0cGQiCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>