<?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>169268</bug_id>
          
          <creation_ts>2017-03-07 01:34:04 -0800</creation_ts>
          <short_desc>WebAssembly: Make the Unity AngryBots demo run</short_desc>
          <delta_ts>2017-03-09 11:18:43 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1284246</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-07 01:34:04 -0800</bug_when>
    <thetext>This is an easily reproducible bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285030</commentid>
    <comment_count>1</comment_count>
      <attachid>303847</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-08 14:32:41 -0800</bug_when>
    <thetext>Created attachment 303847
WIP

I&apos;ve got some other random stuff I need to remove still.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285180</commentid>
    <comment_count>2</comment_count>
      <attachid>303889</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-08 19:12:33 -0800</bug_when>
    <thetext>Created attachment 303889
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285407</commentid>
    <comment_count>3</comment_count>
      <attachid>303889</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 11:18:38 -0800</bug_when>
    <thetext>Comment on attachment 303889
patch

Clearing flags on attachment: 303889

Committed r213653: &lt;http://trac.webkit.org/changeset/213653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285408</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 11:18:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303847</attachid>
            <date>2017-03-08 14:32:41 -0800</date>
            <delta_ts>2017-03-08 19:12:33 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>26755</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9tYW55LWFyZ3VtZW50cy10by1mdW5j
dGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbWFueS1h
cmd1bWVudHMtdG8tZnVuY3Rpb24uanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy93YXNtL2Z1
bmN0aW9uLXRlc3RzL21hbnktYXJndW1lbnRzLXRvLWZ1bmN0aW9uLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTM3IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJwor
aW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycKKworeworICAgIGNvbnN0IGIg
PSBuZXcgQnVpbGRlcigpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgp
LkZ1bmN0aW9uKCJpbXAiLCAiZnVuYyIsIHsgcGFyYW1zOiBbImkzMiIsICJpMzIiLCAiaTMyIiwg
ImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIl0sIHJldDoiaTMy
IiB9KS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhwb3J0KCku
RnVuY3Rpb24oImYwIikuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0
aW9uKCJmMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgICAgICAgICAgICAgIC5J
MzJDb25zdCgwKQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgxKQorICAgICAgICAgICAgICAg
IC5JMzJDb25zdCgyKQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgzKQorICAgICAgICAgICAg
ICAgIC5JMzJDb25zdCg0KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg1KQorICAgICAgICAg
ICAgICAgIC5JMzJDb25zdCg2KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg3KQorICAgICAg
ICAgICAgICAgIC5JMzJDb25zdCg4KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg5KQorICAg
ICAgICAgICAgICAgIC5JMzJDb25zdCgxMCkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMTEp
CisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEyKQorICAgICAgICAgICAgICAgIC5JMzJDb25z
dCgxMykKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMTQpCisgICAgICAgICAgICAgICAgLkkz
MkNvbnN0KDE1KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgxNikKKyAgICAgICAgICAgICAg
ICAuSTMyQ29uc3QoMTcpCisgICAgICAgICAgICAgICAgLkNhbGwoMCkKKyAgICAgICAgICAgICAg
ICAuUmV0dXJuKCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCkKKworICAgIGZ1
bmN0aW9uIGZvbyguLi5hcmdzKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGFyZ3NbaV0gIT09IGkpCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgaW1wID0ge2ltcDoge2Z1bmM6IGZvb319CisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYi5XZWJBc3NlbWJseSgpLmdl
dCgpKSwgaW1wKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgICAgICBp
bnN0YW5jZS5leHBvcnRzLmYwKCk7Cit9CisKK3sKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIo
KQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5JbXBvcnQoKS5GdW5jdGlvbigiaW1w
IiwgImZ1bmMiLCB7IHBhcmFtczogWyJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwg
ImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAi
ZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiJdLCByZXQ6ImYzMiIgfSkuRW5kKCkKKyAg
ICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJmMCIp
LkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZjAiLCB7IHBh
cmFtczogW10sIHJldDogImYzMiIgfSkKKyAgICAgICAgICAgICAgICAuRjMyQ29uc3QoMC41KQor
ICAgICAgICAgICAgICAgIC5GMzJDb25zdCgxLjUpCisgICAgICAgICAgICAgICAgLkYzMkNvbnN0
KDIuNSkKKyAgICAgICAgICAgICAgICAuRjMyQ29uc3QoMy41KQorICAgICAgICAgICAgICAgIC5G
MzJDb25zdCg0LjUpCisgICAgICAgICAgICAgICAgLkYzMkNvbnN0KDUuNSkKKyAgICAgICAgICAg
ICAgICAuRjMyQ29uc3QoNi41KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCg3LjUpCisgICAg
ICAgICAgICAgICAgLkYzMkNvbnN0KDguNSkKKyAgICAgICAgICAgICAgICAuRjMyQ29uc3QoOS41
KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCgxMC41KQorICAgICAgICAgICAgICAgIC5GMzJD
b25zdCgxMS41KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCgxMi41KQorICAgICAgICAgICAg
ICAgIC5GMzJDb25zdCgxMy41KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCgxNC41KQorICAg
ICAgICAgICAgICAgIC5GMzJDb25zdCgxNS41KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCgx
Ni41KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCgxNy41KQorICAgICAgICAgICAgICAgIC5D
YWxsKDApCisgICAgICAgICAgICAgICAgLlJldHVybigpCisgICAgICAgICAgICAuRW5kKCkKKyAg
ICAgICAgLkVuZCgpCisKKyAgICBmdW5jdGlvbiBmb28oLi4uYXJncykgeworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChhcmdz
W2ldICE9PSAoaSArIDAuNSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQh
Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW1wID0ge2ltcDoge2Z1bmM6IGZvb319
CisgICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYi5XZWJBc3NlbWJseSgpLmdldCgpKSwgaW1wKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDsgaSsrKQorICAgICAgICBpbnN0YW5jZS5leHBvcnRzLmYwKCk7Cit9CisK
K3sKKyAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisg
ICAgICAgIC5JbXBvcnQoKS5GdW5jdGlvbigiaW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJmMzIi
LCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIs
ICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwg
ImYzMiJdLCByZXQ6ImYzMiIgfSkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAg
ICAgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJmMCIpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAg
ICAgICAgICAgIC5GdW5jdGlvbigiZjAiLCB7IHBhcmFtczogWyJmMzIiLCAiZjMyIiwgImYzMiIs
ICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwg
ImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiJdICwgcmV0OiAi
ZjMyIiB9KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5H
ZXRMb2NhbCgxKQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgyKQorICAgICAgICAgICAgICAg
IC5HZXRMb2NhbCgzKQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCg0KQorICAgICAgICAgICAg
ICAgIC5HZXRMb2NhbCg1KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCg2KQorICAgICAgICAg
ICAgICAgIC5HZXRMb2NhbCg3KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCg4KQorICAgICAg
ICAgICAgICAgIC5HZXRMb2NhbCg5KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgxMCkKKyAg
ICAgICAgICAgICAgICAuR2V0TG9jYWwoMTEpCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDEy
KQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgxMykKKyAgICAgICAgICAgICAgICAuR2V0TG9j
YWwoMTQpCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDE1KQorICAgICAgICAgICAgICAgIC5H
ZXRMb2NhbCgxNikKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMTcpCisgICAgICAgICAgICAg
ICAgLkNhbGwoMCkKKyAgICAgICAgICAgICAgICAuUmV0dXJuKCkKKyAgICAgICAgICAgIC5FbmQo
KQorICAgICAgICAuRW5kKCkKKworICAgIGZ1bmN0aW9uIGZvbyguLi5hcmdzKSB7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYg
KGFyZ3NbaV0gIT09IGkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW1wID0ge2ltcDoge2Z1bmM6IGZvb319Cisg
ICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoYi5XZWJBc3NlbWJseSgpLmdldCgpKSwgaW1wKTsKKyAgICBsZXQgYXJyID0gW107
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxODsgaSsrKQorICAgICAgICBhcnIucHVzaChpKTsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgICAgICBpbnN0YW5jZS5leHBv
cnRzLmYwKC4uLmFycik7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcAkocmV2aXNpb24gMjEzNTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAKICNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCisjaW5jbHVkZSAiV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5oIgorCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgpAQCAtMzM2LDYgKzMz
OCwxMCBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZURlZmF1bHRzKCkKIAogc3RhdGljIHZvaWQgcmVj
b21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiB7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAg
IEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSgpOworI2VuZGlmCisKICNpZiAhZGVmaW5lZChO
REVCVUcpCiAgICAgT3B0aW9uczo6dmFsaWRhdGVERkdFeGNlcHRpb25IYW5kbGluZygpID0gdHJ1
ZTsKICNlbmRpZgpAQCAtNjIyLDYgKzYyOCw3IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9ucyhj
b25zdCBjaGFyKiBvcHQKIAogICAgIFdURjo6ZmFzdEZyZWUob3B0aW9uc1N0ckNvcHkpOwogCisK
ICAgICByZXR1cm4gc3VjY2VzczsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAkocmV2aXNpb24gMjEzNTk3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUNhbGxlZT4qPihiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZDYWxsZWVzKCkpOwogICAgIH0KIAotcHJpdmF0ZToK
K3B1YmxpYzoKICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKFZNJiwgSlNXZWJBc3NlbWJseU1v
ZHVsZSosIEJhZzxDYWxsTGlua0luZm8+JiYsIFZlY3RvcjxXYXNtOjpXYXNtRXhpdFN0dWJzPiYm
LCBXYXNtOjpNZW1vcnk6Ok1vZGUsIHVuc2lnbmVkIGNhbGxlZUNvdW50KTsKICAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOwogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0
cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjEzNTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhaWwoX19WQV9BUkdTX18pOyAgICAgICAg
ICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotICAgIEIzSVJHZW5lcmF0b3IoVk0mLCBjb25zdCBN
b2R1bGVJbmZvcm1hdGlvbiYsIFByb2NlZHVyZSYsIFdhc21JbnRlcm5hbEZ1bmN0aW9uKiwgVmVj
dG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+Jik7CisgICAgQjNJUkdlbmVyYXRvcihWTSYsIGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgUHJvY2VkdXJlJiwgV2FzbUludGVybmFsRnVuY3Rpb24q
LCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCB1bnNpZ25lZCk7CiAKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJl
Kik7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkTG9jYWwoVHlwZSwg
dWludDMyX3QpOwpAQCAtMjI5LDEyICsyMjksMTQgQEAgcHJpdmF0ZToKICAgICBWYWx1ZSogbV9p
bnN0YW5jZVZhbHVlOwogfTsKIAotQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0s
IGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZSwgV2Fz
bUludGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNt
Q2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQorQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVy
YXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHBy
b2NlZHVyZSwgV2FzbUludGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCB1bnNpZ25lZCBmdW5j
dGlvbkluZGV4KQogICAgIDogbV92bSh2bSkKICAgICAsIG1faW5mbyhpbmZvKQogICAgICwgbV9w
cm9jKHByb2NlZHVyZSkKICAgICAsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHModW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMpCiB7CisgICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uSW5kZXgpOworCiAg
ICAgbV9jdXJyZW50QmxvY2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1UeXBlczsgKytpKSB7CkBAIC0yNTcsNiArMjU5LDEwIEBAIEIzSVJH
ZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb24KICAgICBtX3Byb2MucGluUmVnaXN0
ZXIobV9tZW1vcnlCYXNlR1BSKTsKICAgICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVy
c1swXS5zaXplT2Zmc2V0KTsKICAgICBtX21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVS
ZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVyOworCisgICAgLy9kYXRhTG9nTG4oIkJhc2UgbWVtb3J5
IHBvaW50ZXJyZWc6ICIsIFJlZyhtX21lbW9yeUJhc2VHUFIpKTsKKyAgICAvL2RhdGFMb2dMbigi
bWVtb3J5IHNpemUgcmVnOiAiLCBSZWcobV9tZW1vcnlTaXplR1BSKSk7CisKICAgICBmb3IgKGNv
bnN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVSZWdp
c3RlcnMpCiAgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihyZWdJbmZvLnNpemVSZWdpc3Rlcik7
CiAKQEAgLTI3Miw2ICsyNzgsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2
bSwgY29uCiAKICAgICBtX2luc3RhbmNlVmFsdWUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLAogICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3Jp
Z2luKCksICZtX3ZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkpOworCiB9CiAKIHN0cnVjdCBN
ZW1vcnlCYXNlQW5kU2l6ZSB7CkBAIC00NjEsNiArNDY4LDcgQEAgaW5saW5lIFZhbHVlKiBCM0lS
R2VuZXJhdG9yOjplbWl0Q2hlY2tBbgogICAgICAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsg
b2Zmc2V0ID4gb2Zmc2V0KTsKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNt
Qm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgcG9pbnRlciwgbV9tZW1vcnlTaXpl
R1BSLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAxKTsKICAgICB9CisKICAgICBwb2ludGVy
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBaRXh0MzIsIE9yaWdp
bigpLCBwb2ludGVyKTsKICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNt
QWRkcmVzc1ZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBwb2ludGVyLCBtX21lbW9yeUJhc2VHUFIp
OwogfQpAQCAtMTExOCw3ICsxMTI2LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFw
cGVyKFZNJiB2bQogICAgIGZ1bmN0aW9uLmpzVG9XYXNtRW50cnlwb2ludC5jYWxsZWVTYXZlUmVn
aXN0ZXJzID0gcHJvYy5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiB9CiAKLUV4cGVjdGVkPHN0ZDo6
dW5pcXVlX3B0cjxXYXNtSW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxl
KFZNJiB2bSwgQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIGNvbnN0IHVp
bnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0
dXJlKiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBjb25zdCBWZWN0
b3I8U2lnbmF0dXJlSW5kZXg+JiBtb2R1bGVTaWduYXR1cmVJbmRpY2VzVG9VbmlxdWVkU2lnbmF0
dXJlSW5kaWNlcywgdW5zaWduZWQgb3B0TGV2ZWwpCitFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
V2FzbUludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIENv
bXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5j
dGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0
dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNh
bGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgY29uc3QgVmVjdG9yPFNpZ25hdHVy
ZUluZGV4PiYgbW9kdWxlU2lnbmF0dXJlSW5kaWNlc1RvVW5pcXVlZFNpZ25hdHVyZUluZGljZXMs
IHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsIHVuc2lnbmVkIG9wdExldmVsKQogewogICAgIGF1dG8g
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxXYXNtSW50ZXJuYWxGdW5jdGlvbj4oKTsKIApAQCAt
MTEyNiw3ICsxMTM0LDcgQEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1
bgogICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q0NhbGxIZWxwZXJzPigmdm0pOwogCiAgICAgUHJvY2VkdXJlIHByb2NlZHVyZTsKLSAg
ICBCM0lSR2VuZXJhdG9yIGNvbnRleHQodm0sIGluZm8sIHByb2NlZHVyZSwgcmVzdWx0LmdldCgp
LCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscyk7CisgICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KHZt
LCBpbmZvLCBwcm9jZWR1cmUsIHJlc3VsdC5nZXQoKSwgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMs
IGZ1bmN0aW9uSW5kZXgpOwogICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNl
cigmdm0sIGNvbnRleHQsIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUs
IGluZm8sIG1vZHVsZVNpZ25hdHVyZUluZGljZXNUb1VuaXF1ZWRTaWduYXR1cmVJbmRpY2VzKTsK
ICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlci5wYXJzZSgpKTsKIApAQCAtMTEz
Niw2ICsxMTQ0LDcgQEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bgog
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJQcmUgU1NBOiAiLCBwcm9jZWR1cmUp
OwogICAgIGZpeFNTQShwcm9jZWR1cmUpOworICAgIHZhbGlkYXRlKHByb2NlZHVyZSwgIkFmdGVy
IHBhcnNpbmc6XG4iKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiUG9zdCBT
U0E6ICIsIHByb2NlZHVyZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuaAkocmV2aXNpb24gMjEzNTk3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBzdHJ1Y3QgQ29tcGlsYXRpb25Db250ZXh0IHsKICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwganNFbnRyeXBvaW50VG9XYXNtRW50cnlwb2ludENhbGw7CiB9OwogCi1FeHBlY3RlZDxz
dGQ6OnVuaXF1ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29t
cGlsZShWTSYsIENvbXBpbGF0aW9uQ29udGV4dCYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNv
bnN0IFNpZ25hdHVyZSosIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IE1v
ZHVsZUluZm9ybWF0aW9uJiwgY29uc3QgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiYsIHVuc2lnbmVk
IG9wdExldmVsID0gMSk7CitFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8V2FzbUludGVybmFsRnVu
Y3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShWTSYsIENvbXBpbGF0aW9uQ29udGV4dCYs
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFNpZ25hdHVyZSosIFZlY3RvcjxVbmxpbmtl
ZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgY29uc3QgVmVjdG9y
PFNpZ25hdHVyZUluZGV4PiYsIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsIHVuc2lnbmVkIG9wdExl
dmVsID0gMSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAJKHJldmlzaW9uIDIxMzU5NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0
aW9uVHlwZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCkBAIC0xMjEsOSArMTIyLDkgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTQogCiAgICAgLy8gRklYTUUgcGVyZm9ybSBh
IHN0YWNrIGNoZWNrIGJlZm9yZSB1cGRhdGluZyBTUC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NTU0NgogCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZQYXJhbWV0ZXJz
ID0gYXJnQ291bnQgKyAxOyAvLyBUaGVyZSBpcyBhICJ0aGlzIiBhcmd1bWVudC4KLSAgICB1bnNp
Z25lZCBudW1iZXJPZlJlZ3NGb3JDYWxsID0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3Rl
cnMgKyBudW1iZXJPZlBhcmFtZXRlcnM7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZCeXRlc0ZvckNh
bGwgPSBudW1iZXJPZlJlZ3NGb3JDYWxsICogc2l6ZW9mKFJlZ2lzdGVyKSAtIHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKTsKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlBhcmFtZXRlcnMgPSBh
cmdDb3VudCArIDE7IC8vIFRoZXJlIGlzIGEgInRoaXMiIGFyZ3VtZW50LgorICAgIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mUmVnc0ZvckNhbGwgPSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycyArIG51bWJlck9mUGFyYW1ldGVyczsKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkJ5
dGVzRm9yQ2FsbCA9IG51bWJlck9mUmVnc0ZvckNhbGwgKiBzaXplb2YoUmVnaXN0ZXIpIC0gc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpOwogICAgIGNvbnN0IHVuc2lnbmVkIHN0YWNrT2Zmc2V0ID0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgbnVtYmVyT2ZC
eXRlc0ZvckNhbGwpOwogICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihzdGFja09mZnNldCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgSklUOjpBZGRyZXNzIGNhbGxlZUZyYW1lID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgLXN0YXRpY19jYXN0PHB0cmRpZmZfdD4o
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CkBAIC0xMzUsNyArMTM2LDcgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTQogICAgICAgICB1bnNpZ25lZCBtYXJzaGFs
bGVkR1BScyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRGUFJzID0gMDsKICAgICAg
ICAgdW5zaWduZWQgY2FsbGVlRnJhbWVPZmZzZXQgPSBDYWxsRnJhbWVTbG90OjpmaXJzdEFyZ3Vt
ZW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKLSAgICAgICAgdW5zaWdu
ZWQgZnJPZmZzZXQgPSBDYWxsRnJhbWVTbG90OjpmaXJzdEFyZ3VtZW50ICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgdW5zaWduZWQgZnJPZmZzZXQgPSBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgYXJnTnVtID0gMDsgYXJnTnVtIDwgYXJn
Q291bnQ7ICsrYXJnTnVtKSB7CiAgICAgICAgICAgICBUeXBlIGFyZ1R5cGUgPSBzaWduYXR1cmUt
PmFyZ3VtZW50KGFyZ051bSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKQEAgLTE5
MCw3ICsxOTEsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNCiAg
ICAgICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRHUFJzID0gMDsKICAgICAgICAgdW5zaWduZWQgbWFy
c2hhbGxlZEZQUnMgPSAwOwogICAgICAgICB1bnNpZ25lZCBjYWxsZWVGcmFtZU9mZnNldCA9IENh
bGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpOwotICAgICAgICB1bnNpZ25lZCBmck9mZnNldCA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0
QXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworICAgICAgICB1
bnNpZ25lZCBmck9mZnNldCA9IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBh
cmdOdW0gPSAwOyBhcmdOdW0gPCBhcmdDb3VudDsgKythcmdOdW0pIHsKICAgICAgICAgICAgIFR5
cGUgYXJnVHlwZSA9IHNpZ25hdHVyZS0+YXJndW1lbnQoYXJnTnVtKTsKICAgICAgICAgICAgIHN3
aXRjaCAoYXJnVHlwZSkgewpAQCAtMjAxLDcgKzIwMiw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgd2FzbVRvSnMoVk0KICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgY2FzZSBJMzI6CiAgICAg
ICAgICAgICAgICAgLy8gU2tpcHBlZDogaGFuZGxlZCBhYm92ZS4KLSAgICAgICAgICAgICAgICBp
ZiAobWFyc2hhbGxlZEdQUnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKKyAgICAgICAgICAg
ICAgICBpZiAobWFyc2hhbGxlZEdQUnMgPj0gd2FzbUNDLm1fZ3ByQXJncy5zaXplKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CiAgICAgICAgICAg
ICAgICAgKyttYXJzaGFsbGVkR1BSczsKICAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZU9mZnNl
dCArPSBzaXplb2YoUmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuLmNwcAkocmV2aXNpb24gMjEzNTk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBQ
bGFuOjpydW4oc3RkOjpvcHRpb25hbDxNZW1vcnk6Ok1vZAogICAgICAgICAgICAgQVNTRVJUKHZh
bGlkYXRlRnVuY3Rpb24obV92bSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25h
dHVyZSwgKm1fbW9kdWxlSW5mb3JtYXRpb24sIG1fbW9kdWxlU2lnbmF0dXJlSW5kaWNlc1RvVW5p
cXVlZFNpZ25hdHVyZUluZGljZXMpKTsKIAogICAgICAgICAgICAgbV91bmxpbmtlZFdhc21Ub1dh
c21DYWxsc1tmdW5jdGlvbkluZGV4XSA9IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPigp
OwotICAgICAgICAgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBp
bGUoKm1fdm0sIG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XSwgZnVuY3Rpb25T
dGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVyZSwgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxs
c1tmdW5jdGlvbkluZGV4XSwgKm1fbW9kdWxlSW5mb3JtYXRpb24sIG1fbW9kdWxlU2lnbmF0dXJl
SW5kaWNlc1RvVW5pcXVlZFNpZ25hdHVyZUluZGljZXMpOworICAgICAgICAgICAgYXV0byBwYXJz
ZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBpbGUoKm1fdm0sIG1fY29tcGlsYXRpb25D
b250ZXh0c1tmdW5jdGlvbkluZGV4XSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNp
Z25hdHVyZSwgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgKm1fbW9k
dWxlSW5mb3JtYXRpb24sIG1fbW9kdWxlU2lnbmF0dXJlSW5kaWNlc1RvVW5pcXVlZFNpZ25hdHVy
ZUluZGljZXMsIGZ1bmN0aW9uSW5kZXgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXBh
cnNlQW5kQ29tcGlsZVJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAJKHJldmlzaW9uIDIxMzU5NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDExICs2NCwxMSBAQCBKU1dlYkFzc2VtYmx5VGFibGU6OkpTV2ViQXNzZW1i
bHlUYWJsZShWCiAgICAgLy8gRklYTUU6IEl0IG1pZ2h0IGJlIHdvcnRoIHRyeWluZyB0byBwcmUt
YWxsb2NhdGUgbWF4aW11bSBoZXJlLiBUaGUgc3BlYyByZWNvbW1lbmRzIGRvaW5nIHNvLgogICAg
IC8vIEJ1dCBmb3Igbm93LCB3ZSdyZSBub3QgZG9pbmcgdGhhdC4KICAgICBtX2Z1bmN0aW9ucyA9
IE1hbGxvY1B0cjxXYXNtOjpDYWxsYWJsZUZ1bmN0aW9uPjo6bWFsbG9jKHNpemVvZihXYXNtOjpD
YWxsYWJsZUZ1bmN0aW9uKSAqIHN0YXRpY19jYXN0PHNpemVfdD4obV9zaXplKSk7Ci0gICAgbV9q
c0Z1bmN0aW9ucyA9IE1hbGxvY1B0cjxXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlGdW5jdGlvbj4+
OjptYWxsb2Moc2l6ZW9mKFdyaXRlQmFycmllcjxXZWJBc3NlbWJseUZ1bmN0aW9uPikgKiBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fc2l6ZSkpOworICAgIG1fanNGdW5jdGlvbnMgPSBNYWxsb2NQdHI8
V3JpdGVCYXJyaWVyPEpTQ2VsbD4+OjptYWxsb2Moc2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+
KSAqIHN0YXRpY19jYXN0PHNpemVfdD4obV9zaXplKSk7CiAgICAgZm9yICh1aW50MzJfdCBpID0g
MDsgaSA8IG1fc2l6ZTsgKytpKSB7CiAgICAgICAgIG5ldyAoJm1fZnVuY3Rpb25zLmdldCgpW2ld
KSBXYXNtOjpDYWxsYWJsZUZ1bmN0aW9uKCk7CiAgICAgICAgIEFTU0VSVChtX2Z1bmN0aW9ucy5n
ZXQoKVtpXS5zaWduYXR1cmVJbmRleCA9PSBXYXNtOjpTaWduYXR1cmU6OmludmFsaWRJbmRleCk7
IC8vIFdlIHJlbHkgb24gdGhpcyBpbiBjb21waWxlZCBjb2RlLgotICAgICAgICBuZXcgKCZtX2pz
RnVuY3Rpb25zLmdldCgpW2ldKSBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlGdW5jdGlvbj4oKTsK
KyAgICAgICAgbmV3ICgmbV9qc0Z1bmN0aW9ucy5nZXQoKVtpXSkgV3JpdGVCYXJyaWVyPEpTQ2Vs
bD4oKTsKICAgICB9CiB9CiAKQEAgLTEwNiwxMSArMTA2LDExIEBAIGJvb2wgSlNXZWJBc3NlbWJs
eVRhYmxlOjpncm93KHVpbnQzMl90IG4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9m
dW5jdGlvbnMucmVhbGxvYyhzaXplb2YoV2FzbTo6Q2FsbGFibGVGdW5jdGlvbikgKiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG5ld1NpemUpKTsKLSAgICBtX2pzRnVuY3Rpb25zLnJlYWxsb2Moc2l6ZW9m
KFdyaXRlQmFycmllcjxXZWJBc3NlbWJseUZ1bmN0aW9uPikgKiBzdGF0aWNfY2FzdDxzaXplX3Q+
KG5ld1NpemUpKTsKKyAgICBtX2pzRnVuY3Rpb25zLnJlYWxsb2Moc2l6ZW9mKFdyaXRlQmFycmll
cjxKU0NlbGw+KSAqIHN0YXRpY19jYXN0PHNpemVfdD4obmV3U2l6ZSkpOwogCiAgICAgZm9yICh1
aW50MzJfdCBpID0gbV9zaXplOyBpIDwgbmV3U2l6ZTsgKytpKSB7CiAgICAgICAgIG5ldyAoJm1f
ZnVuY3Rpb25zLmdldCgpW2ldKSBXYXNtOjpDYWxsYWJsZUZ1bmN0aW9uKCk7Ci0gICAgICAgIG5l
dyAoJm1fanNGdW5jdGlvbnMuZ2V0KClbaV0pIFdyaXRlQmFycmllcjxXZWJBc3NlbWJseUZ1bmN0
aW9uPigpOworICAgICAgICBuZXcgKCZtX2pzRnVuY3Rpb25zLmdldCgpW2ldKSBXcml0ZUJhcnJp
ZXI8SlNDZWxsPigpOwogICAgIH0KICAgICBtX3NpemUgPSBuZXdTaXplOwogICAgIHJldHVybiB0
cnVlOwpAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgSlNXZWJBc3NlbWJseVRhYmxlOjpncm93KHVp
bnQzMl90IG4KIHZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjpjbGVhckZ1bmN0aW9uKHVpbnQzMl90
IGluZGV4KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4IDwgbV9zaXplKTsKLSAgICBtX2pz
RnVuY3Rpb25zLmdldCgpW2luZGV4XSA9IFdyaXRlQmFycmllcjxXZWJBc3NlbWJseUZ1bmN0aW9u
PigpOworICAgIG1fanNGdW5jdGlvbnMuZ2V0KClbaW5kZXhdID0gV3JpdGVCYXJyaWVyPEpTQ2Vs
bD4oKTsKICAgICBtX2Z1bmN0aW9ucy5nZXQoKVtpbmRleF0gPSBXYXNtOjpDYWxsYWJsZUZ1bmN0
aW9uKCk7CiAgICAgQVNTRVJUKG1fZnVuY3Rpb25zLmdldCgpW2luZGV4XS5zaWduYXR1cmVJbmRl
eCA9PSBXYXNtOjpTaWduYXR1cmU6OmludmFsaWRJbmRleCk7IC8vIFdlIHJlbHkgb24gdGhpcyBp
biBjb21waWxlZCBjb2RlLgogfQpAQCAtMTMxLDYgKzEzMSwxMyBAQCB2b2lkIEpTV2ViQXNzZW1i
bHlUYWJsZTo6c2V0RnVuY3Rpb24oVk0mCiAgICAgbV9mdW5jdGlvbnMuZ2V0KClbaW5kZXhdID0g
V2FzbTo6Q2FsbGFibGVGdW5jdGlvbihmdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKSwgZnVuY3Rp
b24tPndhc21FbnRyeXBvaW50KCkpOwogfQogCit2b2lkIEpTV2ViQXNzZW1ibHlUYWJsZTo6c2V0
RnVuY3Rpb24oVk0mIHZtLCB1aW50MzJfdCBpbmRleCwgV2FzbTo6Q2FsbGFibGVGdW5jdGlvbiBm
LCBKU0NlbGwqIGNlbGwpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBtX3NpemUpOwor
ICAgIG1fanNGdW5jdGlvbnMuZ2V0KClbaW5kZXhdLnNldCh2bSwgdGhpcywgY2VsbCk7CisgICAg
bV9mdW5jdGlvbnMuZ2V0KClbaW5kZXhdID0gZjsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAkocmV2aXNpb24gMjEzNTk3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIldhc21Gb3Jt
YXQuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL01h
bGxvY1B0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotbmFtZXNwYWNlIFdhc20gewotc3RydWN0
IENhbGxhYmxlRnVuY3Rpb247Ci19Ci0KIGNsYXNzIEpTV2ViQXNzZW1ibHlUYWJsZSA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0
aWJsZU9iamVjdCBCYXNlOwpAQCAtNTAsMTMgKzQ3LDE0IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CiAg
ICAgdWludDMyX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgZ3Jv
dyh1aW50MzJfdCBuZXdTaXplKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgV2ViQXNzZW1ibHlG
dW5jdGlvbiogZ2V0RnVuY3Rpb24odWludDMyX3QgaW5kZXgpCisgICAgSlNDZWxsKiBnZXRGdW5j
dGlvbih1aW50MzJfdCBpbmRleCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4
IDwgbV9zaXplKTsKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlvbnMuZ2V0KClbaW5kZXhdLmdl
dCgpOwogICAgIH0KICAgICB2b2lkIGNsZWFyRnVuY3Rpb24odWludDMyX3QgaW5kZXgpOwogICAg
IHZvaWQgc2V0RnVuY3Rpb24oVk0mLCB1aW50MzJfdCBpbmRleCwgV2ViQXNzZW1ibHlGdW5jdGlv
biopOworICAgIHZvaWQgc2V0RnVuY3Rpb24oVk0mLCB1aW50MzJfdCBpbmRleCwgV2FzbTo6Q2Fs
bGFibGVGdW5jdGlvbiwgSlNDZWxsKik7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
U2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5VGFibGUsIG1fc2l6
ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRnVuY3Rpb25zKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlUYWJsZSwgbV9mdW5jdGlvbnMpOyB9CkBAIC03
NCw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgTWFsbG9jUHRyPFdhc206OkNhbGxhYmxlRnVuY3Rp
b24+IG1fZnVuY3Rpb25zOwotICAgIE1hbGxvY1B0cjxXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlG
dW5jdGlvbj4+IG1fanNGdW5jdGlvbnM7CisgICAgTWFsbG9jUHRyPFdyaXRlQmFycmllcjxKU0Nl
bGw+PiBtX2pzRnVuY3Rpb25zOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4aW11
bTsKICAgICB1aW50MzJfdCBtX3NpemU7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIx
MzU5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIGNvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpzX2kKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIC8v
ZGF0YUxvZ0xuKCJTYWFtOiBlbnRlcmluZyB3YXNtIik7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgV2ViQXNz
ZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxXZWJBc3NlbWJseUZ1
bmN0aW9uKj4odm0sIGV4ZWMtPmpzQ2FsbGVlKCkpOwpAQCAtODEsNyArODIsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAgIEpTVmFsdWUgYXJnID0g
ZXhlYy0+YXJndW1lbnQoYXJnSW5kZXgpOwogICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJn
dW1lbnQoYXJnSW5kZXgpKSB7CiAgICAgICAgIGNhc2UgV2FzbTo6STMyOgotICAgICAgICAgICAg
YXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGFyZy50b0ludDMyKGV4ZWMpKTsKKyAgICAgICAgICAgIGFy
ZyA9IEpTVmFsdWU6OmRlY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGFyZy50b0ludDMyKGV4ZWMpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV2FzbTo6RjMyOgogICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2RlKGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oYXJnLnRvRmxvYXQoZXhlYykpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjEzNTk3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogV2ViQXNz
ZW1ibHlJbnN0YW4KICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGluc3RhbmNlU3RydWN0dXJlLCBqc01vZHVsZSwg
bW9kdWxlUmVjb3JkLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYykpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKLQogICAgIC8vIExldCBmdW5jcywgbWVt
b3JpZXMgYW5kIHRhYmxlcyBiZSBpbml0aWFsbHktZW1wdHkgbGlzdHMgb2YgY2FsbGFibGUgSmF2
YVNjcmlwdCBvYmplY3RzLCBXZWJBc3NlbWJseS5NZW1vcnkgb2JqZWN0cyBhbmQgV2ViQXNzZW1i
bHkuVGFibGUgb2JqZWN0cywgcmVzcGVjdGl2ZWx5LgogICAgIC8vIExldCBpbXBvcnRzIGJlIGFu
IGluaXRpYWxseS1lbXB0eSBsaXN0IG9mIGV4dGVybmFsIHZhbHVlcy4KICAgICB1bnNpZ25lZCBu
dW1JbXBvcnRGdW5jdGlvbnMgPSAwOwpAQCAtMTQ1LDcgKzE0NCwxMiBAQCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqIFdlYkFzc2VtYmx5SW5zdGFuCiAgICAgICAgICAgICAvLyBOb3RlOiBkb25lIGFz
IHBhcnQgb2YgUGxhbiBjb21waWxhdGlvbi4KICAgICAgICAgICAgIC8vIGl2LiBBcHBlbmQgdiB0
byBmdW5jcy4KICAgICAgICAgICAgIC8vIE5vdGU6IGFkZGluZyB0aGUgSlNDZWxsIHRvIHRoZSBp
bnN0YW5jZSBsaXN0IGZ1bGZpbGxzIGNsb3N1cmUgcmVxdWlyZW1lbnRzIGIuIGFib3ZlICh0aGUg
V2ViQXNzZW1ibHkuSW5zdGFuY2Ugd2lsIGJlIGtlcHQgYWxpdmUpIGFuZCB2LiBiZWxvdyAodGhl
IEpTRnVuY3Rpb24pLgotICAgICAgICAgICAgaW5zdGFuY2UtPnNldEltcG9ydEZ1bmN0aW9uKHZt
LCBjZWxsLCBudW1JbXBvcnRGdW5jdGlvbnMrKyk7CisgICAgICAgICAgICAvL2luc3RhbmNlLT5z
ZXRJbXBvcnRGdW5jdGlvbih2bSwgY2VsbCwgbnVtSW1wb3J0RnVuY3Rpb25zKyspOworICAgICAg
ICAgICAgLy9VTlVTRURfUEFSQU0obnVtSW1wb3J0RnVuY3Rpb25zKTsKKyAgICAgICAgICAgIGlm
IChpbXBvcnQua2luZEluZGV4ICE9IG51bUltcG9ydEZ1bmN0aW9ucysrKSB7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJUaGV5J3JlIG5vdCB0aGUgc2FtZSBudW1iZXIiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGluc3RhbmNlLT5zZXRJbXBvcnRGdW5jdGlvbih2bSwgY2VsbCwg
aW1wb3J0LmtpbmRJbmRleCk7CiAgICAgICAgICAgICAvLyB2LiBBcHBlbmQgY2xvc3VyZSB0byBp
bXBvcnRzLgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxNiw2ICsyMjAsNyBA
QCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIFdlYkFzc2VtYmx5SW5zdGFuCiAgICAgICAgICAgICBp
ZiAoIXZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihj
cmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIHZtLCBBU0NJSUxpdGVyYWwoImltcG9y
dGVkIGdsb2JhbCBtdXN0IGJlIGEgbnVtYmVyIikpKTsKICAgICAgICAgICAgIC8vIGlpaS4gQXBw
ZW5kIFRvV2ViQXNzZW1ibHlWYWx1ZSh2KSB0byBpbXBvcnRzLgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobnVtSW1wb3J0R2xvYmFscyA9PSBpbXBvcnQua2luZEluZGV4KTsKICAgICAgICAg
ICAgIHN3aXRjaCAobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50
eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdhc206OkkzMjoKICAgICAgICAgICAgICAgICBpbnN0
YW5jZS0+c2V0R2xvYmFsKG51bUltcG9ydEdsb2JhbHMrKywgdmFsdWUudG9JbnQzMihleGVjKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJl
Y29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMTM1OTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0Miw4ICsyNDIsMTggQEAgSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6ZXZhbHVhdAogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjU1MTAKICAgICAgICAgICAgICAgICB1aW50MzJfdCBmdW5jdGlvbklu
ZGV4ID0gZWxlbWVudC5mdW5jdGlvbkluZGljZXNbaV07CiAgICAgICAgICAgICAgICAgaWYgKGZ1
bmN0aW9uSW5kZXggPCBjb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKSkgewotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKAotICAgICAgICAgICAgICAgICAg
ICAgICAgdGhyb3dWTVJhbmdlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkVsZW1l
bnQgaXMgc2V0dGluZyB0aGUgdGFibGUgdmFsdWUgd2l0aCBhbiBpbXBvcnQuIFRoaXMgaXMgbm90
IHlldCBpbXBsZW1lbnRlZC4gRklYTUUuIikpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNDZWxs
KiBjZWxsID0gbV9pbnN0YW5jZS0+aW1wb3J0RnVuY3Rpb24oZnVuY3Rpb25JbmRleCktPmdldCgp
OworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVHlwZSBjaGVjayB0aGlzPworICAgICAg
ICAgICAgICAgICAgICBpZiAoV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFt
aWNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPih2bSwgY2VsbCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRhYmxlLT5zZXRGdW5jdGlvbih2bSwgdGFibGVJbmRleCwgZnVuY3Rpb24pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVJbmRleCsrOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICB2b2lkKiBlbnRyeXBvaW50ID0gY29kZUJsb2NrLT5tX3dhc21FeGl0U3R1YnNbZnVuY3Rp
b25JbmRleF0ud2FzbVRvSnMuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgICAg
ICAgICAgICAgIHRhYmxlLT5zZXRGdW5jdGlvbih2bSwgdGFibGVJbmRleCwgV2FzbTo6Q2FsbGFi
bGVGdW5jdGlvbihtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShm
dW5jdGlvbkluZGV4KSwgZW50cnlwb2ludCksIGNlbGwpOworICAgICAgICAgICAgICAgICAgICB0
YWJsZUluZGV4Kys7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlDYWxsZWUqIGpzRW50cnlwb2lu
dENhbGxlZSA9IGNvZGVCbG9jay0+anNFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZShmdW5jdGlvbkluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMTM1OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHkKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKLSAgICBpZiAoV2ViQXNzZW1ibHlGdW5jdGlvbiogcmVzdWx0ID0gdGFibGUtPmdl
dEZ1bmN0aW9uKGluZGV4KSkKKyAgICBpZiAoSlNDZWxsKiByZXN1bHQgPSB0YWJsZS0+Z2V0RnVu
Y3Rpb24oaW5kZXgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiB9CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJ
KHJldmlzaW9uIDIxMzU5NykKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5OCw3ICs4OTgsNyBAQAogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpIHx8IChDUFUoQVJNX1RIVU1CMikgJiYgUExBVEZPUk0oSU9TKSkpICYmIEVO
QUJMRShKSVQpICYmIE9TKERBUldJTikgJiYgIWRlZmluZWQoTkRFQlVHKQogI2RlZmluZSBFTkFC
TEVfTUFTTV9QUk9CRSAxCiAjZWxzZQotI2RlZmluZSBFTkFCTEVfTUFTTV9QUk9CRSAwCisjZGVm
aW5lIEVOQUJMRV9NQVNNX1BST0JFIDEKICNlbmRpZgogCiAjaWZuZGVmIEVOQUJMRV9FWENFUFRJ
T05fU0NPUEVfVkVSSUZJQ0FUSU9OCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303889</attachid>
            <date>2017-03-08 19:12:33 -0800</date>
            <delta_ts>2017-03-09 11:18:38 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>15717</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTM2MjApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE3LTAzLTA4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBNYWtlIHRoZSBVbml0eSBBbmdyeUJvdHMgZGVt
