<?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>220200</bug_id>
          
          <creation_ts>2020-12-30 12:08:19 -0800</creation_ts>
          <short_desc>Update root level scripts in Tools/Scripts to Python 3</short_desc>
          <delta_ts>2021-01-05 10:44:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>darin</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716851</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-12-30 12:08:19 -0800</bug_when>
    <thetext>Quite a few are still Python 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716852</commentid>
    <comment_count>1</comment_count>
      <attachid>416849</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-12-30 12:11:06 -0800</bug_when>
    <thetext>Created attachment 416849
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717015</commentid>
    <comment_count>2</comment_count>
      <attachid>416849</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-02 14:31:25 -0800</bug_when>
    <thetext>Comment on attachment 416849
proposed patch

I’m assuming these changes are all compatible with both Python 2 and Python 3 even though the comment doesn’t say that specifically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717327</commentid>
    <comment_count>3</comment_count>
      <attachid>416849</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-05 08:51:25 -0800</bug_when>
    <thetext>Comment on attachment 416849
proposed patch

Correct, I verified compatibility with both to the best of my ability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717333</commentid>
    <comment_count>4</comment_count>
      <attachid>416849</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-01-05 08:58:47 -0800</bug_when>
    <thetext>Comment on attachment 416849
proposed patch

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

&gt; Tools/Scripts/dump-webkit-tests-run:5
&gt; +import six

Need to import webkitpy first to get the auto-installed six

&gt; Tools/Scripts/dump-webkit-tests-run:19
&gt; +            six.print_(&quot;file not found: %s&quot; % args[0], file=sys.stderr)

Could also use sys.stderr.write(...)

&gt; Tools/Scripts/rebase-patch-after-webkit-move:52
&gt; +    for current_name, rebased_name in six.iteritems(REBASE_DICTIONARY):

Could just use &quot;.items()&quot; to avoid the six dependency (If we don&apos;t care about that, should probably import webkitpy so we get the auto-installed six)

&gt; Tools/Scripts/sync-feature-defines:30
&gt; +import six

Need to import webkitpy first so we get the auto-installed six.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717336</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-05 09:04:05 -0800</bug_when>
    <thetext>&gt; Could just use &quot;.items()&quot; to avoid the six dependency (If we don&apos;t care
&gt; about that, should probably import webkitpy so we get the auto-installed six)

While I didn&apos;t actually measure performance, it seems reasonable to keep using an iterator to avoid regressing it.

Thank you for catching the auto-install issue!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717362</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-05 10:00:53 -0800</bug_when>
    <thetext>Committed https://trac.webkit.org/r271151</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717363</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-05 10:01:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/72817606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717390</commentid>
    <comment_count>8</comment_count>
      <attachid>416849</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-05 10:40:04 -0800</bug_when>
    <thetext>Comment on attachment 416849
proposed patch

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

&gt; Tools/Scripts/extract-dependencies-from-makefile:-37
&gt; -from __future__ import print_function

This was necessary, removing it broke the build. Re-added in r271159.

Will double-check the other print_function removals now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717393</commentid>
    <comment_count>9</comment_count>
      <attachid>416849</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-05 10:44:28 -0800</bug_when>
    <thetext>Comment on attachment 416849
proposed patch

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

&gt; Tools/Scripts/make-dist:-18
&gt; -from __future__ import print_function

This was also needed, reverted in r271161. The rest of print_function removals were fine AFAICT.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416849</attachid>
            <date>2020-12-30 12:11:06 -0800</date>
            <delta_ts>2021-01-05 08:58:59 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>RootLevel.txt</filename>
            <type>text/plain</type>
            <size>41303</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3MTEwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQxIEBACisyMDIwLTEyLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFVwZGF0ZSByb290IGxldmVsIHNjcmlwdHMgaW4gVG9vbHMvU2NyaXB0cyB0
