<?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>169580</bug_id>
          
          <creation_ts>2017-03-13 19:02:54 -0700</creation_ts>
          <short_desc>Rename RootSet to CommitSet</short_desc>
          <delta_ts>2017-03-14 16:06:43 -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>Perf Dashboard</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1287456</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-13 19:02:54 -0700</bug_when>
    <thetext>Rename root_sets table to commit_sets table in the database,
and rename related classes elsewhere from RootSet to CommitSet
to more precisely reflect what they are.

This is particularly confusing once we introduce the actual custom root files user uploads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287467</commentid>
    <comment_count>1</comment_count>
      <attachid>304336</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-13 19:50:21 -0700</bug_when>
    <thetext>Created attachment 304336
Renames the table</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287470</commentid>
    <comment_count>2</comment_count>
      <attachid>304337</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-13 19:53:28 -0700</bug_when>
    <thetext>Created attachment 304337
Added migration SQL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287848</commentid>
    <comment_count>3</comment_count>
      <attachid>304337</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-14 15:45:24 -0700</bug_when>
    <thetext>Comment on attachment 304337
Added migration SQL

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287859</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-14 16:06:43 -0700</bug_when>
    <thetext>Committed r213952: &lt;http://trac.webkit.org/changeset/213952&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304336</attachid>
            <date>2017-03-13 19:50:21 -0700</date>
            <delta_ts>2017-03-13 19:53:24 -0700</delta_ts>
            <desc>Renames the table</desc>
            <filename>bug-169580-20170313195020.patch</filename>
            <type>text/plain</type>
            <size>138702</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0ODg4KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyOCBAQAorMjAxNy0wMy0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZW5hbWUgUm9vdFNldCB0byBDb21taXRTZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTU4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZWQgcm9vdF9zZXRzIHRvIGNvbW1p
dF9zZXRzIGFuZCByb290cyB0byBjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMgaW4gdGhlIGRhdGFi
YXNlIHNjaGVtYSwgYW5kIHJlbmFtZWQKKyAgICAgICAgcmVsYXRlZCBjbGFzc2VzIGluIHB1Ymxp
Yy92My8gYW5kIHRvb2xzIGFjY29yZGluZ2x5LgorCisgICAgICAgIFJvb3RTZXQsIE1lYXN1cmVt
ZW50Um9vdFNldCwgYW5kIEN1c3RvbVJvb3RTZXQgYXJlIHJlc3BlY3RpdmVseSByZW5hbWVkIHRv
IENvbW1pdFNldCwgTWVhc3VyZW1lbnRDb21taXRTZXQsCisgICAgICAgIGFuZCBDdXN0b21Db21t
aXRTZXQuCisKKyAgICAgICAgKiBicm93c2VyLXRlc3RzL2luZGV4Lmh0bWw6CisgICAgICAgICog
aW5pdC1kYXRhYmFzZS5zcWw6CisgICAgICAgICogcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5w
aHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBwdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBo
cDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZm9ybWF0X3Rlc3RfZ3JvdXApOgorICAgICAg
ICAqIHB1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwOgorICAgICAgICAo
QnVpbGRSZXF1ZXN0c0ZldGNoZXI6Ol9fY29uc3RydWN0KToKKyAgICAgICAgKEJ1aWxkUmVxdWVz
dHNGZXRjaGVyOjpyZXN1bHRzX2ludGVybmFsKToKKyAgICAgICAgKEJ1aWxkUmVxdWVzdHNGZXRj
aGVyOjpjb21taXRfc2V0cyk6IFJlbmFtZWQgZnJvbSByb290X3NldHMuCisgICAgICAgIChCdWls
ZFJlcXVlc3RzRmV0Y2hlcjo6Y29tbWl0cyk6IFJlbmFtZWQgZnJvbSByb290cy4KKyAgICAgICAg
KEJ1aWxkUmVxdWVzdHNGZXRjaGVyOjpmZXRjaF9jb21taXRzX2Zvcl9zZXRfaWZfbmVlZGVkKTog
UmVuYW1lZCBmcm9tIGZldGNoX3Jvb3RzX2Zvcl9zZXRfaWZfbmVlZGVkLgorICAgICAgICAqIHB1
YmxpYy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncm91cC5waHA6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKGVuc3VyZV9jb21taXRfc2V0cyk6IFJlbmFtZWQgZnJvbSBjb21taXRfc2V0
c19mcm9tX3Jvb3Rfc2V0cy4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9hbmFseXNp
cy1yZXN1bHRzLXZpZXdlci5qczoKKyAgICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5wcm90
b3R5cGUuYnVpbGRSb3dHcm91cHMpOgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLnBy
b3RvdHlwZS5fY29sbGVjdENvbW1pdFNldHNJblRlc3RHcm91cHMpOiBSZW5hbWVkIGZyb20gX2Nv
bGxlY3RSb290U2V0c0luVGVzdEdyb3Vwcy4KKyAgICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdl
ci5wcm90b3R5cGUuX2J1aWxkUm93c0ZvclBvaW50c0FuZFRlc3RHcm91cHMpOgorICAgICAgICAo
QW5hbHlzaXNSZXN1bHRzVmlld2VyLnByb3RvdHlwZS5fYnVpbGRSb3dzRm9yUG9pbnRzQW5kVGVz
dEdyb3Vwcyk6CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuQ29tbWl0U2V0SW5UZXN0
R3JvdXApOiBSZW5hbWVkIGZyb20gUm9vdFNldEluVGVzdEdyb3VwLgorICAgICAgICAoQW5hbHlz
aXNSZXN1bHRzVmlld2VyLkNvbW1pdFNldEluVGVzdEdyb3VwLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
cik6CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuQ29tbWl0U2V0SW5UZXN0R3JvdXAu
cHJvdG90eXBlLmNvbW1pdFNldCk6IFJlbmFtZWQgZnJvbSByb290U2V0LgorICAgICAgICAoQW5h
bHlzaXNSZXN1bHRzVmlld2VyLkNvbW1pdFNldEluVGVzdEdyb3VwLnByb3RvdHlwZS5zdWNjZWVk
aW5nQ29tbWl0U2V0KTogUmVuYW1lZCBmcm9tIHN1Y2NlZWRpbmdSb290U2V0LgorICAgICAgICAo
QW5hbHlzaXNSZXN1bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2sucHJvdG90eXBlLmNv
bnN0cnVjdG9yKToKKyAgICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFj
a2luZ0Jsb2NrLnByb3RvdHlwZS5hZGRSb3dJbmRleCk6CisgICAgICAgIChBbmFseXNpc1Jlc3Vs
dHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdCbG9jay5wcm90b3R5cGUuaXNDb21wbGV0ZSk6Cisg
ICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdCbG9jay5wcm90
b3R5cGUuc3RhcnRSb3dJbmRleCk6CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVz
dEdyb3VwU3RhY2tpbmdCbG9jay5wcm90b3R5cGUuZW5kUm93SW5kZXgpOgorICAgICAgICAoQW5h
bHlzaXNSZXN1bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2sucHJvdG90eXBlLl9jb21w
dXRlVGVzdEdyb3VwU3RhdHVzKToKKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy9jaGFy
dC1yZXZpc2lvbi1yYW5nZS5qczoKKyAgICAgICAgKENoYXJ0UmV2aXNpb25SYW5nZS5wcm90b3R5
cGUuX3JldmlzaW9uRm9yUG9pbnQpOgorICAgICAgICAoQ2hhcnRSZXZpc2lvblJhbmdlLnByb3Rv
dHlwZS5fY29tcHV0ZVJldmlzaW9uTGlzdCk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVu
dHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qczoKKyAgICAgICAgKEN1c3RvbWl6YWJs
ZVRlc3RHcm91cEZvcm0ucHJvdG90eXBlLmNvbnN0cnVjdG9yKToKKyAgICAgICAgKEN1c3RvbWl6
YWJsZVRlc3RHcm91cEZvcm0ucHJvdG90eXBlLnNldENvbW1pdFNldE1hcCk6IFJlbmFtZWQgZnJv
bSBzZXRSb290U2V0TWFwLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90
b3R5cGUuX3N1Ym1pdHRlZCk6CisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLnBy
b3RvdHlwZS5fY29tcHV0ZUNvbW1pdFNldE1hcCk6IFJlbmFtZWQgZnJvbSBfY29tcHV0ZVJvb3RT
ZXRNYXAuCisgICAgICAgIChDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5yZW5k
ZXIpOiBSZW5hbWVkIGZyb20gcmVuZGVyLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3Vw
Rm9ybS5wcm90b3R5cGUuX2NvbnN0cnVjdFJldmlzaW9uUmFkaW9CdXR0b25zKToKKyAgICAgICAg
KiBwdWJsaWMvdjMvY29tcG9uZW50cy9yZXN1bHRzLXRhYmxlLmpzOgorICAgICAgICAoUmVzdWx0
c1RhYmxlLnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlw
ZS5fY3JlYXRlUmV2aXNpb25MaXN0Q2VsbHMpOgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3Rv
dHlwZS5fY29tcHV0ZVJlcG9zaXRvcnlMaXN0KToKKyAgICAgICAgKFJlc3VsdHNUYWJsZVJvdy5w
cm90b3R5cGUuY29uc3RydWN0b3IpOgorICAgICAgICAoUmVzdWx0c1RhYmxlUm93LnByb3RvdHlw
ZS5jb21taXRTZXQpOiBSZW5hbWVkIGZyb20gcm9vdFNldC4KKyAgICAgICAgKiBwdWJsaWMvdjMv
Y29tcG9uZW50cy90ZXN0LWdyb3VwLXJlc3VsdHMtdGFibGUuanM6CisgICAgICAgIChUZXN0R3Jv
dXBSZXN1bHRzVGFibGUucHJvdG90eXBlLmJ1aWxkUm93R3JvdXBzKToKKyAgICAgICAgKiBwdWJs
aWMvdjMvaW5kZXguaHRtbDoKKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVl
c3QuanM6CisgICAgICAgIChCdWlsZFJlcXVlc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEJ1aWxkUmVxdWVzdC5wcm90b3R5cGUudXBkYXRlU2luZ2xldG9uKToKKyAgICAgICAg
KEJ1aWxkUmVxdWVzdC5wcm90b3R5cGUuY29tbWl0U2V0KTogUmVuYW1lZCBmcm9tIHJvb3RTZXQu
CisgICAgICAgIChCdWlsZFJlcXVlc3QuY29uc3RydWN0QnVpbGRSZXF1ZXN0c0Zyb21EYXRhKToK
KyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanM6IFJlbmFtZWQgZnJvbSBw
dWJsaWMvdjMvbW9kZWxzL3Jvb3Qtc2V0LmpzLgorICAgICAgICAoQ29tbWl0U2V0KTogUmVuYW1l
ZCBmcm9tIFJvb3RTZXQuCisgICAgICAgIChDb21taXRTZXQuY29udGFpbnNNdWx0aXBsZUNvbW1p
dHNGb3JSZXBvc2l0b3J5KToKKyAgICAgICAgKE1lYXN1cmVtZW50Q29tbWl0U2V0KTogUmVuYW1l
ZCBmcm9tIE1lYXN1cmVtZW50Um9vdFNldC4KKyAgICAgICAgKE1lYXN1cmVtZW50Q29tbWl0U2V0
LnByb3RvdHlwZS5uYW1lZFN0YXRpY01hcCk6CisgICAgICAgIChNZWFzdXJlbWVudENvbW1pdFNl
dC5wcm90b3R5cGUuZW5zdXJlTmFtZWRTdGF0aWNNYXApOgorICAgICAgICAoTWVhc3VyZW1lbnRD
b21taXRTZXQubmFtZWRTdGF0aWNNYXApOgorICAgICAgICAoTWVhc3VyZW1lbnRDb21taXRTZXQu
ZW5zdXJlTmFtZWRTdGF0aWNNYXApOgorICAgICAgICAoTWVhc3VyZW1lbnRDb21taXRTZXQuZW5z
dXJlU2luZ2xldG9uKToKKyAgICAgICAgKEN1c3RvbUNvbW1pdFNldCk6IFJlbmFtZWQgZnJvbSBD
dXN0b21Sb290U2V0LgorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRh
cHRvci5qczoKKyAgICAgICAgKE1lYXN1cmVtZW50QWRhcHRvci5wcm90b3R5cGUuYXBwbHlUbyk6
CisgICAgICAgICogcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzOgorICAgICAgICAoVGVz
dEdyb3VwLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90
eXBlLmFkZEJ1aWxkUmVxdWVzdCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJlcGV0
aXRpb25Db3VudCk6CisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLnJlcXVlc3RlZENvbW1p
dFNldHMpOiBSZW5hbWVkIGZyb20gcmVxdWVzdGVkUm9vdFNldHMuCisgICAgICAgIChUZXN0R3Jv
dXAucHJvdG90eXBlLnJlcXVlc3RzRm9yQ29tbWl0U2V0KTogUmVuYW1lZCBmcm9tIHJlcXVlc3Rz
Rm9yUm9vdFNldC4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUubGFiZWxGb3JDb21taXRT
ZXQpOiBSZW5hbWVkIGZyb20gbGFiZWxGb3JSb290U2V0LgorICAgICAgICAoVGVzdEdyb3VwLnBy
b3RvdHlwZS5kaWRTZXRSZXN1bHQpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5jb21w
YXJlVGVzdFJlc3VsdHMpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5fdmFsdWVzRm9y
Q29tbWl0U2V0KTogUmVuYW1lZCBmcm9tIF92YWx1ZXNGb3JSb290U2V0LgorICAgICAgICAoVGVz
dEdyb3VwLnByb3RvdHlwZS5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyk6CisgICAgICAgICog
cHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qczoKKyAgICAgICAgKEFuYWx5c2lz
VGFza1BhZ2UucHJvdG90eXBlLnJlbmRlcik6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdlLnBy
b3RvdHlwZS5fcmV0cnlDdXJyZW50VGVzdEdyb3VwKToKKyAgICAgICAgKEFuYWx5c2lzVGFza1Bh
Z2UucHJvdG90eXBlLl9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tQ2hhcnQpOgorICAgICAgICAoQW5h
bHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZU5ld1Rlc3RHcm91cEZyb21WaWV3ZXIpOgor
ICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90b3R5cGUuX2NyZWF0ZVRlc3RHcm91cEFmdGVy
VmVyaWZ5aW5nQ29tbWl0U2V0TGlzdCk6CisgICAgICAgICogc2VydmVyLXRlc3RzL2FwaS1idWls
ZC1yZXF1ZXN0cy10ZXN0cy5qczoKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21v
Y2stZGF0YS5qczoKKyAgICAgICAgKE1vY2tEYXRhLnJlc2V0VjNNb2RlbHMpOgorICAgICAgICAo
TW9ja0RhdGEuYWRkTW9ja0RhdGEpOgorICAgICAgICAoTW9ja0RhdGEuYWRkQW5vdGhlck1vY2tU
ZXN0R3JvdXApOgorICAgICAgICAqIHRvb2xzL2RldGVjdC1jaGFuZ2VzLmpzOgorICAgICAgICAo
Y3JlYXRlQW5hbHlzaXNUYXNrQW5kTm90aWZ5KToKKyAgICAgICAgKiB0b29scy9qcy9idWlsZGJv
dC1zeW5jZXIuanM6CisgICAgICAgIChCdWlsZGJvdFN5bmNlci5wcm90b3R5cGUuX3Byb3BlcnRp
ZXNGb3JCdWlsZFJlcXVlc3QpOgorICAgICAgICAoQnVpbGRib3RTeW5jZXIucHJvdG90eXBlLl9y
ZXZpc2lvblNldEZyb21Db21taXRTZXRXaXRoRXhjbHVzaW9uTGlzdCk6CisgICAgICAgICogdG9v
bHMvanMvZGF0YWJhc2UuanM6CisgICAgICAgICh0YWJsZVRvUHJlZml4TWFwKToKKyAgICAgICAg
KiB0b29scy9qcy92My1tb2RlbHMuanM6CisgICAgICAgICogdG9vbHMvc3luYy1idWlsZGJvdC5q
czoKKyAgICAgICAgKHN5bmNMb29wKToKKyAgICAgICAgKiB0b29scy9zeW5jLXdpdGgtYnVpbGRi
b3QucHk6IERlbGV0ZWQuIE5vIGxvbmdlciB1c2VkLgorICAgICAgICAqIHVuaXQtdGVzdHMvYW5h
bHlzaXMtdGFzay10ZXN0cy5qczoKKyAgICAgICAgKiB1bml0LXRlc3RzL2J1aWxkLXJlcXVlc3Qt
dGVzdHMuanM6CisgICAgICAgIChzYW1wbGVCdWlsZFJlcXVlc3REYXRhKToKKyAgICAgICAgKiB1
bml0LXRlc3RzL2J1aWxkYm90LXN5bmNlci10ZXN0cy5qczoKKyAgICAgICAgKHNhbXBsZUNvbW1p
dFNldERhdGEpOgorICAgICAgICAqIHVuaXQtdGVzdHMvbWVhc3VyZW1lbnQtYWRhcHRvci10ZXN0
cy5qczoKKyAgICAgICAgKiB1bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC10ZXN0cy5qczoKKyAg
ICAgICAgKiB1bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qczoKKyAgICAgICAg
KE1vY2tNb2RlbHMuaW5qZWN0KToKKyAgICAgICAgKiB1bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRl
c3RzLmpzOgorICAgICAgICAoc2FtcGxlVGVzdEdyb3VwKToKKwogMjAxNy0wMy0xMyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEYXRhYmFzZSdzIHF1ZXJ5IGZ1
bmN0aW9ucyBzaG91bGQgc3VwcG9ydCBxdWVyeWluZyBmb3IgYSByb3cgd2l0aCBOVUxMIHZhbHVl
CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5zcWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCShyZXZp
c2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvaW5pdC1kYXRhYmFzZS5z
cWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAgRFJPUCBUQUJMRSBJRiBFWElTVFMg
dHJpZ2dlcmFibGVfY29uZmlndQogRFJPUCBUQUJMRSBJRiBFWElTVFMgdHJpZ2dlcmFibGVfcmVw
b3NpdG9yaWVzIENBU0NBREU7CiBEUk9QIFRBQkxFIElGIEVYSVNUUyBidWdzIENBU0NBREU7CiBE
Uk9QIFRBQkxFIElGIEVYSVNUUyBhbmFseXNpc190ZXN0X2dyb3VwcyBDQVNDQURFOwotRFJPUCBU
QUJMRSBJRiBFWElTVFMgcm9vdF9zZXRzIENBU0NBREU7Ci1EUk9QIFRBQkxFIElGIEVYSVNUUyBy
b290cyBDQVNDQURFOworRFJPUCBUQUJMRSBJRiBFWElTVFMgY29tbWl0X3NldHMgQ0FTQ0FERTsK
K0RST1AgVEFCTEUgSUYgRVhJU1RTIGNvbW1pdF9zZXRfcmVsYXRpb25zaGlwcyBDQVNDQURFOwog
RFJPUCBUQUJMRSBJRiBFWElTVFMgYnVpbGRfcmVxdWVzdHMgQ0FTQ0FERTsKIERST1AgVFlQRSBJ
RiBFWElTVFMgYnVpbGRfcmVxdWVzdF9zdGF0dXNfdHlwZSBDQVNDQURFOwogCkBAIC0yNTEsMTIg
KzI1MSwxMiBAQCBDUkVBVEUgVEFCTEUgYW5hbHlzaXNfdGVzdF9ncm91cHMgKAogICAgIENPTlNU
UkFJTlQgdGVzdGdyb3VwX25hbWVfbXVzdF9iZV91bmlxdWVfZm9yX2VhY2hfdGFzayBVTklRVUUo
dGVzdGdyb3VwX3Rhc2ssIHRlc3Rncm91cF9uYW1lKSk7CiBDUkVBVEUgSU5ERVggdGVzdGdyb3Vw
X3Rhc2tfaW5kZXggT04gYW5hbHlzaXNfdGVzdF9ncm91cHModGVzdGdyb3VwX3Rhc2spOwogCi1D
UkVBVEUgVEFCTEUgcm9vdF9zZXRzICgKLSAgICByb290c2V0X2lkIHNlcmlhbCBQUklNQVJZIEtF
WSk7CitDUkVBVEUgVEFCTEUgY29tbWl0X3NldHMgKAorICAgIGNvbW1pdHNldF9pZCBzZXJpYWwg
UFJJTUFSWSBLRVkpOwogCi1DUkVBVEUgVEFCTEUgcm9vdHMgKAotICAgIHJvb3Rfc2V0IGludGVn
ZXIgUkVGRVJFTkNFUyByb290X3NldHMgTk9UIE5VTEwsCi0gICAgcm9vdF9jb21taXQgaW50ZWdl
ciBSRUZFUkVOQ0VTIGNvbW1pdHMgTk9UIE5VTEwpOworQ1JFQVRFIFRBQkxFIGNvbW1pdF9zZXRf
cmVsYXRpb25zaGlwcyAoCisgICAgY29tbWl0c2V0X3NldCBpbnRlZ2VyIFJFRkVSRU5DRVMgY29t
bWl0X3NldHMgTk9UIE5VTEwsCisgICAgY29tbWl0c2V0X2NvbW1pdCBpbnRlZ2VyIFJFRkVSRU5D
RVMgY29tbWl0cyBOT1QgTlVMTCk7CiAKIENSRUFURSBUWVBFIGJ1aWxkX3JlcXVlc3Rfc3RhdHVz
X3R5cGUgYXMgRU5VTSAoJ3BlbmRpbmcnLCAnc2NoZWR1bGVkJywgJ3J1bm5pbmcnLCAnZmFpbGVk
JywgJ2NvbXBsZXRlZCcsICdjYW5jZWxlZCcpOwogQ1JFQVRFIFRBQkxFIGJ1aWxkX3JlcXVlc3Rz
ICgKQEAgLTI2Niw3ICsyNjYsNyBAQCBDUkVBVEUgVEFCTEUgYnVpbGRfcmVxdWVzdHMgKAogICAg
IHJlcXVlc3RfdGVzdCBpbnRlZ2VyIFJFRkVSRU5DRVMgdGVzdHMgTk9UIE5VTEwsCiAgICAgcmVx
dWVzdF9ncm91cCBpbnRlZ2VyIFJFRkVSRU5DRVMgYW5hbHlzaXNfdGVzdF9ncm91cHMgTk9UIE5V
TEwsCiAgICAgcmVxdWVzdF9vcmRlciBpbnRlZ2VyIE5PVCBOVUxMLAotICAgIHJlcXVlc3Rfcm9v
dF9zZXQgaW50ZWdlciBSRUZFUkVOQ0VTIHJvb3Rfc2V0cyBOT1QgTlVMTCwKKyAgICByZXF1ZXN0
X2NvbW1pdF9zZXQgaW50ZWdlciBSRUZFUkVOQ0VTIGNvbW1pdF9zZXRzIE5PVCBOVUxMLAogICAg
IHJlcXVlc3Rfc3RhdHVzIGJ1aWxkX3JlcXVlc3Rfc3RhdHVzX3R5cGUgTk9UIE5VTEwgREVGQVVM
VCAncGVuZGluZycsCiAgICAgcmVxdWVzdF91cmwgdmFyY2hhcigxMDI0KSwKICAgICByZXF1ZXN0
X2J1aWxkIGludGVnZXIgUkVGRVJFTkNFUyBidWlsZHMsCkluZGV4OiBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwJKHJldmlzaW9uIDIxMzg2
OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9icm93c2VyLXRlc3RzL2luZGV4Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCBjb25zdCBDaGFydFRlc3QgPSB7CiAg
ICAgICAgICAgICAnbW9kZWxzL3BsYXRmb3JtLmpzJywKICAgICAgICAgICAgICdtb2RlbHMvdGVz
dC5qcycsCiAgICAgICAgICAgICAnbW9kZWxzL21ldHJpYy5qcycsCi0gICAgICAgICAgICAnbW9k
ZWxzL3Jvb3Qtc2V0LmpzJywKKyAgICAgICAgICAgICdtb2RlbHMvY29tbWl0LXNldC5qcycsCiAg
ICAgICAgICAgICAnbW9kZWxzL2NvbW1pdC1sb2cuanMnLAogICAgICAgICAgICAgJ2NvbXBvbmVu
dHMvYmFzZS5qcycsCiAgICAgICAgICAgICAnY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFydC5q
cycsCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS9idWlsZC1yZXF1
ZXN0cy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9h
cGkvYnVpbGQtcmVxdWVzdHMucGhwCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL2FwaS9idWlsZC1yZXF1ZXN0cy5waHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDggKzMzLDggQEAgZnVuY3Rpb24gbWFpbigkaWQsICRwYXRoLCAkcG9zdF9kYXRhKSB7
CiAgICAgJHJlc29sdmVfaWQgPSBhcnJheV9nZXQoJF9HRVQsICd1c2VMZWdhY3lJZFJlc29sdXRp
b24nKTsKICAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgKICAgICAgICAgJ2J1aWxkUmVxdWVz
dHMnID0+ICRyZXNvbHZlX2lkID8gJHJlcXVlc3RzX2ZldGNoZXItPnJlc3VsdHNfd2l0aF9yZXNv
bHZlZF9pZHMoKSA6ICRyZXF1ZXN0c19mZXRjaGVyLT5yZXN1bHRzKCksCi0gICAgICAgICdyb290
U2V0cycgPT4gJHJlcXVlc3RzX2ZldGNoZXItPnJvb3Rfc2V0cygpLAotICAgICAgICAncm9vdHMn
ID0+ICRyZXF1ZXN0c19mZXRjaGVyLT5yb290cygpLAorICAgICAgICAnY29tbWl0U2V0cycgPT4g
JHJlcXVlc3RzX2ZldGNoZXItPmNvbW1pdF9zZXRzKCksCisgICAgICAgICdjb21taXRzJyA9PiAk
cmVxdWVzdHNfZmV0Y2hlci0+Y29tbWl0cygpLAogICAgICkpOwogfQogCkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCShy
ZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2FwaS90
ZXN0LWdyb3Vwcy5waHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEzICs0OSwxMyBAQCBmdW5jdGlv
biBtYWluKCRwYXRoKSB7CiAgICAgZm9yZWFjaCAoJGJ1aWxkX3JlcXVlc3RzIGFzICRyZXF1ZXN0
KSB7CiAgICAgICAgICRyZXF1ZXN0X2dyb3VwID0gJiRncm91cF9ieV9pZFskcmVxdWVzdFsndGVz
dEdyb3VwJ11dOwogICAgICAgICBhcnJheV9wdXNoKCRyZXF1ZXN0X2dyb3VwWydidWlsZFJlcXVl
c3RzJ10sICRyZXF1ZXN0WydpZCddKTsKLSAgICAgICAgYXJyYXlfcHVzaCgkcmVxdWVzdF9ncm91
cFsncm9vdFNldHMnXSwgJHJlcXVlc3RbJ3Jvb3RTZXQnXSk7CisgICAgICAgIGFycmF5X3B1c2go
JHJlcXVlc3RfZ3JvdXBbJ2NvbW1pdFNldHMnXSwgJHJlcXVlc3RbJ2NvbW1pdFNldCddKTsKICAg
ICB9CiAKICAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJheSgndGVzdEdyb3VwcycgPT4gJHRlc3Rf
Z3JvdXBzLAogICAgICAgICAnYnVpbGRSZXF1ZXN0cycgPT4gJGJ1aWxkX3JlcXVlc3RzLAotICAg
ICAgICAncm9vdFNldHMnID0+ICRidWlsZF9yZXF1ZXN0c19mZXRjaGVyLT5yb290X3NldHMoKSwK
LSAgICAgICAgJ3Jvb3RzJyA9PiAkYnVpbGRfcmVxdWVzdHNfZmV0Y2hlci0+cm9vdHMoKSkpOwor
ICAgICAgICAnY29tbWl0U2V0cycgPT4gJGJ1aWxkX3JlcXVlc3RzX2ZldGNoZXItPmNvbW1pdF9z
ZXRzKCksCisgICAgICAgICdjb21taXRzJyA9PiAkYnVpbGRfcmVxdWVzdHNfZmV0Y2hlci0+Y29t
bWl0cygpKSk7CiB9CiAKIGZ1bmN0aW9uIGZvcm1hdF90ZXN0X2dyb3VwKCRncm91cF9yb3cpIHsK
QEAgLTY3LDcgKzY3LDcgQEAgZnVuY3Rpb24gZm9ybWF0X3Rlc3RfZ3JvdXAoJGdyb3VwX3Jvdykg
ewogICAgICAgICAnY3JlYXRlZEF0JyA9PiBzdHJ0b3RpbWUoJGdyb3VwX3Jvd1sndGVzdGdyb3Vw
X2NyZWF0ZWRfYXQnXSkgKiAxMDAwLAogICAgICAgICAnaGlkZGVuJyA9PiBEYXRhYmFzZTo6aXNf
dHJ1ZSgkZ3JvdXBfcm93Wyd0ZXN0Z3JvdXBfaGlkZGVuJ10pLAogICAgICAgICAnYnVpbGRSZXF1
ZXN0cycgPT4gYXJyYXkoKSwKLSAgICAgICAgJ3Jvb3RTZXRzJyA9PiBhcnJheSgpLAorICAgICAg
ICAnY29tbWl0U2V0cycgPT4gYXJyYXkoKSwKICAgICApOwogfQogCkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1
aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1ZGUvYnVpbGQtcmVxdWVzdHMtZmV0Y2hlci5waHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYsMTAgKzYsMTAgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNo
ZXIgewogICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkYikgewogICAgICAgICAkdGhpcy0+ZGIg
PSAkZGI7CiAgICAgICAgICR0aGlzLT5yb3dzID0gbnVsbDsKLSAgICAgICAgJHRoaXMtPnJvb3Rf
c2V0cyA9IGFycmF5KCk7Ci0gICAgICAgICR0aGlzLT5yb290c19ieV9pZCA9IGFycmF5KCk7Ci0g
ICAgICAgICR0aGlzLT5yb290cyA9IGFycmF5KCk7Ci0gICAgICAgICR0aGlzLT5yb290X3NldHNf
YnlfaWQgPSBhcnJheSgpOworICAgICAgICAkdGhpcy0+Y29tbWl0X3NldHMgPSBhcnJheSgpOwor
ICAgICAgICAkdGhpcy0+Y29tbWl0c19ieV9pZCA9IGFycmF5KCk7CisgICAgICAgICR0aGlzLT5j
b21taXRzID0gYXJyYXkoKTsKKyAgICAgICAgJHRoaXMtPmNvbW1pdF9zZXRzX2J5X2lkID0gYXJy
YXkoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBmZXRjaF9mb3JfdGFzaygkdGFza19pZCkgewpA
QCAtNjAsOSArNjAsOSBAQCBjbGFzcyBCdWlsZFJlcXVlc3RzRmV0Y2hlciB7CiAgICAgICAgIGZv
cmVhY2ggKCR0aGlzLT5yb3dzIGFzICRyb3cpIHsKICAgICAgICAgICAgICR0ZXN0X2lkID0gJHJv
d1sncmVxdWVzdF90ZXN0J107CiAgICAgICAgICAgICAkcGxhdGZvcm1faWQgPSAkcm93WydyZXF1
ZXN0X3BsYXRmb3JtJ107Ci0gICAgICAgICAgICAkcm9vdF9zZXRfaWQgPSAkcm93WydyZXF1ZXN0
X3Jvb3Rfc2V0J107CisgICAgICAgICAgICAkY29tbWl0X3NldF9pZCA9ICRyb3dbJ3JlcXVlc3Rf
Y29tbWl0X3NldCddOwogCi0gICAgICAgICAgICAkdGhpcy0+ZmV0Y2hfcm9vdHNfZm9yX3NldF9p
Zl9uZWVkZWQoJHJvb3Rfc2V0X2lkLCAkcmVzb2x2ZV9pZHMpOworICAgICAgICAgICAgJHRoaXMt
PmZldGNoX2NvbW1pdHNfZm9yX3NldF9pZl9uZWVkZWQoJGNvbW1pdF9zZXRfaWQsICRyZXNvbHZl
X2lkcyk7CiAKICAgICAgICAgICAgIGFycmF5X3B1c2goJHJlcXVlc3RzLCBhcnJheSgKICAgICAg
ICAgICAgICAgICAnaWQnID0+ICRyb3dbJ3JlcXVlc3RfaWQnXSwKQEAgLTcyLDcgKzcyLDcgQEAg
Y2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICAgICAgICAgICdwbGF0Zm9ybScg
PT4gJHJlc29sdmVfaWRzID8gJGlkX3RvX3BsYXRmb3JtX25hbWVbJHBsYXRmb3JtX2lkXSA6ICRw
bGF0Zm9ybV9pZCwKICAgICAgICAgICAgICAgICAndGVzdEdyb3VwJyA9PiAkcm93WydyZXF1ZXN0
X2dyb3VwJ10sCiAgICAgICAgICAgICAgICAgJ29yZGVyJyA9PiAkcm93WydyZXF1ZXN0X29yZGVy
J10sCi0gICAgICAgICAgICAgICAgJ3Jvb3RTZXQnID0+ICRyb290X3NldF9pZCwKKyAgICAgICAg
ICAgICAgICAnY29tbWl0U2V0JyA9PiAkY29tbWl0X3NldF9pZCwKICAgICAgICAgICAgICAgICAn
c3RhdHVzJyA9PiAkcm93WydyZXF1ZXN0X3N0YXR1cyddLAogICAgICAgICAgICAgICAgICd1cmwn
ID0+ICRyb3dbJ3JlcXVlc3RfdXJsJ10sCiAgICAgICAgICAgICAgICAgJ2J1aWxkJyA9PiAkcm93
WydyZXF1ZXN0X2J1aWxkJ10sCkBAIC04Miw0NSArODIsNDUgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0
c0ZldGNoZXIgewogICAgICAgICByZXR1cm4gJHJlcXVlc3RzOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uIHJvb3Rfc2V0cygpIHsKLSAgICAgICAgcmV0dXJuICR0aGlzLT5yb290X3NldHM7CisgICAg
ZnVuY3Rpb24gY29tbWl0X3NldHMoKSB7CisgICAgICAgIHJldHVybiAkdGhpcy0+Y29tbWl0X3Nl
dHM7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcm9vdHMoKSB7Ci0gICAgICAgIHJldHVybiAkdGhp
cy0+cm9vdHM7CisgICAgZnVuY3Rpb24gY29tbWl0cygpIHsKKyAgICAgICAgcmV0dXJuICR0aGlz
LT5jb21taXRzOwogICAgIH0KIAotICAgIHByaXZhdGUgZnVuY3Rpb24gZmV0Y2hfcm9vdHNfZm9y
X3NldF9pZl9uZWVkZWQoJHJvb3Rfc2V0X2lkLCAkcmVzb2x2ZV9pZHMpIHsKLSAgICAgICAgaWYg
KGFycmF5X2tleV9leGlzdHMoJHJvb3Rfc2V0X2lkLCAkdGhpcy0+cm9vdF9zZXRzX2J5X2lkKSkK
KyAgICBwcml2YXRlIGZ1bmN0aW9uIGZldGNoX2NvbW1pdHNfZm9yX3NldF9pZl9uZWVkZWQoJGNv
bW1pdF9zZXRfaWQsICRyZXNvbHZlX2lkcykgeworICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0
cygkY29tbWl0X3NldF9pZCwgJHRoaXMtPmNvbW1pdF9zZXRzX2J5X2lkKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAkcm9vdF9yb3dzID0gJHRoaXMtPmRiLT5xdWVyeV9hbmRfZmV0
Y2hfYWxsKCdTRUxFQ1QgKgotICAgICAgICAgICAgRlJPTSByb290cywgY29tbWl0cyBMRUZUIE9V
VEVSIEpPSU4gcmVwb3NpdG9yaWVzIE9OIGNvbW1pdF9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeV9p
ZAotICAgICAgICAgICAgV0hFUkUgcm9vdF9jb21taXQgPSBjb21taXRfaWQgQU5EIHJvb3Rfc2V0
ID0gJDEnLCBhcnJheSgkcm9vdF9zZXRfaWQpKTsKKyAgICAgICAgJGNvbW1pdF9yb3dzID0gJHRo
aXMtPmRiLT5xdWVyeV9hbmRfZmV0Y2hfYWxsKCdTRUxFQ1QgKgorICAgICAgICAgICAgRlJPTSBj
b21taXRfc2V0X3JlbGF0aW9uc2hpcHMsIGNvbW1pdHMgTEVGVCBPVVRFUiBKT0lOIHJlcG9zaXRv
cmllcyBPTiBjb21taXRfcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlfaWQKKyAgICAgICAgICAgIFdI
RVJFIGNvbW1pdHNldF9jb21taXQgPSBjb21taXRfaWQgQU5EIGNvbW1pdHNldF9zZXQgPSAkMScs
IGFycmF5KCRjb21taXRfc2V0X2lkKSk7CiAKLSAgICAgICAgJHJvb3RfaWRzID0gYXJyYXkoKTsK
LSAgICAgICAgZm9yZWFjaCAoJHJvb3Rfcm93cyBhcyAkcm93KSB7CisgICAgICAgICRjb21taXRf
aWRzID0gYXJyYXkoKTsKKyAgICAgICAgZm9yZWFjaCAoJGNvbW1pdF9yb3dzIGFzICRyb3cpIHsK
ICAgICAgICAgICAgICRyZXBvc2l0b3J5X2lkID0gJHJlc29sdmVfaWRzID8gJHJvd1sncmVwb3Np
dG9yeV9uYW1lJ10gOiAkcm93WydyZXBvc2l0b3J5X2lkJ107CiAgICAgICAgICAgICAkcmV2aXNp
b24gPSAkcm93Wydjb21taXRfcmV2aXNpb24nXTsKICAgICAgICAgICAgICRjb21taXRfdGltZSA9
ICRyb3dbJ2NvbW1pdF90aW1lJ107Ci0gICAgICAgICAgICBhcnJheV9wdXNoKCRyb290X2lkcywg
JHJvd1snY29tbWl0X2lkJ10pOworICAgICAgICAgICAgYXJyYXlfcHVzaCgkY29tbWl0X2lkcywg
JHJvd1snY29tbWl0X2lkJ10pOwogCi0gICAgICAgICAgICAkcm9vdF9pZCA9ICRyb3dbJ2NvbW1p
dF9pZCddOwotICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHJvb3RfaWQsICR0aGlz
LT5yb290c19ieV9pZCkpCisgICAgICAgICAgICAkY29tbWl0X2lkID0gJHJvd1snY29tbWl0X2lk
J107CisgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkY29tbWl0X2lkLCAkdGhpcy0+
Y29tbWl0c19ieV9pZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg
IGFycmF5X3B1c2goJHRoaXMtPnJvb3RzLCBhcnJheSgKLSAgICAgICAgICAgICAgICAnaWQnID0+
ICRyb290X2lkLAorICAgICAgICAgICAgYXJyYXlfcHVzaCgkdGhpcy0+Y29tbWl0cywgYXJyYXko
CisgICAgICAgICAgICAgICAgJ2lkJyA9PiAkY29tbWl0X2lkLAogICAgICAgICAgICAgICAgICdy
ZXBvc2l0b3J5JyA9PiAkcmVwb3NpdG9yeV9pZCwKICAgICAgICAgICAgICAgICAncmV2aXNpb24n
ID0+ICRyZXZpc2lvbiwKICAgICAgICAgICAgICAgICAndGltZScgPT4gRGF0YWJhc2U6OnRvX2pz
X3RpbWUoJGNvbW1pdF90aW1lKSkpOwogCi0gICAgICAgICAgICAkdGhpcy0+cm9vdHNfYnlfaWRb
JHJvb3RfaWRdID0gVFJVRTsKKyAgICAgICAgICAgICR0aGlzLT5jb21taXRzX2J5X2lkWyRjb21t
aXRfaWRdID0gVFJVRTsKICAgICAgICAgfQogCi0gICAgICAgICR0aGlzLT5yb290X3NldHNfYnlf
aWRbJHJvb3Rfc2V0X2lkXSA9IFRSVUU7CisgICAgICAgICR0aGlzLT5jb21taXRfc2V0c19ieV9p
ZFskY29tbWl0X3NldF9pZF0gPSBUUlVFOwogCi0gICAgICAgIGFycmF5X3B1c2goJHRoaXMtPnJv
b3Rfc2V0cywgYXJyYXkoJ2lkJyA9PiAkcm9vdF9zZXRfaWQsICdyb290cycgPT4gJHJvb3RfaWRz
KSk7CisgICAgICAgIGFycmF5X3B1c2goJHRoaXMtPmNvbW1pdF9zZXRzLCBhcnJheSgnaWQnID0+
ICRjb21taXRfc2V0X2lkLCAnY29tbWl0cycgPT4gJGNvbW1pdF9pZHMpKTsKICAgICB9CiB9CiAK
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3Jl
YXRlLXRlc3QtZ3JvdXAucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwCShyZXZpc2lvbiAy
MTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBp
L2NyZWF0ZS10ZXN0LWdyb3VwLnBocAkod29ya2luZyBjb3B5KQpAQCAtOSwxMyArOSwxMyBAQCBm
dW5jdGlvbiBtYWluKCkgewogCiAgICAgJHRhc2tfaWQgPSBhcnJheV9nZXQoJGRhdGEsICd0YXNr
Jyk7CiAgICAgJG5hbWUgPSBhcnJheV9nZXQoJGRhdGEsICduYW1lJyk7Ci0gICAgJHJvb3Rfc2V0
cyA9IGFycmF5X2dldCgkZGF0YSwgJ3Jvb3RTZXRzJyk7CisgICAgJGNvbW1pdF9zZXRzX2luZm8g
PSBhcnJheV9nZXQoJGRhdGEsICdjb21taXRTZXRzJyk7CiAgICAgJHJlcGV0aXRpb25fY291bnQg
PSBpbnR2YWwoYXJyYXlfZ2V0KCRkYXRhLCAncmVwZXRpdGlvbkNvdW50JywgMSkpOwogCiAgICAg
aWYgKCEkbmFtZSkKICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdNaXNzaW5nTmFtZScpOwotICAg
IGlmICghJHJvb3Rfc2V0cykKLSAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdNaXNzaW5nUm9vdFNl
dHMnKTsKKyAgICBpZiAoISRjb21taXRfc2V0c19pbmZvKQorICAgICAgICBleGl0X3dpdGhfZXJy
b3IoJ01pc3NpbmdDb21taXRTZXRzJyk7CiAgICAgaWYgKCRyZXBldGl0aW9uX2NvdW50IDwgMSkK
ICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkUmVwZXRpdGlvbkNvdW50JywgYXJyYXko
J3JlcGV0aXRpb25Db3VudCcgPT4gJHJlcGV0aXRpb25fY291bnQpKTsKIApAQCAtMjYsMTYgKzI2
LDE2IEBAIGZ1bmN0aW9uIG1haW4oKSB7CiAgICAgaWYgKCEkdHJpZ2dlcmFibGUpCiAgICAgICAg
IGV4aXRfd2l0aF9lcnJvcignVHJpZ2dlcmFibGVOb3RGb3VuZEZvclRhc2snLCBhcnJheSgndGFz
aycgPT4gJHRhc2tfaWQpKTsKIAotICAgICRjb21taXRfc2V0cyA9IGNvbW1pdF9zZXRzX2Zyb21f
cm9vdF9zZXRzKCRkYiwgJHJvb3Rfc2V0cyk7CisgICAgJGNvbW1pdF9zZXRzID0gZW5zdXJlX2Nv
bW1pdF9zZXRzKCRkYiwgJGNvbW1pdF9zZXRzX2luZm8pOwogCiAgICAgJGRiLT5iZWdpbl90cmFu
c2FjdGlvbigpOwogCi0gICAgJHJvb3Rfc2V0X2lkX2xpc3QgPSBhcnJheSgpOworICAgICRjb21t
aXRfc2V0X2lkX2xpc3QgPSBhcnJheSgpOwogICAgIGZvcmVhY2ggKCRjb21taXRfc2V0cyBhcyAk
Y29tbWl0X2xpc3QpIHsKLSAgICAgICAgJHJvb3Rfc2V0X2lkID0gJGRiLT5pbnNlcnRfcm93KCdy
b290X3NldHMnLCAncm9vdHNldCcsIGFycmF5KCkpOworICAgICAgICAkY29tbWl0X3NldF9pZCA9
ICRkYi0+aW5zZXJ0X3JvdygnY29tbWl0X3NldHMnLCAnY29tbWl0c2V0JywgYXJyYXkoKSk7CiAg
ICAgICAgIGZvcmVhY2ggKCRjb21taXRfbGlzdCBhcyAkY29tbWl0KQotICAgICAgICAgICAgJGRi
LT5pbnNlcnRfcm93KCdyb290cycsICdyb290JywgYXJyYXkoJ3NldCcgPT4gJHJvb3Rfc2V0X2lk
LCAnY29tbWl0JyA9PiAkY29tbWl0KSwgJ2NvbW1pdCcpOwotICAgICAgICBhcnJheV9wdXNoKCRy
b290X3NldF9pZF9saXN0LCAkcm9vdF9zZXRfaWQpOworICAgICAgICAgICAgJGRiLT5pbnNlcnRf
cm93KCdjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMnLCAnY29tbWl0c2V0JywgYXJyYXkoJ3NldCcg
PT4gJGNvbW1pdF9zZXRfaWQsICdjb21taXQnID0+ICRjb21taXQpLCAnY29tbWl0Jyk7CisgICAg
ICAgIGFycmF5X3B1c2goJGNvbW1pdF9zZXRfaWRfbGlzdCwgJGNvbW1pdF9zZXRfaWQpOwogICAg
IH0KIAogICAgICRncm91cF9pZCA9ICRkYi0+aW5zZXJ0X3JvdygnYW5hbHlzaXNfdGVzdF9ncm91
cHMnLCAndGVzdGdyb3VwJywKQEAgLTQzLDE0ICs0MywxNCBAQCBmdW5jdGlvbiBtYWluKCkgewog
CiAgICAgJG9yZGVyID0gMDsKICAgICBmb3IgKCRpID0gMDsgJGkgPCAkcmVwZXRpdGlvbl9jb3Vu
dDsgJGkrKykgewotICAgICAgICBmb3JlYWNoICgkcm9vdF9zZXRfaWRfbGlzdCBhcyAkcm9vdF9z
ZXRfaWQpIHsKKyAgICAgICAgZm9yZWFjaCAoJGNvbW1pdF9zZXRfaWRfbGlzdCBhcyAkY29tbWl0
X3NldF9pZCkgewogICAgICAgICAgICAgJGRiLT5pbnNlcnRfcm93KCdidWlsZF9yZXF1ZXN0cycs
ICdyZXF1ZXN0JywgYXJyYXkoCiAgICAgICAgICAgICAgICAgJ3RyaWdnZXJhYmxlJyA9PiAkdHJp
Z2dlcmFibGVbJ2lkJ10sCiAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJyA9PiAkdHJpZ2dlcmFi
bGVbJ3BsYXRmb3JtJ10sCiAgICAgICAgICAgICAgICAgJ3Rlc3QnID0+ICR0cmlnZ2VyYWJsZVsn
dGVzdCddLAogICAgICAgICAgICAgICAgICdncm91cCcgPT4gJGdyb3VwX2lkLAogICAgICAgICAg
ICAgICAgICdvcmRlcicgPT4gJG9yZGVyLAotICAgICAgICAgICAgICAgICdyb290X3NldCcgPT4g
JHJvb3Rfc2V0X2lkKSk7CisgICAgICAgICAgICAgICAgJ2NvbW1pdF9zZXQnID0+ICRjb21taXRf
c2V0X2lkKSk7CiAgICAgICAgICAgICAkb3JkZXIrKzsKICAgICAgICAgfQogICAgIH0KQEAgLTYw
LDEzICs2MCwxMyBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgIGV4aXRfd2l0aF9zdWNjZXNzKGFy
cmF5KCd0ZXN0R3JvdXBJZCcgPT4gJGdyb3VwX2lkKSk7CiB9CiAKLWZ1bmN0aW9uIGNvbW1pdF9z
ZXRzX2Zyb21fcm9vdF9zZXRzKCRkYiwgJHJvb3Rfc2V0cykgeworZnVuY3Rpb24gZW5zdXJlX2Nv
bW1pdF9zZXRzKCRkYiwgJGNvbW1pdF9zZXRzX2luZm8pIHsKICAgICAkcmVwb3NpdG9yeV9uYW1l
X3RvX2lkID0gYXJyYXkoKTsKICAgICBmb3JlYWNoICgkZGItPmZldGNoX3RhYmxlKCdyZXBvc2l0
b3JpZXMnKSBhcyAkcm93KQogICAgICAgICAkcmVwb3NpdG9yeV9uYW1lX3RvX2lkWyRyb3dbJ3Jl
cG9zaXRvcnlfbmFtZSddXSA9ICRyb3dbJ3JlcG9zaXRvcnlfaWQnXTsKIAogICAgICRjb21taXRf
c2V0cyA9IGFycmF5KCk7Ci0gICAgZm9yZWFjaCAoJHJvb3Rfc2V0cyBhcyAkcmVwb3NpdG9yeV9u
YW1lID0+ICRyZXZpc2lvbnMpIHsKKyAgICBmb3JlYWNoICgkY29tbWl0X3NldHNfaW5mbyBhcyAk
cmVwb3NpdG9yeV9uYW1lID0+ICRyZXZpc2lvbnMpIHsKICAgICAgICAgJHJlcG9zaXRvcnlfaWQg
PSBhcnJheV9nZXQoJHJlcG9zaXRvcnlfbmFtZV90b19pZCwgJHJlcG9zaXRvcnlfbmFtZSk7CiAg
ICAgICAgIGlmICghJHJlcG9zaXRvcnlfaWQpCiAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3Io
J1JlcG9zaXRvcnlOb3RGb3VuZCcsIGFycmF5KCduYW1lJyA9PiAkcmVwb3NpdG9yeV9uYW1lKSk7
CkBAIC04Myw3ICs4Myw3IEBAIGZ1bmN0aW9uIGNvbW1pdF9zZXRzX2Zyb21fcm9vdF9zZXRzKCRk
YiwKICAgICAkY29tbWl0X2NvdW50X3Blcl9zZXQgPSBjb3VudCgkY29tbWl0X3NldHNbMF0pOwog
ICAgIGZvcmVhY2ggKCRjb21taXRfc2V0cyBhcyAkY29tbWl0cykgewogICAgICAgICBpZiAoJGNv
bW1pdF9jb3VudF9wZXJfc2V0ICE9IGNvdW50KCRjb21taXRzKSkKLSAgICAgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignSW52YWxpZFJvb3RTZXRzJywgYXJyYXkoJ3Jvb3RTZXRzJyA9PiAkcm9vdF9z
ZXRzKSk7CisgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRDb21taXRTZXRzJywg
YXJyYXkoJ2NvbW1pdFNldHMnID0+ICRjb21taXRfc2V0cykpOwogICAgIH0KIAogICAgIHJldHVy
biAkY29tbWl0X3NldHM7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9pbmRleC5odG1sCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgUnVuIHRvb2xzL2J1bmRsZS12My1zY3JpcHRzIHRvIHNwZWVkIHVwIAogICAgICAgICA8c2Ny
aXB0IHNyYz0ibW9kZWxzL2FuYWx5c2lzLXRhc2suanMiPjwvc2NyaXB0PgogICAgICAgICA8c2Ny
aXB0IHNyYz0ibW9kZWxzL3Rlc3QtZ3JvdXAuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0
IHNyYz0ibW9kZWxzL2J1aWxkLXJlcXVlc3QuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0
IHNyYz0ibW9kZWxzL3Jvb3Qtc2V0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Im1vZGVscy9jb21taXQtc2V0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9Im1v
ZGVscy90cmlnZ2VyYWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2Rl
bHMvbWFuaWZlc3QuanMiPjwvc2NyaXB0PgogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3YzL2NvbXBvbmVudHMvYW5hbHlzaXMtcmVzdWx0cy12aWV3ZXIuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2Fu
YWx5c2lzLXJlc3VsdHMtdmlld2VyLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvYW5hbHlzaXMtcmVzdWx0cy12aWV3
ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTg1LDIxICs4NSwyMSBAQCBjbGFzcyBBbmFseXNpc1Jl
c3VsdHNWaWV3ZXIgZXh0ZW5kcyBSZXN1CiAgICAgICAgIEluc3RydW1lbnRhdGlvbi5zdGFydE1l
YXN1cmluZ1RpbWUoJ0FuYWx5c2lzUmVzdWx0c1ZpZXdlcicsICdidWlsZFJvd0dyb3VwcycpOwog
CiAgICAgICAgIHZhciB0ZXN0R3JvdXBzID0gdGhpcy5fdGVzdEdyb3VwcyB8fCBbXTsKLSAgICAg
ICAgdmFyIHJvb3RTZXRzSW5UZXN0R3JvdXBzID0gdGhpcy5fY29sbGVjdFJvb3RTZXRzSW5UZXN0
R3JvdXBzKHRlc3RHcm91cHMpOworICAgICAgICB2YXIgY29tbWl0U2V0c0luVGVzdEdyb3VwcyA9
IHRoaXMuX2NvbGxlY3RDb21taXRTZXRzSW5UZXN0R3JvdXBzKHRlc3RHcm91cHMpOwogCi0gICAg
ICAgIHZhciByb3dUb01hdGNoaW5nUm9vdFNldHMgPSBuZXcgTWFwOwotICAgICAgICB2YXIgcm93
TGlzdCA9IHRoaXMuX2J1aWxkUm93c0ZvclBvaW50c0FuZFRlc3RHcm91cHMocm9vdFNldHNJblRl
c3RHcm91cHMsIHJvd1RvTWF0Y2hpbmdSb290U2V0cyk7CisgICAgICAgIHZhciByb3dUb01hdGNo
aW5nQ29tbWl0U2V0cyA9IG5ldyBNYXA7CisgICAgICAgIHZhciByb3dMaXN0ID0gdGhpcy5fYnVp
bGRSb3dzRm9yUG9pbnRzQW5kVGVzdEdyb3Vwcyhjb21taXRTZXRzSW5UZXN0R3JvdXBzLCByb3dU
b01hdGNoaW5nQ29tbWl0U2V0cyk7CiAKICAgICAgICAgdmFyIHRlc3RHcm91cExheW91dE1hcCA9
IG5ldyBNYXA7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgcm93TGlzdC5mb3JF
YWNoKGZ1bmN0aW9uIChyb3csIHJvd0luZGV4KSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2hpbmdS
b290U2V0cyA9IHJvd1RvTWF0Y2hpbmdSb290U2V0cy5nZXQocm93KTsKLSAgICAgICAgICAgIGlm
ICghbWF0Y2hpbmdSb290U2V0cykgeworICAgICAgICAgICAgdmFyIG1hdGNoaW5nQ29tbWl0U2V0
cyA9IHJvd1RvTWF0Y2hpbmdDb21taXRTZXRzLmdldChyb3cpOworICAgICAgICAgICAgaWYgKCFt
YXRjaGluZ0NvbW1pdFNldHMpIHsKICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChyb3cg
aW5zdGFuY2VvZiBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuRXhwYW5kYWJsZVJvdyk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKHZhciBl
bnRyeSBvZiBtYXRjaGluZ1Jvb3RTZXRzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBlbnRyeSBv
ZiBtYXRjaGluZ0NvbW1pdFNldHMpIHsKICAgICAgICAgICAgICAgICB2YXIgdGVzdEdyb3VwID0g
ZW50cnkudGVzdEdyb3VwKCk7CiAKICAgICAgICAgICAgICAgICB2YXIgYmxvY2sgPSB0ZXN0R3Jv
dXBMYXlvdXRNYXAuZ2V0KHRlc3RHcm91cCk7CkBAIC0xMzAsODAgKzEzMCw4MCBAQCBjbGFzcyBB
bmFseXNpc1Jlc3VsdHNWaWV3ZXIgZXh0ZW5kcyBSZXN1CiAgICAgICAgIHJldHVybiBbe3Jvd3M6
IHJvd0xpc3R9XTsKICAgICB9CiAKLSAgICBfY29sbGVjdFJvb3RTZXRzSW5UZXN0R3JvdXBzKHRl
c3RHcm91cHMpCisgICAgX2NvbGxlY3RDb21taXRTZXRzSW5UZXN0R3JvdXBzKHRlc3RHcm91cHMp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Rlc3RHcm91cHMpCiAgICAgICAgICAgICByZXR1
cm4gW107CiAKLSAgICAgICAgdmFyIHJvb3RTZXRzSW5UZXN0R3JvdXBzID0gW107CisgICAgICAg
IHZhciBjb21taXRTZXRzSW5UZXN0R3JvdXBzID0gW107CiAgICAgICAgIGZvciAodmFyIGdyb3Vw
IG9mIHRoaXMuX3Rlc3RHcm91cHMpIHsKLSAgICAgICAgICAgIHZhciBzb3J0ZWRTZXRzID0gZ3Jv
dXAucmVxdWVzdGVkUm9vdFNldHMoKTsKKyAgICAgICAgICAgIHZhciBzb3J0ZWRTZXRzID0gZ3Jv
dXAucmVxdWVzdGVkQ29tbWl0U2V0cygpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzb3J0ZWRTZXRzLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIHJvb3RTZXRzSW5UZXN0
R3JvdXBzLnB1c2gobmV3IEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5Sb290U2V0SW5UZXN0R3JvdXAo
Z3JvdXAsIHNvcnRlZFNldHNbaV0sIHNvcnRlZFNldHNbaSArIDFdKSk7CisgICAgICAgICAgICAg
ICAgY29tbWl0U2V0c0luVGVzdEdyb3Vwcy5wdXNoKG5ldyBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIu
Q29tbWl0U2V0SW5UZXN0R3JvdXAoZ3JvdXAsIHNvcnRlZFNldHNbaV0sIHNvcnRlZFNldHNbaSAr
IDFdKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gcm9vdFNldHNJblRlc3RHcm91cHM7
CisgICAgICAgIHJldHVybiBjb21taXRTZXRzSW5UZXN0R3JvdXBzOwogICAgIH0KIAotICAgIF9i
dWlsZFJvd3NGb3JQb2ludHNBbmRUZXN0R3JvdXBzKHJvb3RTZXRzSW5UZXN0R3JvdXBzLCByb3dU
b01hdGNoaW5nUm9vdFNldHMpCisgICAgX2J1aWxkUm93c0ZvclBvaW50c0FuZFRlc3RHcm91cHMo
Y29tbWl0U2V0c0luVGVzdEdyb3Vwcywgcm93VG9NYXRjaGluZ0NvbW1pdFNldHMpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zdGFydFBvaW50LnNlcmllcyA9PSB0aGlzLl9l
bmRQb2ludC5zZXJpZXMpOwogICAgICAgICB2YXIgcm93TGlzdCA9IFtdOwogICAgICAgICB2YXIg
cG9pbnRBZnRlckVuZCA9IHRoaXMuX2VuZFBvaW50LnNlcmllcy5uZXh0UG9pbnQodGhpcy5fZW5k
UG9pbnQpOwotICAgICAgICB2YXIgcm9vdFNldHNXaXRoUG9pbnRzID0gbmV3IFNldDsKKyAgICAg
ICAgdmFyIGNvbW1pdFNldHNXaXRoUG9pbnRzID0gbmV3IFNldDsKICAgICAgICAgdmFyIHBvaW50
SW5kZXggPSAwOwogICAgICAgICB2YXIgcHJldmlvdXNQb2ludDsKICAgICAgICAgZm9yICh2YXIg
cG9pbnQgPSB0aGlzLl9zdGFydFBvaW50OyBwb2ludCAmJiBwb2ludCAhPSBwb2ludEFmdGVyRW5k
OyBwb2ludCA9IHBvaW50LnNlcmllcy5uZXh0UG9pbnQocG9pbnQpLCBwb2ludEluZGV4KyspIHsK
LSAgICAgICAgICAgIHZhciByb290U2V0SW5Qb2ludCA9IHBvaW50LnJvb3RTZXQoKTsKLSAgICAg
ICAgICAgIHZhciBtYXRjaGluZ1Jvb3RTZXRzID0gW107Ci0gICAgICAgICAgICBmb3IgKHZhciBl
bnRyeSBvZiByb290U2V0c0luVGVzdEdyb3VwcykgewotICAgICAgICAgICAgICAgIGlmIChyb290
U2V0SW5Qb2ludC5lcXVhbHMoZW50cnkucm9vdFNldCgpKSAmJiAhcm9vdFNldHNXaXRoUG9pbnRz
LmhhcyhlbnRyeSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdSb290U2V0cy5wdXNo
KGVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgcm9vdFNldHNXaXRoUG9pbnRzLmFkZChlbnRy
eSk7CisgICAgICAgICAgICBjb25zdCBjb21taXRTZXRJblBvaW50ID0gcG9pbnQuY29tbWl0U2V0
KCk7CisgICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NvbW1pdFNldHMgPSBbXTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGVudHJ5IG9mIGNvbW1pdFNldHNJblRlc3RHcm91cHMpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoY29tbWl0U2V0SW5Qb2ludC5lcXVhbHMoZW50cnkuY29tbWl0U2V0KCkpICYm
ICFjb21taXRTZXRzV2l0aFBvaW50cy5oYXMoZW50cnkpKSB7CisgICAgICAgICAgICAgICAgICAg
IG1hdGNoaW5nQ29tbWl0U2V0cy5wdXNoKGVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgY29t
bWl0U2V0c1dpdGhQb2ludHMuYWRkKGVudHJ5KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIHZhciBoYXNNYXRjaGluZ1Rlc3RHcm91cCA9ICEhbWF0Y2hp
bmdSb290U2V0cy5sZW5ndGg7CisgICAgICAgICAgICBjb25zdCBoYXNNYXRjaGluZ1Rlc3RHcm91
cCA9ICEhbWF0Y2hpbmdDb21taXRTZXRzLmxlbmd0aDsKICAgICAgICAgICAgIGlmICghaGFzTWF0
Y2hpbmdUZXN0R3JvdXAgJiYgIXRoaXMuX2V4cGFuZGVkUG9pbnRzLmhhcyhwb2ludCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHZhciByb3cgPSBuZXcgUmVzdWx0
c1RhYmxlUm93KHBvaW50SW5kZXgudG9TdHJpbmcoKSwgcm9vdFNldEluUG9pbnQpOworICAgICAg
ICAgICAgY29uc3Qgcm93ID0gbmV3IFJlc3VsdHNUYWJsZVJvdyhwb2ludEluZGV4LnRvU3RyaW5n
KCksIGNvbW1pdFNldEluUG9pbnQpOwogICAgICAgICAgICAgcm93LnNldFJlc3VsdChwb2ludCk7
CiAKICAgICAgICAgICAgIGlmIChwcmV2aW91c1BvaW50ICYmIHByZXZpb3VzUG9pbnQuc2VyaWVz
Lm5leHRQb2ludChwcmV2aW91c1BvaW50KSAhPSBwb2ludCkKICAgICAgICAgICAgICAgICByb3dM
aXN0LnB1c2gobmV3IEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5FeHBhbmRhYmxlUm93KHRoaXMuX2V4
cGFuZEJldHdlZW4uYmluZCh0aGlzLCBwcmV2aW91c1BvaW50LCBwb2ludCkpKTsKICAgICAgICAg
ICAgIHByZXZpb3VzUG9pbnQgPSBwb2ludDsKIAotICAgICAgICAgICAgcm93VG9NYXRjaGluZ1Jv
b3RTZXRzLnNldChyb3csIG1hdGNoaW5nUm9vdFNldHMpOworICAgICAgICAgICAgcm93VG9NYXRj
aGluZ0NvbW1pdFNldHMuc2V0KHJvdywgbWF0Y2hpbmdDb21taXRTZXRzKTsKICAgICAgICAgICAg
IHJvd0xpc3QucHVzaChyb3cpOwogICAgICAgICB9CiAKLSAgICAgICAgcm9vdFNldHNJblRlc3RH
cm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHsKLSAgICAgICAgICAgIGlmIChyb290U2V0
c1dpdGhQb2ludHMuaGFzKGVudHJ5KSkKKyAgICAgICAgY29tbWl0U2V0c0luVGVzdEdyb3Vwcy5m
b3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkgeworICAgICAgICAgICAgaWYgKGNvbW1pdFNldHNXaXRo
UG9pbnRzLmhhcyhlbnRyeSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd0xpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAg
ICAgICB2YXIgcm93ID0gcm93TGlzdFtpXTsKLSAgICAgICAgICAgICAgICBpZiAoIShyb3cgaW5z
dGFuY2VvZiBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuRXhwYW5kYWJsZVJvdykgJiYgcm93LnJvb3RT
ZXQoKS5lcXVhbHMoZW50cnkucm9vdFNldCgpKSkgewotICAgICAgICAgICAgICAgICAgICByb3dU
b01hdGNoaW5nUm9vdFNldHMuZ2V0KHJvdykucHVzaChlbnRyeSk7CisgICAgICAgICAgICAgICAg
aWYgKCEocm93IGluc3RhbmNlb2YgQW5hbHlzaXNSZXN1bHRzVmlld2VyLkV4cGFuZGFibGVSb3cp
ICYmIHJvdy5jb21taXRTZXQoKS5lcXVhbHMoZW50cnkuY29tbWl0U2V0KCkpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJvd1RvTWF0Y2hpbmdDb21taXRTZXRzLmdldChyb3cpLnB1c2goZW50cnkp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICB2YXIgZ3JvdXBUaW1lID0gZW50cnkucm9vdFNldCgpLmxh
dGVzdENvbW1pdFRpbWUoKTsKLSAgICAgICAgICAgIHZhciBuZXdSb3cgPSBuZXcgUmVzdWx0c1Rh
YmxlUm93KG51bGwsIGVudHJ5LnJvb3RTZXQoKSk7Ci0gICAgICAgICAgICByb3dUb01hdGNoaW5n
Um9vdFNldHMuc2V0KG5ld1JvdywgW2VudHJ5XSk7CisgICAgICAgICAgICB2YXIgZ3JvdXBUaW1l
ID0gZW50cnkuY29tbWl0U2V0KCkubGF0ZXN0Q29tbWl0VGltZSgpOworICAgICAgICAgICAgdmFy
IG5ld1JvdyA9IG5ldyBSZXN1bHRzVGFibGVSb3cobnVsbCwgZW50cnkuY29tbWl0U2V0KCkpOwor
ICAgICAgICAgICAgcm93VG9NYXRjaGluZ0NvbW1pdFNldHMuc2V0KG5ld1JvdywgW2VudHJ5XSk7
CiAKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93TGlzdC5sZW5ndGg7IGkrKykg
ewogICAgICAgICAgICAgICAgIGlmIChyb3dMaXN0W2ldIGluc3RhbmNlb2YgQW5hbHlzaXNSZXN1
bHRzVmlld2VyLkV4cGFuZGFibGVSb3cpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5LnN1Y2NlZWRpbmdSb290U2V0KCkgJiYgcm93TGlz
dFtpXS5yb290U2V0KCkuZXF1YWxzKGVudHJ5LnN1Y2NlZWRpbmdSb290U2V0KCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGVudHJ5LnN1Y2NlZWRpbmdDb21taXRTZXQoKSAmJiByb3dMaXN0W2ld
LmNvbW1pdFNldCgpLmVxdWFscyhlbnRyeS5zdWNjZWVkaW5nQ29tbWl0U2V0KCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJvd0xpc3Quc3BsaWNlKGksIDAsIG5ld1Jvdyk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICB2
YXIgcm93VGltZSA9IHJvd0xpc3RbaV0ucm9vdFNldCgpLmxhdGVzdENvbW1pdFRpbWUoKTsKKyAg
ICAgICAgICAgICAgICB2YXIgcm93VGltZSA9IHJvd0xpc3RbaV0uY29tbWl0U2V0KCkubGF0ZXN0
Q29tbWl0VGltZSgpOwogICAgICAgICAgICAgICAgIGlmIChyb3dUaW1lID4gZ3JvdXBUaW1lKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJvd0xpc3Quc3BsaWNlKGksIDAsIG5ld1Jvdyk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxMSwxMyArMjExLDEzIEBAIGNsYXNzIEFuYWx5
c2lzUmVzdWx0c1ZpZXdlciBleHRlbmRzIFJlc3UKIAogICAgICAgICAgICAgICAgIGlmIChyb3dU
aW1lID09IGdyb3VwVGltZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBNaXNzaW5nIHNvbWUg
Y29tbWl0cy4gRG8gYXMgYmVzdCBhcyB3ZSBjYW4gdG8gYXZvaWQgZ29pbmcgYmFja3dhcmRzIGlu
IHRpbWUuCi0gICAgICAgICAgICAgICAgICAgIHZhciByZXBvc2l0b3JpZXNJbk5ld1JvdyA9IGVu
dHJ5LnJvb3RTZXQoKS5yZXBvc2l0b3JpZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJl
cG9zaXRvcmllc0luTmV3Um93ID0gZW50cnkuY29tbWl0U2V0KCkucmVwb3NpdG9yaWVzKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpOyBqIDwgcm93TGlzdC5sZW5ndGg7IGor
KykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvd0xpc3Rbal0gaW5zdGFuY2VvZiBB
bmFseXNpc1Jlc3VsdHNWaWV3ZXIuRXhwYW5kYWJsZVJvdykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlcG9z
aXRvcnkgb2YgcmVwb3NpdG9yaWVzSW5OZXdSb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbmV3Q29tbWl0ID0gZW50cnkucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJvd0NvbW1pdCA9
IHJvd0xpc3Rbal0ucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0NvbW1pdCA9IGVudHJ5LmNvbW1pdFNl
dCgpLmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHJvd0NvbW1pdCA9IHJvd0xpc3Rbal0uY29tbWl0U2V0KCkuY29tbWl0Rm9y
UmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXJvd0NvbW1pdCB8fCBuZXdDb21taXQudGltZSgpIDwgcm93Q29tbWl0LnRpbWUoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dMaXN0LnNwbGljZShqLCAwLCBuZXdSb3cp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjcsOCArMjI3
LDggQEAgY2xhc3MgQW5hbHlzaXNSZXN1bHRzVmlld2VyIGV4dGVuZHMgUmVzdQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIG5ld1JvdyA9IG5ldyBS
ZXN1bHRzVGFibGVSb3cobnVsbCwgZW50cnkucm9vdFNldCgpKTsKLSAgICAgICAgICAgIHJvd1Rv
TWF0Y2hpbmdSb290U2V0cy5zZXQobmV3Um93LCBbZW50cnldKTsKKyAgICAgICAgICAgIHZhciBu
ZXdSb3cgPSBuZXcgUmVzdWx0c1RhYmxlUm93KG51bGwsIGVudHJ5LmNvbW1pdFNldCgpKTsKKyAg
ICAgICAgICAgIHJvd1RvTWF0Y2hpbmdDb21taXRTZXRzLnNldChuZXdSb3csIFtlbnRyeV0pOwog
ICAgICAgICAgICAgcm93TGlzdC5wdXNoKG5ld1Jvdyk7CiAgICAgICAgIH0pOwogCkBAIC0zNTUs
MjYgKzM1NSwyNiBAQCBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuRXhwYW5kYWJsZVJvdyA9IGNsCiAg
ICAgfQogfQogCi1BbmFseXNpc1Jlc3VsdHNWaWV3ZXIuUm9vdFNldEluVGVzdEdyb3VwID0gY2xh
c3MgewotICAgIGNvbnN0cnVjdG9yKHRlc3RHcm91cCwgcm9vdFNldCwgc3VjY2VlZGluZ1Jvb3RT
ZXQpCitBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuQ29tbWl0U2V0SW5UZXN0R3JvdXAgPSBjbGFzcyB7
CisgICAgY29uc3RydWN0b3IodGVzdEdyb3VwLCBjb21taXRTZXQsIHN1Y2NlZWRpbmdDb21taXRT
ZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0ZXN0R3JvdXAgaW5zdGFuY2VvZiBU
ZXN0R3JvdXApOwotICAgICAgICBjb25zb2xlLmFzc2VydChyb290U2V0IGluc3RhbmNlb2YgUm9v
dFNldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldCBpbnN0YW5jZW9mIENvbW1p
dFNldCk7CiAgICAgICAgIHRoaXMuX3Rlc3RHcm91cCA9IHRlc3RHcm91cDsKLSAgICAgICAgdGhp
cy5fcm9vdFNldCA9IHJvb3RTZXQ7Ci0gICAgICAgIHRoaXMuX3N1Y2NlZWRpbmdSb290U2V0ID0g
c3VjY2VlZGluZ1Jvb3RTZXQ7CisgICAgICAgIHRoaXMuX2NvbW1pdFNldCA9IGNvbW1pdFNldDsK
KyAgICAgICAgdGhpcy5fc3VjY2VlZGluZ0NvbW1pdFNldCA9IHN1Y2NlZWRpbmdDb21taXRTZXQ7
CiAgICAgfQogCiAgICAgdGVzdEdyb3VwKCkgeyByZXR1cm4gdGhpcy5fdGVzdEdyb3VwOyB9Ci0g
ICAgcm9vdFNldCgpIHsgcmV0dXJuIHRoaXMuX3Jvb3RTZXQ7IH0KLSAgICBzdWNjZWVkaW5nUm9v
dFNldCgpIHsgcmV0dXJuIHRoaXMuX3N1Y2NlZWRpbmdSb290U2V0OyB9CisgICAgY29tbWl0U2V0
KCkgeyByZXR1cm4gdGhpcy5fY29tbWl0U2V0OyB9CisgICAgc3VjY2VlZGluZ0NvbW1pdFNldCgp
IHsgcmV0dXJuIHRoaXMuX3N1Y2NlZWRpbmdDb21taXRTZXQ7IH0KIH0KIAogQW5hbHlzaXNSZXN1
bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2sgPSBjbGFzcyB7CiAgICAgY29uc3RydWN0
b3IodGVzdEdyb3VwLCBjbGFzc05hbWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdGhpcy5f
dGVzdEdyb3VwID0gdGVzdEdyb3VwOwotICAgICAgICB0aGlzLl9yb290U2V0SW5kZXhSb3dJbmRl
eE1hcCA9IFtdOworICAgICAgICB0aGlzLl9jb21taXRTZXRJbmRleFJvd0luZGV4TWFwID0gW107
CiAgICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICAgICAgdGhpcy5fbGFi
ZWwgPSBudWxsOwogICAgICAgICB0aGlzLl90aXRsZSA9IG51bGw7CkBAIC0zODIsMTAgKzM4Miwx
MCBAQCBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdCCiAgICAgICAgIHRo
aXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAgICAgfQogCi0gICAgYWRkUm93SW5kZXgocm9vdFNl
dEluVGVzdEdyb3VwLCByb3dJbmRleCkKKyAgICBhZGRSb3dJbmRleChjb21taXRTZXRJblRlc3RH
cm91cCwgcm93SW5kZXgpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChyb290U2V0SW5U
ZXN0R3JvdXAgaW5zdGFuY2VvZiBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuUm9vdFNldEluVGVzdEdy
b3VwKTsKLSAgICAgICAgdGhpcy5fcm9vdFNldEluZGV4Um93SW5kZXhNYXAucHVzaCh7cm9vdFNl
dDogcm9vdFNldEluVGVzdEdyb3VwLnJvb3RTZXQoKSwgcm93SW5kZXg6IHJvd0luZGV4fSk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbW1pdFNldEluVGVzdEdyb3VwIGluc3RhbmNlb2YgQW5h
bHlzaXNSZXN1bHRzVmlld2VyLkNvbW1pdFNldEluVGVzdEdyb3VwKTsKKyAgICAgICAgdGhpcy5f
Y29tbWl0U2V0SW5kZXhSb3dJbmRleE1hcC5wdXNoKHtjb21taXRTZXQ6IGNvbW1pdFNldEluVGVz
dEdyb3VwLmNvbW1pdFNldCgpLCByb3dJbmRleDogcm93SW5kZXh9KTsKICAgICB9CiAKICAgICB0
ZXN0R3JvdXAoKSB7IHJldHVybiB0aGlzLl90ZXN0R3JvdXA7IH0KQEAgLTQwMiwxMCArNDAyLDEw
IEBAIEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0IKICAgICAgICAgfSwg
Q29tcG9uZW50QmFzZS5jcmVhdGVMaW5rKHRoaXMuX2xhYmVsLCB0aGlzLl90aXRsZSwgdGhpcy5f
Y2FsbGJhY2spKTsKICAgICB9CiAKLSAgICBpc0NvbXBsZXRlKCkgeyByZXR1cm4gdGhpcy5fcm9v
dFNldEluZGV4Um93SW5kZXhNYXAubGVuZ3RoID49IDI7IH0KKyAgICBpc0NvbXBsZXRlKCkgeyBy
ZXR1cm4gdGhpcy5fY29tbWl0U2V0SW5kZXhSb3dJbmRleE1hcC5sZW5ndGggPj0gMjsgfQogCi0g
ICAgc3RhcnRSb3dJbmRleCgpIHsgcmV0dXJuIHRoaXMuX3Jvb3RTZXRJbmRleFJvd0luZGV4TWFw
WzBdLnJvd0luZGV4OyB9Ci0gICAgZW5kUm93SW5kZXgoKSB7IHJldHVybiB0aGlzLl9yb290U2V0
SW5kZXhSb3dJbmRleE1hcFt0aGlzLl9yb290U2V0SW5kZXhSb3dJbmRleE1hcC5sZW5ndGggLSAx
XS5yb3dJbmRleDsgfQorICAgIHN0YXJ0Um93SW5kZXgoKSB7IHJldHVybiB0aGlzLl9jb21taXRT
ZXRJbmRleFJvd0luZGV4TWFwWzBdLnJvd0luZGV4OyB9CisgICAgZW5kUm93SW5kZXgoKSB7IHJl
dHVybiB0aGlzLl9jb21taXRTZXRJbmRleFJvd0luZGV4TWFwW3RoaXMuX2NvbW1pdFNldEluZGV4
Um93SW5kZXhNYXAubGVuZ3RoIC0gMV0ucm93SW5kZXg7IH0KICAgICBpc1RoaW4oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fY29tcHV0ZVRlc3RHcm91cFN0YXR1cygpOwpAQCAtNDE3LDEwICs0MTcs
MTAgQEAgQW5hbHlzaXNSZXN1bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQgogICAgICAgICBp
ZiAodGhpcy5fc3RhdHVzIHx8ICF0aGlzLmlzQ29tcGxldGUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yb290U2V0SW5kZXhSb3dJbmRleE1h
cC5sZW5ndGggPD0gMik7IC8vIEZJWE1FOiBTdXBwb3J0IGhhdmluZyBtb3JlIHJvb3Qgc2V0cy4K
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29tbWl0U2V0SW5kZXhSb3dJbmRleE1hcC5s
ZW5ndGggPD0gMik7IC8vIEZJWE1FOiBTdXBwb3J0IGhhdmluZyBtb3JlIHJvb3Qgc2V0cy4KIAog
ICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fdGVzdEdyb3VwLmNvbXBhcmVUZXN0UmVzdWx0cygK
LSAgICAgICAgICAgIHRoaXMuX3Jvb3RTZXRJbmRleFJvd0luZGV4TWFwWzBdLnJvb3RTZXQsIHRo
aXMuX3Jvb3RTZXRJbmRleFJvd0luZGV4TWFwWzFdLnJvb3RTZXQpOworICAgICAgICAgICAgdGhp
cy5fY29tbWl0U2V0SW5kZXhSb3dJbmRleE1hcFswXS5jb21taXRTZXQsIHRoaXMuX2NvbW1pdFNl
dEluZGV4Um93SW5kZXhNYXBbMV0uY29tbWl0U2V0KTsKIAogICAgICAgICB0aGlzLl9sYWJlbCA9
IHJlc3VsdC5sYWJlbDsKICAgICAgICAgdGhpcy5fdGl0bGUgPSByZXN1bHQuZnVsbExhYmVsOwpJ
bmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0
LXJldmlzaW9uLXJhbmdlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1yZXZpc2lvbi1yYW5nZS5qcwkocmV2aXNpb24g
MjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRz
L2NoYXJ0LXJldmlzaW9uLXJhbmdlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAg
QEAgY2xhc3MgQ2hhcnRSZXZpc2lvblJhbmdlIHsKICAgICB7CiAgICAgICAgIGlmICghcG9pbnQg
fHwgIXJlcG9zaXRvcnkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgY29uc3Qg
cm9vdFNldCA9IHBvaW50LnJvb3RTZXQoKTsKLSAgICAgICAgaWYgKCFyb290U2V0KQorICAgICAg
ICBjb25zdCBjb21taXRTZXQgPSBwb2ludC5jb21taXRTZXQoKTsKKyAgICAgICAgaWYgKCFjb21t
aXRTZXQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgY29uc3QgY29tbWl0ID0g
cm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAgICAgICBjb25zdCBj
b21taXQgPSBjb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKICAgICAg
ICAgaWYgKCFjb21taXQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJu
IGNvbW1pdC5yZXZpc2lvbigpOwpAQCAtNTIsMTQgKzUyLDE0IEBAIGNsYXNzIENoYXJ0UmV2aXNp
b25SYW5nZSB7CiAgICAgICAgIGlmICghY3VycmVudFBvaW50KQogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAKLSAgICAgICAgY29uc3QgY3VycmVudFJvb3RTZXQgPSBjdXJyZW50UG9pbnQucm9v
dFNldCgpOwotICAgICAgICBjb25zdCBwcmV2aW91c1Jvb3RTZXQgPSBwcmV2aW91c1BvaW50ID8g
cHJldmlvdXNQb2ludC5yb290U2V0KCkgOiBudWxsOworICAgICAgICBjb25zdCBjdXJyZW50Q29t
bWl0U2V0ID0gY3VycmVudFBvaW50LmNvbW1pdFNldCgpOworICAgICAgICBjb25zdCBwcmV2aW91
c0NvbW1pdFNldCA9IHByZXZpb3VzUG9pbnQgPyBwcmV2aW91c1BvaW50LmNvbW1pdFNldCgpIDog
bnVsbDsKIAotICAgICAgICBjb25zdCByZXBvc2l0b3JpZXNJbkN1cnJlbnRSb290U2V0ID0gUmVw
b3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKGN1cnJlbnRSb290U2V0LnJl
cG9zaXRvcmllcygpKTsKKyAgICAgICAgY29uc3QgcmVwb3NpdG9yaWVzSW5DdXJyZW50Q29tbWl0
U2V0ID0gUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKGN1cnJlbnRD
b21taXRTZXQucmVwb3NpdG9yaWVzKCkpOwogICAgICAgICBjb25zdCByZXZpc2lvbkxpc3QgPSBb
XTsKLSAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiByZXBvc2l0b3JpZXNJbkN1cnJlbnRS
b290U2V0KSB7Ci0gICAgICAgICAgICBsZXQgY3VycmVudENvbW1pdCA9IGN1cnJlbnRSb290U2V0
LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7Ci0gICAgICAgICAgICBsZXQgcHJldmlv
dXNDb21taXQgPSBwcmV2aW91c1Jvb3RTZXQgPyBwcmV2aW91c1Jvb3RTZXQuY29tbWl0Rm9yUmVw
b3NpdG9yeShyZXBvc2l0b3J5KSA6IG51bGw7CisgICAgICAgIGZvciAobGV0IHJlcG9zaXRvcnkg
b2YgcmVwb3NpdG9yaWVzSW5DdXJyZW50Q29tbWl0U2V0KSB7CisgICAgICAgICAgICBsZXQgY3Vy
cmVudENvbW1pdCA9IGN1cnJlbnRDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5KTsKKyAgICAgICAgICAgIGxldCBwcmV2aW91c0NvbW1pdCA9IHByZXZpb3VzQ29tbWl0U2V0
ID8gcHJldmlvdXNDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSA6IG51
bGw7CiAgICAgICAgICAgICByZXZpc2lvbkxpc3QucHVzaChjdXJyZW50Q29tbWl0LmRpZmYocHJl
dmlvdXNDb21taXQpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmV2aXNpb25MaXN0OwpJ
bmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3Rv
bWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZv
cm0uanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3JtLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC00LDcgKzQsNyBAQCBjbGFzcyBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtIGV4
dGVuZHMgCiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKICAgICAgICAgc3VwZXIoJ2N1c3RvbWl6
YWJsZS10ZXN0LWdyb3VwLWZvcm0nKTsKLSAgICAgICAgdGhpcy5fcm9vdFNldE1hcCA9IG51bGw7
CisgICAgICAgIHRoaXMuX2NvbW1pdFNldE1hcCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3JlbmRl
cmVkUmVwb3NpdG9yeWxpc3QgPSBudWxsOwogICAgICAgICB0aGlzLl9jdXN0b21pemVkID0gZmFs
c2U7CiAgICAgICAgIHRoaXMuX25hbWVDb250cm9sID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxl
Y3RvcignLm5hbWUnKTsKQEAgLTEyLDE2ICsxMiwxNiBAQCBjbGFzcyBDdXN0b21pemFibGVUZXN0
R3JvdXBGb3JtIGV4dGVuZHMgCiAgICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3Io
J2EnKS5vbmNsaWNrID0gdGhpcy5fY3VzdG9taXplLmJpbmQodGhpcyk7CiAgICAgfQogCi0gICAg
c2V0Um9vdFNldE1hcChtYXApCisgICAgc2V0Q29tbWl0U2V0TWFwKG1hcCkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX3Jvb3RTZXRNYXAgPSBtYXA7CisgICAgICAgIHRoaXMuX2NvbW1pdFNldE1hcCA9
IG1hcDsKICAgICAgICAgdGhpcy5fY3VzdG9taXplZCA9IGZhbHNlOwogICAgIH0KIAogICAgIF9z
dWJtaXR0ZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N0YXJ0Q2FsbGJhY2spCi0gICAg
ICAgICAgICB0aGlzLl9zdGFydENhbGxiYWNrKHRoaXMuX25hbWVDb250cm9sLnZhbHVlLCB0aGlz
Ll9yZXBldGl0aW9uQ291bnQsIHRoaXMuX2NvbXB1dGVSb290U2V0TWFwKCkpOworICAgICAgICAg
ICAgdGhpcy5fc3RhcnRDYWxsYmFjayh0aGlzLl9uYW1lQ29udHJvbC52YWx1ZSwgdGhpcy5fcmVw
ZXRpdGlvbkNvdW50LCB0aGlzLl9jb21wdXRlQ29tbWl0U2V0TWFwKCkpOwogICAgIH0KIAogICAg
IF9jdXN0b21pemUoZXZlbnQpCkBAIC0zMSwyNCArMzEsMjQgQEAgY2xhc3MgQ3VzdG9taXphYmxl
VGVzdEdyb3VwRm9ybSBleHRlbmRzIAogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwog
ICAgIH0KIAotICAgIF9jb21wdXRlUm9vdFNldE1hcCgpCisgICAgX2NvbXB1dGVDb21taXRTZXRN
YXAoKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcm9vdFNldE1hcCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbW1pdFNldE1hcCk7CiAgICAgICAgIGlmICgh
dGhpcy5fY3VzdG9taXplZCkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9yb290U2V0TWFwOwor
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1pdFNldE1hcDsKIAogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9yZW5kZXJlZFJlcG9zaXRvcnlsaXN0KTsKICAgICAgICAgdmFyIG1hcCA9
IHt9OwotICAgICAgICBmb3IgKHZhciBsYWJlbCBpbiB0aGlzLl9yb290U2V0TWFwKSB7Ci0gICAg
ICAgICAgICB2YXIgY3VzdG9tUm9vdFNldCA9IG5ldyBDdXN0b21Sb290U2V0OworICAgICAgICBm
b3IgKHZhciBsYWJlbCBpbiB0aGlzLl9jb21taXRTZXRNYXApIHsKKyAgICAgICAgICAgIHZhciBj
dXN0b21Db21taXRTZXQgPSBuZXcgQ3VzdG9tQ29tbWl0U2V0OwogICAgICAgICAgICAgZm9yICh2
YXIgcmVwb3NpdG9yeSBvZiB0aGlzLl9yZW5kZXJlZFJlcG9zaXRvcnlsaXN0KSB7CiAgICAgICAg
ICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0uX2NsYXNz
Rm9yTGFiZWxBbmRSZXBvc2l0b3J5KGxhYmVsLCByZXBvc2l0b3J5KTsKICAgICAgICAgICAgICAg
ICB2YXIgcmV2aXNpb24gPSB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuJyArIGNsYXNz
TmFtZSkudmFsdWU7CiAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocmV2aXNpb24pOwog
ICAgICAgICAgICAgICAgIGlmIChyZXZpc2lvbikKLSAgICAgICAgICAgICAgICAgICAgY3VzdG9t
Um9vdFNldC5zZXRSZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSwgcmV2aXNpb24pOwor
ICAgICAgICAgICAgICAgICAgICBjdXN0b21Db21taXRTZXQuc2V0UmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1h
cFtsYWJlbF0gPSBjdXN0b21Sb290U2V0OworICAgICAgICAgICAgbWFwW2xhYmVsXSA9IGN1c3Rv
bUNvbW1pdFNldDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbWFwOwogICAgIH0KQEAgLTU2
LDcgKzU2LDcgQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIAogICAg
IHJlbmRlcigpCiAgICAgewogICAgICAgICBzdXBlci5yZW5kZXIoKTsKLSAgICAgICAgdmFyIG1h
cCA9IHRoaXMuX3Jvb3RTZXRNYXA7CisgICAgICAgIHZhciBtYXAgPSB0aGlzLl9jb21taXRTZXRN
YXA7CiAKICAgICAgICAgdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignYnV0dG9uJykuZGlz
YWJsZWQgPSAhKG1hcCAmJiB0aGlzLl9uYW1lQ29udHJvbC52YWx1ZSk7CiAgICAgICAgIHRoaXMu
Y29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5jdXN0b21pemUtbGluaycpLnN0eWxlLmRpc3BsYXkg
PSAhbWFwID8gJ25vbmUnIDogbnVsbDsKQEAgLTY4LDExICs2OCwxMSBAQCBjbGFzcyBDdXN0b21p
emFibGVUZXN0R3JvdXBGb3JtIGV4dGVuZHMgCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hcCk7
CiAKICAgICAgICAgdmFyIHJlcG9zaXRvcnlTZXQgPSBuZXcgU2V0OwotICAgICAgICB2YXIgcm9v
dFNldExhYmVscyA9IFtdOworICAgICAgICB2YXIgY29tbWl0U2V0TGFiZWxzID0gW107CiAgICAg
ICAgIGZvciAodmFyIGxhYmVsIGluIG1hcCkgewogICAgICAgICAgICAgZm9yICh2YXIgcmVwb3Np
dG9yeSBvZiBtYXBbbGFiZWxdLnJlcG9zaXRvcmllcygpKQogICAgICAgICAgICAgICAgIHJlcG9z
aXRvcnlTZXQuYWRkKHJlcG9zaXRvcnkpOwotICAgICAgICAgICAgcm9vdFNldExhYmVscy5wdXNo
KGxhYmVsKTsKKyAgICAgICAgICAgIGNvbW1pdFNldExhYmVscy5wdXNoKGxhYmVsKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX3JlbmRlcmVkUmVwb3NpdG9yeWxpc3QgPSBSZXBvc2l0b3J5
LnNvcnRCeU5hbWVQcmVmZXJyaW5nT25lc1dpdGhVUkwoQXJyYXkuZnJvbShyZXBvc2l0b3J5U2V0
LnZhbHVlcygpKSk7CkBAIC04Miw4ICs4Miw4IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91
cEZvcm0gZXh0ZW5kcyAKICAgICAgICAgICAgIGVsZW1lbnQoJ3RhYmxlJywge2NsYXNzOiAnY3Vz
dG9tLXRhYmxlJ30sIFsKICAgICAgICAgICAgICAgICBlbGVtZW50KCd0aGVhZCcsCiAgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQoJ3RyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVt
ZW50KCd0ZCcsICdSZXBvc2l0b3J5JyksIHJvb3RTZXRMYWJlbHMubWFwKGZ1bmN0aW9uIChsYWJl
bCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCd0ZCcsIHtj
b2xzcGFuOiByb290U2V0TGFiZWxzLmxlbmd0aCArIDF9LCBsYWJlbCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBbZWxlbWVudCgndGQnLCAnUmVwb3NpdG9yeScpLCBjb21taXRTZXRMYWJlbHMu
bWFwKGZ1bmN0aW9uIChsYWJlbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtZW50KCd0ZCcsIHtjb2xzcGFuOiBjb21taXRTZXRMYWJlbHMubGVuZ3RoICsgMX0sIGxh
YmVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0pXSkpLAogICAgICAgICAgICAgICAgIGVs
ZW1lbnQoJ3Rib2R5JywKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZWRSZXBvc2l0
b3J5bGlzdC5tYXAoZnVuY3Rpb24gKHJlcG9zaXRvcnkpIHsKQEAgLTk2LDE4ICs5NiwxOCBAQCBj
bGFzcyBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtIGV4dGVuZHMgCiAKICAgICBzdGF0aWMgX2Ns
YXNzRm9yTGFiZWxBbmRSZXBvc2l0b3J5KGxhYmVsLCByZXBvc2l0b3J5KSB7IHJldHVybiBsYWJl
bCArICctJyArIHJlcG9zaXRvcnkuaWQoKTsgfQogCi0gICAgc3RhdGljIF9jb25zdHJ1Y3RSZXZp
c2lvblJhZGlvQnV0dG9ucyhyb290U2V0TWFwLCByZXBvc2l0b3J5LCByb3dMYWJlbCkKKyAgICBz
dGF0aWMgX2NvbnN0cnVjdFJldmlzaW9uUmFkaW9CdXR0b25zKGNvbW1pdFNldE1hcCwgcmVwb3Np
dG9yeSwgcm93TGFiZWwpCiAgICAgewogICAgICAgICB2YXIgY2xhc3NOYW1lID0gdGhpcy5fY2xh
c3NGb3JMYWJlbEFuZFJlcG9zaXRvcnkocm93TGFiZWwsIHJlcG9zaXRvcnkpOwogICAgICAgICB2
YXIgZ3JvdXBOYW1lID0gY2xhc3NOYW1lICsgJy1ncm91cCc7CiAgICAgICAgIHZhciBlbGVtZW50
ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OwogICAgICAgICB2YXIgcmV2aXNpb25FZGl0
b3IgPSBlbGVtZW50KCdpbnB1dCcsIHtjbGFzczogY2xhc3NOYW1lfSk7CiAKLSAgICAgICAgdmFy
IG5vZGVzID0gW107Ci0gICAgICAgIGZvciAodmFyIGxhYmVsVG9DaG9vc2UgaW4gcm9vdFNldE1h
cCkgewotICAgICAgICAgICAgdmFyIGNvbW1pdCA9IHJvb3RTZXRNYXBbbGFiZWxUb0Nob29zZV0u
Y29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKLSAgICAgICAgICAgIHZhciBjaGVja2Vk
ID0gbGFiZWxUb0Nob29zZSA9PSByb3dMYWJlbDsKLSAgICAgICAgICAgIHZhciByYWRpb0J1dHRv
biA9IHRoaXMuX2NyZWF0ZVJhZGlvQnV0dG9uKGdyb3VwTmFtZSwgcmV2aXNpb25FZGl0b3IsIGNv
bW1pdCwgY2hlY2tlZCk7CisgICAgICAgIGNvbnN0IG5vZGVzID0gW107CisgICAgICAgIGZvciAo
bGV0IGxhYmVsVG9DaG9vc2UgaW4gY29tbWl0U2V0TWFwKSB7CisgICAgICAgICAgICBjb25zdCBj
b21taXQgPSBjb21taXRTZXRNYXBbbGFiZWxUb0Nob29zZV0uY29tbWl0Rm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBsYWJlbFRvQ2hvb3NlID09
IHJvd0xhYmVsOworICAgICAgICAgICAgY29uc3QgcmFkaW9CdXR0b24gPSB0aGlzLl9jcmVhdGVS
YWRpb0J1dHRvbihncm91cE5hbWUsIHJldmlzaW9uRWRpdG9yLCBjb21taXQsIGNoZWNrZWQpOwog
ICAgICAgICAgICAgaWYgKGNoZWNrZWQpCiAgICAgICAgICAgICAgICAgcmV2aXNpb25FZGl0b3Iu
dmFsdWUgPSBjb21taXQgPyBjb21taXQucmV2aXNpb24oKSA6ICcnOwogICAgICAgICAgICAgbm9k
ZXMucHVzaChlbGVtZW50KCd0ZCcsIGVsZW1lbnQoJ2xhYmVsJywgW3JhZGlvQnV0dG9uLCBsYWJl
bFRvQ2hvb3NlXSkpKTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMv
Y29tcG9uZW50cy9yZXN1bHRzLXRhYmxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9yZXN1bHRzLXRhYmxlLmpzCShyZXZpc2lv
biAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVu
dHMvcmVzdWx0cy10YWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBjbGFz
cyBSZXN1bHRzVGFibGUgZXh0ZW5kcyBDb21wb25lbnRCYXNlCiAgICAgICAgICAgICAgICAgaWYg
KHNlbGYuX3JhbmdlU2VsZWN0b3JMYWJlbHMpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgbGFiZWwgb2Ygc2VsZi5fcmFuZ2VTZWxlY3RvckxhYmVscykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGNvbnRlbnQgPSAnJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
b3cucm9vdFNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93LmNvbW1pdFNl
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IGVsZW1lbnQoJ2lu
cHV0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3R5cGU6ICdyYWRpbycsIG5h
bWU6IGxhYmVsLCBvbmNoYW5nZTogc2VsZi5fcmFuZ2VTZWxlY3RvckNsaWNrZWQuYmluZChzZWxm
LCBsYWJlbCwgcm93KX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNjYsNyArNjYs
NyBAQCBjbGFzcyBSZXN1bHRzVGFibGUgZXh0ZW5kcyBDb21wb25lbnRCYXNlCiAgICAgICAgICAg
ICAgICAgICAgIGNlbGxzLnB1c2goZWxlbWVudCgndGQnLCB7Y2xhc3M6ICd3aG9sZS1yb3ctbGFi
ZWwnLCBjb2xzcGFuOiByZXBvc2l0b3J5TGlzdC5sZW5ndGggKyAxfSwgcm93LmxhYmVsRm9yV2hv
bGVSb3coKSkpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBj
ZWxscy5wdXNoKGVsZW1lbnQoJ3RkJywgcm93LnJlc3VsdENvbnRlbnQoYmFyR3JhcGhHcm91cCkp
KTsKLSAgICAgICAgICAgICAgICAgICAgY2VsbHMucHVzaChzZWxmLl9jcmVhdGVSZXZpc2lvbkxp
c3RDZWxscyhyZXBvc2l0b3J5TGlzdCwgcmV2aXNpb25TdXByZXNzaW9uQ291bnQsIGdyb3VwLCBy
b3cucm9vdFNldCgpLCByb3dJbmRleCkpOworICAgICAgICAgICAgICAgICAgICBjZWxscy5wdXNo
KHNlbGYuX2NyZWF0ZVJldmlzaW9uTGlzdENlbGxzKHJlcG9zaXRvcnlMaXN0LCByZXZpc2lvblN1
cHJlc3Npb25Db3VudCwgZ3JvdXAsIHJvdy5jb21taXRTZXQoKSwgcm93SW5kZXgpKTsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCgndHInLCBbY2Vs
bHMsIHJvdy5hZGRpdGlvbmFsQ29sdW1ucygpXSk7CkBAIC05MiwyMyArOTIsMjMgQEAgY2xhc3Mg
UmVzdWx0c1RhYmxlIGV4dGVuZHMgQ29tcG9uZW50QmFzZQogICAgICAgICBJbnN0cnVtZW50YXRp
b24uZW5kTWVhc3VyaW5nVGltZSgnUmVzdWx0c1RhYmxlJywgJ3JlbmRlcicpOwogICAgIH0KIAot
ICAgIF9jcmVhdGVSZXZpc2lvbkxpc3RDZWxscyhyZXBvc2l0b3J5TGlzdCwgcmV2aXNpb25TdXBy
ZXNzaW9uQ291bnQsIHRlc3RHcm91cCwgcm9vdFNldCwgcm93SW5kZXgpCisgICAgX2NyZWF0ZVJl
dmlzaW9uTGlzdENlbGxzKHJlcG9zaXRvcnlMaXN0LCByZXZpc2lvblN1cHJlc3Npb25Db3VudCwg
dGVzdEdyb3VwLCBjb21taXRTZXQsIHJvd0luZGV4KQogICAgIHsKICAgICAgICAgdmFyIGVsZW1l
bnQgPSBDb21wb25lbnRCYXNlLmNyZWF0ZUVsZW1lbnQ7CiAgICAgICAgIHZhciBsaW5rID0gQ29t
cG9uZW50QmFzZS5jcmVhdGVMaW5rOwogICAgICAgICB2YXIgY2VsbHMgPSBbXTsKICAgICAgICAg
Zm9yICh2YXIgcmVwb3NpdG9yeSBvZiByZXBvc2l0b3J5TGlzdCkgewotICAgICAgICAgICAgdmFy
IGNvbW1pdCA9IHJvb3RTZXQgPyByb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9y
eSkgOiBudWxsOworICAgICAgICAgICAgdmFyIGNvbW1pdCA9IGNvbW1pdFNldCA/IGNvbW1pdFNl
dC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIDogbnVsbDsKIAogICAgICAgICAgICAg
aWYgKHJldmlzaW9uU3VwcmVzc2lvbkNvdW50W3JlcG9zaXRvcnkuaWQoKV0pIHsKICAgICAgICAg
ICAgICAgICByZXZpc2lvblN1cHJlc3Npb25Db3VudFtyZXBvc2l0b3J5LmlkKCldLS07CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBz
dWNjZWVkaW5nUm93SW5kZXggPSByb3dJbmRleCArIDE7CisgICAgICAgICAgICBsZXQgc3VjY2Vl
ZGluZ1Jvd0luZGV4ID0gcm93SW5kZXggKyAxOwogICAgICAgICAgICAgd2hpbGUgKHN1Y2NlZWRp
bmdSb3dJbmRleCA8IHRlc3RHcm91cC5yb3dzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHZh
ciBzdWNjZWVkaW5nUm9vdFNldCA9IHRlc3RHcm91cC5yb3dzW3N1Y2NlZWRpbmdSb3dJbmRleF0u
cm9vdFNldCgpOwotICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkaW5nUm9vdFNldCAmJiBjb21t
aXQgIT0gc3VjY2VlZGluZ1Jvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSkK
KyAgICAgICAgICAgICAgICBjb25zdCBzdWNjZWVkaW5nQ29tbWl0U2V0ID0gdGVzdEdyb3VwLnJv
d3Nbc3VjY2VlZGluZ1Jvd0luZGV4XS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAo
c3VjY2VlZGluZ0NvbW1pdFNldCAmJiBjb21taXQgIT0gc3VjY2VlZGluZ0NvbW1pdFNldC5jb21t
aXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBzdWNjZWVkaW5nUm93SW5kZXgrKzsKICAgICAgICAgICAgIH0KQEAg
LTE0OCwyMSArMTQ4LDIxIEBAIGNsYXNzIFJlc3VsdHNUYWJsZSBleHRlbmRzIENvbXBvbmVudEJh
c2UKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhLmhhc1VybEZvclJldmlzaW9u
KCkgPyAtMSAvKiBhIDwgYiAqLyA6IDE7IC8vIGEgPiBiCiAgICAgICAgIH0pOwotICAgICAgICB2
YXIgcm9vdFNldHMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgZ3JvdXAgb2Ygcm93R3JvdXBzKSB7
Ci0gICAgICAgICAgICBmb3IgKHZhciByb3cgb2YgZ3JvdXAucm93cykgewotICAgICAgICAgICAg
ICAgIHZhciByb290U2V0ID0gcm93LnJvb3RTZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAocm9v
dFNldCkKLSAgICAgICAgICAgICAgICAgICAgcm9vdFNldHMucHVzaChyb290U2V0KTsKKyAgICAg
ICAgY29uc3QgY29tbWl0U2V0cyA9IFtdOworICAgICAgICBmb3IgKGxldCBncm91cCBvZiByb3dH
cm91cHMpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBncm91cC5yb3dzKSB7CisgICAg
ICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gcm93LmNvbW1pdFNldCgpOworICAgICAgICAg
ICAgICAgIGlmIChjb21taXRTZXQpCisgICAgICAgICAgICAgICAgICAgIGNvbW1pdFNldHMucHVz
aChjb21taXRTZXQpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmICghcm9v
dFNldHMubGVuZ3RoKQorICAgICAgICBpZiAoIWNvbW1pdFNldHMubGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuIFtdOwogCi0gICAgICAgIHZhciByZXBvc2l0b3J5UHJlc2VuY2VNYXAgPSB7fTsK
LSAgICAgICAgZm9yICh2YXIgcmVwb3NpdG9yeSBvZiBhbGxSZXBvc2l0b3JpZXMpIHsKLSAgICAg
ICAgICAgIHZhciBzb21lQ29tbWl0ID0gcm9vdFNldHNbMF0uY29tbWl0Rm9yUmVwb3NpdG9yeShy
ZXBvc2l0b3J5KTsKLSAgICAgICAgICAgIGlmIChSb290U2V0LmNvbnRhaW5zTXVsdGlwbGVDb21t
aXRzRm9yUmVwb3NpdG9yeShyb290U2V0cywgcmVwb3NpdG9yeSkpCisgICAgICAgIGNvbnN0IHJl
cG9zaXRvcnlQcmVzZW5jZU1hcCA9IHt9OworICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5IG9m
IGFsbFJlcG9zaXRvcmllcykgeworICAgICAgICAgICAgY29uc3Qgc29tZUNvbW1pdCA9IGNvbW1p
dFNldHNbMF0uY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgICAgIGlm
IChDb21taXRTZXQuY29udGFpbnNNdWx0aXBsZUNvbW1pdHNGb3JSZXBvc2l0b3J5KGNvbW1pdFNl
dHMsIHJlcG9zaXRvcnkpKQogICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlQcmVzZW5jZU1hcFty
ZXBvc2l0b3J5LmlkKCldID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNvbWVDb21taXQp
CiAgICAgICAgICAgICAgICAgZXh0cmFSZXBvc2l0b3JpZXMucHVzaChzb21lQ29tbWl0KTsKQEAg
LTI3MSwxOSArMjcxLDE5IEBAIGNsYXNzIFJlc3VsdHNUYWJsZSBleHRlbmRzIENvbXBvbmVudEJh
c2UKIH0KIAogY2xhc3MgUmVzdWx0c1RhYmxlUm93IHsKLSAgICBjb25zdHJ1Y3RvcihoZWFkaW5n
LCByb290U2V0KQorICAgIGNvbnN0cnVjdG9yKGhlYWRpbmcsIGNvbW1pdFNldCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2hlYWRpbmcgPSBoZWFkaW5nOwogICAgICAgICB0aGlzLl9yZXN1bHQgPSBu
dWxsOwogICAgICAgICB0aGlzLl9saW5rID0gbnVsbDsKICAgICAgICAgdGhpcy5fbGFiZWwgPSAn
LSc7Ci0gICAgICAgIHRoaXMuX3Jvb3RTZXQgPSByb290U2V0OworICAgICAgICB0aGlzLl9jb21t
aXRTZXQgPSBjb21taXRTZXQ7CiAgICAgICAgIHRoaXMuX2FkZGl0aW9uYWxDb2x1bW5zID0gW107
CiAgICAgICAgIHRoaXMuX2xhYmVsRm9yV2hvbGVSb3cgPSBudWxsOwogICAgIH0KIAogICAgIGhl
YWRpbmcoKSB7IHJldHVybiB0aGlzLl9oZWFkaW5nOyB9Ci0gICAgcm9vdFNldCgpIHsgcmV0dXJu
IHRoaXMuX3Jvb3RTZXQ7IH0KKyAgICBjb21taXRTZXQoKSB7IHJldHVybiB0aGlzLl9jb21taXRT
ZXQ7IH0KICAgICBzZXRSZXN1bHQocmVzdWx0KSB7IHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDsgfQog
ICAgIHNldExpbmsobGluaywgbGFiZWwpCiAgICAgewpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtcmVzdWx0cy10YWJsZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVu
dHMvdGVzdC1ncm91cC1yZXN1bHRzLXRhYmxlLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGVzdC1ncm91cC1yZXN1
bHRzLXRhYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxOSArMjksMTkgQEAgY2xhc3MgVGVz
dEdyb3VwUmVzdWx0c1RhYmxlIGV4dGVuZHMgUmVzdQogCiAgICAgYnVpbGRSb3dHcm91cHMoKQog
ICAgIHsKLSAgICAgICAgdmFyIHRlc3RHcm91cCA9IHRoaXMuX3Rlc3RHcm91cDsKKyAgICAgICAg
Y29uc3QgdGVzdEdyb3VwID0gdGhpcy5fdGVzdEdyb3VwOwogICAgICAgICBpZiAoIXRlc3RHcm91
cCkKICAgICAgICAgICAgIHJldHVybiBbXTsKIAotICAgICAgICB2YXIgcm9vdFNldHMgPSB0aGlz
Ll90ZXN0R3JvdXAucmVxdWVzdGVkUm9vdFNldHMoKTsKLSAgICAgICAgdmFyIGdyb3VwcyA9IHJv
b3RTZXRzLm1hcChmdW5jdGlvbiAocm9vdFNldCkgewotICAgICAgICAgICAgdmFyIHJvd3MgPSBb
bmV3IFJlc3VsdHNUYWJsZVJvdygnTWVhbicsIHJvb3RTZXQpXTsKKyAgICAgICAgY29uc3QgY29t
bWl0U2V0cyA9IHRoaXMuX3Rlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRTZXRzKCk7CisgICAgICAg
IGNvbnN0IGdyb3VwcyA9IGNvbW1pdFNldHMubWFwKGZ1bmN0aW9uIChjb21taXRTZXQpIHsKKyAg
ICAgICAgICAgIGNvbnN0IHJvd3MgPSBbbmV3IFJlc3VsdHNUYWJsZVJvdygnTWVhbicsIGNvbW1p
dFNldCldOwogICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKIAotICAgICAgICAgICAgZm9y
ICh2YXIgcmVxdWVzdCBvZiB0ZXN0R3JvdXAucmVxdWVzdHNGb3JSb290U2V0KHJvb3RTZXQpKSB7
CisgICAgICAgICAgICBmb3IgKHZhciByZXF1ZXN0IG9mIHRlc3RHcm91cC5yZXF1ZXN0c0ZvckNv
bW1pdFNldChjb21taXRTZXQpKSB7CiAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJlcXVl
c3QucmVzdWx0KCk7Ci0gICAgICAgICAgICAgICAgLy8gQ2FsbCByZXN1bHQucm9vdFNldCgpIGZv
ciBlYWNoIHJlc3VsdCBzaW5jZSB0aGUgc2V0IG9mIHJldmlzaW9ucyB1c2VkIGluIHRlc3Rpbmcg
bWF5YmUgZGlmZmVyZW50IGZyb20gcmVxdWVzdGVkIG9uZXMuCi0gICAgICAgICAgICAgICAgdmFy
IHJvdyA9IG5ldyBSZXN1bHRzVGFibGVSb3coMSArICtyZXF1ZXN0Lm9yZGVyKCksIHJlc3VsdCA/
IHJlc3VsdC5yb290U2V0KCkgOiBudWxsKTsKKyAgICAgICAgICAgICAgICAvLyBDYWxsIHJlc3Vs
dC5jb21taXRTZXQoKSBmb3IgZWFjaCByZXN1bHQgc2luY2UgdGhlIHNldCBvZiByZXZpc2lvbnMg
dXNlZCBpbiB0ZXN0aW5nIG1heWJlIGRpZmZlcmVudCBmcm9tIHJlcXVlc3RlZCBvbmVzLgorICAg
ICAgICAgICAgICAgIHZhciByb3cgPSBuZXcgUmVzdWx0c1RhYmxlUm93KDEgKyArcmVxdWVzdC5v
cmRlcigpLCByZXN1bHQgPyByZXN1bHQuY29tbWl0U2V0KCkgOiBudWxsKTsKICAgICAgICAgICAg
ICAgICByb3dzLnB1c2gocm93KTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJvdy5zZXRMaW5rKHJlc3VsdC5idWlsZCgpLnVybCgpLCByZXN1bHQu
YnVpbGQoKS5sYWJlbCgpKTsKQEAgLTU1LDE2ICs1NSwxNiBAQCBjbGFzcyBUZXN0R3JvdXBSZXN1
bHRzVGFibGUgZXh0ZW5kcyBSZXN1CiAgICAgICAgICAgICBpZiAoIWlzTmFOKGFnZ3JlZ2F0ZWRS
ZXN1bHQudmFsdWUpKQogICAgICAgICAgICAgICAgIHJvd3NbMF0uc2V0UmVzdWx0KGFnZ3JlZ2F0
ZWRSZXN1bHQpOwogCi0gICAgICAgICAgICByZXR1cm4ge2hlYWRpbmc6IHRlc3RHcm91cC5sYWJl
bEZvclJvb3RTZXQocm9vdFNldCksIHJvd3M6cm93c307CisgICAgICAgICAgICByZXR1cm4ge2hl
YWRpbmc6IHRlc3RHcm91cC5sYWJlbEZvckNvbW1pdFNldChjb21taXRTZXQpLCByb3dzfTsKICAg
ICAgICAgfSk7CiAKLSAgICAgICAgdmFyIGNvbXBhcmlzb25Sb3dzID0gW107Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcm9vdFNldHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGogPSBpICsgMTsgaiA8IHJvb3RTZXRzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHN0YXJ0Q29uZmlnID0gdGVzdEdyb3VwLmxhYmVsRm9yUm9vdFNldChyb290U2V0
c1tpXSk7Ci0gICAgICAgICAgICAgICAgdmFyIGVuZENvbmZpZyA9IHRlc3RHcm91cC5sYWJlbEZv
clJvb3RTZXQocm9vdFNldHNbal0pOworICAgICAgICBjb25zdCBjb21wYXJpc29uUm93cyA9IFtd
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbW1pdFNldHMubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGNvbW1pdFNldHMubGVuZ3RoOyBq
KyspIHsKKyAgICAgICAgICAgICAgICBjb25zdCBzdGFydENvbmZpZyA9IHRlc3RHcm91cC5sYWJl
bEZvckNvbW1pdFNldChjb21taXRTZXRzW2ldKTsKKyAgICAgICAgICAgICAgICBjb25zdCBlbmRD
b25maWcgPSB0ZXN0R3JvdXAubGFiZWxGb3JDb21taXRTZXQoY29tbWl0U2V0c1tqXSk7CiAKLSAg
ICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fdGVzdEdyb3VwLmNvbXBhcmVUZXN0UmVz
dWx0cyhyb290U2V0c1tpXSwgcm9vdFNldHNbal0pOworICAgICAgICAgICAgICAgIGNvbnN0IHJl
c3VsdCA9IHRoaXMuX3Rlc3RHcm91cC5jb21wYXJlVGVzdFJlc3VsdHMoY29tbWl0U2V0c1tpXSwg
Y29tbWl0U2V0c1tqXSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5jaGFuZ2VUeXBlID09
IG51bGwpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkluZGV4OiBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJl
cXVlc3QuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvbW9kZWxzL2J1aWxkLXJlcXVlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTE3LDgg
KzE3LDggQEAgY2xhc3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZQogICAgICAg
ICBjb25zb2xlLmFzc2VydChvYmplY3QudGVzdCBpbnN0YW5jZW9mIFRlc3QpOwogICAgICAgICB0
aGlzLl90ZXN0ID0gb2JqZWN0LnRlc3Q7CiAgICAgICAgIHRoaXMuX29yZGVyID0gb2JqZWN0Lm9y
ZGVyOwotICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3Qucm9vdFNldCBpbnN0YW5jZW9mIFJv
b3RTZXQpOwotICAgICAgICB0aGlzLl9yb290U2V0ID0gb2JqZWN0LnJvb3RTZXQ7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KG9iamVjdC5jb21taXRTZXQgaW5zdGFuY2VvZiBDb21taXRTZXQpOwor
ICAgICAgICB0aGlzLl9jb21taXRTZXQgPSBvYmplY3QuY29tbWl0U2V0OwogICAgICAgICB0aGlz
Ll9zdGF0dXMgPSBvYmplY3Quc3RhdHVzOwogICAgICAgICB0aGlzLl9zdGF0dXNVcmwgPSBvYmpl
Y3QudXJsOwogICAgICAgICB0aGlzLl9idWlsZElkID0gb2JqZWN0LmJ1aWxkOwpAQCAtMzAsNyAr
MzAsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBEYXRhTW9kZWxPYmplCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90ZXN0R3JvdXAgPT0gb2JqZWN0LnRlc3RHcm91
cCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX29yZGVyID09IG9iamVjdC5vcmRlcik7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jvb3RTZXQgPT0gb2JqZWN0LnJvb3RTZXQp
OworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb21taXRTZXQgPT0gb2JqZWN0LmNvbW1p
dFNldCk7CiAgICAgICAgIHRoaXMuX3N0YXR1cyA9IG9iamVjdC5zdGF0dXM7CiAgICAgICAgIHRo
aXMuX3N0YXR1c1VybCA9IG9iamVjdC51cmw7CiAgICAgICAgIHRoaXMuX2J1aWxkSWQgPSBvYmpl
Y3QuYnVpbGQ7CkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERh
dGFNb2RlbE9iamUKICAgICBwbGF0Zm9ybSgpIHsgcmV0dXJuIHRoaXMuX3BsYXRmb3JtOyB9CiAg
ICAgdGVzdCgpIHsgcmV0dXJuIHRoaXMuX3Rlc3Q7IH0KICAgICBvcmRlcigpIHsgcmV0dXJuICt0
aGlzLl9vcmRlcjsgfQotICAgIHJvb3RTZXQoKSB7IHJldHVybiB0aGlzLl9yb290U2V0OyB9Cisg
ICAgY29tbWl0U2V0KCkgeyByZXR1cm4gdGhpcy5fY29tbWl0U2V0OyB9CiAKICAgICBzdGF0dXMo
KSB7IHJldHVybiB0aGlzLl9zdGF0dXM7IH0KICAgICBoYXNGaW5pc2hlZCgpIHsgcmV0dXJuIHRo
aXMuX3N0YXR1cyA9PSAnZmFpbGVkJyB8fCB0aGlzLl9zdGF0dXMgPT0gJ2NvbXBsZXRlZCcgfHwg
dGhpcy5fc3RhdHVzID09ICdjYW5jZWxlZCc7IH0KQEAgLTEzOSwxNSArMTM5LDE1IEBAIGNsYXNz
IEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamUKIAogICAgIHN0YXRpYyBjb25zdHJ1
Y3RCdWlsZFJlcXVlc3RzRnJvbURhdGEoZGF0YSkKICAgICB7Ci0gICAgICAgIHZhciByb290SWRN
YXAgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgcm9vdCBvZiBkYXRhWydyb290cyddKSB7Ci0gICAg
ICAgICAgICByb290SWRNYXBbcm9vdC5pZF0gPSByb290OwotICAgICAgICAgICAgcm9vdC5yZXBv
c2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZChyb290LnJlcG9zaXRvcnkpOworICAgICAgICBj
b25zdCBjb21taXRJZE1hcCA9IHt9OworICAgICAgICBmb3IgKGxldCBjb21taXQgb2YgZGF0YVsn
Y29tbWl0cyddKSB7CisgICAgICAgICAgICBjb21taXRJZE1hcFtjb21taXQuaWRdID0gY29tbWl0
OworICAgICAgICAgICAgY29tbWl0LnJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZpbmRCeUlkKGNv
bW1pdC5yZXBvc2l0b3J5KTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciByb290U2V0cyA9IGRh
dGFbJ3Jvb3RTZXRzJ10ubWFwKGZ1bmN0aW9uIChyb3cpIHsKLSAgICAgICAgICAgIHJvdy5yb290
cyA9IHJvdy5yb290cy5tYXAoZnVuY3Rpb24gKHJvb3RJZCkgeyByZXR1cm4gcm9vdElkTWFwW3Jv
b3RJZF07IH0pOwotICAgICAgICAgICAgcmV0dXJuIFJvb3RTZXQuZW5zdXJlU2luZ2xldG9uKHJv
dy5pZCwgcm93KTsKKyAgICAgICAgY29uc3QgY29tbWl0U2V0cyA9IGRhdGFbJ2NvbW1pdFNldHMn
XS5tYXAoKHJvdykgPT4geworICAgICAgICAgICAgcm93LmNvbW1pdHMgPSByb3cuY29tbWl0cy5t
YXAoKGNvbW1pdElkKSA9PiBjb21taXRJZE1hcFtjb21taXRJZF0pOworICAgICAgICAgICAgcmV0
dXJuIENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24ocm93LmlkLCByb3cpOwogICAgICAgICB9KTsK
IAogICAgICAgICByZXR1cm4gZGF0YVsnYnVpbGRSZXF1ZXN0cyddLm1hcChmdW5jdGlvbiAocmF3
RGF0YSkgewpAQCAtMTU1LDcgKzE1NSw3IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERh
dGFNb2RlbE9iamUKICAgICAgICAgICAgIHJhd0RhdGEudGVzdCA9IFRlc3QuZmluZEJ5SWQocmF3
RGF0YS50ZXN0KTsKICAgICAgICAgICAgIHJhd0RhdGEudGVzdEdyb3VwSWQgPSByYXdEYXRhLnRl
c3RHcm91cDsKICAgICAgICAgICAgIHJhd0RhdGEudGVzdEdyb3VwID0gVGVzdEdyb3VwLmZpbmRC
eUlkKHJhd0RhdGEudGVzdEdyb3VwKTsKLSAgICAgICAgICAgIHJhd0RhdGEucm9vdFNldCA9IFJv
b3RTZXQuZmluZEJ5SWQocmF3RGF0YS5yb290U2V0KTsKKyAgICAgICAgICAgIHJhd0RhdGEuY29t
bWl0U2V0ID0gQ29tbWl0U2V0LmZpbmRCeUlkKHJhd0RhdGEuY29tbWl0U2V0KTsKICAgICAgICAg
ICAgIHJldHVybiBCdWlsZFJlcXVlc3QuZW5zdXJlU2luZ2xldG9uKHJhd0RhdGEuaWQsIHJhd0Rh
dGEpOwogICAgICAgICB9KTsKICAgICB9CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMJKHJldmlzaW9uIDIx
Mzg2OSkJKGZyb20gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvcm9v
dC1zZXQuanM6MjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9t
b2RlbHMvY29tbWl0LXNldC5qcwkod29ya2luZyBjb3B5KQpJbmRleDogV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCShy
ZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9jb21taXQtc2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogJ3VzZSBz
dHJpY3QnOwogCi1jbGFzcyBSb290U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKK2NsYXNz
IENvbW1pdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAKICAgICBjb25zdHJ1Y3Rvcihp
ZCwgb2JqZWN0KQogICAgIHsKQEAgLTEyLDggKzEyLDggQEAgY2xhc3MgUm9vdFNldCBleHRlbmRz
IERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGZvciAodmFyIHJvdyBvZiBvYmplY3Qucm9vdHMpIHsKLSAgICAgICAg
ICAgIHZhciByZXBvc2l0b3J5SWQgPSByb3cucmVwb3NpdG9yeS5pZCgpOworICAgICAgICBmb3Ig
KGxldCByb3cgb2Ygb2JqZWN0LmNvbW1pdHMpIHsKKyAgICAgICAgICAgIGNvbnN0IHJlcG9zaXRv
cnlJZCA9IHJvdy5yZXBvc2l0b3J5LmlkKCk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCgh
dGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3JlcG9zaXRvcnlJZF0pOwogICAgICAgICAgICAg
dGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3JlcG9zaXRvcnlJZF0gPSBDb21taXRMb2cuZW5z
dXJlU2luZ2xldG9uKHJvdy5pZCwgcm93KTsKICAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcmll
cy5wdXNoKHJvdy5yZXBvc2l0b3J5KTsKQEAgLTUyLDE0ICs1MiwxNCBAQCBjbGFzcyBSb290U2V0
IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgc3RhdGljIGNvbnRhaW5zTXVsdGlwbGVDb21taXRzRm9yUmVwb3NpdG9yeShyb290U2V0
cywgcmVwb3NpdG9yeSkKKyAgICBzdGF0aWMgY29udGFpbnNNdWx0aXBsZUNvbW1pdHNGb3JSZXBv
c2l0b3J5KGNvbW1pdFNldHMsIHJlcG9zaXRvcnkpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChyZXBvc2l0b3J5IGluc3RhbmNlb2YgUmVwb3NpdG9yeSk7Ci0gICAgICAgIGlmIChyb290
U2V0cy5sZW5ndGggPCAyKQorICAgICAgICBpZiAoY29tbWl0U2V0cy5sZW5ndGggPCAyKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgZmlyc3RDb21taXQgPSByb290U2V0
c1swXS5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOwotICAgICAgICBmb3IgKHZhciBz
ZXQgb2Ygcm9vdFNldHMpIHsKLSAgICAgICAgICAgIHZhciBhbm90aGVyQ29tbWl0ID0gc2V0LmNv
bW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAgIGNvbnN0IGZpcnN0Q29tbWl0
ID0gY29tbWl0U2V0c1swXS5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAgICAg
ICBmb3IgKGxldCBzZXQgb2YgY29tbWl0U2V0cykgeworICAgICAgICAgICAgY29uc3QgYW5vdGhl
ckNvbW1pdCA9IHNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOwogICAgICAgICAg
ICAgaWYgKCFmaXJzdENvbW1pdCAhPSAhYW5vdGhlckNvbW1pdCB8fCAoZmlyc3RDb21taXQgJiYg
Zmlyc3RDb21taXQucmV2aXNpb24oKSAhPSBhbm90aGVyQ29tbWl0LnJldmlzaW9uKCkpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC02Nyw3ICs2Nyw3IEBAIGNs
YXNzIFJvb3RTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogICAgIH0KIH0KIAotY2xhc3Mg
TWVhc3VyZW1lbnRSb290U2V0IGV4dGVuZHMgUm9vdFNldCB7CitjbGFzcyBNZWFzdXJlbWVudENv
bW1pdFNldCBleHRlbmRzIENvbW1pdFNldCB7CiAKICAgICBjb25zdHJ1Y3RvcihpZCwgcmV2aXNp
b25MaXN0KQogICAgIHsKQEAgLTg3LDIxICs4NywyMSBAQCBjbGFzcyBNZWFzdXJlbWVudFJvb3RT
ZXQgZXh0ZW5kcyBSb290U2V0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBVc2UgUm9vdFNl
dCdzIHN0YXRpYyBtYXBzIGJlY2F1c2UgTWVhc3VyZW1lbnRSb290U2V0IGFuZCBSb290U2V0IGFy
ZSBsb2dpY2FsbHkgb2YgdGhlIHNhbWUgdHlwZS4KKyAgICAvLyBVc2UgQ29tbWl0U2V0J3Mgc3Rh
dGljIG1hcHMgYmVjYXVzZSBNZWFzdXJlbWVudENvbW1pdFNldCBhbmQgQ29tbWl0U2V0IGFyZSBs
b2dpY2FsbHkgb2YgdGhlIHNhbWUgdHlwZS4KICAgICAvLyBGSVhNRTogSWRhZWxseSwgRGF0YU1v
ZGVsIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhpcyBidXQgdHJhdmVyc2luZyBwcm90b3R5cGUgY2hh
aW4gaXMgZXhwZW5zaXZlLgotICAgIG5hbWVkU3RhdGljTWFwKG5hbWUpIHsgcmV0dXJuIFJvb3RT
ZXQubmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KLSAgICBlbnN1cmVOYW1lZFN0YXRpY01hcChuYW1l
KSB7IHJldHVybiBSb290U2V0LmVuc3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpOyB9Ci0gICAgc3Rh
dGljIG5hbWVkU3RhdGljTWFwKG5hbWUpIHsgcmV0dXJuIFJvb3RTZXQubmFtZWRTdGF0aWNNYXAo
bmFtZSk7IH0KLSAgICBzdGF0aWMgZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4g
Um9vdFNldC5lbnN1cmVOYW1lZFN0YXRpY01hcChuYW1lKTsgfQorICAgIG5hbWVkU3RhdGljTWFw
KG5hbWUpIHsgcmV0dXJuIENvbW1pdFNldC5uYW1lZFN0YXRpY01hcChuYW1lKTsgfQorICAgIGVu
c3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpIHsgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVOYW1lZFN0
YXRpY01hcChuYW1lKTsgfQorICAgIHN0YXRpYyBuYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVy
biBDb21taXRTZXQubmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KKyAgICBzdGF0aWMgZW5zdXJlTmFt
ZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gQ29tbWl0U2V0LmVuc3VyZU5hbWVkU3RhdGljTWFw
KG5hbWUpOyB9CiAKICAgICBzdGF0aWMgZW5zdXJlU2luZ2xldG9uKG1lYXN1cmVtZW50SWQsIHJl
dmlzaW9uTGlzdCkKICAgICB7Ci0gICAgICAgIHZhciByb290U2V0SWQgPSBtZWFzdXJlbWVudElk
ICsgJy1yb290c2V0JzsKLSAgICAgICAgcmV0dXJuIFJvb3RTZXQuZmluZEJ5SWQocm9vdFNldElk
KSB8fCAobmV3IE1lYXN1cmVtZW50Um9vdFNldChyb290U2V0SWQsIHJldmlzaW9uTGlzdCkpOwor
ICAgICAgICBjb25zdCBjb21taXRTZXRJZCA9IG1lYXN1cmVtZW50SWQgKyAnLWNvbW1pdHNldCc7
CisgICAgICAgIHJldHVybiBDb21taXRTZXQuZmluZEJ5SWQoY29tbWl0U2V0SWQpIHx8IChuZXcg
TWVhc3VyZW1lbnRDb21taXRTZXQoY29tbWl0U2V0SWQsIHJldmlzaW9uTGlzdCkpOwogICAgIH0K
IH0KIAotY2xhc3MgQ3VzdG9tUm9vdFNldCB7CitjbGFzcyBDdXN0b21Db21taXRTZXQgewogCiAg
ICAgY29uc3RydWN0b3IoKQogICAgIHsKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBDdXN0b21S
b290U2V0IHsKIH0KIAogaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcpIHsKLSAgICBt
b2R1bGUuZXhwb3J0cy5Sb290U2V0ID0gUm9vdFNldDsKLSAgICBtb2R1bGUuZXhwb3J0cy5NZWFz
dXJlbWVudFJvb3RTZXQgPSBNZWFzdXJlbWVudFJvb3RTZXQ7Ci0gICAgbW9kdWxlLmV4cG9ydHMu
Q3VzdG9tUm9vdFNldCA9IEN1c3RvbVJvb3RTZXQ7CisgICAgbW9kdWxlLmV4cG9ydHMuQ29tbWl0
U2V0ID0gQ29tbWl0U2V0OworICAgIG1vZHVsZS5leHBvcnRzLk1lYXN1cmVtZW50Q29tbWl0U2V0
ID0gTWVhc3VyZW1lbnRDb21taXRTZXQ7CisgICAgbW9kdWxlLmV4cG9ydHMuQ3VzdG9tQ29tbWl0
U2V0ID0gQ3VzdG9tQ29tbWl0U2V0OwogfQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRvci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1hZGFw
dG9yLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1hZGFwdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw3ICs1OSw3IEBAIGNsYXNzIE1lYXN1cmVtZW50QWRhcHRvciB7CiAgICAgICAgICAgICBidWls
ZElkOiBidWlsZElkLAogICAgICAgICAgICAgbWV0cmljSWQ6IG51bGwsCiAgICAgICAgICAgICBj
b25maWdUeXBlOiBudWxsLAotICAgICAgICAgICAgcm9vdFNldDogZnVuY3Rpb24gKCkgeyByZXR1
cm4gTWVhc3VyZW1lbnRSb290U2V0LmVuc3VyZVNpbmdsZXRvbihpZCwgcm93W3NlbGYuX3Jldmlz
aW9uc0luZGV4XSk7IH0sCisgICAgICAgICAgICBjb21taXRTZXQ6IGZ1bmN0aW9uICgpIHsgcmV0
dXJuIE1lYXN1cmVtZW50Q29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbihpZCwgcm93W3NlbGYuX3Jl
dmlzaW9uc0luZGV4XSk7IH0sCiAgICAgICAgICAgICBidWlsZDogZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgIGlmIChjYWNoZWRCdWlsZCA9PSBudWxsICYmIGJ1aWxkZXJJZCkKICAgICAg
ICAgICAgICAgICAgICAgY2FjaGVkQnVpbGQgPSBuZXcgQnVpbGQoYnVpbGRJZCwgQnVpbGRlci5m
aW5kQnlJZChidWlsZGVySWQpLCByb3dbc2VsZi5fYnVpbGROdW1iZXJJbmRleF0sIHJvd1tzZWxm
Ll9idWlsZFRpbWVJbmRleF0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvcm9vdC1zZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvcm9vdC1zZXQuanMJKHJldmlzaW9uIDIxMzg2OSkKKysr
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Jvb3Qtc2V0LmpzCShu
b25leGlzdGVudCkKQEAgLTEsMTI2ICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotY2xhc3MgUm9v
dFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7Ci0KLSAgICBjb25zdHJ1Y3RvcihpZCwgb2Jq
ZWN0KQotICAgIHsKLSAgICAgICAgc3VwZXIoaWQpOwotICAgICAgICB0aGlzLl9yZXBvc2l0b3Jp
ZXMgPSBbXTsKLSAgICAgICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwID0ge307Ci0gICAg
ICAgIHRoaXMuX2xhdGVzdENvbW1pdFRpbWUgPSBudWxsOwotCi0gICAgICAgIGlmICghb2JqZWN0
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAodmFyIHJvdyBvZiBvYmplY3Qu
cm9vdHMpIHsKLSAgICAgICAgICAgIHZhciByZXBvc2l0b3J5SWQgPSByb3cucmVwb3NpdG9yeS5p
ZCgpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3JlcG9zaXRvcnlUb0NvbW1p
dE1hcFtyZXBvc2l0b3J5SWRdKTsKLSAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1p
dE1hcFtyZXBvc2l0b3J5SWRdID0gQ29tbWl0TG9nLmVuc3VyZVNpbmdsZXRvbihyb3cuaWQsIHJv
dyk7Ci0gICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMucHVzaChyb3cucmVwb3NpdG9yeSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXBvc2l0b3JpZXMoKSB7IHJldHVybiB0aGlzLl9y
ZXBvc2l0b3JpZXM7IH0KLSAgICBjb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpIHsgcmV0
dXJuIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5LmlkKCldOyB9Ci0KLSAg
ICByZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkKLSAgICB7Ci0gICAgICAgIHZhciBj
b21taXQgPSB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXBbcmVwb3NpdG9yeS5pZCgpXTsKLSAg
ICAgICAgcmV0dXJuIGNvbW1pdCA/IGNvbW1pdC5yZXZpc2lvbigpIDogbnVsbDsKLSAgICB9Ci0K
LSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgRGF0ZSBvYmplY3QuCi0gICAgbGF0
ZXN0Q29tbWl0VGltZSgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fbGF0ZXN0Q29tbWl0VGlt
ZSA9PSBudWxsKSB7Ci0gICAgICAgICAgICB2YXIgbWF4VGltZSA9IDA7Ci0gICAgICAgICAgICBm
b3IgKHZhciByZXBvc2l0b3J5SWQgaW4gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwKQotICAg
ICAgICAgICAgICAgIG1heFRpbWUgPSBNYXRoLm1heChtYXhUaW1lLCArdGhpcy5fcmVwb3NpdG9y
eVRvQ29tbWl0TWFwW3JlcG9zaXRvcnlJZF0udGltZSgpKTsKLSAgICAgICAgICAgIHRoaXMuX2xh
dGVzdENvbW1pdFRpbWUgPSBtYXhUaW1lOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9sYXRlc3RDb21taXRUaW1lOwotICAgIH0KLQotICAgIGVxdWFscyhvdGhlcikKLSAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9yZXBvc2l0b3JpZXMubGVuZ3RoICE9IG90aGVyLl9yZXBvc2l0b3Jp
ZXMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmb3IgKHZhciBy
ZXBvc2l0b3J5SWQgaW4gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwKSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3JlcG9zaXRvcnlJZF0gIT0gb3RoZXIu
X3JlcG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgY29udGFpbnNNdWx0aXBsZUNvbW1pdHNGb3JSZXBvc2l0b3J5KHJvb3RTZXRzLCBy
ZXBvc2l0b3J5KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVwb3NpdG9yeSBpbnN0
YW5jZW9mIFJlcG9zaXRvcnkpOwotICAgICAgICBpZiAocm9vdFNldHMubGVuZ3RoIDwgMikKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdmFyIGZpcnN0Q29tbWl0ID0gcm9vdFNl
dHNbMF0uY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKLSAgICAgICAgZm9yICh2YXIg
c2V0IG9mIHJvb3RTZXRzKSB7Ci0gICAgICAgICAgICB2YXIgYW5vdGhlckNvbW1pdCA9IHNldC5j
b21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOwotICAgICAgICAgICAgaWYgKCFmaXJzdENv
bW1pdCAhPSAhYW5vdGhlckNvbW1pdCB8fCAoZmlyc3RDb21taXQgJiYgZmlyc3RDb21taXQucmV2
aXNpb24oKSAhPSBhbm90aGVyQ29tbWl0LnJldmlzaW9uKCkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0K
LWNsYXNzIE1lYXN1cmVtZW50Um9vdFNldCBleHRlbmRzIFJvb3RTZXQgewotCi0gICAgY29uc3Ry
dWN0b3IoaWQsIHJldmlzaW9uTGlzdCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKGlkLCBudWxsKTsK
LSAgICAgICAgZm9yICh2YXIgdmFsdWVzIG9mIHJldmlzaW9uTGlzdCkgewotICAgICAgICAgICAg
Ly8gWzxjb21taXQtaWQ+LCA8cmVwb3NpdG9yeS1pZD4sIDxyZXZpc2lvbj4sIDx0aW1lPl0KLSAg
ICAgICAgICAgIHZhciBjb21taXRJZCA9IHZhbHVlc1swXTsKLSAgICAgICAgICAgIHZhciByZXBv
c2l0b3J5SWQgPSB2YWx1ZXNbMV07Ci0gICAgICAgICAgICB2YXIgcmV2aXNpb24gPSB2YWx1ZXNb
Ml07Ci0gICAgICAgICAgICB2YXIgdGltZSA9IHZhbHVlc1szXTsKLSAgICAgICAgICAgIHZhciBy
ZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZChyZXBvc2l0b3J5SWQpOwotICAgICAgICAg
ICAgaWYgKCFyZXBvc2l0b3J5KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXBbcmVwb3NpdG9yeUlkXSA9IENvbW1pdExv
Zy5lbnN1cmVTaW5nbGV0b24oY29tbWl0SWQsIHtyZXBvc2l0b3J5OiByZXBvc2l0b3J5LCByZXZp
c2lvbjogcmV2aXNpb24sIHRpbWU6IHRpbWV9KTsKLSAgICAgICAgICAgIHRoaXMuX3JlcG9zaXRv
cmllcy5wdXNoKHJlcG9zaXRvcnkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVXNlIFJv
b3RTZXQncyBzdGF0aWMgbWFwcyBiZWNhdXNlIE1lYXN1cmVtZW50Um9vdFNldCBhbmQgUm9vdFNl
dCBhcmUgbG9naWNhbGx5IG9mIHRoZSBzYW1lIHR5cGUuCi0gICAgLy8gRklYTUU6IElkYWVsbHks
IERhdGFNb2RlbCBzaG91bGQgdGFrZSBjYXJlIG9mIHRoaXMgYnV0IHRyYXZlcnNpbmcgcHJvdG90
eXBlIGNoYWluIGlzIGV4cGVuc2l2ZS4KLSAgICBuYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVy
biBSb290U2V0Lm5hbWVkU3RhdGljTWFwKG5hbWUpOyB9Ci0gICAgZW5zdXJlTmFtZWRTdGF0aWNN
YXAobmFtZSkgeyByZXR1cm4gUm9vdFNldC5lbnN1cmVOYW1lZFN0YXRpY01hcChuYW1lKTsgfQot
ICAgIHN0YXRpYyBuYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVybiBSb290U2V0Lm5hbWVkU3Rh
dGljTWFwKG5hbWUpOyB9Ci0gICAgc3RhdGljIGVuc3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpIHsg
cmV0dXJuIFJvb3RTZXQuZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KLQotICAgIHN0YXRp
YyBlbnN1cmVTaW5nbGV0b24obWVhc3VyZW1lbnRJZCwgcmV2aXNpb25MaXN0KQotICAgIHsKLSAg
ICAgICAgdmFyIHJvb3RTZXRJZCA9IG1lYXN1cmVtZW50SWQgKyAnLXJvb3RzZXQnOwotICAgICAg
ICByZXR1cm4gUm9vdFNldC5maW5kQnlJZChyb290U2V0SWQpIHx8IChuZXcgTWVhc3VyZW1lbnRS
b290U2V0KHJvb3RTZXRJZCwgcmV2aXNpb25MaXN0KSk7Ci0gICAgfQotfQotCi1jbGFzcyBDdXN0
b21Sb290U2V0IHsKLQotICAgIGNvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jl
dmlzaW9uTGlzdEJ5UmVwb3NpdG9yeSA9IG5ldyBNYXA7Ci0gICAgfQotCi0gICAgc2V0UmV2aXNp
b25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uKQotICAgIHsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQocmVwb3NpdG9yeSBpbnN0YW5jZW9mIFJlcG9zaXRvcnkpOwotICAgICAgICB0
aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuc2V0KHJlcG9zaXRvcnksIHJldmlzaW9uKTsK
LSAgICB9Ci0KLSAgICByZXBvc2l0b3JpZXMoKSB7IHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3Jl
dmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5rZXlzKCkpOyB9Ci0gICAgcmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHJlcG9zaXRvcnkpIHsgcmV0dXJuIHRoaXMuX3JldmlzaW9uTGlzdEJ5UmVwb3NpdG9yeS5n
ZXQocmVwb3NpdG9yeSk7IH0KLQotfQotCi1pZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVk
JykgewotICAgIG1vZHVsZS5leHBvcnRzLlJvb3RTZXQgPSBSb290U2V0OwotICAgIG1vZHVsZS5l
eHBvcnRzLk1lYXN1cmVtZW50Um9vdFNldCA9IE1lYXN1cmVtZW50Um9vdFNldDsKLSAgICBtb2R1
bGUuZXhwb3J0cy5DdXN0b21Sb290U2V0ID0gQ3VzdG9tUm9vdFNldDsKLX0KSW5kZXg6IFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1n
cm91cC5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTIsOSArMTIs
OSBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgdGhp
cy5fYnVpbGRSZXF1ZXN0cyA9IFtdOwogICAgICAgICB0aGlzLl9yZXF1ZXN0c0FyZUluT3JkZXIg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fcmVwb3NpdG9yaWVzID0gbnVsbDsKLSAgICAgICAgdGhp
cy5fcmVxdWVzdGVkUm9vdFNldHMgPSBudWxsOwotICAgICAgICB0aGlzLl9yb290U2V0VG9MYWJl
bCA9IG5ldyBNYXA7Ci0gICAgICAgIHRoaXMuX2FsbFJvb3RTZXRzID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fcmVxdWVzdGVkQ29tbWl0U2V0cyA9IG51bGw7CisgICAgICAgIHRoaXMuX2NvbW1pdFNl
dFRvTGFiZWwgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9hbGxDb21taXRTZXRzID0gbnVsbDsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIW9iamVjdC5wbGF0Zm9ybSB8fCBvYmplY3QucGxhdGZv
cm0gaW5zdGFuY2VvZiBQbGF0Zm9ybSk7CiAgICAgICAgIHRoaXMuX3BsYXRmb3JtID0gb2JqZWN0
LnBsYXRmb3JtOwogICAgIH0KQEAgLTM3LDU0ICszNyw1NCBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0
ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICB7CiAgICAgICAgIHRoaXMuX2J1aWxkUmVxdWVzdHMu
cHVzaChyZXF1ZXN0KTsKICAgICAgICAgdGhpcy5fcmVxdWVzdHNBcmVJbk9yZGVyID0gZmFsc2U7
Ci0gICAgICAgIHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzID0gbnVsbDsKLSAgICAgICAgdGhpcy5f
cm9vdFNldFRvTGFiZWwuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdGVkQ29tbWl0U2V0
cyA9IG51bGw7CisgICAgICAgIHRoaXMuX2NvbW1pdFNldFRvTGFiZWwuY2xlYXIoKTsKICAgICB9
CiAKICAgICByZXBldGl0aW9uQ291bnQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9idWls
ZFJlcXVlc3RzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB2YXIgcm9v
dFNldCA9IHRoaXMuX2J1aWxkUmVxdWVzdHNbMF0ucm9vdFNldCgpOworICAgICAgICB2YXIgY29t
bWl0U2V0ID0gdGhpcy5fYnVpbGRSZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKICAgICAgICAgdmFy
IGNvdW50ID0gMDsKICAgICAgICAgZm9yICh2YXIgcmVxdWVzdCBvZiB0aGlzLl9idWlsZFJlcXVl
c3RzKSB7Ci0gICAgICAgICAgICBpZiAocmVxdWVzdC5yb290U2V0KCkgPT0gcm9vdFNldCkKKyAg
ICAgICAgICAgIGlmIChyZXF1ZXN0LmNvbW1pdFNldCgpID09IGNvbW1pdFNldCkKICAgICAgICAg
ICAgICAgICBjb3VudCsrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9
CiAKLSAgICByZXF1ZXN0ZWRSb290U2V0cygpCisgICAgcmVxdWVzdGVkQ29tbWl0U2V0cygpCiAg
ICAgewotICAgICAgICBpZiAoIXRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzKSB7CisgICAgICAgIGlm
ICghdGhpcy5fcmVxdWVzdGVkQ29tbWl0U2V0cykgewogICAgICAgICAgICAgdGhpcy5fb3JkZXJC
dWlsZFJlcXVlc3RzKCk7Ci0gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ZWRSb290U2V0cyA9IFtd
OworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdGVkQ29tbWl0U2V0cyA9IFtdOwogICAgICAgICAg
ICAgZm9yICh2YXIgcmVxdWVzdCBvZiB0aGlzLl9idWlsZFJlcXVlc3RzKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHNldCA9IHJlcXVlc3Qucm9vdFNldCgpOwotICAgICAgICAgICAgICAgIGlmICgh
dGhpcy5fcmVxdWVzdGVkUm9vdFNldHMuaW5jbHVkZXMoc2V0KSkKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fcmVxdWVzdGVkUm9vdFNldHMucHVzaChzZXQpOworICAgICAgICAgICAgICAgIHZh
ciBzZXQgPSByZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICAgICAgICAgIGlmICghdGhpcy5f
cmVxdWVzdGVkQ29tbWl0U2V0cy5pbmNsdWRlcyhzZXQpKQorICAgICAgICAgICAgICAgICAgICB0
aGlzLl9yZXF1ZXN0ZWRDb21taXRTZXRzLnB1c2goc2V0KTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0
dXJuIGEubGF0ZXN0Q29tbWl0VGltZSgpIC0gYi5sYXRlc3RDb21taXRUaW1lKCk7IH0pOworICAg
ICAgICAgICAgdGhpcy5fcmVxdWVzdGVkQ29tbWl0U2V0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7
IHJldHVybiBhLmxhdGVzdENvbW1pdFRpbWUoKSAtIGIubGF0ZXN0Q29tbWl0VGltZSgpOyB9KTsK
ICAgICAgICAgICAgIHZhciBzZXRJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHZhciBzZXQg
b2YgdGhpcy5fcmVxdWVzdGVkUm9vdFNldHMpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9yb290
U2V0VG9MYWJlbC5zZXQoc2V0LCBTdHJpbmcuZnJvbUNoYXJDb2RlKCdBJy5jaGFyQ29kZUF0KDAp
ICsgc2V0SW5kZXgpKTsKKyAgICAgICAgICAgIGZvciAodmFyIHNldCBvZiB0aGlzLl9yZXF1ZXN0
ZWRDb21taXRTZXRzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY29tbWl0U2V0VG9MYWJlbC5z
ZXQoc2V0LCBTdHJpbmcuZnJvbUNoYXJDb2RlKCdBJy5jaGFyQ29kZUF0KDApICsgc2V0SW5kZXgp
KTsKICAgICAgICAgICAgICAgICBzZXRJbmRleCsrOwogICAgICAgICAgICAgfQogCiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzOworICAgICAgICByZXR1
cm4gdGhpcy5fcmVxdWVzdGVkQ29tbWl0U2V0czsKICAgICB9CiAKLSAgICByZXF1ZXN0c0ZvclJv
b3RTZXQocm9vdFNldCkKKyAgICByZXF1ZXN0c0ZvckNvbW1pdFNldChjb21taXRTZXQpCiAgICAg
ewogICAgICAgICB0aGlzLl9vcmRlckJ1aWxkUmVxdWVzdHMoKTsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2J1aWxkUmVxdWVzdHMuZmlsdGVyKGZ1bmN0aW9uIChyZXF1ZXN0KSB7IHJldHVybiByZXF1
ZXN0LnJvb3RTZXQoKSA9PSByb290U2V0OyB9KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxk
UmVxdWVzdHMuZmlsdGVyKGZ1bmN0aW9uIChyZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LmNvbW1p
dFNldCgpID09IGNvbW1pdFNldDsgfSk7CiAgICAgfQogCi0gICAgbGFiZWxGb3JSb290U2V0KHJv
b3RTZXQpCisgICAgbGFiZWxGb3JDb21taXRTZXQoY29tbWl0U2V0KQogICAgIHsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5fcmVxdWVzdGVkUm9vdFNldHMpOwotICAgICAgICByZXR1cm4g
dGhpcy5fcm9vdFNldFRvTGFiZWwuZ2V0KHJvb3RTZXQpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9yZXF1ZXN0ZWRDb21taXRTZXRzKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1p
dFNldFRvTGFiZWwuZ2V0KGNvbW1pdFNldCk7CiAgICAgfQogCiAgICAgX29yZGVyQnVpbGRSZXF1
ZXN0cygpCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRP
YmplY3QgewogCiAgICAgZGlkU2V0UmVzdWx0KHJlcXVlc3QpCiAgICAgewotICAgICAgICB0aGlz
Ll9hbGxSb290U2V0cyA9IG51bGw7CisgICAgICAgIHRoaXMuX2FsbENvbW1pdFNldHMgPSBudWxs
OwogICAgIH0KIAogICAgIGhhc0ZpbmlzaGVkKCkKQEAgLTExNSwxMiArMTE1LDEyIEBAIGNsYXNz
IFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gdGhpcy5f
YnVpbGRSZXF1ZXN0cy5zb21lKGZ1bmN0aW9uIChyZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0Lmlz
UGVuZGluZygpOyB9KTsKICAgICB9CiAKLSAgICBjb21wYXJlVGVzdFJlc3VsdHMocm9vdFNldEEs
IHJvb3RTZXRCKQorICAgIGNvbXBhcmVUZXN0UmVzdWx0cyhjb21taXRTZXRBLCBjb21taXRTZXRC
KQogICAgIHsKLSAgICAgICAgdmFyIGJlZm9yZVZhbHVlcyA9IHRoaXMuX3ZhbHVlc0ZvclJvb3RT
ZXQocm9vdFNldEEpOwotICAgICAgICB2YXIgYWZ0ZXJWYWx1ZXMgPSB0aGlzLl92YWx1ZXNGb3JS
b290U2V0KHJvb3RTZXRCKTsKLSAgICAgICAgdmFyIGJlZm9yZU1lYW4gPSBTdGF0aXN0aWNzLnN1
bShiZWZvcmVWYWx1ZXMpIC8gYmVmb3JlVmFsdWVzLmxlbmd0aDsKLSAgICAgICAgdmFyIGFmdGVy
TWVhbiA9IFN0YXRpc3RpY3Muc3VtKGFmdGVyVmFsdWVzKSAvIGFmdGVyVmFsdWVzLmxlbmd0aDsK
KyAgICAgICAgY29uc3QgYmVmb3JlVmFsdWVzID0gdGhpcy5fdmFsdWVzRm9yQ29tbWl0U2V0KGNv
bW1pdFNldEEpOworICAgICAgICBjb25zdCBhZnRlclZhbHVlcyA9IHRoaXMuX3ZhbHVlc0ZvckNv
bW1pdFNldChjb21taXRTZXRCKTsKKyAgICAgICAgY29uc3QgYmVmb3JlTWVhbiA9IFN0YXRpc3Rp
Y3Muc3VtKGJlZm9yZVZhbHVlcykgLyBiZWZvcmVWYWx1ZXMubGVuZ3RoOworICAgICAgICBjb25z
dCBhZnRlck1lYW4gPSBTdGF0aXN0aWNzLnN1bShhZnRlclZhbHVlcykgLyBhZnRlclZhbHVlcy5s
ZW5ndGg7CiAKICAgICAgICAgdmFyIG1ldHJpYyA9IEFuYWx5c2lzVGFzay5maW5kQnlJZCh0aGlz
Ll90YXNrSWQpLm1ldHJpYygpOwogICAgICAgICBjb25zb2xlLmFzc2VydChtZXRyaWMpOwpAQCAt
MTYwLDExICsxNjAsMTEgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgX3ZhbHVlc0ZvclJvb3RTZXQo
cm9vdFNldCkKKyAgICBfdmFsdWVzRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkKICAgICB7Ci0gICAg
ICAgIHZhciByZXF1ZXN0cyA9IHRoaXMucmVxdWVzdHNGb3JSb290U2V0KHJvb3RTZXQpOwotICAg
ICAgICB2YXIgdmFsdWVzID0gW107Ci0gICAgICAgIGZvciAodmFyIHJlcXVlc3Qgb2YgcmVxdWVz
dHMpIHsKKyAgICAgICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLnJlcXVlc3RzRm9yQ29tbWl0U2V0
KGNvbW1pdFNldCk7CisgICAgICAgIGNvbnN0IHZhbHVlcyA9IFtdOworICAgICAgICBmb3IgKGxl
dCByZXF1ZXN0IG9mIHJlcXVlc3RzKSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC5yZXN1bHQo
KSkKICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChyZXF1ZXN0LnJlc3VsdCgpLnZhbHVlKTsK
ICAgICAgICAgfQpAQCAtMTk3LDE2ICsxOTcsMTUgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMg
TGFiZWxlZE9iamVjdCB7CiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN0YXRpYyBjcmVhdGVB
bmRSZWZldGNoVGVzdEdyb3Vwcyh0YXNrLCBuYW1lLCByZXBldGl0aW9uQ291bnQsIHJvb3RTZXRz
KQorICAgIHN0YXRpYyBjcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0YXNrLCBuYW1lLCByZXBl
dGl0aW9uQ291bnQsIGNvbW1pdFNldHMpCiAgICAgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
CiAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1n
cm91cCcsIHsKICAgICAgICAgICAgIHRhc2s6IHRhc2suaWQoKSwKICAgICAgICAgICAgIG5hbWU6
IG5hbWUsCiAgICAgICAgICAgICByZXBldGl0aW9uQ291bnQ6IHJlcGV0aXRpb25Db3VudCwKLSAg
ICAgICAgICAgIHJvb3RTZXRzOiByb290U2V0cywKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
ZGF0YSkgewotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FjaGVkRmV0Y2goJy4uL2FwaS90ZXN0
LWdyb3VwcycsIHt0YXNrOiB0YXNrLmlkKCl9LCB0cnVlKS50aGVuKHNlbGYuX2NyZWF0ZU1vZGVs
c0Zyb21GZXRjaGVkVGVzdEdyb3Vwcy5iaW5kKHNlbGYpKTsKKyAgICAgICAgICAgIGNvbW1pdFNl
dHM6IGNvbW1pdFNldHMsCisgICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLmNhY2hlZEZldGNoKCcuLi9hcGkvdGVzdC1ncm91cHMnLCB7dGFzazogdGFz
ay5pZCgpfSwgdHJ1ZSkudGhlbigoZGF0YSkgPT4gdGhpcy5fY3JlYXRlTW9kZWxzRnJvbUZldGNo
ZWRUZXN0R3JvdXBzKGRhdGEpKTsKICAgICAgICAgfSk7CiAgICAgfQogCkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2Fu
YWx5c2lzLXRhc2stcGFnZS5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTI0OSw4ICsyNDksOCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4dGVuZHMg
UGFnZVdpdGhICiAKICAgICAgICAgdmFyIHJlcG9zaXRvcnlMaXN0OwogICAgICAgICBpZiAodGhp
cy5fc3RhcnRQb2ludCkgewotICAgICAgICAgICAgdmFyIHJvb3RTZXQgPSB0aGlzLl9zdGFydFBv
aW50LnJvb3RTZXQoKTsKLSAgICAgICAgICAgIHJlcG9zaXRvcnlMaXN0ID0gUmVwb3NpdG9yeS5z
b3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKHJvb3RTZXQucmVwb3NpdG9yaWVzKCkpOwor
ICAgICAgICAgICAgdmFyIGNvbW1pdFNldCA9IHRoaXMuX3N0YXJ0UG9pbnQuY29tbWl0U2V0KCk7
CisgICAgICAgICAgICByZXBvc2l0b3J5TGlzdCA9IFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZl
cnJpbmdPbmVzV2l0aFVSTChjb21taXRTZXQucmVwb3NpdG9yaWVzKCkpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHJlcG9zaXRvcnlMaXN0ID0gUmVwb3NpdG9yeS5zb3J0QnlOYW1lUHJl
ZmVycmluZ09uZXNXaXRoVVJMKFJlcG9zaXRvcnkuYWxsKCkpOwogCkBAIC0yODUsNyArMjg1LDcg
QEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSAogICAgICAgICB2YXIg
c2VsZWN0ZWRSYW5nZSA9IHRoaXMuX2FuYWx5c2lzUmVzdWx0c1ZpZXdlci5zZWxlY3RlZFJhbmdl
KCk7CiAgICAgICAgIHZhciBhID0gc2VsZWN0ZWRSYW5nZVsnQSddOwogICAgICAgICB2YXIgYiA9
IHNlbGVjdGVkUmFuZ2VbJ0InXTsKLSAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvclZp
ZXdlci5zZXRSb290U2V0TWFwKGEgJiYgYiA/IHsnQSc6IGEucm9vdFNldCgpLCAnQic6IGIucm9v
dFNldCgpfSA6IG51bGwpOworICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yVmlld2Vy
LnNldENvbW1pdFNldE1hcChhICYmIGIgPyB7J0EnOiBhLmNvbW1pdFNldCgpLCAnQic6IGIuY29t
bWl0U2V0KCl9IDogbnVsbCk7CiAgICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZvcm1Gb3JWaWV3
ZXIuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZvcm1Gb3JW
aWV3ZXIuZWxlbWVudCgpLnN0eWxlLmRpc3BsYXkgPSB0aGlzLl90cmlnZ2VyYWJsZSA/IG51bGwg
OiAnbm9uZSc7CiAKQEAgLTI5Niw4ICsyOTYsOCBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdlIGV4
dGVuZHMgUGFnZVdpdGhICiAgICAgICAgICAgICB0aGlzLl9jaGFydFBhbmUuc2V0TWFpblNlbGVj
dGlvbihbdGhpcy5fc3RhcnRQb2ludC50aW1lLCB0aGlzLl9lbmRQb2ludC50aW1lXSk7CiAKICAg
ICAgICAgdmFyIHBvaW50cyA9IHRoaXMuX2NoYXJ0UGFuZS5zZWxlY3RlZFBvaW50cygpOwotICAg
ICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yQ2hhcnQuc2V0Um9vdFNldE1hcChwb2ludHMg
JiYgcG9pbnRzLmxlbmd0aCgpID49IDIgPwotICAgICAgICAgICAgICAgIHsnQSc6IHBvaW50cy5m
aXJzdFBvaW50KCkucm9vdFNldCgpLCAnQic6IHBvaW50cy5sYXN0UG9pbnQoKS5yb290U2V0KCl9
IDogbnVsbCk7CisgICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZvcm1Gb3JDaGFydC5zZXRDb21t
aXRTZXRNYXAocG9pbnRzICYmIHBvaW50cy5sZW5ndGgoKSA+PSAyID8KKyAgICAgICAgICAgICAg
ICB7J0EnOiBwb2ludHMuZmlyc3RQb2ludCgpLmNvbW1pdFNldCgpLCAnQic6IHBvaW50cy5sYXN0
UG9pbnQoKS5jb21taXRTZXQoKX0gOiBudWxsKTsKICAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3Vw
Rm9ybUZvckNoYXJ0LmVucXVldWVUb1JlbmRlcigpOwogICAgICAgICB0aGlzLl9uZXdUZXN0R3Jv
dXBGb3JtRm9yQ2hhcnQuZWxlbWVudCgpLnN0eWxlLmRpc3BsYXkgPSB0aGlzLl90cmlnZ2VyYWJs
ZSA/IG51bGwgOiAnbm9uZSc7CiAKQEAgLTM3Nyw5ICszNzcsOSBAQCBjbGFzcyBBbmFseXNpc1Rh
c2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhICiAKICAgICAgICAgICAgIHRoaXMuX2NoYXJ0UGFuZS5z
ZXRNYWluU2VsZWN0aW9uKG51bGwpOwogICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRUZXN0
R3JvdXApIHsKLSAgICAgICAgICAgICAgICB2YXIgcm9vdFNldHNJblRlc3RHcm91cCA9IHRoaXMu
X2N1cnJlbnRUZXN0R3JvdXAucmVxdWVzdGVkUm9vdFNldHMoKTsKLSAgICAgICAgICAgICAgICB2
YXIgc3RhcnRUaW1lID0gcm9vdFNldHNJblRlc3RHcm91cFswXS5sYXRlc3RDb21taXRUaW1lKCk7
Ci0gICAgICAgICAgICAgICAgdmFyIGVuZFRpbWUgPSByb290U2V0c0luVGVzdEdyb3VwW3Jvb3RT
ZXRzSW5UZXN0R3JvdXAubGVuZ3RoIC0gMV0ubGF0ZXN0Q29tbWl0VGltZSgpOworICAgICAgICAg
ICAgICAgIGNvbnN0IGNvbW1pdFNldHNJblRlc3RHcm91cCA9IHRoaXMuX2N1cnJlbnRUZXN0R3Jv
dXAucmVxdWVzdGVkQ29tbWl0U2V0cygpOworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGlt
ZSA9IGNvbW1pdFNldHNJblRlc3RHcm91cFswXS5sYXRlc3RDb21taXRUaW1lKCk7CisgICAgICAg
ICAgICAgICAgY29uc3QgZW5kVGltZSA9IGNvbW1pdFNldHNJblRlc3RHcm91cFtjb21taXRTZXRz
SW5UZXN0R3JvdXAubGVuZ3RoIC0gMV0ubGF0ZXN0Q29tbWl0VGltZSgpOwogICAgICAgICAgICAg
ICAgIGlmIChzdGFydFRpbWUgIT0gZW5kVGltZSkKICAgICAgICAgICAgICAgICAgICAgdGhpcy5f
Y2hhcnRQYW5lLnNldE1haW5TZWxlY3Rpb24oW3N0YXJ0VGltZSwgZW5kVGltZV0pOwogICAgICAg
ICAgICAgfQpAQCAtNTEyLDE1ICs1MTIsMTUgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSAogICAgIF9yZXRyeUN1cnJlbnRUZXN0R3JvdXAocmVwZXRpdGlvbkNvdW50
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVudFRlc3RHcm91cCk7
Ci0gICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwOwotICAgICAg
ICB2YXIgbmV3TmFtZSA9IHRoaXMuX2NyZWF0ZVJldHJ5TmFtZUZvclRlc3RHcm91cCh0ZXN0R3Jv
dXAubmFtZSgpKTsKLSAgICAgICAgdmFyIHJvb3RTZXRMaXN0ID0gdGVzdEdyb3VwLnJlcXVlc3Rl
ZFJvb3RTZXRzKCk7Ci0KLSAgICAgICAgdmFyIHJvb3RTZXRNYXAgPSB7fTsKLSAgICAgICAgZm9y
ICh2YXIgcm9vdFNldCBvZiByb290U2V0TGlzdCkKLSAgICAgICAgICAgIHJvb3RTZXRNYXBbdGVz
dEdyb3VwLmxhYmVsRm9yUm9vdFNldChyb290U2V0KV0gPSByb290U2V0OworICAgICAgICBjb25z
dCB0ZXN0R3JvdXAgPSB0aGlzLl9jdXJyZW50VGVzdEdyb3VwOworICAgICAgICBjb25zdCBuZXdO
YW1lID0gdGhpcy5fY3JlYXRlUmV0cnlOYW1lRm9yVGVzdEdyb3VwKHRlc3RHcm91cC5uYW1lKCkp
OworICAgICAgICBjb25zdCBjb21taXRTZXRMaXN0ID0gdGVzdEdyb3VwLnJlcXVlc3RlZENvbW1p
dFNldHMoKTsKKworICAgICAgICBjb25zdCBjb21taXRTZXRNYXAgPSB7fTsKKyAgICAgICAgZm9y
IChsZXQgY29tbWl0U2V0IG9mIGNvbW1pdFNldExpc3QpCisgICAgICAgICAgICBjb21taXRTZXRN
YXBbdGVzdEdyb3VwLmxhYmVsRm9yQ29tbWl0U2V0KGNvbW1pdFNldCldID0gY29tbWl0U2V0Owog
Ci0gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jvb3RT
ZXRMaXN0KG5ld05hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldE1hcCk7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QobmV3
TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXApOwogICAgIH0KIAogICAgIF9jaGFy
dFNlbGVjdGlvbkRpZENoYW5nZSgpCkBAIC01MjksOSArNTI5LDkgQEAgY2xhc3MgQW5hbHlzaXNU
YXNrUGFnZSBleHRlbmRzIFBhZ2VXaXRoSAogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigp
OwogICAgIH0KIAotICAgIF9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tQ2hhcnQobmFtZSwgcmVwZXRp
dGlvbkNvdW50LCByb290U2V0TWFwKQorICAgIF9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tQ2hhcnQo
bmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXApCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdSb290U2V0TGlzdChuYW1lLCBy
ZXBldGl0aW9uQ291bnQsIHJvb3RTZXRNYXApOworICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRl
VGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KG5hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgY29tbWl0U2V0TWFwKTsKICAgICB9CiAKICAgICBfc2VsZWN0ZWRSb3dJbkFuYWx5c2lzUmVz
dWx0c1ZpZXdlcigpCkBAIC01MzksMzkgKzUzOSwzOSBAQCBjbGFzcyBBbmFseXNpc1Rhc2tQYWdl
IGV4dGVuZHMgUGFnZVdpdGhICiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAg
fQogCi0gICAgX2NyZWF0ZU5ld1Rlc3RHcm91cEZyb21WaWV3ZXIobmFtZSwgcmVwZXRpdGlvbkNv
dW50LCByb290U2V0TWFwKQorICAgIF9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tVmlld2VyKG5hbWUs
IHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nUm9vdFNldExpc3QobmFtZSwgcmVwZXRp
dGlvbkNvdW50LCByb290U2V0TWFwKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRlc3RH
cm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdChuYW1lLCByZXBldGl0aW9uQ291bnQsIGNv
bW1pdFNldE1hcCk7CiAgICAgfQogCi0gICAgX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5n
Um9vdFNldExpc3QodGVzdEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCByb290U2V0TWFwKQor
ICAgIF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QodGVzdEdyb3Vw
TmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21taXRTZXRNYXApCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5faGFzRHVwbGljYXRlVGVzdEdyb3VwTmFtZSh0ZXN0R3JvdXBOYW1lKSkKICAgICAgICAg
ICAgIGFsZXJ0KGBUaGVyZSBpcyBhbHJlYWR5IGEgdGVzdCBncm91cCBuYW1lZCAiJHt0ZXN0R3Jv
dXBOYW1lfSJgKTsKIAotICAgICAgICB2YXIgcm9vdFNldHNCeU5hbWUgPSB7fTsKLSAgICAgICAg
dmFyIGZpcnN0TGFiZWw7Ci0gICAgICAgIGZvciAoZmlyc3RMYWJlbCBpbiByb290U2V0TWFwKSB7
Ci0gICAgICAgICAgICB2YXIgcm9vdFNldCA9IHJvb3RTZXRNYXBbZmlyc3RMYWJlbF07Ci0gICAg
ICAgICAgICBmb3IgKHZhciByZXBvc2l0b3J5IG9mIHJvb3RTZXQucmVwb3NpdG9yaWVzKCkpCi0g
ICAgICAgICAgICAgICAgcm9vdFNldHNCeU5hbWVbcmVwb3NpdG9yeS5uYW1lKCldID0gW107Cisg
ICAgICAgIGNvbnN0IGNvbW1pdFNldHNCeU5hbWUgPSB7fTsKKyAgICAgICAgbGV0IGZpcnN0TGFi
ZWw7CisgICAgICAgIGZvciAoZmlyc3RMYWJlbCBpbiBjb21taXRTZXRNYXApIHsKKyAgICAgICAg
ICAgIGNvbnN0IGNvbW1pdFNldCA9IGNvbW1pdFNldE1hcFtmaXJzdExhYmVsXTsKKyAgICAgICAg
ICAgIGZvciAobGV0IHJlcG9zaXRvcnkgb2YgY29tbWl0U2V0LnJlcG9zaXRvcmllcygpKQorICAg
ICAgICAgICAgICAgIGNvbW1pdFNldHNCeU5hbWVbcmVwb3NpdG9yeS5uYW1lKCldID0gW107CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBzZXRJbmRleCA9IDA7
Ci0gICAgICAgIGZvciAodmFyIGxhYmVsIGluIHJvb3RTZXRNYXApIHsKLSAgICAgICAgICAgIHZh
ciByb290U2V0ID0gcm9vdFNldE1hcFtsYWJlbF07Ci0gICAgICAgICAgICBmb3IgKHZhciByZXBv
c2l0b3J5IG9mIHJvb3RTZXQucmVwb3NpdG9yaWVzKCkpIHsKLSAgICAgICAgICAgICAgICB2YXIg
bGlzdCA9IHJvb3RTZXRzQnlOYW1lW3JlcG9zaXRvcnkubmFtZSgpXTsKKyAgICAgICAgbGV0IHNl
dEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChsZXQgbGFiZWwgaW4gY29tbWl0U2V0TWFwKSB7Cisg
ICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBjb21taXRTZXRNYXBbbGFiZWxdOworICAgICAg
ICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiBjb21taXRTZXQucmVwb3NpdG9yaWVzKCkpIHsK
KyAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gY29tbWl0U2V0c0J5TmFtZVtyZXBvc2l0b3J5
Lm5hbWUoKV07CiAgICAgICAgICAgICAgICAgaWYgKCFsaXN0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIGFsZXJ0KGBTZXQgJHtsYWJlbH0gc3BlY2lmaWVzICR7cmVwb3NpdG9yeS5sYWJlbCgpfSBi
dXQgc2V0ICR7Zmlyc3RMYWJlbH0gZG9lcyBub3QuYCk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBudWxsOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaXN0LnB1c2go
cm9vdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkpOworICAgICAgICAgICAg
ICAgIGxpc3QucHVzaChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNldEluZGV4Kys7Ci0gICAgICAgICAgICBm
b3IgKHZhciBuYW1lIGluIHJvb3RTZXRzQnlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxp
c3QgPSByb290U2V0c0J5TmFtZVtuYW1lXTsKKyAgICAgICAgICAgIGZvciAobGV0IG5hbWUgaW4g
Y29tbWl0U2V0c0J5TmFtZSkgeworICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBjb21taXRT
ZXRzQnlOYW1lW25hbWVdOwogICAgICAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCA8IHNldElu
ZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KGBTZXQgJHtmaXJzdExhYmVsfSBzcGVj
aWZpZXMgJHtuYW1lfSBidXQgc2V0ICR7bGFiZWx9IGRvZXMgbm90LmApOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTU3OSw3ICs1NzksNyBAQCBjbGFzcyBBbmFseXNpc1Rh
c2tQYWdlIGV4dGVuZHMgUGFnZVdpdGhICiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBUZXN0R3JvdXAuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGhpcy5fdGFzaywgdGVz
dEdyb3VwTmFtZSwgcmVwZXRpdGlvbkNvdW50LCByb290U2V0c0J5TmFtZSkKKyAgICAgICAgVGVz
dEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRoaXMuX3Rhc2ssIHRlc3RHcm91cE5h
bWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0c0J5TmFtZSkKICAgICAgICAgICAgIC50aGVu
KHRoaXMuX2RpZEZldGNoVGVzdEdyb3Vwcy5iaW5kKHRoaXMpLCBmdW5jdGlvbiAoZXJyb3IpIHsK
ICAgICAgICAgICAgIGFsZXJ0KCdGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHRlc3QgZ3JvdXA6ICcg
KyBlcnJvcik7CiAgICAgICAgIH0pOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Nl
cnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9hcGktYnVpbGQtcmVxdWVzdHMtdGVz
dHMuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2NSArMjgsNjUgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbgog
ICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29udGVudFsnc3RhdHVzJ10sICdPSycpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ10sIFtdKTsKLSAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29udGVudFsncm9vdFNldHMnXSwgW10pOwotICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjb250ZW50Wydyb290cyddLCBbXSk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ3Jvb3RT
ZXRzJywgJ3Jvb3RzJywgJ3N0YXR1cyddKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
Y29udGVudFsnY29tbWl0U2V0cyddLCBbXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGNvbnRlbnRbJ2NvbW1pdHMnXSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChP
YmplY3Qua2V5cyhjb250ZW50KS5zb3J0KCksIFsnYnVpbGRSZXF1ZXN0cycsICdjb21taXRTZXRz
JywgJ2NvbW1pdHMnLCAnc3RhdHVzJ10pOwogICAgICAgICAgICAgZG9uZSgpOwogICAgICAgICB9
KS5jYXRjaChkb25lKTsKICAgICB9KTsKIAotICAgIGl0KCdzaG91bGQgcmV0dXJuIGJ1aWxkIHJl
cXVldHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUgd2l0aCBhcHByb3ByaWF0
ZSByb290cyBhbmQgcm9vdFNldHMnLCBmdW5jdGlvbiAoZG9uZSkgeworICAgIGl0KCdzaG91bGQg
cmV0dXJuIGJ1aWxkIHJlcXVldHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gdHJpZ2dlcmFibGUg
d2l0aCBhcHByb3ByaWF0ZSBjb21taXRzIGFuZCBjb21taXRTZXRzJywgZnVuY3Rpb24gKGRvbmUp
IHsKICAgICAgICAgbGV0IGRiID0gVGVzdFNlcnZlci5kYXRhYmFzZSgpOwogICAgICAgICBkYi5j
b25uZWN0KCkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICByZXR1cm4gTW9ja0RhdGEu
YWRkTW9ja0RhdGEoZGIpOwogICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBp
L2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdCcpOwogICAgICAgICB9KS50aGVuKGZ1bmN0aW9u
IChjb250ZW50KSB7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNv
bnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ3Jvb3RTZXRzJywgJ3Jvb3RzJywgJ3N0
YXR1cyddKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVu
dCkuc29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0
YXR1cyddKTsKIAotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ10u
bGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290U2V0cydd
WzBdLmlkLCA0MDEpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydyb290
U2V0cyddWzBdLnJvb3RzLCBbJzg3ODMyJywgJzkzMTE2J10pOwotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ11bMV0uaWQsIDQwMik7Ci0gICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ11bMV0ucm9vdHMsIFsnODc4MzInLCAnOTYz
MzYnXSk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cyddLmxlbmd0
aCwgMyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdHMnXVswXS5pZCwg
ODc4MzIpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMF0ucmVw
b3NpdG9yeSwgJzknKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cydd
WzBdLnJldmlzaW9uLCAnMTAuMTEgMTVBMjg0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Y29udGVudFsncm9vdHMnXVsxXS5pZCwgOTMxMTYpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGNvbnRlbnRbJ3Jvb3RzJ11bMV0ucmVwb3NpdG9yeSwgJzExJyk7Ci0gICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudFsncm9vdHMnXVsxXS5yZXZpc2lvbiwgJzE5MTYyMicpOwotICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMl0uaWQsIDk2MzM2KTsKLSAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cyddWzJdLnJlcG9zaXRvcnksICcxMScp
OwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMl0ucmV2aXNpb24s
ICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRz
J10ubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRT
ZXRzJ11bMF0uaWQsIDQwMSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRb
J2NvbW1pdFNldHMnXVswXS5jb21taXRzLCBbJzg3ODMyJywgJzkzMTE2J10pOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5pZCwgNDAyKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzFdLmNvbW1pdHMs
IFsnODc4MzInLCAnOTYzMzYnXSk7CisKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50
Wydjb21taXRzJ10ubGVuZ3RoLCAzKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50
Wydjb21taXRzJ11bMF0uaWQsIDg3ODMyKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250
ZW50Wydjb21taXRzJ11bMF0ucmVwb3NpdG9yeSwgJzknKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb250ZW50Wydjb21taXRzJ11bMF0ucmV2aXNpb24sICcxMC4xMSAxNUEyODQnKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0uaWQsIDkzMTE2KTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmVwb3NpdG9y
eSwgJzExJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzFd
LnJldmlzaW9uLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsn
Y29tbWl0cyddWzJdLmlkLCA5NjMzNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVu
dFsnY29tbWl0cyddWzJdLnJlcG9zaXRvcnksICcxMScpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzE5MjczNicpOwogCiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0aCwgNCk7CiAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5p
ZCwgNzAwKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1
ZXN0cyddWzBdLm9yZGVyLCAwKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzBdLnBsYXRmb3JtLCAnNjUnKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnJvb3RTZXQsIDQwMSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5j
b21taXRTZXQsIDQwMSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1
aWxkUmVxdWVzdHMnXVswXS5zdGF0dXMsICdwZW5kaW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS50ZXN0LCAnMjAwJyk7CiAKICAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLmlk
LCA3MDEpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVl
c3RzJ11bMV0ub3JkZXIsIDEpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50
WydidWlsZFJlcXVlc3RzJ11bMV0ucGxhdGZvcm0sICc2NScpOwotICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMV0ucm9vdFNldCwgNDAyKTsKKyAg
ICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLmNv
bW1pdFNldCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzFdLnN0YXR1cywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnRlc3QsICcyMDAnKTsKIAogICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uaWQs
IDcwMik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVsyXS5vcmRlciwgMik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVsyXS5wbGF0Zm9ybSwgJzY1Jyk7Ci0gICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5yb290U2V0LCA0MDEpOworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uY29t
bWl0U2V0LCA0MDEpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMl0uc3RhdHVzLCAncGVuZGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0udGVzdCwgJzIwMCcpOwogCiAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5pZCwg
NzAzKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0
cyddWzNdLm9yZGVyLCAzKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsn
YnVpbGRSZXF1ZXN0cyddWzNdLnBsYXRmb3JtLCAnNjUnKTsKLSAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnJvb3RTZXQsIDQwMik7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5jb21t
aXRTZXQsIDQwMik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxk
UmVxdWVzdHMnXVszXS5zdGF0dXMsICdwZW5kaW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS50ZXN0LCAnMjAwJyk7CiAgICAgICAg
ICAgICBkb25lKCk7CkBAIC0xMDAsNTEgKzEwMCw1MSBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1y
ZXF1ZXN0cycsIGZ1bmN0aW9uCiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgcmV0dXJuIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCkuZ2V0SlNPTldpdGhTdGF0dXMoJy9h
cGkvYnVpbGQtcmVxdWVzdHMvYnVpbGQtd2Via2l0P3VzZUxlZ2FjeUlkUmVzb2x1dGlvbj10cnVl
Jyk7CiAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKLSAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29ydCgpLCBbJ2J1aWxkUmVxdWVz
dHMnLCAncm9vdFNldHMnLCAncm9vdHMnLCAnc3RhdHVzJ10pOworICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChPYmplY3Qua2V5cyhjb250ZW50KS5zb3J0KCksIFsnYnVpbGRSZXF1ZXN0cycs
ICdjb21taXRTZXRzJywgJ2NvbW1pdHMnLCAnc3RhdHVzJ10pOwogCi0gICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudFsncm9vdFNldHMnXS5sZW5ndGgsIDIpOwotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ11bMF0uaWQsIDQwMSk7Ci0gICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ11bMF0ucm9vdHMsIFsnODc4MzInLCAn
OTMxMTYnXSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdFNldHMnXVsx
XS5pZCwgNDAyKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsncm9vdFNl
dHMnXVsxXS5yb290cywgWyc4NzgzMicsICc5NjMzNiddKTsKLQotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ10ubGVuZ3RoLCAzKTsKLSAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb250ZW50Wydyb290cyddWzBdLmlkLCA4NzgzMik7Ci0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29udGVudFsncm9vdHMnXVswXS5yZXBvc2l0b3J5LCAnT1MgWCcpOwotICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMF0ucmV2aXNpb24sICcxMC4xMSAxNUEy
ODQnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cyddWzFdLmlkLCA5
MzExNik7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdHMnXVsxXS5yZXBv
c2l0b3J5LCAnV2ViS2l0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9v
dHMnXVsxXS5yZXZpc2lvbiwgJzE5MTYyMicpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bnRlbnRbJ3Jvb3RzJ11bMl0uaWQsIDk2MzM2KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b250ZW50Wydyb290cyddWzJdLnJlcG9zaXRvcnksICdXZWJLaXQnKTsKLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb250ZW50Wydyb290cyddWzJdLnJldmlzaW9uLCAnMTkyNzM2Jyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddLmxlbmd0aCwgMik7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmlkLCA0MDEp
OworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMF0u
Y29tbWl0cywgWyc4NzgzMicsICc5MzExNiddKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b250ZW50Wydjb21taXRTZXRzJ11bMV0uaWQsIDQwMik7CisgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5jb21taXRzLCBbJzg3ODMyJywgJzk2MzM2
J10pOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddLmxlbmd0
aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzBdLmlk
LCA4NzgzMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzBd
LnJlcG9zaXRvcnksICdPUyBYJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsn
Y29tbWl0cyddWzBdLnJldmlzaW9uLCAnMTAuMTEgMTVBMjg0Jyk7CisgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzFdLmlkLCA5MzExNik7CisgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzFdLnJlcG9zaXRvcnksICdXZWJLaXQnKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11bMV0ucmV2aXNpb24s
ICcxOTE2MjInKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRzJ11b
Ml0uaWQsIDk2MzM2KTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRz
J11bMl0ucmVwb3NpdG9yeSwgJ1dlYktpdCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bnRlbnRbJ2NvbW1pdHMnXVsyXS5yZXZpc2lvbiwgJzE5MjczNicpOwogCiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddLmxlbmd0aCwgNCk7CiAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5pZCwgNzAw
KTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzBdLm9yZGVyLCAwKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVp
bGRSZXF1ZXN0cyddWzBdLnBsYXRmb3JtLCAnc29tZSBwbGF0Zm9ybScpOwotICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0ucm9vdFNldCwgNDAx
KTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzBdLmNvbW1pdFNldCwgNDAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzBdLnN0YXR1cywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnRlc3QsIFsnc29tZSB0
ZXN0J10pOwogCiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVx
dWVzdHMnXVsxXS5pZCwgNzAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzFdLm9yZGVyLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnBsYXRmb3JtLCAnc29tZSBwbGF0Zm9y
bScpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMV0ucm9vdFNldCwgNDAyKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzFdLmNvbW1pdFNldCwgNDAyKTsKICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnN0YXR1cywgJ3BlbmRpbmcn
KTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzFdLnRlc3QsIFsnc29tZSB0ZXN0J10pOwogCiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5pZCwgNzAyKTsKICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLm9yZGVyLCAyKTsKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnBsYXRm
b3JtLCAnc29tZSBwbGF0Zm9ybScpOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250
ZW50WydidWlsZFJlcXVlc3RzJ11bMl0ucm9vdFNldCwgNDAxKTsKKyAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLmNvbW1pdFNldCwgNDAxKTsK
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJd
LnN0YXR1cywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzJdLnRlc3QsIFsnc29tZSB0ZXN0J10pOwogCiAgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5pZCwgNzAzKTsK
ICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNd
Lm9yZGVyLCAzKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzNdLnBsYXRmb3JtLCAnc29tZSBwbGF0Zm9ybScpOwotICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10ucm9vdFNldCwgNDAyKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNd
LmNvbW1pdFNldCwgNDAyKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsn
YnVpbGRSZXF1ZXN0cyddWzNdLnN0YXR1cywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnRlc3QsIFsnc29tZSB0ZXN0
J10pOwogICAgICAgICAgICAgZG9uZSgpOwpAQCAtMTczLDcgKzE3Myw3IEBAIGRlc2NyaWJlKCcv
YXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChi
dWlsZFJlcXVlc3RzWzBdLnRlc3QoKSwgdGVzdCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
YnVpbGRSZXF1ZXN0c1swXS5wbGF0Zm9ybSgpLCBwbGF0Zm9ybSk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1swXS5vcmRlcigpLCAwKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5vayhidWlsZFJlcXVlc3RzWzBdLnJvb3RTZXQoKSBpbnN0YW5jZW9mIFJvb3RTZXQpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCkgaW5zdGFuY2Vv
ZiBDb21taXRTZXQpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhh
c0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzBdLmhh
c1N0YXJ0ZWQoKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1swXS5pc1Bl
bmRpbmcoKSk7CkBAIC0xODQsNyArMTg0LDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVz
dHMnLCBmdW5jdGlvbgogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMV0u
dGVzdCgpLCB0ZXN0KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzFd
LnBsYXRmb3JtKCksIHBsYXRmb3JtKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJl
cXVlc3RzWzFdLm9yZGVyKCksIDEpOwotICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVz
dHNbMV0ucm9vdFNldCgpIGluc3RhbmNlb2YgUm9vdFNldCk7CisgICAgICAgICAgICBhc3NlcnQu
b2soYnVpbGRSZXF1ZXN0c1sxXS5jb21taXRTZXQoKSBpbnN0YW5jZW9mIENvbW1pdFNldCk7CiAg
ICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMV0uaGFzRmluaXNoZWQoKSk7CiAg
ICAgICAgICAgICBhc3NlcnQub2soIWJ1aWxkUmVxdWVzdHNbMV0uaGFzU3RhcnRlZCgpKTsKICAg
ICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzFdLmlzUGVuZGluZygpKTsKQEAgLTE5
NSw3ICsxOTUsNyBAQCBkZXNjcmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uCiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1syXS50ZXN0KCksIHRlc3QpOwog
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ucGxhdGZvcm0oKSwgcGxh
dGZvcm0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0ub3JkZXIo
KSwgMik7Ci0gICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1syXS5yb290U2V0KCkg
aW5zdGFuY2VvZiBSb290U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3Rz
WzJdLmNvbW1pdFNldCgpIGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKICAgICAgICAgICAgIGFzc2Vy
dC5vayghYnVpbGRSZXF1ZXN0c1syXS5oYXNGaW5pc2hlZCgpKTsKICAgICAgICAgICAgIGFzc2Vy
dC5vayghYnVpbGRSZXF1ZXN0c1syXS5oYXNTdGFydGVkKCkpOwogICAgICAgICAgICAgYXNzZXJ0
Lm9rKGJ1aWxkUmVxdWVzdHNbMl0uaXNQZW5kaW5nKCkpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIGRl
c2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24KICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLnRlc3QoKSwgdGVzdCk7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS5wbGF0Zm9ybSgpLCBwbGF0Zm9ybSk7CiAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS5vcmRlcigpLCAzKTsKLSAgICAgICAg
ICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzNdLnJvb3RTZXQoKSBpbnN0YW5jZW9mIFJvb3RT
ZXQpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkg
aW5zdGFuY2VvZiBDb21taXRTZXQpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVl
c3RzWzNdLmhhc0ZpbmlzaGVkKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVl
c3RzWzNdLmhhc1N0YXJ0ZWQoKSk7CiAgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0
c1szXS5pc1BlbmRpbmcoKSk7CkBAIC0yMTgsMjcgKzIxOCwyNyBAQCBkZXNjcmliZSgnL2FwaS9i
dWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uCiAgICAgICAgICAgICBsZXQgd2Via2l0ID0gUmVwb3Np
dG9yeS5maW5kQnlJZCgxMSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwod2Via2l0Lm5hbWUo
KSwgJ1dlYktpdCcpOwogCi0gICAgICAgICAgICBsZXQgZmlyc3RSb290U2V0ID0gYnVpbGRSZXF1
ZXN0c1swXS5yb290U2V0KCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0
c1syXS5yb290U2V0KCksIGZpcnN0Um9vdFNldCk7CisgICAgICAgICAgICBsZXQgZmlyc3RDb21t
aXRTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCksIGZpcnN0Q29tbWl0U2V0KTsKIAot
ICAgICAgICAgICAgbGV0IHNlY29uZFJvb3RTZXQgPSBidWlsZFJlcXVlc3RzWzFdLnJvb3RTZXQo
KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzNdLnJvb3RTZXQoKSwg
c2Vjb25kUm9vdFNldCk7CisgICAgICAgICAgICBsZXQgc2Vjb25kQ29tbWl0U2V0ID0gYnVpbGRS
ZXF1ZXN0c1sxXS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJl
cXVlc3RzWzNdLmNvbW1pdFNldCgpLCBzZWNvbmRDb21taXRTZXQpOwogCi0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZmlyc3RSb290U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShvc3gpLCAnMTAu
MTEgMTVBMjg0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoZmlyc3RSb290U2V0LnJldmlz
aW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoZmlyc3RDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4xMSAx
NUEyODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdENvbW1pdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOwogCi0gICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoc2Vjb25kUm9vdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkob3N4KSwgJzEwLjExIDE1
QTI4NCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29uZFJvb3RTZXQucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChzZWNvbmRDb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4xMSAxNUEy
ODQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRDb21taXRTZXQucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTI3MzYnKTsKIAotICAgICAgICAgICAgbGV0IG9zeENv
bW1pdCA9IGZpcnN0Um9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KG9zeCk7CisgICAgICAgICAg
ICBsZXQgb3N4Q29tbWl0ID0gZmlyc3RDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShvc3gp
OwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdC5yZXZpc2lvbigpLCAnMTAuMTEg
MTVBMjg0Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwob3N4Q29tbWl0LCBzZWNvbmRSb290
U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
b3N4Q29tbWl0LCBzZWNvbmRDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShvc3gpKTsKIAot
ICAgICAgICAgICAgbGV0IGZpcnN0V2ViS2l0Q29tbWl0ID0gZmlyc3RSb290U2V0LmNvbW1pdEZv
clJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAgIGxldCBmaXJzdFdlYktpdENvbW1pdCA9
IGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsKICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChmaXJzdFdlYktpdENvbW1pdC5yZXZpc2lvbigpLCAnMTkxNjIyJyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoK2ZpcnN0V2ViS2l0Q29tbWl0LnRpbWUoKSwgMTQ0NTk0
NTgxNjg3OCk7CiAKLSAgICAgICAgICAgIGxldCBzZWNvbmRXZWJLaXRDb21taXQgPSBzZWNvbmRS
b290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAgIGxldCBzZWNv
bmRXZWJLaXRDb21taXQgPSBzZWNvbmRDb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJr
aXQpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29uZFdlYktpdENvbW1pdC5yZXZpc2lv
bigpLCAnMTkyNzM2Jyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoK3NlY29uZFdlYktpdENv
bW1pdC50aW1lKCksIDE0NDgyMjUzMjU2NTApOwogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRh
LmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL3Jlc291cmNlcy9tb2NrLWRhdGEuanMJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEy
LDcgQEAgTW9ja0RhdGEgPSB7CiAgICAgICAgIE1ldHJpYy5jbGVhclN0YXRpY01hcCgpOwogICAg
ICAgICBQbGF0Zm9ybS5jbGVhclN0YXRpY01hcCgpOwogICAgICAgICBSZXBvc2l0b3J5LmNsZWFy
U3RhdGljTWFwKCk7Ci0gICAgICAgIFJvb3RTZXQuY2xlYXJTdGF0aWNNYXAoKTsKKyAgICAgICAg
Q29tbWl0U2V0LmNsZWFyU3RhdGljTWFwKCk7CiAgICAgICAgIFRlc3QuY2xlYXJTdGF0aWNNYXAo
KTsKICAgICAgICAgVGVzdEdyb3VwLmNsZWFyU3RhdGljTWFwKCk7CiAgICAgICAgIFRyaWdnZXJh
YmxlLmNsZWFyU3RhdGljTWFwKCk7CkBAIC0zNSwxOCArMzUsMTggQEAgTW9ja0RhdGEgPSB7CiAg
ICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RzJywge2lkOiBNb2NrRGF0YS5zb21lVGVzdElkKCks
IG5hbWU6ICdzb21lIHRlc3QnfSksCiAgICAgICAgICAgICBkYi5pbnNlcnQoJ3Rlc3RfbWV0cmlj
cycsIHtpZDogMzAwLCB0ZXN0OiAyMDAsIG5hbWU6ICdzb21lIG1ldHJpYyd9KSwKICAgICAgICAg
ICAgIGRiLmluc2VydCgndGVzdF9jb25maWd1cmF0aW9ucycsIHtpZDogMzAxLCBtZXRyaWM6IDMw
MCwgcGxhdGZvcm06IDY1LCB0eXBlOiAnY3VycmVudCd9KSwKLSAgICAgICAgICAgIGRiLmluc2Vy
dCgncm9vdF9zZXRzJywge2lkOiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgncm9vdHMn
LCB7c2V0OiA0MDEsIGNvbW1pdDogODc4MzJ9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgncm9v
dHMnLCB7c2V0OiA0MDEsIGNvbW1pdDogOTMxMTZ9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgn
cm9vdF9zZXRzJywge2lkOiA0MDJ9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgncm9vdHMnLCB7
c2V0OiA0MDIsIGNvbW1pdDogODc4MzJ9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgncm9vdHMn
LCB7c2V0OiA0MDIsIGNvbW1pdDogOTYzMzZ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29t
bWl0X3NldHMnLCB7aWQ6IDQwMX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0
X3JlbGF0aW9uc2hpcHMnLCB7c2V0OiA0MDEsIGNvbW1pdDogODc4MzJ9KSwKKyAgICAgICAgICAg
IGRiLmluc2VydCgnY29tbWl0X3NldF9yZWxhdGlvbnNoaXBzJywge3NldDogNDAxLCBjb21taXQ6
IDkzMTE2fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRzJywge2lkOiA0MDJ9
KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9yZWxhdGlvbnNoaXBzJywge3Nl
dDogNDAyLCBjb21taXQ6IDg3ODMyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9z
ZXRfcmVsYXRpb25zaGlwcycsIHtzZXQ6IDQwMiwgY29tbWl0OiA5NjMzNn0pLAogICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdhbmFseXNpc190YXNrcycsIHtpZDogNTAwLCBwbGF0Zm9ybTogNjUsIG1l
dHJpYzogMzAwLCBuYW1lOiAnc29tZSB0YXNrJ30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCdh
bmFseXNpc190ZXN0X2dyb3VwcycsIHtpZDogNjAwLCB0YXNrOiA1MDAsIG5hbWU6ICdzb21lIHRl
c3QgZ3JvdXAnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lk
OiA3MDAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2
NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMCwgcm9vdF9zZXQ6IDQwMX0pLAotICAg
ICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0
YXR1c0xpc3RbMV0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3Jv
dXA6IDYwMCwgb3JkZXI6IDEsIHJvb3Rfc2V0OiA0MDJ9KSwKLSAgICAgICAgICAgIGRiLmluc2Vy
dCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmln
Z2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAy
LCByb290X3NldDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3Rz
Jywge2lkOiA3MDMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRm
b3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMywgcm9vdF9zZXQ6IDQwMn0p
LAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAwLCBzdGF0
dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIw
MCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQwMX0pLAorICAgICAgICAgICAg
ZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzAxLCBzdGF0dXM6IHN0YXR1c0xpc3Rb
MV0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwg
b3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZF9yZXF1ZXN0cycsIHtpZDogNzAyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxl
OiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDIsIGNvbW1p
dF9zZXQ6IDQwMX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtp
ZDogNzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTog
NjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMsIGNvbW1pdF9zZXQ6IDQwMn0pLAog
ICAgICAgICBdKTsKICAgICB9LAogICAgIGFkZEFub3RoZXJNb2NrVGVzdEdyb3VwOiBmdW5jdGlv
biAoZGIsIHN0YXR1c0xpc3QsIGF1dGhvcikKQEAgLTU1LDEwICs1NSwxMCBAQCBNb2NrRGF0YSA9
IHsKICAgICAgICAgICAgIHN0YXR1c0xpc3QgPSBbJ3BlbmRpbmcnLCAncGVuZGluZycsICdwZW5k
aW5nJywgJ3BlbmRpbmcnXTsKICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKICAgICAgICAg
ICAgIGRiLmluc2VydCgnYW5hbHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMSwgdGFzazogNTAw
LCBuYW1lOiAnYW5vdGhlciB0ZXN0IGdyb3VwJywgYXV0aG9yOiBhdXRob3J9KSwKLSAgICAgICAg
ICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMywgc3RhdHVzOiBzdGF0dXNM
aXN0WzNdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2
MDEsIG9yZGVyOiAzLCByb290X3NldDogNDAyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ2J1
aWxkX3JlcXVlc3RzJywge2lkOiA3MTAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJpZ2dlcmFi
bGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAxLCBvcmRlcjogMCwgcm9v
dF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtp
ZDogNzEyLCBzdGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTog
NjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDIsIHJvb3Rfc2V0OiA0MDF9KSwKLSAg
ICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcxMSwgc3RhdHVzOiBz
dGF0dXNMaXN0WzFdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdy
b3VwOiA2MDEsIG9yZGVyOiAxLCByb290X3NldDogNDAyfSksCisgICAgICAgICAgICBkYi5pbnNl
cnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlzdFszXSwgdHJp
Z2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAxLCBvcmRlcjog
MywgY29tbWl0X3NldDogNDAyfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVl
c3RzJywge2lkOiA3MTAsIHN0YXR1czogc3RhdHVzTGlzdFswXSwgdHJpZ2dlcmFibGU6IDEsIHBs
YXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAxLCBvcmRlcjogMCwgY29tbWl0X3NldDog
NDAxfSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTIs
IHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVz
dDogMjAwLCBncm91cDogNjAxLCBvcmRlcjogMiwgY29tbWl0X3NldDogNDAxfSksCisgICAgICAg
ICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTEsIHN0YXR1czogc3RhdHVz
TGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDog
NjAxLCBvcmRlcjogMSwgY29tbWl0X3NldDogNDAyfSksCiAgICAgICAgIF0pOwogICAgIH0sCiAg
ICAgbW9ja1Rlc3RTeW5jQ29uZmlnV2l0aFNpbmdsZUJ1aWxkZXI6IGZ1bmN0aW9uICgpCkluZGV4
OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvZGV0ZWN0LWNoYW5nZXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2RldGVjdC1jaGFuZ2VzLmpz
CShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvZGV0
ZWN0LWNoYW5nZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTI1MiwxOSArMjUyLDE5IEBAIGZ1bmN0
aW9uIGNyZWF0ZUFuYWx5c2lzVGFza0FuZE5vdGlmeShjb24KICAgICAgICAgICAgICAgICB0aHJv
dyByZXNwb25zZTsKIAogICAgICAgICAgICAgdmFyIHRyaWdnZXJhYmxlID0gcmVzcG9uc2VbJ3Ry
aWdnZXJhYmxlcyddWzBdOwotICAgICAgICAgICAgdmFyIHJvb3RTZXRzID0ge307CisgICAgICAg
ICAgICB2YXIgY29tbWl0U2V0cyA9IHt9OwogICAgICAgICAgICAgZm9yICh2YXIgcmVwb3NpdG9y
eUlkIG9mIHRyaWdnZXJhYmxlWydhY2NlcHRlZFJlcG9zaXRvcmllcyddKSB7CiAgICAgICAgICAg
ICAgICAgdmFyIHN0YXJ0UmV2aXNpb24gPSByYW5nZS5zdGFydE1lYXN1cmVtZW50LnJldmlzaW9u
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5SWQpOwogICAgICAgICAgICAgICAgIHZhciBlbmRSZXZp
c2lvbiA9IHJhbmdlLmVuZE1lYXN1cmVtZW50LnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0
b3J5SWQpOwogICAgICAgICAgICAgICAgIGlmIChzdGFydFJldmlzaW9uID09IG51bGwgfHwgZW5k
UmV2aXNpb24gPT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgcm9vdFNldHNbY29uZmlnLnJlcG9zaXRvcmllc1tyZXBvc2l0b3J5SWRdLm5hbWVd
ID0gW3N0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uXTsKKyAgICAgICAgICAgICAgICBjb21taXRT
ZXRzW2NvbmZpZy5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeUlkXS5uYW1lXSA9IFtzdGFydFJldmlz
aW9uLCBlbmRSZXZpc2lvbl07CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZhciB0ZXN0
RGF0YSA9IHsKICAgICAgICAgICAgICAgICB0YXNrOiBhbmFseXNpc1Rhc2tJZCwKICAgICAgICAg
ICAgICAgICBuYW1lOiAnQ29uZmlybWluZyB0aGUgJyArIGNoYW5nZVR5cGUsCi0gICAgICAgICAg
ICAgICAgcm9vdFNldHM6IHJvb3RTZXRzLAorICAgICAgICAgICAgICAgIGNvbW1pdFNldHM6IGNv
bW1pdFNldHMsCiAgICAgICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiBNYXRoLm1heCgyLCBN
YXRoLm1pbig4LCBNYXRoLmZsb29yKChyYW5nZS5lbmRJbmRleCAtIHJhbmdlLnN0YXJ0SW5kZXgp
IC8gNCkpKSwKIAogICAgICAgICAgICAgICAgIHNsYXZlTmFtZTogc2V0dGluZ3Muc2xhdmUubmFt
ZSwKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxkYm90Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWJ1aWxk
Ym90LmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9v
bHMvc3luYy1idWlsZGJvdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBmdW5j
dGlvbiBzeW5jTG9vcChvcHRpb25zKQogICAgIGdsb2JhbC5NZXRyaWMuY2xlYXJTdGF0aWNNYXAo
KTsKICAgICBnbG9iYWwuUGxhdGZvcm0uY2xlYXJTdGF0aWNNYXAoKTsKICAgICBnbG9iYWwuUmVw
b3NpdG9yeS5jbGVhclN0YXRpY01hcCgpOwotICAgIGdsb2JhbC5Sb290U2V0LmNsZWFyU3RhdGlj
TWFwKCk7CisgICAgZ2xvYmFsLkNvbW1pdFNldC5jbGVhclN0YXRpY01hcCgpOwogICAgIGdsb2Jh
bC5UZXN0LmNsZWFyU3RhdGljTWFwKCk7CiAgICAgZ2xvYmFsLlRlc3RHcm91cC5jbGVhclN0YXRp
Y01hcCgpOwogICAgIGdsb2JhbC5UcmlnZ2VyYWJsZS5jbGVhclN0YXRpY01hcCgpOwpJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtd2l0aC1idWlsZGJvdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy13aXRoLWJ1aWxk
Ym90LnB5CShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9v
bHMvc3luYy13aXRoLWJ1aWxkYm90LnB5CShub25leGlzdGVudCkKQEAgLTEsMjQ0ICswLDAgQEAK
LSMhL3Vzci9iaW4vcHl0aG9uCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGJhc2U2NAotaW1w
b3J0IGNvcHkKLWltcG9ydCBqc29uCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZQotaW1wb3J0IHVy
bGxpYgotaW1wb3J0IHVybGxpYjIKLQotZnJvbSB1dGlsIGltcG9ydCBsb2FkX3NlcnZlcl9jb25m
aWcKLQotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2Vy
KCkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRyaWdnZXJhYmxlJywgcmVxdWlyZWQ9VHJ1
ZSwgaGVscD0nVGhlIG5hbWUgb2YgdGhlIHRyaWdnZXJhYmxlIHRvIHByb2Nlc3MuIGUuZy4gYnVp
bGQtd2Via2l0JykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJ1aWxkYm90LXVybCcsIHJl
cXVpcmVkPVRydWUsIGhlbHA9J1VSTCBmb3IgYSBidWlsZGJvdCBidWlsZGVyOyBlLmcuICJodHRw
czovL2J1aWxkLndlYmtpdC5vcmcvIicpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1idWls
ZGVyLWNvbmZpZy1qc29uJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nVGhlIHBhdGggdG8gYSBKU09O
IGZpbGUgdGhhdCBzcGVjaWZpZXMgd2hpY2ggdGVzdCBhbmQgcGxhdGZvcm0gd2lsbCBiZSBwb3N0
ZWQgdG8gd2hpY2ggYnVpbGRlci4gJwotICAgICAgICAnVGhlIEpTT04gc2hvdWxkIGNvbnRhaW4g
YW4gYXJyYXkgb2YgZGljdGlvbmFyaWVzIHdpdGgga2V5cyAicGxhdGZvcm0iLCAidGVzdCIsIGFu
ZCAiYnVpbGRlciIgJwotICAgICAgICAnd2l0aCB0aGUgcGxhdGZvcm0gbmFtZSAoZS5nLiBtb3Vu
dGFpbmxpb24pLCB0aGUgdGVzdCBwYXRoIChlLmcuIFsiUGFyc2VyIiwgImh0bWw1LWZ1bGwtcmVu
ZGVyIl0pLCBhbmQgdGhlIGJ1aWxkZXIgbmFtZSAoZS5nLiBBcHBsZSBNb3VudGFpbkxpb24gUmVs
ZWFzZSAoUGVyZikpIGFzIHZhbHVlcy4nKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc2Vy
dmVyLWNvbmZpZy1qc29uJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nVGhlIHBhdGggdG8gYSBKU09O
IGZpbGUgdGhhdCBzcGVjaWZpZXMgdGhlIHBlcmYgZGFzaGJvYXJkLicpCi0KLSAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCctLWxvb2tiYWNrLWNvdW50JywgdHlwZT1pbnQsIGRlZmF1bHQ9MTAsIGhl
bHA9J1RoZSBudW1iZXIgb2YgYnVpbGRzIHRvIGxvb2sgYmFjayB3aGVuIGZpbmRpbmcgaW4tcHJv
Z3Jlc3MgYnVpbGRzIG9uIHRoZSBidWlsZGJvdCcpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn
LS1zZWNvbmRzLXRvLXNsZWVwJywgdHlwZT1mbG9hdCwgZGVmYXVsdD0xMjAsIGhlbHA9J1RoZSBz
ZWNvbmRzIHRvIHNsZWVwIGJldHdlZW4gaXRlcmF0aW9ucycpCi0gICAgYXJncyA9IHBhcnNlci5w
YXJzZV9hcmdzKCkKLQotICAgIGNvbmZpZ3VyYXRpb25zID0gbG9hZF9jb25maWcoYXJncy5idWls
ZGVyX2NvbmZpZ19qc29uLCBhcmdzLmJ1aWxkYm90X3VybC5zdHJpcCgnLycpKQotCi0gICAgcmVx
dWVzdF91cGRhdGVzID0ge30KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBzZXJ2ZXJfY29uZmln
ID0gbG9hZF9zZXJ2ZXJfY29uZmlnKGFyZ3Muc2VydmVyX2NvbmZpZ19qc29uKQotICAgICAgICBy
ZXF1ZXN0X3VwZGF0ZXMudXBkYXRlKGZpbmRfcmVxdWVzdF91cGRhdGVzKGNvbmZpZ3VyYXRpb25z
LCBhcmdzLmxvb2tiYWNrX2NvdW50KSkKLSAgICAgICAgaWYgcmVxdWVzdF91cGRhdGVzOgotICAg
ICAgICAgICAgcHJpbnQgJ1VwZGF0aW5nIHRoZSBidWlsZCByZXF1ZXN0cyAlcy4uLicgJSAnLCAn
LmpvaW4obWFwKHN0ciwgcmVxdWVzdF91cGRhdGVzLmtleXMoKSkpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBwcmludCAnTm8gdXBkYXRlcy4uLicKLQotICAgICAgICBwYXlsb2FkID0gewot
ICAgICAgICAgICAgJ2J1aWxkUmVxdWVzdFVwZGF0ZXMnOiByZXF1ZXN0X3VwZGF0ZXMsCi0gICAg
ICAgICAgICAnc2xhdmVOYW1lJzogc2VydmVyX2NvbmZpZ1snc2xhdmUnXVsnbmFtZSddLAotICAg
ICAgICAgICAgJ3NsYXZlUGFzc3dvcmQnOiBzZXJ2ZXJfY29uZmlnWydzbGF2ZSddWydwYXNzd29y
ZCddfQotCi0gICAgICAgIGJ1aWxkX3JlcXVlc3RzX3VybCA9IHNlcnZlcl9jb25maWdbJ3NlcnZl
ciddWyd1cmwnXSArICcvYXBpL2J1aWxkLXJlcXVlc3RzLycgKyBhcmdzLnRyaWdnZXJhYmxlICsg
Jz91c2VMZWdhY3lJZFJlc29sdXRpb249dHJ1ZScKLSAgICAgICAgcmVzcG9uc2UgPSB1cGRhdGVf
YW5kX2ZldGNoX2J1aWxkX3JlcXVlc3RzKGJ1aWxkX3JlcXVlc3RzX3VybCwgcGF5bG9hZCkKLSAg
ICAgICAgb3Blbl9yZXF1ZXN0cyA9IHJlc3BvbnNlLmdldCgnYnVpbGRSZXF1ZXN0cycsIFtdKQot
Ci0gICAgICAgIHJvb3Rfc2V0cyA9IG9yZ2FuaXplX3Jvb3Rfc2V0c19ieV9pZF9hbmRfcmVwb3Np
dG9yeV9uYW1lcyhyZXNwb25zZS5nZXQoJ3Jvb3RTZXRzJywge30pLCByZXNwb25zZS5nZXQoJ3Jv
b3RzJywgW10pKQotCi0gICAgICAgIGZvciByZXF1ZXN0IGluIGZpbHRlcihsYW1iZGEgcmVxdWVz
dDogcmVxdWVzdFsnc3RhdHVzJ10gPT0gJ3BlbmRpbmcnLCBvcGVuX3JlcXVlc3RzKToKLSAgICAg
ICAgICAgIGNvbmZpZyA9IGNvbmZpZ19mb3JfcmVxdWVzdChjb25maWd1cmF0aW9ucywgcmVxdWVz
dCkKLSAgICAgICAgICAgIGlmIG5vdCBjb25maWc6Ci0gICAgICAgICAgICAgICAgcHJpbnQgPj4g
c3lzLnN0ZGVyciwgIkZhaWxlZCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIGZvciByZXF1ZXN0
ICVzOiAlcyIgJSAoc3RyKHJlcXVlc3RbJ2lkJ10pLCBqc29uLmR1bXBzKHJlcXVlc3QpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBjb25maWcgYW5kIGxlbihjb25m
aWdbJ3NjaGVkdWxlZFJlcXVlc3RzJ10pIDwgMToKLSAgICAgICAgICAgICAgICBwcmludCAiU2No
ZWR1bGluZyB0aGUgYnVpbGQgcmVxdWVzdCAlcy4uLiIgJSBzdHIocmVxdWVzdFsnaWQnXSkKLSAg
ICAgICAgICAgICAgICBzY2hlZHVsZV9yZXF1ZXN0KGNvbmZpZywgcmVxdWVzdCwgcm9vdF9zZXRz
KQotCi0gICAgICAgIHJlcXVlc3RfdXBkYXRlcyA9IGZpbmRfc3RhbGVfcmVxdWVzdF91cGRhdGVz
KGNvbmZpZ3VyYXRpb25zLCBvcGVuX3JlcXVlc3RzLCByZXF1ZXN0X3VwZGF0ZXMua2V5cygpKQot
ICAgICAgICBpZiByZXF1ZXN0X3VwZGF0ZXM6Ci0gICAgICAgICAgICBwcmludCAiRm91bmQgc3Rh
bGUgYnVpbGQgcmVxdWVzdHMgJXMuLi4iICUgJywgJy5qb2luKG1hcChzdHIsIHJlcXVlc3RfdXBk
YXRlcy5rZXlzKCkpKQotCi0gICAgICAgIHRpbWUuc2xlZXAoYXJncy5zZWNvbmRzX3RvX3NsZWVw
KQotCi0KLWRlZiBsb2FkX2NvbmZpZyhjb25maWdfanNvbl9wYXRoLCBidWlsZGJvdF91cmwpOgot
ICAgIHdpdGggb3Blbihjb25maWdfanNvbl9wYXRoKSBhcyBjb25maWdfanNvbjoKLSAgICAgICAg
b3B0aW9ucyA9IGpzb24ubG9hZChjb25maWdfanNvbikKLQotICAgIHNoYXJlZF9jb25maWcgPSBv
cHRpb25zWydzaGFyZWQnXQotICAgIHR5cGVfY29uZmlnID0gb3B0aW9uc1sndHlwZXMnXQotICAg
IGJ1aWxkZXJfY29uZmlnID0gb3B0aW9uc1snYnVpbGRlcnMnXQotCi0gICAgZGVmIG1lcmdlKGNv
bmZpZywgY29uZmlnX3RvX21lcmdlKToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29uZmln
X3RvX21lcmdlLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwg
ZGljdCk6Ci0gICAgICAgICAgICAgICAgY29uZmlnLnNldGRlZmF1bHQoa2V5LCB7fSkKLSAgICAg
ICAgICAgICAgICBjb25maWdba2V5XS51cGRhdGUodmFsdWUpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIGNvbmZpZ1trZXldID0gdmFsdWUKLQotICAgIHNjaGVkdWxlZF9yZXF1
ZXN0c19ieV9idWlsZGVyID0ge30KLQotICAgIGNvbmZpZ3VyYXRpb25zID0gb3B0aW9uc1snY29u
ZmlndXJhdGlvbnMnXQotICAgIGZvciBjb25maWcgaW4gY29uZmlndXJhdGlvbnM6Ci0KLSAgICAg
ICAgbWVyZ2UoY29uZmlnLCBzaGFyZWRfY29uZmlnKQotICAgICAgICBtZXJnZShjb25maWcsIHR5
cGVfY29uZmlnW2NvbmZpZy5wb3AoJ3R5cGUnKV0pCi0gICAgICAgIG1lcmdlKGNvbmZpZywgYnVp
bGRlcl9jb25maWdbY29uZmlnLnBvcCgnYnVpbGRlcicpXSkKLQotICAgICAgICBlc2NhcGVkX2J1
aWxkZXJfbmFtZSA9IHVybGxpYi5xdW90ZShjb25maWdbJ2J1aWxkZXInXSkKLSAgICAgICAgY29u
ZmlnWyd1cmwnXSA9ICclcy9idWlsZGVycy8lcy8nICUgKGJ1aWxkYm90X3VybCwgZXNjYXBlZF9i
dWlsZGVyX25hbWUpCi0gICAgICAgIGNvbmZpZ1snanNvblVSTCddID0gJyVzL2pzb24vYnVpbGRl
cnMvJXMvJyAlIChidWlsZGJvdF91cmwsIGVzY2FwZWRfYnVpbGRlcl9uYW1lKQotCi0gICAgICAg
IHNjaGVkdWxlZF9yZXF1ZXN0c19ieV9idWlsZGVyLnNldGRlZmF1bHQoY29uZmlnWydidWlsZGVy
J10sIHNldCgpKQotICAgICAgICBjb25maWdbJ3NjaGVkdWxlZFJlcXVlc3RzJ10gPSBzY2hlZHVs
ZWRfcmVxdWVzdHNfYnlfYnVpbGRlcltjb25maWdbJ2J1aWxkZXInXV0KLQotICAgIHJldHVybiBj
b25maWd1cmF0aW9ucwotCi0KLWRlZiBmaW5kX3JlcXVlc3RfdXBkYXRlcyhjb25maWd1cmF0aW9u
cywgbG9va2JhY2tfY291bnQpOgotICAgIHJlcXVlc3RfdXBkYXRlcyA9IHt9Ci0KLSAgICBmb3Ig
Y29uZmlnIGluIGNvbmZpZ3VyYXRpb25zOgotICAgICAgICBjb25maWdbJ3NjaGVkdWxlZFJlcXVl
c3RzJ10uY2xlYXIoKQotCi0gICAgZm9yIGNvbmZpZyBpbiBjb25maWd1cmF0aW9uczoKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcGVuZGluZ19idWlsZHMgPSBmZXRjaF9qc29uKGNvbmZpZ1sn
anNvblVSTCddICsgJ3BlbmRpbmdCdWlsZHMnKQotICAgICAgICAgICAgc2NoZWR1bGVkX3JlcXVl
c3RzID0gZmlsdGVyKE5vbmUsIFtyZXF1ZXN0X2lkX2Zyb21fYnVpbGQoY29uZmlnLCBidWlsZCkg
Zm9yIGJ1aWxkIGluIHBlbmRpbmdfYnVpbGRzXSkKLSAgICAgICAgICAgIGZvciByZXF1ZXN0X2lk
IGluIHNjaGVkdWxlZF9yZXF1ZXN0czoKLSAgICAgICAgICAgICAgICByZXF1ZXN0X3VwZGF0ZXNb
cmVxdWVzdF9pZF0gPSB7J3N0YXR1cyc6ICdzY2hlZHVsZWQnLCAndXJsJzogY29uZmlnWyd1cmwn
XX0KLSAgICAgICAgICAgICAgICBjb25maWdbJ3NjaGVkdWxlZFJlcXVlc3RzJ10uYWRkKHJlcXVl
c3RfaWQpCi0gICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgVmFsdWVFcnJvcikgYXMgZXJyb3I6Ci0g
ICAgICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiRmFpbGVkIHRvIGZldGNoIHBlbmRpbmcg
YnVpbGRzIGZvciAlczogJXMiICUgKGNvbmZpZ1snYnVpbGRlciddLCBzdHIoZXJyb3IpKQotCi0g
ICAgZm9yIGNvbmZpZyBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MSwgbG9va2JhY2tfY291bnQgKyAxKToKLSAgICAgICAgICAgIGJ1aWxkX2Vycm9yID0gTm9uZQot
ICAgICAgICAgICAgYnVpbGRfaW5kZXggPSAtaQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIGJ1aWxkID0gZmV0Y2hfanNvbihjb25maWdbJ2pzb25VUkwnXSArICdidWlsZHMvJWQn
ICUgYnVpbGRfaW5kZXgpCi0gICAgICAgICAgICAgICAgcmVxdWVzdF9pZCA9IHJlcXVlc3RfaWRf
ZnJvbV9idWlsZChjb25maWcsIGJ1aWxkKQotICAgICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0
X2lkOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaW5f
cHJvZ3Jlc3MgPSBidWlsZC5nZXQoJ2N1cnJlbnRTdGVwJykKLSAgICAgICAgICAgICAgICBpZiBp
bl9wcm9ncmVzczoKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF91cGRhdGVzW3JlcXVlc3Rf
aWRdID0geydzdGF0dXMnOiAncnVubmluZycsICd1cmwnOiBjb25maWdbJ3VybCddfQotICAgICAg
ICAgICAgICAgICAgICBjb25maWdbJ3NjaGVkdWxlZFJlcXVlc3RzJ10uZGlzY2FyZChyZXF1ZXN0
X2lkKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHVybCA9IGNv
bmZpZ1sndXJsJ10gKyAnYnVpbGRzLycgKyBzdHIoYnVpbGRbJ251bWJlciddKQotICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0X3VwZGF0ZXNbcmVxdWVzdF9pZF0gPSB7J3N0YXR1cyc6ICdmYWls
ZWRJZk5vdENvbXBsZXRlZCcsICd1cmwnOiB1cmx9Ci0gICAgICAgICAgICBleGNlcHQgdXJsbGli
Mi5IVFRQRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICAgICAgaWYgZXJyb3IuY29kZSA9PSA0
MDQ6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgYnVpbGRfZXJyb3IgPSBlcnJvcgotICAgICAgICAgICAgZXhjZXB0
IFZhbHVlRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICAgICAgICAgYnVpbGRfZXJyb3IgPSBlcnJv
cgotICAgICAgICAgICAgaWYgYnVpbGRfZXJyb3I6Ci0gICAgICAgICAgICAgICAgcHJpbnQgPj4g
c3lzLnN0ZGVyciwgIkZhaWxlZCB0byBmZXRjaCBidWlsZCAlZCBmb3IgJXM6ICVzIiAlIChidWls
ZF9pbmRleCwgY29uZmlnWydidWlsZGVyJ10sIHN0cihidWlsZF9lcnJvcikpCi0KLSAgICByZXR1
cm4gcmVxdWVzdF91cGRhdGVzCi0KLQotZGVmIHVwZGF0ZV9hbmRfZmV0Y2hfYnVpbGRfcmVxdWVz
dHMoYnVpbGRfcmVxdWVzdHNfdXJsLCBwYXlsb2FkKToKLSAgICB0cnk6Ci0gICAgICAgIHJlc3Bv
bnNlID0gZmV0Y2hfanNvbihidWlsZF9yZXF1ZXN0c191cmwsIHBheWxvYWQ9anNvbi5kdW1wcyhw
YXlsb2FkKSkKLSAgICAgICAgaWYgcmVzcG9uc2VbJ3N0YXR1cyddICE9ICdPSyc6Ci0gICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKHJlc3BvbnNlWydzdGF0dXMnXSkKLSAgICAgICAgcmV0dXJu
IHJlc3BvbnNlCi0gICAgZXhjZXB0IChJT0Vycm9yLCBWYWx1ZUVycm9yKSBhcyBlcnJvcjoKLSAg
ICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJ0ZhaWxlZCB0byB1cGRhdGUgb3IgZmV0Y2ggYnVp
bGQgcmVxdWVzdHMgYXQgJXM6ICVzJyAlIChidWlsZF9yZXF1ZXN0c191cmwsIHN0cihlcnJvcikp
Ci0gICAgcmV0dXJuIHt9Ci0KLQotZGVmIGZpbmRfc3RhbGVfcmVxdWVzdF91cGRhdGVzKGNvbmZp
Z3VyYXRpb25zLCBvcGVuX3JlcXVlc3RzLCByZXF1ZXN0c19vbl9idWlsZGJvdCk6Ci0gICAgcmVx
dWVzdF91cGRhdGVzID0ge30KLSAgICBmb3IgcmVxdWVzdCBpbiBvcGVuX3JlcXVlc3RzOgotICAg
ICAgICByZXF1ZXN0X2lkID0gaW50KHJlcXVlc3RbJ2lkJ10pCi0gICAgICAgIHNob3VsZF9iZV9v
bl9idWlsZGJvdCA9IHJlcXVlc3RbJ3N0YXR1cyddIGluICgnc2NoZWR1bGVkJywgJ3J1bm5pbmcn
KQotICAgICAgICBpZiBzaG91bGRfYmVfb25fYnVpbGRib3QgYW5kIHJlcXVlc3RfaWQgbm90IGlu
IHJlcXVlc3RzX29uX2J1aWxkYm90OgotICAgICAgICAgICAgY29uZmlnID0gY29uZmlnX2Zvcl9y
ZXF1ZXN0KGNvbmZpZ3VyYXRpb25zLCByZXF1ZXN0KQotICAgICAgICAgICAgaWYgY29uZmlnOgot
ICAgICAgICAgICAgICAgIHJlcXVlc3RfdXBkYXRlc1tyZXF1ZXN0X2lkXSA9IHsnc3RhdHVzJzog
J2ZhaWxlZCcsICd1cmwnOiBjb25maWdbJ3VybCddfQotICAgIHJldHVybiByZXF1ZXN0X3VwZGF0
ZXMKLQotCi1kZWYgb3JnYW5pemVfcm9vdF9zZXRzX2J5X2lkX2FuZF9yZXBvc2l0b3J5X25hbWVz
KHJvb3Rfc2V0cywgcm9vdHMpOgotICAgIHJlc3VsdCA9IHt9Ci0gICAgcm9vdF9ieV9pZCA9IHt9
Ci0gICAgZm9yIHJvb3QgaW4gcm9vdHM6Ci0gICAgICAgIHJvb3RfYnlfaWRbcm9vdFsnaWQnXV0g
PSByb290Ci0KLSAgICBmb3Igcm9vdF9zZXQgaW4gcm9vdF9zZXRzOgotICAgICAgICByb290c19i
eV9yZXBvc2l0b3J5ID0ge30KLSAgICAgICAgZm9yIHJvb3RfaWQgaW4gcm9vdF9zZXRbJ3Jvb3Rz
J106Ci0gICAgICAgICAgICByb290ID0gcm9vdF9ieV9pZFtyb290X2lkXQotICAgICAgICAgICAg
cm9vdHNfYnlfcmVwb3NpdG9yeVtyb290WydyZXBvc2l0b3J5J11dID0gcm9vdAotICAgICAgICBy
ZXN1bHRbcm9vdF9zZXRbJ2lkJ11dID0gcm9vdHNfYnlfcmVwb3NpdG9yeQotCi0gICAgcmV0dXJu
IHJlc3VsdAotCi0KLWRlZiBzY2hlZHVsZV9yZXF1ZXN0KGNvbmZpZywgcmVxdWVzdCwgcm9vdF9z
ZXRzKToKLSAgICByb290cyA9IHJvb3Rfc2V0c1tyZXF1ZXN0Wydyb290U2V0J11dCi0gICAgcGF5
bG9hZCA9IHt9Ci0gICAgZm9yIHByb3BlcnR5X25hbWUsIHByb3BlcnR5X3ZhbHVlIGluIGNvbmZp
Z1snYXJndW1lbnRzJ10uaXRlcml0ZW1zKCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBy
b3BlcnR5X3ZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgIHBheWxvYWRbcHJvcGVydHlfbmFtZV0g
PSBwcm9wZXJ0eV92YWx1ZQotICAgICAgICBlbGlmICdyb290JyBpbiBwcm9wZXJ0eV92YWx1ZToK
LSAgICAgICAgICAgIHJlcG9zaXRvcnlfbmFtZSA9IHByb3BlcnR5X3ZhbHVlWydyb290J10KLSAg
ICAgICAgICAgIGlmIHJlcG9zaXRvcnlfbmFtZSBpbiByb290czoKLSAgICAgICAgICAgICAgICBw
YXlsb2FkW3Byb3BlcnR5X25hbWVdID0gcm9vdHNbcmVwb3NpdG9yeV9uYW1lXVsncmV2aXNpb24n
XQotICAgICAgICBlbGlmICdyb290c0V4Y2x1ZGluZycgaW4gcHJvcGVydHlfdmFsdWU6Ci0gICAg
ICAgICAgICBleGNsdWRlZF9yb290cyA9IHByb3BlcnR5X3ZhbHVlWydyb290c0V4Y2x1ZGluZydd
Ci0gICAgICAgICAgICBmaWx0ZXJlZF9yb290cyA9IHt9Ci0gICAgICAgICAgICBmb3Igcm9vdF9u
YW1lIGluIHJvb3RzOgotICAgICAgICAgICAgICAgIGlmIHJvb3RfbmFtZSBub3QgaW4gZXhjbHVk
ZWRfcm9vdHM6Ci0gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkX3Jvb3RzW3Jvb3RfbmFtZV0g
PSByb290c1tyb290X25hbWVdCi0gICAgICAgICAgICBwYXlsb2FkW3Byb3BlcnR5X25hbWVdID0g
anNvbi5kdW1wcyhmaWx0ZXJlZF9yb290cykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBy
aW50ID4+IHN5cy5zdGRlcnIsICJGYWlsZWQgdG8gcHJvY2VzcyBhbiBhcmd1bWVudCAlczogJXMi
ICUgKHByb3BlcnR5X25hbWUsIHByb3BlcnR5X3ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuCi0g
ICAgcGF5bG9hZFtjb25maWdbJ2J1aWxkUmVxdWVzdEFyZ3VtZW50J11dID0gcmVxdWVzdFsnaWQn
XQotCi0gICAgdHJ5OgotICAgICAgICB1cmxsaWIyLnVybG9wZW4odXJsbGliMi5SZXF1ZXN0KGNv
bmZpZ1sndXJsJ10gKyAnZm9yY2UnKSwgdXJsbGliLnVybGVuY29kZShwYXlsb2FkKSkKLSAgICAg
ICAgY29uZmlnWydzY2hlZHVsZWRSZXF1ZXN0cyddLmFkZChyZXF1ZXN0WydpZCddKQotICAgIGV4
Y2VwdCAoSU9FcnJvciwgVmFsdWVFcnJvcikgYXMgZXJyb3I6Ci0gICAgICAgIHByaW50ID4+IHN5
cy5zdGRlcnIsICJGYWlsZWQgdG8gZmV0Y2ggcGVuZGluZyBidWlsZHMgZm9yICVzOiAlcyIgJSAo
Y29uZmlnWydidWlsZGVyJ10sIHN0cihlcnJvcikpCi0KLQotZGVmIGNvbmZpZ19mb3JfcmVxdWVz
dChjb25maWd1cmF0aW9ucywgcmVxdWVzdCk6Ci0gICAgZm9yIGNvbmZpZyBpbiBjb25maWd1cmF0
aW9uczoKLSAgICAgICAgaWYgY29uZmlnWydwbGF0Zm9ybSddID09IHJlcXVlc3RbJ3BsYXRmb3Jt
J10gYW5kIGNvbmZpZ1sndGVzdCddID09IHJlcXVlc3RbJ3Rlc3QnXToKLSAgICAgICAgICAgIHJl
dHVybiBjb25maWcKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBmZXRjaF9qc29uKHVybCwgcGF5
bG9hZD1Ob25lKToKLSAgICByZXF1ZXN0ID0gdXJsbGliMi5SZXF1ZXN0KHVybCkKLSAgICByZXNw
b25zZSA9IHVybGxpYjIudXJsb3BlbihyZXF1ZXN0LCBwYXlsb2FkKS5yZWFkKCkKLSAgICB0cnk6
Ci0gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHJlc3BvbnNlKQotICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGVycm9yOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihlcnJvcikgKyAnXG4n
ICsgcmVzcG9uc2UpCi0KLQotZGVmIHByb3BlcnR5X3ZhbHVlX2Zyb21fYnVpbGQoYnVpbGQsIG5h
bWUpOgotICAgIGZvciBwcm9wIGluIGJ1aWxkLmdldCgncHJvcGVydGllcycsIFtdKToKLSAgICAg
ICAgaWYgcHJvcFswXSA9PSBuYW1lOgotICAgICAgICAgICAgcmV0dXJuIHByb3BbMV0KLSAgICBy
ZXR1cm4gTm9uZQotCi0KLWRlZiByZXF1ZXN0X2lkX2Zyb21fYnVpbGQoY29uZmlnLCBidWlsZCk6
Ci0gICAgam9iX2lkID0gcHJvcGVydHlfdmFsdWVfZnJvbV9idWlsZChidWlsZCwgY29uZmlnWydi
dWlsZFJlcXVlc3RBcmd1bWVudCddKQotICAgIHJldHVybiBpbnQoam9iX2lkKSBpZiBqb2JfaWQg
YW5kIGpvYl9pZC5pc2RpZ2l0KCkgZWxzZSBOb25lCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFp
bl9fIjoKLSAgICBtYWluKCkKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy90b29scy9zeW5jLXdpdGgtYnVpbGRib3QucHkKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1z
eW5jZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pz
L2J1aWxkYm90LXN5bmNlci5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXN5bmNlci5qcwkod29ya2luZyBjb3B5KQpAQCAt
MjAwLDExICsyMDAsMTEgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAgIHsKICAgICAgICAg
YXNzZXJ0KGJ1aWxkUmVxdWVzdCBpbnN0YW5jZW9mIEJ1aWxkUmVxdWVzdCk7CiAKLSAgICAgICAg
bGV0IHJvb3RTZXQgPSBidWlsZFJlcXVlc3Qucm9vdFNldCgpOwotICAgICAgICBhc3NlcnQocm9v
dFNldCBpbnN0YW5jZW9mIFJvb3RTZXQpOworICAgICAgICBjb25zdCBjb21taXRTZXQgPSBidWls
ZFJlcXVlc3QuY29tbWl0U2V0KCk7CisgICAgICAgIGFzc2VydChjb21taXRTZXQgaW5zdGFuY2Vv
ZiBDb21taXRTZXQpOwogCi0gICAgICAgIGxldCByZXBvc2l0b3J5QnlOYW1lID0ge307Ci0gICAg
ICAgIGZvciAobGV0IHJlcG9zaXRvcnkgb2Ygcm9vdFNldC5yZXBvc2l0b3JpZXMoKSkKKyAgICAg
ICAgY29uc3QgcmVwb3NpdG9yeUJ5TmFtZSA9IHt9OworICAgICAgICBmb3IgKGxldCByZXBvc2l0
b3J5IG9mIGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSkKICAgICAgICAgICAgIHJlcG9zaXRvcnlC
eU5hbWVbcmVwb3NpdG9yeS5uYW1lKCldID0gcmVwb3NpdG9yeTsKIAogICAgICAgICBsZXQgcHJv
cGVydGllc1RlbXBsYXRlID0gbnVsbDsKQEAgLTIyMywxNCArMjIzLDE0IEBAIGNsYXNzIEJ1aWxk
Ym90U3luY2VyIHsKICAgICAgICAgICAgICAgICBsZXQgcmVwb3NpdG9yeU5hbWUgPSB2YWx1ZVsn
cm9vdCddOwogICAgICAgICAgICAgICAgIGxldCByZXBvc2l0b3J5ID0gcmVwb3NpdG9yeUJ5TmFt
ZVtyZXBvc2l0b3J5TmFtZV07CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHJlcG9zaXRvcnksIGAi
JHtyZXBvc2l0b3J5TmFtZX0iIG11c3QgYmUgc3BlY2lmaWVkYCk7Ci0gICAgICAgICAgICAgICAg
cHJvcGVydGllc1trZXldID0gcm9vdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9y
eSk7CisgICAgICAgICAgICAgICAgcHJvcGVydGllc1trZXldID0gY29tbWl0U2V0LnJldmlzaW9u
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ3Jvb3RP
cHRpb25zJyBpbiB2YWx1ZSkgewogICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9u
cyA9IHZhbHVlWydyb290T3B0aW9ucyddLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gaW4gcmVw
b3NpdG9yeUJ5TmFtZSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpbHRlcmVkT3B0
aW9ucy5sZW5ndGgsIDEsIGBUaGVyZSBzaG91bGQgYmUgZXhhY3RseSBvbmUgdmFsaWQgcm9vdCBh
bW9uZyAiJHt2YWx1ZVsncm9vdE9wdGlvbnMnXX0iLmApOwotICAgICAgICAgICAgICAgIHByb3Bl
cnRpZXNba2V5XSA9IHJvb3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnlCeU5h
bWVbZmlsdGVyZWRPcHRpb25zWzBdXSk7CisgICAgICAgICAgICAgICAgcHJvcGVydGllc1trZXld
ID0gY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5QnlOYW1lW2ZpbHRl
cmVkT3B0aW9uc1swXV0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoJ3Jv
b3RzRXhjbHVkaW5nJyBpbiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGxldCByZXZpc2lvblNl
dCA9IHRoaXMuX3JldmlzaW9uU2V0RnJvbVJvb3RTZXRXaXRoRXhjbHVzaW9uTGlzdChyb290U2V0
LCB2YWx1ZVsncm9vdHNFeGNsdWRpbmcnXSk7CisgICAgICAgICAgICAgICAgbGV0IHJldmlzaW9u
U2V0ID0gdGhpcy5fcmV2aXNpb25TZXRGcm9tQ29tbWl0U2V0V2l0aEV4Y2x1c2lvbkxpc3QoY29t
bWl0U2V0LCB2YWx1ZVsncm9vdHNFeGNsdWRpbmcnXSk7CiAgICAgICAgICAgICAgICAgcHJvcGVy
dGllc1trZXldID0gSlNPTi5zdHJpbmdpZnkocmV2aXNpb25TZXQpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0yNDAsMTMgKzI0MCwxMyBAQCBjbGFzcyBCdWlsZGJvdFN5bmNlciB7CiAg
ICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOwogICAgIH0KIAotICAgIF9yZXZpc2lvblNldEZyb21S
b290U2V0V2l0aEV4Y2x1c2lvbkxpc3Qocm9vdFNldCwgZXhjbHVzaW9uTGlzdCkKKyAgICBfcmV2
aXNpb25TZXRGcm9tQ29tbWl0U2V0V2l0aEV4Y2x1c2lvbkxpc3QoY29tbWl0U2V0LCBleGNsdXNp
b25MaXN0KQogICAgIHsKLSAgICAgICAgbGV0IHJldmlzaW9uU2V0ID0ge307Ci0gICAgICAgIGZv
ciAobGV0IHJlcG9zaXRvcnkgb2Ygcm9vdFNldC5yZXBvc2l0b3JpZXMoKSkgeworICAgICAgICBj
b25zdCByZXZpc2lvblNldCA9IHt9OworICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5IG9mIGNv
bW1pdFNldC5yZXBvc2l0b3JpZXMoKSkgewogICAgICAgICAgICAgaWYgKGV4Y2x1c2lvbkxpc3Qu
aW5kZXhPZihyZXBvc2l0b3J5Lm5hbWUoKSkgPj0gMCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGxldCBjb21taXQgPSByb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnko
cmVwb3NpdG9yeSk7CisgICAgICAgICAgICBjb25zdCBjb21taXQgPSBjb21taXRTZXQuY29tbWl0
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKICAgICAgICAgICAgIHJldmlzaW9uU2V0W3JlcG9z
aXRvcnkubmFtZSgpXSA9IHsKICAgICAgICAgICAgICAgICBpZDogY29tbWl0LmlkKCksCiAgICAg
ICAgICAgICAgICAgdGltZTogK2NvbW1pdC50aW1lKCksCkluZGV4OiBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdG9vbHMvanMvZGF0YWJhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvZGF0YWJhc2UuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OCw4ICsxNDgsOCBAQCBjb25zdCB0YWJsZVRvUHJlZml4TWFwID0gewogICAgICdw
bGF0Zm9ybXMnOiAncGxhdGZvcm0nLAogICAgICdyZXBvcnRzJzogJ3JlcG9ydCcsCiAgICAgJ3Jl
cG9zaXRvcmllcyc6ICdyZXBvc2l0b3J5JywKLSAgICAncm9vdF9zZXRzJzogJ3Jvb3RzZXQnLAot
ICAgICdyb290cyc6ICdyb290JywKKyAgICAnY29tbWl0X3NldHMnOiAnY29tbWl0c2V0JywKKyAg
ICAnY29tbWl0X3NldF9yZWxhdGlvbnNoaXBzJzogJ2NvbW1pdHNldCcsCiAgICAgJ3J1bl9pdGVy
YXRpb25zJzogJ2l0ZXJhdGlvbicsCiB9CiAKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy90b29scy9qcy92My1tb2RlbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3YzLW1vZGVscy5qcwkod29ya2luZyBjb3B5KQpA
QCAtMjIsOCArMjIsOCBAQCBpbXBvcnRGcm9tVjMoJ21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMn
CiBpbXBvcnRGcm9tVjMoJ21vZGVscy9tZXRyaWMuanMnLCAnTWV0cmljJyk7CiBpbXBvcnRGcm9t
VjMoJ21vZGVscy9wbGF0Zm9ybS5qcycsICdQbGF0Zm9ybScpOwogaW1wb3J0RnJvbVYzKCdtb2Rl
bHMvcmVwb3NpdG9yeS5qcycsICdSZXBvc2l0b3J5Jyk7Ci1pbXBvcnRGcm9tVjMoJ21vZGVscy9y
b290LXNldC5qcycsICdNZWFzdXJlbWVudFJvb3RTZXQnKTsKLWltcG9ydEZyb21WMygnbW9kZWxz
L3Jvb3Qtc2V0LmpzJywgJ1Jvb3RTZXQnKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL2NvbW1pdC1z
ZXQuanMnLCAnTWVhc3VyZW1lbnRDb21taXRTZXQnKTsKK2ltcG9ydEZyb21WMygnbW9kZWxzL2Nv
bW1pdC1zZXQuanMnLCAnQ29tbWl0U2V0Jyk7CiBpbXBvcnRGcm9tVjMoJ21vZGVscy90ZXN0Lmpz
JywgJ1Rlc3QnKTsKIGltcG9ydEZyb21WMygnbW9kZWxzL3Rlc3QtZ3JvdXAuanMnLCAnVGVzdEdy
b3VwJyk7CiBpbXBvcnRGcm9tVjMoJ21vZGVscy90aW1lLXNlcmllcy5qcycsICdUaW1lU2VyaWVz
Jyk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10
YXNrLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0
LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2FuYWx5c2lzLXRhc2stdGVzdHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCBkZXNjcmliZSgnQW5hbHlzaXNUYXNrJywg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgdmFyIGFkYXB0b3IgPSBuZXcgTWVhc3VyZW1lbnRB
ZGFwdG9yKG1lYXN1cmVtZW50Q2x1c3RlcigpLmZvcm1hdE1hcCk7CiAgICAgICAgICAgICB2YXIg
YWRhcHRlZE1lYXN1cmVtZW50ID0gYWRhcHRvci5hcHBseVRvKG1lYXN1cmVtZW50Q2x1c3Rlcigp
LmNvbmZpZ3VyYXRpb25zLmN1cnJlbnRbMF0pOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFk
YXB0ZWRNZWFzdXJlbWVudC5pZCwgMzcxODgxNjEpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGFkYXB0ZWRNZWFzdXJlbWVudC5yb290U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9k
ZWxzLndlYmtpdCkucmV2aXNpb24oKSwgJzE5NjA1MScpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGFkYXB0ZWRNZWFzdXJlbWVudC5jb21taXRTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1v
Y2tNb2RlbHMud2Via2l0KS5yZXZpc2lvbigpLCAnMTk2MDUxJyk7CiAKICAgICAgICAgICAgIHZh
ciBwcm9taXNlID0gQW5hbHlzaXNUYXNrLmZldGNoQWxsKCk7CiAgICAgICAgICAgICByZXF1ZXN0
c1swXS5yZXNvbHZlKHNhbXBsZUFuYWx5c2lzVGFzaygpKTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkLXJlcXVlc3QtdGVzdHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGQtcmVxdWVzdC10ZXN0
cy5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQt
dGVzdHMvYnVpbGQtcmVxdWVzdC10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUsMjAgKzE1
LDIwIEBAIGZ1bmN0aW9uIHNhbXBsZUJ1aWxkUmVxdWVzdERhdGEoKQogICAgICAgICAgICAgInBs
YXRmb3JtIjogIjMxIiwKICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAg
ICAgICAib3JkZXIiOiAiMCIsCi0gICAgICAgICAgICAicm9vdFNldCI6ICI0MjU1IiwKKyAgICAg
ICAgICAgICJjb21taXRTZXQiOiAiNDI1NSIsCiAgICAgICAgICAgICAic3RhdHVzIjogInBlbmRp
bmciLAogICAgICAgICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBudWxs
LAogICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKICAgICAgICAgfV0sCi0g
ICAgICAgICJyb290U2V0cyI6IFt7CisgICAgICAgICJjb21taXRTZXRzIjogW3sKICAgICAgICAg
ICAgICJpZCI6ICI0MjU1IiwKLSAgICAgICAgICAgICJyb290cyI6IFsiODc4MzIiLCAiOTMxMTYi
XQorICAgICAgICAgICAgImNvbW1pdHMiOiBbIjg3ODMyIiwgIjkzMTE2Il0KICAgICAgICAgfSwg
ewogICAgICAgICAgICAgImlkIjogIjQyNTYiLAotICAgICAgICAgICAgInJvb3RzIjogWyI4Nzgz
MiIsICI5NjMzNiJdCisgICAgICAgICAgICAiY29tbWl0cyI6IFsiODc4MzIiLCAiOTYzMzYiXQog
ICAgICAgICB9XSwKLSAgICAgICAgInJvb3RzIjogW3sKKyAgICAgICAgImNvbW1pdHMiOiBbewog
ICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIjki
LAogICAgICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1QTI4NCIsCkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qt
c3luY2VyLXRlc3RzLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdW5pdC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTExMCw3ICsxMTAsNyBAQCBmdW5jdGlvbiBzYW1wbGVpT1NDb25maWdXaXRoRXhwYW5zaW9u
cygpCiAgICAgfQogfQogCi1sZXQgc2FtcGxlUm9vdFNldERhdGEgPSB7CitsZXQgc2FtcGxlQ29t
bWl0U2V0RGF0YSA9IHsKICAgICAnV2ViS2l0JzogewogICAgICAgICAnaWQnOiAnMTExMTI3JywK
ICAgICAgICAgJ3RpbWUnOiAxNDU2OTU1ODA3MzM0LApAQCAtMjA3LDE0ICsyMDcsMTQgQEAgZnVu
Y3Rpb24gY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KHBsYXRmbwogICAgIGFzc2VydChwbGF0Zm9y
bSBpbnN0YW5jZW9mIFBsYXRmb3JtKTsKICAgICBhc3NlcnQodGVzdCBpbnN0YW5jZW9mIFRlc3Qp
OwogCi0gICAgbGV0IHJvb3RTZXQgPSBSb290U2V0LmVuc3VyZVNpbmdsZXRvbignNDE5NycsIHty
b290czogWworICAgIGxldCBjb21taXRTZXQgPSBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKCc0
MTk3Jywge2NvbW1pdHM6IFsKICAgICAgICAgeydpZCc6ICcxMTExMjcnLCAndGltZSc6IDE0NTY5
NTU4MDczMzQsICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy53ZWJraXQsICdyZXZpc2lvbic6ICcx
OTc0NjMnfSwKICAgICAgICAgeydpZCc6ICcxMTEyMzcnLCAndGltZSc6IDE0NTY5MzE4NzQwMDAs
ICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy5zaGFyZWRSZXBvc2l0b3J5LCAncmV2aXNpb24nOiAn
ODAyMjknfSwKICAgICAgICAgeydpZCc6ICcxMTEyMzknLCAndGltZSc6IDE0NTY5MzE4NzQwMDAs
ICdyZXBvc2l0b3J5JzogTW9ja01vZGVscy53ZWJraXRHaXQsICdyZXZpc2lvbic6ICc5YWJjZGVm
J30sCiAgICAgICAgIHsnaWQnOiAnODg5MzAnLCAndGltZSc6IDAsICdyZXBvc2l0b3J5JzogTW9j
a01vZGVscy5pb3MsICdyZXZpc2lvbic6ICcxM0E0NTInfSwKICAgICBdfSk7CiAKLSAgICBsZXQg
cmVxdWVzdCA9IEJ1aWxkUmVxdWVzdC5lbnN1cmVTaW5nbGV0b24oJzE2NzMzLScgKyBwbGF0Zm9y
bS5pZCgpLCB7J3Jvb3RTZXQnOiByb290U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAncGxhdGZv
cm0nOiBwbGF0Zm9ybSwgJ3Rlc3QnOiB0ZXN0fSk7CisgICAgbGV0IHJlcXVlc3QgPSBCdWlsZFJl
cXVlc3QuZW5zdXJlU2luZ2xldG9uKCcxNjczMy0nICsgcGxhdGZvcm0uaWQoKSwgeydjb21taXRT
ZXQnOiBjb21taXRTZXQsICdzdGF0dXMnOiAncGVuZGluZycsICdwbGF0Zm9ybSc6IHBsYXRmb3Jt
LCAndGVzdCc6IHRlc3R9KTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtMjMxLDcgKzIz
MSw3IEBAIGZ1bmN0aW9uIHNhbXBsZVBlbmRpbmdCdWlsZChidWlsZFJlcXVlc3QKICAgICAgICAg
ICAgIFsncmVhc29uJywgJ2ZvcmNlIGJ1aWxkJywnRm9yY2UgQnVpbGQgRm9ybSddLAogICAgICAg
ICAgICAgWwogICAgICAgICAgICAgICAgICdyb290c19kaWN0JywKLSAgICAgICAgICAgICAgICBK
U09OLnN0cmluZ2lmeShzYW1wbGVSb290U2V0RGF0YSksCisgICAgICAgICAgICAgICAgSlNPTi5z
dHJpbmdpZnkoc2FtcGxlQ29tbWl0U2V0RGF0YSksCiAgICAgICAgICAgICAgICAgJ0ZvcmNlIEJ1
aWxkIEZvcm0nCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgWydzbGF2ZW5hbWUnLCBzbGF2
ZU5hbWUsICcnXSwKQEAgLTI4MCw3ICsyODAsNyBAQCBmdW5jdGlvbiBzYW1wbGVJblByb2dyZXNz
QnVpbGQoc2xhdmVOYW1lCiAgICAgICAgICAgICBbJ2Rlc2lyZWRfaW1hZ2UnLCAnMTNBNDUyJywg
J0ZvcmNlIEJ1aWxkIEZvcm0nXSwKICAgICAgICAgICAgIFsnb3duZXInLCAnPHVua25vd24+Jywg
J0ZvcmNlIEJ1aWxkIEZvcm0nXSwKICAgICAgICAgICAgIFsncmVhc29uJywgJ2ZvcmNlIGJ1aWxk
JywgJ0ZvcmNlIEJ1aWxkIEZvcm0nXSwKLSAgICAgICAgICAgIFsncm9vdHNfZGljdCcsIEpTT04u
c3RyaW5naWZ5KHNhbXBsZVJvb3RTZXREYXRhKSwgJ0ZvcmNlIEJ1aWxkIEZvcm0nXSwKKyAgICAg
ICAgICAgIFsncm9vdHNfZGljdCcsIEpTT04uc3RyaW5naWZ5KHNhbXBsZUNvbW1pdFNldERhdGEp
LCAnRm9yY2UgQnVpbGQgRm9ybSddLAogICAgICAgICAgICAgWydzY2hlZHVsZXInLCAnQUJUZXN0
LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJywgJ1NjaGVkdWxlciddLAog
ICAgICAgICAgICAgWydzbGF2ZW5hbWUnLCBzbGF2ZU5hbWUgfHwgJ0FCVGVzdC1pUGFkLTAnLCAn
QnVpbGRTbGF2ZSddLAogICAgICAgICBdLApAQCAtMzU2LDcgKzM1Niw3IEBAIGZ1bmN0aW9uIHNh
bXBsZUZpbmlzaGVkQnVpbGQoYnVpbGRSZXF1ZXMKICAgICAgICAgICAgIFsnZGVzaXJlZF9pbWFn
ZScsICcxM0E0NTInLCAnRm9yY2UgQnVpbGQgRm9ybSddLAogICAgICAgICAgICAgWydvd25lcics
ICc8dW5rbm93bj4nLCAnRm9yY2UgQnVpbGQgRm9ybSddLAogICAgICAgICAgICAgWydyZWFzb24n
LCAnZm9yY2UgYnVpbGQnLCAnRm9yY2UgQnVpbGQgRm9ybSddLAotICAgICAgICAgICAgWydyb290
c19kaWN0JywgSlNPTi5zdHJpbmdpZnkoc2FtcGxlUm9vdFNldERhdGEpLCAnRm9yY2UgQnVpbGQg
Rm9ybSddLAorICAgICAgICAgICAgWydyb290c19kaWN0JywgSlNPTi5zdHJpbmdpZnkoc2FtcGxl
Q29tbWl0U2V0RGF0YSksICdGb3JjZSBCdWlsZCBGb3JtJ10sCiAgICAgICAgICAgICBbJ3NjaGVk
dWxlcicsICdBQlRlc3QtaVBhZC1SdW5CZW5jaG1hcmstVGVzdHMtRm9yY2VTY2hlZHVsZXInLCAn
U2NoZWR1bGVyJ10sCiAgICAgICAgICAgICBbJ3NsYXZlbmFtZScsIHNsYXZlTmFtZSB8fCAnQUJU
ZXN0LWlQYWQtMCcsICdCdWlsZFNsYXZlJ10sCiAgICAgICAgIF0sCkBAIC01OTQsMTMgKzU5NCwx
MyBAQCBkZXNjcmliZSgnQnVpbGRib3RTeW5jZXInLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGl0
KCdzaG91bGQgcmVzb2x2ZSAicm9vdE9wdGlvbnMiJywgZnVuY3Rpb24gKCkgewogICAgICAgICAg
ICAgbGV0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9hZENvbmZpZyhSZW1vdGVBUEksIHNh
bXBsZWlPU0NvbmZpZygpKTsKICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gc3luY2Vyc1sw
XS5fcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVzdChjcmVhdGVTYW1wbGVCdWlsZFJlcXVlc3QoTW9j
a01vZGVscy5pcGhvbmUsIE1vY2tNb2RlbHMuc3BlZWRvbWV0ZXIpKTsKLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChwcm9wZXJ0aWVzWydyb290c19kaWN0J10sIEpTT04uc3RyaW5naWZ5KHNhbXBs
ZVJvb3RTZXREYXRhKSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1sncm9v
dHNfZGljdCddLCBKU09OLnN0cmluZ2lmeShzYW1wbGVDb21taXRTZXREYXRhKSk7CiAgICAgICAg
IH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgcmVzb2x2ZSAicm9vdHNFeGNsdWRpbmciJywgZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgbGV0IHN5bmNlcnMgPSBCdWlsZGJvdFN5bmNlci5fbG9h
ZENvbmZpZyhSZW1vdGVBUEksIHNhbXBsZWlPU0NvbmZpZygpKTsKICAgICAgICAgICAgIGxldCBw
cm9wZXJ0aWVzID0gc3luY2Vyc1swXS5fcHJvcGVydGllc0ZvckJ1aWxkUmVxdWVzdChjcmVhdGVT
YW1wbGVCdWlsZFJlcXVlc3QoTW9ja01vZGVscy5pcGhvbmUsIE1vY2tNb2RlbHMuc3BlZWRvbWV0
ZXIpKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChwcm9wZXJ0aWVzWydyb290c19kaWN0J10s
IEpTT04uc3RyaW5naWZ5KHNhbXBsZVJvb3RTZXREYXRhKSk7CisgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocHJvcGVydGllc1sncm9vdHNfZGljdCddLCBKU09OLnN0cmluZ2lmeShzYW1wbGVDb21t
aXRTZXREYXRhKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSBmb3IgdGhlIGJ1aWxkIHJlcXVlc3QgaWQnLCBmdW5jdGlvbiAoKSB7CkluZGV4OiBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1hZGFwdG9yLXRl
c3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3Rz
L21lYXN1cmVtZW50LWFkYXB0b3ItdGVzdHMuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LWFkYXB0b3ItdGVzdHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTY2LDIzICs2NiwyMyBAQCBkZXNjcmliZSgnTWVhc3VyZW1l
bnRBZGFwdG9yJywgZnVuY3Rpb24gCiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYWRhcHRvci5h
cHBseVRvKHNhbXBsZUN1c3RvbUJhc2VsaW5lRGF0YSkuYnVpbGQoKSwgbnVsbCk7CiAgICAgICAg
IH0pOwogCi0gICAgICAgIGl0KCdzaG91bGQgYWRhcHQgcmV2aXNpb24gaW5mb3JtYXRpb24gYXMg
YSBSb290U2V0IG9iamVjdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaXQoJ3Nob3VsZCBhZGFw
dCByZXZpc2lvbiBpbmZvcm1hdGlvbiBhcyBhIENvbW1pdFNldCBvYmplY3QnLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICB2YXIgYWRhcHRvciA9IG5ldyBNZWFzdXJlbWVudEFkYXB0b3Ioc2Ft
cGxlQ2x1c3Rlci5mb3JtYXRNYXApOwotICAgICAgICAgICAgdmFyIHJvb3RTZXQgPSBhZGFwdG9y
LmFwcGx5VG8oc2FtcGxlRGF0YSkucm9vdFNldCgpOwotICAgICAgICAgICAgYXNzZXJ0Lm9rKHJv
b3RTZXQgaW5zdGFuY2VvZiBSb290U2V0KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb290
U2V0LmxhdGVzdENvbW1pdFRpbWUoKSwgMTQ0NzcwNzA1NTU3Nik7CisgICAgICAgICAgICB2YXIg
Y29tbWl0U2V0ID0gYWRhcHRvci5hcHBseVRvKHNhbXBsZURhdGEpLmNvbW1pdFNldCgpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKGNvbW1pdFNldCBpbnN0YW5jZW9mIENvbW1pdFNldCk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LmxhdGVzdENvbW1pdFRpbWUoKSwgMTQ0Nzcw
NzA1NTU3Nik7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGl0KCdzaG91bGQgYWRhcHQgT1MgWCB2
ZXJzaW9uIGFzIGEgQ29tbWl0TG9nIG9iamVjdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IHZhciBhZGFwdG9yID0gbmV3IE1lYXN1cmVtZW50QWRhcHRvcihzYW1wbGVDbHVzdGVyLmZvcm1h
dE1hcCk7Ci0gICAgICAgICAgICB2YXIgcm9vdFNldCA9IGFkYXB0b3IuYXBwbHlUbyhzYW1wbGVE
YXRhKS5yb290U2V0KCk7Ci0gICAgICAgICAgICBhc3NlcnQub2socm9vdFNldCBpbnN0YW5jZW9m
IFJvb3RTZXQpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvb3RTZXQubGF0ZXN0Q29tbWl0
VGltZSgpLCAxNDQ3NzA3MDU1NTc2KTsKKyAgICAgICAgICAgIHZhciBjb21taXRTZXQgPSBhZGFw
dG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQu
b2soY29tbWl0U2V0IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb21taXRTZXQubGF0ZXN0Q29tbWl0VGltZSgpLCAxNDQ3NzA3MDU1NTc2KTsKIAotICAg
ICAgICAgICAgYXNzZXJ0Lm9rKHJvb3RTZXQucmVwb3NpdG9yaWVzKCkuaW5kZXhPZihNb2NrTW9k
ZWxzLm9zeCkgPj0gMCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocm9vdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpLCAnMTAuMTEgMTVEMjEnKTsKKyAgICAgICAg
ICAgIGFzc2VydC5vayhjb21taXRTZXQucmVwb3NpdG9yaWVzKCkuaW5kZXhPZihNb2NrTW9kZWxz
Lm9zeCkgPj0gMCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9u
Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCksICcxMC4xMSAxNUQyMScpOwogCi0gICAgICAg
ICAgICB2YXIgY29tbWl0ID0gcm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMu
b3N4KTsKKyAgICAgICAgICAgIHZhciBjb21taXQgPSBjb21taXRTZXQuY29tbWl0Rm9yUmVwb3Np
dG9yeShNb2NrTW9kZWxzLm9zeCk7CiAgICAgICAgICAgICBhc3NlcnQub2soY29tbWl0IGluc3Rh
bmNlb2YgQ29tbWl0TG9nKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXQucmVwb3Np
dG9yeSgpLCBNb2NrTW9kZWxzLm9zeCk7CiAgICAgICAgICAgICBhc3NlcnQub2soY29tbWl0LnRp
bWUoKSBpbnN0YW5jZW9mIERhdGUpOwpAQCAtOTUsMTIgKzk1LDEyIEBAIGRlc2NyaWJlKCdNZWFz
dXJlbWVudEFkYXB0b3InLCBmdW5jdGlvbiAKIAogICAgICAgICBpdCgnc2hvdWxkIGFkYXB0IFdl
YktpdCByZXZpc2lvbiBhcyBhIENvbW1pdExvZyBvYmplY3QnLCBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICB2YXIgYWRhcHRvciA9IG5ldyBNZWFzdXJlbWVudEFkYXB0b3Ioc2FtcGxlQ2x1c3Rl
ci5mb3JtYXRNYXApOwotICAgICAgICAgICAgdmFyIHJvb3RTZXQgPSBhZGFwdG9yLmFwcGx5VG8o
c2FtcGxlRGF0YSkucm9vdFNldCgpOworICAgICAgICAgICAgdmFyIGNvbW1pdFNldCA9IGFkYXB0
b3IuYXBwbHlUbyhzYW1wbGVEYXRhKS5jb21taXRTZXQoKTsKIAotICAgICAgICAgICAgYXNzZXJ0
Lm9rKHJvb3RTZXQucmVwb3NpdG9yaWVzKCkuaW5kZXhPZihNb2NrTW9kZWxzLndlYmtpdCkgPj0g
MCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocm9vdFNldC5yZXZpc2lvbkZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy53ZWJraXQpLCAnMTkyNDgzJyk7CisgICAgICAgICAgICBhc3NlcnQub2so
Y29tbWl0U2V0LnJlcG9zaXRvcmllcygpLmluZGV4T2YoTW9ja01vZGVscy53ZWJraXQpID49IDAp
OworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy53ZWJraXQpLCAnMTkyNDgzJyk7CiAKLSAgICAgICAgICAgIHZhciBjb21t
aXQgPSByb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQpOworICAg
ICAgICAgICAgdmFyIGNvbW1pdCA9IGNvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tN
b2RlbHMud2Via2l0KTsKICAgICAgICAgICAgIGFzc2VydC5vayhjb21taXQgaW5zdGFuY2VvZiBD
b21taXRMb2cpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5yZXBvc2l0b3J5KCks
IE1vY2tNb2RlbHMud2Via2l0KTsKICAgICAgICAgICAgIGFzc2VydC5vayhjb21taXQudGltZSgp
IGluc3RhbmNlb2YgRGF0ZSk7CkBAIC0xMTQsMTEgKzExNCwxMSBAQCBkZXNjcmliZSgnTWVhc3Vy
ZW1lbnRBZGFwdG9yJywgZnVuY3Rpb24gCiAKICAgICAgICAgaXQoJ3Nob3VsZCBub3QgY3JlYXRl
IHNlcGFyYXRlIENvbW1pdExvZyBvYmplY3QgZm9yIHRoZSBzYW1lIHJldmlzaW9uJywgZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgdmFyIGFkYXB0b3IgPSBuZXcgTWVhc3VyZW1lbnRBZGFwdG9y
KHNhbXBsZUNsdXN0ZXIuZm9ybWF0TWFwKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChhZGFw
dG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9j
a01vZGVscy53ZWJraXQpLAotICAgICAgICAgICAgICAgIGFkYXB0b3IuYXBwbHlUbyhzYW1wbGVE
YXRhKS5yb290U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCkpOwor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFkYXB0b3IuYXBwbHlUbyhzYW1wbGVEYXRhKS5jb21t
aXRTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Via2l0KSwKKyAgICAgICAg
ICAgICAgICBhZGFwdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuY29tbWl0U2V0KCkuY29tbWl0Rm9y
UmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCkpOwogCi0gICAgICAgICAgICBhc3NlcnQuZXF1
YWwoYWRhcHRvci5hcHBseVRvKHNhbXBsZURhdGEpLnJvb3RTZXQoKS5jb21taXRGb3JSZXBvc2l0
b3J5KE1vY2tNb2RlbHMub3N4KSwKLSAgICAgICAgICAgICAgICBhZGFwdG9yLmFwcGx5VG8oc2Ft
cGxlRGF0YSkucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChhZGFwdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuY29t
bWl0U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCksCisgICAgICAgICAg
ICAgICAgYWRhcHRvci5hcHBseVRvKHNhbXBsZURhdGEpLmNvbW1pdFNldCgpLmNvbW1pdEZvclJl
cG9zaXRvcnkoTW9ja01vZGVscy5vc3gpKTsKICAgICAgICAgfSk7CiAKICAgICB9KTsKSW5kZXg6
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC10ZXN0
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9t
ZWFzdXJlbWVudC1zZXQtdGVzdHMuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL21lYXN1cmVtZW50LXNldC10ZXN0cy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtODAyLDExICs4MDIsMTEgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0Jywg
KCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludC5pZCwgMjY1MzAwMzEp
OwogCiAgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0VGltZSA9IDE0ODIzOTg1NjI5NTA7Ci0g
ICAgICAgICAgICAgICAgY29uc3Qgcm9vdFNldCA9IHBvaW50LnJvb3RTZXQoKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnQucm9vdFNldCgpLCByb290U2V0KTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKHJvb3RTZXQucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRd
KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm9vdFNldC5yZXZpc2lvbkZvclJlcG9z
aXRvcnkod2Via2l0KSwgJzIxMDA5NicpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdCA9
IHJvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOworICAgICAgICAgICAgICAgIGNv
bnN0IGNvbW1pdFNldCA9IHBvaW50LmNvbW1pdFNldCgpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChwb2ludC5jb21taXRTZXQoKSwgY29tbWl0U2V0KTsKKyAgICAgICAgICAgICAgICBh
c3NlcnQuZGVlcEVxdWFsKGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSwgW3dlYmtpdF0pOworICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksICcyMTAwOTYnKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSBjb21t
aXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXQucmVwb3NpdG9yeSgpLCB3ZWJraXQpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbCgrY29tbWl0LnRpbWUoKSwgY29tbWl0VGltZSk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKGNvbW1pdC5hdXRob3IoKSwgbnVsbCk7CkBAIC04MTUsNyArODE1LDcgQEAg
ZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXQudXJsKCksICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8y
MTAwOTYnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0LmxhYmVsKCksICdy
MjEwMDk2Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC50aXRsZSgpLCAn
V2ViS2l0IGF0IHIyMTAwOTYnKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm9vdFNl
dC5sYXRlc3RDb21taXRUaW1lKCksIGNvbW1pdFRpbWUpOworICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXRTZXQubGF0ZXN0Q29tbWl0VGltZSgpLCBjb21taXRUaW1lKTsKIAogICAg
ICAgICAgICAgICAgIGNvbnN0IGJ1aWxkID0gcG9pbnQuYnVpbGQoKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocG9pbnQuYnVpbGQoKSwgYnVpbGQpOwpAQCAtODM2LDEyICs4MzYsMTIg
QEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgKCkgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChwb2ludC5pZCwgMjY1MzA3NzkpOwogCiAgICAgICAgICAgICAgICAgY29uc3Qg
Y29tbWl0VGltZSA9IDE0ODI0MjQ4NzA3Mjk7Ci0gICAgICAgICAgICAgICAgY29uc3Qgcm9vdFNl
dCA9IHBvaW50LnJvb3RTZXQoKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocm9vdFNl
dC5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDA5NycpOwotICAgICAgICAgICAg
ICAgIGNvbnN0IGNvbW1pdCA9IHJvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IHBvaW50LmNvbW1pdFNldCgpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KHdlYmtpdCksICcyMTAwOTcnKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSBjb21t
aXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeSh3ZWJraXQpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbCgrY29tbWl0LnRpbWUoKSwgY29tbWl0VGltZSk7CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbW1pdC5yZXZpc2lvbigpLCAnMjEwMDk3Jyk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHJvb3RTZXQubGF0ZXN0Q29tbWl0VGltZSgpLCBjb21taXRUaW1lKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LmxhdGVzdENvbW1pdFRpbWUoKSwg
Y29tbWl0VGltZSk7CiAKICAgICAgICAgICAgICAgICBjb25zdCBidWlsZCA9IHBvaW50LmJ1aWxk
KCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkLmJ1aWxkZXIoKSwgYnVpbGRl
cik7CkBAIC04NTYsMzUgKzg1NiwzNSBAQCBkZXNjcmliZSgnTWVhc3VyZW1lbnRTZXQnLCAoKSA9
PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50Lm1hcmtlZE91dGxpZXIsIHRy
dWUpOwogICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHBvaW50c1syXS5pZCwgMjY1MzIyNzUpOwotICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChwb2ludHNbMl0ucm9vdFNldCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAn
MjEwMTAyJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1syXS5jb21taXRT
ZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDEwMicpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbCgrcG9pbnRzWzJdLmJ1aWxkKCkuYnVpbGRUaW1lKCksIDE0ODI0
MzYwNDE4NjUpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbMl0uYnVpbGQo
KS5idWlsZE51bWJlcigpLCAxMDg3OSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBv
aW50c1syXS50aW1lLCAxNDgyNDMxNDY0MzcxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzJdLnZhbHVlLCAxMzQuMjcyNSk7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocG9pbnRzWzNdLmlkLCAyNjU0NzIyNik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1szXS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcy
MTAxNjgnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzNdLmNvbW1pdFNl
dCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMTY4Jyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKCtwb2ludHNbM10uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4Mjg1
MjQ1MjE0Myk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1szXS5idWlsZCgp
LmJ1aWxkTnVtYmVyKCksIDEwOTAyKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9p
bnRzWzNdLnRpbWUsIDE0ODI4NTI0MTI3MzUpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbM10udmFsdWUsIDE1MC45NjI1KTsKIAogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChwb2ludHNbNF0uaWQsIDI2NTU5OTE1KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzRdLnJvb3RTZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIx
MDIyMicpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbNF0uY29tbWl0U2V0
KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAyMjInKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoK3BvaW50c1s0XS5idWlsZCgpLmJ1aWxkVGltZSgpLCAxNDgzMzQ3
OTI2NDI5KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzRdLmJ1aWxkKCku
YnVpbGROdW1iZXIoKSwgMTA5MjQpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2lu
dHNbNF0udGltZSwgMTQ4MzM0NzczMjA1MSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1s0XS52YWx1ZSwgMTQxLjcyKTsKIAogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbNV0uaWQsIDI2NTY0Mzg4KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cG9pbnRzWzVdLnJvb3RTZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDIz
MScpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbNV0uY29tbWl0U2V0KCku
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAyMzEnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoK3BvaW50c1s1XS5idWlsZCgpLmJ1aWxkVGltZSgpLCAxNDgzNDE1NDI2
MDQ5KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzVdLmJ1aWxkKCkuYnVp
bGROdW1iZXIoKSwgMTA5MzApOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNb
NV0udGltZSwgMTQ4MzQxMjE3MTUzMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBv
aW50c1s1XS52YWx1ZSwgMTM4LjEzMTI1KTsKIAogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbNl0uaWQsIDI2NTY4ODY3KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cG9pbnRzWzZdLnJvb3RTZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDI0
MCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbNl0uY29tbWl0U2V0KCku
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAyNDAnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwoK3BvaW50c1s2XS5idWlsZCgpLmJ1aWxkVGltZSgpLCAxNDgzNDY5NjQy
OTkzKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzZdLmJ1aWxkKCkuYnVp
bGROdW1iZXIoKSwgMTA5MzUpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNb
Nl0udGltZSwgMTQ4MzQ2OTU4NDM0Nyk7CkBAIC05MDQsNDIgKzkwNCw0MiBAQCBkZXNjcmliZSgn
TWVhc3VyZW1lbnRTZXQnLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXSA9
IGZ1bGxTZXJpZXMuZmluZFBvaW50QnlJbmRleChpKTsKIAogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChwb2ludHNbMF0uaWQsIDI2NTMwMDMxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocG9pbnRzWzBdLnJvb3RTZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwg
JzIxMDA5NicpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbMF0uY29tbWl0
U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAwOTYnKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoK3BvaW50c1swXS5idWlsZCgpLmJ1aWxkVGltZSgpLCAxNDgy
NDEzMjIyMzExKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzBdLmJ1aWxk
KCkuYnVpbGROdW1iZXIoKSwgMTA4NzcpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChw
b2ludHNbMF0udGltZSwgMTQ4MjM5ODU2Mjk1MCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1swXS52YWx1ZSwgMTM1LjI2Mzc1KTsKIAogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChwb2ludHNbMV0uaWQsIDI2NTMyMjc1KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocG9pbnRzWzFdLnJvb3RTZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwg
JzIxMDEwMicpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbMV0uY29tbWl0
U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAxMDInKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoK3BvaW50c1sxXS5idWlsZCgpLmJ1aWxkVGltZSgpLCAxNDgy
NDM2MDQxODY1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzFdLmJ1aWxk
KCkuYnVpbGROdW1iZXIoKSwgMTA4NzkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChw
b2ludHNbMV0udGltZSwgMTQ4MjQzMTQ2NDM3MSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1sxXS52YWx1ZSwgMTM0LjI3MjUpOwogCiAgICAgICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKHBvaW50c1syXS5pZCwgMjY1NDcyMjYpOwotICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChwb2ludHNbMl0ucm9vdFNldCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAn
MjEwMTY4Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1syXS5jb21taXRT
ZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDE2OCcpOwogICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbCgrcG9pbnRzWzJdLmJ1aWxkKCkuYnVpbGRUaW1lKCksIDE0ODI4
NTI0NTIxNDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbMl0uYnVpbGQo
KS5idWlsZE51bWJlcigpLCAxMDkwMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBv
aW50c1syXS50aW1lLCAxNDgyODUyNDEyNzM1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzJdLnZhbHVlLCAxNTAuOTYyNSk7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocG9pbnRzWzNdLmlkLCAyNjU1OTkxNSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1szXS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcy
MTAyMjInKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzNdLmNvbW1pdFNl
dCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjIyJyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKCtwb2ludHNbM10uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MzM0
NzkyNjQyOSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1szXS5idWlsZCgp
LmJ1aWxkTnVtYmVyKCksIDEwOTI0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9p
bnRzWzNdLnRpbWUsIDE0ODMzNDc3MzIwNTEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbM10udmFsdWUsIDE0MS43Mik7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzRdLmlkLCAyNjU2NDM4OCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1s0XS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAy
MzEnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzRdLmNvbW1pdFNldCgp
LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjMxJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKCtwb2ludHNbNF0uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MzQxNTQy
NjA0OSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s0XS5idWlsZCgpLmJ1
aWxkTnVtYmVyKCksIDEwOTMwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRz
WzRdLnRpbWUsIDE0ODM0MTIxNzE1MzEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChw
b2ludHNbNF0udmFsdWUsIDEzOC4xMzEyNSk7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzVdLmlkLCAyNjU2ODg2Nyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1s1XS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAy
NDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzVdLmNvbW1pdFNldCgp
LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjQwJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKCtwb2ludHNbNV0uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MzQ2OTY0
Mjk5Myk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s1XS5idWlsZCgpLmJ1
aWxkTnVtYmVyKCksIDEwOTM1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRz
WzVdLnRpbWUsIDE0ODM0Njk1ODQzNDcpOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvdGVzdC1ncm91cHMtdGVzdHMuanMJKHJldmlzaW9u
IDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3Jv
dXBzLXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHNh
bXBsZVRlc3RHcm91cCgpIHsKICAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAw
LAogICAgICAgICAgICAgImhpZGRlbiI6IGZhbHNlLAogICAgICAgICAgICAgImJ1aWxkUmVxdWVz
dHMiOiBbIjE2OTg1IiwgIjE2OTg2IiwgIjE2OTg3IiwgIjE2OTg4IiwgIjE2OTg5IiwgIjE2OTkw
IiwgIjE2OTkxIiwgIjE2OTkyIl0sCi0gICAgICAgICAgICAicm9vdFNldHMiOiBbIjQyNTUiLCAi
NDI1NiIsICI0MjU1IiwgIjQyNTYiLCAiNDI1NSIsICI0MjU2IiwgIjQyNTUiLCAiNDI1NiJdCisg
ICAgICAgICAgICAiY29tbWl0U2V0cyI6IFsiNDI1NSIsICI0MjU2IiwgIjQyNTUiLCAiNDI1NiIs
ICI0MjU1IiwgIjQyNTYiLCAiNDI1NSIsICI0MjU2Il0KICAgICAgICAgfQogICAgICAgICBdLAog
ICAgICAgICAiYnVpbGRSZXF1ZXN0cyI6IFt7CkBAIC0yNSw3ICsyNSw3IEBAIGZ1bmN0aW9uIHNh
bXBsZVRlc3RHcm91cCgpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAgICAgICAg
ICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVyIjogIjAiLAotICAg
ICAgICAgICAgInJvb3RTZXQiOiAiNDI1NSIsCisgICAgICAgICAgICAiY29tbWl0U2V0IjogIjQy
NTUiLAogICAgICAgICAgICAgInN0YXR1cyI6ICJwZW5kaW5nIiwKICAgICAgICAgICAgICJ1cmwi
OiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTM3LDcgKzM3LDcgQEAgZnVu
Y3Rpb24gc2FtcGxlVGVzdEdyb3VwKCkgewogICAgICAgICAgICAgInBsYXRmb3JtIjogIjMxIiwK
ICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAgICAgICAib3JkZXIiOiAi
MSIsCi0gICAgICAgICAgICAicm9vdFNldCI6ICI0MjU2IiwKKyAgICAgICAgICAgICJjb21taXRT
ZXQiOiAiNDI1NiIsCiAgICAgICAgICAgICAic3RhdHVzIjogInBlbmRpbmciLAogICAgICAgICAg
ICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBudWxsLApAQCAtNTAsNyArNTAs
NyBAQCBmdW5jdGlvbiBzYW1wbGVUZXN0R3JvdXAoKSB7CiAgICAgICAgICAgICAicGxhdGZvcm0i
OiAiMzEiLAogICAgICAgICAgICAgInRlc3RHcm91cCI6ICIyMTI4IiwKICAgICAgICAgICAgICJv
cmRlciI6ICIyIiwKLSAgICAgICAgICAgICJyb290U2V0IjogIjQyNTUiLAorICAgICAgICAgICAg
ImNvbW1pdFNldCI6ICI0MjU1IiwKICAgICAgICAgICAgICJzdGF0dXMiOiAicGVuZGluZyIsCiAg
ICAgICAgICAgICAidXJsIjogbnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC02
MiwyMiArNjIsMjIgQEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKCkgewogICAgICAgICAgICAg
InBsYXRmb3JtIjogIjMxIiwKICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAg
ICAgICAgICAib3JkZXIiOiAiMyIsCi0gICAgICAgICAgICAicm9vdFNldCI6ICI0MjU2IiwKKyAg
ICAgICAgICAgICJjb21taXRTZXQiOiAiNDI1NiIsCiAgICAgICAgICAgICAic3RhdHVzIjogInBl
bmRpbmciLAogICAgICAgICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBu
dWxsLAogICAgICAgICAgICAgImNyZWF0ZWRBdCI6IDE0NTg2ODg1MTQwMDAKICAgICAgICAgfQog
ICAgICAgICBdLAotICAgICAgICAicm9vdFNldHMiOiBbeworICAgICAgICAiY29tbWl0U2V0cyI6
IFt7CiAgICAgICAgICAgICAiaWQiOiAiNDI1NSIsCi0gICAgICAgICAgICAicm9vdHMiOiBbIjg3
ODMyIiwgIjkzMTE2Il0KKyAgICAgICAgICAgICJjb21taXRzIjogWyI4NzgzMiIsICI5MzExNiJd
CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJpZCI6ICI0MjU2IiwKLSAgICAgICAgICAgICJy
b290cyI6IFsiODc4MzIiLCAiOTYzMzYiXQorICAgICAgICAgICAgImNvbW1pdHMiOiBbIjg3ODMy
IiwgIjk2MzM2Il0KICAgICAgICAgfQogICAgICAgICBdLAotICAgICAgICAicm9vdHMiOiBbewor
ICAgICAgICAiY29tbWl0cyI6IFt7CiAgICAgICAgICAgICAiaWQiOiAiODc4MzIiLAogICAgICAg
ICAgICAgInJlcG9zaXRvcnkiOiAiOSIsCiAgICAgICAgICAgICAicmV2aXNpb24iOiAiMTAuMTEg
MTVBMjg0IiwKQEAgLTE1NywxOCArMTU3LDE4IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5j
dGlvbiAoKSB7CiAgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIHJvb3Qgc2V0cyBmb3IgZWFjaCBn
cm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHZhciBidWlsZFJlcXVlc3RzID0gVGVz
dEdyb3VwLl9jcmVhdGVNb2RlbHNGcm9tRmV0Y2hlZFRlc3RHcm91cHMoc2FtcGxlVGVzdEdyb3Vw
KCkpWzBdLmJ1aWxkUmVxdWVzdHMoKTsKIAotICAgICAgICAgICAgdmFyIGZpcnN0U2V0ID0gYnVp
bGRSZXF1ZXN0c1swXS5yb290U2V0KCk7Ci0gICAgICAgICAgICBhc3NlcnQub2soZmlyc3RTZXQg
aW5zdGFuY2VvZiBSb290U2V0KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdFNldCwg
YnVpbGRSZXF1ZXN0c1syXS5yb290U2V0KCkpOwotCi0gICAgICAgICAgICB2YXIgc2Vjb25kU2V0
ID0gYnVpbGRSZXF1ZXN0c1sxXS5yb290U2V0KCk7Ci0gICAgICAgICAgICBhc3NlcnQub2soc2Vj
b25kU2V0IGluc3RhbmNlb2YgUm9vdFNldCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2Vj
b25kU2V0LCBidWlsZFJlcXVlc3RzWzNdLnJvb3RTZXQoKSk7CisgICAgICAgICAgICB2YXIgZmly
c3RTZXQgPSBidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0
Lm9rKGZpcnN0U2V0IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChmaXJzdFNldCwgYnVpbGRSZXF1ZXN0c1syXS5jb21taXRTZXQoKSk7CisKKyAgICAgICAg
ICAgIHZhciBzZWNvbmRTZXQgPSBidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgpOworICAgICAg
ICAgICAgYXNzZXJ0Lm9rKHNlY29uZFNldCBpbnN0YW5jZW9mIENvbW1pdFNldCk7CisgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoc2Vjb25kU2V0LCBidWlsZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgp
KTsKIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0U2V0LnJldmlzaW9uRm9yUmVwb3Np
dG9yeShNb2NrTW9kZWxzLndlYmtpdCksICcxOTE2MjInKTsKICAgICAgICAgICAgIHZhciBmaXJz
dFdlYktpdENvbW1pdCA9IGZpcnN0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53
ZWJraXQpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGZpcnN0V2ViS2l0Q29tbWl0IGluc3RhbmNl
b2YgQ29tbWl0TG9nKTsKLSAgICAgICAgICAgIGFzc2VydC5vayhmaXJzdFdlYktpdENvbW1pdCwg
YnVpbGRSZXF1ZXN0c1syXS5yb290U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxz
LndlYmtpdCkpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGZpcnN0V2ViS2l0Q29tbWl0LCBidWls
ZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53
ZWJraXQpKTsKICAgICAgICAgICAgIGFzc2VydC5vayhmaXJzdFdlYktpdENvbW1pdC5yZXBvc2l0
b3J5KCksIE1vY2tNb2RlbHMud2Via2l0KTsKICAgICAgICAgICAgIGFzc2VydC5vayhmaXJzdFdl
YktpdENvbW1pdC5yZXZpc2lvbigpLCAnMTkxNjIyJyk7CiAgICAgICAgICAgICBhc3NlcnQub2so
Zmlyc3RXZWJLaXRDb21taXQudGltZSgpIGluc3RhbmNlb2YgRGF0ZSk7CkBAIC0xNzcsNyArMTc3
LDcgQEAgZGVzY3JpYmUoJ1Rlc3RHcm91cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChzZWNvbmRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Vi
a2l0KSwgJzE5MjczNicpOwogICAgICAgICAgICAgdmFyIHNlY29uZFdlYktpdENvbW1pdCA9IHNl
Y29uZFNldC5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Via2l0KTsKICAgICAgICAg
ICAgIGFzc2VydC5vayhzZWNvbmRXZWJLaXRDb21taXQgaW5zdGFuY2VvZiBDb21taXRMb2cpOwot
ICAgICAgICAgICAgYXNzZXJ0Lm9rKHNlY29uZFdlYktpdENvbW1pdCwgYnVpbGRSZXF1ZXN0c1sz
XS5yb290U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCkpOworICAg
ICAgICAgICAgYXNzZXJ0Lm9rKHNlY29uZFdlYktpdENvbW1pdCwgYnVpbGRSZXF1ZXN0c1szXS5j
b21taXRTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Via2l0KSk7CiAgICAg
ICAgICAgICBhc3NlcnQub2soc2Vjb25kV2ViS2l0Q29tbWl0LnJlcG9zaXRvcnkoKSwgTW9ja01v
ZGVscy53ZWJraXQpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKHNlY29uZFdlYktpdENvbW1pdC5y
ZXZpc2lvbigpLCAnMTkyNzM2Jyk7CiAgICAgICAgICAgICBhc3NlcnQub2soc2Vjb25kV2ViS2l0
Q29tbWl0LnRpbWUoKSBpbnN0YW5jZW9mIERhdGUpOwpAQCAtMTg2LDkgKzE4Niw5IEBAIGRlc2Ny
aWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
Zmlyc3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4KSwgJzEwLjExIDE1
QTI4NCcpOwogICAgICAgICAgICAgdmFyIG9zeENvbW1pdCA9IGZpcnN0U2V0LmNvbW1pdEZvclJl
cG9zaXRvcnkoTW9ja01vZGVscy5vc3gpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKG9zeENvbW1p
dCBpbnN0YW5jZW9mIENvbW1pdExvZyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwob3N4Q29t
bWl0LCBidWlsZFJlcXVlc3RzWzFdLnJvb3RTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tN
b2RlbHMub3N4KSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwob3N4Q29tbWl0LCBidWlsZFJl
cXVlc3RzWzJdLnJvb3RTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4KSk7
Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwob3N4Q29tbWl0LCBidWlsZFJlcXVlc3RzWzNdLnJv
b3RTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4KSk7CisgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwob3N4Q29tbWl0LCBidWlsZFJlcXVlc3RzWzFdLmNvbW1pdFNldCgpLmNv
bW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChvc3hDb21taXQsIGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCkuY29tbWl0Rm9yUmVw
b3NpdG9yeShNb2NrTW9kZWxzLm9zeCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENv
bW1pdCwgYnVpbGRSZXF1ZXN0c1szXS5jb21taXRTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1v
Y2tNb2RlbHMub3N4KSk7CiAgICAgICAgICAgICBhc3NlcnQub2sob3N4Q29tbWl0LnJlcG9zaXRv
cnkoKSwgTW9ja01vZGVscy5vc3gpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKG9zeENvbW1pdC5y
ZXZpc2lvbigpLCAnMTAuMTEgMTVBMjg0Jyk7CiAgICAgICAgIH0pOwpJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Jlc291cmNl
cy9tb2NrLXYzLW1vZGVscy5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3VuaXQtdGVzdHMvcmVzb3VyY2VzL21vY2stdjMtbW9kZWxzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC05LDcgKzksNyBAQCB2YXIgTW9ja01vZGVscyA9IHsKICAgICAgICAgICAgIE1l
dHJpYy5jbGVhclN0YXRpY01hcCgpOwogICAgICAgICAgICAgUGxhdGZvcm0uY2xlYXJTdGF0aWNN
YXAoKTsKICAgICAgICAgICAgIFJlcG9zaXRvcnkuY2xlYXJTdGF0aWNNYXAoKTsKLSAgICAgICAg
ICAgIFJvb3RTZXQuY2xlYXJTdGF0aWNNYXAoKTsKKyAgICAgICAgICAgIENvbW1pdFNldC5jbGVh
clN0YXRpY01hcCgpOwogICAgICAgICAgICAgVGVzdC5jbGVhclN0YXRpY01hcCgpOwogICAgICAg
ICAgICAgVGVzdEdyb3VwLmNsZWFyU3RhdGljTWFwKCk7CiAgICAgICAgICAgICBCdWlsZFJlcXVl
c3QuY2xlYXJTdGF0aWNNYXAoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304337</attachid>
            <date>2017-03-13 19:53:28 -0700</date>
            <delta_ts>2017-03-14 15:45:24 -0700</delta_ts>
            <desc>Added migration SQL</desc>
            <filename>bug-169580-20170313195327.patch</filename>
            <type>text/plain</type>
            <size>139270</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0ODg4KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0MCBAQAorMjAxNy0wMy0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZW5hbWUgUm9vdFNldCB0byBDb21taXRTZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTU4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZWQgcm9vdF9zZXRzIHRvIGNvbW1p
dF9zZXRzIGFuZCByb290cyB0byBjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMgaW4gdGhlIGRhdGFi
YXNlIHNjaGVtYSwgYW5kIHJlbmFtZWQKKyAgICAgICAgcmVsYXRlZCBjbGFzc2VzIGluIHB1Ymxp
Yy92My8gYW5kIHRvb2xzIGFjY29yZGluZ2x5LgorCisgICAgICAgIFJvb3RTZXQsIE1lYXN1cmVt
ZW50Um9vdFNldCwgYW5kIEN1c3RvbVJvb3RTZXQgYXJlIHJlc3BlY3RpdmVseSByZW5hbWVkIHRv
IENvbW1pdFNldCwgTWVhc3VyZW1lbnRDb21taXRTZXQsCisgICAgICAgIGFuZCBDdXN0b21Db21t
aXRTZXQuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gbWlncmF0ZSB0aGUgZGF0YWJhc2UsIHJ1bjoK
KyAgICAgICAgYGBgCisgICAgICAgIEJFR0lOOworICAgICAgICBBTFRFUiBUQUJMRSByb290X3Nl
dHMgUkVOQU1FIFRPIGNvbW1pdF9zZXRzOworICAgICAgICBBTFRFUiBUQUJMRSBjb21taXRfc2V0
cyBSRU5BTUUgQ09MVU1OIHJvb3RzZXRfaWQgVE8gY29tbWl0c2V0X2lkOworICAgICAgICBBTFRF
UiBUQUJMRSByb290cyBSRU5BTUUgVE8gY29tbWl0X3NldF9yZWxhdGlvbnNoaXBzOworICAgICAg
ICBBTFRFUiBUQUJMRSBjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMgUkVOQU1FIENPTFVNTiByb290
X3NldCBUTyBjb21taXRzZXRfc2V0OworICAgICAgICBBTFRFUiBUQUJMRSBjb21taXRfc2V0X3Jl
bGF0aW9uc2hpcHMgUkVOQU1FIENPTFVNTiByb290X2NvbW1pdCBUTyBjb21taXRzZXRfY29tbWl0
OworICAgICAgICBBTFRFUiBUQUJMRSBidWlsZF9yZXF1ZXN0cyBSRU5BTUUgQ09MVU1OIHJlcXVl
c3Rfcm9vdF9zZXQgVE8gcmVxdWVzdF9jb21taXRfc2V0OworICAgICAgICBFTkQ7CisgICAgICAg
IGBgYAorCisgICAgICAgICogYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sOgorICAgICAgICAqIGlu
aXQtZGF0YWJhc2Uuc3FsOgorICAgICAgICAqIHB1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMucGhw
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogcHVibGljL2FwaS90ZXN0LWdyb3Vwcy5waHA6
CisgICAgICAgIChtYWluKToKKyAgICAgICAgKGZvcm1hdF90ZXN0X2dyb3VwKToKKyAgICAgICAg
KiBwdWJsaWMvaW5jbHVkZS9idWlsZC1yZXF1ZXN0cy1mZXRjaGVyLnBocDoKKyAgICAgICAgKEJ1
aWxkUmVxdWVzdHNGZXRjaGVyOjpfX2NvbnN0cnVjdCk6CisgICAgICAgIChCdWlsZFJlcXVlc3Rz
RmV0Y2hlcjo6cmVzdWx0c19pbnRlcm5hbCk6CisgICAgICAgIChCdWlsZFJlcXVlc3RzRmV0Y2hl
cjo6Y29tbWl0X3NldHMpOiBSZW5hbWVkIGZyb20gcm9vdF9zZXRzLgorICAgICAgICAoQnVpbGRS
ZXF1ZXN0c0ZldGNoZXI6OmNvbW1pdHMpOiBSZW5hbWVkIGZyb20gcm9vdHMuCisgICAgICAgIChC
dWlsZFJlcXVlc3RzRmV0Y2hlcjo6ZmV0Y2hfY29tbWl0c19mb3Jfc2V0X2lmX25lZWRlZCk6IFJl
bmFtZWQgZnJvbSBmZXRjaF9yb290c19mb3Jfc2V0X2lmX25lZWRlZC4KKyAgICAgICAgKiBwdWJs
aWMvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3JvdXAucGhwOgorICAgICAgICAobWFpbik6
CisgICAgICAgIChlbnN1cmVfY29tbWl0X3NldHMpOiBSZW5hbWVkIGZyb20gY29tbWl0X3NldHNf
ZnJvbV9yb290X3NldHMuCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvYW5hbHlzaXMt
cmVzdWx0cy12aWV3ZXIuanM6CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIucHJvdG90
eXBlLmJ1aWxkUm93R3JvdXBzKToKKyAgICAgICAgKEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5wcm90
b3R5cGUuX2NvbGxlY3RDb21taXRTZXRzSW5UZXN0R3JvdXBzKTogUmVuYW1lZCBmcm9tIF9jb2xs
ZWN0Um9vdFNldHNJblRlc3RHcm91cHMuCisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIu
cHJvdG90eXBlLl9idWlsZFJvd3NGb3JQb2ludHNBbmRUZXN0R3JvdXBzKToKKyAgICAgICAgKEFu
YWx5c2lzUmVzdWx0c1ZpZXdlci5wcm90b3R5cGUuX2J1aWxkUm93c0ZvclBvaW50c0FuZFRlc3RH
cm91cHMpOgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLkNvbW1pdFNldEluVGVzdEdy
b3VwKTogUmVuYW1lZCBmcm9tIFJvb3RTZXRJblRlc3RHcm91cC4KKyAgICAgICAgKEFuYWx5c2lz
UmVzdWx0c1ZpZXdlci5Db21taXRTZXRJblRlc3RHcm91cC5wcm90b3R5cGUuY29uc3RydWN0b3Ip
OgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLkNvbW1pdFNldEluVGVzdEdyb3VwLnBy
b3RvdHlwZS5jb21taXRTZXQpOiBSZW5hbWVkIGZyb20gcm9vdFNldC4KKyAgICAgICAgKEFuYWx5
c2lzUmVzdWx0c1ZpZXdlci5Db21taXRTZXRJblRlc3RHcm91cC5wcm90b3R5cGUuc3VjY2VlZGlu
Z0NvbW1pdFNldCk6IFJlbmFtZWQgZnJvbSBzdWNjZWVkaW5nUm9vdFNldC4KKyAgICAgICAgKEFu
YWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0Jsb2NrLnByb3RvdHlwZS5jb25z
dHJ1Y3Rvcik6CisgICAgICAgIChBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tp
bmdCbG9jay5wcm90b3R5cGUuYWRkUm93SW5kZXgpOgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRz
Vmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2sucHJvdG90eXBlLmlzQ29tcGxldGUpOgorICAg
ICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQmxvY2sucHJvdG90
eXBlLnN0YXJ0Um93SW5kZXgpOgorICAgICAgICAoQW5hbHlzaXNSZXN1bHRzVmlld2VyLlRlc3RH
cm91cFN0YWNraW5nQmxvY2sucHJvdG90eXBlLmVuZFJvd0luZGV4KToKKyAgICAgICAgKEFuYWx5
c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0Jsb2NrLnByb3RvdHlwZS5fY29tcHV0
ZVRlc3RHcm91cFN0YXR1cyk6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQt
cmV2aXNpb24tcmFuZ2UuanM6CisgICAgICAgIChDaGFydFJldmlzaW9uUmFuZ2UucHJvdG90eXBl
Ll9yZXZpc2lvbkZvclBvaW50KToKKyAgICAgICAgKENoYXJ0UmV2aXNpb25SYW5nZS5wcm90b3R5
cGUuX2NvbXB1dGVSZXZpc2lvbkxpc3QpOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRz
L2N1c3RvbWl6YWJsZS10ZXN0LWdyb3VwLWZvcm0uanM6CisgICAgICAgIChDdXN0b21pemFibGVU
ZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik6CisgICAgICAgIChDdXN0b21pemFi
bGVUZXN0R3JvdXBGb3JtLnByb3RvdHlwZS5zZXRDb21taXRTZXRNYXApOiBSZW5hbWVkIGZyb20g
c2V0Um9vdFNldE1hcC4KKyAgICAgICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0ucHJvdG90
eXBlLl9zdWJtaXR0ZWQpOgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90
b3R5cGUuX2NvbXB1dGVDb21taXRTZXRNYXApOiBSZW5hbWVkIGZyb20gX2NvbXB1dGVSb290U2V0
TWFwLgorICAgICAgICAoQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybS5wcm90b3R5cGUucmVuZGVy
KTogUmVuYW1lZCBmcm9tIHJlbmRlci4KKyAgICAgICAgKEN1c3RvbWl6YWJsZVRlc3RHcm91cEZv
cm0ucHJvdG90eXBlLl9jb25zdHJ1Y3RSZXZpc2lvblJhZGlvQnV0dG9ucyk6CisgICAgICAgICog
cHVibGljL3YzL2NvbXBvbmVudHMvcmVzdWx0cy10YWJsZS5qczoKKyAgICAgICAgKFJlc3VsdHNU
YWJsZS5wcm90b3R5cGUucmVuZGVyKToKKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUu
X2NyZWF0ZVJldmlzaW9uTGlzdENlbGxzKToKKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5
cGUuX2NvbXB1dGVSZXBvc2l0b3J5TGlzdCk6CisgICAgICAgIChSZXN1bHRzVGFibGVSb3cucHJv
dG90eXBlLmNvbnN0cnVjdG9yKToKKyAgICAgICAgKFJlc3VsdHNUYWJsZVJvdy5wcm90b3R5cGUu
Y29tbWl0U2V0KTogUmVuYW1lZCBmcm9tIHJvb3RTZXQuCisgICAgICAgICogcHVibGljL3YzL2Nv
bXBvbmVudHMvdGVzdC1ncm91cC1yZXN1bHRzLXRhYmxlLmpzOgorICAgICAgICAoVGVzdEdyb3Vw
UmVzdWx0c1RhYmxlLnByb3RvdHlwZS5idWlsZFJvd0dyb3Vwcyk6CisgICAgICAgICogcHVibGlj
L3YzL2luZGV4Lmh0bWw6CisgICAgICAgICogcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0
LmpzOgorICAgICAgICAoQnVpbGRSZXF1ZXN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChCdWlsZFJlcXVlc3QucHJvdG90eXBlLnVwZGF0ZVNpbmdsZXRvbik6CisgICAgICAgIChC
dWlsZFJlcXVlc3QucHJvdG90eXBlLmNvbW1pdFNldCk6IFJlbmFtZWQgZnJvbSByb290U2V0Lgor
ICAgICAgICAoQnVpbGRSZXF1ZXN0LmNvbnN0cnVjdEJ1aWxkUmVxdWVzdHNGcm9tRGF0YSk6Cisg
ICAgICAgICogcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzOiBSZW5hbWVkIGZyb20gcHVi
bGljL3YzL21vZGVscy9yb290LXNldC5qcy4KKyAgICAgICAgKENvbW1pdFNldCk6IFJlbmFtZWQg
ZnJvbSBSb290U2V0LgorICAgICAgICAoQ29tbWl0U2V0LmNvbnRhaW5zTXVsdGlwbGVDb21taXRz
Rm9yUmVwb3NpdG9yeSk6CisgICAgICAgIChNZWFzdXJlbWVudENvbW1pdFNldCk6IFJlbmFtZWQg
ZnJvbSBNZWFzdXJlbWVudFJvb3RTZXQuCisgICAgICAgIChNZWFzdXJlbWVudENvbW1pdFNldC5w
cm90b3R5cGUubmFtZWRTdGF0aWNNYXApOgorICAgICAgICAoTWVhc3VyZW1lbnRDb21taXRTZXQu
cHJvdG90eXBlLmVuc3VyZU5hbWVkU3RhdGljTWFwKToKKyAgICAgICAgKE1lYXN1cmVtZW50Q29t
bWl0U2V0Lm5hbWVkU3RhdGljTWFwKToKKyAgICAgICAgKE1lYXN1cmVtZW50Q29tbWl0U2V0LmVu
c3VyZU5hbWVkU3RhdGljTWFwKToKKyAgICAgICAgKE1lYXN1cmVtZW50Q29tbWl0U2V0LmVuc3Vy
ZVNpbmdsZXRvbik6CisgICAgICAgIChDdXN0b21Db21taXRTZXQpOiBSZW5hbWVkIGZyb20gQ3Vz
dG9tUm9vdFNldC4KKyAgICAgICAgKiBwdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LWFkYXB0
b3IuanM6CisgICAgICAgIChNZWFzdXJlbWVudEFkYXB0b3IucHJvdG90eXBlLmFwcGx5VG8pOgor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qczoKKyAgICAgICAgKFRlc3RH
cm91cC5wcm90b3R5cGUuY29uc3RydWN0b3IpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlw
ZS5hZGRCdWlsZFJlcXVlc3QpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5yZXBldGl0
aW9uQ291bnQpOgorICAgICAgICAoVGVzdEdyb3VwLnByb3RvdHlwZS5yZXF1ZXN0ZWRDb21taXRT
ZXRzKTogUmVuYW1lZCBmcm9tIHJlcXVlc3RlZFJvb3RTZXRzLgorICAgICAgICAoVGVzdEdyb3Vw
LnByb3RvdHlwZS5yZXF1ZXN0c0ZvckNvbW1pdFNldCk6IFJlbmFtZWQgZnJvbSByZXF1ZXN0c0Zv
clJvb3RTZXQuCisgICAgICAgIChUZXN0R3JvdXAucHJvdG90eXBlLmxhYmVsRm9yQ29tbWl0U2V0
KTogUmVuYW1lZCBmcm9tIGxhYmVsRm9yUm9vdFNldC4KKyAgICAgICAgKFRlc3RHcm91cC5wcm90
b3R5cGUuZGlkU2V0UmVzdWx0KToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuY29tcGFy
ZVRlc3RSZXN1bHRzKToKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuX3ZhbHVlc0ZvckNv
bW1pdFNldCk6IFJlbmFtZWQgZnJvbSBfdmFsdWVzRm9yUm9vdFNldC4KKyAgICAgICAgKFRlc3RH
cm91cC5wcm90b3R5cGUuY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHMpOgorICAgICAgICAqIHB1
YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanM6CisgICAgICAgIChBbmFseXNpc1Rh
c2tQYWdlLnByb3RvdHlwZS5yZW5kZXIpOgorICAgICAgICAoQW5hbHlzaXNUYXNrUGFnZS5wcm90
b3R5cGUuX3JldHJ5Q3VycmVudFRlc3RHcm91cCk6CisgICAgICAgIChBbmFseXNpc1Rhc2tQYWdl
LnByb3RvdHlwZS5fY3JlYXRlTmV3VGVzdEdyb3VwRnJvbUNoYXJ0KToKKyAgICAgICAgKEFuYWx5
c2lzVGFza1BhZ2UucHJvdG90eXBlLl9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tVmlld2VyKToKKyAg
ICAgICAgKEFuYWx5c2lzVGFza1BhZ2UucHJvdG90eXBlLl9jcmVhdGVUZXN0R3JvdXBBZnRlclZl
cmlmeWluZ0NvbW1pdFNldExpc3QpOgorICAgICAgICAqIHNlcnZlci10ZXN0cy9hcGktYnVpbGQt
cmVxdWVzdHMtdGVzdHMuanM6CisgICAgICAgICogc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2Nr
LWRhdGEuanM6CisgICAgICAgIChNb2NrRGF0YS5yZXNldFYzTW9kZWxzKToKKyAgICAgICAgKE1v
Y2tEYXRhLmFkZE1vY2tEYXRhKToKKyAgICAgICAgKE1vY2tEYXRhLmFkZEFub3RoZXJNb2NrVGVz
dEdyb3VwKToKKyAgICAgICAgKiB0b29scy9kZXRlY3QtY2hhbmdlcy5qczoKKyAgICAgICAgKGNy
ZWF0ZUFuYWx5c2lzVGFza0FuZE5vdGlmeSk6CisgICAgICAgICogdG9vbHMvanMvYnVpbGRib3Qt
c3luY2VyLmpzOgorICAgICAgICAoQnVpbGRib3RTeW5jZXIucHJvdG90eXBlLl9wcm9wZXJ0aWVz
Rm9yQnVpbGRSZXF1ZXN0KToKKyAgICAgICAgKEJ1aWxkYm90U3luY2VyLnByb3RvdHlwZS5fcmV2
aXNpb25TZXRGcm9tQ29tbWl0U2V0V2l0aEV4Y2x1c2lvbkxpc3QpOgorICAgICAgICAqIHRvb2xz
L2pzL2RhdGFiYXNlLmpzOgorICAgICAgICAodGFibGVUb1ByZWZpeE1hcCk6CisgICAgICAgICog
dG9vbHMvanMvdjMtbW9kZWxzLmpzOgorICAgICAgICAqIHRvb2xzL3N5bmMtYnVpbGRib3QuanM6
CisgICAgICAgIChzeW5jTG9vcCk6CisgICAgICAgICogdG9vbHMvc3luYy13aXRoLWJ1aWxkYm90
LnB5OiBEZWxldGVkLiBObyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiB1bml0LXRlc3RzL2FuYWx5
c2lzLXRhc2stdGVzdHMuanM6CisgICAgICAgICogdW5pdC10ZXN0cy9idWlsZC1yZXF1ZXN0LXRl
c3RzLmpzOgorICAgICAgICAoc2FtcGxlQnVpbGRSZXF1ZXN0RGF0YSk6CisgICAgICAgICogdW5p
dC10ZXN0cy9idWlsZGJvdC1zeW5jZXItdGVzdHMuanM6CisgICAgICAgIChzYW1wbGVDb21taXRT
ZXREYXRhKToKKyAgICAgICAgKiB1bml0LXRlc3RzL21lYXN1cmVtZW50LWFkYXB0b3ItdGVzdHMu
anM6CisgICAgICAgICogdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanM6CisgICAg
ICAgICogdW5pdC10ZXN0cy9yZXNvdXJjZXMvbW9jay12My1tb2RlbHMuanM6CisgICAgICAgIChN
b2NrTW9kZWxzLmluamVjdCk6CisgICAgICAgICogdW5pdC10ZXN0cy90ZXN0LWdyb3Vwcy10ZXN0
cy5qczoKKyAgICAgICAgKHNhbXBsZVRlc3RHcm91cCk6CisKIDIwMTctMDMtMTMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGF0YWJhc2UncyBxdWVyeSBmdW5j
dGlvbnMgc2hvdWxkIHN1cHBvcnQgcXVlcnlpbmcgZm9yIGEgcm93IHdpdGggTlVMTCB2YWx1ZQpJ
bmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3FsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9pbml0LWRhdGFiYXNlLnNxbAkocmV2aXNp
b24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2luaXQtZGF0YWJhc2Uuc3Fs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBAIERST1AgVEFCTEUgSUYgRVhJU1RTIHRy
aWdnZXJhYmxlX2NvbmZpZ3UKIERST1AgVEFCTEUgSUYgRVhJU1RTIHRyaWdnZXJhYmxlX3JlcG9z
aXRvcmllcyBDQVNDQURFOwogRFJPUCBUQUJMRSBJRiBFWElTVFMgYnVncyBDQVNDQURFOwogRFJP
UCBUQUJMRSBJRiBFWElTVFMgYW5hbHlzaXNfdGVzdF9ncm91cHMgQ0FTQ0FERTsKLURST1AgVEFC
TEUgSUYgRVhJU1RTIHJvb3Rfc2V0cyBDQVNDQURFOwotRFJPUCBUQUJMRSBJRiBFWElTVFMgcm9v
dHMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIGNvbW1pdF9zZXRzIENBU0NBREU7CitE
Uk9QIFRBQkxFIElGIEVYSVNUUyBjb21taXRfc2V0X3JlbGF0aW9uc2hpcHMgQ0FTQ0FERTsKIERS
T1AgVEFCTEUgSUYgRVhJU1RTIGJ1aWxkX3JlcXVlc3RzIENBU0NBREU7CiBEUk9QIFRZUEUgSUYg
RVhJU1RTIGJ1aWxkX3JlcXVlc3Rfc3RhdHVzX3R5cGUgQ0FTQ0FERTsKIApAQCAtMjUxLDEyICsy
NTEsMTIgQEAgQ1JFQVRFIFRBQkxFIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzICgKICAgICBDT05TVFJB
SU5UIHRlc3Rncm91cF9uYW1lX211c3RfYmVfdW5pcXVlX2Zvcl9lYWNoX3Rhc2sgVU5JUVVFKHRl
c3Rncm91cF90YXNrLCB0ZXN0Z3JvdXBfbmFtZSkpOwogQ1JFQVRFIElOREVYIHRlc3Rncm91cF90
YXNrX2luZGV4IE9OIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzKHRlc3Rncm91cF90YXNrKTsKIAotQ1JF
QVRFIFRBQkxFIHJvb3Rfc2V0cyAoCi0gICAgcm9vdHNldF9pZCBzZXJpYWwgUFJJTUFSWSBLRVkp
OworQ1JFQVRFIFRBQkxFIGNvbW1pdF9zZXRzICgKKyAgICBjb21taXRzZXRfaWQgc2VyaWFsIFBS
SU1BUlkgS0VZKTsKIAotQ1JFQVRFIFRBQkxFIHJvb3RzICgKLSAgICByb290X3NldCBpbnRlZ2Vy
IFJFRkVSRU5DRVMgcm9vdF9zZXRzIE5PVCBOVUxMLAotICAgIHJvb3RfY29tbWl0IGludGVnZXIg
UkVGRVJFTkNFUyBjb21taXRzIE5PVCBOVUxMKTsKK0NSRUFURSBUQUJMRSBjb21taXRfc2V0X3Jl
bGF0aW9uc2hpcHMgKAorICAgIGNvbW1pdHNldF9zZXQgaW50ZWdlciBSRUZFUkVOQ0VTIGNvbW1p
dF9zZXRzIE5PVCBOVUxMLAorICAgIGNvbW1pdHNldF9jb21taXQgaW50ZWdlciBSRUZFUkVOQ0VT
IGNvbW1pdHMgTk9UIE5VTEwpOwogCiBDUkVBVEUgVFlQRSBidWlsZF9yZXF1ZXN0X3N0YXR1c190
eXBlIGFzIEVOVU0gKCdwZW5kaW5nJywgJ3NjaGVkdWxlZCcsICdydW5uaW5nJywgJ2ZhaWxlZCcs
ICdjb21wbGV0ZWQnLCAnY2FuY2VsZWQnKTsKIENSRUFURSBUQUJMRSBidWlsZF9yZXF1ZXN0cyAo
CkBAIC0yNjYsNyArMjY2LDcgQEAgQ1JFQVRFIFRBQkxFIGJ1aWxkX3JlcXVlc3RzICgKICAgICBy
ZXF1ZXN0X3Rlc3QgaW50ZWdlciBSRUZFUkVOQ0VTIHRlc3RzIE5PVCBOVUxMLAogICAgIHJlcXVl
c3RfZ3JvdXAgaW50ZWdlciBSRUZFUkVOQ0VTIGFuYWx5c2lzX3Rlc3RfZ3JvdXBzIE5PVCBOVUxM
LAogICAgIHJlcXVlc3Rfb3JkZXIgaW50ZWdlciBOT1QgTlVMTCwKLSAgICByZXF1ZXN0X3Jvb3Rf
c2V0IGludGVnZXIgUkVGRVJFTkNFUyByb290X3NldHMgTk9UIE5VTEwsCisgICAgcmVxdWVzdF9j
b21taXRfc2V0IGludGVnZXIgUkVGRVJFTkNFUyBjb21taXRfc2V0cyBOT1QgTlVMTCwKICAgICBy
ZXF1ZXN0X3N0YXR1cyBidWlsZF9yZXF1ZXN0X3N0YXR1c190eXBlIE5PVCBOVUxMIERFRkFVTFQg
J3BlbmRpbmcnLAogICAgIHJlcXVlc3RfdXJsIHZhcmNoYXIoMTAyNCksCiAgICAgcmVxdWVzdF9i
dWlsZCBpbnRlZ2VyIFJFRkVSRU5DRVMgYnVpbGRzLApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL2Jyb3dzZXItdGVzdHMvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCShyZXZpc2lvbiAyMTM4Njkp
CisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbmRleC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTEsNyArMjExLDcgQEAgY29uc3QgQ2hhcnRUZXN0ID0gewogICAg
ICAgICAgICAgJ21vZGVscy9wbGF0Zm9ybS5qcycsCiAgICAgICAgICAgICAnbW9kZWxzL3Rlc3Qu
anMnLAogICAgICAgICAgICAgJ21vZGVscy9tZXRyaWMuanMnLAotICAgICAgICAgICAgJ21vZGVs
cy9yb290LXNldC5qcycsCisgICAgICAgICAgICAnbW9kZWxzL2NvbW1pdC1zZXQuanMnLAogICAg
ICAgICAgICAgJ21vZGVscy9jb21taXQtbG9nLmpzJywKICAgICAgICAgICAgICdjb21wb25lbnRz
L2Jhc2UuanMnLAogICAgICAgICAgICAgJ2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMn
LApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvYnVpbGQtcmVxdWVz
dHMucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBp
L2J1aWxkLXJlcXVlc3RzLnBocAkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy9hcGkvYnVpbGQtcmVxdWVzdHMucGhwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw4ICszMyw4IEBAIGZ1bmN0aW9uIG1haW4oJGlkLCAkcGF0aCwgJHBvc3RfZGF0YSkgewog
ICAgICRyZXNvbHZlX2lkID0gYXJyYXlfZ2V0KCRfR0VULCAndXNlTGVnYWN5SWRSZXNvbHV0aW9u
Jyk7CiAgICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoCiAgICAgICAgICdidWlsZFJlcXVlc3Rz
JyA9PiAkcmVzb2x2ZV9pZCA/ICRyZXF1ZXN0c19mZXRjaGVyLT5yZXN1bHRzX3dpdGhfcmVzb2x2
ZWRfaWRzKCkgOiAkcmVxdWVzdHNfZmV0Y2hlci0+cmVzdWx0cygpLAotICAgICAgICAncm9vdFNl
dHMnID0+ICRyZXF1ZXN0c19mZXRjaGVyLT5yb290X3NldHMoKSwKLSAgICAgICAgJ3Jvb3RzJyA9
PiAkcmVxdWVzdHNfZmV0Y2hlci0+cm9vdHMoKSwKKyAgICAgICAgJ2NvbW1pdFNldHMnID0+ICRy
ZXF1ZXN0c19mZXRjaGVyLT5jb21taXRfc2V0cygpLAorICAgICAgICAnY29tbWl0cycgPT4gJHJl
cXVlc3RzX2ZldGNoZXItPmNvbW1pdHMoKSwKICAgICApKTsKIH0KIApJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVzdC1ncm91cHMucGhwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvYXBpL3Rlc3QtZ3JvdXBzLnBocAkocmV2
aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9hcGkvdGVz
dC1ncm91cHMucGhwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMyArNDksMTMgQEAgZnVuY3Rpb24g
bWFpbigkcGF0aCkgewogICAgIGZvcmVhY2ggKCRidWlsZF9yZXF1ZXN0cyBhcyAkcmVxdWVzdCkg
ewogICAgICAgICAkcmVxdWVzdF9ncm91cCA9ICYkZ3JvdXBfYnlfaWRbJHJlcXVlc3RbJ3Rlc3RH
cm91cCddXTsKICAgICAgICAgYXJyYXlfcHVzaCgkcmVxdWVzdF9ncm91cFsnYnVpbGRSZXF1ZXN0
cyddLCAkcmVxdWVzdFsnaWQnXSk7Ci0gICAgICAgIGFycmF5X3B1c2goJHJlcXVlc3RfZ3JvdXBb
J3Jvb3RTZXRzJ10sICRyZXF1ZXN0Wydyb290U2V0J10pOworICAgICAgICBhcnJheV9wdXNoKCRy
ZXF1ZXN0X2dyb3VwWydjb21taXRTZXRzJ10sICRyZXF1ZXN0Wydjb21taXRTZXQnXSk7CiAgICAg
fQogCiAgICAgZXhpdF93aXRoX3N1Y2Nlc3MoYXJyYXkoJ3Rlc3RHcm91cHMnID0+ICR0ZXN0X2dy
b3VwcywKICAgICAgICAgJ2J1aWxkUmVxdWVzdHMnID0+ICRidWlsZF9yZXF1ZXN0cywKLSAgICAg
ICAgJ3Jvb3RTZXRzJyA9PiAkYnVpbGRfcmVxdWVzdHNfZmV0Y2hlci0+cm9vdF9zZXRzKCksCi0g
ICAgICAgICdyb290cycgPT4gJGJ1aWxkX3JlcXVlc3RzX2ZldGNoZXItPnJvb3RzKCkpKTsKKyAg
ICAgICAgJ2NvbW1pdFNldHMnID0+ICRidWlsZF9yZXF1ZXN0c19mZXRjaGVyLT5jb21taXRfc2V0
cygpLAorICAgICAgICAnY29tbWl0cycgPT4gJGJ1aWxkX3JlcXVlc3RzX2ZldGNoZXItPmNvbW1p
dHMoKSkpOwogfQogCiBmdW5jdGlvbiBmb3JtYXRfdGVzdF9ncm91cCgkZ3JvdXBfcm93KSB7CkBA
IC02Nyw3ICs2Nyw3IEBAIGZ1bmN0aW9uIGZvcm1hdF90ZXN0X2dyb3VwKCRncm91cF9yb3cpIHsK
ICAgICAgICAgJ2NyZWF0ZWRBdCcgPT4gc3RydG90aW1lKCRncm91cF9yb3dbJ3Rlc3Rncm91cF9j
cmVhdGVkX2F0J10pICogMTAwMCwKICAgICAgICAgJ2hpZGRlbicgPT4gRGF0YWJhc2U6OmlzX3Ry
dWUoJGdyb3VwX3Jvd1sndGVzdGdyb3VwX2hpZGRlbiddKSwKICAgICAgICAgJ2J1aWxkUmVxdWVz
dHMnID0+IGFycmF5KCksCi0gICAgICAgICdyb290U2V0cycgPT4gYXJyYXkoKSwKKyAgICAgICAg
J2NvbW1pdFNldHMnID0+IGFycmF5KCksCiAgICAgKTsKIH0KIApJbmRleDogV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9idWls
ZC1yZXF1ZXN0cy1mZXRjaGVyLnBocAkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRlL2J1aWxkLXJlcXVlc3RzLWZldGNoZXIucGhwCSh3
b3JraW5nIGNvcHkpCkBAIC02LDEwICs2LDEwIEBAIGNsYXNzIEJ1aWxkUmVxdWVzdHNGZXRjaGVy
IHsKICAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZGIpIHsKICAgICAgICAgJHRoaXMtPmRiID0g
JGRiOwogICAgICAgICAkdGhpcy0+cm93cyA9IG51bGw7Ci0gICAgICAgICR0aGlzLT5yb290X3Nl
dHMgPSBhcnJheSgpOwotICAgICAgICAkdGhpcy0+cm9vdHNfYnlfaWQgPSBhcnJheSgpOwotICAg
ICAgICAkdGhpcy0+cm9vdHMgPSBhcnJheSgpOwotICAgICAgICAkdGhpcy0+cm9vdF9zZXRzX2J5
X2lkID0gYXJyYXkoKTsKKyAgICAgICAgJHRoaXMtPmNvbW1pdF9zZXRzID0gYXJyYXkoKTsKKyAg
ICAgICAgJHRoaXMtPmNvbW1pdHNfYnlfaWQgPSBhcnJheSgpOworICAgICAgICAkdGhpcy0+Y29t
bWl0cyA9IGFycmF5KCk7CisgICAgICAgICR0aGlzLT5jb21taXRfc2V0c19ieV9pZCA9IGFycmF5
KCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZmV0Y2hfZm9yX3Rhc2soJHRhc2tfaWQpIHsKQEAg
LTYwLDkgKzYwLDkgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0c0ZldGNoZXIgewogICAgICAgICBmb3Jl
YWNoICgkdGhpcy0+cm93cyBhcyAkcm93KSB7CiAgICAgICAgICAgICAkdGVzdF9pZCA9ICRyb3db
J3JlcXVlc3RfdGVzdCddOwogICAgICAgICAgICAgJHBsYXRmb3JtX2lkID0gJHJvd1sncmVxdWVz
dF9wbGF0Zm9ybSddOwotICAgICAgICAgICAgJHJvb3Rfc2V0X2lkID0gJHJvd1sncmVxdWVzdF9y
b290X3NldCddOworICAgICAgICAgICAgJGNvbW1pdF9zZXRfaWQgPSAkcm93WydyZXF1ZXN0X2Nv
bW1pdF9zZXQnXTsKIAotICAgICAgICAgICAgJHRoaXMtPmZldGNoX3Jvb3RzX2Zvcl9zZXRfaWZf
bmVlZGVkKCRyb290X3NldF9pZCwgJHJlc29sdmVfaWRzKTsKKyAgICAgICAgICAgICR0aGlzLT5m
ZXRjaF9jb21taXRzX2Zvcl9zZXRfaWZfbmVlZGVkKCRjb21taXRfc2V0X2lkLCAkcmVzb2x2ZV9p
ZHMpOwogCiAgICAgICAgICAgICBhcnJheV9wdXNoKCRyZXF1ZXN0cywgYXJyYXkoCiAgICAgICAg
ICAgICAgICAgJ2lkJyA9PiAkcm93WydyZXF1ZXN0X2lkJ10sCkBAIC03Miw3ICs3Miw3IEBAIGNs
YXNzIEJ1aWxkUmVxdWVzdHNGZXRjaGVyIHsKICAgICAgICAgICAgICAgICAncGxhdGZvcm0nID0+
ICRyZXNvbHZlX2lkcyA/ICRpZF90b19wbGF0Zm9ybV9uYW1lWyRwbGF0Zm9ybV9pZF0gOiAkcGxh
dGZvcm1faWQsCiAgICAgICAgICAgICAgICAgJ3Rlc3RHcm91cCcgPT4gJHJvd1sncmVxdWVzdF9n
cm91cCddLAogICAgICAgICAgICAgICAgICdvcmRlcicgPT4gJHJvd1sncmVxdWVzdF9vcmRlcidd
LAotICAgICAgICAgICAgICAgICdyb290U2V0JyA9PiAkcm9vdF9zZXRfaWQsCisgICAgICAgICAg
ICAgICAgJ2NvbW1pdFNldCcgPT4gJGNvbW1pdF9zZXRfaWQsCiAgICAgICAgICAgICAgICAgJ3N0
YXR1cycgPT4gJHJvd1sncmVxdWVzdF9zdGF0dXMnXSwKICAgICAgICAgICAgICAgICAndXJsJyA9
PiAkcm93WydyZXF1ZXN0X3VybCddLAogICAgICAgICAgICAgICAgICdidWlsZCcgPT4gJHJvd1sn
cmVxdWVzdF9idWlsZCddLApAQCAtODIsNDUgKzgyLDQ1IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdHNG
ZXRjaGVyIHsKICAgICAgICAgcmV0dXJuICRyZXF1ZXN0czsKICAgICB9CiAKLSAgICBmdW5jdGlv
biByb290X3NldHMoKSB7Ci0gICAgICAgIHJldHVybiAkdGhpcy0+cm9vdF9zZXRzOworICAgIGZ1
bmN0aW9uIGNvbW1pdF9zZXRzKCkgeworICAgICAgICByZXR1cm4gJHRoaXMtPmNvbW1pdF9zZXRz
OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHJvb3RzKCkgewotICAgICAgICByZXR1cm4gJHRoaXMt
PnJvb3RzOworICAgIGZ1bmN0aW9uIGNvbW1pdHMoKSB7CisgICAgICAgIHJldHVybiAkdGhpcy0+
Y29tbWl0czsKICAgICB9CiAKLSAgICBwcml2YXRlIGZ1bmN0aW9uIGZldGNoX3Jvb3RzX2Zvcl9z
ZXRfaWZfbmVlZGVkKCRyb290X3NldF9pZCwgJHJlc29sdmVfaWRzKSB7Ci0gICAgICAgIGlmIChh
cnJheV9rZXlfZXhpc3RzKCRyb290X3NldF9pZCwgJHRoaXMtPnJvb3Rfc2V0c19ieV9pZCkpCisg
ICAgcHJpdmF0ZSBmdW5jdGlvbiBmZXRjaF9jb21taXRzX2Zvcl9zZXRfaWZfbmVlZGVkKCRjb21t
aXRfc2V0X2lkLCAkcmVzb2x2ZV9pZHMpIHsKKyAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMo
JGNvbW1pdF9zZXRfaWQsICR0aGlzLT5jb21taXRfc2V0c19ieV9pZCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgJHJvb3Rfcm93cyA9ICR0aGlzLT5kYi0+cXVlcnlfYW5kX2ZldGNo
X2FsbCgnU0VMRUNUICoKLSAgICAgICAgICAgIEZST00gcm9vdHMsIGNvbW1pdHMgTEVGVCBPVVRF
UiBKT0lOIHJlcG9zaXRvcmllcyBPTiBjb21taXRfcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlfaWQK
LSAgICAgICAgICAgIFdIRVJFIHJvb3RfY29tbWl0ID0gY29tbWl0X2lkIEFORCByb290X3NldCA9
ICQxJywgYXJyYXkoJHJvb3Rfc2V0X2lkKSk7CisgICAgICAgICRjb21taXRfcm93cyA9ICR0aGlz
LT5kYi0+cXVlcnlfYW5kX2ZldGNoX2FsbCgnU0VMRUNUICoKKyAgICAgICAgICAgIEZST00gY29t
bWl0X3NldF9yZWxhdGlvbnNoaXBzLCBjb21taXRzIExFRlQgT1VURVIgSk9JTiByZXBvc2l0b3Jp
ZXMgT04gY29tbWl0X3JlcG9zaXRvcnkgPSByZXBvc2l0b3J5X2lkCisgICAgICAgICAgICBXSEVS
RSBjb21taXRzZXRfY29tbWl0ID0gY29tbWl0X2lkIEFORCBjb21taXRzZXRfc2V0ID0gJDEnLCBh
cnJheSgkY29tbWl0X3NldF9pZCkpOwogCi0gICAgICAgICRyb290X2lkcyA9IGFycmF5KCk7Ci0g
ICAgICAgIGZvcmVhY2ggKCRyb290X3Jvd3MgYXMgJHJvdykgeworICAgICAgICAkY29tbWl0X2lk
cyA9IGFycmF5KCk7CisgICAgICAgIGZvcmVhY2ggKCRjb21taXRfcm93cyBhcyAkcm93KSB7CiAg
ICAgICAgICAgICAkcmVwb3NpdG9yeV9pZCA9ICRyZXNvbHZlX2lkcyA/ICRyb3dbJ3JlcG9zaXRv
cnlfbmFtZSddIDogJHJvd1sncmVwb3NpdG9yeV9pZCddOwogICAgICAgICAgICAgJHJldmlzaW9u
ID0gJHJvd1snY29tbWl0X3JldmlzaW9uJ107CiAgICAgICAgICAgICAkY29tbWl0X3RpbWUgPSAk
cm93Wydjb21taXRfdGltZSddOwotICAgICAgICAgICAgYXJyYXlfcHVzaCgkcm9vdF9pZHMsICRy
b3dbJ2NvbW1pdF9pZCddKTsKKyAgICAgICAgICAgIGFycmF5X3B1c2goJGNvbW1pdF9pZHMsICRy
b3dbJ2NvbW1pdF9pZCddKTsKIAotICAgICAgICAgICAgJHJvb3RfaWQgPSAkcm93Wydjb21taXRf
aWQnXTsKLSAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRyb290X2lkLCAkdGhpcy0+
cm9vdHNfYnlfaWQpKQorICAgICAgICAgICAgJGNvbW1pdF9pZCA9ICRyb3dbJ2NvbW1pdF9pZCdd
OworICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGNvbW1pdF9pZCwgJHRoaXMtPmNv
bW1pdHNfYnlfaWQpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBh
cnJheV9wdXNoKCR0aGlzLT5yb290cywgYXJyYXkoCi0gICAgICAgICAgICAgICAgJ2lkJyA9PiAk
cm9vdF9pZCwKKyAgICAgICAgICAgIGFycmF5X3B1c2goJHRoaXMtPmNvbW1pdHMsIGFycmF5KAor
ICAgICAgICAgICAgICAgICdpZCcgPT4gJGNvbW1pdF9pZCwKICAgICAgICAgICAgICAgICAncmVw
b3NpdG9yeScgPT4gJHJlcG9zaXRvcnlfaWQsCiAgICAgICAgICAgICAgICAgJ3JldmlzaW9uJyA9
PiAkcmV2aXNpb24sCiAgICAgICAgICAgICAgICAgJ3RpbWUnID0+IERhdGFiYXNlOjp0b19qc190
aW1lKCRjb21taXRfdGltZSkpKTsKIAotICAgICAgICAgICAgJHRoaXMtPnJvb3RzX2J5X2lkWyRy
b290X2lkXSA9IFRSVUU7CisgICAgICAgICAgICAkdGhpcy0+Y29tbWl0c19ieV9pZFskY29tbWl0
X2lkXSA9IFRSVUU7CiAgICAgICAgIH0KIAotICAgICAgICAkdGhpcy0+cm9vdF9zZXRzX2J5X2lk
WyRyb290X3NldF9pZF0gPSBUUlVFOworICAgICAgICAkdGhpcy0+Y29tbWl0X3NldHNfYnlfaWRb
JGNvbW1pdF9zZXRfaWRdID0gVFJVRTsKIAotICAgICAgICBhcnJheV9wdXNoKCR0aGlzLT5yb290
X3NldHMsIGFycmF5KCdpZCcgPT4gJHJvb3Rfc2V0X2lkLCAncm9vdHMnID0+ICRyb290X2lkcykp
OworICAgICAgICBhcnJheV9wdXNoKCR0aGlzLT5jb21taXRfc2V0cywgYXJyYXkoJ2lkJyA9PiAk
Y29tbWl0X3NldF9pZCwgJ2NvbW1pdHMnID0+ICRjb21taXRfaWRzKSk7CiAgICAgfQogfQogCklu
ZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0
ZS10ZXN0LWdyb3VwLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyb3VwLnBocAkocmV2aXNpb24gMjEz
ODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9wcml2aWxlZ2VkLWFwaS9j
cmVhdGUtdGVzdC1ncm91cC5waHAJKHdvcmtpbmcgY29weSkKQEAgLTksMTMgKzksMTMgQEAgZnVu
Y3Rpb24gbWFpbigpIHsKIAogICAgICR0YXNrX2lkID0gYXJyYXlfZ2V0KCRkYXRhLCAndGFzaycp
OwogICAgICRuYW1lID0gYXJyYXlfZ2V0KCRkYXRhLCAnbmFtZScpOwotICAgICRyb290X3NldHMg
PSBhcnJheV9nZXQoJGRhdGEsICdyb290U2V0cycpOworICAgICRjb21taXRfc2V0c19pbmZvID0g
YXJyYXlfZ2V0KCRkYXRhLCAnY29tbWl0U2V0cycpOwogICAgICRyZXBldGl0aW9uX2NvdW50ID0g
aW50dmFsKGFycmF5X2dldCgkZGF0YSwgJ3JlcGV0aXRpb25Db3VudCcsIDEpKTsKIAogICAgIGlm
ICghJG5hbWUpCiAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ05hbWUnKTsKLSAgICBp
ZiAoISRyb290X3NldHMpCi0gICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ1Jvb3RTZXRz
Jyk7CisgICAgaWYgKCEkY29tbWl0X3NldHNfaW5mbykKKyAgICAgICAgZXhpdF93aXRoX2Vycm9y
KCdNaXNzaW5nQ29tbWl0U2V0cycpOwogICAgIGlmICgkcmVwZXRpdGlvbl9jb3VudCA8IDEpCiAg
ICAgICAgIGV4aXRfd2l0aF9lcnJvcignSW52YWxpZFJlcGV0aXRpb25Db3VudCcsIGFycmF5KCdy
ZXBldGl0aW9uQ291bnQnID0+ICRyZXBldGl0aW9uX2NvdW50KSk7CiAKQEAgLTI2LDE2ICsyNiwx
NiBAQCBmdW5jdGlvbiBtYWluKCkgewogICAgIGlmICghJHRyaWdnZXJhYmxlKQogICAgICAgICBl
eGl0X3dpdGhfZXJyb3IoJ1RyaWdnZXJhYmxlTm90Rm91bmRGb3JUYXNrJywgYXJyYXkoJ3Rhc2sn
ID0+ICR0YXNrX2lkKSk7CiAKLSAgICAkY29tbWl0X3NldHMgPSBjb21taXRfc2V0c19mcm9tX3Jv
b3Rfc2V0cygkZGIsICRyb290X3NldHMpOworICAgICRjb21taXRfc2V0cyA9IGVuc3VyZV9jb21t
aXRfc2V0cygkZGIsICRjb21taXRfc2V0c19pbmZvKTsKIAogICAgICRkYi0+YmVnaW5fdHJhbnNh
Y3Rpb24oKTsKIAotICAgICRyb290X3NldF9pZF9saXN0ID0gYXJyYXkoKTsKKyAgICAkY29tbWl0
X3NldF9pZF9saXN0ID0gYXJyYXkoKTsKICAgICBmb3JlYWNoICgkY29tbWl0X3NldHMgYXMgJGNv
bW1pdF9saXN0KSB7Ci0gICAgICAgICRyb290X3NldF9pZCA9ICRkYi0+aW5zZXJ0X3Jvdygncm9v
dF9zZXRzJywgJ3Jvb3RzZXQnLCBhcnJheSgpKTsKKyAgICAgICAgJGNvbW1pdF9zZXRfaWQgPSAk
ZGItPmluc2VydF9yb3coJ2NvbW1pdF9zZXRzJywgJ2NvbW1pdHNldCcsIGFycmF5KCkpOwogICAg
ICAgICBmb3JlYWNoICgkY29tbWl0X2xpc3QgYXMgJGNvbW1pdCkKLSAgICAgICAgICAgICRkYi0+
aW5zZXJ0X3Jvdygncm9vdHMnLCAncm9vdCcsIGFycmF5KCdzZXQnID0+ICRyb290X3NldF9pZCwg
J2NvbW1pdCcgPT4gJGNvbW1pdCksICdjb21taXQnKTsKLSAgICAgICAgYXJyYXlfcHVzaCgkcm9v
dF9zZXRfaWRfbGlzdCwgJHJvb3Rfc2V0X2lkKTsKKyAgICAgICAgICAgICRkYi0+aW5zZXJ0X3Jv
dygnY29tbWl0X3NldF9yZWxhdGlvbnNoaXBzJywgJ2NvbW1pdHNldCcsIGFycmF5KCdzZXQnID0+
ICRjb21taXRfc2V0X2lkLCAnY29tbWl0JyA9PiAkY29tbWl0KSwgJ2NvbW1pdCcpOworICAgICAg
ICBhcnJheV9wdXNoKCRjb21taXRfc2V0X2lkX2xpc3QsICRjb21taXRfc2V0X2lkKTsKICAgICB9
CiAKICAgICAkZ3JvdXBfaWQgPSAkZGItPmluc2VydF9yb3coJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBz
JywgJ3Rlc3Rncm91cCcsCkBAIC00MywxNCArNDMsMTQgQEAgZnVuY3Rpb24gbWFpbigpIHsKIAog
ICAgICRvcmRlciA9IDA7CiAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHJlcGV0aXRpb25fY291bnQ7
ICRpKyspIHsKLSAgICAgICAgZm9yZWFjaCAoJHJvb3Rfc2V0X2lkX2xpc3QgYXMgJHJvb3Rfc2V0
X2lkKSB7CisgICAgICAgIGZvcmVhY2ggKCRjb21taXRfc2V0X2lkX2xpc3QgYXMgJGNvbW1pdF9z
ZXRfaWQpIHsKICAgICAgICAgICAgICRkYi0+aW5zZXJ0X3JvdygnYnVpbGRfcmVxdWVzdHMnLCAn
cmVxdWVzdCcsIGFycmF5KAogICAgICAgICAgICAgICAgICd0cmlnZ2VyYWJsZScgPT4gJHRyaWdn
ZXJhYmxlWydpZCddLAogICAgICAgICAgICAgICAgICdwbGF0Zm9ybScgPT4gJHRyaWdnZXJhYmxl
WydwbGF0Zm9ybSddLAogICAgICAgICAgICAgICAgICd0ZXN0JyA9PiAkdHJpZ2dlcmFibGVbJ3Rl
c3QnXSwKICAgICAgICAgICAgICAgICAnZ3JvdXAnID0+ICRncm91cF9pZCwKICAgICAgICAgICAg
ICAgICAnb3JkZXInID0+ICRvcmRlciwKLSAgICAgICAgICAgICAgICAncm9vdF9zZXQnID0+ICRy
b290X3NldF9pZCkpOworICAgICAgICAgICAgICAgICdjb21taXRfc2V0JyA9PiAkY29tbWl0X3Nl
dF9pZCkpOwogICAgICAgICAgICAgJG9yZGVyKys7CiAgICAgICAgIH0KICAgICB9CkBAIC02MCwx
MyArNjAsMTMgQEAgZnVuY3Rpb24gbWFpbigpIHsKICAgICBleGl0X3dpdGhfc3VjY2VzcyhhcnJh
eSgndGVzdEdyb3VwSWQnID0+ICRncm91cF9pZCkpOwogfQogCi1mdW5jdGlvbiBjb21taXRfc2V0
c19mcm9tX3Jvb3Rfc2V0cygkZGIsICRyb290X3NldHMpIHsKK2Z1bmN0aW9uIGVuc3VyZV9jb21t
aXRfc2V0cygkZGIsICRjb21taXRfc2V0c19pbmZvKSB7CiAgICAgJHJlcG9zaXRvcnlfbmFtZV90
b19pZCA9IGFycmF5KCk7CiAgICAgZm9yZWFjaCAoJGRiLT5mZXRjaF90YWJsZSgncmVwb3NpdG9y
aWVzJykgYXMgJHJvdykKICAgICAgICAgJHJlcG9zaXRvcnlfbmFtZV90b19pZFskcm93WydyZXBv
c2l0b3J5X25hbWUnXV0gPSAkcm93WydyZXBvc2l0b3J5X2lkJ107CiAKICAgICAkY29tbWl0X3Nl
dHMgPSBhcnJheSgpOwotICAgIGZvcmVhY2ggKCRyb290X3NldHMgYXMgJHJlcG9zaXRvcnlfbmFt
ZSA9PiAkcmV2aXNpb25zKSB7CisgICAgZm9yZWFjaCAoJGNvbW1pdF9zZXRzX2luZm8gYXMgJHJl
cG9zaXRvcnlfbmFtZSA9PiAkcmV2aXNpb25zKSB7CiAgICAgICAgICRyZXBvc2l0b3J5X2lkID0g
YXJyYXlfZ2V0KCRyZXBvc2l0b3J5X25hbWVfdG9faWQsICRyZXBvc2l0b3J5X25hbWUpOwogICAg
ICAgICBpZiAoISRyZXBvc2l0b3J5X2lkKQogICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdS
ZXBvc2l0b3J5Tm90Rm91bmQnLCBhcnJheSgnbmFtZScgPT4gJHJlcG9zaXRvcnlfbmFtZSkpOwpA
QCAtODMsNyArODMsNyBAQCBmdW5jdGlvbiBjb21taXRfc2V0c19mcm9tX3Jvb3Rfc2V0cygkZGIs
CiAgICAgJGNvbW1pdF9jb3VudF9wZXJfc2V0ID0gY291bnQoJGNvbW1pdF9zZXRzWzBdKTsKICAg
ICBmb3JlYWNoICgkY29tbWl0X3NldHMgYXMgJGNvbW1pdHMpIHsKICAgICAgICAgaWYgKCRjb21t
aXRfY291bnRfcGVyX3NldCAhPSBjb3VudCgkY29tbWl0cykpCi0gICAgICAgICAgICBleGl0X3dp
dGhfZXJyb3IoJ0ludmFsaWRSb290U2V0cycsIGFycmF5KCdyb290U2V0cycgPT4gJHJvb3Rfc2V0
cykpOworICAgICAgICAgICAgZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQ29tbWl0U2V0cycsIGFy
cmF5KCdjb21taXRTZXRzJyA9PiAkY29tbWl0X3NldHMpKTsKICAgICB9CiAKICAgICByZXR1cm4g
JGNvbW1pdF9zZXRzOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9p
bmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvaW5kZXguaHRtbAkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBA
IFJ1biB0b29scy9idW5kbGUtdjMtc2NyaXB0cyB0byBzcGVlZCB1cCAKICAgICAgICAgPHNjcmlw
dCBzcmM9Im1vZGVscy9hbmFseXNpcy10YXNrLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlw
dCBzcmM9Im1vZGVscy90ZXN0LWdyb3VwLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBz
cmM9Im1vZGVscy9idWlsZC1yZXF1ZXN0LmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdCBz
cmM9Im1vZGVscy9yb290LXNldC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJt
b2RlbHMvY29tbWl0LXNldC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSJtb2Rl
bHMvdHJpZ2dlcmFibGUuanMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0ibW9kZWxz
L21hbmlmZXN0LmpzIj48L3NjcmlwdD4KIApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy92My9jb21wb25lbnRzL2FuYWx5c2lzLXJlc3VsdHMtdmlld2VyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9hbmFs
eXNpcy1yZXN1bHRzLXZpZXdlci5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2FuYWx5c2lzLXJlc3VsdHMtdmlld2Vy
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC04NSwyMSArODUsMjEgQEAgY2xhc3MgQW5hbHlzaXNSZXN1
bHRzVmlld2VyIGV4dGVuZHMgUmVzdQogICAgICAgICBJbnN0cnVtZW50YXRpb24uc3RhcnRNZWFz
dXJpbmdUaW1lKCdBbmFseXNpc1Jlc3VsdHNWaWV3ZXInLCAnYnVpbGRSb3dHcm91cHMnKTsKIAog
ICAgICAgICB2YXIgdGVzdEdyb3VwcyA9IHRoaXMuX3Rlc3RHcm91cHMgfHwgW107Ci0gICAgICAg
IHZhciByb290U2V0c0luVGVzdEdyb3VwcyA9IHRoaXMuX2NvbGxlY3RSb290U2V0c0luVGVzdEdy
b3Vwcyh0ZXN0R3JvdXBzKTsKKyAgICAgICAgdmFyIGNvbW1pdFNldHNJblRlc3RHcm91cHMgPSB0
aGlzLl9jb2xsZWN0Q29tbWl0U2V0c0luVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKTsKIAotICAgICAg
ICB2YXIgcm93VG9NYXRjaGluZ1Jvb3RTZXRzID0gbmV3IE1hcDsKLSAgICAgICAgdmFyIHJvd0xp
c3QgPSB0aGlzLl9idWlsZFJvd3NGb3JQb2ludHNBbmRUZXN0R3JvdXBzKHJvb3RTZXRzSW5UZXN0
R3JvdXBzLCByb3dUb01hdGNoaW5nUm9vdFNldHMpOworICAgICAgICB2YXIgcm93VG9NYXRjaGlu
Z0NvbW1pdFNldHMgPSBuZXcgTWFwOworICAgICAgICB2YXIgcm93TGlzdCA9IHRoaXMuX2J1aWxk
Um93c0ZvclBvaW50c0FuZFRlc3RHcm91cHMoY29tbWl0U2V0c0luVGVzdEdyb3Vwcywgcm93VG9N
YXRjaGluZ0NvbW1pdFNldHMpOwogCiAgICAgICAgIHZhciB0ZXN0R3JvdXBMYXlvdXRNYXAgPSBu
ZXcgTWFwOwogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgIHJvd0xpc3QuZm9yRWFj
aChmdW5jdGlvbiAocm93LCByb3dJbmRleCkgewotICAgICAgICAgICAgdmFyIG1hdGNoaW5nUm9v
dFNldHMgPSByb3dUb01hdGNoaW5nUm9vdFNldHMuZ2V0KHJvdyk7Ci0gICAgICAgICAgICBpZiAo
IW1hdGNoaW5nUm9vdFNldHMpIHsKKyAgICAgICAgICAgIHZhciBtYXRjaGluZ0NvbW1pdFNldHMg
PSByb3dUb01hdGNoaW5nQ29tbWl0U2V0cy5nZXQocm93KTsKKyAgICAgICAgICAgIGlmICghbWF0
Y2hpbmdDb21taXRTZXRzKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocm93IGlu
c3RhbmNlb2YgQW5hbHlzaXNSZXN1bHRzVmlld2VyLkV4cGFuZGFibGVSb3cpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZm9yICh2YXIgZW50
cnkgb2YgbWF0Y2hpbmdSb290U2V0cykgeworICAgICAgICAgICAgZm9yICh2YXIgZW50cnkgb2Yg
bWF0Y2hpbmdDb21taXRTZXRzKSB7CiAgICAgICAgICAgICAgICAgdmFyIHRlc3RHcm91cCA9IGVu
dHJ5LnRlc3RHcm91cCgpOwogCiAgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gdGVzdEdyb3Vw
TGF5b3V0TWFwLmdldCh0ZXN0R3JvdXApOwpAQCAtMTMwLDgwICsxMzAsODAgQEAgY2xhc3MgQW5h
bHlzaXNSZXN1bHRzVmlld2VyIGV4dGVuZHMgUmVzdQogICAgICAgICByZXR1cm4gW3tyb3dzOiBy
b3dMaXN0fV07CiAgICAgfQogCi0gICAgX2NvbGxlY3RSb290U2V0c0luVGVzdEdyb3Vwcyh0ZXN0
R3JvdXBzKQorICAgIF9jb2xsZWN0Q29tbWl0U2V0c0luVGVzdEdyb3Vwcyh0ZXN0R3JvdXBzKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl90ZXN0R3JvdXBzKQogICAgICAgICAgICAgcmV0dXJu
IFtdOwogCi0gICAgICAgIHZhciByb290U2V0c0luVGVzdEdyb3VwcyA9IFtdOworICAgICAgICB2
YXIgY29tbWl0U2V0c0luVGVzdEdyb3VwcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBncm91cCBv
ZiB0aGlzLl90ZXN0R3JvdXBzKSB7Ci0gICAgICAgICAgICB2YXIgc29ydGVkU2V0cyA9IGdyb3Vw
LnJlcXVlc3RlZFJvb3RTZXRzKCk7CisgICAgICAgICAgICB2YXIgc29ydGVkU2V0cyA9IGdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c29ydGVkU2V0cy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICByb290U2V0c0luVGVzdEdy
b3Vwcy5wdXNoKG5ldyBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuUm9vdFNldEluVGVzdEdyb3VwKGdy
b3VwLCBzb3J0ZWRTZXRzW2ldLCBzb3J0ZWRTZXRzW2kgKyAxXSkpOworICAgICAgICAgICAgICAg
IGNvbW1pdFNldHNJblRlc3RHcm91cHMucHVzaChuZXcgQW5hbHlzaXNSZXN1bHRzVmlld2VyLkNv
bW1pdFNldEluVGVzdEdyb3VwKGdyb3VwLCBzb3J0ZWRTZXRzW2ldLCBzb3J0ZWRTZXRzW2kgKyAx
XSkpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHJvb3RTZXRzSW5UZXN0R3JvdXBzOwor
ICAgICAgICByZXR1cm4gY29tbWl0U2V0c0luVGVzdEdyb3VwczsKICAgICB9CiAKLSAgICBfYnVp
bGRSb3dzRm9yUG9pbnRzQW5kVGVzdEdyb3Vwcyhyb290U2V0c0luVGVzdEdyb3Vwcywgcm93VG9N
YXRjaGluZ1Jvb3RTZXRzKQorICAgIF9idWlsZFJvd3NGb3JQb2ludHNBbmRUZXN0R3JvdXBzKGNv
bW1pdFNldHNJblRlc3RHcm91cHMsIHJvd1RvTWF0Y2hpbmdDb21taXRTZXRzKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc3RhcnRQb2ludC5zZXJpZXMgPT0gdGhpcy5fZW5k
UG9pbnQuc2VyaWVzKTsKICAgICAgICAgdmFyIHJvd0xpc3QgPSBbXTsKICAgICAgICAgdmFyIHBv
aW50QWZ0ZXJFbmQgPSB0aGlzLl9lbmRQb2ludC5zZXJpZXMubmV4dFBvaW50KHRoaXMuX2VuZFBv
aW50KTsKLSAgICAgICAgdmFyIHJvb3RTZXRzV2l0aFBvaW50cyA9IG5ldyBTZXQ7CisgICAgICAg
IHZhciBjb21taXRTZXRzV2l0aFBvaW50cyA9IG5ldyBTZXQ7CiAgICAgICAgIHZhciBwb2ludElu
ZGV4ID0gMDsKICAgICAgICAgdmFyIHByZXZpb3VzUG9pbnQ7CiAgICAgICAgIGZvciAodmFyIHBv
aW50ID0gdGhpcy5fc3RhcnRQb2ludDsgcG9pbnQgJiYgcG9pbnQgIT0gcG9pbnRBZnRlckVuZDsg
cG9pbnQgPSBwb2ludC5zZXJpZXMubmV4dFBvaW50KHBvaW50KSwgcG9pbnRJbmRleCsrKSB7Ci0g
ICAgICAgICAgICB2YXIgcm9vdFNldEluUG9pbnQgPSBwb2ludC5yb290U2V0KCk7Ci0gICAgICAg
ICAgICB2YXIgbWF0Y2hpbmdSb290U2V0cyA9IFtdOwotICAgICAgICAgICAgZm9yICh2YXIgZW50
cnkgb2Ygcm9vdFNldHNJblRlc3RHcm91cHMpIHsKLSAgICAgICAgICAgICAgICBpZiAocm9vdFNl
dEluUG9pbnQuZXF1YWxzKGVudHJ5LnJvb3RTZXQoKSkgJiYgIXJvb3RTZXRzV2l0aFBvaW50cy5o
YXMoZW50cnkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nUm9vdFNldHMucHVzaChl
bnRyeSk7Ci0gICAgICAgICAgICAgICAgICAgIHJvb3RTZXRzV2l0aFBvaW50cy5hZGQoZW50cnkp
OworICAgICAgICAgICAgY29uc3QgY29tbWl0U2V0SW5Qb2ludCA9IHBvaW50LmNvbW1pdFNldCgp
OworICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDb21taXRTZXRzID0gW107CisgICAgICAgICAg
ICBmb3IgKHZhciBlbnRyeSBvZiBjb21taXRTZXRzSW5UZXN0R3JvdXBzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGNvbW1pdFNldEluUG9pbnQuZXF1YWxzKGVudHJ5LmNvbW1pdFNldCgpKSAmJiAh
Y29tbWl0U2V0c1dpdGhQb2ludHMuaGFzKGVudHJ5KSkgeworICAgICAgICAgICAgICAgICAgICBt
YXRjaGluZ0NvbW1pdFNldHMucHVzaChlbnRyeSk7CisgICAgICAgICAgICAgICAgICAgIGNvbW1p
dFNldHNXaXRoUG9pbnRzLmFkZChlbnRyeSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB2YXIgaGFzTWF0Y2hpbmdUZXN0R3JvdXAgPSAhIW1hdGNoaW5n
Um9vdFNldHMubGVuZ3RoOworICAgICAgICAgICAgY29uc3QgaGFzTWF0Y2hpbmdUZXN0R3JvdXAg
PSAhIW1hdGNoaW5nQ29tbWl0U2V0cy5sZW5ndGg7CiAgICAgICAgICAgICBpZiAoIWhhc01hdGNo
aW5nVGVzdEdyb3VwICYmICF0aGlzLl9leHBhbmRlZFBvaW50cy5oYXMocG9pbnQpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB2YXIgcm93ID0gbmV3IFJlc3VsdHNU
YWJsZVJvdyhwb2ludEluZGV4LnRvU3RyaW5nKCksIHJvb3RTZXRJblBvaW50KTsKKyAgICAgICAg
ICAgIGNvbnN0IHJvdyA9IG5ldyBSZXN1bHRzVGFibGVSb3cocG9pbnRJbmRleC50b1N0cmluZygp
LCBjb21taXRTZXRJblBvaW50KTsKICAgICAgICAgICAgIHJvdy5zZXRSZXN1bHQocG9pbnQpOwog
CiAgICAgICAgICAgICBpZiAocHJldmlvdXNQb2ludCAmJiBwcmV2aW91c1BvaW50LnNlcmllcy5u
ZXh0UG9pbnQocHJldmlvdXNQb2ludCkgIT0gcG9pbnQpCiAgICAgICAgICAgICAgICAgcm93TGlz
dC5wdXNoKG5ldyBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuRXhwYW5kYWJsZVJvdyh0aGlzLl9leHBh
bmRCZXR3ZWVuLmJpbmQodGhpcywgcHJldmlvdXNQb2ludCwgcG9pbnQpKSk7CiAgICAgICAgICAg
ICBwcmV2aW91c1BvaW50ID0gcG9pbnQ7CiAKLSAgICAgICAgICAgIHJvd1RvTWF0Y2hpbmdSb290
U2V0cy5zZXQocm93LCBtYXRjaGluZ1Jvb3RTZXRzKTsKKyAgICAgICAgICAgIHJvd1RvTWF0Y2hp
bmdDb21taXRTZXRzLnNldChyb3csIG1hdGNoaW5nQ29tbWl0U2V0cyk7CiAgICAgICAgICAgICBy
b3dMaXN0LnB1c2gocm93KTsKICAgICAgICAgfQogCi0gICAgICAgIHJvb3RTZXRzSW5UZXN0R3Jv
dXBzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7Ci0gICAgICAgICAgICBpZiAocm9vdFNldHNX
aXRoUG9pbnRzLmhhcyhlbnRyeSkpCisgICAgICAgIGNvbW1pdFNldHNJblRlc3RHcm91cHMuZm9y
RWFjaChmdW5jdGlvbiAoZW50cnkpIHsKKyAgICAgICAgICAgIGlmIChjb21taXRTZXRzV2l0aFBv
aW50cy5oYXMoZW50cnkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByb3dMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgdmFyIHJvdyA9IHJvd0xpc3RbaV07Ci0gICAgICAgICAgICAgICAgaWYgKCEocm93IGluc3Rh
bmNlb2YgQW5hbHlzaXNSZXN1bHRzVmlld2VyLkV4cGFuZGFibGVSb3cpICYmIHJvdy5yb290U2V0
KCkuZXF1YWxzKGVudHJ5LnJvb3RTZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcm93VG9N
YXRjaGluZ1Jvb3RTZXRzLmdldChyb3cpLnB1c2goZW50cnkpOworICAgICAgICAgICAgICAgIGlm
ICghKHJvdyBpbnN0YW5jZW9mIEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5FeHBhbmRhYmxlUm93KSAm
JiByb3cuY29tbWl0U2V0KCkuZXF1YWxzKGVudHJ5LmNvbW1pdFNldCgpKSkgeworICAgICAgICAg
ICAgICAgICAgICByb3dUb01hdGNoaW5nQ29tbWl0U2V0cy5nZXQocm93KS5wdXNoKGVudHJ5KTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgdmFyIGdyb3VwVGltZSA9IGVudHJ5LnJvb3RTZXQoKS5sYXRl
c3RDb21taXRUaW1lKCk7Ci0gICAgICAgICAgICB2YXIgbmV3Um93ID0gbmV3IFJlc3VsdHNUYWJs
ZVJvdyhudWxsLCBlbnRyeS5yb290U2V0KCkpOwotICAgICAgICAgICAgcm93VG9NYXRjaGluZ1Jv
b3RTZXRzLnNldChuZXdSb3csIFtlbnRyeV0pOworICAgICAgICAgICAgdmFyIGdyb3VwVGltZSA9
IGVudHJ5LmNvbW1pdFNldCgpLmxhdGVzdENvbW1pdFRpbWUoKTsKKyAgICAgICAgICAgIHZhciBu
ZXdSb3cgPSBuZXcgUmVzdWx0c1RhYmxlUm93KG51bGwsIGVudHJ5LmNvbW1pdFNldCgpKTsKKyAg
ICAgICAgICAgIHJvd1RvTWF0Y2hpbmdDb21taXRTZXRzLnNldChuZXdSb3csIFtlbnRyeV0pOwog
CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd0xpc3QubGVuZ3RoOyBpKyspIHsK
ICAgICAgICAgICAgICAgICBpZiAocm93TGlzdFtpXSBpbnN0YW5jZW9mIEFuYWx5c2lzUmVzdWx0
c1ZpZXdlci5FeHBhbmRhYmxlUm93KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgICAgIGlmIChlbnRyeS5zdWNjZWVkaW5nUm9vdFNldCgpICYmIHJvd0xpc3Rb
aV0ucm9vdFNldCgpLmVxdWFscyhlbnRyeS5zdWNjZWVkaW5nUm9vdFNldCgpKSkgeworICAgICAg
ICAgICAgICAgIGlmIChlbnRyeS5zdWNjZWVkaW5nQ29tbWl0U2V0KCkgJiYgcm93TGlzdFtpXS5j
b21taXRTZXQoKS5lcXVhbHMoZW50cnkuc3VjY2VlZGluZ0NvbW1pdFNldCgpKSkgewogICAgICAg
ICAgICAgICAgICAgICByb3dMaXN0LnNwbGljZShpLCAwLCBuZXdSb3cpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgdmFy
IHJvd1RpbWUgPSByb3dMaXN0W2ldLnJvb3RTZXQoKS5sYXRlc3RDb21taXRUaW1lKCk7CisgICAg
ICAgICAgICAgICAgdmFyIHJvd1RpbWUgPSByb3dMaXN0W2ldLmNvbW1pdFNldCgpLmxhdGVzdENv
bW1pdFRpbWUoKTsKICAgICAgICAgICAgICAgICBpZiAocm93VGltZSA+IGdyb3VwVGltZSkgewog
ICAgICAgICAgICAgICAgICAgICByb3dMaXN0LnNwbGljZShpLCAwLCBuZXdSb3cpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBjbGFzcyBBbmFseXNp
c1Jlc3VsdHNWaWV3ZXIgZXh0ZW5kcyBSZXN1CiAKICAgICAgICAgICAgICAgICBpZiAocm93VGlt
ZSA9PSBncm91cFRpbWUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTWlzc2luZyBzb21lIGNv
bW1pdHMuIERvIGFzIGJlc3QgYXMgd2UgY2FuIHRvIGF2b2lkIGdvaW5nIGJhY2t3YXJkcyBpbiB0
aW1lLgotICAgICAgICAgICAgICAgICAgICB2YXIgcmVwb3NpdG9yaWVzSW5OZXdSb3cgPSBlbnRy
eS5yb290U2V0KCkucmVwb3NpdG9yaWVzKCk7CisgICAgICAgICAgICAgICAgICAgIHZhciByZXBv
c2l0b3JpZXNJbk5ld1JvdyA9IGVudHJ5LmNvbW1pdFNldCgpLnJlcG9zaXRvcmllcygpOwogICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaTsgaiA8IHJvd0xpc3QubGVuZ3RoOyBqKysp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3dMaXN0W2pdIGluc3RhbmNlb2YgQW5h
bHlzaXNSZXN1bHRzVmlld2VyLkV4cGFuZGFibGVSb3cpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXBvc2l0
b3J5IG9mIHJlcG9zaXRvcmllc0luTmV3Um93KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG5ld0NvbW1pdCA9IGVudHJ5LnJvb3RTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByb3dDb21taXQgPSBy
b3dMaXN0W2pdLnJvb3RTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdDb21taXQgPSBlbnRyeS5jb21taXRTZXQo
KS5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciByb3dDb21taXQgPSByb3dMaXN0W2pdLmNvbW1pdFNldCgpLmNvbW1pdEZvclJl
cG9zaXRvcnkocmVwb3NpdG9yeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFy
b3dDb21taXQgfHwgbmV3Q29tbWl0LnRpbWUoKSA8IHJvd0NvbW1pdC50aW1lKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93TGlzdC5zcGxpY2UoaiwgMCwgbmV3Um93KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI3LDggKzIyNyw4
IEBAIGNsYXNzIEFuYWx5c2lzUmVzdWx0c1ZpZXdlciBleHRlbmRzIFJlc3UKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBuZXdSb3cgPSBuZXcgUmVz
dWx0c1RhYmxlUm93KG51bGwsIGVudHJ5LnJvb3RTZXQoKSk7Ci0gICAgICAgICAgICByb3dUb01h
dGNoaW5nUm9vdFNldHMuc2V0KG5ld1JvdywgW2VudHJ5XSk7CisgICAgICAgICAgICB2YXIgbmV3
Um93ID0gbmV3IFJlc3VsdHNUYWJsZVJvdyhudWxsLCBlbnRyeS5jb21taXRTZXQoKSk7CisgICAg
ICAgICAgICByb3dUb01hdGNoaW5nQ29tbWl0U2V0cy5zZXQobmV3Um93LCBbZW50cnldKTsKICAg
ICAgICAgICAgIHJvd0xpc3QucHVzaChuZXdSb3cpOwogICAgICAgICB9KTsKIApAQCAtMzU1LDI2
ICszNTUsMjYgQEAgQW5hbHlzaXNSZXN1bHRzVmlld2VyLkV4cGFuZGFibGVSb3cgPSBjbAogICAg
IH0KIH0KIAotQW5hbHlzaXNSZXN1bHRzVmlld2VyLlJvb3RTZXRJblRlc3RHcm91cCA9IGNsYXNz
IHsKLSAgICBjb25zdHJ1Y3Rvcih0ZXN0R3JvdXAsIHJvb3RTZXQsIHN1Y2NlZWRpbmdSb290U2V0
KQorQW5hbHlzaXNSZXN1bHRzVmlld2VyLkNvbW1pdFNldEluVGVzdEdyb3VwID0gY2xhc3Mgewor
ICAgIGNvbnN0cnVjdG9yKHRlc3RHcm91cCwgY29tbWl0U2V0LCBzdWNjZWVkaW5nQ29tbWl0U2V0
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGVzdEdyb3VwIGluc3RhbmNlb2YgVGVz
dEdyb3VwKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocm9vdFNldCBpbnN0YW5jZW9mIFJvb3RT
ZXQpOworICAgICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXQgaW5zdGFuY2VvZiBDb21taXRT
ZXQpOwogICAgICAgICB0aGlzLl90ZXN0R3JvdXAgPSB0ZXN0R3JvdXA7Ci0gICAgICAgIHRoaXMu
X3Jvb3RTZXQgPSByb290U2V0OwotICAgICAgICB0aGlzLl9zdWNjZWVkaW5nUm9vdFNldCA9IHN1
Y2NlZWRpbmdSb290U2V0OworICAgICAgICB0aGlzLl9jb21taXRTZXQgPSBjb21taXRTZXQ7Cisg
ICAgICAgIHRoaXMuX3N1Y2NlZWRpbmdDb21taXRTZXQgPSBzdWNjZWVkaW5nQ29tbWl0U2V0Owog
ICAgIH0KIAogICAgIHRlc3RHcm91cCgpIHsgcmV0dXJuIHRoaXMuX3Rlc3RHcm91cDsgfQotICAg
IHJvb3RTZXQoKSB7IHJldHVybiB0aGlzLl9yb290U2V0OyB9Ci0gICAgc3VjY2VlZGluZ1Jvb3RT
ZXQoKSB7IHJldHVybiB0aGlzLl9zdWNjZWVkaW5nUm9vdFNldDsgfQorICAgIGNvbW1pdFNldCgp
IHsgcmV0dXJuIHRoaXMuX2NvbW1pdFNldDsgfQorICAgIHN1Y2NlZWRpbmdDb21taXRTZXQoKSB7
IHJldHVybiB0aGlzLl9zdWNjZWVkaW5nQ29tbWl0U2V0OyB9CiB9CiAKIEFuYWx5c2lzUmVzdWx0
c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0Jsb2NrID0gY2xhc3MgewogICAgIGNvbnN0cnVjdG9y
KHRlc3RHcm91cCwgY2xhc3NOYW1lLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX3Rl
c3RHcm91cCA9IHRlc3RHcm91cDsKLSAgICAgICAgdGhpcy5fcm9vdFNldEluZGV4Um93SW5kZXhN
YXAgPSBbXTsKKyAgICAgICAgdGhpcy5fY29tbWl0U2V0SW5kZXhSb3dJbmRleE1hcCA9IFtdOwog
ICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAgICAgICAgIHRoaXMuX2xhYmVs
ID0gbnVsbDsKICAgICAgICAgdGhpcy5fdGl0bGUgPSBudWxsOwpAQCAtMzgyLDEwICszODIsMTAg
QEAgQW5hbHlzaXNSZXN1bHRzVmlld2VyLlRlc3RHcm91cFN0YWNraW5nQgogICAgICAgICB0aGlz
Ll9jYWxsYmFjayA9IGNhbGxiYWNrOwogICAgIH0KIAotICAgIGFkZFJvd0luZGV4KHJvb3RTZXRJ
blRlc3RHcm91cCwgcm93SW5kZXgpCisgICAgYWRkUm93SW5kZXgoY29tbWl0U2V0SW5UZXN0R3Jv
dXAsIHJvd0luZGV4KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocm9vdFNldEluVGVz
dEdyb3VwIGluc3RhbmNlb2YgQW5hbHlzaXNSZXN1bHRzVmlld2VyLlJvb3RTZXRJblRlc3RHcm91
cCk7Ci0gICAgICAgIHRoaXMuX3Jvb3RTZXRJbmRleFJvd0luZGV4TWFwLnB1c2goe3Jvb3RTZXQ6
IHJvb3RTZXRJblRlc3RHcm91cC5yb290U2V0KCksIHJvd0luZGV4OiByb3dJbmRleH0pOworICAg
ICAgICBjb25zb2xlLmFzc2VydChjb21taXRTZXRJblRlc3RHcm91cCBpbnN0YW5jZW9mIEFuYWx5
c2lzUmVzdWx0c1ZpZXdlci5Db21taXRTZXRJblRlc3RHcm91cCk7CisgICAgICAgIHRoaXMuX2Nv
bW1pdFNldEluZGV4Um93SW5kZXhNYXAucHVzaCh7Y29tbWl0U2V0OiBjb21taXRTZXRJblRlc3RH
cm91cC5jb21taXRTZXQoKSwgcm93SW5kZXg6IHJvd0luZGV4fSk7CiAgICAgfQogCiAgICAgdGVz
dEdyb3VwKCkgeyByZXR1cm4gdGhpcy5fdGVzdEdyb3VwOyB9CkBAIC00MDIsMTAgKzQwMiwxMCBA
QCBBbmFseXNpc1Jlc3VsdHNWaWV3ZXIuVGVzdEdyb3VwU3RhY2tpbmdCCiAgICAgICAgIH0sIENv
bXBvbmVudEJhc2UuY3JlYXRlTGluayh0aGlzLl9sYWJlbCwgdGhpcy5fdGl0bGUsIHRoaXMuX2Nh
bGxiYWNrKSk7CiAgICAgfQogCi0gICAgaXNDb21wbGV0ZSgpIHsgcmV0dXJuIHRoaXMuX3Jvb3RT
ZXRJbmRleFJvd0luZGV4TWFwLmxlbmd0aCA+PSAyOyB9CisgICAgaXNDb21wbGV0ZSgpIHsgcmV0
dXJuIHRoaXMuX2NvbW1pdFNldEluZGV4Um93SW5kZXhNYXAubGVuZ3RoID49IDI7IH0KIAotICAg
IHN0YXJ0Um93SW5kZXgoKSB7IHJldHVybiB0aGlzLl9yb290U2V0SW5kZXhSb3dJbmRleE1hcFsw
XS5yb3dJbmRleDsgfQotICAgIGVuZFJvd0luZGV4KCkgeyByZXR1cm4gdGhpcy5fcm9vdFNldElu
ZGV4Um93SW5kZXhNYXBbdGhpcy5fcm9vdFNldEluZGV4Um93SW5kZXhNYXAubGVuZ3RoIC0gMV0u
cm93SW5kZXg7IH0KKyAgICBzdGFydFJvd0luZGV4KCkgeyByZXR1cm4gdGhpcy5fY29tbWl0U2V0
SW5kZXhSb3dJbmRleE1hcFswXS5yb3dJbmRleDsgfQorICAgIGVuZFJvd0luZGV4KCkgeyByZXR1
cm4gdGhpcy5fY29tbWl0U2V0SW5kZXhSb3dJbmRleE1hcFt0aGlzLl9jb21taXRTZXRJbmRleFJv
d0luZGV4TWFwLmxlbmd0aCAtIDFdLnJvd0luZGV4OyB9CiAgICAgaXNUaGluKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2NvbXB1dGVUZXN0R3JvdXBTdGF0dXMoKTsKQEAgLTQxNywxMCArNDE3LDEw
IEBAIEFuYWx5c2lzUmVzdWx0c1ZpZXdlci5UZXN0R3JvdXBTdGFja2luZ0IKICAgICAgICAgaWYg
KHRoaXMuX3N0YXR1cyB8fCAhdGhpcy5pc0NvbXBsZXRlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcm9vdFNldEluZGV4Um93SW5kZXhNYXAu
bGVuZ3RoIDw9IDIpOyAvLyBGSVhNRTogU3VwcG9ydCBoYXZpbmcgbW9yZSByb290IHNldHMuCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbW1pdFNldEluZGV4Um93SW5kZXhNYXAubGVu
Z3RoIDw9IDIpOyAvLyBGSVhNRTogU3VwcG9ydCBoYXZpbmcgbW9yZSByb290IHNldHMuCiAKICAg
ICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3Rlc3RHcm91cC5jb21wYXJlVGVzdFJlc3VsdHMoCi0g
ICAgICAgICAgICB0aGlzLl9yb290U2V0SW5kZXhSb3dJbmRleE1hcFswXS5yb290U2V0LCB0aGlz
Ll9yb290U2V0SW5kZXhSb3dJbmRleE1hcFsxXS5yb290U2V0KTsKKyAgICAgICAgICAgIHRoaXMu
X2NvbW1pdFNldEluZGV4Um93SW5kZXhNYXBbMF0uY29tbWl0U2V0LCB0aGlzLl9jb21taXRTZXRJ
bmRleFJvd0luZGV4TWFwWzFdLmNvbW1pdFNldCk7CiAKICAgICAgICAgdGhpcy5fbGFiZWwgPSBy
ZXN1bHQubGFiZWw7CiAgICAgICAgIHRoaXMuX3RpdGxlID0gcmVzdWx0LmZ1bGxMYWJlbDsKSW5k
ZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1y
ZXZpc2lvbi1yYW5nZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcmV2aXNpb24tcmFuZ2UuanMJKHJldmlzaW9uIDIx
Mzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9j
aGFydC1yZXZpc2lvbi1yYW5nZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBA
IGNsYXNzIENoYXJ0UmV2aXNpb25SYW5nZSB7CiAgICAgewogICAgICAgICBpZiAoIXBvaW50IHx8
ICFyZXBvc2l0b3J5KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIGNvbnN0IHJv
b3RTZXQgPSBwb2ludC5yb290U2V0KCk7Ci0gICAgICAgIGlmICghcm9vdFNldCkKKyAgICAgICAg
Y29uc3QgY29tbWl0U2V0ID0gcG9pbnQuY29tbWl0U2V0KCk7CisgICAgICAgIGlmICghY29tbWl0
U2V0KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIGNvbnN0IGNvbW1pdCA9IHJv
b3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAgY29uc3QgY29t
bWl0ID0gY29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CiAgICAgICAg
IGlmICghY29tbWl0KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBj
b21taXQucmV2aXNpb24oKTsKQEAgLTUyLDE0ICs1MiwxNCBAQCBjbGFzcyBDaGFydFJldmlzaW9u
UmFuZ2UgewogICAgICAgICBpZiAoIWN1cnJlbnRQb2ludCkKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCi0gICAgICAgIGNvbnN0IGN1cnJlbnRSb290U2V0ID0gY3VycmVudFBvaW50LnJvb3RT
ZXQoKTsKLSAgICAgICAgY29uc3QgcHJldmlvdXNSb290U2V0ID0gcHJldmlvdXNQb2ludCA/IHBy
ZXZpb3VzUG9pbnQucm9vdFNldCgpIDogbnVsbDsKKyAgICAgICAgY29uc3QgY3VycmVudENvbW1p
dFNldCA9IGN1cnJlbnRQb2ludC5jb21taXRTZXQoKTsKKyAgICAgICAgY29uc3QgcHJldmlvdXND
b21taXRTZXQgPSBwcmV2aW91c1BvaW50ID8gcHJldmlvdXNQb2ludC5jb21taXRTZXQoKSA6IG51
bGw7CiAKLSAgICAgICAgY29uc3QgcmVwb3NpdG9yaWVzSW5DdXJyZW50Um9vdFNldCA9IFJlcG9z
aXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTChjdXJyZW50Um9vdFNldC5yZXBv
c2l0b3JpZXMoKSk7CisgICAgICAgIGNvbnN0IHJlcG9zaXRvcmllc0luQ3VycmVudENvbW1pdFNl
dCA9IFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTChjdXJyZW50Q29t
bWl0U2V0LnJlcG9zaXRvcmllcygpKTsKICAgICAgICAgY29uc3QgcmV2aXNpb25MaXN0ID0gW107
Ci0gICAgICAgIGZvciAobGV0IHJlcG9zaXRvcnkgb2YgcmVwb3NpdG9yaWVzSW5DdXJyZW50Um9v
dFNldCkgewotICAgICAgICAgICAgbGV0IGN1cnJlbnRDb21taXQgPSBjdXJyZW50Um9vdFNldC5j
b21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOwotICAgICAgICAgICAgbGV0IHByZXZpb3Vz
Q29tbWl0ID0gcHJldmlvdXNSb290U2V0ID8gcHJldmlvdXNSb290U2V0LmNvbW1pdEZvclJlcG9z
aXRvcnkocmVwb3NpdG9yeSkgOiBudWxsOworICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5IG9m
IHJlcG9zaXRvcmllc0luQ3VycmVudENvbW1pdFNldCkgeworICAgICAgICAgICAgbGV0IGN1cnJl
bnRDb21taXQgPSBjdXJyZW50Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9y
eSk7CisgICAgICAgICAgICBsZXQgcHJldmlvdXNDb21taXQgPSBwcmV2aW91c0NvbW1pdFNldCA/
IHByZXZpb3VzQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkgOiBudWxs
OwogICAgICAgICAgICAgcmV2aXNpb25MaXN0LnB1c2goY3VycmVudENvbW1pdC5kaWZmKHByZXZp
b3VzQ29tbWl0KSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJldmlzaW9uTGlzdDsKSW5k
ZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21p
emFibGUtdGVzdC1ncm91cC1mb3JtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jdXN0b21pemFibGUtdGVzdC1ncm91cC1mb3Jt
LmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGlj
L3YzL2NvbXBvbmVudHMvY3VzdG9taXphYmxlLXRlc3QtZ3JvdXAtZm9ybS5qcwkod29ya2luZyBj
b3B5KQpAQCAtNCw3ICs0LDcgQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRl
bmRzIAogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHN1cGVyKCdjdXN0b21pemFi
bGUtdGVzdC1ncm91cC1mb3JtJyk7Ci0gICAgICAgIHRoaXMuX3Jvb3RTZXRNYXAgPSBudWxsOwor
ICAgICAgICB0aGlzLl9jb21taXRTZXRNYXAgPSBudWxsOwogICAgICAgICB0aGlzLl9yZW5kZXJl
ZFJlcG9zaXRvcnlsaXN0ID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3VzdG9taXplZCA9IGZhbHNl
OwogICAgICAgICB0aGlzLl9uYW1lQ29udHJvbCA9IHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0
b3IoJy5uYW1lJyk7CkBAIC0xMiwxNiArMTIsMTYgQEAgY2xhc3MgQ3VzdG9taXphYmxlVGVzdEdy
b3VwRm9ybSBleHRlbmRzIAogICAgICAgICB0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCdh
Jykub25jbGljayA9IHRoaXMuX2N1c3RvbWl6ZS5iaW5kKHRoaXMpOwogICAgIH0KIAotICAgIHNl
dFJvb3RTZXRNYXAobWFwKQorICAgIHNldENvbW1pdFNldE1hcChtYXApCiAgICAgewotICAgICAg
ICB0aGlzLl9yb290U2V0TWFwID0gbWFwOworICAgICAgICB0aGlzLl9jb21taXRTZXRNYXAgPSBt
YXA7CiAgICAgICAgIHRoaXMuX2N1c3RvbWl6ZWQgPSBmYWxzZTsKICAgICB9CiAKICAgICBfc3Vi
bWl0dGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdGFydENhbGxiYWNrKQotICAgICAg
ICAgICAgdGhpcy5fc3RhcnRDYWxsYmFjayh0aGlzLl9uYW1lQ29udHJvbC52YWx1ZSwgdGhpcy5f
cmVwZXRpdGlvbkNvdW50LCB0aGlzLl9jb21wdXRlUm9vdFNldE1hcCgpKTsKKyAgICAgICAgICAg
IHRoaXMuX3N0YXJ0Q2FsbGJhY2sodGhpcy5fbmFtZUNvbnRyb2wudmFsdWUsIHRoaXMuX3JlcGV0
aXRpb25Db3VudCwgdGhpcy5fY29tcHV0ZUNvbW1pdFNldE1hcCgpKTsKICAgICB9CiAKICAgICBf
Y3VzdG9taXplKGV2ZW50KQpAQCAtMzEsMjQgKzMxLDI0IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRl
c3RHcm91cEZvcm0gZXh0ZW5kcyAKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAg
ICB9CiAKLSAgICBfY29tcHV0ZVJvb3RTZXRNYXAoKQorICAgIF9jb21wdXRlQ29tbWl0U2V0TWFw
KCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jvb3RTZXRNYXApOworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb21taXRTZXRNYXApOwogICAgICAgICBpZiAoIXRo
aXMuX2N1c3RvbWl6ZWQpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fcm9vdFNldE1hcDsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9jb21taXRTZXRNYXA7CiAKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fcmVuZGVyZWRSZXBvc2l0b3J5bGlzdCk7CiAgICAgICAgIHZhciBtYXAgPSB7
fTsKLSAgICAgICAgZm9yICh2YXIgbGFiZWwgaW4gdGhpcy5fcm9vdFNldE1hcCkgewotICAgICAg
ICAgICAgdmFyIGN1c3RvbVJvb3RTZXQgPSBuZXcgQ3VzdG9tUm9vdFNldDsKKyAgICAgICAgZm9y
ICh2YXIgbGFiZWwgaW4gdGhpcy5fY29tbWl0U2V0TWFwKSB7CisgICAgICAgICAgICB2YXIgY3Vz
dG9tQ29tbWl0U2V0ID0gbmV3IEN1c3RvbUNvbW1pdFNldDsKICAgICAgICAgICAgIGZvciAodmFy
IHJlcG9zaXRvcnkgb2YgdGhpcy5fcmVuZGVyZWRSZXBvc2l0b3J5bGlzdCkgewogICAgICAgICAg
ICAgICAgIHZhciBjbGFzc05hbWUgPSBDdXN0b21pemFibGVUZXN0R3JvdXBGb3JtLl9jbGFzc0Zv
ckxhYmVsQW5kUmVwb3NpdG9yeShsYWJlbCwgcmVwb3NpdG9yeSk7CiAgICAgICAgICAgICAgICAg
dmFyIHJldmlzaW9uID0gdGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLicgKyBjbGFzc05h
bWUpLnZhbHVlOwogICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJldmlzaW9uKTsKICAg
ICAgICAgICAgICAgICBpZiAocmV2aXNpb24pCi0gICAgICAgICAgICAgICAgICAgIGN1c3RvbVJv
b3RTZXQuc2V0UmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnksIHJldmlzaW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgY3VzdG9tQ29tbWl0U2V0LnNldFJldmlzaW9uRm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5LCByZXZpc2lvbik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtYXBb
bGFiZWxdID0gY3VzdG9tUm9vdFNldDsKKyAgICAgICAgICAgIG1hcFtsYWJlbF0gPSBjdXN0b21D
b21taXRTZXQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9CkBAIC01Niw3
ICs1Niw3IEBAIGNsYXNzIEN1c3RvbWl6YWJsZVRlc3RHcm91cEZvcm0gZXh0ZW5kcyAKICAgICBy
ZW5kZXIoKQogICAgIHsKICAgICAgICAgc3VwZXIucmVuZGVyKCk7Ci0gICAgICAgIHZhciBtYXAg
PSB0aGlzLl9yb290U2V0TWFwOworICAgICAgICB2YXIgbWFwID0gdGhpcy5fY29tbWl0U2V0TWFw
OwogCiAgICAgICAgIHRoaXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLmRpc2Fi
bGVkID0gIShtYXAgJiYgdGhpcy5fbmFtZUNvbnRyb2wudmFsdWUpOwogICAgICAgICB0aGlzLmNv
bnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY3VzdG9taXplLWxpbmsnKS5zdHlsZS5kaXNwbGF5ID0g
IW1hcCA/ICdub25lJyA6IG51bGw7CkBAIC02OCwxMSArNjgsMTEgQEAgY2xhc3MgQ3VzdG9taXph
YmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIAogICAgICAgICBjb25zb2xlLmFzc2VydChtYXApOwog
CiAgICAgICAgIHZhciByZXBvc2l0b3J5U2V0ID0gbmV3IFNldDsKLSAgICAgICAgdmFyIHJvb3RT
ZXRMYWJlbHMgPSBbXTsKKyAgICAgICAgdmFyIGNvbW1pdFNldExhYmVscyA9IFtdOwogICAgICAg
ICBmb3IgKHZhciBsYWJlbCBpbiBtYXApIHsKICAgICAgICAgICAgIGZvciAodmFyIHJlcG9zaXRv
cnkgb2YgbWFwW2xhYmVsXS5yZXBvc2l0b3JpZXMoKSkKICAgICAgICAgICAgICAgICByZXBvc2l0
b3J5U2V0LmFkZChyZXBvc2l0b3J5KTsKLSAgICAgICAgICAgIHJvb3RTZXRMYWJlbHMucHVzaChs
YWJlbCk7CisgICAgICAgICAgICBjb21taXRTZXRMYWJlbHMucHVzaChsYWJlbCk7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLl9yZW5kZXJlZFJlcG9zaXRvcnlsaXN0ID0gUmVwb3NpdG9yeS5z
b3J0QnlOYW1lUHJlZmVycmluZ09uZXNXaXRoVVJMKEFycmF5LmZyb20ocmVwb3NpdG9yeVNldC52
YWx1ZXMoKSkpOwpAQCAtODIsOCArODIsOCBAQCBjbGFzcyBDdXN0b21pemFibGVUZXN0R3JvdXBG
b3JtIGV4dGVuZHMgCiAgICAgICAgICAgICBlbGVtZW50KCd0YWJsZScsIHtjbGFzczogJ2N1c3Rv
bS10YWJsZSd9LCBbCiAgICAgICAgICAgICAgICAgZWxlbWVudCgndGhlYWQnLAogICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50KCd0cicsCi0gICAgICAgICAgICAgICAgICAgICAgICBbZWxlbWVu
dCgndGQnLCAnUmVwb3NpdG9yeScpLCByb290U2V0TGFiZWxzLm1hcChmdW5jdGlvbiAobGFiZWwp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCgndGQnLCB7Y29s
c3Bhbjogcm9vdFNldExhYmVscy5sZW5ndGggKyAxfSwgbGFiZWwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgW2VsZW1lbnQoJ3RkJywgJ1JlcG9zaXRvcnknKSwgY29tbWl0U2V0TGFiZWxzLm1h
cChmdW5jdGlvbiAobGFiZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudCgndGQnLCB7Y29sc3BhbjogY29tbWl0U2V0TGFiZWxzLmxlbmd0aCArIDF9LCBsYWJl
bCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KV0pKSwKICAgICAgICAgICAgICAgICBlbGVt
ZW50KCd0Ym9keScsCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVkUmVwb3NpdG9y
eWxpc3QubWFwKGZ1bmN0aW9uIChyZXBvc2l0b3J5KSB7CkBAIC05NiwxOCArOTYsMTggQEAgY2xh
c3MgQ3VzdG9taXphYmxlVGVzdEdyb3VwRm9ybSBleHRlbmRzIAogCiAgICAgc3RhdGljIF9jbGFz
c0ZvckxhYmVsQW5kUmVwb3NpdG9yeShsYWJlbCwgcmVwb3NpdG9yeSkgeyByZXR1cm4gbGFiZWwg
KyAnLScgKyByZXBvc2l0b3J5LmlkKCk7IH0KIAotICAgIHN0YXRpYyBfY29uc3RydWN0UmV2aXNp
b25SYWRpb0J1dHRvbnMocm9vdFNldE1hcCwgcmVwb3NpdG9yeSwgcm93TGFiZWwpCisgICAgc3Rh
dGljIF9jb25zdHJ1Y3RSZXZpc2lvblJhZGlvQnV0dG9ucyhjb21taXRTZXRNYXAsIHJlcG9zaXRv
cnksIHJvd0xhYmVsKQogICAgIHsKICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IHRoaXMuX2NsYXNz
Rm9yTGFiZWxBbmRSZXBvc2l0b3J5KHJvd0xhYmVsLCByZXBvc2l0b3J5KTsKICAgICAgICAgdmFy
IGdyb3VwTmFtZSA9IGNsYXNzTmFtZSArICctZ3JvdXAnOwogICAgICAgICB2YXIgZWxlbWVudCA9
IENvbXBvbmVudEJhc2UuY3JlYXRlRWxlbWVudDsKICAgICAgICAgdmFyIHJldmlzaW9uRWRpdG9y
ID0gZWxlbWVudCgnaW5wdXQnLCB7Y2xhc3M6IGNsYXNzTmFtZX0pOwogCi0gICAgICAgIHZhciBu
b2RlcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBsYWJlbFRvQ2hvb3NlIGluIHJvb3RTZXRNYXAp
IHsKLSAgICAgICAgICAgIHZhciBjb21taXQgPSByb290U2V0TWFwW2xhYmVsVG9DaG9vc2VdLmNv
bW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7Ci0gICAgICAgICAgICB2YXIgY2hlY2tlZCA9
IGxhYmVsVG9DaG9vc2UgPT0gcm93TGFiZWw7Ci0gICAgICAgICAgICB2YXIgcmFkaW9CdXR0b24g
PSB0aGlzLl9jcmVhdGVSYWRpb0J1dHRvbihncm91cE5hbWUsIHJldmlzaW9uRWRpdG9yLCBjb21t
aXQsIGNoZWNrZWQpOworICAgICAgICBjb25zdCBub2RlcyA9IFtdOworICAgICAgICBmb3IgKGxl
dCBsYWJlbFRvQ2hvb3NlIGluIGNvbW1pdFNldE1hcCkgeworICAgICAgICAgICAgY29uc3QgY29t
bWl0ID0gY29tbWl0U2V0TWFwW2xhYmVsVG9DaG9vc2VdLmNvbW1pdEZvclJlcG9zaXRvcnkocmVw
b3NpdG9yeSk7CisgICAgICAgICAgICBjb25zdCBjaGVja2VkID0gbGFiZWxUb0Nob29zZSA9PSBy
b3dMYWJlbDsKKyAgICAgICAgICAgIGNvbnN0IHJhZGlvQnV0dG9uID0gdGhpcy5fY3JlYXRlUmFk
aW9CdXR0b24oZ3JvdXBOYW1lLCByZXZpc2lvbkVkaXRvciwgY29tbWl0LCBjaGVja2VkKTsKICAg
ICAgICAgICAgIGlmIChjaGVja2VkKQogICAgICAgICAgICAgICAgIHJldmlzaW9uRWRpdG9yLnZh
bHVlID0gY29tbWl0ID8gY29tbWl0LnJldmlzaW9uKCkgOiAnJzsKICAgICAgICAgICAgIG5vZGVz
LnB1c2goZWxlbWVudCgndGQnLCBlbGVtZW50KCdsYWJlbCcsIFtyYWRpb0J1dHRvbiwgbGFiZWxU
b0Nob29zZV0pKSk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvcmVzdWx0cy10YWJsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvcmVzdWx0cy10YWJsZS5qcwkocmV2aXNpb24g
MjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRz
L3Jlc3VsdHMtdGFibGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3Mg
UmVzdWx0c1RhYmxlIGV4dGVuZHMgQ29tcG9uZW50QmFzZQogICAgICAgICAgICAgICAgIGlmIChz
ZWxmLl9yYW5nZVNlbGVjdG9yTGFiZWxzKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGxhYmVsIG9mIHNlbGYuX3JhbmdlU2VsZWN0b3JMYWJlbHMpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBjb250ZW50ID0gJyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93
LnJvb3RTZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdy5jb21taXRTZXQo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBlbGVtZW50KCdpbnB1
dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0eXBlOiAncmFkaW8nLCBuYW1l
OiBsYWJlbCwgb25jaGFuZ2U6IHNlbGYuX3JhbmdlU2VsZWN0b3JDbGlja2VkLmJpbmQoc2VsZiwg
bGFiZWwsIHJvdyl9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTY2LDcgKzY2LDcg
QEAgY2xhc3MgUmVzdWx0c1RhYmxlIGV4dGVuZHMgQ29tcG9uZW50QmFzZQogICAgICAgICAgICAg
ICAgICAgICBjZWxscy5wdXNoKGVsZW1lbnQoJ3RkJywge2NsYXNzOiAnd2hvbGUtcm93LWxhYmVs
JywgY29sc3BhbjogcmVwb3NpdG9yeUxpc3QubGVuZ3RoICsgMX0sIHJvdy5sYWJlbEZvcldob2xl
Um93KCkpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgY2Vs
bHMucHVzaChlbGVtZW50KCd0ZCcsIHJvdy5yZXN1bHRDb250ZW50KGJhckdyYXBoR3JvdXApKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goc2VsZi5fY3JlYXRlUmV2aXNpb25MaXN0
Q2VsbHMocmVwb3NpdG9yeUxpc3QsIHJldmlzaW9uU3VwcmVzc2lvbkNvdW50LCBncm91cCwgcm93
LnJvb3RTZXQoKSwgcm93SW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2VsbHMucHVzaChz
ZWxmLl9jcmVhdGVSZXZpc2lvbkxpc3RDZWxscyhyZXBvc2l0b3J5TGlzdCwgcmV2aXNpb25TdXBy
ZXNzaW9uQ291bnQsIGdyb3VwLCByb3cuY29tbWl0U2V0KCksIHJvd0luZGV4KSk7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQoJ3RyJywgW2NlbGxz
LCByb3cuYWRkaXRpb25hbENvbHVtbnMoKV0pOwpAQCAtOTIsMjMgKzkyLDIzIEBAIGNsYXNzIFJl
c3VsdHNUYWJsZSBleHRlbmRzIENvbXBvbmVudEJhc2UKICAgICAgICAgSW5zdHJ1bWVudGF0aW9u
LmVuZE1lYXN1cmluZ1RpbWUoJ1Jlc3VsdHNUYWJsZScsICdyZW5kZXInKTsKICAgICB9CiAKLSAg
ICBfY3JlYXRlUmV2aXNpb25MaXN0Q2VsbHMocmVwb3NpdG9yeUxpc3QsIHJldmlzaW9uU3VwcmVz
c2lvbkNvdW50LCB0ZXN0R3JvdXAsIHJvb3RTZXQsIHJvd0luZGV4KQorICAgIF9jcmVhdGVSZXZp
c2lvbkxpc3RDZWxscyhyZXBvc2l0b3J5TGlzdCwgcmV2aXNpb25TdXByZXNzaW9uQ291bnQsIHRl
c3RHcm91cCwgY29tbWl0U2V0LCByb3dJbmRleCkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50
ID0gQ29tcG9uZW50QmFzZS5jcmVhdGVFbGVtZW50OwogICAgICAgICB2YXIgbGluayA9IENvbXBv
bmVudEJhc2UuY3JlYXRlTGluazsKICAgICAgICAgdmFyIGNlbGxzID0gW107CiAgICAgICAgIGZv
ciAodmFyIHJlcG9zaXRvcnkgb2YgcmVwb3NpdG9yeUxpc3QpIHsKLSAgICAgICAgICAgIHZhciBj
b21taXQgPSByb290U2V0ID8gcm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkp
IDogbnVsbDsKKyAgICAgICAgICAgIHZhciBjb21taXQgPSBjb21taXRTZXQgPyBjb21taXRTZXQu
Y29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSA6IG51bGw7CiAKICAgICAgICAgICAgIGlm
IChyZXZpc2lvblN1cHJlc3Npb25Db3VudFtyZXBvc2l0b3J5LmlkKCldKSB7CiAgICAgICAgICAg
ICAgICAgcmV2aXNpb25TdXByZXNzaW9uQ291bnRbcmVwb3NpdG9yeS5pZCgpXS0tOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgc3Vj
Y2VlZGluZ1Jvd0luZGV4ID0gcm93SW5kZXggKyAxOworICAgICAgICAgICAgbGV0IHN1Y2NlZWRp
bmdSb3dJbmRleCA9IHJvd0luZGV4ICsgMTsKICAgICAgICAgICAgIHdoaWxlIChzdWNjZWVkaW5n
Um93SW5kZXggPCB0ZXN0R3JvdXAucm93cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB2YXIg
c3VjY2VlZGluZ1Jvb3RTZXQgPSB0ZXN0R3JvdXAucm93c1tzdWNjZWVkaW5nUm93SW5kZXhdLnJv
b3RTZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZGluZ1Jvb3RTZXQgJiYgY29tbWl0
ICE9IHN1Y2NlZWRpbmdSb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSkpCisg
ICAgICAgICAgICAgICAgY29uc3Qgc3VjY2VlZGluZ0NvbW1pdFNldCA9IHRlc3RHcm91cC5yb3dz
W3N1Y2NlZWRpbmdSb3dJbmRleF0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKHN1
Y2NlZWRpbmdDb21taXRTZXQgJiYgY29tbWl0ICE9IHN1Y2NlZWRpbmdDb21taXRTZXQuY29tbWl0
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgc3VjY2VlZGluZ1Jvd0luZGV4Kys7CiAgICAgICAgICAgICB9CkBAIC0x
NDgsMjEgKzE0OCwyMSBAQCBjbGFzcyBSZXN1bHRzVGFibGUgZXh0ZW5kcyBDb21wb25lbnRCYXNl
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYS5oYXNVcmxGb3JSZXZpc2lvbigp
ID8gLTEgLyogYSA8IGIgKi8gOiAxOyAvLyBhID4gYgogICAgICAgICB9KTsKLSAgICAgICAgdmFy
IHJvb3RTZXRzID0gW107Ci0gICAgICAgIGZvciAodmFyIGdyb3VwIG9mIHJvd0dyb3Vwcykgewot
ICAgICAgICAgICAgZm9yICh2YXIgcm93IG9mIGdyb3VwLnJvd3MpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgcm9vdFNldCA9IHJvdy5yb290U2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJvb3RT
ZXQpCi0gICAgICAgICAgICAgICAgICAgIHJvb3RTZXRzLnB1c2gocm9vdFNldCk7CisgICAgICAg
IGNvbnN0IGNvbW1pdFNldHMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2Ygcm93R3Jv
dXBzKSB7CisgICAgICAgICAgICBmb3IgKGxldCByb3cgb2YgZ3JvdXAucm93cykgeworICAgICAg
ICAgICAgICAgIGNvbnN0IGNvbW1pdFNldCA9IHJvdy5jb21taXRTZXQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoY29tbWl0U2V0KQorICAgICAgICAgICAgICAgICAgICBjb21taXRTZXRzLnB1c2go
Y29tbWl0U2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIXJvb3RT
ZXRzLmxlbmd0aCkKKyAgICAgICAgaWYgKCFjb21taXRTZXRzLmxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiBbXTsKIAotICAgICAgICB2YXIgcmVwb3NpdG9yeVByZXNlbmNlTWFwID0ge307Ci0g
ICAgICAgIGZvciAodmFyIHJlcG9zaXRvcnkgb2YgYWxsUmVwb3NpdG9yaWVzKSB7Ci0gICAgICAg
ICAgICB2YXIgc29tZUNvbW1pdCA9IHJvb3RTZXRzWzBdLmNvbW1pdEZvclJlcG9zaXRvcnkocmVw
b3NpdG9yeSk7Ci0gICAgICAgICAgICBpZiAoUm9vdFNldC5jb250YWluc011bHRpcGxlQ29tbWl0
c0ZvclJlcG9zaXRvcnkocm9vdFNldHMsIHJlcG9zaXRvcnkpKQorICAgICAgICBjb25zdCByZXBv
c2l0b3J5UHJlc2VuY2VNYXAgPSB7fTsKKyAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiBh
bGxSZXBvc2l0b3JpZXMpIHsKKyAgICAgICAgICAgIGNvbnN0IHNvbWVDb21taXQgPSBjb21taXRT
ZXRzWzBdLmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CisgICAgICAgICAgICBpZiAo
Q29tbWl0U2V0LmNvbnRhaW5zTXVsdGlwbGVDb21taXRzRm9yUmVwb3NpdG9yeShjb21taXRTZXRz
LCByZXBvc2l0b3J5KSkKICAgICAgICAgICAgICAgICByZXBvc2l0b3J5UHJlc2VuY2VNYXBbcmVw
b3NpdG9yeS5pZCgpXSA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIGlmIChzb21lQ29tbWl0KQog
ICAgICAgICAgICAgICAgIGV4dHJhUmVwb3NpdG9yaWVzLnB1c2goc29tZUNvbW1pdCk7CkBAIC0y
NzEsMTkgKzI3MSwxOSBAQCBjbGFzcyBSZXN1bHRzVGFibGUgZXh0ZW5kcyBDb21wb25lbnRCYXNl
CiB9CiAKIGNsYXNzIFJlc3VsdHNUYWJsZVJvdyB7Ci0gICAgY29uc3RydWN0b3IoaGVhZGluZywg
cm9vdFNldCkKKyAgICBjb25zdHJ1Y3RvcihoZWFkaW5nLCBjb21taXRTZXQpCiAgICAgewogICAg
ICAgICB0aGlzLl9oZWFkaW5nID0gaGVhZGluZzsKICAgICAgICAgdGhpcy5fcmVzdWx0ID0gbnVs
bDsKICAgICAgICAgdGhpcy5fbGluayA9IG51bGw7CiAgICAgICAgIHRoaXMuX2xhYmVsID0gJy0n
OwotICAgICAgICB0aGlzLl9yb290U2V0ID0gcm9vdFNldDsKKyAgICAgICAgdGhpcy5fY29tbWl0
U2V0ID0gY29tbWl0U2V0OwogICAgICAgICB0aGlzLl9hZGRpdGlvbmFsQ29sdW1ucyA9IFtdOwog
ICAgICAgICB0aGlzLl9sYWJlbEZvcldob2xlUm93ID0gbnVsbDsKICAgICB9CiAKICAgICBoZWFk
aW5nKCkgeyByZXR1cm4gdGhpcy5faGVhZGluZzsgfQotICAgIHJvb3RTZXQoKSB7IHJldHVybiB0
aGlzLl9yb290U2V0OyB9CisgICAgY29tbWl0U2V0KCkgeyByZXR1cm4gdGhpcy5fY29tbWl0U2V0
OyB9CiAgICAgc2V0UmVzdWx0KHJlc3VsdCkgeyB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7IH0KICAg
ICBzZXRMaW5rKGxpbmssIGxhYmVsKQogICAgIHsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90ZXN0LWdyb3VwLXJlc3VsdHMtdGFibGUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRz
L3Rlc3QtZ3JvdXAtcmVzdWx0cy10YWJsZS5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3Rlc3QtZ3JvdXAtcmVzdWx0
cy10YWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjksMTkgKzI5LDE5IEBAIGNsYXNzIFRlc3RH
cm91cFJlc3VsdHNUYWJsZSBleHRlbmRzIFJlc3UKIAogICAgIGJ1aWxkUm93R3JvdXBzKCkKICAg
ICB7Ci0gICAgICAgIHZhciB0ZXN0R3JvdXAgPSB0aGlzLl90ZXN0R3JvdXA7CisgICAgICAgIGNv
bnN0IHRlc3RHcm91cCA9IHRoaXMuX3Rlc3RHcm91cDsKICAgICAgICAgaWYgKCF0ZXN0R3JvdXAp
CiAgICAgICAgICAgICByZXR1cm4gW107CiAKLSAgICAgICAgdmFyIHJvb3RTZXRzID0gdGhpcy5f
dGVzdEdyb3VwLnJlcXVlc3RlZFJvb3RTZXRzKCk7Ci0gICAgICAgIHZhciBncm91cHMgPSByb290
U2V0cy5tYXAoZnVuY3Rpb24gKHJvb3RTZXQpIHsKLSAgICAgICAgICAgIHZhciByb3dzID0gW25l
dyBSZXN1bHRzVGFibGVSb3coJ01lYW4nLCByb290U2V0KV07CisgICAgICAgIGNvbnN0IGNvbW1p
dFNldHMgPSB0aGlzLl90ZXN0R3JvdXAucmVxdWVzdGVkQ29tbWl0U2V0cygpOworICAgICAgICBj
b25zdCBncm91cHMgPSBjb21taXRTZXRzLm1hcChmdW5jdGlvbiAoY29tbWl0U2V0KSB7CisgICAg
ICAgICAgICBjb25zdCByb3dzID0gW25ldyBSZXN1bHRzVGFibGVSb3coJ01lYW4nLCBjb21taXRT
ZXQpXTsKICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW107CiAKLSAgICAgICAgICAgIGZvciAo
dmFyIHJlcXVlc3Qgb2YgdGVzdEdyb3VwLnJlcXVlc3RzRm9yUm9vdFNldChyb290U2V0KSkgewor
ICAgICAgICAgICAgZm9yICh2YXIgcmVxdWVzdCBvZiB0ZXN0R3JvdXAucmVxdWVzdHNGb3JDb21t
aXRTZXQoY29tbWl0U2V0KSkgewogICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSByZXF1ZXN0
LnJlc3VsdCgpOwotICAgICAgICAgICAgICAgIC8vIENhbGwgcmVzdWx0LnJvb3RTZXQoKSBmb3Ig
ZWFjaCByZXN1bHQgc2luY2UgdGhlIHNldCBvZiByZXZpc2lvbnMgdXNlZCBpbiB0ZXN0aW5nIG1h
eWJlIGRpZmZlcmVudCBmcm9tIHJlcXVlc3RlZCBvbmVzLgotICAgICAgICAgICAgICAgIHZhciBy
b3cgPSBuZXcgUmVzdWx0c1RhYmxlUm93KDEgKyArcmVxdWVzdC5vcmRlcigpLCByZXN1bHQgPyBy
ZXN1bHQucm9vdFNldCgpIDogbnVsbCk7CisgICAgICAgICAgICAgICAgLy8gQ2FsbCByZXN1bHQu
Y29tbWl0U2V0KCkgZm9yIGVhY2ggcmVzdWx0IHNpbmNlIHRoZSBzZXQgb2YgcmV2aXNpb25zIHVz
ZWQgaW4gdGVzdGluZyBtYXliZSBkaWZmZXJlbnQgZnJvbSByZXF1ZXN0ZWQgb25lcy4KKyAgICAg
ICAgICAgICAgICB2YXIgcm93ID0gbmV3IFJlc3VsdHNUYWJsZVJvdygxICsgK3JlcXVlc3Qub3Jk
ZXIoKSwgcmVzdWx0ID8gcmVzdWx0LmNvbW1pdFNldCgpIDogbnVsbCk7CiAgICAgICAgICAgICAg
ICAgcm93cy5wdXNoKHJvdyk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAg
ICAgICAgICAgICAgICByb3cuc2V0TGluayhyZXN1bHQuYnVpbGQoKS51cmwoKSwgcmVzdWx0LmJ1
aWxkKCkubGFiZWwoKSk7CkBAIC01NSwxNiArNTUsMTYgQEAgY2xhc3MgVGVzdEdyb3VwUmVzdWx0
c1RhYmxlIGV4dGVuZHMgUmVzdQogICAgICAgICAgICAgaWYgKCFpc05hTihhZ2dyZWdhdGVkUmVz
dWx0LnZhbHVlKSkKICAgICAgICAgICAgICAgICByb3dzWzBdLnNldFJlc3VsdChhZ2dyZWdhdGVk
UmVzdWx0KTsKIAotICAgICAgICAgICAgcmV0dXJuIHtoZWFkaW5nOiB0ZXN0R3JvdXAubGFiZWxG
b3JSb290U2V0KHJvb3RTZXQpLCByb3dzOnJvd3N9OworICAgICAgICAgICAgcmV0dXJuIHtoZWFk
aW5nOiB0ZXN0R3JvdXAubGFiZWxGb3JDb21taXRTZXQoY29tbWl0U2V0KSwgcm93c307CiAgICAg
ICAgIH0pOwogCi0gICAgICAgIHZhciBjb21wYXJpc29uUm93cyA9IFtdOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJvb3RTZXRzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBqID0gaSArIDE7IGogPCByb290U2V0cy5sZW5ndGg7IGorKykgewotICAgICAgICAgICAg
ICAgIHZhciBzdGFydENvbmZpZyA9IHRlc3RHcm91cC5sYWJlbEZvclJvb3RTZXQocm9vdFNldHNb
aV0pOwotICAgICAgICAgICAgICAgIHZhciBlbmRDb25maWcgPSB0ZXN0R3JvdXAubGFiZWxGb3JS
b290U2V0KHJvb3RTZXRzW2pdKTsKKyAgICAgICAgY29uc3QgY29tcGFyaXNvblJvd3MgPSBbXTsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21taXRTZXRzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBjb21taXRTZXRzLmxlbmd0aDsgaisr
KSB7CisgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRDb25maWcgPSB0ZXN0R3JvdXAubGFiZWxG
b3JDb21taXRTZXQoY29tbWl0U2V0c1tpXSk7CisgICAgICAgICAgICAgICAgY29uc3QgZW5kQ29u
ZmlnID0gdGVzdEdyb3VwLmxhYmVsRm9yQ29tbWl0U2V0KGNvbW1pdFNldHNbal0pOwogCi0gICAg
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3Rlc3RHcm91cC5jb21wYXJlVGVzdFJlc3Vs
dHMocm9vdFNldHNbaV0sIHJvb3RTZXRzW2pdKTsKKyAgICAgICAgICAgICAgICBjb25zdCByZXN1
bHQgPSB0aGlzLl90ZXN0R3JvdXAuY29tcGFyZVRlc3RSZXN1bHRzKGNvbW1pdFNldHNbaV0sIGNv
bW1pdFNldHNbal0pOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuY2hhbmdlVHlwZSA9PSBu
dWxsKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApJbmRleDogV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvYnVpbGQtcmVxdWVzdC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9idWlsZC1yZXF1
ZXN0LmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy9idWlsZC1yZXF1ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsx
Nyw4IEBAIGNsYXNzIEJ1aWxkUmVxdWVzdCBleHRlbmRzIERhdGFNb2RlbE9iamUKICAgICAgICAg
Y29uc29sZS5hc3NlcnQob2JqZWN0LnRlc3QgaW5zdGFuY2VvZiBUZXN0KTsKICAgICAgICAgdGhp
cy5fdGVzdCA9IG9iamVjdC50ZXN0OwogICAgICAgICB0aGlzLl9vcmRlciA9IG9iamVjdC5vcmRl
cjsKLSAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0LnJvb3RTZXQgaW5zdGFuY2VvZiBSb290
U2V0KTsKLSAgICAgICAgdGhpcy5fcm9vdFNldCA9IG9iamVjdC5yb290U2V0OworICAgICAgICBj
b25zb2xlLmFzc2VydChvYmplY3QuY29tbWl0U2V0IGluc3RhbmNlb2YgQ29tbWl0U2V0KTsKKyAg
ICAgICAgdGhpcy5fY29tbWl0U2V0ID0gb2JqZWN0LmNvbW1pdFNldDsKICAgICAgICAgdGhpcy5f
c3RhdHVzID0gb2JqZWN0LnN0YXR1czsKICAgICAgICAgdGhpcy5fc3RhdHVzVXJsID0gb2JqZWN0
LnVybDsKICAgICAgICAgdGhpcy5fYnVpbGRJZCA9IG9iamVjdC5idWlsZDsKQEAgLTMwLDcgKzMw
LDcgQEAgY2xhc3MgQnVpbGRSZXF1ZXN0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGVzdEdyb3VwID09IG9iamVjdC50ZXN0R3JvdXAp
OwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9vcmRlciA9PSBvYmplY3Qub3JkZXIpOwot
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yb290U2V0ID09IG9iamVjdC5yb290U2V0KTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29tbWl0U2V0ID09IG9iamVjdC5jb21taXRT
ZXQpOwogICAgICAgICB0aGlzLl9zdGF0dXMgPSBvYmplY3Quc3RhdHVzOwogICAgICAgICB0aGlz
Ll9zdGF0dXNVcmwgPSBvYmplY3QudXJsOwogICAgICAgICB0aGlzLl9idWlsZElkID0gb2JqZWN0
LmJ1aWxkOwpAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBEYXRh
TW9kZWxPYmplCiAgICAgcGxhdGZvcm0oKSB7IHJldHVybiB0aGlzLl9wbGF0Zm9ybTsgfQogICAg
IHRlc3QoKSB7IHJldHVybiB0aGlzLl90ZXN0OyB9CiAgICAgb3JkZXIoKSB7IHJldHVybiArdGhp
cy5fb3JkZXI7IH0KLSAgICByb290U2V0KCkgeyByZXR1cm4gdGhpcy5fcm9vdFNldDsgfQorICAg
IGNvbW1pdFNldCgpIHsgcmV0dXJuIHRoaXMuX2NvbW1pdFNldDsgfQogCiAgICAgc3RhdHVzKCkg
eyByZXR1cm4gdGhpcy5fc3RhdHVzOyB9CiAgICAgaGFzRmluaXNoZWQoKSB7IHJldHVybiB0aGlz
Ll9zdGF0dXMgPT0gJ2ZhaWxlZCcgfHwgdGhpcy5fc3RhdHVzID09ICdjb21wbGV0ZWQnIHx8IHRo
aXMuX3N0YXR1cyA9PSAnY2FuY2VsZWQnOyB9CkBAIC0xMzksMTUgKzEzOSwxNSBAQCBjbGFzcyBC
dWlsZFJlcXVlc3QgZXh0ZW5kcyBEYXRhTW9kZWxPYmplCiAKICAgICBzdGF0aWMgY29uc3RydWN0
QnVpbGRSZXF1ZXN0c0Zyb21EYXRhKGRhdGEpCiAgICAgewotICAgICAgICB2YXIgcm9vdElkTWFw
ID0ge307Ci0gICAgICAgIGZvciAodmFyIHJvb3Qgb2YgZGF0YVsncm9vdHMnXSkgewotICAgICAg
ICAgICAgcm9vdElkTWFwW3Jvb3QuaWRdID0gcm9vdDsKLSAgICAgICAgICAgIHJvb3QucmVwb3Np
dG9yeSA9IFJlcG9zaXRvcnkuZmluZEJ5SWQocm9vdC5yZXBvc2l0b3J5KTsKKyAgICAgICAgY29u
c3QgY29tbWl0SWRNYXAgPSB7fTsKKyAgICAgICAgZm9yIChsZXQgY29tbWl0IG9mIGRhdGFbJ2Nv
bW1pdHMnXSkgeworICAgICAgICAgICAgY29tbWl0SWRNYXBbY29tbWl0LmlkXSA9IGNvbW1pdDsK
KyAgICAgICAgICAgIGNvbW1pdC5yZXBvc2l0b3J5ID0gUmVwb3NpdG9yeS5maW5kQnlJZChjb21t
aXQucmVwb3NpdG9yeSk7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgcm9vdFNldHMgPSBkYXRh
Wydyb290U2V0cyddLm1hcChmdW5jdGlvbiAocm93KSB7Ci0gICAgICAgICAgICByb3cucm9vdHMg
PSByb3cucm9vdHMubWFwKGZ1bmN0aW9uIChyb290SWQpIHsgcmV0dXJuIHJvb3RJZE1hcFtyb290
SWRdOyB9KTsKLSAgICAgICAgICAgIHJldHVybiBSb290U2V0LmVuc3VyZVNpbmdsZXRvbihyb3cu
aWQsIHJvdyk7CisgICAgICAgIGNvbnN0IGNvbW1pdFNldHMgPSBkYXRhWydjb21taXRTZXRzJ10u
bWFwKChyb3cpID0+IHsKKyAgICAgICAgICAgIHJvdy5jb21taXRzID0gcm93LmNvbW1pdHMubWFw
KChjb21taXRJZCkgPT4gY29tbWl0SWRNYXBbY29tbWl0SWRdKTsKKyAgICAgICAgICAgIHJldHVy
biBDb21taXRTZXQuZW5zdXJlU2luZ2xldG9uKHJvdy5pZCwgcm93KTsKICAgICAgICAgfSk7CiAK
ICAgICAgICAgcmV0dXJuIGRhdGFbJ2J1aWxkUmVxdWVzdHMnXS5tYXAoZnVuY3Rpb24gKHJhd0Rh
dGEpIHsKQEAgLTE1NSw3ICsxNTUsNyBAQCBjbGFzcyBCdWlsZFJlcXVlc3QgZXh0ZW5kcyBEYXRh
TW9kZWxPYmplCiAgICAgICAgICAgICByYXdEYXRhLnRlc3QgPSBUZXN0LmZpbmRCeUlkKHJhd0Rh
dGEudGVzdCk7CiAgICAgICAgICAgICByYXdEYXRhLnRlc3RHcm91cElkID0gcmF3RGF0YS50ZXN0
R3JvdXA7CiAgICAgICAgICAgICByYXdEYXRhLnRlc3RHcm91cCA9IFRlc3RHcm91cC5maW5kQnlJ
ZChyYXdEYXRhLnRlc3RHcm91cCk7Ci0gICAgICAgICAgICByYXdEYXRhLnJvb3RTZXQgPSBSb290
U2V0LmZpbmRCeUlkKHJhd0RhdGEucm9vdFNldCk7CisgICAgICAgICAgICByYXdEYXRhLmNvbW1p
dFNldCA9IENvbW1pdFNldC5maW5kQnlJZChyYXdEYXRhLmNvbW1pdFNldCk7CiAgICAgICAgICAg
ICByZXR1cm4gQnVpbGRSZXF1ZXN0LmVuc3VyZVNpbmdsZXRvbihyYXdEYXRhLmlkLCByYXdEYXRh
KTsKICAgICAgICAgfSk7CiAgICAgfQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9jb21taXQtc2V0LmpzCShyZXZpc2lvbiAyMTM4
NjkpCShmcm9tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Jvb3Qt
c2V0LmpzOjIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9k
ZWxzL2NvbW1pdC1zZXQuanMJKHdvcmtpbmcgY29weSkKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL2NvbW1pdC1zZXQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvY29tbWl0LXNldC5qcwkocmV2
aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2Rl
bHMvY29tbWl0LXNldC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICd1c2Ugc3Ry
aWN0JzsKIAotY2xhc3MgUm9vdFNldCBleHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CitjbGFzcyBD
b21taXRTZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewogCiAgICAgY29uc3RydWN0b3IoaWQs
IG9iamVjdCkKICAgICB7CkBAIC0xMiw4ICsxMiw4IEBAIGNsYXNzIFJvb3RTZXQgZXh0ZW5kcyBE
YXRhTW9kZWxPYmplY3QgewogICAgICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBmb3IgKHZhciByb3cgb2Ygb2JqZWN0LnJvb3RzKSB7Ci0gICAgICAgICAg
ICB2YXIgcmVwb3NpdG9yeUlkID0gcm93LnJlcG9zaXRvcnkuaWQoKTsKKyAgICAgICAgZm9yIChs
ZXQgcm93IG9mIG9iamVjdC5jb21taXRzKSB7CisgICAgICAgICAgICBjb25zdCByZXBvc2l0b3J5
SWQgPSByb3cucmVwb3NpdG9yeS5pZCgpOwogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRo
aXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdKTsKICAgICAgICAgICAgIHRo
aXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdID0gQ29tbWl0TG9nLmVuc3Vy
ZVNpbmdsZXRvbihyb3cuaWQsIHJvdyk7CiAgICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3JpZXMu
cHVzaChyb3cucmVwb3NpdG9yeSk7CkBAIC01MiwxNCArNTIsMTQgQEAgY2xhc3MgUm9vdFNldCBl
eHRlbmRzIERhdGFNb2RlbE9iamVjdCB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIHN0YXRpYyBjb250YWluc011bHRpcGxlQ29tbWl0c0ZvclJlcG9zaXRvcnkocm9vdFNldHMs
IHJlcG9zaXRvcnkpCisgICAgc3RhdGljIGNvbnRhaW5zTXVsdGlwbGVDb21taXRzRm9yUmVwb3Np
dG9yeShjb21taXRTZXRzLCByZXBvc2l0b3J5KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQocmVwb3NpdG9yeSBpbnN0YW5jZW9mIFJlcG9zaXRvcnkpOwotICAgICAgICBpZiAocm9vdFNl
dHMubGVuZ3RoIDwgMikKKyAgICAgICAgaWYgKGNvbW1pdFNldHMubGVuZ3RoIDwgMikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdmFyIGZpcnN0Q29tbWl0ID0gcm9vdFNldHNb
MF0uY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKLSAgICAgICAgZm9yICh2YXIgc2V0
IG9mIHJvb3RTZXRzKSB7Ci0gICAgICAgICAgICB2YXIgYW5vdGhlckNvbW1pdCA9IHNldC5jb21t
aXRGb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpOworICAgICAgICBjb25zdCBmaXJzdENvbW1pdCA9
IGNvbW1pdFNldHNbMF0uY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKKyAgICAgICAg
Zm9yIChsZXQgc2V0IG9mIGNvbW1pdFNldHMpIHsKKyAgICAgICAgICAgIGNvbnN0IGFub3RoZXJD
b21taXQgPSBzZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKICAgICAgICAgICAg
IGlmICghZmlyc3RDb21taXQgIT0gIWFub3RoZXJDb21taXQgfHwgKGZpcnN0Q29tbWl0ICYmIGZp
cnN0Q29tbWl0LnJldmlzaW9uKCkgIT0gYW5vdGhlckNvbW1pdC5yZXZpc2lvbigpKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjcsNyArNjcsNyBAQCBjbGFz
cyBSb290U2V0IGV4dGVuZHMgRGF0YU1vZGVsT2JqZWN0IHsKICAgICB9CiB9CiAKLWNsYXNzIE1l
YXN1cmVtZW50Um9vdFNldCBleHRlbmRzIFJvb3RTZXQgeworY2xhc3MgTWVhc3VyZW1lbnRDb21t
aXRTZXQgZXh0ZW5kcyBDb21taXRTZXQgewogCiAgICAgY29uc3RydWN0b3IoaWQsIHJldmlzaW9u
TGlzdCkKICAgICB7CkBAIC04NywyMSArODcsMjEgQEAgY2xhc3MgTWVhc3VyZW1lbnRSb290U2V0
IGV4dGVuZHMgUm9vdFNldAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gVXNlIFJvb3RTZXQn
cyBzdGF0aWMgbWFwcyBiZWNhdXNlIE1lYXN1cmVtZW50Um9vdFNldCBhbmQgUm9vdFNldCBhcmUg
bG9naWNhbGx5IG9mIHRoZSBzYW1lIHR5cGUuCisgICAgLy8gVXNlIENvbW1pdFNldCdzIHN0YXRp
YyBtYXBzIGJlY2F1c2UgTWVhc3VyZW1lbnRDb21taXRTZXQgYW5kIENvbW1pdFNldCBhcmUgbG9n
aWNhbGx5IG9mIHRoZSBzYW1lIHR5cGUuCiAgICAgLy8gRklYTUU6IElkYWVsbHksIERhdGFNb2Rl
bCBzaG91bGQgdGFrZSBjYXJlIG9mIHRoaXMgYnV0IHRyYXZlcnNpbmcgcHJvdG90eXBlIGNoYWlu
IGlzIGV4cGVuc2l2ZS4KLSAgICBuYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVybiBSb290U2V0
Lm5hbWVkU3RhdGljTWFwKG5hbWUpOyB9Ci0gICAgZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSkg
eyByZXR1cm4gUm9vdFNldC5lbnN1cmVOYW1lZFN0YXRpY01hcChuYW1lKTsgfQotICAgIHN0YXRp
YyBuYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVybiBSb290U2V0Lm5hbWVkU3RhdGljTWFwKG5h
bWUpOyB9Ci0gICAgc3RhdGljIGVuc3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpIHsgcmV0dXJuIFJv
b3RTZXQuZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KKyAgICBuYW1lZFN0YXRpY01hcChu
YW1lKSB7IHJldHVybiBDb21taXRTZXQubmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KKyAgICBlbnN1
cmVOYW1lZFN0YXRpY01hcChuYW1lKSB7IHJldHVybiBDb21taXRTZXQuZW5zdXJlTmFtZWRTdGF0
aWNNYXAobmFtZSk7IH0KKyAgICBzdGF0aWMgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4g
Q29tbWl0U2V0Lm5hbWVkU3RhdGljTWFwKG5hbWUpOyB9CisgICAgc3RhdGljIGVuc3VyZU5hbWVk
U3RhdGljTWFwKG5hbWUpIHsgcmV0dXJuIENvbW1pdFNldC5lbnN1cmVOYW1lZFN0YXRpY01hcChu
YW1lKTsgfQogCiAgICAgc3RhdGljIGVuc3VyZVNpbmdsZXRvbihtZWFzdXJlbWVudElkLCByZXZp
c2lvbkxpc3QpCiAgICAgewotICAgICAgICB2YXIgcm9vdFNldElkID0gbWVhc3VyZW1lbnRJZCAr
ICctcm9vdHNldCc7Ci0gICAgICAgIHJldHVybiBSb290U2V0LmZpbmRCeUlkKHJvb3RTZXRJZCkg
fHwgKG5ldyBNZWFzdXJlbWVudFJvb3RTZXQocm9vdFNldElkLCByZXZpc2lvbkxpc3QpKTsKKyAg
ICAgICAgY29uc3QgY29tbWl0U2V0SWQgPSBtZWFzdXJlbWVudElkICsgJy1jb21taXRzZXQnOwor
ICAgICAgICByZXR1cm4gQ29tbWl0U2V0LmZpbmRCeUlkKGNvbW1pdFNldElkKSB8fCAobmV3IE1l
YXN1cmVtZW50Q29tbWl0U2V0KGNvbW1pdFNldElkLCByZXZpc2lvbkxpc3QpKTsKICAgICB9CiB9
CiAKLWNsYXNzIEN1c3RvbVJvb3RTZXQgeworY2xhc3MgQ3VzdG9tQ29tbWl0U2V0IHsKIAogICAg
IGNvbnN0cnVjdG9yKCkKICAgICB7CkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3MgQ3VzdG9tUm9v
dFNldCB7CiB9CiAKIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKSB7Ci0gICAgbW9k
dWxlLmV4cG9ydHMuUm9vdFNldCA9IFJvb3RTZXQ7Ci0gICAgbW9kdWxlLmV4cG9ydHMuTWVhc3Vy
ZW1lbnRSb290U2V0ID0gTWVhc3VyZW1lbnRSb290U2V0OwotICAgIG1vZHVsZS5leHBvcnRzLkN1
c3RvbVJvb3RTZXQgPSBDdXN0b21Sb290U2V0OworICAgIG1vZHVsZS5leHBvcnRzLkNvbW1pdFNl
dCA9IENvbW1pdFNldDsKKyAgICBtb2R1bGUuZXhwb3J0cy5NZWFzdXJlbWVudENvbW1pdFNldCA9
IE1lYXN1cmVtZW50Q29tbWl0U2V0OworICAgIG1vZHVsZS5leHBvcnRzLkN1c3RvbUNvbW1pdFNl
dCA9IEN1c3RvbUNvbW1pdFNldDsKIH0KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LWFkYXB0b3IuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRv
ci5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9tb2RlbHMvbWVhc3VyZW1lbnQtYWRhcHRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksNyBAQCBjbGFzcyBNZWFzdXJlbWVudEFkYXB0b3IgewogICAgICAgICAgICAgYnVpbGRJ
ZDogYnVpbGRJZCwKICAgICAgICAgICAgIG1ldHJpY0lkOiBudWxsLAogICAgICAgICAgICAgY29u
ZmlnVHlwZTogbnVsbCwKLSAgICAgICAgICAgIHJvb3RTZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IE1lYXN1cmVtZW50Um9vdFNldC5lbnN1cmVTaW5nbGV0b24oaWQsIHJvd1tzZWxmLl9yZXZpc2lv
bnNJbmRleF0pOyB9LAorICAgICAgICAgICAgY29tbWl0U2V0OiBmdW5jdGlvbiAoKSB7IHJldHVy
biBNZWFzdXJlbWVudENvbW1pdFNldC5lbnN1cmVTaW5nbGV0b24oaWQsIHJvd1tzZWxmLl9yZXZp
c2lvbnNJbmRleF0pOyB9LAogICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICBpZiAoY2FjaGVkQnVpbGQgPT0gbnVsbCAmJiBidWlsZGVySWQpCiAgICAgICAg
ICAgICAgICAgICAgIGNhY2hlZEJ1aWxkID0gbmV3IEJ1aWxkKGJ1aWxkSWQsIEJ1aWxkZXIuZmlu
ZEJ5SWQoYnVpbGRlcklkKSwgcm93W3NlbGYuX2J1aWxkTnVtYmVySW5kZXhdLCByb3dbc2VsZi5f
YnVpbGRUaW1lSW5kZXhdKTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvbW9kZWxzL3Jvb3Qtc2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Jvb3Qtc2V0LmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9yb290LXNldC5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEyNiArMCwwIEBACi0ndXNlIHN0cmljdCc7Ci0KLWNsYXNzIFJvb3RT
ZXQgZXh0ZW5kcyBEYXRhTW9kZWxPYmplY3QgewotCi0gICAgY29uc3RydWN0b3IoaWQsIG9iamVj
dCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKGlkKTsKLSAgICAgICAgdGhpcy5fcmVwb3NpdG9yaWVz
ID0gW107Ci0gICAgICAgIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCA9IHt9OwotICAgICAg
ICB0aGlzLl9sYXRlc3RDb21taXRUaW1lID0gbnVsbDsKLQotICAgICAgICBpZiAoIW9iamVjdCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKHZhciByb3cgb2Ygb2JqZWN0LnJv
b3RzKSB7Ci0gICAgICAgICAgICB2YXIgcmVwb3NpdG9yeUlkID0gcm93LnJlcG9zaXRvcnkuaWQo
KTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRN
YXBbcmVwb3NpdG9yeUlkXSk7Ci0gICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRN
YXBbcmVwb3NpdG9yeUlkXSA9IENvbW1pdExvZy5lbnN1cmVTaW5nbGV0b24ocm93LmlkLCByb3cp
OwotICAgICAgICAgICAgdGhpcy5fcmVwb3NpdG9yaWVzLnB1c2gocm93LnJlcG9zaXRvcnkpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVwb3NpdG9yaWVzKCkgeyByZXR1cm4gdGhpcy5fcmVw
b3NpdG9yaWVzOyB9Ci0gICAgY29tbWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSB7IHJldHVy
biB0aGlzLl9yZXBvc2l0b3J5VG9Db21taXRNYXBbcmVwb3NpdG9yeS5pZCgpXTsgfQotCi0gICAg
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpCi0gICAgewotICAgICAgICB2YXIgY29t
bWl0ID0gdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3JlcG9zaXRvcnkuaWQoKV07Ci0gICAg
ICAgIHJldHVybiBjb21taXQgPyBjb21taXQucmV2aXNpb24oKSA6IG51bGw7Ci0gICAgfQotCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBhIERhdGUgb2JqZWN0LgotICAgIGxhdGVz
dENvbW1pdFRpbWUoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2xhdGVzdENvbW1pdFRpbWUg
PT0gbnVsbCkgewotICAgICAgICAgICAgdmFyIG1heFRpbWUgPSAwOwotICAgICAgICAgICAgZm9y
ICh2YXIgcmVwb3NpdG9yeUlkIGluIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCkKLSAgICAg
ICAgICAgICAgICBtYXhUaW1lID0gTWF0aC5tYXgobWF4VGltZSwgK3RoaXMuX3JlcG9zaXRvcnlU
b0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdLnRpbWUoKSk7Ci0gICAgICAgICAgICB0aGlzLl9sYXRl
c3RDb21taXRUaW1lID0gbWF4VGltZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdGhpcy5f
bGF0ZXN0Q29tbWl0VGltZTsKLSAgICB9Ci0KLSAgICBlcXVhbHMob3RoZXIpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5fcmVwb3NpdG9yaWVzLmxlbmd0aCAhPSBvdGhlci5fcmVwb3NpdG9yaWVz
Lmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgcmVw
b3NpdG9yeUlkIGluIHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcCkgewotICAgICAgICAgICAg
aWYgKHRoaXMuX3JlcG9zaXRvcnlUb0NvbW1pdE1hcFtyZXBvc2l0b3J5SWRdICE9IG90aGVyLl9y
ZXBvc2l0b3J5VG9Db21taXRNYXBbcmVwb3NpdG9yeUlkXSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
c3RhdGljIGNvbnRhaW5zTXVsdGlwbGVDb21taXRzRm9yUmVwb3NpdG9yeShyb290U2V0cywgcmVw
b3NpdG9yeSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcG9zaXRvcnkgaW5zdGFu
Y2VvZiBSZXBvc2l0b3J5KTsKLSAgICAgICAgaWYgKHJvb3RTZXRzLmxlbmd0aCA8IDIpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZhciBmaXJzdENvbW1pdCA9IHJvb3RTZXRz
WzBdLmNvbW1pdEZvclJlcG9zaXRvcnkocmVwb3NpdG9yeSk7Ci0gICAgICAgIGZvciAodmFyIHNl
dCBvZiByb290U2V0cykgewotICAgICAgICAgICAgdmFyIGFub3RoZXJDb21taXQgPSBzZXQuY29t
bWl0Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KTsKLSAgICAgICAgICAgIGlmICghZmlyc3RDb21t
aXQgIT0gIWFub3RoZXJDb21taXQgfHwgKGZpcnN0Q29tbWl0ICYmIGZpcnN0Q29tbWl0LnJldmlz
aW9uKCkgIT0gYW5vdGhlckNvbW1pdC5yZXZpc2lvbigpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1j
bGFzcyBNZWFzdXJlbWVudFJvb3RTZXQgZXh0ZW5kcyBSb290U2V0IHsKLQotICAgIGNvbnN0cnVj
dG9yKGlkLCByZXZpc2lvbkxpc3QpCi0gICAgewotICAgICAgICBzdXBlcihpZCwgbnVsbCk7Ci0g
ICAgICAgIGZvciAodmFyIHZhbHVlcyBvZiByZXZpc2lvbkxpc3QpIHsKLSAgICAgICAgICAgIC8v
IFs8Y29tbWl0LWlkPiwgPHJlcG9zaXRvcnktaWQ+LCA8cmV2aXNpb24+LCA8dGltZT5dCi0gICAg
ICAgICAgICB2YXIgY29tbWl0SWQgPSB2YWx1ZXNbMF07Ci0gICAgICAgICAgICB2YXIgcmVwb3Np
dG9yeUlkID0gdmFsdWVzWzFdOwotICAgICAgICAgICAgdmFyIHJldmlzaW9uID0gdmFsdWVzWzJd
OwotICAgICAgICAgICAgdmFyIHRpbWUgPSB2YWx1ZXNbM107Ci0gICAgICAgICAgICB2YXIgcmVw
b3NpdG9yeSA9IFJlcG9zaXRvcnkuZmluZEJ5SWQocmVwb3NpdG9yeUlkKTsKLSAgICAgICAgICAg
IGlmICghcmVwb3NpdG9yeSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgdGhpcy5fcmVwb3NpdG9yeVRvQ29tbWl0TWFwW3JlcG9zaXRvcnlJZF0gPSBDb21taXRMb2cu
ZW5zdXJlU2luZ2xldG9uKGNvbW1pdElkLCB7cmVwb3NpdG9yeTogcmVwb3NpdG9yeSwgcmV2aXNp
b246IHJldmlzaW9uLCB0aW1lOiB0aW1lfSk7Ci0gICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3Jp
ZXMucHVzaChyZXBvc2l0b3J5KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFVzZSBSb290
U2V0J3Mgc3RhdGljIG1hcHMgYmVjYXVzZSBNZWFzdXJlbWVudFJvb3RTZXQgYW5kIFJvb3RTZXQg
YXJlIGxvZ2ljYWxseSBvZiB0aGUgc2FtZSB0eXBlLgotICAgIC8vIEZJWE1FOiBJZGFlbGx5LCBE
YXRhTW9kZWwgc2hvdWxkIHRha2UgY2FyZSBvZiB0aGlzIGJ1dCB0cmF2ZXJzaW5nIHByb3RvdHlw
ZSBjaGFpbiBpcyBleHBlbnNpdmUuCi0gICAgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4g
Um9vdFNldC5uYW1lZFN0YXRpY01hcChuYW1lKTsgfQotICAgIGVuc3VyZU5hbWVkU3RhdGljTWFw
KG5hbWUpIHsgcmV0dXJuIFJvb3RTZXQuZW5zdXJlTmFtZWRTdGF0aWNNYXAobmFtZSk7IH0KLSAg
ICBzdGF0aWMgbmFtZWRTdGF0aWNNYXAobmFtZSkgeyByZXR1cm4gUm9vdFNldC5uYW1lZFN0YXRp
Y01hcChuYW1lKTsgfQotICAgIHN0YXRpYyBlbnN1cmVOYW1lZFN0YXRpY01hcChuYW1lKSB7IHJl
dHVybiBSb290U2V0LmVuc3VyZU5hbWVkU3RhdGljTWFwKG5hbWUpOyB9Ci0KLSAgICBzdGF0aWMg
ZW5zdXJlU2luZ2xldG9uKG1lYXN1cmVtZW50SWQsIHJldmlzaW9uTGlzdCkKLSAgICB7Ci0gICAg
ICAgIHZhciByb290U2V0SWQgPSBtZWFzdXJlbWVudElkICsgJy1yb290c2V0JzsKLSAgICAgICAg
cmV0dXJuIFJvb3RTZXQuZmluZEJ5SWQocm9vdFNldElkKSB8fCAobmV3IE1lYXN1cmVtZW50Um9v
dFNldChyb290U2V0SWQsIHJldmlzaW9uTGlzdCkpOwotICAgIH0KLX0KLQotY2xhc3MgQ3VzdG9t
Um9vdFNldCB7Ci0KLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICB0aGlzLl9yZXZp
c2lvbkxpc3RCeVJlcG9zaXRvcnkgPSBuZXcgTWFwOwotICAgIH0KLQotICAgIHNldFJldmlzaW9u
Rm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5LCByZXZpc2lvbikKLSAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KTsKLSAgICAgICAgdGhp
cy5fcmV2aXNpb25MaXN0QnlSZXBvc2l0b3J5LnNldChyZXBvc2l0b3J5LCByZXZpc2lvbik7Ci0g
ICAgfQotCi0gICAgcmVwb3NpdG9yaWVzKCkgeyByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9yZXZp
c2lvbkxpc3RCeVJlcG9zaXRvcnkua2V5cygpKTsgfQotICAgIHJldmlzaW9uRm9yUmVwb3NpdG9y
eShyZXBvc2l0b3J5KSB7IHJldHVybiB0aGlzLl9yZXZpc2lvbkxpc3RCeVJlcG9zaXRvcnkuZ2V0
KHJlcG9zaXRvcnkpOyB9Ci0KLX0KLQotaWYgKHR5cGVvZiBtb2R1bGUgIT0gJ3VuZGVmaW5lZCcp
IHsKLSAgICBtb2R1bGUuZXhwb3J0cy5Sb290U2V0ID0gUm9vdFNldDsKLSAgICBtb2R1bGUuZXhw
b3J0cy5NZWFzdXJlbWVudFJvb3RTZXQgPSBNZWFzdXJlbWVudFJvb3RTZXQ7Ci0gICAgbW9kdWxl
LmV4cG9ydHMuQ3VzdG9tUm9vdFNldCA9IEN1c3RvbVJvb3RTZXQ7Ci19CkluZGV4OiBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3Jv
dXAuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJs
aWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMJKHdvcmtpbmcgY29weSkKQEAgLTEyLDkgKzEyLDkg
QEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgICAgIHRoaXMu
X2J1aWxkUmVxdWVzdHMgPSBbXTsKICAgICAgICAgdGhpcy5fcmVxdWVzdHNBcmVJbk9yZGVyID0g
ZmFsc2U7CiAgICAgICAgIHRoaXMuX3JlcG9zaXRvcmllcyA9IG51bGw7Ci0gICAgICAgIHRoaXMu
X3JlcXVlc3RlZFJvb3RTZXRzID0gbnVsbDsKLSAgICAgICAgdGhpcy5fcm9vdFNldFRvTGFiZWwg
PSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9hbGxSb290U2V0cyA9IG51bGw7CisgICAgICAgIHRo
aXMuX3JlcXVlc3RlZENvbW1pdFNldHMgPSBudWxsOworICAgICAgICB0aGlzLl9jb21taXRTZXRU
b0xhYmVsID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fYWxsQ29tbWl0U2V0cyA9IG51bGw7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFvYmplY3QucGxhdGZvcm0gfHwgb2JqZWN0LnBsYXRmb3Jt
IGluc3RhbmNlb2YgUGxhdGZvcm0pOwogICAgICAgICB0aGlzLl9wbGF0Zm9ybSA9IG9iamVjdC5w
bGF0Zm9ybTsKICAgICB9CkBAIC0zNyw1NCArMzcsNTQgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVu
ZHMgTGFiZWxlZE9iamVjdCB7CiAgICAgewogICAgICAgICB0aGlzLl9idWlsZFJlcXVlc3RzLnB1
c2gocmVxdWVzdCk7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RzQXJlSW5PcmRlciA9IGZhbHNlOwot
ICAgICAgICB0aGlzLl9yZXF1ZXN0ZWRSb290U2V0cyA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3Jv
b3RTZXRUb0xhYmVsLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX3JlcXVlc3RlZENvbW1pdFNldHMg
PSBudWxsOworICAgICAgICB0aGlzLl9jb21taXRTZXRUb0xhYmVsLmNsZWFyKCk7CiAgICAgfQog
CiAgICAgcmVwZXRpdGlvbkNvdW50KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYnVpbGRS
ZXF1ZXN0cy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgdmFyIHJvb3RT
ZXQgPSB0aGlzLl9idWlsZFJlcXVlc3RzWzBdLnJvb3RTZXQoKTsKKyAgICAgICAgdmFyIGNvbW1p
dFNldCA9IHRoaXMuX2J1aWxkUmVxdWVzdHNbMF0uY29tbWl0U2V0KCk7CiAgICAgICAgIHZhciBj
b3VudCA9IDA7CiAgICAgICAgIGZvciAodmFyIHJlcXVlc3Qgb2YgdGhpcy5fYnVpbGRSZXF1ZXN0
cykgewotICAgICAgICAgICAgaWYgKHJlcXVlc3Qucm9vdFNldCgpID09IHJvb3RTZXQpCisgICAg
ICAgICAgICBpZiAocmVxdWVzdC5jb21taXRTZXQoKSA9PSBjb21taXRTZXQpCiAgICAgICAgICAg
ICAgICAgY291bnQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgfQog
Ci0gICAgcmVxdWVzdGVkUm9vdFNldHMoKQorICAgIHJlcXVlc3RlZENvbW1pdFNldHMoKQogICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl9yZXF1ZXN0ZWRSb290U2V0cykgeworICAgICAgICBpZiAo
IXRoaXMuX3JlcXVlc3RlZENvbW1pdFNldHMpIHsKICAgICAgICAgICAgIHRoaXMuX29yZGVyQnVp
bGRSZXF1ZXN0cygpOwotICAgICAgICAgICAgdGhpcy5fcmVxdWVzdGVkUm9vdFNldHMgPSBbXTsK
KyAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RlZENvbW1pdFNldHMgPSBbXTsKICAgICAgICAgICAg
IGZvciAodmFyIHJlcXVlc3Qgb2YgdGhpcy5fYnVpbGRSZXF1ZXN0cykgewotICAgICAgICAgICAg
ICAgIHZhciBzZXQgPSByZXF1ZXN0LnJvb3RTZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRo
aXMuX3JlcXVlc3RlZFJvb3RTZXRzLmluY2x1ZGVzKHNldCkpCi0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzLnB1c2goc2V0KTsKKyAgICAgICAgICAgICAgICB2YXIg
c2V0ID0gcmVxdWVzdC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3Jl
cXVlc3RlZENvbW1pdFNldHMuaW5jbHVkZXMoc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fcmVxdWVzdGVkQ29tbWl0U2V0cy5wdXNoKHNldCk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0aGlzLl9yZXF1ZXN0ZWRSb290U2V0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVy
biBhLmxhdGVzdENvbW1pdFRpbWUoKSAtIGIubGF0ZXN0Q29tbWl0VGltZSgpOyB9KTsKKyAgICAg
ICAgICAgIHRoaXMuX3JlcXVlc3RlZENvbW1pdFNldHMuc29ydChmdW5jdGlvbiAoYSwgYikgeyBy
ZXR1cm4gYS5sYXRlc3RDb21taXRUaW1lKCkgLSBiLmxhdGVzdENvbW1pdFRpbWUoKTsgfSk7CiAg
ICAgICAgICAgICB2YXIgc2V0SW5kZXggPSAwOwotICAgICAgICAgICAgZm9yICh2YXIgc2V0IG9m
IHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcm9vdFNl
dFRvTGFiZWwuc2V0KHNldCwgU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSAr
IHNldEluZGV4KSk7CisgICAgICAgICAgICBmb3IgKHZhciBzZXQgb2YgdGhpcy5fcmVxdWVzdGVk
Q29tbWl0U2V0cykgeworICAgICAgICAgICAgICAgIHRoaXMuX2NvbW1pdFNldFRvTGFiZWwuc2V0
KHNldCwgU3RyaW5nLmZyb21DaGFyQ29kZSgnQScuY2hhckNvZGVBdCgwKSArIHNldEluZGV4KSk7
CiAgICAgICAgICAgICAgICAgc2V0SW5kZXgrKzsKICAgICAgICAgICAgIH0KIAogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0ZWRSb290U2V0czsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3JlcXVlc3RlZENvbW1pdFNldHM7CiAgICAgfQogCi0gICAgcmVxdWVzdHNGb3JSb290
U2V0KHJvb3RTZXQpCisgICAgcmVxdWVzdHNGb3JDb21taXRTZXQoY29tbWl0U2V0KQogICAgIHsK
ICAgICAgICAgdGhpcy5fb3JkZXJCdWlsZFJlcXVlc3RzKCk7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9idWlsZFJlcXVlc3RzLmZpbHRlcihmdW5jdGlvbiAocmVxdWVzdCkgeyByZXR1cm4gcmVxdWVz
dC5yb290U2V0KCkgPT0gcm9vdFNldDsgfSk7CisgICAgICAgIHJldHVybiB0aGlzLl9idWlsZFJl
cXVlc3RzLmZpbHRlcihmdW5jdGlvbiAocmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC5jb21taXRT
ZXQoKSA9PSBjb21taXRTZXQ7IH0pOwogICAgIH0KIAotICAgIGxhYmVsRm9yUm9vdFNldChyb290
U2V0KQorICAgIGxhYmVsRm9yQ29tbWl0U2V0KGNvbW1pdFNldCkKICAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX3JlcXVlc3RlZFJvb3RTZXRzKTsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3Jvb3RTZXRUb0xhYmVsLmdldChyb290U2V0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fcmVxdWVzdGVkQ29tbWl0U2V0cyk7CisgICAgICAgIHJldHVybiB0aGlzLl9jb21taXRT
ZXRUb0xhYmVsLmdldChjb21taXRTZXQpOwogICAgIH0KIAogICAgIF9vcmRlckJ1aWxkUmVxdWVz
dHMoKQpAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2Jq
ZWN0IHsKIAogICAgIGRpZFNldFJlc3VsdChyZXF1ZXN0KQogICAgIHsKLSAgICAgICAgdGhpcy5f
YWxsUm9vdFNldHMgPSBudWxsOworICAgICAgICB0aGlzLl9hbGxDb21taXRTZXRzID0gbnVsbDsK
ICAgICB9CiAKICAgICBoYXNGaW5pc2hlZCgpCkBAIC0xMTUsMTIgKzExNSwxMiBAQCBjbGFzcyBU
ZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2J1
aWxkUmVxdWVzdHMuc29tZShmdW5jdGlvbiAocmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC5pc1Bl
bmRpbmcoKTsgfSk7CiAgICAgfQogCi0gICAgY29tcGFyZVRlc3RSZXN1bHRzKHJvb3RTZXRBLCBy
b290U2V0QikKKyAgICBjb21wYXJlVGVzdFJlc3VsdHMoY29tbWl0U2V0QSwgY29tbWl0U2V0QikK
ICAgICB7Ci0gICAgICAgIHZhciBiZWZvcmVWYWx1ZXMgPSB0aGlzLl92YWx1ZXNGb3JSb290U2V0
KHJvb3RTZXRBKTsKLSAgICAgICAgdmFyIGFmdGVyVmFsdWVzID0gdGhpcy5fdmFsdWVzRm9yUm9v
dFNldChyb290U2V0Qik7Ci0gICAgICAgIHZhciBiZWZvcmVNZWFuID0gU3RhdGlzdGljcy5zdW0o
YmVmb3JlVmFsdWVzKSAvIGJlZm9yZVZhbHVlcy5sZW5ndGg7Ci0gICAgICAgIHZhciBhZnRlck1l
YW4gPSBTdGF0aXN0aWNzLnN1bShhZnRlclZhbHVlcykgLyBhZnRlclZhbHVlcy5sZW5ndGg7Cisg
ICAgICAgIGNvbnN0IGJlZm9yZVZhbHVlcyA9IHRoaXMuX3ZhbHVlc0ZvckNvbW1pdFNldChjb21t
aXRTZXRBKTsKKyAgICAgICAgY29uc3QgYWZ0ZXJWYWx1ZXMgPSB0aGlzLl92YWx1ZXNGb3JDb21t
aXRTZXQoY29tbWl0U2V0Qik7CisgICAgICAgIGNvbnN0IGJlZm9yZU1lYW4gPSBTdGF0aXN0aWNz
LnN1bShiZWZvcmVWYWx1ZXMpIC8gYmVmb3JlVmFsdWVzLmxlbmd0aDsKKyAgICAgICAgY29uc3Qg
YWZ0ZXJNZWFuID0gU3RhdGlzdGljcy5zdW0oYWZ0ZXJWYWx1ZXMpIC8gYWZ0ZXJWYWx1ZXMubGVu
Z3RoOwogCiAgICAgICAgIHZhciBtZXRyaWMgPSBBbmFseXNpc1Rhc2suZmluZEJ5SWQodGhpcy5f
dGFza0lkKS5tZXRyaWMoKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQobWV0cmljKTsKQEAgLTE2
MCwxMSArMTYwLDExIEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExhYmVsZWRPYmplY3Qgewog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIF92YWx1ZXNGb3JSb290U2V0KHJv
b3RTZXQpCisgICAgX3ZhbHVlc0ZvckNvbW1pdFNldChjb21taXRTZXQpCiAgICAgewotICAgICAg
ICB2YXIgcmVxdWVzdHMgPSB0aGlzLnJlcXVlc3RzRm9yUm9vdFNldChyb290U2V0KTsKLSAgICAg
ICAgdmFyIHZhbHVlcyA9IFtdOwotICAgICAgICBmb3IgKHZhciByZXF1ZXN0IG9mIHJlcXVlc3Rz
KSB7CisgICAgICAgIGNvbnN0IHJlcXVlc3RzID0gdGhpcy5yZXF1ZXN0c0ZvckNvbW1pdFNldChj
b21taXRTZXQpOworICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQg
cmVxdWVzdCBvZiByZXF1ZXN0cykgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QucmVzdWx0KCkp
CiAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2gocmVxdWVzdC5yZXN1bHQoKS52YWx1ZSk7CiAg
ICAgICAgIH0KQEAgLTE5NywxNiArMTk3LDE1IEBAIGNsYXNzIFRlc3RHcm91cCBleHRlbmRzIExh
YmVsZWRPYmplY3QgewogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgY3JlYXRlQW5k
UmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFtZSwgcmVwZXRpdGlvbkNvdW50LCByb290U2V0cykK
KyAgICBzdGF0aWMgY3JlYXRlQW5kUmVmZXRjaFRlc3RHcm91cHModGFzaywgbmFtZSwgcmVwZXRp
dGlvbkNvdW50LCBjb21taXRTZXRzKQogICAgIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwog
ICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3Jv
dXAnLCB7CiAgICAgICAgICAgICB0YXNrOiB0YXNrLmlkKCksCiAgICAgICAgICAgICBuYW1lOiBu
YW1lLAogICAgICAgICAgICAgcmVwZXRpdGlvbkNvdW50OiByZXBldGl0aW9uQ291bnQsCi0gICAg
ICAgICAgICByb290U2V0czogcm9vdFNldHMsCi0gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRh
dGEpIHsKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNhY2hlZEZldGNoKCcuLi9hcGkvdGVzdC1n
cm91cHMnLCB7dGFzazogdGFzay5pZCgpfSwgdHJ1ZSkudGhlbihzZWxmLl9jcmVhdGVNb2RlbHNG
cm9tRmV0Y2hlZFRlc3RHcm91cHMuYmluZChzZWxmKSk7CisgICAgICAgICAgICBjb21taXRTZXRz
OiBjb21taXRTZXRzLAorICAgICAgICB9KS50aGVuKChkYXRhKSA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jYWNoZWRGZXRjaCgnLi4vYXBpL3Rlc3QtZ3JvdXBzJywge3Rhc2s6IHRhc2su
aWQoKX0sIHRydWUpLnRoZW4oKGRhdGEpID0+IHRoaXMuX2NyZWF0ZU1vZGVsc0Zyb21GZXRjaGVk
VGVzdEdyb3VwcyhkYXRhKSk7CiAgICAgICAgIH0pOwogICAgIH0KIApJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFseXNpcy10YXNrLXBhZ2UuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9hbmFs
eXNpcy10YXNrLXBhZ2UuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvYW5hbHlzaXMtdGFzay1wYWdlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDksOCArMjQ5LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRlbmRzIFBh
Z2VXaXRoSAogCiAgICAgICAgIHZhciByZXBvc2l0b3J5TGlzdDsKICAgICAgICAgaWYgKHRoaXMu
X3N0YXJ0UG9pbnQpIHsKLSAgICAgICAgICAgIHZhciByb290U2V0ID0gdGhpcy5fc3RhcnRQb2lu
dC5yb290U2V0KCk7Ci0gICAgICAgICAgICByZXBvc2l0b3J5TGlzdCA9IFJlcG9zaXRvcnkuc29y
dEJ5TmFtZVByZWZlcnJpbmdPbmVzV2l0aFVSTChyb290U2V0LnJlcG9zaXRvcmllcygpKTsKKyAg
ICAgICAgICAgIHZhciBjb21taXRTZXQgPSB0aGlzLl9zdGFydFBvaW50LmNvbW1pdFNldCgpOwor
ICAgICAgICAgICAgcmVwb3NpdG9yeUxpc3QgPSBSZXBvc2l0b3J5LnNvcnRCeU5hbWVQcmVmZXJy
aW5nT25lc1dpdGhVUkwoY29tbWl0U2V0LnJlcG9zaXRvcmllcygpKTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICByZXBvc2l0b3J5TGlzdCA9IFJlcG9zaXRvcnkuc29ydEJ5TmFtZVByZWZl
cnJpbmdPbmVzV2l0aFVSTChSZXBvc2l0b3J5LmFsbCgpKTsKIApAQCAtMjg1LDcgKzI4NSw3IEBA
IGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEgKICAgICAgICAgdmFyIHNl
bGVjdGVkUmFuZ2UgPSB0aGlzLl9hbmFseXNpc1Jlc3VsdHNWaWV3ZXIuc2VsZWN0ZWRSYW5nZSgp
OwogICAgICAgICB2YXIgYSA9IHNlbGVjdGVkUmFuZ2VbJ0EnXTsKICAgICAgICAgdmFyIGIgPSBz
ZWxlY3RlZFJhbmdlWydCJ107Ci0gICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZvcm1Gb3JWaWV3
ZXIuc2V0Um9vdFNldE1hcChhICYmIGIgPyB7J0EnOiBhLnJvb3RTZXQoKSwgJ0InOiBiLnJvb3RT
ZXQoKX0gOiBudWxsKTsKKyAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvclZpZXdlci5z
ZXRDb21taXRTZXRNYXAoYSAmJiBiID8geydBJzogYS5jb21taXRTZXQoKSwgJ0InOiBiLmNvbW1p
dFNldCgpfSA6IG51bGwpOwogICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yVmlld2Vy
LmVucXVldWVUb1JlbmRlcigpOwogICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yVmll
d2VyLmVsZW1lbnQoKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fdHJpZ2dlcmFibGUgPyBudWxsIDog
J25vbmUnOwogCkBAIC0yOTYsOCArMjk2LDggQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBleHRl
bmRzIFBhZ2VXaXRoSAogICAgICAgICAgICAgdGhpcy5fY2hhcnRQYW5lLnNldE1haW5TZWxlY3Rp
b24oW3RoaXMuX3N0YXJ0UG9pbnQudGltZSwgdGhpcy5fZW5kUG9pbnQudGltZV0pOwogCiAgICAg
ICAgIHZhciBwb2ludHMgPSB0aGlzLl9jaGFydFBhbmUuc2VsZWN0ZWRQb2ludHMoKTsKLSAgICAg
ICAgdGhpcy5fbmV3VGVzdEdyb3VwRm9ybUZvckNoYXJ0LnNldFJvb3RTZXRNYXAocG9pbnRzICYm
IHBvaW50cy5sZW5ndGgoKSA+PSAyID8KLSAgICAgICAgICAgICAgICB7J0EnOiBwb2ludHMuZmly
c3RQb2ludCgpLnJvb3RTZXQoKSwgJ0InOiBwb2ludHMubGFzdFBvaW50KCkucm9vdFNldCgpfSA6
IG51bGwpOworICAgICAgICB0aGlzLl9uZXdUZXN0R3JvdXBGb3JtRm9yQ2hhcnQuc2V0Q29tbWl0
U2V0TWFwKHBvaW50cyAmJiBwb2ludHMubGVuZ3RoKCkgPj0gMiA/CisgICAgICAgICAgICAgICAg
eydBJzogcG9pbnRzLmZpcnN0UG9pbnQoKS5jb21taXRTZXQoKSwgJ0InOiBwb2ludHMubGFzdFBv
aW50KCkuY29tbWl0U2V0KCl9IDogbnVsbCk7CiAgICAgICAgIHRoaXMuX25ld1Rlc3RHcm91cEZv
cm1Gb3JDaGFydC5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAgICAgdGhpcy5fbmV3VGVzdEdyb3Vw
Rm9ybUZvckNoYXJ0LmVsZW1lbnQoKS5zdHlsZS5kaXNwbGF5ID0gdGhpcy5fdHJpZ2dlcmFibGUg
PyBudWxsIDogJ25vbmUnOwogCkBAIC0zNzcsOSArMzc3LDkgQEAgY2xhc3MgQW5hbHlzaXNUYXNr
UGFnZSBleHRlbmRzIFBhZ2VXaXRoSAogCiAgICAgICAgICAgICB0aGlzLl9jaGFydFBhbmUuc2V0
TWFpblNlbGVjdGlvbihudWxsKTsKICAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGVzdEdy
b3VwKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJvb3RTZXRzSW5UZXN0R3JvdXAgPSB0aGlzLl9j
dXJyZW50VGVzdEdyb3VwLnJlcXVlc3RlZFJvb3RTZXRzKCk7Ci0gICAgICAgICAgICAgICAgdmFy
IHN0YXJ0VGltZSA9IHJvb3RTZXRzSW5UZXN0R3JvdXBbMF0ubGF0ZXN0Q29tbWl0VGltZSgpOwot
ICAgICAgICAgICAgICAgIHZhciBlbmRUaW1lID0gcm9vdFNldHNJblRlc3RHcm91cFtyb290U2V0
c0luVGVzdEdyb3VwLmxlbmd0aCAtIDFdLmxhdGVzdENvbW1pdFRpbWUoKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBjb21taXRTZXRzSW5UZXN0R3JvdXAgPSB0aGlzLl9jdXJyZW50VGVzdEdyb3Vw
LnJlcXVlc3RlZENvbW1pdFNldHMoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBzdGFydFRpbWUg
PSBjb21taXRTZXRzSW5UZXN0R3JvdXBbMF0ubGF0ZXN0Q29tbWl0VGltZSgpOworICAgICAgICAg
ICAgICAgIGNvbnN0IGVuZFRpbWUgPSBjb21taXRTZXRzSW5UZXN0R3JvdXBbY29tbWl0U2V0c0lu
VGVzdEdyb3VwLmxlbmd0aCAtIDFdLmxhdGVzdENvbW1pdFRpbWUoKTsKICAgICAgICAgICAgICAg
ICBpZiAoc3RhcnRUaW1lICE9IGVuZFRpbWUpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2No
YXJ0UGFuZS5zZXRNYWluU2VsZWN0aW9uKFtzdGFydFRpbWUsIGVuZFRpbWVdKTsKICAgICAgICAg
ICAgIH0KQEAgLTUxMiwxNSArNTEyLDE1IEBAIGNsYXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5k
cyBQYWdlV2l0aEgKICAgICBfcmV0cnlDdXJyZW50VGVzdEdyb3VwKHJlcGV0aXRpb25Db3VudCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRUZXN0R3JvdXApOwot
ICAgICAgICB2YXIgdGVzdEdyb3VwID0gdGhpcy5fY3VycmVudFRlc3RHcm91cDsKLSAgICAgICAg
dmFyIG5ld05hbWUgPSB0aGlzLl9jcmVhdGVSZXRyeU5hbWVGb3JUZXN0R3JvdXAodGVzdEdyb3Vw
Lm5hbWUoKSk7Ci0gICAgICAgIHZhciByb290U2V0TGlzdCA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRS
b290U2V0cygpOwotCi0gICAgICAgIHZhciByb290U2V0TWFwID0ge307Ci0gICAgICAgIGZvciAo
dmFyIHJvb3RTZXQgb2Ygcm9vdFNldExpc3QpCi0gICAgICAgICAgICByb290U2V0TWFwW3Rlc3RH
cm91cC5sYWJlbEZvclJvb3RTZXQocm9vdFNldCldID0gcm9vdFNldDsKKyAgICAgICAgY29uc3Qg
dGVzdEdyb3VwID0gdGhpcy5fY3VycmVudFRlc3RHcm91cDsKKyAgICAgICAgY29uc3QgbmV3TmFt
ZSA9IHRoaXMuX2NyZWF0ZVJldHJ5TmFtZUZvclRlc3RHcm91cCh0ZXN0R3JvdXAubmFtZSgpKTsK
KyAgICAgICAgY29uc3QgY29tbWl0U2V0TGlzdCA9IHRlc3RHcm91cC5yZXF1ZXN0ZWRDb21taXRT
ZXRzKCk7CisKKyAgICAgICAgY29uc3QgY29tbWl0U2V0TWFwID0ge307CisgICAgICAgIGZvciAo
bGV0IGNvbW1pdFNldCBvZiBjb21taXRTZXRMaXN0KQorICAgICAgICAgICAgY29tbWl0U2V0TWFw
W3Rlc3RHcm91cC5sYWJlbEZvckNvbW1pdFNldChjb21taXRTZXQpXSA9IGNvbW1pdFNldDsKIAot
ICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdSb290U2V0
TGlzdChuZXdOYW1lLCByZXBldGl0aW9uQ291bnQsIHJvb3RTZXRNYXApOworICAgICAgICByZXR1
cm4gdGhpcy5fY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KG5ld05h
bWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwKTsKICAgICB9CiAKICAgICBfY2hhcnRT
ZWxlY3Rpb25EaWRDaGFuZ2UoKQpAQCAtNTI5LDkgKzUyOSw5IEBAIGNsYXNzIEFuYWx5c2lzVGFz
a1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEgKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsK
ICAgICB9CiAKLSAgICBfY3JlYXRlTmV3VGVzdEdyb3VwRnJvbUNoYXJ0KG5hbWUsIHJlcGV0aXRp
b25Db3VudCwgcm9vdFNldE1hcCkKKyAgICBfY3JlYXRlTmV3VGVzdEdyb3VwRnJvbUNoYXJ0KG5h
bWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2NyZWF0ZVRlc3RHcm91cEFmdGVyVmVyaWZ5aW5nUm9vdFNldExpc3QobmFtZSwgcmVw
ZXRpdGlvbkNvdW50LCByb290U2V0TWFwKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRl
c3RHcm91cEFmdGVyVmVyaWZ5aW5nQ29tbWl0U2V0TGlzdChuYW1lLCByZXBldGl0aW9uQ291bnQs
IGNvbW1pdFNldE1hcCk7CiAgICAgfQogCiAgICAgX3NlbGVjdGVkUm93SW5BbmFseXNpc1Jlc3Vs
dHNWaWV3ZXIoKQpAQCAtNTM5LDM5ICs1MzksMzkgQEAgY2xhc3MgQW5hbHlzaXNUYXNrUGFnZSBl
eHRlbmRzIFBhZ2VXaXRoSAogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0K
IAotICAgIF9jcmVhdGVOZXdUZXN0R3JvdXBGcm9tVmlld2VyKG5hbWUsIHJlcGV0aXRpb25Db3Vu
dCwgcm9vdFNldE1hcCkKKyAgICBfY3JlYXRlTmV3VGVzdEdyb3VwRnJvbVZpZXdlcihuYW1lLCBy
ZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldE1hcCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jvb3RTZXRMaXN0KG5hbWUsIHJlcGV0aXRp
b25Db3VudCwgcm9vdFNldE1hcCk7CisgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUZXN0R3Jv
dXBBZnRlclZlcmlmeWluZ0NvbW1pdFNldExpc3QobmFtZSwgcmVwZXRpdGlvbkNvdW50LCBjb21t
aXRTZXRNYXApOwogICAgIH0KIAotICAgIF9jcmVhdGVUZXN0R3JvdXBBZnRlclZlcmlmeWluZ1Jv
b3RTZXRMaXN0KHRlc3RHcm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldE1hcCkKKyAg
ICBfY3JlYXRlVGVzdEdyb3VwQWZ0ZXJWZXJpZnlpbmdDb21taXRTZXRMaXN0KHRlc3RHcm91cE5h
bWUsIHJlcGV0aXRpb25Db3VudCwgY29tbWl0U2V0TWFwKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX2hhc0R1cGxpY2F0ZVRlc3RHcm91cE5hbWUodGVzdEdyb3VwTmFtZSkpCiAgICAgICAgICAg
ICBhbGVydChgVGhlcmUgaXMgYWxyZWFkeSBhIHRlc3QgZ3JvdXAgbmFtZWQgIiR7dGVzdEdyb3Vw
TmFtZX0iYCk7CiAKLSAgICAgICAgdmFyIHJvb3RTZXRzQnlOYW1lID0ge307Ci0gICAgICAgIHZh
ciBmaXJzdExhYmVsOwotICAgICAgICBmb3IgKGZpcnN0TGFiZWwgaW4gcm9vdFNldE1hcCkgewot
ICAgICAgICAgICAgdmFyIHJvb3RTZXQgPSByb290U2V0TWFwW2ZpcnN0TGFiZWxdOwotICAgICAg
ICAgICAgZm9yICh2YXIgcmVwb3NpdG9yeSBvZiByb290U2V0LnJlcG9zaXRvcmllcygpKQotICAg
ICAgICAgICAgICAgIHJvb3RTZXRzQnlOYW1lW3JlcG9zaXRvcnkubmFtZSgpXSA9IFtdOworICAg
ICAgICBjb25zdCBjb21taXRTZXRzQnlOYW1lID0ge307CisgICAgICAgIGxldCBmaXJzdExhYmVs
OworICAgICAgICBmb3IgKGZpcnN0TGFiZWwgaW4gY29tbWl0U2V0TWFwKSB7CisgICAgICAgICAg
ICBjb25zdCBjb21taXRTZXQgPSBjb21taXRTZXRNYXBbZmlyc3RMYWJlbF07CisgICAgICAgICAg
ICBmb3IgKGxldCByZXBvc2l0b3J5IG9mIGNvbW1pdFNldC5yZXBvc2l0b3JpZXMoKSkKKyAgICAg
ICAgICAgICAgICBjb21taXRTZXRzQnlOYW1lW3JlcG9zaXRvcnkubmFtZSgpXSA9IFtdOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgc2V0SW5kZXggPSAwOwot
ICAgICAgICBmb3IgKHZhciBsYWJlbCBpbiByb290U2V0TWFwKSB7Ci0gICAgICAgICAgICB2YXIg
cm9vdFNldCA9IHJvb3RTZXRNYXBbbGFiZWxdOwotICAgICAgICAgICAgZm9yICh2YXIgcmVwb3Np
dG9yeSBvZiByb290U2V0LnJlcG9zaXRvcmllcygpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxp
c3QgPSByb290U2V0c0J5TmFtZVtyZXBvc2l0b3J5Lm5hbWUoKV07CisgICAgICAgIGxldCBzZXRJ
bmRleCA9IDA7CisgICAgICAgIGZvciAobGV0IGxhYmVsIGluIGNvbW1pdFNldE1hcCkgeworICAg
ICAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gY29tbWl0U2V0TWFwW2xhYmVsXTsKKyAgICAgICAg
ICAgIGZvciAobGV0IHJlcG9zaXRvcnkgb2YgY29tbWl0U2V0LnJlcG9zaXRvcmllcygpKSB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IGNvbW1pdFNldHNCeU5hbWVbcmVwb3NpdG9yeS5u
YW1lKCldOwogICAgICAgICAgICAgICAgIGlmICghbGlzdCkgewogICAgICAgICAgICAgICAgICAg
ICBhbGVydChgU2V0ICR7bGFiZWx9IHNwZWNpZmllcyAke3JlcG9zaXRvcnkubGFiZWwoKX0gYnV0
IHNldCAke2ZpcnN0TGFiZWx9IGRvZXMgbm90LmApOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbGlzdC5wdXNoKHJv
b3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkpKTsKKyAgICAgICAgICAgICAg
ICBsaXN0LnB1c2goY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5KSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXRJbmRleCsrOwotICAgICAgICAgICAgZm9y
ICh2YXIgbmFtZSBpbiByb290U2V0c0J5TmFtZSkgewotICAgICAgICAgICAgICAgIHZhciBsaXN0
ID0gcm9vdFNldHNCeU5hbWVbbmFtZV07CisgICAgICAgICAgICBmb3IgKGxldCBuYW1lIGluIGNv
bW1pdFNldHNCeU5hbWUpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gY29tbWl0U2V0
c0J5TmFtZVtuYW1lXTsKICAgICAgICAgICAgICAgICBpZiAobGlzdC5sZW5ndGggPCBzZXRJbmRl
eCkgewogICAgICAgICAgICAgICAgICAgICBhbGVydChgU2V0ICR7Zmlyc3RMYWJlbH0gc3BlY2lm
aWVzICR7bmFtZX0gYnV0IHNldCAke2xhYmVsfSBkb2VzIG5vdC5gKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CkBAIC01NzksNyArNTc5LDcgQEAgY2xhc3MgQW5hbHlzaXNUYXNr
UGFnZSBleHRlbmRzIFBhZ2VXaXRoSAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgVGVzdEdyb3VwLmNyZWF0ZUFuZFJlZmV0Y2hUZXN0R3JvdXBzKHRoaXMuX3Rhc2ssIHRlc3RH
cm91cE5hbWUsIHJlcGV0aXRpb25Db3VudCwgcm9vdFNldHNCeU5hbWUpCisgICAgICAgIFRlc3RH
cm91cC5jcmVhdGVBbmRSZWZldGNoVGVzdEdyb3Vwcyh0aGlzLl90YXNrLCB0ZXN0R3JvdXBOYW1l
LCByZXBldGl0aW9uQ291bnQsIGNvbW1pdFNldHNCeU5hbWUpCiAgICAgICAgICAgICAudGhlbih0
aGlzLl9kaWRGZXRjaFRlc3RHcm91cHMuYmluZCh0aGlzKSwgZnVuY3Rpb24gKGVycm9yKSB7CiAg
ICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyB0ZXN0IGdyb3VwOiAnICsg
ZXJyb3IpOwogICAgICAgICB9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2
ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvYXBpLWJ1aWxkLXJlcXVlc3RzLXRlc3Rz
LmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVy
LXRlc3RzL2FwaS1idWlsZC1yZXF1ZXN0cy10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjgs
NjUgKzI4LDY1IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3RzJywgZnVuY3Rpb24KICAg
ICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29udGVudCkgewogICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNvbnRlbnRbJ3N0YXR1cyddLCAnT0snKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1
YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddLCBbXSk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ10sIFtdKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoY29udGVudFsncm9vdHMnXSwgW10pOwotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChPYmplY3Qua2V5cyhjb250ZW50KS5zb3J0KCksIFsnYnVpbGRSZXF1ZXN0cycsICdyb290U2V0
cycsICdyb290cycsICdzdGF0dXMnXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNv
bnRlbnRbJ2NvbW1pdFNldHMnXSwgW10pOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChj
b250ZW50Wydjb21taXRzJ10sIFtdKTsKKyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoT2Jq
ZWN0LmtleXMoY29udGVudCkuc29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAnY29tbWl0U2V0cycs
ICdjb21taXRzJywgJ3N0YXR1cyddKTsKICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgfSku
Y2F0Y2goZG9uZSk7CiAgICAgfSk7CiAKLSAgICBpdCgnc2hvdWxkIHJldHVybiBidWlsZCByZXF1
ZXRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyaWdnZXJhYmxlIHdpdGggYXBwcm9wcmlhdGUg
cm9vdHMgYW5kIHJvb3RTZXRzJywgZnVuY3Rpb24gKGRvbmUpIHsKKyAgICBpdCgnc2hvdWxkIHJl
dHVybiBidWlsZCByZXF1ZXRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRyaWdnZXJhYmxlIHdp
dGggYXBwcm9wcmlhdGUgY29tbWl0cyBhbmQgY29tbWl0U2V0cycsIGZ1bmN0aW9uIChkb25lKSB7
CiAgICAgICAgIGxldCBkYiA9IFRlc3RTZXJ2ZXIuZGF0YWJhc2UoKTsKICAgICAgICAgZGIuY29u
bmVjdCgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgcmV0dXJuIE1vY2tEYXRhLmFk
ZE1vY2tEYXRhKGRiKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICByZXR1cm4gVGVzdFNlcnZlci5yZW1vdGVBUEkoKS5nZXRKU09OV2l0aFN0YXR1cygnL2FwaS9i
dWlsZC1yZXF1ZXN0cy9idWlsZC13ZWJraXQnKTsKICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
Y29udGVudCkgewotICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChPYmplY3Qua2V5cyhjb250
ZW50KS5zb3J0KCksIFsnYnVpbGRSZXF1ZXN0cycsICdyb290U2V0cycsICdyb290cycsICdzdGF0
dXMnXSk7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQp
LnNvcnQoKSwgWydidWlsZFJlcXVlc3RzJywgJ2NvbW1pdFNldHMnLCAnY29tbWl0cycsICdzdGF0
dXMnXSk7CiAKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290U2V0cyddLmxl
bmd0aCwgMik7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdFNldHMnXVsw
XS5pZCwgNDAxKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsncm9vdFNl
dHMnXVswXS5yb290cywgWyc4NzgzMicsICc5MzExNiddKTsKLSAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb250ZW50Wydyb290U2V0cyddWzFdLmlkLCA0MDIpOwotICAgICAgICAgICAgYXNzZXJ0
LmRlZXBFcXVhbChjb250ZW50Wydyb290U2V0cyddWzFdLnJvb3RzLCBbJzg3ODMyJywgJzk2MzM2
J10pOwotCi0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdHMnXS5sZW5ndGgs
IDMpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMF0uaWQsIDg3
ODMyKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cyddWzBdLnJlcG9z
aXRvcnksICc5Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdHMnXVsw
XS5yZXZpc2lvbiwgJzEwLjExIDE1QTI4NCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNv
bnRlbnRbJ3Jvb3RzJ11bMV0uaWQsIDkzMTE2KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChj
b250ZW50Wydyb290cyddWzFdLnJlcG9zaXRvcnksICcxMScpOwotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMV0ucmV2aXNpb24sICcxOTE2MjInKTsKLSAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cyddWzJdLmlkLCA5NjMzNik7Ci0gICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdHMnXVsyXS5yZXBvc2l0b3J5LCAnMTEnKTsK
LSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cyddWzJdLnJldmlzaW9uLCAn
MTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0cydd
Lmxlbmd0aCwgMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0U2V0
cyddWzBdLmlkLCA0MDEpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydj
b21taXRTZXRzJ11bMF0uY29tbWl0cywgWyc4NzgzMicsICc5MzExNiddKTsKKyAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0uaWQsIDQwMik7CisgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVsxXS5jb21taXRzLCBb
Jzg3ODMyJywgJzk2MzM2J10pOworCisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsn
Y29tbWl0cyddLmxlbmd0aCwgMyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsn
Y29tbWl0cyddWzBdLmlkLCA4NzgzMik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVu
dFsnY29tbWl0cyddWzBdLnJlcG9zaXRvcnksICc5Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29udGVudFsnY29tbWl0cyddWzBdLnJldmlzaW9uLCAnMTAuMTEgMTVBMjg0Jyk7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzFdLmlkLCA5MzExNik7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzFdLnJlcG9zaXRvcnks
ICcxMScpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5y
ZXZpc2lvbiwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2Nv
bW1pdHMnXVsyXS5pZCwgOTYzMzYpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRb
J2NvbW1pdHMnXVsyXS5yZXBvc2l0b3J5LCAnMTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChjb250ZW50Wydjb21taXRzJ11bMl0ucmV2aXNpb24sICcxOTI3MzYnKTsKIAogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGgsIDQpOwogICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0uaWQs
IDcwMCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVz
dHMnXVswXS5vcmRlciwgMCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVswXS5wbGF0Zm9ybSwgJzY1Jyk7Ci0gICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS5yb290U2V0LCA0MDEpOworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0uY29t
bWl0U2V0LCA0MDEpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWls
ZFJlcXVlc3RzJ11bMF0uc3RhdHVzLCAncGVuZGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0udGVzdCwgJzIwMCcpOwogCiAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5pZCwg
NzAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0
cyddWzFdLm9yZGVyLCAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsn
YnVpbGRSZXF1ZXN0cyddWzFdLnBsYXRmb3JtLCAnNjUnKTsKLSAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzFdLnJvb3RTZXQsIDQwMik7CisgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5jb21t
aXRTZXQsIDQwMik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxk
UmVxdWVzdHMnXVsxXS5zdGF0dXMsICdwZW5kaW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS50ZXN0LCAnMjAwJyk7CiAKICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLmlkLCA3
MDIpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3Rz
J11bMl0ub3JkZXIsIDIpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50Wydi
dWlsZFJlcXVlc3RzJ11bMl0ucGxhdGZvcm0sICc2NScpOwotICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0ucm9vdFNldCwgNDAxKTsKKyAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLmNvbW1p
dFNldCwgNDAxKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRS
ZXF1ZXN0cyddWzJdLnN0YXR1cywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzJdLnRlc3QsICcyMDAnKTsKIAogICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQsIDcw
Myk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMn
XVszXS5vcmRlciwgMyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1
aWxkUmVxdWVzdHMnXVszXS5wbGF0Zm9ybSwgJzY1Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5yb290U2V0LCA0MDIpOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uY29tbWl0
U2V0LCA0MDIpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJl
cXVlc3RzJ11bM10uc3RhdHVzLCAncGVuZGluZycpOwogICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10udGVzdCwgJzIwMCcpOwogICAgICAgICAg
ICAgZG9uZSgpOwpAQCAtMTAwLDUxICsxMDAsNTEgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVx
dWVzdHMnLCBmdW5jdGlvbgogICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIHJldHVybiBUZXN0U2VydmVyLnJlbW90ZUFQSSgpLmdldEpTT05XaXRoU3RhdHVzKCcvYXBp
L2J1aWxkLXJlcXVlc3RzL2J1aWxkLXdlYmtpdD91c2VMZWdhY3lJZFJlc29sdXRpb249dHJ1ZScp
OwogICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7Ci0gICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKE9iamVjdC5rZXlzKGNvbnRlbnQpLnNvcnQoKSwgWydidWlsZFJlcXVlc3Rz
JywgJ3Jvb3RTZXRzJywgJ3Jvb3RzJywgJ3N0YXR1cyddKTsKKyAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoT2JqZWN0LmtleXMoY29udGVudCkuc29ydCgpLCBbJ2J1aWxkUmVxdWVzdHMnLCAn
Y29tbWl0U2V0cycsICdjb21taXRzJywgJ3N0YXR1cyddKTsKIAotICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ10ubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb250ZW50Wydyb290U2V0cyddWzBdLmlkLCA0MDEpOwotICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChjb250ZW50Wydyb290U2V0cyddWzBdLnJvb3RzLCBbJzg3ODMyJywgJzkz
MTE2J10pOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRzJ11bMV0u
aWQsIDQwMik7Ci0gICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ3Jvb3RTZXRz
J11bMV0ucm9vdHMsIFsnODc4MzInLCAnOTYzMzYnXSk7Ci0KLSAgICAgICAgICAgIGFzc2VydC5l
cXVhbChjb250ZW50Wydyb290cyddLmxlbmd0aCwgMyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29udGVudFsncm9vdHMnXVswXS5pZCwgODc4MzIpOwotICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMF0ucmVwb3NpdG9yeSwgJ09TIFgnKTsKLSAgICAgICAgICAg
IGFzc2VydC5lcXVhbChjb250ZW50Wydyb290cyddWzBdLnJldmlzaW9uLCAnMTAuMTEgMTVBMjg0
Jyk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsncm9vdHMnXVsxXS5pZCwgOTMx
MTYpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3RzJ11bMV0ucmVwb3Np
dG9yeSwgJ1dlYktpdCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ3Jvb3Rz
J11bMV0ucmV2aXNpb24sICcxOTE2MjInKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250
ZW50Wydyb290cyddWzJdLmlkLCA5NjMzNik7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29u
dGVudFsncm9vdHMnXVsyXS5yZXBvc2l0b3J5LCAnV2ViS2l0Jyk7Ci0gICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoY29udGVudFsncm9vdHMnXVsyXS5yZXZpc2lvbiwgJzE5MjczNicpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXS5sZW5ndGgsIDIpOworICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdFNldHMnXVswXS5pZCwgNDAxKTsK
KyAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnY29tbWl0U2V0cyddWzBdLmNv
bW1pdHMsIFsnODc4MzInLCAnOTMxMTYnXSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29u
dGVudFsnY29tbWl0U2V0cyddWzFdLmlkLCA0MDIpOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChjb250ZW50Wydjb21taXRTZXRzJ11bMV0uY29tbWl0cywgWyc4NzgzMicsICc5NjMzNidd
KTsKKworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXS5sZW5ndGgs
IDMpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5pZCwg
ODc4MzIpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVswXS5y
ZXBvc2l0b3J5LCAnT1MgWCcpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbnRlbnRbJ2Nv
bW1pdHMnXVswXS5yZXZpc2lvbiwgJzEwLjExIDE1QTI4NCcpOworICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5pZCwgOTMxMTYpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbnRlbnRbJ2NvbW1pdHMnXVsxXS5yZXBvc2l0b3J5LCAnV2ViS2l0Jyk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzFdLnJldmlzaW9uLCAn
MTkxNjIyJyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cyddWzJd
LmlkLCA5NjMzNik7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29udGVudFsnY29tbWl0cydd
WzJdLnJlcG9zaXRvcnksICdXZWJLaXQnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb250
ZW50Wydjb21taXRzJ11bMl0ucmV2aXNpb24sICcxOTI3MzYnKTsKIAogICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXS5sZW5ndGgsIDQpOwogICAgICAgICAg
ICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bMF0uaWQsIDcwMCk7
CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsw
XS5vcmRlciwgMCk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxk
UmVxdWVzdHMnXVswXS5wbGF0Zm9ybSwgJ3NvbWUgcGxhdGZvcm0nKTsKLSAgICAgICAgICAgIGFz
c2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzBdLnJvb3RTZXQsIDQwMSk7
CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsw
XS5jb21taXRTZXQsIDQwMSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVswXS5zdGF0dXMsICdwZW5kaW5nJyk7CiAgICAgICAgICAgICBhc3Nl
cnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVswXS50ZXN0LCBbJ3NvbWUgdGVz
dCddKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVl
c3RzJ11bMV0uaWQsIDcwMSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVsxXS5vcmRlciwgMSk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5wbGF0Zm9ybSwgJ3NvbWUgcGxhdGZvcm0n
KTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cydd
WzFdLnJvb3RTZXQsIDQwMik7CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVsxXS5jb21taXRTZXQsIDQwMik7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsxXS5zdGF0dXMsICdwZW5kaW5nJyk7
CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsx
XS50ZXN0LCBbJ3NvbWUgdGVzdCddKTsKIAogICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChj
b250ZW50WydidWlsZFJlcXVlc3RzJ11bMl0uaWQsIDcwMik7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5vcmRlciwgMik7CiAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5wbGF0Zm9y
bSwgJ3NvbWUgcGxhdGZvcm0nKTsKLSAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoY29udGVu
dFsnYnVpbGRSZXF1ZXN0cyddWzJdLnJvb3RTZXQsIDQwMSk7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5jb21taXRTZXQsIDQwMSk7CiAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVsyXS5z
dGF0dXMsICdwZW5kaW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRb
J2J1aWxkUmVxdWVzdHMnXVsyXS50ZXN0LCBbJ3NvbWUgdGVzdCddKTsKIAogICAgICAgICAgICAg
YXNzZXJ0LmRlZXBFcXVhbChjb250ZW50WydidWlsZFJlcXVlc3RzJ11bM10uaWQsIDcwMyk7CiAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5v
cmRlciwgMyk7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVx
dWVzdHMnXVszXS5wbGF0Zm9ybSwgJ3NvbWUgcGxhdGZvcm0nKTsKLSAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoY29udGVudFsnYnVpbGRSZXF1ZXN0cyddWzNdLnJvb3RTZXQsIDQwMik7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS5j
b21taXRTZXQsIDQwMik7CiAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGNvbnRlbnRbJ2J1
aWxkUmVxdWVzdHMnXVszXS5zdGF0dXMsICdwZW5kaW5nJyk7CiAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGNvbnRlbnRbJ2J1aWxkUmVxdWVzdHMnXVszXS50ZXN0LCBbJ3NvbWUgdGVzdCdd
KTsKICAgICAgICAgICAgIGRvbmUoKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBkZXNjcmliZSgnL2Fw
aS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uCiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVp
bGRSZXF1ZXN0c1swXS50ZXN0KCksIHRlc3QpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1
aWxkUmVxdWVzdHNbMF0ucGxhdGZvcm0oKSwgcGxhdGZvcm0pOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMF0ub3JkZXIoKSwgMCk7Ci0gICAgICAgICAgICBhc3NlcnQu
b2soYnVpbGRSZXF1ZXN0c1swXS5yb290U2V0KCkgaW5zdGFuY2VvZiBSb290U2V0KTsKKyAgICAg
ICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzBdLmNvbW1pdFNldCgpIGluc3RhbmNlb2Yg
Q29tbWl0U2V0KTsKICAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1ZXN0c1swXS5oYXNG
aW5pc2hlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1ZXN0c1swXS5oYXNT
dGFydGVkKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbMF0uaXNQZW5k
aW5nKCkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIGRlc2NyaWJlKCcvYXBpL2J1aWxkLXJlcXVlc3Rz
JywgZnVuY3Rpb24KICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzFdLnRl
c3QoKSwgdGVzdCk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1sxXS5w
bGF0Zm9ybSgpLCBwbGF0Zm9ybSk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0c1sxXS5vcmRlcigpLCAxKTsKLSAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3Rz
WzFdLnJvb3RTZXQoKSBpbnN0YW5jZW9mIFJvb3RTZXQpOworICAgICAgICAgICAgYXNzZXJ0Lm9r
KGJ1aWxkUmVxdWVzdHNbMV0uY29tbWl0U2V0KCkgaW5zdGFuY2VvZiBDb21taXRTZXQpOwogICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzFdLmhhc0ZpbmlzaGVkKCkpOwogICAg
ICAgICAgICAgYXNzZXJ0Lm9rKCFidWlsZFJlcXVlc3RzWzFdLmhhc1N0YXJ0ZWQoKSk7CiAgICAg
ICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1sxXS5pc1BlbmRpbmcoKSk7CkBAIC0xOTUs
NyArMTk1LDcgQEAgZGVzY3JpYmUoJy9hcGkvYnVpbGQtcmVxdWVzdHMnLCBmdW5jdGlvbgogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbMl0udGVzdCgpLCB0ZXN0KTsKICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLnBsYXRmb3JtKCksIHBsYXRm
b3JtKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZFJlcXVlc3RzWzJdLm9yZGVyKCks
IDIpOwotICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNbMl0ucm9vdFNldCgpIGlu
c3RhbmNlb2YgUm9vdFNldCk7CisgICAgICAgICAgICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1sy
XS5jb21taXRTZXQoKSBpbnN0YW5jZW9mIENvbW1pdFNldCk7CiAgICAgICAgICAgICBhc3NlcnQu
b2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzRmluaXNoZWQoKSk7CiAgICAgICAgICAgICBhc3NlcnQu
b2soIWJ1aWxkUmVxdWVzdHNbMl0uaGFzU3RhcnRlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5v
ayhidWlsZFJlcXVlc3RzWzJdLmlzUGVuZGluZygpKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBkZXNj
cmliZSgnL2FwaS9idWlsZC1yZXF1ZXN0cycsIGZ1bmN0aW9uCiAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS50ZXN0KCksIHRlc3QpOwogICAgICAgICAgICAgYXNzZXJ0
LmVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ucGxhdGZvcm0oKSwgcGxhdGZvcm0pOwogICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNbM10ub3JkZXIoKSwgMyk7Ci0gICAgICAgICAg
ICBhc3NlcnQub2soYnVpbGRSZXF1ZXN0c1szXS5yb290U2V0KCkgaW5zdGFuY2VvZiBSb290U2V0
KTsKKyAgICAgICAgICAgIGFzc2VydC5vayhidWlsZFJlcXVlc3RzWzNdLmNvbW1pdFNldCgpIGlu
c3RhbmNlb2YgQ29tbWl0U2V0KTsKICAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1ZXN0
c1szXS5oYXNGaW5pc2hlZCgpKTsKICAgICAgICAgICAgIGFzc2VydC5vayghYnVpbGRSZXF1ZXN0
c1szXS5oYXNTdGFydGVkKCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGJ1aWxkUmVxdWVzdHNb
M10uaXNQZW5kaW5nKCkpOwpAQCAtMjE4LDI3ICsyMTgsMjcgQEAgZGVzY3JpYmUoJy9hcGkvYnVp
bGQtcmVxdWVzdHMnLCBmdW5jdGlvbgogICAgICAgICAgICAgbGV0IHdlYmtpdCA9IFJlcG9zaXRv
cnkuZmluZEJ5SWQoMTEpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHdlYmtpdC5uYW1lKCks
ICdXZWJLaXQnKTsKIAotICAgICAgICAgICAgbGV0IGZpcnN0Um9vdFNldCA9IGJ1aWxkUmVxdWVz
dHNbMF0ucm9vdFNldCgpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGJ1aWxkUmVxdWVzdHNb
Ml0ucm9vdFNldCgpLCBmaXJzdFJvb3RTZXQpOworICAgICAgICAgICAgbGV0IGZpcnN0Q29tbWl0
U2V0ID0gYnVpbGRSZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5l
cXVhbChidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLCBmaXJzdENvbW1pdFNldCk7CiAKLSAg
ICAgICAgICAgIGxldCBzZWNvbmRSb290U2V0ID0gYnVpbGRSZXF1ZXN0c1sxXS5yb290U2V0KCk7
Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1ZXN0c1szXS5yb290U2V0KCksIHNl
Y29uZFJvb3RTZXQpOworICAgICAgICAgICAgbGV0IHNlY29uZENvbW1pdFNldCA9IGJ1aWxkUmVx
dWVzdHNbMV0uY29tbWl0U2V0KCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoYnVpbGRSZXF1
ZXN0c1szXS5jb21taXRTZXQoKSwgc2Vjb25kQ29tbWl0U2V0KTsKIAotICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKGZpcnN0Um9vdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkob3N4KSwgJzEwLjEx
IDE1QTI4NCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZpcnN0Um9vdFNldC5yZXZpc2lv
bkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzE5MTYyMicpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGZpcnN0Q29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShvc3gpLCAnMTAuMTEgMTVB
Mjg0Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZmlyc3RDb21taXRTZXQucmV2aXNpb25G
b3JSZXBvc2l0b3J5KHdlYmtpdCksICcxOTE2MjInKTsKIAotICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHNlY29uZFJvb3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KG9zeCksICcxMC4xMSAxNUEy
ODQnKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRSb290U2V0LnJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
c2Vjb25kQ29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShvc3gpLCAnMTAuMTEgMTVBMjg0
Jyk7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoc2Vjb25kQ29tbWl0U2V0LnJldmlzaW9uRm9y
UmVwb3NpdG9yeSh3ZWJraXQpLCAnMTkyNzM2Jyk7CiAKLSAgICAgICAgICAgIGxldCBvc3hDb21t
aXQgPSBmaXJzdFJvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShvc3gpOworICAgICAgICAgICAg
bGV0IG9zeENvbW1pdCA9IGZpcnN0Q29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KTsK
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hDb21taXQucmV2aXNpb24oKSwgJzEwLjExIDE1
QTI4NCcpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdCwgc2Vjb25kUm9vdFNl
dC5jb21taXRGb3JSZXBvc2l0b3J5KG9zeCkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9z
eENvbW1pdCwgc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkob3N4KSk7CiAKLSAg
ICAgICAgICAgIGxldCBmaXJzdFdlYktpdENvbW1pdCA9IGZpcnN0Um9vdFNldC5jb21taXRGb3JS
ZXBvc2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBsZXQgZmlyc3RXZWJLaXRDb21taXQgPSBm
aXJzdENvbW1pdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CiAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoZmlyc3RXZWJLaXRDb21taXQucmV2aXNpb24oKSwgJzE5MTYyMicpOwogICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKCtmaXJzdFdlYktpdENvbW1pdC50aW1lKCksIDE0NDU5NDU4
MTY4NzgpOwogCi0gICAgICAgICAgICBsZXQgc2Vjb25kV2ViS2l0Q29tbWl0ID0gc2Vjb25kUm9v
dFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHdlYmtpdCk7CisgICAgICAgICAgICBsZXQgc2Vjb25k
V2ViS2l0Q29tbWl0ID0gc2Vjb25kQ29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0
KTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChzZWNvbmRXZWJLaXRDb21taXQucmV2aXNpb24o
KSwgJzE5MjczNicpOwogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKCtzZWNvbmRXZWJLaXRDb21t
aXQudGltZSgpLCAxNDQ4MjI1MzI1NjUwKTsKIApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3NlcnZlci10ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stZGF0YS5q
cwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10
ZXN0cy9yZXNvdXJjZXMvbW9jay1kYXRhLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3
IEBAIE1vY2tEYXRhID0gewogICAgICAgICBNZXRyaWMuY2xlYXJTdGF0aWNNYXAoKTsKICAgICAg
ICAgUGxhdGZvcm0uY2xlYXJTdGF0aWNNYXAoKTsKICAgICAgICAgUmVwb3NpdG9yeS5jbGVhclN0
YXRpY01hcCgpOwotICAgICAgICBSb290U2V0LmNsZWFyU3RhdGljTWFwKCk7CisgICAgICAgIENv
bW1pdFNldC5jbGVhclN0YXRpY01hcCgpOwogICAgICAgICBUZXN0LmNsZWFyU3RhdGljTWFwKCk7
CiAgICAgICAgIFRlc3RHcm91cC5jbGVhclN0YXRpY01hcCgpOwogICAgICAgICBUcmlnZ2VyYWJs
ZS5jbGVhclN0YXRpY01hcCgpOwpAQCAtMzUsMTggKzM1LDE4IEBAIE1vY2tEYXRhID0gewogICAg
ICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0cycsIHtpZDogTW9ja0RhdGEuc29tZVRlc3RJZCgpLCBu
YW1lOiAnc29tZSB0ZXN0J30pLAogICAgICAgICAgICAgZGIuaW5zZXJ0KCd0ZXN0X21ldHJpY3Mn
LCB7aWQ6IDMwMCwgdGVzdDogMjAwLCBuYW1lOiAnc29tZSBtZXRyaWMnfSksCiAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ3Rlc3RfY29uZmlndXJhdGlvbnMnLCB7aWQ6IDMwMSwgbWV0cmljOiAzMDAs
IHBsYXRmb3JtOiA2NSwgdHlwZTogJ2N1cnJlbnQnfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQo
J3Jvb3Rfc2V0cycsIHtpZDogNDAxfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3RzJywg
e3NldDogNDAxLCBjb21taXQ6IDg3ODMyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3Rz
Jywge3NldDogNDAxLCBjb21taXQ6IDkzMTE2fSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jv
b3Rfc2V0cycsIHtpZDogNDAyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3RzJywge3Nl
dDogNDAyLCBjb21taXQ6IDg3ODMyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQoJ3Jvb3RzJywg
e3NldDogNDAyLCBjb21taXQ6IDk2MzM2fSksCisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1p
dF9zZXRzJywge2lkOiA0MDF9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnY29tbWl0X3NldF9y
ZWxhdGlvbnNoaXBzJywge3NldDogNDAxLCBjb21taXQ6IDg3ODMyfSksCisgICAgICAgICAgICBk
Yi5pbnNlcnQoJ2NvbW1pdF9zZXRfcmVsYXRpb25zaGlwcycsIHtzZXQ6IDQwMSwgY29tbWl0OiA5
MzExNn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0cycsIHtpZDogNDAyfSks
CisgICAgICAgICAgICBkYi5pbnNlcnQoJ2NvbW1pdF9zZXRfcmVsYXRpb25zaGlwcycsIHtzZXQ6
IDQwMiwgY29tbWl0OiA4NzgzMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdjb21taXRfc2V0
X3JlbGF0aW9uc2hpcHMnLCB7c2V0OiA0MDIsIGNvbW1pdDogOTYzMzZ9KSwKICAgICAgICAgICAg
IGRiLmluc2VydCgnYW5hbHlzaXNfdGFza3MnLCB7aWQ6IDUwMCwgcGxhdGZvcm06IDY1LCBtZXRy
aWM6IDMwMCwgbmFtZTogJ3NvbWUgdGFzayd9KSwKICAgICAgICAgICAgIGRiLmluc2VydCgnYW5h
bHlzaXNfdGVzdF9ncm91cHMnLCB7aWQ6IDYwMCwgdGFzazogNTAwLCBuYW1lOiAnc29tZSB0ZXN0
IGdyb3VwJ30pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDog
NzAwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUs
IHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDAsIHJvb3Rfc2V0OiA0MDF9KSwKLSAgICAg
ICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMSwgc3RhdHVzOiBzdGF0
dXNMaXN0WzFdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3Vw
OiA2MDAsIG9yZGVyOiAxLCByb290X3NldDogNDAyfSksCi0gICAgICAgICAgICBkYi5pbnNlcnQo
J2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MDIsIHN0YXR1czogc3RhdHVzTGlzdFsyXSwgdHJpZ2dl
cmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAwLCBvcmRlcjogMiwg
cm9vdF9zZXQ6IDQwMX0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycs
IHtpZDogNzAzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9y
bTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMCwgb3JkZXI6IDMsIHJvb3Rfc2V0OiA0MDJ9KSwK
KyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMCwgc3RhdHVz
OiBzdGF0dXNMaXN0WzBdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAs
IGdyb3VwOiA2MDAsIG9yZGVyOiAwLCBjb21taXRfc2V0OiA0MDF9KSwKKyAgICAgICAgICAgIGRi
Lmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6IDcwMSwgc3RhdHVzOiBzdGF0dXNMaXN0WzFd
LCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9y
ZGVyOiAxLCBjb21taXRfc2V0OiA0MDJ9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRf
cmVxdWVzdHMnLCB7aWQ6IDcwMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZTog
MSwgcGxhdGZvcm06IDY1LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAyLCBjb21taXRf
c2V0OiA0MDF9KSwKKyAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6
IDcwMywgc3RhdHVzOiBzdGF0dXNMaXN0WzNdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1
LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDAsIG9yZGVyOiAzLCBjb21taXRfc2V0OiA0MDJ9KSwKICAg
ICAgICAgXSk7CiAgICAgfSwKICAgICBhZGRBbm90aGVyTW9ja1Rlc3RHcm91cDogZnVuY3Rpb24g
KGRiLCBzdGF0dXNMaXN0LCBhdXRob3IpCkBAIC01NSwxMCArNTUsMTAgQEAgTW9ja0RhdGEgPSB7
CiAgICAgICAgICAgICBzdGF0dXNMaXN0ID0gWydwZW5kaW5nJywgJ3BlbmRpbmcnLCAncGVuZGlu
ZycsICdwZW5kaW5nJ107CiAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCiAgICAgICAgICAg
ICBkYi5pbnNlcnQoJ2FuYWx5c2lzX3Rlc3RfZ3JvdXBzJywge2lkOiA2MDEsIHRhc2s6IDUwMCwg
bmFtZTogJ2Fub3RoZXIgdGVzdCBncm91cCcsIGF1dGhvcjogYXV0aG9yfSksCi0gICAgICAgICAg
ICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTMsIHN0YXR1czogc3RhdHVzTGlz
dFszXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91cDogNjAx
LCBvcmRlcjogMywgcm9vdF9zZXQ6IDQwMn0pLAotICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWls
ZF9yZXF1ZXN0cycsIHtpZDogNzEwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxl
OiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDAsIHJvb3Rf
c2V0OiA0MDF9KSwKLSAgICAgICAgICAgIGRiLmluc2VydCgnYnVpbGRfcmVxdWVzdHMnLCB7aWQ6
IDcxMiwgc3RhdHVzOiBzdGF0dXNMaXN0WzJdLCB0cmlnZ2VyYWJsZTogMSwgcGxhdGZvcm06IDY1
LCB0ZXN0OiAyMDAsIGdyb3VwOiA2MDEsIG9yZGVyOiAyLCByb290X3NldDogNDAxfSksCi0gICAg
ICAgICAgICBkYi5pbnNlcnQoJ2J1aWxkX3JlcXVlc3RzJywge2lkOiA3MTEsIHN0YXR1czogc3Rh
dHVzTGlzdFsxXSwgdHJpZ2dlcmFibGU6IDEsIHBsYXRmb3JtOiA2NSwgdGVzdDogMjAwLCBncm91
cDogNjAxLCBvcmRlcjogMSwgcm9vdF9zZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0
KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEzLCBzdGF0dXM6IHN0YXR1c0xpc3RbM10sIHRyaWdn
ZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDMs
IGNvbW1pdF9zZXQ6IDQwMn0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0
cycsIHtpZDogNzEwLCBzdGF0dXM6IHN0YXR1c0xpc3RbMF0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0
Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDAsIGNvbW1pdF9zZXQ6IDQw
MX0pLAorICAgICAgICAgICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzEyLCBz
dGF0dXM6IHN0YXR1c0xpc3RbMl0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6
IDIwMCwgZ3JvdXA6IDYwMSwgb3JkZXI6IDIsIGNvbW1pdF9zZXQ6IDQwMX0pLAorICAgICAgICAg
ICAgZGIuaW5zZXJ0KCdidWlsZF9yZXF1ZXN0cycsIHtpZDogNzExLCBzdGF0dXM6IHN0YXR1c0xp
c3RbMV0sIHRyaWdnZXJhYmxlOiAxLCBwbGF0Zm9ybTogNjUsIHRlc3Q6IDIwMCwgZ3JvdXA6IDYw
MSwgb3JkZXI6IDEsIGNvbW1pdF9zZXQ6IDQwMn0pLAogICAgICAgICBdKTsKICAgICB9LAogICAg
IG1vY2tUZXN0U3luY0NvbmZpZ1dpdGhTaW5nbGVCdWlsZGVyOiBmdW5jdGlvbiAoKQpJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2RldGVjdC1jaGFuZ2VzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9kZXRlY3QtY2hhbmdlcy5qcwko
cmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2RldGVj
dC1jaGFuZ2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsMTkgKzI1MiwxOSBAQCBmdW5jdGlv
biBjcmVhdGVBbmFseXNpc1Rhc2tBbmROb3RpZnkoY29uCiAgICAgICAgICAgICAgICAgdGhyb3cg
cmVzcG9uc2U7CiAKICAgICAgICAgICAgIHZhciB0cmlnZ2VyYWJsZSA9IHJlc3BvbnNlWyd0cmln
Z2VyYWJsZXMnXVswXTsKLSAgICAgICAgICAgIHZhciByb290U2V0cyA9IHt9OworICAgICAgICAg
ICAgdmFyIGNvbW1pdFNldHMgPSB7fTsKICAgICAgICAgICAgIGZvciAodmFyIHJlcG9zaXRvcnlJ
ZCBvZiB0cmlnZ2VyYWJsZVsnYWNjZXB0ZWRSZXBvc2l0b3JpZXMnXSkgewogICAgICAgICAgICAg
ICAgIHZhciBzdGFydFJldmlzaW9uID0gcmFuZ2Uuc3RhcnRNZWFzdXJlbWVudC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeUlkKTsKICAgICAgICAgICAgICAgICB2YXIgZW5kUmV2aXNp
b24gPSByYW5nZS5lbmRNZWFzdXJlbWVudC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9y
eUlkKTsKICAgICAgICAgICAgICAgICBpZiAoc3RhcnRSZXZpc2lvbiA9PSBudWxsIHx8IGVuZFJl
dmlzaW9uID09IG51bGwpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIHJvb3RTZXRzW2NvbmZpZy5yZXBvc2l0b3JpZXNbcmVwb3NpdG9yeUlkXS5uYW1lXSA9
IFtzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbl07CisgICAgICAgICAgICAgICAgY29tbWl0U2V0
c1tjb25maWcucmVwb3NpdG9yaWVzW3JlcG9zaXRvcnlJZF0ubmFtZV0gPSBbc3RhcnRSZXZpc2lv
biwgZW5kUmV2aXNpb25dOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB2YXIgdGVzdERh
dGEgPSB7CiAgICAgICAgICAgICAgICAgdGFzazogYW5hbHlzaXNUYXNrSWQsCiAgICAgICAgICAg
ICAgICAgbmFtZTogJ0NvbmZpcm1pbmcgdGhlICcgKyBjaGFuZ2VUeXBlLAotICAgICAgICAgICAg
ICAgIHJvb3RTZXRzOiByb290U2V0cywKKyAgICAgICAgICAgICAgICBjb21taXRTZXRzOiBjb21t
aXRTZXRzLAogICAgICAgICAgICAgICAgIHJlcGV0aXRpb25Db3VudDogTWF0aC5tYXgoMiwgTWF0
aC5taW4oOCwgTWF0aC5mbG9vcigocmFuZ2UuZW5kSW5kZXggLSByYW5nZS5zdGFydEluZGV4KSAv
IDQpKSksCiAKICAgICAgICAgICAgICAgICBzbGF2ZU5hbWU6IHNldHRpbmdzLnNsYXZlLm5hbWUs
CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1idWlsZGJvdC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1idWlsZGJv
dC5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L3N5bmMtYnVpbGRib3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rp
b24gc3luY0xvb3Aob3B0aW9ucykKICAgICBnbG9iYWwuTWV0cmljLmNsZWFyU3RhdGljTWFwKCk7
CiAgICAgZ2xvYmFsLlBsYXRmb3JtLmNsZWFyU3RhdGljTWFwKCk7CiAgICAgZ2xvYmFsLlJlcG9z
aXRvcnkuY2xlYXJTdGF0aWNNYXAoKTsKLSAgICBnbG9iYWwuUm9vdFNldC5jbGVhclN0YXRpY01h
cCgpOworICAgIGdsb2JhbC5Db21taXRTZXQuY2xlYXJTdGF0aWNNYXAoKTsKICAgICBnbG9iYWwu
VGVzdC5jbGVhclN0YXRpY01hcCgpOwogICAgIGdsb2JhbC5UZXN0R3JvdXAuY2xlYXJTdGF0aWNN
YXAoKTsKICAgICBnbG9iYWwuVHJpZ2dlcmFibGUuY2xlYXJTdGF0aWNNYXAoKTsKSW5kZXg6IFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLXdpdGgtYnVpbGRib3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtd2l0aC1idWlsZGJv
dC5weQkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L3N5bmMtd2l0aC1idWlsZGJvdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI0NCArMCwwIEBACi0j
IS91c3IvYmluL3B5dGhvbgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBiYXNlNjQKLWltcG9y
dCBjb3B5Ci1pbXBvcnQganNvbgotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB1cmxs
aWIKLWltcG9ydCB1cmxsaWIyCi0KLWZyb20gdXRpbCBpbXBvcnQgbG9hZF9zZXJ2ZXJfY29uZmln
Ci0KLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigp
Ci0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS10cmlnZ2VyYWJsZScsIHJlcXVpcmVkPVRydWUs
IGhlbHA9J1RoZSBuYW1lIG9mIHRoZSB0cmlnZ2VyYWJsZSB0byBwcm9jZXNzLiBlLmcuIGJ1aWxk
LXdlYmtpdCcpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1idWlsZGJvdC11cmwnLCByZXF1
aXJlZD1UcnVlLCBoZWxwPSdVUkwgZm9yIGEgYnVpbGRib3QgYnVpbGRlcjsgZS5nLiAiaHR0cHM6
Ly9idWlsZC53ZWJraXQub3JnLyInKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tYnVpbGRl
ci1jb25maWctanNvbicsIHJlcXVpcmVkPVRydWUsIGhlbHA9J1RoZSBwYXRoIHRvIGEgSlNPTiBm
aWxlIHRoYXQgc3BlY2lmaWVzIHdoaWNoIHRlc3QgYW5kIHBsYXRmb3JtIHdpbGwgYmUgcG9zdGVk
IHRvIHdoaWNoIGJ1aWxkZXIuICcKLSAgICAgICAgJ1RoZSBKU09OIHNob3VsZCBjb250YWluIGFu
IGFycmF5IG9mIGRpY3Rpb25hcmllcyB3aXRoIGtleXMgInBsYXRmb3JtIiwgInRlc3QiLCBhbmQg
ImJ1aWxkZXIiICcKLSAgICAgICAgJ3dpdGggdGhlIHBsYXRmb3JtIG5hbWUgKGUuZy4gbW91bnRh
aW5saW9uKSwgdGhlIHRlc3QgcGF0aCAoZS5nLiBbIlBhcnNlciIsICJodG1sNS1mdWxsLXJlbmRl
ciJdKSwgYW5kIHRoZSBidWlsZGVyIG5hbWUgKGUuZy4gQXBwbGUgTW91bnRhaW5MaW9uIFJlbGVh
c2UgKFBlcmYpKSBhcyB2YWx1ZXMuJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXNlcnZl
ci1jb25maWctanNvbicsIHJlcXVpcmVkPVRydWUsIGhlbHA9J1RoZSBwYXRoIHRvIGEgSlNPTiBm
aWxlIHRoYXQgc3BlY2lmaWVzIHRoZSBwZXJmIGRhc2hib2FyZC4nKQotCi0gICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLS1sb29rYmFjay1jb3VudCcsIHR5cGU9aW50LCBkZWZhdWx0PTEwLCBoZWxw
PSdUaGUgbnVtYmVyIG9mIGJ1aWxkcyB0byBsb29rIGJhY2sgd2hlbiBmaW5kaW5nIGluLXByb2dy
ZXNzIGJ1aWxkcyBvbiB0aGUgYnVpbGRib3QnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0t
c2Vjb25kcy10by1zbGVlcCcsIHR5cGU9ZmxvYXQsIGRlZmF1bHQ9MTIwLCBoZWxwPSdUaGUgc2Vj
b25kcyB0byBzbGVlcCBiZXR3ZWVuIGl0ZXJhdGlvbnMnKQotICAgIGFyZ3MgPSBwYXJzZXIucGFy
c2VfYXJncygpCi0KLSAgICBjb25maWd1cmF0aW9ucyA9IGxvYWRfY29uZmlnKGFyZ3MuYnVpbGRl
cl9jb25maWdfanNvbiwgYXJncy5idWlsZGJvdF91cmwuc3RyaXAoJy8nKSkKLQotICAgIHJlcXVl
c3RfdXBkYXRlcyA9IHt9Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgc2VydmVyX2NvbmZpZyA9
IGxvYWRfc2VydmVyX2NvbmZpZyhhcmdzLnNlcnZlcl9jb25maWdfanNvbikKLSAgICAgICAgcmVx
dWVzdF91cGRhdGVzLnVwZGF0ZShmaW5kX3JlcXVlc3RfdXBkYXRlcyhjb25maWd1cmF0aW9ucywg
YXJncy5sb29rYmFja19jb3VudCkpCi0gICAgICAgIGlmIHJlcXVlc3RfdXBkYXRlczoKLSAgICAg
ICAgICAgIHByaW50ICdVcGRhdGluZyB0aGUgYnVpbGQgcmVxdWVzdHMgJXMuLi4nICUgJywgJy5q
b2luKG1hcChzdHIsIHJlcXVlc3RfdXBkYXRlcy5rZXlzKCkpKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcHJpbnQgJ05vIHVwZGF0ZXMuLi4nCi0KLSAgICAgICAgcGF5bG9hZCA9IHsKLSAg
ICAgICAgICAgICdidWlsZFJlcXVlc3RVcGRhdGVzJzogcmVxdWVzdF91cGRhdGVzLAotICAgICAg
ICAgICAgJ3NsYXZlTmFtZSc6IHNlcnZlcl9jb25maWdbJ3NsYXZlJ11bJ25hbWUnXSwKLSAgICAg
ICAgICAgICdzbGF2ZVBhc3N3b3JkJzogc2VydmVyX2NvbmZpZ1snc2xhdmUnXVsncGFzc3dvcmQn
XX0KLQotICAgICAgICBidWlsZF9yZXF1ZXN0c191cmwgPSBzZXJ2ZXJfY29uZmlnWydzZXJ2ZXIn
XVsndXJsJ10gKyAnL2FwaS9idWlsZC1yZXF1ZXN0cy8nICsgYXJncy50cmlnZ2VyYWJsZSArICc/
dXNlTGVnYWN5SWRSZXNvbHV0aW9uPXRydWUnCi0gICAgICAgIHJlc3BvbnNlID0gdXBkYXRlX2Fu
ZF9mZXRjaF9idWlsZF9yZXF1ZXN0cyhidWlsZF9yZXF1ZXN0c191cmwsIHBheWxvYWQpCi0gICAg
ICAgIG9wZW5fcmVxdWVzdHMgPSByZXNwb25zZS5nZXQoJ2J1aWxkUmVxdWVzdHMnLCBbXSkKLQot
ICAgICAgICByb290X3NldHMgPSBvcmdhbml6ZV9yb290X3NldHNfYnlfaWRfYW5kX3JlcG9zaXRv
cnlfbmFtZXMocmVzcG9uc2UuZ2V0KCdyb290U2V0cycsIHt9KSwgcmVzcG9uc2UuZ2V0KCdyb290
cycsIFtdKSkKLQotICAgICAgICBmb3IgcmVxdWVzdCBpbiBmaWx0ZXIobGFtYmRhIHJlcXVlc3Q6
IHJlcXVlc3RbJ3N0YXR1cyddID09ICdwZW5kaW5nJywgb3Blbl9yZXF1ZXN0cyk6Ci0gICAgICAg
ICAgICBjb25maWcgPSBjb25maWdfZm9yX3JlcXVlc3QoY29uZmlndXJhdGlvbnMsIHJlcXVlc3Qp
Ci0gICAgICAgICAgICBpZiBub3QgY29uZmlnOgotICAgICAgICAgICAgICAgIHByaW50ID4+IHN5
cy5zdGRlcnIsICJGYWlsZWQgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBmb3IgcmVxdWVzdCAl
czogJXMiICUgKHN0cihyZXF1ZXN0WydpZCddKSwganNvbi5kdW1wcyhyZXF1ZXN0KSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgY29uZmlnIGFuZCBsZW4oY29uZmln
WydzY2hlZHVsZWRSZXF1ZXN0cyddKSA8IDE6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIlNjaGVk
dWxpbmcgdGhlIGJ1aWxkIHJlcXVlc3QgJXMuLi4iICUgc3RyKHJlcXVlc3RbJ2lkJ10pCi0gICAg
ICAgICAgICAgICAgc2NoZWR1bGVfcmVxdWVzdChjb25maWcsIHJlcXVlc3QsIHJvb3Rfc2V0cykK
LQotICAgICAgICByZXF1ZXN0X3VwZGF0ZXMgPSBmaW5kX3N0YWxlX3JlcXVlc3RfdXBkYXRlcyhj
b25maWd1cmF0aW9ucywgb3Blbl9yZXF1ZXN0cywgcmVxdWVzdF91cGRhdGVzLmtleXMoKSkKLSAg
ICAgICAgaWYgcmVxdWVzdF91cGRhdGVzOgotICAgICAgICAgICAgcHJpbnQgIkZvdW5kIHN0YWxl
IGJ1aWxkIHJlcXVlc3RzICVzLi4uIiAlICcsICcuam9pbihtYXAoc3RyLCByZXF1ZXN0X3VwZGF0
ZXMua2V5cygpKSkKLQotICAgICAgICB0aW1lLnNsZWVwKGFyZ3Muc2Vjb25kc190b19zbGVlcCkK
LQotCi1kZWYgbG9hZF9jb25maWcoY29uZmlnX2pzb25fcGF0aCwgYnVpbGRib3RfdXJsKToKLSAg
ICB3aXRoIG9wZW4oY29uZmlnX2pzb25fcGF0aCkgYXMgY29uZmlnX2pzb246Ci0gICAgICAgIG9w
dGlvbnMgPSBqc29uLmxvYWQoY29uZmlnX2pzb24pCi0KLSAgICBzaGFyZWRfY29uZmlnID0gb3B0
aW9uc1snc2hhcmVkJ10KLSAgICB0eXBlX2NvbmZpZyA9IG9wdGlvbnNbJ3R5cGVzJ10KLSAgICBi
dWlsZGVyX2NvbmZpZyA9IG9wdGlvbnNbJ2J1aWxkZXJzJ10KLQotICAgIGRlZiBtZXJnZShjb25m
aWcsIGNvbmZpZ190b19tZXJnZSk6Ci0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvbmZpZ190
b19tZXJnZS5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRp
Y3QpOgotICAgICAgICAgICAgICAgIGNvbmZpZy5zZXRkZWZhdWx0KGtleSwge30pCi0gICAgICAg
ICAgICAgICAgY29uZmlnW2tleV0udXBkYXRlKHZhbHVlKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBjb25maWdba2V5XSA9IHZhbHVlCi0KLSAgICBzY2hlZHVsZWRfcmVxdWVz
dHNfYnlfYnVpbGRlciA9IHt9Ci0KLSAgICBjb25maWd1cmF0aW9ucyA9IG9wdGlvbnNbJ2NvbmZp
Z3VyYXRpb25zJ10KLSAgICBmb3IgY29uZmlnIGluIGNvbmZpZ3VyYXRpb25zOgotCi0gICAgICAg
IG1lcmdlKGNvbmZpZywgc2hhcmVkX2NvbmZpZykKLSAgICAgICAgbWVyZ2UoY29uZmlnLCB0eXBl
X2NvbmZpZ1tjb25maWcucG9wKCd0eXBlJyldKQotICAgICAgICBtZXJnZShjb25maWcsIGJ1aWxk
ZXJfY29uZmlnW2NvbmZpZy5wb3AoJ2J1aWxkZXInKV0pCi0KLSAgICAgICAgZXNjYXBlZF9idWls
ZGVyX25hbWUgPSB1cmxsaWIucXVvdGUoY29uZmlnWydidWlsZGVyJ10pCi0gICAgICAgIGNvbmZp
Z1sndXJsJ10gPSAnJXMvYnVpbGRlcnMvJXMvJyAlIChidWlsZGJvdF91cmwsIGVzY2FwZWRfYnVp
bGRlcl9uYW1lKQotICAgICAgICBjb25maWdbJ2pzb25VUkwnXSA9ICclcy9qc29uL2J1aWxkZXJz
LyVzLycgJSAoYnVpbGRib3RfdXJsLCBlc2NhcGVkX2J1aWxkZXJfbmFtZSkKLQotICAgICAgICBz
Y2hlZHVsZWRfcmVxdWVzdHNfYnlfYnVpbGRlci5zZXRkZWZhdWx0KGNvbmZpZ1snYnVpbGRlcidd
LCBzZXQoKSkKLSAgICAgICAgY29uZmlnWydzY2hlZHVsZWRSZXF1ZXN0cyddID0gc2NoZWR1bGVk
X3JlcXVlc3RzX2J5X2J1aWxkZXJbY29uZmlnWydidWlsZGVyJ11dCi0KLSAgICByZXR1cm4gY29u
ZmlndXJhdGlvbnMKLQotCi1kZWYgZmluZF9yZXF1ZXN0X3VwZGF0ZXMoY29uZmlndXJhdGlvbnMs
IGxvb2tiYWNrX2NvdW50KToKLSAgICByZXF1ZXN0X3VwZGF0ZXMgPSB7fQotCi0gICAgZm9yIGNv
bmZpZyBpbiBjb25maWd1cmF0aW9uczoKLSAgICAgICAgY29uZmlnWydzY2hlZHVsZWRSZXF1ZXN0
cyddLmNsZWFyKCkKLQotICAgIGZvciBjb25maWcgaW4gY29uZmlndXJhdGlvbnM6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHBlbmRpbmdfYnVpbGRzID0gZmV0Y2hfanNvbihjb25maWdbJ2pz
b25VUkwnXSArICdwZW5kaW5nQnVpbGRzJykKLSAgICAgICAgICAgIHNjaGVkdWxlZF9yZXF1ZXN0
cyA9IGZpbHRlcihOb25lLCBbcmVxdWVzdF9pZF9mcm9tX2J1aWxkKGNvbmZpZywgYnVpbGQpIGZv
ciBidWlsZCBpbiBwZW5kaW5nX2J1aWxkc10pCi0gICAgICAgICAgICBmb3IgcmVxdWVzdF9pZCBp
biBzY2hlZHVsZWRfcmVxdWVzdHM6Ci0gICAgICAgICAgICAgICAgcmVxdWVzdF91cGRhdGVzW3Jl
cXVlc3RfaWRdID0geydzdGF0dXMnOiAnc2NoZWR1bGVkJywgJ3VybCc6IGNvbmZpZ1sndXJsJ119
Ci0gICAgICAgICAgICAgICAgY29uZmlnWydzY2hlZHVsZWRSZXF1ZXN0cyddLmFkZChyZXF1ZXN0
X2lkKQotICAgICAgICBleGNlcHQgKElPRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAg
ICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgIkZhaWxlZCB0byBmZXRjaCBwZW5kaW5nIGJ1
aWxkcyBmb3IgJXM6ICVzIiAlIChjb25maWdbJ2J1aWxkZXInXSwgc3RyKGVycm9yKSkKLQotICAg
IGZvciBjb25maWcgaW4gY29uZmlndXJhdGlvbnM6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKDEs
IGxvb2tiYWNrX2NvdW50ICsgMSk6Ci0gICAgICAgICAgICBidWlsZF9lcnJvciA9IE5vbmUKLSAg
ICAgICAgICAgIGJ1aWxkX2luZGV4ID0gLWkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICBidWlsZCA9IGZldGNoX2pzb24oY29uZmlnWydqc29uVVJMJ10gKyAnYnVpbGRzLyVkJyAl
IGJ1aWxkX2luZGV4KQotICAgICAgICAgICAgICAgIHJlcXVlc3RfaWQgPSByZXF1ZXN0X2lkX2Zy
b21fYnVpbGQoY29uZmlnLCBidWlsZCkKLSAgICAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdF9p
ZDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGluX3By
b2dyZXNzID0gYnVpbGQuZ2V0KCdjdXJyZW50U3RlcCcpCi0gICAgICAgICAgICAgICAgaWYgaW5f
cHJvZ3Jlc3M6Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfdXBkYXRlc1tyZXF1ZXN0X2lk
XSA9IHsnc3RhdHVzJzogJ3J1bm5pbmcnLCAndXJsJzogY29uZmlnWyd1cmwnXX0KLSAgICAgICAg
ICAgICAgICAgICAgY29uZmlnWydzY2hlZHVsZWRSZXF1ZXN0cyddLmRpc2NhcmQocmVxdWVzdF9p
ZCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB1cmwgPSBjb25m
aWdbJ3VybCddICsgJ2J1aWxkcy8nICsgc3RyKGJ1aWxkWydudW1iZXInXSkKLSAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdF91cGRhdGVzW3JlcXVlc3RfaWRdID0geydzdGF0dXMnOiAnZmFpbGVk
SWZOb3RDb21wbGV0ZWQnLCAndXJsJzogdXJsfQotICAgICAgICAgICAgZXhjZXB0IHVybGxpYjIu
SFRUUEVycm9yIGFzIGVycm9yOgotICAgICAgICAgICAgICAgIGlmIGVycm9yLmNvZGUgPT0gNDA0
OgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIGJ1aWxkX2Vycm9yID0gZXJyb3IKLSAgICAgICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yIGFzIGVycm9yOgotICAgICAgICAgICAgICAgIGJ1aWxkX2Vycm9yID0gZXJyb3IK
LSAgICAgICAgICAgIGlmIGJ1aWxkX2Vycm9yOgotICAgICAgICAgICAgICAgIHByaW50ID4+IHN5
cy5zdGRlcnIsICJGYWlsZWQgdG8gZmV0Y2ggYnVpbGQgJWQgZm9yICVzOiAlcyIgJSAoYnVpbGRf
aW5kZXgsIGNvbmZpZ1snYnVpbGRlciddLCBzdHIoYnVpbGRfZXJyb3IpKQotCi0gICAgcmV0dXJu
IHJlcXVlc3RfdXBkYXRlcwotCi0KLWRlZiB1cGRhdGVfYW5kX2ZldGNoX2J1aWxkX3JlcXVlc3Rz
KGJ1aWxkX3JlcXVlc3RzX3VybCwgcGF5bG9hZCk6Ci0gICAgdHJ5OgotICAgICAgICByZXNwb25z
ZSA9IGZldGNoX2pzb24oYnVpbGRfcmVxdWVzdHNfdXJsLCBwYXlsb2FkPWpzb24uZHVtcHMocGF5
bG9hZCkpCi0gICAgICAgIGlmIHJlc3BvbnNlWydzdGF0dXMnXSAhPSAnT0snOgotICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcihyZXNwb25zZVsnc3RhdHVzJ10pCi0gICAgICAgIHJldHVybiBy
ZXNwb25zZQotICAgIGV4Y2VwdCAoSU9FcnJvciwgVmFsdWVFcnJvcikgYXMgZXJyb3I6Ci0gICAg
ICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdGYWlsZWQgdG8gdXBkYXRlIG9yIGZldGNoIGJ1aWxk
IHJlcXVlc3RzIGF0ICVzOiAlcycgJSAoYnVpbGRfcmVxdWVzdHNfdXJsLCBzdHIoZXJyb3IpKQot
ICAgIHJldHVybiB7fQotCi0KLWRlZiBmaW5kX3N0YWxlX3JlcXVlc3RfdXBkYXRlcyhjb25maWd1
cmF0aW9ucywgb3Blbl9yZXF1ZXN0cywgcmVxdWVzdHNfb25fYnVpbGRib3QpOgotICAgIHJlcXVl
c3RfdXBkYXRlcyA9IHt9Ci0gICAgZm9yIHJlcXVlc3QgaW4gb3Blbl9yZXF1ZXN0czoKLSAgICAg
ICAgcmVxdWVzdF9pZCA9IGludChyZXF1ZXN0WydpZCddKQotICAgICAgICBzaG91bGRfYmVfb25f
YnVpbGRib3QgPSByZXF1ZXN0WydzdGF0dXMnXSBpbiAoJ3NjaGVkdWxlZCcsICdydW5uaW5nJykK
LSAgICAgICAgaWYgc2hvdWxkX2JlX29uX2J1aWxkYm90IGFuZCByZXF1ZXN0X2lkIG5vdCBpbiBy
ZXF1ZXN0c19vbl9idWlsZGJvdDoKLSAgICAgICAgICAgIGNvbmZpZyA9IGNvbmZpZ19mb3JfcmVx
dWVzdChjb25maWd1cmF0aW9ucywgcmVxdWVzdCkKLSAgICAgICAgICAgIGlmIGNvbmZpZzoKLSAg
ICAgICAgICAgICAgICByZXF1ZXN0X3VwZGF0ZXNbcmVxdWVzdF9pZF0gPSB7J3N0YXR1cyc6ICdm
YWlsZWQnLCAndXJsJzogY29uZmlnWyd1cmwnXX0KLSAgICByZXR1cm4gcmVxdWVzdF91cGRhdGVz
Ci0KLQotZGVmIG9yZ2FuaXplX3Jvb3Rfc2V0c19ieV9pZF9hbmRfcmVwb3NpdG9yeV9uYW1lcyhy
b290X3NldHMsIHJvb3RzKToKLSAgICByZXN1bHQgPSB7fQotICAgIHJvb3RfYnlfaWQgPSB7fQot
ICAgIGZvciByb290IGluIHJvb3RzOgotICAgICAgICByb290X2J5X2lkW3Jvb3RbJ2lkJ11dID0g
cm9vdAotCi0gICAgZm9yIHJvb3Rfc2V0IGluIHJvb3Rfc2V0czoKLSAgICAgICAgcm9vdHNfYnlf
cmVwb3NpdG9yeSA9IHt9Ci0gICAgICAgIGZvciByb290X2lkIGluIHJvb3Rfc2V0Wydyb290cydd
OgotICAgICAgICAgICAgcm9vdCA9IHJvb3RfYnlfaWRbcm9vdF9pZF0KLSAgICAgICAgICAgIHJv
b3RzX2J5X3JlcG9zaXRvcnlbcm9vdFsncmVwb3NpdG9yeSddXSA9IHJvb3QKLSAgICAgICAgcmVz
dWx0W3Jvb3Rfc2V0WydpZCddXSA9IHJvb3RzX2J5X3JlcG9zaXRvcnkKLQotICAgIHJldHVybiBy
ZXN1bHQKLQotCi1kZWYgc2NoZWR1bGVfcmVxdWVzdChjb25maWcsIHJlcXVlc3QsIHJvb3Rfc2V0
cyk6Ci0gICAgcm9vdHMgPSByb290X3NldHNbcmVxdWVzdFsncm9vdFNldCddXQotICAgIHBheWxv
YWQgPSB7fQotICAgIGZvciBwcm9wZXJ0eV9uYW1lLCBwcm9wZXJ0eV92YWx1ZSBpbiBjb25maWdb
J2FyZ3VtZW50cyddLml0ZXJpdGVtcygpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwcm9w
ZXJ0eV92YWx1ZSwgZGljdCk6Ci0gICAgICAgICAgICBwYXlsb2FkW3Byb3BlcnR5X25hbWVdID0g
cHJvcGVydHlfdmFsdWUKLSAgICAgICAgZWxpZiAncm9vdCcgaW4gcHJvcGVydHlfdmFsdWU6Ci0g
ICAgICAgICAgICByZXBvc2l0b3J5X25hbWUgPSBwcm9wZXJ0eV92YWx1ZVsncm9vdCddCi0gICAg
ICAgICAgICBpZiByZXBvc2l0b3J5X25hbWUgaW4gcm9vdHM6Ci0gICAgICAgICAgICAgICAgcGF5
bG9hZFtwcm9wZXJ0eV9uYW1lXSA9IHJvb3RzW3JlcG9zaXRvcnlfbmFtZV1bJ3JldmlzaW9uJ10K
LSAgICAgICAgZWxpZiAncm9vdHNFeGNsdWRpbmcnIGluIHByb3BlcnR5X3ZhbHVlOgotICAgICAg
ICAgICAgZXhjbHVkZWRfcm9vdHMgPSBwcm9wZXJ0eV92YWx1ZVsncm9vdHNFeGNsdWRpbmcnXQot
ICAgICAgICAgICAgZmlsdGVyZWRfcm9vdHMgPSB7fQotICAgICAgICAgICAgZm9yIHJvb3RfbmFt
ZSBpbiByb290czoKLSAgICAgICAgICAgICAgICBpZiByb290X25hbWUgbm90IGluIGV4Y2x1ZGVk
X3Jvb3RzOgotICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZF9yb290c1tyb290X25hbWVdID0g
cm9vdHNbcm9vdF9uYW1lXQotICAgICAgICAgICAgcGF5bG9hZFtwcm9wZXJ0eV9uYW1lXSA9IGpz
b24uZHVtcHMoZmlsdGVyZWRfcm9vdHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmlu
dCA+PiBzeXMuc3RkZXJyLCAiRmFpbGVkIHRvIHByb2Nlc3MgYW4gYXJndW1lbnQgJXM6ICVzIiAl
IChwcm9wZXJ0eV9uYW1lLCBwcm9wZXJ0eV92YWx1ZSkKLSAgICAgICAgICAgIHJldHVybgotICAg
IHBheWxvYWRbY29uZmlnWydidWlsZFJlcXVlc3RBcmd1bWVudCddXSA9IHJlcXVlc3RbJ2lkJ10K
LQotICAgIHRyeToKLSAgICAgICAgdXJsbGliMi51cmxvcGVuKHVybGxpYjIuUmVxdWVzdChjb25m
aWdbJ3VybCddICsgJ2ZvcmNlJyksIHVybGxpYi51cmxlbmNvZGUocGF5bG9hZCkpCi0gICAgICAg
IGNvbmZpZ1snc2NoZWR1bGVkUmVxdWVzdHMnXS5hZGQocmVxdWVzdFsnaWQnXSkKLSAgICBleGNl
cHQgKElPRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycm9yOgotICAgICAgICBwcmludCA+PiBzeXMu
c3RkZXJyLCAiRmFpbGVkIHRvIGZldGNoIHBlbmRpbmcgYnVpbGRzIGZvciAlczogJXMiICUgKGNv
bmZpZ1snYnVpbGRlciddLCBzdHIoZXJyb3IpKQotCi0KLWRlZiBjb25maWdfZm9yX3JlcXVlc3Qo
Y29uZmlndXJhdGlvbnMsIHJlcXVlc3QpOgotICAgIGZvciBjb25maWcgaW4gY29uZmlndXJhdGlv
bnM6Ci0gICAgICAgIGlmIGNvbmZpZ1sncGxhdGZvcm0nXSA9PSByZXF1ZXN0WydwbGF0Zm9ybSdd
IGFuZCBjb25maWdbJ3Rlc3QnXSA9PSByZXF1ZXN0Wyd0ZXN0J106Ci0gICAgICAgICAgICByZXR1
cm4gY29uZmlnCi0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgZmV0Y2hfanNvbih1cmwsIHBheWxv
YWQ9Tm9uZSk6Ci0gICAgcmVxdWVzdCA9IHVybGxpYjIuUmVxdWVzdCh1cmwpCi0gICAgcmVzcG9u
c2UgPSB1cmxsaWIyLnVybG9wZW4ocmVxdWVzdCwgcGF5bG9hZCkucmVhZCgpCi0gICAgdHJ5Ogot
ICAgICAgICByZXR1cm4ganNvbi5sb2FkcyhyZXNwb25zZSkKLSAgICBleGNlcHQgVmFsdWVFcnJv
ciBhcyBlcnJvcjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoZXJyb3IpICsgJ1xuJyAr
IHJlc3BvbnNlKQotCi0KLWRlZiBwcm9wZXJ0eV92YWx1ZV9mcm9tX2J1aWxkKGJ1aWxkLCBuYW1l
KToKLSAgICBmb3IgcHJvcCBpbiBidWlsZC5nZXQoJ3Byb3BlcnRpZXMnLCBbXSk6Ci0gICAgICAg
IGlmIHByb3BbMF0gPT0gbmFtZToKLSAgICAgICAgICAgIHJldHVybiBwcm9wWzFdCi0gICAgcmV0
dXJuIE5vbmUKLQotCi1kZWYgcmVxdWVzdF9pZF9mcm9tX2J1aWxkKGNvbmZpZywgYnVpbGQpOgot
ICAgIGpvYl9pZCA9IHByb3BlcnR5X3ZhbHVlX2Zyb21fYnVpbGQoYnVpbGQsIGNvbmZpZ1snYnVp
bGRSZXF1ZXN0QXJndW1lbnQnXSkKLSAgICByZXR1cm4gaW50KGpvYl9pZCkgaWYgam9iX2lkIGFu
ZCBqb2JfaWQuaXNkaWdpdCgpIGVsc2UgTm9uZQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5f
XyI6Ci0gICAgbWFpbigpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdG9vbHMvc3luYy13aXRoLWJ1aWxkYm90LnB5Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVpbGRib3Qtc3lu
Y2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9i
dWlsZGJvdC1zeW5jZXIuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy90b29scy9qcy9idWlsZGJvdC1zeW5jZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTIw
MCwxMSArMjAwLDExIEBAIGNsYXNzIEJ1aWxkYm90U3luY2VyIHsKICAgICB7CiAgICAgICAgIGFz
c2VydChidWlsZFJlcXVlc3QgaW5zdGFuY2VvZiBCdWlsZFJlcXVlc3QpOwogCi0gICAgICAgIGxl
dCByb290U2V0ID0gYnVpbGRSZXF1ZXN0LnJvb3RTZXQoKTsKLSAgICAgICAgYXNzZXJ0KHJvb3RT
ZXQgaW5zdGFuY2VvZiBSb290U2V0KTsKKyAgICAgICAgY29uc3QgY29tbWl0U2V0ID0gYnVpbGRS
ZXF1ZXN0LmNvbW1pdFNldCgpOworICAgICAgICBhc3NlcnQoY29tbWl0U2V0IGluc3RhbmNlb2Yg
Q29tbWl0U2V0KTsKIAotICAgICAgICBsZXQgcmVwb3NpdG9yeUJ5TmFtZSA9IHt9OwotICAgICAg
ICBmb3IgKGxldCByZXBvc2l0b3J5IG9mIHJvb3RTZXQucmVwb3NpdG9yaWVzKCkpCisgICAgICAg
IGNvbnN0IHJlcG9zaXRvcnlCeU5hbWUgPSB7fTsKKyAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9y
eSBvZiBjb21taXRTZXQucmVwb3NpdG9yaWVzKCkpCiAgICAgICAgICAgICByZXBvc2l0b3J5QnlO
YW1lW3JlcG9zaXRvcnkubmFtZSgpXSA9IHJlcG9zaXRvcnk7CiAKICAgICAgICAgbGV0IHByb3Bl
cnRpZXNUZW1wbGF0ZSA9IG51bGw7CkBAIC0yMjMsMTQgKzIyMywxNCBAQCBjbGFzcyBCdWlsZGJv
dFN5bmNlciB7CiAgICAgICAgICAgICAgICAgbGV0IHJlcG9zaXRvcnlOYW1lID0gdmFsdWVbJ3Jv
b3QnXTsKICAgICAgICAgICAgICAgICBsZXQgcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlCeU5hbWVb
cmVwb3NpdG9yeU5hbWVdOwogICAgICAgICAgICAgICAgIGFzc2VydChyZXBvc2l0b3J5LCBgIiR7
cmVwb3NpdG9yeU5hbWV9IiBtdXN0IGJlIHNwZWNpZmllZGApOwotICAgICAgICAgICAgICAgIHBy
b3BlcnRpZXNba2V5XSA9IHJvb3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHJlcG9zaXRvcnkp
OworICAgICAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGNvbW1pdFNldC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdyb290T3B0
aW9ucycgaW4gdmFsdWUpIHsKICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMg
PSB2YWx1ZVsncm9vdE9wdGlvbnMnXS5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uIGluIHJlcG9z
aXRvcnlCeU5hbWUpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaWx0ZXJlZE9wdGlv
bnMubGVuZ3RoLCAxLCBgVGhlcmUgc2hvdWxkIGJlIGV4YWN0bHkgb25lIHZhbGlkIHJvb3QgYW1v
bmcgIiR7dmFsdWVbJ3Jvb3RPcHRpb25zJ119Ii5gKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0
aWVzW2tleV0gPSByb290U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShyZXBvc2l0b3J5QnlOYW1l
W2ZpbHRlcmVkT3B0aW9uc1swXV0pOworICAgICAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9
IGNvbW1pdFNldC5yZXZpc2lvbkZvclJlcG9zaXRvcnkocmVwb3NpdG9yeUJ5TmFtZVtmaWx0ZXJl
ZE9wdGlvbnNbMF1dKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKCdyb290
c0V4Y2x1ZGluZycgaW4gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBsZXQgcmV2aXNpb25TZXQg
PSB0aGlzLl9yZXZpc2lvblNldEZyb21Sb290U2V0V2l0aEV4Y2x1c2lvbkxpc3Qocm9vdFNldCwg
dmFsdWVbJ3Jvb3RzRXhjbHVkaW5nJ10pOworICAgICAgICAgICAgICAgIGxldCByZXZpc2lvblNl
dCA9IHRoaXMuX3JldmlzaW9uU2V0RnJvbUNvbW1pdFNldFdpdGhFeGNsdXNpb25MaXN0KGNvbW1p
dFNldCwgdmFsdWVbJ3Jvb3RzRXhjbHVkaW5nJ10pOwogICAgICAgICAgICAgICAgIHByb3BlcnRp
ZXNba2V5XSA9IEpTT04uc3RyaW5naWZ5KHJldmlzaW9uU2V0KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMjQwLDEzICsyNDAsMTMgQEAgY2xhc3MgQnVpbGRib3RTeW5jZXIgewogICAg
ICAgICByZXR1cm4gcHJvcGVydGllczsKICAgICB9CiAKLSAgICBfcmV2aXNpb25TZXRGcm9tUm9v
dFNldFdpdGhFeGNsdXNpb25MaXN0KHJvb3RTZXQsIGV4Y2x1c2lvbkxpc3QpCisgICAgX3Jldmlz
aW9uU2V0RnJvbUNvbW1pdFNldFdpdGhFeGNsdXNpb25MaXN0KGNvbW1pdFNldCwgZXhjbHVzaW9u
TGlzdCkKICAgICB7Ci0gICAgICAgIGxldCByZXZpc2lvblNldCA9IHt9OwotICAgICAgICBmb3Ig
KGxldCByZXBvc2l0b3J5IG9mIHJvb3RTZXQucmVwb3NpdG9yaWVzKCkpIHsKKyAgICAgICAgY29u
c3QgcmV2aXNpb25TZXQgPSB7fTsKKyAgICAgICAgZm9yIChsZXQgcmVwb3NpdG9yeSBvZiBjb21t
aXRTZXQucmVwb3NpdG9yaWVzKCkpIHsKICAgICAgICAgICAgIGlmIChleGNsdXNpb25MaXN0Lmlu
ZGV4T2YocmVwb3NpdG9yeS5uYW1lKCkpID49IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBsZXQgY29tbWl0ID0gcm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KHJl
cG9zaXRvcnkpOworICAgICAgICAgICAgY29uc3QgY29tbWl0ID0gY29tbWl0U2V0LmNvbW1pdEZv
clJlcG9zaXRvcnkocmVwb3NpdG9yeSk7CiAgICAgICAgICAgICByZXZpc2lvblNldFtyZXBvc2l0
b3J5Lm5hbWUoKV0gPSB7CiAgICAgICAgICAgICAgICAgaWQ6IGNvbW1pdC5pZCgpLAogICAgICAg
ICAgICAgICAgIHRpbWU6ICtjb21taXQudGltZSgpLApJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9qcy9kYXRhYmFzZS5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2RhdGFiYXNlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDgsOCArMTQ4LDggQEAgY29uc3QgdGFibGVUb1ByZWZpeE1hcCA9IHsKICAgICAncGxh
dGZvcm1zJzogJ3BsYXRmb3JtJywKICAgICAncmVwb3J0cyc6ICdyZXBvcnQnLAogICAgICdyZXBv
c2l0b3JpZXMnOiAncmVwb3NpdG9yeScsCi0gICAgJ3Jvb3Rfc2V0cyc6ICdyb290c2V0JywKLSAg
ICAncm9vdHMnOiAncm9vdCcsCisgICAgJ2NvbW1pdF9zZXRzJzogJ2NvbW1pdHNldCcsCisgICAg
J2NvbW1pdF9zZXRfcmVsYXRpb25zaGlwcyc6ICdjb21taXRzZXQnLAogICAgICdydW5faXRlcmF0
aW9ucyc6ICdpdGVyYXRpb24nLAogfQogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dG9vbHMvanMvdjMtbW9kZWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9qcy92My1tb2RlbHMuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9qcy92My1tb2RlbHMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDggKzIyLDggQEAgaW1wb3J0RnJvbVYzKCdtb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzJwog
aW1wb3J0RnJvbVYzKCdtb2RlbHMvbWV0cmljLmpzJywgJ01ldHJpYycpOwogaW1wb3J0RnJvbVYz
KCdtb2RlbHMvcGxhdGZvcm0uanMnLCAnUGxhdGZvcm0nKTsKIGltcG9ydEZyb21WMygnbW9kZWxz
L3JlcG9zaXRvcnkuanMnLCAnUmVwb3NpdG9yeScpOwotaW1wb3J0RnJvbVYzKCdtb2RlbHMvcm9v
dC1zZXQuanMnLCAnTWVhc3VyZW1lbnRSb290U2V0Jyk7Ci1pbXBvcnRGcm9tVjMoJ21vZGVscy9y
b290LXNldC5qcycsICdSb290U2V0Jyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy9jb21taXQtc2V0
LmpzJywgJ01lYXN1cmVtZW50Q29tbWl0U2V0Jyk7CitpbXBvcnRGcm9tVjMoJ21vZGVscy9jb21t
aXQtc2V0LmpzJywgJ0NvbW1pdFNldCcpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMvdGVzdC5qcycs
ICdUZXN0Jyk7CiBpbXBvcnRGcm9tVjMoJ21vZGVscy90ZXN0LWdyb3VwLmpzJywgJ1Rlc3RHcm91
cCcpOwogaW1wb3J0RnJvbVYzKCdtb2RlbHMvdGltZS1zZXJpZXMuanMnLCAnVGltZVNlcmllcycp
OwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYW5hbHlzaXMtdGFz
ay10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10
ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9hbmFseXNpcy10YXNrLXRlc3RzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDcsNyArMjA3LDcgQEAgZGVzY3JpYmUoJ0FuYWx5c2lzVGFzaycsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIHZhciBhZGFwdG9yID0gbmV3IE1lYXN1cmVtZW50QWRh
cHRvcihtZWFzdXJlbWVudENsdXN0ZXIoKS5mb3JtYXRNYXApOwogICAgICAgICAgICAgdmFyIGFk
YXB0ZWRNZWFzdXJlbWVudCA9IGFkYXB0b3IuYXBwbHlUbyhtZWFzdXJlbWVudENsdXN0ZXIoKS5j
b25maWd1cmF0aW9ucy5jdXJyZW50WzBdKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChhZGFw
dGVkTWVhc3VyZW1lbnQuaWQsIDM3MTg4MTYxKTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChh
ZGFwdGVkTWVhc3VyZW1lbnQucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVs
cy53ZWJraXQpLnJldmlzaW9uKCksICcxOTYwNTEnKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVh
bChhZGFwdGVkTWVhc3VyZW1lbnQuY29tbWl0U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2Nr
TW9kZWxzLndlYmtpdCkucmV2aXNpb24oKSwgJzE5NjA1MScpOwogCiAgICAgICAgICAgICB2YXIg
cHJvbWlzZSA9IEFuYWx5c2lzVGFzay5mZXRjaEFsbCgpOwogICAgICAgICAgICAgcmVxdWVzdHNb
MF0ucmVzb2x2ZShzYW1wbGVBbmFseXNpc1Rhc2soKSk7CkluZGV4OiBXZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9idWlsZC1yZXF1ZXN0LXRlc3RzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkLXJlcXVlc3QtdGVzdHMu
anMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRl
c3RzL2J1aWxkLXJlcXVlc3QtdGVzdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE1LDIwICsxNSwy
MCBAQCBmdW5jdGlvbiBzYW1wbGVCdWlsZFJlcXVlc3REYXRhKCkKICAgICAgICAgICAgICJwbGF0
Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAg
ICAgIm9yZGVyIjogIjAiLAotICAgICAgICAgICAgInJvb3RTZXQiOiAiNDI1NSIsCisgICAgICAg
ICAgICAiY29tbWl0U2V0IjogIjQyNTUiLAogICAgICAgICAgICAgInN0YXR1cyI6ICJwZW5kaW5n
IiwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwK
ICAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCiAgICAgICAgIH1dLAotICAg
ICAgICAicm9vdFNldHMiOiBbeworICAgICAgICAiY29tbWl0U2V0cyI6IFt7CiAgICAgICAgICAg
ICAiaWQiOiAiNDI1NSIsCi0gICAgICAgICAgICAicm9vdHMiOiBbIjg3ODMyIiwgIjkzMTE2Il0K
KyAgICAgICAgICAgICJjb21taXRzIjogWyI4NzgzMiIsICI5MzExNiJdCiAgICAgICAgIH0sIHsK
ICAgICAgICAgICAgICJpZCI6ICI0MjU2IiwKLSAgICAgICAgICAgICJyb290cyI6IFsiODc4MzIi
LCAiOTYzMzYiXQorICAgICAgICAgICAgImNvbW1pdHMiOiBbIjg3ODMyIiwgIjk2MzM2Il0KICAg
ICAgICAgfV0sCi0gICAgICAgICJyb290cyI6IFt7CisgICAgICAgICJjb21taXRzIjogW3sKICAg
ICAgICAgICAgICJpZCI6ICI4NzgzMiIsCiAgICAgICAgICAgICAicmVwb3NpdG9yeSI6ICI5IiwK
ICAgICAgICAgICAgICJyZXZpc2lvbiI6ICIxMC4xMSAxNUEyODQiLApJbmRleDogV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL2J1aWxkYm90LXN5
bmNlci10ZXN0cy5qcwkocmV2aXNpb24gMjEzODY5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3VuaXQtdGVzdHMvYnVpbGRib3Qtc3luY2VyLXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTAsNyArMTEwLDcgQEAgZnVuY3Rpb24gc2FtcGxlaU9TQ29uZmlnV2l0aEV4cGFuc2lvbnMo
KQogICAgIH0KIH0KIAotbGV0IHNhbXBsZVJvb3RTZXREYXRhID0geworbGV0IHNhbXBsZUNvbW1p
dFNldERhdGEgPSB7CiAgICAgJ1dlYktpdCc6IHsKICAgICAgICAgJ2lkJzogJzExMTEyNycsCiAg
ICAgICAgICd0aW1lJzogMTQ1Njk1NTgwNzMzNCwKQEAgLTIwNywxNCArMjA3LDE0IEBAIGZ1bmN0
aW9uIGNyZWF0ZVNhbXBsZUJ1aWxkUmVxdWVzdChwbGF0Zm8KICAgICBhc3NlcnQocGxhdGZvcm0g
aW5zdGFuY2VvZiBQbGF0Zm9ybSk7CiAgICAgYXNzZXJ0KHRlc3QgaW5zdGFuY2VvZiBUZXN0KTsK
IAotICAgIGxldCByb290U2V0ID0gUm9vdFNldC5lbnN1cmVTaW5nbGV0b24oJzQxOTcnLCB7cm9v
dHM6IFsKKyAgICBsZXQgY29tbWl0U2V0ID0gQ29tbWl0U2V0LmVuc3VyZVNpbmdsZXRvbignNDE5
NycsIHtjb21taXRzOiBbCiAgICAgICAgIHsnaWQnOiAnMTExMTI3JywgJ3RpbWUnOiAxNDU2OTU1
ODA3MzM0LCAncmVwb3NpdG9yeSc6IE1vY2tNb2RlbHMud2Via2l0LCAncmV2aXNpb24nOiAnMTk3
NDYzJ30sCiAgICAgICAgIHsnaWQnOiAnMTExMjM3JywgJ3RpbWUnOiAxNDU2OTMxODc0MDAwLCAn
cmVwb3NpdG9yeSc6IE1vY2tNb2RlbHMuc2hhcmVkUmVwb3NpdG9yeSwgJ3JldmlzaW9uJzogJzgw
MjI5J30sCiAgICAgICAgIHsnaWQnOiAnMTExMjM5JywgJ3RpbWUnOiAxNDU2OTMxODc0MDAwLCAn
cmVwb3NpdG9yeSc6IE1vY2tNb2RlbHMud2Via2l0R2l0LCAncmV2aXNpb24nOiAnOWFiY2RlZid9
LAogICAgICAgICB7J2lkJzogJzg4OTMwJywgJ3RpbWUnOiAwLCAncmVwb3NpdG9yeSc6IE1vY2tN
b2RlbHMuaW9zLCAncmV2aXNpb24nOiAnMTNBNDUyJ30sCiAgICAgXX0pOwogCi0gICAgbGV0IHJl
cXVlc3QgPSBCdWlsZFJlcXVlc3QuZW5zdXJlU2luZ2xldG9uKCcxNjczMy0nICsgcGxhdGZvcm0u
aWQoKSwgeydyb290U2V0Jzogcm9vdFNldCwgJ3N0YXR1cyc6ICdwZW5kaW5nJywgJ3BsYXRmb3Jt
JzogcGxhdGZvcm0sICd0ZXN0JzogdGVzdH0pOworICAgIGxldCByZXF1ZXN0ID0gQnVpbGRSZXF1
ZXN0LmVuc3VyZVNpbmdsZXRvbignMTY3MzMtJyArIHBsYXRmb3JtLmlkKCksIHsnY29tbWl0U2V0
JzogY29tbWl0U2V0LCAnc3RhdHVzJzogJ3BlbmRpbmcnLCAncGxhdGZvcm0nOiBwbGF0Zm9ybSwg
J3Rlc3QnOiB0ZXN0fSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTIzMSw3ICsyMzEs
NyBAQCBmdW5jdGlvbiBzYW1wbGVQZW5kaW5nQnVpbGQoYnVpbGRSZXF1ZXN0CiAgICAgICAgICAg
ICBbJ3JlYXNvbicsICdmb3JjZSBidWlsZCcsJ0ZvcmNlIEJ1aWxkIEZvcm0nXSwKICAgICAgICAg
ICAgIFsKICAgICAgICAgICAgICAgICAncm9vdHNfZGljdCcsCi0gICAgICAgICAgICAgICAgSlNP
Ti5zdHJpbmdpZnkoc2FtcGxlUm9vdFNldERhdGEpLAorICAgICAgICAgICAgICAgIEpTT04uc3Ry
aW5naWZ5KHNhbXBsZUNvbW1pdFNldERhdGEpLAogICAgICAgICAgICAgICAgICdGb3JjZSBCdWls
ZCBGb3JtJwogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIFsnc2xhdmVuYW1lJywgc2xhdmVO
YW1lLCAnJ10sCkBAIC0yODAsNyArMjgwLDcgQEAgZnVuY3Rpb24gc2FtcGxlSW5Qcm9ncmVzc0J1
aWxkKHNsYXZlTmFtZQogICAgICAgICAgICAgWydkZXNpcmVkX2ltYWdlJywgJzEzQTQ1MicsICdG
b3JjZSBCdWlsZCBGb3JtJ10sCiAgICAgICAgICAgICBbJ293bmVyJywgJzx1bmtub3duPicsICdG
b3JjZSBCdWlsZCBGb3JtJ10sCiAgICAgICAgICAgICBbJ3JlYXNvbicsICdmb3JjZSBidWlsZCcs
ICdGb3JjZSBCdWlsZCBGb3JtJ10sCi0gICAgICAgICAgICBbJ3Jvb3RzX2RpY3QnLCBKU09OLnN0
cmluZ2lmeShzYW1wbGVSb290U2V0RGF0YSksICdGb3JjZSBCdWlsZCBGb3JtJ10sCisgICAgICAg
ICAgICBbJ3Jvb3RzX2RpY3QnLCBKU09OLnN0cmluZ2lmeShzYW1wbGVDb21taXRTZXREYXRhKSwg
J0ZvcmNlIEJ1aWxkIEZvcm0nXSwKICAgICAgICAgICAgIFsnc2NoZWR1bGVyJywgJ0FCVGVzdC1p
UGFkLVJ1bkJlbmNobWFyay1UZXN0cy1Gb3JjZVNjaGVkdWxlcicsICdTY2hlZHVsZXInXSwKICAg
ICAgICAgICAgIFsnc2xhdmVuYW1lJywgc2xhdmVOYW1lIHx8ICdBQlRlc3QtaVBhZC0wJywgJ0J1
aWxkU2xhdmUnXSwKICAgICAgICAgXSwKQEAgLTM1Niw3ICszNTYsNyBAQCBmdW5jdGlvbiBzYW1w
bGVGaW5pc2hlZEJ1aWxkKGJ1aWxkUmVxdWVzCiAgICAgICAgICAgICBbJ2Rlc2lyZWRfaW1hZ2Un
LCAnMTNBNDUyJywgJ0ZvcmNlIEJ1aWxkIEZvcm0nXSwKICAgICAgICAgICAgIFsnb3duZXInLCAn
PHVua25vd24+JywgJ0ZvcmNlIEJ1aWxkIEZvcm0nXSwKICAgICAgICAgICAgIFsncmVhc29uJywg
J2ZvcmNlIGJ1aWxkJywgJ0ZvcmNlIEJ1aWxkIEZvcm0nXSwKLSAgICAgICAgICAgIFsncm9vdHNf
ZGljdCcsIEpTT04uc3RyaW5naWZ5KHNhbXBsZVJvb3RTZXREYXRhKSwgJ0ZvcmNlIEJ1aWxkIEZv
cm0nXSwKKyAgICAgICAgICAgIFsncm9vdHNfZGljdCcsIEpTT04uc3RyaW5naWZ5KHNhbXBsZUNv
bW1pdFNldERhdGEpLCAnRm9yY2UgQnVpbGQgRm9ybSddLAogICAgICAgICAgICAgWydzY2hlZHVs
ZXInLCAnQUJUZXN0LWlQYWQtUnVuQmVuY2htYXJrLVRlc3RzLUZvcmNlU2NoZWR1bGVyJywgJ1Nj
aGVkdWxlciddLAogICAgICAgICAgICAgWydzbGF2ZW5hbWUnLCBzbGF2ZU5hbWUgfHwgJ0FCVGVz
dC1pUGFkLTAnLCAnQnVpbGRTbGF2ZSddLAogICAgICAgICBdLApAQCAtNTk0LDEzICs1OTQsMTMg
QEAgZGVzY3JpYmUoJ0J1aWxkYm90U3luY2VyJywgZnVuY3Rpb24gKCkgewogICAgICAgICBpdCgn
c2hvdWxkIHJlc29sdmUgInJvb3RPcHRpb25zIicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRDb25maWcoUmVtb3RlQVBJLCBzYW1w
bGVpT1NDb25maWcoKSk7CiAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IHN5bmNlcnNbMF0u
X3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QoY3JlYXRlU2FtcGxlQnVpbGRSZXF1ZXN0KE1vY2tN
b2RlbHMuaXBob25lLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVyKSk7Ci0gICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocHJvcGVydGllc1sncm9vdHNfZGljdCddLCBKU09OLnN0cmluZ2lmeShzYW1wbGVS
b290U2V0RGF0YSkpOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHByb3BlcnRpZXNbJ3Jvb3Rz
X2RpY3QnXSwgSlNPTi5zdHJpbmdpZnkoc2FtcGxlQ29tbWl0U2V0RGF0YSkpOwogICAgICAgICB9
KTsKIAogICAgICAgICBpdCgnc2hvdWxkIHJlc29sdmUgInJvb3RzRXhjbHVkaW5nIicsIGZ1bmN0
aW9uICgpIHsKICAgICAgICAgICAgIGxldCBzeW5jZXJzID0gQnVpbGRib3RTeW5jZXIuX2xvYWRD
b25maWcoUmVtb3RlQVBJLCBzYW1wbGVpT1NDb25maWcoKSk7CiAgICAgICAgICAgICBsZXQgcHJv
cGVydGllcyA9IHN5bmNlcnNbMF0uX3Byb3BlcnRpZXNGb3JCdWlsZFJlcXVlc3QoY3JlYXRlU2Ft
cGxlQnVpbGRSZXF1ZXN0KE1vY2tNb2RlbHMuaXBob25lLCBNb2NrTW9kZWxzLnNwZWVkb21ldGVy
KSk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocHJvcGVydGllc1sncm9vdHNfZGljdCddLCBK
U09OLnN0cmluZ2lmeShzYW1wbGVSb290U2V0RGF0YSkpOworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHByb3BlcnRpZXNbJ3Jvb3RzX2RpY3QnXSwgSlNPTi5zdHJpbmdpZnkoc2FtcGxlQ29tbWl0
U2V0RGF0YSkpOwogICAgICAgICB9KTsKIAogICAgICAgICBpdCgnc2hvdWxkIHNldCB0aGUgcHJv
cGVydHkgZm9yIHRoZSBidWlsZCByZXF1ZXN0IGlkJywgZnVuY3Rpb24gKCkgewpJbmRleDogV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVhc3VyZW1lbnQtYWRhcHRvci10ZXN0
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9t
ZWFzdXJlbWVudC1hZGFwdG9yLXRlc3RzLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1hZGFwdG9yLXRlc3RzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC02NiwyMyArNjYsMjMgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50
QWRhcHRvcicsIGZ1bmN0aW9uIAogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGFkYXB0b3IuYXBw
bHlUbyhzYW1wbGVDdXN0b21CYXNlbGluZURhdGEpLmJ1aWxkKCksIG51bGwpOwogICAgICAgICB9
KTsKIAotICAgICAgICBpdCgnc2hvdWxkIGFkYXB0IHJldmlzaW9uIGluZm9ybWF0aW9uIGFzIGEg
Um9vdFNldCBvYmplY3QnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdzaG91bGQgYWRhcHQg
cmV2aXNpb24gaW5mb3JtYXRpb24gYXMgYSBDb21taXRTZXQgb2JqZWN0JywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgdmFyIGFkYXB0b3IgPSBuZXcgTWVhc3VyZW1lbnRBZGFwdG9yKHNhbXBs
ZUNsdXN0ZXIuZm9ybWF0TWFwKTsKLSAgICAgICAgICAgIHZhciByb290U2V0ID0gYWRhcHRvci5h
cHBseVRvKHNhbXBsZURhdGEpLnJvb3RTZXQoKTsKLSAgICAgICAgICAgIGFzc2VydC5vayhyb290
U2V0IGluc3RhbmNlb2YgUm9vdFNldCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocm9vdFNl
dC5sYXRlc3RDb21taXRUaW1lKCksIDE0NDc3MDcwNTU1NzYpOworICAgICAgICAgICAgdmFyIGNv
bW1pdFNldCA9IGFkYXB0b3IuYXBwbHlUbyhzYW1wbGVEYXRhKS5jb21taXRTZXQoKTsKKyAgICAg
ICAgICAgIGFzc2VydC5vayhjb21taXRTZXQgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5sYXRlc3RDb21taXRUaW1lKCksIDE0NDc3MDcw
NTU1NzYpOwogICAgICAgICB9KTsKIAogICAgICAgICBpdCgnc2hvdWxkIGFkYXB0IE9TIFggdmVy
c2lvbiBhcyBhIENvbW1pdExvZyBvYmplY3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICB2
YXIgYWRhcHRvciA9IG5ldyBNZWFzdXJlbWVudEFkYXB0b3Ioc2FtcGxlQ2x1c3Rlci5mb3JtYXRN
YXApOwotICAgICAgICAgICAgdmFyIHJvb3RTZXQgPSBhZGFwdG9yLmFwcGx5VG8oc2FtcGxlRGF0
YSkucm9vdFNldCgpOwotICAgICAgICAgICAgYXNzZXJ0Lm9rKHJvb3RTZXQgaW5zdGFuY2VvZiBS
b290U2V0KTsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyb290U2V0LmxhdGVzdENvbW1pdFRp
bWUoKSwgMTQ0NzcwNzA1NTU3Nik7CisgICAgICAgICAgICB2YXIgY29tbWl0U2V0ID0gYWRhcHRv
ci5hcHBseVRvKHNhbXBsZURhdGEpLmNvbW1pdFNldCgpOworICAgICAgICAgICAgYXNzZXJ0Lm9r
KGNvbW1pdFNldCBpbnN0YW5jZW9mIENvbW1pdFNldCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoY29tbWl0U2V0LmxhdGVzdENvbW1pdFRpbWUoKSwgMTQ0NzcwNzA1NTU3Nik7CiAKLSAgICAg
ICAgICAgIGFzc2VydC5vayhyb290U2V0LnJlcG9zaXRvcmllcygpLmluZGV4T2YoTW9ja01vZGVs
cy5vc3gpID49IDApOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvb3RTZXQucmV2aXNpb25G
b3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4KSwgJzEwLjExIDE1RDIxJyk7CisgICAgICAgICAg
ICBhc3NlcnQub2soY29tbWl0U2V0LnJlcG9zaXRvcmllcygpLmluZGV4T2YoTW9ja01vZGVscy5v
c3gpID49IDApOworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5yZXZpc2lvbkZv
clJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpLCAnMTAuMTEgMTVEMjEnKTsKIAotICAgICAgICAg
ICAgdmFyIGNvbW1pdCA9IHJvb3RTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9z
eCk7CisgICAgICAgICAgICB2YXIgY29tbWl0ID0gY29tbWl0U2V0LmNvbW1pdEZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy5vc3gpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGNvbW1pdCBpbnN0YW5j
ZW9mIENvbW1pdExvZyk7CiAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0LnJlcG9zaXRv
cnkoKSwgTW9ja01vZGVscy5vc3gpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGNvbW1pdC50aW1l
KCkgaW5zdGFuY2VvZiBEYXRlKTsKQEAgLTk1LDEyICs5NSwxMiBAQCBkZXNjcmliZSgnTWVhc3Vy
ZW1lbnRBZGFwdG9yJywgZnVuY3Rpb24gCiAKICAgICAgICAgaXQoJ3Nob3VsZCBhZGFwdCBXZWJL
aXQgcmV2aXNpb24gYXMgYSBDb21taXRMb2cgb2JqZWN0JywgZnVuY3Rpb24gKCkgewogICAgICAg
ICAgICAgdmFyIGFkYXB0b3IgPSBuZXcgTWVhc3VyZW1lbnRBZGFwdG9yKHNhbXBsZUNsdXN0ZXIu
Zm9ybWF0TWFwKTsKLSAgICAgICAgICAgIHZhciByb290U2V0ID0gYWRhcHRvci5hcHBseVRvKHNh
bXBsZURhdGEpLnJvb3RTZXQoKTsKKyAgICAgICAgICAgIHZhciBjb21taXRTZXQgPSBhZGFwdG9y
LmFwcGx5VG8oc2FtcGxlRGF0YSkuY29tbWl0U2V0KCk7CiAKLSAgICAgICAgICAgIGFzc2VydC5v
ayhyb290U2V0LnJlcG9zaXRvcmllcygpLmluZGV4T2YoTW9ja01vZGVscy53ZWJraXQpID49IDAp
OwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvb3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KE1vY2tNb2RlbHMud2Via2l0KSwgJzE5MjQ4MycpOworICAgICAgICAgICAgYXNzZXJ0Lm9rKGNv
bW1pdFNldC5yZXBvc2l0b3JpZXMoKS5pbmRleE9mKE1vY2tNb2RlbHMud2Via2l0KSA+PSAwKTsK
KyAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXRTZXQucmV2aXNpb25Gb3JSZXBvc2l0b3J5
KE1vY2tNb2RlbHMud2Via2l0KSwgJzE5MjQ4MycpOwogCi0gICAgICAgICAgICB2YXIgY29tbWl0
ID0gcm9vdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Via2l0KTsKKyAgICAg
ICAgICAgIHZhciBjb21taXQgPSBjb21taXRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9k
ZWxzLndlYmtpdCk7CiAgICAgICAgICAgICBhc3NlcnQub2soY29tbWl0IGluc3RhbmNlb2YgQ29t
bWl0TG9nKTsKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXQucmVwb3NpdG9yeSgpLCBN
b2NrTW9kZWxzLndlYmtpdCk7CiAgICAgICAgICAgICBhc3NlcnQub2soY29tbWl0LnRpbWUoKSBp
bnN0YW5jZW9mIERhdGUpOwpAQCAtMTE0LDExICsxMTQsMTEgQEAgZGVzY3JpYmUoJ01lYXN1cmVt
ZW50QWRhcHRvcicsIGZ1bmN0aW9uIAogCiAgICAgICAgIGl0KCdzaG91bGQgbm90IGNyZWF0ZSBz
ZXBhcmF0ZSBDb21taXRMb2cgb2JqZWN0IGZvciB0aGUgc2FtZSByZXZpc2lvbicsIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgIHZhciBhZGFwdG9yID0gbmV3IE1lYXN1cmVtZW50QWRhcHRvcihz
YW1wbGVDbHVzdGVyLmZvcm1hdE1hcCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoYWRhcHRv
ci5hcHBseVRvKHNhbXBsZURhdGEpLnJvb3RTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tN
b2RlbHMud2Via2l0KSwKLSAgICAgICAgICAgICAgICBhZGFwdG9yLmFwcGx5VG8oc2FtcGxlRGF0
YSkucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQpKTsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChhZGFwdG9yLmFwcGx5VG8oc2FtcGxlRGF0YSkuY29tbWl0
U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCksCisgICAgICAgICAg
ICAgICAgYWRhcHRvci5hcHBseVRvKHNhbXBsZURhdGEpLmNvbW1pdFNldCgpLmNvbW1pdEZvclJl
cG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQpKTsKIAotICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGFkYXB0b3IuYXBwbHlUbyhzYW1wbGVEYXRhKS5yb290U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9y
eShNb2NrTW9kZWxzLm9zeCksCi0gICAgICAgICAgICAgICAgYWRhcHRvci5hcHBseVRvKHNhbXBs
ZURhdGEpLnJvb3RTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4KSk7Cisg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoYWRhcHRvci5hcHBseVRvKHNhbXBsZURhdGEpLmNvbW1p
dFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy5vc3gpLAorICAgICAgICAgICAg
ICAgIGFkYXB0b3IuYXBwbHlUbyhzYW1wbGVEYXRhKS5jb21taXRTZXQoKS5jb21taXRGb3JSZXBv
c2l0b3J5KE1vY2tNb2RlbHMub3N4KSk7CiAgICAgICAgIH0pOwogCiAgICAgfSk7CkluZGV4OiBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvbWVh
c3VyZW1lbnQtc2V0LXRlc3RzLmpzCShyZXZpc2lvbiAyMTM4NjkpCisrKyBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy9tZWFzdXJlbWVudC1zZXQtdGVzdHMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTgwMiwxMSArODAyLDExIEBAIGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsICgp
ID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnQuaWQsIDI2NTMwMDMxKTsK
IAogICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdFRpbWUgPSAxNDgyMzk4NTYyOTUwOwotICAg
ICAgICAgICAgICAgIGNvbnN0IHJvb3RTZXQgPSBwb2ludC5yb290U2V0KCk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50LnJvb3RTZXQoKSwgcm9vdFNldCk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChyb290U2V0LnJlcG9zaXRvcmllcygpLCBbd2Via2l0XSk7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvb3RTZXQucmV2aXNpb25Gb3JSZXBvc2l0
b3J5KHdlYmtpdCksICcyMTAwOTYnKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjb21taXQgPSBy
b290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAgICAgICAgICAgICAgICBjb25z
dCBjb21taXRTZXQgPSBwb2ludC5jb21taXRTZXQoKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocG9pbnQuY29tbWl0U2V0KCksIGNvbW1pdFNldCk7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChjb21taXRTZXQucmVwb3NpdG9yaWVzKCksIFt3ZWJraXRdKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCAnMjEwMDk2Jyk7CisgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0ID0gY29tbWl0
U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29tbWl0LnJlcG9zaXRvcnkoKSwgd2Via2l0KTsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoK2NvbW1pdC50aW1lKCksIGNvbW1pdFRpbWUpOwogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChjb21taXQuYXV0aG9yKCksIG51bGwpOwpAQCAtODE1LDcgKzgxNSw3IEBAIGRl
c2NyaWJlKCdNZWFzdXJlbWVudFNldCcsICgpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29tbWl0LnVybCgpLCAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjEw
MDk2Jyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdC5sYWJlbCgpLCAncjIx
MDA5NicpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChjb21taXQudGl0bGUoKSwgJ1dl
YktpdCBhdCByMjEwMDk2Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvb3RTZXQu
bGF0ZXN0Q29tbWl0VGltZSgpLCBjb21taXRUaW1lKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoY29tbWl0U2V0LmxhdGVzdENvbW1pdFRpbWUoKSwgY29tbWl0VGltZSk7CiAKICAgICAg
ICAgICAgICAgICBjb25zdCBidWlsZCA9IHBvaW50LmJ1aWxkKCk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKHBvaW50LmJ1aWxkKCksIGJ1aWxkKTsKQEAgLTgzNiwxMiArODM2LDEyIEBA
IGRlc2NyaWJlKCdNZWFzdXJlbWVudFNldCcsICgpID0+IHsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocG9pbnQuaWQsIDI2NTMwNzc5KTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGNv
bW1pdFRpbWUgPSAxNDgyNDI0ODcwNzI5OwotICAgICAgICAgICAgICAgIGNvbnN0IHJvb3RTZXQg
PSBwb2ludC5yb290U2V0KCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJvb3RTZXQu
cmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAwOTcnKTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBjb21taXQgPSByb290U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBjb21taXRTZXQgPSBwb2ludC5jb21taXRTZXQoKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoY29tbWl0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3
ZWJraXQpLCAnMjEwMDk3Jyk7CisgICAgICAgICAgICAgICAgY29uc3QgY29tbWl0ID0gY29tbWl0
U2V0LmNvbW1pdEZvclJlcG9zaXRvcnkod2Via2l0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoK2NvbW1pdC50aW1lKCksIGNvbW1pdFRpbWUpOwogICAgICAgICAgICAgICAgIGFzc2Vy
dC5lcXVhbChjb21taXQucmV2aXNpb24oKSwgJzIxMDA5NycpOwotICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyb290U2V0LmxhdGVzdENvbW1pdFRpbWUoKSwgY29tbWl0VGltZSk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGNvbW1pdFNldC5sYXRlc3RDb21taXRUaW1lKCksIGNv
bW1pdFRpbWUpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGQgPSBwb2ludC5idWlsZCgp
OwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChidWlsZC5idWlsZGVyKCksIGJ1aWxkZXIp
OwpAQCAtODU2LDM1ICs4NTYsMzUgQEAgZGVzY3JpYmUoJ01lYXN1cmVtZW50U2V0JywgKCkgPT4g
ewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludC5tYXJrZWRPdXRsaWVyLCB0cnVl
KTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChwb2ludHNbMl0uaWQsIDI2NTMyMjc1KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzJdLnJvb3RTZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIx
MDEwMicpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbMl0uY29tbWl0U2V0
KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAxMDInKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoK3BvaW50c1syXS5idWlsZCgpLmJ1aWxkVGltZSgpLCAxNDgyNDM2
MDQxODY1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzJdLmJ1aWxkKCku
YnVpbGROdW1iZXIoKSwgMTA4NzkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2lu
dHNbMl0udGltZSwgMTQ4MjQzMTQ2NDM3MSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1syXS52YWx1ZSwgMTM0LjI3MjUpOwogCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1szXS5pZCwgMjY1NDcyMjYpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbM10ucm9vdFNldCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEw
MTY4Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1szXS5jb21taXRTZXQo
KS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDE2OCcpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbCgrcG9pbnRzWzNdLmJ1aWxkKCkuYnVpbGRUaW1lKCksIDE0ODI4NTI0
NTIxNDMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbM10uYnVpbGQoKS5i
dWlsZE51bWJlcigpLCAxMDkwMik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50
c1szXS50aW1lLCAxNDgyODUyNDEyNzM1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cG9pbnRzWzNdLnZhbHVlLCAxNTAuOTYyNSk7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzRdLmlkLCAyNjU1OTkxNSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1s0XS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAy
MjInKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzRdLmNvbW1pdFNldCgp
LnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjIyJyk7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKCtwb2ludHNbNF0uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MzM0Nzky
NjQyOSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s0XS5idWlsZCgpLmJ1
aWxkTnVtYmVyKCksIDEwOTI0KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRz
WzRdLnRpbWUsIDE0ODMzNDc3MzIwNTEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChw
b2ludHNbNF0udmFsdWUsIDE0MS43Mik7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cG9pbnRzWzVdLmlkLCAyNjU2NDM4OCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBv
aW50c1s1XS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAyMzEn
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzVdLmNvbW1pdFNldCgpLnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjMxJyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKCtwb2ludHNbNV0uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MzQxNTQyNjA0
OSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s1XS5idWlsZCgpLmJ1aWxk
TnVtYmVyKCksIDEwOTMwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzVd
LnRpbWUsIDE0ODM0MTIxNzE1MzEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2lu
dHNbNV0udmFsdWUsIDEzOC4xMzEyNSk7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cG9pbnRzWzZdLmlkLCAyNjU2ODg2Nyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBv
aW50c1s2XS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAyNDAn
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzZdLmNvbW1pdFNldCgpLnJl
dmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjQwJyk7CiAgICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKCtwb2ludHNbNl0uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MzQ2OTY0Mjk5
Myk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s2XS5idWlsZCgpLmJ1aWxk
TnVtYmVyKCksIDEwOTM1KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzZd
LnRpbWUsIDE0ODM0Njk1ODQzNDcpOwpAQCAtOTA0LDQyICs5MDQsNDIgQEAgZGVzY3JpYmUoJ01l
YXN1cmVtZW50U2V0JywgKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBwb2ludHNbaV0gPSBm
dWxsU2VyaWVzLmZpbmRQb2ludEJ5SW5kZXgoaSk7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocG9pbnRzWzBdLmlkLCAyNjUzMDAzMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1swXS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcy
MTAwOTYnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzBdLmNvbW1pdFNl
dCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMDk2Jyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKCtwb2ludHNbMF0uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MjQx
MzIyMjMxMSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1swXS5idWlsZCgp
LmJ1aWxkTnVtYmVyKCksIDEwODc3KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9p
bnRzWzBdLnRpbWUsIDE0ODIzOTg1NjI5NTApOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbMF0udmFsdWUsIDEzNS4yNjM3NSk7CiAKICAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwocG9pbnRzWzFdLmlkLCAyNjUzMjI3NSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1sxXS5yb290U2V0KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcy
MTAxMDInKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzFdLmNvbW1pdFNl
dCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMTAyJyk7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKCtwb2ludHNbMV0uYnVpbGQoKS5idWlsZFRpbWUoKSwgMTQ4MjQz
NjA0MTg2NSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1sxXS5idWlsZCgp
LmJ1aWxkTnVtYmVyKCksIDEwODc5KTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9p
bnRzWzFdLnRpbWUsIDE0ODI0MzE0NjQzNzEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbMV0udmFsdWUsIDEzNC4yNzI1KTsKIAogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChwb2ludHNbMl0uaWQsIDI2NTQ3MjI2KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwocG9pbnRzWzJdLnJvb3RTZXQoKS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIx
MDE2OCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbMl0uY29tbWl0U2V0
KCkucmV2aXNpb25Gb3JSZXBvc2l0b3J5KHdlYmtpdCksICcyMTAxNjgnKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXF1YWwoK3BvaW50c1syXS5idWlsZCgpLmJ1aWxkVGltZSgpLCAxNDgyODUy
NDUyMTQzKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9pbnRzWzJdLmJ1aWxkKCku
YnVpbGROdW1iZXIoKSwgMTA5MDIpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2lu
dHNbMl0udGltZSwgMTQ4Mjg1MjQxMjczNSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1syXS52YWx1ZSwgMTUwLjk2MjUpOwogCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKHBvaW50c1szXS5pZCwgMjY1NTk5MTUpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVh
bChwb2ludHNbM10ucm9vdFNldCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEw
MjIyJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1szXS5jb21taXRTZXQo
KS5yZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDIyMicpOwogICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbCgrcG9pbnRzWzNdLmJ1aWxkKCkuYnVpbGRUaW1lKCksIDE0ODMzNDc5
MjY0MjkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbM10uYnVpbGQoKS5i
dWlsZE51bWJlcigpLCAxMDkyNCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50
c1szXS50aW1lLCAxNDgzMzQ3NzMyMDUxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
cG9pbnRzWzNdLnZhbHVlLCAxNDEuNzIpOwogCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1s0XS5pZCwgMjY1NjQzODgpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChw
b2ludHNbNF0ucm9vdFNldCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjMx
Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s0XS5jb21taXRTZXQoKS5y
ZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDIzMScpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbCgrcG9pbnRzWzRdLmJ1aWxkKCkuYnVpbGRUaW1lKCksIDE0ODM0MTU0MjYw
NDkpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbNF0uYnVpbGQoKS5idWls
ZE51bWJlcigpLCAxMDkzMCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s0
XS50aW1lLCAxNDgzNDEyMTcxNTMxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocG9p
bnRzWzRdLnZhbHVlLCAxMzguMTMxMjUpOwogCiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KHBvaW50c1s1XS5pZCwgMjY1Njg4NjcpOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChw
b2ludHNbNV0ucm9vdFNldCgpLnJldmlzaW9uRm9yUmVwb3NpdG9yeSh3ZWJraXQpLCAnMjEwMjQw
Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s1XS5jb21taXRTZXQoKS5y
ZXZpc2lvbkZvclJlcG9zaXRvcnkod2Via2l0KSwgJzIxMDI0MCcpOwogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbCgrcG9pbnRzWzVdLmJ1aWxkKCkuYnVpbGRUaW1lKCksIDE0ODM0Njk2NDI5
OTMpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChwb2ludHNbNV0uYnVpbGQoKS5idWls
ZE51bWJlcigpLCAxMDkzNSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHBvaW50c1s1
XS50aW1lLCAxNDgzNDY5NTg0MzQ3KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy91
bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Rlc3QtZ3JvdXBzLXRlc3RzLmpzCShyZXZpc2lvbiAy
MTM4NjkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy90ZXN0LWdyb3Vw
cy10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiBzYW1w
bGVUZXN0R3JvdXAoKSB7CiAgICAgICAgICAgICAiY3JlYXRlZEF0IjogMTQ1ODY4ODUxNDAwMCwK
ICAgICAgICAgICAgICJoaWRkZW4iOiBmYWxzZSwKICAgICAgICAgICAgICJidWlsZFJlcXVlc3Rz
IjogWyIxNjk4NSIsICIxNjk4NiIsICIxNjk4NyIsICIxNjk4OCIsICIxNjk4OSIsICIxNjk5MCIs
ICIxNjk5MSIsICIxNjk5MiJdLAotICAgICAgICAgICAgInJvb3RTZXRzIjogWyI0MjU1IiwgIjQy
NTYiLCAiNDI1NSIsICI0MjU2IiwgIjQyNTUiLCAiNDI1NiIsICI0MjU1IiwgIjQyNTYiXQorICAg
ICAgICAgICAgImNvbW1pdFNldHMiOiBbIjQyNTUiLCAiNDI1NiIsICI0MjU1IiwgIjQyNTYiLCAi
NDI1NSIsICI0MjU2IiwgIjQyNTUiLCAiNDI1NiJdCiAgICAgICAgIH0KICAgICAgICAgXSwKICAg
ICAgICAgImJ1aWxkUmVxdWVzdHMiOiBbewpAQCAtMjUsNyArMjUsNyBAQCBmdW5jdGlvbiBzYW1w
bGVUZXN0R3JvdXAoKSB7CiAgICAgICAgICAgICAicGxhdGZvcm0iOiAiMzEiLAogICAgICAgICAg
ICAgInRlc3RHcm91cCI6ICIyMTI4IiwKICAgICAgICAgICAgICJvcmRlciI6ICIwIiwKLSAgICAg
ICAgICAgICJyb290U2V0IjogIjQyNTUiLAorICAgICAgICAgICAgImNvbW1pdFNldCI6ICI0MjU1
IiwKICAgICAgICAgICAgICJzdGF0dXMiOiAicGVuZGluZyIsCiAgICAgICAgICAgICAidXJsIjog
bnVsbCwKICAgICAgICAgICAgICJidWlsZCI6IG51bGwsCkBAIC0zNyw3ICszNyw3IEBAIGZ1bmN0
aW9uIHNhbXBsZVRlc3RHcm91cCgpIHsKICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICIzMSIsCiAg
ICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAgICAgICAgIm9yZGVyIjogIjEi
LAotICAgICAgICAgICAgInJvb3RTZXQiOiAiNDI1NiIsCisgICAgICAgICAgICAiY29tbWl0U2V0
IjogIjQyNTYiLAogICAgICAgICAgICAgInN0YXR1cyI6ICJwZW5kaW5nIiwKICAgICAgICAgICAg
ICJ1cmwiOiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVsbCwKQEAgLTUwLDcgKzUwLDcg
QEAgZnVuY3Rpb24gc2FtcGxlVGVzdEdyb3VwKCkgewogICAgICAgICAgICAgInBsYXRmb3JtIjog
IjMxIiwKICAgICAgICAgICAgICJ0ZXN0R3JvdXAiOiAiMjEyOCIsCiAgICAgICAgICAgICAib3Jk
ZXIiOiAiMiIsCi0gICAgICAgICAgICAicm9vdFNldCI6ICI0MjU1IiwKKyAgICAgICAgICAgICJj
b21taXRTZXQiOiAiNDI1NSIsCiAgICAgICAgICAgICAic3RhdHVzIjogInBlbmRpbmciLAogICAg
ICAgICAgICAgInVybCI6IG51bGwsCiAgICAgICAgICAgICAiYnVpbGQiOiBudWxsLApAQCAtNjIs
MjIgKzYyLDIyIEBAIGZ1bmN0aW9uIHNhbXBsZVRlc3RHcm91cCgpIHsKICAgICAgICAgICAgICJw
bGF0Zm9ybSI6ICIzMSIsCiAgICAgICAgICAgICAidGVzdEdyb3VwIjogIjIxMjgiLAogICAgICAg
ICAgICAgIm9yZGVyIjogIjMiLAotICAgICAgICAgICAgInJvb3RTZXQiOiAiNDI1NiIsCisgICAg
ICAgICAgICAiY29tbWl0U2V0IjogIjQyNTYiLAogICAgICAgICAgICAgInN0YXR1cyI6ICJwZW5k
aW5nIiwKICAgICAgICAgICAgICJ1cmwiOiBudWxsLAogICAgICAgICAgICAgImJ1aWxkIjogbnVs
bCwKICAgICAgICAgICAgICJjcmVhdGVkQXQiOiAxNDU4Njg4NTE0MDAwCiAgICAgICAgIH0KICAg
ICAgICAgXSwKLSAgICAgICAgInJvb3RTZXRzIjogW3sKKyAgICAgICAgImNvbW1pdFNldHMiOiBb
ewogICAgICAgICAgICAgImlkIjogIjQyNTUiLAotICAgICAgICAgICAgInJvb3RzIjogWyI4Nzgz
MiIsICI5MzExNiJdCisgICAgICAgICAgICAiY29tbWl0cyI6IFsiODc4MzIiLCAiOTMxMTYiXQog
ICAgICAgICB9LCB7CiAgICAgICAgICAgICAiaWQiOiAiNDI1NiIsCi0gICAgICAgICAgICAicm9v
dHMiOiBbIjg3ODMyIiwgIjk2MzM2Il0KKyAgICAgICAgICAgICJjb21taXRzIjogWyI4NzgzMiIs
ICI5NjMzNiJdCiAgICAgICAgIH0KICAgICAgICAgXSwKLSAgICAgICAgInJvb3RzIjogW3sKKyAg
ICAgICAgImNvbW1pdHMiOiBbewogICAgICAgICAgICAgImlkIjogIjg3ODMyIiwKICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIjkiLAogICAgICAgICAgICAgInJldmlzaW9uIjogIjEwLjExIDE1
QTI4NCIsCkBAIC0xNTcsMTggKzE1NywxOCBAQCBkZXNjcmliZSgnVGVzdEdyb3VwJywgZnVuY3Rp
b24gKCkgewogICAgICAgICBpdCgnc2hvdWxkIGNyZWF0ZSByb290IHNldHMgZm9yIGVhY2ggZ3Jv
dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICB2YXIgYnVpbGRSZXF1ZXN0cyA9IFRlc3RH
cm91cC5fY3JlYXRlTW9kZWxzRnJvbUZldGNoZWRUZXN0R3JvdXBzKHNhbXBsZVRlc3RHcm91cCgp
KVswXS5idWlsZFJlcXVlc3RzKCk7CiAKLSAgICAgICAgICAgIHZhciBmaXJzdFNldCA9IGJ1aWxk
UmVxdWVzdHNbMF0ucm9vdFNldCgpOwotICAgICAgICAgICAgYXNzZXJ0Lm9rKGZpcnN0U2V0IGlu
c3RhbmNlb2YgUm9vdFNldCk7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwoZmlyc3RTZXQsIGJ1
aWxkUmVxdWVzdHNbMl0ucm9vdFNldCgpKTsKLQotICAgICAgICAgICAgdmFyIHNlY29uZFNldCA9
IGJ1aWxkUmVxdWVzdHNbMV0ucm9vdFNldCgpOwotICAgICAgICAgICAgYXNzZXJ0Lm9rKHNlY29u
ZFNldCBpbnN0YW5jZW9mIFJvb3RTZXQpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHNlY29u
ZFNldCwgYnVpbGRSZXF1ZXN0c1szXS5yb290U2V0KCkpOworICAgICAgICAgICAgdmFyIGZpcnN0
U2V0ID0gYnVpbGRSZXF1ZXN0c1swXS5jb21taXRTZXQoKTsKKyAgICAgICAgICAgIGFzc2VydC5v
ayhmaXJzdFNldCBpbnN0YW5jZW9mIENvbW1pdFNldCk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoZmlyc3RTZXQsIGJ1aWxkUmVxdWVzdHNbMl0uY29tbWl0U2V0KCkpOworCisgICAgICAgICAg
ICB2YXIgc2Vjb25kU2V0ID0gYnVpbGRSZXF1ZXN0c1sxXS5jb21taXRTZXQoKTsKKyAgICAgICAg
ICAgIGFzc2VydC5vayhzZWNvbmRTZXQgaW5zdGFuY2VvZiBDb21taXRTZXQpOworICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKHNlY29uZFNldCwgYnVpbGRSZXF1ZXN0c1szXS5jb21taXRTZXQoKSk7
CiAKICAgICAgICAgICAgIGFzc2VydC5lcXVhbChmaXJzdFNldC5yZXZpc2lvbkZvclJlcG9zaXRv
cnkoTW9ja01vZGVscy53ZWJraXQpLCAnMTkxNjIyJyk7CiAgICAgICAgICAgICB2YXIgZmlyc3RX
ZWJLaXRDb21taXQgPSBmaXJzdFNldC5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Vi
a2l0KTsKICAgICAgICAgICAgIGFzc2VydC5vayhmaXJzdFdlYktpdENvbW1pdCBpbnN0YW5jZW9m
IENvbW1pdExvZyk7Ci0gICAgICAgICAgICBhc3NlcnQub2soZmlyc3RXZWJLaXRDb21taXQsIGJ1
aWxkUmVxdWVzdHNbMl0ucm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53
ZWJraXQpKTsKKyAgICAgICAgICAgIGFzc2VydC5vayhmaXJzdFdlYktpdENvbW1pdCwgYnVpbGRS
ZXF1ZXN0c1syXS5jb21taXRTZXQoKS5jb21taXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMud2Vi
a2l0KSk7CiAgICAgICAgICAgICBhc3NlcnQub2soZmlyc3RXZWJLaXRDb21taXQucmVwb3NpdG9y
eSgpLCBNb2NrTW9kZWxzLndlYmtpdCk7CiAgICAgICAgICAgICBhc3NlcnQub2soZmlyc3RXZWJL
aXRDb21taXQucmV2aXNpb24oKSwgJzE5MTYyMicpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKGZp
cnN0V2ViS2l0Q29tbWl0LnRpbWUoKSBpbnN0YW5jZW9mIERhdGUpOwpAQCAtMTc3LDcgKzE3Nyw3
IEBAIGRlc2NyaWJlKCdUZXN0R3JvdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoc2Vjb25kU2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtp
dCksICcxOTI3MzYnKTsKICAgICAgICAgICAgIHZhciBzZWNvbmRXZWJLaXRDb21taXQgPSBzZWNv
bmRTZXQuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCk7CiAgICAgICAgICAg
ICBhc3NlcnQub2soc2Vjb25kV2ViS2l0Q29tbWl0IGluc3RhbmNlb2YgQ29tbWl0TG9nKTsKLSAg
ICAgICAgICAgIGFzc2VydC5vayhzZWNvbmRXZWJLaXRDb21taXQsIGJ1aWxkUmVxdWVzdHNbM10u
cm9vdFNldCgpLmNvbW1pdEZvclJlcG9zaXRvcnkoTW9ja01vZGVscy53ZWJraXQpKTsKKyAgICAg
ICAgICAgIGFzc2VydC5vayhzZWNvbmRXZWJLaXRDb21taXQsIGJ1aWxkUmVxdWVzdHNbM10uY29t
bWl0U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLndlYmtpdCkpOwogICAgICAg
ICAgICAgYXNzZXJ0Lm9rKHNlY29uZFdlYktpdENvbW1pdC5yZXBvc2l0b3J5KCksIE1vY2tNb2Rl
bHMud2Via2l0KTsKICAgICAgICAgICAgIGFzc2VydC5vayhzZWNvbmRXZWJLaXRDb21taXQucmV2
aXNpb24oKSwgJzE5MjczNicpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKHNlY29uZFdlYktpdENv
bW1pdC50aW1lKCkgaW5zdGFuY2VvZiBEYXRlKTsKQEAgLTE4Niw5ICsxODYsOSBAQCBkZXNjcmli
ZSgnVGVzdEdyb3VwJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGZp
cnN0U2V0LnJldmlzaW9uRm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCksICcxMC4xMSAxNUEy
ODQnKTsKICAgICAgICAgICAgIHZhciBvc3hDb21taXQgPSBmaXJzdFNldC5jb21taXRGb3JSZXBv
c2l0b3J5KE1vY2tNb2RlbHMub3N4KTsKICAgICAgICAgICAgIGFzc2VydC5vayhvc3hDb21taXQg
aW5zdGFuY2VvZiBDb21taXRMb2cpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1p
dCwgYnVpbGRSZXF1ZXN0c1sxXS5yb290U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9k
ZWxzLm9zeCkpOwotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdCwgYnVpbGRSZXF1
ZXN0c1syXS5yb290U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCkpOwot
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKG9zeENvbW1pdCwgYnVpbGRSZXF1ZXN0c1szXS5yb290
U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2NrTW9kZWxzLm9zeCkpOworICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKG9zeENvbW1pdCwgYnVpbGRSZXF1ZXN0c1sxXS5jb21taXRTZXQoKS5jb21t
aXRGb3JSZXBvc2l0b3J5KE1vY2tNb2RlbHMub3N4KSk7CisgICAgICAgICAgICBhc3NlcnQuZXF1
YWwob3N4Q29tbWl0LCBidWlsZFJlcXVlc3RzWzJdLmNvbW1pdFNldCgpLmNvbW1pdEZvclJlcG9z
aXRvcnkoTW9ja01vZGVscy5vc3gpKTsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChvc3hDb21t
aXQsIGJ1aWxkUmVxdWVzdHNbM10uY29tbWl0U2V0KCkuY29tbWl0Rm9yUmVwb3NpdG9yeShNb2Nr
TW9kZWxzLm9zeCkpOwogICAgICAgICAgICAgYXNzZXJ0Lm9rKG9zeENvbW1pdC5yZXBvc2l0b3J5
KCksIE1vY2tNb2RlbHMub3N4KTsKICAgICAgICAgICAgIGFzc2VydC5vayhvc3hDb21taXQucmV2
aXNpb24oKSwgJzEwLjExIDE1QTI4NCcpOwogICAgICAgICB9KTsKSW5kZXg6IFdlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9yZXNvdXJjZXMv
bW9jay12My1tb2RlbHMuanMJKHJldmlzaW9uIDIxMzg2OSkKKysrIFdlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy91bml0LXRlc3RzL3Jlc291cmNlcy9tb2NrLXYzLW1vZGVscy5qcwkod29ya2luZyBj
b3B5KQpAQCAtOSw3ICs5LDcgQEAgdmFyIE1vY2tNb2RlbHMgPSB7CiAgICAgICAgICAgICBNZXRy
aWMuY2xlYXJTdGF0aWNNYXAoKTsKICAgICAgICAgICAgIFBsYXRmb3JtLmNsZWFyU3RhdGljTWFw
KCk7CiAgICAgICAgICAgICBSZXBvc2l0b3J5LmNsZWFyU3RhdGljTWFwKCk7Ci0gICAgICAgICAg
ICBSb290U2V0LmNsZWFyU3RhdGljTWFwKCk7CisgICAgICAgICAgICBDb21taXRTZXQuY2xlYXJT
dGF0aWNNYXAoKTsKICAgICAgICAgICAgIFRlc3QuY2xlYXJTdGF0aWNNYXAoKTsKICAgICAgICAg
ICAgIFRlc3RHcm91cC5jbGVhclN0YXRpY01hcCgpOwogICAgICAgICAgICAgQnVpbGRSZXF1ZXN0
LmNsZWFyU3RhdGljTWFwKCk7Cg==
</data>
<flag name="review"
          id="325881"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>