byBydW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2FzbS9mdW5jdGlvbi10ZXN0cy9tYW55LWFyZ3VtZW50cy10by1mdW5jdGlvbi5qczogQWRkZWQu
CisgICAgICAgIChpbXBvcnQuQnVpbGRlci5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmltcG9y
dC5hcy5hc3NlcnQuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5JMzJDb25zdC4wLkkzMkNvbnN0
LjEuSTMyQ29uc3QuMi5JMzJDb25zdC4zLkkzMkNvbnN0LjQuSTMyQ29uc3QuNS5JMzJDb25zdC42
LkkzMkNvbnN0LjcuSTMyQ29uc3QuOC5JMzJDb25zdC45LkkzMkNvbnN0LjEwLkkzMkNvbnN0LjEx
LkkzMkNvbnN0LjEyLkkzMkNvbnN0LjEzLkkzMkNvbnN0LjE0LkkzMkNvbnN0LjE1LkkzMkNvbnN0
LjE2LkkzMkNvbnN0LjE3LkNhbGwuMC5SZXR1cm4uRW5kLkVuZC5mb28pOgorICAgICAgICAoaS5p
bnN0YW5jZS5leHBvcnRzLmYwLkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYz
MkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNv
bnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0LkYzMkNvbnN0
LkYzMkNvbnN0LkNhbGwuUmV0dXJuLkVuZC5FbmQuZm9vKToKKyAgICAgICAgKGkuaW5zdGFuY2Uu
ZXhwb3J0cy5mMCk6CisgICAgICAgIChpbnN0YW5jZS5leHBvcnRzLmYwLkdldExvY2FsLkdldExv
Y2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2Fs
LkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkdl
dExvY2FsLkdldExvY2FsLkdldExvY2FsLkdldExvY2FsLkNhbGwuUmV0dXJuLkVuZC5FbmQuZm9v
KToKKyAgICAgICAgKGluc3RhbmNlLmV4cG9ydHMuZjApOgorCiAyMDE3LTAzLTA2ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBJbXBsZW1l
bnQgdGhlIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlIEFQSQpJbmRleDogSlNUZXN0cy93YXNtL2Z1
bmN0aW9uLXRlc3RzL21hbnktYXJndW1lbnRzLXRvLWZ1bmN0aW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9tYW55LWFyZ3VtZW50cy10by1mdW5jdGlvbi5q
cwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbWFueS1hcmd1
bWVudHMtdG8tZnVuY3Rpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODYgQEAKK2lt
cG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJv
bSAnLi4vYXNzZXJ0LmpzJworCit7CisgICAgY29uc3QgYiA9IG5ldyBCdWlsZGVyKCkKKyAgICAg
ICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkuRnVuY3Rpb24oImltcCIsICJmdW5j
IiwgeyBwYXJhbXM6IFsiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAi
aTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJpMzIiLCAiaTMyIiwgImkzMiIsICJp
MzIiLCAiaTMyIiwgImkzMiIsICJpMzIiXSwgcmV0OiJpMzIiIH0pLkVuZCgpCisgICAgICAgIC5G
dW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKS5GdW5jdGlvbigiZjAiKS5FbmQoKQor
ICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImYwIiwgeyBwYXJhbXM6IFtd
LCByZXQ6ICJpMzIiIH0pCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDApCisgICAgICAgICAg
ICAgICAgLkkzMkNvbnN0KDEpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDIpCisgICAgICAg
ICAgICAgICAgLkkzMkNvbnN0KDMpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDQpCisgICAg
ICAgICAgICAgICAgLkkzMkNvbnN0KDUpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDYpCisg
ICAgICAgICAgICAgICAgLkkzMkNvbnN0KDcpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDgp
CisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDkpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0
KDEwKQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgxMSkKKyAgICAgICAgICAgICAgICAuSTMy
Q29uc3QoMTIpCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDEzKQorICAgICAgICAgICAgICAg
IC5JMzJDb25zdCgxNCkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoMTUpCisgICAgICAgICAg
ICAgICAgLkkzMkNvbnN0KDE2KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCgxNykKKyAgICAg
ICAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAgICAgICAgIC5SZXR1cm4oKQorICAgICAgICAg
ICAgLkVuZCgpCisgICAgICAgIC5FbmQoKQorCisgICAgZnVuY3Rpb24gZm9vKC4uLmFyZ3MpIHsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAg
ICAgICBpZiAoYXJnc1tpXSAhPT0gaSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkJhZCEiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbXAgPSB7aW1wOiB7ZnVuYzog
Zm9vfX0KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShiLldlYkFzc2VtYmx5KCkuZ2V0KCkpLCBpbXApOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspCisgICAgICAgIGluc3RhbmNlLmV4cG9ydHMuZjAoKTsK
K30KKworeworICAgIGNvbnN0IGIgPSBuZXcgQnVpbGRlcigpCisgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgLkltcG9ydCgpLkZ1bmN0aW9uKCJpbXAiLCAiZnVuYyIsIHsgcGFyYW1zOiBb
ImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAi
ZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJm
MzIiLCAiZjMyIl0sIHJldDoiZjMyIiB9KS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQo
KQorICAgICAgICAuRXhwb3J0KCkuRnVuY3Rpb24oImYwIikuRW5kKCkKKyAgICAgICAgLkNvZGUo
KQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmMCIsIHsgcGFyYW1zOiBbXSwgcmV0OiAiZjMyIiB9
KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCgwLjUpCisgICAgICAgICAgICAgICAgLkYzMkNv
bnN0KDEuNSkKKyAgICAgICAgICAgICAgICAuRjMyQ29uc3QoMi41KQorICAgICAgICAgICAgICAg
IC5GMzJDb25zdCgzLjUpCisgICAgICAgICAgICAgICAgLkYzMkNvbnN0KDQuNSkKKyAgICAgICAg
ICAgICAgICAuRjMyQ29uc3QoNS41KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCg2LjUpCisg
ICAgICAgICAgICAgICAgLkYzMkNvbnN0KDcuNSkKKyAgICAgICAgICAgICAgICAuRjMyQ29uc3Qo
OC41KQorICAgICAgICAgICAgICAgIC5GMzJDb25zdCg5LjUpCisgICAgICAgICAgICAgICAgLkYz
MkNvbnN0KDEwLjUpCisgICAgICAgICAgICAgICAgLkYzMkNvbnN0KDExLjUpCisgICAgICAgICAg
ICAgICAgLkYzMkNvbnN0KDEyLjUpCisgICAgICAgICAgICAgICAgLkYzMkNvbnN0KDEzLjUpCisg
ICAgICAgICAgICAgICAgLkYzMkNvbnN0KDE0LjUpCisgICAgICAgICAgICAgICAgLkYzMkNvbnN0
KDE1LjUpCisgICAgICAgICAgICAgICAgLkYzMkNvbnN0KDE2LjUpCisgICAgICAgICAgICAgICAg
LkYzMkNvbnN0KDE3LjUpCisgICAgICAgICAgICAgICAgLkNhbGwoMCkKKyAgICAgICAgICAgICAg
ICAuUmV0dXJuKCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCkKKworICAgIGZ1
bmN0aW9uIGZvbyguLi5hcmdzKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGFyZ3NbaV0gIT09IChpICsgMC41KSkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCEiKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCBpbXAgPSB7aW1wOiB7ZnVuYzogZm9vfX0KKyAgICBsZXQgaW5zdGFuY2UgPSBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiLldlYkFzc2Vt
Ymx5KCkuZ2V0KCkpLCBpbXApOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspCisg
ICAgICAgIGluc3RhbmNlLmV4cG9ydHMuZjAoKTsKK30KKworeworICAgIGNvbnN0IGIgPSBuZXcg
QnVpbGRlcigpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpLkZ1bmN0
aW9uKCJpbXAiLCAiZnVuYyIsIHsgcGFyYW1zOiBbImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIs
ICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwg
ImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIl0sIHJldDoiZjMyIiB9KS5F
bmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhwb3J0KCkuRnVuY3Rp
b24oImYwIikuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJm
MCIsIHsgcGFyYW1zOiBbImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwg
ImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIiwgImYzMiIsICJmMzIiLCAi
ZjMyIiwgImYzMiIsICJmMzIiLCAiZjMyIl0gLCByZXQ6ICJmMzIiIH0pCisgICAgICAgICAgICAg
ICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDEpCisgICAgICAgICAg
ICAgICAgLkdldExvY2FsKDIpCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDMpCisgICAgICAg
ICAgICAgICAgLkdldExvY2FsKDQpCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDUpCisgICAg
ICAgICAgICAgICAgLkdldExvY2FsKDYpCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDcpCisg
ICAgICAgICAgICAgICAgLkdldExvY2FsKDgpCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDkp
CisgICAgICAgICAgICAgICAgLkdldExvY2FsKDEwKQorICAgICAgICAgICAgICAgIC5HZXRMb2Nh
bCgxMSkKKyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMTIpCisgICAgICAgICAgICAgICAgLkdl
dExvY2FsKDEzKQorICAgICAgICAgICAgICAgIC5HZXRMb2NhbCgxNCkKKyAgICAgICAgICAgICAg
ICAuR2V0TG9jYWwoMTUpCisgICAgICAgICAgICAgICAgLkdldExvY2FsKDE2KQorICAgICAgICAg
ICAgICAgIC5HZXRMb2NhbCgxNykKKyAgICAgICAgICAgICAgICAuQ2FsbCgwKQorICAgICAgICAg
ICAgICAgIC5SZXR1cm4oKQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5FbmQoKQorCisg
ICAgZnVuY3Rpb24gZm9vKC4uLmFyZ3MpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBh
cmdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYXJnc1tpXSAhPT0gaSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCEiKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBpbXAgPSB7aW1wOiB7ZnVuYzogZm9vfX0KKyAgICBsZXQgaW5zdGFuY2UgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiLldlYkFzc2VtYmx5
KCkuZ2V0KCkpLCBpbXApOworICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDE4OyBpKyspCisgICAgICAgIGFyci5wdXNoKGkpOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwOyBpKyspCisgICAgICAgIGluc3RhbmNlLmV4cG9ydHMuZjAoLi4uYXJyKTsKK30KKwor
Cit7CisgICAgbGV0IHNpZ25hdHVyZSA9IFtdOworICAgIGZ1bmN0aW9uIGFkZFR5cGUodCwgaSkg
eworICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGk7IGorKykgeworICAgICAgICAgICAgc2ln
bmF0dXJlLnB1c2godCk7CisgICAgICAgIH0KKyAgICB9CisgICAgYWRkVHlwZSgiaTMyIiwgMTYp
OworICAgIGFkZFR5cGUoImYzMiIsIDE2KTsKKworICAgIGxldCBiID0gbmV3IEJ1aWxkZXIoKQor
ICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5JbXBvcnQoKS5GdW5jdGlvbigiaW1wIiwg
ImZ1bmMiLCB7IHBhcmFtczogc2lnbmF0dXJlLCByZXQ6ImYzMiIgfSkuRW5kKCkKKyAgICAgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpLkZ1bmN0aW9uKCJmMCIpLkVuZCgp
CisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiZjAiLCB7IHBhcmFtczog
c2lnbmF0dXJlICwgcmV0OiAiZjMyIiB9KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8ICgxNiAr
IDE2KTsgaSsrKSB7CisgICAgICAgIGIgPSBiLkdldExvY2FsKGkpOworICAgIH0KKworICAgIGIg
PSBiLkNhbGwoMCkuUmV0dXJuKCkuRW5kKCkuRW5kKCk7CisKKyAgICBmdW5jdGlvbiBmb28oLi4u
YXJncykgeworICAgICAgICBpZiAoYXJncy5sZW5ndGggIT09IDMyKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJCYWQhIikKKworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyBp
KyspIHsKKyAgICAgICAgICAgIGlmIChhcmdzW2ldICE9PSBpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkISIpOworICAgICAgICAgICAgaWYgKGFyZ3NbaSArIDE2XSAhPT0g
KGkgKyAxNiArIDAuNSkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW1wID0ge2ltcDoge2Z1bmM6IGZvb319Cisg
ICAgbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoYi5XZWJBc3NlbWJseSgpLmdldCgpKSwgaW1wKTsKKyAgICBsZXQgYXJyID0gW107
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgICAgICBhcnIucHVzaChpKTsK
KyAgICBmb3IgKGxldCBpID0gMTY7IGkgPCAzMjsgaSsrKQorICAgICAgICBhcnIucHVzaChpICsg
MC41KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKQorICAgICAgICBpbnN0YW5j
ZS5leHBvcnRzLmYwKC4uLmFycik7Cit9CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTM1OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDMtMDggIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IE1ha2UgdGhlIFVuaXR5
IEFuZ3J5Qm90cyBkZW1vIHJ1bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY5MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aHJlZSBidWdzOgorICAgICAgICAxLiBUaGUg
V2FzbUJpbmRpbmcgY29kZSBmb3IgbWFraW5nIGEgSlMgY2FsbCB3YXMgb2ZmCisgICAgICAgIGJ5
IDEgaW4gaXRzIHN0YWNrIGxheW91dCBjb2RlLgorICAgICAgICAyLiBUaGUgV2FzbUJpbmRpbmcg
Y29kZSBoYWQgYSAiPCIgY29tcGFyaXNvbiBpbnN0ZWFkCisgICAgICAgIG9mIGEgIj49IiBjb21w
YXJpc29uLiBUaGlzIHdvdWxkIGNhdXNlIHVzIHRvIGNhbGN1bGF0ZQorICAgICAgICB0aGUgd3Jv
bmcgZnJhbWUgcG9pbnRlciBvZmZzZXQuCisgICAgICAgIDMuIFRoZSBjb2RlIHRvIHJlbG9hZCB3
YXNtIHN0YXRlIGluc2lkZSBCM0lSR2VuZXJhdG9yIGRpZG4ndAorICAgICAgICBwcm9wZXJseSBy
ZXByZXNlbnQgaXRzIGVmZmVjdHMuCisKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20v
V2FzbUJpbmRpbmcuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZUluc3RhbmNlKToKKwog
MjAxNy0wMy0wNyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgU29t
ZSBwbGF0Zm9ybXMgd29uJ3QgYmUgYWJsZSB0byBjcmVhdGUgYSBHUFVEZXZpY2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJl
dmlzaW9uIDIxMzU5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDggKzMwNCwxMCBAQCBzdGF0aWMgdm9p
ZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0CiAgICAgICAgICAgICBjbG9iYmVycy5zZXQo
aW5mby5zaXplUmVnaXN0ZXIpOwogCiAgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBPcmlnaW4oKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpu
b25lKCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsK
KyAgICAgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgICAgICBlZmZl
Y3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIGVmZmVjdHMucmVhZHMgPSBCMzo6SGVh
cFJhbmdlOjp0b3AoKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IGVmZmVjdHM7CiAg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoY2xvYmJlcnMpOwogCiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChpbnN0YW5jZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CkBAIC0xMTMxLDEz
ICsxMTMzLDEyIEBAIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW50ZXJuYWxGdW4KICAg
ICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlci5wYXJzZSgpKTsKIAogICAgIHByb2Nl
ZHVyZS5yZXNldFJlYWNoYWJpbGl0eSgpOwotICAgIHZhbGlkYXRlKHByb2NlZHVyZSwgIkFmdGVy
IHBhcnNpbmc6XG4iKTsKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgdmFsaWRh
dGUocHJvY2VkdXJlLCAiQWZ0ZXIgcGFyc2luZzpcbiIpOwogCi0gICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgIGRhdGFMb2coIlByZSBTU0E6ICIsIHByb2NlZHVyZSk7CisgICAgZGF0YUxvZ0lmKHZl
cmJvc2UsICJQcmUgU1NBOiAiLCBwcm9jZWR1cmUpOwogICAgIGZpeFNTQShwcm9jZWR1cmUpOwot
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKCJQb3N0IFNTQTogIiwgcHJvY2VkdXJl
KTsKKyAgICBkYXRhTG9nSWYodmVyYm9zZSwgIlBvc3QgU1NBOiAiLCBwcm9jZWR1cmUpOwogCiAg
ICAgewogICAgICAgICBCMzo6cHJlcGFyZUZvckdlbmVyYXRpb24ocHJvY2VkdXJlLCBvcHRMZXZl
bCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCShy
ZXZpc2lvbiAyMTM1OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgc3RhdGljIHZvaWQgbWF0ZXJp
YWxpemVJbXBvcnRKU0NlbGwoVk0qIAogCiBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdh
c21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsIFNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4LCB1bnNpZ25lZCBpbXBvcnRJbmRleCkKIHsKKyAgICAvLyBG
SVhNRTogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHByb3Blcmx5IGFic3RyYWN0IGF3YXkgdGhlIGNh
bGxpbmcgY29udmVudGlvbi4KKyAgICAvLyBJdCdkIGJlIHN1cGVyIGVhc3kgdG8gZG8gc286IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MDEKICAgICBjb25zdCBX
YXNtQ2FsbGluZ0NvbnZlbnRpb24mIHdhc21DQyA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOwog
ICAgIGNvbnN0IEpTQ0NhbGxpbmdDb252ZW50aW9uJiBqc0NDID0ganNjQ2FsbGluZ0NvbnZlbnRp
b24oKTsKICAgICBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQodm0sIHNpZ25hdHVyZUluZGV4KTsKQEAgLTEyMSw5ICsxMjMsOSBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNCiAKICAgICAvLyBGSVhNRSBwZXJmb3Jt
IGEgc3RhY2sgY2hlY2sgYmVmb3JlIHVwZGF0aW5nIFNQLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTQ2CiAKLSAgICB1bnNpZ25lZCBudW1iZXJPZlBhcmFtZXRl
cnMgPSBhcmdDb3VudCArIDE7IC8vIFRoZXJlIGlzIGEgInRoaXMiIGFyZ3VtZW50LgotICAgIHVu
c2lnbmVkIG51bWJlck9mUmVnc0ZvckNhbGwgPSBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lz
dGVycyArIG51bWJlck9mUGFyYW1ldGVyczsKLSAgICB1bnNpZ25lZCBudW1iZXJPZkJ5dGVzRm9y
Q2FsbCA9IG51bWJlck9mUmVnc0ZvckNhbGwgKiBzaXplb2YoUmVnaXN0ZXIpIC0gc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpOworICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUGFyYW1ldGVycyA9
IGFyZ0NvdW50ICsgMTsgLy8gVGhlcmUgaXMgYSAidGhpcyIgYXJndW1lbnQuCisgICAgY29uc3Qg
dW5zaWduZWQgbnVtYmVyT2ZSZWdzRm9yQ2FsbCA9IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVn
aXN0ZXJzICsgbnVtYmVyT2ZQYXJhbWV0ZXJzOworICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
Qnl0ZXNGb3JDYWxsID0gbnVtYmVyT2ZSZWdzRm9yQ2FsbCAqIHNpemVvZihSZWdpc3RlcikgLSBz
aXplb2YoQ2FsbGVyRnJhbWVBbmRQQyk7CiAgICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZzZXQg
PSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBudW1iZXJP
ZkJ5dGVzRm9yQ2FsbCk7CiAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKHN0YWNrT2Zmc2V0KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
ICAgICBKSVQ6OkFkZHJlc3MgY2FsbGVlRnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFj
cm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8cHRyZGlmZl90
PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKQEAgLTEzNSw3ICsxMzcsNyBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNCiAgICAgICAgIHVuc2lnbmVkIG1hcnNo
YWxsZWRHUFJzID0gMDsKICAgICAgICAgdW5zaWduZWQgbWFyc2hhbGxlZEZQUnMgPSAwOwogICAg
ICAgICB1bnNpZ25lZCBjYWxsZWVGcmFtZU9mZnNldCA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJn
dW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwotICAgICAgICB1bnNp
Z25lZCBmck9mZnNldCA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworICAgICAgICB1bnNpZ25lZCBmck9mZnNldCA9IENh
bGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdOdW0gPSAwOyBhcmdOdW0gPCBh
cmdDb3VudDsgKythcmdOdW0pIHsKICAgICAgICAgICAgIFR5cGUgYXJnVHlwZSA9IHNpZ25hdHVy
ZS0+YXJndW1lbnQoYXJnTnVtKTsKICAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgewpAQCAt
MTkwLDcgKzE5Miw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0K
ICAgICAgICAgdW5zaWduZWQgbWFyc2hhbGxlZEdQUnMgPSAwOwogICAgICAgICB1bnNpZ25lZCBt
YXJzaGFsbGVkRlBScyA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGNhbGxlZUZyYW1lT2Zmc2V0ID0g
Q2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSk7Ci0gICAgICAgIHVuc2lnbmVkIGZyT2Zmc2V0ID0gQ2FsbEZyYW1lU2xvdDo6Zmly
c3RBcmd1bWVudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAg
IHVuc2lnbmVkIGZyT2Zmc2V0ID0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGFyZ051bSA9IDA7IGFyZ051bSA8IGFyZ0NvdW50OyArK2FyZ051bSkgewogICAgICAgICAgICAg
VHlwZSBhcmdUeXBlID0gc2lnbmF0dXJlLT5hcmd1bWVudChhcmdOdW0pOwogICAgICAgICAgICAg
c3dpdGNoIChhcmdUeXBlKSB7CkBAIC0yMDEsNyArMjAzLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB3YXNtVG9KcyhWTQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAgICAgICAgICBjYXNlIEkzMjoKICAg
ICAgICAgICAgICAgICAvLyBTa2lwcGVkOiBoYW5kbGVkIGFib3ZlLgotICAgICAgICAgICAgICAg
IGlmIChtYXJzaGFsbGVkR1BScyA8IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQorICAgICAgICAg
ICAgICAgIGlmIChtYXJzaGFsbGVkR1BScyA+PSB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKICAg
ICAgICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAg
ICAgICAgICArK21hcnNoYWxsZWRHUFJzOwogICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1lT2Zm
c2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDIxMzU5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw3ICsxMDEsNiBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIFdlYkFzc2VtYmx5SW5zdGFuCiAg
ICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6Y3JlYXRlKHZtLCBpbnN0YW5jZVN0cnVjdHVyZSwganNNb2R1bGUsIG1vZHVsZVJlY29yZC0+
Z2V0TW9kdWxlTmFtZXNwYWNlKGV4ZWMpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIG51bGxwdHIpOwogCi0KICAgICAvLyBMZXQgZnVuY3MsIG1lbW9yaWVzIGFuZCB0YWJs
ZXMgYmUgaW5pdGlhbGx5LWVtcHR5IGxpc3RzIG9mIGNhbGxhYmxlIEphdmFTY3JpcHQgb2JqZWN0
cywgV2ViQXNzZW1ibHkuTWVtb3J5IG9iamVjdHMgYW5kIFdlYkFzc2VtYmx5LlRhYmxlIG9iamVj
dHMsIHJlc3BlY3RpdmVseS4KICAgICAvLyBMZXQgaW1wb3J0cyBiZSBhbiBpbml0aWFsbHktZW1w
dHkgbGlzdCBvZiBleHRlcm5hbCB2YWx1ZXMuCiAgICAgdW5zaWduZWQgbnVtSW1wb3J0RnVuY3Rp
b25zID0gMDsKQEAgLTE0NSw2ICsxNDQsOCBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIFdlYkFz
c2VtYmx5SW5zdGFuCiAgICAgICAgICAgICAvLyBOb3RlOiBkb25lIGFzIHBhcnQgb2YgUGxhbiBj
b21waWxhdGlvbi4KICAgICAgICAgICAgIC8vIGl2LiBBcHBlbmQgdiB0byBmdW5jcy4KICAgICAg
ICAgICAgIC8vIE5vdGU6IGFkZGluZyB0aGUgSlNDZWxsIHRvIHRoZSBpbnN0YW5jZSBsaXN0IGZ1
bGZpbGxzIGNsb3N1cmUgcmVxdWlyZW1lbnRzIGIuIGFib3ZlICh0aGUgV2ViQXNzZW1ibHkuSW5z
dGFuY2Ugd2lsIGJlIGtlcHQgYWxpdmUpIGFuZCB2LiBiZWxvdyAodGhlIEpTRnVuY3Rpb24pLgor
CisgICAgICAgICAgICBBU1NFUlQobnVtSW1wb3J0RnVuY3Rpb25zID09IGltcG9ydC5raW5kSW5k
ZXgpOwogICAgICAgICAgICAgaW5zdGFuY2UtPnNldEltcG9ydEZ1bmN0aW9uKHZtLCBjZWxsLCBu
dW1JbXBvcnRGdW5jdGlvbnMrKyk7CiAgICAgICAgICAgICAvLyB2LiBBcHBlbmQgY2xvc3VyZSB0
byBpbXBvcnRzLgogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTYsNiArMjE3LDcgQEAgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBXZWJBc3NlbWJseUluc3RhbgogICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc051bWJlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCB2bSwgQVNDSUlMaXRlcmFsKCJpbXBvcnRlZCBnbG9i
YWwgbXVzdCBiZSBhIG51bWJlciIpKSk7CiAgICAgICAgICAgICAvLyBpaWkuIEFwcGVuZCBUb1dl
YkFzc2VtYmx5VmFsdWUodikgdG8gaW1wb3J0cy4KKyAgICAgICAgICAgIEFTU0VSVChudW1JbXBv
cnRHbG9iYWxzID09IGltcG9ydC5raW5kSW5kZXgpOwogICAgICAgICAgICAgc3dpdGNoIChtb2R1
bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUpIHsKICAgICAgICAg
ICAgIGNhc2UgV2FzbTo6STMyOgogICAgICAgICAgICAgICAgIGluc3RhbmNlLT5zZXRHbG9iYWwo
bnVtSW1wb3J0R2xvYmFscysrLCB2YWx1ZS50b0ludDMyKGV4ZWMpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>