<?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>224890</bug_id>
          
          <creation_ts>2021-04-21 13:13:35 -0700</creation_ts>
          <short_desc>[webkitcorepy] Add API to efficiently create a sequence of commits</short_desc>
          <delta_ts>2021-05-06 11:32:49 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1752893</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-04-21 13:13:35 -0700</bug_when>
    <thetext>Creating an individual commit (with an identifier) is relatively expensive. However, if we already have a fully defined commit, it is often the case that neighboring commits can be defined much more efficiently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752894</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-21 13:13:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/76975733&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752896</commentid>
    <comment_count>2</comment_count>
      <attachid>426736</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-04-21 13:15:39 -0700</bug_when>
    <thetext>Created attachment 426736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754771</commentid>
    <comment_count>3</comment_count>
      <attachid>427192</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-04-27 13:49:42 -0700</bug_when>
    <thetext>Created attachment 427192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754903</commentid>
    <comment_count>4</comment_count>
      <attachid>427234</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-04-27 21:27:39 -0700</bug_when>
    <thetext>Created attachment 427234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756682</commentid>
    <comment_count>5</comment_count>
      <attachid>427702</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-04 14:43:12 -0700</bug_when>
    <thetext>Created attachment 427702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756705</commentid>
    <comment_count>6</comment_count>
      <attachid>427702</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2021-05-04 16:14:59 -0700</bug_when>
    <thetext>Comment on attachment 427702
Patch

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

I like the changes so far -- the code definitely feels easier to read through. Left a few minor comments, but overall LGTM. Unofficial r+.

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py:79
&gt; +        for arg, value in kwargs.items():

Can you give some example arguments we expect to end up in kwargs here? Is it possible for us to pass arguments directly called &quot;begin&quot; and &quot;end&quot; instead? I suspect including new data in **kwargs could end up having an unintended effect in the future.

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:379
&gt; +                if commit.hash == previous[0].hash:

Could you add some comments for these if/elif/else blocks to help a reader better understand what&apos;s happening here, and why?

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:417
&gt; +        return dict(

Is it possible to refactor the Git function to return a similarly structured dictionary (defined in this way)? This function makes it really easy to understand what data we expect to be returned.

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:450
&gt; +                if line and line.rstrip() != &apos;-&apos; * 72:

This might be premature optimization, but maybe we should consider defining a variable / regex for `&apos;-&apos; * 72`? Currently it&apos;s producing that string on every line read.

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:497
&gt; +        for branch, commits in self.commits.items():

It seems like when we&apos;re  looking for `commits_in_range`  / on the default branch we could avoid running this loop entirely. If we plan on changing this code in the future to make use of a hash =&gt; identifier lookup table, you can ignore this comment (but it would be good to mention it in the code).

&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:519
&gt; +            if previous and branch != self.default_branch:

Nit: It might be cleaner to write this as an early return, rather than nesting the if block:
```
if not previous or branch = self.default_branch:
    continue
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756721</commentid>
    <comment_count>7</comment_count>
      <attachid>427702</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-04 16:57:33 -0700</bug_when>
    <thetext>Comment on attachment 427702
Patch

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

&gt;&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py:79
&gt;&gt; +        for arg, value in kwargs.items():
&gt; 
&gt; Can you give some example arguments we expect to end up in kwargs here? Is it possible for us to pass arguments directly called &quot;begin&quot; and &quot;end&quot; instead? I suspect including new data in **kwargs could end up having an unintended effect in the future.

I like the point about &quot;begin&quot; and &quot;end&quot; dictionaries, will change

&gt;&gt; Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:497
&gt;&gt; +        for branch, commits in self.commits.items():
&gt; 
&gt; It seems like when we&apos;re  looking for `commits_in_range`  / on the default branch we could avoid running this loop entirely. If we plan on changing this code in the future to make use of a hash =&gt; identifier lookup table, you can ignore this comment (but it would be good to mention it in the code).

This is a helper function for our mock code. It&apos;s only ever gathering from an in-memory dictionary, and turning that dictionary into the output of various git commands so we can test against them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756724</commentid>
    <comment_count>8</comment_count>
      <attachid>427713</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-04 17:00:50 -0700</bug_when>
    <thetext>Created attachment 427713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757428</commentid>
    <comment_count>9</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-05-06 08:59:51 -0700</bug_when>
    <thetext>rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757497</commentid>
    <comment_count>10</comment_count>
      <attachid>427905</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-06 10:37:32 -0700</bug_when>
    <thetext>Created attachment 427905
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757531</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-06 11:32:48 -0700</bug_when>
    <thetext>Committed r277102 (237404@main): &lt;https://commits.webkit.org/237404@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427905.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426736</attachid>
            <date>2021-04-21 13:15:39 -0700</date>
            <delta_ts>2021-04-27 13:49:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224890-20210421131538.patch</filename>
            <type>text/plain</type>
            <size>30092</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NjM4OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ4IEBACisyMDIxLTA0LTIxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgQVBJIHRvIGVmZmljaWVudGx5IGNyZWF0
ZSBhIHNlcXVlbmNlIG9mIGNvbW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDg5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvY29udHJpYnV0b3IucHk6CisgICAgICAgIChDb250cmlidXRvcik6CisgICAgICAgIChDb250
cmlidXRvci5mcm9tX3NjbV9sb2cpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weToKKyAgICAgICAgKEdpdC5jb21taXRzKToK
KyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2Nh
bC9zdm4ucHk6CisgICAgICAgIChTdm4uY29tbWl0cyk6CisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5OgorICAgICAg
ICAoU3ZuLl9faW5pdF9fKToKKyAgICAgICAgKFN2bi5fbG9nX3JhbmdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvc3Zu
LnB5OgorICAgICAgICAoU3ZuLnJhbmdlKToKKyAgICAgICAgKFN2bi5yZXF1ZXN0KToKKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2Zp
bmQucHk6CisgICAgICAgIChJbmZvLm1haW4pOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHk6CisgICAgICAgIChTdm4pOgor
ICAgICAgICAoU3ZuLl9jYWNoZV9yZXZpc2lvbnMpOgorICAgICAgICAoU3ZuLmNvbW1pdCk6Cisg
ICAgICAgIChTdm4uY29tbWl0cyk6CisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHk6CisgICAgICAgIChTY21CYXNlLl9jb21taXRf
cmFuZ2UpOgorICAgICAgICAoU2NtQmFzZSk6CisgICAgICAgIChTY21CYXNlLmNvbW1pdHMpOgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qv
ZmluZF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQuX3Rl
c3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0R2l0KToKKyAgICAgICAgKFRlc3RHaXQuX3Rlc3Rf
Y29tbWl0c19icmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdExvY2FsU3Zu
LnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0TG9jYWxTdm4pOgorICAgICAgICAoVGVzdExv
Y2FsU3ZuLnRlc3RfY29tbWl0c19icmFuY2gpOgorICAgICAgICAoVGVzdFJlbW90ZVN2bi50ZXN0
X2lkKToKKyAgICAgICAgKFRlc3RSZW1vdGVTdm4pOgorICAgICAgICAoVGVzdFJlbW90ZVN2bi50
ZXN0X2NvbW1pdHMpOgorICAgICAgICAoVGVzdFJlbW90ZVN2bi5fdGVzdF9jb21taXRzX2JyYW5j
aCk6CisKIDIwMjEtMDQtMjEgIFNhbSBTbmVkZG9uICA8Z3NuZWRkZXJzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBbHdheXMgcGFzcyAtLW5vLWFiYnJldi1jb21taXQgdG8gZ2l0LWxvZy9zaG93Cklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250
cmlidXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQkocmV2aXNpb24gMjc2MzcyKQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3Iu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDggQEAgY2xhc3MgQ29udHJpYnV0b3Iob2Jq
ZWN0KToKICAgICBBVVRPTUFURURfQ0hFQ0tJTl9SRSA9IHJlLmNvbXBpbGUocidBdXRob3I6ICg/
UDxhdXRob3I+LiopIDxkZXZudWxsPicpCiAgICAgVU5LTk9XTl9BVVRIT1IgPSByZS5jb21waWxl
KHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8Tm9uZT4nKQogICAgIEVNUFRZX0FVVEhPUiA9IHJl
LmNvbXBpbGUocidBdXRob3I6ICg/UDxhdXRob3I+LiopIDw+JykKLSAgICBTVk5fQVVUSE9SX1JF
ID0gcmUuY29tcGlsZShyJ3JcZCsgXHwgKD9QPGVtYWlsPi4qKSBcfCAoP1A8ZGF0ZT4uKikgXHwg
XGQrIGxpbmVzPycpCisgICAgU1ZOX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUocidyKD9QPHJldmlz
aW9uPlxkKykgXHwgKD9QPGVtYWlsPi4qKSBcfCAoP1A8ZGF0ZT4uKikgXHwgXGQrIGxpbmVzPycp
CisgICAgU1ZOX0FVVEhPUl9RX1JFID0gcmUuY29tcGlsZShyJ3IoP1A8cmV2aXNpb24+XGQrKSBc
fCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKScpCiAgICAgU1ZOX1BBVENIX0ZST01fUkUg
PSByZS5jb21waWxlKHInUGF0Y2ggYnkgKD9QPGF1dGhvcj4uKikgPCg/UDxlbWFpbD4uKik+IG9u
IFxkKy1cZCstXGQrJykKIAogICAgIGNsYXNzIEVuY29kZXIoanNvbi5KU09ORW5jb2Rlcik6CkBA
IC0xMTUsNyArMTE2LDE1IEBAIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgICAgIGVt
YWlsID0gTm9uZQogICAgICAgICBhdXRob3IgPSBOb25lCiAKLSAgICAgICAgZm9yIGV4cHJlc3Np
b24gaW4gW2Nscy5HSVRfQVVUSE9SX1JFLCBjbHMuU1ZOX0FVVEhPUl9SRSwgY2xzLlNWTl9QQVRD
SF9GUk9NX1JFLCBjbHMuQVVUT01BVEVEX0NIRUNLSU5fUkUsIGNscy5VTktOT1dOX0FVVEhPUiwg
Y2xzLkVNUFRZX0FVVEhPUl06CisgICAgICAgIGZvciBleHByZXNzaW9uIGluIFsKKyAgICAgICAg
ICAgIGNscy5HSVRfQVVUSE9SX1JFLAorICAgICAgICAgICAgY2xzLlNWTl9BVVRIT1JfUkUsCisg
ICAgICAgICAgICBjbHMuU1ZOX1BBVENIX0ZST01fUkUsCisgICAgICAgICAgICBjbHMuQVVUT01B
VEVEX0NIRUNLSU5fUkUsCisgICAgICAgICAgICBjbHMuVU5LTk9XTl9BVVRIT1IsCisgICAgICAg
ICAgICBjbHMuRU1QVFlfQVVUSE9SLAorICAgICAgICAgICAgY2xzLlNWTl9BVVRIT1JfUV9SRSwK
KyAgICAgICAgXToKICAgICAgICAgICAgIG1hdGNoID0gZXhwcmVzc2lvbi5tYXRjaChsaW5lKQog
ICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAgaWYgJ2F1dGhvcicgaW4gZXhw
cmVzc2lvbi5ncm91cGluZGV4OgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkJKHJldmlzaW9u
IDI3NjM3MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3NjbV9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw0NSBAQCBjbGFzcyBT
Y21CYXNlKG9iamVjdCk6CiAgICAgZGVmIGNvbW1pdChzZWxmLCBoYXNoPU5vbmUsIHJldmlzaW9u
PU5vbmUsIGlkZW50aWZpZXI9Tm9uZSwgYnJhbmNoPU5vbmUsIHRhZz1Ob25lLCBpbmNsdWRlX2xv
Zz1UcnVlLCBpbmNsdWRlX2lkZW50aWZpZXI9VHJ1ZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IoKQogCisgICAgZGVmIF9jb21taXRfcmFuZ2Uoc2VsZiwgaW5jbHVkZV9sb2c9
VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgYmVnaW5f
YXJncyA9IHt9CisgICAgICAgIGVuZF9hcmdzID0ge30KKyAgICAgICAgZm9yIGFyZywgdmFsdWUg
aW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnYmVnaW5f
Jyk6CisgICAgICAgICAgICAgICAgYmVnaW5fYXJnc1thcmdbNjpdXSA9IHZhbHVlCisgICAgICAg
ICAgICBlbGlmIGFyZy5zdGFydHN3aXRoKCdlbmRfJyk6CisgICAgICAgICAgICAgICAgZW5kX2Fy
Z3NbYXJnWzQ6XV0gPSB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoIl9jb21taXRfcmFuZ2UoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3Jk
IGFyZ3VtZW50ICd7fSciLmZvcm1hdChhcmcpKQorCisgICAgICAgIGlmIG5vdCBiZWdpbl9hcmdz
OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJfY29tbWl0X3JhbmdlKCkgbWlzc2luZyBy
ZXF1aXJlZCAnYmVnaW5fJyBhcmd1bWVudHMiKQorICAgICAgICBpZiBub3QgZW5kX2FyZ3M6Cisg
ICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9jb21taXRfcmFuZ2UoKSBtaXNzaW5nIHJlcXVp
cmVkICdlbmRfJyBhcmd1bWVudHMiKQorCisgICAgICAgIGlmIGxpc3QoYmVnaW5fYXJncy5rZXlz
KCkpID09IFsnYXJndW1lbnQnXToKKyAgICAgICAgICAgIGJlZ2luID0gc2VsZi5maW5kKGluY2x1
ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVy
LCAqKmJlZ2luX2FyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiZWdpbiA9IHNlbGYu
Y29tbWl0KGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVk
ZV9pZGVudGlmaWVyLCAqKmJlZ2luX2FyZ3MpCisKKyAgICAgICAgaWYgbGlzdChlbmRfYXJncy5r
ZXlzKCkpID09IFsnYXJndW1lbnQnXToKKyAgICAgICAgICAgIGVuZCA9IHNlbGYuZmluZChpbmNs
dWRlX2xvZz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmll
ciwgKiplbmRfYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuZCA9IHNlbGYuY29t
bWl0KGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9p
ZGVudGlmaWVyLCAqKmVuZF9hcmdzKQorCisgICAgICAgIGlmIG5vdCBiZWdpbjoKKyAgICAgICAg
ICAgIHJhaXNlIFR5cGVFcnJvcigiJ3t9JyBmYWlsZWQgdG8gZGVmaW5lIGJlZ2luIGluIF9jb21t
aXRfcmFuZ2UoKSIuZm9ybWF0KGJlZ2luX2FyZ3MpKQorICAgICAgICBpZiBub3QgZW5kOgorICAg
ICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30nIGZhaWxlZCB0byBkZWZpbmUgYmVnaW4gaW4g
X2NvbW1pdF9yYW5nZSgpIi5mb3JtYXQoZW5kX2FyZ3MpKQorICAgICAgICBpZiBiZWdpbi50aW1l
c3RhbXAgPiBlbmQudGltZXN0YW1wOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30n
IHByZS1kYXRlcyAne30nIGluIF9jb21taXRfcmFuZ2UoKSIuZm9ybWF0KGJlZ2luLCBlbmQpKQor
ICAgICAgICBpZiBlbmQuYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2ggYW5kIGJlZ2luLmJy
YW5jaCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9y
KCIne30nIGFuZCAne30nIGRvIG5vdCBzaGFyZSBsaW5lYXIgaGlzdG9yeSIuZm9ybWF0KGJlZ2lu
LCBlbmQpKQorICAgICAgICByZXR1cm4gYmVnaW4sIGVuZAorCisgICAgZGVmIGNvbW1pdHMoc2Vs
ZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUsICoqa3dhcmdzKToK
KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKICAgICBkZWYgcHJpb3JpdGl6
ZV9icmFuY2hlcyhzZWxmLCBicmFuY2hlcyk6CiAgICAgICAgIGlmIGxlbihicmFuY2hlcykgPT0g
MToKICAgICAgICAgICAgIHJldHVybiBicmFuY2hlc1swXQpJbmRleDogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2Fs
L2dpdC5weQkocmV2aXNpb24gMjc2MzcyKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yODQs
NiArMjg0LDI5IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAgICAgICAgbWVzc2FnZT1sb2djb250
ZW50IGlmIGluY2x1ZGVfbG9nIGVsc2UgTm9uZSwKICAgICAgICAgKQogCisgICAgZGVmIGNvbW1p
dHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUsICoqa3dh
cmdzKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShpbmNsdWRlX2xv
Zz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllciwgKipr
d2FyZ3MpCisgICAgICAgIHJlc3VsdCA9IFtlbmRdCisKKyAgICAgICAgY2FuZGlkYXRlID0gZW5k
CisgICAgICAgIGNvdW50ID0gMQorICAgICAgICB3aGlsZSBjYW5kaWRhdGUuaGFzaCAhPSBiZWdp
bi5oYXNoOgorICAgICAgICAgICAgY2FuZGlkYXRlID0gc2VsZi5maW5kKCd7fX57fScuZm9ybWF0
KGVuZC5oYXNoLCBjb3VudCksIGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50
aWZpZXI9RmFsc2UpCisgICAgICAgICAgICBpZiBjYW5kaWRhdGUudGltZXN0YW1wIDwgYmVnaW4u
dGltZXN0YW1wOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid7fScgYW5kICd7
fScgZG8gbm90IGFwcGVhciBvbiB0aGUgc2FtZSBsaW5lYXIgaGlzdG9yeSIuZm9ybWF0KGJlZ2lu
LCBlbmQpKQorCisgICAgICAgICAgICBpZiBpbmNsdWRlX2lkZW50aWZpZXI6CisgICAgICAgICAg
ICAgICAgY2FuZGlkYXRlLmlkZW50aWZpZXIgPSBlbmQuaWRlbnRpZmllciAtIGNvdW50CisgICAg
ICAgICAgICAgICAgaWYgY2FuZGlkYXRlLmlkZW50aWZpZXIgPD0gMDoKKyAgICAgICAgICAgICAg
ICAgICAgY2FuZGlkYXRlLmlkZW50aWZpZXIgPSBlbmQuYnJhbmNoX3BvaW50ICsgY2FuZGlkYXRl
LmlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBj
YW5kaWRhdGUuYnJhbmNoX3BvaW50ID0gZW5kLmJyYW5jaF9wb2ludAorCisgICAgICAgICAgICBy
ZXN1bHQuaW5zZXJ0KDAsIGNhbmRpZGF0ZSkKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKworICAg
ICAgICByZXR1cm4gcmVzdWx0CisKICAgICBkZWYgZmluZChzZWxmLCBhcmd1bWVudCwgaW5jbHVk
ZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUpOgogICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShhcmd1bWVudCwgc2l4LnN0cmluZ190eXBlcyk6CiAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCJFeHBlY3RlZCAnYXJndW1lbnQnIHRvIGJlIGEgc3RyaW5nLCBub3QgJ3t9JyIu
Zm9ybWF0KHR5cGUoYXJndW1lbnQpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkJKHJl
dmlzaW9uIDI3NjM3MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2xvY2FsL3N2bi5weQkod29ya2luZyBjb3B5KQpAQCAtMzkzLDYgKzM5Myw4MiBA
QCBjbGFzcyBTdm4oU2NtKToKICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZSwKICAgICAgICAg
KQogCisgICAgZGVmIGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVu
dGlmaWVyPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1p
dF9yYW5nZShpbmNsdWRlX2xvZz1GYWxzZSwgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRl
bnRpZmllciwgKiprd2FyZ3MpCisgICAgICAgIHByZXZpb3VzID0gZW5kCisgICAgICAgIGlmIGVu
ZC5icmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBvciAnLycgaW4gZW5kLmJyYW5jaDoKKyAg
ICAgICAgICAgIGJyYW5jaF9hcmcgPSAnXi97fScuZm9ybWF0KGVuZC5icmFuY2gpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBicmFuY2hfYXJnID0gJ14vYnJhbmNoZXMve30nLmZvcm1hdChl
bmQuYnJhbmNoKQorCisgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9wZW4oCisgICAgICAgICAg
ICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAnLXInLCAne306e30nLmZvcm1hdCgKKyAgICAg
ICAgICAgICAgICBlbmQucmV2aXNpb24sIGJlZ2luLnJldmlzaW9uLAorICAgICAgICAgICAgKSwg
YnJhbmNoX2FyZ10gKyAoW10gaWYgaW5jbHVkZV9sb2cgZWxzZSBbJy1xJ10pLAorICAgICAgICAg
ICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQ
RSwKKyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICBlbmNv
ZGluZz0ndXRmLTgnLAorICAgICAgICApCisgICAgICAgIGlmIGxvZy5wb2xsKCk6CisgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIGZpbmQgY29tbWl0cyBiZXR3ZWVu
IHt9IGFuZCB7fSBvbiB7fScuZm9ybWF0KGJlZ2luLCBlbmQsIGJyYW5jaF9hcmcpKQorICAgICAg
ICBjdXJyZW50ID0gTm9uZQorCisgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkK
KyAgICAgICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCisg
ICAgICAgICAgICBpZiBsaW5lID09ICctJyAqIDcyOgorICAgICAgICAgICAgICAgIGlmIGN1cnJl
bnQ6CisgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQubWVzc2FnZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnQubWVzc2FnZSA9IGN1cnJlbnQubWVzc2FnZS5yc3RyaXAoKQor
ICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdXJyZW50CisgICAgICAgICAgICAgICAgY3VycmVu
dCA9IE5vbmUKKyAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGN1cnJlbnQgaXMgTm9uZToK
KyAgICAgICAgICAgICAgICBtYXRjaCA9IENvbnRyaWJ1dG9yLlNWTl9BVVRIT1JfUkUubWF0Y2go
bGluZSkgb3IgQ29udHJpYnV0b3IuU1ZOX0FVVEhPUl9RX1JFLm1hdGNoKGxpbmUpCisgICAgICAg
ICAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0
ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgICAgICBicmFuY2hfcG9pbnQgPSBwcmV2aW91cy5icmFuY2hfcG9pbnQgaWYgaW5jbHVkZV9p
ZGVudGlmaWVyIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBwcmV2aW91
cy5pZGVudGlmaWVyIGlmIGluY2x1ZGVfaWRlbnRpZmllciBlbHNlIE5vbmUKKyAgICAgICAgICAg
ICAgICBpZiBpbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpICE9IHByZXZpb3VzLnJldmlzaW9u
OgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIC09IDEKKyAgICAgICAgICAgICAgICBp
ZiBub3QgaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGJyYW5j
aF9wb2ludAorICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCisKKyAgICAg
ICAgICAgICAgICB0el9kaWZmID0gbWF0Y2guZ3JvdXAoJ2RhdGUnKS5zcGxpdCgnICcsIG1heHNw
bGl0PTIpWy0xXQorICAgICAgICAgICAgICAgIGRhdGUgPSBkYXRldGltZS5zdHJwdGltZShtYXRj
aC5ncm91cCgnZGF0ZScpWzotbGVuKHR6X2RpZmYpXSwgJyVZLSVtLSVkICVIOiVNOiVTICcpCisg
ICAgICAgICAgICAgICAgZGF0ZSArPSB0aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgICAgIGhv
dXJzPWludCh0el9kaWZmWzE6M10pLAorICAgICAgICAgICAgICAgICAgICBtaW51dGVzPWludCh0
el9kaWZmWzM6NV0pLAorICAgICAgICAgICAgICAgICkgKiAoMSBpZiB0el9kaWZmWzBdID09ICct
JyBlbHNlIC0xKQorCisgICAgICAgICAgICAgICAgY3VycmVudCA9IENvbW1pdCgKKyAgICAgICAg
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLmlkLAorICAgICAgICAgICAgICAgICAgICBy
ZXZpc2lvbj1pbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpLAorICAgICAgICAgICAgICAgICAg
ICBicmFuY2g9ZW5kLmJyYW5jaCBpZiBicmFuY2hfcG9pbnQgZWxzZSBzZWxmLmRlZmF1bHRfYnJh
bmNoLAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPWlkZW50aWZpZXIsCisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9pbnQsCisgICAgICAgICAgICAgICAg
ICAgIHRpbWVzdGFtcD1pbnQoY2FsZW5kYXIudGltZWdtKGRhdGUudGltZXR1cGxlKCkpKSwKKyAg
ICAgICAgICAgICAgICAgICAgYXV0aG9yPUNvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhsaW5lLCBz
ZWxmLmNvbnRyaWJ1dG9ycyksCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9JycgaWYgaW5j
bHVkZV9sb2cgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBw
cmV2aW91cyA9IGN1cnJlbnQKKyAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFk
bGluZSgpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgaW5jbHVk
ZV9sb2cgYW5kIGN1cnJlbnQgYW5kIChjdXJyZW50Lm1lc3NhZ2Ugb3IgbGluZSk6CisgICAgICAg
ICAgICAgICAgY3VycmVudC5tZXNzYWdlICs9ICd7fVxuJy5mb3JtYXQobGluZSkKKyAgICAgICAg
ICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKworICAgICAgICBpZiBjdXJyZW50Ogor
ICAgICAgICAgICAgaWYgY3VycmVudC5tZXNzYWdlOgorICAgICAgICAgICAgICAgIGN1cnJlbnQu
bWVzc2FnZSA9IGN1cnJlbnQubWVzc2FnZS5yc3RyaXAoKQorICAgICAgICAgICAgeWllbGQgY3Vy
cmVudAorCiAgICAgZGVmIGNoZWNrb3V0KHNlbGYsIGFyZ3VtZW50KToKICAgICAgICAgY29tbWl0
ID0gc2VsZi5maW5kKGFyZ3VtZW50KQogICAgICAgICBpZiBub3QgY29tbWl0OgpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwv
c3ZuLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQkocmV2aXNpb24gMjc2MzcyKQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwv
c3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsMTggQEAgY2xhc3MgU3ZuKG1vY2tz
LlN1YnByb2Nlc3MpOgogCiAgICAgICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18oCiAgICAg
ICAgICAgICBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAotICAgICAgICAgICAgICAgIHNlbGYuZXhl
Y3V0YWJsZSwgJ2luZm8nLAotICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCi0gICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2luZm8oY3dk
PWt3YXJncy5nZXQoJ2N3ZCcsICcnKSkKLSAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3Mu
Um91dGUoCiAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnaW5mbycsIHNlbGYuQlJB
TkNIX1JFLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2luZm8oYnJhbmNoPXNlbGYu
QlJBTkNIX1JFLm1hdGNoKGFyZ3NbMl0pLmdyb3VwKCdicmFuY2gnKSwgY3dkPWt3YXJncy5nZXQo
J2N3ZCcsICcnKSkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAg
ICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnaW5mbycsICctcicsIHJlLmNvbXBpbGUocidc
ZCsnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdl
bmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9pbmZvKHJldmlzaW9uPWludChh
cmdzWzNdKSwgY3dkPWt3YXJncy5nZXQoJ2N3ZCcsICcnKSkKKyAgICAgICAgICAgICksIG1vY2tz
LlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnaW5m
bycsCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5faW5mbyhjd2Q9a3dhcmdzLmdldCgn
Y3dkJywgJycpKQorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAg
ICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsaXN0JywgJ14vYnJhbmNoZXMnLAogICAgICAg
ICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJk
YSAqYXJncywgKiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKApAQCAtMTE5LDYgKzEy
MywxNCBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAgICAg
IHJldmlzaW9uPWFyZ3NbNV0sCiAgICAgICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBl
bHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSkKICAgICAgICAgICAgICks
IG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxl
LCAnbG9nJywgJy1yJywgcmUuY29tcGlsZShyJ1xkKzpcZCsnKSwgc2VsZi5CUkFOQ0hfUkUsCisg
ICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9
bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5fbG9nX3JhbmdlKAorICAgICAgICAgICAgICAg
ICAgICBicmFuY2g9c2VsZi5CUkFOQ0hfUkUubWF0Y2goYXJnc1s0XSkuZ3JvdXAoJ2JyYW5jaCcp
LAorICAgICAgICAgICAgICAgICAgICBlbmQ9aW50KGFyZ3NbM10uc3BsaXQoJzonKVswXSksCisg
ICAgICAgICAgICAgICAgICAgIGJlZ2luPWludChhcmdzWzNdLnNwbGl0KCc6JylbLTFdKSwKKyAg
ICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24ocmV0dXJuY29kZT0xKQorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0
ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICd1cCcsICctcicsIHJlLmNvbXBp
bGUocidcZCsnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOgpAQCAtMjA0LDYgKzIxNiwyOCBA
QCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAgKSwKICAgICAg
ICAgKQogCisgICAgZGVmIF9sb2dfcmFuZ2Uoc2VsZiwgYnJhbmNoPU5vbmUsIGVuZD1Ob25lLCBi
ZWdpbj1Ob25lKToKKyAgICAgICAgaWYgZW5kIDwgYmVnaW46CisgICAgICAgICAgICByZXR1cm4g
bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQorCisgICAgICAgIG91dHB1dCA9
ICcnCisgICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAgICBmb3IgYiBpbiBbYnJhbmNoLCAn
dHJ1bmsnXToKKyAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gcmV2ZXJzZWQoc2VsZi5jb21t
aXRzLmdldChiLCBbXSkpOgorICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZS5yZXZpc2lvbiA+
IGVuZCBvciBjYW5kaWRhdGUucmV2aXNpb24gPCBiZWdpbjoKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgICAgICBpZiBwcmV2aW91cyBhbmQgcHJldmlvdXMucmV2aXNp
b24gPD0gY2FuZGlkYXRlLnJldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgb3V0
cHV0ICs9ICgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICAgICd7bGluZX0g
fCB7bGluZXN9IGxpbmVzXG5cbicKKyAgICAgICAgICAgICAgICAgICAgJ3tsb2d9XG4nKS5mb3Jt
YXQoCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lPXNlbGYubG9nX2xpbmUoY2FuZGlkYXRl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzPWxlbihjYW5kaWRhdGUubWVzc2FnZS5z
cGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nPWNhbmRpZGF0ZS5tZXNz
YWdlCisgICAgICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24ocmV0dXJuY29kZT0wLCBzdGRvdXQ9b3V0cHV0KQorCiAgICAgZGVmIGZpbmQoc2VsZiwg
YnJhbmNoPU5vbmUsIHJldmlzaW9uPU5vbmUpOgogICAgICAgICBpZiBub3QgYnJhbmNoIGFuZCBu
b3QgcmV2aXNpb246CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5oZWFkCkluZGV4OiBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvc3Zu
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L21vY2tzL3JlbW90ZS9zdm4ucHkJKHJldmlzaW9uIDI3NjM3MikKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9z
dm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwzMCArMTA2LDE3IEBAIGNsYXNzIFN2bihtb2Nr
cy5SZXF1ZXN0cyk6CiAKICAgICAgICAgaWYgY2F0ZWdvcnkgYW5kIGNhdGVnb3J5LnN0YXJ0c3dp
dGgoJ2JyYW5jaGVzLycpOgogICAgICAgICAgICAgY2F0ZWdvcnkgPSBjYXRlZ29yeS5zcGxpdCgn
LycpWy0xXQorICAgICAgICBjYXRlZ29yeSA9IFtjYXRlZ29yeV0gaWYgY2F0ZWdvcnkgZWxzZSBz
ZWxmLmJyYW5jaGVzKHN0YXJ0KSArIHNlbGYudGFncyhzdGFydCkKIAotICAgICAgICBpZiBub3Qg
Y2F0ZWdvcnk6Ci0gICAgICAgICAgICBmb3IgY29tbWl0cyBpbiBzZWxmLmNvbW1pdHMudmFsdWVz
KCk6Ci0gICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgotICAgICAgICAgICAg
ICAgICAgICBpZiBjb21taXQucmV2aXNpb24gPT0gc3RhcnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYXRlZ29yeSA9IGNvbW1pdC5icmFuY2gKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0KLSAgICAgICAgaWYgbm90IGNhdGVnb3J5OgotICAgICAgICAgICAgcmV0dXJuIFtdCi0K
LSAgICAgICAgcmVzdWx0ID0gW2NvbW1pdCBmb3IgY29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29t
bWl0c1tjYXRlZ29yeV0pXQotICAgICAgICBpZiBzZWxmLmNvbW1pdHNbY2F0ZWdvcnldWzBdLmJy
YW5jaF9wb2ludDoKLSAgICAgICAgICAgIHJlc3VsdCArPSBbY29tbWl0IGZvciBjb21taXQgaW4g
cmV2ZXJzZWQoc2VsZi5jb21taXRzWyd0cnVuayddWzpzZWxmLmNvbW1pdHNbY2F0ZWdvcnldWzBd
LmJyYW5jaF9wb2ludF0pXQotCi0gICAgICAgIGZvciBpbmRleCBpbiByZXZlcnNlZChyYW5nZShs
ZW4ocmVzdWx0KSkpOgotICAgICAgICAgICAgaWYgcmVzdWx0W2luZGV4XS5yZXZpc2lvbiA8IGVu
ZDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOmluZGV4XQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiByZXN1bHRbaW5kZXhdLnJldmlzaW9uID4gc3Rh
cnQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2luZGV4Ol0KLSAgICAgICAgICAg
ICAgICBicmVhawotCi0gICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgcHJldmlvdXMgPSBO
b25lCisgICAgICAgIGZvciBiIGluIGNhdGVnb3J5ICsgWyd0cnVuayddOgorICAgICAgICAgICAg
Zm9yIGNhbmRpZGF0ZSBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHMuZ2V0KGIsIFtdKSk6CisgICAg
ICAgICAgICAgICAgaWYgY2FuZGlkYXRlLnJldmlzaW9uID4gc3RhcnQgb3IgY2FuZGlkYXRlLnJl
dmlzaW9uIDwgZW5kOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
ICAgIGlmIHByZXZpb3VzIGFuZCBwcmV2aW91cy5yZXZpc2lvbiA8PSBjYW5kaWRhdGUucmV2aXNp
b246CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcHJldmlv
dXMgPSBjYW5kaWRhdGUKKyAgICAgICAgICAgICAgICB5aWVsZCBjYW5kaWRhdGUKIAogICAgIGRl
ZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBkYXRhPU5vbmUsICoqa3dhcmdzKToKICAgICAg
ICAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQpAQCAtMjY2LDExICsy
NTMsMTEgQEAgY2xhc3MgU3ZuKG1vY2tzLlJlcXVlc3RzKToKIAogICAgICAgICAjIExvZyBmb3Ig
Y29tbWl0CiAgICAgICAgIGlmIG1ldGhvZCA9PSAnUkVQT1JUJyBhbmQgc3RyaXBwZWRfdXJsLnN0
YXJ0c3dpdGgoJ3t9IScuZm9ybWF0KHNlbGYucmVtb3RlKSkgYW5kIG1hdGNoIGFuZCBkYXRhLmdl
dCgnUzpsb2ctcmVwb3J0Jyk6Ci0gICAgICAgICAgICBjb21taXRzID0gc2VsZi5yYW5nZSgKKyAg
ICAgICAgICAgIGNvbW1pdHMgPSBsaXN0KHNlbGYucmFuZ2UoCiAgICAgICAgICAgICAgICAgY2F0
ZWdvcnk9bWF0Y2guZ3JvdXAoJ2NhdGVnb3J5JyksCiAgICAgICAgICAgICAgICAgc3RhcnQ9aW50
KGRhdGFbJ1M6bG9nLXJlcG9ydCddWydTOnN0YXJ0LXJldmlzaW9uJ10pLAogICAgICAgICAgICAg
ICAgIGVuZD1pbnQoZGF0YVsnUzpsb2ctcmVwb3J0J11bJ1M6ZW5kLXJldmlzaW9uJ10pLAotICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKSkKIAogICAgICAgICAgICAgbGltaXQgPSBpbnQoZGF0
YVsnUzpsb2ctcmVwb3J0J10uZ2V0KCdTOmxpbWl0JywgMCkpCiAgICAgICAgICAgICBpZiBsaW1p
dCBhbmQgbGVuKGNvbW1pdHMpID4gbGltaXQ6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2ZpbmQucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9m
aW5kLnB5CShyZXZpc2lvbiAyNzYzNzIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9wcm9ncmFtL2ZpbmQucHkJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDkgQEAgY2xhc3MgSW5mbyhDb21tYW5kKToKIAogICAgIEBjbGFzc21ldGhvZAogICAg
IGRlZiBtYWluKGNscywgYXJncywgcmVwb3NpdG9yeSwgcmVmZXJlbmNlPSdIRUFEJywgKiprd2Fy
Z3MpOgorICAgICAgICAjZm9yIGNvbW1pdCBpbiByZXBvc2l0b3J5LmNvbW1pdHMoYmVnaW5fYXJn
dW1lbnQ9JzIzMjkyMEBtYWluJywgZW5kX2FyZ3VtZW50PScyMzI5MjMuNEBzYWZhcmktNjExLWJy
YW5jaCcsIGluY2x1ZGVfbG9nPUZhbHNlKToKKyAgICAgICAgIyAgICBwcmludChjb21taXQucHJl
dHR5X3ByaW50KFRydWUpKQorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNvbW1pdCA9IHJl
cG9zaXRvcnkuZmluZChyZWZlcmVuY2UsIGluY2x1ZGVfbG9nPWFyZ3MuaW5jbHVkZV9sb2cpCiAg
ICAgICAgIGV4Y2VwdCAobG9jYWwuU2NtLkV4Y2VwdGlvbiwgVmFsdWVFcnJvcikgYXMgZXhjZXB0
aW9uOgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcmVtb3RlL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvc3ZuLnB5CShyZXZpc2lvbiAyNzYzNzIpCisr
KyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUv
c3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTQgQEAgaW1wb3J0IHhtbHRvZGlj
dAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogCi1mcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgbG9nLCBydW4sIGRlY29yYXRvcnMKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBkZWNv
cmF0b3JzLCBzdHJpbmdfdXRpbHMKIGZyb20gd2Via2l0c2NtcHkucmVtb3RlLnNjbSBpbXBvcnQg
U2NtCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRyaWJ1dG9yLCBWZXJzaW9u
Citmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIFZlcnNpb24KIAogCiBjbGFzcyBTdm4o
U2NtKToKICAgICBVUkxfUkUgPSByZS5jb21waWxlKHInXEFodHRwcz86Ly9zdm4uKD9QPGhvc3Q+
XFMrKS9yZXBvc2l0b3J5L1xTK1xaJykKLSAgICBISVNUT1JZX1JFID0gcmUuY29tcGlsZShiJzxE
OnZlcnNpb24tbmFtZT4oP1A8cmV2aXNpb24+XGQrKTwvRDp2ZXJzaW9uLW5hbWU+JykKKyAgICBE
QVRBX1JFID0gcmUuY29tcGlsZShiJzxbU0RdOig/UDx0YWc+XFMrKT4oP1A8Y29udGVudD4uKik8
L1tTRF06Lis+JykKICAgICBDQUNIRV9WRVJTSU9OID0gVmVyc2lvbigxKQogCiAgICAgQGNsYXNz
bWV0aG9kCkBAIC0yNDQsOCArMjQ0LDggQEAgY2xhc3MgU3ZuKFNjbSk6CiAKICAgICAgICAgICAg
IGRlZmF1bHRfY291bnQgPSAwCiAgICAgICAgICAgICBmb3IgbGluZSBpbiByZXNwb25zZS5pdGVy
X2xpbmVzKCk6Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLkhJU1RPUllfUkUubWF0Y2go
bGluZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICAgICAgbWF0
Y2ggPSBzZWxmLkRBVEFfUkUubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbWF0
Y2ggb3IgbWF0Y2guZ3JvdXAoJ3RhZycpICE9IGIndmVyc2lvbi1uYW1lJzoKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgIGlmIG5vdCBkaWRfd2FybjoKQEAg
LTI1NCw3ICsyNTQsNyBAQCBjbGFzcyBTdm4oU2NtKToKICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYubG9nKCdDYWNoaW5nIGNvbW1pdCBkYXRhIGZvciB7fSwgdGhpcyB3aWxsIHRha2UgYSBm
ZXcgbWludXRlcy4uLicuZm9ybWF0KGJyYW5jaCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRfd2FybiA9IFRydWUKIAotICAgICAgICAgICAgICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdy
b3VwKCdyZXZpc2lvbicpKQorICAgICAgICAgICAgICAgIHJldmlzaW9uID0gaW50KG1hdGNoLmdy
b3VwKCdjb250ZW50JykpCiAgICAgICAgICAgICAgICAgaWYgcG9zID4gMCBhbmQgc2VsZi5fbWV0
YWRhdGFfY2FjaGVbYnJhbmNoXVtwb3MgLSAxXSA9PSByZXZpc2lvbjoKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBpZiBub3QgaXNfZGVmYXVsdF9icmFuY2g6CkBA
IC00NTUsMyArNDU1LDg0IEBAIGNsYXNzIFN2bihTY20pOgogICAgICAgICAgICAgYXV0aG9yPWF1
dGhvciwKICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZSwKICAgICAgICAgKQorCisgICAgZGVm
IGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUs
ICoqa3dhcmdzKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShpbmNs
dWRlX2xvZz1GYWxzZSwgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllciwgKipr
d2FyZ3MpCisgICAgICAgIHByZXZpb3VzID0gZW5kCisKKyAgICAgICAgaW5fY29tbWVudCA9IEZh
bHNlCisgICAgICAgIGN1cnJlbnQgPSBOb25lCisgICAgICAgIHdpdGggcmVxdWVzdHMucmVxdWVz
dCgKKyAgICAgICAgICAgICAgICBtZXRob2Q9J1JFUE9SVCcsCisgICAgICAgICAgICAgICAgdXJs
PSd7fSFzdm4vcnZyL3t9L3t9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYudXJs
LAorICAgICAgICAgICAgICAgICAgICBlbmQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAg
IGVuZC5icmFuY2ggaWYgZW5kLmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIG9yICcvJyBp
biBlbmQuYnJhbmNoIGVsc2UgJ2JyYW5jaGVzL3t9Jy5mb3JtYXQoZW5kLmJyYW5jaCksCisgICAg
ICAgICAgICAgICAgKSwgc3RyZWFtPVRydWUsCisgICAgICAgICAgICAgICAgaGVhZGVycz17Cisg
ICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwnLAorICAgICAgICAg
ICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAnLAorICAgICAgICAgICAgICAgICAg
ICAnREVQVEgnOiAnMScsCisgICAgICAgICAgICAgICAgfSwgZGF0YT0nPFM6bG9nLXJlcG9ydCB4
bWxuczpTPSJzdm46Ij5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICc8UzpzdGFydC1yZXZp
c2lvbj57ZW5kfTwvUzpzdGFydC1yZXZpc2lvbj5cbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICc8UzplbmQtcmV2aXNpb24+e2JlZ2lufTwvUzplbmQtcmV2aXNpb24+XG4nCisgICAgICAgICAg
ICAgICAgICAgICAgICAnPFM6cGF0aD48L1M6cGF0aD5cbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICc8L1M6bG9nLXJlcG9ydD5cbicuZm9ybWF0KGVuZD1lbmQucmV2aXNpb24sIGJlZ2luPWJl
Z2luLnJldmlzaW9uKSwKKyAgICAgICAgKSBhcyByZXNwb25zZToKKyAgICAgICAgICAgIGlmIHJl
c3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4
Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBmb3IgJ3t9JyIuZm9y
bWF0KGJyYW5jaCkpCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZXNwb25zZS5pdGVyX2xpbmVz
KCk6CisgICAgICAgICAgICAgICAgaWYgaW5fY29tbWVudDoKKyAgICAgICAgICAgICAgICAgICAg
Y3VycmVudC5tZXNzYWdlICs9IHN0cmluZ191dGlscy5kZWNvZGUobGluZSkgKyAnXG4nCisgICAg
ICAgICAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoYic8L0Q6Y29tbWVudD4nKToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnQubWVzc2FnZSA9IGN1cnJlbnQubWVzc2FnZVs6LTEz
XQorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC5tZXNzYWdlID0gY3VycmVudC5tZXNz
YWdlLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpbl9jb21tZW50ID0gRmFsc2UK
KworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgbGlu
ZSA9PSBiJzxTOmxvZy1pdGVtPic6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBOb25l
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBsaW5l
ID09IGInPC9TOmxvZy1pdGVtPic6CisgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdXJyZW50CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiBjdXJyZW50LnJldmlzaW9uIDw9IGJlZ2luLnJldmlzaW9uOgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY3Vy
cmVudAorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgbWF0
Y2ggPSBzZWxmLkRBVEFfUkUubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaDoK
KyAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2guZ3JvdXAoJ3RhZycpID09IGIndmVyc2lvbi1u
YW1lJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IHByZXZpb3VzLmJy
YW5jaF9wb2ludCBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lCisgICAgICAgICAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyID0gcHJldmlvdXMuaWRlbnRpZmllciBpZiBpbmNsdWRlX2lk
ZW50aWZpZXIgZWxzZSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnQobWF0Y2gu
Z3JvdXAoJ2NvbnRlbnQnKSkgIT0gcHJldmlvdXMucmV2aXNpb246CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWRlbnRpZmllciAtPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0g
YnJhbmNoX3BvaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0g
Tm9uZQorCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gQ29tbWl0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5pZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbj1pbnQobWF0Y2guZ3JvdXAoJ2NvbnRlbnQnKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWVuZC5icmFuY2ggaWYgYnJhbmNoX3Bv
aW50IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyPWlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoX3BvaW50PWJyYW5jaF9wb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICAgICAgZWxpZiBtYXRjaC5ncm91cCgndGFnJykgPT0gYidjcmVhdG9yLWRpc3Bs
YXluYW1lJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBzdHJpbmdfdXRpbHMuZGVj
b2RlKG1hdGNoLmdyb3VwKCdjb250ZW50JykpCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50LmF1dGhvciA9IHNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZShuYW1lLCBuYW1lKSBpZiBuYW1l
IGFuZCAnQCcgaW4gbmFtZSBlbHNlIHNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZShuYW1lKQorICAg
ICAgICAgICAgICAgICAgICBlbGlmIG1hdGNoLmdyb3VwKCd0YWcnKSA9PSBiJ2RhdGUnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGRhdGV0aW1lLnN0cnB0aW1lKHN0cmluZ191dGls
cy5kZWNvZGUobWF0Y2guZ3JvdXAoJ2NvbnRlbnQnKSkuc3BsaXQoJy4nKVswXSwgJyVZLSVtLSVk
VCVIOiVNOiVTJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQudGltZXN0YW1wID0g
aW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0dXBsZSgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aChiJzxEOmNv
bW1lbnQ+Jyk6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQubWVzc2FnZSA9IHN0cmluZ191
dGlscy5kZWNvZGUobGluZVsxMTpdKSArICdcbicKKyAgICAgICAgICAgICAgICAgICAgaWYgbGlu
ZS5lbmRzd2l0aChiJzwvRDpjb21tZW50PicpOgorICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudC5tZXNzYWdlID0gY3VycmVudC5tZXNzYWdlWzotMTNdCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbl9jb21tZW50ID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGluX2NvbW1lbnQgPSBUcnVlCkluZGV4OiBUb29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzYzNzIpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsNyBAQCBBdXRob3I6IGpiZWRhcmRA
YXBwbGUuY29tIDxqYmVkYXJkQGFwcGxlCiBEYXRlOiB7fQogUmV2aXNpb246IDQKIElkZW50aWZp
ZXI6IDNAdHJ1bmsKLScnJy5mb3JtYXQoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgxNjAxNjg2NzAw
KS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSksCisnJycuZm9ybWF0KGRhdGV0aW1l
LmZyb210aW1lc3RhbXAoMTYwMTY4NDcwMCkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZ
JykpLAogICAgICAgICApCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI3NjM3MikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSBkYXRldGltZSBpbXBvcnQg
ZGF0ZXRpbWUKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRD
YXB0dXJlCiBmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBpbXBvcnQgVGltZSBhcyBNb2NrVGltZQot
ZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIG1vY2tzLCByZW1vdGUKK2Zyb20gd2Via2l0
c2NtcHkgaW1wb3J0IENvbW1pdCwgbG9jYWwsIG1vY2tzLCByZW1vdGUKIAogCiBjbGFzcyBUZXN0
R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI4Myw2ICsyODMsMjggQEAgY2xhc3MgVGVzdEdp
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgw
LCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nYmFlNWQxZTkwOTk5Jykub3JkZXIp
CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsb2NhbC5HaXQoc2VsZi5wYXRo
KS5jb21taXQoaGFzaD0nZDhiY2UyNmZhNjVjJykub3JkZXIpCiAKKyAgICBkZWYgX3Rlc3RfY29t
bWl0cyhzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBh
dGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAg
ICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgICAgICBnaXQgPSBsb2NhbC5HaXQoc2VsZi5wYXRo
KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LkVuY29kZXIoKS5kZWZh
dWx0KFsKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAor
ICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2ZmZjgzYmIyJyksCisgICAgICAg
ICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nMWFiZTI1YjQnKSwKKyAgICAgICAgICAgICAg
ICAgICAgZ2l0LmNvbW1pdChoYXNoPSdiYWU1ZDFlOScpLAorICAgICAgICAgICAgICAgIF0pLCBD
b21taXQuRW5jb2RlcigpLmRlZmF1bHQoZ2l0LmNvbW1pdHMoYmVnaW5faGFzaD0nOWI4MzExZjIn
LCBlbmRfaGFzaD0nYmFlNWQxZTknKSkpCisKKyAgICBkZWYgX3Rlc3RfY29tbWl0c19icmFuY2go
c2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIFttb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoKSwg
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCwgZ2l0X3N2bj1UcnVlKV06CisgICAgICAgICAgICB3
aXRoIG1vY2s6CisgICAgICAgICAgICAgICAgZ2l0ID0gbG9jYWwuR2l0KHNlbGYucGF0aCkKKyAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsKKyAgICAgICAgICAgICAgICAgICAgZ2l0
LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAorICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0
KGhhc2g9J2ZmZjgzYmIyJyksCisgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0n
YTMwY2U4NDknKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc2MjE2NTJh
ZCcpLAorICAgICAgICAgICAgICAgIF0sIGdpdC5jb21taXRzKGJlZ2luX2FyZ3VtZW50PSc5Yjgz
MTFmMicsIGVuZF9hcmd1bWVudD0nNjIxNjUyYWQnKSkKKwogCiBjbGFzcyBUZXN0R2l0SHViKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICByZW1vdGUgPSAnaHR0cHM6Ly9naXRodWIuZXhhbXBsZS5j
b20vV2ViS2l0L1dlYktpdCcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyNzYzNzIpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBkYXRldGltZSBpbXBvcnQg
ZGF0ZXRpbWUsIHRpbWVkZWx0YQogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1
cmUKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBtb2NrcywgcmVtb3RlCitmcm9tIHdl
YmtpdHNjbXB5IGltcG9ydCBDb21taXQsIGxvY2FsLCBtb2NrcywgcmVtb3RlCiAKIAogY2xhc3Mg
VGVzdExvY2FsU3ZuKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIzMSw2ICsyMzEsMjYgQEAgY2xh
c3MgVGVzdExvY2FsU3ZuKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgd2l0aCBtb2Nrcy5s
b2NhbC5Tdm4oc2VsZi5wYXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgogICAgICAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUobG9jYWwuU3ZuKHNlbGYucGF0aCkuZmluZCgndHJ1bmsnLCBpbmNsdWRlX2lk
ZW50aWZpZXI9RmFsc2UpLmlkZW50aWZpZXIpCiAKKyAgICBkZWYgdGVzdF9jb21taXRzKHNlbGYp
OgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJl
KCk6CisgICAgICAgICAgICBzdm4gPSBsb2NhbC5Tdm4oc2VsZi5wYXRoKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAg
ICAgIHN2bi5jb21taXQocmV2aXNpb249J3I2JyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1p
dChyZXZpc2lvbj0ncjQnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdy
MicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IxJyksCisgICAgICAg
ICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KFtjIGZvciBjIGluIHN2bi5jb21taXRz
KGJlZ2luX3JldmlzaW9uPSdyMScsIGVuZF9yZXZpc2lvbj0ncjYnKV0pKQorCisgICAgZGVmIHRl
c3RfY29tbWl0c19icmFuY2goc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNl
bGYucGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHN2biA9IGxvY2FsLlN2bihz
ZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCku
ZGVmYXVsdChbCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjcnKSwKKyAg
ICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyMycpLAorICAgICAgICAgICAgICAg
IHN2bi5jb21taXQocmV2aXNpb249J3IyJyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChy
ZXZpc2lvbj0ncjEnKSwKKyAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQo
W2MgZm9yIGMgaW4gc3ZuLmNvbW1pdHMoYmVnaW5fYXJndW1lbnQ9J3IxJywgZW5kX2FyZ3VtZW50
PSdyNycpXSkpCisKIAogY2xhc3MgVGVzdFJlbW90ZVN2bih1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgcmVtb3RlID0gJ2h0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0JwpA
QCAtMzMxLDMgKzM1MSwyMyBAQCBjbGFzcyBUZXN0UmVtb3RlU3ZuKHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgIGRlZiB0ZXN0X2lkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
bW90ZS5Tdm4oc2VsZi5yZW1vdGUpLmlkLCAnd2Via2l0JykKKworICAgIGRlZiB0ZXN0X2NvbW1p
dHMoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MucmVtb3RlLlN2bigpLCBPdXRwdXRDYXB0dXJl
KCk6CisgICAgICAgICAgICBzdm4gPSByZW1vdGUuU3ZuKHNlbGYucmVtb3RlKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAg
ICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3I2JyksCisgICAgICAgICAgICAgICAgc3ZuLmNv
bW1pdChyZXZpc2lvbj0ncjQnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9u
PSdyMicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IxJyksCisgICAg
ICAgICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KFtjIGZvciBjIGluIHN2bi5jb21t
aXRzKGJlZ2luX3JldmlzaW9uPSdyMScsIGVuZF9yZXZpc2lvbj0ncjYnKV0pKQorCisgICAgZGVm
IF90ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLnJlbW90ZS5T
dm4oKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgc3ZuID0gcmVtb3RlLlN2bihzZWxm
LnJlbW90ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LkVuY29kZXIoKS5k
ZWZhdWx0KFsKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyNycpLAorICAg
ICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IzJyksCisgICAgICAgICAgICAgICAg
c3ZuLmNvbW1pdChyZXZpc2lvbj0ncjInKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJl
dmlzaW9uPSdyMScpLAorICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChz
dm4uY29tbWl0cyhiZWdpbl9hcmd1bWVudD0ncjEnLCBlbmRfYXJndW1lbnQ9J3I3JykpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427192</attachid>
            <date>2021-04-27 13:49:42 -0700</date>
            <delta_ts>2021-04-27 21:27:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224890-20210427134941.patch</filename>
            <type>text/plain</type>
            <size>53421</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGU0Yjk2ZjMzZjZmNTcyNWVkNDVkNzA3ODcyOTZhMzRk
ZDZmYjc1OS4uMmRiOWE0NDJiZjlmZGI1OWViM2JiY2ZjZDBhNGFmYzExYmExZmE2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDIxLTA0LTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgQVBJIHRvIGVmZmljaWVudGx5IGNyZWF0ZSBhIHNl
cXVlbmNlIG9mIGNvbW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDg5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY5NzU3MzM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgaXQgaXMg
cG9zc2libGUgdG8gc2ltcGxlIGl0ZXJhdGUgdGhyb3VnaCBhIHJhbmdlIG9mIGNvbW1pdHMgdG8g
ZGVmaW5lIHRoZW0sCisgICAgICAgIGV2ZXJ5IEFQSSB3ZSB1c2UgdG8gZGVmaW5lIGNvbW1pdHMg
aGFzIG11Y2ggbW9yZSBlZmZpY2llbnQgdGVjaG5pcXVlcy4KKworICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5OgorICAgICAg
ICAoQ29udHJpYnV0b3IpOiBBZGQgcmV2aXNpb24gdG8gU1ZOX0FVVEhPUl9SRSBhbmQgYWRkIHJl
Z2V4IHdpdGhvdXQgbGluZXMuCisgICAgICAgIChDb250cmlidXRvci5mcm9tX3NjbV9sb2cpOiBT
dHJpcCBsZWFkaW5nIHdoaXRlc3BhY2UgZnJvbSBhdXRob3IuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAgICAo
R2l0LmNvbW1pdHMpOiBVc2UgYGdpdCBsb2dgIHRvIGVmZmljaWVudGx5IGNvbXB1dGUgYSByYW5n
ZSBvZiBjb21taXRzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2bi5jb21taXRzKTogVXNlIGBzdm4g
bG9nYCB0byBlZmZpY2llbnRseSBjb21wdXRlIGEgcmFuZ2Ugb2YgY29tbWl0cy4KKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9n
aXQucHk6CisgICAgICAgIChHaXQuX19pbml0X18pOiBBZGQgYGdpdCBsb2dgIG1vY2suCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9j
YWwvc3ZuLnB5OgorICAgICAgICAoU3ZuLl9faW5pdF9fKTogQWRkIGBzdm4gbG9nYCBtb2NrIGFu
ZCBtb3JlIGV4cGxpY2l0IGBzdm4gaW5mb2AgbW9jay4KKyAgICAgICAgKFN2bi5fbG9nX3Jhbmdl
KToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9t
b2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weToKKyAgICAgICAgKEdpdEh1Yi5fY29tbWl0c19yZXNwb25z
ZSk6IFJldHVybiBhbGwgcGFyZW50IGNvbW1pdHMgdG8gcHJvdmlkZWQgcmVmLgorICAgICAgICAo
R2l0SHViLnJlcXVlc3QpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9zdm4ucHk6CisgICAgICAgIChTdm4ucmFuZ2UpOiBN
b3JlIGVmZmljaWVudGx5IGNvbXB1dGUgdGhlIHJhbmdlLgorICAgICAgICAoU3ZuLnJlcXVlc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Jl
bW90ZS9naXRfaHViLnB5OgorICAgICAgICAoR2l0SHViLnJlcXVlc3QpOiBBbGxvdyBjYWxsZXIg
dG8gZGlzYWJsZSBwYWdpbmF0aW9uLgorICAgICAgICAoR2l0SHViLmNvbW1pdCk6IFJlZHVjZSBu
dW1iZXIgb2YgcmVxdWVzdHMgcmVxdWlyZWQgdG8gY29tcHV0ZSBvcmRlci4KKyAgICAgICAgKEdp
dEh1Yi5jb21taXRzKTogVXNpbmcgdGhlIGBjb21taXRzYCBlbmRwb2ludCwgbW9yZSBlZmZpY2ll
bnRseQorICAgICAgICBjb21wdXRlIGEgcmFuZ2Ugb2YgY29tbWl0cy4KKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvc3ZuLnB5OgorICAg
ICAgICAoU3ZuKTogR2VuZXJhbGl6ZSBISVNUT1JZX1JFIHRvIG1hdGNoIGFueSBzaW5nbGUtbGlu
ZSBTVk4gWE1MIHJlc3BvbnNlLgorICAgICAgICAoU3ZuLl9jYWNoZV9yZXZpc2lvbnMpOiBSZXBs
YWNlIEhJU1RPUllfUkUgd2l0aCBEQVRBX1JFLgorICAgICAgICAoU3ZuLmNvbW1pdHMpOiBVc2Ug
c3ZuL3J2ciB0byBlZmZpY2llbnRseSBjb21wdXRlIGEgcmFuZ2Ugb2YgY29tbWl0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5w
eToKKyAgICAgICAgKFNjbUJhc2UuX2NvbW1pdF9yYW5nZSk6IFJldHVybiBhIHBhaXIgb2YgY29t
bWl0cyByZXByZXNlbnRpbmcgdGhlIHJhbmdlCisgICAgICAgIHRoZSBjYWxsZXIgaXMgcmVxdWVz
dGluZywgYW5kIHByZWZvcm0gc29tZSBiYXNpYyBzYW5pdHkgY2hlY2tzLgorICAgICAgICAoU2Nt
QmFzZS5jb21taXRzKTogRGVjbGFyZSBmdW5jdGlvbiBpbXBsZW1lbnRlZCBieSBkZWNlbmRlbnRz
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvZmluZF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQu
dGVzdF9jb21taXRzKToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzX2JyYW5jaCk6Cisg
ICAgICAgIChUZXN0R2l0SHViLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0R2l0SHViLnRl
c3RfY29tbWl0c19icmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdExvY2Fs
U3ZuLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0TG9jYWxTdm4udGVzdF9jb21taXRzX2Jy
YW5jaCk6CisgICAgICAgIChUZXN0UmVtb3RlU3ZuLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChU
ZXN0UmVtb3RlU3ZuLnRlc3RfY29tbWl0c19icmFuY2gpOgorCiAyMDIxLTA0LTI3ICBSeWFuIEhh
ZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtld3NdIENvbmZpZ3VyZSBi
b3RzIGZvciBzdHJlc3MgdGVzdCBxdWV1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS9zZXR1cC5weQppbmRleCAwMDIyNWUxOTM2ZDRlYmZiZDcwNGRhNWI1NmQ1M2U5MmJi
NDNhNTViLi41YzVkYjYyMDA3OTQ3ODNhNjViZTg1ZjM1ODQxZjYwNzI1ODdkNWY1IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQorKysgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQpAQCAtMjksNyArMjks
NyBAQCBkZWYgcmVhZG1lKCk6CiAKIHNldHVwKAogICAgIG5hbWU9J3dlYmtpdHNjbXB5JywKLSAg
ICB2ZXJzaW9uPScwLjEzLjknLAorICAgIHZlcnNpb249JzAuMTQuMCcsCiAgICAgZGVzY3JpcHRp
b249J0xpYnJhcnkgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aCBnaXQgYW5kIHN2biByZXBvc2l0
b3JpZXMuJywKICAgICBsb25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZpZXJz
PVsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvX19pbml0X18ucHkKaW5kZXggNWNjOTkxOTczYjk4YzRlZmExNWE5OWM4MzE2
M2ZiZmE2MTRmN2M1MS4uZTE4ZTYzMmQwNzMzN2VhMDFiMTNiZjY3OWZjNzM0NWU5MzQ2MjI4ZiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvX19pbml0X18ucHkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0IEltcG9ydEVy
cm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0
YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIK
ICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDEzLCA5KQordmVyc2lvbiA9IFZlcnNpb24o
MCwgMTQsIDApCiAKIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2Zhc3RlbmVycycsIFZl
cnNpb24oMCwgMTUsIDApKSkKIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ21vbm90b25p
YycsIFZlcnNpb24oMSwgNSkpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkgYi9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQppbmRleCA3NTU3
MmE2ODFiNzJjMjUxNWRlZDA5MjdjNjJkNzI4ZTBhMTA4OTk1Li5mZWY5N2I2ZjgxMGVkY2JhM2Yz
ZjMwOGZlYzZjZTllZWRhMDAwNGJkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5weQpAQCAt
MzIsNyArMzIsOCBAQCBjbGFzcyBDb250cmlidXRvcihvYmplY3QpOgogICAgIEFVVE9NQVRFRF9D
SEVDS0lOX1JFID0gcmUuY29tcGlsZShyJ0F1dGhvcjogKD9QPGF1dGhvcj4uKikgPGRldm51bGw+
JykKICAgICBVTktOT1dOX0FVVEhPUiA9IHJlLmNvbXBpbGUocidBdXRob3I6ICg/UDxhdXRob3I+
LiopIDxOb25lPicpCiAgICAgRU1QVFlfQVVUSE9SID0gcmUuY29tcGlsZShyJ0F1dGhvcjogKD9Q
PGF1dGhvcj4uKikgPD4nKQotICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21waWxlKHInclxkKyBc
fCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBcZCsgbGluZXM/JykKKyAgICBTVk5f
QVVUSE9SX1JFID0gcmUuY29tcGlsZShyJ3IoP1A8cmV2aXNpb24+XGQrKSBcfCAoP1A8ZW1haWw+
LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBcZCsgbGluZXM/JykKKyAgICBTVk5fQVVUSE9SX1FfUkUg
PSByZS5jb21waWxlKHIncig/UDxyZXZpc2lvbj5cZCspIFx8ICg/UDxlbWFpbD4uKikgXHwgKD9Q
PGRhdGU+LiopJykKICAgICBTVk5fUEFUQ0hfRlJPTV9SRSA9IHJlLmNvbXBpbGUocidQYXRjaCBi
eSAoP1A8YXV0aG9yPi4qKSA8KD9QPGVtYWlsPi4qKT4gb24gXGQrLVxkKy1cZCsnKQogCiAgICAg
Y2xhc3MgRW5jb2Rlcihqc29uLkpTT05FbmNvZGVyKToKQEAgLTExNSwxMSArMTE2LDE5IEBAIGNs
YXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgICAgIGVtYWlsID0gTm9uZQogICAgICAgICBh
dXRob3IgPSBOb25lCiAKLSAgICAgICAgZm9yIGV4cHJlc3Npb24gaW4gW2Nscy5HSVRfQVVUSE9S
X1JFLCBjbHMuU1ZOX0FVVEhPUl9SRSwgY2xzLlNWTl9QQVRDSF9GUk9NX1JFLCBjbHMuQVVUT01B
VEVEX0NIRUNLSU5fUkUsIGNscy5VTktOT1dOX0FVVEhPUiwgY2xzLkVNUFRZX0FVVEhPUl06Cisg
ICAgICAgIGZvciBleHByZXNzaW9uIGluIFsKKyAgICAgICAgICAgIGNscy5HSVRfQVVUSE9SX1JF
LAorICAgICAgICAgICAgY2xzLlNWTl9BVVRIT1JfUkUsCisgICAgICAgICAgICBjbHMuU1ZOX1BB
VENIX0ZST01fUkUsCisgICAgICAgICAgICBjbHMuQVVUT01BVEVEX0NIRUNLSU5fUkUsCisgICAg
ICAgICAgICBjbHMuVU5LTk9XTl9BVVRIT1IsCisgICAgICAgICAgICBjbHMuRU1QVFlfQVVUSE9S
LAorICAgICAgICAgICAgY2xzLlNWTl9BVVRIT1JfUV9SRSwKKyAgICAgICAgXToKICAgICAgICAg
ICAgIG1hdGNoID0gZXhwcmVzc2lvbi5tYXRjaChsaW5lKQogICAgICAgICAgICAgaWYgbWF0Y2g6
CiAgICAgICAgICAgICAgICAgaWYgJ2F1dGhvcicgaW4gZXhwcmVzc2lvbi5ncm91cGluZGV4Ogot
ICAgICAgICAgICAgICAgICAgICBhdXRob3IgPSBtYXRjaC5ncm91cCgnYXV0aG9yJykKKyAgICAg
ICAgICAgICAgICAgICAgYXV0aG9yID0gbWF0Y2guZ3JvdXAoJ2F1dGhvcicpLmxzdHJpcCgpCiAg
ICAgICAgICAgICAgICAgICAgIGlmICcobm8gYXV0aG9yKScgaW4gYXV0aG9yIG9yICdBdXRvbWF0
ZWQgQ2hlY2tpbicgaW4gYXV0aG9yIG9yICdVbmtub3duJyBpbiBhdXRob3I6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRob3IgPSBOb25lCiAgICAgICAgICAgICAgICAgaWYgJ2VtYWlsJyBp
biBleHByZXNzaW9uLmdyb3VwaW5kZXg6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkgYi9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkKaW5kZXggYTc1
YTk5NThlNmVjZDIyNDhiZjUzMzI2ZDFkNTE2M2U4NzhmNzhhYi4uMGQ2ZWM2ZDcwMzY1Y2RhZmRk
YjYxZjBjNGMyN2M3Y2MxZWYwZDVhYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQpAQCAtMjAs
MTIgKzIwLDE3IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2lt
cG9ydCBjYWxlbmRhcgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBv
cnQgc2l4CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IHJ1biwgZGVjb3JhdG9ycywgVGltZW91dEV4cGlyZWQKK2Zyb20gZGF0ZXRpbWUg
aW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHJ1
biwgZGVjb3JhdG9ycwogZnJvbSB3ZWJraXRzY21weS5sb2NhbCBpbXBvcnQgU2NtCiBmcm9tIHdl
YmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRyaWJ1dG9yLCBsb2cKIApAQCAtMjg0LDYgKzI4
OSw5NiBAQCBjbGFzcyBHaXQoU2NtKToKICAgICAgICAgICAgIG1lc3NhZ2U9bG9nY29udGVudCBp
ZiBpbmNsdWRlX2xvZyBlbHNlIE5vbmUsCiAgICAgICAgICkKIAorICAgIGRlZiBjb21taXRzKHNl
bGYsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlLCAqKmt3YXJncyk6
CisgICAgICAgIGJlZ2luLCBlbmQgPSBzZWxmLl9jb21taXRfcmFuZ2UoaW5jbHVkZV9pZGVudGlm
aWVyPWluY2x1ZGVfaWRlbnRpZmllciwgKiprd2FyZ3MpCisKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgbG9nID0gTm9uZQorICAgICAgICAgICAgbG9nID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAg
ICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAnLS1mb3JtYXQ9ZnVsbGVy
JywgJ3t9Li4ue30nLmZvcm1hdChlbmQuaGFzaCwgYmVnaW4uaGFzaCldLAorICAgICAgICAgICAg
ICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgn
LAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAg
ICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlm
IGxvZy5wb2xsKCk6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxl
ZCB0byBjb25zdHJ1Y3QgaGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGVuZC5icmFuY2gpKQorCisg
ICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpLnJzdHJpcCgpCisgICAgICAg
ICAgICBwcmV2aW91cyA9IFtlbmRdCisgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAg
ICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ2NvbW1pdCAnKToKKyAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgT1NFcnJvcignRmFpbGVkIHRvIHBhcnNlIGBnaXQgbG9nYCBmb3JtYXQnKQor
ICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IHByZXZpb3VzWzBdLmJyYW5jaF9wb2ludAor
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBwcmV2aW91c1swXS5pZGVudGlmaWVyCisgICAg
ICAgICAgICAgICAgaWYgbGluZS5zcGxpdCgnICcpWy0xXSAhPSBwcmV2aW91c1swXS5oYXNoOgor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIC09IDEKKyAgICAgICAgICAgICAgICBoYXNo
ID0gbGluZS5zcGxpdCgnICcpWy0xXQorCisgICAgICAgICAgICAgICAgaWYgbm90IGlkZW50aWZp
ZXI6CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBicmFuY2hfcG9pbnQKKyAgICAg
ICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZQorCisgICAgICAgICAgICAgICAgYXV0
aG9yID0gTm9uZQorICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IE5vbmUKKyAgICAgICAgICAg
ICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpLnJzdHJpcCgpCisgICAgICAgICAgICAg
ICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSBsaW5lLnNwbGl0KCc6
ICcpCisgICAgICAgICAgICAgICAgICAgIGlmIHNwbGl0WzBdID09ICdBdXRob3InOgorICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0aG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGxpbmUp
CisgICAgICAgICAgICAgICAgICAgIGVsaWYgc3BsaXRbMF0gPT0gJ0NvbW1pdERhdGUnOgorICAg
ICAgICAgICAgICAgICAgICAgICAgdHpfZGlmZiA9IGxpbmUuc3BsaXQoJyAnKVstMV0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGUgPSBkYXRldGltZS5zdHJwdGltZShzcGxpdFsxXS5sc3Ry
aXAoKVs6LWxlbih0el9kaWZmKV0sICclYSAlYiAlZCAlSDolTTolUyAlWSAnKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0ZSArPSB0aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaG91cnM9aW50KHR6X2RpZmZbMTozXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWludXRlcz1pbnQodHpfZGlmZlszOjVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkg
KiAoMSBpZiB0el9kaWZmWzBdID09ICctJyBlbHNlIC0xKQorICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZXN0YW1wID0gaW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0dXBsZSgpKSkgLSB0
aW1lLnRpbWV6b25lCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRs
aW5lKCkucnN0cmlwKCkKKworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJworICAgICAgICAg
ICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICB3aGls
ZSBsaW5lIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCdjb21taXQgJyk6CisgICAgICAgICAgICAg
ICAgICAgIGlmIGxlbihsaW5lKSA+IDQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ICs9IGxpbmVbNDpdCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlICs9ICdcbicKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZy5z
dGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCisK
KyAgICAgICAgICAgICAgICBtYXRjaGVzID0gc2VsZi5HSVRfU1ZOX1JFVklTSU9OLmZpbmRhbGwo
bWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaGVzWy0xXS5zcGxp
dCgnQCcpWzBdKSBpZiBtYXRjaGVzIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgY29tbWl0
ID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisg
ICAgICAgICAgICAgICAgICAgIGhhc2g9aGFzaCwKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNp
b249cmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1lbmQuYnJhbmNoIGlmIGlk
ZW50aWZpZXIgYW5kIGJyYW5jaF9wb2ludCBlbHNlIHNlbGYuZGVmYXVsdF9icmFuY2gsCisgICAg
ICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9aWRlbnRpZmllciBpZiBpbmNsdWRlX2lkZW50aWZp
ZXIgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQ9YnJhbmNoX3Bv
aW50IGlmIGluY2x1ZGVfaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAg
IHRpbWVzdGFtcD10aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1hdXRob3Is
CisgICAgICAgICAgICAgICAgICAgIG9yZGVyPTAsCisgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2U9bWVzc2FnZS5yc3RyaXAoKSBpZiBpbmNsdWRlX2xvZyBlbHNlIE5vbmUsCisgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IHByZXZpb3VzWzBdLmhh
c2g6CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzWzBdID0gY29tbWl0CisgICAgICAgICAg
ICAgICAgZWxpZiBjb21taXQudGltZXN0YW1wID09IHByZXZpb3VzWzBdLnRpbWVzdGFtcDoKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIGNhY2hlZCBpbiBwcmV2aW91czoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhY2hlZC5vcmRlciArPSAxCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
LmFwcGVuZChjb21taXQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIGNhY2hlZCBpbiBwcmV2aW91czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxk
IGNhY2hlZAorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IFtjb21taXRdCisKKyAgICAg
ICAgICAgIGZvciBjYWNoZWQgaW4gcHJldmlvdXM6CisgICAgICAgICAgICAgICAgY2FjaGVkLm9y
ZGVyICs9IGJlZ2luLm9yZGVyCisgICAgICAgICAgICAgICAgeWllbGQgY2FjaGVkCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgbG9nLmtpbGwo
KQorCiAgICAgZGVmIGZpbmQoc2VsZiwgYXJndW1lbnQsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1
ZGVfaWRlbnRpZmllcj1UcnVlKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJndW1lbnQs
IHNpeC5zdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwZWN0
ZWQgJ2FyZ3VtZW50JyB0byBiZSBhIHN0cmluZywgbm90ICd7fSciLmZvcm1hdCh0eXBlKGFyZ3Vt
ZW50KSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9sb2NhbC9zdm4ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkKaW5kZXggMWM5NTAyNWQwOWE1ZTY3YmM2Mjc5
NWI2N2U2OTEyOTkyOWNlY2FhYS4uNmRiNjYzNDZhZmI1YTFhYThlODUwMjRlNjRmMWZhMzQ5ODFi
ZTZjYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbG9jYWwvc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQpAQCAtMzkzLDYgKzM5Myw4OCBAQCBjbGFz
cyBTdm4oU2NtKToKICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZSwKICAgICAgICAgKQogCisg
ICAgZGVmIGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVy
PVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5n
ZShpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmt3YXJncykKKyAgICAg
ICAgcHJldmlvdXMgPSBlbmQKKyAgICAgICAgaWYgZW5kLmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRf
YnJhbmNoIG9yICcvJyBpbiBlbmQuYnJhbmNoOgorICAgICAgICAgICAgYnJhbmNoX2FyZyA9ICde
L3t9Jy5mb3JtYXQoZW5kLmJyYW5jaCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyYW5j
aF9hcmcgPSAnXi9icmFuY2hlcy97fScuZm9ybWF0KGVuZC5icmFuY2gpCisKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgbG9nID0gTm9uZQorICAgICAgICAgICAgbG9nID0gc3VicHJvY2Vzcy5Q
b3BlbigKKyAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAnLXInLCAn
e306e30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgZW5kLnJldmlzaW9uLCBiZWdpbi5y
ZXZpc2lvbiwKKyAgICAgICAgICAgICAgICApLCBicmFuY2hfYXJnXSArIChbXSBpZiBpbmNsdWRl
X2xvZyBlbHNlIFsnLXEnXSksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAor
ICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAg
c3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgn
LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAg
ICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbignRmFpbGVkIHRvIGZpbmQgY29tbWl0cyBiZXR3ZWVu
IHt9IGFuZCB7fSBvbiB7fScuZm9ybWF0KGJlZ2luLCBlbmQsIGJyYW5jaF9hcmcpKQorICAgICAg
ICAgICAgY3VycmVudCA9IE5vbmUKKworICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVh
ZGxpbmUoKQorICAgICAgICAgICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgICAgICBsaW5lID0g
bGluZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gJy0nICogNzI6CisgICAg
ICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBj
dXJyZW50Lm1lc3NhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC5tZXNz
YWdlID0gY3VycmVudC5tZXNzYWdlLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICB5
aWVsZCBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBOb25lCisgICAgICAg
ICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50IGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIG1hdGNoID0gQ29udHJpYnV0b3IuU1ZOX0FVVEhPUl9SRS5tYXRjaChs
aW5lKSBvciBDb250cmlidXRvci5TVk5fQVVUSE9SX1FfUkUubWF0Y2gobGluZSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9
IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBwcmV2aW91cy5icmFuY2hfcG9p
bnQgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyID0gcHJldmlvdXMuaWRlbnRpZmllciBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxz
ZSBOb25lCisgICAgICAgICAgICAgICAgICAgIGlmIGludChtYXRjaC5ncm91cCgncmV2aXNpb24n
KSkgIT0gcHJldmlvdXMucmV2aXNpb246CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVyIC09IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgdHpf
ZGlmZiA9IG1hdGNoLmdyb3VwKCdkYXRlJykuc3BsaXQoJyAnLCBtYXhzcGxpdD0yKVstMV0KKyAg
ICAgICAgICAgICAgICAgICAgZGF0ZSA9IGRhdGV0aW1lLnN0cnB0aW1lKG1hdGNoLmdyb3VwKCdk
YXRlJylbOi1sZW4odHpfZGlmZildLCAnJVktJW0tJWQgJUg6JU06JVMgJykKKyAgICAgICAgICAg
ICAgICAgICAgZGF0ZSArPSB0aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgICAgICAgICBob3Vy
cz1pbnQodHpfZGlmZlsxOjNdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM9aW50
KHR6X2RpZmZbMzo1XSksCisgICAgICAgICAgICAgICAgICAgICkgKiAoMSBpZiB0el9kaWZmWzBd
ID09ICctJyBlbHNlIC0xKQorCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBDb21taXQo
CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbj1pbnQobWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWVuZC5icmFuY2ggaWYgYnJhbmNoX3BvaW50
IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50
aWZpZXI9aWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludD1i
cmFuY2hfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9aW50KGNhbGVu
ZGFyLnRpbWVnbShkYXRlLnRpbWV0dXBsZSgpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBh
dXRob3I9Q29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGxpbmUsIHNlbGYuY29udHJpYnV0b3JzKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9JycgaWYgaW5jbHVkZV9sb2cgZWxzZSBO
b25lLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
ID0gY3VycmVudAorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGlu
ZSgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBp
bmNsdWRlX2xvZyBhbmQgY3VycmVudCBhbmQgKGN1cnJlbnQubWVzc2FnZSBvciBsaW5lKToKKyAg
ICAgICAgICAgICAgICAgICAgY3VycmVudC5tZXNzYWdlICs9ICd7fVxuJy5mb3JtYXQobGluZSkK
KyAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisKKyAgICAgICAg
ICAgIGlmIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgaWYgY3VycmVudC5tZXNzYWdlOgorICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50Lm1lc3NhZ2UgPSBjdXJyZW50Lm1lc3NhZ2UucnN0cmlw
KCkKKyAgICAgICAgICAgICAgICB5aWVsZCBjdXJyZW50CisKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgIGlmIGxvZzoKKyAgICAgICAgICAgICAgICBsb2cua2lsbCgpCisKICAgICBkZWYg
Y2hlY2tvdXQoc2VsZiwgYXJndW1lbnQpOgogICAgICAgICBjb21taXQgPSBzZWxmLmZpbmQoYXJn
dW1lbnQpCiAgICAgICAgIGlmIG5vdCBjb21taXQ6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkgYi9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2Nh
bC9naXQucHkKaW5kZXggMTRlZGNiODg4NWJlMzFmMTM4YjA0MGZmYmFmYmQxNzJhMzNkNDE0Ni4u
ZDE5NmQyN2VkYTk0NzFkOGM5ZjcyMGE1YTEzYzMzMDdkNDk5MWVkYyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwv
Z2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L21vY2tzL2xvY2FsL2dpdC5weQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IGpzb24KIGlt
cG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgdGltZQogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBk
YXRldGltZQogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tzLCBPdXRwdXRDYXB0dXJlLCBT
dHJpbmdJTwpAQCAtMjI4LDcgKzIyOSw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRy
ZWUgY2xlYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5icmFuY2gs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yPXNlbGYuZmluZChhcmdzWzJdKS5h
dXRob3IubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD1zZWxmLmZpbmQo
YXJnc1syXSkuYXV0aG9yLmVtYWlsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU9
ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzZWxmLmZpbmQoYXJnc1syXSkudGltZXN0YW1wKS5zdHJm
dGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRlPWRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoc2VsZi5maW5kKGFyZ3NbMl0pLnRpbWVz
dGFtcCArIHRpbWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAw
MCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0nXG4nLmpvaW4oWwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxz
ZSAnJyBmb3IgbGluZSBpbiBzZWxmLmZpbmQoYXJnc1syXSkubWVzc2FnZS5zcGxpdGxpbmVzKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSArIChbJyAgICBnaXQtc3ZuLWlkOiBo
dHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1h
YjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KApAQCAtMjM5LDYgKzI0MCwzMyBAQCBub3RoaW5nIHRv
IGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICApIGlmIHNlbGYu
ZmluZChhcmdzWzJdKSBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MTI4
KSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAg
ICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy0tZm9ybWF0PWZ1bGxlcicsIHJlLmNvbXBpbGUo
cicuK1wuXC5cLi4rJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAg
ICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKKyAgICAgICAgICAg
ICAgICAgICAgc3Rkb3V0PSdcbicuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAgICAnY29t
bWl0IHtoYXNofVxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcjogICAgIHthdXRo
b3J9IDx7ZW1haWx9PlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvckRhdGU6IHtk
YXRlfVxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbW1pdDogICAgIHthdXRob3J9IDx7
ZW1haWx9PlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbW1pdERhdGU6IHtkYXRlfVxu
JworICAgICAgICAgICAgICAgICAgICAgICAgJ1xue2xvZ30nLmZvcm1hdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dGhvcj1jb21taXQuYXV0aG9yLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW1haWw9Y29tbWl0LmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRlPWRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoY29tbWl0LnRpbWVzdGFtcCArIHRp
bWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAwMCcpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0nXG4nLmpvaW4oWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoJyAgICAnICsgbGluZSkgaWYgbGluZSBlbHNlICcnIGZvciBsaW5l
IGluIGNvbW1pdC5tZXNzYWdlLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0gKyAoWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGdpdC1zdm4t
aWQ6IGh0dHBzOi8vc3ZuLnt9L3JlcG9zaXRvcnkve30vdHJ1bmtAe30gMjY4ZjQ1Y2MtY2QwOS0w
NDEwLWFiM2MtZDUyNjkxYjRkYmZjJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnJlbW90ZS5zcGxpdCgnQCcpWy0xXS5zcGxpdCgnOicpWzBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0LnJldmlzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICldIGlmIGdpdF9zdm4gZWxzZSBbXSksCisgICAgICAg
ICAgICAgICAgICAgICAgICApKSBmb3IgY29tbWl0IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShh
cmdzWzNdLnNwbGl0KCcuLi4nKVstMV0sIGFyZ3NbM10uc3BsaXQoJy4uLicpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICksIG1vY2tz
LlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAncmV2
LWxpc3QnLCAnLS1jb3VudCcsICctLW5vLW1lcmdlcycsIHJlLmNvbXBpbGUocicuKycpLAogICAg
ICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCkBAIC00NjMsMyArNDkxLDMyIEBAIG5vdGhpbmcg
dG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgIHJldHVybmNvZGU9MCwK
ICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQuZ2V0dmFsdWUoKSwKICAgICAgICAgKQorCisgICAg
ZGVmIGNvbW1pdHNfaW5fcmFuZ2Uoc2VsZiwgYmVnaW4sIGVuZCk6CisgICAgICAgIGJyYW5jaGVz
ID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCisgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4g
c2VsZi5jb21taXRzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZh
dWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIGNv
bW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGVuZDoK
KyAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMuaW5zZXJ0KDAsIGJyYW5jaCkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGxlbihicmFuY2hlcykgPiAxOgorICAg
ICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaW5fcmFuZ2UgPSBGYWxzZQorICAgICAgICBw
cmV2aW91cyA9IE5vbmUKKyAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlczoKKyAgICAgICAg
ICAgIGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2JyYW5jaF0pOgorICAgICAg
ICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGVuZDoKKyAgICAgICAgICAgICAgICAgICAgaW5f
cmFuZ2UgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2UgYW5kIChub3QgcHJldmlv
dXMgb3IgY29tbWl0Lmhhc2ggIT0gcHJldmlvdXMuaGFzaCk6CisgICAgICAgICAgICAgICAgICAg
IHlpZWxkIGNvbW1pdAorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY29tbWl0CisgICAgICAg
ICAgICAgICAgaWYgY29tbWl0Lmhhc2ggPT0gYmVnaW46CisgICAgICAgICAgICAgICAgICAgIGlu
X3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAgIGluX3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAg
IGlmIHByZXZpb3VzIGFuZCBicmFuY2ggIT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAg
ICAgICAgICBmb3IgY29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0c1tzZWxmLmRlZmF1bHRf
YnJhbmNoXSk6CisgICAgICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzLmJyYW5jaF9wb2ludCA9
PSBjb21taXQuaWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGNvbW1p
dC5oYXNoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkKaW5kZXggNTA2Y2UwYTQ1
OWZhZWE0ODY1YjYxZGU1ZDU0MmNhNjhjNmM1NWNmYS4uMzNjN2ZiZjg4NDAyMDFkMmZiYzdmNDVh
Mjg4M2ZlYmRmOWZkYTlmYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQpA
QCAtNjUsMTMgKzY1LDE3IEBAIGNsYXNzIFN2bihtb2Nrcy5TdWJwcm9jZXNzKToKIAogICAgICAg
ICBzdXBlcihTdm4sIHNlbGYpLl9faW5pdF9fKAogICAgICAgICAgICAgbW9ja3MuU3VicHJvY2Vz
cy5Sb3V0ZSgKLSAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdpbmZvJywKLSAgICAg
ICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1i
ZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9pbmZvKGN3ZD1rd2FyZ3MuZ2V0KCdjd2QnLCAnJykp
Ci0gICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAg
IHNlbGYuZXhlY3V0YWJsZSwgJ2luZm8nLCBzZWxmLkJSQU5DSF9SRSwKICAgICAgICAgICAgICAg
ICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3Ms
ICoqa3dhcmdzOiBzZWxmLl9pbmZvKGJyYW5jaD1zZWxmLkJSQU5DSF9SRS5tYXRjaChhcmdzWzJd
KS5ncm91cCgnYnJhbmNoJyksIGN3ZD1rd2FyZ3MuZ2V0KCdjd2QnLCAnJykpCisgICAgICAgICAg
ICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0
YWJsZSwgJ2luZm8nLCAnLXInLCByZS5jb21waWxlKHInXGQrJyksCisgICAgICAgICAgICAgICAg
Y3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAq
Kmt3YXJnczogc2VsZi5faW5mbyhyZXZpc2lvbj1pbnQoYXJnc1szXSksIGN3ZD1rd2FyZ3MuZ2V0
KCdjd2QnLCAnJykpCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAg
ICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2luZm8nLAorICAgICAgICAgICAgICAgIGN3
ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKipr
d2FyZ3M6IHNlbGYuX2luZm8oY3dkPWt3YXJncy5nZXQoJ2N3ZCcsICcnKSkKICAgICAgICAgICAg
ICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRh
YmxlLCAnbGlzdCcsICdeL2JyYW5jaGVzJywKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRo
LApAQCAtMTE4LDYgKzEyMiwxNCBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6CiAgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaD1zZWxmLkJSQU5DSF9SRS5tYXRjaChhcmdzWzZdKS5ncm91
cCgnYnJhbmNoJyksCiAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPWFyZ3NbNV0sCiAgICAg
ICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0
aW9uKHJldHVybmNvZGU9MSkKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUo
CisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy1yJywgcmUuY29tcGls
ZShyJ1xkKzpcZCsnKSwgc2VsZi5CUkFOQ0hfUkUsCisgICAgICAgICAgICAgICAgY3dkPXNlbGYu
cGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczog
c2VsZi5fbG9nX3JhbmdlKAorICAgICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5CUkFOQ0hf
UkUubWF0Y2goYXJnc1s0XSkuZ3JvdXAoJ2JyYW5jaCcpLAorICAgICAgICAgICAgICAgICAgICBl
bmQ9aW50KGFyZ3NbM10uc3BsaXQoJzonKVswXSksCisgICAgICAgICAgICAgICAgICAgIGJlZ2lu
PWludChhcmdzWzNdLnNwbGl0KCc6JylbLTFdKSwKKyAgICAgICAgICAgICAgICApIGlmIHNlbGYu
Y29ubmVjdGVkIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQogICAg
ICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxm
LmV4ZWN1dGFibGUsICd1cCcsICctcicsIHJlLmNvbXBpbGUocidcZCsnKSwKICAgICAgICAgICAg
ICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMjA0LDYgKzIxNiwyOCBAQCBjbGFzcyBTdm4obW9ja3Mu
U3VicHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgKQogCisgICAgZGVmIF9s
b2dfcmFuZ2Uoc2VsZiwgYnJhbmNoPU5vbmUsIGVuZD1Ob25lLCBiZWdpbj1Ob25lKToKKyAgICAg
ICAgaWYgZW5kIDwgYmVnaW46CisgICAgICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24ocmV0dXJuY29kZT0xKQorCisgICAgICAgIG91dHB1dCA9ICcnCisgICAgICAgIHByZXZp
b3VzID0gTm9uZQorICAgICAgICBmb3IgYiBpbiBbYnJhbmNoLCAndHJ1bmsnXToKKyAgICAgICAg
ICAgIGZvciBjYW5kaWRhdGUgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzLmdldChiLCBbXSkpOgor
ICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZS5yZXZpc2lvbiA+IGVuZCBvciBjYW5kaWRhdGUu
cmV2aXNpb24gPCBiZWdpbjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgICAgICBpZiBwcmV2aW91cyBhbmQgcHJldmlvdXMucmV2aXNpb24gPD0gY2FuZGlkYXRlLnJl
dmlzaW9uOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHBy
ZXZpb3VzID0gY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICgnLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICAgICd7bGluZX0gfCB7bGluZXN9IGxpbmVzXG5c
bicKKyAgICAgICAgICAgICAgICAgICAgJ3tsb2d9XG4nKS5mb3JtYXQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lPXNlbGYubG9nX2xpbmUoY2FuZGlkYXRlKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmVzPWxlbihjYW5kaWRhdGUubWVzc2FnZS5zcGxpdGxpbmVzKCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nPWNhbmRpZGF0ZS5tZXNzYWdlCisgICAgICAgICAgICAg
ICAgKQorICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0w
LCBzdGRvdXQ9b3V0cHV0KQorCiAgICAgZGVmIGZpbmQoc2VsZiwgYnJhbmNoPU5vbmUsIHJldmlz
aW9uPU5vbmUpOgogICAgICAgICBpZiBub3QgYnJhbmNoIGFuZCBub3QgcmV2aXNpb246CiAgICAg
ICAgICAgICByZXR1cm4gc2VsZi5oZWFkCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weSBiL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90
ZS9naXRfaHViLnB5CmluZGV4IDAwNzhjMTczODJkODcwMjIxNjJjZDRjZmE4ZmViNGYxYTkwNTQw
ODcuLmI3YTcwMWJmOGNmNTU1ZTMwYTYxZGE2YWMwYWE2NDI3ZTg4ZjkzYjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3Jl
bW90ZS9naXRfaHViLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9naXRfaHViLnB5CkBAIC0xMzIsNiArMTMyLDUyIEBA
IGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAgICAgICB9IGZvciByZWZlcmVu
Y2UsIGNvbW1pdCBpbiAoc2VsZi5jb21taXRzIGlmIHR5cGUgPT0gJ2JyYW5jaGVzJyBlbHNlIHNl
bGYudGFncykuaXRlbXMoKQogICAgICAgICBdLCB1cmw9dXJsKQogCisgICAgZGVmIF9jb21taXRz
X3Jlc3BvbnNlKHNlbGYsIHVybCwgcmVmKToKKyAgICAgICAgZnJvbSBkYXRldGltZSBpbXBvcnQg
ZGF0ZXRpbWUsIHRpbWVkZWx0YQorCisgICAgICAgIGJhc2UgPSBzZWxmLmNvbW1pdChyZWYpCisg
ICAgICAgIGlmIG5vdCBiYXNlOgorICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlKAor
ICAgICAgICAgICAgICAgIHN0YXR1c19jb2RlPTQwNCwKKyAgICAgICAgICAgICAgICB1cmw9dXJs
LAorICAgICAgICAgICAgICAgIHRleHQ9anNvbi5kdW1wcyhkaWN0KG1lc3NhZ2U9J05vIGNvbW1p
dCBmb3VuZCBmb3IgU0hBOiB7fScuZm9ybWF0KHJlZikpKSwKKyAgICAgICAgICAgICkKKworICAg
ICAgICByZXNwb25zZSA9IFtdCisgICAgICAgIGZvciBicmFuY2ggaW4gW3NlbGYuZGVmYXVsdF9i
cmFuY2hdIGlmIGJhc2UuYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSBbYmFzZS5i
cmFuY2gsIHNlbGYuZGVmYXVsdF9icmFuY2hdOgorICAgICAgICAgICAgaW5fcmFuZ2UgPSBGYWxz
ZQorICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgICAgICBmb3IgY29tbWl0IGlu
IHJldmVyc2VkKHNlbGYuY29tbWl0c1ticmFuY2hdKToKKyAgICAgICAgICAgICAgICBpZiBjb21t
aXQuaGFzaCA9PSByZWY6CisgICAgICAgICAgICAgICAgICAgIGluX3JhbmdlID0gVHJ1ZQorICAg
ICAgICAgICAgICAgIGlmIG5vdCBpbl9yYW5nZToKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNvbW1pdAorICAgICAgICAgICAgICAgIHJl
c3BvbnNlLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICdzaGEnOiBjb21taXQuaGFzaCwK
KyAgICAgICAgICAgICAgICAgICAgJ2NvbW1pdCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdhdXRob3InOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBjb21taXQu
YXV0aG9yLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJzogY29tbWl0
LmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZSc6IGRhdGV0
aW1lLnV0Y2Zyb210aW1lc3RhbXAoY29tbWl0LnRpbWVzdGFtcCAtIHRpbWVkZWx0YShob3Vycz03
KS5zZWNvbmRzKS5zdHJmdGltZSgnJVktJW0tJWRUJUg6JU06JVNaJyksCisgICAgICAgICAgICAg
ICAgICAgICAgICB9LCAnY29tbWl0dGVyJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICduYW1lJzogY29tbWl0LmF1dGhvci5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdlbWFpbCc6IGNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2RhdGUnOiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGNvbW1pdC50aW1lc3RhbXAgLSB0
aW1lZGVsdGEoaG91cnM9Nykuc2Vjb25kcykuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicp
LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwgJ21lc3NhZ2UnOiBjb21taXQubWVzc2FnZSAr
ICgnXG5naXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3dlYmtp
dC97fUB7fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmNcbicuZm9ybWF0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cnVuaycgaWYgY29tbWl0LmJyYW5jaCA9PSBz
ZWxmLmRlZmF1bHRfYnJhbmNoIGVsc2UgY29tbWl0LmJyYW5jaCwgY29tbWl0LnJldmlzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgKSBpZiBjb21taXQucmV2aXNpb24gZWxzZSAnJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAndXJsJzogJ2h0dHBzOi8ve30vZ2l0L2NvbW1pdHMve30n
LmZvcm1hdChzZWxmLmFwaV9yZW1vdGUsIGNvbW1pdC5oYXNoKSwKKyAgICAgICAgICAgICAgICAg
ICAgfSwgJ3VybCc6ICdodHRwczovL3t9L2NvbW1pdHMve30nLmZvcm1hdChzZWxmLmFwaV9yZW1v
dGUsIGNvbW1pdC5oYXNoKSwKKyAgICAgICAgICAgICAgICAgICAgJ2h0bWxfdXJsJzogJ2h0dHBz
Oi8ve30vY29tbWl0L3t9Jy5mb3JtYXQoc2VsZi5yZW1vdGUsIGNvbW1pdC5oYXNoKSwKKyAgICAg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgaWYgYnJhbmNoICE9IHNlbGYuZGVmYXVsdF9icmFu
Y2g6CisgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNb
c2VsZi5kZWZhdWx0X2JyYW5jaF0pOgorICAgICAgICAgICAgICAgICAgICBpZiBwcmV2aW91cy5i
cmFuY2hfcG9pbnQgPT0gY29tbWl0LmlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZWYgPSBjb21taXQuaGFzaAorCisgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5mcm9t
SnNvbihyZXNwb25zZSwgdXJsPXVybCkKKwogICAgIGRlZiBfY29tbWl0X3Jlc3BvbnNlKHNlbGYs
IHVybCwgcmVmKToKICAgICAgICAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVk
ZWx0YQogCkBAIC0xNTMsOSArMTk5LDkgQEAgY2xhc3MgR2l0SHViKG1vY2tzLlJlcXVlc3RzKToK
ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBjb21taXQuYXV0aG9yLm5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICdlbWFpbCc6IGNvbW1pdC5hdXRob3IuZW1haWwsCiAgICAgICAgICAgICAg
ICAgICAgICdkYXRlJzogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1w
IC0gdGltZWRlbHRhKGhvdXJzPTcpLnNlY29uZHMpLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTol
U1onKSwKLSAgICAgICAgICAgICAgICB9LCAnbWVzc2FnZSc6IGNvbW1pdC5tZXNzYWdlICsgJ1xu
Z2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS93ZWJraXQve31A
e30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjXG4nLmZvcm1hdCgKKyAgICAg
ICAgICAgICAgICB9LCAnbWVzc2FnZSc6IGNvbW1pdC5tZXNzYWdlICsgKCdcbmdpdC1zdm4taWQ6
IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0L3t9QHt9IDI2OGY0NWNj
LWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmY1xuJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAg
ICAgICd0cnVuaycgaWYgY29tbWl0LmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGVsc2Ug
Y29tbWl0LmJyYW5jaCwgY29tbWl0LnJldmlzaW9uLAotICAgICAgICAgICAgICAgICkgaWYgY29t
bWl0LnJldmlzaW9uIGVsc2UgJycsCisgICAgICAgICAgICAgICAgKSBpZiBjb21taXQucmV2aXNp
b24gZWxzZSAnJyksCiAgICAgICAgICAgICAgICAgJ3VybCc6ICdodHRwczovL3t9L2dpdC9jb21t
aXRzL3t9Jy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlLCBjb21taXQuaGFzaCksCiAgICAgICAgICAg
ICB9LCAndXJsJzogJ2h0dHBzOi8ve30vY29tbWl0cy97fScuZm9ybWF0KHNlbGYuYXBpX3JlbW90
ZSwgY29tbWl0Lmhhc2gpLAogICAgICAgICAgICAgJ2h0bWxfdXJsJzogJ2h0dHBzOi8ve30vY29t
bWl0L3t9Jy5mb3JtYXQoc2VsZi5yZW1vdGUsIGNvbW1pdC5oYXNoKSwKQEAgLTIzMywxMCArMjc5
LDExIEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAgICAgICApLCB1cmw9
dXJsCiAgICAgICAgICkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBkYXRh
PU5vbmUsICoqa3dhcmdzKToKKyAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgZGF0
YT1Ob25lLCBwYXJhbXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3QgdXJsLnN0YXJ0
c3dpdGgoJ2h0dHA6Ly8nKSBhbmQgbm90IHVybC5zdGFydHN3aXRoKCdodHRwczovLycpOgogICAg
ICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmNyZWF0ZTQwNCh1cmwpCiAKKyAgICAgICAg
cGFyYW1zID0gcGFyYW1zIG9yIHt9CiAgICAgICAgIHN0cmlwcGVkX3VybCA9IHVybC5zcGxpdCgn
Oi8vJylbLTFdCiAKICAgICAgICAgIyBUb3AtbGV2ZWwgQVBJIHJlcXVlc3QKQEAgLTI0Nyw2ICsy
OTQsMTAgQEAgY2xhc3MgR2l0SHViKG1vY2tzLlJlcXVlc3RzKToKICAgICAgICAgaWYgc3RyaXBw
ZWRfdXJsIGluIFsne30vYnJhbmNoZXMnLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUpLCAne30vdGFn
cycuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSldOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xp
c3RfcmVmc19yZXNwb25zZSh1cmw9dXJsLCB0eXBlPXN0cmlwcGVkX3VybC5zcGxpdCgnLycpWy0x
XSkKIAorICAgICAgICAjIFJldHVybiBhIGNvbW1pdCBhbmQgaXQncyBwYXJlbnRzCisgICAgICAg
IGlmIHN0cmlwcGVkX3VybCA9PSAne30vY29tbWl0cycuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSkg
YW5kIHBhcmFtcy5nZXQoJ3NoYScpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdHNf
cmVzcG9uc2UodXJsPXVybCwgcmVmPXBhcmFtc1snc2hhJ10pCisKICAgICAgICAgIyBFeHRyYWN0
IHNpbmdsZSBjb21taXQKICAgICAgICAgaWYgc3RyaXBwZWRfdXJsLnN0YXJ0c3dpdGgoJ3t9L2Nv
bW1pdHMvJy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlKSk6CiAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fY29tbWl0X3Jlc3BvbnNlKHVybD11cmwsIHJlZj1zdHJpcHBlZF91cmwuc3BsaXQoJy8nKVst
MV0pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9tb2Nrcy9yZW1vdGUvc3ZuLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL3N2bi5weQppbmRleCA3NDdlMGJkMWM1
NjhmNGRiZmE4Mjc2ZWE1Mzg1ZjQ3NzZhMDAyMjhhLi41ZjJmNGJhYWZmMjkxZmVlMDA5ZDJjZTQw
MjBlYzBiYmQ2MzYwMWZiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvc3ZuLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9zdm4ucHkK
QEAgLTEwNiwzMCArMTA2LDE3IEBAIGNsYXNzIFN2bihtb2Nrcy5SZXF1ZXN0cyk6CiAKICAgICAg
ICAgaWYgY2F0ZWdvcnkgYW5kIGNhdGVnb3J5LnN0YXJ0c3dpdGgoJ2JyYW5jaGVzLycpOgogICAg
ICAgICAgICAgY2F0ZWdvcnkgPSBjYXRlZ29yeS5zcGxpdCgnLycpWy0xXQotCi0gICAgICAgIGlm
IG5vdCBjYXRlZ29yeToKLSAgICAgICAgICAgIGZvciBjb21taXRzIGluIHNlbGYuY29tbWl0cy52
YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIGNvbW1pdC5yZXZpc2lvbiA9PSBzdGFydDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNhdGVnb3J5ID0gY29tbWl0LmJyYW5jaAotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgY2F0ZWdvcnk6Ci0gICAgICAgICAgICByZXR1cm4g
W10KLQotICAgICAgICByZXN1bHQgPSBbY29tbWl0IGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2Vs
Zi5jb21taXRzW2NhdGVnb3J5XSldCi0gICAgICAgIGlmIHNlbGYuY29tbWl0c1tjYXRlZ29yeV1b
MF0uYnJhbmNoX3BvaW50OgotICAgICAgICAgICAgcmVzdWx0ICs9IFtjb21taXQgZm9yIGNvbW1p
dCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbJ3RydW5rJ11bOnNlbGYuY29tbWl0c1tjYXRlZ29y
eV1bMF0uYnJhbmNoX3BvaW50XSldCi0KLSAgICAgICAgZm9yIGluZGV4IGluIHJldmVyc2VkKHJh
bmdlKGxlbihyZXN1bHQpKSk6Ci0gICAgICAgICAgICBpZiByZXN1bHRbaW5kZXhdLnJldmlzaW9u
IDwgZW5kOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6aW5kZXhdCi0gICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHJlc3VsdFtpbmRleF0ucmV2aXNpb24g
PiBzdGFydDoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbaW5kZXg6XQotICAgICAg
ICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBjYXRlZ29y
eSA9IFtjYXRlZ29yeV0gaWYgY2F0ZWdvcnkgZWxzZSBzZWxmLmJyYW5jaGVzKHN0YXJ0KSArIHNl
bGYudGFncyhzdGFydCkKKworICAgICAgICBwcmV2aW91cyA9IE5vbmUKKyAgICAgICAgZm9yIGIg
aW4gY2F0ZWdvcnkgKyBbJ3RydW5rJ106CisgICAgICAgICAgICBmb3IgY2FuZGlkYXRlIGluIHJl
dmVyc2VkKHNlbGYuY29tbWl0cy5nZXQoYiwgW10pKToKKyAgICAgICAgICAgICAgICBpZiBjYW5k
aWRhdGUucmV2aXNpb24gPiBzdGFydCBvciBjYW5kaWRhdGUucmV2aXNpb24gPCBlbmQ6CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXMgYW5k
IHByZXZpb3VzLnJldmlzaW9uIDw9IGNhbmRpZGF0ZS5yZXZpc2lvbjoKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNhbmRpZGF0ZQorICAg
ICAgICAgICAgICAgIHlpZWxkIGNhbmRpZGF0ZQogCiAgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0
aG9kLCB1cmwsIGRhdGE9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBmcm9tIGRhdGV0aW1lIGlt
cG9ydCBkYXRldGltZSwgdGltZWRlbHRhCkBAIC0yNjYsMTEgKzI1MywxMSBAQCBjbGFzcyBTdm4o
bW9ja3MuUmVxdWVzdHMpOgogCiAgICAgICAgICMgTG9nIGZvciBjb21taXQKICAgICAgICAgaWYg
bWV0aG9kID09ICdSRVBPUlQnIGFuZCBzdHJpcHBlZF91cmwuc3RhcnRzd2l0aCgne30hJy5mb3Jt
YXQoc2VsZi5yZW1vdGUpKSBhbmQgbWF0Y2ggYW5kIGRhdGEuZ2V0KCdTOmxvZy1yZXBvcnQnKToK
LSAgICAgICAgICAgIGNvbW1pdHMgPSBzZWxmLnJhbmdlKAorICAgICAgICAgICAgY29tbWl0cyA9
IGxpc3Qoc2VsZi5yYW5nZSgKICAgICAgICAgICAgICAgICBjYXRlZ29yeT1tYXRjaC5ncm91cCgn
Y2F0ZWdvcnknKSwKICAgICAgICAgICAgICAgICBzdGFydD1pbnQoZGF0YVsnUzpsb2ctcmVwb3J0
J11bJ1M6c3RhcnQtcmV2aXNpb24nXSksCiAgICAgICAgICAgICAgICAgZW5kPWludChkYXRhWydT
OmxvZy1yZXBvcnQnXVsnUzplbmQtcmV2aXNpb24nXSksCi0gICAgICAgICAgICApCisgICAgICAg
ICAgICApKQogCiAgICAgICAgICAgICBsaW1pdCA9IGludChkYXRhWydTOmxvZy1yZXBvcnQnXS5n
ZXQoJ1M6bGltaXQnLCAwKSkKICAgICAgICAgICAgIGlmIGxpbWl0IGFuZCBsZW4oY29tbWl0cykg
PiBsaW1pdDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3JlbW90ZS9naXRfaHViLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKaW5kZXggODYzZmNhNTFj
NjM2Nzg4OGViNmE4OTkzMDhjNTk1ZGRlMzM4ODNkZS4uOGZhMzExNjI0MmQ1OTI0OTQyOTQyOGE3
YTNlNTVkZDM5NDQ4MTIwMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKQEAg
LTc1LDcgKzc1LDcgQEAgY2xhc3MgR2l0SHViKFNjbSk6CiAgICAgZGVmIGlzX2dpdChzZWxmKToK
ICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIHBhdGg9Tm9uZSwg
cGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSwgYXV0aGVudGljYXRlZD1Ob25lKToKKyAgICBkZWYg
cmVxdWVzdChzZWxmLCBwYXRoPU5vbmUsIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUsIGF1dGhl
bnRpY2F0ZWQ9Tm9uZSwgcGFnaW5hdGU9VHJ1ZSk6CiAgICAgICAgIGhlYWRlcnMgPSB7a2V5OiB2
YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBoZWFkZXJzLml0ZW1zKCl9IGlmIGhlYWRlcnMgZWxzZSBk
aWN0KCkKICAgICAgICAgaGVhZGVyc1snQWNjZXB0J10gPSBoZWFkZXJzLmdldCgnQWNjZXB0Jywg
J2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMranNvbicpCiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBj
bGFzcyBHaXRIdWIoU2NtKToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJlc3Vs
dCA9IHJlc3BvbnNlLmpzb24oKQogCi0gICAgICAgIHdoaWxlIGlzaW5zdGFuY2UocmVzcG9uc2Uu
anNvbigpLCBsaXN0KSBhbmQgbGVuKHJlc3BvbnNlLmpzb24oKSkgPT0gcGFyYW1zWydwZXJfcGFn
ZSddOgorICAgICAgICB3aGlsZSBwYWdpbmF0ZSBhbmQgaXNpbnN0YW5jZShyZXNwb25zZS5qc29u
KCksIGxpc3QpIGFuZCBsZW4ocmVzcG9uc2UuanNvbigpKSA9PSBwYXJhbXNbJ3Blcl9wYWdlJ106
CiAgICAgICAgICAgICBwYXJhbXNbJ3BhZ2UnXSArPSAxCiAgICAgICAgICAgICByZXNwb25zZSA9
IHJlcXVlc3RzLmdldCh1cmwsIHBhcmFtcz1wYXJhbXMsIGhlYWRlcnM9aGVhZGVycywgYXV0aD1h
dXRoKQogICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgpAQCAtMjc4
LDE2ICsyNzgsMjIgQEAgY2xhc3MgR2l0SHViKFNjbSk6CiAgICAgICAgICkudGltZXR1cGxlKCkp
KQogCiAgICAgICAgIG9yZGVyID0gMAotICAgICAgICB3aGlsZSBub3QgaWRlbnRpZmllciBvciBv
cmRlciArIDEgPCBpZGVudGlmaWVyICsgKGJyYW5jaF9wb2ludCBvciAwKToKLSAgICAgICAgICAg
IHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCdjb21taXRzL3t9Jy5mb3JtYXQoJ3t9fnt9Jy5mb3Jt
YXQoY29tbWl0X2RhdGFbJ3NoYSddLCBvcmRlciArIDEpKSkKLSAgICAgICAgICAgIGlmIG5vdCBy
ZXNwb25zZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcGFyZW50X3RpbWVz
dGFtcCA9IGludChjYWxlbmRhci50aW1lZ20oZGF0ZXRpbWUuc3RycHRpbWUoCi0gICAgICAgICAg
ICAgICAgcmVzcG9uc2VbJ2NvbW1pdCddWydjb21taXR0ZXInXVsnZGF0ZSddLCAnJVktJW0tJWRU
JUg6JU06JVNaJywKLSAgICAgICAgICAgICkudGltZXR1cGxlKCkpKQotICAgICAgICAgICAgaWYg
cGFyZW50X3RpbWVzdGFtcCAhPSB0aW1lc3RhbXA6CisgICAgICAgIGxoYXNoID0gY29tbWl0X2Rh
dGFbJ3NoYSddCisgICAgICAgIHdoaWxlIGxoYXNoOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBz
ZWxmLnJlcXVlc3QoJ2NvbW1pdHMnLCBwYWdpbmF0ZT1GYWxzZSwgcGFyYW1zPWRpY3Qoc2hhPWxo
YXNoLCBwZXJfcGFnZT0yMCkpCisgICAgICAgICAgICBpZiBsZW4ocmVzcG9uc2UpIDw9IDE6CiAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIG9yZGVyICs9IDEKKyAgICAgICAgICAg
IGZvciBjIGluIHJlc3BvbnNlOgorICAgICAgICAgICAgICAgIGlmIGxoYXNoID09IGNbJ3NoYSdd
OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHBhcmVudF90
aW1lc3RhbXAgPSBpbnQoY2FsZW5kYXIudGltZWdtKGRhdGV0aW1lLnN0cnB0aW1lKAorICAgICAg
ICAgICAgICAgICAgICBjWydjb21taXQnXVsnY29tbWl0dGVyJ11bJ2RhdGUnXSwgJyVZLSVtLSVk
VCVIOiVNOiVTWicsCisgICAgICAgICAgICAgICAgKS50aW1ldHVwbGUoKSkpCisgICAgICAgICAg
ICAgICAgaWYgcGFyZW50X3RpbWVzdGFtcCAhPSB0aW1lc3RhbXA6CisgICAgICAgICAgICAgICAg
ICAgIGxoYXNoID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg
ICAgIGxoYXNoID0gY1snc2hhJ10KKyAgICAgICAgICAgICAgICBvcmRlciArPSAxCiAKICAgICAg
ICAgcmV0dXJuIENvbW1pdCgKICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5pZCwKQEAg
LTMwNCw2ICszMTAsNjcgQEAgY2xhc3MgR2l0SHViKFNjbSk6CiAgICAgICAgICAgICApLCBtZXNz
YWdlPWNvbW1pdF9kYXRhWydjb21taXQnXVsnbWVzc2FnZSddIGlmIGluY2x1ZGVfbG9nIGVsc2Ug
Tm9uZSwKICAgICAgICAgKQogCisgICAgZGVmIGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1
ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgYmVnaW4sIGVu
ZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlm
aWVyLCAqKmt3YXJncykKKworICAgICAgICBwcmV2aW91cyA9IGVuZAorICAgICAgICBjYWNoZWQg
PSBbcHJldmlvdXNdCisgICAgICAgIHdoaWxlIHByZXZpb3VzOgorICAgICAgICAgICAgcmVzcG9u
c2UgPSBzZWxmLnJlcXVlc3QoJ2NvbW1pdHMnLCBwYWdpbmF0ZT1GYWxzZSwgcGFyYW1zPWRpY3Qo
c2hhPXByZXZpb3VzLmhhc2gpKQorICAgICAgICAgICAgaWYgbm90IHJlc3BvbnNlOgorICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmb3IgY29tbWl0X2RhdGEgaW4gcmVzcG9uc2U6
CisgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gcHJldmlvdXMuYnJhbmNoX3BvaW50Cisg
ICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHByZXZpb3VzLmlkZW50aWZpZXIKKyAgICAgICAg
ICAgICAgICBpZiBjb21taXRfZGF0YVsnc2hhJ10gPT0gcHJldmlvdXMuaGFzaDoKKyAgICAgICAg
ICAgICAgICAgICAgY2FjaGVkID0gY2FjaGVkWzotMV0KKyAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIC09IDEKKworICAgICAgICAgICAgICAgIGlm
IG5vdCBpZGVudGlmaWVyOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNo
X3BvaW50CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAg
ICAgICAgICAgIG1hdGNoZXMgPSBzZWxmLkdJVF9TVk5fUkVWSVNJT04uZmluZGFsbChjb21taXRf
ZGF0YVsnY29tbWl0J11bJ21lc3NhZ2UnXSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGlu
dChtYXRjaGVzWy0xXS5zcGxpdCgnQCcpWzBdKSBpZiBtYXRjaGVzIGVsc2UgTm9uZQorCisgICAg
ICAgICAgICAgICAgZW1haWxfbWF0Y2ggPSBzZWxmLkVNQUlMX1JFLm1hdGNoKGNvbW1pdF9kYXRh
Wydjb21taXQnXVsnYXV0aG9yJ11bJ2VtYWlsJ10pCisgICAgICAgICAgICAgICAgdGltZXN0YW1w
ID0gaW50KGNhbGVuZGFyLnRpbWVnbShkYXRldGltZS5zdHJwdGltZSgKKyAgICAgICAgICAgICAg
ICAgICAgY29tbWl0X2RhdGFbJ2NvbW1pdCddWydjb21taXR0ZXInXVsnZGF0ZSddLCAnJVktJW0t
JWRUJUg6JU06JVNaJywKKyAgICAgICAgICAgICAgICApLnRpbWV0dXBsZSgpKSkKKworICAgICAg
ICAgICAgICAgIHByZXZpb3VzID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0
b3J5X2lkPXNlbGYuaWQsCisgICAgICAgICAgICAgICAgICAgIGhhc2g9Y29tbWl0X2RhdGFbJ3No
YSddLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj1yZXZpc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoPWVuZC5icmFuY2ggaWYgaWRlbnRpZmllciBhbmQgYnJhbmNoX3BvaW50
IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmll
cj1pZGVudGlmaWVyIGlmIGluY2x1ZGVfaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9pbnQgaWYgaW5jbHVkZV9pZGVudGlmaWVy
IGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPXRpbWVzdGFtcCwKKyAg
ICAgICAgICAgICAgICAgICAgYXV0aG9yPXNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1pdF9kYXRhWydjb21taXQnXVsnYXV0aG9yJ11bJ25hbWUn
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsX21hdGNoLmdyb3VwKCdlbWFpbCcpIGlm
IGVtYWlsX21hdGNoIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgKSwgb3JkZXI9MCwK
KyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1jb21taXRfZGF0YVsnY29tbWl0J11bJ21lc3Nh
Z2UnXSBpZiBpbmNsdWRlX2xvZyBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIGlmIG5vdCBjYWNoZWQgb3IgY2FjaGVkWzBdLnRpbWVzdGFtcCAhPSBwcmV2aW91
cy50aW1lc3RhbXA6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNhY2hlZDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHlpZWxkIGMKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVkID0g
W3ByZXZpb3VzXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZv
ciBjIGluIGNhY2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMub3JkZXIgKz0gMQorICAg
ICAgICAgICAgICAgICAgICBjYWNoZWQuYXBwZW5kKHByZXZpb3VzKQorCisgICAgICAgICAgICAg
ICAgaWYgcHJldmlvdXMuaGFzaCA9PSBiZWdpbi5oYXNoIG9yIHByZXZpb3VzLnRpbWVzdGFtcCA8
IGJlZ2luLnRpbWVzdGFtcDoKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgZm9yIGMgaW4gY2FjaGVkOgorICAg
ICAgICAgICAgYy5vcmRlciArPSBiZWdpbi5vcmRlcgorICAgICAgICAgICAgeWllbGQgYworCisK
ICAgICBkZWYgZmluZChzZWxmLCBhcmd1bWVudCwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9p
ZGVudGlmaWVyPVRydWUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmd1bWVudCwgc2l4
LnN0cmluZ190eXBlcyk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCAn
YXJndW1lbnQnIHRvIGJlIGEgc3RyaW5nLCBub3QgJ3t9JyIuZm9ybWF0KHR5cGUoYXJndW1lbnQp
KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3JlbW90ZS9zdm4ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21w
eS93ZWJraXRzY21weS9yZW1vdGUvc3ZuLnB5CmluZGV4IGJhMDdiMzY3NTBlNTA5ZmI0ZDk4MjA4
ZjVlZTdlMDdmNzk1NWMzZGQuLmI5OGM3ZWJmMjA4ZTk0ZTNkNmU5YTk5MjZmODE0ZDM1OWRlZjI4
ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3JlbW90ZS9zdm4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weQpAQCAtMzIsMTQgKzMyLDE0IEBAIGltcG9y
dCB4bWx0b2RpY3QKIAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIAotZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IGxvZywgcnVuLCBkZWNvcmF0b3JzCitmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgZGVjb3JhdG9ycywgc3RyaW5nX3V0aWxzCiBmcm9tIHdlYmtpdHNjbXB5LnJlbW90ZS5z
Y20gaW1wb3J0IFNjbQotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRv
ciwgVmVyc2lvbgorZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBWZXJzaW9uCiAKIAog
Y2xhc3MgU3ZuKFNjbSk6CiAgICAgVVJMX1JFID0gcmUuY29tcGlsZShyJ1xBaHR0cHM/Oi8vc3Zu
Lig/UDxob3N0PlxTKykvcmVwb3NpdG9yeS9cUytcWicpCi0gICAgSElTVE9SWV9SRSA9IHJlLmNv
bXBpbGUoYic8RDp2ZXJzaW9uLW5hbWU+KD9QPHJldmlzaW9uPlxkKyk8L0Q6dmVyc2lvbi1uYW1l
PicpCisgICAgREFUQV9SRSA9IHJlLmNvbXBpbGUoYic8W1NEXTooP1A8dGFnPlxTKyk+KD9QPGNv
bnRlbnQ+LiopPC9bU0RdOi4rPicpCiAgICAgQ0FDSEVfVkVSU0lPTiA9IFZlcnNpb24oMSkKIAog
ICAgIEBjbGFzc21ldGhvZApAQCAtMjQ0LDggKzI0NCw4IEBAIGNsYXNzIFN2bihTY20pOgogCiAg
ICAgICAgICAgICBkZWZhdWx0X2NvdW50ID0gMAogICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVz
cG9uc2UuaXRlcl9saW5lcygpOgotICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5ISVNUT1JZ
X1JFLm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAg
ICAgICAgIG1hdGNoID0gc2VsZi5EQVRBX1JFLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAg
aWYgbm90IG1hdGNoIG9yIG1hdGNoLmdyb3VwKCd0YWcnKSAhPSBiJ3ZlcnNpb24tbmFtZSc6CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICAgICBpZiBub3QgZGlk
X3dhcm46CkBAIC0yNTQsNyArMjU0LDcgQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmxvZygnQ2FjaGluZyBjb21taXQgZGF0YSBmb3Ige30sIHRoaXMgd2ls
bCB0YWtlIGEgZmV3IG1pbnV0ZXMuLi4nLmZvcm1hdChicmFuY2gpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkX3dhcm4gPSBUcnVlCiAKLSAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGlu
dChtYXRjaC5ncm91cCgncmV2aXNpb24nKSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGlu
dChtYXRjaC5ncm91cCgnY29udGVudCcpKQogICAgICAgICAgICAgICAgIGlmIHBvcyA+IDAgYW5k
IHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF1bcG9zIC0gMV0gPT0gcmV2aXNpb246CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRf
YnJhbmNoOgpAQCAtNDU1LDMgKzQ1NSw4NCBAQCBjbGFzcyBTdm4oU2NtKToKICAgICAgICAgICAg
IGF1dGhvcj1hdXRob3IsCiAgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsCiAgICAgICAgICkK
KworICAgIGRlZiBjb21taXRzKHNlbGYsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRp
Zmllcj1UcnVlLCAqKmt3YXJncyk6CisgICAgICAgIGJlZ2luLCBlbmQgPSBzZWxmLl9jb21taXRf
cmFuZ2UoaW5jbHVkZV9sb2c9RmFsc2UsIGluY2x1ZGVfaWRlbnRpZmllcj1pbmNsdWRlX2lkZW50
aWZpZXIsICoqa3dhcmdzKQorICAgICAgICBwcmV2aW91cyA9IGVuZAorCisgICAgICAgIGluX2Nv
bW1lbnQgPSBGYWxzZQorICAgICAgICBjdXJyZW50ID0gTm9uZQorICAgICAgICB3aXRoIHJlcXVl
c3RzLnJlcXVlc3QoCisgICAgICAgICAgICAgICAgbWV0aG9kPSdSRVBPUlQnLAorICAgICAgICAg
ICAgICAgIHVybD0ne30hc3ZuL3J2ci97fS97fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAg
ICBzZWxmLnVybCwKKyAgICAgICAgICAgICAgICAgICAgZW5kLnJldmlzaW9uLAorICAgICAgICAg
ICAgICAgICAgICBlbmQuYnJhbmNoIGlmIGVuZC5icmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5j
aCBvciAnLycgaW4gZW5kLmJyYW5jaCBlbHNlICdicmFuY2hlcy97fScuZm9ybWF0KGVuZC5icmFu
Y2gpLAorICAgICAgICAgICAgICAgICksIHN0cmVhbT1UcnVlLAorICAgICAgICAgICAgICAgIGhl
YWRlcnM9eworICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQveG1sJywK
KyAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJywKKyAgICAgICAg
ICAgICAgICAgICAgJ0RFUFRIJzogJzEnLAorICAgICAgICAgICAgICAgIH0sIGRhdGE9JzxTOmxv
Zy1yZXBvcnQgeG1sbnM6Uz0ic3ZuOiI+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnPFM6
c3RhcnQtcmV2aXNpb24+e2VuZH08L1M6c3RhcnQtcmV2aXNpb24+XG4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAnPFM6ZW5kLXJldmlzaW9uPntiZWdpbn08L1M6ZW5kLXJldmlzaW9uPlxuJwor
ICAgICAgICAgICAgICAgICAgICAgICAgJzxTOnBhdGg+PC9TOnBhdGg+XG4nCisgICAgICAgICAg
ICAgICAgICAgICAgICAnPC9TOmxvZy1yZXBvcnQ+XG4nLmZvcm1hdChlbmQ9ZW5kLnJldmlzaW9u
LCBiZWdpbj1iZWdpbi5yZXZpc2lvbiksCisgICAgICAgICkgYXMgcmVzcG9uc2U6CisgICAgICAg
ICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6CisgICAgICAgICAgICAgICAgcmFp
c2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byBjb25zdHJ1Y3QgYnJhbmNoIGhpc3RvcnkgZm9y
ICd7fSciLmZvcm1hdChicmFuY2gpKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVzcG9uc2Uu
aXRlcl9saW5lcygpOgorICAgICAgICAgICAgICAgIGlmIGluX2NvbW1lbnQ6CisgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnQubWVzc2FnZSArPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGxpbmUpICsg
J1xuJworICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKGInPC9EOmNvbW1lbnQ+
Jyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Lm1lc3NhZ2UgPSBjdXJyZW50Lm1l
c3NhZ2VbOi0xM10KKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQubWVzc2FnZSA9IGN1
cnJlbnQubWVzc2FnZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29tbWVu
dCA9IEZhbHNlCisKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
ICAgIGlmIGxpbmUgPT0gYic8Uzpsb2ctaXRlbT4nOgorICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50ID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAg
ICAgaWYgbGluZSA9PSBiJzwvUzpsb2ctaXRlbT4nOgorICAgICAgICAgICAgICAgICAgICBpZiBj
dXJyZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgY3VycmVudAorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgY3VycmVudC5yZXZpc2lvbiA8PSBiZWdpbi5yZXZpc2lvbjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBwcmV2
aW91cyA9IGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgICAgIG1hdGNoID0gc2VsZi5EQVRBX1JFLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAg
aWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoLmdyb3VwKCd0YWcnKSA9PSBi
J3ZlcnNpb24tbmFtZSc6CisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBw
cmV2aW91cy5icmFuY2hfcG9pbnQgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHByZXZpb3VzLmlkZW50aWZpZXIgaWYg
aW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
aW50KG1hdGNoLmdyb3VwKCdjb250ZW50JykpICE9IHByZXZpb3VzLnJldmlzaW9uOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgLT0gMQorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllciA9IGJyYW5jaF9wb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5j
aF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IENvbW1p
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249aW50KG1hdGNoLmdyb3VwKCdjb250
ZW50JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1lbmQuYnJhbmNoIGlm
IGJyYW5jaF9wb2ludCBlbHNlIHNlbGYuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWRlbnRpZmllcj1pZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgICAgIGVsaWYgbWF0Y2guZ3JvdXAoJ3RhZycpID09IGInY3Jl
YXRvci1kaXNwbGF5bmFtZSc6CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc3RyaW5n
X3V0aWxzLmRlY29kZShtYXRjaC5ncm91cCgnY29udGVudCcpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudC5hdXRob3IgPSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUobmFtZSwgbmFt
ZSkgaWYgbmFtZSBhbmQgJ0AnIGluIG5hbWUgZWxzZSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUo
bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBtYXRjaC5ncm91cCgndGFnJykgPT0gYidk
YXRlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUgPSBkYXRldGltZS5zdHJwdGltZShz
dHJpbmdfdXRpbHMuZGVjb2RlKG1hdGNoLmdyb3VwKCdjb250ZW50JykpLnNwbGl0KCcuJylbMF0s
ICclWS0lbS0lZFQlSDolTTolUycpCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LnRp
bWVzdGFtcCA9IGludChjYWxlbmRhci50aW1lZ20oZGF0ZS50aW1ldHVwbGUoKSkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dp
dGgoYic8RDpjb21tZW50PicpOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50Lm1lc3NhZ2Ug
PSBzdHJpbmdfdXRpbHMuZGVjb2RlKGxpbmVbMTE6XSkgKyAnXG4nCisgICAgICAgICAgICAgICAg
ICAgIGlmIGxpbmUuZW5kc3dpdGgoYic8L0Q6Y29tbWVudD4nKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnQubWVzc2FnZSA9IGN1cnJlbnQubWVzc2FnZVs6LTEzXQorICAgICAgICAg
ICAgICAgICAgICAgICAgaW5fY29tbWVudCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpbl9jb21tZW50ID0gVHJ1ZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jh
c2UucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9z
Y21fYmFzZS5weQppbmRleCA4YTE0M2UwM2I4MzQ5YWM1YTRkMjFhZjQwMDAyNWQ2ZTNmOWJiMjc1
Li4yODEwYjkzZjU4MjIxOGZhNDU1MzdiZmY3MzFlMzcyNzViNmM2MTc2IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5w
eQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9z
Y21fYmFzZS5weQpAQCAtNzMsNiArNzMsNDUgQEAgY2xhc3MgU2NtQmFzZShvYmplY3QpOgogICAg
IGRlZiBjb21taXQoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5v
bmUsIGJyYW5jaD1Ob25lLCB0YWc9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVu
dGlmaWVyPVRydWUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAorICAg
IGRlZiBfY29tbWl0X3JhbmdlKHNlbGYsIGluY2x1ZGVfbG9nPUZhbHNlLCBpbmNsdWRlX2lkZW50
aWZpZXI9VHJ1ZSwgKiprd2FyZ3MpOgorICAgICAgICBiZWdpbl9hcmdzID0ge30KKyAgICAgICAg
ZW5kX2FyZ3MgPSB7fQorICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKToK
KyAgICAgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCdiZWdpbl8nKToKKyAgICAgICAgICAgICAg
ICBiZWdpbl9hcmdzW2FyZ1s2Ol1dID0gdmFsdWUKKyAgICAgICAgICAgIGVsaWYgYXJnLnN0YXJ0
c3dpdGgoJ2VuZF8nKToKKyAgICAgICAgICAgICAgICBlbmRfYXJnc1thcmdbNDpdXSA9IHZhbHVl
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiX2Nv
bW1pdF9yYW5nZSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ3t9JyIuZm9y
bWF0KGFyZykpCisKKyAgICAgICAgaWYgbm90IGJlZ2luX2FyZ3M6CisgICAgICAgICAgICByYWlz
ZSBUeXBlRXJyb3IoIl9jb21taXRfcmFuZ2UoKSBtaXNzaW5nIHJlcXVpcmVkICdiZWdpbl8nIGFy
Z3VtZW50cyIpCisgICAgICAgIGlmIG5vdCBlbmRfYXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5
cGVFcnJvcigiX2NvbW1pdF9yYW5nZSgpIG1pc3NpbmcgcmVxdWlyZWQgJ2VuZF8nIGFyZ3VtZW50
cyIpCisKKyAgICAgICAgaWYgbGlzdChiZWdpbl9hcmdzLmtleXMoKSkgPT0gWydhcmd1bWVudCdd
OgorICAgICAgICAgICAgYmVnaW4gPSBzZWxmLmZpbmQoaW5jbHVkZV9sb2c9aW5jbHVkZV9sb2cs
IGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSwgKipiZWdpbl9hcmdzKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgYmVnaW4gPSBzZWxmLmNvbW1pdChpbmNsdWRlX2xvZz1pbmNsdWRlX2xvZywg
aW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlLCAqKmJlZ2luX2FyZ3MpCisKKyAgICAgICAgaWYgbGlz
dChlbmRfYXJncy5rZXlzKCkpID09IFsnYXJndW1lbnQnXToKKyAgICAgICAgICAgIGVuZCA9IHNl
bGYuZmluZChpbmNsdWRlX2xvZz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1
ZGVfaWRlbnRpZmllciwgKiplbmRfYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVu
ZCA9IHNlbGYuY29tbWl0KGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZp
ZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmVuZF9hcmdzKQorCisgICAgICAgIGlmIG5vdCBiZWdp
bjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3t9JyBmYWlsZWQgdG8gZGVmaW5lIGJl
Z2luIGluIF9jb21taXRfcmFuZ2UoKSIuZm9ybWF0KGJlZ2luX2FyZ3MpKQorICAgICAgICBpZiBu
b3QgZW5kOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30nIGZhaWxlZCB0byBkZWZp
bmUgYmVnaW4gaW4gX2NvbW1pdF9yYW5nZSgpIi5mb3JtYXQoZW5kX2FyZ3MpKQorICAgICAgICBp
ZiBiZWdpbi50aW1lc3RhbXAgPiBlbmQudGltZXN0YW1wOgorICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKCIne30nIHByZS1kYXRlcyAne30nIGluIF9jb21taXRfcmFuZ2UoKSIuZm9ybWF0KGJl
Z2luLCBlbmQpKQorICAgICAgICBpZiBlbmQuYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2gg
YW5kIGJlZ2luLmJyYW5jaCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgcmFp
c2UgVHlwZUVycm9yKCIne30nIGFuZCAne30nIGRvIG5vdCBzaGFyZSBsaW5lYXIgaGlzdG9yeSIu
Zm9ybWF0KGJlZ2luLCBlbmQpKQorICAgICAgICByZXR1cm4gYmVnaW4sIGVuZAorCisgICAgZGVm
IGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUs
ICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKICAgICBk
ZWYgcHJpb3JpdGl6ZV9icmFuY2hlcyhzZWxmLCBicmFuY2hlcyk6CiAgICAgICAgIGlmIGxlbihi
cmFuY2hlcykgPT0gMToKICAgICAgICAgICAgIHJldHVybiBicmFuY2hlc1swXQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9m
aW5kX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5CmluZGV4IDExZDE4Mzc1ZDEwNGE0MzQ1MmEz
ZmRlZjg3MDBhYzA4NDIwMDc2MjIuLmI2ZjU5MTg5MWZmZmE1MDkzZjkzN2Q5MTFmMTgwMWMwYzE5
OGRmZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKQEAgLTIz
MSw3ICsyMzEsNyBAQCBBdXRob3I6IGpiZWRhcmRAYXBwbGUuY29tIDxqYmVkYXJkQGFwcGxlLmNv
bT4KIERhdGU6IHt9CiBSZXZpc2lvbjogNAogSWRlbnRpZmllcjogM0B0cnVuawotJycnLmZvcm1h
dChkYXRldGltZS5mcm9tdGltZXN0YW1wKDE2MDE2ODY3MDApLnN0cmZ0aW1lKCclYSAlYiAlZCAl
SDolTTolUyAlWScpKSwKKycnJy5mb3JtYXQoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgxNjAxNjg0
NzAwKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSksCiAgICAgICAgICkKIAogCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L2dpdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CmluZGV4IGU4YTUyMzhkMTUyZDQ2
NDdkYmQwOTExM2JhMmZmOTkzMjc3NGQ0YjEuLmQ4YmEwNzExNDNlZDk0NzU0YjM5ZjUwZWY5NDli
ZGViNTcyOWNjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CkBA
IC0yOCw3ICsyOCw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0
ZXRpbWUKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0
dXJlCiBmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBpbXBvcnQgVGltZSBhcyBNb2NrVGltZQotZnJv
bSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIG1vY2tzLCByZW1vdGUKK2Zyb20gd2Via2l0c2Nt
cHkgaW1wb3J0IENvbW1pdCwgbG9jYWwsIG1vY2tzLCByZW1vdGUKIAogCiBjbGFzcyBUZXN0R2l0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI4Myw2ICsyODMsMjggQEAgY2xhc3MgVGVzdEdpdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBs
b2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nYmFlNWQxZTkwOTk5Jykub3JkZXIpCiAg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5j
b21taXQoaGFzaD0nZDhiY2UyNmZhNjVjJykub3JkZXIpCiAKKyAgICBkZWYgdGVzdF9jb21taXRz
KHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCks
IG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgorICAgICAgICAgICAg
d2l0aCBtb2NrOgorICAgICAgICAgICAgICAgIGdpdCA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQo
WworICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2JhZTVkMWU5JyksCisgICAg
ICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nMWFiZTI1YjQnKSwKKyAgICAgICAgICAg
ICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4M2JiMicpLAorICAgICAgICAgICAgICAgICAg
ICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyksCisgICAgICAgICAgICAgICAgXSksIENvbW1p
dC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJlZ2luX2hhc2g9JzliODMxMWYy
JywgZW5kX2hhc2g9J2JhZTVkMWU5JykpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNo
KHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCks
IG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgorICAgICAgICAgICAg
d2l0aCBtb2NrOgorICAgICAgICAgICAgICAgIGdpdCA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisg
ICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQo
WworICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzYyMTY1MmFkJyksCisgICAg
ICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nYTMwY2U4NDknKSwKKyAgICAgICAgICAg
ICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4M2JiMicpLAorICAgICAgICAgICAgICAgICAg
ICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyksCisgICAgICAgICAgICAgICAgXSksIENvbW1p
dC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJlZ2luX2FyZ3VtZW50PSc5Yjgz
MTFmMicsIGVuZF9hcmd1bWVudD0nNjIxNjUyYWQnKSkpKQorCiAKIGNsYXNzIFRlc3RHaXRIdWIo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJlbW90ZSA9ICdodHRwczovL2dpdGh1Yi5leGFtcGxl
LmNvbS9XZWJLaXQvV2ViS2l0JwpAQCAtNDE1LDYgKzQzNywyNyBAQCBjbGFzcyBUZXN0R2l0SHVi
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9pZChzZWxmKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChyZW1vdGUuR2l0SHViKHNlbGYucmVtb3RlKS5pZCwgJ3dlYmtpdCcpCiAK
KyAgICBkZWYgdGVzdF9jb21taXRzKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLnJlbW90ZS5H
aXRIdWIoKToKKyAgICAgICAgICAgIGdpdCA9IHJlbW90ZS5HaXRIdWIoc2VsZi5yZW1vdGUpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisg
ICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdiYWU1ZDFlOScpLAorICAgICAgICAgICAg
ICAgIGdpdC5jb21taXQoaGFzaD0nMWFiZTI1YjQnKSwKKyAgICAgICAgICAgICAgICBnaXQuY29t
bWl0KGhhc2g9J2ZmZjgzYmIyJyksCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5
YjgzMTFmMicpLAorICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0
KGdpdC5jb21taXRzKGJlZ2luX2hhc2g9JzliODMxMWYyJywgZW5kX2hhc2g9J2JhZTVkMWU5Jykp
KSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAgICB3aXRoIG1v
Y2tzLnJlbW90ZS5HaXRIdWIoKToKKyAgICAgICAgICAgIGdpdCA9IHJlbW90ZS5HaXRIdWIoc2Vs
Zi5yZW1vdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCku
ZGVmYXVsdChbCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc2MjE2NTJhZCcpLAor
ICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nYTMwY2U4NDknKSwKKyAgICAgICAgICAg
ICAgICBnaXQuY29tbWl0KGhhc2g9J2ZmZjgzYmIyJyksCisgICAgICAgICAgICAgICAgZ2l0LmNv
bW1pdChoYXNoPSc5YjgzMTFmMicpLAorICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCku
ZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJlZ2luX2FyZ3VtZW50PSc5YjgzMTFmMicsIGVuZF9h
cmd1bWVudD0nNjIxNjUyYWQnKSkpKQorCisKIAogY2xhc3MgVGVzdEJpdEJ1Y2tldCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgcmVtb3RlID0gJ2h0dHBzOi8vYml0YnVja2V0LmV4YW1wbGUuY29t
L3Byb2plY3RzL1dFQktJVC9yZXBvcy93ZWJraXQnCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3Zu
X3VuaXR0ZXN0LnB5CmluZGV4IGI2MjBmMTRjYmU0Mzk2MDEwN2FlZTM1ZjE5MDA1NTg0NGUyNWI4
MmYuLmY0ZjY0NmNjMDk1MTU0N2RkM2Q4ZjQwMmIxNmNmMGMwOTEzZTg3MWUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3Zu
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5CkBAIC0yNyw3ICsyNyw3IEBAIGltcG9ydCB1
bml0dGVzdAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCiBmcm9t
IHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRzY21weSBpbXBv
cnQgbG9jYWwsIG1vY2tzLCByZW1vdGUKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwg
bG9jYWwsIG1vY2tzLCByZW1vdGUKIAogCiBjbGFzcyBUZXN0TG9jYWxTdm4odW5pdHRlc3QuVGVz
dENhc2UpOgpAQCAtMjMxLDYgKzIzMSwyNiBAQCBjbGFzcyBUZXN0TG9jYWxTdm4odW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBPdXRw
dXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2NhbC5Tdm4oc2Vs
Zi5wYXRoKS5maW5kKCd0cnVuaycsIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSkuaWRlbnRpZmll
cikKIAorICAgIGRlZiB0ZXN0X2NvbW1pdHMoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MubG9j
YWwuU3ZuKHNlbGYucGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHN2biA9IGxv
Y2FsLlN2bihzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5F
bmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0n
cjYnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyNCcpLAorICAgICAg
ICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IyJyksCisgICAgICAgICAgICAgICAgc3Zu
LmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2Rlcigp
LmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdpbl9yZXZpc2lvbj0ncjEnLCBlbmRfcmV2aXNp
b249J3I2JykpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAg
ICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAg
ICAgICAgICBzdm4gPSBsb2NhbC5Tdm4oc2VsZi5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgIHN2bi5j
b21taXQocmV2aXNpb249J3I3JyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lv
bj0ncjMnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyMicpLAorICAg
ICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IxJyksCisgICAgICAgICAgICBdKSwg
Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qoc3ZuLmNvbW1pdHMoYmVnaW5fYXJndW1lbnQ9
J3IxJywgZW5kX2FyZ3VtZW50PSdyNycpKSkpCisKIAogY2xhc3MgVGVzdFJlbW90ZVN2bih1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgcmVtb3RlID0gJ2h0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3Jl
cG9zaXRvcnkvd2Via2l0JwpAQCAtMzMxLDMgKzM1MSwyMyBAQCBjbGFzcyBUZXN0UmVtb3RlU3Zu
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2lkKHNlbGYpOgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlbW90ZS5Tdm4oc2VsZi5yZW1vdGUpLmlkLCAnd2Via2l0JykKKwor
ICAgIGRlZiB0ZXN0X2NvbW1pdHMoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MucmVtb3RlLlN2
bigpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICBzdm4gPSByZW1vdGUuU3ZuKHNlbGYu
cmVtb3RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRl
ZmF1bHQoWworICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3I2JyksCisgICAg
ICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjQnKSwKKyAgICAgICAgICAgICAgICBz
dm4uY29tbWl0KHJldmlzaW9uPSdyMicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2
aXNpb249J3IxJyksCisgICAgICAgICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxp
c3Qoc3ZuLmNvbW1pdHMoYmVnaW5fcmV2aXNpb249J3IxJywgZW5kX3JldmlzaW9uPSdyNicpKSkp
CisKKyAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5jaChzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nr
cy5yZW1vdGUuU3ZuKCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHN2biA9IHJlbW90
ZS5Tdm4oc2VsZi5yZW1vdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5F
bmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0n
cjcnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyMycpLAorICAgICAg
ICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IyJyksCisgICAgICAgICAgICAgICAgc3Zu
LmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2Rlcigp
LmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdpbl9hcmd1bWVudD0ncjEnLCBlbmRfYXJndW1l
bnQ9J3I3JykpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427234</attachid>
            <date>2021-04-27 21:27:39 -0700</date>
            <delta_ts>2021-05-04 14:43:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224890-20210427212738.patch</filename>
            <type>text/plain</type>
            <size>53505</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2Njg4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIxMDU5NWIyODRmZjg1YzgzMDFhYmZjOWY3MjY0NWFi
YzBhNjFhNS4uYjU3OGZiMDA5ZDZlYmUyOTExYWQwNDYxMDk5YjQ0MjNiMmViYjdiZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDIxLTA0LTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgQVBJIHRvIGVmZmljaWVudGx5IGNyZWF0ZSBhIHNl
cXVlbmNlIG9mIGNvbW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDg5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY5NzU3MzM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgaXQgaXMg
cG9zc2libGUgdG8gc2ltcGxlIGl0ZXJhdGUgdGhyb3VnaCBhIHJhbmdlIG9mIGNvbW1pdHMgdG8g
ZGVmaW5lIHRoZW0sCisgICAgICAgIGV2ZXJ5IEFQSSB3ZSB1c2UgdG8gZGVmaW5lIGNvbW1pdHMg
aGFzIG11Y2ggbW9yZSBlZmZpY2llbnQgdGVjaG5pcXVlcy4KKworICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5OgorICAgICAg
ICAoQ29udHJpYnV0b3IpOiBBZGQgcmV2aXNpb24gdG8gU1ZOX0FVVEhPUl9SRSBhbmQgYWRkIHJl
Z2V4IHdpdGhvdXQgbGluZXMuCisgICAgICAgIChDb250cmlidXRvci5mcm9tX3NjbV9sb2cpOiBT
dHJpcCBsZWFkaW5nIHdoaXRlc3BhY2UgZnJvbSBhdXRob3IuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAgICAo
R2l0LmNvbW1pdHMpOiBVc2UgYGdpdCBsb2dgIHRvIGVmZmljaWVudGx5IGNvbXB1dGUgYSByYW5n
ZSBvZiBjb21taXRzLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2xvY2FsL3N2bi5weToKKyAgICAgICAgKFN2bi5jb21taXRzKTogVXNlIGBzdm4g
bG9nYCB0byBlZmZpY2llbnRseSBjb21wdXRlIGEgcmFuZ2Ugb2YgY29tbWl0cy4KKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9n
aXQucHk6CisgICAgICAgIChHaXQuX19pbml0X18pOiBBZGQgYGdpdCBsb2dgIG1vY2suCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9j
YWwvc3ZuLnB5OgorICAgICAgICAoU3ZuLl9faW5pdF9fKTogQWRkIGBzdm4gbG9nYCBtb2NrIGFu
ZCBtb3JlIGV4cGxpY2l0IGBzdm4gaW5mb2AgbW9jay4KKyAgICAgICAgKFN2bi5fbG9nX3Jhbmdl
KToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9t
b2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weToKKyAgICAgICAgKEdpdEh1Yi5fY29tbWl0c19yZXNwb25z
ZSk6IFJldHVybiBhbGwgcGFyZW50IGNvbW1pdHMgdG8gcHJvdmlkZWQgcmVmLgorICAgICAgICAo
R2l0SHViLnJlcXVlc3QpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9zdm4ucHk6CisgICAgICAgIChTdm4ucmFuZ2UpOiBN
b3JlIGVmZmljaWVudGx5IGNvbXB1dGUgdGhlIHJhbmdlLgorICAgICAgICAoU3ZuLnJlcXVlc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Jl
bW90ZS9naXRfaHViLnB5OgorICAgICAgICAoR2l0SHViLnJlcXVlc3QpOiBBbGxvdyBjYWxsZXIg
dG8gZGlzYWJsZSBwYWdpbmF0aW9uLgorICAgICAgICAoR2l0SHViLmNvbW1pdCk6IFJlZHVjZSBu
dW1iZXIgb2YgcmVxdWVzdHMgcmVxdWlyZWQgdG8gY29tcHV0ZSBvcmRlci4KKyAgICAgICAgKEdp
dEh1Yi5jb21taXRzKTogVXNpbmcgdGhlIGBjb21taXRzYCBlbmRwb2ludCwgbW9yZSBlZmZpY2ll
bnRseQorICAgICAgICBjb21wdXRlIGEgcmFuZ2Ugb2YgY29tbWl0cy4KKyAgICAgICAgKiBTY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvc3ZuLnB5OgorICAg
ICAgICAoU3ZuKTogR2VuZXJhbGl6ZSBISVNUT1JZX1JFIHRvIG1hdGNoIGFueSBzaW5nbGUtbGlu
ZSBTVk4gWE1MIHJlc3BvbnNlLgorICAgICAgICAoU3ZuLl9jYWNoZV9yZXZpc2lvbnMpOiBSZXBs
YWNlIEhJU1RPUllfUkUgd2l0aCBEQVRBX1JFLgorICAgICAgICAoU3ZuLmNvbW1pdHMpOiBVc2Ug
c3ZuL3J2ciB0byBlZmZpY2llbnRseSBjb21wdXRlIGEgcmFuZ2Ugb2YgY29tbWl0cy4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5w
eToKKyAgICAgICAgKFNjbUJhc2UuX2NvbW1pdF9yYW5nZSk6IFJldHVybiBhIHBhaXIgb2YgY29t
bWl0cyByZXByZXNlbnRpbmcgdGhlIHJhbmdlCisgICAgICAgIHRoZSBjYWxsZXIgaXMgcmVxdWVz
dGluZywgYW5kIHByZWZvcm0gc29tZSBiYXNpYyBzYW5pdHkgY2hlY2tzLgorICAgICAgICAoU2Nt
QmFzZS5jb21taXRzKTogRGVjbGFyZSBmdW5jdGlvbiBpbXBsZW1lbnRlZCBieSBkZWNlbmRlbnRz
LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvZmluZF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQu
dGVzdF9jb21taXRzKToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzX2JyYW5jaCk6Cisg
ICAgICAgIChUZXN0R2l0SHViLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0R2l0SHViLnRl
c3RfY29tbWl0c19icmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdExvY2Fs
U3ZuLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0TG9jYWxTdm4udGVzdF9jb21taXRzX2Jy
YW5jaCk6CisgICAgICAgIChUZXN0UmVtb3RlU3ZuLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChU
ZXN0UmVtb3RlU3ZuLnRlc3RfY29tbWl0c19icmFuY2gpOgorCiAyMDIxLTA0LTI3ICBTYW0gU25l
ZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBUZXN0SW5wdXQgaW1t
dXRhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9z
ZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5Cmlu
ZGV4IDAwMjI1ZTE5MzZkNGViZmJkNzA0ZGE1YjU2ZDUzZTkyYmI0M2E1NWIuLjVjNWRiNjIwMDc5
NDc4M2E2NWJlODVmMzU4NDFmNjA3MjU4N2Q1ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5CkBAIC0yOSw3ICsyOSw3IEBAIGRlZiByZWFkbWUoKToK
IAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0c2NtcHknLAotICAgIHZlcnNpb249JzAuMTMuOScs
CisgICAgdmVyc2lvbj0nMC4xNC4wJywKICAgICBkZXNjcmlwdGlvbj0nTGlicmFyeSBkZXNpZ25l
ZCB0byBpbnRlcmFjdCB3aXRoIGdpdCBhbmQgc3ZuIHJlcG9zaXRvcmllcy4nLAogICAgIGxvbmdf
ZGVzY3JpcHRpb249cmVhZG1lKCksCiAgICAgY2xhc3NpZmllcnM9WwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRf
Xy5weQppbmRleCA1Y2M5OTE5NzNiOThjNGVmYTE1YTk5YzgzMTYzZmJmYTYxNGY3YzUxLi5lMThl
NjMyZDA3MzM3ZWEwMWIxM2JmNjc5ZmM3MzQ1ZTkzNDYyMjhmIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRf
Xy5weQpAQCAtNDYsNyArNDYsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICJQbGVh
c2UgaW5zdGFsbCB3ZWJraXRjb3JlcHkgd2l0aCBgcGlwIGluc3RhbGwgd2Via2l0Y29yZXB5IC0t
ZXh0cmEtaW5kZXgtdXJsIDxwYWNrYWdlIGluZGV4IFVSTD5gIgogICAgICkKIAotdmVyc2lvbiA9
IFZlcnNpb24oMCwgMTMsIDkpCit2ZXJzaW9uID0gVmVyc2lvbigwLCAxNCwgMCkKIAogQXV0b0lu
c3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnZmFzdGVuZXJzJywgVmVyc2lvbigwLCAxNSwgMCkpKQog
QXV0b0luc3RhbGwucmVnaXN0ZXIoUGFja2FnZSgnbW9ub3RvbmljJywgVmVyc2lvbigxLCA1KSkp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9jb250cmlidXRvci5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5CmluZGV4IDc1NTcyYTY4MWI3MmMyNTE1ZGVkMDky
N2M2MmQ3MjhlMGExMDg5OTUuLmZlZjk3YjZmODEwZWRjYmEzZjNmMzA4ZmVjNmNlOWVlZGEwMDA0
YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L2NvbnRyaWJ1dG9yLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5CkBAIC0zMiw3ICszMiw4IEBAIGNsYXNz
IENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgQVVUT01BVEVEX0NIRUNLSU5fUkUgPSByZS5jb21w
aWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8ZGV2bnVsbD4nKQogICAgIFVOS05PV05fQVVU
SE9SID0gcmUuY29tcGlsZShyJ0F1dGhvcjogKD9QPGF1dGhvcj4uKikgPE5vbmU+JykKICAgICBF
TVBUWV9BVVRIT1IgPSByZS5jb21waWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8PicpCi0g
ICAgU1ZOX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUocidyXGQrIFx8ICg/UDxlbWFpbD4uKikgXHwg
KD9QPGRhdGU+LiopIFx8IFxkKyBsaW5lcz8nKQorICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21w
aWxlKHIncig/UDxyZXZpc2lvbj5cZCspIFx8ICg/UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+Liop
IFx8IFxkKyBsaW5lcz8nKQorICAgIFNWTl9BVVRIT1JfUV9SRSA9IHJlLmNvbXBpbGUocidyKD9Q
PHJldmlzaW9uPlxkKykgXHwgKD9QPGVtYWlsPi4qKSBcfCAoP1A8ZGF0ZT4uKiknKQogICAgIFNW
Tl9QQVRDSF9GUk9NX1JFID0gcmUuY29tcGlsZShyJ1BhdGNoIGJ5ICg/UDxhdXRob3I+LiopIDwo
P1A8ZW1haWw+LiopPiBvbiBcZCstXGQrLVxkKycpCiAKICAgICBjbGFzcyBFbmNvZGVyKGpzb24u
SlNPTkVuY29kZXIpOgpAQCAtMTE1LDExICsxMTYsMTkgQEAgY2xhc3MgQ29udHJpYnV0b3Iob2Jq
ZWN0KToKICAgICAgICAgZW1haWwgPSBOb25lCiAgICAgICAgIGF1dGhvciA9IE5vbmUKIAotICAg
ICAgICBmb3IgZXhwcmVzc2lvbiBpbiBbY2xzLkdJVF9BVVRIT1JfUkUsIGNscy5TVk5fQVVUSE9S
X1JFLCBjbHMuU1ZOX1BBVENIX0ZST01fUkUsIGNscy5BVVRPTUFURURfQ0hFQ0tJTl9SRSwgY2xz
LlVOS05PV05fQVVUSE9SLCBjbHMuRU1QVFlfQVVUSE9SXToKKyAgICAgICAgZm9yIGV4cHJlc3Np
b24gaW4gWworICAgICAgICAgICAgY2xzLkdJVF9BVVRIT1JfUkUsCisgICAgICAgICAgICBjbHMu
U1ZOX0FVVEhPUl9SRSwKKyAgICAgICAgICAgIGNscy5TVk5fUEFUQ0hfRlJPTV9SRSwKKyAgICAg
ICAgICAgIGNscy5BVVRPTUFURURfQ0hFQ0tJTl9SRSwKKyAgICAgICAgICAgIGNscy5VTktOT1dO
X0FVVEhPUiwKKyAgICAgICAgICAgIGNscy5FTVBUWV9BVVRIT1IsCisgICAgICAgICAgICBjbHMu
U1ZOX0FVVEhPUl9RX1JFLAorICAgICAgICBdOgogICAgICAgICAgICAgbWF0Y2ggPSBleHByZXNz
aW9uLm1hdGNoKGxpbmUpCiAgICAgICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgICAgICBp
ZiAnYXV0aG9yJyBpbiBleHByZXNzaW9uLmdyb3VwaW5kZXg6Ci0gICAgICAgICAgICAgICAgICAg
IGF1dGhvciA9IG1hdGNoLmdyb3VwKCdhdXRob3InKQorICAgICAgICAgICAgICAgICAgICBhdXRo
b3IgPSBtYXRjaC5ncm91cCgnYXV0aG9yJykubHN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAg
aWYgJyhubyBhdXRob3IpJyBpbiBhdXRob3Igb3IgJ0F1dG9tYXRlZCBDaGVja2luJyBpbiBhdXRo
b3Igb3IgJ1Vua25vd24nIGluIGF1dGhvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhv
ciA9IE5vbmUKICAgICAgICAgICAgICAgICBpZiAnZW1haWwnIGluIGV4cHJlc3Npb24uZ3JvdXBp
bmRleDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2xvY2FsL2dpdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQppbmRleCBhNzVhOTk1OGU2ZWNkMjI0OGJmNTMz
MjZkMWQ1MTYzZTg3OGY3OGFiLi44MzVjMDIwMmM0ZTUwMjY1MjlhNzEyNjJjMjk3MGRkOTBjNzI4
Yzg4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS9sb2NhbC9naXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CkBAIC0yMCwxMiArMjAsMTggQEAKICMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGNhbGVuZGFyCiBpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzaXgKK2ltcG9ydCBzdWJw
cm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgcnVuLCBkZWNvcmF0b3JzLCBUaW1lb3V0RXhwaXJlZAorZnJvbSBkYXRldGltZSBpbXBvcnQg
ZGF0ZXRpbWUsIHRpbWVkZWx0YQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNv
cmF0b3JzCiBmcm9tIHdlYmtpdHNjbXB5LmxvY2FsIGltcG9ydCBTY20KIGZyb20gd2Via2l0c2Nt
cHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IsIGxvZwogCkBAIC0yODQsNiArMjkwLDk2IEBA
IGNsYXNzIEdpdChTY20pOgogICAgICAgICAgICAgbWVzc2FnZT1sb2djb250ZW50IGlmIGluY2x1
ZGVfbG9nIGVsc2UgTm9uZSwKICAgICAgICAgKQogCisgICAgZGVmIGNvbW1pdHMoc2VsZiwgaW5j
bHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUsICoqa3dhcmdzKToKKyAgICAg
ICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShpbmNsdWRlX2lkZW50aWZpZXI9aW5j
bHVkZV9pZGVudGlmaWVyLCAqKmt3YXJncykKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBs
b2cgPSBOb25lCisgICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAg
ICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycsICctLWZvcm1hdD1mdWxsZXInLCAne30u
Li57fScuZm9ybWF0KGVuZC5oYXNoLCBiZWdpbi5oYXNoKV0sCisgICAgICAgICAgICAgICAgY3dk
PXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUs
CisgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAg
ICAqKihkaWN0KGVuY29kaW5nPSd1dGYtOCcpIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkg
ZWxzZSBkaWN0KCkpCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBsb2cucG9sbCgpOgor
ICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gY29uc3RydWN0
IGhpc3RvcnkgZm9yICd7fSciLmZvcm1hdChlbmQuYnJhbmNoKSkKKworICAgICAgICAgICAgbGlu
ZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKS5yc3RyaXAoKQorICAgICAgICAgICAgcHJldmlvdXMg
PSBbZW5kXQorICAgICAgICAgICAgd2hpbGUgbGluZToKKyAgICAgICAgICAgICAgICBpZiBub3Qg
bGluZS5zdGFydHN3aXRoKCdjb21taXQgJyk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9T
RXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBgZ2l0IGxvZ2AgZm9ybWF0JykKKyAgICAgICAgICAgICAg
ICBicmFuY2hfcG9pbnQgPSBwcmV2aW91c1swXS5icmFuY2hfcG9pbnQKKyAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyID0gcHJldmlvdXNbMF0uaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIGlm
IGxpbmUuc3BsaXQoJyAnKVstMV0gIT0gcHJldmlvdXNbMF0uaGFzaDoKKyAgICAgICAgICAgICAg
ICAgICAgaWRlbnRpZmllciAtPSAxCisgICAgICAgICAgICAgICAgaGFzaCA9IGxpbmUuc3BsaXQo
JyAnKVstMV0KKworICAgICAgICAgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyOgorICAgICAgICAg
ICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAgICAgICAgICAgICAgICAg
IGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAgIGF1dGhvciA9IE5vbmUKKyAg
ICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBOb25lCisgICAgICAgICAgICAgICAgbGluZSA9IGxv
Zy5zdGRvdXQucmVhZGxpbmUoKS5yc3RyaXAoKQorICAgICAgICAgICAgICAgIHdoaWxlIGxpbmU6
CisgICAgICAgICAgICAgICAgICAgIHNwbGl0ID0gbGluZS5zcGxpdCgnOiAnKQorICAgICAgICAg
ICAgICAgICAgICBpZiBzcGxpdFswXSA9PSAnQXV0aG9yJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dGhvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhsaW5lKQorICAgICAgICAgICAg
ICAgICAgICBlbGlmIHNwbGl0WzBdID09ICdDb21taXREYXRlJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHR6X2RpZmYgPSBsaW5lLnNwbGl0KCcgJylbLTFdCisgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRlID0gZGF0ZXRpbWUuc3RycHRpbWUoc3BsaXRbMV0ubHN0cmlwKClbOi1sZW4odHpf
ZGlmZildLCAnJWEgJWIgJWQgJUg6JU06JVMgJVkgJykKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGUgKz0gdGltZWRlbHRhKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzPWlu
dCh0el9kaWZmWzE6M10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM9aW50
KHR6X2RpZmZbMzo1XSksCisgICAgICAgICAgICAgICAgICAgICAgICApICogKDEgaWYgdHpfZGlm
ZlswXSA9PSAnLScgZWxzZSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9
IGludChjYWxlbmRhci50aW1lZ20oZGF0ZS50aW1ldHVwbGUoKSkpIC0gdGltZS50aW1lem9uZQor
ICAgICAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpLnJzdHJpcCgp
CisKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycKKyAgICAgICAgICAgICAgICBsaW5lID0g
bG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgd2hpbGUgbGluZSBhbmQgbm90
IGxpbmUuc3RhcnRzd2l0aCgnY29tbWl0ICcpOgorICAgICAgICAgICAgICAgICAgICBpZiBsZW4o
bGluZSkgPiA0OgorICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSBsaW5lWzQ6XQor
ICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPSAnXG4nCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5l
KCkKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorCisgICAgICAgICAgICAg
ICAgbWF0Y2hlcyA9IHNlbGYuR0lUX1NWTl9SRVZJU0lPTi5maW5kYWxsKG1lc3NhZ2UpCisgICAg
ICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQobWF0Y2hlc1stMV0uc3BsaXQoJ0AnKVswXSkgaWYg
bWF0Y2hlcyBlbHNlIE5vbmUKKworICAgICAgICAgICAgICAgIGNvbW1pdCA9IENvbW1pdCgKKyAg
ICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLmlkLAorICAgICAgICAgICAgICAg
ICAgICBoYXNoPWhhc2gsCisgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPXJldmlzaW9uLAor
ICAgICAgICAgICAgICAgICAgICBicmFuY2g9ZW5kLmJyYW5jaCBpZiBpZGVudGlmaWVyIGFuZCBi
cmFuY2hfcG9pbnQgZWxzZSBzZWxmLmRlZmF1bHRfYnJhbmNoLAorICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyPWlkZW50aWZpZXIgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50PWJyYW5jaF9wb2ludCBpZiBpbmNsdWRl
X2lkZW50aWZpZXIgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9dGlt
ZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICBhdXRob3I9YXV0aG9yLAorICAgICAgICAgICAg
ICAgICAgICBvcmRlcj0wLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UucnN0
cmlwKCkgaWYgaW5jbHVkZV9sb2cgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICAgICBpZiBjb21taXQuaGFzaCA9PSBwcmV2aW91c1swXS5oYXNoOgorICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c1swXSA9IGNvbW1pdAorICAgICAgICAgICAgICAgIGVsaWYgY29t
bWl0LnRpbWVzdGFtcCA9PSBwcmV2aW91c1swXS50aW1lc3RhbXA6CisgICAgICAgICAgICAgICAg
ICAgIGZvciBjYWNoZWQgaW4gcHJldmlvdXM6CisgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZWQub3JkZXIgKz0gMQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cy5hcHBlbmQoY29tbWl0
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZvciBjYWNoZWQg
aW4gcHJldmlvdXM6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBjYWNoZWQKKyAgICAg
ICAgICAgICAgICAgICAgcHJldmlvdXMgPSBbY29tbWl0XQorCisgICAgICAgICAgICBmb3IgY2Fj
aGVkIGluIHByZXZpb3VzOgorICAgICAgICAgICAgICAgIGNhY2hlZC5vcmRlciArPSBiZWdpbi5v
cmRlcgorICAgICAgICAgICAgICAgIHlpZWxkIGNhY2hlZAorICAgICAgICBmaW5hbGx5OgorICAg
ICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgIGxvZy5raWxsKCkKKwogICAgIGRlZiBm
aW5kKHNlbGYsIGFyZ3VtZW50LCBpbmNsdWRlX2xvZz1UcnVlLCBpbmNsdWRlX2lkZW50aWZpZXI9
VHJ1ZSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3VtZW50LCBzaXguc3RyaW5nX3R5
cGVzKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGVjdGVkICdhcmd1bWVudCcg
dG8gYmUgYSBzdHJpbmcsIG5vdCAne30nIi5mb3JtYXQodHlwZShhcmd1bWVudCkpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9j
YWwvc3ZuLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvbG9jYWwvc3ZuLnB5CmluZGV4IDFjOTUwMjVkMDlhNWU2N2JjNjI3OTViNjdlNjkxMjk5Mjlj
ZWNhYWEuLjRmM2Q0MzJjMmNjN2RjODVmNWNiMTJlOWIwNGI2YzMwMzI0MWU0NzUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2Fs
L3N2bi5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9sb2NhbC9zdm4ucHkKQEAgLTM5Myw2ICszOTMsODggQEAgY2xhc3MgU3ZuKFNjbSk6CiAg
ICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsCiAgICAgICAgICkKIAorICAgIGRlZiBjb21taXRz
KHNlbGYsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlLCAqKmt3YXJn
cyk6CisgICAgICAgIGJlZ2luLCBlbmQgPSBzZWxmLl9jb21taXRfcmFuZ2UoaW5jbHVkZV9pZGVu
dGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllciwgKiprd2FyZ3MpCisgICAgICAgIHByZXZpb3VzID0g
ZW5kCisgICAgICAgIGlmIGVuZC5icmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBvciAnLycg
aW4gZW5kLmJyYW5jaDoKKyAgICAgICAgICAgIGJyYW5jaF9hcmcgPSAnXi97fScuZm9ybWF0KGVu
ZC5icmFuY2gpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBicmFuY2hfYXJnID0gJ14vYnJh
bmNoZXMve30nLmZvcm1hdChlbmQuYnJhbmNoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGxvZyA9IE5vbmUKKyAgICAgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9wZW4oCisgICAgICAg
ICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgJy1yJywgJ3t9Ont9Jy5mb3JtYXQo
CisgICAgICAgICAgICAgICAgICAgIGVuZC5yZXZpc2lvbiwgYmVnaW4ucmV2aXNpb24sCisgICAg
ICAgICAgICAgICAgKSwgYnJhbmNoX2FyZ10gKyAoW10gaWYgaW5jbHVkZV9sb2cgZWxzZSBbJy1x
J10pLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9j
ZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgKiooZGljdChlbmNvZGluZz0ndXRmLTgnKSBpZiBz
eXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVsc2UgZGljdCgpKQorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2Vw
dGlvbignRmFpbGVkIHRvIGZpbmQgY29tbWl0cyBiZXR3ZWVuIHt9IGFuZCB7fSBvbiB7fScuZm9y
bWF0KGJlZ2luLCBlbmQsIGJyYW5jaF9hcmcpKQorICAgICAgICAgICAgY3VycmVudCA9IE5vbmUK
KworICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAg
d2hpbGUgbGluZToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorICAgICAg
ICAgICAgICAgIGlmIGxpbmUgPT0gJy0nICogNzI6CisgICAgICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50Lm1lc3NhZ2U6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC5tZXNzYWdlID0gY3VycmVudC5tZXNzYWdl
LnJzdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdXJyZW50CisgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnQgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBs
b2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgICAgICBpZiBjdXJyZW50IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG1hdGNo
ID0gQ29udHJpYnV0b3IuU1ZOX0FVVEhPUl9SRS5tYXRjaChsaW5lKSBvciBDb250cmlidXRvci5T
Vk5fQVVUSE9SX1FfUkUubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG1h
dGNoOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUo
KQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAg
ICBicmFuY2hfcG9pbnQgPSBwcmV2aW91cy5icmFuY2hfcG9pbnQgaWYgaW5jbHVkZV9pZGVudGlm
aWVyIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gcHJldmlvdXMu
aWRlbnRpZmllciBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lCisgICAgICAgICAgICAg
ICAgICAgIGlmIGludChtYXRjaC5ncm91cCgncmV2aXNpb24nKSkgIT0gcHJldmlvdXMucmV2aXNp
b246CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIC09IDEKKyAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9p
bnQgPSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgdHpfZGlmZiA9IG1hdGNoLmdyb3VwKCdk
YXRlJykuc3BsaXQoJyAnLCAyKVstMV0KKyAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGRhdGV0
aW1lLnN0cnB0aW1lKG1hdGNoLmdyb3VwKCdkYXRlJylbOi1sZW4odHpfZGlmZildLCAnJVktJW0t
JWQgJUg6JU06JVMgJykKKyAgICAgICAgICAgICAgICAgICAgZGF0ZSArPSB0aW1lZGVsdGEoCisg
ICAgICAgICAgICAgICAgICAgICAgICBob3Vycz1pbnQodHpfZGlmZlsxOjNdKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1pbnV0ZXM9aW50KHR6X2RpZmZbMzo1XSksCisgICAgICAgICAgICAg
ICAgICAgICkgKiAoMSBpZiB0el9kaWZmWzBdID09ICctJyBlbHNlIC0xKQorCisgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnQgPSBDb21taXQoCisgICAgICAgICAgICAgICAgICAgICAgICByZXBv
c2l0b3J5X2lkPXNlbGYuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj1pbnQo
bWF0Y2guZ3JvdXAoJ3JldmlzaW9uJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNo
PWVuZC5icmFuY2ggaWYgYnJhbmNoX3BvaW50IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5jaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9aWRlbnRpZmllciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9pbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lc3RhbXA9aW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0dXBsZSgpKSks
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IuZnJvbV9zY21fbG9n
KGxpbmUsIHNlbGYuY29udHJpYnV0b3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2U9JycgaWYgaW5jbHVkZV9sb2cgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY3VycmVudAorICAgICAgICAgICAgICAgICAg
ICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgICAgICBpZiBpbmNsdWRlX2xvZyBhbmQgY3VycmVudCBhbmQgKGN1
cnJlbnQubWVzc2FnZSBvciBsaW5lKToKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudC5tZXNz
YWdlICs9ICd7fVxuJy5mb3JtYXQobGluZSkKKyAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0
ZG91dC5yZWFkbGluZSgpCisKKyAgICAgICAgICAgIGlmIGN1cnJlbnQ6CisgICAgICAgICAgICAg
ICAgaWYgY3VycmVudC5tZXNzYWdlOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50Lm1lc3Nh
Z2UgPSBjdXJyZW50Lm1lc3NhZ2UucnN0cmlwKCkKKyAgICAgICAgICAgICAgICB5aWVsZCBjdXJy
ZW50CisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIGxvZzoKKyAgICAgICAgICAg
ICAgICBsb2cua2lsbCgpCisKICAgICBkZWYgY2hlY2tvdXQoc2VsZiwgYXJndW1lbnQpOgogICAg
ICAgICBjb21taXQgPSBzZWxmLmZpbmQoYXJndW1lbnQpCiAgICAgICAgIGlmIG5vdCBjb21taXQ6
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9tb2Nrcy9sb2NhbC9naXQucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkKaW5kZXggMTRlZGNiODg4NWJlMzFm
MTM4YjA0MGZmYmFmYmQxNzJhMzNkNDE0Ni4uZDE5NmQyN2VkYTk0NzFkOGM5ZjcyMGE1YTEzYzMz
MDdkNDk5MWVkYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQpAQCAtMjMs
NiArMjMsNyBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgdGlt
ZQogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IG1vY2tzLCBPdXRwdXRDYXB0dXJlLCBTdHJpbmdJTwpAQCAtMjI4LDcgKzIyOSw3IEBAIG5v
dGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmFuY2g9c2VsZi5icmFuY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXV0aG9yPXNlbGYuZmluZChhcmdzWzJdKS5hdXRob3IubmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbWFpbD1zZWxmLmZpbmQoYXJnc1syXSkuYXV0aG9yLmVtYWlsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzZWxmLmZp
bmQoYXJnc1syXSkudGltZXN0YW1wKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPWRhdGV0aW1lLnV0Y2Zyb210aW1lc3Rh
bXAoc2VsZi5maW5kKGFyZ3NbMl0pLnRpbWVzdGFtcCArIHRpbWUudGltZXpvbmUpLnN0cmZ0aW1l
KCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAwMCcpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZz0nXG4nLmpvaW4oWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxzZSAnJyBmb3IgbGluZSBpbiBzZWxmLmZpbmQoYXJn
c1syXSkubWVzc2FnZS5zcGxpdGxpbmVzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSArIChbJyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3Ry
dW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KApAQCAt
MjM5LDYgKzI0MCwzMyBAQCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgKSwK
ICAgICAgICAgICAgICAgICApIGlmIHNlbGYuZmluZChhcmdzWzJdKSBlbHNlIG1vY2tzLlByb2Nl
c3NDb21wbGV0aW9uKHJldHVybmNvZGU9MTI4KSwKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnBy
b2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy0t
Zm9ybWF0PWZ1bGxlcicsIHJlLmNvbXBpbGUocicuK1wuXC5cLi4rJyksCisgICAgICAgICAgICAg
ICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdz
LCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCisgICAgICAgICAgICAgICAgICAg
IHJldHVybmNvZGU9MCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PSdcbicuam9pbihbCisg
ICAgICAgICAgICAgICAgICAgICAgICAnY29tbWl0IHtoYXNofVxuJworICAgICAgICAgICAgICAg
ICAgICAgICAgJ0F1dGhvcjogICAgIHthdXRob3J9IDx7ZW1haWx9PlxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgJ0F1dGhvckRhdGU6IHtkYXRlfVxuJworICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NvbW1pdDogICAgIHthdXRob3J9IDx7ZW1haWx9PlxuJworICAgICAgICAgICAgICAgICAg
ICAgICAgJ0NvbW1pdERhdGU6IHtkYXRlfVxuJworICAgICAgICAgICAgICAgICAgICAgICAgJ1xu
e2xvZ30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdC5o
YXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcj1jb21taXQuYXV0aG9yLm5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw9Y29tbWl0LmF1dGhvci5lbWFp
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPWRhdGV0aW1lLnV0Y2Zyb210aW1l
c3RhbXAoY29tbWl0LnRpbWVzdGFtcCArIHRpbWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAl
ZCAlSDolTTolUyAlWSArMDAwMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0n
XG4nLmpvaW4oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyAgICAnICsgbGlu
ZSkgaWYgbGluZSBlbHNlICcnIGZvciBsaW5lIGluIGNvbW1pdC5tZXNzYWdlLnNwbGl0bGluZXMo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gKyAoWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnICAgIGdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLnt9L3JlcG9zaXRvcnkv
e30vdHJ1bmtAe30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjJy5mb3JtYXQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW90ZS5zcGxpdCgn
QCcpWy0xXS5zcGxpdCgnOicpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICldIGlm
IGdpdF9zdm4gZWxzZSBbXSksCisgICAgICAgICAgICAgICAgICAgICAgICApKSBmb3IgY29tbWl0
IGluIHNlbGYuY29tbWl0c19pbl9yYW5nZShhcmdzWzNdLnNwbGl0KCcuLi4nKVstMV0sIGFyZ3Nb
M10uc3BsaXQoJy4uLicpWzBdKQorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAg
ICAgICkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAg
ICAgICAgc2VsZi5leGVjdXRhYmxlLCAncmV2LWxpc3QnLCAnLS1jb3VudCcsICctLW5vLW1lcmdl
cycsIHJlLmNvbXBpbGUocicuKycpLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCkBA
IC00NjMsMyArNDkxLDMyIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4K
ICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQuZ2V0
dmFsdWUoKSwKICAgICAgICAgKQorCisgICAgZGVmIGNvbW1pdHNfaW5fcmFuZ2Uoc2VsZiwgYmVn
aW4sIGVuZCk6CisgICAgICAgIGJyYW5jaGVzID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCisgICAg
ICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1zKCk6CisgICAgICAg
ICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAg
ICAgIGlmIGNvbW1pdC5oYXNoID09IGVuZDoKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMu
aW5zZXJ0KDAsIGJyYW5jaCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAg
IGlmIGxlbihicmFuY2hlcykgPiAxOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAg
aW5fcmFuZ2UgPSBGYWxzZQorICAgICAgICBwcmV2aW91cyA9IE5vbmUKKyAgICAgICAgZm9yIGJy
YW5jaCBpbiBicmFuY2hlczoKKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2Vs
Zi5jb21taXRzW2JyYW5jaF0pOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGVu
ZDoKKyAgICAgICAgICAgICAgICAgICAgaW5fcmFuZ2UgPSBUcnVlCisgICAgICAgICAgICAgICAg
aWYgaW5fcmFuZ2UgYW5kIChub3QgcHJldmlvdXMgb3IgY29tbWl0Lmhhc2ggIT0gcHJldmlvdXMu
aGFzaCk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGNvbW1pdAorICAgICAgICAgICAgICAg
IHByZXZpb3VzID0gY29tbWl0CisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2ggPT0gYmVn
aW46CisgICAgICAgICAgICAgICAgICAgIGluX3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAgIGlu
X3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAgIGlmIHByZXZpb3VzIGFuZCBicmFuY2ggIT0gc2Vs
Zi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIHJldmVyc2Vk
KHNlbGYuY29tbWl0c1tzZWxmLmRlZmF1bHRfYnJhbmNoXSk6CisgICAgICAgICAgICAgICAgICAg
IGlmIHByZXZpb3VzLmJyYW5jaF9wb2ludCA9PSBjb21taXQuaWRlbnRpZmllcjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVuZCA9IGNvbW1pdC5oYXNoCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9s
b2NhbC9zdm4ucHkKaW5kZXggNTA2Y2UwYTQ1OWZhZWE0ODY1YjYxZGU1ZDU0MmNhNjhjNmM1NWNm
YS4uMzNjN2ZiZjg4NDAyMDFkMmZiYzdmNDVhMjg4M2ZlYmRmOWZkYTlmYiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9j
YWwvc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weQpAQCAtNjUsMTMgKzY1LDE3IEBAIGNsYXNzIFN2biht
b2Nrcy5TdWJwcm9jZXNzKToKIAogICAgICAgICBzdXBlcihTdm4sIHNlbGYpLl9faW5pdF9fKAog
ICAgICAgICAgICAgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKLSAgICAgICAgICAgICAgICBzZWxm
LmV4ZWN1dGFibGUsICdpbmZvJywKLSAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAotICAg
ICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9pbmZv
KGN3ZD1rd2FyZ3MuZ2V0KCdjd2QnLCAnJykpCi0gICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9j
ZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2luZm8nLCBzZWxm
LkJSQU5DSF9SRSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9pbmZvKGJyYW5jaD1z
ZWxmLkJSQU5DSF9SRS5tYXRjaChhcmdzWzJdKS5ncm91cCgnYnJhbmNoJyksIGN3ZD1rd2FyZ3Mu
Z2V0KCdjd2QnLCAnJykpCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAor
ICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2luZm8nLCAnLXInLCByZS5jb21waWxl
KHInXGQrJyksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5faW5mbyhyZXZpc2lvbj1p
bnQoYXJnc1szXSksIGN3ZD1rd2FyZ3MuZ2V0KCdjd2QnLCAnJykpCisgICAgICAgICAgICApLCBt
b2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwg
J2luZm8nLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2luZm8oY3dkPWt3YXJncy5n
ZXQoJ2N3ZCcsICcnKSkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAg
ICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbGlzdCcsICdeL2JyYW5jaGVzJywKICAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMTE4LDYgKzEyMiwxNCBAQCBjbGFzcyBT
dm4obW9ja3MuU3VicHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1zZWxmLkJS
QU5DSF9SRS5tYXRjaChhcmdzWzZdKS5ncm91cCgnYnJhbmNoJyksCiAgICAgICAgICAgICAgICAg
ICAgIHJldmlzaW9uPWFyZ3NbNV0sCiAgICAgICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3Rl
ZCBlbHNlIG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKHJldHVybmNvZGU9MSkKKyAgICAgICAgICAg
ICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRh
YmxlLCAnbG9nJywgJy1yJywgcmUuY29tcGlsZShyJ1xkKzpcZCsnKSwgc2VsZi5CUkFOQ0hfUkUs
CisgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0
b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5fbG9nX3JhbmdlKAorICAgICAgICAgICAg
ICAgICAgICBicmFuY2g9c2VsZi5CUkFOQ0hfUkUubWF0Y2goYXJnc1s0XSkuZ3JvdXAoJ2JyYW5j
aCcpLAorICAgICAgICAgICAgICAgICAgICBlbmQ9aW50KGFyZ3NbM10uc3BsaXQoJzonKVswXSks
CisgICAgICAgICAgICAgICAgICAgIGJlZ2luPWludChhcmdzWzNdLnNwbGl0KCc6JylbLTFdKSwK
KyAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24ocmV0dXJuY29kZT0xKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5S
b3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICd1cCcsICctcicsIHJlLmNv
bXBpbGUocidcZCsnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLApAQCAtMjA0LDYg
KzIxNiwyOCBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAg
KSwKICAgICAgICAgKQogCisgICAgZGVmIF9sb2dfcmFuZ2Uoc2VsZiwgYnJhbmNoPU5vbmUsIGVu
ZD1Ob25lLCBiZWdpbj1Ob25lKToKKyAgICAgICAgaWYgZW5kIDwgYmVnaW46CisgICAgICAgICAg
ICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQorCisgICAgICAg
IG91dHB1dCA9ICcnCisgICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAgICBmb3IgYiBpbiBb
YnJhbmNoLCAndHJ1bmsnXToKKyAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gcmV2ZXJzZWQo
c2VsZi5jb21taXRzLmdldChiLCBbXSkpOgorICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZS5y
ZXZpc2lvbiA+IGVuZCBvciBjYW5kaWRhdGUucmV2aXNpb24gPCBiZWdpbjoKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBwcmV2aW91cyBhbmQgcHJldmlv
dXMucmV2aXNpb24gPD0gY2FuZGlkYXRlLnJldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY2FuZGlkYXRlCisgICAgICAgICAg
ICAgICAgb3V0cHV0ICs9ICgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICAg
ICd7bGluZX0gfCB7bGluZXN9IGxpbmVzXG5cbicKKyAgICAgICAgICAgICAgICAgICAgJ3tsb2d9
XG4nKS5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lPXNlbGYubG9nX2xpbmUo
Y2FuZGlkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzPWxlbihjYW5kaWRhdGUu
bWVzc2FnZS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9nPWNhbmRp
ZGF0ZS5tZXNzYWdlCisgICAgICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gbW9ja3MuUHJv
Y2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wLCBzdGRvdXQ9b3V0cHV0KQorCiAgICAgZGVmIGZp
bmQoc2VsZiwgYnJhbmNoPU5vbmUsIHJldmlzaW9uPU5vbmUpOgogICAgICAgICBpZiBub3QgYnJh
bmNoIGFuZCBub3QgcmV2aXNpb246CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5oZWFkCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9t
b2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9naXRfaHViLnB5CmluZGV4IDAwNzhjMTczODJk
ODcwMjIxNjJjZDRjZmE4ZmViNGYxYTkwNTQwODcuLmI3YTcwMWJmOGNmNTU1ZTMwYTYxZGE2YWMw
YWE2NDI3ZTg4ZjkzYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9naXRfaHViLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9naXRf
aHViLnB5CkBAIC0xMzIsNiArMTMyLDUyIEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6
CiAgICAgICAgICAgICB9IGZvciByZWZlcmVuY2UsIGNvbW1pdCBpbiAoc2VsZi5jb21taXRzIGlm
IHR5cGUgPT0gJ2JyYW5jaGVzJyBlbHNlIHNlbGYudGFncykuaXRlbXMoKQogICAgICAgICBdLCB1
cmw9dXJsKQogCisgICAgZGVmIF9jb21taXRzX3Jlc3BvbnNlKHNlbGYsIHVybCwgcmVmKToKKyAg
ICAgICAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQorCisgICAgICAg
IGJhc2UgPSBzZWxmLmNvbW1pdChyZWYpCisgICAgICAgIGlmIG5vdCBiYXNlOgorICAgICAgICAg
ICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlKAorICAgICAgICAgICAgICAgIHN0YXR1c19jb2RlPTQw
NCwKKyAgICAgICAgICAgICAgICB1cmw9dXJsLAorICAgICAgICAgICAgICAgIHRleHQ9anNvbi5k
dW1wcyhkaWN0KG1lc3NhZ2U9J05vIGNvbW1pdCBmb3VuZCBmb3IgU0hBOiB7fScuZm9ybWF0KHJl
ZikpKSwKKyAgICAgICAgICAgICkKKworICAgICAgICByZXNwb25zZSA9IFtdCisgICAgICAgIGZv
ciBicmFuY2ggaW4gW3NlbGYuZGVmYXVsdF9icmFuY2hdIGlmIGJhc2UuYnJhbmNoID09IHNlbGYu
ZGVmYXVsdF9icmFuY2ggZWxzZSBbYmFzZS5icmFuY2gsIHNlbGYuZGVmYXVsdF9icmFuY2hdOgor
ICAgICAgICAgICAgaW5fcmFuZ2UgPSBGYWxzZQorICAgICAgICAgICAgcHJldmlvdXMgPSBOb25l
CisgICAgICAgICAgICBmb3IgY29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0c1ticmFuY2hd
KToKKyAgICAgICAgICAgICAgICBpZiBjb21taXQuaGFzaCA9PSByZWY6CisgICAgICAgICAgICAg
ICAgICAgIGluX3JhbmdlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9yYW5nZToK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9
IGNvbW1pdAorICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCh7CisgICAgICAgICAgICAg
ICAgICAgICdzaGEnOiBjb21taXQuaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgJ2NvbW1pdCc6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3InOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ25hbWUnOiBjb21taXQuYXV0aG9yLm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2VtYWlsJzogY29tbWl0LmF1dGhvci5lbWFpbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZGF0ZSc6IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoY29tbWl0LnRp
bWVzdGFtcCAtIHRpbWVkZWx0YShob3Vycz03KS5zZWNvbmRzKS5zdHJmdGltZSgnJVktJW0tJWRU
JUg6JU06JVNaJyksCisgICAgICAgICAgICAgICAgICAgICAgICB9LCAnY29tbWl0dGVyJzogewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogY29tbWl0LmF1dGhvci5uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbCc6IGNvbW1pdC5hdXRob3IuZW1haWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGUnOiBkYXRldGltZS51dGNmcm9tdGlt
ZXN0YW1wKGNvbW1pdC50aW1lc3RhbXAgLSB0aW1lZGVsdGEoaG91cnM9Nykuc2Vjb25kcykuc3Ry
ZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicpLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwg
J21lc3NhZ2UnOiBjb21taXQubWVzc2FnZSArICgnXG5naXQtc3ZuLWlkOiBodHRwczovL3N2bi5l
eGFtcGxlLm9yZy9yZXBvc2l0b3J5L3dlYmtpdC97fUB7fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIz
Yy1kNTI2OTFiNGRiZmNcbicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
cnVuaycgaWYgY29tbWl0LmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGVsc2UgY29tbWl0
LmJyYW5jaCwgY29tbWl0LnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgKSBpZiBj
b21taXQucmV2aXNpb24gZWxzZSAnJyksCisgICAgICAgICAgICAgICAgICAgICAgICAndXJsJzog
J2h0dHBzOi8ve30vZ2l0L2NvbW1pdHMve30nLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUsIGNvbW1p
dC5oYXNoKSwKKyAgICAgICAgICAgICAgICAgICAgfSwgJ3VybCc6ICdodHRwczovL3t9L2NvbW1p
dHMve30nLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUsIGNvbW1pdC5oYXNoKSwKKyAgICAgICAgICAg
ICAgICAgICAgJ2h0bWxfdXJsJzogJ2h0dHBzOi8ve30vY29tbWl0L3t9Jy5mb3JtYXQoc2VsZi5y
ZW1vdGUsIGNvbW1pdC5oYXNoKSwKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgaWYg
YnJhbmNoICE9IHNlbGYuZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICAgICAgZm9yIGNvbW1p
dCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbc2VsZi5kZWZhdWx0X2JyYW5jaF0pOgorICAgICAg
ICAgICAgICAgICAgICBpZiBwcmV2aW91cy5icmFuY2hfcG9pbnQgPT0gY29tbWl0LmlkZW50aWZp
ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICByZWYgPSBjb21taXQuaGFzaAorCisgICAgICAg
IHJldHVybiBtb2Nrcy5SZXNwb25zZS5mcm9tSnNvbihyZXNwb25zZSwgdXJsPXVybCkKKwogICAg
IGRlZiBfY29tbWl0X3Jlc3BvbnNlKHNlbGYsIHVybCwgcmVmKToKICAgICAgICAgZnJvbSBkYXRl
dGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQogCkBAIC0xNTMsOSArMTk5LDkgQEAgY2xh
c3MgR2l0SHViKG1vY2tzLlJlcXVlc3RzKToKICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBj
b21taXQuYXV0aG9yLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICdlbWFpbCc6IGNvbW1pdC5h
dXRob3IuZW1haWwsCiAgICAgICAgICAgICAgICAgICAgICdkYXRlJzogZGF0ZXRpbWUudXRjZnJv
bXRpbWVzdGFtcChjb21taXQudGltZXN0YW1wIC0gdGltZWRlbHRhKGhvdXJzPTcpLnNlY29uZHMp
LnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolU1onKSwKLSAgICAgICAgICAgICAgICB9LCAnbWVz
c2FnZSc6IGNvbW1pdC5tZXNzYWdlICsgJ1xuZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBs
ZS5vcmcvcmVwb3NpdG9yeS93ZWJraXQve31Ae30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUy
NjkxYjRkYmZjXG4nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICB9LCAnbWVzc2FnZSc6IGNvbW1p
dC5tZXNzYWdlICsgKCdcbmdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9z
aXRvcnkvd2Via2l0L3t9QHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmY1xu
Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICd0cnVuaycgaWYgY29tbWl0LmJyYW5jaCA9
PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGVsc2UgY29tbWl0LmJyYW5jaCwgY29tbWl0LnJldmlzaW9u
LAotICAgICAgICAgICAgICAgICkgaWYgY29tbWl0LnJldmlzaW9uIGVsc2UgJycsCisgICAgICAg
ICAgICAgICAgKSBpZiBjb21taXQucmV2aXNpb24gZWxzZSAnJyksCiAgICAgICAgICAgICAgICAg
J3VybCc6ICdodHRwczovL3t9L2dpdC9jb21taXRzL3t9Jy5mb3JtYXQoc2VsZi5hcGlfcmVtb3Rl
LCBjb21taXQuaGFzaCksCiAgICAgICAgICAgICB9LCAndXJsJzogJ2h0dHBzOi8ve30vY29tbWl0
cy97fScuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSwgY29tbWl0Lmhhc2gpLAogICAgICAgICAgICAg
J2h0bWxfdXJsJzogJ2h0dHBzOi8ve30vY29tbWl0L3t9Jy5mb3JtYXQoc2VsZi5yZW1vdGUsIGNv
bW1pdC5oYXNoKSwKQEAgLTIzMywxMCArMjc5LDExIEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1
ZXN0cyk6CiAgICAgICAgICAgICApLCB1cmw9dXJsCiAgICAgICAgICkKIAotICAgIGRlZiByZXF1
ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBkYXRhPU5vbmUsICoqa3dhcmdzKToKKyAgICBkZWYgcmVx
dWVzdChzZWxmLCBtZXRob2QsIHVybCwgZGF0YT1Ob25lLCBwYXJhbXM9Tm9uZSwgKiprd2FyZ3Mp
OgogICAgICAgICBpZiBub3QgdXJsLnN0YXJ0c3dpdGgoJ2h0dHA6Ly8nKSBhbmQgbm90IHVybC5z
dGFydHN3aXRoKCdodHRwczovLycpOgogICAgICAgICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNl
LmNyZWF0ZTQwNCh1cmwpCiAKKyAgICAgICAgcGFyYW1zID0gcGFyYW1zIG9yIHt9CiAgICAgICAg
IHN0cmlwcGVkX3VybCA9IHVybC5zcGxpdCgnOi8vJylbLTFdCiAKICAgICAgICAgIyBUb3AtbGV2
ZWwgQVBJIHJlcXVlc3QKQEAgLTI0Nyw2ICsyOTQsMTAgQEAgY2xhc3MgR2l0SHViKG1vY2tzLlJl
cXVlc3RzKToKICAgICAgICAgaWYgc3RyaXBwZWRfdXJsIGluIFsne30vYnJhbmNoZXMnLmZvcm1h
dChzZWxmLmFwaV9yZW1vdGUpLCAne30vdGFncycuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSldOgog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RfcmVmc19yZXNwb25zZSh1cmw9dXJsLCB0eXBl
PXN0cmlwcGVkX3VybC5zcGxpdCgnLycpWy0xXSkKIAorICAgICAgICAjIFJldHVybiBhIGNvbW1p
dCBhbmQgaXQncyBwYXJlbnRzCisgICAgICAgIGlmIHN0cmlwcGVkX3VybCA9PSAne30vY29tbWl0
cycuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSkgYW5kIHBhcmFtcy5nZXQoJ3NoYScpOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdHNfcmVzcG9uc2UodXJsPXVybCwgcmVmPXBhcmFtc1sn
c2hhJ10pCisKICAgICAgICAgIyBFeHRyYWN0IHNpbmdsZSBjb21taXQKICAgICAgICAgaWYgc3Ry
aXBwZWRfdXJsLnN0YXJ0c3dpdGgoJ3t9L2NvbW1pdHMvJy5mb3JtYXQoc2VsZi5hcGlfcmVtb3Rl
KSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0X3Jlc3BvbnNlKHVybD11cmwsIHJl
Zj1zdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMV0pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvc3ZuLnB5IGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVt
b3RlL3N2bi5weQppbmRleCA3NDdlMGJkMWM1NjhmNGRiZmE4Mjc2ZWE1Mzg1ZjQ3NzZhMDAyMjhh
Li41ZjJmNGJhYWZmMjkxZmVlMDA5ZDJjZTQwMjBlYzBiYmQ2MzYwMWZiIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1v
dGUvc3ZuLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L21vY2tzL3JlbW90ZS9zdm4ucHkKQEAgLTEwNiwzMCArMTA2LDE3IEBAIGNsYXNzIFN2
bihtb2Nrcy5SZXF1ZXN0cyk6CiAKICAgICAgICAgaWYgY2F0ZWdvcnkgYW5kIGNhdGVnb3J5LnN0
YXJ0c3dpdGgoJ2JyYW5jaGVzLycpOgogICAgICAgICAgICAgY2F0ZWdvcnkgPSBjYXRlZ29yeS5z
cGxpdCgnLycpWy0xXQotCi0gICAgICAgIGlmIG5vdCBjYXRlZ29yeToKLSAgICAgICAgICAgIGZv
ciBjb21taXRzIGluIHNlbGYuY29tbWl0cy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBmb3Ig
Y29tbWl0IGluIGNvbW1pdHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5yZXZpc2lv
biA9PSBzdGFydDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gY29tbWl0LmJy
YW5jaAotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgY2F0
ZWdvcnk6Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICByZXN1bHQgPSBbY29tbWl0
IGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2NhdGVnb3J5XSldCi0gICAgICAg
IGlmIHNlbGYuY29tbWl0c1tjYXRlZ29yeV1bMF0uYnJhbmNoX3BvaW50OgotICAgICAgICAgICAg
cmVzdWx0ICs9IFtjb21taXQgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbJ3Ry
dW5rJ11bOnNlbGYuY29tbWl0c1tjYXRlZ29yeV1bMF0uYnJhbmNoX3BvaW50XSldCi0KLSAgICAg
ICAgZm9yIGluZGV4IGluIHJldmVyc2VkKHJhbmdlKGxlbihyZXN1bHQpKSk6Ci0gICAgICAgICAg
ICBpZiByZXN1bHRbaW5kZXhdLnJldmlzaW9uIDwgZW5kOgotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHJlc3VsdFs6aW5kZXhdCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IGlmIHJlc3VsdFtpbmRleF0ucmV2aXNpb24gPiBzdGFydDoKLSAgICAgICAgICAgICAgICByZXN1
bHQgPSByZXN1bHRbaW5kZXg6XQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgcmV0
dXJuIHJlc3VsdAorICAgICAgICBjYXRlZ29yeSA9IFtjYXRlZ29yeV0gaWYgY2F0ZWdvcnkgZWxz
ZSBzZWxmLmJyYW5jaGVzKHN0YXJ0KSArIHNlbGYudGFncyhzdGFydCkKKworICAgICAgICBwcmV2
aW91cyA9IE5vbmUKKyAgICAgICAgZm9yIGIgaW4gY2F0ZWdvcnkgKyBbJ3RydW5rJ106CisgICAg
ICAgICAgICBmb3IgY2FuZGlkYXRlIGluIHJldmVyc2VkKHNlbGYuY29tbWl0cy5nZXQoYiwgW10p
KToKKyAgICAgICAgICAgICAgICBpZiBjYW5kaWRhdGUucmV2aXNpb24gPiBzdGFydCBvciBjYW5k
aWRhdGUucmV2aXNpb24gPCBlbmQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICAgICAgICAgaWYgcHJldmlvdXMgYW5kIHByZXZpb3VzLnJldmlzaW9uIDw9IGNhbmRpZGF0
ZS5yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAg
ICBwcmV2aW91cyA9IGNhbmRpZGF0ZQorICAgICAgICAgICAgICAgIHlpZWxkIGNhbmRpZGF0ZQog
CiAgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGRhdGE9Tm9uZSwgKiprd2FyZ3Mp
OgogICAgICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCkBAIC0y
NjYsMTEgKzI1MywxMSBAQCBjbGFzcyBTdm4obW9ja3MuUmVxdWVzdHMpOgogCiAgICAgICAgICMg
TG9nIGZvciBjb21taXQKICAgICAgICAgaWYgbWV0aG9kID09ICdSRVBPUlQnIGFuZCBzdHJpcHBl
ZF91cmwuc3RhcnRzd2l0aCgne30hJy5mb3JtYXQoc2VsZi5yZW1vdGUpKSBhbmQgbWF0Y2ggYW5k
IGRhdGEuZ2V0KCdTOmxvZy1yZXBvcnQnKToKLSAgICAgICAgICAgIGNvbW1pdHMgPSBzZWxmLnJh
bmdlKAorICAgICAgICAgICAgY29tbWl0cyA9IGxpc3Qoc2VsZi5yYW5nZSgKICAgICAgICAgICAg
ICAgICBjYXRlZ29yeT1tYXRjaC5ncm91cCgnY2F0ZWdvcnknKSwKICAgICAgICAgICAgICAgICBz
dGFydD1pbnQoZGF0YVsnUzpsb2ctcmVwb3J0J11bJ1M6c3RhcnQtcmV2aXNpb24nXSksCiAgICAg
ICAgICAgICAgICAgZW5kPWludChkYXRhWydTOmxvZy1yZXBvcnQnXVsnUzplbmQtcmV2aXNpb24n
XSksCi0gICAgICAgICAgICApCisgICAgICAgICAgICApKQogCiAgICAgICAgICAgICBsaW1pdCA9
IGludChkYXRhWydTOmxvZy1yZXBvcnQnXS5nZXQoJ1M6bGltaXQnLCAwKSkKICAgICAgICAgICAg
IGlmIGxpbWl0IGFuZCBsZW4oY29tbWl0cykgPiBsaW1pdDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9naXRfaHViLnB5
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3Rl
L2dpdF9odWIucHkKaW5kZXggODYzZmNhNTFjNjM2Nzg4OGViNmE4OTkzMDhjNTk1ZGRlMzM4ODNk
ZS4uOGZhMzExNjI0MmQ1OTI0OTQyOTQyOGE3YTNlNTVkZDM5NDQ4MTIwMCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dp
dF9odWIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgR2l0SHViKFNj
bSk6CiAgICAgZGVmIGlzX2dpdChzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRl
ZiByZXF1ZXN0KHNlbGYsIHBhdGg9Tm9uZSwgcGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSwgYXV0
aGVudGljYXRlZD1Ob25lKToKKyAgICBkZWYgcmVxdWVzdChzZWxmLCBwYXRoPU5vbmUsIHBhcmFt
cz1Ob25lLCBoZWFkZXJzPU5vbmUsIGF1dGhlbnRpY2F0ZWQ9Tm9uZSwgcGFnaW5hdGU9VHJ1ZSk6
CiAgICAgICAgIGhlYWRlcnMgPSB7a2V5OiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBoZWFkZXJz
Lml0ZW1zKCl9IGlmIGhlYWRlcnMgZWxzZSBkaWN0KCkKICAgICAgICAgaGVhZGVyc1snQWNjZXB0
J10gPSBoZWFkZXJzLmdldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL3ZuZC5naXRodWIudjMranNv
bicpCiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBjbGFzcyBHaXRIdWIoU2NtKToKICAgICAgICAgICAg
IHJldHVybiBOb25lCiAgICAgICAgIHJlc3VsdCA9IHJlc3BvbnNlLmpzb24oKQogCi0gICAgICAg
IHdoaWxlIGlzaW5zdGFuY2UocmVzcG9uc2UuanNvbigpLCBsaXN0KSBhbmQgbGVuKHJlc3BvbnNl
Lmpzb24oKSkgPT0gcGFyYW1zWydwZXJfcGFnZSddOgorICAgICAgICB3aGlsZSBwYWdpbmF0ZSBh
bmQgaXNpbnN0YW5jZShyZXNwb25zZS5qc29uKCksIGxpc3QpIGFuZCBsZW4ocmVzcG9uc2UuanNv
bigpKSA9PSBwYXJhbXNbJ3Blcl9wYWdlJ106CiAgICAgICAgICAgICBwYXJhbXNbJ3BhZ2UnXSAr
PSAxCiAgICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdldCh1cmwsIHBhcmFtcz1wYXJh
bXMsIGhlYWRlcnM9aGVhZGVycywgYXV0aD1hdXRoKQogICAgICAgICAgICAgaWYgcmVzcG9uc2Uu
c3RhdHVzX2NvZGUgIT0gMjAwOgpAQCAtMjc4LDE2ICsyNzgsMjIgQEAgY2xhc3MgR2l0SHViKFNj
bSk6CiAgICAgICAgICkudGltZXR1cGxlKCkpKQogCiAgICAgICAgIG9yZGVyID0gMAotICAgICAg
ICB3aGlsZSBub3QgaWRlbnRpZmllciBvciBvcmRlciArIDEgPCBpZGVudGlmaWVyICsgKGJyYW5j
aF9wb2ludCBvciAwKToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCdjb21t
aXRzL3t9Jy5mb3JtYXQoJ3t9fnt9Jy5mb3JtYXQoY29tbWl0X2RhdGFbJ3NoYSddLCBvcmRlciAr
IDEpKSkKLSAgICAgICAgICAgIGlmIG5vdCByZXNwb25zZToKLSAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICAgICAgcGFyZW50X3RpbWVzdGFtcCA9IGludChjYWxlbmRhci50aW1lZ20oZGF0
ZXRpbWUuc3RycHRpbWUoCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VbJ2NvbW1pdCddWydjb21t
aXR0ZXInXVsnZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVNaJywKLSAgICAgICAgICAgICkudGlt
ZXR1cGxlKCkpKQotICAgICAgICAgICAgaWYgcGFyZW50X3RpbWVzdGFtcCAhPSB0aW1lc3RhbXA6
CisgICAgICAgIGxoYXNoID0gY29tbWl0X2RhdGFbJ3NoYSddCisgICAgICAgIHdoaWxlIGxoYXNo
OgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJ2NvbW1pdHMnLCBwYWdpbmF0
ZT1GYWxzZSwgcGFyYW1zPWRpY3Qoc2hhPWxoYXNoLCBwZXJfcGFnZT0yMCkpCisgICAgICAgICAg
ICBpZiBsZW4ocmVzcG9uc2UpIDw9IDE6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgIG9yZGVyICs9IDEKKyAgICAgICAgICAgIGZvciBjIGluIHJlc3BvbnNlOgorICAgICAgICAg
ICAgICAgIGlmIGxoYXNoID09IGNbJ3NoYSddOgorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICAgICAgICAgIHBhcmVudF90aW1lc3RhbXAgPSBpbnQoY2FsZW5kYXIudGltZWdt
KGRhdGV0aW1lLnN0cnB0aW1lKAorICAgICAgICAgICAgICAgICAgICBjWydjb21taXQnXVsnY29t
bWl0dGVyJ11bJ2RhdGUnXSwgJyVZLSVtLSVkVCVIOiVNOiVTWicsCisgICAgICAgICAgICAgICAg
KS50aW1ldHVwbGUoKSkpCisgICAgICAgICAgICAgICAgaWYgcGFyZW50X3RpbWVzdGFtcCAhPSB0
aW1lc3RhbXA6CisgICAgICAgICAgICAgICAgICAgIGxoYXNoID0gTm9uZQorICAgICAgICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxoYXNoID0gY1snc2hhJ10KKyAgICAgICAg
ICAgICAgICBvcmRlciArPSAxCiAKICAgICAgICAgcmV0dXJuIENvbW1pdCgKICAgICAgICAgICAg
IHJlcG9zaXRvcnlfaWQ9c2VsZi5pZCwKQEAgLTMwNCw2ICszMTAsNjcgQEAgY2xhc3MgR2l0SHVi
KFNjbSk6CiAgICAgICAgICAgICApLCBtZXNzYWdlPWNvbW1pdF9kYXRhWydjb21taXQnXVsnbWVz
c2FnZSddIGlmIGluY2x1ZGVfbG9nIGVsc2UgTm9uZSwKICAgICAgICAgKQogCisgICAgZGVmIGNv
bW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUsICoq
a3dhcmdzKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShpbmNsdWRl
X2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmt3YXJncykKKworICAgICAgICBwcmV2
aW91cyA9IGVuZAorICAgICAgICBjYWNoZWQgPSBbcHJldmlvdXNdCisgICAgICAgIHdoaWxlIHBy
ZXZpb3VzOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJ2NvbW1pdHMnLCBw
YWdpbmF0ZT1GYWxzZSwgcGFyYW1zPWRpY3Qoc2hhPXByZXZpb3VzLmhhc2gpKQorICAgICAgICAg
ICAgaWYgbm90IHJlc3BvbnNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBm
b3IgY29tbWl0X2RhdGEgaW4gcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50
ID0gcHJldmlvdXMuYnJhbmNoX3BvaW50CisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHBy
ZXZpb3VzLmlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBjb21taXRfZGF0YVsnc2hhJ10g
PT0gcHJldmlvdXMuaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVkID0gY2FjaGVkWzot
MV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVy
IC09IDEKKworICAgICAgICAgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyOgorICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAgICAgICAgICAgICAgICAgIGJy
YW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBzZWxmLkdJVF9T
Vk5fUkVWSVNJT04uZmluZGFsbChjb21taXRfZGF0YVsnY29tbWl0J11bJ21lc3NhZ2UnXSkKKyAg
ICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaGVzWy0xXS5zcGxpdCgnQCcpWzBdKSBp
ZiBtYXRjaGVzIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgZW1haWxfbWF0Y2ggPSBzZWxm
LkVNQUlMX1JFLm1hdGNoKGNvbW1pdF9kYXRhWydjb21taXQnXVsnYXV0aG9yJ11bJ2VtYWlsJ10p
CisgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KGNhbGVuZGFyLnRpbWVnbShkYXRldGlt
ZS5zdHJwdGltZSgKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0X2RhdGFbJ2NvbW1pdCddWydj
b21taXR0ZXInXVsnZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVNaJywKKyAgICAgICAgICAgICAg
ICApLnRpbWV0dXBsZSgpKSkKKworICAgICAgICAgICAgICAgIHByZXZpb3VzID0gQ29tbWl0KAor
ICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisgICAgICAgICAgICAg
ICAgICAgIGhhc2g9Y29tbWl0X2RhdGFbJ3NoYSddLAorICAgICAgICAgICAgICAgICAgICByZXZp
c2lvbj1yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWVuZC5icmFuY2ggaWYg
aWRlbnRpZmllciBhbmQgYnJhbmNoX3BvaW50IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5jaCwKKyAg
ICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1pZGVudGlmaWVyIGlmIGluY2x1ZGVfaWRlbnRp
ZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hf
cG9pbnQgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAg
ICAgdGltZXN0YW1wPXRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yPXNlbGYu
Y29udHJpYnV0b3JzLmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdF9kYXRh
Wydjb21taXQnXVsnYXV0aG9yJ11bJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVt
YWlsX21hdGNoLmdyb3VwKCdlbWFpbCcpIGlmIGVtYWlsX21hdGNoIGVsc2UgTm9uZSwKKyAgICAg
ICAgICAgICAgICAgICAgKSwgb3JkZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1j
b21taXRfZGF0YVsnY29tbWl0J11bJ21lc3NhZ2UnXSBpZiBpbmNsdWRlX2xvZyBlbHNlIE5vbmUs
CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIG5vdCBjYWNoZWQgb3IgY2Fj
aGVkWzBdLnRpbWVzdGFtcCAhPSBwcmV2aW91cy50aW1lc3RhbXA6CisgICAgICAgICAgICAgICAg
ICAgIGZvciBjIGluIGNhY2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGMKKyAg
ICAgICAgICAgICAgICAgICAgY2FjaGVkID0gW3ByZXZpb3VzXQorICAgICAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNhY2hlZDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGMub3JkZXIgKz0gMQorICAgICAgICAgICAgICAgICAgICBjYWNoZWQuYXBwZW5k
KHByZXZpb3VzKQorCisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXMuaGFzaCA9PSBiZWdpbi5o
YXNoIG9yIHByZXZpb3VzLnRpbWVzdGFtcCA8IGJlZ2luLnRpbWVzdGFtcDoKKyAgICAgICAgICAg
ICAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgZm9yIGMgaW4gY2FjaGVkOgorICAgICAgICAgICAgYy5vcmRlciArPSBiZWdpbi5vcmRl
cgorICAgICAgICAgICAgeWllbGQgYworCisKICAgICBkZWYgZmluZChzZWxmLCBhcmd1bWVudCwg
aW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUpOgogICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShhcmd1bWVudCwgc2l4LnN0cmluZ190eXBlcyk6CiAgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCAnYXJndW1lbnQnIHRvIGJlIGEgc3RyaW5nLCBub3Qg
J3t9JyIuZm9ybWF0KHR5cGUoYXJndW1lbnQpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHkgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvc3ZuLnB5Cmlu
ZGV4IGJhMDdiMzY3NTBlNTA5ZmI0ZDk4MjA4ZjVlZTdlMDdmNzk1NWMzZGQuLmI5OGM3ZWJmMjA4
ZTk0ZTNkNmU5YTk5MjZmODE0ZDM1OWRlZjI4ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5w
eQpAQCAtMzIsMTQgKzMyLDE0IEBAIGltcG9ydCB4bWx0b2RpY3QKIAogZnJvbSBkYXRldGltZSBp
bXBvcnQgZGF0ZXRpbWUKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGxvZywgcnVuLCBkZWNv
cmF0b3JzCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgZGVjb3JhdG9ycywgc3RyaW5nX3V0aWxz
CiBmcm9tIHdlYmtpdHNjbXB5LnJlbW90ZS5zY20gaW1wb3J0IFNjbQotZnJvbSB3ZWJraXRzY21w
eSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRvciwgVmVyc2lvbgorZnJvbSB3ZWJraXRzY21weSBp
bXBvcnQgQ29tbWl0LCBWZXJzaW9uCiAKIAogY2xhc3MgU3ZuKFNjbSk6CiAgICAgVVJMX1JFID0g
cmUuY29tcGlsZShyJ1xBaHR0cHM/Oi8vc3ZuLig/UDxob3N0PlxTKykvcmVwb3NpdG9yeS9cUytc
WicpCi0gICAgSElTVE9SWV9SRSA9IHJlLmNvbXBpbGUoYic8RDp2ZXJzaW9uLW5hbWU+KD9QPHJl
dmlzaW9uPlxkKyk8L0Q6dmVyc2lvbi1uYW1lPicpCisgICAgREFUQV9SRSA9IHJlLmNvbXBpbGUo
Yic8W1NEXTooP1A8dGFnPlxTKyk+KD9QPGNvbnRlbnQ+LiopPC9bU0RdOi4rPicpCiAgICAgQ0FD
SEVfVkVSU0lPTiA9IFZlcnNpb24oMSkKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjQ0LDggKzI0
NCw4IEBAIGNsYXNzIFN2bihTY20pOgogCiAgICAgICAgICAgICBkZWZhdWx0X2NvdW50ID0gMAog
ICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVzcG9uc2UuaXRlcl9saW5lcygpOgotICAgICAgICAg
ICAgICAgIG1hdGNoID0gc2VsZi5ISVNUT1JZX1JFLm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAg
ICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5EQVRBX1JFLm1h
dGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoIG9yIG1hdGNoLmdyb3VwKCd0
YWcnKSAhPSBiJ3ZlcnNpb24tbmFtZSc6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
ICAgICAgICAgICAgICAgICBpZiBub3QgZGlkX3dhcm46CkBAIC0yNTQsNyArMjU0LDcgQEAgY2xh
c3MgU3ZuKFNjbSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZygnQ2FjaGluZyBj
b21taXQgZGF0YSBmb3Ige30sIHRoaXMgd2lsbCB0YWtlIGEgZmV3IG1pbnV0ZXMuLi4nLmZvcm1h
dChicmFuY2gpKQogICAgICAgICAgICAgICAgICAgICAgICAgZGlkX3dhcm4gPSBUcnVlCiAKLSAg
ICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgncmV2aXNpb24nKSkKKyAg
ICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgnY29udGVudCcpKQogICAg
ICAgICAgICAgICAgIGlmIHBvcyA+IDAgYW5kIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF1b
cG9zIC0gMV0gPT0gcmV2aXNpb246CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
ICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRfYnJhbmNoOgpAQCAtNDU1LDMgKzQ1NSw4NCBAQCBj
bGFzcyBTdm4oU2NtKToKICAgICAgICAgICAgIGF1dGhvcj1hdXRob3IsCiAgICAgICAgICAgICBt
ZXNzYWdlPW1lc3NhZ2UsCiAgICAgICAgICkKKworICAgIGRlZiBjb21taXRzKHNlbGYsIGluY2x1
ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlLCAqKmt3YXJncyk6CisgICAgICAg
IGJlZ2luLCBlbmQgPSBzZWxmLl9jb21taXRfcmFuZ2UoaW5jbHVkZV9sb2c9RmFsc2UsIGluY2x1
ZGVfaWRlbnRpZmllcj1pbmNsdWRlX2lkZW50aWZpZXIsICoqa3dhcmdzKQorICAgICAgICBwcmV2
aW91cyA9IGVuZAorCisgICAgICAgIGluX2NvbW1lbnQgPSBGYWxzZQorICAgICAgICBjdXJyZW50
ID0gTm9uZQorICAgICAgICB3aXRoIHJlcXVlc3RzLnJlcXVlc3QoCisgICAgICAgICAgICAgICAg
bWV0aG9kPSdSRVBPUlQnLAorICAgICAgICAgICAgICAgIHVybD0ne30hc3ZuL3J2ci97fS97fScu
Zm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnVybCwKKyAgICAgICAgICAgICAgICAg
ICAgZW5kLnJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICBlbmQuYnJhbmNoIGlmIGVuZC5i
cmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBvciAnLycgaW4gZW5kLmJyYW5jaCBlbHNlICdi
cmFuY2hlcy97fScuZm9ybWF0KGVuZC5icmFuY2gpLAorICAgICAgICAgICAgICAgICksIHN0cmVh
bT1UcnVlLAorICAgICAgICAgICAgICAgIGhlYWRlcnM9eworICAgICAgICAgICAgICAgICAgICAn
Q29udGVudC1UeXBlJzogJ3RleHQveG1sJywKKyAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1F
bmNvZGluZyc6ICdnemlwJywKKyAgICAgICAgICAgICAgICAgICAgJ0RFUFRIJzogJzEnLAorICAg
ICAgICAgICAgICAgIH0sIGRhdGE9JzxTOmxvZy1yZXBvcnQgeG1sbnM6Uz0ic3ZuOiI+XG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAnPFM6c3RhcnQtcmV2aXNpb24+e2VuZH08L1M6c3RhcnQt
cmV2aXNpb24+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnPFM6ZW5kLXJldmlzaW9uPnti
ZWdpbn08L1M6ZW5kLXJldmlzaW9uPlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJzxTOnBh
dGg+PC9TOnBhdGg+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnPC9TOmxvZy1yZXBvcnQ+
XG4nLmZvcm1hdChlbmQ9ZW5kLnJldmlzaW9uLCBiZWdpbj1iZWdpbi5yZXZpc2lvbiksCisgICAg
ICAgICkgYXMgcmVzcG9uc2U6CisgICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSAh
PSAyMDA6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxlZCB0byBj
b25zdHJ1Y3QgYnJhbmNoIGhpc3RvcnkgZm9yICd7fSciLmZvcm1hdChicmFuY2gpKQorICAgICAg
ICAgICAgZm9yIGxpbmUgaW4gcmVzcG9uc2UuaXRlcl9saW5lcygpOgorICAgICAgICAgICAgICAg
IGlmIGluX2NvbW1lbnQ6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQubWVzc2FnZSArPSBz
dHJpbmdfdXRpbHMuZGVjb2RlKGxpbmUpICsgJ1xuJworICAgICAgICAgICAgICAgICAgICBpZiBs
aW5lLmVuZHN3aXRoKGInPC9EOmNvbW1lbnQ+Jyk6CisgICAgICAgICAgICAgICAgICAgICAgICBj
dXJyZW50Lm1lc3NhZ2UgPSBjdXJyZW50Lm1lc3NhZ2VbOi0xM10KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnQubWVzc2FnZSA9IGN1cnJlbnQubWVzc2FnZS5yc3RyaXAoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgaW5fY29tbWVudCA9IEZhbHNlCisKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGxpbmUgPT0gYic8Uzpsb2ctaXRlbT4n
OgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gTm9uZQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBiJzwvUzpsb2ctaXRlbT4n
OgorICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50OgorICAgICAgICAgICAgICAgICAgICAg
ICAgeWllbGQgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudC5yZXZp
c2lvbiA8PSBiZWdpbi5yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
aworICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5EQVRBX1JFLm1h
dGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAg
IGlmIG1hdGNoLmdyb3VwKCd0YWcnKSA9PSBiJ3ZlcnNpb24tbmFtZSc6CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBwcmV2aW91cy5icmFuY2hfcG9pbnQgaWYgaW5jbHVk
ZV9pZGVudGlmaWVyIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmll
ciA9IHByZXZpb3VzLmlkZW50aWZpZXIgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW50KG1hdGNoLmdyb3VwKCdjb250ZW50JykpICE9
IHByZXZpb3VzLnJldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXIgLT0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGJyYW5jaF9wb2ludAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudCA9IENvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb249aW50KG1hdGNoLmdyb3VwKCdjb250ZW50JykpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyYW5jaD1lbmQuYnJhbmNoIGlmIGJyYW5jaF9wb2ludCBlbHNlIHNlbGYuZGVmYXVs
dF9icmFuY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1pZGVudGlm
aWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludD1icmFuY2hfcG9p
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIGVsaWYg
bWF0Y2guZ3JvdXAoJ3RhZycpID09IGInY3JlYXRvci1kaXNwbGF5bmFtZSc6CisgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lID0gc3RyaW5nX3V0aWxzLmRlY29kZShtYXRjaC5ncm91cCgnY29u
dGVudCcpKQorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC5hdXRob3IgPSBzZWxmLmNv
bnRyaWJ1dG9ycy5jcmVhdGUobmFtZSwgbmFtZSkgaWYgbmFtZSBhbmQgJ0AnIGluIG5hbWUgZWxz
ZSBzZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZWxp
ZiBtYXRjaC5ncm91cCgndGFnJykgPT0gYidkYXRlJzoKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGUgPSBkYXRldGltZS5zdHJwdGltZShzdHJpbmdfdXRpbHMuZGVjb2RlKG1hdGNoLmdyb3Vw
KCdjb250ZW50JykpLnNwbGl0KCcuJylbMF0sICclWS0lbS0lZFQlSDolTTolUycpCisgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50LnRpbWVzdGFtcCA9IGludChjYWxlbmRhci50aW1lZ20o
ZGF0ZS50aW1ldHVwbGUoKSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoYic8RDpjb21tZW50PicpOgorICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50Lm1lc3NhZ2UgPSBzdHJpbmdfdXRpbHMuZGVjb2RlKGxpbmVbMTE6
XSkgKyAnXG4nCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoYic8L0Q6Y29t
bWVudD4nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQubWVzc2FnZSA9IGN1cnJl
bnQubWVzc2FnZVs6LTEzXQorICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29tbWVudCA9IEZh
bHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBp
bl9jb21tZW50ID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQppbmRleCA4YTE0M2UwM2I4MzQ5
YWM1YTRkMjFhZjQwMDAyNWQ2ZTNmOWJiMjc1Li4yODEwYjkzZjU4MjIxOGZhNDU1MzdiZmY3MzFl
MzcyNzViNmM2MTc2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQpAQCAtNzMsNiArNzMsNDUgQEAg
Y2xhc3MgU2NtQmFzZShvYmplY3QpOgogICAgIGRlZiBjb21taXQoc2VsZiwgaGFzaD1Ob25lLCBy
ZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGJyYW5jaD1Ob25lLCB0YWc9Tm9uZSwgaW5j
bHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUpOgogICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yKCkKIAorICAgIGRlZiBfY29tbWl0X3JhbmdlKHNlbGYsIGluY2x1
ZGVfbG9nPUZhbHNlLCBpbmNsdWRlX2lkZW50aWZpZXI9VHJ1ZSwgKiprd2FyZ3MpOgorICAgICAg
ICBiZWdpbl9hcmdzID0ge30KKyAgICAgICAgZW5kX2FyZ3MgPSB7fQorICAgICAgICBmb3IgYXJn
LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGFyZy5zdGFydHN3aXRo
KCdiZWdpbl8nKToKKyAgICAgICAgICAgICAgICBiZWdpbl9hcmdzW2FyZ1s2Ol1dID0gdmFsdWUK
KyAgICAgICAgICAgIGVsaWYgYXJnLnN0YXJ0c3dpdGgoJ2VuZF8nKToKKyAgICAgICAgICAgICAg
ICBlbmRfYXJnc1thcmdbNDpdXSA9IHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcigiX2NvbW1pdF9yYW5nZSgpIGdvdCBhbiB1bmV4cGVjdGVk
IGtleXdvcmQgYXJndW1lbnQgJ3t9JyIuZm9ybWF0KGFyZykpCisKKyAgICAgICAgaWYgbm90IGJl
Z2luX2FyZ3M6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9jb21taXRfcmFuZ2UoKSBt
aXNzaW5nIHJlcXVpcmVkICdiZWdpbl8nIGFyZ3VtZW50cyIpCisgICAgICAgIGlmIG5vdCBlbmRf
YXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiX2NvbW1pdF9yYW5nZSgpIG1pc3Np
bmcgcmVxdWlyZWQgJ2VuZF8nIGFyZ3VtZW50cyIpCisKKyAgICAgICAgaWYgbGlzdChiZWdpbl9h
cmdzLmtleXMoKSkgPT0gWydhcmd1bWVudCddOgorICAgICAgICAgICAgYmVnaW4gPSBzZWxmLmZp
bmQoaW5jbHVkZV9sb2c9aW5jbHVkZV9sb2csIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSwgKipi
ZWdpbl9hcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmVnaW4gPSBzZWxmLmNvbW1p
dChpbmNsdWRlX2xvZz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlLCAqKmJl
Z2luX2FyZ3MpCisKKyAgICAgICAgaWYgbGlzdChlbmRfYXJncy5rZXlzKCkpID09IFsnYXJndW1l
bnQnXToKKyAgICAgICAgICAgIGVuZCA9IHNlbGYuZmluZChpbmNsdWRlX2xvZz1pbmNsdWRlX2xv
ZywgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllciwgKiplbmRfYXJncykKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuZCA9IHNlbGYuY29tbWl0KGluY2x1ZGVfbG9nPWlu
Y2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmVuZF9h
cmdzKQorCisgICAgICAgIGlmIG5vdCBiZWdpbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJv
cigiJ3t9JyBmYWlsZWQgdG8gZGVmaW5lIGJlZ2luIGluIF9jb21taXRfcmFuZ2UoKSIuZm9ybWF0
KGJlZ2luX2FyZ3MpKQorICAgICAgICBpZiBub3QgZW5kOgorICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKCIne30nIGZhaWxlZCB0byBkZWZpbmUgYmVnaW4gaW4gX2NvbW1pdF9yYW5nZSgpIi5m
b3JtYXQoZW5kX2FyZ3MpKQorICAgICAgICBpZiBiZWdpbi50aW1lc3RhbXAgPiBlbmQudGltZXN0
YW1wOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30nIHByZS1kYXRlcyAne30nIGlu
IF9jb21taXRfcmFuZ2UoKSIuZm9ybWF0KGJlZ2luLCBlbmQpKQorICAgICAgICBpZiBlbmQuYnJh
bmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2ggYW5kIGJlZ2luLmJyYW5jaCAhPSBzZWxmLmRlZmF1
bHRfYnJhbmNoOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30nIGFuZCAne30nIGRv
IG5vdCBzaGFyZSBsaW5lYXIgaGlzdG9yeSIuZm9ybWF0KGJlZ2luLCBlbmQpKQorICAgICAgICBy
ZXR1cm4gYmVnaW4sIGVuZAorCisgICAgZGVmIGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1
ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigpCisKICAgICBkZWYgcHJpb3JpdGl6ZV9icmFuY2hlcyhzZWxmLCBi
cmFuY2hlcyk6CiAgICAgICAgIGlmIGxlbihicmFuY2hlcykgPT0gMToKICAgICAgICAgICAgIHJl
dHVybiBicmFuY2hlc1swXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5
CmluZGV4IDExZDE4Mzc1ZDEwNGE0MzQ1MmEzZmRlZjg3MDBhYzA4NDIwMDc2MjIuLmI2ZjU5MTg5
MWZmZmE1MDkzZjkzN2Q5MTFmMTgwMWMwYzE5OGRmZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90
ZXN0L2ZpbmRfdW5pdHRlc3QucHkKQEAgLTIzMSw3ICsyMzEsNyBAQCBBdXRob3I6IGpiZWRhcmRA
YXBwbGUuY29tIDxqYmVkYXJkQGFwcGxlLmNvbT4KIERhdGU6IHt9CiBSZXZpc2lvbjogNAogSWRl
bnRpZmllcjogM0B0cnVuawotJycnLmZvcm1hdChkYXRldGltZS5mcm9tdGltZXN0YW1wKDE2MDE2
ODY3MDApLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWScpKSwKKycnJy5mb3JtYXQoZGF0
ZXRpbWUuZnJvbXRpbWVzdGFtcCgxNjAxNjg0NzAwKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06
JVMgJVknKSksCiAgICAgICAgICkKIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0
ZXN0LnB5CmluZGV4IGU4YTUyMzhkMTUyZDQ2NDdkYmQwOTExM2JhMmZmOTkzMjc3NGQ0YjEuLmQ4
YmEwNzExNDNlZDk0NzU0YjM5ZjUwZWY5NDliZGViNTcyOWNjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CkBAIC0yOCw3ICsyOCw3IEBAIGltcG9ydCB1bml0dGVz
dAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBp
bXBvcnQgVGltZSBhcyBNb2NrVGltZQotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIG1v
Y2tzLCByZW1vdGUKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgbG9jYWwsIG1vY2tz
LCByZW1vdGUKIAogCiBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI4Myw2
ICsyODMsMjggQEAgY2xhc3MgVGVzdEdpdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFz
aD0nYmFlNWQxZTkwOTk5Jykub3JkZXIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nZDhiY2UyNmZhNjVjJykub3Jk
ZXIpCiAKKyAgICBkZWYgdGVzdF9jb21taXRzKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBb
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdp
dF9zdm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgICAgIGdp
dCA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgICAgICBnaXQuY29t
bWl0KGhhc2g9J2JhZTVkMWU5JyksCisgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFz
aD0nMWFiZTI1YjQnKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4
M2JiMicpLAorICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyks
CisgICAgICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5j
b21taXRzKGJlZ2luX2hhc2g9JzliODMxMWYyJywgZW5kX2hhc2g9J2JhZTVkMWU5JykpKSkKKwor
ICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBb
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdp
dF9zdm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgICAgIGdp
dCA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgICAgICBnaXQuY29t
bWl0KGhhc2g9JzYyMTY1MmFkJyksCisgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFz
aD0nYTMwY2U4NDknKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4
M2JiMicpLAorICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyks
CisgICAgICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5j
b21taXRzKGJlZ2luX2FyZ3VtZW50PSc5YjgzMTFmMicsIGVuZF9hcmd1bWVudD0nNjIxNjUyYWQn
KSkpKQorCiAKIGNsYXNzIFRlc3RHaXRIdWIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJlbW90
ZSA9ICdodHRwczovL2dpdGh1Yi5leGFtcGxlLmNvbS9XZWJLaXQvV2ViS2l0JwpAQCAtNDE1LDYg
KzQzNywyNyBAQCBjbGFzcyBUZXN0R2l0SHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYg
dGVzdF9pZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZW1vdGUuR2l0SHViKHNl
bGYucmVtb3RlKS5pZCwgJ3dlYmtpdCcpCiAKKyAgICBkZWYgdGVzdF9jb21taXRzKHNlbGYpOgor
ICAgICAgICB3aXRoIG1vY2tzLnJlbW90ZS5HaXRIdWIoKToKKyAgICAgICAgICAgIGdpdCA9IHJl
bW90ZS5HaXRIdWIoc2VsZi5yZW1vdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENv
bW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNo
PSdiYWU1ZDFlOScpLAorICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nMWFiZTI1YjQn
KSwKKyAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2ZmZjgzYmIyJyksCisgICAgICAg
ICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAorICAgICAgICAgICAgXSksIENv
bW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJlZ2luX2hhc2g9JzliODMx
MWYyJywgZW5kX2hhc2g9J2JhZTVkMWU5JykpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJh
bmNoKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLnJlbW90ZS5HaXRIdWIoKToKKyAgICAgICAg
ICAgIGdpdCA9IHJlbW90ZS5HaXRIdWIoc2VsZi5yZW1vdGUpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgZ2l0
LmNvbW1pdChoYXNoPSc2MjE2NTJhZCcpLAorICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFz
aD0nYTMwY2U4NDknKSwKKyAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2ZmZjgzYmIy
JyksCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAorICAgICAg
ICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJlZ2lu
X2FyZ3VtZW50PSc5YjgzMTFmMicsIGVuZF9hcmd1bWVudD0nNjIxNjUyYWQnKSkpKQorCisKIAog
Y2xhc3MgVGVzdEJpdEJ1Y2tldCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcmVtb3RlID0gJ2h0
dHBzOi8vYml0YnVja2V0LmV4YW1wbGUuY29tL3Byb2plY3RzL1dFQktJVC9yZXBvcy93ZWJraXQn
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L3N2bl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5CmluZGV4IGI2MjBmMTRjYmU0
Mzk2MDEwN2FlZTM1ZjE5MDA1NTg0NGUyNWI4MmYuLmY0ZjY0NmNjMDk1MTU0N2RkM2Q4ZjQwMmIx
NmNmMGMwOTEzZTg3MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5
CkBAIC0yNyw3ICsyNyw3IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGRhdGV0aW1lIGltcG9y
dCBkYXRldGltZSwgdGltZWRlbHRhCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIG1vY2tzLCByZW1vdGUKK2Zyb20g
d2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgbG9jYWwsIG1vY2tzLCByZW1vdGUKIAogCiBjbGFz
cyBUZXN0TG9jYWxTdm4odW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjMxLDYgKzIzMSwyNiBAQCBj
bGFzcyBUZXN0TG9jYWxTdm4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB3aXRoIG1vY2tz
LmxvY2FsLlN2bihzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBzZWxm
LmFzc2VydElzTm9uZShsb2NhbC5Tdm4oc2VsZi5wYXRoKS5maW5kKCd0cnVuaycsIGluY2x1ZGVf
aWRlbnRpZmllcj1GYWxzZSkuaWRlbnRpZmllcikKIAorICAgIGRlZiB0ZXN0X2NvbW1pdHMoc2Vs
Zik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE91dHB1dENhcHR1
cmUoKToKKyAgICAgICAgICAgIHN2biA9IGxvY2FsLlN2bihzZWxmLnBhdGgpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAg
ICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjYnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29t
bWl0KHJldmlzaW9uPSdyNCcpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249
J3IyJyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAg
ICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdp
bl9yZXZpc2lvbj0ncjEnLCBlbmRfcmV2aXNpb249J3I2JykpKSkKKworICAgIGRlZiB0ZXN0X2Nv
bW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBh
dGgpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICBzdm4gPSBsb2NhbC5Tdm4oc2VsZi5w
YXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1
bHQoWworICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3I3JyksCisgICAgICAg
ICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjMnKSwKKyAgICAgICAgICAgICAgICBzdm4u
Y29tbWl0KHJldmlzaW9uPSdyMicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNp
b249J3IxJyksCisgICAgICAgICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qo
c3ZuLmNvbW1pdHMoYmVnaW5fYXJndW1lbnQ9J3IxJywgZW5kX2FyZ3VtZW50PSdyNycpKSkpCisK
IAogY2xhc3MgVGVzdFJlbW90ZVN2bih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcmVtb3RlID0g
J2h0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0JwpAQCAtMzMxLDMgKzM1
MSwyMyBAQCBjbGFzcyBUZXN0UmVtb3RlU3ZuKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRl
ZiB0ZXN0X2lkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlbW90ZS5Tdm4oc2Vs
Zi5yZW1vdGUpLmlkLCAnd2Via2l0JykKKworICAgIGRlZiB0ZXN0X2NvbW1pdHMoc2VsZik6Cisg
ICAgICAgIHdpdGggbW9ja3MucmVtb3RlLlN2bigpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAg
ICAgICBzdm4gPSByZW1vdGUuU3ZuKHNlbGYucmVtb3RlKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgIHN2bi5j
b21taXQocmV2aXNpb249J3I2JyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lv
bj0ncjQnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyMicpLAorICAg
ICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IxJyksCisgICAgICAgICAgICBdKSwg
Q29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qoc3ZuLmNvbW1pdHMoYmVnaW5fcmV2aXNpb249
J3IxJywgZW5kX3JldmlzaW9uPSdyNicpKSkpCisKKyAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5j
aChzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5yZW1vdGUuU3ZuKCksIE91dHB1dENhcHR1cmUo
KToKKyAgICAgICAgICAgIHN2biA9IHJlbW90ZS5Tdm4oc2VsZi5yZW1vdGUpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAg
ICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjcnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29t
bWl0KHJldmlzaW9uPSdyMycpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249
J3IyJyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAg
ICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdp
bl9hcmd1bWVudD0ncjEnLCBlbmRfYXJndW1lbnQ9J3I3JykpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427702</attachid>
            <date>2021-05-04 14:43:12 -0700</date>
            <delta_ts>2021-05-04 17:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224890-20210504144308.patch</filename>
            <type>text/plain</type>
            <size>51390</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3Njk4MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYxIEBACisyMDIxLTA1LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgQVBJIHRvIGVmZmljaWVudGx5IGNyZWF0
ZSBhIHNlcXVlbmNlIG9mIGNvbW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDg5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY5NzU3MzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUg
aXQgaXMgcG9zc2libGUgdG8gc2ltcGxlIGl0ZXJhdGUgdGhyb3VnaCBhIHJhbmdlIG9mIGNvbW1p
dHMgdG8gZGVmaW5lIHRoZW0sCisgICAgICAgIGV2ZXJ5IEFQSSB3ZSB1c2UgdG8gZGVmaW5lIGNv
bW1pdHMgaGFzIG11Y2ggbW9yZSBlZmZpY2llbnQgdGVjaG5pcXVlcy4KKworICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18u
cHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L2NvbnRyaWJ1dG9yLnB5OgorICAgICAgICAoQ29udHJpYnV0b3IpOiBBZGQgcmV2aXNp
b24gdG8gU1ZOX0FVVEhPUl9SRSBhbmQgYWRkIHJlZ2V4IHdpdGhvdXQgbGluZXMuCisgICAgICAg
IChDb250cmlidXRvci5mcm9tX3NjbV9sb2cpOiBTdHJpcCBsZWFkaW5nIHdoaXRlc3BhY2UgZnJv
bSBhdXRob3IuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAgICAoR2l0Ll9hcmdzX2Zyb21fY29udGVudCk6Cisg
ICAgICAgIChHaXQuY29tbWl0cyk6IFVzZSBgZ2l0IGxvZ2AgdG8gZWZmaWNpZW50bHkgY29tcHV0
ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5OgorICAgICAgICAoU3ZuLl9hcmdzX2Zyb21f
Y29udGVudCk6CisgICAgICAgIChTdm4uY29tbWl0cyk6IFVzZSBgc3ZuIGxvZ2AgdG8gZWZmaWNp
ZW50bHkgY29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0Ll9faW5pdF9fKTogQWRkIGBnaXQgbG9nYCBtb2NrLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weToKKyAg
ICAgICAgKFN2bi5fX2luaXRfXyk6IEFkZCBgc3ZuIGxvZ2AgbW9jayBhbmQgbW9yZSBleHBsaWNp
dCBgc3ZuIGluZm9gIG1vY2suCisgICAgICAgIChTdm4uX2xvZ19yYW5nZSk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dp
dF9odWIucHk6CisgICAgICAgIChHaXRIdWIuX2NvbW1pdHNfcmVzcG9uc2UpOiBSZXR1cm4gYWxs
IHBhcmVudCBjb21taXRzIHRvIHByb3ZpZGVkIHJlZi4KKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0
KToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9t
b2Nrcy9yZW1vdGUvc3ZuLnB5OgorICAgICAgICAoU3ZuLnJhbmdlKTogTW9yZSBlZmZpY2llbnRs
eSBjb21wdXRlIHRoZSByYW5nZS4KKyAgICAgICAgKFN2bi5yZXF1ZXN0KToKKyAgICAgICAgKiBT
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5w
eToKKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0KTogQWxsb3cgY2FsbGVyIHRvIGRpc2FibGUgcGFn
aW5hdGlvbi4KKyAgICAgICAgKEdpdEh1Yi5jb21taXQpOiBSZWR1Y2UgbnVtYmVyIG9mIHJlcXVl
c3RzIHJlcXVpcmVkIHRvIGNvbXB1dGUgb3JkZXIuCisgICAgICAgIChHaXRIdWIuY29tbWl0cyk6
IFVzaW5nIHRoZSBgY29tbWl0c2AgZW5kcG9pbnQsIG1vcmUgZWZmaWNpZW50bHkKKyAgICAgICAg
Y29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weToKKyAgICAgICAgKFN2bik6IEdl
bmVyYWxpemUgSElTVE9SWV9SRSB0byBtYXRjaCBhbnkgc2luZ2xlLWxpbmUgU1ZOIFhNTCByZXNw
b25zZS4KKyAgICAgICAgKFN2bi5fY2FjaGVfcmV2aXNpb25zKTogUmVwbGFjZSBISVNUT1JZX1JF
IHdpdGggREFUQV9SRS4KKyAgICAgICAgKFN2bi5jb21taXRzKTogVXNlIHN2bi9ydnIgdG8gZWZm
aWNpZW50bHkgY29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHk6CisgICAgICAgIChT
Y21CYXNlLl9jb21taXRfcmFuZ2UpOiBSZXR1cm4gYSBwYWlyIG9mIGNvbW1pdHMgcmVwcmVzZW50
aW5nIHRoZSByYW5nZQorICAgICAgICB0aGUgY2FsbGVyIGlzIHJlcXVlc3RpbmcsIGFuZCBwcmVm
b3JtIHNvbWUgYmFzaWMgc2FuaXR5IGNoZWNrcy4KKyAgICAgICAgKFNjbUJhc2UuY29tbWl0cyk6
IERlY2xhcmUgZnVuY3Rpb24gaW1wbGVtZW50ZWQgYnkgZGVjZWRlbnRzLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzKToK
KyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzX2JyYW5jaCk6CisgICAgICAgIChUZXN0R2l0
SHViLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0R2l0SHViLnRlc3RfY29tbWl0c19icmFu
Y2gpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdExvY2FsU3ZuLnRlc3RfY29tbWl0
cyk6CisgICAgICAgIChUZXN0TG9jYWxTdm4udGVzdF9jb21taXRzX2JyYW5jaCk6CisgICAgICAg
IChUZXN0UmVtb3RlU3ZuLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0UmVtb3RlU3ZuLnRl
c3RfY29tbWl0c19icmFuY2gpOgorCiAyMDIxLTA1LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgbG9jYWxTdG9yYWdlIGNoYW5nZXMgYXJl
bid0IHJlZmxlY3RlZCBiZXR3ZWVuIFdLV2ViVmlld3MgdXNpbmcgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5fZ3JvdXBJZGVudGlmaWVyCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS9zZXR1cC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS9zZXR1cC5weQkocmV2aXNpb24gMjc2OTY4KQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDcgQEAgZGVmIHJlYWRtZSgpOgogCiBzZXR1cCgKICAgICBuYW1lPSd3ZWJraXRzY21weScsCi0g
ICAgdmVyc2lvbj0nMC4xMy45JywKKyAgICB2ZXJzaW9uPScwLjE0LjAnLAogICAgIGRlc2NyaXB0
aW9uPSdMaWJyYXJ5IGRlc2lnbmVkIHRvIGludGVyYWN0IHdpdGggZ2l0IGFuZCBzdm4gcmVwb3Np
dG9yaWVzLicsCiAgICAgbG9uZ19kZXNjcmlwdGlvbj1yZWFkbWUoKSwKICAgICBjbGFzc2lmaWVy
cz1bCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQkocmV2aXNpb24gMjc2OTY4KQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAg
ICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtp
dGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8cGFja2FnZSBpbmRleCBVUkw+YCIKICAgICApCiAK
LXZlcnNpb24gPSBWZXJzaW9uKDAsIDEzLCA5KQordmVyc2lvbiA9IFZlcnNpb24oMCwgMTQsIDAp
CiAKIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ2Zhc3RlbmVycycsIFZlcnNpb24oMCwg
MTUsIDApKSkKIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBhY2thZ2UoJ21vbm90b25pYycsIFZlcnNp
b24oMSwgNSkpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvY29udHJpYnV0b3IucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkJKHJldmlzaW9uIDI3
Njk2OCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L2NvbnRyaWJ1dG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw4IEBAIGNsYXNzIENv
bnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgQVVUT01BVEVEX0NIRUNLSU5fUkUgPSByZS5jb21waWxl
KHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8ZGV2bnVsbD4nKQogICAgIFVOS05PV05fQVVUSE9S
ID0gcmUuY29tcGlsZShyJ0F1dGhvcjogKD9QPGF1dGhvcj4uKikgPE5vbmU+JykKICAgICBFTVBU
WV9BVVRIT1IgPSByZS5jb21waWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8PicpCi0gICAg
U1ZOX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUocidyXGQrIFx8ICg/UDxlbWFpbD4uKikgXHwgKD9Q
PGRhdGU+LiopIFx8IFxkKyBsaW5lcz8nKQorICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21waWxl
KHIncig/UDxyZXZpc2lvbj5cZCspIFx8ICg/UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+LiopIFx8
IFxkKyBsaW5lcz8nKQorICAgIFNWTl9BVVRIT1JfUV9SRSA9IHJlLmNvbXBpbGUocidyKD9QPHJl
dmlzaW9uPlxkKykgXHwgKD9QPGVtYWlsPi4qKSBcfCAoP1A8ZGF0ZT4uKiknKQogICAgIFNWTl9Q
QVRDSF9GUk9NX1JFID0gcmUuY29tcGlsZShyJ1BhdGNoIGJ5ICg/UDxhdXRob3I+LiopIDwoP1A8
ZW1haWw+LiopPiBvbiBcZCstXGQrLVxkKycpCiAKICAgICBjbGFzcyBFbmNvZGVyKGpzb24uSlNP
TkVuY29kZXIpOgpAQCAtMTE1LDExICsxMTYsMTkgQEAgY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0
KToKICAgICAgICAgZW1haWwgPSBOb25lCiAgICAgICAgIGF1dGhvciA9IE5vbmUKIAotICAgICAg
ICBmb3IgZXhwcmVzc2lvbiBpbiBbY2xzLkdJVF9BVVRIT1JfUkUsIGNscy5TVk5fQVVUSE9SX1JF
LCBjbHMuU1ZOX1BBVENIX0ZST01fUkUsIGNscy5BVVRPTUFURURfQ0hFQ0tJTl9SRSwgY2xzLlVO
S05PV05fQVVUSE9SLCBjbHMuRU1QVFlfQVVUSE9SXToKKyAgICAgICAgZm9yIGV4cHJlc3Npb24g
aW4gWworICAgICAgICAgICAgY2xzLkdJVF9BVVRIT1JfUkUsCisgICAgICAgICAgICBjbHMuU1ZO
X0FVVEhPUl9SRSwKKyAgICAgICAgICAgIGNscy5TVk5fUEFUQ0hfRlJPTV9SRSwKKyAgICAgICAg
ICAgIGNscy5BVVRPTUFURURfQ0hFQ0tJTl9SRSwKKyAgICAgICAgICAgIGNscy5VTktOT1dOX0FV
VEhPUiwKKyAgICAgICAgICAgIGNscy5FTVBUWV9BVVRIT1IsCisgICAgICAgICAgICBjbHMuU1ZO
X0FVVEhPUl9RX1JFLAorICAgICAgICBdOgogICAgICAgICAgICAgbWF0Y2ggPSBleHByZXNzaW9u
Lm1hdGNoKGxpbmUpCiAgICAgICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgICAgICBpZiAn
YXV0aG9yJyBpbiBleHByZXNzaW9uLmdyb3VwaW5kZXg6Ci0gICAgICAgICAgICAgICAgICAgIGF1
dGhvciA9IG1hdGNoLmdyb3VwKCdhdXRob3InKQorICAgICAgICAgICAgICAgICAgICBhdXRob3Ig
PSBtYXRjaC5ncm91cCgnYXV0aG9yJykubHN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgaWYg
JyhubyBhdXRob3IpJyBpbiBhdXRob3Igb3IgJ0F1dG9tYXRlZCBDaGVja2luJyBpbiBhdXRob3Ig
b3IgJ1Vua25vd24nIGluIGF1dGhvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvciA9
IE5vbmUKICAgICAgICAgICAgICAgICBpZiAnZW1haWwnIGluIGV4cHJlc3Npb24uZ3JvdXBpbmRl
eDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3NjbV9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5CShyZXZpc2lvbiAyNzY5NjgpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQko
d29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsNDUgQEAgY2xhc3MgU2NtQmFzZShvYmplY3QpOgog
ICAgIGRlZiBjb21taXQoc2VsZiwgaGFzaD1Ob25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVy
PU5vbmUsIGJyYW5jaD1Ob25lLCB0YWc9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9p
ZGVudGlmaWVyPVRydWUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAor
ICAgIGRlZiBfY29tbWl0X3JhbmdlKHNlbGYsIGluY2x1ZGVfbG9nPUZhbHNlLCBpbmNsdWRlX2lk
ZW50aWZpZXI9VHJ1ZSwgKiprd2FyZ3MpOgorICAgICAgICBiZWdpbl9hcmdzID0ge30KKyAgICAg
ICAgZW5kX2FyZ3MgPSB7fQorICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMo
KToKKyAgICAgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCdiZWdpbl8nKToKKyAgICAgICAgICAg
ICAgICBiZWdpbl9hcmdzW2FyZ1s2Ol1dID0gdmFsdWUKKyAgICAgICAgICAgIGVsaWYgYXJnLnN0
YXJ0c3dpdGgoJ2VuZF8nKToKKyAgICAgICAgICAgICAgICBlbmRfYXJnc1thcmdbNDpdXSA9IHZh
bHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigi
X2NvbW1pdF9yYW5nZSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ3t9JyIu
Zm9ybWF0KGFyZykpCisKKyAgICAgICAgaWYgbm90IGJlZ2luX2FyZ3M6CisgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IoIl9jb21taXRfcmFuZ2UoKSBtaXNzaW5nIHJlcXVpcmVkICdiZWdpbl8n
IGFyZ3VtZW50cyIpCisgICAgICAgIGlmIG5vdCBlbmRfYXJnczoKKyAgICAgICAgICAgIHJhaXNl
IFR5cGVFcnJvcigiX2NvbW1pdF9yYW5nZSgpIG1pc3NpbmcgcmVxdWlyZWQgJ2VuZF8nIGFyZ3Vt
ZW50cyIpCisKKyAgICAgICAgaWYgbGlzdChiZWdpbl9hcmdzLmtleXMoKSkgPT0gWydhcmd1bWVu
dCddOgorICAgICAgICAgICAgYmVnaW4gPSBzZWxmLmZpbmQoaW5jbHVkZV9sb2c9aW5jbHVkZV9s
b2csIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSwgKipiZWdpbl9hcmdzKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgYmVnaW4gPSBzZWxmLmNvbW1pdChpbmNsdWRlX2xvZz1pbmNsdWRlX2xv
ZywgaW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlLCAqKmJlZ2luX2FyZ3MpCisKKyAgICAgICAgaWYg
bGlzdChlbmRfYXJncy5rZXlzKCkpID09IFsnYXJndW1lbnQnXToKKyAgICAgICAgICAgIGVuZCA9
IHNlbGYuZmluZChpbmNsdWRlX2xvZz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVyPWlu
Y2x1ZGVfaWRlbnRpZmllciwgKiplbmRfYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGVuZCA9IHNlbGYuY29tbWl0KGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50
aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmVuZF9hcmdzKQorCisgICAgICAgIGlmIG5vdCBi
ZWdpbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3t9JyBmYWlsZWQgdG8gZGVmaW5l
IGJlZ2luIGluIF9jb21taXRfcmFuZ2UoKSIuZm9ybWF0KGJlZ2luX2FyZ3MpKQorICAgICAgICBp
ZiBub3QgZW5kOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30nIGZhaWxlZCB0byBk
ZWZpbmUgYmVnaW4gaW4gX2NvbW1pdF9yYW5nZSgpIi5mb3JtYXQoZW5kX2FyZ3MpKQorICAgICAg
ICBpZiBiZWdpbi50aW1lc3RhbXAgPiBlbmQudGltZXN0YW1wOgorICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKCIne30nIHByZS1kYXRlcyAne30nIGluIF9jb21taXRfcmFuZ2UoKSIuZm9ybWF0
KGJlZ2luLCBlbmQpKQorICAgICAgICBpZiBlbmQuYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFu
Y2ggYW5kIGJlZ2luLmJyYW5jaCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAg
cmFpc2UgVHlwZUVycm9yKCIne30nIGFuZCAne30nIGRvIG5vdCBzaGFyZSBsaW5lYXIgaGlzdG9y
eSIuZm9ybWF0KGJlZ2luLCBlbmQpKQorICAgICAgICByZXR1cm4gYmVnaW4sIGVuZAorCisgICAg
ZGVmIGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRy
dWUsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKICAg
ICBkZWYgcHJpb3JpdGl6ZV9icmFuY2hlcyhzZWxmLCBicmFuY2hlcyk6CiAgICAgICAgIGlmIGxl
bihicmFuY2hlcykgPT0gMToKICAgICAgICAgICAgIHJldHVybiBicmFuY2hlc1swXQpJbmRleDog
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2xvY2FsL2dpdC5weQkocmV2aXNpb24gMjc2OTY4KQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yMCwxMiArMjAsMTggQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAoraW1wb3J0IGNhbGVuZGFyCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBp
bXBvcnQgcmUKIGltcG9ydCBzaXgKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBv
cnQgdGltZQogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0b3JzLCBUaW1l
b3V0RXhwaXJlZAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQorCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0b3JzCiBmcm9tIHdlYmtpdHNjbXB5
LmxvY2FsIGltcG9ydCBTY20KIGZyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJp
YnV0b3IsIGxvZwogCkBAIC0zMDAsNiArMzA2LDk0IEBAIGNsYXNzIEdpdChTY20pOgogICAgICAg
ICAgICAgbWVzc2FnZT1sb2djb250ZW50IGlmIGluY2x1ZGVfbG9nIGVsc2UgTm9uZSwKICAgICAg
ICAgKQogCisgICAgZGVmIF9hcmdzX2Zyb21fY29udGVudChzZWxmLCBjb250ZW50LCBpbmNsdWRl
X2xvZz1UcnVlKToKKyAgICAgICAgcmVzdWx0ID0ge30KKyAgICAgICAgZm9yIGxpbmUgaW4gY29u
dGVudC5zcGxpdGxpbmVzKClbOjRdOgorICAgICAgICAgICAgc3BsaXQgPSBsaW5lLnNwbGl0KCc6
ICcpCisgICAgICAgICAgICBpZiBzcGxpdFswXSA9PSAnQXV0aG9yJzoKKyAgICAgICAgICAgICAg
ICByZXN1bHRbJ2F1dGhvciddID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGxpbmUubHN0cmlw
KCksIHNlbGYuY29udHJpYnV0b3JzKQorICAgICAgICAgICAgZWxpZiBzcGxpdFswXSA9PSAnQ29t
bWl0RGF0ZSc6CisgICAgICAgICAgICAgICAgdHpfZGlmZiA9IGxpbmUuc3BsaXQoJyAnKVstMV0K
KyAgICAgICAgICAgICAgICBkYXRlID0gZGF0ZXRpbWUuc3RycHRpbWUoc3BsaXRbMV0ubHN0cmlw
KClbOi1sZW4odHpfZGlmZildLCAnJWEgJWIgJWQgJUg6JU06JVMgJVkgJykKKyAgICAgICAgICAg
ICAgICBkYXRlICs9IHRpbWVkZWx0YSgKKyAgICAgICAgICAgICAgICAgICAgaG91cnM9aW50KHR6
X2RpZmZbMTozXSksCisgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM9aW50KHR6X2RpZmZbMzo1
XSksCisgICAgICAgICAgICAgICAgKSAqICgxIGlmIHR6X2RpZmZbMF0gPT0gJy0nIGVsc2UgLTEp
CisgICAgICAgICAgICAgICAgcmVzdWx0Wyd0aW1lc3RhbXAnXSA9IGludChjYWxlbmRhci50aW1l
Z20oZGF0ZS50aW1ldHVwbGUoKSkpIC0gdGltZS50aW1lem9uZQorCisgICAgICAgIG1lc3NhZ2Ug
PSAnJworICAgICAgICBmb3IgbGluZSBpbiBjb250ZW50LnNwbGl0bGluZXMoKVs1Ol06CisgICAg
ICAgICAgICBtZXNzYWdlICs9IGxpbmVbNDpdICsgJ1xuJworICAgICAgICByZXN1bHRbJ21lc3Nh
Z2UnXSA9IG1lc3NhZ2UucnN0cmlwKCkgaWYgaW5jbHVkZV9sb2cgZWxzZSBOb25lCisKKyAgICAg
ICAgbWF0Y2hlcyA9IHNlbGYuR0lUX1NWTl9SRVZJU0lPTi5maW5kYWxsKG1lc3NhZ2UpCisgICAg
ICAgIHJlc3VsdFsncmV2aXNpb24nXSA9IGludChtYXRjaGVzWy0xXS5zcGxpdCgnQCcpWzBdKSBp
ZiBtYXRjaGVzIGVsc2UgTm9uZQorCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBj
b21taXRzKHNlbGYsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlLCAq
Kmt3YXJncyk6CisgICAgICAgIGJlZ2luLCBlbmQgPSBzZWxmLl9jb21taXRfcmFuZ2UoaW5jbHVk
ZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllciwgKiprd2FyZ3MpCisKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgbG9nID0gTm9uZQorICAgICAgICAgICAgbG9nID0gc3VicHJvY2Vzcy5Q
b3BlbigKKyAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cnLCAnLS1mb3Jt
YXQ9ZnVsbGVyJywgJ3t9Li4ue30nLmZvcm1hdChlbmQuaGFzaCwgYmVnaW4uaGFzaCldLAorICAg
ICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAgICBzdGRvdXQ9
c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUs
CisgICAgICAgICAgICAgICAgKiooZGljdChlbmNvZGluZz0ndXRmLTgnKSBpZiBzeXMudmVyc2lv
bl9pbmZvID4gKDMsIDApIGVsc2UgZGljdCgpKQorICAgICAgICAgICAgKQorICAgICAgICAgICAg
aWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFp
bGVkIHRvIGNvbnN0cnVjdCBoaXN0b3J5IGZvciAne30nIi5mb3JtYXQoZW5kLmJyYW5jaCkpCisK
KyAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgIHBy
ZXZpb3VzID0gW2VuZF0KKyAgICAgICAgICAgIHdoaWxlIGxpbmU6CisgICAgICAgICAgICAgICAg
aWYgbm90IGxpbmUuc3RhcnRzd2l0aCgnY29tbWl0ICcpOgorICAgICAgICAgICAgICAgICAgICBy
YWlzZSBPU0Vycm9yKCdGYWlsZWQgdG8gcGFyc2UgYGdpdCBsb2dgIGZvcm1hdCcpCisgICAgICAg
ICAgICAgICAgYnJhbmNoX3BvaW50ID0gcHJldmlvdXNbMF0uYnJhbmNoX3BvaW50CisgICAgICAg
ICAgICAgICAgaWRlbnRpZmllciA9IHByZXZpb3VzWzBdLmlkZW50aWZpZXIKKyAgICAgICAgICAg
ICAgICBoYXNoID0gbGluZS5zcGxpdCgnICcpWy0xXS5yc3RyaXAoKQorICAgICAgICAgICAgICAg
IGlmIGhhc2ggIT0gcHJldmlvdXNbMF0uaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRp
ZmllciAtPSAxCisKKyAgICAgICAgICAgICAgICBpZiBub3QgaWRlbnRpZmllcjoKKyAgICAgICAg
ICAgICAgICAgICAgaWRlbnRpZmllciA9IGJyYW5jaF9wb2ludAorICAgICAgICAgICAgICAgICAg
ICBicmFuY2hfcG9pbnQgPSBOb25lCisKKyAgICAgICAgICAgICAgICBjb250ZW50ID0gJycKKyAg
ICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICAg
ICAgd2hpbGUgbGluZSBhbmQgbm90IGxpbmUuc3RhcnRzd2l0aCgnY29tbWl0ICcpOgorICAgICAg
ICAgICAgICAgICAgICBjb250ZW50ICs9IGxpbmUKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9
IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorCisgICAgICAgICAgICAgICAgY29tbWl0ID0gQ29tbWl0
KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisgICAgICAgICAg
ICAgICAgICAgIGhhc2g9aGFzaCwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWVuZC5icmFu
Y2ggaWYgaWRlbnRpZmllciBhbmQgYnJhbmNoX3BvaW50IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5j
aCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1pZGVudGlmaWVyIGlmIGluY2x1ZGVf
aWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludD1i
cmFuY2hfcG9pbnQgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZSwKKyAgICAgICAgICAg
ICAgICAgICAgb3JkZXI9MCwKKyAgICAgICAgICAgICAgICAgICAgKipzZWxmLl9hcmdzX2Zyb21f
Y29udGVudChjb250ZW50LCBpbmNsdWRlX2xvZz1pbmNsdWRlX2xvZykKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2ggPT0gcHJldmlvdXNbMF0uaGFzaDoK
KyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNbMF0gPSBjb21taXQKKyAgICAgICAgICAgICAg
ICBlbGlmIGNvbW1pdC50aW1lc3RhbXAgPT0gcHJldmlvdXNbMF0udGltZXN0YW1wOgorICAgICAg
ICAgICAgICAgICAgICBmb3IgY2FjaGVkIGluIHByZXZpb3VzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FjaGVkLm9yZGVyICs9IDEKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMuYXBw
ZW5kKGNvbW1pdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBm
b3IgY2FjaGVkIGluIHByZXZpb3VzOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgY2Fj
aGVkCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gW2NvbW1pdF0KKworICAgICAgICAg
ICAgZm9yIGNhY2hlZCBpbiBwcmV2aW91czoKKyAgICAgICAgICAgICAgICBjYWNoZWQub3JkZXIg
Kz0gYmVnaW4ub3JkZXIKKyAgICAgICAgICAgICAgICB5aWVsZCBjYWNoZWQKKyAgICAgICAgZmlu
YWxseToKKyAgICAgICAgICAgIGlmIGxvZzoKKyAgICAgICAgICAgICAgICBsb2cua2lsbCgpCisK
ICAgICBkZWYgZmluZChzZWxmLCBhcmd1bWVudCwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9p
ZGVudGlmaWVyPVRydWUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmd1bWVudCwgc2l4
LnN0cmluZ190eXBlcyk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCAn
YXJndW1lbnQnIHRvIGJlIGEgc3RyaW5nLCBub3QgJ3t9JyIuZm9ybWF0KHR5cGUoYXJndW1lbnQp
KSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L2xvY2FsL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9sb2NhbC9zdm4ucHkJKHJldmlzaW9uIDI3Njk2OCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5w
eQkod29ya2luZyBjb3B5KQpAQCAtNDAxLDYgKzQwMSw5MCBAQCBjbGFzcyBTdm4oU2NtKToKICAg
ICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZSwKICAgICAgICAgKQogCisgICAgZGVmIF9hcmdzX2Zy
b21fY29udGVudChzZWxmLCBjb250ZW50LCBpbmNsdWRlX2xvZz1UcnVlKToKKyAgICAgICAgbGVh
ZGluZyA9IGNvbnRlbnQuc3BsaXRsaW5lcygpWzBdCisgICAgICAgIG1hdGNoID0gQ29udHJpYnV0
b3IuU1ZOX0FVVEhPUl9SRS5tYXRjaChsZWFkaW5nKSBvciBDb250cmlidXRvci5TVk5fQVVUSE9S
X1FfUkUubWF0Y2gobGVhZGluZykKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAg
cmV0dXJuIHt9CisKKyAgICAgICAgdHpfZGlmZiA9IG1hdGNoLmdyb3VwKCdkYXRlJykuc3BsaXQo
JyAnLCAyKVstMV0KKyAgICAgICAgZGF0ZSA9IGRhdGV0aW1lLnN0cnB0aW1lKG1hdGNoLmdyb3Vw
KCdkYXRlJylbOi1sZW4odHpfZGlmZildLCAnJVktJW0tJWQgJUg6JU06JVMgJykKKyAgICAgICAg
ZGF0ZSArPSB0aW1lZGVsdGEoCisgICAgICAgICAgICBob3Vycz1pbnQodHpfZGlmZlsxOjNdKSwK
KyAgICAgICAgICAgIG1pbnV0ZXM9aW50KHR6X2RpZmZbMzo1XSksCisgICAgICAgICkgKiAoMSBp
ZiB0el9kaWZmWzBdID09ICctJyBlbHNlIC0xKQorCisgICAgICAgIHJldHVybiBkaWN0KAorICAg
ICAgICAgICAgcmV2aXNpb249aW50KG1hdGNoLmdyb3VwKCdyZXZpc2lvbicpKSwKKyAgICAgICAg
ICAgIHRpbWVzdGFtcD1pbnQoY2FsZW5kYXIudGltZWdtKGRhdGUudGltZXR1cGxlKCkpKSwKKyAg
ICAgICAgICAgIGF1dGhvcj1Db250cmlidXRvci5mcm9tX3NjbV9sb2cobGVhZGluZywgc2VsZi5j
b250cmlidXRvcnMpLAorICAgICAgICAgICAgbWVzc2FnZT0nXG4nLmpvaW4oY29udGVudC5zcGxp
dGxpbmVzKClbMjpdKS5yc3RyaXAoKSBpZiBpbmNsdWRlX2xvZyBlbHNlIE5vbmUsCisgICAgICAg
ICkKKworCisgICAgZGVmIGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9p
ZGVudGlmaWVyPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2Nv
bW1pdF9yYW5nZShpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmt3YXJn
cykKKyAgICAgICAgcHJldmlvdXMgPSBlbmQKKyAgICAgICAgaWYgZW5kLmJyYW5jaCA9PSBzZWxm
LmRlZmF1bHRfYnJhbmNoIG9yICcvJyBpbiBlbmQuYnJhbmNoOgorICAgICAgICAgICAgYnJhbmNo
X2FyZyA9ICdeL3t9Jy5mb3JtYXQoZW5kLmJyYW5jaCkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGJyYW5jaF9hcmcgPSAnXi9icmFuY2hlcy97fScuZm9ybWF0KGVuZC5icmFuY2gpCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgbG9nID0gTm9uZQorICAgICAgICAgICAgbG9nID0gc3Vi
cHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICBbc2VsZi5leGVjdXRhYmxlKCksICdsb2cn
LCAnLXInLCAne306e30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgZW5kLnJldmlzaW9u
LCBiZWdpbi5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICApLCBicmFuY2hfYXJnXSArIChbXSBp
ZiBpbmNsdWRlX2xvZyBlbHNlIFsnLXEnXSksCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucm9v
dF9wYXRoLAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAg
ICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAqKihkaWN0
KGVuY29kaW5nPSd1dGYtOCcpIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSBkaWN0
KCkpCisgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBsb2cucG9sbCgpOgorICAgICAgICAg
ICAgICAgIHJhaXNlIHNlbGYuRXhjZXB0aW9uKCdGYWlsZWQgdG8gZmluZCBjb21taXRzIGJldHdl
ZW4ge30gYW5kIHt9IG9uIHt9Jy5mb3JtYXQoYmVnaW4sIGVuZCwgYnJhbmNoX2FyZykpCisKKyAg
ICAgICAgICAgIGNvbnRlbnQgPSAnJworICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVh
ZGxpbmUoKQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBpZiBsaW5l
IGFuZCBsaW5lLnJzdHJpcCgpICE9ICctJyAqIDcyOgorICAgICAgICAgICAgICAgICAgICBjb250
ZW50ICs9IGxpbmUKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxp
bmUoKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYg
bm90IGNvbnRlbnQ6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRs
aW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGJy
YW5jaF9wb2ludCA9IHByZXZpb3VzLmJyYW5jaF9wb2ludCBpZiBpbmNsdWRlX2lkZW50aWZpZXIg
ZWxzZSBOb25lCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHByZXZpb3VzLmlkZW50aWZp
ZXIgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgYXJn
cyA9IHNlbGYuX2FyZ3NfZnJvbV9jb250ZW50KGNvbnRlbnQsIGluY2x1ZGVfbG9nPWluY2x1ZGVf
bG9nKQorICAgICAgICAgICAgICAgIGlmIGFyZ3NbJ3JldmlzaW9uJ10gIT0gcHJldmlvdXMucmV2
aXNpb246CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHByZXZpb3VzCisgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgLT0gMQorICAgICAgICAgICAgICAgIGlmIG5vdCBpZGVudGlmaWVy
OgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAgIHByZXZp
b3VzID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYuaWQs
CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1lbmQuYnJhbmNoIGlmIGJyYW5jaF9wb2ludCBl
bHNlIHNlbGYuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9
aWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50PWJyYW5jaF9wb2lu
dCwKKyAgICAgICAgICAgICAgICAgICAgKiphcmdzCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgIGNvbnRlbnQgPSAnJworICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAg
ICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0
LnJlYWRsaW5lKCkKKworICAgICAgICAgICAgeWllbGQgcHJldmlvdXMKKworICAgICAgICBmaW5h
bGx5OgorICAgICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgIGxvZy5raWxsKCkKKwog
ICAgIGRlZiBjaGVja291dChzZWxmLCBhcmd1bWVudCk6CiAgICAgICAgIGNvbW1pdCA9IHNlbGYu
ZmluZChhcmd1bWVudCkKICAgICAgICAgaWYgbm90IGNvbW1pdDoKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9tb2Nrcy9sb2NhbC9naXQucHkJKHJldmlzaW9uIDI3Njk2OCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBvcwog
aW1wb3J0IHJlCitpbXBvcnQgdGltZQogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQog
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tzLCBPdXRwdXRDYXB0dXJlLCBTdHJpbmdJTwpA
QCAtMjI4LDcgKzIyOSw3IEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5icmFuY2gsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0aG9yPXNlbGYuZmluZChhcmdzWzJdKS5hdXRob3IubmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD1zZWxmLmZpbmQoYXJnc1syXSku
YXV0aG9yLmVtYWlsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUu
ZnJvbXRpbWVzdGFtcChzZWxmLmZpbmQoYXJnc1syXSkudGltZXN0YW1wKS5zdHJmdGltZSgnJWEg
JWIgJWQgJUg6JU06JVMgJVknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPWRh
dGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoc2VsZi5maW5kKGFyZ3NbMl0pLnRpbWVzdGFtcCArIHRp
bWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWSArMDAwMCcpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0nXG4nLmpvaW4oWwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUpIGlmIGxpbmUgZWxzZSAnJyBmb3Ig
bGluZSBpbiBzZWxmLmZpbmQoYXJnc1syXSkubWVzc2FnZS5zcGxpdGxpbmVzKCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSArIChbJyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2
bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5
MWI0ZGJmYycuZm9ybWF0KApAQCAtMjQwLDYgKzI0MSwzMyBAQCBub3RoaW5nIHRvIGNvbW1pdCwg
d29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAg
ICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRp
b24ocmV0dXJuY29kZT0xMjgpLAogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0
ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLS1mb3JtYXQ9ZnVs
bGVyJywgcmUuY29tcGlsZShyJy4rXC5cLlwuLisnKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2Vs
Zi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdz
OiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29k
ZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xuJy5qb2luKFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdjb21taXQge2hhc2h9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAn
QXV0aG9yOiAgICAge2F1dGhvcn0gPHtlbWFpbH0+XG4nCisgICAgICAgICAgICAgICAgICAgICAg
ICAnQXV0aG9yRGF0ZToge2RhdGV9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnQ29tbWl0
OiAgICAge2F1dGhvcn0gPHtlbWFpbH0+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnQ29t
bWl0RGF0ZToge2RhdGV9XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnXG57bG9nfScuZm9y
bWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2g9Y29tbWl0Lmhhc2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD1jb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21t
aXQudGltZXN0YW1wICsgdGltZS50aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVT
ICVZICswMDAwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nPSdcbicuam9pbihb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnICAgICcgKyBsaW5lKSBpZiBsaW5l
IGVsc2UgJycgZm9yIGxpbmUgaW4gY29tbWl0Lm1lc3NhZ2Uuc3BsaXRsaW5lcygpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSArIChbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4ue30vcmVwb3NpdG9yeS97fS90cnVua0B7
fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMnLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3RlLnNwbGl0KCdAJylbLTFdLnNw
bGl0KCc6JylbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmJhc2VuYW1lKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
aXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKV0gaWYgZ2l0X3N2biBl
bHNlIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkpIGZvciBjb21taXQgaW4gc2VsZi5j
b21taXRzX2luX3JhbmdlKGFyZ3NbM10uc3BsaXQoJy4uLicpWy0xXSwgYXJnc1szXS5zcGxpdCgn
Li4uJylbMF0pCisgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxm
LmV4ZWN1dGFibGUsICdyZXYtbGlzdCcsICctLWNvdW50JywgJy0tbm8tbWVyZ2VzJywgcmUuY29t
cGlsZShyJy4rJyksCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBs
ZXRpb24oCkBAIC00NjMsMyArNDkxLDMyIEBAIG5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIHRy
ZWUgY2xlYW4KICAgICAgICAgICAgIHJldHVybmNvZGU9MCwKICAgICAgICAgICAgIHN0ZG91dD1z
dGRvdXQuZ2V0dmFsdWUoKSwKICAgICAgICAgKQorCisgICAgZGVmIGNvbW1pdHNfaW5fcmFuZ2Uo
c2VsZiwgYmVnaW4sIGVuZCk6CisgICAgICAgIGJyYW5jaGVzID0gW3NlbGYuZGVmYXVsdF9icmFu
Y2hdCisgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLml0ZW1zKCk6
CisgICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgorICAg
ICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGVuZDoKKyAgICAgICAgICAgICAgICAgICAg
YnJhbmNoZXMuaW5zZXJ0KDAsIGJyYW5jaCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgIGlmIGxlbihicmFuY2hlcykgPiAxOgorICAgICAgICAgICAgICAgIGJyZWFrCisK
KyAgICAgICAgaW5fcmFuZ2UgPSBGYWxzZQorICAgICAgICBwcmV2aW91cyA9IE5vbmUKKyAgICAg
ICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlczoKKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2
ZXJzZWQoc2VsZi5jb21taXRzW2JyYW5jaF0pOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5o
YXNoID09IGVuZDoKKyAgICAgICAgICAgICAgICAgICAgaW5fcmFuZ2UgPSBUcnVlCisgICAgICAg
ICAgICAgICAgaWYgaW5fcmFuZ2UgYW5kIChub3QgcHJldmlvdXMgb3IgY29tbWl0Lmhhc2ggIT0g
cHJldmlvdXMuaGFzaCk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGNvbW1pdAorICAgICAg
ICAgICAgICAgIHByZXZpb3VzID0gY29tbWl0CisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhh
c2ggPT0gYmVnaW46CisgICAgICAgICAgICAgICAgICAgIGluX3JhbmdlID0gRmFsc2UKKyAgICAg
ICAgICAgIGluX3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAgIGlmIHByZXZpb3VzIGFuZCBicmFu
Y2ggIT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBmb3IgY29tbWl0IGlu
IHJldmVyc2VkKHNlbGYuY29tbWl0c1tzZWxmLmRlZmF1bHRfYnJhbmNoXSk6CisgICAgICAgICAg
ICAgICAgICAgIGlmIHByZXZpb3VzLmJyYW5jaF9wb2ludCA9PSBjb21taXQuaWRlbnRpZmllcjoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGNvbW1pdC5oYXNoCkluZGV4OiBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5CShyZXZpc2lvbiAyNzY5NjgpCisrKyBUb29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4u
cHkJKHdvcmtpbmcgY29weSkKQEAgLTY1LDE0ICs2NSwxOCBAQCBjbGFzcyBTdm4obW9ja3MuU3Vi
cHJvY2Vzcyk6CiAKICAgICAgICAgc3VwZXIoU3ZuLCBzZWxmKS5fX2luaXRfXygKICAgICAgICAg
ICAgIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCi0gICAgICAgICAgICAgICAgc2VsZi5leGVjdXRh
YmxlLCAnaW5mbycsCi0gICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKLSAgICAgICAgICAg
ICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5faW5mbyhjd2Q9a3dh
cmdzLmdldCgnY3dkJywgJycpKQotICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0
ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdpbmZvJywgc2VsZi5CUkFOQ0hf
UkUsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogc2VsZi5faW5mbyhicmFuY2g9c2VsZi5CUkFO
Q0hfUkUubWF0Y2goYXJnc1syXSkuZ3JvdXAoJ2JyYW5jaCcpLCBjd2Q9a3dhcmdzLmdldCgnY3dk
JywgJycpKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdpbmZvJywgJy1yJywgcmUuY29tcGlsZShyJ1xkKycp
LAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2luZm8ocmV2aXNpb249aW50KGFyZ3Nb
M10pLCBjd2Q9a3dhcmdzLmdldCgnY3dkJywgJycpKQorICAgICAgICAgICAgKSwgbW9ja3MuU3Vi
cHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdpbmZvJywK
KyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRv
cj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9pbmZvKGN3ZD1rd2FyZ3MuZ2V0KCdjd2Qn
LCAnJykpCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAg
ICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xpc3QnLCAnXi9icmFuY2hlcycsCiAgICAgICAgICAg
ICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICph
cmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCkBAIC0xMTksNiArMTIzLDE0
IEBAIGNsYXNzIFN2bihtb2Nrcy5TdWJwcm9jZXNzKToKICAgICAgICAgICAgICAgICAgICAgcmV2
aXNpb249YXJnc1s1XSwKICAgICAgICAgICAgICAgICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2Ug
bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQogICAgICAgICAgICAgKSwgbW9j
a3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICds
b2cnLCAnLXInLCByZS5jb21waWxlKHInXGQrOlxkKycpLCBzZWxmLkJSQU5DSF9SRSwKKyAgICAg
ICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1i
ZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9sb2dfcmFuZ2UoCisgICAgICAgICAgICAgICAgICAg
IGJyYW5jaD1zZWxmLkJSQU5DSF9SRS5tYXRjaChhcmdzWzRdKS5ncm91cCgnYnJhbmNoJyksCisg
ICAgICAgICAgICAgICAgICAgIGVuZD1pbnQoYXJnc1szXS5zcGxpdCgnOicpWzBdKSwKKyAgICAg
ICAgICAgICAgICAgICAgYmVnaW49aW50KGFyZ3NbM10uc3BsaXQoJzonKVstMV0pLAorICAgICAg
ICAgICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQgZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlv
bihyZXR1cm5jb2RlPTEpCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAog
ICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ3VwJywgJy1yJywgcmUuY29tcGlsZShy
J1xkKycpLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6CkBAIC0yMDQsNiArMjE2LDI4IEBAIGNs
YXNzIFN2bihtb2Nrcy5TdWJwcm9jZXNzKToKICAgICAgICAgICAgICAgICApLAogICAgICAgICAp
CiAKKyAgICBkZWYgX2xvZ19yYW5nZShzZWxmLCBicmFuY2g9Tm9uZSwgZW5kPU5vbmUsIGJlZ2lu
PU5vbmUpOgorICAgICAgICBpZiBlbmQgPCBiZWdpbjoKKyAgICAgICAgICAgIHJldHVybiBtb2Nr
cy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEpCisKKyAgICAgICAgb3V0cHV0ID0gJycK
KyAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgIGZvciBiIGluIFticmFuY2gsICd0cnVu
ayddOgorICAgICAgICAgICAgZm9yIGNhbmRpZGF0ZSBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHMu
Z2V0KGIsIFtdKSk6CisgICAgICAgICAgICAgICAgaWYgY2FuZGlkYXRlLnJldmlzaW9uID4gZW5k
IG9yIGNhbmRpZGF0ZS5yZXZpc2lvbiA8IGJlZ2luOgorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzIGFuZCBwcmV2aW91cy5yZXZpc2lvbiA8
PSBjYW5kaWRhdGUucmV2aXNpb246CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICAgICAgICAgcHJldmlvdXMgPSBjYW5kaWRhdGUKKyAgICAgICAgICAgICAgICBvdXRwdXQg
Kz0gKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgICAgJ3tsaW5lfSB8IHts
aW5lc30gbGluZXNcblxuJworICAgICAgICAgICAgICAgICAgICAne2xvZ31cbicpLmZvcm1hdCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU9c2VsZi5sb2dfbGluZShjYW5kaWRhdGUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZXM9bGVuKGNhbmRpZGF0ZS5tZXNzYWdlLnNwbGl0
bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICBsb2c9Y2FuZGlkYXRlLm1lc3NhZ2UK
KyAgICAgICAgICAgICAgICApCisgICAgICAgIHJldHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlv
bihyZXR1cm5jb2RlPTAsIHN0ZG91dD1vdXRwdXQpCisKICAgICBkZWYgZmluZChzZWxmLCBicmFu
Y2g9Tm9uZSwgcmV2aXNpb249Tm9uZSk6CiAgICAgICAgIGlmIG5vdCBicmFuY2ggYW5kIG5vdCBy
ZXZpc2lvbjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLmhlYWQKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9naXRfaHVi
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L21vY2tzL3JlbW90ZS9naXRfaHViLnB5CShyZXZpc2lvbiAyNzY5NjgpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1v
dGUvZ2l0X2h1Yi5weQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw1MiBAQCBjbGFzcyBH
aXRIdWIobW9ja3MuUmVxdWVzdHMpOgogICAgICAgICAgICAgfSBmb3IgcmVmZXJlbmNlLCBjb21t
aXQgaW4gKHNlbGYuY29tbWl0cyBpZiB0eXBlID09ICdicmFuY2hlcycgZWxzZSBzZWxmLnRhZ3Mp
Lml0ZW1zKCkKICAgICAgICAgXSwgdXJsPXVybCkKIAorICAgIGRlZiBfY29tbWl0c19yZXNwb25z
ZShzZWxmLCB1cmwsIHJlZik6CisgICAgICAgIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1l
LCB0aW1lZGVsdGEKKworICAgICAgICBiYXNlID0gc2VsZi5jb21taXQocmVmKQorICAgICAgICBp
ZiBub3QgYmFzZToKKyAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZSgKKyAgICAgICAg
ICAgICAgICBzdGF0dXNfY29kZT00MDQsCisgICAgICAgICAgICAgICAgdXJsPXVybCwKKyAgICAg
ICAgICAgICAgICB0ZXh0PWpzb24uZHVtcHMoZGljdChtZXNzYWdlPSdObyBjb21taXQgZm91bmQg
Zm9yIFNIQToge30nLmZvcm1hdChyZWYpKSksCisgICAgICAgICAgICApCisKKyAgICAgICAgcmVz
cG9uc2UgPSBbXQorICAgICAgICBmb3IgYnJhbmNoIGluIFtzZWxmLmRlZmF1bHRfYnJhbmNoXSBp
ZiBiYXNlLmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGVsc2UgW2Jhc2UuYnJhbmNoLCBz
ZWxmLmRlZmF1bHRfYnJhbmNoXToKKyAgICAgICAgICAgIGluX3JhbmdlID0gRmFsc2UKKyAgICAg
ICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiByZXZlcnNl
ZChzZWxmLmNvbW1pdHNbYnJhbmNoXSk6CisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2gg
PT0gcmVmOgorICAgICAgICAgICAgICAgICAgICBpbl9yYW5nZSA9IFRydWUKKyAgICAgICAgICAg
ICAgICBpZiBub3QgaW5fcmFuZ2U6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICAgICAgICAgcHJldmlvdXMgPSBjb21taXQKKyAgICAgICAgICAgICAgICByZXNwb25zZS5h
cHBlbmQoeworICAgICAgICAgICAgICAgICAgICAnc2hhJzogY29tbWl0Lmhhc2gsCisgICAgICAg
ICAgICAgICAgICAgICdjb21taXQnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnYXV0aG9y
JzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogY29tbWl0LmF1dGhvci5u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbCc6IGNvbW1pdC5hdXRob3Iu
ZW1haWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGUnOiBkYXRldGltZS51dGNm
cm9tdGltZXN0YW1wKGNvbW1pdC50aW1lc3RhbXAgLSB0aW1lZGVsdGEoaG91cnM9Nykuc2Vjb25k
cykuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgfSwgJ2NvbW1pdHRlcic6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6
IGNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1haWwn
OiBjb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRl
JzogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1wIC0gdGltZWRlbHRh
KGhvdXJzPTcpLnNlY29uZHMpLnN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolU1onKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0sICdtZXNzYWdlJzogY29tbWl0Lm1lc3NhZ2UgKyAoJ1xuZ2l0
LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS93ZWJraXQve31Ae30g
MjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjXG4nLmZvcm1hdCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndHJ1bmsnIGlmIGNvbW1pdC5icmFuY2ggPT0gc2VsZi5kZWZh
dWx0X2JyYW5jaCBlbHNlIGNvbW1pdC5icmFuY2gsIGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICkgaWYgY29tbWl0LnJldmlzaW9uIGVsc2UgJycpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3VybCc6ICdodHRwczovL3t9L2dpdC9jb21taXRzL3t9Jy5mb3JtYXQo
c2VsZi5hcGlfcmVtb3RlLCBjb21taXQuaGFzaCksCisgICAgICAgICAgICAgICAgICAgIH0sICd1
cmwnOiAnaHR0cHM6Ly97fS9jb21taXRzL3t9Jy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlLCBjb21t
aXQuaGFzaCksCisgICAgICAgICAgICAgICAgICAgICdodG1sX3VybCc6ICdodHRwczovL3t9L2Nv
bW1pdC97fScuZm9ybWF0KHNlbGYucmVtb3RlLCBjb21taXQuaGFzaCksCisgICAgICAgICAgICAg
ICAgfSkKKyAgICAgICAgICAgIGlmIGJyYW5jaCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAg
ICAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW3NlbGYuZGVm
YXVsdF9icmFuY2hdKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXMuYnJhbmNoX3Bv
aW50ID09IGNvbW1pdC5pZGVudGlmaWVyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVmID0g
Y29tbWl0Lmhhc2gKKworICAgICAgICByZXR1cm4gbW9ja3MuUmVzcG9uc2UuZnJvbUpzb24ocmVz
cG9uc2UsIHVybD11cmwpCisKICAgICBkZWYgX2NvbW1pdF9yZXNwb25zZShzZWxmLCB1cmwsIHJl
Zik6CiAgICAgICAgIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIApA
QCAtMTUzLDkgKzE5OSw5IEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAg
ICAgICAgICAgICAgICduYW1lJzogY29tbWl0LmF1dGhvci5uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAnZW1haWwnOiBjb21taXQuYXV0aG9yLmVtYWlsLAogICAgICAgICAgICAgICAgICAgICAn
ZGF0ZSc6IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoY29tbWl0LnRpbWVzdGFtcCAtIHRpbWVk
ZWx0YShob3Vycz03KS5zZWNvbmRzKS5zdHJmdGltZSgnJVktJW0tJWRUJUg6JU06JVNaJyksCi0g
ICAgICAgICAgICAgICAgfSwgJ21lc3NhZ2UnOiBjb21taXQubWVzc2FnZSArICdcbmdpdC1zdm4t
aWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0L3t9QHt9IDI2OGY0
NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmY1xuJy5mb3JtYXQoCisgICAgICAgICAgICAg
ICAgfSwgJ21lc3NhZ2UnOiBjb21taXQubWVzc2FnZSArICgnXG5naXQtc3ZuLWlkOiBodHRwczov
L3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3dlYmtpdC97fUB7fSAyNjhmNDVjYy1jZDA5LTA0
MTAtYWIzYy1kNTI2OTFiNGRiZmNcbicuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAndHJ1
bmsnIGlmIGNvbW1pdC5icmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBlbHNlIGNvbW1pdC5i
cmFuY2gsIGNvbW1pdC5yZXZpc2lvbiwKLSAgICAgICAgICAgICAgICApIGlmIGNvbW1pdC5yZXZp
c2lvbiBlbHNlICcnLAorICAgICAgICAgICAgICAgICkgaWYgY29tbWl0LnJldmlzaW9uIGVsc2Ug
JycpLAogICAgICAgICAgICAgICAgICd1cmwnOiAnaHR0cHM6Ly97fS9naXQvY29tbWl0cy97fScu
Zm9ybWF0KHNlbGYuYXBpX3JlbW90ZSwgY29tbWl0Lmhhc2gpLAogICAgICAgICAgICAgfSwgJ3Vy
bCc6ICdodHRwczovL3t9L2NvbW1pdHMve30nLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUsIGNvbW1p
dC5oYXNoKSwKICAgICAgICAgICAgICdodG1sX3VybCc6ICdodHRwczovL3t9L2NvbW1pdC97fScu
Zm9ybWF0KHNlbGYucmVtb3RlLCBjb21taXQuaGFzaCksCkBAIC0yMzMsMTAgKzI3OSwxMSBAQCBj
bGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgogICAgICAgICAgICAgKSwgdXJsPXVybAogICAg
ICAgICApCiAKLSAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgZGF0YT1Ob25lLCAq
Kmt3YXJncyk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGRhdGE9Tm9uZSwg
cGFyYW1zPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgaWYgbm90IHVybC5zdGFydHN3aXRoKCdo
dHRwOi8vJykgYW5kIG5vdCB1cmwuc3RhcnRzd2l0aCgnaHR0cHM6Ly8nKToKICAgICAgICAgICAg
IHJldHVybiBtb2Nrcy5SZXNwb25zZS5jcmVhdGU0MDQodXJsKQogCisgICAgICAgIHBhcmFtcyA9
IHBhcmFtcyBvciB7fQogICAgICAgICBzdHJpcHBlZF91cmwgPSB1cmwuc3BsaXQoJzovLycpWy0x
XQogCiAgICAgICAgICMgVG9wLWxldmVsIEFQSSByZXF1ZXN0CkBAIC0yNDcsNiArMjk0LDEwIEBA
IGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAgIGlmIHN0cmlwcGVkX3VybCBp
biBbJ3t9L2JyYW5jaGVzJy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlKSwgJ3t9L3RhZ3MnLmZvcm1h
dChzZWxmLmFwaV9yZW1vdGUpXToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9saXN0X3JlZnNf
cmVzcG9uc2UodXJsPXVybCwgdHlwZT1zdHJpcHBlZF91cmwuc3BsaXQoJy8nKVstMV0pCiAKKyAg
ICAgICAgIyBSZXR1cm4gYSBjb21taXQgYW5kIGl0J3MgcGFyZW50cworICAgICAgICBpZiBzdHJp
cHBlZF91cmwgPT0gJ3t9L2NvbW1pdHMnLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUpIGFuZCBwYXJh
bXMuZ2V0KCdzaGEnKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRzX3Jlc3BvbnNl
KHVybD11cmwsIHJlZj1wYXJhbXNbJ3NoYSddKQorCiAgICAgICAgICMgRXh0cmFjdCBzaW5nbGUg
Y29tbWl0CiAgICAgICAgIGlmIHN0cmlwcGVkX3VybC5zdGFydHN3aXRoKCd7fS9jb21taXRzLycu
Zm9ybWF0KHNlbGYuYXBpX3JlbW90ZSkpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1p
dF9yZXNwb25zZSh1cmw9dXJsLCByZWY9c3RyaXBwZWRfdXJsLnNwbGl0KCcvJylbLTFdKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3Mv
cmVtb3RlL3N2bi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvc3ZuLnB5CShyZXZpc2lvbiAyNzY5Njgp
CisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nr
cy9yZW1vdGUvc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMzAgKzEwNiwxNyBAQCBjbGFz
cyBTdm4obW9ja3MuUmVxdWVzdHMpOgogCiAgICAgICAgIGlmIGNhdGVnb3J5IGFuZCBjYXRlZ29y
eS5zdGFydHN3aXRoKCdicmFuY2hlcy8nKToKICAgICAgICAgICAgIGNhdGVnb3J5ID0gY2F0ZWdv
cnkuc3BsaXQoJy8nKVstMV0KKyAgICAgICAgY2F0ZWdvcnkgPSBbY2F0ZWdvcnldIGlmIGNhdGVn
b3J5IGVsc2Ugc2VsZi5icmFuY2hlcyhzdGFydCkgKyBzZWxmLnRhZ3Moc3RhcnQpCiAKLSAgICAg
ICAgaWYgbm90IGNhdGVnb3J5OgotICAgICAgICAgICAgZm9yIGNvbW1pdHMgaW4gc2VsZi5jb21t
aXRzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gY29tbWl0czoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgY29tbWl0LnJldmlzaW9uID09IHN0YXJ0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgY2F0ZWdvcnkgPSBjb21taXQuYnJhbmNoCi0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG5vdCBjYXRlZ29yeToKLSAgICAgICAgICAgIHJl
dHVybiBbXQotCi0gICAgICAgIHJlc3VsdCA9IFtjb21taXQgZm9yIGNvbW1pdCBpbiByZXZlcnNl
ZChzZWxmLmNvbW1pdHNbY2F0ZWdvcnldKV0KLSAgICAgICAgaWYgc2VsZi5jb21taXRzW2NhdGVn
b3J5XVswXS5icmFuY2hfcG9pbnQ6Ci0gICAgICAgICAgICByZXN1bHQgKz0gW2NvbW1pdCBmb3Ig
Y29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0c1sndHJ1bmsnXVs6c2VsZi5jb21taXRzW2Nh
dGVnb3J5XVswXS5icmFuY2hfcG9pbnRdKV0KLQotICAgICAgICBmb3IgaW5kZXggaW4gcmV2ZXJz
ZWQocmFuZ2UobGVuKHJlc3VsdCkpKToKLSAgICAgICAgICAgIGlmIHJlc3VsdFtpbmRleF0ucmV2
aXNpb24gPCBlbmQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzppbmRleF0KLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgcmVzdWx0W2luZGV4XS5yZXZp
c2lvbiA+IHN0YXJ0OgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFtpbmRleDpdCi0g
ICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIHBy
ZXZpb3VzID0gTm9uZQorICAgICAgICBmb3IgYiBpbiBjYXRlZ29yeSArIFsndHJ1bmsnXToKKyAg
ICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzLmdldChiLCBb
XSkpOgorICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZS5yZXZpc2lvbiA+IHN0YXJ0IG9yIGNh
bmRpZGF0ZS5yZXZpc2lvbiA8IGVuZDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgICAgICBpZiBwcmV2aW91cyBhbmQgcHJldmlvdXMucmV2aXNpb24gPD0gY2FuZGlk
YXRlLnJldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
ICAgIHByZXZpb3VzID0gY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgeWllbGQgY2FuZGlkYXRl
CiAKICAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgZGF0YT1Ob25lLCAqKmt3YXJn
cyk6CiAgICAgICAgIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKQEAg
LTI2NiwxMSArMjUzLDExIEBAIGNsYXNzIFN2bihtb2Nrcy5SZXF1ZXN0cyk6CiAKICAgICAgICAg
IyBMb2cgZm9yIGNvbW1pdAogICAgICAgICBpZiBtZXRob2QgPT0gJ1JFUE9SVCcgYW5kIHN0cmlw
cGVkX3VybC5zdGFydHN3aXRoKCd7fSEnLmZvcm1hdChzZWxmLnJlbW90ZSkpIGFuZCBtYXRjaCBh
bmQgZGF0YS5nZXQoJ1M6bG9nLXJlcG9ydCcpOgotICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYu
cmFuZ2UoCisgICAgICAgICAgICBjb21taXRzID0gbGlzdChzZWxmLnJhbmdlKAogICAgICAgICAg
ICAgICAgIGNhdGVnb3J5PW1hdGNoLmdyb3VwKCdjYXRlZ29yeScpLAogICAgICAgICAgICAgICAg
IHN0YXJ0PWludChkYXRhWydTOmxvZy1yZXBvcnQnXVsnUzpzdGFydC1yZXZpc2lvbiddKSwKICAg
ICAgICAgICAgICAgICBlbmQ9aW50KGRhdGFbJ1M6bG9nLXJlcG9ydCddWydTOmVuZC1yZXZpc2lv
biddKSwKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICkpCiAKICAgICAgICAgICAgIGxpbWl0
ID0gaW50KGRhdGFbJ1M6bG9nLXJlcG9ydCddLmdldCgnUzpsaW1pdCcsIDApKQogICAgICAgICAg
ICAgaWYgbGltaXQgYW5kIGxlbihjb21taXRzKSA+IGxpbWl0OgpJbmRleDogVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcmVtb3RlL2dpdF9odWIucHkJKHJldmlzaW9uIDI3Njk2OCkKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9naXRfaHViLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEdpdEh1YihTY20pOgogICAgIGRlZiBp
c19naXQoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgcmVxdWVzdChzZWxm
LCBwYXRoPU5vbmUsIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUsIGF1dGhlbnRpY2F0ZWQ9Tm9u
ZSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgcGF0aD1Ob25lLCBwYXJhbXM9Tm9uZSwgaGVhZGVy
cz1Ob25lLCBhdXRoZW50aWNhdGVkPU5vbmUsIHBhZ2luYXRlPVRydWUpOgogICAgICAgICBoZWFk
ZXJzID0ge2tleTogdmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gaGVhZGVycy5pdGVtcygpfSBpZiBo
ZWFkZXJzIGVsc2UgZGljdCgpCiAgICAgICAgIGhlYWRlcnNbJ0FjY2VwdCddID0gaGVhZGVycy5n
ZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi92bmQuZ2l0aHViLnYzK2pzb24nKQogCkBAIC0xMDUs
NyArMTA1LDcgQEAgY2xhc3MgR2l0SHViKFNjbSk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQog
ICAgICAgICByZXN1bHQgPSByZXNwb25zZS5qc29uKCkKIAotICAgICAgICB3aGlsZSBpc2luc3Rh
bmNlKHJlc3BvbnNlLmpzb24oKSwgbGlzdCkgYW5kIGxlbihyZXNwb25zZS5qc29uKCkpID09IHBh
cmFtc1sncGVyX3BhZ2UnXToKKyAgICAgICAgd2hpbGUgcGFnaW5hdGUgYW5kIGlzaW5zdGFuY2Uo
cmVzcG9uc2UuanNvbigpLCBsaXN0KSBhbmQgbGVuKHJlc3BvbnNlLmpzb24oKSkgPT0gcGFyYW1z
WydwZXJfcGFnZSddOgogICAgICAgICAgICAgcGFyYW1zWydwYWdlJ10gKz0gMQogICAgICAgICAg
ICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQodXJsLCBwYXJhbXM9cGFyYW1zLCBoZWFkZXJzPWhl
YWRlcnMsIGF1dGg9YXV0aCkKICAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9
IDIwMDoKQEAgLTI4NywxNiArMjg3LDIyIEBAIGNsYXNzIEdpdEh1YihTY20pOgogICAgICAgICAj
IGl0J3MgcG9zc2libGUgZm9yIGEgc2VyaWVzIG9mIGNvbW1pdHMgdG8gc2hhcmUgYSBjb21taXQg
dGltZS4gVG8gaGFuZGxlIHRoaXMgY2FzZSwgd2UgYXNzaWduIGVhY2ggY29tbWl0IGEKICAgICAg
ICAgIyB6ZXJvLWluZGV4ZWQgIm9yZGVyIiB3aXRoaW4gaXQncyB0aW1lc3RhbXAuCiAgICAgICAg
IG9yZGVyID0gMAotICAgICAgICB3aGlsZSBub3QgaWRlbnRpZmllciBvciBvcmRlciArIDEgPCBp
ZGVudGlmaWVyICsgKGJyYW5jaF9wb2ludCBvciAwKToKLSAgICAgICAgICAgIHJlc3BvbnNlID0g
c2VsZi5yZXF1ZXN0KCdjb21taXRzL3t9Jy5mb3JtYXQoJ3t9fnt9Jy5mb3JtYXQoY29tbWl0X2Rh
dGFbJ3NoYSddLCBvcmRlciArIDEpKSkKLSAgICAgICAgICAgIGlmIG5vdCByZXNwb25zZToKLSAg
ICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcGFyZW50X3RpbWVzdGFtcCA9IGludChj
YWxlbmRhci50aW1lZ20oZGF0ZXRpbWUuc3RycHRpbWUoCi0gICAgICAgICAgICAgICAgcmVzcG9u
c2VbJ2NvbW1pdCddWydjb21taXR0ZXInXVsnZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVNaJywK
LSAgICAgICAgICAgICkudGltZXR1cGxlKCkpKQotICAgICAgICAgICAgaWYgcGFyZW50X3RpbWVz
dGFtcCAhPSB0aW1lc3RhbXA6CisgICAgICAgIGxoYXNoID0gY29tbWl0X2RhdGFbJ3NoYSddCisg
ICAgICAgIHdoaWxlIGxoYXNoOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qo
J2NvbW1pdHMnLCBwYWdpbmF0ZT1GYWxzZSwgcGFyYW1zPWRpY3Qoc2hhPWxoYXNoLCBwZXJfcGFn
ZT0yMCkpCisgICAgICAgICAgICBpZiBsZW4ocmVzcG9uc2UpIDw9IDE6CiAgICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgIG9yZGVyICs9IDEKKyAgICAgICAgICAgIGZvciBjIGluIHJl
c3BvbnNlOgorICAgICAgICAgICAgICAgIGlmIGxoYXNoID09IGNbJ3NoYSddOgorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHBhcmVudF90aW1lc3RhbXAgPSBp
bnQoY2FsZW5kYXIudGltZWdtKGRhdGV0aW1lLnN0cnB0aW1lKAorICAgICAgICAgICAgICAgICAg
ICBjWydjb21taXQnXVsnY29tbWl0dGVyJ11bJ2RhdGUnXSwgJyVZLSVtLSVkVCVIOiVNOiVTWics
CisgICAgICAgICAgICAgICAgKS50aW1ldHVwbGUoKSkpCisgICAgICAgICAgICAgICAgaWYgcGFy
ZW50X3RpbWVzdGFtcCAhPSB0aW1lc3RhbXA6CisgICAgICAgICAgICAgICAgICAgIGxoYXNoID0g
Tm9uZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxoYXNoID0g
Y1snc2hhJ10KKyAgICAgICAgICAgICAgICBvcmRlciArPSAxCiAKICAgICAgICAgcmV0dXJuIENv
bW1pdCgKICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5pZCwKQEAgLTMxMyw2ICszMTks
NjcgQEAgY2xhc3MgR2l0SHViKFNjbSk6CiAgICAgICAgICAgICApLCBtZXNzYWdlPWNvbW1pdF9k
YXRhWydjb21taXQnXVsnbWVzc2FnZSddIGlmIGluY2x1ZGVfbG9nIGVsc2UgTm9uZSwKICAgICAg
ICAgKQogCisgICAgZGVmIGNvbW1pdHMoc2VsZiwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9p
ZGVudGlmaWVyPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2Nv
bW1pdF9yYW5nZShpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmt3YXJn
cykKKworICAgICAgICBwcmV2aW91cyA9IGVuZAorICAgICAgICBjYWNoZWQgPSBbcHJldmlvdXNd
CisgICAgICAgIHdoaWxlIHByZXZpb3VzOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJl
cXVlc3QoJ2NvbW1pdHMnLCBwYWdpbmF0ZT1GYWxzZSwgcGFyYW1zPWRpY3Qoc2hhPXByZXZpb3Vz
Lmhhc2gpKQorICAgICAgICAgICAgaWYgbm90IHJlc3BvbnNlOgorICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICBmb3IgY29tbWl0X2RhdGEgaW4gcmVzcG9uc2U6CisgICAgICAgICAg
ICAgICAgYnJhbmNoX3BvaW50ID0gcHJldmlvdXMuYnJhbmNoX3BvaW50CisgICAgICAgICAgICAg
ICAgaWRlbnRpZmllciA9IHByZXZpb3VzLmlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBj
b21taXRfZGF0YVsnc2hhJ10gPT0gcHJldmlvdXMuaGFzaDoKKyAgICAgICAgICAgICAgICAgICAg
Y2FjaGVkID0gY2FjaGVkWzotMV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyIC09IDEKKworICAgICAgICAgICAgICAgIGlmIG5vdCBpZGVudGlm
aWVyOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAgIG1h
dGNoZXMgPSBzZWxmLkdJVF9TVk5fUkVWSVNJT04uZmluZGFsbChjb21taXRfZGF0YVsnY29tbWl0
J11bJ21lc3NhZ2UnXSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaGVzWy0x
XS5zcGxpdCgnQCcpWzBdKSBpZiBtYXRjaGVzIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAg
ZW1haWxfbWF0Y2ggPSBzZWxmLkVNQUlMX1JFLm1hdGNoKGNvbW1pdF9kYXRhWydjb21taXQnXVsn
YXV0aG9yJ11bJ2VtYWlsJ10pCisgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KGNhbGVu
ZGFyLnRpbWVnbShkYXRldGltZS5zdHJwdGltZSgKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0
X2RhdGFbJ2NvbW1pdCddWydjb21taXR0ZXInXVsnZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVNa
JywKKyAgICAgICAgICAgICAgICApLnRpbWV0dXBsZSgpKSkKKworICAgICAgICAgICAgICAgIHBy
ZXZpb3VzID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYu
aWQsCisgICAgICAgICAgICAgICAgICAgIGhhc2g9Y29tbWl0X2RhdGFbJ3NoYSddLAorICAgICAg
ICAgICAgICAgICAgICByZXZpc2lvbj1yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgYnJh
bmNoPWVuZC5icmFuY2ggaWYgaWRlbnRpZmllciBhbmQgYnJhbmNoX3BvaW50IGVsc2Ugc2VsZi5k
ZWZhdWx0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1pZGVudGlmaWVy
IGlmIGluY2x1ZGVfaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGJy
YW5jaF9wb2ludD1icmFuY2hfcG9pbnQgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZSwK
KyAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPXRpbWVzdGFtcCwKKyAgICAgICAgICAgICAg
ICAgICAgYXV0aG9yPXNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdF9kYXRhWydjb21taXQnXVsnYXV0aG9yJ11bJ25hbWUnXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVtYWlsX21hdGNoLmdyb3VwKCdlbWFpbCcpIGlmIGVtYWlsX21hdGNo
IGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgKSwgb3JkZXI9MCwKKyAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT1jb21taXRfZGF0YVsnY29tbWl0J11bJ21lc3NhZ2UnXSBpZiBpbmNs
dWRlX2xvZyBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlm
IG5vdCBjYWNoZWQgb3IgY2FjaGVkWzBdLnRpbWVzdGFtcCAhPSBwcmV2aW91cy50aW1lc3RhbXA6
CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNhY2hlZDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHlpZWxkIGMKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVkID0gW3ByZXZpb3VzXQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNhY2hl
ZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMub3JkZXIgKz0gMQorICAgICAgICAgICAgICAg
ICAgICBjYWNoZWQuYXBwZW5kKHByZXZpb3VzKQorCisgICAgICAgICAgICAgICAgaWYgcHJldmlv
dXMuaGFzaCA9PSBiZWdpbi5oYXNoIG9yIHByZXZpb3VzLnRpbWVzdGFtcCA8IGJlZ2luLnRpbWVz
dGFtcDoKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgZm9yIGMgaW4gY2FjaGVkOgorICAgICAgICAgICAgYy5v
cmRlciArPSBiZWdpbi5vcmRlcgorICAgICAgICAgICAgeWllbGQgYworCisKICAgICBkZWYgZmlu
ZChzZWxmLCBhcmd1bWVudCwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRy
dWUpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmd1bWVudCwgc2l4LnN0cmluZ190eXBl
cyk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCAnYXJndW1lbnQnIHRv
IGJlIGEgc3RyaW5nLCBub3QgJ3t9JyIuZm9ybWF0KHR5cGUoYXJndW1lbnQpKSkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvcmVtb3RlL3N2bi5weQkocmV2aXNpb24gMjc2OTY4KQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTQgKzMyLDE0IEBAIGltcG9ydCB4bWx0b2RpY3QKIAogZnJvbSBkYXRl
dGltZSBpbXBvcnQgZGF0ZXRpbWUKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGxvZywgcnVu
LCBkZWNvcmF0b3JzCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgZGVjb3JhdG9ycywgc3RyaW5n
X3V0aWxzCiBmcm9tIHdlYmtpdHNjbXB5LnJlbW90ZS5zY20gaW1wb3J0IFNjbQotZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRvciwgVmVyc2lvbgorZnJvbSB3ZWJraXRz
Y21weSBpbXBvcnQgQ29tbWl0LCBWZXJzaW9uCiAKIAogY2xhc3MgU3ZuKFNjbSk6CiAgICAgVVJM
X1JFID0gcmUuY29tcGlsZShyJ1xBaHR0cHM/Oi8vc3ZuLig/UDxob3N0PlxTKykvcmVwb3NpdG9y
eS9cUytcWicpCi0gICAgSElTVE9SWV9SRSA9IHJlLmNvbXBpbGUoYic8RDp2ZXJzaW9uLW5hbWU+
KD9QPHJldmlzaW9uPlxkKyk8L0Q6dmVyc2lvbi1uYW1lPicpCisgICAgREFUQV9SRSA9IHJlLmNv
bXBpbGUoYic8W1NEXTooP1A8dGFnPlxTKyk+KD9QPGNvbnRlbnQ+LiopPC9bU0RdOi4rPicpCiAg
ICAgQ0FDSEVfVkVSU0lPTiA9IFZlcnNpb24oMSkKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjQ0
LDggKzI0NCw4IEBAIGNsYXNzIFN2bihTY20pOgogCiAgICAgICAgICAgICBkZWZhdWx0X2NvdW50
ID0gMAogICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVzcG9uc2UuaXRlcl9saW5lcygpOgotICAg
ICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5ISVNUT1JZX1JFLm1hdGNoKGxpbmUpCi0gICAgICAg
ICAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5EQVRB
X1JFLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoIG9yIG1hdGNoLmdy
b3VwKCd0YWcnKSAhPSBiJ3ZlcnNpb24tbmFtZSc6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCiAKICAgICAgICAgICAgICAgICBpZiBub3QgZGlkX3dhcm46CkBAIC0yNTQsNyArMjU0LDcg
QEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZygnQ2Fj
aGluZyBjb21taXQgZGF0YSBmb3Ige30sIHRoaXMgd2lsbCB0YWtlIGEgZmV3IG1pbnV0ZXMuLi4n
LmZvcm1hdChicmFuY2gpKQogICAgICAgICAgICAgICAgICAgICAgICAgZGlkX3dhcm4gPSBUcnVl
CiAKLSAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgncmV2aXNpb24n
KSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgnY29udGVudCcp
KQogICAgICAgICAgICAgICAgIGlmIHBvcyA+IDAgYW5kIHNlbGYuX21ldGFkYXRhX2NhY2hlW2Jy
YW5jaF1bcG9zIC0gMV0gPT0gcmV2aXNpb246CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAg
ICAgICAgICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRfYnJhbmNoOgpAQCAtNDU1LDMgKzQ1NSw2
NyBAQCBjbGFzcyBTdm4oU2NtKToKICAgICAgICAgICAgIGF1dGhvcj1hdXRob3IsCiAgICAgICAg
ICAgICBtZXNzYWdlPW1lc3NhZ2UsCiAgICAgICAgICkKKworICAgIGRlZiBfYXJnc19mcm9tX2Nv
bnRlbnQoc2VsZiwgY29udGVudCwgaW5jbHVkZV9sb2c9VHJ1ZSk6CisgICAgICAgIHhtbCA9IHht
bHRvZGljdC5wYXJzZShjb250ZW50KQorICAgICAgICBkYXRlID0gZGF0ZXRpbWUuc3RycHRpbWUo
c3RyaW5nX3V0aWxzLmRlY29kZSh4bWxbJ1M6bG9nLWl0ZW0nXVsnUzpkYXRlJ10pLnNwbGl0KCcu
JylbMF0sICclWS0lbS0lZFQlSDolTTolUycpCisgICAgICAgIG5hbWUgPSBzdHJpbmdfdXRpbHMu
ZGVjb2RlKHhtbFsnUzpsb2ctaXRlbSddWydEOmNyZWF0b3ItZGlzcGxheW5hbWUnXSkKKworICAg
ICAgICByZXR1cm4gZGljdCgKKyAgICAgICAgICAgIHJldmlzaW9uPWludCh4bWxbJ1M6bG9nLWl0
ZW0nXVsnRDp2ZXJzaW9uLW5hbWUnXSksCisgICAgICAgICAgICBhdXRob3I9c2VsZi5jb250cmli
dXRvcnMuY3JlYXRlKG5hbWUsIG5hbWUpIGlmIG5hbWUgYW5kICdAJyBpbiBuYW1lIGVsc2Ugc2Vs
Zi5jb250cmlidXRvcnMuY3JlYXRlKG5hbWUpLAorICAgICAgICAgICAgdGltZXN0YW1wPWludChj
YWxlbmRhci50aW1lZ20oZGF0ZS50aW1ldHVwbGUoKSkpLAorICAgICAgICAgICAgbWVzc2FnZT1z
dHJpbmdfdXRpbHMuZGVjb2RlKHhtbFsnUzpsb2ctaXRlbSddWydEOmNvbW1lbnQnXSkgaWYgaW5j
bHVkZV9sb2cgZWxzZSBOb25lLAorICAgICAgICApCisKKyAgICBkZWYgY29tbWl0cyhzZWxmLCBp
bmNsdWRlX2xvZz1UcnVlLCBpbmNsdWRlX2lkZW50aWZpZXI9VHJ1ZSwgKiprd2FyZ3MpOgorICAg
ICAgICBiZWdpbiwgZW5kID0gc2VsZi5fY29tbWl0X3JhbmdlKGluY2x1ZGVfbG9nPUZhbHNlLCBp
bmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmt3YXJncykKKyAgICAgICAg
cHJldmlvdXMgPSBlbmQKKworICAgICAgICBjb250ZW50ID0gYicnCisgICAgICAgIHdpdGggcmVx
dWVzdHMucmVxdWVzdCgKKyAgICAgICAgICAgICAgICBtZXRob2Q9J1JFUE9SVCcsCisgICAgICAg
ICAgICAgICAgdXJsPSd7fSFzdm4vcnZyL3t9L3t9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYudXJsLAorICAgICAgICAgICAgICAgICAgICBlbmQucmV2aXNpb24sCisgICAgICAg
ICAgICAgICAgICAgIGVuZC5icmFuY2ggaWYgZW5kLmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJh
bmNoIG9yICcvJyBpbiBlbmQuYnJhbmNoIGVsc2UgJ2JyYW5jaGVzL3t9Jy5mb3JtYXQoZW5kLmJy
YW5jaCksCisgICAgICAgICAgICAgICAgKSwgc3RyZWFtPVRydWUsCisgICAgICAgICAgICAgICAg
aGVhZGVycz17CisgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwn
LAorICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAnLAorICAgICAg
ICAgICAgICAgICAgICAnREVQVEgnOiAnMScsCisgICAgICAgICAgICAgICAgfSwgZGF0YT0nPFM6
bG9nLXJlcG9ydCB4bWxuczpTPSJzdm46Ij5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICc8
UzpzdGFydC1yZXZpc2lvbj57ZW5kfTwvUzpzdGFydC1yZXZpc2lvbj5cbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICc8UzplbmQtcmV2aXNpb24+e2JlZ2lufTwvUzplbmQtcmV2aXNpb24+XG4n
CisgICAgICAgICAgICAgICAgICAgICAgICAnPFM6cGF0aD48L1M6cGF0aD5cbicKKyAgICAgICAg
ICAgICAgICAgICAgICAgICc8L1M6bG9nLXJlcG9ydD5cbicuZm9ybWF0KGVuZD1lbmQucmV2aXNp
b24sIGJlZ2luPWJlZ2luLnJldmlzaW9uKSwKKyAgICAgICAgKSBhcyByZXNwb25zZToKKyAgICAg
ICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFuY2ggaGlzdG9yeSBm
b3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZXNwb25z
ZS5pdGVyX2xpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBiJzxTOmxvZy1pdGVt
Pic6CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lICsgYidcbicKKyAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjb250ZW50ICs9IGxpbmUgKyBiJ1xu
JworICAgICAgICAgICAgICAgIGlmIGxpbmUgIT0gYic8L1M6bG9nLWl0ZW0+JzoKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWxmLl9hcmdz
X2Zyb21fY29udGVudChjb250ZW50LCBpbmNsdWRlX2xvZz1pbmNsdWRlX2xvZykKKworICAgICAg
ICAgICAgICAgIGJyYW5jaF9wb2ludCA9IHByZXZpb3VzLmJyYW5jaF9wb2ludCBpZiBpbmNsdWRl
X2lkZW50aWZpZXIgZWxzZSBOb25lCisgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IHByZXZp
b3VzLmlkZW50aWZpZXIgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZQorICAgICAgICAg
ICAgICAgIGlmIGFyZ3NbJ3JldmlzaW9uJ10gIT0gcHJldmlvdXMucmV2aXNpb246CisgICAgICAg
ICAgICAgICAgICAgIGlkZW50aWZpZXIgLT0gMQorICAgICAgICAgICAgICAgIGlmIG5vdCBpZGVu
dGlmaWVyOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50Cisg
ICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAg
IHByZXZpb3VzID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNl
bGYuaWQsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1lbmQuYnJhbmNoIGlmIGJyYW5jaF9w
b2ludCBlbHNlIHNlbGYuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICAgICAgICAgICAgIGlkZW50
aWZpZXI9aWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50PWJyYW5j
aF9wb2ludCwKKyAgICAgICAgICAgICAgICAgICAgKiphcmdzCisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgIHlpZWxkIHByZXZpb3VzCisgICAgICAgICAgICAgICAgY29udGVudCA9
IGInJwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVzdC5weQkocmV2
aXNpb24gMjc2OTY4KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyAr
MjMxLDcgQEAgQXV0aG9yOiBqYmVkYXJkQGFwcGxlLmNvbSA8amJlZGFyZEBhcHBsZQogRGF0ZTog
e30KIFJldmlzaW9uOiA0CiBJZGVudGlmaWVyOiAzQHRydW5rCi0nJycuZm9ybWF0KGRhdGV0aW1l
LmZyb210aW1lc3RhbXAoMTYwMTY4NjcwMCkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZ
JykpLAorJycnLmZvcm1hdChkYXRldGltZS5mcm9tdGltZXN0YW1wKDE2MDE2ODQ3MDApLnN0cmZ0
aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWScpKSwKICAgICAgICAgKQogCiAKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNzY5NjgpCisrKyBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L2dpdF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBpbXBvcnQgdW5pdHRl
c3QKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgTG9nZ2VyQ2FwdHVyZSwgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Mg
aW1wb3J0IFRpbWUgYXMgTW9ja1RpbWUKLWZyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvY2FsLCBt
b2NrcywgcmVtb3RlCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIGxvY2FsLCBtb2Nr
cywgcmVtb3RlCiAKIAogY2xhc3MgVGVzdEdpdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yODMs
NiArMjgzLDI4IEBAIGNsYXNzIFRlc3RHaXQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhh
c2g9J2JhZTVkMWU5MDk5OScpLm9yZGVyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhhc2g9J2Q4YmNlMjZmYTY1YycpLm9y
ZGVyKQogCisgICAgZGVmIHRlc3RfY29tbWl0cyhzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4g
W21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBn
aXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgICAgICBn
aXQgPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KFsKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNv
bW1pdChoYXNoPSdiYWU1ZDFlOScpLAorICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhh
c2g9JzFhYmUyNWI0JyksCisgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nZmZm
ODNiYjInKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicp
LAorICAgICAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQu
Y29tbWl0cyhiZWdpbl9oYXNoPSc5YjgzMTFmMicsIGVuZF9oYXNoPSdiYWU1ZDFlOScpKSkpCisK
KyAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5jaChzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4g
W21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBn
aXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgICAgICBn
aXQgPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KFsKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNv
bW1pdChoYXNoPSc2MjE2NTJhZCcpLAorICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhh
c2g9J2EzMGNlODQ5JyksCisgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nZmZm
ODNiYjInKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicp
LAorICAgICAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQu
Y29tbWl0cyhiZWdpbl9hcmd1bWVudD0nOWI4MzExZjInLCBlbmRfYXJndW1lbnQ9JzYyMTY1MmFk
JykpKSkKKwogCiBjbGFzcyBUZXN0R2l0SHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICByZW1v
dGUgPSAnaHR0cHM6Ly9naXRodWIuZXhhbXBsZS5jb20vV2ViS2l0L1dlYktpdCcKQEAgLTQxNSw2
ICs0MzcsMjcgQEAgY2xhc3MgVGVzdEdpdEh1Yih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHRlc3RfaWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVtb3RlLkdpdEh1Yihz
ZWxmLnJlbW90ZSkuaWQsICd3ZWJraXQnKQogCisgICAgZGVmIHRlc3RfY29tbWl0cyhzZWxmKToK
KyAgICAgICAgd2l0aCBtb2Nrcy5yZW1vdGUuR2l0SHViKCk6CisgICAgICAgICAgICBnaXQgPSBy
ZW1vdGUuR2l0SHViKHNlbGYucmVtb3RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChD
b21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFz
aD0nYmFlNWQxZTknKSwKKyAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzFhYmUyNWI0
JyksCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4M2JiMicpLAorICAgICAg
ICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nOWI4MzExZjInKSwKKyAgICAgICAgICAgIF0pLCBD
b21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQuY29tbWl0cyhiZWdpbl9oYXNoPSc5Yjgz
MTFmMicsIGVuZF9oYXNoPSdiYWU1ZDFlOScpKSkpCisKKyAgICBkZWYgdGVzdF9jb21taXRzX2Jy
YW5jaChzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5yZW1vdGUuR2l0SHViKCk6CisgICAgICAg
ICAgICBnaXQgPSByZW1vdGUuR2l0SHViKHNlbGYucmVtb3RlKQorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgIGdp
dC5jb21taXQoaGFzaD0nNjIxNjUyYWQnKSwKKyAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhh
c2g9J2EzMGNlODQ5JyksCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4M2Ji
MicpLAorICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nOWI4MzExZjInKSwKKyAgICAg
ICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQuY29tbWl0cyhiZWdp
bl9hcmd1bWVudD0nOWI4MzExZjInLCBlbmRfYXJndW1lbnQ9JzYyMTY1MmFkJykpKSkKKworCiAK
IGNsYXNzIFRlc3RCaXRCdWNrZXQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJlbW90ZSA9ICdo
dHRwczovL2JpdGJ1Y2tldC5leGFtcGxlLmNvbS9wcm9qZWN0cy9XRUJLSVQvcmVwb3Mvd2Via2l0
JwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
dGVzdC9zdm5fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zdm5fdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI3Njk2OCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
IGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRl
bHRhCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJraXRz
Y21weSBpbXBvcnQgbG9jYWwsIG1vY2tzLCByZW1vdGUKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0
IENvbW1pdCwgbG9jYWwsIG1vY2tzLCByZW1vdGUKIAogCiBjbGFzcyBUZXN0TG9jYWxTdm4odW5p
dHRlc3QuVGVzdENhc2UpOgpAQCAtMjMxLDYgKzIzMSwyNiBAQCBjbGFzcyBUZXN0TG9jYWxTdm4o
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBh
dGgpLCBPdXRwdXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2Nh
bC5Tdm4oc2VsZi5wYXRoKS5maW5kKCd0cnVuaycsIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSku
aWRlbnRpZmllcikKIAorICAgIGRlZiB0ZXN0X2NvbW1pdHMoc2VsZik6CisgICAgICAgIHdpdGgg
bW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAg
IHN2biA9IGxvY2FsLlN2bihzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChy
ZXZpc2lvbj0ncjYnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyNCcp
LAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IyJyksCisgICAgICAgICAg
ICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAgICAgICAgIF0pLCBDb21taXQu
RW5jb2RlcigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdpbl9yZXZpc2lvbj0ncjEnLCBl
bmRfcmV2aXNpb249J3I2JykpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYp
OgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgpLCBPdXRwdXRDYXB0dXJl
KCk6CisgICAgICAgICAgICBzdm4gPSBsb2NhbC5Tdm4oc2VsZi5wYXRoKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAg
ICAgIHN2bi5jb21taXQocmV2aXNpb249J3I3JyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1p
dChyZXZpc2lvbj0ncjMnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdy
MicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IxJyksCisgICAgICAg
ICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qoc3ZuLmNvbW1pdHMoYmVnaW5f
YXJndW1lbnQ9J3IxJywgZW5kX2FyZ3VtZW50PSdyNycpKSkpCisKIAogY2xhc3MgVGVzdFJlbW90
ZVN2bih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcmVtb3RlID0gJ2h0dHBzOi8vc3ZuLmV4YW1w
bGUub3JnL3JlcG9zaXRvcnkvd2Via2l0JwpAQCAtMzMxLDMgKzM1MSwyNCBAQCBjbGFzcyBUZXN0
UmVtb3RlU3ZuKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2lkKHNlbGYpOgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlbW90ZS5Tdm4oc2VsZi5yZW1vdGUpLmlkLCAnd2Vi
a2l0JykKKworICAgIGRlZiB0ZXN0X2NvbW1pdHMoc2VsZik6CisgICAgICAgIHNlbGYubWF4RGlm
ZiA9IE5vbmUKKyAgICAgICAgd2l0aCBtb2Nrcy5yZW1vdGUuU3ZuKCk6CisgICAgICAgICAgICBz
dm4gPSByZW1vdGUuU3ZuKHNlbGYucmVtb3RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgIHN2bi5jb21taXQo
cmV2aXNpb249J3I2JyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjQn
KSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyMicpLAorICAgICAgICAg
ICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IxJyksCisgICAgICAgICAgICBdKSwgQ29tbWl0
LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qoc3ZuLmNvbW1pdHMoYmVnaW5fcmV2aXNpb249J3IxJywg
ZW5kX3JldmlzaW9uPSdyNicpKSkpCisKKyAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5jaChzZWxm
KToKKyAgICAgICAgd2l0aCBtb2Nrcy5yZW1vdGUuU3ZuKCksIE91dHB1dENhcHR1cmUoKToKKyAg
ICAgICAgICAgIHN2biA9IHJlbW90ZS5Tdm4oc2VsZi5yZW1vdGUpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAg
c3ZuLmNvbW1pdChyZXZpc2lvbj0ncjcnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJl
dmlzaW9uPSdyMycpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IyJyks
CisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAgICAgICAg
IF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdpbl9hcmd1
bWVudD0ncjEnLCBlbmRfYXJndW1lbnQ9J3I3JykpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427713</attachid>
            <date>2021-05-04 17:00:50 -0700</date>
            <delta_ts>2021-05-06 10:37:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224890-20210504170048.patch</filename>
            <type>text/plain</type>
            <size>51884</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3Njk4OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYxIEBACisyMDIxLTA1LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgQVBJIHRvIGVmZmljaWVudGx5IGNyZWF0
ZSBhIHNlcXVlbmNlIG9mIGNvbW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDg5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY5NzU3MzM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUg
aXQgaXMgcG9zc2libGUgdG8gc2ltcGxlIGl0ZXJhdGUgdGhyb3VnaCBhIHJhbmdlIG9mIGNvbW1p
dHMgdG8gZGVmaW5lIHRoZW0sCisgICAgICAgIGV2ZXJ5IEFQSSB3ZSB1c2UgdG8gZGVmaW5lIGNv
bW1pdHMgaGFzIG11Y2ggbW9yZSBlZmZpY2llbnQgdGVjaG5pcXVlcy4KKworICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18u
cHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L2NvbnRyaWJ1dG9yLnB5OgorICAgICAgICAoQ29udHJpYnV0b3IpOiBBZGQgcmV2aXNp
b24gdG8gU1ZOX0FVVEhPUl9SRSBhbmQgYWRkIHJlZ2V4IHdpdGhvdXQgbGluZXMuCisgICAgICAg
IChDb250cmlidXRvci5mcm9tX3NjbV9sb2cpOiBTdHJpcCBsZWFkaW5nIHdoaXRlc3BhY2UgZnJv
bSBhdXRob3IuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAgICAoR2l0Ll9hcmdzX2Zyb21fY29udGVudCk6Cisg
ICAgICAgIChHaXQuY29tbWl0cyk6IFVzZSBgZ2l0IGxvZ2AgdG8gZWZmaWNpZW50bHkgY29tcHV0
ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5OgorICAgICAgICAoU3ZuLl9hcmdzX2Zyb21f
Y29udGVudCk6CisgICAgICAgIChTdm4uY29tbWl0cyk6IFVzZSBgc3ZuIGxvZ2AgdG8gZWZmaWNp
ZW50bHkgY29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5OgorICAgICAg
ICAoR2l0Ll9faW5pdF9fKTogQWRkIGBnaXQgbG9nYCBtb2NrLgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weToKKyAg
ICAgICAgKFN2bi5fX2luaXRfXyk6IEFkZCBgc3ZuIGxvZ2AgbW9jayBhbmQgbW9yZSBleHBsaWNp
dCBgc3ZuIGluZm9gIG1vY2suCisgICAgICAgIChTdm4uX2xvZ19yYW5nZSk6CisgICAgICAgICog
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dp
dF9odWIucHk6CisgICAgICAgIChHaXRIdWIuX2NvbW1pdHNfcmVzcG9uc2UpOiBSZXR1cm4gYWxs
IHBhcmVudCBjb21taXRzIHRvIHByb3ZpZGVkIHJlZi4KKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0
KToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9t
b2Nrcy9yZW1vdGUvc3ZuLnB5OgorICAgICAgICAoU3ZuLnJhbmdlKTogTW9yZSBlZmZpY2llbnRs
eSBjb21wdXRlIHRoZSByYW5nZS4KKyAgICAgICAgKFN2bi5yZXF1ZXN0KToKKyAgICAgICAgKiBT
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5w
eToKKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0KTogQWxsb3cgY2FsbGVyIHRvIGRpc2FibGUgcGFn
aW5hdGlvbi4KKyAgICAgICAgKEdpdEh1Yi5jb21taXQpOiBSZWR1Y2UgbnVtYmVyIG9mIHJlcXVl
c3RzIHJlcXVpcmVkIHRvIGNvbXB1dGUgb3JkZXIuCisgICAgICAgIChHaXRIdWIuY29tbWl0cyk6
IFVzaW5nIHRoZSBgY29tbWl0c2AgZW5kcG9pbnQsIG1vcmUgZWZmaWNpZW50bHkKKyAgICAgICAg
Y29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weToKKyAgICAgICAgKFN2bik6IEdl
bmVyYWxpemUgSElTVE9SWV9SRSB0byBtYXRjaCBhbnkgc2luZ2xlLWxpbmUgU1ZOIFhNTCByZXNw
b25zZS4KKyAgICAgICAgKFN2bi5fY2FjaGVfcmV2aXNpb25zKTogUmVwbGFjZSBISVNUT1JZX1JF
IHdpdGggREFUQV9SRS4KKyAgICAgICAgKFN2bi5jb21taXRzKTogVXNlIHN2bi9ydnIgdG8gZWZm
aWNpZW50bHkgY29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHk6CisgICAgICAgIChT
Y21CYXNlLl9jb21taXRfcmFuZ2UpOiBSZXR1cm4gYSBwYWlyIG9mIGNvbW1pdHMgcmVwcmVzZW50
aW5nIHRoZSByYW5nZQorICAgICAgICB0aGUgY2FsbGVyIGlzIHJlcXVlc3RpbmcsIGFuZCBwcmVm
b3JtIHNvbWUgYmFzaWMgc2FuaXR5IGNoZWNrcy4KKyAgICAgICAgKFNjbUJhc2UuY29tbWl0cyk6
IERlY2xhcmUgZnVuY3Rpb24gaW1wbGVtZW50ZWQgYnkgZGVjZWRlbnRzLgorICAgICAgICAqIFNj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzKToK
KyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzX2JyYW5jaCk6CisgICAgICAgIChUZXN0R2l0
SHViLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0R2l0SHViLnRlc3RfY29tbWl0c19icmFu
Y2gpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdExvY2FsU3ZuLnRlc3RfY29tbWl0
cyk6CisgICAgICAgIChUZXN0TG9jYWxTdm4udGVzdF9jb21taXRzX2JyYW5jaCk6CisgICAgICAg
IChUZXN0UmVtb3RlU3ZuLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0UmVtb3RlU3ZuLnRl
c3RfY29tbWl0c19icmFuY2gpOgorCiAyMDIxLTA1LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdHJ5IGFuZCByZS1lbmFibGUgQXBwbGVM
YW5ndWFnZXNUZXN0LlVwZGF0ZUFwcGxlTGFuZ3VhZ2VzIG9uIEFwcGxlIFNpbGljb24uCkluZGV4
OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS9zZXR1cC5weQkocmV2aXNp
b24gMjc2OTg4KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZGVmIHJlYWRtZSgpOgogCiBzZXR1
cCgKICAgICBuYW1lPSd3ZWJraXRzY21weScsCi0gICAgdmVyc2lvbj0nMC4xMy45JywKKyAgICB2
ZXJzaW9uPScwLjE0LjAnLAogICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGRlc2lnbmVkIHRvIGlu
dGVyYWN0IHdpdGggZ2l0IGFuZCBzdm4gcmVwb3NpdG9yaWVzLicsCiAgICAgbG9uZ19kZXNjcmlw
dGlvbj1yZWFkbWUoKSwKICAgICBjbGFzc2lmaWVycz1bCkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRfXy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9fX2luaXRf
Xy5weQkocmV2aXNpb24gMjc2OTg4KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAiUGxlYXNlIGluc3RhbGwgd2Via2l0
Y29yZXB5IHdpdGggYHBpcCBpbnN0YWxsIHdlYmtpdGNvcmVweSAtLWV4dHJhLWluZGV4LXVybCA8
cGFja2FnZSBpbmRleCBVUkw+YCIKICAgICApCiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDEzLCA5
KQordmVyc2lvbiA9IFZlcnNpb24oMCwgMTQsIDApCiAKIEF1dG9JbnN0YWxsLnJlZ2lzdGVyKFBh
Y2thZ2UoJ2Zhc3RlbmVycycsIFZlcnNpb24oMCwgMTUsIDApKSkKIEF1dG9JbnN0YWxsLnJlZ2lz
dGVyKFBhY2thZ2UoJ21vbm90b25pYycsIFZlcnNpb24oMSwgNSkpKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvY29udHJpYnV0b3IucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvY29udHJpYnV0b3IucHkJKHJldmlzaW9uIDI3Njk4OCkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw4IEBAIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgQVVU
T01BVEVEX0NIRUNLSU5fUkUgPSByZS5jb21waWxlKHInQXV0aG9yOiAoP1A8YXV0aG9yPi4qKSA8
ZGV2bnVsbD4nKQogICAgIFVOS05PV05fQVVUSE9SID0gcmUuY29tcGlsZShyJ0F1dGhvcjogKD9Q
PGF1dGhvcj4uKikgPE5vbmU+JykKICAgICBFTVBUWV9BVVRIT1IgPSByZS5jb21waWxlKHInQXV0
aG9yOiAoP1A8YXV0aG9yPi4qKSA8PicpCi0gICAgU1ZOX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUo
cidyXGQrIFx8ICg/UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+LiopIFx8IFxkKyBsaW5lcz8nKQor
ICAgIFNWTl9BVVRIT1JfUkUgPSByZS5jb21waWxlKHIncig/UDxyZXZpc2lvbj5cZCspIFx8ICg/
UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+LiopIFx8IFxkKyBsaW5lcz8nKQorICAgIFNWTl9BVVRI
T1JfUV9SRSA9IHJlLmNvbXBpbGUocidyKD9QPHJldmlzaW9uPlxkKykgXHwgKD9QPGVtYWlsPi4q
KSBcfCAoP1A8ZGF0ZT4uKiknKQogICAgIFNWTl9QQVRDSF9GUk9NX1JFID0gcmUuY29tcGlsZShy
J1BhdGNoIGJ5ICg/UDxhdXRob3I+LiopIDwoP1A8ZW1haWw+LiopPiBvbiBcZCstXGQrLVxkKycp
CiAKICAgICBjbGFzcyBFbmNvZGVyKGpzb24uSlNPTkVuY29kZXIpOgpAQCAtMTE1LDExICsxMTYs
MTkgQEAgY2xhc3MgQ29udHJpYnV0b3Iob2JqZWN0KToKICAgICAgICAgZW1haWwgPSBOb25lCiAg
ICAgICAgIGF1dGhvciA9IE5vbmUKIAotICAgICAgICBmb3IgZXhwcmVzc2lvbiBpbiBbY2xzLkdJ
VF9BVVRIT1JfUkUsIGNscy5TVk5fQVVUSE9SX1JFLCBjbHMuU1ZOX1BBVENIX0ZST01fUkUsIGNs
cy5BVVRPTUFURURfQ0hFQ0tJTl9SRSwgY2xzLlVOS05PV05fQVVUSE9SLCBjbHMuRU1QVFlfQVVU
SE9SXToKKyAgICAgICAgZm9yIGV4cHJlc3Npb24gaW4gWworICAgICAgICAgICAgY2xzLkdJVF9B
VVRIT1JfUkUsCisgICAgICAgICAgICBjbHMuU1ZOX0FVVEhPUl9SRSwKKyAgICAgICAgICAgIGNs
cy5TVk5fUEFUQ0hfRlJPTV9SRSwKKyAgICAgICAgICAgIGNscy5BVVRPTUFURURfQ0hFQ0tJTl9S
RSwKKyAgICAgICAgICAgIGNscy5VTktOT1dOX0FVVEhPUiwKKyAgICAgICAgICAgIGNscy5FTVBU
WV9BVVRIT1IsCisgICAgICAgICAgICBjbHMuU1ZOX0FVVEhPUl9RX1JFLAorICAgICAgICBdOgog
ICAgICAgICAgICAgbWF0Y2ggPSBleHByZXNzaW9uLm1hdGNoKGxpbmUpCiAgICAgICAgICAgICBp
ZiBtYXRjaDoKICAgICAgICAgICAgICAgICBpZiAnYXV0aG9yJyBpbiBleHByZXNzaW9uLmdyb3Vw
aW5kZXg6Ci0gICAgICAgICAgICAgICAgICAgIGF1dGhvciA9IG1hdGNoLmdyb3VwKCdhdXRob3In
KQorICAgICAgICAgICAgICAgICAgICBhdXRob3IgPSBtYXRjaC5ncm91cCgnYXV0aG9yJykubHN0
cmlwKCkKICAgICAgICAgICAgICAgICAgICAgaWYgJyhubyBhdXRob3IpJyBpbiBhdXRob3Igb3Ig
J0F1dG9tYXRlZCBDaGVja2luJyBpbiBhdXRob3Igb3IgJ1Vua25vd24nIGluIGF1dGhvcjoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dGhvciA9IE5vbmUKICAgICAgICAgICAgICAgICBpZiAn
ZW1haWwnIGluIGV4cHJlc3Npb24uZ3JvdXBpbmRleDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNlLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3NjbV9iYXNl
LnB5CShyZXZpc2lvbiAyNzY5ODgpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMs
MzggQEAgY2xhc3MgU2NtQmFzZShvYmplY3QpOgogICAgIGRlZiBjb21taXQoc2VsZiwgaGFzaD1O
b25lLCByZXZpc2lvbj1Ob25lLCBpZGVudGlmaWVyPU5vbmUsIGJyYW5jaD1Ob25lLCB0YWc9Tm9u
ZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKIAorICAgIGRlZiBfY29tbWl0X3JhbmdlKHNlbGYs
IGJlZ2luPU5vbmUsIGVuZD1Ob25lLCBpbmNsdWRlX2xvZz1GYWxzZSwgaW5jbHVkZV9pZGVudGlm
aWVyPVRydWUpOgorICAgICAgICBiZWdpbl9hcmdzID0gYmVnaW4gb3IgZGljdCgpCisgICAgICAg
IGVuZF9hcmdzID0gZW5kIG9yIGRpY3QoKQorCisgICAgICAgIGlmIG5vdCBiZWdpbl9hcmdzOgor
ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJfY29tbWl0X3JhbmdlKCkgbWlzc2luZyByZXF1
aXJlZCAnYmVnaW4nIGFyZ3VtZW50cyIpCisgICAgICAgIGlmIG5vdCBlbmRfYXJnczoKKyAgICAg
ICAgICAgIHJhaXNlIFR5cGVFcnJvcigiX2NvbW1pdF9yYW5nZSgpIG1pc3NpbmcgcmVxdWlyZWQg
J2VuZCcgYXJndW1lbnRzIikKKworICAgICAgICBpZiBsaXN0KGJlZ2luX2FyZ3Mua2V5cygpKSA9
PSBbJ2FyZ3VtZW50J106CisgICAgICAgICAgICBiZWdpbl9yZXN1bHQgPSBzZWxmLmZpbmQoaW5j
bHVkZV9sb2c9aW5jbHVkZV9sb2csIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSwgKipiZWdpbl9h
cmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmVnaW5fcmVzdWx0ID0gc2VsZi5jb21t
aXQoaW5jbHVkZV9sb2c9aW5jbHVkZV9sb2csIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxzZSwgKipi
ZWdpbl9hcmdzKQorCisgICAgICAgIGlmIGxpc3QoZW5kX2FyZ3Mua2V5cygpKSA9PSBbJ2FyZ3Vt
ZW50J106CisgICAgICAgICAgICBlbmRfcmVzdWx0ID0gc2VsZi5maW5kKGluY2x1ZGVfbG9nPWlu
Y2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyLCAqKmVuZF9h
cmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5kX3Jlc3VsdCA9IHNlbGYuY29tbWl0
KGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVu
dGlmaWVyLCAqKmVuZF9hcmdzKQorCisgICAgICAgIGlmIG5vdCBiZWdpbl9yZXN1bHQ6CisgICAg
ICAgICAgICByYWlzZSBUeXBlRXJyb3IoIid7fScgZmFpbGVkIHRvIGRlZmluZSBiZWdpbiBpbiBf
Y29tbWl0X3JhbmdlKCkiLmZvcm1hdChiZWdpbl9hcmdzKSkKKyAgICAgICAgaWYgbm90IGVuZF9y
ZXN1bHQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIid7fScgZmFpbGVkIHRvIGRlZmlu
ZSBiZWdpbiBpbiBfY29tbWl0X3JhbmdlKCkiLmZvcm1hdChlbmRfYXJncykpCisgICAgICAgIGlm
IGJlZ2luX3Jlc3VsdC50aW1lc3RhbXAgPiBlbmRfcmVzdWx0LnRpbWVzdGFtcDoKKyAgICAgICAg
ICAgIHJhaXNlIFR5cGVFcnJvcigiJ3t9JyBwcmUtZGF0ZXMgJ3t9JyBpbiBfY29tbWl0X3Jhbmdl
KCkiLmZvcm1hdChiZWdpbl9yZXN1bHQsIGVuZF9yZXN1bHQpKQorICAgICAgICBpZiBlbmRfcmVz
dWx0LmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoIGFuZCBiZWdpbl9yZXN1bHQuYnJhbmNo
ICE9IHNlbGYuZGVmYXVsdF9icmFuY2g6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIid7
fScgYW5kICd7fScgZG8gbm90IHNoYXJlIGxpbmVhciBoaXN0b3J5Ii5mb3JtYXQoYmVnaW5fcmVz
dWx0LCBlbmRfcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGJlZ2luX3Jlc3VsdCwgZW5kX3Jlc3Vs
dAorCisgICAgZGVmIGNvbW1pdHMoc2VsZiwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsIGluY2x1ZGVf
bG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlKToKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcigpCisKICAgICBkZWYgcHJpb3JpdGl6ZV9icmFuY2hlcyhzZWxmLCBicmFu
Y2hlcyk6CiAgICAgICAgIGlmIGxlbihicmFuY2hlcykgPT0gMToKICAgICAgICAgICAgIHJldHVy
biBicmFuY2hlc1swXQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvbG9jYWwvZ2l0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkocmV2aXNpb24gMjc2
OTg4KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkv
bG9jYWwvZ2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMiArMjAsMTggQEAKICMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGNhbGVuZGFyCiBpbXBvcnQg
bG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzaXgKK2ltcG9ydCBzdWJwcm9j
ZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
cnVuLCBkZWNvcmF0b3JzLCBUaW1lb3V0RXhwaXJlZAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0
ZXRpbWUsIHRpbWVkZWx0YQorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgcnVuLCBkZWNvcmF0
b3JzCiBmcm9tIHdlYmtpdHNjbXB5LmxvY2FsIGltcG9ydCBTY20KIGZyb20gd2Via2l0c2NtcHkg
aW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IsIGxvZwogCkBAIC0zMDAsNiArMzA2LDEwNiBAQCBj
bGFzcyBHaXQoU2NtKToKICAgICAgICAgICAgIG1lc3NhZ2U9bG9nY29udGVudCBpZiBpbmNsdWRl
X2xvZyBlbHNlIE5vbmUsCiAgICAgICAgICkKIAorICAgIGRlZiBfYXJnc19mcm9tX2NvbnRlbnQo
c2VsZiwgY29udGVudCwgaW5jbHVkZV9sb2c9VHJ1ZSk6CisgICAgICAgIGF1dGhvciA9IE5vbmUK
KyAgICAgICAgdGltZXN0YW1wID0gTm9uZQorCisgICAgICAgIGZvciBsaW5lIGluIGNvbnRlbnQu
c3BsaXRsaW5lcygpWzo0XToKKyAgICAgICAgICAgIHNwbGl0ID0gbGluZS5zcGxpdCgnOiAnKQor
ICAgICAgICAgICAgaWYgc3BsaXRbMF0gPT0gJ0F1dGhvcic6CisgICAgICAgICAgICAgICAgYXV0
aG9yID0gQ29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGxpbmUubHN0cmlwKCksIHNlbGYuY29udHJp
YnV0b3JzKQorICAgICAgICAgICAgZWxpZiBzcGxpdFswXSA9PSAnQ29tbWl0RGF0ZSc6CisgICAg
ICAgICAgICAgICAgdHpfZGlmZiA9IGxpbmUuc3BsaXQoJyAnKVstMV0KKyAgICAgICAgICAgICAg
ICBkYXRlID0gZGF0ZXRpbWUuc3RycHRpbWUoc3BsaXRbMV0ubHN0cmlwKClbOi1sZW4odHpfZGlm
ZildLCAnJWEgJWIgJWQgJUg6JU06JVMgJVkgJykKKyAgICAgICAgICAgICAgICBkYXRlICs9IHRp
bWVkZWx0YSgKKyAgICAgICAgICAgICAgICAgICAgaG91cnM9aW50KHR6X2RpZmZbMTozXSksCisg
ICAgICAgICAgICAgICAgICAgIG1pbnV0ZXM9aW50KHR6X2RpZmZbMzo1XSksCisgICAgICAgICAg
ICAgICAgKSAqICgxIGlmIHR6X2RpZmZbMF0gPT0gJy0nIGVsc2UgLTEpCisgICAgICAgICAgICAg
ICAgdGltZXN0YW1wID0gaW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0dXBsZSgpKSkgLSB0
aW1lLnRpbWV6b25lCisKKyAgICAgICAgbWVzc2FnZSA9ICcnCisgICAgICAgIGZvciBsaW5lIGlu
IGNvbnRlbnQuc3BsaXRsaW5lcygpWzU6XToKKyAgICAgICAgICAgIG1lc3NhZ2UgKz0gbGluZVs0
Ol0gKyAnXG4nCisgICAgICAgIG1hdGNoZXMgPSBzZWxmLkdJVF9TVk5fUkVWSVNJT04uZmluZGFs
bChtZXNzYWdlKQorCisgICAgICAgIHJldHVybiBkaWN0KAorICAgICAgICAgICAgcmV2aXNpb249
aW50KG1hdGNoZXNbLTFdLnNwbGl0KCdAJylbMF0pIGlmIG1hdGNoZXMgZWxzZSBOb25lLAorICAg
ICAgICAgICAgYXV0aG9yPWF1dGhvciwKKyAgICAgICAgICAgIHRpbWVzdGFtcD10aW1lc3RhbXAs
CisgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UucnN0cmlwKCkgaWYgaW5jbHVkZV9sb2cgZWxz
ZSBOb25lLAorICAgICAgICApCisKKyAgICBkZWYgY29tbWl0cyhzZWxmLCBiZWdpbj1Ob25lLCBl
bmQ9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUpOgorICAg
ICAgICBiZWdpbiwgZW5kID0gc2VsZi5fY29tbWl0X3JhbmdlKGJlZ2luPWJlZ2luLCBlbmQ9ZW5k
LCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyKQorCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGxvZyA9IE5vbmUKKyAgICAgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9w
ZW4oCisgICAgICAgICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgJy0tZm9ybWF0
PWZ1bGxlcicsICd7fS4uLnt9Jy5mb3JtYXQoZW5kLmhhc2gsIGJlZ2luLmhhc2gpXSwKKyAgICAg
ICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisgICAgICAgICAgICAgICAgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAor
ICAgICAgICAgICAgICAgICoqKGRpY3QoZW5jb2Rpbmc9J3V0Zi04JykgaWYgc3lzLnZlcnNpb25f
aW5mbyA+ICgzLCAwKSBlbHNlIGRpY3QoKSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlm
IGxvZy5wb2xsKCk6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5FeGNlcHRpb24oIkZhaWxl
ZCB0byBjb25zdHJ1Y3QgaGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGVuZC5icmFuY2gpKQorCisg
ICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisgICAgICAgICAgICBwcmV2
aW91cyA9IFtlbmRdCisgICAgICAgICAgICB3aGlsZSBsaW5lOgorICAgICAgICAgICAgICAgIGlm
IG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ2NvbW1pdCAnKToKKyAgICAgICAgICAgICAgICAgICAgcmFp
c2UgT1NFcnJvcignRmFpbGVkIHRvIHBhcnNlIGBnaXQgbG9nYCBmb3JtYXQnKQorICAgICAgICAg
ICAgICAgIGJyYW5jaF9wb2ludCA9IHByZXZpb3VzWzBdLmJyYW5jaF9wb2ludAorICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIgPSBwcmV2aW91c1swXS5pZGVudGlmaWVyCisgICAgICAgICAgICAg
ICAgaGFzaCA9IGxpbmUuc3BsaXQoJyAnKVstMV0ucnN0cmlwKCkKKyAgICAgICAgICAgICAgICBp
ZiBoYXNoICE9IHByZXZpb3VzWzBdLmhhc2g6CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXIgLT0gMQorCisgICAgICAgICAgICAgICAgaWYgbm90IGlkZW50aWZpZXI6CisgICAgICAgICAg
ICAgICAgICAgIGlkZW50aWZpZXIgPSBicmFuY2hfcG9pbnQKKyAgICAgICAgICAgICAgICAgICAg
YnJhbmNoX3BvaW50ID0gTm9uZQorCisgICAgICAgICAgICAgICAgY29udGVudCA9ICcnCisgICAg
ICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAg
IHdoaWxlIGxpbmUgYW5kIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ2NvbW1pdCAnKToKKyAgICAgICAg
ICAgICAgICAgICAgY29udGVudCArPSBsaW5lCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBs
b2cuc3Rkb3V0LnJlYWRsaW5lKCkKKworICAgICAgICAgICAgICAgIGNvbW1pdCA9IENvbW1pdCgK
KyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9pZD1zZWxmLmlkLAorICAgICAgICAgICAg
ICAgICAgICBoYXNoPWhhc2gsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1lbmQuYnJhbmNo
IGlmIGlkZW50aWZpZXIgYW5kIGJyYW5jaF9wb2ludCBlbHNlIHNlbGYuZGVmYXVsdF9icmFuY2gs
CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9aWRlbnRpZmllciBpZiBpbmNsdWRlX2lk
ZW50aWZpZXIgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQ9YnJh
bmNoX3BvaW50IGlmIGluY2x1ZGVfaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAg
ICAgICAgIG9yZGVyPTAsCisgICAgICAgICAgICAgICAgICAgICoqc2VsZi5fYXJnc19mcm9tX2Nv
bnRlbnQoY29udGVudCwgaW5jbHVkZV9sb2c9aW5jbHVkZV9sb2cpCisgICAgICAgICAgICAgICAg
KQorCisgICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBkb24ndCBkdXBsaWNhdGUgdGhl
IGZpcnN0IGFuZCBsYXN0IGNvbW1pdHMKKyAgICAgICAgICAgICAgICBpZiBjb21taXQuaGFzaCA9
PSBwcmV2aW91c1swXS5oYXNoOgorICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1swXSA9IGNv
bW1pdAorCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBzaGFyZSBhIHRpbWVzdGFtcCB3aXRoIHRo
ZSBwcmV2aW91cyBjb21taXQsIHRoYXQgbWVhbnMgdGhhdCB0aGlzIGNvbW1pdCBoYXMgYW4gb3Jk
ZXIKKyAgICAgICAgICAgICAgICAjIGxlc3MgdGhhbiB0aGUgc2V0IG9mIGNvbW1pdHMgY2FjaGVk
IGluIHByZXZpb3VzCisgICAgICAgICAgICAgICAgZWxpZiBjb21taXQudGltZXN0YW1wID09IHBy
ZXZpb3VzWzBdLnRpbWVzdGFtcDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGNhY2hlZCBpbiBw
cmV2aW91czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZC5vcmRlciArPSAxCisgICAg
ICAgICAgICAgICAgICAgIHByZXZpb3VzLmFwcGVuZChjb21taXQpCisKKyAgICAgICAgICAgICAg
ICAjIElmIHdlIGRvbid0IHNoYXJlIGEgdGltZXN0YW1wIHdpdGggdGhlIHByZXZpb3VzIHNldCBv
ZiBjb21taXRzLCB3ZSBzaG91bGQgcmV0dXJuIGFsbCBjb21taXRzCisgICAgICAgICAgICAgICAg
IyBjYWNoZWQgaW4gcHJldmlvdXMuCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIGNhY2hlZCBpbiBwcmV2aW91czoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHlpZWxkIGNhY2hlZAorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IFtjb21taXRdCisK
KyAgICAgICAgICAgIGZvciBjYWNoZWQgaW4gcHJldmlvdXM6CisgICAgICAgICAgICAgICAgY2Fj
aGVkLm9yZGVyICs9IGJlZ2luLm9yZGVyCisgICAgICAgICAgICAgICAgeWllbGQgY2FjaGVkCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgbG9n
LmtpbGwoKQorCiAgICAgZGVmIGZpbmQoc2VsZiwgYXJndW1lbnQsIGluY2x1ZGVfbG9nPVRydWUs
IGluY2x1ZGVfaWRlbnRpZmllcj1UcnVlKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJn
dW1lbnQsIHNpeC5zdHJpbmdfdHlwZXMpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
RXhwZWN0ZWQgJ2FyZ3VtZW50JyB0byBiZSBhIHN0cmluZywgbm90ICd7fSciLmZvcm1hdCh0eXBl
KGFyZ3VtZW50KSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9sb2NhbC9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5CShyZXZpc2lvbiAyNzY5
ODgpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9s
b2NhbC9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw2ICs0MDEsOTEgQEAgY2xhc3MgU3Zu
KFNjbSk6CiAgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsCiAgICAgICAgICkKIAorICAgIGRl
ZiBfYXJnc19mcm9tX2NvbnRlbnQoc2VsZiwgY29udGVudCwgaW5jbHVkZV9sb2c9VHJ1ZSk6Cisg
ICAgICAgIGxlYWRpbmcgPSBjb250ZW50LnNwbGl0bGluZXMoKVswXQorICAgICAgICBtYXRjaCA9
IENvbnRyaWJ1dG9yLlNWTl9BVVRIT1JfUkUubWF0Y2gobGVhZGluZykgb3IgQ29udHJpYnV0b3Iu
U1ZOX0FVVEhPUl9RX1JFLm1hdGNoKGxlYWRpbmcpCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAg
ICAgICAgICAgIHJldHVybiB7fQorCisgICAgICAgIHR6X2RpZmYgPSBtYXRjaC5ncm91cCgnZGF0
ZScpLnNwbGl0KCcgJywgMilbLTFdCisgICAgICAgIGRhdGUgPSBkYXRldGltZS5zdHJwdGltZSht
YXRjaC5ncm91cCgnZGF0ZScpWzotbGVuKHR6X2RpZmYpXSwgJyVZLSVtLSVkICVIOiVNOiVTICcp
CisgICAgICAgIGRhdGUgKz0gdGltZWRlbHRhKAorICAgICAgICAgICAgaG91cnM9aW50KHR6X2Rp
ZmZbMTozXSksCisgICAgICAgICAgICBtaW51dGVzPWludCh0el9kaWZmWzM6NV0pLAorICAgICAg
ICApICogKDEgaWYgdHpfZGlmZlswXSA9PSAnLScgZWxzZSAtMSkKKworICAgICAgICByZXR1cm4g
ZGljdCgKKyAgICAgICAgICAgIHJldmlzaW9uPWludChtYXRjaC5ncm91cCgncmV2aXNpb24nKSks
CisgICAgICAgICAgICB0aW1lc3RhbXA9aW50KGNhbGVuZGFyLnRpbWVnbShkYXRlLnRpbWV0dXBs
ZSgpKSksCisgICAgICAgICAgICBhdXRob3I9Q29udHJpYnV0b3IuZnJvbV9zY21fbG9nKGxlYWRp
bmcsIHNlbGYuY29udHJpYnV0b3JzKSwKKyAgICAgICAgICAgIG1lc3NhZ2U9J1xuJy5qb2luKGNv
bnRlbnQuc3BsaXRsaW5lcygpWzI6XSkucnN0cmlwKCkgaWYgaW5jbHVkZV9sb2cgZWxzZSBOb25l
LAorICAgICAgICApCisKKworICAgIGRlZiBjb21taXRzKHNlbGYsIGJlZ2luPU5vbmUsIGVuZD1O
b25lLCBpbmNsdWRlX2xvZz1UcnVlLCBpbmNsdWRlX2lkZW50aWZpZXI9VHJ1ZSk6CisgICAgICAg
IGJlZ2luLCBlbmQgPSBzZWxmLl9jb21taXRfcmFuZ2UoYmVnaW49YmVnaW4sIGVuZD1lbmQsIGlu
Y2x1ZGVfaWRlbnRpZmllcj1pbmNsdWRlX2lkZW50aWZpZXIpCisgICAgICAgIHByZXZpb3VzID0g
ZW5kCisgICAgICAgIGlmIGVuZC5icmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBvciAnLycg
aW4gZW5kLmJyYW5jaDoKKyAgICAgICAgICAgIGJyYW5jaF9hcmcgPSAnXi97fScuZm9ybWF0KGVu
ZC5icmFuY2gpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBicmFuY2hfYXJnID0gJ14vYnJh
bmNoZXMve30nLmZvcm1hdChlbmQuYnJhbmNoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGxvZyA9IE5vbmUKKyAgICAgICAgICAgIGxvZyA9IHN1YnByb2Nlc3MuUG9wZW4oCisgICAgICAg
ICAgICAgICAgW3NlbGYuZXhlY3V0YWJsZSgpLCAnbG9nJywgJy1yJywgJ3t9Ont9Jy5mb3JtYXQo
CisgICAgICAgICAgICAgICAgICAgIGVuZC5yZXZpc2lvbiwgYmVnaW4ucmV2aXNpb24sCisgICAg
ICAgICAgICAgICAgKSwgYnJhbmNoX2FyZ10gKyAoW10gaWYgaW5jbHVkZV9sb2cgZWxzZSBbJy1x
J10pLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnJvb3RfcGF0aCwKKyAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9j
ZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgKiooZGljdChlbmNvZGluZz0ndXRmLTgnKSBpZiBz
eXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVsc2UgZGljdCgpKQorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgaWYgbG9nLnBvbGwoKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2Vw
dGlvbignRmFpbGVkIHRvIGZpbmQgY29tbWl0cyBiZXR3ZWVuIHt9IGFuZCB7fSBvbiB7fScuZm9y
bWF0KGJlZ2luLCBlbmQsIGJyYW5jaF9hcmcpKQorCisgICAgICAgICAgICBjb250ZW50ID0gJycK
KyAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGRp
dmlkZXIgPSAnLScgKiA3MgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAg
ICBpZiBsaW5lIGFuZCBsaW5lLnJzdHJpcCgpICE9IGRpdmlkZXI6CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRlbnQgKz0gbGluZQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91
dC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
ICAgICBpZiBub3QgY29udGVudDoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRv
dXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAg
ICAgICAgYnJhbmNoX3BvaW50ID0gcHJldmlvdXMuYnJhbmNoX3BvaW50IGlmIGluY2x1ZGVfaWRl
bnRpZmllciBlbHNlIE5vbmUKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gcHJldmlvdXMu
aWRlbnRpZmllciBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lCisKKyAgICAgICAgICAg
ICAgICBhcmdzID0gc2VsZi5fYXJnc19mcm9tX2NvbnRlbnQoY29udGVudCwgaW5jbHVkZV9sb2c9
aW5jbHVkZV9sb2cpCisgICAgICAgICAgICAgICAgaWYgYXJnc1sncmV2aXNpb24nXSAhPSBwcmV2
aW91cy5yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgcHJldmlvdXMKKyAgICAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllciAtPSAxCisgICAgICAgICAgICAgICAgaWYgbm90IGlk
ZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBicmFuY2hfcG9pbnQK
KyAgICAgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZQorCisgICAgICAgICAgICAg
ICAgcHJldmlvdXMgPSBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9
c2VsZi5pZCwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWVuZC5icmFuY2ggaWYgYnJhbmNo
X3BvaW50IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllcj1pZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQ9YnJh
bmNoX3BvaW50LAorICAgICAgICAgICAgICAgICAgICAqKmFyZ3MKKyAgICAgICAgICAgICAgICAp
CisgICAgICAgICAgICAgICAgY29udGVudCA9ICcnCisgICAgICAgICAgICAgICAgaWYgbm90IGxp
bmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbGluZSA9IGxv
Zy5zdGRvdXQucmVhZGxpbmUoKQorCisgICAgICAgICAgICB5aWVsZCBwcmV2aW91cworCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgbG9nLmtp
bGwoKQorCiAgICAgZGVmIGNoZWNrb3V0KHNlbGYsIGFyZ3VtZW50KToKICAgICAgICAgY29tbWl0
ID0gc2VsZi5maW5kKGFyZ3VtZW50KQogICAgICAgICBpZiBub3QgY29tbWl0OgpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwv
Z2l0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL2dpdC5weQkocmV2aXNpb24gMjc2OTg4KQorKysgVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwv
Z2l0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiBpbXBvcnQganNvbgogaW1w
b3J0IG9zCiBpbXBvcnQgcmUKK2ltcG9ydCB0aW1lCiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9ja3MsIE91dHB1dENhcHR1cmUsIFN0
cmluZ0lPCkBAIC0yMjgsNyArMjI5LDcgQEAgbm90aGluZyB0byBjb21taXQsIHdvcmtpbmcgdHJl
ZSBjbGVhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1zZWxmLmJyYW5jaCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3I9c2VsZi5maW5kKGFyZ3NbMl0pLmF1
dGhvci5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsPXNlbGYuZmluZChh
cmdzWzJdKS5hdXRob3IuZW1haWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT1k
YXRldGltZS5mcm9tdGltZXN0YW1wKHNlbGYuZmluZChhcmdzWzJdKS50aW1lc3RhbXApLnN0cmZ0
aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGU9ZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChzZWxmLmZpbmQoYXJnc1syXSkudGltZXN0
YW1wICsgdGltZS50aW1lem9uZSkuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAw
JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nPSdcbicuam9pbihbCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyAgICAnICsgbGluZSkgaWYgbGluZSBlbHNl
ICcnIGZvciBsaW5lIGluIHNlbGYuZmluZChhcmdzWzJdKS5tZXNzYWdlLnNwbGl0bGluZXMoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICsgKFsnICAgIGdpdC1zdm4taWQ6IGh0
dHBzOi8vc3ZuLnt9L3JlcG9zaXRvcnkve30vdHJ1bmtAe30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFi
M2MtZDUyNjkxYjRkYmZjJy5mb3JtYXQoCkBAIC0yNDAsNiArMjQxLDMzIEBAIG5vdGhpbmcgdG8g
Y29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICAgICAgICAgICksCiAg
ICAgICAgICAgICAgICAgKSBpZiBzZWxmLmZpbmQoYXJnc1syXSkgZWxzZSBtb2Nrcy5Qcm9jZXNz
Q29tcGxldGlvbihyZXR1cm5jb2RlPTEyOCksCiAgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9j
ZXNzLlJvdXRlKAorICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xvZycsICctLWZv
cm1hdD1mdWxsZXInLCByZS5jb21waWxlKHInLitcLlwuXC4uKycpLAorICAgICAgICAgICAgICAg
IGN3ZD1zZWxmLnBhdGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywg
Kiprd2FyZ3M6IG1vY2tzLlByb2Nlc3NDb21wbGV0aW9uKAorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm5jb2RlPTAsCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0nXG4nLmpvaW4oWworICAg
ICAgICAgICAgICAgICAgICAgICAgJ2NvbW1pdCB7aGFzaH1cbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdBdXRob3I6ICAgICB7YXV0aG9yfSA8e2VtYWlsfT5cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdBdXRob3JEYXRlOiB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdDb21taXQ6ICAgICB7YXV0aG9yfSA8e2VtYWlsfT5cbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdDb21taXREYXRlOiB7ZGF0ZX1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICdcbnts
b2d9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaD1jb21taXQuaGFz
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3I9Y29tbWl0LmF1dGhvci5uYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsPWNvbW1pdC5hdXRob3IuZW1haWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT1kYXRldGltZS51dGNmcm9tdGltZXN0
YW1wKGNvbW1pdC50aW1lc3RhbXAgKyB0aW1lLnRpbWV6b25lKS5zdHJmdGltZSgnJWEgJWIgJWQg
JUg6JU06JVMgJVkgKzAwMDAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2c9J1xu
Jy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUp
IGlmIGxpbmUgZWxzZSAnJyBmb3IgbGluZSBpbiBjb21taXQubWVzc2FnZS5zcGxpdGxpbmVzKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICsgKFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyAgICBnaXQtc3ZuLWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9
L3RydW5rQHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdGUuc3BsaXQoJ0An
KVstMV0uc3BsaXQoJzonKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9zLnBhdGguYmFzZW5hbWUocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApXSBpZiBn
aXRfc3ZuIGVsc2UgW10pLAorICAgICAgICAgICAgICAgICAgICAgICAgKSkgZm9yIGNvbW1pdCBp
biBzZWxmLmNvbW1pdHNfaW5fcmFuZ2UoYXJnc1szXS5zcGxpdCgnLi4uJylbLTFdLCBhcmdzWzNd
LnNwbGl0KCcuLi4nKVswXSkKKyAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICApLCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAg
ICAgIHNlbGYuZXhlY3V0YWJsZSwgJ3Jldi1saXN0JywgJy0tY291bnQnLCAnLS1uby1tZXJnZXMn
LCByZS5jb21waWxlKHInLisnKSwKICAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9j
ZXNzQ29tcGxldGlvbigKQEAgLTQ2MywzICs0OTEsMzQgQEAgbm90aGluZyB0byBjb21taXQsIHdv
cmtpbmcgdHJlZSBjbGVhbgogICAgICAgICAgICAgcmV0dXJuY29kZT0wLAogICAgICAgICAgICAg
c3Rkb3V0PXN0ZG91dC5nZXR2YWx1ZSgpLAogICAgICAgICApCisKKyAgICBkZWYgY29tbWl0c19p
bl9yYW5nZShzZWxmLCBiZWdpbiwgZW5kKToKKyAgICAgICAgYnJhbmNoZXMgPSBbc2VsZi5kZWZh
dWx0X2JyYW5jaF0KKyAgICAgICAgZm9yIGJyYW5jaCwgY29tbWl0cyBpbiBzZWxmLmNvbW1pdHMu
aXRlbXMoKToKKyAgICAgICAgICAgIGlmIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1p
dHM6CisgICAgICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2ggPT0gZW5kOgorICAgICAgICAgICAg
ICAgICAgICBicmFuY2hlcy5pbnNlcnQoMCwgYnJhbmNoKQorICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgaWYgbGVuKGJyYW5jaGVzKSA+IDE6CisgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgICAgICBpbl9yYW5nZSA9IEZhbHNlCisgICAgICAgIHByZXZpb3VzID0gTm9u
ZQorICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzOgorICAgICAgICAgICAgZm9yIGNvbW1p
dCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbYnJhbmNoXSk6CisgICAgICAgICAgICAgICAgaWYg
Y29tbWl0Lmhhc2ggPT0gZW5kOgorICAgICAgICAgICAgICAgICAgICBpbl9yYW5nZSA9IFRydWUK
KyAgICAgICAgICAgICAgICBpZiBpbl9yYW5nZSBhbmQgKG5vdCBwcmV2aW91cyBvciBjb21taXQu
aGFzaCAhPSBwcmV2aW91cy5oYXNoKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgY29tbWl0
CisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBjb21taXQKKyAgICAgICAgICAgICAgICBpZiBj
b21taXQuaGFzaCA9PSBiZWdpbjoKKyAgICAgICAgICAgICAgICAgICAgaW5fcmFuZ2UgPSBGYWxz
ZQorICAgICAgICAgICAgaW5fcmFuZ2UgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IHByZXZp
b3VzIG9yIGJyYW5jaCA9PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisKKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRz
W3NlbGYuZGVmYXVsdF9icmFuY2hdKToKKyAgICAgICAgICAgICAgICBpZiBwcmV2aW91cy5icmFu
Y2hfcG9pbnQgPT0gY29tbWl0LmlkZW50aWZpZXI6CisgICAgICAgICAgICAgICAgICAgIGVuZCA9
IGNvbW1pdC5oYXNoCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5CShy
ZXZpc2lvbiAyNzY5ODgpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93
ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9zdm4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTY1LDE0ICs2
NSwxOCBAQCBjbGFzcyBTdm4obW9ja3MuU3VicHJvY2Vzcyk6CiAKICAgICAgICAgc3VwZXIoU3Zu
LCBzZWxmKS5fX2luaXRfXygKICAgICAgICAgICAgIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCi0g
ICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnaW5mbycsCi0gICAgICAgICAgICAgICAg
Y3dkPXNlbGYucGF0aCwKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAq
Kmt3YXJnczogc2VsZi5faW5mbyhjd2Q9a3dhcmdzLmdldCgnY3dkJywgJycpKQotICAgICAgICAg
ICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1
dGFibGUsICdpbmZvJywgc2VsZi5CUkFOQ0hfUkUsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYu
cGF0aCwKICAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczog
c2VsZi5faW5mbyhicmFuY2g9c2VsZi5CUkFOQ0hfUkUubWF0Y2goYXJnc1syXSkuZ3JvdXAoJ2Jy
YW5jaCcpLCBjd2Q9a3dhcmdzLmdldCgnY3dkJywgJycpKQogICAgICAgICAgICAgKSwgbW9ja3Mu
U3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdpbmZv
JywgJy1yJywgcmUuY29tcGlsZShyJ1xkKycpLAorICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBh
dGgsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IHNl
bGYuX2luZm8ocmV2aXNpb249aW50KGFyZ3NbM10pLCBjd2Q9a3dhcmdzLmdldCgnY3dkJywgJycp
KQorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAg
ICBzZWxmLmV4ZWN1dGFibGUsICdpbmZvJywKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRo
LAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxm
Ll9pbmZvKGN3ZD1rd2FyZ3MuZ2V0KCdjd2QnLCAnJykpCisgICAgICAgICAgICApLCBtb2Nrcy5T
dWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2xpc3Qn
LCAnXi9icmFuY2hlcycsCiAgICAgICAgICAgICAgICAgY3dkPXNlbGYucGF0aCwKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJnczogbW9ja3MuUHJvY2Vzc0Nv
bXBsZXRpb24oCkBAIC0xMTksNiArMTIzLDE0IEBAIGNsYXNzIFN2bihtb2Nrcy5TdWJwcm9jZXNz
KToKICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249YXJnc1s1XSwKICAgICAgICAgICAgICAg
ICApIGlmIHNlbGYuY29ubmVjdGVkIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJu
Y29kZT0xKQogICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAg
ICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdsb2cnLCAnLXInLCByZS5jb21waWxlKHInXGQrOlxk
KycpLCBzZWxmLkJSQU5DSF9SRSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAg
ICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9sb2df
cmFuZ2UoCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1zZWxmLkJSQU5DSF9SRS5tYXRjaChh
cmdzWzRdKS5ncm91cCgnYnJhbmNoJyksCisgICAgICAgICAgICAgICAgICAgIGVuZD1pbnQoYXJn
c1szXS5zcGxpdCgnOicpWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgYmVnaW49aW50KGFyZ3Nb
M10uc3BsaXQoJzonKVstMV0pLAorICAgICAgICAgICAgICAgICkgaWYgc2VsZi5jb25uZWN0ZWQg
ZWxzZSBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTEpCisgICAgICAgICAgICAp
LCBtb2Nrcy5TdWJwcm9jZXNzLlJvdXRlKAogICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJs
ZSwgJ3VwJywgJy1yJywgcmUuY29tcGlsZShyJ1xkKycpLAogICAgICAgICAgICAgICAgIGN3ZD1z
ZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2Fy
Z3M6CkBAIC0yMDQsNiArMjE2LDI4IEBAIGNsYXNzIFN2bihtb2Nrcy5TdWJwcm9jZXNzKToKICAg
ICAgICAgICAgICAgICApLAogICAgICAgICApCiAKKyAgICBkZWYgX2xvZ19yYW5nZShzZWxmLCBi
cmFuY2g9Tm9uZSwgZW5kPU5vbmUsIGJlZ2luPU5vbmUpOgorICAgICAgICBpZiBlbmQgPCBiZWdp
bjoKKyAgICAgICAgICAgIHJldHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2Rl
PTEpCisKKyAgICAgICAgb3V0cHV0ID0gJycKKyAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAg
ICAgIGZvciBiIGluIFticmFuY2gsICd0cnVuayddOgorICAgICAgICAgICAgZm9yIGNhbmRpZGF0
ZSBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHMuZ2V0KGIsIFtdKSk6CisgICAgICAgICAgICAgICAg
aWYgY2FuZGlkYXRlLnJldmlzaW9uID4gZW5kIG9yIGNhbmRpZGF0ZS5yZXZpc2lvbiA8IGJlZ2lu
OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHByZXZp
b3VzIGFuZCBwcmV2aW91cy5yZXZpc2lvbiA8PSBjYW5kaWRhdGUucmV2aXNpb246CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBjYW5kaWRh
dGUKKyAgICAgICAgICAgICAgICBvdXRwdXQgKz0gKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAg
ICAgICAgICAgICAgICAgJ3tsaW5lfSB8IHtsaW5lc30gbGluZXNcblxuJworICAgICAgICAgICAg
ICAgICAgICAne2xvZ31cbicpLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU9
c2VsZi5sb2dfbGluZShjYW5kaWRhdGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbGluZXM9
bGVuKGNhbmRpZGF0ZS5tZXNzYWdlLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICBsb2c9Y2FuZGlkYXRlLm1lc3NhZ2UKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHJl
dHVybiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbihyZXR1cm5jb2RlPTAsIHN0ZG91dD1vdXRwdXQp
CisKICAgICBkZWYgZmluZChzZWxmLCBicmFuY2g9Tm9uZSwgcmV2aXNpb249Tm9uZSk6CiAgICAg
ICAgIGlmIG5vdCBicmFuY2ggYW5kIG5vdCByZXZpc2lvbjoKICAgICAgICAgICAgIHJldHVybiBz
ZWxmLmhlYWQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L21vY2tzL3JlbW90ZS9naXRfaHViLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9naXRfaHVi
LnB5CShyZXZpc2lvbiAyNzY5ODgpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQkod29ya2luZyBjb3B5KQpA
QCAtMTMyLDYgKzEzMiw1MiBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgogICAgICAg
ICAgICAgfSBmb3IgcmVmZXJlbmNlLCBjb21taXQgaW4gKHNlbGYuY29tbWl0cyBpZiB0eXBlID09
ICdicmFuY2hlcycgZWxzZSBzZWxmLnRhZ3MpLml0ZW1zKCkKICAgICAgICAgXSwgdXJsPXVybCkK
IAorICAgIGRlZiBfY29tbWl0c19yZXNwb25zZShzZWxmLCB1cmwsIHJlZik6CisgICAgICAgIGZy
b20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKKworICAgICAgICBiYXNlID0g
c2VsZi5jb21taXQocmVmKQorICAgICAgICBpZiBub3QgYmFzZToKKyAgICAgICAgICAgIHJldHVy
biBtb2Nrcy5SZXNwb25zZSgKKyAgICAgICAgICAgICAgICBzdGF0dXNfY29kZT00MDQsCisgICAg
ICAgICAgICAgICAgdXJsPXVybCwKKyAgICAgICAgICAgICAgICB0ZXh0PWpzb24uZHVtcHMoZGlj
dChtZXNzYWdlPSdObyBjb21taXQgZm91bmQgZm9yIFNIQToge30nLmZvcm1hdChyZWYpKSksCisg
ICAgICAgICAgICApCisKKyAgICAgICAgcmVzcG9uc2UgPSBbXQorICAgICAgICBmb3IgYnJhbmNo
IGluIFtzZWxmLmRlZmF1bHRfYnJhbmNoXSBpZiBiYXNlLmJyYW5jaCA9PSBzZWxmLmRlZmF1bHRf
YnJhbmNoIGVsc2UgW2Jhc2UuYnJhbmNoLCBzZWxmLmRlZmF1bHRfYnJhbmNoXToKKyAgICAgICAg
ICAgIGluX3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAg
ICAgICAgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbYnJhbmNoXSk6CisgICAg
ICAgICAgICAgICAgaWYgY29tbWl0Lmhhc2ggPT0gcmVmOgorICAgICAgICAgICAgICAgICAgICBp
bl9yYW5nZSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBub3QgaW5fcmFuZ2U6CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBjb21taXQK
KyAgICAgICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoeworICAgICAgICAgICAgICAgICAgICAn
c2hhJzogY29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgICdjb21taXQnOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAnYXV0aG9yJzogeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICduYW1lJzogY29tbWl0LmF1dGhvci5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdlbWFpbCc6IGNvbW1pdC5hdXRob3IuZW1haWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2RhdGUnOiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKGNvbW1pdC50aW1lc3RhbXAg
LSB0aW1lZGVsdGEoaG91cnM9Nykuc2Vjb25kcykuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVT
WicpLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwgJ2NvbW1pdHRlcic6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnbmFtZSc6IGNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZW1haWwnOiBjb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdkYXRlJzogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChj
b21taXQudGltZXN0YW1wIC0gdGltZWRlbHRhKGhvdXJzPTcpLnNlY29uZHMpLnN0cmZ0aW1lKCcl
WS0lbS0lZFQlSDolTTolU1onKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sICdtZXNzYWdl
JzogY29tbWl0Lm1lc3NhZ2UgKyAoJ1xuZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5v
cmcvcmVwb3NpdG9yeS93ZWJraXQve31Ae30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkx
YjRkYmZjXG4nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ1bmsnIGlm
IGNvbW1pdC5icmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBlbHNlIGNvbW1pdC5icmFuY2gs
IGNvbW1pdC5yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICkgaWYgY29tbWl0LnJl
dmlzaW9uIGVsc2UgJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCc6ICdodHRwczov
L3t9L2dpdC9jb21taXRzL3t9Jy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlLCBjb21taXQuaGFzaCks
CisgICAgICAgICAgICAgICAgICAgIH0sICd1cmwnOiAnaHR0cHM6Ly97fS9jb21taXRzL3t9Jy5m
b3JtYXQoc2VsZi5hcGlfcmVtb3RlLCBjb21taXQuaGFzaCksCisgICAgICAgICAgICAgICAgICAg
ICdodG1sX3VybCc6ICdodHRwczovL3t9L2NvbW1pdC97fScuZm9ybWF0KHNlbGYucmVtb3RlLCBj
b21taXQuaGFzaCksCisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIGlmIGJyYW5jaCAh
PSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2
ZXJzZWQoc2VsZi5jb21taXRzW3NlbGYuZGVmYXVsdF9icmFuY2hdKToKKyAgICAgICAgICAgICAg
ICAgICAgaWYgcHJldmlvdXMuYnJhbmNoX3BvaW50ID09IGNvbW1pdC5pZGVudGlmaWVyOgorICAg
ICAgICAgICAgICAgICAgICAgICAgcmVmID0gY29tbWl0Lmhhc2gKKworICAgICAgICByZXR1cm4g
bW9ja3MuUmVzcG9uc2UuZnJvbUpzb24ocmVzcG9uc2UsIHVybD11cmwpCisKICAgICBkZWYgX2Nv
bW1pdF9yZXNwb25zZShzZWxmLCB1cmwsIHJlZik6CiAgICAgICAgIGZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIApAQCAtMTUzLDkgKzE5OSw5IEBAIGNsYXNzIEdpdEh1
Yihtb2Nrcy5SZXF1ZXN0cyk6CiAgICAgICAgICAgICAgICAgICAgICduYW1lJzogY29tbWl0LmF1
dGhvci5uYW1lLAogICAgICAgICAgICAgICAgICAgICAnZW1haWwnOiBjb21taXQuYXV0aG9yLmVt
YWlsLAogICAgICAgICAgICAgICAgICAgICAnZGF0ZSc6IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3Rh
bXAoY29tbWl0LnRpbWVzdGFtcCAtIHRpbWVkZWx0YShob3Vycz03KS5zZWNvbmRzKS5zdHJmdGlt
ZSgnJVktJW0tJWRUJUg6JU06JVNaJyksCi0gICAgICAgICAgICAgICAgfSwgJ21lc3NhZ2UnOiBj
b21taXQubWVzc2FnZSArICdcbmdpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3Jl
cG9zaXRvcnkvd2Via2l0L3t9QHt9IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJm
Y1xuJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgfSwgJ21lc3NhZ2UnOiBjb21taXQubWVzc2Fn
ZSArICgnXG5naXQtc3ZuLWlkOiBodHRwczovL3N2bi5leGFtcGxlLm9yZy9yZXBvc2l0b3J5L3dl
YmtpdC97fUB7fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmNcbicuZm9ybWF0
KAogICAgICAgICAgICAgICAgICAgICAndHJ1bmsnIGlmIGNvbW1pdC5icmFuY2ggPT0gc2VsZi5k
ZWZhdWx0X2JyYW5jaCBlbHNlIGNvbW1pdC5icmFuY2gsIGNvbW1pdC5yZXZpc2lvbiwKLSAgICAg
ICAgICAgICAgICApIGlmIGNvbW1pdC5yZXZpc2lvbiBlbHNlICcnLAorICAgICAgICAgICAgICAg
ICkgaWYgY29tbWl0LnJldmlzaW9uIGVsc2UgJycpLAogICAgICAgICAgICAgICAgICd1cmwnOiAn
aHR0cHM6Ly97fS9naXQvY29tbWl0cy97fScuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSwgY29tbWl0
Lmhhc2gpLAogICAgICAgICAgICAgfSwgJ3VybCc6ICdodHRwczovL3t9L2NvbW1pdHMve30nLmZv
cm1hdChzZWxmLmFwaV9yZW1vdGUsIGNvbW1pdC5oYXNoKSwKICAgICAgICAgICAgICdodG1sX3Vy
bCc6ICdodHRwczovL3t9L2NvbW1pdC97fScuZm9ybWF0KHNlbGYucmVtb3RlLCBjb21taXQuaGFz
aCksCkBAIC0yMzMsMTAgKzI3OSwxMSBAQCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgog
ICAgICAgICAgICAgKSwgdXJsPXVybAogICAgICAgICApCiAKLSAgICBkZWYgcmVxdWVzdChzZWxm
LCBtZXRob2QsIHVybCwgZGF0YT1Ob25lLCAqKmt3YXJncyk6CisgICAgZGVmIHJlcXVlc3Qoc2Vs
ZiwgbWV0aG9kLCB1cmwsIGRhdGE9Tm9uZSwgcGFyYW1zPU5vbmUsICoqa3dhcmdzKToKICAgICAg
ICAgaWYgbm90IHVybC5zdGFydHN3aXRoKCdodHRwOi8vJykgYW5kIG5vdCB1cmwuc3RhcnRzd2l0
aCgnaHR0cHM6Ly8nKToKICAgICAgICAgICAgIHJldHVybiBtb2Nrcy5SZXNwb25zZS5jcmVhdGU0
MDQodXJsKQogCisgICAgICAgIHBhcmFtcyA9IHBhcmFtcyBvciB7fQogICAgICAgICBzdHJpcHBl
ZF91cmwgPSB1cmwuc3BsaXQoJzovLycpWy0xXQogCiAgICAgICAgICMgVG9wLWxldmVsIEFQSSBy
ZXF1ZXN0CkBAIC0yNDcsNiArMjk0LDEwIEBAIGNsYXNzIEdpdEh1Yihtb2Nrcy5SZXF1ZXN0cyk6
CiAgICAgICAgIGlmIHN0cmlwcGVkX3VybCBpbiBbJ3t9L2JyYW5jaGVzJy5mb3JtYXQoc2VsZi5h
cGlfcmVtb3RlKSwgJ3t9L3RhZ3MnLmZvcm1hdChzZWxmLmFwaV9yZW1vdGUpXToKICAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9saXN0X3JlZnNfcmVzcG9uc2UodXJsPXVybCwgdHlwZT1zdHJpcHBl
ZF91cmwuc3BsaXQoJy8nKVstMV0pCiAKKyAgICAgICAgIyBSZXR1cm4gYSBjb21taXQgYW5kIGl0
J3MgcGFyZW50cworICAgICAgICBpZiBzdHJpcHBlZF91cmwgPT0gJ3t9L2NvbW1pdHMnLmZvcm1h
dChzZWxmLmFwaV9yZW1vdGUpIGFuZCBwYXJhbXMuZ2V0KCdzaGEnKToKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9jb21taXRzX3Jlc3BvbnNlKHVybD11cmwsIHJlZj1wYXJhbXNbJ3NoYSddKQor
CiAgICAgICAgICMgRXh0cmFjdCBzaW5nbGUgY29tbWl0CiAgICAgICAgIGlmIHN0cmlwcGVkX3Vy
bC5zdGFydHN3aXRoKCd7fS9jb21taXRzLycuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSkpOgogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdF9yZXNwb25zZSh1cmw9dXJsLCByZWY9c3RyaXBw
ZWRfdXJsLnNwbGl0KCcvJylbLTFdKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL3N2bi5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1v
dGUvc3ZuLnB5CShyZXZpc2lvbiAyNzY5ODgpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvc3ZuLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsMzAgKzEwNiwxNyBAQCBjbGFzcyBTdm4obW9ja3MuUmVxdWVzdHMpOgogCiAgICAg
ICAgIGlmIGNhdGVnb3J5IGFuZCBjYXRlZ29yeS5zdGFydHN3aXRoKCdicmFuY2hlcy8nKToKICAg
ICAgICAgICAgIGNhdGVnb3J5ID0gY2F0ZWdvcnkuc3BsaXQoJy8nKVstMV0KKyAgICAgICAgY2F0
ZWdvcnkgPSBbY2F0ZWdvcnldIGlmIGNhdGVnb3J5IGVsc2Ugc2VsZi5icmFuY2hlcyhzdGFydCkg
KyBzZWxmLnRhZ3Moc3RhcnQpCiAKLSAgICAgICAgaWYgbm90IGNhdGVnb3J5OgotICAgICAgICAg
ICAgZm9yIGNvbW1pdHMgaW4gc2VsZi5jb21taXRzLnZhbHVlcygpOgotICAgICAgICAgICAgICAg
IGZvciBjb21taXQgaW4gY29tbWl0czoKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tbWl0LnJl
dmlzaW9uID09IHN0YXJ0OgotICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPSBjb21t
aXQuYnJhbmNoCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIG5v
dCBjYXRlZ29yeToKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgIHJlc3VsdCA9IFtj
b21taXQgZm9yIGNvbW1pdCBpbiByZXZlcnNlZChzZWxmLmNvbW1pdHNbY2F0ZWdvcnldKV0KLSAg
ICAgICAgaWYgc2VsZi5jb21taXRzW2NhdGVnb3J5XVswXS5icmFuY2hfcG9pbnQ6Ci0gICAgICAg
ICAgICByZXN1bHQgKz0gW2NvbW1pdCBmb3IgY29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0
c1sndHJ1bmsnXVs6c2VsZi5jb21taXRzW2NhdGVnb3J5XVswXS5icmFuY2hfcG9pbnRdKV0KLQot
ICAgICAgICBmb3IgaW5kZXggaW4gcmV2ZXJzZWQocmFuZ2UobGVuKHJlc3VsdCkpKToKLSAgICAg
ICAgICAgIGlmIHJlc3VsdFtpbmRleF0ucmV2aXNpb24gPCBlbmQ6Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gcmVzdWx0WzppbmRleF0KLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgaWYgcmVzdWx0W2luZGV4XS5yZXZpc2lvbiA+IHN0YXJ0OgotICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHJlc3VsdFtpbmRleDpdCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAg
ICByZXR1cm4gcmVzdWx0CisgICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAgICBmb3IgYiBp
biBjYXRlZ29yeSArIFsndHJ1bmsnXToKKyAgICAgICAgICAgIGZvciBjYW5kaWRhdGUgaW4gcmV2
ZXJzZWQoc2VsZi5jb21taXRzLmdldChiLCBbXSkpOgorICAgICAgICAgICAgICAgIGlmIGNhbmRp
ZGF0ZS5yZXZpc2lvbiA+IHN0YXJ0IG9yIGNhbmRpZGF0ZS5yZXZpc2lvbiA8IGVuZDoKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBwcmV2aW91cyBhbmQg
cHJldmlvdXMucmV2aXNpb24gPD0gY2FuZGlkYXRlLnJldmlzaW9uOgorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY2FuZGlkYXRlCisgICAg
ICAgICAgICAgICAgeWllbGQgY2FuZGlkYXRlCiAKICAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRo
b2QsIHVybCwgZGF0YT1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGZyb20gZGF0ZXRpbWUgaW1w
b3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKQEAgLTI2NiwxMSArMjUzLDExIEBAIGNsYXNzIFN2biht
b2Nrcy5SZXF1ZXN0cyk6CiAKICAgICAgICAgIyBMb2cgZm9yIGNvbW1pdAogICAgICAgICBpZiBt
ZXRob2QgPT0gJ1JFUE9SVCcgYW5kIHN0cmlwcGVkX3VybC5zdGFydHN3aXRoKCd7fSEnLmZvcm1h
dChzZWxmLnJlbW90ZSkpIGFuZCBtYXRjaCBhbmQgZGF0YS5nZXQoJ1M6bG9nLXJlcG9ydCcpOgot
ICAgICAgICAgICAgY29tbWl0cyA9IHNlbGYucmFuZ2UoCisgICAgICAgICAgICBjb21taXRzID0g
bGlzdChzZWxmLnJhbmdlKAogICAgICAgICAgICAgICAgIGNhdGVnb3J5PW1hdGNoLmdyb3VwKCdj
YXRlZ29yeScpLAogICAgICAgICAgICAgICAgIHN0YXJ0PWludChkYXRhWydTOmxvZy1yZXBvcnQn
XVsnUzpzdGFydC1yZXZpc2lvbiddKSwKICAgICAgICAgICAgICAgICBlbmQ9aW50KGRhdGFbJ1M6
bG9nLXJlcG9ydCddWydTOmVuZC1yZXZpc2lvbiddKSwKLSAgICAgICAgICAgICkKKyAgICAgICAg
ICAgICkpCiAKICAgICAgICAgICAgIGxpbWl0ID0gaW50KGRhdGFbJ1M6bG9nLXJlcG9ydCddLmdl
dCgnUzpsaW1pdCcsIDApKQogICAgICAgICAgICAgaWYgbGltaXQgYW5kIGxlbihjb21taXRzKSA+
IGxpbWl0OgpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvcmVtb3RlL2dpdF9odWIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL2dpdF9odWIucHkJKHJldmlzaW9u
IDI3Njk4OCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3JlbW90ZS9naXRfaHViLnB5CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIGNs
YXNzIEdpdEh1YihTY20pOgogICAgIGRlZiBpc19naXQoc2VsZik6CiAgICAgICAgIHJldHVybiBU
cnVlCiAKLSAgICBkZWYgcmVxdWVzdChzZWxmLCBwYXRoPU5vbmUsIHBhcmFtcz1Ob25lLCBoZWFk
ZXJzPU5vbmUsIGF1dGhlbnRpY2F0ZWQ9Tm9uZSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgcGF0
aD1Ob25lLCBwYXJhbXM9Tm9uZSwgaGVhZGVycz1Ob25lLCBhdXRoZW50aWNhdGVkPU5vbmUsIHBh
Z2luYXRlPVRydWUpOgogICAgICAgICBoZWFkZXJzID0ge2tleTogdmFsdWUgZm9yIGtleSwgdmFs
dWUgaW4gaGVhZGVycy5pdGVtcygpfSBpZiBoZWFkZXJzIGVsc2UgZGljdCgpCiAgICAgICAgIGhl
YWRlcnNbJ0FjY2VwdCddID0gaGVhZGVycy5nZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi92bmQu
Z2l0aHViLnYzK2pzb24nKQogCkBAIC0xMDUsNyArMTA1LDcgQEAgY2xhc3MgR2l0SHViKFNjbSk6
CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXN1bHQgPSByZXNwb25zZS5qc29u
KCkKIAotICAgICAgICB3aGlsZSBpc2luc3RhbmNlKHJlc3BvbnNlLmpzb24oKSwgbGlzdCkgYW5k
IGxlbihyZXNwb25zZS5qc29uKCkpID09IHBhcmFtc1sncGVyX3BhZ2UnXToKKyAgICAgICAgd2hp
bGUgcGFnaW5hdGUgYW5kIGlzaW5zdGFuY2UocmVzcG9uc2UuanNvbigpLCBsaXN0KSBhbmQgbGVu
KHJlc3BvbnNlLmpzb24oKSkgPT0gcGFyYW1zWydwZXJfcGFnZSddOgogICAgICAgICAgICAgcGFy
YW1zWydwYWdlJ10gKz0gMQogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQodXJs
LCBwYXJhbXM9cGFyYW1zLCBoZWFkZXJzPWhlYWRlcnMsIGF1dGg9YXV0aCkKICAgICAgICAgICAg
IGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKQEAgLTI4NywxNiArMjg3LDIyIEBAIGNs
YXNzIEdpdEh1YihTY20pOgogICAgICAgICAjIGl0J3MgcG9zc2libGUgZm9yIGEgc2VyaWVzIG9m
IGNvbW1pdHMgdG8gc2hhcmUgYSBjb21taXQgdGltZS4gVG8gaGFuZGxlIHRoaXMgY2FzZSwgd2Ug
YXNzaWduIGVhY2ggY29tbWl0IGEKICAgICAgICAgIyB6ZXJvLWluZGV4ZWQgIm9yZGVyIiB3aXRo
aW4gaXQncyB0aW1lc3RhbXAuCiAgICAgICAgIG9yZGVyID0gMAotICAgICAgICB3aGlsZSBub3Qg
aWRlbnRpZmllciBvciBvcmRlciArIDEgPCBpZGVudGlmaWVyICsgKGJyYW5jaF9wb2ludCBvciAw
KToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCdjb21taXRzL3t9Jy5mb3Jt
YXQoJ3t9fnt9Jy5mb3JtYXQoY29tbWl0X2RhdGFbJ3NoYSddLCBvcmRlciArIDEpKSkKLSAgICAg
ICAgICAgIGlmIG5vdCByZXNwb25zZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAg
ICAgcGFyZW50X3RpbWVzdGFtcCA9IGludChjYWxlbmRhci50aW1lZ20oZGF0ZXRpbWUuc3RycHRp
bWUoCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VbJ2NvbW1pdCddWydjb21taXR0ZXInXVsnZGF0
ZSddLCAnJVktJW0tJWRUJUg6JU06JVNaJywKLSAgICAgICAgICAgICkudGltZXR1cGxlKCkpKQot
ICAgICAgICAgICAgaWYgcGFyZW50X3RpbWVzdGFtcCAhPSB0aW1lc3RhbXA6CisgICAgICAgIGxo
YXNoID0gY29tbWl0X2RhdGFbJ3NoYSddCisgICAgICAgIHdoaWxlIGxoYXNoOgorICAgICAgICAg
ICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJ2NvbW1pdHMnLCBwYWdpbmF0ZT1GYWxzZSwgcGFy
YW1zPWRpY3Qoc2hhPWxoYXNoLCBwZXJfcGFnZT0yMCkpCisgICAgICAgICAgICBpZiBsZW4ocmVz
cG9uc2UpIDw9IDE6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIG9yZGVyICs9
IDEKKyAgICAgICAgICAgIGZvciBjIGluIHJlc3BvbnNlOgorICAgICAgICAgICAgICAgIGlmIGxo
YXNoID09IGNbJ3NoYSddOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgICAgIHBhcmVudF90aW1lc3RhbXAgPSBpbnQoY2FsZW5kYXIudGltZWdtKGRhdGV0aW1lLnN0
cnB0aW1lKAorICAgICAgICAgICAgICAgICAgICBjWydjb21taXQnXVsnY29tbWl0dGVyJ11bJ2Rh
dGUnXSwgJyVZLSVtLSVkVCVIOiVNOiVTWicsCisgICAgICAgICAgICAgICAgKS50aW1ldHVwbGUo
KSkpCisgICAgICAgICAgICAgICAgaWYgcGFyZW50X3RpbWVzdGFtcCAhPSB0aW1lc3RhbXA6Cisg
ICAgICAgICAgICAgICAgICAgIGxoYXNoID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBicmVh
aworICAgICAgICAgICAgICAgIGxoYXNoID0gY1snc2hhJ10KKyAgICAgICAgICAgICAgICBvcmRl
ciArPSAxCiAKICAgICAgICAgcmV0dXJuIENvbW1pdCgKICAgICAgICAgICAgIHJlcG9zaXRvcnlf
aWQ9c2VsZi5pZCwKQEAgLTMxMyw2ICszMTksNjcgQEAgY2xhc3MgR2l0SHViKFNjbSk6CiAgICAg
ICAgICAgICApLCBtZXNzYWdlPWNvbW1pdF9kYXRhWydjb21taXQnXVsnbWVzc2FnZSddIGlmIGlu
Y2x1ZGVfbG9nIGVsc2UgTm9uZSwKICAgICAgICAgKQogCisgICAgZGVmIGNvbW1pdHMoc2VsZiwg
YmVnaW49Tm9uZSwgZW5kPU5vbmUsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmll
cj1UcnVlKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShiZWdpbj1i
ZWdpbiwgZW5kPWVuZCwgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllcikKKwor
ICAgICAgICBwcmV2aW91cyA9IGVuZAorICAgICAgICBjYWNoZWQgPSBbcHJldmlvdXNdCisgICAg
ICAgIHdoaWxlIHByZXZpb3VzOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qo
J2NvbW1pdHMnLCBwYWdpbmF0ZT1GYWxzZSwgcGFyYW1zPWRpY3Qoc2hhPXByZXZpb3VzLmhhc2gp
KQorICAgICAgICAgICAgaWYgbm90IHJlc3BvbnNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBmb3IgY29tbWl0X2RhdGEgaW4gcmVzcG9uc2U6CisgICAgICAgICAgICAgICAg
YnJhbmNoX3BvaW50ID0gcHJldmlvdXMuYnJhbmNoX3BvaW50CisgICAgICAgICAgICAgICAgaWRl
bnRpZmllciA9IHByZXZpb3VzLmlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBpZiBjb21taXRf
ZGF0YVsnc2hhJ10gPT0gcHJldmlvdXMuaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVk
ID0gY2FjaGVkWzotMV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyIC09IDEKKworICAgICAgICAgICAgICAgIGlmIG5vdCBpZGVudGlmaWVyOgor
ICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAgIG1hdGNoZXMg
PSBzZWxmLkdJVF9TVk5fUkVWSVNJT04uZmluZGFsbChjb21taXRfZGF0YVsnY29tbWl0J11bJ21l
c3NhZ2UnXSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaGVzWy0xXS5zcGxp
dCgnQCcpWzBdKSBpZiBtYXRjaGVzIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgZW1haWxf
bWF0Y2ggPSBzZWxmLkVNQUlMX1JFLm1hdGNoKGNvbW1pdF9kYXRhWydjb21taXQnXVsnYXV0aG9y
J11bJ2VtYWlsJ10pCisgICAgICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KGNhbGVuZGFyLnRp
bWVnbShkYXRldGltZS5zdHJwdGltZSgKKyAgICAgICAgICAgICAgICAgICAgY29tbWl0X2RhdGFb
J2NvbW1pdCddWydjb21taXR0ZXInXVsnZGF0ZSddLCAnJVktJW0tJWRUJUg6JU06JVNaJywKKyAg
ICAgICAgICAgICAgICApLnRpbWV0dXBsZSgpKSkKKworICAgICAgICAgICAgICAgIHByZXZpb3Vz
ID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisg
ICAgICAgICAgICAgICAgICAgIGhhc2g9Y29tbWl0X2RhdGFbJ3NoYSddLAorICAgICAgICAgICAg
ICAgICAgICByZXZpc2lvbj1yZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWVu
ZC5icmFuY2ggaWYgaWRlbnRpZmllciBhbmQgYnJhbmNoX3BvaW50IGVsc2Ugc2VsZi5kZWZhdWx0
X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcj1pZGVudGlmaWVyIGlmIGlu
Y2x1ZGVfaWRlbnRpZmllciBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9w
b2ludD1icmFuY2hfcG9pbnQgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZSwKKyAgICAg
ICAgICAgICAgICAgICAgdGltZXN0YW1wPXRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAg
YXV0aG9yPXNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1pdF9kYXRhWydjb21taXQnXVsnYXV0aG9yJ11bJ25hbWUnXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVtYWlsX21hdGNoLmdyb3VwKCdlbWFpbCcpIGlmIGVtYWlsX21hdGNoIGVsc2Ug
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgKSwgb3JkZXI9MCwKKyAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZT1jb21taXRfZGF0YVsnY29tbWl0J11bJ21lc3NhZ2UnXSBpZiBpbmNsdWRlX2xv
ZyBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIG5vdCBj
YWNoZWQgb3IgY2FjaGVkWzBdLnRpbWVzdGFtcCAhPSBwcmV2aW91cy50aW1lc3RhbXA6CisgICAg
ICAgICAgICAgICAgICAgIGZvciBjIGluIGNhY2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHlpZWxkIGMKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVkID0gW3ByZXZpb3VzXQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGNhY2hlZDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGMub3JkZXIgKz0gMQorICAgICAgICAgICAgICAgICAgICBj
YWNoZWQuYXBwZW5kKHByZXZpb3VzKQorCisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXMuaGFz
aCA9PSBiZWdpbi5oYXNoIG9yIHByZXZpb3VzLnRpbWVzdGFtcCA8IGJlZ2luLnRpbWVzdGFtcDoK
KyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrCisKKyAgICAgICAgZm9yIGMgaW4gY2FjaGVkOgorICAgICAgICAgICAgYy5vcmRlciAr
PSBiZWdpbi5vcmRlcgorICAgICAgICAgICAgeWllbGQgYworCisKICAgICBkZWYgZmluZChzZWxm
LCBhcmd1bWVudCwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUpOgog
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmd1bWVudCwgc2l4LnN0cmluZ190eXBlcyk6CiAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZCAnYXJndW1lbnQnIHRvIGJlIGEg
c3RyaW5nLCBub3QgJ3t9JyIuZm9ybWF0KHR5cGUoYXJndW1lbnQpKSkKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvcmVtb3RlL3N2bi5weQkocmV2aXNpb24gMjc2OTg4KQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weQkod29ya2luZyBjb3B5
KQpAQCAtMzIsMTQgKzMyLDE0IEBAIGltcG9ydCB4bWx0b2RpY3QKIAogZnJvbSBkYXRldGltZSBp
bXBvcnQgZGF0ZXRpbWUKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGxvZywgcnVuLCBkZWNv
cmF0b3JzCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgZGVjb3JhdG9ycywgc3RyaW5nX3V0aWxz
CiBmcm9tIHdlYmtpdHNjbXB5LnJlbW90ZS5zY20gaW1wb3J0IFNjbQotZnJvbSB3ZWJraXRzY21w
eSBpbXBvcnQgQ29tbWl0LCBDb250cmlidXRvciwgVmVyc2lvbgorZnJvbSB3ZWJraXRzY21weSBp
bXBvcnQgQ29tbWl0LCBWZXJzaW9uCiAKIAogY2xhc3MgU3ZuKFNjbSk6CiAgICAgVVJMX1JFID0g
cmUuY29tcGlsZShyJ1xBaHR0cHM/Oi8vc3ZuLig/UDxob3N0PlxTKykvcmVwb3NpdG9yeS9cUytc
WicpCi0gICAgSElTVE9SWV9SRSA9IHJlLmNvbXBpbGUoYic8RDp2ZXJzaW9uLW5hbWU+KD9QPHJl
dmlzaW9uPlxkKyk8L0Q6dmVyc2lvbi1uYW1lPicpCisgICAgREFUQV9SRSA9IHJlLmNvbXBpbGUo
Yic8W1NEXTooP1A8dGFnPlxTKyk+KD9QPGNvbnRlbnQ+LiopPC9bU0RdOi4rPicpCiAgICAgQ0FD
SEVfVkVSU0lPTiA9IFZlcnNpb24oMSkKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjQ0LDggKzI0
NCw4IEBAIGNsYXNzIFN2bihTY20pOgogCiAgICAgICAgICAgICBkZWZhdWx0X2NvdW50ID0gMAog
ICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVzcG9uc2UuaXRlcl9saW5lcygpOgotICAgICAgICAg
ICAgICAgIG1hdGNoID0gc2VsZi5ISVNUT1JZX1JFLm1hdGNoKGxpbmUpCi0gICAgICAgICAgICAg
ICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5EQVRBX1JFLm1h
dGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoIG9yIG1hdGNoLmdyb3VwKCd0
YWcnKSAhPSBiJ3ZlcnNpb24tbmFtZSc6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
ICAgICAgICAgICAgICAgICBpZiBub3QgZGlkX3dhcm46CkBAIC0yNTQsNyArMjU0LDcgQEAgY2xh
c3MgU3ZuKFNjbSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZygnQ2FjaGluZyBj
b21taXQgZGF0YSBmb3Ige30sIHRoaXMgd2lsbCB0YWtlIGEgZmV3IG1pbnV0ZXMuLi4nLmZvcm1h
dChicmFuY2gpKQogICAgICAgICAgICAgICAgICAgICAgICAgZGlkX3dhcm4gPSBUcnVlCiAKLSAg
ICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgncmV2aXNpb24nKSkKKyAg
ICAgICAgICAgICAgICByZXZpc2lvbiA9IGludChtYXRjaC5ncm91cCgnY29udGVudCcpKQogICAg
ICAgICAgICAgICAgIGlmIHBvcyA+IDAgYW5kIHNlbGYuX21ldGFkYXRhX2NhY2hlW2JyYW5jaF1b
cG9zIC0gMV0gPT0gcmV2aXNpb246CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
ICAgICAgICAgaWYgbm90IGlzX2RlZmF1bHRfYnJhbmNoOgpAQCAtNDU1LDMgKzQ1NSw2NyBAQCBj
bGFzcyBTdm4oU2NtKToKICAgICAgICAgICAgIGF1dGhvcj1hdXRob3IsCiAgICAgICAgICAgICBt
ZXNzYWdlPW1lc3NhZ2UsCiAgICAgICAgICkKKworICAgIGRlZiBfYXJnc19mcm9tX2NvbnRlbnQo
c2VsZiwgY29udGVudCwgaW5jbHVkZV9sb2c9VHJ1ZSk6CisgICAgICAgIHhtbCA9IHhtbHRvZGlj
dC5wYXJzZShjb250ZW50KQorICAgICAgICBkYXRlID0gZGF0ZXRpbWUuc3RycHRpbWUoc3RyaW5n
X3V0aWxzLmRlY29kZSh4bWxbJ1M6bG9nLWl0ZW0nXVsnUzpkYXRlJ10pLnNwbGl0KCcuJylbMF0s
ICclWS0lbS0lZFQlSDolTTolUycpCisgICAgICAgIG5hbWUgPSBzdHJpbmdfdXRpbHMuZGVjb2Rl
KHhtbFsnUzpsb2ctaXRlbSddWydEOmNyZWF0b3ItZGlzcGxheW5hbWUnXSkKKworICAgICAgICBy
ZXR1cm4gZGljdCgKKyAgICAgICAgICAgIHJldmlzaW9uPWludCh4bWxbJ1M6bG9nLWl0ZW0nXVsn
RDp2ZXJzaW9uLW5hbWUnXSksCisgICAgICAgICAgICBhdXRob3I9c2VsZi5jb250cmlidXRvcnMu
Y3JlYXRlKG5hbWUsIG5hbWUpIGlmIG5hbWUgYW5kICdAJyBpbiBuYW1lIGVsc2Ugc2VsZi5jb250
cmlidXRvcnMuY3JlYXRlKG5hbWUpLAorICAgICAgICAgICAgdGltZXN0YW1wPWludChjYWxlbmRh
ci50aW1lZ20oZGF0ZS50aW1ldHVwbGUoKSkpLAorICAgICAgICAgICAgbWVzc2FnZT1zdHJpbmdf
dXRpbHMuZGVjb2RlKHhtbFsnUzpsb2ctaXRlbSddWydEOmNvbW1lbnQnXSkgaWYgaW5jbHVkZV9s
b2cgZWxzZSBOb25lLAorICAgICAgICApCisKKyAgICBkZWYgY29tbWl0cyhzZWxmLCBiZWdpbj1O
b25lLCBlbmQ9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRydWUp
OgorICAgICAgICBiZWdpbiwgZW5kID0gc2VsZi5fY29tbWl0X3JhbmdlKGJlZ2luPWJlZ2luLCBl
bmQ9ZW5kLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyKQorICAgICAgICBw
cmV2aW91cyA9IGVuZAorCisgICAgICAgIGNvbnRlbnQgPSBiJycKKyAgICAgICAgd2l0aCByZXF1
ZXN0cy5yZXF1ZXN0KAorICAgICAgICAgICAgICAgIG1ldGhvZD0nUkVQT1JUJywKKyAgICAgICAg
ICAgICAgICB1cmw9J3t9IXN2bi9ydnIve30ve30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi51cmwsCisgICAgICAgICAgICAgICAgICAgIGVuZC5yZXZpc2lvbiwKKyAgICAgICAg
ICAgICAgICAgICAgZW5kLmJyYW5jaCBpZiBlbmQuYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFu
Y2ggb3IgJy8nIGluIGVuZC5icmFuY2ggZWxzZSAnYnJhbmNoZXMve30nLmZvcm1hdChlbmQuYnJh
bmNoKSwKKyAgICAgICAgICAgICAgICApLCBzdHJlYW09VHJ1ZSwKKyAgICAgICAgICAgICAgICBo
ZWFkZXJzPXsKKyAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcs
CisgICAgICAgICAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCcsCisgICAgICAg
ICAgICAgICAgICAgICdERVBUSCc6ICcxJywKKyAgICAgICAgICAgICAgICB9LCBkYXRhPSc8Uzps
b2ctcmVwb3J0IHhtbG5zOlM9InN2bjoiPlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJzxT
OnN0YXJ0LXJldmlzaW9uPntlbmR9PC9TOnN0YXJ0LXJldmlzaW9uPlxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgJzxTOmVuZC1yZXZpc2lvbj57YmVnaW59PC9TOmVuZC1yZXZpc2lvbj5cbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICc8UzpwYXRoPjwvUzpwYXRoPlxuJworICAgICAgICAg
ICAgICAgICAgICAgICAgJzwvUzpsb2ctcmVwb3J0PlxuJy5mb3JtYXQoZW5kPWVuZC5yZXZpc2lv
biwgYmVnaW49YmVnaW4ucmV2aXNpb24pLAorICAgICAgICApIGFzIHJlc3BvbnNlOgorICAgICAg
ICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgorICAgICAgICAgICAgICAgIHJh
aXNlIHNlbGYuRXhjZXB0aW9uKCJGYWlsZWQgdG8gY29uc3RydWN0IGJyYW5jaCBoaXN0b3J5IGZv
ciAne30nIi5mb3JtYXQoYnJhbmNoKSkKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHJlc3BvbnNl
Lml0ZXJfbGluZXMoKToKKyAgICAgICAgICAgICAgICBpZiBsaW5lID09IGInPFM6bG9nLWl0ZW0+
JzoKKyAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGxpbmUgKyBiJ1xuJworICAgICAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gbGluZSArIGInXG4n
CisgICAgICAgICAgICAgICAgaWYgbGluZSAhPSBiJzwvUzpsb2ctaXRlbT4nOgorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgYXJncyA9IHNlbGYuX2FyZ3Nf
ZnJvbV9jb250ZW50KGNvbnRlbnQsIGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nKQorCisgICAgICAg
ICAgICAgICAgYnJhbmNoX3BvaW50ID0gcHJldmlvdXMuYnJhbmNoX3BvaW50IGlmIGluY2x1ZGVf
aWRlbnRpZmllciBlbHNlIE5vbmUKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gcHJldmlv
dXMuaWRlbnRpZmllciBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lCisgICAgICAgICAg
ICAgICAgaWYgYXJnc1sncmV2aXNpb24nXSAhPSBwcmV2aW91cy5yZXZpc2lvbjoKKyAgICAgICAg
ICAgICAgICAgICAgaWRlbnRpZmllciAtPSAxCisgICAgICAgICAgICAgICAgaWYgbm90IGlkZW50
aWZpZXI6CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBicmFuY2hfcG9pbnQKKyAg
ICAgICAgICAgICAgICAgICAgYnJhbmNoX3BvaW50ID0gTm9uZQorCisgICAgICAgICAgICAgICAg
cHJldmlvdXMgPSBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2Vs
Zi5pZCwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNoPWVuZC5icmFuY2ggaWYgYnJhbmNoX3Bv
aW50IGVsc2Ugc2VsZi5kZWZhdWx0X2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRp
Zmllcj1pZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQ9YnJhbmNo
X3BvaW50LAorICAgICAgICAgICAgICAgICAgICAqKmFyZ3MKKyAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgeWllbGQgcHJldmlvdXMKKyAgICAgICAgICAgICAgICBjb250ZW50ID0g
YicnCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNzY5ODgpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJr
aXRzY21weS90ZXN0L2ZpbmRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsy
MzEsNyBAQCBBdXRob3I6IGpiZWRhcmRAYXBwbGUuY29tIDxqYmVkYXJkQGFwcGxlCiBEYXRlOiB7
fQogUmV2aXNpb246IDQKIElkZW50aWZpZXI6IDNAdHJ1bmsKLScnJy5mb3JtYXQoZGF0ZXRpbWUu
ZnJvbXRpbWVzdGFtcCgxNjAxNjg2NzAwKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVkn
KSksCisnJycuZm9ybWF0KGRhdGV0aW1lLmZyb210aW1lc3RhbXAoMTYwMTY4NDcwMCkuc3RyZnRp
bWUoJyVhICViICVkICVIOiVNOiVTICVZJykpLAogICAgICAgICApCiAKIApJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvdGVzdC9naXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI3Njk4OCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBAIGltcG9ydCB1bml0dGVz
dAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdGNvcmVweS5tb2NrcyBp
bXBvcnQgVGltZSBhcyBNb2NrVGltZQotZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgbG9jYWwsIG1v
Y2tzLCByZW1vdGUKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgbG9jYWwsIG1vY2tz
LCByZW1vdGUKIAogCiBjbGFzcyBUZXN0R2l0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI4Myw2
ICsyODMsMjggQEAgY2xhc3MgVGVzdEdpdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFz
aD0nYmFlNWQxZTkwOTk5Jykub3JkZXIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBsb2NhbC5HaXQoc2VsZi5wYXRoKS5jb21taXQoaGFzaD0nZDhiY2UyNmZhNjVjJykub3Jk
ZXIpCiAKKyAgICBkZWYgdGVzdF9jb21taXRzKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBb
bW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgsIGdp
dF9zdm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgICAgIGdp
dCA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgICAgICBnaXQuY29t
bWl0KGhhc2g9J2JhZTVkMWU5JyksCisgICAgICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFz
aD0nMWFiZTI1YjQnKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4
M2JiMicpLAorICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzliODMxMWYyJyks
CisgICAgICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5j
b21taXRzKGJlZ2luPWRpY3QoaGFzaD0nOWI4MzExZjInKSwgZW5kPWRpY3QoaGFzaD0nYmFlNWQx
ZTknKSkpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAgICBm
b3IgbW9jayBpbiBbbW9ja3MubG9jYWwuR2l0KHNlbGYucGF0aCksIG1vY2tzLmxvY2FsLkdpdChz
ZWxmLnBhdGgsIGdpdF9zdm49VHJ1ZSldOgorICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAg
ICAgICAgICAgIGdpdCA9IGxvY2FsLkdpdChzZWxmLnBhdGgpCisgICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAg
ICAgICBnaXQuY29tbWl0KGhhc2g9JzYyMTY1MmFkJyksCisgICAgICAgICAgICAgICAgICAgIGdp
dC5jb21taXQoaGFzaD0nYTMwY2U4NDknKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1p
dChoYXNoPSdmZmY4M2JiMicpLAorICAgICAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9
JzliODMxMWYyJyksCisgICAgICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVs
dChsaXN0KGdpdC5jb21taXRzKGJlZ2luPWRpY3QoYXJndW1lbnQ9JzliODMxMWYyJyksIGVuZD1k
aWN0KGFyZ3VtZW50PSc2MjE2NTJhZCcpKSkpKQorCiAKIGNsYXNzIFRlc3RHaXRIdWIodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIHJlbW90ZSA9ICdodHRwczovL2dpdGh1Yi5leGFtcGxlLmNvbS9X
ZWJLaXQvV2ViS2l0JwpAQCAtNDE1LDYgKzQzNywyNyBAQCBjbGFzcyBUZXN0R2l0SHViKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9pZChzZWxmKToKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZW1vdGUuR2l0SHViKHNlbGYucmVtb3RlKS5pZCwgJ3dlYmtpdCcpCiAKKyAgICBk
ZWYgdGVzdF9jb21taXRzKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLnJlbW90ZS5HaXRIdWIo
KToKKyAgICAgICAgICAgIGdpdCA9IHJlbW90ZS5HaXRIdWIoc2VsZi5yZW1vdGUpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAg
ICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdiYWU1ZDFlOScpLAorICAgICAgICAgICAgICAgIGdp
dC5jb21taXQoaGFzaD0nMWFiZTI1YjQnKSwKKyAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhh
c2g9J2ZmZjgzYmIyJyksCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc5YjgzMTFm
MicpLAorICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5j
b21taXRzKGJlZ2luPWRpY3QoaGFzaD0nOWI4MzExZjInKSwgZW5kPWRpY3QoaGFzaD0nYmFlNWQx
ZTknKSkpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAgICB3
aXRoIG1vY2tzLnJlbW90ZS5HaXRIdWIoKToKKyAgICAgICAgICAgIGdpdCA9IHJlbW90ZS5HaXRI
dWIoc2VsZi5yZW1vdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNv
ZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc2MjE2NTJh
ZCcpLAorICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nYTMwY2U4NDknKSwKKyAgICAg
ICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2ZmZjgzYmIyJyksCisgICAgICAgICAgICAgICAg
Z2l0LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAorICAgICAgICAgICAgXSksIENvbW1pdC5FbmNv
ZGVyKCkuZGVmYXVsdChsaXN0KGdpdC5jb21taXRzKGJlZ2luPWRpY3QoYXJndW1lbnQ9JzliODMx
MWYyJyksIGVuZD1kaWN0KGFyZ3VtZW50PSc2MjE2NTJhZCcpKSkpKQorCisKIAogY2xhc3MgVGVz
dEJpdEJ1Y2tldCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcmVtb3RlID0gJ2h0dHBzOi8vYml0
YnVja2V0LmV4YW1wbGUuY29tL3Byb2plY3RzL1dFQktJVC9yZXBvcy93ZWJraXQnCkluZGV4OiBU
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS90ZXN0L3N2bl91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS90ZXN0L3N2bl91bml0dGVzdC5weQkocmV2aXNpb24gMjc2OTg4KQor
KysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9z
dm5fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgaW1wb3J0IHVu
aXR0ZXN0CiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCi1mcm9tIHdlYmtpdHNjbXB5IGltcG9y
dCBsb2NhbCwgbW9ja3MsIHJlbW90ZQorZnJvbSB3ZWJraXRzY21weSBpbXBvcnQgQ29tbWl0LCBs
b2NhbCwgbW9ja3MsIHJlbW90ZQogCiAKIGNsYXNzIFRlc3RMb2NhbFN2bih1bml0dGVzdC5UZXN0
Q2FzZSk6CkBAIC0yMzEsNiArMjMxLDI2IEBAIGNsYXNzIFRlc3RMb2NhbFN2bih1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE91dHB1
dENhcHR1cmUoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvY2FsLlN2bihzZWxm
LnBhdGgpLmZpbmQoJ3RydW5rJywgaW5jbHVkZV9pZGVudGlmaWVyPUZhbHNlKS5pZGVudGlmaWVy
KQogCisgICAgZGVmIHRlc3RfY29tbWl0cyhzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5sb2Nh
bC5Tdm4oc2VsZi5wYXRoKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgc3ZuID0gbG9j
YWwuU3ZuKHNlbGYucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LkVu
Y29kZXIoKS5kZWZhdWx0KFsKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdy
NicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3I0JyksCisgICAgICAg
ICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjInKSwKKyAgICAgICAgICAgICAgICBzdm4u
Y29tbWl0KHJldmlzaW9uPSdyMScpLAorICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCku
ZGVmYXVsdChsaXN0KHN2bi5jb21taXRzKGJlZ2luPWRpY3QocmV2aXNpb249J3IxJyksIGVuZD1k
aWN0KHJldmlzaW9uPSdyNicpKSkpKQorCisgICAgZGVmIHRlc3RfY29tbWl0c19icmFuY2goc2Vs
Zik6CisgICAgICAgIHdpdGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE91dHB1dENhcHR1
cmUoKToKKyAgICAgICAgICAgIHN2biA9IGxvY2FsLlN2bihzZWxmLnBhdGgpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAg
ICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjcnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29t
bWl0KHJldmlzaW9uPSdyMycpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249
J3IyJyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAg
ICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdp
bj1kaWN0KGFyZ3VtZW50PSdyMScpLCBlbmQ9ZGljdChhcmd1bWVudD0ncjcnKSkpKSkKKwogCiBj
bGFzcyBUZXN0UmVtb3RlU3ZuKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICByZW1vdGUgPSAnaHR0
cHM6Ly9zdm4uZXhhbXBsZS5vcmcvcmVwb3NpdG9yeS93ZWJraXQnCkBAIC0zMzEsMyArMzUxLDI0
IEBAIGNsYXNzIFRlc3RSZW1vdGVTdm4odW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRl
c3RfaWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVtb3RlLlN2bihzZWxmLnJl
bW90ZSkuaWQsICd3ZWJraXQnKQorCisgICAgZGVmIHRlc3RfY29tbWl0cyhzZWxmKToKKyAgICAg
ICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICB3aXRoIG1vY2tzLnJlbW90ZS5Tdm4oKToK
KyAgICAgICAgICAgIHN2biA9IHJlbW90ZS5Tdm4oc2VsZi5yZW1vdGUpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAg
ICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjYnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0
KHJldmlzaW9uPSdyNCcpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3Iy
JyksCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAgICAg
ICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdpbj1k
aWN0KHJldmlzaW9uPSdyMScpLCBlbmQ9ZGljdChyZXZpc2lvbj0ncjYnKSkpKSkKKworICAgIGRl
ZiB0ZXN0X2NvbW1pdHNfYnJhbmNoKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLnJlbW90ZS5T
dm4oKSwgT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAgICAgc3ZuID0gcmVtb3RlLlN2bihzZWxm
LnJlbW90ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LkVuY29kZXIoKS5k
ZWZhdWx0KFsKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyNycpLAorICAg
ICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IzJyksCisgICAgICAgICAgICAgICAg
c3ZuLmNvbW1pdChyZXZpc2lvbj0ncjInKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJl
dmlzaW9uPSdyMScpLAorICAgICAgICAgICAgXSksIENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChs
aXN0KHN2bi5jb21taXRzKGJlZ2luPWRpY3QoYXJndW1lbnQ9J3IxJyksIGVuZD1kaWN0KGFyZ3Vt
ZW50PSdyNycpKSkpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427905</attachid>
            <date>2021-05-06 10:37:32 -0700</date>
            <delta_ts>2021-05-06 11:32:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224890-20210506103731.patch</filename>
            <type>text/plain</type>
            <size>51897</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3NzEwMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYxIEBACisyMDIxLTA1LTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgQVBJIHRvIGVmZmljaWVudGx5IGNyZWF0
ZSBhIHNlcXVlbmNlIG9mIGNvbW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDg5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY5NzU3MzM+
CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQWFrYXNoIEphaW4uCisKKyAgICAgICAgV2hp
bGUgaXQgaXMgcG9zc2libGUgdG8gc2ltcGxlIGl0ZXJhdGUgdGhyb3VnaCBhIHJhbmdlIG9mIGNv
bW1pdHMgdG8gZGVmaW5lIHRoZW0sCisgICAgICAgIGV2ZXJ5IEFQSSB3ZSB1c2UgdG8gZGVmaW5l
IGNvbW1pdHMgaGFzIG11Y2ggbW9yZSBlZmZpY2llbnQgdGVjaG5pcXVlcy4KKworICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0
X18ucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dl
YmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5OgorICAgICAgICAoQ29udHJpYnV0b3IpOiBBZGQgcmV2
aXNpb24gdG8gU1ZOX0FVVEhPUl9SRSBhbmQgYWRkIHJlZ2V4IHdpdGhvdXQgbGluZXMuCisgICAg
ICAgIChDb250cmlidXRvci5mcm9tX3NjbV9sb2cpOiBTdHJpcCBsZWFkaW5nIHdoaXRlc3BhY2Ug
ZnJvbSBhdXRob3IuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Vi
a2l0c2NtcHkvbG9jYWwvZ2l0LnB5OgorICAgICAgICAoR2l0Ll9hcmdzX2Zyb21fY29udGVudCk6
CisgICAgICAgIChHaXQuY29tbWl0cyk6IFVzZSBgZ2l0IGxvZ2AgdG8gZWZmaWNpZW50bHkgY29t
cHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5OgorICAgICAgICAoU3ZuLl9hcmdzX2Zy
b21fY29udGVudCk6CisgICAgICAgIChTdm4uY29tbWl0cyk6IFVzZSBgc3ZuIGxvZ2AgdG8gZWZm
aWNpZW50bHkgY29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvZ2l0LnB5OgorICAg
ICAgICAoR2l0Ll9faW5pdF9fKTogQWRkIGBnaXQgbG9nYCBtb2NrLgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xvY2FsL3N2bi5weToK
KyAgICAgICAgKFN2bi5fX2luaXRfXyk6IEFkZCBgc3ZuIGxvZ2AgbW9jayBhbmQgbW9yZSBleHBs
aWNpdCBgc3ZuIGluZm9gIG1vY2suCisgICAgICAgIChTdm4uX2xvZ19yYW5nZSk6CisgICAgICAg
ICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3Rl
L2dpdF9odWIucHk6CisgICAgICAgIChHaXRIdWIuX2NvbW1pdHNfcmVzcG9uc2UpOiBSZXR1cm4g
YWxsIHBhcmVudCBjb21taXRzIHRvIHByb3ZpZGVkIHJlZi4KKyAgICAgICAgKEdpdEh1Yi5yZXF1
ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS9tb2Nrcy9yZW1vdGUvc3ZuLnB5OgorICAgICAgICAoU3ZuLnJhbmdlKTogTW9yZSBlZmZpY2ll
bnRseSBjb21wdXRlIHRoZSByYW5nZS4KKyAgICAgICAgKFN2bi5yZXF1ZXN0KToKKyAgICAgICAg
KiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1
Yi5weToKKyAgICAgICAgKEdpdEh1Yi5yZXF1ZXN0KTogQWxsb3cgY2FsbGVyIHRvIGRpc2FibGUg
cGFnaW5hdGlvbi4KKyAgICAgICAgKEdpdEh1Yi5jb21taXQpOiBSZWR1Y2UgbnVtYmVyIG9mIHJl
cXVlc3RzIHJlcXVpcmVkIHRvIGNvbXB1dGUgb3JkZXIuCisgICAgICAgIChHaXRIdWIuY29tbWl0
cyk6IFVzaW5nIHRoZSBgY29tbWl0c2AgZW5kcG9pbnQsIG1vcmUgZWZmaWNpZW50bHkKKyAgICAg
ICAgY29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvcmVtb3RlL3N2bi5weToKKyAgICAgICAgKFN2bik6
IEdlbmVyYWxpemUgSElTVE9SWV9SRSB0byBtYXRjaCBhbnkgc2luZ2xlLWxpbmUgU1ZOIFhNTCBy
ZXNwb25zZS4KKyAgICAgICAgKFN2bi5fY2FjaGVfcmV2aXNpb25zKTogUmVwbGFjZSBISVNUT1JZ
X1JFIHdpdGggREFUQV9SRS4KKyAgICAgICAgKFN2bi5jb21taXRzKTogVXNlIHN2bi9ydnIgdG8g
ZWZmaWNpZW50bHkgY29tcHV0ZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisgICAgICAgICogU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHk6CisgICAgICAg
IChTY21CYXNlLl9jb21taXRfcmFuZ2UpOiBSZXR1cm4gYSBwYWlyIG9mIGNvbW1pdHMgcmVwcmVz
ZW50aW5nIHRoZSByYW5nZQorICAgICAgICB0aGUgY2FsbGVyIGlzIHJlcXVlc3RpbmcsIGFuZCBw
cmVmb3JtIHNvbWUgYmFzaWMgc2FuaXR5IGNoZWNrcy4KKyAgICAgICAgKFNjbUJhc2UuY29tbWl0
cyk6IERlY2xhcmUgZnVuY3Rpb24gaW1wbGVtZW50ZWQgYnkgZGVjZWRlbnRzLgorICAgICAgICAq
IFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS90ZXN0L2dpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRz
KToKKyAgICAgICAgKFRlc3RHaXQudGVzdF9jb21taXRzX2JyYW5jaCk6CisgICAgICAgIChUZXN0
R2l0SHViLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0R2l0SHViLnRlc3RfY29tbWl0c19i
cmFuY2gpOgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdExvY2FsU3ZuLnRlc3RfY29t
bWl0cyk6CisgICAgICAgIChUZXN0TG9jYWxTdm4udGVzdF9jb21taXRzX2JyYW5jaCk6CisgICAg
ICAgIChUZXN0UmVtb3RlU3ZuLnRlc3RfY29tbWl0cyk6CisgICAgICAgIChUZXN0UmVtb3RlU3Zu
LnRlc3RfY29tbWl0c19icmFuY2gpOgorCiAyMDIxLTA1LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI3MjQxND8pOiBbbWFjT1NdIFRl
c3RXZWJLaXRBUEkuR1BVUHJvY2Vzcy5DcmFzaFdoaWxlUGxheWluZ1ZpZGVvIGlzIGEgZmxha3kg
ZmFpbHVyZQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0dXAu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvc2V0
dXAucHkJKHJldmlzaW9uIDI3NzEwMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3NldHVwLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIGRlZiByZWFk
bWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0c2NtcHknLAotICAgIHZlcnNpb249JzAu
MTMuOScsCisgICAgdmVyc2lvbj0nMC4xNC4wJywKICAgICBkZXNjcmlwdGlvbj0nTGlicmFyeSBk
ZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoIGdpdCBhbmQgc3ZuIHJlcG9zaXRvcmllcy4nLAogICAg
IGxvbmdfZGVzY3JpcHRpb249cmVhZG1lKCksCiAgICAgY2xhc3NpZmllcnM9WwpJbmRleDogVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvX19pbml0X18ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0
c2NtcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI3NzEwMSkKKysrIFRvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L19faW5pdF9fLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgIlBsZWFzZSBp
bnN0YWxsIHdlYmtpdGNvcmVweSB3aXRoIGBwaXAgaW5zdGFsbCB3ZWJraXRjb3JlcHkgLS1leHRy
YS1pbmRleC11cmwgPHBhY2thZ2UgaW5kZXggVVJMPmAiCiAgICAgKQogCi12ZXJzaW9uID0gVmVy
c2lvbigwLCAxMywgOSkKK3ZlcnNpb24gPSBWZXJzaW9uKDAsIDE0LCAwKQogCiBBdXRvSW5zdGFs
bC5yZWdpc3RlcihQYWNrYWdlKCdmYXN0ZW5lcnMnLCBWZXJzaW9uKDAsIDE1LCAwKSkpCiBBdXRv
SW5zdGFsbC5yZWdpc3RlcihQYWNrYWdlKCdtb25vdG9uaWMnLCBWZXJzaW9uKDEsIDUpKSkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2NvbnRy
aWJ1dG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L2NvbnRyaWJ1dG9yLnB5CShyZXZpc2lvbiAyNzcxMDEpCisrKyBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9jb250cmlidXRvci5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOCBAQCBjbGFzcyBDb250cmlidXRvcihvYmpl
Y3QpOgogICAgIEFVVE9NQVRFRF9DSEVDS0lOX1JFID0gcmUuY29tcGlsZShyJ0F1dGhvcjogKD9Q
PGF1dGhvcj4uKikgPGRldm51bGw+JykKICAgICBVTktOT1dOX0FVVEhPUiA9IHJlLmNvbXBpbGUo
cidBdXRob3I6ICg/UDxhdXRob3I+LiopIDxOb25lPicpCiAgICAgRU1QVFlfQVVUSE9SID0gcmUu
Y29tcGlsZShyJ0F1dGhvcjogKD9QPGF1dGhvcj4uKikgPD4nKQotICAgIFNWTl9BVVRIT1JfUkUg
PSByZS5jb21waWxlKHInclxkKyBcfCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBc
ZCsgbGluZXM/JykKKyAgICBTVk5fQVVUSE9SX1JFID0gcmUuY29tcGlsZShyJ3IoP1A8cmV2aXNp
b24+XGQrKSBcfCAoP1A8ZW1haWw+LiopIFx8ICg/UDxkYXRlPi4qKSBcfCBcZCsgbGluZXM/JykK
KyAgICBTVk5fQVVUSE9SX1FfUkUgPSByZS5jb21waWxlKHIncig/UDxyZXZpc2lvbj5cZCspIFx8
ICg/UDxlbWFpbD4uKikgXHwgKD9QPGRhdGU+LiopJykKICAgICBTVk5fUEFUQ0hfRlJPTV9SRSA9
IHJlLmNvbXBpbGUocidQYXRjaCBieSAoP1A8YXV0aG9yPi4qKSA8KD9QPGVtYWlsPi4qKT4gb24g
XGQrLVxkKy1cZCsnKQogCiAgICAgY2xhc3MgRW5jb2Rlcihqc29uLkpTT05FbmNvZGVyKToKQEAg
LTExNSwxMSArMTE2LDE5IEBAIGNsYXNzIENvbnRyaWJ1dG9yKG9iamVjdCk6CiAgICAgICAgIGVt
YWlsID0gTm9uZQogICAgICAgICBhdXRob3IgPSBOb25lCiAKLSAgICAgICAgZm9yIGV4cHJlc3Np
b24gaW4gW2Nscy5HSVRfQVVUSE9SX1JFLCBjbHMuU1ZOX0FVVEhPUl9SRSwgY2xzLlNWTl9QQVRD
SF9GUk9NX1JFLCBjbHMuQVVUT01BVEVEX0NIRUNLSU5fUkUsIGNscy5VTktOT1dOX0FVVEhPUiwg
Y2xzLkVNUFRZX0FVVEhPUl06CisgICAgICAgIGZvciBleHByZXNzaW9uIGluIFsKKyAgICAgICAg
ICAgIGNscy5HSVRfQVVUSE9SX1JFLAorICAgICAgICAgICAgY2xzLlNWTl9BVVRIT1JfUkUsCisg
ICAgICAgICAgICBjbHMuU1ZOX1BBVENIX0ZST01fUkUsCisgICAgICAgICAgICBjbHMuQVVUT01B
VEVEX0NIRUNLSU5fUkUsCisgICAgICAgICAgICBjbHMuVU5LTk9XTl9BVVRIT1IsCisgICAgICAg
ICAgICBjbHMuRU1QVFlfQVVUSE9SLAorICAgICAgICAgICAgY2xzLlNWTl9BVVRIT1JfUV9SRSwK
KyAgICAgICAgXToKICAgICAgICAgICAgIG1hdGNoID0gZXhwcmVzc2lvbi5tYXRjaChsaW5lKQog
ICAgICAgICAgICAgaWYgbWF0Y2g6CiAgICAgICAgICAgICAgICAgaWYgJ2F1dGhvcicgaW4gZXhw
cmVzc2lvbi5ncm91cGluZGV4OgotICAgICAgICAgICAgICAgICAgICBhdXRob3IgPSBtYXRjaC5n
cm91cCgnYXV0aG9yJykKKyAgICAgICAgICAgICAgICAgICAgYXV0aG9yID0gbWF0Y2guZ3JvdXAo
J2F1dGhvcicpLmxzdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgIGlmICcobm8gYXV0aG9yKScg
aW4gYXV0aG9yIG9yICdBdXRvbWF0ZWQgQ2hlY2tpbicgaW4gYXV0aG9yIG9yICdVbmtub3duJyBp
biBhdXRob3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IgPSBOb25lCiAgICAgICAg
ICAgICAgICAgaWYgJ2VtYWlsJyBpbiBleHByZXNzaW9uLmdyb3VwaW5kZXg6CkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9zY21fYmFzZS5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9zY21fYmFzZS5weQkocmV2aXNpb24gMjc3MTAxKQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvc2NtX2Jhc2UucHkJKHdvcmtpbmcgY29weSkK
QEAgLTczLDYgKzczLDM4IEBAIGNsYXNzIFNjbUJhc2Uob2JqZWN0KToKICAgICBkZWYgY29tbWl0
KHNlbGYsIGhhc2g9Tm9uZSwgcmV2aXNpb249Tm9uZSwgaWRlbnRpZmllcj1Ob25lLCBicmFuY2g9
Tm9uZSwgdGFnPU5vbmUsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmllcj1UcnVl
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKKyAgICBkZWYgX2NvbW1p
dF9yYW5nZShzZWxmLCBiZWdpbj1Ob25lLCBlbmQ9Tm9uZSwgaW5jbHVkZV9sb2c9RmFsc2UsIGlu
Y2x1ZGVfaWRlbnRpZmllcj1UcnVlKToKKyAgICAgICAgYmVnaW5fYXJncyA9IGJlZ2luIG9yIGRp
Y3QoKQorICAgICAgICBlbmRfYXJncyA9IGVuZCBvciBkaWN0KCkKKworICAgICAgICBpZiBub3Qg
YmVnaW5fYXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiX2NvbW1pdF9yYW5nZSgp
IG1pc3NpbmcgcmVxdWlyZWQgJ2JlZ2luJyBhcmd1bWVudHMiKQorICAgICAgICBpZiBub3QgZW5k
X2FyZ3M6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9jb21taXRfcmFuZ2UoKSBtaXNz
aW5nIHJlcXVpcmVkICdlbmQnIGFyZ3VtZW50cyIpCisKKyAgICAgICAgaWYgbGlzdChiZWdpbl9h
cmdzLmtleXMoKSkgPT0gWydhcmd1bWVudCddOgorICAgICAgICAgICAgYmVnaW5fcmVzdWx0ID0g
c2VsZi5maW5kKGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZpZXI9RmFs
c2UsICoqYmVnaW5fYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJlZ2luX3Jlc3Vs
dCA9IHNlbGYuY29tbWl0KGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nLCBpbmNsdWRlX2lkZW50aWZp
ZXI9RmFsc2UsICoqYmVnaW5fYXJncykKKworICAgICAgICBpZiBsaXN0KGVuZF9hcmdzLmtleXMo
KSkgPT0gWydhcmd1bWVudCddOgorICAgICAgICAgICAgZW5kX3Jlc3VsdCA9IHNlbGYuZmluZChp
bmNsdWRlX2xvZz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRp
ZmllciwgKiplbmRfYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuZF9yZXN1bHQg
PSBzZWxmLmNvbW1pdChpbmNsdWRlX2xvZz1pbmNsdWRlX2xvZywgaW5jbHVkZV9pZGVudGlmaWVy
PWluY2x1ZGVfaWRlbnRpZmllciwgKiplbmRfYXJncykKKworICAgICAgICBpZiBub3QgYmVnaW5f
cmVzdWx0OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30nIGZhaWxlZCB0byBkZWZp
bmUgYmVnaW4gaW4gX2NvbW1pdF9yYW5nZSgpIi5mb3JtYXQoYmVnaW5fYXJncykpCisgICAgICAg
IGlmIG5vdCBlbmRfcmVzdWx0OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIne30nIGZh
aWxlZCB0byBkZWZpbmUgYmVnaW4gaW4gX2NvbW1pdF9yYW5nZSgpIi5mb3JtYXQoZW5kX2FyZ3Mp
KQorICAgICAgICBpZiBiZWdpbl9yZXN1bHQudGltZXN0YW1wID4gZW5kX3Jlc3VsdC50aW1lc3Rh
bXA6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIid7fScgcHJlLWRhdGVzICd7fScgaW4g
X2NvbW1pdF9yYW5nZSgpIi5mb3JtYXQoYmVnaW5fcmVzdWx0LCBlbmRfcmVzdWx0KSkKKyAgICAg
ICAgaWYgZW5kX3Jlc3VsdC5icmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaCBhbmQgYmVnaW5f
cmVzdWx0LmJyYW5jaCAhPSBzZWxmLmRlZmF1bHRfYnJhbmNoOgorICAgICAgICAgICAgcmFpc2Ug
VHlwZUVycm9yKCIne30nIGFuZCAne30nIGRvIG5vdCBzaGFyZSBsaW5lYXIgaGlzdG9yeSIuZm9y
bWF0KGJlZ2luX3Jlc3VsdCwgZW5kX3Jlc3VsdCkpCisgICAgICAgIHJldHVybiBiZWdpbl9yZXN1
bHQsIGVuZF9yZXN1bHQKKworICAgIGRlZiBjb21taXRzKHNlbGYsIGJlZ2luPU5vbmUsIGVuZD1O
b25lLCBpbmNsdWRlX2xvZz1UcnVlLCBpbmNsdWRlX2lkZW50aWZpZXI9VHJ1ZSk6CisgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCiAgICAgZGVmIHByaW9yaXRpemVfYnJhbmNo
ZXMoc2VsZiwgYnJhbmNoZXMpOgogICAgICAgICBpZiBsZW4oYnJhbmNoZXMpID09IDE6CiAgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoZXNbMF0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9sb2NhbC9naXQucHkJ
KHJldmlzaW9uIDI3NzEwMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5
L3dlYmtpdHNjbXB5L2xvY2FsL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjAsMTIgKzIwLDE4
IEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBjYWxl
bmRhcgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc2l4Citp
bXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKIAotZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IHJ1biwgZGVjb3JhdG9ycywgVGltZW91dEV4cGlyZWQKK2Zyb20gZGF0ZXRp
bWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IHJ1biwgZGVjb3JhdG9ycwogZnJvbSB3ZWJraXRzY21weS5sb2NhbCBpbXBvcnQgU2NtCiBmcm9t
IHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQsIENvbnRyaWJ1dG9yLCBsb2cKIApAQCAtMzAwLDYg
KzMwNiwxMDYgQEAgY2xhc3MgR2l0KFNjbSk6CiAgICAgICAgICAgICBtZXNzYWdlPWxvZ2NvbnRl
bnQgaWYgaW5jbHVkZV9sb2cgZWxzZSBOb25lLAogICAgICAgICApCiAKKyAgICBkZWYgX2FyZ3Nf
ZnJvbV9jb250ZW50KHNlbGYsIGNvbnRlbnQsIGluY2x1ZGVfbG9nPVRydWUpOgorICAgICAgICBh
dXRob3IgPSBOb25lCisgICAgICAgIHRpbWVzdGFtcCA9IE5vbmUKKworICAgICAgICBmb3IgbGlu
ZSBpbiBjb250ZW50LnNwbGl0bGluZXMoKVs6NF06CisgICAgICAgICAgICBzcGxpdCA9IGxpbmUu
c3BsaXQoJzogJykKKyAgICAgICAgICAgIGlmIHNwbGl0WzBdID09ICdBdXRob3InOgorICAgICAg
ICAgICAgICAgIGF1dGhvciA9IENvbnRyaWJ1dG9yLmZyb21fc2NtX2xvZyhsaW5lLmxzdHJpcCgp
LCBzZWxmLmNvbnRyaWJ1dG9ycykKKyAgICAgICAgICAgIGVsaWYgc3BsaXRbMF0gPT0gJ0NvbW1p
dERhdGUnOgorICAgICAgICAgICAgICAgIHR6X2RpZmYgPSBsaW5lLnNwbGl0KCcgJylbLTFdCisg
ICAgICAgICAgICAgICAgZGF0ZSA9IGRhdGV0aW1lLnN0cnB0aW1lKHNwbGl0WzFdLmxzdHJpcCgp
WzotbGVuKHR6X2RpZmYpXSwgJyVhICViICVkICVIOiVNOiVTICVZICcpCisgICAgICAgICAgICAg
ICAgZGF0ZSArPSB0aW1lZGVsdGEoCisgICAgICAgICAgICAgICAgICAgIGhvdXJzPWludCh0el9k
aWZmWzE6M10pLAorICAgICAgICAgICAgICAgICAgICBtaW51dGVzPWludCh0el9kaWZmWzM6NV0p
LAorICAgICAgICAgICAgICAgICkgKiAoMSBpZiB0el9kaWZmWzBdID09ICctJyBlbHNlIC0xKQor
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChjYWxlbmRhci50aW1lZ20oZGF0ZS50aW1l
dHVwbGUoKSkpIC0gdGltZS50aW1lem9uZQorCisgICAgICAgIG1lc3NhZ2UgPSAnJworICAgICAg
ICBmb3IgbGluZSBpbiBjb250ZW50LnNwbGl0bGluZXMoKVs1Ol06CisgICAgICAgICAgICBtZXNz
YWdlICs9IGxpbmVbNDpdICsgJ1xuJworICAgICAgICBtYXRjaGVzID0gc2VsZi5HSVRfU1ZOX1JF
VklTSU9OLmZpbmRhbGwobWVzc2FnZSkKKworICAgICAgICByZXR1cm4gZGljdCgKKyAgICAgICAg
ICAgIHJldmlzaW9uPWludChtYXRjaGVzWy0xXS5zcGxpdCgnQCcpWzBdKSBpZiBtYXRjaGVzIGVs
c2UgTm9uZSwKKyAgICAgICAgICAgIGF1dGhvcj1hdXRob3IsCisgICAgICAgICAgICB0aW1lc3Rh
bXA9dGltZXN0YW1wLAorICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlLnJzdHJpcCgpIGlmIGlu
Y2x1ZGVfbG9nIGVsc2UgTm9uZSwKKyAgICAgICAgKQorCisgICAgZGVmIGNvbW1pdHMoc2VsZiwg
YmVnaW49Tm9uZSwgZW5kPU5vbmUsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRpZmll
cj1UcnVlKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShiZWdpbj1i
ZWdpbiwgZW5kPWVuZCwgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmllcikKKwor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2cgPSBOb25lCisgICAgICAgICAgICBsb2cgPSBz
dWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xv
ZycsICctLWZvcm1hdD1mdWxsZXInLCAne30uLi57fScuZm9ybWF0KGVuZC5oYXNoLCBiZWdpbi5o
YXNoKV0sCisgICAgICAgICAgICAgICAgY3dkPXNlbGYucm9vdF9wYXRoLAorICAgICAgICAgICAg
ICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnBy
b2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAqKihkaWN0KGVuY29kaW5nPSd1dGYtOCcpIGlm
IHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSBkaWN0KCkpCisgICAgICAgICAgICApCisg
ICAgICAgICAgICBpZiBsb2cucG9sbCgpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuRXhj
ZXB0aW9uKCJGYWlsZWQgdG8gY29uc3RydWN0IGhpc3RvcnkgZm9yICd7fSciLmZvcm1hdChlbmQu
YnJhbmNoKSkKKworICAgICAgICAgICAgbGluZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAg
ICAgICAgICAgcHJldmlvdXMgPSBbZW5kXQorICAgICAgICAgICAgd2hpbGUgbGluZToKKyAgICAg
ICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCdjb21taXQgJyk6CisgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBgZ2l0IGxvZ2AgZm9ybWF0
JykKKyAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBwcmV2aW91c1swXS5icmFuY2hfcG9p
bnQKKyAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gcHJldmlvdXNbMF0uaWRlbnRpZmllcgor
ICAgICAgICAgICAgICAgIGhhc2ggPSBsaW5lLnNwbGl0KCcgJylbLTFdLnJzdHJpcCgpCisgICAg
ICAgICAgICAgICAgaWYgaGFzaCAhPSBwcmV2aW91c1swXS5oYXNoOgorICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVyIC09IDEKKworICAgICAgICAgICAgICAgIGlmIG5vdCBpZGVudGlmaWVy
OgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJhbmNoX3BvaW50CisgICAgICAg
ICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAgICAgICAgICAgICAgIGNvbnRl
bnQgPSAnJworICAgICAgICAgICAgICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAg
ICAgICAgICAgICAgICB3aGlsZSBsaW5lIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCdjb21taXQg
Jyk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgKz0gbGluZQorICAgICAgICAgICAgICAg
ICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisKKyAgICAgICAgICAgICAgICBjb21t
aXQgPSBDb21taXQoCisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9c2VsZi5pZCwK
KyAgICAgICAgICAgICAgICAgICAgaGFzaD1oYXNoLAorICAgICAgICAgICAgICAgICAgICBicmFu
Y2g9ZW5kLmJyYW5jaCBpZiBpZGVudGlmaWVyIGFuZCBicmFuY2hfcG9pbnQgZWxzZSBzZWxmLmRl
ZmF1bHRfYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyPWlkZW50aWZpZXIg
aWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgYnJh
bmNoX3BvaW50PWJyYW5jaF9wb2ludCBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lLAor
ICAgICAgICAgICAgICAgICAgICBvcmRlcj0wLAorICAgICAgICAgICAgICAgICAgICAqKnNlbGYu
X2FyZ3NfZnJvbV9jb250ZW50KGNvbnRlbnQsIGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nKQorICAg
ICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICMgRW5zdXJlIHRoYXQgd2UgZG9uJ3Qg
ZHVwbGljYXRlIHRoZSBmaXJzdCBhbmQgbGFzdCBjb21taXRzCisgICAgICAgICAgICAgICAgaWYg
Y29tbWl0Lmhhc2ggPT0gcHJldmlvdXNbMF0uaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgcHJl
dmlvdXNbMF0gPSBjb21taXQKKworICAgICAgICAgICAgICAgICMgSWYgd2Ugc2hhcmUgYSB0aW1l
c3RhbXAgd2l0aCB0aGUgcHJldmlvdXMgY29tbWl0LCB0aGF0IG1lYW5zIHRoYXQgdGhpcyBjb21t
aXQgaGFzIGFuIG9yZGVyCisgICAgICAgICAgICAgICAgIyBsZXNzIHRoYW4gdGhlIHNldCBvZiBj
b21taXRzIGNhY2hlZCBpbiBwcmV2aW91cworICAgICAgICAgICAgICAgIGVsaWYgY29tbWl0LnRp
bWVzdGFtcCA9PSBwcmV2aW91c1swXS50aW1lc3RhbXA6CisgICAgICAgICAgICAgICAgICAgIGZv
ciBjYWNoZWQgaW4gcHJldmlvdXM6CisgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWQub3Jk
ZXIgKz0gMQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cy5hcHBlbmQoY29tbWl0KQorCisg
ICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBzaGFyZSBhIHRpbWVzdGFtcCB3aXRoIHRoZSBw
cmV2aW91cyBzZXQgb2YgY29tbWl0cywgd2Ugc2hvdWxkIHJldHVybiBhbGwgY29tbWl0cworICAg
ICAgICAgICAgICAgICMgY2FjaGVkIGluIHByZXZpb3VzLgorICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgIGZvciBjYWNoZWQgaW4gcHJldmlvdXM6CisgICAgICAgICAg
ICAgICAgICAgICAgICB5aWVsZCBjYWNoZWQKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMg
PSBbY29tbWl0XQorCisgICAgICAgICAgICBmb3IgY2FjaGVkIGluIHByZXZpb3VzOgorICAgICAg
ICAgICAgICAgIGNhY2hlZC5vcmRlciArPSBiZWdpbi5vcmRlcgorICAgICAgICAgICAgICAgIHlp
ZWxkIGNhY2hlZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbG9nOgorICAgICAg
ICAgICAgICAgIGxvZy5raWxsKCkKKwogICAgIGRlZiBmaW5kKHNlbGYsIGFyZ3VtZW50LCBpbmNs
dWRlX2xvZz1UcnVlLCBpbmNsdWRlX2lkZW50aWZpZXI9VHJ1ZSk6CiAgICAgICAgIGlmIG5vdCBp
c2luc3RhbmNlKGFyZ3VtZW50LCBzaXguc3RyaW5nX3R5cGVzKToKICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoIkV4cGVjdGVkICdhcmd1bWVudCcgdG8gYmUgYSBzdHJpbmcsIG5vdCAne30n
Ii5mb3JtYXQodHlwZShhcmd1bWVudCkpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L2xvY2FsL3N2bi5weQko
cmV2aXNpb24gMjc3MTAxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkv
d2Via2l0c2NtcHkvbG9jYWwvc3ZuLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNiArNDAxLDkx
IEBAIGNsYXNzIFN2bihTY20pOgogICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlLAogICAgICAg
ICApCiAKKyAgICBkZWYgX2FyZ3NfZnJvbV9jb250ZW50KHNlbGYsIGNvbnRlbnQsIGluY2x1ZGVf
bG9nPVRydWUpOgorICAgICAgICBsZWFkaW5nID0gY29udGVudC5zcGxpdGxpbmVzKClbMF0KKyAg
ICAgICAgbWF0Y2ggPSBDb250cmlidXRvci5TVk5fQVVUSE9SX1JFLm1hdGNoKGxlYWRpbmcpIG9y
IENvbnRyaWJ1dG9yLlNWTl9BVVRIT1JfUV9SRS5tYXRjaChsZWFkaW5nKQorICAgICAgICBpZiBu
b3QgbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4ge30KKworICAgICAgICB0el9kaWZmID0gbWF0
Y2guZ3JvdXAoJ2RhdGUnKS5zcGxpdCgnICcsIDIpWy0xXQorICAgICAgICBkYXRlID0gZGF0ZXRp
bWUuc3RycHRpbWUobWF0Y2guZ3JvdXAoJ2RhdGUnKVs6LWxlbih0el9kaWZmKV0sICclWS0lbS0l
ZCAlSDolTTolUyAnKQorICAgICAgICBkYXRlICs9IHRpbWVkZWx0YSgKKyAgICAgICAgICAgIGhv
dXJzPWludCh0el9kaWZmWzE6M10pLAorICAgICAgICAgICAgbWludXRlcz1pbnQodHpfZGlmZlsz
OjVdKSwKKyAgICAgICAgKSAqICgxIGlmIHR6X2RpZmZbMF0gPT0gJy0nIGVsc2UgLTEpCisKKyAg
ICAgICAgcmV0dXJuIGRpY3QoCisgICAgICAgICAgICByZXZpc2lvbj1pbnQobWF0Y2guZ3JvdXAo
J3JldmlzaW9uJykpLAorICAgICAgICAgICAgdGltZXN0YW1wPWludChjYWxlbmRhci50aW1lZ20o
ZGF0ZS50aW1ldHVwbGUoKSkpLAorICAgICAgICAgICAgYXV0aG9yPUNvbnRyaWJ1dG9yLmZyb21f
c2NtX2xvZyhsZWFkaW5nLCBzZWxmLmNvbnRyaWJ1dG9ycyksCisgICAgICAgICAgICBtZXNzYWdl
PSdcbicuam9pbihjb250ZW50LnNwbGl0bGluZXMoKVsyOl0pLnJzdHJpcCgpIGlmIGluY2x1ZGVf
bG9nIGVsc2UgTm9uZSwKKyAgICAgICAgKQorCisKKyAgICBkZWYgY29tbWl0cyhzZWxmLCBiZWdp
bj1Ob25lLCBlbmQ9Tm9uZSwgaW5jbHVkZV9sb2c9VHJ1ZSwgaW5jbHVkZV9pZGVudGlmaWVyPVRy
dWUpOgorICAgICAgICBiZWdpbiwgZW5kID0gc2VsZi5fY29tbWl0X3JhbmdlKGJlZ2luPWJlZ2lu
LCBlbmQ9ZW5kLCBpbmNsdWRlX2lkZW50aWZpZXI9aW5jbHVkZV9pZGVudGlmaWVyKQorICAgICAg
ICBwcmV2aW91cyA9IGVuZAorICAgICAgICBpZiBlbmQuYnJhbmNoID09IHNlbGYuZGVmYXVsdF9i
cmFuY2ggb3IgJy8nIGluIGVuZC5icmFuY2g6CisgICAgICAgICAgICBicmFuY2hfYXJnID0gJ14v
e30nLmZvcm1hdChlbmQuYnJhbmNoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJhbmNo
X2FyZyA9ICdeL2JyYW5jaGVzL3t9Jy5mb3JtYXQoZW5kLmJyYW5jaCkKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBsb2cgPSBOb25lCisgICAgICAgICAgICBsb2cgPSBzdWJwcm9jZXNzLlBv
cGVuKAorICAgICAgICAgICAgICAgIFtzZWxmLmV4ZWN1dGFibGUoKSwgJ2xvZycsICctcicsICd7
fTp7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBlbmQucmV2aXNpb24sIGJlZ2luLnJl
dmlzaW9uLAorICAgICAgICAgICAgICAgICksIGJyYW5jaF9hcmddICsgKFtdIGlmIGluY2x1ZGVf
bG9nIGVsc2UgWyctcSddKSwKKyAgICAgICAgICAgICAgICBjd2Q9c2VsZi5yb290X3BhdGgsCisg
ICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICBz
dGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICoqKGRpY3QoZW5jb2Rpbmc9
J3V0Zi04JykgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIGRpY3QoKSkKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICAgIGlmIGxvZy5wb2xsKCk6CisgICAgICAgICAgICAgICAgcmFp
c2Ugc2VsZi5FeGNlcHRpb24oJ0ZhaWxlZCB0byBmaW5kIGNvbW1pdHMgYmV0d2VlbiB7fSBhbmQg
e30gb24ge30nLmZvcm1hdChiZWdpbiwgZW5kLCBicmFuY2hfYXJnKSkKKworICAgICAgICAgICAg
Y29udGVudCA9ICcnCisgICAgICAgICAgICBsaW5lID0gbG9nLnN0ZG91dC5yZWFkbGluZSgpCisg
ICAgICAgICAgICBkaXZpZGVyID0gJy0nICogNzIKKyAgICAgICAgICAgIHdoaWxlIFRydWU6Cisg
ICAgICAgICAgICAgICAgaWYgbGluZSBhbmQgbGluZS5yc3RyaXAoKSAhPSBkaXZpZGVyOgorICAg
ICAgICAgICAgICAgICAgICBjb250ZW50ICs9IGxpbmUKKyAgICAgICAgICAgICAgICAgICAgbGlu
ZSA9IGxvZy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgICAgICAgICAgaWYgbm90IGNvbnRlbnQ6CisgICAgICAgICAgICAgICAgICAgIGxp
bmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IHByZXZpb3VzLmJyYW5jaF9wb2ludCBp
ZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lCisgICAgICAgICAgICAgICAgaWRlbnRpZmll
ciA9IHByZXZpb3VzLmlkZW50aWZpZXIgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9uZQor
CisgICAgICAgICAgICAgICAgYXJncyA9IHNlbGYuX2FyZ3NfZnJvbV9jb250ZW50KGNvbnRlbnQs
IGluY2x1ZGVfbG9nPWluY2x1ZGVfbG9nKQorICAgICAgICAgICAgICAgIGlmIGFyZ3NbJ3Jldmlz
aW9uJ10gIT0gcHJldmlvdXMucmV2aXNpb246CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHBy
ZXZpb3VzCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgLT0gMQorICAgICAgICAgICAg
ICAgIGlmIG5vdCBpZGVudGlmaWVyOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0g
YnJhbmNoX3BvaW50CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKwor
ICAgICAgICAgICAgICAgIHByZXZpb3VzID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkPXNlbGYuaWQsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1lbmQuYnJh
bmNoIGlmIGJyYW5jaF9wb2ludCBlbHNlIHNlbGYuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICAg
ICAgICAgICAgIGlkZW50aWZpZXI9aWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgYnJh
bmNoX3BvaW50PWJyYW5jaF9wb2ludCwKKyAgICAgICAgICAgICAgICAgICAgKiphcmdzCisgICAg
ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGNvbnRlbnQgPSAnJworICAgICAgICAgICAg
ICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg
ICAgIGxpbmUgPSBsb2cuc3Rkb3V0LnJlYWRsaW5lKCkKKworICAgICAgICAgICAgeWllbGQgcHJl
dmlvdXMKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgbG9nOgorICAgICAgICAg
ICAgICAgIGxvZy5raWxsKCkKKwogICAgIGRlZiBjaGVja291dChzZWxmLCBhcmd1bWVudCk6CiAg
ICAgICAgIGNvbW1pdCA9IHNlbGYuZmluZChhcmd1bWVudCkKICAgICAgICAgaWYgbm90IGNvbW1p
dDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L21vY2tzL2xvY2FsL2dpdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9sb2NhbC9naXQucHkJKHJldmlzaW9uIDI3
NzEwMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5
L21vY2tzL2xvY2FsL2dpdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogaW1w
b3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgdGltZQogCiBmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tzLCBPdXRw
dXRDYXB0dXJlLCBTdHJpbmdJTwpAQCAtMjI4LDcgKzIyOSw3IEBAIG5vdGhpbmcgdG8gY29tbWl0
LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2g9
c2VsZi5icmFuY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yPXNlbGYuZmlu
ZChhcmdzWzJdKS5hdXRob3IubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFp
bD1zZWxmLmZpbmQoYXJnc1syXSkuYXV0aG9yLmVtYWlsLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGU9ZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzZWxmLmZpbmQoYXJnc1syXSkudGlt
ZXN0YW1wKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRlPWRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoc2VsZi5maW5kKGFy
Z3NbMl0pLnRpbWVzdGFtcCArIHRpbWUudGltZXpvbmUpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDol
TTolUyAlWSArMDAwMCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZz0nXG4nLmpv
aW4oWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgICAgJyArIGxpbmUp
IGlmIGxpbmUgZWxzZSAnJyBmb3IgbGluZSBpbiBzZWxmLmZpbmQoYXJnc1syXSkubWVzc2FnZS5z
cGxpdGxpbmVzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSArIChbJyAgICBn
aXQtc3ZuLWlkOiBodHRwczovL3N2bi57fS9yZXBvc2l0b3J5L3t9L3RydW5rQHt9IDI2OGY0NWNj
LWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYycuZm9ybWF0KApAQCAtMjQwLDYgKzI0MSwzMyBA
QCBub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyB0cmVlIGNsZWFuCiAgICAgICAgICAgICAgICAg
ICAgICAgICApLAogICAgICAgICAgICAgICAgICkgaWYgc2VsZi5maW5kKGFyZ3NbMl0pIGVsc2Ug
bW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xMjgpLAogICAgICAgICAgICAgKSwg
bW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKKyAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUs
ICdsb2cnLCAnLS1mb3JtYXQ9ZnVsbGVyJywgcmUuY29tcGlsZShyJy4rXC5cLlwuLisnKSwKKyAg
ICAgICAgICAgICAgICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1s
YW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBtb2Nrcy5Qcm9jZXNzQ29tcGxldGlvbigKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuY29kZT0wLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9J1xu
Jy5qb2luKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjb21taXQge2hhc2h9XG4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAnQXV0aG9yOiAgICAge2F1dGhvcn0gPHtlbWFpbH0+XG4nCisg
ICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yRGF0ZToge2RhdGV9XG4nCisgICAgICAgICAg
ICAgICAgICAgICAgICAnQ29tbWl0OiAgICAge2F1dGhvcn0gPHtlbWFpbH0+XG4nCisgICAgICAg
ICAgICAgICAgICAgICAgICAnQ29tbWl0RGF0ZToge2RhdGV9XG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAnXG57bG9nfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh
c2g9Y29tbWl0Lmhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yPWNvbW1p
dC5hdXRob3IubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD1jb21taXQu
YXV0aG9yLmVtYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU9ZGF0ZXRpbWUu
dXRjZnJvbXRpbWVzdGFtcChjb21taXQudGltZXN0YW1wICsgdGltZS50aW1lem9uZSkuc3RyZnRp
bWUoJyVhICViICVkICVIOiVNOiVTICVZICswMDAwJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nPSdcbicuam9pbihbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgn
ICAgICcgKyBsaW5lKSBpZiBsaW5lIGVsc2UgJycgZm9yIGxpbmUgaW4gY29tbWl0Lm1lc3NhZ2Uu
c3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSArIChbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4ue30v
cmVwb3NpdG9yeS97fS90cnVua0B7fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRi
ZmMnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVt
b3RlLnNwbGl0KCdAJylbLTFdLnNwbGl0KCc6JylbMF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKV0gaWYgZ2l0X3N2biBlbHNlIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkp
IGZvciBjb21taXQgaW4gc2VsZi5jb21taXRzX2luX3JhbmdlKGFyZ3NbM10uc3BsaXQoJy4uLicp
Wy0xXSwgYXJnc1szXS5zcGxpdCgnLi4uJylbMF0pCisgICAgICAgICAgICAgICAgICAgIF0pCisg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgK
ICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUsICdyZXYtbGlzdCcsICctLWNvdW50Jywg
Jy0tbm8tbWVyZ2VzJywgcmUuY29tcGlsZShyJy4rJyksCiAgICAgICAgICAgICAgICAgY3dkPXNl
bGYucGF0aCwKICAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJn
czogbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24oCkBAIC00NjMsMyArNDkxLDM0IEBAIG5vdGhpbmcg
dG8gY29tbWl0LCB3b3JraW5nIHRyZWUgY2xlYW4KICAgICAgICAgICAgIHJldHVybmNvZGU9MCwK
ICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQuZ2V0dmFsdWUoKSwKICAgICAgICAgKQorCisgICAg
ZGVmIGNvbW1pdHNfaW5fcmFuZ2Uoc2VsZiwgYmVnaW4sIGVuZCk6CisgICAgICAgIGJyYW5jaGVz
ID0gW3NlbGYuZGVmYXVsdF9icmFuY2hdCisgICAgICAgIGZvciBicmFuY2gsIGNvbW1pdHMgaW4g
c2VsZi5jb21taXRzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBicmFuY2ggPT0gc2VsZi5kZWZh
dWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIGNv
bW1pdCBpbiBjb21taXRzOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGVuZDoK
KyAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMuaW5zZXJ0KDAsIGJyYW5jaCkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGxlbihicmFuY2hlcykgPiAxOgorICAg
ICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaW5fcmFuZ2UgPSBGYWxzZQorICAgICAgICBw
cmV2aW91cyA9IE5vbmUKKyAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlczoKKyAgICAgICAg
ICAgIGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2JyYW5jaF0pOgorICAgICAg
ICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IGVuZDoKKyAgICAgICAgICAgICAgICAgICAgaW5f
cmFuZ2UgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgaW5fcmFuZ2UgYW5kIChub3QgcHJldmlv
dXMgb3IgY29tbWl0Lmhhc2ggIT0gcHJldmlvdXMuaGFzaCk6CisgICAgICAgICAgICAgICAgICAg
IHlpZWxkIGNvbW1pdAorICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY29tbWl0CisgICAgICAg
ICAgICAgICAgaWYgY29tbWl0Lmhhc2ggPT0gYmVnaW46CisgICAgICAgICAgICAgICAgICAgIGlu
X3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAgIGluX3JhbmdlID0gRmFsc2UKKyAgICAgICAgICAg
IGlmIG5vdCBwcmV2aW91cyBvciBicmFuY2ggPT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmb3IgY29tbWl0IGluIHJldmVyc2Vk
KHNlbGYuY29tbWl0c1tzZWxmLmRlZmF1bHRfYnJhbmNoXSk6CisgICAgICAgICAgICAgICAgaWYg
cHJldmlvdXMuYnJhbmNoX3BvaW50ID09IGNvbW1pdC5pZGVudGlmaWVyOgorICAgICAgICAgICAg
ICAgICAgICBlbmQgPSBjb21taXQuaGFzaApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL2xv
Y2FsL3N2bi5weQkocmV2aXNpb24gMjc3MTAxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMv
d2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvbG9jYWwvc3ZuLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC02NSwxNCArNjUsMTggQEAgY2xhc3MgU3ZuKG1vY2tzLlN1YnByb2Nlc3MpOgogCiAgICAg
ICAgIHN1cGVyKFN2biwgc2VsZikuX19pbml0X18oCiAgICAgICAgICAgICBtb2Nrcy5TdWJwcm9j
ZXNzLlJvdXRlKAotICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSwgJ2luZm8nLAotICAg
ICAgICAgICAgICAgIGN3ZD1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxh
bWJkYSAqYXJncywgKiprd2FyZ3M6IHNlbGYuX2luZm8oY3dkPWt3YXJncy5nZXQoJ2N3ZCcsICcn
KSkKLSAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCiAgICAgICAgICAgICAg
ICAgc2VsZi5leGVjdXRhYmxlLCAnaW5mbycsIHNlbGYuQlJBTkNIX1JFLAogICAgICAgICAgICAg
ICAgIGN3ZD1zZWxmLnBhdGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJn
cywgKiprd2FyZ3M6IHNlbGYuX2luZm8oYnJhbmNoPXNlbGYuQlJBTkNIX1JFLm1hdGNoKGFyZ3Nb
Ml0pLmdyb3VwKCdicmFuY2gnKSwgY3dkPWt3YXJncy5nZXQoJ2N3ZCcsICcnKSkKICAgICAgICAg
ICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVj
dXRhYmxlLCAnaW5mbycsICctcicsIHJlLmNvbXBpbGUocidcZCsnKSwKKyAgICAgICAgICAgICAg
ICBjd2Q9c2VsZi5wYXRoLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEgKmFyZ3Ms
ICoqa3dhcmdzOiBzZWxmLl9pbmZvKHJldmlzaW9uPWludChhcmdzWzNdKSwgY3dkPWt3YXJncy5n
ZXQoJ2N3ZCcsICcnKSkKKyAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91dGUoCisg
ICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnaW5mbycsCisgICAgICAgICAgICAgICAg
Y3dkPXNlbGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAq
Kmt3YXJnczogc2VsZi5faW5mbyhjd2Q9a3dhcmdzLmdldCgnY3dkJywgJycpKQorICAgICAgICAg
ICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1
dGFibGUsICdsaXN0JywgJ14vYnJhbmNoZXMnLAogICAgICAgICAgICAgICAgIGN3ZD1zZWxmLnBh
dGgsCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yPWxhbWJkYSAqYXJncywgKiprd2FyZ3M6IG1v
Y2tzLlByb2Nlc3NDb21wbGV0aW9uKApAQCAtMTE5LDYgKzEyMywxNCBAQCBjbGFzcyBTdm4obW9j
a3MuU3VicHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPWFyZ3NbNV0sCiAg
ICAgICAgICAgICAgICAgKSBpZiBzZWxmLmNvbm5lY3RlZCBlbHNlIG1vY2tzLlByb2Nlc3NDb21w
bGV0aW9uKHJldHVybmNvZGU9MSkKICAgICAgICAgICAgICksIG1vY2tzLlN1YnByb2Nlc3MuUm91
dGUoCisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlLCAnbG9nJywgJy1yJywgcmUuY29t
cGlsZShyJ1xkKzpcZCsnKSwgc2VsZi5CUkFOQ0hfUkUsCisgICAgICAgICAgICAgICAgY3dkPXNl
bGYucGF0aCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I9bGFtYmRhICphcmdzLCAqKmt3YXJn
czogc2VsZi5fbG9nX3JhbmdlKAorICAgICAgICAgICAgICAgICAgICBicmFuY2g9c2VsZi5CUkFO
Q0hfUkUubWF0Y2goYXJnc1s0XSkuZ3JvdXAoJ2JyYW5jaCcpLAorICAgICAgICAgICAgICAgICAg
ICBlbmQ9aW50KGFyZ3NbM10uc3BsaXQoJzonKVswXSksCisgICAgICAgICAgICAgICAgICAgIGJl
Z2luPWludChhcmdzWzNdLnNwbGl0KCc6JylbLTFdKSwKKyAgICAgICAgICAgICAgICApIGlmIHNl
bGYuY29ubmVjdGVkIGVsc2UgbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0xKQor
ICAgICAgICAgICAgKSwgbW9ja3MuU3VicHJvY2Vzcy5Sb3V0ZSgKICAgICAgICAgICAgICAgICBz
ZWxmLmV4ZWN1dGFibGUsICd1cCcsICctcicsIHJlLmNvbXBpbGUocidcZCsnKSwKICAgICAgICAg
ICAgICAgICBjd2Q9c2VsZi5wYXRoLAogICAgICAgICAgICAgICAgIGdlbmVyYXRvcj1sYW1iZGEg
KmFyZ3MsICoqa3dhcmdzOgpAQCAtMjA0LDYgKzIxNiwyOCBAQCBjbGFzcyBTdm4obW9ja3MuU3Vi
cHJvY2Vzcyk6CiAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgKQogCisgICAgZGVmIF9sb2df
cmFuZ2Uoc2VsZiwgYnJhbmNoPU5vbmUsIGVuZD1Ob25lLCBiZWdpbj1Ob25lKToKKyAgICAgICAg
aWYgZW5kIDwgYmVnaW46CisgICAgICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRp
b24ocmV0dXJuY29kZT0xKQorCisgICAgICAgIG91dHB1dCA9ICcnCisgICAgICAgIHByZXZpb3Vz
ID0gTm9uZQorICAgICAgICBmb3IgYiBpbiBbYnJhbmNoLCAndHJ1bmsnXToKKyAgICAgICAgICAg
IGZvciBjYW5kaWRhdGUgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzLmdldChiLCBbXSkpOgorICAg
ICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZS5yZXZpc2lvbiA+IGVuZCBvciBjYW5kaWRhdGUucmV2
aXNpb24gPCBiZWdpbjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
ICAgICBpZiBwcmV2aW91cyBhbmQgcHJldmlvdXMucmV2aXNpb24gPD0gY2FuZGlkYXRlLnJldmlz
aW9uOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHByZXZp
b3VzID0gY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICgnLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tXG4nCisgICAgICAgICAgICAgICAgICAgICd7bGluZX0gfCB7bGluZXN9IGxpbmVzXG5cbicK
KyAgICAgICAgICAgICAgICAgICAgJ3tsb2d9XG4nKS5mb3JtYXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lPXNlbGYubG9nX2xpbmUoY2FuZGlkYXRlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmVzPWxlbihjYW5kaWRhdGUubWVzc2FnZS5zcGxpdGxpbmVzKCkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nPWNhbmRpZGF0ZS5tZXNzYWdlCisgICAgICAgICAgICAgICAg
KQorICAgICAgICByZXR1cm4gbW9ja3MuUHJvY2Vzc0NvbXBsZXRpb24ocmV0dXJuY29kZT0wLCBz
dGRvdXQ9b3V0cHV0KQorCiAgICAgZGVmIGZpbmQoc2VsZiwgYnJhbmNoPU5vbmUsIHJldmlzaW9u
PU5vbmUpOgogICAgICAgICBpZiBub3QgYnJhbmNoIGFuZCBub3QgcmV2aXNpb246CiAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5oZWFkCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9yZW1vdGUvZ2l0X2h1Yi5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9tb2Nrcy9y
ZW1vdGUvZ2l0X2h1Yi5weQkocmV2aXNpb24gMjc3MTAxKQorKysgVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL2dpdF9odWIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsNTIgQEAgY2xhc3MgR2l0SHViKG1vY2tzLlJlcXVl
c3RzKToKICAgICAgICAgICAgIH0gZm9yIHJlZmVyZW5jZSwgY29tbWl0IGluIChzZWxmLmNvbW1p
dHMgaWYgdHlwZSA9PSAnYnJhbmNoZXMnIGVsc2Ugc2VsZi50YWdzKS5pdGVtcygpCiAgICAgICAg
IF0sIHVybD11cmwpCiAKKyAgICBkZWYgX2NvbW1pdHNfcmVzcG9uc2Uoc2VsZiwgdXJsLCByZWYp
OgorICAgICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCisKKyAg
ICAgICAgYmFzZSA9IHNlbGYuY29tbWl0KHJlZikKKyAgICAgICAgaWYgbm90IGJhc2U6CisgICAg
ICAgICAgICByZXR1cm4gbW9ja3MuUmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc3RhdHVzX2Nv
ZGU9NDA0LAorICAgICAgICAgICAgICAgIHVybD11cmwsCisgICAgICAgICAgICAgICAgdGV4dD1q
c29uLmR1bXBzKGRpY3QobWVzc2FnZT0nTm8gY29tbWl0IGZvdW5kIGZvciBTSEE6IHt9Jy5mb3Jt
YXQocmVmKSkpLAorICAgICAgICAgICAgKQorCisgICAgICAgIHJlc3BvbnNlID0gW10KKyAgICAg
ICAgZm9yIGJyYW5jaCBpbiBbc2VsZi5kZWZhdWx0X2JyYW5jaF0gaWYgYmFzZS5icmFuY2ggPT0g
c2VsZi5kZWZhdWx0X2JyYW5jaCBlbHNlIFtiYXNlLmJyYW5jaCwgc2VsZi5kZWZhdWx0X2JyYW5j
aF06CisgICAgICAgICAgICBpbl9yYW5nZSA9IEZhbHNlCisgICAgICAgICAgICBwcmV2aW91cyA9
IE5vbmUKKyAgICAgICAgICAgIGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2Jy
YW5jaF0pOgorICAgICAgICAgICAgICAgIGlmIGNvbW1pdC5oYXNoID09IHJlZjoKKyAgICAgICAg
ICAgICAgICAgICAgaW5fcmFuZ2UgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgbm90IGluX3Jh
bmdlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHByZXZp
b3VzID0gY29tbWl0CisgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKHsKKyAgICAgICAg
ICAgICAgICAgICAgJ3NoYSc6IGNvbW1pdC5oYXNoLAorICAgICAgICAgICAgICAgICAgICAnY29t
bWl0JzogeworICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcic6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnbmFtZSc6IGNvbW1pdC5hdXRob3IubmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZW1haWwnOiBjb21taXQuYXV0aG9yLmVtYWlsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdkYXRlJzogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChjb21t
aXQudGltZXN0YW1wIC0gdGltZWRlbHRhKGhvdXJzPTcpLnNlY29uZHMpLnN0cmZ0aW1lKCclWS0l
bS0lZFQlSDolTTolU1onKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sICdjb21taXR0ZXIn
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBjb21taXQuYXV0aG9yLm5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJzogY29tbWl0LmF1dGhvci5l
bWFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZSc6IGRhdGV0aW1lLnV0Y2Zy
b210aW1lc3RhbXAoY29tbWl0LnRpbWVzdGFtcCAtIHRpbWVkZWx0YShob3Vycz03KS5zZWNvbmRz
KS5zdHJmdGltZSgnJVktJW0tJWRUJUg6JU06JVNaJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICB9LCAnbWVzc2FnZSc6IGNvbW1pdC5tZXNzYWdlICsgKCdcbmdpdC1zdm4taWQ6IGh0dHBzOi8v
c3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0L3t9QHt9IDI2OGY0NWNjLWNkMDktMDQx
MC1hYjNjLWQ1MjY5MWI0ZGJmY1xuJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3RydW5rJyBpZiBjb21taXQuYnJhbmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSBj
b21taXQuYnJhbmNoLCBjb21taXQucmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAp
IGlmIGNvbW1pdC5yZXZpc2lvbiBlbHNlICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd1
cmwnOiAnaHR0cHM6Ly97fS9naXQvY29tbWl0cy97fScuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSwg
Y29tbWl0Lmhhc2gpLAorICAgICAgICAgICAgICAgICAgICB9LCAndXJsJzogJ2h0dHBzOi8ve30v
Y29tbWl0cy97fScuZm9ybWF0KHNlbGYuYXBpX3JlbW90ZSwgY29tbWl0Lmhhc2gpLAorICAgICAg
ICAgICAgICAgICAgICAnaHRtbF91cmwnOiAnaHR0cHM6Ly97fS9jb21taXQve30nLmZvcm1hdChz
ZWxmLnJlbW90ZSwgY29tbWl0Lmhhc2gpLAorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAg
ICBpZiBicmFuY2ggIT0gc2VsZi5kZWZhdWx0X2JyYW5jaDoKKyAgICAgICAgICAgICAgICBmb3Ig
Y29tbWl0IGluIHJldmVyc2VkKHNlbGYuY29tbWl0c1tzZWxmLmRlZmF1bHRfYnJhbmNoXSk6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzLmJyYW5jaF9wb2ludCA9PSBjb21taXQuaWRl
bnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZiA9IGNvbW1pdC5oYXNoCisKKyAg
ICAgICAgcmV0dXJuIG1vY2tzLlJlc3BvbnNlLmZyb21Kc29uKHJlc3BvbnNlLCB1cmw9dXJsKQor
CiAgICAgZGVmIF9jb21taXRfcmVzcG9uc2Uoc2VsZiwgdXJsLCByZWYpOgogICAgICAgICBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCiAKQEAgLTE1Myw5ICsxOTksOSBA
QCBjbGFzcyBHaXRIdWIobW9ja3MuUmVxdWVzdHMpOgogICAgICAgICAgICAgICAgICAgICAnbmFt
ZSc6IGNvbW1pdC5hdXRob3IubmFtZSwKICAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJzogY29t
bWl0LmF1dGhvci5lbWFpbCwKICAgICAgICAgICAgICAgICAgICAgJ2RhdGUnOiBkYXRldGltZS51
dGNmcm9tdGltZXN0YW1wKGNvbW1pdC50aW1lc3RhbXAgLSB0aW1lZGVsdGEoaG91cnM9Nykuc2Vj
b25kcykuc3RyZnRpbWUoJyVZLSVtLSVkVCVIOiVNOiVTWicpLAotICAgICAgICAgICAgICAgIH0s
ICdtZXNzYWdlJzogY29tbWl0Lm1lc3NhZ2UgKyAnXG5naXQtc3ZuLWlkOiBodHRwczovL3N2bi5l
eGFtcGxlLm9yZy9yZXBvc2l0b3J5L3dlYmtpdC97fUB7fSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIz
Yy1kNTI2OTFiNGRiZmNcbicuZm9ybWF0KAorICAgICAgICAgICAgICAgIH0sICdtZXNzYWdlJzog
Y29tbWl0Lm1lc3NhZ2UgKyAoJ1xuZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uZXhhbXBsZS5vcmcv
cmVwb3NpdG9yeS93ZWJraXQve31Ae30gMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRk
YmZjXG4nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgJ3RydW5rJyBpZiBjb21taXQuYnJh
bmNoID09IHNlbGYuZGVmYXVsdF9icmFuY2ggZWxzZSBjb21taXQuYnJhbmNoLCBjb21taXQucmV2
aXNpb24sCi0gICAgICAgICAgICAgICAgKSBpZiBjb21taXQucmV2aXNpb24gZWxzZSAnJywKKyAg
ICAgICAgICAgICAgICApIGlmIGNvbW1pdC5yZXZpc2lvbiBlbHNlICcnKSwKICAgICAgICAgICAg
ICAgICAndXJsJzogJ2h0dHBzOi8ve30vZ2l0L2NvbW1pdHMve30nLmZvcm1hdChzZWxmLmFwaV9y
ZW1vdGUsIGNvbW1pdC5oYXNoKSwKICAgICAgICAgICAgIH0sICd1cmwnOiAnaHR0cHM6Ly97fS9j
b21taXRzL3t9Jy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlLCBjb21taXQuaGFzaCksCiAgICAgICAg
ICAgICAnaHRtbF91cmwnOiAnaHR0cHM6Ly97fS9jb21taXQve30nLmZvcm1hdChzZWxmLnJlbW90
ZSwgY29tbWl0Lmhhc2gpLApAQCAtMjMzLDEwICsyNzksMTEgQEAgY2xhc3MgR2l0SHViKG1vY2tz
LlJlcXVlc3RzKToKICAgICAgICAgICAgICksIHVybD11cmwKICAgICAgICAgKQogCi0gICAgZGVm
IHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGRhdGE9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGRl
ZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBkYXRhPU5vbmUsIHBhcmFtcz1Ob25lLCAqKmt3
YXJncyk6CiAgICAgICAgIGlmIG5vdCB1cmwuc3RhcnRzd2l0aCgnaHR0cDovLycpIGFuZCBub3Qg
dXJsLnN0YXJ0c3dpdGgoJ2h0dHBzOi8vJyk6CiAgICAgICAgICAgICByZXR1cm4gbW9ja3MuUmVz
cG9uc2UuY3JlYXRlNDA0KHVybCkKIAorICAgICAgICBwYXJhbXMgPSBwYXJhbXMgb3Ige30KICAg
ICAgICAgc3RyaXBwZWRfdXJsID0gdXJsLnNwbGl0KCc6Ly8nKVstMV0KIAogICAgICAgICAjIFRv
cC1sZXZlbCBBUEkgcmVxdWVzdApAQCAtMjQ3LDYgKzI5NCwxMCBAQCBjbGFzcyBHaXRIdWIobW9j
a3MuUmVxdWVzdHMpOgogICAgICAgICBpZiBzdHJpcHBlZF91cmwgaW4gWyd7fS9icmFuY2hlcycu
Zm9ybWF0KHNlbGYuYXBpX3JlbW90ZSksICd7fS90YWdzJy5mb3JtYXQoc2VsZi5hcGlfcmVtb3Rl
KV06CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbGlzdF9yZWZzX3Jlc3BvbnNlKHVybD11cmws
IHR5cGU9c3RyaXBwZWRfdXJsLnNwbGl0KCcvJylbLTFdKQogCisgICAgICAgICMgUmV0dXJuIGEg
Y29tbWl0IGFuZCBpdCdzIHBhcmVudHMKKyAgICAgICAgaWYgc3RyaXBwZWRfdXJsID09ICd7fS9j
b21taXRzJy5mb3JtYXQoc2VsZi5hcGlfcmVtb3RlKSBhbmQgcGFyYW1zLmdldCgnc2hhJyk6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0c19yZXNwb25zZSh1cmw9dXJsLCByZWY9cGFy
YW1zWydzaGEnXSkKKwogICAgICAgICAjIEV4dHJhY3Qgc2luZ2xlIGNvbW1pdAogICAgICAgICBp
ZiBzdHJpcHBlZF91cmwuc3RhcnRzd2l0aCgne30vY29tbWl0cy8nLmZvcm1hdChzZWxmLmFwaV9y
ZW1vdGUpKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfcmVzcG9uc2UodXJsPXVy
bCwgcmVmPXN0cmlwcGVkX3VybC5zcGxpdCgnLycpWy0xXSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L21vY2tzL3JlbW90ZS9zdm4ucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvbW9ja3MvcmVtb3RlL3N2bi5weQkocmV2aXNpb24gMjc3MTAxKQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvbW9ja3MvcmVtb3RlL3N2bi5weQko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDMwICsxMDYsMTcgQEAgY2xhc3MgU3ZuKG1vY2tzLlJlcXVl
c3RzKToKIAogICAgICAgICBpZiBjYXRlZ29yeSBhbmQgY2F0ZWdvcnkuc3RhcnRzd2l0aCgnYnJh
bmNoZXMvJyk6CiAgICAgICAgICAgICBjYXRlZ29yeSA9IGNhdGVnb3J5LnNwbGl0KCcvJylbLTFd
CisgICAgICAgIGNhdGVnb3J5ID0gW2NhdGVnb3J5XSBpZiBjYXRlZ29yeSBlbHNlIHNlbGYuYnJh
bmNoZXMoc3RhcnQpICsgc2VsZi50YWdzKHN0YXJ0KQogCi0gICAgICAgIGlmIG5vdCBjYXRlZ29y
eToKLSAgICAgICAgICAgIGZvciBjb21taXRzIGluIHNlbGYuY29tbWl0cy52YWx1ZXMoKToKLSAg
ICAgICAgICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6Ci0gICAgICAgICAgICAgICAgICAg
IGlmIGNvbW1pdC5yZXZpc2lvbiA9PSBzdGFydDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
dGVnb3J5ID0gY29tbWl0LmJyYW5jaAotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQot
ICAgICAgICBpZiBub3QgY2F0ZWdvcnk6Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAg
ICByZXN1bHQgPSBbY29tbWl0IGZvciBjb21taXQgaW4gcmV2ZXJzZWQoc2VsZi5jb21taXRzW2Nh
dGVnb3J5XSldCi0gICAgICAgIGlmIHNlbGYuY29tbWl0c1tjYXRlZ29yeV1bMF0uYnJhbmNoX3Bv
aW50OgotICAgICAgICAgICAgcmVzdWx0ICs9IFtjb21taXQgZm9yIGNvbW1pdCBpbiByZXZlcnNl
ZChzZWxmLmNvbW1pdHNbJ3RydW5rJ11bOnNlbGYuY29tbWl0c1tjYXRlZ29yeV1bMF0uYnJhbmNo
X3BvaW50XSldCi0KLSAgICAgICAgZm9yIGluZGV4IGluIHJldmVyc2VkKHJhbmdlKGxlbihyZXN1
bHQpKSk6Ci0gICAgICAgICAgICBpZiByZXN1bHRbaW5kZXhdLnJldmlzaW9uIDwgZW5kOgotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6aW5kZXhdCi0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIGlmIHJlc3VsdFtpbmRleF0ucmV2aXNpb24gPiBzdGFydDoKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbaW5kZXg6XQotICAgICAgICAgICAgICAgIGJy
ZWFrCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBwcmV2aW91cyA9IE5vbmUKKyAg
ICAgICAgZm9yIGIgaW4gY2F0ZWdvcnkgKyBbJ3RydW5rJ106CisgICAgICAgICAgICBmb3IgY2Fu
ZGlkYXRlIGluIHJldmVyc2VkKHNlbGYuY29tbWl0cy5nZXQoYiwgW10pKToKKyAgICAgICAgICAg
ICAgICBpZiBjYW5kaWRhdGUucmV2aXNpb24gPiBzdGFydCBvciBjYW5kaWRhdGUucmV2aXNpb24g
PCBlbmQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYg
cHJldmlvdXMgYW5kIHByZXZpb3VzLnJldmlzaW9uIDw9IGNhbmRpZGF0ZS5yZXZpc2lvbjoKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNh
bmRpZGF0ZQorICAgICAgICAgICAgICAgIHlpZWxkIGNhbmRpZGF0ZQogCiAgICAgZGVmIHJlcXVl
c3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGRhdGE9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCkBAIC0yNjYsMTEgKzI1MywxMSBA
QCBjbGFzcyBTdm4obW9ja3MuUmVxdWVzdHMpOgogCiAgICAgICAgICMgTG9nIGZvciBjb21taXQK
ICAgICAgICAgaWYgbWV0aG9kID09ICdSRVBPUlQnIGFuZCBzdHJpcHBlZF91cmwuc3RhcnRzd2l0
aCgne30hJy5mb3JtYXQoc2VsZi5yZW1vdGUpKSBhbmQgbWF0Y2ggYW5kIGRhdGEuZ2V0KCdTOmxv
Zy1yZXBvcnQnKToKLSAgICAgICAgICAgIGNvbW1pdHMgPSBzZWxmLnJhbmdlKAorICAgICAgICAg
ICAgY29tbWl0cyA9IGxpc3Qoc2VsZi5yYW5nZSgKICAgICAgICAgICAgICAgICBjYXRlZ29yeT1t
YXRjaC5ncm91cCgnY2F0ZWdvcnknKSwKICAgICAgICAgICAgICAgICBzdGFydD1pbnQoZGF0YVsn
Uzpsb2ctcmVwb3J0J11bJ1M6c3RhcnQtcmV2aXNpb24nXSksCiAgICAgICAgICAgICAgICAgZW5k
PWludChkYXRhWydTOmxvZy1yZXBvcnQnXVsnUzplbmQtcmV2aXNpb24nXSksCi0gICAgICAgICAg
ICApCisgICAgICAgICAgICApKQogCiAgICAgICAgICAgICBsaW1pdCA9IGludChkYXRhWydTOmxv
Zy1yZXBvcnQnXS5nZXQoJ1M6bGltaXQnLCAwKSkKICAgICAgICAgICAgIGlmIGxpbWl0IGFuZCBs
ZW4oY29tbWl0cykgPiBsaW1pdDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9naXRfaHViLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9naXRfaHVi
LnB5CShyZXZpc2lvbiAyNzcxMDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRz
Y21weS93ZWJraXRzY21weS9yZW1vdGUvZ2l0X2h1Yi5weQkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCBjbGFzcyBHaXRIdWIoU2NtKToKICAgICBkZWYgaXNfZ2l0KHNlbGYpOgogICAg
ICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgcGF0aD1Ob25lLCBwYXJh
bXM9Tm9uZSwgaGVhZGVycz1Ob25lLCBhdXRoZW50aWNhdGVkPU5vbmUpOgorICAgIGRlZiByZXF1
ZXN0KHNlbGYsIHBhdGg9Tm9uZSwgcGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSwgYXV0aGVudGlj
YXRlZD1Ob25lLCBwYWdpbmF0ZT1UcnVlKToKICAgICAgICAgaGVhZGVycyA9IHtrZXk6IHZhbHVl
IGZvciBrZXksIHZhbHVlIGluIGhlYWRlcnMuaXRlbXMoKX0gaWYgaGVhZGVycyBlbHNlIGRpY3Qo
KQogICAgICAgICBoZWFkZXJzWydBY2NlcHQnXSA9IGhlYWRlcnMuZ2V0KCdBY2NlcHQnLCAnYXBw
bGljYXRpb24vdm5kLmdpdGh1Yi52Mytqc29uJykKIApAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNz
IEdpdEh1YihTY20pOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcmVzdWx0ID0g
cmVzcG9uc2UuanNvbigpCiAKLSAgICAgICAgd2hpbGUgaXNpbnN0YW5jZShyZXNwb25zZS5qc29u
KCksIGxpc3QpIGFuZCBsZW4ocmVzcG9uc2UuanNvbigpKSA9PSBwYXJhbXNbJ3Blcl9wYWdlJ106
CisgICAgICAgIHdoaWxlIHBhZ2luYXRlIGFuZCBpc2luc3RhbmNlKHJlc3BvbnNlLmpzb24oKSwg
bGlzdCkgYW5kIGxlbihyZXNwb25zZS5qc29uKCkpID09IHBhcmFtc1sncGVyX3BhZ2UnXToKICAg
ICAgICAgICAgIHBhcmFtc1sncGFnZSddICs9IDEKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVx
dWVzdHMuZ2V0KHVybCwgcGFyYW1zPXBhcmFtcywgaGVhZGVycz1oZWFkZXJzLCBhdXRoPWF1dGgp
CiAgICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6CkBAIC0yODcsMTYg
KzI4NywyMiBAQCBjbGFzcyBHaXRIdWIoU2NtKToKICAgICAgICAgIyBpdCdzIHBvc3NpYmxlIGZv
ciBhIHNlcmllcyBvZiBjb21taXRzIHRvIHNoYXJlIGEgY29tbWl0IHRpbWUuIFRvIGhhbmRsZSB0
aGlzIGNhc2UsIHdlIGFzc2lnbiBlYWNoIGNvbW1pdCBhCiAgICAgICAgICMgemVyby1pbmRleGVk
ICJvcmRlciIgd2l0aGluIGl0J3MgdGltZXN0YW1wLgogICAgICAgICBvcmRlciA9IDAKLSAgICAg
ICAgd2hpbGUgbm90IGlkZW50aWZpZXIgb3Igb3JkZXIgKyAxIDwgaWRlbnRpZmllciArIChicmFu
Y2hfcG9pbnQgb3IgMCk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnY29t
bWl0cy97fScuZm9ybWF0KCd7fX57fScuZm9ybWF0KGNvbW1pdF9kYXRhWydzaGEnXSwgb3JkZXIg
KyAxKSkpCi0gICAgICAgICAgICBpZiBub3QgcmVzcG9uc2U6Ci0gICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIHBhcmVudF90aW1lc3RhbXAgPSBpbnQoY2FsZW5kYXIudGltZWdtKGRh
dGV0aW1lLnN0cnB0aW1lKAotICAgICAgICAgICAgICAgIHJlc3BvbnNlWydjb21taXQnXVsnY29t
bWl0dGVyJ11bJ2RhdGUnXSwgJyVZLSVtLSVkVCVIOiVNOiVTWicsCi0gICAgICAgICAgICApLnRp
bWV0dXBsZSgpKSkKLSAgICAgICAgICAgIGlmIHBhcmVudF90aW1lc3RhbXAgIT0gdGltZXN0YW1w
OgorICAgICAgICBsaGFzaCA9IGNvbW1pdF9kYXRhWydzaGEnXQorICAgICAgICB3aGlsZSBsaGFz
aDoKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCdjb21taXRzJywgcGFnaW5h
dGU9RmFsc2UsIHBhcmFtcz1kaWN0KHNoYT1saGFzaCwgcGVyX3BhZ2U9MjApKQorICAgICAgICAg
ICAgaWYgbGVuKHJlc3BvbnNlKSA8PSAxOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
ICAgICBvcmRlciArPSAxCisgICAgICAgICAgICBmb3IgYyBpbiByZXNwb25zZToKKyAgICAgICAg
ICAgICAgICBpZiBsaGFzaCA9PSBjWydzaGEnXToKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgICAgICBwYXJlbnRfdGltZXN0YW1wID0gaW50KGNhbGVuZGFyLnRpbWVn
bShkYXRldGltZS5zdHJwdGltZSgKKyAgICAgICAgICAgICAgICAgICAgY1snY29tbWl0J11bJ2Nv
bW1pdHRlciddWydkYXRlJ10sICclWS0lbS0lZFQlSDolTTolU1onLAorICAgICAgICAgICAgICAg
ICkudGltZXR1cGxlKCkpKQorICAgICAgICAgICAgICAgIGlmIHBhcmVudF90aW1lc3RhbXAgIT0g
dGltZXN0YW1wOgorICAgICAgICAgICAgICAgICAgICBsaGFzaCA9IE5vbmUKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBsaGFzaCA9IGNbJ3NoYSddCisgICAgICAg
ICAgICAgICAgb3JkZXIgKz0gMQogCiAgICAgICAgIHJldHVybiBDb21taXQoCiAgICAgICAgICAg
ICByZXBvc2l0b3J5X2lkPXNlbGYuaWQsCkBAIC0zMTMsNiArMzE5LDY3IEBAIGNsYXNzIEdpdEh1
YihTY20pOgogICAgICAgICAgICAgKSwgbWVzc2FnZT1jb21taXRfZGF0YVsnY29tbWl0J11bJ21l
c3NhZ2UnXSBpZiBpbmNsdWRlX2xvZyBlbHNlIE5vbmUsCiAgICAgICAgICkKIAorICAgIGRlZiBj
b21taXRzKHNlbGYsIGJlZ2luPU5vbmUsIGVuZD1Ob25lLCBpbmNsdWRlX2xvZz1UcnVlLCBpbmNs
dWRlX2lkZW50aWZpZXI9VHJ1ZSk6CisgICAgICAgIGJlZ2luLCBlbmQgPSBzZWxmLl9jb21taXRf
cmFuZ2UoYmVnaW49YmVnaW4sIGVuZD1lbmQsIGluY2x1ZGVfaWRlbnRpZmllcj1pbmNsdWRlX2lk
ZW50aWZpZXIpCisKKyAgICAgICAgcHJldmlvdXMgPSBlbmQKKyAgICAgICAgY2FjaGVkID0gW3By
ZXZpb3VzXQorICAgICAgICB3aGlsZSBwcmV2aW91czoKKyAgICAgICAgICAgIHJlc3BvbnNlID0g
c2VsZi5yZXF1ZXN0KCdjb21taXRzJywgcGFnaW5hdGU9RmFsc2UsIHBhcmFtcz1kaWN0KHNoYT1w
cmV2aW91cy5oYXNoKSkKKyAgICAgICAgICAgIGlmIG5vdCByZXNwb25zZToKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZm9yIGNvbW1pdF9kYXRhIGluIHJlc3BvbnNlOgorICAg
ICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IHByZXZpb3VzLmJyYW5jaF9wb2ludAorICAgICAg
ICAgICAgICAgIGlkZW50aWZpZXIgPSBwcmV2aW91cy5pZGVudGlmaWVyCisgICAgICAgICAgICAg
ICAgaWYgY29tbWl0X2RhdGFbJ3NoYSddID09IHByZXZpb3VzLmhhc2g6CisgICAgICAgICAgICAg
ICAgICAgIGNhY2hlZCA9IGNhY2hlZFs6LTFdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllciAtPSAxCisKKyAgICAgICAgICAgICAgICBpZiBub3Qg
aWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGJyYW5jaF9wb2lu
dAorICAgICAgICAgICAgICAgICAgICBicmFuY2hfcG9pbnQgPSBOb25lCisKKyAgICAgICAgICAg
ICAgICBtYXRjaGVzID0gc2VsZi5HSVRfU1ZOX1JFVklTSU9OLmZpbmRhbGwoY29tbWl0X2RhdGFb
J2NvbW1pdCddWydtZXNzYWdlJ10pCisgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQobWF0
Y2hlc1stMV0uc3BsaXQoJ0AnKVswXSkgaWYgbWF0Y2hlcyBlbHNlIE5vbmUKKworICAgICAgICAg
ICAgICAgIGVtYWlsX21hdGNoID0gc2VsZi5FTUFJTF9SRS5tYXRjaChjb21taXRfZGF0YVsnY29t
bWl0J11bJ2F1dGhvciddWydlbWFpbCddKQorICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGlu
dChjYWxlbmRhci50aW1lZ20oZGF0ZXRpbWUuc3RycHRpbWUoCisgICAgICAgICAgICAgICAgICAg
IGNvbW1pdF9kYXRhWydjb21taXQnXVsnY29tbWl0dGVyJ11bJ2RhdGUnXSwgJyVZLSVtLSVkVCVI
OiVNOiVTWicsCisgICAgICAgICAgICAgICAgKS50aW1ldHVwbGUoKSkpCisKKyAgICAgICAgICAg
ICAgICBwcmV2aW91cyA9IENvbW1pdCgKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9p
ZD1zZWxmLmlkLAorICAgICAgICAgICAgICAgICAgICBoYXNoPWNvbW1pdF9kYXRhWydzaGEnXSwK
KyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb249cmV2aXNpb24sCisgICAgICAgICAgICAgICAg
ICAgIGJyYW5jaD1lbmQuYnJhbmNoIGlmIGlkZW50aWZpZXIgYW5kIGJyYW5jaF9wb2ludCBlbHNl
IHNlbGYuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI9aWRl
bnRpZmllciBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lLAorICAgICAgICAgICAgICAg
ICAgICBicmFuY2hfcG9pbnQ9YnJhbmNoX3BvaW50IGlmIGluY2x1ZGVfaWRlbnRpZmllciBlbHNl
IE5vbmUsCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcD10aW1lc3RhbXAsCisgICAgICAg
ICAgICAgICAgICAgIGF1dGhvcj1zZWxmLmNvbnRyaWJ1dG9ycy5jcmVhdGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb21taXRfZGF0YVsnY29tbWl0J11bJ2F1dGhvciddWyduYW1lJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICBlbWFpbF9tYXRjaC5ncm91cCgnZW1haWwnKSBpZiBlbWFp
bF9tYXRjaCBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICksIG9yZGVyPTAsCisgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2U9Y29tbWl0X2RhdGFbJ2NvbW1pdCddWydtZXNzYWdlJ10g
aWYgaW5jbHVkZV9sb2cgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICBpZiBub3QgY2FjaGVkIG9yIGNhY2hlZFswXS50aW1lc3RhbXAgIT0gcHJldmlvdXMudGlt
ZXN0YW1wOgorICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBjYWNoZWQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICB5aWVsZCBjCisgICAgICAgICAgICAgICAgICAgIGNhY2hlZCA9IFtwcmV2
aW91c10KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmb3IgYyBp
biBjYWNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBjLm9yZGVyICs9IDEKKyAgICAgICAg
ICAgICAgICAgICAgY2FjaGVkLmFwcGVuZChwcmV2aW91cykKKworICAgICAgICAgICAgICAgIGlm
IHByZXZpb3VzLmhhc2ggPT0gYmVnaW4uaGFzaCBvciBwcmV2aW91cy50aW1lc3RhbXAgPCBiZWdp
bi50aW1lc3RhbXA6CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gTm9uZQorICAgICAg
ICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGZvciBjIGluIGNhY2hlZDoKKyAgICAgICAg
ICAgIGMub3JkZXIgKz0gYmVnaW4ub3JkZXIKKyAgICAgICAgICAgIHlpZWxkIGMKKworCiAgICAg
ZGVmIGZpbmQoc2VsZiwgYXJndW1lbnQsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRlbnRp
Zmllcj1UcnVlKToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJndW1lbnQsIHNpeC5zdHJp
bmdfdHlwZXMpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwZWN0ZWQgJ2FyZ3Vt
ZW50JyB0byBiZSBhIHN0cmluZywgbm90ICd7fSciLmZvcm1hdCh0eXBlKGFyZ3VtZW50KSkpCklu
ZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21weS9yZW1v
dGUvc3ZuLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNj
bXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHkJKHJldmlzaW9uIDI3NzEwMSkKKysrIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3JlbW90ZS9zdm4ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxNCBAQCBpbXBvcnQgeG1sdG9kaWN0CiAKIGZy
b20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiAKLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBs
b2csIHJ1biwgZGVjb3JhdG9ycworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IGRlY29yYXRvcnMs
IHN0cmluZ191dGlscwogZnJvbSB3ZWJraXRzY21weS5yZW1vdGUuc2NtIGltcG9ydCBTY20KLWZy
b20gd2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgQ29udHJpYnV0b3IsIFZlcnNpb24KK2Zyb20g
d2Via2l0c2NtcHkgaW1wb3J0IENvbW1pdCwgVmVyc2lvbgogCiAKIGNsYXNzIFN2bihTY20pOgog
ICAgIFVSTF9SRSA9IHJlLmNvbXBpbGUocidcQWh0dHBzPzovL3N2bi4oP1A8aG9zdD5cUyspL3Jl
cG9zaXRvcnkvXFMrXFonKQotICAgIEhJU1RPUllfUkUgPSByZS5jb21waWxlKGInPEQ6dmVyc2lv
bi1uYW1lPig/UDxyZXZpc2lvbj5cZCspPC9EOnZlcnNpb24tbmFtZT4nKQorICAgIERBVEFfUkUg
PSByZS5jb21waWxlKGInPFtTRF06KD9QPHRhZz5cUyspPig/UDxjb250ZW50Pi4qKTwvW1NEXTou
Kz4nKQogICAgIENBQ0hFX1ZFUlNJT04gPSBWZXJzaW9uKDEpCiAKICAgICBAY2xhc3NtZXRob2QK
QEAgLTI0NCw4ICsyNDQsOCBAQCBjbGFzcyBTdm4oU2NtKToKIAogICAgICAgICAgICAgZGVmYXVs
dF9jb3VudCA9IDAKICAgICAgICAgICAgIGZvciBsaW5lIGluIHJlc3BvbnNlLml0ZXJfbGluZXMo
KToKLSAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuSElTVE9SWV9SRS5tYXRjaChsaW5lKQot
ICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHNl
bGYuREFUQV9SRS5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaCBvciBt
YXRjaC5ncm91cCgndGFnJykgIT0gYid2ZXJzaW9uLW5hbWUnOgogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgaWYgbm90IGRpZF93YXJuOgpAQCAtMjU0LDcg
KzI1NCw3IEBAIGNsYXNzIFN2bihTY20pOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5s
b2coJ0NhY2hpbmcgY29tbWl0IGRhdGEgZm9yIHt9LCB0aGlzIHdpbGwgdGFrZSBhIGZldyBtaW51
dGVzLi4uJy5mb3JtYXQoYnJhbmNoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRpZF93YXJu
ID0gVHJ1ZQogCi0gICAgICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQobWF0Y2guZ3JvdXAoJ3Jl
dmlzaW9uJykpCisgICAgICAgICAgICAgICAgcmV2aXNpb24gPSBpbnQobWF0Y2guZ3JvdXAoJ2Nv
bnRlbnQnKSkKICAgICAgICAgICAgICAgICBpZiBwb3MgPiAwIGFuZCBzZWxmLl9tZXRhZGF0YV9j
YWNoZVticmFuY2hdW3BvcyAtIDFdID09IHJldmlzaW9uOgogICAgICAgICAgICAgICAgICAgICBi
cmVhawogICAgICAgICAgICAgICAgIGlmIG5vdCBpc19kZWZhdWx0X2JyYW5jaDoKQEAgLTQ1NSwz
ICs0NTUsNjcgQEAgY2xhc3MgU3ZuKFNjbSk6CiAgICAgICAgICAgICBhdXRob3I9YXV0aG9yLAog
ICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlLAogICAgICAgICApCisKKyAgICBkZWYgX2FyZ3Nf
ZnJvbV9jb250ZW50KHNlbGYsIGNvbnRlbnQsIGluY2x1ZGVfbG9nPVRydWUpOgorICAgICAgICB4
bWwgPSB4bWx0b2RpY3QucGFyc2UoY29udGVudCkKKyAgICAgICAgZGF0ZSA9IGRhdGV0aW1lLnN0
cnB0aW1lKHN0cmluZ191dGlscy5kZWNvZGUoeG1sWydTOmxvZy1pdGVtJ11bJ1M6ZGF0ZSddKS5z
cGxpdCgnLicpWzBdLCAnJVktJW0tJWRUJUg6JU06JVMnKQorICAgICAgICBuYW1lID0gc3RyaW5n
X3V0aWxzLmRlY29kZSh4bWxbJ1M6bG9nLWl0ZW0nXVsnRDpjcmVhdG9yLWRpc3BsYXluYW1lJ10p
CisKKyAgICAgICAgcmV0dXJuIGRpY3QoCisgICAgICAgICAgICByZXZpc2lvbj1pbnQoeG1sWydT
OmxvZy1pdGVtJ11bJ0Q6dmVyc2lvbi1uYW1lJ10pLAorICAgICAgICAgICAgYXV0aG9yPXNlbGYu
Y29udHJpYnV0b3JzLmNyZWF0ZShuYW1lLCBuYW1lKSBpZiBuYW1lIGFuZCAnQCcgaW4gbmFtZSBl
bHNlIHNlbGYuY29udHJpYnV0b3JzLmNyZWF0ZShuYW1lKSwKKyAgICAgICAgICAgIHRpbWVzdGFt
cD1pbnQoY2FsZW5kYXIudGltZWdtKGRhdGUudGltZXR1cGxlKCkpKSwKKyAgICAgICAgICAgIG1l
c3NhZ2U9c3RyaW5nX3V0aWxzLmRlY29kZSh4bWxbJ1M6bG9nLWl0ZW0nXVsnRDpjb21tZW50J10p
IGlmIGluY2x1ZGVfbG9nIGVsc2UgTm9uZSwKKyAgICAgICAgKQorCisgICAgZGVmIGNvbW1pdHMo
c2VsZiwgYmVnaW49Tm9uZSwgZW5kPU5vbmUsIGluY2x1ZGVfbG9nPVRydWUsIGluY2x1ZGVfaWRl
bnRpZmllcj1UcnVlKToKKyAgICAgICAgYmVnaW4sIGVuZCA9IHNlbGYuX2NvbW1pdF9yYW5nZShi
ZWdpbj1iZWdpbiwgZW5kPWVuZCwgaW5jbHVkZV9pZGVudGlmaWVyPWluY2x1ZGVfaWRlbnRpZmll
cikKKyAgICAgICAgcHJldmlvdXMgPSBlbmQKKworICAgICAgICBjb250ZW50ID0gYicnCisgICAg
ICAgIHdpdGggcmVxdWVzdHMucmVxdWVzdCgKKyAgICAgICAgICAgICAgICBtZXRob2Q9J1JFUE9S
VCcsCisgICAgICAgICAgICAgICAgdXJsPSd7fSFzdm4vcnZyL3t9L3t9Jy5mb3JtYXQoCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYudXJsLAorICAgICAgICAgICAgICAgICAgICBlbmQucmV2aXNp
b24sCisgICAgICAgICAgICAgICAgICAgIGVuZC5icmFuY2ggaWYgZW5kLmJyYW5jaCA9PSBzZWxm
LmRlZmF1bHRfYnJhbmNoIG9yICcvJyBpbiBlbmQuYnJhbmNoIGVsc2UgJ2JyYW5jaGVzL3t9Jy5m
b3JtYXQoZW5kLmJyYW5jaCksCisgICAgICAgICAgICAgICAgKSwgc3RyZWFtPVRydWUsCisgICAg
ICAgICAgICAgICAgaGVhZGVycz17CisgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUn
OiAndGV4dC94bWwnLAorICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6
aXAnLAorICAgICAgICAgICAgICAgICAgICAnREVQVEgnOiAnMScsCisgICAgICAgICAgICAgICAg
fSwgZGF0YT0nPFM6bG9nLXJlcG9ydCB4bWxuczpTPSJzdm46Ij5cbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICc8UzpzdGFydC1yZXZpc2lvbj57ZW5kfTwvUzpzdGFydC1yZXZpc2lvbj5cbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICc8UzplbmQtcmV2aXNpb24+e2JlZ2lufTwvUzplbmQt
cmV2aXNpb24+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnPFM6cGF0aD48L1M6cGF0aD5c
bicKKyAgICAgICAgICAgICAgICAgICAgICAgICc8L1M6bG9nLXJlcG9ydD5cbicuZm9ybWF0KGVu
ZD1lbmQucmV2aXNpb24sIGJlZ2luPWJlZ2luLnJldmlzaW9uKSwKKyAgICAgICAgKSBhcyByZXNw
b25zZToKKyAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKKyAgICAg
ICAgICAgICAgICByYWlzZSBzZWxmLkV4Y2VwdGlvbigiRmFpbGVkIHRvIGNvbnN0cnVjdCBicmFu
Y2ggaGlzdG9yeSBmb3IgJ3t9JyIuZm9ybWF0KGJyYW5jaCkpCisgICAgICAgICAgICBmb3IgbGlu
ZSBpbiByZXNwb25zZS5pdGVyX2xpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBi
JzxTOmxvZy1pdGVtPic6CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBsaW5lICsgYidc
bicKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjb250ZW50ICs9
IGxpbmUgKyBiJ1xuJworICAgICAgICAgICAgICAgIGlmIGxpbmUgIT0gYic8L1M6bG9nLWl0ZW0+
JzoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGFyZ3Mg
PSBzZWxmLl9hcmdzX2Zyb21fY29udGVudChjb250ZW50LCBpbmNsdWRlX2xvZz1pbmNsdWRlX2xv
ZykKKworICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IHByZXZpb3VzLmJyYW5jaF9wb2lu
dCBpZiBpbmNsdWRlX2lkZW50aWZpZXIgZWxzZSBOb25lCisgICAgICAgICAgICAgICAgaWRlbnRp
ZmllciA9IHByZXZpb3VzLmlkZW50aWZpZXIgaWYgaW5jbHVkZV9pZGVudGlmaWVyIGVsc2UgTm9u
ZQorICAgICAgICAgICAgICAgIGlmIGFyZ3NbJ3JldmlzaW9uJ10gIT0gcHJldmlvdXMucmV2aXNp
b246CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgLT0gMQorICAgICAgICAgICAgICAg
IGlmIG5vdCBpZGVudGlmaWVyOgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gYnJh
bmNoX3BvaW50CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaF9wb2ludCA9IE5vbmUKKworICAg
ICAgICAgICAgICAgIHByZXZpb3VzID0gQ29tbWl0KAorICAgICAgICAgICAgICAgICAgICByZXBv
c2l0b3J5X2lkPXNlbGYuaWQsCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaD1lbmQuYnJhbmNo
IGlmIGJyYW5jaF9wb2ludCBlbHNlIHNlbGYuZGVmYXVsdF9icmFuY2gsCisgICAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXI9aWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgYnJhbmNo
X3BvaW50PWJyYW5jaF9wb2ludCwKKyAgICAgICAgICAgICAgICAgICAgKiphcmdzCisgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgIHlpZWxkIHByZXZpb3VzCisgICAgICAgICAgICAg
ICAgY29udGVudCA9IGInJwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2Nt
cHkvd2Via2l0c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZmluZF91bml0
dGVzdC5weQkocmV2aXNpb24gMjc3MTAxKQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9maW5kX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMzEsNyArMjMxLDcgQEAgQXV0aG9yOiBqYmVkYXJkQGFwcGxlLmNvbSA8amJlZGFyZEBh
cHBsZQogRGF0ZToge30KIFJldmlzaW9uOiA0CiBJZGVudGlmaWVyOiAzQHRydW5rCi0nJycuZm9y
bWF0KGRhdGV0aW1lLmZyb210aW1lc3RhbXAoMTYwMTY4NjcwMCkuc3RyZnRpbWUoJyVhICViICVk
ICVIOiVNOiVTICVZJykpLAorJycnLmZvcm1hdChkYXRldGltZS5mcm9tdGltZXN0YW1wKDE2MDE2
ODQ3MDApLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWScpKSwKICAgICAgICAgKQogCiAK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rl
c3QvZ2l0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Rlc3QvZ2l0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NzcxMDEpCisrKyBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRzY21w
eS90ZXN0L2dpdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBp
bXBvcnQgdW5pdHRlc3QKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgTG9nZ2VyQ2FwdHVyZSwgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRj
b3JlcHkubW9ja3MgaW1wb3J0IFRpbWUgYXMgTW9ja1RpbWUKLWZyb20gd2Via2l0c2NtcHkgaW1w
b3J0IGxvY2FsLCBtb2NrcywgcmVtb3RlCitmcm9tIHdlYmtpdHNjbXB5IGltcG9ydCBDb21taXQs
IGxvY2FsLCBtb2NrcywgcmVtb3RlCiAKIAogY2xhc3MgVGVzdEdpdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CkBAIC0yODMsNiArMjgzLDI4IEBAIGNsYXNzIFRlc3RHaXQodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbG9jYWwuR2l0KHNlbGYucGF0
aCkuY29tbWl0KGhhc2g9J2JhZTVkMWU5MDk5OScpLm9yZGVyKQogICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbG9jYWwuR2l0KHNlbGYucGF0aCkuY29tbWl0KGhhc2g9J2Q4YmNl
MjZmYTY1YycpLm9yZGVyKQogCisgICAgZGVmIHRlc3RfY29tbWl0cyhzZWxmKToKKyAgICAgICAg
Zm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nrcy5sb2NhbC5HaXQo
c2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGggbW9jazoKKyAgICAg
ICAgICAgICAgICBnaXQgPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KFsKKyAgICAgICAgICAgICAg
ICAgICAgZ2l0LmNvbW1pdChoYXNoPSdiYWU1ZDFlOScpLAorICAgICAgICAgICAgICAgICAgICBn
aXQuY29tbWl0KGhhc2g9JzFhYmUyNWI0JyksCisgICAgICAgICAgICAgICAgICAgIGdpdC5jb21t
aXQoaGFzaD0nZmZmODNiYjInKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNo
PSc5YjgzMTFmMicpLAorICAgICAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1
bHQobGlzdChnaXQuY29tbWl0cyhiZWdpbj1kaWN0KGhhc2g9JzliODMxMWYyJyksIGVuZD1kaWN0
KGhhc2g9J2JhZTVkMWU5JykpKSkpCisKKyAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5jaChzZWxm
KToKKyAgICAgICAgZm9yIG1vY2sgaW4gW21vY2tzLmxvY2FsLkdpdChzZWxmLnBhdGgpLCBtb2Nr
cy5sb2NhbC5HaXQoc2VsZi5wYXRoLCBnaXRfc3ZuPVRydWUpXToKKyAgICAgICAgICAgIHdpdGgg
bW9jazoKKyAgICAgICAgICAgICAgICBnaXQgPSBsb2NhbC5HaXQoc2VsZi5wYXRoKQorICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KFsKKyAg
ICAgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSc2MjE2NTJhZCcpLAorICAgICAgICAg
ICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2EzMGNlODQ5JyksCisgICAgICAgICAgICAgICAg
ICAgIGdpdC5jb21taXQoaGFzaD0nZmZmODNiYjInKSwKKyAgICAgICAgICAgICAgICAgICAgZ2l0
LmNvbW1pdChoYXNoPSc5YjgzMTFmMicpLAorICAgICAgICAgICAgICAgIF0pLCBDb21taXQuRW5j
b2RlcigpLmRlZmF1bHQobGlzdChnaXQuY29tbWl0cyhiZWdpbj1kaWN0KGFyZ3VtZW50PSc5Yjgz
MTFmMicpLCBlbmQ9ZGljdChhcmd1bWVudD0nNjIxNjUyYWQnKSkpKSkKKwogCiBjbGFzcyBUZXN0
R2l0SHViKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICByZW1vdGUgPSAnaHR0cHM6Ly9naXRodWIu
ZXhhbXBsZS5jb20vV2ViS2l0L1dlYktpdCcKQEAgLTQxNSw2ICs0MzcsMjcgQEAgY2xhc3MgVGVz
dEdpdEh1Yih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfaWQoc2VsZik6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVtb3RlLkdpdEh1YihzZWxmLnJlbW90ZSkuaWQsICd3ZWJr
aXQnKQogCisgICAgZGVmIHRlc3RfY29tbWl0cyhzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5y
ZW1vdGUuR2l0SHViKCk6CisgICAgICAgICAgICBnaXQgPSByZW1vdGUuR2l0SHViKHNlbGYucmVt
b3RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1
bHQoWworICAgICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nYmFlNWQxZTknKSwKKyAgICAg
ICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9JzFhYmUyNWI0JyksCisgICAgICAgICAgICAgICAg
Z2l0LmNvbW1pdChoYXNoPSdmZmY4M2JiMicpLAorICAgICAgICAgICAgICAgIGdpdC5jb21taXQo
aGFzaD0nOWI4MzExZjInKSwKKyAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2RlcigpLmRlZmF1
bHQobGlzdChnaXQuY29tbWl0cyhiZWdpbj1kaWN0KGhhc2g9JzliODMxMWYyJyksIGVuZD1kaWN0
KGhhc2g9J2JhZTVkMWU5JykpKSkpCisKKyAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5jaChzZWxm
KToKKyAgICAgICAgd2l0aCBtb2Nrcy5yZW1vdGUuR2l0SHViKCk6CisgICAgICAgICAgICBnaXQg
PSByZW1vdGUuR2l0SHViKHNlbGYucmVtb3RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWworICAgICAgICAgICAgICAgIGdpdC5jb21taXQo
aGFzaD0nNjIxNjUyYWQnKSwKKyAgICAgICAgICAgICAgICBnaXQuY29tbWl0KGhhc2g9J2EzMGNl
ODQ5JyksCisgICAgICAgICAgICAgICAgZ2l0LmNvbW1pdChoYXNoPSdmZmY4M2JiMicpLAorICAg
ICAgICAgICAgICAgIGdpdC5jb21taXQoaGFzaD0nOWI4MzExZjInKSwKKyAgICAgICAgICAgIF0p
LCBDb21taXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChnaXQuY29tbWl0cyhiZWdpbj1kaWN0KGFy
Z3VtZW50PSc5YjgzMTFmMicpLCBlbmQ9ZGljdChhcmd1bWVudD0nNjIxNjUyYWQnKSkpKSkKKwor
CiAKIGNsYXNzIFRlc3RCaXRCdWNrZXQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJlbW90ZSA9
ICdodHRwczovL2JpdGJ1Y2tldC5leGFtcGxlLmNvbS9wcm9qZWN0cy9XRUJLSVQvcmVwb3Mvd2Vi
a2l0JwpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2Nt
cHkvdGVzdC9zdm5fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0c2NtcHkvd2Via2l0c2NtcHkvdGVzdC9zdm5fdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI3NzEwMSkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtp
dHNjbXB5L3Rlc3Qvc3ZuX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGlt
ZWRlbHRhCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJr
aXRzY21weSBpbXBvcnQgbG9jYWwsIG1vY2tzLCByZW1vdGUKK2Zyb20gd2Via2l0c2NtcHkgaW1w
b3J0IENvbW1pdCwgbG9jYWwsIG1vY2tzLCByZW1vdGUKIAogCiBjbGFzcyBUZXN0TG9jYWxTdm4o
dW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjMxLDYgKzIzMSwyNiBAQCBjbGFzcyBUZXN0TG9jYWxT
dm4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxm
LnBhdGgpLCBPdXRwdXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShs
b2NhbC5Tdm4oc2VsZi5wYXRoKS5maW5kKCd0cnVuaycsIGluY2x1ZGVfaWRlbnRpZmllcj1GYWxz
ZSkuaWRlbnRpZmllcikKIAorICAgIGRlZiB0ZXN0X2NvbW1pdHMoc2VsZik6CisgICAgICAgIHdp
dGggbW9ja3MubG9jYWwuU3ZuKHNlbGYucGF0aCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAg
ICAgIHN2biA9IGxvY2FsLlN2bihzZWxmLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKENvbW1pdC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1p
dChyZXZpc2lvbj0ncjYnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdy
NCcpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IyJyksCisgICAgICAg
ICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAgICAgICAgIF0pLCBDb21t
aXQuRW5jb2RlcigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdpbj1kaWN0KHJldmlzaW9u
PSdyMScpLCBlbmQ9ZGljdChyZXZpc2lvbj0ncjYnKSkpKSkKKworICAgIGRlZiB0ZXN0X2NvbW1p
dHNfYnJhbmNoKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLmxvY2FsLlN2bihzZWxmLnBhdGgp
LCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICBzdm4gPSBsb2NhbC5Tdm4oc2VsZi5wYXRo
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQo
WworICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3I3JyksCisgICAgICAgICAg
ICAgICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjMnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29t
bWl0KHJldmlzaW9uPSdyMicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249
J3IxJyksCisgICAgICAgICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qoc3Zu
LmNvbW1pdHMoYmVnaW49ZGljdChhcmd1bWVudD0ncjEnKSwgZW5kPWRpY3QoYXJndW1lbnQ9J3I3
JykpKSkpCisKIAogY2xhc3MgVGVzdFJlbW90ZVN2bih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
cmVtb3RlID0gJ2h0dHBzOi8vc3ZuLmV4YW1wbGUub3JnL3JlcG9zaXRvcnkvd2Via2l0JwpAQCAt
MzMxLDMgKzM1MSwyNCBAQCBjbGFzcyBUZXN0UmVtb3RlU3ZuKHVuaXR0ZXN0LlRlc3RDYXNlKToK
IAogICAgIGRlZiB0ZXN0X2lkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlbW90
ZS5Tdm4oc2VsZi5yZW1vdGUpLmlkLCAnd2Via2l0JykKKworICAgIGRlZiB0ZXN0X2NvbW1pdHMo
c2VsZik6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgd2l0aCBtb2Nrcy5y
ZW1vdGUuU3ZuKCk6CisgICAgICAgICAgICBzdm4gPSByZW1vdGUuU3ZuKHNlbGYucmVtb3RlKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXQuRW5jb2RlcigpLmRlZmF1bHQoWwor
ICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3I2JyksCisgICAgICAgICAgICAg
ICAgc3ZuLmNvbW1pdChyZXZpc2lvbj0ncjQnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0
KHJldmlzaW9uPSdyMicpLAorICAgICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3Ix
JyksCisgICAgICAgICAgICBdKSwgQ29tbWl0LkVuY29kZXIoKS5kZWZhdWx0KGxpc3Qoc3ZuLmNv
bW1pdHMoYmVnaW49ZGljdChyZXZpc2lvbj0ncjEnKSwgZW5kPWRpY3QocmV2aXNpb249J3I2Jykp
KSkpCisKKyAgICBkZWYgdGVzdF9jb21taXRzX2JyYW5jaChzZWxmKToKKyAgICAgICAgd2l0aCBt
b2Nrcy5yZW1vdGUuU3ZuKCksIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHN2biA9IHJl
bW90ZS5Tdm4oc2VsZi5yZW1vdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbW1p
dC5FbmNvZGVyKCkuZGVmYXVsdChbCisgICAgICAgICAgICAgICAgc3ZuLmNvbW1pdChyZXZpc2lv
bj0ncjcnKSwKKyAgICAgICAgICAgICAgICBzdm4uY29tbWl0KHJldmlzaW9uPSdyMycpLAorICAg
ICAgICAgICAgICAgIHN2bi5jb21taXQocmV2aXNpb249J3IyJyksCisgICAgICAgICAgICAgICAg
c3ZuLmNvbW1pdChyZXZpc2lvbj0ncjEnKSwKKyAgICAgICAgICAgIF0pLCBDb21taXQuRW5jb2Rl
cigpLmRlZmF1bHQobGlzdChzdm4uY29tbWl0cyhiZWdpbj1kaWN0KGFyZ3VtZW50PSdyMScpLCBl
bmQ9ZGljdChhcmd1bWVudD0ncjcnKSkpKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>