<?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>159019</bug_id>
          
          <creation_ts>2016-06-21 23:42:20 -0700</creation_ts>
          <short_desc>Fix style issues in webkitpy</short_desc>
          <delta_ts>2016-06-22 18:14:03 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=159008</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1204448</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2016-06-21 23:42:20 -0700</bug_when>
    <thetext>Running &quot;./Tools/Scripts/check-webkit-style Tools/Script/webkitpy&quot; reports a lot of issues. Although not a high priority, but we should fix these issues as much as possible. It would help maintain the formatting style and quality. 

Sometimes these issues are encountered while we are making changes in similar portion of code and run check-webkit-style. At that time, it might be confusing whether the formatting issues were pre-existing or introduced by us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204450</commentid>
    <comment_count>1</comment_count>
      <attachid>281823</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2016-06-21 23:48:35 -0700</bug_when>
    <thetext>Created attachment 281823
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204514</commentid>
    <comment_count>2</comment_count>
      <attachid>281823</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-06-22 09:07:23 -0700</bug_when>
    <thetext>Comment on attachment 281823
Proposed patch

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

OK. I&apos;m unclear how many people are actively working in webkitpy at the moment. This change could be seen as disruptive to people that have patches in development or in flight given the number of files this patch touches. You may want to consider giving a heads up about this change on webkit-dev.

&gt; Tools/ChangeLog:51
&gt; +        * Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py:
&gt; +        (BrowserDriver):
&gt; +        * Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver_factory.py:
&gt; +        (BrowserDriverFactory):
&gt; +        (BrowserDriverFactory.available_platforms):
&gt; +        * Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py:
&gt; +        (ServerControl):
&gt; +        * Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
&gt; +        (SimpleHTTPServerDriver.serve):
&gt; +        * Scripts/webkitpy/benchmark_runner/utils.py:
&gt; +        (force_remove):
&gt; +        (TimeoutError):
&gt; +        * Scripts/webkitpy/common/checkout/changelog.py:
&gt; +        (ChangeLogEntry.is_touched_files_text_clean):
&gt; +        (ChangeLog):
&gt; +        * Scripts/webkitpy/common/checkout/changelog_unittest.py:
&gt; +        (test_prepend_text):
&gt; +        * Scripts/webkitpy/common/checkout/checkout.py:
&gt; +        (Checkout.bug_id_for_this_commit):
&gt; +        (Checkout):
&gt; +        (Checkout.apply_patch):
&gt; +        * Scripts/webkitpy/common/checkout/checkout_mock.py:
&gt; +        (MockCheckout):
&gt; +        (MockCheckout.__init__):
&gt; +        * Scripts/webkitpy/common/checkout/checkout_unittest.py:
&gt; +        (CheckoutTest):
&gt; +        (CheckoutTest._make_checkout):
&gt; +        * Scripts/webkitpy/common/checkout/commitinfo.py:
&gt; +        (CommitInfo.responsible_parties):
&gt; +        (CommitInfo):
&gt; +        (CommitInfo.blame_string):
&gt; +        * Scripts/webkitpy/common/checkout/commitinfo_unittest.py:
&gt; +        (CommitInfoTest):
&gt; +        (CommitInfoTest.test_commit_info_creation):
&gt; +        * Scripts/webkitpy/common/checkout/diff_parser_unittest.py:
&gt; +        (DiffParserTest):
&gt; +        (DiffParserTest.test_diff_parser):
&gt; +        (DiffParserTest.test_git_mnemonicprefix):
&gt; +        * Scripts/webkitpy/common/checkout/scm/scm.py:
&gt; +        (AuthenticationError.__init__):
&gt; +        (SCM):

We tend to elide changed functions or truncate the list of changed files for brevity when making large scale mechanical changes. I suggest that that we elide the changed functions. One example of a changeset that elides the list of changed functions is &lt;http://trac.webkit.org/changeset/97854&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204738</commentid>
    <comment_count>3</comment_count>
      <attachid>281889</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2016-06-22 17:44:17 -0700</bug_when>
    <thetext>Created attachment 281889
Updated patch

elided changed functions in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204746</commentid>
    <comment_count>4</comment_count>
      <attachid>281889</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 18:13:58 -0700</bug_when>
    <thetext>Comment on attachment 281889
Updated patch

Clearing flags on attachment: 281889

Committed r202362: &lt;http://trac.webkit.org/changeset/202362&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204747</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-22 18:14:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281823</attachid>
            <date>2016-06-21 23:48:35 -0700</date>
            <delta_ts>2016-06-22 17:44:17 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_formatting3</filename>
            <type>text/plain</type>
            <size>105552</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM4NCBAQAorMjAxNi0wNi0yMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgRml4IHN0eWxlIGlzc3VlcyBpbiB3ZWJraXRweQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MDE5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgdGhlIGZvcm1hdHRpbmcg
aXNzdWVzIGFzIHJlcG9ydGVkIGJ5IGNoZWNrLXdlYmtpdC1zdHlsZSBpbiB3ZWJraXRweS4kCisg
ICAgICAgIFRoZXJlIGlzIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlLiQKKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9icm93c2VyX2RyaXZlci9icm93c2VyX2Ry
aXZlci5weToKKyAgICAgICAgKEJyb3dzZXJEcml2ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvYmVuY2htYXJrX3J1bm5lci9icm93c2VyX2RyaXZlci9icm93c2VyX2RyaXZlcl9mYWN0
b3J5LnB5OgorICAgICAgICAoQnJvd3NlckRyaXZlckZhY3RvcnkpOgorICAgICAgICAoQnJvd3Nl
ckRyaXZlckZhY3RvcnkuYXZhaWxhYmxlX3BsYXRmb3Jtcyk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9odHRwX3NlcnZlci90
d2lzdGVkX2h0dHBfc2VydmVyLnB5OgorICAgICAgICAoU2VydmVyQ29udHJvbCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9z
aW1wbGVfaHR0cF9zZXJ2ZXJfZHJpdmVyLnB5OgorICAgICAgICAoU2ltcGxlSFRUUFNlcnZlckRy
aXZlci5zZXJ2ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVy
L3V0aWxzLnB5OgorICAgICAgICAoZm9yY2VfcmVtb3ZlKToKKyAgICAgICAgKFRpbWVvdXRFcnJv
cik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9n
LnB5OgorICAgICAgICAoQ2hhbmdlTG9nRW50cnkuaXNfdG91Y2hlZF9maWxlc190ZXh0X2NsZWFu
KToKKyAgICAgICAgKENoYW5nZUxvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9wcmVwZW5k
X3RleHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNr
b3V0LnB5OgorICAgICAgICAoQ2hlY2tvdXQuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdCk6CisgICAg
ICAgIChDaGVja291dCk6CisgICAgICAgIChDaGVja291dC5hcHBseV9wYXRjaCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfbW9jay5weToKKyAg
ICAgICAgKE1vY2tDaGVja291dCk6CisgICAgICAgIChNb2NrQ2hlY2tvdXQuX19pbml0X18pOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0
ZXN0LnB5OgorICAgICAgICAoQ2hlY2tvdXRUZXN0KToKKyAgICAgICAgKENoZWNrb3V0VGVzdC5f
bWFrZV9jaGVja291dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY29tbWl0aW5mby5weToKKyAgICAgICAgKENvbW1pdEluZm8ucmVzcG9uc2libGVfcGFydGll
cyk6CisgICAgICAgIChDb21taXRJbmZvKToKKyAgICAgICAgKENvbW1pdEluZm8uYmxhbWVfc3Ry
aW5nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21taXRp
bmZvX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ29tbWl0SW5mb1Rlc3QpOgorICAgICAgICAoQ29t
bWl0SW5mb1Rlc3QudGVzdF9jb21taXRfaW5mb19jcmVhdGlvbik6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXJfdW5pdHRlc3QucHk6CisgICAg
ICAgIChEaWZmUGFyc2VyVGVzdCk6CisgICAgICAgIChEaWZmUGFyc2VyVGVzdC50ZXN0X2RpZmZf
cGFyc2VyKToKKyAgICAgICAgKERpZmZQYXJzZXJUZXN0LnRlc3RfZ2l0X21uZW1vbmljcHJlZml4
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5
OgorICAgICAgICAoQXV0aGVudGljYXRpb25FcnJvci5fX2luaXRfXyk6CisgICAgICAgIChTQ00p
OgorICAgICAgICAoU0NNLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoZGVsZXRlX2NhY2hl
ZF9tb2NrX3JlcG9fYXRfZXhpdCk6CisgICAgICAgIChydW5fY29tbWFuZCk6CisgICAgICAgIChy
dW5fc2lsZW50KToKKyAgICAgICAgKFNWTlRlc3RSZXBvc2l0b3J5LnRlYXJfZG93bik6CisgICAg
ICAgIChTQ01DbGFzc1Rlc3RzKToKKyAgICAgICAgKFNDTUNsYXNzVGVzdHMuc2V0VXApOgorICAg
ICAgICAoU0NNQ2xhc3NUZXN0cy50ZWFyRG93bik6CisgICAgICAgIChTQ01DbGFzc1Rlc3RzLnRl
c3RfcnVuX2NvbW1hbmRfd2l0aF9waXBlKToKKyAgICAgICAgKFNDTUNsYXNzVGVzdHMudGVzdF9l
cnJvcl9oYW5kbGVycyk6CisgICAgICAgICh0ZXN0X2NyZWF0ZV9wYXRjaF9pc19mdWxsX3BhdGNo
KToKKyAgICAgICAgKHRlc3RfZGV0ZWN0aW9uKToKKyAgICAgICAgKHRlc3RfZXhpc3RzKToKKyAg
ICAgICAgKEdpdFRlc3QpOgorICAgICAgICAoR2l0VGVzdC5zZXRVcCk6CisgICAgICAgIChHaXRT
Vk5UZXN0LnRlc3RfcmViYXNlX2luX3Byb2dyZXNzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVyc191bml0dGVzdC5weToKKyAgICAgICAgKENvbW1p
dHRlcnNUZXN0KToKKyAgICAgICAgKENvbW1pdHRlcnNUZXN0LnRlc3RfY29tbWl0dGVyX2xvb2t1
cCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2lyYy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHMucHk6CisgICAgICAg
IChJT1NTaW11bGF0b3JXSzJQb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCk6CisgICAgICAg
IChNYWNQb3J0KToKKyAgICAgICAgKE1hY1BvcnQucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKToK
KyAgICAgICAgKE1hY1dLMlBvcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NvbmZpZy9wb3J0c191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvdXJscy5weToKKyAgICAgICAgKHBhcnNlX2J1Z19pZCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdF9tb2NrLnB5OgorICAgICAgICAoTW9ja0hvc3Qu
Y2hlY2tvdXQpOgorICAgICAgICAoTW9ja0hvc3QpOgorICAgICAgICAoTW9ja0hvc3Qud2F0Y2hf
bGlzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Z3ppbGxhLnB5OgorICAgICAgICAoQnVnemlsbGFRdWVyaWVzLmlzX2ludmFsaWRfYnVnemlsbGFf
ZW1haWwpOgorICAgICAgICAoQ29tbWl0UXVldWVGbGFnKToKKyAgICAgICAgKEJ1Z3ppbGxhLmZl
dGNoX2F0dGFjaG1lbnQpOgorICAgICAgICAoQnVnemlsbGEpOgorICAgICAgICAoQnVnemlsbGEu
YXV0aGVudGljYXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHk6CisgICAgICAgICh0ZXN0X3VybF9jcmVhdGlvbik6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90
LnB5OgorICAgICAgICAoQnVpbGRlci5fX2luaXRfXyk6CisgICAgICAgIChCdWlsZGVyKToKKyAg
ICAgICAgKEJ1aWxkZXIubmFtZSk6CisgICAgICAgIChCdWlsZEJvdC5fcGFyc2VfbGFzdF9idWls
ZF9jZWxsKToKKyAgICAgICAgKEJ1aWxkQm90KToKKyAgICAgICAgKEJ1aWxkQm90Ll9wYXJzZV9j
dXJyZW50X2J1aWxkX2NlbGwpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5OgorICAgICAgICAoTW9ja0J1aWxkLl9faW5pdF9f
KToKKyAgICAgICAgKE1vY2tCdWlsZGVyKToKKyAgICAgICAgKE1vY2tCdWlsZGVyLl9faW5pdF9f
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVpbGRi
b3RfdW5pdHRlc3QucHk6CisgICAgICAgIChCdWlsZGVyVGVzdC5faW5zdGFsbF9mZXRjaF9idWls
ZC5fbW9ja19mZXRjaF9idWlsZCk6CisgICAgICAgIChCdWlsZGVyVGVzdC5faW5zdGFsbF9mZXRj
aF9idWlsZC5fbW9ja19mZXRjaF9idWlsZC5tb2NrX2xheW91dF90ZXN0X3Jlc3VsdHMpOgorICAg
ICAgICAoQnVpbGRlclRlc3QudGVzdF9idWlsZF9jYWNoaW5nKToKKyAgICAgICAgKEJ1aWxkZXJU
ZXN0KToKKyAgICAgICAgKEJ1aWxkZXJUZXN0LnRlc3RfYnVpbGRfYW5kX3JldmlzaW9uX2Zvcl9m
aWxlbmFtZSk6CisgICAgICAgICh0ZXN0X2J1aWxkZXJfd2l0aF9uYW1lLm1vY2tfZmV0Y2hfYnVp
bGRfZGljdGlvbmFyeSk6CisgICAgICAgICh0ZXN0X2J1aWxkZXJfd2l0aF9uYW1lKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHk6
CisgICAgICAgICh0ZXN0X3NlY3VyaXR5X291dHB1dF9wYXJzZV9lbnRyeV9ub3RfZm91bmQpOgor
ICAgICAgICAodGVzdF9yZWFkX2NyZWRlbnRpYWxzX3dpdGhvdXRfZ2l0X3JlcG8pOgorICAgICAg
ICAodGVzdF9rZXlyaW5nX3dpdGhvdXRfZ2l0X3JlcG8pOgorICAgICAgICAodGVzdF9rZXlyaW5n
X3dpdGhvdXRfZ2l0X3JlcG8uTW9ja0tleXJpbmcpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9pcmMvaXJjcHJveHlfdW5pdHRlc3QucHk6CisgICAgICAgIChJUkNQcm94
eVRlc3QpOgorICAgICAgICAoSVJDUHJveHlUZXN0LnRlc3RfdHJpdmlhbCk6CisgICAgICAgIChJ
UkNQcm94eVRlc3QudGVzdF90cml2aWFsLmZ1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L25ldHdvcmt0cmFuc2FjdGlvbl91bml0dGVzdC5weToKKyAgICAgICAgKE5l
dHdvcmtUcmFuc2FjdGlvblRlc3QudGVzdF9jb252ZXJ0XzQwNF90b19Ob25lKToKKyAgICAgICAg
KE5ldHdvcmtUcmFuc2FjdGlvblRlc3QpOgorICAgICAgICAoTmV0d29ya1RyYW5zYWN0aW9uVGVz
dC50ZXN0X3RpbWVvdXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9z
dGF0dXNzZXJ2ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2F1dG9pbnN0YWxsLnB5OgorICAgICAgICAoQXV0b0luc3RhbGxlcik6CisgICAgICAgIChBdXRv
SW5zdGFsbGVyLl9kb3dubG9hZF90b19zdHJlYW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHk6CisgICAgICAgIChtYWtlX21v
Y2tfY3Jhc2hfcmVwb3J0X2Rhcndpbik6CisgICAgICAgIChDcmFzaExvZ3NUZXN0KToKKyAgICAg
ICAgKENyYXNoTG9nc1Rlc3QuY3JlYXRlX2NyYXNoX2xvZ3NfZGFyd2luKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5OgorICAgICAgICAoU2Ny
aXB0RXJyb3IuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9leGVjdXRpdmVfbW9jay5weToKKyAgICAgICAgKE1vY2tQcm9jZXNzLmNvbW11bmljYXRl
KToKKyAgICAgICAgKE1vY2tFeGVjdXRpdmUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHk6CisgICAgICAgIChTY3JpcHRFcnJv
clRlc3QudGVzdF9tZXNzYWdlX3dpdGhfdHVwbGUpOgorICAgICAgICAobmV2ZXJfZW5kaW5nX2Nv
bW1hbmQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lz
dGVtX21vY2sucHk6CisgICAgICAgIChNb2NrRmlsZVN5c3RlbS5kaXJzX3VuZGVyKToKKyAgICAg
ICAgKE1vY2tGaWxlU3lzdGVtKToKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLmZpbGVzX3VuZGVy
KToKKyAgICAgICAgKE1vY2tGaWxlU3lzdGVtLmZpbGVzX3VuZGVyLmZpbHRlcl9hbGwpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX3VuaXR0ZXN0
LnB5OgorICAgICAgICAoR2VuZXJpY0ZpbGVTeXN0ZW1UZXN0cy50ZXN0X2dsb2JfX3BlcmlvZF9p
c19lc2NhcGVkKToKKyAgICAgICAgKFJlYWxGaWxlU3lzdGVtVGVzdCk6CisgICAgICAgIChSZWFs
RmlsZVN5c3RlbVRlc3Quc2V0VXApOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9sb2d1dGlsc191bml0dGVzdC5weToKKyAgICAgICAgKENvbmZpZ3VyZUxvZ2dpbmdW
ZXJib3NlVGVzdC50ZXN0X2RlYnVnX21lc3NhZ2UpOgorICAgICAgICAoQ29uZmlndXJlTG9nZ2lu
Z0N1c3RvbUxldmVsVGVzdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3BhdGgucHk6CisgICAgICAgIChhYnNwYXRoX3RvX3VyaSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGhfdW5pdHRlc3QucHk6CisgICAgICAgIChBYnNw
YXRoVGVzdCk6CisgICAgICAgIChBYnNwYXRoVGVzdC5wbGF0Zm9ybWluZm8pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHk6CisgICAgICAg
IChQbGF0Zm9ybUluZm8pOgorICAgICAgICAoUGxhdGZvcm1JbmZvLnByb3ZpZGVzKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl91bml0dGVzdC5weToKKyAgICAgICAg
KFVzZXJUZXN0KToKKyAgICAgICAgKFVzZXJUZXN0LnRlc3RfcHJvbXB0X3JlcGVhdCk6CisgICAg
ICAgIChVc2VyVGVzdC50ZXN0X3Byb21wdF9yZXBlYXQubW9ja19yYXdfaW5wdXQpOgorICAgICAg
ICAoVXNlclRlc3QudGVzdF9wcm9tcHRfd2hlbl9leGNlZWRlZF9yZXBlYXRzKToKKyAgICAgICAg
KFVzZXJUZXN0LnRlc3RfcHJvbXB0X3doZW5fZXhjZWVkZWRfcmVwZWF0cy5tb2NrX3Jhd19pbnB1
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91
bml0dGVzdC5weToKKyAgICAgICAgKFdvcmtzcGFjZVRlc3QudGVzdF9jcmVhdGVfemlwKToKKyAg
ICAgICAgKFdvcmtzcGFjZVRlc3QudGVzdF9jcmVhdGVfemlwLk1vY2taaXBGaWxlKToKKyAgICAg
ICAgKFdvcmtzcGFjZVRlc3QudGVzdF9jcmVhdGVfemlwLk1vY2taaXBGaWxlLl9faW5pdF9fKToK
KyAgICAgICAgKE1vY2taaXBGaWxlKToKKyAgICAgICAgKE1vY2taaXBGaWxlLl9faW5pdF9fKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi90aHJlYWQvdGhyZWFkZWRtZXNzYWdl
cXVldWUucHk6CisgICAgICAgIChUaHJlYWRlZE1lc3NhZ2VRdWV1ZS50YWtlX2FsbCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGhyZWFkL3RocmVhZGVkbWVzc2FnZXF1ZXVl
X3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGhyZWFkZWRNZXNzYWdlUXVldWVUZXN0KToKKyAgICAg
ICAgKFRocmVhZGVkTWVzc2FnZVF1ZXVlVGVzdC50ZXN0X2Jhc2ljKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9maW5kZXIu
cHk6CisgICAgICAgIChMYXlvdXRUZXN0RmluZGVyLmZpbmRfdG91Y2hlZF90ZXN0cyk6CisgICAg
ICAgIChMYXlvdXRUZXN0RmluZGVyKToKKyAgICAgICAgKExheW91dFRlc3RGaW5kZXIuX3N0cmlw
X3Rlc3RfZGlyX3ByZWZpeGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5OgorICAgICAgICAoTWFuYWdlcik6CisgICAgICAg
IChNYW5hZ2VyLmZvcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5OgorICAgICAgICAod3JpdGVfdGVzdF9y
ZXN1bHQpOgorICAgICAgICAoVGVzdFJlc3VsdFdyaXRlcik6CisgICAgICAgIChUZXN0UmVzdWx0
V3JpdGVyLndoaWNoKToKKyAgICAgICAgKFRlc3RSZXN1bHRXcml0ZXIud3JpdGVfaW1hZ2VfZGlm
Zl9maWxlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weToKKyAgICAgICAgKGFkZF9wYXRoX3Rv
X3RyaWUpOgorICAgICAgICAodGVzdF90aW1pbmdzX3RyaWUpOgorICAgICAgICAoVGVzdFJlc3Vs
dCk6CisgICAgICAgIChUZXN0UmVzdWx0LnRoYXQpOgorICAgICAgICAoSlNPTlJlc3VsdHNHZW5l
cmF0b3IudXBsb2FkX2pzb25fZmlsZXMpOgorICAgICAgICAoSlNPTlJlc3VsdHNHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNPTlJlc3VsdHNHZW5lcmF0b3IuX2dldF90ZXN0X3RpbWluZyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weToKKyAgICAgICAgKEZha2VQb3J0LnBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4
cGVjdGF0aW9uc19maWxlKToKKyAgICAgICAgKEZha2VGYWN0b3J5KToKKyAgICAgICAgKEZha2VG
YWN0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9jb25maWd1cmF0aW9uLnB5OgorICAgICAgICAoVGVzdENvbmZpZ3VyYXRp
b24pOgorICAgICAgICAoVGVzdENvbmZpZ3VyYXRpb24uX19pbml0X18pOgorICAgICAgICAoVGVz
dENvbmZpZ3VyYXRpb25Db252ZXJ0ZXIudG9fc3BlY2lmaWVyc19saXN0KToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHk6
CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25zTW9kZWwuZXhwZWN0YXRpb25fdG9fc3RyaW5nKToK
KyAgICAgICAgKFRlc3RFeHBlY3RhdGlvbnNNb2RlbCk6CisgICAgICAgIChUZXN0RXhwZWN0YXRp
b25zTW9kZWwuYWRkX2V4cGVjdGF0aW9uX2xpbmUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAoaXNfcmVm
dGVzdF9mYWlsdXJlKToKKyAgICAgICAgKEZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2hEaWROb3RPY2N1
ci53cml0ZV9mYWlsdXJlKToKKyAgICAgICAgKEZhaWx1cmVSZWZ0ZXN0Tm9JbWFnZXNHZW5lcmF0
ZWQpOgorICAgICAgICAoRmFpbHVyZVJlZnRlc3ROb0ltYWdlc0dlbmVyYXRlZC5fX2luaXRfXyk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVu
X3Jlc3VsdHMucHk6CisgICAgICAgIChUZXN0UnVuUmVzdWx0cyk6CisgICAgICAgIChUZXN0UnVu
UmVzdWx0cy5fX2luaXRfXyk6CisgICAgICAgIChfaW50ZXJwcmV0X3Rlc3RfZmFpbHVyZXMpOgor
ICAgICAgICAoc3VtbWFyaXplX3Jlc3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OgorICAgICAg
ICAoUnVuVGVzdC50ZXN0X2Jhc2ljKToKKyAgICAgICAgKFJ1blRlc3QpOgorICAgICAgICAoUnVu
VGVzdC50ZXN0X2JhdGNoX3NpemUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5OgorICAgICAgICAoUmVndWxh
clRlc3QudGVzdF9sb2dfYXJncyk6CisgICAgICAgIChUdHlUZXN0KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weToKKyAgICAgICAgKFBy
aW50ZXIuX3Jlc3VsdF9tZXNzYWdlKToKKyAgICAgICAgKFByaW50ZXIpOgorICAgICAgICAoUHJp
bnRlci5fcHJpbnRfdGVzdF90cmFjZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHk6CisgICAgICAgIChQZXJmVGVzdHNSdW5u
ZXIuX19pbml0X18pOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyKToKKyAgICAgICAgKFBlcmZU
ZXN0c1J1bm5lci5fcGFyc2VfYXJncyk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3BhcnNl
X2FyZ3MuX2V4cGFuZF9wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHk6CisgICAgICAgIChN
YWluVGVzdC50ZXN0X3J1bl90ZXN0X3NldF9raWxsc19kcnRfcGVyX3J1bik6CisgICAgICAgIChN
YWluVGVzdC50ZXN0X3J1bl90ZXN0X3NldF9raWxsc19kcnRfcGVyX3J1bi5UZXN0RHJpdmVyV2l0
aFN0b3BDb3VudCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3J1bl90ZXN0X3NldF9raWxsc19k
cnRfcGVyX3J1bi5UZXN0RHJpdmVyV2l0aFN0b3BDb3VudC5zdG9wKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKFBvcnRUZXN0KToK
KyAgICAgICAgKFBvcnRUZXN0Lm1ha2VfcG9ydCk6CisgICAgICAgIChQb3J0VGVzdC50ZXN0X3By
ZXR0eV9wYXRjaF9zY3JpcHRfZXJyb3IpOgorICAgICAgICAoUG9ydFRlc3QudGVzdF9kaWZmX3Rl
eHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHk6CisgICAgICAg
IChEcml2ZXJPdXRwdXQuc3RyaXBfc3RkZXJyb3JfcGF0dGVybnMpOgorICAgICAgICAoRHJpdmVy
KToKKyAgICAgICAgKENvbnRlbnRCbG9jay5kZWNvZGVfY29udGVudCk6CisgICAgICAgIChEcml2
ZXJQcm94eSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVz
dC5weToKKyAgICAgICAgKERyaXZlck91dHB1dFRlc3QpOgorICAgICAgICAoRHJpdmVyT3V0cHV0
VGVzdC50ZXN0X3N0cmlwX21ldHJpY3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9mYWN0b3J5LnB5OgorICAgICAgICAoY29uZmlndXJhdGlvbl9vcHRpb25zKToKKyAgICAgICAg
KF9idWlsZGVyX29wdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsu
cHk6CisgICAgICAgIChHdGtQb3J0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQv
c2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHk6CisgICAgICAgIChUcml2aWFsTW9ja1BvcnQpOgor
ICAgICAgICAoVHJpdmlhbE1vY2tQb3J0Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvdGVzdC5weToKKyAgICAgICAgKHVuaXRfdGVzdF9saXN0KToKKyAgICAgICAg
KFRlc3RQb3J0LmFsbF9iYXNlbGluZV92YXJpYW50cyk6CisgICAgICAgIChUZXN0RHJpdmVyKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5OgorICAgICAgICAoV2luUG9y
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAg
ICAoRmlsZVR5cGUpOgorICAgICAgICAoQ2hlY2tlckRpc3BhdGNoZXIpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAoQ2FycmlhZ2VSZXR1cm5DaGVja2VyVGVzdCk6CisgICAgICAgIChDYXJyaWFnZVJldHVybkNo
ZWNrZXJUZXN0LnNldFVwKToKKyAgICAgICAgKENhcnJpYWdlUmV0dXJuQ2hlY2tlclRlc3QuX21v
Y2tfc3R5bGVfZXJyb3JfaGFuZGxlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAgIChfY29udmVydF90b19sb3dlcl93aXRoX3VuZGVy
c2NvcmVzKToKKyAgICAgICAgKF9jcmVhdGVfYWNyb255bSk6CisgICAgICAgICh1cF90b191bm1h
dGNoZWRfY2xvc2luZ19wYXJlbik6CisgICAgICAgIChfSW5jbHVkZVN0YXRlKToKKyAgICAgICAg
KF9GdW5jdGlvblN0YXRlLmJlZ2luKToKKyAgICAgICAgKF9GdW5jdGlvblN0YXRlKToKKyAgICAg
ICAgKF9GdW5jdGlvblN0YXRlLm1vZGlmaWVyc19hbmRfcmV0dXJuX3R5cGUpOgorICAgICAgICAo
X0Z1bmN0aW9uU3RhdGUuaXNfdmlydHVhbCk6CisgICAgICAgIChfRnVuY3Rpb25TdGF0ZS5jaGVj
ayk6CisgICAgICAgIChfRnVuY3Rpb25TdGF0ZS5lbmQpOgorICAgICAgICAoRmlsZUluZm8ucmVw
b3NpdG9yeV9uYW1lKToKKyAgICAgICAgKGNsb3NlX2V4cHJlc3Npb24pOgorICAgICAgICAoY2hl
Y2tfZm9yX2NvcHlyaWdodCk6CisgICAgICAgIChfRW51bVN0YXRlLnByb2Nlc3NfY2xlYW5fbGlu
ZSk6CisgICAgICAgIChjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMpOgorICAgICAg
ICAoY2hlY2tfbWVtYmVyX2luaXRpYWxpemF0aW9uX2xpc3QpOgorICAgICAgICAoZ2V0X3ByZXZp
b3VzX25vbl9ibGFua19saW5lKToKKyAgICAgICAgKGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlv
bik6CisgICAgICAgIChjaGVja19lbnVtX2Nhc2luZyk6CisgICAgICAgIChjaGVja19kaXJlY3Rp
dmVfaW5kZW50YXRpb24pOgorICAgICAgICAoZ2V0X2luaXRpYWxfc3BhY2VzX2Zvcl9saW5lKToK
KyAgICAgICAgKGNoZWNrX2luZGVudGF0aW9uX2Ftb3VudCk6CisgICAgICAgIChjaGVja191c2lu
Z19zdGQpOgorICAgICAgICAoY2hlY2tfdXNpbmdfbmFtZXNwYWNlKToKKyAgICAgICAgKGNoZWNr
X21heF9taW5fbWFjcm9zKToKKyAgICAgICAgKGNoZWNrX2N0eXBlX2Z1bmN0aW9ucyk6CisgICAg
ICAgIChjaGVja19zd2l0Y2hfaW5kZW50YXRpb24pOgorICAgICAgICAoY2hlY2tfYnJhY2VzKToK
KyAgICAgICAgKGNoZWNrX2V4aXRfc3RhdGVtZW50X3NpbXBsaWZpY2F0aW9ucyk6CisgICAgICAg
IChjaGVja19mb3JfbnVsbCk6CisgICAgICAgIChnZXRfbGluZV93aWR0aCk6CisgICAgICAgIChj
aGVja19sYW5ndWFnZSk6CisgICAgICAgIChjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFy
YXRpb24pOgorICAgICAgICAoY2hlY2tfY19zdHlsZV9jYXN0KToKKyAgICAgICAgKGNoZWNrX2Zv
cl9pbmNsdWRlX3doYXRfeW91X3VzZSk6CisgICAgICAgIChjaGVja19wbGF0Zm9ybWhfY29tbWVu
dHMpOgorICAgICAgICAocHJvY2Vzc19saW5lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weToKKyAgICAgICAgKENwcEZ1bmN0aW9uc1Rl
c3QudGVzdF9jaGVja19wYXJhbWV0ZXJfYWdhaW5zdF90ZXh0KToKKyAgICAgICAgKENwcFN0eWxl
VGVzdEJhc2UpOgorICAgICAgICAoQ3BwMTFTdHlsZVRlc3QudGVzdF9ydmF1bGVfcmVmZXJlbmNl
X2luX3BhcmFtZXRlcl9wYWNrKToKKyAgICAgICAgKENwcFN0eWxlVGVzdCk6CisgICAgICAgIChD
cHBTdHlsZVRlc3QudGVzdF9hc21fbGluZXNfaWdub3JlZCk6CisgICAgICAgIChDcHBTdHlsZVRl
c3QudGVzdF9vbmVfc3BhY2VzX2JldHdlZW5fY29kZV9hbmRfY29tbWVudHMpOgorICAgICAgICAo
Q3BwU3R5bGVUZXN0LnRlc3RfcGxhaW5faW50ZWdyYWxfYml0ZmllbGRzKToKKyAgICAgICAgKENs
ZWFuc2VkTGluZXNUZXN0KToKKyAgICAgICAgKENsZWFuc2VkTGluZXNUZXN0LnRlc3RfaW5pdCk6
CisgICAgICAgIChXZWJLaXRTdHlsZVRlc3QudGVzdF9uYW1lcyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weToKKyAgICAgICAgKEpTQ2hlY2tlcik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5weToK
KyAgICAgICAgKEpTT05DaGVja2VyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3BuZy5weToKKyAgICAgICAgKFBOR0NoZWNrZXIpOgorICAgICAgICAoUE5HQ2hl
Y2tlci5jaGVjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90
ZXh0LnB5OgorICAgICAgICAoVGV4dENoZWNrZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvdGV4dF91bml0dGVzdC5weToKKyAgICAgICAgKFRleHRTdHlsZVRl
c3RDYXNlKToKKyAgICAgICAgKFRleHRTdHlsZVRlc3RDYXNlLmFzc2VydEVycm9yKToKKyAgICAg
ICAgKFRleHRTdHlsZVRlc3RDYXNlLnRlc3Rfbm9fZXJyb3IpOgorICAgICAgICAoVGV4dFN0eWxl
VGVzdENhc2UudGVzdF9lcnJvcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9l
cnJvcl9oYW5kbGVycy5weToKKyAgICAgICAgKERlZmF1bHRTdHlsZUVycm9ySGFuZGxlci5fX25l
X18pOgorICAgICAgICAoRGVmYXVsdFN0eWxlRXJyb3JIYW5kbGVyKToKKyAgICAgICAgKERlZmF1
bHRTdHlsZUVycm9ySGFuZGxlci5fYWRkX3JlcG9ydGFibGVfZXJyb3IpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvZmlsdGVyLnB5OgorICAgICAgICAoX0NhdGVnb3J5RmlsdGVy
Ll9faW5pdF9fKToKKyAgICAgICAgKF9DYXRlZ29yeUZpbHRlcik6CisgICAgICAgIChfQ2F0ZWdv
cnlGaWx0ZXIuX19zdHJfXyk6CisgICAgICAgIChfQ2F0ZWdvcnlGaWx0ZXIuc2hvdWxkX2NoZWNr
KToKKyAgICAgICAgKEZpbHRlckNvbmZpZ3VyYXRpb24uX3BhdGhfcnVsZXNfZnJvbV9wYXRoKToK
KyAgICAgICAgKEZpbHRlckNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoRmlsdGVyQ29uZmlndXJh
dGlvbi5fZmlsdGVyX2Zyb21fcGF0aF9ydWxlcyk6CisgICAgICAgIChGaWx0ZXJDb25maWd1cmF0
aW9uLnNob3VsZF9jaGVjayk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWx0
ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChWYWxpZGF0ZUZpbHRlclJ1bGVzVGVzdCk6CisgICAg
ICAgIChGaWx0ZXJDb25maWd1cmF0aW9uVGVzdC50ZXN0X3VzZXJfcnVsZXMpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5OgorICAgICAgICAoQXJndW1lbnRQ
cmludGVyKToKKyAgICAgICAgKEFyZ3VtZW50UHJpbnRlci5fZmxhZ19wYWlyX3RvX3N0cmluZyk6
CisgICAgICAgIChBcmd1bWVudFByaW50ZXIudG9fZmxhZ19zdHJpbmcpOgorICAgICAgICAoQXJn
dW1lbnRQYXJzZXIucGFyc2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0
cGFyc2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQXJndW1lbnRQYXJzZXJUZXN0Ll9jcmVhdGVf
cGFyc2VyKToKKyAgICAgICAgKEFyZ3VtZW50UGFyc2VyVGVzdC50ZXN0X3BhcnNlX2JhZF92YWx1
ZXMpOgorICAgICAgICAoQXJndW1lbnRQYXJzZXJUZXN0KToKKyAgICAgICAgKEFyZ3VtZW50UGFy
c2VyVGVzdC50ZXN0X3BhcnNlX2RlZmF1bHRfYXJndW1lbnRzKToKKyAgICAgICAgKENvbW1hbmRP
cHRpb25WYWx1ZXNUZXN0LnRlc3RfaW5pdCk6CisgICAgICAgIChDb21tYW5kT3B0aW9uVmFsdWVz
VGVzdC50ZXN0X25lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weToK
KyAgICAgICAgKF9wcmludF9yZXN1bHRzX2FzX2pzb24pOgorICAgICAgICAoVGVzdGVyKToKKyAg
ICAgICAgKFRlc3Rlci5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9jb252ZXJ0ZXIucHk6CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlci5oYW5kbGVfZGVj
bCk6CisgICAgICAgIChfVzNDVGVzdENvbnZlcnRlcik6CisgICAgICAgIChfVzNDVGVzdENvbnZl
cnRlci5oYW5kbGVfcGkpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29u
dmVydGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVzNDVGVzdENvbnZlcnRlclRlc3QpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHk6Cisg
ICAgICAgIChUZXN0SW1wb3J0ZXJUZXN0KToKKyAgICAgICAgKFRlc3RJbXBvcnRlclRlc3QuX3Bh
cnNlX29wdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdG9y
LnB5OgorICAgICAgICAoRGV2aWNlVHlwZSk6CisKIDIwMTYtMDYtMjEgIEFha2FzaCBKYWluICA8
YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3JtYXR0aW5nIGlzc3VlcyBy
ZXBvcnRlZCBieSBjaGVjay13ZWJraXQtc3R5bGUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYmVuY2htYXJrX3J1bm5lci91dGlscy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvdXRpbHMucHkJKHJldmlzaW9uIDIwMjMyNSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci91dGlscy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBkZWYgZm9yY2VfcmVtb3ZlKHBhdGgpOgogICAgICAg
ICBfbG9nLmluZm8oIkVycm9yIHJlbW92aW5nICVzOiAlcyIgJSAocGF0aCwgZXJyb3IpKQogICAg
ICAgICBwYXNzCiAKKwogIyBCb3Jyb3cgdGhpcyBjb2RlIGZyb20KICMgJ2h0dHA6Ly9zdGFja292
ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI4MTg1MC90aW1lb3V0LWZ1bmN0aW9uLWlmLWl0LXRha2Vz
LXRvby1sb25nLXRvLWZpbmlzaCcKIGNsYXNzIFRpbWVvdXRFcnJvcihFeGNlcHRpb24pOgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2Jyb3dzZXJfZHJpdmVy
L2Jyb3dzZXJfZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci9icm93c2VyX2RyaXZlci9icm93c2VyX2RyaXZlci5weQkocmV2aXNp
b24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2Jy
b3dzZXJfZHJpdmVyL2Jyb3dzZXJfZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIs
NyBAQAogCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIAorCiBjbGFz
cyBCcm93c2VyRHJpdmVyKG9iamVjdCk6CiAgICAgcGxhdGZvcm0gPSBOb25lCiAgICAgYnJvd3Nl
cl9uYW1lID0gTm9uZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVu
bmVyL2Jyb3dzZXJfZHJpdmVyL2Jyb3dzZXJfZHJpdmVyX2ZhY3RvcnkucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2Jyb3dzZXJfZHJpdmVy
L2Jyb3dzZXJfZHJpdmVyX2ZhY3RvcnkucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9icm93c2VyX2RyaXZlci9icm93c2VyX2Ry
aXZlcl9mYWN0b3J5LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw2IEBAIGNsYXNzIEJy
b3dzZXJEcml2ZXJGYWN0b3J5KG9iamVjdCk6CiAgICAgcGxhdGZvcm1zID0gc2V0KCkKICAgICBi
cm93c2VycyA9IHNldCgpCiAKLQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBhdmFpbGFibGVf
cGxhdGZvcm1zKGNscyk6CiAgICAgICAgIHJldHVybiBsaXN0KGNscy5wbGF0Zm9ybXMpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJp
dmVyL3NpbXBsZV9odHRwX3NlcnZlcl9kcml2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9zaW1wbGVf
aHR0cF9zZXJ2ZXJfZHJpdmVyLnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVyL3NpbXBsZV9odHRw
X3NlcnZlcl9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3Mg
U2ltcGxlSFRUUFNlcnZlckRyaXZlcihIVFRQU2VydmVyRAogICAgICAgICAgICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCdIVFRQIFNlcnZlciBpcyBzZXJ2aW5nIGF0IHBvcnQ6ICVkJywgc2VsZi5f
c2VydmVyX3BvcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICBfbG9n
LmluZm8oJ0Vycm9yOiAlcycgJSBlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZv
KCdFcnJvcjogJXMnICUgZXJyb3IpCiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdTZXJ2ZXIg
cG9ydCBpcyBub3QgZm91bmQgdGhpcyB0aW1lLCByZXRyeSBhZnRlciAlZiBzZWNvbmRzJyAlIGlu
dGVydmFsKQogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoaW50ZXJ2YWwpCiAgICAgICAgICAg
ICAgICAgaW50ZXJ2YWwgKj0gMgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9odHRwX3NlcnZlci90d2lzdGVkX2h0dHBfc2Vy
dmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1
bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9odHRwX3NlcnZlci5w
eQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtf
cnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9odHRwX3NlcnZlci90d2lzdGVkX2h0dHBfc2VydmVy
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw3IEBAIGZyb20gdHdpc3RlZC5pbnRlcm5l
dCBpbXBvcnQgcmVhY3RvcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAK
KwogY2xhc3MgU2VydmVyQ29udHJvbChSZXNvdXJjZSk6CiAgICAgaXNMZWFmID0gVHJ1ZQogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9ob3N0X21vY2sucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdF9tb2NrLnB5CShyZXZpc2lv
biAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9ob3N0X21vY2sucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDQgKzc0LDMgQEAgY2xhc3MgTW9ja0hvc3QoTW9ja1N5c3Rl
bUhvc3QpOgogCiAgICAgZGVmIHdhdGNoX2xpc3Qoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxm
Ll93YXRjaF9saXN0Ci0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2NoYW5nZWxvZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQkod29ya2luZyBjb3B5
KQpAQCAtMjk0LDYgKzI5NCw3IEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAorCiAjIEZJWE1FOiBW
YXJpb3VzIG1ldGhvZHMgb24gQ2hhbmdlTG9nIHNob3VsZCBtb3ZlIGludG8gQ2hhbmdlTG9nRW50
cnkgaW5zdGVhZC4KIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgogCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9n
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTY4MSw3ICs2ODEsNiBAQCBjbGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgZXhwZWN0ZWRfY29udGVudHMgPSAiPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9n
LTIwMDktMDYtMTYgPT1cbiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY29udGVu
dHMuc3BsaXRsaW5lcygpLCBleHBlY3RlZF9jb250ZW50cy5zcGxpdGxpbmVzKCkpCiAKLQogICAg
IGRlZiB0ZXN0X3ByZXBlbmRfdGV4dChzZWxmKToKICAgICAgICAgZnMgPSBNb2NrRmlsZVN5c3Rl
bSgpCiAgICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShzZWxmLl9jaGFuZ2Vsb2dfcGF0aCwgc2Vs
Zi5fZXhhbXBsZV9jaGFuZ2Vsb2cpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9jaGVja291dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nKHNl
bGYuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQsIGNoYW5nZWRfZmls
ZXMpLm1lc3NhZ2UoKSkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgotICAgICAgICAg
ICAgcGFzcyAjIFdlIG1pZ2h0IG5vdCBoYXZlIENoYW5nZUxvZ3MuCisgICAgICAgICAgICBwYXNz
ICAjIFdlIG1pZ2h0IG5vdCBoYXZlIENoYW5nZUxvZ3MuCiAKICAgICBkZWYgYXBwbHlfcGF0Y2go
c2VsZiwgcGF0Y2gpOgogICAgICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF0Y2ggd2Fz
IG5vdCBtYWRlIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfbW9jay5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dF9tb2NrLnB5CShy
ZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGVja291dF9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIG1vY2tf
cmV2aXNpb25zID0gewogICAgIH0pCiB9CiAKKwogY2xhc3MgTW9ja0NoZWNrb3V0KG9iamVjdCk6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBJdCdzIHVuY2xlYXIg
aWYgYSBNb2NrQ2hlY2tvdXQgaXMgdmVyeSB1c2VmdWwuICBBIG5vcm1hbCBDaGVja291dApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hlY2tvdXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMzAsNiArMzMwLDcgQEAgUGF0Y2ggYnkgRGFuaWVsIEJhdGVzIDxkYWJhdGVz
QGFwcGxlLmNvbQogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlX2xpbmVzID0gY29tbWl0
X21lc3NhZ2UubWVzc2FnZV9saW5lc1sxOl0KICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVF
cXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIGV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlKQog
CisKIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9tYWtl
X2NoZWNrb3V0KHNlbGYpOgogICAgICAgICByZXR1cm4gQ2hlY2tvdXQoc2NtPU1vY2tTQ00oKSwg
ZmlsZXN5c3RlbT1Nb2NrRmlsZVN5c3RlbSgpLCBleGVjdXRpdmU9TW9ja0V4ZWN1dGl2ZSgpKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY29tbWl0aW5mby5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
b21taXRpbmZvLnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9jb21taXRpbmZvLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5
MCw3IEBAIGNsYXNzIENvbW1pdEluZm8ob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuYXV0aG9y
KCksCiAgICAgICAgICAgICBzZWxmLnJldmlld2VyKCksCiAgICAgICAgIF0KLSAgICAgICAgcmV0
dXJuIHNldChbcGFydHkgZm9yIHBhcnR5IGluIHJlc3BvbnNpYmxlX3BhcnRpZXMgaWYgcGFydHld
KSAjIEZpbHRlciBvdXQgTm9uZQorICAgICAgICByZXR1cm4gc2V0KFtwYXJ0eSBmb3IgcGFydHkg
aW4gcmVzcG9uc2libGVfcGFydGllcyBpZiBwYXJ0eV0pICAjIEZpbHRlciBvdXQgTm9uZQogCiAg
ICAgIyBGSVhNRTogSXQgaXMgc2xpZ2h0bHkgbGFtZSB0aGF0IHRoaXMgInZpZXciIG1ldGhvZCBp
cyBvbiB0aGlzICJtb2RlbCIgY2xhc3MgKGluIE1WQyB0ZXJtcykKICAgICBkZWYgYmxhbWVfc3Ry
aW5nKHNlbGYsIGJ1Z3MpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvY29tbWl0aW5mb191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21taXRpbmZvX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21t
aXRpbmZvX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIGltcG9y
dCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY29tbWl0aW5mbyBpbXBv
cnQgQ29tbWl0SW5mbwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1w
b3J0IENvbW1pdHRlckxpc3QsIENvbW1pdHRlciwgUmV2aWV3ZXIKIAorCiBjbGFzcyBDb21taXRJ
bmZvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jb21taXRfaW5mb19j
cmVhdGlvbihzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZm
X3BhcnNlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDExIEBAIGlt
cG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5kaWZmX3Rlc3Rf
ZGF0YSBpbXBvcnQgRElGRl9URVNUX0RBVEEKIAorCiBjbGFzcyBEaWZmUGFyc2VyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgbWF4RGlmZiA9IE5vbmUKIAotICAgIGRlZiB0ZXN0X2RpZmZf
cGFyc2VyKHNlbGYsIHBhcnNlciA9IE5vbmUpOgorICAgIGRlZiB0ZXN0X2RpZmZfcGFyc2VyKHNl
bGYsIHBhcnNlcj1Ob25lKToKICAgICAgICAgaWYgbm90IHBhcnNlcjoKICAgICAgICAgICAgIHBh
cnNlciA9IGRpZmZfcGFyc2VyLkRpZmZQYXJzZXIoRElGRl9URVNUX0RBVEEuc3BsaXRsaW5lcygp
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihwYXJzZXIuZmlsZXMpKQpAQCAtMTE4
LDExICsxMTksMTEgQEAgY2xhc3MgRGlmZlBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgICAgICBwID0gcmUuY29tcGlsZShyJyAoW2F8Yl0pLycpCiAKICAgICAgICAgcHJlZml4ZXMg
PSBbCi0gICAgICAgICAgICB7ICdhJyA6ICdpJywgJ2InIDogJ3cnIH0sICMgZ2l0LWRpZmYgKGNv
bXBhcmVzIHRoZSAoaSluZGV4IGFuZCB0aGUgKHcpb3JrIHRyZWUpCi0gICAgICAgICAgICB7ICdh
JyA6ICdjJywgJ2InIDogJ3cnIH0sICMgZ2l0LWRpZmYgSEVBRCAoY29tcGFyZXMgYSAoYylvbW1p
dCBhbmQgdGhlICh3KW9yayB0cmVlKQotICAgICAgICAgICAgeyAnYScgOiAnYycsICdiJyA6ICdp
JyB9LCAjIGdpdCBkaWZmIC0tY2FjaGVkIChjb21wYXJlcyBhIChjKW9tbWl0IGFuZCB0aGUgKGkp
bmRleCkKLSAgICAgICAgICAgIHsgJ2EnIDogJ28nLCAnYicgOiAndycgfSwgIyBnaXQtZGlmZiBI
RUFEOmZpbGUxIGZpbGUyIChjb21wYXJlcyBhbiAobyliamVjdCBhbmQgYSAodylvcmsgdHJlZSBl
bnRpdHkpCi0gICAgICAgICAgICB7ICdhJyA6ICcxJywgJ2InIDogJzInIH0sICMgZ2l0IGRpZmYg
LS1uby1pbmRleCBhIGIgKGNvbXBhcmVzIHR3byBub24tZ2l0IHRoaW5ncyAoMSkgYW5kICgyKSkK
KyAgICAgICAgICAgIHsnYSc6ICdpJywgJ2InOiAndyd9LCAgIyBnaXQtZGlmZiAoY29tcGFyZXMg
dGhlIChpKW5kZXggYW5kIHRoZSAodylvcmsgdHJlZSkKKyAgICAgICAgICAgIHsnYSc6ICdjJywg
J2InOiAndyd9LCAgIyBnaXQtZGlmZiBIRUFEIChjb21wYXJlcyBhIChjKW9tbWl0IGFuZCB0aGUg
KHcpb3JrIHRyZWUpCisgICAgICAgICAgICB7J2EnOiAnYycsICdiJzogJ2knfSwgICMgZ2l0IGRp
ZmYgLS1jYWNoZWQgKGNvbXBhcmVzIGEgKGMpb21taXQgYW5kIHRoZSAoaSluZGV4KQorICAgICAg
ICAgICAgeydhJzogJ28nLCAnYic6ICd3J30sICAjIGdpdC1kaWZmIEhFQUQ6ZmlsZTEgZmlsZTIg
KGNvbXBhcmVzIGFuIChvKWJqZWN0IGFuZCBhICh3KW9yayB0cmVlIGVudGl0eSkKKyAgICAgICAg
ICAgIHsnYSc6ICcxJywgJ2InOiAnMid9LCAgIyBnaXQgZGlmZiAtLW5vLWluZGV4IGEgYiAoY29t
cGFyZXMgdHdvIG5vbi1naXQgdGhpbmdzICgxKSBhbmQgKDIpKQogICAgICAgICBdCiAKICAgICAg
ICAgZm9yIHByZWZpeCBpbiBwcmVmaXhlczoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQkocmV2aXNpb24gMjAyMzI1KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkVycm9yKEV4Y2Vw
dGlvbik6CiAgICAgICAgIHNlbGYucHJvbXB0X2Zvcl9wYXNzd29yZCA9IHByb21wdF9mb3JfcGFz
c3dvcmQKIAogCi0KICMgU0NNIG1ldGhvZHMgYXJlIGV4cGVjdGVkIHRvIHJldHVybiBwYXRocyBy
ZWxhdGl2ZSB0byBzZWxmLmNoZWNrb3V0X3Jvb3QuCiBjbGFzcyBTQ006CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGN3ZCwgZXhlY3V0aXZlPU5vbmUsIGZpbGVzeXN0ZW09Tm9uZSk6CkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS9zY21fdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBk
YXRlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGVja291dCBpbXBvcnQgQ2hlY2tv
dXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0
ZXIgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKLWZyb20gd2Via2l0cHkuY29t
bW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudCAjIEZJWE1FOiBUaGlzIHNob3VsZCBu
b3QgYmUgbmVlZGVkCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0
dGFjaG1lbnQgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tG
aWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZQpAQCAtNzksNiArNzksNyBAQCBkZWYgZGVsZXRlX2NhY2hlZF9tb2Nr
X3JlcG9fYXRfZXhpdCgpOgogIyBFdmVudHVhbGx5IHdlIHdpbGwgd2FudCB0byB3cml0ZSB0ZXN0
cyB3aGljaCB3b3JrIGZvciBib3RoIHNjbXMuIChsaWtlIHVwZGF0ZV93ZWJraXQsIGNoYW5nZWRf
ZmlsZXMsIGV0Yy4pCiAjIFBlcmhhcHMgdGhyb3VnaCBzb21lIFNDTVRlc3QgYmFzZS1jbGFzcyB3
aGljaCBib3RoIFNWTlRlc3QgYW5kIEdpdFRlc3QgaW5oZXJpdCBmcm9tLgogCisKIGRlZiBydW5f
Y29tbWFuZCgqYXJncywgKiprd2FyZ3MpOgogICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBi
ZSBhIGdsb2JhbCBzdGF0aWMuCiAgICAgIyBOZXcgY29kZSBzaG91bGQgdXNlIEV4ZWN1dGl2ZS5y
dW5fY29tbWFuZCBkaXJlY3RseSBpbnN0ZWFkCkBAIC05MCw3ICs5MSw3IEBAIGRlZiBydW5fY29t
bWFuZCgqYXJncywgKiprd2FyZ3MpOgogZGVmIHJ1bl9zaWxlbnQoYXJncywgY3dkPU5vbmUpOgog
ICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3Vl
MjMyMAogICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0ZG91dD1zdWJwcm9j
ZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsIGN3ZD1jd2QpCi0gICAgcHJvY2Vzcy5j
b21tdW5pY2F0ZSgpICMgaWdub3JlIG91dHB1dAorICAgIHByb2Nlc3MuY29tbXVuaWNhdGUoKSAg
IyBpZ25vcmUgb3V0cHV0CiAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICBpZiBl
eGl0X2NvZGU6CiAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCdGYWlsZWQgdG8gcnVuICIlcyIg
IGV4aXRfY29kZTogJWQgIGN3ZDogJXMnICUgKGFyZ3MsIGV4aXRfY29kZSwgY3dkKSkKQEAgLTIz
NCw3ICsyMzUsNyBAQCBjbGFzcyBTVk5UZXN0UmVwb3NpdG9yeShvYmplY3QpOgogIyBGb3IgdGVz
dGluZyB0aGUgU0NNIGJhc2VjbGFzcyBkaXJlY3RseS4KIGNsYXNzIFNDTUNsYXNzVGVzdHModW5p
dHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5kZXZf
bnVsbCA9IG9wZW4ob3MuZGV2bnVsbCwgInciKSAjIFVzZWQgdG8gbWFrZSBvdXIgUG9wZW4gY2Fs
bHMgcXVpZXQuCisgICAgICAgIHNlbGYuZGV2X251bGwgPSBvcGVuKG9zLmRldm51bGwsICJ3Iikg
ICMgVXNlZCB0byBtYWtlIG91ciBQb3BlbiBjYWxscyBxdWlldC4KIAogICAgIGRlZiB0ZWFyRG93
bihzZWxmKToKICAgICAgICAgc2VsZi5kZXZfbnVsbC5jbG9zZSgpCkBAIC0yNTMsMTIgKzI1NCwx
MiBAQCBjbGFzcyBTQ01DbGFzc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHJ1bl9jb21tYW5kLCBbJ2dyZXAnLCAnYmFyJ10s
IGlucHV0PWlucHV0X3Byb2Nlc3Muc3Rkb3V0KQogCiAgICAgICAgICMgVGVzdCB3aGVuIHRoZSBy
dW5fY29tbWFuZCBwcm9jZXNzIGZhaWxzLgotICAgICAgICBpbnB1dF9wcm9jZXNzID0gc3VicHJv
Y2Vzcy5Qb3BlbihbJ2VjaG8nLCAnZm9vXG5iYXInXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwg
c3RkZXJyPXNlbGYuZGV2X251bGwpICMgZ3JlcCBzaG93cyB1c2FnZSBhbmQgY2FsbHMgZXhpdCgy
KSB3aGVuIGNhbGxlZCB3L28gYXJndW1lbnRzLgorICAgICAgICBpbnB1dF9wcm9jZXNzID0gc3Vi
cHJvY2Vzcy5Qb3BlbihbJ2VjaG8nLCAnZm9vXG5iYXInXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQ
RSwgc3RkZXJyPXNlbGYuZGV2X251bGwpICAjIGdyZXAgc2hvd3MgdXNhZ2UgYW5kIGNhbGxzIGV4
aXQoMikgd2hlbiBjYWxsZWQgdy9vIGFyZ3VtZW50cy4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoU2NyaXB0RXJyb3IsIHJ1bl9jb21tYW5kLCBjb21tYW5kX3JldHVybnNfbm9uX3plcm8sIGlu
cHV0PWlucHV0X3Byb2Nlc3Muc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfZXJyb3JfaGFuZGxlcnMo
c2VsZik6Ci0gICAgICAgIGdpdF9mYWlsdXJlX21lc3NhZ2U9Ik1lcmdlIGNvbmZsaWN0IGR1cmlu
ZyBjb21taXQ6IFlvdXIgZmlsZSBvciBkaXJlY3RvcnkgJ1dlYkNvcmUvQ2hhbmdlTG9nJyBpcyBw
cm9iYWJseSBvdXQtb2YtZGF0ZTogcmVzb3VyY2Ugb3V0IG9mIGRhdGU7IHRyeSB1cGRhdGluZyBh
dCAvdXNyL2xvY2FsL2xpYmV4ZWMvZ2l0LWNvcmUvL2dpdC1zdm4gbGluZSA0NjkiCi0gICAgICAg
IHN2bl9mYWlsdXJlX21lc3NhZ2U9IiIic3ZuOiBDb21taXQgZmFpbGVkIChkZXRhaWxzIGZvbGxv
dyk6CisgICAgICAgIGdpdF9mYWlsdXJlX21lc3NhZ2UgPSAiTWVyZ2UgY29uZmxpY3QgZHVyaW5n
IGNvbW1pdDogWW91ciBmaWxlIG9yIGRpcmVjdG9yeSAnV2ViQ29yZS9DaGFuZ2VMb2cnIGlzIHBy
b2JhYmx5IG91dC1vZi1kYXRlOiByZXNvdXJjZSBvdXQgb2YgZGF0ZTsgdHJ5IHVwZGF0aW5nIGF0
IC91c3IvbG9jYWwvbGliZXhlYy9naXQtY29yZS8vZ2l0LXN2biBsaW5lIDQ2OSIKKyAgICAgICAg
c3ZuX2ZhaWx1cmVfbWVzc2FnZSA9ICIiInN2bjogQ29tbWl0IGZhaWxlZCAoZGV0YWlscyBmb2xs
b3cpOgogc3ZuOiBGaWxlIG9yIGRpcmVjdG9yeSAnQ2hhbmdlTG9nJyBpcyBvdXQgb2YgZGF0ZTsg
dHJ5IHVwZGF0aW5nCiBzdm46IHJlc291cmNlIG91dCBvZiBkYXRlOyB0cnkgdXBkYXRpbmcKICIi
IgpAQCAtNjk2LDcgKzY5Nyw3IEBAIGNsYXNzIFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNj
cmlwdHNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnN2bl9jaGVja291dF9wYXRoLCAnVG9vbHMn
LCAnU2NyaXB0cycpCiAgICAgICAgIG9zLm1ha2VkaXJzKHNjcmlwdHNfcGF0aCkKICAgICAgICAg
Y3JlYXRlX3BhdGNoX3BhdGggPSBvcy5wYXRoLmpvaW4oc2NyaXB0c19wYXRoLCAnc3ZuLWNyZWF0
ZS1wYXRjaCcpCi0gICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKGNyZWF0ZV9wYXRjaF9w
YXRoLCAnIyEvYmluL3NoXG5lY2hvICRQV0QnKSAjIFdlIGNvdWxkIHBhc3MgLW4gdG8gcHJldmVu
dCB0aGUgXG4sIGJ1dCBub3QgYWxsIGVjaG8gYWNjZXB0IC1uLgorICAgICAgICB3cml0ZV9pbnRv
X2ZpbGVfYXRfcGF0aChjcmVhdGVfcGF0Y2hfcGF0aCwgJyMhL2Jpbi9zaFxuZWNobyAkUFdEJykg
ICMgV2UgY291bGQgcGFzcyAtbiB0byBwcmV2ZW50IHRoZSBcbiwgYnV0IG5vdCBhbGwgZWNobyBh
Y2NlcHQgLW4uCiAgICAgICAgIG9zLmNobW9kKGNyZWF0ZV9wYXRjaF9wYXRoLCBzdGF0LlNfSVhV
U1IgfCBzdGF0LlNfSVJVU1IpCiAKICAgICAgICAgIyBDaGFuZ2UgaW50byBvdXIgdGVzdCBkaXJl
Y3RvcnkgYW5kIHJ1biB0aGUgY3JlYXRlX3BhdGNoIGNvbW1hbmQuCkBAIC03MDUsNyArNzA2LDcg
QEAgY2xhc3MgU1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20u
Y2hlY2tvdXRfcm9vdCwgc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkgIyBTYW5pdHkgY2hlY2sgdGhh
dCBkZXRlY3Rpb24gd29ya2VkIHJpZ2h0LgogICAgICAgICBwYXRjaF9jb250ZW50cyA9IHNjbS5j
cmVhdGVfcGF0Y2goKQogICAgICAgICAjIE91ciBmYWtlICdzdm4tY3JlYXRlLXBhdGNoJyByZXR1
cm5zICRQV0QgaW5zdGVhZCBvZiBhIHBhdGNoLCBjaGVjayB0aGF0IGl0IHdhcyBleGVjdXRlZCBm
cm9tIHRoZSByb290IG9mIHRoZSByZXBvLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIlc1xu
IiAlIG9zLnBhdGgucmVhbHBhdGgoc2NtLmNoZWNrb3V0X3Jvb3QpLCBwYXRjaF9jb250ZW50cykg
IyBBZGQgYSBcbiBiZWNhdXNlIGVjaG8gYWRkcyBhIFxuLgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCIlc1xuIiAlIG9zLnBhdGgucmVhbHBhdGgoc2NtLmNoZWNrb3V0X3Jvb3QpLCBwYXRjaF9j
b250ZW50cykgICMgQWRkIGEgXG4gYmVjYXVzZSBlY2hvIGFkZHMgYSBcbi4KIAogICAgIGRlZiB0
ZXN0X2RldGVjdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5k
aXNwbGF5X25hbWUoKSwgInN2biIpCkBAIC05NTcsNiArOTU4LDcgQEAgRU5ECiAgICAgZGVmIHRl
c3RfZXhpc3RzKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9leGlzdHMoc2VsZi5z
Y20sIHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UpCiAKKwogY2xhc3MgR2l0VGVzdChTQ01U
ZXN0KToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTExNzMsNyArMTE3NSw3IEBAIGNsYXNz
IEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NvbW1p
dCcsICctYScsICctbScsICdjb21taXQgdG8gYmUgdGhyb3duIGF3YXkgYnkgcmViYXNlIGFib3J0
J10pCiAKICAgICAgICAgIyAtLXF1aWV0IGRvZXNuJ3QgbWFrZSBnaXQgc3ZuIHNpbGVudCwgc28g
dXNlIHJ1bl9zaWxlbnQgdG8gcmVkaXJlY3Qgb3V0cHV0Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFNjcmlwdEVycm9yLCBydW5fc2lsZW50LCBbJ2dpdCcsICdzdm4nLCAnLS1xdWlldCcsICdy
ZWJhc2UnXSkgIyBXaWxsIGZhaWwgZHVlIHRvIGEgY29uZmxpY3QgbGVhdmluZyB1cyBtaWQtcmVi
YXNlLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgcnVuX3NpbGVudCwg
WydnaXQnLCAnc3ZuJywgJy0tcXVpZXQnLCAncmViYXNlJ10pICAjIFdpbGwgZmFpbCBkdWUgdG8g
YSBjb25mbGljdCBsZWF2aW5nIHVzIG1pZC1yZWJhc2UuCiAKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHNlbGYuc2NtLnJlYmFzZV9pbl9wcm9ncmVzcygpKQogCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVyc191bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVyc191bml0
dGVzdC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY29uZmlnL2NvbW1pdHRlcnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNv
bW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIENvbnRyaWJ1dG9yLCBDb21taXR0ZXIsIFJl
dmlld2VyCiAKKwogY2xhc3MgQ29tbWl0dGVyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiB0ZXN0X2NvbW1pdHRlcl9sb29rdXAoc2VsZik6CiAgICAgICAgIGNvbW1pdHRlciA9IENv
bW1pdHRlcignVGVzdCBPbmUnLCAnb25lQHRlc3QuY29tJywgJ29uZScpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvaXJjLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9pcmMucHkJKHJldmlzaW9uIDIwMjMyNSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9pcmMucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
LXNlcnZlcj0iaXJjLmZyZWVub2RlLm5ldCIKLXBvcnQ9NjY2NQotY2hhbm5lbD0iI3dlYmtpdCIK
K3NlcnZlciA9ICJpcmMuZnJlZW5vZGUubmV0IgorcG9ydCA9IDY2NjUKK2NoYW5uZWwgPSAiI3dl
YmtpdCIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9y
dHMucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NvbmZpZy9wb3J0cy5weQkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw3IEBAIGNsYXNz
IElPU1NpbXVsYXRvcldLMlBvcnQoRGVwcmVjYXRlZFBvcnQKICAgICAgICAgY29tbWFuZC5hcHBl
bmQoIi0taW9zLXNpbXVsYXRvciIpCiAgICAgICAgIHJldHVybiBjb21tYW5kCiAKKwogY2xhc3Mg
TWFjUG9ydChEZXByZWNhdGVkUG9ydCk6CiAgICAgcG9ydF9mbGFnX25hbWUgPSAibWFjIgogCkBA
IC0xNTQsNiArMTU1LDcgQEAgY2xhc3MgTWFjUG9ydChEZXByZWNhdGVkUG9ydCk6CiAgICAgICAg
IGNvbW1hbmQuYXBwZW5kKCItLWR1bXAtcmVuZGVyLXRyZWUiKQogICAgICAgICByZXR1cm4gY29t
bWFuZAogCisKIGNsYXNzIE1hY1dLMlBvcnQoRGVwcmVjYXRlZFBvcnQpOgogICAgIHBvcnRfZmxh
Z19uYW1lID0gIm1hYy13azIiCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NvbmZpZy9wb3J0c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjMyNSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0c191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKICMgbWV0OgotIyAKKyMKICMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0x
Myw3ICsxMyw3IEBACiAjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKICMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCisjCiAjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
ICMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKICMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvdXJscy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jb25maWcvdXJscy5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTU2
LDYgKzU2LDcgQEAgc3ZuX3NlcnZlcl9yZWFsbSA9ICI8aHR0cDovL3N2bi53ZWJraXQubwogCiBz
dGF0dXNzZXJ2ZXJfZGVmYXVsdF9ob3N0ID0gIndlYmtpdC1xdWV1ZXMud2Via2l0Lm9yZyIKIAor
CiBkZWYgcGFyc2VfYnVnX2lkKHN0cmluZyk6CiAgICAgaWYgbm90IHN0cmluZzoKICAgICAgICAg
cmV0dXJuIE5vbmUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVk
ZW50aWFsc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjMyNSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHBhc3N3b3JkOiAiU0VDUkVUU0FV
Q0UiCiAgICAgICAgICMgRklYTUU6IFRoaXMgdGVzdCB3b24ndCB3b3JrIGlmIHRoZSB1c2VyIGhh
cyBhIGNyZWRlbnRpYWwgZm9yIGZvby5leGFtcGxlLmNvbSEKICAgICAgICAgY3JlZGVudGlhbHMg
PSBDcmVkZW50aWFscygiZm9vLmV4YW1wbGUuY29tIikKICAgICAgICAgaWYgbm90IGNyZWRlbnRp
YWxzLl9pc19tYWNfb3NfeCgpOgotICAgICAgICAgICAgcmV0dXJuICMgVGhpcyB0ZXN0IGRvZXMg
bm90IHJ1biBvbiBhIG5vbi1NYWMuCisgICAgICAgICAgICByZXR1cm4gICMgVGhpcyB0ZXN0IGRv
ZXMgbm90IHJ1biBvbiBhIG5vbi1NYWMuCiAKICAgICAgICAgIyBOb3RlLCB3ZSBpZ25vcmUgdGhl
IGNhcHR1cmVkIG91dHB1dCBiZWNhdXNlIGl0IGlzIGFscmVhZHkgY292ZXJlZAogICAgICAgICAj
IGJ5IHRoZSB0ZXN0IGNhc2UgQ3JlZGVudGlhbHNUZXN0Ll9hc3NlcnRfc2VjdXJpdHlfY2FsbCAo
YmVsb3cpLgpAQCAtMTU4LDcgKzE1OCw2IEBAIHBhc3N3b3JkOiAiU0VDUkVUU0FVQ0UiCiAgICAg
ICAgICAgICAjIGNyZWRlbnRpYWwgc291cmNlIGNvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoZSB1c2Vy
J3MgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWRlbnRpYWxz
LnJlYWRfY3JlZGVudGlhbHMoKSwgKCJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VDUkVUU0FVQ0UiKSkK
IAotCiAgICAgZGVmIHRlc3Rfa2V5cmluZ193aXRob3V0X2dpdF9yZXBvKHNlbGYpOgogICAgICAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCBzaGFyZSBtb3JlIGNvZGUgd2l0aCB0ZXN0X3JlYWRfY3Jl
ZGVudGlhbHNfd2l0aG91dF9naXRfcmVwbwogICAgICAgICBjbGFzcyBNb2NrS2V5cmluZyhvYmpl
Y3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L25ldHdvcmt0cmFu
c2FjdGlvbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIz
MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0
aW9uX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CiAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKKyMK
ICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTgyLDcgKzgyLDcg
QEAgY2xhc3MgTmV0d29ya1RyYW5zYWN0aW9uVGVzdChMb2dnaW5nVGVzdAogCiAgICAgZGVmIHRl
c3RfdGltZW91dChzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NvdW50ID0gMAotICAgICAgICB0
cmFuc2FjdGlvbiA9IE5ldHdvcmtUcmFuc2FjdGlvbihpbml0aWFsX2JhY2tvZmZfc2Vjb25kcz02
MCo2MCwgdGltZW91dF9zZWNvbmRzPTYwKQorICAgICAgICB0cmFuc2FjdGlvbiA9IE5ldHdvcmtU
cmFuc2FjdGlvbihpbml0aWFsX2JhY2tvZmZfc2Vjb25kcz02MCAqIDYwLCB0aW1lb3V0X3NlY29u
ZHM9NjApCiAgICAgICAgIGRpZF9wcm9jZXNzX2V4Y2VwdGlvbiA9IEZhbHNlCiAgICAgICAgIGRp
ZF90aHJvd19leGNlcHRpb24gPSBUcnVlCiAgICAgICAgIHRyeToKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weQkocmV2aXNpb24g
MjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZl
ci5weQkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIAorIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKKyMKICMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkJKHJl
dmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS9idWd6aWxsYS5weQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBpbXBvcnQg
U3RyaW5nSU8KIGltcG9ydCBzb2NrZXQKIGltcG9ydCB1cmxsaWIKIAotZnJvbSBkYXRldGltZSBp
bXBvcnQgZGF0ZXRpbWUgIyB1c2VkIGluIHRpbWVzdGFtcCgpCitmcm9tIGRhdGV0aW1lIGltcG9y
dCBkYXRldGltZSAgIyB1c2VkIGluIHRpbWVzdGFtcCgpCiAKIGZyb20gLmF0dGFjaG1lbnQgaW1w
b3J0IEF0dGFjaG1lbnQKIGZyb20gLmJ1ZyBpbXBvcnQgQnVnCkBAIC0yOTEsNiArMjkxLDcgQEAg
Y2xhc3MgQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6CiAgICAgICAgIHJlc3VsdHNfcGFnZSA9IHNl
bGYuX2xvYWRfcXVlcnkocmV2aWV3X3F1ZXVlX3VybCkKICAgICAgICAgcmV0dXJuIGJvb2wocmUu
c2VhcmNoKCJkaWQgbm90IG1hdGNoIGFueXRoaW5nIiwgcmVzdWx0c19wYWdlLnJlYWQoKSkpCiAK
KwogY2xhc3MgQ29tbWl0UXVldWVGbGFnKG9iamVjdCk6CiAgICAgbWFya19mb3Jfbm90aGluZyA9
IDAKICAgICBtYXJrX2Zvcl9jb21taXRfcXVldWUgPSAxCkBAIC01MTUsNyArNTE2LDcgQEAgY2xh
c3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgZm9yIGF0dGFjaG1lbnQgaW4gYXR0YWNobWVu
dHM6CiAgICAgICAgICAgICBpZiBhdHRhY2htZW50LmlkKCkgPT0gaW50KGF0dGFjaG1lbnRfaWQp
OgogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50Ci0gICAgICAgIHJldHVybiBOb25l
ICMgVGhpcyBzaG91bGQgbmV2ZXIgYmUgaGl0LgorICAgICAgICByZXR1cm4gTm9uZSAgIyBUaGlz
IHNob3VsZCBuZXZlciBiZSBoaXQuCiAKICAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYpOgogICAg
ICAgICBpZiBzZWxmLmF1dGhlbnRpY2F0ZWQ6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDE4ICs2OCwxOCBAQCBjbGFzcyBCdWd6aWxsYVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogJycn
CiAgICAgX2V4cGVjdGVkX2V4YW1wbGVfYXR0YWNobWVudF9wYXJzaW5nID0gewogICAgICAgICAn
YXR0YWNoX2RhdGUnOiBkYXRldGltZS5kYXRldGltZSgyMDA5LCAwNywgMjksIDEwLCAyMyksCi0g
ICAgICAgICdidWdfaWQnIDogMTAwLAotICAgICAgICAnaXNfb2Jzb2xldGUnIDogVHJ1ZSwKLSAg
ICAgICAgJ2lzX3BhdGNoJyA6IFRydWUsCi0gICAgICAgICdpZCcgOiAzMzcyMSwKLSAgICAgICAg
J3VybCcgOiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MzM3MjEi
LAotICAgICAgICAnbmFtZScgOiAiRml4ZWQgd2hpdGVzcGFjZSBpc3N1ZSIsCi0gICAgICAgICd0
eXBlJyA6ICJ0ZXh0L3BsYWluIiwKLSAgICAgICAgJ3JldmlldycgOiAnKycsCi0gICAgICAgICdy
ZXZpZXdlcl9lbWFpbCcgOiAnb25lQHRlc3QuY29tJywKLSAgICAgICAgJ2NvbW1pdC1xdWV1ZScg
OiAnKycsCi0gICAgICAgICdjb21taXR0ZXJfZW1haWwnIDogJ3R3b0B0ZXN0LmNvbScsCi0gICAg
ICAgICdhdHRhY2hlcl9lbWFpbCcgOiAnY2hyaXN0aWFuLnBsZXNuZXIuaGFuc2VuQGdtYWlsLmNv
bScsCisgICAgICAgICdidWdfaWQnOiAxMDAsCisgICAgICAgICdpc19vYnNvbGV0ZSc6IFRydWUs
CisgICAgICAgICdpc19wYXRjaCc6IFRydWUsCisgICAgICAgICdpZCc6IDMzNzIxLAorICAgICAg
ICAndXJsJzogImh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTMzNzIx
IiwKKyAgICAgICAgJ25hbWUnOiAiRml4ZWQgd2hpdGVzcGFjZSBpc3N1ZSIsCisgICAgICAgICd0
eXBlJzogInRleHQvcGxhaW4iLAorICAgICAgICAncmV2aWV3JzogJysnLAorICAgICAgICAncmV2
aWV3ZXJfZW1haWwnOiAnb25lQHRlc3QuY29tJywKKyAgICAgICAgJ2NvbW1pdC1xdWV1ZSc6ICcr
JywKKyAgICAgICAgJ2NvbW1pdHRlcl9lbWFpbCc6ICd0d29AdGVzdC5jb20nLAorICAgICAgICAn
YXR0YWNoZXJfZW1haWwnOiAnY2hyaXN0aWFuLnBsZXNuZXIuaGFuc2VuQGdtYWlsLmNvbScsCiAg
ICAgfQogCiAgICAgZGVmIHRlc3RfdXJsX2NyZWF0aW9uKHNlbGYpOgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdC5w
eQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1aWxkYm90L2J1aWxkYm90LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGNs
YXNzIEJ1aWxkZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcmV2aXNpb25fdG9fYnVpbGRfbnVt
YmVyID0gTm9uZQogICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxl
ZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKICAgICAgICAgc2VsZi5fYnJvd3NlciA9IEJyb3dz
ZXIoKQotICAgICAgICBzZWxmLl9icm93c2VyLnNldF9oYW5kbGVfcm9ib3RzKEZhbHNlKSAjIFRo
ZSBidWlsZGVyIHBhZ2VzIGFyZSBleGNsdWRlZCBieSByb2JvdHMudHh0CisgICAgICAgIHNlbGYu
X2Jyb3dzZXIuc2V0X2hhbmRsZV9yb2JvdHMoRmFsc2UpICAjIFRoZSBidWlsZGVyIHBhZ2VzIGFy
ZSBleGNsdWRlZCBieSByb2JvdHMudHh0CiAKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYuX25hbWUKQEAgLTMyNCw3ICszMjQsNyBAQCBjbGFzcyBCdWlsZEJvdChvYmpl
Y3QpOgogCiAgICAgZGVmIF9wYXJzZV9jdXJyZW50X2J1aWxkX2NlbGwoc2VsZiwgYnVpbGRlciwg
Y2VsbCk6CiAgICAgICAgIGFjdGl2aXR5X2xpbmVzID0gY2VsbC5yZW5kZXJDb250ZW50cygpLnNw
bGl0KCI8YnIgLz4iKQotICAgICAgICBidWlsZGVyWyJhY3Rpdml0eSJdID0gYWN0aXZpdHlfbGlu
ZXNbMF0gIyBub3JtYWxseSAiYnVpbGRpbmciIG9yICJpZGxlIgorICAgICAgICBidWlsZGVyWyJh
Y3Rpdml0eSJdID0gYWN0aXZpdHlfbGluZXNbMF0gICMgbm9ybWFsbHkgImJ1aWxkaW5nIiBvciAi
aWRsZSIKICAgICAgICAgIyBUaGUgbWlkZGxlIGxpbmVzIGRvY3VtZW50IGhvdyBsb25nIGxlZnQg
Zm9yIGFueSBjdXJyZW50IGJ1aWxkcy4KICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgiKD9QPHBl
bmRpbmdfYnVpbGRzPlxkKSBwZW5kaW5nIiwgYWN0aXZpdHlfbGluZXNbLTFdKQogICAgICAgICBi
dWlsZGVyWyJwZW5kaW5nX2J1aWxkcyJdID0gaW50KG1hdGNoLmdyb3VwKCJwZW5kaW5nX2J1aWxk
cyIpKSBpZiBtYXRjaCBlbHNlIDAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5CShyZXZpc2lv
biAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3Qv
YnVpbGRib3RfbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBN
b2NrQnVpbGQob2JqZWN0KToKICAgICAgICAgc2VsZi5fcmV2aXNpb24gPSByZXZpc2lvbgogICAg
ICAgICBzZWxmLl9pc19ncmVlbiA9IGlzX2dyZWVuCiAKKwogY2xhc3MgTW9ja0J1aWxkZXIob2Jq
ZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CiAgICAgICAgIHNlbGYuX25hbWUg
PSBuYW1lCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3Qv
YnVpbGRib3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIz
MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRib3QvYnVpbGRi
b3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgQnVp
bGRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgKQogICAgICAgICAgICAg
cmVzdWx0cyA9IFtzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0KHRlc3RuYW1lKSBmb3IgdGVzdG5hbWUg
aW4gZmFpbHVyZShidWlsZF9udW1iZXIpXQogICAgICAgICAgICAgbGF5b3V0X3Rlc3RfcmVzdWx0
cyA9IExheW91dFRlc3RSZXN1bHRzKHRlc3RfcmVzdWx0cz1yZXN1bHRzLCBkaWRfZXhjZWVkX3Rl
c3RfZmFpbHVyZV9saW1pdD1GYWxzZSkKKwogICAgICAgICAgICAgZGVmIG1vY2tfbGF5b3V0X3Rl
c3RfcmVzdWx0cygpOgogICAgICAgICAgICAgICAgIHJldHVybiBsYXlvdXRfdGVzdF9yZXN1bHRz
CiAgICAgICAgICAgICBidWlsZC5sYXlvdXRfdGVzdF9yZXN1bHRzID0gbW9ja19sYXlvdXRfdGVz
dF9yZXN1bHRzCkBAIC0xMTgsOCArMTE5LDggQEAgY2xhc3MgQnVpbGRlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYnVpbGRfYW5kX3JldmlzaW9uX2Zvcl9maWxlbmFt
ZShzZWxmKToKICAgICAgICAgZXhwZWN0YXRpb25zID0gewotICAgICAgICAgICAgInI0NzQ4MyAo
MSkvIiA6ICg0NzQ4MywgMSksCi0gICAgICAgICAgICAicjQ3NDgzICgxKS56aXAiIDogKDQ3NDgz
LCAxKSwKKyAgICAgICAgICAgICJyNDc0ODMgKDEpLyI6ICg0NzQ4MywgMSksCisgICAgICAgICAg
ICAicjQ3NDgzICgxKS56aXAiOiAoNDc0ODMsIDEpLAogICAgICAgICAgICAgInJhbmRvbSBqdW5r
IjogTm9uZSwKICAgICAgICAgfQogICAgICAgICBmb3IgZmlsZW5hbWUsIHJldmlzaW9uX2FuZF9i
dWlsZCBpbiBleHBlY3RhdGlvbnMuaXRlbXMoKToKQEAgLTE4Niw3ICsxODcsNyBAQCBjbGFzcyBC
dWlsZEJvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIF9leHBlY3RlZF9leGFtcGxlX29u
ZV9ib3hfcGFyc2luZ3MgPSBbCiAgICAgICAgIHsKICAgICAgICAgICAgICdpc19ncmVlbic6IFRy
dWUsCi0gICAgICAgICAgICAnYnVpbGRfbnVtYmVyJyA6IDM2OTMsCisgICAgICAgICAgICAnYnVp
bGRfbnVtYmVyJzogMzY5MywKICAgICAgICAgICAgICduYW1lJzogdSdXaW5kb3dzIERlYnVnIChU
ZXN0cyknLAogICAgICAgICAgICAgJ2J1aWx0X3JldmlzaW9uJzogNDczODAsCiAgICAgICAgICAg
ICAnYWN0aXZpdHknOiAnYnVpbGRpbmcnLApAQCAtMTk0LDcgKzE5NSw3IEBAIGNsYXNzIEJ1aWxk
Qm90VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAg
ICAgICAgICdpc19ncmVlbic6IEZhbHNlLAotICAgICAgICAgICAgJ2J1aWxkX251bWJlcicgOiBO
b25lLAorICAgICAgICAgICAgJ2J1aWxkX251bWJlcic6IE5vbmUsCiAgICAgICAgICAgICAnbmFt
ZSc6IHUnU25vd0xlb3BhcmQgSW50ZWwgUmVsZWFzZScsCiAgICAgICAgICAgICAnYnVpbHRfcmV2
aXNpb24nOiBOb25lLAogICAgICAgICAgICAgJ2FjdGl2aXR5JzogJ2J1aWxkaW5nJywKQEAgLTIw
Miw3ICsyMDMsNyBAQCBjbGFzcyBCdWlsZEJvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAnaXNfZ3JlZW4nOiBGYWxzZSwKLSAgICAg
ICAgICAgICdidWlsZF9udW1iZXInIDogNjU0LAorICAgICAgICAgICAgJ2J1aWxkX251bWJlcic6
IDY1NCwKICAgICAgICAgICAgICduYW1lJzogdSdRdCBMaW51eCBSZWxlYXNlJywKICAgICAgICAg
ICAgICdidWlsdF9yZXZpc2lvbic6IDQ3MzgzLAogICAgICAgICAgICAgJ2FjdGl2aXR5JzogJ2lk
bGUnLApAQCAtMjEwLDcgKzIxMSw3IEBAIGNsYXNzIEJ1aWxkQm90VGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICdpc19ncmVlbic6IFRy
dWUsCi0gICAgICAgICAgICAnYnVpbGRfbnVtYmVyJyA6IDIwOTAsCisgICAgICAgICAgICAnYnVp
bGRfbnVtYmVyJzogMjA5MCwKICAgICAgICAgICAgICduYW1lJzogdSdRdCBXaW5kb3dzIDMyLWJp
dCBEZWJ1ZycsCiAgICAgICAgICAgICAnYnVpbHRfcmV2aXNpb24nOiA2MDU2MywKICAgICAgICAg
ICAgICdhY3Rpdml0eSc6ICdidWlsZGluZycsCkBAIC0yNTAsMTAgKzI1MSwxMCBAQCBjbGFzcyBC
dWlsZEJvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgbW9ja19mZXRjaF9i
dWlsZF9kaWN0aW9uYXJ5KHNlbGYsIGJ1aWxkX251bWJlcik6CiAgICAgICAgICAgICBidWlsZF9k
aWN0aW9uYXJ5ID0gewogICAgICAgICAgICAgICAgICJzb3VyY2VTdGFtcCI6IHsKLSAgICAgICAg
ICAgICAgICAgICAgInJldmlzaW9uIiA6IDIgKiBidWlsZF9udW1iZXIsCisgICAgICAgICAgICAg
ICAgICAgICJyZXZpc2lvbiI6IDIgKiBidWlsZF9udW1iZXIsCiAgICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgIm51bWJlciIgOiBpbnQoYnVpbGRfbnVtYmVyKSwKLSAgICAg
ICAgICAgICAgICAicmVzdWx0cyIgOiBidWlsZF9udW1iZXIgJSAyLCAjIDAgbWVhbnMgcGFzcwor
ICAgICAgICAgICAgICAgICJudW1iZXIiOiBpbnQoYnVpbGRfbnVtYmVyKSwKKyAgICAgICAgICAg
ICAgICAicmVzdWx0cyI6IGJ1aWxkX251bWJlciAlIDIsICAjIDAgbWVhbnMgcGFzcwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkX2RpY3Rpb25hcnkKICAgICAgICAgYnVp
bGRib3QuX2ZldGNoX2J1aWxkX2RpY3Rpb25hcnkgPSBtb2NrX2ZldGNoX2J1aWxkX2RpY3Rpb25h
cnkKQEAgLTI5OSwxNiArMzAwLDE2IEBAIGNsYXNzIEJ1aWxkQm90VGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAnJycKICAgICBfZXhwZWN0ZWRfZmlsZXMgPSBbCiAgICAgICAgIHsKLSAgICAgICAg
ICAgICJmaWxlbmFtZSIgOiAicjQ3NDgzICgxKS8iLAotICAgICAgICAgICAgInNpemUiIDogIiIs
Ci0gICAgICAgICAgICAidHlwZSIgOiAiW0RpcmVjdG9yeV0iLAotICAgICAgICAgICAgImVuY29k
aW5nIiA6ICIiLAorICAgICAgICAgICAgImZpbGVuYW1lIjogInI0NzQ4MyAoMSkvIiwKKyAgICAg
ICAgICAgICJzaXplIjogIiIsCisgICAgICAgICAgICAidHlwZSI6ICJbRGlyZWN0b3J5XSIsCisg
ICAgICAgICAgICAiZW5jb2RpbmciOiAiIiwKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAg
ICAgICAgImZpbGVuYW1lIiA6ICJyNDc0ODQgKDIpLnppcCIsCi0gICAgICAgICAgICAic2l6ZSIg
OiAiODlLIiwKLSAgICAgICAgICAgICJ0eXBlIiA6ICJbYXBwbGljYXRpb24vemlwXSIsCi0gICAg
ICAgICAgICAiZW5jb2RpbmciIDogIiIsCisgICAgICAgICAgICAiZmlsZW5hbWUiOiAicjQ3NDg0
ICgyKS56aXAiLAorICAgICAgICAgICAgInNpemUiOiAiODlLIiwKKyAgICAgICAgICAgICJ0eXBl
IjogIlthcHBsaWNhdGlvbi96aXBdIiwKKyAgICAgICAgICAgICJlbmNvZGluZyI6ICIiLAogICAg
ICAgICB9LAogICAgIF0KIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2lyYy9pcmNwcm94eV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY3Byb3h5X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIz
MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY3Byb3h5X3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIyAKKyMKICMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTMyLDYgKzMyLDcgQEAgZnJv
bSB3ZWJraXRweS5jb21tb24ubmV0LmlyYy5pcmNwcm94eSBpbQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0
cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKKwogY2xhc3MgSVJDUHJveHlUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF90cml2aWFsKHNlbGYpOgogICAgICAgICBk
ZWYgZnVuKCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYXV0
b2luc3RhbGwucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2F1dG9pbnN0YWxsLnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYXV0b2luc3RhbGwucHkJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDYgKzUzLDcgQEAgX1BZUElfRU5WX1ZBUiA9ICdQWVBJX01JUlJPUlMnCiBfU09VUkNFRk9S
R0VfRU5WX1ZBUiA9ICdTT1VSQ0VGT1JHRV9NSVJST1JTJwogX0NBQ0hFX0VOVl9WQVIgPSAnTE9D
QUxfQVVUT0lOU1RBTExfQ0FDSEUnCiAKKwogY2xhc3MgQXV0b0luc3RhbGxlcihvYmplY3QpOgog
CiAgICAgIiIiU3VwcG9ydHMgYXV0b21hdGljYWxseSBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdl
cyBmcm9tIGFuIFVSTC4KQEAgLTM4Miw3ICszODMsNyBAQCBjbGFzcyBBdXRvSW5zdGFsbGVyKG9i
amVjdCk6CiAgICAgICAgIGlmIG5vdCAyMDAgPD0gY29kZSA8IDMwMDoKICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIkhUVFAgRXJyb3IgY29kZSAlcyIgJSBjb2RlKQogCi0gICAgICAgIEJV
RlNJWkUgPSAyKioxMyAgIyA4S0IKKyAgICAgICAgQlVGU0laRSA9IDIgKiogMTMgICMgOEtCCiAg
ICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBkYXRhID0gbmV0c3RyZWFtLnJlYWQoQlVG
U0laRSkKICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
IGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2MKICMgTmVlZGVkIHRvIHN1
cHBvcnQgV2luZG93cyBwb3J0IHRlc3RzCiBmcm9tIHdlYmtpdHB5LnBvcnQud2luIGltcG9ydCBX
aW5Qb3J0CiAKKwogZGVmIG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKHByb2Nlc3NfbmFt
ZSwgcGlkKToKICAgICByZXR1cm4gIiIiUHJvY2VzczogICAgICAgICB7cHJvY2Vzc19uYW1lfSBb
e3BpZH1dCiBQYXRoOiAgICAgICAgICAgIC9Wb2x1bWVzL0RhdGEvc2xhdmUvc25vd2xlb3BhcmQt
aW50ZWwtcmVsZWFzZS10ZXN0cy9idWlsZC9XZWJLaXRCdWlsZC9SZWxlYXNlL3twcm9jZXNzX25h
bWV9CkBAIC0yMzIsNiArMjMzLDcgQEAgRm9sbG93dXA6IE1hY2hpbmVPd25lcgogcXVpdDoKICIi
Ii5mb3JtYXQocHJvY2Vzc19uYW1lPXByb2Nlc3NfbmFtZSwgcGlkPXBpZCkKIAorCiBjbGFzcyBD
cmFzaExvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY3JlYXRlX2NyYXNoX2xv
Z3NfZGFyd2luKHNlbGYpOgogICAgICAgICBpZiBub3QgU3lzdGVtSG9zdCgpLnBsYXRmb3JtLmlz
X21hYygpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1
dGl2ZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZXhlY3V0aXZlLnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw3IEBAIGNsYXNzIFNjcmlwdEVycm9yKEV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgbWVz
c2FnZSArPSAiIGN3ZDogJXMiICUgY3dkCiAKICAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNl
bGYsIG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuc2NyaXB0X2FyZ3MgPSBzY3JpcHRfYXJncyAjICdh
cmdzJyBpcyBhbHJlYWR5IHVzZWQgYnkgRXhjZXB0aW9uCisgICAgICAgIHNlbGYuc2NyaXB0X2Fy
Z3MgPSBzY3JpcHRfYXJncyAgIyAnYXJncycgaXMgYWxyZWFkeSB1c2VkIGJ5IEV4Y2VwdGlvbgog
ICAgICAgICBzZWxmLmV4aXRfY29kZSA9IGV4aXRfY29kZQogICAgICAgICBzZWxmLm91dHB1dCA9
IG91dHB1dAogICAgICAgICBzZWxmLmN3ZCA9IGN3ZApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQkocmV2aXNp
b24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1
dGl2ZV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIE1vY2tQ
cm9jZXNzKG9iamVjdCk6CiAgICAgZGVmIGNvbW11bmljYXRlKHNlbGYsIGlucHV0PU5vbmUpOgog
ICAgICAgICByZXR1cm4gKHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycikKIAorCiAjIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSB1bmlmaWVkIHdpdGggTW9ja0V4ZWN1dGl2ZTIKIGNsYXNzIE1vY2tFeGVj
dXRpdmUob2JqZWN0KToKICAgICBQSVBFID0gIk1PQ0sgUElQRSIKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0
dGVzdC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNjMsNiAr
NjMsNyBAQCBjbGFzcyBTY3JpcHRFcnJvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpCiAgICAgICAg
IGVycm9yID0gU2NyaXB0RXJyb3IoJycsICgnbXknLCAnY29tbWFuZCcpLCAtMSwgJ015IG91dHB1
dC4nLCAnL1VzZXJzL3VzZXJuYW1lL2JsYWgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVy
cm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSwgJ0ZhaWxlZCB0byBydW4gIihcJ215XCcsIFwnY29t
bWFuZFwnKSIgZXhpdF9jb2RlOiAtMSBjd2Q6IC9Vc2Vycy91c2VybmFtZS9ibGFoXG5cbk15IG91
dHB1dC4nKQogCisKIGRlZiBuZXZlcl9lbmRpbmdfY29tbWFuZCgpOgogICAgICIiIkFyZ3VtZW50
cyBmb3IgYSBjb21tYW5kIHRoYXQgd2lsbCBuZXZlciBlbmQgKHVzZWZ1bCBmb3IgdGVzdGluZyBw
cm9jZXNzCiAgICAga2lsbGluZykuIEl0IHNob3VsZCBiZSBhIHByb2Nlc3MgdGhhdCBpcyB1bmxp
a2VseSB0byBhbHJlYWR5IGJlIHJ1bm5pbmcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQkocmV2aXNpb24g
MjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0
ZW1fbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw2IEBAIGNsYXNzIE1vY2tG
aWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQoZGlycGF0aCkK
ICAgICAgICAgcmV0dXJuIHNvcnRlZChkaXJzKQogCi0KICAgICBkZWYgZmlsZXNfdW5kZXIoc2Vs
ZiwgcGF0aCwgZGlyc190b19za2lwPVtdLCBmaWxlX2ZpbHRlcj1Ob25lKToKICAgICAgICAgZGVm
IGZpbHRlcl9hbGwoZnMsIGRpcnBhdGgsIGJhc2VuYW1lKToKICAgICAgICAgICAgIHJldHVybiBU
cnVlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3Rl
bV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgR2VuZXJpY0ZpbGVTeXN0ZW1U
ZXN0cyhvYmplY3QpOgogICAgICAgICBzZWxmLmZzLmNoZGlyKHNlbGYuZ2VuZXJpY190ZXN0X2Rp
cikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoc2VsZi5mcy5nbG9iKCdmb28uKicpKSwg
c2V0KFsnZm9vLnR4dCddKSkKIAorCiBjbGFzcyBSZWFsRmlsZVN5c3RlbVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UsIEdlbmVyaWNGaWxlU3lzdGVtVGVzdHMpOgogICAgIGRlZiBzZXRVcChzZWxmKToK
ICAgICAgICAgc2VsZi5mcyA9IEZpbGVTeXN0ZW0oKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2xvZ3V0aWxzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9sb2d1dGlsc191bml0dGVzdC5weQko
cmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2xvZ3V0aWxzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAg
Y2xhc3MgQ29uZmlndXJlTG9nZ2luZ1ZlcmJvc2VUZXN0KENvbmZpZwogICAgICAgICBzZWxmLl9s
b2cuZGVidWcoInRlc3QgbWVzc2FnZSIpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9sb2dfbWVzc2Fn
ZXMoWyJ1bml0dGVzdDogW0RFQlVHXSB0ZXN0IG1lc3NhZ2VcbiJdKQogCisKIGNsYXNzIENvbmZp
Z3VyZUxvZ2dpbmdDdXN0b21MZXZlbFRlc3QoQ29uZmlndXJlTG9nZ2luZ1Rlc3RCYXNlKToKIAog
ICAgICIiIlRlc3RzIGNvbmZpZ3VyZV9sb2dnaW5nKCkgd2l0aCBhIGN1c3RvbSBsb2dnaW5nIGxl
dmVsLiIiIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3Bh
dGgucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9wYXRoLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIGltcG9ydCB1
cmxsaWIKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCisKIGRlZiBhYnNw
YXRoX3RvX3VyaShwbGF0Zm9ybSwgcGF0aCk6CiAgICAgIiIiQ29udmVydHMgYSBwbGF0Zm9ybS1z
cGVjaWZpYyBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZTogVVJMLiIiIgogICAgIHJldHVybiAiZmls
ZToiICsgX2VzY2FwZShfY29udmVydF9wYXRoKHBsYXRmb3JtLCBwYXRoKSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vcGF0aF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGxhdGZvcm1pbmZvCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ucGxhdGZvcm1pbmZvX21vY2sgaW1wb3J0IE1vY2tQbGF0Zm9ybUluZm8KIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogCisKIGNsYXNzIEFic3BhdGhU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgcGxhdGZvcm1pbmZvKHNlbGYpOgogICAg
ICAgICByZXR1cm4gU3lzdGVtSG9zdCgpLnBsYXRmb3JtCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkJKHJldmlzaW9u
IDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9y
bWluZm8ucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAgaW1wb3J0IHN5cwogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKIAor
CiBjbGFzcyBQbGF0Zm9ybUluZm8ob2JqZWN0KToKICAgICAiIiJUaGlzIGNsYXNzIHByb3ZpZGVz
IGEgY29uc2lzdGVudCAoYW5kIG1vY2thYmxlKSBpbnRlcnByZXRhdGlvbiBvZgogICAgIHN5c3Rl
bS1zcGVjaWZpYyB2YWx1ZXMgKGxpa2Ugc3lzLnBsYXRmb3JtIGFuZCBwbGF0Zm9ybS5tYWNfdmVy
KCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5w
eQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3VzZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiAjIENvcHlyaWdodCAo
YykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgCisjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCiAjIG1ldDoKLSMgCisjCiAjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAjIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KICMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQpAQCAtMTMsNyArMTMsNyBAQAogIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jIAor
IwogIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCiAjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS91c2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEsMTQgQEAg
aW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVy
ZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIg
aW1wb3J0IFVzZXIKIAorCiBjbGFzcyBVc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAg
ICBleGFtcGxlX3VzZXJfcmVzcG9uc2UgPSAiZXhhbXBsZSB1c2VyIHJlc3BvbnNlIgogCiAgICAg
ZGVmIHRlc3RfcHJvbXB0X3JlcGVhdChzZWxmKToKICAgICAgICAgc2VsZi5yZXBlYXRzUmVtYWlu
aW5nID0gMgorCiAgICAgICAgIGRlZiBtb2NrX3Jhd19pbnB1dChtZXNzYWdlKToKICAgICAgICAg
ICAgIHNlbGYucmVwZWF0c1JlbWFpbmluZyAtPSAxCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5y
ZXBlYXRzUmVtYWluaW5nOgpAQCAtNDYsNiArNDgsNyBAQCBjbGFzcyBVc2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9wcm9tcHRfd2hlbl9leGNlZWRlZF9yZXBlYXRz
KHNlbGYpOgogICAgICAgICBzZWxmLnJlcGVhdHNSZW1haW5pbmcgPSAyCisKICAgICAgICAgZGVm
IG1vY2tfcmF3X2lucHV0KG1lc3NhZ2UpOgogICAgICAgICAgICAgc2VsZi5yZXBlYXRzUmVtYWlu
aW5nIC09IDEKICAgICAgICAgICAgIHJldHVybiBOb25lCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS93b3Jrc3BhY2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcg
QEAgY2xhc3MgV29ya3NwYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rf
Y3JlYXRlX3ppcChzZWxmKToKICAgICAgICAgd29ya3NwYWNlID0gV29ya3NwYWNlKE5vbmUsIE1v
Y2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKSkKICAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJN
T0NLIHJ1bl9jb21tYW5kOiBbJ3ppcCcsICctOScsICctcicsICcvemlwL3BhdGgnLCAnLiddLCBj
d2Q9L3NvdXJjZS9wYXRoXG4iCisKICAgICAgICAgY2xhc3MgTW9ja1ppcEZpbGUob2JqZWN0KToK
ICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKICAgICAgICAgICAgICAgICBz
ZWxmLmZpbGVuYW1lID0gcGF0aApAQCAtNjUsNiArNjYsNyBAQCBNT0NLIFNjcmlwdEVycm9yCiAK
IE1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MKICIiIgorCiAgICAgICAgIGNsYXNzIE1vY2ta
aXBGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CiAg
ICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IHBhdGgKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3RocmVhZC90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi90aHJlYWQvdGhyZWFkZWRtZXNzYWdl
cXVldWUucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3RocmVhZC90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weQkod29ya2luZyBjb3B5KQpAQCAtNDks
NCArNDksMyBAQCBjbGFzcyBUaHJlYWRlZE1lc3NhZ2VRdWV1ZShvYmplY3QpOgogICAgICAgICAg
ICAgaXNfcnVubmluZyA9IHNlbGYuX2lzX3J1bm5pbmcKICAgICAgICAgICAgIHNlbGYuX21lc3Nh
Z2VzID0gW10KICAgICAgICAgcmV0dXJuIChtZXNzYWdlcywgaXNfcnVubmluZykKLQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGhyZWFkL3RocmVhZGVkbWVzc2FnZXF1ZXVl
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3RocmVhZC90aHJlYWRlZG1lc3NhZ2VxdWV1ZV91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzI1
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGhyZWFkL3RocmVhZGVkbWVzc2Fn
ZXF1ZXVlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIGltcG9y
dCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi50aHJlYWQudGhyZWFkZWRtZXNzYWdl
cXVldWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1ZXVlCiAKKwogY2xhc3MgVGhyZWFkZWRNZXNz
YWdlUXVldWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNl
bGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0
X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
aW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2
ICs2Miw3IEBAIGNsYXNzIEZha2VQb3J0KG9iamVjdCk6CiAgICAgZGVmIHBhdGhfdG9fZ2VuZXJp
Y190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgogICAgICAgICByZXR1cm4gJycKIAorCiBj
bGFzcyBGYWtlRmFjdG9yeShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBw
b3J0cyk6CiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw2IEBAIGNsYXNzIFJ1blRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhv
c3QudXNlci5vcGVuZWRfdXJscywgW3BhdGguYWJzcGF0aF90b191cmkoTW9ja0hvc3QoKS5wbGF0
Zm9ybSwgJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9yZXN1bHRzLmh0bWwnKV0pCiAKLQogICAg
IGRlZiB0ZXN0X2JhdGNoX3NpemUoc2VsZik6CiAgICAgICAgIGJhdGNoX3Rlc3RzX3J1biA9IGdl
dF90ZXN0X2JhdGNoZXMoWyctLWJhdGNoLXNpemUnLCAnMiddKQogICAgICAgICBmb3IgYmF0Y2gg
aW4gYmF0Y2hfdGVzdHNfcnVuOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0
X2ZpbmRlci5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC03NSw3ICs3NSw2IEBAIGNsYXNzIExheW91dFRlc3RGaW5kZXIob2JqZWN0KToKICAg
ICAgICAgdGVzdHNfdG9fc2tpcCA9IHNlbGYuc2tpcF90ZXN0cyhwb3RlbnRpYWxfdGVzdF9wYXRo
cywgdGVzdHMsIGV4cGVjdGF0aW9ucywgTm9uZSkKICAgICAgICAgcmV0dXJuIFt0ZXN0IGZvciB0
ZXN0IGluIHRlc3RzIGlmIHRlc3Qgbm90IGluIHRlc3RzX3RvX3NraXBdCiAKLQogICAgIGRlZiBf
c3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMoc2VsZiwgcGF0aHMpOgogICAgICAgICByZXR1cm4gW3Nl
bGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeChwYXRoKSBmb3IgcGF0aCBpbiBwYXRocyBpZiBwYXRo
XQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDYgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQogVGVzdEV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3Rh
dGlvbnMKIAogCi0KIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAiIiJBIGNsYXNzIGZvciBt
YW5hZ2luZyBydW5uaW5nIGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVzIG9mIGxheW91dAog
ICAgIHRlc3QgZmlsZXMuIiIiCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRf
d3JpdGVyLnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KGZpbGVzeXN0ZW0sIHBv
cnQsIAogICAgIGZvciBmYWlsdXJlIGluIGZhaWx1cmVzOgogICAgICAgICBmYWlsdXJlLndyaXRl
X2ZhaWx1cmUod3JpdGVyLCBkcml2ZXJfb3V0cHV0LCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LCBw
b3J0KQogCisKIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAgICAiIiJBIGNsYXNz
IHdoaWNoIGhhbmRsZXMgYWxsIHdyaXRpbmcgb3BlcmF0aW9ucyB0byB0aGUgcmVzdWx0IGRpcmVj
dG9yeS4iIiIKIApAQCAtMTc0LDcgKzE3NSw3IEBAIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5fd3JpdGVfYmluYXJ5X2ZpbGUoZGlmZl9maWxlbmFtZSwgaW1h
Z2VfZGlmZikKIAogICAgICAgICBiYXNlX2RpciA9IHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtp
dF9iYXNlKCdMYXlvdXRUZXN0cycsICdmYXN0JywgJ2hhcm5lc3MnKQotICAgICAgICAKKwogICAg
ICAgICBpbWFnZV9kaWZmX3RlbXBsYXRlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGJhc2VfZGly
LCAnaW1hZ2UtZGlmZi10ZW1wbGF0ZS5odG1sJyk7CiAgICAgICAgIGltYWdlX2RpZmZfZmlsZSA9
ICIiCiAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGltYWdlX2RpZmZfdGVtcGxh
dGUpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2Vu
ZXJhdG9yLnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIGRlZiBhZGRfcGF0aF90b190cmllKHBhdGgsIHZh
bHVlLCB0cmllKToKICAgICAgICAgdHJpZVtkaXJlY3RvcnldID0ge30KICAgICBhZGRfcGF0aF90
b190cmllKHJlc3QsIHZhbHVlLCB0cmllW2RpcmVjdG9yeV0pCiAKKwogZGVmIHRlc3RfdGltaW5n
c190cmllKHBvcnQsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKICAgICAiIiJCcmVha3MgYSB0
ZXN0IG5hbWUgaW50byBjaHVua3MgYnkgZGlyZWN0b3J5IGFuZCBwdXRzIHRoZSB0ZXN0IHRpbWUg
YXMgYSB2YWx1ZSBpbiB0aGUgbG93ZXN0IHBhcnQsIGUuZy4KICAgICBmb28vYmFyL2Jhei5odG1s
OiAxbXMKQEAgLTExOCw2ICsxMTksNyBAQCBkZWYgdGVzdF90aW1pbmdzX3RyaWUocG9ydCwgaW5k
aXZpZHVhbF90CiAKICAgICByZXR1cm4gdHJpZQogCisKICMgRklYTUU6IFdlIGFscmVhZHkgaGF2
ZSBhIFRlc3RSZXN1bHQgY2xhc3MgaW4gdGVzdF9yZXN1bHRzLnB5CiBjbGFzcyBUZXN0UmVzdWx0
KG9iamVjdCk6CiAgICAgIiIiQSBzaW1wbGUgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgc2luZ2xl
IHRlc3QgcmVzdWx0LiIiIgpAQCAtMzI5LDcgKzMzMSw2IEBAIGNsYXNzIEpTT05SZXN1bHRzR2Vu
ZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJVcGxvYWQgZmFpbGVkOiAl
cyIgJSBlcnIpCiAgICAgICAgICAgICByZXR1cm4KIAotCiAgICAgZGVmIF9nZXRfdGVzdF90aW1p
bmcoc2VsZiwgdGVzdF9uYW1lKToKICAgICAgICAgIiIiUmV0dXJucyB0ZXN0IHRpbWluZyBkYXRh
IChlbGFwc2VkIHRpbWUpIGluIHNlY29uZAogICAgICAgICBmb3IgdGhlIGdpdmVuIHRlc3RfbmFt
ZS4iIiIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90
ZXN0X2NvbmZpZ3VyYXRpb24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbi5weQkocmV2aXNpb24gMjAy
MzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
Y29uZmlndXJhdGlvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiBpbXBv
cnQgaXRlcnRvb2xzCiAKKwogY2xhc3MgVGVzdENvbmZpZ3VyYXRpb24ob2JqZWN0KToKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCBidWlsZF90eXBlKToKICAg
ICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgpAQCAtMjU3LDcgKzI1OCw2IEBAIGNsYXNzIFRl
c3RDb25maWd1cmF0aW9uQ29udmVydGVyKG9iamVjdCkKICAgICAgICAgd2hpbGUgdHJ5X2FiYnJl
dmlhdGluZyhzZWxmLl9jb2xsYXBzaW5nX3NldHNfYnlfc2l6ZS52YWx1ZXMoKSk6CiAgICAgICAg
ICAgICBwYXNzCiAKLQogICAgICAgICAjIDQpIFN1YnN0aXR1dGUgc3BlY2lmaWVyIHN1YnNldHMg
dGhhdCBtYXRjaCBtYWNyb3Mgd2l0aW4gZWFjaCBzZXQ6CiAgICAgICAgICMgICAoeHAsIHZpc3Rh
LCB3aW43LCByZWxlYXNlKSAtPiAod2luLCByZWxlYXNlKQogICAgICAgICBzZWxmLmNvbGxhcHNl
X21hY3JvcyhzZWxmLl9jb25maWd1cmF0aW9uX21hY3Jvcywgc3BlY2lmaWVyc19saXN0KQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0
YXRpb25zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25z
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyArNTc5LDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uc01vZGVsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bMF0udXBwZXIo
KQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGV4cGVjdGF0aW9uKQogCi0KICAgICBkZWYgYWRk
X2V4cGVjdGF0aW9uX2xpbmUoc2VsZiwgZXhwZWN0YXRpb25fbGluZSwgaW5fc2tpcHBlZD1GYWxz
ZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBsaXN0IG9mIHdhcm5pbmdzIGVuY291bnRlcmVkIHdo
aWxlIG1hdGNoaW5nIG1vZGlmaWVycy4iIiIKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkJ
KHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTIg
QEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydAogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKKwogZGVmIGlzX3JlZnRlc3RfZmFpbHVyZShmYWls
dXJlX2xpc3QpOgogICAgIGZhaWx1cmVfdHlwZXMgPSBbdHlwZShmKSBmb3IgZiBpbiBmYWlsdXJl
X2xpc3RdCiAgICAgcmV0dXJuIHNldCgoRmFpbHVyZVJlZnRlc3RNaXNtYXRjaCwgRmFpbHVyZVJl
ZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyLCBGYWlsdXJlUmVmdGVzdE5vSW1hZ2VzR2VuZXJhdGVk
KSkuaW50ZXJzZWN0aW9uKGZhaWx1cmVfdHlwZXMpCiAKKwogIyBGSVhNRTogVGhpcyBpcyBiYWNr
d2FyZHMuICBFYWNoIFRlc3RGYWlsdXJlIHN1YmNsYXNzIHNob3VsZCBrbm93IHdoYXQKICMgdGVz
dF9leHBlY3RhdGlvbiB0eXBlIGl0IGNvcnJlc3BvbmRzIHRvby4gIFRoZW4gdGhpcyBtZXRob2Qg
anVzdAogIyBjb2xsZWN0cyB0aGVtIGFsbCBmcm9tIHRoZSBmYWlsdXJlIGxpc3QgYW5kIHJldHVy
bnMgdGhlIHdvcnN0IG9uZS4KQEAgLTIzNiw2ICsyMzgsNyBAQCBjbGFzcyBGYWlsdXJlUmVmdGVz
dE1pc21hdGNoRGlkTm90T2NjdXIoCiAgICAgICAgIHdyaXRlci53cml0ZV9pbWFnZV9maWxlcyhk
cml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9pbWFnZT1Ob25lKQogICAgICAgICB3cml0ZXIu
d3JpdGVfcmVmdGVzdChzZWxmLnJlZmVyZW5jZV9maWxlbmFtZSkKIAorCiBjbGFzcyBGYWlsdXJl
UmVmdGVzdE5vSW1hZ2VzR2VuZXJhdGVkKFRlc3RGYWlsdXJlKToKICAgICBkZWYgX19pbml0X18o
c2VsZiwgcmVmZXJlbmNlX2ZpbGVuYW1lPU5vbmUpOgogICAgICAgICBzdXBlcihGYWlsdXJlUmVm
dGVzdE5vSW1hZ2VzR2VuZXJhdGVkLCBzZWxmKS5fX2luaXRfXygpCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVz
dF9ydW5fcmVzdWx0cy5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDYgKzM5LDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUyA9IHNpZ25hbC5TSUdJTlQgKyAxMjgKIAorCiBjbGFz
cyBUZXN0UnVuUmVzdWx0cyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3Rh
dGlvbnMsIG51bV90ZXN0cyk6CiAgICAgICAgIHNlbGYudG90YWwgPSBudW1fdGVzdHMKQEAgLTEy
Myw2ICsxMjQsNyBAQCBkZWYgX2ludGVycHJldF90ZXN0X2ZhaWx1cmVzKGZhaWx1cmVzKToKIAog
ICAgIHJldHVybiB0ZXN0X2RpY3QKIAorCiAjIFRoZXNlIHJlc3VsdHMgbXVzdCBtYXRjaCBvbmVz
IGluIHByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cygpIGluIHZpZXdzL2J1aWxkYm90X3Jlc3VsdHMu
cHkuCiBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywgaW5pdGlh
bF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5LCBp
bmNsdWRlX3Bhc3Nlcz1GYWxzZSwgaW5jbHVkZV90aW1lX2FuZF9tb2RpZmllcnM9RmFsc2UpOgog
ICAgICIiIlJldHVybnMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1tYXJ5IG9mIHRoZSB0
ZXN0IHJ1bnMsIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6CkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9t
ZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBjbGFzcyBSZWd1bGFyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ2ZvbyAlcyAlZCcs
ICdiYXInLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYnVmbGlzdCwgWydmb28g
YmFyIDJcbiddKQogCisKIGNsYXNzIFR0eVRlc3QoUmVndWxhclRlc3QpOgogICAgIHZlcmJvc2Ug
PSBGYWxzZQogICAgIGlzYXR0eSA9IFRydWUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5CShyZXZpc2lvbiAyMDIz
MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGlu
Zy5weQkod29ya2luZyBjb3B5KQpAQCAtMzQ1LDcgKzM0NSw2IEBAIGNsYXNzIFByaW50ZXIob2Jq
ZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiAnIGZhaWxlZCVzICglcykn
ICUgKGV4cF9zdHJpbmcsICcsICcuam9pbihmYWlsdXJlLm1lc3NhZ2UoKSBmb3IgZmFpbHVyZSBp
biBmYWlsdXJlcykpCiAKLQogICAgIGRlZiBfcHJpbnRfdGVzdF90cmFjZShzZWxmLCByZXN1bHQs
IGV4cF9zdHIsIGdvdF9zdHIpOgogICAgICAgICB0ZXN0X25hbWUgPSByZXN1bHQudGVzdF9uYW1l
CiAgICAgICAgIHNlbGYuX3ByaW50X2RlZmF1bHQoc2VsZi5fdGVzdF9zdGF0dXNfbGluZSh0ZXN0
X25hbWUsICcnKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVz
dHMvcGVyZnRlc3RzcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CShyZXZpc2lvbiAyMDIzMjUp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lci5weQkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNiBAQCBjbGFzcyBQZXJmVGVzdHNS
dW5uZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fdGltZXN0YW1wID0gdGltZS50aW1lKCkKICAg
ICAgICAgc2VsZi5fdXRjX3RpbWVzdGFtcCA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygpCiAK
LQogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3BhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAg
ICAgICAgZGVmIF9leHBhbmRfcGF0aChvcHRpb24sIG9wdF9zdHIsIHZhbHVlLCBwYXJzZXIpOgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5w
eQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5j
ZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMsNiArMjEzLDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
CiAgICAgICAgIGNsYXNzIFRlc3REcml2ZXJXaXRoU3RvcENvdW50KFRlc3REcml2ZXIpOgogICAg
ICAgICAgICAgc3RvcF9jb3VudCA9IDAKKwogICAgICAgICAgICAgZGVmIHN0b3Aoc2VsZik6CiAg
ICAgICAgICAgICAgICAgVGVzdERyaXZlcldpdGhTdG9wQ291bnQuc3RvcF9jb3VudCArPSAxCiAK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZV91bml0
dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IFBvcnQs
IERyaXZlciwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LnBvcnQudGVzdCBpbXBvcnQgYWRk
X3VuaXRfdGVzdHNfdG9fbW9ja19maWxlc3lzdGVtLCBUZXN0UG9ydAogCisKIGNsYXNzIFBvcnRU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9wb3J0KHNlbGYsIGV4ZWN1dGl2
ZT1Ob25lLCB3aXRoX3Rlc3RzPUZhbHNlLCBwb3J0X25hbWU9Tm9uZSwgKiprd2FyZ3MpOgogICAg
ICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQpAQCAtODgsNyArODksNiBAQCBjbGFzcyBQb3J0
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5w
cmV0dHlfcGF0Y2gucHJldHR5X3BhdGNoX3RleHQoInBhdGNoLnR4dCIpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvcnQucHJldHR5X3BhdGNoLnByZXR0eV9wYXRjaF9lcnJvcl9odG1sKQog
Ci0KICAgICBkZWYgdGVzdF9kaWZmX3RleHQoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1h
a2VfcG9ydCgpCiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgcnVuIGludG8gZGVj
b2RpbmcgZXhjZXB0aW9ucyB3aGVuIHRoZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZHJpdmVyLnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcgQEAgY2xhc3MgRHJp
dmVyT3V0cHV0KG9iamVjdCk6CiAgICAgICAgIGZvciBwYXR0ZXJuIGluIHBhdHRlcm5zOgogICAg
ICAgICAgICAgc2VsZi5lcnJvciA9IHJlLnN1YihwYXR0ZXJuWzBdLCBwYXR0ZXJuWzFdLCBzZWxm
LmVycm9yKQogCisKIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICIiIm9iamVjdCBmb3IgcnVu
bmluZyB0ZXN0KHMpIHVzaW5nIER1bXBSZW5kZXJUcmVlL1dlYktpdFRlc3RSdW5uZXIuIiIiCiAK
QEAgLTYyNCw2ICs2MjUsNyBAQCBjbGFzcyBDb250ZW50QmxvY2sob2JqZWN0KToKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gc2VsZi5jb250ZW50CiAK
KwogY2xhc3MgRHJpdmVyUHJveHkob2JqZWN0KToKICAgICAiIiJBIHdyYXBwZXIgZm9yIG1hbmFn
aW5nIHR3byBEcml2ZXIgaW5zdGFuY2VzLCBvbmUgd2l0aCBwaXhlbCB0ZXN0cyBhbmQKICAgICBv
bmUgd2l0aG91dC4gVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHBsYWluIHRleHQgdGVzdHMgYW5k
IHJlZiB0ZXN0cyB3aXRoIGEKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2
ZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2RyaXZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPCiBpbXBvcnQg
b3MKIGltcG9ydCBzeXMKIAorCiBjbGFzcyBEcml2ZXJPdXRwdXRUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgdGVzdF9zdHJpcF9tZXRyaWNzKHNlbGYpOgogICAgICAgICBwYXR0ZXJu
cyA9IFsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5CShyZXZpc2lv
biAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weQkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBkZWYgY29uZmlndXJhdGlvbl9vcHRpb25zKCk6
CiAgICAgICAgIF0KIAogCi0KIGRlZiBfYnVpbGRlcl9vcHRpb25zKGJ1aWxkZXJfbmFtZSk6CiAg
ICAgY29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIgaWYgcmUuc2VhcmNoKHIiW2R8RF0oZWJ1fGIpZyIs
IGJ1aWxkZXJfbmFtZSkgZWxzZSAiUmVsZWFzZSIKICAgICBpc193ZWJraXQyID0gYnVpbGRlcl9u
YW1lLmZpbmQoIldLMiIpICE9IC0xCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
Z3RrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkJ
KHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgZnJvbSB3ZWJraXRweS5wb3J0LmxlYWtk
ZXRlY3Rvcl92YWxncmluZAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAK
KwogY2xhc3MgR3RrUG9ydChQb3J0KToKICAgICBwb3J0X25hbWUgPSAiZ3RrIgogCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbQogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIAog
Ci0KIGNsYXNzIFRyaXZpYWxNb2NrUG9ydChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKICAgICAgICAgc2VsZi5ob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3Rlc3QucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC90ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAg
VE9UQUxfUkVUUklFUyA9IDE0CiBVTkVYUEVDVEVEX1BBU1NFUyA9IDcKIFVORVhQRUNURURfRkFJ
TFVSRVMgPSAxNwogCisKIGRlZiB1bml0X3Rlc3RfbGlzdCgpOgogICAgIHNpbGVudF9hdWRpbyA9
ICJSSUZGMlx4MDBceDAwXHgwMFdBVkVmbXQgXHgxMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMVx4
MDBceDIyXHg1Nlx4MDBceDAwXHg0NFx4QUNceDAwXHgwMFx4MDJceDAwXHgxMFx4MDBkYXRhXHgw
RVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDBceDAwIgogICAgIHNpbGVudF9hdWRpb193aXRoX3NpbmdsZV9iaXRfZGlmZmVyZW5j
ZSA9ICJSSUZGMlx4MDBceDAwXHgwMFdBVkVmbXQgXHgxMFx4MDBceDAwXHgwMFx4MDFceDAwXHgw
MVx4MDBceDIyXHg1Nlx4MDBceDAwXHg0NFx4QUNceDAwXHgwMFx4MDJceDAwXHgxMFx4MDBkYXRh
XHgwRVx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwIgpAQCAtNTI0LDYgKzUyNSw3IEBAIGNsYXNzIFRlc3RQb3J0KFBvcnQp
OgogICAgIGRlZiBhbGxfYmFzZWxpbmVfdmFyaWFudHMoc2VsZik6CiAgICAgICAgIHJldHVybiBz
ZWxmLkFMTF9CQVNFTElORV9WQVJJQU5UUwogCisKIGNsYXNzIFRlc3REcml2ZXIoRHJpdmVyKToK
ICAgICAiIiJUZXN0L0R1bW15IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEdW1wUmVuZGVyVHJlZSBp
bnRlcmZhY2UuIiIiCiAgICAgbmV4dF9waWQgPSAxCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvd2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93aW4ucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgdHJ5OgogZXhjZXB0IElt
cG9ydEVycm9yOgogICAgIF9sb2cud2FybigiTm90IHJ1bm5pbmcgb24gbmF0aXZlIFdpbmRvd3Mu
IikKIAorCiBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgcG9ydF9uYW1lID0gIndpbiIK
IApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQkocmV2aXNpb24g
MjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwog
ICAgICMgQVBJIGFuZCB0aGVyZWZvcmUgZG8gbm90IGZvbGxvdyB0aGUgc2FtZSBoZWFkZXIgaW5j
bHVkaW5nCiAgICAgIyBkaXNjaXBsaW5lIGFzIFdlYkNvcmUuCiAKLSAgICAoWyMgVGVzdE5ldHNj
YXBlUGx1Z0luIGhhcyBubyBjb25maWcuaCBhbmQgdXNlcyBmdW5ueSBuYW1lcyBsaWtlCisgICAg
KFsgICMgVGVzdE5ldHNjYXBlUGx1Z0luIGhhcyBubyBjb25maWcuaCBhbmQgdXNlcyBmdW5ueSBu
YW1lcyBsaWtlCiAgICAgICAjIE5QUF9TZXRXaW5kb3cuCiAgICAgICBvcy5wYXRoLmpvaW4oJ1Rv
b2xzJywgJ0R1bXBSZW5kZXJUcmVlJywgJ1Rlc3ROZXRzY2FwZVBsdWdJbicpXSwKICAgICAgWyIt
YnVpbGQvaW5jbHVkZSIsCkBAIC01MTIsNiArNTEyLDcgQEAgY2xhc3MgRmlsZVR5cGU6CiAgICAg
Q01BS0UgPSAxMQogICAgIEZFQVRVUkVERUZJTkVTID0gMTIKIAorCiBjbGFzcyBDaGVja2VyRGlz
cGF0Y2hlcihvYmplY3QpOgogCiAgICAgIiIiU3VwcG9ydHMgZGV0ZXJtaW5pbmcgd2hldGhlciBh
bmQgaG93IHRvIGNoZWNrIHN0eWxlLCBiYXNlZCBvbiBwYXRoLiIiIgpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9lcnJvcl9oYW5kbGVycy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRsZXJzLnB5CShyZXZpc2lvbiAyMDIz
MjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRsZXJzLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRGVmYXVsdFN0eWxlRXJyb3JI
YW5kbGVyKG9iamVjdCk6CiAKICAgICBkZWYgX2FkZF9yZXBvcnRhYmxlX2Vycm9yKHNlbGYsIGNh
dGVnb3J5KToKICAgICAgICAgIiIiSW5jcmVtZW50IHRoZSBlcnJvciBjb3VudCBhbmQgcmV0dXJu
IHRoZSBuZXcgY2F0ZWdvcnkgdG90YWwuIiIiCi0gICAgICAgIHNlbGYuX2luY3JlbWVudF9lcnJv
cl9jb3VudCgpICMgSW5jcmVtZW50IHRoZSB0b3RhbC4KKyAgICAgICAgc2VsZi5faW5jcmVtZW50
X2Vycm9yX2NvdW50KCkgICMgSW5jcmVtZW50IHRoZSB0b3RhbC4KIAogICAgICAgICAjIEluY3Jl
bWVudCB0aGUgY2F0ZWdvcnkgdG90YWwuCiAgICAgICAgIGlmIG5vdCBjYXRlZ29yeSBpbiBzZWxm
Ll9jYXRlZ29yeV90b3RhbHM6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Zp
bHRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2ZpbHRl
ci5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9m
aWx0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgX0NhdGVnb3J5
RmlsdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmaWx0ZXJfcnVsZXMgPSBbXQogCiAgICAgICAg
IHNlbGYuX2ZpbHRlcl9ydWxlcyA9IGZpbHRlcl9ydWxlcwotICAgICAgICBzZWxmLl9zaG91bGRf
Y2hlY2tfY2F0ZWdvcnkgPSB7fSAjIENhY2hlZCBkaWN0aW9uYXJ5IG9mIGNhdGVnb3J5IHRvIFRy
dWUvRmFsc2UKKyAgICAgICAgc2VsZi5fc2hvdWxkX2NoZWNrX2NhdGVnb3J5ID0ge30gICMgQ2Fj
aGVkIGRpY3Rpb25hcnkgb2YgY2F0ZWdvcnkgdG8gVHJ1ZS9GYWxzZQogCiAgICAgZGVmIF9fc3Ry
X18oc2VsZik6CiAgICAgICAgIHJldHVybiAiLCIuam9pbihzZWxmLl9maWx0ZXJfcnVsZXMpCkBA
IC0xMDgsMTIgKzEwOCwxMiBAQCBjbGFzcyBfQ2F0ZWdvcnlGaWx0ZXIob2JqZWN0KToKICAgICAg
ICAgaWYgY2F0ZWdvcnkgaW4gc2VsZi5fc2hvdWxkX2NoZWNrX2NhdGVnb3J5OgogICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX3Nob3VsZF9jaGVja19jYXRlZ29yeVtjYXRlZ29yeV0KIAotICAgICAg
ICBzaG91bGRfY2hlY2sgPSBUcnVlICMgQWxsIGNhdGVnb3JpZXMgY2hlY2tlZCBieSBkZWZhdWx0
LgorICAgICAgICBzaG91bGRfY2hlY2sgPSBUcnVlICAjIEFsbCBjYXRlZ29yaWVzIGNoZWNrZWQg
YnkgZGVmYXVsdC4KICAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5fZmlsdGVyX3J1bGVzOgogICAg
ICAgICAgICAgaWYgbm90IGNhdGVnb3J5LnN0YXJ0c3dpdGgocnVsZVsxOl0pOgogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBzaG91bGRfY2hlY2sgPSBydWxlLnN0YXJ0c3dp
dGgoJysnKQotICAgICAgICBzZWxmLl9zaG91bGRfY2hlY2tfY2F0ZWdvcnlbY2F0ZWdvcnldID0g
c2hvdWxkX2NoZWNrICMgVXBkYXRlIGNhY2hlLgorICAgICAgICBzZWxmLl9zaG91bGRfY2hlY2tf
Y2F0ZWdvcnlbY2F0ZWdvcnldID0gc2hvdWxkX2NoZWNrICAjIFVwZGF0ZSBjYWNoZS4KICAgICAg
ICAgcmV0dXJuIHNob3VsZF9jaGVjawogCiAKQEAgLTIxMyw3ICsyMTMsNyBAQCBjbGFzcyBGaWx0
ZXJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICBmb3Igc3ViX3BhdGggaW4gc3Vi
X3BhdGhzOgogICAgICAgICAgICAgICAgIGlmIHBhdGguZmluZChzdWJfcGF0aCkgPiAtMToKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHBhdGhfcnVsZXMpCi0gICAgICAgIHJldHVy
biAoKSAjIERlZmF1bHQgdG8gdGhlIGVtcHR5IHR1cGxlLgorICAgICAgICByZXR1cm4gKCkgICMg
RGVmYXVsdCB0byB0aGUgZW1wdHkgdHVwbGUuCiAKICAgICBkZWYgX2ZpbHRlcl9mcm9tX3BhdGhf
cnVsZXMoc2VsZiwgcGF0aF9ydWxlcyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgQ2F0ZWdvcnlG
aWx0ZXIgYXNzb2NpYXRlZCB0byB0aGUgZ2l2ZW4gcGF0aCBydWxlcy4KQEAgLTIyNyw3ICsyMjcs
NyBAQCBjbGFzcyBGaWx0ZXJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAgICAgICAgICMgV2UgcmV1
c2UgdGhlIHNhbWUgQ2F0ZWdvcnlGaWx0ZXIgd2hlcmUgcG9zc2libGUgdG8gdGFrZQogICAgICAg
ICAjIGFkdmFudGFnZSBvZiB0aGUgY2FjaGluZyB0aGV5IGRvLgogICAgICAgICBpZiBwYXRoX3J1
bGVzIG5vdCBpbiBzZWxmLl9wYXRoX3J1bGVzX3RvX2ZpbHRlcjoKLSAgICAgICAgICAgIHJ1bGVz
ID0gbGlzdChzZWxmLl9iYXNlX3J1bGVzKSAjIE1ha2UgYSBjb3B5CisgICAgICAgICAgICBydWxl
cyA9IGxpc3Qoc2VsZi5fYmFzZV9ydWxlcykgICMgTWFrZSBhIGNvcHkKICAgICAgICAgICAgIHJ1
bGVzLmV4dGVuZChwYXRoX3J1bGVzKQogICAgICAgICAgICAgcnVsZXMuZXh0ZW5kKHNlbGYuX3Vz
ZXJfcnVsZXMpCiAgICAgICAgICAgICBzZWxmLl9wYXRoX3J1bGVzX3RvX2ZpbHRlcltwYXRoX3J1
bGVzXSA9IF9DYXRlZ29yeUZpbHRlcihydWxlcykKQEAgLTI3NSw0ICsyNzUsMyBAQCBjbGFzcyBG
aWx0ZXJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVy
biBzZWxmLl9maWx0ZXJfZnJvbV9wYXRoKHBhdGgpLnNob3VsZF9jaGVjayhjYXRlZ29yeSkKLQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWx0ZXJfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWx0ZXJfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvZmls
dGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIGZyb20gZmls
dGVyIGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCiAjCiAjICAgKGZyb20gaHR0cDovL2RvY3Mu
cHl0aG9uLm9yZy9yZWZlcmVuY2UvZGF0YW1vZGVsLmh0bWwjb2JqZWN0Ll9fbmVfXyApCiAKKwog
Y2xhc3MgVmFsaWRhdGVGaWx0ZXJSdWxlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAg
IiIiVGVzdHMgdmFsaWRhdGVfZmlsdGVyX3J1bGVzKCkgZnVuY3Rpb24uIiIiCkBAIC0yNTMsNCAr
MjU0LDMgQEAgY2xhc3MgRmlsdGVyQ29uZmlndXJhdGlvblRlc3QodW5pdHRlc3QuVAogCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29uZmlnLnNob3VsZF9jaGVjaygiYSIsICJwYXRoIikpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb25maWcuc2hvdWxkX2NoZWNrKCJiIiwgInBhdGgiKSkK
LQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkJKHJldmlz
aW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcgQEAgY2xhc3MgQXJndW1lbnRQcmludGVy
KG9iamVjdCk6CiAgICAgIiIiU3VwcG9ydHMgdGhlIHByaW50aW5nIG9mIGNoZWNrLXdlYmtpdC1z
dHlsZSBjb21tYW5kIGFyZ3VtZW50cy4iIiIKIAogICAgIGRlZiBfZmxhZ19wYWlyX3RvX3N0cmlu
ZyhzZWxmLCBmbGFnX2tleSwgZmxhZ192YWx1ZSk6Ci0gICAgICAgIHJldHVybiAnLS0lKGtleSlz
PSUodmFsKXMnICUgeydrZXknOiBmbGFnX2tleSwgJ3ZhbCc6IGZsYWdfdmFsdWUgfQorICAgICAg
ICByZXR1cm4gJy0tJShrZXkpcz0lKHZhbClzJyAlIHsna2V5JzogZmxhZ19rZXksICd2YWwnOiBm
bGFnX3ZhbHVlfQogCiAgICAgZGVmIHRvX2ZsYWdfc3RyaW5nKHNlbGYsIG9wdGlvbnMpOgogICAg
ICAgICAiIiJSZXR1cm4gYSBmbGFnIHN0cmluZyBvZiB0aGUgZ2l2ZW4gQ29tbWFuZE9wdGlvblZh
bHVlcyBpbnN0YW5jZS4KQEAgLTQ2OCw0ICs0NjgsMyBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihv
YmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfaW5kZXg9
Z2l0X2luZGV4KQogCiAgICAgICAgIHJldHVybiAocGF0aHMsIG9wdGlvbnMpCi0KSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBh
cnNlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBjbGFzcyBB
cmd1bWVudFBhcnNlclRlc3QoTG9nZ2luZ1Rlc3RDYXNlCiAgICAgICAgICIiIlJldHVybiBhbiBB
cmd1bWVudFBhcnNlciBpbnN0YW5jZSBmb3IgdGVzdGluZy4iIiIKICAgICAgICAgZGVmYXVsdF9v
cHRpb25zID0gc2VsZi5fY3JlYXRlX2RlZmF1bHRzKCkKIAotICAgICAgICBhbGxfY2F0ZWdvcmll
cyA9IFsiYnVpbGQiICwid2hpdGVzcGFjZSJdCisgICAgICAgIGFsbF9jYXRlZ29yaWVzID0gWyJi
dWlsZCIsICJ3aGl0ZXNwYWNlIl0KIAogICAgICAgICBtb2NrX3N0ZGVyciA9IHNlbGYuX01vY2tT
dGRFcnIoKQogCkBAIC0xMjMsMTkgKzEyMywxOSBAQCBjbGFzcyBBcmd1bWVudFBhcnNlclRlc3Qo
TG9nZ2luZ1Rlc3RDYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHBh
cnNlLCBbJy0tbWluLWNvbmZpZGVuY2U9NiddKQogICAgICAgICBzZWxmLmFzc2VydExvZyhbJ0VS
Uk9SOiBvcHRpb24gLS1taW4tY29uZmlkZW5jZTogaW52YWxpZCBpbnRlZ2VyOiA2OiAnCiAgICAg
ICAgICAgICAgICAgICAgICAgICAndmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDVcbiddKQot
ICAgICAgICBwYXJzZShbJy0tbWluLWNvbmZpZGVuY2U9MSddKSAjIHdvcmtzCi0gICAgICAgIHBh
cnNlKFsnLS1taW4tY29uZmlkZW5jZT01J10pICMgd29ya3MKKyAgICAgICAgcGFyc2UoWyctLW1p
bi1jb25maWRlbmNlPTEnXSkgICMgd29ya3MKKyAgICAgICAgcGFyc2UoWyctLW1pbi1jb25maWRl
bmNlPTUnXSkgICMgd29ya3MKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0
LCBwYXJzZSwgWyctLW91dHB1dD1iYWQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRMb2coWydFUlJP
Ujogb3B0aW9uIC0tb3V0cHV0LWZvcm1hdDogaW52YWxpZCBjaG9pY2U6ICcKICAgICAgICAgICAg
ICAgICAgICAgICAgICInYmFkJyAoY2hvb3NlIGZyb20gJ2VtYWNzJywgJ3ZzNycpXG4iXSkKLSAg
ICAgICAgcGFyc2UoWyctLW91dHB1dD12czcnXSkgIyB3b3JrcworICAgICAgICBwYXJzZShbJy0t
b3V0cHV0PXZzNyddKSAgIyB3b3JrcwogCiAgICAgICAgICMgUGFzcyBhIGZpbHRlciBydWxlIG5v
dCBiZWdpbm5pbmcgd2l0aCArIG9yIC0uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3Rl
bUV4aXQsIHBhcnNlLCBbJy0tZmlsdGVyPWJ1aWxkJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TG9n
KFsnRVJST1I6IEludmFsaWQgZmlsdGVyIHJ1bGUgImJ1aWxkIjogJwogICAgICAgICAgICAgICAg
ICAgICAgICAgJ2V2ZXJ5IHJ1bGUgbXVzdCBzdGFydCB3aXRoICsgb3IgLS5cbiddKQotICAgICAg
ICBwYXJzZShbJy0tZmlsdGVyPStidWlsZCddKSAjIHdvcmtzCisgICAgICAgIHBhcnNlKFsnLS1m
aWx0ZXI9K2J1aWxkJ10pICAjIHdvcmtzCiAKICAgICBkZWYgdGVzdF9wYXJzZV9kZWZhdWx0X2Fy
Z3VtZW50cyhzZWxmKToKICAgICAgICAgcGFyc2UgPSBzZWxmLl9wYXJzZQpAQCAtMjA4LDEyICsy
MDgsMTIgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlc1Rlc3QodW5pdHRlc3QuVAogCiAgICAg
ICAgICMgQ2hlY2sgYXJndW1lbnQgdmFsaWRhdGlvbi4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoVmFsdWVFcnJvciwgUHJvY2Vzc29yT3B0aW9ucywgb3V0cHV0X2Zvcm1hdD0iYmFkIikKLSAg
ICAgICAgUHJvY2Vzc29yT3B0aW9ucyhvdXRwdXRfZm9ybWF0PSJlbWFjcyIpICMgTm8gVmFsdWVF
cnJvcjogd29ya3MKLSAgICAgICAgUHJvY2Vzc29yT3B0aW9ucyhvdXRwdXRfZm9ybWF0PSJ2czci
KSAjIHdvcmtzCisgICAgICAgIFByb2Nlc3Nvck9wdGlvbnMob3V0cHV0X2Zvcm1hdD0iZW1hY3Mi
KSAgIyBObyBWYWx1ZUVycm9yOiB3b3JrcworICAgICAgICBQcm9jZXNzb3JPcHRpb25zKG91dHB1
dF9mb3JtYXQ9InZzNyIpICAjIHdvcmtzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIFByb2Nlc3Nvck9wdGlvbnMsIG1pbl9jb25maWRlbmNlPTApCiAgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFByb2Nlc3Nvck9wdGlvbnMsIG1pbl9jb25maWRlbmNl
PTYpCi0gICAgICAgIFByb2Nlc3Nvck9wdGlvbnMobWluX2NvbmZpZGVuY2U9MSkgIyB3b3Jrcwot
ICAgICAgICBQcm9jZXNzb3JPcHRpb25zKG1pbl9jb25maWRlbmNlPTUpICMgd29ya3MKKyAgICAg
ICAgUHJvY2Vzc29yT3B0aW9ucyhtaW5fY29uZmlkZW5jZT0xKSAgIyB3b3JrcworICAgICAgICBQ
cm9jZXNzb3JPcHRpb25zKG1pbl9jb25maWRlbmNlPTUpICAjIHdvcmtzCiAKICAgICAgICAgIyBD
aGVjayBhdHRyaWJ1dGVzLgogICAgICAgICBvcHRpb25zID0gUHJvY2Vzc29yT3B0aW9ucyhmaWx0
ZXJfcnVsZXM9WyIrIl0sCkBAIC0yNjAsNCArMjYwLDMgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZh
bHVlc1Rlc3QodW5pdHRlc3QuVAogICAgICAgICAjIFRodXMsIGp1c3QgY2hlY2sgdGhlIGRpc3Rp
bmd1aXNoaW5nIGNhc2UgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgICAgICAgICMgY29kZSBkZWZpbmVz
IF9fbmVfXy4KICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQcm9jZXNzb3JPcHRpb25zKCkuX19u
ZV9fKFByb2Nlc3Nvck9wdGlvbnMoKSkpCi0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NvbW1v
bl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBpbXBvcnQgdW5p
dHRlc3QKIGZyb20gY29tbW9uIGltcG9ydCBDYXJyaWFnZVJldHVybkNoZWNrZXIKIGZyb20gY29t
bW9uIGltcG9ydCBUYWJDaGVja2VyCiAKKwogIyBGSVhNRTogVGhlIHVuaXQgdGVzdHMgZm9yIHRo
ZSBjcHAsIHRleHQsIGFuZCBjb21tb24gY2hlY2tlcnMgc2hvdWxkCiAjICAgICAgICBzaGFyZSBz
dXBwb3J0aW5nIHRlc3QgY29kZS4gVGhpcyBjYW4gaW5jbHVkZSwgZm9yIGV4YW1wbGUsIHRoZQog
IyAgICAgICAgbW9jayBzdHlsZSBlcnJvciBoYW5kbGluZyBjb2RlIGFuZCB0aGUgY29kZSB0byBj
aGVjayB0aGF0IGFsbApAQCAtNDMsNyArNDQsNyBAQCBjbGFzcyBDYXJyaWFnZVJldHVybkNoZWNr
ZXJUZXN0KHVuaXR0ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgImJldHRlciB0byB1c2Ug
b25seSBhIFxcbiIpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX3N0eWxl
X2Vycm9ycyA9IFtdICMgVGhlIGxpc3Qgb2YgYWNjdW11bGF0ZWQgc3R5bGUgZXJyb3JzLgorICAg
ICAgICBzZWxmLl9zdHlsZV9lcnJvcnMgPSBbXSAgIyBUaGUgbGlzdCBvZiBhY2N1bXVsYXRlZCBz
dHlsZSBlcnJvcnMuCiAKICAgICBkZWYgX21vY2tfc3R5bGVfZXJyb3JfaGFuZGxlcihzZWxmLCBs
aW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsy
MDUsNiBAQCBkZWYgX2NvbnZlcnRfdG9fbG93ZXJfd2l0aF91bmRlcnNjb3Jlcyh0CiAgICAgcmV0
dXJuIHRleHQubG93ZXIoKQogCiAKLQogZGVmIF9jcmVhdGVfYWNyb255bSh0ZXh0KToKICAgICAi
IiJDcmVhdGVzIGFuIGFjcm9ueW0gZm9yIHRoZSBnaXZlbiB0ZXh0LiIiIgogICAgICMgUmVtb3Zl
cyBhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzIGV4Y2VwdCB0aG9zZSBzdGFydGluZyB3b3Jkcy4KQEAg
LTIzMCwxNCArMjI5LDE1IEBAIGRlZiB1cF90b191bm1hdGNoZWRfY2xvc2luZ19wYXJlbihzKToK
ICAgICAiIiIKICAgICBpID0gMQogICAgIGZvciBwb3MsIGMgaW4gZW51bWVyYXRlKHMpOgotICAg
ICAgaWYgYyA9PSAnKCc6Ci0gICAgICAgIGkgKz0gMQotICAgICAgZWxpZiBjID09ICcpJzoKLSAg
ICAgICAgaSAtPSAxCi0gICAgICAgIGlmIGkgPT0gMDoKLSAgICAgICAgICByZXR1cm4gc1s6cG9z
XSwgc1twb3MgKyAxOl0KKyAgICAgICAgaWYgYyA9PSAnKCc6CisgICAgICAgICAgICBpICs9IDEK
KyAgICAgICAgZWxpZiBjID09ICcpJzoKKyAgICAgICAgICAgIGkgLT0gMQorICAgICAgICAgICAg
aWYgaSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBzWzpwb3NdLCBzW3BvcyArIDE6XQog
ICAgIHJldHVybiBOb25lLCBOb25lCiAKKwogY2xhc3MgX0luY2x1ZGVTdGF0ZShkaWN0KToKICAg
ICAiIiJUcmFja3MgbGluZSBudW1iZXJzIGZvciBpbmNsdWRlcywgYW5kIHRoZSBvcmRlciBpbiB3
aGljaCBpbmNsdWRlcyBhcHBlYXIuCiAKQEAgLTU0MCwxMiArNTQwLDEyIEBAIGNsYXNzIF9GdW5j
dGlvblN0YXRlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BhcmFtZXRlcl9saXN0ID0gTm9uZQog
CiAgICAgZGVmIG1vZGlmaWVyc19hbmRfcmV0dXJuX3R5cGUoc2VsZik6Ci0gICAgICAgICAiIiJS
ZXR1cm5zIHRoZSBtb2RpZmllcnMgYW5kIHRoZSByZXR1cm4gdHlwZS4iIiIKLSAgICAgICAgICMg
R28gYmFja3dhcmRzIGZyb20gd2hlcmUgdGhlIGZ1bmN0aW9uIG5hbWUgaXMgdW50aWwgd2UgZW5j
b3VudGVyIG9uZSBvZiBzZXZlcmFsIHRoaW5nczoKLSAgICAgICAgICMgICAnOycgb3IgJ3snIG9y
ICd9JyBvciAncHJpdmF0ZTonLCBldGMuIG9yICcjJyBvciByZXR1cm4gUG9zaXRpb24oMCwgMCkK
LSAgICAgICAgIGVsaWRlZCA9IHNlbGYuX2NsZWFuX2xpbmVzLmVsaWRlZAotICAgICAgICAgc3Rh
cnRfbW9kaWZpZXJzID0gX3JmaW5kX2luX2xpbmVzKHInO3xce3xcfXwoKHByaXZhdGV8cHVibGlj
fHByb3RlY3RlZCk6KXwoIy4qKScsIGVsaWRlZCwgc2VsZi5wYXJhbWV0ZXJfc3RhcnRfcG9zaXRp
b24sIFBvc2l0aW9uKDAsIDApKQotICAgICAgICAgcmV0dXJuIFNpbmdsZUxpbmVWaWV3KGVsaWRl
ZCwgc3RhcnRfbW9kaWZpZXJzLCBzZWxmLmZ1bmN0aW9uX25hbWVfc3RhcnRfcG9zaXRpb24pLnNp
bmdsZV9saW5lLnN0cmlwKCkKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbW9kaWZpZXJzIGFuZCB0
aGUgcmV0dXJuIHR5cGUuIiIiCisgICAgICAgICMgR28gYmFja3dhcmRzIGZyb20gd2hlcmUgdGhl
IGZ1bmN0aW9uIG5hbWUgaXMgdW50aWwgd2UgZW5jb3VudGVyIG9uZSBvZiBzZXZlcmFsIHRoaW5n
czoKKyAgICAgICAgIyAgICc7JyBvciAneycgb3IgJ30nIG9yICdwcml2YXRlOicsIGV0Yy4gb3Ig
JyMnIG9yIHJldHVybiBQb3NpdGlvbigwLCAwKQorICAgICAgICBlbGlkZWQgPSBzZWxmLl9jbGVh
bl9saW5lcy5lbGlkZWQKKyAgICAgICAgc3RhcnRfbW9kaWZpZXJzID0gX3JmaW5kX2luX2xpbmVz
KHInO3xce3xcfXwoKHByaXZhdGV8cHVibGljfHByb3RlY3RlZCk6KXwoIy4qKScsIGVsaWRlZCwg
c2VsZi5wYXJhbWV0ZXJfc3RhcnRfcG9zaXRpb24sIFBvc2l0aW9uKDAsIDApKQorICAgICAgICBy
ZXR1cm4gU2luZ2xlTGluZVZpZXcoZWxpZGVkLCBzdGFydF9tb2RpZmllcnMsIHNlbGYuZnVuY3Rp
b25fbmFtZV9zdGFydF9wb3NpdGlvbikuc2luZ2xlX2xpbmUuc3RyaXAoKQogCiAgICAgZGVmIGlz
X3ZpcnR1YWwoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlYXJjaChyJ1xidmlydHVhbFxi
Jywgc2VsZi5tb2RpZmllcnNfYW5kX3JldHVybl90eXBlKCkpKQpAQCAtNTgzLDcgKzU4Myw3IEBA
IGNsYXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6CiAgICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLCBlcnJvcl9sZXZlbCwKICAgICAgICAgICAgICAg
ICAgICdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDonCiAgICAgICAg
ICAgICAgICAgICAnICVzIGhhcyAlZCBub24tY29tbWVudCBsaW5lcycKLSAgICAgICAgICAgICAg
ICAgICcgKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMpLicgICUgKAorICAg
ICAgICAgICAgICAgICAgJyAoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcyku
JyAlICgKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfZnVuY3Rpb24sIHNlbGYu
bGluZXNfaW5fZnVuY3Rpb24sIHRyaWdnZXIpKQogCiAgICAgZGVmIGVuZChzZWxmKToKQEAgLTYz
OCw3ICs2MzgsNiBAQCBjbGFzcyBGaWxlSW5mbzoKICAgICAgICAgICAgICAgICBwcmVmaXggPSBv
cy5wYXRoLmNvbW1vbnByZWZpeChbcm9vdF9kaXIsIHByb2plY3RfZGlyXSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZnVsbG5hbWVbbGVuKHByZWZpeCkgKyAxOl0KIAotCiAgICAgICAgICAgICAj
IE5vdCBTVk4gPD0gMS42PyBUcnkgdG8gZmluZCBhIGdpdCwgb3Igc3ZuIHRvcCBsZXZlbCBkaXJl
Y3RvcnkgYnkKICAgICAgICAgICAgICMgc2VhcmNoaW5nIHVwIGZyb20gdGhlIGN1cnJlbnQgcGF0
aC4KICAgICAgICAgICAgIHJvb3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxuYW1lKQpAQCAt
ODgyLDYgKzg4MSw3IEBAIGRlZiBjbG9zZV9leHByZXNzaW9uKGVsaWRlZCwgcG9zaXRpb24pOgog
ICAgICMgVGhlIGdpdmVuIGl0ZW0gd2FzIG5vdCBjbG9zZWQuCiAgICAgcmV0dXJuIFBvc2l0aW9u
KGxlbihlbGlkZWQpLCAtMSkKIAorCiBkZWYgY2hlY2tfZm9yX2NvcHlyaWdodChsaW5lcywgZXJy
b3IpOgogICAgICIiIkxvZ3MgYW4gZXJyb3IgaWYgbm8gQ29weXJpZ2h0IG1lc3NhZ2UgYXBwZWFy
cyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLiIiIgogCkBAIC0xMjgwLDYgKzEyODAsNyBAQCBjbGFz
cyBfRW51bVN0YXRlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAg
ICAgcmV0dXJuIFRydWUKIAorCiBkZWYgY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3Rz
KGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yKToKICAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHdl
IHNlZSBjZXJ0YWluIG5vbi1BTlNJIGNvbnN0cnVjdHMgaWdub3JlZCBieSBnY2MtMi4KQEAgLTIw
NjksNiArMjA3MCw3IEBAIGRlZiBjaGVja19tZW1iZXJfaW5pdGlhbGl6YXRpb25fbGlzdChjbGUK
ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAorCiBkZWYgZ2V0X3By
ZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlcik6CiAgICAgIiIi
UmV0dXJuIHRoZSBtb3N0IHJlY2VudCBub24tYmxhbmsgbGluZSBhbmQgaXRzIGxpbmUgbnVtYmVy
LgogCkBAIC0yMTA0LDcgKzIxMDYsNyBAQCBkZWYgY2hlY2tfbmFtZXNwYWNlX2luZGVudGF0aW9u
KGNsZWFuX2xpCiAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgogICAgICIiIgogCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5l
X251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgorICAgIGxpbmUgPSBj
bGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAjIEdldCByaWQgb2YgY29tbWVudHMgYW5k
IHN0cmluZ3MuCiAKICAgICBuYW1lc3BhY2VfbWF0Y2ggPSBtYXRjaChyJyg/UDxuYW1lc3BhY2Vf
aW5kZW50YXRpb24+XHMqKW5hbWVzcGFjZVxzK1xTK1xzKntccyokJywgbGluZSkKICAgICBpZiBu
b3QgbmFtZXNwYWNlX21hdGNoOgpAQCAtMjExNyw5ICsyMTE5LDkgQEAgZGVmIGNoZWNrX25hbWVz
cGFjZV9pbmRlbnRhdGlvbihjbGVhbl9saQogICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICd3aGl0ZXNwYWNlL2luZGVudCcsIDQsCiAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIHNo
b3VsZCBuZXZlciBiZSBpbmRlbnRlZC4nKQogICAgICAgICByZXR1cm4KLSAgICBsb29raW5nX2Zv
cl9zZW1pY29sb24gPSBGYWxzZTsKKyAgICBsb29raW5nX2Zvcl9zZW1pY29sb24gPSBGYWxzZQog
ICAgIGxpbmVfb2Zmc2V0ID0gMAotICAgIGluX3ByZXByb2Nlc3Nvcl9kaXJlY3RpdmUgPSBGYWxz
ZTsKKyAgICBpbl9wcmVwcm9jZXNzb3JfZGlyZWN0aXZlID0gRmFsc2UKICAgICBmb3IgY3VycmVu
dF9saW5lIGluIGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciArIDE6XToKICAgICAgICAg
bGluZV9vZmZzZXQgKz0gMQogICAgICAgICBpZiBub3QgY3VycmVudF9saW5lLnN0cmlwKCk6CkBA
IC0yMTMwLDIxICsyMTMyLDIyIEBAIGRlZiBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oY2xl
YW5fbGkKICAgICAgICAgICAgICAgICAgICAgZmlsZV9zdGF0ZS5zZXRfZGlkX2luc2lkZV9uYW1l
c3BhY2VfaW5kZW50X3dhcm5pbmcoKQogICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRl
bnRlZC4nKQotICAgICAgICAgICAgaWYgaW5fcHJlcHJvY2Vzc29yX2RpcmVjdGl2ZSBvciAoY3Vy
cmVudF9saW5lLnN0cmlwKClbMF0gPT0gJyMnKTogIyBUaGlzIHRha2VzIGNhcmUgb2YgcHJlcHJv
Y2Vzc29yIGRpcmVjdGl2ZSBzeW50YXguCisgICAgICAgICAgICBpZiBpbl9wcmVwcm9jZXNzb3Jf
ZGlyZWN0aXZlIG9yIChjdXJyZW50X2xpbmUuc3RyaXAoKVswXSA9PSAnIycpOiAgIyBUaGlzIHRh
a2VzIGNhcmUgb2YgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBzeW50YXguCiAgICAgICAgICAgICAg
ICAgaW5fcHJlcHJvY2Vzc29yX2RpcmVjdGl2ZSA9IGN1cnJlbnRfbGluZVstMV0gPT0gJ1xcJwog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb29raW5nX2Zvcl9zZW1pY29sb24g
PSAoKGN1cnJlbnRfbGluZS5maW5kKCc7JykgPT0gLTEpIGFuZCAoY3VycmVudF9saW5lLnN0cmlw
KClbLTFdICE9ICd9JykpIG9yIChjdXJyZW50X2xpbmVbLTFdID09ICdcXCcpCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBsb29raW5nX2Zvcl9zZW1pY29sb24gPSBGYWxzZTsgIyBJZiB3ZSBo
YXZlIGEgYnJhY2Ugd2UgbWF5IG5vdCBuZWVkIGEgc2VtaWNvbG9uLgorICAgICAgICAgICAgbG9v
a2luZ19mb3Jfc2VtaWNvbG9uID0gRmFsc2UgICMgSWYgd2UgaGF2ZSBhIGJyYWNlIHdlIG1heSBu
b3QgbmVlZCBhIHNlbWljb2xvbi4KICAgICAgICAgY3VycmVudF9pbmRlbnRhdGlvbl9sZXZlbCAr
PSBjdXJyZW50X2xpbmUuY291bnQoJ3snKSAtIGN1cnJlbnRfbGluZS5jb3VudCgnfScpCiAgICAg
ICAgIGN1cnJlbnRfaW5kZW50YXRpb25fbGV2ZWwgKz0gY3VycmVudF9saW5lLmNvdW50KCcoJykg
LSBjdXJyZW50X2xpbmUuY291bnQoJyknKQogICAgICAgICBpZiBjdXJyZW50X2luZGVudGF0aW9u
X2xldmVsIDwgMDoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgYnJlYWsKIAogCiAj
IEVudW0gZGVjbGFyYXRpb24gd2hpdGVsaXN0CiBfQUxMT1dfQUxMX1VQUEVSQ0FTRV9FTlVNID0g
WydKU1Rva2VuVHlwZSddCiAKKwogZGVmIGNoZWNrX2VudW1fY2FzaW5nKGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZW51bV9zdGF0ZSwgZXJyb3IpOgogICAgICIiIkxvb2tzIGZvciBpbmNvcnJl
Y3RseSBuYW1lZCBlbnVtIHZhbHVlcy4KIApAQCAtMjE2Miw2ICsyMTY1LDcgQEAgZGVmIGNoZWNr
X2VudW1fY2FzaW5nKGNsZWFuX2xpbmVzLCBsaW5lXwogICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ3JlYWRhYmlsaXR5L2VudW1fY2FzaW5nJywgNCwKICAgICAgICAgICAgICAgJ2VudW0gbWVt
YmVycyBzaG91bGQgdXNlIEludGVyQ2FwcyB3aXRoIGFuIGluaXRpYWwgY2FwaXRhbCBsZXR0ZXIg
b3IgaW5pdGlhbCBcJ2tcJyBmb3IgQy1zdHlsZSBlbnVtcy4nKQogCisKIGRlZiBjaGVja19kaXJl
Y3RpdmVfaW5kZW50YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBl
cnJvcik6CiAgICAgIiIiTG9va3MgZm9yIGluZGVudGF0aW9uIG9mIHByZXByb2Nlc3NvciBkaXJl
Y3RpdmVzLgogCkBAIC0yMTg4LDYgKzIxOTIsNyBAQCBkZWYgZ2V0X2luaXRpYWxfc3BhY2VzX2Zv
cl9saW5lKGNsZWFuX2xpCiAgICAgICAgIGluaXRpYWxfc3BhY2VzICs9IDEKICAgICByZXR1cm4g
aW5pdGlhbF9zcGFjZXMKIAorCiBkZWYgY2hlY2tfaW5kZW50YXRpb25fYW1vdW50KGNsZWFuX2xp
bmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRb
bGluZV9udW1iZXJdCiAgICAgaW5pdGlhbF9zcGFjZXMgPSBnZXRfaW5pdGlhbF9zcGFjZXNfZm9y
X2xpbmUobGluZSkKQEAgLTIyMjEsNyArMjIyNiw3IEBAIGRlZiBjaGVja191c2luZ19zdGQoY2xl
YW5fbGluZXMsIGxpbmVfbnUKICAgICBpZiBmaWxlX3N0YXRlLmlzX2Nfb3Jfb2JqZWN0aXZlX2Mo
KToKICAgICAgICAgcmV0dXJuCiAKLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVf
bnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisgICAgbGluZSA9IGNs
ZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQg
c3RyaW5ncy4KIAogICAgIHVzaW5nX3N0ZF9tYXRjaCA9IG1hdGNoKHInXHMqdXNpbmdccytzdGQ6
Oig/UDxtZXRob2RfbmFtZT5cUyspXHMqO1xzKiQnLCBsaW5lKQogICAgIGlmIG5vdCB1c2luZ19z
dGRfbWF0Y2g6CkBAIC0yMjU2LDYgKzIyNjEsNyBAQCBkZWYgY2hlY2tfdXNpbmdfbmFtZXNwYWNl
KGNsZWFuX2xpbmVzLCBsCiAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC91c2luZ19uYW1l
c3BhY2UnLCA0LAogICAgICAgICAgICJEbyBub3QgdXNlICd1c2luZyBuYW1lc3BhY2UgJXM7Jy4i
ICUgbWV0aG9kX25hbWUpCiAKKwogZGVmIGNoZWNrX21heF9taW5fbWFjcm9zKGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpOgogICAgICIiIkxvb2tzIGZvciB1c2Ug
b2YgTUFYKCkgYW5kIE1JTigpIG1hY3JvcyB0aGF0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHN0
ZDo6bWF4KCkgYW5kIHN0ZDo6bWluKCkuCiAKQEAgLTIyNzEsNyArMjI3Nyw3IEBAIGRlZiBjaGVj
a19tYXhfbWluX21hY3JvcyhjbGVhbl9saW5lcywgbGkKICAgICBpZiBmaWxlX3N0YXRlLmlzX2Nf
b3Jfb2JqZWN0aXZlX2MoKToKICAgICAgICAgcmV0dXJuCiAKLSAgICBsaW5lID0gY2xlYW5fbGlu
ZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3Mu
CisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBv
ZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KIAogICAgIG1heF9taW5fbWFjcm9zX3NlYXJjaCA9IHNl
YXJjaChyJ1xiKD9QPG1heF9taW5fbWFjcm8+KE1BWHxNSU4pKVxzKlwoJywgbGluZSkKICAgICBp
ZiBub3QgbWF4X21pbl9tYWNyb3Nfc2VhcmNoOgpAQCAtMjMzMSw2ICsyMzM3LDcgQEAgZGVmIGNo
ZWNrX2N0eXBlX2Z1bmN0aW9ucyhjbGVhbl9saW5lcywgbAogICAgICAgICAgICdVc2UgZXF1aXZl
bGVudCBmdW5jdGlvbiBpbiA8d3RmL0FTQ0lJQ1R5cGUuaD4gaW5zdGVhZCBvZiB0aGUgJXMoKSBm
dW5jdGlvbi4nCiAgICAgICAgICAgJSAoY3R5cGVfZnVuY3Rpb24pKQogCisKIGRlZiBjaGVja19z
d2l0Y2hfaW5kZW50YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAg
IiIiTG9va3MgZm9yIGluZGVudGF0aW9uIGVycm9ycyBpbnNpZGUgb2Ygc3dpdGNoIHN0YXRlbWVu
dHMuCiAKQEAgLTIzNDAsNyArMjM0Nyw3IEBAIGRlZiBjaGVja19zd2l0Y2hfaW5kZW50YXRpb24o
Y2xlYW5fbGluZXMKICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBl
cnJvcnMgZm91bmQuCiAgICAgIiIiCiAKLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisgICAgbGluZSA9
IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBjb21tZW50cyBh
bmQgc3RyaW5ncy4KIAogICAgIHN3aXRjaF9tYXRjaCA9IG1hdGNoKHInKD9QPHN3aXRjaF9pbmRl
bnRhdGlvbj5ccyopc3dpdGNoXHMqXCguK1wpXHMqe1xzKiQnLCBsaW5lKQogICAgIGlmIG5vdCBz
d2l0Y2hfbWF0Y2g6CkBAIC0yMzY4LDcgKzIzNzUsNyBAQCBkZWYgY2hlY2tfc3dpdGNoX2luZGVu
dGF0aW9uKGNsZWFuX2xpbmVzCiAgICAgICAgICAgICAjIHN0aWxsIGNhdGNoIGFsbCBpbmRlbnRh
dGlvbiBpc3N1ZXMgaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICBlbmNvdW50ZXJlZF9uZXN0ZWRf
c3dpdGNoID0gVHJ1ZQogCi0gICAgICAgIGN1cnJlbnRfaW5kZW50YXRpb25fbWF0Y2ggPSBtYXRj
aChyJyg/UDxpbmRlbnRhdGlvbj5ccyopKD9QPHJlbWFpbmluZ19saW5lPi4qKSQnLCBjdXJyZW50
X2xpbmUpOworICAgICAgICBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoID0gbWF0Y2gocicoP1A8
aW5kZW50YXRpb24+XHMqKSg/UDxyZW1haW5pbmdfbGluZT4uKikkJywgY3VycmVudF9saW5lKQog
ICAgICAgICBjdXJyZW50X2luZGVudGF0aW9uID0gY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaC5n
cm91cCgnaW5kZW50YXRpb24nKQogICAgICAgICByZW1haW5pbmdfbGluZSA9IGN1cnJlbnRfaW5k
ZW50YXRpb25fbWF0Y2guZ3JvdXAoJ3JlbWFpbmluZ19saW5lJykKIApAQCAtMjQxMCw3ICsyNDE3
LDcgQEAgZGVmIGNoZWNrX2JyYWNlcyhjbGVhbl9saW5lcywgbGluZV9udW1iZQogICAgICAgZXJy
b3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KICAgICAiIiIK
IAotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBv
ZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXSAgIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgogCiAgICAgaWYg
bWF0Y2gocidccyp7XHMqJCcsIGxpbmUpOgogICAgICAgICAjIFdlIGFsbG93IGFuIG9wZW4gYnJh
Y2UgdG8gc3RhcnQgYSBsaW5lIGluIHRoZSBjYXNlIHdoZXJlIHNvbWVvbmUKQEAgLTI1MjEsNyAr
MjUyOCw3IEBAIGRlZiBjaGVja19leGl0X3N0YXRlbWVudF9zaW1wbGlmaWNhdGlvbnMKICAgICAg
IGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCiAgICAg
IiIiCiAKLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCBy
aWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRl
ZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KIAogICAg
IGVsc2VfbWF0Y2ggPSBtYXRjaChyJyg/UDxlbHNlX2luZGVudGF0aW9uPlxzKikoXH1ccyopP2Vs
c2UoXHMraWZccypcKHwoP1A8ZWxzZT5ccyooXHtccyopP1xaKSknLCBsaW5lKQogICAgIGlmIG5v
dCBlbHNlX21hdGNoOgpAQCAtMjU1MSw3ICsyNTU4LDcgQEAgZGVmIGNoZWNrX2V4aXRfc3RhdGVt
ZW50X3NpbXBsaWZpY2F0aW9ucwogICAgICAgICBpZiBjdXJyZW50X2xpbmUgPT0gZWxzZV9pbmRl
bnRhdGlvbiArICd9JzoKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgY3VycmVudF9p
bmRlbnRhdGlvbl9tYXRjaCA9IG1hdGNoKHInKD9QPGluZGVudGF0aW9uPlxzKikoP1A8cmVtYWlu
aW5nX2xpbmU+LiopJCcsIGN1cnJlbnRfbGluZSk7CisgICAgICAgIGN1cnJlbnRfaW5kZW50YXRp
b25fbWF0Y2ggPSBtYXRjaChyJyg/UDxpbmRlbnRhdGlvbj5ccyopKD9QPHJlbWFpbmluZ19saW5l
Pi4qKSQnLCBjdXJyZW50X2xpbmUpCiAgICAgICAgIGN1cnJlbnRfaW5kZW50YXRpb24gPSBjdXJy
ZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdpbmRlbnRhdGlvbicpCiAgICAgICAgIHJlbWFp
bmluZ19saW5lID0gY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaC5ncm91cCgncmVtYWluaW5nX2xp
bmUnKQogCkBAIC0yNzE3LDYgKzI3MjQsNyBAQCBkZWYgY2hlY2tfZm9yX251bGwoY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtCiAgICAgaWYgc2VhcmNoKHInXGJOVUxMXGInLCBsaW5lKSBhbmQgc2VhcmNo
KHInXGJOVUxMXGInLCBDbGVhbnNlZExpbmVzLmNvbGxhcHNlX3N0cmluZ3MobGluZSkpOgogICAg
ICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L251bGwnLCA0LCAnVXNlIG51bGxw
dHIgaW5zdGVhZCBvZiBOVUxMIChldmVuIGluICpjb21tZW50cyopLicpCiAKKwogZGVmIGdldF9s
aW5lX3dpZHRoKGxpbmUpOgogICAgICIiIkRldGVybWluZXMgdGhlIHdpZHRoIG9mIHRoZSBsaW5l
IGluIGNvbHVtbiBwb3NpdGlvbnMuCiAKQEAgLTMyNzMsNiArMzI4MSw3IEBAIGRlZiBjaGVja19s
YW5ndWFnZShmaWxlbmFtZSwgY2xlYW5fbGluZXMKICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVz
aW5nIHRvVGV4dCBoZWxwZXIgZnVuY3Rpb24gaW4gV2ViQ29yZS9kb20vVGV4dC5oICcKICAgICAg
ICAgICAgICAgJ2luc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8VGV4dCo+JykKIAorCiBkZWYgY2hlY2tf
aWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGlu
ZSwgZmlsZV9zdGF0ZSwgZXJyb3IpOgogICAgICIiIkNoZWNrcyBpZiBpZGVudGlmaWVyIG5hbWVz
IGNvbnRhaW4gYW55IHVuZGVyc2NvcmVzLgogCkBAIC0zNDIxLDYgKzM0MzAsNyBAQCBkZWYgY2hl
Y2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uCiAgICAgICAgIG51bWJlcl9vZl9pZGVu
dGlmaWVycyArPSAxCiAgICAgICAgIGxpbmUgPSBsaW5lW21hdGNoZWQuZW5kKCk6XQogCisKIGRl
ZiBjaGVja19jX3N0eWxlX2Nhc3QobGluZV9udW1iZXIsIGxpbmUsIHJhd19saW5lLCBjYXN0X3R5
cGUsIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKToKICAgICAiIiJDaGVj
a3MgZm9yIGEgQy1zdHlsZSBjYXN0IGJ5IGxvb2tpbmcgZm9yIHRoZSBwYXR0ZXJuLgpAQCAtMzY4
NCw3ICszNjk0LDcgQEAgZGVmIGNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbgog
CiAgICAgIyBpbmNsdWRlX3N0YXRlIGlzIG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24sIHNvIHdl
IGl0ZXJhdGUgb3ZlciBhIGNvcHkgb2YKICAgICAjIHRoZSBrZXlzLgotICAgIGZvciBoZWFkZXIg
aW4gaW5jbHVkZV9zdGF0ZS5rZXlzKCk6ICAjTk9MSU5UCisgICAgZm9yIGhlYWRlciBpbiBpbmNs
dWRlX3N0YXRlLmtleXMoKTogICMgTk9MSU5UCiAgICAgICAgIChzYW1lX21vZHVsZSwgY29tbW9u
X3BhdGgpID0gZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlKGFic19maWxlbmFtZSwgaGVhZGVy
KQogICAgICAgICBmdWxscGF0aCA9IGNvbW1vbl9wYXRoICsgaGVhZGVyCiAgICAgICAgIGlmIHNh
bWVfbW9kdWxlIGFuZCB1cGRhdGVfaW5jbHVkZV9zdGF0ZShmdWxscGF0aCwgaW5jbHVkZV9zdGF0
ZSk6CkBAIC0zNzE4LDYgKzM3MjgsNyBAQCBkZWYgY2hlY2tfcGxhdGZvcm1oX2NvbW1lbnRzKGxp
bmVzLCBlcnJvCiAgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9jcHBf
Y29tbWVudCcsIDUsICdDUFAgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkIGluIFBsYXRmb3JtLmgs
ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3BsZWFzZSB1c2UgQyBjb21tZW50cyAvKiAuLi4gKi8nKQogCisKIGRlZiBwcm9jZXNz
X2xpbmUoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgICBjbGVhbl9s
aW5lcywgbGluZSwgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25fc3RhdGUsCiAgICAgICAgICAgICAg
ICAgIGNsYXNzX3N0YXRlLCBmaWxlX3N0YXRlLCBlbnVtX3N0YXRlLCBhc21fc3RhdGUsIGVycm9y
KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNyBAQCBpbXBvcnQgY3BwIGFzIGNwcF9zdHlsZQogZnJvbSBjcHAgaW1wb3J0IENw
cENoZWNrZXIKIGZyb20gLi5maWx0ZXIgaW1wb3J0IEZpbHRlckNvbmZpZ3VyYXRpb24KIAorCiAj
IFRoaXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBf
c3R5bGUuRXJyb3IKICMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJp
ZnkgZWFjaCBjYXRlZ29yeSB3ZSBzZWUKICMgaXMgaW4gQ3BwQ2hlY2tlci5jYXRlZ29yaWVzLCB0
byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCkBAIC0yMzEsNiArMjMyLDcgQEAgY2xh
c3MgQ3BwRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdUaGUgcGFyYW1ldGVyIG5hbWUgIm9vRiIgYWRkcyBubyBpbmZvcm1hdGlvbiwgc28gaXQg
c2hvdWxkIGJlIHJlbW92ZWQuICBbcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWVdIFs1XScpCiAK
KwogY2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiUHJv
dmlkZXMgc29tZSB1c2VmdWwgaGVscGVyIGZ1bmN0aW9ucyBmb3IgY3BwX3N0eWxlIHRlc3RzLgog
CkBAIC0yNDIsNyArMjQ0LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0
Q2FzZQogCiAgICAgIyBGSVhNRTogUmVmYWN0b3IgdGhlIHVuaXQgdGVzdHMgc28gdGhlIGNvbmZp
ZGVuY2UgbGV2ZWwgaXMgcGFzc2VkCiAgICAgIyAgICAgICAgZXhwbGljaXRseSwganVzdCBsaWtl
IGl0IGlzIGluIHRoZSByZWFsIGNvZGUuCi0gICAgbWluX2NvbmZpZGVuY2UgPSAxOworICAgIG1p
bl9jb25maWRlbmNlID0gMQogCiAgICAgIyBIZWxwZXIgZnVuY3Rpb24gdG8gYXZvaWQgbmVlZGlu
ZyB0byBleHBsaWNpdGx5IHBhc3MgY29uZmlkZW5jZQogICAgICMgaW4gYWxsIHRoZSB1bml0IHRl
c3QgY2FsbHMgdG8gY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCkuCkBAIC03NTgsNiArNzYw
LDcgQEAgY2xhc3MgQ3BwMTFTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgZGVmIHRl
c3RfcnZhdWxlX3JlZmVyZW5jZV9pbl9wYXJhbWV0ZXJfcGFjayhzZWxmKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgndm9pZCByZXF1ZXN0Q29tcGxldGVkKEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cyknLCAnJykKIAorCiBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAK
ICAgICBkZWYgdGVzdF9hc21fbGluZXNfaWdub3JlZChzZWxmKToKQEAgLTIwNzcsNyArMjA4MCw3
IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzVdJykKICAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgncHJpbnRmKCJmb28iKTsgLy8gT3V0c2lkZSBxdW90ZXMuJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGkgPSAw
OyAvLyBIYXZpbmcgb25lIHNwYWNlIGlzIGZpbmUuJywnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnaW50IGkgPSAwOyAvLyBIYXZpbmcgb25lIHNwYWNlIGlzIGZpbmUuJywgJycpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0gMDsgIC8vIEhhdmluZyB0d28gc3BhY2VzIGlz
IGJhZC4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICdPbmUgc3BhY2UgYmVmb3JlIGVuZCBv
ZiBsaW5lIGNvbW1lbnRzJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNl
L2NvbW1lbnRzXSBbNV0nKQpAQCAtMjcxNCw2ICsyNzE3LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0
KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYSA9IDEg
PyAwIDogMzA7JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Jvb2wgYSA6IDE7Jywg
JycpCiAKKwogY2xhc3MgQ2xlYW5zZWRMaW5lc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgIGxpbmVzID0gWydMaW5lIDEnLApAQCAtNTIy
Miw3ICs1MjI2LDYgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdG9yID0gbm9kZTsnLCAn
JykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPE5vZGU+IHByb3RlY3RvciA9ICpub2Rl
OycsICcnKQogCi0KICAgICAgICAgIyBJbnZhbGlkIHByb3RlY3RvciBSZWZQdHIvUmVmIHZhcmlh
YmxlIG5hbWVzLgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9kZT4gcHJvdGVj
dG9yKHRoaXMpOycsICIncHJvdGVjdG9yJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxk
IGJlIG5hbWVkICdwcm90ZWN0ZWRUaGlzJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVk
XSBbNF0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdG9yKCp0
aGlzKTsnLCAiJ3Byb3RlY3RvcicgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3VsZCBiZSBu
YW1lZCAncHJvdGVjdGVkVGhpcycuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3Byb3RlY3RlZF0gWzRd
IikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9qcy5weQko
cmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9qcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBUaGlzIGNoZWNrZXIgaXMg
b25seSB1c2VkIHRvIGNoZWNrIFdlYkluCiBmcm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tlcgog
aW1wb3J0IHJlCiAKKwogY2xhc3MgSlNDaGVja2VyKG9iamVjdCk6CiAgICAgIiIiUHJvY2Vzc2Vz
IEphdmFTY3JpcHQgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgogCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXIucHkJ
KHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvanNvbmNoZWNrZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAgaW1wb3J0
IGpzb24KIGltcG9ydCByZQogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorCiBjbGFzcyBKU09OQ2hl
Y2tlcihvYmplY3QpOgogICAgICIiIlByb2Nlc3NlcyBKU09OIGxpbmVzIGZvciBjaGVja2luZyBz
dHlsZS4iIiIKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9w
bmcucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9wbmcucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvcG5nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIGZyb20g
d2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNrc3UKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBTQ01EZXRlY3RvcgogCisKIGNsYXNzIFBO
R0NoZWNrZXIob2JqZWN0KToKICAgICAiIiJDaGVjayBzdm46bWltZS10eXBlIGZvciBjaGVja2lu
ZyBzdHlsZSIiIgogCkBAIC03Miw0ICs3MywzIEBAIGNsYXNzIFBOR0NoZWNrZXIob2JqZWN0KToK
ICAgICAgICAgICAgIGlmIHByb3BfZ2V0ICE9ICJpbWFnZS9wbmciOgogICAgICAgICAgICAgICAg
IGVycm9yc3RyID0gIlNldCB0aGUgc3ZuOm1pbWUtdHlwZSBwcm9wZXJ0eSAoc3ZuIHByb3BzZXQg
c3ZuOm1pbWUtdHlwZSBpbWFnZS9wbmcgJXMpLiIgJSBzZWxmLl9maWxlX3BhdGgKICAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IoMCwgJ2ltYWdlL3BuZycsIDUsIGVycm9y
c3RyKQotCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3RleHQu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90
ZXh0LnB5CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3RleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogZnJv
bSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKIAorCiBjbGFzcyBUZXh0Q2hlY2tlcihvYmplY3Qp
OgogCiAgICAgIiIiUHJvY2Vzc2VzIHRleHQgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXh0X3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
dGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBAIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRleHQgYXMgdGV4dF9zdHlsZQog
ZnJvbSB0ZXh0IGltcG9ydCBUZXh0Q2hlY2tlcgogCisKIGNsYXNzIFRleHRTdHlsZVRlc3RDYXNl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0Q2FzZSBmb3IgdGV4dF9zdHlsZS5weSIi
IgogCkBAIC02NCwxMyArNjUsMTEgQEAgY2xhc3MgVGV4dFN0eWxlVGVzdENhc2UodW5pdHRlc3Qu
VGVzdENhcwogICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKCcnLCBsaW5lcywgZXJyb3Jf
Zm9yX3Rlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmhhZF9lcnJvciwgJyVzIHNo
b3VsZCBoYXZlIGFuIGVycm9yIFt3aGl0ZXNwYWNlL3RhYl0uJyAlIGxpbmVzKQogCi0KICAgICBk
ZWYgdGVzdF9ub19lcnJvcihzZWxmKToKICAgICAgICAgIiIiVGVzdHMgZm9yIG5vIGVycm9yIGNh
c2VzLiIiIgogICAgICAgICBzZWxmLmFzc2VydE5vRXJyb3IoWycnXSkKICAgICAgICAgc2VsZi5h
c3NlcnROb0Vycm9yKFsnYWJjIGRlZicsICdnZ2cnXSkKIAotCiAgICAgZGVmIHRlc3RfZXJyb3Io
c2VsZik6CiAgICAgICAgICIiIlRlc3RzIGZvciBlcnJvciBjYXNlcy4iIiIKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcnJvcihbJzIwMDktMTItMTZcdEtlbnQgVGFtdXJhXHQ8dGtlbnRAY2hyb21pdW0u
b3JnPiddLCAxKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkJKHJldmlzaW9u
IDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIGRlZiBfcHJpbnRfcmVzdWx0c19hc19qc29uKHN0cmVh
bSwgYWxsX3QKIAogICAgIGpzb24uZHVtcChyZXN1bHRzLCBzdHJlYW0sIHNlcGFyYXRvcnM9KCcs
JywgJzonKSkKIAorCiBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZmlsZXN5c3RlbT1Ob25lKToKICAgICAgICAgc2VsZi5maW5kZXIgPSBGaW5kZXIoZmlsZXN5
c3RlbSBvciBGaWxlU3lzdGVtKCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2NvbnZlcnRlci5weQkocmV2aXNpb24gMjAyMzI1KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw0ICsy
MjMsMyBAQCBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2VyKToKIAogICAgIGRlZiBo
YW5kbGVfcGkoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuY29udmVydGVkX2RhdGEuZXh0ZW5k
KFsnPD8nLCBkYXRhLCAnPiddKQotCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzI1KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgZnJvbSB3ZWJraXRweS53M2MudGVzdF9j
b252ZXJ0ZXIgaW1wb3J0IAogRFVNTVlfRklMRU5BTUUgPSAnZHVtbXkuaHRtbCcKIERVTU1ZX1BB
VEggPSAnZHVtbXkvdGVzdGhhcm5lc3MvcGF0aCcKIAorCiBjbGFzcyBXM0NUZXN0Q29udmVydGVy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIEZJWE1FOiBXaGVuIHdlIG1vdmUgdG8g
dXNpbmcgYSBNb2NrSG9zdCwgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQsIHNpbmNlCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjMyNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4
LDcgQEAgRkFLRV9SRVBPU0lUT1JZID0gewogXQogJycnIH0KIAorCiBjbGFzcyBUZXN0SW1wb3J0
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBfcGFyc2Vfb3B0aW9ucyhzZWxm
LCBhcmdzKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdG9yLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdG9yLnB5
CShyZXZpc2lvbiAyMDIzMjUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVs
YXRvci5weQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBJZiBwb3NzaWJsZSwgdXNl
IHJlYWwgQ29yZVNpbXVsYXRvci5mcmFtCiBEbyBub3QgdXNlIFB5T2JqQyB0byBkbG9wZW4gdGhl
IGZyYW1ld29yay4KICIiIgogCisKIGNsYXNzIERldmljZVR5cGUob2JqZWN0KToKICAgICAiIiIK
ICAgICBSZXByZXNlbnRzIGEgQ29yZVNpbXVsYXRvciBkZXZpY2UgdHlwZS4K
</data>
<flag name="review"
          id="305647"
          type_id="1"
          status="+"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="305648"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281889</attachid>
            <date>2016-06-22 17:44:17 -0700</date>
            <delta_ts>2016-06-22 18:13:58 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_formatting5</filename>
            <type>text/plain</type>
            <size>94962</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEwMiBAQAorMjAxNi0wNi0yMiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgRml4IHN0eWxlIGlzc3VlcyBpbiB3ZWJraXRweQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MDE5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgorCisgICAgICAgIEZpeGVkIHRoZSBmb3JtYXR0aW5nIGlz
c3VlcyBhcyByZXBvcnRlZCBieSBjaGVjay13ZWJraXQtc3R5bGUgaW4gd2Via2l0cHkuCisgICAg
ICAgIFRoZXJlIGlzIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlLgorICAgICAgICBPbmx5IGFmZmVj
dGVkIGZpbGUgbmFtZXMgcmV0YWluZWQgYmVsb3cgZm9yIGJyZXZpdHkuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvYnJvd3Nlcl9kcml2ZXIvYnJvd3Nlcl9k
cml2ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2Jy
b3dzZXJfZHJpdmVyL2Jyb3dzZXJfZHJpdmVyX2ZhY3RvcnkucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9odHRwX3NlcnZl
ci90d2lzdGVkX2h0dHBfc2VydmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYmVu
Y2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvc2ltcGxlX2h0dHBfc2VydmVyX2RyaXZl
ci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvdXRpbHMu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9n
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxv
Z191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGVja291dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGVja291dF9tb2NrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2NvbW1pdGluZm8ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvY29tbWl0aW5mb191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnNf
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2ly
Yy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHMucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzX3VuaXR0ZXN0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2hvc3RfbW9jay5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0
ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9i
dWlsZGJvdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVpbGRi
b3QvYnVpbGRib3RfbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVpbGRib3QvYnVpbGRib3RfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9pcmMvaXJjcHJveHlfdW5pdHRlc3QucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L25ldHdvcmt0cmFuc2FjdGlvbl91bml0dGVz
dC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9hdXRvaW5zdGFs
bC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dz
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9l
eGVjdXRpdmUucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4
ZWN1dGl2ZV9tb2NrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9leGVjdXRpdmVfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vbG9ndXRpbHNfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGhfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3RocmVhZC90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi90aHJlYWQvdGhyZWFkZWRtZXNz
YWdlcXVldWVfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRf
d3JpdGVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9jb25m
aWd1cmF0aW9uLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21v
ZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9tb2RlbHMvdGVzdF9mYWlsdXJlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0
aW9udGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlv
bnRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9w
cm9jZXNzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9qc29uY2hlY2tlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3BuZy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3RleHQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy90ZXh0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvZXJyb3JfaGFuZGxlcnMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9m
aWx0ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWx0ZXJfdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXJfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRvci5weToKKwogMjAxNi0wNi0yMiAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGF0YWJhc2VQcm9jZXNzIGRvZXNuJ3Qg
aGFuZGxlIFdlYlByb2Nlc3NlcyBnb2luZyBhd2F5IHVuY2xlYW5seS4KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci91dGlscy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvdXRpbHMucHkJKHJldmlzaW9u
IDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci91dGls
cy5weQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBkZWYgZm9yY2VfcmVtb3ZlKHBh
dGgpOgogICAgICAgICBfbG9nLmluZm8oIkVycm9yIHJlbW92aW5nICVzOiAlcyIgJSAocGF0aCwg
ZXJyb3IpKQogICAgICAgICBwYXNzCiAKKwogIyBCb3Jyb3cgdGhpcyBjb2RlIGZyb20KICMgJ2h0
dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjI4MTg1MC90aW1lb3V0LWZ1bmN0aW9u
LWlmLWl0LXRha2VzLXRvby1sb25nLXRvLWZpbmlzaCcKIGNsYXNzIFRpbWVvdXRFcnJvcihFeGNl
cHRpb24pOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2Jy
b3dzZXJfZHJpdmVyL2Jyb3dzZXJfZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9icm93c2VyX2RyaXZlci9icm93c2VyX2RyaXZl
ci5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1h
cmtfcnVubmVyL2Jyb3dzZXJfZHJpdmVyL2Jyb3dzZXJfZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0yLDYgKzIsNyBAQAogCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRo
b2QKIAorCiBjbGFzcyBCcm93c2VyRHJpdmVyKG9iamVjdCk6CiAgICAgcGxhdGZvcm0gPSBOb25l
CiAgICAgYnJvd3Nlcl9uYW1lID0gTm9uZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9i
ZW5jaG1hcmtfcnVubmVyL2Jyb3dzZXJfZHJpdmVyL2Jyb3dzZXJfZHJpdmVyX2ZhY3RvcnkucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2Jy
b3dzZXJfZHJpdmVyL2Jyb3dzZXJfZHJpdmVyX2ZhY3RvcnkucHkJKHJldmlzaW9uIDIwMjM2MSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmVuY2htYXJrX3J1bm5lci9icm93c2VyX2RyaXZl
ci9icm93c2VyX2RyaXZlcl9mYWN0b3J5LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw2
IEBAIGNsYXNzIEJyb3dzZXJEcml2ZXJGYWN0b3J5KG9iamVjdCk6CiAgICAgcGxhdGZvcm1zID0g
c2V0KCkKICAgICBicm93c2VycyA9IHNldCgpCiAKLQogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBhdmFpbGFibGVfcGxhdGZvcm1zKGNscyk6CiAgICAgICAgIHJldHVybiBsaXN0KGNscy5wbGF0
Zm9ybXMpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0
cF9zZXJ2ZXJfZHJpdmVyL3NpbXBsZV9odHRwX3NlcnZlcl9kcml2ZXIucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2Ry
aXZlci9zaW1wbGVfaHR0cF9zZXJ2ZXJfZHJpdmVyLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2JlbmNobWFya19ydW5uZXIvaHR0cF9zZXJ2ZXJfZHJpdmVy
L3NpbXBsZV9odHRwX3NlcnZlcl9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4
LDcgQEAgY2xhc3MgU2ltcGxlSFRUUFNlcnZlckRyaXZlcihIVFRQU2VydmVyRAogICAgICAgICAg
ICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdIVFRQIFNlcnZlciBpcyBzZXJ2aW5nIGF0IHBvcnQ6
ICVkJywgc2VsZi5fc2VydmVyX3BvcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawog
ICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6Ci0gICAgICAgICAgICAg
ICAgICAgICBfbG9nLmluZm8oJ0Vycm9yOiAlcycgJSBlcnJvcikKKyAgICAgICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCdFcnJvcjogJXMnICUgZXJyb3IpCiAgICAgICAgICAgICAgICAgX2xvZy5p
bmZvKCdTZXJ2ZXIgcG9ydCBpcyBub3QgZm91bmQgdGhpcyB0aW1lLCByZXRyeSBhZnRlciAlZiBz
ZWNvbmRzJyAlIGludGVydmFsKQogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoaW50ZXJ2YWwp
CiAgICAgICAgICAgICAgICAgaW50ZXJ2YWwgKj0gMgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9odHRwX3NlcnZlci90d2lz
dGVkX2h0dHBfc2VydmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
YmVuY2htYXJrX3J1bm5lci9odHRwX3NlcnZlcl9kcml2ZXIvaHR0cF9zZXJ2ZXIvdHdpc3RlZF9o
dHRwX3NlcnZlci5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9iZW5jaG1hcmtfcnVubmVyL2h0dHBfc2VydmVyX2RyaXZlci9odHRwX3NlcnZlci90d2lzdGVk
X2h0dHBfc2VydmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2ICsxNyw3IEBAIGZyb20gdHdp
c3RlZC5pbnRlcm5ldCBpbXBvcnQgcmVhY3RvcgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCiAKKwogY2xhc3MgU2VydmVyQ29udHJvbChSZXNvdXJjZSk6CiAgICAgaXNMZWFm
ID0gVHJ1ZQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9ob3N0X21vY2su
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vaG9zdF9tb2Nr
LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9o
b3N0X21vY2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTc0LDQgKzc0LDMgQEAgY2xhc3MgTW9ja0hv
c3QoTW9ja1N5c3RlbUhvc3QpOgogCiAgICAgZGVmIHdhdGNoX2xpc3Qoc2VsZik6CiAgICAgICAg
IHJldHVybiBzZWxmLl93YXRjaF9saXN0Ci0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkJKHJldmlzaW9uIDIwMjM2MSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQko
d29ya2luZyBjb3B5KQpAQCAtMjk0LDYgKzI5NCw3IEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9i
amVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAor
CiAjIEZJWE1FOiBWYXJpb3VzIG1ldGhvZHMgb24gQ2hhbmdlTG9nIHNob3VsZCBtb3ZlIGludG8g
Q2hhbmdlTG9nRW50cnkgaW5zdGVhZC4KIGNsYXNzIENoYW5nZUxvZyhvYmplY3QpOgogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTY4MSw3ICs2ODEsNiBAQCBjbGFzcyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgZXhwZWN0ZWRfY29udGVudHMgPSAiPT0gUm9sbGVkIG92ZXIg
dG8gQ2hhbmdlTG9nLTIwMDktMDYtMTYgPT1cbiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChh
Y3R1YWxfY29udGVudHMuc3BsaXRsaW5lcygpLCBleHBlY3RlZF9jb250ZW50cy5zcGxpdGxpbmVz
KCkpCiAKLQogICAgIGRlZiB0ZXN0X3ByZXBlbmRfdGV4dChzZWxmKToKICAgICAgICAgZnMgPSBN
b2NrRmlsZVN5c3RlbSgpCiAgICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShzZWxmLl9jaGFuZ2Vs
b2dfcGF0aCwgc2VsZi5fZXhhbXBsZV9jaGFuZ2Vsb2cpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291dC5weQkocmV2aXNpb24gMjAy
MzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXQu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBDaGVja291dChvYmpl
Y3QpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkX2Zyb21f
Y2hhbmdlbG9nKHNlbGYuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQs
IGNoYW5nZWRfZmlsZXMpLm1lc3NhZ2UoKSkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBl
OgotICAgICAgICAgICAgcGFzcyAjIFdlIG1pZ2h0IG5vdCBoYXZlIENoYW5nZUxvZ3MuCisgICAg
ICAgICAgICBwYXNzICAjIFdlIG1pZ2h0IG5vdCBoYXZlIENoYW5nZUxvZ3MuCiAKICAgICBkZWYg
YXBwbHlfcGF0Y2goc2VsZiwgcGF0Y2gpOgogICAgICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCB0
aGUgcGF0Y2ggd2FzIG5vdCBtYWRlIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5LgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfbW9jay5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGVja291
dF9tb2NrLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGVja291dF9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5
Niw3IEBAIG1vY2tfcmV2aXNpb25zID0gewogICAgIH0pCiB9CiAKKwogY2xhc3MgTW9ja0NoZWNr
b3V0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBJ
dCdzIHVuY2xlYXIgaWYgYSBNb2NrQ2hlY2tvdXQgaXMgdmVyeSB1c2VmdWwuICBBIG5vcm1hbCBD
aGVja291dApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hl
Y2tvdXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjM2MSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNiArMzMwLDcgQEAgUGF0Y2ggYnkgRGFuaWVsIEJh
dGVzIDxkYWJhdGVzQGFwcGxlLmNvbQogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlX2xp
bmVzID0gY29tbWl0X21lc3NhZ2UubWVzc2FnZV9saW5lc1sxOl0KICAgICAgICAgc2VsZi5hc3Nl
cnRNdWx0aUxpbmVFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIGV4cGVjdGVkX2NvbW1p
dF9tZXNzYWdlKQogCisKIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIF9tYWtlX2NoZWNrb3V0KHNlbGYpOgogICAgICAgICByZXR1cm4gQ2hlY2tvdXQoc2Nt
PU1vY2tTQ00oKSwgZmlsZXN5c3RlbT1Nb2NrRmlsZVN5c3RlbSgpLCBleGVjdXRpdmU9TW9ja0V4
ZWN1dGl2ZSgpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
Y29tbWl0aW5mby5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9jb21taXRpbmZvLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21taXRpbmZvLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIENvbW1pdEluZm8ob2JqZWN0KToKICAgICAgICAgICAg
IHNlbGYuYXV0aG9yKCksCiAgICAgICAgICAgICBzZWxmLnJldmlld2VyKCksCiAgICAgICAgIF0K
LSAgICAgICAgcmV0dXJuIHNldChbcGFydHkgZm9yIHBhcnR5IGluIHJlc3BvbnNpYmxlX3BhcnRp
ZXMgaWYgcGFydHldKSAjIEZpbHRlciBvdXQgTm9uZQorICAgICAgICByZXR1cm4gc2V0KFtwYXJ0
eSBmb3IgcGFydHkgaW4gcmVzcG9uc2libGVfcGFydGllcyBpZiBwYXJ0eV0pICAjIEZpbHRlciBv
dXQgTm9uZQogCiAgICAgIyBGSVhNRTogSXQgaXMgc2xpZ2h0bHkgbGFtZSB0aGF0IHRoaXMgInZp
ZXciIG1ldGhvZCBpcyBvbiB0aGlzICJtb2RlbCIgY2xhc3MgKGluIE1WQyB0ZXJtcykKICAgICBk
ZWYgYmxhbWVfc3RyaW5nKHNlbGYsIGJ1Z3MpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvY29tbWl0aW5mb191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jb21taXRpbmZvX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9jb21taXRpbmZvX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY29t
bWl0aW5mbyBpbXBvcnQgQ29tbWl0SW5mbwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNv
bW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIENvbW1pdHRlciwgUmV2aWV3ZXIKIAorCiBj
bGFzcyBDb21taXRJbmZvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9j
b21taXRfaW5mb19jcmVhdGlvbihzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAg
KzMzLDExIEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5kaWZmX3Rlc3RfZGF0YSBpbXBvcnQgRElGRl9URVNUX0RBVEEKIAorCiBjbGFzcyBEaWZmUGFy
c2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbWF4RGlmZiA9IE5vbmUKIAotICAgIGRl
ZiB0ZXN0X2RpZmZfcGFyc2VyKHNlbGYsIHBhcnNlciA9IE5vbmUpOgorICAgIGRlZiB0ZXN0X2Rp
ZmZfcGFyc2VyKHNlbGYsIHBhcnNlcj1Ob25lKToKICAgICAgICAgaWYgbm90IHBhcnNlcjoKICAg
ICAgICAgICAgIHBhcnNlciA9IGRpZmZfcGFyc2VyLkRpZmZQYXJzZXIoRElGRl9URVNUX0RBVEEu
c3BsaXRsaW5lcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihwYXJzZXIuZmls
ZXMpKQpAQCAtMTE4LDExICsxMTksMTEgQEAgY2xhc3MgRGlmZlBhcnNlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBwID0gcmUuY29tcGlsZShyJyAoW2F8Yl0pLycpCiAKICAgICAg
ICAgcHJlZml4ZXMgPSBbCi0gICAgICAgICAgICB7ICdhJyA6ICdpJywgJ2InIDogJ3cnIH0sICMg
Z2l0LWRpZmYgKGNvbXBhcmVzIHRoZSAoaSluZGV4IGFuZCB0aGUgKHcpb3JrIHRyZWUpCi0gICAg
ICAgICAgICB7ICdhJyA6ICdjJywgJ2InIDogJ3cnIH0sICMgZ2l0LWRpZmYgSEVBRCAoY29tcGFy
ZXMgYSAoYylvbW1pdCBhbmQgdGhlICh3KW9yayB0cmVlKQotICAgICAgICAgICAgeyAnYScgOiAn
YycsICdiJyA6ICdpJyB9LCAjIGdpdCBkaWZmIC0tY2FjaGVkIChjb21wYXJlcyBhIChjKW9tbWl0
IGFuZCB0aGUgKGkpbmRleCkKLSAgICAgICAgICAgIHsgJ2EnIDogJ28nLCAnYicgOiAndycgfSwg
IyBnaXQtZGlmZiBIRUFEOmZpbGUxIGZpbGUyIChjb21wYXJlcyBhbiAobyliamVjdCBhbmQgYSAo
dylvcmsgdHJlZSBlbnRpdHkpCi0gICAgICAgICAgICB7ICdhJyA6ICcxJywgJ2InIDogJzInIH0s
ICMgZ2l0IGRpZmYgLS1uby1pbmRleCBhIGIgKGNvbXBhcmVzIHR3byBub24tZ2l0IHRoaW5ncyAo
MSkgYW5kICgyKSkKKyAgICAgICAgICAgIHsnYSc6ICdpJywgJ2InOiAndyd9LCAgIyBnaXQtZGlm
ZiAoY29tcGFyZXMgdGhlIChpKW5kZXggYW5kIHRoZSAodylvcmsgdHJlZSkKKyAgICAgICAgICAg
IHsnYSc6ICdjJywgJ2InOiAndyd9LCAgIyBnaXQtZGlmZiBIRUFEIChjb21wYXJlcyBhIChjKW9t
bWl0IGFuZCB0aGUgKHcpb3JrIHRyZWUpCisgICAgICAgICAgICB7J2EnOiAnYycsICdiJzogJ2kn
fSwgICMgZ2l0IGRpZmYgLS1jYWNoZWQgKGNvbXBhcmVzIGEgKGMpb21taXQgYW5kIHRoZSAoaSlu
ZGV4KQorICAgICAgICAgICAgeydhJzogJ28nLCAnYic6ICd3J30sICAjIGdpdC1kaWZmIEhFQUQ6
ZmlsZTEgZmlsZTIgKGNvbXBhcmVzIGFuIChvKWJqZWN0IGFuZCBhICh3KW9yayB0cmVlIGVudGl0
eSkKKyAgICAgICAgICAgIHsnYSc6ICcxJywgJ2InOiAnMid9LCAgIyBnaXQgZGlmZiAtLW5vLWlu
ZGV4IGEgYiAoY29tcGFyZXMgdHdvIG5vbi1naXQgdGhpbmdzICgxKSBhbmQgKDIpKQogICAgICAg
ICBdCiAKICAgICAgICAgZm9yIHByZWZpeCBpbiBwcmVmaXhlczoKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weQkocmV2aXNpb24g
MjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3Nj
bS5weQkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQCBjbGFzcyBBdXRoZW50aWNhdGlv
bkVycm9yKEV4Y2VwdGlvbik6CiAgICAgICAgIHNlbGYucHJvbXB0X2Zvcl9wYXNzd29yZCA9IHBy
b21wdF9mb3JfcGFzc3dvcmQKIAogCi0KICMgU0NNIG1ldGhvZHMgYXJlIGV4cGVjdGVkIHRvIHJl
dHVybiBwYXRocyByZWxhdGl2ZSB0byBzZWxmLmNoZWNrb3V0X3Jvb3QuCiBjbGFzcyBTQ006CiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCwgZXhlY3V0aXZlPU5vbmUsIGZpbGVzeXN0ZW09Tm9u
ZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5jaGVja291dCBp
bXBvcnQgQ2hlY2tvdXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGlt
cG9ydCBDb21taXR0ZXIgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKLWZyb20g
d2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudCAjIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemls
bGEgaW1wb3J0IEF0dGFjaG1lbnQgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQK
IGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwg
U2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sg
aW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0
Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQpAQCAtNzksNiArNzksNyBAQCBkZWYgZGVsZXRl
X2NhY2hlZF9tb2NrX3JlcG9fYXRfZXhpdCgpOgogIyBFdmVudHVhbGx5IHdlIHdpbGwgd2FudCB0
byB3cml0ZSB0ZXN0cyB3aGljaCB3b3JrIGZvciBib3RoIHNjbXMuIChsaWtlIHVwZGF0ZV93ZWJr
aXQsIGNoYW5nZWRfZmlsZXMsIGV0Yy4pCiAjIFBlcmhhcHMgdGhyb3VnaCBzb21lIFNDTVRlc3Qg
YmFzZS1jbGFzcyB3aGljaCBib3RoIFNWTlRlc3QgYW5kIEdpdFRlc3QgaW5oZXJpdCBmcm9tLgog
CisKIGRlZiBydW5fY29tbWFuZCgqYXJncywgKiprd2FyZ3MpOgogICAgICMgRklYTUU6IFRoaXMg
c2hvdWxkIG5vdCBiZSBhIGdsb2JhbCBzdGF0aWMuCiAgICAgIyBOZXcgY29kZSBzaG91bGQgdXNl
IEV4ZWN1dGl2ZS5ydW5fY29tbWFuZCBkaXJlY3RseSBpbnN0ZWFkCkBAIC05MCw3ICs5MSw3IEBA
IGRlZiBydW5fY29tbWFuZCgqYXJncywgKiprd2FyZ3MpOgogZGVmIHJ1bl9zaWxlbnQoYXJncywg
Y3dkPU5vbmUpOgogICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZlOiBodHRwOi8vYnVncy5weXRo
b24ub3JnL2lzc3VlMjMyMAogICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsIGN3ZD1jd2QpCi0g
ICAgcHJvY2Vzcy5jb21tdW5pY2F0ZSgpICMgaWdub3JlIG91dHB1dAorICAgIHByb2Nlc3MuY29t
bXVuaWNhdGUoKSAgIyBpZ25vcmUgb3V0cHV0CiAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0
KCkKICAgICBpZiBleGl0X2NvZGU6CiAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCdGYWlsZWQg
dG8gcnVuICIlcyIgIGV4aXRfY29kZTogJWQgIGN3ZDogJXMnICUgKGFyZ3MsIGV4aXRfY29kZSwg
Y3dkKSkKQEAgLTIzNCw3ICsyMzUsNyBAQCBjbGFzcyBTVk5UZXN0UmVwb3NpdG9yeShvYmplY3Qp
OgogIyBGb3IgdGVzdGluZyB0aGUgU0NNIGJhc2VjbGFzcyBkaXJlY3RseS4KIGNsYXNzIFNDTUNs
YXNzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAg
ICAgc2VsZi5kZXZfbnVsbCA9IG9wZW4ob3MuZGV2bnVsbCwgInciKSAjIFVzZWQgdG8gbWFrZSBv
dXIgUG9wZW4gY2FsbHMgcXVpZXQuCisgICAgICAgIHNlbGYuZGV2X251bGwgPSBvcGVuKG9zLmRl
dm51bGwsICJ3IikgICMgVXNlZCB0byBtYWtlIG91ciBQb3BlbiBjYWxscyBxdWlldC4KIAogICAg
IGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5kZXZfbnVsbC5jbG9zZSgpCkBAIC0y
NTMsMTIgKzI1NCwxMiBAQCBjbGFzcyBTQ01DbGFzc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHJ1bl9jb21tYW5kLCBbJ2dy
ZXAnLCAnYmFyJ10sIGlucHV0PWlucHV0X3Byb2Nlc3Muc3Rkb3V0KQogCiAgICAgICAgICMgVGVz
dCB3aGVuIHRoZSBydW5fY29tbWFuZCBwcm9jZXNzIGZhaWxzLgotICAgICAgICBpbnB1dF9wcm9j
ZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2VjaG8nLCAnZm9vXG5iYXInXSwgc3Rkb3V0PXN1YnBy
b2Nlc3MuUElQRSwgc3RkZXJyPXNlbGYuZGV2X251bGwpICMgZ3JlcCBzaG93cyB1c2FnZSBhbmQg
Y2FsbHMgZXhpdCgyKSB3aGVuIGNhbGxlZCB3L28gYXJndW1lbnRzLgorICAgICAgICBpbnB1dF9w
cm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2VjaG8nLCAnZm9vXG5iYXInXSwgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwgc3RkZXJyPXNlbGYuZGV2X251bGwpICAjIGdyZXAgc2hvd3MgdXNhZ2Ug
YW5kIGNhbGxzIGV4aXQoMikgd2hlbiBjYWxsZWQgdy9vIGFyZ3VtZW50cy4KICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHJ1bl9jb21tYW5kLCBjb21tYW5kX3JldHVybnNf
bm9uX3plcm8sIGlucHV0PWlucHV0X3Byb2Nlc3Muc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfZXJy
b3JfaGFuZGxlcnMoc2VsZik6Ci0gICAgICAgIGdpdF9mYWlsdXJlX21lc3NhZ2U9Ik1lcmdlIGNv
bmZsaWN0IGR1cmluZyBjb21taXQ6IFlvdXIgZmlsZSBvciBkaXJlY3RvcnkgJ1dlYkNvcmUvQ2hh
bmdlTG9nJyBpcyBwcm9iYWJseSBvdXQtb2YtZGF0ZTogcmVzb3VyY2Ugb3V0IG9mIGRhdGU7IHRy
eSB1cGRhdGluZyBhdCAvdXNyL2xvY2FsL2xpYmV4ZWMvZ2l0LWNvcmUvL2dpdC1zdm4gbGluZSA0
NjkiCi0gICAgICAgIHN2bl9mYWlsdXJlX21lc3NhZ2U9IiIic3ZuOiBDb21taXQgZmFpbGVkIChk
ZXRhaWxzIGZvbGxvdyk6CisgICAgICAgIGdpdF9mYWlsdXJlX21lc3NhZ2UgPSAiTWVyZ2UgY29u
ZmxpY3QgZHVyaW5nIGNvbW1pdDogWW91ciBmaWxlIG9yIGRpcmVjdG9yeSAnV2ViQ29yZS9DaGFu
Z2VMb2cnIGlzIHByb2JhYmx5IG91dC1vZi1kYXRlOiByZXNvdXJjZSBvdXQgb2YgZGF0ZTsgdHJ5
IHVwZGF0aW5nIGF0IC91c3IvbG9jYWwvbGliZXhlYy9naXQtY29yZS8vZ2l0LXN2biBsaW5lIDQ2
OSIKKyAgICAgICAgc3ZuX2ZhaWx1cmVfbWVzc2FnZSA9ICIiInN2bjogQ29tbWl0IGZhaWxlZCAo
ZGV0YWlscyBmb2xsb3cpOgogc3ZuOiBGaWxlIG9yIGRpcmVjdG9yeSAnQ2hhbmdlTG9nJyBpcyBv
dXQgb2YgZGF0ZTsgdHJ5IHVwZGF0aW5nCiBzdm46IHJlc291cmNlIG91dCBvZiBkYXRlOyB0cnkg
dXBkYXRpbmcKICIiIgpAQCAtNjk2LDcgKzY5Nyw3IEBAIGNsYXNzIFNWTlRlc3QoU0NNVGVzdCk6
CiAgICAgICAgIHNjcmlwdHNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnN2bl9jaGVja291dF9w
YXRoLCAnVG9vbHMnLCAnU2NyaXB0cycpCiAgICAgICAgIG9zLm1ha2VkaXJzKHNjcmlwdHNfcGF0
aCkKICAgICAgICAgY3JlYXRlX3BhdGNoX3BhdGggPSBvcy5wYXRoLmpvaW4oc2NyaXB0c19wYXRo
LCAnc3ZuLWNyZWF0ZS1wYXRjaCcpCi0gICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKGNy
ZWF0ZV9wYXRjaF9wYXRoLCAnIyEvYmluL3NoXG5lY2hvICRQV0QnKSAjIFdlIGNvdWxkIHBhc3Mg
LW4gdG8gcHJldmVudCB0aGUgXG4sIGJ1dCBub3QgYWxsIGVjaG8gYWNjZXB0IC1uLgorICAgICAg
ICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aChjcmVhdGVfcGF0Y2hfcGF0aCwgJyMhL2Jpbi9zaFxu
ZWNobyAkUFdEJykgICMgV2UgY291bGQgcGFzcyAtbiB0byBwcmV2ZW50IHRoZSBcbiwgYnV0IG5v
dCBhbGwgZWNobyBhY2NlcHQgLW4uCiAgICAgICAgIG9zLmNobW9kKGNyZWF0ZV9wYXRjaF9wYXRo
LCBzdGF0LlNfSVhVU1IgfCBzdGF0LlNfSVJVU1IpCiAKICAgICAgICAgIyBDaGFuZ2UgaW50byBv
dXIgdGVzdCBkaXJlY3RvcnkgYW5kIHJ1biB0aGUgY3JlYXRlX3BhdGNoIGNvbW1hbmQuCkBAIC03
MDUsNyArNzA2LDcgQEAgY2xhc3MgU1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzY20uY2hlY2tvdXRfcm9vdCwgc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkgIyBTYW5p
dHkgY2hlY2sgdGhhdCBkZXRlY3Rpb24gd29ya2VkIHJpZ2h0LgogICAgICAgICBwYXRjaF9jb250
ZW50cyA9IHNjbS5jcmVhdGVfcGF0Y2goKQogICAgICAgICAjIE91ciBmYWtlICdzdm4tY3JlYXRl
LXBhdGNoJyByZXR1cm5zICRQV0QgaW5zdGVhZCBvZiBhIHBhdGNoLCBjaGVjayB0aGF0IGl0IHdh
cyBleGVjdXRlZCBmcm9tIHRoZSByb290IG9mIHRoZSByZXBvLgotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCIlc1xuIiAlIG9zLnBhdGgucmVhbHBhdGgoc2NtLmNoZWNrb3V0X3Jvb3QpLCBwYXRj
aF9jb250ZW50cykgIyBBZGQgYSBcbiBiZWNhdXNlIGVjaG8gYWRkcyBhIFxuLgorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCIlc1xuIiAlIG9zLnBhdGgucmVhbHBhdGgoc2NtLmNoZWNrb3V0X3Jv
b3QpLCBwYXRjaF9jb250ZW50cykgICMgQWRkIGEgXG4gYmVjYXVzZSBlY2hvIGFkZHMgYSBcbi4K
IAogICAgIGRlZiB0ZXN0X2RldGVjdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLnNjbS5kaXNwbGF5X25hbWUoKSwgInN2biIpCkBAIC05NTcsNiArOTU4LDcgQEAgRU5E
CiAgICAgZGVmIHRlc3RfZXhpc3RzKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9l
eGlzdHMoc2VsZi5zY20sIHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UpCiAKKwogY2xhc3Mg
R2l0VGVzdChTQ01UZXN0KToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTExNzMsNyArMTE3
NSw3IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsn
Z2l0JywgJ2NvbW1pdCcsICctYScsICctbScsICdjb21taXQgdG8gYmUgdGhyb3duIGF3YXkgYnkg
cmViYXNlIGFib3J0J10pCiAKICAgICAgICAgIyAtLXF1aWV0IGRvZXNuJ3QgbWFrZSBnaXQgc3Zu
IHNpbGVudCwgc28gdXNlIHJ1bl9zaWxlbnQgdG8gcmVkaXJlY3Qgb3V0cHV0Ci0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBydW5fc2lsZW50LCBbJ2dpdCcsICdzdm4nLCAn
LS1xdWlldCcsICdyZWJhc2UnXSkgIyBXaWxsIGZhaWwgZHVlIHRvIGEgY29uZmxpY3QgbGVhdmlu
ZyB1cyBtaWQtcmViYXNlLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwg
cnVuX3NpbGVudCwgWydnaXQnLCAnc3ZuJywgJy0tcXVpZXQnLCAncmViYXNlJ10pICAjIFdpbGwg
ZmFpbCBkdWUgdG8gYSBjb25mbGljdCBsZWF2aW5nIHVzIG1pZC1yZWJhc2UuCiAKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHNlbGYuc2NtLnJlYmFzZV9pbl9wcm9ncmVzcygpKQogCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVyc191bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29t
bWl0dGVyc191bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRweS5jb21t
b24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIENvbnRyaWJ1dG9yLCBD
b21taXR0ZXIsIFJldmlld2VyCiAKKwogY2xhc3MgQ29tbWl0dGVyc1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X2NvbW1pdHRlcl9sb29rdXAoc2VsZik6CiAgICAgICAgIGNv
bW1pdHRlciA9IENvbW1pdHRlcignVGVzdCBPbmUnLCAnb25lQHRlc3QuY29tJywgJ29uZScpCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvaXJjLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9pcmMucHkJKHJldmlz
aW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9pcmMu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKLXNlcnZlcj0iaXJjLmZyZWVub2RlLm5ldCIKLXBvcnQ9NjY2NQotY2hhbm5l
bD0iI3dlYmtpdCIKK3NlcnZlciA9ICJpcmMuZnJlZW5vZGUubmV0IgorcG9ydCA9IDY2NjUKK2No
YW5uZWwgPSAiI3dlYmtpdCIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Nv
bmZpZy9wb3J0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jb25maWcvcG9ydHMucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0
Niw3IEBAIGNsYXNzIElPU1NpbXVsYXRvcldLMlBvcnQoRGVwcmVjYXRlZFBvcnQKICAgICAgICAg
Y29tbWFuZC5hcHBlbmQoIi0taW9zLXNpbXVsYXRvciIpCiAgICAgICAgIHJldHVybiBjb21tYW5k
CiAKKwogY2xhc3MgTWFjUG9ydChEZXByZWNhdGVkUG9ydCk6CiAgICAgcG9ydF9mbGFnX25hbWUg
PSAibWFjIgogCkBAIC0xNTQsNiArMTU1LDcgQEAgY2xhc3MgTWFjUG9ydChEZXByZWNhdGVkUG9y
dCk6CiAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLWR1bXAtcmVuZGVyLXRyZWUiKQogICAgICAg
ICByZXR1cm4gY29tbWFuZAogCisKIGNsYXNzIE1hY1dLMlBvcnQoRGVwcmVjYXRlZFBvcnQpOgog
ICAgIHBvcnRfZmxhZ19uYW1lID0gIm1hYy13azIiCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0c191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9ydHNfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0
c191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKICMgbWV0OgotIyAKKyMKICMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgog
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCkBAIC0xMyw3ICsxMyw3IEBACiAjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMgCisjCiAj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKICMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weQkocmV2aXNpb24gMjAyMzYxKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDYgKzU2LDcgQEAgc3ZuX3NlcnZlcl9yZWFsbSA9ICI8aHR0cDovL3N2bi53
ZWJraXQubwogCiBzdGF0dXNzZXJ2ZXJfZGVmYXVsdF9ob3N0ID0gIndlYmtpdC1xdWV1ZXMud2Vi
a2l0Lm9yZyIKIAorCiBkZWYgcGFyc2VfYnVnX2lkKHN0cmluZyk6CiAgICAgaWYgbm90IHN0cmlu
ZzoKICAgICAgICAgcmV0dXJuIE5vbmUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9jcmVkZW50aWFs
c191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHBhc3N3b3Jk
OiAiU0VDUkVUU0FVQ0UiCiAgICAgICAgICMgRklYTUU6IFRoaXMgdGVzdCB3b24ndCB3b3JrIGlm
IHRoZSB1c2VyIGhhcyBhIGNyZWRlbnRpYWwgZm9yIGZvby5leGFtcGxlLmNvbSEKICAgICAgICAg
Y3JlZGVudGlhbHMgPSBDcmVkZW50aWFscygiZm9vLmV4YW1wbGUuY29tIikKICAgICAgICAgaWYg
bm90IGNyZWRlbnRpYWxzLl9pc19tYWNfb3NfeCgpOgotICAgICAgICAgICAgcmV0dXJuICMgVGhp
cyB0ZXN0IGRvZXMgbm90IHJ1biBvbiBhIG5vbi1NYWMuCisgICAgICAgICAgICByZXR1cm4gICMg
VGhpcyB0ZXN0IGRvZXMgbm90IHJ1biBvbiBhIG5vbi1NYWMuCiAKICAgICAgICAgIyBOb3RlLCB3
ZSBpZ25vcmUgdGhlIGNhcHR1cmVkIG91dHB1dCBiZWNhdXNlIGl0IGlzIGFscmVhZHkgY292ZXJl
ZAogICAgICAgICAjIGJ5IHRoZSB0ZXN0IGNhc2UgQ3JlZGVudGlhbHNUZXN0Ll9hc3NlcnRfc2Vj
dXJpdHlfY2FsbCAoYmVsb3cpLgpAQCAtMTU4LDcgKzE1OCw2IEBAIHBhc3N3b3JkOiAiU0VDUkVU
U0FVQ0UiCiAgICAgICAgICAgICAjIGNyZWRlbnRpYWwgc291cmNlIGNvdWxkIGJlIGFmZmVjdGVk
IGJ5IHRoZSB1c2VyJ3MgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNyZWRlbnRpYWxzLnJlYWRfY3JlZGVudGlhbHMoKSwgKCJ0ZXN0QHdlYmtpdC5vcmciLCAiU0VD
UkVUU0FVQ0UiKSkKIAotCiAgICAgZGVmIHRlc3Rfa2V5cmluZ193aXRob3V0X2dpdF9yZXBvKHNl
bGYpOgogICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBzaGFyZSBtb3JlIGNvZGUgd2l0aCB0
ZXN0X3JlYWRfY3JlZGVudGlhbHNfd2l0aG91dF9naXRfcmVwbwogICAgICAgICBjbGFzcyBNb2Nr
S2V5cmluZyhvYmplY3QpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L25ldHdvcmt0cmFuc2FjdGlvbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbmV0
d29ya3RyYW5zYWN0aW9uX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBA
QAogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAogIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCiAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQogIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIyAKKyMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAg
LTgyLDcgKzgyLDcgQEAgY2xhc3MgTmV0d29ya1RyYW5zYWN0aW9uVGVzdChMb2dnaW5nVGVzdAog
CiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NvdW50ID0g
MAotICAgICAgICB0cmFuc2FjdGlvbiA9IE5ldHdvcmtUcmFuc2FjdGlvbihpbml0aWFsX2JhY2tv
ZmZfc2Vjb25kcz02MCo2MCwgdGltZW91dF9zZWNvbmRzPTYwKQorICAgICAgICB0cmFuc2FjdGlv
biA9IE5ldHdvcmtUcmFuc2FjdGlvbihpbml0aWFsX2JhY2tvZmZfc2Vjb25kcz02MCAqIDYwLCB0
aW1lb3V0X3NlY29uZHM9NjApCiAgICAgICAgIGRpZF9wcm9jZXNzX2V4Y2VwdGlvbiA9IEZhbHNl
CiAgICAgICAgIGRpZF90aHJvd19leGNlcHRpb24gPSBUcnVlCiAgICAgICAgIHRyeToKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5w
eQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L3N0YXR1c3NlcnZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKICMgQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIAorIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAog
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IyAKKyMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVn
emlsbGEucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCBzb2NrZXQKIGltcG9ydCB1cmxsaWIKIAotZnJv
bSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUgIyB1c2VkIGluIHRpbWVzdGFtcCgpCitmcm9tIGRh
dGV0aW1lIGltcG9ydCBkYXRldGltZSAgIyB1c2VkIGluIHRpbWVzdGFtcCgpCiAKIGZyb20gLmF0
dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKIGZyb20gLmJ1ZyBpbXBvcnQgQnVnCkBAIC0yOTEs
NiArMjkxLDcgQEAgY2xhc3MgQnVnemlsbGFRdWVyaWVzKG9iamVjdCk6CiAgICAgICAgIHJlc3Vs
dHNfcGFnZSA9IHNlbGYuX2xvYWRfcXVlcnkocmV2aWV3X3F1ZXVlX3VybCkKICAgICAgICAgcmV0
dXJuIGJvb2wocmUuc2VhcmNoKCJkaWQgbm90IG1hdGNoIGFueXRoaW5nIiwgcmVzdWx0c19wYWdl
LnJlYWQoKSkpCiAKKwogY2xhc3MgQ29tbWl0UXVldWVGbGFnKG9iamVjdCk6CiAgICAgbWFya19m
b3Jfbm90aGluZyA9IDAKICAgICBtYXJrX2Zvcl9jb21taXRfcXVldWUgPSAxCkBAIC01MTUsNyAr
NTE2LDcgQEAgY2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICAgICAgZm9yIGF0dGFjaG1lbnQg
aW4gYXR0YWNobWVudHM6CiAgICAgICAgICAgICBpZiBhdHRhY2htZW50LmlkKCkgPT0gaW50KGF0
dGFjaG1lbnRfaWQpOgogICAgICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50Ci0gICAgICAg
IHJldHVybiBOb25lICMgVGhpcyBzaG91bGQgbmV2ZXIgYmUgaGl0LgorICAgICAgICByZXR1cm4g
Tm9uZSAgIyBUaGlzIHNob3VsZCBuZXZlciBiZSBoaXQuCiAKICAgICBkZWYgYXV0aGVudGljYXRl
KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmF1dGhlbnRpY2F0ZWQ6CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Z3ppbGxhX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDE4ICs2OCwxOCBAQCBjbGFzcyBCdWd6aWxsYVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogJycnCiAgICAgX2V4cGVjdGVkX2V4YW1wbGVfYXR0YWNobWVudF9wYXJzaW5nID0g
ewogICAgICAgICAnYXR0YWNoX2RhdGUnOiBkYXRldGltZS5kYXRldGltZSgyMDA5LCAwNywgMjks
IDEwLCAyMyksCi0gICAgICAgICdidWdfaWQnIDogMTAwLAotICAgICAgICAnaXNfb2Jzb2xldGUn
IDogVHJ1ZSwKLSAgICAgICAgJ2lzX3BhdGNoJyA6IFRydWUsCi0gICAgICAgICdpZCcgOiAzMzcy
MSwKLSAgICAgICAgJ3VybCcgOiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5j
Z2k/aWQ9MzM3MjEiLAotICAgICAgICAnbmFtZScgOiAiRml4ZWQgd2hpdGVzcGFjZSBpc3N1ZSIs
Ci0gICAgICAgICd0eXBlJyA6ICJ0ZXh0L3BsYWluIiwKLSAgICAgICAgJ3JldmlldycgOiAnKycs
Ci0gICAgICAgICdyZXZpZXdlcl9lbWFpbCcgOiAnb25lQHRlc3QuY29tJywKLSAgICAgICAgJ2Nv
bW1pdC1xdWV1ZScgOiAnKycsCi0gICAgICAgICdjb21taXR0ZXJfZW1haWwnIDogJ3R3b0B0ZXN0
LmNvbScsCi0gICAgICAgICdhdHRhY2hlcl9lbWFpbCcgOiAnY2hyaXN0aWFuLnBsZXNuZXIuaGFu
c2VuQGdtYWlsLmNvbScsCisgICAgICAgICdidWdfaWQnOiAxMDAsCisgICAgICAgICdpc19vYnNv
bGV0ZSc6IFRydWUsCisgICAgICAgICdpc19wYXRjaCc6IFRydWUsCisgICAgICAgICdpZCc6IDMz
NzIxLAorICAgICAgICAndXJsJzogImh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQu
Y2dpP2lkPTMzNzIxIiwKKyAgICAgICAgJ25hbWUnOiAiRml4ZWQgd2hpdGVzcGFjZSBpc3N1ZSIs
CisgICAgICAgICd0eXBlJzogInRleHQvcGxhaW4iLAorICAgICAgICAncmV2aWV3JzogJysnLAor
ICAgICAgICAncmV2aWV3ZXJfZW1haWwnOiAnb25lQHRlc3QuY29tJywKKyAgICAgICAgJ2NvbW1p
dC1xdWV1ZSc6ICcrJywKKyAgICAgICAgJ2NvbW1pdHRlcl9lbWFpbCc6ICd0d29AdGVzdC5jb20n
LAorICAgICAgICAnYXR0YWNoZXJfZW1haWwnOiAnY2hyaXN0aWFuLnBsZXNuZXIuaGFuc2VuQGdt
YWlsLmNvbScsCiAgICAgfQogCiAgICAgZGVmIHRlc3RfdXJsX2NyZWF0aW9uKHNlbGYpOgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJv
dC9idWlsZGJvdC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIEJ1aWxkZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fcmV2aXNpb25f
dG9fYnVpbGRfbnVtYmVyID0gTm9uZQogICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHku
YXV0b2luc3RhbGxlZC5tZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKICAgICAgICAgc2VsZi5fYnJv
d3NlciA9IEJyb3dzZXIoKQotICAgICAgICBzZWxmLl9icm93c2VyLnNldF9oYW5kbGVfcm9ib3Rz
KEZhbHNlKSAjIFRoZSBidWlsZGVyIHBhZ2VzIGFyZSBleGNsdWRlZCBieSByb2JvdHMudHh0Cisg
ICAgICAgIHNlbGYuX2Jyb3dzZXIuc2V0X2hhbmRsZV9yb2JvdHMoRmFsc2UpICAjIFRoZSBidWls
ZGVyIHBhZ2VzIGFyZSBleGNsdWRlZCBieSByb2JvdHMudHh0CiAKICAgICBkZWYgbmFtZShzZWxm
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKQEAgLTMyNCw3ICszMjQsNyBAQCBjbGFzcyBC
dWlsZEJvdChvYmplY3QpOgogCiAgICAgZGVmIF9wYXJzZV9jdXJyZW50X2J1aWxkX2NlbGwoc2Vs
ZiwgYnVpbGRlciwgY2VsbCk6CiAgICAgICAgIGFjdGl2aXR5X2xpbmVzID0gY2VsbC5yZW5kZXJD
b250ZW50cygpLnNwbGl0KCI8YnIgLz4iKQotICAgICAgICBidWlsZGVyWyJhY3Rpdml0eSJdID0g
YWN0aXZpdHlfbGluZXNbMF0gIyBub3JtYWxseSAiYnVpbGRpbmciIG9yICJpZGxlIgorICAgICAg
ICBidWlsZGVyWyJhY3Rpdml0eSJdID0gYWN0aXZpdHlfbGluZXNbMF0gICMgbm9ybWFsbHkgImJ1
aWxkaW5nIiBvciAiaWRsZSIKICAgICAgICAgIyBUaGUgbWlkZGxlIGxpbmVzIGRvY3VtZW50IGhv
dyBsb25nIGxlZnQgZm9yIGFueSBjdXJyZW50IGJ1aWxkcy4KICAgICAgICAgbWF0Y2ggPSByZS5t
YXRjaCgiKD9QPHBlbmRpbmdfYnVpbGRzPlxkKSBwZW5kaW5nIiwgYWN0aXZpdHlfbGluZXNbLTFd
KQogICAgICAgICBidWlsZGVyWyJwZW5kaW5nX2J1aWxkcyJdID0gaW50KG1hdGNoLmdyb3VwKCJw
ZW5kaW5nX2J1aWxkcyIpKSBpZiBtYXRjaCBlbHNlIDAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2NrLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWlsZGJvdC9idWlsZGJvdF9tb2Nr
LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVpbGRib3QvYnVpbGRib3RfbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
NyBAQCBjbGFzcyBNb2NrQnVpbGQob2JqZWN0KToKICAgICAgICAgc2VsZi5fcmV2aXNpb24gPSBy
ZXZpc2lvbgogICAgICAgICBzZWxmLl9pc19ncmVlbiA9IGlzX2dyZWVuCiAKKwogY2xhc3MgTW9j
a0J1aWxkZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CiAgICAgICAg
IHNlbGYuX25hbWUgPSBuYW1lCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVpbGRib3QvYnVpbGRib3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1aWxkYm90L2J1aWxkYm90X3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVp
bGRib3QvYnVpbGRib3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcg
QEAgY2xhc3MgQnVpbGRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgKQog
ICAgICAgICAgICAgcmVzdWx0cyA9IFtzZWxmLl9tb2NrX3Rlc3RfcmVzdWx0KHRlc3RuYW1lKSBm
b3IgdGVzdG5hbWUgaW4gZmFpbHVyZShidWlsZF9udW1iZXIpXQogICAgICAgICAgICAgbGF5b3V0
X3Rlc3RfcmVzdWx0cyA9IExheW91dFRlc3RSZXN1bHRzKHRlc3RfcmVzdWx0cz1yZXN1bHRzLCBk
aWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdD1GYWxzZSkKKwogICAgICAgICAgICAgZGVmIG1v
Y2tfbGF5b3V0X3Rlc3RfcmVzdWx0cygpOgogICAgICAgICAgICAgICAgIHJldHVybiBsYXlvdXRf
dGVzdF9yZXN1bHRzCiAgICAgICAgICAgICBidWlsZC5sYXlvdXRfdGVzdF9yZXN1bHRzID0gbW9j
a19sYXlvdXRfdGVzdF9yZXN1bHRzCkBAIC0xMTgsOCArMTE5LDggQEAgY2xhc3MgQnVpbGRlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYnVpbGRfYW5kX3JldmlzaW9u
X2Zvcl9maWxlbmFtZShzZWxmKToKICAgICAgICAgZXhwZWN0YXRpb25zID0gewotICAgICAgICAg
ICAgInI0NzQ4MyAoMSkvIiA6ICg0NzQ4MywgMSksCi0gICAgICAgICAgICAicjQ3NDgzICgxKS56
aXAiIDogKDQ3NDgzLCAxKSwKKyAgICAgICAgICAgICJyNDc0ODMgKDEpLyI6ICg0NzQ4MywgMSks
CisgICAgICAgICAgICAicjQ3NDgzICgxKS56aXAiOiAoNDc0ODMsIDEpLAogICAgICAgICAgICAg
InJhbmRvbSBqdW5rIjogTm9uZSwKICAgICAgICAgfQogICAgICAgICBmb3IgZmlsZW5hbWUsIHJl
dmlzaW9uX2FuZF9idWlsZCBpbiBleHBlY3RhdGlvbnMuaXRlbXMoKToKQEAgLTE4Niw3ICsxODcs
NyBAQCBjbGFzcyBCdWlsZEJvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIF9leHBlY3Rl
ZF9leGFtcGxlX29uZV9ib3hfcGFyc2luZ3MgPSBbCiAgICAgICAgIHsKICAgICAgICAgICAgICdp
c19ncmVlbic6IFRydWUsCi0gICAgICAgICAgICAnYnVpbGRfbnVtYmVyJyA6IDM2OTMsCisgICAg
ICAgICAgICAnYnVpbGRfbnVtYmVyJzogMzY5MywKICAgICAgICAgICAgICduYW1lJzogdSdXaW5k
b3dzIERlYnVnIChUZXN0cyknLAogICAgICAgICAgICAgJ2J1aWx0X3JldmlzaW9uJzogNDczODAs
CiAgICAgICAgICAgICAnYWN0aXZpdHknOiAnYnVpbGRpbmcnLApAQCAtMTk0LDcgKzE5NSw3IEBA
IGNsYXNzIEJ1aWxkQm90VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIH0sCiAgICAg
ICAgIHsKICAgICAgICAgICAgICdpc19ncmVlbic6IEZhbHNlLAotICAgICAgICAgICAgJ2J1aWxk
X251bWJlcicgOiBOb25lLAorICAgICAgICAgICAgJ2J1aWxkX251bWJlcic6IE5vbmUsCiAgICAg
ICAgICAgICAnbmFtZSc6IHUnU25vd0xlb3BhcmQgSW50ZWwgUmVsZWFzZScsCiAgICAgICAgICAg
ICAnYnVpbHRfcmV2aXNpb24nOiBOb25lLAogICAgICAgICAgICAgJ2FjdGl2aXR5JzogJ2J1aWxk
aW5nJywKQEAgLTIwMiw3ICsyMDMsNyBAQCBjbGFzcyBCdWlsZEJvdFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAnaXNfZ3JlZW4nOiBG
YWxzZSwKLSAgICAgICAgICAgICdidWlsZF9udW1iZXInIDogNjU0LAorICAgICAgICAgICAgJ2J1
aWxkX251bWJlcic6IDY1NCwKICAgICAgICAgICAgICduYW1lJzogdSdRdCBMaW51eCBSZWxlYXNl
JywKICAgICAgICAgICAgICdidWlsdF9yZXZpc2lvbic6IDQ3MzgzLAogICAgICAgICAgICAgJ2Fj
dGl2aXR5JzogJ2lkbGUnLApAQCAtMjEwLDcgKzIxMSw3IEBAIGNsYXNzIEJ1aWxkQm90VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICdp
c19ncmVlbic6IFRydWUsCi0gICAgICAgICAgICAnYnVpbGRfbnVtYmVyJyA6IDIwOTAsCisgICAg
ICAgICAgICAnYnVpbGRfbnVtYmVyJzogMjA5MCwKICAgICAgICAgICAgICduYW1lJzogdSdRdCBX
aW5kb3dzIDMyLWJpdCBEZWJ1ZycsCiAgICAgICAgICAgICAnYnVpbHRfcmV2aXNpb24nOiA2MDU2
MywKICAgICAgICAgICAgICdhY3Rpdml0eSc6ICdidWlsZGluZycsCkBAIC0yNTAsMTAgKzI1MSwx
MCBAQCBjbGFzcyBCdWlsZEJvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYg
bW9ja19mZXRjaF9idWlsZF9kaWN0aW9uYXJ5KHNlbGYsIGJ1aWxkX251bWJlcik6CiAgICAgICAg
ICAgICBidWlsZF9kaWN0aW9uYXJ5ID0gewogICAgICAgICAgICAgICAgICJzb3VyY2VTdGFtcCI6
IHsKLSAgICAgICAgICAgICAgICAgICAgInJldmlzaW9uIiA6IDIgKiBidWlsZF9udW1iZXIsCisg
ICAgICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6IDIgKiBidWlsZF9udW1iZXIsCiAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIm51bWJlciIgOiBpbnQoYnVpbGRfbnVt
YmVyKSwKLSAgICAgICAgICAgICAgICAicmVzdWx0cyIgOiBidWlsZF9udW1iZXIgJSAyLCAjIDAg
bWVhbnMgcGFzcworICAgICAgICAgICAgICAgICJudW1iZXIiOiBpbnQoYnVpbGRfbnVtYmVyKSwK
KyAgICAgICAgICAgICAgICAicmVzdWx0cyI6IGJ1aWxkX251bWJlciAlIDIsICAjIDAgbWVhbnMg
cGFzcwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkX2RpY3Rpb25hcnkK
ICAgICAgICAgYnVpbGRib3QuX2ZldGNoX2J1aWxkX2RpY3Rpb25hcnkgPSBtb2NrX2ZldGNoX2J1
aWxkX2RpY3Rpb25hcnkKQEAgLTI5OSwxNiArMzAwLDE2IEBAIGNsYXNzIEJ1aWxkQm90VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAnJycKICAgICBfZXhwZWN0ZWRfZmlsZXMgPSBbCiAgICAgICAg
IHsKLSAgICAgICAgICAgICJmaWxlbmFtZSIgOiAicjQ3NDgzICgxKS8iLAotICAgICAgICAgICAg
InNpemUiIDogIiIsCi0gICAgICAgICAgICAidHlwZSIgOiAiW0RpcmVjdG9yeV0iLAotICAgICAg
ICAgICAgImVuY29kaW5nIiA6ICIiLAorICAgICAgICAgICAgImZpbGVuYW1lIjogInI0NzQ4MyAo
MSkvIiwKKyAgICAgICAgICAgICJzaXplIjogIiIsCisgICAgICAgICAgICAidHlwZSI6ICJbRGly
ZWN0b3J5XSIsCisgICAgICAgICAgICAiZW5jb2RpbmciOiAiIiwKICAgICAgICAgfSwKICAgICAg
ICAgewotICAgICAgICAgICAgImZpbGVuYW1lIiA6ICJyNDc0ODQgKDIpLnppcCIsCi0gICAgICAg
ICAgICAic2l6ZSIgOiAiODlLIiwKLSAgICAgICAgICAgICJ0eXBlIiA6ICJbYXBwbGljYXRpb24v
emlwXSIsCi0gICAgICAgICAgICAiZW5jb2RpbmciIDogIiIsCisgICAgICAgICAgICAiZmlsZW5h
bWUiOiAicjQ3NDg0ICgyKS56aXAiLAorICAgICAgICAgICAgInNpemUiOiAiODlLIiwKKyAgICAg
ICAgICAgICJ0eXBlIjogIlthcHBsaWNhdGlvbi96aXBdIiwKKyAgICAgICAgICAgICJlbmNvZGlu
ZyI6ICIiLAogICAgICAgICB9LAogICAgIF0KIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2lyYy9pcmNwcm94eV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY3Byb3h5X3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJj
L2lyY3Byb3h5X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAog
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IyAKKyMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTMyLDYg
KzMyLDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmlyYy5pcmNwcm94eSBpbQogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUK
IGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKKwogY2xhc3MgSVJD
UHJveHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF90cml2aWFsKHNlbGYp
OgogICAgICAgICBkZWYgZnVuKCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vYXV0b2luc3RhbGwucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2F1dG9pbnN0YWxsLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vYXV0b2luc3RhbGwucHkJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgX1BZUElfRU5WX1ZBUiA9ICdQWVBJX01JUlJPUlMn
CiBfU09VUkNFRk9SR0VfRU5WX1ZBUiA9ICdTT1VSQ0VGT1JHRV9NSVJST1JTJwogX0NBQ0hFX0VO
Vl9WQVIgPSAnTE9DQUxfQVVUT0lOU1RBTExfQ0FDSEUnCiAKKwogY2xhc3MgQXV0b0luc3RhbGxl
cihvYmplY3QpOgogCiAgICAgIiIiU3VwcG9ydHMgYXV0b21hdGljYWxseSBpbnN0YWxsaW5nIFB5
dGhvbiBwYWNrYWdlcyBmcm9tIGFuIFVSTC4KQEAgLTM4Miw3ICszODMsNyBAQCBjbGFzcyBBdXRv
SW5zdGFsbGVyKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCAyMDAgPD0gY29kZSA8IDMwMDoKICAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhUVFAgRXJyb3IgY29kZSAlcyIgJSBjb2RlKQog
Ci0gICAgICAgIEJVRlNJWkUgPSAyKioxMyAgIyA4S0IKKyAgICAgICAgQlVGU0laRSA9IDIgKiog
MTMgICMgOEtCCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBkYXRhID0gbmV0c3Ry
ZWFtLnJlYWQoQlVGU0laRSkKICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dz
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBAIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2MKICMg
TmVlZGVkIHRvIHN1cHBvcnQgV2luZG93cyBwb3J0IHRlc3RzCiBmcm9tIHdlYmtpdHB5LnBvcnQu
d2luIGltcG9ydCBXaW5Qb3J0CiAKKwogZGVmIG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2lu
KHByb2Nlc3NfbmFtZSwgcGlkKToKICAgICByZXR1cm4gIiIiUHJvY2VzczogICAgICAgICB7cHJv
Y2Vzc19uYW1lfSBbe3BpZH1dCiBQYXRoOiAgICAgICAgICAgIC9Wb2x1bWVzL0RhdGEvc2xhdmUv
c25vd2xlb3BhcmQtaW50ZWwtcmVsZWFzZS10ZXN0cy9idWlsZC9XZWJLaXRCdWlsZC9SZWxlYXNl
L3twcm9jZXNzX25hbWV9CkBAIC0yMzIsNiArMjMzLDcgQEAgRm9sbG93dXA6IE1hY2hpbmVPd25l
cgogcXVpdDoKICIiIi5mb3JtYXQocHJvY2Vzc19uYW1lPXByb2Nlc3NfbmFtZSwgcGlkPXBpZCkK
IAorCiBjbGFzcyBDcmFzaExvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY3Jl
YXRlX2NyYXNoX2xvZ3NfZGFyd2luKHNlbGYpOgogICAgICAgICBpZiBub3QgU3lzdGVtSG9zdCgp
LnBsYXRmb3JtLmlzX21hYygpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2V4ZWN1dGl2ZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNjcmlwdEVycm9yKEV4Y2VwdGlvbik6CiAgICAgICAg
ICAgICAgICAgbWVzc2FnZSArPSAiIGN3ZDogJXMiICUgY3dkCiAKICAgICAgICAgRXhjZXB0aW9u
Ll9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuc2NyaXB0X2FyZ3MgPSBzY3Jp
cHRfYXJncyAjICdhcmdzJyBpcyBhbHJlYWR5IHVzZWQgYnkgRXhjZXB0aW9uCisgICAgICAgIHNl
bGYuc2NyaXB0X2FyZ3MgPSBzY3JpcHRfYXJncyAgIyAnYXJncycgaXMgYWxyZWFkeSB1c2VkIGJ5
IEV4Y2VwdGlvbgogICAgICAgICBzZWxmLmV4aXRfY29kZSA9IGV4aXRfY29kZQogICAgICAgICBz
ZWxmLm91dHB1dCA9IG91dHB1dAogICAgICAgICBzZWxmLmN3ZCA9IGN3ZApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9j
ay5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
IGNsYXNzIE1vY2tQcm9jZXNzKG9iamVjdCk6CiAgICAgZGVmIGNvbW11bmljYXRlKHNlbGYsIGlu
cHV0PU5vbmUpOgogICAgICAgICByZXR1cm4gKHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycikKIAor
CiAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1bmlmaWVkIHdpdGggTW9ja0V4ZWN1dGl2ZTIKIGNs
YXNzIE1vY2tFeGVjdXRpdmUob2JqZWN0KToKICAgICBQSVBFID0gIk1PQ0sgUElQRSIKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4
ZWN1dGl2ZV91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBTY3JpcHRFcnJvclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpCiAgICAgICAgIGVycm9yID0gU2NyaXB0RXJyb3IoJycsICgnbXknLCAnY29tbWFuZCcpLCAt
MSwgJ015IG91dHB1dC4nLCAnL1VzZXJzL3VzZXJuYW1lL2JsYWgnKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGVycm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSwgJ0ZhaWxlZCB0byBydW4gIihc
J215XCcsIFwnY29tbWFuZFwnKSIgZXhpdF9jb2RlOiAtMSBjd2Q6IC9Vc2Vycy91c2VybmFtZS9i
bGFoXG5cbk15IG91dHB1dC4nKQogCisKIGRlZiBuZXZlcl9lbmRpbmdfY29tbWFuZCgpOgogICAg
ICIiIkFyZ3VtZW50cyBmb3IgYSBjb21tYW5kIHRoYXQgd2lsbCBuZXZlciBlbmQgKHVzZWZ1bCBm
b3IgdGVzdGluZyBwcm9jZXNzCiAgICAga2lsbGluZykuIEl0IHNob3VsZCBiZSBhIHByb2Nlc3Mg
dGhhdCBpcyB1bmxpa2VseSB0byBhbHJlYWR5IGJlIHJ1bm5pbmcKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5w
eQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL2ZpbGVzeXN0ZW1fbW9jay5weQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw2IEBA
IGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZGlycy5hcHBl
bmQoZGlycGF0aCkKICAgICAgICAgcmV0dXJuIHNvcnRlZChkaXJzKQogCi0KICAgICBkZWYgZmls
ZXNfdW5kZXIoc2VsZiwgcGF0aCwgZGlyc190b19za2lwPVtdLCBmaWxlX2ZpbHRlcj1Ob25lKToK
ICAgICAgICAgZGVmIGZpbHRlcl9hbGwoZnMsIGRpcnBhdGgsIGJhc2VuYW1lKToKICAgICAgICAg
ICAgIHJldHVybiBUcnVlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weQkocmV2aXNpb24gMjAy
MzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1f
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgR2VuZXJp
Y0ZpbGVTeXN0ZW1UZXN0cyhvYmplY3QpOgogICAgICAgICBzZWxmLmZzLmNoZGlyKHNlbGYuZ2Vu
ZXJpY190ZXN0X2RpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoc2VsZi5mcy5nbG9i
KCdmb28uKicpKSwgc2V0KFsnZm9vLnR4dCddKSkKIAorCiBjbGFzcyBSZWFsRmlsZVN5c3RlbVRl
c3QodW5pdHRlc3QuVGVzdENhc2UsIEdlbmVyaWNGaWxlU3lzdGVtVGVzdHMpOgogICAgIGRlZiBz
ZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5mcyA9IEZpbGVTeXN0ZW0oKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2xvZ3V0aWxzX3VuaXR0ZXN0LnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9sb2d1dGlsc191
bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2xvZ3V0aWxzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAs
NiArMTQwLDcgQEAgY2xhc3MgQ29uZmlndXJlTG9nZ2luZ1ZlcmJvc2VUZXN0KENvbmZpZwogICAg
ICAgICBzZWxmLl9sb2cuZGVidWcoInRlc3QgbWVzc2FnZSIpCiAgICAgICAgIHNlbGYuX2Fzc2Vy
dF9sb2dfbWVzc2FnZXMoWyJ1bml0dGVzdDogW0RFQlVHXSB0ZXN0IG1lc3NhZ2VcbiJdKQogCisK
IGNsYXNzIENvbmZpZ3VyZUxvZ2dpbmdDdXN0b21MZXZlbFRlc3QoQ29uZmlndXJlTG9nZ2luZ1Rl
c3RCYXNlKToKIAogICAgICIiIlRlc3RzIGNvbmZpZ3VyZV9sb2dnaW5nKCkgd2l0aCBhIGN1c3Rv
bSBsb2dnaW5nIGxldmVsLiIiIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3BhdGgucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BhdGgucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3
IEBAIGltcG9ydCB1cmxsaWIKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CisKIGRlZiBhYnNwYXRoX3RvX3VyaShwbGF0Zm9ybSwgcGF0aCk6CiAgICAgIiIiQ29udmVydHMg
YSBwbGF0Zm9ybS1zcGVjaWZpYyBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZTogVVJMLiIiIgogICAg
IHJldHVybiAiZmlsZToiICsgX2VzY2FwZShfY29udmVydF9wYXRoKHBsYXRmb3JtLCBwYXRoKSkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9w
YXRoX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGxhdGZvcm1pbmZvCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGxhdGZvcm1pbmZvX21vY2sgaW1wb3J0IE1vY2tQbGF0
Zm9ybUluZm8KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogCisKIGNs
YXNzIEFic3BhdGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgcGxhdGZvcm1pbmZv
KHNlbGYpOgogICAgICAgICByZXR1cm4gU3lzdGVtSG9zdCgpLnBsYXRmb3JtCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8u
cHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9wbGF0Zm9ybWluZm8ucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAgaW1w
b3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUKIAorCiBjbGFzcyBQbGF0Zm9ybUluZm8ob2JqZWN0KToKICAgICAiIiJUaGlzIGNs
YXNzIHByb3ZpZGVzIGEgY29uc2lzdGVudCAoYW5kIG1vY2thYmxlKSBpbnRlcnByZXRhdGlvbiBv
ZgogICAgIHN5c3RlbS1zcGVjaWZpYyB2YWx1ZXMgKGxpa2Ugc3lzLnBsYXRmb3JtIGFuZCBwbGF0
Zm9ybS5tYWNfdmVyKCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vdXNlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vdXNlci5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3VzZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiAj
IENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMg
CisjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAjIG1ldDoKLSMgCisjCiAjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CiAjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KICMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTMsNyArMTMsNyBAQAogIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCiAjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jIAorIwogIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3Vz
ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS91c2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwx
MiArMzEsMTQgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
b3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKIAorCiBjbGFzcyBVc2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAKICAgICBleGFtcGxlX3VzZXJfcmVzcG9uc2UgPSAiZXhhbXBsZSB1c2VyIHJlc3Bv
bnNlIgogCiAgICAgZGVmIHRlc3RfcHJvbXB0X3JlcGVhdChzZWxmKToKICAgICAgICAgc2VsZi5y
ZXBlYXRzUmVtYWluaW5nID0gMgorCiAgICAgICAgIGRlZiBtb2NrX3Jhd19pbnB1dChtZXNzYWdl
KToKICAgICAgICAgICAgIHNlbGYucmVwZWF0c1JlbWFpbmluZyAtPSAxCiAgICAgICAgICAgICBp
ZiBub3Qgc2VsZi5yZXBlYXRzUmVtYWluaW5nOgpAQCAtNDYsNiArNDgsNyBAQCBjbGFzcyBVc2Vy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9wcm9tcHRfd2hlbl9leGNl
ZWRlZF9yZXBlYXRzKHNlbGYpOgogICAgICAgICBzZWxmLnJlcGVhdHNSZW1haW5pbmcgPSAyCisK
ICAgICAgICAgZGVmIG1vY2tfcmF3X2lucHV0KG1lc3NhZ2UpOgogICAgICAgICAgICAgc2VsZi5y
ZXBlYXRzUmVtYWluaW5nIC09IDEKICAgICAgICAgICAgIHJldHVybiBOb25lCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vd29ya3NwYWNlX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3Bh
Y2VfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2VfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDcgQEAgY2xhc3MgV29ya3NwYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIHRlc3RfY3JlYXRlX3ppcChzZWxmKToKICAgICAgICAgd29ya3NwYWNlID0gV29ya3Nw
YWNlKE5vbmUsIE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKSkKICAgICAgICAgZXhwZWN0
ZWRfbG9ncyA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ3ppcCcsICctOScsICctcicsICcvemlwL3Bh
dGgnLCAnLiddLCBjd2Q9L3NvdXJjZS9wYXRoXG4iCisKICAgICAgICAgY2xhc3MgTW9ja1ppcEZp
bGUob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKICAgICAg
ICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gcGF0aApAQCAtNjUsNiArNjYsNyBAQCBNT0NLIFNj
cmlwdEVycm9yCiAKIE1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MKICIiIgorCiAgICAgICAg
IGNsYXNzIE1vY2taaXBGaWxlKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IHBhdGgKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3RocmVhZC90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi90aHJlYWQvdGhy
ZWFkZWRtZXNzYWdlcXVldWUucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3RocmVhZC90aHJlYWRlZG1lc3NhZ2VxdWV1ZS5weQkod29ya2luZyBj
b3B5KQpAQCAtNDksNCArNDksMyBAQCBjbGFzcyBUaHJlYWRlZE1lc3NhZ2VRdWV1ZShvYmplY3Qp
OgogICAgICAgICAgICAgaXNfcnVubmluZyA9IHNlbGYuX2lzX3J1bm5pbmcKICAgICAgICAgICAg
IHNlbGYuX21lc3NhZ2VzID0gW10KICAgICAgICAgcmV0dXJuIChtZXNzYWdlcywgaXNfcnVubmlu
ZykKLQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGhyZWFkL3RocmVhZGVk
bWVzc2FnZXF1ZXVlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3RocmVhZC90aHJlYWRlZG1lc3NhZ2VxdWV1ZV91bml0dGVzdC5weQkocmV2
aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vdGhyZWFkL3Ro
cmVhZGVkbWVzc2FnZXF1ZXVlX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi50aHJlYWQudGhy
ZWFkZWRtZXNzYWdlcXVldWUgaW1wb3J0IFRocmVhZGVkTWVzc2FnZVF1ZXVlCiAKKwogY2xhc3Mg
VGhyZWFkZWRNZXNzYWdlUXVldWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0
ZXN0X2Jhc2ljKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGludF90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9saW50X3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIEZha2VQb3J0KG9iamVjdCk6CiAgICAgZGVmIHBh
dGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgogICAgICAgICByZXR1
cm4gJycKIAorCiBjbGFzcyBGYWtlRmFjdG9yeShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBob3N0LCBwb3J0cyk6CiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRp
b250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
X2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw2IEBAIGNs
YXNzIFJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKIAogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGhvc3QudXNlci5vcGVuZWRfdXJscywgW3BhdGguYWJzcGF0aF90b191cmkoTW9j
a0hvc3QoKS5wbGF0Zm9ybSwgJy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9yZXN1bHRzLmh0bWwn
KV0pCiAKLQogICAgIGRlZiB0ZXN0X2JhdGNoX3NpemUoc2VsZik6CiAgICAgICAgIGJhdGNoX3Rl
c3RzX3J1biA9IGdldF90ZXN0X2JhdGNoZXMoWyctLWJhdGNoLXNpemUnLCAnMiddKQogICAgICAg
ICBmb3IgYmF0Y2ggaW4gYmF0Y2hfdGVzdHNfcnVuOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L2xheW91dF90ZXN0X2ZpbmRlci5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBAIGNsYXNzIExheW91dFRlc3RGaW5kZXIo
b2JqZWN0KToKICAgICAgICAgdGVzdHNfdG9fc2tpcCA9IHNlbGYuc2tpcF90ZXN0cyhwb3RlbnRp
YWxfdGVzdF9wYXRocywgdGVzdHMsIGV4cGVjdGF0aW9ucywgTm9uZSkKICAgICAgICAgcmV0dXJu
IFt0ZXN0IGZvciB0ZXN0IGluIHRlc3RzIGlmIHRlc3Qgbm90IGluIHRlc3RzX3RvX3NraXBdCiAK
LQogICAgIGRlZiBfc3RyaXBfdGVzdF9kaXJfcHJlZml4ZXMoc2VsZiwgcGF0aHMpOgogICAgICAg
ICByZXR1cm4gW3NlbGYuX3N0cmlwX3Rlc3RfZGlyX3ByZWZpeChwYXRoKSBmb3IgcGF0aCBpbiBw
YXRocyBpZiBwYXRoXQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkJKHJldmlzaW9uIDIwMjM2
MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDYgQEAgX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQogVGVzdEV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25z
LlRlc3RFeHBlY3RhdGlvbnMKIAogCi0KIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAiIiJB
IGNsYXNzIGZvciBtYW5hZ2luZyBydW5uaW5nIGEgc2VyaWVzIG9mIHRlc3RzIG9uIGEgc2VyaWVz
IG9mIGxheW91dAogICAgIHRlc3QgZmlsZXMuIiIiCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
dGVzdF9yZXN1bHRfd3JpdGVyLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KGZp
bGVzeXN0ZW0sIHBvcnQsIAogICAgIGZvciBmYWlsdXJlIGluIGZhaWx1cmVzOgogICAgICAgICBm
YWlsdXJlLndyaXRlX2ZhaWx1cmUod3JpdGVyLCBkcml2ZXJfb3V0cHV0LCBleHBlY3RlZF9kcml2
ZXJfb3V0cHV0LCBwb3J0KQogCisKIGNsYXNzIFRlc3RSZXN1bHRXcml0ZXIob2JqZWN0KToKICAg
ICAiIiJBIGNsYXNzIHdoaWNoIGhhbmRsZXMgYWxsIHdyaXRpbmcgb3BlcmF0aW9ucyB0byB0aGUg
cmVzdWx0IGRpcmVjdG9yeS4iIiIKIApAQCAtMTc0LDcgKzE3NSw3IEBAIGNsYXNzIFRlc3RSZXN1
bHRXcml0ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fd3JpdGVfYmluYXJ5X2ZpbGUoZGlmZl9m
aWxlbmFtZSwgaW1hZ2VfZGlmZikKIAogICAgICAgICBiYXNlX2RpciA9IHNlbGYuX3BvcnQucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdmYXN0JywgJ2hhcm5lc3MnKQotICAg
ICAgICAKKwogICAgICAgICBpbWFnZV9kaWZmX3RlbXBsYXRlID0gc2VsZi5fZmlsZXN5c3RlbS5q
b2luKGJhc2VfZGlyLCAnaW1hZ2UtZGlmZi10ZW1wbGF0ZS5odG1sJyk7CiAgICAgICAgIGltYWdl
X2RpZmZfZmlsZSA9ICIiCiAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGltYWdl
X2RpZmZfdGVtcGxhdGUpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29u
X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJh
dG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIGRlZiBhZGRfcGF0aF90b190
cmllKHBhdGgsIHZhbHVlLCB0cmllKToKICAgICAgICAgdHJpZVtkaXJlY3RvcnldID0ge30KICAg
ICBhZGRfcGF0aF90b190cmllKHJlc3QsIHZhbHVlLCB0cmllW2RpcmVjdG9yeV0pCiAKKwogZGVm
IHRlc3RfdGltaW5nc190cmllKHBvcnQsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKToKICAgICAi
IiJCcmVha3MgYSB0ZXN0IG5hbWUgaW50byBjaHVua3MgYnkgZGlyZWN0b3J5IGFuZCBwdXRzIHRo
ZSB0ZXN0IHRpbWUgYXMgYSB2YWx1ZSBpbiB0aGUgbG93ZXN0IHBhcnQsIGUuZy4KICAgICBmb28v
YmFyL2Jhei5odG1sOiAxbXMKQEAgLTExOCw2ICsxMTksNyBAQCBkZWYgdGVzdF90aW1pbmdzX3Ry
aWUocG9ydCwgaW5kaXZpZHVhbF90CiAKICAgICByZXR1cm4gdHJpZQogCisKICMgRklYTUU6IFdl
IGFscmVhZHkgaGF2ZSBhIFRlc3RSZXN1bHQgY2xhc3MgaW4gdGVzdF9yZXN1bHRzLnB5CiBjbGFz
cyBUZXN0UmVzdWx0KG9iamVjdCk6CiAgICAgIiIiQSBzaW1wbGUgY2xhc3MgdGhhdCByZXByZXNl
bnRzIGEgc2luZ2xlIHRlc3QgcmVzdWx0LiIiIgpAQCAtMzI5LDcgKzMzMSw2IEBAIGNsYXNzIEpT
T05SZXN1bHRzR2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJVcGxv
YWQgZmFpbGVkOiAlcyIgJSBlcnIpCiAgICAgICAgICAgICByZXR1cm4KIAotCiAgICAgZGVmIF9n
ZXRfdGVzdF90aW1pbmcoc2VsZiwgdGVzdF9uYW1lKToKICAgICAgICAgIiIiUmV0dXJucyB0ZXN0
IHRpbWluZyBkYXRhIChlbGFwc2VkIHRpbWUpIGluIHNlY29uZAogICAgICAgICBmb3IgdGhlIGdp
dmVuIHRlc3RfbmFtZS4iIiIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2NvbmZpZ3VyYXRpb24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbi5weQko
cmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfY29uZmlndXJhdGlvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiBpbXBvcnQgaXRlcnRvb2xzCiAKKwogY2xhc3MgVGVzdENvbmZpZ3VyYXRpb24ob2Jq
ZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCBidWls
ZF90eXBlKToKICAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgpAQCAtMjU3LDcgKzI1OCw2
IEBAIGNsYXNzIFRlc3RDb25maWd1cmF0aW9uQ29udmVydGVyKG9iamVjdCkKICAgICAgICAgd2hp
bGUgdHJ5X2FiYnJldmlhdGluZyhzZWxmLl9jb2xsYXBzaW5nX3NldHNfYnlfc2l6ZS52YWx1ZXMo
KSk6CiAgICAgICAgICAgICBwYXNzCiAKLQogICAgICAgICAjIDQpIFN1YnN0aXR1dGUgc3BlY2lm
aWVyIHN1YnNldHMgdGhhdCBtYXRjaCBtYWNyb3Mgd2l0aW4gZWFjaCBzZXQ6CiAgICAgICAgICMg
ICAoeHAsIHZpc3RhLCB3aW43LCByZWxlYXNlKSAtPiAod2luLCByZWxlYXNlKQogICAgICAgICBz
ZWxmLmNvbGxhcHNlX21hY3JvcyhzZWxmLl9jb25maWd1cmF0aW9uX21hY3Jvcywgc3BlY2lmaWVy
c19saXN0KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxz
L3Rlc3RfZXhwZWN0YXRpb25zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQkocmV2aXNpb24gMjAy
MzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
ZXhwZWN0YXRpb25zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyArNTc5LDYgQEAgY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uc01vZGVsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0
ZW1bMF0udXBwZXIoKQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGV4cGVjdGF0aW9uKQogCi0K
ICAgICBkZWYgYWRkX2V4cGVjdGF0aW9uX2xpbmUoc2VsZiwgZXhwZWN0YXRpb25fbGluZSwgaW5f
c2tpcHBlZD1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBsaXN0IG9mIHdhcm5pbmdzIGVu
Y291bnRlcmVkIHdoaWxlIG1hdGNoaW5nIG1vZGlmaWVycy4iIiIKIApJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZmFpbHVyZXMucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
ZmFpbHVyZXMucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2ZhaWx1cmVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxMCArMzMsMTIgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydAog
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKKwogZGVmIGlzX3JlZnRlc3Rf
ZmFpbHVyZShmYWlsdXJlX2xpc3QpOgogICAgIGZhaWx1cmVfdHlwZXMgPSBbdHlwZShmKSBmb3Ig
ZiBpbiBmYWlsdXJlX2xpc3RdCiAgICAgcmV0dXJuIHNldCgoRmFpbHVyZVJlZnRlc3RNaXNtYXRj
aCwgRmFpbHVyZVJlZnRlc3RNaXNtYXRjaERpZE5vdE9jY3VyLCBGYWlsdXJlUmVmdGVzdE5vSW1h
Z2VzR2VuZXJhdGVkKSkuaW50ZXJzZWN0aW9uKGZhaWx1cmVfdHlwZXMpCiAKKwogIyBGSVhNRTog
VGhpcyBpcyBiYWNrd2FyZHMuICBFYWNoIFRlc3RGYWlsdXJlIHN1YmNsYXNzIHNob3VsZCBrbm93
IHdoYXQKICMgdGVzdF9leHBlY3RhdGlvbiB0eXBlIGl0IGNvcnJlc3BvbmRzIHRvby4gIFRoZW4g
dGhpcyBtZXRob2QganVzdAogIyBjb2xsZWN0cyB0aGVtIGFsbCBmcm9tIHRoZSBmYWlsdXJlIGxp
c3QgYW5kIHJldHVybnMgdGhlIHdvcnN0IG9uZS4KQEAgLTIzNiw2ICsyMzgsNyBAQCBjbGFzcyBG
YWlsdXJlUmVmdGVzdE1pc21hdGNoRGlkTm90T2NjdXIoCiAgICAgICAgIHdyaXRlci53cml0ZV9p
bWFnZV9maWxlcyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9pbWFnZT1Ob25lKQogICAg
ICAgICB3cml0ZXIud3JpdGVfcmVmdGVzdChzZWxmLnJlZmVyZW5jZV9maWxlbmFtZSkKIAorCiBj
bGFzcyBGYWlsdXJlUmVmdGVzdE5vSW1hZ2VzR2VuZXJhdGVkKFRlc3RGYWlsdXJlKToKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVmZXJlbmNlX2ZpbGVuYW1lPU5vbmUpOgogICAgICAgICBzdXBl
cihGYWlsdXJlUmVmdGVzdE5vSW1hZ2VzR2VuZXJhdGVkLCBzZWxmKS5fX2luaXRfXygpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVz
dWx0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQogCiBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUyA9IHNpZ25hbC5TSUdJTlQgKyAx
MjgKIAorCiBjbGFzcyBUZXN0UnVuUmVzdWx0cyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBleHBlY3RhdGlvbnMsIG51bV90ZXN0cyk6CiAgICAgICAgIHNlbGYudG90YWwgPSBudW1f
dGVzdHMKQEAgLTEyMyw2ICsxMjQsNyBAQCBkZWYgX2ludGVycHJldF90ZXN0X2ZhaWx1cmVzKGZh
aWx1cmVzKToKIAogICAgIHJldHVybiB0ZXN0X2RpY3QKIAorCiAjIFRoZXNlIHJlc3VsdHMgbXVz
dCBtYXRjaCBvbmVzIGluIHByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cygpIGluIHZpZXdzL2J1aWxk
Ym90X3Jlc3VsdHMucHkuCiBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0
aW9ucywgaW5pdGlhbF9yZXN1bHRzLCByZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3Rz
X2luX3JldHJ5LCBpbmNsdWRlX3Bhc3Nlcz1GYWxzZSwgaW5jbHVkZV90aW1lX2FuZF9tb2RpZmll
cnM9RmFsc2UpOgogICAgICIiIlJldHVybnMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYSBzdW1t
YXJ5IG9mIHRoZSB0ZXN0IHJ1bnMsIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6CkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzYxKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJl
YW1fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQCBjbGFzcyBS
ZWd1bGFyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8o
J2ZvbyAlcyAlZCcsICdiYXInLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYnVm
bGlzdCwgWydmb28gYmFyIDJcbiddKQogCisKIGNsYXNzIFR0eVRlc3QoUmVndWxhclRlc3QpOgog
ICAgIHZlcmJvc2UgPSBGYWxzZQogICAgIGlzYXR0eSA9IFRydWUKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5CShy
ZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9wcmludGluZy5weQkod29ya2luZyBjb3B5KQpAQCAtMzQ1LDcgKzM0NSw2IEBAIGNsYXNz
IFByaW50ZXIob2JqZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiAnIGZh
aWxlZCVzICglcyknICUgKGV4cF9zdHJpbmcsICcsICcuam9pbihmYWlsdXJlLm1lc3NhZ2UoKSBm
b3IgZmFpbHVyZSBpbiBmYWlsdXJlcykpCiAKLQogICAgIGRlZiBfcHJpbnRfdGVzdF90cmFjZShz
ZWxmLCByZXN1bHQsIGV4cF9zdHIsIGdvdF9zdHIpOgogICAgICAgICB0ZXN0X25hbWUgPSByZXN1
bHQudGVzdF9uYW1lCiAgICAgICAgIHNlbGYuX3ByaW50X2RlZmF1bHQoc2VsZi5fdGVzdF9zdGF0
dXNfbGluZSh0ZXN0X25hbWUsICcnKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CShyZXZp
c2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lci5weQkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNiBAQCBjbGFz
cyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fdGltZXN0YW1wID0gdGlt
ZS50aW1lKCkKICAgICAgICAgc2VsZi5fdXRjX3RpbWVzdGFtcCA9IGRhdGV0aW1lLmRhdGV0aW1l
LnV0Y25vdygpCiAKLQogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3BhcnNlX2FyZ3MoYXJn
cz1Ob25lKToKICAgICAgICAgZGVmIF9leHBhbmRfcGF0aChvcHRpb24sIG9wdF9zdHIsIHZhbHVl
LCBwYXJzZXIpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVn
cmF0aW9udGVzdC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yMTMsNiArMjEzLDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCiAgICAgICAgIGNsYXNzIFRlc3REcml2ZXJXaXRoU3RvcENvdW50KFRlc3RE
cml2ZXIpOgogICAgICAgICAgICAgc3RvcF9jb3VudCA9IDAKKwogICAgICAgICAgICAgZGVmIHN0
b3Aoc2VsZik6CiAgICAgICAgICAgICAgICAgVGVzdERyaXZlcldpdGhTdG9wQ291bnQuc3RvcF9j
b3VudCArPSAxCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tCiBmcm9tIHdlYmtpdHB5LnBvcnQg
aW1wb3J0IFBvcnQsIERyaXZlciwgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LnBvcnQudGVz
dCBpbXBvcnQgYWRkX3VuaXRfdGVzdHNfdG9fbW9ja19maWxlc3lzdGVtLCBUZXN0UG9ydAogCisK
IGNsYXNzIFBvcnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgbWFrZV9wb3J0KHNl
bGYsIGV4ZWN1dGl2ZT1Ob25lLCB3aXRoX3Rlc3RzPUZhbHNlLCBwb3J0X25hbWU9Tm9uZSwgKipr
d2FyZ3MpOgogICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQpAQCAtODgsNyArODksNiBA
QCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocG9ydC5wcmV0dHlfcGF0Y2gucHJldHR5X3BhdGNoX3RleHQoInBhdGNoLnR4dCIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucHJldHR5X3BhdGNoLnByZXR0eV9wYXRjaF9l
cnJvcl9odG1sKQogCi0KICAgICBkZWYgdGVzdF9kaWZmX3RleHQoc2VsZik6CiAgICAgICAgIHBv
cnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3Qg
cnVuIGludG8gZGVjb2RpbmcgZXhjZXB0aW9ucyB3aGVuIHRoZQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZHJpdmVyLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcg
QEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVjdCk6CiAgICAgICAgIGZvciBwYXR0ZXJuIGluIHBh
dHRlcm5zOgogICAgICAgICAgICAgc2VsZi5lcnJvciA9IHJlLnN1YihwYXR0ZXJuWzBdLCBwYXR0
ZXJuWzFdLCBzZWxmLmVycm9yKQogCisKIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICIiIm9i
amVjdCBmb3IgcnVubmluZyB0ZXN0KHMpIHVzaW5nIER1bXBSZW5kZXJUcmVlL1dlYktpdFRlc3RS
dW5uZXIuIiIiCiAKQEAgLTYyNCw2ICs2MjUsNyBAQCBjbGFzcyBDb250ZW50QmxvY2sob2JqZWN0
KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZGVjb2RlZF9jb250ZW50ID0gc2Vs
Zi5jb250ZW50CiAKKwogY2xhc3MgRHJpdmVyUHJveHkob2JqZWN0KToKICAgICAiIiJBIHdyYXBw
ZXIgZm9yIG1hbmFnaW5nIHR3byBEcml2ZXIgaW5zdGFuY2VzLCBvbmUgd2l0aCBwaXhlbCB0ZXN0
cyBhbmQKICAgICBvbmUgd2l0aG91dC4gVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHBsYWluIHRl
eHQgdGVzdHMgYW5kIHJlZiB0ZXN0cyB3aXRoIGEKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9kcml2ZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtNDEsNiArNDEsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1v
Y2tPCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAorCiBjbGFzcyBEcml2ZXJPdXRwdXRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zdHJpcF9tZXRyaWNzKHNlbGYpOgogICAg
ICAgICBwYXR0ZXJucyA9IFsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0
b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5
LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFj
dG9yeS5weQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBkZWYgY29uZmlndXJhdGlv
bl9vcHRpb25zKCk6CiAgICAgICAgIF0KIAogCi0KIGRlZiBfYnVpbGRlcl9vcHRpb25zKGJ1aWxk
ZXJfbmFtZSk6CiAgICAgY29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIgaWYgcmUuc2VhcmNoKHIiW2R8
RF0oZWJ1fGIpZyIsIGJ1aWxkZXJfbmFtZSkgZWxzZSAiUmVsZWFzZSIKICAgICBpc193ZWJraXQy
ID0gYnVpbGRlcl9uYW1lLmZpbmQoIldLMiIpICE9IC0xCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZ3RrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9ndGsucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9ndGsucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgZnJvbSB3ZWJraXRw
eS5wb3J0LmxlYWtkZXRlY3Rvcl92YWxncmluZAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
X19uYW1lX18pCiAKKwogY2xhc3MgR3RrUG9ydChQb3J0KToKICAgICBwb3J0X25hbWUgPSAiZ3Rr
IgogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZl
cl9wcm9jZXNzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3Rf
bQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1
dENhcHR1cmUKIAogCi0KIGNsYXNzIFRyaXZpYWxNb2NrUG9ydChvYmplY3QpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5ob3N0ID0gTW9ja1N5c3RlbUhvc3QoKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NiArMTA1LDcgQEAgVE9UQUxfUkVUUklFUyA9IDE0CiBVTkVYUEVDVEVEX1BBU1NFUyA9IDcKIFVO
RVhQRUNURURfRkFJTFVSRVMgPSAxNwogCisKIGRlZiB1bml0X3Rlc3RfbGlzdCgpOgogICAgIHNp
bGVudF9hdWRpbyA9ICJSSUZGMlx4MDBceDAwXHgwMFdBVkVmbXQgXHgxMFx4MDBceDAwXHgwMFx4
MDFceDAwXHgwMVx4MDBceDIyXHg1Nlx4MDBceDAwXHg0NFx4QUNceDAwXHgwMFx4MDJceDAwXHgx
MFx4MDBkYXRhXHgwRVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgIHNpbGVudF9hdWRpb193aXRoX3NpbmdsZV9i
aXRfZGlmZmVyZW5jZSA9ICJSSUZGMlx4MDBceDAwXHgwMFdBVkVmbXQgXHgxMFx4MDBceDAwXHgw
MFx4MDFceDAwXHgwMVx4MDBceDIyXHg1Nlx4MDBceDAwXHg0NFx4QUNceDAwXHgwMFx4MDJceDAw
XHgxMFx4MDBkYXRhXHgwRVx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgpAQCAtNTI0LDYgKzUyNSw3IEBAIGNsYXNzIFRl
c3RQb3J0KFBvcnQpOgogICAgIGRlZiBhbGxfYmFzZWxpbmVfdmFyaWFudHMoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLkFMTF9CQVNFTElORV9WQVJJQU5UUwogCisKIGNsYXNzIFRlc3REcml2
ZXIoRHJpdmVyKToKICAgICAiIiJUZXN0L0R1bW15IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEdW1w
UmVuZGVyVHJlZSBpbnRlcmZhY2UuIiIiCiAgICAgbmV4dF9waWQgPSAxCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW4ucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW4ucHkJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgdHJ5
OgogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF9sb2cud2FybigiTm90IHJ1bm5pbmcgb24gbmF0
aXZlIFdpbmRvd3MuIikKIAorCiBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgcG9ydF9u
YW1lID0gIndpbiIKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5w
eQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgX1BBVEhfUlVMRVNfU1BF
Q0lGSUVSID0gWwogICAgICMgQVBJIGFuZCB0aGVyZWZvcmUgZG8gbm90IGZvbGxvdyB0aGUgc2Ft
ZSBoZWFkZXIgaW5jbHVkaW5nCiAgICAgIyBkaXNjaXBsaW5lIGFzIFdlYkNvcmUuCiAKLSAgICAo
WyMgVGVzdE5ldHNjYXBlUGx1Z0luIGhhcyBubyBjb25maWcuaCBhbmQgdXNlcyBmdW5ueSBuYW1l
cyBsaWtlCisgICAgKFsgICMgVGVzdE5ldHNjYXBlUGx1Z0luIGhhcyBubyBjb25maWcuaCBhbmQg
dXNlcyBmdW5ueSBuYW1lcyBsaWtlCiAgICAgICAjIE5QUF9TZXRXaW5kb3cuCiAgICAgICBvcy5w
YXRoLmpvaW4oJ1Rvb2xzJywgJ0R1bXBSZW5kZXJUcmVlJywgJ1Rlc3ROZXRzY2FwZVBsdWdJbicp
XSwKICAgICAgWyItYnVpbGQvaW5jbHVkZSIsCkBAIC01MTIsNiArNTEyLDcgQEAgY2xhc3MgRmls
ZVR5cGU6CiAgICAgQ01BS0UgPSAxMQogICAgIEZFQVRVUkVERUZJTkVTID0gMTIKIAorCiBjbGFz
cyBDaGVja2VyRGlzcGF0Y2hlcihvYmplY3QpOgogCiAgICAgIiIiU3VwcG9ydHMgZGV0ZXJtaW5p
bmcgd2hldGhlciBhbmQgaG93IHRvIGNoZWNrIHN0eWxlLCBiYXNlZCBvbiBwYXRoLiIiIgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9lcnJvcl9oYW5kbGVycy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRsZXJzLnB5CShy
ZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hh
bmRsZXJzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRGVmYXVs
dFN0eWxlRXJyb3JIYW5kbGVyKG9iamVjdCk6CiAKICAgICBkZWYgX2FkZF9yZXBvcnRhYmxlX2Vy
cm9yKHNlbGYsIGNhdGVnb3J5KToKICAgICAgICAgIiIiSW5jcmVtZW50IHRoZSBlcnJvciBjb3Vu
dCBhbmQgcmV0dXJuIHRoZSBuZXcgY2F0ZWdvcnkgdG90YWwuIiIiCi0gICAgICAgIHNlbGYuX2lu
Y3JlbWVudF9lcnJvcl9jb3VudCgpICMgSW5jcmVtZW50IHRoZSB0b3RhbC4KKyAgICAgICAgc2Vs
Zi5faW5jcmVtZW50X2Vycm9yX2NvdW50KCkgICMgSW5jcmVtZW50IHRoZSB0b3RhbC4KIAogICAg
ICAgICAjIEluY3JlbWVudCB0aGUgY2F0ZWdvcnkgdG90YWwuCiAgICAgICAgIGlmIG5vdCBjYXRl
Z29yeSBpbiBzZWxmLl9jYXRlZ29yeV90b3RhbHM6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2ZpbHRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2ZpbHRlci5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9maWx0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgY2xh
c3MgX0NhdGVnb3J5RmlsdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBmaWx0ZXJfcnVsZXMgPSBb
XQogCiAgICAgICAgIHNlbGYuX2ZpbHRlcl9ydWxlcyA9IGZpbHRlcl9ydWxlcwotICAgICAgICBz
ZWxmLl9zaG91bGRfY2hlY2tfY2F0ZWdvcnkgPSB7fSAjIENhY2hlZCBkaWN0aW9uYXJ5IG9mIGNh
dGVnb3J5IHRvIFRydWUvRmFsc2UKKyAgICAgICAgc2VsZi5fc2hvdWxkX2NoZWNrX2NhdGVnb3J5
ID0ge30gICMgQ2FjaGVkIGRpY3Rpb25hcnkgb2YgY2F0ZWdvcnkgdG8gVHJ1ZS9GYWxzZQogCiAg
ICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiLCIuam9pbihzZWxmLl9maWx0
ZXJfcnVsZXMpCkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBjbGFzcyBfQ2F0ZWdvcnlGaWx0ZXIob2Jq
ZWN0KToKICAgICAgICAgaWYgY2F0ZWdvcnkgaW4gc2VsZi5fc2hvdWxkX2NoZWNrX2NhdGVnb3J5
OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3VsZF9jaGVja19jYXRlZ29yeVtjYXRlZ29y
eV0KIAotICAgICAgICBzaG91bGRfY2hlY2sgPSBUcnVlICMgQWxsIGNhdGVnb3JpZXMgY2hlY2tl
ZCBieSBkZWZhdWx0LgorICAgICAgICBzaG91bGRfY2hlY2sgPSBUcnVlICAjIEFsbCBjYXRlZ29y
aWVzIGNoZWNrZWQgYnkgZGVmYXVsdC4KICAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5fZmlsdGVy
X3J1bGVzOgogICAgICAgICAgICAgaWYgbm90IGNhdGVnb3J5LnN0YXJ0c3dpdGgocnVsZVsxOl0p
OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBzaG91bGRfY2hlY2sgPSBy
dWxlLnN0YXJ0c3dpdGgoJysnKQotICAgICAgICBzZWxmLl9zaG91bGRfY2hlY2tfY2F0ZWdvcnlb
Y2F0ZWdvcnldID0gc2hvdWxkX2NoZWNrICMgVXBkYXRlIGNhY2hlLgorICAgICAgICBzZWxmLl9z
aG91bGRfY2hlY2tfY2F0ZWdvcnlbY2F0ZWdvcnldID0gc2hvdWxkX2NoZWNrICAjIFVwZGF0ZSBj
YWNoZS4KICAgICAgICAgcmV0dXJuIHNob3VsZF9jaGVjawogCiAKQEAgLTIxMyw3ICsyMTMsNyBA
QCBjbGFzcyBGaWx0ZXJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAgICAgICAgICAgICBmb3Igc3Vi
X3BhdGggaW4gc3ViX3BhdGhzOgogICAgICAgICAgICAgICAgIGlmIHBhdGguZmluZChzdWJfcGF0
aCkgPiAtMToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHBhdGhfcnVsZXMpCi0g
ICAgICAgIHJldHVybiAoKSAjIERlZmF1bHQgdG8gdGhlIGVtcHR5IHR1cGxlLgorICAgICAgICBy
ZXR1cm4gKCkgICMgRGVmYXVsdCB0byB0aGUgZW1wdHkgdHVwbGUuCiAKICAgICBkZWYgX2ZpbHRl
cl9mcm9tX3BhdGhfcnVsZXMoc2VsZiwgcGF0aF9ydWxlcyk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgQ2F0ZWdvcnlGaWx0ZXIgYXNzb2NpYXRlZCB0byB0aGUgZ2l2ZW4gcGF0aCBydWxlcy4KQEAg
LTIyNyw3ICsyMjcsNyBAQCBjbGFzcyBGaWx0ZXJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAgICAg
ICAgICMgV2UgcmV1c2UgdGhlIHNhbWUgQ2F0ZWdvcnlGaWx0ZXIgd2hlcmUgcG9zc2libGUgdG8g
dGFrZQogICAgICAgICAjIGFkdmFudGFnZSBvZiB0aGUgY2FjaGluZyB0aGV5IGRvLgogICAgICAg
ICBpZiBwYXRoX3J1bGVzIG5vdCBpbiBzZWxmLl9wYXRoX3J1bGVzX3RvX2ZpbHRlcjoKLSAgICAg
ICAgICAgIHJ1bGVzID0gbGlzdChzZWxmLl9iYXNlX3J1bGVzKSAjIE1ha2UgYSBjb3B5CisgICAg
ICAgICAgICBydWxlcyA9IGxpc3Qoc2VsZi5fYmFzZV9ydWxlcykgICMgTWFrZSBhIGNvcHkKICAg
ICAgICAgICAgIHJ1bGVzLmV4dGVuZChwYXRoX3J1bGVzKQogICAgICAgICAgICAgcnVsZXMuZXh0
ZW5kKHNlbGYuX3VzZXJfcnVsZXMpCiAgICAgICAgICAgICBzZWxmLl9wYXRoX3J1bGVzX3RvX2Zp
bHRlcltwYXRoX3J1bGVzXSA9IF9DYXRlZ29yeUZpbHRlcihydWxlcykKQEAgLTI3NSw0ICsyNzUs
MyBAQCBjbGFzcyBGaWx0ZXJDb25maWd1cmF0aW9uKG9iamVjdCk6CiAKICAgICAgICAgIiIiCiAg
ICAgICAgIHJldHVybiBzZWxmLl9maWx0ZXJfZnJvbV9wYXRoKHBhdGgpLnNob3VsZF9jaGVjayhj
YXRlZ29yeSkKLQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWx0ZXJfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWx0
ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvZmlsdGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBAIGZyb20gZmlsdGVyIGltcG9ydCBGaWx0ZXJDb25maWd1cmF0aW9uCiAjCiAjICAgKGZyb20g
aHR0cDovL2RvY3MucHl0aG9uLm9yZy9yZWZlcmVuY2UvZGF0YW1vZGVsLmh0bWwjb2JqZWN0Ll9f
bmVfXyApCiAKKwogY2xhc3MgVmFsaWRhdGVGaWx0ZXJSdWxlc1Rlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogCiAgICAgIiIiVGVzdHMgdmFsaWRhdGVfZmlsdGVyX3J1bGVzKCkgZnVuY3Rpb24uIiIi
CkBAIC0yNTMsNCArMjU0LDMgQEAgY2xhc3MgRmlsdGVyQ29uZmlndXJhdGlvblRlc3QodW5pdHRl
c3QuVAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29uZmlnLnNob3VsZF9jaGVjaygiYSIs
ICJwYXRoIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb25maWcuc2hvdWxkX2NoZWNrKCJi
IiwgInBhdGgiKSkKLQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJz
ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJz
ZXIucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
b3B0cGFyc2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcgQEAgY2xhc3MgQXJn
dW1lbnRQcmludGVyKG9iamVjdCk6CiAgICAgIiIiU3VwcG9ydHMgdGhlIHByaW50aW5nIG9mIGNo
ZWNrLXdlYmtpdC1zdHlsZSBjb21tYW5kIGFyZ3VtZW50cy4iIiIKIAogICAgIGRlZiBfZmxhZ19w
YWlyX3RvX3N0cmluZyhzZWxmLCBmbGFnX2tleSwgZmxhZ192YWx1ZSk6Ci0gICAgICAgIHJldHVy
biAnLS0lKGtleSlzPSUodmFsKXMnICUgeydrZXknOiBmbGFnX2tleSwgJ3ZhbCc6IGZsYWdfdmFs
dWUgfQorICAgICAgICByZXR1cm4gJy0tJShrZXkpcz0lKHZhbClzJyAlIHsna2V5JzogZmxhZ19r
ZXksICd2YWwnOiBmbGFnX3ZhbHVlfQogCiAgICAgZGVmIHRvX2ZsYWdfc3RyaW5nKHNlbGYsIG9w
dGlvbnMpOgogICAgICAgICAiIiJSZXR1cm4gYSBmbGFnIHN0cmluZyBvZiB0aGUgZ2l2ZW4gQ29t
bWFuZE9wdGlvblZhbHVlcyBpbnN0YW5jZS4KQEAgLTQ2OCw0ICs0NjgsMyBAQCBjbGFzcyBBcmd1
bWVudFBhcnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnaXRfaW5kZXg9Z2l0X2luZGV4KQogCiAgICAgICAgIHJldHVybiAocGF0aHMsIG9wdGlvbnMp
Ci0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2Vy
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL29wdHBhcnNlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYs
NyBAQCBjbGFzcyBBcmd1bWVudFBhcnNlclRlc3QoTG9nZ2luZ1Rlc3RDYXNlCiAgICAgICAgICIi
IlJldHVybiBhbiBBcmd1bWVudFBhcnNlciBpbnN0YW5jZSBmb3IgdGVzdGluZy4iIiIKICAgICAg
ICAgZGVmYXVsdF9vcHRpb25zID0gc2VsZi5fY3JlYXRlX2RlZmF1bHRzKCkKIAotICAgICAgICBh
bGxfY2F0ZWdvcmllcyA9IFsiYnVpbGQiICwid2hpdGVzcGFjZSJdCisgICAgICAgIGFsbF9jYXRl
Z29yaWVzID0gWyJidWlsZCIsICJ3aGl0ZXNwYWNlIl0KIAogICAgICAgICBtb2NrX3N0ZGVyciA9
IHNlbGYuX01vY2tTdGRFcnIoKQogCkBAIC0xMjMsMTkgKzEyMywxOSBAQCBjbGFzcyBBcmd1bWVu
dFBhcnNlclRlc3QoTG9nZ2luZ1Rlc3RDYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5
c3RlbUV4aXQsIHBhcnNlLCBbJy0tbWluLWNvbmZpZGVuY2U9NiddKQogICAgICAgICBzZWxmLmFz
c2VydExvZyhbJ0VSUk9SOiBvcHRpb24gLS1taW4tY29uZmlkZW5jZTogaW52YWxpZCBpbnRlZ2Vy
OiA2OiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDEg
YW5kIDVcbiddKQotICAgICAgICBwYXJzZShbJy0tbWluLWNvbmZpZGVuY2U9MSddKSAjIHdvcmtz
Ci0gICAgICAgIHBhcnNlKFsnLS1taW4tY29uZmlkZW5jZT01J10pICMgd29ya3MKKyAgICAgICAg
cGFyc2UoWyctLW1pbi1jb25maWRlbmNlPTEnXSkgICMgd29ya3MKKyAgICAgICAgcGFyc2UoWyct
LW1pbi1jb25maWRlbmNlPTUnXSkgICMgd29ya3MKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTeXN0ZW1FeGl0LCBwYXJzZSwgWyctLW91dHB1dD1iYWQnXSkKICAgICAgICAgc2VsZi5hc3Nl
cnRMb2coWydFUlJPUjogb3B0aW9uIC0tb3V0cHV0LWZvcm1hdDogaW52YWxpZCBjaG9pY2U6ICcK
ICAgICAgICAgICAgICAgICAgICAgICAgICInYmFkJyAoY2hvb3NlIGZyb20gJ2VtYWNzJywgJ3Zz
NycpXG4iXSkKLSAgICAgICAgcGFyc2UoWyctLW91dHB1dD12czcnXSkgIyB3b3JrcworICAgICAg
ICBwYXJzZShbJy0tb3V0cHV0PXZzNyddKSAgIyB3b3JrcwogCiAgICAgICAgICMgUGFzcyBhIGZp
bHRlciBydWxlIG5vdCBiZWdpbm5pbmcgd2l0aCArIG9yIC0uCiAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFN5c3RlbUV4aXQsIHBhcnNlLCBbJy0tZmlsdGVyPWJ1aWxkJ10pCiAgICAgICAgIHNl
bGYuYXNzZXJ0TG9nKFsnRVJST1I6IEludmFsaWQgZmlsdGVyIHJ1bGUgImJ1aWxkIjogJwogICAg
ICAgICAgICAgICAgICAgICAgICAgJ2V2ZXJ5IHJ1bGUgbXVzdCBzdGFydCB3aXRoICsgb3IgLS5c
biddKQotICAgICAgICBwYXJzZShbJy0tZmlsdGVyPStidWlsZCddKSAjIHdvcmtzCisgICAgICAg
IHBhcnNlKFsnLS1maWx0ZXI9K2J1aWxkJ10pICAjIHdvcmtzCiAKICAgICBkZWYgdGVzdF9wYXJz
ZV9kZWZhdWx0X2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgcGFyc2UgPSBzZWxmLl9wYXJzZQpA
QCAtMjA4LDEyICsyMDgsMTIgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlc1Rlc3QodW5pdHRl
c3QuVAogCiAgICAgICAgICMgQ2hlY2sgYXJndW1lbnQgdmFsaWRhdGlvbi4KICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgUHJvY2Vzc29yT3B0aW9ucywgb3V0cHV0X2Zvcm1h
dD0iYmFkIikKLSAgICAgICAgUHJvY2Vzc29yT3B0aW9ucyhvdXRwdXRfZm9ybWF0PSJlbWFjcyIp
ICMgTm8gVmFsdWVFcnJvcjogd29ya3MKLSAgICAgICAgUHJvY2Vzc29yT3B0aW9ucyhvdXRwdXRf
Zm9ybWF0PSJ2czciKSAjIHdvcmtzCisgICAgICAgIFByb2Nlc3Nvck9wdGlvbnMob3V0cHV0X2Zv
cm1hdD0iZW1hY3MiKSAgIyBObyBWYWx1ZUVycm9yOiB3b3JrcworICAgICAgICBQcm9jZXNzb3JP
cHRpb25zKG91dHB1dF9mb3JtYXQ9InZzNyIpICAjIHdvcmtzCiAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IsIFByb2Nlc3Nvck9wdGlvbnMsIG1pbl9jb25maWRlbmNlPTApCiAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFByb2Nlc3Nvck9wdGlvbnMsIG1p
bl9jb25maWRlbmNlPTYpCi0gICAgICAgIFByb2Nlc3Nvck9wdGlvbnMobWluX2NvbmZpZGVuY2U9
MSkgIyB3b3JrcwotICAgICAgICBQcm9jZXNzb3JPcHRpb25zKG1pbl9jb25maWRlbmNlPTUpICMg
d29ya3MKKyAgICAgICAgUHJvY2Vzc29yT3B0aW9ucyhtaW5fY29uZmlkZW5jZT0xKSAgIyB3b3Jr
cworICAgICAgICBQcm9jZXNzb3JPcHRpb25zKG1pbl9jb25maWRlbmNlPTUpICAjIHdvcmtzCiAK
ICAgICAgICAgIyBDaGVjayBhdHRyaWJ1dGVzLgogICAgICAgICBvcHRpb25zID0gUHJvY2Vzc29y
T3B0aW9ucyhmaWx0ZXJfcnVsZXM9WyIrIl0sCkBAIC0yNjAsNCArMjYwLDMgQEAgY2xhc3MgQ29t
bWFuZE9wdGlvblZhbHVlc1Rlc3QodW5pdHRlc3QuVAogICAgICAgICAjIFRodXMsIGp1c3QgY2hl
Y2sgdGhlIGRpc3Rpbmd1aXNoaW5nIGNhc2UgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgICAgICAgICMg
Y29kZSBkZWZpbmVzIF9fbmVfXy4KICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQcm9jZXNzb3JP
cHRpb25zKCkuX19uZV9fKFByb2Nlc3Nvck9wdGlvbnMoKSkpCi0KSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY29tbW9uX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NvbW1vbl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY29tbW9uIGltcG9ydCBDYXJyaWFnZVJldHVybkNoZWNr
ZXIKIGZyb20gY29tbW9uIGltcG9ydCBUYWJDaGVja2VyCiAKKwogIyBGSVhNRTogVGhlIHVuaXQg
dGVzdHMgZm9yIHRoZSBjcHAsIHRleHQsIGFuZCBjb21tb24gY2hlY2tlcnMgc2hvdWxkCiAjICAg
ICAgICBzaGFyZSBzdXBwb3J0aW5nIHRlc3QgY29kZS4gVGhpcyBjYW4gaW5jbHVkZSwgZm9yIGV4
YW1wbGUsIHRoZQogIyAgICAgICAgbW9jayBzdHlsZSBlcnJvciBoYW5kbGluZyBjb2RlIGFuZCB0
aGUgY29kZSB0byBjaGVjayB0aGF0IGFsbApAQCAtNDMsNyArNDQsNyBAQCBjbGFzcyBDYXJyaWFn
ZVJldHVybkNoZWNrZXJUZXN0KHVuaXR0ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgImJl
dHRlciB0byB1c2Ugb25seSBhIFxcbiIpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAg
IHNlbGYuX3N0eWxlX2Vycm9ycyA9IFtdICMgVGhlIGxpc3Qgb2YgYWNjdW11bGF0ZWQgc3R5bGUg
ZXJyb3JzLgorICAgICAgICBzZWxmLl9zdHlsZV9lcnJvcnMgPSBbXSAgIyBUaGUgbGlzdCBvZiBh
Y2N1bXVsYXRlZCBzdHlsZSBlcnJvcnMuCiAKICAgICBkZWYgX21vY2tfc3R5bGVfZXJyb3JfaGFu
ZGxlcihzZWxmLCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkJKHdvcmtpbmcgY29weSkK
QEAgLTIwNSw3ICsyMDUsNiBAQCBkZWYgX2NvbnZlcnRfdG9fbG93ZXJfd2l0aF91bmRlcnNjb3Jl
cyh0CiAgICAgcmV0dXJuIHRleHQubG93ZXIoKQogCiAKLQogZGVmIF9jcmVhdGVfYWNyb255bSh0
ZXh0KToKICAgICAiIiJDcmVhdGVzIGFuIGFjcm9ueW0gZm9yIHRoZSBnaXZlbiB0ZXh0LiIiIgog
ICAgICMgUmVtb3ZlcyBhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzIGV4Y2VwdCB0aG9zZSBzdGFydGlu
ZyB3b3Jkcy4KQEAgLTIzMCwxNCArMjI5LDE1IEBAIGRlZiB1cF90b191bm1hdGNoZWRfY2xvc2lu
Z19wYXJlbihzKToKICAgICAiIiIKICAgICBpID0gMQogICAgIGZvciBwb3MsIGMgaW4gZW51bWVy
YXRlKHMpOgotICAgICAgaWYgYyA9PSAnKCc6Ci0gICAgICAgIGkgKz0gMQotICAgICAgZWxpZiBj
ID09ICcpJzoKLSAgICAgICAgaSAtPSAxCi0gICAgICAgIGlmIGkgPT0gMDoKLSAgICAgICAgICBy
ZXR1cm4gc1s6cG9zXSwgc1twb3MgKyAxOl0KKyAgICAgICAgaWYgYyA9PSAnKCc6CisgICAgICAg
ICAgICBpICs9IDEKKyAgICAgICAgZWxpZiBjID09ICcpJzoKKyAgICAgICAgICAgIGkgLT0gMQor
ICAgICAgICAgICAgaWYgaSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBzWzpwb3NdLCBz
W3BvcyArIDE6XQogICAgIHJldHVybiBOb25lLCBOb25lCiAKKwogY2xhc3MgX0luY2x1ZGVTdGF0
ZShkaWN0KToKICAgICAiIiJUcmFja3MgbGluZSBudW1iZXJzIGZvciBpbmNsdWRlcywgYW5kIHRo
ZSBvcmRlciBpbiB3aGljaCBpbmNsdWRlcyBhcHBlYXIuCiAKQEAgLTU0MCwxMiArNTQwLDEyIEBA
IGNsYXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BhcmFtZXRlcl9s
aXN0ID0gTm9uZQogCiAgICAgZGVmIG1vZGlmaWVyc19hbmRfcmV0dXJuX3R5cGUoc2VsZik6Ci0g
ICAgICAgICAiIiJSZXR1cm5zIHRoZSBtb2RpZmllcnMgYW5kIHRoZSByZXR1cm4gdHlwZS4iIiIK
LSAgICAgICAgICMgR28gYmFja3dhcmRzIGZyb20gd2hlcmUgdGhlIGZ1bmN0aW9uIG5hbWUgaXMg
dW50aWwgd2UgZW5jb3VudGVyIG9uZSBvZiBzZXZlcmFsIHRoaW5nczoKLSAgICAgICAgICMgICAn
Oycgb3IgJ3snIG9yICd9JyBvciAncHJpdmF0ZTonLCBldGMuIG9yICcjJyBvciByZXR1cm4gUG9z
aXRpb24oMCwgMCkKLSAgICAgICAgIGVsaWRlZCA9IHNlbGYuX2NsZWFuX2xpbmVzLmVsaWRlZAot
ICAgICAgICAgc3RhcnRfbW9kaWZpZXJzID0gX3JmaW5kX2luX2xpbmVzKHInO3xce3xcfXwoKHBy
aXZhdGV8cHVibGljfHByb3RlY3RlZCk6KXwoIy4qKScsIGVsaWRlZCwgc2VsZi5wYXJhbWV0ZXJf
c3RhcnRfcG9zaXRpb24sIFBvc2l0aW9uKDAsIDApKQotICAgICAgICAgcmV0dXJuIFNpbmdsZUxp
bmVWaWV3KGVsaWRlZCwgc3RhcnRfbW9kaWZpZXJzLCBzZWxmLmZ1bmN0aW9uX25hbWVfc3RhcnRf
cG9zaXRpb24pLnNpbmdsZV9saW5lLnN0cmlwKCkKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbW9k
aWZpZXJzIGFuZCB0aGUgcmV0dXJuIHR5cGUuIiIiCisgICAgICAgICMgR28gYmFja3dhcmRzIGZy
b20gd2hlcmUgdGhlIGZ1bmN0aW9uIG5hbWUgaXMgdW50aWwgd2UgZW5jb3VudGVyIG9uZSBvZiBz
ZXZlcmFsIHRoaW5nczoKKyAgICAgICAgIyAgICc7JyBvciAneycgb3IgJ30nIG9yICdwcml2YXRl
OicsIGV0Yy4gb3IgJyMnIG9yIHJldHVybiBQb3NpdGlvbigwLCAwKQorICAgICAgICBlbGlkZWQg
PSBzZWxmLl9jbGVhbl9saW5lcy5lbGlkZWQKKyAgICAgICAgc3RhcnRfbW9kaWZpZXJzID0gX3Jm
aW5kX2luX2xpbmVzKHInO3xce3xcfXwoKHByaXZhdGV8cHVibGljfHByb3RlY3RlZCk6KXwoIy4q
KScsIGVsaWRlZCwgc2VsZi5wYXJhbWV0ZXJfc3RhcnRfcG9zaXRpb24sIFBvc2l0aW9uKDAsIDAp
KQorICAgICAgICByZXR1cm4gU2luZ2xlTGluZVZpZXcoZWxpZGVkLCBzdGFydF9tb2RpZmllcnMs
IHNlbGYuZnVuY3Rpb25fbmFtZV9zdGFydF9wb3NpdGlvbikuc2luZ2xlX2xpbmUuc3RyaXAoKQog
CiAgICAgZGVmIGlzX3ZpcnR1YWwoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlYXJjaChy
J1xidmlydHVhbFxiJywgc2VsZi5tb2RpZmllcnNfYW5kX3JldHVybl90eXBlKCkpKQpAQCAtNTgz
LDcgKzU4Myw3IEBAIGNsYXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6CiAgICAgICAgICAgICBl
cnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLCBlcnJvcl9sZXZlbCwKICAg
ICAgICAgICAgICAgICAgICdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJl
ZDonCiAgICAgICAgICAgICAgICAgICAnICVzIGhhcyAlZCBub24tY29tbWVudCBsaW5lcycKLSAg
ICAgICAgICAgICAgICAgICcgKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMp
LicgICUgKAorICAgICAgICAgICAgICAgICAgJyAoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGlu
ZyAlZCBsaW5lcykuJyAlICgKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfZnVu
Y3Rpb24sIHNlbGYubGluZXNfaW5fZnVuY3Rpb24sIHRyaWdnZXIpKQogCiAgICAgZGVmIGVuZChz
ZWxmKToKQEAgLTYzOCw3ICs2MzgsNiBAQCBjbGFzcyBGaWxlSW5mbzoKICAgICAgICAgICAgICAg
ICBwcmVmaXggPSBvcy5wYXRoLmNvbW1vbnByZWZpeChbcm9vdF9kaXIsIHByb2plY3RfZGlyXSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbG5hbWVbbGVuKHByZWZpeCkgKyAxOl0KIAotCiAg
ICAgICAgICAgICAjIE5vdCBTVk4gPD0gMS42PyBUcnkgdG8gZmluZCBhIGdpdCwgb3Igc3ZuIHRv
cCBsZXZlbCBkaXJlY3RvcnkgYnkKICAgICAgICAgICAgICMgc2VhcmNoaW5nIHVwIGZyb20gdGhl
IGN1cnJlbnQgcGF0aC4KICAgICAgICAgICAgIHJvb3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1
bGxuYW1lKQpAQCAtODgyLDYgKzg4MSw3IEBAIGRlZiBjbG9zZV9leHByZXNzaW9uKGVsaWRlZCwg
cG9zaXRpb24pOgogICAgICMgVGhlIGdpdmVuIGl0ZW0gd2FzIG5vdCBjbG9zZWQuCiAgICAgcmV0
dXJuIFBvc2l0aW9uKGxlbihlbGlkZWQpLCAtMSkKIAorCiBkZWYgY2hlY2tfZm9yX2NvcHlyaWdo
dChsaW5lcywgZXJyb3IpOgogICAgICIiIkxvZ3MgYW4gZXJyb3IgaWYgbm8gQ29weXJpZ2h0IG1l
c3NhZ2UgYXBwZWFycyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLiIiIgogCkBAIC0xMjgwLDYgKzEy
ODAsNyBAQCBjbGFzcyBfRW51bVN0YXRlKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFRydWUKICAgICAgICAgcmV0dXJuIFRydWUKIAorCiBkZWYgY2hlY2tfZm9yX25vbl9zdGFuZGFy
ZF9jb25zdHJ1Y3RzKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yKToKICAgICAiIiJMb2dzIGFu
IGVycm9yIGlmIHdlIHNlZSBjZXJ0YWluIG5vbi1BTlNJIGNvbnN0cnVjdHMgaWdub3JlZCBieSBn
Y2MtMi4KQEAgLTIwNjksNiArMjA3MCw3IEBAIGRlZiBjaGVja19tZW1iZXJfaW5pdGlhbGl6YXRp
b25fbGlzdChjbGUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAor
CiBkZWYgZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
cik6CiAgICAgIiIiUmV0dXJuIHRoZSBtb3N0IHJlY2VudCBub24tYmxhbmsgbGluZSBhbmQgaXRz
IGxpbmUgbnVtYmVyLgogCkBAIC0yMTA0LDcgKzIxMDYsNyBAQCBkZWYgY2hlY2tfbmFtZXNwYWNl
X2luZGVudGF0aW9uKGNsZWFuX2xpCiAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwg
d2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogICAgICIiIgogCi0gICAgbGluZSA9IGNsZWFuX2xpbmVz
LmVsaWRlZFtsaW5lX251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgor
ICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAjIEdldCByaWQgb2Yg
Y29tbWVudHMgYW5kIHN0cmluZ3MuCiAKICAgICBuYW1lc3BhY2VfbWF0Y2ggPSBtYXRjaChyJyg/
UDxuYW1lc3BhY2VfaW5kZW50YXRpb24+XHMqKW5hbWVzcGFjZVxzK1xTK1xzKntccyokJywgbGlu
ZSkKICAgICBpZiBub3QgbmFtZXNwYWNlX21hdGNoOgpAQCAtMjExNyw5ICsyMTE5LDkgQEAgZGVm
IGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihjbGVhbl9saQogICAgICAgICAgICAgZXJyb3Io
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2luZGVudCcsIDQsCiAgICAgICAgICAgICAgICAgICAn
bmFtZXNwYWNlIHNob3VsZCBuZXZlciBiZSBpbmRlbnRlZC4nKQogICAgICAgICByZXR1cm4KLSAg
ICBsb29raW5nX2Zvcl9zZW1pY29sb24gPSBGYWxzZTsKKyAgICBsb29raW5nX2Zvcl9zZW1pY29s
b24gPSBGYWxzZQogICAgIGxpbmVfb2Zmc2V0ID0gMAotICAgIGluX3ByZXByb2Nlc3Nvcl9kaXJl
Y3RpdmUgPSBGYWxzZTsKKyAgICBpbl9wcmVwcm9jZXNzb3JfZGlyZWN0aXZlID0gRmFsc2UKICAg
ICBmb3IgY3VycmVudF9saW5lIGluIGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciArIDE6
XToKICAgICAgICAgbGluZV9vZmZzZXQgKz0gMQogICAgICAgICBpZiBub3QgY3VycmVudF9saW5l
LnN0cmlwKCk6CkBAIC0yMTMwLDIxICsyMTMyLDIyIEBAIGRlZiBjaGVja19uYW1lc3BhY2VfaW5k
ZW50YXRpb24oY2xlYW5fbGkKICAgICAgICAgICAgICAgICAgICAgZmlsZV9zdGF0ZS5zZXRfZGlk
X2luc2lkZV9uYW1lc3BhY2VfaW5kZW50X3dhcm5pbmcoKQogICAgICAgICAgICAgICAgICAgICBl
cnJvcihsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxk
IG5vdCBiZSBpbmRlbnRlZC4nKQotICAgICAgICAgICAgaWYgaW5fcHJlcHJvY2Vzc29yX2RpcmVj
dGl2ZSBvciAoY3VycmVudF9saW5lLnN0cmlwKClbMF0gPT0gJyMnKTogIyBUaGlzIHRha2VzIGNh
cmUgb2YgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBzeW50YXguCisgICAgICAgICAgICBpZiBpbl9w
cmVwcm9jZXNzb3JfZGlyZWN0aXZlIG9yIChjdXJyZW50X2xpbmUuc3RyaXAoKVswXSA9PSAnIycp
OiAgIyBUaGlzIHRha2VzIGNhcmUgb2YgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBzeW50YXguCiAg
ICAgICAgICAgICAgICAgaW5fcHJlcHJvY2Vzc29yX2RpcmVjdGl2ZSA9IGN1cnJlbnRfbGluZVst
MV0gPT0gJ1xcJwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb29raW5nX2Zv
cl9zZW1pY29sb24gPSAoKGN1cnJlbnRfbGluZS5maW5kKCc7JykgPT0gLTEpIGFuZCAoY3VycmVu
dF9saW5lLnN0cmlwKClbLTFdICE9ICd9JykpIG9yIChjdXJyZW50X2xpbmVbLTFdID09ICdcXCcp
CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb29raW5nX2Zvcl9zZW1pY29sb24gPSBGYWxz
ZTsgIyBJZiB3ZSBoYXZlIGEgYnJhY2Ugd2UgbWF5IG5vdCBuZWVkIGEgc2VtaWNvbG9uLgorICAg
ICAgICAgICAgbG9va2luZ19mb3Jfc2VtaWNvbG9uID0gRmFsc2UgICMgSWYgd2UgaGF2ZSBhIGJy
YWNlIHdlIG1heSBub3QgbmVlZCBhIHNlbWljb2xvbi4KICAgICAgICAgY3VycmVudF9pbmRlbnRh
dGlvbl9sZXZlbCArPSBjdXJyZW50X2xpbmUuY291bnQoJ3snKSAtIGN1cnJlbnRfbGluZS5jb3Vu
dCgnfScpCiAgICAgICAgIGN1cnJlbnRfaW5kZW50YXRpb25fbGV2ZWwgKz0gY3VycmVudF9saW5l
LmNvdW50KCcoJykgLSBjdXJyZW50X2xpbmUuY291bnQoJyknKQogICAgICAgICBpZiBjdXJyZW50
X2luZGVudGF0aW9uX2xldmVsIDwgMDoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
YnJlYWsKIAogCiAjIEVudW0gZGVjbGFyYXRpb24gd2hpdGVsaXN0CiBfQUxMT1dfQUxMX1VQUEVS
Q0FTRV9FTlVNID0gWydKU1Rva2VuVHlwZSddCiAKKwogZGVmIGNoZWNrX2VudW1fY2FzaW5nKGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZW51bV9zdGF0ZSwgZXJyb3IpOgogICAgICIiIkxvb2tz
IGZvciBpbmNvcnJlY3RseSBuYW1lZCBlbnVtIHZhbHVlcy4KIApAQCAtMjE2Miw2ICsyMTY1LDcg
QEAgZGVmIGNoZWNrX2VudW1fY2FzaW5nKGNsZWFuX2xpbmVzLCBsaW5lXwogICAgICAgICBlcnJv
cihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2VudW1fY2FzaW5nJywgNCwKICAgICAgICAgICAg
ICAgJ2VudW0gbWVtYmVycyBzaG91bGQgdXNlIEludGVyQ2FwcyB3aXRoIGFuIGluaXRpYWwgY2Fw
aXRhbCBsZXR0ZXIgb3IgaW5pdGlhbCBcJ2tcJyBmb3IgQy1zdHlsZSBlbnVtcy4nKQogCisKIGRl
ZiBjaGVja19kaXJlY3RpdmVfaW5kZW50YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBm
aWxlX3N0YXRlLCBlcnJvcik6CiAgICAgIiIiTG9va3MgZm9yIGluZGVudGF0aW9uIG9mIHByZXBy
b2Nlc3NvciBkaXJlY3RpdmVzLgogCkBAIC0yMTg4LDYgKzIxOTIsNyBAQCBkZWYgZ2V0X2luaXRp
YWxfc3BhY2VzX2Zvcl9saW5lKGNsZWFuX2xpCiAgICAgICAgIGluaXRpYWxfc3BhY2VzICs9IDEK
ICAgICByZXR1cm4gaW5pdGlhbF9zcGFjZXMKIAorCiBkZWYgY2hlY2tfaW5kZW50YXRpb25fYW1v
dW50KGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgIGxpbmUgPSBjbGVhbl9s
aW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCiAgICAgaW5pdGlhbF9zcGFjZXMgPSBnZXRfaW5pdGlh
bF9zcGFjZXNfZm9yX2xpbmUobGluZSkKQEAgLTIyMjEsNyArMjIyNiw3IEBAIGRlZiBjaGVja191
c2luZ19zdGQoY2xlYW5fbGluZXMsIGxpbmVfbnUKICAgICBpZiBmaWxlX3N0YXRlLmlzX2Nfb3Jf
b2JqZWN0aXZlX2MoKToKICAgICAgICAgcmV0dXJuCiAKLSAgICBsaW5lID0gY2xlYW5fbGluZXMu
ZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisg
ICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBj
b21tZW50cyBhbmQgc3RyaW5ncy4KIAogICAgIHVzaW5nX3N0ZF9tYXRjaCA9IG1hdGNoKHInXHMq
dXNpbmdccytzdGQ6Oig/UDxtZXRob2RfbmFtZT5cUyspXHMqO1xzKiQnLCBsaW5lKQogICAgIGlm
IG5vdCB1c2luZ19zdGRfbWF0Y2g6CkBAIC0yMjU2LDYgKzIyNjEsNyBAQCBkZWYgY2hlY2tfdXNp
bmdfbmFtZXNwYWNlKGNsZWFuX2xpbmVzLCBsCiAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWls
ZC91c2luZ19uYW1lc3BhY2UnLCA0LAogICAgICAgICAgICJEbyBub3QgdXNlICd1c2luZyBuYW1l
c3BhY2UgJXM7Jy4iICUgbWV0aG9kX25hbWUpCiAKKwogZGVmIGNoZWNrX21heF9taW5fbWFjcm9z
KGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpOgogICAgICIiIkxv
b2tzIGZvciB1c2Ugb2YgTUFYKCkgYW5kIE1JTigpIG1hY3JvcyB0aGF0IHNob3VsZCBiZSByZXBs
YWNlZCB3aXRoIHN0ZDo6bWF4KCkgYW5kIHN0ZDo6bWluKCkuCiAKQEAgLTIyNzEsNyArMjI3Nyw3
IEBAIGRlZiBjaGVja19tYXhfbWluX21hY3JvcyhjbGVhbl9saW5lcywgbGkKICAgICBpZiBmaWxl
X3N0YXRlLmlzX2Nfb3Jfb2JqZWN0aXZlX2MoKToKICAgICAgICAgcmV0dXJuCiAKLSAgICBsaW5l
ID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMg
YW5kIHN0cmluZ3MuCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0g
ICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KIAogICAgIG1heF9taW5fbWFjcm9z
X3NlYXJjaCA9IHNlYXJjaChyJ1xiKD9QPG1heF9taW5fbWFjcm8+KE1BWHxNSU4pKVxzKlwoJywg
bGluZSkKICAgICBpZiBub3QgbWF4X21pbl9tYWNyb3Nfc2VhcmNoOgpAQCAtMjMzMSw2ICsyMzM3
LDcgQEAgZGVmIGNoZWNrX2N0eXBlX2Z1bmN0aW9ucyhjbGVhbl9saW5lcywgbAogICAgICAgICAg
ICdVc2UgZXF1aXZlbGVudCBmdW5jdGlvbiBpbiA8d3RmL0FTQ0lJQ1R5cGUuaD4gaW5zdGVhZCBv
ZiB0aGUgJXMoKSBmdW5jdGlvbi4nCiAgICAgICAgICAgJSAoY3R5cGVfZnVuY3Rpb24pKQogCisK
IGRlZiBjaGVja19zd2l0Y2hfaW5kZW50YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcik6CiAgICAgIiIiTG9va3MgZm9yIGluZGVudGF0aW9uIGVycm9ycyBpbnNpZGUgb2Ygc3dp
dGNoIHN0YXRlbWVudHMuCiAKQEAgLTIzNDAsNyArMjM0Nyw3IEBAIGRlZiBjaGVja19zd2l0Y2hf
aW5kZW50YXRpb24oY2xlYW5fbGluZXMKICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCiAgICAgIiIiCiAKLSAgICBsaW5lID0gY2xlYW5fbGlu
ZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3Mu
CisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBv
ZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KIAogICAgIHN3aXRjaF9tYXRjaCA9IG1hdGNoKHInKD9Q
PHN3aXRjaF9pbmRlbnRhdGlvbj5ccyopc3dpdGNoXHMqXCguK1wpXHMqe1xzKiQnLCBsaW5lKQog
ICAgIGlmIG5vdCBzd2l0Y2hfbWF0Y2g6CkBAIC0yMzY4LDcgKzIzNzUsNyBAQCBkZWYgY2hlY2tf
c3dpdGNoX2luZGVudGF0aW9uKGNsZWFuX2xpbmVzCiAgICAgICAgICAgICAjIHN0aWxsIGNhdGNo
IGFsbCBpbmRlbnRhdGlvbiBpc3N1ZXMgaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICBlbmNvdW50
ZXJlZF9uZXN0ZWRfc3dpdGNoID0gVHJ1ZQogCi0gICAgICAgIGN1cnJlbnRfaW5kZW50YXRpb25f
bWF0Y2ggPSBtYXRjaChyJyg/UDxpbmRlbnRhdGlvbj5ccyopKD9QPHJlbWFpbmluZ19saW5lPi4q
KSQnLCBjdXJyZW50X2xpbmUpOworICAgICAgICBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoID0g
bWF0Y2gocicoP1A8aW5kZW50YXRpb24+XHMqKSg/UDxyZW1haW5pbmdfbGluZT4uKikkJywgY3Vy
cmVudF9saW5lKQogICAgICAgICBjdXJyZW50X2luZGVudGF0aW9uID0gY3VycmVudF9pbmRlbnRh
dGlvbl9tYXRjaC5ncm91cCgnaW5kZW50YXRpb24nKQogICAgICAgICByZW1haW5pbmdfbGluZSA9
IGN1cnJlbnRfaW5kZW50YXRpb25fbWF0Y2guZ3JvdXAoJ3JlbWFpbmluZ19saW5lJykKIApAQCAt
MjQxMCw3ICsyNDE3LDcgQEAgZGVmIGNoZWNrX2JyYWNlcyhjbGVhbl9saW5lcywgbGluZV9udW1i
ZQogICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3Vu
ZC4KICAgICAiIiIKIAotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJd
ICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KKyAgICBsaW5lID0gY2xlYW5fbGlu
ZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAgIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdz
LgogCiAgICAgaWYgbWF0Y2gocidccyp7XHMqJCcsIGxpbmUpOgogICAgICAgICAjIFdlIGFsbG93
IGFuIG9wZW4gYnJhY2UgdG8gc3RhcnQgYSBsaW5lIGluIHRoZSBjYXNlIHdoZXJlIHNvbWVvbmUK
QEAgLTI1MjEsNyArMjUyOCw3IEBAIGRlZiBjaGVja19leGl0X3N0YXRlbWVudF9zaW1wbGlmaWNh
dGlvbnMKICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMg
Zm91bmQuCiAgICAgIiIiCiAKLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVt
YmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCisgICAgbGluZSA9IGNsZWFu
X2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3Ry
aW5ncy4KIAogICAgIGVsc2VfbWF0Y2ggPSBtYXRjaChyJyg/UDxlbHNlX2luZGVudGF0aW9uPlxz
KikoXH1ccyopP2Vsc2UoXHMraWZccypcKHwoP1A8ZWxzZT5ccyooXHtccyopP1xaKSknLCBsaW5l
KQogICAgIGlmIG5vdCBlbHNlX21hdGNoOgpAQCAtMjU1MSw3ICsyNTU4LDcgQEAgZGVmIGNoZWNr
X2V4aXRfc3RhdGVtZW50X3NpbXBsaWZpY2F0aW9ucwogICAgICAgICBpZiBjdXJyZW50X2xpbmUg
PT0gZWxzZV9pbmRlbnRhdGlvbiArICd9JzoKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAg
ICAgY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaCA9IG1hdGNoKHInKD9QPGluZGVudGF0aW9uPlxz
KikoP1A8cmVtYWluaW5nX2xpbmU+LiopJCcsIGN1cnJlbnRfbGluZSk7CisgICAgICAgIGN1cnJl
bnRfaW5kZW50YXRpb25fbWF0Y2ggPSBtYXRjaChyJyg/UDxpbmRlbnRhdGlvbj5ccyopKD9QPHJl
bWFpbmluZ19saW5lPi4qKSQnLCBjdXJyZW50X2xpbmUpCiAgICAgICAgIGN1cnJlbnRfaW5kZW50
YXRpb24gPSBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdpbmRlbnRhdGlvbicpCiAg
ICAgICAgIHJlbWFpbmluZ19saW5lID0gY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaC5ncm91cCgn
cmVtYWluaW5nX2xpbmUnKQogCkBAIC0yNzE3LDYgKzI3MjQsNyBAQCBkZWYgY2hlY2tfZm9yX251
bGwoY2xlYW5fbGluZXMsIGxpbmVfbnVtCiAgICAgaWYgc2VhcmNoKHInXGJOVUxMXGInLCBsaW5l
KSBhbmQgc2VhcmNoKHInXGJOVUxMXGInLCBDbGVhbnNlZExpbmVzLmNvbGxhcHNlX3N0cmluZ3Mo
bGluZSkpOgogICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L251bGwnLCA0
LCAnVXNlIG51bGxwdHIgaW5zdGVhZCBvZiBOVUxMIChldmVuIGluICpjb21tZW50cyopLicpCiAK
KwogZGVmIGdldF9saW5lX3dpZHRoKGxpbmUpOgogICAgICIiIkRldGVybWluZXMgdGhlIHdpZHRo
IG9mIHRoZSBsaW5lIGluIGNvbHVtbiBwb3NpdGlvbnMuCiAKQEAgLTMyNzMsNiArMzI4MSw3IEBA
IGRlZiBjaGVja19sYW5ndWFnZShmaWxlbmFtZSwgY2xlYW5fbGluZXMKICAgICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nIHRvVGV4dCBoZWxwZXIgZnVuY3Rpb24gaW4gV2ViQ29yZS9kb20vVGV4
dC5oICcKICAgICAgICAgICAgICAgJ2luc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8VGV4dCo+JykKIAor
CiBkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgbGluZSwgZmlsZV9zdGF0ZSwgZXJyb3IpOgogICAgICIiIkNoZWNrcyBpZiBpZGVu
dGlmaWVyIG5hbWVzIGNvbnRhaW4gYW55IHVuZGVyc2NvcmVzLgogCkBAIC0zNDIxLDYgKzM0MzAs
NyBAQCBkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uCiAgICAgICAgIG51
bWJlcl9vZl9pZGVudGlmaWVycyArPSAxCiAgICAgICAgIGxpbmUgPSBsaW5lW21hdGNoZWQuZW5k
KCk6XQogCisKIGRlZiBjaGVja19jX3N0eWxlX2Nhc3QobGluZV9udW1iZXIsIGxpbmUsIHJhd19s
aW5lLCBjYXN0X3R5cGUsIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKToK
ICAgICAiIiJDaGVja3MgZm9yIGEgQy1zdHlsZSBjYXN0IGJ5IGxvb2tpbmcgZm9yIHRoZSBwYXR0
ZXJuLgpAQCAtMzY4NCw3ICszNjk0LDcgQEAgZGVmIGNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91
X3VzZShmaWxlbgogCiAgICAgIyBpbmNsdWRlX3N0YXRlIGlzIG1vZGlmaWVkIGR1cmluZyBpdGVy
YXRpb24sIHNvIHdlIGl0ZXJhdGUgb3ZlciBhIGNvcHkgb2YKICAgICAjIHRoZSBrZXlzLgotICAg
IGZvciBoZWFkZXIgaW4gaW5jbHVkZV9zdGF0ZS5rZXlzKCk6ICAjTk9MSU5UCisgICAgZm9yIGhl
YWRlciBpbiBpbmNsdWRlX3N0YXRlLmtleXMoKTogICMgTk9MSU5UCiAgICAgICAgIChzYW1lX21v
ZHVsZSwgY29tbW9uX3BhdGgpID0gZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlKGFic19maWxl
bmFtZSwgaGVhZGVyKQogICAgICAgICBmdWxscGF0aCA9IGNvbW1vbl9wYXRoICsgaGVhZGVyCiAg
ICAgICAgIGlmIHNhbWVfbW9kdWxlIGFuZCB1cGRhdGVfaW5jbHVkZV9zdGF0ZShmdWxscGF0aCwg
aW5jbHVkZV9zdGF0ZSk6CkBAIC0zNzE4LDYgKzM3MjgsNyBAQCBkZWYgY2hlY2tfcGxhdGZvcm1o
X2NvbW1lbnRzKGxpbmVzLCBlcnJvCiAgICAgICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdidWlsZC9jcHBfY29tbWVudCcsIDUsICdDUFAgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkIGlu
IFBsYXRmb3JtLmgsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3BsZWFzZSB1c2UgQyBjb21tZW50cyAvKiAuLi4gKi8nKQogCisK
IGRlZiBwcm9jZXNzX2xpbmUoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLAogICAgICAgICAgICAg
ICAgICBjbGVhbl9saW5lcywgbGluZSwgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25fc3RhdGUsCiAg
ICAgICAgICAgICAgICAgIGNsYXNzX3N0YXRlLCBmaWxlX3N0YXRlLCBlbnVtX3N0YXRlLCBhc21f
c3RhdGUsIGVycm9yKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBpbXBvcnQgY3BwIGFzIGNwcF9zdHlsZQogZnJvbSBj
cHAgaW1wb3J0IENwcENoZWNrZXIKIGZyb20gLi5maWx0ZXIgaW1wb3J0IEZpbHRlckNvbmZpZ3Vy
YXRpb24KIAorCiAjIFRoaXMgY2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCBy
ZXBsYWNlcyBjcHBfc3R5bGUuRXJyb3IKICMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAg
V2UgYWxzbyB2ZXJpZnkgZWFjaCBjYXRlZ29yeSB3ZSBzZWUKICMgaXMgaW4gQ3BwQ2hlY2tlci5j
YXRlZ29yaWVzLCB0byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCkBAIC0yMzEsNiAr
MjMyLDcgQEAgY2xhc3MgQ3BwRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdUaGUgcGFyYW1ldGVyIG5hbWUgIm9vRiIgYWRkcyBubyBpbmZvcm1h
dGlvbiwgc28gaXQgc2hvdWxkIGJlIHJlbW92ZWQuICBbcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25h
bWVdIFs1XScpCiAKKwogY2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgIiIiUHJvdmlkZXMgc29tZSB1c2VmdWwgaGVscGVyIGZ1bmN0aW9ucyBmb3IgY3BwX3N0
eWxlIHRlc3RzLgogCkBAIC0yNDIsNyArMjQ0LDcgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1
bml0dGVzdC5UZXN0Q2FzZQogCiAgICAgIyBGSVhNRTogUmVmYWN0b3IgdGhlIHVuaXQgdGVzdHMg
c28gdGhlIGNvbmZpZGVuY2UgbGV2ZWwgaXMgcGFzc2VkCiAgICAgIyAgICAgICAgZXhwbGljaXRs
eSwganVzdCBsaWtlIGl0IGlzIGluIHRoZSByZWFsIGNvZGUuCi0gICAgbWluX2NvbmZpZGVuY2Ug
PSAxOworICAgIG1pbl9jb25maWRlbmNlID0gMQogCiAgICAgIyBIZWxwZXIgZnVuY3Rpb24gdG8g
YXZvaWQgbmVlZGluZyB0byBleHBsaWNpdGx5IHBhc3MgY29uZmlkZW5jZQogICAgICMgaW4gYWxs
IHRoZSB1bml0IHRlc3QgY2FsbHMgdG8gY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCkuCkBA
IC03NTgsNiArNzYwLDcgQEAgY2xhc3MgQ3BwMTFTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6
CiAgICAgZGVmIHRlc3RfcnZhdWxlX3JlZmVyZW5jZV9pbl9wYXJhbWV0ZXJfcGFjayhzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCByZXF1ZXN0Q29tcGxldGVkKEFyZ3VtZW50
cyYmLi4uIGFyZ3VtZW50cyknLCAnJykKIAorCiBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVU
ZXN0QmFzZSk6CiAKICAgICBkZWYgdGVzdF9hc21fbGluZXNfaWdub3JlZChzZWxmKToKQEAgLTIw
NzcsNyArMjA4MCw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzVdJykKICAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgncHJpbnRmKCJmb28iKTsgLy8gT3V0c2lkZSBxdW90ZXMu
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnaW50IGkgPSAwOyAvLyBIYXZpbmcgb25lIHNwYWNlIGlzIGZpbmUuJywnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnaW50IGkgPSAwOyAvLyBIYXZpbmcgb25lIHNwYWNlIGlzIGZpbmUu
JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0gMDsgIC8vIEhhdmluZyB0
d28gc3BhY2VzIGlzIGJhZC4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICdPbmUgc3BhY2Ug
YmVmb3JlIGVuZCBvZiBsaW5lIGNvbW1lbnRzJwogICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL2NvbW1lbnRzXSBbNV0nKQpAQCAtMjcxNCw2ICsyNzE3LDcgQEAgY2xhc3Mg
Q3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdpbnQgYSA9IDEgPyAwIDogMzA7JywgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Jv
b2wgYSA6IDE7JywgJycpCiAKKwogY2xhc3MgQ2xlYW5zZWRMaW5lc1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgIGxpbmVzID0gWydMaW5l
IDEnLApAQCAtNTIyMiw3ICs1MjI2LDYgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxl
VGVzdEJhc2UpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdG9y
ID0gbm9kZTsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPE5vZGU+IHByb3Rl
Y3RvciA9ICpub2RlOycsICcnKQogCi0KICAgICAgICAgIyBJbnZhbGlkIHByb3RlY3RvciBSZWZQ
dHIvUmVmIHZhcmlhYmxlIG5hbWVzLgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8
Tm9kZT4gcHJvdGVjdG9yKHRoaXMpOycsICIncHJvdGVjdG9yJyBpcyBpbmNvcnJlY3RseSBuYW1l
ZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0ZWRUaGlzJy4gIFtyZWFkYWJpbGl0eS9uYW1p
bmcvcHJvdGVjdGVkXSBbNF0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4g
cHJvdGVjdG9yKCp0aGlzKTsnLCAiJ3Byb3RlY3RvcicgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0
IHNob3VsZCBiZSBuYW1lZCAncHJvdGVjdGVkVGhpcycuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3By
b3RlY3RlZF0gWzRdIikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvanMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9qcy5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9qcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBUaGlz
IGNoZWNrZXIgaXMgb25seSB1c2VkIHRvIGNoZWNrIFdlYkluCiBmcm9tIGNvbW1vbiBpbXBvcnQg
VGFiQ2hlY2tlcgogaW1wb3J0IHJlCiAKKwogY2xhc3MgSlNDaGVja2VyKG9iamVjdCk6CiAgICAg
IiIiUHJvY2Vzc2VzIEphdmFTY3JpcHQgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2pzb25jaGVja2VyLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvanNv
bmNoZWNrZXIucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvanNvbmNoZWNrZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAgaW1wb3J0IGpzb24KIGltcG9ydCByZQogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorCiBj
bGFzcyBKU09OQ2hlY2tlcihvYmplY3QpOgogICAgICIiIlByb2Nlc3NlcyBKU09OIGxpbmVzIGZv
ciBjaGVja2luZyBzdHlsZS4iIiIKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9wbmcucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9wbmcucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvcG5nLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCByZWFkX2NoZWNrc3UKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBTQ01EZXRlY3Rvcgog
CisKIGNsYXNzIFBOR0NoZWNrZXIob2JqZWN0KToKICAgICAiIiJDaGVjayBzdm46bWltZS10eXBl
IGZvciBjaGVja2luZyBzdHlsZSIiIgogCkBAIC03Miw0ICs3MywzIEBAIGNsYXNzIFBOR0NoZWNr
ZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIHByb3BfZ2V0ICE9ICJpbWFnZS9wbmciOgogICAg
ICAgICAgICAgICAgIGVycm9yc3RyID0gIlNldCB0aGUgc3ZuOm1pbWUtdHlwZSBwcm9wZXJ0eSAo
c3ZuIHByb3BzZXQgc3ZuOm1pbWUtdHlwZSBpbWFnZS9wbmcgJXMpLiIgJSBzZWxmLl9maWxlX3Bh
dGgKICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IoMCwgJ2ltYWdlL3Bu
ZycsIDUsIGVycm9yc3RyKQotCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3RleHQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy90ZXh0LnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3RleHQucHkJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKIAogZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKIAorCiBjbGFzcyBUZXh0Q2hl
Y2tlcihvYmplY3QpOgogCiAgICAgIiIiUHJvY2Vzc2VzIHRleHQgbGluZXMgZm9yIGNoZWNraW5n
IHN0eWxlLiIiIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90
ZXh0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGV4dF91bml0dGVzdC5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXh0X3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRleHQgYXMg
dGV4dF9zdHlsZQogZnJvbSB0ZXh0IGltcG9ydCBUZXh0Q2hlY2tlcgogCisKIGNsYXNzIFRleHRT
dHlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0Q2FzZSBmb3IgdGV4
dF9zdHlsZS5weSIiIgogCkBAIC02NCwxMyArNjUsMTEgQEAgY2xhc3MgVGV4dFN0eWxlVGVzdENh
c2UodW5pdHRlc3QuVGVzdENhcwogICAgICAgICBzZWxmLnByb2Nlc3NfZmlsZV9kYXRhKCcnLCBs
aW5lcywgZXJyb3JfZm9yX3Rlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmhhZF9l
cnJvciwgJyVzIHNob3VsZCBoYXZlIGFuIGVycm9yIFt3aGl0ZXNwYWNlL3RhYl0uJyAlIGxpbmVz
KQogCi0KICAgICBkZWYgdGVzdF9ub19lcnJvcihzZWxmKToKICAgICAgICAgIiIiVGVzdHMgZm9y
IG5vIGVycm9yIGNhc2VzLiIiIgogICAgICAgICBzZWxmLmFzc2VydE5vRXJyb3IoWycnXSkKICAg
ICAgICAgc2VsZi5hc3NlcnROb0Vycm9yKFsnYWJjIGRlZicsICdnZ2cnXSkKIAotCiAgICAgZGVm
IHRlc3RfZXJyb3Ioc2VsZik6CiAgICAgICAgICIiIlRlc3RzIGZvciBlcnJvciBjYXNlcy4iIiIK
ICAgICAgICAgc2VsZi5hc3NlcnRFcnJvcihbJzIwMDktMTItMTZcdEtlbnQgVGFtdXJhXHQ8dGtl
bnRAY2hyb21pdW0ub3JnPiddLCAxKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4u
cHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIGRlZiBfcHJpbnRfcmVzdWx0c19h
c19qc29uKHN0cmVhbSwgYWxsX3QKIAogICAgIGpzb24uZHVtcChyZXN1bHRzLCBzdHJlYW0sIHNl
cGFyYXRvcnM9KCcsJywgJzonKSkKIAorCiBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgZmlsZXN5c3RlbT1Ob25lKToKICAgICAgICAgc2VsZi5maW5kZXIgPSBG
aW5kZXIoZmlsZXN5c3RlbSBvciBGaWxlU3lzdGVtKCkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weQkocmV2aXNpb24gMjAyMzYxKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXIucHkJKHdvcmtpbmcgY29weSkK
QEAgLTIyMyw0ICsyMjMsMyBAQCBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2VyKToK
IAogICAgIGRlZiBoYW5kbGVfcGkoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuY29udmVydGVk
X2RhdGEuZXh0ZW5kKFsnPD8nLCBkYXRhLCAnPiddKQotCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQkocmV2aXNp
b24gMjAyMzYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgZnJvbSB3ZWJraXRw
eS53M2MudGVzdF9jb252ZXJ0ZXIgaW1wb3J0IAogRFVNTVlfRklMRU5BTUUgPSAnZHVtbXkuaHRt
bCcKIERVTU1ZX1BBVEggPSAnZHVtbXkvdGVzdGhhcm5lc3MvcGF0aCcKIAorCiBjbGFzcyBXM0NU
ZXN0Q29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIEZJWE1FOiBXaGVu
IHdlIG1vdmUgdG8gdXNpbmcgYSBNb2NrSG9zdCwgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92
ZWQsIHNpbmNlCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVy
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rl
c3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDIwMjM2MSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDYgKzY0LDcgQEAgRkFLRV9SRVBPU0lUT1JZID0gewogXQogJycnIH0KIAorCiBjbGFz
cyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBfcGFyc2Vf
b3B0aW9ucyhzZWxmLCBhcmdzKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUv
c2ltdWxhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUv
c2ltdWxhdG9yLnB5CShyZXZpc2lvbiAyMDIzNjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3hjb2RlL3NpbXVsYXRvci5weQkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBJZiBw
b3NzaWJsZSwgdXNlIHJlYWwgQ29yZVNpbXVsYXRvci5mcmFtCiBEbyBub3QgdXNlIFB5T2JqQyB0
byBkbG9wZW4gdGhlIGZyYW1ld29yay4KICIiIgogCisKIGNsYXNzIERldmljZVR5cGUob2JqZWN0
KToKICAgICAiIiIKICAgICBSZXByZXNlbnRzIGEgQ29yZVNpbXVsYXRvciBkZXZpY2UgdHlwZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>