<?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>141215</bug_id>
          
          <creation_ts>2015-02-03 15:19:52 -0800</creation_ts>
          <short_desc>Web Inspector: merge in upstream Esprima to support parsing more of ES6</short_desc>
          <delta_ts>2015-02-19 22:35:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1066595</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-03 15:19:52 -0800</bug_when>
    <thetext>ScriptSyntaxTree uses Esprima, which only handles ES5 and cannot parse Web Inspector code itself (var..of). It looks like Espree is getting close to having sufficient ES6, and is compatible with Esprima AST: https://github.com/eslint/espree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066597</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-03 15:20:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/19707119&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066694</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-03 18:32:37 -0800</bug_when>
    <thetext>It looks like Esprima&apos;s harmony branch has more ES6 features than espree right now, so lets merge it in instead. We can reevaluate switching to espree later.

https://github.com/jquery/esprima/tree/harmony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066989</commentid>
    <comment_count>3</comment_count>
      <attachid>246068</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-04 16:53:08 -0800</bug_when>
    <thetext>Created attachment 246068
patch

almost there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066993</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-04 17:00:51 -0800</bug_when>
    <thetext>what is left:
1. Run tests
2. Write more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068228</commentid>
    <comment_count>5</comment_count>
      <attachid>246365</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-10 18:52:18 -0800</bug_when>
    <thetext>Created attachment 246365
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068231</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-10 18:54:40 -0800</bug_when>
    <thetext>To note, this upstream esprima does not yet parse the following statement correctly:
&quot;for ({x,y} of foo) bar();&quot;

It only supports:
&quot;for (var {x,y} of foo) bar();&quot;

Since we&apos;re switching to a non-release build of esprima, it&apos;s
probably worth merging in uptream esprima&apos;s more often. Maybe once
every 3-4 weeks until they have an official ES6 release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070232</commentid>
    <comment_count>7</comment_count>
      <attachid>246365</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-02-18 14:34:39 -0800</bug_when>
    <thetext>Comment on attachment 246365
patch

Looks good. Nice use of Symbol. We should consider it for all our enums.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070611</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-02-19 22:35:09 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/180388</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246068</attachid>
            <date>2015-02-04 16:53:08 -0800</date>
            <delta_ts>2015-02-10 18:52:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>204249</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1R5
cGVUb2tlbkFubm90YXRvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3IuanMJKHJldmlzaW9u
IDE3OTY1MSkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1R5cGVUb2tlbkFubm90YXRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNiBA
QCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuQW5ub3RhdG9yLnByb3RvdHlwCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhbGxOb2Rlc0luUmFuZ2UuZm9yRWFjaCh0aGlzLl9p
bnNlcnRUeXBlVG9rZW5zRm9yRWFjaE5vZGUsIHRoaXMpOwotICAgICAgICAgICAgYWxsTm9kZXNJ
blJhbmdlLmZvckVhY2godGhpcy5fdXBkYXRlVHlwZVRva2Vuc0ZvckVhY2hOb2RlLCB0aGlzKTsK
IAogICAgICAgICAgICAgdmFyIHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7CiAg
ICAgICAgICAgICB2YXIgdGltZW91dFRpbWUgPSBNYXRoLm1pbihNYXRoLm1heCg3NTAwLCB0b3Rh
bFRpbWUpLCA4ICogdG90YWxUaW1lKTsKQEAgLTk3LDYgKzk2LDkgQEAgV2ViSW5zcGVjdG9yLlR5
cGVUb2tlbkFubm90YXRvci5wcm90b3R5cAogICAgICAgICAgICAgZm9yICh2YXIgcGFyYW0gb2Yg
bm9kZS5wYXJhbXMpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtLmF0dGFjaG1lbnRzLl9f
dHlwZVRva2VuICYmIHBhcmFtLmF0dGFjaG1lbnRzLnR5cGVzICYmIHBhcmFtLmF0dGFjaG1lbnRz
LnR5cGVzLmlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydFRva2VuKHBh
cmFtLnJhbmdlWzBdLCBwYXJhbSwgZmFsc2UsIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LlRp
dGxlVHlwZS5WYXJpYWJsZSwgcGFyYW0ubmFtZSk7CisKKyAgICAgICAgICAgICAgICBpZiAocGFy
YW0uYXR0YWNobWVudHMuX190eXBlVG9rZW4pCisgICAgICAgICAgICAgICAgICAgIHBhcmFtLmF0
dGFjaG1lbnRzLl9fdHlwZVRva2VuLnVwZGF0ZShwYXJhbS5hdHRhY2htZW50cy50eXBlcyk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIElmIGEgZnVuY3Rpb24gZG9lcyBub3QgaGF2
ZSBhbiBleHBsaWNpdCByZXR1cm4gdHlwZSwgdGhlbiBkb24ndCBzaG93IGEgcmV0dXJuIHR5cGUg
dW5sZXNzIHdlIHRoaW5rIGl0J3MgYSBjb25zdHJ1Y3Rvci4KQEAgLTEwNiwxMyArMTA4LDIyIEBA
IFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJvdG90eXAKIAogICAgICAgICAgICAg
aWYgKHNjcmlwdFN5bnRheFRyZWUuY29udGFpbnNOb25FbXB0eVJldHVyblN0YXRlbWVudChub2Rl
LmJvZHkpIHx8ICFXZWJJbnNwZWN0b3IuVHlwZVNldC5mcm9tUGF5bG9hZChmdW5jdGlvblJldHVy
blR5cGUpLmlzQ29udGFpbmVkSW4oV2ViSW5zcGVjdG9yLlR5cGVTZXQuVHlwZUJpdC5VbmRlZmlu
ZWQpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGZ1bmN0aW9uTmFtZSA9IG5vZGUuaWQgPyBub2Rl
LmlkLm5hbWUgOiBudWxsOwotICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydFRva2VuKG5vZGUu
aXNHZXR0ZXJPclNldHRlciA/IG5vZGUuZ2V0dGVyT3JTZXR0ZXJSYW5nZVswXSA6IG5vZGUucmFu
Z2VbMF0sIG5vZGUsCi0gICAgICAgICAgICAgICAgICAgIHRydWUsIFdlYkluc3BlY3Rvci5UeXBl
VG9rZW5WaWV3LlRpdGxlVHlwZS5SZXR1cm5TdGF0ZW1lbnQsIGZ1bmN0aW9uTmFtZSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5faW5zZXJ0VG9rZW4obm9kZS5pc0dldHRlck9yU2V0dGVyID8gbm9k
ZS5nZXR0ZXJPclNldHRlclJhbmdlWzBdIDogbm9kZS5yYW5nZVswXSwgbm9kZSwgdHJ1ZSwgV2Vi
SW5zcGVjdG9yLlR5cGVUb2tlblZpZXcuVGl0bGVUeXBlLlJldHVyblN0YXRlbWVudCwgZnVuY3Rp
b25OYW1lKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5vZGUuYXR0YWNobWVu
dHMuX190eXBlVG9rZW4pCisgICAgICAgICAgICAgICAgbm9kZS5hdHRhY2htZW50cy5fX3R5cGVU
b2tlbi51cGRhdGUobm9kZS5hdHRhY2htZW50cy5yZXR1cm5UeXBlcyk7CisKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVU
eXBlLlZhcmlhYmxlRGVjbGFyYXRvcjoKLSAgICAgICAgICAgIGlmICghbm9kZS5hdHRhY2htZW50
cy5fX3R5cGVUb2tlbiAmJiBub2RlLmF0dGFjaG1lbnRzLnR5cGVzICYmIG5vZGUuYXR0YWNobWVu
dHMudHlwZXMuaXNWYWxpZCkKLSAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRUb2tlbihub2Rl
LmlkLnJhbmdlWzBdLCBub2RlLCBmYWxzZSwgV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcuVGl0
bGVUeXBlLlZhcmlhYmxlLCBub2RlLmlkLm5hbWUpOworICAgICAgICAgICAgdmFyIGlkZW50aWZp
ZXJzID0gc2NyaXB0U3ludGF4VHJlZS5nYXRoZXJJZGVudGlmaWVyc0luVmFyRGVjbGFyYXRvcihu
b2RlKTsKKyAgICAgICAgICAgIGZvciAoaWRlbnRpZmllciBvZiBpZGVudGlmaWVycykgeworICAg
ICAgICAgICAgICAgIGlmICghaWRlbnRpZmllci5hdHRhY2htZW50cy5fX3R5cGVUb2tlbiAmJiBp
ZGVudGlmaWVyLmF0dGFjaG1lbnRzLnR5cGVzICYmIGlkZW50aWZpZXIuYXR0YWNobWVudHMudHlw
ZXMuaXNWYWxpZCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0VG9rZW4oaWRlbnRp
Zmllci5yYW5nZVswXSwgaWRlbnRpZmllciwgZmFsc2UsIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5W
aWV3LlRpdGxlVHlwZS5WYXJpYWJsZSwgaWRlbnRpZmllci5uYW1lKTsKKworICAgICAgICAgICAg
ICAgIGlmIChpZGVudGlmaWVyLmF0dGFjaG1lbnRzLl9fdHlwZVRva2VuKQorICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyLmF0dGFjaG1lbnRzLl9fdHlwZVRva2VuLnVwZGF0ZShpZGVudGlm
aWVyLmF0dGFjaG1lbnRzLnR5cGVzKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTE0MywyNSArMTU0LDYgQEAgV2ViSW5zcGVjdG9yLlR5cGVUb2tl
bkFubm90YXRvci5wcm90b3R5cAogICAgICAgICB0aGlzLl90eXBlVG9rZW5Cb29rbWFya3MucHVz
aChib29rbWFyayk7CiAgICAgfSwKIAotICAgIF91cGRhdGVUeXBlVG9rZW5zRm9yRWFjaE5vZGU6
IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkgewotICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9u
RGVjbGFyYXRpb246Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUu
Tm9kZVR5cGUuRnVuY3Rpb25FeHByZXNzaW9uOgotICAgICAgICAgICAgbm9kZS5wYXJhbXMuZm9y
RWFjaChmdW5jdGlvbihwYXJhbSkgewotICAgICAgICAgICAgICAgIGlmIChwYXJhbS5hdHRhY2ht
ZW50cy5fX3R5cGVUb2tlbikKLSAgICAgICAgICAgICAgICAgICAgcGFyYW0uYXR0YWNobWVudHMu
X190eXBlVG9rZW4udXBkYXRlKHBhcmFtLmF0dGFjaG1lbnRzLnR5cGVzKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgaWYgKG5vZGUuYXR0YWNobWVudHMuX190eXBlVG9rZW4pCi0gICAg
ICAgICAgICAgICAgbm9kZS5hdHRhY2htZW50cy5fX3R5cGVUb2tlbi51cGRhdGUobm9kZS5hdHRh
Y2htZW50cy5yZXR1cm5UeXBlcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5WYXJpYWJsZURlY2xhcmF0b3I6
Ci0gICAgICAgICAgICBpZiAobm9kZS5hdHRhY2htZW50cy5fX3R5cGVUb2tlbikKLSAgICAgICAg
ICAgICAgICBub2RlLmF0dGFjaG1lbnRzLl9fdHlwZVRva2VuLnVwZGF0ZShub2RlLmF0dGFjaG1l
bnRzLnR5cGVzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSwKLQogICAg
IF90cmFuc2xhdGVUb09mZnNldEFmdGVyRnVuY3Rpb25QYXJhbWV0ZXJMaXN0OiBmdW5jdGlvbihu
b2RlLCBvZmZzZXQsIHNvdXJjZVN0cmluZykKICAgICB7CiAgICAgICAgIC8vIFRoZSBhc3N1bXB0
aW9uIGhlcmUgaXMgdGhhdCB3ZSBnZXQgdGhlIG9mZnNldCBzdGFydGluZyBhdCB0aGUgZnVuY3Rp
b24ga2V5d29yZCAob3IgYWZ0ZXIgdGhlIGdldC9zZXQga2V5d29yZHMpLgpJbmRleDogU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1hLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVy
bmFsL0VzcHJpbWEvZXNwcmltYS5qcwkocmV2aXNpb24gMTc5NjUxKQorKysgU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1hLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNiBAQAogLyoKICAgQ29weXJpZ2h0IChDKSAyMDEzIEFyaXlh
IEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPgogICBDb3B5cmlnaHQgKEMpIDIwMTMg
VGhhZGRlZSBUeWwgPHRoYWRkZWUudHlsQGdtYWlsLmNvbT4KLSAgQ29weXJpZ2h0IChDKSAyMDEz
IE1hdGhpYXMgQnluZW5zIDxtYXRoaWFzQHFpd2kuYmU+CiAgIENvcHlyaWdodCAoQykgMjAxMiBB
cml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT4KICAgQ29weXJpZ2h0IChDKSAy
MDEyIE1hdGhpYXMgQnluZW5zIDxtYXRoaWFzQHFpd2kuYmU+CiAgIENvcHlyaWdodCAoQykgMjAx
MiBKb29zdC1XaW0gQm9la2VzdGVpam4gPGpvb3N0LXdpbUBib2VrZXN0ZWlqbi5ubD4KQEAgLTMx
LDE3ICszMCw2IEBACiAgIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqLwogCi0vKmpzbGludCBiaXR3aXNlOnRydWUgcGx1
c3BsdXM6dHJ1ZSAqLwotLypnbG9iYWwgZXNwcmltYTp0cnVlLCBkZWZpbmU6dHJ1ZSwgZXhwb3J0
czp0cnVlLCB3aW5kb3c6IHRydWUsCi10aHJvd0Vycm9yVG9sZXJhbnQ6IHRydWUsCi10aHJvd0Vy
cm9yOiB0cnVlLCBnZW5lcmF0ZVN0YXRlbWVudDogdHJ1ZSwgcGVlazogdHJ1ZSwKLXBhcnNlQXNz
aWdubWVudEV4cHJlc3Npb246IHRydWUsIHBhcnNlQmxvY2s6IHRydWUsIHBhcnNlRXhwcmVzc2lv
bjogdHJ1ZSwKLXBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbjogdHJ1ZSwgcGFyc2VGdW5jdGlvbkV4
cHJlc3Npb246IHRydWUsCi1wYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHM6IHRydWUsIHBhcnNl
VmFyaWFibGVJZGVudGlmaWVyOiB0cnVlLAotcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uOiB0
cnVlLAotcGFyc2VVbmFyeUV4cHJlc3Npb246IHRydWUsCi1wYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50OiB0cnVlICovCi0KIChmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkg
ewogICAgICd1c2Ugc3RyaWN0JzsKIApAQCAtNjcsNiArNTUsNyBAQCBwYXJzZVN0YXRlbWVudDog
dHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIE1lc3NhZ2VzLAogICAgICAgICBSZWdl
eCwKICAgICAgICAgU3ludGF4VHJlZURlbGVnYXRlLAorICAgICAgICBDbGFzc1Byb3BlcnR5VHlw
ZSwKICAgICAgICAgc291cmNlLAogICAgICAgICBzdHJpY3QsCiAgICAgICAgIGluZGV4LApAQCAt
ODcsNyArNzYsOCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAg
ICAgICAgIE51bWVyaWNMaXRlcmFsOiA2LAogICAgICAgICBQdW5jdHVhdG9yOiA3LAogICAgICAg
ICBTdHJpbmdMaXRlcmFsOiA4LAotICAgICAgICBSZWd1bGFyRXhwcmVzc2lvbjogOQorICAgICAg
ICBSZWd1bGFyRXhwcmVzc2lvbjogOSwKKyAgICAgICAgVGVtcGxhdGU6IDEwCiAgICAgfTsKIAog
ICAgIFRva2VuTmFtZSA9IHt9OwpAQCAtMTEzLDM3ICsxMDMsNTkgQEAgcGFyc2VTdGF0ZW1lbnQ6
IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAnPD0nLCAnPCcs
ICc+JywgJyE9JywgJyE9PSddOwogCiAgICAgU3ludGF4ID0gewotICAgICAgICBBc3NpZ25tZW50
RXhwcmVzc2lvbjogJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJywKICAgICAgICAgQXJyYXlFeHByZXNz
aW9uOiAnQXJyYXlFeHByZXNzaW9uJywKLSAgICAgICAgQmxvY2tTdGF0ZW1lbnQ6ICdCbG9ja1N0
YXRlbWVudCcsCisgICAgICAgIEFycmF5UGF0dGVybjogJ0FycmF5UGF0dGVybicsCisgICAgICAg
IEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nLAorICAg
ICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbjogJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJywKICAgICAg
ICAgQmluYXJ5RXhwcmVzc2lvbjogJ0JpbmFyeUV4cHJlc3Npb24nLAorICAgICAgICBCbG9ja1N0
YXRlbWVudDogJ0Jsb2NrU3RhdGVtZW50JywKICAgICAgICAgQnJlYWtTdGF0ZW1lbnQ6ICdCcmVh
a1N0YXRlbWVudCcsCiAgICAgICAgIENhbGxFeHByZXNzaW9uOiAnQ2FsbEV4cHJlc3Npb24nLAog
ICAgICAgICBDYXRjaENsYXVzZTogJ0NhdGNoQ2xhdXNlJywKKyAgICAgICAgQ2xhc3NCb2R5OiAn
Q2xhc3NCb2R5JywKKyAgICAgICAgQ2xhc3NEZWNsYXJhdGlvbjogJ0NsYXNzRGVjbGFyYXRpb24n
LAorICAgICAgICBDbGFzc0V4cHJlc3Npb246ICdDbGFzc0V4cHJlc3Npb24nLAorICAgICAgICBD
b21wcmVoZW5zaW9uQmxvY2s6ICdDb21wcmVoZW5zaW9uQmxvY2snLAorICAgICAgICBDb21wcmVo
ZW5zaW9uRXhwcmVzc2lvbjogJ0NvbXByZWhlbnNpb25FeHByZXNzaW9uJywKICAgICAgICAgQ29u
ZGl0aW9uYWxFeHByZXNzaW9uOiAnQ29uZGl0aW9uYWxFeHByZXNzaW9uJywKICAgICAgICAgQ29u
dGludWVTdGF0ZW1lbnQ6ICdDb250aW51ZVN0YXRlbWVudCcsCi0gICAgICAgIERvV2hpbGVTdGF0
ZW1lbnQ6ICdEb1doaWxlU3RhdGVtZW50JywKICAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnQ6ICdE
ZWJ1Z2dlclN0YXRlbWVudCcsCisgICAgICAgIERvV2hpbGVTdGF0ZW1lbnQ6ICdEb1doaWxlU3Rh
dGVtZW50JywKICAgICAgICAgRW1wdHlTdGF0ZW1lbnQ6ICdFbXB0eVN0YXRlbWVudCcsCisgICAg
ICAgIEV4cG9ydERlY2xhcmF0aW9uOiAnRXhwb3J0RGVjbGFyYXRpb24nLAorICAgICAgICBFeHBv
cnRCYXRjaFNwZWNpZmllcjogJ0V4cG9ydEJhdGNoU3BlY2lmaWVyJywKKyAgICAgICAgRXhwb3J0
U3BlY2lmaWVyOiAnRXhwb3J0U3BlY2lmaWVyJywKICAgICAgICAgRXhwcmVzc2lvblN0YXRlbWVu
dDogJ0V4cHJlc3Npb25TdGF0ZW1lbnQnLAotICAgICAgICBGb3JTdGF0ZW1lbnQ6ICdGb3JTdGF0
ZW1lbnQnLAogICAgICAgICBGb3JJblN0YXRlbWVudDogJ0ZvckluU3RhdGVtZW50JywKKyAgICAg
ICAgRm9yT2ZTdGF0ZW1lbnQ6ICdGb3JPZlN0YXRlbWVudCcsCisgICAgICAgIEZvclN0YXRlbWVu
dDogJ0ZvclN0YXRlbWVudCcsCiAgICAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246ICdGdW5jdGlv
bkRlY2xhcmF0aW9uJywKICAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiAnRnVuY3Rpb25FeHBy
ZXNzaW9uJywKICAgICAgICAgSWRlbnRpZmllcjogJ0lkZW50aWZpZXInLAogICAgICAgICBJZlN0
YXRlbWVudDogJ0lmU3RhdGVtZW50JywKLSAgICAgICAgTGl0ZXJhbDogJ0xpdGVyYWwnLAorICAg
ICAgICBJbXBvcnREZWNsYXJhdGlvbjogJ0ltcG9ydERlY2xhcmF0aW9uJywKKyAgICAgICAgSW1w
b3J0RGVmYXVsdFNwZWNpZmllcjogJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInLAorICAgICAgICBJ
bXBvcnROYW1lc3BhY2VTcGVjaWZpZXI6ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInLAorICAg
ICAgICBJbXBvcnRTcGVjaWZpZXI6ICdJbXBvcnRTcGVjaWZpZXInLAogICAgICAgICBMYWJlbGVk
U3RhdGVtZW50OiAnTGFiZWxlZFN0YXRlbWVudCcsCisgICAgICAgIExpdGVyYWw6ICdMaXRlcmFs
JywKICAgICAgICAgTG9naWNhbEV4cHJlc3Npb246ICdMb2dpY2FsRXhwcmVzc2lvbicsCiAgICAg
ICAgIE1lbWJlckV4cHJlc3Npb246ICdNZW1iZXJFeHByZXNzaW9uJywKKyAgICAgICAgTWV0aG9k
RGVmaW5pdGlvbjogJ01ldGhvZERlZmluaXRpb24nLAorICAgICAgICBNb2R1bGVTcGVjaWZpZXI6
ICdNb2R1bGVTcGVjaWZpZXInLAogICAgICAgICBOZXdFeHByZXNzaW9uOiAnTmV3RXhwcmVzc2lv
bicsCiAgICAgICAgIE9iamVjdEV4cHJlc3Npb246ICdPYmplY3RFeHByZXNzaW9uJywKKyAgICAg
ICAgT2JqZWN0UGF0dGVybjogJ09iamVjdFBhdHRlcm4nLAogICAgICAgICBQcm9ncmFtOiAnUHJv
Z3JhbScsCiAgICAgICAgIFByb3BlcnR5OiAnUHJvcGVydHknLAogICAgICAgICBSZXR1cm5TdGF0
ZW1lbnQ6ICdSZXR1cm5TdGF0ZW1lbnQnLAogICAgICAgICBTZXF1ZW5jZUV4cHJlc3Npb246ICdT
ZXF1ZW5jZUV4cHJlc3Npb24nLAotICAgICAgICBTd2l0Y2hTdGF0ZW1lbnQ6ICdTd2l0Y2hTdGF0
ZW1lbnQnLAorICAgICAgICBTcHJlYWRFbGVtZW50OiAnU3ByZWFkRWxlbWVudCcsCiAgICAgICAg
IFN3aXRjaENhc2U6ICdTd2l0Y2hDYXNlJywKKyAgICAgICAgU3dpdGNoU3RhdGVtZW50OiAnU3dp
dGNoU3RhdGVtZW50JywKKyAgICAgICAgVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uOiAnVGFnZ2Vk
VGVtcGxhdGVFeHByZXNzaW9uJywKKyAgICAgICAgVGVtcGxhdGVFbGVtZW50OiAnVGVtcGxhdGVF
bGVtZW50JywKKyAgICAgICAgVGVtcGxhdGVMaXRlcmFsOiAnVGVtcGxhdGVMaXRlcmFsJywKICAg
ICAgICAgVGhpc0V4cHJlc3Npb246ICdUaGlzRXhwcmVzc2lvbicsCiAgICAgICAgIFRocm93U3Rh
dGVtZW50OiAnVGhyb3dTdGF0ZW1lbnQnLAogICAgICAgICBUcnlTdGF0ZW1lbnQ6ICdUcnlTdGF0
ZW1lbnQnLApAQCAtMTUyLDcgKzE2NCw4IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNv
dXJjZUVsZW1lbnQKICAgICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogJ1ZhcmlhYmxlRGVjbGFy
YXRpb24nLAogICAgICAgICBWYXJpYWJsZURlY2xhcmF0b3I6ICdWYXJpYWJsZURlY2xhcmF0b3In
LAogICAgICAgICBXaGlsZVN0YXRlbWVudDogJ1doaWxlU3RhdGVtZW50JywKLSAgICAgICAgV2l0
aFN0YXRlbWVudDogJ1dpdGhTdGF0ZW1lbnQnCisgICAgICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRo
U3RhdGVtZW50JywKKyAgICAgICAgWWllbGRFeHByZXNzaW9uOiAnWWllbGRFeHByZXNzaW9uJwog
ICAgIH07CiAKICAgICBQcm9wZXJ0eUtpbmQgPSB7CkBAIC0xNjEsNDcgKzE3NCw3MiBAQCBwYXJz
ZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIFNldDogNAogICAg
IH07CiAKKyAgICBDbGFzc1Byb3BlcnR5VHlwZSA9IHsKKyAgICAgICAgJ3N0YXRpYyc6ICdzdGF0
aWMnLAorICAgICAgICBwcm90b3R5cGU6ICdwcm90b3R5cGUnCisgICAgfTsKKwogICAgIC8vIEVy
cm9yIG1lc3NhZ2VzIHNob3VsZCBiZSBpZGVudGljYWwgdG8gVjguCiAgICAgTWVzc2FnZXMgPSB7
Ci0gICAgICAgIFVuZXhwZWN0ZWRUb2tlbjogICdVbmV4cGVjdGVkIHRva2VuICUwJywKLSAgICAg
ICAgVW5leHBlY3RlZE51bWJlcjogICdVbmV4cGVjdGVkIG51bWJlcicsCi0gICAgICAgIFVuZXhw
ZWN0ZWRTdHJpbmc6ICAnVW5leHBlY3RlZCBzdHJpbmcnLAotICAgICAgICBVbmV4cGVjdGVkSWRl
bnRpZmllcjogICdVbmV4cGVjdGVkIGlkZW50aWZpZXInLAotICAgICAgICBVbmV4cGVjdGVkUmVz
ZXJ2ZWQ6ICAnVW5leHBlY3RlZCByZXNlcnZlZCB3b3JkJywKLSAgICAgICAgVW5leHBlY3RlZEVP
UzogICdVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCcsCi0gICAgICAgIE5ld2xpbmVBZnRlclRocm93
OiAgJ0lsbGVnYWwgbmV3bGluZSBhZnRlciB0aHJvdycsCisgICAgICAgIFVuZXhwZWN0ZWRUb2tl
bjogJ1VuZXhwZWN0ZWQgdG9rZW4gJTAnLAorICAgICAgICBVbmV4cGVjdGVkTnVtYmVyOiAnVW5l
eHBlY3RlZCBudW1iZXInLAorICAgICAgICBVbmV4cGVjdGVkU3RyaW5nOiAnVW5leHBlY3RlZCBz
dHJpbmcnLAorICAgICAgICBVbmV4cGVjdGVkSWRlbnRpZmllcjogJ1VuZXhwZWN0ZWQgaWRlbnRp
ZmllcicsCisgICAgICAgIFVuZXhwZWN0ZWRSZXNlcnZlZDogJ1VuZXhwZWN0ZWQgcmVzZXJ2ZWQg
d29yZCcsCisgICAgICAgIFVuZXhwZWN0ZWRUZW1wbGF0ZTogJ1VuZXhwZWN0ZWQgcXVhc2kgJTAn
LAorICAgICAgICBVbmV4cGVjdGVkRU9TOiAnVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQnLAorICAg
ICAgICBOZXdsaW5lQWZ0ZXJUaHJvdzogJ0lsbGVnYWwgbmV3bGluZSBhZnRlciB0aHJvdycsCiAg
ICAgICAgIEludmFsaWRSZWdFeHA6ICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbicsCi0gICAg
ICAgIFVudGVybWluYXRlZFJlZ0V4cDogICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogbWlz
c2luZyAvJywKLSAgICAgICAgSW52YWxpZExIU0luQXNzaWdubWVudDogICdJbnZhbGlkIGxlZnQt
aGFuZCBzaWRlIGluIGFzc2lnbm1lbnQnLAotICAgICAgICBJbnZhbGlkTEhTSW5Gb3JJbjogICdJ
bnZhbGlkIGxlZnQtaGFuZCBzaWRlIGluIGZvci1pbicsCisgICAgICAgIFVudGVybWluYXRlZFJl
Z0V4cDogJ0ludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBtaXNzaW5nIC8nLAorICAgICAgICBJ
bnZhbGlkTEhTSW5Bc3NpZ25tZW50OiAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBhc3NpZ25t
ZW50JywKKyAgICAgICAgSW52YWxpZExIU0luRm9ybWFsc0xpc3Q6ICdJbnZhbGlkIGxlZnQtaGFu
ZCBzaWRlIGluIGZvcm1hbHMgbGlzdCcsCisgICAgICAgIEludmFsaWRMSFNJbkZvckluOiAnSW52
YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBmb3ItaW4nLAogICAgICAgICBNdWx0aXBsZURlZmF1bHRz
SW5Td2l0Y2g6ICdNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBzdGF0ZW1l
bnQnLAotICAgICAgICBOb0NhdGNoT3JGaW5hbGx5OiAgJ01pc3NpbmcgY2F0Y2ggb3IgZmluYWxs
eSBhZnRlciB0cnknLAorICAgICAgICBOb0NhdGNoT3JGaW5hbGx5OiAnTWlzc2luZyBjYXRjaCBv
ciBmaW5hbGx5IGFmdGVyIHRyeScsCiAgICAgICAgIFVua25vd25MYWJlbDogJ1VuZGVmaW5lZCBs
YWJlbCBcJyUwXCcnLAogICAgICAgICBSZWRlY2xhcmF0aW9uOiAnJTAgXCclMVwnIGhhcyBhbHJl
YWR5IGJlZW4gZGVjbGFyZWQnLAogICAgICAgICBJbGxlZ2FsQ29udGludWU6ICdJbGxlZ2FsIGNv
bnRpbnVlIHN0YXRlbWVudCcsCiAgICAgICAgIElsbGVnYWxCcmVhazogJ0lsbGVnYWwgYnJlYWsg
c3RhdGVtZW50JywKKyAgICAgICAgSWxsZWdhbER1cGxpY2F0ZUNsYXNzUHJvcGVydHk6ICdJbGxl
Z2FsIGR1cGxpY2F0ZSBwcm9wZXJ0eSBpbiBjbGFzcyBkZWZpbml0aW9uJywKKyAgICAgICAgSWxs
ZWdhbENsYXNzQ29uc3RydWN0b3JQcm9wZXJ0eTogJ0lsbGVnYWwgY29uc3RydWN0b3IgcHJvcGVy
dHkgaW4gY2xhc3MgZGVmaW5pdGlvbicsCiAgICAgICAgIElsbGVnYWxSZXR1cm46ICdJbGxlZ2Fs
IHJldHVybiBzdGF0ZW1lbnQnLAotICAgICAgICBTdHJpY3RNb2RlV2l0aDogICdTdHJpY3QgbW9k
ZSBjb2RlIG1heSBub3QgaW5jbHVkZSBhIHdpdGggc3RhdGVtZW50JywKLSAgICAgICAgU3RyaWN0
Q2F0Y2hWYXJpYWJsZTogICdDYXRjaCB2YXJpYWJsZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1l
bnRzIGluIHN0cmljdCBtb2RlJywKLSAgICAgICAgU3RyaWN0VmFyTmFtZTogICdWYXJpYWJsZSBu
YW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4gc3RyaWN0IG1vZGUnLAotICAgICAg
ICBTdHJpY3RQYXJhbU5hbWU6ICAnUGFyYW1ldGVyIG5hbWUgZXZhbCBvciBhcmd1bWVudHMgaXMg
bm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLAorICAgICAgICBJbGxlZ2FsWWllbGQ6ICdJbGxl
Z2FsIHlpZWxkIGV4cHJlc3Npb24nLAorICAgICAgICBJbGxlZ2FsU3ByZWFkOiAnSWxsZWdhbCBz
cHJlYWQgZWxlbWVudCcsCisgICAgICAgIFN0cmljdE1vZGVXaXRoOiAnU3RyaWN0IG1vZGUgY29k
ZSBtYXkgbm90IGluY2x1ZGUgYSB3aXRoIHN0YXRlbWVudCcsCisgICAgICAgIFN0cmljdENhdGNo
VmFyaWFibGU6ICdDYXRjaCB2YXJpYWJsZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRzIGlu
IHN0cmljdCBtb2RlJywKKyAgICAgICAgU3RyaWN0VmFyTmFtZTogJ1ZhcmlhYmxlIG5hbWUgbWF5
IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsCisgICAgICAgIFN0cmlj
dFBhcmFtTmFtZTogJ1BhcmFtZXRlciBuYW1lIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxv
d2VkIGluIHN0cmljdCBtb2RlJywKICAgICAgICAgU3RyaWN0UGFyYW1EdXBlOiAnU3RyaWN0IG1v
ZGUgZnVuY3Rpb24gbWF5IG5vdCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMnLAotICAg
ICAgICBTdHJpY3RGdW5jdGlvbk5hbWU6ICAnRnVuY3Rpb24gbmFtZSBtYXkgbm90IGJlIGV2YWwg
b3IgYXJndW1lbnRzIGluIHN0cmljdCBtb2RlJywKLSAgICAgICAgU3RyaWN0T2N0YWxMaXRlcmFs
OiAgJ09jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS4nLAotICAg
ICAgICBTdHJpY3REZWxldGU6ICAnRGVsZXRlIG9mIGFuIHVucXVhbGlmaWVkIGlkZW50aWZpZXIg
aW4gc3RyaWN0IG1vZGUuJywKLSAgICAgICAgU3RyaWN0RHVwbGljYXRlUHJvcGVydHk6ICAnRHVw
bGljYXRlIGRhdGEgcHJvcGVydHkgaW4gb2JqZWN0IGxpdGVyYWwgbm90IGFsbG93ZWQgaW4gc3Ry
aWN0IG1vZGUnLAotICAgICAgICBBY2Nlc3NvckRhdGFQcm9wZXJ0eTogICdPYmplY3QgbGl0ZXJh
bCBtYXkgbm90IGhhdmUgZGF0YSBhbmQgYWNjZXNzb3IgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBu
YW1lJywKLSAgICAgICAgQWNjZXNzb3JHZXRTZXQ6ICAnT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBo
YXZlIG11bHRpcGxlIGdldC9zZXQgYWNjZXNzb3JzIHdpdGggdGhlIHNhbWUgbmFtZScsCi0gICAg
ICAgIFN0cmljdExIU0Fzc2lnbm1lbnQ6ICAnQXNzaWdubWVudCB0byBldmFsIG9yIGFyZ3VtZW50
cyBpcyBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZScsCi0gICAgICAgIFN0cmljdExIU1Bvc3Rm
aXg6ICAnUG9zdGZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFy
Z3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlJywKLSAgICAgICAgU3RyaWN0TEhTUHJlZml4
OiAgJ1ByZWZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3Vt
ZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlJywKLSAgICAgICAgU3RyaWN0UmVzZXJ2ZWRXb3Jk
OiAgJ1VzZSBvZiBmdXR1cmUgcmVzZXJ2ZWQgd29yZCBpbiBzdHJpY3QgbW9kZScKKyAgICAgICAg
UGFyYW1ldGVyQWZ0ZXJSZXN0UGFyYW1ldGVyOiAnUmVzdCBwYXJhbWV0ZXIgbXVzdCBiZSBmaW5h
bCBwYXJhbWV0ZXIgb2YgYW4gYXJndW1lbnQgbGlzdCcsCisgICAgICAgIERlZmF1bHRSZXN0UGFy
YW1ldGVyOiAnUmVzdCBwYXJhbWV0ZXIgY2FuIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZScsCisg
ICAgICAgIEVsZW1lbnRBZnRlclNwcmVhZEVsZW1lbnQ6ICdTcHJlYWQgbXVzdCBiZSB0aGUgZmlu
YWwgZWxlbWVudCBvZiBhbiBlbGVtZW50IGxpc3QnLAorICAgICAgICBPYmplY3RQYXR0ZXJuQXNS
ZXN0UGFyYW1ldGVyOiAnSW52YWxpZCByZXN0IHBhcmFtZXRlcicsCisgICAgICAgIE9iamVjdFBh
dHRlcm5Bc1NwcmVhZDogJ0ludmFsaWQgc3ByZWFkIGFyZ3VtZW50JywKKyAgICAgICAgU3RyaWN0
RnVuY3Rpb25OYW1lOiAnRnVuY3Rpb24gbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1lbnRz
IGluIHN0cmljdCBtb2RlJywKKyAgICAgICAgU3RyaWN0T2N0YWxMaXRlcmFsOiAnT2N0YWwgbGl0
ZXJhbHMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlLicsCisgICAgICAgIFN0cmljdERl
bGV0ZTogJ0RlbGV0ZSBvZiBhbiB1bnF1YWxpZmllZCBpZGVudGlmaWVyIGluIHN0cmljdCBtb2Rl
LicsCisgICAgICAgIFN0cmljdER1cGxpY2F0ZVByb3BlcnR5OiAnRHVwbGljYXRlIGRhdGEgcHJv
cGVydHkgaW4gb2JqZWN0IGxpdGVyYWwgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLAorICAg
ICAgICBBY2Nlc3NvckRhdGFQcm9wZXJ0eTogJ09iamVjdCBsaXRlcmFsIG1heSBub3QgaGF2ZSBk
YXRhIGFuZCBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIG5hbWUnLAorICAgICAgICBB
Y2Nlc3NvckdldFNldDogJ09iamVjdCBsaXRlcmFsIG1heSBub3QgaGF2ZSBtdWx0aXBsZSBnZXQv
c2V0IGFjY2Vzc29ycyB3aXRoIHRoZSBzYW1lIG5hbWUnLAorICAgICAgICBTdHJpY3RMSFNBc3Np
Z25tZW50OiAnQXNzaWdubWVudCB0byBldmFsIG9yIGFyZ3VtZW50cyBpcyBub3QgYWxsb3dlZCBp
biBzdHJpY3QgbW9kZScsCisgICAgICAgIFN0cmljdExIU1Bvc3RmaXg6ICdQb3N0Zml4IGluY3Jl
bWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwgb3IgYXJndW1lbnRzIG9wZXJhbmQgaW4g
c3RyaWN0IG1vZGUnLAorICAgICAgICBTdHJpY3RMSFNQcmVmaXg6ICdQcmVmaXggaW5jcmVtZW50
L2RlY3JlbWVudCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCBpbiBzdHJp
Y3QgbW9kZScsCisgICAgICAgIFN0cmljdFJlc2VydmVkV29yZDogJ1VzZSBvZiBmdXR1cmUgcmVz
ZXJ2ZWQgd29yZCBpbiBzdHJpY3QgbW9kZScsCisgICAgICAgIE1pc3NpbmdGcm9tQ2xhdXNlOiAn
TWlzc2luZyBmcm9tIGNsYXVzZScsCisgICAgICAgIE5vQXNBZnRlckltcG9ydE5hbWVzcGFjZTog
J01pc3NpbmcgYXMgYWZ0ZXIgaW1wb3J0IConLAorICAgICAgICBJbnZhbGlkTW9kdWxlU3BlY2lm
aWVyOiAnSW52YWxpZCBtb2R1bGUgc3BlY2lmaWVyJywKKyAgICAgICAgSWxsZWdhbEltcG9ydERl
Y2xhcmF0aW9uOiAnSWxsZWdhbCBpbXBvcnQgZGVjbGFyYXRpb24nLAorICAgICAgICBJbGxlZ2Fs
RXhwb3J0RGVjbGFyYXRpb246ICdJbGxlZ2FsIGV4cG9ydCBkZWNsYXJhdGlvbicsCisgICAgICAg
IE5vVW5pbnRpYWxpemVkQ29uc3Q6ICdDb25zdCBtdXN0IGJlIGluaXRpYWxpemVkJywKKyAgICAg
ICAgQ29tcHJlaGVuc2lvblJlcXVpcmVzQmxvY2s6ICdDb21wcmVoZW5zaW9uIG11c3QgaGF2ZSBh
dCBsZWFzdCBvbmUgYmxvY2snLAorICAgICAgICBDb21wcmVoZW5zaW9uRXJyb3I6ICdDb21wcmVo
ZW5zaW9uIEVycm9yJywKKyAgICAgICAgRWFjaE5vdEFsbG93ZWQ6ICdFYWNoIGlzIG5vdCBzdXBw
b3J0ZWQnCiAgICAgfTsKIAogICAgIC8vIFNlZSBhbHNvIHRvb2xzL2dlbmVyYXRlLXVuaWNvZGUt
cmVnZXgucHkuCiAgICAgUmVnZXggPSB7Ci0gICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclN0YXJ0
OiBuZXcgUmVnRXhwKCdbXHhBQVx4QjVceEJBXHhDMC1ceEQ2XHhEOC1ceEY2XHhGOC1cdTAyQzFc
dTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZc
dTAzNzdcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFc
dTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5
XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2
RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVcdTA2RUZcdTA2RkEt
XHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0Et
XHUwN0VBXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1
MDg0MC1cdTA4NThcdTA4QTBcdTA4QTItXHUwOEFDXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1
MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTc3XHUwOTc5LVx1MDk3Rlx1MDk4NS1cdTA5OENcdTA5OEZc
dTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMlx1MDlCNi1cdTA5QjlcdTA5QkRc
dTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUYwXHUwOUYxXHUwQTA1LVx1MEEwQVx1
MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUw
QTM2XHUwQTM4XHUwQTM5XHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE3Mi1cdTBBNzRcdTBBODUtXHUw
QThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUw
QUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEIwNS1cdTBCMENcdTBCMEZcdTBC
MTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBC
M0RcdTBCNUNcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjcxXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4
RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEz
XHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBcdTBDMDUtXHUwQzBDXHUwQzBF
LVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUwQzM1LVx1MEMzOVx1MEMzRFx1MEM1
OFx1MEM1OVx1MEM2MFx1MEM2MVx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENB
OFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0Yx
XHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRF
XHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIz
LVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQw
LVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1c
dTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1
MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRURDLVx1
MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1c
dTEwMkFcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1
MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXHUxMDhFXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1
MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEyNTZcdTEyNThc
dTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXHUxMkIy
LVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJE
OC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEzOEZcdTEzQTAtXHUx
M0Y0XHUxNDAxLVx1MTY2Q1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1
MTZFRS1cdTE2RjBcdTE3MDAtXHUxNzBDXHUxNzBFLVx1MTcxMVx1MTcyMC1cdTE3MzFcdTE3NDAt
XHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RD
XHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkx
Q1x1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlDMS1cdTE5QzdcdTFB
MDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUx
QjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1
MUM0Rlx1MUM1QS1cdTFDN0RcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGMVx1MUNGNVx1MUNGNlx1
MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgt
XHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAt
XHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQw
LVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFG
RkNcdTIwNzFcdTIwN0ZcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjEx
NVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEz
OVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTYwLVx1MjE4OFx1MkMwMC1cdTJD
MkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNcdTJE
MDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJE
QTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1
MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNS1c
dTMwMDdcdTMwMjEtXHUzMDI5XHUzMDMxLVx1MzAzNVx1MzAzOC1cdTMwM0NcdTMwNDEtXHUzMDk2
XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRFx1MzEz
MS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQjVcdTRFMDAtXHU5
RkNDXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVBNjEwLVx1QTYxRlx1
QTYyQVx1QTYyQlx1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjk3XHVBNkEwLVx1QTZFRlx1QTcxNy1c
dUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTc4RVx1QTc5MC1cdUE3OTNcdUE3QTAtXHVBN0FB
XHVBN0Y4LVx1QTgwMVx1QTgwMy1cdUE4MDVcdUE4MDctXHVBODBBXHVBODBDLVx1QTgyMlx1QTg0
MC1cdUE4NzNcdUE4ODItXHVBOEIzXHVBOEYyLVx1QThGN1x1QThGQlx1QTkwQS1cdUE5MjVcdUE5
MzAtXHVBOTQ2XHVBOTYwLVx1QTk3Q1x1QTk4NC1cdUE5QjJcdUE5Q0ZcdUFBMDAtXHVBQTI4XHVB
QTQwLVx1QUE0Mlx1QUE0NC1cdUFBNEJcdUFBNjAtXHVBQTc2XHVBQTdBXHVBQTgwLVx1QUFBRlx1
QUFCMVx1QUFCNVx1QUFCNlx1QUFCOS1cdUFBQkRcdUFBQzBcdUFBQzJcdUFBREItXHVBQUREXHVB
QUUwLVx1QUFFQVx1QUFGMi1cdUFBRjRcdUFCMDEtXHVBQjA2XHVBQjA5LVx1QUIwRVx1QUIxMS1c
dUFCMTZcdUFCMjAtXHVBQjI2XHVBQjI4LVx1QUIyRVx1QUJDMC1cdUFCRTJcdUFDMDAtXHVEN0Ez
XHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXHVGQTcwLVx1RkFEOVx1RkIw
MC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZC
MzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJE
My1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVG
RTc0XHVGRTc2LVx1RkVGQ1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1
RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdJyksCi0g
ICAgICAgIE5vbkFzY2lpSWRlbnRpZmllclBhcnQ6IG5ldyBSZWdFeHAoJ1tceEFBXHhCNVx4QkFc
eEMwLVx4RDZceEQ4LVx4RjZceEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUw
MkVDXHUwMkVFXHUwMzAwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0RcdTAzODZcdTAz
ODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgxXHUw
NDgzLVx1MDQ4N1x1MDQ4QS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1
MDU5MS1cdTA1QkRcdTA1QkZcdTA1QzFcdTA1QzJcdTA1QzRcdTA1QzVcdTA1QzdcdTA1RDAtXHUw
NUVBXHUwNUYwLVx1MDVGMlx1MDYxMC1cdTA2MUFcdTA2MjAtXHUwNjY5XHUwNjZFLVx1MDZEM1x1
MDZENS1cdTA2RENcdTA2REYtXHUwNkU4XHUwNkVBLVx1MDZGQ1x1MDZGRlx1MDcxMC1cdTA3NEFc
dTA3NEQtXHUwN0IxXHUwN0MwLVx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MkRcdTA4NDAtXHUwODVC
XHUwOEEwXHUwOEEyLVx1MDhBQ1x1MDhFNC1cdTA4RkVcdTA5MDAtXHUwOTYzXHUwOTY2LVx1MDk2
Rlx1MDk3MS1cdTA5NzdcdTA5NzktXHUwOTdGXHUwOTgxLVx1MDk4M1x1MDk4NS1cdTA5OENcdTA5
OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMlx1MDlCNi1cdTA5QjlcdTA5
QkMtXHUwOUM0XHUwOUM3XHUwOUM4XHUwOUNCLVx1MDlDRVx1MDlEN1x1MDlEQ1x1MDlERFx1MDlE
Ri1cdTA5RTNcdTA5RTYtXHUwOUYxXHUwQTAxLVx1MEEwM1x1MEEwNS1cdTBBMEFcdTBBMEZcdTBB
MTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEz
OFx1MEEzOVx1MEEzQ1x1MEEzRS1cdTBBNDJcdTBBNDdcdTBBNDhcdTBBNEItXHUwQTREXHUwQTUx
XHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE2Ni1cdTBBNzVcdTBBODEtXHUwQTgzXHUwQTg1LVx1MEE4
RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFC
NS1cdTBBQjlcdTBBQkMtXHUwQUM1XHUwQUM3LVx1MEFDOVx1MEFDQi1cdTBBQ0RcdTBBRDBcdTBB
RTAtXHUwQUUzXHUwQUU2LVx1MEFFRlx1MEIwMS1cdTBCMDNcdTBCMDUtXHUwQjBDXHUwQjBGXHUw
QjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUw
QjNDLVx1MEI0NFx1MEI0N1x1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTZcdTBCNTdcdTBCNUNcdTBC
NURcdTBCNUYtXHUwQjYzXHUwQjY2LVx1MEI2Rlx1MEI3MVx1MEI4Mlx1MEI4M1x1MEI4NS1cdTBC
OEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5
Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkJFLVx1MEJDMlx1MEJD
Ni1cdTBCQzhcdTBCQ0EtXHUwQkNEXHUwQkQwXHUwQkQ3XHUwQkU2LVx1MEJFRlx1MEMwMS1cdTBD
MDNcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUw
QzM1LVx1MEMzOVx1MEMzRC1cdTBDNDRcdTBDNDYtXHUwQzQ4XHUwQzRBLVx1MEM0RFx1MEM1NVx1
MEM1Nlx1MEM1OFx1MEM1OVx1MEM2MC1cdTBDNjNcdTBDNjYtXHUwQzZGXHUwQzgyXHUwQzgzXHUw
Qzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1c
dTBDQjlcdTBDQkMtXHUwQ0M0XHUwQ0M2LVx1MENDOFx1MENDQS1cdTBDQ0RcdTBDRDVcdTBDRDZc
dTBDREVcdTBDRTAtXHUwQ0UzXHUwQ0U2LVx1MENFRlx1MENGMVx1MENGMlx1MEQwMlx1MEQwM1x1
MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRC1cdTBENDRcdTBENDYt
XHUwRDQ4XHUwRDRBLVx1MEQ0RVx1MEQ1N1x1MEQ2MC1cdTBENjNcdTBENjYtXHUwRDZGXHUwRDdB
LVx1MEQ3Rlx1MEQ4Mlx1MEQ4M1x1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERC
Qlx1MERCRFx1MERDMC1cdTBEQzZcdTBEQ0FcdTBEQ0YtXHUwREQ0XHUwREQ2XHUwREQ4LVx1MERE
Rlx1MERGMlx1MERGM1x1MEUwMS1cdTBFM0FcdTBFNDAtXHUwRTRFXHUwRTUwLVx1MEU1OVx1MEU4
MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTkt
XHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjlc
dTBFQkItXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVDOC1cdTBFQ0RcdTBFRDAtXHUwRUQ5
XHUwRURDLVx1MEVERlx1MEYwMFx1MEYxOFx1MEYxOVx1MEYyMC1cdTBGMjlcdTBGMzVcdTBGMzdc
dTBGMzlcdTBGM0UtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY3MS1cdTBGODRcdTBGODYtXHUwRjk3
XHUwRjk5LVx1MEZCQ1x1MEZDNlx1MTAwMC1cdTEwNDlcdTEwNTAtXHUxMDlEXHUxMEEwLVx1MTBD
NVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1
MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEy
OTAtXHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUx
MkM4LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM1RC1c
dTEzNUZcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdG
XHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE2RUUtXHUxNkYwXHUxNzAwLVx1MTcwQ1x1MTcw
RS1cdTE3MTRcdTE3MjAtXHUxNzM0XHUxNzQwLVx1MTc1M1x1MTc2MC1cdTE3NkNcdTE3NkUtXHUx
NzcwXHUxNzcyXHUxNzczXHUxNzgwLVx1MTdEM1x1MTdEN1x1MTdEQ1x1MTdERFx1MTdFMC1cdTE3
RTlcdTE4MEItXHUxODBEXHUxODEwLVx1MTgxOVx1MTgyMC1cdTE4NzdcdTE4ODAtXHUxOEFBXHUx
OEIwLVx1MThGNVx1MTkwMC1cdTE5MUNcdTE5MjAtXHUxOTJCXHUxOTMwLVx1MTkzQlx1MTk0Ni1c
dTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTE5RDAtXHUxOUQ5
XHUxQTAwLVx1MUExQlx1MUEyMC1cdTFBNUVcdTFBNjAtXHUxQTdDXHUxQTdGLVx1MUE4OVx1MUE5
MC1cdTFBOTlcdTFBQTdcdTFCMDAtXHUxQjRCXHUxQjUwLVx1MUI1OVx1MUI2Qi1cdTFCNzNcdTFC
ODAtXHUxQkYzXHUxQzAwLVx1MUMzN1x1MUM0MC1cdTFDNDlcdTFDNEQtXHUxQzdEXHUxQ0QwLVx1
MUNEMlx1MUNENC1cdTFDRjZcdTFEMDAtXHUxREU2XHUxREZDLVx1MUYxNVx1MUYxOC1cdTFGMURc
dTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURc
dTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0
XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZG
Mi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDBDXHUyMDBEXHUyMDNGXHUyMDQwXHUyMDU0XHUyMDcx
XHUyMDdGXHUyMDkwLVx1MjA5Q1x1MjBEMC1cdTIwRENcdTIwRTFcdTIwRTUtXHUyMEYwXHUyMTAy
XHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhc
dTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRF
XHUyMTYwLVx1MjE4OFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNF
Qi1cdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ3
Ri1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUy
REJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1
MkRFMC1cdTJERkZcdTJFMkZcdTMwMDUtXHUzMDA3XHUzMDIxLVx1MzAyRlx1MzAzMS1cdTMwMzVc
dTMwMzgtXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5OVx1MzA5QVx1MzA5RC1cdTMwOUZcdTMwQTEt
XHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFC
QVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ1x1QTAwMC1cdUE0OENcdUE0
RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MkJcdUE2NDAtXHVBNjZGXHVBNjc0LVx1
QTY3RFx1QTY3Ri1cdUE2OTdcdUE2OUYtXHVBNkYxXHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhc
dUE3OEItXHVBNzhFXHVBNzkwLVx1QTc5M1x1QTdBMC1cdUE3QUFcdUE3RjgtXHVBODI3XHVBODQw
LVx1QTg3M1x1QTg4MC1cdUE4QzRcdUE4RDAtXHVBOEQ5XHVBOEUwLVx1QThGN1x1QThGQlx1QTkw
MC1cdUE5MkRcdUE5MzAtXHVBOTUzXHVBOTYwLVx1QTk3Q1x1QTk4MC1cdUE5QzBcdUE5Q0YtXHVB
OUQ5XHVBQTAwLVx1QUEzNlx1QUE0MC1cdUFBNERcdUFBNTAtXHVBQTU5XHVBQTYwLVx1QUE3Nlx1
QUE3QVx1QUE3Qlx1QUE4MC1cdUFBQzJcdUFBREItXHVBQUREXHVBQUUwLVx1QUFFRlx1QUFGMi1c
dUFBRjZcdUFCMDEtXHVBQjA2XHVBQjA5LVx1QUIwRVx1QUIxMS1cdUFCMTZcdUFCMjAtXHVBQjI2
XHVBQjI4LVx1QUIyRVx1QUJDMC1cdUFCRUFcdUFCRUNcdUFCRURcdUFCRjAtXHVBQkY5XHVBQzAw
LVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZB
RDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRC1cdUZCMjhcdUZCMkEtXHVGQjM2XHVG
QjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZC
RDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTAwLVx1
RkUwRlx1RkUyMC1cdUZFMjZcdUZFMzNcdUZFMzRcdUZFNEQtXHVGRTRGXHVGRTcwLVx1RkU3NFx1
RkU3Ni1cdUZFRkNcdUZGMTAtXHVGRjE5XHVGRjIxLVx1RkYzQVx1RkYzRlx1RkY0MS1cdUZGNUFc
dUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRB
LVx1RkZEQ10nKQorICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogbmV3IFJlZ0V4cCgn
W1x4YWFceGI1XHhiYVx4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHUwMmMxXHUwMmM2LVx1MDJkMVx1
MDJlMC1cdTAyZTRcdTAyZWNcdTAyZWVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdhLVx1
MDM3ZFx1MDM4Nlx1MDM4OC1cdTAzOGFcdTAzOGNcdTAzOGUtXHUwM2ExXHUwM2EzLVx1MDNmNVx1
MDNmNy1cdTA0ODFcdTA0OGEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdc
dTA1ZDAtXHUwNWVhXHUwNWYwLVx1MDVmMlx1MDYyMC1cdTA2NGFcdTA2NmVcdTA2NmZcdTA2NzEt
XHUwNmQzXHUwNmQ1XHUwNmU1XHUwNmU2XHUwNmVlXHUwNmVmXHUwNmZhLVx1MDZmY1x1MDZmZlx1
MDcxMFx1MDcxMi1cdTA3MmZcdTA3NGQtXHUwN2E1XHUwN2IxXHUwN2NhLVx1MDdlYVx1MDdmNFx1
MDdmNVx1MDdmYVx1MDgwMC1cdTA4MTVcdTA4MWFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUw
OGEwXHUwOGEyLVx1MDhhY1x1MDkwNC1cdTA5MzlcdTA5M2RcdTA5NTBcdTA5NTgtXHUwOTYxXHUw
OTcxLVx1MDk3N1x1MDk3OS1cdTA5N2ZcdTA5ODUtXHUwOThjXHUwOThmXHUwOTkwXHUwOTkzLVx1
MDlhOFx1MDlhYS1cdTA5YjBcdTA5YjJcdTA5YjYtXHUwOWI5XHUwOWJkXHUwOWNlXHUwOWRjXHUw
OWRkXHUwOWRmLVx1MDllMVx1MDlmMFx1MDlmMVx1MGEwNS1cdTBhMGFcdTBhMGZcdTBhMTBcdTBh
MTMtXHUwYTI4XHUwYTJhLVx1MGEzMFx1MGEzMlx1MGEzM1x1MGEzNVx1MGEzNlx1MGEzOFx1MGEz
OVx1MGE1OS1cdTBhNWNcdTBhNWVcdTBhNzItXHUwYTc0XHUwYTg1LVx1MGE4ZFx1MGE4Zi1cdTBh
OTFcdTBhOTMtXHUwYWE4XHUwYWFhLVx1MGFiMFx1MGFiMlx1MGFiM1x1MGFiNS1cdTBhYjlcdTBh
YmRcdTBhZDBcdTBhZTBcdTBhZTFcdTBiMDUtXHUwYjBjXHUwYjBmXHUwYjEwXHUwYjEzLVx1MGIy
OFx1MGIyYS1cdTBiMzBcdTBiMzJcdTBiMzNcdTBiMzUtXHUwYjM5XHUwYjNkXHUwYjVjXHUwYjVk
XHUwYjVmLVx1MGI2MVx1MGI3MVx1MGI4M1x1MGI4NS1cdTBiOGFcdTBiOGUtXHUwYjkwXHUwYjky
LVx1MGI5NVx1MGI5OVx1MGI5YVx1MGI5Y1x1MGI5ZVx1MGI5Zlx1MGJhM1x1MGJhNFx1MGJhOC1c
dTBiYWFcdTBiYWUtXHUwYmI5XHUwYmQwXHUwYzA1LVx1MGMwY1x1MGMwZS1cdTBjMTBcdTBjMTIt
XHUwYzI4XHUwYzJhLVx1MGMzM1x1MGMzNS1cdTBjMzlcdTBjM2RcdTBjNThcdTBjNTlcdTBjNjBc
dTBjNjFcdTBjODUtXHUwYzhjXHUwYzhlLVx1MGM5MFx1MGM5Mi1cdTBjYThcdTBjYWEtXHUwY2Iz
XHUwY2I1LVx1MGNiOVx1MGNiZFx1MGNkZVx1MGNlMFx1MGNlMVx1MGNmMVx1MGNmMlx1MGQwNS1c
dTBkMGNcdTBkMGUtXHUwZDEwXHUwZDEyLVx1MGQzYVx1MGQzZFx1MGQ0ZVx1MGQ2MFx1MGQ2MVx1
MGQ3YS1cdTBkN2ZcdTBkODUtXHUwZDk2XHUwZDlhLVx1MGRiMVx1MGRiMy1cdTBkYmJcdTBkYmRc
dTBkYzAtXHUwZGM2XHUwZTAxLVx1MGUzMFx1MGUzMlx1MGUzM1x1MGU0MC1cdTBlNDZcdTBlODFc
dTBlODJcdTBlODRcdTBlODdcdTBlODhcdTBlOGFcdTBlOGRcdTBlOTQtXHUwZTk3XHUwZTk5LVx1
MGU5Zlx1MGVhMS1cdTBlYTNcdTBlYTVcdTBlYTdcdTBlYWFcdTBlYWJcdTBlYWQtXHUwZWIwXHUw
ZWIyXHUwZWIzXHUwZWJkXHUwZWMwLVx1MGVjNFx1MGVjNlx1MGVkYy1cdTBlZGZcdTBmMDBcdTBm
NDAtXHUwZjQ3XHUwZjQ5LVx1MGY2Y1x1MGY4OC1cdTBmOGNcdTEwMDAtXHUxMDJhXHUxMDNmXHUx
MDUwLVx1MTA1NVx1MTA1YS1cdTEwNWRcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNmUtXHUxMDcwXHUx
MDc1LVx1MTA4MVx1MTA4ZVx1MTBhMC1cdTEwYzVcdTEwYzdcdTEwY2RcdTEwZDAtXHUxMGZhXHUx
MGZjLVx1MTI0OFx1MTI0YS1cdTEyNGRcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVhLVx1MTI1ZFx1
MTI2MC1cdTEyODhcdTEyOGEtXHUxMjhkXHUxMjkwLVx1MTJiMFx1MTJiMi1cdTEyYjVcdTEyYjgt
XHUxMmJlXHUxMmMwXHUxMmMyLVx1MTJjNVx1MTJjOC1cdTEyZDZcdTEyZDgtXHUxMzEwXHUxMzEy
LVx1MTMxNVx1MTMxOC1cdTEzNWFcdTEzODAtXHUxMzhmXHUxM2EwLVx1MTNmNFx1MTQwMS1cdTE2
NmNcdTE2NmYtXHUxNjdmXHUxNjgxLVx1MTY5YVx1MTZhMC1cdTE2ZWFcdTE2ZWUtXHUxNmYwXHUx
NzAwLVx1MTcwY1x1MTcwZS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1c
dTE3NmNcdTE3NmUtXHUxNzcwXHUxNzgwLVx1MTdiM1x1MTdkN1x1MTdkY1x1MTgyMC1cdTE4Nzdc
dTE4ODAtXHUxOGE4XHUxOGFhXHUxOGIwLVx1MThmNVx1MTkwMC1cdTE5MWNcdTE5NTAtXHUxOTZk
XHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5YWJcdTE5YzEtXHUxOWM3XHUxYTAwLVx1MWExNlx1MWEy
MC1cdTFhNTRcdTFhYTdcdTFiMDUtXHUxYjMzXHUxYjQ1LVx1MWI0Ylx1MWI4My1cdTFiYTBcdTFi
YWVcdTFiYWZcdTFiYmEtXHUxYmU1XHUxYzAwLVx1MWMyM1x1MWM0ZC1cdTFjNGZcdTFjNWEtXHUx
YzdkXHUxY2U5LVx1MWNlY1x1MWNlZS1cdTFjZjFcdTFjZjVcdTFjZjZcdTFkMDAtXHUxZGJmXHUx
ZTAwLVx1MWYxNVx1MWYxOC1cdTFmMWRcdTFmMjAtXHUxZjQ1XHUxZjQ4LVx1MWY0ZFx1MWY1MC1c
dTFmNTdcdTFmNTlcdTFmNWJcdTFmNWRcdTFmNWYtXHUxZjdkXHUxZjgwLVx1MWZiNFx1MWZiNi1c
dTFmYmNcdTFmYmVcdTFmYzItXHUxZmM0XHUxZmM2LVx1MWZjY1x1MWZkMC1cdTFmZDNcdTFmZDYt
XHUxZmRiXHUxZmUwLVx1MWZlY1x1MWZmMi1cdTFmZjRcdTFmZjYtXHUxZmZjXHUyMDcxXHUyMDdm
XHUyMDkwLVx1MjA5Y1x1MjEwMlx1MjEwN1x1MjEwYS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFk
XHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJhLVx1MjEyZFx1MjEyZi1cdTIxMzlcdTIxM2MtXHUyMTNm
XHUyMTQ1LVx1MjE0OVx1MjE0ZVx1MjE2MC1cdTIxODhcdTJjMDAtXHUyYzJlXHUyYzMwLVx1MmM1
ZVx1MmM2MC1cdTJjZTRcdTJjZWItXHUyY2VlXHUyY2YyXHUyY2YzXHUyZDAwLVx1MmQyNVx1MmQy
N1x1MmQyZFx1MmQzMC1cdTJkNjdcdTJkNmZcdTJkODAtXHUyZDk2XHUyZGEwLVx1MmRhNlx1MmRh
OC1cdTJkYWVcdTJkYjAtXHUyZGI2XHUyZGI4LVx1MmRiZVx1MmRjMC1cdTJkYzZcdTJkYzgtXHUy
ZGNlXHUyZGQwLVx1MmRkNlx1MmRkOC1cdTJkZGVcdTJlMmZcdTMwMDUtXHUzMDA3XHUzMDIxLVx1
MzAyOVx1MzAzMS1cdTMwMzVcdTMwMzgtXHUzMDNjXHUzMDQxLVx1MzA5Nlx1MzA5ZC1cdTMwOWZc
dTMwYTEtXHUzMGZhXHUzMGZjLVx1MzBmZlx1MzEwNS1cdTMxMmRcdTMxMzEtXHUzMThlXHUzMWEw
LVx1MzFiYVx1MzFmMC1cdTMxZmZcdTM0MDAtXHU0ZGI1XHU0ZTAwLVx1OWZjY1x1YTAwMC1cdWE0
OGNcdWE0ZDAtXHVhNGZkXHVhNTAwLVx1YTYwY1x1YTYxMC1cdWE2MWZcdWE2MmFcdWE2MmJcdWE2
NDAtXHVhNjZlXHVhNjdmLVx1YTY5N1x1YTZhMC1cdWE2ZWZcdWE3MTctXHVhNzFmXHVhNzIyLVx1
YTc4OFx1YTc4Yi1cdWE3OGVcdWE3OTAtXHVhNzkzXHVhN2EwLVx1YTdhYVx1YTdmOC1cdWE4MDFc
dWE4MDMtXHVhODA1XHVhODA3LVx1YTgwYVx1YTgwYy1cdWE4MjJcdWE4NDAtXHVhODczXHVhODgy
LVx1YThiM1x1YThmMi1cdWE4ZjdcdWE4ZmJcdWE5MGEtXHVhOTI1XHVhOTMwLVx1YTk0Nlx1YTk2
MC1cdWE5N2NcdWE5ODQtXHVhOWIyXHVhOWNmXHVhYTAwLVx1YWEyOFx1YWE0MC1cdWFhNDJcdWFh
NDQtXHVhYTRiXHVhYTYwLVx1YWE3Nlx1YWE3YVx1YWE4MC1cdWFhYWZcdWFhYjFcdWFhYjVcdWFh
YjZcdWFhYjktXHVhYWJkXHVhYWMwXHVhYWMyXHVhYWRiLVx1YWFkZFx1YWFlMC1cdWFhZWFcdWFh
ZjItXHVhYWY0XHVhYjAxLVx1YWIwNlx1YWIwOS1cdWFiMGVcdWFiMTEtXHVhYjE2XHVhYjIwLVx1
YWIyNlx1YWIyOC1cdWFiMmVcdWFiYzAtXHVhYmUyXHVhYzAwLVx1ZDdhM1x1ZDdiMC1cdWQ3YzZc
dWQ3Y2ItXHVkN2ZiXHVmOTAwLVx1ZmE2ZFx1ZmE3MC1cdWZhZDlcdWZiMDAtXHVmYjA2XHVmYjEz
LVx1ZmIxN1x1ZmIxZFx1ZmIxZi1cdWZiMjhcdWZiMmEtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIz
ZVx1ZmI0MFx1ZmI0MVx1ZmI0M1x1ZmI0NFx1ZmI0Ni1cdWZiYjFcdWZiZDMtXHVmZDNkXHVmZDUw
LVx1ZmQ4Zlx1ZmQ5Mi1cdWZkYzdcdWZkZjAtXHVmZGZiXHVmZTcwLVx1ZmU3NFx1ZmU3Ni1cdWZl
ZmNcdWZmMjEtXHVmZjNhXHVmZjQxLVx1ZmY1YVx1ZmY2Ni1cdWZmYmVcdWZmYzItXHVmZmM3XHVm
ZmNhLVx1ZmZjZlx1ZmZkMi1cdWZmZDdcdWZmZGEtXHVmZmRjXScpLAorICAgICAgICBOb25Bc2Np
aUlkZW50aWZpZXJQYXJ0OiBuZXcgUmVnRXhwKCdbXHhhYVx4YjVceGJhXHhjMC1ceGQ2XHhkOC1c
eGY2XHhmOC1cdTAyYzFcdTAyYzYtXHUwMmQxXHUwMmUwLVx1MDJlNFx1MDJlY1x1MDJlZVx1MDMw
MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN2EtXHUwMzdkXHUwMzg2XHUwMzg4LVx1MDM4YVx1MDM4
Y1x1MDM4ZS1cdTAzYTFcdTAzYTMtXHUwM2Y1XHUwM2Y3LVx1MDQ4MVx1MDQ4My1cdTA0ODdcdTA0
OGEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1OTEtXHUwNWJkXHUw
NWJmXHUwNWMxXHUwNWMyXHUwNWM0XHUwNWM1XHUwNWM3XHUwNWQwLVx1MDVlYVx1MDVmMC1cdTA1
ZjJcdTA2MTAtXHUwNjFhXHUwNjIwLVx1MDY2OVx1MDY2ZS1cdTA2ZDNcdTA2ZDUtXHUwNmRjXHUw
NmRmLVx1MDZlOFx1MDZlYS1cdTA2ZmNcdTA2ZmZcdTA3MTAtXHUwNzRhXHUwNzRkLVx1MDdiMVx1
MDdjMC1cdTA3ZjVcdTA3ZmFcdTA4MDAtXHUwODJkXHUwODQwLVx1MDg1Ylx1MDhhMFx1MDhhMi1c
dTA4YWNcdTA4ZTQtXHUwOGZlXHUwOTAwLVx1MDk2M1x1MDk2Ni1cdTA5NmZcdTA5NzEtXHUwOTc3
XHUwOTc5LVx1MDk3Zlx1MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThjXHUwOThmXHUwOTkwXHUwOTkz
LVx1MDlhOFx1MDlhYS1cdTA5YjBcdTA5YjJcdTA5YjYtXHUwOWI5XHUwOWJjLVx1MDljNFx1MDlj
N1x1MDljOFx1MDljYi1cdTA5Y2VcdTA5ZDdcdTA5ZGNcdTA5ZGRcdTA5ZGYtXHUwOWUzXHUwOWU2
LVx1MDlmMVx1MGEwMS1cdTBhMDNcdTBhMDUtXHUwYTBhXHUwYTBmXHUwYTEwXHUwYTEzLVx1MGEy
OFx1MGEyYS1cdTBhMzBcdTBhMzJcdTBhMzNcdTBhMzVcdTBhMzZcdTBhMzhcdTBhMzlcdTBhM2Nc
dTBhM2UtXHUwYTQyXHUwYTQ3XHUwYTQ4XHUwYTRiLVx1MGE0ZFx1MGE1MVx1MGE1OS1cdTBhNWNc
dTBhNWVcdTBhNjYtXHUwYTc1XHUwYTgxLVx1MGE4M1x1MGE4NS1cdTBhOGRcdTBhOGYtXHUwYTkx
XHUwYTkzLVx1MGFhOFx1MGFhYS1cdTBhYjBcdTBhYjJcdTBhYjNcdTBhYjUtXHUwYWI5XHUwYWJj
LVx1MGFjNVx1MGFjNy1cdTBhYzlcdTBhY2ItXHUwYWNkXHUwYWQwXHUwYWUwLVx1MGFlM1x1MGFl
Ni1cdTBhZWZcdTBiMDEtXHUwYjAzXHUwYjA1LVx1MGIwY1x1MGIwZlx1MGIxMFx1MGIxMy1cdTBi
MjhcdTBiMmEtXHUwYjMwXHUwYjMyXHUwYjMzXHUwYjM1LVx1MGIzOVx1MGIzYy1cdTBiNDRcdTBi
NDdcdTBiNDhcdTBiNGItXHUwYjRkXHUwYjU2XHUwYjU3XHUwYjVjXHUwYjVkXHUwYjVmLVx1MGI2
M1x1MGI2Ni1cdTBiNmZcdTBiNzFcdTBiODJcdTBiODNcdTBiODUtXHUwYjhhXHUwYjhlLVx1MGI5
MFx1MGI5Mi1cdTBiOTVcdTBiOTlcdTBiOWFcdTBiOWNcdTBiOWVcdTBiOWZcdTBiYTNcdTBiYTRc
dTBiYTgtXHUwYmFhXHUwYmFlLVx1MGJiOVx1MGJiZS1cdTBiYzJcdTBiYzYtXHUwYmM4XHUwYmNh
LVx1MGJjZFx1MGJkMFx1MGJkN1x1MGJlNi1cdTBiZWZcdTBjMDEtXHUwYzAzXHUwYzA1LVx1MGMw
Y1x1MGMwZS1cdTBjMTBcdTBjMTItXHUwYzI4XHUwYzJhLVx1MGMzM1x1MGMzNS1cdTBjMzlcdTBj
M2QtXHUwYzQ0XHUwYzQ2LVx1MGM0OFx1MGM0YS1cdTBjNGRcdTBjNTVcdTBjNTZcdTBjNThcdTBj
NTlcdTBjNjAtXHUwYzYzXHUwYzY2LVx1MGM2Zlx1MGM4Mlx1MGM4M1x1MGM4NS1cdTBjOGNcdTBj
OGUtXHUwYzkwXHUwYzkyLVx1MGNhOFx1MGNhYS1cdTBjYjNcdTBjYjUtXHUwY2I5XHUwY2JjLVx1
MGNjNFx1MGNjNi1cdTBjYzhcdTBjY2EtXHUwY2NkXHUwY2Q1XHUwY2Q2XHUwY2RlXHUwY2UwLVx1
MGNlM1x1MGNlNi1cdTBjZWZcdTBjZjFcdTBjZjJcdTBkMDJcdTBkMDNcdTBkMDUtXHUwZDBjXHUw
ZDBlLVx1MGQxMFx1MGQxMi1cdTBkM2FcdTBkM2QtXHUwZDQ0XHUwZDQ2LVx1MGQ0OFx1MGQ0YS1c
dTBkNGVcdTBkNTdcdTBkNjAtXHUwZDYzXHUwZDY2LVx1MGQ2Zlx1MGQ3YS1cdTBkN2ZcdTBkODJc
dTBkODNcdTBkODUtXHUwZDk2XHUwZDlhLVx1MGRiMVx1MGRiMy1cdTBkYmJcdTBkYmRcdTBkYzAt
XHUwZGM2XHUwZGNhXHUwZGNmLVx1MGRkNFx1MGRkNlx1MGRkOC1cdTBkZGZcdTBkZjJcdTBkZjNc
dTBlMDEtXHUwZTNhXHUwZTQwLVx1MGU0ZVx1MGU1MC1cdTBlNTlcdTBlODFcdTBlODJcdTBlODRc
dTBlODdcdTBlODhcdTBlOGFcdTBlOGRcdTBlOTQtXHUwZTk3XHUwZTk5LVx1MGU5Zlx1MGVhMS1c
dTBlYTNcdTBlYTVcdTBlYTdcdTBlYWFcdTBlYWJcdTBlYWQtXHUwZWI5XHUwZWJiLVx1MGViZFx1
MGVjMC1cdTBlYzRcdTBlYzZcdTBlYzgtXHUwZWNkXHUwZWQwLVx1MGVkOVx1MGVkYy1cdTBlZGZc
dTBmMDBcdTBmMThcdTBmMTlcdTBmMjAtXHUwZjI5XHUwZjM1XHUwZjM3XHUwZjM5XHUwZjNlLVx1
MGY0N1x1MGY0OS1cdTBmNmNcdTBmNzEtXHUwZjg0XHUwZjg2LVx1MGY5N1x1MGY5OS1cdTBmYmNc
dTBmYzZcdTEwMDAtXHUxMDQ5XHUxMDUwLVx1MTA5ZFx1MTBhMC1cdTEwYzVcdTEwYzdcdTEwY2Rc
dTEwZDAtXHUxMGZhXHUxMGZjLVx1MTI0OFx1MTI0YS1cdTEyNGRcdTEyNTAtXHUxMjU2XHUxMjU4
XHUxMjVhLVx1MTI1ZFx1MTI2MC1cdTEyODhcdTEyOGEtXHUxMjhkXHUxMjkwLVx1MTJiMFx1MTJi
Mi1cdTEyYjVcdTEyYjgtXHUxMmJlXHUxMmMwXHUxMmMyLVx1MTJjNVx1MTJjOC1cdTEyZDZcdTEy
ZDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNWFcdTEzNWQtXHUxMzVmXHUxMzgwLVx1
MTM4Zlx1MTNhMC1cdTEzZjRcdTE0MDEtXHUxNjZjXHUxNjZmLVx1MTY3Zlx1MTY4MS1cdTE2OWFc
dTE2YTAtXHUxNmVhXHUxNmVlLVx1MTZmMFx1MTcwMC1cdTE3MGNcdTE3MGUtXHUxNzE0XHUxNzIw
LVx1MTczNFx1MTc0MC1cdTE3NTNcdTE3NjAtXHUxNzZjXHUxNzZlLVx1MTc3MFx1MTc3Mlx1MTc3
M1x1MTc4MC1cdTE3ZDNcdTE3ZDdcdTE3ZGNcdTE3ZGRcdTE3ZTAtXHUxN2U5XHUxODBiLVx1MTgw
ZFx1MTgxMC1cdTE4MTlcdTE4MjAtXHUxODc3XHUxODgwLVx1MThhYVx1MThiMC1cdTE4ZjVcdTE5
MDAtXHUxOTFjXHUxOTIwLVx1MTkyYlx1MTkzMC1cdTE5M2JcdTE5NDYtXHUxOTZkXHUxOTcwLVx1
MTk3NFx1MTk4MC1cdTE5YWJcdTE5YjAtXHUxOWM5XHUxOWQwLVx1MTlkOVx1MWEwMC1cdTFhMWJc
dTFhMjAtXHUxYTVlXHUxYTYwLVx1MWE3Y1x1MWE3Zi1cdTFhODlcdTFhOTAtXHUxYTk5XHUxYWE3
XHUxYjAwLVx1MWI0Ylx1MWI1MC1cdTFiNTlcdTFiNmItXHUxYjczXHUxYjgwLVx1MWJmM1x1MWMw
MC1cdTFjMzdcdTFjNDAtXHUxYzQ5XHUxYzRkLVx1MWM3ZFx1MWNkMC1cdTFjZDJcdTFjZDQtXHUx
Y2Y2XHUxZDAwLVx1MWRlNlx1MWRmYy1cdTFmMTVcdTFmMTgtXHUxZjFkXHUxZjIwLVx1MWY0NVx1
MWY0OC1cdTFmNGRcdTFmNTAtXHUxZjU3XHUxZjU5XHUxZjViXHUxZjVkXHUxZjVmLVx1MWY3ZFx1
MWY4MC1cdTFmYjRcdTFmYjYtXHUxZmJjXHUxZmJlXHUxZmMyLVx1MWZjNFx1MWZjNi1cdTFmY2Nc
dTFmZDAtXHUxZmQzXHUxZmQ2LVx1MWZkYlx1MWZlMC1cdTFmZWNcdTFmZjItXHUxZmY0XHUxZmY2
LVx1MWZmY1x1MjAwY1x1MjAwZFx1MjAzZlx1MjA0MFx1MjA1NFx1MjA3MVx1MjA3Zlx1MjA5MC1c
dTIwOWNcdTIwZDAtXHUyMGRjXHUyMGUxXHUyMGU1LVx1MjBmMFx1MjEwMlx1MjEwN1x1MjEwYS1c
dTIxMTNcdTIxMTVcdTIxMTktXHUyMTFkXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJhLVx1MjEyZFx1
MjEyZi1cdTIxMzlcdTIxM2MtXHUyMTNmXHUyMTQ1LVx1MjE0OVx1MjE0ZVx1MjE2MC1cdTIxODhc
dTJjMDAtXHUyYzJlXHUyYzMwLVx1MmM1ZVx1MmM2MC1cdTJjZTRcdTJjZWItXHUyY2YzXHUyZDAw
LVx1MmQyNVx1MmQyN1x1MmQyZFx1MmQzMC1cdTJkNjdcdTJkNmZcdTJkN2YtXHUyZDk2XHUyZGEw
LVx1MmRhNlx1MmRhOC1cdTJkYWVcdTJkYjAtXHUyZGI2XHUyZGI4LVx1MmRiZVx1MmRjMC1cdTJk
YzZcdTJkYzgtXHUyZGNlXHUyZGQwLVx1MmRkNlx1MmRkOC1cdTJkZGVcdTJkZTAtXHUyZGZmXHUy
ZTJmXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMmZcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAzY1x1
MzA0MS1cdTMwOTZcdTMwOTlcdTMwOWFcdTMwOWQtXHUzMDlmXHUzMGExLVx1MzBmYVx1MzBmYy1c
dTMwZmZcdTMxMDUtXHUzMTJkXHUzMTMxLVx1MzE4ZVx1MzFhMC1cdTMxYmFcdTMxZjAtXHUzMWZm
XHUzNDAwLVx1NGRiNVx1NGUwMC1cdTlmY2NcdWEwMDAtXHVhNDhjXHVhNGQwLVx1YTRmZFx1YTUw
MC1cdWE2MGNcdWE2MTAtXHVhNjJiXHVhNjQwLVx1YTY2Zlx1YTY3NC1cdWE2N2RcdWE2N2YtXHVh
Njk3XHVhNjlmLVx1YTZmMVx1YTcxNy1cdWE3MWZcdWE3MjItXHVhNzg4XHVhNzhiLVx1YTc4ZVx1
YTc5MC1cdWE3OTNcdWE3YTAtXHVhN2FhXHVhN2Y4LVx1YTgyN1x1YTg0MC1cdWE4NzNcdWE4ODAt
XHVhOGM0XHVhOGQwLVx1YThkOVx1YThlMC1cdWE4ZjdcdWE4ZmJcdWE5MDAtXHVhOTJkXHVhOTMw
LVx1YTk1M1x1YTk2MC1cdWE5N2NcdWE5ODAtXHVhOWMwXHVhOWNmLVx1YTlkOVx1YWEwMC1cdWFh
MzZcdWFhNDAtXHVhYTRkXHVhYTUwLVx1YWE1OVx1YWE2MC1cdWFhNzZcdWFhN2FcdWFhN2JcdWFh
ODAtXHVhYWMyXHVhYWRiLVx1YWFkZFx1YWFlMC1cdWFhZWZcdWFhZjItXHVhYWY2XHVhYjAxLVx1
YWIwNlx1YWIwOS1cdWFiMGVcdWFiMTEtXHVhYjE2XHVhYjIwLVx1YWIyNlx1YWIyOC1cdWFiMmVc
dWFiYzAtXHVhYmVhXHVhYmVjXHVhYmVkXHVhYmYwLVx1YWJmOVx1YWMwMC1cdWQ3YTNcdWQ3YjAt
XHVkN2M2XHVkN2NiLVx1ZDdmYlx1ZjkwMC1cdWZhNmRcdWZhNzAtXHVmYWQ5XHVmYjAwLVx1ZmIw
Nlx1ZmIxMy1cdWZiMTdcdWZiMWQtXHVmYjI4XHVmYjJhLVx1ZmIzNlx1ZmIzOC1cdWZiM2NcdWZi
M2VcdWZiNDBcdWZiNDFcdWZiNDNcdWZiNDRcdWZiNDYtXHVmYmIxXHVmYmQzLVx1ZmQzZFx1ZmQ1
MC1cdWZkOGZcdWZkOTItXHVmZGM3XHVmZGYwLVx1ZmRmYlx1ZmUwMC1cdWZlMGZcdWZlMjAtXHVm
ZTI2XHVmZTMzXHVmZTM0XHVmZTRkLVx1ZmU0Zlx1ZmU3MC1cdWZlNzRcdWZlNzYtXHVmZWZjXHVm
ZjEwLVx1ZmYxOVx1ZmYyMS1cdWZmM2FcdWZmM2ZcdWZmNDEtXHVmZjVhXHVmZjY2LVx1ZmZiZVx1
ZmZjMi1cdWZmYzdcdWZmY2EtXHVmZmNmXHVmZmQyLVx1ZmZkN1x1ZmZkYS1cdWZmZGNdJykKICAg
ICB9OwogCiAgICAgLy8gRW5zdXJlIHRoZSBjb25kaXRpb24gaXMgdHJ1ZSwgb3RoZXJ3aXNlIHRo
cm93IGFuIGVycm9yLgpAQCAtMjE2LDYgKzI1NCwzMSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBmdW5jdGlvbiBTdHJp
bmdNYXAoKSB7CisgICAgICAgIHRoaXMuJGRhdGEgPSB7fTsKKyAgICB9CisKKyAgICBTdHJpbmdN
YXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAga2V5ID0gJyQnICsg
a2V5OworICAgICAgICByZXR1cm4gdGhpcy4kZGF0YVtrZXldOworICAgIH07CisKKyAgICBTdHJp
bmdNYXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7CisgICAgICAgIGtl
eSA9ICckJyArIGtleTsKKyAgICAgICAgdGhpcy4kZGF0YVtrZXldID0gdmFsdWU7CisgICAgICAg
IHJldHVybiB0aGlzOworICAgIH07CisKKyAgICBTdHJpbmdNYXAucHJvdG90eXBlLmhhcyA9IGZ1
bmN0aW9uIChrZXkpIHsKKyAgICAgICAga2V5ID0gJyQnICsga2V5OworICAgICAgICByZXR1cm4g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuJGRhdGEsIGtleSk7Cisg
ICAgfTsKKworICAgIFN0cmluZ01hcC5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKGtleSkg
eworICAgICAgICBrZXkgPSAnJCcgKyBrZXk7CisgICAgICAgIHJldHVybiBkZWxldGUgdGhpcy4k
ZGF0YVtrZXldOworICAgIH07CisKICAgICBmdW5jdGlvbiBpc0RlY2ltYWxEaWdpdChjaCkgewog
ICAgICAgICByZXR1cm4gKGNoID49IDQ4ICYmIGNoIDw9IDU3KTsgICAvLyAwLi45CiAgICAgfQpA
QCAtMjMyLDMyICsyOTUsMzYgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxl
bWVudAogICAgIC8vIDcuMiBXaGl0ZSBTcGFjZQogCiAgICAgZnVuY3Rpb24gaXNXaGl0ZVNwYWNl
KGNoKSB7Ci0gICAgICAgIHJldHVybiAoY2ggPT09IDB4MjApIHx8IChjaCA9PT0gMHgwOSkgfHwg
KGNoID09PSAweDBCKSB8fCAoY2ggPT09IDB4MEMpIHx8IChjaCA9PT0gMHhBMCkgfHwKLSAgICAg
ICAgICAgIChjaCA+PSAweDE2ODAgJiYgWzB4MTY4MCwgMHgxODBFLCAweDIwMDAsIDB4MjAwMSwg
MHgyMDAyLCAweDIwMDMsIDB4MjAwNCwgMHgyMDA1LCAweDIwMDYsIDB4MjAwNywgMHgyMDA4LCAw
eDIwMDksIDB4MjAwQSwgMHgyMDJGLCAweDIwNUYsIDB4MzAwMCwgMHhGRUZGXS5pbmRleE9mKGNo
KSA+PSAwKTsKKyAgICAgICAgcmV0dXJuIChjaCA9PT0gMzIpIHx8ICAvLyBzcGFjZQorICAgICAg
ICAgICAgKGNoID09PSA5KSB8fCAgICAgIC8vIHRhYgorICAgICAgICAgICAgKGNoID09PSAweEIp
IHx8CisgICAgICAgICAgICAoY2ggPT09IDB4QykgfHwKKyAgICAgICAgICAgIChjaCA9PT0gMHhB
MCkgfHwKKyAgICAgICAgICAgIChjaCA+PSAweDE2ODAgJiYgJ1x1MTY4MFx1MTgwRVx1MjAwMFx1
MjAwMVx1MjAwMlx1MjAwM1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAw
QVx1MjAyRlx1MjA1Rlx1MzAwMFx1RkVGRicuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKGNo
KSkgPiAwKTsKICAgICB9CiAKICAgICAvLyA3LjMgTGluZSBUZXJtaW5hdG9ycwogCiAgICAgZnVu
Y3Rpb24gaXNMaW5lVGVybWluYXRvcihjaCkgewotICAgICAgICByZXR1cm4gKGNoID09PSAweDBB
KSB8fCAoY2ggPT09IDB4MEQpIHx8IChjaCA9PT0gMHgyMDI4KSB8fCAoY2ggPT09IDB4MjAyOSk7
CisgICAgICAgIHJldHVybiAoY2ggPT09IDEwKSB8fCAoY2ggPT09IDEzKSB8fCAoY2ggPT09IDB4
MjAyOCkgfHwgKGNoID09PSAweDIwMjkpOwogICAgIH0KIAogICAgIC8vIDcuNiBJZGVudGlmaWVy
IE5hbWVzIGFuZCBJZGVudGlmaWVycwogCiAgICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyU3RhcnQo
Y2gpIHsKLSAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgyNCkgfHwgKGNoID09PSAweDVGKSB8fCAg
Ly8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSkKLSAgICAgICAgICAgIChjaCA+PSAweDQx
ICYmIGNoIDw9IDB4NUEpIHx8ICAgICAgICAgLy8gQS4uWgotICAgICAgICAgICAgKGNoID49IDB4
NjEgJiYgY2ggPD0gMHg3QSkgfHwgICAgICAgICAvLyBhLi56Ci0gICAgICAgICAgICAoY2ggPT09
IDB4NUMpIHx8ICAgICAgICAgICAgICAgICAgICAgIC8vIFwgKGJhY2tzbGFzaCkKKyAgICAgICAg
cmV0dXJuIChjaCA9PT0gMzYpIHx8IChjaCA9PT0gOTUpIHx8ICAvLyAkIChkb2xsYXIpIGFuZCBf
ICh1bmRlcnNjb3JlKQorICAgICAgICAgICAgKGNoID49IDY1ICYmIGNoIDw9IDkwKSB8fCAgICAg
ICAgIC8vIEEuLloKKyAgICAgICAgICAgIChjaCA+PSA5NyAmJiBjaCA8PSAxMjIpIHx8ICAgICAg
ICAvLyBhLi56CisgICAgICAgICAgICAoY2ggPT09IDkyKSB8fCAgICAgICAgICAgICAgICAgICAg
Ly8gXCAoYmFja3NsYXNoKQogICAgICAgICAgICAgKChjaCA+PSAweDgwKSAmJiBSZWdleC5Ob25B
c2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKSk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyUGFydChjaCkgewotICAgICAgICByZXR1cm4g
KGNoID09PSAweDI0KSB8fCAoY2ggPT09IDB4NUYpIHx8ICAvLyAkIChkb2xsYXIpIGFuZCBfICh1
bmRlcnNjb3JlKQotICAgICAgICAgICAgKGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSkgfHwgICAg
ICAgICAvLyBBLi5aCi0gICAgICAgICAgICAoY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBKSB8fCAg
ICAgICAgIC8vIGEuLnoKLSAgICAgICAgICAgIChjaCA+PSAweDMwICYmIGNoIDw9IDB4MzkpIHx8
ICAgICAgICAgLy8gMC4uOQotICAgICAgICAgICAgKGNoID09PSAweDVDKSB8fCAgICAgICAgICAg
ICAgICAgICAgICAvLyBcIChiYWNrc2xhc2gpCisgICAgICAgIHJldHVybiAoY2ggPT09IDM2KSB8
fCAoY2ggPT09IDk1KSB8fCAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSkKKyAgICAg
ICAgICAgIChjaCA+PSA2NSAmJiBjaCA8PSA5MCkgfHwgICAgICAgICAvLyBBLi5aCisgICAgICAg
ICAgICAoY2ggPj0gOTcgJiYgY2ggPD0gMTIyKSB8fCAgICAgICAgLy8gYS4uegorICAgICAgICAg
ICAgKGNoID49IDQ4ICYmIGNoIDw9IDU3KSB8fCAgICAgICAgIC8vIDAuLjkKKyAgICAgICAgICAg
IChjaCA9PT0gOTIpIHx8ICAgICAgICAgICAgICAgICAgICAvLyBcIChiYWNrc2xhc2gpCiAgICAg
ICAgICAgICAoKGNoID49IDB4ODApICYmIFJlZ2V4Lk5vbkFzY2lpSWRlbnRpZmllclBhcnQudGVz
dChTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSkpOwogICAgIH0KIApAQCAtMzA2LDcgKzM3Myw4IEBA
IHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgfQogCiAg
ICAgICAgIC8vICdjb25zdCcgaXMgc3BlY2lhbGl6ZWQgYXMgS2V5d29yZCBpbiBWOC4KLSAgICAg
ICAgLy8gJ3lpZWxkJyBhbmQgJ2xldCcgYXJlIGZvciBjb21wYXRpYmxpdHkgd2l0aCBTcGlkZXJN
b25rZXkgYW5kIEVTLm5leHQuCisgICAgICAgIC8vICd5aWVsZCcgaXMgb25seSB0cmVhdGVkIGFz
IGEga2V5d29yZCBpbiBzdHJpY3QgbW9kZS4KKyAgICAgICAgLy8gJ2xldCcgaXMgZm9yIGNvbXBh
dGlibGl0eSB3aXRoIFNwaWRlck1vbmtleSBhbmQgRVMubmV4dC4KICAgICAgICAgLy8gU29tZSBv
dGhlcnMgYXJlIGZyb20gZnV0dXJlIHJlc2VydmVkIHdvcmRzLgogCiAgICAgICAgIHN3aXRjaCAo
aWQubGVuZ3RoKSB7CkBAIC0zMjAsNyArMzg4LDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBh
cnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgIChpZCA9PT0gJ3ZvaWQnKSB8fCAoaWQg
PT09ICd3aXRoJykgfHwgKGlkID09PSAnZW51bScpOwogICAgICAgICBjYXNlIDU6CiAgICAgICAg
ICAgICByZXR1cm4gKGlkID09PSAnd2hpbGUnKSB8fCAoaWQgPT09ICdicmVhaycpIHx8IChpZCA9
PT0gJ2NhdGNoJykgfHwKLSAgICAgICAgICAgICAgICAoaWQgPT09ICd0aHJvdycpIHx8IChpZCA9
PT0gJ2NvbnN0JykgfHwgKGlkID09PSAneWllbGQnKSB8fAorICAgICAgICAgICAgICAgIChpZCA9
PT0gJ3Rocm93JykgfHwgKGlkID09PSAnY29uc3QnKSB8fAogICAgICAgICAgICAgICAgIChpZCA9
PT0gJ2NsYXNzJykgfHwgKGlkID09PSAnc3VwZXInKTsKICAgICAgICAgY2FzZSA2OgogICAgICAg
ICAgICAgcmV0dXJuIChpZCA9PT0gJ3JldHVybicpIHx8IChpZCA9PT0gJ3R5cGVvZicpIHx8IChp
ZCA9PT0gJ2RlbGV0ZScpIHx8CkBAIC0zMzksOCArNDA3LDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRy
dWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgIC8vIDcuNCBDb21tZW50cwogCiAgICAgZnVuY3Rp
b24gYWRkQ29tbWVudCh0eXBlLCB2YWx1ZSwgc3RhcnQsIGVuZCwgbG9jKSB7Ci0gICAgICAgIHZh
ciBjb21tZW50LCBhdHRhY2hlcjsKLQorICAgICAgICB2YXIgY29tbWVudDsKICAgICAgICAgYXNz
ZXJ0KHR5cGVvZiBzdGFydCA9PT0gJ251bWJlcicsICdDb21tZW50IG11c3QgaGF2ZSB2YWxpZCBw
b3NpdGlvbicpOwogCiAgICAgICAgIC8vIEJlY2F1c2UgdGhlIHdheSB0aGUgYWN0dWFsIHRva2Vu
IGlzIHNjYW5uZWQsIG9mdGVuIHRoZSBjb21tZW50cwpAQCAtMzY5LDE0ICs0MzYsMTQgQEAgcGFy
c2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICB9CiAgICAgfQog
Ci0gICAgZnVuY3Rpb24gc2tpcFNpbmdsZUxpbmVDb21tZW50KG9mZnNldCkgeworICAgIGZ1bmN0
aW9uIHNraXBTaW5nbGVMaW5lQ29tbWVudCgpIHsKICAgICAgICAgdmFyIHN0YXJ0LCBsb2MsIGNo
LCBjb21tZW50OwogCi0gICAgICAgIHN0YXJ0ID0gaW5kZXggLSBvZmZzZXQ7CisgICAgICAgIHN0
YXJ0ID0gaW5kZXggLSAyOwogICAgICAgICBsb2MgPSB7CiAgICAgICAgICAgICBzdGFydDogewog
ICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgY29sdW1u
OiBpbmRleCAtIGxpbmVTdGFydCAtIG9mZnNldAorICAgICAgICAgICAgICAgIGNvbHVtbjogaW5k
ZXggLSBsaW5lU3RhcnQgLSAyCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKQEAgLTM4NSw3
ICs0NTIsNyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAg
ICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2gpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbW1lbnQgPSBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyBvZmZzZXQsIGluZGV4IC0gMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyAyLCBpbmRl
eCAtIDEpOwogICAgICAgICAgICAgICAgICAgICBsb2MuZW5kID0gewogICAgICAgICAgICAgICAg
ICAgICAgICAgbGluZTogbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVt
bjogaW5kZXggLSBsaW5lU3RhcnQgLSAxCkBAIC00MDIsNyArNDY5LDcgQEAgcGFyc2VTdGF0ZW1l
bnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGV4
dHJhLmNvbW1lbnRzKSB7Ci0gICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0YXJ0
ICsgb2Zmc2V0LCBpbmRleCk7CisgICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0
YXJ0ICsgMiwgaW5kZXgpOwogICAgICAgICAgICAgbG9jLmVuZCA9IHsKICAgICAgICAgICAgICAg
ICBsaW5lOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5l
U3RhcnQKQEAgLTQyNyw3ICs0OTQsNyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3Vy
Y2VFbGVtZW50CiAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewogICAgICAgICAgICAg
Y2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7CiAgICAgICAgICAgICBpZiAoaXNMaW5lVGVy
bWluYXRvcihjaCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDB4MEQgJiYgc291cmNl
LmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgwQSkgeworICAgICAgICAgICAgICAgIGlmIChj
aCA9PT0gMTMgJiYgc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMTApIHsKICAgICAg
ICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgKytsaW5lTnVtYmVyOwpAQCAtNDM2LDkgKzUwMyw5IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVl
LCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3Ro
KSB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0
ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGNoID09PSAweDJBKSB7Ci0gICAgICAgICAgICAgICAgLy8gQmxvY2sgY29tbWVudCBl
bmRzIHdpdGggJyovJy4KLSAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5k
ZXggKyAxKSA9PT0gMHgyRikgeworICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gNDIpIHsK
KyAgICAgICAgICAgICAgICAvLyBCbG9jayBjb21tZW50IGVuZHMgd2l0aCAnKi8nIChjaGFyICM0
MiwgY2hhciAjNDcpLgorICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRl
eCArIDEpID09PSA0NykgewogICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAg
ICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmEuY29tbWVu
dHMpIHsKQEAgLTQ2MSw5ICs1MjgsOCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3Vy
Y2VFbGVtZW50CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2tpcENvbW1lbnQoKSB7Ci0gICAgICAg
IHZhciBjaCwgc3RhcnQ7CisgICAgICAgIHZhciBjaDsKIAotICAgICAgICBzdGFydCA9IChpbmRl
eCA9PT0gMCk7CiAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewogICAgICAgICAgICAg
Y2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7CiAKQEAgLTQ3MSw0NSArNTM3LDI0IEBAIHBh
cnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgICAgICAr
K2luZGV4OwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoKSkgewog
ICAgICAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDBE
ICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgwQSkgeworICAgICAgICAgICAgICAg
IGlmIChjaCA9PT0gMTMgJiYgc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAxMCkgewogICAg
ICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICArK2xpbmVOdW1iZXI7CiAgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7Ci0g
ICAgICAgICAgICAgICAgc3RhcnQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9
PT0gMHgyRikgeyAvLyBVKzAwMkYgaXMgJy8nCisgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09
PSA0NykgeyAvLyA0NyBpcyAnLycKICAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29k
ZUF0KGluZGV4ICsgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDJGKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGNoID09PSA0NykgewogICAgICAgICAgICAgICAgICAgICArK2luZGV4
OwogICAgICAgICAgICAgICAgICAgICArK2luZGV4OwotICAgICAgICAgICAgICAgICAgICBza2lw
U2luZ2xlTGluZUNvbW1lbnQoMik7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDJBKSB7ICAvLyBVKzAwMkEgaXMg
JyonCisgICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCgpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDQyKSB7ICAvLyA0MiBpcyAnKicKICAgICAgICAg
ICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAg
ICAgICAgICAgICAgICAgc2tpcE11bHRpTGluZUNvbW1lbnQoKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ICYmIGNoID09PSAweDJEKSB7IC8vIFUrMDAyRCBp
cyAnLScKLSAgICAgICAgICAgICAgICAvLyBVKzAwM0UgaXMgJz4nCi0gICAgICAgICAgICAgICAg
aWYgKChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpID09PSAweDJEKSAmJiAoc291cmNlLmNo
YXJDb2RlQXQoaW5kZXggKyAyKSA9PT0gMHgzRSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
Jy0tPicgaXMgYSBzaW5nbGUtbGluZSBjb21tZW50Ci0gICAgICAgICAgICAgICAgICAgIGluZGV4
ICs9IDM7Ci0gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCgzKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDNDKSB7IC8vIFUr
MDAzQyBpcyAnPCcKLSAgICAgICAgICAgICAgICBpZiAoc291cmNlLnNsaWNlKGluZGV4ICsgMSwg
aW5kZXggKyA0KSA9PT0gJyEtLScpIHsKLSAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8g
YDxgCi0gICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGAhYAotICAgICAgICAgICAgICAg
ICAgICArK2luZGV4OyAvLyBgLWAKLSAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYC1g
Ci0gICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVudCg0KTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtNTMxLDE1ICs1NzYsNDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBh
cnNlU291cmNlRWxlbWVudAogICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2Rl
KTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBzY2FuVW5pY29kZUNvZGVQb2ludEVzY2FwZSgpIHsK
KyAgICAgICAgdmFyIGNoLCBjb2RlLCBjdTEsIGN1MjsKKworICAgICAgICBjaCA9IHNvdXJjZVtp
bmRleF07CisgICAgICAgIGNvZGUgPSAwOworCisgICAgICAgIC8vIEF0IGxlYXN0LCBvbmUgaGV4
IGRpZ2l0IGlzIHJlcXVpcmVkLgorICAgICAgICBpZiAoY2ggPT09ICd9JykgeworICAgICAgICAg
ICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwor
ICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAgICAgICAg
ICBjaCA9IHNvdXJjZVtpbmRleCsrXTsKKyAgICAgICAgICAgIGlmICghaXNIZXhEaWdpdChjaCkp
IHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNv
ZGUgPSBjb2RlICogMTYgKyAnMDEyMzQ1Njc4OWFiY2RlZicuaW5kZXhPZihjaC50b0xvd2VyQ2Fz
ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb2RlID4gMHgxMEZGRkYgfHwgY2ggIT09
ICd9JykgeworICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRv
a2VuLCAnSUxMRUdBTCcpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVVRGLTE2IEVuY29kaW5n
CisgICAgICAgIGlmIChjb2RlIDw9IDB4RkZGRikgeworICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Zy5mcm9tQ2hhckNvZGUoY29kZSk7CisgICAgICAgIH0KKyAgICAgICAgY3UxID0gKChjb2RlIC0g
MHgxMDAwMCkgPj4gMTApICsgMHhEODAwOworICAgICAgICBjdTIgPSAoKGNvZGUgLSAweDEwMDAw
KSAmIDEwMjMpICsgMHhEQzAwOworICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShj
dTEsIGN1Mik7CisgICAgfQorCiAgICAgZnVuY3Rpb24gZ2V0RXNjYXBlZElkZW50aWZpZXIoKSB7
CiAgICAgICAgIHZhciBjaCwgaWQ7CiAKICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChp
bmRleCsrKTsKICAgICAgICAgaWQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKTsKIAotICAgICAg
ICAvLyAnXHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci4K
LSAgICAgICAgaWYgKGNoID09PSAweDVDKSB7Ci0gICAgICAgICAgICBpZiAoc291cmNlLmNoYXJD
b2RlQXQoaW5kZXgpICE9PSAweDc1KSB7CisgICAgICAgIC8vICdcdScgKGNoYXIgIzkyLCBjaGFy
ICMxMTcpIGRlbm90ZXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuCisgICAgICAgIGlmIChjaCA9PT0g
OTIpIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgIT09IDExNykg
ewogICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tl
biwgJ0lMTEVHQUwnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICsraW5kZXg7CkBAIC01
NTgsMTAgKzYzNSwxMCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50
CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgaWQgKz0gU3RyaW5nLmZyb21DaGFy
Q29kZShjaCk7CiAKLSAgICAgICAgICAgIC8vICdcdScgKFUrMDA1QywgVSswMDc1KSBkZW5vdGVz
IGFuIGVzY2FwZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgaWYgKGNoID09PSAweDVDKSB7Cisg
ICAgICAgICAgICAvLyAnXHUnIChjaGFyICM5MiwgY2hhciAjMTE3KSBkZW5vdGVzIGFuIGVzY2Fw
ZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgaWYgKGNoID09PSA5MikgewogICAgICAgICAgICAg
ICAgIGlkID0gaWQuc3Vic3RyKDAsIGlkLmxlbmd0aCAtIDEpOwotICAgICAgICAgICAgICAgIGlm
IChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgIT09IDB4NzUpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpICE9PSAxMTcpIHsKICAgICAgICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICArK2luZGV4OwpAQCAtNTgyLDggKzY1
OSw4IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAg
c3RhcnQgPSBpbmRleCsrOwogICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAg
ICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpOwotICAgICAgICAgICAgaWYgKGNo
ID09PSAweDVDKSB7Ci0gICAgICAgICAgICAgICAgLy8gQmxhY2tzbGFzaCAoVSswMDVDKSBtYXJr
cyBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgIGlmIChjaCA9PT0gOTIpIHsK
KyAgICAgICAgICAgICAgICAvLyBCbGFja3NsYXNoIChjaGFyICM5MikgbWFya3MgVW5pY29kZSBl
c2NhcGUgc2VxdWVuY2UuCiAgICAgICAgICAgICAgICAgaW5kZXggPSBzdGFydDsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2V0RXNjYXBlZElkZW50aWZpZXIoKTsKICAgICAgICAgICAgIH0KQEAg
LTYwMiw4ICs2NzksOCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50
CiAKICAgICAgICAgc3RhcnQgPSBpbmRleDsKIAotICAgICAgICAvLyBCYWNrc2xhc2ggKFUrMDA1
Qykgc3RhcnRzIGFuIGVzY2FwZWQgY2hhcmFjdGVyLgotICAgICAgICBpZCA9IChzb3VyY2UuY2hh
ckNvZGVBdChpbmRleCkgPT09IDB4NUMpID8gZ2V0RXNjYXBlZElkZW50aWZpZXIoKSA6IGdldElk
ZW50aWZpZXIoKTsKKyAgICAgICAgLy8gQmFja3NsYXNoIChjaGFyICM5Mikgc3RhcnRzIGFuIGVz
Y2FwZWQgY2hhcmFjdGVyLgorICAgICAgICBpZCA9IChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkg
PT09IDkyKSA/IGdldEVzY2FwZWRJZGVudGlmaWVyKCkgOiBnZXRJZGVudGlmaWVyKCk7CiAKICAg
ICAgICAgLy8gVGhlcmUgaXMgbm8ga2V5d29yZCBvciBsaXRlcmFsIHdpdGggb25seSBvbmUgY2hh
cmFjdGVyLgogICAgICAgICAvLyBUaHVzLCBpdCBtdXN0IGJlIGFuIGlkZW50aWZpZXIuCkBAIC02
MjQsOCArNzAxLDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
ICAgICAgICAgICAgdmFsdWU6IGlkLAogICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJl
ciwKICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgc3RhcnQ6
IHN0YXJ0LAotICAgICAgICAgICAgZW5kOiBpbmRleAorICAgICAgICAgICAgcmFuZ2U6IFtzdGFy
dCwgaW5kZXhdCiAgICAgICAgIH07CiAgICAgfQogCkBAIC02NDIsMjUgKzcxOCwyMyBAQCBwYXJz
ZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICBjaDQ7CiAK
ICAgICAgICAgc3dpdGNoIChjb2RlKSB7Ci0KICAgICAgICAgLy8gQ2hlY2sgZm9yIG1vc3QgY29t
bW9uIHNpbmdsZS1jaGFyYWN0ZXIgcHVuY3R1YXRvcnMuCi0gICAgICAgIGNhc2UgMHgyRTogIC8v
IC4gZG90Ci0gICAgICAgIGNhc2UgMHgyODogIC8vICggb3BlbiBicmFja2V0Ci0gICAgICAgIGNh
c2UgMHgyOTogIC8vICkgY2xvc2UgYnJhY2tldAotICAgICAgICBjYXNlIDB4M0I6ICAvLyA7IHNl
bWljb2xvbgotICAgICAgICBjYXNlIDB4MkM6ICAvLyAsIGNvbW1hCi0gICAgICAgIGNhc2UgMHg3
QjogIC8vIHsgb3BlbiBjdXJseSBicmFjZQotICAgICAgICBjYXNlIDB4N0Q6ICAvLyB9IGNsb3Nl
IGN1cmx5IGJyYWNlCi0gICAgICAgIGNhc2UgMHg1QjogIC8vIFsKLSAgICAgICAgY2FzZSAweDVE
OiAgLy8gXQotICAgICAgICBjYXNlIDB4M0E6ICAvLyA6Ci0gICAgICAgIGNhc2UgMHgzRjogIC8v
ID8KLSAgICAgICAgY2FzZSAweDdFOiAgLy8gfgorICAgICAgICBjYXNlIDQwOiAgIC8vICggb3Bl
biBicmFja2V0CisgICAgICAgIGNhc2UgNDE6ICAgLy8gKSBjbG9zZSBicmFja2V0CisgICAgICAg
IGNhc2UgNTk6ICAgLy8gOyBzZW1pY29sb24KKyAgICAgICAgY2FzZSA0NDogICAvLyAsIGNvbW1h
CisgICAgICAgIGNhc2UgMTIzOiAgLy8geyBvcGVuIGN1cmx5IGJyYWNlCisgICAgICAgIGNhc2Ug
MTI1OiAgLy8gfSBjbG9zZSBjdXJseSBicmFjZQorICAgICAgICBjYXNlIDkxOiAgIC8vIFsKKyAg
ICAgICAgY2FzZSA5MzogICAvLyBdCisgICAgICAgIGNhc2UgNTg6ICAgLy8gOgorICAgICAgICBj
YXNlIDYzOiAgIC8vID8KKyAgICAgICAgY2FzZSAxMjY6ICAvLyB+CiAgICAgICAgICAgICArK2lu
ZGV4OwogICAgICAgICAgICAgaWYgKGV4dHJhLnRva2VuaXplKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvZGUgPT09IDB4MjgpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gNDApIHsK
ICAgICAgICAgICAgICAgICAgICAgZXh0cmEub3BlblBhcmVuVG9rZW4gPSBleHRyYS50b2tlbnMu
bGVuZ3RoOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHg3QikgeworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMTIzKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC02NjksNDIgKzc0Myw0MCBAQCBwYXJzZVN0YXRl
bWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICAgICAgdmFsdWU6IFN0
cmluZy5mcm9tQ2hhckNvZGUoY29kZSksCiAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGlu
ZU51bWJlciwKICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAg
ICAgICAgICBzdGFydDogc3RhcnQsCi0gICAgICAgICAgICAgICAgZW5kOiBpbmRleAorICAgICAg
ICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQogICAgICAgICAgICAgfTsKIAogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgY29kZTIgPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCAr
IDEpOwogCi0gICAgICAgICAgICAvLyAnPScgKFUrMDAzRCkgbWFya3MgYW4gYXNzaWdubWVudCBv
ciBjb21wYXJpc29uIG9wZXJhdG9yLgotICAgICAgICAgICAgaWYgKGNvZGUyID09PSAweDNEKSB7
CisgICAgICAgICAgICAvLyAnPScgKGNoYXIgIzYxKSBtYXJrcyBhbiBhc3NpZ25tZW50IG9yIGNv
bXBhcmlzb24gb3BlcmF0b3IuCisgICAgICAgICAgICBpZiAoY29kZTIgPT09IDYxKSB7CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAweDJCOiAg
Ly8gKwotICAgICAgICAgICAgICAgIGNhc2UgMHgyRDogIC8vIC0KLSAgICAgICAgICAgICAgICBj
YXNlIDB4MkY6ICAvLyAvCi0gICAgICAgICAgICAgICAgY2FzZSAweDNDOiAgLy8gPAotICAgICAg
ICAgICAgICAgIGNhc2UgMHgzRTogIC8vID4KLSAgICAgICAgICAgICAgICBjYXNlIDB4NUU6ICAv
LyBeCi0gICAgICAgICAgICAgICAgY2FzZSAweDdDOiAgLy8gfAotICAgICAgICAgICAgICAgIGNh
c2UgMHgyNTogIC8vICUKLSAgICAgICAgICAgICAgICBjYXNlIDB4MjY6ICAvLyAmCi0gICAgICAg
ICAgICAgICAgY2FzZSAweDJBOiAgLy8gKgorICAgICAgICAgICAgICAgIGNhc2UgMzc6ICAvLyAl
CisgICAgICAgICAgICAgICAgY2FzZSAzODogIC8vICYKKyAgICAgICAgICAgICAgICBjYXNlIDQy
OiAgLy8gKjoKKyAgICAgICAgICAgICAgICBjYXNlIDQzOiAgLy8gKworICAgICAgICAgICAgICAg
IGNhc2UgNDU6ICAvLyAtCisgICAgICAgICAgICAgICAgY2FzZSA0NzogIC8vIC8KKyAgICAgICAg
ICAgICAgICBjYXNlIDYwOiAgLy8gPAorICAgICAgICAgICAgICAgIGNhc2UgNjI6ICAvLyA+Cisg
ICAgICAgICAgICAgICAgY2FzZSA5NDogIC8vIF4KKyAgICAgICAgICAgICAgICBjYXNlIDEyNDog
Ly8gfAogICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAyOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRv
ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNv
ZGUpICsgU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlMiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbGluZVN0
YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICAgICAgICAgICAg
ICByYW5nZTogW3N0YXJ0LCBpbmRleF0KICAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAg
ICAgICAgICAgIGNhc2UgMHgyMTogLy8gIQotICAgICAgICAgICAgICAgIGNhc2UgMHgzRDogLy8g
PQorICAgICAgICAgICAgICAgIGNhc2UgMzM6IC8vICEKKyAgICAgICAgICAgICAgICBjYXNlIDYx
OiAvLyA9CiAgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CiAKICAgICAgICAgICAgICAg
ICAgICAgLy8gIT09IGFuZCA9PT0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5jaGFy
Q29kZUF0KGluZGV4KSA9PT0gMHgzRCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNl
LmNoYXJDb2RlQXQoaW5kZXgpID09PSA2MSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKytp
bmRleDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ewpAQCAtNzEyLDYxICs3ODQsMTA2IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJj
ZUVsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzb3VyY2Uuc2xpY2Uoc3Rh
cnQsIGluZGV4KSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1i
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVuZDogaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4
XQogICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gUGVlayBtb3JlIGNo
YXJhY3RlcnMuCisKKyAgICAgICAgY2gyID0gc291cmNlW2luZGV4ICsgMV07CisgICAgICAgIGNo
MyA9IHNvdXJjZVtpbmRleCArIDJdOworICAgICAgICBjaDQgPSBzb3VyY2VbaW5kZXggKyAzXTsK
KwogICAgICAgICAvLyA0LWNoYXJhY3RlciBwdW5jdHVhdG9yOiA+Pj49CiAKLSAgICAgICAgY2g0
ID0gc291cmNlLnN1YnN0cihpbmRleCwgNCk7CisgICAgICAgIGlmIChjaDEgPT09ICc+JyAmJiBj
aDIgPT09ICc+JyAmJiBjaDMgPT09ICc+JykgeworICAgICAgICAgICAgaWYgKGNoNCA9PT0gJz0n
KSB7CisgICAgICAgICAgICAgICAgaW5kZXggKz0gNDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLAorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZTogJz4+Pj0nLAorICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVy
OiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwK
KyAgICAgICAgICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCisgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgIGlmIChjaDQgPT09ICc+
Pj49JykgewotICAgICAgICAgICAgaW5kZXggKz0gNDsKKyAgICAgICAgLy8gMy1jaGFyYWN0ZXIg
cHVuY3R1YXRvcnM6ID09PSAhPT0gPj4+IDw8PSA+Pj0KKworICAgICAgICBpZiAoY2gxID09PSAn
PicgJiYgY2gyID09PSAnPicgJiYgY2gzID09PSAnPicpIHsKKyAgICAgICAgICAgIGluZGV4ICs9
IDM7CiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1
bmN0dWF0b3IsCi0gICAgICAgICAgICAgICAgdmFsdWU6IGNoNCwKKyAgICAgICAgICAgICAgICB2
YWx1ZTogJz4+PicsCiAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAg
ICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgICAgICBzdGFy
dDogc3RhcnQsCi0gICAgICAgICAgICAgICAgZW5kOiBpbmRleAorICAgICAgICAgICAgICAgIHJh
bmdlOiBbc3RhcnQsIGluZGV4XQogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIDMtY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiA9PT0gIT09ID4+PiA8PD0gPj49CisgICAgICAg
IGlmIChjaDEgPT09ICc8JyAmJiBjaDIgPT09ICc8JyAmJiBjaDMgPT09ICc9JykgeworICAgICAg
ICAgICAgaW5kZXggKz0gMzsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAg
dHlwZTogVG9rZW4uUHVuY3R1YXRvciwKKyAgICAgICAgICAgICAgICB2YWx1ZTogJzw8PScsCisg
ICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICBs
aW5lU3RhcnQ6IGxpbmVTdGFydCwKKyAgICAgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRl
eF0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KIAotICAgICAgICBjaDMgPSBjaDQuc3Vic3Ry
KDAsIDMpOworICAgICAgICBpZiAoY2gxID09PSAnPicgJiYgY2gyID09PSAnPicgJiYgY2gzID09
PSAnPScpIHsKKyAgICAgICAgICAgIGluZGV4ICs9IDM7CisgICAgICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCisgICAgICAgICAgICAgICAg
dmFsdWU6ICc+Pj0nLAorICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCisg
ICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCisgICAgICAgICAgICAgICAgcmFu
Z2U6IFtzdGFydCwgaW5kZXhdCisgICAgICAgICAgICB9OworICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGNoMyA9PT0gJz4+PicgfHwgY2gzID09PSAnPDw9JyB8fCBjaDMgPT09ICc+Pj0nKSB7Cisg
ICAgICAgIGlmIChjaDEgPT09ICcuJyAmJiBjaDIgPT09ICcuJyAmJiBjaDMgPT09ICcuJykgewog
ICAgICAgICAgICAgaW5kZXggKz0gMzsKICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAg
ICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKLSAgICAgICAgICAgICAgICB2YWx1ZTogY2gz
LAorICAgICAgICAgICAgICAgIHZhbHVlOiAnLi4uJywKICAgICAgICAgICAgICAgICBsaW5lTnVt
YmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAot
ICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKLSAgICAgICAgICAgICAgICBlbmQ6IGluZGV4
CisgICAgICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCiAgICAgICAgICAgICB9Owog
ICAgICAgICB9CiAKICAgICAgICAgLy8gT3RoZXIgMi1jaGFyYWN0ZXIgcHVuY3R1YXRvcnM6ICsr
IC0tIDw8ID4+ICYmIHx8Ci0gICAgICAgIGNoMiA9IGNoMy5zdWJzdHIoMCwgMik7CiAKLSAgICAg
ICAgaWYgKChjaDEgPT09IGNoMlsxXSAmJiAoJystPD4mfCcuaW5kZXhPZihjaDEpID49IDApKSB8
fCBjaDIgPT09ICc9PicpIHsKKyAgICAgICAgaWYgKGNoMSA9PT0gY2gyICYmICgnKy08PiZ8Jy5p
bmRleE9mKGNoMSkgPj0gMCkpIHsKKyAgICAgICAgICAgIGluZGV4ICs9IDI7CisgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCisgICAg
ICAgICAgICAgICAgdmFsdWU6IGNoMSArIGNoMiwKKyAgICAgICAgICAgICAgICBsaW5lTnVtYmVy
OiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAorICAg
ICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQorICAgICAgICAgICAgfTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChjaDEgPT09ICc9JyAmJiBjaDIgPT09ICc+JykgewogICAgICAg
ICAgICAgaW5kZXggKz0gMjsKICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAg
dHlwZTogVG9rZW4uUHVuY3R1YXRvciwKLSAgICAgICAgICAgICAgICB2YWx1ZTogY2gyLAorICAg
ICAgICAgICAgICAgIHZhbHVlOiAnPT4nLAogICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxp
bmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAg
ICAgICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAgICAgICAgIGVuZDogaW5kZXgKKyAgICAg
ICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0KICAgICAgICAgICAgIH07CiAgICAgICAg
IH0KIAotICAgICAgICAvLyAxLWNoYXJhY3RlciBwdW5jdHVhdG9yczogPCA+ID0gISArIC0gKiAl
ICYgfCBeIC8KICAgICAgICAgaWYgKCc8Pj0hKy0qJSZ8Xi8nLmluZGV4T2YoY2gxKSA+PSAwKSB7
CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHsKQEAgLTc3NCw4ICs4
OTEsMTggQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAg
ICAgICAgICAgIHZhbHVlOiBjaDEsCiAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51
bWJlciwKICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAg
ICAgICBzdGFydDogc3RhcnQsCi0gICAgICAgICAgICAgICAgZW5kOiBpbmRleAorICAgICAgICAg
ICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQorICAgICAgICAgICAgfTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChjaDEgPT09ICcuJykgeworICAgICAgICAgICAgKytpbmRleDsKKyAgICAg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwK
KyAgICAgICAgICAgICAgICB2YWx1ZTogY2gxLAorICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6
IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCisgICAg
ICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCiAgICAgICAgICAgICB9OwogICAgICAg
ICB9CiAKQEAgLTgwNywxMyArOTM0LDU3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNv
dXJjZUVsZW1lbnQKICAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludCgnMHgnICsgbnVtYmVyLCAx
NiksCiAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgbGlu
ZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICBzdGFydDogc3RhcnQsCi0gICAgICAgICAg
ICBlbmQ6IGluZGV4CisgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0KKyAgICAgICAg
fTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzY2FuQmluYXJ5TGl0ZXJhbChzdGFydCkgeworICAg
ICAgICB2YXIgY2gsIG51bWJlcjsKKworICAgICAgICBudW1iZXIgPSAnJzsKKworICAgICAgICB3
aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKKyAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4XTsK
KyAgICAgICAgICAgIGlmIChjaCAhPT0gJzAnICYmIGNoICE9PSAnMScpIHsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2Vb
aW5kZXgrK107CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVtYmVyLmxlbmd0aCA9PT0gMCkg
eworICAgICAgICAgICAgLy8gb25seSAwYiBvciAwQgorICAgICAgICAgICAgdGhyb3dFcnJvcih7
fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFy
Q29kZUF0KGluZGV4KTsKKyAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCisg
ICAgICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoY2gpIHx8IGlzRGVjaW1hbERpZ2l0KGNo
KSkgeworICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRU
b2tlbiwgJ0lMTEVHQUwnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICB0eXBlOiBUb2tlbi5OdW1lcmljTGl0ZXJhbCwKKyAgICAgICAg
ICAgIHZhbHVlOiBwYXJzZUludChudW1iZXIsIDIpLAorICAgICAgICAgICAgbGluZU51bWJlcjog
bGluZU51bWJlciwKKyAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAorICAgICAgICAg
ICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCiAgICAgICAgIH07CiAgICAgfQogCi0gICAgZnVuY3Rp
b24gc2Nhbk9jdGFsTGl0ZXJhbChzdGFydCkgewotICAgICAgICB2YXIgbnVtYmVyID0gJzAnICsg
c291cmNlW2luZGV4KytdOworICAgIGZ1bmN0aW9uIHNjYW5PY3RhbExpdGVyYWwocHJlZml4LCBz
dGFydCkgeworICAgICAgICB2YXIgbnVtYmVyLCBvY3RhbDsKKworICAgICAgICBpZiAoaXNPY3Rh
bERpZ2l0KHByZWZpeCkpIHsKKyAgICAgICAgICAgIG9jdGFsID0gdHJ1ZTsKKyAgICAgICAgICAg
IG51bWJlciA9ICcwJyArIHNvdXJjZVtpbmRleCsrXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG9jdGFsID0gZmFsc2U7CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAg
bnVtYmVyID0gJyc7CisgICAgICAgIH0KKwogICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgp
IHsKICAgICAgICAgICAgIGlmICghaXNPY3RhbERpZ2l0KHNvdXJjZVtpbmRleF0pKSB7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC04MjEsNiArOTkyLDExIEBAIHBhcnNlU3RhdGVtZW50OiB0
cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5k
ZXgrK107CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIW9jdGFsICYmIG51bWJlci5sZW5ndGgg
PT09IDApIHsKKyAgICAgICAgICAgIC8vIG9ubHkgMG8gb3IgME8KKyAgICAgICAgICAgIHRocm93
RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKKyAgICAgICAg
fQorCiAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRl
eCkpIHx8IGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHsKICAgICAg
ICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwn
KTsKICAgICAgICAgfQpAQCAtODI4LDExICsxMDA0LDEwIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVl
LCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgIHR5cGU6
IFRva2VuLk51bWVyaWNMaXRlcmFsLAogICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KG51bWJl
ciwgOCksCi0gICAgICAgICAgICBvY3RhbDogdHJ1ZSwKKyAgICAgICAgICAgIG9jdGFsOiBvY3Rh
bCwKICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICBsaW5l
U3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKLSAgICAgICAgICAg
IGVuZDogaW5kZXgKKyAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQogICAgICAgICB9
OwogICAgIH0KIApAQCAtODUxLDE1ICsxMDI2LDIwIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBw
YXJzZVNvdXJjZUVsZW1lbnQKIAogICAgICAgICAgICAgLy8gSGV4IG51bWJlciBzdGFydHMgd2l0
aCAnMHgnLgogICAgICAgICAgICAgLy8gT2N0YWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJy4KKyAg
ICAgICAgICAgIC8vIE9jdGFsIG51bWJlciBpbiBFUzYgc3RhcnRzIHdpdGggJzBvJy4KKyAgICAg
ICAgICAgIC8vIEJpbmFyeSBudW1iZXIgaW4gRVM2IHN0YXJ0cyB3aXRoICcwYicuCiAgICAgICAg
ICAgICBpZiAobnVtYmVyID09PSAnMCcpIHsKICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICd4
JyB8fCBjaCA9PT0gJ1gnKSB7CiAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzY2FuSGV4TGl0ZXJhbChzdGFydCk7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChpc09jdGFsRGlnaXQoY2gpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzY2FuT2N0YWxMaXRlcmFsKHN0YXJ0KTsKKyAgICAgICAgICAgICAg
ICBpZiAoY2ggPT09ICdiJyB8fCBjaCA9PT0gJ0InKSB7CisgICAgICAgICAgICAgICAgICAgICsr
aW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuQmluYXJ5TGl0ZXJhbChzdGFy
dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ28nIHx8
IGNoID09PSAnTycgfHwgaXNPY3RhbERpZ2l0KGNoKSkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2Nhbk9jdGFsTGl0ZXJhbChjaCwgc3RhcnQpOwogICAgICAgICAgICAgICAgIH0KLQog
ICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgbnVtYmVyIHN0YXJ0cyB3aXRoICcwJyBzdWNoIGFz
ICcwOScgaXMgaWxsZWdhbC4KICAgICAgICAgICAgICAgICBpZiAoY2ggJiYgaXNEZWNpbWFsRGln
aXQoY2guY2hhckNvZGVBdCgwKSkpIHsKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7
fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwpAQCAtOTA1LDE3ICsxMDg1
LDE0IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAg
ICAgIHZhbHVlOiBwYXJzZUZsb2F0KG51bWJlciksCiAgICAgICAgICAgICBsaW5lTnVtYmVyOiBs
aW5lTnVtYmVyLAogICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAg
ICBzdGFydDogc3RhcnQsCi0gICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICByYW5n
ZTogW3N0YXJ0LCBpbmRleF0KICAgICAgICAgfTsKICAgICB9CiAKICAgICAvLyA3LjguNCBTdHJp
bmcgTGl0ZXJhbHMKIAogICAgIGZ1bmN0aW9uIHNjYW5TdHJpbmdMaXRlcmFsKCkgewotICAgICAg
ICB2YXIgc3RyID0gJycsIHF1b3RlLCBzdGFydCwgY2gsIGNvZGUsIHVuZXNjYXBlZCwgcmVzdG9y
ZSwgb2N0YWwgPSBmYWxzZSwgc3RhcnRMaW5lTnVtYmVyLCBzdGFydExpbmVTdGFydDsKLSAgICAg
ICAgc3RhcnRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKLSAgICAgICAgc3RhcnRMaW5lU3RhcnQg
PSBsaW5lU3RhcnQ7CisgICAgICAgIHZhciBzdHIgPSAnJywgcXVvdGUsIHN0YXJ0LCBjaCwgY29k
ZSwgdW5lc2NhcGVkLCByZXN0b3JlLCBvY3RhbCA9IGZhbHNlOwogCiAgICAgICAgIHF1b3RlID0g
c291cmNlW2luZGV4XTsKICAgICAgICAgYXNzZXJ0KChxdW90ZSA9PT0gJ1wnJyB8fCBxdW90ZSA9
PT0gJyInKSwKQEAgLTkzNCwxNyArMTExMSw2IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJz
ZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTsKICAg
ICAgICAgICAgICAgICBpZiAoIWNoIHx8ICFpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQo
MCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdG9yZSA9IGluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAg
dW5lc2NhcGVkID0gc2NhbkhleEVzY2FwZShjaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodW5lc2NhcGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IHVuZXNj
YXBlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXggPSByZXN0b3JlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ciArPSBjaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ciArPSAnXG4nOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC05NTQsNiArMTEyMCwyMiBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VF
bGVtZW50CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyICs9ICdcdCc7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZVtpbmRleF0gPT09ICd7JykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyICs9IHNjYW5Vbmljb2RlQ29kZVBvaW50RXNjYXBlKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmUg
PSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmVzY2FwZWQgPSBzY2FuSGV4
RXNjYXBlKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5lc2NhcGVkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSB1bmVzY2FwZWQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXggPSByZXN0b3JlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHIgKz0gY2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgJ2InOgogICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcYic7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTk3Myw2ICsxMTU1LDcgQEAgcGFy
c2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2Ug
Ki8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgaXNP
Y3RhbERpZ2l0KHNvdXJjZVtpbmRleF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9jdGFsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9
IGNvZGUgKiA4ICsgJzAxMjM0NTY3Jy5pbmRleE9mKHNvdXJjZVtpbmRleCsrXSk7CkBAIC05OTMs
NyArMTE3Niw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICsrbGluZU51bWJlcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSAg
J1xyJyAmJiBzb3VyY2VbaW5kZXhdID09PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChjaCA9PT0gJ1xyJyAmJiBzb3VyY2VbaW5kZXhdID09PSAnXG4nKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGxpbmVTdGFydCA9IGluZGV4OwpAQCAtMTAxMywyMyArMTE5NiwxOTUgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgdHlwZTogVG9r
ZW4uU3RyaW5nTGl0ZXJhbCwKICAgICAgICAgICAgIHZhbHVlOiBzdHIsCiAgICAgICAgICAgICBv
Y3RhbDogb2N0YWwsCi0gICAgICAgICAgICBzdGFydExpbmVOdW1iZXI6IHN0YXJ0TGluZU51bWJl
ciwKLSAgICAgICAgICAgIHN0YXJ0TGluZVN0YXJ0OiBzdGFydExpbmVTdGFydCwKICAgICAgICAg
ICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVT
dGFydCwKLSAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKLSAgICAgICAgICAgIGVuZDogaW5kZXgK
KyAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQorICAgICAgICB9OworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHNjYW5UZW1wbGF0ZSgpIHsKKyAgICAgICAgdmFyIGNvb2tlZCA9ICcnLCBj
aCwgc3RhcnQsIHRlcm1pbmF0ZWQsIHRhaWwsIHJlc3RvcmUsIHVuZXNjYXBlZCwgY29kZSwgb2N0
YWw7CisKKyAgICAgICAgdGVybWluYXRlZCA9IGZhbHNlOworICAgICAgICB0YWlsID0gZmFsc2U7
CisgICAgICAgIHN0YXJ0ID0gaW5kZXg7CisKKyAgICAgICAgKytpbmRleDsKKworICAgICAgICB3
aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKKyAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4Kytd
OworICAgICAgICAgICAgaWYgKGNoID09PSAnYCcpIHsKKyAgICAgICAgICAgICAgICB0YWlsID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09ICckJykgeworICAgICAgICAg
ICAgICAgIGlmIChzb3VyY2VbaW5kZXhdID09PSAneycpIHsKKyAgICAgICAgICAgICAgICAgICAg
KytpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
b29rZWQgKz0gY2g7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAnXFwnKSB7CisgICAg
ICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107CisgICAgICAgICAgICAgICAgaWYgKCFp
c0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7CisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb29rZWQgKz0gJ1xuJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvb2tlZCArPSAnXHInOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgICAgICAgICAgY29va2Vk
ICs9ICdcdCc7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHNvdXJjZVtpbmRleF0gPT09ICd7JykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29v
a2VkICs9IHNjYW5Vbmljb2RlQ29kZVBvaW50RXNjYXBlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmUgPSBpbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmVzY2FwZWQgPSBzY2FuSGV4RXNjYXBl
KGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5lc2NhcGVkKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSB1bmVzY2FwZWQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXggPSByZXN0b3JlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b29rZWQgKz0gY2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9ICdc
Yic7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAnZic6CisgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gJ1xmJzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICd2JzoK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSAnXHYnOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpc09jdGFsRGlnaXQoY2gpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29kZSA9ICcwMTIzNDU2NycuaW5kZXhPZihjaCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBcMCBpcyBub3Qgb2N0YWwgZXNjYXBlIHNlcXVlbmNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgIT09IDApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBl
bHNlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYm
IGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvY3RhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGUgPSBjb2RlICogOCArICcwMTIzNDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMgZGlnaXRzIGFyZSBvbmx5IGFsbG93
ZWQgd2hlbiBzdHJpbmcgc3RhcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHdpdGggMCwgMSwgMiwgMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJzAx
MjMnLmluZGV4T2YoY2gpID49IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleCA8IGxlbmd0aCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUgKiA4ICsgJzAxMjM0NTY3Jy5pbmRleE9m
KHNvdXJjZVtpbmRleCsrXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29va2VkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSBjaDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOworICAgICAgICAgICAgICAgICAgICBpZiAoY2gg
PT09ICdccicgJiYgc291cmNlW2luZGV4XSA9PT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBsaW5lU3RhcnQgPSBpbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2guY2hhckNvZGVBdCgwKSkpIHsKKyAgICAgICAgICAg
ICAgICArK2xpbmVOdW1iZXI7CisgICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXHInICYmIHNv
dXJjZVtpbmRleF0gPT09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7CisgICAg
ICAgICAgICAgICAgY29va2VkICs9ICdcbic7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGNvb2tlZCArPSBjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghdGVybWluYXRlZCkgeworICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2Fn
ZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgIHR5cGU6IFRva2VuLlRlbXBsYXRlLAorICAgICAgICAgICAgdmFs
dWU6IHsKKyAgICAgICAgICAgICAgICBjb29rZWQ6IGNvb2tlZCwKKyAgICAgICAgICAgICAgICBy
YXc6IHNvdXJjZS5zbGljZShzdGFydCArIDEsIGluZGV4IC0gKCh0YWlsKSA/IDEgOiAyKSkKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB0YWlsOiB0YWlsLAorICAgICAgICAgICAgb2N0YWw6
IG9jdGFsLAorICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKKyAgICAgICAgICAg
IGxpbmVTdGFydDogbGluZVN0YXJ0LAorICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhd
CiAgICAgICAgIH07CiAgICAgfQogCisgICAgZnVuY3Rpb24gc2NhblRlbXBsYXRlRWxlbWVudChv
cHRpb24pIHsKKyAgICAgICAgdmFyIHN0YXJ0c1dpdGgsIHRlbXBsYXRlOworCisgICAgICAgIGxv
b2thaGVhZCA9IG51bGw7CisgICAgICAgIHNraXBDb21tZW50KCk7CisKKyAgICAgICAgc3RhcnRz
V2l0aCA9IChvcHRpb24uaGVhZCkgPyAnYCcgOiAnfSc7CisKKyAgICAgICAgaWYgKHNvdXJjZVtp
bmRleF0gIT09IHN0YXJ0c1dpdGgpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3Nh
Z2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKKyAgICAgICAgfQorCisgICAgICAgIHRl
bXBsYXRlID0gc2NhblRlbXBsYXRlKCk7CisKKyAgICAgICAgcGVlaygpOworCisgICAgICAgIHJl
dHVybiB0ZW1wbGF0ZTsKKyAgICB9CisKICAgICBmdW5jdGlvbiB0ZXN0UmVnRXhwKHBhdHRlcm4s
IGZsYWdzKSB7Ci0gICAgICAgIHZhciB2YWx1ZTsKKyAgICAgICAgdmFyIHRtcCA9IHBhdHRlcm4s
CisgICAgICAgICAgICB2YWx1ZTsKKworICAgICAgICBpZiAoZmxhZ3MuaW5kZXhPZigndScpID49
IDApIHsKKyAgICAgICAgICAgIC8vIFJlcGxhY2UgZWFjaCBhc3RyYWwgc3ltYm9sIGFuZCBldmVy
eSBVbmljb2RlIGNvZGUgcG9pbnQKKyAgICAgICAgICAgIC8vIGVzY2FwZSBzZXF1ZW5jZSB3aXRo
IGEgc2luZ2xlIEFTQ0lJIHN5bWJvbCB0byBhdm9pZCB0aHJvd2luZyBvbgorICAgICAgICAgICAg
Ly8gcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGFyZSBvbmx5IHZhbGlkIGluIGNvbWJpbmF0aW9u
IHdpdGggdGhlCisgICAgICAgICAgICAvLyBgL3VgIGZsYWcuCisgICAgICAgICAgICAvLyBOb3Rl
OiByZXBsYWNpbmcgd2l0aCB0aGUgQVNDSUkgc3ltYm9sIGB4YCBtaWdodCBjYXVzZSBmYWxzZQor
ICAgICAgICAgICAgLy8gbmVnYXRpdmVzIGluIHVubGlrZWx5IHNjZW5hcmlvcy4gRm9yIGV4YW1w
bGUsIGBbXHV7NjF9LWJdYCBpcyBhCisgICAgICAgICAgICAvLyBwZXJmZWN0bHkgdmFsaWQgcGF0
dGVybiB0aGF0IGlzIGVxdWl2YWxlbnQgdG8gYFthLWJdYCwgYnV0IGl0CisgICAgICAgICAgICAv
LyB3b3VsZCBiZSByZXBsYWNlZCBieSBgW3gtYl1gIHdoaWNoIHRocm93cyBhbiBlcnJvci4KKyAg
ICAgICAgICAgIHRtcCA9IHRtcAorICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHVceyhbMC05
YS1mQS1GXSspXH0vZywgZnVuY3Rpb24gKCQwLCAkMSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyc2VJbnQoJDEsIDE2KSA8PSAweDEwRkZGRikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICd4JzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkUmVnRXhwKTsKKyAgICAgICAgICAgICAg
ICB9KQorICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1
REZGRl0vZywgJ3gnKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpcnN0LCBkZXRlY3QgaW52
YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgogICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFs
dWUgPSBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzKTsKKyAgICAgICAgICAgIHZhbHVlID0gbmV3
IFJlZ0V4cCh0bXApOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICB0aHJvd0Vy
cm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkUmVnRXhwKTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gdmFsdWU7CisKKyAgICAgICAgLy8gUmV0dXJuIGEgcmVndWxhciBleHByZXNzaW9uIG9iamVj
dCBmb3IgdGhpcyBwYXR0ZXJuLWZsYWcgcGFpciwgb3IKKyAgICAgICAgLy8gYG51bGxgIGluIGNh
c2UgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgZG9lc24ndCBzdXBwb3J0IHRoZSBmbGFncyBpdAor
ICAgICAgICAvLyB1c2VzLgorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBS
ZWdFeHAocGF0dGVybiwgZmxhZ3MpOworICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
c2NhblJlZ0V4cEJvZHkoKSB7CkBAIC0xMTI1LDcgKzE0ODAsNyBAQCBwYXJzZVN0YXRlbWVudDog
dHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2NhblJlZ0V4
cCgpIHsKLSAgICAgICAgdmFyIHN0YXJ0LCBib2R5LCBmbGFncywgcGF0dGVybiwgdmFsdWU7Cisg
ICAgICAgIHZhciBzdGFydCwgYm9keSwgZmxhZ3MsIHZhbHVlOwogCiAgICAgICAgIGxvb2thaGVh
ZCA9IG51bGw7CiAgICAgICAgIHNraXBDb21tZW50KCk7CkBAIC0xMTM5LDYzICsxNDk0LDI3IEBA
IHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIHJl
dHVybiB7CiAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUmVndWxhckV4cHJlc3Npb24sCiAg
ICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLAorICAgICAgICAgICAgICAgIHJlZ2V4OiB7Cisg
ICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IGJvZHkudmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgIGZsYWdzOiBmbGFncy52YWx1ZQorICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxp
bmVTdGFydCwKLSAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsCi0gICAgICAgICAgICAgICAg
ZW5kOiBpbmRleAorICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQogICAgICAg
ICAgICAgfTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICBsaXRl
cmFsOiBib2R5LmxpdGVyYWwgKyBmbGFncy5saXRlcmFsLAogICAgICAgICAgICAgdmFsdWU6IHZh
bHVlLAotICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAgICAgZW5kOiBpbmRleAor
ICAgICAgICAgICAgcmVnZXg6IHsKKyAgICAgICAgICAgICAgICBwYXR0ZXJuOiBib2R5LnZhbHVl
LAorICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncy52YWx1ZQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQogICAgICAgICB9OwogICAgIH0KIAotICAg
IGZ1bmN0aW9uIGNvbGxlY3RSZWdleCgpIHsKLSAgICAgICAgdmFyIHBvcywgbG9jLCByZWdleCwg
dG9rZW47Ci0KLSAgICAgICAgc2tpcENvbW1lbnQoKTsKLQotICAgICAgICBwb3MgPSBpbmRleDsK
LSAgICAgICAgbG9jID0gewotICAgICAgICAgICAgc3RhcnQ6IHsKLSAgICAgICAgICAgICAgICBs
aW5lOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3Rh
cnQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICByZWdleCA9IHNjYW5SZWdF
eHAoKTsKLSAgICAgICAgbG9jLmVuZCA9IHsKLSAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIs
Ci0gICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KLSAgICAgICAgaWYgKCFleHRyYS50b2tl
bml6ZSkgewotICAgICAgICAgICAgLy8gUG9wIHRoZSBwcmV2aW91cyB0b2tlbiwgd2hpY2ggaXMg
bGlrZWx5ICcvJyBvciAnLz0nCi0gICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5zLmxlbmd0aCA+
IDApIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS50b2tlbnMu
bGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuLnJhbmdlWzBdID09PSBwb3Mg
JiYgdG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh0b2tlbi52YWx1ZSA9PT0gJy8nIHx8IHRva2VuLnZhbHVlID09PSAnLz0nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnMucG9wKCk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGV4dHJh
LnRva2Vucy5wdXNoKHsKLSAgICAgICAgICAgICAgICB0eXBlOiAnUmVndWxhckV4cHJlc3Npb24n
LAotICAgICAgICAgICAgICAgIHZhbHVlOiByZWdleC5saXRlcmFsLAotICAgICAgICAgICAgICAg
IHJhbmdlOiBbcG9zLCBpbmRleF0sCi0gICAgICAgICAgICAgICAgbG9jOiBsb2MKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJlZ2V4OwotICAgIH0KLQogICAg
IGZ1bmN0aW9uIGlzSWRlbnRpZmllck5hbWUodG9rZW4pIHsKICAgICAgICAgcmV0dXJuIHRva2Vu
LnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIgfHwKICAgICAgICAgICAgIHRva2VuLnR5cGUgPT09
IFRva2VuLktleXdvcmQgfHwKQEAgLTEyMTEsMTIgKzE1MzAsOSBAQCBwYXJzZVN0YXRlbWVudDog
dHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIHByZXZUb2tlbiA9IGV4dHJhLnRva2Vu
c1tleHRyYS50b2tlbnMubGVuZ3RoIC0gMV07CiAgICAgICAgIGlmICghcHJldlRva2VuKSB7CiAg
ICAgICAgICAgICAvLyBOb3RoaW5nIGJlZm9yZSB0aGF0OiBpdCBjYW5ub3QgYmUgYSBkaXZpc2lv
bi4KLSAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTsKKyAgICAgICAgICAgIHJldHVy
biBzY2FuUmVnRXhwKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHByZXZUb2tlbi50eXBlID09
PSAnUHVuY3R1YXRvcicpIHsKLSAgICAgICAgICAgIGlmIChwcmV2VG9rZW4udmFsdWUgPT09ICdd
JykgewotICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpOwotICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKHByZXZUb2tlbi52YWx1ZSA9PT0gJyknKSB7CiAgICAgICAg
ICAgICAgICAgY2hlY2tUb2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuUGFyZW5Ub2tlbiAt
IDFdOwogICAgICAgICAgICAgICAgIGlmIChjaGVja1Rva2VuICYmCkBAIC0xMjI1LDcgKzE1NDEs
NyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ3doaWxlJyB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFsdWUgPT09ICdmb3InIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ3dpdGgnKSkgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzY2FuUmVnRXhwKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJl
dHVybiBzY2FuUHVuY3R1YXRvcigpOwogICAgICAgICAgICAgfQpAQCAtMTI0NCw3ICsxNTYwLDcg
QEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAg
ICAgICAgICAvLyBOYW1lZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tl
biA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tlbiAtIDVdOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNoZWNrVG9rZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBjb2xsZWN0UmVnZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUmVn
RXhwKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTsKQEAgLTEyNTYsMTIg
KzE1NzIsMTIgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgLy8gSXQgaXMgYSBkZWNsYXJhdGlvbi4KLSAgICAgICAgICAg
ICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5S
ZWdFeHAoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgo
KTsKKyAgICAgICAgICAgIHJldHVybiBzY2FuUmVnRXhwKCk7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKHByZXZUb2tlbi50eXBlID09PSAnS2V5d29yZCcpIHsKLSAgICAgICAgICAgIHJldHVybiBj
b2xsZWN0UmVnZXgoKTsKKyAgICAgICAgaWYgKHByZXZUb2tlbi50eXBlID09PSAnS2V5d29yZCcg
JiYgcHJldlRva2VuLnZhbHVlICE9PSAndGhpcycpIHsKKyAgICAgICAgICAgIHJldHVybiBzY2Fu
UmVnRXhwKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7CiAg
ICAgfQpAQCAtMTI3NiwzMSArMTU5MiwzMiBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VT
b3VyY2VFbGVtZW50CiAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uRU9GLAogICAgICAgICAg
ICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgbGluZVN0YXJ0
OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAgICAgc3RhcnQ6IGluZGV4LAotICAgICAgICAgICAg
ICAgIGVuZDogaW5kZXgKKyAgICAgICAgICAgICAgICByYW5nZTogW2luZGV4LCBpbmRleF0KICAg
ICAgICAgICAgIH07CiAgICAgICAgIH0KIAogICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0
KGluZGV4KTsKIAotICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoY2gpKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gc2NhbklkZW50aWZpZXIoKTsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIFZl
cnkgY29tbW9uOiAoIGFuZCApIGFuZCA7Ci0gICAgICAgIGlmIChjaCA9PT0gMHgyOCB8fCBjaCA9
PT0gMHgyOSB8fCBjaCA9PT0gMHgzQikgeworICAgICAgICBpZiAoY2ggPT09IDQwIHx8IGNoID09
PSA0MSB8fCBjaCA9PT0gNTgpIHsKICAgICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigp
OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gU3RyaW5nIGxpdGVyYWwgc3RhcnRzIHdpdGggc2lu
Z2xlIHF1b3RlIChVKzAwMjcpIG9yIGRvdWJsZSBxdW90ZSAoVSswMDIyKS4KLSAgICAgICAgaWYg
KGNoID09PSAweDI3IHx8IGNoID09PSAweDIyKSB7CisgICAgICAgIC8vIFN0cmluZyBsaXRlcmFs
IHN0YXJ0cyB3aXRoIHNpbmdsZSBxdW90ZSAoIzM5KSBvciBkb3VibGUgcXVvdGUgKCMzNCkuCisg
ICAgICAgIGlmIChjaCA9PT0gMzkgfHwgY2ggPT09IDM0KSB7CiAgICAgICAgICAgICByZXR1cm4g
c2NhblN0cmluZ0xpdGVyYWwoKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChjaCA9PT0gOTYp
IHsKKyAgICAgICAgICAgIHJldHVybiBzY2FuVGVtcGxhdGUoKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoY2gpKSB7CisgICAgICAgICAgICByZXR1cm4gc2Nhbklk
ZW50aWZpZXIoKTsKKyAgICAgICAgfQogCi0gICAgICAgIC8vIERvdCAoLikgVSswMDJFIGNhbiBh
bHNvIHN0YXJ0IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLCBoZW5jZSB0aGUgbmVlZAorICAgICAg
ICAvLyBEb3QgKC4pIGNoYXIgIzQ2IGNhbiBhbHNvIHN0YXJ0IGEgZmxvYXRpbmctcG9pbnQgbnVt
YmVyLCBoZW5jZSB0aGUgbmVlZAogICAgICAgICAvLyB0byBjaGVjayB0aGUgbmV4dCBjaGFyYWN0
ZXIuCi0gICAgICAgIGlmIChjaCA9PT0gMHgyRSkgeworICAgICAgICBpZiAoY2ggPT09IDQ2KSB7
CiAgICAgICAgICAgICBpZiAoaXNEZWNpbWFsRGlnaXQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgg
KyAxKSkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gc2Nhbk51bWVyaWNMaXRlcmFsKCk7CiAg
ICAgICAgICAgICB9CkBAIC0xMzExLDU1ICsxNjI4LDI1IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVl
LCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIHJldHVybiBzY2FuTnVtZXJpY0xpdGVy
YWwoKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFNsYXNoICgvKSBVKzAwMkYgY2FuIGFsc28g
c3RhcnQgYSByZWdleC4KLSAgICAgICAgaWYgKGV4dHJhLnRva2VuaXplICYmIGNoID09PSAweDJG
KSB7CisgICAgICAgIC8vIFNsYXNoICgvKSBjaGFyICM0NyBjYW4gYWxzbyBzdGFydCBhIHJlZ2V4
LgorICAgICAgICBpZiAoZXh0cmEudG9rZW5pemUgJiYgY2ggPT09IDQ3KSB7CiAgICAgICAgICAg
ICByZXR1cm4gYWR2YW5jZVNsYXNoKCk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc2Nh
blB1bmN0dWF0b3IoKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBjb2xsZWN0VG9rZW4oKSB7Ci0g
ICAgICAgIHZhciBsb2MsIHRva2VuLCByYW5nZSwgdmFsdWU7Ci0KLSAgICAgICAgc2tpcENvbW1l
bnQoKTsKLSAgICAgICAgbG9jID0gewotICAgICAgICAgICAgc3RhcnQ6IHsKLSAgICAgICAgICAg
ICAgICBsaW5lOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBs
aW5lU3RhcnQKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0b2tlbiA9IGFk
dmFuY2UoKTsKLSAgICAgICAgbG9jLmVuZCA9IHsKLSAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1i
ZXIsCi0gICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLkVPRikgewotICAgICAgICAgICAgdmFs
dWUgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQsIHRva2VuLmVuZCk7Ci0gICAgICAgICAgICBl
eHRyYS50b2tlbnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgdHlwZTogVG9rZW5OYW1lW3Rva2Vu
LnR5cGVdLAotICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKLSAgICAgICAgICAgICAgICBy
YW5nZTogW3Rva2VuLnN0YXJ0LCB0b2tlbi5lbmRdLAotICAgICAgICAgICAgICAgIGxvYzogbG9j
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0b2tlbjsKLSAg
ICB9Ci0KICAgICBmdW5jdGlvbiBsZXgoKSB7CiAgICAgICAgIHZhciB0b2tlbjsKIAogICAgICAg
ICB0b2tlbiA9IGxvb2thaGVhZDsKLSAgICAgICAgaW5kZXggPSB0b2tlbi5lbmQ7CisgICAgICAg
IGluZGV4ID0gdG9rZW4ucmFuZ2VbMV07CiAgICAgICAgIGxpbmVOdW1iZXIgPSB0b2tlbi5saW5l
TnVtYmVyOwogICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7CiAKLSAgICAgICAg
bG9va2FoZWFkID0gKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQnKSA/IGNvbGxl
Y3RUb2tlbigpIDogYWR2YW5jZSgpOworICAgICAgICBsb29rYWhlYWQgPSBhZHZhbmNlKCk7CiAK
LSAgICAgICAgaW5kZXggPSB0b2tlbi5lbmQ7CisgICAgICAgIGluZGV4ID0gdG9rZW4ucmFuZ2Vb
MV07CiAgICAgICAgIGxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyOwogICAgICAgICBsaW5l
U3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7CiAKQEAgLTEzNzIsOTggKzE2NTksMTI5IEBAIHBhcnNl
U3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgcG9zID0gaW5kZXg7
CiAgICAgICAgIGxpbmUgPSBsaW5lTnVtYmVyOwogICAgICAgICBzdGFydCA9IGxpbmVTdGFydDsK
LSAgICAgICAgbG9va2FoZWFkID0gKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQn
KSA/IGNvbGxlY3RUb2tlbigpIDogYWR2YW5jZSgpOworICAgICAgICBsb29rYWhlYWQgPSBhZHZh
bmNlKCk7CiAgICAgICAgIGluZGV4ID0gcG9zOwogICAgICAgICBsaW5lTnVtYmVyID0gbGluZTsK
ICAgICAgICAgbGluZVN0YXJ0ID0gc3RhcnQ7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gUG9zaXRp
b24obGluZSwgY29sdW1uKSB7Ci0gICAgICAgIHRoaXMubGluZSA9IGxpbmU7Ci0gICAgICAgIHRo
aXMuY29sdW1uID0gY29sdW1uOwotICAgIH0KKyAgICBmdW5jdGlvbiBsb29rYWhlYWQyKCkgewor
ICAgICAgICB2YXIgYWR2LCBwb3MsIGxpbmUsIHN0YXJ0LCByZXN1bHQ7CiAKLSAgICBmdW5jdGlv
biBTb3VyY2VMb2NhdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBsaW5lLCBjb2x1bW4pIHsK
LSAgICAgICAgdGhpcy5zdGFydCA9IG5ldyBQb3NpdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1u
KTsKLSAgICAgICAgdGhpcy5lbmQgPSBuZXcgUG9zaXRpb24obGluZSwgY29sdW1uKTsKLSAgICB9
CisgICAgICAgIC8vIElmIHdlIGFyZSBjb2xsZWN0aW5nIHRoZSB0b2tlbnMsIGRvbid0IGdyYWIg
dGhlIG5leHQgb25lIHlldC4KKyAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAg
ICAgICAgYWR2ID0gKHR5cGVvZiBleHRyYS5hZHZhbmNlID09PSAnZnVuY3Rpb24nKSA/IGV4dHJh
LmFkdmFuY2UgOiBhZHZhbmNlOwogCi0gICAgU3ludGF4VHJlZURlbGVnYXRlID0geworICAgICAg
ICBwb3MgPSBpbmRleDsKKyAgICAgICAgbGluZSA9IGxpbmVOdW1iZXI7CisgICAgICAgIHN0YXJ0
ID0gbGluZVN0YXJ0OwogCi0gICAgICAgIG5hbWU6ICdTeW50YXhUcmVlJywKKyAgICAgICAgLy8g
U2NhbiBmb3IgdGhlIG5leHQgaW1tZWRpYXRlIHRva2VuLgorICAgICAgICAvKiBpc3RhbmJ1bCBp
Z25vcmUgaWYgKi8KKyAgICAgICAgaWYgKGxvb2thaGVhZCA9PT0gbnVsbCkgeworICAgICAgICAg
ICAgbG9va2FoZWFkID0gYWR2KCk7CisgICAgICAgIH0KKyAgICAgICAgaW5kZXggPSBsb29rYWhl
YWQucmFuZ2VbMV07CisgICAgICAgIGxpbmVOdW1iZXIgPSBsb29rYWhlYWQubGluZU51bWJlcjsK
KyAgICAgICAgbGluZVN0YXJ0ID0gbG9va2FoZWFkLmxpbmVTdGFydDsKIAotICAgICAgICBwcm9j
ZXNzQ29tbWVudDogZnVuY3Rpb24gKG5vZGUpIHsKLSAgICAgICAgICAgIHZhciBsYXN0Q2hpbGQs
IHRyYWlsaW5nQ29tbWVudHM7CisgICAgICAgIC8vIEdyYWIgdGhlIHRva2VuIHJpZ2h0IGFmdGVy
LgorICAgICAgICByZXN1bHQgPSBhZHYoKTsKKyAgICAgICAgaW5kZXggPSBwb3M7CisgICAgICAg
IGxpbmVOdW1iZXIgPSBsaW5lOworICAgICAgICBsaW5lU3RhcnQgPSBzdGFydDsKIAotICAgICAg
ICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LlByb2dyYW0pIHsKLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS5ib2R5Lmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBtYXJrZXJDcmVhdGUoKSB7CisgICAgICAgIGlmICghZXh0cmEubG9jICYmICFl
eHRyYS5yYW5nZSkgeworICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgfQor
ICAgICAgICBza2lwQ29tbWVudCgpOworICAgICAgICByZXR1cm4ge29mZnNldDogaW5kZXgsIGxp
bmU6IGxpbmVOdW1iZXIsIGNvbDogaW5kZXggLSBsaW5lU3RhcnR9OworICAgIH0KKworICAgIGZ1
bmN0aW9uIHByb2Nlc3NDb21tZW50KG5vZGUpIHsKKyAgICAgICAgdmFyIGxhc3RDaGlsZCwKKyAg
ICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMsCisgICAgICAgICAgICBib3R0b21SaWdodCA9IGV4
dHJhLmJvdHRvbVJpZ2h0U3RhY2ssCisgICAgICAgICAgICBsYXN0ID0gYm90dG9tUmlnaHRbYm90
dG9tUmlnaHQubGVuZ3RoIC0gMV07CisKKyAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4
LlByb2dyYW0pIHsKKyAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCisgICAg
ICAgICAgICBpZiAobm9kZS5ib2R5Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGV4dHJhLnRy
YWlsaW5nQ29tbWVudHMubGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgIGlmIChleHRyYS50
cmFpbGluZ0NvbW1lbnRzWzBdLnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMV0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLnRyYWlsaW5nQ29tbWVudHM7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMgPSBbXTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBleHRyYS50cmFpbGluZ0NvbW1l
bnRzLmxlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBpZiAoZXh0cmEudHJh
aWxpbmdDb21tZW50cy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBpZiAoZXh0cmEudHJhaWxp
bmdDb21tZW50c1swXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzFdKSB7CisgICAgICAgICAgICAg
ICAgdHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLnRyYWlsaW5nQ29tbWVudHM7CisgICAgICAgICAg
ICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cyA9IFtdOwogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAoZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggPiAwICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJv
dHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50cyAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0
YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5n
ZVsxXSkgewotICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ0NvbW1lbnRzID0gZXh0cmEuYm90
dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRyYWlsaW5n
Q29tbWVudHM7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBleHRyYS5ib3R0b21SaWdodFN0
YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50czsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50
cy5sZW5ndGggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKGxhc3QgJiYgbGFzdC50cmFpbGluZ0NvbW1lbnRzICYmIGxhc3QudHJhaWxpbmdDb21t
ZW50c1swXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzFdKSB7CisgICAgICAgICAgICAgICAgdHJh
aWxpbmdDb21tZW50cyA9IGxhc3QudHJhaWxpbmdDb21tZW50czsKKyAgICAgICAgICAgICAgICBk
ZWxldGUgbGFzdC50cmFpbGluZ0NvbW1lbnRzOwogICAgICAgICAgICAgfQorICAgICAgICB9CiAK
LSAgICAgICAgICAgIC8vIEVhdGluZyB0aGUgc3RhY2suCi0gICAgICAgICAgICB3aGlsZSAoZXh0
cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggPiAwICYmIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tb
ZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS5yYW5nZVswXSA+PSBub2RlLnJhbmdl
WzBdKSB7Ci0gICAgICAgICAgICAgICAgbGFzdENoaWxkID0gZXh0cmEuYm90dG9tUmlnaHRTdGFj
ay5wb3AoKTsKKyAgICAgICAgLy8gRWF0aW5nIHRoZSBzdGFjay4KKyAgICAgICAgaWYgKGxhc3Qp
IHsKKyAgICAgICAgICAgIHdoaWxlIChsYXN0ICYmIGxhc3QucmFuZ2VbMF0gPj0gbm9kZS5yYW5n
ZVswXSkgeworICAgICAgICAgICAgICAgIGxhc3RDaGlsZCA9IGxhc3Q7CisgICAgICAgICAgICAg
ICAgbGFzdCA9IGJvdHRvbVJpZ2h0LnBvcCgpOwogICAgICAgICAgICAgfQorICAgICAgICB9CiAK
LSAgICAgICAgICAgIGlmIChsYXN0Q2hpbGQpIHsKLSAgICAgICAgICAgICAgICBpZiAobGFzdENo
aWxkLmxlYWRpbmdDb21tZW50cyAmJiBsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzW2xhc3RDaGls
ZC5sZWFkaW5nQ29tbWVudHMubGVuZ3RoIC0gMV0ucmFuZ2VbMV0gPD0gbm9kZS5yYW5nZVswXSkg
ewotICAgICAgICAgICAgICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IGxhc3RDaGlsZC5s
ZWFkaW5nQ29tbWVudHM7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsYXN0Q2hpbGQubGVh
ZGluZ0NvbW1lbnRzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
ZXh0cmEubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA+IDAgJiYgZXh0cmEubGVhZGluZ0NvbW1lbnRz
W2V4dHJhLmxlYWRpbmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBub2RlLnJhbmdl
WzBdKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMgPSBleHRyYS5sZWFk
aW5nQ29tbWVudHM7Ci0gICAgICAgICAgICAgICAgZXh0cmEubGVhZGluZ0NvbW1lbnRzID0gW107
CisgICAgICAgIGlmIChsYXN0Q2hpbGQpIHsKKyAgICAgICAgICAgIGlmIChsYXN0Q2hpbGQubGVh
ZGluZ0NvbW1lbnRzICYmIGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHNbbGFzdENoaWxkLmxlYWRp
bmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBub2RlLnJhbmdlWzBdKSB7CisgICAg
ICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMgPSBsYXN0Q2hpbGQubGVhZGluZ0NvbW1l
bnRzOworICAgICAgICAgICAgICAgIGRlbGV0ZSBsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzOwog
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGV4dHJhLmxlYWRpbmdDb21tZW50cy5s
ZW5ndGggPiAwICYmIGV4dHJhLmxlYWRpbmdDb21tZW50c1tleHRyYS5sZWFkaW5nQ29tbWVudHMu
bGVuZ3RoIC0gMV0ucmFuZ2VbMV0gPD0gbm9kZS5yYW5nZVswXSkgeworICAgICAgICAgICAgbm9k
ZS5sZWFkaW5nQ29tbWVudHMgPSBleHRyYS5sZWFkaW5nQ29tbWVudHM7CisgICAgICAgICAgICBl
eHRyYS5sZWFkaW5nQ29tbWVudHMgPSBbXTsKKyAgICAgICAgfQogCisgICAgICAgIGlmICh0cmFp
bGluZ0NvbW1lbnRzKSB7CisgICAgICAgICAgICBub2RlLnRyYWlsaW5nQ29tbWVudHMgPSB0cmFp
bGluZ0NvbW1lbnRzOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0cmFpbGluZ0NvbW1l
bnRzKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS50cmFpbGluZ0NvbW1lbnRzID0gdHJhaWxpbmdD
b21tZW50czsKLSAgICAgICAgICAgIH0KKyAgICAgICAgYm90dG9tUmlnaHQucHVzaChub2RlKTsK
KyAgICB9CiAKLSAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sucHVzaChub2RlKTsK
LSAgICAgICAgfSwKKyAgICBmdW5jdGlvbiBtYXJrZXJBcHBseShtYXJrZXIsIG5vZGUpIHsKKyAg
ICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7CisgICAgICAgICAgICBub2RlLnJhbmdlID0gW21hcmtl
ci5vZmZzZXQsIGluZGV4XTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXh0cmEubG9jKSB7Cisg
ICAgICAgICAgICBub2RlLmxvYyA9IHsKKyAgICAgICAgICAgICAgICBzdGFydDogeworICAgICAg
ICAgICAgICAgICAgICBsaW5lOiBtYXJrZXIubGluZSwKKyAgICAgICAgICAgICAgICAgICAgY29s
dW1uOiBtYXJrZXIuY29sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBlbmQ6
IHsKKyAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwKKyAgICAgICAgICAgICAg
ICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydAorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBub2RlID0gZGVsZWdhdGUucG9zdFByb2Nlc3Mobm9kZSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHsKKyAgICAgICAg
ICAgIHByb2Nlc3NDb21tZW50KG5vZGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBub2Rl
OworICAgIH0KIAotICAgICAgICBtYXJrRW5kOiBmdW5jdGlvbiAobm9kZSwgc3RhcnRUb2tlbikg
ewotICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS5y
YW5nZSA9IFtzdGFydFRva2VuLnN0YXJ0LCBpbmRleF07Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoZXh0cmEubG9jKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS5sb2MgPSBuZXcgU291
cmNlTG9jYXRpb24oCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVt
YmVyID09PSB1bmRlZmluZWQgPyAgc3RhcnRUb2tlbi5saW5lTnVtYmVyIDogc3RhcnRUb2tlbi5z
dGFydExpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0VG9rZW4uc3RhcnQgLSAo
c3RhcnRUb2tlbi5zdGFydExpbmVTdGFydCA9PT0gdW5kZWZpbmVkID8gIHN0YXJ0VG9rZW4ubGlu
ZVN0YXJ0IDogc3RhcnRUb2tlbi5zdGFydExpbmVTdGFydCksCi0gICAgICAgICAgICAgICAgICAg
IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgIGluZGV4IC0gbGluZVN0YXJ0Ci0gICAg
ICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICB0aGlzLnBvc3RQcm9jZXNzKG5vZGUpOwot
ICAgICAgICAgICAgfQorICAgIFN5bnRheFRyZWVEZWxlZ2F0ZSA9IHsKIAotICAgICAgICAgICAg
aWYgKGV4dHJhLmF0dGFjaENvbW1lbnQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3ND
b21tZW50KG5vZGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0g
ICAgICAgIH0sCisgICAgICAgIG5hbWU6ICdTeW50YXhUcmVlJywKIAogICAgICAgICBwb3N0UHJv
Y2VzczogZnVuY3Rpb24gKG5vZGUpIHsKLSAgICAgICAgICAgIGlmIChleHRyYS5zb3VyY2UpIHsK
LSAgICAgICAgICAgICAgICBub2RlLmxvYy5zb3VyY2UgPSBleHRyYS5zb3VyY2U7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgfSwKIApAQCAtMTU4Nywy
OSArMTkwNSwzOCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAg
ICAgICAgICAgICB9OwogICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRGVjbGFy
YXRpb246IGZ1bmN0aW9uIChpZCwgcGFyYW1zLCBkZWZhdWx0cywgYm9keSkgeworICAgICAgICBj
cmVhdGVGb3JPZlN0YXRlbWVudDogZnVuY3Rpb24gKGxlZnQsIHJpZ2h0LCBib2R5KSB7CisgICAg
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Gb3JPZlN0YXRl
bWVudCwKKyAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LAorICAgICAgICAgICAgICAgIHJpZ2h0
OiByaWdodCwKKyAgICAgICAgICAgICAgICBib2R5OiBib2R5CisgICAgICAgICAgICB9OworICAg
ICAgICB9LAorCisgICAgICAgIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uIChp
ZCwgcGFyYW1zLCBkZWZhdWx0cywgYm9keSwgcmVzdCwgZ2VuZXJhdG9yLCBleHByZXNzaW9uKSB7
CiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5GdW5j
dGlvbkRlY2xhcmF0aW9uLAogICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAg
ICBwYXJhbXM6IHBhcmFtcywKICAgICAgICAgICAgICAgICBkZWZhdWx0czogZGVmYXVsdHMsCiAg
ICAgICAgICAgICAgICAgYm9keTogYm9keSwKLSAgICAgICAgICAgICAgICByZXN0OiBudWxsLAot
ICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZmFsc2UsCi0gICAgICAgICAgICAgICAgZXhwcmVz
c2lvbjogZmFsc2UKKyAgICAgICAgICAgICAgICByZXN0OiByZXN0LAorICAgICAgICAgICAgICAg
IGdlbmVyYXRvcjogZ2VuZXJhdG9yLAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJl
c3Npb24KICAgICAgICAgICAgIH07CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlRnVuY3Rp
b25FeHByZXNzaW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywgZGVmYXVsdHMsIGJvZHkpIHsKKyAg
ICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywgZGVm
YXVsdHMsIGJvZHksIHJlc3QsIGdlbmVyYXRvciwgZXhwcmVzc2lvbikgewogICAgICAgICAgICAg
cmV0dXJuIHsKICAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRnVuY3Rpb25FeHByZXNzaW9u
LAogICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFt
cywKICAgICAgICAgICAgICAgICBkZWZhdWx0czogZGVmYXVsdHMsCiAgICAgICAgICAgICAgICAg
Ym9keTogYm9keSwKLSAgICAgICAgICAgICAgICByZXN0OiBudWxsLAotICAgICAgICAgICAgICAg
IGdlbmVyYXRvcjogZmFsc2UsCi0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZmFsc2UKKyAg
ICAgICAgICAgICAgICByZXN0OiByZXN0LAorICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZ2Vu
ZXJhdG9yLAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24KICAgICAgICAg
ICAgIH07CiAgICAgICAgIH0sCiAKQEAgLTE2MzgsMTEgKzE5NjUsMTUgQEAgcGFyc2VTdGF0ZW1l
bnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICB9LAogCiAgICAgICAgIGNyZWF0
ZUxpdGVyYWw6IGZ1bmN0aW9uICh0b2tlbikgewotICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgIHZhciBvYmplY3QgPSB7CiAgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkxpdGVy
YWwsCiAgICAgICAgICAgICAgICAgdmFsdWU6IHRva2VuLnZhbHVlLAotICAgICAgICAgICAgICAg
IHJhdzogc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpCisgICAgICAgICAgICAg
ICAgcmF3OiBzb3VyY2Uuc2xpY2UodG9rZW4ucmFuZ2VbMF0sIHRva2VuLnJhbmdlWzFdKQogICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmICh0b2tlbi5yZWdleCkgeworICAgICAgICAgICAg
ICAgIG9iamVjdC5yZWdleCA9IHRva2VuLnJlZ2V4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfSwKIAogICAgICAgICBjcmVhdGVNZW1iZXJFeHBy
ZXNzaW9uOiBmdW5jdGlvbiAoYWNjZXNzb3IsIG9iamVjdCwgcHJvcGVydHkpIHsKQEAgLTE2ODUs
MTIgKzIwMTYsMTUgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
ICAgICAgICAgICAgfTsKICAgICAgICAgfSwKIAotICAgICAgICBjcmVhdGVQcm9wZXJ0eTogZnVu
Y3Rpb24gKGtpbmQsIGtleSwgdmFsdWUpIHsKKyAgICAgICAgY3JlYXRlUHJvcGVydHk6IGZ1bmN0
aW9uIChraW5kLCBrZXksIHZhbHVlLCBtZXRob2QsIHNob3J0aGFuZCwgY29tcHV0ZWQpIHsKICAg
ICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlByb3BlcnR5
LAogICAgICAgICAgICAgICAgIGtleToga2V5LAogICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1
ZSwKLSAgICAgICAgICAgICAgICBraW5kOiBraW5kCisgICAgICAgICAgICAgICAga2luZDoga2lu
ZCwKKyAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCwKKyAgICAgICAgICAgICAgICBzaG9y
dGhhbmQ6IHNob3J0aGFuZCwKKyAgICAgICAgICAgICAgICBjb21wdXRlZDogY29tcHV0ZWQKICAg
ICAgICAgICAgIH07CiAgICAgICAgIH0sCiAKQEAgLTE3OTQsNyArMjEyOCwxNjcgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgIG9iamVj
dDogb2JqZWN0LAogICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkKICAgICAgICAgICAgIH07Cisg
ICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlVGVtcGxhdGVFbGVtZW50OiBmdW5jdGlvbiAodmFs
dWUsIHRhaWwpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTog
U3ludGF4LlRlbXBsYXRlRWxlbWVudCwKKyAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsCisg
ICAgICAgICAgICAgICAgdGFpbDogdGFpbAorICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBjcmVhdGVUZW1wbGF0ZUxpdGVyYWw6IGZ1bmN0aW9uIChxdWFzaXMsIGV4cHJlc3Np
b25zKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRh
eC5UZW1wbGF0ZUxpdGVyYWwsCisgICAgICAgICAgICAgICAgcXVhc2lzOiBxdWFzaXMsCisgICAg
ICAgICAgICAgICAgZXhwcmVzc2lvbnM6IGV4cHJlc3Npb25zCisgICAgICAgICAgICB9OworICAg
ICAgICB9LAorCisgICAgICAgIGNyZWF0ZVNwcmVhZEVsZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVu
dCkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXgu
U3ByZWFkRWxlbWVudCwKKyAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQKKyAgICAg
ICAgICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlVGFnZ2VkVGVtcGxhdGVFeHBy
ZXNzaW9uOiBmdW5jdGlvbiAodGFnLCBxdWFzaSkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgIHRhZzogdGFnLAorICAgICAgICAgICAgICAgIHF1YXNpOiBxdWFzaQorICAg
ICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVBcnJvd0Z1bmN0aW9uRXhw
cmVzc2lvbjogZnVuY3Rpb24gKHBhcmFtcywgZGVmYXVsdHMsIGJvZHksIHJlc3QsIGV4cHJlc3Np
b24pIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4
LkFycm93RnVuY3Rpb25FeHByZXNzaW9uLAorICAgICAgICAgICAgICAgIGlkOiBudWxsLAorICAg
ICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLAorICAgICAgICAgICAgICAgIGRlZmF1bHRzOiBk
ZWZhdWx0cywKKyAgICAgICAgICAgICAgICBib2R5OiBib2R5LAorICAgICAgICAgICAgICAgIHJl
c3Q6IHJlc3QsCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBmYWxzZSwKKyAgICAgICAgICAg
ICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uCisgICAgICAgICAgICB9OworICAgICAgICB9LAor
CisgICAgICAgIGNyZWF0ZU1ldGhvZERlZmluaXRpb246IGZ1bmN0aW9uIChwcm9wZXJ0eVR5cGUs
IGtpbmQsIGtleSwgdmFsdWUsIGNvbXB1dGVkKSB7CisgICAgICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5NZXRob2REZWZpbml0aW9uLAorICAgICAgICAgICAg
ICAgIGtleToga2V5LAorICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgICAg
ICAgICBraW5kOiBraW5kLAorICAgICAgICAgICAgICAgICdzdGF0aWMnOiBwcm9wZXJ0eVR5cGUg
PT09IENsYXNzUHJvcGVydHlUeXBlLnN0YXRpYywKKyAgICAgICAgICAgICAgICBjb21wdXRlZDog
Y29tcHV0ZWQKKyAgICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlQ2xh
c3NCb2R5OiBmdW5jdGlvbiAoYm9keSkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAg
ICAgICAgICB0eXBlOiBTeW50YXguQ2xhc3NCb2R5LAorICAgICAgICAgICAgICAgIGJvZHk6IGJv
ZHkKKyAgICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlQ2xhc3NFeHBy
ZXNzaW9uOiBmdW5jdGlvbiAoaWQsIHN1cGVyQ2xhc3MsIGJvZHkpIHsKKyAgICAgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNsYXNzRXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICBpZDogaWQsCisgICAgICAgICAgICAgICAgc3VwZXJDbGFzczogc3VwZXJD
bGFzcywKKyAgICAgICAgICAgICAgICBib2R5OiBib2R5CisgICAgICAgICAgICB9OworICAgICAg
ICB9LAorCisgICAgICAgIGNyZWF0ZUNsYXNzRGVjbGFyYXRpb246IGZ1bmN0aW9uIChpZCwgc3Vw
ZXJDbGFzcywgYm9keSkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0
eXBlOiBTeW50YXguQ2xhc3NEZWNsYXJhdGlvbiwKKyAgICAgICAgICAgICAgICBpZDogaWQsCisg
ICAgICAgICAgICAgICAgc3VwZXJDbGFzczogc3VwZXJDbGFzcywKKyAgICAgICAgICAgICAgICBi
b2R5OiBib2R5CisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgIGNyZWF0ZU1v
ZHVsZVNwZWNpZmllcjogZnVuY3Rpb24gKHRva2VuKSB7CisgICAgICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Nb2R1bGVTcGVjaWZpZXIsCisgICAgICAgICAg
ICAgICAgdmFsdWU6IHRva2VuLnZhbHVlLAorICAgICAgICAgICAgICAgIHJhdzogc291cmNlLnNs
aWNlKHRva2VuLnJhbmdlWzBdLCB0b2tlbi5yYW5nZVsxXSkKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0sCisKKyAgICAgICAgY3JlYXRlRXhwb3J0U3BlY2lmaWVyOiBmdW5jdGlvbiAoaWQsIG5h
bWUpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4
LkV4cG9ydFNwZWNpZmllciwKKyAgICAgICAgICAgICAgICBpZDogaWQsCisgICAgICAgICAgICAg
ICAgbmFtZTogbmFtZQorICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVh
dGVFeHBvcnRCYXRjaFNwZWNpZmllcjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRXhwb3J0QmF0Y2hTcGVjaWZpZXIKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlSW1wb3J0RGVmYXVsdFNw
ZWNpZmllcjogZnVuY3Rpb24gKGlkKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgICAgIHR5cGU6IFN5bnRheC5JbXBvcnREZWZhdWx0U3BlY2lmaWVyLAorICAgICAgICAgICAg
ICAgIGlkOiBpZAorICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVJ
bXBvcnROYW1lc3BhY2VTcGVjaWZpZXI6IGZ1bmN0aW9uIChpZCkgeworICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguSW1wb3J0TmFtZXNwYWNlU3BlY2lm
aWVyLAorICAgICAgICAgICAgICAgIGlkOiBpZAorICAgICAgICAgICAgfTsKKyAgICAgICAgfSwK
KworICAgICAgICBjcmVhdGVFeHBvcnREZWNsYXJhdGlvbjogZnVuY3Rpb24gKGlzRGVmYXVsdCwg
ZGVjbGFyYXRpb24sIHNwZWNpZmllcnMsIHNyYykgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRXhwb3J0RGVjbGFyYXRpb24sCisgICAgICAgICAg
ICAgICAgJ2RlZmF1bHQnOiAhIWlzRGVmYXVsdCwKKyAgICAgICAgICAgICAgICBkZWNsYXJhdGlv
bjogZGVjbGFyYXRpb24sCisgICAgICAgICAgICAgICAgc3BlY2lmaWVyczogc3BlY2lmaWVycywK
KyAgICAgICAgICAgICAgICBzb3VyY2U6IHNyYworICAgICAgICAgICAgfTsKKyAgICAgICAgfSwK
KworICAgICAgICBjcmVhdGVJbXBvcnRTcGVjaWZpZXI6IGZ1bmN0aW9uIChpZCwgbmFtZSkgewor
ICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguSW1wb3J0
U3BlY2lmaWVyLAorICAgICAgICAgICAgICAgIGlkOiBpZCwKKyAgICAgICAgICAgICAgICBuYW1l
OiBuYW1lCisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgIGNyZWF0ZUltcG9y
dERlY2xhcmF0aW9uOiBmdW5jdGlvbiAoc3BlY2lmaWVycywgc3JjKSB7CisgICAgICAgICAgICBy
ZXR1cm4geworICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5JbXBvcnREZWNsYXJhdGlvbiwK
KyAgICAgICAgICAgICAgICBzcGVjaWZpZXJzOiBzcGVjaWZpZXJzLAorICAgICAgICAgICAgICAg
IHNvdXJjZTogc3JjCisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgIGNyZWF0
ZVlpZWxkRXhwcmVzc2lvbjogZnVuY3Rpb24gKGFyZ3VtZW50LCBkbGcpIHsKKyAgICAgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LllpZWxkRXhwcmVzc2lvbiwK
KyAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsCisgICAgICAgICAgICAgICAgZGVs
ZWdhdGU6IGRsZworICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVD
b21wcmVoZW5zaW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGZpbHRlciwgYmxvY2tzLCBib2R5KSB7
CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Db21w
cmVoZW5zaW9uRXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlciwKKyAg
ICAgICAgICAgICAgICBibG9ja3M6IGJsb2NrcywKKyAgICAgICAgICAgICAgICBib2R5OiBib2R5
CisgICAgICAgICAgICB9OwogICAgICAgICB9CisKICAgICB9OwogCiAgICAgLy8gUmV0dXJuIHRy
dWUgaWYgdGhlcmUgaXMgYSBsaW5lIHRlcm1pbmF0b3IgYmVmb3JlIHRoZSBuZXh0IHRva2VuLgpA
QCAtMTgyMSwxNyArMjMxNSwxNyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VF
bGVtZW50CiAgICAgICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn
dW1lbnRzLCAyKSwKICAgICAgICAgICAgIG1zZyA9IG1lc3NhZ2VGb3JtYXQucmVwbGFjZSgKICAg
ICAgICAgICAgICAgICAvJShcZCkvZywKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiAod2hvbGUs
IGluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChpbmRleCA8IGFyZ3MubGVuZ3Ro
LCAnTWVzc2FnZSByZWZlcmVuY2UgbXVzdCBiZSBpbiByYW5nZScpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gYXJnc1tpbmRleF07CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHdob2xl
LCBpZHgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGlkeCA8IGFyZ3MubGVuZ3RoLCAn
TWVzc2FnZSByZWZlcmVuY2UgbXVzdCBiZSBpbiByYW5nZScpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYXJnc1tpZHhdOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICk7CiAK
ICAgICAgICAgaWYgKHR5cGVvZiB0b2tlbi5saW5lTnVtYmVyID09PSAnbnVtYmVyJykgewogICAg
ICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0xpbmUgJyArIHRva2VuLmxpbmVOdW1iZXIgKyAn
OiAnICsgbXNnKTsKLSAgICAgICAgICAgIGVycm9yLmluZGV4ID0gdG9rZW4uc3RhcnQ7CisgICAg
ICAgICAgICBlcnJvci5pbmRleCA9IHRva2VuLnJhbmdlWzBdOwogICAgICAgICAgICAgZXJyb3Iu
bGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1iZXI7Ci0gICAgICAgICAgICBlcnJvci5jb2x1bW4g
PSB0b2tlbi5zdGFydCAtIGxpbmVTdGFydCArIDE7CisgICAgICAgICAgICBlcnJvci5jb2x1bW4g
PSB0b2tlbi5yYW5nZVswXSAtIGxpbmVTdGFydCArIDE7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBlcnJvciA9IG5ldyBFcnJvcignTGluZSAnICsgbGluZU51bWJlciArICc6ICcgKyBt
c2cpOwogICAgICAgICAgICAgZXJyb3IuaW5kZXggPSBpbmRleDsKQEAgLTE4ODUsNiArMjM3OSwx
MCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAg
ICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVl
KTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5UZW1wbGF0
ZSkgeworICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFRl
bXBsYXRlLCB0b2tlbi52YWx1ZS5yYXcpOworICAgICAgICB9CisKICAgICAgICAgLy8gQm9vbGVh
bkxpdGVyYWwsIE51bGxMaXRlcmFsLCBvciBQdW5jdHVhdG9yLgogICAgICAgICB0aHJvd0Vycm9y
KHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTsKICAgICB9CkBA
IC0xOTIxLDYgKzI0MTksMTMgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxl
bWVudAogICAgICAgICByZXR1cm4gbG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQgJiYg
bG9va2FoZWFkLnZhbHVlID09PSBrZXl3b3JkOwogICAgIH0KIAorCisgICAgLy8gUmV0dXJuIHRy
dWUgaWYgdGhlIG5leHQgdG9rZW4gbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGNvbnRleHR1YWwga2V5
d29yZAorCisgICAgZnVuY3Rpb24gbWF0Y2hDb250ZXh0dWFsS2V5d29yZChrZXl3b3JkKSB7Cisg
ICAgICAgIHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllciAmJiBsb29r
YWhlYWQudmFsdWUgPT09IGtleXdvcmQ7CisgICAgfQorCiAgICAgLy8gUmV0dXJuIHRydWUgaWYg
dGhlIG5leHQgdG9rZW4gaXMgYW4gYXNzaWdubWVudCBvcGVyYXRvcgogCiAgICAgZnVuY3Rpb24g
bWF0Y2hBc3NpZ24oKSB7CkBAIC0xOTQ1LDEwICsyNDUwLDExIEBAIHBhcnNlU3RhdGVtZW50OiB0
cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICB9CiAKICAgICBmdW5jdGlvbiBjb25zdW1lU2Vt
aWNvbG9uKCkgewotICAgICAgICB2YXIgbGluZTsKKyAgICAgICAgdmFyIGxpbmUsIG9sZEluZGV4
ID0gaW5kZXgsIG9sZExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyLAorICAgICAgICAgICAgb2xkTGlu
ZVN0YXJ0ID0gbGluZVN0YXJ0LCBvbGRMb29rYWhlYWQgPSBsb29rYWhlYWQ7CiAKLSAgICAgICAg
Ly8gQ2F0Y2ggdGhlIHZlcnkgY29tbW9uIGNhc2UgZmlyc3Q6IGltbWVkaWF0ZWx5IGEgc2VtaWNv
bG9uIChVKzAwM0IpLgotICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAw
eDNCIHx8IG1hdGNoKCc7JykpIHsKKyAgICAgICAgLy8gQ2F0Y2ggdGhlIHZlcnkgY29tbW9uIGNh
c2UgZmlyc3Q6IGltbWVkaWF0ZWx5IGEgc2VtaWNvbG9uIChjaGFyICM1OSkuCisgICAgICAgIGlm
IChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDU5KSB7CiAgICAgICAgICAgICBsZXgoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTk1NiwxMyArMjQ2MiwyMiBAQCBw
YXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIGxpbmUgPSBs
aW5lTnVtYmVyOwogICAgICAgICBza2lwQ29tbWVudCgpOwogICAgICAgICBpZiAobGluZU51bWJl
ciAhPT0gbGluZSkgeworICAgICAgICAgICAgaW5kZXggPSBvbGRJbmRleDsKKyAgICAgICAgICAg
IGxpbmVOdW1iZXIgPSBvbGRMaW5lTnVtYmVyOworICAgICAgICAgICAgbGluZVN0YXJ0ID0gb2xk
TGluZVN0YXJ0OworICAgICAgICAgICAgbG9va2FoZWFkID0gb2xkTG9va2FoZWFkOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9
PSBUb2tlbi5FT0YgJiYgIW1hdGNoKCd9JykpIHsKLSAgICAgICAgICAgIHRocm93VW5leHBlY3Rl
ZChsb29rYWhlYWQpOwotICAgICAgICB9Ci0gICAgfQorICAgICAgICBpZiAobWF0Y2goJzsnKSkg
eworICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLkVPRiAmJiAhbWF0Y2goJ30nKSkg
eworICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxvb2thaGVhZCk7CisgICAgICAgIH0KKyAg
ICB9CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBwcm92aWRlZCBleHByZXNzaW9uIGlzIExlZnRI
YW5kU2lkZUV4cHJlc3Npb24KIApAQCAtMTk3MCw1MiArMjQ4NSwxMzYgQEAgcGFyc2VTdGF0ZW1l
bnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICByZXR1cm4gZXhwci50eXBlID09
PSBTeW50YXguSWRlbnRpZmllciB8fCBleHByLnR5cGUgPT09IFN5bnRheC5NZW1iZXJFeHByZXNz
aW9uOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIGlzQXNzaWduYWJsZUxlZnRIYW5kU2lkZShleHBy
KSB7CisgICAgICAgIHJldHVybiBpc0xlZnRIYW5kU2lkZShleHByKSB8fCBleHByLnR5cGUgPT09
IFN5bnRheC5PYmplY3RQYXR0ZXJuIHx8IGV4cHIudHlwZSA9PT0gU3ludGF4LkFycmF5UGF0dGVy
bjsKKyAgICB9CisKICAgICAvLyAxMS4xLjQgQXJyYXkgSW5pdGlhbGlzZXIKIAogICAgIGZ1bmN0
aW9uIHBhcnNlQXJyYXlJbml0aWFsaXNlcigpIHsKLSAgICAgICAgdmFyIGVsZW1lbnRzID0gW10s
IHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBlbGVtZW50cyA9IFtdLCBibG9ja3MgPSBbXSwgZmls
dGVyID0gbnVsbCwgdG1wLCBwb3NzaWJsZWNvbXByZWhlbnNpb24gPSB0cnVlLAorICAgICAgICAg
ICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2th
aGVhZDsKICAgICAgICAgZXhwZWN0KCdbJyk7Ci0KICAgICAgICAgd2hpbGUgKCFtYXRjaCgnXScp
KSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2goJywnKSkgeworICAgICAgICAgICAgaWYgKGxvb2th
aGVhZC52YWx1ZSA9PT0gJ2ZvcicgJiYKKyAgICAgICAgICAgICAgICAgICAgbG9va2FoZWFkLnR5
cGUgPT09IFRva2VuLktleXdvcmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXBvc3NpYmxlY29t
cHJlaGVuc2lvbikgeworICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdl
cy5Db21wcmVoZW5zaW9uRXJyb3IpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBtYXRjaEtleXdvcmQoJ2ZvcicpOworICAgICAgICAgICAgICAgIHRtcCA9IHBhcnNlRm9yU3Rh
dGVtZW50KHtpZ25vcmVCb2R5OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgdG1wLm9mID0gdG1w
LnR5cGUgPT09IFN5bnRheC5Gb3JPZlN0YXRlbWVudDsKKyAgICAgICAgICAgICAgICB0bXAudHlw
ZSA9IFN5bnRheC5Db21wcmVoZW5zaW9uQmxvY2s7CisgICAgICAgICAgICAgICAgaWYgKHRtcC5s
ZWZ0LmtpbmQpIHsgLy8gY2FuJ3QgYmUgbGV0IG9yIGNvbnN0CisgICAgICAgICAgICAgICAgICAg
IHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkNvbXByZWhlbnNpb25FcnJvcik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJsb2Nrcy5wdXNoKHRtcCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGxvb2thaGVhZC52YWx1ZSA9PT0gJ2lmJyAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXBvc3NpYmxlY29tcHJlaGVuc2lvbikgeworICAgICAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Db21wcmVoZW5zaW9uRXJyb3IpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBleHBlY3RLZXl3b3JkKCdpZicpOworICAgICAgICAgICAg
ICAgIGV4cGVjdCgnKCcpOworICAgICAgICAgICAgICAgIGZpbHRlciA9IHBhcnNlRXhwcmVzc2lv
bigpOworICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChsb29rYWhlYWQudmFsdWUgPT09ICcsJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHsKKyAgICAgICAgICAgICAgICBw
b3NzaWJsZWNvbXByZWhlbnNpb24gPSBmYWxzZTsgLy8gbm8gbG9uZ2VyIGFsbG93ZWQuCiAgICAg
ICAgICAgICAgICAgbGV4KCk7CiAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChudWxsKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaCgn
XScpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdCgnLCcpOworICAgICAgICAgICAgICAg
IHRtcCA9IHBhcnNlU3ByZWFkT3JBc3NpZ25tZW50RXhwcmVzc2lvbigpOworICAgICAgICAgICAg
ICAgIGVsZW1lbnRzLnB1c2godG1wKTsKKyAgICAgICAgICAgICAgICBpZiAodG1wICYmIHRtcC50
eXBlID09PSBTeW50YXguU3ByZWFkRWxlbWVudCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IW1hdGNoKCddJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1l
c3NhZ2VzLkVsZW1lbnRBZnRlclNwcmVhZEVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKG1hdGNoKCddJykgfHwgbWF0Y2hLZXl3b3Jk
KCdmb3InKSB8fCBtYXRjaEtleXdvcmQoJ2lmJykpKSB7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdCgnLCcpOyAvLyB0aGlzIGxleGVzLgorICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZWNv
bXByZWhlbnNpb24gPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBsZXgoKTsKKyAgICAgICAgZXhwZWN0KCddJyk7CisKKyAgICAg
ICAgaWYgKGZpbHRlciAmJiAhYmxvY2tzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3dFcnJv
cih7fSwgTWVzc2FnZXMuQ29tcHJlaGVuc2lvblJlcXVpcmVzQmxvY2spOworICAgICAgICB9CiAK
LSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQXJyYXlFeHBy
ZXNzaW9uKGVsZW1lbnRzKSwgc3RhcnRUb2tlbik7CisgICAgICAgIGlmIChibG9ja3MubGVuZ3Ro
KSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoICE9PSAxKSB7CisgICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuQ29tcHJlaGVuc2lvbkVycm9yKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRl
LmNyZWF0ZUNvbXByZWhlbnNpb25FeHByZXNzaW9uKGZpbHRlciwgYmxvY2tzLCBlbGVtZW50c1sw
XSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVn
YXRlLmNyZWF0ZUFycmF5RXhwcmVzc2lvbihlbGVtZW50cykpOwogICAgIH0KIAogICAgIC8vIDEx
LjEuNSBPYmplY3QgSW5pdGlhbGlzZXIKIAotICAgIGZ1bmN0aW9uIHBhcnNlUHJvcGVydHlGdW5j
dGlvbihwYXJhbSwgZmlyc3QpIHsKLSAgICAgICAgdmFyIHByZXZpb3VzU3RyaWN0LCBib2R5LCBz
dGFydFRva2VuOworICAgIGZ1bmN0aW9uIHBhcnNlUHJvcGVydHlGdW5jdGlvbihvcHRpb25zKSB7
CisgICAgICAgIHZhciBwcmV2aW91c1N0cmljdCwgcHJldmlvdXNZaWVsZEFsbG93ZWQsIHBhcmFt
cywgZGVmYXVsdHMsIGJvZHksCisgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsK
IAogICAgICAgICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDsKLSAgICAgICAgc3RhcnRUb2tlbiA9
IGxvb2thaGVhZDsKLSAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygp
OwotICAgICAgICBpZiAoZmlyc3QgJiYgc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQocGFyYW1b
MF0ubmFtZSkpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChmaXJzdCwgTWVzc2Fn
ZXMuU3RyaWN0UGFyYW1OYW1lKTsKKyAgICAgICAgcHJldmlvdXNZaWVsZEFsbG93ZWQgPSBzdGF0
ZS55aWVsZEFsbG93ZWQ7CisgICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9IG9wdGlvbnMuZ2Vu
ZXJhdG9yOworICAgICAgICBwYXJhbXMgPSBvcHRpb25zLnBhcmFtcyB8fCBbXTsKKyAgICAgICAg
ZGVmYXVsdHMgPSBvcHRpb25zLmRlZmF1bHRzIHx8IFtdOworCisgICAgICAgIGJvZHkgPSBwYXJz
ZUNvbmNpc2VCb2R5KCk7CisgICAgICAgIGlmIChvcHRpb25zLm5hbWUgJiYgc3RyaWN0ICYmIGlz
UmVzdHJpY3RlZFdvcmQocGFyYW1zWzBdLm5hbWUpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9y
VG9sZXJhbnQob3B0aW9ucy5uYW1lLCBNZXNzYWdlcy5TdHJpY3RQYXJhbU5hbWUpOwogICAgICAg
ICB9CiAgICAgICAgIHN0cmljdCA9IHByZXZpb3VzU3RyaWN0OwotICAgICAgICByZXR1cm4gZGVs
ZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24obnVsbCwgcGFy
YW0sIFtdLCBib2R5KSwgc3RhcnRUb2tlbik7CisgICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9
IHByZXZpb3VzWWllbGRBbGxvd2VkOworCisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJr
ZXIsIGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbigKKyAgICAgICAgICAgIG51bGws
CisgICAgICAgICAgICBwYXJhbXMsCisgICAgICAgICAgICBkZWZhdWx0cywKKyAgICAgICAgICAg
IGJvZHksCisgICAgICAgICAgICBvcHRpb25zLnJlc3QgfHwgbnVsbCwKKyAgICAgICAgICAgIG9w
dGlvbnMuZ2VuZXJhdG9yLAorICAgICAgICAgICAgYm9keS50eXBlICE9PSBTeW50YXguQmxvY2tT
dGF0ZW1lbnQKKyAgICAgICAgKSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VPYmplY3RQ
cm9wZXJ0eUtleSgpIHsKLSAgICAgICAgdmFyIHRva2VuLCBzdGFydFRva2VuOwogCi0gICAgICAg
IHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgIHRva2VuID0gbGV4KCk7CisgICAgZnVu
Y3Rpb24gcGFyc2VQcm9wZXJ0eU1ldGhvZEZ1bmN0aW9uKG9wdGlvbnMpIHsKKyAgICAgICAgdmFy
IHByZXZpb3VzU3RyaWN0LCB0bXAsIG1ldGhvZDsKKworICAgICAgICBwcmV2aW91c1N0cmljdCA9
IHN0cmljdDsKKyAgICAgICAgc3RyaWN0ID0gdHJ1ZTsKKworICAgICAgICB0bXAgPSBwYXJzZVBh
cmFtcygpOworCisgICAgICAgIGlmICh0bXAuc3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIHRocm93
RXJyb3JUb2xlcmFudCh0bXAuc3RyaWN0ZWQsIHRtcC5tZXNzYWdlKTsKKyAgICAgICAgfQorCisK
KyAgICAgICAgbWV0aG9kID0gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHsKKyAgICAgICAgICAgIHBh
cmFtczogdG1wLnBhcmFtcywKKyAgICAgICAgICAgIGRlZmF1bHRzOiB0bXAuZGVmYXVsdHMsCisg
ICAgICAgICAgICByZXN0OiB0bXAucmVzdCwKKyAgICAgICAgICAgIGdlbmVyYXRvcjogb3B0aW9u
cy5nZW5lcmF0b3IKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJp
Y3Q7CisKKyAgICAgICAgcmV0dXJuIG1ldGhvZDsKKyAgICB9CisKKworICAgIGZ1bmN0aW9uIHBh
cnNlT2JqZWN0UHJvcGVydHlLZXkoKSB7CisgICAgICAgIHZhciBtYXJrZXIgPSBtYXJrZXJDcmVh
dGUoKSwKKyAgICAgICAgICAgIHRva2VuID0gbGV4KCksCisgICAgICAgICAgICBwcm9wZXJ0eUtl
eSwKKyAgICAgICAgICAgIHJlc3VsdDsKIAogICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1bmN0aW9u
IGlzIGNhbGxlZCBvbmx5IGZyb20gcGFyc2VPYmplY3RQcm9wZXJ0eSgpLCB3aGVyZQogICAgICAg
ICAvLyBFT0YgYW5kIFB1bmN0dWF0b3IgdG9rZW5zIGFyZSBhbHJlYWR5IGZpbHRlcmVkIG91dC4K
QEAgLTIwMjQsOTUgKzI2MjMsMTMxIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJj
ZUVsZW1lbnQKICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgdG9rZW4ub2N0YWwpIHsKICAgICAg
ICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0cmljdE9jdGFs
TGl0ZXJhbCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFy
a0VuZChkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKSwgc3RhcnRUb2tlbik7CisgICAgICAg
ICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRv
a2VuKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxl
Z2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAgICAg
IGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yICYmIHRva2VuLnZhbHVlID09PSAn
WycpIHsKKyAgICAgICAgICAgIC8vIEZvciBjb21wdXRlZCBwcm9wZXJ0aWVzIHdlIHNob3VsZCBz
a2lwIHRoZSBbIGFuZCBdLCBhbmQKKyAgICAgICAgICAgIC8vIGNhcHR1cmUgaW4gbWFya2VyIG9u
bHkgdGhlIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBpdHNlbGYuCisgICAgICAgICAgICBtYXJrZXIg
PSBtYXJrZXJDcmVhdGUoKTsKKyAgICAgICAgICAgIHByb3BlcnR5S2V5ID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbigpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFya2VyQXBwbHkobWFya2Vy
LCBwcm9wZXJ0eUtleSk7CisgICAgICAgICAgICBleHBlY3QoJ10nKTsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFy
a2VyLCBkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gcGFyc2VPYmplY3RQcm9wZXJ0eSgpIHsKLSAgICAgICAgdmFyIHRva2VuLCBr
ZXksIGlkLCB2YWx1ZSwgcGFyYW0sIHN0YXJ0VG9rZW47CisgICAgICAgIHZhciB0b2tlbiwga2V5
LCBpZCwgcGFyYW0sIGNvbXB1dGVkLAorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRl
KCk7CiAKICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgIHN0YXJ0VG9rZW4gPSBs
b29rYWhlYWQ7CisgICAgICAgIGNvbXB1dGVkID0gKHRva2VuLnZhbHVlID09PSAnWycgJiYgdG9r
ZW4udHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcik7CiAKLSAgICAgICAgaWYgKHRva2VuLnR5cGUg
PT09IFRva2VuLklkZW50aWZpZXIpIHsKKyAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2Vu
LklkZW50aWZpZXIgfHwgY29tcHV0ZWQpIHsKIAogICAgICAgICAgICAgaWQgPSBwYXJzZU9iamVj
dFByb3BlcnR5S2V5KCk7CiAKICAgICAgICAgICAgIC8vIFByb3BlcnR5IEFzc2lnbm1lbnQ6IEdl
dHRlciBhbmQgU2V0dGVyLgogCi0gICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICdnZXQn
ICYmICFtYXRjaCgnOicpKSB7CisgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICdnZXQn
ICYmICEobWF0Y2goJzonKSB8fCBtYXRjaCgnKCcpKSkgeworICAgICAgICAgICAgICAgIGNvbXB1
dGVkID0gKGxvb2thaGVhZC52YWx1ZSA9PT0gJ1snKTsKICAgICAgICAgICAgICAgICBrZXkgPSBw
YXJzZU9iamVjdFByb3BlcnR5S2V5KCk7CiAgICAgICAgICAgICAgICAgZXhwZWN0KCcoJyk7CiAg
ICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJz
ZVByb3BlcnR5RnVuY3Rpb24oW10pOwotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5t
YXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdnZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRU
b2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdh
dGUuY3JlYXRlUHJvcGVydHkoJ2dldCcsIGtleSwgcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHsgZ2Vu
ZXJhdG9yOiBmYWxzZSB9KSwgZmFsc2UsIGZhbHNlLCBjb21wdXRlZCkpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnc2V0JyAmJiAhbWF0Y2goJzonKSkg
eworICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnc2V0JyAmJiAhKG1hdGNoKCc6Jykg
fHwgbWF0Y2goJygnKSkpIHsKKyAgICAgICAgICAgICAgICBjb21wdXRlZCA9IChsb29rYWhlYWQu
dmFsdWUgPT09ICdbJyk7CiAgICAgICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0
eUtleSgpOwogICAgICAgICAgICAgICAgIGV4cGVjdCgnKCcpOwogICAgICAgICAgICAgICAgIHRv
a2VuID0gbG9va2FoZWFkOwotICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tl
bi5JZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpOwotICAgICAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0
ZWRUb2tlbiwgdG9rZW4udmFsdWUpOwotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNl
UHJvcGVydHlGdW5jdGlvbihbXSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgcGFyYW0gPSBbIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkgXTsKLSAgICAg
ICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0g
cGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHBhcmFtLCB0b2tlbik7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVBy
b3BlcnR5KCdzZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAg
cGFyYW0gPSBbIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkgXTsKKyAgICAgICAgICAgICAgICBl
eHBlY3QoJyknKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBk
ZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnc2V0Jywga2V5LCBwYXJzZVByb3BlcnR5RnVuY3Rpb24o
eyBwYXJhbXM6IHBhcmFtLCBnZW5lcmF0b3I6IGZhbHNlLCBuYW1lOiB0b2tlbiB9KSwgZmFsc2Us
IGZhbHNlLCBjb21wdXRlZCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZXhwZWN0KCc6
Jyk7Ci0gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKLSAg
ICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5
KCdpbml0JywgaWQsIHZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICBpZiAobWF0Y2go
JzonKSkgeworICAgICAgICAgICAgICAgIGxleCgpOworICAgICAgICAgICAgICAgIHJldHVybiBt
YXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdpbml0JywgaWQsIHBh
cnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSwgZmFsc2UsIGZhbHNlLCBjb21wdXRlZCkpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5p
dCcsIGlkLCBwYXJzZVByb3BlcnR5TWV0aG9kRnVuY3Rpb24oeyBnZW5lcmF0b3I6IGZhbHNlIH0p
LCB0cnVlLCBmYWxzZSwgY29tcHV0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChjb21wdXRlZCkgeworICAgICAgICAgICAgICAgIC8vIENvbXB1dGVkIHByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgdXNlZCB3aXRoIGZ1bGwgbm90YXRpb24uCisgICAgICAgICAgICAgICAgdGhyb3dV
bmV4cGVjdGVkKGxvb2thaGVhZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
bWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlkLCBp
ZCwgZmFsc2UsIHRydWUsIGZhbHNlKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLnR5
cGUgPT09IFRva2VuLkVPRiB8fCB0b2tlbi50eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yKSB7Ci0g
ICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9rZW4pOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpOwotICAgICAgICAgICAgZXhw
ZWN0KCc6Jyk7Ci0gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
KTsKLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVBy
b3BlcnR5KCdpbml0Jywga2V5LCB2YWx1ZSksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgaWYg
KCFtYXRjaCgnKicpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxleCgpOworCisgICAgICAgICAgICBjb21wdXRl
ZCA9IChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQudmFs
dWUgPT09ICdbJyk7CisKKyAgICAgICAgICAgIGlkID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgp
OworCisgICAgICAgICAgICBpZiAoIW1hdGNoKCcoJykpIHsKKyAgICAgICAgICAgICAgICB0aHJv
d1VuZXhwZWN0ZWQobGV4KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
bWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlkLCBw
YXJzZVByb3BlcnR5TWV0aG9kRnVuY3Rpb24oeyBnZW5lcmF0b3I6IHRydWUgfSksIHRydWUsIGZh
bHNlLCBjb21wdXRlZCkpOwogICAgICAgICB9CisgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJv
cGVydHlLZXkoKTsKKyAgICAgICAgaWYgKG1hdGNoKCc6JykpIHsKKyAgICAgICAgICAgIGxleCgp
OworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRl
UHJvcGVydHkoJ2luaXQnLCBrZXksIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICB9CisgICAgICAgIGlmIChtYXRjaCgnKCcpKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVQcm9w
ZXJ0eSgnaW5pdCcsIGtleSwgcGFyc2VQcm9wZXJ0eU1ldGhvZEZ1bmN0aW9uKHsgZ2VuZXJhdG9y
OiBmYWxzZSB9KSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIH0KKyAgICAgICAgdGhy
b3dVbmV4cGVjdGVkKGxleCgpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBwYXJzZU9iamVjdElu
aXRpYWxpc2VyKCkgewotICAgICAgICB2YXIgcHJvcGVydGllcyA9IFtdLCBwcm9wZXJ0eSwgbmFt
ZSwga2V5LCBraW5kLCBtYXAgPSB7fSwgdG9TdHJpbmcgPSBTdHJpbmcsIHN0YXJ0VG9rZW47Cisg
ICAgZnVuY3Rpb24gZ2V0RmllbGROYW1lKGtleSkgeworICAgICAgICB2YXIgdG9TdHJpbmcgPSBT
dHJpbmc7CisgICAgICAgIGlmIChrZXkudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHsKKyAg
ICAgICAgICAgIHJldHVybiBrZXkubmFtZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdG9T
dHJpbmcoa2V5LnZhbHVlKTsKKyAgICB9CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVh
ZDsKKyAgICBmdW5jdGlvbiBwYXJzZU9iamVjdEluaXRpYWxpc2VyKCkgeworICAgICAgICB2YXIg
cHJvcGVydGllcyA9IFtdLCBwcm9wZXJ0eSwgbmFtZSwga2luZCwgc3RvcmVkS2luZCwgbWFwID0g
bmV3IFN0cmluZ01hcCgpLAorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAK
ICAgICAgICAgZXhwZWN0KCd7Jyk7CiAKICAgICAgICAgd2hpbGUgKCFtYXRjaCgnfScpKSB7CiAg
ICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlT2JqZWN0UHJvcGVydHkoKTsKIAotICAgICAgICAg
ICAgaWYgKHByb3BlcnR5LmtleS50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikgewotICAgICAg
ICAgICAgICAgIG5hbWUgPSBwcm9wZXJ0eS5rZXkubmFtZTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgbmFtZSA9IHRvU3RyaW5nKHByb3BlcnR5LmtleS52YWx1ZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBraW5kID0gKHByb3BlcnR5LmtpbmQgPT09ICdpbml0
JykgPyBQcm9wZXJ0eUtpbmQuRGF0YSA6IChwcm9wZXJ0eS5raW5kID09PSAnZ2V0JykgPyBQcm9w
ZXJ0eUtpbmQuR2V0IDogUHJvcGVydHlLaW5kLlNldDsKLQotICAgICAgICAgICAga2V5ID0gJyQn
ICsgbmFtZTsKLSAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwobWFwLCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1hcFtrZXldID09PSBQcm9w
ZXJ0eUtpbmQuRGF0YSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGtpbmQg
PT09IFByb3BlcnR5S2luZC5EYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdER1cGxpY2F0ZVByb3BlcnR5KTsKLSAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChraW5kICE9PSBQcm9wZXJ0eUtpbmQuRGF0YSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5B
Y2Nlc3NvckRhdGFQcm9wZXJ0eSk7CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5LmNvbXB1dGVk
KSB7CisgICAgICAgICAgICAgICAgbmFtZSA9IGdldEZpZWxkTmFtZShwcm9wZXJ0eS5rZXkpOwor
ICAgICAgICAgICAgICAgIGtpbmQgPSAocHJvcGVydHkua2luZCA9PT0gJ2luaXQnKSA/IFByb3Bl
cnR5S2luZC5EYXRhIDogKHByb3BlcnR5LmtpbmQgPT09ICdnZXQnKSA/IFByb3BlcnR5S2luZC5H
ZXQgOiBQcm9wZXJ0eUtpbmQuU2V0OworCisgICAgICAgICAgICAgICAgaWYgKG1hcC5oYXMobmFt
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RvcmVkS2luZCA9IG1hcC5nZXQobmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZWRLaW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBraW5kID09PSBQcm9wZXJ0
eUtpbmQuRGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xl
cmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0RHVwbGljYXRlUHJvcGVydHkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChraW5kICE9PSBQcm9wZXJ0eUtpbmQuRGF0YSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMu
QWNjZXNzb3JEYXRhUHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtpbmQg
PT09IFByb3BlcnR5S2luZC5EYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5BY2Nlc3NvckRhdGFQcm9wZXJ0eSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0b3JlZEtpbmQgJiBraW5kKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5B
Y2Nlc3NvckdldFNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbWFwLnNldChuYW1lLCBzdG9yZWRLaW5kIHwg
a2luZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGtpbmQgPT09IFByb3BlcnR5S2luZC5EYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5KTsKLSAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXBba2V5XSAmIGtpbmQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JH
ZXRTZXQpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1hcC5z
ZXQobmFtZSwga2luZCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1hcFtr
ZXldIHw9IGtpbmQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1hcFtr
ZXldID0ga2luZDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHJvcGVydGllcy5wdXNo
KHByb3BlcnR5KTsKQEAgLTIxMjQsNyArMjc1OSwzMiBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgZXhwZWN0KCd9Jyk7CiAKLSAgICAgICAgcmV0
dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9w
ZXJ0aWVzKSwgc3RhcnRUb2tlbik7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIs
IGRlbGVnYXRlLmNyZWF0ZU9iamVjdEV4cHJlc3Npb24ocHJvcGVydGllcykpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHBhcnNlVGVtcGxhdGVFbGVtZW50KG9wdGlvbikgeworICAgICAgICB2YXIg
bWFya2VyID0gbWFya2VyQ3JlYXRlKCksCisgICAgICAgICAgICB0b2tlbiA9IHNjYW5UZW1wbGF0
ZUVsZW1lbnQob3B0aW9uKTsKKyAgICAgICAgaWYgKHN0cmljdCAmJiB0b2tlbi5vY3RhbCkgewor
ICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFs
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0
ZS5jcmVhdGVUZW1wbGF0ZUVsZW1lbnQoeyByYXc6IHRva2VuLnZhbHVlLnJhdywgY29va2VkOiB0
b2tlbi52YWx1ZS5jb29rZWQgfSwgdG9rZW4udGFpbCkpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHBhcnNlVGVtcGxhdGVMaXRlcmFsKCkgeworICAgICAgICB2YXIgcXVhc2ksIHF1YXNpcywgZXhw
cmVzc2lvbnMsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOworCisgICAgICAgIHF1YXNpID0gcGFy
c2VUZW1wbGF0ZUVsZW1lbnQoeyBoZWFkOiB0cnVlIH0pOworICAgICAgICBxdWFzaXMgPSBbIHF1
YXNpIF07CisgICAgICAgIGV4cHJlc3Npb25zID0gW107CisKKyAgICAgICAgd2hpbGUgKCFxdWFz
aS50YWlsKSB7CisgICAgICAgICAgICBleHByZXNzaW9ucy5wdXNoKHBhcnNlRXhwcmVzc2lvbigp
KTsKKyAgICAgICAgICAgIHF1YXNpID0gcGFyc2VUZW1wbGF0ZUVsZW1lbnQoeyBoZWFkOiBmYWxz
ZSB9KTsKKyAgICAgICAgICAgIHF1YXNpcy5wdXNoKHF1YXNpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVRlbXBsYXRlTGl0
ZXJhbChxdWFzaXMsIGV4cHJlc3Npb25zKSk7CiAgICAgfQogCiAgICAgLy8gMTEuMS42IFRoZSBH
cm91cGluZyBPcGVyYXRvcgpAQCAtMjEzNCw2ICsyNzk0LDggQEAgcGFyc2VTdGF0ZW1lbnQ6IHRy
dWUsIHBhcnNlU291cmNlRWxlbWVudAogCiAgICAgICAgIGV4cGVjdCgnKCcpOwogCisgICAgICAg
ICsrc3RhdGUucGFyZW50aGVzaXplZENvdW50OworCiAgICAgICAgIGV4cHIgPSBwYXJzZUV4cHJl
c3Npb24oKTsKIAogICAgICAgICBleHBlY3QoJyknKTsKQEAgLTIxNDUsNzUgKzI4MDcsMTAzIEBA
IHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAvLyAxMS4xIFBy
aW1hcnkgRXhwcmVzc2lvbnMKIAogICAgIGZ1bmN0aW9uIHBhcnNlUHJpbWFyeUV4cHJlc3Npb24o
KSB7Ci0gICAgICAgIHZhciB0eXBlLCB0b2tlbiwgZXhwciwgc3RhcnRUb2tlbjsKLQotICAgICAg
ICBpZiAobWF0Y2goJygnKSkgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlR3JvdXBFeHByZXNz
aW9uKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobWF0Y2goJ1snKSkgewotICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlQXJyYXlJbml0aWFsaXNlcigpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKG1hdGNoKCd7JykpIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZU9iamVjdEluaXRpYWxp
c2VyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgdmFyIG1hcmtlciwgdHlwZSwgdG9rZW4sIGV4cHI7
CiAKICAgICAgICAgdHlwZSA9IGxvb2thaGVhZC50eXBlOwotICAgICAgICBzdGFydFRva2VuID0g
bG9va2FoZWFkOwogCiAgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7Ci0g
ICAgICAgICAgICBleHByID0gIGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIobGV4KCkudmFsdWUp
OwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLlN0cmluZ0xpdGVyYWwgfHwgdHlw
ZSA9PT0gVG9rZW4uTnVtZXJpY0xpdGVyYWwpIHsKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtl
ckNyZWF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdh
dGUuY3JlYXRlSWRlbnRpZmllcihsZXgoKS52YWx1ZSkpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHR5cGUgPT09IFRva2VuLlN0cmluZ0xpdGVyYWwgfHwgdHlwZSA9PT0gVG9rZW4uTnVtZXJp
Y0xpdGVyYWwpIHsKICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbG9va2FoZWFkLm9jdGFsKSB7
CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KGxvb2thaGVhZCwgTWVzc2FnZXMu
U3RyaWN0T2N0YWxMaXRlcmFsKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGV4cHIgPSBk
ZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKGxleCgpKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09
PSBUb2tlbi5LZXl3b3JkKSB7CisgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsK
KyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUxp
dGVyYWwobGV4KCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5L
ZXl3b3JkKSB7CisgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCd0aGlzJykpIHsKKyAgICAg
ICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBsZXgo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVUaGlzRXhwcmVzc2lvbigpKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYg
KG1hdGNoS2V5d29yZCgnZnVuY3Rpb24nKSkgewogICAgICAgICAgICAgICAgIHJldHVybiBwYXJz
ZUZ1bmN0aW9uRXhwcmVzc2lvbigpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1h
dGNoS2V5d29yZCgndGhpcycpKSB7CisKKyAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2Ns
YXNzJykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VDbGFzc0V4cHJlc3Npb24oKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnc3VwZXInKSkg
eworICAgICAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogICAgICAgICAgICAg
ICAgIGxleCgpOwotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVUaGlzRXhw
cmVzc2lvbigpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aHJvd1Vu
ZXhwZWN0ZWQobGV4KCkpOworICAgICAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJr
ZXIsIGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIoJ3N1cGVyJykpOwogICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLkJvb2xlYW5MaXRlcmFsKSB7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uQm9vbGVhbkxpdGVyYWwpIHsKKyAg
ICAgICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogICAgICAgICAgICAgdG9rZW4gPSBs
ZXgoKTsKICAgICAgICAgICAgIHRva2VuLnZhbHVlID0gKHRva2VuLnZhbHVlID09PSAndHJ1ZScp
OwotICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pOwotICAg
ICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsKSB7CisgICAgICAgICAg
ICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2Vu
KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uTnVsbExpdGVyYWwp
IHsKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogICAgICAgICAgICAgdG9r
ZW4gPSBsZXgoKTsKICAgICAgICAgICAgIHRva2VuLnZhbHVlID0gbnVsbDsKLSAgICAgICAgICAg
IGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTsKLSAgICAgICAgfSBlbHNlIGlm
IChtYXRjaCgnLycpIHx8IG1hdGNoKCcvPScpKSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIGV4
dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpIHsKLSAgICAgICAgICAgICAgICBleHByID0gZGVs
ZWdhdGUuY3JlYXRlTGl0ZXJhbChjb2xsZWN0UmVnZXgoKSk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHNjYW5SZWdF
eHAoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFy
a2VyLCBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobWF0Y2goJ1snKSkgeworICAgICAgICAgICAgcmV0dXJuIHBhcnNlQXJyYXlJbml0aWFs
aXNlcigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1hdGNoKCd7JykpIHsKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZU9iamVjdEluaXRpYWxpc2VyKCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobWF0Y2goJygnKSkgeworICAgICAgICAgICAgcmV0dXJuIHBhcnNlR3JvdXBFeHByZXNz
aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF0Y2goJy8nKSB8fCBtYXRjaCgnLz0n
KSkgeworICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisgICAgICAgICAgICBl
eHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChzY2FuUmVnRXhwKCkpOwogICAgICAgICAgICAg
cGVlaygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxl
eCgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGV4cHIpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHR5cGUgPT09IFRva2VuLlRlbXBsYXRlKSB7CisgICAgICAg
ICAgICByZXR1cm4gcGFyc2VUZW1wbGF0ZUxpdGVyYWwoKTsKICAgICAgICAgfQogCi0gICAgICAg
IHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOworICAgICAgICB0aHJv
d1VuZXhwZWN0ZWQobGV4KCkpOwogICAgIH0KIAogICAgIC8vIDExLjIgTGVmdC1IYW5kLVNpZGUg
RXhwcmVzc2lvbnMKIAogICAgIGZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKCkgewotICAgICAgICB2
YXIgYXJncyA9IFtdOworICAgICAgICB2YXIgYXJncyA9IFtdLCBhcmc7CiAKICAgICAgICAgZXhw
ZWN0KCcoJyk7CiAKICAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7CiAgICAgICAgICAgICB3aGls
ZSAoaW5kZXggPCBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBhcmdzLnB1c2gocGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbigpKTsKKyAgICAgICAgICAgICAgICBhcmcgPSBwYXJzZVNwcmVhZE9y
QXNzaWdubWVudEV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTsK
KwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCgnKScpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnLnR5cGUgPT09IFN5bnRheC5T
cHJlYWRFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3Nh
Z2VzLkVsZW1lbnRBZnRlclNwcmVhZEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgICAgIGV4cGVjdCgnLCcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0y
MjIzLDE3ICsyOTEzLDI0IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1l
bnQKICAgICAgICAgcmV0dXJuIGFyZ3M7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VOb25D
b21wdXRlZFByb3BlcnR5KCkgewotICAgICAgICB2YXIgdG9rZW4sIHN0YXJ0VG9rZW47CisgICAg
ZnVuY3Rpb24gcGFyc2VTcHJlYWRPckFzc2lnbm1lbnRFeHByZXNzaW9uKCkgeworICAgICAgICBp
ZiAobWF0Y2goJy4uLicpKSB7CisgICAgICAgICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRl
KCk7CisgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseSht
YXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVNwcmVhZEVsZW1lbnQocGFyc2VBc3NpZ25tZW50RXhwcmVz
c2lvbigpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oKTsKKyAgICB9CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKLSAgICAg
ICAgdG9rZW4gPSBsZXgoKTsKKyAgICBmdW5jdGlvbiBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHko
KSB7CisgICAgICAgIHZhciBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKSwKKyAgICAgICAgICAgIHRv
a2VuID0gbGV4KCk7CiAKICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJOYW1lKHRva2VuKSkgewog
ICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTsKICAgICAgICAgfQogCi0gICAgICAg
IHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4u
dmFsdWUpLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwg
ZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSkpOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIHBhcnNlTm9uQ29tcHV0ZWRNZW1iZXIoKSB7CkBAIC0yMjU1LDYzICsyOTUyLDQ5IEBA
IHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICB9CiAKICAgICBm
dW5jdGlvbiBwYXJzZU5ld0V4cHJlc3Npb24oKSB7Ci0gICAgICAgIHZhciBjYWxsZWUsIGFyZ3Ms
IHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBjYWxsZWUsIGFyZ3MsIG1hcmtlciA9IG1hcmtlckNy
ZWF0ZSgpOwogCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgIGV4cGVj
dEtleXdvcmQoJ25ldycpOwogICAgICAgICBjYWxsZWUgPSBwYXJzZUxlZnRIYW5kU2lkZUV4cHJl
c3Npb24oKTsKICAgICAgICAgYXJncyA9IG1hdGNoKCcoJykgPyBwYXJzZUFyZ3VtZW50cygpIDog
W107CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlTmV3
RXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MpLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG1h
cmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlTmV3RXhwcmVzc2lvbihjYWxsZWUsIGFy
Z3MpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25B
bGxvd0NhbGwoKSB7Ci0gICAgICAgIHZhciBwcmV2aW91c0FsbG93SW4sIGV4cHIsIGFyZ3MsIHBy
b3BlcnR5LCBzdGFydFRva2VuOworICAgICAgICB2YXIgZXhwciwgYXJncywgbWFya2VyID0gbWFy
a2VyQ3JlYXRlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKLQotICAgICAg
ICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luOwotICAgICAgICBzdGF0ZS5hbGxvd0lu
ID0gdHJ1ZTsKICAgICAgICAgZXhwciA9IG1hdGNoS2V5d29yZCgnbmV3JykgPyBwYXJzZU5ld0V4
cHJlc3Npb24oKSA6IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oKTsKLSAgICAgICAgc3RhdGUuYWxs
b3dJbiA9IHByZXZpb3VzQWxsb3dJbjsKIAotICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAg
ICBpZiAobWF0Y2goJy4nKSkgewotICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VOb25D
b21wdXRlZE1lbWJlcigpOwotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVN
ZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcHJvcGVydHkpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChtYXRjaCgnKCcpKSB7CisgICAgICAgIHdoaWxlIChtYXRjaCgnLicpIHx8IG1hdGNoKCdb
JykgfHwgbWF0Y2goJygnKSB8fCBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uVGVtcGxhdGUpIHsK
KyAgICAgICAgICAgIGlmIChtYXRjaCgnKCcpKSB7CiAgICAgICAgICAgICAgICAgYXJncyA9IHBh
cnNlQXJndW1lbnRzKCk7Ci0gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNh
bGxFeHByZXNzaW9uKGV4cHIsIGFyZ3MpOworICAgICAgICAgICAgICAgIGV4cHIgPSBtYXJrZXJB
cHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUNhbGxFeHByZXNzaW9uKGV4cHIsIGFyZ3MpKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJ1snKSkgewotICAgICAgICAgICAgICAgIHBy
b3BlcnR5ID0gcGFyc2VDb21wdXRlZE1lbWJlcigpOwotICAgICAgICAgICAgICAgIGV4cHIgPSBk
ZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCdbJywgZXhwciwgcHJvcGVydHkpOworICAg
ICAgICAgICAgICAgIGV4cHIgPSBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZU1l
bWJlckV4cHJlc3Npb24oJ1snLCBleHByLCBwYXJzZUNvbXB1dGVkTWVtYmVyKCkpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJy4nKSkgeworICAgICAgICAgICAgICAgIGV4cHIgPSBt
YXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJy4nLCBl
eHByLCBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZXhwciA9IG1hcmtlckFwcGx5
KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKGV4cHIsIHBh
cnNlVGVtcGxhdGVMaXRlcmFsKCkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlbGVn
YXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gZXhwcjsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Np
b24oKSB7Ci0gICAgICAgIHZhciBwcmV2aW91c0FsbG93SW4sIGV4cHIsIHByb3BlcnR5LCBzdGFy
dFRva2VuOwotCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CisgICAgICAgIHZhciBl
eHByLCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAotICAgICAgICBwcmV2aW91c0FsbG93SW4g
PSBzdGF0ZS5hbGxvd0luOwogICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcnKSA/IHBh
cnNlTmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpOwotICAgICAgICBz
dGF0ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luOwogCi0gICAgICAgIHdoaWxlIChtYXRjaCgn
LicpIHx8IG1hdGNoKCdbJykpIHsKKyAgICAgICAgd2hpbGUgKG1hdGNoKCcuJykgfHwgbWF0Y2go
J1snKSB8fCBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uVGVtcGxhdGUpIHsKICAgICAgICAgICAg
IGlmIChtYXRjaCgnWycpKSB7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUNvbXB1
dGVkTWVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJl
ckV4cHJlc3Npb24oJ1snLCBleHByLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgZXhwciA9
IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignWycs
IGV4cHIsIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSkpOworICAgICAgICAgICAgfSBlbHNlIGlmICht
YXRjaCgnLicpKSB7CisgICAgICAgICAgICAgICAgZXhwciA9IG1hcmtlckFwcGx5KG1hcmtlciwg
ZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignLicsIGV4cHIsIHBhcnNlTm9uQ29tcHV0
ZWRNZW1iZXIoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcm9w
ZXJ0eSA9IHBhcnNlTm9uQ29tcHV0ZWRNZW1iZXIoKTsKLSAgICAgICAgICAgICAgICBleHByID0g
ZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignLicsIGV4cHIsIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICBleHByID0gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVU
YWdnZWRUZW1wbGF0ZUV4cHJlc3Npb24oZXhwciwgcGFyc2VUZW1wbGF0ZUxpdGVyYWwoKSkpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRv
a2VuKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBleHByOwpAQCAtMjMyMCwyNCArMzAw
MywyNiBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgLy8g
MTEuMyBQb3N0Zml4IEV4cHJlc3Npb25zCiAKICAgICBmdW5jdGlvbiBwYXJzZVBvc3RmaXhFeHBy
ZXNzaW9uKCkgewotICAgICAgICB2YXIgZXhwciwgdG9rZW4sIHN0YXJ0VG9rZW4gPSBsb29rYWhl
YWQ7Ci0KLSAgICAgICAgZXhwciA9IHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2Fs
bCgpOworICAgICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRlKCksCisgICAgICAgICAgICBl
eHByID0gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uQWxsb3dDYWxsKCksCisgICAgICAgICAg
ICB0b2tlbjsKIAotICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0
b3IpIHsKLSAgICAgICAgICAgIGlmICgobWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpICYmICFw
ZWVrTGluZVRlcm1pbmF0b3IoKSkgewotICAgICAgICAgICAgICAgIC8vIDExLjMuMSwgMTEuMy4y
Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09IFN5bnRheC5JZGVu
dGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkgewotICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdExIU1Bvc3RmaXgpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5Q
dW5jdHVhdG9yKSB7CisgICAgICAgICAgICByZXR1cm4gZXhwcjsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkgewotICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1l
bnQpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKChtYXRjaCgnKysnKSB8fCBtYXRj
aCgnLS0nKSkgJiYgIXBlZWtMaW5lVGVybWluYXRvcigpKSB7CisgICAgICAgICAgICAvLyAxMS4z
LjEsIDExLjMuMgorICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09IFN5bnRh
eC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkgeworICAgICAgICAg
ICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TEhTUG9zdGZpeCk7
CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpOwotICAgICAg
ICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVBvc3RmaXhF
eHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICBp
ZiAoIWlzTGVmdEhhbmRTaWRlKGV4cHIpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7
fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7CiAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRva2VuID0gbGV4KCk7CisgICAgICAgICAgICBleHByID0gbWFya2VyQXBwbHko
bWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVQb3N0Zml4RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhw
cikpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGV4cHI7CkBAIC0yMzQ2LDEyICszMDMx
LDE0IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAvLyAx
MS40IFVuYXJ5IE9wZXJhdG9ycwogCiAgICAgZnVuY3Rpb24gcGFyc2VVbmFyeUV4cHJlc3Npb24o
KSB7Ci0gICAgICAgIHZhciB0b2tlbiwgZXhwciwgc3RhcnRUb2tlbjsKKyAgICAgICAgdmFyIG1h
cmtlciwgdG9rZW4sIGV4cHI7CiAKICAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9PSBUb2tl
bi5QdW5jdHVhdG9yICYmIGxvb2thaGVhZC50eXBlICE9PSBUb2tlbi5LZXl3b3JkKSB7Ci0gICAg
ICAgICAgICBleHByID0gcGFyc2VQb3N0Zml4RXhwcmVzc2lvbigpOwotICAgICAgICB9IGVsc2Ug
aWYgKG1hdGNoKCcrKycpIHx8IG1hdGNoKCctLScpKSB7Ci0gICAgICAgICAgICBzdGFydFRva2Vu
ID0gbG9va2FoZWFkOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlUG9zdGZpeEV4cHJlc3Npb24o
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXRjaCgnKysnKSB8fCBtYXRjaCgnLS0nKSkg
eworICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAgICAgICAgICAgICB0b2tl
biA9IGxleCgpOwogICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CiAg
ICAgICAgICAgICAvLyAxMS40LjQsIDExLjQuNQpAQCAtMjM2MCwzMSArMzA0NywzMSBAQCBwYXJz
ZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICghaXNMZWZ0SGFuZFNpZGUoZXhwcikpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQpOwor
ICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2ln
bm1lbnQpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3Jl
YXRlVW5hcnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKTsKLSAgICAgICAgICAgIGV4cHIg
PSBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOwotICAgICAgICB9IGVsc2UgaWYg
KG1hdGNoKCcrJykgfHwgbWF0Y2goJy0nKSB8fCBtYXRjaCgnficpIHx8IG1hdGNoKCchJykpIHsK
LSAgICAgICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CisgICAgICAgICAgICByZXR1cm4g
bWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4u
dmFsdWUsIGV4cHIpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXRjaCgnKycpIHx8IG1h
dGNoKCctJykgfHwgbWF0Y2goJ34nKSB8fCBtYXRjaCgnIScpKSB7CisgICAgICAgICAgICBtYXJr
ZXIgPSBtYXJrZXJDcmVhdGUoKTsKICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAgICAgICAg
ICAgICBleHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIGV4cHIgPSBk
ZWxlZ2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpOwotICAgICAg
ICAgICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7Ci0gICAgICAg
IH0gZWxzZSBpZiAobWF0Y2hLZXl3b3JkKCdkZWxldGUnKSB8fCBtYXRjaEtleXdvcmQoJ3ZvaWQn
KSB8fCBtYXRjaEtleXdvcmQoJ3R5cGVvZicpKSB7Ci0gICAgICAgICAgICBzdGFydFRva2VuID0g
bG9va2FoZWFkOworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdh
dGUuY3JlYXRlVW5hcnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdkZWxldGUnKSB8fCBtYXRjaEtleXdvcmQoJ3Zv
aWQnKSB8fCBtYXRjaEtleXdvcmQoJ3R5cGVvZicpKSB7CisgICAgICAgICAgICBtYXJrZXIgPSBt
YXJrZXJDcmVhdGUoKTsKICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAgICAgICAgICAgICBl
eHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0
ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpOwotICAgICAgICAgICAg
ZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICBl
eHByID0gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVVbmFyeUV4cHJlc3Npb24o
dG9rZW4udmFsdWUsIGV4cHIpKTsKICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZXhwci5vcGVy
YXRvciA9PT0gJ2RlbGV0ZScgJiYgZXhwci5hcmd1bWVudC50eXBlID09PSBTeW50YXguSWRlbnRp
ZmllcikgewogICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMu
U3RyaWN0RGVsZXRlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGV4cHIgPSBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4g
ZXhwcjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBleHByOworICAgICAgICByZXR1cm4g
cGFyc2VQb3N0Zml4RXhwcmVzc2lvbigpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGJpbmFyeVBy
ZWNlZGVuY2UodG9rZW4sIGFsbG93SW4pIHsKQEAgLTI0NjcsMjUgKzMxNTQsMjkgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgIC8vIDExLjExIEJpbmFyeSBM
b2dpY2FsIE9wZXJhdG9ycwogCiAgICAgZnVuY3Rpb24gcGFyc2VCaW5hcnlFeHByZXNzaW9uKCkg
ewotICAgICAgICB2YXIgbWFya2VyLCBtYXJrZXJzLCBleHByLCB0b2tlbiwgcHJlYywgc3RhY2ss
IHJpZ2h0LCBvcGVyYXRvciwgbGVmdCwgaTsKKyAgICAgICAgdmFyIGV4cHIsIHRva2VuLCBwcmVj
LCBwcmV2aW91c0FsbG93SW4sIHN0YWNrLCByaWdodCwgb3BlcmF0b3IsIGxlZnQsIGksCisgICAg
ICAgICAgICBtYXJrZXIsIG1hcmtlcnM7CiAKLSAgICAgICAgbWFya2VyID0gbG9va2FoZWFkOwor
ICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luOworICAgICAgICBzdGF0ZS5h
bGxvd0luID0gdHJ1ZTsKKworICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKICAgICAg
ICAgbGVmdCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CiAKICAgICAgICAgdG9rZW4gPSBsb29r
YWhlYWQ7Ci0gICAgICAgIHByZWMgPSBiaW5hcnlQcmVjZWRlbmNlKHRva2VuLCBzdGF0ZS5hbGxv
d0luKTsKKyAgICAgICAgcHJlYyA9IGJpbmFyeVByZWNlZGVuY2UodG9rZW4sIHByZXZpb3VzQWxs
b3dJbik7CiAgICAgICAgIGlmIChwcmVjID09PSAwKSB7CiAgICAgICAgICAgICByZXR1cm4gbGVm
dDsKICAgICAgICAgfQogICAgICAgICB0b2tlbi5wcmVjID0gcHJlYzsKICAgICAgICAgbGV4KCk7
CiAKLSAgICAgICAgbWFya2VycyA9IFttYXJrZXIsIGxvb2thaGVhZF07CisgICAgICAgIG1hcmtl
cnMgPSBbbWFya2VyLCBtYXJrZXJDcmVhdGUoKV07CiAgICAgICAgIHJpZ2h0ID0gcGFyc2VVbmFy
eUV4cHJlc3Npb24oKTsKIAogICAgICAgICBzdGFjayA9IFtsZWZ0LCB0b2tlbiwgcmlnaHRdOwog
Ci0gICAgICAgIHdoaWxlICgocHJlYyA9IGJpbmFyeVByZWNlZGVuY2UobG9va2FoZWFkLCBzdGF0
ZS5hbGxvd0luKSkgPiAwKSB7CisgICAgICAgIHdoaWxlICgocHJlYyA9IGJpbmFyeVByZWNlZGVu
Y2UobG9va2FoZWFkLCBwcmV2aW91c0FsbG93SW4pKSA+IDApIHsKIAogICAgICAgICAgICAgLy8g
UmVkdWNlOiBtYWtlIGEgYmluYXJ5IGV4cHJlc3Npb24gZnJvbSB0aGUgdGhyZWUgdG9wbW9zdCBl
bnRyaWVzLgogICAgICAgICAgICAgd2hpbGUgKChzdGFjay5sZW5ndGggPiAyKSAmJiAocHJlYyA8
PSBzdGFja1tzdGFjay5sZW5ndGggLSAyXS5wcmVjKSkgewpAQCAtMjQ5NCwyMCArMzE4NSwyMyBA
QCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICAg
ICAgbGVmdCA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5j
cmVhdGVCaW5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICAgICAgbWFya2Vycy5wb3AoKTsKLSAgICAgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJzW21h
cmtlcnMubGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHBy
LCBtYXJrZXIpOworICAgICAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlcnMucG9wKCk7CisgICAg
ICAgICAgICAgICAgbWFya2VyQXBwbHkobWFya2VyLCBleHByKTsKICAgICAgICAgICAgICAgICBz
dGFjay5wdXNoKGV4cHIpOworICAgICAgICAgICAgICAgIG1hcmtlcnMucHVzaChtYXJrZXIpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBTaGlmdC4KICAgICAgICAgICAgIHRva2Vu
ID0gbGV4KCk7CiAgICAgICAgICAgICB0b2tlbi5wcmVjID0gcHJlYzsKICAgICAgICAgICAgIHN0
YWNrLnB1c2godG9rZW4pOwotICAgICAgICAgICAgbWFya2Vycy5wdXNoKGxvb2thaGVhZCk7Cisg
ICAgICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyQ3JlYXRlKCkpOwogICAgICAgICAgICAgZXhw
ciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CiAgICAgICAgICAgICBzdGFjay5wdXNoKGV4cHIp
OwogICAgICAgICB9CiAKKyAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjsK
KwogICAgICAgICAvLyBGaW5hbCByZWR1Y2UgdG8gY2xlYW4tdXAgdGhlIHN0YWNrLgogICAgICAg
ICBpID0gc3RhY2subGVuZ3RoIC0gMTsKICAgICAgICAgZXhwciA9IHN0YWNrW2ldOwpAQCAtMjUx
Niw3ICszMjEwLDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
ICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oc3RhY2tb
aSAtIDFdLnZhbHVlLCBzdGFja1tpIC0gMl0sIGV4cHIpOwogICAgICAgICAgICAgaSAtPSAyOwog
ICAgICAgICAgICAgbWFya2VyID0gbWFya2Vycy5wb3AoKTsKLSAgICAgICAgICAgIGRlbGVnYXRl
Lm1hcmtFbmQoZXhwciwgbWFya2VyKTsKKyAgICAgICAgICAgIG1hcmtlckFwcGx5KG1hcmtlciwg
ZXhwcik7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZXhwcjsKQEAgLTI1MjYsMTAgKzMy
MjAsNyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgLy8g
MTEuMTIgQ29uZGl0aW9uYWwgT3BlcmF0b3IKIAogICAgIGZ1bmN0aW9uIHBhcnNlQ29uZGl0aW9u
YWxFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgZXhwciwgcHJldmlvdXNBbGxvd0luLCBjb25z
ZXF1ZW50LCBhbHRlcm5hdGUsIHN0YXJ0VG9rZW47Ci0KLSAgICAgICAgc3RhcnRUb2tlbiA9IGxv
b2thaGVhZDsKLQorICAgICAgICB2YXIgZXhwciwgcHJldmlvdXNBbGxvd0luLCBjb25zZXF1ZW50
LCBhbHRlcm5hdGUsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogICAgICAgICBleHByID0gcGFy
c2VCaW5hcnlFeHByZXNzaW9uKCk7CiAKICAgICAgICAgaWYgKG1hdGNoKCc/JykpIHsKQEAgLTI1
NDEsOCArMzIzMiw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQK
ICAgICAgICAgICAgIGV4cGVjdCgnOicpOwogICAgICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbigpOwogCi0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3Jl
YXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGV4cHIsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7Ci0g
ICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOworICAgICAgICAg
ICAgZXhwciA9IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlQ29uZGl0aW9uYWxF
eHByZXNzaW9uKGV4cHIsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIGV4cHI7CkBAIC0yNTUwLDU1ICszMjQwLDI3NCBAQCBwYXJzZVN0YXRlbWVu
dDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAvLyAxMS4xMyBBc3NpZ25tZW50IE9w
ZXJhdG9ycwogCisgICAgLy8gMTIuMTQuNSBBc3NpZ25tZW50UGF0dGVybgorCisgICAgZnVuY3Rp
b24gcmVpbnRlcnByZXRBc0Fzc2lnbm1lbnRCaW5kaW5nUGF0dGVybihleHByKSB7CisgICAgICAg
IHZhciBpLCBsZW4sIHByb3BlcnR5LCBlbGVtZW50OworCisgICAgICAgIGlmIChleHByLnR5cGUg
PT09IFN5bnRheC5PYmplY3RFeHByZXNzaW9uKSB7CisgICAgICAgICAgICBleHByLnR5cGUgPSBT
eW50YXguT2JqZWN0UGF0dGVybjsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGV4cHIu
cHJvcGVydGllcy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkgeworICAgICAgICAgICAgICAgIHBy
b3BlcnR5ID0gZXhwci5wcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5raW5kICE9PSAnaW5pdCcpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwg
TWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNBc3NpZ25tZW50QmluZGluZ1BhdHRlcm4ocHJvcGVy
dHkudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGV4cHIudHlwZSA9
PT0gU3ludGF4LkFycmF5RXhwcmVzc2lvbikgeworICAgICAgICAgICAgZXhwci50eXBlID0gU3lu
dGF4LkFycmF5UGF0dGVybjsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGV4cHIuZWxl
bWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZXhwci5lbGVtZW50c1tpXTsKKyAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
ZWxzZSAqLworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlaW50ZXJwcmV0QXNBc3NpZ25tZW50QmluZGluZ1BhdHRlcm4oZWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGV4cHIudHlw
ZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRX
b3JkKGV4cHIubmFtZSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdl
cy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IGlmIChleHByLnR5cGUgPT09IFN5bnRheC5TcHJlYWRFbGVtZW50KSB7CisgICAgICAgICAgICBy
ZWludGVycHJldEFzQXNzaWdubWVudEJpbmRpbmdQYXR0ZXJuKGV4cHIuYXJndW1lbnQpOworICAg
ICAgICAgICAgaWYgKGV4cHIuYXJndW1lbnQudHlwZSA9PT0gU3ludGF4Lk9iamVjdFBhdHRlcm4p
IHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5PYmplY3RQYXR0ZXJu
QXNTcHJlYWQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
LyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgICAgICAgICAgIGlmIChleHByLnR5cGUgIT09
IFN5bnRheC5NZW1iZXJFeHByZXNzaW9uICYmIGV4cHIudHlwZSAhPT0gU3ludGF4LkNhbGxFeHBy
ZXNzaW9uICYmIGV4cHIudHlwZSAhPT0gU3ludGF4Lk5ld0V4cHJlc3Npb24pIHsKKyAgICAgICAg
ICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIDEzLjIuMyBCaW5kaW5n
UGF0dGVybgorCisgICAgZnVuY3Rpb24gcmVpbnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRl
cihvcHRpb25zLCBleHByKSB7CisgICAgICAgIHZhciBpLCBsZW4sIHByb3BlcnR5LCBlbGVtZW50
OworCisgICAgICAgIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5PYmplY3RFeHByZXNzaW9uKSB7
CisgICAgICAgICAgICBleHByLnR5cGUgPSBTeW50YXguT2JqZWN0UGF0dGVybjsKKyAgICAgICAg
ICAgIGZvciAoaSA9IDAsIGxlbiA9IGV4cHIucHJvcGVydGllcy5sZW5ndGg7IGkgPCBsZW47IGkg
Kz0gMSkgeworICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZXhwci5wcm9wZXJ0aWVzW2ldOwor
ICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5raW5kICE9PSAnaW5pdCcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luRm9ybWFsc0xp
c3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZWludGVycHJldEFzRGVz
dHJ1Y3R1cmVkUGFyYW1ldGVyKG9wdGlvbnMsIHByb3BlcnR5LnZhbHVlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5BcnJheUV4cHJlc3Np
b24pIHsKKyAgICAgICAgICAgIGV4cHIudHlwZSA9IFN5bnRheC5BcnJheVBhdHRlcm47CisgICAg
ICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBleHByLmVsZW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsg
aSArPSAxKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGV4cHIuZWxlbWVudHNbaV07Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBlbGVtZW50KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZXhwci50eXBlID09
PSBTeW50YXguSWRlbnRpZmllcikgeworICAgICAgICAgICAgdmFsaWRhdGVQYXJhbShvcHRpb25z
LCBleHByLCBleHByLm5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKGV4cHIudHlwZSA9PT0gU3lu
dGF4LlNwcmVhZEVsZW1lbnQpIHsKKyAgICAgICAgICAgIC8vIEJpbmRpbmdSZXN0RWxlbWVudCBv
bmx5IGFsbG93cyBCaW5kaW5nSWRlbnRpZmllcgorICAgICAgICAgICAgaWYgKGV4cHIuYXJndW1l
bnQudHlwZSAhPT0gU3ludGF4LklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JtYWxzTGlzdCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB2YWxpZGF0ZVBhcmFtKG9wdGlvbnMsIGV4cHIuYXJndW1lbnQsIGV4cHIu
YXJndW1lbnQubmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvd0Vycm9y
KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JtYWxzTGlzdCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiByZWludGVycHJldEFzQ292ZXJGb3JtYWxzTGlzdChleHByZXNzaW9u
cykgeworICAgICAgICB2YXIgaSwgbGVuLCBwYXJhbSwgcGFyYW1zLCBkZWZhdWx0cywgZGVmYXVs
dENvdW50LCBvcHRpb25zLCByZXN0OworCisgICAgICAgIHBhcmFtcyA9IFtdOworICAgICAgICBk
ZWZhdWx0cyA9IFtdOworICAgICAgICBkZWZhdWx0Q291bnQgPSAwOworICAgICAgICByZXN0ID0g
bnVsbDsKKyAgICAgICAgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHBhcmFtU2V0OiBuZXcgU3Ry
aW5nTWFwKCkKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBleHByZXNz
aW9ucy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkgeworICAgICAgICAgICAgcGFyYW0gPSBleHBy
ZXNzaW9uc1tpXTsKKyAgICAgICAgICAgIGlmIChwYXJhbS50eXBlID09PSBTeW50YXguSWRlbnRp
ZmllcikgeworICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0cy5wdXNoKG51bGwpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlUGFyYW0o
b3B0aW9ucywgcGFyYW0sIHBhcmFtLm5hbWUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJh
bS50eXBlID09PSBTeW50YXguT2JqZWN0RXhwcmVzc2lvbiB8fCBwYXJhbS50eXBlID09PSBTeW50
YXguQXJyYXlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRBc0Rlc3Ry
dWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBwYXJhbSk7CisgICAgICAgICAgICAgICAgcGFyYW1z
LnB1c2gocGFyYW0pOworICAgICAgICAgICAgICAgIGRlZmF1bHRzLnB1c2gobnVsbCk7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKHBhcmFtLnR5cGUgPT09IFN5bnRheC5TcHJlYWRFbGVtZW50KSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0KGkgPT09IGxlbiAtIDEsICdJdCBpcyBndWFyYW50ZWVk
IHRoYXQgU3ByZWFkRWxlbWVudCBpcyBsYXN0IGVsZW1lbnQgYnkgcGFyc2VFeHByZXNzaW9uJyk7
CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtLmFyZ3VtZW50LnR5cGUgIT09IFN5bnRheC5JZGVu
dGlmaWVyKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklu
dmFsaWRMSFNJbkZvcm1hbHNMaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBwYXJhbS5hcmd1
bWVudCk7CisgICAgICAgICAgICAgICAgcmVzdCA9IHBhcmFtLmFyZ3VtZW50OworICAgICAgICAg
ICAgfSBlbHNlIGlmIChwYXJhbS50eXBlID09PSBTeW50YXguQXNzaWdubWVudEV4cHJlc3Npb24p
IHsKKyAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChwYXJhbS5sZWZ0KTsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0cy5wdXNoKHBhcmFtLnJpZ2h0KTsKKyAgICAgICAgICAgICAgICArK2RlZmF1
bHRDb3VudDsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZVBhcmFtKG9wdGlvbnMsIHBhcmFtLmxl
ZnQsIHBhcmFtLmxlZnQubmFtZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KG9wdGlvbnMubWVzc2FnZSA9PT0gTWVzc2FnZXMuU3RyaWN0UGFyYW1EdXBlKSB7CisgICAgICAg
ICAgICB0aHJvd0Vycm9yKAorICAgICAgICAgICAgICAgIHN0cmljdCA/IG9wdGlvbnMuc3RyaWN0
ZWQgOiBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCwKKyAgICAgICAgICAgICAgICBvcHRpb25zLm1l
c3NhZ2UKKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVmYXVsdENv
dW50ID09PSAwKSB7CisgICAgICAgICAgICBkZWZhdWx0cyA9IFtdOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLAorICAgICAgICAgICAg
ZGVmYXVsdHM6IGRlZmF1bHRzLAorICAgICAgICAgICAgcmVzdDogcmVzdCwKKyAgICAgICAgICAg
IHN0cmljdGVkOiBvcHRpb25zLnN0cmljdGVkLAorICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVk
OiBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCwKKyAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMu
bWVzc2FnZQorICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlQXJyb3dGdW5j
dGlvbkV4cHJlc3Npb24ob3B0aW9ucywgbWFya2VyKSB7CisgICAgICAgIHZhciBwcmV2aW91c1N0
cmljdCwgcHJldmlvdXNZaWVsZEFsbG93ZWQsIGJvZHk7CisKKyAgICAgICAgZXhwZWN0KCc9Picp
OworCisgICAgICAgIHByZXZpb3VzU3RyaWN0ID0gc3RyaWN0OworICAgICAgICBwcmV2aW91c1lp
ZWxkQWxsb3dlZCA9IHN0YXRlLnlpZWxkQWxsb3dlZDsKKyAgICAgICAgc3RhdGUueWllbGRBbGxv
d2VkID0gZmFsc2U7CisgICAgICAgIGJvZHkgPSBwYXJzZUNvbmNpc2VCb2R5KCk7CisKKyAgICAg
ICAgaWYgKHN0cmljdCAmJiBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCkgeworICAgICAgICAgICAg
dGhyb3dFcnJvcihvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCwgb3B0aW9ucy5tZXNzYWdlKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoc3RyaWN0ICYmIG9wdGlvbnMuc3RyaWN0ZWQpIHsKKyAgICAg
ICAgICAgIHRocm93RXJyb3JUb2xlcmFudChvcHRpb25zLnN0cmljdGVkLCBvcHRpb25zLm1lc3Nh
Z2UpOworICAgICAgICB9CisKKyAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7CisgICAg
ICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9IHByZXZpb3VzWWllbGRBbGxvd2VkOworCisgICAgICAg
IHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUFycm93RnVuY3Rpb25F
eHByZXNzaW9uKAorICAgICAgICAgICAgb3B0aW9ucy5wYXJhbXMsCisgICAgICAgICAgICBvcHRp
b25zLmRlZmF1bHRzLAorICAgICAgICAgICAgYm9keSwKKyAgICAgICAgICAgIG9wdGlvbnMucmVz
dCwKKyAgICAgICAgICAgIGJvZHkudHlwZSAhPT0gU3ludGF4LkJsb2NrU3RhdGVtZW50CisgICAg
ICAgICkpOworICAgIH0KKwogICAgIGZ1bmN0aW9uIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
KSB7Ci0gICAgICAgIHZhciB0b2tlbiwgbGVmdCwgcmlnaHQsIG5vZGUsIHN0YXJ0VG9rZW47Cisg
ICAgICAgIHZhciBtYXJrZXIsIGV4cHIsIHRva2VuLCBwYXJhbXMsIG9sZFBhcmVudGhlc2l6ZWRD
b3VudCwKKyAgICAgICAgICAgIHN0YXJ0c1dpdGhQYXJlbiA9IGZhbHNlOwogCi0gICAgICAgIHRv
a2VuID0gbG9va2FoZWFkOwotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOworICAgICAg
ICAvLyBOb3RlIHRoYXQgJ3lpZWxkJyBpcyB0cmVhdGVkIGFzIGEga2V5d29yZCBpbiBzdHJpY3Qg
bW9kZSwgYnV0IGEKKyAgICAgICAgLy8gY29udGV4dHVhbCBrZXl3b3JkIChpZGVudGlmaWVyKSBp
biBub24tc3RyaWN0IG1vZGUsIHNvIHdlIG5lZWQKKyAgICAgICAgLy8gdG8gdXNlIG1hdGNoS2V5
d29yZCBhbmQgbWF0Y2hDb250ZXh0dWFsS2V5d29yZCBhcHByb3ByaWF0ZWx5LgorICAgICAgICBp
ZiAoKHN0YXRlLnlpZWxkQWxsb3dlZCAmJiBtYXRjaENvbnRleHR1YWxLZXl3b3JkKCd5aWVsZCcp
KSB8fCAoc3RyaWN0ICYmIG1hdGNoS2V5d29yZCgneWllbGQnKSkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZVlpZWxkRXhwcmVzc2lvbigpOworICAgICAgICB9CiAKLSAgICAgICAgbm9kZSA9
IGxlZnQgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbigpOworICAgICAgICBvbGRQYXJlbnRo
ZXNpemVkQ291bnQgPSBzdGF0ZS5wYXJlbnRoZXNpemVkQ291bnQ7CiAKLSAgICAgICAgaWYgKG1h
dGNoQXNzaWduKCkpIHsKLSAgICAgICAgICAgIC8vIExlZnRIYW5kU2lkZUV4cHJlc3Npb24KLSAg
ICAgICAgICAgIGlmICghaXNMZWZ0SGFuZFNpZGUobGVmdCkpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQpOwor
ICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKKworICAgICAgICBpZiAobWF0Y2goJygn
KSkgeworICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQyKCk7CisgICAgICAgICAgICBpZiAo
KHRva2VuLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IgJiYgdG9rZW4udmFsdWUgPT09ICcpJykg
fHwgdG9rZW4udmFsdWUgPT09ICcuLi4nKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zID0gcGFy
c2VQYXJhbXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCc9PicpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKHBhcmFt
cywgbWFya2VyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXJ0c1dpdGhQYXJlbiA9
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKKyAgICAgICAg
ZXhwciA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKCk7CisKKyAgICAgICAgaWYgKG1hdGNo
KCc9PicpICYmCisgICAgICAgICAgICAgICAgKHN0YXRlLnBhcmVudGhlc2l6ZWRDb3VudCA9PT0g
b2xkUGFyZW50aGVzaXplZENvdW50IHx8CisgICAgICAgICAgICAgICAgc3RhdGUucGFyZW50aGVz
aXplZENvdW50ID09PSAob2xkUGFyZW50aGVzaXplZENvdW50ICsgMSkpKSB7CisgICAgICAgICAg
ICBpZiAoZXhwci50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAg
IHBhcmFtcyA9IHJlaW50ZXJwcmV0QXNDb3ZlckZvcm1hbHNMaXN0KFsgZXhwciBdKTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZXhwci50eXBlID09PSBTeW50YXguQXNzaWdubWVudEV4cHJlc3Np
b24gfHwKKyAgICAgICAgICAgICAgICAgICAgZXhwci50eXBlID09PSBTeW50YXguQXJyYXlFeHBy
ZXNzaW9uIHx8CisgICAgICAgICAgICAgICAgICAgIGV4cHIudHlwZSA9PT0gU3ludGF4Lk9iamVj
dEV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0c1dpdGhQYXJlbikgewor
ICAgICAgICAgICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobGV4KCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBwYXJhbXMgPSByZWludGVycHJldEFzQ292ZXJGb3JtYWxz
TGlzdChbIGV4cHIgXSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV4cHIudHlwZSA9PT0gU3lu
dGF4LlNlcXVlbmNlRXhwcmVzc2lvbikgeworICAgICAgICAgICAgICAgIHBhcmFtcyA9IHJlaW50
ZXJwcmV0QXNDb3ZlckZvcm1hbHNMaXN0KGV4cHIuZXhwcmVzc2lvbnMpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHBhcmFtcykgeworICAgICAgICAgICAgICAgIHJldHVybiBwYXJz
ZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKHBhcmFtcywgbWFya2VyKTsKICAgICAgICAgICAgIH0K
KyAgICAgICAgfQogCisgICAgICAgIGlmIChtYXRjaEFzc2lnbigpKSB7CiAgICAgICAgICAgICAv
LyAxMS4xMy4xCi0gICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGxlZnQudHlwZSA9PT0gU3ludGF4
LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChsZWZ0Lm5hbWUpKSB7CisgICAgICAgICAg
ICBpZiAoc3RyaWN0ICYmIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0
cmljdGVkV29yZChleHByLm5hbWUpKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVy
YW50KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RMSFNBc3NpZ25tZW50KTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTsKLSAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbigpOwotICAgICAgICAgICAgbm9kZSA9IGRlbGVnYXRlLm1hcmtF
bmQoZGVsZWdhdGUuY3JlYXRlQXNzaWdubWVudEV4cHJlc3Npb24odG9rZW4udmFsdWUsIGxlZnQs
IHJpZ2h0KSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAvLyBFUy5uZXh0IGRyYWYgMTEuMTMg
UnVudGltZSBTZW1hbnRpY3Mgc3RlcCAxCisgICAgICAgICAgICBpZiAobWF0Y2goJz0nKSAmJiAo
ZXhwci50eXBlID09PSBTeW50YXguT2JqZWN0RXhwcmVzc2lvbiB8fCBleHByLnR5cGUgPT09IFN5
bnRheC5BcnJheUV4cHJlc3Npb24pKSB7CisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRBc0Fz
c2lnbm1lbnRCaW5kaW5nUGF0dGVybihleHByKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlz
TGVmdEhhbmRTaWRlKGV4cHIpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVz
c2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGV4cHIgPSBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGxleCgpLnZhbHVlLCBleHByLCBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBub2RlOworICAgICAgICByZXR1cm4gZXhw
cjsKICAgICB9CiAKICAgICAvLyAxMS4xNCBDb21tYSBPcGVyYXRvcgogCiAgICAgZnVuY3Rpb24g
cGFyc2VFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgZXhwciwgc3RhcnRUb2tlbiA9IGxvb2th
aGVhZDsKKyAgICAgICAgdmFyIG1hcmtlciwgZXhwciwgZXhwcmVzc2lvbnMsIHNlcXVlbmNlLCBz
cHJlYWRGb3VuZDsKIAorICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKICAgICAgICAg
ZXhwciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKKyAgICAgICAgZXhwcmVzc2lvbnMg
PSBbIGV4cHIgXTsKIAogICAgICAgICBpZiAobWF0Y2goJywnKSkgewotICAgICAgICAgICAgZXhw
ciA9IGRlbGVnYXRlLmNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihbIGV4cHIgXSk7Ci0KICAgICAg
ICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmICghbWF0
Y2goJywnKSkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CisKICAgICAgICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgICAgICBleHByLmV4cHJlc3Np
b25zLnB1c2gocGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTsKKyAgICAgICAgICAgICAgICBl
eHByID0gcGFyc2VTcHJlYWRPckFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgICAgICAgICAg
ICAgZXhwcmVzc2lvbnMucHVzaChleHByKTsKKworICAgICAgICAgICAgICAgIGlmIChleHByLnR5
cGUgPT09IFN5bnRheC5TcHJlYWRFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHNwcmVh
ZEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5FbGVtZW50QWZ0
ZXJTcHJlYWRFbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICBzZXF1
ZW5jZSA9IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlU2VxdWVuY2VFeHByZXNz
aW9uKGV4cHJlc3Npb25zKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZXhwcjsKKyAg
ICAgICAgaWYgKHNwcmVhZEZvdW5kICYmIGxvb2thaGVhZDIoKS52YWx1ZSAhPT0gJz0+Jykgewor
ICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbFNwcmVhZCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gc2VxdWVuY2UgfHwgZXhwcjsKICAgICB9CiAKICAgICAv
LyAxMi4xIEJsb2NrCkBAIC0yNjIyLDQ1ICszNTMxLDUzIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVl
LCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUJsb2NrKCkg
ewotICAgICAgICB2YXIgYmxvY2ssIHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBibG9jaywgbWFy
a2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsK
ICAgICAgICAgZXhwZWN0KCd7Jyk7CiAKICAgICAgICAgYmxvY2sgPSBwYXJzZVN0YXRlbWVudExp
c3QoKTsKIAogICAgICAgICBleHBlY3QoJ30nKTsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUu
bWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVCbG9ja1N0YXRlbWVudChibG9jayksIHN0YXJ0VG9rZW4p
OworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVCbG9j
a1N0YXRlbWVudChibG9jaykpOwogICAgIH0KIAogICAgIC8vIDEyLjIgVmFyaWFibGUgU3RhdGVt
ZW50CiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpIHsKLSAgICAgICAg
dmFyIHRva2VuLCBzdGFydFRva2VuOwotCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7
Ci0gICAgICAgIHRva2VuID0gbGV4KCk7CisgICAgICAgIHZhciBtYXJrZXIgPSBtYXJrZXJDcmVh
dGUoKSwKKyAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAKICAgICAgICAgaWYgKHRva2VuLnR5
cGUgIT09IFRva2VuLklkZW50aWZpZXIpIHsKICAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0
b2tlbik7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxl
Z2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAgICAg
IHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9r
ZW4udmFsdWUpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRp
b24oa2luZCkgewotICAgICAgICB2YXIgaW5pdCA9IG51bGwsIGlkLCBzdGFydFRva2VuOwotCi0g
ICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgIGlkID0gcGFyc2VWYXJpYWJs
ZUlkZW50aWZpZXIoKTsKLQotICAgICAgICAvLyAxMi4yLjEKLSAgICAgICAgaWYgKHN0cmljdCAm
JiBpc1Jlc3RyaWN0ZWRXb3JkKGlkLm5hbWUpKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yVG9s
ZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdFZhck5hbWUpOworICAgICAgICB2YXIgaWQsCisgICAg
ICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKSwKKyAgICAgICAgICAgIGluaXQgPSBudWxs
OworICAgICAgICBpZiAobWF0Y2goJ3snKSkgeworICAgICAgICAgICAgaWQgPSBwYXJzZU9iamVj
dEluaXRpYWxpc2VyKCk7CisgICAgICAgICAgICByZWludGVycHJldEFzQXNzaWdubWVudEJpbmRp
bmdQYXR0ZXJuKGlkKTsKKyAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnWycpKSB7CisgICAgICAg
ICAgICBpZCA9IHBhcnNlQXJyYXlJbml0aWFsaXNlcigpOworICAgICAgICAgICAgcmVpbnRlcnBy
ZXRBc0Fzc2lnbm1lbnRCaW5kaW5nUGF0dGVybihpZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLworICAgICAgICAgICAgaWQgPSBzdGF0
ZS5hbGxvd0tleXdvcmQgPyBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHkoKSA6IHBhcnNlVmFyaWFi
bGVJZGVudGlmaWVyKCk7CisgICAgICAgICAgICAvLyAxMi4yLjEKKyAgICAgICAgICAgIGlmIChz
dHJpY3QgJiYgaXNSZXN0cmljdGVkV29yZChpZC5uYW1lKSkgeworICAgICAgICAgICAgICAgIHRo
cm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0VmFyTmFtZSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoa2luZCA9PT0gJ2NvbnN0JykgeworICAgICAg
ICAgICAgaWYgKCFtYXRjaCgnPScpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwg
TWVzc2FnZXMuTm9VbmludGlhbGl6ZWRDb25zdCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBleHBlY3QoJz0nKTsKICAgICAgICAgICAgIGluaXQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKCk7CiAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJz0nKSkgewpAQCAtMjY2OCw3ICszNTg1
LDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAg
ICAgaW5pdCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFy
YXRvcihpZCwgaW5pdCksIHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHko
bWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpKTsKICAg
ICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGtpbmQpIHsK
QEAgLTI2ODYsNyArMzYwMyw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVs
ZW1lbnQKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCkgewot
ICAgICAgICB2YXIgZGVjbGFyYXRpb25zOworICAgICAgICB2YXIgZGVjbGFyYXRpb25zLCBtYXJr
ZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCd2YXInKTsKIApA
QCAtMjY5NCw3ICszNjExLDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxl
bWVudAogCiAgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKIAotICAgICAgICByZXR1cm4gZGVs
ZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsICd2YXInKTsKKyAg
ICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVE
ZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsICd2YXInKSk7CiAgICAgfQogCiAgICAgLy8ga2luZCBt
YXkgYmUgYGNvbnN0YCBvciBgbGV0YApAQCAtMjcwMiw5ICszNjE5LDcgQEAgcGFyc2VTdGF0ZW1l
bnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgIC8vIHNlZSBodHRwOi8vd2lraS5lY21h
c2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmNvbnN0CiAgICAgLy8gYW5kIGh0dHA6Ly93
aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPWhhcm1vbnk6bGV0CiAgICAgZnVuY3Rpb24g
cGFyc2VDb25zdExldERlY2xhcmF0aW9uKGtpbmQpIHsKLSAgICAgICAgdmFyIGRlY2xhcmF0aW9u
cywgc3RhcnRUb2tlbjsKLQotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOworICAgICAg
ICB2YXIgZGVjbGFyYXRpb25zLCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBl
eHBlY3RLZXl3b3JkKGtpbmQpOwogCkBAIC0yNzEyLDI4ICszNjI3LDI4MSBAQCBwYXJzZVN0YXRl
bWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgY29uc3VtZVNlbWljb2xv
bigpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZh
cmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCBraW5kKSwgc3RhcnRUb2tlbik7CisgICAg
ICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVj
bGFyYXRpb24oZGVjbGFyYXRpb25zLCBraW5kKSk7CisgICAgfQorCisgICAgLy8gcGVvcGxlLm1v
emlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sCisKKyAgICBmdW5jdGlvbiBwYXJz
ZU1vZHVsZVNwZWNpZmllcigpIHsKKyAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgp
LAorICAgICAgICAgICAgc3BlY2lmaWVyOworCisgICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAh
PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkgeworICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVz
c2FnZXMuSW52YWxpZE1vZHVsZVNwZWNpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgc3BlY2lm
aWVyID0gZGVsZWdhdGUuY3JlYXRlTW9kdWxlU3BlY2lmaWVyKGxvb2thaGVhZCk7CisgICAgICAg
IGxleCgpOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBzcGVjaWZpZXIpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlRXhwb3J0QmF0Y2hTcGVjaWZpZXIoKSB7CisgICAg
ICAgIHZhciBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKKyAgICAgICAgZXhwZWN0KCcqJyk7Cisg
ICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUV4cG9ydEJh
dGNoU3BlY2lmaWVyKCkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlRXhwb3J0U3BlY2lm
aWVyKCkgeworICAgICAgICB2YXIgaWQsIG5hbWUgPSBudWxsLCBtYXJrZXIgPSBtYXJrZXJDcmVh
dGUoKSwgZnJvbTsKKyAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZGVmYXVsdCcpKSB7CisgICAg
ICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgIGlkID0gbWFya2VyQXBwbHkobWFya2VyLCBkZWxl
Z2F0ZS5jcmVhdGVJZGVudGlmaWVyKCdkZWZhdWx0JykpOworICAgICAgICAgICAgLy8gZXhwb3J0
IHtkZWZhdWx0fSBmcm9tICJzb21ldGhpbmciOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOworICAgICAgICB9CisgICAgICAgIGlm
IChtYXRjaENvbnRleHR1YWxLZXl3b3JkKCdhcycpKSB7CisgICAgICAgICAgICBsZXgoKTsKKyAg
ICAgICAgICAgIG5hbWUgPSBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHkoKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUV4cG9y
dFNwZWNpZmllcihpZCwgbmFtZSkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlRXhwb3J0
RGVjbGFyYXRpb24oKSB7CisgICAgICAgIHZhciBiYWNrdHJhY2tUb2tlbiwgaWQsIGRlY2xhcmF0
aW9uID0gbnVsbCwKKyAgICAgICAgICAgIGlzRXhwb3J0RnJvbUlkZW50aWZpZXIsCisgICAgICAg
ICAgICBzcmMgPSBudWxsLCBzcGVjaWZpZXJzID0gW10sCisgICAgICAgICAgICBtYXJrZXIgPSBt
YXJrZXJDcmVhdGUoKTsKKworICAgICAgICBmdW5jdGlvbiByZXdpbmQodG9rZW4pIHsKKyAgICAg
ICAgICAgIGluZGV4ID0gdG9rZW4ucmFuZ2VbMF07CisgICAgICAgICAgICBsaW5lTnVtYmVyID0g
dG9rZW4ubGluZU51bWJlcjsKKyAgICAgICAgICAgIGxpbmVTdGFydCA9IHRva2VuLmxpbmVTdGFy
dDsKKyAgICAgICAgICAgIGxvb2thaGVhZCA9IHRva2VuOworICAgICAgICB9CisKKyAgICAgICAg
ZXhwZWN0S2V5d29yZCgnZXhwb3J0Jyk7CisKKyAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZGVm
YXVsdCcpKSB7CisgICAgICAgICAgICAvLyBjb3ZlcnM6CisgICAgICAgICAgICAvLyBleHBvcnQg
ZGVmYXVsdCAuLi4KKyAgICAgICAgICAgIGxleCgpOworICAgICAgICAgICAgaWYgKG1hdGNoS2V5
d29yZCgnZnVuY3Rpb24nKSB8fCBtYXRjaEtleXdvcmQoJ2NsYXNzJykpIHsKKyAgICAgICAgICAg
ICAgICBiYWNrdHJhY2tUb2tlbiA9IGxvb2thaGVhZDsKKyAgICAgICAgICAgICAgICBsZXgoKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXNJZGVudGlmaWVyTmFtZShsb29rYWhlYWQpKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIGNvdmVyczoKKyAgICAgICAgICAgICAgICAgICAgLy8gZXhwb3J0
IGRlZmF1bHQgZnVuY3Rpb24gZm9vICgpIHt9CisgICAgICAgICAgICAgICAgICAgIC8vIGV4cG9y
dCBkZWZhdWx0IGNsYXNzIGZvbyB7fQorICAgICAgICAgICAgICAgICAgICBpZCA9IHBhcnNlTm9u
Q29tcHV0ZWRQcm9wZXJ0eSgpOworICAgICAgICAgICAgICAgICAgICByZXdpbmQoYmFja3RyYWNr
VG9rZW4pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBk
ZWxlZ2F0ZS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQo
KSwgW2lkXSwgbnVsbCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBj
b3ZlcnM6CisgICAgICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge30K
KyAgICAgICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBjbGFzcyB7fQorICAgICAgICAgICAg
ICAgIHJld2luZChiYWNrdHJhY2tUb2tlbik7CisgICAgICAgICAgICAgICAgc3dpdGNoIChsb29r
YWhlYWQudmFsdWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdjbGFzcyc6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUV4cG9y
dERlY2xhcmF0aW9uKHRydWUsIHBhcnNlQ2xhc3NFeHByZXNzaW9uKCksIFtdLCBudWxsKSk7Cisg
ICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih0
cnVlLCBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbigpLCBbXSwgbnVsbCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1hdGNoQ29udGV4dHVhbEtl
eXdvcmQoJ2Zyb20nKSkgeworICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2Vz
LlVuZXhwZWN0ZWRUb2tlbiwgbG9va2FoZWFkLnZhbHVlKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gY292ZXJzOgorICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQge307Cisg
ICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBbXTsKKyAgICAgICAgICAgIGlmIChtYXRjaCgn
eycpKSB7CisgICAgICAgICAgICAgICAgZGVjbGFyYXRpb24gPSBwYXJzZU9iamVjdEluaXRpYWxp
c2VyKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCdbJykpIHsKKyAgICAgICAgICAg
ICAgICBkZWNsYXJhdGlvbiA9IHBhcnNlQXJyYXlJbml0aWFsaXNlcigpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbiA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN1bWVTZW1pY29sb24o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0
ZUV4cG9ydERlY2xhcmF0aW9uKHRydWUsIGRlY2xhcmF0aW9uLCBbXSwgbnVsbCkpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gbm9uLWRlZmF1bHQgZXhwb3J0CisgICAgICAgIGlmIChsb29rYWhl
YWQudHlwZSA9PT0gVG9rZW4uS2V5d29yZCkgeworICAgICAgICAgICAgLy8gY292ZXJzOgorICAg
ICAgICAgICAgLy8gZXhwb3J0IHZhciBmID0gMTsKKyAgICAgICAgICAgIHN3aXRjaCAobG9va2Fo
ZWFkLnZhbHVlKSB7CisgICAgICAgICAgICBjYXNlICdsZXQnOgorICAgICAgICAgICAgY2FzZSAn
Y29uc3QnOgorICAgICAgICAgICAgY2FzZSAndmFyJzoKKyAgICAgICAgICAgIGNhc2UgJ2NsYXNz
JzoKKyAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbihmYWxz
ZSwgcGFyc2VTb3VyY2VFbGVtZW50KCksIHNwZWNpZmllcnMsIG51bGwpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXRjaCgnKicpKSB7CisgICAgICAgICAgICAv
LyBjb3ZlcnM6CisgICAgICAgICAgICAvLyBleHBvcnQgKiBmcm9tICJmb28iOworICAgICAgICAg
ICAgc3BlY2lmaWVycy5wdXNoKHBhcnNlRXhwb3J0QmF0Y2hTcGVjaWZpZXIoKSk7CisKKyAgICAg
ICAgICAgIGlmICghbWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnZnJvbScpKSB7CisgICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcih7fSwgbG9va2FoZWFkLnZhbHVlID8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiA6IE1lc3NhZ2VzLk1pc3NpbmdGcm9tQ2xh
dXNlLCBsb29rYWhlYWQudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGV4KCk7
CisgICAgICAgICAgICBzcmMgPSBwYXJzZU1vZHVsZVNwZWNpZmllcigpOworICAgICAgICAgICAg
Y29uc3VtZVNlbWljb2xvbigpOworCisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFy
a2VyLCBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbihmYWxzZSwgbnVsbCwgc3BlY2lm
aWVycywgc3JjKSk7CisgICAgICAgIH0KKworICAgICAgICBleHBlY3QoJ3snKTsKKyAgICAgICAg
aWYgKCFtYXRjaCgnfScpKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaXNF
eHBvcnRGcm9tSWRlbnRpZmllciA9IGlzRXhwb3J0RnJvbUlkZW50aWZpZXIgfHwgbWF0Y2hLZXl3
b3JkKCdkZWZhdWx0Jyk7CisgICAgICAgICAgICAgICAgc3BlY2lmaWVycy5wdXNoKHBhcnNlRXhw
b3J0U3BlY2lmaWVyKCkpOworICAgICAgICAgICAgfSB3aGlsZSAobWF0Y2goJywnKSAmJiBsZXgo
KSk7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0KCd9Jyk7CisKKyAgICAgICAgaWYgKG1hdGNo
Q29udGV4dHVhbEtleXdvcmQoJ2Zyb20nKSkgeworICAgICAgICAgICAgLy8gY292ZXJpbmc6Cisg
ICAgICAgICAgICAvLyBleHBvcnQge2RlZmF1bHR9IGZyb20gImZvbyI7CisgICAgICAgICAgICAv
LyBleHBvcnQge2Zvb30gZnJvbSAiZm9vIjsKKyAgICAgICAgICAgIGxleCgpOworICAgICAgICAg
ICAgc3JjID0gcGFyc2VNb2R1bGVTcGVjaWZpZXIoKTsKKyAgICAgICAgICAgIGNvbnN1bWVTZW1p
Y29sb24oKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0V4cG9ydEZyb21JZGVudGlmaWVyKSB7Cisg
ICAgICAgICAgICAvLyBjb3ZlcmluZzoKKyAgICAgICAgICAgIC8vIGV4cG9ydCB7ZGVmYXVsdH07
IC8vIG1pc3NpbmcgZnJvbUNsYXVzZQorICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgbG9va2Fo
ZWFkLnZhbHVlID8KKyAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXMuVW5leHBlY3RlZFRva2Vu
IDogTWVzc2FnZXMuTWlzc2luZ0Zyb21DbGF1c2UsIGxvb2thaGVhZC52YWx1ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBjb3ZlcgorICAgICAgICAgICAgLy8gZXhwb3J0IHtm
b299OworICAgICAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUV4cG9ydERlY2xhcmF0
aW9uKGZhbHNlLCBkZWNsYXJhdGlvbiwgc3BlY2lmaWVycywgc3JjKSk7CisgICAgfQorCisKKyAg
ICBmdW5jdGlvbiBwYXJzZUltcG9ydFNwZWNpZmllcigpIHsKKyAgICAgICAgLy8gaW1wb3J0IHs8
Zm9vIGFzIGJhcj59IC4uLjsKKyAgICAgICAgdmFyIGlkLCBuYW1lID0gbnVsbCwgbWFya2VyID0g
bWFya2VyQ3JlYXRlKCk7CisKKyAgICAgICAgaWQgPSBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHko
KTsKKyAgICAgICAgaWYgKG1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2FzJykpIHsKKyAgICAgICAg
ICAgIGxleCgpOworICAgICAgICAgICAgbmFtZSA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0
ZS5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoaWQsIG5hbWUpKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBwYXJzZU5hbWVkSW1wb3J0cygpIHsKKyAgICAgICAgdmFyIHNwZWNpZmllcnMgPSBbXTsKKyAg
ICAgICAgLy8ge2ZvbywgYmFyIGFzIGJhc30KKyAgICAgICAgZXhwZWN0KCd7Jyk7CisgICAgICAg
IGlmICghbWF0Y2goJ30nKSkgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHNw
ZWNpZmllcnMucHVzaChwYXJzZUltcG9ydFNwZWNpZmllcigpKTsKKyAgICAgICAgICAgIH0gd2hp
bGUgKG1hdGNoKCcsJykgJiYgbGV4KCkpOworICAgICAgICB9CisgICAgICAgIGV4cGVjdCgnfScp
OworICAgICAgICByZXR1cm4gc3BlY2lmaWVyczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJz
ZUltcG9ydERlZmF1bHRTcGVjaWZpZXIoKSB7CisgICAgICAgIC8vIGltcG9ydCA8Zm9vPiAuLi47
CisgICAgICAgIHZhciBpZCwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisKKyAgICAgICAgaWQg
PSBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHkoKTsKKworICAgICAgICByZXR1cm4gbWFya2VyQXBw
bHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVJbXBvcnREZWZhdWx0U3BlY2lmaWVyKGlkKSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXIoKSB7Cisg
ICAgICAgIC8vIGltcG9ydCA8KiBhcyBmb28+IC4uLjsKKyAgICAgICAgdmFyIGlkLCBtYXJrZXIg
PSBtYXJrZXJDcmVhdGUoKTsKKworICAgICAgICBleHBlY3QoJyonKTsKKyAgICAgICAgaWYgKCFt
YXRjaENvbnRleHR1YWxLZXl3b3JkKCdhcycpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKHt9
LCBNZXNzYWdlcy5Ob0FzQWZ0ZXJJbXBvcnROYW1lc3BhY2UpOworICAgICAgICB9CisgICAgICAg
IGxleCgpOworICAgICAgICBpZCA9IHBhcnNlTm9uQ29tcHV0ZWRQcm9wZXJ0eSgpOworCisgICAg
ICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUltcG9ydE5hbWVz
cGFjZVNwZWNpZmllcihpZCkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlSW1wb3J0RGVj
bGFyYXRpb24oKSB7CisgICAgICAgIHZhciBzcGVjaWZpZXJzLCBzcmMsIG1hcmtlciA9IG1hcmtl
ckNyZWF0ZSgpOworCisgICAgICAgIGV4cGVjdEtleXdvcmQoJ2ltcG9ydCcpOworICAgICAgICBz
cGVjaWZpZXJzID0gW107CisKKyAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5T
dHJpbmdMaXRlcmFsKSB7CisgICAgICAgICAgICAvLyBjb3ZlcnM6CisgICAgICAgICAgICAvLyBp
bXBvcnQgImZvbyI7CisgICAgICAgICAgICBzcmMgPSBwYXJzZU1vZHVsZVNwZWNpZmllcigpOwor
ICAgICAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOworICAgICAgICAgICAgcmV0dXJuIG1hcmtl
ckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oc3BlY2lmaWVy
cywgc3JjKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1hdGNoS2V5d29yZCgnZGVmYXVs
dCcpICYmIGlzSWRlbnRpZmllck5hbWUobG9va2FoZWFkKSkgeworICAgICAgICAgICAgLy8gY292
ZXJzOgorICAgICAgICAgICAgLy8gaW1wb3J0IGZvbworICAgICAgICAgICAgLy8gaW1wb3J0IGZv
bywgLi4uCisgICAgICAgICAgICBzcGVjaWZpZXJzLnB1c2gocGFyc2VJbXBvcnREZWZhdWx0U3Bl
Y2lmaWVyKCkpOworICAgICAgICAgICAgaWYgKG1hdGNoKCcsJykpIHsKKyAgICAgICAgICAgICAg
ICBsZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobWF0Y2goJyon
KSkgeworICAgICAgICAgICAgLy8gY292ZXJzOgorICAgICAgICAgICAgLy8gaW1wb3J0IGZvbywg
KiBhcyBmb28KKyAgICAgICAgICAgIC8vIGltcG9ydCAqIGFzIGZvbworICAgICAgICAgICAgc3Bl
Y2lmaWVycy5wdXNoKHBhcnNlSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyKCkpOworICAgICAgICB9
IGVsc2UgaWYgKG1hdGNoKCd7JykpIHsKKyAgICAgICAgICAgIC8vIGNvdmVyczoKKyAgICAgICAg
ICAgIC8vIGltcG9ydCBmb28sIHtiYXJ9CisgICAgICAgICAgICAvLyBpbXBvcnQge2Jhcn0KKyAg
ICAgICAgICAgIHNwZWNpZmllcnMgPSBzcGVjaWZpZXJzLmNvbmNhdChwYXJzZU5hbWVkSW1wb3J0
cygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbWF0Y2hDb250ZXh0dWFsS2V5d29yZCgn
ZnJvbScpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBsb29rYWhlYWQudmFsdWUgPwor
ICAgICAgICAgICAgICAgICAgICBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4gOiBNZXNzYWdlcy5N
aXNzaW5nRnJvbUNsYXVzZSwgbG9va2FoZWFkLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBs
ZXgoKTsKKyAgICAgICAgc3JjID0gcGFyc2VNb2R1bGVTcGVjaWZpZXIoKTsKKyAgICAgICAgY29u
c3VtZVNlbWljb2xvbigpOworCisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRl
bGVnYXRlLmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKHNwZWNpZmllcnMsIHNyYykpOwogICAgIH0K
IAogICAgIC8vIDEyLjMgRW1wdHkgU3RhdGVtZW50CiAKICAgICBmdW5jdGlvbiBwYXJzZUVtcHR5
U3RhdGVtZW50KCkgeworICAgICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAgICAg
ICAgIGV4cGVjdCgnOycpOwotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRW1wdHlTdGF0
ZW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3Jl
YXRlRW1wdHlTdGF0ZW1lbnQoKSk7CiAgICAgfQogCiAgICAgLy8gMTIuNCBFeHByZXNzaW9uIFN0
YXRlbWVudAogCiAgICAgZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KCkgewotICAg
ICAgICB2YXIgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpOworICAgICAgICB2YXIgbWFya2VyID0g
bWFya2VyQ3JlYXRlKCksIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTsKICAgICAgICAgY29uc3Vt
ZVNlbWljb2xvbigpOwotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0
YXRlbWVudChleHByKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdh
dGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKSk7CiAgICAgfQogCiAgICAgLy8gMTIu
NSBJZiBzdGF0ZW1lbnQKIAogICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKSB7Ci0gICAg
ICAgIHZhciB0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGU7CisgICAgICAgIHZhciB0ZXN0LCBj
b25zZXF1ZW50LCBhbHRlcm5hdGUsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAg
IGV4cGVjdEtleXdvcmQoJ2lmJyk7CiAKQEAgLTI3NTIsMTMgKzM5MjAsMTMgQEAgcGFyc2VTdGF0
ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgYWx0ZXJuYXRlID0g
bnVsbDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVJZlN0YXRl
bWVudCh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpOworICAgICAgICByZXR1cm4gbWFya2Vy
QXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVJZlN0YXRlbWVudCh0ZXN0LCBjb25zZXF1ZW50
LCBhbHRlcm5hdGUpKTsKICAgICB9CiAKICAgICAvLyAxMi42IEl0ZXJhdGlvbiBTdGF0ZW1lbnRz
CiAKICAgICBmdW5jdGlvbiBwYXJzZURvV2hpbGVTdGF0ZW1lbnQoKSB7Ci0gICAgICAgIHZhciBi
b2R5LCB0ZXN0LCBvbGRJbkl0ZXJhdGlvbjsKKyAgICAgICAgdmFyIGJvZHksIHRlc3QsIG9sZElu
SXRlcmF0aW9uLCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3
b3JkKCdkbycpOwogCkBAIC0yNzgxLDExICszOTQ5LDExIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVl
LCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIGxleCgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoYm9keSwgdGVzdCk7
CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZURvV2hp
bGVTdGF0ZW1lbnQoYm9keSwgdGVzdCkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlV2hp
bGVTdGF0ZW1lbnQoKSB7Ci0gICAgICAgIHZhciB0ZXN0LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjsK
KyAgICAgICAgdmFyIHRlc3QsIGJvZHksIG9sZEluSXRlcmF0aW9uLCBtYXJrZXIgPSBtYXJrZXJD
cmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCd3aGlsZScpOwogCkBAIC0yODAyLDU0
ICszOTcwLDY1IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKIAog
ICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uOwogCi0gICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5jcmVhdGVXaGlsZVN0YXRlbWVudCh0ZXN0LCBib2R5KTsKKyAgICAgICAg
cmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlV2hpbGVTdGF0ZW1lbnQo
dGVzdCwgYm9keSkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRm9yVmFyaWFibGVEZWNs
YXJhdGlvbigpIHsKLSAgICAgICAgdmFyIHRva2VuLCBkZWNsYXJhdGlvbnMsIHN0YXJ0VG9rZW47
Ci0KLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKLSAgICAgICAgdG9rZW4gPSBsZXgo
KTsKLSAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCgp
OworICAgICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRlKCksCisgICAgICAgICAgICB0b2tl
biA9IGxleCgpLAorICAgICAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xh
cmF0aW9uTGlzdCgpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRl
LmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCB0b2tlbi52YWx1ZSksIHN0
YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0aW9ucywgdG9rZW4udmFsdWUpKTsKICAg
ICB9CiAKLSAgICBmdW5jdGlvbiBwYXJzZUZvclN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFyIGlu
aXQsIHRlc3QsIHVwZGF0ZSwgbGVmdCwgcmlnaHQsIGJvZHksIG9sZEluSXRlcmF0aW9uOwotCisg
ICAgZnVuY3Rpb24gcGFyc2VGb3JTdGF0ZW1lbnQob3B0cykgeworICAgICAgICB2YXIgaW5pdCwg
dGVzdCwgdXBkYXRlLCBsZWZ0LCByaWdodCwgYm9keSwgb3BlcmF0b3IsIG9sZEluSXRlcmF0aW9u
LAorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAgICAgICAgIGluaXQgPSB0
ZXN0ID0gdXBkYXRlID0gbnVsbDsKLQogICAgICAgICBleHBlY3RLZXl3b3JkKCdmb3InKTsKIAor
ICAgICAgICAvLyBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1wcm9wb3Nh
bHM6aXRlcmF0b3JzX2FuZF9nZW5lcmF0b3JzJnM9ZWFjaAorICAgICAgICBpZiAobWF0Y2hDb250
ZXh0dWFsS2V5d29yZCgnZWFjaCcpKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNz
YWdlcy5FYWNoTm90QWxsb3dlZCk7CisgICAgICAgIH0KKwogICAgICAgICBleHBlY3QoJygnKTsK
IAogICAgICAgICBpZiAobWF0Y2goJzsnKSkgewogICAgICAgICAgICAgbGV4KCk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCd2YXInKSB8fCBtYXRjaEtl
eXdvcmQoJ2xldCcpKSB7CisgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCd2YXInKSB8fCBt
YXRjaEtleXdvcmQoJ2xldCcpIHx8IG1hdGNoS2V5d29yZCgnY29uc3QnKSkgewogICAgICAgICAg
ICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpbml0ID0gcGFy
c2VGb3JWYXJpYWJsZURlY2xhcmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJ
biA9IHRydWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoaW5pdC5kZWNsYXJhdGlvbnMubGVuZ3Ro
ID09PSAxICYmIG1hdGNoS2V5d29yZCgnaW4nKSkgewotICAgICAgICAgICAgICAgICAgICBsZXgo
KTsKLSAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7Ci0gICAgICAgICAgICAgICAgICAg
IHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIGluaXQgPSBu
dWxsOworICAgICAgICAgICAgICAgIGlmIChpbml0LmRlY2xhcmF0aW9ucy5sZW5ndGggPT09IDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnaW4nKSB8fCBtYXRjaENv
bnRleHR1YWxLZXl3b3JkKCdvZicpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRv
ciA9IGxvb2thaGVhZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKChvcGVyYXRvci52
YWx1ZSA9PT0gJ2luJyB8fCBpbml0LmtpbmQgIT09ICd2YXInKSAmJiBpbml0LmRlY2xhcmF0aW9u
c1swXS5pbml0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpbml0OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5pdCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpbml0
ID0gcGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRy
dWU7CiAKLSAgICAgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdpbicpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKG1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ29mJykpIHsKKyAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0b3IgPSBsZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGlu
aXQ7CisgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7CisgICAg
ICAgICAgICAgICAgICAgIGluaXQgPSBudWxsOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bWF0Y2hLZXl3b3JkKCdpbicpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIExlZnRIYW5kU2lk
ZUV4cHJlc3Npb24KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShpbml0
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNz
YWdlcy5JbnZhbGlkTEhTSW5Gb3JJbik7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNBc3Np
Z25hYmxlTGVmdEhhbmRTaWRlKGluaXQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JJbik7CiAgICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgICAgICAgICAg
b3BlcmF0b3IgPSBsZXgoKTsKICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7CiAgICAg
ICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGluaXQgPSBudWxsOwpAQCAtMjg3OCwzMSArNDA1NywzOCBAQCBwYXJzZVN0YXRlbWVu
dDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3Rh
dGUuaW5JdGVyYXRpb247CiAgICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gdHJ1ZTsKIAotICAg
ICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgaWYgKCEob3B0cyAhPT0gdW5k
ZWZpbmVkICYmIG9wdHMuaWdub3JlQm9keSkpIHsKKyAgICAgICAgICAgIGJvZHkgPSBwYXJzZVN0
YXRlbWVudCgpOworICAgICAgICB9CiAKICAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBvbGRJ
bkl0ZXJhdGlvbjsKIAotICAgICAgICByZXR1cm4gKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVk
JykgPwotICAgICAgICAgICAgICAgIGRlbGVnYXRlLmNyZWF0ZUZvclN0YXRlbWVudChpbml0LCB0
ZXN0LCB1cGRhdGUsIGJvZHkpIDoKLSAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5jcmVhdGVGb3JJ
blN0YXRlbWVudChsZWZ0LCByaWdodCwgYm9keSk7CisgICAgICAgIGlmICh0eXBlb2YgbGVmdCA9
PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIs
IGRlbGVnYXRlLmNyZWF0ZUZvclN0YXRlbWVudChpbml0LCB0ZXN0LCB1cGRhdGUsIGJvZHkpKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChvcGVyYXRvci52YWx1ZSA9PT0gJ2luJykgeworICAg
ICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlRm9ySW5T
dGF0ZW1lbnQobGVmdCwgcmlnaHQsIGJvZHkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVGb3JPZlN0YXRlbWVudChsZWZ0LCBy
aWdodCwgYm9keSkpOwogICAgIH0KIAogICAgIC8vIDEyLjcgVGhlIGNvbnRpbnVlIHN0YXRlbWVu
dAogCiAgICAgZnVuY3Rpb24gcGFyc2VDb250aW51ZVN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFy
IGxhYmVsID0gbnVsbCwga2V5OworICAgICAgICB2YXIgbGFiZWwgPSBudWxsLCBtYXJrZXIgPSBt
YXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCdjb250aW51ZScpOwogCiAg
ICAgICAgIC8vIE9wdGltaXplIHRoZSBtb3N0IGNvbW1vbiBmb3JtOiAnY29udGludWU7Jy4KLSAg
ICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQikgeworICAgICAgICBp
ZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSA1OSkgewogICAgICAgICAgICAgbGV4KCk7
CiAKICAgICAgICAgICAgIGlmICghc3RhdGUuaW5JdGVyYXRpb24pIHsKICAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGludWUpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQo
bnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVDb250aW51ZVN0YXRlbWVudChudWxsKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
cGVla0xpbmVUZXJtaW5hdG9yKCkpIHsKQEAgLTI5MTAsMTQgKzQwOTYsMTMgQEAgcGFyc2VTdGF0
ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgIHRocm93RXJy
b3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxDb250aW51ZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0YXRlbWVudChudWxsKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUNvbnRp
bnVlU3RhdGVtZW50KG51bGwpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsb29rYWhlYWQu
dHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikgewogICAgICAgICAgICAgbGFiZWwgPSBwYXJzZVZh
cmlhYmxlSWRlbnRpZmllcigpOwogCi0gICAgICAgICAgICBrZXkgPSAnJCcgKyBsYWJlbC5uYW1l
OwotICAgICAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
c3RhdGUubGFiZWxTZXQsIGtleSkpIHsKKyAgICAgICAgICAgIGlmICghc3RhdGUubGFiZWxTZXQu
aGFzKGxhYmVsLm5hbWUpKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2Fn
ZXMuVW5rbm93bkxhYmVsLCBsYWJlbC5uYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMjkyOCwyNSArNDExMywyNSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VF
bGVtZW50CiAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGlu
dWUpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVl
U3RhdGVtZW50KGxhYmVsKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVs
ZWdhdGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobGFiZWwpKTsKICAgICB9CiAKICAgICAvLyAx
Mi44IFRoZSBicmVhayBzdGF0ZW1lbnQKIAogICAgIGZ1bmN0aW9uIHBhcnNlQnJlYWtTdGF0ZW1l
bnQoKSB7Ci0gICAgICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTsKKyAgICAgICAgdmFyIGxhYmVs
ID0gbnVsbCwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAgZXhwZWN0S2V5d29y
ZCgnYnJlYWsnKTsKIAotICAgICAgICAvLyBDYXRjaCB0aGUgdmVyeSBjb21tb24gY2FzZSBmaXJz
dDogaW1tZWRpYXRlbHkgYSBzZW1pY29sb24gKFUrMDAzQikuCi0gICAgICAgIGlmIChzb3VyY2Uu
Y2hhckNvZGVBdChpbmRleCkgPT09IDB4M0IpIHsKKyAgICAgICAgLy8gQ2F0Y2ggdGhlIHZlcnkg
Y29tbW9uIGNhc2UgZmlyc3Q6IGltbWVkaWF0ZWx5IGEgc2VtaWNvbG9uIChjaGFyICM1OSkuCisg
ICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDU5KSB7CiAgICAgICAgICAg
ICBsZXgoKTsKIAogICAgICAgICAgICAgaWYgKCEoc3RhdGUuaW5JdGVyYXRpb24gfHwgc3RhdGUu
aW5Td2l0Y2gpKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxs
ZWdhbEJyZWFrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRl
LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG51bGwpOworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFw
cGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobnVsbCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7CkBAIC0yOTU0LDE0ICs0
MTM5LDEzIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAg
ICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQnJlYWspOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1l
bnQobnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0
ZS5jcmVhdGVCcmVha1N0YXRlbWVudChudWxsKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bG9va2FoZWFkLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGxhYmVs
ID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKIAotICAgICAgICAgICAga2V5ID0gJyQnICsg
bGFiZWwubmFtZTsKLSAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7CisgICAgICAgICAgICBpZiAoIXN0YXRl
LmxhYmVsU2V0LmhhcyhsYWJlbC5uYW1lKSkgewogICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
e30sIE1lc3NhZ2VzLlVua25vd25MYWJlbCwgbGFiZWwubmFtZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTI5NzIsMTMgKzQxNTYsMTMgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBh
cnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxs
ZWdhbEJyZWFrKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVC
cmVha1N0YXRlbWVudChsYWJlbCk7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIs
IGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxhYmVsKSk7CiAgICAgfQogCiAgICAgLy8g
MTIuOSBUaGUgcmV0dXJuIHN0YXRlbWVudAogCiAgICAgZnVuY3Rpb24gcGFyc2VSZXR1cm5TdGF0
ZW1lbnQoKSB7Ci0gICAgICAgIHZhciBhcmd1bWVudCA9IG51bGw7CisgICAgICAgIHZhciBhcmd1
bWVudCA9IG51bGwsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAgIGV4cGVjdEtl
eXdvcmQoJ3JldHVybicpOwogCkBAIC0yOTg3LDE2ICs0MTcxLDE2IEBAIHBhcnNlU3RhdGVtZW50
OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgfQogCiAgICAgICAgIC8vICdyZXR1
cm4nIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYW5kIGFuIGlkZW50aWZpZXIgaXMgdmVyeSBjb21tb24u
Ci0gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4MjApIHsKKyAgICAg
ICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMzIpIHsKICAgICAgICAgICAgIGlm
IChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpKSkgewogICAg
ICAgICAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgICAgICAg
ICAgY29uc3VtZVNlbWljb2xvbigpOwotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5j
cmVhdGVSZXR1cm5TdGF0ZW1lbnQoYXJndW1lbnQpOworICAgICAgICAgICAgICAgIHJldHVybiBt
YXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChhcmd1bWVu
dCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHBlZWtMaW5lVGVy
bWluYXRvcigpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3Rh
dGVtZW50KG51bGwpOworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVs
ZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG51bGwpKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghbWF0Y2goJzsnKSkgewpAQCAtMzAwNywxNyArNDE5MSwxNSBAQCBwYXJzZVN0YXRlbWVu
dDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgY29uc3VtZVNlbWljb2xvbigp
OwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoYXJndW1l
bnQpOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVS
ZXR1cm5TdGF0ZW1lbnQoYXJndW1lbnQpKTsKICAgICB9CiAKICAgICAvLyAxMi4xMCBUaGUgd2l0
aCBzdGF0ZW1lbnQKIAogICAgIGZ1bmN0aW9uIHBhcnNlV2l0aFN0YXRlbWVudCgpIHsKLSAgICAg
ICAgdmFyIG9iamVjdCwgYm9keTsKKyAgICAgICAgdmFyIG9iamVjdCwgYm9keSwgbWFya2VyID0g
bWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAgaWYgKHN0cmljdCkgewotICAgICAgICAgICAgLy8g
VE9ETyhpa2FyaWVuYXRvcik6IFNob3VsZCB3ZSB1cGRhdGUgdGhlIHRlc3QgY2FzZXMgaW5zdGVh
ZD8KLSAgICAgICAgICAgIHNraXBDb21tZW50KCk7CiAgICAgICAgICAgICB0aHJvd0Vycm9yVG9s
ZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdE1vZGVXaXRoKTsKICAgICAgICAgfQogCkBAIC0zMDMx
LDE1ICs0MjEzLDE3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQK
IAogICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKIAotICAgICAgICByZXR1cm4gZGVs
ZWdhdGUuY3JlYXRlV2l0aFN0YXRlbWVudChvYmplY3QsIGJvZHkpOworICAgICAgICByZXR1cm4g
bWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVXaXRoU3RhdGVtZW50KG9iamVjdCwg
Ym9keSkpOwogICAgIH0KIAogICAgIC8vIDEyLjEwIFRoZSBzd2l0aCBzdGF0ZW1lbnQKIAogICAg
IGZ1bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpIHsKLSAgICAgICAgdmFyIHRlc3QsIGNvbnNlcXVl
bnQgPSBbXSwgc3RhdGVtZW50LCBzdGFydFRva2VuOworICAgICAgICB2YXIgdGVzdCwKKyAgICAg
ICAgICAgIGNvbnNlcXVlbnQgPSBbXSwKKyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQsCisgICAg
ICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAotICAgICAgICBzdGFydFRva2VuID0g
bG9va2FoZWFkOwogICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdkZWZhdWx0JykpIHsKICAgICAg
ICAgICAgIGxleCgpOwogICAgICAgICAgICAgdGVzdCA9IG51bGw7CkBAIC0zMDUzLDE1ICs0MjM3
LDE4IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAg
ICAgIGlmIChtYXRjaCgnfScpIHx8IG1hdGNoS2V5d29yZCgnZGVmYXVsdCcpIHx8IG1hdGNoS2V5
d29yZCgnY2FzZScpKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudCgpOwotICAgICAgICAgICAgY29u
c2VxdWVudC5wdXNoKHN0YXRlbWVudCk7CisgICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFy
c2VTb3VyY2VFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZUVsZW1lbnQg
PT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjb25zZXF1ZW50LnB1c2goc291cmNlRWxlbWVudCk7CiAgICAgICAgIH0K
IAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hD
YXNlKHRlc3QsIGNvbnNlcXVlbnQpLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG1hcmtl
ckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlU3dpdGNoQ2FzZSh0ZXN0LCBjb25zZXF1ZW50
KSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKSB7Ci0gICAg
ICAgIHZhciBkaXNjcmltaW5hbnQsIGNhc2VzLCBjbGF1c2UsIG9sZEluU3dpdGNoLCBkZWZhdWx0
Rm91bmQ7CisgICAgICAgIHZhciBkaXNjcmltaW5hbnQsIGNhc2VzLCBjbGF1c2UsIG9sZEluU3dp
dGNoLCBkZWZhdWx0Rm91bmQsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAgIGV4
cGVjdEtleXdvcmQoJ3N3aXRjaCcpOwogCkBAIC0zMDc3LDcgKzQyNjQsNyBAQCBwYXJzZVN0YXRl
bWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgaWYgKG1hdGNoKCd9Jykp
IHsKICAgICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0
ZVN3aXRjaFN0YXRlbWVudChkaXNjcmltaW5hbnQsIGNhc2VzKTsKKyAgICAgICAgICAgIHJldHVy
biBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0YXRlbWVudChkaXNj
cmltaW5hbnQsIGNhc2VzKSk7CiAgICAgICAgIH0KIAogICAgICAgICBvbGRJblN3aXRjaCA9IHN0
YXRlLmluU3dpdGNoOwpAQCAtMzEwMiwxMyArNDI4OSwxMyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1
ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgZXhwZWN0KCd9Jyk7CiAKLSAgICAgICAg
cmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0YXRlbWVudChkaXNjcmltaW5hbnQsIGNhc2Vz
KTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlU3dp
dGNoU3RhdGVtZW50KGRpc2NyaW1pbmFudCwgY2FzZXMpKTsKICAgICB9CiAKICAgICAvLyAxMi4x
MyBUaGUgdGhyb3cgc3RhdGVtZW50CiAKICAgICBmdW5jdGlvbiBwYXJzZVRocm93U3RhdGVtZW50
KCkgewotICAgICAgICB2YXIgYXJndW1lbnQ7CisgICAgICAgIHZhciBhcmd1bWVudCwgbWFya2Vy
ID0gbWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAgZXhwZWN0S2V5d29yZCgndGhyb3cnKTsKIApA
QCAtMzEyMCwxNSArNDMwNywxNCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VF
bGVtZW50CiAKICAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwogCi0gICAgICAgIHJldHVybiBk
ZWxlZ2F0ZS5jcmVhdGVUaHJvd1N0YXRlbWVudChhcmd1bWVudCk7CisgICAgICAgIHJldHVybiBt
YXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVRocm93U3RhdGVtZW50KGFyZ3VtZW50
KSk7CiAgICAgfQogCiAgICAgLy8gMTIuMTQgVGhlIHRyeSBzdGF0ZW1lbnQKIAogICAgIGZ1bmN0
aW9uIHBhcnNlQ2F0Y2hDbGF1c2UoKSB7Ci0gICAgICAgIHZhciBwYXJhbSwgYm9keSwgc3RhcnRU
b2tlbjsKKyAgICAgICAgdmFyIHBhcmFtLCBib2R5LCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsK
IAotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwogICAgICAgICBleHBlY3RLZXl3b3Jk
KCdjYXRjaCcpOwogCiAgICAgICAgIGV4cGVjdCgnKCcpOwpAQCAtMzEzNiwxOSArNDMyMiwxOSBA
QCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICB0
aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTsKICAgICAgICAgfQogCi0gICAgICAgIHBhcmFtID0g
cGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKKyAgICAgICAgcGFyYW0gPSBwYXJzZUV4cHJlc3Np
b24oKTsKICAgICAgICAgLy8gMTIuMTQuMQotICAgICAgICBpZiAoc3RyaWN0ICYmIGlzUmVzdHJp
Y3RlZFdvcmQocGFyYW0ubmFtZSkpIHsKKyAgICAgICAgaWYgKHN0cmljdCAmJiBwYXJhbS50eXBl
ID09PSBTeW50YXguSWRlbnRpZmllciAmJiBpc1Jlc3RyaWN0ZWRXb3JkKHBhcmFtLm5hbWUpKSB7
CiAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdENhdGNo
VmFyaWFibGUpOwogICAgICAgICB9CiAKICAgICAgICAgZXhwZWN0KCcpJyk7CiAgICAgICAgIGJv
ZHkgPSBwYXJzZUJsb2NrKCk7Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVn
YXRlLmNyZWF0ZUNhdGNoQ2xhdXNlKHBhcmFtLCBib2R5KSwgc3RhcnRUb2tlbik7CisgICAgICAg
IHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUNhdGNoQ2xhdXNlKHBh
cmFtLCBib2R5KSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VUcnlTdGF0ZW1lbnQoKSB7
Ci0gICAgICAgIHZhciBibG9jaywgaGFuZGxlcnMgPSBbXSwgZmluYWxpemVyID0gbnVsbDsKKyAg
ICAgICAgdmFyIGJsb2NrLCBoYW5kbGVycyA9IFtdLCBmaW5hbGl6ZXIgPSBudWxsLCBtYXJrZXIg
PSBtYXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCd0cnknKTsKIApAQCAt
MzE2Nyw0NCArNDM1Myw0MCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVt
ZW50CiAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Ob0NhdGNoT3JGaW5hbGx5
KTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVUcnlTdGF0ZW1l
bnQoYmxvY2ssIFtdLCBoYW5kbGVycywgZmluYWxpemVyKTsKKyAgICAgICAgcmV0dXJuIG1hcmtl
ckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVHJ5U3RhdGVtZW50KGJsb2NrLCBbXSwgaGFu
ZGxlcnMsIGZpbmFsaXplcikpOwogICAgIH0KIAogICAgIC8vIDEyLjE1IFRoZSBkZWJ1Z2dlciBz
dGF0ZW1lbnQKIAogICAgIGZ1bmN0aW9uIHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSB7CisgICAg
ICAgIHZhciBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKICAgICAgICAgZXhwZWN0S2V5d29yZCgn
ZGVidWdnZXInKTsKIAogICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7CiAKLSAgICAgICAgcmV0
dXJuIGRlbGVnYXRlLmNyZWF0ZURlYnVnZ2VyU3RhdGVtZW50KCk7CisgICAgICAgIHJldHVybiBt
YXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZURlYnVnZ2VyU3RhdGVtZW50KCkpOwog
ICAgIH0KIAogICAgIC8vIDEyIFN0YXRlbWVudHMKIAogICAgIGZ1bmN0aW9uIHBhcnNlU3RhdGVt
ZW50KCkgewogICAgICAgICB2YXIgdHlwZSA9IGxvb2thaGVhZC50eXBlLAorICAgICAgICAgICAg
bWFya2VyLAogICAgICAgICAgICAgZXhwciwKLSAgICAgICAgICAgIGxhYmVsZWRCb2R5LAotICAg
ICAgICAgICAga2V5LAotICAgICAgICAgICAgc3RhcnRUb2tlbjsKKyAgICAgICAgICAgIGxhYmVs
ZWRCb2R5OwogCiAgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5FT0YpIHsKICAgICAgICAgICAg
IHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHR5
cGUgPT09IFRva2VuLlB1bmN0dWF0b3IgJiYgbG9va2FoZWFkLnZhbHVlID09PSAneycpIHsKLSAg
ICAgICAgICAgIHJldHVybiBwYXJzZUJsb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGFy
dFRva2VuID0gbG9va2FoZWFkOwotCiAgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5QdW5jdHVh
dG9yKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkgewogICAgICAgICAg
ICAgY2FzZSAnOyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFy
c2VFbXB0eVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cGFyc2VFbXB0eVN0YXRlbWVudCgpOworICAgICAgICAgICAgY2FzZSAneyc6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKICAgICAgICAgICAgIGNhc2UgJygnOgotICAgICAg
ICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRXhwcmVzc2lvblN0YXRlbWVu
dCgpLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VFeHByZXNzaW9u
U3RhdGVtZW50KCk7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMzIxMyw2NyArNDM5NSw3NiBAQCBwYXJzZVN0YXRlbWVudDog
dHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5LZXl3
b3JkKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkgewogICAgICAgICAg
ICAgY2FzZSAnYnJlYWsnOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5k
KHBhcnNlQnJlYWtTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHBhcnNlQnJlYWtTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgIGNhc2UgJ2NvbnRpbnVlJzoK
LSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUNvbnRpbnVlU3Rh
dGVtZW50KCksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUNvbnRp
bnVlU3RhdGVtZW50KCk7CiAgICAgICAgICAgICBjYXNlICdkZWJ1Z2dlcic6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VEZWJ1Z2dlclN0YXRlbWVudCgpLCBz
dGFydFRva2VuKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VEZWJ1Z2dlclN0YXRlbWVu
dCgpOwogICAgICAgICAgICAgY2FzZSAnZG8nOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxl
Z2F0ZS5tYXJrRW5kKHBhcnNlRG9XaGlsZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VEb1doaWxlU3RhdGVtZW50KCk7CiAgICAgICAgICAgICBj
YXNlICdmb3InOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNl
Rm9yU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJz
ZUZvclN0YXRlbWVudCgpOwogICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOgotICAgICAgICAg
ICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigp
LCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xh
cmF0aW9uKCk7CisgICAgICAgICAgICBjYXNlICdjbGFzcyc6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHBhcnNlQ2xhc3NEZWNsYXJhdGlvbigpOwogICAgICAgICAgICAgY2FzZSAnaWYnOgotICAg
ICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlSWZTdGF0ZW1lbnQoKSwg
c3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSWZTdGF0ZW1lbnQoKTsK
ICAgICAgICAgICAgIGNhc2UgJ3JldHVybic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVn
YXRlLm1hcmtFbmQocGFyc2VSZXR1cm5TdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUmV0dXJuU3RhdGVtZW50KCk7CiAgICAgICAgICAgICBjYXNl
ICdzd2l0Y2gnOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNl
U3dpdGNoU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBw
YXJzZVN3aXRjaFN0YXRlbWVudCgpOwogICAgICAgICAgICAgY2FzZSAndGhyb3cnOgotICAgICAg
ICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVGhyb3dTdGF0ZW1lbnQoKSwg
c3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlVGhyb3dTdGF0ZW1lbnQo
KTsKICAgICAgICAgICAgIGNhc2UgJ3RyeSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVn
YXRlLm1hcmtFbmQocGFyc2VUcnlTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlVHJ5U3RhdGVtZW50KCk7CiAgICAgICAgICAgICBjYXNlICd2YXIn
OgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVmFyaWFibGVT
dGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlVmFy
aWFibGVTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgIGNhc2UgJ3doaWxlJzoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVdoaWxlU3RhdGVtZW50KCksIHN0YXJ0
VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVdoaWxlU3RhdGVtZW50KCk7CiAg
ICAgICAgICAgICBjYXNlICd3aXRoJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUu
bWFya0VuZChwYXJzZVdpdGhTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlV2l0aFN0YXRlbWVudCgpOwogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAg
IG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogICAgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9u
KCk7CiAKICAgICAgICAgLy8gMTIuMTIgTGFiZWxsZWQgU3RhdGVtZW50cwogICAgICAgICBpZiAo
KGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpICYmIG1hdGNoKCc6JykpIHsKICAgICAg
ICAgICAgIGxleCgpOwogCi0gICAgICAgICAgICBrZXkgPSAnJCcgKyBleHByLm5hbWU7Ci0gICAg
ICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmxh
YmVsU2V0LCBrZXkpKSB7CisgICAgICAgICAgICBpZiAoc3RhdGUubGFiZWxTZXQuaGFzKGV4cHIu
bmFtZSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5SZWRlY2xh
cmF0aW9uLCAnTGFiZWwnLCBleHByLm5hbWUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBzdGF0ZS5sYWJlbFNldFtrZXldID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0YXRlLmxhYmVsU2V0
LnNldChleHByLm5hbWUsIHRydWUpOwogICAgICAgICAgICAgbGFiZWxlZEJvZHkgPSBwYXJzZVN0
YXRlbWVudCgpOwotICAgICAgICAgICAgZGVsZXRlIHN0YXRlLmxhYmVsU2V0W2tleV07Ci0gICAg
ICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVMYWJlbGVkU3Rh
dGVtZW50KGV4cHIsIGxhYmVsZWRCb2R5KSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICBzdGF0
ZS5sYWJlbFNldC5kZWxldGUoZXhwci5uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJB
cHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUxhYmVsZWRTdGF0ZW1lbnQoZXhwciwgbGFiZWxl
ZEJvZHkpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKIAotICAg
ICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVFeHByZXNzaW9uU3Rh
dGVtZW50KGV4cHIpLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1h
cmtlciwgZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKSk7CiAgICAgfQog
CiAgICAgLy8gMTMgRnVuY3Rpb24gRGVmaW5pdGlvbgogCisgICAgZnVuY3Rpb24gcGFyc2VDb25j
aXNlQm9keSgpIHsKKyAgICAgICAgaWYgKG1hdGNoKCd7JykpIHsKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOworICAgIH0KKwogICAgIGZ1bmN0aW9uIHBh
cnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpIHsKICAgICAgICAgdmFyIHNvdXJjZUVsZW1lbnQs
IHNvdXJjZUVsZW1lbnRzID0gW10sIHRva2VuLCBkaXJlY3RpdmUsIGZpcnN0UmVzdHJpY3RlZCwK
LSAgICAgICAgICAgIG9sZExhYmVsU2V0LCBvbGRJbkl0ZXJhdGlvbiwgb2xkSW5Td2l0Y2gsIG9s
ZEluRnVuY3Rpb25Cb2R5LCBzdGFydFRva2VuOworICAgICAgICAgICAgb2xkTGFiZWxTZXQsIG9s
ZEluSXRlcmF0aW9uLCBvbGRJblN3aXRjaCwgb2xkSW5GdW5jdGlvbkJvZHksIG9sZFBhcmVudGhl
c2l6ZWRDb3VudCwKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCi0gICAg
ICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgIGV4cGVjdCgneycpOwogCiAgICAg
ICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewpAQCAtMzI4OCw3ICs0NDc5LDcgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgIC8vIHRo
aXMgaXMgbm90IGRpcmVjdGl2ZQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgZGlyZWN0aXZlID0gc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0ICsgMSwg
dG9rZW4uZW5kIC0gMSk7CisgICAgICAgICAgICBkaXJlY3RpdmUgPSBzb3VyY2Uuc2xpY2UodG9r
ZW4ucmFuZ2VbMF0gKyAxLCB0b2tlbi5yYW5nZVsxXSAtIDEpOwogICAgICAgICAgICAgaWYgKGRp
cmVjdGl2ZSA9PT0gJ3VzZSBzdHJpY3QnKSB7CiAgICAgICAgICAgICAgICAgc3RyaWN0ID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZXN0cmljdGVkKSB7CkBAIC0zMzA1LDExICs0
NDk2LDEzIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAg
ICAgb2xkSW5JdGVyYXRpb24gPSBzdGF0ZS5pbkl0ZXJhdGlvbjsKICAgICAgICAgb2xkSW5Td2l0
Y2ggPSBzdGF0ZS5pblN3aXRjaDsKICAgICAgICAgb2xkSW5GdW5jdGlvbkJvZHkgPSBzdGF0ZS5p
bkZ1bmN0aW9uQm9keTsKKyAgICAgICAgb2xkUGFyZW50aGVzaXplZENvdW50ID0gc3RhdGUucGFy
ZW50aGVzaXplZENvdW50OwogCi0gICAgICAgIHN0YXRlLmxhYmVsU2V0ID0ge307CisgICAgICAg
IHN0YXRlLmxhYmVsU2V0ID0gbmV3IFN0cmluZ01hcCgpOwogICAgICAgICBzdGF0ZS5pbkl0ZXJh
dGlvbiA9IGZhbHNlOwogICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IGZhbHNlOwogICAgICAgICBz
dGF0ZS5pbkZ1bmN0aW9uQm9keSA9IHRydWU7CisgICAgICAgIHN0YXRlLnBhcmVudGhlc2l6ZWRD
b3VudCA9IDA7CiAKICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgICAg
ICBpZiAobWF0Y2goJ30nKSkgewpAQCAtMzMyOCw0NCArNDUyMSw5OCBAQCBwYXJzZVN0YXRlbWVu
dDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0g
b2xkSW5JdGVyYXRpb247CiAgICAgICAgIHN0YXRlLmluU3dpdGNoID0gb2xkSW5Td2l0Y2g7CiAg
ICAgICAgIHN0YXRlLmluRnVuY3Rpb25Cb2R5ID0gb2xkSW5GdW5jdGlvbkJvZHk7CisgICAgICAg
IHN0YXRlLnBhcmVudGhlc2l6ZWRDb3VudCA9IG9sZFBhcmVudGhlc2l6ZWRDb3VudDsKKworICAg
ICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVCbG9ja1N0YXRl
bWVudChzb3VyY2VFbGVtZW50cykpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHZhbGlkYXRlUGFy
YW0ob3B0aW9ucywgcGFyYW0sIG5hbWUpIHsKKyAgICAgICAgaWYgKHN0cmljdCkgeworICAgICAg
ICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBvcHRp
b25zLnN0cmljdGVkID0gcGFyYW07CisgICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0g
TWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KG9wdGlvbnMucGFyYW1TZXQuaGFzKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5z
dHJpY3RlZCA9IHBhcmFtOworICAgICAgICAgICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IE1lc3Nh
Z2VzLlN0cmljdFBhcmFtRHVwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgh
b3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRX
b3JkKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQgPSBw
YXJhbTsKKyAgICAgICAgICAgICAgICBvcHRpb25zLm1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQ
YXJhbU5hbWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29y
ZChuYW1lKSkgeworICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkID0gcGFy
YW07CisgICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UmVz
ZXJ2ZWRXb3JkOworICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnBhcmFtU2V0Lmhhcyhu
YW1lKSkgeworICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkID0gcGFyYW07
CisgICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1E
dXBlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG9wdGlvbnMucGFyYW1TZXQu
c2V0KG5hbWUsIHRydWUpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW0ob3B0aW9u
cykgeworICAgICAgICB2YXIgdG9rZW4sIHJlc3QsIHBhcmFtLCBkZWY7CiAKLSAgICAgICAgcmV0
dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoc291cmNl
RWxlbWVudHMpLCBzdGFydFRva2VuKTsKKyAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7CisgICAg
ICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJy4uLicpIHsKKyAgICAgICAgICAgIHRva2VuID0gbGV4
KCk7CisgICAgICAgICAgICByZXN0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICht
YXRjaCgnWycpKSB7CisgICAgICAgICAgICBwYXJhbSA9IHBhcnNlQXJyYXlJbml0aWFsaXNlcigp
OworICAgICAgICAgICAgcmVpbnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25z
LCBwYXJhbSk7CisgICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJ3snKSkgeworICAgICAgICAgICAg
aWYgKHJlc3QpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5PYmpl
Y3RQYXR0ZXJuQXNSZXN0UGFyYW1ldGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBh
cmFtID0gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpOworICAgICAgICAgICAgcmVpbnRlcnByZXRB
c0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBwYXJhbSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwYXJhbSA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7CisgICAgICAg
ICAgICB2YWxpZGF0ZVBhcmFtKG9wdGlvbnMsIHRva2VuLCB0b2tlbi52YWx1ZSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAobWF0Y2goJz0nKSkgeworICAgICAgICAgICAgaWYgKHJlc3QpIHsK
KyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQobG9va2FoZWFkLCBNZXNzYWdlcy5E
ZWZhdWx0UmVzdFBhcmFtZXRlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZXgoKTsK
KyAgICAgICAgICAgIGRlZiA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKKyAgICAgICAg
ICAgICsrb3B0aW9ucy5kZWZhdWx0Q291bnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVz
dCkgeworICAgICAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7CisgICAgICAgICAgICAgICAgdGhy
b3dFcnJvcih7fSwgTWVzc2FnZXMuUGFyYW1ldGVyQWZ0ZXJSZXN0UGFyYW1ldGVyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG9wdGlvbnMucmVzdCA9IHBhcmFtOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgb3B0aW9ucy5wYXJhbXMucHVzaChw
YXJhbSk7CisgICAgICAgIG9wdGlvbnMuZGVmYXVsdHMucHVzaChkZWYpOworICAgICAgICByZXR1
cm4gIW1hdGNoKCcpJyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VQYXJhbXMoZmlyc3RS
ZXN0cmljdGVkKSB7Ci0gICAgICAgIHZhciBwYXJhbSwgcGFyYW1zID0gW10sIHRva2VuLCBzdHJp
Y3RlZCwgcGFyYW1TZXQsIGtleSwgbWVzc2FnZTsKKyAgICAgICAgdmFyIG9wdGlvbnMsIG1hcmtl
ciA9IG1hcmtlckNyZWF0ZSgpOworCisgICAgICAgIG9wdGlvbnMgPSB7CisgICAgICAgICAgICBw
YXJhbXM6IFtdLAorICAgICAgICAgICAgZGVmYXVsdENvdW50OiAwLAorICAgICAgICAgICAgZGVm
YXVsdHM6IFtdLAorICAgICAgICAgICAgcmVzdDogbnVsbCwKKyAgICAgICAgICAgIGZpcnN0UmVz
dHJpY3RlZDogZmlyc3RSZXN0cmljdGVkCisgICAgICAgIH07CisKICAgICAgICAgZXhwZWN0KCco
Jyk7CiAKICAgICAgICAgaWYgKCFtYXRjaCgnKScpKSB7Ci0gICAgICAgICAgICBwYXJhbVNldCA9
IHt9OworICAgICAgICAgICAgb3B0aW9ucy5wYXJhbVNldCA9IG5ldyBTdHJpbmdNYXAoKTsKICAg
ICAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAgICAgICAgIHRva2Vu
ID0gbG9va2FoZWFkOwotICAgICAgICAgICAgICAgIHBhcmFtID0gcGFyc2VWYXJpYWJsZUlkZW50
aWZpZXIoKTsKLSAgICAgICAgICAgICAgICBrZXkgPSAnJCcgKyB0b2tlbi52YWx1ZTsKLSAgICAg
ICAgICAgICAgICBpZiAoc3RyaWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc1Jlc3Ry
aWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0
ZWQgPSB0b2tlbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5T
dHJpY3RQYXJhbU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbVNldCwga2V5
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0ZWQgPSB0b2tlbjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJhbUR1cGU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFmaXJzdFJlc3Ry
aWN0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4u
dmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tl
bjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJh
bU5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpY3RNb2RlUmVzZXJ2
ZWRXb3JkKHRva2VuLnZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0
cmljdGVkID0gdG9rZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2Fn
ZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbVNldCwga2V5KSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1EdXBlOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhcmFt
cy5wdXNoKHBhcmFtKTsKLSAgICAgICAgICAgICAgICBwYXJhbVNldFtrZXldID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBpZiAobWF0Y2goJyknKSkgeworICAgICAgICAgICAgICAgIGlmICghcGFy
c2VQYXJhbShvcHRpb25zKSkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZXhwZWN0KCcsJyk7CkBAIC0zMzc0LDIyICs0NjIx
LDI5IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKIAogICAgICAg
ICBleHBlY3QoJyknKTsKIAotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgcGFyYW1zOiBw
YXJhbXMsCi0gICAgICAgICAgICBzdHJpY3RlZDogc3RyaWN0ZWQsCi0gICAgICAgICAgICBmaXJz
dFJlc3RyaWN0ZWQ6IGZpcnN0UmVzdHJpY3RlZCwKLSAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3Nh
Z2UKLSAgICAgICAgfTsKKyAgICAgICAgaWYgKG9wdGlvbnMuZGVmYXVsdENvdW50ID09PSAwKSB7
CisgICAgICAgICAgICBvcHRpb25zLmRlZmF1bHRzID0gW107CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBvcHRpb25zKTsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSB7Ci0gICAgICAgIHZhciBpZCwgcGFyYW1z
ID0gW10sIGJvZHksIHRva2VuLCBzdHJpY3RlZCwgdG1wLCBmaXJzdFJlc3RyaWN0ZWQsIG1lc3Nh
Z2UsIHByZXZpb3VzU3RyaWN0LCBzdGFydFRva2VuOwotCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBs
b29rYWhlYWQ7CisgICAgICAgIHZhciBpZCwgYm9keSwgdG9rZW4sIHRtcCwgZmlyc3RSZXN0cmlj
dGVkLCBtZXNzYWdlLCBwcmV2aW91c1N0cmljdCwgcHJldmlvdXNZaWVsZEFsbG93ZWQsIGdlbmVy
YXRvciwKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAgIGV4
cGVjdEtleXdvcmQoJ2Z1bmN0aW9uJyk7CisKKyAgICAgICAgZ2VuZXJhdG9yID0gZmFsc2U7Cisg
ICAgICAgIGlmIChtYXRjaCgnKicpKSB7CisgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvciA9IHRydWU7CisgICAgICAgIH0KKwogICAgICAgICB0b2tlbiA9IGxvb2thaGVh
ZDsKKwogICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7CisKICAgICAgICAg
aWYgKHN0cmljdCkgewogICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFs
dWUpKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdl
cy5TdHJpY3RGdW5jdGlvbk5hbWUpOwpAQCAtMzQwNSwzMiArNDY1OSw0MiBAQCBwYXJzZVN0YXRl
bWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIH0KIAogICAgICAgICB0bXAg
PSBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpOwotICAgICAgICBwYXJhbXMgPSB0bXAucGFy
YW1zOwotICAgICAgICBzdHJpY3RlZCA9IHRtcC5zdHJpY3RlZDsKICAgICAgICAgZmlyc3RSZXN0
cmljdGVkID0gdG1wLmZpcnN0UmVzdHJpY3RlZDsKICAgICAgICAgaWYgKHRtcC5tZXNzYWdlKSB7
CiAgICAgICAgICAgICBtZXNzYWdlID0gdG1wLm1lc3NhZ2U7CiAgICAgICAgIH0KIAogICAgICAg
ICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDsKKyAgICAgICAgcHJldmlvdXNZaWVsZEFsbG93ZWQg
PSBzdGF0ZS55aWVsZEFsbG93ZWQ7CisgICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9IGdlbmVy
YXRvcjsKKwogICAgICAgICBib2R5ID0gcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzKCk7CisK
ICAgICAgICAgaWYgKHN0cmljdCAmJiBmaXJzdFJlc3RyaWN0ZWQpIHsKICAgICAgICAgICAgIHRo
cm93RXJyb3IoZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlKTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoc3RyaWN0ICYmIHN0cmljdGVkKSB7Ci0gICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQo
c3RyaWN0ZWQsIG1lc3NhZ2UpOworICAgICAgICBpZiAoc3RyaWN0ICYmIHRtcC5zdHJpY3RlZCkg
eworICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRtcC5zdHJpY3RlZCwgbWVzc2FnZSk7
CiAgICAgICAgIH0KICAgICAgICAgc3RyaWN0ID0gcHJldmlvdXNTdHJpY3Q7CisgICAgICAgIHN0
YXRlLnlpZWxkQWxsb3dlZCA9IHByZXZpb3VzWWllbGRBbGxvd2VkOwogCi0gICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oaWQs
IHBhcmFtcywgW10sIGJvZHkpLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFw
cGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbihpZCwgdG1wLnBh
cmFtcywgdG1wLmRlZmF1bHRzLCBib2R5LCB0bXAucmVzdCwgZ2VuZXJhdG9yLCBmYWxzZSkpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKCkgewotICAgICAg
ICB2YXIgdG9rZW4sIGlkID0gbnVsbCwgc3RyaWN0ZWQsIGZpcnN0UmVzdHJpY3RlZCwgbWVzc2Fn
ZSwgdG1wLCBwYXJhbXMgPSBbXSwgYm9keSwgcHJldmlvdXNTdHJpY3QsIHN0YXJ0VG9rZW47Cisg
ICAgICAgIHZhciB0b2tlbiwgaWQgPSBudWxsLCBmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UsIHRt
cCwgYm9keSwgcHJldmlvdXNTdHJpY3QsIHByZXZpb3VzWWllbGRBbGxvd2VkLCBnZW5lcmF0b3Is
CisgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAotICAgICAgICBzdGFydFRv
a2VuID0gbG9va2FoZWFkOwogICAgICAgICBleHBlY3RLZXl3b3JkKCdmdW5jdGlvbicpOwogCisg
ICAgICAgIGdlbmVyYXRvciA9IGZhbHNlOworCisgICAgICAgIGlmIChtYXRjaCgnKicpKSB7Cisg
ICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvciA9IHRydWU7CisgICAgICAg
IH0KKwogICAgICAgICBpZiAoIW1hdGNoKCcoJykpIHsKICAgICAgICAgICAgIHRva2VuID0gbG9v
a2FoZWFkOwogICAgICAgICAgICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOwpAQCAt
MzQ1MCwyNyArNDcxNCwyMjIgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxl
bWVudAogICAgICAgICB9CiAKICAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmlj
dGVkKTsKLSAgICAgICAgcGFyYW1zID0gdG1wLnBhcmFtczsKLSAgICAgICAgc3RyaWN0ZWQgPSB0
bXAuc3RyaWN0ZWQ7CiAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJlc3RyaWN0
ZWQ7CiAgICAgICAgIGlmICh0bXAubWVzc2FnZSkgewogICAgICAgICAgICAgbWVzc2FnZSA9IHRt
cC5tZXNzYWdlOwogICAgICAgICB9CiAKICAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7
CisgICAgICAgIHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRBbGxvd2VkOworICAg
ICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBnZW5lcmF0b3I7CisKICAgICAgICAgYm9keSA9IHBh
cnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpOworCiAgICAgICAgIGlmIChzdHJpY3QgJiYgZmly
c3RSZXN0cmljdGVkKSB7CiAgICAgICAgICAgICB0aHJvd0Vycm9yKGZpcnN0UmVzdHJpY3RlZCwg
bWVzc2FnZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmljdCAmJiBzdHJpY3RlZCkgewot
ICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHN0cmljdGVkLCBtZXNzYWdlKTsKKyAgICAg
ICAgaWYgKHN0cmljdCAmJiB0bXAuc3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3JU
b2xlcmFudCh0bXAuc3RyaWN0ZWQsIG1lc3NhZ2UpOwogICAgICAgICB9CiAgICAgICAgIHN0cmlj
dCA9IHByZXZpb3VzU3RyaWN0OworICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBwcmV2aW91
c1lpZWxkQWxsb3dlZDsKKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxl
Z2F0ZS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oaWQsIHRtcC5wYXJhbXMsIHRtcC5kZWZhdWx0
cywgYm9keSwgdG1wLnJlc3QsIGdlbmVyYXRvciwgZmFsc2UpKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBwYXJzZVlpZWxkRXhwcmVzc2lvbigpIHsKKyAgICAgICAgdmFyIHlpZWxkVG9rZW4sIGRl
bGVnYXRlRmxhZywgZXhwciwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisKKyAgICAgICAgeWll
bGRUb2tlbiA9IGxleCgpOworICAgICAgICBhc3NlcnQoeWllbGRUb2tlbi52YWx1ZSA9PT0gJ3lp
ZWxkJywgJ0NhbGxlZCBwYXJzZVlpZWxkRXhwcmVzc2lvbiB3aXRoIG5vbi15aWVsZCBsb29rYWhl
YWQuJyk7CisKKyAgICAgICAgaWYgKCFzdGF0ZS55aWVsZEFsbG93ZWQpIHsKKyAgICAgICAgICAg
IHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSWxsZWdhbFlpZWxkKTsKKyAgICAgICAg
fQorCisgICAgICAgIGRlbGVnYXRlRmxhZyA9IGZhbHNlOworICAgICAgICBpZiAobWF0Y2goJyon
KSkgeworICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICBkZWxlZ2F0ZUZsYWcgPSB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgZXhwciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
KTsKKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVZ
aWVsZEV4cHJlc3Npb24oZXhwciwgZGVsZWdhdGVGbGFnKSk7CisgICAgfQorCisgICAgLy8gMTQg
RnVuY3Rpb25zIGFuZCBjbGFzc2VzCisKKyAgICAvLyAxNC4xIEZ1bmN0aW9ucyBpcyBkZWZpbmVk
IGFib3ZlICgxMyBpbiBFUzUpCisgICAgLy8gMTQuMiBBcnJvdyBGdW5jdGlvbnMgRGVmaW5pdGlv
bnMgaXMgZGVmaW5lZCBpbiAoNy4zIGFzc2lnbm1lbnRzKQorCisgICAgLy8gMTQuMyBNZXRob2Qg
RGVmaW5pdGlvbnMKKyAgICAvLyAxNC4zLjcKKyAgICBmdW5jdGlvbiBzcGVjaWFsTWV0aG9kKG1l
dGhvZERlZmluaXRpb24pIHsKKyAgICAgICAgcmV0dXJuIG1ldGhvZERlZmluaXRpb24ua2luZCA9
PT0gJ2dldCcgfHwKKyAgICAgICAgICAgIG1ldGhvZERlZmluaXRpb24ua2luZCA9PT0gJ3NldCcg
fHwKKyAgICAgICAgICAgIG1ldGhvZERlZmluaXRpb24udmFsdWUuZ2VuZXJhdG9yOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHBhcnNlTWV0aG9kRGVmaW5pdGlvbigpIHsKKyAgICAgICAgdmFyIHRv
a2VuLCBrZXksIHBhcmFtLCBwcm9wVHlwZSwgY29tcHV0ZWQsCisgICAgICAgICAgICBtYXJrZXIg
PSBtYXJrZXJDcmVhdGUoKTsKKworICAgICAgICBpZiAobG9va2FoZWFkLnZhbHVlID09PSAnc3Rh
dGljJykgeworICAgICAgICAgICAgcHJvcFR5cGUgPSBDbGFzc1Byb3BlcnR5VHlwZS5zdGF0aWM7
CisgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByb3BU
eXBlID0gQ2xhc3NQcm9wZXJ0eVR5cGUucHJvdG90eXBlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1hdGNoKCcqJykpIHsKKyAgICAgICAgICAgIGxleCgpOworICAgICAgICAgICAgY29tcHV0
ZWQgPSAobG9va2FoZWFkLnZhbHVlID09PSAnWycpOworICAgICAgICAgICAgcmV0dXJuIG1hcmtl
ckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlTWV0aG9kRGVmaW5pdGlvbigKKyAgICAgICAg
ICAgICAgICBwcm9wVHlwZSwKKyAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAgICBw
YXJzZU9iamVjdFByb3BlcnR5S2V5KCksCisgICAgICAgICAgICAgICAgcGFyc2VQcm9wZXJ0eU1l
dGhvZEZ1bmN0aW9uKHsgZ2VuZXJhdG9yOiB0cnVlIH0pLAorICAgICAgICAgICAgICAgIGNvbXB1
dGVkCisgICAgICAgICAgICApKTsKKyAgICAgICAgfQorCisgICAgICAgIHRva2VuID0gbG9va2Fo
ZWFkOworICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7CisKKyAgICAgICAg
aWYgKHRva2VuLnZhbHVlID09PSAnZ2V0JyAmJiAhbWF0Y2goJygnKSkgeworICAgICAgICAgICAg
Y29tcHV0ZWQgPSAobG9va2FoZWFkLnZhbHVlID09PSAnWycpOworICAgICAgICAgICAga2V5ID0g
cGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpOworCisgICAgICAgICAgICBleHBlY3QoJygnKTsKKyAg
ICAgICAgICAgIGV4cGVjdCgnKScpOworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1h
cmtlciwgZGVsZWdhdGUuY3JlYXRlTWV0aG9kRGVmaW5pdGlvbigKKyAgICAgICAgICAgICAgICBw
cm9wVHlwZSwKKyAgICAgICAgICAgICAgICAnZ2V0JywKKyAgICAgICAgICAgICAgICBrZXksCisg
ICAgICAgICAgICAgICAgcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHsgZ2VuZXJhdG9yOiBmYWxzZSB9
KSwKKyAgICAgICAgICAgICAgICBjb21wdXRlZAorICAgICAgICAgICAgKSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnc2V0JyAmJiAhbWF0Y2goJygnKSkgeworICAg
ICAgICAgICAgY29tcHV0ZWQgPSAobG9va2FoZWFkLnZhbHVlID09PSAnWycpOworICAgICAgICAg
ICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpOworCisgICAgICAgICAgICBleHBlY3Qo
JygnKTsKKyAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkOworICAgICAgICAgICAgcGFyYW0g
PSBbIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkgXTsKKyAgICAgICAgICAgIGV4cGVjdCgnKScp
OworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRl
TWV0aG9kRGVmaW5pdGlvbigKKyAgICAgICAgICAgICAgICBwcm9wVHlwZSwKKyAgICAgICAgICAg
ICAgICAnc2V0JywKKyAgICAgICAgICAgICAgICBrZXksCisgICAgICAgICAgICAgICAgcGFyc2VQ
cm9wZXJ0eUZ1bmN0aW9uKHsgcGFyYW1zOiBwYXJhbSwgZ2VuZXJhdG9yOiBmYWxzZSwgbmFtZTog
dG9rZW4gfSksCisgICAgICAgICAgICAgICAgY29tcHV0ZWQKKyAgICAgICAgICAgICkpOworICAg
ICAgICB9CisKKyAgICAgICAgY29tcHV0ZWQgPSAodG9rZW4udmFsdWUgPT09ICdbJyk7CisKKyAg
ICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlTWV0aG9kRGVm
aW5pdGlvbigKKyAgICAgICAgICAgIHByb3BUeXBlLAorICAgICAgICAgICAgJycsCisgICAgICAg
ICAgICBrZXksCisgICAgICAgICAgICBwYXJzZVByb3BlcnR5TWV0aG9kRnVuY3Rpb24oeyBnZW5l
cmF0b3I6IGZhbHNlIH0pLAorICAgICAgICAgICAgY29tcHV0ZWQKKyAgICAgICAgKSk7CisgICAg
fQorCisgICAgLy8gMTQuNSBDbGFzcyBEZWZpbml0aW9ucworCisgICAgZnVuY3Rpb24gcGFyc2VD
bGFzc0VsZW1lbnQoKSB7CisgICAgICAgIGlmIChtYXRjaCgnOycpKSB7CisgICAgICAgICAgICBs
ZXgoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBwYXJzZU1ldGhvZERl
ZmluaXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlQ2xhc3NC
b2R5KCkgeworICAgICAgICB2YXIgY2xhc3NFbGVtZW50LCBjbGFzc0VsZW1lbnRzID0gW10sIGV4
aXN0aW5nUHJvcHMgPSB7fSwKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpLCBw
cm9wTmFtZSwgcHJvcFR5cGU7CisKKyAgICAgICAgZXhpc3RpbmdQcm9wc1tDbGFzc1Byb3BlcnR5
VHlwZS5zdGF0aWNdID0gbmV3IFN0cmluZ01hcCgpOworICAgICAgICBleGlzdGluZ1Byb3BzW0Ns
YXNzUHJvcGVydHlUeXBlLnByb3RvdHlwZV0gPSBuZXcgU3RyaW5nTWFwKCk7CisKKyAgICAgICAg
ZXhwZWN0KCd7Jyk7CisKKyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAgICAg
ICAgICBpZiAobWF0Y2goJ30nKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY2xhc3NFbGVtZW50ID0gcGFyc2VDbGFzc0VsZW1lbnQoZXhpc3Rp
bmdQcm9wcyk7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgY2xhc3NFbGVtZW50ICE9PSAndW5k
ZWZpbmVkJykgeworICAgICAgICAgICAgICAgIGNsYXNzRWxlbWVudHMucHVzaChjbGFzc0VsZW1l
bnQpOworCisgICAgICAgICAgICAgICAgcHJvcE5hbWUgPSAhY2xhc3NFbGVtZW50LmNvbXB1dGVk
ICYmIGdldEZpZWxkTmFtZShjbGFzc0VsZW1lbnQua2V5KTsKKyAgICAgICAgICAgICAgICBpZiAo
cHJvcE5hbWUgIT09IGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIHByb3BUeXBlID0gY2xh
c3NFbGVtZW50LnN0YXRpYyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNz
UHJvcGVydHlUeXBlLnN0YXRpYyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENs
YXNzUHJvcGVydHlUeXBlLnByb3RvdHlwZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cE5hbWUgPT09ICdjb25zdHJ1Y3RvcicgJiYgIWNsYXNzRWxlbWVudC5zdGF0aWMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzcGVjaWFsTWV0aG9kKGNsYXNzRWxlbWVudCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGNsYXNzRWxlbWVudCwgTWVzc2Fn
ZXMuSWxsZWdhbENsYXNzQ29uc3RydWN0b3JQcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdQcm9wc1tDbGFzc1By
b3BlcnR5VHlwZS5wcm90b3R5cGVdLmhhcygnY29uc3RydWN0b3InKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3IoY2xhc3NFbGVtZW50LmtleSwgTWVzc2FnZXMuSWxs
ZWdhbER1cGxpY2F0ZUNsYXNzUHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUHJvcHNb
cHJvcFR5cGVdLnNldChwcm9wTmFtZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZXhwZWN0KCd9Jyk7CisKKyAgICAgICAgcmV0
dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlQ2xhc3NCb2R5KGNsYXNzRWxl
bWVudHMpKTsKKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdh
dGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGlkLCBwYXJhbXMsIFtdLCBib2R5KSwgc3RhcnRU
b2tlbik7CisgICAgZnVuY3Rpb24gcGFyc2VDbGFzc0V4cHJlc3Npb24oKSB7CisgICAgICAgIHZh
ciBpZCwgcHJldmlvdXNZaWVsZEFsbG93ZWQsIHN1cGVyQ2xhc3MgPSBudWxsLCBtYXJrZXIgPSBt
YXJrZXJDcmVhdGUoKTsKKworICAgICAgICBleHBlY3RLZXl3b3JkKCdjbGFzcycpOworCisgICAg
ICAgIGlmICghbWF0Y2hLZXl3b3JkKCdleHRlbmRzJykgJiYgIW1hdGNoKCd7JykpIHsKKyAgICAg
ICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtYXRjaEtleXdvcmQoJ2V4dGVuZHMnKSkgeworICAgICAgICAgICAgZXhwZWN0S2V5
d29yZCgnZXh0ZW5kcycpOworICAgICAgICAgICAgcHJldmlvdXNZaWVsZEFsbG93ZWQgPSBzdGF0
ZS55aWVsZEFsbG93ZWQ7CisgICAgICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIHN1cGVyQ2xhc3MgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7Cisg
ICAgICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBwcmV2aW91c1lpZWxkQWxsb3dlZDsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNy
ZWF0ZUNsYXNzRXhwcmVzc2lvbihpZCwgc3VwZXJDbGFzcywgcGFyc2VDbGFzc0JvZHkoKSkpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlQ2xhc3NEZWNsYXJhdGlvbigpIHsKKyAgICAgICAg
dmFyIGlkLCBwcmV2aW91c1lpZWxkQWxsb3dlZCwgc3VwZXJDbGFzcyA9IG51bGwsIG1hcmtlciA9
IG1hcmtlckNyZWF0ZSgpOworCisgICAgICAgIGV4cGVjdEtleXdvcmQoJ2NsYXNzJyk7CisKKyAg
ICAgICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOworCisgICAgICAgIGlmIChtYXRj
aEtleXdvcmQoJ2V4dGVuZHMnKSkgeworICAgICAgICAgICAgZXhwZWN0S2V5d29yZCgnZXh0ZW5k
cycpOworICAgICAgICAgICAgcHJldmlvdXNZaWVsZEFsbG93ZWQgPSBzdGF0ZS55aWVsZEFsbG93
ZWQ7CisgICAgICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IHN1cGVyQ2xhc3MgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgICAgICAgICBz
dGF0ZS55aWVsZEFsbG93ZWQgPSBwcmV2aW91c1lpZWxkQWxsb3dlZDsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUNsYXNzRGVj
bGFyYXRpb24oaWQsIHN1cGVyQ2xhc3MsIHBhcnNlQ2xhc3NCb2R5KCkpKTsKICAgICB9CiAKLSAg
ICAvLyAxNCBQcm9ncmFtCisgICAgLy8gMTUgUHJvZ3JhbQogCiAgICAgZnVuY3Rpb24gcGFyc2VT
b3VyY2VFbGVtZW50KCkgewogICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktl
eXdvcmQpIHsKQEAgLTM0ODAsNiArNDkzOSwxMiBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFy
c2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ29uc3RMZXREZWNs
YXJhdGlvbihsb29rYWhlYWQudmFsdWUpOwogICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOgog
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKTsKKyAgICAg
ICAgICAgIGNhc2UgJ2V4cG9ydCc6CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50
KHt9LCBNZXNzYWdlcy5JbGxlZ2FsRXhwb3J0RGVjbGFyYXRpb24pOworICAgICAgICAgICAgICAg
IHJldHVybiBwYXJzZUV4cG9ydERlY2xhcmF0aW9uKCk7CisgICAgICAgICAgICBjYXNlICdpbXBv
cnQnOgorICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSWxs
ZWdhbEltcG9ydERlY2xhcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbXBv
cnREZWNsYXJhdGlvbigpOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgIH0KQEAgLTM0OTAsNyArNDk1NSwy
MCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBmdW5jdGlvbiBwYXJzZVNvdXJjZUVsZW1lbnRzKCkgeworICAgIGZ1bmN0
aW9uIHBhcnNlUHJvZ3JhbUVsZW1lbnQoKSB7CisgICAgICAgIGlmIChleHRyYS5pc01vZHVsZSAm
JiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uS2V5d29yZCkgeworICAgICAgICAgICAgc3dpdGNo
IChsb29rYWhlYWQudmFsdWUpIHsKKyAgICAgICAgICAgIGNhc2UgJ2V4cG9ydCc6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKTsKKyAgICAgICAgICAgIGNh
c2UgJ2ltcG9ydCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1wb3J0RGVjbGFyYXRp
b24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwYXJzZVNv
dXJjZUVsZW1lbnQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVByb2dyYW1FbGVtZW50
cygpIHsKICAgICAgICAgdmFyIHNvdXJjZUVsZW1lbnQsIHNvdXJjZUVsZW1lbnRzID0gW10sIHRv
a2VuLCBkaXJlY3RpdmUsIGZpcnN0UmVzdHJpY3RlZDsKIAogICAgICAgICB3aGlsZSAoaW5kZXgg
PCBsZW5ndGgpIHsKQEAgLTM0OTksMTMgKzQ5NzcsMTMgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUs
IHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7Cisg
ICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VQcm9ncmFtRWxlbWVudCgpOwogICAgICAg
ICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTsKICAgICAgICAgICAgIGlm
IChzb3VyY2VFbGVtZW50LmV4cHJlc3Npb24udHlwZSAhPT0gU3ludGF4LkxpdGVyYWwpIHsKICAg
ICAgICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBkaXJlY3RpdmUKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRpcmVjdGl2ZSA9IHNvdXJjZS5zbGlj
ZSh0b2tlbi5zdGFydCArIDEsIHRva2VuLmVuZCAtIDEpOworICAgICAgICAgICAgZGlyZWN0aXZl
ID0gc291cmNlLnNsaWNlKHRva2VuLnJhbmdlWzBdICsgMSwgdG9rZW4ucmFuZ2VbMV0gLSAxKTsK
ICAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0JykgewogICAgICAgICAg
ICAgICAgIHN0cmljdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVzdHJpY3Rl
ZCkgewpAQCAtMzUxOSw4ICs0OTk3LDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291
cmNlRWxlbWVudAogICAgICAgICB9CiAKICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7
Ci0gICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7Ci0gICAg
ICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8KKyAgICAgICAgICAgIHNvdXJjZUVsZW1l
bnQgPSBwYXJzZVByb2dyYW1FbGVtZW50KCk7CiAgICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJj
ZUVsZW1lbnQgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC0zNTMwLDE1ICs1MDA3LDkyIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBw
YXJzZVNvdXJjZUVsZW1lbnQKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZVByb2dyYW0oKSB7
Ci0gICAgICAgIHZhciBib2R5LCBzdGFydFRva2VuOworICAgICAgICB2YXIgYm9keSwgbWFya2Vy
ID0gbWFya2VyQ3JlYXRlKCk7CisgICAgICAgIHN0cmljdCA9ICEhZXh0cmEuaXNNb2R1bGU7Cisg
ICAgICAgIHBlZWsoKTsKKyAgICAgICAgYm9keSA9IHBhcnNlUHJvZ3JhbUVsZW1lbnRzKCk7Cisg
ICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVByb2dyYW0o
Ym9keSkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbGxlY3RUb2tlbigpIHsKKyAgICAgICAg
dmFyIGxvYywgdG9rZW4sIHJhbmdlLCB2YWx1ZSwgZW50cnk7CiAKICAgICAgICAgc2tpcENvbW1l
bnQoKTsKLSAgICAgICAgcGVlaygpOwotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwot
ICAgICAgICBzdHJpY3QgPSBmYWxzZTsKKyAgICAgICAgbG9jID0geworICAgICAgICAgICAgc3Rh
cnQ6IHsKKyAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAg
IGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICB0b2tlbiA9IGV4dHJhLmFkdmFuY2UoKTsKKyAgICAgICAgbG9jLmVuZCA9IHsKKyAg
ICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCisgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0g
bGluZVN0YXJ0CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2Vu
LkVPRikgeworICAgICAgICAgICAgcmFuZ2UgPSBbdG9rZW4ucmFuZ2VbMF0sIHRva2VuLnJhbmdl
WzFdXTsKKyAgICAgICAgICAgIHZhbHVlID0gc291cmNlLnNsaWNlKHRva2VuLnJhbmdlWzBdLCB0
b2tlbi5yYW5nZVsxXSk7CisgICAgICAgICAgICBlbnRyeSA9IHsKKyAgICAgICAgICAgICAgICB0
eXBlOiBUb2tlbk5hbWVbdG9rZW4udHlwZV0sCisgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVl
LAorICAgICAgICAgICAgICAgIHJhbmdlOiByYW5nZSwKKyAgICAgICAgICAgICAgICBsb2M6IGxv
YworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmICh0b2tlbi5yZWdleCkgeworICAgICAg
ICAgICAgICAgIGVudHJ5LnJlZ2V4ID0geworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiB0
b2tlbi5yZWdleC5wYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICBmbGFnczogdG9rZW4ucmVn
ZXguZmxhZ3MKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZXh0cmEudG9rZW5zLnB1c2goZW50cnkpOworICAgICAgICB9CiAKLSAgICAgICAgYm9keSA9IHBh
cnNlU291cmNlRWxlbWVudHMoKTsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVs
ZWdhdGUuY3JlYXRlUHJvZ3JhbShib2R5KSwgc3RhcnRUb2tlbik7CisgICAgICAgIHJldHVybiB0
b2tlbjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb2xsZWN0UmVnZXgoKSB7CisgICAgICAgIHZh
ciBwb3MsIGxvYywgcmVnZXgsIHRva2VuOworCisgICAgICAgIHNraXBDb21tZW50KCk7CisKKyAg
ICAgICAgcG9zID0gaW5kZXg7CisgICAgICAgIGxvYyA9IHsKKyAgICAgICAgICAgIHN0YXJ0OiB7
CisgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwKKyAgICAgICAgICAgICAgICBjb2x1
bW46IGluZGV4IC0gbGluZVN0YXJ0CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgcmVnZXggPSBleHRyYS5zY2FuUmVnRXhwKCk7CisgICAgICAgIGxvYy5lbmQgPSB7CisgICAg
ICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxp
bmVTdGFydAorICAgICAgICB9OworCisgICAgICAgIGlmICghZXh0cmEudG9rZW5pemUpIHsKKyAg
ICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICAgICAgICAvLyBQb3Ag
dGhlIHByZXZpb3VzIHRva2VuLCB3aGljaCBpcyBsaWtlbHkgJy8nIG9yICcvPScKKyAgICAgICAg
ICAgIGlmIChleHRyYS50b2tlbnMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIHRva2Vu
ID0gZXh0cmEudG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTsKKyAgICAgICAgICAgICAg
ICBpZiAodG9rZW4ucmFuZ2VbMF0gPT09IHBvcyAmJiB0b2tlbi50eXBlID09PSAnUHVuY3R1YXRv
cicpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnLycgfHwgdG9r
ZW4udmFsdWUgPT09ICcvPScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vu
cy5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2goeworICAgICAgICAgICAg
ICAgIHR5cGU6ICdSZWd1bGFyRXhwcmVzc2lvbicsCisgICAgICAgICAgICAgICAgdmFsdWU6IHJl
Z2V4LmxpdGVyYWwsCisgICAgICAgICAgICAgICAgcmVnZXg6IHJlZ2V4LnJlZ2V4LAorICAgICAg
ICAgICAgICAgIHJhbmdlOiBbcG9zLCBpbmRleF0sCisgICAgICAgICAgICAgICAgbG9jOiBsb2MK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlZ2V4OwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIGZpbHRlclRva2VuTG9jYXRpb24oKSB7CkBAIC0zNTUwLDYgKzUx
MDQsMTIgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAg
ICAgICAgICAgIHR5cGU6IGVudHJ5LnR5cGUsCiAgICAgICAgICAgICAgICAgdmFsdWU6IGVudHJ5
LnZhbHVlCiAgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKGVudHJ5LnJlZ2V4KSB7Cisg
ICAgICAgICAgICAgICAgdG9rZW4ucmVnZXggPSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRl
cm46IGVudHJ5LnJlZ2V4LnBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgIGZsYWdzOiBlbnRy
eS5yZWdleC5mbGFncworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoZXh0cmEucmFuZ2UpIHsKICAgICAgICAgICAgICAgICB0b2tlbi5yYW5nZSA9IGVu
dHJ5LnJhbmdlOwogICAgICAgICAgICAgfQpAQCAtMzU2Miw2ICs1MTIyLDQ1IEBAIHBhcnNlU3Rh
dGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgZXh0cmEudG9rZW5zID0g
dG9rZW5zOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIHBhdGNoKCkgeworICAgICAgICBpZiAodHlw
ZW9mIGV4dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIGV4dHJhLmFk
dmFuY2UgPSBhZHZhbmNlOworICAgICAgICAgICAgZXh0cmEuc2NhblJlZ0V4cCA9IHNjYW5SZWdF
eHA7CisKKyAgICAgICAgICAgIGFkdmFuY2UgPSBjb2xsZWN0VG9rZW47CisgICAgICAgICAgICBz
Y2FuUmVnRXhwID0gY29sbGVjdFJlZ2V4OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rp
b24gdW5wYXRjaCgpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBleHRyYS5zY2FuUmVnRXhwID09PSAn
ZnVuY3Rpb24nKSB7CisgICAgICAgICAgICBhZHZhbmNlID0gZXh0cmEuYWR2YW5jZTsKKyAgICAg
ICAgICAgIHNjYW5SZWdFeHAgPSBleHRyYS5zY2FuUmVnRXhwOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gVGhpcyBpcyB1c2VkIHRvIG1vZGlmeSB0aGUgZGVsZWdhdGUuCisKKyAgICBmdW5j
dGlvbiBleHRlbmQob2JqZWN0LCBwcm9wZXJ0aWVzKSB7CisgICAgICAgIHZhciBlbnRyeSwgcmVz
dWx0ID0ge307CisKKyAgICAgICAgZm9yIChlbnRyeSBpbiBvYmplY3QpIHsKKyAgICAgICAgICAg
IC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCisgICAgICAgICAgICBpZiAob2JqZWN0Lmhhc093
blByb3BlcnR5KGVudHJ5KSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFtlbnRyeV0gPSBvYmpl
Y3RbZW50cnldOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChlbnRy
eSBpbiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAq
LworICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoZW50cnkpKSB7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0W2VudHJ5XSA9IHByb3BlcnRpZXNbZW50cnldOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAg
ICBmdW5jdGlvbiB0b2tlbml6ZShjb2RlLCBvcHRpb25zKSB7CiAgICAgICAgIHZhciB0b1N0cmlu
ZywKICAgICAgICAgICAgIHRva2VuLApAQCAtMzU4MCw4ICs1MTc5LDkgQEAgcGFyc2VTdGF0ZW1l
bnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVu
Z3RoOwogICAgICAgICBsb29rYWhlYWQgPSBudWxsOwogICAgICAgICBzdGF0ZSA9IHsKKyAgICAg
ICAgICAgIGFsbG93S2V5d29yZDogdHJ1ZSwKICAgICAgICAgICAgIGFsbG93SW46IHRydWUsCi0g
ICAgICAgICAgICBsYWJlbFNldDoge30sCisgICAgICAgICAgICBsYWJlbFNldDogbmV3IFN0cmlu
Z01hcCgpLAogICAgICAgICAgICAgaW5GdW5jdGlvbkJvZHk6IGZhbHNlLAogICAgICAgICAgICAg
aW5JdGVyYXRpb246IGZhbHNlLAogICAgICAgICAgICAgaW5Td2l0Y2g6IGZhbHNlLApAQCAtMzYx
MSw2ICs1MjExLDggQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
ICAgICAgICAgICAgZXh0cmEuZXJyb3JzID0gW107CiAgICAgICAgIH0KIAorICAgICAgICBwYXRj
aCgpOworCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBwZWVrKCk7CiAgICAgICAgICAgICBp
ZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLkVPRikgewpAQCAtMzY0NSw2ICs1MjQ3LDcgQEAg
cGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICB9IGZpbmFsbHkgeworICAgICAg
ICAgICAgdW5wYXRjaCgpOwogICAgICAgICAgICAgZXh0cmEgPSB7fTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gdG9rZW5zOwpAQCAtMzY2NiwxMiArNTI2OSwxNSBAQCBwYXJzZVN0YXRlbWVu
dDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5n
dGg7CiAgICAgICAgIGxvb2thaGVhZCA9IG51bGw7CiAgICAgICAgIHN0YXRlID0geworICAgICAg
ICAgICAgYWxsb3dLZXl3b3JkOiBmYWxzZSwKICAgICAgICAgICAgIGFsbG93SW46IHRydWUsCi0g
ICAgICAgICAgICBsYWJlbFNldDoge30sCisgICAgICAgICAgICBsYWJlbFNldDogbmV3IFN0cmlu
Z01hcCgpLAorICAgICAgICAgICAgcGFyZW50aGVzaXplZENvdW50OiAwLAogICAgICAgICAgICAg
aW5GdW5jdGlvbkJvZHk6IGZhbHNlLAogICAgICAgICAgICAgaW5JdGVyYXRpb246IGZhbHNlLAog
ICAgICAgICAgICAgaW5Td2l0Y2g6IGZhbHNlLAotICAgICAgICAgICAgbGFzdENvbW1lbnRTdGFy
dDogLTEKKyAgICAgICAgICAgIGxhc3RDb21tZW50U3RhcnQ6IC0xLAorICAgICAgICAgICAgeWll
bGRBbGxvd2VkOiBmYWxzZQogICAgICAgICB9OwogCiAgICAgICAgIGV4dHJhID0ge307CkBAIC0z
NjgxLDkgKzUyODcsMTcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVu
dAogICAgICAgICAgICAgZXh0cmEuYXR0YWNoQ29tbWVudCA9ICh0eXBlb2Ygb3B0aW9ucy5hdHRh
Y2hDb21tZW50ID09PSAnYm9vbGVhbicpICYmIG9wdGlvbnMuYXR0YWNoQ29tbWVudDsKIAogICAg
ICAgICAgICAgaWYgKGV4dHJhLmxvYyAmJiBvcHRpb25zLnNvdXJjZSAhPT0gbnVsbCAmJiBvcHRp
b25zLnNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgZXh0cmEuc291cmNl
ID0gdG9TdHJpbmcob3B0aW9ucy5zb3VyY2UpOworICAgICAgICAgICAgICAgIGRlbGVnYXRlID0g
ZXh0ZW5kKGRlbGVnYXRlLCB7CisgICAgICAgICAgICAgICAgICAgICdwb3N0UHJvY2Vzcyc6IGZ1
bmN0aW9uIChub2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmxvYy5zb3VyY2Ug
PSB0b1N0cmluZyhvcHRpb25zLnNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAob3B0aW9ucy5zb3VyY2VUeXBlID09PSAnbW9k
dWxlJykgeworICAgICAgICAgICAgICAgIGV4dHJhLmlzTW9kdWxlID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50b2tlbnMgPT09ICdib29sZWFu
JyAmJiBvcHRpb25zLnRva2VucykgewogICAgICAgICAgICAgICAgIGV4dHJhLnRva2VucyA9IFtd
OwogICAgICAgICAgICAgfQpAQCAtMzcwMiw2ICs1MzE2LDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRy
dWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAg
ICAgcGF0Y2goKTsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHByb2dyYW0gPSBwYXJzZVBy
b2dyYW0oKTsKICAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEuY29tbWVudHMgIT09ICd1bmRl
ZmluZWQnKSB7CkBAIC0zNzE3LDYgKzUzMzIsNyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFy
c2VTb3VyY2VFbGVtZW50CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHRocm93
IGU7CiAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB1bnBhdGNoKCk7CiAgICAgICAg
ICAgICBleHRyYSA9IHt9OwogICAgICAgICB9CiAKQEAgLTM3MjQsNyArNTM0MCw3IEBAIHBhcnNl
U3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICB9CiAKICAgICAvLyBTeW5j
IHdpdGggKi5qc29uIG1hbmlmZXN0cy4KLSAgICBleHBvcnRzLnZlcnNpb24gPSAnMS4yLjInOwor
ICAgIGV4cG9ydHMudmVyc2lvbiA9ICcxLjEuMC1kZXYtaGFybW9ueSc7CiAKICAgICBleHBvcnRz
LnRva2VuaXplID0gdG9rZW5pemU7CiAKQEAgLTM3NTMsNCArNTM2OSwzIEBAIHBhcnNlU3RhdGVt
ZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICB9KCkpOwogCiB9KSk7Ci0vKiB2aW06
IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqLwpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRy
ZWUuanMJKHJldmlzaW9uIDE3OTY1MSkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlID0gZnVuY3Rpb24KICAgICAg
ICAgdmFyIGVzcHJpbWFTeW50YXhUcmVlID0gZXNwcmltYS5wYXJzZShzb3VyY2VUZXh0LCB7cmFu
Z2U6IHRydWV9KTsKICAgICAgICAgdGhpcy5fc3ludGF4VHJlZSA9IHRoaXMuX2NyZWF0ZUludGVy
bmFsU3ludGF4VHJlZShlc3ByaW1hU3ludGF4VHJlZSk7CiAgICAgICAgIHRoaXMuX3BhcnNlZFN1
Y2Nlc3NmdWxseSA9IHRydWU7CisgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHRo
aXMuX3N5bnRheFRyZWUsIHVuZGVmaW5lZCwgMikpOwogICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAg
ICAgICAgIHRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSA9IGZhbHNlOwogICAgICAgICB0aGlzLl9z
eW50YXhUcmVlID0gbnVsbDsKQEAgLTQ5LDcgKzUwLDggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5
bnRheFRyZWUuVHlwZVByb2ZpbAogCiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2Rl
VHlwZSA9IHsKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbjogImFzc2lnbm1lbnQtZXhwcmVzc2lv
biIsCi0gICAgQXJyYXlFeHByZXNzaW9uOiAiZXhwcmVzc2lvbiIsCisgICAgQXJyYXlFeHByZXNz
aW9uOiAiYXJyYXktZXhwcmVzc2lvbiIsCisgICAgQXJyYXlQYXR0ZXJuOiAiYXJyYXktcGF0dGVy
biIsCiAgICAgQmxvY2tTdGF0ZW1lbnQ6ICJibG9jay1zdGF0ZW1lbnQiLAogICAgIEJpbmFyeUV4
cHJlc3Npb246ICJiaW5hcnktZXhwcmVzc2lvbiIsCiAgICAgQnJlYWtTdGF0ZW1lbnQ6ICJicmVh
ay1zdGF0ZW1lbnQiLApAQCAtNjMsNiArNjUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4
VHJlZS5Ob2RlVHlwZSA9CiAgICAgRXhwcmVzc2lvblN0YXRlbWVudDogImV4cHJlc3Npb24tc3Rh
dGVtZW50IiwKICAgICBGb3JTdGF0ZW1lbnQ6ICJmb3Itc3RhdGVtZW50IiwKICAgICBGb3JJblN0
YXRlbWVudDogImZvci1pbi1zdGF0ZW1lbnQiLAorICAgIEZvck9mU3RhdGVtZW50OiAiZm9yLW9m
LXN0YXRlbWVudCIsCiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogImZ1bmN0aW9uLWRlY2xhcmF0
aW9uIiwKICAgICBGdW5jdGlvbkV4cHJlc3Npb246ICJmdW5jdGlvbi1leHByZXNzaW9uIiwKICAg
ICBJZGVudGlmaWVyOiAiaWRlbnRpZmllciIsCkBAIC03Miw3ICs3NSw4IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlID0KICAgICBMb2dpY2FsRXhwcmVzc2lvbjogImxv
Z2ljYWwtZXhwcmVzc2lvbiIsCiAgICAgTWVtYmVyRXhwcmVzc2lvbjogIm1lbWJlci1leHByZXNz
aW9uIiwKICAgICBOZXdFeHByZXNzaW9uOiAibmV3LWV4cHJlc3Npb24iLAotICAgIE9iamVjdEV4
cHJlc3Npb246ICJvYmplY3RFeHByZXNzaW9uIiwKKyAgICBPYmplY3RFeHByZXNzaW9uOiAib2Jq
ZWN0LWV4cHJlc3Npb24iLAorICAgIE9iamVjdFBhdHRlcm46ICJvYmplY3QtcGF0dGVybiIsCiAg
ICAgUHJvZ3JhbTogInByb2dyYW0iLAogICAgIFByb3BlcnR5OiAicHJvcGVydHkiLAogICAgIFJl
dHVyblN0YXRlbWVudDogInJldHVybi1zdGF0ZW1lbnQiLApAQCAtMjI5LDEyICsyMzMsMTQgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlIAogICAgICAgICAgICAgICAg
IGFsbFJlcXVlc3ROb2Rlcy5wdXNoKG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5WYXJp
YWJsZURlY2xhcmF0b3I6Ci0gICAgICAgICAgICAgICAgYWxsUmVxdWVzdHMucHVzaCh7Ci0gICAg
ICAgICAgICAgICAgICAgIHR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3I6IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLlR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IuTm9ybWFsRXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICAgc291cmNlSUQ6IHNvdXJjZUlELAotICAgICAgICAg
ICAgICAgICAgICBkaXZvdDogbm9kZS5pZC5yYW5nZVswXQotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgIGFsbFJlcXVlc3ROb2Rlcy5wdXNoKG5vZGUpOworICAgICAgICAgICAg
ICAgIGZvciAodmFyIGlkZW50aWZpZXIgb2YgdGhpcy5nYXRoZXJJZGVudGlmaWVyc0luVmFyRGVj
bGFyYXRvcihub2RlKSkgeworICAgICAgICAgICAgICAgICAgICBhbGxSZXF1ZXN0cy5wdXNoKHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3I6IFdlYklu
c3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLlR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IuTm9y
bWFsRXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUlEOiBzb3VyY2VJ
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpdm90OiBpZGVudGlmaWVyLnJhbmdlWzBdCisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBhbGxSZXF1ZXN0Tm9k
ZXMucHVzaChpZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI2Myw2ICsyNjksMzYgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlIAogICAgICAgICBSdW50aW1lQWdl
bnQuZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKGFsbFJlcXVlc3RzLCBoYW5k
bGVUeXBlcyk7CiAgICAgfSwKIAorICAgIGdhdGhlcklkZW50aWZpZXJzSW5WYXJEZWNsYXJhdG9y
OiBmdW5jdGlvbiAobm9kZSkgeworICAgICAgICBmdW5jdGlvbiBkZXN0cnVjdHVyZShub2RlKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcjoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFtub2RlXTsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlByb3BlcnR5OgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGVzdHJ1Y3R1cmUobm9kZS52YWx1ZSk7CisgICAgICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RQYXR0ZXJu
OgorICAgICAgICAgICAgICAgICAgICB2YXIgaWRlbnRpZmllcnMgPSBbXTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2Ygbm9kZS5wcm9wZXJ0aWVzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpZGVudGlmaWVyIG9mIGRlc3RydWN0dXJlKHByb3Bl
cnR5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50
aWZpZXIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBpZGVudGlmaWVyczsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLkFycmF5UGF0dGVybjoKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGlkZW50aWZpZXJzID0gW107CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVsZW1lbnQg
b2Ygbm9kZS5lbGVtZW50cykgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaWRl
bnRpZmllciBvZiBkZXN0cnVjdHVyZShlbGVtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyczsKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIlNo
b3VsZCBub3QgcmVhY2giKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuVmFyaWFibGVEZWNsYXJhdG9y
KTsKKyAgICAgICAgcmV0dXJuIGRlc3RydWN0dXJlKG5vZGUuaWQpOworICAgIH0sCisKICAgICAv
LyBQcml2YXRlCiAKICAgICBfZGVmYXVsdFBhcnNlclN0YXRlOiBmdW5jdGlvbigpIApAQCAtMjg4
LDYgKzMyNCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnByb3RvdHlwZSAKICAg
ICAgICAgICAgIHRoaXMuX3JlY3Vyc2Uobm9kZS5yaWdodCwgY2FsbGJhY2ssIHN0YXRlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLkFycmF5RXhwcmVzc2lvbjoKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5BcnJheVBhdHRlcm46CiAgICAgICAgICAgICBjYWxs
YmFjayhub2RlLCBzdGF0ZSk7CiAgICAgICAgICAgICB0aGlzLl9yZWN1cnNlQXJyYXkobm9kZS5l
bGVtZW50cywgY2FsbGJhY2ssIHN0YXRlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzQxLDYg
KzM3OCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnByb3RvdHlwZSAKICAgICAg
ICAgICAgIHRoaXMuX3JlY3Vyc2Uobm9kZS5ib2R5LCBjYWxsYmFjaywgc3RhdGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUu
Tm9kZVR5cGUuRm9ySW5TdGF0ZW1lbnQ6CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUuRm9yT2ZTdGF0ZW1lbnQ6CiAgICAgICAgICAgICBjYWxsYmFj
ayhub2RlLCBzdGF0ZSk7CiAgICAgICAgICAgICB0aGlzLl9yZWN1cnNlKG5vZGUubGVmdCwgY2Fs
bGJhY2ssIHN0YXRlKTsKICAgICAgICAgICAgIHRoaXMuX3JlY3Vyc2Uobm9kZS5yaWdodCwgY2Fs
bGJhY2ssIHN0YXRlKTsKQEAgLTM5MSw2ICs0MjksNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3lu
dGF4VHJlZS5wcm90b3R5cGUgCiAgICAgICAgICAgICB0aGlzLl9yZWN1cnNlQXJyYXkobm9kZS5h
cmd1bWVudHMsIGNhbGxiYWNrLCBzdGF0ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RFeHByZXNz
aW9uOgorICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBl
Lk9iamVjdFBhdHRlcm46CiAgICAgICAgICAgICBjYWxsYmFjayhub2RlLCBzdGF0ZSk7CiAgICAg
ICAgICAgICB0aGlzLl9yZWN1cnNlQXJyYXkobm9kZS5wcm9wZXJ0aWVzLCBjYWxsYmFjaywgc3Rh
dGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MDQsNiArNTQzLDEyIEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLnByb3RvdHlwZSAKICAgICAgICAgICAgICAgICBlbGVtZW50czog
bm9kZS5lbGVtZW50cy5tYXAodGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlLmJpbmQodGhp
cykpCiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIkFy
cmF5UGF0dGVybiI6CisgICAgICAgICAgICByZXN1bHQgPSB7CisgICAgICAgICAgICAgICAgdHlw
ZTogV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyYXlQYXR0ZXJuLAor
ICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBub2RlLmVsZW1lbnRzLm1hcCh0aGlzLl9jcmVhdGVJ
bnRlcm5hbFN5bnRheFRyZWUuYmluZCh0aGlzKSkKKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSAiQmxvY2tTdGF0ZW1lbnQiOgogICAgICAgICAgICAgcmVz
dWx0ID0gewogICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLkJsb2NrU3RhdGVtZW50LApAQCAtNTkyLDYgKzYzNywxNCBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAgICAgICAgICAgICAgICAgYm9keTog
dGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKG5vZGUuYm9keSkKICAgICAgICAgICAgIH07
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiRm9yT2ZTdGF0ZW1lbnQiOgorICAg
ICAgICAgICAgcmVzdWx0ID0geworICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZvck9mU3RhdGVtZW50LAorICAgICAgICAgICAgICAg
IGxlZnQ6IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShub2RlLmxlZnQpLAorICAgICAg
ICAgICAgICAgIHJpZ2h0OiB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUobm9kZS5yaWdo
dCksCisgICAgICAgICAgICAgICAgYm9keTogdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVl
KG5vZGUuYm9keSkKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSAiRnVuY3Rpb25EZWNsYXJhdGlvbiI6CiAgICAgICAgICAgICByZXN1bHQgPSB7CiAgICAg
ICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUu
RnVuY3Rpb25EZWNsYXJhdGlvbiwKQEAgLTY2Nyw2ICs3MjAsMTIgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdFN5bnRheFRyZWUucHJvdG90eXBlIAogICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IG5v
ZGUucHJvcGVydGllcy5tYXAodGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlLmJpbmQodGhp
cykpCiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIk9i
amVjdFBhdHRlcm4iOgorICAgICAgICAgICAgcmVzdWx0ID0geworICAgICAgICAgICAgICAgIHR5
cGU6IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLk9iamVjdFBhdHRlcm4s
CisgICAgICAgICAgICAgICAgcHJvcGVydGllczogbm9kZS5wcm9wZXJ0aWVzLm1hcCh0aGlzLl9j
cmVhdGVJbnRlcm5hbFN5bnRheFRyZWUuYmluZCh0aGlzKSkKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiUHJvZ3JhbSI6CiAgICAgICAgICAgICByZXN1
bHQgPSB7CiAgICAgICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRy
ZWUuTm9kZVR5cGUuUHJvZ3JhbSwKQEAgLTY3OSw2ICs3MzgsOCBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAgICAgICAgICAgICAgICAga2V5OiB0aGlzLl9jcmVh
dGVJbnRlcm5hbFN5bnRheFRyZWUobm9kZS5rZXkpLAogICAgICAgICAgICAgICAgIHZhbHVlOiB0
aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUobm9kZS52YWx1ZSksCiAgICAgICAgICAgICAg
ICAga2luZDogbm9kZS5raW5kCisgICAgICAgICAgICAgICAgLy9zaG9ydGhhbmQ6IG5vZGUuc2hv
cnRoYW5kLAorICAgICAgICAgICAgICAgIC8vY29tcHV0ZWQ6IG5vZGUuY29tcHV0ZWQKICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICBpZiAocmVzdWx0LmtpbmQgPT09ICJnZXQiIHx8IHJlc3Vs
dC5raW5kID09PSAic2V0IikgewogICAgICAgICAgICAgICAgIHJlc3VsdC52YWx1ZS5pc0dldHRl
ck9yU2V0dGVyID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246365</attachid>
            <date>2015-02-10 18:52:18 -0800</date>
            <delta_ts>2015-02-18 14:34:39 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>215885</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5OTEwKQorKysgU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE1LTAyLTEwICBTYWFtIEJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBtZXJnZSBpbiB1cHN0cmVhbSBFc3ByaW1hIHRvIHN1cHBvcnQg
cGFyc2luZyBtb3JlIG9mIEVTNgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQxMjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBtZXJnZXMgaW4gYSBuZXcgZXNwcmltYSB0aGF0IGhhcyBz
b21lIEVTNiBzdXBwb3J0LgorICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSBFUzYgc3VwcG9ydCBT
Y3JpcHRTeW50YXhUcmVlIG5vdyBoYXMgaXM6CisgICAgICAgIC0gRm9yT2YgbG9vcHMKKyAgICAg
ICAgLSBPYmplY3QgZGVzdHJ1Y3R1cmluZworICAgICAgICAtIEFycmF5IGRlc3RydWN0dXJpbmcK
KworICAgICAgICBTY3JpcHRTeW50YXhUcmVlIG5vdyB1c2VzIFN5bWJvbHMgZm9yIGlkZW50aWZ5
aW5nIEFTVCBub2RlIHR5cGVzCisgICAgICAgIGluc3RlYWQgb2Ygc3RyaW5ncy4gVGhpcyB3aWxs
IHByZXZlbnQgYW55IGRpcmVjdCB1c2FnZSBvZiBzdHJpbmdzIAorICAgICAgICBmb3Igbm9kZSB0
eXBlcyBpbnN0ZWFkIG9mIGEgZGlyZWN0IHByb3BlcnR5IGFjY2VzcyBvZmYgdGhlIAorICAgICAg
ICBTY3JpcHRTeW50YXhUcmVlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxz
byBkb2VzIHNvbWUgZ2FyZGVuaW5nIHdvcms6IAorICAgICAgICAtIFR5cGVUb2tlbkFubm90YXRv
ciBvbmx5IHdhbGtzIG92ZXIgdGhlIGluY29taW5nIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAg
ICBkYXRhIG9uY2UgdG8gYmUgbW9yZSBlZmZpY2llbnQuIAorICAgICAgICAtIFR5cGVUb2tlblZp
ZXcgaXMgbm93IHNtYXJ0ZXIgYWJvdXQgdXBkYXRpbmcgaXRzIGFzc29jaWF0ZWQgRE9NIG5vZGUK
KyAgICAgICAgICBvbmx5IGlmIGl0cyBkaXNwbGF5IG5hbWUgaGFzIGNoYW5nZWQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1R5cGVUb2tlbkFubm90YXRvci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJvdG90eXBlLl9pbnNlcnRU
eXBlVG9rZW5zRm9yRWFjaE5vZGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwv
RXNwcmltYS9lc3ByaW1hLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRTeW50YXhUcmVlLnByb3RvdHlwZS5nYXRoZXJJZGVudGlmaWVyc0luVmFyaWFibGVEZWNsYXJh
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUu
X3JlY3Vyc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90
eXBlLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvVHlwZVRva2VuVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UeXBlVG9rZW5W
aWV3LnByb3RvdHlwZS51cGRhdGUpOgorCiAyMDE1LTAyLTEwICBOaWtpdGEgVmFzaWx5ZXYgIDxu
dmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2UgY29sbGFw
c2VkIHNpZGViYXJzIHVuZHJhZ2dhYmxlCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3IuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVHlwZVRv
a2VuQW5ub3RhdG9yLmpzCShyZXZpc2lvbiAxNzk4NzMpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3IuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY4LDcgKzY4LDYgQEAgV2ViSW5zcGVjdG9yLlR5cGVUb2tlbkFubm90YXRvci5w
cm90b3R5cAogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYWxsTm9kZXNJ
blJhbmdlLmZvckVhY2godGhpcy5faW5zZXJ0VHlwZVRva2Vuc0ZvckVhY2hOb2RlLCB0aGlzKTsK
LSAgICAgICAgICAgIGFsbE5vZGVzSW5SYW5nZS5mb3JFYWNoKHRoaXMuX3VwZGF0ZVR5cGVUb2tl
bnNGb3JFYWNoTm9kZSwgdGhpcyk7CiAKICAgICAgICAgICAgIHZhciB0b3RhbFRpbWUgPSBEYXRl
Lm5vdygpIC0gc3RhcnRUaW1lOwogICAgICAgICAgICAgdmFyIHRpbWVvdXRUaW1lID0gTWF0aC5t
aW4oTWF0aC5tYXgoNzUwMCwgdG90YWxUaW1lKSwgOCAqIHRvdGFsVGltZSk7CkBAIC05Nyw2ICs5
Niw5IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJvdG90eXAKICAgICAgICAg
ICAgIGZvciAodmFyIHBhcmFtIG9mIG5vZGUucGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFwYXJhbS5hdHRhY2htZW50cy5fX3R5cGVUb2tlbiAmJiBwYXJhbS5hdHRhY2htZW50cy50eXBl
cyAmJiBwYXJhbS5hdHRhY2htZW50cy50eXBlcy5pc1ZhbGlkKQogICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9pbnNlcnRUb2tlbihwYXJhbS5yYW5nZVswXSwgcGFyYW0sIGZhbHNlLCBXZWJJbnNw
ZWN0b3IuVHlwZVRva2VuVmlldy5UaXRsZVR5cGUuVmFyaWFibGUsIHBhcmFtLm5hbWUpOworCisg
ICAgICAgICAgICAgICAgaWYgKHBhcmFtLmF0dGFjaG1lbnRzLl9fdHlwZVRva2VuKQorICAgICAg
ICAgICAgICAgICAgICBwYXJhbS5hdHRhY2htZW50cy5fX3R5cGVUb2tlbi51cGRhdGUocGFyYW0u
YXR0YWNobWVudHMudHlwZXMpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBJZiBh
IGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgcmV0dXJuIHR5cGUsIHRoZW4gZG9u
J3Qgc2hvdyBhIHJldHVybiB0eXBlIHVubGVzcyB3ZSB0aGluayBpdCdzIGEgY29uc3RydWN0b3Iu
CkBAIC0xMDYsMTMgKzEwOCwyMiBAQCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuQW5ub3RhdG9yLnBy
b3RvdHlwCiAKICAgICAgICAgICAgIGlmIChzY3JpcHRTeW50YXhUcmVlLmNvbnRhaW5zTm9uRW1w
dHlSZXR1cm5TdGF0ZW1lbnQobm9kZS5ib2R5KSB8fCAhV2ViSW5zcGVjdG9yLlR5cGVTZXQuZnJv
bVBheWxvYWQoZnVuY3Rpb25SZXR1cm5UeXBlKS5pc0NvbnRhaW5lZEluKFdlYkluc3BlY3Rvci5U
eXBlU2V0LlR5cGVCaXQuVW5kZWZpbmVkKSkgewogICAgICAgICAgICAgICAgIHZhciBmdW5jdGlv
bk5hbWUgPSBub2RlLmlkID8gbm9kZS5pZC5uYW1lIDogbnVsbDsKLSAgICAgICAgICAgICAgICB0
aGlzLl9pbnNlcnRUb2tlbihub2RlLmlzR2V0dGVyT3JTZXR0ZXIgPyBub2RlLmdldHRlck9yU2V0
dGVyUmFuZ2VbMF0gOiBub2RlLnJhbmdlWzBdLCBub2RlLAotICAgICAgICAgICAgICAgICAgICB0
cnVlLCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5UaXRsZVR5cGUuUmV0dXJuU3RhdGVtZW50
LCBmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydFRva2VuKG5vZGUu
aXNHZXR0ZXJPclNldHRlciA/IG5vZGUuZ2V0dGVyT3JTZXR0ZXJSYW5nZVswXSA6IG5vZGUucmFu
Z2VbMF0sIG5vZGUsIHRydWUsIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LlRpdGxlVHlwZS5S
ZXR1cm5TdGF0ZW1lbnQsIGZ1bmN0aW9uTmFtZSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChub2RlLmF0dGFjaG1lbnRzLl9fdHlwZVRva2VuKQorICAgICAgICAgICAgICAgIG5v
ZGUuYXR0YWNobWVudHMuX190eXBlVG9rZW4udXBkYXRlKG5vZGUuYXR0YWNobWVudHMucmV0dXJu
VHlwZXMpOworCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5WYXJpYWJsZURlY2xhcmF0b3I6Ci0gICAgICAgICAg
ICBpZiAoIW5vZGUuYXR0YWNobWVudHMuX190eXBlVG9rZW4gJiYgbm9kZS5hdHRhY2htZW50cy50
eXBlcyAmJiBub2RlLmF0dGFjaG1lbnRzLnR5cGVzLmlzVmFsaWQpCi0gICAgICAgICAgICAgICAg
dGhpcy5faW5zZXJ0VG9rZW4obm9kZS5pZC5yYW5nZVswXSwgbm9kZSwgZmFsc2UsIFdlYkluc3Bl
Y3Rvci5UeXBlVG9rZW5WaWV3LlRpdGxlVHlwZS5WYXJpYWJsZSwgbm9kZS5pZC5uYW1lKTsKKyAg
ICAgICAgICAgIHZhciBpZGVudGlmaWVycyA9IHNjcmlwdFN5bnRheFRyZWUuZ2F0aGVySWRlbnRp
ZmllcnNJblZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSk7CisgICAgICAgICAgICBmb3IgKGlkZW50
aWZpZXIgb2YgaWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlkZW50aWZpZXIu
YXR0YWNobWVudHMuX190eXBlVG9rZW4gJiYgaWRlbnRpZmllci5hdHRhY2htZW50cy50eXBlcyAm
JiBpZGVudGlmaWVyLmF0dGFjaG1lbnRzLnR5cGVzLmlzVmFsaWQpCisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuX2luc2VydFRva2VuKGlkZW50aWZpZXIucmFuZ2VbMF0sIGlkZW50aWZpZXIsIGZh
bHNlLCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5UaXRsZVR5cGUuVmFyaWFibGUsIGlkZW50
aWZpZXIubmFtZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllci5hdHRhY2htZW50
cy5fX3R5cGVUb2tlbikKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5hdHRhY2htZW50
cy5fX3R5cGVUb2tlbi51cGRhdGUoaWRlbnRpZmllci5hdHRhY2htZW50cy50eXBlcyk7CisgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDMsMjUgKzE1
NCw2IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IucHJvdG90eXAKICAgICAgICAg
dGhpcy5fdHlwZVRva2VuQm9va21hcmtzLnB1c2goYm9va21hcmspOwogICAgIH0sCiAKLSAgICBf
dXBkYXRlVHlwZVRva2Vuc0ZvckVhY2hOb2RlOiBmdW5jdGlvbihub2RlKQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChub2RlLnR5cGUpIHsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uOgotICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9uRXhwcmVzc2lvbjoK
LSAgICAgICAgICAgIG5vZGUucGFyYW1zLmZvckVhY2goZnVuY3Rpb24ocGFyYW0pIHsKLSAgICAg
ICAgICAgICAgICBpZiAocGFyYW0uYXR0YWNobWVudHMuX190eXBlVG9rZW4pCi0gICAgICAgICAg
ICAgICAgICAgIHBhcmFtLmF0dGFjaG1lbnRzLl9fdHlwZVRva2VuLnVwZGF0ZShwYXJhbS5hdHRh
Y2htZW50cy50eXBlcyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmIChub2RlLmF0
dGFjaG1lbnRzLl9fdHlwZVRva2VuKQotICAgICAgICAgICAgICAgIG5vZGUuYXR0YWNobWVudHMu
X190eXBlVG9rZW4udXBkYXRlKG5vZGUuYXR0YWNobWVudHMucmV0dXJuVHlwZXMpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUu
Tm9kZVR5cGUuVmFyaWFibGVEZWNsYXJhdG9yOgotICAgICAgICAgICAgaWYgKG5vZGUuYXR0YWNo
bWVudHMuX190eXBlVG9rZW4pCi0gICAgICAgICAgICAgICAgbm9kZS5hdHRhY2htZW50cy5fX3R5
cGVUb2tlbi51cGRhdGUobm9kZS5hdHRhY2htZW50cy50eXBlcyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgIH0sCi0KICAgICBfdHJhbnNsYXRlVG9PZmZzZXRBZnRlckZ1bmN0
aW9uUGFyYW1ldGVyTGlzdDogZnVuY3Rpb24obm9kZSwgb2Zmc2V0LCBzb3VyY2VTdHJpbmcpCiAg
ICAgewogICAgICAgICAvLyBUaGUgYXNzdW1wdGlvbiBoZXJlIGlzIHRoYXQgd2UgZ2V0IHRoZSBv
ZmZzZXQgc3RhcnRpbmcgYXQgdGhlIGZ1bmN0aW9uIGtleXdvcmQgKG9yIGFmdGVyIHRoZSBnZXQv
c2V0IGtleXdvcmRzKS4KSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0V4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Fc3ByaW1hL2VzcHJpbWEuanMJKHJldmlz
aW9uIDE3OTg3MykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVy
bmFsL0VzcHJpbWEvZXNwcmltYS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIC8q
CiAgIENvcHlyaWdodCAoQykgMjAxMyBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWls
LmNvbT4KICAgQ29weXJpZ2h0IChDKSAyMDEzIFRoYWRkZWUgVHlsIDx0aGFkZGVlLnR5bEBnbWFp
bC5jb20+Ci0gIENvcHlyaWdodCAoQykgMjAxMyBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdp
LmJlPgogICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBn
bWFpbC5jb20+CiAgIENvcHlyaWdodCAoQykgMjAxMiBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0Bx
aXdpLmJlPgogICBDb3B5cmlnaHQgKEMpIDIwMTIgSm9vc3QtV2ltIEJvZWtlc3RlaWpuIDxqb29z
dC13aW1AYm9la2VzdGVpam4ubmw+CkBAIC0zMSwxNyArMzAsNiBAQAogICBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKi8K
IAotLypqc2xpbnQgYml0d2lzZTp0cnVlIHBsdXNwbHVzOnRydWUgKi8KLS8qZ2xvYmFsIGVzcHJp
bWE6dHJ1ZSwgZGVmaW5lOnRydWUsIGV4cG9ydHM6dHJ1ZSwgd2luZG93OiB0cnVlLAotdGhyb3dF
cnJvclRvbGVyYW50OiB0cnVlLAotdGhyb3dFcnJvcjogdHJ1ZSwgZ2VuZXJhdGVTdGF0ZW1lbnQ6
IHRydWUsIHBlZWs6IHRydWUsCi1wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uOiB0cnVlLCBwYXJz
ZUJsb2NrOiB0cnVlLCBwYXJzZUV4cHJlc3Npb246IHRydWUsCi1wYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb246IHRydWUsIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uOiB0cnVlLAotcGFyc2VGdW5jdGlv
blNvdXJjZUVsZW1lbnRzOiB0cnVlLCBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcjogdHJ1ZSwKLXBh
cnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbjogdHJ1ZSwKLXBhcnNlVW5hcnlFeHByZXNzaW9uOiB0
cnVlLAotcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudDogdHJ1ZSAqLwot
CiAoZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHsKICAgICAndXNlIHN0cmljdCc7CiAKQEAgLTY3
LDYgKzU1LDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAg
ICAgICBNZXNzYWdlcywKICAgICAgICAgUmVnZXgsCiAgICAgICAgIFN5bnRheFRyZWVEZWxlZ2F0
ZSwKKyAgICAgICAgQ2xhc3NQcm9wZXJ0eVR5cGUsCiAgICAgICAgIHNvdXJjZSwKICAgICAgICAg
c3RyaWN0LAogICAgICAgICBpbmRleCwKQEAgLTg3LDcgKzc2LDggQEAgcGFyc2VTdGF0ZW1lbnQ6
IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICBOdW1lcmljTGl0ZXJhbDogNiwKICAg
ICAgICAgUHVuY3R1YXRvcjogNywKICAgICAgICAgU3RyaW5nTGl0ZXJhbDogOCwKLSAgICAgICAg
UmVndWxhckV4cHJlc3Npb246IDkKKyAgICAgICAgUmVndWxhckV4cHJlc3Npb246IDksCisgICAg
ICAgIFRlbXBsYXRlOiAxMAogICAgIH07CiAKICAgICBUb2tlbk5hbWUgPSB7fTsKQEAgLTExMywz
NyArMTAzLDU5IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAg
ICAgICAgICAgICAgICAgICAgJzw9JywgJzwnLCAnPicsICchPScsICchPT0nXTsKIAogICAgIFN5
bnRheCA9IHsKLSAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246ICdBc3NpZ25tZW50RXhwcmVz
c2lvbicsCiAgICAgICAgIEFycmF5RXhwcmVzc2lvbjogJ0FycmF5RXhwcmVzc2lvbicsCi0gICAg
ICAgIEJsb2NrU3RhdGVtZW50OiAnQmxvY2tTdGF0ZW1lbnQnLAorICAgICAgICBBcnJheVBhdHRl
cm46ICdBcnJheVBhdHRlcm4nLAorICAgICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogJ0Fy
cm93RnVuY3Rpb25FeHByZXNzaW9uJywKKyAgICAgICAgQXNzaWdubWVudEV4cHJlc3Npb246ICdB
c3NpZ25tZW50RXhwcmVzc2lvbicsCiAgICAgICAgIEJpbmFyeUV4cHJlc3Npb246ICdCaW5hcnlF
eHByZXNzaW9uJywKKyAgICAgICAgQmxvY2tTdGF0ZW1lbnQ6ICdCbG9ja1N0YXRlbWVudCcsCiAg
ICAgICAgIEJyZWFrU3RhdGVtZW50OiAnQnJlYWtTdGF0ZW1lbnQnLAogICAgICAgICBDYWxsRXhw
cmVzc2lvbjogJ0NhbGxFeHByZXNzaW9uJywKICAgICAgICAgQ2F0Y2hDbGF1c2U6ICdDYXRjaENs
YXVzZScsCisgICAgICAgIENsYXNzQm9keTogJ0NsYXNzQm9keScsCisgICAgICAgIENsYXNzRGVj
bGFyYXRpb246ICdDbGFzc0RlY2xhcmF0aW9uJywKKyAgICAgICAgQ2xhc3NFeHByZXNzaW9uOiAn
Q2xhc3NFeHByZXNzaW9uJywKKyAgICAgICAgQ29tcHJlaGVuc2lvbkJsb2NrOiAnQ29tcHJlaGVu
c2lvbkJsb2NrJywKKyAgICAgICAgQ29tcHJlaGVuc2lvbkV4cHJlc3Npb246ICdDb21wcmVoZW5z
aW9uRXhwcmVzc2lvbicsCiAgICAgICAgIENvbmRpdGlvbmFsRXhwcmVzc2lvbjogJ0NvbmRpdGlv
bmFsRXhwcmVzc2lvbicsCiAgICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiAnQ29udGludWVTdGF0
ZW1lbnQnLAotICAgICAgICBEb1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsCiAg
ICAgICAgIERlYnVnZ2VyU3RhdGVtZW50OiAnRGVidWdnZXJTdGF0ZW1lbnQnLAorICAgICAgICBE
b1doaWxlU3RhdGVtZW50OiAnRG9XaGlsZVN0YXRlbWVudCcsCiAgICAgICAgIEVtcHR5U3RhdGVt
ZW50OiAnRW1wdHlTdGF0ZW1lbnQnLAorICAgICAgICBFeHBvcnREZWNsYXJhdGlvbjogJ0V4cG9y
dERlY2xhcmF0aW9uJywKKyAgICAgICAgRXhwb3J0QmF0Y2hTcGVjaWZpZXI6ICdFeHBvcnRCYXRj
aFNwZWNpZmllcicsCisgICAgICAgIEV4cG9ydFNwZWNpZmllcjogJ0V4cG9ydFNwZWNpZmllcics
CiAgICAgICAgIEV4cHJlc3Npb25TdGF0ZW1lbnQ6ICdFeHByZXNzaW9uU3RhdGVtZW50JywKLSAg
ICAgICAgRm9yU3RhdGVtZW50OiAnRm9yU3RhdGVtZW50JywKICAgICAgICAgRm9ySW5TdGF0ZW1l
bnQ6ICdGb3JJblN0YXRlbWVudCcsCisgICAgICAgIEZvck9mU3RhdGVtZW50OiAnRm9yT2ZTdGF0
ZW1lbnQnLAorICAgICAgICBGb3JTdGF0ZW1lbnQ6ICdGb3JTdGF0ZW1lbnQnLAogICAgICAgICBG
dW5jdGlvbkRlY2xhcmF0aW9uOiAnRnVuY3Rpb25EZWNsYXJhdGlvbicsCiAgICAgICAgIEZ1bmN0
aW9uRXhwcmVzc2lvbjogJ0Z1bmN0aW9uRXhwcmVzc2lvbicsCiAgICAgICAgIElkZW50aWZpZXI6
ICdJZGVudGlmaWVyJywKICAgICAgICAgSWZTdGF0ZW1lbnQ6ICdJZlN0YXRlbWVudCcsCi0gICAg
ICAgIExpdGVyYWw6ICdMaXRlcmFsJywKKyAgICAgICAgSW1wb3J0RGVjbGFyYXRpb246ICdJbXBv
cnREZWNsYXJhdGlvbicsCisgICAgICAgIEltcG9ydERlZmF1bHRTcGVjaWZpZXI6ICdJbXBvcnRE
ZWZhdWx0U3BlY2lmaWVyJywKKyAgICAgICAgSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOiAnSW1w
b3J0TmFtZXNwYWNlU3BlY2lmaWVyJywKKyAgICAgICAgSW1wb3J0U3BlY2lmaWVyOiAnSW1wb3J0
U3BlY2lmaWVyJywKICAgICAgICAgTGFiZWxlZFN0YXRlbWVudDogJ0xhYmVsZWRTdGF0ZW1lbnQn
LAorICAgICAgICBMaXRlcmFsOiAnTGl0ZXJhbCcsCiAgICAgICAgIExvZ2ljYWxFeHByZXNzaW9u
OiAnTG9naWNhbEV4cHJlc3Npb24nLAogICAgICAgICBNZW1iZXJFeHByZXNzaW9uOiAnTWVtYmVy
RXhwcmVzc2lvbicsCisgICAgICAgIE1ldGhvZERlZmluaXRpb246ICdNZXRob2REZWZpbml0aW9u
JywKKyAgICAgICAgTW9kdWxlU3BlY2lmaWVyOiAnTW9kdWxlU3BlY2lmaWVyJywKICAgICAgICAg
TmV3RXhwcmVzc2lvbjogJ05ld0V4cHJlc3Npb24nLAogICAgICAgICBPYmplY3RFeHByZXNzaW9u
OiAnT2JqZWN0RXhwcmVzc2lvbicsCisgICAgICAgIE9iamVjdFBhdHRlcm46ICdPYmplY3RQYXR0
ZXJuJywKICAgICAgICAgUHJvZ3JhbTogJ1Byb2dyYW0nLAogICAgICAgICBQcm9wZXJ0eTogJ1By
b3BlcnR5JywKICAgICAgICAgUmV0dXJuU3RhdGVtZW50OiAnUmV0dXJuU3RhdGVtZW50JywKICAg
ICAgICAgU2VxdWVuY2VFeHByZXNzaW9uOiAnU2VxdWVuY2VFeHByZXNzaW9uJywKLSAgICAgICAg
U3dpdGNoU3RhdGVtZW50OiAnU3dpdGNoU3RhdGVtZW50JywKKyAgICAgICAgU3ByZWFkRWxlbWVu
dDogJ1NwcmVhZEVsZW1lbnQnLAogICAgICAgICBTd2l0Y2hDYXNlOiAnU3dpdGNoQ2FzZScsCisg
ICAgICAgIFN3aXRjaFN0YXRlbWVudDogJ1N3aXRjaFN0YXRlbWVudCcsCisgICAgICAgIFRhZ2dl
ZFRlbXBsYXRlRXhwcmVzc2lvbjogJ1RhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbicsCisgICAgICAg
IFRlbXBsYXRlRWxlbWVudDogJ1RlbXBsYXRlRWxlbWVudCcsCisgICAgICAgIFRlbXBsYXRlTGl0
ZXJhbDogJ1RlbXBsYXRlTGl0ZXJhbCcsCiAgICAgICAgIFRoaXNFeHByZXNzaW9uOiAnVGhpc0V4
cHJlc3Npb24nLAogICAgICAgICBUaHJvd1N0YXRlbWVudDogJ1Rocm93U3RhdGVtZW50JywKICAg
ICAgICAgVHJ5U3RhdGVtZW50OiAnVHJ5U3RhdGVtZW50JywKQEAgLTE1Miw3ICsxNjQsOCBAQCBw
YXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIFZhcmlhYmxl
RGVjbGFyYXRpb246ICdWYXJpYWJsZURlY2xhcmF0aW9uJywKICAgICAgICAgVmFyaWFibGVEZWNs
YXJhdG9yOiAnVmFyaWFibGVEZWNsYXJhdG9yJywKICAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6ICdX
aGlsZVN0YXRlbWVudCcsCi0gICAgICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRoU3RhdGVtZW50Jwor
ICAgICAgICBXaXRoU3RhdGVtZW50OiAnV2l0aFN0YXRlbWVudCcsCisgICAgICAgIFlpZWxkRXhw
cmVzc2lvbjogJ1lpZWxkRXhwcmVzc2lvbicKICAgICB9OwogCiAgICAgUHJvcGVydHlLaW5kID0g
ewpAQCAtMTYxLDQ3ICsxNzQsNzIgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNl
RWxlbWVudAogICAgICAgICBTZXQ6IDQKICAgICB9OwogCisgICAgQ2xhc3NQcm9wZXJ0eVR5cGUg
PSB7CisgICAgICAgICdzdGF0aWMnOiAnc3RhdGljJywKKyAgICAgICAgcHJvdG90eXBlOiAncHJv
dG90eXBlJworICAgIH07CisKICAgICAvLyBFcnJvciBtZXNzYWdlcyBzaG91bGQgYmUgaWRlbnRp
Y2FsIHRvIFY4LgogICAgIE1lc3NhZ2VzID0gewotICAgICAgICBVbmV4cGVjdGVkVG9rZW46ICAn
VW5leHBlY3RlZCB0b2tlbiAlMCcsCi0gICAgICAgIFVuZXhwZWN0ZWROdW1iZXI6ICAnVW5leHBl
Y3RlZCBudW1iZXInLAotICAgICAgICBVbmV4cGVjdGVkU3RyaW5nOiAgJ1VuZXhwZWN0ZWQgc3Ry
aW5nJywKLSAgICAgICAgVW5leHBlY3RlZElkZW50aWZpZXI6ICAnVW5leHBlY3RlZCBpZGVudGlm
aWVyJywKLSAgICAgICAgVW5leHBlY3RlZFJlc2VydmVkOiAgJ1VuZXhwZWN0ZWQgcmVzZXJ2ZWQg
d29yZCcsCi0gICAgICAgIFVuZXhwZWN0ZWRFT1M6ICAnVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQn
LAotICAgICAgICBOZXdsaW5lQWZ0ZXJUaHJvdzogICdJbGxlZ2FsIG5ld2xpbmUgYWZ0ZXIgdGhy
b3cnLAorICAgICAgICBVbmV4cGVjdGVkVG9rZW46ICdVbmV4cGVjdGVkIHRva2VuICUwJywKKyAg
ICAgICAgVW5leHBlY3RlZE51bWJlcjogJ1VuZXhwZWN0ZWQgbnVtYmVyJywKKyAgICAgICAgVW5l
eHBlY3RlZFN0cmluZzogJ1VuZXhwZWN0ZWQgc3RyaW5nJywKKyAgICAgICAgVW5leHBlY3RlZElk
ZW50aWZpZXI6ICdVbmV4cGVjdGVkIGlkZW50aWZpZXInLAorICAgICAgICBVbmV4cGVjdGVkUmVz
ZXJ2ZWQ6ICdVbmV4cGVjdGVkIHJlc2VydmVkIHdvcmQnLAorICAgICAgICBVbmV4cGVjdGVkVGVt
cGxhdGU6ICdVbmV4cGVjdGVkIHF1YXNpICUwJywKKyAgICAgICAgVW5leHBlY3RlZEVPUzogJ1Vu
ZXhwZWN0ZWQgZW5kIG9mIGlucHV0JywKKyAgICAgICAgTmV3bGluZUFmdGVyVGhyb3c6ICdJbGxl
Z2FsIG5ld2xpbmUgYWZ0ZXIgdGhyb3cnLAogICAgICAgICBJbnZhbGlkUmVnRXhwOiAnSW52YWxp
ZCByZWd1bGFyIGV4cHJlc3Npb24nLAotICAgICAgICBVbnRlcm1pbmF0ZWRSZWdFeHA6ICAnSW52
YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3NpbmcgLycsCi0gICAgICAgIEludmFsaWRMSFNJ
bkFzc2lnbm1lbnQ6ICAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBhc3NpZ25tZW50JywKLSAg
ICAgICAgSW52YWxpZExIU0luRm9ySW46ICAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBmb3It
aW4nLAorICAgICAgICBVbnRlcm1pbmF0ZWRSZWdFeHA6ICdJbnZhbGlkIHJlZ3VsYXIgZXhwcmVz
c2lvbjogbWlzc2luZyAvJywKKyAgICAgICAgSW52YWxpZExIU0luQXNzaWdubWVudDogJ0ludmFs
aWQgbGVmdC1oYW5kIHNpZGUgaW4gYXNzaWdubWVudCcsCisgICAgICAgIEludmFsaWRMSFNJbkZv
cm1hbHNMaXN0OiAnSW52YWxpZCBsZWZ0LWhhbmQgc2lkZSBpbiBmb3JtYWxzIGxpc3QnLAorICAg
ICAgICBJbnZhbGlkTEhTSW5Gb3JJbjogJ0ludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gZm9yLWlu
JywKICAgICAgICAgTXVsdGlwbGVEZWZhdWx0c0luU3dpdGNoOiAnTW9yZSB0aGFuIG9uZSBkZWZh
dWx0IGNsYXVzZSBpbiBzd2l0Y2ggc3RhdGVtZW50JywKLSAgICAgICAgTm9DYXRjaE9yRmluYWxs
eTogICdNaXNzaW5nIGNhdGNoIG9yIGZpbmFsbHkgYWZ0ZXIgdHJ5JywKKyAgICAgICAgTm9DYXRj
aE9yRmluYWxseTogJ01pc3NpbmcgY2F0Y2ggb3IgZmluYWxseSBhZnRlciB0cnknLAogICAgICAg
ICBVbmtub3duTGFiZWw6ICdVbmRlZmluZWQgbGFiZWwgXCclMFwnJywKICAgICAgICAgUmVkZWNs
YXJhdGlvbjogJyUwIFwnJTFcJyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkJywKICAgICAgICAg
SWxsZWdhbENvbnRpbnVlOiAnSWxsZWdhbCBjb250aW51ZSBzdGF0ZW1lbnQnLAogICAgICAgICBJ
bGxlZ2FsQnJlYWs6ICdJbGxlZ2FsIGJyZWFrIHN0YXRlbWVudCcsCisgICAgICAgIElsbGVnYWxE
dXBsaWNhdGVDbGFzc1Byb3BlcnR5OiAnSWxsZWdhbCBkdXBsaWNhdGUgcHJvcGVydHkgaW4gY2xh
c3MgZGVmaW5pdGlvbicsCisgICAgICAgIElsbGVnYWxDbGFzc0NvbnN0cnVjdG9yUHJvcGVydHk6
ICdJbGxlZ2FsIGNvbnN0cnVjdG9yIHByb3BlcnR5IGluIGNsYXNzIGRlZmluaXRpb24nLAogICAg
ICAgICBJbGxlZ2FsUmV0dXJuOiAnSWxsZWdhbCByZXR1cm4gc3RhdGVtZW50JywKLSAgICAgICAg
U3RyaWN0TW9kZVdpdGg6ICAnU3RyaWN0IG1vZGUgY29kZSBtYXkgbm90IGluY2x1ZGUgYSB3aXRo
IHN0YXRlbWVudCcsCi0gICAgICAgIFN0cmljdENhdGNoVmFyaWFibGU6ICAnQ2F0Y2ggdmFyaWFi
bGUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsCi0gICAgICAg
IFN0cmljdFZhck5hbWU6ICAnVmFyaWFibGUgbmFtZSBtYXkgbm90IGJlIGV2YWwgb3IgYXJndW1l
bnRzIGluIHN0cmljdCBtb2RlJywKLSAgICAgICAgU3RyaWN0UGFyYW1OYW1lOiAgJ1BhcmFtZXRl
ciBuYW1lIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJywK
KyAgICAgICAgSWxsZWdhbFlpZWxkOiAnSWxsZWdhbCB5aWVsZCBleHByZXNzaW9uJywKKyAgICAg
ICAgSWxsZWdhbFNwcmVhZDogJ0lsbGVnYWwgc3ByZWFkIGVsZW1lbnQnLAorICAgICAgICBTdHJp
Y3RNb2RlV2l0aDogJ1N0cmljdCBtb2RlIGNvZGUgbWF5IG5vdCBpbmNsdWRlIGEgd2l0aCBzdGF0
ZW1lbnQnLAorICAgICAgICBTdHJpY3RDYXRjaFZhcmlhYmxlOiAnQ2F0Y2ggdmFyaWFibGUgbWF5
IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsCisgICAgICAgIFN0cmlj
dFZhck5hbWU6ICdWYXJpYWJsZSBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4g
c3RyaWN0IG1vZGUnLAorICAgICAgICBTdHJpY3RQYXJhbU5hbWU6ICdQYXJhbWV0ZXIgbmFtZSBl
dmFsIG9yIGFyZ3VtZW50cyBpcyBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZScsCiAgICAgICAg
IFN0cmljdFBhcmFtRHVwZTogJ1N0cmljdCBtb2RlIGZ1bmN0aW9uIG1heSBub3QgaGF2ZSBkdXBs
aWNhdGUgcGFyYW1ldGVyIG5hbWVzJywKLSAgICAgICAgU3RyaWN0RnVuY3Rpb25OYW1lOiAgJ0Z1
bmN0aW9uIG5hbWUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScs
Ci0gICAgICAgIFN0cmljdE9jdGFsTGl0ZXJhbDogICdPY3RhbCBsaXRlcmFscyBhcmUgbm90IGFs
bG93ZWQgaW4gc3RyaWN0IG1vZGUuJywKLSAgICAgICAgU3RyaWN0RGVsZXRlOiAgJ0RlbGV0ZSBv
ZiBhbiB1bnF1YWxpZmllZCBpZGVudGlmaWVyIGluIHN0cmljdCBtb2RlLicsCi0gICAgICAgIFN0
cmljdER1cGxpY2F0ZVByb3BlcnR5OiAgJ0R1cGxpY2F0ZSBkYXRhIHByb3BlcnR5IGluIG9iamVj
dCBsaXRlcmFsIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlJywKLSAgICAgICAgQWNjZXNzb3JE
YXRhUHJvcGVydHk6ICAnT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBoYXZlIGRhdGEgYW5kIGFjY2Vz
c29yIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZScsCi0gICAgICAgIEFjY2Vzc29yR2V0U2V0
OiAgJ09iamVjdCBsaXRlcmFsIG1heSBub3QgaGF2ZSBtdWx0aXBsZSBnZXQvc2V0IGFjY2Vzc29y
cyB3aXRoIHRoZSBzYW1lIG5hbWUnLAotICAgICAgICBTdHJpY3RMSFNBc3NpZ25tZW50OiAgJ0Fz
c2lnbm1lbnQgdG8gZXZhbCBvciBhcmd1bWVudHMgaXMgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1v
ZGUnLAotICAgICAgICBTdHJpY3RMSFNQb3N0Zml4OiAgJ1Bvc3RmaXggaW5jcmVtZW50L2RlY3Jl
bWVudCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCBpbiBzdHJpY3QgbW9k
ZScsCi0gICAgICAgIFN0cmljdExIU1ByZWZpeDogICdQcmVmaXggaW5jcmVtZW50L2RlY3JlbWVu
dCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCBpbiBzdHJpY3QgbW9kZScs
Ci0gICAgICAgIFN0cmljdFJlc2VydmVkV29yZDogICdVc2Ugb2YgZnV0dXJlIHJlc2VydmVkIHdv
cmQgaW4gc3RyaWN0IG1vZGUnCisgICAgICAgIFBhcmFtZXRlckFmdGVyUmVzdFBhcmFtZXRlcjog
J1Jlc3QgcGFyYW1ldGVyIG11c3QgYmUgZmluYWwgcGFyYW1ldGVyIG9mIGFuIGFyZ3VtZW50IGxp
c3QnLAorICAgICAgICBEZWZhdWx0UmVzdFBhcmFtZXRlcjogJ1Jlc3QgcGFyYW1ldGVyIGNhbiBu
b3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUnLAorICAgICAgICBFbGVtZW50QWZ0ZXJTcHJlYWRFbGVt
ZW50OiAnU3ByZWFkIG11c3QgYmUgdGhlIGZpbmFsIGVsZW1lbnQgb2YgYW4gZWxlbWVudCBsaXN0
JywKKyAgICAgICAgT2JqZWN0UGF0dGVybkFzUmVzdFBhcmFtZXRlcjogJ0ludmFsaWQgcmVzdCBw
YXJhbWV0ZXInLAorICAgICAgICBPYmplY3RQYXR0ZXJuQXNTcHJlYWQ6ICdJbnZhbGlkIHNwcmVh
ZCBhcmd1bWVudCcsCisgICAgICAgIFN0cmljdEZ1bmN0aW9uTmFtZTogJ0Z1bmN0aW9uIG5hbWUg
bWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsCisgICAgICAgIFN0
cmljdE9jdGFsTGl0ZXJhbDogJ09jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJp
Y3QgbW9kZS4nLAorICAgICAgICBTdHJpY3REZWxldGU6ICdEZWxldGUgb2YgYW4gdW5xdWFsaWZp
ZWQgaWRlbnRpZmllciBpbiBzdHJpY3QgbW9kZS4nLAorICAgICAgICBTdHJpY3REdXBsaWNhdGVQ
cm9wZXJ0eTogJ0R1cGxpY2F0ZSBkYXRhIHByb3BlcnR5IGluIG9iamVjdCBsaXRlcmFsIG5vdCBh
bGxvd2VkIGluIHN0cmljdCBtb2RlJywKKyAgICAgICAgQWNjZXNzb3JEYXRhUHJvcGVydHk6ICdP
YmplY3QgbGl0ZXJhbCBtYXkgbm90IGhhdmUgZGF0YSBhbmQgYWNjZXNzb3IgcHJvcGVydHkgd2l0
aCB0aGUgc2FtZSBuYW1lJywKKyAgICAgICAgQWNjZXNzb3JHZXRTZXQ6ICdPYmplY3QgbGl0ZXJh
bCBtYXkgbm90IGhhdmUgbXVsdGlwbGUgZ2V0L3NldCBhY2Nlc3NvcnMgd2l0aCB0aGUgc2FtZSBu
YW1lJywKKyAgICAgICAgU3RyaWN0TEhTQXNzaWdubWVudDogJ0Fzc2lnbm1lbnQgdG8gZXZhbCBv
ciBhcmd1bWVudHMgaXMgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUnLAorICAgICAgICBTdHJp
Y3RMSFNQb3N0Zml4OiAnUG9zdGZpeCBpbmNyZW1lbnQvZGVjcmVtZW50IG1heSBub3QgaGF2ZSBl
dmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2RlJywKKyAgICAgICAgU3RyaWN0
TEhTUHJlZml4OiAnUHJlZml4IGluY3JlbWVudC9kZWNyZW1lbnQgbWF5IG5vdCBoYXZlIGV2YWwg
b3IgYXJndW1lbnRzIG9wZXJhbmQgaW4gc3RyaWN0IG1vZGUnLAorICAgICAgICBTdHJpY3RSZXNl
cnZlZFdvcmQ6ICdVc2Ugb2YgZnV0dXJlIHJlc2VydmVkIHdvcmQgaW4gc3RyaWN0IG1vZGUnLAor
ICAgICAgICBNaXNzaW5nRnJvbUNsYXVzZTogJ01pc3NpbmcgZnJvbSBjbGF1c2UnLAorICAgICAg
ICBOb0FzQWZ0ZXJJbXBvcnROYW1lc3BhY2U6ICdNaXNzaW5nIGFzIGFmdGVyIGltcG9ydCAqJywK
KyAgICAgICAgSW52YWxpZE1vZHVsZVNwZWNpZmllcjogJ0ludmFsaWQgbW9kdWxlIHNwZWNpZmll
cicsCisgICAgICAgIElsbGVnYWxJbXBvcnREZWNsYXJhdGlvbjogJ0lsbGVnYWwgaW1wb3J0IGRl
Y2xhcmF0aW9uJywKKyAgICAgICAgSWxsZWdhbEV4cG9ydERlY2xhcmF0aW9uOiAnSWxsZWdhbCBl
eHBvcnQgZGVjbGFyYXRpb24nLAorICAgICAgICBOb1VuaW50aWFsaXplZENvbnN0OiAnQ29uc3Qg
bXVzdCBiZSBpbml0aWFsaXplZCcsCisgICAgICAgIENvbXByZWhlbnNpb25SZXF1aXJlc0Jsb2Nr
OiAnQ29tcHJlaGVuc2lvbiBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGJsb2NrJywKKyAgICAgICAg
Q29tcHJlaGVuc2lvbkVycm9yOiAnQ29tcHJlaGVuc2lvbiBFcnJvcicsCisgICAgICAgIEVhY2hO
b3RBbGxvd2VkOiAnRWFjaCBpcyBub3Qgc3VwcG9ydGVkJwogICAgIH07CiAKICAgICAvLyBTZWUg
YWxzbyB0b29scy9nZW5lcmF0ZS11bmljb2RlLXJlZ2V4LnB5LgogICAgIFJlZ2V4ID0gewotICAg
ICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogbmV3IFJlZ0V4cCgnW1x4QUFceEI1XHhCQVx4
QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAy
RUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM4Nlx1MDM4
OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0
OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUw
NUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUw
NkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3
MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgw
MC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwOEEwXHUwOEEyLVx1MDhB
Q1x1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgtXHUwOTYxXHUwOTcxLVx1MDk3N1x1MDk3
OS1cdTA5N0ZcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5
QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlF
MVx1MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJB
LVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNc
dTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4
XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBc
dTBBRTFcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBc
dTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1
MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1
MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUw
QkI5XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1
MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0RcdTBDNThcdTBDNTlcdTBDNjBcdTBDNjFcdTBDODUtXHUw
QzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1
MENCRFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENGMlx1MEQwNS1cdTBEMENcdTBEMEUtXHUw
RDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ2MFx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBE
ODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUw
RTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBF
ODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBF
QTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJE
XHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5
LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1
QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4
RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0
QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEy
OEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUx
MkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1c
dTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdG
XHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE2RUUtXHUxNkYwXHUxNzAwLVx1MTcwQ1x1MTcw
RS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUx
NzcwXHUxNzgwLVx1MTdCM1x1MTdEN1x1MTdEQ1x1MTgyMC1cdTE4NzdcdTE4ODAtXHUxOEE4XHUx
OEFBXHUxOEIwLVx1MThGNVx1MTkwMC1cdTE5MUNcdTE5NTAtXHUxOTZEXHUxOTcwLVx1MTk3NFx1
MTk4MC1cdTE5QUJcdTE5QzEtXHUxOUM3XHUxQTAwLVx1MUExNlx1MUEyMC1cdTFBNTRcdTFBQTdc
dTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Qlx1MUI4My1cdTFCQTBcdTFCQUVcdTFCQUZcdTFCQkEt
XHUxQkU1XHUxQzAwLVx1MUMyM1x1MUM0RC1cdTFDNEZcdTFDNUEtXHUxQzdEXHUxQ0U5LVx1MUNF
Q1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYx
OC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFG
NUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFG
QzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1
MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5Q1x1
MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUy
MTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1
MjE0RVx1MjE2MC1cdTIxODhcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRc
dTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1c
dTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAt
XHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXHUyREQwLVx1MkRE
Nlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDUtXHUzMDA3XHUzMDIxLVx1MzAyOVx1MzAzMS1cdTMw
MzVcdTMwMzgtXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUz
MEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCQVx1MzFGMC1c
dTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ1x1QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZE
XHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJcdUE2NDAtXHVBNjZFXHVBNjdG
LVx1QTY5N1x1QTZBMC1cdUE2RUZcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qi1cdUE3
OEVcdUE3OTAtXHVBNzkzXHVBN0EwLVx1QTdBQVx1QTdGOC1cdUE4MDFcdUE4MDMtXHVBODA1XHVB
ODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1c
dUE4RjdcdUE4RkJcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQt
XHVBOUIyXHVBOUNGXHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYw
LVx1QUE3Nlx1QUE3QVx1QUE4MC1cdUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJE
XHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVBQjAx
LVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFC
MkVcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVG
OTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1
RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1
RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1c
dUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNB
XHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZE
Mi1cdUZGRDdcdUZGREEtXHVGRkRDXScpLAotICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0
OiBuZXcgUmVnRXhwKCdbXHhBQVx4QjVceEJBXHhDMC1ceEQ2XHhEOC1ceEY2XHhGOC1cdTAyQzFc
dTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDMwMC1cdTAzNzRcdTAzNzZc
dTAzNzdcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFc
dTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4My1cdTA0ODdcdTA0OEEtXHUwNTI3XHUwNTMx
LVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1OTEtXHUwNUJEXHUwNUJGXHUwNUMxXHUwNUMy
XHUwNUM0XHUwNUM1XHUwNUM3XHUwNUQwLVx1MDVFQVx1MDVGMC1cdTA1RjJcdTA2MTAtXHUwNjFB
XHUwNjIwLVx1MDY2OVx1MDY2RS1cdTA2RDNcdTA2RDUtXHUwNkRDXHUwNkRGLVx1MDZFOFx1MDZF
QS1cdTA2RkNcdTA2RkZcdTA3MTAtXHUwNzRBXHUwNzRELVx1MDdCMVx1MDdDMC1cdTA3RjVcdTA3
RkFcdTA4MDAtXHUwODJEXHUwODQwLVx1MDg1Qlx1MDhBMFx1MDhBMi1cdTA4QUNcdTA4RTQtXHUw
OEZFXHUwOTAwLVx1MDk2M1x1MDk2Ni1cdTA5NkZcdTA5NzEtXHUwOTc3XHUwOTc5LVx1MDk3Rlx1
MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1c
dTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDLVx1MDlDNFx1MDlDN1x1MDlDOFx1MDlDQi1c
dTA5Q0VcdTA5RDdcdTA5RENcdTA5RERcdTA5REYtXHUwOUUzXHUwOUU2LVx1MDlGMVx1MEEwMS1c
dTBBMDNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBc
dTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUw
QTQ3XHUwQTQ4XHUwQTRCLVx1MEE0RFx1MEE1MVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNjYtXHUw
QTc1XHUwQTgxLVx1MEE4M1x1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1
MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJDLVx1MEFDNVx1MEFDNy1c
dTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUQwXHUwQUUwLVx1MEFFM1x1MEFFNi1cdTBBRUZcdTBCMDEt
XHUwQjAzXHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMw
XHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzQy1cdTBCNDRcdTBCNDdcdTBCNDhcdTBCNEIt
XHUwQjREXHUwQjU2XHUwQjU3XHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2M1x1MEI2Ni1cdTBCNkZc
dTBCNzFcdTBCODJcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVc
dTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUw
QkFFLVx1MEJCOVx1MEJCRS1cdTBCQzJcdTBCQzYtXHUwQkM4XHUwQkNBLVx1MEJDRFx1MEJEMFx1
MEJEN1x1MEJFNi1cdTBCRUZcdTBDMDEtXHUwQzAzXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBc
dTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0QtXHUwQzQ0XHUwQzQ2
LVx1MEM0OFx1MEM0QS1cdTBDNERcdTBDNTVcdTBDNTZcdTBDNThcdTBDNTlcdTBDNjAtXHUwQzYz
XHUwQzY2LVx1MEM2Rlx1MEM4Mlx1MEM4M1x1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzky
LVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JDLVx1MENDNFx1MENDNi1cdTBD
QzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1XHUwQ0Q2XHUwQ0RFXHUwQ0UwLVx1MENFM1x1MENFNi1cdTBD
RUZcdTBDRjFcdTBDRjJcdTBEMDJcdTBEMDNcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQx
Mi1cdTBEM0FcdTBEM0QtXHUwRDQ0XHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENEVcdTBENTdcdTBE
NjAtXHUwRDYzXHUwRDY2LVx1MEQ2Rlx1MEQ3QS1cdTBEN0ZcdTBEODJcdTBEODNcdTBEODUtXHUw
RDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRENBXHUw
RENGLVx1MERENFx1MERENlx1MEREOC1cdTBEREZcdTBERjJcdTBERjNcdTBFMDEtXHUwRTNBXHUw
RTQwLVx1MEU0RVx1MEU1MC1cdTBFNTlcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBF
OEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBF
QTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUI5XHUwRUJCLVx1MEVCRFx1MEVDMC1cdTBFQzRcdTBF
QzZcdTBFQzgtXHUwRUNEXHUwRUQwLVx1MEVEOVx1MEVEQy1cdTBFREZcdTBGMDBcdTBGMThcdTBG
MTlcdTBGMjAtXHUwRjI5XHUwRjM1XHUwRjM3XHUwRjM5XHUwRjNFLVx1MEY0N1x1MEY0OS1cdTBG
NkNcdTBGNzEtXHUwRjg0XHUwRjg2LVx1MEY5N1x1MEY5OS1cdTBGQkNcdTBGQzZcdTEwMDAtXHUx
MDQ5XHUxMDUwLVx1MTA5RFx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUx
MEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1
MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgt
XHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEy
LVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzNUQtXHUxMzVGXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEz
RjRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUx
NkVFLVx1MTZGMFx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzE0XHUxNzIwLVx1MTczNFx1MTc0MC1c
dTE3NTNcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc3Mlx1MTc3M1x1MTc4MC1cdTE3RDNc
dTE3RDdcdTE3RENcdTE3RERcdTE3RTAtXHUxN0U5XHUxODBCLVx1MTgwRFx1MTgxMC1cdTE4MTlc
dTE4MjAtXHUxODc3XHUxODgwLVx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFDXHUxOTIw
LVx1MTkyQlx1MTkzMC1cdTE5M0JcdTE5NDYtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5
QUJcdTE5QjAtXHUxOUM5XHUxOUQwLVx1MTlEOVx1MUEwMC1cdTFBMUJcdTFBMjAtXHUxQTVFXHUx
QTYwLVx1MUE3Q1x1MUE3Ri1cdTFBODlcdTFBOTAtXHUxQTk5XHUxQUE3XHUxQjAwLVx1MUI0Qlx1
MUI1MC1cdTFCNTlcdTFCNkItXHUxQjczXHUxQjgwLVx1MUJGM1x1MUMwMC1cdTFDMzdcdTFDNDAt
XHUxQzQ5XHUxQzRELVx1MUM3RFx1MUNEMC1cdTFDRDJcdTFDRDQtXHUxQ0Y2XHUxRDAwLVx1MURF
Nlx1MURGQy1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFG
NTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFG
QjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUx
RkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjAwQ1x1
MjAwRFx1MjAzRlx1MjA0MFx1MjA1NFx1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOUNcdTIwRDAtXHUy
MERDXHUyMEUxXHUyMEU1LVx1MjBGMFx1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIx
MTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIx
M0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE2MC1cdTIxODhcdTJDMDAtXHUyQzJFXHUy
QzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0YzXHUyRDAwLVx1MkQyNVx1MkQyN1x1
MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEN0YtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRBOC1c
dTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENF
XHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJERTAtXHUyREZGXHUyRTJGXHUzMDA1LVx1MzAw
N1x1MzAyMS1cdTMwMkZcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMw
OTlcdTMwOUFcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUz
MTJEXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1
NEUwMC1cdTlGQ0NcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAt
XHVBNjJCXHVBNjQwLVx1QTY2Rlx1QTY3NC1cdUE2N0RcdUE2N0YtXHVBNjk3XHVBNjlGLVx1QTZG
MVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTc4RVx1QTc5MC1cdUE3OTNcdUE3
QTAtXHVBN0FBXHVBN0Y4LVx1QTgyN1x1QTg0MC1cdUE4NzNcdUE4ODAtXHVBOEM0XHVBOEQwLVx1
QThEOVx1QThFMC1cdUE4RjdcdUE4RkJcdUE5MDAtXHVBOTJEXHVBOTMwLVx1QTk1M1x1QTk2MC1c
dUE5N0NcdUE5ODAtXHVBOUMwXHVBOUNGLVx1QTlEOVx1QUEwMC1cdUFBMzZcdUFBNDAtXHVBQTRE
XHVBQTUwLVx1QUE1OVx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBN0JcdUFBODAtXHVBQUMyXHVBQURC
LVx1QUFERFx1QUFFMC1cdUFBRUZcdUFBRjItXHVBQUY2XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFC
MEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCQzAtXHVBQkVBXHVB
QkVDXHVBQkVEXHVBQkYwLVx1QUJGOVx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1
RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdc
dUZCMUQtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFc
dUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTIt
XHVGREM3XHVGREYwLVx1RkRGQlx1RkUwMC1cdUZFMEZcdUZFMjAtXHVGRTI2XHVGRTMzXHVGRTM0
XHVGRTRELVx1RkU0Rlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjEwLVx1RkYxOVx1RkYy
MS1cdUZGM0FcdUZGM0ZcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZG
Q0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdJykKKyAgICAgICAgTm9uQXNjaWlJ
ZGVudGlmaWVyU3RhcnQ6IG5ldyBSZWdFeHAoJ1tceGFhXHhiNVx4YmFceGMwLVx4ZDZceGQ4LVx4
ZjZceGY4LVx1MDJjMVx1MDJjNi1cdTAyZDFcdTAyZTAtXHUwMmU0XHUwMmVjXHUwMmVlXHUwMzcw
LVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3YS1cdTAzN2RcdTAzODZcdTAzODgtXHUwMzhhXHUwMzhj
XHUwMzhlLVx1MDNhMVx1MDNhMy1cdTAzZjVcdTAzZjctXHUwNDgxXHUwNDhhLVx1MDUyN1x1MDUz
MS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNWQwLVx1MDVlYVx1MDVmMC1cdTA1ZjJcdTA2
MjAtXHUwNjRhXHUwNjZlXHUwNjZmXHUwNjcxLVx1MDZkM1x1MDZkNVx1MDZlNVx1MDZlNlx1MDZl
ZVx1MDZlZlx1MDZmYS1cdTA2ZmNcdTA2ZmZcdTA3MTBcdTA3MTItXHUwNzJmXHUwNzRkLVx1MDdh
NVx1MDdiMVx1MDdjYS1cdTA3ZWFcdTA3ZjRcdTA3ZjVcdTA3ZmFcdTA4MDAtXHUwODE1XHUwODFh
XHUwODI0XHUwODI4XHUwODQwLVx1MDg1OFx1MDhhMFx1MDhhMi1cdTA4YWNcdTA5MDQtXHUwOTM5
XHUwOTNkXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1cdTA5NzdcdTA5NzktXHUwOTdmXHUwOTg1
LVx1MDk4Y1x1MDk4Zlx1MDk5MFx1MDk5My1cdTA5YThcdTA5YWEtXHUwOWIwXHUwOWIyXHUwOWI2
LVx1MDliOVx1MDliZFx1MDljZVx1MDlkY1x1MDlkZFx1MDlkZi1cdTA5ZTFcdTA5ZjBcdTA5ZjFc
dTBhMDUtXHUwYTBhXHUwYTBmXHUwYTEwXHUwYTEzLVx1MGEyOFx1MGEyYS1cdTBhMzBcdTBhMzJc
dTBhMzNcdTBhMzVcdTBhMzZcdTBhMzhcdTBhMzlcdTBhNTktXHUwYTVjXHUwYTVlXHUwYTcyLVx1
MGE3NFx1MGE4NS1cdTBhOGRcdTBhOGYtXHUwYTkxXHUwYTkzLVx1MGFhOFx1MGFhYS1cdTBhYjBc
dTBhYjJcdTBhYjNcdTBhYjUtXHUwYWI5XHUwYWJkXHUwYWQwXHUwYWUwXHUwYWUxXHUwYjA1LVx1
MGIwY1x1MGIwZlx1MGIxMFx1MGIxMy1cdTBiMjhcdTBiMmEtXHUwYjMwXHUwYjMyXHUwYjMzXHUw
YjM1LVx1MGIzOVx1MGIzZFx1MGI1Y1x1MGI1ZFx1MGI1Zi1cdTBiNjFcdTBiNzFcdTBiODNcdTBi
ODUtXHUwYjhhXHUwYjhlLVx1MGI5MFx1MGI5Mi1cdTBiOTVcdTBiOTlcdTBiOWFcdTBiOWNcdTBi
OWVcdTBiOWZcdTBiYTNcdTBiYTRcdTBiYTgtXHUwYmFhXHUwYmFlLVx1MGJiOVx1MGJkMFx1MGMw
NS1cdTBjMGNcdTBjMGUtXHUwYzEwXHUwYzEyLVx1MGMyOFx1MGMyYS1cdTBjMzNcdTBjMzUtXHUw
YzM5XHUwYzNkXHUwYzU4XHUwYzU5XHUwYzYwXHUwYzYxXHUwYzg1LVx1MGM4Y1x1MGM4ZS1cdTBj
OTBcdTBjOTItXHUwY2E4XHUwY2FhLVx1MGNiM1x1MGNiNS1cdTBjYjlcdTBjYmRcdTBjZGVcdTBj
ZTBcdTBjZTFcdTBjZjFcdTBjZjJcdTBkMDUtXHUwZDBjXHUwZDBlLVx1MGQxMFx1MGQxMi1cdTBk
M2FcdTBkM2RcdTBkNGVcdTBkNjBcdTBkNjFcdTBkN2EtXHUwZDdmXHUwZDg1LVx1MGQ5Nlx1MGQ5
YS1cdTBkYjFcdTBkYjMtXHUwZGJiXHUwZGJkXHUwZGMwLVx1MGRjNlx1MGUwMS1cdTBlMzBcdTBl
MzJcdTBlMzNcdTBlNDAtXHUwZTQ2XHUwZTgxXHUwZTgyXHUwZTg0XHUwZTg3XHUwZTg4XHUwZThh
XHUwZThkXHUwZTk0LVx1MGU5N1x1MGU5OS1cdTBlOWZcdTBlYTEtXHUwZWEzXHUwZWE1XHUwZWE3
XHUwZWFhXHUwZWFiXHUwZWFkLVx1MGViMFx1MGViMlx1MGViM1x1MGViZFx1MGVjMC1cdTBlYzRc
dTBlYzZcdTBlZGMtXHUwZWRmXHUwZjAwXHUwZjQwLVx1MGY0N1x1MGY0OS1cdTBmNmNcdTBmODgt
XHUwZjhjXHUxMDAwLVx1MTAyYVx1MTAzZlx1MTA1MC1cdTEwNTVcdTEwNWEtXHUxMDVkXHUxMDYx
XHUxMDY1XHUxMDY2XHUxMDZlLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEwOGVcdTEwYTAtXHUxMGM1
XHUxMGM3XHUxMGNkXHUxMGQwLVx1MTBmYVx1MTBmYy1cdTEyNDhcdTEyNGEtXHUxMjRkXHUxMjUw
LVx1MTI1Nlx1MTI1OFx1MTI1YS1cdTEyNWRcdTEyNjAtXHUxMjg4XHUxMjhhLVx1MTI4ZFx1MTI5
MC1cdTEyYjBcdTEyYjItXHUxMmI1XHUxMmI4LVx1MTJiZVx1MTJjMFx1MTJjMi1cdTEyYzVcdTEy
YzgtXHUxMmQ2XHUxMmQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVhXHUxMzgwLVx1
MTM4Zlx1MTNhMC1cdTEzZjRcdTE0MDEtXHUxNjZjXHUxNjZmLVx1MTY3Zlx1MTY4MS1cdTE2OWFc
dTE2YTAtXHUxNmVhXHUxNmVlLVx1MTZmMFx1MTcwMC1cdTE3MGNcdTE3MGUtXHUxNzExXHUxNzIw
LVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZjXHUxNzZlLVx1MTc3MFx1MTc4MC1cdTE3
YjNcdTE3ZDdcdTE3ZGNcdTE4MjAtXHUxODc3XHUxODgwLVx1MThhOFx1MThhYVx1MThiMC1cdTE4
ZjVcdTE5MDAtXHUxOTFjXHUxOTUwLVx1MTk2ZFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOWFiXHUx
OWMxLVx1MTljN1x1MWEwMC1cdTFhMTZcdTFhMjAtXHUxYTU0XHUxYWE3XHUxYjA1LVx1MWIzM1x1
MWI0NS1cdTFiNGJcdTFiODMtXHUxYmEwXHUxYmFlXHUxYmFmXHUxYmJhLVx1MWJlNVx1MWMwMC1c
dTFjMjNcdTFjNGQtXHUxYzRmXHUxYzVhLVx1MWM3ZFx1MWNlOS1cdTFjZWNcdTFjZWUtXHUxY2Yx
XHUxY2Y1XHUxY2Y2XHUxZDAwLVx1MWRiZlx1MWUwMC1cdTFmMTVcdTFmMTgtXHUxZjFkXHUxZjIw
LVx1MWY0NVx1MWY0OC1cdTFmNGRcdTFmNTAtXHUxZjU3XHUxZjU5XHUxZjViXHUxZjVkXHUxZjVm
LVx1MWY3ZFx1MWY4MC1cdTFmYjRcdTFmYjYtXHUxZmJjXHUxZmJlXHUxZmMyLVx1MWZjNFx1MWZj
Ni1cdTFmY2NcdTFmZDAtXHUxZmQzXHUxZmQ2LVx1MWZkYlx1MWZlMC1cdTFmZWNcdTFmZjItXHUx
ZmY0XHUxZmY2LVx1MWZmY1x1MjA3MVx1MjA3Zlx1MjA5MC1cdTIwOWNcdTIxMDJcdTIxMDdcdTIx
MGEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExZFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyYS1cdTIx
MmRcdTIxMmYtXHUyMTM5XHUyMTNjLVx1MjEzZlx1MjE0NS1cdTIxNDlcdTIxNGVcdTIxNjAtXHUy
MTg4XHUyYzAwLVx1MmMyZVx1MmMzMC1cdTJjNWVcdTJjNjAtXHUyY2U0XHUyY2ViLVx1MmNlZVx1
MmNmMlx1MmNmM1x1MmQwMC1cdTJkMjVcdTJkMjdcdTJkMmRcdTJkMzAtXHUyZDY3XHUyZDZmXHUy
ZDgwLVx1MmQ5Nlx1MmRhMC1cdTJkYTZcdTJkYTgtXHUyZGFlXHUyZGIwLVx1MmRiNlx1MmRiOC1c
dTJkYmVcdTJkYzAtXHUyZGM2XHUyZGM4LVx1MmRjZVx1MmRkMC1cdTJkZDZcdTJkZDgtXHUyZGRl
XHUyZTJmXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMjlcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAz
Y1x1MzA0MS1cdTMwOTZcdTMwOWQtXHUzMDlmXHUzMGExLVx1MzBmYVx1MzBmYy1cdTMwZmZcdTMx
MDUtXHUzMTJkXHUzMTMxLVx1MzE4ZVx1MzFhMC1cdTMxYmFcdTMxZjAtXHUzMWZmXHUzNDAwLVx1
NGRiNVx1NGUwMC1cdTlmY2NcdWEwMDAtXHVhNDhjXHVhNGQwLVx1YTRmZFx1YTUwMC1cdWE2MGNc
dWE2MTAtXHVhNjFmXHVhNjJhXHVhNjJiXHVhNjQwLVx1YTY2ZVx1YTY3Zi1cdWE2OTdcdWE2YTAt
XHVhNmVmXHVhNzE3LVx1YTcxZlx1YTcyMi1cdWE3ODhcdWE3OGItXHVhNzhlXHVhNzkwLVx1YTc5
M1x1YTdhMC1cdWE3YWFcdWE3ZjgtXHVhODAxXHVhODAzLVx1YTgwNVx1YTgwNy1cdWE4MGFcdWE4
MGMtXHVhODIyXHVhODQwLVx1YTg3M1x1YTg4Mi1cdWE4YjNcdWE4ZjItXHVhOGY3XHVhOGZiXHVh
OTBhLVx1YTkyNVx1YTkzMC1cdWE5NDZcdWE5NjAtXHVhOTdjXHVhOTg0LVx1YTliMlx1YTljZlx1
YWEwMC1cdWFhMjhcdWFhNDAtXHVhYTQyXHVhYTQ0LVx1YWE0Ylx1YWE2MC1cdWFhNzZcdWFhN2Fc
dWFhODAtXHVhYWFmXHVhYWIxXHVhYWI1XHVhYWI2XHVhYWI5LVx1YWFiZFx1YWFjMFx1YWFjMlx1
YWFkYi1cdWFhZGRcdWFhZTAtXHVhYWVhXHVhYWYyLVx1YWFmNFx1YWIwMS1cdWFiMDZcdWFiMDkt
XHVhYjBlXHVhYjExLVx1YWIxNlx1YWIyMC1cdWFiMjZcdWFiMjgtXHVhYjJlXHVhYmMwLVx1YWJl
Mlx1YWMwMC1cdWQ3YTNcdWQ3YjAtXHVkN2M2XHVkN2NiLVx1ZDdmYlx1ZjkwMC1cdWZhNmRcdWZh
NzAtXHVmYWQ5XHVmYjAwLVx1ZmIwNlx1ZmIxMy1cdWZiMTdcdWZiMWRcdWZiMWYtXHVmYjI4XHVm
YjJhLVx1ZmIzNlx1ZmIzOC1cdWZiM2NcdWZiM2VcdWZiNDBcdWZiNDFcdWZiNDNcdWZiNDRcdWZi
NDYtXHVmYmIxXHVmYmQzLVx1ZmQzZFx1ZmQ1MC1cdWZkOGZcdWZkOTItXHVmZGM3XHVmZGYwLVx1
ZmRmYlx1ZmU3MC1cdWZlNzRcdWZlNzYtXHVmZWZjXHVmZjIxLVx1ZmYzYVx1ZmY0MS1cdWZmNWFc
dWZmNjYtXHVmZmJlXHVmZmMyLVx1ZmZjN1x1ZmZjYS1cdWZmY2ZcdWZmZDItXHVmZmQ3XHVmZmRh
LVx1ZmZkY10nKSwKKyAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyUGFydDogbmV3IFJlZ0V4cCgn
W1x4YWFceGI1XHhiYVx4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHUwMmMxXHUwMmM2LVx1MDJkMVx1
MDJlMC1cdTAyZTRcdTAyZWNcdTAyZWVcdTAzMDAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdhLVx1
MDM3ZFx1MDM4Nlx1MDM4OC1cdTAzOGFcdTAzOGNcdTAzOGUtXHUwM2ExXHUwM2EzLVx1MDNmNVx1
MDNmNy1cdTA0ODFcdTA0ODMtXHUwNDg3XHUwNDhhLVx1MDUyN1x1MDUzMS1cdTA1NTZcdTA1NTlc
dTA1NjEtXHUwNTg3XHUwNTkxLVx1MDViZFx1MDViZlx1MDVjMVx1MDVjMlx1MDVjNFx1MDVjNVx1
MDVjN1x1MDVkMC1cdTA1ZWFcdTA1ZjAtXHUwNWYyXHUwNjEwLVx1MDYxYVx1MDYyMC1cdTA2Njlc
dTA2NmUtXHUwNmQzXHUwNmQ1LVx1MDZkY1x1MDZkZi1cdTA2ZThcdTA2ZWEtXHUwNmZjXHUwNmZm
XHUwNzEwLVx1MDc0YVx1MDc0ZC1cdTA3YjFcdTA3YzAtXHUwN2Y1XHUwN2ZhXHUwODAwLVx1MDgy
ZFx1MDg0MC1cdTA4NWJcdTA4YTBcdTA4YTItXHUwOGFjXHUwOGU0LVx1MDhmZVx1MDkwMC1cdTA5
NjNcdTA5NjYtXHUwOTZmXHUwOTcxLVx1MDk3N1x1MDk3OS1cdTA5N2ZcdTA5ODEtXHUwOTgzXHUw
OTg1LVx1MDk4Y1x1MDk4Zlx1MDk5MFx1MDk5My1cdTA5YThcdTA5YWEtXHUwOWIwXHUwOWIyXHUw
OWI2LVx1MDliOVx1MDliYy1cdTA5YzRcdTA5YzdcdTA5YzhcdTA5Y2ItXHUwOWNlXHUwOWQ3XHUw
OWRjXHUwOWRkXHUwOWRmLVx1MDllM1x1MDllNi1cdTA5ZjFcdTBhMDEtXHUwYTAzXHUwYTA1LVx1
MGEwYVx1MGEwZlx1MGExMFx1MGExMy1cdTBhMjhcdTBhMmEtXHUwYTMwXHUwYTMyXHUwYTMzXHUw
YTM1XHUwYTM2XHUwYTM4XHUwYTM5XHUwYTNjXHUwYTNlLVx1MGE0Mlx1MGE0N1x1MGE0OFx1MGE0
Yi1cdTBhNGRcdTBhNTFcdTBhNTktXHUwYTVjXHUwYTVlXHUwYTY2LVx1MGE3NVx1MGE4MS1cdTBh
ODNcdTBhODUtXHUwYThkXHUwYThmLVx1MGE5MVx1MGE5My1cdTBhYThcdTBhYWEtXHUwYWIwXHUw
YWIyXHUwYWIzXHUwYWI1LVx1MGFiOVx1MGFiYy1cdTBhYzVcdTBhYzctXHUwYWM5XHUwYWNiLVx1
MGFjZFx1MGFkMFx1MGFlMC1cdTBhZTNcdTBhZTYtXHUwYWVmXHUwYjAxLVx1MGIwM1x1MGIwNS1c
dTBiMGNcdTBiMGZcdTBiMTBcdTBiMTMtXHUwYjI4XHUwYjJhLVx1MGIzMFx1MGIzMlx1MGIzM1x1
MGIzNS1cdTBiMzlcdTBiM2MtXHUwYjQ0XHUwYjQ3XHUwYjQ4XHUwYjRiLVx1MGI0ZFx1MGI1Nlx1
MGI1N1x1MGI1Y1x1MGI1ZFx1MGI1Zi1cdTBiNjNcdTBiNjYtXHUwYjZmXHUwYjcxXHUwYjgyXHUw
YjgzXHUwYjg1LVx1MGI4YVx1MGI4ZS1cdTBiOTBcdTBiOTItXHUwYjk1XHUwYjk5XHUwYjlhXHUw
YjljXHUwYjllXHUwYjlmXHUwYmEzXHUwYmE0XHUwYmE4LVx1MGJhYVx1MGJhZS1cdTBiYjlcdTBi
YmUtXHUwYmMyXHUwYmM2LVx1MGJjOFx1MGJjYS1cdTBiY2RcdTBiZDBcdTBiZDdcdTBiZTYtXHUw
YmVmXHUwYzAxLVx1MGMwM1x1MGMwNS1cdTBjMGNcdTBjMGUtXHUwYzEwXHUwYzEyLVx1MGMyOFx1
MGMyYS1cdTBjMzNcdTBjMzUtXHUwYzM5XHUwYzNkLVx1MGM0NFx1MGM0Ni1cdTBjNDhcdTBjNGEt
XHUwYzRkXHUwYzU1XHUwYzU2XHUwYzU4XHUwYzU5XHUwYzYwLVx1MGM2M1x1MGM2Ni1cdTBjNmZc
dTBjODJcdTBjODNcdTBjODUtXHUwYzhjXHUwYzhlLVx1MGM5MFx1MGM5Mi1cdTBjYThcdTBjYWEt
XHUwY2IzXHUwY2I1LVx1MGNiOVx1MGNiYy1cdTBjYzRcdTBjYzYtXHUwY2M4XHUwY2NhLVx1MGNj
ZFx1MGNkNVx1MGNkNlx1MGNkZVx1MGNlMC1cdTBjZTNcdTBjZTYtXHUwY2VmXHUwY2YxXHUwY2Yy
XHUwZDAyXHUwZDAzXHUwZDA1LVx1MGQwY1x1MGQwZS1cdTBkMTBcdTBkMTItXHUwZDNhXHUwZDNk
LVx1MGQ0NFx1MGQ0Ni1cdTBkNDhcdTBkNGEtXHUwZDRlXHUwZDU3XHUwZDYwLVx1MGQ2M1x1MGQ2
Ni1cdTBkNmZcdTBkN2EtXHUwZDdmXHUwZDgyXHUwZDgzXHUwZDg1LVx1MGQ5Nlx1MGQ5YS1cdTBk
YjFcdTBkYjMtXHUwZGJiXHUwZGJkXHUwZGMwLVx1MGRjNlx1MGRjYVx1MGRjZi1cdTBkZDRcdTBk
ZDZcdTBkZDgtXHUwZGRmXHUwZGYyXHUwZGYzXHUwZTAxLVx1MGUzYVx1MGU0MC1cdTBlNGVcdTBl
NTAtXHUwZTU5XHUwZTgxXHUwZTgyXHUwZTg0XHUwZTg3XHUwZTg4XHUwZThhXHUwZThkXHUwZTk0
LVx1MGU5N1x1MGU5OS1cdTBlOWZcdTBlYTEtXHUwZWEzXHUwZWE1XHUwZWE3XHUwZWFhXHUwZWFi
XHUwZWFkLVx1MGViOVx1MGViYi1cdTBlYmRcdTBlYzAtXHUwZWM0XHUwZWM2XHUwZWM4LVx1MGVj
ZFx1MGVkMC1cdTBlZDlcdTBlZGMtXHUwZWRmXHUwZjAwXHUwZjE4XHUwZjE5XHUwZjIwLVx1MGYy
OVx1MGYzNVx1MGYzN1x1MGYzOVx1MGYzZS1cdTBmNDdcdTBmNDktXHUwZjZjXHUwZjcxLVx1MGY4
NFx1MGY4Ni1cdTBmOTdcdTBmOTktXHUwZmJjXHUwZmM2XHUxMDAwLVx1MTA0OVx1MTA1MC1cdTEw
OWRcdTEwYTAtXHUxMGM1XHUxMGM3XHUxMGNkXHUxMGQwLVx1MTBmYVx1MTBmYy1cdTEyNDhcdTEy
NGEtXHUxMjRkXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1YS1cdTEyNWRcdTEyNjAtXHUxMjg4XHUx
MjhhLVx1MTI4ZFx1MTI5MC1cdTEyYjBcdTEyYjItXHUxMmI1XHUxMmI4LVx1MTJiZVx1MTJjMFx1
MTJjMi1cdTEyYzVcdTEyYzgtXHUxMmQ2XHUxMmQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgt
XHUxMzVhXHUxMzVkLVx1MTM1Zlx1MTM4MC1cdTEzOGZcdTEzYTAtXHUxM2Y0XHUxNDAxLVx1MTY2
Y1x1MTY2Zi1cdTE2N2ZcdTE2ODEtXHUxNjlhXHUxNmEwLVx1MTZlYVx1MTZlZS1cdTE2ZjBcdTE3
MDAtXHUxNzBjXHUxNzBlLVx1MTcxNFx1MTcyMC1cdTE3MzRcdTE3NDAtXHUxNzUzXHUxNzYwLVx1
MTc2Y1x1MTc2ZS1cdTE3NzBcdTE3NzJcdTE3NzNcdTE3ODAtXHUxN2QzXHUxN2Q3XHUxN2RjXHUx
N2RkXHUxN2UwLVx1MTdlOVx1MTgwYi1cdTE4MGRcdTE4MTAtXHUxODE5XHUxODIwLVx1MTg3N1x1
MTg4MC1cdTE4YWFcdTE4YjAtXHUxOGY1XHUxOTAwLVx1MTkxY1x1MTkyMC1cdTE5MmJcdTE5MzAt
XHUxOTNiXHUxOTQ2LVx1MTk2ZFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOWFiXHUxOWIwLVx1MTlj
OVx1MTlkMC1cdTE5ZDlcdTFhMDAtXHUxYTFiXHUxYTIwLVx1MWE1ZVx1MWE2MC1cdTFhN2NcdTFh
N2YtXHUxYTg5XHUxYTkwLVx1MWE5OVx1MWFhN1x1MWIwMC1cdTFiNGJcdTFiNTAtXHUxYjU5XHUx
YjZiLVx1MWI3M1x1MWI4MC1cdTFiZjNcdTFjMDAtXHUxYzM3XHUxYzQwLVx1MWM0OVx1MWM0ZC1c
dTFjN2RcdTFjZDAtXHUxY2QyXHUxY2Q0LVx1MWNmNlx1MWQwMC1cdTFkZTZcdTFkZmMtXHUxZjE1
XHUxZjE4LVx1MWYxZFx1MWYyMC1cdTFmNDVcdTFmNDgtXHUxZjRkXHUxZjUwLVx1MWY1N1x1MWY1
OVx1MWY1Ylx1MWY1ZFx1MWY1Zi1cdTFmN2RcdTFmODAtXHUxZmI0XHUxZmI2LVx1MWZiY1x1MWZi
ZVx1MWZjMi1cdTFmYzRcdTFmYzYtXHUxZmNjXHUxZmQwLVx1MWZkM1x1MWZkNi1cdTFmZGJcdTFm
ZTAtXHUxZmVjXHUxZmYyLVx1MWZmNFx1MWZmNi1cdTFmZmNcdTIwMGNcdTIwMGRcdTIwM2ZcdTIw
NDBcdTIwNTRcdTIwNzFcdTIwN2ZcdTIwOTAtXHUyMDljXHUyMGQwLVx1MjBkY1x1MjBlMVx1MjBl
NS1cdTIwZjBcdTIxMDJcdTIxMDdcdTIxMGEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExZFx1MjEy
NFx1MjEyNlx1MjEyOFx1MjEyYS1cdTIxMmRcdTIxMmYtXHUyMTM5XHUyMTNjLVx1MjEzZlx1MjE0
NS1cdTIxNDlcdTIxNGVcdTIxNjAtXHUyMTg4XHUyYzAwLVx1MmMyZVx1MmMzMC1cdTJjNWVcdTJj
NjAtXHUyY2U0XHUyY2ViLVx1MmNmM1x1MmQwMC1cdTJkMjVcdTJkMjdcdTJkMmRcdTJkMzAtXHUy
ZDY3XHUyZDZmXHUyZDdmLVx1MmQ5Nlx1MmRhMC1cdTJkYTZcdTJkYTgtXHUyZGFlXHUyZGIwLVx1
MmRiNlx1MmRiOC1cdTJkYmVcdTJkYzAtXHUyZGM2XHUyZGM4LVx1MmRjZVx1MmRkMC1cdTJkZDZc
dTJkZDgtXHUyZGRlXHUyZGUwLVx1MmRmZlx1MmUyZlx1MzAwNS1cdTMwMDdcdTMwMjEtXHUzMDJm
XHUzMDMxLVx1MzAzNVx1MzAzOC1cdTMwM2NcdTMwNDEtXHUzMDk2XHUzMDk5XHUzMDlhXHUzMDlk
LVx1MzA5Zlx1MzBhMS1cdTMwZmFcdTMwZmMtXHUzMGZmXHUzMTA1LVx1MzEyZFx1MzEzMS1cdTMx
OGVcdTMxYTAtXHUzMWJhXHUzMWYwLVx1MzFmZlx1MzQwMC1cdTRkYjVcdTRlMDAtXHU5ZmNjXHVh
MDAwLVx1YTQ4Y1x1YTRkMC1cdWE0ZmRcdWE1MDAtXHVhNjBjXHVhNjEwLVx1YTYyYlx1YTY0MC1c
dWE2NmZcdWE2NzQtXHVhNjdkXHVhNjdmLVx1YTY5N1x1YTY5Zi1cdWE2ZjFcdWE3MTctXHVhNzFm
XHVhNzIyLVx1YTc4OFx1YTc4Yi1cdWE3OGVcdWE3OTAtXHVhNzkzXHVhN2EwLVx1YTdhYVx1YTdm
OC1cdWE4MjdcdWE4NDAtXHVhODczXHVhODgwLVx1YThjNFx1YThkMC1cdWE4ZDlcdWE4ZTAtXHVh
OGY3XHVhOGZiXHVhOTAwLVx1YTkyZFx1YTkzMC1cdWE5NTNcdWE5NjAtXHVhOTdjXHVhOTgwLVx1
YTljMFx1YTljZi1cdWE5ZDlcdWFhMDAtXHVhYTM2XHVhYTQwLVx1YWE0ZFx1YWE1MC1cdWFhNTlc
dWFhNjAtXHVhYTc2XHVhYTdhXHVhYTdiXHVhYTgwLVx1YWFjMlx1YWFkYi1cdWFhZGRcdWFhZTAt
XHVhYWVmXHVhYWYyLVx1YWFmNlx1YWIwMS1cdWFiMDZcdWFiMDktXHVhYjBlXHVhYjExLVx1YWIx
Nlx1YWIyMC1cdWFiMjZcdWFiMjgtXHVhYjJlXHVhYmMwLVx1YWJlYVx1YWJlY1x1YWJlZFx1YWJm
MC1cdWFiZjlcdWFjMDAtXHVkN2EzXHVkN2IwLVx1ZDdjNlx1ZDdjYi1cdWQ3ZmJcdWY5MDAtXHVm
YTZkXHVmYTcwLVx1ZmFkOVx1ZmIwMC1cdWZiMDZcdWZiMTMtXHVmYjE3XHVmYjFkLVx1ZmIyOFx1
ZmIyYS1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwXHVmYjQxXHVmYjQzXHVmYjQ0XHVm
YjQ2LVx1ZmJiMVx1ZmJkMy1cdWZkM2RcdWZkNTAtXHVmZDhmXHVmZDkyLVx1ZmRjN1x1ZmRmMC1c
dWZkZmJcdWZlMDAtXHVmZTBmXHVmZTIwLVx1ZmUyNlx1ZmUzM1x1ZmUzNFx1ZmU0ZC1cdWZlNGZc
dWZlNzAtXHVmZTc0XHVmZTc2LVx1ZmVmY1x1ZmYxMC1cdWZmMTlcdWZmMjEtXHVmZjNhXHVmZjNm
XHVmZjQxLVx1ZmY1YVx1ZmY2Ni1cdWZmYmVcdWZmYzItXHVmZmM3XHVmZmNhLVx1ZmZjZlx1ZmZk
Mi1cdWZmZDdcdWZmZGEtXHVmZmRjXScpCiAgICAgfTsKIAogICAgIC8vIEVuc3VyZSB0aGUgY29u
ZGl0aW9uIGlzIHRydWUsIG90aGVyd2lzZSB0aHJvdyBhbiBlcnJvci4KQEAgLTIxNiw2ICsyNTQs
MzEgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICB9
CiAgICAgfQogCisgICAgZnVuY3Rpb24gU3RyaW5nTWFwKCkgeworICAgICAgICB0aGlzLiRkYXRh
ID0ge307CisgICAgfQorCisgICAgU3RyaW5nTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAo
a2V5KSB7CisgICAgICAgIGtleSA9ICckJyArIGtleTsKKyAgICAgICAgcmV0dXJuIHRoaXMuJGRh
dGFba2V5XTsKKyAgICB9OworCisgICAgU3RyaW5nTWFwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlv
biAoa2V5LCB2YWx1ZSkgeworICAgICAgICBrZXkgPSAnJCcgKyBrZXk7CisgICAgICAgIHRoaXMu
JGRhdGFba2V5XSA9IHZhbHVlOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9OworCisgICAg
U3RyaW5nTWFwLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7CisgICAgICAgIGtleSA9
ICckJyArIGtleTsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbCh0aGlzLiRkYXRhLCBrZXkpOworICAgIH07CisKKyAgICBTdHJpbmdNYXAucHJvdG90
eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAga2V5ID0gJyQnICsga2V5Owor
ICAgICAgICByZXR1cm4gZGVsZXRlIHRoaXMuJGRhdGFba2V5XTsKKyAgICB9OworCiAgICAgZnVu
Y3Rpb24gaXNEZWNpbWFsRGlnaXQoY2gpIHsKICAgICAgICAgcmV0dXJuIChjaCA+PSA0OCAmJiBj
aCA8PSA1Nyk7ICAgLy8gMC4uOQogICAgIH0KQEAgLTIzMiwzMiArMjk1LDM2IEBAIHBhcnNlU3Rh
dGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAvLyA3LjIgV2hpdGUgU3BhY2UK
IAogICAgIGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjaCkgewotICAgICAgICByZXR1cm4gKGNoID09
PSAweDIwKSB8fCAoY2ggPT09IDB4MDkpIHx8IChjaCA9PT0gMHgwQikgfHwgKGNoID09PSAweDBD
KSB8fCAoY2ggPT09IDB4QTApIHx8Ci0gICAgICAgICAgICAoY2ggPj0gMHgxNjgwICYmIFsweDE2
ODAsIDB4MTgwRSwgMHgyMDAwLCAweDIwMDEsIDB4MjAwMiwgMHgyMDAzLCAweDIwMDQsIDB4MjAw
NSwgMHgyMDA2LCAweDIwMDcsIDB4MjAwOCwgMHgyMDA5LCAweDIwMEEsIDB4MjAyRiwgMHgyMDVG
LCAweDMwMDAsIDB4RkVGRl0uaW5kZXhPZihjaCkgPj0gMCk7CisgICAgICAgIHJldHVybiAoY2gg
PT09IDMyKSB8fCAgLy8gc3BhY2UKKyAgICAgICAgICAgIChjaCA9PT0gOSkgfHwgICAgICAvLyB0
YWIKKyAgICAgICAgICAgIChjaCA9PT0gMHhCKSB8fAorICAgICAgICAgICAgKGNoID09PSAweEMp
IHx8CisgICAgICAgICAgICAoY2ggPT09IDB4QTApIHx8CisgICAgICAgICAgICAoY2ggPj0gMHgx
NjgwICYmICdcdTE2ODBcdTE4MEVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDNcdTIwMDRcdTIwMDVc
dTIwMDZcdTIwMDdcdTIwMDhcdTIwMDlcdTIwMEFcdTIwMkZcdTIwNUZcdTMwMDBcdUZFRkYnLmlu
ZGV4T2YoU3RyaW5nLmZyb21DaGFyQ29kZShjaCkpID4gMCk7CiAgICAgfQogCiAgICAgLy8gNy4z
IExpbmUgVGVybWluYXRvcnMKIAogICAgIGZ1bmN0aW9uIGlzTGluZVRlcm1pbmF0b3IoY2gpIHsK
LSAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgwQSkgfHwgKGNoID09PSAweDBEKSB8fCAoY2ggPT09
IDB4MjAyOCkgfHwgKGNoID09PSAweDIwMjkpOworICAgICAgICByZXR1cm4gKGNoID09PSAxMCkg
fHwgKGNoID09PSAxMykgfHwgKGNoID09PSAweDIwMjgpIHx8IChjaCA9PT0gMHgyMDI5KTsKICAg
ICB9CiAKICAgICAvLyA3LjYgSWRlbnRpZmllciBOYW1lcyBhbmQgSWRlbnRpZmllcnMKIAogICAg
IGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0KGNoKSB7Ci0gICAgICAgIHJldHVybiAoY2ggPT09
IDB4MjQpIHx8IChjaCA9PT0gMHg1RikgfHwgIC8vICQgKGRvbGxhcikgYW5kIF8gKHVuZGVyc2Nv
cmUpCi0gICAgICAgICAgICAoY2ggPj0gMHg0MSAmJiBjaCA8PSAweDVBKSB8fCAgICAgICAgIC8v
IEEuLloKLSAgICAgICAgICAgIChjaCA+PSAweDYxICYmIGNoIDw9IDB4N0EpIHx8ICAgICAgICAg
Ly8gYS4uegotICAgICAgICAgICAgKGNoID09PSAweDVDKSB8fCAgICAgICAgICAgICAgICAgICAg
ICAvLyBcIChiYWNrc2xhc2gpCisgICAgICAgIHJldHVybiAoY2ggPT09IDM2KSB8fCAoY2ggPT09
IDk1KSB8fCAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSkKKyAgICAgICAgICAgIChj
aCA+PSA2NSAmJiBjaCA8PSA5MCkgfHwgICAgICAgICAvLyBBLi5aCisgICAgICAgICAgICAoY2gg
Pj0gOTcgJiYgY2ggPD0gMTIyKSB8fCAgICAgICAgLy8gYS4uegorICAgICAgICAgICAgKGNoID09
PSA5MikgfHwgICAgICAgICAgICAgICAgICAgIC8vIFwgKGJhY2tzbGFzaCkKICAgICAgICAgICAg
ICgoY2ggPj0gMHg4MCkgJiYgUmVnZXguTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQudGVzdChTdHJp
bmcuZnJvbUNoYXJDb2RlKGNoKSkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmll
clBhcnQoY2gpIHsKLSAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgyNCkgfHwgKGNoID09PSAweDVG
KSB8fCAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJzY29yZSkKLSAgICAgICAgICAgIChjaCA+
PSAweDQxICYmIGNoIDw9IDB4NUEpIHx8ICAgICAgICAgLy8gQS4uWgotICAgICAgICAgICAgKGNo
ID49IDB4NjEgJiYgY2ggPD0gMHg3QSkgfHwgICAgICAgICAvLyBhLi56Ci0gICAgICAgICAgICAo
Y2ggPj0gMHgzMCAmJiBjaCA8PSAweDM5KSB8fCAgICAgICAgIC8vIDAuLjkKLSAgICAgICAgICAg
IChjaCA9PT0gMHg1QykgfHwgICAgICAgICAgICAgICAgICAgICAgLy8gXCAoYmFja3NsYXNoKQor
ICAgICAgICByZXR1cm4gKGNoID09PSAzNikgfHwgKGNoID09PSA5NSkgfHwgIC8vICQgKGRvbGxh
cikgYW5kIF8gKHVuZGVyc2NvcmUpCisgICAgICAgICAgICAoY2ggPj0gNjUgJiYgY2ggPD0gOTAp
IHx8ICAgICAgICAgLy8gQS4uWgorICAgICAgICAgICAgKGNoID49IDk3ICYmIGNoIDw9IDEyMikg
fHwgICAgICAgIC8vIGEuLnoKKyAgICAgICAgICAgIChjaCA+PSA0OCAmJiBjaCA8PSA1NykgfHwg
ICAgICAgICAvLyAwLi45CisgICAgICAgICAgICAoY2ggPT09IDkyKSB8fCAgICAgICAgICAgICAg
ICAgICAgLy8gXCAoYmFja3NsYXNoKQogICAgICAgICAgICAgKChjaCA+PSAweDgwKSAmJiBSZWdl
eC5Ob25Bc2NpaUlkZW50aWZpZXJQYXJ0LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShjaCkpKTsK
ICAgICB9CiAKQEAgLTMwNiw3ICszNzMsOCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VT
b3VyY2VFbGVtZW50CiAgICAgICAgIH0KIAogICAgICAgICAvLyAnY29uc3QnIGlzIHNwZWNpYWxp
emVkIGFzIEtleXdvcmQgaW4gVjguCi0gICAgICAgIC8vICd5aWVsZCcgYW5kICdsZXQnIGFyZSBm
b3IgY29tcGF0aWJsaXR5IHdpdGggU3BpZGVyTW9ua2V5IGFuZCBFUy5uZXh0LgorICAgICAgICAv
LyAneWllbGQnIGlzIG9ubHkgdHJlYXRlZCBhcyBhIGtleXdvcmQgaW4gc3RyaWN0IG1vZGUuCisg
ICAgICAgIC8vICdsZXQnIGlzIGZvciBjb21wYXRpYmxpdHkgd2l0aCBTcGlkZXJNb25rZXkgYW5k
IEVTLm5leHQuCiAgICAgICAgIC8vIFNvbWUgb3RoZXJzIGFyZSBmcm9tIGZ1dHVyZSByZXNlcnZl
ZCB3b3Jkcy4KIAogICAgICAgICBzd2l0Y2ggKGlkLmxlbmd0aCkgewpAQCAtMzIwLDcgKzM4OCw3
IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAg
ICAgICAoaWQgPT09ICd2b2lkJykgfHwgKGlkID09PSAnd2l0aCcpIHx8IChpZCA9PT0gJ2VudW0n
KTsKICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3doaWxlJykg
fHwgKGlkID09PSAnYnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8Ci0gICAgICAgICAgICAg
ICAgKGlkID09PSAndGhyb3cnKSB8fCAoaWQgPT09ICdjb25zdCcpIHx8IChpZCA9PT0gJ3lpZWxk
JykgfHwKKyAgICAgICAgICAgICAgICAoaWQgPT09ICd0aHJvdycpIHx8IChpZCA9PT0gJ2NvbnN0
JykgfHwKICAgICAgICAgICAgICAgICAoaWQgPT09ICdjbGFzcycpIHx8IChpZCA9PT0gJ3N1cGVy
Jyk7CiAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdyZXR1cm4n
KSB8fCAoaWQgPT09ICd0eXBlb2YnKSB8fCAoaWQgPT09ICdkZWxldGUnKSB8fApAQCAtMzM5LDgg
KzQwNyw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAv
LyA3LjQgQ29tbWVudHMKIAogICAgIGZ1bmN0aW9uIGFkZENvbW1lbnQodHlwZSwgdmFsdWUsIHN0
YXJ0LCBlbmQsIGxvYykgewotICAgICAgICB2YXIgY29tbWVudCwgYXR0YWNoZXI7Ci0KKyAgICAg
ICAgdmFyIGNvbW1lbnQ7CiAgICAgICAgIGFzc2VydCh0eXBlb2Ygc3RhcnQgPT09ICdudW1iZXIn
LCAnQ29tbWVudCBtdXN0IGhhdmUgdmFsaWQgcG9zaXRpb24nKTsKIAogICAgICAgICAvLyBCZWNh
dXNlIHRoZSB3YXkgdGhlIGFjdHVhbCB0b2tlbiBpcyBzY2FubmVkLCBvZnRlbiB0aGUgY29tbWVu
dHMKQEAgLTM2OSwxNCArNDM2LDE0IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJj
ZUVsZW1lbnQKICAgICAgICAgfQogICAgIH0KIAotICAgIGZ1bmN0aW9uIHNraXBTaW5nbGVMaW5l
Q29tbWVudChvZmZzZXQpIHsKKyAgICBmdW5jdGlvbiBza2lwU2luZ2xlTGluZUNvbW1lbnQoKSB7
CiAgICAgICAgIHZhciBzdGFydCwgbG9jLCBjaCwgY29tbWVudDsKIAotICAgICAgICBzdGFydCA9
IGluZGV4IC0gb2Zmc2V0OworICAgICAgICBzdGFydCA9IGluZGV4IC0gMjsKICAgICAgICAgbG9j
ID0gewogICAgICAgICAgICAgc3RhcnQ6IHsKICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVt
YmVyLAotICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQgLSBvZmZzZXQK
KyAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMgogICAgICAgICAg
ICAgfQogICAgICAgICB9OwogCkBAIC0zODUsNyArNDUyLDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRy
dWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAg
IGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoKSkgewogICAgICAgICAgICAgICAgIGlmIChleHRyYS5j
b21tZW50cykgewotICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0
YXJ0ICsgb2Zmc2V0LCBpbmRleCAtIDEpOworICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0g
c291cmNlLnNsaWNlKHN0YXJ0ICsgMiwgaW5kZXggLSAxKTsKICAgICAgICAgICAgICAgICAgICAg
bG9jLmVuZCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMQpAQCAt
NDAyLDcgKzQ2OSw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChleHRyYS5jb21tZW50cykgewotICAgICAgICAgICAg
Y29tbWVudCA9IHNvdXJjZS5zbGljZShzdGFydCArIG9mZnNldCwgaW5kZXgpOworICAgICAgICAg
ICAgY29tbWVudCA9IHNvdXJjZS5zbGljZShzdGFydCArIDIsIGluZGV4KTsKICAgICAgICAgICAg
IGxvYy5lbmQgPSB7CiAgICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwKICAgICAgICAg
ICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0CkBAIC00MjcsNyArNDk0LDcgQEAgcGFy
c2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICB3aGlsZSAoaW5k
ZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgp
OwogICAgICAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY2gpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGNoID09PSAweDBEICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkgPT09IDB4
MEEpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDEzICYmIHNvdXJjZS5jaGFyQ29kZUF0
KGluZGV4ICsgMSkgPT09IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsKQEAgLTQzNiw5ICs1
MDMsOSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAg
ICAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyQSkgewotICAgICAg
ICAgICAgICAgIC8vIEJsb2NrIGNvbW1lbnQgZW5kcyB3aXRoICcqLycuCi0gICAgICAgICAgICAg
ICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkgPT09IDB4MkYpIHsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2ggPT09IDQyKSB7CisgICAgICAgICAgICAgICAgLy8gQmxvY2sgY29t
bWVudCBlbmRzIHdpdGggJyovJyAoY2hhciAjNDIsIGNoYXIgIzQ3KS4KKyAgICAgICAgICAgICAg
ICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gNDcpIHsKICAgICAgICAgICAg
ICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV4dHJhLmNvbW1lbnRzKSB7CkBAIC00NjEsOSArNTI4LDggQEAgcGFy
c2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgIH0KIAogICAgIGZ1bmN0
aW9uIHNraXBDb21tZW50KCkgewotICAgICAgICB2YXIgY2gsIHN0YXJ0OworICAgICAgICB2YXIg
Y2g7CiAKLSAgICAgICAgc3RhcnQgPSAoaW5kZXggPT09IDApOwogICAgICAgICB3aGlsZSAoaW5k
ZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgp
OwogCkBAIC00NzEsNDUgKzUzNywyNCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3Vy
Y2VFbGVtZW50CiAgICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaXNMaW5lVGVybWluYXRvcihjaCkpIHsKICAgICAgICAgICAgICAgICArK2luZGV4OwotICAg
ICAgICAgICAgICAgIGlmIChjaCA9PT0gMHgwRCAmJiBzb3VyY2UuY2hhckNvZGVBdChpbmRleCkg
PT09IDB4MEEpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT09IDEzICYmIHNvdXJjZS5jaGFy
Q29kZUF0KGluZGV4KSA9PT0gMTApIHsKICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOwogICAgICAgICAg
ICAgICAgIGxpbmVTdGFydCA9IGluZGV4OwotICAgICAgICAgICAgICAgIHN0YXJ0ID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MkYpIHsgLy8gVSswMDJGIGlzICcvJwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gNDcpIHsgLy8gNDcgaXMgJy8nCiAgICAgICAg
ICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpOwotICAgICAgICAgICAg
ICAgIGlmIChjaCA9PT0gMHgyRikgeworICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gNDcpIHsK
ICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgICAgICAgICAgKytpbmRl
eDsKLSAgICAgICAgICAgICAgICAgICAgc2tpcFNpbmdsZUxpbmVDb21tZW50KDIpOwotICAgICAg
ICAgICAgICAgICAgICBzdGFydCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChj
aCA9PT0gMHgyQSkgeyAgLy8gVSswMDJBIGlzICcqJworICAgICAgICAgICAgICAgICAgICBza2lw
U2luZ2xlTGluZUNvbW1lbnQoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09PSA0
MikgeyAgLy8gNDIgaXMgJyonCiAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAg
ICAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIHNraXBNdWx0aUxpbmVD
b21tZW50KCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydCAm
JiBjaCA9PT0gMHgyRCkgeyAvLyBVKzAwMkQgaXMgJy0nCi0gICAgICAgICAgICAgICAgLy8gVSsw
MDNFIGlzICc+JwotICAgICAgICAgICAgICAgIGlmICgoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgg
KyAxKSA9PT0gMHgyRCkgJiYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMikgPT09IDB4M0Up
KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vICctLT4nIGlzIGEgc2luZ2xlLWxpbmUgY29tbWVu
dAotICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAzOwotICAgICAgICAgICAgICAgICAgICBz
a2lwU2luZ2xlTGluZUNvbW1lbnQoMyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNlIGlmIChjaCA9PT0gMHgzQykgeyAvLyBVKzAwM0MgaXMgJzwnCi0gICAgICAgICAgICAgICAg
aWYgKHNvdXJjZS5zbGljZShpbmRleCArIDEsIGluZGV4ICsgNCkgPT09ICchLS0nKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGA8YAotICAgICAgICAgICAgICAgICAgICArK2lu
ZGV4OyAvLyBgIWAKLSAgICAgICAgICAgICAgICAgICAgKytpbmRleDsgLy8gYC1gCi0gICAgICAg
ICAgICAgICAgICAgICsraW5kZXg7IC8vIGAtYAotICAgICAgICAgICAgICAgICAgICBza2lwU2lu
Z2xlTGluZUNvbW1lbnQoNCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTUzMSwxNSArNTc2LDQ3
IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgcmV0
dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7CiAgICAgfQogCisgICAgZnVuY3Rpb24gc2Nh
blVuaWNvZGVDb2RlUG9pbnRFc2NhcGUoKSB7CisgICAgICAgIHZhciBjaCwgY29kZSwgY3UxLCBj
dTI7CisKKyAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdOworICAgICAgICBjb2RlID0gMDsKKwor
ICAgICAgICAvLyBBdCBsZWFzdCwgb25lIGhleCBkaWdpdCBpcyByZXF1aXJlZC4KKyAgICAgICAg
aWYgKGNoID09PSAnfScpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVu
ZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChp
bmRleCA8IGxlbmd0aCkgeworICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107CisgICAg
ICAgICAgICBpZiAoIWlzSGV4RGlnaXQoY2gpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjb2RlID0gY29kZSAqIDE2ICsgJzAxMjM0NTY3ODlh
YmNkZWYnLmluZGV4T2YoY2gudG9Mb3dlckNhc2UoKSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY29kZSA+IDB4MTBGRkZGIHx8IGNoICE9PSAnfScpIHsKKyAgICAgICAgICAgIHRocm93RXJy
b3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFVURi0xNiBFbmNvZGluZworICAgICAgICBpZiAoY29kZSA8PSAweEZGRkYp
IHsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpOworICAgICAg
ICB9CisgICAgICAgIGN1MSA9ICgoY29kZSAtIDB4MTAwMDApID4+IDEwKSArIDB4RDgwMDsKKyAg
ICAgICAgY3UyID0gKChjb2RlIC0gMHgxMDAwMCkgJiAxMDIzKSArIDB4REMwMDsKKyAgICAgICAg
cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY3UxLCBjdTIpOworICAgIH0KKwogICAgIGZ1bmN0
aW9uIGdldEVzY2FwZWRJZGVudGlmaWVyKCkgewogICAgICAgICB2YXIgY2gsIGlkOwogCiAgICAg
ICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgrKyk7CiAgICAgICAgIGlkID0gU3RyaW5n
LmZyb21DaGFyQ29kZShjaCk7CiAKLSAgICAgICAgLy8gJ1x1JyAoVSswMDVDLCBVKzAwNzUpIGRl
bm90ZXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuCi0gICAgICAgIGlmIChjaCA9PT0gMHg1Qykgewot
ICAgICAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSAhPT0gMHg3NSkgeworICAg
ICAgICAvLyAnXHUnIChjaGFyICM5MiwgY2hhciAjMTE3KSBkZW5vdGVzIGFuIGVzY2FwZWQgY2hh
cmFjdGVyLgorICAgICAgICBpZiAoY2ggPT09IDkyKSB7CisgICAgICAgICAgICBpZiAoc291cmNl
LmNoYXJDb2RlQXQoaW5kZXgpICE9PSAxMTcpIHsKICAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
KHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICArK2luZGV4OwpAQCAtNTU4LDEwICs2MzUsMTAgQEAgcGFyc2VTdGF0ZW1l
bnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgKytpbmRleDsKICAgICAg
ICAgICAgIGlkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpOwogCi0gICAgICAgICAgICAvLyAn
XHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci4KLSAgICAg
ICAgICAgIGlmIChjaCA9PT0gMHg1QykgeworICAgICAgICAgICAgLy8gJ1x1JyAoY2hhciAjOTIs
IGNoYXIgIzExNykgZGVub3RlcyBhbiBlc2NhcGVkIGNoYXJhY3Rlci4KKyAgICAgICAgICAgIGlm
IChjaCA9PT0gOTIpIHsKICAgICAgICAgICAgICAgICBpZCA9IGlkLnN1YnN0cigwLCBpZC5sZW5n
dGggLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpICE9
PSAweDc1KSB7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSAh
PT0gMTE3KSB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVu
ZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgKytpbmRleDsKQEAgLTU4Miw4ICs2NTksOCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIHN0YXJ0ID0gaW5kZXgrKzsKICAgICAgICAgd2hp
bGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQ29kZUF0
KGluZGV4KTsKLSAgICAgICAgICAgIGlmIChjaCA9PT0gMHg1QykgewotICAgICAgICAgICAgICAg
IC8vIEJsYWNrc2xhc2ggKFUrMDA1QykgbWFya3MgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuCisg
ICAgICAgICAgICBpZiAoY2ggPT09IDkyKSB7CisgICAgICAgICAgICAgICAgLy8gQmxhY2tzbGFz
aCAoY2hhciAjOTIpIG1hcmtzIFVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlLgogICAgICAgICAgICAg
ICAgIGluZGV4ID0gc3RhcnQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEVzY2FwZWRJZGVu
dGlmaWVyKCk7CiAgICAgICAgICAgICB9CkBAIC02MDIsOCArNjc5LDggQEAgcGFyc2VTdGF0ZW1l
bnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogCiAgICAgICAgIHN0YXJ0ID0gaW5kZXg7CiAK
LSAgICAgICAgLy8gQmFja3NsYXNoIChVKzAwNUMpIHN0YXJ0cyBhbiBlc2NhcGVkIGNoYXJhY3Rl
ci4KLSAgICAgICAgaWQgPSAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDVDKSA/IGdl
dEVzY2FwZWRJZGVudGlmaWVyKCkgOiBnZXRJZGVudGlmaWVyKCk7CisgICAgICAgIC8vIEJhY2tz
bGFzaCAoY2hhciAjOTIpIHN0YXJ0cyBhbiBlc2NhcGVkIGNoYXJhY3Rlci4KKyAgICAgICAgaWQg
PSAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSA5MikgPyBnZXRFc2NhcGVkSWRlbnRpZmll
cigpIDogZ2V0SWRlbnRpZmllcigpOwogCiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGtleXdvcmQg
b3IgbGl0ZXJhbCB3aXRoIG9ubHkgb25lIGNoYXJhY3Rlci4KICAgICAgICAgLy8gVGh1cywgaXQg
bXVzdCBiZSBhbiBpZGVudGlmaWVyLgpAQCAtNjI0LDggKzcwMSw3IEBAIHBhcnNlU3RhdGVtZW50
OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIHZhbHVlOiBpZCwKICAgICAg
ICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxp
bmVTdGFydCwKLSAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKLSAgICAgICAgICAgIGVuZDogaW5k
ZXgKKyAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQogICAgICAgICB9OwogICAgIH0K
IApAQCAtNjQyLDI1ICs3MTgsMjMgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNl
RWxlbWVudAogICAgICAgICAgICAgY2g0OwogCiAgICAgICAgIHN3aXRjaCAoY29kZSkgewotCiAg
ICAgICAgIC8vIENoZWNrIGZvciBtb3N0IGNvbW1vbiBzaW5nbGUtY2hhcmFjdGVyIHB1bmN0dWF0
b3JzLgotICAgICAgICBjYXNlIDB4MkU6ICAvLyAuIGRvdAotICAgICAgICBjYXNlIDB4Mjg6ICAv
LyAoIG9wZW4gYnJhY2tldAotICAgICAgICBjYXNlIDB4Mjk6ICAvLyApIGNsb3NlIGJyYWNrZXQK
LSAgICAgICAgY2FzZSAweDNCOiAgLy8gOyBzZW1pY29sb24KLSAgICAgICAgY2FzZSAweDJDOiAg
Ly8gLCBjb21tYQotICAgICAgICBjYXNlIDB4N0I6ICAvLyB7IG9wZW4gY3VybHkgYnJhY2UKLSAg
ICAgICAgY2FzZSAweDdEOiAgLy8gfSBjbG9zZSBjdXJseSBicmFjZQotICAgICAgICBjYXNlIDB4
NUI6ICAvLyBbCi0gICAgICAgIGNhc2UgMHg1RDogIC8vIF0KLSAgICAgICAgY2FzZSAweDNBOiAg
Ly8gOgotICAgICAgICBjYXNlIDB4M0Y6ICAvLyA/Ci0gICAgICAgIGNhc2UgMHg3RTogIC8vIH4K
KyAgICAgICAgY2FzZSA0MDogICAvLyAoIG9wZW4gYnJhY2tldAorICAgICAgICBjYXNlIDQxOiAg
IC8vICkgY2xvc2UgYnJhY2tldAorICAgICAgICBjYXNlIDU5OiAgIC8vIDsgc2VtaWNvbG9uCisg
ICAgICAgIGNhc2UgNDQ6ICAgLy8gLCBjb21tYQorICAgICAgICBjYXNlIDEyMzogIC8vIHsgb3Bl
biBjdXJseSBicmFjZQorICAgICAgICBjYXNlIDEyNTogIC8vIH0gY2xvc2UgY3VybHkgYnJhY2UK
KyAgICAgICAgY2FzZSA5MTogICAvLyBbCisgICAgICAgIGNhc2UgOTM6ICAgLy8gXQorICAgICAg
ICBjYXNlIDU4OiAgIC8vIDoKKyAgICAgICAgY2FzZSA2MzogICAvLyA/CisgICAgICAgIGNhc2Ug
MTI2OiAgLy8gfgogICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgIGlmIChleHRyYS50
b2tlbml6ZSkgewotICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAweDI4KSB7CisgICAgICAg
ICAgICAgICAgaWYgKGNvZGUgPT09IDQwKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhLm9w
ZW5QYXJlblRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGNvZGUgPT09IDB4N0IpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUg
PT09IDEyMykgewogICAgICAgICAgICAgICAgICAgICBleHRyYS5vcGVuQ3VybHlUb2tlbiA9IGV4
dHJhLnRva2Vucy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt
NjY5LDQyICs3NDMsNDAgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVu
dAogICAgICAgICAgICAgICAgIHZhbHVlOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpLAogICAg
ICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgbGlu
ZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAg
ICAgICAgICAgIGVuZDogaW5kZXgKKyAgICAgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRl
eF0KICAgICAgICAgICAgIH07CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvZGUy
ID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKTsKIAotICAgICAgICAgICAgLy8gJz0nIChV
KzAwM0QpIG1hcmtzIGFuIGFzc2lnbm1lbnQgb3IgY29tcGFyaXNvbiBvcGVyYXRvci4KLSAgICAg
ICAgICAgIGlmIChjb2RlMiA9PT0gMHgzRCkgeworICAgICAgICAgICAgLy8gJz0nIChjaGFyICM2
MSkgbWFya3MgYW4gYXNzaWdubWVudCBvciBjb21wYXJpc29uIG9wZXJhdG9yLgorICAgICAgICAg
ICAgaWYgKGNvZGUyID09PSA2MSkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZSkgewot
ICAgICAgICAgICAgICAgIGNhc2UgMHgyQjogIC8vICsKLSAgICAgICAgICAgICAgICBjYXNlIDB4
MkQ6ICAvLyAtCi0gICAgICAgICAgICAgICAgY2FzZSAweDJGOiAgLy8gLwotICAgICAgICAgICAg
ICAgIGNhc2UgMHgzQzogIC8vIDwKLSAgICAgICAgICAgICAgICBjYXNlIDB4M0U6ICAvLyA+Ci0g
ICAgICAgICAgICAgICAgY2FzZSAweDVFOiAgLy8gXgotICAgICAgICAgICAgICAgIGNhc2UgMHg3
QzogIC8vIHwKLSAgICAgICAgICAgICAgICBjYXNlIDB4MjU6ICAvLyAlCi0gICAgICAgICAgICAg
ICAgY2FzZSAweDI2OiAgLy8gJgotICAgICAgICAgICAgICAgIGNhc2UgMHgyQTogIC8vICoKKyAg
ICAgICAgICAgICAgICBjYXNlIDM3OiAgLy8gJQorICAgICAgICAgICAgICAgIGNhc2UgMzg6ICAv
LyAmCisgICAgICAgICAgICAgICAgY2FzZSA0MjogIC8vICo6CisgICAgICAgICAgICAgICAgY2Fz
ZSA0MzogIC8vICsKKyAgICAgICAgICAgICAgICBjYXNlIDQ1OiAgLy8gLQorICAgICAgICAgICAg
ICAgIGNhc2UgNDc6ICAvLyAvCisgICAgICAgICAgICAgICAgY2FzZSA2MDogIC8vIDwKKyAgICAg
ICAgICAgICAgICBjYXNlIDYyOiAgLy8gPgorICAgICAgICAgICAgICAgIGNhc2UgOTQ6ICAvLyBe
CisgICAgICAgICAgICAgICAgY2FzZSAxMjQ6IC8vIHwKICAgICAgICAgICAgICAgICAgICAgaW5k
ZXggKz0gMjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZTogU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoY29k
ZTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBp
bmRleAorICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCiAgICAg
ICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBjYXNlIDB4MjE6IC8vICEKLSAg
ICAgICAgICAgICAgICBjYXNlIDB4M0Q6IC8vID0KKyAgICAgICAgICAgICAgICBjYXNlIDMzOiAv
LyAhCisgICAgICAgICAgICAgICAgY2FzZSA2MTogLy8gPQogICAgICAgICAgICAgICAgICAgICBp
bmRleCArPSAyOwogCiAgICAgICAgICAgICAgICAgICAgIC8vICE9PSBhbmQgPT09Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0QpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gNjEpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKQEAgLTcxMiw2MSArNzg0LDEwNiBAQCBwYXJz
ZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZTogc291cmNlLnNsaWNlKHN0YXJ0LCBpbmRleCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
bGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogc3Rh
cnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICAgICAg
ICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0KICAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIC8vIFBlZWsgbW9yZSBjaGFyYWN0ZXJzLgorCisgICAgICAgIGNoMiA9IHNv
dXJjZVtpbmRleCArIDFdOworICAgICAgICBjaDMgPSBzb3VyY2VbaW5kZXggKyAyXTsKKyAgICAg
ICAgY2g0ID0gc291cmNlW2luZGV4ICsgM107CisKICAgICAgICAgLy8gNC1jaGFyYWN0ZXIgcHVu
Y3R1YXRvcjogPj4+PQogCi0gICAgICAgIGNoNCA9IHNvdXJjZS5zdWJzdHIoaW5kZXgsIDQpOwor
ICAgICAgICBpZiAoY2gxID09PSAnPicgJiYgY2gyID09PSAnPicgJiYgY2gzID09PSAnPicpIHsK
KyAgICAgICAgICAgIGlmIChjaDQgPT09ICc9JykgeworICAgICAgICAgICAgICAgIGluZGV4ICs9
IDQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZTog
VG9rZW4uUHVuY3R1YXRvciwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICc+Pj49JywKKyAg
ICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKKyAgICAgICAgICAgICAg
ICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCisgICAgICAgICAgICAgICAgICAgIHJhbmdlOiBb
c3RhcnQsIGluZGV4XQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAotICAgICAgICBpZiAoY2g0ID09PSAnPj4+PScpIHsKLSAgICAgICAgICAgIGluZGV4ICs9
IDQ7CisgICAgICAgIC8vIDMtY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiA9PT0gIT09ID4+PiA8PD0g
Pj49CisKKyAgICAgICAgaWYgKGNoMSA9PT0gJz4nICYmIGNoMiA9PT0gJz4nICYmIGNoMyA9PT0g
Jz4nKSB7CisgICAgICAgICAgICBpbmRleCArPSAzOwogICAgICAgICAgICAgcmV0dXJuIHsKICAg
ICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLAotICAgICAgICAgICAgICAgIHZh
bHVlOiBjaDQsCisgICAgICAgICAgICAgICAgdmFsdWU6ICc+Pj4nLAogICAgICAgICAgICAgICAg
IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5l
U3RhcnQsCi0gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAgICAgICAgIGVu
ZDogaW5kZXgKKyAgICAgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0KICAgICAgICAg
ICAgIH07CiAgICAgICAgIH0KIAotICAgICAgICAvLyAzLWNoYXJhY3RlciBwdW5jdHVhdG9yczog
PT09ICE9PSA+Pj4gPDw9ID4+PQorICAgICAgICBpZiAoY2gxID09PSAnPCcgJiYgY2gyID09PSAn
PCcgJiYgY2gzID09PSAnPScpIHsKKyAgICAgICAgICAgIGluZGV4ICs9IDM7CisgICAgICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCisgICAg
ICAgICAgICAgICAgdmFsdWU6ICc8PD0nLAorICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxp
bmVOdW1iZXIsCisgICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCisgICAgICAg
ICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCisgICAgICAgICAgICB9OworICAgICAgICB9
CiAKLSAgICAgICAgY2gzID0gY2g0LnN1YnN0cigwLCAzKTsKKyAgICAgICAgaWYgKGNoMSA9PT0g
Jz4nICYmIGNoMiA9PT0gJz4nICYmIGNoMyA9PT0gJz0nKSB7CisgICAgICAgICAgICBpbmRleCAr
PSAzOworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbi5Q
dW5jdHVhdG9yLAorICAgICAgICAgICAgICAgIHZhbHVlOiAnPj49JywKKyAgICAgICAgICAgICAg
ICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGlu
ZVN0YXJ0LAorICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQorICAgICAgICAg
ICAgfTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChjaDMgPT09ICc+Pj4nIHx8IGNoMyA9PT0g
Jzw8PScgfHwgY2gzID09PSAnPj49JykgeworICAgICAgICBpZiAoY2gxID09PSAnLicgJiYgY2gy
ID09PSAnLicgJiYgY2gzID09PSAnLicpIHsKICAgICAgICAgICAgIGluZGV4ICs9IDM7CiAgICAg
ICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3Is
Ci0gICAgICAgICAgICAgICAgdmFsdWU6IGNoMywKKyAgICAgICAgICAgICAgICB2YWx1ZTogJy4u
LicsCiAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAgICAgICAgICAg
ICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQs
Ci0gICAgICAgICAgICAgICAgZW5kOiBpbmRleAorICAgICAgICAgICAgICAgIHJhbmdlOiBbc3Rh
cnQsIGluZGV4XQogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE90aGVy
IDItY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiArKyAtLSA8PCA+PiAmJiB8fAotICAgICAgICBjaDIg
PSBjaDMuc3Vic3RyKDAsIDIpOwogCi0gICAgICAgIGlmICgoY2gxID09PSBjaDJbMV0gJiYgKCcr
LTw+JnwnLmluZGV4T2YoY2gxKSA+PSAwKSkgfHwgY2gyID09PSAnPT4nKSB7CisgICAgICAgIGlm
IChjaDEgPT09IGNoMiAmJiAoJystPD4mfCcuaW5kZXhPZihjaDEpID49IDApKSB7CisgICAgICAg
ICAgICBpbmRleCArPSAyOworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0
eXBlOiBUb2tlbi5QdW5jdHVhdG9yLAorICAgICAgICAgICAgICAgIHZhbHVlOiBjaDEgKyBjaDIs
CisgICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKKyAgICAgICAgICAgICAg
ICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKKyAgICAgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBp
bmRleF0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2gxID09PSAn
PScgJiYgY2gyID09PSAnPicpIHsKICAgICAgICAgICAgIGluZGV4ICs9IDI7CiAgICAgICAgICAg
ICByZXR1cm4gewogICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCi0gICAg
ICAgICAgICAgICAgdmFsdWU6IGNoMiwKKyAgICAgICAgICAgICAgICB2YWx1ZTogJz0+JywKICAg
ICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgIGxp
bmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKLSAgICAg
ICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5k
ZXhdCiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gMS1jaGFyYWN0ZXIg
cHVuY3R1YXRvcnM6IDwgPiA9ICEgKyAtICogJSAmIHwgXiAvCiAgICAgICAgIGlmICgnPD49ISst
KiUmfF4vJy5pbmRleE9mKGNoMSkgPj0gMCkgewogICAgICAgICAgICAgKytpbmRleDsKICAgICAg
ICAgICAgIHJldHVybiB7CkBAIC03NzQsOCArODkxLDE4IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVl
LCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgICAgICB2YWx1ZTogY2gxLAogICAgICAg
ICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgbGluZVN0
YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAg
ICAgICAgIGVuZDogaW5kZXgKKyAgICAgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRleF0K
KyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2gxID09PSAnLicpIHsK
KyAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
ICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCisgICAgICAgICAgICAgICAgdmFsdWU6IGNoMSwK
KyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAg
IGxpbmVTdGFydDogbGluZVN0YXJ0LAorICAgICAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGlu
ZGV4XQogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCkBAIC04MDcsMTMgKzkzNCw1NyBAQCBw
YXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICB2YWx1
ZTogcGFyc2VJbnQoJzB4JyArIG51bWJlciwgMTYpLAogICAgICAgICAgICAgbGluZU51bWJlcjog
bGluZU51bWJlciwKICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAg
ICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAgICAgZW5kOiBpbmRleAorICAgICAgICAgICAgcmFu
Z2U6IFtzdGFydCwgaW5kZXhdCisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gc2Nh
bkJpbmFyeUxpdGVyYWwoc3RhcnQpIHsKKyAgICAgICAgdmFyIGNoLCBudW1iZXI7CisKKyAgICAg
ICAgbnVtYmVyID0gJyc7CisKKyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAg
ICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07CisgICAgICAgICAgICBpZiAoY2ggIT09ICcwJyAm
JiBjaCAhPT0gJzEnKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG51bWJlci5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgIC8vIG9ubHkgMGIgb3Ig
MEIKKyAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwg
J0lMTEVHQUwnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCkgewor
ICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7CisgICAgICAgICAgICAv
KiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworICAgICAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0
YXJ0KGNoKSB8fCBpc0RlY2ltYWxEaWdpdChjaCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdHlwZTogVG9r
ZW4uTnVtZXJpY0xpdGVyYWwsCisgICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQobnVtYmVyLCAy
KSwKKyAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCisgICAgICAgICAgICBsaW5l
U3RhcnQ6IGxpbmVTdGFydCwKKyAgICAgICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQogICAg
ICAgICB9OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHNjYW5PY3RhbExpdGVyYWwoc3RhcnQpIHsK
LSAgICAgICAgdmFyIG51bWJlciA9ICcwJyArIHNvdXJjZVtpbmRleCsrXTsKKyAgICBmdW5jdGlv
biBzY2FuT2N0YWxMaXRlcmFsKHByZWZpeCwgc3RhcnQpIHsKKyAgICAgICAgdmFyIG51bWJlciwg
b2N0YWw7CisKKyAgICAgICAgaWYgKGlzT2N0YWxEaWdpdChwcmVmaXgpKSB7CisgICAgICAgICAg
ICBvY3RhbCA9IHRydWU7CisgICAgICAgICAgICBudW1iZXIgPSAnMCcgKyBzb3VyY2VbaW5kZXgr
K107CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvY3RhbCA9IGZhbHNlOworICAgICAg
ICAgICAgKytpbmRleDsKKyAgICAgICAgICAgIG51bWJlciA9ICcnOworICAgICAgICB9CisKICAg
ICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoIWlzT2N0YWxE
aWdpdChzb3VyY2VbaW5kZXhdKSkgewogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODIxLDYg
Kzk5MiwxMSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAg
ICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdOwogICAgICAgICB9CiAKKyAgICAgICAg
aWYgKCFvY3RhbCAmJiBudW1iZXIubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAvLyBvbmx5
IDBvIG9yIDBPCisgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVk
VG9rZW4sICdJTExFR0FMJyk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNJZGVudGlmaWVy
U3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSB8fCBpc0RlY2ltYWxEaWdpdChzb3VyY2Uu
Y2hhckNvZGVBdChpbmRleCkpKSB7CiAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdl
cy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7CiAgICAgICAgIH0KQEAgLTgyOCwxMSArMTAw
NCwxMCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAg
IHJldHVybiB7CiAgICAgICAgICAgICB0eXBlOiBUb2tlbi5OdW1lcmljTGl0ZXJhbCwKICAgICAg
ICAgICAgIHZhbHVlOiBwYXJzZUludChudW1iZXIsIDgpLAotICAgICAgICAgICAgb2N0YWw6IHRy
dWUsCisgICAgICAgICAgICBvY3RhbDogb2N0YWwsCiAgICAgICAgICAgICBsaW5lTnVtYmVyOiBs
aW5lTnVtYmVyLAogICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAg
ICBzdGFydDogc3RhcnQsCi0gICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICByYW5n
ZTogW3N0YXJ0LCBpbmRleF0KICAgICAgICAgfTsKICAgICB9CiAKQEAgLTg1MSwxNSArMTAyNiwy
MCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAg
ICAgIC8vIEhleCBudW1iZXIgc3RhcnRzIHdpdGggJzB4Jy4KICAgICAgICAgICAgIC8vIE9jdGFs
IG51bWJlciBzdGFydHMgd2l0aCAnMCcuCisgICAgICAgICAgICAvLyBPY3RhbCBudW1iZXIgaW4g
RVM2IHN0YXJ0cyB3aXRoICcwbycuCisgICAgICAgICAgICAvLyBCaW5hcnkgbnVtYmVyIGluIEVT
NiBzdGFydHMgd2l0aCAnMGInLgogICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gJzAnKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGNoID09PSAneCcgfHwgY2ggPT09ICdYJykgewogICAgICAgICAg
ICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhbkhleExp
dGVyYWwoc3RhcnQpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaXNP
Y3RhbERpZ2l0KGNoKSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Nhbk9jdGFsTGl0
ZXJhbChzdGFydCk7CisgICAgICAgICAgICAgICAgaWYgKGNoID09PSAnYicgfHwgY2ggPT09ICdC
JykgeworICAgICAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2NhbkJpbmFyeUxpdGVyYWwoc3RhcnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBpZiAoY2ggPT09ICdvJyB8fCBjaCA9PT0gJ08nIHx8IGlzT2N0YWxEaWdpdChj
aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5PY3RhbExpdGVyYWwoY2gsIHN0
YXJ0KTsKICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICAvLyBkZWNpbWFsIG51
bWJlciBzdGFydHMgd2l0aCAnMCcgc3VjaCBhcyAnMDknIGlzIGlsbGVnYWwuCiAgICAgICAgICAg
ICAgICAgaWYgKGNoICYmIGlzRGVjaW1hbERpZ2l0KGNoLmNoYXJDb2RlQXQoMCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwg
J0lMTEVHQUwnKTsKQEAgLTkwNSwxNyArMTA4NSwxNCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICB2YWx1ZTogcGFyc2VGbG9hdChudW1iZXIp
LAogICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAgICAgICAgICAgIGxpbmVT
dGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAotICAgICAgICAgICAg
ZW5kOiBpbmRleAorICAgICAgICAgICAgcmFuZ2U6IFtzdGFydCwgaW5kZXhdCiAgICAgICAgIH07
CiAgICAgfQogCiAgICAgLy8gNy44LjQgU3RyaW5nIExpdGVyYWxzCiAKICAgICBmdW5jdGlvbiBz
Y2FuU3RyaW5nTGl0ZXJhbCgpIHsKLSAgICAgICAgdmFyIHN0ciA9ICcnLCBxdW90ZSwgc3RhcnQs
IGNoLCBjb2RlLCB1bmVzY2FwZWQsIHJlc3RvcmUsIG9jdGFsID0gZmFsc2UsIHN0YXJ0TGluZU51
bWJlciwgc3RhcnRMaW5lU3RhcnQ7Ci0gICAgICAgIHN0YXJ0TGluZU51bWJlciA9IGxpbmVOdW1i
ZXI7Ci0gICAgICAgIHN0YXJ0TGluZVN0YXJ0ID0gbGluZVN0YXJ0OworICAgICAgICB2YXIgc3Ry
ID0gJycsIHF1b3RlLCBzdGFydCwgY2gsIGNvZGUsIHVuZXNjYXBlZCwgcmVzdG9yZSwgb2N0YWwg
PSBmYWxzZTsKIAogICAgICAgICBxdW90ZSA9IHNvdXJjZVtpbmRleF07CiAgICAgICAgIGFzc2Vy
dCgocXVvdGUgPT09ICdcJycgfHwgcXVvdGUgPT09ICciJyksCkBAIC05MzQsMTcgKzExMTEsNiBA
QCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICAg
ICAgY2ggPSBzb3VyY2VbaW5kZXgrK107CiAgICAgICAgICAgICAgICAgaWYgKCFjaCB8fCAhaXNM
aW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkgewogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGNoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAg
ICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmUgPSBpbmRl
eDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZXNjYXBlZCA9IHNjYW5IZXhFc2NhcGUoY2gp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuZXNjYXBlZCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ciArPSB1bmVzY2FwZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gY2g7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xuJzsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTU0LDYgKzExMjAsMjIgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgICAgICBj
YXNlICd0JzoKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXHQnOwogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
b3VyY2VbaW5kZXhdID09PSAneycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2lu
ZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBzY2FuVW5pY29kZUNvZGVQ
b2ludEVzY2FwZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN0b3JlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5lc2NhcGVkID0gc2NhbkhleEVzY2FwZShjaCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHVuZXNjYXBlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHIgKz0gdW5lc2NhcGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IGNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlICdiJzoKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ciArPSAnXGInOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC05NzMsNiArMTE1NSw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJj
ZUVsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhdKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIzNDU2NycuaW5kZXhP
Zihzb3VyY2VbaW5kZXgrK10pOwpAQCAtOTkzLDcgKzExNzYsNyBAQCBwYXJzZVN0YXRlbWVudDog
dHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICArK2xpbmVOdW1iZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gICdccicgJiYgc291cmNlW2luZGV4XSA9PT0gJ1xu
JykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdccicgJiYgc291cmNlW2luZGV4
XSA9PT0gJ1xuJykgewogICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQgPSBpbmRleDsKQEAg
LTEwMTMsMjMgKzExOTYsMTk1IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVs
ZW1lbnQKICAgICAgICAgICAgIHR5cGU6IFRva2VuLlN0cmluZ0xpdGVyYWwsCiAgICAgICAgICAg
ICB2YWx1ZTogc3RyLAogICAgICAgICAgICAgb2N0YWw6IG9jdGFsLAotICAgICAgICAgICAgc3Rh
cnRMaW5lTnVtYmVyOiBzdGFydExpbmVOdW1iZXIsCi0gICAgICAgICAgICBzdGFydExpbmVTdGFy
dDogc3RhcnRMaW5lU3RhcnQsCiAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAog
ICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICBzdGFydDogc3Rh
cnQsCi0gICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBp
bmRleF0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzY2FuVGVtcGxhdGUoKSB7
CisgICAgICAgIHZhciBjb29rZWQgPSAnJywgY2gsIHN0YXJ0LCB0ZXJtaW5hdGVkLCB0YWlsLCBy
ZXN0b3JlLCB1bmVzY2FwZWQsIGNvZGUsIG9jdGFsOworCisgICAgICAgIHRlcm1pbmF0ZWQgPSBm
YWxzZTsKKyAgICAgICAgdGFpbCA9IGZhbHNlOworICAgICAgICBzdGFydCA9IGluZGV4OworCisg
ICAgICAgICsraW5kZXg7CisKKyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CisgICAg
ICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTsKKyAgICAgICAgICAgIGlmIChjaCA9PT0gJ2An
KSB7CisgICAgICAgICAgICAgICAgdGFpbCA9IHRydWU7CisgICAgICAgICAgICAgICAgdGVybWlu
YXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNoID09PSAnJCcpIHsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlW2luZGV4XSA9PT0g
J3snKSB7CisgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgICAgICAg
IHRlcm1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY29va2VkICs9IGNoOworICAgICAgICAgICAgfSBl
bHNlIGlmIChjaCA9PT0gJ1xcJykgeworICAgICAgICAgICAgICAgIGNoID0gc291cmNlW2luZGV4
KytdOworICAgICAgICAgICAgICAgIGlmICghaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0
KDApKSkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ24nOgorICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9ICdcbic7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAncic6CisgICAgICAgICAgICAgICAgICAgICAgICBjb29rZWQgKz0gJ1xyJzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICd0JzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSAnXHQnOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VbaW5k
ZXhdID09PSAneycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSBzY2FuVW5pY29kZUNvZGVQb2ludEVz
Y2FwZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN0b3JlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5lc2NhcGVkID0gc2NhbkhleEVzY2FwZShjaCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHVuZXNjYXBlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b29rZWQgKz0gdW5lc2NhcGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2VkICs9IGNoOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICdiJzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvb2tlZCArPSAnXGInOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY29va2VkICs9ICdcZic7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAndic6CisgICAgICAgICAgICAgICAgICAgICAgICBjb29r
ZWQgKz0gJ1x2JzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPY3RhbERp
Z2l0KGNoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnMDEyMzQ1Njcn
LmluZGV4T2YoY2gpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXDAgaXMgbm90
IG9jdGFsIGVzY2FwZSBzZXF1ZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
b2RlICE9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGFsID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpbmRleCA8IGxlbmd0aCAmJiBpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDggKyAnMDEyMzQ1NjcnLmlu
ZGV4T2Yoc291cmNlW2luZGV4KytdKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAzIGRpZ2l0cyBhcmUgb25seSBhbGxvd2VkIHdoZW4gc3RyaW5nIHN0YXJ0cworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIDAsIDEsIDIsIDMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCcwMTIzJy5pbmRleE9mKGNoKSA+PSAwICYmCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPCBsZW5ndGggJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09jdGFsRGlnaXQoc291cmNl
W2luZGV4XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBj
b2RlICogOCArICcwMTIzNDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tlZCArPSBTdHJpbmcuZnJvbUNoYXJDb2Rl
KGNvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb29rZWQgKz0gY2g7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSAnXHInICYmIHNvdXJjZVtpbmRleF0gPT09
ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNo
YXJDb2RlQXQoMCkpKSB7CisgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOworICAgICAgICAg
ICAgICAgIGlmIChjaCA9PT0gJ1xyJyAmJiBzb3VyY2VbaW5kZXhdID09PSAnXG4nKSB7CisgICAg
ICAgICAgICAgICAgICAgICsraW5kZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGxpbmVTdGFydCA9IGluZGV4OworICAgICAgICAgICAgICAgIGNvb2tlZCArPSAnXG4nOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb29rZWQgKz0gY2g7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHsKKyAgICAg
ICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwn
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0eXBlOiBUb2tl
bi5UZW1wbGF0ZSwKKyAgICAgICAgICAgIHZhbHVlOiB7CisgICAgICAgICAgICAgICAgY29va2Vk
OiBjb29rZWQsCisgICAgICAgICAgICAgICAgcmF3OiBzb3VyY2Uuc2xpY2Uoc3RhcnQgKyAxLCBp
bmRleCAtICgodGFpbCkgPyAxIDogMikpCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGFp
bDogdGFpbCwKKyAgICAgICAgICAgIG9jdGFsOiBvY3RhbCwKKyAgICAgICAgICAgIGxpbmVOdW1i
ZXI6IGxpbmVOdW1iZXIsCisgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKKyAgICAg
ICAgICAgIHJhbmdlOiBbc3RhcnQsIGluZGV4XQogICAgICAgICB9OwogICAgIH0KIAorICAgIGZ1
bmN0aW9uIHNjYW5UZW1wbGF0ZUVsZW1lbnQob3B0aW9uKSB7CisgICAgICAgIHZhciBzdGFydHNX
aXRoLCB0ZW1wbGF0ZTsKKworICAgICAgICBsb29rYWhlYWQgPSBudWxsOworICAgICAgICBza2lw
Q29tbWVudCgpOworCisgICAgICAgIHN0YXJ0c1dpdGggPSAob3B0aW9uLmhlYWQpID8gJ2AnIDog
J30nOworCisgICAgICAgIGlmIChzb3VyY2VbaW5kZXhdICE9PSBzdGFydHNXaXRoKSB7CisgICAg
ICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FM
Jyk7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZSA9IHNjYW5UZW1wbGF0ZSgpOworCisg
ICAgICAgIHBlZWsoKTsKKworICAgICAgICByZXR1cm4gdGVtcGxhdGU7CisgICAgfQorCiAgICAg
ZnVuY3Rpb24gdGVzdFJlZ0V4cChwYXR0ZXJuLCBmbGFncykgewotICAgICAgICB2YXIgdmFsdWU7
CisgICAgICAgIHZhciB0bXAgPSBwYXR0ZXJuLAorICAgICAgICAgICAgdmFsdWU7CisKKyAgICAg
ICAgaWYgKGZsYWdzLmluZGV4T2YoJ3UnKSA+PSAwKSB7CisgICAgICAgICAgICAvLyBSZXBsYWNl
IGVhY2ggYXN0cmFsIHN5bWJvbCBhbmQgZXZlcnkgVW5pY29kZSBjb2RlIHBvaW50CisgICAgICAg
ICAgICAvLyBlc2NhcGUgc2VxdWVuY2Ugd2l0aCBhIHNpbmdsZSBBU0NJSSBzeW1ib2wgdG8gYXZv
aWQgdGhyb3dpbmcgb24KKyAgICAgICAgICAgIC8vIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBh
cmUgb25seSB2YWxpZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZQorICAgICAgICAgICAgLy8gYC91
YCBmbGFnLgorICAgICAgICAgICAgLy8gTm90ZTogcmVwbGFjaW5nIHdpdGggdGhlIEFTQ0lJIHN5
bWJvbCBgeGAgbWlnaHQgY2F1c2UgZmFsc2UKKyAgICAgICAgICAgIC8vIG5lZ2F0aXZlcyBpbiB1
bmxpa2VseSBzY2VuYXJpb3MuIEZvciBleGFtcGxlLCBgW1x1ezYxfS1iXWAgaXMgYQorICAgICAg
ICAgICAgLy8gcGVyZmVjdGx5IHZhbGlkIHBhdHRlcm4gdGhhdCBpcyBlcXVpdmFsZW50IHRvIGBb
YS1iXWAsIGJ1dCBpdAorICAgICAgICAgICAgLy8gd291bGQgYmUgcmVwbGFjZWQgYnkgYFt4LWJd
YCB3aGljaCB0aHJvd3MgYW4gZXJyb3IuCisgICAgICAgICAgICB0bXAgPSB0bXAKKyAgICAgICAg
ICAgICAgICAucmVwbGFjZSgvXFx1XHsoWzAtOWEtZkEtRl0rKVx9L2csIGZ1bmN0aW9uICgkMCwg
JDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KCQxLCAxNikgPD0gMHgxMEZG
RkYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAneCc7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52
YWxpZFJlZ0V4cCk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAucmVwbGFj
ZSgvW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdL2csICd4Jyk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBGaXJzdCwgZGV0ZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KICAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZhbHVlID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCBmbGFn
cyk7CisgICAgICAgICAgICB2YWx1ZSA9IG5ldyBSZWdFeHAodG1wKTsKICAgICAgICAgfSBjYXRj
aCAoZSkgewogICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZFJlZ0V4
cCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbHVlOworCisgICAgICAgIC8vIFJldHVy
biBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3QgZm9yIHRoaXMgcGF0dGVybi1mbGFnIHBhaXIs
IG9yCisgICAgICAgIC8vIGBudWxsYCBpbiBjYXNlIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGRv
ZXNuJ3Qgc3VwcG9ydCB0aGUgZmxhZ3MgaXQKKyAgICAgICAgLy8gdXNlcy4KKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzKTsKKyAgICAg
ICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHBCb2R5KCkgewpAQCAtMTEyNSw3
ICsxNDgwLDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAg
IH0KIAogICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHAoKSB7Ci0gICAgICAgIHZhciBzdGFydCwgYm9k
eSwgZmxhZ3MsIHBhdHRlcm4sIHZhbHVlOworICAgICAgICB2YXIgc3RhcnQsIGJvZHksIGZsYWdz
LCB2YWx1ZTsKIAogICAgICAgICBsb29rYWhlYWQgPSBudWxsOwogICAgICAgICBza2lwQ29tbWVu
dCgpOwpAQCAtMTEzOSw2MyArMTQ5NCwyNyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VT
b3VyY2VFbGVtZW50CiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgIHR5cGU6
IFRva2VuLlJlZ3VsYXJFeHByZXNzaW9uLAogICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwK
KyAgICAgICAgICAgICAgICByZWdleDogeworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBi
b2R5LnZhbHVlLAorICAgICAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MudmFsdWUKKyAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAg
ICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCi0gICAgICAgICAgICAgICAgc3Rh
cnQ6IHN0YXJ0LAotICAgICAgICAgICAgICAgIGVuZDogaW5kZXgKKyAgICAgICAgICAgICAgICBy
YW5nZTogW3N0YXJ0LCBpbmRleF0KICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gewogICAgICAgICAgICAgbGl0ZXJhbDogYm9keS5saXRlcmFsICsgZmxhZ3MubGl0
ZXJhbCwKICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKLSAgICAgICAgICAgIHN0YXJ0OiBzdGFy
dCwKLSAgICAgICAgICAgIGVuZDogaW5kZXgKKyAgICAgICAgICAgIHJlZ2V4OiB7CisgICAgICAg
ICAgICAgICAgcGF0dGVybjogYm9keS52YWx1ZSwKKyAgICAgICAgICAgICAgICBmbGFnczogZmxh
Z3MudmFsdWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICByYW5nZTogW3N0YXJ0LCBpbmRl
eF0KICAgICAgICAgfTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBjb2xsZWN0UmVnZXgoKSB7Ci0g
ICAgICAgIHZhciBwb3MsIGxvYywgcmVnZXgsIHRva2VuOwotCi0gICAgICAgIHNraXBDb21tZW50
KCk7Ci0KLSAgICAgICAgcG9zID0gaW5kZXg7Ci0gICAgICAgIGxvYyA9IHsKLSAgICAgICAgICAg
IHN0YXJ0OiB7Ci0gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwKLSAgICAgICAgICAg
ICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgcmVnZXggPSBzY2FuUmVnRXhwKCk7Ci0gICAgICAgIGxvYy5lbmQgPSB7Ci0g
ICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgY29sdW1uOiBpbmRleCAt
IGxpbmVTdGFydAotICAgICAgICB9OwotCi0gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0
ICovCi0gICAgICAgIGlmICghZXh0cmEudG9rZW5pemUpIHsKLSAgICAgICAgICAgIC8vIFBvcCB0
aGUgcHJldmlvdXMgdG9rZW4sIHdoaWNoIGlzIGxpa2VseSAnLycgb3IgJy89JwotICAgICAgICAg
ICAgaWYgKGV4dHJhLnRva2Vucy5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW4g
PSBleHRyYS50b2tlbnNbZXh0cmEudG9rZW5zLmxlbmd0aCAtIDFdOwotICAgICAgICAgICAgICAg
IGlmICh0b2tlbi5yYW5nZVswXSA9PT0gcG9zICYmIHRva2VuLnR5cGUgPT09ICdQdW5jdHVhdG9y
JykgewotICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICcvJyB8fCB0b2tl
bi52YWx1ZSA9PT0gJy89JykgewotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEudG9rZW5z
LnBvcCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBleHRyYS50b2tlbnMucHVzaCh7Ci0gICAgICAgICAgICAg
ICAgdHlwZTogJ1JlZ3VsYXJFeHByZXNzaW9uJywKLSAgICAgICAgICAgICAgICB2YWx1ZTogcmVn
ZXgubGl0ZXJhbCwKLSAgICAgICAgICAgICAgICByYW5nZTogW3BvcywgaW5kZXhdLAotICAgICAg
ICAgICAgICAgIGxvYzogbG9jCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAg
IHJldHVybiByZWdleDsKLSAgICB9Ci0KICAgICBmdW5jdGlvbiBpc0lkZW50aWZpZXJOYW1lKHRv
a2VuKSB7CiAgICAgICAgIHJldHVybiB0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyIHx8
CiAgICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbi5LZXl3b3JkIHx8CkBAIC0xMjExLDEy
ICsxNTMwLDkgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAg
ICAgICBwcmV2VG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEudG9rZW5zLmxlbmd0aCAtIDFdOwog
ICAgICAgICBpZiAoIXByZXZUb2tlbikgewogICAgICAgICAgICAgLy8gTm90aGluZyBiZWZvcmUg
dGhhdDogaXQgY2Fubm90IGJlIGEgZGl2aXNpb24uCi0gICAgICAgICAgICByZXR1cm4gY29sbGVj
dFJlZ2V4KCk7CisgICAgICAgICAgICByZXR1cm4gc2NhblJlZ0V4cCgpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChwcmV2VG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7Ci0gICAgICAgICAg
ICBpZiAocHJldlRva2VuLnZhbHVlID09PSAnXScpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
c2NhblB1bmN0dWF0b3IoKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChwcmV2VG9r
ZW4udmFsdWUgPT09ICcpJykgewogICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50
b2tlbnNbZXh0cmEub3BlblBhcmVuVG9rZW4gLSAxXTsKICAgICAgICAgICAgICAgICBpZiAoY2hl
Y2tUb2tlbiAmJgpAQCAtMTIyNSw3ICsxNTQxLDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBh
cnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFs
dWUgPT09ICd3aGlsZScgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZh
bHVlID09PSAnZm9yJyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFs
dWUgPT09ICd3aXRoJykpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdl
eCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblJlZ0V4cCgpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTsKICAgICAg
ICAgICAgIH0KQEAgLTEyNDQsNyArMTU2MCw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJz
ZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgLy8gTmFtZWQgZnVuY3Rpb24uCiAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1
cmx5VG9rZW4gLSA1XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2NhblJlZ0V4cCgpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNj
YW5QdW5jdHVhdG9yKCk7CkBAIC0xMjU2LDEyICsxNTcyLDEyIEBAIHBhcnNlU3RhdGVtZW50OiB0
cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5Q
dW5jdHVhdG9yKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIEl0IGlz
IGEgZGVjbGFyYXRpb24uCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBzY2FuUmVnRXhwKCk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7CisgICAgICAgICAgICByZXR1cm4gc2NhblJl
Z0V4cCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChwcmV2VG9rZW4udHlwZSA9PT0gJ0tleXdv
cmQnKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7CisgICAgICAgIGlmIChw
cmV2VG9rZW4udHlwZSA9PT0gJ0tleXdvcmQnICYmIHByZXZUb2tlbi52YWx1ZSAhPT0gJ3RoaXMn
KSB7CisgICAgICAgICAgICByZXR1cm4gc2NhblJlZ0V4cCgpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBzY2FuUHVuY3R1YXRvcigpOwogICAgIH0KQEAgLTEyNzYsMzEgKzE1OTIsMzIgQEAg
cGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgICAg
IHR5cGU6IFRva2VuLkVPRiwKICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVy
LAogICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgICAg
IHN0YXJ0OiBpbmRleCwKLSAgICAgICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICAg
ICAgcmFuZ2U6IFtpbmRleCwgaW5kZXhdCiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKICAg
ICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7CiAKLSAgICAgICAgaWYgKGlzSWRl
bnRpZmllclN0YXJ0KGNoKSkgewotICAgICAgICAgICAgcmV0dXJuIHNjYW5JZGVudGlmaWVyKCk7
Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBWZXJ5IGNvbW1vbjogKCBhbmQgKSBhbmQgOwotICAg
ICAgICBpZiAoY2ggPT09IDB4MjggfHwgY2ggPT09IDB4MjkgfHwgY2ggPT09IDB4M0IpIHsKKyAg
ICAgICAgaWYgKGNoID09PSA0MCB8fCBjaCA9PT0gNDEgfHwgY2ggPT09IDU4KSB7CiAgICAgICAg
ICAgICByZXR1cm4gc2NhblB1bmN0dWF0b3IoKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFN0
cmluZyBsaXRlcmFsIHN0YXJ0cyB3aXRoIHNpbmdsZSBxdW90ZSAoVSswMDI3KSBvciBkb3VibGUg
cXVvdGUgKFUrMDAyMikuCi0gICAgICAgIGlmIChjaCA9PT0gMHgyNyB8fCBjaCA9PT0gMHgyMikg
eworICAgICAgICAvLyBTdHJpbmcgbGl0ZXJhbCBzdGFydHMgd2l0aCBzaW5nbGUgcXVvdGUgKCMz
OSkgb3IgZG91YmxlIHF1b3RlICgjMzQpLgorICAgICAgICBpZiAoY2ggPT09IDM5IHx8IGNoID09
PSAzNCkgewogICAgICAgICAgICAgcmV0dXJuIHNjYW5TdHJpbmdMaXRlcmFsKCk7CiAgICAgICAg
IH0KIAorICAgICAgICBpZiAoY2ggPT09IDk2KSB7CisgICAgICAgICAgICByZXR1cm4gc2NhblRl
bXBsYXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSWRlbnRpZmllclN0YXJ0KGNoKSkg
eworICAgICAgICAgICAgcmV0dXJuIHNjYW5JZGVudGlmaWVyKCk7CisgICAgICAgIH0KIAotICAg
ICAgICAvLyBEb3QgKC4pIFUrMDAyRSBjYW4gYWxzbyBzdGFydCBhIGZsb2F0aW5nLXBvaW50IG51
bWJlciwgaGVuY2UgdGhlIG5lZWQKKyAgICAgICAgLy8gRG90ICguKSBjaGFyICM0NiBjYW4gYWxz
byBzdGFydCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciwgaGVuY2UgdGhlIG5lZWQKICAgICAgICAg
Ly8gdG8gY2hlY2sgdGhlIG5leHQgY2hhcmFjdGVyLgotICAgICAgICBpZiAoY2ggPT09IDB4MkUp
IHsKKyAgICAgICAgaWYgKGNoID09PSA0NikgewogICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERp
Z2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkpKSB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHNjYW5OdW1lcmljTGl0ZXJhbCgpOwogICAgICAgICAgICAgfQpAQCAtMTMxMSw1NSArMTYy
OCwyNSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAg
ICAgICByZXR1cm4gc2Nhbk51bWVyaWNMaXRlcmFsKCk7CiAgICAgICAgIH0KIAotICAgICAgICAv
LyBTbGFzaCAoLykgVSswMDJGIGNhbiBhbHNvIHN0YXJ0IGEgcmVnZXguCi0gICAgICAgIGlmIChl
eHRyYS50b2tlbml6ZSAmJiBjaCA9PT0gMHgyRikgeworICAgICAgICAvLyBTbGFzaCAoLykgY2hh
ciAjNDcgY2FuIGFsc28gc3RhcnQgYSByZWdleC4KKyAgICAgICAgaWYgKGV4dHJhLnRva2VuaXpl
ICYmIGNoID09PSA0NykgewogICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VTbGFzaCgpOwogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gY29sbGVjdFRva2VuKCkgewotICAgICAgICB2YXIgbG9jLCB0b2tlbiwgcmFuZ2Us
IHZhbHVlOwotCi0gICAgICAgIHNraXBDb21tZW50KCk7Ci0gICAgICAgIGxvYyA9IHsKLSAgICAg
ICAgICAgIHN0YXJ0OiB7Ci0gICAgICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwKLSAgICAg
ICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgdG9rZW4gPSBhZHZhbmNlKCk7Ci0gICAgICAgIGxvYy5lbmQgPSB7
Ci0gICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAotICAgICAgICAgICAgY29sdW1uOiBpbmRl
eCAtIGxpbmVTdGFydAotICAgICAgICB9OwotCi0gICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBU
b2tlbi5FT0YpIHsKLSAgICAgICAgICAgIHZhbHVlID0gc291cmNlLnNsaWNlKHRva2VuLnN0YXJ0
LCB0b2tlbi5lbmQpOwotICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2goewotICAgICAgICAg
ICAgICAgIHR5cGU6IFRva2VuTmFtZVt0b2tlbi50eXBlXSwKLSAgICAgICAgICAgICAgICB2YWx1
ZTogdmFsdWUsCi0gICAgICAgICAgICAgICAgcmFuZ2U6IFt0b2tlbi5zdGFydCwgdG9rZW4uZW5k
XSwKLSAgICAgICAgICAgICAgICBsb2M6IGxvYwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm4gdG9rZW47Ci0gICAgfQotCiAgICAgZnVuY3Rpb24gbGV4KCkgewog
ICAgICAgICB2YXIgdG9rZW47CiAKICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAg
IGluZGV4ID0gdG9rZW4uZW5kOworICAgICAgICBpbmRleCA9IHRva2VuLnJhbmdlWzFdOwogICAg
ICAgICBsaW5lTnVtYmVyID0gdG9rZW4ubGluZU51bWJlcjsKICAgICAgICAgbGluZVN0YXJ0ID0g
dG9rZW4ubGluZVN0YXJ0OwogCi0gICAgICAgIGxvb2thaGVhZCA9ICh0eXBlb2YgZXh0cmEudG9r
ZW5zICE9PSAndW5kZWZpbmVkJykgPyBjb2xsZWN0VG9rZW4oKSA6IGFkdmFuY2UoKTsKKyAgICAg
ICAgbG9va2FoZWFkID0gYWR2YW5jZSgpOwogCi0gICAgICAgIGluZGV4ID0gdG9rZW4uZW5kOwor
ICAgICAgICBpbmRleCA9IHRva2VuLnJhbmdlWzFdOwogICAgICAgICBsaW5lTnVtYmVyID0gdG9r
ZW4ubGluZU51bWJlcjsKICAgICAgICAgbGluZVN0YXJ0ID0gdG9rZW4ubGluZVN0YXJ0OwogCkBA
IC0xMzcyLDk4ICsxNjU5LDEyOSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VF
bGVtZW50CiAgICAgICAgIHBvcyA9IGluZGV4OwogICAgICAgICBsaW5lID0gbGluZU51bWJlcjsK
ICAgICAgICAgc3RhcnQgPSBsaW5lU3RhcnQ7Ci0gICAgICAgIGxvb2thaGVhZCA9ICh0eXBlb2Yg
ZXh0cmEudG9rZW5zICE9PSAndW5kZWZpbmVkJykgPyBjb2xsZWN0VG9rZW4oKSA6IGFkdmFuY2Uo
KTsKKyAgICAgICAgbG9va2FoZWFkID0gYWR2YW5jZSgpOwogICAgICAgICBpbmRleCA9IHBvczsK
ICAgICAgICAgbGluZU51bWJlciA9IGxpbmU7CiAgICAgICAgIGxpbmVTdGFydCA9IHN0YXJ0Owog
ICAgIH0KIAotICAgIGZ1bmN0aW9uIFBvc2l0aW9uKGxpbmUsIGNvbHVtbikgewotICAgICAgICB0
aGlzLmxpbmUgPSBsaW5lOwotICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjsKLSAgICB9Cisg
ICAgZnVuY3Rpb24gbG9va2FoZWFkMigpIHsKKyAgICAgICAgdmFyIGFkdiwgcG9zLCBsaW5lLCBz
dGFydCwgcmVzdWx0OwogCi0gICAgZnVuY3Rpb24gU291cmNlTG9jYXRpb24oc3RhcnRMaW5lLCBz
dGFydENvbHVtbiwgbGluZSwgY29sdW1uKSB7Ci0gICAgICAgIHRoaXMuc3RhcnQgPSBuZXcgUG9z
aXRpb24oc3RhcnRMaW5lLCBzdGFydENvbHVtbik7Ci0gICAgICAgIHRoaXMuZW5kID0gbmV3IFBv
c2l0aW9uKGxpbmUsIGNvbHVtbik7Ci0gICAgfQorICAgICAgICAvLyBJZiB3ZSBhcmUgY29sbGVj
dGluZyB0aGUgdG9rZW5zLCBkb24ndCBncmFiIHRoZSBuZXh0IG9uZSB5ZXQuCisgICAgICAgIC8q
IGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgICAgIGFkdiA9ICh0eXBlb2YgZXh0cmEuYWR2
YW5jZSA9PT0gJ2Z1bmN0aW9uJykgPyBleHRyYS5hZHZhbmNlIDogYWR2YW5jZTsKIAotICAgIFN5
bnRheFRyZWVEZWxlZ2F0ZSA9IHsKKyAgICAgICAgcG9zID0gaW5kZXg7CisgICAgICAgIGxpbmUg
PSBsaW5lTnVtYmVyOworICAgICAgICBzdGFydCA9IGxpbmVTdGFydDsKIAotICAgICAgICBuYW1l
OiAnU3ludGF4VHJlZScsCisgICAgICAgIC8vIFNjYW4gZm9yIHRoZSBuZXh0IGltbWVkaWF0ZSB0
b2tlbi4KKyAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovCisgICAgICAgIGlmIChsb29r
YWhlYWQgPT09IG51bGwpIHsKKyAgICAgICAgICAgIGxvb2thaGVhZCA9IGFkdigpOworICAgICAg
ICB9CisgICAgICAgIGluZGV4ID0gbG9va2FoZWFkLnJhbmdlWzFdOworICAgICAgICBsaW5lTnVt
YmVyID0gbG9va2FoZWFkLmxpbmVOdW1iZXI7CisgICAgICAgIGxpbmVTdGFydCA9IGxvb2thaGVh
ZC5saW5lU3RhcnQ7CiAKLSAgICAgICAgcHJvY2Vzc0NvbW1lbnQ6IGZ1bmN0aW9uIChub2RlKSB7
Ci0gICAgICAgICAgICB2YXIgbGFzdENoaWxkLCB0cmFpbGluZ0NvbW1lbnRzOworICAgICAgICAv
LyBHcmFiIHRoZSB0b2tlbiByaWdodCBhZnRlci4KKyAgICAgICAgcmVzdWx0ID0gYWR2KCk7Cisg
ICAgICAgIGluZGV4ID0gcG9zOworICAgICAgICBsaW5lTnVtYmVyID0gbGluZTsKKyAgICAgICAg
bGluZVN0YXJ0ID0gc3RhcnQ7CiAKLSAgICAgICAgICAgIGlmIChub2RlLnR5cGUgPT09IFN5bnRh
eC5Qcm9ncmFtKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUuYm9keS5sZW5ndGggPiAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gbWFya2VyQ3JlYXRlKCkgewor
ICAgICAgICBpZiAoIWV4dHJhLmxvYyAmJiAhZXh0cmEucmFuZ2UpIHsKKyAgICAgICAgICAgIHJl
dHVybiB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAgICAgc2tpcENvbW1lbnQoKTsKKyAgICAg
ICAgcmV0dXJuIHtvZmZzZXQ6IGluZGV4LCBsaW5lOiBsaW5lTnVtYmVyLCBjb2w6IGluZGV4IC0g
bGluZVN0YXJ0fTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzQ29tbWVudChub2RlKSB7
CisgICAgICAgIHZhciBsYXN0Q2hpbGQsCisgICAgICAgICAgICB0cmFpbGluZ0NvbW1lbnRzLAor
ICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBleHRyYS5ib3R0b21SaWdodFN0YWNrLAorICAgICAg
ICAgICAgbGFzdCA9IGJvdHRvbVJpZ2h0W2JvdHRvbVJpZ2h0Lmxlbmd0aCAtIDFdOworCisgICAg
ICAgIGlmIChub2RlLnR5cGUgPT09IFN5bnRheC5Qcm9ncmFtKSB7CisgICAgICAgICAgICAvKiBp
c3RhbmJ1bCBpZ25vcmUgZWxzZSAqLworICAgICAgICAgICAgaWYgKG5vZGUuYm9keS5sZW5ndGgg
PiAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmIChleHRyYS50cmFpbGluZ0NvbW1lbnRzLmxlbmd0aCA+IDApIHsK
LSAgICAgICAgICAgICAgICBpZiAoZXh0cmEudHJhaWxpbmdDb21tZW50c1swXS5yYW5nZVswXSA+
PSBub2RlLnJhbmdlWzFdKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMg
PSBleHRyYS50cmFpbGluZ0NvbW1lbnRzOwotICAgICAgICAgICAgICAgICAgICBleHRyYS50cmFp
bGluZ0NvbW1lbnRzID0gW107Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cy5sZW5ndGggPSAwOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgaWYgKGV4dHJhLnRyYWlsaW5nQ29tbWVudHMubGVuZ3RoID4gMCkgewor
ICAgICAgICAgICAgaWYgKGV4dHJhLnRyYWlsaW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gbm9k
ZS5yYW5nZVsxXSkgeworICAgICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMgPSBleHRyYS50
cmFpbGluZ0NvbW1lbnRzOworICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMg
PSBbXTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGV4dHJhLmJv
dHRvbVJpZ2h0U3RhY2subGVuZ3RoID4gMCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgZXh0
cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAtIDFdLnRy
YWlsaW5nQ29tbWVudHMgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJp
Z2h0U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1l
bnRzWzBdLnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMV0pIHsKLSAgICAgICAgICAgICAgICAgICAg
dHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9tUmln
aHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRzOwotICAgICAgICAgICAgICAgICAg
ICBkZWxldGUgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxl
bmd0aCAtIDFdLnRyYWlsaW5nQ29tbWVudHM7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMubGVuZ3RoID0gMDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChsYXN0ICYmIGxhc3QudHJhaWxpbmdD
b21tZW50cyAmJiBsYXN0LnRyYWlsaW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5n
ZVsxXSkgeworICAgICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMgPSBsYXN0LnRyYWlsaW5n
Q29tbWVudHM7CisgICAgICAgICAgICAgICAgZGVsZXRlIGxhc3QudHJhaWxpbmdDb21tZW50czsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBFYXRpbmcgdGhlIHN0
YWNrLgotICAgICAgICAgICAgd2hpbGUgKGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoID4g
MCAmJiBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3Ro
IC0gMV0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5nZVswXSkgewotICAgICAgICAgICAgICAgIGxhc3RD
aGlsZCA9IGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sucG9wKCk7CisgICAgICAgIC8vIEVhdGluZyB0
aGUgc3RhY2suCisgICAgICAgIGlmIChsYXN0KSB7CisgICAgICAgICAgICB3aGlsZSAobGFzdCAm
JiBsYXN0LnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMF0pIHsKKyAgICAgICAgICAgICAgICBsYXN0
Q2hpbGQgPSBsYXN0OworICAgICAgICAgICAgICAgIGxhc3QgPSBib3R0b21SaWdodC5wb3AoKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobGFzdENoaWxkKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHMgJiYgbGFzdENo
aWxkLmxlYWRpbmdDb21tZW50c1tsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCAtIDFd
LnJhbmdlWzFdIDw9IG5vZGUucmFuZ2VbMF0pIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS5s
ZWFkaW5nQ29tbWVudHMgPSBsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzOwotICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgbGFzdENoaWxkLmxlYWRpbmdDb21tZW50czsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV4dHJhLmxlYWRpbmdDb21tZW50cy5sZW5ndGgg
PiAwICYmIGV4dHJhLmxlYWRpbmdDb21tZW50c1tleHRyYS5sZWFkaW5nQ29tbWVudHMubGVuZ3Ro
IC0gMV0ucmFuZ2VbMV0gPD0gbm9kZS5yYW5nZVswXSkgewotICAgICAgICAgICAgICAgIG5vZGUu
bGVhZGluZ0NvbW1lbnRzID0gZXh0cmEubGVhZGluZ0NvbW1lbnRzOwotICAgICAgICAgICAgICAg
IGV4dHJhLmxlYWRpbmdDb21tZW50cyA9IFtdOworICAgICAgICBpZiAobGFzdENoaWxkKSB7Cisg
ICAgICAgICAgICBpZiAobGFzdENoaWxkLmxlYWRpbmdDb21tZW50cyAmJiBsYXN0Q2hpbGQubGVh
ZGluZ0NvbW1lbnRzW2xhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHMubGVuZ3RoIC0gMV0ucmFuZ2Vb
MV0gPD0gbm9kZS5yYW5nZVswXSkgeworICAgICAgICAgICAgICAgIG5vZGUubGVhZGluZ0NvbW1l
bnRzID0gbGFzdENoaWxkLmxlYWRpbmdDb21tZW50czsKKyAgICAgICAgICAgICAgICBkZWxldGUg
bGFzdENoaWxkLmxlYWRpbmdDb21tZW50czsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IGlmIChleHRyYS5sZWFkaW5nQ29tbWVudHMubGVuZ3RoID4gMCAmJiBleHRyYS5sZWFkaW5nQ29t
bWVudHNbZXh0cmEubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCAtIDFdLnJhbmdlWzFdIDw9IG5vZGUu
cmFuZ2VbMF0pIHsKKyAgICAgICAgICAgIG5vZGUubGVhZGluZ0NvbW1lbnRzID0gZXh0cmEubGVh
ZGluZ0NvbW1lbnRzOworICAgICAgICAgICAgZXh0cmEubGVhZGluZ0NvbW1lbnRzID0gW107Cisg
ICAgICAgIH0KIAorICAgICAgICBpZiAodHJhaWxpbmdDb21tZW50cykgeworICAgICAgICAgICAg
bm9kZS50cmFpbGluZ0NvbW1lbnRzID0gdHJhaWxpbmdDb21tZW50czsKKyAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAodHJhaWxpbmdDb21tZW50cykgewotICAgICAgICAgICAgICAgIG5vZGUu
dHJhaWxpbmdDb21tZW50cyA9IHRyYWlsaW5nQ29tbWVudHM7Ci0gICAgICAgICAgICB9CisgICAg
ICAgIGJvdHRvbVJpZ2h0LnB1c2gobm9kZSk7CisgICAgfQogCi0gICAgICAgICAgICBleHRyYS5i
b3R0b21SaWdodFN0YWNrLnB1c2gobm9kZSk7Ci0gICAgICAgIH0sCisgICAgZnVuY3Rpb24gbWFy
a2VyQXBwbHkobWFya2VyLCBub2RlKSB7CisgICAgICAgIGlmIChleHRyYS5yYW5nZSkgeworICAg
ICAgICAgICAgbm9kZS5yYW5nZSA9IFttYXJrZXIub2Zmc2V0LCBpbmRleF07CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGV4dHJhLmxvYykgeworICAgICAgICAgICAgbm9kZS5sb2MgPSB7CisgICAg
ICAgICAgICAgICAgc3RhcnQ6IHsKKyAgICAgICAgICAgICAgICAgICAgbGluZTogbWFya2VyLmxp
bmUsCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogbWFya2VyLmNvbAorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZW5kOiB7CisgICAgICAgICAgICAgICAgICAgIGxpbmU6
IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3Rh
cnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbm9kZSA9
IGRlbGVnYXRlLnBvc3RQcm9jZXNzKG5vZGUpOworICAgICAgICB9CisgICAgICAgIGlmIChleHRy
YS5hdHRhY2hDb21tZW50KSB7CisgICAgICAgICAgICBwcm9jZXNzQ29tbWVudChub2RlKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CiAKLSAgICAgICAgbWFya0VuZDog
ZnVuY3Rpb24gKG5vZGUsIHN0YXJ0VG9rZW4pIHsKLSAgICAgICAgICAgIGlmIChleHRyYS5yYW5n
ZSkgewotICAgICAgICAgICAgICAgIG5vZGUucmFuZ2UgPSBbc3RhcnRUb2tlbi5zdGFydCwgaW5k
ZXhdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGV4dHJhLmxvYykgewotICAgICAg
ICAgICAgICAgIG5vZGUubG9jID0gbmV3IFNvdXJjZUxvY2F0aW9uKAotICAgICAgICAgICAgICAg
ICAgICBzdGFydFRva2VuLnN0YXJ0TGluZU51bWJlciA9PT0gdW5kZWZpbmVkID8gIHN0YXJ0VG9r
ZW4ubGluZU51bWJlciA6IHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVtYmVyLAotICAgICAgICAgICAg
ICAgICAgICBzdGFydFRva2VuLnN0YXJ0IC0gKHN0YXJ0VG9rZW4uc3RhcnRMaW5lU3RhcnQgPT09
IHVuZGVmaW5lZCA/ICBzdGFydFRva2VuLmxpbmVTdGFydCA6IHN0YXJ0VG9rZW4uc3RhcnRMaW5l
U3RhcnQpLAotICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAg
ICAgICBpbmRleCAtIGxpbmVTdGFydAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5wb3N0UHJvY2Vzcyhub2RlKTsKLSAgICAgICAgICAgIH0KKyAgICBTeW50YXhUcmVl
RGVsZWdhdGUgPSB7CiAKLSAgICAgICAgICAgIGlmIChleHRyYS5hdHRhY2hDb21tZW50KSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQ29tbWVudChub2RlKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICB9LAorICAgICAgICBuYW1lOiAnU3lu
dGF4VHJlZScsCiAKICAgICAgICAgcG9zdFByb2Nlc3M6IGZ1bmN0aW9uIChub2RlKSB7Ci0gICAg
ICAgICAgICBpZiAoZXh0cmEuc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS5sb2Muc291
cmNlID0gZXh0cmEuc291cmNlOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgICAgIH0sCiAKQEAgLTE1ODcsMjkgKzE5MDUsMzggQEAgcGFyc2VTdGF0ZW1lbnQ6
IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgfTsKICAgICAgICAgfSwKIAot
ICAgICAgICBjcmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywg
ZGVmYXVsdHMsIGJvZHkpIHsKKyAgICAgICAgY3JlYXRlRm9yT2ZTdGF0ZW1lbnQ6IGZ1bmN0aW9u
IChsZWZ0LCByaWdodCwgYm9keSkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICAgICB0eXBlOiBTeW50YXguRm9yT2ZTdGF0ZW1lbnQsCisgICAgICAgICAgICAgICAgbGVmdDog
bGVmdCwKKyAgICAgICAgICAgICAgICByaWdodDogcmlnaHQsCisgICAgICAgICAgICAgICAgYm9k
eTogYm9keQorICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVGdW5j
dGlvbkRlY2xhcmF0aW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywgZGVmYXVsdHMsIGJvZHksIHJl
c3QsIGdlbmVyYXRvciwgZXhwcmVzc2lvbikgewogICAgICAgICAgICAgcmV0dXJuIHsKICAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguRnVuY3Rpb25EZWNsYXJhdGlvbiwKICAgICAgICAgICAg
ICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsCiAgICAgICAgICAg
ICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzLAogICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksCi0g
ICAgICAgICAgICAgICAgcmVzdDogbnVsbCwKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZh
bHNlLAotICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGZhbHNlCisgICAgICAgICAgICAgICAg
cmVzdDogcmVzdCwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGdlbmVyYXRvciwKKyAgICAg
ICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uCiAgICAgICAgICAgICB9OwogICAgICAg
ICB9LAogCi0gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24gKGlkLCBw
YXJhbXMsIGRlZmF1bHRzLCBib2R5KSB7CisgICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lv
bjogZnVuY3Rpb24gKGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5LCByZXN0LCBnZW5lcmF0b3Is
IGV4cHJlc3Npb24pIHsKICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LkZ1bmN0aW9uRXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICBpZDogaWQsCiAg
ICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsCiAgICAgICAgICAgICAgICAgZGVmYXVsdHM6
IGRlZmF1bHRzLAogICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksCi0gICAgICAgICAgICAgICAg
cmVzdDogbnVsbCwKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZhbHNlLAotICAgICAgICAg
ICAgICAgIGV4cHJlc3Npb246IGZhbHNlCisgICAgICAgICAgICAgICAgcmVzdDogcmVzdCwKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3I6IGdlbmVyYXRvciwKKyAgICAgICAgICAgICAgICBleHBy
ZXNzaW9uOiBleHByZXNzaW9uCiAgICAgICAgICAgICB9OwogICAgICAgICB9LAogCkBAIC0xNjM4
LDExICsxOTY1LDE1IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQK
ICAgICAgICAgfSwKIAogICAgICAgICBjcmVhdGVMaXRlcmFsOiBmdW5jdGlvbiAodG9rZW4pIHsK
LSAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gewogICAgICAg
ICAgICAgICAgIHR5cGU6IFN5bnRheC5MaXRlcmFsLAogICAgICAgICAgICAgICAgIHZhbHVlOiB0
b2tlbi52YWx1ZSwKLSAgICAgICAgICAgICAgICByYXc6IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFy
dCwgdG9rZW4uZW5kKQorICAgICAgICAgICAgICAgIHJhdzogc291cmNlLnNsaWNlKHRva2VuLnJh
bmdlWzBdLCB0b2tlbi5yYW5nZVsxXSkKICAgICAgICAgICAgIH07CisgICAgICAgICAgICBpZiAo
dG9rZW4ucmVnZXgpIHsKKyAgICAgICAgICAgICAgICBvYmplY3QucmVnZXggPSB0b2tlbi5yZWdl
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0s
CiAKICAgICAgICAgY3JlYXRlTWVtYmVyRXhwcmVzc2lvbjogZnVuY3Rpb24gKGFjY2Vzc29yLCBv
YmplY3QsIHByb3BlcnR5KSB7CkBAIC0xNjg1LDEyICsyMDE2LDE1IEBAIHBhcnNlU3RhdGVtZW50
OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIH07CiAgICAgICAgIH0sCiAK
LSAgICAgICAgY3JlYXRlUHJvcGVydHk6IGZ1bmN0aW9uIChraW5kLCBrZXksIHZhbHVlKSB7Cisg
ICAgICAgIGNyZWF0ZVByb3BlcnR5OiBmdW5jdGlvbiAoa2luZCwga2V5LCB2YWx1ZSwgbWV0aG9k
LCBzaG9ydGhhbmQsIGNvbXB1dGVkKSB7CiAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAg
ICAgICAgIHR5cGU6IFN5bnRheC5Qcm9wZXJ0eSwKICAgICAgICAgICAgICAgICBrZXk6IGtleSwK
ICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsCi0gICAgICAgICAgICAgICAga2luZDoga2lu
ZAorICAgICAgICAgICAgICAgIGtpbmQ6IGtpbmQsCisgICAgICAgICAgICAgICAgbWV0aG9kOiBt
ZXRob2QsCisgICAgICAgICAgICAgICAgc2hvcnRoYW5kOiBzaG9ydGhhbmQsCisgICAgICAgICAg
ICAgICAgY29tcHV0ZWQ6IGNvbXB1dGVkCiAgICAgICAgICAgICB9OwogICAgICAgICB9LAogCkBA
IC0xNzk0LDcgKzIxMjgsMTY3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVs
ZW1lbnQKICAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVjdCwKICAgICAgICAgICAgICAgICBi
b2R5OiBib2R5CiAgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgIGNyZWF0ZVRl
bXBsYXRlRWxlbWVudDogZnVuY3Rpb24gKHZhbHVlLCB0YWlsKSB7CisgICAgICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5UZW1wbGF0ZUVsZW1lbnQsCisgICAg
ICAgICAgICAgICAgdmFsdWU6IHZhbHVlLAorICAgICAgICAgICAgICAgIHRhaWw6IHRhaWwKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlVGVtcGxhdGVMaXRlcmFs
OiBmdW5jdGlvbiAocXVhc2lzLCBleHByZXNzaW9ucykgeworICAgICAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVGVtcGxhdGVMaXRlcmFsLAorICAgICAgICAg
ICAgICAgIHF1YXNpczogcXVhc2lzLAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiBleHBy
ZXNzaW9ucworICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVTcHJl
YWRFbGVtZW50OiBmdW5jdGlvbiAoYXJndW1lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlNwcmVhZEVsZW1lbnQsCisgICAgICAgICAgICAg
ICAgYXJndW1lbnQ6IGFyZ3VtZW50CisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAg
ICAgIGNyZWF0ZVRhZ2dlZFRlbXBsYXRlRXhwcmVzc2lvbjogZnVuY3Rpb24gKHRhZywgcXVhc2kp
IHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlRh
Z2dlZFRlbXBsYXRlRXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICB0YWc6IHRhZywKKyAgICAg
ICAgICAgICAgICBxdWFzaTogcXVhc2kKKyAgICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAg
ICAgICAgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IGZ1bmN0aW9uIChwYXJhbXMsIGRl
ZmF1bHRzLCBib2R5LCByZXN0LCBleHByZXNzaW9uKSB7CisgICAgICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICBpZDogbnVsbCwKKyAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtcywK
KyAgICAgICAgICAgICAgICBkZWZhdWx0czogZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgYm9k
eTogYm9keSwKKyAgICAgICAgICAgICAgICByZXN0OiByZXN0LAorICAgICAgICAgICAgICAgIGdl
bmVyYXRvcjogZmFsc2UsCisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcmVzc2lvbgor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVNZXRob2REZWZpbml0
aW9uOiBmdW5jdGlvbiAocHJvcGVydHlUeXBlLCBraW5kLCBrZXksIHZhbHVlLCBjb21wdXRlZCkg
eworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguTWV0
aG9kRGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICBrZXk6IGtleSwKKyAgICAgICAgICAgICAg
ICB2YWx1ZTogdmFsdWUsCisgICAgICAgICAgICAgICAga2luZDoga2luZCwKKyAgICAgICAgICAg
ICAgICAnc3RhdGljJzogcHJvcGVydHlUeXBlID09PSBDbGFzc1Byb3BlcnR5VHlwZS5zdGF0aWMs
CisgICAgICAgICAgICAgICAgY29tcHV0ZWQ6IGNvbXB1dGVkCisgICAgICAgICAgICB9OworICAg
ICAgICB9LAorCisgICAgICAgIGNyZWF0ZUNsYXNzQm9keTogZnVuY3Rpb24gKGJvZHkpIHsKKyAg
ICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNsYXNzQm9k
eSwKKyAgICAgICAgICAgICAgICBib2R5OiBib2R5CisgICAgICAgICAgICB9OworICAgICAgICB9
LAorCisgICAgICAgIGNyZWF0ZUNsYXNzRXhwcmVzc2lvbjogZnVuY3Rpb24gKGlkLCBzdXBlckNs
YXNzLCBib2R5KSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHR5cGU6
IFN5bnRheC5DbGFzc0V4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgaWQ6IGlkLAorICAgICAg
ICAgICAgICAgIHN1cGVyQ2xhc3M6IHN1cGVyQ2xhc3MsCisgICAgICAgICAgICAgICAgYm9keTog
Ym9keQorICAgICAgICAgICAgfTsKKyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVDbGFzc0Rl
Y2xhcmF0aW9uOiBmdW5jdGlvbiAoaWQsIHN1cGVyQ2xhc3MsIGJvZHkpIHsKKyAgICAgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNsYXNzRGVjbGFyYXRpb24s
CisgICAgICAgICAgICAgICAgaWQ6IGlkLAorICAgICAgICAgICAgICAgIHN1cGVyQ2xhc3M6IHN1
cGVyQ2xhc3MsCisgICAgICAgICAgICAgICAgYm9keTogYm9keQorICAgICAgICAgICAgfTsKKyAg
ICAgICAgfSwKKworICAgICAgICBjcmVhdGVNb2R1bGVTcGVjaWZpZXI6IGZ1bmN0aW9uICh0b2tl
bikgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXgu
TW9kdWxlU3BlY2lmaWVyLAorICAgICAgICAgICAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSwKKyAg
ICAgICAgICAgICAgICByYXc6IHNvdXJjZS5zbGljZSh0b2tlbi5yYW5nZVswXSwgdG9rZW4ucmFu
Z2VbMV0pCisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisgICAgICAgIGNyZWF0ZUV4cG9y
dFNwZWNpZmllcjogZnVuY3Rpb24gKGlkLCBuYW1lKSB7CisgICAgICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5FeHBvcnRTcGVjaWZpZXIsCisgICAgICAgICAg
ICAgICAgaWQ6IGlkLAorICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlRXhwb3J0QmF0Y2hTcGVjaWZpZXI6IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3lu
dGF4LkV4cG9ydEJhdGNoU3BlY2lmaWVyCisgICAgICAgICAgICB9OworICAgICAgICB9LAorCisg
ICAgICAgIGNyZWF0ZUltcG9ydERlZmF1bHRTcGVjaWZpZXI6IGZ1bmN0aW9uIChpZCkgeworICAg
ICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguSW1wb3J0RGVm
YXVsdFNwZWNpZmllciwKKyAgICAgICAgICAgICAgICBpZDogaWQKKyAgICAgICAgICAgIH07Cisg
ICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyOiBmdW5j
dGlvbiAoaWQpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTog
U3ludGF4LkltcG9ydE5hbWVzcGFjZVNwZWNpZmllciwKKyAgICAgICAgICAgICAgICBpZDogaWQK
KyAgICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlRXhwb3J0RGVjbGFy
YXRpb246IGZ1bmN0aW9uIChpc0RlZmF1bHQsIGRlY2xhcmF0aW9uLCBzcGVjaWZpZXJzLCBzcmMp
IHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkV4
cG9ydERlY2xhcmF0aW9uLAorICAgICAgICAgICAgICAgICdkZWZhdWx0JzogISFpc0RlZmF1bHQs
CisgICAgICAgICAgICAgICAgZGVjbGFyYXRpb246IGRlY2xhcmF0aW9uLAorICAgICAgICAgICAg
ICAgIHNwZWNpZmllcnM6IHNwZWNpZmllcnMsCisgICAgICAgICAgICAgICAgc291cmNlOiBzcmMK
KyAgICAgICAgICAgIH07CisgICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlSW1wb3J0U3BlY2lm
aWVyOiBmdW5jdGlvbiAoaWQsIG5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICAgICAgdHlwZTogU3ludGF4LkltcG9ydFNwZWNpZmllciwKKyAgICAgICAgICAgICAgICBp
ZDogaWQsCisgICAgICAgICAgICAgICAgbmFtZTogbmFtZQorICAgICAgICAgICAgfTsKKyAgICAg
ICAgfSwKKworICAgICAgICBjcmVhdGVJbXBvcnREZWNsYXJhdGlvbjogZnVuY3Rpb24gKHNwZWNp
ZmllcnMsIHNyYykgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICB0eXBl
OiBTeW50YXguSW1wb3J0RGVjbGFyYXRpb24sCisgICAgICAgICAgICAgICAgc3BlY2lmaWVyczog
c3BlY2lmaWVycywKKyAgICAgICAgICAgICAgICBzb3VyY2U6IHNyYworICAgICAgICAgICAgfTsK
KyAgICAgICAgfSwKKworICAgICAgICBjcmVhdGVZaWVsZEV4cHJlc3Npb246IGZ1bmN0aW9uIChh
cmd1bWVudCwgZGxnKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHR5
cGU6IFN5bnRheC5ZaWVsZEV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFy
Z3VtZW50LAorICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBkbGcKKyAgICAgICAgICAgIH07Cisg
ICAgICAgIH0sCisKKyAgICAgICAgY3JlYXRlQ29tcHJlaGVuc2lvbkV4cHJlc3Npb246IGZ1bmN0
aW9uIChmaWx0ZXIsIGJsb2NrcywgYm9keSkgeworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguQ29tcHJlaGVuc2lvbkV4cHJlc3Npb24sCisgICAgICAg
ICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsCisgICAgICAgICAgICAgICAgYmxvY2tzOiBibG9ja3Ms
CisgICAgICAgICAgICAgICAgYm9keTogYm9keQorICAgICAgICAgICAgfTsKICAgICAgICAgfQor
CiAgICAgfTsKIAogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgbGluZSB0ZXJtaW5h
dG9yIGJlZm9yZSB0aGUgbmV4dCB0b2tlbi4KQEAgLTE4MjEsMTcgKzIzMTUsMTcgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgYXJncyA9IEFy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMiksCiAgICAgICAgICAgICBtc2cg
PSBtZXNzYWdlRm9ybWF0LnJlcGxhY2UoCiAgICAgICAgICAgICAgICAgLyUoXGQpL2csCi0gICAg
ICAgICAgICAgICAgZnVuY3Rpb24gKHdob2xlLCBpbmRleCkgewotICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQoaW5kZXggPCBhcmdzLmxlbmd0aCwgJ01lc3NhZ2UgcmVmZXJlbmNlIG11c3QgYmUg
aW4gcmFuZ2UnKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbaW5kZXhdOworICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICh3aG9sZSwgaWR4KSB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydChpZHggPCBhcmdzLmxlbmd0aCwgJ01lc3NhZ2UgcmVmZXJlbmNlIG11c3QgYmUgaW4g
cmFuZ2UnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbaWR4XTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICApOwogCiAgICAgICAgIGlmICh0eXBlb2YgdG9rZW4ubGlu
ZU51bWJlciA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKCdM
aW5lICcgKyB0b2tlbi5saW5lTnVtYmVyICsgJzogJyArIG1zZyk7Ci0gICAgICAgICAgICBlcnJv
ci5pbmRleCA9IHRva2VuLnN0YXJ0OworICAgICAgICAgICAgZXJyb3IuaW5kZXggPSB0b2tlbi5y
YW5nZVswXTsKICAgICAgICAgICAgIGVycm9yLmxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVy
OwotICAgICAgICAgICAgZXJyb3IuY29sdW1uID0gdG9rZW4uc3RhcnQgLSBsaW5lU3RhcnQgKyAx
OworICAgICAgICAgICAgZXJyb3IuY29sdW1uID0gdG9rZW4ucmFuZ2VbMF0gLSBsaW5lU3RhcnQg
KyAxOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0xp
bmUgJyArIGxpbmVOdW1iZXIgKyAnOiAnICsgbXNnKTsKICAgICAgICAgICAgIGVycm9yLmluZGV4
ID0gaW5kZXg7CkBAIC0xODg1LDYgKzIzNzksMTAgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBh
cnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMu
VW5leHBlY3RlZFRva2VuLCB0b2tlbi52YWx1ZSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAo
dG9rZW4udHlwZSA9PT0gVG9rZW4uVGVtcGxhdGUpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Io
dG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUZW1wbGF0ZSwgdG9rZW4udmFsdWUucmF3KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8vIEJvb2xlYW5MaXRlcmFsLCBOdWxsTGl0ZXJhbCwgb3IgUHVu
Y3R1YXRvci4KICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZFRv
a2VuLCB0b2tlbi52YWx1ZSk7CiAgICAgfQpAQCAtMTkyMSw2ICsyNDE5LDEzIEBAIHBhcnNlU3Rh
dGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgcmV0dXJuIGxvb2thaGVh
ZC50eXBlID09PSBUb2tlbi5LZXl3b3JkICYmIGxvb2thaGVhZC52YWx1ZSA9PT0ga2V5d29yZDsK
ICAgICB9CiAKKworICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIG1hdGNoZXMg
dGhlIHNwZWNpZmllZCBjb250ZXh0dWFsIGtleXdvcmQKKworICAgIGZ1bmN0aW9uIG1hdGNoQ29u
dGV4dHVhbEtleXdvcmQoa2V5d29yZCkgeworICAgICAgICByZXR1cm4gbG9va2FoZWFkLnR5cGUg
PT09IFRva2VuLklkZW50aWZpZXIgJiYgbG9va2FoZWFkLnZhbHVlID09PSBrZXl3b3JkOworICAg
IH0KKwogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIGlzIGFuIGFzc2lnbm1l
bnQgb3BlcmF0b3IKIAogICAgIGZ1bmN0aW9uIG1hdGNoQXNzaWduKCkgewpAQCAtMTk0NSwxMCAr
MjQ1MCwxMSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gY29uc3VtZVNlbWljb2xvbigpIHsKLSAgICAgICAgdmFyIGxpbmU7
CisgICAgICAgIHZhciBsaW5lLCBvbGRJbmRleCA9IGluZGV4LCBvbGRMaW5lTnVtYmVyID0gbGlu
ZU51bWJlciwKKyAgICAgICAgICAgIG9sZExpbmVTdGFydCA9IGxpbmVTdGFydCwgb2xkTG9va2Fo
ZWFkID0gbG9va2FoZWFkOwogCi0gICAgICAgIC8vIENhdGNoIHRoZSB2ZXJ5IGNvbW1vbiBjYXNl
IGZpcnN0OiBpbW1lZGlhdGVseSBhIHNlbWljb2xvbiAoVSswMDNCKS4KLSAgICAgICAgaWYgKHNv
dXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQiB8fCBtYXRjaCgnOycpKSB7CisgICAgICAg
IC8vIENhdGNoIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlIGZpcnN0OiBpbW1lZGlhdGVseSBhIHNlbWlj
b2xvbiAoY2hhciAjNTkpLgorICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09
PSA1OSkgewogICAgICAgICAgICAgbGV4KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTE5NTYsMTMgKzI0NjIsMjIgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291
cmNlRWxlbWVudAogICAgICAgICBsaW5lID0gbGluZU51bWJlcjsKICAgICAgICAgc2tpcENvbW1l
bnQoKTsKICAgICAgICAgaWYgKGxpbmVOdW1iZXIgIT09IGxpbmUpIHsKKyAgICAgICAgICAgIGlu
ZGV4ID0gb2xkSW5kZXg7CisgICAgICAgICAgICBsaW5lTnVtYmVyID0gb2xkTGluZU51bWJlcjsK
KyAgICAgICAgICAgIGxpbmVTdGFydCA9IG9sZExpbmVTdGFydDsKKyAgICAgICAgICAgIGxvb2th
aGVhZCA9IG9sZExvb2thaGVhZDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GICYmICFtYXRjaCgnfScpKSB7
Ci0gICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTsKLSAgICAgICAgfQotICAg
IH0KKyAgICAgICAgaWYgKG1hdGNoKCc7JykpIHsKKyAgICAgICAgICAgIGxleCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlICE9
PSBUb2tlbi5FT0YgJiYgIW1hdGNoKCd9JykpIHsKKyAgICAgICAgICAgIHRocm93VW5leHBlY3Rl
ZChsb29rYWhlYWQpOworICAgICAgICB9CisgICAgfQogCiAgICAgLy8gUmV0dXJuIHRydWUgaWYg
cHJvdmlkZWQgZXhwcmVzc2lvbiBpcyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uCiAKQEAgLTE5NzAs
NTIgKzI0ODUsMTM2IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQK
ICAgICAgICAgcmV0dXJuIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgfHwgZXhwci50
eXBlID09PSBTeW50YXguTWVtYmVyRXhwcmVzc2lvbjsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBp
c0Fzc2lnbmFibGVMZWZ0SGFuZFNpZGUoZXhwcikgeworICAgICAgICByZXR1cm4gaXNMZWZ0SGFu
ZFNpZGUoZXhwcikgfHwgZXhwci50eXBlID09PSBTeW50YXguT2JqZWN0UGF0dGVybiB8fCBleHBy
LnR5cGUgPT09IFN5bnRheC5BcnJheVBhdHRlcm47CisgICAgfQorCiAgICAgLy8gMTEuMS40IEFy
cmF5IEluaXRpYWxpc2VyCiAKICAgICBmdW5jdGlvbiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKSB7
Ci0gICAgICAgIHZhciBlbGVtZW50cyA9IFtdLCBzdGFydFRva2VuOworICAgICAgICB2YXIgZWxl
bWVudHMgPSBbXSwgYmxvY2tzID0gW10sIGZpbHRlciA9IG51bGwsIHRtcCwgcG9zc2libGVjb21w
cmVoZW5zaW9uID0gdHJ1ZSwKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwog
Ci0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgIGV4cGVjdCgnWycpOwot
CiAgICAgICAgIHdoaWxlICghbWF0Y2goJ10nKSkgewotICAgICAgICAgICAgaWYgKG1hdGNoKCcs
JykpIHsKKyAgICAgICAgICAgIGlmIChsb29rYWhlYWQudmFsdWUgPT09ICdmb3InICYmCisgICAg
ICAgICAgICAgICAgICAgIGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFwb3NzaWJsZWNvbXByZWhlbnNpb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuQ29tcHJlaGVuc2lvbkVycm9yKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWF0Y2hLZXl3b3JkKCdmb3InKTsKKyAgICAg
ICAgICAgICAgICB0bXAgPSBwYXJzZUZvclN0YXRlbWVudCh7aWdub3JlQm9keTogdHJ1ZX0pOwor
ICAgICAgICAgICAgICAgIHRtcC5vZiA9IHRtcC50eXBlID09PSBTeW50YXguRm9yT2ZTdGF0ZW1l
bnQ7CisgICAgICAgICAgICAgICAgdG1wLnR5cGUgPSBTeW50YXguQ29tcHJlaGVuc2lvbkJsb2Nr
OworICAgICAgICAgICAgICAgIGlmICh0bXAubGVmdC5raW5kKSB7IC8vIGNhbid0IGJlIGxldCBv
ciBjb25zdAorICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Db21w
cmVoZW5zaW9uRXJyb3IpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBibG9j
a3MucHVzaCh0bXApOworICAgICAgICAgICAgfSBlbHNlIGlmIChsb29rYWhlYWQudmFsdWUgPT09
ICdpZicgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2thaGVhZC50eXBlID09PSBU
b2tlbi5LZXl3b3JkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwb3NzaWJsZWNvbXByZWhlbnNp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuQ29tcHJl
aGVuc2lvbkVycm9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwZWN0
S2V5d29yZCgnaWYnKTsKKyAgICAgICAgICAgICAgICBleHBlY3QoJygnKTsKKyAgICAgICAgICAg
ICAgICBmaWx0ZXIgPSBwYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBleHBlY3Qo
JyknKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobG9va2FoZWFkLnZhbHVlID09PSAnLCcgJiYK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5QdW5j
dHVhdG9yKSB7CisgICAgICAgICAgICAgICAgcG9zc2libGVjb21wcmVoZW5zaW9uID0gZmFsc2U7
IC8vIG5vIGxvbmdlciBhbGxvd2VkLgogICAgICAgICAgICAgICAgIGxleCgpOwogICAgICAgICAg
ICAgICAgIGVsZW1lbnRzLnB1c2gobnVsbCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGVsZW1lbnRzLnB1c2gocGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTsKLQot
ICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJ10nKSkgewotICAgICAgICAgICAgICAgICAgICBl
eHBlY3QoJywnKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBwYXJzZVNwcmVhZE9yQXNzaWdubWVu
dEV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKHRtcCk7CisgICAg
ICAgICAgICAgICAgaWYgKHRtcCAmJiB0bXAudHlwZSA9PT0gU3ludGF4LlNwcmVhZEVsZW1lbnQp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCgnXScpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5FbGVtZW50QWZ0ZXJTcHJlYWRFbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
IShtYXRjaCgnXScpIHx8IG1hdGNoS2V5d29yZCgnZm9yJykgfHwgbWF0Y2hLZXl3b3JkKCdpZicp
KSkgeworICAgICAgICAgICAgICAgICAgICBleHBlY3QoJywnKTsgLy8gdGhpcyBsZXhlcy4KKyAg
ICAgICAgICAgICAgICAgICAgcG9zc2libGVjb21wcmVoZW5zaW9uID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgbGV4KCk7Cisg
ICAgICAgIGV4cGVjdCgnXScpOworCisgICAgICAgIGlmIChmaWx0ZXIgJiYgIWJsb2Nrcy5sZW5n
dGgpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkNvbXByZWhlbnNpb25S
ZXF1aXJlc0Jsb2NrKTsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJr
RW5kKGRlbGVnYXRlLmNyZWF0ZUFycmF5RXhwcmVzc2lvbihlbGVtZW50cyksIHN0YXJ0VG9rZW4p
OworICAgICAgICBpZiAoYmxvY2tzLmxlbmd0aCkgeworICAgICAgICAgICAgaWYgKGVsZW1lbnRz
Lmxlbmd0aCAhPT0gMSkgeworICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2Vz
LkNvbXByZWhlbnNpb25FcnJvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
bWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVDb21wcmVoZW5zaW9uRXhwcmVzc2lv
bihmaWx0ZXIsIGJsb2NrcywgZWxlbWVudHNbMF0pKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVBcnJheUV4cHJlc3Npb24oZWxl
bWVudHMpKTsKICAgICB9CiAKICAgICAvLyAxMS4xLjUgT2JqZWN0IEluaXRpYWxpc2VyCiAKLSAg
ICBmdW5jdGlvbiBwYXJzZVByb3BlcnR5RnVuY3Rpb24ocGFyYW0sIGZpcnN0KSB7Ci0gICAgICAg
IHZhciBwcmV2aW91c1N0cmljdCwgYm9keSwgc3RhcnRUb2tlbjsKKyAgICBmdW5jdGlvbiBwYXJz
ZVByb3BlcnR5RnVuY3Rpb24ob3B0aW9ucykgeworICAgICAgICB2YXIgcHJldmlvdXNTdHJpY3Qs
IHByZXZpb3VzWWllbGRBbGxvd2VkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5LAorICAgICAgICAg
ICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBz
dHJpY3Q7Ci0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgIGJvZHkgPSBw
YXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTsKLSAgICAgICAgaWYgKGZpcnN0ICYmIHN0cmlj
dCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKHBhcmFtWzBdLm5hbWUpKSB7Ci0gICAgICAgICAgICB0aHJv
d0Vycm9yVG9sZXJhbnQoZmlyc3QsIE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZSk7CisgICAgICAg
IHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRBbGxvd2VkOworICAgICAgICBzdGF0
ZS55aWVsZEFsbG93ZWQgPSBvcHRpb25zLmdlbmVyYXRvcjsKKyAgICAgICAgcGFyYW1zID0gb3B0
aW9ucy5wYXJhbXMgfHwgW107CisgICAgICAgIGRlZmF1bHRzID0gb3B0aW9ucy5kZWZhdWx0cyB8
fCBbXTsKKworICAgICAgICBib2R5ID0gcGFyc2VDb25jaXNlQm9keSgpOworICAgICAgICBpZiAo
b3B0aW9ucy5uYW1lICYmIHN0cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKHBhcmFtc1swXS5uYW1l
KSkgeworICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KG9wdGlvbnMubmFtZSwgTWVzc2Fn
ZXMuU3RyaWN0UGFyYW1OYW1lKTsKICAgICAgICAgfQogICAgICAgICBzdHJpY3QgPSBwcmV2aW91
c1N0cmljdDsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRl
RnVuY3Rpb25FeHByZXNzaW9uKG51bGwsIHBhcmFtLCBbXSwgYm9keSksIHN0YXJ0VG9rZW4pOwor
ICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBwcmV2aW91c1lpZWxkQWxsb3dlZDsKKworICAg
ICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVGdW5jdGlvbkV4
cHJlc3Npb24oCisgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgcGFyYW1zLAorICAgICAg
ICAgICAgZGVmYXVsdHMsCisgICAgICAgICAgICBib2R5LAorICAgICAgICAgICAgb3B0aW9ucy5y
ZXN0IHx8IG51bGwsCisgICAgICAgICAgICBvcHRpb25zLmdlbmVyYXRvciwKKyAgICAgICAgICAg
IGJvZHkudHlwZSAhPT0gU3ludGF4LkJsb2NrU3RhdGVtZW50CisgICAgICAgICkpOwogICAgIH0K
IAotICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSB7Ci0gICAgICAgIHZhciB0
b2tlbiwgc3RhcnRUb2tlbjsKIAotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwotICAg
ICAgICB0b2tlbiA9IGxleCgpOworICAgIGZ1bmN0aW9uIHBhcnNlUHJvcGVydHlNZXRob2RGdW5j
dGlvbihvcHRpb25zKSB7CisgICAgICAgIHZhciBwcmV2aW91c1N0cmljdCwgdG1wLCBtZXRob2Q7
CisKKyAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7CisgICAgICAgIHN0cmljdCA9IHRy
dWU7CisKKyAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoKTsKKworICAgICAgICBpZiAodG1wLnN0
cmljdGVkKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG1wLnN0cmljdGVkLCB0
bXAubWVzc2FnZSk7CisgICAgICAgIH0KKworCisgICAgICAgIG1ldGhvZCA9IHBhcnNlUHJvcGVy
dHlGdW5jdGlvbih7CisgICAgICAgICAgICBwYXJhbXM6IHRtcC5wYXJhbXMsCisgICAgICAgICAg
ICBkZWZhdWx0czogdG1wLmRlZmF1bHRzLAorICAgICAgICAgICAgcmVzdDogdG1wLnJlc3QsCisg
ICAgICAgICAgICBnZW5lcmF0b3I6IG9wdGlvbnMuZ2VuZXJhdG9yCisgICAgICAgIH0pOworCisg
ICAgICAgIHN0cmljdCA9IHByZXZpb3VzU3RyaWN0OworCisgICAgICAgIHJldHVybiBtZXRob2Q7
CisgICAgfQorCisKKyAgICBmdW5jdGlvbiBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCkgeworICAg
ICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRlKCksCisgICAgICAgICAgICB0b2tlbiA9IGxl
eCgpLAorICAgICAgICAgICAgcHJvcGVydHlLZXksCisgICAgICAgICAgICByZXN1bHQ7CiAKICAg
ICAgICAgLy8gTm90ZTogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBmcm9tIHBhcnNlT2Jq
ZWN0UHJvcGVydHkoKSwgd2hlcmUKICAgICAgICAgLy8gRU9GIGFuZCBQdW5jdHVhdG9yIHRva2Vu
cyBhcmUgYWxyZWFkeSBmaWx0ZXJlZCBvdXQuCkBAIC0yMDI0LDk1ICsyNjIzLDEzMSBAQCBwYXJz
ZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICBpZiAoc3Ry
aWN0ICYmIHRva2VuLm9jdGFsKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50
KHRva2VuLCBNZXNzYWdlcy5TdHJpY3RPY3RhbExpdGVyYWwpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0
b2tlbiksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtl
ciwgZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0b2tlbikpOwogICAgICAgICB9CiAKLSAgICAgICAg
cmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52
YWx1ZSksIHN0YXJ0VG9rZW4pOworICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uUHVu
Y3R1YXRvciAmJiB0b2tlbi52YWx1ZSA9PT0gJ1snKSB7CisgICAgICAgICAgICAvLyBGb3IgY29t
cHV0ZWQgcHJvcGVydGllcyB3ZSBzaG91bGQgc2tpcCB0aGUgWyBhbmQgXSwgYW5kCisgICAgICAg
ICAgICAvLyBjYXB0dXJlIGluIG1hcmtlciBvbmx5IHRoZSBhc3NpZ25tZW50IGV4cHJlc3Npb24g
aXRzZWxmLgorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisgICAgICAgICAg
ICBwcm9wZXJ0eUtleSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1hcmtlckFwcGx5KG1hcmtlciwgcHJvcGVydHlLZXkpOworICAgICAgICAgICAg
ZXhwZWN0KCddJyk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmll
cih0b2tlbi52YWx1ZSkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVy
dHkoKSB7Ci0gICAgICAgIHZhciB0b2tlbiwga2V5LCBpZCwgdmFsdWUsIHBhcmFtLCBzdGFydFRv
a2VuOworICAgICAgICB2YXIgdG9rZW4sIGtleSwgaWQsIHBhcmFtLCBjb21wdXRlZCwKKyAgICAg
ICAgICAgIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAgIHRva2VuID0gbG9va2Fo
ZWFkOwotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOworICAgICAgICBjb21wdXRlZCA9
ICh0b2tlbi52YWx1ZSA9PT0gJ1snICYmIHRva2VuLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3Ip
OwogCi0gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7CisgICAg
ICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyIHx8IGNvbXB1dGVkKSB7CiAK
ICAgICAgICAgICAgIGlkID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpOwogCiAgICAgICAgICAg
ICAvLyBQcm9wZXJ0eSBBc3NpZ25tZW50OiBHZXR0ZXIgYW5kIFNldHRlci4KIAotICAgICAgICAg
ICAgaWYgKHRva2VuLnZhbHVlID09PSAnZ2V0JyAmJiAhbWF0Y2goJzonKSkgeworICAgICAgICAg
ICAgaWYgKHRva2VuLnZhbHVlID09PSAnZ2V0JyAmJiAhKG1hdGNoKCc6JykgfHwgbWF0Y2goJygn
KSkpIHsKKyAgICAgICAgICAgICAgICBjb21wdXRlZCA9IChsb29rYWhlYWQudmFsdWUgPT09ICdb
Jyk7CiAgICAgICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpOwogICAg
ICAgICAgICAgICAgIGV4cGVjdCgnKCcpOwogICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpOwot
ICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKFtdKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0
eSgnZ2V0Jywga2V5LCB2YWx1ZSksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVy
biBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdnZXQnLCBrZXks
IHBhcnNlUHJvcGVydHlGdW5jdGlvbih7IGdlbmVyYXRvcjogZmFsc2UgfSksIGZhbHNlLCBmYWxz
ZSwgY29tcHV0ZWQpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0b2tlbi52YWx1
ZSA9PT0gJ3NldCcgJiYgIW1hdGNoKCc6JykpIHsKKyAgICAgICAgICAgIGlmICh0b2tlbi52YWx1
ZSA9PT0gJ3NldCcgJiYgIShtYXRjaCgnOicpIHx8IG1hdGNoKCcoJykpKSB7CisgICAgICAgICAg
ICAgICAgY29tcHV0ZWQgPSAobG9va2FoZWFkLnZhbHVlID09PSAnWycpOwogICAgICAgICAgICAg
ICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTsKICAgICAgICAgICAgICAgICBleHBl
Y3QoJygnKTsKICAgICAgICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKLSAgICAgICAgICAg
ICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uSWRlbnRpZmllcikgewotICAgICAgICAgICAg
ICAgICAgICBleHBlY3QoJyknKTsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVy
YW50KHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTsKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVByb3BlcnR5RnVuY3Rpb24oW10pOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtID0gWyBwYXJzZVZh
cmlhYmxlSWRlbnRpZmllcigpIF07Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdCgnKScpOwot
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUHJvcGVydHlGdW5jdGlvbihwYXJhbSwg
dG9rZW4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdh
dGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnc2V0Jywga2V5LCB2YWx1ZSksIHN0
YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHBhcmFtID0gWyBwYXJzZVZhcmlhYmxlSWRlbnRp
ZmllcigpIF07CisgICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ3NldCcs
IGtleSwgcGFyc2VQcm9wZXJ0eUZ1bmN0aW9uKHsgcGFyYW1zOiBwYXJhbSwgZ2VuZXJhdG9yOiBm
YWxzZSwgbmFtZTogdG9rZW4gfSksIGZhbHNlLCBmYWxzZSwgY29tcHV0ZWQpKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGV4cGVjdCgnOicpOwotICAgICAgICAgICAgdmFsdWUgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFy
a0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlkLCB2YWx1ZSksIHN0YXJ0VG9r
ZW4pOworICAgICAgICAgICAgaWYgKG1hdGNoKCc6JykpIHsKKyAgICAgICAgICAgICAgICBsZXgo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlkLCBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCksIGZh
bHNlLCBmYWxzZSwgY29tcHV0ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICht
YXRjaCgnKCcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwg
ZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2luaXQnLCBpZCwgcGFyc2VQcm9wZXJ0eU1ldGhvZEZ1
bmN0aW9uKHsgZ2VuZXJhdG9yOiBmYWxzZSB9KSwgdHJ1ZSwgZmFsc2UsIGNvbXB1dGVkKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29tcHV0ZWQpIHsKKyAgICAgICAgICAgICAg
ICAvLyBDb21wdXRlZCBwcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBmdWxsIG5vdGF0
aW9uLgorICAgICAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUu
Y3JlYXRlUHJvcGVydHkoJ2luaXQnLCBpZCwgaWQsIGZhbHNlLCB0cnVlLCBmYWxzZSkpOwogICAg
ICAgICB9CiAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5FT0YgfHwgdG9rZW4udHlw
ZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikgewotICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRv
a2VuKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJv
cGVydHlLZXkoKTsKLSAgICAgICAgICAgIGV4cGVjdCgnOicpOwotICAgICAgICAgICAgdmFsdWUg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdh
dGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGtleSwgdmFsdWUpLCBz
dGFydFRva2VuKTsKKyAgICAgICAgICAgIGlmICghbWF0Y2goJyonKSkgeworICAgICAgICAgICAg
ICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBs
ZXgoKTsKKworICAgICAgICAgICAgY29tcHV0ZWQgPSAobG9va2FoZWFkLnR5cGUgPT09IFRva2Vu
LlB1bmN0dWF0b3IgJiYgbG9va2FoZWFkLnZhbHVlID09PSAnWycpOworCisgICAgICAgICAgICBp
ZCA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTsKKworICAgICAgICAgICAgaWYgKCFtYXRjaCgn
KCcpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxleCgpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUu
Y3JlYXRlUHJvcGVydHkoJ2luaXQnLCBpZCwgcGFyc2VQcm9wZXJ0eU1ldGhvZEZ1bmN0aW9uKHsg
Z2VuZXJhdG9yOiB0cnVlIH0pLCB0cnVlLCBmYWxzZSwgY29tcHV0ZWQpKTsKICAgICAgICAgfQor
ICAgICAgICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7CisgICAgICAgIGlmIChtYXRj
aCgnOicpKSB7CisgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJB
cHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdpbml0Jywga2V5LCBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uKCksIGZhbHNlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobWF0Y2goJygnKSkgeworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5
KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2luaXQnLCBrZXksIHBhcnNlUHJvcGVy
dHlNZXRob2RGdW5jdGlvbih7IGdlbmVyYXRvcjogZmFsc2UgfSksIHRydWUsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICB9CisgICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7CiAgICAgfQog
Ci0gICAgZnVuY3Rpb24gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpIHsKLSAgICAgICAgdmFyIHBy
b3BlcnRpZXMgPSBbXSwgcHJvcGVydHksIG5hbWUsIGtleSwga2luZCwgbWFwID0ge30sIHRvU3Ry
aW5nID0gU3RyaW5nLCBzdGFydFRva2VuOworICAgIGZ1bmN0aW9uIGdldEZpZWxkTmFtZShrZXkp
IHsKKyAgICAgICAgdmFyIHRvU3RyaW5nID0gU3RyaW5nOworICAgICAgICBpZiAoa2V5LnR5cGUg
PT09IFN5bnRheC5JZGVudGlmaWVyKSB7CisgICAgICAgICAgICByZXR1cm4ga2V5Lm5hbWU7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKGtleS52YWx1ZSk7CisgICAgfQogCi0g
ICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CisgICAgZnVuY3Rpb24gcGFyc2VPYmplY3RJ
bml0aWFsaXNlcigpIHsKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbXSwgcHJvcGVydHksIG5h
bWUsIGtpbmQsIHN0b3JlZEtpbmQsIG1hcCA9IG5ldyBTdHJpbmdNYXAoKSwKKyAgICAgICAgICAg
IG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAgIGV4cGVjdCgneycpOwogCiAgICAg
ICAgIHdoaWxlICghbWF0Y2goJ30nKSkgewogICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU9i
amVjdFByb3BlcnR5KCk7CiAKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5rZXkudHlwZSA9PT0g
U3ludGF4LklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgICAgICBuYW1lID0gcHJvcGVydHkua2V5
Lm5hbWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG5hbWUgPSB0b1N0
cmluZyhwcm9wZXJ0eS5rZXkudmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAga2lu
ZCA9IChwcm9wZXJ0eS5raW5kID09PSAnaW5pdCcpID8gUHJvcGVydHlLaW5kLkRhdGEgOiAocHJv
cGVydHkua2luZCA9PT0gJ2dldCcpID8gUHJvcGVydHlLaW5kLkdldCA6IFByb3BlcnR5S2luZC5T
ZXQ7Ci0KLSAgICAgICAgICAgIGtleSA9ICckJyArIG5hbWU7Ci0gICAgICAgICAgICBpZiAoT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkgewotICAgICAgICAg
ICAgICAgIGlmIChtYXBba2V5XSA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0cmljdCAmJiBraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJp
Y3REdXBsaWNhdGVQcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2lu
ZCAhPT0gUHJvcGVydHlLaW5kLkRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JEYXRhUHJvcGVydHkpOworICAgICAg
ICAgICAgaWYgKCFwcm9wZXJ0eS5jb21wdXRlZCkgeworICAgICAgICAgICAgICAgIG5hbWUgPSBn
ZXRGaWVsZE5hbWUocHJvcGVydHkua2V5KTsKKyAgICAgICAgICAgICAgICBraW5kID0gKHByb3Bl
cnR5LmtpbmQgPT09ICdpbml0JykgPyBQcm9wZXJ0eUtpbmQuRGF0YSA6IChwcm9wZXJ0eS5raW5k
ID09PSAnZ2V0JykgPyBQcm9wZXJ0eUtpbmQuR2V0IDogUHJvcGVydHlLaW5kLlNldDsKKworICAg
ICAgICAgICAgICAgIGlmIChtYXAuaGFzKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0
b3JlZEtpbmQgPSBtYXAuZ2V0KG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVk
S2luZCA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzdHJpY3QgJiYga2luZCA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdER1cGxp
Y2F0ZVByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCAh
PT0gUHJvcGVydHlLaW5kLkRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMu
QWNjZXNzb3JEYXRhUHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChzdG9yZWRLaW5kICYga2luZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuQWNjZXNzb3JHZXRTZXQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IG1hcC5zZXQobmFtZSwgc3RvcmVkS2luZCB8IGtpbmQpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdl
cy5BY2Nlc3NvckRhdGFQcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bWFwW2tleV0gJiBraW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9s
ZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yR2V0U2V0KTsKLSAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBtYXAuc2V0KG5hbWUsIGtpbmQpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBtYXBba2V5XSB8PSBraW5kOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtYXBba2V5XSA9IGtpbmQ7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CkBAIC0yMTI0LDcgKzI3NTks
MzIgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogCiAgICAgICAg
IGV4cGVjdCgnfScpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRl
LmNyZWF0ZU9iamVjdEV4cHJlc3Npb24ocHJvcGVydGllcyksIHN0YXJ0VG9rZW4pOworICAgICAg
ICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVPYmplY3RFeHByZXNz
aW9uKHByb3BlcnRpZXMpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVRlbXBsYXRlRWxl
bWVudChvcHRpb24pIHsKKyAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpLAorICAg
ICAgICAgICAgdG9rZW4gPSBzY2FuVGVtcGxhdGVFbGVtZW50KG9wdGlvbik7CisgICAgICAgIGlm
IChzdHJpY3QgJiYgdG9rZW4ub2N0YWwpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4s
IE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVGVtcGxhdGVFbGVtZW50KHsgcmF3
OiB0b2tlbi52YWx1ZS5yYXcsIGNvb2tlZDogdG9rZW4udmFsdWUuY29va2VkIH0sIHRva2VuLnRh
aWwpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZVRlbXBsYXRlTGl0ZXJhbCgpIHsKKyAg
ICAgICAgdmFyIHF1YXNpLCBxdWFzaXMsIGV4cHJlc3Npb25zLCBtYXJrZXIgPSBtYXJrZXJDcmVh
dGUoKTsKKworICAgICAgICBxdWFzaSA9IHBhcnNlVGVtcGxhdGVFbGVtZW50KHsgaGVhZDogdHJ1
ZSB9KTsKKyAgICAgICAgcXVhc2lzID0gWyBxdWFzaSBdOworICAgICAgICBleHByZXNzaW9ucyA9
IFtdOworCisgICAgICAgIHdoaWxlICghcXVhc2kudGFpbCkgeworICAgICAgICAgICAgZXhwcmVz
c2lvbnMucHVzaChwYXJzZUV4cHJlc3Npb24oKSk7CisgICAgICAgICAgICBxdWFzaSA9IHBhcnNl
VGVtcGxhdGVFbGVtZW50KHsgaGVhZDogZmFsc2UgfSk7CisgICAgICAgICAgICBxdWFzaXMucHVz
aChxdWFzaSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2Vy
LCBkZWxlZ2F0ZS5jcmVhdGVUZW1wbGF0ZUxpdGVyYWwocXVhc2lzLCBleHByZXNzaW9ucykpOwog
ICAgIH0KIAogICAgIC8vIDExLjEuNiBUaGUgR3JvdXBpbmcgT3BlcmF0b3IKQEAgLTIxMzQsNiAr
Mjc5NCw4IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKIAogICAg
ICAgICBleHBlY3QoJygnKTsKIAorICAgICAgICArK3N0YXRlLnBhcmVudGhlc2l6ZWRDb3VudDsK
KwogICAgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uKCk7CiAKICAgICAgICAgZXhwZWN0KCcp
Jyk7CkBAIC0yMTQ1LDc1ICsyODA3LDEwMyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VT
b3VyY2VFbGVtZW50CiAgICAgLy8gMTEuMSBQcmltYXJ5IEV4cHJlc3Npb25zCiAKICAgICBmdW5j
dGlvbiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgdHlwZSwgdG9rZW4s
IGV4cHIsIHN0YXJ0VG9rZW47Ci0KLSAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKLSAgICAgICAg
ICAgIHJldHVybiBwYXJzZUdyb3VwRXhwcmVzc2lvbigpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKG1hdGNoKCdbJykpIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZUFycmF5SW5pdGlhbGlz
ZXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtYXRjaCgneycpKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpOwotICAgICAgICB9CisgICAgICAgIHZh
ciBtYXJrZXIsIHR5cGUsIHRva2VuLCBleHByOwogCiAgICAgICAgIHR5cGUgPSBsb29rYWhlYWQu
dHlwZTsKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKIAogICAgICAgICBpZiAodHlw
ZSA9PT0gVG9rZW4uSWRlbnRpZmllcikgewotICAgICAgICAgICAgZXhwciA9ICBkZWxlZ2F0ZS5j
cmVhdGVJZGVudGlmaWVyKGxleCgpLnZhbHVlKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09
PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7
CisgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKKyAgICAgICAgICAgIHJldHVy
biBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIobGV4KCkudmFs
dWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5TdHJpbmdMaXRl
cmFsIHx8IHR5cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7CiAgICAgICAgICAgICBpZiAo
c3RyaWN0ICYmIGxvb2thaGVhZC5vY3RhbCkgewogICAgICAgICAgICAgICAgIHRocm93RXJyb3JU
b2xlcmFudChsb29rYWhlYWQsIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChsZXgoKSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkgeworICAgICAgICAg
ICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBw
bHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKGxleCgpKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkgeworICAgICAgICAgICAgaWYgKG1h
dGNoS2V5d29yZCgndGhpcycpKSB7CisgICAgICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3Jl
YXRlKCk7CisgICAgICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
cmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVGhpc0V4cHJlc3Npb24oKSk7CisgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2Z1bmN0aW9uJykpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ3RoaXMnKSkgeworCisgICAg
ICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdjbGFzcycpKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHBhcnNlQ2xhc3NFeHByZXNzaW9uKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChtYXRjaEtleXdvcmQoJ3N1cGVyJykpIHsKKyAgICAgICAgICAgICAgICBtYXJrZXIgPSBt
YXJrZXJDcmVhdGUoKTsKICAgICAgICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgICAgICBl
eHByID0gZGVsZWdhdGUuY3JlYXRlVGhpc0V4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxleCgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVy
KCdzdXBlcicpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBU
b2tlbi5Cb29sZWFuTGl0ZXJhbCkgeworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGUgPT09
IFRva2VuLkJvb2xlYW5MaXRlcmFsKSB7CisgICAgICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVh
dGUoKTsKICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAgICAgICAgICAgICB0b2tlbi52YWx1
ZSA9ICh0b2tlbi52YWx1ZSA9PT0gJ3RydWUnKTsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0
ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tl
bi5OdWxsTGl0ZXJhbCkgeworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwg
ZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0b2tlbikpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsKSB7CisgICAgICAgICAgICBtYXJrZXIgPSBtYXJr
ZXJDcmVhdGUoKTsKICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAgICAgICAgICAgICB0b2tl
bi52YWx1ZSA9IG51bGw7Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJh
bCh0b2tlbik7Ci0gICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJy8nKSB8fCBtYXRjaCgnLz0nKSkg
ewotICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQnKSB7
Ci0gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwoY29sbGVjdFJl
Z2V4KCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHByID0gZGVs
ZWdhdGUuY3JlYXRlTGl0ZXJhbChzY2FuUmVnRXhwKCkpOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0
b2tlbikpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1hdGNoKCdbJykpIHsKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtYXRjaCgneycpKSB7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VPYmplY3RJbml0aWFs
aXNlcigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZUdyb3VwRXhwcmVzc2lvbigpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1hdGNoKCcvJykgfHwgbWF0Y2goJy89JykpIHsKKyAgICAgICAgICAgIG1hcmtlciA9IG1h
cmtlckNyZWF0ZSgpOworICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwo
c2NhblJlZ0V4cCgpKTsKICAgICAgICAgICAgIHBlZWsoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHRocm93VW5leHBlY3RlZChsZXgoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFy
a2VyQXBwbHkobWFya2VyLCBleHByKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlID09
PSBUb2tlbi5UZW1wbGF0ZSkgeworICAgICAgICAgICAgcmV0dXJuIHBhcnNlVGVtcGxhdGVMaXRl
cmFsKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChleHBy
LCBzdGFydFRva2VuKTsKKyAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxleCgpKTsKICAgICB9CiAK
ICAgICAvLyAxMS4yIExlZnQtSGFuZC1TaWRlIEV4cHJlc3Npb25zCiAKICAgICBmdW5jdGlvbiBw
YXJzZUFyZ3VtZW50cygpIHsKLSAgICAgICAgdmFyIGFyZ3MgPSBbXTsKKyAgICAgICAgdmFyIGFy
Z3MgPSBbXSwgYXJnOwogCiAgICAgICAgIGV4cGVjdCgnKCcpOwogCiAgICAgICAgIGlmICghbWF0
Y2goJyknKSkgewogICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgYXJncy5wdXNoKHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSk7CisgICAgICAg
ICAgICAgICAgYXJnID0gcGFyc2VTcHJlYWRPckFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAg
ICAgICAgICAgICAgYXJncy5wdXNoKGFyZyk7CisKICAgICAgICAgICAgICAgICBpZiAobWF0Y2go
JyknKSkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGFyZy50eXBlID09PSBTeW50YXguU3ByZWFkRWxlbWVudCkgeworICAgICAgICAgICAg
ICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5FbGVtZW50QWZ0ZXJTcHJlYWRFbGVtZW50
KTsKICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBleHBlY3QoJywnKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjIyMywxNyArMjkxMywyNCBAQCBwYXJzZVN0YXRl
bWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIHJldHVybiBhcmdzOwogICAg
IH0KIAotICAgIGZ1bmN0aW9uIHBhcnNlTm9uQ29tcHV0ZWRQcm9wZXJ0eSgpIHsKLSAgICAgICAg
dmFyIHRva2VuLCBzdGFydFRva2VuOworICAgIGZ1bmN0aW9uIHBhcnNlU3ByZWFkT3JBc3NpZ25t
ZW50RXhwcmVzc2lvbigpIHsKKyAgICAgICAgaWYgKG1hdGNoKCcuLi4nKSkgeworICAgICAgICAg
ICAgdmFyIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOworICAgICAgICAgICAgbGV4KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVTcHJlYWRF
bGVtZW50KHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKSkpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgfQogCi0gICAgICAgIHN0
YXJ0VG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgIHRva2VuID0gbGV4KCk7CisgICAgZnVuY3Rp
b24gcGFyc2VOb25Db21wdXRlZFByb3BlcnR5KCkgeworICAgICAgICB2YXIgbWFya2VyID0gbWFy
a2VyQ3JlYXRlKCksCisgICAgICAgICAgICB0b2tlbiA9IGxleCgpOwogCiAgICAgICAgIGlmICgh
aXNJZGVudGlmaWVyTmFtZSh0b2tlbikpIHsKICAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0
b2tlbik7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxl
Z2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAgICAg
IHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9r
ZW4udmFsdWUpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZU5vbkNvbXB1dGVkTWVtYmVy
KCkgewpAQCAtMjI1NSw2MyArMjk1Miw0OSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VT
b3VyY2VFbGVtZW50CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VOZXdFeHByZXNzaW9uKCkg
ewotICAgICAgICB2YXIgY2FsbGVlLCBhcmdzLCBzdGFydFRva2VuOworICAgICAgICB2YXIgY2Fs
bGVlLCBhcmdzLCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAotICAgICAgICBzdGFydFRva2Vu
ID0gbG9va2FoZWFkOwogICAgICAgICBleHBlY3RLZXl3b3JkKCduZXcnKTsKICAgICAgICAgY2Fs
bGVlID0gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKCk7CiAgICAgICAgIGFyZ3MgPSBtYXRj
aCgnKCcpID8gcGFyc2VBcmd1bWVudHMoKSA6IFtdOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0
ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZU5ld0V4cHJlc3Npb24oY2FsbGVlLCBhcmdzKSwgc3Rh
cnRUb2tlbik7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNy
ZWF0ZU5ld0V4cHJlc3Npb24oY2FsbGVlLCBhcmdzKSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uQWxsb3dDYWxsKCkgewotICAgICAgICB2YXIgcHJl
dmlvdXNBbGxvd0luLCBleHByLCBhcmdzLCBwcm9wZXJ0eSwgc3RhcnRUb2tlbjsKKyAgICAgICAg
dmFyIGV4cHIsIGFyZ3MsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCi0gICAgICAgIHN0YXJ0
VG9rZW4gPSBsb29rYWhlYWQ7Ci0KLSAgICAgICAgcHJldmlvdXNBbGxvd0luID0gc3RhdGUuYWxs
b3dJbjsKLSAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7CiAgICAgICAgIGV4cHIgPSBtYXRj
aEtleXdvcmQoJ25ldycpID8gcGFyc2VOZXdFeHByZXNzaW9uKCkgOiBwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgIHN0YXRlLmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47CiAKLSAg
ICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgaWYgKG1hdGNoKCcuJykpIHsKLSAgICAgICAg
ICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlTm9uQ29tcHV0ZWRNZW1iZXIoKTsKLSAgICAgICAgICAg
ICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignLicsIGV4cHIsIHBy
b3BlcnR5KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJygnKSkgeworICAgICAgICB3
aGlsZSAobWF0Y2goJy4nKSB8fCBtYXRjaCgnWycpIHx8IG1hdGNoKCcoJykgfHwgbG9va2FoZWFk
LnR5cGUgPT09IFRva2VuLlRlbXBsYXRlKSB7CisgICAgICAgICAgICBpZiAobWF0Y2goJygnKSkg
ewogICAgICAgICAgICAgICAgIGFyZ3MgPSBwYXJzZUFyZ3VtZW50cygpOwotICAgICAgICAgICAg
ICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVDYWxsRXhwcmVzc2lvbihleHByLCBhcmdzKTsKKyAg
ICAgICAgICAgICAgICBleHByID0gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVD
YWxsRXhwcmVzc2lvbihleHByLCBhcmdzKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNo
KCdbJykpIHsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlQ29tcHV0ZWRNZW1iZXIo
KTsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lv
bignWycsIGV4cHIsIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBleHByID0gbWFya2VyQXBw
bHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCdbJywgZXhwciwgcGFy
c2VDb21wdXRlZE1lbWJlcigpKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCcuJykp
IHsKKyAgICAgICAgICAgICAgICBleHByID0gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVNZW1iZXJFeHByZXNzaW9uKCcuJywgZXhwciwgcGFyc2VOb25Db21wdXRlZE1lbWJlcigp
KSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGV4cHIgPSBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVRhZ2dl
ZFRlbXBsYXRlRXhwcmVzc2lvbihleHByLCBwYXJzZVRlbXBsYXRlTGl0ZXJhbCgpKSk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4p
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGV4cHI7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgcHJldmlvdXNB
bGxvd0luLCBleHByLCBwcm9wZXJ0eSwgc3RhcnRUb2tlbjsKLQotICAgICAgICBzdGFydFRva2Vu
ID0gbG9va2FoZWFkOworICAgICAgICB2YXIgZXhwciwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7
CiAKLSAgICAgICAgcHJldmlvdXNBbGxvd0luID0gc3RhdGUuYWxsb3dJbjsKICAgICAgICAgZXhw
ciA9IG1hdGNoS2V5d29yZCgnbmV3JykgPyBwYXJzZU5ld0V4cHJlc3Npb24oKSA6IHBhcnNlUHJp
bWFyeUV4cHJlc3Npb24oKTsKLSAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJ
bjsKIAotICAgICAgICB3aGlsZSAobWF0Y2goJy4nKSB8fCBtYXRjaCgnWycpKSB7CisgICAgICAg
IHdoaWxlIChtYXRjaCgnLicpIHx8IG1hdGNoKCdbJykgfHwgbG9va2FoZWFkLnR5cGUgPT09IFRv
a2VuLlRlbXBsYXRlKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2goJ1snKSkgewotICAgICAgICAg
ICAgICAgIHByb3BlcnR5ID0gcGFyc2VDb21wdXRlZE1lbWJlcigpOwotICAgICAgICAgICAgICAg
IGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCdbJywgZXhwciwgcHJvcGVy
dHkpOworICAgICAgICAgICAgICAgIGV4cHIgPSBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRl
LmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJ1snLCBleHByLCBwYXJzZUNvbXB1dGVkTWVtYmVyKCkp
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJy4nKSkgeworICAgICAgICAgICAgICAg
IGV4cHIgPSBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Np
b24oJy4nLCBleHByLCBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCkpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZU5vbkNvbXB1dGVkTWVtYmVy
KCk7Ci0gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Np
b24oJy4nLCBleHByLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgZXhwciA9IG1hcmtlckFw
cGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVGFnZ2VkVGVtcGxhdGVFeHByZXNzaW9uKGV4cHIs
IHBhcnNlVGVtcGxhdGVMaXRlcmFsKCkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRl
bGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gZXhwcjsKQEAgLTIzMjAsMjQgKzMwMDMsMjYgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUs
IHBhcnNlU291cmNlRWxlbWVudAogICAgIC8vIDExLjMgUG9zdGZpeCBFeHByZXNzaW9ucwogCiAg
ICAgZnVuY3Rpb24gcGFyc2VQb3N0Zml4RXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIGV4cHIs
IHRva2VuLCBzdGFydFRva2VuID0gbG9va2FoZWFkOwotCi0gICAgICAgIGV4cHIgPSBwYXJzZUxl
ZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwoKTsKKyAgICAgICAgdmFyIG1hcmtlciA9IG1h
cmtlckNyZWF0ZSgpLAorICAgICAgICAgICAgZXhwciA9IHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVz
c2lvbkFsbG93Q2FsbCgpLAorICAgICAgICAgICAgdG9rZW47CiAKLSAgICAgICAgaWYgKGxvb2th
aGVhZC50eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yKSB7Ci0gICAgICAgICAgICBpZiAoKG1hdGNo
KCcrKycpIHx8IG1hdGNoKCctLScpKSAmJiAhcGVla0xpbmVUZXJtaW5hdG9yKCkpIHsKLSAgICAg
ICAgICAgICAgICAvLyAxMS4zLjEsIDExLjMuMgotICAgICAgICAgICAgICAgIGlmIChzdHJpY3Qg
JiYgZXhwci50eXBlID09PSBTeW50YXguSWRlbnRpZmllciAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGV4
cHIubmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBN
ZXNzYWdlcy5TdHJpY3RMSFNQb3N0Zml4KTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGlm
IChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvcikgeworICAgICAgICAgICAgcmV0
dXJuIGV4cHI7CisgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICghaXNMZWZ0SGFuZFNp
ZGUoZXhwcikpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBN
ZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgIGlmICgobWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpICYmICFwZWVrTGluZVRlcm1pbmF0
b3IoKSkgeworICAgICAgICAgICAgLy8gMTEuMy4xLCAxMS4zLjIKKyAgICAgICAgICAgIGlmIChz
dHJpY3QgJiYgZXhwci50eXBlID09PSBTeW50YXguSWRlbnRpZmllciAmJiBpc1Jlc3RyaWN0ZWRX
b3JkKGV4cHIubmFtZSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30s
IE1lc3NhZ2VzLlN0cmljdExIU1Bvc3RmaXgpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgdG9rZW4gPSBsZXgoKTsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFy
a0VuZChkZWxlZ2F0ZS5jcmVhdGVQb3N0Zml4RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwciks
IHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkgewor
ICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2ln
bm1lbnQpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0b2tlbiA9IGxleCgpOworICAg
ICAgICAgICAgZXhwciA9IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlUG9zdGZp
eEV4cHJlc3Npb24odG9rZW4udmFsdWUsIGV4cHIpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBleHByOwpAQCAtMjM0NiwxMiArMzAzMSwxNCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50CiAgICAgLy8gMTEuNCBVbmFyeSBPcGVyYXRvcnMKIAogICAgIGZ1
bmN0aW9uIHBhcnNlVW5hcnlFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgdG9rZW4sIGV4cHIs
IHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBtYXJrZXIsIHRva2VuLCBleHByOwogCiAgICAgICAg
IGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQudHlw
ZSAhPT0gVG9rZW4uS2V5d29yZCkgewotICAgICAgICAgICAgZXhwciA9IHBhcnNlUG9zdGZpeEV4
cHJlc3Npb24oKTsKLSAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKysnKSB8fCBtYXRjaCgnLS0n
KSkgewotICAgICAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKKyAgICAgICAgICAgIHJl
dHVybiBwYXJzZVBvc3RmaXhFeHByZXNzaW9uKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpIHsKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtl
ckNyZWF0ZSgpOwogICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTsKICAgICAgICAgICAgIGV4cHIg
PSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpOwogICAgICAgICAgICAgLy8gMTEuNC40LCAxMS40LjUK
QEAgLTIzNjAsMzEgKzMwNDcsMzEgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNl
RWxlbWVudAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRl
KGV4cHIpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdl
cy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9
LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1
ZSwgZXhwcik7Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFy
dFRva2VuKTsKLSAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKycpIHx8IG1hdGNoKCctJykgfHwg
bWF0Y2goJ34nKSB8fCBtYXRjaCgnIScpKSB7Ci0gICAgICAgICAgICBzdGFydFRva2VuID0gbG9v
a2FoZWFkOworICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUu
Y3JlYXRlVW5hcnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobWF0Y2goJysnKSB8fCBtYXRjaCgnLScpIHx8IG1hdGNoKCd+JykgfHwgbWF0
Y2goJyEnKSkgeworICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAgICAgICAg
ICAgICB0b2tlbiA9IGxleCgpOwogICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNz
aW9uKCk7Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVW5hcnlFeHByZXNzaW9u
KHRva2VuLnZhbHVlLCBleHByKTsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5k
KGV4cHIsIHN0YXJ0VG9rZW4pOwotICAgICAgICB9IGVsc2UgaWYgKG1hdGNoS2V5d29yZCgnZGVs
ZXRlJykgfHwgbWF0Y2hLZXl3b3JkKCd2b2lkJykgfHwgbWF0Y2hLZXl3b3JkKCd0eXBlb2YnKSkg
ewotICAgICAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKKyAgICAgICAgICAgIHJldHVy
biBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tl
bi52YWx1ZSwgZXhwcikpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgn
ZGVsZXRlJykgfHwgbWF0Y2hLZXl3b3JkKCd2b2lkJykgfHwgbWF0Y2hLZXl3b3JkKCd0eXBlb2Yn
KSkgeworICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAgICAgICAgICAgICB0
b2tlbiA9IGxleCgpOwogICAgICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7
Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVW5hcnlFeHByZXNzaW9uKHRva2Vu
LnZhbHVlLCBleHByKTsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIs
IHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgZXhwciA9IG1hcmtlckFwcGx5KG1hcmtlciwgZGVs
ZWdhdGUuY3JlYXRlVW5hcnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKSk7CiAgICAgICAg
ICAgICBpZiAoc3RyaWN0ICYmIGV4cHIub3BlcmF0b3IgPT09ICdkZWxldGUnICYmIGV4cHIuYXJn
dW1lbnQudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHsKICAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLlN0cmljdERlbGV0ZSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBleHByID0gcGFyc2VQb3N0Zml4RXhwcmVz
c2lvbigpOworICAgICAgICAgICAgcmV0dXJuIGV4cHI7CiAgICAgICAgIH0KIAotICAgICAgICBy
ZXR1cm4gZXhwcjsKKyAgICAgICAgcmV0dXJuIHBhcnNlUG9zdGZpeEV4cHJlc3Npb24oKTsKICAg
ICB9CiAKICAgICBmdW5jdGlvbiBiaW5hcnlQcmVjZWRlbmNlKHRva2VuLCBhbGxvd0luKSB7CkBA
IC0yNDY3LDI1ICszMTU0LDI5IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVs
ZW1lbnQKICAgICAvLyAxMS4xMSBCaW5hcnkgTG9naWNhbCBPcGVyYXRvcnMKIAogICAgIGZ1bmN0
aW9uIHBhcnNlQmluYXJ5RXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIG1hcmtlciwgbWFya2Vy
cywgZXhwciwgdG9rZW4sIHByZWMsIHN0YWNrLCByaWdodCwgb3BlcmF0b3IsIGxlZnQsIGk7Cisg
ICAgICAgIHZhciBleHByLCB0b2tlbiwgcHJlYywgcHJldmlvdXNBbGxvd0luLCBzdGFjaywgcmln
aHQsIG9wZXJhdG9yLCBsZWZ0LCBpLAorICAgICAgICAgICAgbWFya2VyLCBtYXJrZXJzOwogCi0g
ICAgICAgIG1hcmtlciA9IGxvb2thaGVhZDsKKyAgICAgICAgcHJldmlvdXNBbGxvd0luID0gc3Rh
dGUuYWxsb3dJbjsKKyAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7CisKKyAgICAgICAgbWFy
a2VyID0gbWFya2VyQ3JlYXRlKCk7CiAgICAgICAgIGxlZnQgPSBwYXJzZVVuYXJ5RXhwcmVzc2lv
bigpOwogCiAgICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotICAgICAgICBwcmVjID0gYmluYXJ5
UHJlY2VkZW5jZSh0b2tlbiwgc3RhdGUuYWxsb3dJbik7CisgICAgICAgIHByZWMgPSBiaW5hcnlQ
cmVjZWRlbmNlKHRva2VuLCBwcmV2aW91c0FsbG93SW4pOwogICAgICAgICBpZiAocHJlYyA9PT0g
MCkgewogICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgICAgIH0KICAgICAgICAgdG9rZW4u
cHJlYyA9IHByZWM7CiAgICAgICAgIGxleCgpOwogCi0gICAgICAgIG1hcmtlcnMgPSBbbWFya2Vy
LCBsb29rYWhlYWRdOworICAgICAgICBtYXJrZXJzID0gW21hcmtlciwgbWFya2VyQ3JlYXRlKCld
OwogICAgICAgICByaWdodCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CiAKICAgICAgICAgc3Rh
Y2sgPSBbbGVmdCwgdG9rZW4sIHJpZ2h0XTsKIAotICAgICAgICB3aGlsZSAoKHByZWMgPSBiaW5h
cnlQcmVjZWRlbmNlKGxvb2thaGVhZCwgc3RhdGUuYWxsb3dJbikpID4gMCkgeworICAgICAgICB3
aGlsZSAoKHByZWMgPSBiaW5hcnlQcmVjZWRlbmNlKGxvb2thaGVhZCwgcHJldmlvdXNBbGxvd0lu
KSkgPiAwKSB7CiAKICAgICAgICAgICAgIC8vIFJlZHVjZTogbWFrZSBhIGJpbmFyeSBleHByZXNz
aW9uIGZyb20gdGhlIHRocmVlIHRvcG1vc3QgZW50cmllcy4KICAgICAgICAgICAgIHdoaWxlICgo
c3RhY2subGVuZ3RoID4gMikgJiYgKHByZWMgPD0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMl0ucHJl
YykpIHsKQEAgLTI0OTQsMjAgKzMxODUsMjMgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNl
U291cmNlRWxlbWVudAogICAgICAgICAgICAgICAgIGxlZnQgPSBzdGFjay5wb3AoKTsKICAgICAg
ICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihvcGVyYXRv
ciwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgICAgIG1hcmtlcnMucG9wKCk7Ci0gICAgICAg
ICAgICAgICAgbWFya2VyID0gbWFya2Vyc1ttYXJrZXJzLmxlbmd0aCAtIDFdOwotICAgICAgICAg
ICAgICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgbWFya2VyKTsKKyAgICAgICAgICAgICAgICBt
YXJrZXIgPSBtYXJrZXJzLnBvcCgpOworICAgICAgICAgICAgICAgIG1hcmtlckFwcGx5KG1hcmtl
ciwgZXhwcik7CiAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChleHByKTsKKyAgICAgICAgICAg
ICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gU2hpZnQuCiAgICAgICAgICAgICB0b2tlbiA9IGxleCgpOwogICAgICAgICAgICAgdG9rZW4u
cHJlYyA9IHByZWM7CiAgICAgICAgICAgICBzdGFjay5wdXNoKHRva2VuKTsKLSAgICAgICAgICAg
IG1hcmtlcnMucHVzaChsb29rYWhlYWQpOworICAgICAgICAgICAgbWFya2Vycy5wdXNoKG1hcmtl
ckNyZWF0ZSgpKTsKICAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpOwog
ICAgICAgICAgICAgc3RhY2sucHVzaChleHByKTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRl
LmFsbG93SW4gPSBwcmV2aW91c0FsbG93SW47CisKICAgICAgICAgLy8gRmluYWwgcmVkdWNlIHRv
IGNsZWFuLXVwIHRoZSBzdGFjay4KICAgICAgICAgaSA9IHN0YWNrLmxlbmd0aCAtIDE7CiAgICAg
ICAgIGV4cHIgPSBzdGFja1tpXTsKQEAgLTI1MTYsNyArMzIxMCw3IEBAIHBhcnNlU3RhdGVtZW50
OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5j
cmVhdGVCaW5hcnlFeHByZXNzaW9uKHN0YWNrW2kgLSAxXS52YWx1ZSwgc3RhY2tbaSAtIDJdLCBl
eHByKTsKICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgIG1hcmtlciA9IG1hcmtlcnMu
cG9wKCk7Ci0gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIG1hcmtlcik7CisgICAg
ICAgICAgICBtYXJrZXJBcHBseShtYXJrZXIsIGV4cHIpOwogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIGV4cHI7CkBAIC0yNTI2LDEwICszMjIwLDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUs
IHBhcnNlU291cmNlRWxlbWVudAogICAgIC8vIDExLjEyIENvbmRpdGlvbmFsIE9wZXJhdG9yCiAK
ICAgICBmdW5jdGlvbiBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFy
IGV4cHIsIHByZXZpb3VzQWxsb3dJbiwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBzdGFydFRva2Vu
OwotCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7Ci0KKyAgICAgICAgdmFyIGV4cHIs
IHByZXZpb3VzQWxsb3dJbiwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBtYXJrZXIgPSBtYXJrZXJD
cmVhdGUoKTsKICAgICAgICAgZXhwciA9IHBhcnNlQmluYXJ5RXhwcmVzc2lvbigpOwogCiAgICAg
ICAgIGlmIChtYXRjaCgnPycpKSB7CkBAIC0yNTQxLDggKzMyMzIsNyBAQCBwYXJzZVN0YXRlbWVu
dDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICBleHBlY3QoJzonKTsKICAg
ICAgICAgICAgIGFsdGVybmF0ZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKIAotICAg
ICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihleHBy
LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpOwotICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChl
eHByLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgIGV4cHIgPSBtYXJrZXJBcHBseShtYXJrZXIs
IGRlbGVnYXRlLmNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihleHByLCBjb25zZXF1ZW50LCBh
bHRlcm5hdGUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBleHByOwpAQCAtMjU1MCw1
NSArMzI0MCwyNzQgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
CiAgICAgLy8gMTEuMTMgQXNzaWdubWVudCBPcGVyYXRvcnMKIAorICAgIC8vIDEyLjE0LjUgQXNz
aWdubWVudFBhdHRlcm4KKworICAgIGZ1bmN0aW9uIHJlaW50ZXJwcmV0QXNBc3NpZ25tZW50Qmlu
ZGluZ1BhdHRlcm4oZXhwcikgeworICAgICAgICB2YXIgaSwgbGVuLCBwcm9wZXJ0eSwgZWxlbWVu
dDsKKworICAgICAgICBpZiAoZXhwci50eXBlID09PSBTeW50YXguT2JqZWN0RXhwcmVzc2lvbikg
eworICAgICAgICAgICAgZXhwci50eXBlID0gU3ludGF4Lk9iamVjdFBhdHRlcm47CisgICAgICAg
ICAgICBmb3IgKGkgPSAwLCBsZW4gPSBleHByLnByb3BlcnRpZXMubGVuZ3RoOyBpIDwgbGVuOyBp
ICs9IDEpIHsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGV4cHIucHJvcGVydGllc1tpXTsK
KyAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkua2luZCAhPT0gJ2luaXQnKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1l
bnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZWludGVycHJldEFzQXNz
aWdubWVudEJpbmRpbmdQYXR0ZXJuKHByb3BlcnR5LnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5BcnJheUV4cHJlc3Npb24pIHsK
KyAgICAgICAgICAgIGV4cHIudHlwZSA9IFN5bnRheC5BcnJheVBhdHRlcm47CisgICAgICAgICAg
ICBmb3IgKGkgPSAwLCBsZW4gPSBleHByLmVsZW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAx
KSB7CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGV4cHIuZWxlbWVudHNbaV07CisgICAgICAg
ICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCkgeworICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEFzQXNzaWdubWVudEJp
bmRpbmdQYXR0ZXJuKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyKSB7Cisg
ICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZChleHByLm5hbWUpKSB7CisgICAgICAgICAg
ICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZXhwci50eXBlID09PSBTeW50YXguU3By
ZWFkRWxlbWVudCkgeworICAgICAgICAgICAgcmVpbnRlcnByZXRBc0Fzc2lnbm1lbnRCaW5kaW5n
UGF0dGVybihleHByLmFyZ3VtZW50KTsKKyAgICAgICAgICAgIGlmIChleHByLmFyZ3VtZW50LnR5
cGUgPT09IFN5bnRheC5PYmplY3RQYXR0ZXJuKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJv
cih7fSwgTWVzc2FnZXMuT2JqZWN0UGF0dGVybkFzU3ByZWFkKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovCisg
ICAgICAgICAgICBpZiAoZXhwci50eXBlICE9PSBTeW50YXguTWVtYmVyRXhwcmVzc2lvbiAmJiBl
eHByLnR5cGUgIT09IFN5bnRheC5DYWxsRXhwcmVzc2lvbiAmJiBleHByLnR5cGUgIT09IFN5bnRh
eC5OZXdFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2Fn
ZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyAxMy4yLjMgQmluZGluZ1BhdHRlcm4KKworICAgIGZ1bmN0aW9uIHJlaW50
ZXJwcmV0QXNEZXN0cnVjdHVyZWRQYXJhbWV0ZXIob3B0aW9ucywgZXhwcikgeworICAgICAgICB2
YXIgaSwgbGVuLCBwcm9wZXJ0eSwgZWxlbWVudDsKKworICAgICAgICBpZiAoZXhwci50eXBlID09
PSBTeW50YXguT2JqZWN0RXhwcmVzc2lvbikgeworICAgICAgICAgICAgZXhwci50eXBlID0gU3lu
dGF4Lk9iamVjdFBhdHRlcm47CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBleHByLnBy
b3BlcnRpZXMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEpIHsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eSA9IGV4cHIucHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydHku
a2luZCAhPT0gJ2luaXQnKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1l
c3NhZ2VzLkludmFsaWRMSFNJbkZvcm1hbHNMaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRBc0Rlc3RydWN0dXJlZFBhcmFtZXRlcihvcHRpb25zLCBw
cm9wZXJ0eS52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZXhwci50
eXBlID09PSBTeW50YXguQXJyYXlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICBleHByLnR5cGUg
PSBTeW50YXguQXJyYXlQYXR0ZXJuOworICAgICAgICAgICAgZm9yIChpID0gMCwgbGVuID0gZXhw
ci5lbGVtZW50cy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkgeworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBleHByLmVsZW1lbnRzW2ldOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KSB7
CisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNEZXN0cnVjdHVyZWRQYXJhbWV0ZXIo
b3B0aW9ucywgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHsKKyAgICAg
ICAgICAgIHZhbGlkYXRlUGFyYW0ob3B0aW9ucywgZXhwciwgZXhwci5uYW1lKTsKKyAgICAgICAg
fSBlbHNlIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5TcHJlYWRFbGVtZW50KSB7CisgICAgICAg
ICAgICAvLyBCaW5kaW5nUmVzdEVsZW1lbnQgb25seSBhbGxvd3MgQmluZGluZ0lkZW50aWZpZXIK
KyAgICAgICAgICAgIGlmIChleHByLmFyZ3VtZW50LnR5cGUgIT09IFN5bnRheC5JZGVudGlmaWVy
KSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZExIU0lu
Rm9ybWFsc0xpc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsaWRhdGVQYXJhbShv
cHRpb25zLCBleHByLmFyZ3VtZW50LCBleHByLmFyZ3VtZW50Lm5hbWUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luRm9y
bWFsc0xpc3QpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcmVpbnRlcnByZXRB
c0NvdmVyRm9ybWFsc0xpc3QoZXhwcmVzc2lvbnMpIHsKKyAgICAgICAgdmFyIGksIGxlbiwgcGFy
YW0sIHBhcmFtcywgZGVmYXVsdHMsIGRlZmF1bHRDb3VudCwgb3B0aW9ucywgcmVzdDsKKworICAg
ICAgICBwYXJhbXMgPSBbXTsKKyAgICAgICAgZGVmYXVsdHMgPSBbXTsKKyAgICAgICAgZGVmYXVs
dENvdW50ID0gMDsKKyAgICAgICAgcmVzdCA9IG51bGw7CisgICAgICAgIG9wdGlvbnMgPSB7Cisg
ICAgICAgICAgICBwYXJhbVNldDogbmV3IFN0cmluZ01hcCgpCisgICAgICAgIH07CisKKyAgICAg
ICAgZm9yIChpID0gMCwgbGVuID0gZXhwcmVzc2lvbnMubGVuZ3RoOyBpIDwgbGVuOyBpICs9IDEp
IHsKKyAgICAgICAgICAgIHBhcmFtID0gZXhwcmVzc2lvbnNbaV07CisgICAgICAgICAgICBpZiAo
cGFyYW0udHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwYXJh
bXMucHVzaChwYXJhbSk7CisgICAgICAgICAgICAgICAgZGVmYXVsdHMucHVzaChudWxsKTsKKyAg
ICAgICAgICAgICAgICB2YWxpZGF0ZVBhcmFtKG9wdGlvbnMsIHBhcmFtLCBwYXJhbS5uYW1lKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW0udHlwZSA9PT0gU3ludGF4Lk9iamVjdEV4cHJl
c3Npb24gfHwgcGFyYW0udHlwZSA9PT0gU3ludGF4LkFycmF5RXhwcmVzc2lvbikgeworICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0QXNEZXN0cnVjdHVyZWRQYXJhbWV0ZXIob3B0aW9ucywgcGFy
YW0pOworICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTsKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0cy5wdXNoKG51bGwpOworICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbS50eXBl
ID09PSBTeW50YXguU3ByZWFkRWxlbWVudCkgeworICAgICAgICAgICAgICAgIGFzc2VydChpID09
PSBsZW4gLSAxLCAnSXQgaXMgZ3VhcmFudGVlZCB0aGF0IFNwcmVhZEVsZW1lbnQgaXMgbGFzdCBl
bGVtZW50IGJ5IHBhcnNlRXhwcmVzc2lvbicpOworICAgICAgICAgICAgICAgIGlmIChwYXJhbS5h
cmd1bWVudC50eXBlICE9PSBTeW50YXguSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Gb3JtYWxzTGlzdCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNEZXN0cnVjdHVyZWRQ
YXJhbWV0ZXIob3B0aW9ucywgcGFyYW0uYXJndW1lbnQpOworICAgICAgICAgICAgICAgIHJlc3Qg
PSBwYXJhbS5hcmd1bWVudDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW0udHlwZSA9PT0g
U3ludGF4LkFzc2lnbm1lbnRFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zLnB1
c2gocGFyYW0ubGVmdCk7CisgICAgICAgICAgICAgICAgZGVmYXVsdHMucHVzaChwYXJhbS5yaWdo
dCk7CisgICAgICAgICAgICAgICAgKytkZWZhdWx0Q291bnQ7CisgICAgICAgICAgICAgICAgdmFs
aWRhdGVQYXJhbShvcHRpb25zLCBwYXJhbS5sZWZ0LCBwYXJhbS5sZWZ0Lm5hbWUpOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UgPT09IE1lc3NhZ2Vz
LlN0cmljdFBhcmFtRHVwZSkgeworICAgICAgICAgICAgdGhyb3dFcnJvcigKKyAgICAgICAgICAg
ICAgICBzdHJpY3QgPyBvcHRpb25zLnN0cmljdGVkIDogb3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQs
CisgICAgICAgICAgICAgICAgb3B0aW9ucy5tZXNzYWdlCisgICAgICAgICAgICApOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGRlZmF1bHRDb3VudCA9PT0gMCkgeworICAgICAgICAgICAgZGVm
YXVsdHMgPSBbXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBw
YXJhbXM6IHBhcmFtcywKKyAgICAgICAgICAgIGRlZmF1bHRzOiBkZWZhdWx0cywKKyAgICAgICAg
ICAgIHJlc3Q6IHJlc3QsCisgICAgICAgICAgICBzdHJpY3RlZDogb3B0aW9ucy5zdHJpY3RlZCwK
KyAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZDogb3B0aW9ucy5maXJzdFJlc3RyaWN0ZWQsCisg
ICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2UKKyAgICAgICAgfTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKG9wdGlvbnMsIG1hcmtl
cikgeworICAgICAgICB2YXIgcHJldmlvdXNTdHJpY3QsIHByZXZpb3VzWWllbGRBbGxvd2VkLCBi
b2R5OworCisgICAgICAgIGV4cGVjdCgnPT4nKTsKKworICAgICAgICBwcmV2aW91c1N0cmljdCA9
IHN0cmljdDsKKyAgICAgICAgcHJldmlvdXNZaWVsZEFsbG93ZWQgPSBzdGF0ZS55aWVsZEFsbG93
ZWQ7CisgICAgICAgIHN0YXRlLnlpZWxkQWxsb3dlZCA9IGZhbHNlOworICAgICAgICBib2R5ID0g
cGFyc2VDb25jaXNlQm9keSgpOworCisgICAgICAgIGlmIChzdHJpY3QgJiYgb3B0aW9ucy5maXJz
dFJlc3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Iob3B0aW9ucy5maXJzdFJlc3Ry
aWN0ZWQsIG9wdGlvbnMubWVzc2FnZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0cmljdCAm
JiBvcHRpb25zLnN0cmljdGVkKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQob3B0
aW9ucy5zdHJpY3RlZCwgb3B0aW9ucy5tZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0
cmljdCA9IHByZXZpb3VzU3RyaWN0OworICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBwcmV2
aW91c1lpZWxkQWxsb3dlZDsKKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBk
ZWxlZ2F0ZS5jcmVhdGVBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbigKKyAgICAgICAgICAgIG9wdGlv
bnMucGFyYW1zLAorICAgICAgICAgICAgb3B0aW9ucy5kZWZhdWx0cywKKyAgICAgICAgICAgIGJv
ZHksCisgICAgICAgICAgICBvcHRpb25zLnJlc3QsCisgICAgICAgICAgICBib2R5LnR5cGUgIT09
IFN5bnRheC5CbG9ja1N0YXRlbWVudAorICAgICAgICApKTsKKyAgICB9CisKICAgICBmdW5jdGlv
biBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkgewotICAgICAgICB2YXIgdG9rZW4sIGxlZnQs
IHJpZ2h0LCBub2RlLCBzdGFydFRva2VuOworICAgICAgICB2YXIgbWFya2VyLCBleHByLCB0b2tl
biwgcGFyYW1zLCBvbGRQYXJlbnRoZXNpemVkQ291bnQsCisgICAgICAgICAgICBzdGFydHNXaXRo
UGFyZW4gPSBmYWxzZTsKIAotICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKLSAgICAgICAgc3Rh
cnRUb2tlbiA9IGxvb2thaGVhZDsKKyAgICAgICAgLy8gTm90ZSB0aGF0ICd5aWVsZCcgaXMgdHJl
YXRlZCBhcyBhIGtleXdvcmQgaW4gc3RyaWN0IG1vZGUsIGJ1dCBhCisgICAgICAgIC8vIGNvbnRl
eHR1YWwga2V5d29yZCAoaWRlbnRpZmllcikgaW4gbm9uLXN0cmljdCBtb2RlLCBzbyB3ZSBuZWVk
CisgICAgICAgIC8vIHRvIHVzZSBtYXRjaEtleXdvcmQgYW5kIG1hdGNoQ29udGV4dHVhbEtleXdv
cmQgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgaWYgKChzdGF0ZS55aWVsZEFsbG93ZWQgJiYgbWF0
Y2hDb250ZXh0dWFsS2V5d29yZCgneWllbGQnKSkgfHwgKHN0cmljdCAmJiBtYXRjaEtleXdvcmQo
J3lpZWxkJykpKSB7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VZaWVsZEV4cHJlc3Npb24oKTsK
KyAgICAgICAgfQogCi0gICAgICAgIG5vZGUgPSBsZWZ0ID0gcGFyc2VDb25kaXRpb25hbEV4cHJl
c3Npb24oKTsKKyAgICAgICAgb2xkUGFyZW50aGVzaXplZENvdW50ID0gc3RhdGUucGFyZW50aGVz
aXplZENvdW50OwogCi0gICAgICAgIGlmIChtYXRjaEFzc2lnbigpKSB7Ci0gICAgICAgICAgICAv
LyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uCi0gICAgICAgICAgICBpZiAoIWlzTGVmdEhhbmRTaWRl
KGxlZnQpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdl
cy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKKyAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRl
KCk7CisKKyAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKKyAgICAgICAgICAgIHRva2VuID0gbG9v
a2FoZWFkMigpOworICAgICAgICAgICAgaWYgKCh0b2tlbi50eXBlID09PSBUb2tlbi5QdW5jdHVh
dG9yICYmIHRva2VuLnZhbHVlID09PSAnKScpIHx8IHRva2VuLnZhbHVlID09PSAnLi4uJykgewor
ICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcnNlUGFyYW1zKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFtYXRjaCgnPT4nKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQo
bGV4KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VB
cnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihwYXJhbXMsIG1hcmtlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBzdGFydHNXaXRoUGFyZW4gPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
dG9rZW4gPSBsb29rYWhlYWQ7CisgICAgICAgIGV4cHIgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVz
c2lvbigpOworCisgICAgICAgIGlmIChtYXRjaCgnPT4nKSAmJgorICAgICAgICAgICAgICAgIChz
dGF0ZS5wYXJlbnRoZXNpemVkQ291bnQgPT09IG9sZFBhcmVudGhlc2l6ZWRDb3VudCB8fAorICAg
ICAgICAgICAgICAgIHN0YXRlLnBhcmVudGhlc2l6ZWRDb3VudCA9PT0gKG9sZFBhcmVudGhlc2l6
ZWRDb3VudCArIDEpKSkgeworICAgICAgICAgICAgaWYgKGV4cHIudHlwZSA9PT0gU3ludGF4Lklk
ZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSByZWludGVycHJldEFzQ292ZXJG
b3JtYWxzTGlzdChbIGV4cHIgXSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV4cHIudHlwZSA9
PT0gU3ludGF4LkFzc2lnbm1lbnRFeHByZXNzaW9uIHx8CisgICAgICAgICAgICAgICAgICAgIGV4
cHIudHlwZSA9PT0gU3ludGF4LkFycmF5RXhwcmVzc2lvbiB8fAorICAgICAgICAgICAgICAgICAg
ICBleHByLnR5cGUgPT09IFN5bnRheC5PYmplY3RFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFzdGFydHNXaXRoUGFyZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dVbmV4
cGVjdGVkKGxleCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFyYW1z
ID0gcmVpbnRlcnByZXRBc0NvdmVyRm9ybWFsc0xpc3QoWyBleHByIF0pOworICAgICAgICAgICAg
fSBlbHNlIGlmIChleHByLnR5cGUgPT09IFN5bnRheC5TZXF1ZW5jZUV4cHJlc3Npb24pIHsKKyAg
ICAgICAgICAgICAgICBwYXJhbXMgPSByZWludGVycHJldEFzQ292ZXJGb3JtYWxzTGlzdChleHBy
LmV4cHJlc3Npb25zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwYXJhbXMpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihwYXJh
bXMsIG1hcmtlcik7CiAgICAgICAgICAgICB9CisgICAgICAgIH0KIAorICAgICAgICBpZiAobWF0
Y2hBc3NpZ24oKSkgewogICAgICAgICAgICAgLy8gMTEuMTMuMQotICAgICAgICAgICAgaWYgKHN0
cmljdCAmJiBsZWZ0LnR5cGUgPT09IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdv
cmQobGVmdC5uYW1lKSkgeworICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBleHByLnR5cGUgPT09
IFN5bnRheC5JZGVudGlmaWVyICYmIGlzUmVzdHJpY3RlZFdvcmQoZXhwci5uYW1lKSkgewogICAg
ICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0TEhT
QXNzaWdubWVudCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRva2VuID0gbGV4KCk7
Ci0gICAgICAgICAgICByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKLSAgICAg
ICAgICAgIG5vZGUgPSBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUFzc2lnbm1lbnRF
eHByZXNzaW9uKHRva2VuLnZhbHVlLCBsZWZ0LCByaWdodCksIHN0YXJ0VG9rZW4pOworICAgICAg
ICAgICAgLy8gRVMubmV4dCBkcmFmIDExLjEzIFJ1bnRpbWUgU2VtYW50aWNzIHN0ZXAgMQorICAg
ICAgICAgICAgaWYgKG1hdGNoKCc9JykgJiYgKGV4cHIudHlwZSA9PT0gU3ludGF4Lk9iamVjdEV4
cHJlc3Npb24gfHwgZXhwci50eXBlID09PSBTeW50YXguQXJyYXlFeHByZXNzaW9uKSkgeworICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNBc3NpZ25tZW50QmluZGluZ1BhdHRlcm4oZXhwcik7
CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkgeworICAgICAg
ICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBleHByID0gbWFya2VyQXBwbHkobWFya2Vy
LCBkZWxlZ2F0ZS5jcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbihsZXgoKS52YWx1ZSwgZXhwciwg
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gbm9kZTsKKyAgICAgICAgcmV0dXJuIGV4cHI7CiAgICAgfQogCiAgICAgLy8gMTEuMTQgQ29t
bWEgT3BlcmF0b3IKIAogICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigpIHsKLSAgICAgICAg
dmFyIGV4cHIsIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CisgICAgICAgIHZhciBtYXJrZXIsIGV4
cHIsIGV4cHJlc3Npb25zLCBzZXF1ZW5jZSwgc3ByZWFkRm91bmQ7CiAKKyAgICAgICAgbWFya2Vy
ID0gbWFya2VyQ3JlYXRlKCk7CiAgICAgICAgIGV4cHIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKCk7CisgICAgICAgIGV4cHJlc3Npb25zID0gWyBleHByIF07CiAKICAgICAgICAgaWYgKG1h
dGNoKCcsJykpIHsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVTZXF1ZW5jZUV4
cHJlc3Npb24oWyBleHByIF0pOwotCiAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgp
IHsKICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCcsJykpIHsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgbGV4KCk7Ci0g
ICAgICAgICAgICAgICAgZXhwci5leHByZXNzaW9ucy5wdXNoKHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oKSk7CisgICAgICAgICAgICAgICAgZXhwciA9IHBhcnNlU3ByZWFkT3JBc3NpZ25tZW50
RXhwcmVzc2lvbigpOworICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1c2goZXhwcik7CisK
KyAgICAgICAgICAgICAgICBpZiAoZXhwci50eXBlID09PSBTeW50YXguU3ByZWFkRWxlbWVudCkg
eworICAgICAgICAgICAgICAgICAgICBzcHJlYWRGb3VuZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghbWF0Y2goJyknKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dF
cnJvcih7fSwgTWVzc2FnZXMuRWxlbWVudEFmdGVyU3ByZWFkRWxlbWVudCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0
YXJ0VG9rZW4pOworICAgICAgICAgICAgc2VxdWVuY2UgPSBtYXJrZXJBcHBseShtYXJrZXIsIGRl
bGVnYXRlLmNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9ucykpOwogICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIGV4cHI7CisgICAgICAgIGlmIChzcHJlYWRGb3VuZCAmJiBsb29r
YWhlYWQyKCkudmFsdWUgIT09ICc9PicpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1l
c3NhZ2VzLklsbGVnYWxTcHJlYWQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNlcXVl
bmNlIHx8IGV4cHI7CiAgICAgfQogCiAgICAgLy8gMTIuMSBCbG9jawpAQCAtMjYyMiw0NSArMzUz
MSw1MyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VCbG9jaygpIHsKLSAgICAgICAgdmFyIGJsb2NrLCBzdGFydFRv
a2VuOworICAgICAgICB2YXIgYmxvY2ssIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCi0gICAg
ICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgIGV4cGVjdCgneycpOwogCiAgICAg
ICAgIGJsb2NrID0gcGFyc2VTdGF0ZW1lbnRMaXN0KCk7CiAKICAgICAgICAgZXhwZWN0KCd9Jyk7
CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tT
dGF0ZW1lbnQoYmxvY2spLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5
KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoYmxvY2spKTsKICAgICB9CiAK
ICAgICAvLyAxMi4yIFZhcmlhYmxlIFN0YXRlbWVudAogCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJp
YWJsZUlkZW50aWZpZXIoKSB7Ci0gICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjsKLQotICAg
ICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwotICAgICAgICB0b2tlbiA9IGxleCgpOworICAg
ICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRlKCksCisgICAgICAgICAgICB0b2tlbiA9IGxl
eCgpOwogCiAgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5JZGVudGlmaWVyKSB7CiAg
ICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9rZW4pOwogICAgICAgICB9CiAKLSAgICAgICAg
cmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52
YWx1ZSksIHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBk
ZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSk7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGtpbmQpIHsKLSAgICAgICAgdmFyIGluaXQg
PSBudWxsLCBpZCwgc3RhcnRUb2tlbjsKLQotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFk
OwotICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgLy8g
MTIuMi4xCi0gICAgICAgIGlmIChzdHJpY3QgJiYgaXNSZXN0cmljdGVkV29yZChpZC5uYW1lKSkg
ewotICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3RWYXJO
YW1lKTsKKyAgICAgICAgdmFyIGlkLAorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRl
KCksCisgICAgICAgICAgICBpbml0ID0gbnVsbDsKKyAgICAgICAgaWYgKG1hdGNoKCd7JykpIHsK
KyAgICAgICAgICAgIGlkID0gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpOworICAgICAgICAgICAg
cmVpbnRlcnByZXRBc0Fzc2lnbm1lbnRCaW5kaW5nUGF0dGVybihpZCk7CisgICAgICAgIH0gZWxz
ZSBpZiAobWF0Y2goJ1snKSkgeworICAgICAgICAgICAgaWQgPSBwYXJzZUFycmF5SW5pdGlhbGlz
ZXIoKTsKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNBc3NpZ25tZW50QmluZGluZ1BhdHRlcm4o
aWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5l
eHQgKi8KKyAgICAgICAgICAgIGlkID0gc3RhdGUuYWxsb3dLZXl3b3JkID8gcGFyc2VOb25Db21w
dXRlZFByb3BlcnR5KCkgOiBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOworICAgICAgICAgICAg
Ly8gMTIuMi4xCisgICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGlzUmVzdHJpY3RlZFdvcmQoaWQu
bmFtZSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2Vz
LlN0cmljdFZhck5hbWUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGtpbmQgPT09ICdjb25zdCcpIHsKKyAgICAgICAgICAgIGlmICghbWF0Y2goJz0nKSkgeworICAg
ICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLk5vVW5pbnRpYWxpemVkQ29uc3Qp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZXhwZWN0KCc9Jyk7CiAgICAgICAgICAgICBp
bml0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOwogICAgICAgICB9IGVsc2UgaWYgKG1h
dGNoKCc9JykpIHsKQEAgLTI2NjgsNyArMzU4NSw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBw
YXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIGluaXQgPSBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChk
ZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpLCBzdGFydFRva2VuKTsK
KyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVmFyaWFi
bGVEZWNsYXJhdG9yKGlkLCBpbml0KSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJp
YWJsZURlY2xhcmF0aW9uTGlzdChraW5kKSB7CkBAIC0yNjg2LDcgKzM2MDMsNyBAQCBwYXJzZVN0
YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cGFyc2VWYXJpYWJsZVN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFyIGRlY2xhcmF0aW9uczsKKyAg
ICAgICAgdmFyIGRlY2xhcmF0aW9ucywgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKICAgICAg
ICAgZXhwZWN0S2V5d29yZCgndmFyJyk7CiAKQEAgLTI2OTQsNyArMzYxMSw3IEBAIHBhcnNlU3Rh
dGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKIAogICAgICAgICBjb25zdW1lU2VtaWNv
bG9uKCk7CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRp
b24oZGVjbGFyYXRpb25zLCAndmFyJyk7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJr
ZXIsIGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCAndmFy
JykpOwogICAgIH0KIAogICAgIC8vIGtpbmQgbWF5IGJlIGBjb25zdGAgb3IgYGxldGAKQEAgLTI3
MDIsOSArMzYxOSw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQK
ICAgICAvLyBzZWUgaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9u
eTpjb25zdAogICAgIC8vIGFuZCBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9p
ZD1oYXJtb255OmxldAogICAgIGZ1bmN0aW9uIHBhcnNlQ29uc3RMZXREZWNsYXJhdGlvbihraW5k
KSB7Ci0gICAgICAgIHZhciBkZWNsYXJhdGlvbnMsIHN0YXJ0VG9rZW47Ci0KLSAgICAgICAgc3Rh
cnRUb2tlbiA9IGxvb2thaGVhZDsKKyAgICAgICAgdmFyIGRlY2xhcmF0aW9ucywgbWFya2VyID0g
bWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAgZXhwZWN0S2V5d29yZChraW5kKTsKIApAQCAtMjcx
MiwyOCArMzYyNywyODEgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVu
dAogCiAgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKIAotICAgICAgICByZXR1cm4gZGVsZWdh
dGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0aW9u
cywga2luZCksIHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2Vy
LCBkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0aW9ucywga2luZCkp
OworICAgIH0KKworICAgIC8vIHBlb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJh
ZnQuaHRtbAorCisgICAgZnVuY3Rpb24gcGFyc2VNb2R1bGVTcGVjaWZpZXIoKSB7CisgICAgICAg
IHZhciBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKSwKKyAgICAgICAgICAgIHNwZWNpZmllcjsKKwor
ICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlN0cmluZ0xpdGVyYWwpIHsKKyAg
ICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLkludmFsaWRNb2R1bGVTcGVjaWZpZXIp
OworICAgICAgICB9CisgICAgICAgIHNwZWNpZmllciA9IGRlbGVnYXRlLmNyZWF0ZU1vZHVsZVNw
ZWNpZmllcihsb29rYWhlYWQpOworICAgICAgICBsZXgoKTsKKyAgICAgICAgcmV0dXJuIG1hcmtl
ckFwcGx5KG1hcmtlciwgc3BlY2lmaWVyKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZUV4
cG9ydEJhdGNoU3BlY2lmaWVyKCkgeworICAgICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRl
KCk7CisgICAgICAgIGV4cGVjdCgnKicpOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFy
a2VyLCBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnRCYXRjaFNwZWNpZmllcigpKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBwYXJzZUV4cG9ydFNwZWNpZmllcigpIHsKKyAgICAgICAgdmFyIGlkLCBuYW1l
ID0gbnVsbCwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCksIGZyb207CisgICAgICAgIGlmIChtYXRj
aEtleXdvcmQoJ2RlZmF1bHQnKSkgeworICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICBp
ZCA9IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcignZGVmYXVs
dCcpKTsKKyAgICAgICAgICAgIC8vIGV4cG9ydCB7ZGVmYXVsdH0gZnJvbSAic29tZXRoaW5nIjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZp
ZXIoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXMn
KSkgeworICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICBuYW1lID0gcGFyc2VOb25Db21w
dXRlZFByb3BlcnR5KCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHko
bWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnRTcGVjaWZpZXIoaWQsIG5hbWUpKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBwYXJzZUV4cG9ydERlY2xhcmF0aW9uKCkgeworICAgICAgICB2YXIg
YmFja3RyYWNrVG9rZW4sIGlkLCBkZWNsYXJhdGlvbiA9IG51bGwsCisgICAgICAgICAgICBpc0V4
cG9ydEZyb21JZGVudGlmaWVyLAorICAgICAgICAgICAgc3JjID0gbnVsbCwgc3BlY2lmaWVycyA9
IFtdLAorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisKKyAgICAgICAgZnVu
Y3Rpb24gcmV3aW5kKHRva2VuKSB7CisgICAgICAgICAgICBpbmRleCA9IHRva2VuLnJhbmdlWzBd
OworICAgICAgICAgICAgbGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1iZXI7CisgICAgICAgICAg
ICBsaW5lU3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7CisgICAgICAgICAgICBsb29rYWhlYWQgPSB0
b2tlbjsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGVjdEtleXdvcmQoJ2V4cG9ydCcpOworCisg
ICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSkgeworICAgICAgICAgICAgLy8gY292
ZXJzOgorICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgLi4uCisgICAgICAgICAgICBsZXgo
KTsKKyAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2Z1bmN0aW9uJykgfHwgbWF0Y2hLZXl3
b3JkKCdjbGFzcycpKSB7CisgICAgICAgICAgICAgICAgYmFja3RyYWNrVG9rZW4gPSBsb29rYWhl
YWQ7CisgICAgICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICAgICAgaWYgKGlzSWRlbnRp
Zmllck5hbWUobG9va2FoZWFkKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBjb3ZlcnM6Cisg
ICAgICAgICAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvbyAoKSB7fQor
ICAgICAgICAgICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBjbGFzcyBmb28ge30KKyAgICAg
ICAgICAgICAgICAgICAgaWQgPSBwYXJzZU5vbkNvbXB1dGVkUHJvcGVydHkoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV3aW5kKGJhY2t0cmFja1Rva2VuKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlRXhwb3J0RGVjbGFyYXRp
b24odHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50KCksIFtpZF0sIG51bGwpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgLy8gY292ZXJzOgorICAgICAgICAgICAgICAgIC8vIGV4
cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHt9CisgICAgICAgICAgICAgICAgLy8gZXhwb3J0IGRl
ZmF1bHQgY2xhc3Mge30KKyAgICAgICAgICAgICAgICByZXdpbmQoYmFja3RyYWNrVG9rZW4pOwor
ICAgICAgICAgICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSAnY2xhc3MnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHko
bWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih0cnVlLCBwYXJzZUNsYXNz
RXhwcmVzc2lvbigpLCBbXSwgbnVsbCkpOworICAgICAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9u
JzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdh
dGUuY3JlYXRlRXhwb3J0RGVjbGFyYXRpb24odHJ1ZSwgcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24o
KSwgW10sIG51bGwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKCdmcm9tJykpIHsKKyAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIGxvb2thaGVhZC52
YWx1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNvdmVyczoKKyAgICAgICAg
ICAgIC8vIGV4cG9ydCBkZWZhdWx0IHt9OworICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQg
W107CisgICAgICAgICAgICBpZiAobWF0Y2goJ3snKSkgeworICAgICAgICAgICAgICAgIGRlY2xh
cmF0aW9uID0gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChtYXRjaCgnWycpKSB7CisgICAgICAgICAgICAgICAgZGVjbGFyYXRpb24gPSBwYXJzZUFycmF5
SW5pdGlhbGlzZXIoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVj
bGFyYXRpb24gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7CisgICAgICAgICAgICByZXR1cm4gbWFya2Vy
QXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbih0cnVlLCBkZWNs
YXJhdGlvbiwgW10sIG51bGwpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG5vbi1kZWZhdWx0
IGV4cG9ydAorICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQpIHsK
KyAgICAgICAgICAgIC8vIGNvdmVyczoKKyAgICAgICAgICAgIC8vIGV4cG9ydCB2YXIgZiA9IDE7
CisgICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkgeworICAgICAgICAgICAgY2Fz
ZSAnbGV0JzoKKyAgICAgICAgICAgIGNhc2UgJ2NvbnN0JzoKKyAgICAgICAgICAgIGNhc2UgJ3Zh
cic6CisgICAgICAgICAgICBjYXNlICdjbGFzcyc6CisgICAgICAgICAgICBjYXNlICdmdW5jdGlv
bic6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUu
Y3JlYXRlRXhwb3J0RGVjbGFyYXRpb24oZmFsc2UsIHBhcnNlU291cmNlRWxlbWVudCgpLCBzcGVj
aWZpZXJzLCBudWxsKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bWF0Y2goJyonKSkgeworICAgICAgICAgICAgLy8gY292ZXJzOgorICAgICAgICAgICAgLy8gZXhw
b3J0ICogZnJvbSAiZm9vIjsKKyAgICAgICAgICAgIHNwZWNpZmllcnMucHVzaChwYXJzZUV4cG9y
dEJhdGNoU3BlY2lmaWVyKCkpOworCisgICAgICAgICAgICBpZiAoIW1hdGNoQ29udGV4dHVhbEtl
eXdvcmQoJ2Zyb20nKSkgeworICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIGxvb2thaGVh
ZC52YWx1ZSA/CisgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlcy5VbmV4cGVjdGVkVG9r
ZW4gOiBNZXNzYWdlcy5NaXNzaW5nRnJvbUNsYXVzZSwgbG9va2FoZWFkLnZhbHVlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGxleCgpOworICAgICAgICAgICAgc3JjID0gcGFyc2VNb2R1
bGVTcGVjaWZpZXIoKTsKKyAgICAgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKKworICAgICAg
ICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlRXhwb3J0RGVj
bGFyYXRpb24oZmFsc2UsIG51bGwsIHNwZWNpZmllcnMsIHNyYykpOworICAgICAgICB9CisKKyAg
ICAgICAgZXhwZWN0KCd7Jyk7CisgICAgICAgIGlmICghbWF0Y2goJ30nKSkgeworICAgICAgICAg
ICAgZG8geworICAgICAgICAgICAgICAgIGlzRXhwb3J0RnJvbUlkZW50aWZpZXIgPSBpc0V4cG9y
dEZyb21JZGVudGlmaWVyIHx8IG1hdGNoS2V5d29yZCgnZGVmYXVsdCcpOworICAgICAgICAgICAg
ICAgIHNwZWNpZmllcnMucHVzaChwYXJzZUV4cG9ydFNwZWNpZmllcigpKTsKKyAgICAgICAgICAg
IH0gd2hpbGUgKG1hdGNoKCcsJykgJiYgbGV4KCkpOworICAgICAgICB9CisgICAgICAgIGV4cGVj
dCgnfScpOworCisgICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKCdmcm9tJykpIHsK
KyAgICAgICAgICAgIC8vIGNvdmVyaW5nOgorICAgICAgICAgICAgLy8gZXhwb3J0IHtkZWZhdWx0
fSBmcm9tICJmb28iOworICAgICAgICAgICAgLy8gZXhwb3J0IHtmb299IGZyb20gImZvbyI7Cisg
ICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgIHNyYyA9IHBhcnNlTW9kdWxlU3BlY2lmaWVy
KCk7CisgICAgICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7CisgICAgICAgIH0gZWxzZSBpZiAo
aXNFeHBvcnRGcm9tSWRlbnRpZmllcikgeworICAgICAgICAgICAgLy8gY292ZXJpbmc6CisgICAg
ICAgICAgICAvLyBleHBvcnQge2RlZmF1bHR9OyAvLyBtaXNzaW5nIGZyb21DbGF1c2UKKyAgICAg
ICAgICAgIHRocm93RXJyb3Ioe30sIGxvb2thaGVhZC52YWx1ZSA/CisgICAgICAgICAgICAgICAg
ICAgIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiA6IE1lc3NhZ2VzLk1pc3NpbmdGcm9tQ2xhdXNl
LCBsb29rYWhlYWQudmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gY292
ZXIKKyAgICAgICAgICAgIC8vIGV4cG9ydCB7Zm9vfTsKKyAgICAgICAgICAgIGNvbnN1bWVTZW1p
Y29sb24oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBk
ZWxlZ2F0ZS5jcmVhdGVFeHBvcnREZWNsYXJhdGlvbihmYWxzZSwgZGVjbGFyYXRpb24sIHNwZWNp
ZmllcnMsIHNyYykpOworICAgIH0KKworCisgICAgZnVuY3Rpb24gcGFyc2VJbXBvcnRTcGVjaWZp
ZXIoKSB7CisgICAgICAgIC8vIGltcG9ydCB7PGZvbyBhcyBiYXI+fSAuLi47CisgICAgICAgIHZh
ciBpZCwgbmFtZSA9IG51bGwsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOworCisgICAgICAgIGlk
ID0gcGFyc2VOb25Db21wdXRlZFByb3BlcnR5KCk7CisgICAgICAgIGlmIChtYXRjaENvbnRleHR1
YWxLZXl3b3JkKCdhcycpKSB7CisgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgIG5hbWUg
PSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlSW1wb3J0U3BlY2lmaWVyKGlkLCBu
YW1lKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VOYW1lZEltcG9ydHMoKSB7CisgICAg
ICAgIHZhciBzcGVjaWZpZXJzID0gW107CisgICAgICAgIC8vIHtmb28sIGJhciBhcyBiYXN9Cisg
ICAgICAgIGV4cGVjdCgneycpOworICAgICAgICBpZiAoIW1hdGNoKCd9JykpIHsKKyAgICAgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgICAgICBzcGVjaWZpZXJzLnB1c2gocGFyc2VJbXBvcnRTcGVj
aWZpZXIoKSk7CisgICAgICAgICAgICB9IHdoaWxlIChtYXRjaCgnLCcpICYmIGxleCgpKTsKKyAg
ICAgICAgfQorICAgICAgICBleHBlY3QoJ30nKTsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllcnM7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VJbXBvcnREZWZhdWx0U3BlY2lmaWVyKCkgewor
ICAgICAgICAvLyBpbXBvcnQgPGZvbz4gLi4uOworICAgICAgICB2YXIgaWQsIG1hcmtlciA9IG1h
cmtlckNyZWF0ZSgpOworCisgICAgICAgIGlkID0gcGFyc2VOb25Db21wdXRlZFByb3BlcnR5KCk7
CisKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlSW1w
b3J0RGVmYXVsdFNwZWNpZmllcihpZCkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlSW1w
b3J0TmFtZXNwYWNlU3BlY2lmaWVyKCkgeworICAgICAgICAvLyBpbXBvcnQgPCogYXMgZm9vPiAu
Li47CisgICAgICAgIHZhciBpZCwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisKKyAgICAgICAg
ZXhwZWN0KCcqJyk7CisgICAgICAgIGlmICghbWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnYXMnKSkg
eworICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuTm9Bc0FmdGVySW1wb3J0TmFt
ZXNwYWNlKTsKKyAgICAgICAgfQorICAgICAgICBsZXgoKTsKKyAgICAgICAgaWQgPSBwYXJzZU5v
bkNvbXB1dGVkUHJvcGVydHkoKTsKKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2Vy
LCBkZWxlZ2F0ZS5jcmVhdGVJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXIoaWQpKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwYXJzZUltcG9ydERlY2xhcmF0aW9uKCkgeworICAgICAgICB2YXIgc3Bl
Y2lmaWVycywgc3JjLCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKKworICAgICAgICBleHBlY3RL
ZXl3b3JkKCdpbXBvcnQnKTsKKyAgICAgICAgc3BlY2lmaWVycyA9IFtdOworCisgICAgICAgIGlm
IChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkgeworICAgICAgICAgICAg
Ly8gY292ZXJzOgorICAgICAgICAgICAgLy8gaW1wb3J0ICJmb28iOworICAgICAgICAgICAgc3Jj
ID0gcGFyc2VNb2R1bGVTcGVjaWZpZXIoKTsKKyAgICAgICAgICAgIGNvbnN1bWVTZW1pY29sb24o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0
ZUltcG9ydERlY2xhcmF0aW9uKHNwZWNpZmllcnMsIHNyYykpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFtYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSAmJiBpc0lkZW50aWZpZXJOYW1lKGxvb2th
aGVhZCkpIHsKKyAgICAgICAgICAgIC8vIGNvdmVyczoKKyAgICAgICAgICAgIC8vIGltcG9ydCBm
b28KKyAgICAgICAgICAgIC8vIGltcG9ydCBmb28sIC4uLgorICAgICAgICAgICAgc3BlY2lmaWVy
cy5wdXNoKHBhcnNlSW1wb3J0RGVmYXVsdFNwZWNpZmllcigpKTsKKyAgICAgICAgICAgIGlmICht
YXRjaCgnLCcpKSB7CisgICAgICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1hdGNoKCcqJykpIHsKKyAgICAgICAgICAgIC8vIGNvdmVyczoK
KyAgICAgICAgICAgIC8vIGltcG9ydCBmb28sICogYXMgZm9vCisgICAgICAgICAgICAvLyBpbXBv
cnQgKiBhcyBmb28KKyAgICAgICAgICAgIHNwZWNpZmllcnMucHVzaChwYXJzZUltcG9ydE5hbWVz
cGFjZVNwZWNpZmllcigpKTsKKyAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgneycpKSB7CisgICAg
ICAgICAgICAvLyBjb3ZlcnM6CisgICAgICAgICAgICAvLyBpbXBvcnQgZm9vLCB7YmFyfQorICAg
ICAgICAgICAgLy8gaW1wb3J0IHtiYXJ9CisgICAgICAgICAgICBzcGVjaWZpZXJzID0gc3BlY2lm
aWVycy5jb25jYXQocGFyc2VOYW1lZEltcG9ydHMoKSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIW1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2Zyb20nKSkgeworICAgICAgICAgICAgdGhyb3dF
cnJvcih7fSwgbG9va2FoZWFkLnZhbHVlID8KKyAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXMu
VW5leHBlY3RlZFRva2VuIDogTWVzc2FnZXMuTWlzc2luZ0Zyb21DbGF1c2UsIGxvb2thaGVhZC52
YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgbGV4KCk7CisgICAgICAgIHNyYyA9IHBhcnNlTW9k
dWxlU3BlY2lmaWVyKCk7CisgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKKworICAgICAgICBy
ZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVJbXBvcnREZWNsYXJhdGlv
bihzcGVjaWZpZXJzLCBzcmMpKTsKICAgICB9CiAKICAgICAvLyAxMi4zIEVtcHR5IFN0YXRlbWVu
dAogCiAgICAgZnVuY3Rpb24gcGFyc2VFbXB0eVN0YXRlbWVudCgpIHsKKyAgICAgICAgdmFyIG1h
cmtlciA9IG1hcmtlckNyZWF0ZSgpOwogICAgICAgICBleHBlY3QoJzsnKTsKLSAgICAgICAgcmV0
dXJuIGRlbGVnYXRlLmNyZWF0ZUVtcHR5U3RhdGVtZW50KCk7CisgICAgICAgIHJldHVybiBtYXJr
ZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUVtcHR5U3RhdGVtZW50KCkpOwogICAgIH0K
IAogICAgIC8vIDEyLjQgRXhwcmVzc2lvbiBTdGF0ZW1lbnQKIAogICAgIGZ1bmN0aW9uIHBhcnNl
RXhwcmVzc2lvblN0YXRlbWVudCgpIHsKLSAgICAgICAgdmFyIGV4cHIgPSBwYXJzZUV4cHJlc3Np
b24oKTsKKyAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpLCBleHByID0gcGFyc2VF
eHByZXNzaW9uKCk7CiAgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKLSAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZXhwcik7CisgICAgICAgIHJldHVy
biBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQo
ZXhwcikpOwogICAgIH0KIAogICAgIC8vIDEyLjUgSWYgc3RhdGVtZW50CiAKICAgICBmdW5jdGlv
biBwYXJzZUlmU3RhdGVtZW50KCkgewotICAgICAgICB2YXIgdGVzdCwgY29uc2VxdWVudCwgYWx0
ZXJuYXRlOworICAgICAgICB2YXIgdGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBtYXJrZXIg
PSBtYXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCdpZicpOwogCkBAIC0y
NzUyLDEzICszOTIwLDEzIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1l
bnQKICAgICAgICAgICAgIGFsdGVybmF0ZSA9IG51bGw7CiAgICAgICAgIH0KIAotICAgICAgICBy
ZXR1cm4gZGVsZWdhdGUuY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJu
YXRlKTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRl
SWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSk7CiAgICAgfQogCiAgICAg
Ly8gMTIuNiBJdGVyYXRpb24gU3RhdGVtZW50cwogCiAgICAgZnVuY3Rpb24gcGFyc2VEb1doaWxl
U3RhdGVtZW50KCkgewotICAgICAgICB2YXIgYm9keSwgdGVzdCwgb2xkSW5JdGVyYXRpb247Cisg
ICAgICAgIHZhciBib2R5LCB0ZXN0LCBvbGRJbkl0ZXJhdGlvbiwgbWFya2VyID0gbWFya2VyQ3Jl
YXRlKCk7CiAKICAgICAgICAgZXhwZWN0S2V5d29yZCgnZG8nKTsKIApAQCAtMjc4MSwxMSArMzk0
OSwxMSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAg
ICAgICBsZXgoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVE
b1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHko
bWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVEb1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpKTsKICAg
ICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZVdoaWxlU3RhdGVtZW50KCkgewotICAgICAgICB2YXIg
dGVzdCwgYm9keSwgb2xkSW5JdGVyYXRpb247CisgICAgICAgIHZhciB0ZXN0LCBib2R5LCBvbGRJ
bkl0ZXJhdGlvbiwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAgZXhwZWN0S2V5
d29yZCgnd2hpbGUnKTsKIApAQCAtMjgwMiw1NCArMzk3MCw2NSBAQCBwYXJzZVN0YXRlbWVudDog
dHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBv
bGRJbkl0ZXJhdGlvbjsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlV2hpbGVTdGF0
ZW1lbnQodGVzdCwgYm9keSk7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRl
bGVnYXRlLmNyZWF0ZVdoaWxlU3RhdGVtZW50KHRlc3QsIGJvZHkpKTsKICAgICB9CiAKICAgICBm
dW5jdGlvbiBwYXJzZUZvclZhcmlhYmxlRGVjbGFyYXRpb24oKSB7Ci0gICAgICAgIHZhciB0b2tl
biwgZGVjbGFyYXRpb25zLCBzdGFydFRva2VuOwotCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29r
YWhlYWQ7Ci0gICAgICAgIHRva2VuID0gbGV4KCk7Ci0gICAgICAgIGRlY2xhcmF0aW9ucyA9IHBh
cnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoKTsKKyAgICAgICAgdmFyIG1hcmtlciA9IG1hcmtl
ckNyZWF0ZSgpLAorICAgICAgICAgICAgdG9rZW4gPSBsZXgoKSwKKyAgICAgICAgICAgIGRlY2xh
cmF0aW9ucyA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QoKTsKIAotICAgICAgICByZXR1
cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGRl
Y2xhcmF0aW9ucywgdG9rZW4udmFsdWUpLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG1h
cmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbihkZWNs
YXJhdGlvbnMsIHRva2VuLnZhbHVlKSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VGb3JT
dGF0ZW1lbnQoKSB7Ci0gICAgICAgIHZhciBpbml0LCB0ZXN0LCB1cGRhdGUsIGxlZnQsIHJpZ2h0
LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjsKLQorICAgIGZ1bmN0aW9uIHBhcnNlRm9yU3RhdGVtZW50
KG9wdHMpIHsKKyAgICAgICAgdmFyIGluaXQsIHRlc3QsIHVwZGF0ZSwgbGVmdCwgcmlnaHQsIGJv
ZHksIG9wZXJhdG9yLCBvbGRJbkl0ZXJhdGlvbiwKKyAgICAgICAgICAgIG1hcmtlciA9IG1hcmtl
ckNyZWF0ZSgpOwogICAgICAgICBpbml0ID0gdGVzdCA9IHVwZGF0ZSA9IG51bGw7Ci0KICAgICAg
ICAgZXhwZWN0S2V5d29yZCgnZm9yJyk7CiAKKyAgICAgICAgLy8gaHR0cDovL3dpa2kuZWNtYXNj
cmlwdC5vcmcvZG9rdS5waHA/aWQ9cHJvcG9zYWxzOml0ZXJhdG9yc19hbmRfZ2VuZXJhdG9ycyZz
PWVhY2gKKyAgICAgICAgaWYgKG1hdGNoQ29udGV4dHVhbEtleXdvcmQoJ2VhY2gnKSkgeworICAg
ICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuRWFjaE5vdEFsbG93ZWQpOworICAgICAg
ICB9CisKICAgICAgICAgZXhwZWN0KCcoJyk7CiAKICAgICAgICAgaWYgKG1hdGNoKCc7JykpIHsK
ICAgICAgICAgICAgIGxleCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1h
dGNoS2V5d29yZCgndmFyJykgfHwgbWF0Y2hLZXl3b3JkKCdsZXQnKSkgeworICAgICAgICAgICAg
aWYgKG1hdGNoS2V5d29yZCgndmFyJykgfHwgbWF0Y2hLZXl3b3JkKCdsZXQnKSB8fCBtYXRjaEtl
eXdvcmQoJ2NvbnN0JykpIHsKICAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgaW5pdCA9IHBhcnNlRm9yVmFyaWFibGVEZWNsYXJhdGlvbigpOwog
ICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlOwogCi0gICAgICAgICAgICAgICAg
aWYgKGluaXQuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSAmJiBtYXRjaEtleXdvcmQoJ2luJykp
IHsKLSAgICAgICAgICAgICAgICAgICAgbGV4KCk7Ci0gICAgICAgICAgICAgICAgICAgIGxlZnQg
PSBpbml0OwotICAgICAgICAgICAgICAgICAgICByaWdodCA9IHBhcnNlRXhwcmVzc2lvbigpOwot
ICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoaW5p
dC5kZWNsYXJhdGlvbnMubGVuZ3RoID09PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICht
YXRjaEtleXdvcmQoJ2luJykgfHwgbWF0Y2hDb250ZXh0dWFsS2V5d29yZCgnb2YnKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBsb29rYWhlYWQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoISgob3BlcmF0b3IudmFsdWUgPT09ICdpbicgfHwgaW5pdC5raW5kICE9
PSAndmFyJykgJiYgaW5pdC5kZWNsYXJhdGlvbnNbMF0uaW5pdCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0g
aW5pdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IHBhcnNlRXhwcmVzc2lv
bigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSBudWxsOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgaW5pdCA9IHBhcnNlRXhwcmVzc2lvbigpOwogICAgICAg
ICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlOwogCi0gICAgICAgICAgICAgICAgaWYgKG1h
dGNoS2V5d29yZCgnaW4nKSkgeworICAgICAgICAgICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxL
ZXl3b3JkKCdvZicpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gbGV4KCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxlZnQgPSBpbml0OworICAgICAgICAgICAgICAgICAgICByaWdo
dCA9IHBhcnNlRXhwcmVzc2lvbigpOworICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoS2V5d29yZCgnaW4nKSkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uCi0gICAgICAgICAgICAgICAg
ICAgIGlmICghaXNMZWZ0SGFuZFNpZGUoaW5pdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luRm9ySW4pOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWlzQXNzaWduYWJsZUxlZnRIYW5kU2lkZShpbml0KSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSW52YWxpZExI
U0luRm9ySW4pOwogICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
bGV4KCk7CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID0gbGV4KCk7CiAgICAgICAgICAg
ICAgICAgICAgIGxlZnQgPSBpbml0OwogICAgICAgICAgICAgICAgICAgICByaWdodCA9IHBhcnNl
RXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgICAgICBpbml0ID0gbnVsbDsKQEAgLTI4Nzgs
MzEgKzQwNTcsMzggQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
ICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uOwogICAgICAgICBzdGF0
ZS5pbkl0ZXJhdGlvbiA9IHRydWU7CiAKLSAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7
CisgICAgICAgIGlmICghKG9wdHMgIT09IHVuZGVmaW5lZCAmJiBvcHRzLmlnbm9yZUJvZHkpKSB7
CisgICAgICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247CiAKLSAgICAgICAgcmV0dXJu
ICh0eXBlb2YgbGVmdCA9PT0gJ3VuZGVmaW5lZCcpID8KLSAgICAgICAgICAgICAgICBkZWxlZ2F0
ZS5jcmVhdGVGb3JTdGF0ZW1lbnQoaW5pdCwgdGVzdCwgdXBkYXRlLCBib2R5KSA6Ci0gICAgICAg
ICAgICAgICAgZGVsZWdhdGUuY3JlYXRlRm9ySW5TdGF0ZW1lbnQobGVmdCwgcmlnaHQsIGJvZHkp
OworICAgICAgICBpZiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAg
ICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVGb3JTdGF0ZW1lbnQo
aW5pdCwgdGVzdCwgdXBkYXRlLCBib2R5KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAob3Bl
cmF0b3IudmFsdWUgPT09ICdpbicpIHsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseSht
YXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUZvckluU3RhdGVtZW50KGxlZnQsIHJpZ2h0LCBib2R5KSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUu
Y3JlYXRlRm9yT2ZTdGF0ZW1lbnQobGVmdCwgcmlnaHQsIGJvZHkpKTsKICAgICB9CiAKICAgICAv
LyAxMi43IFRoZSBjb250aW51ZSBzdGF0ZW1lbnQKIAogICAgIGZ1bmN0aW9uIHBhcnNlQ29udGlu
dWVTdGF0ZW1lbnQoKSB7Ci0gICAgICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTsKKyAgICAgICAg
dmFyIGxhYmVsID0gbnVsbCwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAgZXhw
ZWN0S2V5d29yZCgnY29udGludWUnKTsKIAogICAgICAgICAvLyBPcHRpbWl6ZSB0aGUgbW9zdCBj
b21tb24gZm9ybTogJ2NvbnRpbnVlOycuCi0gICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChp
bmRleCkgPT09IDB4M0IpIHsKKyAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9
PT0gNTkpIHsKICAgICAgICAgICAgIGxleCgpOwogCiAgICAgICAgICAgICBpZiAoIXN0YXRlLmlu
SXRlcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxs
ZWdhbENvbnRpbnVlKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIGRlbGVn
YXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG51bGwpOworICAgICAgICAgICAgcmV0dXJuIG1h
cmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobnVsbCkp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7CkBAIC0y
OTEwLDE0ICs0MDk2LDEzIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1l
bnQKICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29udGlu
dWUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQobnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHko
bWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0YXRlbWVudChudWxsKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLklkZW50aWZpZXIpIHsK
ICAgICAgICAgICAgIGxhYmVsID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKIAotICAgICAg
ICAgICAga2V5ID0gJyQnICsgbGFiZWwubmFtZTsKLSAgICAgICAgICAgIGlmICghT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7CisgICAg
ICAgICAgICBpZiAoIXN0YXRlLmxhYmVsU2V0LmhhcyhsYWJlbC5uYW1lKSkgewogICAgICAgICAg
ICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVua25vd25MYWJlbCwgbGFiZWwubmFtZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI5MjgsMjUgKzQxMTMsMjUgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgdGhyb3dFcnJv
cih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0YXRlbWVudChsYWJlbCk7CisgICAgICAgIHJl
dHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50
KGxhYmVsKSk7CiAgICAgfQogCiAgICAgLy8gMTIuOCBUaGUgYnJlYWsgc3RhdGVtZW50CiAKICAg
ICBmdW5jdGlvbiBwYXJzZUJyZWFrU3RhdGVtZW50KCkgewotICAgICAgICB2YXIgbGFiZWwgPSBu
dWxsLCBrZXk7CisgICAgICAgIHZhciBsYWJlbCA9IG51bGwsIG1hcmtlciA9IG1hcmtlckNyZWF0
ZSgpOwogCiAgICAgICAgIGV4cGVjdEtleXdvcmQoJ2JyZWFrJyk7CiAKLSAgICAgICAgLy8gQ2F0
Y2ggdGhlIHZlcnkgY29tbW9uIGNhc2UgZmlyc3Q6IGltbWVkaWF0ZWx5IGEgc2VtaWNvbG9uIChV
KzAwM0IpLgotICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpID09PSAweDNCKSB7
CisgICAgICAgIC8vIENhdGNoIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlIGZpcnN0OiBpbW1lZGlhdGVs
eSBhIHNlbWljb2xvbiAoY2hhciAjNTkpLgorICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQo
aW5kZXgpID09PSA1OSkgewogICAgICAgICAgICAgbGV4KCk7CiAKICAgICAgICAgICAgIGlmICgh
KHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkgewogICAgICAgICAgICAgICAg
IHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxCcmVhayk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVudChudWxsKTsK
KyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUJy
ZWFrU3RhdGVtZW50KG51bGwpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwZWVrTGluZVRl
cm1pbmF0b3IoKSkgewpAQCAtMjk1NCwxNCArNDEzOSwxMyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1
ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVz
c2FnZXMuSWxsZWdhbEJyZWFrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KG51bGwpOworICAgICAgICAgICAgcmV0dXJu
IG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobnVsbCkp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5JZGVu
dGlmaWVyKSB7CiAgICAgICAgICAgICBsYWJlbCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7
CiAKLSAgICAgICAgICAgIGtleSA9ICckJyArIGxhYmVsLm5hbWU7Ci0gICAgICAgICAgICBpZiAo
IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5
KSkgeworICAgICAgICAgICAgaWYgKCFzdGF0ZS5sYWJlbFNldC5oYXMobGFiZWwubmFtZSkpIHsK
ICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Vbmtub3duTGFiZWwsIGxh
YmVsLm5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yOTcyLDEzICs0MTU2LDEz
IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAg
IHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxCcmVhayk7CiAgICAgICAgIH0KIAotICAg
ICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobGFiZWwpOworICAgICAg
ICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRlbWVu
dChsYWJlbCkpOwogICAgIH0KIAogICAgIC8vIDEyLjkgVGhlIHJldHVybiBzdGF0ZW1lbnQKIAog
ICAgIGZ1bmN0aW9uIHBhcnNlUmV0dXJuU3RhdGVtZW50KCkgewotICAgICAgICB2YXIgYXJndW1l
bnQgPSBudWxsOworICAgICAgICB2YXIgYXJndW1lbnQgPSBudWxsLCBtYXJrZXIgPSBtYXJrZXJD
cmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCdyZXR1cm4nKTsKIApAQCAtMjk4Nywx
NiArNDE3MSwxNiBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyAncmV0dXJuJyBmb2xsb3dlZCBieSBhIHNwYWNlIGFuZCBh
biBpZGVudGlmaWVyIGlzIHZlcnkgY29tbW9uLgotICAgICAgICBpZiAoc291cmNlLmNoYXJDb2Rl
QXQoaW5kZXgpID09PSAweDIwKSB7CisgICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRl
eCkgPT09IDMyKSB7CiAgICAgICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNo
YXJDb2RlQXQoaW5kZXggKyAxKSkpIHsKICAgICAgICAgICAgICAgICBhcmd1bWVudCA9IHBhcnNl
RXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVSZXR1cm5TdGF0ZW1lbnQoYXJndW1lbnQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCiAgICAgICAgIGlmIChwZWVrTGluZVRlcm1pbmF0b3IoKSkgewotICAgICAgICAgICAgcmV0
dXJuIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChudWxsKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChu
dWxsKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1hdGNoKCc7JykpIHsKQEAgLTMwMDcs
MTcgKzQxOTEsMTUgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
CiAgICAgICAgIGNvbnN1bWVTZW1pY29sb24oKTsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUu
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50KTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFw
cGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50KSk7CiAg
ICAgfQogCiAgICAgLy8gMTIuMTAgVGhlIHdpdGggc3RhdGVtZW50CiAKICAgICBmdW5jdGlvbiBw
YXJzZVdpdGhTdGF0ZW1lbnQoKSB7Ci0gICAgICAgIHZhciBvYmplY3QsIGJvZHk7CisgICAgICAg
IHZhciBvYmplY3QsIGJvZHksIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAgIGlm
IChzdHJpY3QpIHsKLSAgICAgICAgICAgIC8vIFRPRE8oaWthcmllbmF0b3IpOiBTaG91bGQgd2Ug
dXBkYXRlIHRoZSB0ZXN0IGNhc2VzIGluc3RlYWQ/Ci0gICAgICAgICAgICBza2lwQ29tbWVudCgp
OwogICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJpY3RNb2Rl
V2l0aCk7CiAgICAgICAgIH0KIApAQCAtMzAzMSwxNSArNDIxMywxNyBAQCBwYXJzZVN0YXRlbWVu
dDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVt
ZW50KCk7CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVdpdGhTdGF0ZW1lbnQob2Jq
ZWN0LCBib2R5KTsKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUu
Y3JlYXRlV2l0aFN0YXRlbWVudChvYmplY3QsIGJvZHkpKTsKICAgICB9CiAKICAgICAvLyAxMi4x
MCBUaGUgc3dpdGggc3RhdGVtZW50CiAKICAgICBmdW5jdGlvbiBwYXJzZVN3aXRjaENhc2UoKSB7
Ci0gICAgICAgIHZhciB0ZXN0LCBjb25zZXF1ZW50ID0gW10sIHN0YXRlbWVudCwgc3RhcnRUb2tl
bjsKKyAgICAgICAgdmFyIHRlc3QsCisgICAgICAgICAgICBjb25zZXF1ZW50ID0gW10sCisgICAg
ICAgICAgICBzb3VyY2VFbGVtZW50LAorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRl
KCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKICAgICAgICAgaWYgKG1hdGNo
S2V5d29yZCgnZGVmYXVsdCcpKSB7CiAgICAgICAgICAgICBsZXgoKTsKICAgICAgICAgICAgIHRl
c3QgPSBudWxsOwpAQCAtMzA1MywxNSArNDIzNywxOCBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgICAgICBpZiAobWF0Y2goJ30nKSB8fCBtYXRjaEtl
eXdvcmQoJ2RlZmF1bHQnKSB8fCBtYXRjaEtleXdvcmQoJ2Nhc2UnKSkgewogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhdGVtZW50ID0gcGFyc2VT
dGF0ZW1lbnQoKTsKLSAgICAgICAgICAgIGNvbnNlcXVlbnQucHVzaChzdGF0ZW1lbnQpOworICAg
ICAgICAgICAgc291cmNlRWxlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpOworICAgICAgICAg
ICAgaWYgKHR5cGVvZiBzb3VyY2VFbGVtZW50ID09PSAndW5kZWZpbmVkJykgeworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc2VxdWVudC5wdXNo
KHNvdXJjZUVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1h
cmtFbmQoZGVsZWdhdGUuY3JlYXRlU3dpdGNoQ2FzZSh0ZXN0LCBjb25zZXF1ZW50KSwgc3RhcnRU
b2tlbik7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0
ZVN3aXRjaENhc2UodGVzdCwgY29uc2VxdWVudCkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBh
cnNlU3dpdGNoU3RhdGVtZW50KCkgewotICAgICAgICB2YXIgZGlzY3JpbWluYW50LCBjYXNlcywg
Y2xhdXNlLCBvbGRJblN3aXRjaCwgZGVmYXVsdEZvdW5kOworICAgICAgICB2YXIgZGlzY3JpbWlu
YW50LCBjYXNlcywgY2xhdXNlLCBvbGRJblN3aXRjaCwgZGVmYXVsdEZvdW5kLCBtYXJrZXIgPSBt
YXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCdzd2l0Y2gnKTsKIApAQCAt
MzA3Nyw3ICs0MjY0LDcgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVu
dAogCiAgICAgICAgIGlmIChtYXRjaCgnfScpKSB7CiAgICAgICAgICAgICBsZXgoKTsKLSAgICAg
ICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZGlzY3JpbWluYW50
LCBjYXNlcyk7CisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0
ZS5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoZGlzY3JpbWluYW50LCBjYXNlcykpOwogICAgICAgICB9
CiAKICAgICAgICAgb2xkSW5Td2l0Y2ggPSBzdGF0ZS5pblN3aXRjaDsKQEAgLTMxMDIsMTMgKzQy
ODksMTMgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogCiAgICAg
ICAgIGV4cGVjdCgnfScpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVTd2l0Y2hT
dGF0ZW1lbnQoZGlzY3JpbWluYW50LCBjYXNlcyk7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBs
eShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0YXRlbWVudChkaXNjcmltaW5hbnQsIGNh
c2VzKSk7CiAgICAgfQogCiAgICAgLy8gMTIuMTMgVGhlIHRocm93IHN0YXRlbWVudAogCiAgICAg
ZnVuY3Rpb24gcGFyc2VUaHJvd1N0YXRlbWVudCgpIHsKLSAgICAgICAgdmFyIGFyZ3VtZW50Owor
ICAgICAgICB2YXIgYXJndW1lbnQsIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOwogCiAgICAgICAg
IGV4cGVjdEtleXdvcmQoJ3Rocm93Jyk7CiAKQEAgLTMxMjAsMTUgKzQzMDcsMTQgQEAgcGFyc2VT
dGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogCiAgICAgICAgIGNvbnN1bWVTZW1p
Y29sb24oKTsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVGhyb3dTdGF0ZW1lbnQo
YXJndW1lbnQpOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVUaHJvd1N0YXRlbWVudChhcmd1bWVudCkpOwogICAgIH0KIAogICAgIC8vIDEyLjE0IFRo
ZSB0cnkgc3RhdGVtZW50CiAKICAgICBmdW5jdGlvbiBwYXJzZUNhdGNoQ2xhdXNlKCkgewotICAg
ICAgICB2YXIgcGFyYW0sIGJvZHksIHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBwYXJhbSwgYm9k
eSwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2th
aGVhZDsKICAgICAgICAgZXhwZWN0S2V5d29yZCgnY2F0Y2gnKTsKIAogICAgICAgICBleHBlY3Qo
JygnKTsKQEAgLTMxMzYsMTkgKzQzMjIsMTkgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNl
U291cmNlRWxlbWVudAogICAgICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKGxvb2thaGVhZCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBwYXJhbSA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7Cisg
ICAgICAgIHBhcmFtID0gcGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgIC8vIDEyLjE0LjEKLSAg
ICAgICAgaWYgKHN0cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKHBhcmFtLm5hbWUpKSB7CisgICAg
ICAgIGlmIChzdHJpY3QgJiYgcGFyYW0udHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNS
ZXN0cmljdGVkV29yZChwYXJhbS5uYW1lKSkgewogICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVy
YW50KHt9LCBNZXNzYWdlcy5TdHJpY3RDYXRjaFZhcmlhYmxlKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGV4cGVjdCgnKScpOwogICAgICAgICBib2R5ID0gcGFyc2VCbG9jaygpOwotICAgICAgICBy
ZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVDYXRjaENsYXVzZShwYXJhbSwg
Ym9keSksIHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBk
ZWxlZ2F0ZS5jcmVhdGVDYXRjaENsYXVzZShwYXJhbSwgYm9keSkpOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIHBhcnNlVHJ5U3RhdGVtZW50KCkgewotICAgICAgICB2YXIgYmxvY2ssIGhhbmRsZXJz
ID0gW10sIGZpbmFsaXplciA9IG51bGw7CisgICAgICAgIHZhciBibG9jaywgaGFuZGxlcnMgPSBb
XSwgZmluYWxpemVyID0gbnVsbCwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CiAKICAgICAgICAg
ZXhwZWN0S2V5d29yZCgndHJ5Jyk7CiAKQEAgLTMxNjcsNDQgKzQzNTMsNDAgQEAgcGFyc2VTdGF0
ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAgdGhyb3dFcnJvcih7
fSwgTWVzc2FnZXMuTm9DYXRjaE9yRmluYWxseSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gZGVsZWdhdGUuY3JlYXRlVHJ5U3RhdGVtZW50KGJsb2NrLCBbXSwgaGFuZGxlcnMsIGZpbmFs
aXplcik7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0
ZVRyeVN0YXRlbWVudChibG9jaywgW10sIGhhbmRsZXJzLCBmaW5hbGl6ZXIpKTsKICAgICB9CiAK
ICAgICAvLyAxMi4xNSBUaGUgZGVidWdnZXIgc3RhdGVtZW50CiAKICAgICBmdW5jdGlvbiBwYXJz
ZURlYnVnZ2VyU3RhdGVtZW50KCkgeworICAgICAgICB2YXIgbWFya2VyID0gbWFya2VyQ3JlYXRl
KCk7CiAgICAgICAgIGV4cGVjdEtleXdvcmQoJ2RlYnVnZ2VyJyk7CiAKICAgICAgICAgY29uc3Vt
ZVNlbWljb2xvbigpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVEZWJ1Z2dlclN0
YXRlbWVudCgpOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5j
cmVhdGVEZWJ1Z2dlclN0YXRlbWVudCgpKTsKICAgICB9CiAKICAgICAvLyAxMiBTdGF0ZW1lbnRz
CiAKICAgICBmdW5jdGlvbiBwYXJzZVN0YXRlbWVudCgpIHsKICAgICAgICAgdmFyIHR5cGUgPSBs
b29rYWhlYWQudHlwZSwKKyAgICAgICAgICAgIG1hcmtlciwKICAgICAgICAgICAgIGV4cHIsCi0g
ICAgICAgICAgICBsYWJlbGVkQm9keSwKLSAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgIHN0
YXJ0VG9rZW47CisgICAgICAgICAgICBsYWJlbGVkQm9keTsKIAogICAgICAgICBpZiAodHlwZSA9
PT0gVG9rZW4uRU9GKSB7CiAgICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yICYmIGxv
b2thaGVhZC52YWx1ZSA9PT0gJ3snKSB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygp
OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKLQogICAgICAg
ICBpZiAodHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikgewogICAgICAgICAgICAgc3dpdGNoIChs
b29rYWhlYWQudmFsdWUpIHsKICAgICAgICAgICAgIGNhc2UgJzsnOgotICAgICAgICAgICAgICAg
IHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRW1wdHlTdGF0ZW1lbnQoKSwgc3RhcnRUb2tl
bik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRW1wdHlTdGF0ZW1lbnQoKTsKKyAgICAg
ICAgICAgIGNhc2UgJ3snOgorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUJsb2NrKCk7CiAg
ICAgICAgICAgICBjYXNlICcoJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFy
a0VuZChwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCgpOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMyMTMsNjcg
KzQzOTUsNzYgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAg
ICAgICBpZiAodHlwZSA9PT0gVG9rZW4uS2V5d29yZCkgewogICAgICAgICAgICAgc3dpdGNoIChs
b29rYWhlYWQudmFsdWUpIHsKICAgICAgICAgICAgIGNhc2UgJ2JyZWFrJzoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUJyZWFrU3RhdGVtZW50KCksIHN0YXJ0
VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUJyZWFrU3RhdGVtZW50KCk7CiAg
ICAgICAgICAgICBjYXNlICdjb250aW51ZSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVn
YXRlLm1hcmtFbmQocGFyc2VDb250aW51ZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VDb250aW51ZVN0YXRlbWVudCgpOwogICAgICAgICAgICAg
Y2FzZSAnZGVidWdnZXInOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5k
KHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgIGNhc2UgJ2RvJzoK
LSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZURvV2hpbGVTdGF0
ZW1lbnQoKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRG9XaGls
ZVN0YXRlbWVudCgpOwogICAgICAgICAgICAgY2FzZSAnZm9yJzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUZvclN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGb3JTdGF0ZW1lbnQoKTsKICAgICAgICAgICAg
IGNhc2UgJ2Z1bmN0aW9uJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0Vu
ZChwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpOworICAgICAgICAgICAgY2FzZSAn
Y2xhc3MnOgorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUNsYXNzRGVjbGFyYXRpb24oKTsK
ICAgICAgICAgICAgIGNhc2UgJ2lmJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUu
bWFya0VuZChwYXJzZUlmU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAg
IHJldHVybiBwYXJzZUlmU3RhdGVtZW50KCk7CiAgICAgICAgICAgICBjYXNlICdyZXR1cm4nOgot
ICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlUmV0dXJuU3RhdGVt
ZW50KCksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVJldHVyblN0
YXRlbWVudCgpOwogICAgICAgICAgICAgY2FzZSAnc3dpdGNoJzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVN3aXRjaFN0YXRlbWVudCgpLCBzdGFydFRva2Vu
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKTsKICAgICAg
ICAgICAgIGNhc2UgJ3Rocm93JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFy
a0VuZChwYXJzZVRocm93U3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAg
IHJldHVybiBwYXJzZVRocm93U3RhdGVtZW50KCk7CiAgICAgICAgICAgICBjYXNlICd0cnknOgot
ICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlVHJ5U3RhdGVtZW50
KCksIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVRyeVN0YXRlbWVu
dCgpOwogICAgICAgICAgICAgY2FzZSAndmFyJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVs
ZWdhdGUubWFya0VuZChwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOworICAg
ICAgICAgICAgICAgIHJldHVybiBwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCk7CiAgICAgICAgICAg
ICBjYXNlICd3aGlsZSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQo
cGFyc2VXaGlsZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcGFyc2VXaGlsZVN0YXRlbWVudCgpOwogICAgICAgICAgICAgY2FzZSAnd2l0aCc6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VXaXRoU3RhdGVtZW50KCks
IHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVdpdGhTdGF0ZW1lbnQo
KTsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKICAg
ICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbigpOwogCiAgICAgICAgIC8vIDEyLjEyIExhYmVs
bGVkIFN0YXRlbWVudHMKICAgICAgICAgaWYgKChleHByLnR5cGUgPT09IFN5bnRheC5JZGVudGlm
aWVyKSAmJiBtYXRjaCgnOicpKSB7CiAgICAgICAgICAgICBsZXgoKTsKIAotICAgICAgICAgICAg
a2V5ID0gJyQnICsgZXhwci5uYW1lOwotICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS5sYWJlbFNldCwga2V5KSkgeworICAgICAgICAgICAg
aWYgKHN0YXRlLmxhYmVsU2V0LmhhcyhleHByLm5hbWUpKSB7CiAgICAgICAgICAgICAgICAgdGhy
b3dFcnJvcih7fSwgTWVzc2FnZXMuUmVkZWNsYXJhdGlvbiwgJ0xhYmVsJywgZXhwci5uYW1lKTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3RhdGUubGFiZWxTZXRba2V5XSA9IHRydWU7
CisgICAgICAgICAgICBzdGF0ZS5sYWJlbFNldC5zZXQoZXhwci5uYW1lLCB0cnVlKTsKICAgICAg
ICAgICAgIGxhYmVsZWRCb2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgICAgIGRlbGV0
ZSBzdGF0ZS5sYWJlbFNldFtrZXldOwotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtF
bmQoZGVsZWdhdGUuY3JlYXRlTGFiZWxlZFN0YXRlbWVudChleHByLCBsYWJlbGVkQm9keSksIHN0
YXJ0VG9rZW4pOworICAgICAgICAgICAgc3RhdGUubGFiZWxTZXQuZGVsZXRlKGV4cHIubmFtZSk7
CisgICAgICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVM
YWJlbGVkU3RhdGVtZW50KGV4cHIsIGxhYmVsZWRCb2R5KSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBjb25zdW1lU2VtaWNvbG9uKCk7CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQo
ZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lvblN0YXRlbWVudChleHByKSwgc3RhcnRUb2tlbik7Cisg
ICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Np
b25TdGF0ZW1lbnQoZXhwcikpOwogICAgIH0KIAogICAgIC8vIDEzIEZ1bmN0aW9uIERlZmluaXRp
b24KIAorICAgIGZ1bmN0aW9uIHBhcnNlQ29uY2lzZUJvZHkoKSB7CisgICAgICAgIGlmIChtYXRj
aCgneycpKSB7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
KTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKSB7
CiAgICAgICAgIHZhciBzb3VyY2VFbGVtZW50LCBzb3VyY2VFbGVtZW50cyA9IFtdLCB0b2tlbiwg
ZGlyZWN0aXZlLCBmaXJzdFJlc3RyaWN0ZWQsCi0gICAgICAgICAgICBvbGRMYWJlbFNldCwgb2xk
SW5JdGVyYXRpb24sIG9sZEluU3dpdGNoLCBvbGRJbkZ1bmN0aW9uQm9keSwgc3RhcnRUb2tlbjsK
KyAgICAgICAgICAgIG9sZExhYmVsU2V0LCBvbGRJbkl0ZXJhdGlvbiwgb2xkSW5Td2l0Y2gsIG9s
ZEluRnVuY3Rpb25Cb2R5LCBvbGRQYXJlbnRoZXNpemVkQ291bnQsCisgICAgICAgICAgICBtYXJr
ZXIgPSBtYXJrZXJDcmVhdGUoKTsKIAotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwog
ICAgICAgICBleHBlY3QoJ3snKTsKIAogICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsK
QEAgLTMyODgsNyArNDQ3OSw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVs
ZW1lbnQKICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBkaXJlY3RpdmUKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRpcmVjdGl2ZSA9IHNv
dXJjZS5zbGljZSh0b2tlbi5zdGFydCArIDEsIHRva2VuLmVuZCAtIDEpOworICAgICAgICAgICAg
ZGlyZWN0aXZlID0gc291cmNlLnNsaWNlKHRva2VuLnJhbmdlWzBdICsgMSwgdG9rZW4ucmFuZ2Vb
MV0gLSAxKTsKICAgICAgICAgICAgIGlmIChkaXJlY3RpdmUgPT09ICd1c2Ugc3RyaWN0Jykgewog
ICAgICAgICAgICAgICAgIHN0cmljdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0
UmVzdHJpY3RlZCkgewpAQCAtMzMwNSwxMSArNDQ5NiwxMyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1
ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgICAgIG9sZEluSXRlcmF0aW9uID0gc3RhdGUuaW5J
dGVyYXRpb247CiAgICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUuaW5Td2l0Y2g7CiAgICAgICAg
IG9sZEluRnVuY3Rpb25Cb2R5ID0gc3RhdGUuaW5GdW5jdGlvbkJvZHk7CisgICAgICAgIG9sZFBh
cmVudGhlc2l6ZWRDb3VudCA9IHN0YXRlLnBhcmVudGhlc2l6ZWRDb3VudDsKIAotICAgICAgICBz
dGF0ZS5sYWJlbFNldCA9IHt9OworICAgICAgICBzdGF0ZS5sYWJlbFNldCA9IG5ldyBTdHJpbmdN
YXAoKTsKICAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBmYWxzZTsKICAgICAgICAgc3RhdGUu
aW5Td2l0Y2ggPSBmYWxzZTsKICAgICAgICAgc3RhdGUuaW5GdW5jdGlvbkJvZHkgPSB0cnVlOwor
ICAgICAgICBzdGF0ZS5wYXJlbnRoZXNpemVkQ291bnQgPSAwOwogCiAgICAgICAgIHdoaWxlIChp
bmRleCA8IGxlbmd0aCkgewogICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHsKQEAgLTMzMjgs
NDQgKzQ1MjEsOTggQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
ICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0aW9uOwogICAgICAgICBzdGF0
ZS5pblN3aXRjaCA9IG9sZEluU3dpdGNoOwogICAgICAgICBzdGF0ZS5pbkZ1bmN0aW9uQm9keSA9
IG9sZEluRnVuY3Rpb25Cb2R5OworICAgICAgICBzdGF0ZS5wYXJlbnRoZXNpemVkQ291bnQgPSBv
bGRQYXJlbnRoZXNpemVkQ291bnQ7CisKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtl
ciwgZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMpKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB2YWxpZGF0ZVBhcmFtKG9wdGlvbnMsIHBhcmFtLCBuYW1lKSB7Cisg
ICAgICAgIGlmIChzdHJpY3QpIHsKKyAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKG5h
bWUpKSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5zdHJpY3RlZCA9IHBhcmFtOworICAgICAg
ICAgICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcHRpb25zLnBhcmFtU2V0LmhhcyhuYW1lKSkg
eworICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RyaWN0ZWQgPSBwYXJhbTsKKyAgICAgICAgICAg
ICAgICBvcHRpb25zLm1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJhbUR1cGU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuZmlyc3RSZXN0cmljdGVkKSB7Cisg
ICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZChuYW1lKSkgeworICAgICAgICAgICAgICAg
IG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkID0gcGFyYW07CisgICAgICAgICAgICAgICAgb3B0aW9u
cy5tZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lOworICAgICAgICAgICAgfSBlbHNl
IGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBv
cHRpb25zLmZpcnN0UmVzdHJpY3RlZCA9IHBhcmFtOworICAgICAgICAgICAgICAgIG9wdGlvbnMu
bWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAob3B0aW9ucy5wYXJhbVNldC5oYXMobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBvcHRp
b25zLmZpcnN0UmVzdHJpY3RlZCA9IHBhcmFtOworICAgICAgICAgICAgICAgIG9wdGlvbnMubWVz
c2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBvcHRpb25zLnBhcmFtU2V0LnNldChuYW1lLCB0cnVlKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBwYXJzZVBhcmFtKG9wdGlvbnMpIHsKKyAgICAgICAgdmFyIHRva2VuLCByZXN0
LCBwYXJhbSwgZGVmOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRl
LmNyZWF0ZUJsb2NrU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzKSwgc3RhcnRUb2tlbik7CisgICAg
ICAgIHRva2VuID0gbG9va2FoZWFkOworICAgICAgICBpZiAodG9rZW4udmFsdWUgPT09ICcuLi4n
KSB7CisgICAgICAgICAgICB0b2tlbiA9IGxleCgpOworICAgICAgICAgICAgcmVzdCA9IHRydWU7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF0Y2goJ1snKSkgeworICAgICAgICAgICAgcGFy
YW0gPSBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKTsKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNE
ZXN0cnVjdHVyZWRQYXJhbWV0ZXIob3B0aW9ucywgcGFyYW0pOworICAgICAgICB9IGVsc2UgaWYg
KG1hdGNoKCd7JykpIHsKKyAgICAgICAgICAgIGlmIChyZXN0KSB7CisgICAgICAgICAgICAgICAg
dGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuT2JqZWN0UGF0dGVybkFzUmVzdFBhcmFtZXRlcik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJhbSA9IHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIo
KTsKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0QXNEZXN0cnVjdHVyZWRQYXJhbWV0ZXIob3B0aW9u
cywgcGFyYW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyYW0gPSBwYXJzZVZh
cmlhYmxlSWRlbnRpZmllcigpOworICAgICAgICAgICAgdmFsaWRhdGVQYXJhbShvcHRpb25zLCB0
b2tlbiwgdG9rZW4udmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1hdGNoKCc9Jykp
IHsKKyAgICAgICAgICAgIGlmIChyZXN0KSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRv
bGVyYW50KGxvb2thaGVhZCwgTWVzc2FnZXMuRGVmYXVsdFJlc3RQYXJhbWV0ZXIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICBkZWYgPSBwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKCk7CisgICAgICAgICAgICArK29wdGlvbnMuZGVmYXVsdENvdW50Owor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3QpIHsKKyAgICAgICAgICAgIGlmICghbWF0Y2go
JyknKSkgeworICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlBhcmFtZXRl
ckFmdGVyUmVzdFBhcmFtZXRlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcHRpb25z
LnJlc3QgPSBwYXJhbTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIG9wdGlvbnMucGFyYW1zLnB1c2gocGFyYW0pOworICAgICAgICBvcHRpb25zLmRlZmF1
bHRzLnB1c2goZGVmKTsKKyAgICAgICAgcmV0dXJuICFtYXRjaCgnKScpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHBhcnNlUGFyYW1zKGZpcnN0UmVzdHJpY3RlZCkgewotICAgICAgICB2YXIgcGFy
YW0sIHBhcmFtcyA9IFtdLCB0b2tlbiwgc3RyaWN0ZWQsIHBhcmFtU2V0LCBrZXksIG1lc3NhZ2U7
CisgICAgICAgIHZhciBvcHRpb25zLCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKKworICAgICAg
ICBvcHRpb25zID0geworICAgICAgICAgICAgcGFyYW1zOiBbXSwKKyAgICAgICAgICAgIGRlZmF1
bHRDb3VudDogMCwKKyAgICAgICAgICAgIGRlZmF1bHRzOiBbXSwKKyAgICAgICAgICAgIHJlc3Q6
IG51bGwsCisgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQ6IGZpcnN0UmVzdHJpY3RlZAorICAg
ICAgICB9OworCiAgICAgICAgIGV4cGVjdCgnKCcpOwogCiAgICAgICAgIGlmICghbWF0Y2goJykn
KSkgewotICAgICAgICAgICAgcGFyYW1TZXQgPSB7fTsKKyAgICAgICAgICAgIG9wdGlvbnMucGFy
YW1TZXQgPSBuZXcgU3RyaW5nTWFwKCk7CiAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5n
dGgpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKLSAgICAgICAgICAgICAg
ICBwYXJhbSA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7Ci0gICAgICAgICAgICAgICAga2V5
ID0gJyQnICsgdG9rZW4udmFsdWU7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmljdCkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmljdGVkID0gdG9rZW47Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5LmNhbGwocGFyYW1TZXQsIGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmljdGVkID0gdG9rZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVz
c2FnZXMuU3RyaWN0UGFyYW1EdXBlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICghZmlyc3RSZXN0cmljdGVkKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lOwotICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuOwotICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDsKLSAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwocGFyYW1TZXQsIGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVz
dHJpY3RlZCA9IHRva2VuOwotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1lc3Nh
Z2VzLlN0cmljdFBhcmFtRHVwZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChwYXJhbSk7Ci0gICAgICAgICAgICAg
ICAgcGFyYW1TZXRba2V5XSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKG1hdGNoKCcpJykp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcnNlUGFyYW0ob3B0aW9ucykpIHsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGV4
cGVjdCgnLCcpOwpAQCAtMzM3NCwyMiArNDYyMSwyOSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwg
cGFyc2VTb3VyY2VFbGVtZW50CiAKICAgICAgICAgZXhwZWN0KCcpJyk7CiAKLSAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLAotICAgICAgICAgICAgc3RyaWN0ZWQ6
IHN0cmljdGVkLAotICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkOiBmaXJzdFJlc3RyaWN0ZWQs
Ci0gICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlCi0gICAgICAgIH07CisgICAgICAgIGlmIChv
cHRpb25zLmRlZmF1bHRDb3VudCA9PT0gMCkgeworICAgICAgICAgICAgb3B0aW9ucy5kZWZhdWx0
cyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1hcmtlckFwcGx5KG1hcmtlciwg
b3B0aW9ucyk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
KCkgewotICAgICAgICB2YXIgaWQsIHBhcmFtcyA9IFtdLCBib2R5LCB0b2tlbiwgc3RyaWN0ZWQs
IHRtcCwgZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCBwcmV2aW91c1N0cmljdCwgc3RhcnRUb2tl
bjsKLQotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOworICAgICAgICB2YXIgaWQsIGJv
ZHksIHRva2VuLCB0bXAsIGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSwgcHJldmlvdXNTdHJpY3Qs
IHByZXZpb3VzWWllbGRBbGxvd2VkLCBnZW5lcmF0b3IsCisgICAgICAgICAgICBtYXJrZXIgPSBt
YXJrZXJDcmVhdGUoKTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCdmdW5jdGlvbicpOworCisg
ICAgICAgIGdlbmVyYXRvciA9IGZhbHNlOworICAgICAgICBpZiAobWF0Y2goJyonKSkgeworICAg
ICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IgPSB0cnVlOworICAgICAgICB9
CisKICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7CisKICAgICAgICAgaWQgPSBwYXJzZVZhcmlh
YmxlSWRlbnRpZmllcigpOworCiAgICAgICAgIGlmIChzdHJpY3QpIHsKICAgICAgICAgICAgIGlm
IChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkgewogICAgICAgICAgICAgICAgIHRocm93
RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTsKQEAgLTM0
MDUsMzIgKzQ2NTksNDIgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVu
dAogICAgICAgICB9CiAKICAgICAgICAgdG1wID0gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVk
KTsKLSAgICAgICAgcGFyYW1zID0gdG1wLnBhcmFtczsKLSAgICAgICAgc3RyaWN0ZWQgPSB0bXAu
c3RyaWN0ZWQ7CiAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJlc3RyaWN0ZWQ7
CiAgICAgICAgIGlmICh0bXAubWVzc2FnZSkgewogICAgICAgICAgICAgbWVzc2FnZSA9IHRtcC5t
ZXNzYWdlOwogICAgICAgICB9CiAKICAgICAgICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7Cisg
ICAgICAgIHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRBbGxvd2VkOworICAgICAg
ICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBnZW5lcmF0b3I7CisKICAgICAgICAgYm9keSA9IHBhcnNl
RnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpOworCiAgICAgICAgIGlmIChzdHJpY3QgJiYgZmlyc3RS
ZXN0cmljdGVkKSB7CiAgICAgICAgICAgICB0aHJvd0Vycm9yKGZpcnN0UmVzdHJpY3RlZCwgbWVz
c2FnZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmljdCAmJiBzdHJpY3RlZCkgewotICAg
ICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHN0cmljdGVkLCBtZXNzYWdlKTsKKyAgICAgICAg
aWYgKHN0cmljdCAmJiB0bXAuc3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3JUb2xl
cmFudCh0bXAuc3RyaWN0ZWQsIG1lc3NhZ2UpOwogICAgICAgICB9CiAgICAgICAgIHN0cmljdCA9
IHByZXZpb3VzU3RyaWN0OworICAgICAgICBzdGF0ZS55aWVsZEFsbG93ZWQgPSBwcmV2aW91c1lp
ZWxkQWxsb3dlZDsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5j
cmVhdGVGdW5jdGlvbkRlY2xhcmF0aW9uKGlkLCBwYXJhbXMsIFtdLCBib2R5KSwgc3RhcnRUb2tl
bik7CisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZUZ1
bmN0aW9uRGVjbGFyYXRpb24oaWQsIHRtcC5wYXJhbXMsIHRtcC5kZWZhdWx0cywgYm9keSwgdG1w
LnJlc3QsIGdlbmVyYXRvciwgZmFsc2UpKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUZ1
bmN0aW9uRXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIHRva2VuLCBpZCA9IG51bGwsIHN0cmlj
dGVkLCBmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UsIHRtcCwgcGFyYW1zID0gW10sIGJvZHksIHBy
ZXZpb3VzU3RyaWN0LCBzdGFydFRva2VuOworICAgICAgICB2YXIgdG9rZW4sIGlkID0gbnVsbCwg
Zmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlLCB0bXAsIGJvZHksIHByZXZpb3VzU3RyaWN0LCBwcmV2
aW91c1lpZWxkQWxsb3dlZCwgZ2VuZXJhdG9yLAorICAgICAgICAgICAgbWFya2VyID0gbWFya2Vy
Q3JlYXRlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKICAgICAgICAgZXhw
ZWN0S2V5d29yZCgnZnVuY3Rpb24nKTsKIAorICAgICAgICBnZW5lcmF0b3IgPSBmYWxzZTsKKwor
ICAgICAgICBpZiAobWF0Y2goJyonKSkgeworICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IgPSB0cnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKCFtYXRjaCgnKCcp
KSB7CiAgICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKICAgICAgICAgICAgIGlkID0gcGFy
c2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKQEAgLTM0NTAsMjcgKzQ3MTQsMjIyIEBAIHBhcnNlU3Rh
dGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgfQogCiAgICAgICAgIHRt
cCA9IHBhcnNlUGFyYW1zKGZpcnN0UmVzdHJpY3RlZCk7Ci0gICAgICAgIHBhcmFtcyA9IHRtcC5w
YXJhbXM7Ci0gICAgICAgIHN0cmljdGVkID0gdG1wLnN0cmljdGVkOwogICAgICAgICBmaXJzdFJl
c3RyaWN0ZWQgPSB0bXAuZmlyc3RSZXN0cmljdGVkOwogICAgICAgICBpZiAodG1wLm1lc3NhZ2Up
IHsKICAgICAgICAgICAgIG1lc3NhZ2UgPSB0bXAubWVzc2FnZTsKICAgICAgICAgfQogCiAgICAg
ICAgIHByZXZpb3VzU3RyaWN0ID0gc3RyaWN0OworICAgICAgICBwcmV2aW91c1lpZWxkQWxsb3dl
ZCA9IHN0YXRlLnlpZWxkQWxsb3dlZDsKKyAgICAgICAgc3RhdGUueWllbGRBbGxvd2VkID0gZ2Vu
ZXJhdG9yOworCiAgICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKTsK
KwogICAgICAgICBpZiAoc3RyaWN0ICYmIGZpcnN0UmVzdHJpY3RlZCkgewogICAgICAgICAgICAg
dGhyb3dFcnJvcihmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UpOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChzdHJpY3QgJiYgc3RyaWN0ZWQpIHsKLSAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFu
dChzdHJpY3RlZCwgbWVzc2FnZSk7CisgICAgICAgIGlmIChzdHJpY3QgJiYgdG1wLnN0cmljdGVk
KSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG1wLnN0cmljdGVkLCBtZXNzYWdl
KTsKICAgICAgICAgfQogICAgICAgICBzdHJpY3QgPSBwcmV2aW91c1N0cmljdDsKKyAgICAgICAg
c3RhdGUueWllbGRBbGxvd2VkID0gcHJldmlvdXNZaWVsZEFsbG93ZWQ7CisKKyAgICAgICAgcmV0
dXJuIG1hcmtlckFwcGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9u
KGlkLCB0bXAucGFyYW1zLCB0bXAuZGVmYXVsdHMsIGJvZHksIHRtcC5yZXN0LCBnZW5lcmF0b3Is
IGZhbHNlKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGFyc2VZaWVsZEV4cHJlc3Npb24oKSB7
CisgICAgICAgIHZhciB5aWVsZFRva2VuLCBkZWxlZ2F0ZUZsYWcsIGV4cHIsIG1hcmtlciA9IG1h
cmtlckNyZWF0ZSgpOworCisgICAgICAgIHlpZWxkVG9rZW4gPSBsZXgoKTsKKyAgICAgICAgYXNz
ZXJ0KHlpZWxkVG9rZW4udmFsdWUgPT09ICd5aWVsZCcsICdDYWxsZWQgcGFyc2VZaWVsZEV4cHJl
c3Npb24gd2l0aCBub24teWllbGQgbG9va2FoZWFkLicpOworCisgICAgICAgIGlmICghc3RhdGUu
eWllbGRBbGxvd2VkKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3Nh
Z2VzLklsbGVnYWxZaWVsZCk7CisgICAgICAgIH0KKworICAgICAgICBkZWxlZ2F0ZUZsYWcgPSBm
YWxzZTsKKyAgICAgICAgaWYgKG1hdGNoKCcqJykpIHsKKyAgICAgICAgICAgIGxleCgpOworICAg
ICAgICAgICAgZGVsZWdhdGVGbGFnID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cHIg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisKKyAgICAgICAgcmV0dXJuIG1hcmtlckFw
cGx5KG1hcmtlciwgZGVsZWdhdGUuY3JlYXRlWWllbGRFeHByZXNzaW9uKGV4cHIsIGRlbGVnYXRl
RmxhZykpOworICAgIH0KKworICAgIC8vIDE0IEZ1bmN0aW9ucyBhbmQgY2xhc3NlcworCisgICAg
Ly8gMTQuMSBGdW5jdGlvbnMgaXMgZGVmaW5lZCBhYm92ZSAoMTMgaW4gRVM1KQorICAgIC8vIDE0
LjIgQXJyb3cgRnVuY3Rpb25zIERlZmluaXRpb25zIGlzIGRlZmluZWQgaW4gKDcuMyBhc3NpZ25t
ZW50cykKKworICAgIC8vIDE0LjMgTWV0aG9kIERlZmluaXRpb25zCisgICAgLy8gMTQuMy43Cisg
ICAgZnVuY3Rpb24gc3BlY2lhbE1ldGhvZChtZXRob2REZWZpbml0aW9uKSB7CisgICAgICAgIHJl
dHVybiBtZXRob2REZWZpbml0aW9uLmtpbmQgPT09ICdnZXQnIHx8CisgICAgICAgICAgICBtZXRo
b2REZWZpbml0aW9uLmtpbmQgPT09ICdzZXQnIHx8CisgICAgICAgICAgICBtZXRob2REZWZpbml0
aW9uLnZhbHVlLmdlbmVyYXRvcjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZU1ldGhvZERl
ZmluaXRpb24oKSB7CisgICAgICAgIHZhciB0b2tlbiwga2V5LCBwYXJhbSwgcHJvcFR5cGUsIGNv
bXB1dGVkLAorICAgICAgICAgICAgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisKKyAgICAgICAg
aWYgKGxvb2thaGVhZC52YWx1ZSA9PT0gJ3N0YXRpYycpIHsKKyAgICAgICAgICAgIHByb3BUeXBl
ID0gQ2xhc3NQcm9wZXJ0eVR5cGUuc3RhdGljOworICAgICAgICAgICAgbGV4KCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBwcm9wVHlwZSA9IENsYXNzUHJvcGVydHlUeXBlLnByb3Rv
dHlwZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXRjaCgnKicpKSB7CisgICAgICAgICAg
ICBsZXgoKTsKKyAgICAgICAgICAgIGNvbXB1dGVkID0gKGxvb2thaGVhZC52YWx1ZSA9PT0gJ1sn
KTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0
ZU1ldGhvZERlZmluaXRpb24oCisgICAgICAgICAgICAgICAgcHJvcFR5cGUsCisgICAgICAgICAg
ICAgICAgJycsCisgICAgICAgICAgICAgICAgcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpLAorICAg
ICAgICAgICAgICAgIHBhcnNlUHJvcGVydHlNZXRob2RGdW5jdGlvbih7IGdlbmVyYXRvcjogdHJ1
ZSB9KSwKKyAgICAgICAgICAgICAgICBjb21wdXRlZAorICAgICAgICAgICAgKSk7CisgICAgICAg
IH0KKworICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKKyAgICAgICAga2V5ID0gcGFyc2VPYmpl
Y3RQcm9wZXJ0eUtleSgpOworCisgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0gJ2dldCcgJiYg
IW1hdGNoKCcoJykpIHsKKyAgICAgICAgICAgIGNvbXB1dGVkID0gKGxvb2thaGVhZC52YWx1ZSA9
PT0gJ1snKTsKKyAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTsKKwor
ICAgICAgICAgICAgZXhwZWN0KCcoJyk7CisgICAgICAgICAgICBleHBlY3QoJyknKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZU1ldGhvZERl
ZmluaXRpb24oCisgICAgICAgICAgICAgICAgcHJvcFR5cGUsCisgICAgICAgICAgICAgICAgJ2dl
dCcsCisgICAgICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgICAgIHBhcnNlUHJvcGVydHlG
dW5jdGlvbih7IGdlbmVyYXRvcjogZmFsc2UgfSksCisgICAgICAgICAgICAgICAgY29tcHV0ZWQK
KyAgICAgICAgICAgICkpOworICAgICAgICB9CisgICAgICAgIGlmICh0b2tlbi52YWx1ZSA9PT0g
J3NldCcgJiYgIW1hdGNoKCcoJykpIHsKKyAgICAgICAgICAgIGNvbXB1dGVkID0gKGxvb2thaGVh
ZC52YWx1ZSA9PT0gJ1snKTsKKyAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlL
ZXkoKTsKKworICAgICAgICAgICAgZXhwZWN0KCcoJyk7CisgICAgICAgICAgICB0b2tlbiA9IGxv
b2thaGVhZDsKKyAgICAgICAgICAgIHBhcmFtID0gWyBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigp
IF07CisgICAgICAgICAgICBleHBlY3QoJyknKTsKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXJB
cHBseShtYXJrZXIsIGRlbGVnYXRlLmNyZWF0ZU1ldGhvZERlZmluaXRpb24oCisgICAgICAgICAg
ICAgICAgcHJvcFR5cGUsCisgICAgICAgICAgICAgICAgJ3NldCcsCisgICAgICAgICAgICAgICAg
a2V5LAorICAgICAgICAgICAgICAgIHBhcnNlUHJvcGVydHlGdW5jdGlvbih7IHBhcmFtczogcGFy
YW0sIGdlbmVyYXRvcjogZmFsc2UsIG5hbWU6IHRva2VuIH0pLAorICAgICAgICAgICAgICAgIGNv
bXB1dGVkCisgICAgICAgICAgICApKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXB1dGVkID0g
KHRva2VuLnZhbHVlID09PSAnWycpOworCisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJr
ZXIsIGRlbGVnYXRlLmNyZWF0ZU1ldGhvZERlZmluaXRpb24oCisgICAgICAgICAgICBwcm9wVHlw
ZSwKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgcGFyc2VQ
cm9wZXJ0eU1ldGhvZEZ1bmN0aW9uKHsgZ2VuZXJhdG9yOiBmYWxzZSB9KSwKKyAgICAgICAgICAg
IGNvbXB1dGVkCisgICAgICAgICkpOworICAgIH0KKworICAgIC8vIDE0LjUgQ2xhc3MgRGVmaW5p
dGlvbnMKKworICAgIGZ1bmN0aW9uIHBhcnNlQ2xhc3NFbGVtZW50KCkgeworICAgICAgICBpZiAo
bWF0Y2goJzsnKSkgeworICAgICAgICAgICAgbGV4KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VNZXRob2REZWZpbml0aW9uKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiBwYXJzZUNsYXNzQm9keSgpIHsKKyAgICAgICAgdmFyIGNsYXNzRWxl
bWVudCwgY2xhc3NFbGVtZW50cyA9IFtdLCBleGlzdGluZ1Byb3BzID0ge30sCisgICAgICAgICAg
ICBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKSwgcHJvcE5hbWUsIHByb3BUeXBlOworCisgICAgICAg
IGV4aXN0aW5nUHJvcHNbQ2xhc3NQcm9wZXJ0eVR5cGUuc3RhdGljXSA9IG5ldyBTdHJpbmdNYXAo
KTsKKyAgICAgICAgZXhpc3RpbmdQcm9wc1tDbGFzc1Byb3BlcnR5VHlwZS5wcm90b3R5cGVdID0g
bmV3IFN0cmluZ01hcCgpOworCisgICAgICAgIGV4cGVjdCgneycpOworCisgICAgICAgIHdoaWxl
IChpbmRleCA8IGxlbmd0aCkgeworICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykpIHsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsYXNzRWxlbWVu
dCA9IHBhcnNlQ2xhc3NFbGVtZW50KGV4aXN0aW5nUHJvcHMpOworCisgICAgICAgICAgICBpZiAo
dHlwZW9mIGNsYXNzRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgICAgICBj
bGFzc0VsZW1lbnRzLnB1c2goY2xhc3NFbGVtZW50KTsKKworICAgICAgICAgICAgICAgIHByb3BO
YW1lID0gIWNsYXNzRWxlbWVudC5jb21wdXRlZCAmJiBnZXRGaWVsZE5hbWUoY2xhc3NFbGVtZW50
LmtleSk7CisgICAgICAgICAgICAgICAgaWYgKHByb3BOYW1lICE9PSBmYWxzZSkgeworICAgICAg
ICAgICAgICAgICAgICBwcm9wVHlwZSA9IGNsYXNzRWxlbWVudC5zdGF0aWMgPworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1Byb3BlcnR5VHlwZS5zdGF0aWMgOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1Byb3BlcnR5VHlwZS5wcm90b3R5cGU7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BOYW1lID09PSAnY29uc3RydWN0b3InICYmICFj
bGFzc0VsZW1lbnQuc3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BlY2lh
bE1ldGhvZChjbGFzc0VsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy
b3dFcnJvcihjbGFzc0VsZW1lbnQsIE1lc3NhZ2VzLklsbGVnYWxDbGFzc0NvbnN0cnVjdG9yUHJv
cGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGV4aXN0aW5nUHJvcHNbQ2xhc3NQcm9wZXJ0eVR5cGUucHJvdG90eXBlXS5oYXMoJ2Nv
bnN0cnVjdG9yJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGNs
YXNzRWxlbWVudC5rZXksIE1lc3NhZ2VzLklsbGVnYWxEdXBsaWNhdGVDbGFzc1Byb3BlcnR5KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBleGlzdGluZ1Byb3BzW3Byb3BUeXBlXS5zZXQocHJvcE5hbWUsIHRydWUp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGV4cGVjdCgnfScpOworCisgICAgICAgIHJldHVybiBtYXJrZXJBcHBseShtYXJrZXIsIGRlbGVn
YXRlLmNyZWF0ZUNsYXNzQm9keShjbGFzc0VsZW1lbnRzKSk7CisgICAgfQogCi0gICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihp
ZCwgcGFyYW1zLCBbXSwgYm9keSksIHN0YXJ0VG9rZW4pOworICAgIGZ1bmN0aW9uIHBhcnNlQ2xh
c3NFeHByZXNzaW9uKCkgeworICAgICAgICB2YXIgaWQsIHByZXZpb3VzWWllbGRBbGxvd2VkLCBz
dXBlckNsYXNzID0gbnVsbCwgbWFya2VyID0gbWFya2VyQ3JlYXRlKCk7CisKKyAgICAgICAgZXhw
ZWN0S2V5d29yZCgnY2xhc3MnKTsKKworICAgICAgICBpZiAoIW1hdGNoS2V5d29yZCgnZXh0ZW5k
cycpICYmICFtYXRjaCgneycpKSB7CisgICAgICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVu
dGlmaWVyKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdleHRlbmRz
JykpIHsKKyAgICAgICAgICAgIGV4cGVjdEtleXdvcmQoJ2V4dGVuZHMnKTsKKyAgICAgICAgICAg
IHByZXZpb3VzWWllbGRBbGxvd2VkID0gc3RhdGUueWllbGRBbGxvd2VkOworICAgICAgICAgICAg
c3RhdGUueWllbGRBbGxvd2VkID0gZmFsc2U7CisgICAgICAgICAgICBzdXBlckNsYXNzID0gcGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOworICAgICAgICAgICAgc3RhdGUueWllbGRBbGxvd2Vk
ID0gcHJldmlvdXNZaWVsZEFsbG93ZWQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFy
a2VyQXBwbHkobWFya2VyLCBkZWxlZ2F0ZS5jcmVhdGVDbGFzc0V4cHJlc3Npb24oaWQsIHN1cGVy
Q2xhc3MsIHBhcnNlQ2xhc3NCb2R5KCkpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwYXJzZUNs
YXNzRGVjbGFyYXRpb24oKSB7CisgICAgICAgIHZhciBpZCwgcHJldmlvdXNZaWVsZEFsbG93ZWQs
IHN1cGVyQ2xhc3MgPSBudWxsLCBtYXJrZXIgPSBtYXJrZXJDcmVhdGUoKTsKKworICAgICAgICBl
eHBlY3RLZXl3b3JkKCdjbGFzcycpOworCisgICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50
aWZpZXIoKTsKKworICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdleHRlbmRzJykpIHsKKyAgICAg
ICAgICAgIGV4cGVjdEtleXdvcmQoJ2V4dGVuZHMnKTsKKyAgICAgICAgICAgIHByZXZpb3VzWWll
bGRBbGxvd2VkID0gc3RhdGUueWllbGRBbGxvd2VkOworICAgICAgICAgICAgc3RhdGUueWllbGRB
bGxvd2VkID0gZmFsc2U7CisgICAgICAgICAgICBzdXBlckNsYXNzID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbigpOworICAgICAgICAgICAgc3RhdGUueWllbGRBbGxvd2VkID0gcHJldmlvdXNZ
aWVsZEFsbG93ZWQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFy
a2VyLCBkZWxlZ2F0ZS5jcmVhdGVDbGFzc0RlY2xhcmF0aW9uKGlkLCBzdXBlckNsYXNzLCBwYXJz
ZUNsYXNzQm9keSgpKSk7CiAgICAgfQogCi0gICAgLy8gMTQgUHJvZ3JhbQorICAgIC8vIDE1IFBy
b2dyYW0KIAogICAgIGZ1bmN0aW9uIHBhcnNlU291cmNlRWxlbWVudCgpIHsKICAgICAgICAgaWYg
KGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7CkBAIC0zNDgwLDYgKzQ5MzksMTIg
QEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICAgICAg
ICAgIHJldHVybiBwYXJzZUNvbnN0TGV0RGVjbGFyYXRpb24obG9va2FoZWFkLnZhbHVlKTsKICAg
ICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VG
dW5jdGlvbkRlY2xhcmF0aW9uKCk7CisgICAgICAgICAgICBjYXNlICdleHBvcnQnOgorICAgICAg
ICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuSWxsZWdhbEV4cG9ydERl
Y2xhcmF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VFeHBvcnREZWNsYXJhdGlv
bigpOworICAgICAgICAgICAgY2FzZSAnaW1wb3J0JzoKKyAgICAgICAgICAgICAgICB0aHJvd0Vy
cm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLklsbGVnYWxJbXBvcnREZWNsYXJhdGlvbik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW1wb3J0RGVjbGFyYXRpb24oKTsKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RhdGVtZW50KCk7CiAgICAg
ICAgICAgICB9CkBAIC0zNDkwLDcgKzQ5NTUsMjAgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBh
cnNlU291cmNlRWxlbWVudAogICAgICAgICB9CiAgICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VT
b3VyY2VFbGVtZW50cygpIHsKKyAgICBmdW5jdGlvbiBwYXJzZVByb2dyYW1FbGVtZW50KCkgewor
ICAgICAgICBpZiAoZXh0cmEuaXNNb2R1bGUgJiYgbG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktl
eXdvcmQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVlKSB7CisgICAgICAg
ICAgICBjYXNlICdleHBvcnQnOgorICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUV4cG9ydERl
Y2xhcmF0aW9uKCk7CisgICAgICAgICAgICBjYXNlICdpbXBvcnQnOgorICAgICAgICAgICAgICAg
IHJldHVybiBwYXJzZUltcG9ydERlY2xhcmF0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gcGFyc2VTb3VyY2VFbGVtZW50KCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcGFyc2VQcm9ncmFtRWxlbWVudHMoKSB7CiAgICAgICAgIHZhciBzb3VyY2VFbGVt
ZW50LCBzb3VyY2VFbGVtZW50cyA9IFtdLCB0b2tlbiwgZGlyZWN0aXZlLCBmaXJzdFJlc3RyaWN0
ZWQ7CiAKICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CkBAIC0zNDk5LDEzICs0OTc3
LDEzIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc291cmNlRWxlbWVu
dCA9IHBhcnNlU291cmNlRWxlbWVudCgpOworICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IHBh
cnNlUHJvZ3JhbUVsZW1lbnQoKTsKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291
cmNlRWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoc291cmNlRWxlbWVudC5leHByZXNzaW9uLnR5
cGUgIT09IFN5bnRheC5MaXRlcmFsKSB7CiAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBub3Qg
ZGlyZWN0aXZlCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBkaXJlY3RpdmUgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQgKyAxLCB0b2tlbi5lbmQg
LSAxKTsKKyAgICAgICAgICAgIGRpcmVjdGl2ZSA9IHNvdXJjZS5zbGljZSh0b2tlbi5yYW5nZVsw
XSArIDEsIHRva2VuLnJhbmdlWzFdIC0gMSk7CiAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlID09
PSAndXNlIHN0cmljdCcpIHsKICAgICAgICAgICAgICAgICBzdHJpY3QgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGlmIChmaXJzdFJlc3RyaWN0ZWQpIHsKQEAgLTM1MTksOCArNDk5Nyw3IEBAIHBh
cnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgfQogCiAgICAg
ICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAgICAgc291cmNlRWxlbWVudCA9
IHBhcnNlU291cmNlRWxlbWVudCgpOwotICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlm
ICovCisgICAgICAgICAgICBzb3VyY2VFbGVtZW50ID0gcGFyc2VQcm9ncmFtRWxlbWVudCgpOwog
ICAgICAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VFbGVtZW50ID09PSAndW5kZWZpbmVkJykgewog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzUzMCwxNSArNTAwNyw5
MiBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gcGFyc2VQcm9ncmFtKCkgewotICAgICAgICB2YXIgYm9keSwgc3RhcnRUb2tl
bjsKKyAgICAgICAgdmFyIGJvZHksIG1hcmtlciA9IG1hcmtlckNyZWF0ZSgpOworICAgICAgICBz
dHJpY3QgPSAhIWV4dHJhLmlzTW9kdWxlOworICAgICAgICBwZWVrKCk7CisgICAgICAgIGJvZHkg
PSBwYXJzZVByb2dyYW1FbGVtZW50cygpOworICAgICAgICByZXR1cm4gbWFya2VyQXBwbHkobWFy
a2VyLCBkZWxlZ2F0ZS5jcmVhdGVQcm9ncmFtKGJvZHkpKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjb2xsZWN0VG9rZW4oKSB7CisgICAgICAgIHZhciBsb2MsIHRva2VuLCByYW5nZSwgdmFsdWUs
IGVudHJ5OwogCiAgICAgICAgIHNraXBDb21tZW50KCk7Ci0gICAgICAgIHBlZWsoKTsKLSAgICAg
ICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKLSAgICAgICAgc3RyaWN0ID0gZmFsc2U7CisgICAg
ICAgIGxvYyA9IHsKKyAgICAgICAgICAgIHN0YXJ0OiB7CisgICAgICAgICAgICAgICAgbGluZTog
bGluZU51bWJlciwKKyAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgdG9rZW4gPSBleHRyYS5hZHZhbmNl
KCk7CisgICAgICAgIGxvYy5lbmQgPSB7CisgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAor
ICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydAorICAgICAgICB9OworCisgICAg
ICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5FT0YpIHsKKyAgICAgICAgICAgIHJhbmdlID0g
W3Rva2VuLnJhbmdlWzBdLCB0b2tlbi5yYW5nZVsxXV07CisgICAgICAgICAgICB2YWx1ZSA9IHNv
dXJjZS5zbGljZSh0b2tlbi5yYW5nZVswXSwgdG9rZW4ucmFuZ2VbMV0pOworICAgICAgICAgICAg
ZW50cnkgPSB7CisgICAgICAgICAgICAgICAgdHlwZTogVG9rZW5OYW1lW3Rva2VuLnR5cGVdLAor
ICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgICAgICAgICByYW5nZTogcmFu
Z2UsCisgICAgICAgICAgICAgICAgbG9jOiBsb2MKKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICBpZiAodG9rZW4ucmVnZXgpIHsKKyAgICAgICAgICAgICAgICBlbnRyeS5yZWdleCA9IHsKKyAg
ICAgICAgICAgICAgICAgICAgcGF0dGVybjogdG9rZW4ucmVnZXgucGF0dGVybiwKKyAgICAgICAg
ICAgICAgICAgICAgZmxhZ3M6IHRva2VuLnJlZ2V4LmZsYWdzCisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4dHJhLnRva2Vucy5wdXNoKGVudHJ5KTsKKyAg
ICAgICAgfQogCi0gICAgICAgIGJvZHkgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKCk7Ci0gICAgICAg
IHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb2dyYW0oYm9keSksIHN0
YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gdG9rZW47CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y29sbGVjdFJlZ2V4KCkgeworICAgICAgICB2YXIgcG9zLCBsb2MsIHJlZ2V4LCB0b2tlbjsKKwor
ICAgICAgICBza2lwQ29tbWVudCgpOworCisgICAgICAgIHBvcyA9IGluZGV4OworICAgICAgICBs
b2MgPSB7CisgICAgICAgICAgICBzdGFydDogeworICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVO
dW1iZXIsCisgICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydAorICAgICAg
ICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJlZ2V4ID0gZXh0cmEuc2NhblJlZ0V4cCgp
OworICAgICAgICBsb2MuZW5kID0geworICAgICAgICAgICAgbGluZTogbGluZU51bWJlciwKKyAg
ICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQKKyAgICAgICAgfTsKKworICAgICAg
ICBpZiAoIWV4dHJhLnRva2VuaXplKSB7CisgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUg
bmV4dCAqLworICAgICAgICAgICAgLy8gUG9wIHRoZSBwcmV2aW91cyB0b2tlbiwgd2hpY2ggaXMg
bGlrZWx5ICcvJyBvciAnLz0nCisgICAgICAgICAgICBpZiAoZXh0cmEudG9rZW5zLmxlbmd0aCA+
IDApIHsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS50b2tlbnMu
bGVuZ3RoIC0gMV07CisgICAgICAgICAgICAgICAgaWYgKHRva2VuLnJhbmdlWzBdID09PSBwb3Mg
JiYgdG9rZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0b2tlbi52YWx1ZSA9PT0gJy8nIHx8IHRva2VuLnZhbHVlID09PSAnLz0nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBleHRyYS50b2tlbnMucG9wKCk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV4dHJh
LnRva2Vucy5wdXNoKHsKKyAgICAgICAgICAgICAgICB0eXBlOiAnUmVndWxhckV4cHJlc3Npb24n
LAorICAgICAgICAgICAgICAgIHZhbHVlOiByZWdleC5saXRlcmFsLAorICAgICAgICAgICAgICAg
IHJlZ2V4OiByZWdleC5yZWdleCwKKyAgICAgICAgICAgICAgICByYW5nZTogW3BvcywgaW5kZXhd
LAorICAgICAgICAgICAgICAgIGxvYzogbG9jCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiByZWdleDsKICAgICB9CiAKICAgICBmdW5jdGlvbiBmaWx0ZXJUb2tl
bkxvY2F0aW9uKCkgewpAQCAtMzU1MCw2ICs1MTA0LDEyIEBAIHBhcnNlU3RhdGVtZW50OiB0cnVl
LCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgICAgICB0eXBlOiBlbnRyeS50eXBlLAog
ICAgICAgICAgICAgICAgIHZhbHVlOiBlbnRyeS52YWx1ZQogICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIGlmIChlbnRyeS5yZWdleCkgeworICAgICAgICAgICAgICAgIHRva2VuLnJlZ2V4ID0g
eworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBlbnRyeS5yZWdleC5wYXR0ZXJuLAorICAg
ICAgICAgICAgICAgICAgICBmbGFnczogZW50cnkucmVnZXguZmxhZ3MKKyAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7CiAgICAg
ICAgICAgICAgICAgdG9rZW4ucmFuZ2UgPSBlbnRyeS5yYW5nZTsKICAgICAgICAgICAgIH0KQEAg
LTM1NjIsNiArNTEyMiw0NSBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVt
ZW50CiAgICAgICAgIGV4dHJhLnRva2VucyA9IHRva2VuczsKICAgICB9CiAKKyAgICBmdW5jdGlv
biBwYXRjaCgpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmlu
ZWQnKSB7CisgICAgICAgICAgICBleHRyYS5hZHZhbmNlID0gYWR2YW5jZTsKKyAgICAgICAgICAg
IGV4dHJhLnNjYW5SZWdFeHAgPSBzY2FuUmVnRXhwOworCisgICAgICAgICAgICBhZHZhbmNlID0g
Y29sbGVjdFRva2VuOworICAgICAgICAgICAgc2NhblJlZ0V4cCA9IGNvbGxlY3RSZWdleDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHVucGF0Y2goKSB7CisgICAgICAgIGlmICh0
eXBlb2YgZXh0cmEuc2NhblJlZ0V4cCA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgYWR2
YW5jZSA9IGV4dHJhLmFkdmFuY2U7CisgICAgICAgICAgICBzY2FuUmVnRXhwID0gZXh0cmEuc2Nh
blJlZ0V4cDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgaXMgdXNlZCB0byBtb2Rp
ZnkgdGhlIGRlbGVnYXRlLgorCisgICAgZnVuY3Rpb24gZXh0ZW5kKG9iamVjdCwgcHJvcGVydGll
cykgeworICAgICAgICB2YXIgZW50cnksIHJlc3VsdCA9IHt9OworCisgICAgICAgIGZvciAoZW50
cnkgaW4gb2JqZWN0KSB7CisgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLwor
ICAgICAgICAgICAgaWYgKG9iamVjdC5oYXNPd25Qcm9wZXJ0eShlbnRyeSkpIHsKKyAgICAgICAg
ICAgICAgICByZXN1bHRbZW50cnldID0gb2JqZWN0W2VudHJ5XTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoZW50cnkgaW4gcHJvcGVydGllcykgeworICAgICAgICAg
ICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi8KKyAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVz
Lmhhc093blByb3BlcnR5KGVudHJ5KSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFtlbnRyeV0g
PSBwcm9wZXJ0aWVzW2VudHJ5XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgZnVuY3Rpb24gdG9rZW5pemUoY29kZSwgb3B0
aW9ucykgewogICAgICAgICB2YXIgdG9TdHJpbmcsCiAgICAgICAgICAgICB0b2tlbiwKQEAgLTM1
ODAsOCArNTE3OSw5IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQK
ICAgICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDsKICAgICAgICAgbG9va2FoZWFkID0gbnVs
bDsKICAgICAgICAgc3RhdGUgPSB7CisgICAgICAgICAgICBhbGxvd0tleXdvcmQ6IHRydWUsCiAg
ICAgICAgICAgICBhbGxvd0luOiB0cnVlLAotICAgICAgICAgICAgbGFiZWxTZXQ6IHt9LAorICAg
ICAgICAgICAgbGFiZWxTZXQ6IG5ldyBTdHJpbmdNYXAoKSwKICAgICAgICAgICAgIGluRnVuY3Rp
b25Cb2R5OiBmYWxzZSwKICAgICAgICAgICAgIGluSXRlcmF0aW9uOiBmYWxzZSwKICAgICAgICAg
ICAgIGluU3dpdGNoOiBmYWxzZSwKQEAgLTM2MTEsNiArNTIxMSw4IEBAIHBhcnNlU3RhdGVtZW50
OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIGV4dHJhLmVycm9ycyA9IFtd
OwogICAgICAgICB9CiAKKyAgICAgICAgcGF0Y2goKTsKKwogICAgICAgICB0cnkgewogICAgICAg
ICAgICAgcGVlaygpOwogICAgICAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5F
T0YpIHsKQEAgLTM2NDUsNiArNTI0Nyw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNv
dXJjZUVsZW1lbnQKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgdGhyb3cgZTsK
ICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHVucGF0Y2goKTsKICAgICAgICAgICAg
IGV4dHJhID0ge307CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRva2VuczsKQEAgLTM2NjYs
MTIgKzUyNjksMTUgQEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAog
ICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoOwogICAgICAgICBsb29rYWhlYWQgPSBudWxs
OwogICAgICAgICBzdGF0ZSA9IHsKKyAgICAgICAgICAgIGFsbG93S2V5d29yZDogZmFsc2UsCiAg
ICAgICAgICAgICBhbGxvd0luOiB0cnVlLAotICAgICAgICAgICAgbGFiZWxTZXQ6IHt9LAorICAg
ICAgICAgICAgbGFiZWxTZXQ6IG5ldyBTdHJpbmdNYXAoKSwKKyAgICAgICAgICAgIHBhcmVudGhl
c2l6ZWRDb3VudDogMCwKICAgICAgICAgICAgIGluRnVuY3Rpb25Cb2R5OiBmYWxzZSwKICAgICAg
ICAgICAgIGluSXRlcmF0aW9uOiBmYWxzZSwKICAgICAgICAgICAgIGluU3dpdGNoOiBmYWxzZSwK
LSAgICAgICAgICAgIGxhc3RDb21tZW50U3RhcnQ6IC0xCisgICAgICAgICAgICBsYXN0Q29tbWVu
dFN0YXJ0OiAtMSwKKyAgICAgICAgICAgIHlpZWxkQWxsb3dlZDogZmFsc2UKICAgICAgICAgfTsK
IAogICAgICAgICBleHRyYSA9IHt9OwpAQCAtMzY4MSw5ICs1Mjg3LDE3IEBAIHBhcnNlU3RhdGVt
ZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAgICAgICAgIGV4dHJhLmF0dGFjaENv
bW1lbnQgPSAodHlwZW9mIG9wdGlvbnMuYXR0YWNoQ29tbWVudCA9PT0gJ2Jvb2xlYW4nKSAmJiBv
cHRpb25zLmF0dGFjaENvbW1lbnQ7CiAKICAgICAgICAgICAgIGlmIChleHRyYS5sb2MgJiYgb3B0
aW9ucy5zb3VyY2UgIT09IG51bGwgJiYgb3B0aW9ucy5zb3VyY2UgIT09IHVuZGVmaW5lZCkgewot
ICAgICAgICAgICAgICAgIGV4dHJhLnNvdXJjZSA9IHRvU3RyaW5nKG9wdGlvbnMuc291cmNlKTsK
KyAgICAgICAgICAgICAgICBkZWxlZ2F0ZSA9IGV4dGVuZChkZWxlZ2F0ZSwgeworICAgICAgICAg
ICAgICAgICAgICAncG9zdFByb2Nlc3MnOiBmdW5jdGlvbiAobm9kZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS5sb2Muc291cmNlID0gdG9TdHJpbmcob3B0aW9ucy5zb3VyY2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYg
KG9wdGlvbnMuc291cmNlVHlwZSA9PT0gJ21vZHVsZScpIHsKKyAgICAgICAgICAgICAgICBleHRy
YS5pc01vZHVsZSA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodHlwZW9m
IG9wdGlvbnMudG9rZW5zID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2tlbnMpIHsKICAgICAg
ICAgICAgICAgICBleHRyYS50b2tlbnMgPSBbXTsKICAgICAgICAgICAgIH0KQEAgLTM3MDIsNiAr
NTMxNiw3IEBAIHBhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIHBhdGNoKCk7CiAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICBwcm9ncmFtID0gcGFyc2VQcm9ncmFtKCk7CiAgICAgICAgICAgICBpZiAodHlw
ZW9mIGV4dHJhLmNvbW1lbnRzICE9PSAndW5kZWZpbmVkJykgewpAQCAtMzcxNyw2ICs1MzMyLDcg
QEAgcGFyc2VTdGF0ZW1lbnQ6IHRydWUsIHBhcnNlU291cmNlRWxlbWVudAogICAgICAgICB9IGNh
dGNoIChlKSB7CiAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICB9IGZpbmFsbHkgeworICAg
ICAgICAgICAgdW5wYXRjaCgpOwogICAgICAgICAgICAgZXh0cmEgPSB7fTsKICAgICAgICAgfQog
CkBAIC0zNzI0LDcgKzUzNDAsNyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VF
bGVtZW50CiAgICAgfQogCiAgICAgLy8gU3luYyB3aXRoICouanNvbiBtYW5pZmVzdHMuCi0gICAg
ZXhwb3J0cy52ZXJzaW9uID0gJzEuMi4yJzsKKyAgICBleHBvcnRzLnZlcnNpb24gPSAnMS4xLjAt
ZGV2LWhhcm1vbnknOwogCiAgICAgZXhwb3J0cy50b2tlbml6ZSA9IHRva2VuaXplOwogCkBAIC0z
NzUzLDQgKzUzNjksMyBAQCBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50
CiAgICAgfSgpKTsKIAogfSkpOwotLyogdmltOiBzZXQgc3c9NCB0cz00IGV0IHR3PTgwIDogKi8K
SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRT
eW50YXhUcmVlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCShyZXZpc2lvbiAxNzk4NzMpCisrKyBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJl
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNDYgKzQ4LDQ5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLlR5cGVQcm9maWwKIH07CiAKIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVl
Lk5vZGVUeXBlID0gewotICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiAiYXNzaWdubWVudC1leHBy
ZXNzaW9uIiwKLSAgICBBcnJheUV4cHJlc3Npb246ICJleHByZXNzaW9uIiwKLSAgICBCbG9ja1N0
YXRlbWVudDogImJsb2NrLXN0YXRlbWVudCIsCi0gICAgQmluYXJ5RXhwcmVzc2lvbjogImJpbmFy
eS1leHByZXNzaW9uIiwKLSAgICBCcmVha1N0YXRlbWVudDogImJyZWFrLXN0YXRlbWVudCIsCi0g
ICAgQ2FsbEV4cHJlc3Npb246ICJjYWxsLWV4cHJlc3Npb24iLAotICAgIENhdGNoQ2xhdXNlOiAi
Y2F0Y2gtY2xhdXNlIiwKLSAgICBDb25kaXRpb25hbEV4cHJlc3Npb246ICJjb25kaXRpb25hbC1l
eHByZXNzaW9uIiwKLSAgICBDb250aW51ZVN0YXRlbWVudDogImNvbnRpbnVlLXN0YXRlbWVudCIs
Ci0gICAgRG9XaGlsZVN0YXRlbWVudDogImRvLXdoaWxlLXN0YXRlbWVudCIsCi0gICAgRGVidWdn
ZXJTdGF0ZW1lbnQ6ICJkZWJ1Z2dlci1zdGF0ZW1lbnQiLAotICAgIEVtcHR5U3RhdGVtZW50OiAi
ZW1wdHktc3RhdGVtZW50IiwKLSAgICBFeHByZXNzaW9uU3RhdGVtZW50OiAiZXhwcmVzc2lvbi1z
dGF0ZW1lbnQiLAotICAgIEZvclN0YXRlbWVudDogImZvci1zdGF0ZW1lbnQiLAotICAgIEZvcklu
U3RhdGVtZW50OiAiZm9yLWluLXN0YXRlbWVudCIsCi0gICAgRnVuY3Rpb25EZWNsYXJhdGlvbjog
ImZ1bmN0aW9uLWRlY2xhcmF0aW9uIiwKLSAgICBGdW5jdGlvbkV4cHJlc3Npb246ICJmdW5jdGlv
bi1leHByZXNzaW9uIiwKLSAgICBJZGVudGlmaWVyOiAiaWRlbnRpZmllciIsCi0gICAgSWZTdGF0
ZW1lbnQ6ICJpZi1zdGF0ZW1lbnQiLAotICAgIExpdGVyYWw6ICJsaXRlcmFsIiwKLSAgICBMYWJl
bGVkU3RhdGVtZW50OiAibGFiZWxlZC1zdGF0ZW1lbnQiLAotICAgIExvZ2ljYWxFeHByZXNzaW9u
OiAibG9naWNhbC1leHByZXNzaW9uIiwKLSAgICBNZW1iZXJFeHByZXNzaW9uOiAibWVtYmVyLWV4
cHJlc3Npb24iLAotICAgIE5ld0V4cHJlc3Npb246ICJuZXctZXhwcmVzc2lvbiIsCi0gICAgT2Jq
ZWN0RXhwcmVzc2lvbjogIm9iamVjdEV4cHJlc3Npb24iLAotICAgIFByb2dyYW06ICJwcm9ncmFt
IiwKLSAgICBQcm9wZXJ0eTogInByb3BlcnR5IiwKLSAgICBSZXR1cm5TdGF0ZW1lbnQ6ICJyZXR1
cm4tc3RhdGVtZW50IiwKLSAgICBTZXF1ZW5jZUV4cHJlc3Npb246ICJzZXF1ZW5jZS1leHByZXNz
aW9uIiwKLSAgICBTd2l0Y2hTdGF0ZW1lbnQ6ICJzd2l0Y2gtc3RhdGVtZW50IiwKLSAgICBTd2l0
Y2hDYXNlOiAic3dpdGNoLWNhc2UiLAotICAgIFRoaXNFeHByZXNzaW9uOiAidGhpcy1leHByZXNz
aW9uIiwKLSAgICBUaHJvd1N0YXRlbWVudDogInRocm93LXN0YXRlbWVudCIsCi0gICAgVHJ5U3Rh
dGVtZW50OiAidHJ5LXN0YXRlbWVudCIsCi0gICAgVW5hcnlFeHByZXNzaW9uOiAidW5hcnktZXhw
cmVzc2lvbiIsCi0gICAgVXBkYXRlRXhwcmVzc2lvbjogInVwZGF0ZS1leHByZXNzaW9uIiwKLSAg
ICBWYXJpYWJsZURlY2xhcmF0aW9uOiAidmFyaWFibGUtZGVjbGFyYXRpb24iLAotICAgIFZhcmlh
YmxlRGVjbGFyYXRvcjogInZhcmlhYmxlLWRlY2xhcmF0b3IiLAotICAgIFdoaWxlU3RhdGVtZW50
OiAid2hpbGUtc3RhdGVtZW50IiwKLSAgICBXaXRoU3RhdGVtZW50OiAid2l0aC1zdGF0ZW1lbnQi
CisgICAgQXNzaWdubWVudEV4cHJlc3Npb246IFN5bWJvbCgiYXNzaWdubWVudC1leHByZXNzaW9u
IiksCisgICAgQXJyYXlFeHByZXNzaW9uOiBTeW1ib2woImFycmF5LWV4cHJlc3Npb24iKSwKKyAg
ICBBcnJheVBhdHRlcm46IFN5bWJvbCgiYXJyYXktcGF0dGVybiIpLAorICAgIEJsb2NrU3RhdGVt
ZW50OiBTeW1ib2woImJsb2NrLXN0YXRlbWVudCIpLAorICAgIEJpbmFyeUV4cHJlc3Npb246IFN5
bWJvbCgiYmluYXJ5LWV4cHJlc3Npb24iKSwKKyAgICBCcmVha1N0YXRlbWVudDogU3ltYm9sKCJi
cmVhay1zdGF0ZW1lbnQiKSwKKyAgICBDYWxsRXhwcmVzc2lvbjogU3ltYm9sKCJjYWxsLWV4cHJl
c3Npb24iKSwKKyAgICBDYXRjaENsYXVzZTogU3ltYm9sKCJjYXRjaC1jbGF1c2UiKSwKKyAgICBD
b25kaXRpb25hbEV4cHJlc3Npb246IFN5bWJvbCgiY29uZGl0aW9uYWwtZXhwcmVzc2lvbiIpLAor
ICAgIENvbnRpbnVlU3RhdGVtZW50OiBTeW1ib2woImNvbnRpbnVlLXN0YXRlbWVudCIpLAorICAg
IERvV2hpbGVTdGF0ZW1lbnQ6IFN5bWJvbCgiZG8td2hpbGUtc3RhdGVtZW50IiksCisgICAgRGVi
dWdnZXJTdGF0ZW1lbnQ6IFN5bWJvbCgiZGVidWdnZXItc3RhdGVtZW50IiksCisgICAgRW1wdHlT
dGF0ZW1lbnQ6IFN5bWJvbCgiZW1wdHktc3RhdGVtZW50IiksCisgICAgRXhwcmVzc2lvblN0YXRl
bWVudDogU3ltYm9sKCJleHByZXNzaW9uLXN0YXRlbWVudCIpLAorICAgIEZvclN0YXRlbWVudDog
U3ltYm9sKCJmb3Itc3RhdGVtZW50IiksCisgICAgRm9ySW5TdGF0ZW1lbnQ6IFN5bWJvbCgiZm9y
LWluLXN0YXRlbWVudCIpLAorICAgIEZvck9mU3RhdGVtZW50OiBTeW1ib2woImZvci1vZi1zdGF0
ZW1lbnQiKSwKKyAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBTeW1ib2woImZ1bmN0aW9uLWRlY2xh
cmF0aW9uIiksCisgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBTeW1ib2woImZ1bmN0aW9uLWV4cHJl
c3Npb24iKSwKKyAgICBJZGVudGlmaWVyOiBTeW1ib2woImlkZW50aWZpZXIiKSwKKyAgICBJZlN0
YXRlbWVudDogU3ltYm9sKCJpZi1zdGF0ZW1lbnQiKSwKKyAgICBMaXRlcmFsOiBTeW1ib2woImxp
dGVyYWwiKSwKKyAgICBMYWJlbGVkU3RhdGVtZW50OiBTeW1ib2woImxhYmVsZWQtc3RhdGVtZW50
IiksCisgICAgTG9naWNhbEV4cHJlc3Npb246IFN5bWJvbCgibG9naWNhbC1leHByZXNzaW9uIiks
CisgICAgTWVtYmVyRXhwcmVzc2lvbjogU3ltYm9sKCJtZW1iZXItZXhwcmVzc2lvbiIpLAorICAg
IE5ld0V4cHJlc3Npb246IFN5bWJvbCgibmV3LWV4cHJlc3Npb24iKSwKKyAgICBPYmplY3RFeHBy
ZXNzaW9uOiBTeW1ib2woIm9iamVjdC1leHByZXNzaW9uIiksCisgICAgT2JqZWN0UGF0dGVybjog
U3ltYm9sKCJvYmplY3QtcGF0dGVybiIpLAorICAgIFByb2dyYW06IFN5bWJvbCgicHJvZ3JhbSIp
LAorICAgIFByb3BlcnR5OiBTeW1ib2woInByb3BlcnR5IiksCisgICAgUmV0dXJuU3RhdGVtZW50
OiBTeW1ib2woInJldHVybi1zdGF0ZW1lbnQiKSwKKyAgICBTZXF1ZW5jZUV4cHJlc3Npb246IFN5
bWJvbCgic2VxdWVuY2UtZXhwcmVzc2lvbiIpLAorICAgIFN3aXRjaFN0YXRlbWVudDogU3ltYm9s
KCJzd2l0Y2gtc3RhdGVtZW50IiksCisgICAgU3dpdGNoQ2FzZTogU3ltYm9sKCJzd2l0Y2gtY2Fz
ZSIpLAorICAgIFRoaXNFeHByZXNzaW9uOiBTeW1ib2woInRoaXMtZXhwcmVzc2lvbiIpLAorICAg
IFRocm93U3RhdGVtZW50OiBTeW1ib2woInRocm93LXN0YXRlbWVudCIpLAorICAgIFRyeVN0YXRl
bWVudDogU3ltYm9sKCJ0cnktc3RhdGVtZW50IiksCisgICAgVW5hcnlFeHByZXNzaW9uOiBTeW1i
b2woInVuYXJ5LWV4cHJlc3Npb24iKSwKKyAgICBVcGRhdGVFeHByZXNzaW9uOiBTeW1ib2woInVw
ZGF0ZS1leHByZXNzaW9uIiksCisgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogU3ltYm9sKCJ2YXJp
YWJsZS1kZWNsYXJhdGlvbiIpLAorICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogU3ltYm9sKCJ2YXJp
YWJsZS1kZWNsYXJhdG9yIiksCisgICAgV2hpbGVTdGF0ZW1lbnQ6IFN5bWJvbCgid2hpbGUtc3Rh
dGVtZW50IiksCisgICAgV2l0aFN0YXRlbWVudDogU3ltYm9sKCJ3aXRoLXN0YXRlbWVudCIpCiB9
OwogCiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgPSB7CkBAIC0yMjks
MTIgKzIzMiwxNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAg
ICAgICAgICAgICAgICAgYWxsUmVxdWVzdE5vZGVzLnB1c2gobm9kZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVl
Lk5vZGVUeXBlLlZhcmlhYmxlRGVjbGFyYXRvcjoKLSAgICAgICAgICAgICAgICBhbGxSZXF1ZXN0
cy5wdXNoKHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZUluZm9ybWF0aW9uRGVzY3JpcHRvcjog
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRv
ci5Ob3JtYWxFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICBzb3VyY2VJRDogc291cmNl
SUQsCi0gICAgICAgICAgICAgICAgICAgIGRpdm90OiBub2RlLmlkLnJhbmdlWzBdCi0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgYWxsUmVxdWVzdE5vZGVzLnB1c2gobm9kZSk7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaWRlbnRpZmllciBvZiB0aGlzLmdhdGhlcklkZW50
aWZpZXJzSW5WYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAg
IGFsbFJlcXVlc3RzLnB1c2goeworICAgICAgICAgICAgICAgICAgICAgICAgdHlwZUluZm9ybWF0
aW9uRGVzY3JpcHRvcjogV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuVHlwZVByb2ZpbGVy
U2VhcmNoRGVzY3JpcHRvci5Ob3JtYWxFeHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgc291cmNlSUQ6IHNvdXJjZUlELAorICAgICAgICAgICAgICAgICAgICAgICAgZGl2b3Q6IGlk
ZW50aWZpZXIucmFuZ2VbMF0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgIGFsbFJlcXVlc3ROb2Rlcy5wdXNoKGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MjYzLDYgKzI2OCwzOCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUg
CiAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNl
dHMoYWxsUmVxdWVzdHMsIGhhbmRsZVR5cGVzKTsKICAgICB9LAogCisgICAgZ2F0aGVySWRlbnRp
ZmllcnNJblZhcmlhYmxlRGVjbGFyYXRpb246IGZ1bmN0aW9uIChub2RlKSB7CisgICAgICAgIGZ1
bmN0aW9uIGdhdGhlcklkZW50aWZpZXJzKG5vZGUpIAorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUudHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNj
cmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFtub2RlXTsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLlByb3BlcnR5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Z2F0aGVySWRlbnRpZmllcnMobm9kZS52YWx1ZSk7CisgICAgICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RQYXR0ZXJuOgorICAgICAg
ICAgICAgICAgICAgICB2YXIgaWRlbnRpZmllcnMgPSBbXTsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgcHJvcGVydHkgb2Ygbm9kZS5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpZGVudGlmaWVyIG9mIGdhdGhlcklkZW50aWZpZXJzKHByb3BlcnR5
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZp
ZXIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp
ZGVudGlmaWVyczsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLkFycmF5UGF0dGVybjoKKyAgICAgICAgICAgICAgICAgICAgdmFyIGlk
ZW50aWZpZXJzID0gW107CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVsZW1lbnQgb2Yg
bm9kZS5lbGVtZW50cykgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaWRlbnRp
ZmllciBvZiBnYXRoZXJJZGVudGlmaWVycyhlbGVtZW50KSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyczsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwg
IlVuZXhlY3B0ZWQgbm9kZSB0eXBlIGluIHZhcmlhYmxlIGRlY2xhcmF0b3I6ICIgKyBub2RlLnR5
cGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBjb25zb2xlLmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlZhcmlhYmxlRGVjbGFyYXRvcik7CisgICAgICAg
IHJldHVybiBnYXRoZXJJZGVudGlmaWVycyhub2RlLmlkKTsKKyAgICB9LAorCiAgICAgLy8gUHJp
dmF0ZQogCiAgICAgX2RlZmF1bHRQYXJzZXJTdGF0ZTogZnVuY3Rpb24oKSAKQEAgLTI4OCw2ICsz
MjUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAgICAgICAg
ICAgICB0aGlzLl9yZWN1cnNlKG5vZGUucmlnaHQsIGNhbGxiYWNrLCBzdGF0ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5BcnJheUV4cHJlc3Npb246CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyYXlQYXR0ZXJuOgogICAgICAgICAgICAgY2FsbGJhY2so
bm9kZSwgc3RhdGUpOwogICAgICAgICAgICAgdGhpcy5fcmVjdXJzZUFycmF5KG5vZGUuZWxlbWVu
dHMsIGNhbGxiYWNrLCBzdGF0ZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM0MSw2ICszNzks
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAgICAgICAgICAg
ICB0aGlzLl9yZWN1cnNlKG5vZGUuYm9keSwgY2FsbGJhY2ssIHN0YXRlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVU
eXBlLkZvckluU3RhdGVtZW50OgorICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLkZvck9mU3RhdGVtZW50OgogICAgICAgICAgICAgY2FsbGJhY2sobm9k
ZSwgc3RhdGUpOwogICAgICAgICAgICAgdGhpcy5fcmVjdXJzZShub2RlLmxlZnQsIGNhbGxiYWNr
LCBzdGF0ZSk7CiAgICAgICAgICAgICB0aGlzLl9yZWN1cnNlKG5vZGUucmlnaHQsIGNhbGxiYWNr
LCBzdGF0ZSk7CkBAIC0zOTEsNiArNDMwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRy
ZWUucHJvdG90eXBlIAogICAgICAgICAgICAgdGhpcy5fcmVjdXJzZUFycmF5KG5vZGUuYXJndW1l
bnRzLCBjYWxsYmFjaywgc3RhdGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuT2JqZWN0RXhwcmVzc2lvbjoK
KyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmpl
Y3RQYXR0ZXJuOgogICAgICAgICAgICAgY2FsbGJhY2sobm9kZSwgc3RhdGUpOwogICAgICAgICAg
ICAgdGhpcy5fcmVjdXJzZUFycmF5KG5vZGUucHJvcGVydGllcywgY2FsbGJhY2ssIHN0YXRlKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA0LDYgKzU0NCwxMiBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAgICAgICAgICAgICAgICAgZWxlbWVudHM6IG5vZGUu
ZWxlbWVudHMubWFwKHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZS5iaW5kKHRoaXMpKQog
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJBcnJheVBh
dHRlcm4iOgorICAgICAgICAgICAgcmVzdWx0ID0geworICAgICAgICAgICAgICAgIHR5cGU6IFdl
Ykluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFycmF5UGF0dGVybiwKKyAgICAg
ICAgICAgICAgICBlbGVtZW50czogbm9kZS5lbGVtZW50cy5tYXAodGhpcy5fY3JlYXRlSW50ZXJu
YWxTeW50YXhUcmVlLmJpbmQodGhpcykpCisgICAgICAgICAgICB9OworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgIkJsb2NrU3RhdGVtZW50IjoKICAgICAgICAgICAgIHJlc3VsdCA9
IHsKICAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5CbG9ja1N0YXRlbWVudCwKQEAgLTU5Miw2ICs2MzgsMTQgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlIAogICAgICAgICAgICAgICAgIGJvZHk6IHRoaXMu
X2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShub2RlLmJvZHkpCiAgICAgICAgICAgICB9OwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIkZvck9mU3RhdGVtZW50IjoKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5Gb3JPZlN0YXRlbWVudCwKKyAgICAgICAgICAgICAgICBsZWZ0
OiB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUobm9kZS5sZWZ0KSwKKyAgICAgICAgICAg
ICAgICByaWdodDogdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKG5vZGUucmlnaHQpLAor
ICAgICAgICAgICAgICAgIGJvZHk6IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShub2Rl
LmJvZHkpCisgICAgICAgICAgICB9OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
IkZ1bmN0aW9uRGVjbGFyYXRpb24iOgogICAgICAgICAgICAgcmVzdWx0ID0gewogICAgICAgICAg
ICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0
aW9uRGVjbGFyYXRpb24sCkBAIC02NjcsNiArNzIxLDEyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLnByb3RvdHlwZSAKICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBub2RlLnBy
b3BlcnRpZXMubWFwKHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZS5iaW5kKHRoaXMpKQog
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJPYmplY3RQ
YXR0ZXJuIjoKKyAgICAgICAgICAgIHJlc3VsdCA9IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RQYXR0ZXJuLAorICAg
ICAgICAgICAgICAgIHByb3BlcnRpZXM6IG5vZGUucHJvcGVydGllcy5tYXAodGhpcy5fY3JlYXRl
SW50ZXJuYWxTeW50YXhUcmVlLmJpbmQodGhpcykpCisgICAgICAgICAgICB9OworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgIlByb2dyYW0iOgogICAgICAgICAgICAgcmVzdWx0ID0g
ewogICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5v
ZGVUeXBlLlByb2dyYW0sCkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UeXBlVG9rZW5WaWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5cGVUb2tlblZpZXcuanMJKHJldmlzaW9uIDE3OTg3
MykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5cGVUb2tl
blZpZXcuanMJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDkgQEAgV2ViSW5zcGVjdG9yLlR5
cGVUb2tlblZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90eXBlU2V0ID0gV2ViSW5z
cGVjdG9yLlR5cGVTZXQuZnJvbVBheWxvYWQodGhpcy5fdHlwZXMpOwogCiAgICAgICAgIHZhciB0
aXRsZSA9IHRoaXMuX2Rpc3BsYXlUeXBlTmFtZSgpOworICAgICAgICBpZiAodGl0bGUgPT09IHRo
aXMuZWxlbWVudC50ZXh0Q29udGVudCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICB0
aGlzLmVsZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZTsKICAgICAgICAgdmFyIGhhc2hTdHJpbmcg
PSB0aXRsZVt0aXRsZS5sZW5ndGggLSAxXSA9PT0gIj8iID8gdGl0bGUuc2xpY2UoMCwgdGl0bGUu
bGVuZ3RoIC0gMSkgOiB0aXRsZTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5OTEwKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUt
MDItMTAgIFNhYW0gQmFyYXRpICA8c2FhbWJhcmF0aTFAZ21haWwuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IG1lcmdlIGluIHVwc3RyZWFtIEVzcHJpbWEgdG8gc3VwcG9ydCBwYXJzaW5n
IG1vcmUgb2YgRVM2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDEyMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGluc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUu
aHRtbDoKKwogMjAxNS0wMi0xMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OKD8pOiBpbnNwZWN0b3IvY3NzL3NlbGVjdG9yLWR5bmFtaWMt
c3BlY2lmaWNpdHkuaHRtbCBzb21ldGltZXMgY3Jhc2hlcwpJbmRleDogTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgt
dHJlZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE3OTg3MikKKysrIExheW91dFRlc3RzL2luc3Bl
Y3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNCw2ICsxNCw3IEBAIHBhc3NlZCBFbXB0eVN0YXRlbWVudAogcGFzc2VkIEV4
cHJlc3Npb25TdGF0ZW1lbnQKIHBhc3NlZCBGb3JTdGF0ZW1lbnQKIHBhc3NlZCBGb3JJblN0YXRl
bWVudAorcGFzc2VkIEZvck9mU3RhdGVtZW50CiBwYXNzZWQgRnVuY3Rpb25EZWNsYXJhdGlvbgog
cGFzc2VkIEZ1bmN0aW9uRXhwcmVzc2lvbgogcGFzc2VkIElkZW50aWZpZXIKSW5kZXg6IExheW91
dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRh
eC10cmVlLmh0bWwJKHJldmlzaW9uIDE3OTg3MikKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9t
b2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsMTUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5yaWdodCk7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLm9wZXJhdG9yID09PSAiPSIpOworICAgIG5vZGUgPSBtYWtl
Tm9kZSgiW3gsIHldID0gZm9vOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXNzaWdu
bWVudEV4cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUubGVmdCk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5sZWZ0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFycmF5UGF0dGVybik7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5sZWZ0LmVsZW1lbnRzLmxlbmd0aCA9PT0gMik7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS5sZWZ0LmVsZW1lbnRzWzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUubGVmdC5lbGVtZW50c1swXS5uYW1lID09PSAieCIpOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUubGVmdC5lbGVtZW50c1sxXS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChub2RlLmxlZnQuZWxlbWVudHNbMV0ubmFtZSA9PT0gInkiKTsKICAgICBub2RlID0g
bWFrZU5vZGUoInggKz0gMjA7IiwgdHJ1ZSk7CiAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5vcGVyYXRvciA9PT0gIis9Iik7CiAgICAgbm9kZSA9IG1ha2VOb2RlKCJ4IC09IDIwOyIsIHRy
dWUpOwpAQCAtMTYxLDYgKzE3MCwyMiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLmJvZHkudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRy
ZWUuTm9kZVR5cGUuRW1wdHlTdGF0ZW1lbnQpOwogICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNz
ZWQgRm9ySW5TdGF0ZW1lbnQiKTsKIAorICAgIG5vZGUgPSBtYWtlTm9kZSgiZm9yKHZhciB4IG9m
IHt9KTsiLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Gb3JPZlN0YXRlbWVudCk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5sZWZ0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmxlZnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9k
ZVR5cGUuVmFyaWFibGVEZWNsYXJhdGlvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5yaWdodCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RFeHByZXNzaW9uKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUuYm9keS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5FbXB0eVN0YXRlbWVudCk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJmb3IodmFyIHt4
fSBvZiB7fSk7IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRm9yT2ZTdGF0ZW1lbnQp
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUubGVmdCk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5sZWZ0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVl
Lk5vZGVUeXBlLlZhcmlhYmxlRGVjbGFyYXRpb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUubGVmdC5kZWNsYXJhdGlvbnNbMF0uaWQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUuT2JqZWN0UGF0dGVybik7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5sZWZ0LmRlY2xhcmF0aW9uc1swXS5pZC5wcm9wZXJ0aWVzWzBdLnZhbHVlLm5h
bWUgPT09ICJ4Iik7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBGb3JPZlN0YXRlbWVu
dCIpOworCiAgICAgbm9kZSA9IG1ha2VOb2RlKCJmdW5jdGlvbiBmb28oeCx5KXt9IiwgZmFsc2Up
OwogICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNj
cmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5wYXJhbXMpOwpAQCAtMzc2LDYgKzQwMSwzMSBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmRlY2xhcmF0aW9uc1swXS5p
bml0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkxpdGVy
YWwpOwogICAgIG5vZGUgPSBtYWtlTm9kZSgidmFyIGZvbzsiLCBmYWxzZSk7CiAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJhdGlvbnNbMF0uaW5pdCA9PT0gbnVsbCk7CisgICAg
bm9kZSA9IG1ha2VOb2RlKCJ2YXIge3gsIHk6IGZvb30gPSBiYXI7IiwgZmFsc2UpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRh
eFRyZWUuTm9kZVR5cGUuVmFyaWFibGVEZWNsYXJhdGlvbik7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5kZWNsYXJhdGlvbnMubGVuZ3RoID09PSAxKTsKKyAgICBub2RlID0gbm9kZS5k
ZWNsYXJhdGlvbnNbMF0uaWQ7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RQYXR0ZXJuKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnByb3BlcnRpZXMubGVuZ3RoID09PSAyKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnByb3BlcnRpZXNbMF0udHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuUHJvcGVydHkpOworICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KG5vZGUucHJvcGVydGllc1swXS5rZXkudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS5wcm9wZXJ0aWVzWzBdLnZhbHVlLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUucHJvcGVydGllc1swXS5rZXkubmFtZSA9PT0gbm9kZS5wcm9wZXJ0aWVz
WzBdLnZhbHVlLm5hbWUgJiYgbm9kZS5wcm9wZXJ0aWVzWzBdLmtleS5uYW1lID09PSAieCIpOwor
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucHJvcGVydGllc1sxXS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Qcm9wZXJ0eSk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5wcm9wZXJ0aWVzWzFdLmtleS50eXBlID09PSBXZWJJbnNwZWN0
b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLnByb3BlcnRpZXNbMV0udmFsdWUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5wcm9wZXJ0aWVzWzFdLmtleS5uYW1lID09PSAieSIpOworICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KG5vZGUucHJvcGVydGllc1sxXS52YWx1ZS5uYW1lID09PSAiZm9vIik7
CisgICAgbm9kZSA9IG1ha2VOb2RlKCJ2YXIgW3gsIHldID0gZm9vOyIsIGZhbHNlKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLlZhcmlhYmxlRGVjbGFyYXRpb24pOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUuZGVjbGFyYXRpb25zLmxlbmd0aCA9PT0gMSk7CisgICAgbm9kZSA9IG5vZGUu
ZGVjbGFyYXRpb25zWzBdLmlkOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyYXlQYXR0ZXJuKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmVsZW1lbnRzLmxlbmd0aCA9PT0gMik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5lbGVtZW50c1swXS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLmVsZW1lbnRzWzBdLm5hbWUgPT09ICJ4Iik7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5lbGVtZW50c1sxXS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmVsZW1lbnRzWzFdLm5hbWUgPT09ICJ5Iik7CiAgICAgSW5zcGVjdG9yVGVzdC5s
b2coInBhc3NlZCBWYXJpYWJsZURlY2xhcmF0b3IiKTsKIAogICAgIG5vZGUgPSBtYWtlTm9kZSgi
d2hpbGUodHJ1ZSlib287IiwgZmFsc2UpOwo=
</data>
<flag name="review"
          id="271298"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>