<?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>175349</bug_id>
          
          <creation_ts>2017-08-08 15:32:50 -0700</creation_ts>
          <short_desc>Rex Bench doesn&apos;t work from the command line</short_desc>
          <delta_ts>2017-08-09 15:34:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1336693</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-08-08 15:32:50 -0700</bug_when>
    <thetext>This is to fix running Rex Bench from the command line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337143</commentid>
    <comment_count>1</comment_count>
      <attachid>317745</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-08-09 14:48:15 -0700</bug_when>
    <thetext>Created attachment 317745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337148</commentid>
    <comment_count>2</comment_count>
      <attachid>317745</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-09 14:57:05 -0700</bug_when>
    <thetext>Comment on attachment 317745
Patch

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

&gt; PerformanceTests/RexBench/octane2_benchmark.js:35
&gt; +// BenchmarkSuite.ResetRNG();

please remove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337172</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-08-09 15:33:29 -0700</bug_when>
    <thetext>Committed r220485: &lt;http://trac.webkit.org/changeset/220485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337173</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-09 15:34:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/33813214&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317745</attachid>
            <date>2017-08-09 14:48:15 -0700</date>
            <delta_ts>2017-08-09 14:57:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>175349.patch</filename>
            <type>text/plain</type>
            <size>33563</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjA0MjApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA4LTA4ICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFJleCBCZW5jaCBk
