<?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>120165</bug_id>
          
          <creation_ts>2013-08-22 11:52:37 -0700</creation_ts>
          <short_desc>Web Inspector: Update CodeMirror to 3.16.1</short_desc>
          <delta_ts>2013-08-22 12:27:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>919923</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-08-22 11:52:37 -0700</bug_when>
    <thetext>Update of CodeMirror to get &quot;gutterContextMenu&quot; event.

Updating the CodeMirror Resources is mostly automated:

  1. Update local CodeMirror checkout ($codemirror)
  shell&gt; cd $codemirror; git pull --rebase

  2. Update WebInspectorUI CodeMirror resources:
  shell&gt;./Source/WebInspectorUI/Scripts/update-codemirror-resources.rb $codemirror

  3. Update WebInspectorUI Tools/PrettyPrintingr CodeMirror resources and run tests:
  shell&gt;./Source/WebInspectorUI/Scripts/update-pretty-printer.rb Tools
  shell&gt; open ./Source/WebInspectorUI/Tools/PrettyPrinting/index.html # run tests in the UI

  4. Do some manual testing of the inspector to make sure things work as expected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919924</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-08-22 11:52:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/14810479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919925</commentid>
    <comment_count>2</comment_count>
      <attachid>209381</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-08-22 11:55:10 -0700</bug_when>
    <thetext>Created attachment 209381
[PATCH] Proposed Fix

