<?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>137598</bug_id>
          
          <creation_ts>2014-10-10 01:23:15 -0700</creation_ts>
          <short_desc>Style fixes in FTPDirectoryParser</short_desc>
          <delta_ts>2023-12-23 02:09:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>221675</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrien Destugues">pulkomandy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annevk</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040843</commentid>
    <comment_count>0</comment_count>
    <who name="Adrien Destugues">pulkomandy</who>
    <bug_when>2014-10-10 01:23:15 -0700</bug_when>
    <thetext>Style fixes in FTPDirectoryParser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040844</commentid>
    <comment_count>1</comment_count>
      <attachid>239607</attachid>
    <who name="Adrien Destugues">pulkomandy</who>
    <bug_when>2014-10-10 01:23:52 -0700</bug_when>
    <thetext>Created attachment 239607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040847</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 01:26:03 -0700</bug_when>
    <thetext>Attachment 239607 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040869</commentid>
    <comment_count>3</comment_count>
      <attachid>239613</attachid>
    <who name="Adrien Destugues">pulkomandy</who>
    <bug_when>2014-10-10 03:01:13 -0700</bug_when>
    <thetext>Created attachment 239613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040879</commentid>
    <comment_count>4</comment_count>
      <attachid>239613</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-10-10 03:37:40 -0700</bug_when>
    <thetext>Comment on attachment 239613
Patch

We don&apos;t do only style fixes, because it would broke the git/svn blame of the files.
( https://lists.webkit.org/pipermail/webkit-dev/2011-October/018324.html )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040880</commentid>
    <comment_count>5</comment_count>
      <attachid>239613</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-10-10 03:50:18 -0700</bug_when>
    <thetext>Comment on attachment 239613
Patch

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

&gt; Source/WebCore/loader/FTPDirectoryParser.cpp:1035
&gt; +                    int now = (state.nowFTPTime.tm_mon &lt;&lt; 5) + state.nowFTPTime.tm_mday;
&gt; +                    int modifiedTime = (state.modifiedTime.tm_mon &lt;&lt; 5) + state.modifiedTime.tm_mday;
&gt; +                    if (now &lt; modified)
&gt; +                        result.modifiedTime.tm_year--;

It isn&apos;t a style change only, you introduced new temporary variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040887</commentid>
    <comment_count>6</comment_count>
    <who name="Adrien Destugues">pulkomandy</who>
    <bug_when>2014-10-10 04:08:19 -0700</bug_when>
    <thetext>Ok, my goal is to submit a fix for https://bugs.webkit.org/show_bug.cgi?id=45113 (which is just a one-line fix). Should I ignore style issues in the file then?

The code could also use some refactoring, but there is no testsuite for FTP dir support and I&apos;m not sure if it&apos;s possible to add that without an actual collection of FTP servers. So I&apos;m not willing to do more invasive changes there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2001711</commentid>
    <comment_count>7</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2023-12-23 02:09:11 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 221675 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239607</attachid>
            <date>2014-10-10 01:23:52 -0700</date>
            <delta_ts>2014-10-10 03:01:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137598-20141010102454.patch</filename>
            <type>text/plain</type>
            <size>137564</size>
            <attacher name="Adrien Destugues">pulkomandy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQxNWEyNjRiNDg0YWVm
NjI3ZWZmNDU0OGJhYjMwNTNmZWY3NDVjZS4uOTRiY2Q4NjZhY2MxZTMxZjBjZmUxODdiYWM1OWE2
ZGEwZGZhNzRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTEwLTEwICBBZHJp
ZW4gRGVzdHVndWVzICA8cHVsa29tYW5keUBnbWFpbC5jb20+CisKKyAgICAgICAgU3R5bGUgZml4
ZXMgaW4gRlRQRGlyZWN0b3J5UGFyc2VyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBvbmx5IHN0eWxlIGZpeGVzLCBubyBmdW5j
dGlvbmFsIGNoYW5nZS4KKworICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFyc2luZ0ZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZU9uZUZUUExpbmUpOgorCiAyMDE0LTEwLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgRm9udERhdGEg
c3ViY2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9y
eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNw
cAppbmRleCAxNWE3ODEyYmYwN2RjNmI4MGU3M2ZkZjBhZjA5OTY1NGIxNzc4MDY3Li5hOTJkMDM1
YTAzMWEwN2M1YTM2MDBmNjUwMGFhZTBlOGNmYTliOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUg
PHB0aHJlYWQuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXVEY7CiAKQEAgLTQxLDE2MzIgKzQxLDE0NDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgaW5saW5lIEZUUEVudHJ5VHlwZSBQYXJzaW5nRmFpbGVkKExpc3RTdGF0ZSYgc3Rh
dGUpCiB7Ci0gIGlmIChzdGF0ZS5wYXJzZWRPbmUgfHwgc3RhdGUubGlzdFN0eWxlKSAvKiBqdW5r
IGlmIHdlIGZhaWwgdG8gcGFyc2UgKi8KLSAgICByZXR1cm4gRlRQSnVua0VudHJ5OyAgICAgIC8q
IHRoaXMgdGltZSBidXQgaGFkIHByZXZpb3VzbHkgcGFyc2VkIHN1Y2Vzc2Z1bGx5ICovCi0gIHJl
dHVybiBGVFBNaXNjRW50cnk7ICAgICAgICAvKiBpdHMgcGFydCBvZiBhIGNvbW1lbnQgb3IgZXJy
b3IgbWVzc2FnZSAqLworICAgIGlmIChzdGF0ZS5wYXJzZWRPbmUgfHwgc3RhdGUubGlzdFN0eWxl
KSAvKiBqdW5rIGlmIHdlIGZhaWwgdG8gcGFyc2UgKi8KKyAgICAgICAgcmV0dXJuIEZUUEp1bmtF
bnRyeTsgICAgICAvKiB0aGlzIHRpbWUgYnV0IGhhZCBwcmV2aW91c2x5IHBhcnNlZCBzdWNlc3Nm
dWxseSAqLworICAgIHJldHVybiBGVFBNaXNjRW50cnk7ICAgICAgICAvKiBpdHMgcGFydCBvZiBh
IGNvbW1lbnQgb3IgZXJyb3IgbWVzc2FnZSAqLwogfQogCiBGVFBFbnRyeVR5cGUgcGFyc2VPbmVG
VFBMaW5lKGNvbnN0IGNoYXIqIGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUsIExpc3RSZXN1bHQmIHJl
c3VsdCkKIHsKLSAgcmVzdWx0LmNsZWFyKCk7Ci0gICAgCi0gIGlmICghbGluZSkKLSAgICByZXR1
cm4gRlRQSnVua0VudHJ5OwotCi0gIHN0YXRlLm51bUxpbmVzKys7Ci0KLSAgLyogY2FycnkgYnVm
ZmVyIGlzIG9ubHkgdmFsaWQgZnJvbSBvbmUgbGluZSB0byB0aGUgbmV4dCAqLwotICB1bnNpZ25l
ZCBpbnQgY2FycnlfYnVmX2xlbiA9IHN0YXRlLmNhcnJ5QnVmZmVyTGVuZ3RoOwotICBzdGF0ZS5j
YXJyeUJ1ZmZlckxlbmd0aCA9IDA7Ci0KLSAgdW5zaWduZWQgbGluZWxlbiA9IDA7Ci0KLSAgLyog
c3RyaXAgbGVhZGluZyB3aGl0ZXNwYWNlICovCi0gIHdoaWxlICgqbGluZSA9PSAnICcgfHwgKmxp
bmUgPT0gJ1x0JykKLSAgICBsaW5lKys7Ci0gIAotICAvKiBsaW5lIGlzIHRlcm1pbmF0ZWQgYXQg
Zmlyc3QgJ1wwJyBvciAnXG4nICovCi0gIGNvbnN0IGNoYXIqIHAgPSBsaW5lOwotICB3aGlsZSAo
KnAgJiYgKnAgIT0gJ1xuJykKLSAgICBwKys7Ci0gIGxpbmVsZW4gPSBwIC0gbGluZTsKLQotICBp
ZiAobGluZWxlbiA+IDAgJiYgKnAgPT0gJ1xuJyAmJiAqKHAtMSkgPT0gJ1xyJykKLSAgICBsaW5l
bGVuLS07Ci0KLSAgLyogRE9OJ1Qgc3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi8KLQotICBp
ZiAobGluZWxlbiA+IDApCi0gIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqbW9udGhfbmFtZXMg
PSAiSmFuRmViTWFyQXByTWF5SnVuSnVsQXVnU2VwT2N0Tm92RGVjIjsKLSAgICBjb25zdCBjaGFy
ICp0b2tlbnNbMTZdOyAvKiAxNiBpcyBtb3JlIHRoYW4gZW5vdWdoICovCi0gICAgdW5zaWduZWQg
aW50IHRva2xlbltXVEZfQVJSQVlfTEVOR1RIKHRva2VucyldOwotICAgIHVuc2lnbmVkIGludCBs
aW5lbGVuX3NhbnNfd3NwOyAgLy8gbGluZSBsZW5ndGggc2FucyB3aGl0ZXNwYWNlCi0gICAgdW5z
aWduZWQgaW50IG51bXRva3MgPSAwOwotICAgIHVuc2lnbmVkIGludCB0b2ttYXJrZXIgPSAwOyAv
KiBleHRyYSBpbmZvIGZvciBsc3R5bGUgaGFuZGxlciAqLwotICAgIHVuc2lnbmVkIGludCBtb250
aF9udW0gPSAwOwotICAgIGNoYXIgdGJ1Zls0XTsKLSAgICBpbnQgbHN0eWxlID0gMDsKLQotICAg
IGlmIChjYXJyeV9idWZfbGVuKSAvKiBWTVMgbG9uZyBmaWxlbmFtZSBjYXJyeW92ZXIgYnVmZmVy
ICovCi0gICAgewotICAgICAgdG9rZW5zWzBdID0gc3RhdGUuY2FycnlCdWZmZXI7Ci0gICAgICB0
b2tsZW5bMF0gPSBjYXJyeV9idWZfbGVuOwotICAgICAgbnVtdG9rcysrOwotICAgIH0KLQotICAg
IHVuc2lnbmVkIGludCBwb3MgPSAwOwotICAgIHdoaWxlIChwb3MgPCBsaW5lbGVuICYmIG51bXRv
a3MgPCBXVEZfQVJSQVlfTEVOR1RIKHRva2VucykpCi0gICAgewotICAgICAgd2hpbGUgKHBvcyA8
IGxpbmVsZW4gJiYgCi0gICAgICAgICAgICAobGluZVtwb3NdID09ICcgJyB8fCBsaW5lW3Bvc10g
PT0gJ1x0JyB8fCBsaW5lW3Bvc10gPT0gJ1xyJykpCi0gICAgICAgIHBvcysrOwotICAgICAgaWYg
KHBvcyA8IGxpbmVsZW4pCi0gICAgICB7Ci0gICAgICAgIHRva2Vuc1tudW10b2tzXSA9ICZsaW5l
W3Bvc107Ci0gICAgICAgIHdoaWxlIChwb3MgPCBsaW5lbGVuICYmIAotICAgICAgICAgICAobGlu
ZVtwb3NdICE9ICcgJyAmJiBsaW5lW3Bvc10gIT0gJ1x0JyAmJiBsaW5lW3Bvc10gIT0gJ1xyJykp
Ci0gICAgICAgICAgcG9zKys7Ci0gICAgICAgIGlmICh0b2tlbnNbbnVtdG9rc10gIT0gJmxpbmVb
cG9zXSkKLSAgICAgICAgewotICAgICAgICAgIHRva2xlbltudW10b2tzXSA9ICgmbGluZVtwb3Nd
IC0gdG9rZW5zW251bXRva3NdKTsKLSAgICAgICAgICBudW10b2tzKys7ICAKKyAgICByZXN1bHQu
Y2xlYXIoKTsKKworICAgIGlmICghbGluZSkKKyAgICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsK
KworICAgIHN0YXRlLm51bUxpbmVzKys7CisKKyAgICAvKiBjYXJyeSBidWZmZXIgaXMgb25seSB2
YWxpZCBmcm9tIG9uZSBsaW5lIHRvIHRoZSBuZXh0ICovCisgICAgdW5zaWduZWQgY2FycnlCdWZM
ZW5ndGggPSBzdGF0ZS5jYXJyeUJ1ZmZlckxlbmd0aDsKKyAgICBzdGF0ZS5jYXJyeUJ1ZmZlckxl
bmd0aCA9IDA7CisKKyAgICB1bnNpZ25lZCBsaW5lbGVuID0gMDsKKworICAgIC8qIHN0cmlwIGxl
YWRpbmcgd2hpdGVzcGFjZSAqLworICAgIHdoaWxlICgqbGluZSA9PSAnICcgfHwgKmxpbmUgPT0g
J1x0JykKKyAgICAgICAgbGluZSsrOworCisgICAgLyogbGluZSBpcyB0ZXJtaW5hdGVkIGF0IGZp
cnN0ICdcMCcgb3IgJ1xuJyAqLworICAgIGNvbnN0IGNoYXIqIHAgPSBsaW5lOworICAgIHdoaWxl
ICgqcCAmJiAqcCAhPSAnXG4nKQorICAgICAgICBwKys7CisgICAgbGluZWxlbiA9IHAgLSBsaW5l
OworCisgICAgaWYgKGxpbmVsZW4gPiAwICYmICpwID09ICdcbicgJiYgKihwLTEpID09ICdccicp
CisgICAgICAgIGxpbmVsZW4tLTsKKworICAgIC8qIERPTidUIHN0cmlwIHRyYWlsaW5nIHdoaXRl
c3BhY2UuICovCisKKyAgICBpZiAobGluZWxlbiA+IDApIHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIG1vbnRoTmFtZXMgPSAiSmFuRmViTWFyQXByTWF5SnVuSnVsQXVnU2VwT2N0Tm92RGVj
IjsKKyAgICAgICAgY29uc3QgY2hhciogdG9rZW5zWzE2XTsgLyogMTYgaXMgbW9yZSB0aGFuIGVu
b3VnaCAqLworICAgICAgICB1bnNpZ25lZCB0b2tsZW5bV1RGX0FSUkFZX0xFTkdUSCh0b2tlbnMp
XTsKKyAgICAgICAgdW5zaWduZWQgc3RyaXBwZWRMaW5lTGVuZ3RoOyAvLyBsaW5lIGxlbmd0aCBz
YW5zIHdoaXRlc3BhY2UKKyAgICAgICAgdW5zaWduZWQgbnVtdG9rcyA9IDA7CisgICAgICAgIHVu
c2lnbmVkIHRva21hcmtlciA9IDA7IC8qIGV4dHJhIGluZm8gZm9yIGxzdHlsZSBoYW5kbGVyICov
CisgICAgICAgIHVuc2lnbmVkIG1vbnRoTnVtID0gMDsKKyAgICAgICAgY2hhciB0YnVmWzRdOwor
ICAgICAgICBpbnQgbHN0eWxlID0gMDsKKworICAgICAgICBpZiAoY2FycnlCdWZMZW5ndGgpIHsg
LyogVk1TIGxvbmcgZmlsZW5hbWUgY2FycnlvdmVyIGJ1ZmZlciAqLworICAgICAgICAgICAgdG9r
ZW5zWzBdID0gc3RhdGUuY2FycnlCdWZmZXI7CisgICAgICAgICAgICB0b2tsZW5bMF0gPSBjYXJy
eUJ1Zkxlbmd0aDsKKyAgICAgICAgICAgIG51bXRva3MrKzsKICAgICAgICAgfQotICAgICAgfQot
ICAgIH0gICAgCi0KLSAgICBpZiAoIW51bXRva3MpCi0gICAgICByZXR1cm4gUGFyc2luZ0ZhaWxl
ZChzdGF0ZSk7Ci0KLSAgICBsaW5lbGVuX3NhbnNfd3NwID0gJih0b2tlbnNbbnVtdG9rcy0xXVt0
b2tsZW5bbnVtdG9rcy0xXV0pIC0gdG9rZW5zWzBdOwotICAgIGlmIChudW10b2tzID09IFdURl9B
UlJBWV9MRU5HVEgodG9rZW5zKSkKLSAgICB7Ci0gICAgICBwb3MgPSBsaW5lbGVuOwotICAgICAg
d2hpbGUgKHBvcyA+IDAgJiYgKGxpbmVbcG9zLTFdID09ICcgJyB8fCBsaW5lW3Bvcy0xXSA9PSAn
XHQnKSkKLSAgICAgICAgcG9zLS07Ci0gICAgICBsaW5lbGVuX3NhbnNfd3NwID0gcG9zOwotICAg
IH0KLQotICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrICovCi0jaWYgZGVmaW5lZChTVVBQT1JUX0VQTEYpCi0gICAgLyogRVBM
RiBoYW5kbGluZyBtdXN0IGNvbWUgc29tZXdoZXJlIGJlZm9yZSAvYmluL2RscyBoYW5kbGluZy4g
Ki8KLSAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5
bGUgPT0gJ0UnKSkKLSAgICB7Ci0gICAgICBpZiAoKmxpbmUgPT0gJysnICYmIGxpbmVsZW4gPiA0
ICYmIG51bXRva3MgPj0gMikKLSAgICAgIHsKLSAgICAgICAgcG9zID0gMTsKLSAgICAgICAgd2hp
bGUgKHBvcyA8IChsaW5lbGVuLTEpKQotICAgICAgICB7Ci0gICAgICAgICAgcCA9ICZsaW5lW3Bv
cysrXTsKLSAgICAgICAgICBpZiAoKnAgPT0gJy8nKSAKLSAgICAgICAgICAgIHJlc3VsdC50eXBl
ID0gRlRQRGlyZWN0b3J5RW50cnk7IC8qIGl0cyBhIGRpciAqLwotICAgICAgICAgIGVsc2UgaWYg
KCpwID09ICdyJykKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRmlsZUVudHJ5OyAvKiBp
dHMgYSBmaWxlICovCi0gICAgICAgICAgZWxzZSBpZiAoKnAgPT0gJ20nKQotICAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQobGluZVtwb3NdKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgaXNBU0NJSURpZ2l0KGxpbmVb
cG9zXSkpCi0gICAgICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICAgIGlmIChwb3MgPCBs
aW5lbGVuICYmIGxpbmVbcG9zXSA9PSAnLCcpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2Vjb25kcyA9IDA7Ci0gICAgICAgICAgICAgICAgc3Nj
YW5mKHAgKyAxLCAiJWxsdSIsICZzZWNvbmRzKTsKLSAgICAgICAgICAgICAgICB0aW1lX3QgdCA9
IHN0YXRpY19jYXN0PHRpbWVfdD4oc2Vjb25kcyk7Ci0KLSAgICAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIGhhcyB0aGUgeWVhciAyMDM4IGJ1ZwotICAgICAgICAgICAgICAgIGdtdGlt
ZV9yKCZ0LCAmcmVzdWx0Lm1vZGlmaWVkVGltZSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0Lm1v
ZGlmaWVkVGltZS50bV95ZWFyICs9IDE5MDA7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoKnAgPT0gJ3MnKQotICAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQobGluZVtwb3NdKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgaXNBU0NJSURpZ2l0KGxp
bmVbcG9zXSkpCisKKyAgICAgICAgdW5zaWduZWQgcG9zID0gMDsKKyAgICAgICAgd2hpbGUgKHBv
cyA8IGxpbmVsZW4gJiYgbnVtdG9rcyA8IFdURl9BUlJBWV9MRU5HVEgodG9rZW5zKSkgeworICAg
ICAgICAgICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4KKyAgICAgICAgICAgICAgICAmJiAobGluZVtw
b3NdID09ICcgJyB8fCBsaW5lW3Bvc10gPT0gJ1x0JyB8fCBsaW5lW3Bvc10gPT0gJ1xyJykpCiAg
ICAgICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICAgIGlmIChwb3MgPCBsaW5lbGVuICYm
IGxpbmVbcG9zXSA9PSAnLCcpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVTaXplID0gU3Ry
aW5nKHAgKyAxLCAmbGluZVtwb3NdIC0gcCArIDEpOwotICAgICAgICAgICAgfQotICAgICAgICAg
IH0KLSAgICAgICAgICBlbHNlIGlmIChpc0FTQ0lJQWxwaGEoKnApKSAvKiAnaScvJ3VwJyBvciB1
bmtub3duICJmYWN0IiAocHJvcGVydHkpICovCi0gICAgICAgICAgewotICAgICAgICAgICAgd2hp
bGUgKHBvcyA8IGxpbmVsZW4gJiYgKisrcCAhPSAnLCcpCi0gICAgICAgICAgICAgIHBvcysrOwot
ICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmICgqcCAhPSAnXHQnIHx8IChwKzEpICE9IHRv
a2Vuc1sxXSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBicmVhazsgLyogaXRzIG5vdCBFUExG
IGFmdGVyIGFsbCAqLwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKLSAgICAgICAgICAgIHN0YXRlLmxp
c3RTdHlsZSA9IGxzdHlsZSA9ICdFJzsKLQotICAgICAgICAgICAgcCA9ICYobGluZVtsaW5lbGVu
X3NhbnNfd3NwXSk7Ci0gICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMV07Ci0g
ICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGggPSBwIC0gdG9rZW5zWzFdOwotCi0gICAg
ICAgICAgICBpZiAoIXJlc3VsdC50eXBlKSAvKiBhY2Nlc3MgZGVuaWVkICovCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRmlsZUVudHJ5OyAvKiBpcyBhc3N1
bWluZyAnZidpbGUgY29ycmVjdD8gKi8KLSAgICAgICAgICAgICAgcmV0dXJuIEZUUEp1bmtFbnRy
eTsgICAgICAgICAgICAvKiBOTyEganVuayBpdC4gKi8KKyAgICAgICAgICAgIGlmIChwb3MgPCBs
aW5lbGVuKSB7CisgICAgICAgICAgICAgICAgdG9rZW5zW251bXRva3NdID0gJmxpbmVbcG9zXTsK
KyAgICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgbGluZWxlbgorICAgICAgICAgICAgICAgICAg
ICAmJiAobGluZVtwb3NdICE9ICcgJyAmJiBsaW5lW3Bvc10gIT0gJ1x0JyAmJiBsaW5lW3Bvc10g
IT0gJ1xyJykpCisgICAgICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgIGlm
ICh0b2tlbnNbbnVtdG9rc10gIT0gJmxpbmVbcG9zXSkgeworICAgICAgICAgICAgICAgICAgICB0
b2tsZW5bbnVtdG9rc10gPSAoJmxpbmVbcG9zXSAtIHRva2Vuc1tudW10b2tzXSk7CisgICAgICAg
ICAgICAgICAgICAgIG51bXRva3MrKzsgIAorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQudHlwZTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgaWYgKHBvcyA+PSAobGluZWxlbi0xKSB8fCBsaW5lW3Bvc10gIT0gJywnKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgcG9zKys7Ci0gICAgICAgIH0gLyogd2hpbGUgKHBvcyA8IGxp
bmVsZW4pICovCi0gICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgfSAvKiBpZiAoKmxpbmUg
PT0gJysnICYmIGxpbmVsZW4gPiA0ICYmIG51bXRva3MgPj0gMikgKi8KLSAgICB9IC8qIGlmICgh
bHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnRScpKSAq
LworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFudW10b2tzKQorICAgICAgICAgICAgcmV0dXJu
IFBhcnNpbmdGYWlsZWQoc3RhdGUpOworCisgICAgICAgIHN0cmlwcGVkTGluZUxlbmd0aCA9ICYo
dG9rZW5zW251bXRva3MtMV1bdG9rbGVuW251bXRva3MtMV1dKSAtIHRva2Vuc1swXTsKKyAgICAg
ICAgaWYgKG51bXRva3MgPT0gV1RGX0FSUkFZX0xFTkdUSCh0b2tlbnMpKSB7CisgICAgICAgICAg
ICBwb3MgPSBsaW5lbGVuOworICAgICAgICAgICAgd2hpbGUgKHBvcyA+IDAgJiYgKGxpbmVbcG9z
LTFdID09ICcgJyB8fCBsaW5lW3Bvcy0xXSA9PSAnXHQnKSkKKyAgICAgICAgICAgICAgICBwb3Mt
LTsKKyAgICAgICAgICAgIHN0cmlwcGVkTGluZUxlbmd0aCA9IHBvczsKKyAgICAgICAgfQorCisg
ICAgICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrICovCisjaWYgZGVmaW5lZChTVVBQT1JUX0VQTEYpCisgICAgICAgIC8qIEVQ
TEYgaGFuZGxpbmcgbXVzdCBjb21lIHNvbWV3aGVyZSBiZWZvcmUgL2Jpbi9kbHMgaGFuZGxpbmcu
ICovCisgICAgICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxp
c3RTdHlsZSA9PSAnRScpKSB7CisgICAgICAgICAgICBpZiAoKmxpbmUgPT0gJysnICYmIGxpbmVs
ZW4gPiA0ICYmIG51bXRva3MgPj0gMikgeworICAgICAgICAgICAgICAgIHBvcyA9IDE7CisgICAg
ICAgICAgICAgICAgd2hpbGUgKHBvcyA8IChsaW5lbGVuLTEpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHAgPSAmbGluZVtwb3MrK107CisgICAgICAgICAgICAgICAgICAgIGlmICgqcCA9PSAnLycp
IAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBEaXJlY3RvcnlFbnRy
eTsgLyogaXRzIGEgZGlyICovCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwID09ICdy
JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRmlsZUVudHJ5OyAv
KiBpdHMgYSBmaWxlICovCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwID09ICdtJykg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChsaW5lW3Bvc10pKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgaXNB
U0NJSURpZ2l0KGxpbmVbcG9zXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPCBsaW5lbGVuICYmIGxp
bmVbcG9zXSA9PSAnLCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHNlY29uZHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzc2NhbmYocCArIDEsICIlbGx1IiwgJnNlY29uZHMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lX3QgdCA9IHN0YXRpY19jYXN0PHRpbWVfdD4oc2Vjb25kcyk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBoYXMgdGhl
IHllYXIgMjAzOCBidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ210aW1lX3Io
JnQsICZyZXN1bHQubW9kaWZpZWRUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyICs9IDE5MDA7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCpwID09ICdzJykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzQVNDSUlEaWdpdChsaW5lW3Bvc10pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgaXNBU0NJSURpZ2l0KGxpbmVbcG9zXSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwb3MgPCBsaW5lbGVuICYmIGxpbmVbcG9zXSA9PSAnLCcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZyhwICsgMSwgJmxpbmVb
cG9zXSAtIHAgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJQWxwaGEoKnApKSB7IC8qICdpJy8ndXAnIG9yIHVua25v
d24gImZhY3QiIChwcm9wZXJ0eSkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChw
b3MgPCBsaW5lbGVuICYmICorK3AgIT0gJywnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvcysrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCpwICE9ICdcdCcgfHwgKHAr
MSkgIT0gdG9rZW5zWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIGl0cyBu
b3QgRVBMRiBhZnRlciBhbGwgKi8KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlID0gJ0UnOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBwID0gJihsaW5lW3N0cmlwcGVkTGluZUxlbmd0aF0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzFdOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcCAtIHRva2Vuc1sxXTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQudHlwZSkgeyAvKiBhY2Nlc3MgZGVuaWVkICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7
IC8qIGlzIGFzc3VtaW5nICdmJ2lsZSBjb3JyZWN0PyAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7ICAgICAgICAgICAgLyogTk8hIGp1bmsgaXQuICov
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0LnR5cGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHBvcyA+PSAobGluZWxlbi0xKSB8fCBsaW5lW3Bvc10gIT0gJywnKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIHBvcysrOworICAgICAg
ICAgICAgICAgIH0gLyogd2hpbGUgKHBvcyA8IGxpbmVsZW4pICovCisgICAgICAgICAgICAgICAg
cmVzdWx0LmNsZWFyKCk7CisgICAgICAgICAgICB9IC8qIGlmICgqbGluZSA9PSAnKycgJiYgbGlu
ZWxlbiA+IDQgJiYgbnVtdG9rcyA+PSAyKSAqLworICAgICAgICB9IC8qIGlmICghbHN0eWxlICYm
ICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnRScpKSAqLwogI2VuZGlm
IC8qIFNVUFBPUlRfRVBMRiAqLwogCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KKyAgICAgICAgLyogKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KIAog
I2lmIGRlZmluZWQoU1VQUE9SVF9WTVMpCi0gICAgaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0
U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdWJykpCi0gICAgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHJ5IFZNUyBNdWx0aW5ldC9VQ1gvQ01TIHNlcnZlciAqLwotICAgICAgLyoK
LSAgICAgICAqIExlZ2FsIGNoYXJhY3RlcnMgaW4gYSBWTVMgZmlsZS9kaXIgc3BlYyBhcmUgW0Et
WjAtOSQuLV9+XS4KLSAgICAgICAqICckJyBjYW5ub3QgYmVnaW4gYSBmaWxlbmFtZSBhbmQgYC0n
IGNhbm5vdCBiZSB1c2VkIGFzIHRoZSBmaXJzdCAKLSAgICAgICAqIG9yIGxhc3QgY2hhcmFjdGVy
LiAnLicgaXMgb25seSB2YWxpZCBhcyBhIGRpcmVjdG9yeSBzZXBhcmF0b3IgCi0gICAgICAgKiBh
bmQgPGZpbGU+Ljx0eXBlPiBzZXBhcmF0b3IuIEEgY2Fub25pY2FsIGZpbGVuYW1lIHNwZWMgbWln
aHQgbG9vayAKLSAgICAgICAqIGxpa2UgdGhpczogRElTSyRWT0w6W0RJUjEuRElSMi5ESVIzXUZJ
TEUuVFlQRTsxMjMKLSAgICAgICAqIEFsbCBWTVMgRlRQIHNlcnZlcnMgTElTVCBpbiB1cHBlcmNh
c2UuCi0gICAgICAgKgotICAgICAgICogV2UgbmVlZCB0byBiZSBwaWNreSBhYm91dCB0aGlzIGlu
IG9yZGVyIHRvIHN1cHBvcnQKLSAgICAgICAqIG11bHRpLWxpbmUgbGlzdGluZ3MgY29ycmVjdGx5
LgotICAgICAgKi8KLSAgICAgIGlmICghc3RhdGUucGFyc2VkT25lICYmCi0gICAgICAgICAgKG51
bXRva3MgPT0gMSB8fCAobnVtdG9rcyA9PSAyICYmIHRva2xlblswXSA9PSA5ICYmCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVtY21wKHRva2Vuc1swXSwgIkRpcmVjdG9yeSIsIDkpPT0w
ICkpKQotICAgICAgewotICAgICAgICAvKiBJZiBubyBkaXJzdHlsZSBoYXMgYmVlbiBkZXRlY3Rl
ZCB5ZXQsIGFuZCB0aGlzIGxpbmUgaXMgYSAKLSAgICAgICAgICogVk1TIGxpc3QncyBkaXJuYW1l
LCB0aGVuIHR1cm4gb24gVk1TIGRpcnN0eWxlLgotICAgICAgICAgKiBlZyAiQUNBOltBTk9OWU1P
VVNdIiwgIkRJU0skRlRQOltBTk9OWU1PVVNdIiwgIlNZUyRBTk9ORlRQOiIgCi0gICAgICAgICov
Ci0gICAgICAgIHAgPSB0b2tlbnNbMF07Ci0gICAgICAgIHBvcyA9IHRva2xlblswXTsKLSAgICAg
ICAgaWYgKG51bXRva3MgPT0gMikKLSAgICAgICAgewotICAgICAgICAgIHAgPSB0b2tlbnNbMV07
Ci0gICAgICAgICAgcG9zID0gdG9rbGVuWzFdOwotICAgICAgICB9Ci0gICAgICAgIHBvcy0tOwot
ICAgICAgICBpZiAocG9zID49IDMpCi0gICAgICAgIHsKLSAgICAgICAgICB3aGlsZSAocG9zID4g
MCAmJiBwW3Bvc10gIT0gJ1snKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBvcy0tOwotICAg
ICAgICAgICAgaWYgKHBbcG9zXSA9PSAnLScgfHwgcFtwb3NdID09ICckJykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgaWYgKHBvcyA9PSAwIHx8IHBbcG9zLTFdID09ICdbJyB8fCBwW3Bv
cy0xXSA9PSAnLicgfHwKLSAgICAgICAgICAgICAgICAgIChwW3Bvc10gPT0gJy0nICYmIChwW3Bv
cysxXSA9PSAnXScgfHwgcFtwb3MrMV0gPT0gJy4nKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChwW3Bvc10gIT0gJy4nICYmIHBb
cG9zXSAhPSAnficgJiYgCi0gICAgICAgICAgICAgICAgICAgICAhaXNBU0NJSURpZ2l0KHBbcG9z
XSkgJiYgIWlzQVNDSUlBbHBoYShwW3Bvc10pKQotICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGlzQVNDSUlBbHBoYShwW3Bvc10pICYmIHBbcG9zXSAhPSB0b0FTQ0lJ
VXBwZXIocFtwb3NdKSkKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGlmIChwb3MgPiAwKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBvcy0tOwotICAgICAg
ICAgICAgaWYgKHBbcG9zXSAhPSAnOicgfHwgcFtwb3MrMV0gIT0gJ1snKQotICAgICAgICAgICAg
ICBwb3MgPSAwOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAocG9zID4gMCAm
JiBwW3Bvc10gPT0gJzonKQotICAgICAgICB7Ci0gICAgICAgICAgd2hpbGUgKHBvcyA+IDApCi0g
ICAgICAgICAgewotICAgICAgICAgICAgcG9zLS07Ci0gICAgICAgICAgICBpZiAocFtwb3NdICE9
ICckJyAmJiBwW3Bvc10gIT0gJ18nICYmIHBbcG9zXSAhPSAnLScgJiYKLSAgICAgICAgICAgICAg
ICBwW3Bvc10gIT0gJ34nICYmICFpc0FTQ0lJRGlnaXQocFtwb3NdKSAmJiAhaXNBU0NJSUFscGhh
KHBbcG9zXSkpCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNB
U0NJSUFscGhhKHBbcG9zXSkgJiYgcFtwb3NdICE9IHRvQVNDSUlVcHBlcihwW3Bvc10pKQotICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHBvcyA9PSAwKQot
ICAgICAgICAgIHsgIAotICAgICAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gJ1YnOwotICAgICAg
ICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsgLyogaXRzIGp1bmsgKi8KLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgLyogZmFsbHRocm91Z2ggKi8gCi0gICAgICB9Ci0gICAgICBlbHNl
IGlmICgodG9rZW5zWzBdW3Rva2xlblswXS0xXSkgIT0gJzsnKQotICAgICAgewotICAgICAgICBp
ZiAobnVtdG9rcyA9PSAxICYmIChzdGF0ZS5saXN0U3R5bGUgPT0gJ1YnICYmICFjYXJyeV9idWZf
bGVuKSkKLSAgICAgICAgICBsc3R5bGUgPSAnVic7Ci0gICAgICAgIGVsc2UgaWYgKG51bXRva3Mg
PCA0KQotICAgICAgICAgIDsKLSAgICAgICAgZWxzZSBpZiAodG9rbGVuWzFdID49IDEwICYmIG1l
bWNtcCh0b2tlbnNbMV0sICIlUk1TLUUtUFJWIiwgMTApID09IDApCi0gICAgICAgICAgbHN0eWxl
ID0gJ1YnOwotICAgICAgICBlbHNlIGlmICgoJmxpbmVbbGluZWxlbl0gLSB0b2tlbnNbMV0pID49
IDIyICYmCi0gICAgICAgICAgICAgICAgICBtZW1jbXAodG9rZW5zWzFdLCAiaW5zdWZmaWNpZW50
IHByaXZpbGVnZSIsIDIyKSA9PSAwKQotICAgICAgICAgIGxzdHlsZSA9ICdWJzsKLSAgICAgICAg
ZWxzZSBpZiAobnVtdG9rcyAhPSA0ICYmIG51bXRva3MgIT0gNikKLSAgICAgICAgICA7Ci0gICAg
ICAgIGVsc2UgaWYgKG51bXRva3MgPT0gNiAmJiAoCi0gICAgICAgICAgICAgICAgIHRva2xlbls1
XSA8IDQgfHwgKnRva2Vuc1s1XSAhPSAnKCcgfHwgICAgICAgIC8qIHBlcm1zICovCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAodG9rZW5zWzVdW3Rva2xlbls1XS0xXSkgIT0gJyknICApKQot
ICAgICAgICAgIDsKLSAgICAgICAgZWxzZSBpZiAoICAodG9rbGVuWzJdID09IDEwIHx8IHRva2xl
blsyXSA9PSAxMSkgJiYgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICh0b2tlbnNbMl1b
dG9rbGVuWzJdLTVdKSA9PSAnLScgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICh0b2tlbnNb
Ml1bdG9rbGVuWzJdLTldKSA9PSAnLScgJiYKLSAgICAgICAgKCgodG9rbGVuWzNdPT00IHx8IHRv
a2xlblszXT09NSB8fCB0b2tsZW5bM109PTcgfHwgdG9rbGVuWzNdPT04KSAmJgotICAgICAgICAg
ICAgICAgICAgICAgICAgKHRva2Vuc1szXVt0b2tsZW5bM10tM10pID09ICc6JyApIHx8Ci0gICAg
ICAgICAoKHRva2xlblszXT09MTAgfHwgdG9rbGVuWzNdPT0xMSApICYmCi0gICAgICAgICAgICAg
ICAgICAgICAgICAodG9rZW5zWzNdW3Rva2xlblszXS0zXSkgPT0gJy4nICkKLSAgICAgICAgKSAm
JiAgLyogdGltZSBpbiBbSF1IOk1NWzpTU1suQ0NdXSBmb3JtYXQgKi8KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzQVNDSUlEaWdpdCgqdG9rZW5zWzFdKSAmJiAvKiBzaXpl
ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQoKnRv
a2Vuc1syXSkgJiYgLyogZGF0ZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXNBU0NJSURpZ2l0KCp0b2tlbnNbM10pICAgIC8qIHRpbWUgKi8KLSAgICAgICAgICAgICAg
ICApCi0gICAgICAgIHsKLSAgICAgICAgICBsc3R5bGUgPSAnVic7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGxzdHlsZSA9PSAnVicpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiAKLSAgICAgICAg
ICAqIE11bHRpTmV0IEZUUDoKLSAgICAgICAgICAqICAgTE9HSU4uQ09NOzIgICAgICAgICAgICAg
ICAgIDEgICA0LU5PVi0xOTk0IDA0OjA5IFtBTk9OWU1PVVNdIChSV0UsUldFLCwpCi0gICAgICAg
ICAgKiAgIFBVQi5ESVI7MSAgICAgICAgICAgICAgICAgICAxICAyNy1KQU4tMTk5NCAxNDo0NiBb
QU5PTllNT1VTXSAoUldFLFJXRSxSRSxSV0UpCi0gICAgICAgICAgKiAgIFJFQURNRS5GVFA7MSAg
ICAgICAgJVJNUy1FLVBSViwgaW5zdWZmaWNpZW50IHByaXZpbGVnZSBvciBmaWxlIHByb3RlY3Rp
b24gdmlvbGF0aW9uCi0gICAgICAgICAgKiAgIFJPVVNTT1MuRElSOzEgICAgICAgICAgICAgICAx
ICAyNy1KQU4tMTk5NCAxNDo0OCBbQ1MsUk9VU1NPU10gKFJXRSxSV0UsUkUsUikKLSAgICAgICAg
ICAqICAgUzY3LTUwOTAzLkpQRzsxICAgICAgICAgICAzMjggIDIyLVNFUC0xOTk4IDE2OjE5IFtB
Tk9OWU1PVVNdIChSV0VELFJXRUQsLCkKLSAgICAgICAgICAqIFVDWCBGVFA6IAotICAgICAgICAg
ICogICBDSUktTUFOVUFMLlRFWDsxICAyMTMvMjE2ICAyOS1KQU4tMTk5NiAwMzozMzoxMiAgW0FO
T05ZTU9VLEFOT05ZTU9VU10gKFJXRUQsUldFRCwsKQotICAgICAgICAgICogQ01VL1ZNUy1JUCBG
VFAKLSAgICAgICAgICAqICAgW1ZNU1NFUlYuRklMRVNdQUxBUk0uRElSOzEgMS8zIDUtTUFSLTE5
OTMgMTg6MDkKLSAgICAgICAgICAqIFRDUHdhcmUgRlRQCi0gICAgICAgICAgKiAgIEZPTy5CQVI7
MSA0IDUtTUFSLTE5OTMgMTg6MDk6MDEuMTIKLSAgICAgICAgICAqIExvbmcgZmlsZW5hbWUgZXhh
bXBsZToKLSAgICAgICAgICAqICAgVEhJUy1JUy1BLUxPTkctVk1TLUZJTEVOQU1FLkFORC1USElT
LUlTLUEtTE9ORy1WTVMtRklMRVRZUEVcclxuCi0gICAgICAgICAgKiAgICAgICAgICAgICAgICAg
ICAgMjEzWy9ubm5dICAyOS1KQU4tMTk5NiAwMzozM1s6bm5dICBbQU5PTllNT1UsQU5PTllNT1VT
XSAoUldFRCxSV0VELCwpCi0gICAgICAgICAgKi8KLSAgICAgICAgICB0b2ttYXJrZXIgPSAwOwot
ICAgICAgICAgIHAgPSB0b2tlbnNbMF07Ci0gICAgICAgICAgcG9zID0gMDsKLSAgICAgICAgICBp
ZiAoKnAgPT0gJ1snICYmIHRva2xlblswXSA+PSA0KSAvKiBDTVUgc3R5bGUgKi8KLSAgICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAocFsxXSAhPSAnXScpIAotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBwKys7Ci0gICAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgd2hpbGUgKGxzdHlsZSAmJiBwb3MgPCB0b2tsZW5bMF0gJiYgKnAgIT0gJ10nKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoKnAgIT0gJyQnICYmICpwICE9ICcuJyAmJiAq
cCAhPSAnXycgJiYgKnAgIT0gJy0nICYmCi0gICAgICAgICAgICAgICAgICAqcCAhPSAnficgJiYg
IWlzQVNDSUlEaWdpdCgqcCkgJiYgIWlzQVNDSUlBbHBoYSgqcCkpICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgICBwb3MrKzsKLSAgICAgICAg
ICAgICAgcCsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxzdHlsZSAmJiBwb3Mg
PCAodG9rbGVuWzBdLTEpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvKiAnXScgd2Fz
IGZvdW5kIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGFmdGVyIGl0ICovCi0g
ICAgICAgICAgICAgIEFTU0VSVCgqcCA9PSAnXScpOwotICAgICAgICAgICAgICBwb3MrKzsKLSAg
ICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgICB0b2ttYXJrZXIgPSBwb3M7IC8qIGxlbmd0
aCBvZiBsZWFkaW5nICJbRElSMS5ESVIyLmV0Y10iICovCi0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAvKiBub3QgYSBDTVUgc3R5bGUgbGlzdGluZyAqLwotICAgICAgICAgICAg
ICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICB3aGls
ZSAobHN0eWxlICYmIHBvcyA8IHRva2xlblswXSAmJiAqcCAhPSAnOycpCi0gICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCpwICE9ICckJyAmJiAqcCAhPSAnLicgJiYgKnAgIT0gJ18nICYmICpw
ICE9ICctJyAmJgotICAgICAgICAgICAgICAgICpwICE9ICd+JyAmJiAhaXNBU0NJSURpZ2l0KCpw
KSAmJiAhaXNBU0NJSUFscGhhKCpwKSkKLSAgICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGlzQVNDSUlBbHBoYSgqcCkgJiYgKnAgIT0gdG9BU0NJSVVwcGVyKCpw
KSkKLSAgICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAg
ICAgIHBvcysrOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAobHN0eWxlICYmICpwID09ICc7
JykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocG9zID09IDAgfHwgcG9zID09ICh0b2ts
ZW5bMF0tMSkpCi0gICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICBmb3IgKHBv
cysrO2xzdHlsZSAmJiBwb3MgPCB0b2tsZW5bMF07cG9zKyspCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHRva2Vuc1swXVtwb3NdKSkKLSAgICAgICAgICAg
ICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBw
b3MgPSAocCAtIHRva2Vuc1swXSk7IC8qID0+IGZubGVuZ3RoIHNhbnMgIjsjIyMjIiAqLwotICAg
ICAgICAgIHBvcyAtPSB0b2ttYXJrZXI7ICAgICAgLyogPT4gZm5sZW5ndGggc2FucyAiW0RJUjEu
RElSMi5ldGNdIiAqLwotICAgICAgICAgIHAgPSAmKHRva2Vuc1swXVt0b2ttYXJrZXJdKTsgLyog
b2Zmc2V0IG9mIGJhc2VuYW1lICovCi0KLSAgICAgICAgICBpZiAoIWxzdHlsZSB8fCBwb3MgPT0g
MCB8fCBwb3MgPiA4MCkgLyogVk1TIGZpbGVuYW1lcyBjYW4ndCBiZSBsb25nZXIgdGhhbiB0aGF0
ICovCi0gICAgICAgICAgewotICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgZWxzZSBpZiAobnVtdG9rcyA9PSAxKQotICAgICAgICAgIHsgCi0gICAgICAgICAg
ICAvKiBpZiBWTVMgaGFzIGJlZW4gZGV0ZWN0ZWQgYW5kIHRoZXJlIGlzIG9ubHkgb25lIHRva2Vu
IGFuZCB0aGF0IAotICAgICAgICAgICAgICogdG9rZW4gd2FzIGEgVk1TIGZpbGVuYW1lIHRoZW4g
dGhpcyBpcyBhIG11bHRpbGluZSBWTVMgTElTVCBlbnRyeS4KLSAgICAgICAgICAgICovCi0gICAg
ICAgICAgICBpZiAocG9zID49IChzaXplb2Yoc3RhdGUuY2FycnlCdWZmZXIpLTEpKQotICAgICAg
ICAgICAgICBwb3MgPSAoc2l6ZW9mKHN0YXRlLmNhcnJ5QnVmZmVyKS0xKTsgLyogc2hvdWxkbid0
IGhhcHBlbiAqLwotICAgICAgICAgICAgbWVtY3B5KCBzdGF0ZS5jYXJyeUJ1ZmZlciwgcCwgcG9z
ICk7Ci0gICAgICAgICAgICBzdGF0ZS5jYXJyeUJ1ZmZlckxlbmd0aCA9IHBvczsKLSAgICAgICAg
ICAgIHJldHVybiBGVFBKdW5rRW50cnk7IC8qIHRlbGwgY2FsbGVyIHRvIHRyZWF0IGFzIGp1bmsg
Ki8KLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNb
MV0pKSAvKiBub3Qgbm8tcHJpdnMgbWVzc2FnZSAqLwotICAgICAgICAgIHsKLSAgICAgICAgICAg
IGZvciAocG9zID0gMDsgbHN0eWxlICYmIHBvcyA8ICh0b2tsZW5bMV0pOyBwb3MrKykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKHRva2Vuc1sxXVtwb3Nd
KSkgJiYgKHRva2Vuc1sxXVtwb3NdKSAhPSAnLycpCi0gICAgICAgICAgICAgICAgbHN0eWxlID0g
MDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsc3R5bGUgJiYgbnVtdG9rcyA+IDQp
IC8qIE11bHRpbmV0IG9yIFVDWCBidXQgbm90IENNVSAqLwotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBmb3IgKHBvcyA9IDE7IGxzdHlsZSAmJiBwb3MgPCAodG9rbGVuWzVdLTEpOyBwb3Mr
KykKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHAgPSAmKHRva2Vuc1s1XVtwb3Nd
KTsKLSAgICAgICAgICAgICAgICBpZiAoKnAhPSdSJyAmJiAqcCE9J1cnICYmICpwIT0nRScgJiYg
KnAhPSdEJyAmJiAqcCE9JywnKQotICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfSAvKiBwYXNz
ZWQgaW5pdGlhbCB0ZXN0cyAqLwotICAgICAgfSAvKiBlbHNlIGlmICgodG9rZW5zWzBdW3Rva2xl
blswXS0xXSkgIT0gJzsnKSAqLyAgICAKLQotICAgICAgaWYgKGxzdHlsZSA9PSAnVicpCi0gICAg
ICB7Ci0gICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7Ci0gICAgICAgIHN0YXRlLmxpc3RT
dHlsZSA9IGxzdHlsZTsKLQotICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pKSAg
Lyogbm90IHBlcm1pc3Npb24gZGVuaWVkIGV0YyAqLwotICAgICAgICB7Ci0gICAgICAgICAgLyog
c3RyaXAgbGVhZGluZyBkaXJlY3RvcnkgbmFtZSAqLwotICAgICAgICAgIGlmICgqdG9rZW5zWzBd
ID09ICdbJykgLyogQ01VIHNlcnZlciAqLwotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBvcyA9
IHRva2xlblswXS0xOwotICAgICAgICAgICAgcCA9IHRva2Vuc1swXSsxOwotICAgICAgICAgICAg
d2hpbGUgKCpwICE9ICddJykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcCsrOwotICAg
ICAgICAgICAgICBwb3MtLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2xlblswXSA9
IC0tcG9zOwotICAgICAgICAgICAgdG9rZW5zWzBdID0gKytwOwotICAgICAgICAgIH0KLSAgICAg
ICAgICBwb3MgPSAwOwotICAgICAgICAgIHdoaWxlIChwb3MgPCB0b2tsZW5bMF0gJiYgKHRva2Vu
c1swXVtwb3NdKSAhPSAnOycpCi0gICAgICAgICAgICBwb3MrKzsKLSAgICAgICAKLSAgICAgICAg
ICByZXN1bHQuY2FzZVNlbnNpdGl2ZSA9IHRydWU7Ci0gICAgICAgICAgcmVzdWx0LnR5cGUgPSBG
VFBGaWxlRW50cnk7Ci0gICAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzBdOwotICAg
ICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHBvczsKLQotICAgICAgICAgIGlmIChwb3Mg
PiA0KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHAgPSAmKHRva2Vuc1swXVtwb3MtNF0pOwot
ICAgICAgICAgICAgaWYgKHBbMF0gPT0gJy4nICYmIHBbMV0gPT0gJ0QnICYmIHBbMl0gPT0gJ0kn
ICYmIHBbM10gPT0gJ1InKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICByZXN1bHQuZmls
ZW5hbWVMZW5ndGggLT0gNDsKLSAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBEaXJlY3Rv
cnlFbnRyeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAocmVz
dWx0LnR5cGUgIT0gRlRQRGlyZWN0b3J5RW50cnkpCi0gICAgICAgICAgewotICAgICAgICAgICAg
LyogIyMjIyBvciB1c2VkL2FsbG9jYXRlZCBmb3JtLiBJZiB1c2VkL2FsbG9jYXRlZCBmb3JtLCB0
aGVuCi0gICAgICAgICAgICAgKiAndXNlZCcgaXMgdGhlIHNpemUgaW4gYnl0ZXMgaWYgYW5kIG9u
bHkgaWYgJ3VzZWQnPD1hbGxvY2F0ZWQuCi0gICAgICAgICAgICAgKiBJZiAndXNlZCcgaXMgc2l6
ZSBpbiBieXRlcyB0aGVuIGl0IGNhbiBiZSA+IDJeMzIKLSAgICAgICAgICAgICAqIElmICd1c2Vk
JyBpcyBub3Qgc2l6ZSBpbiBieXRlcyB0aGVuIGl0IGlzIHNpemUgaW4gYmxvY2tzLgotICAgICAg
ICAgICAgKi8KLSAgICAgICAgICAgIHBvcyA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAocG9zIDwg
dG9rbGVuWzFdICYmICh0b2tlbnNbMV1bcG9zXSkgIT0gJy8nKQotICAgICAgICAgICAgICBwb3Mr
KzsKLSAgICAgICAgICAgIAotLyoKLSAqIEkndmUgbmV2ZXIgc2VlbiBzaXplIGNvbWUgYmFjayBp
biBieXRlcywgaXRzIGFsd2F5cyBpbiBibG9ja3MsIGFuZCAKLSAqIHRoZSBmb2xsb3dpbmcgdGVz
dCBmYWlscy4gU28sIGFsd2F5cyBwZXJmb3JtIHRoZSAic2l6ZSBpbiBibG9ja3MiLgotICogSSdt
IGxlYXZpbmcgdGhlICJzaXplIGluIGJ5dGVzIiBjb2RlIGlmJ2Qgb3V0IGluIGNhc2Ugd2UgZXZl
ciBuZWVkCi0gKiB0byByZS1pbnN0YXRlIGl0LgotKi8KKyAgICAgICAgaWYgKCFsc3R5bGUgJiYg
KCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdWJykpIHsKKyAgICAgICAg
ICAgIC8qIHRyeSBWTVMgTXVsdGluZXQvVUNYL0NNUyBzZXJ2ZXIgKi8KKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgKiBMZWdhbCBjaGFyYWN0ZXJzIGluIGEgVk1TIGZpbGUvZGlyIHNwZWMg
YXJlIFtBLVowLTkkLi1ffl0uCisgICAgICAgICAgICAgKiAnJCcgY2Fubm90IGJlZ2luIGEgZmls
ZW5hbWUgYW5kIGAtJyBjYW5ub3QgYmUgdXNlZCBhcyB0aGUgZmlyc3QgCisgICAgICAgICAgICAg
KiBvciBsYXN0IGNoYXJhY3Rlci4gJy4nIGlzIG9ubHkgdmFsaWQgYXMgYSBkaXJlY3Rvcnkgc2Vw
YXJhdG9yIAorICAgICAgICAgICAgICogYW5kIDxmaWxlPi48dHlwZT4gc2VwYXJhdG9yLiBBIGNh
bm9uaWNhbCBmaWxlbmFtZSBzcGVjIG1pZ2h0IGxvb2sgCisgICAgICAgICAgICAgKiBsaWtlIHRo
aXM6IERJU0skVk9MOltESVIxLkRJUjIuRElSM11GSUxFLlRZUEU7MTIzCisgICAgICAgICAgICAg
KiBBbGwgVk1TIEZUUCBzZXJ2ZXJzIExJU1QgaW4gdXBwZXJjYXNlLgorICAgICAgICAgICAgICoK
KyAgICAgICAgICAgICAqIFdlIG5lZWQgdG8gYmUgcGlja3kgYWJvdXQgdGhpcyBpbiBvcmRlciB0
byBzdXBwb3J0CisgICAgICAgICAgICAgKiBtdWx0aS1saW5lIGxpc3RpbmdzIGNvcnJlY3RseS4K
KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCFzdGF0ZS5wYXJzZWRPbmUKKyAgICAg
ICAgICAgICAgICAmJiAobnVtdG9rcyA9PSAxIHx8IChudW10b2tzID09IDIgJiYgdG9rbGVuWzBd
ID09IDkKKyAgICAgICAgICAgICAgICAmJiAhbWVtY21wKHRva2Vuc1swXSwgIkRpcmVjdG9yeSIs
IDkpKSkpIHsKKyAgICAgICAgICAgICAgICAvKiBJZiBubyBkaXJzdHlsZSBoYXMgYmVlbiBkZXRl
Y3RlZCB5ZXQsIGFuZCB0aGlzIGxpbmUgaXMgYSAKKyAgICAgICAgICAgICAgICAgKiBWTVMgbGlz
dCdzIGRpcm5hbWUsIHRoZW4gdHVybiBvbiBWTVMgZGlyc3R5bGUuCisgICAgICAgICAgICAgICAg
ICogZWcgIkFDQTpbQU5PTllNT1VTXSIsICJESVNLJEZUUDpbQU5PTllNT1VTXSIsICJTWVMkQU5P
TkZUUDoiIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNb
MF07CisgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVuWzBdOworICAgICAgICAgICAgICAgIGlm
IChudW10b2tzID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1sxXTsKKyAg
ICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVuWzFdOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBwb3MtLTsKKyAgICAgICAgICAgICAgICBpZiAocG9zID49IDMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvcyA+IDAgJiYgcFtwb3NdICE9ICdbJykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgcG9zLS07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cFtwb3NdID09ICctJyB8fCBwW3Bvc10gPT0gJyQnKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwb3MgfHwgcFtwb3MtMV0gPT0gJ1snIHx8IHBbcG9zLTFdID09ICcuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocFtwb3NdID09ICctJyAmJiAocFtwb3Mr
MV0gPT0gJ10nIHx8IHBbcG9zKzFdID09ICcuJykpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocFtwb3Nd
ICE9ICcuJyAmJiBwW3Bvc10gIT0gJ34nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
IWlzQVNDSUlEaWdpdChwW3Bvc10pICYmICFpc0FTQ0lJQWxwaGEocFtwb3NdKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGlzQVNDSUlBbHBoYShwW3Bvc10pICYmIHBbcG9zXSAhPSB0b0FTQ0lJVXBwZXIocFtwb3Nd
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAocG9zID4gMCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcG9zLS07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFtwb3NdICE9ICc6
JyB8fCBwW3BvcysxXSAhPSAnWycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAocG9zID4gMCAmJiBwW3Bvc10gPT0gJzonKSB7CisgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChwb3MgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3MtLTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChwW3Bvc10gIT0gJyQnICYmIHBbcG9zXSAhPSAnXycgJiYg
cFtwb3NdICE9ICctJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBbcG9zXSAhPSAn
ficgJiYgIWlzQVNDSUlEaWdpdChwW3Bvc10pICYmICFpc0FTQ0lJQWxwaGEocFtwb3NdKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpc0FTQ0lJQWxwaGEocFtwb3NdKSAmJiBwW3Bvc10gIT0gdG9BU0NJSVVwcGVyKHBbcG9z
XSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwb3MpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9ICdWJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBGVFBKdW5rRW50cnk7IC8qIGl0cyBqdW5rICovCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8gCisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCh0b2tlbnNbMF1bdG9rbGVuWzBdLTFdKSAhPSAnOycpIHsK
KyAgICAgICAgICAgICAgICBpZiAobnVtdG9rcyA9PSAxICYmIChzdGF0ZS5saXN0U3R5bGUgPT0g
J1YnICYmICFjYXJyeUJ1Zkxlbmd0aCkpCisgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9ICdW
JzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChudW10b2tzIDwgNCkKKyAgICAgICAgICAgICAg
ICB7IH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2tsZW5bMV0gPj0gMTAgJiYgIW1lbWNt
cCh0b2tlbnNbMV0sICIlUk1TLUUtUFJWIiwgMTApKQorICAgICAgICAgICAgICAgICAgICBsc3R5
bGUgPSAnVic7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoKCZsaW5lW2xpbmVsZW5dIC0gdG9r
ZW5zWzFdKSA+PSAyMgorICAgICAgICAgICAgICAgICAgICAmJiAhbWVtY21wKHRva2Vuc1sxXSwg
Imluc3VmZmljaWVudCBwcml2aWxlZ2UiLCAyMikpCisgICAgICAgICAgICAgICAgICAgIGxzdHls
ZSA9ICdWJzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChudW10b2tzICE9IDQgJiYgbnVtdG9r
cyAhPSA2KQorICAgICAgICAgICAgICAgIHsgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51
bXRva3MgPT0gNgorICAgICAgICAgICAgICAgICAgICAmJiAodG9rbGVuWzVdIDwgNCB8fCAqdG9r
ZW5zWzVdICE9ICcoJyAvKiBwZXJtcyAqLworICAgICAgICAgICAgICAgICAgICB8fCAodG9rZW5z
WzVdW3Rva2xlbls1XS0xXSkgIT0gJyknKSkKKyAgICAgICAgICAgICAgICB7IH0KKyAgICAgICAg
ICAgICAgICBlbHNlIGlmICggICh0b2tsZW5bMl0gPT0gMTAgfHwgdG9rbGVuWzJdID09IDExKQor
ICAgICAgICAgICAgICAgICAgICAmJiAodG9rZW5zWzJdW3Rva2xlblsyXS01XSkgPT0gJy0nCisg
ICAgICAgICAgICAgICAgICAgICYmICh0b2tlbnNbMl1bdG9rbGVuWzJdLTldKSA9PSAnLScKKyAg
ICAgICAgICAgICAgICAgICAgJiYgKCgodG9rbGVuWzNdID09IDQgfHwgdG9rbGVuWzNdID09IDUg
fHwgdG9rbGVuWzNdID09IDcgfHwgdG9rbGVuWzNdID09IDgpCisgICAgICAgICAgICAgICAgICAg
ICYmICh0b2tlbnNbM11bdG9rbGVuWzNdLTNdKSA9PSAnOicgKQorICAgICAgICAgICAgICAgICAg
ICB8fCAoKHRva2xlblszXSA9PSAxMCB8fCB0b2tsZW5bM10gPT0gMTEpCisgICAgICAgICAgICAg
ICAgICAgICYmICh0b2tlbnNbM11bdG9rbGVuWzNdLTNdKSA9PSAnLicpKSAvKiB0aW1lIGluIFtI
XUg6TU1bOlNTWy5DQ11dIGZvcm1hdCAqLworICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJ
RGlnaXQoKnRva2Vuc1sxXSkgLyogc2l6ZSAqLworICAgICAgICAgICAgICAgICAgICAmJiBpc0FT
Q0lJRGlnaXQoKnRva2Vuc1syXSkgLyogZGF0ZSAqLworICAgICAgICAgICAgICAgICAgICAmJiBp
c0FTQ0lJRGlnaXQoKnRva2Vuc1szXSkpIHsgICAgLyogdGltZSAqLworICAgICAgICAgICAgICAg
ICAgICBsc3R5bGUgPSAnVic7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
IChsc3R5bGUgPT0gJ1YnKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIAorICAgICAgICAgICAg
ICAgICAgICAgKiBNdWx0aU5ldCBGVFA6CisgICAgICAgICAgICAgICAgICAgICAqICAgTE9HSU4u
Q09NOzIgICAgICAgICAgICAgICAgIDEgICA0LU5PVi0xOTk0IDA0OjA5IFtBTk9OWU1PVVNdIChS
V0UsUldFLCwpCisgICAgICAgICAgICAgICAgICAgICAqICAgUFVCLkRJUjsxICAgICAgICAgICAg
ICAgICAgIDEgIDI3LUpBTi0xOTk0IDE0OjQ2IFtBTk9OWU1PVVNdIChSV0UsUldFLFJFLFJXRSkK
KyAgICAgICAgICAgICAgICAgICAgICogICBSRUFETUUuRlRQOzEgICAgICAgICVSTVMtRS1QUlYs
IGluc3VmZmljaWVudCBwcml2aWxlZ2Ugb3IgZmlsZSBwcm90ZWN0aW9uIHZpb2xhdGlvbgorICAg
ICAgICAgICAgICAgICAgICAgKiAgIFJPVVNTT1MuRElSOzEgICAgICAgICAgICAgICAxICAyNy1K
QU4tMTk5NCAxNDo0OCBbQ1MsUk9VU1NPU10gKFJXRSxSV0UsUkUsUikKKyAgICAgICAgICAgICAg
ICAgICAgICogICBTNjctNTA5MDMuSlBHOzEgICAgICAgICAgIDMyOCAgMjItU0VQLTE5OTggMTY6
MTkgW0FOT05ZTU9VU10gKFJXRUQsUldFRCwsKQorICAgICAgICAgICAgICAgICAgICAgKiBVQ1gg
RlRQOiAKKyAgICAgICAgICAgICAgICAgICAgICogICBDSUktTUFOVUFMLlRFWDsxICAyMTMvMjE2
ICAyOS1KQU4tMTk5NiAwMzozMzoxMiAgW0FOT05ZTU9VLEFOT05ZTU9VU10gKFJXRUQsUldFRCws
KQorICAgICAgICAgICAgICAgICAgICAgKiBDTVUvVk1TLUlQIEZUUAorICAgICAgICAgICAgICAg
ICAgICAgKiAgIFtWTVNTRVJWLkZJTEVTXUFMQVJNLkRJUjsxIDEvMyA1LU1BUi0xOTkzIDE4OjA5
CisgICAgICAgICAgICAgICAgICAgICAqIFRDUHdhcmUgRlRQCisgICAgICAgICAgICAgICAgICAg
ICAqICAgRk9PLkJBUjsxIDQgNS1NQVItMTk5MyAxODowOTowMS4xMgorICAgICAgICAgICAgICAg
ICAgICAgKiBMb25nIGZpbGVuYW1lIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAqICAg
VEhJUy1JUy1BLUxPTkctVk1TLUZJTEVOQU1FLkFORC1USElTLUlTLUEtTE9ORy1WTVMtRklMRVRZ
UEVcclxuCisgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAyMTNbL25u
bl0gIDI5LUpBTi0xOTk2IDAzOjMzWzpubl0gIFtBTk9OWU1PVSxBTk9OWU1PVVNdIChSV0VELFJX
RUQsLCkKKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIHRva21h
cmtlciA9IDA7CisgICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbMF07CisgICAgICAgICAg
ICAgICAgICAgIHBvcyA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICgqcCA9PSAnWycgJiYg
dG9rbGVuWzBdID49IDQpIHsgLyogQ01VIHN0eWxlICovCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocFsxXSAhPSAnXScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKys7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobHN0eWxlICYmIHBvcyA8IHRva2xl
blswXSAmJiAqcCAhPSAnXScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnAg
IT0gJyQnICYmICpwICE9ICcuJyAmJiAqcCAhPSAnXycgJiYgKnAgIT0gJy0nCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmICpwICE9ICd+JyAmJiAhaXNBU0NJSURpZ2l0KCpwKSAm
JiAhaXNBU0NJSUFscGhhKCpwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0
eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobHN0eWxlICYmIHBvcyA8ICh0b2tsZW5bMF0tMSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAnXScgd2FzIGZvdW5kIGFuZCB0aGVyZSBpcyBh
dCBsZWFzdCBvbmUgY2hhcmFjdGVyIGFmdGVyIGl0ICovCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCpwID09ICddJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9z
Kys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRva21hcmtlciA9IHBvczsgLyogbGVuZ3RoIG9mIGxlYWRpbmcgIltESVIxLkRJ
UjIuZXRjXSIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbm90IGEgQ01VIHN0eWxlIGxpc3RpbmcgKi8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChsc3R5
bGUgJiYgcG9zIDwgdG9rbGVuWzBdICYmICpwICE9ICc7JykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCpwICE9ICckJyAmJiAqcCAhPSAnLicgJiYgKnAgIT0gJ18nICYmICpwICE9ICct
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICpwICE9ICd+JyAmJiAhaXNBU0NJSURp
Z2l0KCpwKSAmJiAhaXNBU0NJSUFscGhhKCpwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSUFs
cGhhKCpwKSAmJiAqcCAhPSB0b0FTQ0lJVXBwZXIoKnApKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAobHN0eWxlICYmICpwID09ICc7JykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwb3MgfHwgcG9zID09ICh0b2tsZW5bMF0tMSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocG9z
Kys7bHN0eWxlICYmIHBvcyA8IHRva2xlblswXTtwb3MrKykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHRva2Vuc1swXVtwb3NdKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwb3MgPSAocCAt
IHRva2Vuc1swXSk7IC8qID0+IGZubGVuZ3RoIHNhbnMgIjsjIyMjIiAqLworICAgICAgICAgICAg
ICAgICAgICBwb3MgLT0gdG9rbWFya2VyOyAgICAgIC8qID0+IGZubGVuZ3RoIHNhbnMgIltESVIx
LkRJUjIuZXRjXSIgKi8KKyAgICAgICAgICAgICAgICAgICAgcCA9ICYodG9rZW5zWzBdW3Rva21h
cmtlcl0pOyAvKiBvZmZzZXQgb2YgYmFzZW5hbWUgKi8KKworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWxzdHlsZSB8fCAhcG9zIHx8IHBvcyA+IDgwKSB7IC8qIFZNUyBmaWxlbmFtZXMgY2FuJ3Qg
YmUgbG9uZ2VyIHRoYW4gdGhhdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudW10b2tzID09IDEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGlmIFZNUyBoYXMgYmVlbiBkZXRlY3RlZCBhbmQgdGhlcmUg
aXMgb25seSBvbmUgdG9rZW4gYW5kIHRoYXQgCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0
b2tlbiB3YXMgYSBWTVMgZmlsZW5hbWUgdGhlbiB0aGlzIGlzIGEgbXVsdGlsaW5lIFZNUyBMSVNU
IGVudHJ5LgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocG9zID49IChzaXplb2Yoc3RhdGUuY2FycnlCdWZmZXIpLTEpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcyA9IChzaXplb2Yoc3RhdGUuY2FycnlCdWZmZXIpLTEpOyAv
KiBzaG91bGRuJ3QgaGFwcGVuICovCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc3Rh
dGUuY2FycnlCdWZmZXIsIHAsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5j
YXJyeUJ1ZmZlckxlbmd0aCA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBG
VFBKdW5rRW50cnk7IC8qIHRlbGwgY2FsbGVyIHRvIHRyZWF0IGFzIGp1bmsgKi8KKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJRGlnaXQoKnRva2Vuc1sxXSkpIHsgLyogbm90
IG5vLXByaXZzIG1lc3NhZ2UgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocG9zID0g
MDsgbHN0eWxlICYmIHBvcyA8ICh0b2tsZW5bMV0pOyBwb3MrKykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCh0b2tlbnNbMV1bcG9zXSkpICYmICh0b2tl
bnNbMV1bcG9zXSkgIT0gJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3R5
bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGxzdHlsZSAmJiBudW10b2tzID4gNCkgeyAvKiBNdWx0aW5ldCBvciBVQ1ggYnV0IG5v
dCBDTVUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDE7IGxzdHls
ZSAmJiBwb3MgPCAodG9rbGVuWzVdLTEpOyBwb3MrKykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwID0gJih0b2tlbnNbNV1bcG9zXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgqcCAhPSAnUicgJiYgKnAgIT0gJ1cnICYmICpwICE9ICdFJyAmJiAqcCAh
PSAnRCcgJiYgKnAgIT0gJywnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IC8q
IHBhc3NlZCBpbml0aWFsIHRlc3RzICovCisgICAgICAgICAgICB9IC8qIGVsc2UgaWYgKCh0b2tl
bnNbMF1bdG9rbGVuWzBdLTFdKSAhPSAnOycpICovICAgIAorCisgICAgICAgICAgICBpZiAobHN0
eWxlID09ICdWJykgeworICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOworCisgICAgICAgICAgICAg
ICAgaWYgKGlzQVNDSUlEaWdpdCgqdG9rZW5zWzFdKSkgeyAvKiBub3QgcGVybWlzc2lvbiBkZW5p
ZWQgZXRjICovCisgICAgICAgICAgICAgICAgICAgIC8qIHN0cmlwIGxlYWRpbmcgZGlyZWN0b3J5
IG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKCp0b2tlbnNbMF0gPT0gJ1snKSB7IC8q
IENNVSBzZXJ2ZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IHRva2xlblswXS0x
OworICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1swXSsxOworICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKCpwICE9ICddJykgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MtLTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2xlblswXSA9IC0tcG9z
OworICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zWzBdID0gKytwOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBvcyA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIHdoaWxlIChwb3MgPCB0b2tsZW5bMF0gJiYgKHRva2Vuc1swXVtwb3NdKSAhPSAnOycpCisg
ICAgICAgICAgICAgICAgICAgICAgICBwb3MrKzsKKworICAgICAgICAgICAgICAgICAgICByZXN1
bHQuY2FzZVNlbnNpdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBl
ID0gRlRQRmlsZUVudHJ5OworICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0
b2tlbnNbMF07CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHBv
czsKKworICAgICAgICAgICAgICAgICAgICBpZiAocG9zID4gNCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcCA9ICYodG9rZW5zWzBdW3Bvcy00XSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocFswXSA9PSAnLicgJiYgcFsxXSA9PSAnRCcgJiYgcFsyXSA9PSAnSScgJiYgcFszXSA9
PSAnUicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5n
dGggLT0gNDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUERp
cmVjdG9yeUVudHJ5OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9IEZUUERpcmVj
dG9yeUVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiAjIyMjIG9yIHVzZWQvYWxs
b2NhdGVkIGZvcm0uIElmIHVzZWQvYWxsb2NhdGVkIGZvcm0sIHRoZW4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAqICd1c2VkJyBpcyB0aGUgc2l6ZSBpbiBieXRlcyBpZiBhbmQgb25seSBpZiAn
dXNlZCc8PWFsbG9jYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqIElmICd1c2VkJyBp
cyBzaXplIGluIGJ5dGVzIHRoZW4gaXQgY2FuIGJlID4gMl4zMgorICAgICAgICAgICAgICAgICAg
ICAgICAgICogSWYgJ3VzZWQnIGlzIG5vdCBzaXplIGluIGJ5dGVzIHRoZW4gaXQgaXMgc2l6ZSBp
biBibG9ja3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBvcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgdG9r
bGVuWzFdICYmICh0b2tlbnNbMV1bcG9zXSkgIT0gJy8nKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBvcysrOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAg
ICAgICAgICAgICAgICogSSd2ZSBuZXZlciBzZWVuIHNpemUgY29tZSBiYWNrIGluIGJ5dGVzLCBp
dHMgYWx3YXlzIGluIGJsb2NrcywgYW5kIAorICAgICAgICAgICAgICAgICAgICAgICAgICogdGhl
IGZvbGxvd2luZyB0ZXN0IGZhaWxzLiBTbywgYWx3YXlzIHBlcmZvcm0gdGhlICJzaXplIGluIGJs
b2NrcyIuCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBJJ20gbGVhdmluZyB0aGUgInNpemUg
aW4gYnl0ZXMiIGNvZGUgaWYnZCBvdXQgaW4gY2FzZSB3ZSBldmVyIG5lZWQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAqIHRvIHJlLWluc3RhdGUgaXQuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgKi8KICNpZiAwCi0gICAgICAgICAgICBpZiAocG9zIDwgdG9rbGVuWzFdICYmICggKHBvczw8
MSkgPiAodG9rbGVuWzFdLTEpIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJ0b3VsKHRva2Vuc1sx
XSwgKGNoYXIgKiopMCwgMTApID4gCi0gICAgICAgICAgICAgICAgICBzdHJ0b3VsKHRva2Vuc1sx
XStwb3MrMSwgKGNoYXIgKiopMCwgMTApKSAgICAgICAgKSkKLSAgICAgICAgICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgaXMgaW4gYnl0ZXMgKi8KLSAgICAg
ICAgICAgICAgaWYgKHBvcyA+IChzaXplb2YocmVzdWx0LmZlX3NpemUpLTEpKQotICAgICAgICAg
ICAgICAgIHBvcyA9IHNpemVvZihyZXN1bHQuZmVfc2l6ZSktMTsKLSAgICAgICAgICAgICAgbWVt
Y3B5KCByZXN1bHQuZmVfc2l6ZSwgdG9rZW5zWzFdLCBwb3MgKTsKLSAgICAgICAgICAgICAgcmVz
dWx0LmZlX3NpemVbcG9zXSA9ICdcMCc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
IC8qIHNpemUgaXMgaW4gYmxvY2tzICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9z
IDwgdG9rbGVuWzFdICYmICggKHBvczw8MSkgPiAodG9rbGVuWzFdLTEpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgKHN0cnRvdWwodG9rZW5zWzFdLCAoY2hhciAqKikwLCAxMCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA+IHN0cnRvdWwodG9rZW5zWzFdK3BvcysxLCAoY2hh
ciAqKikwLCAxMCkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemUgaXMg
aW4gYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zID4gKHNpemVv
ZihyZXN1bHQuZmVfc2l6ZSktMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
cyA9IHNpemVvZihyZXN1bHQuZmVfc2l6ZSktMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZW1jcHkocmVzdWx0LmZlX3NpemUsIHRva2Vuc1sxXSwgcG9zKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuZmVfc2l6ZVtwb3NdID0gJ1wwJzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSAvKiBzaXplIGlzIGluIGJsb2NrcyAqLwogI2VuZGlmCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgIC8qIHNpemUgcmVxdWlyZXMgbXVsdGlwbGljYXRpb24gYnkg
YmxvY2tzaXplLiAKLSAgICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAgICogV2UgY291bGQg
YXNzdW1lIGJsb2Nrc2l6ZSBpcyA1MTIgKGxpa2UgTHlueCBkb2VzKSBhbmQKLSAgICAgICAgICAg
ICAgICogc2hpZnQgYnkgOSwgYnV0IHRoYXQgbWlnaHQgbm90IGJlIHJpZ2h0LiBFdmVuIGlmIGl0
IAotICAgICAgICAgICAgICAgKiB3ZXJlLCBkb2luZyB0aGF0IHdvdWxkbid0IHJlZmxlY3Qgd2hh
dCB0aGUgZmlsZSdzIAotICAgICAgICAgICAgICAgKiByZWFsIHNpemUgd2FzLiBUaGUgc2FuZXN0
IHRoaW5nIHRvIGRvIGlzIG5vdCB1c2UgdGhlCi0gICAgICAgICAgICAgICAqIExJU1RpbmcncyBm
aWxlc2l6ZSwgc28gd2Ugd29uJ3QgKGxpa2UgZnRwbWlycm9yKS4KLSAgICAgICAgICAgICAgICoK
LSAgICAgICAgICAgICAgICogdWxsdG9hKCgodW5zaWduZWQgbG9uZyBsb25nKWZzeik8PDksIHJl
c3VsdC5mZV9zaXplLCAxMCk7Ci0gICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAqIEEg
YmxvY2sgaXMgYWx3YXlzIDUxMiBieXRlcyBvbiBPcGVuVk1TLCBjb21wdXRlIHNpemUuCi0gICAg
ICAgICAgICAgICAqIFNvIGl0cyByb3VuZGVkIHVwIHRvIHRoZSBuZXh0IGJsb2NrLCBzbyB3aGF0
LCBpdHMgYmV0dGVyCi0gICAgICAgICAgICAgICAqIHRoYW4gbm90IHNob3dpbmcgdGhlIHNpemUg
YXQgYWxsLgotICAgICAgICAgICAgICAgKiBBIGJsb2NrIGlzIGFsd2F5cyA1MTIgYnl0ZXMgb24g
T3BlblZNUywgY29tcHV0ZSBzaXplLgotICAgICAgICAgICAgICAgKiBTbyBpdHMgcm91bmRlZCB1
cCB0byB0aGUgbmV4dCBibG9jaywgc28gd2hhdCwgaXRzIGJldHRlcgotICAgICAgICAgICAgICAg
KiB0aGFuIG5vdCBzaG93aW5nIHRoZSBzaXplIGF0IGFsbC4KLSAgICAgICAgICAgICAgKi8KLSAg
ICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9IHN0cnRvdWxsKHRva2Vuc1sxXSwgMCwgMTApICog
NTEyOwotICAgICAgICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJpbmc6Om51bWJlcihzaXpl
KTsKLSAgICAgICAgICAgIH0gCi0KLSAgICAgICAgICB9IC8qIGlmIChyZXN1bHQudHlwZSAhPSBG
VFBEaXJlY3RvcnlFbnRyeSkgKi8KLQotICAgICAgICAgIHAgPSB0b2tlbnNbMl0gKyAyOwotICAg
ICAgICAgIGlmICgqcCA9PSAnLScpCi0gICAgICAgICAgICBwKys7Ci0gICAgICAgICAgdGJ1Zlsw
XSA9IHBbMF07Ci0gICAgICAgICAgdGJ1ZlsxXSA9IHRvQVNDSUlMb3dlcihwWzFdKTsKLSAgICAg
ICAgICB0YnVmWzJdID0gdG9BU0NJSUxvd2VyKHBbMl0pOwotICAgICAgICAgIG1vbnRoX251bSA9
IDA7Ci0gICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCAoMTIqMyk7IHBvcys9MykKLSAgICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAodGJ1ZlswXSA9PSBtb250aF9uYW1lc1twb3MrMF0gJiYg
Ci0gICAgICAgICAgICAgICAgdGJ1ZlsxXSA9PSBtb250aF9uYW1lc1twb3MrMV0gJiYgCi0gICAg
ICAgICAgICAgICAgdGJ1ZlsyXSA9PSBtb250aF9uYW1lc1twb3MrMl0pCi0gICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgbW9udGhfbnVtKys7Ci0gICAgICAgICAgfQotICAgICAgICAg
IGlmIChtb250aF9udW0gPj0gMTIpCi0gICAgICAgICAgICBtb250aF9udW0gPSAwOwotICAgICAg
ICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0gbW9udGhfbnVtOwotICAgICAgICAgIHJl
c3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSA9IGF0b2kodG9rZW5zWzJdKTsKLSAgICAgICAgICBy
ZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBhdG9pKHArNCk7IC8vIE5TUFIgd2FudHMgeWVh
ciBhcyBYWFhYCi0KLSAgICAgICAgICBwID0gdG9rZW5zWzNdICsgMjsKLSAgICAgICAgICBpZiAo
KnAgPT0gJzonKQotICAgICAgICAgICAgcCsrOwotICAgICAgICAgIGlmIChwWzJdID09ICc6JykK
LSAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fc2VjID0gYXRvaShwKzMpOwotICAg
ICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1faG91ciA9IGF0b2kodG9rZW5zWzNdKTsKLSAg
ICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiAgPSBhdG9pKHApOwotICAgICAgCi0g
ICAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOwotCi0gICAgICAgIH0gLyogaWYgKGlzQVNDSUlE
aWdpdCgqdG9rZW5zWzFdKSkgKi8KLQotICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OyAvKiBq
dW5rICovCi0KLSAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnVicpICovCi0gICAgfSAvKiBpZiAo
IWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1YnKSkg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBzaXplIHJlcXVpcmVzIG11bHRpcGxpY2F0aW9uIGJ5IGJsb2Nrc2l6ZS4gCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBX
ZSBjb3VsZCBhc3N1bWUgYmxvY2tzaXplIGlzIDUxMiAobGlrZSBMeW54IGRvZXMpIGFuZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNoaWZ0IGJ5IDksIGJ1dCB0aGF0IG1pZ2h0IG5v
dCBiZSByaWdodC4gRXZlbiBpZiBpdCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3
ZXJlLCBkb2luZyB0aGF0IHdvdWxkbid0IHJlZmxlY3Qgd2hhdCB0aGUgZmlsZSdzIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqIHJlYWwgc2l6ZSB3YXMuIFRoZSBzYW5lc3QgdGhpbmcg
dG8gZG8gaXMgbm90IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBMSVNU
aW5nJ3MgZmlsZXNpemUsIHNvIHdlIHdvbid0IChsaWtlIGZ0cG1pcnJvcikuCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1bGx0
b2EoKCh1bnNpZ25lZCBsb25nIGxvbmcpZnN6KTw8OSwgcmVzdWx0LmZlX3NpemUsIDEwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqIEEgYmxvY2sgaXMgYWx3YXlzIDUxMiBieXRlcyBvbiBPcGVuVk1TLCBjb21wdXRlIHNpemUu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogU28gaXRzIHJvdW5kZWQgdXAgdG8gdGhl
IG5leHQgYmxvY2ssIHNvIHdoYXQsIGl0cyBiZXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKiB0aGFuIG5vdCBzaG93aW5nIHRoZSBzaXplIGF0IGFsbC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiBBIGJsb2NrIGlzIGFsd2F5cyA1MTIgYnl0ZXMgb24gT3BlblZNUywg
Y29tcHV0ZSBzaXplLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNvIGl0cyByb3Vu
ZGVkIHVwIHRvIHRoZSBuZXh0IGJsb2NrLCBzbyB3aGF0LCBpdHMgYmV0dGVyCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICogdGhhbiBub3Qgc2hvd2luZyB0aGUgc2l6ZSBhdCBhbGwuCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDY0X3Qgc2l6ZSA9IHN0cnRvdWxsKHRva2Vuc1sxXSwgMCwgMTApICogNTEyOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZzo6bnVtYmVy
KHNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSAKKworICAgICAgICAgICAgICAgICAg
ICB9IC8qIGlmIChyZXN1bHQudHlwZSAhPSBGVFBEaXJlY3RvcnlFbnRyeSkgKi8KKworICAgICAg
ICAgICAgICAgICAgICBwID0gdG9rZW5zWzJdICsgMjsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCpwID09ICctJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAg
ICAgICAgdGJ1ZlswXSA9IHBbMF07CisgICAgICAgICAgICAgICAgICAgIHRidWZbMV0gPSB0b0FT
Q0lJTG93ZXIocFsxXSk7CisgICAgICAgICAgICAgICAgICAgIHRidWZbMl0gPSB0b0FTQ0lJTG93
ZXIocFsyXSk7CisgICAgICAgICAgICAgICAgICAgIG1vbnRoTnVtID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCAoMTIqMyk7IHBvcyArPSAzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGJ1ZlswXSA9PSBtb250aE5hbWVzW3BvcyswXQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIHRidWZbMV0gPT0gbW9udGhOYW1lc1twb3MrMV0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0YnVmWzJdID09IG1vbnRoTmFtZXNbcG9zKzJd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgbW9udGhOdW0rKzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAobW9udGhOdW0gPj0gMTIpCisgICAgICAgICAgICAgICAgICAgICAgICBtb250aE51
bSA9IDA7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0g
bW9udGhOdW07CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRh
eSA9IGF0b2kodG9rZW5zWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVk
VGltZS50bV95ZWFyID0gYXRvaShwKzQpOyAvLyBOU1BSIHdhbnRzIHllYXIgYXMgWFhYWAorCisg
ICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbM10gKyAyOworICAgICAgICAgICAgICAgICAg
ICBpZiAoKnAgPT0gJzonKQorICAgICAgICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAg
ICAgICAgICAgICBpZiAocFsyXSA9PSAnOicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX3NlYyA9IGF0b2kocCszKTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyID0gYXRvaSh0b2tlbnNbM10pOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiAgPSBhdG9pKHApOworCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudHlwZTsKKworICAgICAgICAgICAgICAgIH0g
LyogaWYgKGlzQVNDSUlEaWdpdCgqdG9rZW5zWzFdKSkgKi8KKworICAgICAgICAgICAgICAgIHJl
dHVybiBGVFBKdW5rRW50cnk7IC8qIGp1bmsgKi8KKworICAgICAgICAgICAgfSAvKiBpZiAobHN0
eWxlID09ICdWJykgKi8KKyAgICAgICAgfSAvKiBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RT
dHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1YnKSkgKi8KICNlbmRpZgogCi0gICAgLyogKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysg
Ki8KKyAgICAgICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysgKi8KIAogI2lmIGRlZmluZWQoU1VQUE9SVF9DTVMpCi0gICAgLyog
VmlydHVhbCBNYWNoaW5lL0NvbnZlcnNhdGlvbmFsIE1vbml0b3IgU3lzdGVtIChJQk0gTWFpbmZy
YW1lKSAqLwotICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxp
c3RTdHlsZSA9PSAnQycpKSAgLyogVk0vQ01TICovCi0gICAgewotICAgICAgLyogTElTVGluZyBh
Y2NvcmRpbmcgdG8gbWlycm9yLnBsCi0gICAgICAgKiBGaWxlbmFtZSBGaWxlVHlwZSAgRm0gRm9y
bWF0IExyZWNsICBSZWNvcmRzIEJsb2NrcyBEYXRlICAgICAgVGltZQotICAgICAgICogTEFTVElO
RyAgR0xPQkFMViAgIEExIFYgICAgICA0MSAgICAgMjEgICAgIDEgICAgICAgOS8xNi85MSAgIDE1
OjEwOjMyCi0gICAgICAgKiBKNDM0MDEgICBORVRMT0cgICAgQTAgViAgICAgIDc3ICAgICAxICAg
ICAgMSAgICAgICA5LzEyLzkxICAgMTI6MzY6MDQKLSAgICAgICAqIFBST0ZJTEUgIEVYRUMgICAg
ICBBMSBWICAgICAgMTcgICAgIDMgICAgICAxICAgICAgIDkvMTIvOTEgICAxMjozOTowNwotICAg
ICAgICogRElSVU5JWCAgU0NSSVBUICAgIEExIFYgICAgICA3NyAgICAgMTIxNiAgIDE3ICAgICAg
MS8wNC85MyAgIDIwOjMwOjQ3Ci0gICAgICAgKiBNQUlMICAgICBQUk9GSUxFICAgQTIgRiAgICAg
IDgwICAgICAxICAgICAgMSAgICAgICAxMC8xNC85MiAgMTY6MTI6MjcKLSAgICAgICAqIEJBRFky
SyAgIFRFWFQgICAgICBBMCBWICAgICAgMSAgICAgIDEgICAgICAxICAgICAgIDEvMDMvMTAyICAx
MDoxMToxMgotICAgICAgICogQVVUSE9SUyAgICAgICAgICAgIEExIERJUiAgICAtICAgICAgLSAg
ICAgIC0gICAgICAgOS8yMC85OSAgIDEwOjMxOjExCi0gICAgICAgKgotICAgICAgICogTElTVGlu
ZyBmcm9tIHZtLm1hcmlzdC5lZHUgYW5kIHZtLnNjLmVkdQotICAgICAgICogMjIwLUZUUFNFUlZF
IElCTSBWTSBMZXZlbCA0MjAgYXQgVk0uTUFSSVNULkVEVSwgMDQ6NTg6MTIgRURUIFdFRE5FU0RB
WSAyMDAyLTA3LTEwCi0gICAgICAgKiBBVVRIT1JTICAgICAgICAgICBESVIgICAgICAgIC0gICAg
ICAgICAgLSAgICAgICAgICAtIDE5OTktMDktMjAgMTA6MzE6MTEgLQotICAgICAgICogSEFSUklO
R1RPTiAgICAgICAgRElSICAgICAgICAtICAgICAgICAgIC0gICAgICAgICAgLSAxOTk3LTAyLTEy
IDE1OjMzOjI4IC0KLSAgICAgICAqIFBJQ1MgICAgICAgICAgICAgIERJUiAgICAgICAgLSAgICAg
ICAgICAtICAgICAgICAgIC0gMjAwMC0xMC0xMiAxNTo0MzoyMyAtCi0gICAgICAgKiBTWVNGSUxF
ICAgICAgICAgICBESVIgICAgICAgIC0gICAgICAgICAgLSAgICAgICAgICAtIDIwMDAtMDctMjAg
MTc6NDg6MDEgLQotICAgICAgICogV0VMQ05WVCAgRVhFQyAgICAgViAgICAgICAgIDcyICAgICAg
ICAgIDkgICAgICAgICAgMSAxOTk5LTA5LTIwIDE3OjE2OjE4IC0KLSAgICAgICAqIFdFTENPTUUg
IEVSRUFETUUgIEYgICAgICAgICA4MCAgICAgICAgIDIxICAgICAgICAgIDEgMTk5OS0xMi0yNyAx
NjoxOTowMCAtCi0gICAgICAgKiBXRUxDT01FICBSRUFETUUgICBWICAgICAgICAgODIgICAgICAg
ICAyMSAgICAgICAgICAxIDE5OTktMTItMjcgMTY6MTk6MDQgLQotICAgICAgICogUkVBRE1FICAg
QU5PTllNT1UgViAgICAgICAgIDcxICAgICAgICAgMjYgICAgICAgICAgMSAxOTk3LTA0LTAyIDEy
OjMzOjIwIFRDUDI5MQotICAgICAgICogUkVBRE1FICAgQU5PTllPTEQgViAgICAgICAgIDcxICAg
ICAgICAgMTUgICAgICAgICAgMSAxOTk1LTA4LTI1IDE2OjA0OjI3IFRDUDI5MQotICAgICAgKi8K
LSAgICAgIGlmIChudW10b2tzID49IDcgJiYgKHRva2xlblswXSt0b2tsZW5bMV0pIDw9IDE2KQot
ICAgICAgewotICAgICAgICBmb3IgKHBvcyA9IDE7ICFsc3R5bGUgJiYgKHBvcys1KSA8IG51bXRv
a3M7IHBvcysrKQotICAgICAgICB7Ci0gICAgICAgICAgcCA9IHRva2Vuc1twb3NdOwotICAgICAg
ICAgIGlmICgodG9rbGVuW3Bvc10gPT0gMSAmJiAoKnAgPT0gJ0YnIHx8ICpwID09ICdWJykpIHx8
Ci0gICAgICAgICAgICAgICh0b2tsZW5bcG9zXSA9PSAzICYmICpwID09ICdEJyAmJiBwWzFdID09
ICdJJyAmJiBwWzJdID09ICdSJykpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKHRva2xl
bltwb3MrNV0gPT0gOCAmJiAodG9rZW5zW3Bvcys1XVsyXSkgPT0gJzonICYmCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2tlbnNbcG9zKzVdWzVdKSA9PSAnOicgICAp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHAgPSB0b2tlbnNbcG9zKzRdOwotICAgICAg
ICAgICAgICBpZiAoKHRva2xlbltwb3MrNF0gPT0gMTAgJiYgcFs0XSA9PSAnLScgJiYgcFs3XSA9
PSAnLScpIHx8Ci0gICAgICAgICAgICAgICAgICAodG9rbGVuW3Bvcys0XSA+PSA3ICYmIHRva2xl
bltwb3MrNF0gPD0gOSAmJiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwWygocFsxXSE9
Jy8nKT8oMik6KDEpKV0gPT0gJy8nICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBb
KChwWzFdIT0nLycpPyg1KTooNCkpXSA9PSAnLycpKQotICAgICAgICAgICAgICAgLyogWTJLIGJ1
Z3MgcG9zc2libGUgKCI3LzA2LzEwMiIgb3IgIjEzLzAyLzEwMSIpICovCi0gICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAoICgqdG9rZW5zW3BvcysxXSA9PSAnLScgJiYKLSAgICAg
ICAgICAgICAgICAgICAgICAqdG9rZW5zW3BvcysyXSA9PSAnLScgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAqdG9rZW5zW3BvcyszXSA9PSAnLScpICB8fAotICAgICAgICAgICAgICAgICAgICAg
IChpc0FTQ0lJRGlnaXQoKnRva2Vuc1twb3MrMV0pICYmCi0gICAgICAgICAgICAgICAgICAgICAg
IGlzQVNDSUlEaWdpdCgqdG9rZW5zW3BvcysyXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
aXNBU0NJSURpZ2l0KCp0b2tlbnNbcG9zKzNdKSkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgIGxzdHlsZSA9ICdDJzsKLSAgICAgICAgICAgICAgICAgIHRva21hcmtlciA9
IHBvczsKKyAgICAgICAgLyogVmlydHVhbCBNYWNoaW5lL0NvbnZlcnNhdGlvbmFsIE1vbml0b3Ig
U3lzdGVtIChJQk0gTWFpbmZyYW1lKSAqLworICAgICAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRl
Lmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ0MnKSkgeyAvKiBWTS9DTVMgKi8KKyAg
ICAgICAgICAgIC8qIExJU1RpbmcgYWNjb3JkaW5nIHRvIG1pcnJvci5wbAorICAgICAgICAgICAg
ICogRmlsZW5hbWUgRmlsZVR5cGUgIEZtIEZvcm1hdCBMcmVjbCAgUmVjb3JkcyBCbG9ja3MgRGF0
ZSAgICAgIFRpbWUKKyAgICAgICAgICAgICAqIExBU1RJTkcgIEdMT0JBTFYgICBBMSBWICAgICAg
NDEgICAgIDIxICAgICAxICAgICAgIDkvMTYvOTEgICAxNToxMDozMgorICAgICAgICAgICAgICog
SjQzNDAxICAgTkVUTE9HICAgIEEwIFYgICAgICA3NyAgICAgMSAgICAgIDEgICAgICAgOS8xMi85
MSAgIDEyOjM2OjA0CisgICAgICAgICAgICAgKiBQUk9GSUxFICBFWEVDICAgICAgQTEgViAgICAg
IDE3ICAgICAzICAgICAgMSAgICAgICA5LzEyLzkxICAgMTI6Mzk6MDcKKyAgICAgICAgICAgICAq
IERJUlVOSVggIFNDUklQVCAgICBBMSBWICAgICAgNzcgICAgIDEyMTYgICAxNyAgICAgIDEvMDQv
OTMgICAyMDozMDo0NworICAgICAgICAgICAgICogTUFJTCAgICAgUFJPRklMRSAgIEEyIEYgICAg
ICA4MCAgICAgMSAgICAgIDEgICAgICAgMTAvMTQvOTIgIDE2OjEyOjI3CisgICAgICAgICAgICAg
KiBCQURZMksgICBURVhUICAgICAgQTAgViAgICAgIDEgICAgICAxICAgICAgMSAgICAgICAxLzAz
LzEwMiAgMTA6MTE6MTIKKyAgICAgICAgICAgICAqIEFVVEhPUlMgICAgICAgICAgICBBMSBESVIg
ICAgLSAgICAgIC0gICAgICAtICAgICAgIDkvMjAvOTkgICAxMDozMToxMQorICAgICAgICAgICAg
ICoKKyAgICAgICAgICAgICAqIExJU1RpbmcgZnJvbSB2bS5tYXJpc3QuZWR1IGFuZCB2bS5zYy5l
ZHUKKyAgICAgICAgICAgICAqIDIyMC1GVFBTRVJWRSBJQk0gVk0gTGV2ZWwgNDIwIGF0IFZNLk1B
UklTVC5FRFUsIDA0OjU4OjEyIEVEVCBXRURORVNEQVkgMjAwMi0wNy0xMAorICAgICAgICAgICAg
ICogQVVUSE9SUyAgICAgICAgICAgRElSICAgICAgICAtICAgICAgICAgIC0gICAgICAgICAgLSAx
OTk5LTA5LTIwIDEwOjMxOjExIC0KKyAgICAgICAgICAgICAqIEhBUlJJTkdUT04gICAgICAgIERJ
UiAgICAgICAgLSAgICAgICAgICAtICAgICAgICAgIC0gMTk5Ny0wMi0xMiAxNTozMzoyOCAtCisg
ICAgICAgICAgICAgKiBQSUNTICAgICAgICAgICAgICBESVIgICAgICAgIC0gICAgICAgICAgLSAg
ICAgICAgICAtIDIwMDAtMTAtMTIgMTU6NDM6MjMgLQorICAgICAgICAgICAgICogU1lTRklMRSAg
ICAgICAgICAgRElSICAgICAgICAtICAgICAgICAgIC0gICAgICAgICAgLSAyMDAwLTA3LTIwIDE3
OjQ4OjAxIC0KKyAgICAgICAgICAgICAqIFdFTENOVlQgIEVYRUMgICAgIFYgICAgICAgICA3MiAg
ICAgICAgICA5ICAgICAgICAgIDEgMTk5OS0wOS0yMCAxNzoxNjoxOCAtCisgICAgICAgICAgICAg
KiBXRUxDT01FICBFUkVBRE1FICBGICAgICAgICAgODAgICAgICAgICAyMSAgICAgICAgICAxIDE5
OTktMTItMjcgMTY6MTk6MDAgLQorICAgICAgICAgICAgICogV0VMQ09NRSAgUkVBRE1FICAgViAg
ICAgICAgIDgyICAgICAgICAgMjEgICAgICAgICAgMSAxOTk5LTEyLTI3IDE2OjE5OjA0IC0KKyAg
ICAgICAgICAgICAqIFJFQURNRSAgIEFOT05ZTU9VIFYgICAgICAgICA3MSAgICAgICAgIDI2ICAg
ICAgICAgIDEgMTk5Ny0wNC0wMiAxMjozMzoyMCBUQ1AyOTEKKyAgICAgICAgICAgICAqIFJFQURN
RSAgIEFOT05ZT0xEIFYgICAgICAgICA3MSAgICAgICAgIDE1ICAgICAgICAgIDEgMTk5NS0wOC0y
NSAxNjowNDoyNyBUQ1AyOTEKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKG51bXRv
a3MgPj0gNyAmJiAodG9rbGVuWzBdK3Rva2xlblsxXSkgPD0gMTYpIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHBvcyA9IDE7ICFsc3R5bGUgJiYgKHBvcys1KSA8IG51bXRva3M7IHBvcysrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbcG9zXTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCh0b2tsZW5bcG9zXSA9PSAxICYmICgqcCA9PSAnRicgfHwgKnAgPT0gJ1YnKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHx8ICh0b2tsZW5bcG9zXSA9PSAzICYmICpwID09ICdEJyAmJiBw
WzFdID09ICdJJyAmJiBwWzJdID09ICdSJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh0b2tsZW5bcG9zKzVdID09IDggJiYgKHRva2Vuc1twb3MrNV1bMl0pID09ICc6JworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmICh0b2tlbnNbcG9zKzVdWzVdKSA9PSAnOicpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdG9rZW5zW3Bvcys0XTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKHRva2xlbltwb3MrNF0gPT0gMTAgJiYgcFs0XSA9PSAnLScg
JiYgcFs3XSA9PSAnLScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICh0b2ts
ZW5bcG9zKzRdID49IDcgJiYgdG9rbGVuW3Bvcys0XSA8PSA5CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICYmIHBbKChwWzFdICE9ICcvJyk/KDIpOigxKSldID09ICcvJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwWygocFsxXSAhPSAnLycpPyg1KTooNCkpXSA9
PSAnLycpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFkySyBidWdzIHBv
c3NpYmxlICgiNy8wNi8xMDIiIG9yICIxMy8wMi8xMDEiKSAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoICgqdG9rZW5zW3BvcysxXSA9PSAnLScKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmICp0b2tlbnNbcG9zKzJdID09ICctJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKnRva2Vuc1twb3MrM10gPT0gJy0nKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGlzQVNDSUlEaWdpdCgqdG9rZW5z
W3BvcysxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlE
aWdpdCgqdG9rZW5zW3BvcysyXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIGlzQVNDSUlEaWdpdCgqdG9rZW5zW3BvcyszXSkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsc3R5bGUgPSAnQyc7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2ttYXJrZXIgPSBwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IC8qIGZvciAo
cG9zID0gMTsgIWxzdHlsZSAmJiAocG9zKzUpIDwgbnVtdG9rczsgcG9zKyspICovCisgICAgICAg
ICAgICB9IC8qIGlmIChudW10b2tzID49IDcpICovCisKKyAgICAgICAgICAgIC8qIGV4dHJhIGNo
ZWNraW5nIGlmIGZpcnN0IHBhc3MgKi8KKyAgICAgICAgICAgIGlmIChsc3R5bGUgJiYgIXN0YXRl
Lmxpc3RTdHlsZSkgeworICAgICAgICAgICAgICAgIGZvciAocG9zID0gMCwgcCA9IHRva2Vuc1sw
XTsgbHN0eWxlICYmIHBvcyA8IHRva2xlblswXTsgcG9zKyssIHArKykgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNBU0NJSUFscGhhKCpwKSAmJiB0b0FTQ0lJVXBwZXIoKnApICE9ICpwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZm9yIChwb3MgPSB0b2ttYXJrZXIrMTsgcG9zIDw9IHRva21hcmtlcisz
OyBwb3MrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoISh0b2tsZW5bcG9zXSA9PSAxICYm
ICp0b2tlbnNbcG9zXSA9PSAnLScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAg
PSB0b2tlbnNbcG9zXTsgbHN0eWxlICYmIHAgPCAodG9rZW5zW3Bvc10rdG9rbGVuW3Bvc10pOyBw
KyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqcCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAwLCBwID0gdG9rZW5zW3Rva21hcmtlcis0XTsg
bHN0eWxlICYmIHBvcyA8IHRva2xlblt0b2ttYXJrZXIrNF07IHBvcysrLCBwKyspIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCpwID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICAgICAg
LyogVGhlcmUgbWF5IGJlIFkySyBidWdzIGluIHRoZSBkYXRlLiBEb24ndCBzaW1wbGlmeSB0bwor
ICAgICAgICAgICAgICAgICAgICAgICAgICogcG9zICE9IChsZW4tMykgJiYgcG9zICE9IChsZW4t
NikgbGlrZSB0aW1lIGlzIGRvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgodG9rZW5zW3Rva21hcmtlcis0XVsxXSkgPT0gJy8nKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyAhPSAxICYmIHBvcyAhPSA0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgIT0gMiAmJiBwb3MgIT0gNSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCpwICE9ICctJyAmJiAhaXNBU0NJSURpZ2l0KCpwKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwID09ICctJyAm
JiBwb3MgIT0gNCAmJiBwb3MgIT0gNykKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9
IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAocG9zID0gMCwgcCA9
IHRva2Vuc1t0b2ttYXJrZXIrNV07IGxzdHlsZSAmJiBwb3MgPCB0b2tsZW5bdG9rbWFya2VyKzVd
OyBwb3MrKywgcCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqcCAhPSAnOicgJiYgIWlz
QVNDSUlEaWdpdCgqcCkpCisgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcCA9PSAnOicgJiYgcG9zICE9ICh0b2tsZW5bdG9r
bWFya2VyKzVdLTMpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBwb3MgIT0gKHRva2xlblt0
b2ttYXJrZXIrNV0tNikpCisgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gLyogaW5pdGlhbCBpZigpICovCisKKyAgICAg
ICAgICAgIGlmIChsc3R5bGUgPT0gJ0MnKSB7CisgICAgICAgICAgICAgICAgc3RhdGUucGFyc2Vk
T25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7CisK
KyAgICAgICAgICAgICAgICBwID0gdG9rZW5zW3Rva21hcmtlcis0XTsKKyAgICAgICAgICAgICAg
ICBpZiAodG9rbGVuW3Rva21hcmtlcis0XSA9PSAxMCkgeyAvKiBuZXdzdHlsZTogWVlZWS1NTS1E
RCBmb3JtYXQgKi8KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95
ZWFyID0gYXRvaShwKzApIC0gMTkwMDsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlm
aWVkVGltZS50bV9tb24gID0gYXRvaShwKzUpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaShwKzgpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7IC8qIG9sZHN0eWxlOiBbTV1NL0REL1lZIGZvcm1hdCAqLworICAgICAgICAgICAgICAg
ICAgICBwb3MgPSB0b2tsZW5bdG9rbWFya2VyKzRdOworICAgICAgICAgICAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX21vbiAgPSBhdG9pKHApIC0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaSgocCtwb3MpLTUpOworICAgICAg
ICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBhdG9pKChwK3Bvcykt
Mik7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIg
PCA3MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVh
ciArPSAxMDA7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgfQotICAgICAgICB9IC8qIGZvciAocG9zID0gMTsgIWxzdHlsZSAmJiAo
cG9zKzUpIDwgbnVtdG9rczsgcG9zKyspICovCi0gICAgICB9IC8qIGlmIChudW10b2tzID49IDcp
ICovCi0KLSAgICAgIC8qIGV4dHJhIGNoZWNraW5nIGlmIGZpcnN0IHBhc3MgKi8KLSAgICAgIGlm
IChsc3R5bGUgJiYgIXN0YXRlLmxpc3RTdHlsZSkgCi0gICAgICB7Ci0gICAgICAgIGZvciAocG9z
ID0gMCwgcCA9IHRva2Vuc1swXTsgbHN0eWxlICYmIHBvcyA8IHRva2xlblswXTsgcG9zKyssIHAr
KykKLSAgICAgICAgeyAgCi0gICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYSgqcCkgJiYgdG9BU0NJ
SVVwcGVyKCpwKSAhPSAqcCkKLSAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgIH0gCi0g
ICAgICAgIGZvciAocG9zID0gdG9rbWFya2VyKzE7IHBvcyA8PSB0b2ttYXJrZXIrMzsgcG9zKysp
Ci0gICAgICAgIHsKLSAgICAgICAgICBpZiAoISh0b2tsZW5bcG9zXSA9PSAxICYmICp0b2tlbnNb
cG9zXSA9PSAnLScpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAocCA9IHRva2Vuc1tw
b3NdOyBsc3R5bGUgJiYgcDwodG9rZW5zW3Bvc10rdG9rbGVuW3Bvc10pOyBwKyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpwKSkKLSAgICAgICAgICAg
ICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBmb3IgKHBvcyA9IDAsIHAgPSB0b2tlbnNbdG9rbWFya2VyKzRdOyAKLSAgICAgICAg
ICAgICBsc3R5bGUgJiYgcG9zIDwgdG9rbGVuW3Rva21hcmtlcis0XTsgcG9zKyssIHArKykKLSAg
ICAgICAgewotICAgICAgICAgIGlmICgqcCA9PSAnLycpCi0gICAgICAgICAgeyAKLSAgICAgICAg
ICAgIC8qIFRoZXJlIG1heSBiZSBZMksgYnVncyBpbiB0aGUgZGF0ZS4gRG9uJ3Qgc2ltcGxpZnkg
dG8KLSAgICAgICAgICAgICAqIHBvcyAhPSAobGVuLTMpICYmIHBvcyAhPSAobGVuLTYpIGxpa2Ug
dGltZSBpcyBkb25lLgotICAgICAgICAgICAgKi8gICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoKHRva2Vuc1t0b2ttYXJrZXIrNF1bMV0pID09ICcvJykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgaWYgKHBvcyAhPSAxICYmIHBvcyAhPSA0KQotICAgICAgICAgICAgICAgIGxzdHls
ZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChwb3MgIT0gMiAmJiBw
b3MgIT0gNSkKLSAgICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgZWxzZSBpZiAoKnAgIT0gJy0nICYmICFpc0FTQ0lJRGlnaXQoKnApKQotICAgICAgICAgICAg
bHN0eWxlID0gMDsKLSAgICAgICAgICBlbHNlIGlmICgqcCA9PSAnLScgJiYgcG9zICE9IDQgJiYg
cG9zICE9IDcpCi0gICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGZv
ciAocG9zID0gMCwgcCA9IHRva2Vuc1t0b2ttYXJrZXIrNV07IAotICAgICAgICAgICAgIGxzdHls
ZSAmJiBwb3MgPCB0b2tsZW5bdG9rbWFya2VyKzVdOyBwb3MrKywgcCsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgaWYgKCpwICE9ICc6JyAmJiAhaXNBU0NJSURpZ2l0KCpwKSkKLSAgICAgICAgICAg
IGxzdHlsZSA9IDA7Ci0gICAgICAgICAgZWxzZSBpZiAoKnAgPT0gJzonICYmIHBvcyAhPSAodG9r
bGVuW3Rva21hcmtlcis1XS0zKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwb3Mg
IT0gKHRva2xlblt0b2ttYXJrZXIrNV0tNikpCi0gICAgICAgICAgICBsc3R5bGUgPSAwOwotICAg
ICAgICB9Ci0gICAgICB9IC8qIGluaXRpYWwgaWYoKSAqLwotCi0gICAgICBpZiAobHN0eWxlID09
ICdDJykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKLSAgICAgICAg
c3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOwotCi0gICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2Vy
KzRdOwotICAgICAgICBpZiAodG9rbGVuW3Rva21hcmtlcis0XSA9PSAxMCkgLyogbmV3c3R5bGU6
IFlZWVktTU0tREQgZm9ybWF0ICovCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQubW9kaWZp
ZWRUaW1lLnRtX3llYXIgPSBhdG9pKHArMCkgLSAxOTAwOwotICAgICAgICAgIHJlc3VsdC5tb2Rp
ZmllZFRpbWUudG1fbW9uICA9IGF0b2kocCs1KSAtIDE7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlm
aWVkVGltZS50bV9tZGF5ID0gYXRvaShwKzgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgLyog
b2xkc3R5bGU6IFtNXU0vREQvWVkgZm9ybWF0ICovCi0gICAgICAgIHsKLSAgICAgICAgICBwb3Mg
PSB0b2tsZW5bdG9rbWFya2VyKzRdOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1f
bW9uICA9IGF0b2kocCkgLSAxOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRh
eSA9IGF0b2koKHArcG9zKS01KTsKLSAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3ll
YXIgPSBhdG9pKChwK3BvcyktMik7Ci0gICAgICAgICAgaWYgKHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1feWVhciA8IDcwKQotICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyICs9
IDEwMDsKLSAgICAgICAgfQogCi0gICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyKzVdOwotICAg
ICAgICBwb3MgPSB0b2tsZW5bdG9rbWFya2VyKzVdOwotICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX2hvdXIgID0gYXRvaShwKTsKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9t
aW4gPSBhdG9pKChwK3BvcyktNSk7Ci0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fc2Vj
ID0gYXRvaSgocCtwb3MpLTIpOwotCi0gICAgICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZlID0gdHJ1
ZTsKLSAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzBdOwotICAgICAgICByZXN1bHQu
ZmlsZW5hbWVMZW5ndGggPSB0b2tsZW5bMF07Ci0gICAgICAgIHJlc3VsdC50eXBlICA9IEZUUEZp
bGVFbnRyeTsKLQotICAgICAgICBwID0gdG9rZW5zW3Rva21hcmtlcl07Ci0gICAgICAgIGlmICh0
b2tsZW5bdG9rbWFya2VyXSA9PSAzICYmICpwPT0nRCcgJiYgcFsxXT09J0knICYmIHBbMl09PSdS
JykKLSAgICAgICAgICByZXN1bHQudHlwZSAgPSBGVFBEaXJlY3RvcnlFbnRyeTsKLQotICAgICAg
ICBpZiAoKC8qbmV3c3R5bGUqLyB0b2tsZW5bdG9rbWFya2VyKzRdID09IDEwICYmIHRva21hcmtl
ciA+IDEpIHx8Ci0gICAgICAgICAgICAoLypvbGRzdHlsZSovIHRva2xlblt0b2ttYXJrZXIrNF0g
IT0gMTAgJiYgdG9rbWFya2VyID4gMikpCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogaGF2ZSBhIGZpbGV0eXBlIGNvbHVtbiAqLwotICAgICAgICAgIGNoYXIgKmRvdDsK
LSAgICAgICAgICBwID0gJih0b2tlbnNbMF1bdG9rbGVuWzBdXSk7Ci0gICAgICAgICAgbWVtY3B5
KCAmZG90LCAmcCwgc2l6ZW9mKGRvdCkgKTsgLyogTkFTVFkhICovCi0gICAgICAgICAgKmRvdCsr
ID0gJy4nOwotICAgICAgICAgIHAgPSB0b2tlbnNbMV07Ci0gICAgICAgICAgZm9yIChwb3MgPSAw
OyBwb3MgPCB0b2tsZW5bMV07IHBvcysrKQotICAgICAgICAgICAgKmRvdCsrID0gKnArKzsKLSAg
ICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGggKz0gMSArIHRva2xlblsxXTsKLSAgICAgICAg
fQorICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyKzVdOworICAgICAgICAgICAg
ICAgIHBvcyA9IHRva2xlblt0b2ttYXJrZXIrNV07CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1v
ZGlmaWVkVGltZS50bV9ob3VyICA9IGF0b2kocCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1v
ZGlmaWVkVGltZS50bV9taW4gPSBhdG9pKChwK3BvcyktNSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0Lm1vZGlmaWVkVGltZS50bV9zZWMgPSBhdG9pKChwK3BvcyktMik7CisKKyAgICAgICAgICAg
ICAgICByZXN1bHQuY2FzZVNlbnNpdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVzdWx0
LmZpbGVuYW1lID0gdG9rZW5zWzBdOworICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxl
bmd0aCA9IHRva2xlblswXTsKKyAgICAgICAgICAgICAgICByZXN1bHQudHlwZSAgPSBGVFBGaWxl
RW50cnk7CisKKyAgICAgICAgICAgICAgICBwID0gdG9rZW5zW3Rva21hcmtlcl07CisgICAgICAg
ICAgICAgICAgaWYgKHRva2xlblt0b2ttYXJrZXJdID09IDMgJiYgKnAgPT0gJ0QnICYmIHBbMV0g
PT0gJ0knICYmIHBbMl0gPT0gJ1InKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSAg
PSBGVFBEaXJlY3RvcnlFbnRyeTsKKworICAgICAgICAgICAgICAgIGlmICgoLypuZXdzdHlsZSov
IHRva2xlblt0b2ttYXJrZXIrNF0gPT0gMTAgJiYgdG9rbWFya2VyID4gMSkKKyAgICAgICAgICAg
ICAgICAgICAgfHwgKC8qb2xkc3R5bGUqLyB0b2tsZW5bdG9rbWFya2VyKzRdICE9IDEwICYmIHRv
a21hcmtlciA+IDIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGhhdmUgYSBmaWxldHlwZSBj
b2x1bW4gKi8KKyAgICAgICAgICAgICAgICAgICAgY2hhciogZG90OworICAgICAgICAgICAgICAg
ICAgICBwID0gJih0b2tlbnNbMF1bdG9rbGVuWzBdXSk7CisgICAgICAgICAgICAgICAgICAgIG1l
bWNweSgmZG90LCAmcCwgc2l6ZW9mKGRvdCkpOyAvKiBOQVNUWSEgKi8KKyAgICAgICAgICAgICAg
ICAgICAgKmRvdCsrID0gJy4nOworICAgICAgICAgICAgICAgICAgICBwID0gdG9rZW5zWzFdOwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IHRva2xlblsxXTsgcG9zKysp
CisgICAgICAgICAgICAgICAgICAgICAgICAqZG90KysgPSAqcCsrOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGggKz0gMSArIHRva2xlblsxXTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBvbGRzdHlsZSBMSVNUSU5HOiAKKyAgICAgICAg
ICAgICAgICAgKiBmaWxlcy9kaXJzIG5vdCBvbiB0aGUgJ0EnIG1pbmlkaXNrIGFyZSBub3QgUkVU
UmlldmFibGUvQ0hESVJhYmxlIAorICAgICAgICAgICAgICAgICBpZiAodG9rbGVuW3Rva21hcmtl
cis0XSAhPSAxMCAmJiAqdG9rZW5zW3Rva21hcmtlci0xXSAhPSAnQScpCisgICAgICAgICAgICAg
ICAgIHJldHVybiBGVFBKdW5rRW50cnk7CisgICAgICAgICAgICAgICAgICovCiAKLSAgICAgICAg
Lyogb2xkc3R5bGUgTElTVElORzogCi0gICAgICAgICAqIGZpbGVzL2RpcnMgbm90IG9uIHRoZSAn
QScgbWluaWRpc2sgYXJlIG5vdCBSRVRSaWV2YWJsZS9DSERJUmFibGUgCi0gICAgICAgIGlmICh0
b2tsZW5bdG9rbWFya2VyKzRdICE9IDEwICYmICp0b2tlbnNbdG9rbWFya2VyLTFdICE9ICdBJykK
LSAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OwotICAgICAgICAqLwotICAgICAgICAKLSAg
ICAgICAgLyogVk0vQ01TIExJU1RpbmdzIGhhdmUgbm8gdXNhYmxlIGZpbGVzaXplIGZpZWxkLiAK
LSAgICAgICAgICogSGF2ZSB0byB1c2UgdGhlICdTSVpFJyBjb21tYW5kIGZvciB0aGF0LgotICAg
ICAgICAqLwotICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7Ci0KLSAgICAgIH0gLyogaWYgKGxz
dHlsZSA9PSAnQycgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09IGxz
dHlsZSkpICovCi0gICAgfSAvKiBWTS9DTVMgKi8KKyAgICAgICAgICAgICAgICAvKiBWTS9DTVMg
TElTVGluZ3MgaGF2ZSBubyB1c2FibGUgZmlsZXNpemUgZmllbGQuIAorICAgICAgICAgICAgICAg
ICAqIEhhdmUgdG8gdXNlIHRoZSAnU0laRScgY29tbWFuZCBmb3IgdGhhdC4KKyAgICAgICAgICAg
ICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7CisKKyAgICAgICAg
ICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnQycgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUu
bGlzdFN0eWxlID09IGxzdHlsZSkpICovCisgICAgICAgIH0gLyogVk0vQ01TICovCiAjZW5kaWYK
IAotICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrICovCisgICAgICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCiAKICNpZiBkZWZpbmVkKFNVUFBPUlRf
RE9TKSAvKiBXaW5OVCBET1MgZGlyc3R5bGUgKi8KLSAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRl
Lmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1cnKSkKLSAgICB7Ci0gICAgICAvKgot
ICAgICAgICogIjEwLTIzLTAwICAwMToyN1BNICAgICAgIDxESVI+ICAgICAgICAgIHZlcm9uaXN0
IgotICAgICAgICogIjA2LTE1LTAwICAwNzozN0FNICAgICAgIDxESVI+ICAgICAgICAgIHpvZSIK
LSAgICAgICAqICIwNy0xNC0wMCAgMDE6MzVQTSAgICAgICAgICAgICAgMjA5NDkyNiBjYW5wcmFu
a2Rlc2sudGlmIgotICAgICAgICogIjA3LTIxLTAwICAwMToxOVBNICAgICAgICAgICAgICAgIDk1
MDc3IEpvbiBLYXVmZm1hbiBFbmpveXMgdGhlIEdvb2QgTGlmZS5qcGciCi0gICAgICAgKiAiMDct
MjEtMDAgIDAxOjE5UE0gICAgICAgICAgICAgICAgNTIyNzUgTmFtZSBQbGF0ZS5qcGciCi0gICAg
ICAgKiAiMDctMTQtMDAgIDAxOjM4UE0gICAgICAgICAgICAgIDIyNTA1NDAgVmFsZW50aW5lb2Zm
cHJhbmstSGlSZXMuanBnIgotICAgICAgKi8KLSAgICAgIGlmICgobnVtdG9rcyA+PSA0KSAmJiB0
b2tsZW5bMF0gPT0gOCAmJiB0b2tsZW5bMV0gPT0gNyAmJiAKLSAgICAgICAgICAoKnRva2Vuc1sy
XSA9PSAnPCcgfHwgaXNBU0NJSURpZ2l0KCp0b2tlbnNbMl0pKSApCi0gICAgICB7Ci0gICAgICAg
IHAgPSB0b2tlbnNbMF07Ci0gICAgICAgIGlmICggaXNBU0NJSURpZ2l0KHBbMF0pICYmIGlzQVND
SUlEaWdpdChwWzFdKSAmJiBwWzJdPT0nLScgJiYgCi0gICAgICAgICAgICAgaXNBU0NJSURpZ2l0
KHBbM10pICYmIGlzQVNDSUlEaWdpdChwWzRdKSAmJiBwWzVdPT0nLScgJiYKLSAgICAgICAgICAg
ICBpc0FTQ0lJRGlnaXQocFs2XSkgJiYgaXNBU0NJSURpZ2l0KHBbN10pICkKLSAgICAgICAgewot
ICAgICAgICAgIHAgPSB0b2tlbnNbMV07Ci0gICAgICAgICAgaWYgKCBpc0FTQ0lJRGlnaXQocFsw
XSkgJiYgaXNBU0NJSURpZ2l0KHBbMV0pICYmIHBbMl09PSc6JyAmJiAKLSAgICAgICAgICAgICAg
IGlzQVNDSUlEaWdpdChwWzNdKSAmJiBpc0FTQ0lJRGlnaXQocFs0XSkgJiYgCi0gICAgICAgICAg
ICAgICAocFs1XT09J0EnIHx8IHBbNV09PSdQJykgJiYgcFs2XT09J00nKQotICAgICAgICAgIHsK
LSAgICAgICAgICAgIGxzdHlsZSA9ICdXJzsKLSAgICAgICAgICAgIGlmICghc3RhdGUubGlzdFN0
eWxlKQotICAgICAgICAgICAgeyAgICAgICAgICAgIAotICAgICAgICAgICAgICBwID0gdG9rZW5z
WzJdOwotICAgICAgICAgICAgICAvKiA8RElSPiBvciA8SlVOQ1RJT04+ICovCi0gICAgICAgICAg
ICAgIGlmICgqcCAhPSAnPCcgfHwgcFt0b2tsZW5bMl0tMV0gIT0gJz4nKQotICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZm9yIChwb3MgPSAxOyAobHN0eWxlICYmIHBvcyA8IHRva2xl
blsyXSk7IHBvcysrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmICgh
aXNBU0NJSURpZ2l0KCorK3ApKQotICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAg
ICAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUg
PT0gJ1cnKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqICIxMC0yMy0wMCAgMDE6
MjdQTSAgICAgICA8RElSPiAgICAgICAgICB2ZXJvbmlzdCIKKyAgICAgICAgICAgICAqICIwNi0x
NS0wMCAgMDc6MzdBTSAgICAgICA8RElSPiAgICAgICAgICB6b2UiCisgICAgICAgICAgICAgKiAi
MDctMTQtMDAgIDAxOjM1UE0gICAgICAgICAgICAgIDIwOTQ5MjYgY2FucHJhbmtkZXNrLnRpZiIK
KyAgICAgICAgICAgICAqICIwNy0yMS0wMCAgMDE6MTlQTSAgICAgICAgICAgICAgICA5NTA3NyBK
b24gS2F1ZmZtYW4gRW5qb3lzIHRoZSBHb29kIExpZmUuanBnIgorICAgICAgICAgICAgICogIjA3
LTIxLTAwICAwMToxOVBNICAgICAgICAgICAgICAgIDUyMjc1IE5hbWUgUGxhdGUuanBnIgorICAg
ICAgICAgICAgICogIjA3LTE0LTAwICAwMTozOFBNICAgICAgICAgICAgICAyMjUwNTQwIFZhbGVu
dGluZW9mZnByYW5rLUhpUmVzLmpwZyIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYg
KChudW10b2tzID49IDQpICYmIHRva2xlblswXSA9PSA4ICYmIHRva2xlblsxXSA9PSA3CisgICAg
ICAgICAgICAgICAgJiYgKCp0b2tlbnNbMl0gPT0gJzwnIHx8IGlzQVNDSUlEaWdpdCgqdG9rZW5z
WzJdKSkpIHsKKyAgICAgICAgICAgICAgICBwID0gdG9rZW5zWzBdOworICAgICAgICAgICAgICAg
IGlmICggaXNBU0NJSURpZ2l0KHBbMF0pICYmIGlzQVNDSUlEaWdpdChwWzFdKSAmJiBwWzJdID09
ICctJworICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQocFszXSkgJiYgaXNBU0NJ
SURpZ2l0KHBbNF0pICYmIHBbNV0gPT0gJy0nCisgICAgICAgICAgICAgICAgICAgICYmIGlzQVND
SUlEaWdpdChwWzZdKSAmJiBpc0FTQ0lJRGlnaXQocFs3XSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcCA9IHRva2Vuc1sxXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCBpc0FTQ0lJRGlnaXQo
cFswXSkgJiYgaXNBU0NJSURpZ2l0KHBbMV0pICYmIHBbMl0gPT0gJzonCisgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQocFszXSkgJiYgaXNBU0NJSURpZ2l0KHBbNF0pCisg
ICAgICAgICAgICAgICAgICAgICAgICAmJiAocFs1XSA9PSAnQScgfHwgcFs1XSA9PSAnUCcpICYm
IHBbNl0gPT0gJ00nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAnVyc7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmxpc3RTdHlsZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbMl07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogPERJUj4gb3IgPEpVTkNUSU9OPiAqLworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgqcCAhPSAnPCcgfHwgcFt0b2tsZW5bMl0tMV0gIT0gJz4nKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAocG9zID0gMTsgKGxzdHlsZSAmJiBwb3MgPCB0b2ts
ZW5bMl0pOyBwb3MrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJRGlnaXQoKisrcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBp
ZiAobHN0eWxlID09ICdXJykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1
ZTsKLSAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOwotCi0gICAgICAgIHAgPSAmKGxp
bmVbbGluZWxlbl0pOyAvKiBsaW5lIGVuZCAqLwotICAgICAgICByZXN1bHQuY2FzZVNlbnNpdGl2
ZSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdC5maWxlbmFtZSA9IHRva2Vuc1szXTsKLSAgICAgICAg
cmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcCAtIHRva2Vuc1szXTsKLSAgICAgICAgcmVzdWx0LnR5
cGUgPSBGVFBEaXJlY3RvcnlFbnRyeTsKLQotICAgICAgICBpZiAoKnRva2Vuc1syXSAhPSAnPCcp
IC8qIG5vdCA8RElSPiBvciA8SlVOQ1RJT04+ICovCi0gICAgICAgIHsKLSAgICAgICAgICAvLyB0
cnkgdG8gaGFuZGxlIGNvcnJlY3RseSBzcGFjZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmls
ZW5hbWUKLSAgICAgICAgICAvLyBmaWxlc2l6ZSAodG9rZW5bMl0pIG11c3QgZW5kIGF0IG9mZnNl
dCAzOAotICAgICAgICAgIGlmICh0b2tlbnNbMl0gKyB0b2tsZW5bMl0gLSBsaW5lID09IDM4KSB7
Ci0gICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSAmKGxpbmVbMzldKTsKLSAgICAgICAgICAg
IHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHAgLSByZXN1bHQuZmlsZW5hbWU7Ci0gICAgICAgICAg
fQotICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRmlsZUVudHJ5OwotICAgICAgICAgIHBvcyA9
IHRva2xlblsyXTsKLSAgICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJpbmcodG9rZW5zWzJd
LCBwb3MpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIC8vIHRyeSB0byBo
YW5kbGUgY29ycmVjdGx5IHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlbmFtZQot
ICAgICAgICAgIC8vIHRva2VuWzJdIG11c3QgYmVnaW4gYXQgb2Zmc2V0IDI0LCB0aGUgbGVuZ3Ro
IGlzIDUgb3IgMTAKLSAgICAgICAgICAvLyB0b2tlblszXSBtdXN0IGJlZ2luIGF0IG9mZnNldCAz
OSBvciBoaWdoZXIKLSAgICAgICAgICBpZiAodG9rZW5zWzJdIC0gbGluZSA9PSAyNCAmJiAodG9r
bGVuWzJdID09IDUgfHwgdG9rbGVuWzJdID09IDEwKSAmJgotICAgICAgICAgICAgICB0b2tlbnNb
M10gLSBsaW5lID49IDM5KSB7Ci0gICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSAmKGxpbmVb
MzldKTsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHAgLSByZXN1bHQuZmls
ZW5hbWU7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgaWYgKCh0b2tlbnNbMl1bMV0pICE9ICdE
JykgLyogbm90IDxESVI+ICovCi0gICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LnR5cGUg
PSBGVFBKdW5rRW50cnk7IC8qIHVua25vd24gdW50aWwganVuYyBmb3Igc3VyZSAqLwotICAgICAg
ICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IDQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIHAgPSByZXN1bHQuZmlsZW5hbWU7Ci0gICAgICAgICAgICAgIGZvciAocG9zID0g
cmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gNDsgcG9zID4gMDsgcG9zLS0pCi0gICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAocFswXSA9PSAnICcgJiYgcFszXSA9PSAnICcgJiYgcFsy
XSA9PSAnPicgJiYKLSAgICAgICAgICAgICAgICAgICAgKHBbMV0gPT0gJz0nIHx8IHBbMV0gPT0g
Jy0nKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9
IEZUUExpbmtFbnRyeTsKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9
IHAgLSByZXN1bHQuZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICByZXN1bHQubGlua25hbWUg
PSBwICsgNDsKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZUxlbmd0aCA9ICYobGlu
ZVtsaW5lbGVuXSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSByZXN1
bHQubGlua25hbWU7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgaWYg
KGxzdHlsZSA9PSAnVycpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVl
OworICAgICAgICAgICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKKworICAgICAgICAg
ICAgICAgIHAgPSAmKGxpbmVbbGluZWxlbl0pOyAvKiBsaW5lIGVuZCAqLworICAgICAgICAgICAg
ICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHQu
ZmlsZW5hbWUgPSB0b2tlbnNbM107CisgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVu
Z3RoID0gcCAtIHRva2Vuc1szXTsKKyAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUERp
cmVjdG9yeUVudHJ5OworCisgICAgICAgICAgICAgICAgaWYgKCp0b2tlbnNbMl0gIT0gJzwnKSB7
IC8qIG5vdCA8RElSPiBvciA8SlVOQ1RJT04+ICovCisgICAgICAgICAgICAgICAgICAgIC8vIHRy
eSB0byBoYW5kbGUgY29ycmVjdGx5IHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxl
bmFtZQorICAgICAgICAgICAgICAgICAgICAvLyBmaWxlc2l6ZSAodG9rZW5bMl0pIG11c3QgZW5k
IGF0IG9mZnNldCAzOAorICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5zWzJdICsgdG9rbGVu
WzJdIC0gbGluZSA9PSAzOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVu
YW1lID0gJihsaW5lWzM5XSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5h
bWVMZW5ndGggPSBwIC0gcmVzdWx0LmZpbGVuYW1lOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRmlsZUVudHJ5OworICAgICAgICAg
ICAgICAgICAgICBwb3MgPSB0b2tsZW5bMl07CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlU2l6ZSA9IFN0cmluZyh0b2tlbnNbMl0sIHBvcyk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IHRvIGhhbmRsZSBjb3JyZWN0bHkgc3BhY2Vz
IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVuYW1lCisgICAgICAgICAgICAgICAgICAgIC8v
IHRva2VuWzJdIG11c3QgYmVnaW4gYXQgb2Zmc2V0IDI0LCB0aGUgbGVuZ3RoIGlzIDUgb3IgMTAK
KyAgICAgICAgICAgICAgICAgICAgLy8gdG9rZW5bM10gbXVzdCBiZWdpbiBhdCBvZmZzZXQgMzkg
b3IgaGlnaGVyCisgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbnNbMl0gLSBsaW5lID09IDI0
ICYmICh0b2tsZW5bMl0gPT0gNSB8fCB0b2tsZW5bMl0gPT0gMTApCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiB0b2tlbnNbM10gLSBsaW5lID49IDM5KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuZmlsZW5hbWUgPSAmKGxpbmVbMzldKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHAgLSByZXN1bHQuZmlsZW5hbWU7CisgICAgICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoKHRva2Vuc1syXVsxXSkg
IT0gJ0QnKSB7IC8qIG5vdCA8RElSPiAqLworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LnR5cGUgPSBGVFBKdW5rRW50cnk7IC8qIHVua25vd24gdW50aWwganVuYyBmb3Igc3VyZSAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IDQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcmVzdWx0LmZpbGVuYW1lOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAocG9zID0gcmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0g
NDsgcG9zID4gMDsgcG9zLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHBbMF0gPT0gJyAnICYmIHBbM10gPT0gJyAnICYmIHBbMl0gPT0gJz4nCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiAocFsxXSA9PSAnPScgfHwgcFsxXSA9PSAnLScpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUExp
bmtFbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxl
bmFtZUxlbmd0aCA9IHAgLSByZXN1bHQuZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQubGlua25hbWUgPSBwICsgNDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZUxlbmd0aCA9ICYobGluZVtsaW5lbGVu
XSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSByZXN1bHQubGlu
a25hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSAgICAKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIAotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1l
LnRtX21vbiA9IGF0b2kodG9rZW5zWzBdKzApOwotICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVk
VGltZS50bV9tb24gIT0gMCkKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRp
bWUudG1fbW9uLS07Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRv
aSh0b2tlbnNbMF0rMyk7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyID0g
YXRvaSh0b2tlbnNbMF0rNik7Ci0gICAgICAgICAgLyogaWYgeWVhciBoYXMgb25seSB0d28gZGln
aXRzIHRoZW4gYXNzdW1lIHRoYXQKLSAgICAgICAgICAgICAgIDAwLTc5IGlzIDIwMDAtMjA3OQot
ICAgICAgICAgICAgICAgODAtOTkgaXMgMTk4MC0xOTk5ICovCi0gICAgICAgICAgaWYgKHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1feWVhciA8IDgwKQotICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVk
VGltZS50bV95ZWFyICs9IDIwMDA7Ci0gICAgICAgICAgZWxzZSBpZiAocmVzdWx0Lm1vZGlmaWVk
VGltZS50bV95ZWFyIDwgMTAwKQotICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95
ZWFyICs9IDE5MDA7Ci0gICAgICAgIH0KIAotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRt
X2hvdXIgPSBhdG9pKHRva2Vuc1sxXSswKTsKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50
bV9taW4gPSBhdG9pKHRva2Vuc1sxXSszKTsKLSAgICAgICAgaWYgKCh0b2tlbnNbMV1bNV0pID09
ICdQJyAmJiByZXN1bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIgPCAxMikKLSAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIgKz0gMTI7Ci0KLSAgICAgICAgLyogdGhlIGNhbGxlciBz
aG91bGQgZG8gdGhpcyAoaWYgZHJvcHBpbmcgIi4iIGFuZCAiLi4iIGlzIGRlc2lyZWQpCi0gICAg
ICAgIGlmIChyZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSAmJiByZXN1bHQuZmlsZW5h
bWVbMF0gPT0gJy4nICYmCi0gICAgICAgICAgICAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDEg
fHwgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAyICYmCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZVsxXSA9PSAnLicpKSkKLSAgICAgICAgICBy
ZXR1cm4gRlRQSnVua0VudHJ5OwotICAgICAgICAqLwotCi0gICAgICAgIHJldHVybiByZXN1bHQu
dHlwZTsgIAotICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdXJyAmJiAoIXN0YXRlLmxpc3RTdHls
ZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gbHN0eWxlKSkgKi8KLSAgICB9IC8qIGlmICghbHN0eWxl
ICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnVycpKSAqLworICAg
ICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0gYXRvaSh0b2tlbnNbMF0r
MCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uLS07CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSA9IGF0b2kodG9rZW5zWzBd
KzMpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBh
dG9pKHRva2Vuc1swXSs2KTsKKyAgICAgICAgICAgICAgICAgICAgLyogaWYgeWVhciBoYXMgb25s
eSB0d28gZGlnaXRzIHRoZW4gYXNzdW1lIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgMDAt
NzkgaXMgMjAwMC0yMDc5CisgICAgICAgICAgICAgICAgICAgICAgIDgwLTk5IGlzIDE5ODAtMTk5
OSAqLworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFy
IDwgODApCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3ll
YXIgKz0gMjAwMDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0Lm1vZGlmaWVk
VGltZS50bV95ZWFyIDwgMTAwKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlm
aWVkVGltZS50bV95ZWFyICs9IDE5MDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyID0gYXRvaSh0b2tlbnNbMV0rMCk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9taW4gPSBhdG9pKHRva2Vuc1sx
XSszKTsKKyAgICAgICAgICAgICAgICBpZiAoKHRva2Vuc1sxXVs1XSkgPT0gJ1AnICYmIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1faG91ciA8IDEyKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX2hvdXIgKz0gMTI7CisKKyAgICAgICAgICAgICAgICAvKiB0aGUgY2Fs
bGVyIHNob3VsZCBkbyB0aGlzIChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIgaXMgZGVzaXJlZCkK
KyAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkg
JiYgcmVzdWx0LmZpbGVuYW1lWzBdID09ICcuJyAmJgorICAgICAgICAgICAgICAgICAgIChyZXN1
bHQuZmlsZW5hbWVMZW5ndGggPT0gMSB8fCAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDIgJiYK
KyAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4nKSkpCisgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsKKyAgICAgICAgICAgICAgICAgICAqLwor
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOyAgCisgICAgICAgICAgICB9IC8q
IGlmIChsc3R5bGUgPT0gJ1cnICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHls
ZSA9PSBsc3R5bGUpKSAqLworICAgICAgICB9IC8qIGlmICghbHN0eWxlICYmICghc3RhdGUubGlz
dFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnVycpKSAqLwogI2VuZGlmCiAKLSAgICAvKiAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KyAqLworICAgICAgICAvKiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKyAqLwogCiAjaWYgZGVmaW5lZChTVVBQT1JUX09TMikKLSAgICBp
ZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ08n
KSkgLyogT1MvMiB0ZXN0ICovCi0gICAgewotICAgICAgLyogMjIwIHNlcnZlciBJQk0gVENQL0lQ
IGZvciBPUy8yIC0gRlRQIFNlcnZlciB2ZXIgMjM6MDQ6MzYgb24gSmFuIDE1IDE5OTcgcmVhZHku
Ci0gICAgICAqIGZpeGVkIHBvc2l0aW9uLCBzcGFjZSBwYWRkZWQgY29sdW1ucy4gSSBoYXZlIG9u
bHkgYSB2YWd1ZSBpZGVhIAotICAgICAgKiBvZiB3aGF0IHRoZSBjb250ZW50cyBiZXR3ZWVuIGNv
bCAxOCBhbmQgMzQgbWlnaHQgYmU6IEFsbCBJIGNhbiBpbmZlcgotICAgICAgKiBpcyB0aGF0IHRo
ZXJlIG1heSBiZSBhdHRyaWJ1dGUgZmxhZ3MgaW4gdGhlcmUgYW5kIHRoZXJlIG1heSBiZSAKLSAg
ICAgICogYSAiIERJUiIgaW4gdGhlcmUuCi0gICAgICAqCi0gICAgICAqICAgICAgICAgIDEgICAg
ICAgICAyICAgICAgICAgMyAgICAgICAgIDQgICAgICAgICA1ICAgICAgICAgNgotICAgICAgKjAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkKLSAgICAgICotLS0tLSBzaXplIC0tLS0tLS18Pz8/Pz8/Pz8/Pz8/Pz8/IE1N
LURELVlZfCAgSEg6TU18IG5ubm5ubm5ubi4uLi4KLSAgICAgICogICAgICAgICAgICAgICAgIDAg
IERJUiAgICAgICAgICAgIDA0LTExLTk1ICAgMTY6MjYgIC4KLSAgICAgICogICAgICAgICAgICAg
ICAgIDAgIERJUiAgICAgICAgICAgIDA0LTExLTk1ICAgMTY6MjYgIC4uCi0gICAgICAqICAgICAg
ICAgICAgICAgICAwICBESVIgICAgICAgICAgICAwNC0xMS05NSAgIDE2OjI2ICBBRERSRVNTCi0g
ICAgICAqICAgICAgICAgICAgICAgNjEyICBSSFNBICAgICAgICAgICAwNy0yOC05NSAgIDE2OjQ1
ICBhaXJfdHJhMS5iYWcKLSAgICAgICogICAgICAgICAgICAgICAxOTUgIEEgICAgICAgICAgICAg
IDA4LTA5LTk1ICAgMTA6MjMgIEFsZmExLmJhZwotICAgICAgKiAgICAgICAgICAgICAgICAgMCAg
UkhTICAgRElSICAgICAgMDQtMTEtOTUgICAxNjoyNiAgQVRUQUNICi0gICAgICAqICAgICAgICAg
ICAgICAgMzcyICBBICAgICAgICAgICAgICAwOC0wOS05NSAgIDEwOjI2ICBBdXNzaWVfMS5iYWcK
LSAgICAgICogICAgICAgICAgICAzMTA5OTIgICAgICAgICAgICAgICAgIDA2LTI4LTk0ICAgMDk6
NTYgIElOU1RBTEwuRVhFCi0gICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAg
ICAgICAyICAgICAgICAgMyAgICAgICAgIDQKLSAgICAgICogICAgICAgICAgICAgICAgICAwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQotICAgICAgKiBk
aXJsaXN0IGZyb20gdGhlIG1pcnJvci5wbCBwcm9qZWN0LCBjb2wgcG9zaXRpb25zIGZyb20gTW96
aWxsYS4KLSAgICAgICovCi0gICAgICBwID0gJihsaW5lW3Rva2xlblswXV0pOwotICAgICAgLyog
XHMoXGRcZC1cZFxkLVxkXGQpXHMrKFxkXGQ6XGRcZClccyAqLwotICAgICAgaWYgKG51bXRva3Mg
Pj0gNCAmJiB0b2tsZW5bMF0gPD0gMTggJiYgaXNBU0NJSURpZ2l0KCp0b2tlbnNbMF0pICYmCi0g
ICAgICAgICAobGluZWxlbiAtIHRva2xlblswXSkgPj0gKDUzLTE4KSAgICAgICAgICAgICAgICAg
ICAgICAgICYmCi0gICAgICAgICBwWzE4LTE4XSA9PSAnICcgJiYgcFszNC0xOF0gPT0gJyAnICAg
ICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICBwWzM3LTE4XSA9PSAnLScgJiYgcFs0MC0x
OF0gPT0gJy0nICYmIHBbNDMtMThdID09ICcgJyAgICYmCi0gICAgICAgICBwWzQ1LTE4XSA9PSAn
ICcgJiYgcFs0OC0xOF0gPT0gJzonICYmIHBbNTEtMThdID09ICcgJyAgICYmCi0gICAgICAgICBp
c0FTQ0lJRGlnaXQocFszNS0xOF0pICYmIGlzQVNDSUlEaWdpdChwWzM2LTE4XSkgICAgICAgICYm
Ci0gICAgICAgICBpc0FTQ0lJRGlnaXQocFszOC0xOF0pICYmIGlzQVNDSUlEaWdpdChwWzM5LTE4
XSkgICAgICAgICYmCi0gICAgICAgICBpc0FTQ0lJRGlnaXQocFs0MS0xOF0pICYmIGlzQVNDSUlE
aWdpdChwWzQyLTE4XSkgICAgICAgICYmCi0gICAgICAgICBpc0FTQ0lJRGlnaXQocFs0Ni0xOF0p
ICYmIGlzQVNDSUlEaWdpdChwWzQ3LTE4XSkgICAgICAgICYmCi0gICAgICAgICBpc0FTQ0lJRGln
aXQocFs0OS0xOF0pICYmIGlzQVNDSUlEaWdpdChwWzUwLTE4XSkKLSAgICAgICkKLSAgICAgIHsK
LSAgICAgICAgbHN0eWxlID0gJ08nOyAvKiBPUy8yICovCi0gICAgICAgIGlmICghc3RhdGUubGlz
dFN0eWxlKQotICAgICAgICB7ICAgICAgICAgICAgCi0gICAgICAgICAgZm9yIChwb3MgPSAxOyBs
c3R5bGUgJiYgcG9zIDwgdG9rbGVuWzBdOyBwb3MrKykKLSAgICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIWlzQVNDSUlEaWdpdCh0b2tlbnNbMF1bcG9zXSkpCi0gICAgICAgICAgICAgIGxzdHls
ZSA9IDA7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChsc3R5
bGUgPT0gJ08nKQotICAgICAgewotICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOwotICAg
ICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7Ci0KLSAgICAgICAgcCA9ICYobGluZVt0b2ts
ZW5bMF1dKTsKLQotICAgICAgICByZXN1bHQuY2FzZVNlbnNpdGl2ZSA9IHRydWU7Ci0gICAgICAg
IHJlc3VsdC5maWxlbmFtZSA9ICZwWzUzLTE4XTsKLSAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVu
Z3RoID0gKCYobGluZVtsaW5lbGVuX3NhbnNfd3NwXSkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAtIChyZXN1bHQuZmlsZW5hbWUpOwotICAgICAgICByZXN1bHQudHlwZSA9IEZUUEZpbGVF
bnRyeTsKLQotICAgICAgICAvKiBJIGRvbid0IGhhdmUgYSByZWFsIGxpc3RpbmcgdG8gZGV0ZXJt
aW5lIGV4YWN0IHBvcywgc28gc2Nhbi4gKi8KLSAgICAgICAgZm9yIChwb3MgPSAoMTgtMTgpOyBw
b3MgPCAoKDM1LTE4KS00KTsgcG9zKyspCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAocFtwb3Mr
MF0gPT0gJyAnICYmIHBbcG9zKzFdID09ICdEJyAmJiAKLSAgICAgICAgICAgICAgcFtwb3MrMl0g
PT0gJ0knICYmIHBbcG9zKzNdID09ICdSJykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1
bHQudHlwZSA9IEZUUERpcmVjdG9yeUVudHJ5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGlmIChyZXN1bHQudHlwZSAhPSBGVFBEaXJl
Y3RvcnlFbnRyeSkKLSAgICAgICAgewotICAgICAgICAgIHBvcyA9IHRva2xlblswXTsKLSAgICAg
ICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJpbmcodG9rZW5zWzBdLCBwb3MpOwotICAgICAgICB9
ICAKLSAgICAKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBhdG9pKCZwWzM1
LTE4XSkgLSAxOwotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBhdG9pKCZw
WzM4LTE4XSk7Ci0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IGF0b2koJnBb
NDEtMThdKTsKLSAgICAgICAgaWYgKHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA8IDgwKQot
ICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciArPSAxMDA7Ci0gICAgICAgIHJl
c3VsdC5tb2RpZmllZFRpbWUudG1faG91ciA9IGF0b2koJnBbNDYtMThdKTsKLSAgICAgICAgcmVz
dWx0Lm1vZGlmaWVkVGltZS50bV9taW4gPSBhdG9pKCZwWzQ5LTE4XSk7Ci0gICAKLSAgICAgICAg
LyogdGhlIGNhbGxlciBzaG91bGQgZG8gdGhpcyAoaWYgZHJvcHBpbmcgIi4iIGFuZCAiLi4iIGlz
IGRlc2lyZWQpCi0gICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSAm
JiByZXN1bHQuZmlsZW5hbWVbMF0gPT0gJy4nICYmCi0gICAgICAgICAgICAocmVzdWx0LmZpbGVu
YW1lTGVuZ3RoID09IDEgfHwgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAyICYmCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZVsxXSA9PSAnLicp
KSkKLSAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OwotICAgICAgICAqLwotCi0gICAgICAg
IHJldHVybiByZXN1bHQudHlwZTsKLSAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnTycpICovCi0K
LSAgICB9IC8qIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RT
dHlsZSA9PSAnTycpKSAqLworICAgICAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHls
ZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ08nKSkgeyAvKiBPUy8yIHRlc3QgKi8KKyAgICAgICAg
ICAgIC8qIDIyMCBzZXJ2ZXIgSUJNIFRDUC9JUCBmb3IgT1MvMiAtIEZUUCBTZXJ2ZXIgdmVyIDIz
OjA0OjM2IG9uIEphbiAxNSAxOTk3IHJlYWR5LgorICAgICAgICAgICAgICogZml4ZWQgcG9zaXRp
b24sIHNwYWNlIHBhZGRlZCBjb2x1bW5zLiBJIGhhdmUgb25seSBhIHZhZ3VlIGlkZWEgCisgICAg
ICAgICAgICAgKiBvZiB3aGF0IHRoZSBjb250ZW50cyBiZXR3ZWVuIGNvbCAxOCBhbmQgMzQgbWln
aHQgYmU6IEFsbCBJIGNhbiBpbmZlcgorICAgICAgICAgICAgICogaXMgdGhhdCB0aGVyZSBtYXkg
YmUgYXR0cmlidXRlIGZsYWdzIGluIHRoZXJlIGFuZCB0aGVyZSBtYXkgYmUgCisgICAgICAgICAg
ICAgKiBhICIgRElSIiBpbiB0aGVyZS4KKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiAg
ICAgICAgICAxICAgICAgICAgMiAgICAgICAgIDMgICAgICAgICA0ICAgICAgICAgNSAgICAgICAg
IDYKKyAgICAgICAgICAgICAqMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQorICAgICAgICAgICAgICotLS0tLSBzaXpl
IC0tLS0tLS18Pz8/Pz8/Pz8/Pz8/Pz8/IE1NLURELVlZfCAgSEg6TU18IG5ubm5ubm5ubi4uLi4K
KyAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAwICBESVIgICAgICAgICAgICAwNC0xMS05
NSAgIDE2OjI2ICAuCisgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgMCAgRElSICAgICAg
ICAgICAgMDQtMTEtOTUgICAxNjoyNiAgLi4KKyAgICAgICAgICAgICAqICAgICAgICAgICAgICAg
ICAwICBESVIgICAgICAgICAgICAwNC0xMS05NSAgIDE2OjI2ICBBRERSRVNTCisgICAgICAgICAg
ICAgKiAgICAgICAgICAgICAgIDYxMiAgUkhTQSAgICAgICAgICAgMDctMjgtOTUgICAxNjo0NSAg
YWlyX3RyYTEuYmFnCisgICAgICAgICAgICAgKiAgICAgICAgICAgICAgIDE5NSAgQSAgICAgICAg
ICAgICAgMDgtMDktOTUgICAxMDoyMyAgQWxmYTEuYmFnCisgICAgICAgICAgICAgKiAgICAgICAg
ICAgICAgICAgMCAgUkhTICAgRElSICAgICAgMDQtMTEtOTUgICAxNjoyNiAgQVRUQUNICisgICAg
ICAgICAgICAgKiAgICAgICAgICAgICAgIDM3MiAgQSAgICAgICAgICAgICAgMDgtMDktOTUgICAx
MDoyNiAgQXVzc2llXzEuYmFnCisgICAgICAgICAgICAgKiAgICAgICAgICAgIDMxMDk5MiAgICAg
ICAgICAgICAgICAgMDYtMjgtOTQgICAwOTo1NiAgSU5TVEFMTC5FWEUKKyAgICAgICAgICAgICAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAyICAgICAgICAgMyAgICAgICAg
IDQKKyAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKKyAgICAgICAgICAgICAqIGRpcmxpc3QgZnJv
bSB0aGUgbWlycm9yLnBsIHByb2plY3QsIGNvbCBwb3NpdGlvbnMgZnJvbSBNb3ppbGxhLgorICAg
ICAgICAgICAgICovCisgICAgICAgICAgICBwID0gJihsaW5lW3Rva2xlblswXV0pOworICAgICAg
ICAgICAgLyogXHMoXGRcZC1cZFxkLVxkXGQpXHMrKFxkXGQ6XGRcZClccyAqLworICAgICAgICAg
ICAgaWYgKG51bXRva3MgPj0gNCAmJiB0b2tsZW5bMF0gPD0gMTggJiYgaXNBU0NJSURpZ2l0KCp0
b2tlbnNbMF0pCisgICAgICAgICAgICAgICAgJiYgKGxpbmVsZW4gLSB0b2tsZW5bMF0pID49ICg1
My0xOCkKKyAgICAgICAgICAgICAgICAmJiBwWzE4LTE4XSA9PSAnICcgJiYgcFszNC0xOF0gPT0g
JyAnCisgICAgICAgICAgICAgICAgJiYgcFszNy0xOF0gPT0gJy0nICYmIHBbNDAtMThdID09ICct
JyAmJiBwWzQzLTE4XSA9PSAnICcKKyAgICAgICAgICAgICAgICAmJiBwWzQ1LTE4XSA9PSAnICcg
JiYgcFs0OC0xOF0gPT0gJzonICYmIHBbNTEtMThdID09ICcgJworICAgICAgICAgICAgICAgICYm
IGlzQVNDSUlEaWdpdChwWzM1LTE4XSkgJiYgaXNBU0NJSURpZ2l0KHBbMzYtMThdKQorICAgICAg
ICAgICAgICAgICYmIGlzQVNDSUlEaWdpdChwWzM4LTE4XSkgJiYgaXNBU0NJSURpZ2l0KHBbMzkt
MThdKQorICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdChwWzQxLTE4XSkgJiYgaXNBU0NJ
SURpZ2l0KHBbNDItMThdKQorICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdChwWzQ2LTE4
XSkgJiYgaXNBU0NJSURpZ2l0KHBbNDctMThdKQorICAgICAgICAgICAgICAgICYmIGlzQVNDSUlE
aWdpdChwWzQ5LTE4XSkgJiYgaXNBU0NJSURpZ2l0KHBbNTAtMThdKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBsc3R5bGUgPSAnTyc7IC8qIE9TLzIgKi8KKyAgICAgICAgICAgICAg
ICBpZiAoIXN0YXRlLmxpc3RTdHlsZSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHBvcyA9
IDE7IGxzdHlsZSAmJiBwb3MgPCB0b2tsZW5bMF07IHBvcysrKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCh0b2tlbnNbMF1bcG9zXSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxzdHlsZSA9PSAn
TycpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKKworICAgICAgICAgICAgICAgIHAgPSAm
KGxpbmVbdG9rbGVuWzBdXSk7CisKKyAgICAgICAgICAgICAgICByZXN1bHQuY2FzZVNlbnNpdGl2
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gJnBbNTMtMThdOwor
ICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9ICgmKGxpbmVbc3RyaXBwZWRM
aW5lTGVuZ3RoXSkpCisgICAgICAgICAgICAgICAgICAgIC0gKHJlc3VsdC5maWxlbmFtZSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7CisKKyAgICAgICAgICAg
ICAgICAvKiBJIGRvbid0IGhhdmUgYSByZWFsIGxpc3RpbmcgdG8gZGV0ZXJtaW5lIGV4YWN0IHBv
cywgc28gc2Nhbi4gKi8KKyAgICAgICAgICAgICAgICBmb3IgKHBvcyA9ICgxOC0xOCk7IHBvcyA8
ICgoMzUtMTgpLTQpOyBwb3MrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAocFtwb3MrMF0g
PT0gJyAnICYmIHBbcG9zKzFdID09ICdEJworICAgICAgICAgICAgICAgICAgICAgICAgJiYgcFtw
b3MrMl0gPT0gJ0knICYmIHBbcG9zKzNdID09ICdSJykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBGVFBEaXJlY3RvcnlFbnRyeTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9IEZUUERpcmVjdG9yeUVudHJ5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHBvcyA9IHRva2xlblswXTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmZpbGVTaXplID0gU3RyaW5nKHRva2Vuc1swXSwgcG9zKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA9IGF0b2ko
JnBbMzUtMThdKSAtIDE7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9t
ZGF5ID0gYXRvaSgmcFszOC0xOF0pOworICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRp
bWUudG1feWVhciA9IGF0b2koJnBbNDEtMThdKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0
Lm1vZGlmaWVkVGltZS50bV95ZWFyIDwgODApCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5t
b2RpZmllZFRpbWUudG1feWVhciArPSAxMDA7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlm
aWVkVGltZS50bV9ob3VyID0gYXRvaSgmcFs0Ni0xOF0pOworICAgICAgICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1fbWluID0gYXRvaSgmcFs0OS0xOF0pOworCisgICAgICAgICAgICAg
ICAgLyogdGhlIGNhbGxlciBzaG91bGQgZG8gdGhpcyAoaWYgZHJvcHBpbmcgIi4iIGFuZCAiLi4i
IGlzIGRlc2lyZWQpCisgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IEZUUERp
cmVjdG9yeUVudHJ5ICYmIHJlc3VsdC5maWxlbmFtZVswXSA9PSAnLicgJiYKKyAgICAgICAgICAg
ICAgICAgICAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDEgfHwgKHJlc3VsdC5maWxlbmFtZUxl
bmd0aCA9PSAyICYmCisgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcu
JykpKQorICAgICAgICAgICAgICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7CisgICAgICAgICAg
ICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudHlwZTsKKyAgICAg
ICAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnTycpICovCisKKyAgICAgICAgfSAvKiBpZiAoIWxz
dHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ08nKSkgKi8K
ICNlbmRpZgogCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysgKi8KLSAgICAKKyAgICAgICAgLyogKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KKwogI2lmIGRl
ZmluZWQoU1VQUE9SVF9MU0wpCi0gICAgaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUg
fHwgc3RhdGUubGlzdFN0eWxlID09ICdVJykpIC8qIC9iaW4vbHMgJiBjby4gKi8KLSAgICB7Ci0g
ICAgICAvKiBVTklYLXN0eWxlIGxpc3RpbmcsIHdpdGhvdXQgaW51bSBhbmQgd2l0aG91dCBibG9j
a3MKLSAgICAgICAqICItcnctci0tci0tICAgMSByb290ICAgICBvdGhlciAgICAgICAgNTMxIEph
biAyOSAwMzoyNiBSRUFETUUiCi0gICAgICAgKiAiZHIteHIteHIteCAgIDIgcm9vdCAgICAgb3Ro
ZXIgICAgICAgIDUxMiBBcHIgIDggIDE5OTQgZXRjIgotICAgICAgICogImRyLXhyLXhyLXggICAy
IHJvb3QgICAgIDUxMiBBcHIgIDggIDE5OTQgZXRjIgotICAgICAgICogImxyd3hyd3hyd3ggICAx
IHJvb3QgICAgIG90aGVyICAgICAgICAgIDcgSmFuIDI1IDAwOjE3IGJpbiAtPiB1c3IvYmluIgot
ICAgICAgICogQWxzbyBwcm9kdWNlZCBieSBNaWNyb3NvZnQncyBGVFAgc2VydmVycyBmb3IgV2lu
ZG93czoKLSAgICAgICAqICItLS0tLS0tLS0tICAgMSBvd25lciAgICBncm91cCAgICAgICAgIDE4
MDMxMjggSnVsIDEwIDEwOjE4IGxzLWxSLloiCi0gICAgICAgKiAiZC0tLS0tLS0tLSAgIDEgb3du
ZXIgICAgZ3JvdXAgICAgICAgICAgICAgICAwIE1heSAgOSAxOTo0NSBTb2Z0bGliIgotICAgICAg
ICogQWxzbyBXRlRQRCBmb3IgTVNET1M6Ci0gICAgICAgKiAiLXJ3eHJ3eHJ3eCAgIDEgbm9vbmUg
ICAgbm9ncm91cCAgICAgIDMyMiBBdWcgMTkgIDE5OTYgbWVzc2FnZS5mdHAiCi0gICAgICAgKiBI
ZWxsc29mdCBmb3IgTmV0V2FyZToKLSAgICAgICAqICJkW1JXQ0VNRkFdIHN1cGVydmlzb3IgICAg
ICAgICAgICA1MTIgICAgICAgSmFuIDE2IDE4OjUzICAgIGxvZ2luIgotICAgICAgICogIi1bUldD
RU1GQV0gcmhlc3VzICAgICAgICAgICAgIDIxNDA1OSAgICAgICBPY3QgMjAgMTU6MjcgICAgY3gu
ZXhlIgotICAgICAgICogTmV3ZXIgSGVsbHNvZnQgZm9yIE5ldFdhcmU6IChuZXRsYWIyLnVzdS5l
ZHUpCi0gICAgICAgKiAtIFtSV0NFQUZNU10gTkZBVVVzZXIgICAgICAgICAgICAgICAxOTIgQXBy
IDI3IDE1OjIxIEhFQURFUi5odG1sCi0gICAgICAgKiBkIFtSV0NFQUZNU10ganJkICAgICAgICAg
ICAgICAgICAgICA1MTIgSnVsIDExIDAzOjAxIGFsbHVwZGF0ZXMKLSAgICAgICAqIEFsc28gTmV0
UHJlc2VueiBmb3IgdGhlIE1hYzoKLSAgICAgICAqICItLS0tLS0tci0tICAgICAgICAgMzI2ICAx
MzkxOTcyICAxMzkyMjk4IE5vdiAyMiAgMTk5NSBNZWdhUGhvbmUuc2l0IgotICAgICAgICogImRy
d3hyd3hyLXggICAgICAgICAgICAgICBmb2xkZXIgICAgICAgIDIgTWF5IDEwICAxOTk2IG5ldHdv
cmsiCi0gICAgICAgKiBQcm90ZWN0ZWQgZGlyZWN0b3J5OgotICAgICAgICogImRyd3gtd3gtd3Qg
IDIgcm9vdCAgd2hlZWwgIDUxMiBKdWwgIDEgMDI6MTUgaW5jb21pbmciCi0gICAgICAgKiB1aWQv
Z2lkIGluc3RlYWQgb2YgdXNlcm5hbWUvZ3JvdXBuYW1lOgotICAgICAgICogImRyd3hyLXhyLXgg
IDIgMCAgMCAgNTEyIE1heSAyOCAyMjoxNyBldGMiCi0gICAgICAqLwotICAgIAotICAgICAgYm9v
bCBpc09sZEhlbGxzb2Z0ID0gZmFsc2U7Ci0gICAgCi0gICAgICBpZiAobnVtdG9rcyA+PSA2KQot
ICAgICAgewotICAgICAgICAvKiB0aGVyZSBhcmUgdHdvIHBlcm0gZm9ybWF0cyAoSGVsbHNvZnQv
TmV0V2FyZSBhbmQgKklYIHN0cm1vZGUoMykpLgotICAgICAgICAgKiBTY2FuIGZvciBzaXplIGNv
bHVtbiBvbmx5IGlmIHRoZSBwZXJtIGZvcm1hdCBpcyBvbmUgb3IgdGhlIG90aGVyLgotICAgICAg
ICAgKi8KLSAgICAgICAgaWYgKHRva2xlblswXSA9PSAxIHx8ICh0b2tlbnNbMF1bMV0pID09ICdb
JykKLSAgICAgICAgewotICAgICAgICAgIGlmICgqdG9rZW5zWzBdID09ICdkJyB8fCAqdG9rZW5z
WzBdID09ICctJykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwb3MgPSB0b2tsZW5bMF0tMTsK
LSAgICAgICAgICAgIHAgPSB0b2tlbnNbMF0gKyAxOwotICAgICAgICAgICAgaWYgKHBvcyA9PSAw
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBwID0gdG9rZW5zWzFdOwotICAgICAgICAg
ICAgICBwb3MgPSB0b2tsZW5bMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKHBv
cyA9PSA5IHx8IHBvcyA9PSAxMCkgICAgICAgICYmIAotICAgICAgICAgICAgICAgICgqcCA9PSAn
WycgJiYgcFtwb3MtMV0gPT0gJ10nKSAmJgotICAgICAgICAgICAgICAgIChwWzFdID09ICdSJyB8
fCBwWzFdID09ICctJykgICAmJgotICAgICAgICAgICAgICAgIChwWzJdID09ICdXJyB8fCBwWzJd
ID09ICctJykgICAmJgotICAgICAgICAgICAgICAgIChwWzNdID09ICdDJyB8fCBwWzNdID09ICct
JykgICAmJgotICAgICAgICAgICAgICAgIChwWzRdID09ICdFJyB8fCBwWzRdID09ICctJykpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8qIHJlc3QgaXMgRk1BW1NdIG9yIEFGTVtTXSAq
LwotICAgICAgICAgICAgICBsc3R5bGUgPSAnVSc7IC8qIHZlcnkgbGlrZWx5IG9uZSBvZiB0aGUg
TmV0V2FyZSBzZXJ2ZXJzICovCi0gICAgICAgICAgICAgIGlmICh0b2tsZW5bMF0gPT0gMTApCi0g
ICAgICAgICAgICAgICAgaXNPbGRIZWxsc29mdCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCh0b2tsZW5bMF0gPT0gMTAgfHwg
dG9rbGVuWzBdID09IDExKSAKLSAgICAgICAgICAgICAgICAgICAmJiBzdHJjaHIoIi1iY2RscHN3
P0RGYW0iLCAqdG9rZW5zWzBdKSkKLSAgICAgICAgewotICAgICAgICAgIHAgPSAmKHRva2Vuc1sw
XVsxXSk7Ci0gICAgICAgICAgaWYgKChwWzBdID09ICdyJyB8fCBwWzBdID09ICctJykgJiYKLSAg
ICAgICAgICAgICAgKHBbMV0gPT0gJ3cnIHx8IHBbMV0gPT0gJy0nKSAmJgotICAgICAgICAgICAg
ICAocFszXSA9PSAncicgfHwgcFszXSA9PSAnLScpICYmCi0gICAgICAgICAgICAgIChwWzRdID09
ICd3JyB8fCBwWzRdID09ICctJykgJiYKLSAgICAgICAgICAgICAgKHBbNl0gPT0gJ3InIHx8IHBb
Nl0gPT0gJy0nKSAmJgotICAgICAgICAgICAgICAocFs3XSA9PSAndycgfHwgcFs3XSA9PSAnLScp
KQotICAgICAgICAgICAgLyogJ3gnL3BbOV0gY2FuIGJlIFN8c3x4fC18VHx0IG9yIGltcGxlbWVu
dGF0aW9uIHNwZWNpZmljICovCi0gICAgICAgICAgewotICAgICAgICAgICAgbHN0eWxlID0gJ1Un
OyAvKiB2ZXJ5IGxpa2VseSAvYmluL2xzICovCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICB9Ci0gICAgICBpZiAobHN0eWxlID09ICdVJykgLyogZmlyc3QgdG9rZW4gY2hlY2tzIG91dCAq
LwotICAgICAgewotICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICBmb3IgKHBvcyA9IChudW10
b2tzLTUpOyAhbHN0eWxlICYmIHBvcyA+IDE7IHBvcy0tKQotICAgICAgICB7Ci0gICAgICAgICAg
Lyogc2NhbiBmb3I6IChcZCspXHMrKFtBLVpdW2Etel1bYS16XSlccysKLSAgICAgICAgICAgKiAg
KFxkXGRcZFxkfFxkXDpcZFxkfFxkXGRcOlxkXGR8XGRcOlxkXGRcOlxkXGR8XGRcZFw6XGRcZFw6
XGRcZCkKLSAgICAgICAgICAgKiAgXHMrKC4rKSQKLSAgICAgICAgICAqLwotICAgICAgICAgIGlm
IChpc0FTQ0lJRGlnaXQoKnRva2Vuc1twb3NdKSAvKiBzaXplICovCi0gICAgICAgICAgICAgIC8q
IChcd1x3XHcpICovCi0gICAgICAgICAgICYmIHRva2xlbltwb3MrMV0gPT0gMyAmJiBpc0FTQ0lJ
QWxwaGEoKnRva2Vuc1twb3MrMV0pICYmCi0gICAgICAgICAgICAgIGlzQVNDSUlBbHBoYSh0b2tl
bnNbcG9zKzFdWzFdKSAmJiBpc0FTQ0lJQWxwaGEodG9rZW5zW3BvcysxXVsyXSkKLSAgICAgICAg
ICAgICAgLyogKFxkfFxkXGQpICovCi0gICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCgqdG9rZW5z
W3BvcysyXSkgJiYKLSAgICAgICAgICAgICAgICAodG9rbGVuW3BvcysyXSA9PSAxIHx8IAotICAg
ICAgICAgICAgICAgICAgKHRva2xlbltwb3MrMl0gPT0gMiAmJiBpc0FTQ0lJRGlnaXQodG9rZW5z
W3BvcysyXVsxXSkpKQotICAgICAgICAgICAmJiB0b2tsZW5bcG9zKzNdID49IDQgJiYgaXNBU0NJ
SURpZ2l0KCp0b2tlbnNbcG9zKzNdKSAKLSAgICAgICAgICAgICAgLyogKFxkXDpcZFxkXDpcZFxk
fFxkXGRcOlxkXGRcOlxkXGQpICovCi0gICAgICAgICAgICYmICh0b2tsZW5bcG9zKzNdIDw9IDUg
fHwgKAotICAgICAgICAgICAgICAgKHRva2xlbltwb3MrM10gPT0gNyB8fCB0b2tsZW5bcG9zKzNd
ID09IDgpICYmCi0gICAgICAgICAgICAgICAodG9rZW5zW3BvcyszXVt0b2tsZW5bcG9zKzNdLTNd
KSA9PSAnOicpKQotICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVt0b2ts
ZW5bcG9zKzNdLTJdKQotICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVt0
b2tsZW5bcG9zKzNdLTFdKQotICAgICAgICAgICAmJiAoCi0gICAgICAgICAgICAgIC8qIChcZFxk
XGRcZCkgKi8KLSAgICAgICAgICAgICAgICAgKCh0b2tsZW5bcG9zKzNdID09IDQgfHwgdG9rbGVu
W3BvcyszXSA9PSA1KSAmJgotICAgICAgICAgICAgICAgICAgaXNBU0NJSURpZ2l0KHRva2Vuc1tw
b3MrM11bMV0pICYmCi0gICAgICAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQodG9rZW5zW3Bvcysz
XVsyXSkgICkKLSAgICAgICAgICAgICAgLyogKFxkXDpcZFxkfFxkXDpcZFxkXDpcZFxkKSAqLwot
ICAgICAgICAgICAgICB8fCAoKHRva2xlbltwb3MrM10gPT0gNCB8fCB0b2tsZW5bcG9zKzNdID09
IDcpICYmIAotICAgICAgICAgICAgICAgICAgKHRva2Vuc1twb3MrM11bMV0pID09ICc6JyAmJgot
ICAgICAgICAgICAgICAgICAgaXNBU0NJSURpZ2l0KHRva2Vuc1twb3MrM11bMl0pICYmIGlzQVND
SUlEaWdpdCh0b2tlbnNbcG9zKzNdWzNdKSkKLSAgICAgICAgICAgICAgLyogKFxkXGRcOlxkXGR8
XGRcZFw6XGRcZFw6XGRcZCkgKi8KLSAgICAgICAgICAgICAgfHwgKCh0b2tsZW5bcG9zKzNdID09
IDUgfHwgdG9rbGVuW3BvcyszXSA9PSA4KSAmJiAKLSAgICAgICAgICAgICAgICAgIGlzQVNDSUlE
aWdpdCh0b2tlbnNbcG9zKzNdWzFdKSAmJiAodG9rZW5zW3BvcyszXVsyXSkgPT0gJzonICYmCi0g
ICAgICAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVszXSkgJiYgaXNBU0NJ
SURpZ2l0KHRva2Vuc1twb3MrM11bNF0pKSAKLSAgICAgICAgICAgICAgKQotICAgICAgICAgICAp
Ci0gICAgICAgICAgewotICAgICAgICAgICAgbHN0eWxlID0gJ1UnOyAvKiBhc3N1bWUgL2Jpbi9s
cyBvciB2YXJpYW50IGZvcm1hdCAqLwotICAgICAgICAgICAgdG9rbWFya2VyID0gcG9zOwotCi0g
ICAgICAgICAgICAvKiBjaGVjayB0aGF0IHNpemUgaXMgbnVtZXJpYyAqLwotICAgICAgICAgICAg
cCA9IHRva2Vuc1t0b2ttYXJrZXJdOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGxzdHlsZSAmJiBpIDwgdG9rbGVuW3Rva21hcmtlcl07ICsraSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKnArKykpCi0gICAgICAgICAgICAgICAg
bHN0eWxlID0gMDsKKyAgICAgICAgaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwg
c3RhdGUubGlzdFN0eWxlID09ICdVJykpIHsgLyogL2Jpbi9scyAmIGNvLiAqLworICAgICAgICAg
ICAgLyogVU5JWC1zdHlsZSBsaXN0aW5nLCB3aXRob3V0IGludW0gYW5kIHdpdGhvdXQgYmxvY2tz
CisgICAgICAgICAgICAgKiAiLXJ3LXItLXItLSAgIDEgcm9vdCAgICAgb3RoZXIgICAgICAgIDUz
MSBKYW4gMjkgMDM6MjYgUkVBRE1FIgorICAgICAgICAgICAgICogImRyLXhyLXhyLXggICAyIHJv
b3QgICAgIG90aGVyICAgICAgICA1MTIgQXByICA4ICAxOTk0IGV0YyIKKyAgICAgICAgICAgICAq
ICJkci14ci14ci14ICAgMiByb290ICAgICA1MTIgQXByICA4ICAxOTk0IGV0YyIKKyAgICAgICAg
ICAgICAqICJscnd4cnd4cnd4ICAgMSByb290ICAgICBvdGhlciAgICAgICAgICA3IEphbiAyNSAw
MDoxNyBiaW4gLT4gdXNyL2JpbiIKKyAgICAgICAgICAgICAqIEFsc28gcHJvZHVjZWQgYnkgTWlj
cm9zb2Z0J3MgRlRQIHNlcnZlcnMgZm9yIFdpbmRvd3M6CisgICAgICAgICAgICAgKiAiLS0tLS0t
LS0tLSAgIDEgb3duZXIgICAgZ3JvdXAgICAgICAgICAxODAzMTI4IEp1bCAxMCAxMDoxOCBscy1s
Ui5aIgorICAgICAgICAgICAgICogImQtLS0tLS0tLS0gICAxIG93bmVyICAgIGdyb3VwICAgICAg
ICAgICAgICAgMCBNYXkgIDkgMTk6NDUgU29mdGxpYiIKKyAgICAgICAgICAgICAqIEFsc28gV0ZU
UEQgZm9yIE1TRE9TOgorICAgICAgICAgICAgICogIi1yd3hyd3hyd3ggICAxIG5vb25lICAgIG5v
Z3JvdXAgICAgICAzMjIgQXVnIDE5ICAxOTk2IG1lc3NhZ2UuZnRwIgorICAgICAgICAgICAgICog
SGVsbHNvZnQgZm9yIE5ldFdhcmU6CisgICAgICAgICAgICAgKiAiZFtSV0NFTUZBXSBzdXBlcnZp
c29yICAgICAgICAgICAgNTEyICAgICAgIEphbiAxNiAxODo1MyAgICBsb2dpbiIKKyAgICAgICAg
ICAgICAqICItW1JXQ0VNRkFdIHJoZXN1cyAgICAgICAgICAgICAyMTQwNTkgICAgICAgT2N0IDIw
IDE1OjI3ICAgIGN4LmV4ZSIKKyAgICAgICAgICAgICAqIE5ld2VyIEhlbGxzb2Z0IGZvciBOZXRX
YXJlOiAobmV0bGFiMi51c3UuZWR1KQorICAgICAgICAgICAgICogLSBbUldDRUFGTVNdIE5GQVVV
c2VyICAgICAgICAgICAgICAgMTkyIEFwciAyNyAxNToyMSBIRUFERVIuaHRtbAorICAgICAgICAg
ICAgICogZCBbUldDRUFGTVNdIGpyZCAgICAgICAgICAgICAgICAgICAgNTEyIEp1bCAxMSAwMzow
MSBhbGx1cGRhdGVzCisgICAgICAgICAgICAgKiBBbHNvIE5ldFByZXNlbnogZm9yIHRoZSBNYWM6
CisgICAgICAgICAgICAgKiAiLS0tLS0tLXItLSAgICAgICAgIDMyNiAgMTM5MTk3MiAgMTM5MjI5
OCBOb3YgMjIgIDE5OTUgTWVnYVBob25lLnNpdCIKKyAgICAgICAgICAgICAqICJkcnd4cnd4ci14
ICAgICAgICAgICAgICAgZm9sZGVyICAgICAgICAyIE1heSAxMCAgMTk5NiBuZXR3b3JrIgorICAg
ICAgICAgICAgICogUHJvdGVjdGVkIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAqICJkcnd4LXd4
LXd0ICAyIHJvb3QgIHdoZWVsICA1MTIgSnVsICAxIDAyOjE1IGluY29taW5nIgorICAgICAgICAg
ICAgICogdWlkL2dpZCBpbnN0ZWFkIG9mIHVzZXJuYW1lL2dyb3VwbmFtZToKKyAgICAgICAgICAg
ICAqICJkcnd4ci14ci14ICAyIDAgIDAgIDUxMiBNYXkgMjggMjI6MTcgZXRjIgorICAgICAgICAg
ICAgICovCisKKyAgICAgICAgICAgIGJvb2wgaXNPbGRIZWxsc29mdCA9IGZhbHNlOworCisgICAg
ICAgICAgICBpZiAobnVtdG9rcyA+PSA2KSB7CisgICAgICAgICAgICAgICAgLyogdGhlcmUgYXJl
IHR3byBwZXJtIGZvcm1hdHMgKEhlbGxzb2Z0L05ldFdhcmUgYW5kICpJWCBzdHJtb2RlKDMpKS4K
KyAgICAgICAgICAgICAgICAgKiBTY2FuIGZvciBzaXplIGNvbHVtbiBvbmx5IGlmIHRoZSBwZXJt
IGZvcm1hdCBpcyBvbmUgb3IgdGhlIG90aGVyLgorICAgICAgICAgICAgICAgICAqLworICAgICAg
ICAgICAgICAgIGlmICh0b2tsZW5bMF0gPT0gMSB8fCAodG9rZW5zWzBdWzFdKSA9PSAnWycpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCp0b2tlbnNbMF0gPT0gJ2QnIHx8ICp0b2tlbnNbMF0g
PT0gJy0nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSB0b2tsZW5bMF0tMTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbMF0gKyAxOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdG9r
ZW5zWzFdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IHRva2xlblsxXTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocG9z
ID09IDkgfHwgcG9zID09IDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgqcCA9
PSAnWycgJiYgcFtwb3MtMV0gPT0gJ10nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IChwWzFdID09ICdSJyB8fCBwWzFdID09ICctJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmJiAocFsyXSA9PSAnVycgfHwgcFsyXSA9PSAnLScpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgKHBbM10gPT0gJ0MnIHx8IHBbM10gPT0gJy0nKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIChwWzRdID09ICdFJyB8fCBwWzRdID09ICctJykpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiByZXN0IGlzIEZNQVtTXSBvciBBRk1bU10gKi8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAnVSc7IC8qIHZlcnkgbGlrZWx5IG9uZSBvZiB0
aGUgTmV0V2FyZSBzZXJ2ZXJzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRv
a2xlblswXSA9PSAxMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPbGRIZWxs
c29mdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCh0b2tsZW5bMF0gPT0gMTAgfHwgdG9r
bGVuWzBdID09IDExKSAKKyAgICAgICAgICAgICAgICAgICAgJiYgc3RyY2hyKCItYmNkbHBzdz9E
RmFtIiwgKnRva2Vuc1swXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9ICYodG9rZW5zWzBd
WzFdKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChwWzBdID09ICdyJyB8fCBwWzBdID09ICct
JykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChwWzFdID09ICd3JyB8fCBwWzFdID09ICct
JykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChwWzNdID09ICdyJyB8fCBwWzNdID09ICct
JykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChwWzRdID09ICd3JyB8fCBwWzRdID09ICct
JykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChwWzZdID09ICdyJyB8fCBwWzZdID09ICct
JykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChwWzddID09ICd3JyB8fCBwWzddID09ICct
JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qICd4Jy9wWzldIGNhbiBiZSBTfHN8eHwt
fFR8dCBvciBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgbHN0eWxlID0gJ1UnOyAvKiB2ZXJ5IGxpa2VseSAvYmluL2xzICovCisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAobHN0eWxlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBtb250aF9udW0gPSAwOwot
ICAgICAgICAgICAgICBwID0gdG9rZW5zW3Rva21hcmtlcisxXTsKLSAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMTIqMyk7IGkrPTMpCi0gICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpZiAocFswXSA9PSBtb250aF9uYW1lc1tpKzBdICYmIAotICAgICAg
ICAgICAgICAgICAgICBwWzFdID09IG1vbnRoX25hbWVzW2krMV0gJiYgCi0gICAgICAgICAgICAg
ICAgICAgIHBbMl0gPT0gbW9udGhfbmFtZXNbaSsyXSkKLSAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIG1vbnRoX251bSsrOwotICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgIGlmIChtb250aF9udW0gPj0gMTIpCisgICAgICAgICAgICBpZiAobHN0eWxlID09ICdV
JykgeyAvKiBmaXJzdCB0b2tlbiBjaGVja3Mgb3V0ICovCiAgICAgICAgICAgICAgICAgbHN0eWxl
ID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9IC8qIHJlbGF0aXZlIHBvc2l0aW9uIHRl
c3QgKi8KLSAgICAgICAgfSAvKiBmb3IgKHBvcyA9IChudW10b2tzLTUpOyAhbHN0eWxlICYmIHBv
cyA+IDE7IHBvcy0tKSAqLwotICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdVJykgKi8KLQotICAg
ICAgaWYgKGxzdHlsZSA9PSAnVScpCi0gICAgICB7Ci0gICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9
IHRydWU7Ci0gICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKLSAgICAKLSAgICAgICAg
cmVzdWx0LmNhc2VTZW5zaXRpdmUgPSBmYWxzZTsKLSAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBK
dW5rRW50cnk7Ci0gICAgICAgIGlmICgqdG9rZW5zWzBdID09ICdkJyB8fCAqdG9rZW5zWzBdID09
ICdEJykKLSAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUERpcmVjdG9yeUVudHJ5OwotICAgICAg
ICBlbHNlIGlmICgqdG9rZW5zWzBdID09ICdsJykKLSAgICAgICAgICByZXN1bHQudHlwZSA9IEZU
UExpbmtFbnRyeTsKLSAgICAgICAgZWxzZSBpZiAoKnRva2Vuc1swXSA9PSAnLScgfHwgKnRva2Vu
c1swXSA9PSAnRicpCi0gICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7IC8qICho
b3BlZnVsbHkgYSByZWd1bGFyIGZpbGUpICovCi0KLSAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9
IEZUUERpcmVjdG9yeUVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgcG9zID0gdG9rbGVuW3Rv
a21hcmtlcl07Ci0gICAgICAgICAgcmVzdWx0LmZpbGVTaXplID0gU3RyaW5nKHRva2Vuc1t0b2tt
YXJrZXJdLCBwb3MpOwotICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAobnVt
dG9rcy01KTsgIWxzdHlsZSAmJiBwb3MgPiAxOyBwb3MtLSkgeworICAgICAgICAgICAgICAgICAg
ICAvKiBzY2FuIGZvcjogKFxkKylccysoW0EtWl1bYS16XVthLXpdKVxzKworICAgICAgICAgICAg
ICAgICAgICAgKiAgKFxkXGRcZFxkfFxkXDpcZFxkfFxkXGRcOlxkXGR8XGRcOlxkXGRcOlxkXGR8
XGRcZFw6XGRcZFw6XGRcZCkKKyAgICAgICAgICAgICAgICAgICAgICogIFxzKyguKykkCisgICAg
ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0
KCp0b2tlbnNbcG9zXSkgLyogc2l6ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyogKFx3
XHdcdykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHRva2xlbltwb3MrMV0gPT0gMyAm
JiBpc0FTQ0lJQWxwaGEoKnRva2Vuc1twb3MrMV0pCisgICAgICAgICAgICAgICAgICAgICAgICAm
JiBpc0FTQ0lJQWxwaGEodG9rZW5zW3BvcysxXVsxXSkgJiYgaXNBU0NJSUFscGhhKHRva2Vuc1tw
b3MrMV1bMl0pCisgICAgICAgICAgICAgICAgICAgICAgICAvKiAoXGR8XGRcZCkgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCgqdG9rZW5zW3BvcysyXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICYmICh0b2tsZW5bcG9zKzJdID09IDEKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8fCAodG9rbGVuW3BvcysyXSA9PSAyICYmIGlzQVNDSUlEaWdpdCh0b2tl
bnNbcG9zKzJdWzFdKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRva2xl
bltwb3MrM10gPj0gNCAmJiBpc0FTQ0lJRGlnaXQoKnRva2Vuc1twb3MrM10pCisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiAoXGRcOlxkXGRcOlxkXGR8XGRcZFw6XGRcZFw6XGRcZCkgKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICYmICh0b2tsZW5bcG9zKzNdIDw9IDUKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHx8ICgodG9rbGVuW3BvcyszXSA9PSA3IHx8IHRva2xlbltwb3MrM10gPT0g
OCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAodG9rZW5zW3BvcyszXVt0b2tsZW5b
cG9zKzNdLTNdKSA9PSAnOicpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzQVND
SUlEaWdpdCh0b2tlbnNbcG9zKzNdW3Rva2xlbltwb3MrM10tMl0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1twb3MrM11bdG9rbGVuW3BvcyszXS0x
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIChcZFxkXGRcZCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCh0b2tsZW5bcG9zKzNdID09IDQgfHwgdG9rbGVuW3BvcyszXSA9PSA1KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVsx
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vu
c1twb3MrM11bMl0pICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChcZFw6
XGRcZHxcZFw6XGRcZFw6XGRcZCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgKCh0b2tsZW5bcG9zKzNdID09IDQgfHwgdG9rbGVuW3BvcyszXSA9PSA3KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHRva2Vuc1twb3MrM11bMV0pID09ICc6Jwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vu
c1twb3MrM11bMl0pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdWzNdKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogKFxkXGRcOlxkXGR8XGRcZFw6XGRcZFw6XGRcZCkg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCh0b2tsZW5bcG9zKzNdID09
IDUgfHwgdG9rbGVuW3BvcyszXSA9PSA4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1twb3MrM11bMV0pICYmICh0b2tlbnNbcG9zKzNd
WzJdKSA9PSAnOicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzQVND
SUlEaWdpdCh0b2tlbnNbcG9zKzNdWzNdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVs0
XSkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gJ1Un
OyAvKiBhc3N1bWUgL2Jpbi9scyBvciB2YXJpYW50IGZvcm1hdCAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rbWFya2VyID0gcG9zOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayB0aGF0IHNpemUgaXMgbnVtZXJpYyAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXJdOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
bHN0eWxlICYmIGkgPCB0b2tsZW5bdG9rbWFya2VyXTsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKnArKykpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobHN0eWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9udGhOdW0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyKzFdOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAoMTIqMyk7IGkgKz0gMykg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFswXSA9
PSBtb250aE5hbWVzW2krMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIHBbMV0gPT0gbW9udGhOYW1lc1tpKzFdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBwWzJdID09IG1vbnRoTmFtZXNbaSsyXSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aE51bSsrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9udGhOdW0gPj0gMTIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gLyogcmVsYXRpdmUgcG9zaXRpb24gdGVzdCAqLworICAgICAgICAgICAgICAgIH0gLyog
Zm9yIChwb3MgPSAobnVtdG9rcy01KTsgIWxzdHlsZSAmJiBwb3MgPiAxOyBwb3MtLSkgKi8KKyAg
ICAgICAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnVScpICovCisKKyAgICAgICAgICAgIGlmIChs
c3R5bGUgPT0gJ1UnKSB7CisgICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7CisKKyAgICAgICAgICAg
ICAgICByZXN1bHQuY2FzZVNlbnNpdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gRlRQSnVua0VudHJ5OworICAgICAgICAgICAgICAgIGlmICgqdG9rZW5zWzBdID09
ICdkJyB8fCAqdG9rZW5zWzBdID09ICdEJykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5
cGUgPSBGVFBEaXJlY3RvcnlFbnRyeTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICgqdG9rZW5z
WzBdID09ICdsJykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBMaW5rRW50
cnk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnRva2Vuc1swXSA9PSAnLScgfHwgKnRva2Vu
c1swXSA9PSAnRicpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRmlsZUVu
dHJ5OyAvKiAoaG9wZWZ1bGx5IGEgcmVndWxhciBmaWxlKSAqLworCisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdC50eXBlICE9IEZUUERpcmVjdG9yeUVudHJ5KSB7CisgICAgICAgICAgICAgICAg
ICAgIHBvcyA9IHRva2xlblt0b2ttYXJrZXJdOworICAgICAgICAgICAgICAgICAgICByZXN1bHQu
ZmlsZVNpemUgPSBTdHJpbmcodG9rZW5zW3Rva21hcmtlcl0sIHBvcyk7CisgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uICA9IG1vbnRoX251bTsK
LSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaSh0b2tlbnNbdG9rbWFy
a2VyKzJdKTsKLSAgICAgICAgaWYgKHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSA9PSAwKQot
ICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSsrOwotCi0gICAgICAgIHAgPSB0
b2tlbnNbdG9rbWFya2VyKzNdOwotICAgICAgICBwb3MgPSAodW5zaWduZWQgaW50KWF0b2kocCk7
Ci0gICAgICAgIGlmIChwWzFdID09ICc6JykgLyogb25lIGRpZ2l0IGhvdXIgKi8KLSAgICAgICAg
ICBwLS07Ci0gICAgICAgIGlmIChwWzJdICE9ICc6JykgLyogeWVhciAqLwotICAgICAgICB7Ci0g
ICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyID0gcG9zOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1f
aG91ciA9IHBvczsKLSAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiAgPSBhdG9p
KHArMyk7Ci0gICAgICAgICAgaWYgKHBbNV0gPT0gJzonKQotICAgICAgICAgICAgcmVzdWx0Lm1v
ZGlmaWVkVGltZS50bV9zZWMgPSBhdG9pKHArNik7Ci0gICAgICAgCi0gICAgICAgICAgaWYgKCFz
dGF0ZS5ub3cpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGltZV90IG5vdyA9IHRpbWUoTlVM
TCk7Ci0gICAgICAgICAgICBzdGF0ZS5ub3cgPSBub3cgKiAxMDAwMDAwLjA7Ci0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaGFzIHRoZSB5ZWFyIDIwMzggYnVnCi0gICAgICAgICAg
ICBnbXRpbWVfcigmbm93LCAmc3RhdGUubm93RlRQVGltZSk7Ci0gICAgICAgICAgICBzdGF0ZS5u
b3dGVFBUaW1lLnRtX3llYXIgKz0gMTkwMDsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBzdGF0ZS5ub3dGVFBUaW1lLnRtX3llYXI7Ci0gICAg
ICAgICAgaWYgKCAoKCBzdGF0ZS5ub3dGVFBUaW1lLnRtX21vbiA8PCA1KSArIHN0YXRlLm5vd0ZU
UFRpbWUudG1fbWRheSkgPAotICAgICAgICAgICAgICAgKChyZXN1bHQubW9kaWZpZWRUaW1lLnRt
X21vbiA8PCA1KSArIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSkgKQotICAgICAgICAgICAg
cmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyLS07Ci0gICAgICAgCi0gICAgICAgIH0gLyogdGlt
ZS95ZWFyICovCi0gICAgICAgIAotICAgICAgICAvLyB0aGVyZSBpcyBleGFjdGx5IDEgc3BhY2Ug
YmV0d2VlbiBmaWxlbmFtZSBhbmQgcHJldmlvdXMgdG9rZW4gaW4gYWxsCi0gICAgICAgIC8vIG91
dHB1dHMgZXhjZXB0IG9sZCBIZWxsc29mdAotICAgICAgICBpZiAoIWlzT2xkSGVsbHNvZnQpCi0g
ICAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zW3Rva21hcmtlciszXSArIHRva2xlblt0
b2ttYXJrZXIrM10gKyAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcmVzdWx0LmZpbGVuYW1l
ID0gdG9rZW5zW3Rva21hcmtlcis0XTsKLQotICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGgg
PSAoJihsaW5lW2xpbmVsZW5dKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gKHJlc3Vs
dC5maWxlbmFtZSk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IEZUUExpbmtFbnRyeSAm
JiByZXN1bHQuZmlsZW5hbWVMZW5ndGggPiA0KQotICAgICAgICB7Ci0gICAgICAgICAgLyogRmly
c3QgdHJ5IHRvIHVzZSByZXN1bHQuZmVfc2l6ZSB0byBmaW5kICIgLT4gIiBzZXF1ZW5jZS4KLSAg
ICAgICAgICAgICBUaGlzIGNhbiBnaXZlIHByb3BlciByZXN1bHQgZm9yIGNhc2VzIGxpa2UgImFh
YSAtPiBiYmIgLT4gY2NjIi4gKi8KLSAgICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZVNpemUgPSBy
ZXN1bHQuZmlsZVNpemUudG9VSW50KCk7Ci0KLSAgICAgICAgICBpZiAocmVzdWx0LmZpbGVuYW1l
TGVuZ3RoID4gKGZpbGVTaXplICsgNCkgJiYKLSAgICAgICAgICAgICAgc3RybmNtcChyZXN1bHQu
ZmlsZW5hbWUgKyByZXN1bHQuZmlsZW5hbWVMZW5ndGggLSBmaWxlU2l6ZSAtIDQsICIgLT4gIiwg
NCkgPT0gMCkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQubGlua25hbWUgPSByZXN1
bHQuZmlsZW5hbWUgKyAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gZmlsZVNpemUpOwotICAgICAg
ICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoID0gKCYobGluZVtsaW5lbGVuXSkpIC0gKHJlc3Vs
dC5saW5rbmFtZSk7Ci0gICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGggLT0gZmlsZVNp
emUgKyA0OwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAg
ICAgICAgLyogU2VhcmNoIGZvciBzZXF1ZW5jZSAiIC0+ICIgZnJvbSB0aGUgZW5kIGZvciBjYXNl
IHdoZW4gdGhlcmUgYXJlCi0gICAgICAgICAgICAgICBtb3JlIG9jY3VycmVuY2VzLiBGLmUuIGlm
IGZ0cGQgcmV0dXJucyAiYSAtPiBiIC0+IGMiIGFzc3VtZQotICAgICAgICAgICAgICAgImEgLT4g
YiIgYXMgYSBuYW1lLiBQb3dlcnVzZXJzIGNhbiByZW1vdmUgdW5uZWNlc3NhcnkgcGFydHMKLSAg
ICAgICAgICAgICAgIG1hbnVhbGx5IGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZm9sbG93IHRoZSBs
aW5rIHdoZW4gc29tZQotICAgICAgICAgICAgICAgZXNzZW50aWFsIHBhcnQgaXMgbWlzc2luZy4g
Ki8KLSAgICAgICAgICAgIHAgPSByZXN1bHQuZmlsZW5hbWUgKyAocmVzdWx0LmZpbGVuYW1lTGVu
Z3RoIC0gNSk7Ci0gICAgICAgICAgICBmb3IgKHBvcyA9IChyZXN1bHQuZmlsZW5hbWVMZW5ndGgg
LSA1KTsgcG9zID4gMDsgcG9zLS0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmIChz
dHJuY21wKHAsICIgLT4gIiwgNCkgPT0gMCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJlc3VsdC5saW5rbmFtZSA9IHAgKyA0OwotICAgICAgICAgICAgICAgIHJlc3VsdC5saW5r
bmFtZUxlbmd0aCA9ICgmKGxpbmVbbGluZWxlbl0pKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLSAocmVzdWx0LmxpbmtuYW1lKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuZmls
ZW5hbWVMZW5ndGggPSBwb3M7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgcC0tOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uICA9IG1vbnRo
TnVtOworICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSA9IGF0b2ko
dG9rZW5zW3Rva21hcmtlcisyXSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQubW9kaWZp
ZWRUaW1lLnRtX21kYXkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1fbWRheSsrOworCisgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXIrM107Cisg
ICAgICAgICAgICAgICAgcG9zID0gKHVuc2lnbmVkKWF0b2kocCk7CisgICAgICAgICAgICAgICAg
aWYgKHBbMV0gPT0gJzonKSAvKiBvbmUgZGlnaXQgaG91ciAqLworICAgICAgICAgICAgICAgICAg
ICBwLS07CisgICAgICAgICAgICAgICAgaWYgKHBbMl0gIT0gJzonKSAvKiB5ZWFyICovCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IHBvczsKKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGlt
ZS50bV9ob3VyID0gcG9zOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1l
LnRtX21pbiAgPSBhdG9pKHArMyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwWzVdID09ICc6
JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fc2VjID0g
YXRvaShwKzYpOworCisgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGUubm93KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lX3Qgbm93ID0gdGltZShudWxscHRyKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlLm5vdyA9IG5vdyAqIDEwMDAwMDAuMDsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBoYXMgdGhlIHllYXIgMjAzOCBidWcK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdtdGltZV9yKCZub3csICZzdGF0ZS5ub3dGVFBUaW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLm5vd0ZUUFRpbWUudG1feWVhciArPSAx
OTAwOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lm1vZGlmaWVkVGltZS50bV95ZWFyID0gc3RhdGUubm93RlRQVGltZS50bV95ZWFyOworICAgICAg
ICAgICAgICAgICAgICBpbnQgbm93ID0gKHN0YXRlLm5vd0ZUUFRpbWUudG1fbW9uIDw8IDUpICsg
c3RhdGUubm93RlRQVGltZS50bV9tZGF5OworICAgICAgICAgICAgICAgICAgICBpbnQgbW9kaWZp
ZWRUaW1lID0gKHN0YXRlLm1vZGlmaWVkVGltZS50bV9tb24gPDwgNSkgKyBzdGF0ZS5tb2RpZmll
ZFRpbWUudG1fbWRheTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vdyA8IG1vZGlmaWVkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyLS07CisK
KyAgICAgICAgICAgICAgICB9IC8qIHRpbWUveWVhciAqLworCisgICAgICAgICAgICAgICAgLy8g
dGhlcmUgaXMgZXhhY3RseSAxIHNwYWNlIGJldHdlZW4gZmlsZW5hbWUgYW5kIHByZXZpb3VzIHRv
a2VuIGluIGFsbAorICAgICAgICAgICAgICAgIC8vIG91dHB1dHMgZXhjZXB0IG9sZCBIZWxsc29m
dAorICAgICAgICAgICAgICAgIGlmICghaXNPbGRIZWxsc29mdCkKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zW3Rva21hcmtlciszXSArIHRva2xlblt0b2ttYXJr
ZXIrM10gKyAxOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmZpbGVuYW1lID0gdG9rZW5zW3Rva21hcmtlcis0XTsKKworICAgICAgICAgICAgICAgIHJl
c3VsdC5maWxlbmFtZUxlbmd0aCA9ICgmKGxpbmVbbGluZWxlbl0pKQorICAgICAgICAgICAgICAg
ICAgICAtIChyZXN1bHQuZmlsZW5hbWUpOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50
eXBlID09IEZUUExpbmtFbnRyeSAmJiByZXN1bHQuZmlsZW5hbWVMZW5ndGggPiA0KSB7CisgICAg
ICAgICAgICAgICAgICAgIC8qIEZpcnN0IHRyeSB0byB1c2UgcmVzdWx0LmZlX3NpemUgdG8gZmlu
ZCAiIC0+ICIgc2VxdWVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2FuIGdpdmUg
cHJvcGVyIHJlc3VsdCBmb3IgY2FzZXMgbGlrZSAiYWFhIC0+IGJiYiAtPiBjY2MiLiAqLworICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmaWxlU2l6ZSA9IHJlc3VsdC5maWxlU2l6ZS50b1VJ
bnQoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4g
KGZpbGVTaXplICsgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmICFzdHJuY21wKHJlc3Vs
dC5maWxlbmFtZSArIHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtIGZpbGVTaXplIC0gNCwgIiAtPiAi
LCA0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lID0gcmVzdWx0
LmZpbGVuYW1lICsgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtIGZpbGVTaXplKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZUxlbmd0aCA9ICgmKGxpbmVbbGluZWxlbl0p
KSAtIChyZXN1bHQubGlua25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZp
bGVuYW1lTGVuZ3RoIC09IGZpbGVTaXplICsgNDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNlYXJjaCBmb3Igc2VxdWVuY2UgIiAtPiAi
IGZyb20gdGhlIGVuZCBmb3IgY2FzZSB3aGVuIHRoZXJlIGFyZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9yZSBvY2N1cnJlbmNlcy4gRi5lLiBpZiBmdHBkIHJldHVybnMgImEgLT4gYiAt
PiBjIiBhc3N1bWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIC0+IGIiIGFzIGEgbmFt
ZS4gUG93ZXJ1c2VycyBjYW4gcmVtb3ZlIHVubmVjZXNzYXJ5IHBhcnRzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYW51YWxseSBidXQgdGhlcmUgaXMgbm8gd2F5IHRvIGZvbGxvdyB0aGUg
bGluayB3aGVuIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzc2VudGlhbCBwYXJ0
IGlzIG1pc3NpbmcuICovCisgICAgICAgICAgICAgICAgICAgICAgICBwID0gcmVzdWx0LmZpbGVu
YW1lICsgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtIDUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChwb3MgPSAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gNSk7IHBvcyA+IDA7IHBvcy0t
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJuY21wKHAsICIgLT4gIiwg
NCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lID0g
cCArIDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZUxl
bmd0aCA9ICgmKGxpbmVbbGluZWxlbl0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLSAocmVzdWx0LmxpbmtuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcG9zOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcC0tOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogCiAjaWYgZGVmaW5lZChTVVBQT1JU
X0xTTEYpIC8qIHNvbWUgKHZlcnkgcmFyZSkgc2VydmVycyByZXR1cm4gbHMgLWxGICovCi0gICAg
ICAgIGlmIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPiAxKQotICAgICAgICB7Ci0gICAgICAgICAg
cCA9IHJlc3VsdC5maWxlbmFtZVtyZXN1bHQuZmlsZW5hbWVMZW5ndGgtMV07Ci0gICAgICAgICAg
cG9zID0gcmVzdWx0LnR5cGU7Ci0gICAgICAgICAgaWYgKHBvcyA9PSAnZCcpIHsgCi0gICAgICAg
ICAgICAgaWYgKCpwID09ICcvJykgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoLS07IC8qIGRpcmVjdG9y
eSAqLwotICAgICAgICAgIH0gZWxzZSBpZiAocG9zID09ICdsJykgeyAKLSAgICAgICAgICAgICBp
ZiAoKnAgPT0gJ0AnKSByZXN1bHQuZmlsZW5hbWVMZW5ndGgtLTsgLyogc3ltbGluayAqLwotICAg
ICAgICAgIH0gZWxzZSBpZiAocG9zID09ICdmJykgeyAKLSAgICAgICAgICAgICBpZiAoKnAgPT0g
JyonKSByZXN1bHQuZmlsZW5hbWVMZW5ndGgtLTsgLyogZXhlY3V0YWJsZSAqLwotICAgICAgICAg
IH0gZWxzZSBpZiAoKnAgPT0gJz0nIHx8ICpwID09ICclJyB8fCAqcCA9PSAnfCcpIHsKLSAgICAg
ICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aC0tOyAvKiBzb2NrZXQsIHdoaXRlb3V0LCBmaWZv
ICovCi0gICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5m
aWxlbmFtZUxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9IHJlc3VsdC5maWxl
bmFtZVtyZXN1bHQuZmlsZW5hbWVMZW5ndGgtMV07CisgICAgICAgICAgICAgICAgICAgIHBvcyA9
IHJlc3VsdC50eXBlOworICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09ICdkJykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCpwID09ICcvJykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGgtLTsgLyogZGlyZWN0b3J5ICovCisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zID09ICdsJykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCpwID09ICdAJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
ZmlsZW5hbWVMZW5ndGgtLTsgLyogc3ltbGluayAqLworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHBvcyA9PSAnZicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcCA9PSAn
KicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoLS07
IC8qIGV4ZWN1dGFibGUgKi8KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgqcCA9PSAn
PScgfHwgKnAgPT0gJyUnIHx8ICpwID09ICd8JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5maWxlbmFtZUxlbmd0aC0tOyAvKiBzb2NrZXQsIHdoaXRlb3V0LCBmaWZvICovCisgICAg
ICAgICAgICAgICAgfQogI2VuZGlmCi0gICAgIAotICAgICAgICAvKiB0aGUgY2FsbGVyIHNob3Vs
ZCBkbyB0aGlzIChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIgaXMgZGVzaXJlZCkKLSAgICAgICAg
aWYgKHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5ICYmIHJlc3VsdC5maWxlbmFtZVsw
XSA9PSAnLicgJiYKLSAgICAgICAgICAgIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMSB8fCAo
cmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDIgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcuJykpKQotICAgICAgICAgIHJldHVy
biBGVFBKdW5rRW50cnk7Ci0gICAgICAgICovCiAKLSAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBl
OyAgCisgICAgICAgICAgICAgICAgLyogdGhlIGNhbGxlciBzaG91bGQgZG8gdGhpcyAoaWYgZHJv
cHBpbmcgIi4iIGFuZCAiLi4iIGlzIGRlc2lyZWQpCisgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5ICYmIHJlc3VsdC5maWxlbmFtZVswXSA9PSAn
LicgJiYKKyAgICAgICAgICAgICAgICAgICAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDEgfHwg
KHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAyICYmCisgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmZpbGVuYW1lWzFdID09ICcuJykpKQorICAgICAgICAgICAgICAgICAgIHJldHVybiBGVFBKdW5r
RW50cnk7CisgICAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQudHlwZTsgIAogCi0gICAgICB9IC8qIGlmIChsc3R5bGUgPT0gJ1UnKSAqLworICAgICAg
ICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdVJykgKi8KIAotICAgIH0gLyogaWYgKCFsc3R5bGUg
JiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdVJykpICovCisgICAg
ICAgIH0gLyogaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0
eWxlID09ICdVJykpICovCiAjZW5kaWYKIAotICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCisgICAgICAgIC8qICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICov
CiAKICNpZiBkZWZpbmVkKFNVUFBPUlRfVzE2KSAvKiAxNmJpdCBXaW5kb3dzICovCi0gICAgaWYg
KCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICd3Jykp
Ci0gICAgeyAgICAgICAvKiBvbGQgU3VwZXJUQ1Agc3VpdGUgRlRQIHNlcnZlciBmb3IgV2luMy4x
ICovCisgICAgICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxp
c3RTdHlsZSA9PSAndycpKSB7CisgICAgICAgICAgICAvKiBvbGQgU3VwZXJUQ1Agc3VpdGUgRlRQ
IHNlcnZlciBmb3IgV2luMy4xICovCiAgICAgICAgICAgICAvKiBvbGQgTmV0TWFuYWdlIENoYW1l
bGVvbiBUQ1AvSVAgc3VpdGUgRlRQIHNlcnZlciBmb3IgV2luMy4xICovCi0gICAgICAvKgotICAg
ICAgKiBTdXBlclRDUCBkaXJsaXN0IGZyb20gdGhlIG1pcnJvci5wbCBwcm9qZWN0Ci0gICAgICAq
IG1vbi9kYXkveWVhciBzZXBhcmF0b3IgbWF5IGJlICcvJyBvciAnLScuCi0gICAgICAqIC4gICAg
ICAgICAgICAgICA8RElSPiAgICAgICAgICAgMTEtMTYtOTQgICAgICAgIDE3OjE2Ci0gICAgICAq
IC4uICAgICAgICAgICAgICA8RElSPiAgICAgICAgICAgMTEtMTYtOTQgICAgICAgIDE3OjE2Ci0g
ICAgICAqIElOU1RBTEwgICAgICAgICA8RElSPiAgICAgICAgICAgMTEtMTYtOTQgICAgICAgIDE3
OjE3Ci0gICAgICAqIENNVCAgICAgICAgICAgICA8RElSPiAgICAgICAgICAgMTEtMjEtOTQgICAg
ICAgIDEwOjE3Ci0gICAgICAqIERFU0lHTjEuRE9DICAgICAgICAgIDExMjY0ICAgICAgMDUtMTEt
OTUgICAgICAgIDE0OjIwCi0gICAgICAqIFJFQURNRS5UWFQgICAgICAgICAgICAxMDQ1ICAgICAg
MDUtMTAtOTUgICAgICAgIDExOjAxCi0gICAgICAqIFdQS0lUMS5FWEUgICAgICAgICAgOTYwMzM4
ICAgICAgMDYtMjEtOTUgICAgICAgIDE3OjAxCi0gICAgICAqIENNVC5DU1YgICAgICAgICAgICAg
ICAgICAwICAgICAgMDctMDYtOTUgICAgICAgIDE0OjU2Ci0gICAgICAqCi0gICAgICAqIENoYW1l
bGVvbiBkaXJsaXN0IGd1ZXNzZWQgZnJvbSBseW54Ci0gICAgICAqIC4gICAgICAgICAgICAgICA8
RElSPiAgICAgIE5vdiAxNiAxOTk0IDE3OjE2ICAgCi0gICAgICAqIC4uICAgICAgICAgICAgICA8
RElSPiAgICAgIE5vdiAxNiAxOTk0IDE3OjE2ICAgCi0gICAgICAqIElOU1RBTEwgICAgICAgICA8
RElSPiAgICAgIE5vdiAxNiAxOTk0IDE3OjE3Ci0gICAgICAqIENNVCAgICAgICAgICAgICA8RElS
PiAgICAgIE5vdiAyMSAxOTk0IDEwOjE3Ci0gICAgICAqIERFU0lHTjEuRE9DICAgICAxMTI2NCAg
ICAgIE1heSAxMSAxOTk1IDE0OjIwICAgQQotICAgICAgKiBSRUFETUUuVFhUICAgICAgIDEwNDUg
ICAgICBNYXkgMTAgMTk5NSAxMTowMQotICAgICAgKiBXUEtJVDEuRVhFICAgICA5NjAzMzggICAg
ICBKdW4gMjEgMTk5NSAxNzowMSAgIFIKLSAgICAgICogQ01ULkNTViAgICAgICAgICAgICAwICAg
ICAgSnVsIDA2IDE5OTUgMTQ6NTYgICBSSEEKLSAgICAgICovCi0gICAgICBpZiAobnVtdG9rcyA+
PSA0ICYmIHRva2xlblswXSA8IDEzICYmIAotICAgICAgICAgICgodG9rbGVuWzFdID09IDUgJiYg
KnRva2Vuc1sxXSA9PSAnPCcpIHx8IGlzQVNDSUlEaWdpdCgqdG9rZW5zWzFdKSkgKQotICAgICAg
ewotICAgICAgICBpZiAobnVtdG9rcyA9PSA0Ci0gICAgICAgICAmJiAodG9rbGVuWzJdID09IDgg
fHwgdG9rbGVuWzJdID09IDkpCi0gICAgICAgICAmJiAoKCh0b2tlbnNbMl1bMl0pID09ICcvJyAm
JiAodG9rZW5zWzJdWzVdKSA9PSAnLycpIHx8Ci0gICAgICAgICAgICAgKCh0b2tlbnNbMl1bMl0p
ID09ICctJyAmJiAodG9rZW5zWzJdWzVdKSA9PSAnLScpKQotICAgICAgICAgJiYgKHRva2xlblsz
XSA9PSA0IHx8IHRva2xlblszXSA9PSA1KQotICAgICAgICAgJiYgKHRva2Vuc1szXVt0b2tsZW5b
M10tM10pID09ICc6JwotICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1syXVswXSkgJiYg
aXNBU0NJSURpZ2l0KHRva2Vuc1syXVsxXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tl
bnNbMl1bM10pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bNF0pCi0gICAgICAgICAmJiBpc0FT
Q0lJRGlnaXQodG9rZW5zWzJdWzZdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzddKQotICAg
ICAgICAgJiYgKHRva2xlblsyXSA8IDkgfHwgaXNBU0NJSURpZ2l0KHRva2Vuc1syXVs4XSkpCi0g
ICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzNdW3Rva2xlblszXS0xXSkgJiYgaXNBU0NJ
SURpZ2l0KHRva2Vuc1szXVt0b2tsZW5bM10tMl0pCi0gICAgICAgICAmJiBpc0FTQ0lJRGlnaXQo
dG9rZW5zWzNdW3Rva2xlblszXS00XSkgJiYgaXNBU0NJSURpZ2l0KCp0b2tlbnNbM10pIAotICAg
ICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgbHN0eWxlID0gJ3cnOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKChudW10b2tzID09IDYgfHwgbnVtdG9rcyA9PSA3KQotICAgICAgICAg
JiYgdG9rbGVuWzJdID09IDMgJiYgdG9rbGVuWzNdID09IDIKLSAgICAgICAgICYmIHRva2xlbls0
XSA9PSA0ICYmIHRva2xlbls1XSA9PSA1Ci0gICAgICAgICAmJiAodG9rZW5zWzVdWzJdKSA9PSAn
OicKLSAgICAgICAgICYmIGlzQVNDSUlBbHBoYSh0b2tlbnNbMl1bMF0pICYmIGlzQVNDSUlBbHBo
YSh0b2tlbnNbMl1bMV0pCi0gICAgICAgICAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNB
U0NJSUFscGhhKHRva2Vuc1syXVsyXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNb
M11bMF0pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbM11bMV0pCi0gICAgICAgICAmJiBpc0FTQ0lJ
RGlnaXQodG9rZW5zWzRdWzBdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzRdWzFdKQotICAgICAg
ICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s0XVsyXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s0
XVszXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbNV1bMF0pICYmIGlzQVNDSUlE
aWdpdCh0b2tlbnNbNV1bMV0pCi0gICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzVdWzNd
KSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzVdWzRdKQotICAgICAgICAgLyogY291bGQgYWxzbyBj
aGVjayB0aGF0ICgmKHRva2Vuc1s1XVs1XSkgLSB0b2tlbnNbMl0pID09IDE3ICovCi0gICAgICAg
ICkKLSAgICAgICAgewotICAgICAgICAgIGxzdHlsZSA9ICd3JzsKLSAgICAgICAgfQotICAgICAg
ICBpZiAobHN0eWxlICYmIHN0YXRlLmxpc3RTdHlsZSAhPSBsc3R5bGUpIC8qIGZpcnN0IHRpbWUg
Ki8KLSAgICAgICAgewotICAgICAgICAgIHAgPSB0b2tlbnNbMV07ICAgCi0gICAgICAgICAgaWYg
KHRva2xlblsxXSAhPSA1IHx8IHBbMF0gIT0gJzwnIHx8IHBbMV0gIT0gJ0QnIHx8IAotICAgICAg
ICAgICAgICAgICBwWzJdICE9ICdJJyB8fCBwWzNdICE9ICdSJyB8fCBwWzRdICE9ICc+JykKLSAg
ICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHBvcyA9IDA7IGxzdHlsZSAmJiBwb3MgPCB0b2ts
ZW5bMV07IHBvcysrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlE
aWdpdCgqcCsrKSkKLSAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgfQot
ICAgICAgICAgIH0gLyogbm90IDxESVI+ICovCi0gICAgICAgIH0gLyogaWYgKGZpcnN0IHRpbWUp
ICovCi0gICAgICB9IC8qIGlmIChudW10b2tzID09IC4uLikgKi8KLQotICAgICAgaWYgKGxzdHls
ZSA9PSAndycpCi0gICAgICB7Ci0gICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7Ci0gICAg
ICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKLQotICAgICAgICByZXN1bHQuY2FzZVNlbnNp
dGl2ZSA9IHRydWU7Ci0gICAgICAgIHJlc3VsdC5maWxlbmFtZSA9IHRva2Vuc1swXTsKLSAgICAg
ICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gdG9rbGVuWzBdOwotICAgICAgICByZXN1bHQudHlw
ZSA9IEZUUERpcmVjdG9yeUVudHJ5OwotCi0gICAgICAgIHAgPSB0b2tlbnNbMV07Ci0gICAgICAg
IGlmIChpc0FTQ0lJRGlnaXQoKnApKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0LnR5cGUg
PSBGVFBGaWxlRW50cnk7Ci0gICAgICAgICAgcG9zID0gdG9rbGVuWzFdOwotICAgICAgICAgIHJl
c3VsdC5maWxlU2l6ZSA9IFN0cmluZyhwLCBwb3MpOwotICAgICAgICB9CisgICAgICAgICAgICAv
KgorICAgICAgICAgICAgICogU3VwZXJUQ1AgZGlybGlzdCBmcm9tIHRoZSBtaXJyb3IucGwgcHJv
amVjdAorICAgICAgICAgICAgICogbW9uL2RheS95ZWFyIHNlcGFyYXRvciBtYXkgYmUgJy8nIG9y
ICctJy4KKyAgICAgICAgICAgICAqIC4gICAgICAgICAgICAgICA8RElSPiAgICAgICAgICAgMTEt
MTYtOTQgICAgICAgIDE3OjE2CisgICAgICAgICAgICAgKiAuLiAgICAgICAgICAgICAgPERJUj4g
ICAgICAgICAgIDExLTE2LTk0ICAgICAgICAxNzoxNgorICAgICAgICAgICAgICogSU5TVEFMTCAg
ICAgICAgIDxESVI+ICAgICAgICAgICAxMS0xNi05NCAgICAgICAgMTc6MTcKKyAgICAgICAgICAg
ICAqIENNVCAgICAgICAgICAgICA8RElSPiAgICAgICAgICAgMTEtMjEtOTQgICAgICAgIDEwOjE3
CisgICAgICAgICAgICAgKiBERVNJR04xLkRPQyAgICAgICAgICAxMTI2NCAgICAgIDA1LTExLTk1
ICAgICAgICAxNDoyMAorICAgICAgICAgICAgICogUkVBRE1FLlRYVCAgICAgICAgICAgIDEwNDUg
ICAgICAwNS0xMC05NSAgICAgICAgMTE6MDEKKyAgICAgICAgICAgICAqIFdQS0lUMS5FWEUgICAg
ICAgICAgOTYwMzM4ICAgICAgMDYtMjEtOTUgICAgICAgIDE3OjAxCisgICAgICAgICAgICAgKiBD
TVQuQ1NWICAgICAgICAgICAgICAgICAgMCAgICAgIDA3LTA2LTk1ICAgICAgICAxNDo1NgorICAg
ICAgICAgICAgICoKKyAgICAgICAgICAgICAqIENoYW1lbGVvbiBkaXJsaXN0IGd1ZXNzZWQgZnJv
bSBseW54CisgICAgICAgICAgICAgKiAuICAgICAgICAgICAgICAgPERJUj4gICAgICBOb3YgMTYg
MTk5NCAxNzoxNiAgIAorICAgICAgICAgICAgICogLi4gICAgICAgICAgICAgIDxESVI+ICAgICAg
Tm92IDE2IDE5OTQgMTc6MTYgICAKKyAgICAgICAgICAgICAqIElOU1RBTEwgICAgICAgICA8RElS
PiAgICAgIE5vdiAxNiAxOTk0IDE3OjE3CisgICAgICAgICAgICAgKiBDTVQgICAgICAgICAgICAg
PERJUj4gICAgICBOb3YgMjEgMTk5NCAxMDoxNworICAgICAgICAgICAgICogREVTSUdOMS5ET0Mg
ICAgIDExMjY0ICAgICAgTWF5IDExIDE5OTUgMTQ6MjAgICBBCisgICAgICAgICAgICAgKiBSRUFE
TUUuVFhUICAgICAgIDEwNDUgICAgICBNYXkgMTAgMTk5NSAxMTowMQorICAgICAgICAgICAgICog
V1BLSVQxLkVYRSAgICAgOTYwMzM4ICAgICAgSnVuIDIxIDE5OTUgMTc6MDEgICBSCisgICAgICAg
ICAgICAgKiBDTVQuQ1NWICAgICAgICAgICAgIDAgICAgICBKdWwgMDYgMTk5NSAxNDo1NiAgIFJI
QQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAobnVtdG9rcyA+PSA0ICYmIHRva2xl
blswXSA8IDEzCisgICAgICAgICAgICAgICAgJiYgKCh0b2tsZW5bMV0gPT0gNSAmJiAqdG9rZW5z
WzFdID09ICc8JykgfHwgaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pKSkgeworICAgICAgICAgICAg
ICAgIGlmIChudW10b2tzID09IDQKKyAgICAgICAgICAgICAgICAgICAgJiYgKHRva2xlblsyXSA9
PSA4IHx8IHRva2xlblsyXSA9PSA5KQorICAgICAgICAgICAgICAgICAgICAmJiAoKCh0b2tlbnNb
Ml1bMl0pID09ICcvJyAmJiAodG9rZW5zWzJdWzVdKSA9PSAnLycpCisgICAgICAgICAgICAgICAg
ICAgICAgICB8fCAoKHRva2Vuc1syXVsyXSkgPT0gJy0nICYmICh0b2tlbnNbMl1bNV0pID09ICct
JykpCisgICAgICAgICAgICAgICAgICAgICYmICh0b2tsZW5bM10gPT0gNCB8fCB0b2tsZW5bM10g
PT0gNSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHRva2Vuc1szXVt0b2tsZW5bM10tM10pID09
ICc6JworICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzBdKSAm
JiBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzFdKQorICAgICAgICAgICAgICAgICAgICAmJiBpc0FT
Q0lJRGlnaXQodG9rZW5zWzJdWzNdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzRdKQorICAg
ICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzZdKSAmJiBpc0FTQ0lJ
RGlnaXQodG9rZW5zWzJdWzddKQorICAgICAgICAgICAgICAgICAgICAmJiAodG9rbGVuWzJdIDwg
OSB8fCBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzhdKSkKKyAgICAgICAgICAgICAgICAgICAgJiYg
aXNBU0NJSURpZ2l0KHRva2Vuc1szXVt0b2tsZW5bM10tMV0pICYmIGlzQVNDSUlEaWdpdCh0b2tl
bnNbM11bdG9rbGVuWzNdLTJdKQorICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQo
dG9rZW5zWzNdW3Rva2xlblszXS00XSkgJiYgaXNBU0NJSURpZ2l0KCp0b2tlbnNbM10pKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9ICd3JzsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKChudW10b2tzID09IDYgfHwgbnVtdG9rcyA9PSA3KQorICAgICAgICAgICAgICAgICAgICAm
JiB0b2tsZW5bMl0gPT0gMyAmJiB0b2tsZW5bM10gPT0gMgorICAgICAgICAgICAgICAgICAgICAm
JiB0b2tsZW5bNF0gPT0gNCAmJiB0b2tsZW5bNV0gPT0gNQorICAgICAgICAgICAgICAgICAgICAm
JiAodG9rZW5zWzVdWzJdKSA9PSAnOicKKyAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSUFs
cGhhKHRva2Vuc1syXVswXSkgJiYgaXNBU0NJSUFscGhhKHRva2Vuc1syXVsxXSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgaXNBU0NJSUFscGhhKHRva2Vuc1syXVsyXSkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1szXVswXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vu
c1szXVsxXSkKKyAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s0XVsw
XSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s0XVsxXSkKKyAgICAgICAgICAgICAgICAgICAgJiYg
aXNBU0NJSURpZ2l0KHRva2Vuc1s0XVsyXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s0XVszXSkK
KyAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s1XVswXSkgJiYgaXNB
U0NJSURpZ2l0KHRva2Vuc1s1XVsxXSkKKyAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURp
Z2l0KHRva2Vuc1s1XVszXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s1XVs0XSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLyogY291bGQgYWxzbyBjaGVjayB0aGF0ICgmKHRva2Vuc1s1XVs1XSkg
LSB0b2tlbnNbMl0pID09IDE3ICovCisgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9ICd3JzsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGxzdHlsZSAmJiBzdGF0ZS5s
aXN0U3R5bGUgIT0gbHN0eWxlKSB7IC8qIGZpcnN0IHRpbWUgKi8KKyAgICAgICAgICAgICAgICAg
ICAgcCA9IHRva2Vuc1sxXTsgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2xlblsxXSAh
PSA1IHx8IHBbMF0gIT0gJzwnIHx8IHBbMV0gIT0gJ0QnCisgICAgICAgICAgICAgICAgICAgICAg
ICB8fCBwWzJdICE9ICdJJyB8fCBwWzNdICE9ICdSJyB8fCBwWzRdICE9ICc+JykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAwOyBsc3R5bGUgJiYgcG9zIDwgdG9rbGVuWzFd
OyBwb3MrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0
KCpwKyspKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IC8qIG5vdCA8RElS
PiAqLworICAgICAgICAgICAgICAgIH0gLyogaWYgKGZpcnN0IHRpbWUpICovCisgICAgICAgICAg
ICB9IC8qIGlmIChudW10b2tzID09IC4uLikgKi8KKworICAgICAgICAgICAgaWYgKGxzdHlsZSA9
PSAndycpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKKworICAgICAgICAgICAgICAgIHJl
c3VsdC5jYXNlU2Vuc2l0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5h
bWUgPSB0b2tlbnNbMF07CisgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0g
dG9rbGVuWzBdOworICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRGlyZWN0b3J5RW50
cnk7CisKKyAgICAgICAgICAgICAgICBwID0gdG9rZW5zWzFdOworICAgICAgICAgICAgICAgIGlm
IChpc0FTQ0lJRGlnaXQoKnApKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
RlRQRmlsZUVudHJ5OworICAgICAgICAgICAgICAgICAgICBwb3MgPSB0b2tsZW5bMV07CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZyhwLCBwb3MpOworICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICBwID0gdG9rZW5zWzJdOwotICAgICAgICBpZiAodG9rbGVu
WzJdID09IDMpIC8qIENoYW1lbGVvbiAqLwotICAgICAgICB7Ci0gICAgICAgICAgdGJ1ZlswXSA9
IHRvQVNDSUlVcHBlcihwWzBdKTsKLSAgICAgICAgICB0YnVmWzFdID0gdG9BU0NJSUxvd2VyKHBb
MV0pOwotICAgICAgICAgIHRidWZbMl0gPSB0b0FTQ0lJTG93ZXIocFsyXSk7Ci0gICAgICAgICAg
Zm9yIChwb3MgPSAwOyBwb3MgPCAoMTIqMyk7IHBvcys9MykKLSAgICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAodGJ1ZlswXSA9PSBtb250aF9uYW1lc1twb3MrMF0gJiYKLSAgICAgICAgICAgICAg
ICB0YnVmWzFdID09IG1vbnRoX25hbWVzW3BvcysxXSAmJiAKLSAgICAgICAgICAgICAgICB0YnVm
WzJdID09IG1vbnRoX25hbWVzW3BvcysyXSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
cmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBwb3MvMzsKLSAgICAgICAgICAgICAgcmVzdWx0
Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaSh0b2tlbnNbM10pOwotICAgICAgICAgICAgICBy
ZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBhdG9pKHRva2Vuc1s0XSkgLSAxOTAwOwotICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9ICAgICAgICAgIAot
ICAgICAgICAgIHBvcyA9IDU7IC8qIENoYW1lbGVvbiB0b2tudW0gb2YgZGF0ZSBmaWVsZCAqLwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdC5tb2Rp
ZmllZFRpbWUudG1fbW9uID0gYXRvaShwKzApLTE7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVk
VGltZS50bV9tZGF5ID0gYXRvaShwKzMpOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1feWVhciA9IGF0b2kocCs2KTsKLSAgICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50
bV95ZWFyIDwgODApIC8qIFN1cGVyVENQICovCi0gICAgICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX3llYXIgKz0gMTAwOwotCi0gICAgICAgICAgcG9zID0gMzsgLyogU3VwZXJUQ1AgdG9r
bnVtIG9mIGRhdGUgZmllbGQgKi8KLSAgICAgICAgfQorICAgICAgICAgICAgICAgIHAgPSB0b2tl
bnNbMl07CisgICAgICAgICAgICAgICAgaWYgKHRva2xlblsyXSA9PSAzKSB7IC8qIENoYW1lbGVv
biAqLworICAgICAgICAgICAgICAgICAgICB0YnVmWzBdID0gdG9BU0NJSVVwcGVyKHBbMF0pOwor
ICAgICAgICAgICAgICAgICAgICB0YnVmWzFdID0gdG9BU0NJSUxvd2VyKHBbMV0pOworICAgICAg
ICAgICAgICAgICAgICB0YnVmWzJdID0gdG9BU0NJSUxvd2VyKHBbMl0pOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8ICgxMiozKTsgcG9zICs9IDMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0YnVmWzBdID09IG1vbnRoTmFtZXNbcG9zKzBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgdGJ1ZlsxXSA9PSBtb250aE5hbWVzW3BvcysxXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRidWZbMl0gPT0gbW9udGhOYW1lc1twb3MrMl0p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21v
biA9IHBvcyAvIDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVk
VGltZS50bV9tZGF5ID0gYXRvaSh0b2tlbnNbM10pOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IGF0b2kodG9rZW5zWzRdKSAtIDE5MDA7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcG9zID0g
NTsgLyogQ2hhbWVsZW9uIHRva251bSBvZiBkYXRlIGZpZWxkICovCisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24g
PSBhdG9pKHArMCktMTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50
bV9tZGF5ID0gYXRvaShwKzMpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX3llYXIgPSBhdG9pKHArNik7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX3llYXIgPCA4MCkgLyogU3VwZXJUQ1AgKi8KKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciArPSAxMDA7CisKKyAgICAgICAg
ICAgICAgICAgICAgcG9zID0gMzsgLyogU3VwZXJUQ1AgdG9rbnVtIG9mIGRhdGUgZmllbGQgKi8K
KyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3Vy
ID0gYXRvaSh0b2tlbnNbcG9zXSk7Ci0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWlu
ID0gYXRvaSgmKHRva2Vuc1twb3NdW3Rva2xlbltwb3NdLTJdKSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyID0gYXRvaSh0b2tlbnNbcG9zXSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9taW4gPSBhdG9pKCYodG9rZW5zW3Bvc11b
dG9rbGVuW3Bvc10tMl0pKTsKIAotICAgICAgICAvKiB0aGUgY2FsbGVyIHNob3VsZCBkbyB0aGlz
IChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIgaXMgZGVzaXJlZCkKLSAgICAgICAgaWYgKHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5ICYmIHJlc3VsdC5maWxlbmFtZVswXSA9PSAnLicg
JiYKLSAgICAgICAgICAgIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMSB8fCAocmVzdWx0LmZp
bGVuYW1lTGVuZ3RoID09IDIgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcuJykpKQotICAgICAgICAgIHJldHVybiBGVFBKdW5r
RW50cnk7Ci0gICAgICAgICovCisgICAgICAgICAgICAgICAgLyogdGhlIGNhbGxlciBzaG91bGQg
ZG8gdGhpcyAoaWYgZHJvcHBpbmcgIi4iIGFuZCAiLi4iIGlzIGRlc2lyZWQpCisgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5ICYmIHJlc3VsdC5m
aWxlbmFtZVswXSA9PSAnLicgJiYKKyAgICAgICAgICAgICAgICAgICAocmVzdWx0LmZpbGVuYW1l
TGVuZ3RoID09IDEgfHwgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAyICYmCisgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcuJykpKQorICAgICAgICAgICAgICAgICAg
IHJldHVybiBGVFBKdW5rRW50cnk7CisgICAgICAgICAgICAgICAgICAgKi8KIAotICAgICAgICBy
ZXR1cm4gcmVzdWx0LnR5cGU7Ci0gICAgICB9IC8qIChsc3R5bGUgPT0gJ3cnKSAqLworICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQudHlwZTsKKyAgICAgICAgICAgIH0gLyogKGxzdHlsZSA9
PSAndycpICovCiAKLSAgICB9IC8qIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8
IHN0YXRlLmxpc3RTdHlsZSA9PSAndycpKSAgKi8KKyAgICAgICAgfSAvKiBpZiAoIWxzdHlsZSAm
JiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ3cnKSkgICovCiAjZW5k
aWYKIAotICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrICovCisgICAgICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCiAKICNpZiBkZWZpbmVkKFNVUFBP
UlRfRExTKSAvKiBkbHMgLWR0UiAqLwotICAgIGlmICghbHN0eWxlICYmIAotICAgICAgIChzdGF0
ZS5saXN0U3R5bGUgPT0gJ0QnIHx8ICghc3RhdGUubGlzdFN0eWxlICYmIHN0YXRlLm51bUxpbmVz
ID09IDEpKSkKLSAgICAgICAvKiAvYmluL2RscyBsaW5lcyBoYXZlIHRvIGJlIGltbWVkaWF0ZWx5
IHJlY29nbml6YWJsZSAoZmlyc3QgbGluZSkgKi8KLSAgICB7Ci0gICAgICAvKiBJIGhhdmVuJ3Qg
c2VlbiBhbiBGVFAgc2VydmVyIHRoYXQgZGVsaXZlcnMgYSAvYmluL2RscyBsaXN0aW5nLAotICAg
ICAgICogYnV0IGNhbiBpbmZlciB0aGUgZm9ybWF0IGZyb20gdGhlIGx5bnggYW5kIG1pcnJvci5w
bCBwcm9qZWN0cy4KLSAgICAgICAqIEJvdGggZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgotICAgICAg
ICoKLSAgICAgICAqIEx5bnggc2F5czoKLSAgICAgICAqIFJFQURNRSAgICAgICAgICAgICAgNzYz
ICBJbmZvcm1hdGlvbiBhYm91dCB0aGlzIHNlcnZlclwwCi0gICAgICAgKiBiaW4vICAgICAgICAg
ICAgICAgICAgLSAgXDAKLSAgICAgICAqIGV0Yy8gICAgICAgICAgICAgICAgICA9ICBcMAotICAg
ICAgICogbHMtbFIgICAgICAgICAgICAgICAgIDAgIFwwCi0gICAgICAgKiBscy1sUi5aICAgICAg
ICAgICAgICAgMyAgXDAKLSAgICAgICAqIHB1Yi8gICAgICAgICAgICAgICAgICA9ICBQdWJsaWMg
YXJlYVwwCi0gICAgICAgKiB1c3IvICAgICAgICAgICAgICAgICAgLSAgXDAKLSAgICAgICAqIG1v
cmdhbiAgICAgICAgICAgICAgIDE0ICAtPiAuLi9yZWFsL21vcmdhblwwCi0gICAgICAgKiBUSU1J
VC5tb3N0bGlrZWx5LlpcMAotICAgICAgICogICAgICAgICAgICAgICAgICAgNzkyMTUgIFwwCi0g
ICAgICAgKgotICAgICAgICogbWlycm9yLnBsIHNheXM6Ci0gICAgICAgKiBmaWxlbmFtZTogIF4o
XFMqKVxzKwotICAgICAgICogc2l6ZTogICAgICAoXC18XD18XGQrKVxzKwotICAgICAgICogbW9u
dGgvZGF5OiAoKFx3XHdcd1xzK1xkK3xcZCtccytcd1x3XHcpXHMrCi0gICAgICAgKiB0aW1lL3ll
YXI6IChcZCs6XGQrfFxkXGRcZFxkKSlccysKLSAgICAgICAqIHJlc3Q6ICAgICAgKC4rKSAKLSAg
ICAgICAqCi0gICAgICAgKiBSRUFETUUgICAgICAgICAgICAgIDc2MyAgSnVsIDExIDIxOjA1ICBJ
bmZvcm1hdGlvbiBhYm91dCB0aGlzIHNlcnZlcgotICAgICAgICogYmluLyAgICAgICAgICAgICAg
ICAgIC0gIEFwciAyOCAgMTk5NAotICAgICAgICogZXRjLyAgICAgICAgICAgICAgICAgID0gIDEx
IEp1bCAyMTowNAotICAgICAgICogbHMtbFIgICAgICAgICAgICAgICAgIDAgICA2IEF1ZyAxNzox
NAotICAgICAgICogbHMtbFIuWiAgICAgICAgICAgICAgIDMgIDA1IFNlcCAxOTk0Ci0gICAgICAg
KiBwdWIvICAgICAgICAgICAgICAgICAgPSAgSnVsIDExIDIxOjA0ICBQdWJsaWMgYXJlYQotICAg
ICAgICogdXNyLyAgICAgICAgICAgICAgICAgIC0gIFNlcCAgNyAwOTozOQotICAgICAgICogbW9y
Z2FuICAgICAgICAgICAgICAgMTQgIEFwciAxOCAwOTozOSAgLT4gLi4vcmVhbC9tb3JnYW4KLSAg
ICAgICAqIFRJTUlULm1vc3RsaWtlbHkuWgotICAgICAgICogICAgICAgICAgICAgICAgICAgNzky
MTUgIEp1bCAxMSAyMTowNAotICAgICAgKi8KLSAgICAgIGlmICghc3RhdGUubGlzdFN0eWxlICYm
IGxpbmVbbGluZWxlbi0xXSA9PSAnOicgJiYgCi0gICAgICAgICAgbGluZWxlbiA+PSAyICYmIHRv
a2xlbltudW10b2tzLTFdICE9IDEpCi0gICAgICB7IAotICAgICAgICAvKiBjb2RlIGluIG1pcnJv
ci5wbCBzdWdnZXN0cyB0aGF0IGEgbGlzdGluZyBtYXkgYmUgcHJlY2VkZWQKLSAgICAgICAgICog
YnkgYSBQV0QgbGluZSBpbiB0aGUgZm9ybSAiL3NvbWUvZGlyL25hbWVzL2hlcmU6IgotICAgICAg
ICAgKiBidXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgYmVnaW4gd2l0aCAnLycuICpzaWdoKgotICAg
ICAgICAqLwotICAgICAgICBwb3MgPSAwOwotICAgICAgICBwID0gbGluZTsKLSAgICAgICAgd2hp
bGUgKHBvcyA8IChsaW5lbGVuLTEpKQotICAgICAgICB7Ci0gICAgICAgICAgLyogaWxsZWdhbCAo
b3IgZXh0cmVtZWx5IHVudXN1YWwpIGNoYXJzIGluIGEgZGlyc3BlYyAqLwotICAgICAgICAgIGlm
ICgqcCA9PSAnPCcgfHwgKnAgPT0gJ3wnIHx8ICpwID09ICc+JyB8fAotICAgICAgICAgICAgICAq
cCA9PSAnPycgfHwgKnAgPT0gJyonIHx8ICpwID09ICdcXCcpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBpZiAoKnAgPT0gJy8nICYmIHBvcyA8IChsaW5lbGVuLTIpICYmIHBbMV0gPT0g
Jy8nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgcCsr
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChwb3MgPT0gKGxpbmVsZW4tMSkpCi0gICAgICAgIHsK
LSAgICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSAnRCc7Ci0gICAgICAgICAgcmV0dXJuIEZUUEp1
bmtFbnRyeTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIWxzdHlsZSAmJiBudW10
b2tzID49IDIpCi0gICAgICB7Ci0gICAgICAgIHBvcyA9IDIyOyAvKiBwb3Mgb2YgKFxkK3wtfD0p
IGlmIHRoaXMgaXMgbm90IHBhcnQgb2YgYSBtdWx0aWxpbmUgKi8KLSAgICAgICAgaWYgKHN0YXRl
Lmxpc3RTdHlsZSAmJiBjYXJyeV9idWZfbGVuKSAvKiBmaXJzdCBpcyBmcm9tIHByZXZpb3VzIGxp
bmUgKi8KLSAgICAgICAgICBwb3MgPSB0b2tsZW5bMV0tMTsgLyogYW5kIGlzICdhcy1pcycgKG1h
eSBjb250YWluIHdoaXRlc3BhY2UpICovCi0KLSAgICAgICAgaWYgKGxpbmVsZW4gPiBwb3MpCi0g
ICAgICAgIHsKLSAgICAgICAgICBwID0gJmxpbmVbcG9zXTsKLSAgICAgICAgICBpZiAoKCpwID09
ICctJyB8fCAqcCA9PSAnPScgfHwgaXNBU0NJSURpZ2l0KCpwKSkgJiYKLSAgICAgICAgICAgICAg
KChsaW5lbGVuID09IChwb3MrMSkpIHx8IAotICAgICAgICAgICAgICAgKGxpbmVsZW4gPj0gKHBv
cyszKSAmJiBwWzFdID09ICcgJyAmJiBwWzJdID09ICcgJykpICkKLSAgICAgICAgICB7Ci0gICAg
ICAgICAgICB0b2ttYXJrZXIgPSAxOwotICAgICAgICAgICAgaWYgKCFjYXJyeV9idWZfbGVuKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICBwb3MgPSAxOwotICAgICAgICAgICAgICB3aGls
ZSAocG9zIDwgbnVtdG9rcyAmJiAodG9rZW5zW3Bvc10rdG9rbGVuW3Bvc10pIDwgKCZsaW5lWzIz
XSkpCi0gICAgICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICAgIHRva21hcmtlciA9IDA7
Ci0gICAgICAgICAgICAgIGlmICgodG9rZW5zW3Bvc10rdG9rbGVuW3Bvc10pID09ICgmbGluZVsy
M10pKQotICAgICAgICAgICAgICAgIHRva21hcmtlciA9IHBvczsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmICh0b2ttYXJrZXIpICAKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
bHN0eWxlID0gJ0QnOwotICAgICAgICAgICAgICBpZiAoKnRva2Vuc1t0b2ttYXJrZXJdID09ICct
JyB8fCAqdG9rZW5zW3Rva21hcmtlcl0gPT0gJz0nKQotICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHRva2xlblt0b2ttYXJrZXJdICE9IDEgfHwKLSAgICAgICAgICAgICAgICAg
ICAodG9rZW5zW3Rva21hcmtlci0xXVt0b2tsZW5bdG9rbWFya2VyLTFdLTFdKSAhPSAnLycpCi0g
ICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgICB9ICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Zm9yIChwb3MgPSAwOyBsc3R5bGUgJiYgcG9zIDwgdG9rbGVuW3Rva21hcmtlcl07IHBvcysrKSAK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCh0
b2tlbnNbdG9rbWFya2VyXVtwb3NdKSkKLSAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsg
CisgICAgICAgIGlmICghbHN0eWxlCisgICAgICAgICAgICAmJiAoc3RhdGUubGlzdFN0eWxlID09
ICdEJyB8fCAoIXN0YXRlLmxpc3RTdHlsZSAmJiBzdGF0ZS5udW1MaW5lcyA9PSAxKSkpIHsKKyAg
ICAgICAgICAgIC8qIC9iaW4vZGxzIGxpbmVzIGhhdmUgdG8gYmUgaW1tZWRpYXRlbHkgcmVjb2du
aXphYmxlIChmaXJzdCBsaW5lKSAqLworICAgICAgICAgICAgLyogSSBoYXZlbid0IHNlZW4gYW4g
RlRQIHNlcnZlciB0aGF0IGRlbGl2ZXJzIGEgL2Jpbi9kbHMgbGlzdGluZywKKyAgICAgICAgICAg
ICAqIGJ1dCBjYW4gaW5mZXIgdGhlIGZvcm1hdCBmcm9tIHRoZSBseW54IGFuZCBtaXJyb3IucGwg
cHJvamVjdHMuCisgICAgICAgICAgICAgKiBCb3RoIGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KKyAg
ICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBMeW54IHNheXM6CisgICAgICAgICAgICAgKiBS
RUFETUUgICAgICAgICAgICAgIDc2MyAgSW5mb3JtYXRpb24gYWJvdXQgdGhpcyBzZXJ2ZXJcMAor
ICAgICAgICAgICAgICogYmluLyAgICAgICAgICAgICAgICAgIC0gIFwwCisgICAgICAgICAgICAg
KiBldGMvICAgICAgICAgICAgICAgICAgPSAgXDAKKyAgICAgICAgICAgICAqIGxzLWxSICAgICAg
ICAgICAgICAgICAwICBcMAorICAgICAgICAgICAgICogbHMtbFIuWiAgICAgICAgICAgICAgIDMg
IFwwCisgICAgICAgICAgICAgKiBwdWIvICAgICAgICAgICAgICAgICAgPSAgUHVibGljIGFyZWFc
MAorICAgICAgICAgICAgICogdXNyLyAgICAgICAgICAgICAgICAgIC0gIFwwCisgICAgICAgICAg
ICAgKiBtb3JnYW4gICAgICAgICAgICAgICAxNCAgLT4gLi4vcmVhbC9tb3JnYW5cMAorICAgICAg
ICAgICAgICogVElNSVQubW9zdGxpa2VseS5aXDAKKyAgICAgICAgICAgICAqICAgICAgICAgICAg
ICAgICAgIDc5MjE1ICBcMAorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIG1pcnJvci5w
bCBzYXlzOgorICAgICAgICAgICAgICogZmlsZW5hbWU6ICBeKFxTKilccysKKyAgICAgICAgICAg
ICAqIHNpemU6ICAgICAgKFwtfFw9fFxkKylccysKKyAgICAgICAgICAgICAqIG1vbnRoL2RheTog
KChcd1x3XHdccytcZCt8XGQrXHMrXHdcd1x3KVxzKworICAgICAgICAgICAgICogdGltZS95ZWFy
OiAoXGQrOlxkK3xcZFxkXGRcZCkpXHMrCisgICAgICAgICAgICAgKiByZXN0OiAgICAgICguKykg
CisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogUkVBRE1FICAgICAgICAgICAgICA3NjMg
IEp1bCAxMSAyMTowNSAgSW5mb3JtYXRpb24gYWJvdXQgdGhpcyBzZXJ2ZXIKKyAgICAgICAgICAg
ICAqIGJpbi8gICAgICAgICAgICAgICAgICAtICBBcHIgMjggIDE5OTQKKyAgICAgICAgICAgICAq
IGV0Yy8gICAgICAgICAgICAgICAgICA9ICAxMSBKdWwgMjE6MDQKKyAgICAgICAgICAgICAqIGxz
LWxSICAgICAgICAgICAgICAgICAwICAgNiBBdWcgMTc6MTQKKyAgICAgICAgICAgICAqIGxzLWxS
LlogICAgICAgICAgICAgICAzICAwNSBTZXAgMTk5NAorICAgICAgICAgICAgICogcHViLyAgICAg
ICAgICAgICAgICAgID0gIEp1bCAxMSAyMTowNCAgUHVibGljIGFyZWEKKyAgICAgICAgICAgICAq
IHVzci8gICAgICAgICAgICAgICAgICAtICBTZXAgIDcgMDk6MzkKKyAgICAgICAgICAgICAqIG1v
cmdhbiAgICAgICAgICAgICAgIDE0ICBBcHIgMTggMDk6MzkgIC0+IC4uL3JlYWwvbW9yZ2FuCisg
ICAgICAgICAgICAgKiBUSU1JVC5tb3N0bGlrZWx5LloKKyAgICAgICAgICAgICAqICAgICAgICAg
ICAgICAgICAgIDc5MjE1ICBKdWwgMTEgMjE6MDQKKyAgICAgICAgICAgICAqLworICAgICAgICAg
ICAgaWYgKCFzdGF0ZS5saXN0U3R5bGUgJiYgbGluZVtsaW5lbGVuLTFdID09ICc6JworICAgICAg
ICAgICAgICAgICYmIGxpbmVsZW4gPj0gMiAmJiB0b2tsZW5bbnVtdG9rcy0xXSAhPSAxKSB7Cisg
ICAgICAgICAgICAgICAgLyogY29kZSBpbiBtaXJyb3IucGwgc3VnZ2VzdHMgdGhhdCBhIGxpc3Rp
bmcgbWF5IGJlIHByZWNlZGVkCisgICAgICAgICAgICAgICAgICogYnkgYSBQV0QgbGluZSBpbiB0
aGUgZm9ybSAiL3NvbWUvZGlyL25hbWVzL2hlcmU6IgorICAgICAgICAgICAgICAgICAqIGJ1dCBk
b2VzIG5vdCBuZWNlc3NhcmlseSBiZWdpbiB3aXRoICcvJy4gKnNpZ2gqCisgICAgICAgICAgICAg
ICAgICovCisgICAgICAgICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgICAgICBwID0gbGlu
ZTsKKyAgICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgKGxpbmVsZW4tMSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLyogaWxsZWdhbCAob3IgZXh0cmVtZWx5IHVudXN1YWwpIGNoYXJzIGluIGEg
ZGlyc3BlYyAqLworICAgICAgICAgICAgICAgICAgICBpZiAoKnAgPT0gJzwnIHx8ICpwID09ICd8
JyB8fCAqcCA9PSAnPicKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8ICpwID09ICc/JyB8fCAq
cCA9PSAnKicgfHwgKnAgPT0gJ1xcJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoKnAgPT0gJy8nICYmIHBvcyA8IChsaW5lbGVuLTIpICYm
IHBbMV0gPT0gJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmIChsc3R5bGUgJiYgIXN0YXRl
Lmxpc3RTdHlsZSkgLyogZmlyc3QgdGltZSAqLwotICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgLyogc2NhbiBmb3IgaWxsZWdhbCAob3IgaW5jcmVkaWJseSB1bnVzdWFsKSBjaGFycyBp
biBmbmFtZSAqLwotICAgICAgICAgICAgICAgIGZvciAocCA9IHRva2Vuc1swXTsgbHN0eWxlICYm
Ci0gICAgICAgICAgICAgICAgICAgICBwIDwgJih0b2tlbnNbdG9rbWFya2VyLTFdW3Rva2xlblt0
b2ttYXJrZXItMV1dKTsgcCsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
IGlmICgqcCA9PSAnPCcgfHwgKnAgPT0gJ3wnIHx8ICpwID09ICc+JyB8fCAKLSAgICAgICAgICAg
ICAgICAgICAgICAqcCA9PSAnPycgfHwgKnAgPT0gJyonIHx8ICpwID09ICcvJyB8fCAqcCA9PSAn
XFwnKQotICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgIGlm
IChwb3MgPT0gKGxpbmVsZW4tMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUubGlzdFN0
eWxlID0gJ0QnOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB9IC8qIHNpemUg
dG9rZW4gZm91bmQgKi8KLSAgICAgICAgICB9IC8qIGV4cGVjdGVkIGNoYXJzIGJlaGluZCBleHBl
Y3RlZCBzaXplIHRva2VuICovCi0gICAgICAgIH0gLyogaWYgKGxpbmVsZW4gPiBwb3MpICovCi0g
ICAgICB9IC8qIGlmICghbHN0eWxlICYmIG51bXRva3MgPj0gMikgKi8KLQotICAgICAgaWYgKCFs
c3R5bGUgJiYgc3RhdGUubGlzdFN0eWxlID09ICdEJyAmJiAhY2FycnlfYnVmX2xlbikKLSAgICAg
IHsKLSAgICAgICAgLyogdGhlIGZpbGVuYW1lIG9mIGEgbXVsdGktbGluZSBlbnRyeSBjYW4gYmUg
aWRlbnRpZmllZAotICAgICAgICAgKiBjb3JyZWN0bHkgb25seSBpZiBkbHMgZm9ybWF0IGhhZCBi
ZWVuIHByZXZpb3VzbHkgZXN0YWJsaXNoZWQuCi0gICAgICAgICAqIFRoaXMgc2hvdWxkIGFsd2F5
cyBiZSB0cnVlIGJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIGVudHJpZXMKLSAgICAgICAgICogZm9y
ICcuJyBhbmQvb3IgJy4uJyBhbmQvb3IgQ1dEIHRoYXQgcHJlY2VkZSB0aGUgcmVzdCBvZiB0aGUK
LSAgICAgICAgICogbGlzdGluZy4KLSAgICAgICAgKi8KLSAgICAgICAgcG9zID0gbGluZWxlbjsK
LSAgICAgICAgaWYgKHBvcyA+IChzaXplb2Yoc3RhdGUuY2FycnlCdWZmZXIpLTEpKQotICAgICAg
ICAgIHBvcyA9IHNpemVvZihzdGF0ZS5jYXJyeUJ1ZmZlciktMTsKLSAgICAgICAgbWVtY3B5KCBz
dGF0ZS5jYXJyeUJ1ZmZlciwgbGluZSwgcG9zICk7Ci0gICAgICAgIHN0YXRlLmNhcnJ5QnVmZmVy
TGVuZ3RoID0gcG9zOwotICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OwotICAgICAgfQotCi0g
ICAgICBpZiAobHN0eWxlID09ICdEJykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25l
ID0gdHJ1ZTsKLSAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOwotCi0gICAgICAgIHAg
PSAmKHRva2Vuc1t0b2ttYXJrZXItMV1bdG9rbGVuW3Rva21hcmtlci0xXV0pOwotICAgICAgICBy
ZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMF07Ci0gICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0
aCA9IHAgLSB0b2tlbnNbMF07Ci0gICAgICAgIHJlc3VsdC50eXBlICA9IEZUUEZpbGVFbnRyeTsK
LQotICAgICAgICBpZiAocmVzdWx0LmZpbGVuYW1lW3Jlc3VsdC5maWxlbmFtZUxlbmd0aC0xXSA9
PSAnLycpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAocmVzdWx0LmxpbmtuYW1lTGVuZ3RoID09
IDEpCi0gICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUEp1bmtFbnRyeTsKLSAgICAgICAgICBl
bHNlCi0gICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoLS07Ci0g
ICAgICAgICAgICByZXN1bHQudHlwZSAgPSBGVFBEaXJlY3RvcnlFbnRyeTsKLSAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbdG9rbWFy
a2VyXSkpCi0gICAgICAgIHsKLSAgICAgICAgICBwb3MgPSB0b2tsZW5bdG9rbWFya2VyXTsKLSAg
ICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJpbmcodG9rZW5zW3Rva21hcmtlcl0sIHBvcyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKHRva21hcmtlciszKSA8IG51bXRva3MgJiYgCi0g
ICAgICAgICAgICAgICgmKHRva2Vuc1tudW10b2tzLTFdW3Rva2xlbltudW10b2tzLTFdXSkgLSAK
LSAgICAgICAgICAgICAgIHRva2Vuc1t0b2ttYXJrZXIrMV0pID49ICgxKzErMysxKzQpICkKLSAg
ICAgICAgewotICAgICAgICAgIHBvcyA9ICh0b2ttYXJrZXIrMyk7Ci0gICAgICAgICAgcCA9IHRv
a2Vuc1twb3NdOwotICAgICAgICAgIHBvcyA9IHRva2xlbltwb3NdOwotCi0gICAgICAgICAgaWYg
KChwb3MgPT0gNCB8fCBwb3MgPT0gNSkKLSAgICAgICAgICAmJiAgaXNBU0NJSURpZ2l0KCpwKSAm
JiBpc0FTQ0lJRGlnaXQocFtwb3MtMV0pICYmIGlzQVNDSUlEaWdpdChwW3Bvcy0yXSkKLSAgICAg
ICAgICAmJiAgKChwb3MgPT0gNSAmJiBwWzJdID09ICc6JykgfHwgIAotICAgICAgICAgICAgICAg
KHBvcyA9PSA0ICYmIChpc0FTQ0lJRGlnaXQocFsxXSkgfHwgcFsxXSA9PSAnOicpKSkKLSAgICAg
ICAgICAgICApCi0gICAgICAgICAgewotICAgICAgICAgICAgbW9udGhfbnVtID0gdG9rbWFya2Vy
KzE7IC8qIGFzc3VtZWQgcG9zaXRpb24gb2YgbW9udGggZmllbGQgKi8KLSAgICAgICAgICAgIHBv
cyA9IHRva21hcmtlcisyOyAgICAgICAvKiBhc3N1bWVkIHBvc2l0aW9uIG9mIG1kYXkgZmllbGQg
Ki8KLSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKnRva2Vuc1ttb250aF9udW1dKSkgLyog
cG9zaXRpb25zIGFyZSByZXZlcnNlZCAqLwotICAgICAgICAgICAgewotICAgICAgICAgICAgICBt
b250aF9udW0rKzsKLSAgICAgICAgICAgICAgcG9zLS07CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBwID0gdG9rZW5zW21vbnRoX251bV07Ci0gICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0
KCp0b2tlbnNbcG9zXSkgCi0gICAgICAgICAgICAmJiAodG9rbGVuW3Bvc10gPT0gMSB8fCAKLSAg
ICAgICAgICAgICAgICAgICh0b2tsZW5bcG9zXSA9PSAyICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNb
cG9zXVsxXSkpKQotICAgICAgICAgICAgJiYgdG9rbGVuW21vbnRoX251bV0gPT0gMwotICAgICAg
ICAgICAgJiYgaXNBU0NJSUFscGhhKCpwKSAmJiBpc0FTQ0lJQWxwaGEocFsxXSkgJiYgaXNBU0NJ
SUFscGhhKHBbMl0pICApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHBvcyA9IGF0b2ko
dG9rZW5zW3Bvc10pOwotICAgICAgICAgICAgICBpZiAocG9zID4gMCAmJiBwb3MgPD0gMzEpCi0g
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21k
YXkgPSBwb3M7Ci0gICAgICAgICAgICAgICAgbW9udGhfbnVtID0gMTsKLSAgICAgICAgICAgICAg
ICBmb3IgKHBvcyA9IDA7IHBvcyA8ICgxMiozKTsgcG9zKz0zKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgIGlmIChwWzBdID09IG1vbnRoX25hbWVzW3BvcyswXSAmJgotICAg
ICAgICAgICAgICAgICAgICAgIHBbMV0gPT0gbW9udGhfbmFtZXNbcG9zKzFdICYmCi0gICAgICAg
ICAgICAgICAgICAgICAgcFsyXSA9PSBtb250aF9uYW1lc1twb3MrMl0pCi0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgbW9udGhfbnVtKys7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtb250aF9udW0gPiAxMikKLSAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSA9IDA7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBtb250
aF9udW0gLSAxOwotICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbHN0eWxlICYm
IG51bXRva3MgPj0gMikgeworICAgICAgICAgICAgICAgIHBvcyA9IDIyOyAvKiBwb3Mgb2YgKFxk
K3wtfD0pIGlmIHRoaXMgaXMgbm90IHBhcnQgb2YgYSBtdWx0aWxpbmUgKi8KKyAgICAgICAgICAg
ICAgICBpZiAoc3RhdGUubGlzdFN0eWxlICYmIGNhcnJ5QnVmTGVuZ3RoKSAvKiBmaXJzdCBpcyBm
cm9tIHByZXZpb3VzIGxpbmUgKi8KKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVuWzFd
LTE7IC8qIGFuZCBpcyAnYXMtaXMnIChtYXkgY29udGFpbiB3aGl0ZXNwYWNlKSAqLworCisgICAg
ICAgICAgICAgICAgaWYgKGxpbmVsZW4gPiBwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9
ICZsaW5lW3Bvc107CisgICAgICAgICAgICAgICAgICAgIGlmICgoKnAgPT0gJy0nIHx8ICpwID09
ICc9JyB8fCBpc0FTQ0lJRGlnaXQoKnApKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChs
aW5lbGVuID09IChwb3MrMSkpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobGluZWxlbiA+
PSAocG9zKzMpICYmIHBbMV0gPT0gJyAnICYmIHBbMl0gPT0gJyAnKSkgKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0b2ttYXJrZXIgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFjYXJyeUJ1Zkxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IDE7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBvcyA8IG51bXRva3MgJiYgKHRv
a2Vuc1twb3NdK3Rva2xlbltwb3NdKSA8ICgmbGluZVsyM10pKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2ttYXJr
ZXIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodG9rZW5zW3Bvc10rdG9r
bGVuW3Bvc10pID09ICgmbGluZVsyM10pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b2ttYXJrZXIgPSBwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodG9rbWFya2VyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbHN0eWxlID0gJ0QnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqdG9rZW5z
W3Rva21hcmtlcl0gPT0gJy0nIHx8ICp0b2tlbnNbdG9rbWFya2VyXSA9PSAnPScpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2xlblt0b2ttYXJrZXJdICE9IDEKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICh0b2tlbnNbdG9rbWFya2VyLTFd
W3Rva2xlblt0b2ttYXJrZXItMV0tMV0pICE9ICcvJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAwOyBsc3R5
bGUgJiYgcG9zIDwgdG9rbGVuW3Rva21hcmtlcl07IHBvcysrKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCh0b2tlbnNbdG9rbWFya2VyXVtw
b3NdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAw
OyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobHN0eWxlICYmICFz
dGF0ZS5saXN0U3R5bGUpIHsgLyogZmlyc3QgdGltZSAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBzY2FuIGZvciBpbGxlZ2FsIChvciBpbmNyZWRpYmx5IHVudXN1YWwpIGNo
YXJzIGluIGZuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9
IHRva2Vuc1swXTsgbHN0eWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
JiBwIDwgJih0b2tlbnNbdG9rbWFya2VyLTFdW3Rva2xlblt0b2ttYXJrZXItMV1dKTsgcCsrKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnAgPT0gJzwnIHx8ICpw
ID09ICd8JyB8fCAqcCA9PSAnPicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8fCAqcCA9PSAnPycgfHwgKnAgPT0gJyonIHx8ICpwID09ICcvJyB8fCAqcCA9PSAnXFwn
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gLyogc2l6ZSB0b2tlbiBmb3VuZCAq
LworICAgICAgICAgICAgICAgICAgICB9IC8qIGV4cGVjdGVkIGNoYXJzIGJlaGluZCBleHBlY3Rl
ZCBzaXplIHRva2VuICovCisgICAgICAgICAgICAgICAgfSAvKiBpZiAobGluZWxlbiA+IHBvcykg
Ki8KKyAgICAgICAgICAgIH0gLyogaWYgKCFsc3R5bGUgJiYgbnVtdG9rcyA+PSAyKSAqLworCisg
ICAgICAgICAgICBpZiAoIWxzdHlsZSAmJiBzdGF0ZS5saXN0U3R5bGUgPT0gJ0QnICYmICFjYXJy
eUJ1Zkxlbmd0aCkgeworICAgICAgICAgICAgICAgIC8qIHRoZSBmaWxlbmFtZSBvZiBhIG11bHRp
LWxpbmUgZW50cnkgY2FuIGJlIGlkZW50aWZpZWQKKyAgICAgICAgICAgICAgICAgKiBjb3JyZWN0
bHkgb25seSBpZiBkbHMgZm9ybWF0IGhhZCBiZWVuIHByZXZpb3VzbHkgZXN0YWJsaXNoZWQuCisg
ICAgICAgICAgICAgICAgICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIHRydWUgYmVjYXVzZSB0aGVy
ZSBzaG91bGQgYmUgZW50cmllcworICAgICAgICAgICAgICAgICAqIGZvciAnLicgYW5kL29yICcu
LicgYW5kL29yIENXRCB0aGF0IHByZWNlZGUgdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgICAgICAg
ICAgICogbGlzdGluZy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBwb3Mg
PSBsaW5lbGVuOworICAgICAgICAgICAgICAgIGlmIChwb3MgPiAoc2l6ZW9mKHN0YXRlLmNhcnJ5
QnVmZmVyKS0xKSkKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gc2l6ZW9mKHN0YXRlLmNhcnJ5
QnVmZmVyKS0xOworICAgICAgICAgICAgICAgIG1lbWNweShzdGF0ZS5jYXJyeUJ1ZmZlciwgbGlu
ZSwgcG9zKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5jYXJyeUJ1ZmZlckxlbmd0aCA9IHBvczsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgdG9rbWFya2VyICs9IDM7IC8qIHNraXAgbWRheS9tb24veXJ0aW1lICh0
byBmaW5kICIgLT4gIikgKi8KLSAgICAgICAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXJdOwot
Ci0gICAgICAgICAgICAgIHBvcyA9IGF0b2kocCk7Ci0gICAgICAgICAgICAgIGlmIChwb3MgPiAy
NCkKLSAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBwb3MtMTkw
MDsKLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKHBbMV0gPT0gJzonKQotICAgICAgICAgICAgICAgICAgcC0tOwotICAgICAgICAgICAgICAg
IHJlc3VsdC5tb2RpZmllZFRpbWUudG1faG91ciA9IHBvczsKLSAgICAgICAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX21pbiA9IGF0b2kocCszKTsKLSAgICAgICAgICAgICAgICBpZiAo
IXN0YXRlLm5vdykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICB0aW1lX3Qg
bm93ID0gdGltZShOVUxMKTsKLSAgICAgICAgICAgICAgICAgIHN0YXRlLm5vdyA9IG5vdyAqIDEw
MDAwMDAuMDsKLSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgY29kZSBoYXMgdGhlIHllYXIgMjAzOCBidWcKLSAgICAgICAgICAgICAgICAgIGdtdGlt
ZV9yKCZub3csICZzdGF0ZS5ub3dGVFBUaW1lKTsKLSAgICAgICAgICAgICAgICAgIHN0YXRlLm5v
d0ZUUFRpbWUudG1feWVhciArPSAxOTAwOworCisgICAgICAgICAgICBpZiAobHN0eWxlID09ICdE
JykgeworICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOworCisgICAgICAgICAgICAgICAgcCA9ICYo
dG9rZW5zW3Rva21hcmtlci0xXVt0b2tsZW5bdG9rbWFya2VyLTFdXSk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzBdOworICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZUxlbmd0aCA9IHAgLSB0b2tlbnNbMF07CisgICAgICAgICAgICAgICAgcmVzdWx0LnR5
cGUgID0gRlRQRmlsZUVudHJ5OworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFt
ZVtyZXN1bHQuZmlsZW5hbWVMZW5ndGgtMV0gPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQubGlua25hbWVMZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC50eXBlID0gRlRQSnVua0VudHJ5OworICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aC0tOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgID0gRlRQRGlyZWN0b3J5RW50cnk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlEaWdp
dCgqdG9rZW5zW3Rva21hcmtlcl0pKSB7CisgICAgICAgICAgICAgICAgICAgIHBvcyA9IHRva2xl
blt0b2ttYXJrZXJdOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJp
bmcodG9rZW5zW3Rva21hcmtlcl0sIHBvcyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IHN0YXRlLm5vd0ZUUFRpbWUudG1f
eWVhcjsKLSAgICAgICAgICAgICAgICBpZiAoICgoIHN0YXRlLm5vd0ZUUFRpbWUudG1fbW9uICA8
PCA0KSArIHN0YXRlLm5vd0ZUUFRpbWUudG1fbWRheSkgPAotICAgICAgICAgICAgICAgICAgICAg
KChyZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA8PCA0KSArIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1fbWRheSkgKQotICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFy
LS07Ci0gICAgICAgICAgICAgIH0gLyogZ290IHllYXIgb3IgdGltZSAqLwotICAgICAgICAgICAg
fSAvKiBnb3QgbW9udGgvbWRheSAqLwotICAgICAgICAgIH0gLyogbWF5IGhhdmUgeWVhciBvciB0
aW1lICovCi0gICAgICAgIH0gLyogZW5vdWdoIHJlbWFpbmluZyB0byBwb3NzaWJseSBoYXZlIGRh
dGUvdGltZSAqLwotCi0gICAgICAgIGlmIChudW10b2tzID4gKHRva21hcmtlcisyKSkKLSAgICAg
ICAgewotICAgICAgICAgIHBvcyA9IHRva21hcmtlcisxOwotICAgICAgICAgIHAgPSB0b2tlbnNb
cG9zXTsKLSAgICAgICAgICBpZiAodG9rbGVuW3Bvc10gPT0gMiAmJiAqcCA9PSAnLScgJiYgcFsx
XSA9PSAnPicpCi0gICAgICAgICAgewotICAgICAgICAgICAgcCA9ICYodG9rZW5zW251bXRva3Mt
MV1bdG9rbGVuW251bXRva3MtMV1dKTsKLSAgICAgICAgICAgIHJlc3VsdC50eXBlICA9IEZUUExp
bmtFbnRyeTsKLSAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZSA9IHRva2Vuc1twb3MrMV07Ci0g
ICAgICAgICAgICByZXN1bHQubGlua25hbWVMZW5ndGggPSBwIC0gcmVzdWx0LmxpbmtuYW1lOwot
ICAgICAgICAgICAgaWYgKHJlc3VsdC5saW5rbmFtZUxlbmd0aCA+IDEgJiYKLSAgICAgICAgICAg
ICAgICByZXN1bHQubGlua25hbWVbcmVzdWx0LmxpbmtuYW1lTGVuZ3RoLTFdID09ICcvJykKLSAg
ICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoLS07Ci0gICAgICAgICAgfQotICAgICAg
ICB9IC8qIGlmIChudW10b2tzID4gKHRva21hcmtlcisyKSkgKi8KLQotICAgICAgICAvKiB0aGUg
Y2FsbGVyIHNob3VsZCBkbyB0aGlzIChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIgaXMgZGVzaXJl
ZCkKLSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5ICYmIHJlc3Vs
dC5maWxlbmFtZVswXSA9PSAnLicgJiYKLSAgICAgICAgICAgIChyZXN1bHQuZmlsZW5hbWVMZW5n
dGggPT0gMSB8fCAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDIgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcuJykpKQotICAg
ICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7Ci0gICAgICAgICovCi0KLSAgICAgICAgcmV0dXJu
IHJlc3VsdC50eXBlOwotCi0gICAgICB9IC8qIGlmIChsc3R5bGUgPT0gJ0QnKSAqLwotICAgIH0g
LyogaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09
ICdEJykpICovCisKKyAgICAgICAgICAgICAgICBpZiAoKHRva21hcmtlciszKSA8IG51bXRva3MK
KyAgICAgICAgICAgICAgICAgICAgJiYgKCYodG9rZW5zW251bXRva3MtMV1bdG9rbGVuW251bXRv
a3MtMV1dKSAtIHRva2Vuc1t0b2ttYXJrZXIrMV0pID49ICgxKzErMysxKzQpICkgeworICAgICAg
ICAgICAgICAgICAgICBwb3MgPSAodG9rbWFya2VyKzMpOworICAgICAgICAgICAgICAgICAgICBw
ID0gdG9rZW5zW3Bvc107CisgICAgICAgICAgICAgICAgICAgIHBvcyA9IHRva2xlbltwb3NdOwor
CisgICAgICAgICAgICAgICAgICAgIGlmICgocG9zID09IDQgfHwgcG9zID09IDUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQoKnApICYmIGlzQVNDSUlEaWdpdChwW3Bv
cy0xXSkgJiYgaXNBU0NJSURpZ2l0KHBbcG9zLTJdKQorICAgICAgICAgICAgICAgICAgICAgICAg
JiYgKChwb3MgPT0gNSAmJiBwWzJdID09ICc6JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8fCAocG9zID09IDQgJiYgKGlzQVNDSUlEaWdpdChwWzFdKSB8fCBwWzFdID09ICc6JykpKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhOdW0gPSB0b2ttYXJrZXIrMTsgLyogYXNz
dW1lZCBwb3NpdGlvbiBvZiBtb250aCBmaWVsZCAqLworICAgICAgICAgICAgICAgICAgICAgICAg
cG9zID0gdG9rbWFya2VyKzI7ICAgICAgIC8qIGFzc3VtZWQgcG9zaXRpb24gb2YgbWRheSBmaWVs
ZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqdG9rZW5zW21v
bnRoTnVtXSkpIHsgLyogcG9zaXRpb25zIGFyZSByZXZlcnNlZCAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vbnRoTnVtKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9z
LS07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBw
ID0gdG9rZW5zW21vbnRoTnVtXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJ
RGlnaXQoKnRva2Vuc1twb3NdKSAmJiAodG9rbGVuW3Bvc10gPT0gMQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8ICh0b2tsZW5bcG9zXSA9PSAyICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNb
cG9zXVsxXSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRva2xlblttb250aE51
bV0gPT0gMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlBbHBoYSgqcCkg
JiYgaXNBU0NJSUFscGhhKHBbMV0pICYmIGlzQVNDSUlBbHBoYShwWzJdKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcyA9IGF0b2kodG9rZW5zW3Bvc10pOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwb3MgPiAwICYmIHBvcyA8PSAzMSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBwb3M7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoTnVtID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCAoMTIqMyk7IHBvcyArPSAz
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFswXSA9PSBtb250
aE5hbWVzW3BvcyswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IHBbMV0gPT0gbW9udGhOYW1lc1twb3MrMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBwWzJdID09IG1vbnRoTmFtZXNbcG9zKzJdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9udGhOdW0rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9udGhOdW0gPiAxMikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1f
bWRheSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0g
bW9udGhOdW0gLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubW9kaWZp
ZWRUaW1lLnRtX21kYXkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2ttYXJrZXIg
Kz0gMzsgLyogc2tpcCBtZGF5L21vbi95cnRpbWUgKHRvIGZpbmQgIiAtPiAiKSAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyXTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcyA9IGF0b2kocCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHBvcyA+IDI0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBwb3MtMTkwMDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBbMV0g
PT0gJzonKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0tOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIgPSBw
b3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1fbWluID0gYXRvaShwKzMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXN0YXRlLm5vdykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV90
IG5vdyA9IHRpbWUobnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS5ub3cgPSBub3cgKiAxMDAwMDAwLjA7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaGFzIHRoZSB5ZWFyIDIwMzggYnVnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbXRpbWVfcigmbm93LCAmc3RhdGUu
bm93RlRQVGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5u
b3dGVFBUaW1lLnRtX3llYXIgKz0gMTkwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1l
LnRtX3llYXIgPSBzdGF0ZS5ub3dGVFBUaW1lLnRtX3llYXI7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBub3cgPSAoc3RhdGUubm93RlRQVGltZS50bV9tb24gPDwgNCkgKyBz
dGF0ZS5ub3dGVFBUaW1lLnRtX2RheTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG1vZGlmaWVkVGltZSA9IChyZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA8PCA0KSArIHJl
c3VsdC5tb2RpZmllZFRpbWUudG1fbWRheTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vdyA8IG1vZGlmaWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyLS07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSAvKiBnb3QgeWVhciBvciB0aW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICB9
IC8qIGdvdCBtb250aC9tZGF5ICovCisgICAgICAgICAgICAgICAgICAgIH0gLyogbWF5IGhhdmUg
eWVhciBvciB0aW1lICovCisgICAgICAgICAgICAgICAgfSAvKiBlbm91Z2ggcmVtYWluaW5nIHRv
IHBvc3NpYmx5IGhhdmUgZGF0ZS90aW1lICovCisKKyAgICAgICAgICAgICAgICBpZiAobnVtdG9r
cyA+ICh0b2ttYXJrZXIrMikpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbWFya2Vy
KzE7CisgICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbcG9zXTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRva2xlbltwb3NdID09IDIgJiYgKnAgPT0gJy0nICYmIHBbMV0gPT0gJz4nKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwID0gJih0b2tlbnNbbnVtdG9rcy0xXVt0b2tsZW5b
bnVtdG9rcy0xXV0pOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgID0gRlRQ
TGlua0VudHJ5OworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lID0gdG9r
ZW5zW3BvcysxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZUxlbmd0
aCA9IHAgLSByZXN1bHQubGlua25hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0LmxpbmtuYW1lTGVuZ3RoID4gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJl
c3VsdC5saW5rbmFtZVtyZXN1bHQubGlua25hbWVMZW5ndGgtMV0gPT0gJy8nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoLS07CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
IC8qIGlmIChudW10b2tzID4gKHRva21hcmtlcisyKSkgKi8KKworICAgICAgICAgICAgICAgIC8q
IHRoZSBjYWxsZXIgc2hvdWxkIGRvIHRoaXMgKGlmIGRyb3BwaW5nICIuIiBhbmQgIi4uIiBpcyBk
ZXNpcmVkKQorICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBGVFBEaXJlY3Rv
cnlFbnRyeSAmJiByZXN1bHQuZmlsZW5hbWVbMF0gPT0gJy4nICYmCisgICAgICAgICAgICAgICAg
ICAgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAxIHx8IChyZXN1bHQuZmlsZW5hbWVMZW5ndGgg
PT0gMiAmJgorICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZVsxXSA9PSAnLicpKSkK
KyAgICAgICAgICAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OworICAgICAgICAgICAgICAg
ICAgICovCisKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7CisKKyAgICAgICAg
ICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnRCcpICovCisgICAgICAgIH0gLyogaWYgKCFsc3R5bGUg
JiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdEJykpICovCiAjZW5k
aWYKIAotICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrICovCisgICAgICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCiAKLSAgfSAvKiBpZiAobGluZWxl
biA+IDApICovCisgICAgfSAvKiBpZiAobGluZWxlbiA+IDApICovCiAKLSAgcmV0dXJuIFBhcnNp
bmdGYWlsZWQoc3RhdGUpOworICAgIHJldHVybiBQYXJzaW5nRmFpbGVkKHN0YXRlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239613</attachid>
            <date>2014-10-10 03:01:13 -0700</date>
            <delta_ts>2014-10-10 03:50:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137598-20141010120214.patch</filename>
            <type>text/plain</type>
            <size>137620</size>
            <attacher name="Adrien Destugues">pulkomandy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQxNWEyNjRiNDg0YWVm
NjI3ZWZmNDU0OGJhYjMwNTNmZWY3NDVjZS4uMjNkMTgwNzg0ZWFlZGUwOWVhYzFiMmE5M2YzNGFl
MzEwOGE5ODk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTEwLTEwICBBZHJp
ZW4gRGVzdHVndWVzICA8cHVsa29tYW5keUBnbWFpbC5jb20+CisKKyAgICAgICAgU3R5bGUgZml4
ZXMgaW4gRlRQRGlyZWN0b3J5UGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzc1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IG9ubHkgc3R5bGUgZml4ZXMsIG5vIGZ1bmN0
aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXJzaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlT25lRlRQTGluZSk6CisKIDIwMTQtMTAtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBGb250RGF0YSBz
dWJjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3Bw
CmluZGV4IDE1YTc4MTJiZjA3ZGM2YjgwZTczZmRmMGFmMDk5NjU0YjE3NzgwNjcuLmE5MmQwMzVh
MDMxYTA3YzVhMzYwMGY2NTAwYWFlMGU4Y2ZhOWI5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSA8
cHRocmVhZC5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIApAQCAtNDEsMTYzMiArNDEsMTQ0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBpbmxpbmUgRlRQRW50cnlUeXBlIFBhcnNpbmdGYWlsZWQoTGlzdFN0YXRlJiBzdGF0
ZSkKIHsKLSAgaWYgKHN0YXRlLnBhcnNlZE9uZSB8fCBzdGF0ZS5saXN0U3R5bGUpIC8qIGp1bmsg
aWYgd2UgZmFpbCB0byBwYXJzZSAqLwotICAgIHJldHVybiBGVFBKdW5rRW50cnk7ICAgICAgLyog
dGhpcyB0aW1lIGJ1dCBoYWQgcHJldmlvdXNseSBwYXJzZWQgc3VjZXNzZnVsbHkgKi8KLSAgcmV0
dXJuIEZUUE1pc2NFbnRyeTsgICAgICAgIC8qIGl0cyBwYXJ0IG9mIGEgY29tbWVudCBvciBlcnJv
ciBtZXNzYWdlICovCisgICAgaWYgKHN0YXRlLnBhcnNlZE9uZSB8fCBzdGF0ZS5saXN0U3R5bGUp
IC8qIGp1bmsgaWYgd2UgZmFpbCB0byBwYXJzZSAqLworICAgICAgICByZXR1cm4gRlRQSnVua0Vu
dHJ5OyAgICAgIC8qIHRoaXMgdGltZSBidXQgaGFkIHByZXZpb3VzbHkgcGFyc2VkIHN1Y2Vzc2Z1
bGx5ICovCisgICAgcmV0dXJuIEZUUE1pc2NFbnRyeTsgICAgICAgIC8qIGl0cyBwYXJ0IG9mIGEg
Y29tbWVudCBvciBlcnJvciBtZXNzYWdlICovCiB9CiAKIEZUUEVudHJ5VHlwZSBwYXJzZU9uZUZU
UExpbmUoY29uc3QgY2hhciogbGluZSwgTGlzdFN0YXRlJiBzdGF0ZSwgTGlzdFJlc3VsdCYgcmVz
dWx0KQogewotICByZXN1bHQuY2xlYXIoKTsKLSAgICAKLSAgaWYgKCFsaW5lKQotICAgIHJldHVy
biBGVFBKdW5rRW50cnk7Ci0KLSAgc3RhdGUubnVtTGluZXMrKzsKLQotICAvKiBjYXJyeSBidWZm
ZXIgaXMgb25seSB2YWxpZCBmcm9tIG9uZSBsaW5lIHRvIHRoZSBuZXh0ICovCi0gIHVuc2lnbmVk
IGludCBjYXJyeV9idWZfbGVuID0gc3RhdGUuY2FycnlCdWZmZXJMZW5ndGg7Ci0gIHN0YXRlLmNh
cnJ5QnVmZmVyTGVuZ3RoID0gMDsKLQotICB1bnNpZ25lZCBsaW5lbGVuID0gMDsKLQotICAvKiBz
dHJpcCBsZWFkaW5nIHdoaXRlc3BhY2UgKi8KLSAgd2hpbGUgKCpsaW5lID09ICcgJyB8fCAqbGlu
ZSA9PSAnXHQnKQotICAgIGxpbmUrKzsKLSAgCi0gIC8qIGxpbmUgaXMgdGVybWluYXRlZCBhdCBm
aXJzdCAnXDAnIG9yICdcbicgKi8KLSAgY29uc3QgY2hhciogcCA9IGxpbmU7Ci0gIHdoaWxlICgq
cCAmJiAqcCAhPSAnXG4nKQotICAgIHArKzsKLSAgbGluZWxlbiA9IHAgLSBsaW5lOwotCi0gIGlm
IChsaW5lbGVuID4gMCAmJiAqcCA9PSAnXG4nICYmICoocC0xKSA9PSAnXHInKQotICAgIGxpbmVs
ZW4tLTsKLQotICAvKiBET04nVCBzdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqLwotCi0gIGlm
IChsaW5lbGVuID4gMCkKLSAgewotICAgIHN0YXRpYyBjb25zdCBjaGFyICptb250aF9uYW1lcyA9
ICJKYW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMiOwotICAgIGNvbnN0IGNoYXIg
KnRva2Vuc1sxNl07IC8qIDE2IGlzIG1vcmUgdGhhbiBlbm91Z2ggKi8KLSAgICB1bnNpZ25lZCBp
bnQgdG9rbGVuW1dURl9BUlJBWV9MRU5HVEgodG9rZW5zKV07Ci0gICAgdW5zaWduZWQgaW50IGxp
bmVsZW5fc2Fuc193c3A7ICAvLyBsaW5lIGxlbmd0aCBzYW5zIHdoaXRlc3BhY2UKLSAgICB1bnNp
Z25lZCBpbnQgbnVtdG9rcyA9IDA7Ci0gICAgdW5zaWduZWQgaW50IHRva21hcmtlciA9IDA7IC8q
IGV4dHJhIGluZm8gZm9yIGxzdHlsZSBoYW5kbGVyICovCi0gICAgdW5zaWduZWQgaW50IG1vbnRo
X251bSA9IDA7Ci0gICAgY2hhciB0YnVmWzRdOwotICAgIGludCBsc3R5bGUgPSAwOwotCi0gICAg
aWYgKGNhcnJ5X2J1Zl9sZW4pIC8qIFZNUyBsb25nIGZpbGVuYW1lIGNhcnJ5b3ZlciBidWZmZXIg
Ki8KLSAgICB7Ci0gICAgICB0b2tlbnNbMF0gPSBzdGF0ZS5jYXJyeUJ1ZmZlcjsKLSAgICAgIHRv
a2xlblswXSA9IGNhcnJ5X2J1Zl9sZW47Ci0gICAgICBudW10b2tzKys7Ci0gICAgfQotCi0gICAg
dW5zaWduZWQgaW50IHBvcyA9IDA7Ci0gICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgbnVtdG9r
cyA8IFdURl9BUlJBWV9MRU5HVEgodG9rZW5zKSkKLSAgICB7Ci0gICAgICB3aGlsZSAocG9zIDwg
bGluZWxlbiAmJiAKLSAgICAgICAgICAgIChsaW5lW3Bvc10gPT0gJyAnIHx8IGxpbmVbcG9zXSA9
PSAnXHQnIHx8IGxpbmVbcG9zXSA9PSAnXHInKSkKLSAgICAgICAgcG9zKys7Ci0gICAgICBpZiAo
cG9zIDwgbGluZWxlbikKLSAgICAgIHsKLSAgICAgICAgdG9rZW5zW251bXRva3NdID0gJmxpbmVb
cG9zXTsKLSAgICAgICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgCi0gICAgICAgICAgIChsaW5l
W3Bvc10gIT0gJyAnICYmIGxpbmVbcG9zXSAhPSAnXHQnICYmIGxpbmVbcG9zXSAhPSAnXHInKSkK
LSAgICAgICAgICBwb3MrKzsKLSAgICAgICAgaWYgKHRva2Vuc1tudW10b2tzXSAhPSAmbGluZVtw
b3NdKQotICAgICAgICB7Ci0gICAgICAgICAgdG9rbGVuW251bXRva3NdID0gKCZsaW5lW3Bvc10g
LSB0b2tlbnNbbnVtdG9rc10pOwotICAgICAgICAgIG51bXRva3MrKzsgIAorICAgIHJlc3VsdC5j
bGVhcigpOworCisgICAgaWYgKCFsaW5lKQorICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5Owor
CisgICAgc3RhdGUubnVtTGluZXMrKzsKKworICAgIC8qIGNhcnJ5IGJ1ZmZlciBpcyBvbmx5IHZh
bGlkIGZyb20gb25lIGxpbmUgdG8gdGhlIG5leHQgKi8KKyAgICB1bnNpZ25lZCBjYXJyeUJ1Zkxl
bmd0aCA9IHN0YXRlLmNhcnJ5QnVmZmVyTGVuZ3RoOworICAgIHN0YXRlLmNhcnJ5QnVmZmVyTGVu
Z3RoID0gMDsKKworICAgIHVuc2lnbmVkIGxpbmVsZW4gPSAwOworCisgICAgLyogc3RyaXAgbGVh
ZGluZyB3aGl0ZXNwYWNlICovCisgICAgd2hpbGUgKCpsaW5lID09ICcgJyB8fCAqbGluZSA9PSAn
XHQnKQorICAgICAgICBsaW5lKys7CisKKyAgICAvKiBsaW5lIGlzIHRlcm1pbmF0ZWQgYXQgZmly
c3QgJ1wwJyBvciAnXG4nICovCisgICAgY29uc3QgY2hhciogcCA9IGxpbmU7CisgICAgd2hpbGUg
KCpwICYmICpwICE9ICdcbicpCisgICAgICAgIHArKzsKKyAgICBsaW5lbGVuID0gcCAtIGxpbmU7
CisKKyAgICBpZiAobGluZWxlbiA+IDAgJiYgKnAgPT0gJ1xuJyAmJiAqKHAtMSkgPT0gJ1xyJykK
KyAgICAgICAgbGluZWxlbi0tOworCisgICAgLyogRE9OJ1Qgc3RyaXAgdHJhaWxpbmcgd2hpdGVz
cGFjZS4gKi8KKworICAgIGlmIChsaW5lbGVuID4gMCkgeworICAgICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogbW9udGhOYW1lcyA9ICJKYW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMi
OworICAgICAgICBjb25zdCBjaGFyKiB0b2tlbnNbMTZdOyAvKiAxNiBpcyBtb3JlIHRoYW4gZW5v
dWdoICovCisgICAgICAgIHVuc2lnbmVkIHRva2xlbltXVEZfQVJSQVlfTEVOR1RIKHRva2Vucyld
OworICAgICAgICB1bnNpZ25lZCBzdHJpcHBlZExpbmVMZW5ndGg7IC8vIGxpbmUgbGVuZ3RoIHNh
bnMgd2hpdGVzcGFjZQorICAgICAgICB1bnNpZ25lZCBudW10b2tzID0gMDsKKyAgICAgICAgdW5z
aWduZWQgdG9rbWFya2VyID0gMDsgLyogZXh0cmEgaW5mbyBmb3IgbHN0eWxlIGhhbmRsZXIgKi8K
KyAgICAgICAgdW5zaWduZWQgbW9udGhOdW0gPSAwOworICAgICAgICBjaGFyIHRidWZbNF07Cisg
ICAgICAgIGludCBsc3R5bGUgPSAwOworCisgICAgICAgIGlmIChjYXJyeUJ1Zkxlbmd0aCkgeyAv
KiBWTVMgbG9uZyBmaWxlbmFtZSBjYXJyeW92ZXIgYnVmZmVyICovCisgICAgICAgICAgICB0b2tl
bnNbMF0gPSBzdGF0ZS5jYXJyeUJ1ZmZlcjsKKyAgICAgICAgICAgIHRva2xlblswXSA9IGNhcnJ5
QnVmTGVuZ3RoOworICAgICAgICAgICAgbnVtdG9rcysrOwogICAgICAgICB9Ci0gICAgICB9Ci0g
ICAgfSAgICAKLQotICAgIGlmICghbnVtdG9rcykKLSAgICAgIHJldHVybiBQYXJzaW5nRmFpbGVk
KHN0YXRlKTsKLQotICAgIGxpbmVsZW5fc2Fuc193c3AgPSAmKHRva2Vuc1tudW10b2tzLTFdW3Rv
a2xlbltudW10b2tzLTFdXSkgLSB0b2tlbnNbMF07Ci0gICAgaWYgKG51bXRva3MgPT0gV1RGX0FS
UkFZX0xFTkdUSCh0b2tlbnMpKQotICAgIHsKLSAgICAgIHBvcyA9IGxpbmVsZW47Ci0gICAgICB3
aGlsZSAocG9zID4gMCAmJiAobGluZVtwb3MtMV0gPT0gJyAnIHx8IGxpbmVbcG9zLTFdID09ICdc
dCcpKQotICAgICAgICBwb3MtLTsKLSAgICAgIGxpbmVsZW5fc2Fuc193c3AgPSBwb3M7Ci0gICAg
fQotCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysgKi8KLSNpZiBkZWZpbmVkKFNVUFBPUlRfRVBMRikKLSAgICAvKiBFUExG
IGhhbmRsaW5nIG11c3QgY29tZSBzb21ld2hlcmUgYmVmb3JlIC9iaW4vZGxzIGhhbmRsaW5nLiAq
LwotICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHls
ZSA9PSAnRScpKQotICAgIHsKLSAgICAgIGlmICgqbGluZSA9PSAnKycgJiYgbGluZWxlbiA+IDQg
JiYgbnVtdG9rcyA+PSAyKQotICAgICAgewotICAgICAgICBwb3MgPSAxOwotICAgICAgICB3aGls
ZSAocG9zIDwgKGxpbmVsZW4tMSkpCi0gICAgICAgIHsKLSAgICAgICAgICBwID0gJmxpbmVbcG9z
KytdOwotICAgICAgICAgIGlmICgqcCA9PSAnLycpIAotICAgICAgICAgICAgcmVzdWx0LnR5cGUg
PSBGVFBEaXJlY3RvcnlFbnRyeTsgLyogaXRzIGEgZGlyICovCi0gICAgICAgICAgZWxzZSBpZiAo
KnAgPT0gJ3InKQotICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7IC8qIGl0
cyBhIGZpbGUgKi8KLSAgICAgICAgICBlbHNlIGlmICgqcCA9PSAnbScpCi0gICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChsaW5lW3Bvc10pKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgbGluZWxlbiAmJiBpc0FTQ0lJRGlnaXQobGluZVtw
b3NdKSkKLSAgICAgICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICAgICAgaWYgKHBvcyA8IGxp
bmVsZW4gJiYgbGluZVtwb3NdID09ICcsJykKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzZWNvbmRzID0gMDsKLSAgICAgICAgICAgICAgICBzc2Nh
bmYocCArIDEsICIlbGx1IiwgJnNlY29uZHMpOwotICAgICAgICAgICAgICAgIHRpbWVfdCB0ID0g
c3RhdGljX2Nhc3Q8dGltZV90PihzZWNvbmRzKTsKLQotICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGNvZGUgaGFzIHRoZSB5ZWFyIDIwMzggYnVnCi0gICAgICAgICAgICAgICAgZ210aW1l
X3IoJnQsICZyZXN1bHQubW9kaWZpZWRUaW1lKTsKLSAgICAgICAgICAgICAgICByZXN1bHQubW9k
aWZpZWRUaW1lLnRtX3llYXIgKz0gMTkwMDsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmICgqcCA9PSAncycpCi0gICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChsaW5lW3Bvc10pKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgbGluZWxlbiAmJiBpc0FTQ0lJRGlnaXQobGlu
ZVtwb3NdKSkKKworICAgICAgICB1bnNpZ25lZCBwb3MgPSAwOworICAgICAgICB3aGlsZSAocG9z
IDwgbGluZWxlbiAmJiBudW10b2tzIDwgV1RGX0FSUkFZX0xFTkdUSCh0b2tlbnMpKSB7CisgICAg
ICAgICAgICB3aGlsZSAocG9zIDwgbGluZWxlbgorICAgICAgICAgICAgICAgICYmIChsaW5lW3Bv
c10gPT0gJyAnIHx8IGxpbmVbcG9zXSA9PSAnXHQnIHx8IGxpbmVbcG9zXSA9PSAnXHInKSkKICAg
ICAgICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICAgICAgaWYgKHBvcyA8IGxpbmVsZW4gJiYg
bGluZVtwb3NdID09ICcsJykKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJp
bmcocCArIDEsICZsaW5lW3Bvc10gLSBwICsgMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
fQotICAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlBbHBoYSgqcCkpIC8qICdpJy8ndXAnIG9yIHVu
a25vd24gImZhY3QiIChwcm9wZXJ0eSkgKi8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICB3aGls
ZSAocG9zIDwgbGluZWxlbiAmJiAqKytwICE9ICcsJykKLSAgICAgICAgICAgICAgcG9zKys7Ci0g
ICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKCpwICE9ICdcdCcgfHwgKHArMSkgIT0gdG9r
ZW5zWzFdKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGJyZWFrOyAvKiBpdHMgbm90IEVQTEYg
YWZ0ZXIgYWxsICovCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOwotICAgICAgICAgICAgc3RhdGUubGlz
dFN0eWxlID0gbHN0eWxlID0gJ0UnOwotCi0gICAgICAgICAgICBwID0gJihsaW5lW2xpbmVsZW5f
c2Fuc193c3BdKTsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSA9IHRva2Vuc1sxXTsKLSAg
ICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHAgLSB0b2tlbnNbMV07Ci0KLSAgICAg
ICAgICAgIGlmICghcmVzdWx0LnR5cGUpIC8qIGFjY2VzcyBkZW5pZWQgKi8KLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7IC8qIGlzIGFzc3Vt
aW5nICdmJ2lsZSBjb3JyZWN0PyAqLwotICAgICAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5
OyAgICAgICAgICAgIC8qIE5PISBqdW5rIGl0LiAqLworICAgICAgICAgICAgaWYgKHBvcyA8IGxp
bmVsZW4pIHsKKyAgICAgICAgICAgICAgICB0b2tlbnNbbnVtdG9rc10gPSAmbGluZVtwb3NdOwor
ICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCBsaW5lbGVuCisgICAgICAgICAgICAgICAgICAg
ICYmIChsaW5lW3Bvc10gIT0gJyAnICYmIGxpbmVbcG9zXSAhPSAnXHQnICYmIGxpbmVbcG9zXSAh
PSAnXHInKSkKKyAgICAgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgaWYg
KHRva2Vuc1tudW10b2tzXSAhPSAmbGluZVtwb3NdKSB7CisgICAgICAgICAgICAgICAgICAgIHRv
a2xlbltudW10b2tzXSA9ICgmbGluZVtwb3NdIC0gdG9rZW5zW251bXRva3NdKTsKKyAgICAgICAg
ICAgICAgICAgICAgbnVtdG9rcysrOyAgCisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOwotICAgICAgICAgIH0KLSAgICAgICAg
ICBpZiAocG9zID49IChsaW5lbGVuLTEpIHx8IGxpbmVbcG9zXSAhPSAnLCcpCi0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICBwb3MrKzsKLSAgICAgICAgfSAvKiB3aGlsZSAocG9zIDwgbGlu
ZWxlbikgKi8KLSAgICAgICAgcmVzdWx0LmNsZWFyKCk7Ci0gICAgICB9IC8qIGlmICgqbGluZSA9
PSAnKycgJiYgbGluZWxlbiA+IDQgJiYgbnVtdG9rcyA+PSAyKSAqLwotICAgIH0gLyogaWYgKCFs
c3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdFJykpICov
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW51bXRva3MpCisgICAgICAgICAgICByZXR1cm4g
UGFyc2luZ0ZhaWxlZChzdGF0ZSk7CisKKyAgICAgICAgc3RyaXBwZWRMaW5lTGVuZ3RoID0gJih0
b2tlbnNbbnVtdG9rcy0xXVt0b2tsZW5bbnVtdG9rcy0xXV0pIC0gdG9rZW5zWzBdOworICAgICAg
ICBpZiAobnVtdG9rcyA9PSBXVEZfQVJSQVlfTEVOR1RIKHRva2VucykpIHsKKyAgICAgICAgICAg
IHBvcyA9IGxpbmVsZW47CisgICAgICAgICAgICB3aGlsZSAocG9zID4gMCAmJiAobGluZVtwb3Mt
MV0gPT0gJyAnIHx8IGxpbmVbcG9zLTFdID09ICdcdCcpKQorICAgICAgICAgICAgICAgIHBvcy0t
OworICAgICAgICAgICAgc3RyaXBwZWRMaW5lTGVuZ3RoID0gcG9zOworICAgICAgICB9CisKKyAg
ICAgICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysgKi8KKyNpZiBkZWZpbmVkKFNVUFBPUlRfRVBMRikKKyAgICAgICAgLyogRVBM
RiBoYW5kbGluZyBtdXN0IGNvbWUgc29tZXdoZXJlIGJlZm9yZSAvYmluL2RscyBoYW5kbGluZy4g
Ki8KKyAgICAgICAgaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlz
dFN0eWxlID09ICdFJykpIHsKKyAgICAgICAgICAgIGlmICgqbGluZSA9PSAnKycgJiYgbGluZWxl
biA+IDQgJiYgbnVtdG9rcyA+PSAyKSB7CisgICAgICAgICAgICAgICAgcG9zID0gMTsKKyAgICAg
ICAgICAgICAgICB3aGlsZSAocG9zIDwgKGxpbmVsZW4tMSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcCA9ICZsaW5lW3BvcysrXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpwID09ICcvJykg
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUERpcmVjdG9yeUVudHJ5
OyAvKiBpdHMgYSBkaXIgKi8KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnAgPT0gJ3In
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7IC8q
IGl0cyBhIGZpbGUgKi8KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnAgPT0gJ20nKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KGxpbmVbcG9zXSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgbGluZWxlbiAmJiBpc0FT
Q0lJRGlnaXQobGluZVtwb3NdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9z
Kys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA8IGxpbmVsZW4gJiYgbGlu
ZVtwb3NdID09ICcsJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgc2Vjb25kcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNzY2FuZihwICsgMSwgIiVsbHUiLCAmc2Vjb25kcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVfdCB0ID0gc3RhdGljX2Nhc3Q8dGltZV90PihzZWNvbmRzKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGhhcyB0aGUg
eWVhciAyMDM4IGJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbXRpbWVfcigm
dCwgJnJlc3VsdC5tb2RpZmllZFRpbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgKz0gMTkwMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoKnAgPT0gJ3MnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aXNBU0NJSURpZ2l0KGxpbmVbcG9zXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAocG9zIDwgbGluZWxlbiAmJiBpc0FTQ0lJRGlnaXQobGluZVtwb3NdKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHBvcyA8IGxpbmVsZW4gJiYgbGluZVtwb3NdID09ICcsJykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVTaXplID0gU3RyaW5nKHAgKyAxLCAmbGluZVtw
b3NdIC0gcCArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGlzQVNDSUlBbHBoYSgqcCkpIHsgLyogJ2knLyd1cCcgb3IgdW5rbm93
biAiZmFjdCIgKHByb3BlcnR5KSAqLworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBv
cyA8IGxpbmVsZW4gJiYgKisrcCAhPSAnLCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG9zKys7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKnAgIT0gJ1x0JyB8fCAocCsx
KSAhPSB0b2tlbnNbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogaXRzIG5v
dCBFUExGIGFmdGVyIGFsbCAqLworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGUgPSAnRSc7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHAgPSAmKGxpbmVbc3RyaXBwZWRMaW5lTGVuZ3RoXSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMV07CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGggPSBwIC0gdG9rZW5zWzFdOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC50eXBlKSB7IC8qIGFjY2VzcyBkZW5pZWQgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUEZpbGVFbnRyeTsg
LyogaXMgYXNzdW1pbmcgJ2YnaWxlIGNvcnJlY3Q/ICovCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsgICAgICAgICAgICAvKiBOTyEganVuayBpdC4gKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQudHlwZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAocG9zID49IChsaW5lbGVuLTEpIHx8IGxpbmVbcG9zXSAhPSAnLCcpCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAg
ICAgICAgICAgfSAvKiB3aGlsZSAocG9zIDwgbGluZWxlbikgKi8KKyAgICAgICAgICAgICAgICBy
ZXN1bHQuY2xlYXIoKTsKKyAgICAgICAgICAgIH0gLyogaWYgKCpsaW5lID09ICcrJyAmJiBsaW5l
bGVuID4gNCAmJiBudW10b2tzID49IDIpICovCisgICAgICAgIH0gLyogaWYgKCFsc3R5bGUgJiYg
KCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdFJykpICovCiAjZW5kaWYg
LyogU1VQUE9SVF9FUExGICovCiAKLSAgICAvKiArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAqLworICAgICAgICAvKiArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAqLwogCiAj
aWYgZGVmaW5lZChTVVBQT1JUX1ZNUykKLSAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RT
dHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1YnKSkKLSAgICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cnkgVk1TIE11bHRpbmV0L1VDWC9DTVMgc2VydmVyICovCi0gICAgICAvKgot
ICAgICAgICogTGVnYWwgY2hhcmFjdGVycyBpbiBhIFZNUyBmaWxlL2RpciBzcGVjIGFyZSBbQS1a
MC05JC4tX35dLgotICAgICAgICogJyQnIGNhbm5vdCBiZWdpbiBhIGZpbGVuYW1lIGFuZCBgLScg
Y2Fubm90IGJlIHVzZWQgYXMgdGhlIGZpcnN0IAotICAgICAgICogb3IgbGFzdCBjaGFyYWN0ZXIu
ICcuJyBpcyBvbmx5IHZhbGlkIGFzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciAKLSAgICAgICAqIGFu
ZCA8ZmlsZT4uPHR5cGU+IHNlcGFyYXRvci4gQSBjYW5vbmljYWwgZmlsZW5hbWUgc3BlYyBtaWdo
dCBsb29rIAotICAgICAgICogbGlrZSB0aGlzOiBESVNLJFZPTDpbRElSMS5ESVIyLkRJUjNdRklM
RS5UWVBFOzEyMwotICAgICAgICogQWxsIFZNUyBGVFAgc2VydmVycyBMSVNUIGluIHVwcGVyY2Fz
ZS4KLSAgICAgICAqCi0gICAgICAgKiBXZSBuZWVkIHRvIGJlIHBpY2t5IGFib3V0IHRoaXMgaW4g
b3JkZXIgdG8gc3VwcG9ydAotICAgICAgICogbXVsdGktbGluZSBsaXN0aW5ncyBjb3JyZWN0bHku
Ci0gICAgICAqLwotICAgICAgaWYgKCFzdGF0ZS5wYXJzZWRPbmUgJiYKLSAgICAgICAgICAobnVt
dG9rcyA9PSAxIHx8IChudW10b2tzID09IDIgJiYgdG9rbGVuWzBdID09IDkgJiYKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZW1jbXAodG9rZW5zWzBdLCAiRGlyZWN0b3J5IiwgOSk9PTAg
KSkpCi0gICAgICB7Ci0gICAgICAgIC8qIElmIG5vIGRpcnN0eWxlIGhhcyBiZWVuIGRldGVjdGVk
IHlldCwgYW5kIHRoaXMgbGluZSBpcyBhIAotICAgICAgICAgKiBWTVMgbGlzdCdzIGRpcm5hbWUs
IHRoZW4gdHVybiBvbiBWTVMgZGlyc3R5bGUuCi0gICAgICAgICAqIGVnICJBQ0E6W0FOT05ZTU9V
U10iLCAiRElTSyRGVFA6W0FOT05ZTU9VU10iLCAiU1lTJEFOT05GVFA6IiAKLSAgICAgICAgKi8K
LSAgICAgICAgcCA9IHRva2Vuc1swXTsKLSAgICAgICAgcG9zID0gdG9rbGVuWzBdOwotICAgICAg
ICBpZiAobnVtdG9rcyA9PSAyKQotICAgICAgICB7Ci0gICAgICAgICAgcCA9IHRva2Vuc1sxXTsK
LSAgICAgICAgICBwb3MgPSB0b2tsZW5bMV07Ci0gICAgICAgIH0KLSAgICAgICAgcG9zLS07Ci0g
ICAgICAgIGlmIChwb3MgPj0gMykKLSAgICAgICAgewotICAgICAgICAgIHdoaWxlIChwb3MgPiAw
ICYmIHBbcG9zXSAhPSAnWycpCi0gICAgICAgICAgewotICAgICAgICAgICAgcG9zLS07Ci0gICAg
ICAgICAgICBpZiAocFtwb3NdID09ICctJyB8fCBwW3Bvc10gPT0gJyQnKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICBpZiAocG9zID09IDAgfHwgcFtwb3MtMV0gPT0gJ1snIHx8IHBbcG9z
LTFdID09ICcuJyB8fAotICAgICAgICAgICAgICAgICAgKHBbcG9zXSA9PSAnLScgJiYgKHBbcG9z
KzFdID09ICddJyB8fCBwW3BvcysxXSA9PSAnLicpKSkKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHBbcG9zXSAhPSAnLicgJiYgcFtw
b3NdICE9ICd+JyAmJiAKLSAgICAgICAgICAgICAgICAgICAgICFpc0FTQ0lJRGlnaXQocFtwb3Nd
KSAmJiAhaXNBU0NJSUFscGhhKHBbcG9zXSkpCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgZWxzZSBpZiAoaXNBU0NJSUFscGhhKHBbcG9zXSkgJiYgcFtwb3NdICE9IHRvQVNDSUlV
cHBlcihwW3Bvc10pKQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgaWYgKHBvcyA+IDApCi0gICAgICAgICAgewotICAgICAgICAgICAgcG9zLS07Ci0gICAgICAg
ICAgICBpZiAocFtwb3NdICE9ICc6JyB8fCBwW3BvcysxXSAhPSAnWycpCi0gICAgICAgICAgICAg
IHBvcyA9IDA7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwb3MgPiAwICYm
IHBbcG9zXSA9PSAnOicpCi0gICAgICAgIHsKLSAgICAgICAgICB3aGlsZSAocG9zID4gMCkKLSAg
ICAgICAgICB7Ci0gICAgICAgICAgICBwb3MtLTsKLSAgICAgICAgICAgIGlmIChwW3Bvc10gIT0g
JyQnICYmIHBbcG9zXSAhPSAnXycgJiYgcFtwb3NdICE9ICctJyAmJgotICAgICAgICAgICAgICAg
IHBbcG9zXSAhPSAnficgJiYgIWlzQVNDSUlEaWdpdChwW3Bvc10pICYmICFpc0FTQ0lJQWxwaGEo
cFtwb3NdKSkKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0FT
Q0lJQWxwaGEocFtwb3NdKSAmJiBwW3Bvc10gIT0gdG9BU0NJSVVwcGVyKHBbcG9zXSkpCi0gICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocG9zID09IDApCi0g
ICAgICAgICAgeyAgCi0gICAgICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSAnVic7Ci0gICAgICAg
ICAgICByZXR1cm4gRlRQSnVua0VudHJ5OyAvKiBpdHMganVuayAqLwotICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLyAKLSAgICAgIH0KLSAgICAgIGVsc2Ug
aWYgKCh0b2tlbnNbMF1bdG9rbGVuWzBdLTFdKSAhPSAnOycpCi0gICAgICB7Ci0gICAgICAgIGlm
IChudW10b2tzID09IDEgJiYgKHN0YXRlLmxpc3RTdHlsZSA9PSAnVicgJiYgIWNhcnJ5X2J1Zl9s
ZW4pKQotICAgICAgICAgIGxzdHlsZSA9ICdWJzsKLSAgICAgICAgZWxzZSBpZiAobnVtdG9rcyA8
IDQpCi0gICAgICAgICAgOwotICAgICAgICBlbHNlIGlmICh0b2tsZW5bMV0gPj0gMTAgJiYgbWVt
Y21wKHRva2Vuc1sxXSwgIiVSTVMtRS1QUlYiLCAxMCkgPT0gMCkKLSAgICAgICAgICBsc3R5bGUg
PSAnVic7Ci0gICAgICAgIGVsc2UgaWYgKCgmbGluZVtsaW5lbGVuXSAtIHRva2Vuc1sxXSkgPj0g
MjIgJiYKLSAgICAgICAgICAgICAgICAgIG1lbWNtcCh0b2tlbnNbMV0sICJpbnN1ZmZpY2llbnQg
cHJpdmlsZWdlIiwgMjIpID09IDApCi0gICAgICAgICAgbHN0eWxlID0gJ1YnOwotICAgICAgICBl
bHNlIGlmIChudW10b2tzICE9IDQgJiYgbnVtdG9rcyAhPSA2KQotICAgICAgICAgIDsKLSAgICAg
ICAgZWxzZSBpZiAobnVtdG9rcyA9PSA2ICYmICgKLSAgICAgICAgICAgICAgICAgdG9rbGVuWzVd
IDwgNCB8fCAqdG9rZW5zWzVdICE9ICcoJyB8fCAgICAgICAgLyogcGVybXMgKi8KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0b2tlbnNbNV1bdG9rbGVuWzVdLTFdKSAhPSAnKScgICkpCi0g
ICAgICAgICAgOwotICAgICAgICBlbHNlIGlmICggICh0b2tsZW5bMl0gPT0gMTAgfHwgdG9rbGVu
WzJdID09IDExKSAmJiAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgKHRva2Vuc1syXVt0
b2tsZW5bMl0tNV0pID09ICctJyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKHRva2Vuc1sy
XVt0b2tsZW5bMl0tOV0pID09ICctJyAmJgotICAgICAgICAoKCh0b2tsZW5bM109PTQgfHwgdG9r
bGVuWzNdPT01IHx8IHRva2xlblszXT09NyB8fCB0b2tsZW5bM109PTgpICYmCi0gICAgICAgICAg
ICAgICAgICAgICAgICAodG9rZW5zWzNdW3Rva2xlblszXS0zXSkgPT0gJzonICkgfHwKLSAgICAg
ICAgICgodG9rbGVuWzNdPT0xMCB8fCB0b2tsZW5bM109PTExICkgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAgICh0b2tlbnNbM11bdG9rbGVuWzNdLTNdKSA9PSAnLicgKQotICAgICAgICApICYm
ICAvKiB0aW1lIGluIFtIXUg6TU1bOlNTWy5DQ11dIGZvcm1hdCAqLwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pICYmIC8qIHNpemUg
Ki8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVNDSUlEaWdpdCgqdG9r
ZW5zWzJdKSAmJiAvKiBkYXRlICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc0FTQ0lJRGlnaXQoKnRva2Vuc1szXSkgICAgLyogdGltZSAqLwotICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgewotICAgICAgICAgIGxzdHlsZSA9ICdWJzsKLSAgICAgICAgfQotICAgICAg
ICBpZiAobHN0eWxlID09ICdWJykKLSAgICAgICAgewotICAgICAgICAgIC8qIAotICAgICAgICAg
ICogTXVsdGlOZXQgRlRQOgotICAgICAgICAgICogICBMT0dJTi5DT007MiAgICAgICAgICAgICAg
ICAgMSAgIDQtTk9WLTE5OTQgMDQ6MDkgW0FOT05ZTU9VU10gKFJXRSxSV0UsLCkKLSAgICAgICAg
ICAqICAgUFVCLkRJUjsxICAgICAgICAgICAgICAgICAgIDEgIDI3LUpBTi0xOTk0IDE0OjQ2IFtB
Tk9OWU1PVVNdIChSV0UsUldFLFJFLFJXRSkKLSAgICAgICAgICAqICAgUkVBRE1FLkZUUDsxICAg
ICAgICAlUk1TLUUtUFJWLCBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlIG9yIGZpbGUgcHJvdGVjdGlv
biB2aW9sYXRpb24KLSAgICAgICAgICAqICAgUk9VU1NPUy5ESVI7MSAgICAgICAgICAgICAgIDEg
IDI3LUpBTi0xOTk0IDE0OjQ4IFtDUyxST1VTU09TXSAoUldFLFJXRSxSRSxSKQotICAgICAgICAg
ICogICBTNjctNTA5MDMuSlBHOzEgICAgICAgICAgIDMyOCAgMjItU0VQLTE5OTggMTY6MTkgW0FO
T05ZTU9VU10gKFJXRUQsUldFRCwsKQotICAgICAgICAgICogVUNYIEZUUDogCi0gICAgICAgICAg
KiAgIENJSS1NQU5VQUwuVEVYOzEgIDIxMy8yMTYgIDI5LUpBTi0xOTk2IDAzOjMzOjEyICBbQU5P
TllNT1UsQU5PTllNT1VTXSAoUldFRCxSV0VELCwpCi0gICAgICAgICAgKiBDTVUvVk1TLUlQIEZU
UAotICAgICAgICAgICogICBbVk1TU0VSVi5GSUxFU11BTEFSTS5ESVI7MSAxLzMgNS1NQVItMTk5
MyAxODowOQotICAgICAgICAgICogVENQd2FyZSBGVFAKLSAgICAgICAgICAqICAgRk9PLkJBUjsx
IDQgNS1NQVItMTk5MyAxODowOTowMS4xMgotICAgICAgICAgICogTG9uZyBmaWxlbmFtZSBleGFt
cGxlOgotICAgICAgICAgICogICBUSElTLUlTLUEtTE9ORy1WTVMtRklMRU5BTUUuQU5ELVRISVMt
SVMtQS1MT05HLVZNUy1GSUxFVFlQRVxyXG4KLSAgICAgICAgICAqICAgICAgICAgICAgICAgICAg
ICAyMTNbL25ubl0gIDI5LUpBTi0xOTk2IDAzOjMzWzpubl0gIFtBTk9OWU1PVSxBTk9OWU1PVVNd
IChSV0VELFJXRUQsLCkKLSAgICAgICAgICAqLwotICAgICAgICAgIHRva21hcmtlciA9IDA7Ci0g
ICAgICAgICAgcCA9IHRva2Vuc1swXTsKLSAgICAgICAgICBwb3MgPSAwOwotICAgICAgICAgIGlm
ICgqcCA9PSAnWycgJiYgdG9rbGVuWzBdID49IDQpIC8qIENNVSBzdHlsZSAqLwotICAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChwWzFdICE9ICddJykgCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgIHArKzsKLSAgICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB3aGlsZSAobHN0eWxlICYmIHBvcyA8IHRva2xlblswXSAmJiAqcCAhPSAnXScpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmICgqcCAhPSAnJCcgJiYgKnAgIT0gJy4nICYmICpw
ICE9ICdfJyAmJiAqcCAhPSAnLScgJiYKLSAgICAgICAgICAgICAgICAgICpwICE9ICd+JyAmJiAh
aXNBU0NJSURpZ2l0KCpwKSAmJiAhaXNBU0NJSUFscGhhKCpwKSkgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICAgIHBvcysrOwotICAgICAgICAg
ICAgICBwKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobHN0eWxlICYmIHBvcyA8
ICh0b2tsZW5bMF0tMSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8qICddJyB3YXMg
Zm91bmQgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgYWZ0ZXIgaXQgKi8KLSAg
ICAgICAgICAgICAgQVNTRVJUKCpwID09ICddJyk7Ci0gICAgICAgICAgICAgIHBvcysrOwotICAg
ICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICAgIHRva21hcmtlciA9IHBvczsgLyogbGVuZ3Ro
IG9mIGxlYWRpbmcgIltESVIxLkRJUjIuZXRjXSIgKi8KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgIC8qIG5vdCBhIENNVSBzdHlsZSBsaXN0aW5nICovCi0gICAgICAgICAgICAg
IGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIHdoaWxl
IChsc3R5bGUgJiYgcG9zIDwgdG9rbGVuWzBdICYmICpwICE9ICc7JykKLSAgICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoKnAgIT0gJyQnICYmICpwICE9ICcuJyAmJiAqcCAhPSAnXycgJiYgKnAg
IT0gJy0nICYmCi0gICAgICAgICAgICAgICAgKnAgIT0gJ34nICYmICFpc0FTQ0lJRGlnaXQoKnAp
ICYmICFpc0FTQ0lJQWxwaGEoKnApKQotICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAg
ICAgICAgZWxzZSBpZiAoaXNBU0NJSUFscGhhKCpwKSAmJiAqcCAhPSB0b0FTQ0lJVXBwZXIoKnAp
KQotICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgcCsrOwotICAgICAgICAg
ICAgcG9zKys7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChsc3R5bGUgJiYgKnAgPT0gJzsn
KQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChwb3MgPT0gMCB8fCBwb3MgPT0gKHRva2xl
blswXS0xKSkKLSAgICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgICAgIGZvciAocG9z
Kys7bHN0eWxlICYmIHBvcyA8IHRva2xlblswXTtwb3MrKykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQodG9rZW5zWzBdW3Bvc10pKQotICAgICAgICAgICAg
ICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIHBv
cyA9IChwIC0gdG9rZW5zWzBdKTsgLyogPT4gZm5sZW5ndGggc2FucyAiOyMjIyMiICovCi0gICAg
ICAgICAgcG9zIC09IHRva21hcmtlcjsgICAgICAvKiA9PiBmbmxlbmd0aCBzYW5zICJbRElSMS5E
SVIyLmV0Y10iICovCi0gICAgICAgICAgcCA9ICYodG9rZW5zWzBdW3Rva21hcmtlcl0pOyAvKiBv
ZmZzZXQgb2YgYmFzZW5hbWUgKi8KLQotICAgICAgICAgIGlmICghbHN0eWxlIHx8IHBvcyA9PSAw
IHx8IHBvcyA+IDgwKSAvKiBWTVMgZmlsZW5hbWVzIGNhbid0IGJlIGxvbmdlciB0aGFuIHRoYXQg
Ki8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIGlmIChudW10b2tzID09IDEpCi0gICAgICAgICAgeyAKLSAgICAgICAgICAg
IC8qIGlmIFZNUyBoYXMgYmVlbiBkZXRlY3RlZCBhbmQgdGhlcmUgaXMgb25seSBvbmUgdG9rZW4g
YW5kIHRoYXQgCi0gICAgICAgICAgICAgKiB0b2tlbiB3YXMgYSBWTVMgZmlsZW5hbWUgdGhlbiB0
aGlzIGlzIGEgbXVsdGlsaW5lIFZNUyBMSVNUIGVudHJ5LgotICAgICAgICAgICAgKi8KLSAgICAg
ICAgICAgIGlmIChwb3MgPj0gKHNpemVvZihzdGF0ZS5jYXJyeUJ1ZmZlciktMSkpCi0gICAgICAg
ICAgICAgIHBvcyA9IChzaXplb2Yoc3RhdGUuY2FycnlCdWZmZXIpLTEpOyAvKiBzaG91bGRuJ3Qg
aGFwcGVuICovCi0gICAgICAgICAgICBtZW1jcHkoIHN0YXRlLmNhcnJ5QnVmZmVyLCBwLCBwb3Mg
KTsKLSAgICAgICAgICAgIHN0YXRlLmNhcnJ5QnVmZmVyTGVuZ3RoID0gcG9zOwotICAgICAgICAg
ICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsgLyogdGVsbCBjYWxsZXIgdG8gdHJlYXQgYXMganVuayAq
LwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChpc0FTQ0lJRGlnaXQoKnRva2Vuc1sx
XSkpIC8qIG5vdCBuby1wcml2cyBtZXNzYWdlICovCi0gICAgICAgICAgewotICAgICAgICAgICAg
Zm9yIChwb3MgPSAwOyBsc3R5bGUgJiYgcG9zIDwgKHRva2xlblsxXSk7IHBvcysrKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgodG9rZW5zWzFdW3Bvc10p
KSAmJiAodG9rZW5zWzFdW3Bvc10pICE9ICcvJykKLSAgICAgICAgICAgICAgICBsc3R5bGUgPSAw
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxzdHlsZSAmJiBudW10b2tzID4gNCkg
LyogTXVsdGluZXQgb3IgVUNYIGJ1dCBub3QgQ01VICovCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgIGZvciAocG9zID0gMTsgbHN0eWxlICYmIHBvcyA8ICh0b2tsZW5bNV0tMSk7IHBvcysr
KQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcCA9ICYodG9rZW5zWzVdW3Bvc10p
OwotICAgICAgICAgICAgICAgIGlmICgqcCE9J1InICYmICpwIT0nVycgJiYgKnAhPSdFJyAmJiAq
cCE9J0QnICYmICpwIT0nLCcpCi0gICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9IC8qIHBhc3Nl
ZCBpbml0aWFsIHRlc3RzICovCi0gICAgICB9IC8qIGVsc2UgaWYgKCh0b2tlbnNbMF1bdG9rbGVu
WzBdLTFdKSAhPSAnOycpICovICAgIAotCi0gICAgICBpZiAobHN0eWxlID09ICdWJykKLSAgICAg
IHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKLSAgICAgICAgc3RhdGUubGlzdFN0
eWxlID0gbHN0eWxlOwotCi0gICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKnRva2Vuc1sxXSkpICAv
KiBub3QgcGVybWlzc2lvbiBkZW5pZWQgZXRjICovCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBz
dHJpcCBsZWFkaW5nIGRpcmVjdG9yeSBuYW1lICovCi0gICAgICAgICAgaWYgKCp0b2tlbnNbMF0g
PT0gJ1snKSAvKiBDTVUgc2VydmVyICovCi0gICAgICAgICAgewotICAgICAgICAgICAgcG9zID0g
dG9rbGVuWzBdLTE7Ci0gICAgICAgICAgICBwID0gdG9rZW5zWzBdKzE7Ci0gICAgICAgICAgICB3
aGlsZSAoKnAgIT0gJ10nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBwKys7Ci0gICAg
ICAgICAgICAgIHBvcy0tOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rbGVuWzBdID0g
LS1wb3M7Ci0gICAgICAgICAgICB0b2tlbnNbMF0gPSArK3A7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIHBvcyA9IDA7Ci0gICAgICAgICAgd2hpbGUgKHBvcyA8IHRva2xlblswXSAmJiAodG9rZW5z
WzBdW3Bvc10pICE9ICc7JykKLSAgICAgICAgICAgIHBvcysrOwotICAgICAgIAotICAgICAgICAg
IHJlc3VsdC5jYXNlU2Vuc2l0aXZlID0gdHJ1ZTsKLSAgICAgICAgICByZXN1bHQudHlwZSA9IEZU
UEZpbGVFbnRyeTsKLSAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMF07Ci0gICAg
ICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcG9zOwotCi0gICAgICAgICAgaWYgKHBvcyA+
IDQpCi0gICAgICAgICAgewotICAgICAgICAgICAgcCA9ICYodG9rZW5zWzBdW3Bvcy00XSk7Ci0g
ICAgICAgICAgICBpZiAocFswXSA9PSAnLicgJiYgcFsxXSA9PSAnRCcgJiYgcFsyXSA9PSAnSScg
JiYgcFszXSA9PSAnUicpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJlc3VsdC5maWxl
bmFtZUxlbmd0aCAtPSA0OwotICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUERpcmVjdG9y
eUVudHJ5OwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChyZXN1
bHQudHlwZSAhPSBGVFBEaXJlY3RvcnlFbnRyeSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAv
KiAjIyMjIG9yIHVzZWQvYWxsb2NhdGVkIGZvcm0uIElmIHVzZWQvYWxsb2NhdGVkIGZvcm0sIHRo
ZW4KLSAgICAgICAgICAgICAqICd1c2VkJyBpcyB0aGUgc2l6ZSBpbiBieXRlcyBpZiBhbmQgb25s
eSBpZiAndXNlZCc8PWFsbG9jYXRlZC4KLSAgICAgICAgICAgICAqIElmICd1c2VkJyBpcyBzaXpl
IGluIGJ5dGVzIHRoZW4gaXQgY2FuIGJlID4gMl4zMgotICAgICAgICAgICAgICogSWYgJ3VzZWQn
IGlzIG5vdCBzaXplIGluIGJ5dGVzIHRoZW4gaXQgaXMgc2l6ZSBpbiBibG9ja3MuCi0gICAgICAg
ICAgICAqLwotICAgICAgICAgICAgcG9zID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChwb3MgPCB0
b2tsZW5bMV0gJiYgKHRva2Vuc1sxXVtwb3NdKSAhPSAnLycpCi0gICAgICAgICAgICAgIHBvcysr
OwotICAgICAgICAgICAgCi0vKgotICogSSd2ZSBuZXZlciBzZWVuIHNpemUgY29tZSBiYWNrIGlu
IGJ5dGVzLCBpdHMgYWx3YXlzIGluIGJsb2NrcywgYW5kIAotICogdGhlIGZvbGxvd2luZyB0ZXN0
IGZhaWxzLiBTbywgYWx3YXlzIHBlcmZvcm0gdGhlICJzaXplIGluIGJsb2NrcyIuCi0gKiBJJ20g
bGVhdmluZyB0aGUgInNpemUgaW4gYnl0ZXMiIGNvZGUgaWYnZCBvdXQgaW4gY2FzZSB3ZSBldmVy
IG5lZWQKLSAqIHRvIHJlLWluc3RhdGUgaXQuCi0qLworICAgICAgICBpZiAoIWxzdHlsZSAmJiAo
IXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1YnKSkgeworICAgICAgICAg
ICAgLyogdHJ5IFZNUyBNdWx0aW5ldC9VQ1gvQ01TIHNlcnZlciAqLworICAgICAgICAgICAgLyoK
KyAgICAgICAgICAgICAqIExlZ2FsIGNoYXJhY3RlcnMgaW4gYSBWTVMgZmlsZS9kaXIgc3BlYyBh
cmUgW0EtWjAtOSQuLV9+XS4KKyAgICAgICAgICAgICAqICckJyBjYW5ub3QgYmVnaW4gYSBmaWxl
bmFtZSBhbmQgYC0nIGNhbm5vdCBiZSB1c2VkIGFzIHRoZSBmaXJzdCAKKyAgICAgICAgICAgICAq
IG9yIGxhc3QgY2hhcmFjdGVyLiAnLicgaXMgb25seSB2YWxpZCBhcyBhIGRpcmVjdG9yeSBzZXBh
cmF0b3IgCisgICAgICAgICAgICAgKiBhbmQgPGZpbGU+Ljx0eXBlPiBzZXBhcmF0b3IuIEEgY2Fu
b25pY2FsIGZpbGVuYW1lIHNwZWMgbWlnaHQgbG9vayAKKyAgICAgICAgICAgICAqIGxpa2UgdGhp
czogRElTSyRWT0w6W0RJUjEuRElSMi5ESVIzXUZJTEUuVFlQRTsxMjMKKyAgICAgICAgICAgICAq
IEFsbCBWTVMgRlRQIHNlcnZlcnMgTElTVCBpbiB1cHBlcmNhc2UuCisgICAgICAgICAgICAgKgor
ICAgICAgICAgICAgICogV2UgbmVlZCB0byBiZSBwaWNreSBhYm91dCB0aGlzIGluIG9yZGVyIHRv
IHN1cHBvcnQKKyAgICAgICAgICAgICAqIG11bHRpLWxpbmUgbGlzdGluZ3MgY29ycmVjdGx5Lgor
ICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIXN0YXRlLnBhcnNlZE9uZQorICAgICAg
ICAgICAgICAgICYmIChudW10b2tzID09IDEgfHwgKG51bXRva3MgPT0gMiAmJiB0b2tsZW5bMF0g
PT0gOQorICAgICAgICAgICAgICAgICYmICFtZW1jbXAodG9rZW5zWzBdLCAiRGlyZWN0b3J5Iiwg
OSkpKSkgeworICAgICAgICAgICAgICAgIC8qIElmIG5vIGRpcnN0eWxlIGhhcyBiZWVuIGRldGVj
dGVkIHlldCwgYW5kIHRoaXMgbGluZSBpcyBhIAorICAgICAgICAgICAgICAgICAqIFZNUyBsaXN0
J3MgZGlybmFtZSwgdGhlbiB0dXJuIG9uIFZNUyBkaXJzdHlsZS4KKyAgICAgICAgICAgICAgICAg
KiBlZyAiQUNBOltBTk9OWU1PVVNdIiwgIkRJU0skRlRQOltBTk9OWU1PVVNdIiwgIlNZUyRBTk9O
RlRQOiIgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1sw
XTsKKyAgICAgICAgICAgICAgICBwb3MgPSB0b2tsZW5bMF07CisgICAgICAgICAgICAgICAgaWYg
KG51bXRva3MgPT0gMikgeworICAgICAgICAgICAgICAgICAgICBwID0gdG9rZW5zWzFdOworICAg
ICAgICAgICAgICAgICAgICBwb3MgPSB0b2tsZW5bMV07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHBvcy0tOworICAgICAgICAgICAgICAgIGlmIChwb3MgPj0gMykgeworICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAocG9zID4gMCAmJiBwW3Bvc10gIT0gJ1snKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw
W3Bvc10gPT0gJy0nIHx8IHBbcG9zXSA9PSAnJCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXBvcyB8fCBwW3Bvcy0xXSA9PSAnWycgfHwgcFtwb3MtMV0gPT0gJy4nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwW3Bvc10gPT0gJy0nICYmIChwW3Bvcysx
XSA9PSAnXScgfHwgcFtwb3MrMV0gPT0gJy4nKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwW3Bvc10g
IT0gJy4nICYmIHBbcG9zXSAhPSAnficKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAh
aXNBU0NJSURpZ2l0KHBbcG9zXSkgJiYgIWlzQVNDSUlBbHBoYShwW3Bvc10pKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaXNBU0NJSUFscGhhKHBbcG9zXSkgJiYgcFtwb3NdICE9IHRvQVNDSUlVcHBlcihwW3Bvc10p
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPiAwKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwW3Bvc10gIT0gJzon
IHx8IHBbcG9zKzFdICE9ICdbJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSAw
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChwb3MgPiAwICYmIHBbcG9zXSA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKHBvcyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcy0tOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBbcG9zXSAhPSAnJCcgJiYgcFtwb3NdICE9ICdfJyAmJiBw
W3Bvc10gIT0gJy0nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcFtwb3NdICE9ICd+
JyAmJiAhaXNBU0NJSURpZ2l0KHBbcG9zXSkgJiYgIWlzQVNDSUlBbHBoYShwW3Bvc10pKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQVNDSUlBbHBoYShwW3Bvc10pICYmIHBbcG9zXSAhPSB0b0FTQ0lJVXBwZXIocFtwb3Nd
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIXBvcykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUubGlzdFN0eWxlID0gJ1YnOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEZUUEp1bmtFbnRyeTsgLyogaXRzIGp1bmsgKi8KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLyAKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoKHRva2Vuc1swXVt0b2tsZW5bMF0tMV0pICE9ICc7Jykgewor
ICAgICAgICAgICAgICAgIGlmIChudW10b2tzID09IDEgJiYgKHN0YXRlLmxpc3RTdHlsZSA9PSAn
VicgJiYgIWNhcnJ5QnVmTGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gJ1Yn
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bXRva3MgPCA0KQorICAgICAgICAgICAgICAg
IHsgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2xlblsxXSA+PSAxMCAmJiAhbWVtY21w
KHRva2Vuc1sxXSwgIiVSTVMtRS1QUlYiLCAxMCkpCisgICAgICAgICAgICAgICAgICAgIGxzdHls
ZSA9ICdWJzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICgoJmxpbmVbbGluZWxlbl0gLSB0b2tl
bnNbMV0pID49IDIyCisgICAgICAgICAgICAgICAgICAgICYmICFtZW1jbXAodG9rZW5zWzFdLCAi
aW5zdWZmaWNpZW50IHByaXZpbGVnZSIsIDIyKSkKKyAgICAgICAgICAgICAgICAgICAgbHN0eWxl
ID0gJ1YnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bXRva3MgIT0gNCAmJiBudW10b2tz
ICE9IDYpCisgICAgICAgICAgICAgICAgeyB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobnVt
dG9rcyA9PSA2CisgICAgICAgICAgICAgICAgICAgICYmICh0b2tsZW5bNV0gPCA0IHx8ICp0b2tl
bnNbNV0gIT0gJygnIC8qIHBlcm1zICovCisgICAgICAgICAgICAgICAgICAgIHx8ICh0b2tlbnNb
NV1bdG9rbGVuWzVdLTFdKSAhPSAnKScpKQorICAgICAgICAgICAgICAgIHsgfQorICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKCAgKHRva2xlblsyXSA9PSAxMCB8fCB0b2tsZW5bMl0gPT0gMTEpCisg
ICAgICAgICAgICAgICAgICAgICYmICh0b2tlbnNbMl1bdG9rbGVuWzJdLTVdKSA9PSAnLScKKyAg
ICAgICAgICAgICAgICAgICAgJiYgKHRva2Vuc1syXVt0b2tsZW5bMl0tOV0pID09ICctJworICAg
ICAgICAgICAgICAgICAgICAmJiAoKCh0b2tsZW5bM10gPT0gNCB8fCB0b2tsZW5bM10gPT0gNSB8
fCB0b2tsZW5bM10gPT0gNyB8fCB0b2tsZW5bM10gPT0gOCkKKyAgICAgICAgICAgICAgICAgICAg
JiYgKHRva2Vuc1szXVt0b2tsZW5bM10tM10pID09ICc6JyApCisgICAgICAgICAgICAgICAgICAg
IHx8ICgodG9rbGVuWzNdID09IDEwIHx8IHRva2xlblszXSA9PSAxMSkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgKHRva2Vuc1szXVt0b2tsZW5bM10tM10pID09ICcuJykpIC8qIHRpbWUgaW4gW0hd
SDpNTVs6U1NbLkNDXV0gZm9ybWF0ICovCisgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlE
aWdpdCgqdG9rZW5zWzFdKSAvKiBzaXplICovCisgICAgICAgICAgICAgICAgICAgICYmIGlzQVND
SUlEaWdpdCgqdG9rZW5zWzJdKSAvKiBkYXRlICovCisgICAgICAgICAgICAgICAgICAgICYmIGlz
QVNDSUlEaWdpdCgqdG9rZW5zWzNdKSkgeyAgICAvKiB0aW1lICovCisgICAgICAgICAgICAgICAg
ICAgIGxzdHlsZSA9ICdWJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGxzdHlsZSA9PSAnVicpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogCisgICAgICAgICAgICAg
ICAgICAgICAqIE11bHRpTmV0IEZUUDoKKyAgICAgICAgICAgICAgICAgICAgICogICBMT0dJTi5D
T007MiAgICAgICAgICAgICAgICAgMSAgIDQtTk9WLTE5OTQgMDQ6MDkgW0FOT05ZTU9VU10gKFJX
RSxSV0UsLCkKKyAgICAgICAgICAgICAgICAgICAgICogICBQVUIuRElSOzEgICAgICAgICAgICAg
ICAgICAgMSAgMjctSkFOLTE5OTQgMTQ6NDYgW0FOT05ZTU9VU10gKFJXRSxSV0UsUkUsUldFKQor
ICAgICAgICAgICAgICAgICAgICAgKiAgIFJFQURNRS5GVFA7MSAgICAgICAgJVJNUy1FLVBSViwg
aW5zdWZmaWNpZW50IHByaXZpbGVnZSBvciBmaWxlIHByb3RlY3Rpb24gdmlvbGF0aW9uCisgICAg
ICAgICAgICAgICAgICAgICAqICAgUk9VU1NPUy5ESVI7MSAgICAgICAgICAgICAgIDEgIDI3LUpB
Ti0xOTk0IDE0OjQ4IFtDUyxST1VTU09TXSAoUldFLFJXRSxSRSxSKQorICAgICAgICAgICAgICAg
ICAgICAgKiAgIFM2Ny01MDkwMy5KUEc7MSAgICAgICAgICAgMzI4ICAyMi1TRVAtMTk5OCAxNjox
OSBbQU5PTllNT1VTXSAoUldFRCxSV0VELCwpCisgICAgICAgICAgICAgICAgICAgICAqIFVDWCBG
VFA6IAorICAgICAgICAgICAgICAgICAgICAgKiAgIENJSS1NQU5VQUwuVEVYOzEgIDIxMy8yMTYg
IDI5LUpBTi0xOTk2IDAzOjMzOjEyICBbQU5PTllNT1UsQU5PTllNT1VTXSAoUldFRCxSV0VELCwp
CisgICAgICAgICAgICAgICAgICAgICAqIENNVS9WTVMtSVAgRlRQCisgICAgICAgICAgICAgICAg
ICAgICAqICAgW1ZNU1NFUlYuRklMRVNdQUxBUk0uRElSOzEgMS8zIDUtTUFSLTE5OTMgMTg6MDkK
KyAgICAgICAgICAgICAgICAgICAgICogVENQd2FyZSBGVFAKKyAgICAgICAgICAgICAgICAgICAg
ICogICBGT08uQkFSOzEgNCA1LU1BUi0xOTkzIDE4OjA5OjAxLjEyCisgICAgICAgICAgICAgICAg
ICAgICAqIExvbmcgZmlsZW5hbWUgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICogICBU
SElTLUlTLUEtTE9ORy1WTVMtRklMRU5BTUUuQU5ELVRISVMtSVMtQS1MT05HLVZNUy1GSUxFVFlQ
RVxyXG4KKyAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIDIxM1svbm5u
XSAgMjktSkFOLTE5OTYgMDM6MzNbOm5uXSAgW0FOT05ZTU9VLEFOT05ZTU9VU10gKFJXRUQsUldF
RCwsKQorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgdG9rbWFy
a2VyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1swXTsKKyAgICAgICAgICAg
ICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpwID09ICdbJyAmJiB0
b2tsZW5bMF0gPj0gNCkgeyAvKiBDTVUgc3R5bGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwWzFdICE9ICddJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHArKzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChsc3R5bGUgJiYgcG9zIDwgdG9rbGVu
WzBdICYmICpwICE9ICddJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcCAh
PSAnJCcgJiYgKnAgIT0gJy4nICYmICpwICE9ICdfJyAmJiAqcCAhPSAnLScKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgKnAgIT0gJ34nICYmICFpc0FTQ0lJRGlnaXQoKnApICYm
ICFpc0FTQ0lJQWxwaGEoKnApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3R5
bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsc3R5bGUgJiYgcG9zIDwgKHRva2xlblswXS0xKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICddJyB3YXMgZm91bmQgYW5kIHRoZXJlIGlzIGF0
IGxlYXN0IG9uZSBjaGFyYWN0ZXIgYWZ0ZXIgaXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoKnAgPT0gJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Mr
KzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rbWFya2VyID0gcG9zOyAvKiBsZW5ndGggb2YgbGVhZGluZyAiW0RJUjEuRElS
Mi5ldGNdIiAqLworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBub3QgYSBDTVUgc3R5bGUgbGlzdGluZyAqLworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGxzdHls
ZSAmJiBwb3MgPCB0b2tsZW5bMF0gJiYgKnAgIT0gJzsnKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKnAgIT0gJyQnICYmICpwICE9ICcuJyAmJiAqcCAhPSAnXycgJiYgKnAgIT0gJy0n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKnAgIT0gJ34nICYmICFpc0FTQ0lJRGln
aXQoKnApICYmICFpc0FTQ0lJQWxwaGEoKnApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxzdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0FTQ0lJQWxw
aGEoKnApICYmICpwICE9IHRvQVNDSUlVcHBlcigqcCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlmIChsc3R5bGUgJiYgKnAgPT0gJzsnKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXBvcyB8fCBwb3MgPT0gKHRva2xlblswXS0xKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwb3Mr
Kztsc3R5bGUgJiYgcG9zIDwgdG9rbGVuWzBdO3BvcysrKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQodG9rZW5zWzBdW3Bvc10pKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBvcyA9IChwIC0g
dG9rZW5zWzBdKTsgLyogPT4gZm5sZW5ndGggc2FucyAiOyMjIyMiICovCisgICAgICAgICAgICAg
ICAgICAgIHBvcyAtPSB0b2ttYXJrZXI7ICAgICAgLyogPT4gZm5sZW5ndGggc2FucyAiW0RJUjEu
RElSMi5ldGNdIiAqLworICAgICAgICAgICAgICAgICAgICBwID0gJih0b2tlbnNbMF1bdG9rbWFy
a2VyXSk7IC8qIG9mZnNldCBvZiBiYXNlbmFtZSAqLworCisgICAgICAgICAgICAgICAgICAgIGlm
ICghbHN0eWxlIHx8ICFwb3MgfHwgcG9zID4gODApIHsgLyogVk1TIGZpbGVuYW1lcyBjYW4ndCBi
ZSBsb25nZXIgdGhhbiB0aGF0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAw
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bXRva3MgPT0gMSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLyogaWYgVk1TIGhhcyBiZWVuIGRldGVjdGVkIGFuZCB0aGVyZSBp
cyBvbmx5IG9uZSB0b2tlbiBhbmQgdGhhdCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRv
a2VuIHdhcyBhIFZNUyBmaWxlbmFtZSB0aGVuIHRoaXMgaXMgYSBtdWx0aWxpbmUgVk1TIExJU1Qg
ZW50cnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwb3MgPj0gKHNpemVvZihzdGF0ZS5jYXJyeUJ1ZmZlciktMSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zID0gKHNpemVvZihzdGF0ZS5jYXJyeUJ1ZmZlciktMSk7IC8q
IHNob3VsZG4ndCBoYXBwZW4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShzdGF0
ZS5jYXJyeUJ1ZmZlciwgcCwgcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNh
cnJ5QnVmZmVyTGVuZ3RoID0gcG9zOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZU
UEp1bmtFbnRyeTsgLyogdGVsbCBjYWxsZXIgdG8gdHJlYXQgYXMganVuayAqLworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlEaWdpdCgqdG9rZW5zWzFdKSkgeyAvKiBub3Qg
bm8tcHJpdnMgbWVzc2FnZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAw
OyBsc3R5bGUgJiYgcG9zIDwgKHRva2xlblsxXSk7IHBvcysrKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKHRva2Vuc1sxXVtwb3NdKSkgJiYgKHRva2Vu
c1sxXVtwb3NdKSAhPSAnLycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHls
ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobHN0eWxlICYmIG51bXRva3MgPiA0KSB7IC8qIE11bHRpbmV0IG9yIFVDWCBidXQgbm90
IENNVSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocG9zID0gMTsgbHN0eWxl
ICYmIHBvcyA8ICh0b2tsZW5bNV0tMSk7IHBvcysrKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHAgPSAmKHRva2Vuc1s1XVtwb3NdKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCpwICE9ICdSJyAmJiAqcCAhPSAnVycgJiYgKnAgIT0gJ0UnICYmICpwICE9
ICdEJyAmJiAqcCAhPSAnLCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
c3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gLyog
cGFzc2VkIGluaXRpYWwgdGVzdHMgKi8KKyAgICAgICAgICAgIH0gLyogZWxzZSBpZiAoKHRva2Vu
c1swXVt0b2tsZW5bMF0tMV0pICE9ICc7JykgKi8gICAgCisKKyAgICAgICAgICAgIGlmIChsc3R5
bGUgPT0gJ1YnKSB7CisgICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7CisKKyAgICAgICAgICAgICAg
ICBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pKSB7IC8qIG5vdCBwZXJtaXNzaW9uIGRlbmll
ZCBldGMgKi8KKyAgICAgICAgICAgICAgICAgICAgLyogc3RyaXAgbGVhZGluZyBkaXJlY3Rvcnkg
bmFtZSAqLworICAgICAgICAgICAgICAgICAgICBpZiAoKnRva2Vuc1swXSA9PSAnWycpIHsgLyog
Q01VIHNlcnZlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVuWzBdLTE7
CisgICAgICAgICAgICAgICAgICAgICAgICBwID0gdG9rZW5zWzBdKzE7CisgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAoKnAgIT0gJ10nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy0tOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdG9rbGVuWzBdID0gLS1wb3M7
CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNbMF0gPSArK3A7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKHBvcyA8IHRva2xlblswXSAmJiAodG9rZW5zWzBdW3Bvc10pICE9ICc7JykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcysrOworCisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5jYXNlU2Vuc2l0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUg
PSBGVFBGaWxlRW50cnk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSA9IHRv
a2Vuc1swXTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcG9z
OworCisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPiA0KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwID0gJih0b2tlbnNbMF1bcG9zLTRdKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwWzBdID09ICcuJyAmJiBwWzFdID09ICdEJyAmJiBwWzJdID09ICdJJyAmJiBwWzNdID09
ICdSJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0
aCAtPSA0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRGly
ZWN0b3J5RW50cnk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT0gRlRQRGlyZWN0
b3J5RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qICMjIyMgb3IgdXNlZC9hbGxv
Y2F0ZWQgZm9ybS4gSWYgdXNlZC9hbGxvY2F0ZWQgZm9ybSwgdGhlbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICogJ3VzZWQnIGlzIHRoZSBzaXplIGluIGJ5dGVzIGlmIGFuZCBvbmx5IGlmICd1
c2VkJzw9YWxsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICogSWYgJ3VzZWQnIGlz
IHNpemUgaW4gYnl0ZXMgdGhlbiBpdCBjYW4gYmUgPiAyXjMyCisgICAgICAgICAgICAgICAgICAg
ICAgICAgKiBJZiAndXNlZCcgaXMgbm90IHNpemUgaW4gYnl0ZXMgdGhlbiBpdCBpcyBzaXplIGlu
IGJsb2Nrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCB0b2ts
ZW5bMV0gJiYgKHRva2Vuc1sxXVtwb3NdKSAhPSAnLycpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcG9zKys7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg
ICAgICAgICAgICAgKiBJJ3ZlIG5ldmVyIHNlZW4gc2l6ZSBjb21lIGJhY2sgaW4gYnl0ZXMsIGl0
cyBhbHdheXMgaW4gYmxvY2tzLCBhbmQgCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUg
Zm9sbG93aW5nIHRlc3QgZmFpbHMuIFNvLCBhbHdheXMgcGVyZm9ybSB0aGUgInNpemUgaW4gYmxv
Y2tzIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqIEknbSBsZWF2aW5nIHRoZSAic2l6ZSBp
biBieXRlcyIgY29kZSBpZidkIG91dCBpbiBjYXNlIHdlIGV2ZXIgbmVlZAorICAgICAgICAgICAg
ICAgICAgICAgICAgICogdG8gcmUtaW5zdGF0ZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwogI2lmIDAKLSAgICAgICAgICAgIGlmIChwb3MgPCB0b2tsZW5bMV0gJiYgKCAocG9zPDwx
KSA+ICh0b2tsZW5bMV0tMSkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cnRvdWwodG9rZW5zWzFd
LCAoY2hhciAqKikwLCAxMCkgPiAKLSAgICAgICAgICAgICAgICAgIHN0cnRvdWwodG9rZW5zWzFd
K3BvcysxLCAoY2hhciAqKikwLCAxMCkpICAgICAgICApKQotICAgICAgICAgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBpcyBpbiBieXRlcyAqLwotICAgICAg
ICAgICAgICBpZiAocG9zID4gKHNpemVvZihyZXN1bHQuZmVfc2l6ZSktMSkpCi0gICAgICAgICAg
ICAgICAgcG9zID0gc2l6ZW9mKHJlc3VsdC5mZV9zaXplKS0xOwotICAgICAgICAgICAgICBtZW1j
cHkoIHJlc3VsdC5mZV9zaXplLCB0b2tlbnNbMV0sIHBvcyApOwotICAgICAgICAgICAgICByZXN1
bHQuZmVfc2l6ZVtwb3NdID0gJ1wwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ug
Lyogc2l6ZSBpcyBpbiBibG9ja3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3Mg
PCB0b2tsZW5bMV0gJiYgKCAocG9zPDwxKSA+ICh0b2tsZW5bMV0tMSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8fCAoc3RydG91bCh0b2tlbnNbMV0sIChjaGFyICoqKTAsIDEwKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID4gc3RydG91bCh0b2tlbnNbMV0rcG9zKzEsIChjaGFy
ICoqKTAsIDEwKSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBpcyBp
biBieXRlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPiAoc2l6ZW9m
KHJlc3VsdC5mZV9zaXplKS0xKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9z
ID0gc2l6ZW9mKHJlc3VsdC5mZV9zaXplKS0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lbWNweShyZXN1bHQuZmVfc2l6ZSwgdG9rZW5zWzFdLCBwb3MpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5mZV9zaXplW3Bvc10gPSAnXDAnOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIC8qIHNpemUgaXMgaW4gYmxvY2tzICovCiAjZW5kaWYKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgLyogc2l6ZSByZXF1aXJlcyBtdWx0aXBsaWNhdGlvbiBieSBi
bG9ja3NpemUuIAotICAgICAgICAgICAgICAgKgotICAgICAgICAgICAgICAgKiBXZSBjb3VsZCBh
c3N1bWUgYmxvY2tzaXplIGlzIDUxMiAobGlrZSBMeW54IGRvZXMpIGFuZAotICAgICAgICAgICAg
ICAgKiBzaGlmdCBieSA5LCBidXQgdGhhdCBtaWdodCBub3QgYmUgcmlnaHQuIEV2ZW4gaWYgaXQg
Ci0gICAgICAgICAgICAgICAqIHdlcmUsIGRvaW5nIHRoYXQgd291bGRuJ3QgcmVmbGVjdCB3aGF0
IHRoZSBmaWxlJ3MgCi0gICAgICAgICAgICAgICAqIHJlYWwgc2l6ZSB3YXMuIFRoZSBzYW5lc3Qg
dGhpbmcgdG8gZG8gaXMgbm90IHVzZSB0aGUKLSAgICAgICAgICAgICAgICogTElTVGluZydzIGZp
bGVzaXplLCBzbyB3ZSB3b24ndCAobGlrZSBmdHBtaXJyb3IpLgotICAgICAgICAgICAgICAgKgot
ICAgICAgICAgICAgICAgKiB1bGx0b2EoKCh1bnNpZ25lZCBsb25nIGxvbmcpZnN6KTw8OSwgcmVz
dWx0LmZlX3NpemUsIDEwKTsKLSAgICAgICAgICAgICAgICoKLSAgICAgICAgICAgICAgICogQSBi
bG9jayBpcyBhbHdheXMgNTEyIGJ5dGVzIG9uIE9wZW5WTVMsIGNvbXB1dGUgc2l6ZS4KLSAgICAg
ICAgICAgICAgICogU28gaXRzIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgYmxvY2ssIHNvIHdoYXQs
IGl0cyBiZXR0ZXIKLSAgICAgICAgICAgICAgICogdGhhbiBub3Qgc2hvd2luZyB0aGUgc2l6ZSBh
dCBhbGwuCi0gICAgICAgICAgICAgICAqIEEgYmxvY2sgaXMgYWx3YXlzIDUxMiBieXRlcyBvbiBP
cGVuVk1TLCBjb21wdXRlIHNpemUuCi0gICAgICAgICAgICAgICAqIFNvIGl0cyByb3VuZGVkIHVw
IHRvIHRoZSBuZXh0IGJsb2NrLCBzbyB3aGF0LCBpdHMgYmV0dGVyCi0gICAgICAgICAgICAgICAq
IHRoYW4gbm90IHNob3dpbmcgdGhlIHNpemUgYXQgYWxsLgotICAgICAgICAgICAgICAqLwotICAg
ICAgICAgICAgICB1aW50NjRfdCBzaXplID0gc3RydG91bGwodG9rZW5zWzFdLCAwLCAxMCkgKiA1
MTI7Ci0gICAgICAgICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZzo6bnVtYmVyKHNpemUp
OwotICAgICAgICAgICAgfSAKLQotICAgICAgICAgIH0gLyogaWYgKHJlc3VsdC50eXBlICE9IEZU
UERpcmVjdG9yeUVudHJ5KSAqLwotCi0gICAgICAgICAgcCA9IHRva2Vuc1syXSArIDI7Ci0gICAg
ICAgICAgaWYgKCpwID09ICctJykKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgICB0YnVmWzBd
ID0gcFswXTsKLSAgICAgICAgICB0YnVmWzFdID0gdG9BU0NJSUxvd2VyKHBbMV0pOwotICAgICAg
ICAgIHRidWZbMl0gPSB0b0FTQ0lJTG93ZXIocFsyXSk7Ci0gICAgICAgICAgbW9udGhfbnVtID0g
MDsKLSAgICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8ICgxMiozKTsgcG9zKz0zKQotICAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICh0YnVmWzBdID09IG1vbnRoX25hbWVzW3BvcyswXSAmJiAK
LSAgICAgICAgICAgICAgICB0YnVmWzFdID09IG1vbnRoX25hbWVzW3BvcysxXSAmJiAKLSAgICAg
ICAgICAgICAgICB0YnVmWzJdID09IG1vbnRoX25hbWVzW3BvcysyXSkKLSAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBtb250aF9udW0rKzsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
aWYgKG1vbnRoX251bSA+PSAxMikKLSAgICAgICAgICAgIG1vbnRoX251bSA9IDA7Ci0gICAgICAg
ICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBtb250aF9udW07Ci0gICAgICAgICAgcmVz
dWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaSh0b2tlbnNbMl0pOwotICAgICAgICAgIHJl
c3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IGF0b2kocCs0KTsgLy8gTlNQUiB3YW50cyB5ZWFy
IGFzIFhYWFgKLQotICAgICAgICAgIHAgPSB0b2tlbnNbM10gKyAyOwotICAgICAgICAgIGlmICgq
cCA9PSAnOicpCi0gICAgICAgICAgICBwKys7Ci0gICAgICAgICAgaWYgKHBbMl0gPT0gJzonKQot
ICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9zZWMgPSBhdG9pKHArMyk7Ci0gICAg
ICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyID0gYXRvaSh0b2tlbnNbM10pOwotICAg
ICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWluICA9IGF0b2kocCk7Ci0gICAgICAKLSAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7Ci0KLSAgICAgICAgfSAvKiBpZiAoaXNBU0NJSURp
Z2l0KCp0b2tlbnNbMV0pKSAqLwotCi0gICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7IC8qIGp1
bmsgKi8KLQotICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdWJykgKi8KLSAgICB9IC8qIGlmICgh
bHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnVicpKSAq
LworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHNpemUgcmVxdWlyZXMgbXVsdGlwbGljYXRpb24gYnkgYmxvY2tzaXplLiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFdl
IGNvdWxkIGFzc3VtZSBibG9ja3NpemUgaXMgNTEyIChsaWtlIEx5bnggZG9lcykgYW5kCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICogc2hpZnQgYnkgOSwgYnV0IHRoYXQgbWlnaHQgbm90
IGJlIHJpZ2h0LiBFdmVuIGlmIGl0IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdl
cmUsIGRvaW5nIHRoYXQgd291bGRuJ3QgcmVmbGVjdCB3aGF0IHRoZSBmaWxlJ3MgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICogcmVhbCBzaXplIHdhcy4gVGhlIHNhbmVzdCB0aGluZyB0
byBkbyBpcyBub3QgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIExJU1Rp
bmcncyBmaWxlc2l6ZSwgc28gd2Ugd29uJ3QgKGxpa2UgZnRwbWlycm9yKS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVsbHRv
YSgoKHVuc2lnbmVkIGxvbmcgbG9uZylmc3opPDw5LCByZXN1bHQuZmVfc2l6ZSwgMTApOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogQSBibG9jayBpcyBhbHdheXMgNTEyIGJ5dGVzIG9uIE9wZW5WTVMsIGNvbXB1dGUgc2l6ZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTbyBpdHMgcm91bmRlZCB1cCB0byB0aGUg
bmV4dCBibG9jaywgc28gd2hhdCwgaXRzIGJldHRlcgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqIHRoYW4gbm90IHNob3dpbmcgdGhlIHNpemUgYXQgYWxsLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqIEEgYmxvY2sgaXMgYWx3YXlzIDUxMiBieXRlcyBvbiBPcGVuVk1TLCBj
b21wdXRlIHNpemUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogU28gaXRzIHJvdW5k
ZWQgdXAgdG8gdGhlIG5leHQgYmxvY2ssIHNvIHdoYXQsIGl0cyBiZXR0ZXIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiB0aGFuIG5vdCBzaG93aW5nIHRoZSBzaXplIGF0IGFsbC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50NjRfdCBzaXplID0gc3RydG91bGwodG9rZW5zWzFdLCAwLCAxMCkgKiA1MTI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVTaXplID0gU3RyaW5nOjpudW1iZXIo
c2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IAorCisgICAgICAgICAgICAgICAgICAg
IH0gLyogaWYgKHJlc3VsdC50eXBlICE9IEZUUERpcmVjdG9yeUVudHJ5KSAqLworCisgICAgICAg
ICAgICAgICAgICAgIHAgPSB0b2tlbnNbMl0gKyAyOworICAgICAgICAgICAgICAgICAgICBpZiAo
KnAgPT0gJy0nKQorICAgICAgICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAg
ICAgICB0YnVmWzBdID0gcFswXTsKKyAgICAgICAgICAgICAgICAgICAgdGJ1ZlsxXSA9IHRvQVND
SUlMb3dlcihwWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgdGJ1ZlsyXSA9IHRvQVNDSUlMb3dl
cihwWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgbW9udGhOdW0gPSAwOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8ICgxMiozKTsgcG9zICs9IDMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0YnVmWzBdID09IG1vbnRoTmFtZXNbcG9zKzBdCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgdGJ1ZlsxXSA9PSBtb250aE5hbWVzW3BvcysxXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRidWZbMl0gPT0gbW9udGhOYW1lc1twb3MrMl0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtb250aE51bSsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGlmIChtb250aE51bSA+PSAxMikKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoTnVt
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBt
b250aE51bTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5
ID0gYXRvaSh0b2tlbnNbMl0pOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX3llYXIgPSBhdG9pKHArNCk7IC8vIE5TUFIgd2FudHMgeWVhciBhcyBYWFhYCisKKyAg
ICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1szXSArIDI7CisgICAgICAgICAgICAgICAgICAg
IGlmICgqcCA9PSAnOicpCisgICAgICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwWzJdID09ICc6JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1fc2VjID0gYXRvaShwKzMpOworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIgPSBhdG9pKHRva2Vuc1szXSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWluICA9IGF0b2kocCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOworCisgICAgICAgICAgICAgICAgfSAv
KiBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pKSAqLworCisgICAgICAgICAgICAgICAgcmV0
dXJuIEZUUEp1bmtFbnRyeTsgLyoganVuayAqLworCisgICAgICAgICAgICB9IC8qIGlmIChsc3R5
bGUgPT0gJ1YnKSAqLworICAgICAgICB9IC8qIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0
eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnVicpKSAqLwogI2VuZGlmCiAKLSAgICAvKiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAq
LworICAgICAgICAvKiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKyAqLwogCiAjaWYgZGVmaW5lZChTVVBQT1JUX0NNUykKLSAgICAvKiBW
aXJ0dWFsIE1hY2hpbmUvQ29udmVyc2F0aW9uYWwgTW9uaXRvciBTeXN0ZW0gKElCTSBNYWluZnJh
bWUpICovCi0gICAgaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlz
dFN0eWxlID09ICdDJykpICAvKiBWTS9DTVMgKi8KLSAgICB7Ci0gICAgICAvKiBMSVNUaW5nIGFj
Y29yZGluZyB0byBtaXJyb3IucGwKLSAgICAgICAqIEZpbGVuYW1lIEZpbGVUeXBlICBGbSBGb3Jt
YXQgTHJlY2wgIFJlY29yZHMgQmxvY2tzIERhdGUgICAgICBUaW1lCi0gICAgICAgKiBMQVNUSU5H
ICBHTE9CQUxWICAgQTEgViAgICAgIDQxICAgICAyMSAgICAgMSAgICAgICA5LzE2LzkxICAgMTU6
MTA6MzIKLSAgICAgICAqIEo0MzQwMSAgIE5FVExPRyAgICBBMCBWICAgICAgNzcgICAgIDEgICAg
ICAxICAgICAgIDkvMTIvOTEgICAxMjozNjowNAotICAgICAgICogUFJPRklMRSAgRVhFQyAgICAg
IEExIFYgICAgICAxNyAgICAgMyAgICAgIDEgICAgICAgOS8xMi85MSAgIDEyOjM5OjA3Ci0gICAg
ICAgKiBESVJVTklYICBTQ1JJUFQgICAgQTEgViAgICAgIDc3ICAgICAxMjE2ICAgMTcgICAgICAx
LzA0LzkzICAgMjA6MzA6NDcKLSAgICAgICAqIE1BSUwgICAgIFBST0ZJTEUgICBBMiBGICAgICAg
ODAgICAgIDEgICAgICAxICAgICAgIDEwLzE0LzkyICAxNjoxMjoyNwotICAgICAgICogQkFEWTJL
ICAgVEVYVCAgICAgIEEwIFYgICAgICAxICAgICAgMSAgICAgIDEgICAgICAgMS8wMy8xMDIgIDEw
OjExOjEyCi0gICAgICAgKiBBVVRIT1JTICAgICAgICAgICAgQTEgRElSICAgIC0gICAgICAtICAg
ICAgLSAgICAgICA5LzIwLzk5ICAgMTA6MzE6MTEKLSAgICAgICAqCi0gICAgICAgKiBMSVNUaW5n
IGZyb20gdm0ubWFyaXN0LmVkdSBhbmQgdm0uc2MuZWR1Ci0gICAgICAgKiAyMjAtRlRQU0VSVkUg
SUJNIFZNIExldmVsIDQyMCBhdCBWTS5NQVJJU1QuRURVLCAwNDo1ODoxMiBFRFQgV0VETkVTREFZ
IDIwMDItMDctMTAKLSAgICAgICAqIEFVVEhPUlMgICAgICAgICAgIERJUiAgICAgICAgLSAgICAg
ICAgICAtICAgICAgICAgIC0gMTk5OS0wOS0yMCAxMDozMToxMSAtCi0gICAgICAgKiBIQVJSSU5H
VE9OICAgICAgICBESVIgICAgICAgIC0gICAgICAgICAgLSAgICAgICAgICAtIDE5OTctMDItMTIg
MTU6MzM6MjggLQotICAgICAgICogUElDUyAgICAgICAgICAgICAgRElSICAgICAgICAtICAgICAg
ICAgIC0gICAgICAgICAgLSAyMDAwLTEwLTEyIDE1OjQzOjIzIC0KLSAgICAgICAqIFNZU0ZJTEUg
ICAgICAgICAgIERJUiAgICAgICAgLSAgICAgICAgICAtICAgICAgICAgIC0gMjAwMC0wNy0yMCAx
Nzo0ODowMSAtCi0gICAgICAgKiBXRUxDTlZUICBFWEVDICAgICBWICAgICAgICAgNzIgICAgICAg
ICAgOSAgICAgICAgICAxIDE5OTktMDktMjAgMTc6MTY6MTggLQotICAgICAgICogV0VMQ09NRSAg
RVJFQURNRSAgRiAgICAgICAgIDgwICAgICAgICAgMjEgICAgICAgICAgMSAxOTk5LTEyLTI3IDE2
OjE5OjAwIC0KLSAgICAgICAqIFdFTENPTUUgIFJFQURNRSAgIFYgICAgICAgICA4MiAgICAgICAg
IDIxICAgICAgICAgIDEgMTk5OS0xMi0yNyAxNjoxOTowNCAtCi0gICAgICAgKiBSRUFETUUgICBB
Tk9OWU1PVSBWICAgICAgICAgNzEgICAgICAgICAyNiAgICAgICAgICAxIDE5OTctMDQtMDIgMTI6
MzM6MjAgVENQMjkxCi0gICAgICAgKiBSRUFETUUgICBBTk9OWU9MRCBWICAgICAgICAgNzEgICAg
ICAgICAxNSAgICAgICAgICAxIDE5OTUtMDgtMjUgMTY6MDQ6MjcgVENQMjkxCi0gICAgICAqLwot
ICAgICAgaWYgKG51bXRva3MgPj0gNyAmJiAodG9rbGVuWzBdK3Rva2xlblsxXSkgPD0gMTYpCi0g
ICAgICB7Ci0gICAgICAgIGZvciAocG9zID0gMTsgIWxzdHlsZSAmJiAocG9zKzUpIDwgbnVtdG9r
czsgcG9zKyspCi0gICAgICAgIHsKLSAgICAgICAgICBwID0gdG9rZW5zW3Bvc107Ci0gICAgICAg
ICAgaWYgKCh0b2tsZW5bcG9zXSA9PSAxICYmICgqcCA9PSAnRicgfHwgKnAgPT0gJ1YnKSkgfHwK
LSAgICAgICAgICAgICAgKHRva2xlbltwb3NdID09IDMgJiYgKnAgPT0gJ0QnICYmIHBbMV0gPT0g
J0knICYmIHBbMl0gPT0gJ1InKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodG9rbGVu
W3Bvcys1XSA9PSA4ICYmICh0b2tlbnNbcG9zKzVdWzJdKSA9PSAnOicgJiYKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRva2Vuc1twb3MrNV1bNV0pID09ICc6JyAgICkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcCA9IHRva2Vuc1twb3MrNF07Ci0gICAgICAg
ICAgICAgIGlmICgodG9rbGVuW3Bvcys0XSA9PSAxMCAmJiBwWzRdID09ICctJyAmJiBwWzddID09
ICctJykgfHwKLSAgICAgICAgICAgICAgICAgICh0b2tsZW5bcG9zKzRdID49IDcgJiYgdG9rbGVu
W3Bvcys0XSA8PSA5ICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBbKChwWzFdIT0n
LycpPygyKTooMSkpXSA9PSAnLycgJiYgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFso
KHBbMV0hPScvJyk/KDUpOig0KSldID09ICcvJykpCi0gICAgICAgICAgICAgICAvKiBZMksgYnVn
cyBwb3NzaWJsZSAoIjcvMDYvMTAyIiBvciAiMTMvMDIvMTAxIikgKi8KLSAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmICggKCp0b2tlbnNbcG9zKzFdID09ICctJyAmJgotICAgICAg
ICAgICAgICAgICAgICAgICp0b2tlbnNbcG9zKzJdID09ICctJyAmJgotICAgICAgICAgICAgICAg
ICAgICAgICp0b2tlbnNbcG9zKzNdID09ICctJykgIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
KGlzQVNDSUlEaWdpdCgqdG9rZW5zW3BvcysxXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
aXNBU0NJSURpZ2l0KCp0b2tlbnNbcG9zKzJdKSAmJgotICAgICAgICAgICAgICAgICAgICAgICBp
c0FTQ0lJRGlnaXQoKnRva2Vuc1twb3MrM10pKSApCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgbHN0eWxlID0gJ0MnOwotICAgICAgICAgICAgICAgICAgdG9rbWFya2VyID0g
cG9zOworICAgICAgICAvKiBWaXJ0dWFsIE1hY2hpbmUvQ29udmVyc2F0aW9uYWwgTW9uaXRvciBT
eXN0ZW0gKElCTSBNYWluZnJhbWUpICovCisgICAgICAgIGlmICghbHN0eWxlICYmICghc3RhdGUu
bGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnQycpKSB7IC8qIFZNL0NNUyAqLworICAg
ICAgICAgICAgLyogTElTVGluZyBhY2NvcmRpbmcgdG8gbWlycm9yLnBsCisgICAgICAgICAgICAg
KiBGaWxlbmFtZSBGaWxlVHlwZSAgRm0gRm9ybWF0IExyZWNsICBSZWNvcmRzIEJsb2NrcyBEYXRl
ICAgICAgVGltZQorICAgICAgICAgICAgICogTEFTVElORyAgR0xPQkFMViAgIEExIFYgICAgICA0
MSAgICAgMjEgICAgIDEgICAgICAgOS8xNi85MSAgIDE1OjEwOjMyCisgICAgICAgICAgICAgKiBK
NDM0MDEgICBORVRMT0cgICAgQTAgViAgICAgIDc3ICAgICAxICAgICAgMSAgICAgICA5LzEyLzkx
ICAgMTI6MzY6MDQKKyAgICAgICAgICAgICAqIFBST0ZJTEUgIEVYRUMgICAgICBBMSBWICAgICAg
MTcgICAgIDMgICAgICAxICAgICAgIDkvMTIvOTEgICAxMjozOTowNworICAgICAgICAgICAgICog
RElSVU5JWCAgU0NSSVBUICAgIEExIFYgICAgICA3NyAgICAgMTIxNiAgIDE3ICAgICAgMS8wNC85
MyAgIDIwOjMwOjQ3CisgICAgICAgICAgICAgKiBNQUlMICAgICBQUk9GSUxFICAgQTIgRiAgICAg
IDgwICAgICAxICAgICAgMSAgICAgICAxMC8xNC85MiAgMTY6MTI6MjcKKyAgICAgICAgICAgICAq
IEJBRFkySyAgIFRFWFQgICAgICBBMCBWICAgICAgMSAgICAgIDEgICAgICAxICAgICAgIDEvMDMv
MTAyICAxMDoxMToxMgorICAgICAgICAgICAgICogQVVUSE9SUyAgICAgICAgICAgIEExIERJUiAg
ICAtICAgICAgLSAgICAgIC0gICAgICAgOS8yMC85OSAgIDEwOjMxOjExCisgICAgICAgICAgICAg
KgorICAgICAgICAgICAgICogTElTVGluZyBmcm9tIHZtLm1hcmlzdC5lZHUgYW5kIHZtLnNjLmVk
dQorICAgICAgICAgICAgICogMjIwLUZUUFNFUlZFIElCTSBWTSBMZXZlbCA0MjAgYXQgVk0uTUFS
SVNULkVEVSwgMDQ6NTg6MTIgRURUIFdFRE5FU0RBWSAyMDAyLTA3LTEwCisgICAgICAgICAgICAg
KiBBVVRIT1JTICAgICAgICAgICBESVIgICAgICAgIC0gICAgICAgICAgLSAgICAgICAgICAtIDE5
OTktMDktMjAgMTA6MzE6MTEgLQorICAgICAgICAgICAgICogSEFSUklOR1RPTiAgICAgICAgRElS
ICAgICAgICAtICAgICAgICAgIC0gICAgICAgICAgLSAxOTk3LTAyLTEyIDE1OjMzOjI4IC0KKyAg
ICAgICAgICAgICAqIFBJQ1MgICAgICAgICAgICAgIERJUiAgICAgICAgLSAgICAgICAgICAtICAg
ICAgICAgIC0gMjAwMC0xMC0xMiAxNTo0MzoyMyAtCisgICAgICAgICAgICAgKiBTWVNGSUxFICAg
ICAgICAgICBESVIgICAgICAgIC0gICAgICAgICAgLSAgICAgICAgICAtIDIwMDAtMDctMjAgMTc6
NDg6MDEgLQorICAgICAgICAgICAgICogV0VMQ05WVCAgRVhFQyAgICAgViAgICAgICAgIDcyICAg
ICAgICAgIDkgICAgICAgICAgMSAxOTk5LTA5LTIwIDE3OjE2OjE4IC0KKyAgICAgICAgICAgICAq
IFdFTENPTUUgIEVSRUFETUUgIEYgICAgICAgICA4MCAgICAgICAgIDIxICAgICAgICAgIDEgMTk5
OS0xMi0yNyAxNjoxOTowMCAtCisgICAgICAgICAgICAgKiBXRUxDT01FICBSRUFETUUgICBWICAg
ICAgICAgODIgICAgICAgICAyMSAgICAgICAgICAxIDE5OTktMTItMjcgMTY6MTk6MDQgLQorICAg
ICAgICAgICAgICogUkVBRE1FICAgQU5PTllNT1UgViAgICAgICAgIDcxICAgICAgICAgMjYgICAg
ICAgICAgMSAxOTk3LTA0LTAyIDEyOjMzOjIwIFRDUDI5MQorICAgICAgICAgICAgICogUkVBRE1F
ICAgQU5PTllPTEQgViAgICAgICAgIDcxICAgICAgICAgMTUgICAgICAgICAgMSAxOTk1LTA4LTI1
IDE2OjA0OjI3IFRDUDI5MQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAobnVtdG9r
cyA+PSA3ICYmICh0b2tsZW5bMF0rdG9rbGVuWzFdKSA8PSAxNikgeworICAgICAgICAgICAgICAg
IGZvciAocG9zID0gMTsgIWxzdHlsZSAmJiAocG9zKzUpIDwgbnVtdG9rczsgcG9zKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1twb3NdOworICAgICAgICAgICAgICAgICAgICBp
ZiAoKHRva2xlbltwb3NdID09IDEgJiYgKCpwID09ICdGJyB8fCAqcCA9PSAnVicpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgKHRva2xlbltwb3NdID09IDMgJiYgKnAgPT0gJ0QnICYmIHBb
MV0gPT0gJ0knICYmIHBbMl0gPT0gJ1InKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHRva2xlbltwb3MrNV0gPT0gOCAmJiAodG9rZW5zW3Bvcys1XVsyXSkgPT0gJzonCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgKHRva2Vuc1twb3MrNV1bNV0pID09ICc6JykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbcG9zKzRdOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgodG9rbGVuW3Bvcys0XSA9PSAxMCAmJiBwWzRdID09ICctJyAm
JiBwWzddID09ICctJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHRva2xl
bltwb3MrNF0gPj0gNyAmJiB0b2tsZW5bcG9zKzRdIDw9IDkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgcFsoKHBbMV0gIT0gJy8nKT8oMik6KDEpKV0gPT0gJy8nCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBbKChwWzFdICE9ICcvJyk/KDUpOig0KSldID09
ICcvJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWTJLIGJ1Z3MgcG9z
c2libGUgKCI3LzA2LzEwMiIgb3IgIjEzLzAyLzEwMSIpICovCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggKCp0b2tlbnNbcG9zKzFdID09ICctJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgKnRva2Vuc1twb3MrMl0gPT0gJy0nCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAqdG9rZW5zW3BvcyszXSA9PSAnLScpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoaXNBU0NJSURpZ2l0KCp0b2tlbnNb
cG9zKzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURp
Z2l0KCp0b2tlbnNbcG9zKzJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgaXNBU0NJSURpZ2l0KCp0b2tlbnNbcG9zKzNdKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxzdHlsZSA9ICdDJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRva21hcmtlciA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gLyogZm9yIChw
b3MgPSAxOyAhbHN0eWxlICYmIChwb3MrNSkgPCBudW10b2tzOyBwb3MrKykgKi8KKyAgICAgICAg
ICAgIH0gLyogaWYgKG51bXRva3MgPj0gNykgKi8KKworICAgICAgICAgICAgLyogZXh0cmEgY2hl
Y2tpbmcgaWYgZmlyc3QgcGFzcyAqLworICAgICAgICAgICAgaWYgKGxzdHlsZSAmJiAhc3RhdGUu
bGlzdFN0eWxlKSB7CisgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAwLCBwID0gdG9rZW5zWzBd
OyBsc3R5bGUgJiYgcG9zIDwgdG9rbGVuWzBdOyBwb3MrKywgcCsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoKnApICYmIHRvQVNDSUlVcHBlcigqcCkgIT0gKnApCisg
ICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmb3IgKHBvcyA9IHRva21hcmtlcisxOyBwb3MgPD0gdG9rbWFya2VyKzM7
IHBvcysrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghKHRva2xlbltwb3NdID09IDEgJiYg
KnRva2Vuc1twb3NdID09ICctJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9
IHRva2Vuc1twb3NdOyBsc3R5bGUgJiYgcCA8ICh0b2tlbnNbcG9zXSt0b2tsZW5bcG9zXSk7IHAr
KykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpwKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDAsIHAgPSB0b2tlbnNbdG9rbWFya2VyKzRdOyBs
c3R5bGUgJiYgcG9zIDwgdG9rbGVuW3Rva21hcmtlcis0XTsgcG9zKyssIHArKykgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoKnAgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAv
KiBUaGVyZSBtYXkgYmUgWTJLIGJ1Z3MgaW4gdGhlIGRhdGUuIERvbid0IHNpbXBsaWZ5IHRvCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKiBwb3MgIT0gKGxlbi0zKSAmJiBwb3MgIT0gKGxlbi02
KSBsaWtlIHRpbWUgaXMgZG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCh0b2tlbnNbdG9rbWFya2VyKzRdWzFdKSA9PSAnLycpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zICE9IDEgJiYgcG9zICE9IDQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHBvcyAhPSAyICYmIHBvcyAhPSA1KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoKnAgIT0gJy0nICYmICFpc0FTQ0lJRGlnaXQoKnApKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnAgPT0gJy0nICYm
IHBvcyAhPSA0ICYmIHBvcyAhPSA3KQorICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0g
MDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAwLCBwID0g
dG9rZW5zW3Rva21hcmtlcis1XTsgbHN0eWxlICYmIHBvcyA8IHRva2xlblt0b2ttYXJrZXIrNV07
IHBvcysrLCBwKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpwICE9ICc6JyAmJiAhaXNB
U0NJSURpZ2l0KCpwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwID09ICc6JyAmJiBwb3MgIT0gKHRva2xlblt0b2tt
YXJrZXIrNV0tMykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHBvcyAhPSAodG9rbGVuW3Rv
a21hcmtlcis1XS02KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAvKiBpbml0aWFsIGlmKCkgKi8KKworICAgICAg
ICAgICAgaWYgKGxzdHlsZSA9PSAnQycpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRP
bmUgPSB0cnVlOworICAgICAgICAgICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKKwor
ICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyKzRdOworICAgICAgICAgICAgICAg
IGlmICh0b2tsZW5bdG9rbWFya2VyKzRdID09IDEwKSB7IC8qIG5ld3N0eWxlOiBZWVlZLU1NLURE
IGZvcm1hdCAqLworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3ll
YXIgPSBhdG9pKHArMCkgLSAxOTAwOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZp
ZWRUaW1lLnRtX21vbiAgPSBhdG9pKHArNSkgLSAxOworICAgICAgICAgICAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBhdG9pKHArOCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsgLyogb2xkc3R5bGU6IFtNXU0vREQvWVkgZm9ybWF0ICovCisgICAgICAgICAgICAgICAg
ICAgIHBvcyA9IHRva2xlblt0b2ttYXJrZXIrNF07CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1fbW9uICA9IGF0b2kocCkgLSAxOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBhdG9pKChwK3BvcyktNSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IGF0b2koKHArcG9zKS0y
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA8
IDcwKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFy
ICs9IDEwMDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0gLyogZm9yIChwb3MgPSAxOyAhbHN0eWxlICYmIChw
b3MrNSkgPCBudW10b2tzOyBwb3MrKykgKi8KLSAgICAgIH0gLyogaWYgKG51bXRva3MgPj0gNykg
Ki8KLQotICAgICAgLyogZXh0cmEgY2hlY2tpbmcgaWYgZmlyc3QgcGFzcyAqLwotICAgICAgaWYg
KGxzdHlsZSAmJiAhc3RhdGUubGlzdFN0eWxlKSAKLSAgICAgIHsKLSAgICAgICAgZm9yIChwb3Mg
PSAwLCBwID0gdG9rZW5zWzBdOyBsc3R5bGUgJiYgcG9zIDwgdG9rbGVuWzBdOyBwb3MrKywgcCsr
KQotICAgICAgICB7ICAKLSAgICAgICAgICBpZiAoaXNBU0NJSUFscGhhKCpwKSAmJiB0b0FTQ0lJ
VXBwZXIoKnApICE9ICpwKQotICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgfSAKLSAg
ICAgICAgZm9yIChwb3MgPSB0b2ttYXJrZXIrMTsgcG9zIDw9IHRva21hcmtlciszOyBwb3MrKykK
LSAgICAgICAgewotICAgICAgICAgIGlmICghKHRva2xlbltwb3NdID09IDEgJiYgKnRva2Vuc1tw
b3NdID09ICctJykpCi0gICAgICAgICAgewotICAgICAgICAgICAgZm9yIChwID0gdG9rZW5zW3Bv
c107IGxzdHlsZSAmJiBwPCh0b2tlbnNbcG9zXSt0b2tsZW5bcG9zXSk7IHArKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKnApKQotICAgICAgICAgICAg
ICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGZvciAocG9zID0gMCwgcCA9IHRva2Vuc1t0b2ttYXJrZXIrNF07IAotICAgICAgICAg
ICAgIGxzdHlsZSAmJiBwb3MgPCB0b2tsZW5bdG9rbWFya2VyKzRdOyBwb3MrKywgcCsrKQotICAg
ICAgICB7Ci0gICAgICAgICAgaWYgKCpwID09ICcvJykKLSAgICAgICAgICB7IAotICAgICAgICAg
ICAgLyogVGhlcmUgbWF5IGJlIFkySyBidWdzIGluIHRoZSBkYXRlLiBEb24ndCBzaW1wbGlmeSB0
bwotICAgICAgICAgICAgICogcG9zICE9IChsZW4tMykgJiYgcG9zICE9IChsZW4tNikgbGlrZSB0
aW1lIGlzIGRvbmUuCi0gICAgICAgICAgICAqLyAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
ICgodG9rZW5zW3Rva21hcmtlcis0XVsxXSkgPT0gJy8nKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBpZiAocG9zICE9IDEgJiYgcG9zICE9IDQpCi0gICAgICAgICAgICAgICAgbHN0eWxl
ID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHBvcyAhPSAyICYmIHBv
cyAhPSA1KQotICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgIH0KLSAgICAgICAg
ICBlbHNlIGlmICgqcCAhPSAnLScgJiYgIWlzQVNDSUlEaWdpdCgqcCkpCi0gICAgICAgICAgICBs
c3R5bGUgPSAwOwotICAgICAgICAgIGVsc2UgaWYgKCpwID09ICctJyAmJiBwb3MgIT0gNCAmJiBw
b3MgIT0gNykKLSAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgZm9y
IChwb3MgPSAwLCBwID0gdG9rZW5zW3Rva21hcmtlcis1XTsgCi0gICAgICAgICAgICAgbHN0eWxl
ICYmIHBvcyA8IHRva2xlblt0b2ttYXJrZXIrNV07IHBvcysrLCBwKyspCi0gICAgICAgIHsKLSAg
ICAgICAgICBpZiAoKnAgIT0gJzonICYmICFpc0FTQ0lJRGlnaXQoKnApKQotICAgICAgICAgICAg
bHN0eWxlID0gMDsKLSAgICAgICAgICBlbHNlIGlmICgqcCA9PSAnOicgJiYgcG9zICE9ICh0b2ts
ZW5bdG9rbWFya2VyKzVdLTMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBvcyAh
PSAodG9rbGVuW3Rva21hcmtlcis1XS02KSkKLSAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAg
ICAgIH0KLSAgICAgIH0gLyogaW5pdGlhbCBpZigpICovCi0KLSAgICAgIGlmIChsc3R5bGUgPT0g
J0MnKQotICAgICAgewotICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOwotICAgICAgICBz
dGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7Ci0KLSAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXIr
NF07Ci0gICAgICAgIGlmICh0b2tsZW5bdG9rbWFya2VyKzRdID09IDEwKSAvKiBuZXdzdHlsZTog
WVlZWS1NTS1ERCBmb3JtYXQgKi8KLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdC5tb2RpZmll
ZFRpbWUudG1feWVhciA9IGF0b2kocCswKSAtIDE5MDA7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlm
aWVkVGltZS50bV9tb24gID0gYXRvaShwKzUpIC0gMTsKLSAgICAgICAgICByZXN1bHQubW9kaWZp
ZWRUaW1lLnRtX21kYXkgPSBhdG9pKHArOCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAvKiBv
bGRzdHlsZTogW01dTS9ERC9ZWSBmb3JtYXQgKi8KLSAgICAgICAgewotICAgICAgICAgIHBvcyA9
IHRva2xlblt0b2ttYXJrZXIrNF07Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9t
b24gID0gYXRvaShwKSAtIDE7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5
ID0gYXRvaSgocCtwb3MpLTUpOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVh
ciA9IGF0b2koKHArcG9zKS0yKTsKLSAgICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50
bV95ZWFyIDwgNzApCi0gICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgKz0g
MTAwOwotICAgICAgICB9CiAKLSAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXIrNV07Ci0gICAg
ICAgIHBvcyA9IHRva2xlblt0b2ttYXJrZXIrNV07Ci0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRp
bWUudG1faG91ciAgPSBhdG9pKHApOwotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21p
biA9IGF0b2koKHArcG9zKS01KTsKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9zZWMg
PSBhdG9pKChwK3BvcyktMik7Ci0KLSAgICAgICAgcmVzdWx0LmNhc2VTZW5zaXRpdmUgPSB0cnVl
OwotICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMF07Ci0gICAgICAgIHJlc3VsdC5m
aWxlbmFtZUxlbmd0aCA9IHRva2xlblswXTsKLSAgICAgICAgcmVzdWx0LnR5cGUgID0gRlRQRmls
ZUVudHJ5OwotCi0gICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyXTsKLSAgICAgICAgaWYgKHRv
a2xlblt0b2ttYXJrZXJdID09IDMgJiYgKnA9PSdEJyAmJiBwWzFdPT0nSScgJiYgcFsyXT09J1In
KQotICAgICAgICAgIHJlc3VsdC50eXBlICA9IEZUUERpcmVjdG9yeUVudHJ5OwotCi0gICAgICAg
IGlmICgoLypuZXdzdHlsZSovIHRva2xlblt0b2ttYXJrZXIrNF0gPT0gMTAgJiYgdG9rbWFya2Vy
ID4gMSkgfHwKLSAgICAgICAgICAgICgvKm9sZHN0eWxlKi8gdG9rbGVuW3Rva21hcmtlcis0XSAh
PSAxMCAmJiB0b2ttYXJrZXIgPiAyKSkKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBoYXZlIGEgZmlsZXR5cGUgY29sdW1uICovCi0gICAgICAgICAgY2hhciAqZG90Owot
ICAgICAgICAgIHAgPSAmKHRva2Vuc1swXVt0b2tsZW5bMF1dKTsKLSAgICAgICAgICBtZW1jcHko
ICZkb3QsICZwLCBzaXplb2YoZG90KSApOyAvKiBOQVNUWSEgKi8KLSAgICAgICAgICAqZG90Kysg
PSAnLic7Ci0gICAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAgICAgICAgICBmb3IgKHBvcyA9IDA7
IHBvcyA8IHRva2xlblsxXTsgcG9zKyspCi0gICAgICAgICAgICAqZG90KysgPSAqcCsrOwotICAg
ICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCArPSAxICsgdG9rbGVuWzFdOwotICAgICAgICB9
CisgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXIrNV07CisgICAgICAgICAgICAg
ICAgcG9zID0gdG9rbGVuW3Rva21hcmtlcis1XTsKKyAgICAgICAgICAgICAgICByZXN1bHQubW9k
aWZpZWRUaW1lLnRtX2hvdXIgID0gYXRvaShwKTsKKyAgICAgICAgICAgICAgICByZXN1bHQubW9k
aWZpZWRUaW1lLnRtX21pbiA9IGF0b2koKHArcG9zKS01KTsKKyAgICAgICAgICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX3NlYyA9IGF0b2koKHArcG9zKS0yKTsKKworICAgICAgICAgICAg
ICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHQu
ZmlsZW5hbWUgPSB0b2tlbnNbMF07CisgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVu
Z3RoID0gdG9rbGVuWzBdOworICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlICA9IEZUUEZpbGVF
bnRyeTsKKworICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyXTsKKyAgICAgICAg
ICAgICAgICBpZiAodG9rbGVuW3Rva21hcmtlcl0gPT0gMyAmJiAqcCA9PSAnRCcgJiYgcFsxXSA9
PSAnSScgJiYgcFsyXSA9PSAnUicpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlICA9
IEZUUERpcmVjdG9yeUVudHJ5OworCisgICAgICAgICAgICAgICAgaWYgKCgvKm5ld3N0eWxlKi8g
dG9rbGVuW3Rva21hcmtlcis0XSA9PSAxMCAmJiB0b2ttYXJrZXIgPiAxKQorICAgICAgICAgICAg
ICAgICAgICB8fCAoLypvbGRzdHlsZSovIHRva2xlblt0b2ttYXJrZXIrNF0gIT0gMTAgJiYgdG9r
bWFya2VyID4gMikpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogaGF2ZSBhIGZpbGV0eXBlIGNv
bHVtbiAqLworICAgICAgICAgICAgICAgICAgICBjaGFyKiBkb3Q7CisgICAgICAgICAgICAgICAg
ICAgIHAgPSAmKHRva2Vuc1swXVt0b2tsZW5bMF1dKTsKKyAgICAgICAgICAgICAgICAgICAgbWVt
Y3B5KCZkb3QsICZwLCBzaXplb2YoZG90KSk7IC8qIE5BU1RZISAqLworICAgICAgICAgICAgICAg
ICAgICAqZG90KysgPSAnLic7CisgICAgICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbMV07Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgdG9rbGVuWzFdOyBwb3MrKykK
KyAgICAgICAgICAgICAgICAgICAgICAgICpkb3QrKyA9ICpwKys7CisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCArPSAxICsgdG9rbGVuWzFdOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIC8qIG9sZHN0eWxlIExJU1RJTkc6IAorICAgICAgICAg
ICAgICAgICAqIGZpbGVzL2RpcnMgbm90IG9uIHRoZSAnQScgbWluaWRpc2sgYXJlIG5vdCBSRVRS
aWV2YWJsZS9DSERJUmFibGUgCisgICAgICAgICAgICAgICAgIGlmICh0b2tsZW5bdG9rbWFya2Vy
KzRdICE9IDEwICYmICp0b2tlbnNbdG9rbWFya2VyLTFdICE9ICdBJykKKyAgICAgICAgICAgICAg
ICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsKKyAgICAgICAgICAgICAgICAgKi8KIAotICAgICAgICAv
KiBvbGRzdHlsZSBMSVNUSU5HOiAKLSAgICAgICAgICogZmlsZXMvZGlycyBub3Qgb24gdGhlICdB
JyBtaW5pZGlzayBhcmUgbm90IFJFVFJpZXZhYmxlL0NIRElSYWJsZSAKLSAgICAgICAgaWYgKHRv
a2xlblt0b2ttYXJrZXIrNF0gIT0gMTAgJiYgKnRva2Vuc1t0b2ttYXJrZXItMV0gIT0gJ0EnKQot
ICAgICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7Ci0gICAgICAgICovCi0gICAgICAgIAotICAg
ICAgICAvKiBWTS9DTVMgTElTVGluZ3MgaGF2ZSBubyB1c2FibGUgZmlsZXNpemUgZmllbGQuIAot
ICAgICAgICAgKiBIYXZlIHRvIHVzZSB0aGUgJ1NJWkUnIGNvbW1hbmQgZm9yIHRoYXQuCi0gICAg
ICAgICovCi0gICAgICAgIHJldHVybiByZXN1bHQudHlwZTsKLQotICAgICAgfSAvKiBpZiAobHN0
eWxlID09ICdDJyAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gbHN0
eWxlKSkgKi8KLSAgICB9IC8qIFZNL0NNUyAqLworICAgICAgICAgICAgICAgIC8qIFZNL0NNUyBM
SVNUaW5ncyBoYXZlIG5vIHVzYWJsZSBmaWxlc2l6ZSBmaWVsZC4gCisgICAgICAgICAgICAgICAg
ICogSGF2ZSB0byB1c2UgdGhlICdTSVpFJyBjb21tYW5kIGZvciB0aGF0LgorICAgICAgICAgICAg
ICAgICAqLworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudHlwZTsKKworICAgICAgICAg
ICAgfSAvKiBpZiAobHN0eWxlID09ICdDJyAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5s
aXN0U3R5bGUgPT0gbHN0eWxlKSkgKi8KKyAgICAgICAgfSAvKiBWTS9DTVMgKi8KICNlbmRpZgog
Ci0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysgKi8KKyAgICAgICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KIAogI2lmIGRlZmluZWQoU1VQUE9SVF9E
T1MpIC8qIFdpbk5UIERPUyBkaXJzdHlsZSAqLwotICAgIGlmICghbHN0eWxlICYmICghc3RhdGUu
bGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnVycpKQotICAgIHsKLSAgICAgIC8qCi0g
ICAgICAgKiAiMTAtMjMtMDAgIDAxOjI3UE0gICAgICAgPERJUj4gICAgICAgICAgdmVyb25pc3Qi
Ci0gICAgICAgKiAiMDYtMTUtMDAgIDA3OjM3QU0gICAgICAgPERJUj4gICAgICAgICAgem9lIgot
ICAgICAgICogIjA3LTE0LTAwICAwMTozNVBNICAgICAgICAgICAgICAyMDk0OTI2IGNhbnByYW5r
ZGVzay50aWYiCi0gICAgICAgKiAiMDctMjEtMDAgIDAxOjE5UE0gICAgICAgICAgICAgICAgOTUw
NzcgSm9uIEthdWZmbWFuIEVuam95cyB0aGUgR29vZCBMaWZlLmpwZyIKLSAgICAgICAqICIwNy0y
MS0wMCAgMDE6MTlQTSAgICAgICAgICAgICAgICA1MjI3NSBOYW1lIFBsYXRlLmpwZyIKLSAgICAg
ICAqICIwNy0xNC0wMCAgMDE6MzhQTSAgICAgICAgICAgICAgMjI1MDU0MCBWYWxlbnRpbmVvZmZw
cmFuay1IaVJlcy5qcGciCi0gICAgICAqLwotICAgICAgaWYgKChudW10b2tzID49IDQpICYmIHRv
a2xlblswXSA9PSA4ICYmIHRva2xlblsxXSA9PSA3ICYmIAotICAgICAgICAgICgqdG9rZW5zWzJd
ID09ICc8JyB8fCBpc0FTQ0lJRGlnaXQoKnRva2Vuc1syXSkpICkKLSAgICAgIHsKLSAgICAgICAg
cCA9IHRva2Vuc1swXTsKLSAgICAgICAgaWYgKCBpc0FTQ0lJRGlnaXQocFswXSkgJiYgaXNBU0NJ
SURpZ2l0KHBbMV0pICYmIHBbMl09PSctJyAmJiAKLSAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQo
cFszXSkgJiYgaXNBU0NJSURpZ2l0KHBbNF0pICYmIHBbNV09PSctJyAmJgotICAgICAgICAgICAg
IGlzQVNDSUlEaWdpdChwWzZdKSAmJiBpc0FTQ0lJRGlnaXQocFs3XSkgKQotICAgICAgICB7Ci0g
ICAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAgICAgICAgICBpZiAoIGlzQVNDSUlEaWdpdChwWzBd
KSAmJiBpc0FTQ0lJRGlnaXQocFsxXSkgJiYgcFsyXT09JzonICYmIAotICAgICAgICAgICAgICAg
aXNBU0NJSURpZ2l0KHBbM10pICYmIGlzQVNDSUlEaWdpdChwWzRdKSAmJiAKLSAgICAgICAgICAg
ICAgIChwWzVdPT0nQScgfHwgcFs1XT09J1AnKSAmJiBwWzZdPT0nTScpCi0gICAgICAgICAgewot
ICAgICAgICAgICAgbHN0eWxlID0gJ1cnOwotICAgICAgICAgICAgaWYgKCFzdGF0ZS5saXN0U3R5
bGUpCi0gICAgICAgICAgICB7ICAgICAgICAgICAgCi0gICAgICAgICAgICAgIHAgPSB0b2tlbnNb
Ml07Ci0gICAgICAgICAgICAgIC8qIDxESVI+IG9yIDxKVU5DVElPTj4gKi8KLSAgICAgICAgICAg
ICAgaWYgKCpwICE9ICc8JyB8fCBwW3Rva2xlblsyXS0xXSAhPSAnPicpCi0gICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDE7IChsc3R5bGUgJiYgcG9zIDwgdG9rbGVu
WzJdKTsgcG9zKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgaWYgKCFp
c0FTQ0lJRGlnaXQoKisrcCkpCi0gICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAg
ICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9
PSAnVycpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogIjEwLTIzLTAwICAwMToy
N1BNICAgICAgIDxESVI+ICAgICAgICAgIHZlcm9uaXN0IgorICAgICAgICAgICAgICogIjA2LTE1
LTAwICAwNzozN0FNICAgICAgIDxESVI+ICAgICAgICAgIHpvZSIKKyAgICAgICAgICAgICAqICIw
Ny0xNC0wMCAgMDE6MzVQTSAgICAgICAgICAgICAgMjA5NDkyNiBjYW5wcmFua2Rlc2sudGlmIgor
ICAgICAgICAgICAgICogIjA3LTIxLTAwICAwMToxOVBNICAgICAgICAgICAgICAgIDk1MDc3IEpv
biBLYXVmZm1hbiBFbmpveXMgdGhlIEdvb2QgTGlmZS5qcGciCisgICAgICAgICAgICAgKiAiMDct
MjEtMDAgIDAxOjE5UE0gICAgICAgICAgICAgICAgNTIyNzUgTmFtZSBQbGF0ZS5qcGciCisgICAg
ICAgICAgICAgKiAiMDctMTQtMDAgIDAxOjM4UE0gICAgICAgICAgICAgIDIyNTA1NDAgVmFsZW50
aW5lb2ZmcHJhbmstSGlSZXMuanBnIgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAo
KG51bXRva3MgPj0gNCkgJiYgdG9rbGVuWzBdID09IDggJiYgdG9rbGVuWzFdID09IDcKKyAgICAg
ICAgICAgICAgICAmJiAoKnRva2Vuc1syXSA9PSAnPCcgfHwgaXNBU0NJSURpZ2l0KCp0b2tlbnNb
Ml0pKSkgeworICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbMF07CisgICAgICAgICAgICAgICAg
aWYgKCBpc0FTQ0lJRGlnaXQocFswXSkgJiYgaXNBU0NJSURpZ2l0KHBbMV0pICYmIHBbMl0gPT0g
Jy0nCisgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdChwWzNdKSAmJiBpc0FTQ0lJ
RGlnaXQocFs0XSkgJiYgcFs1XSA9PSAnLScKKyAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJ
SURpZ2l0KHBbNl0pICYmIGlzQVNDSUlEaWdpdChwWzddKSkgeworICAgICAgICAgICAgICAgICAg
ICBwID0gdG9rZW5zWzFdOworICAgICAgICAgICAgICAgICAgICBpZiAoIGlzQVNDSUlEaWdpdChw
WzBdKSAmJiBpc0FTQ0lJRGlnaXQocFsxXSkgJiYgcFsyXSA9PSAnOicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICYmIGlzQVNDSUlEaWdpdChwWzNdKSAmJiBpc0FTQ0lJRGlnaXQocFs0XSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICYmIChwWzVdID09ICdBJyB8fCBwWzVdID09ICdQJykgJiYg
cFs2XSA9PSAnTScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9ICdXJzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGUubGlzdFN0eWxlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1syXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiA8RElSPiBvciA8SlVOQ1RJT04+ICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCpwICE9ICc8JyB8fCBwW3Rva2xlblsyXS0xXSAhPSAnPicpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChwb3MgPSAxOyAobHN0eWxlICYmIHBvcyA8IHRva2xl
blsyXSk7IHBvcysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWlzQVNDSUlEaWdpdCgqKytwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlm
IChsc3R5bGUgPT0gJ1cnKQotICAgICAgewotICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVl
OwotICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7Ci0KLSAgICAgICAgcCA9ICYobGlu
ZVtsaW5lbGVuXSk7IC8qIGxpbmUgZW5kICovCi0gICAgICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZl
ID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzNdOwotICAgICAgICBy
ZXN1bHQuZmlsZW5hbWVMZW5ndGggPSBwIC0gdG9rZW5zWzNdOwotICAgICAgICByZXN1bHQudHlw
ZSA9IEZUUERpcmVjdG9yeUVudHJ5OwotCi0gICAgICAgIGlmICgqdG9rZW5zWzJdICE9ICc8Jykg
Lyogbm90IDxESVI+IG9yIDxKVU5DVElPTj4gKi8KLSAgICAgICAgewotICAgICAgICAgIC8vIHRy
eSB0byBoYW5kbGUgY29ycmVjdGx5IHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxl
bmFtZQotICAgICAgICAgIC8vIGZpbGVzaXplICh0b2tlblsyXSkgbXVzdCBlbmQgYXQgb2Zmc2V0
IDM4Ci0gICAgICAgICAgaWYgKHRva2Vuc1syXSArIHRva2xlblsyXSAtIGxpbmUgPT0gMzgpIHsK
LSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSA9ICYobGluZVszOV0pOwotICAgICAgICAgICAg
cmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcCAtIHJlc3VsdC5maWxlbmFtZTsKLSAgICAgICAgICB9
Ci0gICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7Ci0gICAgICAgICAgcG9zID0g
dG9rbGVuWzJdOwotICAgICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZyh0b2tlbnNbMl0s
IHBvcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLy8gdHJ5IHRvIGhh
bmRsZSBjb3JyZWN0bHkgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVuYW1lCi0g
ICAgICAgICAgLy8gdG9rZW5bMl0gbXVzdCBiZWdpbiBhdCBvZmZzZXQgMjQsIHRoZSBsZW5ndGgg
aXMgNSBvciAxMAotICAgICAgICAgIC8vIHRva2VuWzNdIG11c3QgYmVnaW4gYXQgb2Zmc2V0IDM5
IG9yIGhpZ2hlcgotICAgICAgICAgIGlmICh0b2tlbnNbMl0gLSBsaW5lID09IDI0ICYmICh0b2ts
ZW5bMl0gPT0gNSB8fCB0b2tsZW5bMl0gPT0gMTApICYmCi0gICAgICAgICAgICAgIHRva2Vuc1sz
XSAtIGxpbmUgPj0gMzkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSA9ICYobGluZVsz
OV0pOwotICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcCAtIHJlc3VsdC5maWxl
bmFtZTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoKHRva2Vuc1syXVsxXSkgIT0gJ0Qn
KSAvKiBub3QgPERJUj4gKi8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQudHlwZSA9
IEZUUEp1bmtFbnRyeTsgLyogdW5rbm93biB1bnRpbCBqdW5jIGZvciBzdXJlICovCi0gICAgICAg
ICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4gNCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgcCA9IHJlc3VsdC5maWxlbmFtZTsKLSAgICAgICAgICAgICAgZm9yIChwb3MgPSBy
ZXN1bHQuZmlsZW5hbWVMZW5ndGggLSA0OyBwb3MgPiAwOyBwb3MtLSkKLSAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmIChwWzBdID09ICcgJyAmJiBwWzNdID09ICcgJyAmJiBwWzJd
ID09ICc+JyAmJgotICAgICAgICAgICAgICAgICAgICAocFsxXSA9PSAnPScgfHwgcFsxXSA9PSAn
LScpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0g
RlRQTGlua0VudHJ5OwotICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0g
cCAtIHJlc3VsdC5maWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZSA9
IHAgKyA0OwotICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoID0gJihsaW5l
W2xpbmVsZW5dKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHJlc3Vs
dC5saW5rbmFtZTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAo
bHN0eWxlID09ICdXJykgeworICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7
CisgICAgICAgICAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOworCisgICAgICAgICAg
ICAgICAgcCA9ICYobGluZVtsaW5lbGVuXSk7IC8qIGxpbmUgZW5kICovCisgICAgICAgICAgICAg
ICAgcmVzdWx0LmNhc2VTZW5zaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZSA9IHRva2Vuc1szXTsKKyAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5n
dGggPSBwIC0gdG9rZW5zWzNdOworICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRGly
ZWN0b3J5RW50cnk7CisKKyAgICAgICAgICAgICAgICBpZiAoKnRva2Vuc1syXSAhPSAnPCcpIHsg
Lyogbm90IDxESVI+IG9yIDxKVU5DVElPTj4gKi8KKyAgICAgICAgICAgICAgICAgICAgLy8gdHJ5
IHRvIGhhbmRsZSBjb3JyZWN0bHkgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVu
YW1lCisgICAgICAgICAgICAgICAgICAgIC8vIGZpbGVzaXplICh0b2tlblsyXSkgbXVzdCBlbmQg
YXQgb2Zmc2V0IDM4CisgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbnNbMl0gKyB0b2tsZW5b
Ml0gLSBsaW5lID09IDM4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5h
bWUgPSAmKGxpbmVbMzldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFt
ZUxlbmd0aCA9IHAgLSByZXN1bHQuZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7CisgICAgICAgICAg
ICAgICAgICAgIHBvcyA9IHRva2xlblsyXTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZp
bGVTaXplID0gU3RyaW5nKHRva2Vuc1syXSwgcG9zKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAvLyB0cnkgdG8gaGFuZGxlIGNvcnJlY3RseSBzcGFjZXMg
YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgLy8g
dG9rZW5bMl0gbXVzdCBiZWdpbiBhdCBvZmZzZXQgMjQsIHRoZSBsZW5ndGggaXMgNSBvciAxMAor
ICAgICAgICAgICAgICAgICAgICAvLyB0b2tlblszXSBtdXN0IGJlZ2luIGF0IG9mZnNldCAzOSBv
ciBoaWdoZXIKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2Vuc1syXSAtIGxpbmUgPT0gMjQg
JiYgKHRva2xlblsyXSA9PSA1IHx8IHRva2xlblsyXSA9PSAxMCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICYmIHRva2Vuc1szXSAtIGxpbmUgPj0gMzkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5maWxlbmFtZSA9ICYobGluZVszOV0pOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcCAtIHJlc3VsdC5maWxlbmFtZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICgodG9rZW5zWzJdWzFdKSAh
PSAnRCcpIHsgLyogbm90IDxESVI+ICovCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu
dHlwZSA9IEZUUEp1bmtFbnRyeTsgLyogdW5rbm93biB1bnRpbCBqdW5jIGZvciBzdXJlICovCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4gNCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSByZXN1bHQuZmlsZW5hbWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChwb3MgPSByZXN1bHQuZmlsZW5hbWVMZW5ndGggLSA0
OyBwb3MgPiAwOyBwb3MtLSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cFswXSA9PSAnICcgJiYgcFszXSA9PSAnICcgJiYgcFsyXSA9PSAnPicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIChwWzFdID09ICc9JyB8fCBwWzFdID09ICctJykpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQTGlu
a0VudHJ5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVu
YW1lTGVuZ3RoID0gcCAtIHJlc3VsdC5maWxlbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZSA9IHAgKyA0OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoID0gJihsaW5lW2xpbmVsZW5d
KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHJlc3VsdC5saW5r
bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9ICAgIAotICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgCi0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1fbW9uID0gYXRvaSh0b2tlbnNbMF0rMCk7Ci0gICAgICAgIGlmIChyZXN1bHQubW9kaWZpZWRU
aW1lLnRtX21vbiAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGlt
ZS50bV9tb24tLTsKLSAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBhdG9p
KHRva2Vuc1swXSszKTsKLSAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBh
dG9pKHRva2Vuc1swXSs2KTsKLSAgICAgICAgICAvKiBpZiB5ZWFyIGhhcyBvbmx5IHR3byBkaWdp
dHMgdGhlbiBhc3N1bWUgdGhhdAotICAgICAgICAgICAgICAgMDAtNzkgaXMgMjAwMC0yMDc5Ci0g
ICAgICAgICAgICAgICA4MC05OSBpcyAxOTgwLTE5OTkgKi8KLSAgICAgICAgICBpZiAocmVzdWx0
Lm1vZGlmaWVkVGltZS50bV95ZWFyIDwgODApCi0gICAgICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX3llYXIgKz0gMjAwMDsKLSAgICAgICAgICBlbHNlIGlmIChyZXN1bHQubW9kaWZpZWRU
aW1lLnRtX3llYXIgPCAxMDApCi0gICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3ll
YXIgKz0gMTkwMDsKLSAgICAgICAgfQogCi0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1f
aG91ciA9IGF0b2kodG9rZW5zWzFdKzApOwotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRt
X21pbiA9IGF0b2kodG9rZW5zWzFdKzMpOwotICAgICAgICBpZiAoKHRva2Vuc1sxXVs1XSkgPT0g
J1AnICYmIHJlc3VsdC5tb2RpZmllZFRpbWUudG1faG91ciA8IDEyKQotICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1faG91ciArPSAxMjsKLQotICAgICAgICAvKiB0aGUgY2FsbGVyIHNo
b3VsZCBkbyB0aGlzIChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIgaXMgZGVzaXJlZCkKLSAgICAg
ICAgaWYgKHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5ICYmIHJlc3VsdC5maWxlbmFt
ZVswXSA9PSAnLicgJiYKLSAgICAgICAgICAgIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMSB8
fCAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDIgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcuJykpKQotICAgICAgICAgIHJl
dHVybiBGVFBKdW5rRW50cnk7Ci0gICAgICAgICovCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdC50
eXBlOyAgCi0gICAgICB9IC8qIGlmIChsc3R5bGUgPT0gJ1cnICYmICghc3RhdGUubGlzdFN0eWxl
IHx8IHN0YXRlLmxpc3RTdHlsZSA9PSBsc3R5bGUpKSAqLwotICAgIH0gLyogaWYgKCFsc3R5bGUg
JiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdXJykpICovCisgICAg
ICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBhdG9pKHRva2Vuc1swXSsw
KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24tLTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaSh0b2tlbnNbMF0r
Myk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IGF0
b2kodG9rZW5zWzBdKzYpOworICAgICAgICAgICAgICAgICAgICAvKiBpZiB5ZWFyIGhhcyBvbmx5
IHR3byBkaWdpdHMgdGhlbiBhc3N1bWUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAwMC03
OSBpcyAyMDAwLTIwNzkKKyAgICAgICAgICAgICAgICAgICAgICAgODAtOTkgaXMgMTk4MC0xOTk5
ICovCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIg
PCA4MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVh
ciArPSAyMDAwOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQubW9kaWZpZWRU
aW1lLnRtX3llYXIgPCAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZp
ZWRUaW1lLnRtX3llYXIgKz0gMTkwMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIgPSBhdG9pKHRva2Vuc1sxXSswKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiA9IGF0b2kodG9rZW5zWzFd
KzMpOworICAgICAgICAgICAgICAgIGlmICgodG9rZW5zWzFdWzVdKSA9PSAnUCcgJiYgcmVzdWx0
Lm1vZGlmaWVkVGltZS50bV9ob3VyIDwgMTIpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5t
b2RpZmllZFRpbWUudG1faG91ciArPSAxMjsKKworICAgICAgICAgICAgICAgIC8qIHRoZSBjYWxs
ZXIgc2hvdWxkIGRvIHRoaXMgKGlmIGRyb3BwaW5nICIuIiBhbmQgIi4uIiBpcyBkZXNpcmVkKQor
ICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSAm
JiByZXN1bHQuZmlsZW5hbWVbMF0gPT0gJy4nICYmCisgICAgICAgICAgICAgICAgICAgKHJlc3Vs
dC5maWxlbmFtZUxlbmd0aCA9PSAxIHx8IChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMiAmJgor
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZVsxXSA9PSAnLicpKSkKKyAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OworICAgICAgICAgICAgICAgICAgICovCisK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7ICAKKyAgICAgICAgICAgIH0gLyog
aWYgKGxzdHlsZSA9PSAnVycgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxl
ID09IGxzdHlsZSkpICovCisgICAgICAgIH0gLyogaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0
U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdXJykpICovCiAjZW5kaWYKIAotICAgIC8qICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
ICovCisgICAgICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrICovCiAKICNpZiBkZWZpbmVkKFNVUFBPUlRfT1MyKQotICAgIGlm
ICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnTycp
KSAvKiBPUy8yIHRlc3QgKi8KLSAgICB7Ci0gICAgICAvKiAyMjAgc2VydmVyIElCTSBUQ1AvSVAg
Zm9yIE9TLzIgLSBGVFAgU2VydmVyIHZlciAyMzowNDozNiBvbiBKYW4gMTUgMTk5NyByZWFkeS4K
LSAgICAgICogZml4ZWQgcG9zaXRpb24sIHNwYWNlIHBhZGRlZCBjb2x1bW5zLiBJIGhhdmUgb25s
eSBhIHZhZ3VlIGlkZWEgCi0gICAgICAqIG9mIHdoYXQgdGhlIGNvbnRlbnRzIGJldHdlZW4gY29s
IDE4IGFuZCAzNCBtaWdodCBiZTogQWxsIEkgY2FuIGluZmVyCi0gICAgICAqIGlzIHRoYXQgdGhl
cmUgbWF5IGJlIGF0dHJpYnV0ZSBmbGFncyBpbiB0aGVyZSBhbmQgdGhlcmUgbWF5IGJlIAotICAg
ICAgKiBhICIgRElSIiBpbiB0aGVyZS4KLSAgICAgICoKLSAgICAgICogICAgICAgICAgMSAgICAg
ICAgIDIgICAgICAgICAzICAgICAgICAgNCAgICAgICAgIDUgICAgICAgICA2Ci0gICAgICAqMDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OQotICAgICAgKi0tLS0tIHNpemUgLS0tLS0tLXw/Pz8/Pz8/Pz8/Pz8/Pz8gTU0t
REQtWVl8ICBISDpNTXwgbm5ubm5ubm5uLi4uLgotICAgICAgKiAgICAgICAgICAgICAgICAgMCAg
RElSICAgICAgICAgICAgMDQtMTEtOTUgICAxNjoyNiAgLgotICAgICAgKiAgICAgICAgICAgICAg
ICAgMCAgRElSICAgICAgICAgICAgMDQtMTEtOTUgICAxNjoyNiAgLi4KLSAgICAgICogICAgICAg
ICAgICAgICAgIDAgIERJUiAgICAgICAgICAgIDA0LTExLTk1ICAgMTY6MjYgIEFERFJFU1MKLSAg
ICAgICogICAgICAgICAgICAgICA2MTIgIFJIU0EgICAgICAgICAgIDA3LTI4LTk1ICAgMTY6NDUg
IGFpcl90cmExLmJhZwotICAgICAgKiAgICAgICAgICAgICAgIDE5NSAgQSAgICAgICAgICAgICAg
MDgtMDktOTUgICAxMDoyMyAgQWxmYTEuYmFnCi0gICAgICAqICAgICAgICAgICAgICAgICAwICBS
SFMgICBESVIgICAgICAwNC0xMS05NSAgIDE2OjI2ICBBVFRBQ0gKLSAgICAgICogICAgICAgICAg
ICAgICAzNzIgIEEgICAgICAgICAgICAgIDA4LTA5LTk1ICAgMTA6MjYgIEF1c3NpZV8xLmJhZwot
ICAgICAgKiAgICAgICAgICAgIDMxMDk5MiAgICAgICAgICAgICAgICAgMDYtMjgtOTQgICAwOTo1
NiAgSU5TVEFMTC5FWEUKLSAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAg
ICAgIDIgICAgICAgICAzICAgICAgICAgNAotICAgICAgKiAgICAgICAgICAgICAgICAgIDAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5Ci0gICAgICAqIGRp
cmxpc3QgZnJvbSB0aGUgbWlycm9yLnBsIHByb2plY3QsIGNvbCBwb3NpdGlvbnMgZnJvbSBNb3pp
bGxhLgotICAgICAgKi8KLSAgICAgIHAgPSAmKGxpbmVbdG9rbGVuWzBdXSk7Ci0gICAgICAvKiBc
cyhcZFxkLVxkXGQtXGRcZClccysoXGRcZDpcZFxkKVxzICovCi0gICAgICBpZiAobnVtdG9rcyA+
PSA0ICYmIHRva2xlblswXSA8PSAxOCAmJiBpc0FTQ0lJRGlnaXQoKnRva2Vuc1swXSkgJiYKLSAg
ICAgICAgIChsaW5lbGVuIC0gdG9rbGVuWzBdKSA+PSAoNTMtMTgpICAgICAgICAgICAgICAgICAg
ICAgICAgJiYKLSAgICAgICAgIHBbMTgtMThdID09ICcgJyAmJiBwWzM0LTE4XSA9PSAnICcgICAg
ICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgIHBbMzctMThdID09ICctJyAmJiBwWzQwLTE4
XSA9PSAnLScgJiYgcFs0My0xOF0gPT0gJyAnICAgJiYKLSAgICAgICAgIHBbNDUtMThdID09ICcg
JyAmJiBwWzQ4LTE4XSA9PSAnOicgJiYgcFs1MS0xOF0gPT0gJyAnICAgJiYKLSAgICAgICAgIGlz
QVNDSUlEaWdpdChwWzM1LTE4XSkgJiYgaXNBU0NJSURpZ2l0KHBbMzYtMThdKSAgICAgICAgJiYK
LSAgICAgICAgIGlzQVNDSUlEaWdpdChwWzM4LTE4XSkgJiYgaXNBU0NJSURpZ2l0KHBbMzktMThd
KSAgICAgICAgJiYKLSAgICAgICAgIGlzQVNDSUlEaWdpdChwWzQxLTE4XSkgJiYgaXNBU0NJSURp
Z2l0KHBbNDItMThdKSAgICAgICAgJiYKLSAgICAgICAgIGlzQVNDSUlEaWdpdChwWzQ2LTE4XSkg
JiYgaXNBU0NJSURpZ2l0KHBbNDctMThdKSAgICAgICAgJiYKLSAgICAgICAgIGlzQVNDSUlEaWdp
dChwWzQ5LTE4XSkgJiYgaXNBU0NJSURpZ2l0KHBbNTAtMThdKQotICAgICAgKQotICAgICAgewot
ICAgICAgICBsc3R5bGUgPSAnTyc7IC8qIE9TLzIgKi8KLSAgICAgICAgaWYgKCFzdGF0ZS5saXN0
U3R5bGUpCi0gICAgICAgIHsgICAgICAgICAgICAKLSAgICAgICAgICBmb3IgKHBvcyA9IDE7IGxz
dHlsZSAmJiBwb3MgPCB0b2tsZW5bMF07IHBvcysrKQotICAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghaXNBU0NJSURpZ2l0KHRva2Vuc1swXVtwb3NdKSkKLSAgICAgICAgICAgICAgbHN0eWxl
ID0gMDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKGxzdHls
ZSA9PSAnTycpCi0gICAgICB7Ci0gICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7Ci0gICAg
ICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKLQotICAgICAgICBwID0gJihsaW5lW3Rva2xl
blswXV0pOwotCi0gICAgICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZlID0gdHJ1ZTsKLSAgICAgICAg
cmVzdWx0LmZpbGVuYW1lID0gJnBbNTMtMThdOwotICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5n
dGggPSAoJihsaW5lW2xpbmVsZW5fc2Fuc193c3BdKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0gKHJlc3VsdC5maWxlbmFtZSk7Ci0gICAgICAgIHJlc3VsdC50eXBlID0gRlRQRmlsZUVu
dHJ5OwotCi0gICAgICAgIC8qIEkgZG9uJ3QgaGF2ZSBhIHJlYWwgbGlzdGluZyB0byBkZXRlcm1p
bmUgZXhhY3QgcG9zLCBzbyBzY2FuLiAqLwotICAgICAgICBmb3IgKHBvcyA9ICgxOC0xOCk7IHBv
cyA8ICgoMzUtMTgpLTQpOyBwb3MrKykKLSAgICAgICAgewotICAgICAgICAgIGlmIChwW3Bvcysw
XSA9PSAnICcgJiYgcFtwb3MrMV0gPT0gJ0QnICYmIAotICAgICAgICAgICAgICBwW3BvcysyXSA9
PSAnSScgJiYgcFtwb3MrM10gPT0gJ1InKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3Vs
dC50eXBlID0gRlRQRGlyZWN0b3J5RW50cnk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9IEZUUERpcmVj
dG9yeUVudHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgcG9zID0gdG9rbGVuWzBdOwotICAgICAg
ICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZyh0b2tlbnNbMF0sIHBvcyk7Ci0gICAgICAgIH0g
IAotICAgIAotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA9IGF0b2koJnBbMzUt
MThdKSAtIDE7Ci0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSA9IGF0b2koJnBb
MzgtMThdKTsKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyID0gYXRvaSgmcFs0
MS0xOF0pOwotICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyIDwgODApCi0g
ICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyICs9IDEwMDsKLSAgICAgICAgcmVz
dWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyID0gYXRvaSgmcFs0Ni0xOF0pOwotICAgICAgICByZXN1
bHQubW9kaWZpZWRUaW1lLnRtX21pbiA9IGF0b2koJnBbNDktMThdKTsKLSAgIAotICAgICAgICAv
KiB0aGUgY2FsbGVyIHNob3VsZCBkbyB0aGlzIChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIgaXMg
ZGVzaXJlZCkKLSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5ICYm
IHJlc3VsdC5maWxlbmFtZVswXSA9PSAnLicgJiYKLSAgICAgICAgICAgIChyZXN1bHQuZmlsZW5h
bWVMZW5ndGggPT0gMSB8fCAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDIgJiYKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcuJykp
KQotICAgICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7Ci0gICAgICAgICovCi0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdC50eXBlOwotICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdPJykgKi8KLQot
ICAgIH0gLyogaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0
eWxlID09ICdPJykpICovCisgICAgICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxl
IHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnTycpKSB7IC8qIE9TLzIgdGVzdCAqLworICAgICAgICAg
ICAgLyogMjIwIHNlcnZlciBJQk0gVENQL0lQIGZvciBPUy8yIC0gRlRQIFNlcnZlciB2ZXIgMjM6
MDQ6MzYgb24gSmFuIDE1IDE5OTcgcmVhZHkuCisgICAgICAgICAgICAgKiBmaXhlZCBwb3NpdGlv
biwgc3BhY2UgcGFkZGVkIGNvbHVtbnMuIEkgaGF2ZSBvbmx5IGEgdmFndWUgaWRlYSAKKyAgICAg
ICAgICAgICAqIG9mIHdoYXQgdGhlIGNvbnRlbnRzIGJldHdlZW4gY29sIDE4IGFuZCAzNCBtaWdo
dCBiZTogQWxsIEkgY2FuIGluZmVyCisgICAgICAgICAgICAgKiBpcyB0aGF0IHRoZXJlIG1heSBi
ZSBhdHRyaWJ1dGUgZmxhZ3MgaW4gdGhlcmUgYW5kIHRoZXJlIG1heSBiZSAKKyAgICAgICAgICAg
ICAqIGEgIiBESVIiIGluIHRoZXJlLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqICAg
ICAgICAgIDEgICAgICAgICAyICAgICAgICAgMyAgICAgICAgIDQgICAgICAgICA1ICAgICAgICAg
NgorICAgICAgICAgICAgICowMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5CisgICAgICAgICAgICAgKi0tLS0tIHNpemUg
LS0tLS0tLXw/Pz8/Pz8/Pz8/Pz8/Pz8gTU0tREQtWVl8ICBISDpNTXwgbm5ubm5ubm5uLi4uLgor
ICAgICAgICAgICAgICogICAgICAgICAgICAgICAgIDAgIERJUiAgICAgICAgICAgIDA0LTExLTk1
ICAgMTY6MjYgIC4KKyAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAwICBESVIgICAgICAg
ICAgICAwNC0xMS05NSAgIDE2OjI2ICAuLgorICAgICAgICAgICAgICogICAgICAgICAgICAgICAg
IDAgIERJUiAgICAgICAgICAgIDA0LTExLTk1ICAgMTY6MjYgIEFERFJFU1MKKyAgICAgICAgICAg
ICAqICAgICAgICAgICAgICAgNjEyICBSSFNBICAgICAgICAgICAwNy0yOC05NSAgIDE2OjQ1ICBh
aXJfdHJhMS5iYWcKKyAgICAgICAgICAgICAqICAgICAgICAgICAgICAgMTk1ICBBICAgICAgICAg
ICAgICAwOC0wOS05NSAgIDEwOjIzICBBbGZhMS5iYWcKKyAgICAgICAgICAgICAqICAgICAgICAg
ICAgICAgICAwICBSSFMgICBESVIgICAgICAwNC0xMS05NSAgIDE2OjI2ICBBVFRBQ0gKKyAgICAg
ICAgICAgICAqICAgICAgICAgICAgICAgMzcyICBBICAgICAgICAgICAgICAwOC0wOS05NSAgIDEw
OjI2ICBBdXNzaWVfMS5iYWcKKyAgICAgICAgICAgICAqICAgICAgICAgICAgMzEwOTkyICAgICAg
ICAgICAgICAgICAwNi0yOC05NCAgIDA5OjU2ICBJTlNUQUxMLkVYRQorICAgICAgICAgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgIDIgICAgICAgICAzICAgICAgICAg
NAorICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQorICAgICAgICAgICAgICogZGlybGlzdCBmcm9t
IHRoZSBtaXJyb3IucGwgcHJvamVjdCwgY29sIHBvc2l0aW9ucyBmcm9tIE1vemlsbGEuCisgICAg
ICAgICAgICAgKi8KKyAgICAgICAgICAgIHAgPSAmKGxpbmVbdG9rbGVuWzBdXSk7CisgICAgICAg
ICAgICAvKiBccyhcZFxkLVxkXGQtXGRcZClccysoXGRcZDpcZFxkKVxzICovCisgICAgICAgICAg
ICBpZiAobnVtdG9rcyA+PSA0ICYmIHRva2xlblswXSA8PSAxOCAmJiBpc0FTQ0lJRGlnaXQoKnRv
a2Vuc1swXSkKKyAgICAgICAgICAgICAgICAmJiAobGluZWxlbiAtIHRva2xlblswXSkgPj0gKDUz
LTE4KQorICAgICAgICAgICAgICAgICYmIHBbMTgtMThdID09ICcgJyAmJiBwWzM0LTE4XSA9PSAn
ICcKKyAgICAgICAgICAgICAgICAmJiBwWzM3LTE4XSA9PSAnLScgJiYgcFs0MC0xOF0gPT0gJy0n
ICYmIHBbNDMtMThdID09ICcgJworICAgICAgICAgICAgICAgICYmIHBbNDUtMThdID09ICcgJyAm
JiBwWzQ4LTE4XSA9PSAnOicgJiYgcFs1MS0xOF0gPT0gJyAnCisgICAgICAgICAgICAgICAgJiYg
aXNBU0NJSURpZ2l0KHBbMzUtMThdKSAmJiBpc0FTQ0lJRGlnaXQocFszNi0xOF0pCisgICAgICAg
ICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHBbMzgtMThdKSAmJiBpc0FTQ0lJRGlnaXQocFszOS0x
OF0pCisgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHBbNDEtMThdKSAmJiBpc0FTQ0lJ
RGlnaXQocFs0Mi0xOF0pCisgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHBbNDYtMThd
KSAmJiBpc0FTQ0lJRGlnaXQocFs0Ny0xOF0pCisgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURp
Z2l0KHBbNDktMThdKSAmJiBpc0FTQ0lJRGlnaXQocFs1MC0xOF0pKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGxzdHlsZSA9ICdPJzsgLyogT1MvMiAqLworICAgICAgICAgICAgICAg
IGlmICghc3RhdGUubGlzdFN0eWxlKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAocG9zID0g
MTsgbHN0eWxlICYmIHBvcyA8IHRva2xlblswXTsgcG9zKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHRva2Vuc1swXVtwb3NdKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsc3R5bGUgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobHN0eWxlID09ICdP
JykgeworICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOworCisgICAgICAgICAgICAgICAgcCA9ICYo
bGluZVt0b2tsZW5bMF1dKTsKKworICAgICAgICAgICAgICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZl
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSAmcFs1My0xOF07Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gKCYobGluZVtzdHJpcHBlZExp
bmVMZW5ndGhdKSkKKyAgICAgICAgICAgICAgICAgICAgLSAocmVzdWx0LmZpbGVuYW1lKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUEZpbGVFbnRyeTsKKworICAgICAgICAgICAg
ICAgIC8qIEkgZG9uJ3QgaGF2ZSBhIHJlYWwgbGlzdGluZyB0byBkZXRlcm1pbmUgZXhhY3QgcG9z
LCBzbyBzY2FuLiAqLworICAgICAgICAgICAgICAgIGZvciAocG9zID0gKDE4LTE4KTsgcG9zIDwg
KCgzNS0xOCktNCk7IHBvcysrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwW3BvcyswXSA9
PSAnICcgJiYgcFtwb3MrMV0gPT0gJ0QnCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBwW3Bv
cysyXSA9PSAnSScgJiYgcFtwb3MrM10gPT0gJ1InKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQudHlwZSA9IEZUUERpcmVjdG9yeUVudHJ5OworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT0gRlRQRGlyZWN0b3J5RW50cnkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVuWzBdOworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuZmlsZVNpemUgPSBTdHJpbmcodG9rZW5zWzBdLCBwb3MpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0gYXRvaSgm
cFszNS0xOF0pIC0gMTsKKyAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21k
YXkgPSBhdG9pKCZwWzM4LTE4XSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGlt
ZS50bV95ZWFyID0gYXRvaSgmcFs0MS0xOF0pOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX3llYXIgPCA4MCkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1v
ZGlmaWVkVGltZS50bV95ZWFyICs9IDEwMDsKKyAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZp
ZWRUaW1lLnRtX2hvdXIgPSBhdG9pKCZwWzQ2LTE4XSk7CisgICAgICAgICAgICAgICAgcmVzdWx0
Lm1vZGlmaWVkVGltZS50bV9taW4gPSBhdG9pKCZwWzQ5LTE4XSk7CisKKyAgICAgICAgICAgICAg
ICAvKiB0aGUgY2FsbGVyIHNob3VsZCBkbyB0aGlzIChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIg
aXMgZGVzaXJlZCkKKyAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGly
ZWN0b3J5RW50cnkgJiYgcmVzdWx0LmZpbGVuYW1lWzBdID09ICcuJyAmJgorICAgICAgICAgICAg
ICAgICAgIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMSB8fCAocmVzdWx0LmZpbGVuYW1lTGVu
Z3RoID09IDIgJiYKKyAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4n
KSkpCisgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsKKyAgICAgICAgICAg
ICAgICAgICAqLworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOworICAgICAg
ICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdPJykgKi8KKworICAgICAgICB9IC8qIGlmICghbHN0
eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnTycpKSAqLwog
I2VuZGlmCiAKLSAgICAvKiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKyAqLwotICAgIAorICAgICAgICAvKiArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAqLworCiAjaWYgZGVm
aW5lZChTVVBQT1JUX0xTTCkKLSAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8
fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1UnKSkgLyogL2Jpbi9scyAmIGNvLiAqLwotICAgIHsKLSAg
ICAgIC8qIFVOSVgtc3R5bGUgbGlzdGluZywgd2l0aG91dCBpbnVtIGFuZCB3aXRob3V0IGJsb2Nr
cwotICAgICAgICogIi1ydy1yLS1yLS0gICAxIHJvb3QgICAgIG90aGVyICAgICAgICA1MzEgSmFu
IDI5IDAzOjI2IFJFQURNRSIKLSAgICAgICAqICJkci14ci14ci14ICAgMiByb290ICAgICBvdGhl
ciAgICAgICAgNTEyIEFwciAgOCAgMTk5NCBldGMiCi0gICAgICAgKiAiZHIteHIteHIteCAgIDIg
cm9vdCAgICAgNTEyIEFwciAgOCAgMTk5NCBldGMiCi0gICAgICAgKiAibHJ3eHJ3eHJ3eCAgIDEg
cm9vdCAgICAgb3RoZXIgICAgICAgICAgNyBKYW4gMjUgMDA6MTcgYmluIC0+IHVzci9iaW4iCi0g
ICAgICAgKiBBbHNvIHByb2R1Y2VkIGJ5IE1pY3Jvc29mdCdzIEZUUCBzZXJ2ZXJzIGZvciBXaW5k
b3dzOgotICAgICAgICogIi0tLS0tLS0tLS0gICAxIG93bmVyICAgIGdyb3VwICAgICAgICAgMTgw
MzEyOCBKdWwgMTAgMTA6MTggbHMtbFIuWiIKLSAgICAgICAqICJkLS0tLS0tLS0tICAgMSBvd25l
ciAgICBncm91cCAgICAgICAgICAgICAgIDAgTWF5ICA5IDE5OjQ1IFNvZnRsaWIiCi0gICAgICAg
KiBBbHNvIFdGVFBEIGZvciBNU0RPUzoKLSAgICAgICAqICItcnd4cnd4cnd4ICAgMSBub29uZSAg
ICBub2dyb3VwICAgICAgMzIyIEF1ZyAxOSAgMTk5NiBtZXNzYWdlLmZ0cCIKLSAgICAgICAqIEhl
bGxzb2Z0IGZvciBOZXRXYXJlOgotICAgICAgICogImRbUldDRU1GQV0gc3VwZXJ2aXNvciAgICAg
ICAgICAgIDUxMiAgICAgICBKYW4gMTYgMTg6NTMgICAgbG9naW4iCi0gICAgICAgKiAiLVtSV0NF
TUZBXSByaGVzdXMgICAgICAgICAgICAgMjE0MDU5ICAgICAgIE9jdCAyMCAxNToyNyAgICBjeC5l
eGUiCi0gICAgICAgKiBOZXdlciBIZWxsc29mdCBmb3IgTmV0V2FyZTogKG5ldGxhYjIudXN1LmVk
dSkKLSAgICAgICAqIC0gW1JXQ0VBRk1TXSBORkFVVXNlciAgICAgICAgICAgICAgIDE5MiBBcHIg
MjcgMTU6MjEgSEVBREVSLmh0bWwKLSAgICAgICAqIGQgW1JXQ0VBRk1TXSBqcmQgICAgICAgICAg
ICAgICAgICAgIDUxMiBKdWwgMTEgMDM6MDEgYWxsdXBkYXRlcwotICAgICAgICogQWxzbyBOZXRQ
cmVzZW56IGZvciB0aGUgTWFjOgotICAgICAgICogIi0tLS0tLS1yLS0gICAgICAgICAzMjYgIDEz
OTE5NzIgIDEzOTIyOTggTm92IDIyICAxOTk1IE1lZ2FQaG9uZS5zaXQiCi0gICAgICAgKiAiZHJ3
eHJ3eHIteCAgICAgICAgICAgICAgIGZvbGRlciAgICAgICAgMiBNYXkgMTAgIDE5OTYgbmV0d29y
ayIKLSAgICAgICAqIFByb3RlY3RlZCBkaXJlY3Rvcnk6Ci0gICAgICAgKiAiZHJ3eC13eC13dCAg
MiByb290ICB3aGVlbCAgNTEyIEp1bCAgMSAwMjoxNSBpbmNvbWluZyIKLSAgICAgICAqIHVpZC9n
aWQgaW5zdGVhZCBvZiB1c2VybmFtZS9ncm91cG5hbWU6Ci0gICAgICAgKiAiZHJ3eHIteHIteCAg
MiAwICAwICA1MTIgTWF5IDI4IDIyOjE3IGV0YyIKLSAgICAgICovCi0gICAgCi0gICAgICBib29s
IGlzT2xkSGVsbHNvZnQgPSBmYWxzZTsKLSAgICAKLSAgICAgIGlmIChudW10b2tzID49IDYpCi0g
ICAgICB7Ci0gICAgICAgIC8qIHRoZXJlIGFyZSB0d28gcGVybSBmb3JtYXRzIChIZWxsc29mdC9O
ZXRXYXJlIGFuZCAqSVggc3RybW9kZSgzKSkuCi0gICAgICAgICAqIFNjYW4gZm9yIHNpemUgY29s
dW1uIG9ubHkgaWYgdGhlIHBlcm0gZm9ybWF0IGlzIG9uZSBvciB0aGUgb3RoZXIuCi0gICAgICAg
ICAqLwotICAgICAgICBpZiAodG9rbGVuWzBdID09IDEgfHwgKHRva2Vuc1swXVsxXSkgPT0gJ1sn
KQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCp0b2tlbnNbMF0gPT0gJ2QnIHx8ICp0b2tlbnNb
MF0gPT0gJy0nKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHBvcyA9IHRva2xlblswXS0xOwot
ICAgICAgICAgICAgcCA9IHRva2Vuc1swXSArIDE7Ci0gICAgICAgICAgICBpZiAocG9zID09IDAp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHAgPSB0b2tlbnNbMV07Ci0gICAgICAgICAg
ICAgIHBvcyA9IHRva2xlblsxXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgocG9z
ID09IDkgfHwgcG9zID09IDEwKSAgICAgICAgJiYgCi0gICAgICAgICAgICAgICAgKCpwID09ICdb
JyAmJiBwW3Bvcy0xXSA9PSAnXScpICYmCi0gICAgICAgICAgICAgICAgKHBbMV0gPT0gJ1InIHx8
IHBbMV0gPT0gJy0nKSAgICYmCi0gICAgICAgICAgICAgICAgKHBbMl0gPT0gJ1cnIHx8IHBbMl0g
PT0gJy0nKSAgICYmCi0gICAgICAgICAgICAgICAgKHBbM10gPT0gJ0MnIHx8IHBbM10gPT0gJy0n
KSAgICYmCi0gICAgICAgICAgICAgICAgKHBbNF0gPT0gJ0UnIHx8IHBbNF0gPT0gJy0nKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgLyogcmVzdCBpcyBGTUFbU10gb3IgQUZNW1NdICov
Ci0gICAgICAgICAgICAgIGxzdHlsZSA9ICdVJzsgLyogdmVyeSBsaWtlbHkgb25lIG9mIHRoZSBO
ZXRXYXJlIHNlcnZlcnMgKi8KLSAgICAgICAgICAgICAgaWYgKHRva2xlblswXSA9PSAxMCkKLSAg
ICAgICAgICAgICAgICBpc09sZEhlbGxzb2Z0ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKHRva2xlblswXSA9PSAxMCB8fCB0
b2tsZW5bMF0gPT0gMTEpIAotICAgICAgICAgICAgICAgICAgICYmIHN0cmNocigiLWJjZGxwc3c/
REZhbSIsICp0b2tlbnNbMF0pKQotICAgICAgICB7Ci0gICAgICAgICAgcCA9ICYodG9rZW5zWzBd
WzFdKTsKLSAgICAgICAgICBpZiAoKHBbMF0gPT0gJ3InIHx8IHBbMF0gPT0gJy0nKSAmJgotICAg
ICAgICAgICAgICAocFsxXSA9PSAndycgfHwgcFsxXSA9PSAnLScpICYmCi0gICAgICAgICAgICAg
IChwWzNdID09ICdyJyB8fCBwWzNdID09ICctJykgJiYKLSAgICAgICAgICAgICAgKHBbNF0gPT0g
J3cnIHx8IHBbNF0gPT0gJy0nKSAmJgotICAgICAgICAgICAgICAocFs2XSA9PSAncicgfHwgcFs2
XSA9PSAnLScpICYmCi0gICAgICAgICAgICAgIChwWzddID09ICd3JyB8fCBwWzddID09ICctJykp
Ci0gICAgICAgICAgICAvKiAneCcvcFs5XSBjYW4gYmUgU3xzfHh8LXxUfHQgb3IgaW1wbGVtZW50
YXRpb24gc3BlY2lmaWMgKi8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICBsc3R5bGUgPSAnVSc7
IC8qIHZlcnkgbGlrZWx5IC9iaW4vbHMgKi8KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
IH0KLSAgICAgIGlmIChsc3R5bGUgPT0gJ1UnKSAvKiBmaXJzdCB0b2tlbiBjaGVja3Mgb3V0ICov
Ci0gICAgICB7Ci0gICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgIGZvciAocG9zID0gKG51bXRv
a3MtNSk7ICFsc3R5bGUgJiYgcG9zID4gMTsgcG9zLS0pCi0gICAgICAgIHsKLSAgICAgICAgICAv
KiBzY2FuIGZvcjogKFxkKylccysoW0EtWl1bYS16XVthLXpdKVxzKwotICAgICAgICAgICAqICAo
XGRcZFxkXGR8XGRcOlxkXGR8XGRcZFw6XGRcZHxcZFw6XGRcZFw6XGRcZHxcZFxkXDpcZFxkXDpc
ZFxkKQotICAgICAgICAgICAqICBccysoLispJAotICAgICAgICAgICovCi0gICAgICAgICAgaWYg
KGlzQVNDSUlEaWdpdCgqdG9rZW5zW3Bvc10pIC8qIHNpemUgKi8KLSAgICAgICAgICAgICAgLyog
KFx3XHdcdykgKi8KLSAgICAgICAgICAgJiYgdG9rbGVuW3BvcysxXSA9PSAzICYmIGlzQVNDSUlB
bHBoYSgqdG9rZW5zW3BvcysxXSkgJiYKLSAgICAgICAgICAgICAgaXNBU0NJSUFscGhhKHRva2Vu
c1twb3MrMV1bMV0pICYmIGlzQVNDSUlBbHBoYSh0b2tlbnNbcG9zKzFdWzJdKQotICAgICAgICAg
ICAgICAvKiAoXGR8XGRcZCkgKi8KLSAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KCp0b2tlbnNb
cG9zKzJdKSAmJgotICAgICAgICAgICAgICAgICh0b2tsZW5bcG9zKzJdID09IDEgfHwgCi0gICAg
ICAgICAgICAgICAgICAodG9rbGVuW3BvcysyXSA9PSAyICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNb
cG9zKzJdWzFdKSkpCi0gICAgICAgICAgICYmIHRva2xlbltwb3MrM10gPj0gNCAmJiBpc0FTQ0lJ
RGlnaXQoKnRva2Vuc1twb3MrM10pIAotICAgICAgICAgICAgICAvKiAoXGRcOlxkXGRcOlxkXGR8
XGRcZFw6XGRcZFw6XGRcZCkgKi8KLSAgICAgICAgICAgJiYgKHRva2xlbltwb3MrM10gPD0gNSB8
fCAoCi0gICAgICAgICAgICAgICAodG9rbGVuW3BvcyszXSA9PSA3IHx8IHRva2xlbltwb3MrM10g
PT0gOCkgJiYKLSAgICAgICAgICAgICAgICh0b2tlbnNbcG9zKzNdW3Rva2xlbltwb3MrM10tM10p
ID09ICc6JykpCi0gICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdW3Rva2xl
bltwb3MrM10tMl0pCi0gICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdW3Rv
a2xlbltwb3MrM10tMV0pCi0gICAgICAgICAgICYmICgKLSAgICAgICAgICAgICAgLyogKFxkXGRc
ZFxkKSAqLwotICAgICAgICAgICAgICAgICAoKHRva2xlbltwb3MrM10gPT0gNCB8fCB0b2tsZW5b
cG9zKzNdID09IDUpICYmCi0gICAgICAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQodG9rZW5zW3Bv
cyszXVsxXSkgJiYKLSAgICAgICAgICAgICAgICAgIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNd
WzJdKSAgKQotICAgICAgICAgICAgICAvKiAoXGRcOlxkXGR8XGRcOlxkXGRcOlxkXGQpICovCi0g
ICAgICAgICAgICAgIHx8ICgodG9rbGVuW3BvcyszXSA9PSA0IHx8IHRva2xlbltwb3MrM10gPT0g
NykgJiYgCi0gICAgICAgICAgICAgICAgICAodG9rZW5zW3BvcyszXVsxXSkgPT0gJzonICYmCi0g
ICAgICAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVsyXSkgJiYgaXNBU0NJ
SURpZ2l0KHRva2Vuc1twb3MrM11bM10pKQotICAgICAgICAgICAgICAvKiAoXGRcZFw6XGRcZHxc
ZFxkXDpcZFxkXDpcZFxkKSAqLwotICAgICAgICAgICAgICB8fCAoKHRva2xlbltwb3MrM10gPT0g
NSB8fCB0b2tsZW5bcG9zKzNdID09IDgpICYmIAotICAgICAgICAgICAgICAgICAgaXNBU0NJSURp
Z2l0KHRva2Vuc1twb3MrM11bMV0pICYmICh0b2tlbnNbcG9zKzNdWzJdKSA9PSAnOicgJiYKLSAg
ICAgICAgICAgICAgICAgIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdWzNdKSAmJiBpc0FTQ0lJ
RGlnaXQodG9rZW5zW3BvcyszXVs0XSkpIAotICAgICAgICAgICAgICApCi0gICAgICAgICAgICkK
LSAgICAgICAgICB7Ci0gICAgICAgICAgICBsc3R5bGUgPSAnVSc7IC8qIGFzc3VtZSAvYmluL2xz
IG9yIHZhcmlhbnQgZm9ybWF0ICovCi0gICAgICAgICAgICB0b2ttYXJrZXIgPSBwb3M7Ci0KLSAg
ICAgICAgICAgIC8qIGNoZWNrIHRoYXQgc2l6ZSBpcyBudW1lcmljICovCi0gICAgICAgICAgICBw
ID0gdG9rZW5zW3Rva21hcmtlcl07Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgbHN0eWxlICYmIGkgPCB0b2tsZW5bdG9rbWFya2VyXTsgKytpKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqcCsrKSkKLSAgICAgICAgICAgICAgICBs
c3R5bGUgPSAwOworICAgICAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBz
dGF0ZS5saXN0U3R5bGUgPT0gJ1UnKSkgeyAvKiAvYmluL2xzICYgY28uICovCisgICAgICAgICAg
ICAvKiBVTklYLXN0eWxlIGxpc3RpbmcsIHdpdGhvdXQgaW51bSBhbmQgd2l0aG91dCBibG9ja3MK
KyAgICAgICAgICAgICAqICItcnctci0tci0tICAgMSByb290ICAgICBvdGhlciAgICAgICAgNTMx
IEphbiAyOSAwMzoyNiBSRUFETUUiCisgICAgICAgICAgICAgKiAiZHIteHIteHIteCAgIDIgcm9v
dCAgICAgb3RoZXIgICAgICAgIDUxMiBBcHIgIDggIDE5OTQgZXRjIgorICAgICAgICAgICAgICog
ImRyLXhyLXhyLXggICAyIHJvb3QgICAgIDUxMiBBcHIgIDggIDE5OTQgZXRjIgorICAgICAgICAg
ICAgICogImxyd3hyd3hyd3ggICAxIHJvb3QgICAgIG90aGVyICAgICAgICAgIDcgSmFuIDI1IDAw
OjE3IGJpbiAtPiB1c3IvYmluIgorICAgICAgICAgICAgICogQWxzbyBwcm9kdWNlZCBieSBNaWNy
b3NvZnQncyBGVFAgc2VydmVycyBmb3IgV2luZG93czoKKyAgICAgICAgICAgICAqICItLS0tLS0t
LS0tICAgMSBvd25lciAgICBncm91cCAgICAgICAgIDE4MDMxMjggSnVsIDEwIDEwOjE4IGxzLWxS
LloiCisgICAgICAgICAgICAgKiAiZC0tLS0tLS0tLSAgIDEgb3duZXIgICAgZ3JvdXAgICAgICAg
ICAgICAgICAwIE1heSAgOSAxOTo0NSBTb2Z0bGliIgorICAgICAgICAgICAgICogQWxzbyBXRlRQ
RCBmb3IgTVNET1M6CisgICAgICAgICAgICAgKiAiLXJ3eHJ3eHJ3eCAgIDEgbm9vbmUgICAgbm9n
cm91cCAgICAgIDMyMiBBdWcgMTkgIDE5OTYgbWVzc2FnZS5mdHAiCisgICAgICAgICAgICAgKiBI
ZWxsc29mdCBmb3IgTmV0V2FyZToKKyAgICAgICAgICAgICAqICJkW1JXQ0VNRkFdIHN1cGVydmlz
b3IgICAgICAgICAgICA1MTIgICAgICAgSmFuIDE2IDE4OjUzICAgIGxvZ2luIgorICAgICAgICAg
ICAgICogIi1bUldDRU1GQV0gcmhlc3VzICAgICAgICAgICAgIDIxNDA1OSAgICAgICBPY3QgMjAg
MTU6MjcgICAgY3guZXhlIgorICAgICAgICAgICAgICogTmV3ZXIgSGVsbHNvZnQgZm9yIE5ldFdh
cmU6IChuZXRsYWIyLnVzdS5lZHUpCisgICAgICAgICAgICAgKiAtIFtSV0NFQUZNU10gTkZBVVVz
ZXIgICAgICAgICAgICAgICAxOTIgQXByIDI3IDE1OjIxIEhFQURFUi5odG1sCisgICAgICAgICAg
ICAgKiBkIFtSV0NFQUZNU10ganJkICAgICAgICAgICAgICAgICAgICA1MTIgSnVsIDExIDAzOjAx
IGFsbHVwZGF0ZXMKKyAgICAgICAgICAgICAqIEFsc28gTmV0UHJlc2VueiBmb3IgdGhlIE1hYzoK
KyAgICAgICAgICAgICAqICItLS0tLS0tci0tICAgICAgICAgMzI2ICAxMzkxOTcyICAxMzkyMjk4
IE5vdiAyMiAgMTk5NSBNZWdhUGhvbmUuc2l0IgorICAgICAgICAgICAgICogImRyd3hyd3hyLXgg
ICAgICAgICAgICAgICBmb2xkZXIgICAgICAgIDIgTWF5IDEwICAxOTk2IG5ldHdvcmsiCisgICAg
ICAgICAgICAgKiBQcm90ZWN0ZWQgZGlyZWN0b3J5OgorICAgICAgICAgICAgICogImRyd3gtd3gt
d3QgIDIgcm9vdCAgd2hlZWwgIDUxMiBKdWwgIDEgMDI6MTUgaW5jb21pbmciCisgICAgICAgICAg
ICAgKiB1aWQvZ2lkIGluc3RlYWQgb2YgdXNlcm5hbWUvZ3JvdXBuYW1lOgorICAgICAgICAgICAg
ICogImRyd3hyLXhyLXggIDIgMCAgMCAgNTEyIE1heSAyOCAyMjoxNyBldGMiCisgICAgICAgICAg
ICAgKi8KKworICAgICAgICAgICAgYm9vbCBpc09sZEhlbGxzb2Z0ID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIGlmIChudW10b2tzID49IDYpIHsKKyAgICAgICAgICAgICAgICAvKiB0aGVyZSBhcmUg
dHdvIHBlcm0gZm9ybWF0cyAoSGVsbHNvZnQvTmV0V2FyZSBhbmQgKklYIHN0cm1vZGUoMykpLgor
ICAgICAgICAgICAgICAgICAqIFNjYW4gZm9yIHNpemUgY29sdW1uIG9ubHkgaWYgdGhlIHBlcm0g
Zm9ybWF0IGlzIG9uZSBvciB0aGUgb3RoZXIuCisgICAgICAgICAgICAgICAgICovCisgICAgICAg
ICAgICAgICAgaWYgKHRva2xlblswXSA9PSAxIHx8ICh0b2tlbnNbMF1bMV0pID09ICdbJykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoKnRva2Vuc1swXSA9PSAnZCcgfHwgKnRva2Vuc1swXSA9
PSAnLScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IHRva2xlblswXS0xOworICAg
ICAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1swXSArIDE7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBvcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB0b2tl
bnNbMV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVuWzFdOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwb3Mg
PT0gOSB8fCBwb3MgPT0gMTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCpwID09
ICdbJyAmJiBwW3Bvcy0xXSA9PSAnXScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
KHBbMV0gPT0gJ1InIHx8IHBbMV0gPT0gJy0nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICYmIChwWzJdID09ICdXJyB8fCBwWzJdID09ICctJykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAocFszXSA9PSAnQycgfHwgcFszXSA9PSAnLScpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgKHBbNF0gPT0gJ0UnIHx8IHBbNF0gPT0gJy0nKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHJlc3QgaXMgRk1BW1NdIG9yIEFGTVtTXSAqLworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9ICdVJzsgLyogdmVyeSBsaWtlbHkgb25lIG9mIHRo
ZSBOZXRXYXJlIHNlcnZlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9r
bGVuWzBdID09IDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09sZEhlbGxz
b2Z0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRva2xlblswXSA9PSAxMCB8fCB0b2ts
ZW5bMF0gPT0gMTEpIAorICAgICAgICAgICAgICAgICAgICAmJiBzdHJjaHIoIi1iY2RscHN3P0RG
YW0iLCAqdG9rZW5zWzBdKSkgeworICAgICAgICAgICAgICAgICAgICBwID0gJih0b2tlbnNbMF1b
MV0pOworICAgICAgICAgICAgICAgICAgICBpZiAoKHBbMF0gPT0gJ3InIHx8IHBbMF0gPT0gJy0n
KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBbMV0gPT0gJ3cnIHx8IHBbMV0gPT0gJy0n
KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBbM10gPT0gJ3InIHx8IHBbM10gPT0gJy0n
KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBbNF0gPT0gJ3cnIHx8IHBbNF0gPT0gJy0n
KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBbNl0gPT0gJ3InIHx8IHBbNl0gPT0gJy0n
KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBbN10gPT0gJ3cnIHx8IHBbN10gPT0gJy0n
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogJ3gnL3BbOV0gY2FuIGJlIFN8c3x4fC18
VHx0IG9yIGltcGxlbWVudGF0aW9uIHNwZWNpZmljICovCisgICAgICAgICAgICAgICAgICAgICAg
ICBsc3R5bGUgPSAnVSc7IC8qIHZlcnkgbGlrZWx5IC9iaW4vbHMgKi8KKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChsc3R5bGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG1vbnRoX251bSA9IDA7Ci0g
ICAgICAgICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyKzFdOwotICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxMiozKTsgaSs9MykKLSAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGlmIChwWzBdID09IG1vbnRoX25hbWVzW2krMF0gJiYgCi0gICAgICAg
ICAgICAgICAgICAgIHBbMV0gPT0gbW9udGhfbmFtZXNbaSsxXSAmJiAKLSAgICAgICAgICAgICAg
ICAgICAgcFsyXSA9PSBtb250aF9uYW1lc1tpKzJdKQotICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgbW9udGhfbnVtKys7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgaWYgKG1vbnRoX251bSA+PSAxMikKKyAgICAgICAgICAgIGlmIChsc3R5bGUgPT0gJ1Un
KSB7IC8qIGZpcnN0IHRva2VuIGNoZWNrcyBvdXQgKi8KICAgICAgICAgICAgICAgICBsc3R5bGUg
PSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gLyogcmVsYXRpdmUgcG9zaXRpb24gdGVz
dCAqLwotICAgICAgICB9IC8qIGZvciAocG9zID0gKG51bXRva3MtNSk7ICFsc3R5bGUgJiYgcG9z
ID4gMTsgcG9zLS0pICovCi0gICAgICB9IC8qIGlmIChsc3R5bGUgPT0gJ1UnKSAqLwotCi0gICAg
ICBpZiAobHN0eWxlID09ICdVJykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0g
dHJ1ZTsKLSAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOwotICAgIAotICAgICAgICBy
ZXN1bHQuY2FzZVNlbnNpdGl2ZSA9IGZhbHNlOwotICAgICAgICByZXN1bHQudHlwZSA9IEZUUEp1
bmtFbnRyeTsKLSAgICAgICAgaWYgKCp0b2tlbnNbMF0gPT0gJ2QnIHx8ICp0b2tlbnNbMF0gPT0g
J0QnKQotICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRGlyZWN0b3J5RW50cnk7Ci0gICAgICAg
IGVsc2UgaWYgKCp0b2tlbnNbMF0gPT0gJ2wnKQotICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQ
TGlua0VudHJ5OwotICAgICAgICBlbHNlIGlmICgqdG9rZW5zWzBdID09ICctJyB8fCAqdG9rZW5z
WzBdID09ICdGJykKLSAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUEZpbGVFbnRyeTsgLyogKGhv
cGVmdWxseSBhIHJlZ3VsYXIgZmlsZSkgKi8KLQotICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT0g
RlRQRGlyZWN0b3J5RW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICBwb3MgPSB0b2tsZW5bdG9r
bWFya2VyXTsKLSAgICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJpbmcodG9rZW5zW3Rva21h
cmtlcl0sIHBvcyk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IChudW10
b2tzLTUpOyAhbHN0eWxlICYmIHBvcyA+IDE7IHBvcy0tKSB7CisgICAgICAgICAgICAgICAgICAg
IC8qIHNjYW4gZm9yOiAoXGQrKVxzKyhbQS1aXVthLXpdW2Etel0pXHMrCisgICAgICAgICAgICAg
ICAgICAgICAqICAoXGRcZFxkXGR8XGRcOlxkXGR8XGRcZFw6XGRcZHxcZFw6XGRcZFw6XGRcZHxc
ZFxkXDpcZFxkXDpcZFxkKQorICAgICAgICAgICAgICAgICAgICAgKiAgXHMrKC4rKSQKKyAgICAg
ICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQo
KnRva2Vuc1twb3NdKSAvKiBzaXplICovCisgICAgICAgICAgICAgICAgICAgICAgICAvKiAoXHdc
d1x3KSAqLworICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG9rbGVuW3BvcysxXSA9PSAzICYm
IGlzQVNDSUlBbHBoYSgqdG9rZW5zW3BvcysxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYm
IGlzQVNDSUlBbHBoYSh0b2tlbnNbcG9zKzFdWzFdKSAmJiBpc0FTQ0lJQWxwaGEodG9rZW5zW3Bv
cysxXVsyXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIChcZHxcZFxkKSAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KCp0b2tlbnNbcG9zKzJdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgKHRva2xlbltwb3MrMl0gPT0gMQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8ICh0b2tsZW5bcG9zKzJdID09IDIgJiYgaXNBU0NJSURpZ2l0KHRva2Vu
c1twb3MrMl1bMV0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG9rbGVu
W3BvcyszXSA+PSA0ICYmIGlzQVNDSUlEaWdpdCgqdG9rZW5zW3BvcyszXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIChcZFw6XGRcZFw6XGRcZHxcZFxkXDpcZFxkXDpcZFxkKSAqLworICAg
ICAgICAgICAgICAgICAgICAgICAgJiYgKHRva2xlbltwb3MrM10gPD0gNQorICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgKCh0b2tsZW5bcG9zKzNdID09IDcgfHwgdG9rbGVuW3BvcyszXSA9PSA4
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICh0b2tlbnNbcG9zKzNdW3Rva2xlbltw
b3MrM10tM10pID09ICc6JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJ
SURpZ2l0KHRva2Vuc1twb3MrM11bdG9rbGVuW3BvcyszXS0yXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVt0b2tsZW5bcG9zKzNdLTFd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogKFxkXGRcZFxkKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoKHRva2xlbltwb3MrM10gPT0gNCB8fCB0b2tsZW5bcG9zKzNdID09IDUpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdWzFd
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5z
W3BvcyszXVsyXSkgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKFxkXDpc
ZFxkfFxkXDpcZFxkXDpcZFxkKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
fCAoKHRva2xlbltwb3MrM10gPT0gNCB8fCB0b2tsZW5bcG9zKzNdID09IDcpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAodG9rZW5zW3BvcyszXVsxXSkgPT0gJzonCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5z
W3BvcyszXVsyXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1twb3MrM11bM10pKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiAoXGRcZFw6XGRcZHxcZFxkXDpcZFxkXDpcZFxkKSAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKHRva2xlbltwb3MrM10gPT0g
NSB8fCB0b2tsZW5bcG9zKzNdID09IDgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVsxXSkgJiYgKHRva2Vuc1twb3MrM11b
Ml0pID09ICc6JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJ
SURpZ2l0KHRva2Vuc1twb3MrM11bM10pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdWzRd
KSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAnVSc7
IC8qIGFzc3VtZSAvYmluL2xzIG9yIHZhcmlhbnQgZm9ybWF0ICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0b2ttYXJrZXIgPSBwb3M7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgc2l6ZSBpcyBudW1lcmljICovCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gdG9rZW5zW3Rva21hcmtlcl07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBs
c3R5bGUgJiYgaSA8IHRva2xlblt0b2ttYXJrZXJdOyArK2kpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqcCsrKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChsc3R5bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb250aE51bSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXIrMV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8ICgxMiozKTsgaSArPSAzKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwWzBdID09
IG1vbnRoTmFtZXNbaSswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgcFsxXSA9PSBtb250aE5hbWVzW2krMV0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBbMl0gPT0gbW9udGhOYW1lc1tpKzJdKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoTnVtKys7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb250aE51bSA+PSAxMikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSAvKiByZWxhdGl2ZSBwb3NpdGlvbiB0ZXN0ICovCisgICAgICAgICAgICAgICAgfSAvKiBm
b3IgKHBvcyA9IChudW10b2tzLTUpOyAhbHN0eWxlICYmIHBvcyA+IDE7IHBvcy0tKSAqLworICAg
ICAgICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdVJykgKi8KKworICAgICAgICAgICAgaWYgKGxz
dHlsZSA9PSAnVScpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKKworICAgICAgICAgICAg
ICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmVzdWx0
LnR5cGUgPSBGVFBKdW5rRW50cnk7CisgICAgICAgICAgICAgICAgaWYgKCp0b2tlbnNbMF0gPT0g
J2QnIHx8ICp0b2tlbnNbMF0gPT0gJ0QnKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlw
ZSA9IEZUUERpcmVjdG9yeUVudHJ5OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCp0b2tlbnNb
MF0gPT0gJ2wnKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUExpbmtFbnRy
eTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICgqdG9rZW5zWzBdID09ICctJyB8fCAqdG9rZW5z
WzBdID09ICdGJykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50
cnk7IC8qIChob3BlZnVsbHkgYSByZWd1bGFyIGZpbGUpICovCisKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0LnR5cGUgIT0gRlRQRGlyZWN0b3J5RW50cnkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcG9zID0gdG9rbGVuW3Rva21hcmtlcl07CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlU2l6ZSA9IFN0cmluZyh0b2tlbnNbdG9rbWFya2VyXSwgcG9zKTsKKyAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gID0gbW9udGhfbnVtOwot
ICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBhdG9pKHRva2Vuc1t0b2ttYXJr
ZXIrMl0pOwotICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID09IDApCi0g
ICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5Kys7Ci0KLSAgICAgICAgcCA9IHRv
a2Vuc1t0b2ttYXJrZXIrM107Ci0gICAgICAgIHBvcyA9ICh1bnNpZ25lZCBpbnQpYXRvaShwKTsK
LSAgICAgICAgaWYgKHBbMV0gPT0gJzonKSAvKiBvbmUgZGlnaXQgaG91ciAqLwotICAgICAgICAg
IHAtLTsKLSAgICAgICAgaWYgKHBbMl0gIT0gJzonKSAvKiB5ZWFyICovCi0gICAgICAgIHsKLSAg
ICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBwb3M7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9o
b3VyID0gcG9zOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWluICA9IGF0b2ko
cCszKTsKLSAgICAgICAgICBpZiAocFs1XSA9PSAnOicpCi0gICAgICAgICAgICByZXN1bHQubW9k
aWZpZWRUaW1lLnRtX3NlYyA9IGF0b2kocCs2KTsKLSAgICAgICAKLSAgICAgICAgICBpZiAoIXN0
YXRlLm5vdykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lX3Qgbm93ID0gdGltZShOVUxM
KTsKLSAgICAgICAgICAgIHN0YXRlLm5vdyA9IG5vdyAqIDEwMDAwMDAuMDsKLQotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY29kZSBoYXMgdGhlIHllYXIgMjAzOCBidWcKLSAgICAgICAgICAg
IGdtdGltZV9yKCZub3csICZzdGF0ZS5ub3dGVFBUaW1lKTsKLSAgICAgICAgICAgIHN0YXRlLm5v
d0ZUUFRpbWUudG1feWVhciArPSAxOTAwOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1feWVhciA9IHN0YXRlLm5vd0ZUUFRpbWUudG1feWVhcjsKLSAgICAg
ICAgICBpZiAoICgoIHN0YXRlLm5vd0ZUUFRpbWUudG1fbW9uIDw8IDUpICsgc3RhdGUubm93RlRQ
VGltZS50bV9tZGF5KSA8Ci0gICAgICAgICAgICAgICAoKHJlc3VsdC5tb2RpZmllZFRpbWUudG1f
bW9uIDw8IDUpICsgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5KSApCi0gICAgICAgICAgICBy
ZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXItLTsKLSAgICAgICAKLSAgICAgICAgfSAvKiB0aW1l
L3llYXIgKi8KLSAgICAgICAgCi0gICAgICAgIC8vIHRoZXJlIGlzIGV4YWN0bHkgMSBzcGFjZSBi
ZXR3ZWVuIGZpbGVuYW1lIGFuZCBwcmV2aW91cyB0b2tlbiBpbiBhbGwKLSAgICAgICAgLy8gb3V0
cHV0cyBleGNlcHQgb2xkIEhlbGxzb2Z0Ci0gICAgICAgIGlmICghaXNPbGRIZWxsc29mdCkKLSAg
ICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbdG9rbWFya2VyKzNdICsgdG9rbGVuW3Rv
a21hcmtlciszXSArIDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXN1bHQuZmlsZW5hbWUg
PSB0b2tlbnNbdG9rbWFya2VyKzRdOwotCi0gICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9
ICgmKGxpbmVbbGluZWxlbl0pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAocmVzdWx0
LmZpbGVuYW1lKTsKLQotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQTGlua0VudHJ5ICYm
IHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBGaXJz
dCB0cnkgdG8gdXNlIHJlc3VsdC5mZV9zaXplIHRvIGZpbmQgIiAtPiAiIHNlcXVlbmNlLgotICAg
ICAgICAgICAgIFRoaXMgY2FuIGdpdmUgcHJvcGVyIHJlc3VsdCBmb3IgY2FzZXMgbGlrZSAiYWFh
IC0+IGJiYiAtPiBjY2MiLiAqLwotICAgICAgICAgIHVuc2lnbmVkIGludCBmaWxlU2l6ZSA9IHJl
c3VsdC5maWxlU2l6ZS50b1VJbnQoKTsKLQotICAgICAgICAgIGlmIChyZXN1bHQuZmlsZW5hbWVM
ZW5ndGggPiAoZmlsZVNpemUgKyA0KSAmJgotICAgICAgICAgICAgICBzdHJuY21wKHJlc3VsdC5m
aWxlbmFtZSArIHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtIGZpbGVTaXplIC0gNCwgIiAtPiAiLCA0
KSA9PSAwKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZSA9IHJlc3Vs
dC5maWxlbmFtZSArIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggLSBmaWxlU2l6ZSk7Ci0gICAgICAg
ICAgICByZXN1bHQubGlua25hbWVMZW5ndGggPSAoJihsaW5lW2xpbmVsZW5dKSkgLSAocmVzdWx0
LmxpbmtuYW1lKTsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtPSBmaWxlU2l6
ZSArIDQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAg
ICAgICAvKiBTZWFyY2ggZm9yIHNlcXVlbmNlICIgLT4gIiBmcm9tIHRoZSBlbmQgZm9yIGNhc2Ug
d2hlbiB0aGVyZSBhcmUKLSAgICAgICAgICAgICAgIG1vcmUgb2NjdXJyZW5jZXMuIEYuZS4gaWYg
ZnRwZCByZXR1cm5zICJhIC0+IGIgLT4gYyIgYXNzdW1lCi0gICAgICAgICAgICAgICAiYSAtPiBi
IiBhcyBhIG5hbWUuIFBvd2VydXNlcnMgY2FuIHJlbW92ZSB1bm5lY2Vzc2FyeSBwYXJ0cwotICAg
ICAgICAgICAgICAgbWFudWFsbHkgYnV0IHRoZXJlIGlzIG5vIHdheSB0byBmb2xsb3cgdGhlIGxp
bmsgd2hlbiBzb21lCi0gICAgICAgICAgICAgICBlc3NlbnRpYWwgcGFydCBpcyBtaXNzaW5nLiAq
LwotICAgICAgICAgICAgcCA9IHJlc3VsdC5maWxlbmFtZSArIChyZXN1bHQuZmlsZW5hbWVMZW5n
dGggLSA1KTsKLSAgICAgICAgICAgIGZvciAocG9zID0gKHJlc3VsdC5maWxlbmFtZUxlbmd0aCAt
IDUpOyBwb3MgPiAwOyBwb3MtLSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKHN0
cm5jbXAocCwgIiAtPiAiLCA0KSA9PSAwKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmxpbmtuYW1lID0gcCArIDQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0Lmxpbmtu
YW1lTGVuZ3RoID0gKCYobGluZVtsaW5lbGVuXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtIChyZXN1bHQubGlua25hbWUpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5maWxl
bmFtZUxlbmd0aCA9IHBvczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICBwLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gID0gbW9udGhO
dW07CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaSh0
b2tlbnNbdG9rbWFya2VyKzJdKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5tb2RpZmll
ZFRpbWUudG1fbWRheSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50
bV9tZGF5Kys7CisKKyAgICAgICAgICAgICAgICBwID0gdG9rZW5zW3Rva21hcmtlciszXTsKKyAg
ICAgICAgICAgICAgICBwb3MgPSAodW5zaWduZWQpYXRvaShwKTsKKyAgICAgICAgICAgICAgICBp
ZiAocFsxXSA9PSAnOicpIC8qIG9uZSBkaWdpdCBob3VyICovCisgICAgICAgICAgICAgICAgICAg
IHAtLTsKKyAgICAgICAgICAgICAgICBpZiAocFsyXSAhPSAnOicpIC8qIHllYXIgKi8KKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyID0gcG9zOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1l
LnRtX2hvdXIgPSBwb3M7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1fbWluICA9IGF0b2kocCszKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBbNV0gPT0gJzon
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9zZWMgPSBh
dG9pKHArNik7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5ub3cpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVfdCBub3cgPSB0aW1lKG51bGxwdHIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUubm93ID0gbm93ICogMTAwMDAwMC4wOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGhhcyB0aGUgeWVhciAyMDM4IGJ1Zwor
ICAgICAgICAgICAgICAgICAgICAgICAgZ210aW1lX3IoJm5vdywgJnN0YXRlLm5vd0ZUUFRpbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubm93RlRQVGltZS50bV95ZWFyICs9IDE5
MDA7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICByZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX3llYXIgPSBzdGF0ZS5ub3dGVFBUaW1lLnRtX3llYXI7CisgICAgICAg
ICAgICAgICAgICAgIGludCBub3cgPSAoc3RhdGUubm93RlRQVGltZS50bV9tb24gPDwgNSkgKyBz
dGF0ZS5ub3dGVFBUaW1lLnRtX21kYXk7CisgICAgICAgICAgICAgICAgICAgIGludCBtb2RpZmll
ZFRpbWUgPSAoc3RhdGUubW9kaWZpZWRUaW1lLnRtX21vbiA8PCA1KSArIHN0YXRlLm1vZGlmaWVk
VGltZS50bV9tZGF5OworICAgICAgICAgICAgICAgICAgICBpZiAobm93IDwgbW9kaWZpZWQpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXItLTsKKwor
ICAgICAgICAgICAgICAgIH0gLyogdGltZS95ZWFyICovCisKKyAgICAgICAgICAgICAgICAvLyB0
aGVyZSBpcyBleGFjdGx5IDEgc3BhY2UgYmV0d2VlbiBmaWxlbmFtZSBhbmQgcHJldmlvdXMgdG9r
ZW4gaW4gYWxsCisgICAgICAgICAgICAgICAgLy8gb3V0cHV0cyBleGNlcHQgb2xkIEhlbGxzb2Z0
CisgICAgICAgICAgICAgICAgaWYgKCFpc09sZEhlbGxzb2Z0KQorICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbdG9rbWFya2VyKzNdICsgdG9rbGVuW3Rva21hcmtl
ciszXSArIDE7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1
bHQuZmlsZW5hbWUgPSB0b2tlbnNbdG9rbWFya2VyKzRdOworCisgICAgICAgICAgICAgICAgcmVz
dWx0LmZpbGVuYW1lTGVuZ3RoID0gKCYobGluZVtsaW5lbGVuXSkpCisgICAgICAgICAgICAgICAg
ICAgIC0gKHJlc3VsdC5maWxlbmFtZSk7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5
cGUgPT0gRlRQTGlua0VudHJ5ICYmIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IDQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLyogRmlyc3QgdHJ5IHRvIHVzZSByZXN1bHQuZmVfc2l6ZSB0byBmaW5k
ICIgLT4gIiBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjYW4gZ2l2ZSBw
cm9wZXIgcmVzdWx0IGZvciBjYXNlcyBsaWtlICJhYWEgLT4gYmJiIC0+IGNjYyIuICovCisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZpbGVTaXplID0gcmVzdWx0LmZpbGVTaXplLnRvVUlu
dCgpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPiAo
ZmlsZVNpemUgKyA0KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXN0cm5jbXAocmVzdWx0
LmZpbGVuYW1lICsgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gZmlsZVNpemUgLSA0LCAiIC0+ICIs
IDQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubGlua25hbWUgPSByZXN1bHQu
ZmlsZW5hbWUgKyAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gZmlsZVNpemUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoID0gKCYobGluZVtsaW5lbGVuXSkp
IC0gKHJlc3VsdC5saW5rbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmls
ZW5hbWVMZW5ndGggLT0gZmlsZVNpemUgKyA0OworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgLyogU2VhcmNoIGZvciBzZXF1ZW5jZSAiIC0+ICIg
ZnJvbSB0aGUgZW5kIGZvciBjYXNlIHdoZW4gdGhlcmUgYXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb3JlIG9jY3VycmVuY2VzLiBGLmUuIGlmIGZ0cGQgcmV0dXJucyAiYSAtPiBiIC0+
IGMiIGFzc3VtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgImEgLT4gYiIgYXMgYSBuYW1l
LiBQb3dlcnVzZXJzIGNhbiByZW1vdmUgdW5uZWNlc3NhcnkgcGFydHMKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hbnVhbGx5IGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZm9sbG93IHRoZSBs
aW5rIHdoZW4gc29tZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXNzZW50aWFsIHBhcnQg
aXMgbWlzc2luZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSByZXN1bHQuZmlsZW5h
bWUgKyAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gNSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKHBvcyA9IChyZXN1bHQuZmlsZW5hbWVMZW5ndGggLSA1KTsgcG9zID4gMDsgcG9zLS0p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cm5jbXAocCwgIiAtPiAiLCA0
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubGlua25hbWUgPSBw
ICsgNDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVu
Z3RoID0gKCYobGluZVtsaW5lbGVuXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtIChyZXN1bHQubGlua25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuZmlsZW5hbWVMZW5ndGggPSBwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwLS07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAKICNpZiBkZWZpbmVkKFNVUFBPUlRf
TFNMRikgLyogc29tZSAodmVyeSByYXJlKSBzZXJ2ZXJzIHJldHVybiBscyAtbEYgKi8KLSAgICAg
ICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IDEpCi0gICAgICAgIHsKLSAgICAgICAgICBw
ID0gcmVzdWx0LmZpbGVuYW1lW3Jlc3VsdC5maWxlbmFtZUxlbmd0aC0xXTsKLSAgICAgICAgICBw
b3MgPSByZXN1bHQudHlwZTsKLSAgICAgICAgICBpZiAocG9zID09ICdkJykgeyAKLSAgICAgICAg
ICAgICBpZiAoKnAgPT0gJy8nKSByZXN1bHQuZmlsZW5hbWVMZW5ndGgtLTsgLyogZGlyZWN0b3J5
ICovCi0gICAgICAgICAgfSBlbHNlIGlmIChwb3MgPT0gJ2wnKSB7IAotICAgICAgICAgICAgIGlm
ICgqcCA9PSAnQCcpIHJlc3VsdC5maWxlbmFtZUxlbmd0aC0tOyAvKiBzeW1saW5rICovCi0gICAg
ICAgICAgfSBlbHNlIGlmIChwb3MgPT0gJ2YnKSB7IAotICAgICAgICAgICAgIGlmICgqcCA9PSAn
KicpIHJlc3VsdC5maWxlbmFtZUxlbmd0aC0tOyAvKiBleGVjdXRhYmxlICovCi0gICAgICAgICAg
fSBlbHNlIGlmICgqcCA9PSAnPScgfHwgKnAgPT0gJyUnIHx8ICpwID09ICd8JykgewotICAgICAg
ICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoLS07IC8qIHNvY2tldCwgd2hpdGVvdXQsIGZpZm8g
Ki8KLSAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmZp
bGVuYW1lTGVuZ3RoID4gMSkgeworICAgICAgICAgICAgICAgICAgICBwID0gcmVzdWx0LmZpbGVu
YW1lW3Jlc3VsdC5maWxlbmFtZUxlbmd0aC0xXTsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0g
cmVzdWx0LnR5cGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gJ2QnKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKnAgPT0gJy8nKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aC0tOyAvKiBkaXJlY3RvcnkgKi8KKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChwb3MgPT0gJ2wnKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKnAgPT0gJ0AnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZUxlbmd0aC0tOyAvKiBzeW1saW5rICovCisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAocG9zID09ICdmJykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwID09ICcq
JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGgtLTsg
LyogZXhlY3V0YWJsZSAqLworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCpwID09ICc9
JyB8fCAqcCA9PSAnJScgfHwgKnAgPT0gJ3wnKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmZpbGVuYW1lTGVuZ3RoLS07IC8qIHNvY2tldCwgd2hpdGVvdXQsIGZpZm8gKi8KKyAgICAg
ICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgCi0gICAgICAgIC8qIHRoZSBjYWxsZXIgc2hvdWxk
IGRvIHRoaXMgKGlmIGRyb3BwaW5nICIuIiBhbmQgIi4uIiBpcyBkZXNpcmVkKQotICAgICAgICBp
ZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkgJiYgcmVzdWx0LmZpbGVuYW1lWzBd
ID09ICcuJyAmJgotICAgICAgICAgICAgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAxIHx8IChy
ZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4nKSkpCi0gICAgICAgICAgcmV0dXJu
IEZUUEp1bmtFbnRyeTsKLSAgICAgICAgKi8KIAotICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7
ICAKKyAgICAgICAgICAgICAgICAvKiB0aGUgY2FsbGVyIHNob3VsZCBkbyB0aGlzIChpZiBkcm9w
cGluZyAiLiIgYW5kICIuLiIgaXMgZGVzaXJlZCkKKyAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkgJiYgcmVzdWx0LmZpbGVuYW1lWzBdID09ICcu
JyAmJgorICAgICAgICAgICAgICAgICAgIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMSB8fCAo
cmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDIgJiYKKyAgICAgICAgICAgICAgICAgICByZXN1bHQu
ZmlsZW5hbWVbMV0gPT0gJy4nKSkpCisgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZUUEp1bmtF
bnRyeTsKKyAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC50eXBlOyAgCiAKLSAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnVScpICovCisgICAgICAg
ICAgICB9IC8qIGlmIChsc3R5bGUgPT0gJ1UnKSAqLwogCi0gICAgfSAvKiBpZiAoIWxzdHlsZSAm
JiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1UnKSkgKi8KKyAgICAg
ICAgfSAvKiBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5
bGUgPT0gJ1UnKSkgKi8KICNlbmRpZgogCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KKyAgICAgICAgLyogKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8K
IAogI2lmIGRlZmluZWQoU1VQUE9SVF9XMTYpIC8qIDE2Yml0IFdpbmRvd3MgKi8KLSAgICBpZiAo
IWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ3cnKSkK
LSAgICB7ICAgICAgIC8qIG9sZCBTdXBlclRDUCBzdWl0ZSBGVFAgc2VydmVyIGZvciBXaW4zLjEg
Ki8KKyAgICAgICAgaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlz
dFN0eWxlID09ICd3JykpIHsKKyAgICAgICAgICAgIC8qIG9sZCBTdXBlclRDUCBzdWl0ZSBGVFAg
c2VydmVyIGZvciBXaW4zLjEgKi8KICAgICAgICAgICAgIC8qIG9sZCBOZXRNYW5hZ2UgQ2hhbWVs
ZW9uIFRDUC9JUCBzdWl0ZSBGVFAgc2VydmVyIGZvciBXaW4zLjEgKi8KLSAgICAgIC8qCi0gICAg
ICAqIFN1cGVyVENQIGRpcmxpc3QgZnJvbSB0aGUgbWlycm9yLnBsIHByb2plY3QKLSAgICAgICog
bW9uL2RheS95ZWFyIHNlcGFyYXRvciBtYXkgYmUgJy8nIG9yICctJy4KLSAgICAgICogLiAgICAg
ICAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0xNi05NCAgICAgICAgMTc6MTYKLSAgICAgICog
Li4gICAgICAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0xNi05NCAgICAgICAgMTc6MTYKLSAg
ICAgICogSU5TVEFMTCAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0xNi05NCAgICAgICAgMTc6
MTcKLSAgICAgICogQ01UICAgICAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0yMS05NCAgICAg
ICAgMTA6MTcKLSAgICAgICogREVTSUdOMS5ET0MgICAgICAgICAgMTEyNjQgICAgICAwNS0xMS05
NSAgICAgICAgMTQ6MjAKLSAgICAgICogUkVBRE1FLlRYVCAgICAgICAgICAgIDEwNDUgICAgICAw
NS0xMC05NSAgICAgICAgMTE6MDEKLSAgICAgICogV1BLSVQxLkVYRSAgICAgICAgICA5NjAzMzgg
ICAgICAwNi0yMS05NSAgICAgICAgMTc6MDEKLSAgICAgICogQ01ULkNTViAgICAgICAgICAgICAg
ICAgIDAgICAgICAwNy0wNi05NSAgICAgICAgMTQ6NTYKLSAgICAgICoKLSAgICAgICogQ2hhbWVs
ZW9uIGRpcmxpc3QgZ3Vlc3NlZCBmcm9tIGx5bngKLSAgICAgICogLiAgICAgICAgICAgICAgIDxE
SVI+ICAgICAgTm92IDE2IDE5OTQgMTc6MTYgICAKLSAgICAgICogLi4gICAgICAgICAgICAgIDxE
SVI+ICAgICAgTm92IDE2IDE5OTQgMTc6MTYgICAKLSAgICAgICogSU5TVEFMTCAgICAgICAgIDxE
SVI+ICAgICAgTm92IDE2IDE5OTQgMTc6MTcKLSAgICAgICogQ01UICAgICAgICAgICAgIDxESVI+
ICAgICAgTm92IDIxIDE5OTQgMTA6MTcKLSAgICAgICogREVTSUdOMS5ET0MgICAgIDExMjY0ICAg
ICAgTWF5IDExIDE5OTUgMTQ6MjAgICBBCi0gICAgICAqIFJFQURNRS5UWFQgICAgICAgMTA0NSAg
ICAgIE1heSAxMCAxOTk1IDExOjAxCi0gICAgICAqIFdQS0lUMS5FWEUgICAgIDk2MDMzOCAgICAg
IEp1biAyMSAxOTk1IDE3OjAxICAgUgotICAgICAgKiBDTVQuQ1NWICAgICAgICAgICAgIDAgICAg
ICBKdWwgMDYgMTk5NSAxNDo1NiAgIFJIQQotICAgICAgKi8KLSAgICAgIGlmIChudW10b2tzID49
IDQgJiYgdG9rbGVuWzBdIDwgMTMgJiYgCi0gICAgICAgICAgKCh0b2tsZW5bMV0gPT0gNSAmJiAq
dG9rZW5zWzFdID09ICc8JykgfHwgaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pKSApCi0gICAgICB7
Ci0gICAgICAgIGlmIChudW10b2tzID09IDQKLSAgICAgICAgICYmICh0b2tsZW5bMl0gPT0gOCB8
fCB0b2tsZW5bMl0gPT0gOSkKLSAgICAgICAgICYmICgoKHRva2Vuc1syXVsyXSkgPT0gJy8nICYm
ICh0b2tlbnNbMl1bNV0pID09ICcvJykgfHwKLSAgICAgICAgICAgICAoKHRva2Vuc1syXVsyXSkg
PT0gJy0nICYmICh0b2tlbnNbMl1bNV0pID09ICctJykpCi0gICAgICAgICAmJiAodG9rbGVuWzNd
ID09IDQgfHwgdG9rbGVuWzNdID09IDUpCi0gICAgICAgICAmJiAodG9rZW5zWzNdW3Rva2xlblsz
XS0zXSkgPT0gJzonCi0gICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzBdKSAmJiBp
c0FTQ0lJRGlnaXQodG9rZW5zWzJdWzFdKQotICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vu
c1syXVszXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1syXVs0XSkKLSAgICAgICAgICYmIGlzQVND
SUlEaWdpdCh0b2tlbnNbMl1bNl0pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bN10pCi0gICAg
ICAgICAmJiAodG9rbGVuWzJdIDwgOSB8fCBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzhdKSkKLSAg
ICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbM11bdG9rbGVuWzNdLTFdKSAmJiBpc0FTQ0lJ
RGlnaXQodG9rZW5zWzNdW3Rva2xlblszXS0yXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0
b2tlbnNbM11bdG9rbGVuWzNdLTRdKSAmJiBpc0FTQ0lJRGlnaXQoKnRva2Vuc1szXSkgCi0gICAg
ICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICBsc3R5bGUgPSAndyc7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAoKG51bXRva3MgPT0gNiB8fCBudW10b2tzID09IDcpCi0gICAgICAgICAm
JiB0b2tsZW5bMl0gPT0gMyAmJiB0b2tsZW5bM10gPT0gMgotICAgICAgICAgJiYgdG9rbGVuWzRd
ID09IDQgJiYgdG9rbGVuWzVdID09IDUKLSAgICAgICAgICYmICh0b2tlbnNbNV1bMl0pID09ICc6
JwotICAgICAgICAgJiYgaXNBU0NJSUFscGhhKHRva2Vuc1syXVswXSkgJiYgaXNBU0NJSUFscGhh
KHRva2Vuc1syXVsxXSkKLSAgICAgICAgICYmICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FT
Q0lJQWxwaGEodG9rZW5zWzJdWzJdKQotICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1sz
XVswXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1szXVsxXSkKLSAgICAgICAgICYmIGlzQVNDSUlE
aWdpdCh0b2tlbnNbNF1bMF0pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbNF1bMV0pCi0gICAgICAg
ICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzRdWzJdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzRd
WzNdKQotICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s1XVswXSkgJiYgaXNBU0NJSURp
Z2l0KHRva2Vuc1s1XVsxXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbNV1bM10p
ICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbNV1bNF0pCi0gICAgICAgICAvKiBjb3VsZCBhbHNvIGNo
ZWNrIHRoYXQgKCYodG9rZW5zWzVdWzVdKSAtIHRva2Vuc1syXSkgPT0gMTcgKi8KLSAgICAgICAg
KQotICAgICAgICB7Ci0gICAgICAgICAgbHN0eWxlID0gJ3cnOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChsc3R5bGUgJiYgc3RhdGUubGlzdFN0eWxlICE9IGxzdHlsZSkgLyogZmlyc3QgdGltZSAq
LwotICAgICAgICB7Ci0gICAgICAgICAgcCA9IHRva2Vuc1sxXTsgICAKLSAgICAgICAgICBpZiAo
dG9rbGVuWzFdICE9IDUgfHwgcFswXSAhPSAnPCcgfHwgcFsxXSAhPSAnRCcgfHwgCi0gICAgICAg
ICAgICAgICAgIHBbMl0gIT0gJ0knIHx8IHBbM10gIT0gJ1InIHx8IHBbNF0gIT0gJz4nKQotICAg
ICAgICAgIHsKLSAgICAgICAgICAgIGZvciAocG9zID0gMDsgbHN0eWxlICYmIHBvcyA8IHRva2xl
blsxXTsgcG9zKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmICghaXNBU0NJSURp
Z2l0KCpwKyspKQotICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgfSAvKiBub3QgPERJUj4gKi8KLSAgICAgICAgfSAvKiBpZiAoZmlyc3QgdGltZSkg
Ki8KLSAgICAgIH0gLyogaWYgKG51bXRva3MgPT0gLi4uKSAqLwotCi0gICAgICBpZiAobHN0eWxl
ID09ICd3JykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKLSAgICAg
ICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOwotCi0gICAgICAgIHJlc3VsdC5jYXNlU2Vuc2l0
aXZlID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzBdOwotICAgICAg
ICByZXN1bHQuZmlsZW5hbWVMZW5ndGggPSB0b2tsZW5bMF07Ci0gICAgICAgIHJlc3VsdC50eXBl
ID0gRlRQRGlyZWN0b3J5RW50cnk7Ci0KLSAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAgICAgICAg
aWYgKGlzQVNDSUlEaWdpdCgqcCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQudHlwZSA9
IEZUUEZpbGVFbnRyeTsKLSAgICAgICAgICBwb3MgPSB0b2tsZW5bMV07Ci0gICAgICAgICAgcmVz
dWx0LmZpbGVTaXplID0gU3RyaW5nKHAsIHBvcyk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgKiBTdXBlclRDUCBkaXJsaXN0IGZyb20gdGhlIG1pcnJvci5wbCBwcm9q
ZWN0CisgICAgICAgICAgICAgKiBtb24vZGF5L3llYXIgc2VwYXJhdG9yIG1heSBiZSAnLycgb3Ig
Jy0nLgorICAgICAgICAgICAgICogLiAgICAgICAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0x
Ni05NCAgICAgICAgMTc6MTYKKyAgICAgICAgICAgICAqIC4uICAgICAgICAgICAgICA8RElSPiAg
ICAgICAgICAgMTEtMTYtOTQgICAgICAgIDE3OjE2CisgICAgICAgICAgICAgKiBJTlNUQUxMICAg
ICAgICAgPERJUj4gICAgICAgICAgIDExLTE2LTk0ICAgICAgICAxNzoxNworICAgICAgICAgICAg
ICogQ01UICAgICAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0yMS05NCAgICAgICAgMTA6MTcK
KyAgICAgICAgICAgICAqIERFU0lHTjEuRE9DICAgICAgICAgIDExMjY0ICAgICAgMDUtMTEtOTUg
ICAgICAgIDE0OjIwCisgICAgICAgICAgICAgKiBSRUFETUUuVFhUICAgICAgICAgICAgMTA0NSAg
ICAgIDA1LTEwLTk1ICAgICAgICAxMTowMQorICAgICAgICAgICAgICogV1BLSVQxLkVYRSAgICAg
ICAgICA5NjAzMzggICAgICAwNi0yMS05NSAgICAgICAgMTc6MDEKKyAgICAgICAgICAgICAqIENN
VC5DU1YgICAgICAgICAgICAgICAgICAwICAgICAgMDctMDYtOTUgICAgICAgIDE0OjU2CisgICAg
ICAgICAgICAgKgorICAgICAgICAgICAgICogQ2hhbWVsZW9uIGRpcmxpc3QgZ3Vlc3NlZCBmcm9t
IGx5bngKKyAgICAgICAgICAgICAqIC4gICAgICAgICAgICAgICA8RElSPiAgICAgIE5vdiAxNiAx
OTk0IDE3OjE2ICAgCisgICAgICAgICAgICAgKiAuLiAgICAgICAgICAgICAgPERJUj4gICAgICBO
b3YgMTYgMTk5NCAxNzoxNiAgIAorICAgICAgICAgICAgICogSU5TVEFMTCAgICAgICAgIDxESVI+
ICAgICAgTm92IDE2IDE5OTQgMTc6MTcKKyAgICAgICAgICAgICAqIENNVCAgICAgICAgICAgICA8
RElSPiAgICAgIE5vdiAyMSAxOTk0IDEwOjE3CisgICAgICAgICAgICAgKiBERVNJR04xLkRPQyAg
ICAgMTEyNjQgICAgICBNYXkgMTEgMTk5NSAxNDoyMCAgIEEKKyAgICAgICAgICAgICAqIFJFQURN
RS5UWFQgICAgICAgMTA0NSAgICAgIE1heSAxMCAxOTk1IDExOjAxCisgICAgICAgICAgICAgKiBX
UEtJVDEuRVhFICAgICA5NjAzMzggICAgICBKdW4gMjEgMTk5NSAxNzowMSAgIFIKKyAgICAgICAg
ICAgICAqIENNVC5DU1YgICAgICAgICAgICAgMCAgICAgIEp1bCAwNiAxOTk1IDE0OjU2ICAgUkhB
CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChudW10b2tzID49IDQgJiYgdG9rbGVu
WzBdIDwgMTMKKyAgICAgICAgICAgICAgICAmJiAoKHRva2xlblsxXSA9PSA1ICYmICp0b2tlbnNb
MV0gPT0gJzwnKSB8fCBpc0FTQ0lJRGlnaXQoKnRva2Vuc1sxXSkpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG51bXRva3MgPT0gNAorICAgICAgICAgICAgICAgICAgICAmJiAodG9rbGVuWzJdID09
IDggfHwgdG9rbGVuWzJdID09IDkpCisgICAgICAgICAgICAgICAgICAgICYmICgoKHRva2Vuc1sy
XVsyXSkgPT0gJy8nICYmICh0b2tlbnNbMl1bNV0pID09ICcvJykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHx8ICgodG9rZW5zWzJdWzJdKSA9PSAnLScgJiYgKHRva2Vuc1syXVs1XSkgPT0gJy0n
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKHRva2xlblszXSA9PSA0IHx8IHRva2xlblszXSA9
PSA1KQorICAgICAgICAgICAgICAgICAgICAmJiAodG9rZW5zWzNdW3Rva2xlblszXS0zXSkgPT0g
JzonCisgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bMF0pICYm
IGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bMV0pCisgICAgICAgICAgICAgICAgICAgICYmIGlzQVND
SUlEaWdpdCh0b2tlbnNbMl1bM10pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bNF0pCisgICAg
ICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bNl0pICYmIGlzQVNDSUlE
aWdpdCh0b2tlbnNbMl1bN10pCisgICAgICAgICAgICAgICAgICAgICYmICh0b2tsZW5bMl0gPCA5
IHx8IGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bOF0pKQorICAgICAgICAgICAgICAgICAgICAmJiBp
c0FTQ0lJRGlnaXQodG9rZW5zWzNdW3Rva2xlblszXS0xXSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vu
c1szXVt0b2tsZW5bM10tMl0pCisgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0
b2tlbnNbM11bdG9rbGVuWzNdLTRdKSAmJiBpc0FTQ0lJRGlnaXQoKnRva2Vuc1szXSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbHN0eWxlID0gJ3cnOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoKG51bXRva3MgPT0gNiB8fCBudW10b2tzID09IDcpCisgICAgICAgICAgICAgICAgICAgICYm
IHRva2xlblsyXSA9PSAzICYmIHRva2xlblszXSA9PSAyCisgICAgICAgICAgICAgICAgICAgICYm
IHRva2xlbls0XSA9PSA0ICYmIHRva2xlbls1XSA9PSA1CisgICAgICAgICAgICAgICAgICAgICYm
ICh0b2tlbnNbNV1bMl0pID09ICc6JworICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJQWxw
aGEodG9rZW5zWzJdWzBdKSAmJiBpc0FTQ0lJQWxwaGEodG9rZW5zWzJdWzFdKQorICAgICAgICAg
ICAgICAgICAgICAmJiBpc0FTQ0lJQWxwaGEodG9rZW5zWzJdWzJdKQorICAgICAgICAgICAgICAg
ICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzNdWzBdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5z
WzNdWzFdKQorICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzRdWzBd
KSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzRdWzFdKQorICAgICAgICAgICAgICAgICAgICAmJiBp
c0FTQ0lJRGlnaXQodG9rZW5zWzRdWzJdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzRdWzNdKQor
ICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzVdWzBdKSAmJiBpc0FT
Q0lJRGlnaXQodG9rZW5zWzVdWzFdKQorICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGln
aXQodG9rZW5zWzVdWzNdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzVdWzRdKSkgeworICAgICAg
ICAgICAgICAgICAgICAvKiBjb3VsZCBhbHNvIGNoZWNrIHRoYXQgKCYodG9rZW5zWzVdWzVdKSAt
IHRva2Vuc1syXSkgPT0gMTcgKi8KKyAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gJ3cnOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobHN0eWxlICYmIHN0YXRlLmxp
c3RTdHlsZSAhPSBsc3R5bGUpIHsgLyogZmlyc3QgdGltZSAqLworICAgICAgICAgICAgICAgICAg
ICBwID0gdG9rZW5zWzFdOyAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodG9rbGVuWzFdICE9
IDUgfHwgcFswXSAhPSAnPCcgfHwgcFsxXSAhPSAnRCcKKyAgICAgICAgICAgICAgICAgICAgICAg
IHx8IHBbMl0gIT0gJ0knIHx8IHBbM10gIT0gJ1InIHx8IHBbNF0gIT0gJz4nKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IGxzdHlsZSAmJiBwb3MgPCB0b2tsZW5bMV07
IHBvcysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
KnArKykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gLyogbm90IDxESVI+
ICovCisgICAgICAgICAgICAgICAgfSAvKiBpZiAoZmlyc3QgdGltZSkgKi8KKyAgICAgICAgICAg
IH0gLyogaWYgKG51bXRva3MgPT0gLi4uKSAqLworCisgICAgICAgICAgICBpZiAobHN0eWxlID09
ICd3JykgeworICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOworCisgICAgICAgICAgICAgICAgcmVz
dWx0LmNhc2VTZW5zaXRpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFt
ZSA9IHRva2Vuc1swXTsKKyAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGggPSB0
b2tsZW5bMF07CisgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBEaXJlY3RvcnlFbnRy
eTsKKworICAgICAgICAgICAgICAgIHAgPSB0b2tlbnNbMV07CisgICAgICAgICAgICAgICAgaWYg
KGlzQVNDSUlEaWdpdCgqcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBG
VFBGaWxlRW50cnk7CisgICAgICAgICAgICAgICAgICAgIHBvcyA9IHRva2xlblsxXTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVTaXplID0gU3RyaW5nKHAsIHBvcyk7CisgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgIHAgPSB0b2tlbnNbMl07Ci0gICAgICAgIGlmICh0b2tsZW5b
Ml0gPT0gMykgLyogQ2hhbWVsZW9uICovCi0gICAgICAgIHsKLSAgICAgICAgICB0YnVmWzBdID0g
dG9BU0NJSVVwcGVyKHBbMF0pOwotICAgICAgICAgIHRidWZbMV0gPSB0b0FTQ0lJTG93ZXIocFsx
XSk7Ci0gICAgICAgICAgdGJ1ZlsyXSA9IHRvQVNDSUlMb3dlcihwWzJdKTsKLSAgICAgICAgICBm
b3IgKHBvcyA9IDA7IHBvcyA8ICgxMiozKTsgcG9zKz0zKQotICAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICh0YnVmWzBdID09IG1vbnRoX25hbWVzW3BvcyswXSAmJgotICAgICAgICAgICAgICAg
IHRidWZbMV0gPT0gbW9udGhfbmFtZXNbcG9zKzFdICYmIAotICAgICAgICAgICAgICAgIHRidWZb
Ml0gPT0gbW9udGhfbmFtZXNbcG9zKzJdKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBy
ZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA9IHBvcy8zOwotICAgICAgICAgICAgICByZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX21kYXkgPSBhdG9pKHRva2Vuc1szXSk7Ci0gICAgICAgICAgICAgIHJl
c3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IGF0b2kodG9rZW5zWzRdKSAtIDE5MDA7Ci0gICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gICAgICAgICAgCi0g
ICAgICAgICAgcG9zID0gNTsgLyogQ2hhbWVsZW9uIHRva251bSBvZiBkYXRlIGZpZWxkICovCi0g
ICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlm
aWVkVGltZS50bV9tb24gPSBhdG9pKHArMCktMTsKLSAgICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX21kYXkgPSBhdG9pKHArMyk7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50
bV95ZWFyID0gYXRvaShwKzYpOwotICAgICAgICAgIGlmIChyZXN1bHQubW9kaWZpZWRUaW1lLnRt
X3llYXIgPCA4MCkgLyogU3VwZXJUQ1AgKi8KLSAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRp
bWUudG1feWVhciArPSAxMDA7Ci0KLSAgICAgICAgICBwb3MgPSAzOyAvKiBTdXBlclRDUCB0b2tu
dW0gb2YgZGF0ZSBmaWVsZCAqLwotICAgICAgICB9CisgICAgICAgICAgICAgICAgcCA9IHRva2Vu
c1syXTsKKyAgICAgICAgICAgICAgICBpZiAodG9rbGVuWzJdID09IDMpIHsgLyogQ2hhbWVsZW9u
ICovCisgICAgICAgICAgICAgICAgICAgIHRidWZbMF0gPSB0b0FTQ0lJVXBwZXIocFswXSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRidWZbMV0gPSB0b0FTQ0lJTG93ZXIocFsxXSk7CisgICAgICAg
ICAgICAgICAgICAgIHRidWZbMl0gPSB0b0FTQ0lJTG93ZXIocFsyXSk7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgKDEyKjMpOyBwb3MgKz0gMykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRidWZbMF0gPT0gbW9udGhOYW1lc1twb3MrMF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiB0YnVmWzFdID09IG1vbnRoTmFtZXNbcG9zKzFdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGJ1ZlsyXSA9PSBtb250aE5hbWVzW3BvcysyXSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9u
ID0gcG9zIC8gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX21kYXkgPSBhdG9pKHRva2Vuc1szXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyID0gYXRvaSh0b2tlbnNbNF0pIC0gMTkwMDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwb3MgPSA1
OyAvKiBDaGFtZWxlb24gdG9rbnVtIG9mIGRhdGUgZmllbGQgKi8KKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA9
IGF0b2kocCswKS0xOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRt
X21kYXkgPSBhdG9pKHArMyk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRp
bWUudG1feWVhciA9IGF0b2kocCs2KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5t
b2RpZmllZFRpbWUudG1feWVhciA8IDgwKSAvKiBTdXBlclRDUCAqLworICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyICs9IDEwMDsKKworICAgICAgICAg
ICAgICAgICAgICBwb3MgPSAzOyAvKiBTdXBlclRDUCB0b2tudW0gb2YgZGF0ZSBmaWVsZCAqLwor
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIg
PSBhdG9pKHRva2Vuc1twb3NdKTsKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9taW4g
PSBhdG9pKCYodG9rZW5zW3Bvc11bdG9rbGVuW3Bvc10tMl0pKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIgPSBhdG9pKHRva2Vuc1twb3NdKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiA9IGF0b2koJih0b2tlbnNbcG9zXVt0
b2tsZW5bcG9zXS0yXSkpOwogCi0gICAgICAgIC8qIHRoZSBjYWxsZXIgc2hvdWxkIGRvIHRoaXMg
KGlmIGRyb3BwaW5nICIuIiBhbmQgIi4uIiBpcyBkZXNpcmVkKQotICAgICAgICBpZiAocmVzdWx0
LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkgJiYgcmVzdWx0LmZpbGVuYW1lWzBdID09ICcuJyAm
JgotICAgICAgICAgICAgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAxIHx8IChyZXN1bHQuZmls
ZW5hbWVMZW5ndGggPT0gMiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4nKSkpCi0gICAgICAgICAgcmV0dXJuIEZUUEp1bmtF
bnRyeTsKLSAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAvKiB0aGUgY2FsbGVyIHNob3VsZCBk
byB0aGlzIChpZiBkcm9wcGluZyAiLiIgYW5kICIuLiIgaXMgZGVzaXJlZCkKKyAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkgJiYgcmVzdWx0LmZp
bGVuYW1lWzBdID09ICcuJyAmJgorICAgICAgICAgICAgICAgICAgIChyZXN1bHQuZmlsZW5hbWVM
ZW5ndGggPT0gMSB8fCAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDIgJiYKKyAgICAgICAgICAg
ICAgICAgICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4nKSkpCisgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEZUUEp1bmtFbnRyeTsKKyAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgIHJl
dHVybiByZXN1bHQudHlwZTsKLSAgICAgIH0gLyogKGxzdHlsZSA9PSAndycpICovCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOworICAgICAgICAgICAgfSAvKiAobHN0eWxlID09
ICd3JykgKi8KIAotICAgIH0gLyogaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwg
c3RhdGUubGlzdFN0eWxlID09ICd3JykpICAqLworICAgICAgICB9IC8qIGlmICghbHN0eWxlICYm
ICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAndycpKSAgKi8KICNlbmRp
ZgogCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysgKi8KKyAgICAgICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KIAogI2lmIGRlZmluZWQoU1VQUE9S
VF9ETFMpIC8qIGRscyAtZHRSICovCi0gICAgaWYgKCFsc3R5bGUgJiYgCi0gICAgICAgKHN0YXRl
Lmxpc3RTdHlsZSA9PSAnRCcgfHwgKCFzdGF0ZS5saXN0U3R5bGUgJiYgc3RhdGUubnVtTGluZXMg
PT0gMSkpKQotICAgICAgIC8qIC9iaW4vZGxzIGxpbmVzIGhhdmUgdG8gYmUgaW1tZWRpYXRlbHkg
cmVjb2duaXphYmxlIChmaXJzdCBsaW5lKSAqLwotICAgIHsKLSAgICAgIC8qIEkgaGF2ZW4ndCBz
ZWVuIGFuIEZUUCBzZXJ2ZXIgdGhhdCBkZWxpdmVycyBhIC9iaW4vZGxzIGxpc3RpbmcsCi0gICAg
ICAgKiBidXQgY2FuIGluZmVyIHRoZSBmb3JtYXQgZnJvbSB0aGUgbHlueCBhbmQgbWlycm9yLnBs
IHByb2plY3RzLgotICAgICAgICogQm90aCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCi0gICAgICAg
KgotICAgICAgICogTHlueCBzYXlzOgotICAgICAgICogUkVBRE1FICAgICAgICAgICAgICA3NjMg
IEluZm9ybWF0aW9uIGFib3V0IHRoaXMgc2VydmVyXDAKLSAgICAgICAqIGJpbi8gICAgICAgICAg
ICAgICAgICAtICBcMAotICAgICAgICogZXRjLyAgICAgICAgICAgICAgICAgID0gIFwwCi0gICAg
ICAgKiBscy1sUiAgICAgICAgICAgICAgICAgMCAgXDAKLSAgICAgICAqIGxzLWxSLlogICAgICAg
ICAgICAgICAzICBcMAotICAgICAgICogcHViLyAgICAgICAgICAgICAgICAgID0gIFB1YmxpYyBh
cmVhXDAKLSAgICAgICAqIHVzci8gICAgICAgICAgICAgICAgICAtICBcMAotICAgICAgICogbW9y
Z2FuICAgICAgICAgICAgICAgMTQgIC0+IC4uL3JlYWwvbW9yZ2FuXDAKLSAgICAgICAqIFRJTUlU
Lm1vc3RsaWtlbHkuWlwwCi0gICAgICAgKiAgICAgICAgICAgICAgICAgICA3OTIxNSAgXDAKLSAg
ICAgICAqCi0gICAgICAgKiBtaXJyb3IucGwgc2F5czoKLSAgICAgICAqIGZpbGVuYW1lOiAgXihc
UyopXHMrCi0gICAgICAgKiBzaXplOiAgICAgIChcLXxcPXxcZCspXHMrCi0gICAgICAgKiBtb250
aC9kYXk6ICgoXHdcd1x3XHMrXGQrfFxkK1xzK1x3XHdcdylccysKLSAgICAgICAqIHRpbWUveWVh
cjogKFxkKzpcZCt8XGRcZFxkXGQpKVxzKwotICAgICAgICogcmVzdDogICAgICAoLispIAotICAg
ICAgICoKLSAgICAgICAqIFJFQURNRSAgICAgICAgICAgICAgNzYzICBKdWwgMTEgMjE6MDUgIElu
Zm9ybWF0aW9uIGFib3V0IHRoaXMgc2VydmVyCi0gICAgICAgKiBiaW4vICAgICAgICAgICAgICAg
ICAgLSAgQXByIDI4ICAxOTk0Ci0gICAgICAgKiBldGMvICAgICAgICAgICAgICAgICAgPSAgMTEg
SnVsIDIxOjA0Ci0gICAgICAgKiBscy1sUiAgICAgICAgICAgICAgICAgMCAgIDYgQXVnIDE3OjE0
Ci0gICAgICAgKiBscy1sUi5aICAgICAgICAgICAgICAgMyAgMDUgU2VwIDE5OTQKLSAgICAgICAq
IHB1Yi8gICAgICAgICAgICAgICAgICA9ICBKdWwgMTEgMjE6MDQgIFB1YmxpYyBhcmVhCi0gICAg
ICAgKiB1c3IvICAgICAgICAgICAgICAgICAgLSAgU2VwICA3IDA5OjM5Ci0gICAgICAgKiBtb3Jn
YW4gICAgICAgICAgICAgICAxNCAgQXByIDE4IDA5OjM5ICAtPiAuLi9yZWFsL21vcmdhbgotICAg
ICAgICogVElNSVQubW9zdGxpa2VseS5aCi0gICAgICAgKiAgICAgICAgICAgICAgICAgICA3OTIx
NSAgSnVsIDExIDIxOjA0Ci0gICAgICAqLwotICAgICAgaWYgKCFzdGF0ZS5saXN0U3R5bGUgJiYg
bGluZVtsaW5lbGVuLTFdID09ICc6JyAmJiAKLSAgICAgICAgICBsaW5lbGVuID49IDIgJiYgdG9r
bGVuW251bXRva3MtMV0gIT0gMSkKLSAgICAgIHsgCi0gICAgICAgIC8qIGNvZGUgaW4gbWlycm9y
LnBsIHN1Z2dlc3RzIHRoYXQgYSBsaXN0aW5nIG1heSBiZSBwcmVjZWRlZAotICAgICAgICAgKiBi
eSBhIFBXRCBsaW5lIGluIHRoZSBmb3JtICIvc29tZS9kaXIvbmFtZXMvaGVyZToiCi0gICAgICAg
ICAqIGJ1dCBkb2VzIG5vdCBuZWNlc3NhcmlseSBiZWdpbiB3aXRoICcvJy4gKnNpZ2gqCi0gICAg
ICAgICovCi0gICAgICAgIHBvcyA9IDA7Ci0gICAgICAgIHAgPSBsaW5lOwotICAgICAgICB3aGls
ZSAocG9zIDwgKGxpbmVsZW4tMSkpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBpbGxlZ2FsIChv
ciBleHRyZW1lbHkgdW51c3VhbCkgY2hhcnMgaW4gYSBkaXJzcGVjICovCi0gICAgICAgICAgaWYg
KCpwID09ICc8JyB8fCAqcCA9PSAnfCcgfHwgKnAgPT0gJz4nIHx8Ci0gICAgICAgICAgICAgICpw
ID09ICc/JyB8fCAqcCA9PSAnKicgfHwgKnAgPT0gJ1xcJykKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgIGlmICgqcCA9PSAnLycgJiYgcG9zIDwgKGxpbmVsZW4tMikgJiYgcFsxXSA9PSAn
LycpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICBwKys7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBvcyA9PSAobGluZWxlbi0xKSkKLSAgICAgICAgewot
ICAgICAgICAgIHN0YXRlLmxpc3RTdHlsZSA9ICdEJzsKLSAgICAgICAgICByZXR1cm4gRlRQSnVu
a0VudHJ5OwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICghbHN0eWxlICYmIG51bXRv
a3MgPj0gMikKLSAgICAgIHsKLSAgICAgICAgcG9zID0gMjI7IC8qIHBvcyBvZiAoXGQrfC18PSkg
aWYgdGhpcyBpcyBub3QgcGFydCBvZiBhIG11bHRpbGluZSAqLwotICAgICAgICBpZiAoc3RhdGUu
bGlzdFN0eWxlICYmIGNhcnJ5X2J1Zl9sZW4pIC8qIGZpcnN0IGlzIGZyb20gcHJldmlvdXMgbGlu
ZSAqLwotICAgICAgICAgIHBvcyA9IHRva2xlblsxXS0xOyAvKiBhbmQgaXMgJ2FzLWlzJyAobWF5
IGNvbnRhaW4gd2hpdGVzcGFjZSkgKi8KLQotICAgICAgICBpZiAobGluZWxlbiA+IHBvcykKLSAg
ICAgICAgewotICAgICAgICAgIHAgPSAmbGluZVtwb3NdOwotICAgICAgICAgIGlmICgoKnAgPT0g
Jy0nIHx8ICpwID09ICc9JyB8fCBpc0FTQ0lJRGlnaXQoKnApKSAmJgotICAgICAgICAgICAgICAo
KGxpbmVsZW4gPT0gKHBvcysxKSkgfHwgCi0gICAgICAgICAgICAgICAobGluZWxlbiA+PSAocG9z
KzMpICYmIHBbMV0gPT0gJyAnICYmIHBbMl0gPT0gJyAnKSkgKQotICAgICAgICAgIHsKLSAgICAg
ICAgICAgIHRva21hcmtlciA9IDE7Ci0gICAgICAgICAgICBpZiAoIWNhcnJ5X2J1Zl9sZW4pCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHBvcyA9IDE7Ci0gICAgICAgICAgICAgIHdoaWxl
IChwb3MgPCBudW10b2tzICYmICh0b2tlbnNbcG9zXSt0b2tsZW5bcG9zXSkgPCAoJmxpbmVbMjNd
KSkKLSAgICAgICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICAgICAgdG9rbWFya2VyID0gMDsK
LSAgICAgICAgICAgICAgaWYgKCh0b2tlbnNbcG9zXSt0b2tsZW5bcG9zXSkgPT0gKCZsaW5lWzIz
XSkpCi0gICAgICAgICAgICAgICAgdG9rbWFya2VyID0gcG9zOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKHRva21hcmtlcikgIAotICAgICAgICAgICAgewotICAgICAgICAgICAgICBs
c3R5bGUgPSAnRCc7Ci0gICAgICAgICAgICAgIGlmICgqdG9rZW5zW3Rva21hcmtlcl0gPT0gJy0n
IHx8ICp0b2tlbnNbdG9rbWFya2VyXSA9PSAnPScpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpZiAodG9rbGVuW3Rva21hcmtlcl0gIT0gMSB8fAotICAgICAgICAgICAgICAgICAg
ICh0b2tlbnNbdG9rbWFya2VyLTFdW3Rva2xlblt0b2ttYXJrZXItMV0tMV0pICE9ICcvJykKLSAg
ICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICAgIH0gICAgICAgICAgICAg
IAotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBm
b3IgKHBvcyA9IDA7IGxzdHlsZSAmJiBwb3MgPCB0b2tsZW5bdG9rbWFya2VyXTsgcG9zKyspIAot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHRv
a2Vuc1t0b2ttYXJrZXJdW3Bvc10pKQotICAgICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOyAK
KyAgICAgICAgaWYgKCFsc3R5bGUKKyAgICAgICAgICAgICYmIChzdGF0ZS5saXN0U3R5bGUgPT0g
J0QnIHx8ICghc3RhdGUubGlzdFN0eWxlICYmIHN0YXRlLm51bUxpbmVzID09IDEpKSkgeworICAg
ICAgICAgICAgLyogL2Jpbi9kbHMgbGluZXMgaGF2ZSB0byBiZSBpbW1lZGlhdGVseSByZWNvZ25p
emFibGUgKGZpcnN0IGxpbmUpICovCisgICAgICAgICAgICAvKiBJIGhhdmVuJ3Qgc2VlbiBhbiBG
VFAgc2VydmVyIHRoYXQgZGVsaXZlcnMgYSAvYmluL2RscyBsaXN0aW5nLAorICAgICAgICAgICAg
ICogYnV0IGNhbiBpbmZlciB0aGUgZm9ybWF0IGZyb20gdGhlIGx5bnggYW5kIG1pcnJvci5wbCBw
cm9qZWN0cy4KKyAgICAgICAgICAgICAqIEJvdGggZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgorICAg
ICAgICAgICAgICoKKyAgICAgICAgICAgICAqIEx5bnggc2F5czoKKyAgICAgICAgICAgICAqIFJF
QURNRSAgICAgICAgICAgICAgNzYzICBJbmZvcm1hdGlvbiBhYm91dCB0aGlzIHNlcnZlclwwCisg
ICAgICAgICAgICAgKiBiaW4vICAgICAgICAgICAgICAgICAgLSAgXDAKKyAgICAgICAgICAgICAq
IGV0Yy8gICAgICAgICAgICAgICAgICA9ICBcMAorICAgICAgICAgICAgICogbHMtbFIgICAgICAg
ICAgICAgICAgIDAgIFwwCisgICAgICAgICAgICAgKiBscy1sUi5aICAgICAgICAgICAgICAgMyAg
XDAKKyAgICAgICAgICAgICAqIHB1Yi8gICAgICAgICAgICAgICAgICA9ICBQdWJsaWMgYXJlYVww
CisgICAgICAgICAgICAgKiB1c3IvICAgICAgICAgICAgICAgICAgLSAgXDAKKyAgICAgICAgICAg
ICAqIG1vcmdhbiAgICAgICAgICAgICAgIDE0ICAtPiAuLi9yZWFsL21vcmdhblwwCisgICAgICAg
ICAgICAgKiBUSU1JVC5tb3N0bGlrZWx5LlpcMAorICAgICAgICAgICAgICogICAgICAgICAgICAg
ICAgICAgNzkyMTUgIFwwCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogbWlycm9yLnBs
IHNheXM6CisgICAgICAgICAgICAgKiBmaWxlbmFtZTogIF4oXFMqKVxzKworICAgICAgICAgICAg
ICogc2l6ZTogICAgICAoXC18XD18XGQrKVxzKworICAgICAgICAgICAgICogbW9udGgvZGF5OiAo
KFx3XHdcd1xzK1xkK3xcZCtccytcd1x3XHcpXHMrCisgICAgICAgICAgICAgKiB0aW1lL3llYXI6
IChcZCs6XGQrfFxkXGRcZFxkKSlccysKKyAgICAgICAgICAgICAqIHJlc3Q6ICAgICAgKC4rKSAK
KyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBSRUFETUUgICAgICAgICAgICAgIDc2MyAg
SnVsIDExIDIxOjA1ICBJbmZvcm1hdGlvbiBhYm91dCB0aGlzIHNlcnZlcgorICAgICAgICAgICAg
ICogYmluLyAgICAgICAgICAgICAgICAgIC0gIEFwciAyOCAgMTk5NAorICAgICAgICAgICAgICog
ZXRjLyAgICAgICAgICAgICAgICAgID0gIDExIEp1bCAyMTowNAorICAgICAgICAgICAgICogbHMt
bFIgICAgICAgICAgICAgICAgIDAgICA2IEF1ZyAxNzoxNAorICAgICAgICAgICAgICogbHMtbFIu
WiAgICAgICAgICAgICAgIDMgIDA1IFNlcCAxOTk0CisgICAgICAgICAgICAgKiBwdWIvICAgICAg
ICAgICAgICAgICAgPSAgSnVsIDExIDIxOjA0ICBQdWJsaWMgYXJlYQorICAgICAgICAgICAgICog
dXNyLyAgICAgICAgICAgICAgICAgIC0gIFNlcCAgNyAwOTozOQorICAgICAgICAgICAgICogbW9y
Z2FuICAgICAgICAgICAgICAgMTQgIEFwciAxOCAwOTozOSAgLT4gLi4vcmVhbC9tb3JnYW4KKyAg
ICAgICAgICAgICAqIFRJTUlULm1vc3RsaWtlbHkuWgorICAgICAgICAgICAgICogICAgICAgICAg
ICAgICAgICAgNzkyMTUgIEp1bCAxMSAyMTowNAorICAgICAgICAgICAgICovCisgICAgICAgICAg
ICBpZiAoIXN0YXRlLmxpc3RTdHlsZSAmJiBsaW5lW2xpbmVsZW4tMV0gPT0gJzonCisgICAgICAg
ICAgICAgICAgJiYgbGluZWxlbiA+PSAyICYmIHRva2xlbltudW10b2tzLTFdICE9IDEpIHsKKyAg
ICAgICAgICAgICAgICAvKiBjb2RlIGluIG1pcnJvci5wbCBzdWdnZXN0cyB0aGF0IGEgbGlzdGlu
ZyBtYXkgYmUgcHJlY2VkZWQKKyAgICAgICAgICAgICAgICAgKiBieSBhIFBXRCBsaW5lIGluIHRo
ZSBmb3JtICIvc29tZS9kaXIvbmFtZXMvaGVyZToiCisgICAgICAgICAgICAgICAgICogYnV0IGRv
ZXMgbm90IG5lY2Vzc2FyaWx5IGJlZ2luIHdpdGggJy8nLiAqc2lnaCoKKyAgICAgICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgICAgICBwb3MgPSAwOworICAgICAgICAgICAgICAgIHAgPSBsaW5l
OworICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCAobGluZWxlbi0xKSkgeworICAgICAgICAg
ICAgICAgICAgICAvKiBpbGxlZ2FsIChvciBleHRyZW1lbHkgdW51c3VhbCkgY2hhcnMgaW4gYSBk
aXJzcGVjICovCisgICAgICAgICAgICAgICAgICAgIGlmICgqcCA9PSAnPCcgfHwgKnAgPT0gJ3wn
IHx8ICpwID09ICc+JworICAgICAgICAgICAgICAgICAgICAgICAgfHwgKnAgPT0gJz8nIHx8ICpw
ID09ICcqJyB8fCAqcCA9PSAnXFwnKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICgqcCA9PSAnLycgJiYgcG9zIDwgKGxpbmVsZW4tMikgJiYg
cFsxXSA9PSAnLycpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgICAgIHArKzsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgaWYgKGxzdHlsZSAmJiAhc3RhdGUu
bGlzdFN0eWxlKSAvKiBmaXJzdCB0aW1lICovCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAvKiBzY2FuIGZvciBpbGxlZ2FsIChvciBpbmNyZWRpYmx5IHVudXN1YWwpIGNoYXJzIGlu
IGZuYW1lICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gdG9rZW5zWzBdOyBsc3R5bGUgJiYK
LSAgICAgICAgICAgICAgICAgICAgIHAgPCAmKHRva2Vuc1t0b2ttYXJrZXItMV1bdG9rbGVuW3Rv
a21hcmtlci0xXV0pOyBwKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
aWYgKCpwID09ICc8JyB8fCAqcCA9PSAnfCcgfHwgKnAgPT0gJz4nIHx8IAotICAgICAgICAgICAg
ICAgICAgICAgICpwID09ICc/JyB8fCAqcCA9PSAnKicgfHwgKnAgPT0gJy8nIHx8ICpwID09ICdc
XCcpCi0gICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7CisgICAgICAgICAgICAgICAgaWYg
KHBvcyA9PSAobGluZWxlbi0xKSkgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZS5saXN0U3R5
bGUgPSAnRCc7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH0gLyogc2l6ZSB0
b2tlbiBmb3VuZCAqLwotICAgICAgICAgIH0gLyogZXhwZWN0ZWQgY2hhcnMgYmVoaW5kIGV4cGVj
dGVkIHNpemUgdG9rZW4gKi8KLSAgICAgICAgfSAvKiBpZiAobGluZWxlbiA+IHBvcykgKi8KLSAg
ICAgIH0gLyogaWYgKCFsc3R5bGUgJiYgbnVtdG9rcyA+PSAyKSAqLwotCi0gICAgICBpZiAoIWxz
dHlsZSAmJiBzdGF0ZS5saXN0U3R5bGUgPT0gJ0QnICYmICFjYXJyeV9idWZfbGVuKQotICAgICAg
ewotICAgICAgICAvKiB0aGUgZmlsZW5hbWUgb2YgYSBtdWx0aS1saW5lIGVudHJ5IGNhbiBiZSBp
ZGVudGlmaWVkCi0gICAgICAgICAqIGNvcnJlY3RseSBvbmx5IGlmIGRscyBmb3JtYXQgaGFkIGJl
ZW4gcHJldmlvdXNseSBlc3RhYmxpc2hlZC4KLSAgICAgICAgICogVGhpcyBzaG91bGQgYWx3YXlz
IGJlIHRydWUgYmVjYXVzZSB0aGVyZSBzaG91bGQgYmUgZW50cmllcwotICAgICAgICAgKiBmb3Ig
Jy4nIGFuZC9vciAnLi4nIGFuZC9vciBDV0QgdGhhdCBwcmVjZWRlIHRoZSByZXN0IG9mIHRoZQot
ICAgICAgICAgKiBsaXN0aW5nLgotICAgICAgICAqLwotICAgICAgICBwb3MgPSBsaW5lbGVuOwot
ICAgICAgICBpZiAocG9zID4gKHNpemVvZihzdGF0ZS5jYXJyeUJ1ZmZlciktMSkpCi0gICAgICAg
ICAgcG9zID0gc2l6ZW9mKHN0YXRlLmNhcnJ5QnVmZmVyKS0xOwotICAgICAgICBtZW1jcHkoIHN0
YXRlLmNhcnJ5QnVmZmVyLCBsaW5lLCBwb3MgKTsKLSAgICAgICAgc3RhdGUuY2FycnlCdWZmZXJM
ZW5ndGggPSBwb3M7Ci0gICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7Ci0gICAgICB9Ci0KLSAg
ICAgIGlmIChsc3R5bGUgPT0gJ0QnKQotICAgICAgewotICAgICAgICBzdGF0ZS5wYXJzZWRPbmUg
PSB0cnVlOwotICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7Ci0KLSAgICAgICAgcCA9
ICYodG9rZW5zW3Rva21hcmtlci0xXVt0b2tsZW5bdG9rbWFya2VyLTFdXSk7Ci0gICAgICAgIHJl
c3VsdC5maWxlbmFtZSA9IHRva2Vuc1swXTsKLSAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3Ro
ID0gcCAtIHRva2Vuc1swXTsKLSAgICAgICAgcmVzdWx0LnR5cGUgID0gRlRQRmlsZUVudHJ5Owot
Ci0gICAgICAgIGlmIChyZXN1bHQuZmlsZW5hbWVbcmVzdWx0LmZpbGVuYW1lTGVuZ3RoLTFdID09
ICcvJykKLSAgICAgICAgewotICAgICAgICAgIGlmIChyZXN1bHQubGlua25hbWVMZW5ndGggPT0g
MSkKLSAgICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQSnVua0VudHJ5OwotICAgICAgICAgIGVs
c2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGgtLTsKLSAg
ICAgICAgICAgIHJlc3VsdC50eXBlICA9IEZUUERpcmVjdG9yeUVudHJ5OwotICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0FTQ0lJRGlnaXQoKnRva2Vuc1t0b2ttYXJr
ZXJdKSkKLSAgICAgICAgewotICAgICAgICAgIHBvcyA9IHRva2xlblt0b2ttYXJrZXJdOwotICAg
ICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZyh0b2tlbnNbdG9rbWFya2VyXSwgcG9zKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICgodG9rbWFya2VyKzMpIDwgbnVtdG9rcyAmJiAKLSAg
ICAgICAgICAgICAgKCYodG9rZW5zW251bXRva3MtMV1bdG9rbGVuW251bXRva3MtMV1dKSAtIAot
ICAgICAgICAgICAgICAgdG9rZW5zW3Rva21hcmtlcisxXSkgPj0gKDErMSszKzErNCkgKQotICAg
ICAgICB7Ci0gICAgICAgICAgcG9zID0gKHRva21hcmtlciszKTsKLSAgICAgICAgICBwID0gdG9r
ZW5zW3Bvc107Ci0gICAgICAgICAgcG9zID0gdG9rbGVuW3Bvc107Ci0KLSAgICAgICAgICBpZiAo
KHBvcyA9PSA0IHx8IHBvcyA9PSA1KQotICAgICAgICAgICYmICBpc0FTQ0lJRGlnaXQoKnApICYm
IGlzQVNDSUlEaWdpdChwW3Bvcy0xXSkgJiYgaXNBU0NJSURpZ2l0KHBbcG9zLTJdKQotICAgICAg
ICAgICYmICAoKHBvcyA9PSA1ICYmIHBbMl0gPT0gJzonKSB8fCAgCi0gICAgICAgICAgICAgICAo
cG9zID09IDQgJiYgKGlzQVNDSUlEaWdpdChwWzFdKSB8fCBwWzFdID09ICc6JykpKQotICAgICAg
ICAgICAgICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtb250aF9udW0gPSB0b2ttYXJrZXIr
MTsgLyogYXNzdW1lZCBwb3NpdGlvbiBvZiBtb250aCBmaWVsZCAqLwotICAgICAgICAgICAgcG9z
ID0gdG9rbWFya2VyKzI7ICAgICAgIC8qIGFzc3VtZWQgcG9zaXRpb24gb2YgbWRheSBmaWVsZCAq
LwotICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdCgqdG9rZW5zW21vbnRoX251bV0pKSAvKiBw
b3NpdGlvbnMgYXJlIHJldmVyc2VkICovCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG1v
bnRoX251bSsrOwotICAgICAgICAgICAgICBwb3MtLTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHAgPSB0b2tlbnNbbW9udGhfbnVtXTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQo
KnRva2Vuc1twb3NdKSAKLSAgICAgICAgICAgICYmICh0b2tsZW5bcG9zXSA9PSAxIHx8IAotICAg
ICAgICAgICAgICAgICAgKHRva2xlbltwb3NdID09IDIgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1tw
b3NdWzFdKSkpCi0gICAgICAgICAgICAmJiB0b2tsZW5bbW9udGhfbnVtXSA9PSAzCi0gICAgICAg
ICAgICAmJiBpc0FTQ0lJQWxwaGEoKnApICYmIGlzQVNDSUlBbHBoYShwWzFdKSAmJiBpc0FTQ0lJ
QWxwaGEocFsyXSkgICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcG9zID0gYXRvaSh0
b2tlbnNbcG9zXSk7Ci0gICAgICAgICAgICAgIGlmIChwb3MgPiAwICYmIHBvcyA8PSAzMSkKLSAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRh
eSA9IHBvczsKLSAgICAgICAgICAgICAgICBtb250aF9udW0gPSAxOwotICAgICAgICAgICAgICAg
IGZvciAocG9zID0gMDsgcG9zIDwgKDEyKjMpOyBwb3MrPTMpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgaWYgKHBbMF0gPT0gbW9udGhfbmFtZXNbcG9zKzBdICYmCi0gICAg
ICAgICAgICAgICAgICAgICAgcFsxXSA9PSBtb250aF9uYW1lc1twb3MrMV0gJiYKLSAgICAgICAg
ICAgICAgICAgICAgICBwWzJdID09IG1vbnRoX25hbWVzW3BvcysyXSkKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBtb250aF9udW0rKzsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1vbnRoX251bSA+IDEyKQotICAgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gMDsKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA9IG1vbnRo
X251bSAtIDE7Ci0gICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFsc3R5bGUgJiYg
bnVtdG9rcyA+PSAyKSB7CisgICAgICAgICAgICAgICAgcG9zID0gMjI7IC8qIHBvcyBvZiAoXGQr
fC18PSkgaWYgdGhpcyBpcyBub3QgcGFydCBvZiBhIG11bHRpbGluZSAqLworICAgICAgICAgICAg
ICAgIGlmIChzdGF0ZS5saXN0U3R5bGUgJiYgY2FycnlCdWZMZW5ndGgpIC8qIGZpcnN0IGlzIGZy
b20gcHJldmlvdXMgbGluZSAqLworICAgICAgICAgICAgICAgICAgICBwb3MgPSB0b2tsZW5bMV0t
MTsgLyogYW5kIGlzICdhcy1pcycgKG1heSBjb250YWluIHdoaXRlc3BhY2UpICovCisKKyAgICAg
ICAgICAgICAgICBpZiAobGluZWxlbiA+IHBvcykgeworICAgICAgICAgICAgICAgICAgICBwID0g
JmxpbmVbcG9zXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCgqcCA9PSAnLScgfHwgKnAgPT0g
Jz0nIHx8IGlzQVNDSUlEaWdpdCgqcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAoKGxp
bmVsZW4gPT0gKHBvcysxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChsaW5lbGVuID49
IChwb3MrMykgJiYgcFsxXSA9PSAnICcgJiYgcFsyXSA9PSAnICcpKSApIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRva21hcmtlciA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IWNhcnJ5QnVmTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gMTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgbnVtdG9rcyAmJiAodG9r
ZW5zW3Bvc10rdG9rbGVuW3Bvc10pIDwgKCZsaW5lWzIzXSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva21hcmtl
ciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0b2tlbnNbcG9zXSt0b2ts
ZW5bcG9zXSkgPT0gKCZsaW5lWzIzXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRva21hcmtlciA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0b2ttYXJrZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsc3R5bGUgPSAnRCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCp0b2tlbnNb
dG9rbWFya2VyXSA9PSAnLScgfHwgKnRva2Vuc1t0b2ttYXJrZXJdID09ICc9JykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rbGVuW3Rva21hcmtlcl0gIT0gMQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHRva2Vuc1t0b2ttYXJrZXItMV1b
dG9rbGVuW3Rva21hcmtlci0xXS0xXSkgIT0gJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IGxzdHls
ZSAmJiBwb3MgPCB0b2tsZW5bdG9rbWFya2VyXTsgcG9zKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHRva2Vuc1t0b2ttYXJrZXJdW3Bv
c10pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsc3R5bGUgJiYgIXN0
YXRlLmxpc3RTdHlsZSkgeyAvKiBmaXJzdCB0aW1lICovCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHNjYW4gZm9yIGlsbGVnYWwgKG9yIGluY3JlZGlibHkgdW51c3VhbCkgY2hh
cnMgaW4gZm5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChwID0g
dG9rZW5zWzBdOyBsc3R5bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IHAgPCAmKHRva2Vuc1t0b2ttYXJrZXItMV1bdG9rbGVuW3Rva21hcmtlci0xXV0pOyBwKyspIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcCA9PSAnPCcgfHwgKnAg
PT0gJ3wnIHx8ICpwID09ICc+JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHx8ICpwID09ICc/JyB8fCAqcCA9PSAnKicgfHwgKnAgPT0gJy8nIHx8ICpwID09ICdcXCcp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgfSAvKiBzaXplIHRva2VuIGZvdW5kICov
CisgICAgICAgICAgICAgICAgICAgIH0gLyogZXhwZWN0ZWQgY2hhcnMgYmVoaW5kIGV4cGVjdGVk
IHNpemUgdG9rZW4gKi8KKyAgICAgICAgICAgICAgICB9IC8qIGlmIChsaW5lbGVuID4gcG9zKSAq
LworICAgICAgICAgICAgfSAvKiBpZiAoIWxzdHlsZSAmJiBudW10b2tzID49IDIpICovCisKKyAg
ICAgICAgICAgIGlmICghbHN0eWxlICYmIHN0YXRlLmxpc3RTdHlsZSA9PSAnRCcgJiYgIWNhcnJ5
QnVmTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgLyogdGhlIGZpbGVuYW1lIG9mIGEgbXVsdGkt
bGluZSBlbnRyeSBjYW4gYmUgaWRlbnRpZmllZAorICAgICAgICAgICAgICAgICAqIGNvcnJlY3Rs
eSBvbmx5IGlmIGRscyBmb3JtYXQgaGFkIGJlZW4gcHJldmlvdXNseSBlc3RhYmxpc2hlZC4KKyAg
ICAgICAgICAgICAgICAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgdHJ1ZSBiZWNhdXNlIHRoZXJl
IHNob3VsZCBiZSBlbnRyaWVzCisgICAgICAgICAgICAgICAgICogZm9yICcuJyBhbmQvb3IgJy4u
JyBhbmQvb3IgQ1dEIHRoYXQgcHJlY2VkZSB0aGUgcmVzdCBvZiB0aGUKKyAgICAgICAgICAgICAg
ICAgKiBsaXN0aW5nLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHBvcyA9
IGxpbmVsZW47CisgICAgICAgICAgICAgICAgaWYgKHBvcyA+IChzaXplb2Yoc3RhdGUuY2FycnlC
dWZmZXIpLTEpKQorICAgICAgICAgICAgICAgICAgICBwb3MgPSBzaXplb2Yoc3RhdGUuY2FycnlC
dWZmZXIpLTE7CisgICAgICAgICAgICAgICAgbWVtY3B5KHN0YXRlLmNhcnJ5QnVmZmVyLCBsaW5l
LCBwb3MpOworICAgICAgICAgICAgICAgIHN0YXRlLmNhcnJ5QnVmZmVyTGVuZ3RoID0gcG9zOwor
ICAgICAgICAgICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICB0b2ttYXJrZXIgKz0gMzsgLyogc2tpcCBtZGF5L21vbi95cnRpbWUgKHRv
IGZpbmQgIiAtPiAiKSAqLwotICAgICAgICAgICAgICBwID0gdG9rZW5zW3Rva21hcmtlcl07Ci0K
LSAgICAgICAgICAgICAgcG9zID0gYXRvaShwKTsKLSAgICAgICAgICAgICAgaWYgKHBvcyA+IDI0
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IHBvcy0xOTAw
OwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAocFsxXSA9PSAnOicpCi0gICAgICAgICAgICAgICAgICBwLS07Ci0gICAgICAgICAgICAgICAg
cmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyID0gcG9zOwotICAgICAgICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1fbWluID0gYXRvaShwKzMpOwotICAgICAgICAgICAgICAgIGlmICgh
c3RhdGUubm93KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHRpbWVfdCBu
b3cgPSB0aW1lKE5VTEwpOwotICAgICAgICAgICAgICAgICAgc3RhdGUubm93ID0gbm93ICogMTAw
MDAwMC4wOwotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBjb2RlIGhhcyB0aGUgeWVhciAyMDM4IGJ1ZwotICAgICAgICAgICAgICAgICAgZ210aW1l
X3IoJm5vdywgJnN0YXRlLm5vd0ZUUFRpbWUpOwotICAgICAgICAgICAgICAgICAgc3RhdGUubm93
RlRQVGltZS50bV95ZWFyICs9IDE5MDA7CisKKyAgICAgICAgICAgIGlmIChsc3R5bGUgPT0gJ0Qn
KSB7CisgICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7CisKKyAgICAgICAgICAgICAgICBwID0gJih0
b2tlbnNbdG9rbWFya2VyLTFdW3Rva2xlblt0b2ttYXJrZXItMV1dKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMF07CisgICAgICAgICAgICAgICAgcmVzdWx0LmZp
bGVuYW1lTGVuZ3RoID0gcCAtIHRva2Vuc1swXTsKKyAgICAgICAgICAgICAgICByZXN1bHQudHlw
ZSAgPSBGVFBGaWxlRW50cnk7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmZpbGVuYW1l
W3Jlc3VsdC5maWxlbmFtZUxlbmd0aC0xXSA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdC5saW5rbmFtZUxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LnR5cGUgPSBGVFBKdW5rRW50cnk7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoLS07CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSAgPSBGVFBEaXJlY3RvcnlFbnRyeTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSURpZ2l0
KCp0b2tlbnNbdG9rbWFya2VyXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVu
W3Rva21hcmtlcl07CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmlu
Zyh0b2tlbnNbdG9rbWFya2VyXSwgcG9zKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyID0gc3RhdGUubm93RlRQVGltZS50bV95
ZWFyOwotICAgICAgICAgICAgICAgIGlmICggKCggc3RhdGUubm93RlRQVGltZS50bV9tb24gIDw8
IDQpICsgc3RhdGUubm93RlRQVGltZS50bV9tZGF5KSA8Ci0gICAgICAgICAgICAgICAgICAgICAo
KHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uIDw8IDQpICsgcmVzdWx0Lm1vZGlmaWVkVGltZS50
bV9tZGF5KSApCi0gICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIt
LTsKLSAgICAgICAgICAgICAgfSAvKiBnb3QgeWVhciBvciB0aW1lICovCi0gICAgICAgICAgICB9
IC8qIGdvdCBtb250aC9tZGF5ICovCi0gICAgICAgICAgfSAvKiBtYXkgaGF2ZSB5ZWFyIG9yIHRp
bWUgKi8KLSAgICAgICAgfSAvKiBlbm91Z2ggcmVtYWluaW5nIHRvIHBvc3NpYmx5IGhhdmUgZGF0
ZS90aW1lICovCi0KLSAgICAgICAgaWYgKG51bXRva3MgPiAodG9rbWFya2VyKzIpKQotICAgICAg
ICB7Ci0gICAgICAgICAgcG9zID0gdG9rbWFya2VyKzE7Ci0gICAgICAgICAgcCA9IHRva2Vuc1tw
b3NdOwotICAgICAgICAgIGlmICh0b2tsZW5bcG9zXSA9PSAyICYmICpwID09ICctJyAmJiBwWzFd
ID09ICc+JykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBwID0gJih0b2tlbnNbbnVtdG9rcy0x
XVt0b2tsZW5bbnVtdG9rcy0xXV0pOwotICAgICAgICAgICAgcmVzdWx0LnR5cGUgID0gRlRQTGlu
a0VudHJ5OwotICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lID0gdG9rZW5zW3BvcysxXTsKLSAg
ICAgICAgICAgIHJlc3VsdC5saW5rbmFtZUxlbmd0aCA9IHAgLSByZXN1bHQubGlua25hbWU7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0LmxpbmtuYW1lTGVuZ3RoID4gMSAmJgotICAgICAgICAgICAg
ICAgIHJlc3VsdC5saW5rbmFtZVtyZXN1bHQubGlua25hbWVMZW5ndGgtMV0gPT0gJy8nKQotICAg
ICAgICAgICAgICByZXN1bHQubGlua25hbWVMZW5ndGgtLTsKLSAgICAgICAgICB9Ci0gICAgICAg
IH0gLyogaWYgKG51bXRva3MgPiAodG9rbWFya2VyKzIpKSAqLwotCi0gICAgICAgIC8qIHRoZSBj
YWxsZXIgc2hvdWxkIGRvIHRoaXMgKGlmIGRyb3BwaW5nICIuIiBhbmQgIi4uIiBpcyBkZXNpcmVk
KQotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkgJiYgcmVzdWx0
LmZpbGVuYW1lWzBdID09ICcuJyAmJgotICAgICAgICAgICAgKHJlc3VsdC5maWxlbmFtZUxlbmd0
aCA9PSAxIHx8IChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMiAmJgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4nKSkpCi0gICAg
ICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsKLSAgICAgICAgKi8KLQotICAgICAgICByZXR1cm4g
cmVzdWx0LnR5cGU7Ci0KLSAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnRCcpICovCi0gICAgfSAv
KiBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0g
J0QnKSkgKi8KKworICAgICAgICAgICAgICAgIGlmICgodG9rbWFya2VyKzMpIDwgbnVtdG9rcwor
ICAgICAgICAgICAgICAgICAgICAmJiAoJih0b2tlbnNbbnVtdG9rcy0xXVt0b2tsZW5bbnVtdG9r
cy0xXV0pIC0gdG9rZW5zW3Rva21hcmtlcisxXSkgPj0gKDErMSszKzErNCkgKSB7CisgICAgICAg
ICAgICAgICAgICAgIHBvcyA9ICh0b2ttYXJrZXIrMyk7CisgICAgICAgICAgICAgICAgICAgIHAg
PSB0b2tlbnNbcG9zXTsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gdG9rbGVuW3Bvc107CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKChwb3MgPT0gNCB8fCBwb3MgPT0gNSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICYmIGlzQVNDSUlEaWdpdCgqcCkgJiYgaXNBU0NJSURpZ2l0KHBbcG9z
LTFdKSAmJiBpc0FTQ0lJRGlnaXQocFtwb3MtMl0pCisgICAgICAgICAgICAgICAgICAgICAgICAm
JiAoKHBvcyA9PSA1ICYmIHBbMl0gPT0gJzonKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHx8IChwb3MgPT0gNCAmJiAoaXNBU0NJSURpZ2l0KHBbMV0pIHx8IHBbMV0gPT0gJzonKSkpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtb250aE51bSA9IHRva21hcmtlcisxOyAvKiBhc3N1
bWVkIHBvc2l0aW9uIG9mIG1vbnRoIGZpZWxkICovCisgICAgICAgICAgICAgICAgICAgICAgICBw
b3MgPSB0b2ttYXJrZXIrMjsgICAgICAgLyogYXNzdW1lZCBwb3NpdGlvbiBvZiBtZGF5IGZpZWxk
ICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbbW9u
dGhOdW1dKSkgeyAvKiBwb3NpdGlvbnMgYXJlIHJldmVyc2VkICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9udGhOdW0rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Mt
LTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHAg
PSB0b2tlbnNbbW9udGhOdW1dOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlE
aWdpdCgqdG9rZW5zW3Bvc10pICYmICh0b2tsZW5bcG9zXSA9PSAxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgKHRva2xlbltwb3NdID09IDIgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1tw
b3NdWzFdKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG9rbGVuW21vbnRoTnVt
XSA9PSAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSUFscGhhKCpwKSAm
JiBpc0FTQ0lJQWxwaGEocFsxXSkgJiYgaXNBU0NJSUFscGhhKHBbMl0pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zID0gYXRvaSh0b2tlbnNbcG9zXSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHBvcyA+IDAgJiYgcG9zIDw9IDMxKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSA9IHBvczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhOdW0gPSAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8ICgxMiozKTsgcG9zICs9IDMp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwWzBdID09IG1vbnRo
TmFtZXNbcG9zKzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
cFsxXSA9PSBtb250aE5hbWVzW3BvcysxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIHBbMl0gPT0gbW9udGhOYW1lc1twb3MrMl0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb250aE51bSsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb250aE51bSA+IDEyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9t
ZGF5ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBt
b250aE51bSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tb2RpZmll
ZFRpbWUudG1fbWRheSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva21hcmtlciAr
PSAzOyAvKiBza2lwIG1kYXkvbW9uL3lydGltZSAodG8gZmluZCAiIC0+ICIpICovCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXJdOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9zID0gYXRvaShwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocG9zID4gMjQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1feWVhciA9IHBvcy0xOTAwOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFsxXSA9
PSAnOicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLS07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1faG91ciA9IHBv
czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50
bV9taW4gPSBhdG9pKHArMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
c3RhdGUubm93KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX3Qg
bm93ID0gdGltZShudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlLm5vdyA9IG5vdyAqIDEwMDAwMDAuMDsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBoYXMgdGhlIHllYXIgMjAzOCBidWcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdtdGltZV9yKCZub3csICZzdGF0ZS5u
b3dGVFBUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLm5v
d0ZUUFRpbWUudG1feWVhciArPSAxOTAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1feWVhciA9IHN0YXRlLm5vd0ZUUFRpbWUudG1feWVhcjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG5vdyA9IChzdGF0ZS5ub3dGVFBUaW1lLnRtX21vbiA8PCA0KSArIHN0
YXRlLm5vd0ZUUFRpbWUudG1fZGF5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbW9kaWZpZWRUaW1lID0gKHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uIDw8IDQpICsgcmVz
dWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm93IDwgbW9kaWZpZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXItLTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IC8qIGdvdCB5ZWFyIG9yIHRpbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0g
LyogZ290IG1vbnRoL21kYXkgKi8KKyAgICAgICAgICAgICAgICAgICAgfSAvKiBtYXkgaGF2ZSB5
ZWFyIG9yIHRpbWUgKi8KKyAgICAgICAgICAgICAgICB9IC8qIGVub3VnaCByZW1haW5pbmcgdG8g
cG9zc2libHkgaGF2ZSBkYXRlL3RpbWUgKi8KKworICAgICAgICAgICAgICAgIGlmIChudW10b2tz
ID4gKHRva21hcmtlcisyKSkgeworICAgICAgICAgICAgICAgICAgICBwb3MgPSB0b2ttYXJrZXIr
MTsKKyAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1twb3NdOworICAgICAgICAgICAgICAg
ICAgICBpZiAodG9rbGVuW3Bvc10gPT0gMiAmJiAqcCA9PSAnLScgJiYgcFsxXSA9PSAnPicpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAmKHRva2Vuc1tudW10b2tzLTFdW3Rva2xlbltu
dW10b2tzLTFdXSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudHlwZSAgPSBGVFBM
aW5rRW50cnk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubGlua25hbWUgPSB0b2tl
bnNbcG9zKzFdOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3Ro
ID0gcCAtIHJlc3VsdC5saW5rbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQubGlua25hbWVMZW5ndGggPiAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmVz
dWx0LmxpbmtuYW1lW3Jlc3VsdC5saW5rbmFtZUxlbmd0aC0xXSA9PSAnLycpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQubGlua25hbWVMZW5ndGgtLTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0g
LyogaWYgKG51bXRva3MgPiAodG9rbWFya2VyKzIpKSAqLworCisgICAgICAgICAgICAgICAgLyog
dGhlIGNhbGxlciBzaG91bGQgZG8gdGhpcyAoaWYgZHJvcHBpbmcgIi4iIGFuZCAiLi4iIGlzIGRl
c2lyZWQpCisgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9y
eUVudHJ5ICYmIHJlc3VsdC5maWxlbmFtZVswXSA9PSAnLicgJiYKKyAgICAgICAgICAgICAgICAg
ICAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDEgfHwgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9
PSAyICYmCisgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lWzFdID09ICcuJykpKQor
ICAgICAgICAgICAgICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7CisgICAgICAgICAgICAgICAg
ICAgKi8KKworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudHlwZTsKKworICAgICAgICAg
ICAgfSAvKiBpZiAobHN0eWxlID09ICdEJykgKi8KKyAgICAgICAgfSAvKiBpZiAoIWxzdHlsZSAm
JiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ0QnKSkgKi8KICNlbmRp
ZgogCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysgKi8KKyAgICAgICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KIAotICB9IC8qIGlmIChsaW5lbGVu
ID4gMCkgKi8KKyAgICB9IC8qIGlmIChsaW5lbGVuID4gMCkgKi8KIAotICByZXR1cm4gUGFyc2lu
Z0ZhaWxlZChzdGF0ZSk7CisgICAgcmV0dXJuIFBhcnNpbmdGYWlsZWQoc3RhdGUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="264339"
          type_id="1"
          status="-"
          setter="ossy"
    />
          </attachment>
      

    </bug>

</bugzilla>