b2Vzbid0IHdvcmsgZnJvbSB0aGUgY29tbWFuZCBsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBjbGkuanMgdG8gaGF2ZSB0aGUgc2FtZSBz
ZXQgb2YgYmVuY2htYXJrcyBhbmQgLmpzIGZpbGVzIGFzIHRoZSB3ZWIKKyAgICAgICAgcGFnZSBk
cml2ZXIuCisKKyAgICAgICAgUmVmYWN0b3JlZCB0aGUgd2F5IGJlbmNobWFya3MgYXJlIHJ1biB1
c2luZyBhIG5ldyBCZW5jaG1hcmsgYmFzZSBjbGFzcy4gIFRoYXQKKyAgICAgICAgY2xhc3Mgd2ls
bCBydW4gdGhlIGJlbmNobWFyayBhcyB3ZWxsLiAgRWxpbWluYXRlZCB0aGUgdmFyaW91cyBydW5C
ZW5jaG1hcmsoKQorICAgICAgICBmdW5jdGlvbnMgdGhhdCB3ZXJlIHVzZWQgZm9yIGluZGl2aWR1
YWwgdGVzdHMuICBUaGlzIHJlZmFjdG9yaW5nIHdhcyB0aHJlYWRlZAorICAgICAgICBpbnRvIHRo
ZSB3ZWIgcGFnZSBkcml2ZXIgYXMgd2VsbC4gIENoYW5nZWQgdGhlIGl0ZXJhdGlvbiBjb3VudHMg
b24gbWFueSBvZiB0aGUKKyAgICAgICAgaW5kaXZpZHVhbCBiZW5jaG1hcmtzLiAgQWxzbyBjaGFu
Z2VkIHRoZSBpbm5lciBsb29wIGNvdW50IGZvciB0aGUgZmxpZ2h0CisgICAgICAgIHBsYW5uZXIg
dGVzdC4KKworICAgICAgICBFbGltaW5hdGVkIE9jdGFuZTIvYmFzZS5qcyBhcyBpdCBpc24ndCBu
ZWVkZWQgdG8gcnVuIE9jdGFuZTIvUmVnRXhwIHdpdGggdGhlIAorICAgICAgICBuZXcgdGVzdCBo
YXJuZXNzLiAgRWxpbWluYXRlZCBvdGhlciBkZWFkIGNvZGUgaW4gT2N0YW5lMi9yZWdleHAuanMu
CisKKyAgICAgICAgKiBSZXhCZW5jaC9CYXNpYy9iZW5jaG1hcmsuanM6CisgICAgICAgIChCYXNp
Y0JlbmNobWFyayk6CisgICAgICAgIChCYXNpY0JlbmNobWFyay5wcm90b3R5cGUucnVuSXRlcmF0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKHJ1bkJlbmNobWFyayk6IERlbGV0ZWQuCisgICAgICAg
ICogUmV4QmVuY2gvRmxpZ2h0UGxhbm5lci9iZW5jaG1hcmsuanM6CisgICAgICAgIChGbGlnaHRQ
bGFubmVyQmVuY2htYXJrKToKKyAgICAgICAgKEZsaWdodFBsYW5uZXJCZW5jaG1hcmsucHJvdG90
eXBlLnJ1bk9uY2UpOgorICAgICAgICAodGhpcy5wZXJmb3JtYW5jZS5wZXJmb3JtYW5jZS5ub3cu
Y3VycmVudFRpbWUpOiBEZWxldGVkLgorICAgICAgICAoZWxzZS50aGlzLnByZWNpc2VUaW1lLmN1
cnJlbnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKGVsc2UuY3VycmVudFRpbWUpOiBEZWxldGVk
LgorICAgICAgICAoRmxpZ2h0UGxhbm5lckJlbmNobWFyay5wcm90b3R5cGUucnVuSXRlcmF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKEZsaWdodFBsYW5uZXJCZW5jaG1hcmsucHJvdG90eXBlLmNo
ZWNrUmVzdWx0cyk6IERlbGV0ZWQuCisgICAgICAgIChydW5CZW5jaG1hcmspOiBEZWxldGVkLgor
ICAgICAgICAqIFJleEJlbmNoL09jdGFuZTIvYmFzZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBS
ZXhCZW5jaC9PY3RhbmUyL3JlZ2V4cC5qczoKKyAgICAgICAgKiBSZXhCZW5jaC9iYXNpY19iZW5j
aG1hcmsuanM6CisgICAgICAgICogUmV4QmVuY2gvYmVuY2htYXJrLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHRoaXMucGVyZm9ybWFuY2UucGVyZm9ybWFuY2Uubm93LmN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKGVsc2UudGhpcy5wcmVjaXNlVGltZS5jdXJyZW50VGltZSk6CisgICAgICAgIChlbHNlLmN1
cnJlbnRUaW1lKToKKyAgICAgICAgKEJlbmNobWFyayk6CisgICAgICAgIChCZW5jaG1hcmsucHJv
dG90eXBlLnJ1bkl0ZXJhdGlvbnMpOgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5zZXR1
cCk6CisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJ1bk9uY2UpOgorICAgICAgICAoQmVu
Y2htYXJrLnByb3RvdHlwZS52YWxpZGF0ZSk6CisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBl
LnRlYXJEb3duKToKKyAgICAgICAgKiBSZXhCZW5jaC9jbGkuanM6CisgICAgICAgICogUmV4QmVu
Y2gvZmxpZ2h0cGxhbl9iZW5jaG1hcmsuanM6CisgICAgICAgICogUmV4QmVuY2gvZmxpZ2h0cGxh
bl91bmljb2RlX2JlbmNobWFyay5qczoKKyAgICAgICAgKiBSZXhCZW5jaC9vY3RhbmUyX2JlbmNo
bWFyay5qczoKKyAgICAgICAgKiBSZXhCZW5jaC9zdGF0cy5qczoKKyAgICAgICAgKFN0YXRzLnBy
b3RvdHlwZS50b1N0cmluZy5yZXR1cm4uc3Bhbi4wLnNwYW4uc3Bhbik6CisgICAgICAgICogUmV4
QmVuY2gvc3Vuc3BpZGVyX2JlbmNobWFyay5qczoKKwogMjAxNy0wOC0wNyAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbW9yZSBhY2N1cmF0ZSBSdXNz
aWFuIGtleXdvcmRzIGZvciBSZXhCZW5jaC9GbGlnaHRQbGFubmVyIFVuaWNvZGUgbW9kZQpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9iYXNpY19iZW5jaG1hcmsuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9iYXNpY19iZW5jaG1hcmsuanMJKHJldmlz
aW9uIDIyMDQyMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvYmFzaWNfYmVuY2htYXJr
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAidXNlIHN0cmljdCI7CiAKIGNv
bnN0IEJhc2ljQmVuY2htYXJrQ29kZSA9IFN0cmluZy5yYXdgCi08c2NyaXB0IHNyYz0iY3VycmVu
dF90aW1lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJiZW5jaG1hcmsuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IkJhc2ljL2FzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQmFz
aWMvYmFzaWMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkJhc2ljL2Nhc2VsZXNzX21hcC5q
cyI+PC9zY3JpcHQ+CkBAIC0zNiwxNSArMzYsMTEgQEAgY29uc3QgQmFzaWNCZW5jaG1hcmtDb2Rl
ID0gU3RyaW5nLnJhd2AKIDxzY3JpcHQgc3JjPSJCYXNpYy9zdGF0ZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iQmFzaWMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CisidXNl
IHN0cmljdCI7CiB2YXIgcmVzdWx0cyA9IFtdOwogdmFyIGJlbmNobWFyayA9IG5ldyBCYXNpY0Jl
bmNobWFyaygpOwogdmFyIG51bUl0ZXJhdGlvbnMgPSAyMDA7Ci1mb3IgKHZhciBpID0gMDsgaSA8
IG51bUl0ZXJhdGlvbnM7ICsraSkgewotICAgIHZhciBiZWZvcmUgPSBjdXJyZW50VGltZSgpOwot
ICAgIGJlbmNobWFyay5ydW5JdGVyYXRpb24oKTsKLSAgICB2YXIgYWZ0ZXIgPSBjdXJyZW50VGlt
ZSgpOwotICAgIHJlc3VsdHMucHVzaChhZnRlciAtIGJlZm9yZSk7Ci19CitiZW5jaG1hcmsucnVu
SXRlcmF0aW9ucyhudW1JdGVyYXRpb25zLCByZXN1bHRzKTsKIHJlcG9ydFJlc3VsdChyZXN1bHRz
KTsKIDwvc2NyaXB0PmA7CiAKQEAgLTUyLDcgKzQ4LDcgQEAgcmVwb3J0UmVzdWx0KHJlc3VsdHMp
OwogbGV0IHJ1bkJhc2ljQmVuY2htYXJrID0gbnVsbDsKIGlmICghaXNJbkJyb3dzZXIpIHsKICAg
ICBsZXQgc291cmNlcyA9IFsKLSAgICAgICAgImN1cnJlbnRfdGltZS5qcyIKKyAgICAgICAgImJl
bmNobWFyay5qcyIKICAgICAgICAgLCAiQmFzaWMvYXN0LmpzIgogICAgICAgICAsICJCYXNpYy9i
YXNpYy5qcyIKICAgICAgICAgLCAiQmFzaWMvY2FzZWxlc3NfbWFwLmpzIgpAQCAtNjQsNyArNjAs
NyBAQCBpZiAoIWlzSW5Ccm93c2VyKSB7CiAgICAgICAgICwgIkJhc2ljL2JlbmNobWFyay5qcyIK
ICAgICBdOwogCi0gICAgcnVuQmFzaWNCZW5jaG1hcmsgPSBtYWtlQmVuY2htYXJrUnVubmVyKHNv
dXJjZXMsICJCYXNpY0JlbmNobWFyayIpOworICAgIHJ1bkJhc2ljQmVuY2htYXJrID0gbWFrZUJl
bmNobWFya1J1bm5lcihzb3VyY2VzLCAiQmFzaWNCZW5jaG1hcmsiLCAyMDApOwogfQogCiBjb25z
dCBCYXNpY0JlbmNobWFya1J1bm5lciA9IHsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVu
Y2gvYmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gv
YmVuY2htYXJrLmpzCShub25leGlzdGVudCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gv
YmVuY2htYXJrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworbGV0IGN1
cnJlbnRUaW1lOworaWYgKHRoaXMucGVyZm9ybWFuY2UgJiYgcGVyZm9ybWFuY2Uubm93KQorICAg
IGN1cnJlbnRUaW1lID0gZnVuY3Rpb24oKSB7IHJldHVybiBwZXJmb3JtYW5jZS5ub3coKSB9Owor
ZWxzZSBpZiAodGhpcy5wcmVjaXNlVGltZSkKKyAgICBjdXJyZW50VGltZSA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gcHJlY2lzZVRpbWUoKSAqIDEwMDA7IH07CitlbHNlCisgICAgY3VycmVudFRpbWUg
PSBmdW5jdGlvbigpIHsgcmV0dXJuICtuZXcgRGF0ZSgpOyB9OworCitjbGFzcyBCZW5jaG1hcmsg
eworICAgIGNvbnN0cnVjdG9yKHZlcmJvc2UgPSAwKQorICAgIHsKKyAgICAgICAgdGhpcy5fdmVy
Ym9zZSA9IHZlcmJvc2U7CisgICAgfQorCisgICAgcnVuSXRlcmF0aW9ucyhudW1JdGVyYXRpb25z
LCByZXN1bHRzKQorICAgIHsKKyAgICAgICAgdGhpcy5zZXR1cCgpOworCisgICAgICAgIGZvciAo
bGV0IGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IG51bUl0ZXJhdGlvbnM7ICsraXRlcmF0aW9u
KSB7CisgICAgICAgICAgICBsZXQgYmVmb3JlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAg
IHRoaXMucnVuT25jZSgpOworICAgICAgICAgICAgbGV0IGFmdGVyID0gY3VycmVudFRpbWUoKTsK
KyAgICAgICAgICAgIHJlc3VsdHMucHVzaChhZnRlciAtIGJlZm9yZSk7CisgICAgICAgIH0KKwor
ICAgICAgICB0aGlzLnZhbGlkYXRlKCk7CisgICAgICAgIHRoaXMudGVhckRvd24oKTsKKyAgICB9
CisgICAgCisgICAgc2V0dXAoKQorICAgIHsKKyAgICB9CisKKyAgICBydW5PbmNlKCkKKyAgICB7
CisgICAgfQorCisgICAgdmFsaWRhdGUoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZWFyRG93bigp
CisgICAgeworICAgIH0KK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvY2xpLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvY2xpLmpzCShyZXZpc2lv
biAyMjA0MjApCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL2NsaS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAorInVzZSBzdHJp
Y3QiOworCiBjb25zdCBpc0luQnJvd3NlciA9IGZhbHNlOwogCiBmdW5jdGlvbiBtYWtlQmVuY2ht
YXJrUnVubmVyKHNvdXJjZXMsIGJlbmNobWFya0NvbnN0cnVjdG9yLCBudW1JdGVyYXRpb25zID0g
MjAwKSB7CkBAIC0zNCwxMiArMzYsOCBAQCBmdW5jdGlvbiBtYWtlQmVuY2htYXJrUnVubmVyKHNv
dXJjZXMsIGJlCiAgICAgICAgIHRoaXMucmVzdWx0cyA9IFtdOwogICAgICAgICB2YXIgYmVuY2ht
YXJrID0gbmV3ICR7YmVuY2htYXJrQ29uc3RydWN0b3J9KCk7CiAgICAgICAgIHZhciBudW1JdGVy
YXRpb25zID0gJHtudW1JdGVyYXRpb25zfTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
dW1JdGVyYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBiZWZvcmUgPSBjdXJyZW50VGlt
ZSgpOwotICAgICAgICAgICAgYmVuY2htYXJrLnJ1bkl0ZXJhdGlvbigpOwotICAgICAgICAgICAg
dmFyIGFmdGVyID0gY3VycmVudFRpbWUoKTsKLSAgICAgICAgICAgIHJlc3VsdHMucHVzaChhZnRl
ciAtIGJlZm9yZSk7Ci0gICAgICAgIH0KKyAgICAKKyAgICAgICAgYmVuY2htYXJrLnJ1bkl0ZXJh
dGlvbnMobnVtSXRlcmF0aW9ucywgdGhpcy5yZXN1bHRzKTsKICAgICBgOwogICAgIHJldHVybiBm
dW5jdGlvbiBkb1J1bigpIHsKICAgICAgICAgbGV0IGdsb2JhbE9iamVjdE9mU2NyaXB0ID0gcnVu
U3RyaW5nKHNvdXJjZSk7CkBAIC01MSw4ICs0OSwxMSBAQCBmdW5jdGlvbiBtYWtlQmVuY2htYXJr
UnVubmVyKHNvdXJjZXMsIGJlCiBsb2FkKCJkcml2ZXIuanMiKTsKIGxvYWQoInJlc3VsdHMuanMi
KTsKIGxvYWQoInN0YXRzLmpzIik7Citsb2FkKCJzdW5zcGlkZXJfYmVuY2htYXJrLmpzIik7Cits
b2FkKCJvY3RhbmUyX2JlbmNobWFyay5qcyIpOwogbG9hZCgiYmFzaWNfYmVuY2htYXJrLmpzIik7
CiBsb2FkKCJmbGlnaHRwbGFuX2JlbmNobWFyay5qcyIpOworbG9hZCgiZmxpZ2h0cGxhbl91bmlj
b2RlX2JlbmNobWFyay5qcyIpOwogbG9hZCgiZ2x1ZS5qcyIpOwogCiBkcml2ZXIuc3RhcnQoNik7
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL2ZsaWdodHBsYW5fYmVuY2htYXJrLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvZmxpZ2h0cGxhbl9iZW5j
aG1hcmsuanMJKHJldmlzaW9uIDIyMDQyMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gv
ZmxpZ2h0cGxhbl9iZW5jaG1hcmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTI1LDIxICsyNSwxOCBA
QAogInVzZSBzdHJpY3QiOwogCiBjb25zdCBGbGlnaHRQbGFubmVyQmVuY2htYXJrQ29kZSA9IFN0
cmluZy5yYXdgCis8c2NyaXB0IHNyYz0iYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJGbGlnaHRQbGFubmVyL2FpcndheXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkZs
aWdodFBsYW5uZXIvd2F5cG9pbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGbGlnaHRQ
bGFubmVyL2ZsaWdodF9wbGFubmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGbGlnaHRQ
bGFubmVyL2V4cGVjdGF0aW9ucy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iRmxpZ2h0UGxh
bm5lci9iZW5jaG1hcmsuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKIHZh
ciByZXN1bHRzID0gW107CiB2YXIgYmVuY2htYXJrID0gbmV3IEZsaWdodFBsYW5uZXJCZW5jaG1h
cmsoKTsKIHZhciBudW1JdGVyYXRpb25zID0gMjAwOwotZm9yICh2YXIgaSA9IDA7IGkgPCBudW1J
dGVyYXRpb25zOyArK2kpIHsKLSAgICB2YXIgYmVmb3JlID0gY3VycmVudFRpbWUoKTsKLSAgICBi
ZW5jaG1hcmsucnVuSXRlcmF0aW9uKCk7Ci0gICAgdmFyIGFmdGVyID0gY3VycmVudFRpbWUoKTsK
LSAgICByZXN1bHRzLnB1c2goYWZ0ZXIgLSBiZWZvcmUpOwotfQorYmVuY2htYXJrLnJ1bkl0ZXJh
dGlvbnMobnVtSXRlcmF0aW9ucywgcmVzdWx0cyk7CiByZXBvcnRSZXN1bHQocmVzdWx0cyk7CiA8
L3NjcmlwdD5gOwogCkBAIC00NywxNCArNDQsMTUgQEAgcmVwb3J0UmVzdWx0KHJlc3VsdHMpOwog
bGV0IHJ1bkZsaWdodFBsYW5uZXJCZW5jaG1hcmsgPSBudWxsOwogaWYgKCFpc0luQnJvd3Nlcikg
ewogICAgIGxldCBzb3VyY2VzID0gWwotICAgICAgICAiRmxpZ2h0UGxhbm5lci9haXJ3YXlzLmpz
IgorICAgICAgICAiYmVuY2htYXJrLmpzIgorICAgICAgICAsICJGbGlnaHRQbGFubmVyL2Fpcndh
eXMuanMiCiAgICAgICAgICwgIkZsaWdodFBsYW5uZXIvd2F5cG9pbnRzLmpzIgogICAgICAgICAs
ICJGbGlnaHRQbGFubmVyL2ZsaWdodF9wbGFubmVyLmpzIgogICAgICAgICAsICJGbGlnaHRQbGFu
bmVyL2V4cGVjdGF0aW9ucy5qcyIKICAgICAgICAgLCAiRmxpZ2h0UGxhbm5lci9iZW5jaG1hcmsu
anMiCiAgICAgXTsKIAotICAgIHJ1bkZsaWdodFBsYW5uZXJCZW5jaG1hcmsgPSBtYWtlQmVuY2ht
YXJrUnVubmVyKHNvdXJjZXMsICJGbGlnaHRQbGFubmVyQmVuY2htYXJrIik7CisgICAgcnVuRmxp
Z2h0UGxhbm5lckJlbmNobWFyayA9IG1ha2VCZW5jaG1hcmtSdW5uZXIoc291cmNlcywgIkZsaWdo
dFBsYW5uZXJCZW5jaG1hcmsiLCAyMDApOwogfQogCiBjb25zdCBGbGlnaHRQbGFubmVyQmVuY2ht
YXJrUnVubmVyID0gewpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9mbGlnaHRwbGFu
X3VuaWNvZGVfYmVuY2htYXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4
QmVuY2gvZmxpZ2h0cGxhbl91bmljb2RlX2JlbmNobWFyay5qcwkocmV2aXNpb24gMjIwNDIwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9mbGlnaHRwbGFuX3VuaWNvZGVfYmVuY2htYXJr
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAidXNlIHN0cmljdCI7CiAKIGNv
bnN0IEZsaWdodFBsYW5uZXJVbmljb2RlQmVuY2htYXJrQ29kZSA9IFN0cmluZy5yYXdgCis8c2Ny
aXB0IHNyYz0iYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGbGlnaHRQbGFu
bmVyL2FpcndheXMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkZsaWdodFBsYW5uZXIvd2F5
cG9pbnRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGbGlnaHRQbGFubmVyL3VzZV91bmlj
b2RlLmpzIj48L3NjcmlwdD4KQEAgLTMyLDE1ICszMywxMSBAQCBjb25zdCBGbGlnaHRQbGFubmVy
VW5pY29kZUJlbmNobWFya0NvZGUgCiA8c2NyaXB0IHNyYz0iRmxpZ2h0UGxhbm5lci9leHBlY3Rh
dGlvbnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkZsaWdodFBsYW5uZXIvYmVuY2htYXJr
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CisidXNlIHN0cmljdCI7CiB2YXIgcmVzdWx0cyA9IFtd
OwogdmFyIGJlbmNobWFyayA9IG5ldyBGbGlnaHRQbGFubmVyQmVuY2htYXJrKCk7CiB2YXIgbnVt
SXRlcmF0aW9ucyA9IDIwMDsKLWZvciAodmFyIGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytp
KSB7Ci0gICAgdmFyIGJlZm9yZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgYmVuY2htYXJrLnJ1bkl0
ZXJhdGlvbigpOwotICAgIHZhciBhZnRlciA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgcmVzdWx0cy5w
dXNoKGFmdGVyIC0gYmVmb3JlKTsKLX0KK2JlbmNobWFyay5ydW5JdGVyYXRpb25zKG51bUl0ZXJh
dGlvbnMsIHJlc3VsdHMpOwogcmVwb3J0UmVzdWx0KHJlc3VsdHMpOwogPC9zY3JpcHQ+YDsKIApA
QCAtNDgsNyArNDUsOCBAQCByZXBvcnRSZXN1bHQocmVzdWx0cyk7CiBsZXQgcnVuRmxpZ2h0UGxh
bm5lclVuaWNvZGVCZW5jaG1hcmsgPSBudWxsOwogaWYgKCFpc0luQnJvd3NlcikgewogICAgIGxl
dCBzb3VyY2VzID0gWwotICAgICAgICAiRmxpZ2h0UGxhbm5lci9haXJ3YXlzLmpzIgorICAgICAg
ICAiYmVuY2htYXJrLmpzIgorICAgICAgICAsICJGbGlnaHRQbGFubmVyL2FpcndheXMuanMiCiAg
ICAgICAgICwgIkZsaWdodFBsYW5uZXIvd2F5cG9pbnRzLmpzIgogICAgICAgICAsICJGbGlnaHRQ
bGFubmVyL3VzZV91bmljb2RlLmpzIgogICAgICAgICAsICJGbGlnaHRQbGFubmVyL2ZsaWdodF9w
bGFubmVyLmpzIgpAQCAtNTYsMTEgKzU0LDExIEBAIGlmICghaXNJbkJyb3dzZXIpIHsKICAgICAg
ICAgLCAiRmxpZ2h0UGxhbm5lci9iZW5jaG1hcmsuanMiCiAgICAgXTsKIAotICAgIHJ1bkZsaWdo
dFBsYW5uZXJVbmljb2RlQmVuY2htYXJrID0gbWFrZUJlbmNobWFya1J1bm5lcihzb3VyY2VzLCAi
RmxpZ2h0UGxhbm5lclVuaWNvZGVCZW5jaG1hcmsiKTsKKyAgICBydW5GbGlnaHRQbGFubmVyVW5p
Y29kZUJlbmNobWFyayA9IG1ha2VCZW5jaG1hcmtSdW5uZXIoc291cmNlcywgIkZsaWdodFBsYW5u
ZXJCZW5jaG1hcmsiLCAyMDApOwogfQogCiBjb25zdCBGbGlnaHRQbGFubmVyVW5pY29kZUJlbmNo
bWFya1J1bm5lciA9IHsKLSAgICBuYW1lOiAiRmxpZ2h0IFBsYW5uZXIiLAorICAgIG5hbWU6ICJG
bGlnaHQgUGxhbm5lciAtIFVuaWNvZGUiLAogICAgIGNvZGU6IEZsaWdodFBsYW5uZXJVbmljb2Rl
QmVuY2htYXJrQ29kZSwKICAgICBydW46IHJ1bkZsaWdodFBsYW5uZXJVbmljb2RlQmVuY2htYXJr
LAogICAgIGNlbGxzOiB7fQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9vY3RhbmUy
X2JlbmNobWFyay5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL29j
dGFuZTJfYmVuY2htYXJrLmpzCShyZXZpc2lvbiAyMjA0MjApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L1JleEJlbmNoL29jdGFuZTJfYmVuY2htYXJrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwyMSAr
MjUsMTYgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY29uc3QgT2N0YW5lMlJlZ0V4cEJlbmNobWFya0Nv
ZGUgPSBTdHJpbmcucmF3YAotPHNjcmlwdCBzcmM9ImN1cnJlbnRfdGltZS5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iT2N0YW5lMi9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJi
ZW5jaG1hcmsuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ik9jdGFuZTIvcmVnZXhwLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJPY3RhbmUyL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgorInVzZSBzY3JpcHQiOyAgICAgIAogdmFyIHJlc3VsdHMgPSBbXTsKLXZhciBudW1J
dGVyYXRpb25zID0gNDA7Ci1CZW5jaG1hcmtTdWl0ZS5SZXNldFJORygpOwotUmVnRXhwU2V0dXAo
KTsKLWZvciAodmFyIGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgdmFyIGJl
Zm9yZSA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgUmVnRXhwUnVuKCk7Ci0gICAgdmFyIGFmdGVyID0g
Y3VycmVudFRpbWUoKTsKLSAgICByZXN1bHRzLnB1c2goYWZ0ZXIgLSBiZWZvcmUpOwotfQotUmVn
RXhwVGVhckRvd24oKTsKK3ZhciBudW1JdGVyYXRpb25zID0gMTAwOworLy8gQmVuY2htYXJrU3Vp
dGUuUmVzZXRSTkcoKTsKK3ZhciBiZW5jaG1hcmsgPSBuZXcgT2N0YW5lMlJlZ0V4cEJlbmNobWFy
aygpOworYmVuY2htYXJrLnJ1bkl0ZXJhdGlvbnMobnVtSXRlcmF0aW9ucywgcmVzdWx0cyk7CiBy
ZXBvcnRSZXN1bHQocmVzdWx0cyk7CiA8L3NjcmlwdD5gOwogCkBAIC00NywxNiArNDIsMTYgQEAg
cmVwb3J0UmVzdWx0KHJlc3VsdHMpOwogbGV0IHJ1bk9jdGFuZTJSZWdFeHBCZW5jaG1hcmsgPSBu
dWxsOwogaWYgKCFpc0luQnJvd3NlcikgewogICAgIGxldCBzb3VyY2VzID0gWwotICAgICAgICAi
Y3VycmVudF90aW1lLmpzIgotICAgICAgICAsICJPY3RhbmUyL2Jhc2UuanMiCisgICAgICAgICJi
ZW5jaG1hcmsuanMiCiAgICAgICAgICwgIk9jdGFuZTIvcmVnZXhwLmpzIgorICAgICAgICAsICJP
Y3RhbmUyL2JlbmNobWFyay5qcyIKICAgICBdOwogCi0gICAgcnVuT2N0YW5lUmVnRXhwQmVuY2ht
YXJrID0gbWFrZUJlbmNobWFya1J1bm5lcihzb3VyY2VzLCAiT2N0YW5lMlJlZ0V4cEJlbmNobWFy
ayIpOworICAgIHJ1bk9jdGFuZTJSZWdFeHBCZW5jaG1hcmsgPSBtYWtlQmVuY2htYXJrUnVubmVy
KHNvdXJjZXMsICJPY3RhbmUyUmVnRXhwQmVuY2htYXJrIiwgMTAwKTsKIH0KIAogY29uc3QgT2N0
YW5lMlJlZ0V4cEJlbmNobWFya1J1bm5lciA9IHsKLSAgICBuYW1lOiAiRmxpZ2h0IFBsYW5uZXIi
LAorICAgIG5hbWU6ICJPY3RhbmUyIFJlZ0V4cCIsCiAgICAgY29kZTogT2N0YW5lMlJlZ0V4cEJl
bmNobWFya0NvZGUsCiAgICAgcnVuOiBydW5PY3RhbmUyUmVnRXhwQmVuY2htYXJrLAogICAgIGNl
bGxzOiB7fQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9zdGF0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL3N0YXRzLmpzCShyZXZpc2lvbiAyMjA0
MjApCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL3N0YXRzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw4ICs5Miw4IEBAIGNsYXNzIFN0YXRzIHsKICAgICAgICAgCiAgICAgICAgIGlmICgh
cmVzdWx0Lm4pIHsKICAgICAgICAgICAgIGlmIChpc0luQnJvd3NlcikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gYDxzcGFuIGNsYXNzPSJ2YWx1ZSI+XCYjODcwOTs8L3NwYW4+PHNwYW4gY2xhc3M9
InVuaXRzIj5tczwvc3Bhbj5gOwotICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuX3ByZWZpeH1c
JiN4MmIxNDttc2A7CisgICAgICAgICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzcz0idmFsdWUi
PjA8L3NwYW4+PHNwYW4gY2xhc3M9InVuaXRzIj5tczwvc3Bhbj5gOworICAgICAgICAgICAgcmV0
dXJuIGAke3RoaXMuX3ByZWZpeH0wbXNgOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAocmVzdWx0Lm1lYW4gIT0gcmVzdWx0Lm1lYW4pCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1Jl
eEJlbmNoL3N1bnNwaWRlcl9iZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9SZXhCZW5jaC9zdW5zcGlkZXJfYmVuY2htYXJrLmpzCShyZXZpc2lvbiAyMjA0MjApCisr
KyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL3N1bnNwaWRlcl9iZW5jaG1hcmsuanMJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDE4ICsyNSwxNSBAQAogInVzZSBzdHJpY3QiOwogCiBjb25zdCBSZWdl
eEROQUJlbmNobWFya0NvZGUgPSBTdHJpbmcucmF3YAotPHNjcmlwdCBzcmM9ImN1cnJlbnRfdGlt
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJTdW5TcGlkZXIvcmVnZXgtZG5hLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJTdW5TcGlkZXIvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CiB2YXIgcmVzdWx0cyA9IFtdOwotdmFyIG51bUl0ZXJhdGlvbnMgPSAyMDsKLWZvciAodmFy
IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgdmFyIGJlZm9yZSA9IGN1cnJl
bnRUaW1lKCk7Ci0gICAgcnVuT25jZSgpOwotICAgIHZhciBhZnRlciA9IGN1cnJlbnRUaW1lKCk7
Ci0gICAgY2hlY2tSZXN1bHQoKTsKLSAgICByZXN1bHRzLnB1c2goYWZ0ZXIgLSBiZWZvcmUpOwot
fQordmFyIGJlbmNobWFyayA9IG5ldyBSZWdleEROQUJlbmNobWFyaygpOwordmFyIG51bUl0ZXJh
dGlvbnMgPSAxMDA7CitiZW5jaG1hcmsucnVuSXRlcmF0aW9ucyhudW1JdGVyYXRpb25zLCByZXN1
bHRzKTsKIHJlcG9ydFJlc3VsdChyZXN1bHRzKTsKIDwvc2NyaXB0PmA7CiAKQEAgLTQ0LDExICs0
MSwxMiBAQCByZXBvcnRSZXN1bHQocmVzdWx0cyk7CiBsZXQgcnVuUmVnZXhETkFCZW5jaG1hcmsg
PSBudWxsOwogaWYgKCFpc0luQnJvd3NlcikgewogICAgIGxldCBzb3VyY2VzID0gWwotICAgICAg
ICAiY3VycmVudF90aW1lLmpzIgorICAgICAgICAiYmVuY2htYXJrLmpzIgogICAgICAgICAsICJT
dW5TcGlkZXIvcmVnZXgtZG5hLmpzIgorICAgICAgICAsICJTdW5TcGlkZXIvYmVuY2htYXJrLmpz
IgogICAgIF07CiAKLSAgICBydW5SZWdleEROQUJlbmNobWFyayA9IG1ha2VCZW5jaG1hcmtSdW5u
ZXIoc291cmNlcywgIlJlZ2V4RE5BQmVuY2htYXJrIik7CisgICAgcnVuUmVnZXhETkFCZW5jaG1h
cmsgPSBtYWtlQmVuY2htYXJrUnVubmVyKHNvdXJjZXMsICJSZWdleEROQUJlbmNobWFyayIsIDEw
MCk7CiB9CiAKIGNvbnN0IFJlZ2V4RE5BQmVuY2htYXJrUnVubmVyID0gewpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9iZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVy
Zm9ybWFuY2VUZXN0cy9SZXhCZW5jaC9CYXNpYy9iZW5jaG1hcmsuanMJKHJldmlzaW9uIDIyMDQy
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvQmFzaWMvYmVuY2htYXJrLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCwxMyArMjQsMTMgQEAKICAqLwogInVzZSBzdHJpY3QiOwogCi1jbGFz
cyBCYXNpY0JlbmNobWFyayB7CitjbGFzcyBCYXNpY0JlbmNobWFyayBleHRlbmRzIEJlbmNobWFy
ayB7CiAgICAgY29uc3RydWN0b3IodmVyYm9zZSA9IDApCiAgICAgewotICAgICAgICB0aGlzLl92
ZXJib3NlID0gdmVyYm9zZTsKKyAgICAgICAgc3VwZXIodmVyYm9zZSk7CiAgICAgfQogICAgIAot
ICAgIHJ1bkl0ZXJhdGlvbigpCisgICAgcnVuT25jZSgpCiAgICAgewogICAgICAgICBwcmVwYXJl
KCIxMCBwcmludCBcImhlbGxvLCB3b3JsZCFcIlxuMjAgZW5kIik7CiAgICAgICAgIHByZXBhcmUo
IjEwIGxldCB4ID0gMFxuMjAgbGV0IHggPSB4ICsgMVxuMzAgcHJpbnQgeFxuNDAgaWYgeCA8IDEw
IHRoZW4gMjBcbjUwIGVuZCIpOwpAQCAtNDAsMTkgKzQwLDMgQEAgY2xhc3MgQmFzaWNCZW5jaG1h
cmsgewogICAgICAgICBwcmVwYXJlKCIxMCBkaW0gYSgyMDAwKVxuMjAgZm9yIGkgPSAyIHRvIDIw
MDBcbjMwIGxldCBhKGkpID0gMVxuNDAgbmV4dCBpXG41MCBmb3IgaSA9IDIgdG8gc3FyKDIwMDAp
XG42MCBpZiBhKGkpID0gMCB0aGVuIDEwMFxuNzAgZm9yIGogPSBpIF4gMiB0byAyMDAwIHN0ZXAg
aVxuODAgbGV0IGEoaikgPSAwXG45MCBuZXh0IGpcbjEwMCBuZXh0IGlcbjExMCBmb3IgaSA9IDIg
dG8gMjAwMFxuMTIwIGlmIGEoaSkgPSAwIHRoZW4gMTQwXG4xMzAgcHJpbnQgaVxuMTQwIG5leHQg
aVxuMTUwIGVuZFxuIik7CiAgICAgfQogfQotICAgIAotZnVuY3Rpb24gcnVuQmVuY2htYXJrKCkK
LXsKLSAgICBjb25zdCB2ZXJib3NlID0gMDsKLSAgICBjb25zdCBudW1JdGVyYXRpb25zID0gMTUw
OwotICAgIAotICAgIGxldCBiZWZvcmUgPSBjdXJyZW50VGltZSgpOwotICAgIAotICAgIGxldCBi
ZW5jaG1hcmsgPSBuZXcgQmVuY2htYXJrKHZlcmJvc2UpOwotICAgIAotICAgIGZvciAobGV0IGl0
ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IG51bUl0ZXJhdGlvbnM7ICsraXRlcmF0aW9uKQotICAg
ICAgICBiZW5jaG1hcmsucnVuSXRlcmF0aW9uKCk7Ci0gICAgCi0gICAgbGV0IGFmdGVyID0gY3Vy
cmVudFRpbWUoKTsKLSAgICByZXR1cm4gYWZ0ZXIgLSBiZWZvcmU7Ci19CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL1JleEJlbmNoL0ZsaWdodFBsYW5uZXIvYmVuY2htYXJrLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvRmxpZ2h0UGxhbm5lci9iZW5jaG1hcmsuanMJ
KHJldmlzaW9uIDIyMDQyMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvRmxpZ2h0UGxh
bm5lci9iZW5jaG1hcmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDM0ICsyNCwyNSBAQAogICov
CiAidXNlIHN0cmljdCI7CiAKLWxldCBjdXJyZW50VGltZTsKLWlmICh0aGlzLnBlcmZvcm1hbmNl
ICYmIHBlcmZvcm1hbmNlLm5vdykKLSAgICBjdXJyZW50VGltZSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gcGVyZm9ybWFuY2Uubm93KCkgfTsKLWVsc2UgaWYgKHRoaXMucHJlY2lzZVRpbWUpCi0gICAg
Y3VycmVudFRpbWUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHByZWNpc2VUaW1lKCkgKiAxMDAwOyB9
OwotZWxzZQotICAgIGN1cnJlbnRUaW1lID0gZnVuY3Rpb24oKSB7IHJldHVybiArbmV3IERhdGUo
KTsgfTsKLQotY2xhc3MgRmxpZ2h0UGxhbm5lckJlbmNobWFyayB7CitjbGFzcyBGbGlnaHRQbGFu
bmVyQmVuY2htYXJrIGV4dGVuZHMgQmVuY2htYXJrIHsKICAgICBjb25zdHJ1Y3Rvcih2ZXJib3Nl
ID0gMCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3ZlcmJvc2UgPSB2ZXJib3NlOworICAgICAgICBz
dXBlcih2ZXJib3NlKTsKICAgICB9CiAKLSAgICBydW5JdGVyYXRpb24oKQorICAgIHJ1bk9uY2Uo
KQogICAgIHsKLSAgICAgICAgZm9yIChsZXQgaXRlcmF0aW9uID0gMDsgaXRlcmF0aW9uIDwgMTA7
ICsraXRlcmF0aW9uKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAg
ICAgICAgICAgICBzZXR1cFVzZXJXYXlwb2ludHMoKTsKLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBmb3IgKGxldCBmbGlnaHRQbGFuIG9mIGV4cGVjdGVkRmxpZ2h0UGxhbnMpIHsKICAgICAg
ICAgICAgICAgICBmbGlnaHRQbGFuLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgZmxpZ2h0UGxh
bi5yZXNvbHZlUm91dGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICB0aGlz
LmNoZWNrUmVzdWx0cygpOwogICAgIH0KIAotICAgIGNoZWNrUmVzdWx0cygpCisgICAgdmFsaWRh
dGUoKQogICAgIHsKICAgICAgICAgZm9yIChsZXQgZmxpZ2h0UGxhbiBvZiBleHBlY3RlZEZsaWdo
dFBsYW5zKSB7CiAgICAgICAgICAgICBmbGlnaHRQbGFuLmNhbGN1bGF0ZSgpOwpAQCAtNTksMjYg
KzUwLDMgQEAgY2xhc3MgRmxpZ2h0UGxhbm5lckJlbmNobWFyayB7CiAgICAgICAgIH0KICAgICB9
CiB9Ci0KLWZ1bmN0aW9uIHJ1bkJlbmNobWFyaygpCi17Ci0gICAgY29uc3QgdmVyYm9zZSA9IDA7
Ci0gICAgY29uc3QgbnVtSXRlcmF0aW9ucyA9IDEwOwotCi0gICAgbGV0IGJlbmNobWFyayA9IG5l
dyBGbGlnaHRQbGFubmVyQmVuY2htYXJrKHZlcmJvc2UpOwotCi0gICAgbGV0IGJlZm9yZSA9IGN1
cnJlbnRUaW1lKCk7Ci0KLSAgICBmb3IgKGxldCBpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCBu
dW1JdGVyYXRpb25zOyArK2l0ZXJhdGlvbikKLSAgICAgICAgYmVuY2htYXJrLnJ1bkl0ZXJhdGlv
bigpOwotICAgIAotICAgIGxldCBhZnRlciA9IGN1cnJlbnRUaW1lKCk7Ci0KLSAgICBmb3IgKGxl
dCBpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCBudW1JdGVyYXRpb25zOyArK2l0ZXJhdGlvbikK
LSAgICAgICAgYmVuY2htYXJrLmNoZWNrUmVzdWx0cygpOwotICAgIAotICAgIHJldHVybiBhZnRl
ciAtIGJlZm9yZTsKLX0KLQotCi0vLyAgcHJpbnQoIkJlbmNobWFyayByYW4gaW4gIiArIHJ1bkJl
bmNobWFyaygpKTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvT2N0YW5lMi9iYXNl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvT2N0YW5lMi9iYXNl
LmpzCShyZXZpc2lvbiAyMjA0MjApCisrKyBQZXJmb3JtYW5jZVRlc3RzL1JleEJlbmNoL09jdGFu
ZTIvYmFzZS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDM5OSArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAxMyB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAg
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotLy8gICAgICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCi0vLyAgICAg
ICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyAgICAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLS8vICAgICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0KLS8vIFBlcmZvcm1hbmNlLm5vdyBpcyB1c2VkIGluIGxhdGVuY3kgYmVu
Y2htYXJrcywgdGhlIGZhbGxiYWNrIGlzIERhdGUubm93LgotdmFyIHBlcmZvcm1hbmNlID0gcGVy
Zm9ybWFuY2UgfHwge307Ci1wZXJmb3JtYW5jZS5ub3cgPSAoZnVuY3Rpb24oKSB7Ci0gIHJldHVy
biBwZXJmb3JtYW5jZS5ub3cgICAgICAgfHwKLSAgICAgICAgIHBlcmZvcm1hbmNlLm1vek5vdyAg
ICB8fAotICAgICAgICAgcGVyZm9ybWFuY2UubXNOb3cgICAgIHx8Ci0gICAgICAgICBwZXJmb3Jt
YW5jZS5vTm93ICAgICAgfHwKLSAgICAgICAgIHBlcmZvcm1hbmNlLndlYmtpdE5vdyB8fAotICAg
ICAgICAgRGF0ZS5ub3c7Ci19KSgpOwotCi0vLyBTaW1wbGUgZnJhbWV3b3JrIGZvciBydW5uaW5n
IHRoZSBiZW5jaG1hcmsgc3VpdGVzIGFuZAotLy8gY29tcHV0aW5nIGEgc2NvcmUgYmFzZWQgb24g
dGhlIHRpbWluZyBtZWFzdXJlbWVudHMuCi0KLQotLy8gQSBiZW5jaG1hcmsgaGFzIGEgbmFtZSAo
c3RyaW5nKSBhbmQgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgcnVuIHRvCi0vLyBkbyB0aGUgcGVy
Zm9ybWFuY2UgbWVhc3VyZW1lbnQuIFRoZSBvcHRpb25hbCBzZXR1cCBhbmQgdGVhckRvd24KLS8v
IGFyZ3VtZW50cyBhcmUgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBpbnZva2VkIGJlZm9yZSBhbmQg
YWZ0ZXIKLS8vIHJ1bm5pbmcgdGhlIGJlbmNobWFyaywgYnV0IHRoZSBydW5uaW5nIHRpbWUgb2Yg
dGhlc2UgZnVuY3Rpb25zIHdpbGwKLS8vIG5vdCBiZSBhY2NvdW50ZWQgZm9yIGluIHRoZSBiZW5j
aG1hcmsgc2NvcmUuCi1mdW5jdGlvbiBCZW5jaG1hcmsobmFtZSwgZG9XYXJtdXAsIGRvRGV0ZXJt
aW5pc3RpYywgcnVuLCBzZXR1cCwgdGVhckRvd24sIGxhdGVuY3lSZXN1bHQsIG1pbkl0ZXJhdGlv
bnMpIHsKLSAgdGhpcy5uYW1lID0gbmFtZTsKLSAgdGhpcy5kb1dhcm11cCA9IGRvV2FybXVwOwot
ICB0aGlzLmRvRGV0ZXJtaW5pc3RpYyA9IGRvRGV0ZXJtaW5pc3RpYzsKLSAgdGhpcy5ydW4gPSBy
dW47Ci0gIHRoaXMuU2V0dXAgPSBzZXR1cCA/IHNldHVwIDogZnVuY3Rpb24oKSB7IH07Ci0gIHRo
aXMuVGVhckRvd24gPSB0ZWFyRG93biA/IHRlYXJEb3duIDogZnVuY3Rpb24oKSB7IH07Ci0gIHRo
aXMubGF0ZW5jeVJlc3VsdCA9IGxhdGVuY3lSZXN1bHQgPyBsYXRlbmN5UmVzdWx0IDogbnVsbDsg
Ci0gIHRoaXMubWluSXRlcmF0aW9ucyA9IG1pbkl0ZXJhdGlvbnMgPyBtaW5JdGVyYXRpb25zIDog
MzI7Ci19Ci0KLQotLy8gQmVuY2htYXJrIHJlc3VsdHMgaG9sZCB0aGUgYmVuY2htYXJrIGFuZCB0
aGUgbWVhc3VyZWQgdGltZSB1c2VkIHRvCi0vLyBydW4gdGhlIGJlbmNobWFyay4gVGhlIGJlbmNo
bWFyayBzY29yZSBpcyBjb21wdXRlZCBsYXRlciBvbmNlIGEKLS8vIGZ1bGwgYmVuY2htYXJrIHN1
aXRlIGhhcyBydW4gdG8gY29tcGxldGlvbi4gSWYgbGF0ZW5jeSBpcyBzZXQgdG8gMAotLy8gdGhl
biB0aGVyZSBpcyBubyBsYXRlbmN5IHNjb3JlIGZvciB0aGlzIGJlbmNobWFyay4KLWZ1bmN0aW9u
IEJlbmNobWFya1Jlc3VsdChiZW5jaG1hcmssIHRpbWUsIGxhdGVuY3kpIHsKLSAgdGhpcy5iZW5j
aG1hcmsgPSBiZW5jaG1hcms7Ci0gIHRoaXMudGltZSA9IHRpbWU7Ci0gIHRoaXMubGF0ZW5jeSA9
IGxhdGVuY3k7Ci19Ci0KLQotLy8gQXV0b21hdGljYWxseSBjb252ZXJ0IHJlc3VsdHMgdG8gbnVt
YmVycy4gVXNlZCBieSB0aGUgZ2VvbWV0cmljCi0vLyBtZWFuIGNvbXB1dGF0aW9uLgotQmVuY2ht
YXJrUmVzdWx0LnByb3RvdHlwZS52YWx1ZU9mID0gZnVuY3Rpb24oKSB7Ci0gIHJldHVybiB0aGlz
LnRpbWU7Ci19Ci0KLQotLy8gU3VpdGVzIG9mIGJlbmNobWFya3MgY29uc2lzdCBvZiBhIG5hbWUg
YW5kIHRoZSBzZXQgb2YgYmVuY2htYXJrcyBpbgotLy8gYWRkaXRpb24gdG8gdGhlIHJlZmVyZW5j
ZSB0aW1pbmcgdGhhdCB0aGUgZmluYWwgc2NvcmUgd2lsbCBiZSBiYXNlZAotLy8gb24uIFRoaXMg
d2F5LCBhbGwgc2NvcmVzIGFyZSByZWxhdGl2ZSB0byBhIHJlZmVyZW5jZSBydW4gYW5kIGhpZ2hl
cgotLy8gc2NvcmVzIGltcGxpZXMgYmV0dGVyIHBlcmZvcm1hbmNlLgotZnVuY3Rpb24gQmVuY2ht
YXJrU3VpdGUobmFtZSwgcmVmZXJlbmNlLCBiZW5jaG1hcmtzKSB7Ci0gIHRoaXMubmFtZSA9IG5h
bWU7Ci0gIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlOwotICB0aGlzLmJlbmNobWFya3MgPSBi
ZW5jaG1hcmtzOwotICBCZW5jaG1hcmtTdWl0ZS5zdWl0ZXMucHVzaCh0aGlzKTsKLX0KLQotCi0v
LyBLZWVwIHRyYWNrIG9mIGFsbCBkZWNsYXJlZCBiZW5jaG1hcmsgc3VpdGVzLgotQmVuY2htYXJr
U3VpdGUuc3VpdGVzID0gW107Ci0KLS8vIFNjb3JlcyBhcmUgbm90IGNvbXBhcmFibGUgYWNyb3Nz
IHZlcnNpb25zLiBCdW1wIHRoZSB2ZXJzaW9uIGlmCi0vLyB5b3UncmUgbWFraW5nIGNoYW5nZXMg
dGhhdCB3aWxsIGFmZmVjdCB0aGF0IHNjb3JlcywgZS5nLiBpZiB5b3UgYWRkCi0vLyBhIG5ldyBi
ZW5jaG1hcmsgb3IgY2hhbmdlIGFuIGV4aXN0aW5nIG9uZS4KLUJlbmNobWFya1N1aXRlLnZlcnNp
b24gPSAnOSc7Ci0KLS8vIE92ZXJyaWRlIHRoZSBhbGVydCBmdW5jdGlvbiB0byB0aHJvdyBhbiBl
eGNlcHRpb24gaW5zdGVhZC4KLWFsZXJ0ID0gZnVuY3Rpb24ocykgewotICB0aHJvdyAiQWxlcnQg
Y2FsbGVkIHdpdGggYXJndW1lbnQ6ICIgKyBzOwotfTsKLQotCi0vLyBUbyBtYWtlIHRoZSBiZW5j
aG1hcmsgcmVzdWx0cyBwcmVkaWN0YWJsZSwgd2UgcmVwbGFjZSBNYXRoLnJhbmRvbQotLy8gd2l0
aCBhIDEwMCUgZGV0ZXJtaW5pc3RpYyBhbHRlcm5hdGl2ZS4KLUJlbmNobWFya1N1aXRlLlJlc2V0
Uk5HID0gZnVuY3Rpb24oKSB7Ci0gIE1hdGgucmFuZG9tID0gKGZ1bmN0aW9uKCkgewotICAgIHZh
ciBzZWVkID0gNDk3MzQzMjE7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAgLy8gUm9i
ZXJ0IEplbmtpbnMnIDMyIGJpdCBpbnRlZ2VyIGhhc2ggZnVuY3Rpb24uCi0gICAgICBzZWVkID0g
KChzZWVkICsgMHg3ZWQ1NWQxNikgKyAoc2VlZCA8PCAxMikpICAmIDB4ZmZmZmZmZmY7Ci0gICAg
ICBzZWVkID0gKChzZWVkIF4gMHhjNzYxYzIzYykgXiAoc2VlZCA+Pj4gMTkpKSAmIDB4ZmZmZmZm
ZmY7Ci0gICAgICBzZWVkID0gKChzZWVkICsgMHgxNjU2NjdiMSkgKyAoc2VlZCA8PCA1KSkgICAm
IDB4ZmZmZmZmZmY7Ci0gICAgICBzZWVkID0gKChzZWVkICsgMHhkM2EyNjQ2YykgXiAoc2VlZCA8
PCA5KSkgICAmIDB4ZmZmZmZmZmY7Ci0gICAgICBzZWVkID0gKChzZWVkICsgMHhmZDcwNDZjNSkg
KyAoc2VlZCA8PCAzKSkgICAmIDB4ZmZmZmZmZmY7Ci0gICAgICBzZWVkID0gKChzZWVkIF4gMHhi
NTVhNGYwOSkgXiAoc2VlZCA+Pj4gMTYpKSAmIDB4ZmZmZmZmZmY7Ci0gICAgICByZXR1cm4gKHNl
ZWQgJiAweGZmZmZmZmYpIC8gMHgxMDAwMDAwMDsKLSAgICB9OwotICB9KSgpOwotfQotCi0KLS8v
IFJ1bnMgYWxsIHJlZ2lzdGVyZWQgYmVuY2htYXJrIHN1aXRlcyBhbmQgb3B0aW9uYWxseSB5aWVs
ZHMgYmV0d2VlbgotLy8gZWFjaCBpbmRpdmlkdWFsIGJlbmNobWFyayB0byBhdm9pZCBydW5uaW5n
IGZvciB0b28gbG9uZyBpbiB0aGUKLS8vIGNvbnRleHQgb2YgYnJvd3NlcnMuIE9uY2UgZG9uZSwg
dGhlIGZpbmFsIHNjb3JlIGlzIHJlcG9ydGVkIHRvIHRoZQotLy8gcnVubmVyLgotQmVuY2htYXJr
U3VpdGUuUnVuU3VpdGVzID0gZnVuY3Rpb24ocnVubmVyKSB7Ci0gIHZhciBjb250aW51YXRpb24g
PSBudWxsOwotICB2YXIgc3VpdGVzID0gQmVuY2htYXJrU3VpdGUuc3VpdGVzOwotICB2YXIgbGVu
Z3RoID0gc3VpdGVzLmxlbmd0aDsKLSAgQmVuY2htYXJrU3VpdGUuc2NvcmVzID0gW107Ci0gIHZh
ciBpbmRleCA9IDA7Ci0gIGZ1bmN0aW9uIFJ1blN0ZXAoKSB7Ci0gICAgd2hpbGUgKGNvbnRpbnVh
dGlvbiB8fCBpbmRleCA8IGxlbmd0aCkgewotICAgICAgaWYgKGNvbnRpbnVhdGlvbikgewotICAg
ICAgICBjb250aW51YXRpb24gPSBjb250aW51YXRpb24oKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgIHZhciBzdWl0ZSA9IHN1aXRlc1tpbmRleCsrXTsKLSAgICAgICAgaWYgKHJ1bm5lci5Ob3Rp
ZnlTdGFydCkgcnVubmVyLk5vdGlmeVN0YXJ0KHN1aXRlLm5hbWUpOwotICAgICAgICBjb250aW51
YXRpb24gPSBzdWl0ZS5SdW5TdGVwKHJ1bm5lcik7Ci0gICAgICB9Ci0gICAgICBpZiAoY29udGlu
dWF0aW9uICYmIHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnNldFRpbWVv
dXQpIHsKLSAgICAgICAgd2luZG93LnNldFRpbWVvdXQoUnVuU3RlcCwgMjUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gc2hvdyBmaW5hbCByZXN1bHQKLSAgICBp
ZiAocnVubmVyLk5vdGlmeVNjb3JlKSB7Ci0gICAgICB2YXIgc2NvcmUgPSBCZW5jaG1hcmtTdWl0
ZS5HZW9tZXRyaWNNZWFuKEJlbmNobWFya1N1aXRlLnNjb3Jlcyk7Ci0gICAgICB2YXIgZm9ybWF0
dGVkID0gQmVuY2htYXJrU3VpdGUuRm9ybWF0U2NvcmUoMTAwICogc2NvcmUpOwotICAgICAgcnVu
bmVyLk5vdGlmeVNjb3JlKGZvcm1hdHRlZCk7Ci0gICAgfQotICB9Ci0gIFJ1blN0ZXAoKTsKLX0K
LQotCi0vLyBDb3VudHMgdGhlIHRvdGFsIG51bWJlciBvZiByZWdpc3RlcmVkIGJlbmNobWFya3Mu
IFVzZWZ1bCBmb3IKLS8vIHNob3dpbmcgcHJvZ3Jlc3MgYXMgYSBwZXJjZW50YWdlLgotQmVuY2ht
YXJrU3VpdGUuQ291bnRCZW5jaG1hcmtzID0gZnVuY3Rpb24oKSB7Ci0gIHZhciByZXN1bHQgPSAw
OwotICB2YXIgc3VpdGVzID0gQmVuY2htYXJrU3VpdGUuc3VpdGVzOwotICBmb3IgKHZhciBpID0g
MDsgaSA8IHN1aXRlcy5sZW5ndGg7IGkrKykgewotICAgIHJlc3VsdCArPSBzdWl0ZXNbaV0uYmVu
Y2htYXJrcy5sZW5ndGg7Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vLyBDb21wdXRl
cyB0aGUgZ2VvbWV0cmljIG1lYW4gb2YgYSBzZXQgb2YgbnVtYmVycy4KLUJlbmNobWFya1N1aXRl
Lkdlb21ldHJpY01lYW4gPSBmdW5jdGlvbihudW1iZXJzKSB7Ci0gIHZhciBsb2cgPSAwOwotICBm
b3IgKHZhciBpID0gMDsgaSA8IG51bWJlcnMubGVuZ3RoOyBpKyspIHsKLSAgICBsb2cgKz0gTWF0
aC5sb2cobnVtYmVyc1tpXSk7Ci0gIH0KLSAgcmV0dXJuIE1hdGgucG93KE1hdGguRSwgbG9nIC8g
bnVtYmVycy5sZW5ndGgpOwotfQotCi0KLS8vIENvbXB1dGVzIHRoZSBnZW9tZXRyaWMgbWVhbiBv
ZiBhIHNldCBvZiB0aHJvdWdocHV0IHRpbWUgbWVhc3VyZW1lbnRzLgotQmVuY2htYXJrU3VpdGUu
R2VvbWV0cmljTWVhblRpbWUgPSBmdW5jdGlvbihtZWFzdXJlbWVudHMpIHsKLSAgdmFyIGxvZyA9
IDA7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgbWVhc3VyZW1lbnRzLmxlbmd0aDsgaSsrKSB7Ci0g
ICAgbG9nICs9IE1hdGgubG9nKG1lYXN1cmVtZW50c1tpXS50aW1lKTsKLSAgfQotICByZXR1cm4g
TWF0aC5wb3coTWF0aC5FLCBsb2cgLyBtZWFzdXJlbWVudHMubGVuZ3RoKTsKLX0KLQotCi0vLyBD
b21wdXRlcyB0aGUgYXZlcmFnZSBvZiB0aGUgd29yc3Qgc2FtcGxlcy4gRm9yIGV4YW1wbGUsIGlm
IHBlcmNlbnRpbGUgaXMgOTksIHRoaXMgd2lsbCByZXBvcnQgdGhlCi0vLyBhdmVyYWdlIG9mIHRo
ZSB3b3JzdCAxJSBvZiB0aGUgc2FtcGxlcy4KLUJlbmNobWFya1N1aXRlLkF2ZXJhZ2VBYm92ZVBl
cmNlbnRpbGUgPSBmdW5jdGlvbihudW1iZXJzLCBwZXJjZW50aWxlKSB7Ci0gIC8vIERvbid0IGNo
YW5nZSB0aGUgb3JpZ2luYWwgYXJyYXkuCi0gIG51bWJlcnMgPSBudW1iZXJzLnNsaWNlKCk7Ci0g
IAotICAvLyBTb3J0IGluIGFzY2VuZGluZyBvcmRlci4KLSAgbnVtYmVycy5zb3J0KGZ1bmN0aW9u
KGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKLSAgCi0gIC8vIE5vdyB0aGUgZWxlbWVudHMgd2Ug
d2FudCBhcmUgYXQgdGhlIGVuZC4gS2VlcCByZW1vdmluZyB0aGVtIHVudGlsIHRoZSBhcnJheSBz
aXplIHNocmlua3MgdG9vIG11Y2guCi0gIC8vIEV4YW1wbGVzIGFzc3VtaW5nIHBlcmNlbnRpbGUg
PSA5OToKLSAgLy8KLSAgLy8gLSBudW1iZXJzLmxlbmd0aCBzdGFydHMgYXQgMTAwOiB3ZSB3aWxs
IHJlbW92ZSBqdXN0IHRoZSB3b3JzdCBlbnRyeSBhbmQgdGhlbiBub3QgcmVtb3ZlIGFueW1vcmUs
Ci0gIC8vICAgc2luY2UgdGhlbiBudW1iZXJzLmxlbmd0aCAvIG9yaWdpbmFsTGVuZ3RoID0gMC45
OS4KLSAgLy8KLSAgLy8gLSBudW1iZXJzLmxlbmd0aCBzdGFydHMgYXQgMTAwMDogd2Ugd2lsbCBy
ZW1vdmUgdGhlIHRlbiB3b3JzdC4KLSAgLy8KLSAgLy8gLSBudW1iZXJzLmxlbmd0aCBzdGFydHMg
YXQgMTA6IHdlIHdpbGwgcmVtb3ZlIGp1c3QgdGhlIHdvcnN0LgotICB2YXIgbnVtYmVyc1dlV2Fu
dCA9IFtdOwotICB2YXIgb3JpZ2luYWxMZW5ndGggPSBudW1iZXJzLmxlbmd0aDsKLSAgd2hpbGUg
KG51bWJlcnMubGVuZ3RoIC8gb3JpZ2luYWxMZW5ndGggPiBwZXJjZW50aWxlIC8gMTAwKQotICAg
IG51bWJlcnNXZVdhbnQucHVzaChudW1iZXJzLnBvcCgpKTsKLSAgCi0gIHZhciBzdW0gPSAwOwot
ICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlcnNXZVdhbnQubGVuZ3RoOyArK2kpCi0gICAgc3Vt
ICs9IG51bWJlcnNXZVdhbnRbaV07Ci0gIAotICB2YXIgcmVzdWx0ID0gc3VtIC8gbnVtYmVyc1dl
V2FudC5sZW5ndGg7Ci0gIAotICAvLyBEbyBhIHNhbml0eSBjaGVjay4KLSAgaWYgKG51bWJlcnMu
bGVuZ3RoICYmIHJlc3VsdCA8IG51bWJlcnNbbnVtYmVycy5sZW5ndGggLSAxXSkgewotICAgIHRo
cm93ICJTYW5pdHkgY2hlY2sgZmFpbDogdGhlIHdvcnN0IGNhc2UgcmVzdWx0IGlzICIgKyByZXN1
bHQgKwotICAgICAgIiBidXQgd2UgZGlkbid0IHRha2UgaW50byBhY2NvdW50ICIgKyBudW1iZXJz
OwotICB9Ci0gIAotICByZXR1cm4gcmVzdWx0OwotfQotCi0KLS8vIENvbXB1dGVzIHRoZSBnZW9t
ZXRyaWMgbWVhbiBvZiBhIHNldCBvZiBsYXRlbmN5IG1lYXN1cmVtZW50cy4KLUJlbmNobWFya1N1
aXRlLkdlb21ldHJpY01lYW5MYXRlbmN5ID0gZnVuY3Rpb24obWVhc3VyZW1lbnRzKSB7Ci0gIHZh
ciBsb2cgPSAwOwotICB2YXIgaGFzTGF0ZW5jeVJlc3VsdCA9IGZhbHNlOwotICBmb3IgKHZhciBp
ID0gMDsgaSA8IG1lYXN1cmVtZW50cy5sZW5ndGg7IGkrKykgewotICAgIGlmIChtZWFzdXJlbWVu
dHNbaV0ubGF0ZW5jeSAhPSAwKSB7Ci0gICAgICBsb2cgKz0gTWF0aC5sb2cobWVhc3VyZW1lbnRz
W2ldLmxhdGVuY3kpOwotICAgICAgaGFzTGF0ZW5jeVJlc3VsdCA9IHRydWU7Ci0gICAgfQotICB9
Ci0gIGlmIChoYXNMYXRlbmN5UmVzdWx0KSB7Ci0gICAgcmV0dXJuIE1hdGgucG93KE1hdGguRSwg
bG9nIC8gbWVhc3VyZW1lbnRzLmxlbmd0aCk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0g
IH0KLX0KLQotCi0vLyBDb252ZXJ0cyBhIHNjb3JlIHZhbHVlIHRvIGEgc3RyaW5nIHdpdGggYXQg
bGVhc3QgdGhyZWUgc2lnbmlmaWNhbnQKLS8vIGRpZ2l0cy4KLUJlbmNobWFya1N1aXRlLkZvcm1h
dFNjb3JlID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgaWYgKHZhbHVlID4gMTAwKSB7Ci0gICAgcmV0
dXJuIHZhbHVlLnRvRml4ZWQoMCk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIHZhbHVlLnRvUHJl
Y2lzaW9uKDMpOwotICB9Ci19Ci0KLS8vIE5vdGlmaWVzIHRoZSBydW5uZXIgdGhhdCB3ZSdyZSBk
b25lIHJ1bm5pbmcgYSBzaW5nbGUgYmVuY2htYXJrIGluCi0vLyB0aGUgYmVuY2htYXJrIHN1aXRl
LiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gcmVwb3J0IHByb2dyZXNzLgotQmVuY2htYXJrU3VpdGUu
cHJvdG90eXBlLk5vdGlmeVN0ZXAgPSBmdW5jdGlvbihyZXN1bHQpIHsKLSAgdGhpcy5yZXN1bHRz
LnB1c2gocmVzdWx0KTsKLSAgaWYgKHRoaXMucnVubmVyLk5vdGlmeVN0ZXApIHRoaXMucnVubmVy
Lk5vdGlmeVN0ZXAocmVzdWx0LmJlbmNobWFyay5uYW1lKTsKLX0KLQotCi0vLyBOb3RpZmllcyB0
aGUgcnVubmVyIHRoYXQgd2UncmUgZG9uZSB3aXRoIHJ1bm5pbmcgYSBzdWl0ZSBhbmQgdGhhdAot
Ly8gd2UgaGF2ZSBhIHJlc3VsdCB3aGljaCBjYW4gYmUgcmVwb3J0ZWQgdG8gdGhlIHVzZXIgaWYg
bmVlZGVkLgotQmVuY2htYXJrU3VpdGUucHJvdG90eXBlLk5vdGlmeVJlc3VsdCA9IGZ1bmN0aW9u
KCkgewotICB2YXIgbWVhbiA9IEJlbmNobWFya1N1aXRlLkdlb21ldHJpY01lYW5UaW1lKHRoaXMu
cmVzdWx0cyk7Ci0gIHZhciBzY29yZSA9IHRoaXMucmVmZXJlbmNlWzBdIC8gbWVhbjsKLSAgQmVu
Y2htYXJrU3VpdGUuc2NvcmVzLnB1c2goc2NvcmUpOwotICBpZiAodGhpcy5ydW5uZXIuTm90aWZ5
UmVzdWx0KSB7Ci0gICAgdmFyIGZvcm1hdHRlZCA9IEJlbmNobWFya1N1aXRlLkZvcm1hdFNjb3Jl
KDEwMCAqIHNjb3JlKTsKLSAgICB0aGlzLnJ1bm5lci5Ob3RpZnlSZXN1bHQodGhpcy5uYW1lLCBm
b3JtYXR0ZWQpOwotICB9Ci0gIGlmICh0aGlzLnJlZmVyZW5jZS5sZW5ndGggPT0gMikgewotICAg
IHZhciBtZWFuTGF0ZW5jeSA9IEJlbmNobWFya1N1aXRlLkdlb21ldHJpY01lYW5MYXRlbmN5KHRo
aXMucmVzdWx0cyk7Ci0gICAgaWYgKG1lYW5MYXRlbmN5ICE9IDApIHsKLSAgICAgIHZhciBzY29y
ZUxhdGVuY3kgPSB0aGlzLnJlZmVyZW5jZVsxXSAvIG1lYW5MYXRlbmN5OwotICAgICAgQmVuY2ht
YXJrU3VpdGUuc2NvcmVzLnB1c2goc2NvcmVMYXRlbmN5KTsKLSAgICAgIGlmICh0aGlzLnJ1bm5l
ci5Ob3RpZnlSZXN1bHQpIHsKLSAgICAgICAgdmFyIGZvcm1hdHRlZExhdGVuY3kgPSBCZW5jaG1h
cmtTdWl0ZS5Gb3JtYXRTY29yZSgxMDAgKiBzY29yZUxhdGVuY3kpCi0gICAgICAgIHRoaXMucnVu
bmVyLk5vdGlmeVJlc3VsdCh0aGlzLm5hbWUgKyAiTGF0ZW5jeSIsIGZvcm1hdHRlZExhdGVuY3kp
OwotICAgICAgfQotICAgIH0KLSAgfQotfQotCi0KLS8vIE5vdGlmaWVzIHRoZSBydW5uZXIgdGhh
dCBydW5uaW5nIGEgYmVuY2htYXJrIHJlc3VsdGVkIGluIGFuIGVycm9yLgotQmVuY2htYXJrU3Vp
dGUucHJvdG90eXBlLk5vdGlmeUVycm9yID0gZnVuY3Rpb24oZXJyb3IpIHsKLSAgaWYgKHRoaXMu
cnVubmVyLk5vdGlmeUVycm9yKSB7Ci0gICAgdGhpcy5ydW5uZXIuTm90aWZ5RXJyb3IodGhpcy5u
YW1lLCBlcnJvcik7Ci0gIH0KLSAgaWYgKHRoaXMucnVubmVyLk5vdGlmeVN0ZXApIHsKLSAgICB0
aGlzLnJ1bm5lci5Ob3RpZnlTdGVwKHRoaXMubmFtZSk7Ci0gIH0KLX0KLQotCi0vLyBSdW5zIGEg
c2luZ2xlIGJlbmNobWFyayBmb3IgYXQgbGVhc3QgYSBzZWNvbmQgYW5kIGNvbXB1dGVzIHRoZQot
Ly8gYXZlcmFnZSB0aW1lIGl0IHRha2VzIHRvIHJ1biBhIHNpbmdsZSBpdGVyYXRpb24uCi1CZW5j
aG1hcmtTdWl0ZS5wcm90b3R5cGUuUnVuU2luZ2xlQmVuY2htYXJrID0gZnVuY3Rpb24oYmVuY2ht
YXJrLCBkYXRhKSB7Ci0gIGZ1bmN0aW9uIE1lYXN1cmUoZGF0YSkgewotICAgIHZhciBlbGFwc2Vk
ID0gMDsKLSAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpOwotICAKLSAgLy8gUnVuIGVpdGhlciBm
b3IgMSBzZWNvbmQgb3IgZm9yIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBzcGVjaWZpZWQKLSAg
Ly8gYnkgbWluSXRlcmF0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSBjb25maWcgZmxhZyBkb0RldGVy
bWluaXN0aWMuCi0gICAgZm9yICh2YXIgaSA9IDA7IChiZW5jaG1hcmsuZG9EZXRlcm1pbmlzdGlj
ID8gCi0gICAgICBpPGJlbmNobWFyay5taW5JdGVyYXRpb25zIDogZWxhcHNlZCA8IDEwMDApOyBp
KyspIHsKLSAgICAgIGJlbmNobWFyay5ydW4oKTsKLSAgICAgIGVsYXBzZWQgPSBuZXcgRGF0ZSgp
IC0gc3RhcnQ7Ci0gICAgfQotICAgIGlmIChkYXRhICE9IG51bGwpIHsKLSAgICAgIGRhdGEucnVu
cyArPSBpOwotICAgICAgZGF0YS5lbGFwc2VkICs9IGVsYXBzZWQ7Ci0gICAgfQotICB9Ci0KLSAg
Ly8gU2V0cyB1cCBkYXRhIGluIG9yZGVyIHRvIHNraXAgb3Igbm90IHRoZSB3YXJtdXAgcGhhc2Uu
Ci0gIGlmICghYmVuY2htYXJrLmRvV2FybXVwICYmIGRhdGEgPT0gbnVsbCkgewotICAgIGRhdGEg
PSB7IHJ1bnM6IDAsIGVsYXBzZWQ6IDAgfTsKLSAgfQotCi0gIGlmIChkYXRhID09IG51bGwpIHsK
LSAgICBNZWFzdXJlKG51bGwpOwotICAgIHJldHVybiB7IHJ1bnM6IDAsIGVsYXBzZWQ6IDAgfTsK
LSAgfSBlbHNlIHsKLSAgICBNZWFzdXJlKGRhdGEpOwotICAgIC8vIElmIHdlJ3ZlIHJ1biB0b28g
ZmV3IGl0ZXJhdGlvbnMsIHdlIGNvbnRpbnVlIGZvciBhbm90aGVyIHNlY29uZC4KLSAgICBpZiAo
ZGF0YS5ydW5zIDwgYmVuY2htYXJrLm1pbkl0ZXJhdGlvbnMpIHJldHVybiBkYXRhOwotICAgIHZh
ciB1c2VjID0gKGRhdGEuZWxhcHNlZCAqIDEwMDApIC8gZGF0YS5ydW5zOwotICAgIHZhciBsYXRl
bmN5U2FtcGxlcyA9IChiZW5jaG1hcmsubGF0ZW5jeVJlc3VsdCAhPSBudWxsKSA/IGJlbmNobWFy
ay5sYXRlbmN5UmVzdWx0KCkgOiBbMF07Ci0gICAgdmFyIHBlcmNlbnRpbGUgPSA5OS41OwotICAg
IHZhciBsYXRlbmN5ID0gQmVuY2htYXJrU3VpdGUuQXZlcmFnZUFib3ZlUGVyY2VudGlsZShsYXRl
bmN5U2FtcGxlcywgcGVyY2VudGlsZSkgKiAxMDAwOwotICAgIHRoaXMuTm90aWZ5U3RlcChuZXcg
QmVuY2htYXJrUmVzdWx0KGJlbmNobWFyaywgdXNlYywgbGF0ZW5jeSkpOwotICAgIHJldHVybiBu
dWxsOwotICB9Ci19Ci0KLQotLy8gVGhpcyBmdW5jdGlvbiBzdGFydHMgcnVubmluZyBhIHN1aXRl
LCBidXQgc3RvcHMgYmV0d2VlbiBlYWNoCi0vLyBpbmRpdmlkdWFsIGJlbmNobWFyayBpbiB0aGUg
c3VpdGUgYW5kIHJldHVybnMgYSBjb250aW51YXRpb24KLS8vIGZ1bmN0aW9uIHdoaWNoIGNhbiBi
ZSBpbnZva2VkIHRvIHJ1biB0aGUgbmV4dCBiZW5jaG1hcmsuIE9uY2UgdGhlCi0vLyBsYXN0IGJl
bmNobWFyayBoYXMgYmVlbiBleGVjdXRlZCwgbnVsbCBpcyByZXR1cm5lZC4KLUJlbmNobWFya1N1
aXRlLnByb3RvdHlwZS5SdW5TdGVwID0gZnVuY3Rpb24ocnVubmVyKSB7Ci0gIEJlbmNobWFya1N1
aXRlLlJlc2V0Uk5HKCk7Ci0gIHRoaXMucmVzdWx0cyA9IFtdOwotICB0aGlzLnJ1bm5lciA9IHJ1
bm5lcjsKLSAgdmFyIGxlbmd0aCA9IHRoaXMuYmVuY2htYXJrcy5sZW5ndGg7Ci0gIHZhciBpbmRl
eCA9IDA7Ci0gIHZhciBzdWl0ZSA9IHRoaXM7Ci0gIHZhciBkYXRhOwotCi0gIC8vIFJ1biB0aGUg
c2V0dXAsIHRoZSBhY3R1YWwgYmVuY2htYXJrLCBhbmQgdGhlIHRlYXIgZG93biBpbiB0aHJlZQot
ICAvLyBzZXBhcmF0ZSBzdGVwcyB0byBhbGxvdyB0aGUgZnJhbWV3b3JrIHRvIHlpZWxkIGJldHdl
ZW4gYW55IG9mIHRoZQotICAvLyBzdGVwcy4KLQotICBmdW5jdGlvbiBSdW5OZXh0U2V0dXAoKSB7
Ci0gICAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7Ci0gICAgICB0cnkgewotICAgICAgICBzdWl0ZS5i
ZW5jaG1hcmtzW2luZGV4XS5TZXR1cCgpOwotICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICBz
dWl0ZS5Ob3RpZnlFcnJvcihlKTsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICB9Ci0gICAg
ICByZXR1cm4gUnVuTmV4dEJlbmNobWFyazsKLSAgICB9Ci0gICAgc3VpdGUuTm90aWZ5UmVzdWx0
KCk7Ci0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBmdW5jdGlvbiBSdW5OZXh0QmVuY2htYXJr
KCkgewotICAgIHRyeSB7Ci0gICAgICBkYXRhID0gc3VpdGUuUnVuU2luZ2xlQmVuY2htYXJrKHN1
aXRlLmJlbmNobWFya3NbaW5kZXhdLCBkYXRhKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICBz
dWl0ZS5Ob3RpZnlFcnJvcihlKTsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0KLSAgICAvLyBJ
ZiBkYXRhIGlzIG51bGwsIHdlJ3JlIGRvbmUgd2l0aCB0aGlzIGJlbmNobWFyay4KLSAgICByZXR1
cm4gKGRhdGEgPT0gbnVsbCkgPyBSdW5OZXh0VGVhckRvd24gOiBSdW5OZXh0QmVuY2htYXJrKCk7
Ci0gIH0KLQotICBmdW5jdGlvbiBSdW5OZXh0VGVhckRvd24oKSB7Ci0gICAgdHJ5IHsKLSAgICAg
IHN1aXRlLmJlbmNobWFya3NbaW5kZXgrK10uVGVhckRvd24oKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICBzdWl0ZS5Ob3RpZnlFcnJvcihlKTsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0K
LSAgICByZXR1cm4gUnVuTmV4dFNldHVwOwotICB9Ci0KLSAgLy8gU3RhcnQgb3V0IHJ1bm5pbmcg
dGhlIHNldHVwLgotICByZXR1cm4gUnVuTmV4dFNldHVwKCk7Ci19CkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL1JleEJlbmNoL09jdGFuZTIvcmVnZXhwLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvUmV4QmVuY2gvT2N0YW5lMi9yZWdleHAuanMJKHJldmlzaW9uIDIyMDQyMCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvUmV4QmVuY2gvT2N0YW5lMi9yZWdleHAuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDEyICszNiw2IEBACiAvLyBhZmZlY3QgaG93IHRoZSByZWdleHBzIG1hdGNoIHRo
ZWlyIGlucHV0LiAgRmluYWxseSB0aGUgc3RyaW5ncyBhcmUKIC8vIHNjcmFtYmxlZCB0byBleGVy
Y2lzZSB0aGUgcmVnZXhwIGVuZ2luZSBvbiBkaWZmZXJlbnQgaW5wdXQgc3RyaW5ncy4KIAotCi12
YXIgUmVnRXhwU3VpdGUgPSBuZXcgQmVuY2htYXJrU3VpdGUoJ1JlZ0V4cCcsIFs5MTA5ODVdLCBb
Ci0gIG5ldyBCZW5jaG1hcmsoIlJlZ0V4cCIsIHRydWUsIGZhbHNlLCAKLSAgICBSZWdFeHBSdW4s
IFJlZ0V4cFNldHVwLCBSZWdFeHBUZWFyRG93biwgbnVsbCwgMTYpCi1dKTsKLQogdmFyIHJlZ0V4
cEJlbmNobWFyayA9IG51bGw7CiAKIGZ1bmN0aW9uIFJlZ0V4cFNldHVwKCkgewo=
</data>
<flag name="review"
          id="338256"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="338257"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>