• All Tools/PrettyPrinting tests passed.
• General testing looked good (Styles sidebar, Console prompt, CSS Resource editing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919936</commentid>
    <comment_count>3</comment_count>
      <attachid>209381</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-22 12:27:54 -0700</bug_when>
    <thetext>Comment on attachment 209381
[PATCH] Proposed Fix

Clearing flags on attachment: 209381

Committed r154456: &lt;http://trac.webkit.org/changeset/154456&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919937</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-22 12:27:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209381</attachid>
            <date>2013-08-22 11:55:10 -0700</date>
            <delta_ts>2013-08-22 12:27:54 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>update-codemirror.patch</filename>
            <type>text/plain</type>
            <size>79881</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGQyNTEyMDMuLjFmZDFjNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA4LTIyICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEyMDE2NT4gV2ViIEluc3BlY3RvcjogVXBkYXRlIENvZGVNaXJyb3IgdG8gMy4xNi4xCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUb29scy9QcmV0
dHlQcmludGluZy9jb2RlbWlycm9yLmNzczoKKyAgICAgICAgKiBUb29scy9QcmV0dHlQcmludGlu
Zy9jb2RlbWlycm9yLmpzOgorICAgICAgICAqIFRvb2xzL1ByZXR0eVByaW50aW5nL2Nzcy5qczoK
KyAgICAgICAgKiBUb29scy9QcmV0dHlQcmludGluZy9qYXZhc2NyaXB0LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY3NzLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2NyaXB0LmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanM6CisKIDIwMTMt
MDgtMTQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5Nzc0PiBXZWIgSW5zcGVjdG9yOiBEb3dubG9hZCBXZWIg
QXJjaGl2ZSBvZiBJbnNwZWN0b3IgUGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2NvZGVtaXJyb3IuY3NzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2NvZGVtaXJyb3IuY3NzCmluZGV4IDUyODgxZjcu
LmM5NWRiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQ
cmludGluZy9jb2RlbWlycm9yLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMv
UHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5jc3MKQEAgLTk1LDYgKzk1LDcgQEAKIAogZGl2LkNv
ZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW1hdGNoaW5nYnJhY2tldCB7Y29sb3I6ICMwZjA7fQog
ZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNoaW5nYnJhY2tldCB7Y29sb3I6
ICNmMjI7fQorLkNvZGVNaXJyb3ItYWN0aXZlbGluZS1iYWNrZ3JvdW5kIHtiYWNrZ3JvdW5kOiAj
ZThmMmZmO30KIAogLyogU1RPUCAqLwogCkBAIC0xOTIsNiArMTkzLDE2IEBAIGRpdi5Db2RlTWly
cm9yIHNwYW4uQ29kZU1pcnJvci1ub25tYXRjaGluZ2JyYWNrZXQge2NvbG9yOiAjZjIyO30KICAg
d2hpdGUtc3BhY2U6IHByZS13cmFwOwogICB3b3JkLWJyZWFrOiBub3JtYWw7CiB9CisuQ29kZU1p
cnJvci1jb2RlIHByZSB7CisgIGJvcmRlci1yaWdodDogMzBweCBzb2xpZCB0cmFuc3BhcmVudDsK
KyAgd2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQ7CisgIHdpZHRoOiAtbW96LWZpdC1jb250ZW50
OworICB3aWR0aDogZml0LWNvbnRlbnQ7Cit9CisuQ29kZU1pcnJvci13cmFwIC5Db2RlTWlycm9y
LWNvZGUgcHJlIHsKKyAgYm9yZGVyLXJpZ2h0OiBub25lOworICB3aWR0aDogYXV0bzsKK30KIC5D
b2RlTWlycm9yLWxpbmViYWNrZ3JvdW5kIHsKICAgcG9zaXRpb246IGFic29sdXRlOwogICBsZWZ0
OiAwOyByaWdodDogMDsgdG9wOiAwOyBib3R0b206IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmpzCmluZGV4IGFl
ZDdlODMuLmJjMjM4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9Q
cmV0dHlQcmludGluZy9jb2RlbWlycm9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9U
b29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmpzCkBAIC0yNCwxMCArMjQsMTEgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIFRoaXMgaXMgd29lZnVsbHkgaW5j
b21wbGV0ZS4gU3VnZ2VzdGlvbnMgZm9yIGFsdGVybmF0aXZlIG1ldGhvZHMgd2VsY29tZS4KICAg
dmFyIG1vYmlsZSA9IGlvcyB8fCAvQW5kcm9pZHx3ZWJPU3xCbGFja0JlcnJ5fE9wZXJhIE1pbml8
T3BlcmEgTW9iaXxJRU1vYmlsZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciBt
YWMgPSBpb3MgfHwgL01hYy8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOwotICB2YXIgd2luZG93
cyA9IC93aW5kb3dzL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOworICB2YXIgd2luZG93cyA9
IC93aW4vaS50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7CiAKICAgdmFyIG9wZXJhX3ZlcnNpb24g
PSBvcGVyYSAmJiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9WZXJzaW9uXC8oXGQqXC5cZCop
Lyk7CiAgIGlmIChvcGVyYV92ZXJzaW9uKSBvcGVyYV92ZXJzaW9uID0gTnVtYmVyKG9wZXJhX3Zl
cnNpb25bMV0pOworICBpZiAob3BlcmFfdmVyc2lvbiAmJiBvcGVyYV92ZXJzaW9uID49IDE1KSB7
IG9wZXJhID0gZmFsc2U7IHdlYmtpdCA9IHRydWU7IH0KICAgLy8gU29tZSBicm93c2VycyB1c2Ug
dGhlIHdyb25nIGV2ZW50IHByb3BlcnRpZXMgdG8gc2lnbmFsIGNtZC9jdHJsIG9uIE9TIFgKICAg
dmFyIGZsaXBDdHJsQ21kID0gbWFjICYmIChxdHdlYmtpdCB8fCBvcGVyYSAmJiAob3BlcmFfdmVy
c2lvbiA9PSBudWxsIHx8IG9wZXJhX3ZlcnNpb24gPCAxMi4xMSkpOwogICB2YXIgY2FwdHVyZU1p
ZGRsZUNsaWNrID0gZ2Vja28gfHwgKGllICYmICFpZV9sdDkpOwpAQCAtMzMxLDEzICszMzIsMTkg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBkLnNjcm9sbGJhclYu
c3R5bGUuYm90dG9tID0gbmVlZHNIID8gc2Nyb2xsYmFyV2lkdGgoZC5tZWFzdXJlKSArICJweCIg
OiAiMCI7CiAgICAgICBkLnNjcm9sbGJhclYuZmlyc3RDaGlsZC5zdHlsZS5oZWlnaHQgPQogICAg
ICAgICAoc2Nyb2xsSGVpZ2h0IC0gZC5zY3JvbGxlci5jbGllbnRIZWlnaHQgKyBkLnNjcm9sbGJh
clYuY2xpZW50SGVpZ2h0KSArICJweCI7Ci0gICAgfSBlbHNlIGQuc2Nyb2xsYmFyVi5zdHlsZS5k
aXNwbGF5ID0gIiI7CisgICAgfSBlbHNlIHsKKyAgICAgIGQuc2Nyb2xsYmFyVi5zdHlsZS5kaXNw
bGF5ID0gIiI7CisgICAgICBkLnNjcm9sbGJhclYuZmlyc3RDaGlsZC5zdHlsZS5oZWlnaHQgPSAi
MCI7CisgICAgfQogICAgIGlmIChuZWVkc0gpIHsKICAgICAgIGQuc2Nyb2xsYmFySC5zdHlsZS5k
aXNwbGF5ID0gImJsb2NrIjsKICAgICAgIGQuc2Nyb2xsYmFySC5zdHlsZS5yaWdodCA9IG5lZWRz
ViA/IHNjcm9sbGJhcldpZHRoKGQubWVhc3VyZSkgKyAicHgiIDogIjAiOwogICAgICAgZC5zY3Jv
bGxiYXJILmZpcnN0Q2hpbGQuc3R5bGUud2lkdGggPQogICAgICAgICAoZC5zY3JvbGxlci5zY3Jv
bGxXaWR0aCAtIGQuc2Nyb2xsZXIuY2xpZW50V2lkdGggKyBkLnNjcm9sbGJhckguY2xpZW50V2lk
dGgpICsgInB4IjsKLSAgICB9IGVsc2UgZC5zY3JvbGxiYXJILnN0eWxlLmRpc3BsYXkgPSAiIjsK
KyAgICB9IGVsc2UgeworICAgICAgZC5zY3JvbGxiYXJILnN0eWxlLmRpc3BsYXkgPSAiIjsKKyAg
ICAgIGQuc2Nyb2xsYmFySC5maXJzdENoaWxkLnN0eWxlLndpZHRoID0gIjAiOworICAgIH0KICAg
ICBpZiAobmVlZHNIICYmIG5lZWRzVikgewogICAgICAgZC5zY3JvbGxiYXJGaWxsZXIuc3R5bGUu
ZGlzcGxheSA9ICJibG9jayI7CiAgICAgICBkLnNjcm9sbGJhckZpbGxlci5zdHlsZS5oZWlnaHQg
PSBkLnNjcm9sbGJhckZpbGxlci5zdHlsZS53aWR0aCA9IHNjcm9sbGJhcldpZHRoKGQubWVhc3Vy
ZSkgKyAicHgiOwpAQCAtNDAxLDExICs0MDgsMTIgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAKICAgLy8gRElTUExBWSBEUkFXSU5HCiAKLSAgZnVuY3Rpb24gdXBkYXRlRGlz
cGxheShjbSwgY2hhbmdlcywgdmlld1BvcnQpIHsKKyAgZnVuY3Rpb24gdXBkYXRlRGlzcGxheShj
bSwgY2hhbmdlcywgdmlld1BvcnQsIGZvcmNlZCkgewogICAgIHZhciBvbGRGcm9tID0gY20uZGlz
cGxheS5zaG93aW5nRnJvbSwgb2xkVG8gPSBjbS5kaXNwbGF5LnNob3dpbmdUbywgdXBkYXRlZDsK
ICAgICB2YXIgdmlzaWJsZSA9IHZpc2libGVMaW5lcyhjbS5kaXNwbGF5LCBjbS5kb2MsIHZpZXdQ
b3J0KTsKICAgICBmb3IgKDs7KSB7Ci0gICAgICBpZiAoIXVwZGF0ZURpc3BsYXlJbm5lcihjbSwg
Y2hhbmdlcywgdmlzaWJsZSkpIGJyZWFrOworICAgICAgaWYgKCF1cGRhdGVEaXNwbGF5SW5uZXIo
Y20sIGNoYW5nZXMsIHZpc2libGUsIGZvcmNlZCkpIGJyZWFrOworICAgICAgZm9yY2VkID0gZmFs
c2U7CiAgICAgICB1cGRhdGVkID0gdHJ1ZTsKICAgICAgIHVwZGF0ZVNlbGVjdGlvbihjbSk7CiAg
ICAgICB1cGRhdGVTY3JvbGxiYXJzKGNtKTsKQEAgLTQzMSw3ICs0MzksNyBAQCB3aW5kb3cuQ29k
ZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgLy8gVXNlcyBhIHNldCBvZiBjaGFuZ2VzIHBsdXMg
dGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHRvCiAgIC8vIGRldGVybWluZSB3aGljaCBET00g
dXBkYXRlcyBoYXZlIHRvIGJlIG1hZGUsIGFuZCBtYWtlcyB0aGUKICAgLy8gdXBkYXRlcy4KLSAg
ZnVuY3Rpb24gdXBkYXRlRGlzcGxheUlubmVyKGNtLCBjaGFuZ2VzLCB2aXNpYmxlKSB7CisgIGZ1
bmN0aW9uIHVwZGF0ZURpc3BsYXlJbm5lcihjbSwgY2hhbmdlcywgdmlzaWJsZSwgZm9yY2VkKSB7
CiAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5LCBkb2MgPSBjbS5kb2M7CiAgICAgaWYgKCFk
aXNwbGF5LndyYXBwZXIuY2xpZW50V2lkdGgpIHsKICAgICAgIGRpc3BsYXkuc2hvd2luZ0Zyb20g
PSBkaXNwbGF5LnNob3dpbmdUbyA9IGRvYy5maXJzdDsKQEAgLTQ0MCw3ICs0NDgsNyBAQCB3aW5k
b3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB9CiAKICAgICAvLyBCYWlsIG91dCBp
ZiB0aGUgdmlzaWJsZSBhcmVhIGlzIGFscmVhZHkgcmVuZGVyZWQgYW5kIG5vdGhpbmcgY2hhbmdl
ZC4KLSAgICBpZiAoY2hhbmdlcy5sZW5ndGggPT0gMCAmJgorICAgIGlmICghZm9yY2VkICYmIGNo
YW5nZXMubGVuZ3RoID09IDAgJiYKICAgICAgICAgdmlzaWJsZS5mcm9tID4gZGlzcGxheS5zaG93
aW5nRnJvbSAmJiB2aXNpYmxlLnRvIDwgZGlzcGxheS5zaG93aW5nVG8pCiAgICAgICByZXR1cm47
CiAKQEAgLTQ1Myw3ICs0NjEsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsK
ICAgICB2YXIgcG9zaXRpb25zQ2hhbmdlZEZyb20gPSBJbmZpbml0eTsKICAgICBpZiAoY20ub3B0
aW9ucy5saW5lTnVtYmVycykKICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5n
dGg7ICsraSkKLSAgICAgICAgaWYgKGNoYW5nZXNbaV0uZGlmZikgeyBwb3NpdGlvbnNDaGFuZ2Vk
RnJvbSA9IGNoYW5nZXNbaV0uZnJvbTsgYnJlYWs7IH0KKyAgICAgICAgaWYgKGNoYW5nZXNbaV0u
ZGlmZiAmJiBjaGFuZ2VzW2ldLmZyb20gPCBwb3NpdGlvbnNDaGFuZ2VkRnJvbSkgeyBwb3NpdGlv
bnNDaGFuZ2VkRnJvbSA9IGNoYW5nZXNbaV0uZnJvbTsgfQogCiAgICAgdmFyIGVuZCA9IGRvYy5m
aXJzdCArIGRvYy5zaXplOwogICAgIHZhciBmcm9tID0gTWF0aC5tYXgodmlzaWJsZS5mcm9tIC0g
Y20ub3B0aW9ucy52aWV3cG9ydE1hcmdpbiwgZG9jLmZpcnN0KTsKQEAgLTQ5Myw3ICs1MDEsNyBA
QCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIGlmIChyYW5nZS5mcm9t
ID49IHJhbmdlLnRvKSBpbnRhY3Quc3BsaWNlKGktLSwgMSk7CiAgICAgICBlbHNlIGludGFjdExp
bmVzICs9IHJhbmdlLnRvIC0gcmFuZ2UuZnJvbTsKICAgICB9Ci0gICAgaWYgKGludGFjdExpbmVz
ID09IHRvIC0gZnJvbSAmJiBmcm9tID09IGRpc3BsYXkuc2hvd2luZ0Zyb20gJiYgdG8gPT0gZGlz
cGxheS5zaG93aW5nVG8pIHsKKyAgICBpZiAoIWZvcmNlZCAmJiBpbnRhY3RMaW5lcyA9PSB0byAt
IGZyb20gJiYgZnJvbSA9PSBkaXNwbGF5LnNob3dpbmdGcm9tICYmIHRvID09IGRpc3BsYXkuc2hv
d2luZ1RvKSB7CiAgICAgICB1cGRhdGVWaWV3T2Zmc2V0KGNtKTsKICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MTgsNiArNTI2LDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAgIH0KICAgICBkaXNwbGF5LnNob3dpbmdGcm9tID0gZnJvbTsgZGlzcGxheS5zaG93aW5n
VG8gPSB0bzsKIAorICAgIHVwZGF0ZUhlaWdodHNJblZpZXdwb3J0KGNtKTsKKyAgICB1cGRhdGVW
aWV3T2Zmc2V0KGNtKTsKKworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgZnVuY3Rpb24gdXBk
YXRlSGVpZ2h0c0luVmlld3BvcnQoY20pIHsKKyAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7
CiAgICAgdmFyIHByZXZCb3R0b20gPSBkaXNwbGF5LmxpbmVEaXYub2Zmc2V0VG9wOwogICAgIGZv
ciAodmFyIG5vZGUgPSBkaXNwbGF5LmxpbmVEaXYuZmlyc3RDaGlsZCwgaGVpZ2h0OyBub2RlOyBu
b2RlID0gbm9kZS5uZXh0U2libGluZykgaWYgKG5vZGUubGluZU9iaikgewogICAgICAgaWYgKGll
X2x0OCkgewpAQCAtNTM3LDkgKzU1Myw2IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogICAgICAgICAgIHdpZGdldHNbaV0uaGVpZ2h0ID0gd2lkZ2V0c1tpXS5ub2RlLm9mZnNl
dEhlaWdodDsKICAgICAgIH0KICAgICB9Ci0gICAgdXBkYXRlVmlld09mZnNldChjbSk7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKICAgfQogCiAgIGZ1bmN0aW9uIHVwZGF0ZVZpZXdPZmZzZXQoY20pIHsK
QEAgLTYwNSw3ICs2MTgsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICAgIGlmIChuZXh0SW50YWN0ICYmIG5leHRJbnRhY3QudG8gPT0gbGluZU4pIG5leHRJbnRhY3Qg
PSBpbnRhY3Quc2hpZnQoKTsKICAgICAgIGlmIChsaW5lSXNIaWRkZW4oY20uZG9jLCBsaW5lKSkg
ewogICAgICAgICBpZiAobGluZS5oZWlnaHQgIT0gMCkgdXBkYXRlTGluZUhlaWdodChsaW5lLCAw
KTsKLSAgICAgICAgaWYgKGxpbmUud2lkZ2V0cyAmJiBjdXIucHJldmlvdXNTaWJsaW5nKSBmb3Ig
KHZhciBpID0gMDsgaSA8IGxpbmUud2lkZ2V0cy5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAo
bGluZS53aWRnZXRzICYmIGN1ciAmJiBjdXIucHJldmlvdXNTaWJsaW5nKSBmb3IgKHZhciBpID0g
MDsgaSA8IGxpbmUud2lkZ2V0cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgIHZhciB3ID0gbGlu
ZS53aWRnZXRzW2ldOwogICAgICAgICAgIGlmICh3LnNob3dJZkhpZGRlbikgewogICAgICAgICAg
ICAgdmFyIHByZXYgPSBjdXIucHJldmlvdXNTaWJsaW5nOwpAQCAtODY0LDkgKzg3NywxMCBAQCB3
aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICBjbGVhckludGVydmFsKGRpc3Bs
YXkuYmxpbmtlcik7CiAgICAgdmFyIG9uID0gdHJ1ZTsKICAgICBkaXNwbGF5LmN1cnNvci5zdHls
ZS52aXNpYmlsaXR5ID0gZGlzcGxheS5vdGhlckN1cnNvci5zdHlsZS52aXNpYmlsaXR5ID0gIiI7
Ci0gICAgZGlzcGxheS5ibGlua2VyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Ci0gICAgICBk
aXNwbGF5LmN1cnNvci5zdHlsZS52aXNpYmlsaXR5ID0gZGlzcGxheS5vdGhlckN1cnNvci5zdHls
ZS52aXNpYmlsaXR5ID0gKG9uID0gIW9uKSA/ICIiIDogImhpZGRlbiI7Ci0gICAgfSwgY20ub3B0
aW9ucy5jdXJzb3JCbGlua1JhdGUpOworICAgIGlmIChjbS5vcHRpb25zLmN1cnNvckJsaW5rUmF0
ZSA+IDApCisgICAgICBkaXNwbGF5LmJsaW5rZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsK
KyAgICAgICAgZGlzcGxheS5jdXJzb3Iuc3R5bGUudmlzaWJpbGl0eSA9IGRpc3BsYXkub3RoZXJD
dXJzb3Iuc3R5bGUudmlzaWJpbGl0eSA9IChvbiA9ICFvbikgPyAiIiA6ICJoaWRkZW4iOworICAg
ICAgfSwgY20ub3B0aW9ucy5jdXJzb3JCbGlua1JhdGUpOwogICB9CiAKICAgLy8gSElHSExJR0hU
IFdPUktFUgpAQCAtOTE3LDggKzkzMSw4IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogICAvLyBzbWFsbGVzdCBpbmRlbnRhdGlvbiwgd2hpY2ggdGVuZHMgdG8gbmVlZCB0aGUg
bGVhc3QgY29udGV4dCB0bwogICAvLyBwYXJzZSBjb3JyZWN0bHkuCiAgIGZ1bmN0aW9uIGZpbmRT
dGFydExpbmUoY20sIG4sIHByZWNpc2UpIHsKLSAgICB2YXIgbWluaW5kZW50LCBtaW5saW5lLCBk
b2MgPSBjbS5kb2M7Ci0gICAgZm9yICh2YXIgc2VhcmNoID0gbiwgbGltID0gbiAtIDEwMDsgc2Vh
cmNoID4gbGltOyAtLXNlYXJjaCkgeworICAgIHZhciBtaW5pbmRlbnQsIG1pbmxpbmUsIGRvYyA9
IGNtLmRvYywgbWF4U2NhbiA9IGNtLmRvYy5tb2RlLmlubmVyTW9kZSA/IDEwMDAgOiAxMDA7Cisg
ICAgZm9yICh2YXIgc2VhcmNoID0gbiwgbGltID0gbiAtIG1heFNjYW47IHNlYXJjaCA+IGxpbTsg
LS1zZWFyY2gpIHsKICAgICAgIGlmIChzZWFyY2ggPD0gZG9jLmZpcnN0KSByZXR1cm4gZG9jLmZp
cnN0OwogICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgc2VhcmNoIC0gMSk7CiAgICAgICBp
ZiAobGluZS5zdGF0ZUFmdGVyICYmICghcHJlY2lzZSB8fCBzZWFyY2ggPD0gZG9jLmZyb250aWVy
KSkgcmV0dXJuIHNlYXJjaDsKQEAgLTkzMyw3ICs5NDcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKIAogICBmdW5jdGlvbiBnZXRTdGF0ZUJlZm9yZShjbSwgbiwgcHJlY2lz
ZSkgewogICAgIHZhciBkb2MgPSBjbS5kb2MsIGRpc3BsYXkgPSBjbS5kaXNwbGF5OwotICAgICAg
aWYgKCFkb2MubW9kZS5zdGFydFN0YXRlKSByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWRvYy5tb2Rl
LnN0YXJ0U3RhdGUpIHJldHVybiB0cnVlOwogICAgIHZhciBwb3MgPSBmaW5kU3RhcnRMaW5lKGNt
LCBuLCBwcmVjaXNlKSwgc3RhdGUgPSBwb3MgPiBkb2MuZmlyc3QgJiYgZ2V0TGluZShkb2MsIHBv
cy0xKS5zdGF0ZUFmdGVyOwogICAgIGlmICghc3RhdGUpIHN0YXRlID0gc3RhcnRTdGF0ZShkb2Mu
bW9kZSk7CiAgICAgZWxzZSBzdGF0ZSA9IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUpOwpAQCAt
MTAwNyw3ICsxMDIxLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAKICAg
ZnVuY3Rpb24gbWVhc3VyZUxpbmVJbm5lcihjbSwgbGluZSkgewogICAgIHZhciBkaXNwbGF5ID0g
Y20uZGlzcGxheSwgbWVhc3VyZSA9IGVtcHR5QXJyYXkobGluZS50ZXh0Lmxlbmd0aCk7Ci0gICAg
dmFyIHByZSA9IGxpbmVDb250ZW50KGNtLCBsaW5lLCBtZWFzdXJlKTsKKyAgICB2YXIgcHJlID0g
bGluZUNvbnRlbnQoY20sIGxpbmUsIG1lYXN1cmUsIHRydWUpOwogCiAgICAgLy8gSUUgZG9lcyBu
b3QgY2FjaGUgZWxlbWVudCBwb3NpdGlvbnMgb2YgaW5saW5lIGVsZW1lbnRzIGJldHdlZW4KICAg
ICAvLyBjYWxscyB0byBnZXRCb3VuZGluZ0NsaWVudFJlY3QuIFRoaXMgbWFrZXMgdGhlIGxvb3Ag
YmVsb3csCkBAIC0xMDgzLDYgKzEwOTcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgICAgIGlmIChjdXIubWVhc3VyZVJpZ2h0KSByZWN0LnJpZ2h0ID0gZ2V0UmVjdChj
dXIubWVhc3VyZVJpZ2h0KS5sZWZ0OwogICAgICAgaWYgKGN1ci5sZWZ0U2lkZSkgcmVjdC5sZWZ0
U2lkZSA9IG1lYXN1cmVSZWN0KGdldFJlY3QoY3VyLmxlZnRTaWRlKSk7CiAgICAgfQorICAgIHJl
bW92ZUNoaWxkcmVuKGNtLmRpc3BsYXkubWVhc3VyZSk7CiAgICAgZm9yICh2YXIgaSA9IDAsIGN1
cjsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIGlmIChjdXIgPSBkYXRhW2ldKSB7CiAgICAgICBmaW5p
c2hSZWN0KGN1cik7CiAgICAgICBpZiAoY3VyLmxlZnRTaWRlKSBmaW5pc2hSZWN0KGN1ci5sZWZ0
U2lkZSk7CkBAIC0xMTAwLDcgKzExMTUsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgICB2YXIgY2FjaGVkID0gIWhhc0JhZFNwYW4gJiYgZmluZENhY2hlZE1lYXN1cmVt
ZW50KGNtLCBsaW5lKTsKICAgICBpZiAoY2FjaGVkKSByZXR1cm4gbWVhc3VyZUNoYXIoY20sIGxp
bmUsIGxpbmUudGV4dC5sZW5ndGgsIGNhY2hlZC5tZWFzdXJlLCAicmlnaHQiKS5yaWdodDsKIAot
ICAgIHZhciBwcmUgPSBsaW5lQ29udGVudChjbSwgbGluZSk7CisgICAgdmFyIHByZSA9IGxpbmVD
b250ZW50KGNtLCBsaW5lLCBudWxsLCB0cnVlKTsKICAgICB2YXIgZW5kID0gcHJlLmFwcGVuZENo
aWxkKHplcm9XaWR0aEVsZW1lbnQoY20uZGlzcGxheS5tZWFzdXJlKSk7CiAgICAgcmVtb3ZlQ2hp
bGRyZW5BbmRBZGQoY20uZGlzcGxheS5tZWFzdXJlLCBwcmUpOwogICAgIHJldHVybiBnZXRSZWN0
KGVuZCkucmlnaHQgLSBnZXRSZWN0KGNtLmRpc3BsYXkubGluZURpdikubGVmdDsKQEAgLTEzMDQs
NiArMTMxOSw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgLy8g
QW4gYXJyYXkgb2YgcmFuZ2VzIG9mIGxpbmVzIHRoYXQgaGF2ZSB0byBiZSB1cGRhdGVkLiBTZWUK
ICAgICAgIC8vIHVwZGF0ZURpc3BsYXkuCiAgICAgICBjaGFuZ2VzOiBbXSwKKyAgICAgIGZvcmNl
VXBkYXRlOiBmYWxzZSwKICAgICAgIHVwZGF0ZUlucHV0OiBudWxsLAogICAgICAgdXNlclNlbENo
YW5nZTogbnVsbCwKICAgICAgIHRleHRDaGFuZ2VkOiBudWxsLApAQCAtMTMzNiw4ICsxMzUyLDgg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICB2YXIgY29vcmRzID0g
Y3Vyc29yQ29vcmRzKGNtLCBkb2Muc2VsLmhlYWQpOwogICAgICAgbmV3U2Nyb2xsUG9zID0gY2Fs
Y3VsYXRlU2Nyb2xsUG9zKGNtLCBjb29yZHMubGVmdCwgY29vcmRzLnRvcCwgY29vcmRzLmxlZnQs
IGNvb3Jkcy5ib3R0b20pOwogICAgIH0KLSAgICBpZiAob3AuY2hhbmdlcy5sZW5ndGggfHwgbmV3
U2Nyb2xsUG9zICYmIG5ld1Njcm9sbFBvcy5zY3JvbGxUb3AgIT0gbnVsbCkgewotICAgICAgdXBk
YXRlZCA9IHVwZGF0ZURpc3BsYXkoY20sIG9wLmNoYW5nZXMsIG5ld1Njcm9sbFBvcyAmJiBuZXdT
Y3JvbGxQb3Muc2Nyb2xsVG9wKTsKKyAgICBpZiAob3AuY2hhbmdlcy5sZW5ndGggfHwgb3AuZm9y
Y2VVcGRhdGUgfHwgbmV3U2Nyb2xsUG9zICYmIG5ld1Njcm9sbFBvcy5zY3JvbGxUb3AgIT0gbnVs
bCkgeworICAgICAgdXBkYXRlZCA9IHVwZGF0ZURpc3BsYXkoY20sIG9wLmNoYW5nZXMsIG5ld1Nj
cm9sbFBvcyAmJiBuZXdTY3JvbGxQb3Muc2Nyb2xsVG9wLCBvcC5mb3JjZVVwZGF0ZSk7CiAgICAg
ICBpZiAoY20uZGlzcGxheS5zY3JvbGxlci5vZmZzZXRIZWlnaHQpIGNtLmRvYy5zY3JvbGxUb3Ag
PSBjbS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcDsKICAgICB9CiAgICAgaWYgKCF1cGRhdGVk
ICYmIG9wLnNlbGVjdGlvbkNoYW5nZWQpIHVwZGF0ZVNlbGVjdGlvbihjbSk7CkBAIC0xNDM0LDYg
KzE0NTAsMTAgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIGZ1bmN0aW9u
IHJlYWRJbnB1dChjbSkgewogICAgIHZhciBpbnB1dCA9IGNtLmRpc3BsYXkuaW5wdXQsIHByZXZJ
bnB1dCA9IGNtLmRpc3BsYXkucHJldklucHV0LCBkb2MgPSBjbS5kb2MsIHNlbCA9IGRvYy5zZWw7
CiAgICAgaWYgKCFjbS5zdGF0ZS5mb2N1c2VkIHx8IGhhc1NlbGVjdGlvbihpbnB1dCkgfHwgaXNS
ZWFkT25seShjbSkgfHwgY20uc3RhdGUuZGlzYWJsZUlucHV0KSByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGNtLnN0YXRlLnBhc3RlSW5jb21pbmcgJiYgY20uc3RhdGUuZmFrZWRMYXN0Q2hhcikgewor
ICAgICAgaW5wdXQudmFsdWUgPSBpbnB1dC52YWx1ZS5zdWJzdHJpbmcoMCwgaW5wdXQudmFsdWUu
bGVuZ3RoIC0gMSk7CisgICAgICBjbS5zdGF0ZS5mYWtlZExhc3RDaGFyID0gZmFsc2U7CisgICAg
fQogICAgIHZhciB0ZXh0ID0gaW5wdXQudmFsdWU7CiAgICAgaWYgKHRleHQgPT0gcHJldklucHV0
ICYmIHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pKSByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGllICYm
ICFpZV9sdDkgJiYgY20uZGlzcGxheS5pbnB1dEhhc1NlbGVjdGlvbiA9PT0gdGV4dCkgewpAQCAt
MTU4MCwxMiArMTYwMCwyMiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICAgIG9uKGQuc2Nyb2xsZXIsICJkcmFnb3ZlciIsIGRyYWdfKTsKICAgICAgIG9uKGQuc2Nyb2xs
ZXIsICJkcm9wIiwgb3BlcmF0aW9uKGNtLCBvbkRyb3ApKTsKICAgICB9Ci0gICAgb24oZC5zY3Jv
bGxlciwgInBhc3RlIiwgZnVuY3Rpb24oZSl7CisgICAgb24oZC5zY3JvbGxlciwgInBhc3RlIiwg
ZnVuY3Rpb24oZSkgewogICAgICAgaWYgKGV2ZW50SW5XaWRnZXQoZCwgZSkpIHJldHVybjsKICAg
ICAgIGZvY3VzSW5wdXQoY20pOwogICAgICAgZmFzdFBvbGwoY20pOwogICAgIH0pOwogICAgIG9u
KGQuaW5wdXQsICJwYXN0ZSIsIGZ1bmN0aW9uKCkgeworICAgICAgLy8gV29ya2Fyb3VuZCBmb3Ig
d2Via2l0IGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMDYK
KyAgICAgIC8vIEFkZCBhIGNoYXIgdG8gdGhlIGVuZCBvZiB0ZXh0YXJlYSBiZWZvcmUgcGFzdGUg
b2NjdXIgc28gdGhhdAorICAgICAgLy8gc2VsZWN0aW9uIGRvZXNuJ3Qgc3BhbiB0byB0aGUgZW5k
IG9mIHRleHRhcmVhLgorICAgICAgaWYgKHdlYmtpdCAmJiAhY20uc3RhdGUuZmFrZWRMYXN0Q2hh
ciAmJiAhKG5ldyBEYXRlIC0gY20uc3RhdGUubGFzdE1pZGRsZURvd24gPCAyMDApKSB7CisgICAg
ICAgIHZhciBzdGFydCA9IGQuaW5wdXQuc2VsZWN0aW9uU3RhcnQsIGVuZCA9IGQuaW5wdXQuc2Vs
ZWN0aW9uRW5kOworICAgICAgICBkLmlucHV0LnZhbHVlICs9ICIkIjsKKyAgICAgICAgZC5pbnB1
dC5zZWxlY3Rpb25TdGFydCA9IHN0YXJ0OworICAgICAgICBkLmlucHV0LnNlbGVjdGlvbkVuZCA9
IGVuZDsKKyAgICAgICAgY20uc3RhdGUuZmFrZWRMYXN0Q2hhciA9IHRydWU7CisgICAgICB9CiAg
ICAgICBjbS5zdGF0ZS5wYXN0ZUluY29taW5nID0gdHJ1ZTsKICAgICAgIGZhc3RQb2xsKGNtKTsK
ICAgICB9KTsKQEAgLTE2NDksNiArMTY3OSw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0
aW9uKCkgewogICAgICAgaWYgKGNhcHR1cmVNaWRkbGVDbGljaykgb25Db250ZXh0TWVudS5jYWxs
KGNtLCBjbSwgZSk7CiAgICAgICByZXR1cm47CiAgICAgY2FzZSAyOgorICAgICAgaWYgKHdlYmtp
dCkgY20uc3RhdGUubGFzdE1pZGRsZURvd24gPSArbmV3IERhdGU7CiAgICAgICBpZiAoc3RhcnQp
IGV4dGVuZFNlbGVjdGlvbihjbS5kb2MsIHN0YXJ0KTsKICAgICAgIHNldFRpbWVvdXQoYmluZChm
b2N1c0lucHV0LCBjbSksIDIwKTsKICAgICAgIGVfcHJldmVudERlZmF1bHQoZSk7CkBAIC0xNzY5
LDE3ICsxODAwLDE2IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIG9u
KGRvY3VtZW50LCAibW91c2V1cCIsIHVwKTsKICAgfQogCi0gIGZ1bmN0aW9uIGNsaWNrSW5HdXR0
ZXIoY20sIGUpIHsKLSAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXk7CisgIGZ1bmN0aW9uIGd1
dHRlckV2ZW50KGNtLCBlLCB0eXBlLCBwcmV2ZW50LCBzaWduYWxmbikgewogICAgIHRyeSB7IHZh
ciBtWCA9IGUuY2xpZW50WCwgbVkgPSBlLmNsaWVudFk7IH0KICAgICBjYXRjaChlKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGlmIChtWCA+PSBNYXRoLmZsb29yKGdldFJlY3QoY20uZGlzcGxheS5n
dXR0ZXJzKS5yaWdodCkpIHJldHVybiBmYWxzZTsKKyAgICBpZiAocHJldmVudCkgZV9wcmV2ZW50
RGVmYXVsdChlKTsKIAotICAgIGlmIChtWCA+PSBNYXRoLmZsb29yKGdldFJlY3QoZGlzcGxheS5n
dXR0ZXJzKS5yaWdodCkpIHJldHVybiBmYWxzZTsKLSAgICBlX3ByZXZlbnREZWZhdWx0KGUpOwot
ICAgIGlmICghaGFzSGFuZGxlcihjbSwgImd1dHRlckNsaWNrIikpIHJldHVybiB0cnVlOwotCisg
ICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5OwogICAgIHZhciBsaW5lQm94ID0gZ2V0UmVjdChk
aXNwbGF5LmxpbmVEaXYpOwotICAgIGlmIChtWSA+IGxpbmVCb3guYm90dG9tKSByZXR1cm4gdHJ1
ZTsKKworICAgIGlmIChtWSA+IGxpbmVCb3guYm90dG9tIHx8ICFoYXNIYW5kbGVyKGNtLCB0eXBl
KSkgcmV0dXJuIGVfZGVmYXVsdFByZXZlbnRlZChlKTsKICAgICBtWSAtPSBsaW5lQm94LnRvcCAt
IGRpc3BsYXkudmlld09mZnNldDsKIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY20ub3B0aW9u
cy5ndXR0ZXJzLmxlbmd0aDsgKytpKSB7CkBAIC0xNzg3LDExICsxODE3LDE5IEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgaWYgKGcgJiYgZ2V0UmVjdChnKS5yaWdo
dCA+PSBtWCkgewogICAgICAgICB2YXIgbGluZSA9IGxpbmVBdEhlaWdodChjbS5kb2MsIG1ZKTsK
ICAgICAgICAgdmFyIGd1dHRlciA9IGNtLm9wdGlvbnMuZ3V0dGVyc1tpXTsKLSAgICAgICAgc2ln
bmFsTGF0ZXIoY20sICJndXR0ZXJDbGljayIsIGNtLCBsaW5lLCBndXR0ZXIsIGUpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgc2lnbmFsZm4oY20sIHR5cGUsIGNtLCBsaW5lLCBndXR0ZXIsIGUp
OworICAgICAgICByZXR1cm4gZV9kZWZhdWx0UHJldmVudGVkKGUpOwogICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgIGZ1bmN0aW9uIGNvbnRleHRNZW51SW5HdXR0ZXIo
Y20sIGUpIHsKKyAgICBpZiAoIWhhc0hhbmRsZXIoY20sICJndXR0ZXJDb250ZXh0TWVudSIpKSBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGd1dHRlckV2ZW50KGNtLCBlLCAiZ3V0dGVyQ29udGV4
dE1lbnUiLCBmYWxzZSwgc2lnbmFsKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNsaWNrSW5HdXR0ZXIo
Y20sIGUpIHsKKyAgICByZXR1cm4gZ3V0dGVyRXZlbnQoY20sIGUsICJndXR0ZXJDbGljayIsIHRy
dWUsIHNpZ25hbExhdGVyKTsKICAgfQogCiAgIC8vIEtsdWRnZSB0byB3b3JrIGFyb3VuZCBzdHJh
bmdlIElFIGJlaGF2aW9yIHdoZXJlIGl0J2xsIHNvbWV0aW1lcwpAQCAtMjA1Miw4ICsyMDkwLDgg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIGZ1bmN0aW9uIG9uS2V5RG93
bihlKSB7CiAgICAgdmFyIGNtID0gdGhpczsKICAgICBpZiAoIWNtLnN0YXRlLmZvY3VzZWQpIG9u
Rm9jdXMoY20pOwotICAgIGlmIChpZSAmJiBlLmtleUNvZGUgPT0gMjcpIHsgZS5yZXR1cm5WYWx1
ZSA9IGZhbHNlOyB9CiAgICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlKSB8fCBjbS5vcHRpb25z
Lm9uS2V5RXZlbnQgJiYgY20ub3B0aW9ucy5vbktleUV2ZW50KGNtLCBhZGRTdG9wKGUpKSkgcmV0
dXJuOworICAgIGlmIChpZSAmJiBlLmtleUNvZGUgPT0gMjcpIGUucmV0dXJuVmFsdWUgPSBmYWxz
ZTsKICAgICB2YXIgY29kZSA9IGUua2V5Q29kZTsKICAgICAvLyBJRSBkb2VzIHN0cmFuZ2UgdGhp
bmdzIHdpdGggZXNjYXBlLgogICAgIGNtLmRvYy5zZWwuc2hpZnQgPSBjb2RlID09IDE2IHx8IGUu
c2hpZnRLZXk7CkBAIC0yMDkwLDcgKzIxMjgsMTAgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgICBjbS5zdGF0ZS5mb2N1c2VkID0gdHJ1ZTsKICAgICAgIGlmIChjbS5k
aXNwbGF5LndyYXBwZXIuY2xhc3NOYW1lLnNlYXJjaCgvXGJDb2RlTWlycm9yLWZvY3VzZWRcYi8p
ID09IC0xKQogICAgICAgICBjbS5kaXNwbGF5LndyYXBwZXIuY2xhc3NOYW1lICs9ICIgQ29kZU1p
cnJvci1mb2N1c2VkIjsKLSAgICAgIHJlc2V0SW5wdXQoY20sIHRydWUpOworICAgICAgaWYgKCFj
bS5jdXJPcCkgeworICAgICAgICByZXNldElucHV0KGNtLCB0cnVlKTsKKyAgICAgICAgaWYgKHdl
YmtpdCkgc2V0VGltZW91dChiaW5kKHJlc2V0SW5wdXQsIGNtLCB0cnVlKSwgMCk7IC8vIElzc3Vl
ICMxNzMwCisgICAgICB9CiAgICAgfQogICAgIHNsb3dQb2xsKGNtKTsKICAgICByZXN0YXJ0Qmxp
bmsoY20pOwpAQCAtMjEwOSw3ICsyMTUwLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rp
b24oKSB7CiAgIGZ1bmN0aW9uIG9uQ29udGV4dE1lbnUoY20sIGUpIHsKICAgICBpZiAoc2lnbmFs
RE9NRXZlbnQoY20sIGUsICJjb250ZXh0bWVudSIpKSByZXR1cm47CiAgICAgdmFyIGRpc3BsYXkg
PSBjbS5kaXNwbGF5LCBzZWwgPSBjbS5kb2Muc2VsOwotICAgIGlmIChldmVudEluV2lkZ2V0KGRp
c3BsYXksIGUpKSByZXR1cm47CisgICAgaWYgKGV2ZW50SW5XaWRnZXQoZGlzcGxheSwgZSkgfHwg
Y29udGV4dE1lbnVJbkd1dHRlcihjbSwgZSkpIHJldHVybjsKIAogICAgIHZhciBwb3MgPSBwb3NG
cm9tTW91c2UoY20sIGUpLCBzY3JvbGxQb3MgPSBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcDsK
ICAgICBpZiAoIXBvcyB8fCBvcGVyYSkgcmV0dXJuOyAvLyBPcGVyYSBpcyBkaWZmaWN1bHQuCkBA
IC0yMTI4LDggKzIxNjksOCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAog
ICAgIGZ1bmN0aW9uIHByZXBhcmVTZWxlY3RBbGxIYWNrKCkgewogICAgICAgaWYgKGRpc3BsYXku
aW5wdXQuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCkgewotICAgICAgICB2YXIgZXh0dmFsID0gZGlz
cGxheS5pbnB1dC52YWx1ZSA9ICIgIiArIChwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSA/ICIiIDog
ZGlzcGxheS5pbnB1dC52YWx1ZSk7Ci0gICAgICAgIGRpc3BsYXkucHJldklucHV0ID0gIiAiOwor
ICAgICAgICB2YXIgZXh0dmFsID0gZGlzcGxheS5pbnB1dC52YWx1ZSA9ICJcdTIwMGIiICsgKHBv
c0VxKHNlbC5mcm9tLCBzZWwudG8pID8gIiIgOiBkaXNwbGF5LmlucHV0LnZhbHVlKTsKKyAgICAg
ICAgZGlzcGxheS5wcmV2SW5wdXQgPSAiXHUyMDBiIjsKICAgICAgICAgZGlzcGxheS5pbnB1dC5z
ZWxlY3Rpb25TdGFydCA9IDE7IGRpc3BsYXkuaW5wdXQuc2VsZWN0aW9uRW5kID0gZXh0dmFsLmxl
bmd0aDsKICAgICAgIH0KICAgICB9CkBAIC0zMTE1LDE0ICszMTU2LDE2IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgdXBkYXRlU2Nyb2xsUG9zKHRoaXMsIHNQb3Mu
c2Nyb2xsTGVmdCwgc1Bvcy5zY3JvbGxUb3ApOwogICAgIH0pLAogCi0gICAgc2V0U2l6ZTogZnVu
Y3Rpb24od2lkdGgsIGhlaWdodCkgeworICAgIHNldFNpemU6IG9wZXJhdGlvbihudWxsLCBmdW5j
dGlvbih3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICBmdW5jdGlvbiBpbnRlcnByZXQodmFsKSB7CiAg
ICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJudW1iZXIiIHx8IC9eXGQrJC8udGVzdChTdHJp
bmcodmFsKSkgPyB2YWwgKyAicHgiIDogdmFsOwogICAgICAgfQogICAgICAgaWYgKHdpZHRoICE9
IG51bGwpIHRoaXMuZGlzcGxheS53cmFwcGVyLnN0eWxlLndpZHRoID0gaW50ZXJwcmV0KHdpZHRo
KTsKICAgICAgIGlmIChoZWlnaHQgIT0gbnVsbCkgdGhpcy5kaXNwbGF5LndyYXBwZXIuc3R5bGUu
aGVpZ2h0ID0gaW50ZXJwcmV0KGhlaWdodCk7Ci0gICAgICB0aGlzLnJlZnJlc2goKTsKLSAgICB9
LAorICAgICAgaWYgKHRoaXMub3B0aW9ucy5saW5lV3JhcHBpbmcpCisgICAgICAgIHRoaXMuZGlz
cGxheS5tZWFzdXJlTGluZUNhY2hlLmxlbmd0aCA9IHRoaXMuZGlzcGxheS5tZWFzdXJlTGluZUNh
Y2hlUG9zID0gMDsKKyAgICAgIHRoaXMuY3VyT3AuZm9yY2VVcGRhdGUgPSB0cnVlOworICAgIH0p
LAogCiAgICAgb3BlcmF0aW9uOiBmdW5jdGlvbihmKXtyZXR1cm4gcnVuSW5PcCh0aGlzLCBmKTt9
LAogCkBAIC0zMzQ4LDYgKzMzOTEsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKICAgQ29kZU1pcnJvci5pbm5lck1vZGUgPSBmdW5jdGlvbihtb2RlLCBzdGF0ZSkgewogICAg
IHdoaWxlIChtb2RlLmlubmVyTW9kZSkgewogICAgICAgdmFyIGluZm8gPSBtb2RlLmlubmVyTW9k
ZShzdGF0ZSk7CisgICAgICBpZiAoIWluZm8gfHwgaW5mby5tb2RlID09IG1vZGUpIGJyZWFrOwog
ICAgICAgc3RhdGUgPSBpbmZvLnN0YXRlOwogICAgICAgbW9kZSA9IGluZm8ubW9kZTsKICAgICB9
CkBAIC0zNjY2LDYgKzM3MTAsMTAgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7
CiAgICAgaWYgKHRoaXMuZXhwbGljaXRseUNsZWFyZWQpIHJldHVybjsKICAgICB2YXIgY20gPSB0
aGlzLmRvYy5jbSwgd2l0aE9wID0gY20gJiYgIWNtLmN1ck9wOwogICAgIGlmICh3aXRoT3ApIHN0
YXJ0T3BlcmF0aW9uKGNtKTsKKyAgICBpZiAoaGFzSGFuZGxlcih0aGlzLCAiY2xlYXIiKSkgewor
ICAgICAgdmFyIGZvdW5kID0gdGhpcy5maW5kKCk7CisgICAgICBpZiAoZm91bmQpIHNpZ25hbExh
dGVyKHRoaXMsICJjbGVhciIsIGZvdW5kLmZyb20sIGZvdW5kLnRvKTsKKyAgICB9CiAgICAgdmFy
IG1pbiA9IG51bGwsIG1heCA9IG51bGw7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxp
bmVzLmxlbmd0aDsgKytpKSB7CiAgICAgICB2YXIgbGluZSA9IHRoaXMubGluZXNbaV07CkBAIC0z
Njk0LDcgKzM3NDIsNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAg
IGlmIChjbSkgcmVDaGVja1NlbGVjdGlvbihjbSk7CiAgICAgfQogICAgIGlmICh3aXRoT3ApIGVu
ZE9wZXJhdGlvbihjbSk7Ci0gICAgc2lnbmFsTGF0ZXIodGhpcywgImNsZWFyIik7CiAgIH07CiAK
ICAgVGV4dE1hcmtlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKCkgewpAQCAtMzcxNSwxNCAr
Mzc2MiwxNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgVGV4dE1hcmtl
ci5wcm90b3R5cGUuY2hhbmdlZCA9IGZ1bmN0aW9uKCkgewogICAgIHZhciBwb3MgPSB0aGlzLmZp
bmQoKSwgY20gPSB0aGlzLmRvYy5jbTsKICAgICBpZiAoIXBvcyB8fCAhY20pIHJldHVybjsKLSAg
ICB2YXIgbGluZSA9IGdldExpbmUodGhpcy5kb2MsIHBvcy5mcm9tLmxpbmUpOworICAgIGlmICh0
aGlzLnR5cGUgIT0gImJvb2ttYXJrIikgcG9zID0gcG9zLmZyb207CisgICAgdmFyIGxpbmUgPSBn
ZXRMaW5lKHRoaXMuZG9jLCBwb3MubGluZSk7CiAgICAgY2xlYXJDYWNoZWRNZWFzdXJlbWVudChj
bSwgbGluZSk7Ci0gICAgaWYgKHBvcy5mcm9tLmxpbmUgPj0gY20uZGlzcGxheS5zaG93aW5nRnJv
bSAmJiBwb3MuZnJvbS5saW5lIDwgY20uZGlzcGxheS5zaG93aW5nVG8pIHsKKyAgICBpZiAocG9z
LmxpbmUgPj0gY20uZGlzcGxheS5zaG93aW5nRnJvbSAmJiBwb3MubGluZSA8IGNtLmRpc3BsYXku
c2hvd2luZ1RvKSB7CiAgICAgICBmb3IgKHZhciBub2RlID0gY20uZGlzcGxheS5saW5lRGl2LmZp
cnN0Q2hpbGQ7IG5vZGU7IG5vZGUgPSBub2RlLm5leHRTaWJsaW5nKSBpZiAobm9kZS5saW5lT2Jq
ID09IGxpbmUpIHsKICAgICAgICAgaWYgKG5vZGUub2Zmc2V0SGVpZ2h0ICE9IGxpbmUuaGVpZ2h0
KSB1cGRhdGVMaW5lSGVpZ2h0KGxpbmUsIG5vZGUub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgYnJl
YWs7CiAgICAgICB9Ci0gICAgICBydW5Jbk9wKGNtLCBmdW5jdGlvbigpIHsgY20uY3VyT3Auc2Vs
ZWN0aW9uQ2hhbmdlZCA9IHRydWU7IH0pOworICAgICAgcnVuSW5PcChjbSwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGNtLmN1ck9wLnNlbGVjdGlvbkNoYW5nZWQgPSBjbS5jdXJPcC5mb3JjZVVwZGF0
ZSA9IGNtLmN1ck9wLnVwZGF0ZU1heExpbmUgPSB0cnVlOworICAgICAgfSk7CiAgICAgfQogICB9
OwogCkBAIC00MjQxLDEzICs0MjkxLDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogICAgICAgKHN0eWxlVG9DbGFzc0NhY2hlW3N0eWxlXSA9ICJjbS0iICsgc3R5bGUucmVw
bGFjZSgvICsvZywgIiBjbS0iKSk7CiAgIH0KIAotICBmdW5jdGlvbiBsaW5lQ29udGVudChjbSwg
cmVhbExpbmUsIG1lYXN1cmUpIHsKKyAgZnVuY3Rpb24gbGluZUNvbnRlbnQoY20sIHJlYWxMaW5l
LCBtZWFzdXJlLCBjb3B5V2lkZ2V0cykgewogICAgIHZhciBtZXJnZWQsIGxpbmUgPSByZWFsTGlu
ZSwgZW1wdHkgPSB0cnVlOwogICAgIHdoaWxlIChtZXJnZWQgPSBjb2xsYXBzZWRTcGFuQXRTdGFy
dChsaW5lKSkKICAgICAgIGxpbmUgPSBnZXRMaW5lKGNtLmRvYywgbWVyZ2VkLmZpbmQoKS5mcm9t
LmxpbmUpOwogCi0gICAgdmFyIGJ1aWxkZXIgPSB7cHJlOiBlbHQoInByZSIpLCBjb2w6IDAsIHBv
czogMCwgZGlzcGxheTogIW1lYXN1cmUsCi0gICAgICAgICAgICAgICAgICAgbWVhc3VyZTogbnVs
bCwgbWVhc3VyZWRTb21ldGhpbmc6IGZhbHNlLCBjbTogY219OworICAgIHZhciBidWlsZGVyID0g
e3ByZTogZWx0KCJwcmUiKSwgY29sOiAwLCBwb3M6IDAsCisgICAgICAgICAgICAgICAgICAgbWVh
c3VyZTogbnVsbCwgbWVhc3VyZWRTb21ldGhpbmc6IGZhbHNlLCBjbTogY20sCisgICAgICAgICAg
ICAgICAgICAgY29weVdpZGdldHM6IGNvcHlXaWRnZXRzfTsKICAgICBpZiAobGluZS50ZXh0Q2xh
c3MpIGJ1aWxkZXIucHJlLmNsYXNzTmFtZSA9IGxpbmUudGV4dENsYXNzOwogCiAgICAgZG8gewpA
QCAtNDM3MSwxNyArNDQyMiwxOSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsK
ICAgZnVuY3Rpb24gYnVpbGRDb2xsYXBzZWRTcGFuKGJ1aWxkZXIsIHNpemUsIG1hcmtlciwgaWdu
b3JlV2lkZ2V0KSB7CiAgICAgdmFyIHdpZGdldCA9ICFpZ25vcmVXaWRnZXQgJiYgbWFya2VyLnJl
cGxhY2VkV2l0aDsKICAgICBpZiAod2lkZ2V0KSB7Ci0gICAgICBpZiAoIWJ1aWxkZXIuZGlzcGxh
eSkgd2lkZ2V0ID0gd2lkZ2V0LmNsb25lTm9kZSh0cnVlKTsKKyAgICAgIGlmIChidWlsZGVyLmNv
cHlXaWRnZXRzKSB3aWRnZXQgPSB3aWRnZXQuY2xvbmVOb2RlKHRydWUpOwogICAgICAgYnVpbGRl
ci5wcmUuYXBwZW5kQ2hpbGQod2lkZ2V0KTsKICAgICAgIGlmIChidWlsZGVyLm1lYXN1cmUpIHsK
ICAgICAgICAgaWYgKHNpemUpIHsKICAgICAgICAgICBidWlsZGVyLm1lYXN1cmVbYnVpbGRlci5w
b3NdID0gd2lkZ2V0OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHZhciBlbHQgPSBidWls
ZGVyLm1lYXN1cmVbYnVpbGRlci5wb3NdID0gemVyb1dpZHRoRWxlbWVudChidWlsZGVyLmNtLmRp
c3BsYXkubWVhc3VyZSk7Ci0gICAgICAgICAgaWYgKG1hcmtlci50eXBlICE9ICJib29rbWFyayIg
fHwgbWFya2VyLmluc2VydExlZnQpCi0gICAgICAgICAgICBidWlsZGVyLnByZS5pbnNlcnRCZWZv
cmUoZWx0LCB3aWRnZXQpOworICAgICAgICAgIHZhciBlbHQgPSB6ZXJvV2lkdGhFbGVtZW50KGJ1
aWxkZXIuY20uZGlzcGxheS5tZWFzdXJlKTsKKyAgICAgICAgICBpZiAobWFya2VyLnR5cGUgPT0g
ImJvb2ttYXJrIiAmJiAhbWFya2VyLmluc2VydExlZnQpCisgICAgICAgICAgICBidWlsZGVyLm1l
YXN1cmVbYnVpbGRlci5wb3NdID0gYnVpbGRlci5wcmUuYXBwZW5kQ2hpbGQoZWx0KTsKKyAgICAg
ICAgICBlbHNlIGlmIChidWlsZGVyLm1lYXN1cmVbYnVpbGRlci5wb3NdKQorICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1aWxkZXIucHJlLmFwcGVuZENo
aWxkKGVsdCk7CisgICAgICAgICAgICBidWlsZGVyLm1lYXN1cmVbYnVpbGRlci5wb3NdID0gYnVp
bGRlci5wcmUuaW5zZXJ0QmVmb3JlKGVsdCwgd2lkZ2V0KTsKICAgICAgICAgfQogICAgICAgICBi
dWlsZGVyLm1lYXN1cmVkU29tZXRoaW5nID0gdHJ1ZTsKICAgICAgIH0KQEAgLTQ0MDUsNyArNDQ1
OCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgaWYgKG5leHRD
aGFuZ2UgPT0gcG9zKSB7IC8vIFVwZGF0ZSBjdXJyZW50IG1hcmtlciBzZXQKICAgICAgICAgc3Bh
blN0eWxlID0gc3BhbkVuZFN0eWxlID0gc3BhblN0YXJ0U3R5bGUgPSB0aXRsZSA9ICIiOwogICAg
ICAgICBjb2xsYXBzZWQgPSBudWxsOyBuZXh0Q2hhbmdlID0gSW5maW5pdHk7Ci0gICAgICAgIHZh
ciBmb3VuZEJvb2ttYXJrID0gbnVsbDsKKyAgICAgICAgdmFyIGZvdW5kQm9va21hcmtzID0gW107
CiAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3BhbnMubGVuZ3RoOyArK2opIHsKICAgICAg
ICAgICB2YXIgc3AgPSBzcGFuc1tqXSwgbSA9IHNwLm1hcmtlcjsKICAgICAgICAgICBpZiAoc3Au
ZnJvbSA8PSBwb3MgJiYgKHNwLnRvID09IG51bGwgfHwgc3AudG8gPiBwb3MpKSB7CkBAIC00NDE5
LDE0ICs0NDcyLDE1IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAg
ICAgIH0gZWxzZSBpZiAoc3AuZnJvbSA+IHBvcyAmJiBuZXh0Q2hhbmdlID4gc3AuZnJvbSkgewog
ICAgICAgICAgICAgbmV4dENoYW5nZSA9IHNwLmZyb207CiAgICAgICAgICAgfQotICAgICAgICAg
IGlmIChtLnR5cGUgPT0gImJvb2ttYXJrIiAmJiBzcC5mcm9tID09IHBvcyAmJiBtLnJlcGxhY2Vk
V2l0aCkgZm91bmRCb29rbWFyayA9IG07CisgICAgICAgICAgaWYgKG0udHlwZSA9PSAiYm9va21h
cmsiICYmIHNwLmZyb20gPT0gcG9zICYmIG0ucmVwbGFjZWRXaXRoKSBmb3VuZEJvb2ttYXJrcy5w
dXNoKG0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb2xsYXBzZWQgJiYgKGNvbGxhcHNlZC5m
cm9tIHx8IDApID09IHBvcykgewogICAgICAgICAgIGJ1aWxkQ29sbGFwc2VkU3BhbihidWlsZGVy
LCAoY29sbGFwc2VkLnRvID09IG51bGwgPyBsZW4gOiBjb2xsYXBzZWQudG8pIC0gcG9zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQubWFya2VyLCBjb2xsYXBzZWQuZnJv
bSA9PSBudWxsKTsKICAgICAgICAgICBpZiAoY29sbGFwc2VkLnRvID09IG51bGwpIHJldHVybiBj
b2xsYXBzZWQubWFya2VyLmZpbmQoKTsKICAgICAgICAgfQotICAgICAgICBpZiAoZm91bmRCb29r
bWFyayAmJiAhY29sbGFwc2VkKSBidWlsZENvbGxhcHNlZFNwYW4oYnVpbGRlciwgMCwgZm91bmRC
b29rbWFyayk7CisgICAgICAgIGlmICghY29sbGFwc2VkICYmIGZvdW5kQm9va21hcmtzLmxlbmd0
aCkgZm9yICh2YXIgaiA9IDA7IGogPCBmb3VuZEJvb2ttYXJrcy5sZW5ndGg7ICsraikKKyAgICAg
ICAgICBidWlsZENvbGxhcHNlZFNwYW4oYnVpbGRlciwgMCwgZm91bmRCb29rbWFya3Nbal0pOwog
ICAgICAgfQogICAgICAgaWYgKHBvcyA+PSBsZW4pIGJyZWFrOwogCkBAIC00NzIyLDExICs0Nzc2
LDExIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgaWYgKGV4dGVu
ZCkgZXh0ZW5kU2VsZWN0aW9uKHRoaXMsIHBvcyk7CiAgICAgICBlbHNlIHNldFNlbGVjdGlvbih0
aGlzLCBwb3MsIHBvcyk7CiAgICAgfSksCi0gICAgc2V0U2VsZWN0aW9uOiBkb2NPcGVyYXRpb24o
ZnVuY3Rpb24oYW5jaG9yLCBoZWFkKSB7Ci0gICAgICBzZXRTZWxlY3Rpb24odGhpcywgY2xpcFBv
cyh0aGlzLCBhbmNob3IpLCBjbGlwUG9zKHRoaXMsIGhlYWQgfHwgYW5jaG9yKSk7CisgICAgc2V0
U2VsZWN0aW9uOiBkb2NPcGVyYXRpb24oZnVuY3Rpb24oYW5jaG9yLCBoZWFkLCBiaWFzKSB7Cisg
ICAgICBzZXRTZWxlY3Rpb24odGhpcywgY2xpcFBvcyh0aGlzLCBhbmNob3IpLCBjbGlwUG9zKHRo
aXMsIGhlYWQgfHwgYW5jaG9yKSwgYmlhcyk7CiAgICAgfSksCi0gICAgZXh0ZW5kU2VsZWN0aW9u
OiBkb2NPcGVyYXRpb24oZnVuY3Rpb24oZnJvbSwgdG8pIHsKLSAgICAgIGV4dGVuZFNlbGVjdGlv
bih0aGlzLCBjbGlwUG9zKHRoaXMsIGZyb20pLCB0byAmJiBjbGlwUG9zKHRoaXMsIHRvKSk7Cisg
ICAgZXh0ZW5kU2VsZWN0aW9uOiBkb2NPcGVyYXRpb24oZnVuY3Rpb24oZnJvbSwgdG8sIGJpYXMp
IHsKKyAgICAgIGV4dGVuZFNlbGVjdGlvbih0aGlzLCBjbGlwUG9zKHRoaXMsIGZyb20pLCB0byAm
JiBjbGlwUG9zKHRoaXMsIHRvKSwgYmlhcyk7CiAgICAgfSksCiAKICAgICBnZXRTZWxlY3Rpb246
IGZ1bmN0aW9uKGxpbmVTZXApIHtyZXR1cm4gdGhpcy5nZXRSYW5nZSh0aGlzLnNlbC5mcm9tLCB0
aGlzLnNlbC50bywgbGluZVNlcCk7fSwKQEAgLTUyMzksNyArNTI5Myw3IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgIGZ1bmN0aW9uIHNpZ25hbERPTUV2ZW50KGNtLCBl
LCBvdmVycmlkZSkgewogICAgIHNpZ25hbChjbSwgb3ZlcnJpZGUgfHwgZS50eXBlLCBjbSwgZSk7
Ci0gICAgcmV0dXJuIGVfZGVmYXVsdFByZXZlbnRlZChlKTsKKyAgICByZXR1cm4gZV9kZWZhdWx0
UHJldmVudGVkKGUpIHx8IGUuY29kZW1pcnJvcklnbm9yZTsKICAgfQogCiAgIGZ1bmN0aW9uIGZp
cmVEZWxheWVkKCkgewpAQCAtNTc3NCw3ICs1ODI4LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAo
ZnVuY3Rpb24oKSB7CiAKICAgLy8gVEhFIEVORAogCi0gIENvZGVNaXJyb3IudmVyc2lvbiA9ICIz
LjE0LjEiOworICBDb2RlTWlycm9yLnZlcnNpb24gPSAiMy4xNi4xIjsKIAogICByZXR1cm4gQ29k
ZU1pcnJvcjsKIH0pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMv
UHJldHR5UHJpbnRpbmcvY3NzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0
eVByaW50aW5nL2Nzcy5qcwppbmRleCBiNTJlNzg3Li4yZWFhOTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY3NzLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jc3MuanMKQEAgLTI1Miw3ICsy
NTIsNiBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKICAgICAgIC8vIFB1c2gvcG9wIGNvbnRleHQgc3RhY2sKICAgICAg
IGlmICh0eXBlID09ICJ7IikgewogICAgICAgICBpZiAoY29udGV4dCA9PSAiQG1lZGlhIiB8fCBj
b250ZXh0ID09ICJAbWVkaWFUeXBlIikgewotICAgICAgICAgIHN0YXRlLnN0YWNrLnBvcCgpOwog
ICAgICAgICAgIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9ICJAbWVkaWF7IjsK
ICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTI2MSw4ICsyNjAsNyBAQCBDb2RlTWlycm9y
LmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsK
ICAgICAgICAgfQogICAgICAgfQogICAgICAgZWxzZSBpZiAodHlwZSA9PSAifSIpIHsKLSAgICAg
ICAgdmFyIGxhc3RTdGF0ZSA9IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aCAtIDFdOwot
ICAgICAgICBpZiAobGFzdFN0YXRlID09ICJpbnRlcnBvbGF0aW9uIikgc3R5bGUgPSAib3BlcmF0
b3IiOworICAgICAgICBpZiAoY29udGV4dCA9PSAiaW50ZXJwb2xhdGlvbiIpIHN0eWxlID0gIm9w
ZXJhdG9yIjsKICAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICAgIGlmIChjb250ZXh0
ID09ICJwcm9wZXJ0eVZhbHVlIikgc3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICB9CkBAIC0yNzAs
MjAgKzI2OCwzNyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24o
Y29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIkBtZWRpYSIp
IHN0YXRlLnN0YWNrLnB1c2goIkBtZWRpYSIpOwogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiQGlt
cG9ydCIpIHN0YXRlLnN0YWNrLnB1c2goIkBpbXBvcnQiKTsKICAgICAgIGVsc2UgaWYgKGNvbnRl
eHQgPT0gIkBtZWRpYSIgJiYgL1xiKGtleXdvcmR8YXR0cmlidXRlKVxiLy50ZXN0KHN0eWxlKSkK
LSAgICAgICAgc3RhdGUuc3RhY2sucHVzaCgiQG1lZGlhVHlwZSIpOwotICAgICAgZWxzZSBpZiAo
Y29udGV4dCA9PSAiQG1lZGlhVHlwZSIgJiYgc3RyZWFtLmN1cnJlbnQoKSA9PSAiLCIpIHN0YXRl
LnN0YWNrLnBvcCgpOwotICAgICAgZWxzZSBpZiAoY29udGV4dCA9PSAiQG1lZGlhVHlwZSIgJiYg
dHlwZSA9PSAiKCIpIHN0YXRlLnN0YWNrLnB1c2goIkBtZWRpYVR5cGUoIik7Ci0gICAgICBlbHNl
IGlmIChjb250ZXh0ID09ICJAbWVkaWFUeXBlKCIgJiYgdHlwZSA9PSAiKSIpIHN0YXRlLnN0YWNr
LnBvcCgpOworICAgICAgICBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPSAiQG1l
ZGlhVHlwZSI7CisgICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJAbWVkaWFUeXBlIiAmJiBzdHJl
YW0uY3VycmVudCgpID09ICIsIikKKyAgICAgICAgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVu
Z3RoLTFdID0gIkBtZWRpYSI7CisgICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgeworICAgICAg
ICBpZiAoY29udGV4dCA9PSAiQG1lZGlhIiB8fCBjb250ZXh0ID09ICJAbWVkaWFUeXBlIikgewor
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSBAbWVkaWFUeXBlIGlzIHVzZWQgdG8gYXZvaWQgZXJyb3Ig
b24geworICAgICAgICAgIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9ICJAbWVk
aWFUeXBlIjsKKyAgICAgICAgICBzdGF0ZS5zdGFjay5wdXNoKCJAbWVkaWFUeXBlKCIpOworICAg
ICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmICh0eXBlID09ICIpIikgeworICAgICAgICBp
ZiAoY29udGV4dCA9PSAicHJvcGVydHlWYWx1ZSIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoLTJdID09ICJAbWVkaWFUeXBlKCIpIHsKKyAgICAgICAgICAvLyBJbiBAbWVkaWFUeXBl
KCB3aXRob3V0IGNsb3NpbmcgOyBhZnRlciBwcm9wZXJ0eVZhbHVlCisgICAgICAgICAgc3RhdGUu
c3RhY2sucG9wKCk7CisgICAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAoY29udGV4dCA9PSAiQG1lZGlhVHlwZSgiKSB7CisgICAgICAgICAgc3Rh
dGUuc3RhY2sucG9wKCk7CisgICAgICAgIH0KKyAgICAgIH0KICAgICAgIGVsc2UgaWYgKHR5cGUg
PT0gIjoiICYmIHN0YXRlLmxhc3RUb2tlbiA9PSAicHJvcGVydHkiKSBzdGF0ZS5zdGFjay5wdXNo
KCJwcm9wZXJ0eVZhbHVlIik7CiAgICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJwcm9wZXJ0eVZh
bHVlIiAmJiB0eXBlID09ICI7Iikgc3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICBlbHNlIGlmIChj
b250ZXh0ID09ICJAaW1wb3J0IiAmJiB0eXBlID09ICI7Iikgc3RhdGUuc3RhY2sucG9wKCk7CisK
ICAgICAgIHJldHVybiBzdGF0ZS5sYXN0VG9rZW4gPSBzdHlsZTsKICAgICB9LAogCiAgICAgaW5k
ZW50OiBmdW5jdGlvbihzdGF0ZSwgdGV4dEFmdGVyKSB7CiAgICAgICB2YXIgbiA9IHN0YXRlLnN0
YWNrLmxlbmd0aDsKICAgICAgIGlmICgvXlx9Ly50ZXN0KHRleHRBZnRlcikpCi0gICAgICAgIG4g
LT0gc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09ICJwcm9wZXJ0eVZhbHVlIiA/
IDIgOiAxOworICAgICAgICBuIC09IHN0YXRlLnN0YWNrW24tMV0gPT0gInByb3BlcnR5VmFsdWUi
ID8gMiA6IDE7CiAgICAgICByZXR1cm4gc3RhdGUuYmFzZUluZGVudCArIG4gKiBpbmRlbnRVbml0
OwogICAgIH0sCiAKQEAgLTM1MSw4ICszNjYsOCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNz
cy1iYXNlIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAiZHJvcC1pbml0
aWFsLWJlZm9yZS1hbGlnbiIsICJkcm9wLWluaXRpYWwtc2l6ZSIsICJkcm9wLWluaXRpYWwtdmFs
dWUiLAogICAgICJlbGV2YXRpb24iLCAiZW1wdHktY2VsbHMiLCAiZml0IiwgImZpdC1wb3NpdGlv
biIsICJmbGV4IiwgImZsZXgtYmFzaXMiLAogICAgICJmbGV4LWRpcmVjdGlvbiIsICJmbGV4LWZs
b3ciLCAiZmxleC1ncm93IiwgImZsZXgtc2hyaW5rIiwgImZsZXgtd3JhcCIsCi0gICAgImZsb2F0
IiwgImZsb2F0LW9mZnNldCIsICJmb250IiwgImZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsICJmb250
LWZhbWlseSIsCi0gICAgImZvbnQta2VybmluZyIsICJmb250LWxhbmd1YWdlLW92ZXJyaWRlIiwg
ImZvbnQtc2l6ZSIsICJmb250LXNpemUtYWRqdXN0IiwKKyAgICAiZmxvYXQiLCAiZmxvYXQtb2Zm
c2V0IiwgImZsb3ctZnJvbSIsICJmbG93LWludG8iLCAiZm9udCIsICJmb250LWZlYXR1cmUtc2V0
dGluZ3MiLAorICAgICJmb250LWZhbWlseSIsICJmb250LWtlcm5pbmciLCAiZm9udC1sYW5ndWFn
ZS1vdmVycmlkZSIsICJmb250LXNpemUiLCAiZm9udC1zaXplLWFkanVzdCIsCiAgICAgImZvbnQt
c3RyZXRjaCIsICJmb250LXN0eWxlIiwgImZvbnQtc3ludGhlc2lzIiwgImZvbnQtdmFyaWFudCIs
CiAgICAgImZvbnQtdmFyaWFudC1hbHRlcm5hdGVzIiwgImZvbnQtdmFyaWFudC1jYXBzIiwgImZv
bnQtdmFyaWFudC1lYXN0LWFzaWFuIiwKICAgICAiZm9udC12YXJpYW50LWxpZ2F0dXJlcyIsICJm
b250LXZhcmlhbnQtbnVtZXJpYyIsICJmb250LXZhcmlhbnQtcG9zaXRpb24iLApAQCAtMzc2LDI1
ICszOTEsMjcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNv
bmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgInBhZ2UiLCAicGFnZS1icmVhay1hZnRlciIsICJw
YWdlLWJyZWFrLWJlZm9yZSIsICJwYWdlLWJyZWFrLWluc2lkZSIsCiAgICAgInBhZ2UtcG9saWN5
IiwgInBhdXNlIiwgInBhdXNlLWFmdGVyIiwgInBhdXNlLWJlZm9yZSIsICJwZXJzcGVjdGl2ZSIs
CiAgICAgInBlcnNwZWN0aXZlLW9yaWdpbiIsICJwaXRjaCIsICJwaXRjaC1yYW5nZSIsICJwbGF5
LWR1cmluZyIsICJwb3NpdGlvbiIsCi0gICAgInByZXNlbnRhdGlvbi1sZXZlbCIsICJwdW5jdHVh
dGlvbi10cmltIiwgInF1b3RlcyIsICJyZW5kZXJpbmctaW50ZW50IiwKLSAgICAicmVzaXplIiwg
InJlc3QiLCAicmVzdC1hZnRlciIsICJyZXN0LWJlZm9yZSIsICJyaWNobmVzcyIsICJyaWdodCIs
Ci0gICAgInJvdGF0aW9uIiwgInJvdGF0aW9uLXBvaW50IiwgInJ1YnktYWxpZ24iLCAicnVieS1v
dmVyaGFuZyIsCi0gICAgInJ1YnktcG9zaXRpb24iLCAicnVieS1zcGFuIiwgInNpemUiLCAic3Bl
YWsiLCAic3BlYWstYXMiLCAic3BlYWstaGVhZGVyIiwKKyAgICAicHJlc2VudGF0aW9uLWxldmVs
IiwgInB1bmN0dWF0aW9uLXRyaW0iLCAicXVvdGVzIiwgInJlZ2lvbi1icmVhay1hZnRlciIsCisg
ICAgInJlZ2lvbi1icmVhay1iZWZvcmUiLCAicmVnaW9uLWJyZWFrLWluc2lkZSIsICJyZWdpb24t
ZnJhZ21lbnQiLAorICAgICJyZW5kZXJpbmctaW50ZW50IiwgInJlc2l6ZSIsICJyZXN0IiwgInJl
c3QtYWZ0ZXIiLCAicmVzdC1iZWZvcmUiLCAicmljaG5lc3MiLAorICAgICJyaWdodCIsICJyb3Rh
dGlvbiIsICJyb3RhdGlvbi1wb2ludCIsICJydWJ5LWFsaWduIiwgInJ1Ynktb3ZlcmhhbmciLAor
ICAgICJydWJ5LXBvc2l0aW9uIiwgInJ1Ynktc3BhbiIsICJzaGFwZS1pbnNpZGUiLCAic2hhcGUt
b3V0c2lkZSIsICJzaXplIiwKKyAgICAic3BlYWsiLCAic3BlYWstYXMiLCAic3BlYWstaGVhZGVy
IiwKICAgICAic3BlYWstbnVtZXJhbCIsICJzcGVhay1wdW5jdHVhdGlvbiIsICJzcGVlY2gtcmF0
ZSIsICJzdHJlc3MiLCAic3RyaW5nLXNldCIsCiAgICAgInRhYi1zaXplIiwgInRhYmxlLWxheW91
dCIsICJ0YXJnZXQiLCAidGFyZ2V0LW5hbWUiLCAidGFyZ2V0LW5ldyIsCiAgICAgInRhcmdldC1w
b3NpdGlvbiIsICJ0ZXh0LWFsaWduIiwgInRleHQtYWxpZ24tbGFzdCIsICJ0ZXh0LWRlY29yYXRp
b24iLAogICAgICJ0ZXh0LWRlY29yYXRpb24tY29sb3IiLCAidGV4dC1kZWNvcmF0aW9uLWxpbmUi
LCAidGV4dC1kZWNvcmF0aW9uLXNraXAiLAogICAgICJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiLCAi
dGV4dC1lbXBoYXNpcyIsICJ0ZXh0LWVtcGhhc2lzLWNvbG9yIiwKICAgICAidGV4dC1lbXBoYXNp
cy1wb3NpdGlvbiIsICJ0ZXh0LWVtcGhhc2lzLXN0eWxlIiwgInRleHQtaGVpZ2h0IiwKLSAgICAi
dGV4dC1pbmRlbnQiLCAidGV4dC1qdXN0aWZ5IiwgInRleHQtb3V0bGluZSIsICJ0ZXh0LXNoYWRv
dyIsCi0gICAgInRleHQtc3BhY2UtY29sbGFwc2UiLCAidGV4dC10cmFuc2Zvcm0iLCAidGV4dC11
bmRlcmxpbmUtcG9zaXRpb24iLAorICAgICJ0ZXh0LWluZGVudCIsICJ0ZXh0LWp1c3RpZnkiLCAi
dGV4dC1vdXRsaW5lIiwgInRleHQtb3ZlcmZsb3ciLCAidGV4dC1zaGFkb3ciLAorICAgICJ0ZXh0
LXNpemUtYWRqdXN0IiwgInRleHQtc3BhY2UtY29sbGFwc2UiLCAidGV4dC10cmFuc2Zvcm0iLCAi
dGV4dC11bmRlcmxpbmUtcG9zaXRpb24iLAogICAgICJ0ZXh0LXdyYXAiLCAidG9wIiwgInRyYW5z
Zm9ybSIsICJ0cmFuc2Zvcm0tb3JpZ2luIiwgInRyYW5zZm9ybS1zdHlsZSIsCiAgICAgInRyYW5z
aXRpb24iLCAidHJhbnNpdGlvbi1kZWxheSIsICJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwKICAgICAi
dHJhbnNpdGlvbi1wcm9wZXJ0eSIsICJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsICJ1bmlj
b2RlLWJpZGkiLAogICAgICJ2ZXJ0aWNhbC1hbGlnbiIsICJ2aXNpYmlsaXR5IiwgInZvaWNlLWJh
bGFuY2UiLCAidm9pY2UtZHVyYXRpb24iLAogICAgICJ2b2ljZS1mYW1pbHkiLCAidm9pY2UtcGl0
Y2giLCAidm9pY2UtcmFuZ2UiLCAidm9pY2UtcmF0ZSIsICJ2b2ljZS1zdHJlc3MiLAogICAgICJ2
b2ljZS12b2x1bWUiLCAidm9sdW1lIiwgIndoaXRlLXNwYWNlIiwgIndpZG93cyIsICJ3aWR0aCIs
ICJ3b3JkLWJyZWFrIiwKLSAgICAid29yZC1zcGFjaW5nIiwgIndvcmQtd3JhcCIsICJ6LWluZGV4
IiwKKyAgICAid29yZC1zcGFjaW5nIiwgIndvcmQtd3JhcCIsICJ6LWluZGV4IiwgInpvb20iLAog
ICAgIC8vIFNWRy1zcGVjaWZpYwogICAgICJjbGlwLXBhdGgiLCAiY2xpcC1ydWxlIiwgIm1hc2si
LCAiZW5hYmxlLWJhY2tncm91bmQiLCAiZmlsdGVyIiwgImZsb29kLWNvbG9yIiwKICAgICAiZmxv
b2Qtb3BhY2l0eSIsICJsaWdodGluZy1jb2xvciIsICJzdG9wLWNvbG9yIiwgInN0b3Atb3BhY2l0
eSIsICJwb2ludGVyLWV2ZW50cyIsCkBAIC00MTcsNyArNDM0LDcgQEAgQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAg
ImRhcmtzbGF0ZWJsdWUiLCAiZGFya3NsYXRlZ3JheSIsICJkYXJrdHVycXVvaXNlIiwgImRhcmt2
aW9sZXQiLAogICAgICJkZWVwcGluayIsICJkZWVwc2t5Ymx1ZSIsICJkaW1ncmF5IiwgImRvZGdl
cmJsdWUiLCAiZmlyZWJyaWNrIiwKICAgICAiZmxvcmFsd2hpdGUiLCAiZm9yZXN0Z3JlZW4iLCAi
ZnVjaHNpYSIsICJnYWluc2Jvcm8iLCAiZ2hvc3R3aGl0ZSIsCi0gICAgImdvbGQiLCAiZ29sZGVu
cm9kIiwgImdyYXkiLCAiZ3JlZW4iLCAiZ3JlZW55ZWxsb3ciLCAiaG9uZXlkZXciLAorICAgICJn
b2xkIiwgImdvbGRlbnJvZCIsICJncmF5IiwgImdyZXkiLCAiZ3JlZW4iLCAiZ3JlZW55ZWxsb3ci
LCAiaG9uZXlkZXciLAogICAgICJob3RwaW5rIiwgImluZGlhbnJlZCIsICJpbmRpZ28iLCAiaXZv
cnkiLCAia2hha2kiLCAibGF2ZW5kZXIiLAogICAgICJsYXZlbmRlcmJsdXNoIiwgImxhd25ncmVl
biIsICJsZW1vbmNoaWZmb24iLCAibGlnaHRibHVlIiwgImxpZ2h0Y29yYWwiLAogICAgICJsaWdo
dGN5YW4iLCAibGlnaHRnb2xkZW5yb2R5ZWxsb3ciLCAibGlnaHRncmF5IiwgImxpZ2h0Z3JlZW4i
LCAibGlnaHRwaW5rIiwKQEAgLTQ0MCwyMiArNDU3LDIyIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9k
ZSgiY3NzLWJhc2UiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICJhYm92
ZSIsICJhYnNvbHV0ZSIsICJhY3RpdmVib3JkZXIiLCAiYWN0aXZlY2FwdGlvbiIsICJhZmFyIiwK
ICAgICAiYWZ0ZXItd2hpdGUtc3BhY2UiLCAiYWhlYWQiLCAiYWxpYXMiLCAiYWxsIiwgImFsbC1z
Y3JvbGwiLCAiYWx0ZXJuYXRlIiwKICAgICAiYWx3YXlzIiwgImFtaGFyaWMiLCAiYW1oYXJpYy1h
YmVnZWRlIiwgImFudGlhbGlhc2VkIiwgImFwcHdvcmtzcGFjZSIsCi0gICAgImFyYWJpYy1pbmRp
YyIsICJhcm1lbmlhbiIsICJhc3Rlcmlza3MiLCAiYXV0byIsICJhdm9pZCIsICJiYWNrZ3JvdW5k
IiwKLSAgICAiYmFja3dhcmRzIiwgImJhc2VsaW5lIiwgImJlbG93IiwgImJpZGktb3ZlcnJpZGUi
LCAiYmluYXJ5IiwgImJlbmdhbGkiLAotICAgICJibGluayIsICJibG9jayIsICJibG9jay1heGlz
IiwgImJvbGQiLCAiYm9sZGVyIiwgImJvcmRlciIsICJib3JkZXItYm94IiwKLSAgICAiYm90aCIs
ICJib3R0b20iLCAiYnJlYWstYWxsIiwgImJyZWFrLXdvcmQiLCAiYnV0dG9uIiwgImJ1dHRvbi1i
ZXZlbCIsCisgICAgImFyYWJpYy1pbmRpYyIsICJhcm1lbmlhbiIsICJhc3Rlcmlza3MiLCAiYXV0
byIsICJhdm9pZCIsICJhdm9pZC1jb2x1bW4iLCAiYXZvaWQtcGFnZSIsCisgICAgImF2b2lkLXJl
Z2lvbiIsICJiYWNrZ3JvdW5kIiwgImJhY2t3YXJkcyIsICJiYXNlbGluZSIsICJiZWxvdyIsICJi
aWRpLW92ZXJyaWRlIiwgImJpbmFyeSIsCisgICAgImJlbmdhbGkiLCAiYmxpbmsiLCAiYmxvY2si
LCAiYmxvY2stYXhpcyIsICJib2xkIiwgImJvbGRlciIsICJib3JkZXIiLCAiYm9yZGVyLWJveCIs
CisgICAgImJvdGgiLCAiYm90dG9tIiwgImJyZWFrIiwgImJyZWFrLWFsbCIsICJicmVhay13b3Jk
IiwgImJ1dHRvbiIsICJidXR0b24tYmV2ZWwiLAogICAgICJidXR0b25mYWNlIiwgImJ1dHRvbmhp
Z2hsaWdodCIsICJidXR0b25zaGFkb3ciLCAiYnV0dG9udGV4dCIsICJjYW1ib2RpYW4iLAogICAg
ICJjYXBpdGFsaXplIiwgImNhcHMtbG9jay1pbmRpY2F0b3IiLCAiY2FwdGlvbiIsICJjYXB0aW9u
dGV4dCIsICJjYXJldCIsCiAgICAgImNlbGwiLCAiY2VudGVyIiwgImNoZWNrYm94IiwgImNpcmNs
ZSIsICJjamstZWFydGhseS1icmFuY2giLAogICAgICJjamstaGVhdmVubHktc3RlbSIsICJjamst
aWRlb2dyYXBoaWMiLCAiY2xlYXIiLCAiY2xpcCIsICJjbG9zZS1xdW90ZSIsCi0gICAgImNvbC1y
ZXNpemUiLCAiY29sbGFwc2UiLCAiY29tcGFjdCIsICJjb25kZW5zZWQiLCAiY29udGFpbiIsICJj
b250ZW50IiwKKyAgICAiY29sLXJlc2l6ZSIsICJjb2xsYXBzZSIsICJjb2x1bW4iLCAiY29tcGFj
dCIsICJjb25kZW5zZWQiLCAiY29udGFpbiIsICJjb250ZW50IiwKICAgICAiY29udGVudC1ib3gi
LCAiY29udGV4dC1tZW51IiwgImNvbnRpbnVvdXMiLCAiY29weSIsICJjb3ZlciIsICJjcm9wIiwK
ICAgICAiY3Jvc3MiLCAiY3Jvc3NoYWlyIiwgImN1cnJlbnRjb2xvciIsICJjdXJzaXZlIiwgImRh
c2hlZCIsICJkZWNpbWFsIiwKICAgICAiZGVjaW1hbC1sZWFkaW5nLXplcm8iLCAiZGVmYXVsdCIs
ICJkZWZhdWx0LWJ1dHRvbiIsICJkZXN0aW5hdGlvbi1hdG9wIiwKICAgICAiZGVzdGluYXRpb24t
aW4iLCAiZGVzdGluYXRpb24tb3V0IiwgImRlc3RpbmF0aW9uLW92ZXIiLCAiZGV2YW5hZ2FyaSIs
CiAgICAgImRpc2MiLCAiZGlzY2FyZCIsICJkb2N1bWVudCIsICJkb3QtZGFzaCIsICJkb3QtZG90
LWRhc2giLCAiZG90dGVkIiwKICAgICAiZG91YmxlIiwgImRvd24iLCAiZS1yZXNpemUiLCAiZWFz
ZSIsICJlYXNlLWluIiwgImVhc2UtaW4tb3V0IiwgImVhc2Utb3V0IiwKLSAgICAiZWxlbWVudCIs
ICJlbGxpcHNpcyIsICJlbWJlZCIsICJlbmQiLCAiZXRoaW9waWMiLCAiZXRoaW9waWMtYWJlZ2Vk
ZSIsCisgICAgImVsZW1lbnQiLCAiZWxsaXBzZSIsICJlbGxpcHNpcyIsICJlbWJlZCIsICJlbmQi
LCAiZXRoaW9waWMiLCAiZXRoaW9waWMtYWJlZ2VkZSIsCiAgICAgImV0aGlvcGljLWFiZWdlZGUt
YW0tZXQiLCAiZXRoaW9waWMtYWJlZ2VkZS1nZXoiLCAiZXRoaW9waWMtYWJlZ2VkZS10aS1lciIs
CiAgICAgImV0aGlvcGljLWFiZWdlZGUtdGktZXQiLCAiZXRoaW9waWMtaGFsZWhhbWUtYWEtZXIi
LAogICAgICJldGhpb3BpYy1oYWxlaGFtZS1hYS1ldCIsICJldGhpb3BpYy1oYWxlaGFtZS1hbS1l
dCIsCkBAIC00NzEsNyArNDg4LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIs
IGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgImluYWN0aXZlYm9yZGVyIiwg
ImluYWN0aXZlY2FwdGlvbiIsICJpbmFjdGl2ZWNhcHRpb250ZXh0IiwgImluZmluaXRlIiwKICAg
ICAiaW5mb2JhY2tncm91bmQiLCAiaW5mb3RleHQiLCAiaW5oZXJpdCIsICJpbml0aWFsIiwgImlu
bGluZSIsICJpbmxpbmUtYXhpcyIsCiAgICAgImlubGluZS1ibG9jayIsICJpbmxpbmUtdGFibGUi
LCAiaW5zZXQiLCAiaW5zaWRlIiwgImludHJpbnNpYyIsICJpbnZlcnQiLAotICAgICJpdGFsaWMi
LCAianVzdGlmeSIsICJrYW5uYWRhIiwgImthdGFrYW5hIiwgImthdGFrYW5hLWlyb2hhIiwgImto
bWVyIiwKKyAgICAiaXRhbGljIiwgImp1c3RpZnkiLCAia2FubmFkYSIsICJrYXRha2FuYSIsICJr
YXRha2FuYS1pcm9oYSIsICJrZWVwLWFsbCIsICJraG1lciIsCiAgICAgImxhbmRzY2FwZSIsICJs
YW8iLCAibGFyZ2UiLCAibGFyZ2VyIiwgImxlZnQiLCAibGV2ZWwiLCAibGlnaHRlciIsCiAgICAg
ImxpbmUtdGhyb3VnaCIsICJsaW5lYXIiLCAibGluZXMiLCAibGlzdC1pdGVtIiwgImxpc3Rib3gi
LCAibGlzdGl0ZW0iLAogICAgICJsb2NhbCIsICJsb2dpY2FsIiwgImxvdWQiLCAibG93ZXIiLCAi
bG93ZXItYWxwaGEiLCAibG93ZXItYXJtZW5pYW4iLApAQCAtNDkwLDExICs1MDcsMTEgQEAgQ29k
ZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29u
ZmlnKSB7CiAgICAgIm5vLW9wZW4tcXVvdGUiLCAibm8tcmVwZWF0IiwgIm5vbmUiLCAibm9ybWFs
IiwgIm5vdC1hbGxvd2VkIiwgIm5vd3JhcCIsCiAgICAgIm5zLXJlc2l6ZSIsICJudy1yZXNpemUi
LCAibndzZS1yZXNpemUiLCAib2JsaXF1ZSIsICJvY3RhbCIsICJvcGVuLXF1b3RlIiwKICAgICAi
b3B0aW1pemVMZWdpYmlsaXR5IiwgIm9wdGltaXplU3BlZWQiLCAib3JpeWEiLCAib3JvbW8iLCAi
b3V0c2V0IiwKLSAgICAib3V0c2lkZSIsICJvdmVybGF5IiwgIm92ZXJsaW5lIiwgInBhZGRpbmci
LCAicGFkZGluZy1ib3giLCAicGFpbnRlZCIsCi0gICAgInBhdXNlZCIsICJwZXJzaWFuIiwgInBs
dXMtZGFya2VyIiwgInBsdXMtbGlnaHRlciIsICJwb2ludGVyIiwgInBvcnRyYWl0IiwKLSAgICAi
cHJlIiwgInByZS1saW5lIiwgInByZS13cmFwIiwgInByZXNlcnZlLTNkIiwgInByb2dyZXNzIiwg
InB1c2gtYnV0dG9uIiwKLSAgICAicmFkaW8iLCAicmVhZC1vbmx5IiwgInJlYWQtd3JpdGUiLCAi
cmVhZC13cml0ZS1wbGFpbnRleHQtb25seSIsICJyZWxhdGl2ZSIsCi0gICAgInJlcGVhdCIsICJy
ZXBlYXQteCIsICJyZXBlYXQteSIsICJyZXNldCIsICJyZXZlcnNlIiwgInJnYiIsICJyZ2JhIiwK
KyAgICAib3V0c2lkZSIsICJvdXRzaWRlLXNoYXBlIiwgIm92ZXJsYXkiLCAib3ZlcmxpbmUiLCAi
cGFkZGluZyIsICJwYWRkaW5nLWJveCIsCisgICAgInBhaW50ZWQiLCAicGFnZSIsICJwYXVzZWQi
LCAicGVyc2lhbiIsICJwbHVzLWRhcmtlciIsICJwbHVzLWxpZ2h0ZXIiLCAicG9pbnRlciIsCisg
ICAgInBvbHlnb24iLCAicG9ydHJhaXQiLCAicHJlIiwgInByZS1saW5lIiwgInByZS13cmFwIiwg
InByZXNlcnZlLTNkIiwgInByb2dyZXNzIiwgInB1c2gtYnV0dG9uIiwKKyAgICAicmFkaW8iLCAi
cmVhZC1vbmx5IiwgInJlYWQtd3JpdGUiLCAicmVhZC13cml0ZS1wbGFpbnRleHQtb25seSIsICJy
ZWN0YW5nbGUiLCAicmVnaW9uIiwKKyAgICAicmVsYXRpdmUiLCAicmVwZWF0IiwgInJlcGVhdC14
IiwgInJlcGVhdC15IiwgInJlc2V0IiwgInJldmVyc2UiLCAicmdiIiwgInJnYmEiLAogICAgICJy
aWRnZSIsICJyaWdodCIsICJyb3VuZCIsICJyb3ctcmVzaXplIiwgInJ0bCIsICJydW4taW4iLCAi
cnVubmluZyIsCiAgICAgInMtcmVzaXplIiwgInNhbnMtc2VyaWYiLCAic2Nyb2xsIiwgInNjcm9s
bGJhciIsICJzZS1yZXNpemUiLCAic2VhcmNoZmllbGQiLAogICAgICJzZWFyY2hmaWVsZC1jYW5j
ZWwtYnV0dG9uIiwgInNlYXJjaGZpZWxkLWRlY29yYXRpb24iLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2phdmFzY3JpcHQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qcwppbmRl
eCAzZDA0NjAzLi5lOGFjZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9v
bHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qcwpAQCAtNzgsMTggKzc4LDE5IEBA
IENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFy
c2VyQ29uZmlnKSB7CiAgICAgdHlwZSA9IHRwOyBjb250ZW50ID0gY29udDsKICAgICByZXR1cm4g
c3R5bGU7CiAgIH0KLQogICBmdW5jdGlvbiBqc1Rva2VuQmFzZShzdHJlYW0sIHN0YXRlKSB7CiAg
ICAgdmFyIGNoID0gc3RyZWFtLm5leHQoKTsKICAgICBpZiAoY2ggPT0gJyInIHx8IGNoID09ICIn
IikKICAgICAgIHJldHVybiBjaGFpbihzdHJlYW0sIHN0YXRlLCBqc1Rva2VuU3RyaW5nKGNoKSk7
CisgICAgZWxzZSBpZiAoY2ggPT0gIi4iICYmIHN0cmVhbS5tYXRjaCgvXlxkKyg/OltlRV1bK1wt
XT9cZCspPy8pKQorICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIpOwogICAgIGVs
c2UgaWYgKC9bXFtcXXt9XChcKSw7XDpcLl0vLnRlc3QoY2gpKQogICAgICAgcmV0dXJuIHJldChj
aCk7CiAgICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIHN0cmVhbS5lYXQoL3gvaSkpIHsKICAgICAg
IHN0cmVhbS5lYXRXaGlsZSgvW1xkYS1mXS9pKTsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIs
ICJudW1iZXIiKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSB8fCBjaCA9PSAi
LSIgJiYgc3RyZWFtLmVhdCgvXGQvKSkgeworICAgIGVsc2UgaWYgKC9cZC8udGVzdChjaCkpIHsK
ICAgICAgIHN0cmVhbS5tYXRjaCgvXlxkKig/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vKTsK
ICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIiKTsKICAgICB9CkBAIC0yOTksMTQg
KzMwMCwxNSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihj
b25maWcsIHBhcnNlckNvbmZpZykgewogCiAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3JDb21tYSh0
eXBlLCB2YWx1ZSkgewogICAgIGlmICh0eXBlID09ICIsIikgcmV0dXJuIGNvbnQoZXhwcmVzc2lv
bik7Ci0gICAgcmV0dXJuIG1heWJlb3BlcmF0b3JOb0NvbW1hKHR5cGUsIHZhbHVlLCBtYXliZW9w
ZXJhdG9yQ29tbWEpOworICAgIHJldHVybiBtYXliZW9wZXJhdG9yTm9Db21tYSh0eXBlLCB2YWx1
ZSwgZmFsc2UpOwogICB9Ci0gIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3JOb0NvbW1hKHR5cGUsIHZh
bHVlLCBtZSkgewotICAgIGlmICghbWUpIG1lID0gbWF5YmVvcGVyYXRvck5vQ29tbWE7CisgIGZ1
bmN0aW9uIG1heWJlb3BlcmF0b3JOb0NvbW1hKHR5cGUsIHZhbHVlLCBub0NvbW1hKSB7CisgICAg
dmFyIG1lID0gbm9Db21tYSA9PSBmYWxzZSA/IG1heWJlb3BlcmF0b3JDb21tYSA6IG1heWJlb3Bl
cmF0b3JOb0NvbW1hOworICAgIHZhciBleHByID0gbm9Db21tYSA9PSBmYWxzZSA/IGV4cHJlc3Np
b24gOiBleHByZXNzaW9uTm9Db21tYTsKICAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiKSB7CiAg
ICAgICBpZiAoL1wrXCt8LS0vLnRlc3QodmFsdWUpKSByZXR1cm4gY29udChtZSk7Ci0gICAgICBp
ZiAodmFsdWUgPT0gIj8iKSByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjoiKSwgZXhw
cmVzc2lvbik7Ci0gICAgICByZXR1cm4gY29udChleHByZXNzaW9uKTsKKyAgICAgIGlmICh2YWx1
ZSA9PSAiPyIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiOiIpLCBleHByKTsKKyAg
ICAgIHJldHVybiBjb250KGV4cHIpOwogICAgIH0KICAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVy
bjsKICAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiLCAiY2FsbCIp
LCBjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIikiKSwgcG9wbGV4LCBtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWly
cm9yL2NvZGVtaXJyb3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcwppbmRleCA1Mjg4MWY3Li5jOTVkYjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5h
bC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3MKQEAgLTk1LDYg
Kzk1LDcgQEAKIAogZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW1hdGNoaW5nYnJhY2tl
dCB7Y29sb3I6ICMwZjA7fQogZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNo
aW5nYnJhY2tldCB7Y29sb3I6ICNmMjI7fQorLkNvZGVNaXJyb3ItYWN0aXZlbGluZS1iYWNrZ3Jv
dW5kIHtiYWNrZ3JvdW5kOiAjZThmMmZmO30KIAogLyogU1RPUCAqLwogCkBAIC0xOTIsNiArMTkz
LDE2IEBAIGRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1ub25tYXRjaGluZ2JyYWNrZXQg
e2NvbG9yOiAjZjIyO30KICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICB3b3JkLWJyZWFrOiBu
b3JtYWw7CiB9CisuQ29kZU1pcnJvci1jb2RlIHByZSB7CisgIGJvcmRlci1yaWdodDogMzBweCBz
b2xpZCB0cmFuc3BhcmVudDsKKyAgd2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQ7CisgIHdpZHRo
OiAtbW96LWZpdC1jb250ZW50OworICB3aWR0aDogZml0LWNvbnRlbnQ7Cit9CisuQ29kZU1pcnJv
ci13cmFwIC5Db2RlTWlycm9yLWNvZGUgcHJlIHsKKyAgYm9yZGVyLXJpZ2h0OiBub25lOworICB3
aWR0aDogYXV0bzsKK30KIC5Db2RlTWlycm9yLWxpbmViYWNrZ3JvdW5kIHsKICAgcG9zaXRpb246
IGFic29sdXRlOwogICBsZWZ0OiAwOyByaWdodDogMDsgdG9wOiAwOyBib3R0b206IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2Rl
TWlycm9yL2NvZGVtaXJyb3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanMKaW5kZXggZmZmNDM0NC4uYmMyMzhh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJu
YWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5qcwpAQCAtMjQsMTAg
KzI0LDExIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBUaGlzIGlz
IHdvZWZ1bGx5IGluY29tcGxldGUuIFN1Z2dlc3Rpb25zIGZvciBhbHRlcm5hdGl2ZSBtZXRob2Rz
IHdlbGNvbWUuCiAgIHZhciBtb2JpbGUgPSBpb3MgfHwgL0FuZHJvaWR8d2ViT1N8QmxhY2tCZXJy
eXxPcGVyYSBNaW5pfE9wZXJhIE1vYml8SUVNb2JpbGUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdl
bnQpOwogICB2YXIgbWFjID0gaW9zIHx8IC9NYWMvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTsK
LSAgdmFyIHdpbmRvd3MgPSAvd2luZG93cy9pLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKTsKKyAg
dmFyIHdpbmRvd3MgPSAvd2luL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pOwogCiAgIHZhciBv
cGVyYV92ZXJzaW9uID0gb3BlcmEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVmVyc2lv
blwvKFxkKlwuXGQqKS8pOwogICBpZiAob3BlcmFfdmVyc2lvbikgb3BlcmFfdmVyc2lvbiA9IE51
bWJlcihvcGVyYV92ZXJzaW9uWzFdKTsKKyAgaWYgKG9wZXJhX3ZlcnNpb24gJiYgb3BlcmFfdmVy
c2lvbiA+PSAxNSkgeyBvcGVyYSA9IGZhbHNlOyB3ZWJraXQgPSB0cnVlOyB9CiAgIC8vIFNvbWUg
YnJvd3NlcnMgdXNlIHRoZSB3cm9uZyBldmVudCBwcm9wZXJ0aWVzIHRvIHNpZ25hbCBjbWQvY3Ry
bCBvbiBPUyBYCiAgIHZhciBmbGlwQ3RybENtZCA9IG1hYyAmJiAocXR3ZWJraXQgfHwgb3BlcmEg
JiYgKG9wZXJhX3ZlcnNpb24gPT0gbnVsbCB8fCBvcGVyYV92ZXJzaW9uIDwgMTIuMTEpKTsKICAg
dmFyIGNhcHR1cmVNaWRkbGVDbGljayA9IGdlY2tvIHx8IChpZSAmJiAhaWVfbHQ5KTsKQEAgLTMz
MSwxMyArMzMyLDE5IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAg
ZC5zY3JvbGxiYXJWLnN0eWxlLmJvdHRvbSA9IG5lZWRzSCA/IHNjcm9sbGJhcldpZHRoKGQubWVh
c3VyZSkgKyAicHgiIDogIjAiOwogICAgICAgZC5zY3JvbGxiYXJWLmZpcnN0Q2hpbGQuc3R5bGUu
aGVpZ2h0ID0KICAgICAgICAgKHNjcm9sbEhlaWdodCAtIGQuc2Nyb2xsZXIuY2xpZW50SGVpZ2h0
ICsgZC5zY3JvbGxiYXJWLmNsaWVudEhlaWdodCkgKyAicHgiOwotICAgIH0gZWxzZSBkLnNjcm9s
bGJhclYuc3R5bGUuZGlzcGxheSA9ICIiOworICAgIH0gZWxzZSB7CisgICAgICBkLnNjcm9sbGJh
clYuc3R5bGUuZGlzcGxheSA9ICIiOworICAgICAgZC5zY3JvbGxiYXJWLmZpcnN0Q2hpbGQuc3R5
bGUuaGVpZ2h0ID0gIjAiOworICAgIH0KICAgICBpZiAobmVlZHNIKSB7CiAgICAgICBkLnNjcm9s
bGJhckguc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICBkLnNjcm9sbGJhckguc3R5bGUu
cmlnaHQgPSBuZWVkc1YgPyBzY3JvbGxiYXJXaWR0aChkLm1lYXN1cmUpICsgInB4IiA6ICIwIjsK
ICAgICAgIGQuc2Nyb2xsYmFySC5maXJzdENoaWxkLnN0eWxlLndpZHRoID0KICAgICAgICAgKGQu
c2Nyb2xsZXIuc2Nyb2xsV2lkdGggLSBkLnNjcm9sbGVyLmNsaWVudFdpZHRoICsgZC5zY3JvbGxi
YXJILmNsaWVudFdpZHRoKSArICJweCI7Ci0gICAgfSBlbHNlIGQuc2Nyb2xsYmFySC5zdHlsZS5k
aXNwbGF5ID0gIiI7CisgICAgfSBlbHNlIHsKKyAgICAgIGQuc2Nyb2xsYmFySC5zdHlsZS5kaXNw
bGF5ID0gIiI7CisgICAgICBkLnNjcm9sbGJhckguZmlyc3RDaGlsZC5zdHlsZS53aWR0aCA9ICIw
IjsKKyAgICB9CiAgICAgaWYgKG5lZWRzSCAmJiBuZWVkc1YpIHsKICAgICAgIGQuc2Nyb2xsYmFy
RmlsbGVyLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgZC5zY3JvbGxiYXJGaWxsZXIu
c3R5bGUuaGVpZ2h0ID0gZC5zY3JvbGxiYXJGaWxsZXIuc3R5bGUud2lkdGggPSBzY3JvbGxiYXJX
aWR0aChkLm1lYXN1cmUpICsgInB4IjsKQEAgLTQwMSwxMSArNDA4LDEyIEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgIC8vIERJU1BMQVkgRFJBV0lORwogCi0gIGZ1bmN0
aW9uIHVwZGF0ZURpc3BsYXkoY20sIGNoYW5nZXMsIHZpZXdQb3J0KSB7CisgIGZ1bmN0aW9uIHVw
ZGF0ZURpc3BsYXkoY20sIGNoYW5nZXMsIHZpZXdQb3J0LCBmb3JjZWQpIHsKICAgICB2YXIgb2xk
RnJvbSA9IGNtLmRpc3BsYXkuc2hvd2luZ0Zyb20sIG9sZFRvID0gY20uZGlzcGxheS5zaG93aW5n
VG8sIHVwZGF0ZWQ7CiAgICAgdmFyIHZpc2libGUgPSB2aXNpYmxlTGluZXMoY20uZGlzcGxheSwg
Y20uZG9jLCB2aWV3UG9ydCk7CiAgICAgZm9yICg7OykgewotICAgICAgaWYgKCF1cGRhdGVEaXNw
bGF5SW5uZXIoY20sIGNoYW5nZXMsIHZpc2libGUpKSBicmVhazsKKyAgICAgIGlmICghdXBkYXRl
RGlzcGxheUlubmVyKGNtLCBjaGFuZ2VzLCB2aXNpYmxlLCBmb3JjZWQpKSBicmVhazsKKyAgICAg
IGZvcmNlZCA9IGZhbHNlOwogICAgICAgdXBkYXRlZCA9IHRydWU7CiAgICAgICB1cGRhdGVTZWxl
Y3Rpb24oY20pOwogICAgICAgdXBkYXRlU2Nyb2xsYmFycyhjbSk7CkBAIC00MzEsNyArNDM5LDcg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIFVzZXMgYSBzZXQgb2Yg
Y2hhbmdlcyBwbHVzIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB0bwogICAvLyBkZXRlcm1p
bmUgd2hpY2ggRE9NIHVwZGF0ZXMgaGF2ZSB0byBiZSBtYWRlLCBhbmQgbWFrZXMgdGhlCiAgIC8v
IHVwZGF0ZXMuCi0gIGZ1bmN0aW9uIHVwZGF0ZURpc3BsYXlJbm5lcihjbSwgY2hhbmdlcywgdmlz
aWJsZSkgeworICBmdW5jdGlvbiB1cGRhdGVEaXNwbGF5SW5uZXIoY20sIGNoYW5nZXMsIHZpc2li
bGUsIGZvcmNlZCkgewogICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgZG9jID0gY20uZG9j
OwogICAgIGlmICghZGlzcGxheS53cmFwcGVyLmNsaWVudFdpZHRoKSB7CiAgICAgICBkaXNwbGF5
LnNob3dpbmdGcm9tID0gZGlzcGxheS5zaG93aW5nVG8gPSBkb2MuZmlyc3Q7CkBAIC00NDAsNyAr
NDQ4LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgfQogCiAgICAg
Ly8gQmFpbCBvdXQgaWYgdGhlIHZpc2libGUgYXJlYSBpcyBhbHJlYWR5IHJlbmRlcmVkIGFuZCBu
b3RoaW5nIGNoYW5nZWQuCi0gICAgaWYgKGNoYW5nZXMubGVuZ3RoID09IDAgJiYKKyAgICBpZiAo
IWZvcmNlZCAmJiBjaGFuZ2VzLmxlbmd0aCA9PSAwICYmCiAgICAgICAgIHZpc2libGUuZnJvbSA+
IGRpc3BsYXkuc2hvd2luZ0Zyb20gJiYgdmlzaWJsZS50byA8IGRpc3BsYXkuc2hvd2luZ1RvKQog
ICAgICAgcmV0dXJuOwogCkBAIC00NTMsNyArNDYxLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAo
ZnVuY3Rpb24oKSB7CiAgICAgdmFyIHBvc2l0aW9uc0NoYW5nZWRGcm9tID0gSW5maW5pdHk7CiAg
ICAgaWYgKGNtLm9wdGlvbnMubGluZU51bWJlcnMpCiAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoYW5nZXMubGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChjaGFuZ2VzW2ldLmRpZmYpIHsgcG9z
aXRpb25zQ2hhbmdlZEZyb20gPSBjaGFuZ2VzW2ldLmZyb207IGJyZWFrOyB9CisgICAgICAgIGlm
IChjaGFuZ2VzW2ldLmRpZmYgJiYgY2hhbmdlc1tpXS5mcm9tIDwgcG9zaXRpb25zQ2hhbmdlZEZy
b20pIHsgcG9zaXRpb25zQ2hhbmdlZEZyb20gPSBjaGFuZ2VzW2ldLmZyb207IH0KIAogICAgIHZh
ciBlbmQgPSBkb2MuZmlyc3QgKyBkb2Muc2l6ZTsKICAgICB2YXIgZnJvbSA9IE1hdGgubWF4KHZp
c2libGUuZnJvbSAtIGNtLm9wdGlvbnMudmlld3BvcnRNYXJnaW4sIGRvYy5maXJzdCk7CkBAIC00
OTMsNyArNTAxLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBp
ZiAocmFuZ2UuZnJvbSA+PSByYW5nZS50bykgaW50YWN0LnNwbGljZShpLS0sIDEpOwogICAgICAg
ZWxzZSBpbnRhY3RMaW5lcyArPSByYW5nZS50byAtIHJhbmdlLmZyb207CiAgICAgfQotICAgIGlm
IChpbnRhY3RMaW5lcyA9PSB0byAtIGZyb20gJiYgZnJvbSA9PSBkaXNwbGF5LnNob3dpbmdGcm9t
ICYmIHRvID09IGRpc3BsYXkuc2hvd2luZ1RvKSB7CisgICAgaWYgKCFmb3JjZWQgJiYgaW50YWN0
TGluZXMgPT0gdG8gLSBmcm9tICYmIGZyb20gPT0gZGlzcGxheS5zaG93aW5nRnJvbSAmJiB0byA9
PSBkaXNwbGF5LnNob3dpbmdUbykgewogICAgICAgdXBkYXRlVmlld09mZnNldChjbSk7CiAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTE4LDYgKzUyNiwxNCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICB9CiAgICAgZGlzcGxheS5zaG93aW5nRnJvbSA9IGZyb207IGRp
c3BsYXkuc2hvd2luZ1RvID0gdG87CiAKKyAgICB1cGRhdGVIZWlnaHRzSW5WaWV3cG9ydChjbSk7
CisgICAgdXBkYXRlVmlld09mZnNldChjbSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCisg
IGZ1bmN0aW9uIHVwZGF0ZUhlaWdodHNJblZpZXdwb3J0KGNtKSB7CisgICAgdmFyIGRpc3BsYXkg
PSBjbS5kaXNwbGF5OwogICAgIHZhciBwcmV2Qm90dG9tID0gZGlzcGxheS5saW5lRGl2Lm9mZnNl
dFRvcDsKICAgICBmb3IgKHZhciBub2RlID0gZGlzcGxheS5saW5lRGl2LmZpcnN0Q2hpbGQsIGhl
aWdodDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcpIGlmIChub2RlLmxpbmVPYmopIHsK
ICAgICAgIGlmIChpZV9sdDgpIHsKQEAgLTUzNyw5ICs1NTMsNiBAQCB3aW5kb3cuQ29kZU1pcnJv
ciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICB3aWRnZXRzW2ldLmhlaWdodCA9IHdpZGdldHNb
aV0ubm9kZS5vZmZzZXRIZWlnaHQ7CiAgICAgICB9CiAgICAgfQotICAgIHVwZGF0ZVZpZXdPZmZz
ZXQoY20pOwotCi0gICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICBmdW5jdGlvbiB1cGRhdGVWaWV3
T2Zmc2V0KGNtKSB7CkBAIC02MDUsNyArNjE4LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgICBpZiAobmV4dEludGFjdCAmJiBuZXh0SW50YWN0LnRvID09IGxpbmVO
KSBuZXh0SW50YWN0ID0gaW50YWN0LnNoaWZ0KCk7CiAgICAgICBpZiAobGluZUlzSGlkZGVuKGNt
LmRvYywgbGluZSkpIHsKICAgICAgICAgaWYgKGxpbmUuaGVpZ2h0ICE9IDApIHVwZGF0ZUxpbmVI
ZWlnaHQobGluZSwgMCk7Ci0gICAgICAgIGlmIChsaW5lLndpZGdldHMgJiYgY3VyLnByZXZpb3Vz
U2libGluZykgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lLndpZGdldHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgaWYgKGxpbmUud2lkZ2V0cyAmJiBjdXIgJiYgY3VyLnByZXZpb3VzU2libGluZykg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lLndpZGdldHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAg
ICB2YXIgdyA9IGxpbmUud2lkZ2V0c1tpXTsKICAgICAgICAgICBpZiAody5zaG93SWZIaWRkZW4p
IHsKICAgICAgICAgICAgIHZhciBwcmV2ID0gY3VyLnByZXZpb3VzU2libGluZzsKQEAgLTg2NCw5
ICs4NzcsMTAgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgY2xlYXJJ
bnRlcnZhbChkaXNwbGF5LmJsaW5rZXIpOwogICAgIHZhciBvbiA9IHRydWU7CiAgICAgZGlzcGxh
eS5jdXJzb3Iuc3R5bGUudmlzaWJpbGl0eSA9IGRpc3BsYXkub3RoZXJDdXJzb3Iuc3R5bGUudmlz
aWJpbGl0eSA9ICIiOwotICAgIGRpc3BsYXkuYmxpbmtlciA9IHNldEludGVydmFsKGZ1bmN0aW9u
KCkgewotICAgICAgZGlzcGxheS5jdXJzb3Iuc3R5bGUudmlzaWJpbGl0eSA9IGRpc3BsYXkub3Ro
ZXJDdXJzb3Iuc3R5bGUudmlzaWJpbGl0eSA9IChvbiA9ICFvbikgPyAiIiA6ICJoaWRkZW4iOwot
ICAgIH0sIGNtLm9wdGlvbnMuY3Vyc29yQmxpbmtSYXRlKTsKKyAgICBpZiAoY20ub3B0aW9ucy5j
dXJzb3JCbGlua1JhdGUgPiAwKQorICAgICAgZGlzcGxheS5ibGlua2VyID0gc2V0SW50ZXJ2YWwo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGRpc3BsYXkuY3Vyc29yLnN0eWxlLnZpc2liaWxpdHkgPSBk
aXNwbGF5Lm90aGVyQ3Vyc29yLnN0eWxlLnZpc2liaWxpdHkgPSAob24gPSAhb24pID8gIiIgOiAi
aGlkZGVuIjsKKyAgICAgIH0sIGNtLm9wdGlvbnMuY3Vyc29yQmxpbmtSYXRlKTsKICAgfQogCiAg
IC8vIEhJR0hMSUdIVCBXT1JLRVIKQEAgLTkxNyw4ICs5MzEsOCBAQCB3aW5kb3cuQ29kZU1pcnJv
ciA9IChmdW5jdGlvbigpIHsKICAgLy8gc21hbGxlc3QgaW5kZW50YXRpb24sIHdoaWNoIHRlbmRz
IHRvIG5lZWQgdGhlIGxlYXN0IGNvbnRleHQgdG8KICAgLy8gcGFyc2UgY29ycmVjdGx5LgogICBm
dW5jdGlvbiBmaW5kU3RhcnRMaW5lKGNtLCBuLCBwcmVjaXNlKSB7Ci0gICAgdmFyIG1pbmluZGVu
dCwgbWlubGluZSwgZG9jID0gY20uZG9jOwotICAgIGZvciAodmFyIHNlYXJjaCA9IG4sIGxpbSA9
IG4gLSAxMDA7IHNlYXJjaCA+IGxpbTsgLS1zZWFyY2gpIHsKKyAgICB2YXIgbWluaW5kZW50LCBt
aW5saW5lLCBkb2MgPSBjbS5kb2MsIG1heFNjYW4gPSBjbS5kb2MubW9kZS5pbm5lck1vZGUgPyAx
MDAwIDogMTAwOworICAgIGZvciAodmFyIHNlYXJjaCA9IG4sIGxpbSA9IG4gLSBtYXhTY2FuOyBz
ZWFyY2ggPiBsaW07IC0tc2VhcmNoKSB7CiAgICAgICBpZiAoc2VhcmNoIDw9IGRvYy5maXJzdCkg
cmV0dXJuIGRvYy5maXJzdDsKICAgICAgIHZhciBsaW5lID0gZ2V0TGluZShkb2MsIHNlYXJjaCAt
IDEpOwogICAgICAgaWYgKGxpbmUuc3RhdGVBZnRlciAmJiAoIXByZWNpc2UgfHwgc2VhcmNoIDw9
IGRvYy5mcm9udGllcikpIHJldHVybiBzZWFyY2g7CkBAIC05MzMsNyArOTQ3LDcgQEAgd2luZG93
LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAKICAgZnVuY3Rpb24gZ2V0U3RhdGVCZWZvcmUo
Y20sIG4sIHByZWNpc2UpIHsKICAgICB2YXIgZG9jID0gY20uZG9jLCBkaXNwbGF5ID0gY20uZGlz
cGxheTsKLSAgICAgIGlmICghZG9jLm1vZGUuc3RhcnRTdGF0ZSkgcmV0dXJuIHRydWU7CisgICAg
aWYgKCFkb2MubW9kZS5zdGFydFN0YXRlKSByZXR1cm4gdHJ1ZTsKICAgICB2YXIgcG9zID0gZmlu
ZFN0YXJ0TGluZShjbSwgbiwgcHJlY2lzZSksIHN0YXRlID0gcG9zID4gZG9jLmZpcnN0ICYmIGdl
dExpbmUoZG9jLCBwb3MtMSkuc3RhdGVBZnRlcjsKICAgICBpZiAoIXN0YXRlKSBzdGF0ZSA9IHN0
YXJ0U3RhdGUoZG9jLm1vZGUpOwogICAgIGVsc2Ugc3RhdGUgPSBjb3B5U3RhdGUoZG9jLm1vZGUs
IHN0YXRlKTsKQEAgLTEwMDcsNyArMTAyMSw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0
aW9uKCkgewogCiAgIGZ1bmN0aW9uIG1lYXN1cmVMaW5lSW5uZXIoY20sIGxpbmUpIHsKICAgICB2
YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIG1lYXN1cmUgPSBlbXB0eUFycmF5KGxpbmUudGV4dC5s
ZW5ndGgpOwotICAgIHZhciBwcmUgPSBsaW5lQ29udGVudChjbSwgbGluZSwgbWVhc3VyZSk7Cisg
ICAgdmFyIHByZSA9IGxpbmVDb250ZW50KGNtLCBsaW5lLCBtZWFzdXJlLCB0cnVlKTsKIAogICAg
IC8vIElFIGRvZXMgbm90IGNhY2hlIGVsZW1lbnQgcG9zaXRpb25zIG9mIGlubGluZSBlbGVtZW50
cyBiZXR3ZWVuCiAgICAgLy8gY2FsbHMgdG8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0LiBUaGlzIG1h
a2VzIHRoZSBsb29wIGJlbG93LApAQCAtMTA4Myw2ICsxMDk3LDcgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBpZiAoY3VyLm1lYXN1cmVSaWdodCkgcmVjdC5yaWdo
dCA9IGdldFJlY3QoY3VyLm1lYXN1cmVSaWdodCkubGVmdDsKICAgICAgIGlmIChjdXIubGVmdFNp
ZGUpIHJlY3QubGVmdFNpZGUgPSBtZWFzdXJlUmVjdChnZXRSZWN0KGN1ci5sZWZ0U2lkZSkpOwog
ICAgIH0KKyAgICByZW1vdmVDaGlsZHJlbihjbS5kaXNwbGF5Lm1lYXN1cmUpOwogICAgIGZvciAo
dmFyIGkgPSAwLCBjdXI7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSBpZiAoY3VyID0gZGF0YVtpXSkg
ewogICAgICAgZmluaXNoUmVjdChjdXIpOwogICAgICAgaWYgKGN1ci5sZWZ0U2lkZSkgZmluaXNo
UmVjdChjdXIubGVmdFNpZGUpOwpAQCAtMTEwMCw3ICsxMTE1LDcgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNhY2hlZCA9ICFoYXNCYWRTcGFuICYmIGZpbmRD
YWNoZWRNZWFzdXJlbWVudChjbSwgbGluZSk7CiAgICAgaWYgKGNhY2hlZCkgcmV0dXJuIG1lYXN1
cmVDaGFyKGNtLCBsaW5lLCBsaW5lLnRleHQubGVuZ3RoLCBjYWNoZWQubWVhc3VyZSwgInJpZ2h0
IikucmlnaHQ7CiAKLSAgICB2YXIgcHJlID0gbGluZUNvbnRlbnQoY20sIGxpbmUpOworICAgIHZh
ciBwcmUgPSBsaW5lQ29udGVudChjbSwgbGluZSwgbnVsbCwgdHJ1ZSk7CiAgICAgdmFyIGVuZCA9
IHByZS5hcHBlbmRDaGlsZCh6ZXJvV2lkdGhFbGVtZW50KGNtLmRpc3BsYXkubWVhc3VyZSkpOwog
ICAgIHJlbW92ZUNoaWxkcmVuQW5kQWRkKGNtLmRpc3BsYXkubWVhc3VyZSwgcHJlKTsKICAgICBy
ZXR1cm4gZ2V0UmVjdChlbmQpLnJpZ2h0IC0gZ2V0UmVjdChjbS5kaXNwbGF5LmxpbmVEaXYpLmxl
ZnQ7CkBAIC0xMzA0LDYgKzEzMTksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKICAgICAgIC8vIEFuIGFycmF5IG9mIHJhbmdlcyBvZiBsaW5lcyB0aGF0IGhhdmUgdG8gYmUg
dXBkYXRlZC4gU2VlCiAgICAgICAvLyB1cGRhdGVEaXNwbGF5LgogICAgICAgY2hhbmdlczogW10s
CisgICAgICBmb3JjZVVwZGF0ZTogZmFsc2UsCiAgICAgICB1cGRhdGVJbnB1dDogbnVsbCwKICAg
ICAgIHVzZXJTZWxDaGFuZ2U6IG51bGwsCiAgICAgICB0ZXh0Q2hhbmdlZDogbnVsbCwKQEAgLTEz
MzYsOCArMTM1Miw4IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAg
dmFyIGNvb3JkcyA9IGN1cnNvckNvb3JkcyhjbSwgZG9jLnNlbC5oZWFkKTsKICAgICAgIG5ld1Nj
cm9sbFBvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyhjbSwgY29vcmRzLmxlZnQsIGNvb3Jkcy50b3As
IGNvb3Jkcy5sZWZ0LCBjb29yZHMuYm90dG9tKTsKICAgICB9Ci0gICAgaWYgKG9wLmNoYW5nZXMu
bGVuZ3RoIHx8IG5ld1Njcm9sbFBvcyAmJiBuZXdTY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwp
IHsKLSAgICAgIHVwZGF0ZWQgPSB1cGRhdGVEaXNwbGF5KGNtLCBvcC5jaGFuZ2VzLCBuZXdTY3Jv
bGxQb3MgJiYgbmV3U2Nyb2xsUG9zLnNjcm9sbFRvcCk7CisgICAgaWYgKG9wLmNoYW5nZXMubGVu
Z3RoIHx8IG9wLmZvcmNlVXBkYXRlIHx8IG5ld1Njcm9sbFBvcyAmJiBuZXdTY3JvbGxQb3Muc2Ny
b2xsVG9wICE9IG51bGwpIHsKKyAgICAgIHVwZGF0ZWQgPSB1cGRhdGVEaXNwbGF5KGNtLCBvcC5j
aGFuZ2VzLCBuZXdTY3JvbGxQb3MgJiYgbmV3U2Nyb2xsUG9zLnNjcm9sbFRvcCwgb3AuZm9yY2VV
cGRhdGUpOwogICAgICAgaWYgKGNtLmRpc3BsYXkuc2Nyb2xsZXIub2Zmc2V0SGVpZ2h0KSBjbS5k
b2Muc2Nyb2xsVG9wID0gY20uZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3A7CiAgICAgfQogICAg
IGlmICghdXBkYXRlZCAmJiBvcC5zZWxlY3Rpb25DaGFuZ2VkKSB1cGRhdGVTZWxlY3Rpb24oY20p
OwpAQCAtMTQzNCw2ICsxNDUwLDEwIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICBmdW5jdGlvbiByZWFkSW5wdXQoY20pIHsKICAgICB2YXIgaW5wdXQgPSBjbS5kaXNwbGF5
LmlucHV0LCBwcmV2SW5wdXQgPSBjbS5kaXNwbGF5LnByZXZJbnB1dCwgZG9jID0gY20uZG9jLCBz
ZWwgPSBkb2Muc2VsOwogICAgIGlmICghY20uc3RhdGUuZm9jdXNlZCB8fCBoYXNTZWxlY3Rpb24o
aW5wdXQpIHx8IGlzUmVhZE9ubHkoY20pIHx8IGNtLnN0YXRlLmRpc2FibGVJbnB1dCkgcmV0dXJu
IGZhbHNlOworICAgIGlmIChjbS5zdGF0ZS5wYXN0ZUluY29taW5nICYmIGNtLnN0YXRlLmZha2Vk
TGFzdENoYXIpIHsKKyAgICAgIGlucHV0LnZhbHVlID0gaW5wdXQudmFsdWUuc3Vic3RyaW5nKDAs
IGlucHV0LnZhbHVlLmxlbmd0aCAtIDEpOworICAgICAgY20uc3RhdGUuZmFrZWRMYXN0Q2hhciA9
IGZhbHNlOworICAgIH0KICAgICB2YXIgdGV4dCA9IGlucHV0LnZhbHVlOwogICAgIGlmICh0ZXh0
ID09IHByZXZJbnB1dCAmJiBwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSkgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChpZSAmJiAhaWVfbHQ5ICYmIGNtLmRpc3BsYXkuaW5wdXRIYXNTZWxlY3Rpb24gPT09
IHRleHQpIHsKQEAgLTE1ODAsMTIgKzE2MDAsMjIgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgICBvbihkLnNjcm9sbGVyLCAiZHJhZ292ZXIiLCBkcmFnXyk7CiAgICAg
ICBvbihkLnNjcm9sbGVyLCAiZHJvcCIsIG9wZXJhdGlvbihjbSwgb25Ecm9wKSk7CiAgICAgfQot
ICAgIG9uKGQuc2Nyb2xsZXIsICJwYXN0ZSIsIGZ1bmN0aW9uKGUpeworICAgIG9uKGQuc2Nyb2xs
ZXIsICJwYXN0ZSIsIGZ1bmN0aW9uKGUpIHsKICAgICAgIGlmIChldmVudEluV2lkZ2V0KGQsIGUp
KSByZXR1cm47CiAgICAgICBmb2N1c0lucHV0KGNtKTsKICAgICAgIGZhc3RQb2xsKGNtKTsKICAg
ICB9KTsKICAgICBvbihkLmlucHV0LCAicGFzdGUiLCBmdW5jdGlvbigpIHsKKyAgICAgIC8vIFdv
cmthcm91bmQgZm9yIHdlYmtpdCBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMjA2CisgICAgICAvLyBBZGQgYSBjaGFyIHRvIHRoZSBlbmQgb2YgdGV4dGFyZWEg
YmVmb3JlIHBhc3RlIG9jY3VyIHNvIHRoYXQKKyAgICAgIC8vIHNlbGVjdGlvbiBkb2Vzbid0IHNw
YW4gdG8gdGhlIGVuZCBvZiB0ZXh0YXJlYS4KKyAgICAgIGlmICh3ZWJraXQgJiYgIWNtLnN0YXRl
LmZha2VkTGFzdENoYXIgJiYgIShuZXcgRGF0ZSAtIGNtLnN0YXRlLmxhc3RNaWRkbGVEb3duIDwg
MjAwKSkgeworICAgICAgICB2YXIgc3RhcnQgPSBkLmlucHV0LnNlbGVjdGlvblN0YXJ0LCBlbmQg
PSBkLmlucHV0LnNlbGVjdGlvbkVuZDsKKyAgICAgICAgZC5pbnB1dC52YWx1ZSArPSAiJCI7Cisg
ICAgICAgIGQuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBzdGFydDsKKyAgICAgICAgZC5pbnB1dC5z
ZWxlY3Rpb25FbmQgPSBlbmQ7CisgICAgICAgIGNtLnN0YXRlLmZha2VkTGFzdENoYXIgPSB0cnVl
OworICAgICAgfQogICAgICAgY20uc3RhdGUucGFzdGVJbmNvbWluZyA9IHRydWU7CiAgICAgICBm
YXN0UG9sbChjbSk7CiAgICAgfSk7CkBAIC0xNjQ5LDYgKzE2NzksNyBAQCB3aW5kb3cuQ29kZU1p
cnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIGlmIChjYXB0dXJlTWlkZGxlQ2xpY2spIG9uQ29u
dGV4dE1lbnUuY2FsbChjbSwgY20sIGUpOwogICAgICAgcmV0dXJuOwogICAgIGNhc2UgMjoKKyAg
ICAgIGlmICh3ZWJraXQpIGNtLnN0YXRlLmxhc3RNaWRkbGVEb3duID0gK25ldyBEYXRlOwogICAg
ICAgaWYgKHN0YXJ0KSBleHRlbmRTZWxlY3Rpb24oY20uZG9jLCBzdGFydCk7CiAgICAgICBzZXRU
aW1lb3V0KGJpbmQoZm9jdXNJbnB1dCwgY20pLCAyMCk7CiAgICAgICBlX3ByZXZlbnREZWZhdWx0
KGUpOwpAQCAtMTc2OSwxNyArMTgwMCwxNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgICBvbihkb2N1bWVudCwgIm1vdXNldXAiLCB1cCk7CiAgIH0KIAotICBmdW5jdGlv
biBjbGlja0luR3V0dGVyKGNtLCBlKSB7Ci0gICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNwbGF5Owor
ICBmdW5jdGlvbiBndXR0ZXJFdmVudChjbSwgZSwgdHlwZSwgcHJldmVudCwgc2lnbmFsZm4pIHsK
ICAgICB0cnkgeyB2YXIgbVggPSBlLmNsaWVudFgsIG1ZID0gZS5jbGllbnRZOyB9CiAgICAgY2F0
Y2goZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBpZiAobVggPj0gTWF0aC5mbG9vcihnZXRSZWN0
KGNtLmRpc3BsYXkuZ3V0dGVycykucmlnaHQpKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKHByZXZl
bnQpIGVfcHJldmVudERlZmF1bHQoZSk7CiAKLSAgICBpZiAobVggPj0gTWF0aC5mbG9vcihnZXRS
ZWN0KGRpc3BsYXkuZ3V0dGVycykucmlnaHQpKSByZXR1cm4gZmFsc2U7Ci0gICAgZV9wcmV2ZW50
RGVmYXVsdChlKTsKLSAgICBpZiAoIWhhc0hhbmRsZXIoY20sICJndXR0ZXJDbGljayIpKSByZXR1
cm4gdHJ1ZTsKLQorICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheTsKICAgICB2YXIgbGluZUJv
eCA9IGdldFJlY3QoZGlzcGxheS5saW5lRGl2KTsKLSAgICBpZiAobVkgPiBsaW5lQm94LmJvdHRv
bSkgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobVkgPiBsaW5lQm94LmJvdHRvbSB8fCAhaGFzSGFu
ZGxlcihjbSwgdHlwZSkpIHJldHVybiBlX2RlZmF1bHRQcmV2ZW50ZWQoZSk7CiAgICAgbVkgLT0g
bGluZUJveC50b3AgLSBkaXNwbGF5LnZpZXdPZmZzZXQ7CiAKICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNtLm9wdGlvbnMuZ3V0dGVycy5sZW5ndGg7ICsraSkgewpAQCAtMTc4NywxMSArMTgxNywx
OSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIGlmIChnICYmIGdl
dFJlY3QoZykucmlnaHQgPj0gbVgpIHsKICAgICAgICAgdmFyIGxpbmUgPSBsaW5lQXRIZWlnaHQo
Y20uZG9jLCBtWSk7CiAgICAgICAgIHZhciBndXR0ZXIgPSBjbS5vcHRpb25zLmd1dHRlcnNbaV07
Ci0gICAgICAgIHNpZ25hbExhdGVyKGNtLCAiZ3V0dGVyQ2xpY2siLCBjbSwgbGluZSwgZ3V0dGVy
LCBlKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHNpZ25hbGZuKGNtLCB0eXBlLCBjbSwgbGlu
ZSwgZ3V0dGVyLCBlKTsKKyAgICAgICAgcmV0dXJuIGVfZGVmYXVsdFByZXZlbnRlZChlKTsKICAg
ICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgIH0KKworICBmdW5jdGlvbiBjb250ZXh0
TWVudUluR3V0dGVyKGNtLCBlKSB7CisgICAgaWYgKCFoYXNIYW5kbGVyKGNtLCAiZ3V0dGVyQ29u
dGV4dE1lbnUiKSkgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBndXR0ZXJFdmVudChjbSwgZSwg
Imd1dHRlckNvbnRleHRNZW51IiwgZmFsc2UsIHNpZ25hbCk7CisgIH0KKworICBmdW5jdGlvbiBj
bGlja0luR3V0dGVyKGNtLCBlKSB7CisgICAgcmV0dXJuIGd1dHRlckV2ZW50KGNtLCBlLCAiZ3V0
dGVyQ2xpY2siLCB0cnVlLCBzaWduYWxMYXRlcik7CiAgIH0KIAogICAvLyBLbHVkZ2UgdG8gd29y
ayBhcm91bmQgc3RyYW5nZSBJRSBiZWhhdmlvciB3aGVyZSBpdCdsbCBzb21ldGltZXMKQEAgLTIw
NTIsOCArMjA5MCw4IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBmdW5j
dGlvbiBvbktleURvd24oZSkgewogICAgIHZhciBjbSA9IHRoaXM7CiAgICAgaWYgKCFjbS5zdGF0
ZS5mb2N1c2VkKSBvbkZvY3VzKGNtKTsKLSAgICBpZiAoaWUgJiYgZS5rZXlDb2RlID09IDI3KSB7
IGUucmV0dXJuVmFsdWUgPSBmYWxzZTsgfQogICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkg
fHwgY20ub3B0aW9ucy5vbktleUV2ZW50ICYmIGNtLm9wdGlvbnMub25LZXlFdmVudChjbSwgYWRk
U3RvcChlKSkpIHJldHVybjsKKyAgICBpZiAoaWUgJiYgZS5rZXlDb2RlID09IDI3KSBlLnJldHVy
blZhbHVlID0gZmFsc2U7CiAgICAgdmFyIGNvZGUgPSBlLmtleUNvZGU7CiAgICAgLy8gSUUgZG9l
cyBzdHJhbmdlIHRoaW5ncyB3aXRoIGVzY2FwZS4KICAgICBjbS5kb2Muc2VsLnNoaWZ0ID0gY29k
ZSA9PSAxNiB8fCBlLnNoaWZ0S2V5OwpAQCAtMjA5MCw3ICsyMTI4LDEwIEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgY20uc3RhdGUuZm9jdXNlZCA9IHRydWU7CiAg
ICAgICBpZiAoY20uZGlzcGxheS53cmFwcGVyLmNsYXNzTmFtZS5zZWFyY2goL1xiQ29kZU1pcnJv
ci1mb2N1c2VkXGIvKSA9PSAtMSkKICAgICAgICAgY20uZGlzcGxheS53cmFwcGVyLmNsYXNzTmFt
ZSArPSAiIENvZGVNaXJyb3ItZm9jdXNlZCI7Ci0gICAgICByZXNldElucHV0KGNtLCB0cnVlKTsK
KyAgICAgIGlmICghY20uY3VyT3ApIHsKKyAgICAgICAgcmVzZXRJbnB1dChjbSwgdHJ1ZSk7Cisg
ICAgICAgIGlmICh3ZWJraXQpIHNldFRpbWVvdXQoYmluZChyZXNldElucHV0LCBjbSwgdHJ1ZSks
IDApOyAvLyBJc3N1ZSAjMTczMAorICAgICAgfQogICAgIH0KICAgICBzbG93UG9sbChjbSk7CiAg
ICAgcmVzdGFydEJsaW5rKGNtKTsKQEAgLTIxMDksNyArMjE1MCw3IEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogICBmdW5jdGlvbiBvbkNvbnRleHRNZW51KGNtLCBlKSB7CiAg
ICAgaWYgKHNpZ25hbERPTUV2ZW50KGNtLCBlLCAiY29udGV4dG1lbnUiKSkgcmV0dXJuOwogICAg
IHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgc2VsID0gY20uZG9jLnNlbDsKLSAgICBpZiAoZXZl
bnRJbldpZGdldChkaXNwbGF5LCBlKSkgcmV0dXJuOworICAgIGlmIChldmVudEluV2lkZ2V0KGRp
c3BsYXksIGUpIHx8IGNvbnRleHRNZW51SW5HdXR0ZXIoY20sIGUpKSByZXR1cm47CiAKICAgICB2
YXIgcG9zID0gcG9zRnJvbU1vdXNlKGNtLCBlKSwgc2Nyb2xsUG9zID0gZGlzcGxheS5zY3JvbGxl
ci5zY3JvbGxUb3A7CiAgICAgaWYgKCFwb3MgfHwgb3BlcmEpIHJldHVybjsgLy8gT3BlcmEgaXMg
ZGlmZmljdWx0LgpAQCAtMjEyOCw4ICsyMTY5LDggQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAKICAgICBmdW5jdGlvbiBwcmVwYXJlU2VsZWN0QWxsSGFjaygpIHsKICAgICAg
IGlmIChkaXNwbGF5LmlucHV0LnNlbGVjdGlvblN0YXJ0ICE9IG51bGwpIHsKLSAgICAgICAgdmFy
IGV4dHZhbCA9IGRpc3BsYXkuaW5wdXQudmFsdWUgPSAiICIgKyAocG9zRXEoc2VsLmZyb20sIHNl
bC50bykgPyAiIiA6IGRpc3BsYXkuaW5wdXQudmFsdWUpOwotICAgICAgICBkaXNwbGF5LnByZXZJ
bnB1dCA9ICIgIjsKKyAgICAgICAgdmFyIGV4dHZhbCA9IGRpc3BsYXkuaW5wdXQudmFsdWUgPSAi
XHUyMDBiIiArIChwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSA/ICIiIDogZGlzcGxheS5pbnB1dC52
YWx1ZSk7CisgICAgICAgIGRpc3BsYXkucHJldklucHV0ID0gIlx1MjAwYiI7CiAgICAgICAgIGRp
c3BsYXkuaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSAxOyBkaXNwbGF5LmlucHV0LnNlbGVjdGlvbkVu
ZCA9IGV4dHZhbC5sZW5ndGg7CiAgICAgICB9CiAgICAgfQpAQCAtMzExNSwxNCArMzE1NiwxNiBA
QCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIHVwZGF0ZVNjcm9sbFBv
cyh0aGlzLCBzUG9zLnNjcm9sbExlZnQsIHNQb3Muc2Nyb2xsVG9wKTsKICAgICB9KSwKIAotICAg
IHNldFNpemU6IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHsKKyAgICBzZXRTaXplOiBvcGVyYXRp
b24obnVsbCwgZnVuY3Rpb24od2lkdGgsIGhlaWdodCkgewogICAgICAgZnVuY3Rpb24gaW50ZXJw
cmV0KHZhbCkgewogICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAibnVtYmVyIiB8fCAvXlxk
KyQvLnRlc3QoU3RyaW5nKHZhbCkpID8gdmFsICsgInB4IiA6IHZhbDsKICAgICAgIH0KICAgICAg
IGlmICh3aWR0aCAhPSBudWxsKSB0aGlzLmRpc3BsYXkud3JhcHBlci5zdHlsZS53aWR0aCA9IGlu
dGVycHJldCh3aWR0aCk7CiAgICAgICBpZiAoaGVpZ2h0ICE9IG51bGwpIHRoaXMuZGlzcGxheS53
cmFwcGVyLnN0eWxlLmhlaWdodCA9IGludGVycHJldChoZWlnaHQpOwotICAgICAgdGhpcy5yZWZy
ZXNoKCk7Ci0gICAgfSwKKyAgICAgIGlmICh0aGlzLm9wdGlvbnMubGluZVdyYXBwaW5nKQorICAg
ICAgICB0aGlzLmRpc3BsYXkubWVhc3VyZUxpbmVDYWNoZS5sZW5ndGggPSB0aGlzLmRpc3BsYXku
bWVhc3VyZUxpbmVDYWNoZVBvcyA9IDA7CisgICAgICB0aGlzLmN1ck9wLmZvcmNlVXBkYXRlID0g
dHJ1ZTsKKyAgICB9KSwKIAogICAgIG9wZXJhdGlvbjogZnVuY3Rpb24oZil7cmV0dXJuIHJ1bklu
T3AodGhpcywgZik7fSwKIApAQCAtMzM0OCw2ICszMzkxLDcgQEAgd2luZG93LkNvZGVNaXJyb3Ig
PSAoZnVuY3Rpb24oKSB7CiAgIENvZGVNaXJyb3IuaW5uZXJNb2RlID0gZnVuY3Rpb24obW9kZSwg
c3RhdGUpIHsKICAgICB3aGlsZSAobW9kZS5pbm5lck1vZGUpIHsKICAgICAgIHZhciBpbmZvID0g
bW9kZS5pbm5lck1vZGUoc3RhdGUpOworICAgICAgaWYgKCFpbmZvIHx8IGluZm8ubW9kZSA9PSBt
b2RlKSBicmVhazsKICAgICAgIHN0YXRlID0gaW5mby5zdGF0ZTsKICAgICAgIG1vZGUgPSBpbmZv
Lm1vZGU7CiAgICAgfQpAQCAtMzY2Niw2ICszNzEwLDEwIEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogICAgIGlmICh0aGlzLmV4cGxpY2l0bHlDbGVhcmVkKSByZXR1cm47CiAg
ICAgdmFyIGNtID0gdGhpcy5kb2MuY20sIHdpdGhPcCA9IGNtICYmICFjbS5jdXJPcDsKICAgICBp
ZiAod2l0aE9wKSBzdGFydE9wZXJhdGlvbihjbSk7CisgICAgaWYgKGhhc0hhbmRsZXIodGhpcywg
ImNsZWFyIikpIHsKKyAgICAgIHZhciBmb3VuZCA9IHRoaXMuZmluZCgpOworICAgICAgaWYgKGZv
dW5kKSBzaWduYWxMYXRlcih0aGlzLCAiY2xlYXIiLCBmb3VuZC5mcm9tLCBmb3VuZC50byk7Cisg
ICAgfQogICAgIHZhciBtaW4gPSBudWxsLCBtYXggPSBudWxsOwogICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5saW5lcy5sZW5ndGg7ICsraSkgewogICAgICAgdmFyIGxpbmUgPSB0aGlzLmxp
bmVzW2ldOwpAQCAtMzY5NCw3ICszNzQyLDYgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rp
b24oKSB7CiAgICAgICBpZiAoY20pIHJlQ2hlY2tTZWxlY3Rpb24oY20pOwogICAgIH0KICAgICBp
ZiAod2l0aE9wKSBlbmRPcGVyYXRpb24oY20pOwotICAgIHNpZ25hbExhdGVyKHRoaXMsICJjbGVh
ciIpOwogICB9OwogCiAgIFRleHRNYXJrZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbigpIHsK
QEAgLTM3MTUsMTQgKzM3NjIsMTcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7
CiAgIFRleHRNYXJrZXIucHJvdG90eXBlLmNoYW5nZWQgPSBmdW5jdGlvbigpIHsKICAgICB2YXIg
cG9zID0gdGhpcy5maW5kKCksIGNtID0gdGhpcy5kb2MuY207CiAgICAgaWYgKCFwb3MgfHwgIWNt
KSByZXR1cm47Ci0gICAgdmFyIGxpbmUgPSBnZXRMaW5lKHRoaXMuZG9jLCBwb3MuZnJvbS5saW5l
KTsKKyAgICBpZiAodGhpcy50eXBlICE9ICJib29rbWFyayIpIHBvcyA9IHBvcy5mcm9tOworICAg
IHZhciBsaW5lID0gZ2V0TGluZSh0aGlzLmRvYywgcG9zLmxpbmUpOwogICAgIGNsZWFyQ2FjaGVk
TWVhc3VyZW1lbnQoY20sIGxpbmUpOwotICAgIGlmIChwb3MuZnJvbS5saW5lID49IGNtLmRpc3Bs
YXkuc2hvd2luZ0Zyb20gJiYgcG9zLmZyb20ubGluZSA8IGNtLmRpc3BsYXkuc2hvd2luZ1RvKSB7
CisgICAgaWYgKHBvcy5saW5lID49IGNtLmRpc3BsYXkuc2hvd2luZ0Zyb20gJiYgcG9zLmxpbmUg
PCBjbS5kaXNwbGF5LnNob3dpbmdUbykgewogICAgICAgZm9yICh2YXIgbm9kZSA9IGNtLmRpc3Bs
YXkubGluZURpdi5maXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS5uZXh0U2libGluZykgaWYg
KG5vZGUubGluZU9iaiA9PSBsaW5lKSB7CiAgICAgICAgIGlmIChub2RlLm9mZnNldEhlaWdodCAh
PSBsaW5lLmhlaWdodCkgdXBkYXRlTGluZUhlaWdodChsaW5lLCBub2RlLm9mZnNldEhlaWdodCk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgcnVuSW5PcChjbSwgZnVuY3Rpb24oKSB7
IGNtLmN1ck9wLnNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOyB9KTsKKyAgICAgIHJ1bkluT3AoY20s
IGZ1bmN0aW9uKCkgeworICAgICAgICBjbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkID0gY20uY3Vy
T3AuZm9yY2VVcGRhdGUgPSBjbS5jdXJPcC51cGRhdGVNYXhMaW5lID0gdHJ1ZTsKKyAgICAgIH0p
OwogICAgIH0KICAgfTsKIApAQCAtNDI0MSwxMyArNDI5MSwxNCBAQCB3aW5kb3cuQ29kZU1pcnJv
ciA9IChmdW5jdGlvbigpIHsKICAgICAgIChzdHlsZVRvQ2xhc3NDYWNoZVtzdHlsZV0gPSAiY20t
IiArIHN0eWxlLnJlcGxhY2UoLyArL2csICIgY20tIikpOwogICB9CiAKLSAgZnVuY3Rpb24gbGlu
ZUNvbnRlbnQoY20sIHJlYWxMaW5lLCBtZWFzdXJlKSB7CisgIGZ1bmN0aW9uIGxpbmVDb250ZW50
KGNtLCByZWFsTGluZSwgbWVhc3VyZSwgY29weVdpZGdldHMpIHsKICAgICB2YXIgbWVyZ2VkLCBs
aW5lID0gcmVhbExpbmUsIGVtcHR5ID0gdHJ1ZTsKICAgICB3aGlsZSAobWVyZ2VkID0gY29sbGFw
c2VkU3BhbkF0U3RhcnQobGluZSkpCiAgICAgICBsaW5lID0gZ2V0TGluZShjbS5kb2MsIG1lcmdl
ZC5maW5kKCkuZnJvbS5saW5lKTsKIAotICAgIHZhciBidWlsZGVyID0ge3ByZTogZWx0KCJwcmUi
KSwgY29sOiAwLCBwb3M6IDAsIGRpc3BsYXk6ICFtZWFzdXJlLAotICAgICAgICAgICAgICAgICAg
IG1lYXN1cmU6IG51bGwsIG1lYXN1cmVkU29tZXRoaW5nOiBmYWxzZSwgY206IGNtfTsKKyAgICB2
YXIgYnVpbGRlciA9IHtwcmU6IGVsdCgicHJlIiksIGNvbDogMCwgcG9zOiAwLAorICAgICAgICAg
ICAgICAgICAgIG1lYXN1cmU6IG51bGwsIG1lYXN1cmVkU29tZXRoaW5nOiBmYWxzZSwgY206IGNt
LAorICAgICAgICAgICAgICAgICAgIGNvcHlXaWRnZXRzOiBjb3B5V2lkZ2V0c307CiAgICAgaWYg
KGxpbmUudGV4dENsYXNzKSBidWlsZGVyLnByZS5jbGFzc05hbWUgPSBsaW5lLnRleHRDbGFzczsK
IAogICAgIGRvIHsKQEAgLTQzNzEsMTcgKzQ0MjIsMTkgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAo
ZnVuY3Rpb24oKSB7CiAgIGZ1bmN0aW9uIGJ1aWxkQ29sbGFwc2VkU3BhbihidWlsZGVyLCBzaXpl
LCBtYXJrZXIsIGlnbm9yZVdpZGdldCkgewogICAgIHZhciB3aWRnZXQgPSAhaWdub3JlV2lkZ2V0
ICYmIG1hcmtlci5yZXBsYWNlZFdpdGg7CiAgICAgaWYgKHdpZGdldCkgewotICAgICAgaWYgKCFi
dWlsZGVyLmRpc3BsYXkpIHdpZGdldCA9IHdpZGdldC5jbG9uZU5vZGUodHJ1ZSk7CisgICAgICBp
ZiAoYnVpbGRlci5jb3B5V2lkZ2V0cykgd2lkZ2V0ID0gd2lkZ2V0LmNsb25lTm9kZSh0cnVlKTsK
ICAgICAgIGJ1aWxkZXIucHJlLmFwcGVuZENoaWxkKHdpZGdldCk7CiAgICAgICBpZiAoYnVpbGRl
ci5tZWFzdXJlKSB7CiAgICAgICAgIGlmIChzaXplKSB7CiAgICAgICAgICAgYnVpbGRlci5tZWFz
dXJlW2J1aWxkZXIucG9zXSA9IHdpZGdldDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB2
YXIgZWx0ID0gYnVpbGRlci5tZWFzdXJlW2J1aWxkZXIucG9zXSA9IHplcm9XaWR0aEVsZW1lbnQo
YnVpbGRlci5jbS5kaXNwbGF5Lm1lYXN1cmUpOwotICAgICAgICAgIGlmIChtYXJrZXIudHlwZSAh
PSAiYm9va21hcmsiIHx8IG1hcmtlci5pbnNlcnRMZWZ0KQotICAgICAgICAgICAgYnVpbGRlci5w
cmUuaW5zZXJ0QmVmb3JlKGVsdCwgd2lkZ2V0KTsKKyAgICAgICAgICB2YXIgZWx0ID0gemVyb1dp
ZHRoRWxlbWVudChidWlsZGVyLmNtLmRpc3BsYXkubWVhc3VyZSk7CisgICAgICAgICAgaWYgKG1h
cmtlci50eXBlID09ICJib29rbWFyayIgJiYgIW1hcmtlci5pbnNlcnRMZWZ0KQorICAgICAgICAg
ICAgYnVpbGRlci5tZWFzdXJlW2J1aWxkZXIucG9zXSA9IGJ1aWxkZXIucHJlLmFwcGVuZENoaWxk
KGVsdCk7CisgICAgICAgICAgZWxzZSBpZiAoYnVpbGRlci5tZWFzdXJlW2J1aWxkZXIucG9zXSkK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWlsZGVy
LnByZS5hcHBlbmRDaGlsZChlbHQpOworICAgICAgICAgICAgYnVpbGRlci5tZWFzdXJlW2J1aWxk
ZXIucG9zXSA9IGJ1aWxkZXIucHJlLmluc2VydEJlZm9yZShlbHQsIHdpZGdldCk7CiAgICAgICAg
IH0KICAgICAgICAgYnVpbGRlci5tZWFzdXJlZFNvbWV0aGluZyA9IHRydWU7CiAgICAgICB9CkBA
IC00NDA1LDcgKzQ0NTgsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICAgIGlmIChuZXh0Q2hhbmdlID09IHBvcykgeyAvLyBVcGRhdGUgY3VycmVudCBtYXJrZXIgc2V0
CiAgICAgICAgIHNwYW5TdHlsZSA9IHNwYW5FbmRTdHlsZSA9IHNwYW5TdGFydFN0eWxlID0gdGl0
bGUgPSAiIjsKICAgICAgICAgY29sbGFwc2VkID0gbnVsbDsgbmV4dENoYW5nZSA9IEluZmluaXR5
OwotICAgICAgICB2YXIgZm91bmRCb29rbWFyayA9IG51bGw7CisgICAgICAgIHZhciBmb3VuZEJv
b2ttYXJrcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNwYW5zLmxlbmd0aDsg
KytqKSB7CiAgICAgICAgICAgdmFyIHNwID0gc3BhbnNbal0sIG0gPSBzcC5tYXJrZXI7CiAgICAg
ICAgICAgaWYgKHNwLmZyb20gPD0gcG9zICYmIChzcC50byA9PSBudWxsIHx8IHNwLnRvID4gcG9z
KSkgewpAQCAtNDQxOSwxNCArNDQ3MiwxNSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgICAgICAgICB9IGVsc2UgaWYgKHNwLmZyb20gPiBwb3MgJiYgbmV4dENoYW5nZSA+
IHNwLmZyb20pIHsKICAgICAgICAgICAgIG5leHRDaGFuZ2UgPSBzcC5mcm9tOwogICAgICAgICAg
IH0KLSAgICAgICAgICBpZiAobS50eXBlID09ICJib29rbWFyayIgJiYgc3AuZnJvbSA9PSBwb3Mg
JiYgbS5yZXBsYWNlZFdpdGgpIGZvdW5kQm9va21hcmsgPSBtOworICAgICAgICAgIGlmIChtLnR5
cGUgPT0gImJvb2ttYXJrIiAmJiBzcC5mcm9tID09IHBvcyAmJiBtLnJlcGxhY2VkV2l0aCkgZm91
bmRCb29rbWFya3MucHVzaChtKTsKICAgICAgICAgfQogICAgICAgICBpZiAoY29sbGFwc2VkICYm
IChjb2xsYXBzZWQuZnJvbSB8fCAwKSA9PSBwb3MpIHsKICAgICAgICAgICBidWlsZENvbGxhcHNl
ZFNwYW4oYnVpbGRlciwgKGNvbGxhcHNlZC50byA9PSBudWxsID8gbGVuIDogY29sbGFwc2VkLnRv
KSAtIHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkLm1hcmtlciwg
Y29sbGFwc2VkLmZyb20gPT0gbnVsbCk7CiAgICAgICAgICAgaWYgKGNvbGxhcHNlZC50byA9PSBu
dWxsKSByZXR1cm4gY29sbGFwc2VkLm1hcmtlci5maW5kKCk7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKGZvdW5kQm9va21hcmsgJiYgIWNvbGxhcHNlZCkgYnVpbGRDb2xsYXBzZWRTcGFuKGJ1aWxk
ZXIsIDAsIGZvdW5kQm9va21hcmspOworICAgICAgICBpZiAoIWNvbGxhcHNlZCAmJiBmb3VuZEJv
b2ttYXJrcy5sZW5ndGgpIGZvciAodmFyIGogPSAwOyBqIDwgZm91bmRCb29rbWFya3MubGVuZ3Ro
OyArK2opCisgICAgICAgICAgYnVpbGRDb2xsYXBzZWRTcGFuKGJ1aWxkZXIsIDAsIGZvdW5kQm9v
a21hcmtzW2pdKTsKICAgICAgIH0KICAgICAgIGlmIChwb3MgPj0gbGVuKSBicmVhazsKIApAQCAt
NDcyMiwxMSArNDc3NiwxMSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICAgIGlmIChleHRlbmQpIGV4dGVuZFNlbGVjdGlvbih0aGlzLCBwb3MpOwogICAgICAgZWxzZSBz
ZXRTZWxlY3Rpb24odGhpcywgcG9zLCBwb3MpOwogICAgIH0pLAotICAgIHNldFNlbGVjdGlvbjog
ZG9jT3BlcmF0aW9uKGZ1bmN0aW9uKGFuY2hvciwgaGVhZCkgewotICAgICAgc2V0U2VsZWN0aW9u
KHRoaXMsIGNsaXBQb3ModGhpcywgYW5jaG9yKSwgY2xpcFBvcyh0aGlzLCBoZWFkIHx8IGFuY2hv
cikpOworICAgIHNldFNlbGVjdGlvbjogZG9jT3BlcmF0aW9uKGZ1bmN0aW9uKGFuY2hvciwgaGVh
ZCwgYmlhcykgeworICAgICAgc2V0U2VsZWN0aW9uKHRoaXMsIGNsaXBQb3ModGhpcywgYW5jaG9y
KSwgY2xpcFBvcyh0aGlzLCBoZWFkIHx8IGFuY2hvciksIGJpYXMpOwogICAgIH0pLAotICAgIGV4
dGVuZFNlbGVjdGlvbjogZG9jT3BlcmF0aW9uKGZ1bmN0aW9uKGZyb20sIHRvKSB7Ci0gICAgICBl
eHRlbmRTZWxlY3Rpb24odGhpcywgY2xpcFBvcyh0aGlzLCBmcm9tKSwgdG8gJiYgY2xpcFBvcyh0
aGlzLCB0bykpOworICAgIGV4dGVuZFNlbGVjdGlvbjogZG9jT3BlcmF0aW9uKGZ1bmN0aW9uKGZy
b20sIHRvLCBiaWFzKSB7CisgICAgICBleHRlbmRTZWxlY3Rpb24odGhpcywgY2xpcFBvcyh0aGlz
LCBmcm9tKSwgdG8gJiYgY2xpcFBvcyh0aGlzLCB0byksIGJpYXMpOwogICAgIH0pLAogCiAgICAg
Z2V0U2VsZWN0aW9uOiBmdW5jdGlvbihsaW5lU2VwKSB7cmV0dXJuIHRoaXMuZ2V0UmFuZ2UodGhp
cy5zZWwuZnJvbSwgdGhpcy5zZWwudG8sIGxpbmVTZXApO30sCkBAIC01MjM5LDcgKzUyOTMsNyBA
QCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAogICBmdW5jdGlvbiBzaWduYWxE
T01FdmVudChjbSwgZSwgb3ZlcnJpZGUpIHsKICAgICBzaWduYWwoY20sIG92ZXJyaWRlIHx8IGUu
dHlwZSwgY20sIGUpOwotICAgIHJldHVybiBlX2RlZmF1bHRQcmV2ZW50ZWQoZSk7CisgICAgcmV0
dXJuIGVfZGVmYXVsdFByZXZlbnRlZChlKSB8fCBlLmNvZGVtaXJyb3JJZ25vcmU7CiAgIH0KIAog
ICBmdW5jdGlvbiBmaXJlRGVsYXllZCgpIHsKQEAgLTU0MTAsNyArNTQ2NCw3IEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIH07CiAgIGVsc2UgaWYgKHNhZmFyaSAmJiAh
L1ZlcnNpb25cLyhbNi05XXxcZFxkKVxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKQogICAg
IHNwYW5BZmZlY3RzV3JhcHBpbmcgPSBmdW5jdGlvbihzdHIsIGkpIHsKLSAgICAgIHJldHVybiAo
L1wtW14gXC0/XXxcP1teICFcJ1wiXCksLlwtXC86O1w/XF1cfV0vKS50ZXN0KHN0ci5zbGljZShp
IC0gMSwgaSArIDEpKTsKKyAgICAgIHJldHVybiAvXC1bXiBcLT9dfFw/W14gIVwnXCJcKSwuXC1c
Lzo7XD9cXVx9XS8udGVzdChzdHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7CiAgICAgfTsKICAgZWxz
ZSBpZiAod2Via2l0ICYmICEvQ2hyb21lXC8oPzoyOXxbMy05XVxkfFxkXGRcZClcLi8udGVzdChu
YXZpZ2F0b3IudXNlckFnZW50KSkKICAgICBzcGFuQWZmZWN0c1dyYXBwaW5nID0gZnVuY3Rpb24o
c3RyLCBpKSB7CkBAIC01NDE4LDcgKzU0NzIsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5j
dGlvbigpIHsKICAgICAgICAgaWYgKC9cdy8udGVzdChzdHIuY2hhckF0KGkgLSAyKSkgJiYgL1te
XC0/XC5dLy50ZXN0KHN0ci5jaGFyQXQoaSkpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKGkg
PiAyICYmIC9bXGRcLixdLy50ZXN0KHN0ci5jaGFyQXQoaSAtIDIpKSAmJiAvW1xkXC4sXS8udGVz
dChzdHIuY2hhckF0KGkpKSkgcmV0dXJuIGZhbHNlOwogICAgICAgfQotICAgICAgcmV0dXJuICgv
W34hIyUmKik9K31cXXxcIlwuPiw6O11bKHtbPF18LVteXC0/XC5cdTIwMTAtXHUyMDFmXHUyMDI2
XXxcP1tcd35gQCMkJVxeJiooXz0re1t8PjxdfOKApltcd35gQCMkJVxeJiooXz0re1s+PF0vKS50
ZXN0KHN0ci5zbGljZShpIC0gMSwgaSArIDEpKTsKKyAgICAgIHJldHVybiAvW34hIyUmKik9K31c
XXxcIlwuPiw6O11bKHtbPF18LVteXC0/XC5cdTIwMTAtXHUyMDFmXHUyMDI2XXxcP1tcd35gQCMk
JVxeJiooXz0re1t8PjxdfOKApltcd35gQCMkJVxeJiooXz0re1s+PF0vLnRlc3Qoc3RyLnNsaWNl
KGkgLSAxLCBpICsgMSkpOwogICAgIH07CiAKICAgdmFyIGtub3duU2Nyb2xsYmFyV2lkdGg7CkBA
IC01Nzc0LDcgKzU4MjgsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAog
ICAvLyBUSEUgRU5ECiAKLSAgQ29kZU1pcnJvci52ZXJzaW9uID0gIjMuMTQuMSI7CisgIENvZGVN
aXJyb3IudmVyc2lvbiA9ICIzLjE2LjEiOwogCiAgIHJldHVybiBDb2RlTWlycm9yOwogfSkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFs
L0NvZGVNaXJyb3IvY3NzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9jc3MuanMKaW5kZXggYjUyZTc4Ny4uMmVhYTk2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1p
cnJvci9jc3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0
ZXJuYWwvQ29kZU1pcnJvci9jc3MuanMKQEAgLTI1Miw3ICsyNTIsNiBAQCBDb2RlTWlycm9yLmRl
ZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAg
ICAgIC8vIFB1c2gvcG9wIGNvbnRleHQgc3RhY2sKICAgICAgIGlmICh0eXBlID09ICJ7Iikgewog
ICAgICAgICBpZiAoY29udGV4dCA9PSAiQG1lZGlhIiB8fCBjb250ZXh0ID09ICJAbWVkaWFUeXBl
IikgewotICAgICAgICAgIHN0YXRlLnN0YWNrLnBvcCgpOwogICAgICAgICAgIHN0YXRlLnN0YWNr
W3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9ICJAbWVkaWF7IjsKICAgICAgICAgfQogICAgICAgICBl
bHNlIHsKQEAgLTI2MSw4ICsyNjAsNyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNl
IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgfQogICAgICAgfQog
ICAgICAgZWxzZSBpZiAodHlwZSA9PSAifSIpIHsKLSAgICAgICAgdmFyIGxhc3RTdGF0ZSA9IHN0
YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aCAtIDFdOwotICAgICAgICBpZiAobGFzdFN0YXRl
ID09ICJpbnRlcnBvbGF0aW9uIikgc3R5bGUgPSAib3BlcmF0b3IiOworICAgICAgICBpZiAoY29u
dGV4dCA9PSAiaW50ZXJwb2xhdGlvbiIpIHN0eWxlID0gIm9wZXJhdG9yIjsKICAgICAgICAgc3Rh
dGUuc3RhY2sucG9wKCk7CiAgICAgICAgIGlmIChjb250ZXh0ID09ICJwcm9wZXJ0eVZhbHVlIikg
c3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICB9CkBAIC0yNzAsMjAgKzI2OCwzNyBAQCBDb2RlTWly
cm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcp
IHsKICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIkBtZWRpYSIpIHN0YXRlLnN0YWNrLnB1c2goIkBt
ZWRpYSIpOwogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiQGltcG9ydCIpIHN0YXRlLnN0YWNrLnB1
c2goIkBpbXBvcnQiKTsKICAgICAgIGVsc2UgaWYgKGNvbnRleHQgPT0gIkBtZWRpYSIgJiYgL1xi
KGtleXdvcmR8YXR0cmlidXRlKVxiLy50ZXN0KHN0eWxlKSkKLSAgICAgICAgc3RhdGUuc3RhY2su
cHVzaCgiQG1lZGlhVHlwZSIpOwotICAgICAgZWxzZSBpZiAoY29udGV4dCA9PSAiQG1lZGlhVHlw
ZSIgJiYgc3RyZWFtLmN1cnJlbnQoKSA9PSAiLCIpIHN0YXRlLnN0YWNrLnBvcCgpOwotICAgICAg
ZWxzZSBpZiAoY29udGV4dCA9PSAiQG1lZGlhVHlwZSIgJiYgdHlwZSA9PSAiKCIpIHN0YXRlLnN0
YWNrLnB1c2goIkBtZWRpYVR5cGUoIik7Ci0gICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJAbWVk
aWFUeXBlKCIgJiYgdHlwZSA9PSAiKSIpIHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAgICBzdGF0
ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPSAiQG1lZGlhVHlwZSI7CisgICAgICBlbHNl
IGlmIChjb250ZXh0ID09ICJAbWVkaWFUeXBlIiAmJiBzdHJlYW0uY3VycmVudCgpID09ICIsIikK
KyAgICAgICAgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID0gIkBtZWRpYSI7Cisg
ICAgICBlbHNlIGlmICh0eXBlID09ICIoIikgeworICAgICAgICBpZiAoY29udGV4dCA9PSAiQG1l
ZGlhIiB8fCBjb250ZXh0ID09ICJAbWVkaWFUeXBlIikgeworICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSBAbWVkaWFUeXBlIGlzIHVzZWQgdG8gYXZvaWQgZXJyb3Igb24geworICAgICAgICAgIHN0YXRl
LnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9ICJAbWVkaWFUeXBlIjsKKyAgICAgICAgICBz
dGF0ZS5zdGFjay5wdXNoKCJAbWVkaWFUeXBlKCIpOworICAgICAgICB9CisgICAgICB9CisgICAg
ICBlbHNlIGlmICh0eXBlID09ICIpIikgeworICAgICAgICBpZiAoY29udGV4dCA9PSAicHJvcGVy
dHlWYWx1ZSIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTJdID09ICJAbWVkaWFU
eXBlKCIpIHsKKyAgICAgICAgICAvLyBJbiBAbWVkaWFUeXBlKCB3aXRob3V0IGNsb3NpbmcgOyBh
ZnRlciBwcm9wZXJ0eVZhbHVlCisgICAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAg
ICAgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29udGV4
dCA9PSAiQG1lZGlhVHlwZSgiKSB7CisgICAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CisgICAg
ICAgIH0KKyAgICAgIH0KICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIjoiICYmIHN0YXRlLmxhc3RU
b2tlbiA9PSAicHJvcGVydHkiKSBzdGF0ZS5zdGFjay5wdXNoKCJwcm9wZXJ0eVZhbHVlIik7CiAg
ICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJwcm9wZXJ0eVZhbHVlIiAmJiB0eXBlID09ICI7Iikg
c3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJAaW1wb3J0IiAm
JiB0eXBlID09ICI7Iikgc3RhdGUuc3RhY2sucG9wKCk7CisKICAgICAgIHJldHVybiBzdGF0ZS5s
YXN0VG9rZW4gPSBzdHlsZTsKICAgICB9LAogCiAgICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSwg
dGV4dEFmdGVyKSB7CiAgICAgICB2YXIgbiA9IHN0YXRlLnN0YWNrLmxlbmd0aDsKICAgICAgIGlm
ICgvXlx9Ly50ZXN0KHRleHRBZnRlcikpCi0gICAgICAgIG4gLT0gc3RhdGUuc3RhY2tbc3RhdGUu
c3RhY2subGVuZ3RoLTFdID09ICJwcm9wZXJ0eVZhbHVlIiA/IDIgOiAxOworICAgICAgICBuIC09
IHN0YXRlLnN0YWNrW24tMV0gPT0gInByb3BlcnR5VmFsdWUiID8gMiA6IDE7CiAgICAgICByZXR1
cm4gc3RhdGUuYmFzZUluZGVudCArIG4gKiBpbmRlbnRVbml0OwogICAgIH0sCiAKQEAgLTM1MSw4
ICszNjYsOCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29u
ZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAiZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbiIsICJk
cm9wLWluaXRpYWwtc2l6ZSIsICJkcm9wLWluaXRpYWwtdmFsdWUiLAogICAgICJlbGV2YXRpb24i
LCAiZW1wdHktY2VsbHMiLCAiZml0IiwgImZpdC1wb3NpdGlvbiIsICJmbGV4IiwgImZsZXgtYmFz
aXMiLAogICAgICJmbGV4LWRpcmVjdGlvbiIsICJmbGV4LWZsb3ciLCAiZmxleC1ncm93IiwgImZs
ZXgtc2hyaW5rIiwgImZsZXgtd3JhcCIsCi0gICAgImZsb2F0IiwgImZsb2F0LW9mZnNldCIsICJm
b250IiwgImZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsICJmb250LWZhbWlseSIsCi0gICAgImZvbnQt
a2VybmluZyIsICJmb250LWxhbmd1YWdlLW92ZXJyaWRlIiwgImZvbnQtc2l6ZSIsICJmb250LXNp
emUtYWRqdXN0IiwKKyAgICAiZmxvYXQiLCAiZmxvYXQtb2Zmc2V0IiwgImZsb3ctZnJvbSIsICJm
bG93LWludG8iLCAiZm9udCIsICJmb250LWZlYXR1cmUtc2V0dGluZ3MiLAorICAgICJmb250LWZh
bWlseSIsICJmb250LWtlcm5pbmciLCAiZm9udC1sYW5ndWFnZS1vdmVycmlkZSIsICJmb250LXNp
emUiLCAiZm9udC1zaXplLWFkanVzdCIsCiAgICAgImZvbnQtc3RyZXRjaCIsICJmb250LXN0eWxl
IiwgImZvbnQtc3ludGhlc2lzIiwgImZvbnQtdmFyaWFudCIsCiAgICAgImZvbnQtdmFyaWFudC1h
bHRlcm5hdGVzIiwgImZvbnQtdmFyaWFudC1jYXBzIiwgImZvbnQtdmFyaWFudC1lYXN0LWFzaWFu
IiwKICAgICAiZm9udC12YXJpYW50LWxpZ2F0dXJlcyIsICJmb250LXZhcmlhbnQtbnVtZXJpYyIs
ICJmb250LXZhcmlhbnQtcG9zaXRpb24iLApAQCAtMzc2LDI1ICszOTEsMjcgQEAgQ29kZU1pcnJv
ci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7
CiAgICAgInBhZ2UiLCAicGFnZS1icmVhay1hZnRlciIsICJwYWdlLWJyZWFrLWJlZm9yZSIsICJw
YWdlLWJyZWFrLWluc2lkZSIsCiAgICAgInBhZ2UtcG9saWN5IiwgInBhdXNlIiwgInBhdXNlLWFm
dGVyIiwgInBhdXNlLWJlZm9yZSIsICJwZXJzcGVjdGl2ZSIsCiAgICAgInBlcnNwZWN0aXZlLW9y
aWdpbiIsICJwaXRjaCIsICJwaXRjaC1yYW5nZSIsICJwbGF5LWR1cmluZyIsICJwb3NpdGlvbiIs
Ci0gICAgInByZXNlbnRhdGlvbi1sZXZlbCIsICJwdW5jdHVhdGlvbi10cmltIiwgInF1b3RlcyIs
ICJyZW5kZXJpbmctaW50ZW50IiwKLSAgICAicmVzaXplIiwgInJlc3QiLCAicmVzdC1hZnRlciIs
ICJyZXN0LWJlZm9yZSIsICJyaWNobmVzcyIsICJyaWdodCIsCi0gICAgInJvdGF0aW9uIiwgInJv
dGF0aW9uLXBvaW50IiwgInJ1YnktYWxpZ24iLCAicnVieS1vdmVyaGFuZyIsCi0gICAgInJ1Ynkt
cG9zaXRpb24iLCAicnVieS1zcGFuIiwgInNpemUiLCAic3BlYWsiLCAic3BlYWstYXMiLCAic3Bl
YWstaGVhZGVyIiwKKyAgICAicHJlc2VudGF0aW9uLWxldmVsIiwgInB1bmN0dWF0aW9uLXRyaW0i
LCAicXVvdGVzIiwgInJlZ2lvbi1icmVhay1hZnRlciIsCisgICAgInJlZ2lvbi1icmVhay1iZWZv
cmUiLCAicmVnaW9uLWJyZWFrLWluc2lkZSIsICJyZWdpb24tZnJhZ21lbnQiLAorICAgICJyZW5k
ZXJpbmctaW50ZW50IiwgInJlc2l6ZSIsICJyZXN0IiwgInJlc3QtYWZ0ZXIiLCAicmVzdC1iZWZv
cmUiLCAicmljaG5lc3MiLAorICAgICJyaWdodCIsICJyb3RhdGlvbiIsICJyb3RhdGlvbi1wb2lu
dCIsICJydWJ5LWFsaWduIiwgInJ1Ynktb3ZlcmhhbmciLAorICAgICJydWJ5LXBvc2l0aW9uIiwg
InJ1Ynktc3BhbiIsICJzaGFwZS1pbnNpZGUiLCAic2hhcGUtb3V0c2lkZSIsICJzaXplIiwKKyAg
ICAic3BlYWsiLCAic3BlYWstYXMiLCAic3BlYWstaGVhZGVyIiwKICAgICAic3BlYWstbnVtZXJh
bCIsICJzcGVhay1wdW5jdHVhdGlvbiIsICJzcGVlY2gtcmF0ZSIsICJzdHJlc3MiLCAic3RyaW5n
LXNldCIsCiAgICAgInRhYi1zaXplIiwgInRhYmxlLWxheW91dCIsICJ0YXJnZXQiLCAidGFyZ2V0
LW5hbWUiLCAidGFyZ2V0LW5ldyIsCiAgICAgInRhcmdldC1wb3NpdGlvbiIsICJ0ZXh0LWFsaWdu
IiwgInRleHQtYWxpZ24tbGFzdCIsICJ0ZXh0LWRlY29yYXRpb24iLAogICAgICJ0ZXh0LWRlY29y
YXRpb24tY29sb3IiLCAidGV4dC1kZWNvcmF0aW9uLWxpbmUiLCAidGV4dC1kZWNvcmF0aW9uLXNr
aXAiLAogICAgICJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiLCAidGV4dC1lbXBoYXNpcyIsICJ0ZXh0
LWVtcGhhc2lzLWNvbG9yIiwKICAgICAidGV4dC1lbXBoYXNpcy1wb3NpdGlvbiIsICJ0ZXh0LWVt
cGhhc2lzLXN0eWxlIiwgInRleHQtaGVpZ2h0IiwKLSAgICAidGV4dC1pbmRlbnQiLCAidGV4dC1q
dXN0aWZ5IiwgInRleHQtb3V0bGluZSIsICJ0ZXh0LXNoYWRvdyIsCi0gICAgInRleHQtc3BhY2Ut
Y29sbGFwc2UiLCAidGV4dC10cmFuc2Zvcm0iLCAidGV4dC11bmRlcmxpbmUtcG9zaXRpb24iLAor
ICAgICJ0ZXh0LWluZGVudCIsICJ0ZXh0LWp1c3RpZnkiLCAidGV4dC1vdXRsaW5lIiwgInRleHQt
b3ZlcmZsb3ciLCAidGV4dC1zaGFkb3ciLAorICAgICJ0ZXh0LXNpemUtYWRqdXN0IiwgInRleHQt
c3BhY2UtY29sbGFwc2UiLCAidGV4dC10cmFuc2Zvcm0iLCAidGV4dC11bmRlcmxpbmUtcG9zaXRp
b24iLAogICAgICJ0ZXh0LXdyYXAiLCAidG9wIiwgInRyYW5zZm9ybSIsICJ0cmFuc2Zvcm0tb3Jp
Z2luIiwgInRyYW5zZm9ybS1zdHlsZSIsCiAgICAgInRyYW5zaXRpb24iLCAidHJhbnNpdGlvbi1k
ZWxheSIsICJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwKICAgICAidHJhbnNpdGlvbi1wcm9wZXJ0eSIs
ICJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsICJ1bmljb2RlLWJpZGkiLAogICAgICJ2ZXJ0
aWNhbC1hbGlnbiIsICJ2aXNpYmlsaXR5IiwgInZvaWNlLWJhbGFuY2UiLCAidm9pY2UtZHVyYXRp
b24iLAogICAgICJ2b2ljZS1mYW1pbHkiLCAidm9pY2UtcGl0Y2giLCAidm9pY2UtcmFuZ2UiLCAi
dm9pY2UtcmF0ZSIsICJ2b2ljZS1zdHJlc3MiLAogICAgICJ2b2ljZS12b2x1bWUiLCAidm9sdW1l
IiwgIndoaXRlLXNwYWNlIiwgIndpZG93cyIsICJ3aWR0aCIsICJ3b3JkLWJyZWFrIiwKLSAgICAi
d29yZC1zcGFjaW5nIiwgIndvcmQtd3JhcCIsICJ6LWluZGV4IiwKKyAgICAid29yZC1zcGFjaW5n
IiwgIndvcmQtd3JhcCIsICJ6LWluZGV4IiwgInpvb20iLAogICAgIC8vIFNWRy1zcGVjaWZpYwog
ICAgICJjbGlwLXBhdGgiLCAiY2xpcC1ydWxlIiwgIm1hc2siLCAiZW5hYmxlLWJhY2tncm91bmQi
LCAiZmlsdGVyIiwgImZsb29kLWNvbG9yIiwKICAgICAiZmxvb2Qtb3BhY2l0eSIsICJsaWdodGlu
Zy1jb2xvciIsICJzdG9wLWNvbG9yIiwgInN0b3Atb3BhY2l0eSIsICJwb2ludGVyLWV2ZW50cyIs
CkBAIC00MTcsNyArNDM0LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1
bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgImRhcmtzbGF0ZWJsdWUiLCAiZGFy
a3NsYXRlZ3JheSIsICJkYXJrdHVycXVvaXNlIiwgImRhcmt2aW9sZXQiLAogICAgICJkZWVwcGlu
ayIsICJkZWVwc2t5Ymx1ZSIsICJkaW1ncmF5IiwgImRvZGdlcmJsdWUiLCAiZmlyZWJyaWNrIiwK
ICAgICAiZmxvcmFsd2hpdGUiLCAiZm9yZXN0Z3JlZW4iLCAiZnVjaHNpYSIsICJnYWluc2Jvcm8i
LCAiZ2hvc3R3aGl0ZSIsCi0gICAgImdvbGQiLCAiZ29sZGVucm9kIiwgImdyYXkiLCAiZ3JlZW4i
LCAiZ3JlZW55ZWxsb3ciLCAiaG9uZXlkZXciLAorICAgICJnb2xkIiwgImdvbGRlbnJvZCIsICJn
cmF5IiwgImdyZXkiLCAiZ3JlZW4iLCAiZ3JlZW55ZWxsb3ciLCAiaG9uZXlkZXciLAogICAgICJo
b3RwaW5rIiwgImluZGlhbnJlZCIsICJpbmRpZ28iLCAiaXZvcnkiLCAia2hha2kiLCAibGF2ZW5k
ZXIiLAogICAgICJsYXZlbmRlcmJsdXNoIiwgImxhd25ncmVlbiIsICJsZW1vbmNoaWZmb24iLCAi
bGlnaHRibHVlIiwgImxpZ2h0Y29yYWwiLAogICAgICJsaWdodGN5YW4iLCAibGlnaHRnb2xkZW5y
b2R5ZWxsb3ciLCAibGlnaHRncmF5IiwgImxpZ2h0Z3JlZW4iLCAibGlnaHRwaW5rIiwKQEAgLTQ0
MCwyMiArNDU3LDIyIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzLWJhc2UiLCBmdW5jdGlv
bihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICJhYm92ZSIsICJhYnNvbHV0ZSIsICJhY3Rp
dmVib3JkZXIiLCAiYWN0aXZlY2FwdGlvbiIsICJhZmFyIiwKICAgICAiYWZ0ZXItd2hpdGUtc3Bh
Y2UiLCAiYWhlYWQiLCAiYWxpYXMiLCAiYWxsIiwgImFsbC1zY3JvbGwiLCAiYWx0ZXJuYXRlIiwK
ICAgICAiYWx3YXlzIiwgImFtaGFyaWMiLCAiYW1oYXJpYy1hYmVnZWRlIiwgImFudGlhbGlhc2Vk
IiwgImFwcHdvcmtzcGFjZSIsCi0gICAgImFyYWJpYy1pbmRpYyIsICJhcm1lbmlhbiIsICJhc3Rl
cmlza3MiLCAiYXV0byIsICJhdm9pZCIsICJiYWNrZ3JvdW5kIiwKLSAgICAiYmFja3dhcmRzIiwg
ImJhc2VsaW5lIiwgImJlbG93IiwgImJpZGktb3ZlcnJpZGUiLCAiYmluYXJ5IiwgImJlbmdhbGki
LAotICAgICJibGluayIsICJibG9jayIsICJibG9jay1heGlzIiwgImJvbGQiLCAiYm9sZGVyIiwg
ImJvcmRlciIsICJib3JkZXItYm94IiwKLSAgICAiYm90aCIsICJib3R0b20iLCAiYnJlYWstYWxs
IiwgImJyZWFrLXdvcmQiLCAiYnV0dG9uIiwgImJ1dHRvbi1iZXZlbCIsCisgICAgImFyYWJpYy1p
bmRpYyIsICJhcm1lbmlhbiIsICJhc3Rlcmlza3MiLCAiYXV0byIsICJhdm9pZCIsICJhdm9pZC1j
b2x1bW4iLCAiYXZvaWQtcGFnZSIsCisgICAgImF2b2lkLXJlZ2lvbiIsICJiYWNrZ3JvdW5kIiwg
ImJhY2t3YXJkcyIsICJiYXNlbGluZSIsICJiZWxvdyIsICJiaWRpLW92ZXJyaWRlIiwgImJpbmFy
eSIsCisgICAgImJlbmdhbGkiLCAiYmxpbmsiLCAiYmxvY2siLCAiYmxvY2stYXhpcyIsICJib2xk
IiwgImJvbGRlciIsICJib3JkZXIiLCAiYm9yZGVyLWJveCIsCisgICAgImJvdGgiLCAiYm90dG9t
IiwgImJyZWFrIiwgImJyZWFrLWFsbCIsICJicmVhay13b3JkIiwgImJ1dHRvbiIsICJidXR0b24t
YmV2ZWwiLAogICAgICJidXR0b25mYWNlIiwgImJ1dHRvbmhpZ2hsaWdodCIsICJidXR0b25zaGFk
b3ciLCAiYnV0dG9udGV4dCIsICJjYW1ib2RpYW4iLAogICAgICJjYXBpdGFsaXplIiwgImNhcHMt
bG9jay1pbmRpY2F0b3IiLCAiY2FwdGlvbiIsICJjYXB0aW9udGV4dCIsICJjYXJldCIsCiAgICAg
ImNlbGwiLCAiY2VudGVyIiwgImNoZWNrYm94IiwgImNpcmNsZSIsICJjamstZWFydGhseS1icmFu
Y2giLAogICAgICJjamstaGVhdmVubHktc3RlbSIsICJjamstaWRlb2dyYXBoaWMiLCAiY2xlYXIi
LCAiY2xpcCIsICJjbG9zZS1xdW90ZSIsCi0gICAgImNvbC1yZXNpemUiLCAiY29sbGFwc2UiLCAi
Y29tcGFjdCIsICJjb25kZW5zZWQiLCAiY29udGFpbiIsICJjb250ZW50IiwKKyAgICAiY29sLXJl
c2l6ZSIsICJjb2xsYXBzZSIsICJjb2x1bW4iLCAiY29tcGFjdCIsICJjb25kZW5zZWQiLCAiY29u
dGFpbiIsICJjb250ZW50IiwKICAgICAiY29udGVudC1ib3giLCAiY29udGV4dC1tZW51IiwgImNv
bnRpbnVvdXMiLCAiY29weSIsICJjb3ZlciIsICJjcm9wIiwKICAgICAiY3Jvc3MiLCAiY3Jvc3No
YWlyIiwgImN1cnJlbnRjb2xvciIsICJjdXJzaXZlIiwgImRhc2hlZCIsICJkZWNpbWFsIiwKICAg
ICAiZGVjaW1hbC1sZWFkaW5nLXplcm8iLCAiZGVmYXVsdCIsICJkZWZhdWx0LWJ1dHRvbiIsICJk
ZXN0aW5hdGlvbi1hdG9wIiwKICAgICAiZGVzdGluYXRpb24taW4iLCAiZGVzdGluYXRpb24tb3V0
IiwgImRlc3RpbmF0aW9uLW92ZXIiLCAiZGV2YW5hZ2FyaSIsCiAgICAgImRpc2MiLCAiZGlzY2Fy
ZCIsICJkb2N1bWVudCIsICJkb3QtZGFzaCIsICJkb3QtZG90LWRhc2giLCAiZG90dGVkIiwKICAg
ICAiZG91YmxlIiwgImRvd24iLCAiZS1yZXNpemUiLCAiZWFzZSIsICJlYXNlLWluIiwgImVhc2Ut
aW4tb3V0IiwgImVhc2Utb3V0IiwKLSAgICAiZWxlbWVudCIsICJlbGxpcHNpcyIsICJlbWJlZCIs
ICJlbmQiLCAiZXRoaW9waWMiLCAiZXRoaW9waWMtYWJlZ2VkZSIsCisgICAgImVsZW1lbnQiLCAi
ZWxsaXBzZSIsICJlbGxpcHNpcyIsICJlbWJlZCIsICJlbmQiLCAiZXRoaW9waWMiLCAiZXRoaW9w
aWMtYWJlZ2VkZSIsCiAgICAgImV0aGlvcGljLWFiZWdlZGUtYW0tZXQiLCAiZXRoaW9waWMtYWJl
Z2VkZS1nZXoiLCAiZXRoaW9waWMtYWJlZ2VkZS10aS1lciIsCiAgICAgImV0aGlvcGljLWFiZWdl
ZGUtdGktZXQiLCAiZXRoaW9waWMtaGFsZWhhbWUtYWEtZXIiLAogICAgICJldGhpb3BpYy1oYWxl
aGFtZS1hYS1ldCIsICJldGhpb3BpYy1oYWxlaGFtZS1hbS1ldCIsCkBAIC00NzEsNyArNDg4LDcg
QEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZpZywgcGFy
c2VyQ29uZmlnKSB7CiAgICAgImluYWN0aXZlYm9yZGVyIiwgImluYWN0aXZlY2FwdGlvbiIsICJp
bmFjdGl2ZWNhcHRpb250ZXh0IiwgImluZmluaXRlIiwKICAgICAiaW5mb2JhY2tncm91bmQiLCAi
aW5mb3RleHQiLCAiaW5oZXJpdCIsICJpbml0aWFsIiwgImlubGluZSIsICJpbmxpbmUtYXhpcyIs
CiAgICAgImlubGluZS1ibG9jayIsICJpbmxpbmUtdGFibGUiLCAiaW5zZXQiLCAiaW5zaWRlIiwg
ImludHJpbnNpYyIsICJpbnZlcnQiLAotICAgICJpdGFsaWMiLCAianVzdGlmeSIsICJrYW5uYWRh
IiwgImthdGFrYW5hIiwgImthdGFrYW5hLWlyb2hhIiwgImtobWVyIiwKKyAgICAiaXRhbGljIiwg
Imp1c3RpZnkiLCAia2FubmFkYSIsICJrYXRha2FuYSIsICJrYXRha2FuYS1pcm9oYSIsICJrZWVw
LWFsbCIsICJraG1lciIsCiAgICAgImxhbmRzY2FwZSIsICJsYW8iLCAibGFyZ2UiLCAibGFyZ2Vy
IiwgImxlZnQiLCAibGV2ZWwiLCAibGlnaHRlciIsCiAgICAgImxpbmUtdGhyb3VnaCIsICJsaW5l
YXIiLCAibGluZXMiLCAibGlzdC1pdGVtIiwgImxpc3Rib3giLCAibGlzdGl0ZW0iLAogICAgICJs
b2NhbCIsICJsb2dpY2FsIiwgImxvdWQiLCAibG93ZXIiLCAibG93ZXItYWxwaGEiLCAibG93ZXIt
YXJtZW5pYW4iLApAQCAtNDkwLDExICs1MDcsMTEgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJj
c3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgIm5vLW9wZW4t
cXVvdGUiLCAibm8tcmVwZWF0IiwgIm5vbmUiLCAibm9ybWFsIiwgIm5vdC1hbGxvd2VkIiwgIm5v
d3JhcCIsCiAgICAgIm5zLXJlc2l6ZSIsICJudy1yZXNpemUiLCAibndzZS1yZXNpemUiLCAib2Js
aXF1ZSIsICJvY3RhbCIsICJvcGVuLXF1b3RlIiwKICAgICAib3B0aW1pemVMZWdpYmlsaXR5Iiwg
Im9wdGltaXplU3BlZWQiLCAib3JpeWEiLCAib3JvbW8iLCAib3V0c2V0IiwKLSAgICAib3V0c2lk
ZSIsICJvdmVybGF5IiwgIm92ZXJsaW5lIiwgInBhZGRpbmciLCAicGFkZGluZy1ib3giLCAicGFp
bnRlZCIsCi0gICAgInBhdXNlZCIsICJwZXJzaWFuIiwgInBsdXMtZGFya2VyIiwgInBsdXMtbGln
aHRlciIsICJwb2ludGVyIiwgInBvcnRyYWl0IiwKLSAgICAicHJlIiwgInByZS1saW5lIiwgInBy
ZS13cmFwIiwgInByZXNlcnZlLTNkIiwgInByb2dyZXNzIiwgInB1c2gtYnV0dG9uIiwKLSAgICAi
cmFkaW8iLCAicmVhZC1vbmx5IiwgInJlYWQtd3JpdGUiLCAicmVhZC13cml0ZS1wbGFpbnRleHQt
b25seSIsICJyZWxhdGl2ZSIsCi0gICAgInJlcGVhdCIsICJyZXBlYXQteCIsICJyZXBlYXQteSIs
ICJyZXNldCIsICJyZXZlcnNlIiwgInJnYiIsICJyZ2JhIiwKKyAgICAib3V0c2lkZSIsICJvdXRz
aWRlLXNoYXBlIiwgIm92ZXJsYXkiLCAib3ZlcmxpbmUiLCAicGFkZGluZyIsICJwYWRkaW5nLWJv
eCIsCisgICAgInBhaW50ZWQiLCAicGFnZSIsICJwYXVzZWQiLCAicGVyc2lhbiIsICJwbHVzLWRh
cmtlciIsICJwbHVzLWxpZ2h0ZXIiLCAicG9pbnRlciIsCisgICAgInBvbHlnb24iLCAicG9ydHJh
aXQiLCAicHJlIiwgInByZS1saW5lIiwgInByZS13cmFwIiwgInByZXNlcnZlLTNkIiwgInByb2dy
ZXNzIiwgInB1c2gtYnV0dG9uIiwKKyAgICAicmFkaW8iLCAicmVhZC1vbmx5IiwgInJlYWQtd3Jp
dGUiLCAicmVhZC13cml0ZS1wbGFpbnRleHQtb25seSIsICJyZWN0YW5nbGUiLCAicmVnaW9uIiwK
KyAgICAicmVsYXRpdmUiLCAicmVwZWF0IiwgInJlcGVhdC14IiwgInJlcGVhdC15IiwgInJlc2V0
IiwgInJldmVyc2UiLCAicmdiIiwgInJnYmEiLAogICAgICJyaWRnZSIsICJyaWdodCIsICJyb3Vu
ZCIsICJyb3ctcmVzaXplIiwgInJ0bCIsICJydW4taW4iLCAicnVubmluZyIsCiAgICAgInMtcmVz
aXplIiwgInNhbnMtc2VyaWYiLCAic2Nyb2xsIiwgInNjcm9sbGJhciIsICJzZS1yZXNpemUiLCAi
c2VhcmNoZmllbGQiLAogICAgICJzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uIiwgInNlYXJjaGZp
ZWxkLWRlY29yYXRpb24iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2NyaXB0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2NyaXB0Lmpz
CmluZGV4IDNkMDQ2MDMuLmU4YWNlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvamF2YXNjcmlwdC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2ph
dmFzY3JpcHQuanMKQEAgLTc4LDE4ICs3OCwxOSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImph
dmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIHR5cGUgPSB0
cDsgY29udGVudCA9IGNvbnQ7CiAgICAgcmV0dXJuIHN0eWxlOwogICB9Ci0KICAgZnVuY3Rpb24g
anNUb2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgewogICAgIHZhciBjaCA9IHN0cmVhbS5uZXh0KCk7
CiAgICAgaWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpCiAgICAgICByZXR1cm4gY2hhaW4oc3Ry
ZWFtLCBzdGF0ZSwganNUb2tlblN0cmluZyhjaCkpOworICAgIGVsc2UgaWYgKGNoID09ICIuIiAm
JiBzdHJlYW0ubWF0Y2goL15cZCsoPzpbZUVdWytcLV0/XGQrKT8vKSkKKyAgICAgIHJldHVybiBy
ZXQoIm51bWJlciIsICJudW1iZXIiKTsKICAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5d
Ly50ZXN0KGNoKSkKICAgICAgIHJldHVybiByZXQoY2gpOwogICAgIGVsc2UgaWYgKGNoID09ICIw
IiAmJiBzdHJlYW0uZWF0KC94L2kpKSB7CiAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcZGEtZl0v
aSk7CiAgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7CiAgICAgfQotICAgIGVs
c2UgaWYgKC9cZC8udGVzdChjaCkgfHwgY2ggPT0gIi0iICYmIHN0cmVhbS5lYXQoL1xkLykpIHsK
KyAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CiAgICAgICBzdHJlYW0ubWF0Y2goL15cZCoo
PzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/Lyk7CiAgICAgICByZXR1cm4gcmV0KCJudW1iZXIi
LCAibnVtYmVyIik7CiAgICAgfQpAQCAtMjk5LDE0ICszMDAsMTUgQEAgQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKIAog
ICBmdW5jdGlvbiBtYXliZW9wZXJhdG9yQ29tbWEodHlwZSwgdmFsdWUpIHsKICAgICBpZiAodHlw
ZSA9PSAiLCIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOwotICAgIHJldHVybiBtYXliZW9wZXJh
dG9yTm9Db21tYSh0eXBlLCB2YWx1ZSwgbWF5YmVvcGVyYXRvckNvbW1hKTsKKyAgICByZXR1cm4g
bWF5YmVvcGVyYXRvck5vQ29tbWEodHlwZSwgdmFsdWUsIGZhbHNlKTsKICAgfQotICBmdW5jdGlv
biBtYXliZW9wZXJhdG9yTm9Db21tYSh0eXBlLCB2YWx1ZSwgbWUpIHsKLSAgICBpZiAoIW1lKSBt
ZSA9IG1heWJlb3BlcmF0b3JOb0NvbW1hOworICBmdW5jdGlvbiBtYXliZW9wZXJhdG9yTm9Db21t
YSh0eXBlLCB2YWx1ZSwgbm9Db21tYSkgeworICAgIHZhciBtZSA9IG5vQ29tbWEgPT0gZmFsc2Ug
PyBtYXliZW9wZXJhdG9yQ29tbWEgOiBtYXliZW9wZXJhdG9yTm9Db21tYTsKKyAgICB2YXIgZXhw
ciA9IG5vQ29tbWEgPT0gZmFsc2UgPyBleHByZXNzaW9uIDogZXhwcmVzc2lvbk5vQ29tbWE7CiAg
ICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgewogICAgICAgaWYgKC9cK1wrfC0tLy50ZXN0KHZh
bHVlKSkgcmV0dXJuIGNvbnQobWUpOwotICAgICAgaWYgKHZhbHVlID09ICI/IikgcmV0dXJuIGNv
bnQoZXhwcmVzc2lvbiwgZXhwZWN0KCI6IiksIGV4cHJlc3Npb24pOwotICAgICAgcmV0dXJuIGNv
bnQoZXhwcmVzc2lvbik7CisgICAgICBpZiAodmFsdWUgPT0gIj8iKSByZXR1cm4gY29udChleHBy
ZXNzaW9uLCBleHBlY3QoIjoiKSwgZXhwcik7CisgICAgICByZXR1cm4gY29udChleHByKTsKICAg
ICB9CiAgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm47CiAgICAgaWYgKHR5cGUgPT0gIigiKSBy
ZXR1cm4gY29udChwdXNobGV4KCIpIiwgImNhbGwiKSwgY29tbWFzZXAoZXhwcmVzc2lvbk5vQ29t
bWEsICIpIiksIHBvcGxleCwgbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3htbC5qcwppbmRleCAw
N2RiMjk5Li41MzI4NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3htbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3htbC5qcwpAQCAtMSw2ICsx
LDcgQEAKIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgieG1sIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJz
ZXJDb25maWcpIHsKICAgdmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5pdDsKICAgdmFy
IG11bHRpbGluZVRhZ0luZGVudEZhY3RvciA9IHBhcnNlckNvbmZpZy5tdWx0aWxpbmVUYWdJbmRl
bnRGYWN0b3IgfHwgMTsKKyAgdmFyIG11bHRpbGluZVRhZ0luZGVudFBhc3RUYWcgPSBwYXJzZXJD
b25maWcubXVsdGlsaW5lVGFnSW5kZW50UGFzdFRhZyB8fCB0cnVlOwogCiAgIHZhciBLbHVkZ2Vz
ID0gcGFyc2VyQ29uZmlnLmh0bWxNb2RlID8gewogICAgIGF1dG9TZWxmQ2xvc2VyczogeydhcmVh
JzogdHJ1ZSwgJ2Jhc2UnOiB0cnVlLCAnYnInOiB0cnVlLCAnY29sJzogdHJ1ZSwgJ2NvbW1hbmQn
OiB0cnVlLApAQCAtMTExLDYgKzExMiw3IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgieG1sIiwg
ZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgIHJldHVybiAiZXJyb3IiOwog
ICAgIH0gZWxzZSBpZiAoL1tcJ1wiXS8udGVzdChjaCkpIHsKICAgICAgIHN0YXRlLnRva2VuaXpl
ID0gaW5BdHRyaWJ1dGUoY2gpOworICAgICAgc3RhdGUuc3RyaW5nU3RhcnRDb2wgPSBzdHJlYW0u
Y29sdW1uKCk7CiAgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW15cc1x1MDBhMD08PlwiXCddLyk7
CkBAIC0xMTksNyArMTIxLDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJ4bWwiLCBmdW5jdGlv
bihjb25maWcsIHBhcnNlckNvbmZpZykgewogICB9CiAKICAgZnVuY3Rpb24gaW5BdHRyaWJ1dGUo
cXVvdGUpIHsKLSAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBj
bG9zdXJlID0gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewogICAgICAgd2hpbGUgKCFzdHJlYW0u
ZW9sKCkpIHsKICAgICAgICAgaWYgKHN0cmVhbS5uZXh0KCkgPT0gcXVvdGUpIHsKICAgICAgICAg
ICBzdGF0ZS50b2tlbml6ZSA9IGluVGFnOwpAQCAtMTI4LDYgKzEzMCw4IEBAIENvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSgieG1sIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAg
IH0KICAgICAgIHJldHVybiAic3RyaW5nIjsKICAgICB9OworICAgIGNsb3N1cmUuaXNJbkF0dHJp
YnV0ZSA9IHRydWU7CisgICAgcmV0dXJuIGNsb3N1cmU7CiAgIH0KIAogICBmdW5jdGlvbiBpbkJs
b2NrKHN0eWxlLCB0ZXJtaW5hdG9yKSB7CkBAIC0yNTcsNyArMjYxLDcgQEAgQ29kZU1pcnJvci5k
ZWZpbmVNb2RlKCJ4bWwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICBmdW5j
dGlvbiBhdHRyaWJ1dGUodHlwZSkgewogICAgIGlmICh0eXBlID09ICJlcXVhbHMiKSByZXR1cm4g
Y29udChhdHR2YWx1ZSwgYXR0cmlidXRlcyk7CiAgICAgaWYgKCFLbHVkZ2VzLmFsbG93TWlzc2lu
Zykgc2V0U3R5bGUgPSAiZXJyb3IiOwotICAgIGVsc2UgaWYgKHR5cGUgPT0gIndvcmQiKSBzZXRT
dHlsZSA9ICJhdHRyaWJ1dGUiOworICAgIGVsc2UgaWYgKHR5cGUgPT0gIndvcmQiKSB7c2V0U3R5
bGUgPSAiYXR0cmlidXRlIjsgcmV0dXJuIGNvbnQoYXR0cmlidXRlLCBhdHRyaWJ1dGVzKTt9CiAg
ICAgcmV0dXJuICh0eXBlID09ICJlbmRUYWciIHx8IHR5cGUgPT0gInNlbGZjbG9zZVRhZyIpID8g
cGFzcygpIDogY29udCgpOwogICB9CiAgIGZ1bmN0aW9uIGF0dHZhbHVlKHR5cGUpIHsKQEAgLTI5
OSwxMCArMzAzLDIwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgieG1sIiwgZnVuY3Rpb24oY29u
ZmlnLCBwYXJzZXJDb25maWcpIHsKIAogICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRB
ZnRlciwgZnVsbExpbmUpIHsKICAgICAgIHZhciBjb250ZXh0ID0gc3RhdGUuY29udGV4dDsKKyAg
ICAgIC8vIEluZGVudCBtdWx0aS1saW5lIHN0cmluZ3MgKGUuZy4gY3NzKS4KKyAgICAgIGlmIChz
dGF0ZS50b2tlbml6ZS5pc0luQXR0cmlidXRlKSB7CisgICAgICAgIHJldHVybiBzdGF0ZS5zdHJp
bmdTdGFydENvbCArIDE7CisgICAgICB9CiAgICAgICBpZiAoKHN0YXRlLnRva2VuaXplICE9IGlu
VGFnICYmIHN0YXRlLnRva2VuaXplICE9IGluVGV4dCkgfHwKICAgICAgICAgICBjb250ZXh0ICYm
IGNvbnRleHQubm9JbmRlbnQpCiAgICAgICAgIHJldHVybiBmdWxsTGluZSA/IGZ1bGxMaW5lLm1h
dGNoKC9eKFxzKikvKVswXS5sZW5ndGggOiAwOwotICAgICAgaWYgKHN0YXRlLnRhZ05hbWUpIHJl
dHVybiBzdGF0ZS50YWdTdGFydCArIGluZGVudFVuaXQgKiBtdWx0aWxpbmVUYWdJbmRlbnRGYWN0
b3I7CisgICAgICAvLyBJbmRlbnQgdGhlIHN0YXJ0cyBvZiBhdHRyaWJ1dGUgbmFtZXMuCisgICAg
ICBpZiAoc3RhdGUudGFnTmFtZSkgeworICAgICAgICBpZiAobXVsdGlsaW5lVGFnSW5kZW50UGFz
dFRhZykKKyAgICAgICAgICByZXR1cm4gc3RhdGUudGFnU3RhcnQgKyBzdGF0ZS50YWdOYW1lLmxl
bmd0aCArIDI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICByZXR1cm4gc3RhdGUudGFnU3RhcnQg
KyBpbmRlbnRVbml0ICogbXVsdGlsaW5lVGFnSW5kZW50RmFjdG9yOworICAgICAgfQogICAgICAg
aWYgKGFsaWduQ0RBVEEgJiYgLzwhXFtDREFUQVxbLy50ZXN0KHRleHRBZnRlcikpIHJldHVybiAw
OwogICAgICAgaWYgKGNvbnRleHQgJiYgL148XC8vLnRlc3QodGV4dEFmdGVyKSkKICAgICAgICAg
Y29udGV4dCA9IGNvbnRleHQucHJldjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>