byBQeXRob24gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW9zdGx5IDJ0bzMgaW5zcGlyZWQuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLWZvci1n
bG9iYWwtYnNzLXN5bWJvbHMtaW4td2Via2l0Z3RrLWxpYnM6CisgICAgICAgICogU2NyaXB0cy9j
aGVjay1mb3ItaW52YWxpZC1zeW1ib2xzLWluLXZlcnNpb24tc2NyaXB0OgorICAgICAgICAqIFNj
cmlwdHMvY2hlY2stZm9yLXBsYXRmb3JtLWxheWVyaW5nLXZpb2xhdGlvbnM6CisgICAgICAgICog
U2NyaXB0cy9jbGVhbi13ZWJraXQ6CisgICAgICAgICogU2NyaXB0cy9jb21wYXJlLXJlc3VsdHM6
CisgICAgICAgICogU2NyaXB0cy9jb21wYXJlLXdlYmtpdC1jb25maWd1cmF0aW9uczoKKyAgICAg
ICAgKiBTY3JpcHRzL2Rvd25sb2FkLWdpdGh1Yi1yZWxlYXNlLnB5OgorICAgICAgICAqIFNjcmlw
dHMvZHVtcC13ZWJraXQtdGVzdHMtcnVuOgorICAgICAgICAqIFNjcmlwdHMvZXhwb3J0LXczYy1w
ZXJmb3JtYW5jZS13Zy10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL2V4dHJhY3QtZGVwZW5kZW5j
aWVzLWZyb20tbWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy9leHRyYWN0LWxvY2FsaXphYmxl
LXN0cmluZ3M6CisgICAgICAgICogU2NyaXB0cy9maW5kLWR1cGxpY2F0ZS1maWxlczoKKyAgICAg
ICAgKiBTY3JpcHRzL2ljLXN0YXRzLnB5OgorICAgICAgICAqIFNjcmlwdHMvaW1wb3J0LXczYy1w
ZXJmb3JtYW5jZS13Zy10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL21ha2UtZGlzdDoKKyAgICAg
ICAgKiBTY3JpcHRzL21hbGxvYy10cmVlOgorICAgICAgICAqIFNjcmlwdHMvbWFyay1qc2Mtc3Ry
ZXNzLXRlc3Q6CisgICAgICAgICogU2NyaXB0cy9vcGVuLWxheW91dC10ZXN0OgorICAgICAgICAq
IFNjcmlwdHMvcmVhZC1jaGVja3N1bS1mcm9tLXBuZzoKKyAgICAgICAgKiBTY3JpcHRzL3JlYmFz
ZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1ndGstdGVz
dHM6CisgICAgICAgICogU2NyaXB0cy9ydW4td2ViZHJpdmVyLXRlc3RzOgorICAgICAgICAqIFNj
cmlwdHMvcnVuLXdwZS10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3NhbXBzdGF0OgorICAgICAg
ICAqIFNjcmlwdHMvc3luYy1mZWF0dXJlLWRlZmluZXM6CisgICAgICAgICogU2NyaXB0cy9zeW5j
LW1hc3Rlci13aXRoLXVwc3RyZWFtOgorICAgICAgICAqIFNjcmlwdHMvdXBkYXRlLXdhc20tZ2Nj
LXRvcnR1cmUucHk6CisgICAgICAgICogU2NyaXB0cy92YWxpZGF0ZS1jb21taXR0ZXItbGlzdHM6
CisKIDIwMjAtMTItMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgYnVpbHQtcHJvZHVjdC1hcmNoaXZlIHNob3VsZCB3b3JrIHdpdGggUHl0aG9uIDMKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWdsb2JhbC1ic3Mtc3ltYm9scy1pbi13ZWJraXRn
dGstbGlicwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2NoZWNrLWZvci1nbG9iYWwtYnNz
LXN5bWJvbHMtaW4td2Via2l0Z3RrLWxpYnMJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1Nj
cmlwdHMvY2hlY2stZm9yLWdsb2JhbC1ic3Mtc3ltYm9scy1pbi13ZWJraXRndGstbGlicwkod29y
a2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQCBkZWYgYnNzX3N5bWJvbHMobGliLCBzZmlsdGVy
PU5vbmUpOgogICAgIHJldHVybiBzeW1ib2xzCiAKIGlmIGxlbihzeXMuYXJndikgPCAzOgotICAg
IHByaW50ICJVc2FnZTogJXMgbGliMSBsaWIyIiAlIHN5cy5hcmd2WzBdCisgICAgcHJpbnQoIlVz
YWdlOiAlcyBsaWIxIGxpYjIiICUgc3lzLmFyZ3ZbMF0pCiAgICAgc3lzLmV4aXQoMSkKIAogczEg
PSBic3Nfc3ltYm9scyhzeXMuYXJndlsxXSwgbGFtYmRhIHg6IHggPT0gJ3UnKQpAQCAtMzEsOCAr
MzEsOCBAQCBmb3Igc3ltYm9sIGluIHMxOgogICAgICAgICBzeW1ib2xzLmFwcGVuZChzeW1ib2wp
CiAKIGlmIHN5bWJvbHM6Ci0gICAgcHJpbnQgJ1RoZSBmb2xsb3dpbmcgc3ltYm9scyBhcmUgZ2xv
YmFsIGluICVzIGFuZCBub3QgaW4gJXMnICUgKHN5cy5hcmd2WzFdLCBzeXMuYXJndlsyXSkKLSAg
ICBwcmludCAnXG4nLmpvaW4oc29ydGVkKHN5bWJvbHMpKQorICAgIHByaW50KCdUaGUgZm9sbG93
aW5nIHN5bWJvbHMgYXJlIGdsb2JhbCBpbiAlcyBhbmQgbm90IGluICVzJyAlIChzeXMuYXJndlsx
XSwgc3lzLmFyZ3ZbMl0pKQorICAgIHByaW50KCdcbicuam9pbihzb3J0ZWQoc3ltYm9scykpKQog
ICAgIHN5cy5leGl0KDEpCiAKIHN5cy5leGl0KDApCkluZGV4OiBUb29scy9TY3JpcHRzL2NoZWNr
LWZvci1pbnZhbGlkLXN5bWJvbHMtaW4tdmVyc2lvbi1zY3JpcHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9jaGVjay1mb3ItaW52YWxpZC1zeW1ib2xzLWluLXZlcnNpb24tc2NyaXB0CShy
ZXZpc2lvbiAyNzExMDMpCisrKyBUb29scy9TY3JpcHRzL2NoZWNrLWZvci1pbnZhbGlkLXN5bWJv
bHMtaW4tdmVyc2lvbi1zY3JpcHQJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAgZGVm
IHNjcmlwdF9zeW1ib2xzKHNjcmlwdCk6CiAgICAgcmV0dXJuIHN5bWJvbHMKIAogaWYgbGVuKHN5
cy5hcmd2KSA8IDM6Ci0gICAgcHJpbnQgIlVzYWdlOiAlcyBzY3JpcHQgbGliIiAlIHN5cy5hcmd2
WzBdCisgICAgcHJpbnQoIlVzYWdlOiAlcyBzY3JpcHQgbGliIiAlIHN5cy5hcmd2WzBdKQogICAg
IHN5cy5leGl0KDEpCiAKIApAQCAtMzQsOCArMzQsOCBAQCBmb3Igc3ltYm9sIGluIHNjcmlwdF9z
eW1ib2xzKHN5cy5hcmd2WzFdCiAgICAgICAgIHN5bWJvbHMuYXBwZW5kKHN5bWJvbCkKIAogaWYg
c3ltYm9sczoKLSAgICBwcmludCAnVGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBpbiB2ZXJzaW9u
IHNjcmlwdCAlcyBhbmQgbm90IGluIGxpYnJhcnkgJXMnICUgKHN5cy5hcmd2WzFdLCBzeXMuYXJn
dlsyXSkKLSAgICBwcmludCAnXG4nLmpvaW4oc29ydGVkKHN5bWJvbHMpKQorICAgIHByaW50KCdU
aGUgZm9sbG93aW5nIHN5bWJvbHMgYXJlIGluIHZlcnNpb24gc2NyaXB0ICVzIGFuZCBub3QgaW4g
bGlicmFyeSAlcycgJSAoc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKSkKKyAgICBwcmludCgnXG4n
LmpvaW4oc29ydGVkKHN5bWJvbHMpKSkKICAgICBzeXMuZXhpdCgxKQogCiBzeXMuZXhpdCgwKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItcGxhdGZvcm0tbGF5ZXJpbmctdmlvbGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2NoZWNrLWZvci1wbGF0Zm9ybS1sYXllcmlu
Zy12aW9sYXRpb25zCShyZXZpc2lvbiAyNzExMDMpCisrKyBUb29scy9TY3JpcHRzL2NoZWNrLWZv
ci1wbGF0Zm9ybS1sYXllcmluZy12aW9sYXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIGRlZiBjaGVja19zb3VyY2VfZmlsZShzb3VyY2VfZmlsZSwgY2hlY2sKICAgICAgICAg
ICAgIGNvbnRpbnVlCiAKICAgICAgICAgaWYgaGVhZGVyIG5vdCBpbiBwbGF0Zm9ybV9oZWFkZXJz
IGFuZCBoZWFkZXIgbm90IGluIFBMQVRGT1JNX0dFTkVSQVRFRF9IRUFERVJTOgotICAgICAgICAg
ICAgcHJpbnQgIkVSUk9SOiAlczolZCAlcyIgJSAoc291cmNlX2ZpbGVbbGVuKGNoZWNrb3V0X3Jv
b3QpICsgMTpdLCBsaW5lX2NvdW50LCBsaW5lLnN0cmlwKCdcbicpKQorICAgICAgICAgICAgcHJp
bnQoIkVSUk9SOiAlczolZCAlcyIgJSAoc291cmNlX2ZpbGVbbGVuKGNoZWNrb3V0X3Jvb3QpICsg
MTpdLCBsaW5lX2NvdW50LCBsaW5lLnN0cmlwKCdcbicpKSkKICAgICAgICAgICAgIGZhaWx1cmVz
X2ZvdW5kICs9IDEKIAogICAgIGYuY2xvc2UoKQpAQCAtNzMsNyArNzMsNyBAQCBmb3Igcm9vdCwg
ZGlycywgZmlsZXMgaW4gb3Mud2FsayhwbGF0Zm9yCiAgICAgICAgICAgICBsYXllcmluZ192aW9s
YXRpb25zX2NvdW50ICs9IGNoZWNrX3NvdXJjZV9maWxlKG9zLnBhdGguam9pbihyb290LCBmaWxl
X25hbWUpLCBjaGVja291dF9yb290LCBwbGF0Zm9ybV9oZWFkZXJzKQogCiBpZiBsYXllcmluZ192
aW9sYXRpb25zX2NvdW50OgotICAgIHByaW50ICJUb3RhbDogJWQgbGF5ZXJpbmcgdmlvbGF0aW9u
cyBmb3VuZCBpbiAlcyIgJSAobGF5ZXJpbmdfdmlvbGF0aW9uc19jb3VudCwgcGxhdGZvcm1fZGly
W2xlbihjaGVja291dF9yb290KSArIDE6XSkKKyAgICBwcmludCgiVG90YWw6ICVkIGxheWVyaW5n
IHZpb2xhdGlvbnMgZm91bmQgaW4gJXMiICUgKGxheWVyaW5nX3Zpb2xhdGlvbnNfY291bnQsIHBs
YXRmb3JtX2RpcltsZW4oY2hlY2tvdXRfcm9vdCkgKyAxOl0pKQogICAgIHN5cy5leGl0KDEpCiAK
IHN5cy5leGl0KDApCkluZGV4OiBUb29scy9TY3JpcHRzL2NsZWFuLXdlYmtpdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2NsZWFuLXdlYmtpdAkocmV2aXNpb24gMjcxMTAzKQorKysgVG9v
bHMvU2NyaXB0cy9jbGVhbi13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
ZGVmIG1haW4oYXJncyk6CiAgICAgICAgIGlmIGZzLmlzZGlyKCJXZWJLaXRCdWlsZCIpOgogICAg
ICAgICAgICAgZmlsZXMgPSBsaXN0V2ViS2l0QnVpbGRGaWxlcyhmcykKICAgICAgICAgICAgIGtl
ZXBEaXJzID0gdXNlc0ZsYXRwYWsoKSBhbmQgWyJUb29sY2hhaW5zIiwgIlVzZXJGbGF0cGFrIl0g
b3IgWyJEZXBlbmRlbmNpZXNHVEsiLCAiRGVwZW5kZW5jaWVzV1BFIl0KLSAgICAgICAgICAgIGZp
bGVzID0gZmlsdGVyKGxhbWJkYSBwYXRoOiBwYXRoW2xlbigiV2ViS2l0QnVpbGQvIik6XSBub3Qg
aW4ga2VlcERpcnMsIGZpbGVzKQorICAgICAgICAgICAgZmlsZXMgPSBbcGF0aCBmb3IgcGF0aCBp
biBmaWxlcyBpZiBwYXRoW2xlbigiV2ViS2l0QnVpbGQvIik6XSBub3QgaW4ga2VlcERpcnNdCiAg
ICAgICAgICAgICByZW1vdmVGaWxlcyhmcywgZmlsZXMpCiAgICAgZWxzZToKICAgICAgICAgc2Nt
LmRpc2NhcmRfdW50cmFja2VkX2ZpbGVzKGRpc2NhcmRfaWdub3JlZF9maWxlcz1UcnVlKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy9jb21wYXJlLXJlc3VsdHMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9jb21wYXJlLXJlc3VsdHMJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1NjcmlwdHMv
Y29tcGFyZS1yZXN1bHRzCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsMTMgQEAgZnJvbSB3
ZWJraXRweS5iZW5jaG1hcmtfcnVubmVyLmJlbmNobWFyawogdHJ5OgogICAgIGZyb20gc2NpcHkg
aW1wb3J0IHN0YXRzCiBleGNlcHQ6Ci0gICAgcHJpbnQgIkVSUk9SOiBzY2lweSBwYWNrYWdlIGlz
IG5vdCBpbnN0YWxsZWQuIFJ1biBgcGlwIGluc3RhbGwgc2NpcHlgIgorICAgIHByaW50KCJFUlJP
Ujogc2NpcHkgcGFja2FnZSBpcyBub3QgaW5zdGFsbGVkLiBSdW4gYHBpcCBpbnN0YWxsIHNjaXB5
YCIpCiAgICAgc3lzLmV4aXQoMSkKIAogdHJ5OgogICAgIGltcG9ydCBudW1weQogZXhjZXB0Ogot
ICAgIHByaW50ICJFUlJPUjogbnVtcHkgcGFja2FnZSBpcyBub3QgaW5zdGFsbGVkLiBSdW4gYHBp
cCBpbnN0YWxsIG51bXB5YCIKKyAgICBwcmludCgiRVJST1I6IG51bXB5IHBhY2thZ2UgaXMgbm90
IGluc3RhbGxlZC4gUnVuIGBwaXAgaW5zdGFsbCBudW1weWAiKQogICAgIHN5cy5leGl0KDEpCiAK
IGRlZiByZWFkSlNPTkZpbGUocGF0aCk6CkBAIC0yMjgsMTAgKzIyOCwxMCBAQCBkZWYgZHVtcEJy
ZWFrZG93bnMoYSwgYik6CiAgICAgc3RyaW5ncy5pbnNlcnQoMiwgdmVydGljYWxTZXBhcmF0b3Ip
CiAgICAgc3RyaW5ncy5hcHBlbmQodmVydGljYWxTZXBhcmF0b3IpCiAKLSAgICBwcmludCAiXG4i
CisgICAgcHJpbnQoIlxuIikKICAgICBmb3IgcyBpbiBzdHJpbmdzOgogICAgICAgICBwcmludChz
KQotICAgIHByaW50ICJcbiIKKyAgICBwcmludCgiXG4iKQogCiBkZWYgd3JpdGVDU1YoYSwgYiwg
ZmlsZU5hbWUpOgogICAgIHN0cmluZ3MgPSBbXQpAQCAtMzI3LDcgKzMyNyw3IEBAIGRlZiBtb3Rp
b25NYXJrUmVzdWx0cyhwYXlsb2FkKToKICAgICAgICAgcGF5bG9hZCA9IHBheWxvYWRbIk1vdGlv
bk1hcmstMS4xIl0KICAgICBlbHNlOgogICAgICAgICBwYXlsb2FkID0gcGF5bG9hZFsiTW90aW9u
TWFyay0xLjEuMSJdCi0gICAgdGVzdE5hbWVzID0gcGF5bG9hZFsidGVzdHMiXS5rZXlzKCkKKyAg
ICB0ZXN0TmFtZXMgPSBsaXN0KHBheWxvYWRbInRlc3RzIl0ua2V5cygpKQogICAgIG51bVRlc3Rz
ID0gbGVuKHBheWxvYWRbInRlc3RzIl1bdGVzdE5hbWVzWzBdXVsibWV0cmljcyJdWyJTY29yZSJd
WyJjdXJyZW50Il0pCiAgICAgcmVzdWx0cyA9IFtdCiAgICAgZm9yIGkgaW4gcmFuZ2UobnVtVGVz
dHMpOgpAQCAtMzY1LDcgKzM2NSw3IEBAIGRlZiBiaWdnZXJJc0JldHRlcihiZW5jaG1hcmtUeXBl
KToKICAgICBpZiBiZW5jaG1hcmtUeXBlID09IFBMVDU6CiAgICAgICAgIHJldHVybiBGYWxzZQog
Ci0gICAgcHJpbnQgIlNob3VsZCBub3QgYmUgcmVhY2hlZC4iCisgICAgcHJpbnQoIlNob3VsZCBu
b3QgYmUgcmVhY2hlZC4iKQogICAgIGFzc2VydCBGYWxzZQogCiBkZWYgdHRlc3QoYmVuY2htYXJr
VHlwZSwgYSwgYik6CkBAIC0zNzMsMjggKzM3MywyOCBAQCBkZWYgdHRlc3QoYmVuY2htYXJrVHlw
ZSwgYSwgYik6CiAgICAgKHRTdGF0aXN0aWMsIHBWYWx1ZSkgPSBzdGF0cy50dGVzdF9pbmQoYSwg
YiwgZXF1YWxfdmFyPUZhbHNlKQogICAgIGFNZWFuID0gbnVtcHkubWVhbihhKQogICAgIGJNZWFu
ID0gbnVtcHkubWVhbihiKQotICAgIHByaW50ICJhIG1lYW4gPSB7Oi41Zn0iLmZvcm1hdChhTWVh
bikKLSAgICBwcmludCAiYiBtZWFuID0gezouNWZ9Ii5mb3JtYXQoYk1lYW4pCisgICAgcHJpbnQo
ImEgbWVhbiA9IHs6LjVmfSIuZm9ybWF0KGFNZWFuKSkKKyAgICBwcmludCgiYiBtZWFuID0gezou
NWZ9Ii5mb3JtYXQoYk1lYW4pKQogCi0gICAgcHJpbnQgInBWYWx1ZSA9IHs6LjEwZn0iLmZvcm1h
dChwVmFsdWUpCisgICAgcHJpbnQoInBWYWx1ZSA9IHs6LjEwZn0iLmZvcm1hdChwVmFsdWUpKQog
CiAgICAgaWYgYmlnZ2VySXNCZXR0ZXIoYmVuY2htYXJrVHlwZSk6Ci0gICAgICAgIHByaW50ICIo
QmlnZ2VyIG1lYW5zIGFyZSBiZXR0ZXIuKSIKKyAgICAgICAgcHJpbnQoIihCaWdnZXIgbWVhbnMg
YXJlIGJldHRlci4pIikKICAgICAgICAgaWYgYU1lYW4gPiBiTWVhbjoKLSAgICAgICAgICAgIHBy
aW50ICJ7Oi4zZn0gdGltZXMgd29yc2UiLmZvcm1hdCgoYU1lYW4gLyBiTWVhbikpCisgICAgICAg
ICAgICBwcmludCgiezouM2Z9IHRpbWVzIHdvcnNlIi5mb3JtYXQoKGFNZWFuIC8gYk1lYW4pKSkK
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50ICJ7Oi4zZn0gdGltZXMgYmV0dGVyIi5m
b3JtYXQoKGJNZWFuIC8gYU1lYW4pKQorICAgICAgICAgICAgcHJpbnQoIns6LjNmfSB0aW1lcyBi
ZXR0ZXIiLmZvcm1hdCgoYk1lYW4gLyBhTWVhbikpKQogICAgIGVsc2U6Ci0gICAgICAgIHByaW50
ICIoU21hbGxlciBtZWFucyBhcmUgYmV0dGVyLikiCisgICAgICAgIHByaW50KCIoU21hbGxlciBt
ZWFucyBhcmUgYmV0dGVyLikiKQogICAgICAgICBpZiBhTWVhbiA+IGJNZWFuOgotICAgICAgICAg
ICAgcHJpbnQgIns6LjNmfSB0aW1lcyBiZXR0ZXIiLmZvcm1hdCgoYU1lYW4gLyBiTWVhbikpCisg
ICAgICAgICAgICBwcmludCgiezouM2Z9IHRpbWVzIGJldHRlciIuZm9ybWF0KChhTWVhbiAvIGJN
ZWFuKSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAiezouM2Z9IHRpbWVzIHdv
cnNlIi5mb3JtYXQoKGJNZWFuIC8gYU1lYW4pKQorICAgICAgICAgICAgcHJpbnQoIns6LjNmfSB0
aW1lcyB3b3JzZSIuZm9ybWF0KChiTWVhbiAvIGFNZWFuKSkpCiAKICAgICBpZiBwVmFsdWUgPD0g
MC4wNToKLSAgICAgICAgcHJpbnQgIlJlc3VsdHMgQVJFIHNpZ25pZmljYW50IgorICAgICAgICBw
cmludCgiUmVzdWx0cyBBUkUgc2lnbmlmaWNhbnQiKQogICAgIGVsc2U6Ci0gICAgICAgIHByaW50
ICJSZXN1bHRzIEFSRSBOT1Qgc2lnbmlmaWNhbnQiCisgICAgICAgIHByaW50KCJSZXN1bHRzIEFS
RSBOT1Qgc2lnbmlmaWNhbnQiKQogCiBkZWYgZ2V0T3B0aW9ucygpOgogICAgIHBhcnNlciA9IGFy
Z3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJDb21wYXJlIHR3byBXZWJLaXQgYmVu
Y2htYXJrIHJlc3VsdHMuIFBhc3MgaW4gYXQgbGVhc3QgdHdvIEpTT04gcmVzdWx0IGZpbGVzIHRv
IGNvbXBhcmUgdGhlbS4gVGhpcyBzY3JpcHQgcHJpbnRzIHRoZSBwVmFsdWUgYWxvbmcgd2l0aCB0
aGUgbWFnbml0dWRlIG9mIHRoZSBjaGFuZ2UuIElmIG1vcmUgdGhhbiBvbmUgSlNPTiBpcyBwYXNz
ZWQgYXMgYS9iIHRoZXkgd2lsbCBiZSBtZXJnZWQgd2hlbiBjb21wdXRpbmcgdGhlIGJyZWFrZG93
bi4iKQpAQCAtNDM4LDExICs0MzgsMTEgQEAgZGVmIG1haW4oKToKICAgICB0eXBlQiA9IGRldGVj
dEJlbmNobWFyayhiKQogCiAgICAgaWYgdHlwZUEgIT0gdHlwZUI6Ci0gICAgICAgIHByaW50ICIt
YSBhbmQgLWIgYXJlIG5vdCB0aGUgc2FtZSBiZW5jaG1hcmsuIGE9e30gYj17fSIuZm9ybWF0KHR5
cGVBLCB0eXBlQikKKyAgICAgICAgcHJpbnQoIi1hIGFuZCAtYiBhcmUgbm90IHRoZSBzYW1lIGJl
bmNobWFyay4gYT17fSBiPXt9Ii5mb3JtYXQodHlwZUEsIHR5cGVCKSkKICAgICAgICAgc3lzLmV4
aXQoMSkKIAogICAgIGlmIG5vdCAodHlwZUEgYW5kIHR5cGVCKToKLSAgICAgICAgcHJpbnQgIlVu
a25vd24gYmVuY2htYXJrIHR5cGUuIGE9e30gYj17fSIuZm9ybWF0KHR5cGVBLCB0eXBlQikKKyAg
ICAgICAgcHJpbnQoIlVua25vd24gYmVuY2htYXJrIHR5cGUuIGE9e30gYj17fSIuZm9ybWF0KHR5
cGVBLCB0eXBlQikpCiAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgCiAgICAgaWYgdHlwZUEgPT0g
SmV0U3RyZWFtMjoKQEAgLTQ3OSw3ICs0NzksNyBAQCBkZWYgbWFpbigpOgogICAgICAgICBpZiBh
cmdzLmNzdjoKICAgICAgICAgICAgIHdyaXRlQ1NWKHBsdDVCcmVha2Rvd24oYSksIHBsdDVCcmVh
a2Rvd24oYiksIGFyZ3MuY3N2KQogICAgIGVsc2U6Ci0gICAgICAgIHByaW50ICJVbmtub3duIGJl
bmNobWFyayB0eXBlIgorICAgICAgICBwcmludCgiVW5rbm93biBiZW5jaG1hcmsgdHlwZSIpCiAg
ICAgICAgIHN5cy5leGl0KDEpCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy9jb21wYXJlLXdlYmtp
dC1jb25maWd1cmF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2NvbXBhcmUtd2Vi
a2l0LWNvbmZpZ3VyYXRpb25zCShyZXZpc2lvbiAyNzExMDMpCisrKyBUb29scy9TY3JpcHRzL2Nv
bXBhcmUtd2Via2l0LWNvbmZpZ3VyYXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzks
MTEgQEAgZGVmIG1haW4oKToKIAogICAgIGZvcmNlX3dlYmtpdDIgPSBhcmdzLndlYmtpdDIKICAg
ICBpZiBhcmdzLmNvbXBhcmlzb24gPT0gInJlbW90ZS1sYXllci10cmVlIjoKLSAgICAgICAgcHJp
bnQgIkZvcmNpbmcgdXNlIG9mIFdlYktpdDIsIGFzIHRoZSByZW1vdGUgbGF5ZXIgdHJlZSBkZXBl
bmRzIG9uIFdlYktpdDIuIgorICAgICAgICBwcmludCgiRm9yY2luZyB1c2Ugb2YgV2ViS2l0Miwg
YXMgdGhlIHJlbW90ZSBsYXllciB0cmVlIGRlcGVuZHMgb24gV2ViS2l0Mi4iKQogICAgICAgICBm
b3JjZV93ZWJraXQyID0gVHJ1ZQogCiAgICAgaWYgYXJncy5jb21wYXJpc29uID09ICJ3ZWJraXQy
IiBhbmQgZm9yY2Vfd2Via2l0MjoKLSAgICAgICAgcHJpbnQgIkl0IGRvZXNuJ3QgbWFrZSBzZW5z
ZSB0byB0ZXN0IFdlYktpdDEgdnMuIFdlYktpdDIgKmFuZCogZm9yY2UgV2ViS2l0MiBvbi4iCisg
ICAgICAgIHByaW50KCJJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gdGVzdCBXZWJLaXQxIHZzLiBX
ZWJLaXQyICphbmQqIGZvcmNlIFdlYktpdDIgb24uIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAog
ICAgIGNvbmZpZ3VyYXRpb25fZmxhZyA9IGZsYWdfZm9yX2NvbXBhcmlzb24oYXJncy5jb21wYXJp
c29uKQpAQCAtNjUsNyArNjUsNyBAQCBkZWYgZmxhZ19mb3JfY29tcGFyaXNvbihjb21wYXJpc29u
X25hbWUpCiAgICAgaWYgY29tcGFyaXNvbl9uYW1lID09ICJ3ZWJraXQyIjoKICAgICAgICAgcmV0
dXJuICItMiIKIAotICAgIHByaW50ICJVbmtub3duIGNvbXBhcmlzb246IiwgY29tcGFyaXNvbl9u
YW1lCisgICAgcHJpbnQoIlVua25vd24gY29tcGFyaXNvbjoiLCBjb21wYXJpc29uX25hbWUpCiAg
ICAgc3lzLmV4aXQoMSkKIAogZGVmIHJ1bl93ZWJraXRfdGVzdHModGVzdHMsIHJlc3VsdHNfZGly
ZWN0b3J5LCB1c2Vfd2Via2l0MiwgYWRkaXRpb25hbF9hcmd1bWVudHM9W10pOgpJbmRleDogVG9v
bHMvU2NyaXB0cy9kb3dubG9hZC1naXRodWItcmVsZWFzZS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL2Rvd25sb2FkLWdpdGh1Yi1yZWxlYXNlLnB5CShyZXZpc2lvbiAyNzExMDMpCisr
KyBUb29scy9TY3JpcHRzL2Rvd25sb2FkLWdpdGh1Yi1yZWxlYXNlLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xMTgsMTYgKzExOCwxNiBAQCBkZWYgbWFpbihhcmd2KToKICAgICBiaW5hcnlfcGF0aCA9
IG9zLnBhdGguam9pbihhcmdzLm91dHB1dF9kaXIsIGFyZ3MuZmlsZW5hbWUpCiAgICAgdmVyc2lv
bl9pbmZvX3BhdGggPSBiaW5hcnlfcGF0aCArICcudmVyc2lvbicKIAotICAgIHByaW50KCgnVXBk
YXRpbmcge30uLi4nLmZvcm1hdChhcmdzLmZpbGVuYW1lKSkpCisgICAgcHJpbnQoJ1VwZGF0aW5n
IHt9Li4uJy5mb3JtYXQoYXJncy5maWxlbmFtZSkpCiAKICAgICBleGlzdGluZ192ZXJzaW9uX2lu
Zm8gPSBsb2FkX3ZlcnNpb25faW5mbyh2ZXJzaW9uX2luZm9fcGF0aCkKICAgICBpZiBleGlzdGlu
Z192ZXJzaW9uX2luZm86Ci0gICAgICAgIHByaW50KCgnRm91bmQgZXhpc3RpbmcgcmVsZWFzZTog
e30nLmZvcm1hdChleGlzdGluZ192ZXJzaW9uX2luZm9bJ3RhZ19uYW1lJ10pKSkKKyAgICAgICAg
cHJpbnQoJ0ZvdW5kIGV4aXN0aW5nIHJlbGVhc2U6IHt9Jy5mb3JtYXQoZXhpc3RpbmdfdmVyc2lv
bl9pbmZvWyd0YWdfbmFtZSddKSkKICAgICBlbHNlOgogICAgICAgICBwcmludCgnTm8gZXhpc3Rp
bmcgcmVsZWFzZSBmb3VuZC4nKQogCiAgICAgcmVsZWFzZV90aXRsZSA9ICdyZWxlYXNlICJ7fSIn
LmZvcm1hdChhcmdzLnJlbGVhc2VfdGFnKSBpZiBhcmdzLnJlbGVhc2VfdGFnIGVsc2UgJ2xhdGVz
dCByZWxlYXNlJwotICAgIHByaW50KCgnU2Vla2luZyB7fSBmcm9tIHt9Li4uJy5mb3JtYXQocmVs
ZWFzZV90aXRsZSwgYXJncy5yZXBvKSkpCisgICAgcHJpbnQoJ1NlZWtpbmcge30gZnJvbSB7fS4u
LicuZm9ybWF0KHJlbGVhc2VfdGl0bGUsIGFyZ3MucmVwbykpCiAgICAgcmVsZWFzZV91cmwsIHRh
cmdldF92ZXJzaW9uX2luZm8gPSBmaW5kX3JlbGVhc2UoYXJncy5lbmRwb2ludCwgYXJncy5yZXBv
LCBhcmdzLmZpbGVuYW1lLCBhcmdzLnRva2VuLCBhcmdzLnJlbGVhc2VfdGFnKQogCiAgICAgaWYg
bm90IHRhcmdldF92ZXJzaW9uX2luZm86CkBAIC0xNDcsNyArMTQ3LDcgQEAgZGVmIG1haW4oYXJn
dik6CiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFyZ3Mub3V0cHV0X2Rpcik6CiAgICAgICAg
IG9zLm1ha2VkaXJzKGFyZ3Mub3V0cHV0X2RpcikKIAotICAgIHByaW50KCgnRG93bmxvYWRpbmcg
dG8ge30uLi4nLmZvcm1hdChvcy5wYXRoLmFic3BhdGgoYXJncy5vdXRwdXRfZGlyKSkpKQorICAg
IHByaW50KCdEb3dubG9hZGluZyB0byB7fS4uLicuZm9ybWF0KG9zLnBhdGguYWJzcGF0aChhcmdz
Lm91dHB1dF9kaXIpKSkKICAgICBkb3dubG9hZF9yZWxlYXNlKHJlbGVhc2VfdXJsLCBiaW5hcnlf
cGF0aCwgYXJncy50b2tlbikKICAgICBzYXZlX3ZlcnNpb25faW5mbyh2ZXJzaW9uX2luZm9fcGF0
aCwgdGFyZ2V0X3ZlcnNpb25faW5mbykKICAgICBwcmludCgnRG9uZSEnKQpJbmRleDogVG9vbHMv
U2NyaXB0cy9kdW1wLXdlYmtpdC10ZXN0cy1ydW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9kdW1wLXdlYmtpdC10ZXN0cy1ydW4JKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1Njcmlw
dHMvZHVtcC13ZWJraXQtdGVzdHMtcnVuCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAog
aW1wb3J0IGpzb24KIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCitpbXBvcnQgc2l4CiBpbXBv
cnQgc3lzCiAKIApAQCAtMTUsMjggKzE2LDI4IEBAIGRlZiBtYWluKGFyZ3YpOgogICAgICAgICAg
ICAgd2l0aCBvcGVuKGFyZ3NbMF0sICdyJykgYXMgZnA6CiAgICAgICAgICAgICAgICAgdHJpZSA9
IGpzb24ubG9hZChmcCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50ID4+IHN5cy5z
dGRlcnIsICJmaWxlIG5vdCBmb3VuZDogJXMiICUgYXJnc1swXQorICAgICAgICAgICAgc2l4LnBy
aW50XygiZmlsZSBub3QgZm91bmQ6ICVzIiAlIGFyZ3NbMF0sIGZpbGU9c3lzLnN0ZGVycikKICAg
ICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgZWxzZToKICAgICAgICAgdHJpZSA9IGpzb24ubG9h
ZChzeXMuc3RkaW4pCiAKICAgICByZXN1bHRzID0gY29udmVydF90cmllX3RvX2ZsYXRfcGF0aHMo
dHJpZSkKICAgICB0ZXN0c19ydW4gPSBbXQotICAgIGZvciAodGVzdCwgcmVzdWx0KSBpbiByZXN1
bHRzLml0ZXJpdGVtcygpOgorICAgIGZvciAodGVzdCwgcmVzdWx0KSBpbiBzaXguaXRlcml0ZW1z
KHJlc3VsdHMpOgogICAgICAgICAjIEVhY2ggcmVzdWx0IGlzIGEgZGljdCBjb250YWluaW5nCiAg
ICAgICAgICMgeyAncmVzdWx0cyc6IFt3b3JrZXIgIywgdGVzdCAjIGluIHdvcmtlciwgZHJpdmVy
IHBpZCwKICAgICAgICAgIyAgIHRlc3QgdGltZSBpbiBtc2VjcywgdGVzdCArIGNvbXBhcmUgdGlt
ZSBpbiBtc2Vjc119CiAgICAgICAgIGlmIHJlc3VsdFsncmVzdWx0cyddWzBdID09IHdvcmtlcl9u
dW1iZXI6CiAgICAgICAgICAgICB0ZXN0c19ydW4uYXBwZW5kKCh0ZXN0LCByZXN1bHRbJ3Jlc3Vs
dHMnXVsxXSkpCiAKLSAgICBwcmludCAiXG4iLmpvaW4odFswXSBmb3IgdCBpbiBzb3J0ZWQodGVz
dHNfcnVuLCBrZXk9bGFtYmRhIHQ6IHRbMV0pKQorICAgIHByaW50KCJcbiIuam9pbih0WzBdIGZv
ciB0IGluIHNvcnRlZCh0ZXN0c19ydW4sIGtleT1sYW1iZGEgdDogdFsxXSkpKQogCiAKIGRlZiBj
b252ZXJ0X3RyaWVfdG9fZmxhdF9wYXRocyh0cmllLCBwcmVmaXg9Tm9uZSk6CiAgICAgIyBDbG9u
ZWQgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UuanNvbl9yZXN1bHRz
X2dlbmVyYXRvcgogICAgICMgc28gdGhhdCB0aGlzIGNvZGUgY2FuIHN0YW5kIGFsb25lLgogICAg
IHJlc3VsdCA9IHt9Ci0gICAgZm9yIG5hbWUsIGRhdGEgaW4gdHJpZS5pdGVyaXRlbXMoKToKKyAg
ICBmb3IgbmFtZSwgZGF0YSBpbiBzaXguaXRlcml0ZW1zKHRyaWUpOgogICAgICAgICBpZiBwcmVm
aXg6CiAgICAgICAgICAgICBuYW1lID0gcHJlZml4ICsgIi8iICsgbmFtZQogCkluZGV4OiBUb29s
cy9TY3JpcHRzL2V4cG9ydC13M2MtcGVyZm9ybWFuY2Utd2ctdGVzdHMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9leHBvcnQtdzNjLXBlcmZvcm1hbmNlLXdnLXRlc3RzCShyZXZpc2lvbiAy
NzExMDMpCisrKyBUb29scy9TY3JpcHRzL2V4cG9ydC13M2MtcGVyZm9ybWFuY2Utd2ctdGVzdHMJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5
cwogCiBpZiBsZW4oc3lzLmFyZ3YpICE9IDM6Ci0gICAgcHJpbnQgJ1VTQUdFOiAlcyBwYXRoX3Rv
X3dlYmtpdF9jaGVja291dF9yb290IHBhdGhfdG9fd2VicGVyZl9jaGVja291dF9yb290JyAlIHN5
cy5hcmd2WzBdCisgICAgcHJpbnQoJ1VTQUdFOiAlcyBwYXRoX3RvX3dlYmtpdF9jaGVja291dF9y
b290IHBhdGhfdG9fd2VicGVyZl9jaGVja291dF9yb290JyAlIHN5cy5hcmd2WzBdKQogICAgIHN5
cy5leGl0KDEpCiAKIHNvdXJjZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oc3lzLmFyZ3ZbMV0s
ICdMYXlvdXRUZXN0cycsICdodHRwJywgJ3Rlc3RzJywgJ3czYycsICd3ZWJwZXJmJykKQEAgLTc3
LDQgKzc3LDQgQEAgZm9yIGRpcmVjdG9yeV90b19jb3B5IGluIGRpcmVjdG9yaWVzX3RvXwogICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIHRvX2ZpbmQsIHJlcGxhY2Vfd2l0aCBpbiByZXBsYWNl
bWVudHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSh0
b19maW5kLCByZXBsYWNlX3dpdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfZmlsZS53
cml0ZShsaW5lKQotICAgICAgICAgICAgICAgIHByaW50ICdFeHBvcnRlZCAlcycgJSBvcy5wYXRo
LmpvaW4ocm9vdCwgZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgcHJpbnQoJ0V4cG9ydGVkICVz
JyAlIG9zLnBhdGguam9pbihyb290LCBmaWxlbmFtZSkpCkluZGV4OiBUb29scy9TY3JpcHRzL2V4
dHJhY3QtZGVwZW5kZW5jaWVzLWZyb20tbWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9leHRyYWN0LWRlcGVuZGVuY2llcy1mcm9tLW1ha2VmaWxlCShyZXZpc2lvbiAyNzExMDMp
CisrKyBUb29scy9TY3JpcHRzL2V4dHJhY3QtZGVwZW5kZW5jaWVzLWZyb20tbWFrZWZpbGUJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDYgQEAKICMgdG8gdGhlIHNwZWNpZmllZCBmaWxlcy4K
IAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0KIGltcG9ydCBhcmdw
YXJzZQogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCkluZGV4OiBUb29scy9TY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2V4dHJhY3Qt
bG9jYWxpemFibGUtc3RyaW5ncwkocmV2aXNpb24gMjcxMTAzKQorKysgVG9vbHMvU2NyaXB0cy9l
eHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBA
CiAjIS9iaW4vc2gKIAotZXhlYyAiJChkaXJuYW1lICQwKS8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCIgIiRAIgorZXhlYygiJChkaXJu
YW1lICQwKS8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2V4dHJhY3QtbG9jYWxpemFibGUt
c3RyaW5ncy5wbCIgIiRAIikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZmluZC1kdXBsaWNhdGUtZmls
ZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9maW5kLWR1cGxpY2F0ZS1maWxlcwkocmV2
aXNpb24gMjcxMTAzKQorKysgVG9vbHMvU2NyaXB0cy9maW5kLWR1cGxpY2F0ZS1maWxlcwkod29y
a2luZyBjb3B5KQpAQCAtNTMsNCArNTMsNCBAQCBmb3IgZmlsZUxpc3QgaW4gZmlsZXNCeURpZ2Vz
dC52YWx1ZXMoKToKICAgICAgICAgZHVwbGljYXRlcy5hcHBlbmQoc29ydGVkKGZpbGVMaXN0KSkK
IAogZm9yIGZpbGVMaXN0IGluIHNvcnRlZChkdXBsaWNhdGVzKToKLSAgICBwcmludCBmaWxlTGlz
dAorICAgIHByaW50KGZpbGVMaXN0KQpJbmRleDogVG9vbHMvU2NyaXB0cy9pYy1zdGF0cy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2ljLXN0YXRzLnB5CShyZXZpc2lvbiAyNzExMDMp
CisrKyBUb29scy9TY3JpcHRzL2ljLXN0YXRzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMSAr
NzQsMTEgQEAgY2xhc3MgSUNTdGF0czoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2xv
d1B1dEJ5SWRbc2xvd1B1dEJ5SWRLZXldICs9IGNvdW50CiAKICAgICBkZWYgZHVtcFN0YXRzKHNl
bGYpOgotICAgICAgICBwcmludCAiVG90YWwgU2xvdyBnZXRCeUlkID0gezA6PjEzLGR9Ii5mb3Jt
YXQoc2VsZi50b3RhbFNsb3dHZXRCeUlkKQotICAgICAgICBwcmludCAiVG90YWwgU2xvdyBwdXRC
eUlkID0gezA6PjEzLGR9Ii5mb3JtYXQoc2VsZi50b3RhbFNsb3dQdXRCeUlkKQorICAgICAgICBw
cmludCgiVG90YWwgU2xvdyBnZXRCeUlkID0gezA6PjEzLGR9Ii5mb3JtYXQoc2VsZi50b3RhbFNs
b3dHZXRCeUlkKSkKKyAgICAgICAgcHJpbnQoIlRvdGFsIFNsb3cgcHV0QnlJZCA9IHswOj4xMyxk
fSIuZm9ybWF0KHNlbGYudG90YWxTbG93UHV0QnlJZCkpCiAKLSAgICAgICAgcHJpbnQgIk9wZXJh
dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlICAgICAgICAgICAgICAgICAgUHJv
cGVydHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiAgICAgICAgICBDb3Vu
dCAgJSB0b3QiCi0gICAgICAgIHByaW50ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0gICBzbG93IgorICAgICAgICBwcmludCgi
T3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICAgICAgICAgICAg
ICBQcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uICAgICAgICAg
IENvdW50ICAlIHRvdCIpCisgICAgICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0gICBzbG93IikKIAogICAgICAg
ICBrZXlzID0gc29ydGVkKHNlbGYuY29tYmluZWRSZWNvcmRzLmtleXMoKSwga2V5PWxhbWJkYSB0
OiBzZWxmLmNvbWJpbmVkUmVjb3Jkc1t0XSwgcmV2ZXJzZT1UcnVlKQogICAgICAgICBmb3Iga2V5
IGluIGtleXM6CkBAIC05NywxMiArOTcsMTIgQEAgY2xhc3MgSUNTdGF0czoKICAgICAgICAgICAg
IGlmIGxlbihwcm9wZXJ0eSkgPiAzNjoKICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3Bl
cnR5WzA6MzJdICsgIi4uLiIKIAotICAgICAgICAgICAgcHJpbnQgInswOjM1fSAgezE6MjB9ICB7
MjozNn0gIHszOjEyfSAgezQ6PjlkfXs1fSIuZm9ybWF0KG9wZXJhdGlvblswOjM0XSwgYmFzZSwg
cHJvcGVydHksIGtleVszXSwgY291bnQsIHNsb3dQZXJjZW50KQorICAgICAgICAgICAgcHJpbnQo
InswOjM1fSAgezE6MjB9ICB7MjozNn0gIHszOjEyfSAgezQ6PjlkfXs1fSIuZm9ybWF0KG9wZXJh
dGlvblswOjM0XSwgYmFzZSwgcHJvcGVydHksIGtleVszXSwgY291bnQsIHNsb3dQZXJjZW50KSkK
IAogCiBkZWYgdXNhZ2UoKToKLSAgICBwcmludCAiVXNhZ2U6IHswfSBbaWMtc3RhdHMtZmlsZV0i
LmZvcm1hdChzeXMuYXJndlswXSkKLSAgICBwcmludCAiICAgICAgICBXaGVyZSA8aWMtc3RhdHMt
ZmlsZT4gaXMgdGhlIHJlc3VsdHMgb2YgdXNpbmcgdGhlIHVzZUlDU3RhdHMgb3B0aW9uLiIKKyAg
ICBwcmludCgiVXNhZ2U6IHswfSBbaWMtc3RhdHMtZmlsZV0iLmZvcm1hdChzeXMuYXJndlswXSkp
CisgICAgcHJpbnQoIiAgICAgICAgV2hlcmUgPGljLXN0YXRzLWZpbGU+IGlzIHRoZSByZXN1bHRz
IG9mIHVzaW5nIHRoZSB1c2VJQ1N0YXRzIG9wdGlvbi4iKQogICAgIGV4aXQoMSkKIAogaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKQEAgLTExMiwxMCArMTEyLDEwIEBAIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZpbGUgPSBvcGVuKHN5cy5h
cmd2WzFdLCAiciIpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBw
cmludCAiQ291bGRuJ3Qgb3BlbiB7MH0sIHsxfSIuZm9ybWF0KHN5cy5hcmd2WzFdLCBlLnN0cmVy
cm9yKQorICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IG9wZW4gezB9LCB7MX0iLmZvcm1hdChz
eXMuYXJndlsxXSwgZS5zdHJlcnJvcikpCiAgICAgICAgICAgICB1c2FnZSgpCiAgICAgICAgIGV4
Y2VwdDoKLSAgICAgICAgICAgIHByaW50ICJVbmV4cGVjdGVkIGVycm9yOiIsIHN5cy5leGNfaW5m
bygpWzBdCisgICAgICAgICAgICBwcmludCgiVW5leHBlY3RlZCBlcnJvcjoiLCBzeXMuZXhjX2lu
Zm8oKVswXSkKICAgICAgICAgICAgIHVzYWdlKCkKICAgICBlbHNlOgogICAgICAgICBmaWxlID0g
c3lzLnN0ZGluCkluZGV4OiBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtcGVyZm9ybWFuY2Utd2ct
dGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXBlcmZvcm1hbmNl
LXdnLXRlc3RzCShyZXZpc2lvbiAyNzExMDMpCisrKyBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
cGVyZm9ybWFuY2Utd2ctdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE0ICs0MiwxNCBAQCBp
bXBvcnQgb3MKIGltcG9ydCBzeXMKIAogaWYgbGVuKHN5cy5hcmd2KSAhPSAzOgotICAgIHByaW50
ICdVU0FHRTogJXMgcGF0aF90b193ZWJwZXJmX2NoZWNrb3V0X3Jvb3QgcGF0aF90b193ZWJraXRf
Y2hlY2tvdXRfcm9vdCcgJSBzeXMuYXJndlswXQorICAgIHByaW50KCdVU0FHRTogJXMgcGF0aF90
b193ZWJwZXJmX2NoZWNrb3V0X3Jvb3QgcGF0aF90b193ZWJraXRfY2hlY2tvdXRfcm9vdCcgJSBz
eXMuYXJndlswXSkKICAgICBzeXMuZXhpdCgxKQogCiBzb3VyY2VfZGlyZWN0b3J5ID0gb3MucGF0
aC5qb2luKHN5cy5hcmd2WzFdLCAndGVzdHMnKQogZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gb3Mu
cGF0aC5qb2luKHN5cy5hcmd2WzJdLCAnTGF5b3V0VGVzdHMnLCAnaHR0cCcsICd0ZXN0cycsICd3
M2MnLCAnd2VicGVyZicpCiAKIGlmIG9zLnBhdGguZXhpc3RzKGRlc3RpbmF0aW9uX2RpcmVjdG9y
eSk6Ci0gICAgcHJpbnQgJ1JlZnVzaW5nIHRvIG92ZXJ3cml0ZSBleGlzdGluZyBkaXJlY3Rvcnk6
ICVzJyAlIGRlc3RpbmF0aW9uX2RpcmVjdG9yeQorICAgIHByaW50KCdSZWZ1c2luZyB0byBvdmVy
d3JpdGUgZXhpc3RpbmcgZGlyZWN0b3J5OiAlcycgJSBkZXN0aW5hdGlvbl9kaXJlY3RvcnkpCiAg
ICAgc3lzLmV4aXQoMSkKIG9zLm1ha2VkaXJzKGRlc3RpbmF0aW9uX2RpcmVjdG9yeSkKIApJbmRl
eDogVG9vbHMvU2NyaXB0cy9tYWtlLWRpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9t
YWtlLWRpc3QJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1NjcmlwdHMvbWFrZS1kaXN0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw2IEBACiAjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KIGZy
b20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZwogCiBpbXBvcnQgYXJncGFyc2UKQEAgLTEyMCw3
ICsxMTksNyBAQCBjbGFzcyBEaXJlY3Rvcnkob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBwYXNz
ZXNfYWxsX3J1bGVzKGVudHJ5KToKICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZXNldC5nbG9i
YWxfcnVsZXMoKS5wYXNzZXMoZW50cnkpIGFuZCBzZWxmLnJ1bGVzLnBhc3NlcyhlbnRyeSkKIAot
ICAgICAgICAgICAgdG9fa2VlcCA9IGZpbHRlcihwYXNzZXNfYWxsX3J1bGVzLCBkaXJzKQorICAg
ICAgICAgICAgdG9fa2VlcCA9IGxpc3QoZmlsdGVyKHBhc3Nlc19hbGxfcnVsZXMsIGRpcnMpKQog
ICAgICAgICAgICAgZGVsIGRpcnNbOl0KICAgICAgICAgICAgIGRpcnMuZXh0ZW5kKHRvX2tlZXAp
CiAKQEAgLTIzNyw3ICsyMzYsNyBAQCBjbGFzcyBEaXN0Y2hlY2sob2JqZWN0KToKICAgICAgICAg
ZGVmIGNyZWF0ZV9kaXIoZGlyZWN0b3J5LCBkaXJlY3RvcnlfdHlwZSk6CiAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgb3MubWtkaXIoZGlyZWN0b3J5KQotICAgICAgICAgICAgZXhj
ZXB0IE9TRXJyb3IsIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAg
ICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUIG9yIG5vdCBvcy5wYXRoLmlzZGly
KGRpcmVjdG9yeSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQg
bm90IGNyZWF0ZSAlcyBkaXIgYXQgJXM6ICVzIiAlIChkaXJlY3RvcnlfdHlwZSwgZGlyZWN0b3J5
LCBzdHIoZSkpKQogCkluZGV4OiBUb29scy9TY3JpcHRzL21hbGxvYy10cmVlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvbWFsbG9jLXRyZWUJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xz
L1NjcmlwdHMvbWFsbG9jLXRyZWUJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwxMSArMTk4LDExIEBA
IGRlZiBtYWluKCk6CiAKICAgICBzb3J0ZWRSb290Tm9kZXMgPSBzb3J0ZWQocm9vdE5vZGVzLnZh
bHVlcygpLCBrZXk9c29ydEtleUJ5Qnl0ZXMsIHJldmVyc2U9VHJ1ZSkKIAotICAgIHByaW50ICdD
YWxsIGdyYXBoOicKKyAgICBwcmludCgnQ2FsbCBncmFwaDonKQogICAgIHRyeToKICAgICAgICAg
Zm9yIG5vZGUgaW4gc29ydGVkUm9vdE5vZGVzOgogICAgICAgICAgICAgbm9kZS5wcmludE5vZGUo
KQotICAgICAgICAgICAgcHJpbnQgCisgICAgICAgICAgICBwcmludCgpIAogICAgIGV4Y2VwdDoK
ICAgICAgICAgcGFzcwogCkluZGV4OiBUb29scy9TY3JpcHRzL21hcmstanNjLXN0cmVzcy10ZXN0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbWFyay1qc2Mtc3RyZXNzLXRlc3QJKHJldmlz
aW9uIDI3MTEwMykKKysrIFRvb2xzL1NjcmlwdHMvbWFyay1qc2Mtc3RyZXNzLXRlc3QJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgSlNDVGVzdE1vZGlmaWVyKG9iamVjdCk6
CiAgICAgICAgIHNraXBfbGluZV9wcmVmaXggPSAiLy9AIHNraXAgaWYiCiAgICAgICAgIHNraXBf
Y29uZGl0aW9ucyA9IFtdCiAgICAgICAgIHNraXBfbGluZSA9ICJ7fSB7fSB7fSIKLSAgICAgICAg
c3VwcG9ydGVkX3ZhcmlhYmxlcyA9IGZpbHRlcihsYW1iZGEgdmFyaWFibGU6IHZhcmlhYmxlIGlu
IHNlbGYuX2NvbmRpdGlvbnMsIEpTQ1Rlc3RNb2RpZmllci52YXJpYWJsZXMpCisgICAgICAgIHN1
cHBvcnRlZF92YXJpYWJsZXMgPSBbdmFyaWFibGUgZm9yIHZhcmlhYmxlIGluIEpTQ1Rlc3RNb2Rp
Zmllci52YXJpYWJsZXMgaWYgdmFyaWFibGUgaW4gc2VsZi5fY29uZGl0aW9uc10KICAgICAgICAg
Y29uZGl0aW9uX3RlbXBsYXRlID0gInt9IiBpZiBsZW4oc3VwcG9ydGVkX3ZhcmlhYmxlcykgPT0g
MSBlbHNlICIoe30pIgogICAgICAgICBmb3IgdmFyaWFibGUgaW4gc3VwcG9ydGVkX3ZhcmlhYmxl
czoKICAgICAgICAgICAgIHNraXBfY29uZGl0aW9ucy5hcHBlbmQoY29uZGl0aW9uX3RlbXBsYXRl
LmZvcm1hdChzZWxmLl9wYXJzZV9jb25kaXRpb24odmFyaWFibGUsIHNlbGYuX2NvbmRpdGlvbnNb
dmFyaWFibGVdKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL29wZW4tbGF5b3V0LXRlc3QKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9vcGVuLWxheW91dC10ZXN0CShyZXZpc2lvbiAyNzExMDMp
CisrKyBUb29scy9TY3JpcHRzL29wZW4tbGF5b3V0LXRlc3QJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDcgQEAgZGVmIG1haW4oYXJndiwgc3Rkb3V0LCBzdGRlcnIpOgogCiAgICAgdGVzdF91
cmwgPSBkcml2ZXIudGVzdF90b191cmkodGVzdF9uYW1lKQogICAgIGlmIG5vdCBuZWVkc19zZXJ2
ZXI6Ci0gICAgICAgIHByaW50ICJPcGVuaW5nICVzIiAlIHRlc3RfdXJsCisgICAgICAgIHByaW50
KCJPcGVuaW5nICVzIiAlIHRlc3RfdXJsKQogICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFsnb3Bl
bicsIHRlc3RfdXJsXSkKICAgICAgICAgcmV0dXJuCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcmVh
ZC1jaGVja3N1bS1mcm9tLXBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3JlYWQtY2hl
Y2tzdW0tZnJvbS1wbmcJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1NjcmlwdHMvcmVhZC1j
aGVja3N1bS1mcm9tLXBuZwkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0
YXRlbWVudAogaW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgcmVhZF9j
aGVja3N1bV9mcm9tX3BuZwpAQCAtMzYsNCArMzUsNCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBp
bXBvcnQgcmVhZF9jaGVja3N1CiBpZiAnX19tYWluX18nID09IF9fbmFtZV9fOgogICAgIGZvciBm
aWxlbmFtZSBpbiBzeXMuYXJndlsxOl06CiAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3In
KSBhcyBmaWxlaGFuZGxlOgotICAgICAgICAgICAgcHJpbnQgIiVzOiAlcyIgJSAocmVhZF9jaGVj
a3N1bV9mcm9tX3BuZy5yZWFkX2NoZWNrc3VtKGZpbGVoYW5kbGUpLCBmaWxlbmFtZSkKKyAgICAg
ICAgICAgIHByaW50KCIlczogJXMiICUgKHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcucmVhZF9jaGVj
a3N1bShmaWxlaGFuZGxlKSwgZmlsZW5hbWUpKQpJbmRleDogVG9vbHMvU2NyaXB0cy9yZWJhc2Ut
cGF0Y2gtYWZ0ZXItd2Via2l0LW1vdmUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9yZWJh
c2UtcGF0Y2gtYWZ0ZXItd2Via2l0LW1vdmUJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1Nj
cmlwdHMvcmViYXNlLXBhdGNoLWFmdGVyLXdlYmtpdC1tb3ZlCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcworaW1wb3J0IHNpeAogaW1w
b3J0IHN5cwogCiBSRUJBU0VfRElDVElPTkFSWSA9IHsKQEAgLTQ4LDcgKzQ5LDcgQEAgZGVmIG5l
ZWRzX3JlYmFzZShsaW5lKToKICAgICBpZiBub3QgaXNfZWRpdGFibGVfbGluZShsaW5lKToKICAg
ICAgICAgcmV0dXJuIFJlYmFzZVN0YXR1cy5ET19OT1RfTkVFRAogCi0gICAgZm9yIGN1cnJlbnRf
bmFtZSwgcmViYXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAg
IGZvciBjdXJyZW50X25hbWUsIHJlYmFzZWRfbmFtZSBpbiBzaXguaXRlcml0ZW1zKFJFQkFTRV9E
SUNUSU9OQVJZKToKICAgICAgICAgIyBDaGVjayBpZiB3ZSd2ZSBhbHJlYWR5IHJlYmFzZWQuIFdl
IG5lZWQgdG8gY2hlY2sgaWYgdGhlIHJlYmFzZWRfbmFtZSBpcyBhbHJlYWR5IGluIHRoZSBSRUJB
U0VfRElDVElPTkFSWSwKICAgICAgICAgIyBpbiB0aGlzIGNhc2UsIHdlIGRvbid0IGtub3cgaWYg
d2UndmUgYWxyZWFkeSBiZWVuIHJlYmFzZWQuCiAgICAgICAgIGlmIGFwcGVuZF9zb3VyY2UocmVi
YXNlZF9uYW1lKSBpbiBsaW5lIGFuZCByZWJhc2VkX25hbWUgbm90IGluIFJFQkFTRV9ESUNUSU9O
QVJZOgpAQCAtNjAsNyArNjEsNyBAQCBkZWYgbmVlZHNfcmViYXNlKGxpbmUpOgogICAgICAgICAg
ICAgcmV0dXJuIFJlYmFzZVN0YXR1cy5ORUVECiAKICAgICAjIENoZWNrIGlmIHdlIG1pZ2h0IG5l
ZWQgYSByZWJhc2UKLSAgICBmb3IgY3VycmVudF9uYW1lLCByZWJhc2VkX25hbWUgaW4gUkVCQVNF
X0RJQ1RJT05BUlkuaXRlcml0ZW1zKCk6CisgICAgZm9yIGN1cnJlbnRfbmFtZSwgcmViYXNlZF9u
YW1lIGluIHNpeC5pdGVyaXRlbXMoUkVCQVNFX0RJQ1RJT05BUlkpOgogICAgICAgICBpZiBhcHBl
bmRfc291cmNlKGN1cnJlbnRfbmFtZSkgaW4gbGluZToKICAgICAgICAgICAgIHJldHVybiBSZWJh
c2VTdGF0dXMuTUFZQkVfTkVFRAogCkBAIC02OSwxMSArNzAsMTEgQEAgZGVmIG5lZWRzX3JlYmFz
ZShsaW5lKToKIAogZGVmIHJlYmFzZV9saW5lKGxpbmUpOgogICAgIGlmIG5vdCBpc19lZGl0YWJs
ZV9saW5lKGxpbmUpOgotICAgICAgICBmb3IgY3VycmVudF9uYW1lLCByZWJhc2VkX25hbWUgaW4g
UkVCQVNFX0RJQ1RJT05BUlkuaXRlcml0ZW1zKCk6CisgICAgICAgIGZvciBjdXJyZW50X25hbWUs
IHJlYmFzZWRfbmFtZSBpbiBzaXguaXRlcml0ZW1zKFJFQkFTRV9ESUNUSU9OQVJZKToKICAgICAg
ICAgICAgIGlmIGN1cnJlbnRfbmFtZSBpbiBsaW5lOgogICAgICAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoJ0ZvdW5kIGFuIGluc3RhbmNlIG9mIHt9IGluIHRoZSBwYXRjaC4gIERpZCB5b3Ug
bWVhbiB0byByZXBsYWNlIGl0IHdpdGgge30/XG4nLmZvcm1hdChjdXJyZW50X25hbWUsIHJlYmFz
ZWRfbmFtZSkpCiAgICAgICAgIHJldHVybiBsaW5lCi0gICAgZm9yIGN1cnJlbnRfbmFtZSwgcmVi
YXNlZF9uYW1lIGluIFJFQkFTRV9ESUNUSU9OQVJZLml0ZXJpdGVtcygpOgorICAgIGZvciBjdXJy
ZW50X25hbWUsIHJlYmFzZWRfbmFtZSBpbiBzaXguaXRlcml0ZW1zKFJFQkFTRV9ESUNUSU9OQVJZ
KToKICAgICAgICAgaWYgYXBwZW5kX3NvdXJjZShjdXJyZW50X25hbWUpIGluIGxpbmU6CiAgICAg
ICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKGFwcGVuZF9zb3VyY2UoY3VycmVudF9uYW1lKSwg
YXBwZW5kX3NvdXJjZShyZWJhc2VkX25hbWUpKQogICAgIHJldHVybiBsaW5lCkBAIC0xMTgsMTMg
KzExOSwxMyBAQCBkZWYgcGFyc2VfYXJndW1lbnRzKCk6CiAgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoJ1JlYWRpbmcgcGF0Y2ggZnJvbSBzdGRpblxuJykKICAgICAgICAgcmV0dXJuIFtdCiAgICAg
ZWxpZiBzeXMuYXJndlsxXSA9PSAnLWgnIG9yIHN5cy5hcmd2WzFdID09ICdoZWxwJzoKLSAgICAg
ICAgcHJpbnQgJ3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSB1c2FnZTonCi0gICAgICAg
IHByaW50ICdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSAtaCwgaGVscCcKLSAgICAg
ICAgcHJpbnQgJ1x0XHRQcmludCB0aGlzIG1lc3NhZ2UnCi0gICAgICAgIHByaW50ICdcdHJlYmFz
ZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSA8cGF0aCB0byBwYXRjaD4nCi0gICAgICAgIHByaW50
ICdcdFx0UmVwbGFjZSB0aGUgcGF0Y2ggYXQgdGhlIHByb3ZpZGVkIHBhdGggd2l0aCBhIHJlYmFz
ZWQgcGF0Y2gnCi0gICAgICAgIHByaW50ICdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92
ZScKLSAgICAgICAgcHJpbnQgJ1x0XHRUcmVhdCBzdGRpbiBhcyB0aGUgcGF0Y2ggdG8gYmUgcmVi
YXNlZCcKKyAgICAgICAgcHJpbnQoJ3JlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSB1c2Fn
ZTonKQorICAgICAgICBwcmludCgnXHRyZWJhc2UtcGF0Y2gtYWZ0ZXItd2Via2l0LW1vdmUgLWgs
IGhlbHAnKQorICAgICAgICBwcmludCgnXHRcdFByaW50IHRoaXMgbWVzc2FnZScpCisgICAgICAg
IHByaW50KCdcdHJlYmFzZS1wYXRjaC1hZnRlci13ZWJraXQtbW92ZSA8cGF0aCB0byBwYXRjaD4n
KQorICAgICAgICBwcmludCgnXHRcdFJlcGxhY2UgdGhlIHBhdGNoIGF0IHRoZSBwcm92aWRlZCBw
YXRoIHdpdGggYSByZWJhc2VkIHBhdGNoJykKKyAgICAgICAgcHJpbnQoJ1x0cmViYXNlLXBhdGNo
LWFmdGVyLXdlYmtpdC1tb3ZlJykKKyAgICAgICAgcHJpbnQoJ1x0XHRUcmVhdCBzdGRpbiBhcyB0
aGUgcGF0Y2ggdG8gYmUgcmViYXNlZCcpCiAgICAgICAgIGV4aXQoMCkKIAogICAgIGZvciBwYXRo
IGluIHN5cy5hcmd2WzE6XToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMJKHJldmlzaW9uIDI3MTEwMykK
KysrIFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMTcsNyAr
MTcsNiBAQAogIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAogIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIAot
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGxvZ2dpbmcKIGlt
cG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgb3MKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLXdlYmRy
aXZlci10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi13ZWJkcml2ZXItdGVz
dHMJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXdlYmRyaXZlci10ZXN0
cwkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBjb25maWd1cmVfbG9nZ2luZyhsb2dn
aW5nLkRFQlVHIGlmIG9wdGlvCiAKIHRyeToKICAgICBwb3J0ID0gSG9zdCgpLnBvcnRfZmFjdG9y
eS5nZXQob3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucykKLWV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVy
cm9yLCBlOgorZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3IgYXMgZToKICAgICBfbG9nLmVycm9y
KHN0cihlKSkKICAgICBzeXMuZXhpdCgtMSkKIApAQCAtNzYsMTAgKzc2LDEwIEBAIGlmIHBvcnQu
bmFtZSgpIGluIFsnZ3RrJywgJ3dwZSddOgogICAgICAgICBpbXBvcnQgamhidWlsZHV0aWxzCiAK
ICAgICAgICAgaWYgbm90IGpoYnVpbGR1dGlscy5lbnRlcl9qaGJ1aWxkX2Vudmlyb25tZW50X2lm
X2F2YWlsYWJsZShwb3J0Lm5hbWUoKSk6Ci0gICAgICAgICAgICBwcmludCAnKioqJwotICAgICAg
ICAgICAgcHJpbnQgJyoqKiBXYXJuaW5nOiBqaGJ1aWxkIGVudmlyb25tZW50IG5vdCBwcmVzZW50
IGFuZCBub3QgcnVubmluZyBpbiBmbGF0cGFrLicKLSAgICAgICAgICAgIHByaW50ICcqKiogUnVu
IHVwZGF0ZS13ZWJraXRndGstbGlicyBvciB1cGRhdGUtd2Via2l0LWZsYXRwYWsgYmVmb3JlIGJ1
aWxkLXdlYmtpdCB0byBlbnN1cmUgcHJvcGVyIHRlc3RpbmcuLicKLSAgICAgICAgICAgIHByaW50
ICcqKionCisgICAgICAgICAgICBwcmludCgnKioqJykKKyAgICAgICAgICAgIHByaW50KCcqKiog
V2FybmluZzogamhidWlsZCBlbnZpcm9ubWVudCBub3QgcHJlc2VudCBhbmQgbm90IHJ1bm5pbmcg
aW4gZmxhdHBhay4nKQorICAgICAgICAgICAgcHJpbnQoJyoqKiBSdW4gdXBkYXRlLXdlYmtpdGd0
ay1saWJzIG9yIHVwZGF0ZS13ZWJraXQtZmxhdHBhayBiZWZvcmUgYnVpbGQtd2Via2l0IHRvIGVu
c3VyZSBwcm9wZXIgdGVzdGluZy4uJykKKyAgICAgICAgICAgIHByaW50KCcqKionKQogCiBydW5u
ZXIgPSBXZWJEcml2ZXJUZXN0UnVubmVyKHBvcnQpCiBydW5uZXIucnVuKGFyZ3MpCkluZGV4OiBU
b29scy9TY3JpcHRzL3J1bi13cGUtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9y
dW4td3BlLXRlc3RzCShyZXZpc2lvbiAyNzExMDMpCisrKyBUb29scy9TY3JpcHRzL3J1bi13cGUt
dGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTE3LDcgKzE3LDYgQEAKICMgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICMg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJp
bnRfZnVuY3Rpb24KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvc2FtcHN0YXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9zYW1w
c3RhdAkocmV2aXNpb24gMjcxMTAzKQorKysgVG9vbHMvU2NyaXB0cy9zYW1wc3RhdAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCBm
aWxlaW5wdXQKIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgorZnJvbSBmdW5jdG9v
bHMgaW1wb3J0IHJlZHVjZQogCiB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIFtGSUxF
U11cbiAgQ29tcHV0ZSB0aGUgbWVhbiBhbmQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgb2YgYSBz
YW1wbGUgc2V0LlxuICBTdGFuZGFyZCBpbnB1dCBvciBmaWxlcyBtdXN0IGNvbnRhaW4gdHdvIG9y
IG1vcmUgZGVjaW1hbCBudW1iZXJzLCBvbmUgcGVyIGxpbmUuIgogcGFyc2VyID0gT3B0aW9uUGFy
c2VyKHVzYWdlPXVzYWdlKQpAQCAtODgsMTEgKzg5LDExIEBAIGlmIG9wdGlvbnMudmVyYm9zZToK
ICAgICBsZW5ndGggPSA3CiAgICAgZm9yIGl0ZW0gaW4gcmVzdWx0czoKICAgICAgICAgbGluZSA9
ICIgICAgICAlLjJmICVzIiAlIChpdGVtLCBvcHRpb25zLnVuaXQpCi0gICAgICAgIHByaW50IGxp
bmUKKyAgICAgICAgcHJpbnQobGluZSkKICAgICAgICAgbGVuZ3RoID0gbGVuKGxpbmUpIGlmIGxl
bihsaW5lKSA+IGxlbmd0aCBlbHNlIGxlbmd0aAogCi0gICAgcHJpbnQgIi0iICogbGVuZ3RoCisg
ICAgcHJpbnQoIi0iICogbGVuZ3RoKQogCiBwcmVmaXggPSAiTWVhbjogIiBpZiBvcHRpb25zLnZl
cmJvc2UgZWxzZSAiIgotcHJpbnQgIiVzJS4yZiAlcyArLy0gJS4yZiAlcyAoJS4xZiUlKSIgJSAo
cHJlZml4LCBtZWFuLCBvcHRpb25zLnVuaXQsIGNvbmZpZGVuY2VJbnRlcnZhbCwgb3B0aW9ucy51
bml0LCBjb25maWRlbmNlUGVyY2VudCkKK3ByaW50KCIlcyUuMmYgJXMgKy8tICUuMmYgJXMgKCUu
MWYlJSkiICUgKHByZWZpeCwgbWVhbiwgb3B0aW9ucy51bml0LCBjb25maWRlbmNlSW50ZXJ2YWws
IG9wdGlvbnMudW5pdCwgY29uZmlkZW5jZVBlcmNlbnQpKQogCkluZGV4OiBUb29scy9TY3JpcHRz
L3N5bmMtZmVhdHVyZS1kZWZpbmVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvc3luYy1m
ZWF0dXJlLWRlZmluZXMJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1NjcmlwdHMvc3luYy1m
ZWF0dXJlLWRlZmluZXMJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxNiBAQAogCiBpbXBv
cnQgb3MKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBzaXgKIGZyb20gd2Via2l0cHkuc3R5bGUuY2hl
Y2tlcnMuZmVhdHVyZWRlZmluZXMgaW1wb3J0IEZFQVRVUkVfREVGSU5FX0ZJTEVTCiAKKwogbmV3
ZXN0X2ZpbGUgPSBtYXgoRkVBVFVSRV9ERUZJTkVfRklMRVMsIGtleT1vcy5wYXRoLmdldGN0aW1l
KQogcmVtYWluaW5nX2ZpbGVzID0gRkVBVFVSRV9ERUZJTkVfRklMRVMKIHJlbWFpbmluZ19maWxl
cy5yZW1vdmUobmV3ZXN0X2ZpbGUpCiAKLXByaW50ICJDb3B5ICVzIHRvIGVhY2ggb2Y6ICVzICIg
JSAobmV3ZXN0X2ZpbGUsICIsICIuam9pbihyZW1haW5pbmdfZmlsZXMpKQotcmVzcG9uc2UgPSBy
YXdfaW5wdXQoIkNvbnRpbnVlIFtZL25dOiAiKQorcHJpbnQoIkNvcHkgJXMgdG8gZWFjaCBvZjog
JXMgIiAlIChuZXdlc3RfZmlsZSwgIiwgIi5qb2luKHJlbWFpbmluZ19maWxlcykpKQorcmVzcG9u
c2UgPSBzaXgubW92ZXMuaW5wdXQoIkNvbnRpbnVlIFtZL25dOiAiKQogCiBpZiBub3QgcmVzcG9u
c2U6CiAgICAgcmVzcG9uc2UgPSAneScKSW5kZXg6IFRvb2xzL1NjcmlwdHMvc3luYy1tYXN0ZXIt
d2l0aC11cHN0cmVhbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3N5bmMtbWFzdGVyLXdp
dGgtdXBzdHJlYW0JKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1NjcmlwdHMvc3luYy1tYXN0
ZXItd2l0aC11cHN0cmVhbQkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsOSBAQCBpbXBvcnQg
c3VicHJvY2VzcwogZGVmIHJ1bihhcmdzLCBlcnJvcl9tZXNzYWdlID0gTm9uZSk6CiAgICAgaWYg
c3VicHJvY2Vzcy5jYWxsKGFyZ3MpICE9IDA6CiAgICAgICAgIGlmIGVycm9yX21lc3NhZ2U6Ci0g
ICAgICAgICAgICBwcmludCBlcnJvcl9tZXNzYWdlCisgICAgICAgICAgICBwcmludChlcnJvcl9t
ZXNzYWdlKQogICAgICAgICBleGl0KDEpCiAKIHJ1bihbImdpdCIsICJmZXRjaCIsICJ1cHN0cmVh
bSJdLCAiSGF2ZSB5b3UgcnVuIGNvbmZpZ3VyZS1naXRodWItYXMtdXBzdHJlYW0gdG8gY29uZmln
dXJlIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnk/IikKIHJ1bihbImdpdCIsICJwdXNoIiwgIm9yaWdp
biIsICJ1cHN0cmVhbS9tYXN0ZXI6bWFzdGVyIl0pCi1wcmludCAiXG5Db25zaWRlciBydW5uaW5n
ICdnaXQgbWVyZ2Ugb3JpZ2luJyB0byB1cGRhdGUgeW91ciBsb2NhbCBicmFuY2hlcy4iCitwcmlu
dCgiXG5Db25zaWRlciBydW5uaW5nICdnaXQgbWVyZ2Ugb3JpZ2luJyB0byB1cGRhdGUgeW91ciBs
b2NhbCBicmFuY2hlcy4iKQpJbmRleDogVG9vbHMvU2NyaXB0cy91cGRhdGUtd2FzbS1nY2MtdG9y
dHVyZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3VwZGF0ZS13YXNtLWdjYy10b3J0
dXJlLnB5CShyZXZpc2lvbiAyNzExMDMpCisrKyBUb29scy9TY3JpcHRzL3VwZGF0ZS13YXNtLWdj
Yy10b3J0dXJlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSwxMSBAQCBpbXBvcnQgc2h1
dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRhcmZpbGUKLWltcG9y
dCB1cmxsaWIyCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgZnJvbSB1cmxs
aWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorZWxzZToKKyAgICBmcm9tIHVybGxpYjIgaW1wb3J0
IHVybG9wZW4KIAogTEtHUl9VUkwgPSAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3dh
c20tbGx2bS9idWlsZHMvJXMvbGtnci5qc29uJwogVE9SVFVSRV9GSUxFID0gJ3dhc20tdG9ydHVy
ZS1lbXdhc20tJXMudGJ6MicKQEAgLTY1LDcgKzY5LDcgQEAgZGVmIHVwZGF0ZV9sa2dyKGFyZ3Mp
OgogICAgIGxrZ3JfdXJsID0gTEtHUl9VUkwgJSBhcmdzLnBsYXRmb3JtCiAgICAgaWYgbm90IGFy
Z3MubGtncjoKICAgICAgICAgcHJpbnQoJ0Rvd25sb2FkaW5nOiAlcycgJSBsa2dyX3VybCkKLSAg
ICAgICAgYXJncy5sa2dyID0ganNvbi5sb2Fkcyh1cmxsaWIyLnVybG9wZW4obGtncl91cmwpLnJl
YWQoKSlbJ2J1aWxkJ10KKyAgICAgICAgYXJncy5sa2dyID0ganNvbi5sb2Fkcyh1cmxvcGVuKGxr
Z3JfdXJsKS5yZWFkKCkpWydidWlsZCddCiAgICAgcHJpbnQoJ2xrZ3I6ICVzJyAlIGFyZ3MubGtn
cikKIAogCkBAIC03NCw3ICs3OCw3IEBAIGRlZiB1bnRhcl90b3J0dXJlKGFyZ3MpOgogICAgIHRv
cnR1cmVfdXJsID0gVE9SVFVSRV9VUkwgJSAoYXJncy5wbGF0Zm9ybSwgYXJncy5sa2dyLCB0b3J0
dXJlX2ZpbGUpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRvcnR1cmVfZmlsZSk6CiAgICAg
ICAgIHByaW50KCdEb3dubG9hZGluZzogJXMnICUgdG9ydHVyZV91cmwpCi0gICAgICAgIHRvcnR1
cmVfZG93bmxvYWQgPSB1cmxsaWIyLnVybG9wZW4odG9ydHVyZV91cmwpCisgICAgICAgIHRvcnR1
cmVfZG93bmxvYWQgPSB1cmxvcGVuKHRvcnR1cmVfdXJsKQogICAgICAgICB3aXRoIG9wZW4odG9y
dHVyZV9maWxlLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSh0b3J0dXJlX2Rvd25s
b2FkLnJlYWQoKSkKICAgICBpZiBub3QgYXJncy5ub3VudGFyOgpJbmRleDogVG9vbHMvU2NyaXB0
cy92YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy92
YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMJKHJldmlzaW9uIDI3MTEwMykKKysrIFRvb2xzL1Njcmlw
dHMvdmFsaWRhdGUtY29tbWl0dGVyLWxpc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMs
MTggQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKIGlt
cG9ydCByZQotaW1wb3J0IHVybGxpYjIKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisK
IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUsIGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gb3B0
cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgogCitpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
OgorICAgIGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KK2Vsc2U6CisgICAgZnJv
bSB1cmxsaWIyIGltcG9ydCB1cmxvcGVuCisKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5j
b21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZ0VudHJ5CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5jaGVja291dC5zY20gaW1wb3J0IEdpdApAQCAtNTMsMTAgKzU5LDEwIEBAIF9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKIGRlZiBwcmludF9saXN0X2lmX25vbl9lbXB0eSh0aXRs
ZSwgbGlzdF90b19wcmludCk6CiAgICAgaWYgbm90IGxpc3RfdG9fcHJpbnQ6CiAgICAgICAgIHJl
dHVybgotICAgIHByaW50ICMgTmV3bGluZSBiZWZvcmUgdGhlIGxpc3QKLSAgICBwcmludCB0aXRs
ZQorICAgIHByaW50KCkgIyBOZXdsaW5lIGJlZm9yZSB0aGUgbGlzdAorICAgIHByaW50KHRpdGxl
KQogICAgIGZvciBpdGVtIGluIGxpc3RfdG9fcHJpbnQ6Ci0gICAgICAgIHByaW50IGl0ZW0KKyAg
ICAgICAgcHJpbnQoaXRlbSkKIAogCiBjbGFzcyBDb21taXR0ZXJMaXN0RnJvbU1haWxpbmdMaXN0
KG9iamVjdCk6CkBAIC02NCw3ICs3MCw3IEBAIGNsYXNzIENvbW1pdHRlckxpc3RGcm9tTWFpbGlu
Z0xpc3Qob2JqZWMKICAgICByZXZpZXdlcnNfbGlzdF91cmwgPSAiaHR0cDovL2xpc3RzLndlYmtp
dC5vcmcvbWFpbG1hbi9yb3N0ZXIvd2Via2l0LXJldmlld2VycyIKIAogICAgIGRlZiBfZmV0Y2hf
ZW1haWxzX2Zyb21fcGFnZShzZWxmLCB1cmwpOgotICAgICAgICBwYWdlID0gdXJsbGliMi51cmxv
cGVuKHVybCkKKyAgICAgICAgcGFnZSA9IHVybG9wZW4odXJsKQogICAgICAgICBzb3VwID0gQmVh
dXRpZnVsU291cChwYWdlKQogCiAgICAgICAgIGVtYWlscyA9IFtdCkBAIC05Myw3ICs5OSw3IEBA
IGNsYXNzIENvbW1pdHRlckxpc3RGcm9tTWFpbGluZ0xpc3Qob2JqZWMKICAgICAgICAgICAgIGZv
ciBlbWFpbCBpbiBjb21taXR0ZXIuZW1haWxzOgogICAgICAgICAgICAgICAgIGVtYWlsX3RvX2Nv
bW1pdHRlcl9tYXBbZW1haWxdID0gY29tbWl0dGVyCiAKLSAgICAgICAgcmV0dXJuIGZpbHRlcihs
YW1iZGEgZW1haWw6IG5vdCBlbWFpbF90b19jb21taXR0ZXJfbWFwLmdldChlbWFpbCksIGVtYWls
cykKKyAgICAgICAgcmV0dXJuIFtlbWFpbCBmb3IgZW1haWwgaW4gZW1haWxzIGlmIG5vdCBlbWFp
bF90b19jb21taXR0ZXJfbWFwLmdldChlbWFpbCldCiAKICAgICBkZWYgY2hlY2tfZm9yX2VtYWls
c19taXNzaW5nX2Zyb21fbGlzdChzZWxmLCBjb21taXR0ZXJfbGlzdCk6CiAgICAgICAgIGNvbW1p
dHRlcl9lbWFpbHMgPSBzZWxmLl9mZXRjaF9lbWFpbHNfZnJvbV9wYWdlKHNlbGYuY29tbWl0dGVy
c19saXN0X3VybCkKQEAgLTIxMSw5ICsyMTcsOSBAQCBjbGFzcyBDb21taXR0ZXJMaXN0RnJvbUdp
dChvYmplY3QpOgogICAgICAgICAgICAgbGFzdF9jb21taXRfZGF0ZXNbbWF0Y2hfcmVzdWx0Lmdy
b3VwKCdhdXRob3InKV0gPSBmbG9hdChtYXRjaF9yZXN1bHQuZ3JvdXAoJ3RpbWVzdGFtcCcpKQog
CiAgICAgZGVmIF9maWxsX2luX2VtYWlsc19mb3Jfb2xkX2xvZ2lucyhzZWxmKToKLSAgICAgICAg
YXV0aG9yc19taXNzaW5nX2VtYWlsID0gZmlsdGVyKGxhbWJkYSBhdXRob3I6IGF1dGhvci5maW5k
KCdAJykgPT0gLTEsIHNlbGYuX2xhc3RfY29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlKQotICAg
ICAgICBhdXRob3JzX3dpdGhfZW1haWwgPSBmaWx0ZXIobGFtYmRhIGF1dGhvcjogYXV0aG9yLmZp
bmQoJ0AnKSAhPSAtMSwgc2VsZi5fbGFzdF9jb21taXRfdGltZV9ieV9hdXRob3JfY2FjaGUpCi0g
ICAgICAgIHByZWZpeGVzX29mX2F1dGhvcnNfd2l0aF9lbWFpbCA9IG1hcChsYW1iZGEgYXV0aG9y
OiBhdXRob3Iuc3BsaXQoJ0AnKVswXSwgYXV0aG9yc193aXRoX2VtYWlsKQorICAgICAgICBhdXRo
b3JzX21pc3NpbmdfZW1haWwgPSBbYXV0aG9yIGZvciBhdXRob3IgaW4gc2VsZi5fbGFzdF9jb21t
aXRfdGltZV9ieV9hdXRob3JfY2FjaGUgaWYgYXV0aG9yLmZpbmQoJ0AnKSA9PSAtMV0KKyAgICAg
ICAgYXV0aG9yc193aXRoX2VtYWlsID0gW2F1dGhvciBmb3IgYXV0aG9yIGluIHNlbGYuX2xhc3Rf
Y29tbWl0X3RpbWVfYnlfYXV0aG9yX2NhY2hlIGlmIGF1dGhvci5maW5kKCdAJykgIT0gLTFdCisg
ICAgICAgIHByZWZpeGVzX29mX2F1dGhvcnNfd2l0aF9lbWFpbCA9IFthdXRob3Iuc3BsaXQoJ0An
KVswXSBmb3IgYXV0aG9yIGluIGF1dGhvcnNfd2l0aF9lbWFpbF0KIAogICAgICAgICBmb3IgYXV0
aG9yIGluIGF1dGhvcnNfbWlzc2luZ19lbWFpbDoKICAgICAgICAgICAgICMgRmlyc3QgY2hlY2sg
dG8gc2VlIGlmIHdlIGhhdmUgYSBtYW51YWwgbWFwcGluZyBmcm9tIGxvZ2luIHRvIGVtYWlsLgpA
QCAtMjQ1LDEwICsyNTEsMTAgQEAgY2xhc3MgQ29tbWl0dGVyTGlzdEZyb21HaXQob2JqZWN0KToK
IAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3ByaW50X3RocmVlX2NvbHVtbl9yb3cod2lk
dGhzLCB2YWx1ZXMpOgotICAgICAgICBwcmludCAiJXMlcyVzIiAlICh2YWx1ZXNbMF0ubGp1c3Qo
d2lkdGhzWzBdKSwgdmFsdWVzWzFdLmxqdXN0KHdpZHRoc1sxXSksIHZhbHVlc1syXSkKKyAgICAg
ICAgcHJpbnQoIiVzJXMlcyIgJSAodmFsdWVzWzBdLmxqdXN0KHdpZHRoc1swXSksIHZhbHVlc1sx
XS5sanVzdCh3aWR0aHNbMV0pLCB2YWx1ZXNbMl0pKQogCiAgICAgZGVmIHBvc3NpYmx5X2V4cGly
ZWRfY29tbWl0dGVycyhzZWxmLCBjb21taXR0ZXJfbGlzdCk6Ci0gICAgICAgIGF1dGhvcnNfYW5k
X2xhc3RfY29tbWl0cyA9IHNlbGYuX2xhc3RfY29tbWl0X2J5X2F1dGhvcigpLml0ZW1zKCkKKyAg
ICAgICAgYXV0aG9yc19hbmRfbGFzdF9jb21taXRzID0gbGlzdChzZWxmLl9sYXN0X2NvbW1pdF9i
eV9hdXRob3IoKS5pdGVtcygpKQogICAgICAgICBhdXRob3JzX2FuZF9sYXN0X2NvbW1pdHMuc29y
dChsYW1iZGEgYSxiOiBjbXAoYVsxXSwgYlsxXSksIHJldmVyc2U9VHJ1ZSkKICAgICAgICAgY29t
bWl0dGVyX2N1dG9mID0gZGF0ZS50b2RheSgpIC0gdGltZWRlbHRhKGRheXM9MzY1KQogICAgICAg
ICByZXRpcmVkX2F1dGhvcnNfYW5kX2xhc3RfY29tbWl0cyA9IFtdCkBAIC0yODQsOCArMjkwLDgg
QEAgY2xhc3MgQ29tbWl0dGVyTGlzdEZyb21HaXQob2JqZWN0KToKICAgICBkZWYgcHJpbnRfcG9z
c2libHlfZXhwaXJlZF9jb21taXR0ZXJzKHNlbGYsIGNvbW1pdHRlcl9saXN0KToKICAgICAgICAg
cmV0aXJlZF9hdXRob3JzX2FuZF9sYXN0X2NvbW1pdHMgPSBzZWxmLnBvc3NpYmx5X2V4cGlyZWRf
Y29tbWl0dGVycyhjb21taXR0ZXJfbGlzdCkKICAgICAgICAgY29sdW1uX3dpZHRocyA9IFsxMywg
MjVdCi0gICAgICAgIHByaW50Ci0gICAgICAgIHByaW50ICJDb21taXR0ZXJzIHdobyBoYXZlIG5v
dCBjb21taXR0ZWQgd2l0aGluIG9uZSB5ZWFyOiIKKyAgICAgICAgcHJpbnQoKQorICAgICAgICBw
cmludCgiQ29tbWl0dGVycyB3aG8gaGF2ZSBub3QgY29tbWl0dGVkIHdpdGhpbiBvbmUgeWVhcjoi
KQogICAgICAgICBzZWxmLl9wcmludF90aHJlZV9jb2x1bW5fcm93KGNvbHVtbl93aWR0aHMsICgi
TGFzdCBDb21taXQiLCAiQ29tbWl0dGVyIEVtYWlsIiwgIkNvbW1pdHRlciBSZWNvcmQiKSkKICAg
ICAgICAgZm9yIChhdXRob3IsIGxhc3RfY29tbWl0KSBpbiByZXRpcmVkX2F1dGhvcnNfYW5kX2xh
c3RfY29tbWl0czoKICAgICAgICAgICAgIGNvbW1pdHRlcl9yZWNvcmQgPSBjb21taXR0ZXJfbGlz
dC5jb21taXR0ZXJfYnlfZW1haWwoYXV0aG9yKQpAQCAtMjk2LDEwICszMDIsMTAgQEAgY2xhc3Mg
Q29tbWl0dGVyTGlzdEZyb21HaXQob2JqZWN0KToKICAgICAgICAgaW5hY3RpdmVfcmV2aWV3ZXJz
ID0gc2VsZi5wb3NzaWJseV9pbmFjdGl2ZV9yZXZpZXdlcnMoY29tbWl0dGVyX2xpc3QpCiAgICAg
ICAgIAogICAgICAgICBjb2x1bW5fd2lkdGhzID0gWzEzLCAyNV0KLSAgICAgICAgcHJpbnQKLSAg
ICAgICAgcHJpbnQgIlJldmlld2VycyB3aG8gaGF2ZSBub3QgcmV2aWV3ZWQgd2l0aGluIG9uZSB5
ZWFyOiIKKyAgICAgICAgcHJpbnQoKQorICAgICAgICBwcmludCgiUmV2aWV3ZXJzIHdobyBoYXZl
IG5vdCByZXZpZXdlZCB3aXRoaW4gb25lIHllYXI6IikKICAgICAgICAgZm9yIGNvbnRyaWJ1dG9y
IGluIGluYWN0aXZlX3Jldmlld2VyczoKLSAgICAgICAgICAgIHByaW50ICJcInt9XCIge30iLmZv
cm1hdChjb250cmlidXRvci5mdWxsX25hbWUuZW5jb2RlKCJ1dGYtOCIpLCBjb250cmlidXRvci5i
dWd6aWxsYV9lbWFpbCgpKQorICAgICAgICAgICAgcHJpbnQoIlwie31cIiB7fSIuZm9ybWF0KGNv
bnRyaWJ1dG9yLmZ1bGxfbmFtZS5lbmNvZGUoInV0Zi04IiksIGNvbnRyaWJ1dG9yLmJ1Z3ppbGxh
X2VtYWlsKCkpKQogCiAgICAgZGVmIHByaW50X2NvbW1pdHRlcnNfbWlzc2luZ19mcm9tX2NvbW1p
dHRlcl9saXN0KHNlbGYsIGNvbW1pdHRlcl9saXN0KToKICAgICAgICAgbWlzc2luZ19mcm9tX2Nv
bnRyaWJ1dG9yc19qc29uID0gW10KQEAgLTMyOCw5ICszMzQsOSBAQCBjbGFzcyBDb21taXR0ZXJM
aXN0QnVnemlsbGFDaGVja2VyKG9iamVjCiAgICAgICAgIHJldHVybiBzZWxmLl9idWd6aWxsYS5x
dWVyaWVzLmlzX2ludmFsaWRfYnVnemlsbGFfZW1haWwoY29tbWl0dGVyLmJ1Z3ppbGxhX2VtYWls
KCkpCiAKICAgICBkZWYgcHJpbnRfY29tbWl0dGVyc193aXRoX2ludmFsaWRfYnVnemlsbGFfZW1h
aWxzKHNlbGYsIGNvbW1pdHRlcl9saXN0KToKLSAgICAgICAgcHJpbnQgIyBQcmludCBhIG5ld2xp
bmUgYmVmb3JlIHdlIHN0YXJ0IGhpdHRpbmcgYnVnemlsbGEgKGl0IGxvZ3MgYWJvdXQgbG9nZ2lu
ZyBpbikuCi0gICAgICAgIHByaW50ICJDaGVja2luZyBjb21taXR0ZXIgZW1haWxzIGFnYWluc3Qg
YnVnemlsbGEgKHRoaXMgd2lsbCB0YWtlIGEgbG9uZyB0aW1lKSIKLSAgICAgICAgY29tbWl0dGVy
c193aXRoX2ludmFsaWRfYnVnemlsbGFfZW1haWwgPSBmaWx0ZXIoc2VsZi5faGFzX2ludmFsaWRf
YnVnemlsbGFfZW1haWwsIGNvbW1pdHRlcl9saXN0LmNvbW1pdHRlcnMoKSkKKyAgICAgICAgcHJp
bnQoKSAjIFByaW50IGEgbmV3bGluZSBiZWZvcmUgd2Ugc3RhcnQgaGl0dGluZyBidWd6aWxsYSAo
aXQgbG9ncyBhYm91dCBsb2dnaW5nIGluKS4KKyAgICAgICAgcHJpbnQoIkNoZWNraW5nIGNvbW1p
dHRlciBlbWFpbHMgYWdhaW5zdCBidWd6aWxsYSAodGhpcyB3aWxsIHRha2UgYSBsb25nIHRpbWUp
IikKKyAgICAgICAgY29tbWl0dGVyc193aXRoX2ludmFsaWRfYnVnemlsbGFfZW1haWwgPSBsaXN0
KGZpbHRlcihzZWxmLl9oYXNfaW52YWxpZF9idWd6aWxsYV9lbWFpbCwgY29tbWl0dGVyX2xpc3Qu
Y29tbWl0dGVycygpKSkKICAgICAgICAgcHJpbnRfbGlzdF9pZl9ub25fZW1wdHkoIkNvbW1pdHRl
cnMgd2l0aCBpbnZhbGlkIGJ1Z3ppbGxhIGVtYWlsOiIsIGNvbW1pdHRlcnNfd2l0aF9pbnZhbGlk
X2J1Z3ppbGxhX2VtYWlsKQogCiAKQEAgLTM0MSw3ICszNDcsNyBAQCBkZWYgZHVtcF9tYWlsbWFw
KGNvbW1pdHRlcl9saXN0KToKICAgICBkZWYgZm9ybWF0X2VtYWlsX3dpdGhfZ2l0c3ZuX3V1aWQo
ZW1haWwpOgogICAgICAgICByZXR1cm4gIjx7MH1AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUy
NjkxYjRkYmZjPiIuZm9ybWF0KGVtYWlsKSAgICAgICAgCiAKLSAgICBlbWFpbF90b19sZWdhY3lf
dXNlcm5hbWUgPSBkaWN0KG1hcChyZXZlcnNlZCwgQ29tbWl0dGVyTGlzdEZyb21HaXQubG9naW5f
dG9fZW1haWxfYWRkcmVzcy5pdGVtcygpKSkKKyAgICBlbWFpbF90b19sZWdhY3lfdXNlcm5hbWUg
PSBkaWN0KGxpc3QobWFwKHJldmVyc2VkLCBsaXN0KENvbW1pdHRlckxpc3RGcm9tR2l0LmxvZ2lu
X3RvX2VtYWlsX2FkZHJlc3MuaXRlbXMoKSkpKSkKICAgICBkZWYgbWFwX2VtYWlsc190b19sZWdh
Y3lfdXNlcm5hbWUoZW1haWxzKToKICAgICAgICAgbGVnYWN5X3VzZXJuYW1lID0gTm9uZQogICAg
ICAgICBmb3IgZW1haWwgaW4gZW1haWxzOgpAQCAtMzU5LDggKzM2NSw4IEBAIGRlZiBkdW1wX21h
aWxtYXAoY29tbWl0dGVyX2xpc3QpOgogICAgICAgICAgICAgb3RoZXJfZW1haWxzLmFwcGVuZChs
ZWdhY3lfdXNlcm5hbWUpCiAKICAgICAgICAgZm9yIG90aGVyX2VtYWlsIGluIG90aGVyX2VtYWls
czoKLSAgICAgICAgICAgIHByaW50IGZ1bGxfbmFtZSwgZm9ybWF0X2VtYWlsKGNhbm9uaWNhbF9l
bWFpbCksIGZvcm1hdF9lbWFpbChvdGhlcl9lbWFpbCkKLSAgICAgICAgICAgIHByaW50IGZ1bGxf
bmFtZSwgZm9ybWF0X2VtYWlsKGNhbm9uaWNhbF9lbWFpbCksIGZvcm1hdF9lbWFpbF93aXRoX3V1
aWQob3RoZXJfZW1haWwpCisgICAgICAgICAgICBwcmludChmdWxsX25hbWUsIGZvcm1hdF9lbWFp
bChjYW5vbmljYWxfZW1haWwpLCBmb3JtYXRfZW1haWwob3RoZXJfZW1haWwpKQorICAgICAgICAg
ICAgcHJpbnQoZnVsbF9uYW1lLCBmb3JtYXRfZW1haWwoY2Fub25pY2FsX2VtYWlsKSwgZm9ybWF0
X2VtYWlsX3dpdGhfdXVpZChvdGhlcl9lbWFpbCkpCiAKIAogZGVmIG1haW4oKToKQEAgLTM3NCw3
ICszODAsNyBAQCBkZWYgbWFpbigpOgogCiAgICAgY29tbWl0dGVyX2xpc3QgPSBDb21taXR0ZXJM
aXN0KCkKICAgICBpZiBvcHRpb25zLmR1bXA6Ci0gICAgICAgIHByaW50IGNvbW1pdHRlcl9saXN0
LmFzX2pzb24oKQorICAgICAgICBwcmludChjb21taXR0ZXJfbGlzdC5hc19qc29uKCkpCiAgICAg
ICAgIHJldHVybiAwCiAKICAgICBpZiBvcHRpb25zLmR1bXBfbWFpbG1hcDoKQEAgLTM4MiwyMCAr
Mzg4LDIwIEBAIGRlZiBtYWluKCk6CiAgICAgICAgIHJldHVybiAwCiAKICAgICBpZiBvcHRpb25z
LmNhbm9uaWNhbGl6ZToKLSAgICAgICAgcHJpbnQgIlVwZGF0aW5nIGNvbnRyaWJ1dG9ycy5qc29u
IGluLXBsYWNlLi4uIgorICAgICAgICBwcmludCgiVXBkYXRpbmcgY29udHJpYnV0b3JzLmpzb24g
aW4tcGxhY2UuLi4iKQogICAgICAgICBjb21taXR0ZXJfbGlzdC5yZWZvcm1hdF9pbl9wbGFjZSgp
Ci0gICAgICAgIHByaW50ICJEb25lIgorICAgICAgICBwcmludCgiRG9uZSIpCiAgICAgICAgIHJl
dHVybiAwCiAKICAgICBDb21taXR0ZXJMaXN0RnJvbU1haWxpbmdMaXN0KCkuY2hlY2tfZm9yX2Vt
YWlsc19taXNzaW5nX2Zyb21fbGlzdChjb21taXR0ZXJfbGlzdCkKICAKICAgICBpZiBub3QgR2l0
LmluX3dvcmtpbmdfZGlyZWN0b3J5KCIuIik6Ci0gICAgICAgIHByaW50ICIiIlxuXG5XQVJOSU5H
OiB2YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMgcmVxdWlyZXMgYSBnaXQgY2hlY2tvdXQuCisgICAg
ICAgIHByaW50KCIiIlxuXG5XQVJOSU5HOiB2YWxpZGF0ZS1jb21taXR0ZXItbGlzdHMgcmVxdWly
ZXMgYSBnaXQgY2hlY2tvdXQuCiBUaGUgZm9sbG93aW5nIGNoZWNrcyBhcmUgZGlzYWJsZWQ6CiAg
LSBMaXN0IG9mIGluYWN0aXZlIGNvbW1pdHRlcnMKICAtIExpc3Qgb2YgaW5hY3RpdmUgcmV2aWV3
ZXJzCiAgLSBMaXN0IG9mIGhpc3RvcmljYWwgY29tbWl0dGVycyBtaXNzaW5nIGZyb20gY29udHJp
YnV0b3JzLmpzb24KLSIiIgorIiIiKQogICAgICAgICByZXR1cm4gMQogCiAgICAgc3ZuX2NvbW1p
dHRlcl9saXN0ID0gQ29tbWl0dGVyTGlzdEZyb21HaXQoKQo=
</data>
<flag name="review"
          id="434455"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="434621"
          type_id="3"
          status="-"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>