<?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>156348</bug_id>
          
          <creation_ts>2016-04-07 11:02:47 -0700</creation_ts>
          <short_desc>REGRESSION(r199128): Causes crashes on multiple webpages (Requested by keith_mi_ on #webkit).</short_desc>
          <delta_ts>2016-04-07 11:06:47 -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>New Bugs</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>
          
          <blocked>155351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1181738</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-07 11:02:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/199128 broke the build:
Causes crashes on multiple webpages (Requested by keith_mi_ on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181741</commentid>
    <comment_count>1</comment_count>
      <attachid>275899</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-07 11:03:29 -0700</bug_when>
    <thetext>Created attachment 275899
ROLLOUT of r199128

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181743</commentid>
    <comment_count>2</comment_count>
      <attachid>275899</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-07 11:06:44 -0700</bug_when>
    <thetext>Comment on attachment 275899
ROLLOUT of r199128

Clearing flags on attachment: 275899

Committed r199164: &lt;http://trac.webkit.org/changeset/199164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181744</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-07 11:06:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275899</attachid>
            <date>2016-04-07 11:03:29 -0700</date>
            <delta_ts>2016-04-07 11:06:44 -0700</delta_ts>
            <desc>ROLLOUT of r199128</desc>
            <filename>bug-156348-20160407110332.patch</filename>
            <type>text/plain</type>
            <size>92431</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ODQ0MzEwOGY3MzFmNzAzZTk3Mzc5YmE3N2UyNmZkZWViODYzOGRhLi4wOThlODc1YjI5YzM4NGE0
NGMwOWIxMzQ4OTdlNzY0MmJlNTA1YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wNC0wNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5OTEyOCBhbmQgcjE5
OTE0MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NjM0OAorCisgICAgICAgIENhdXNlcyBjcmFzaGVzIG9uIG11bHRpcGxlIHdlYnBhZ2VzIChSZXF1
ZXN0ZWQgYnkga2VpdGhfbWlfIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVy
dGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltFUzZdIEFkZCBzdXBwb3J0IGZvciBTeW1ib2wu
aXNDb25jYXRTcHJlYWRhYmxlLiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTM1MQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xOTkxMjgKKworICAgICAgICAiVW5yZXZpZXdlZCwgdW5jb21tZW50IGFjY2lkZW50YWxs
eSBjb21tZW50ZWQgbGluZSBpbiB0ZXN0LiIKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTk5MTQxCisKIDIwMTYtMDQtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBSYXRpb25hbGl6ZSB0aGUgaGFuZGxpbmcgb2YgUHV0QnlJZCB0
cmFuc2l0aW9ucyBhIGJpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdlYjg1ZTM4ODBjNWY5YTkwZGE2OWQ3ZWNh
NTBiZWY5ODMzMWJmNDMuLjE5ZGQzMDkwNjc4NmY1YjczOWUwYjg1ZTdiZmE3MDgyMDNhMWZhNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wNC0wNyAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE5OTEyOCBhbmQgcjE5OTE0MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NjM0OAorCisgICAgICAgIENhdXNlcyBjcmFzaGVzIG9uIG11bHRp
cGxlIHdlYnBhZ2VzIChSZXF1ZXN0ZWQgYnkga2VpdGhfbWlfIG9uCisgICAgICAgICN3ZWJraXQp
LgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltFUzZdIEFkZCBz
dXBwb3J0IGZvciBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlLiIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTM1MQorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTkxMjgKKworICAgICAgICAiVW5yZXZpZXdlZCwgdW5j
b21tZW50IGFjY2lkZW50YWxseSBjb21tZW50ZWQgbGluZSBpbiB0ZXN0LiIKKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTk5MTQxCisKIDIwMTYtMDQtMDcgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gT3V0cHV0IFdl
YkNvcmUucGRiIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGFzIFdlYkNvcmUubGliCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDhhYzgyZGE1OWFlZmQ2YTk2NGJkMjA4Y2Y1YzA5NjdkNGQy
MDkyM2QuLjNlNWZmMzFmZTkyOTcxMmUxYjA2N2E3M2VhOWIzNWNlZmQ3YjQ3OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTgzLDcgKzExODMsNiBAQAogCQk1MzcwQjRGNTFC
RjI2MjAyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZS5jcHAgKi87IH07CiAJCTUzNzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGNDFCRjI1RUEyMDA1QzQw
RkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovOyB9
OwogCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovOyB9OwotCQk1MzlGQjhCQTFDOTlEQTdDMDA5NDBG
QTEgLyogSlNBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5o
ICovOyB9OwogCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9j
YXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENTM3MjZFMEUxQzU0ODgwMDIx
RTU0OSAvKiBUcmFjaW5nLmggKi87IH07CiAJCTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAvKiBs
aWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07CkBA
IC0zMzE3LDcgKzMzMTYsNiBAQAogCQk1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFN0MxQjc5MTEwNjAwMEVCRDMz
IC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzkxN0U4MzFCNzkxQ0I4MDAwRUJEMzMgLyogVHlwZWRBcnJheVByb3RvdHlw
ZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IFR5cGVkQXJyYXlQ
cm90b3R5cGUuanM7IHBhdGggPSBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBK
U0FycmF5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0YyNTZFMTFCODdFMjgw
MDBCNEI3NjggLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIElu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkzRDQzQ0NBMEJCRTA2RDg5QzU5NzA3IC8qIE1hcERhdGFJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcERhdGFJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01Njc0LDcgKzU2NzIsNiBAQAogCQkJ
CTcwREMzRTA4MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJ
CTkzQURGQ0U2MENDQkQ3QUMwMEQzMEIwOCAvKiBKU0FycmF5LmNwcCAqLywKIAkJCQk5Mzg3NzJF
NTAzOEJGRTE5MDA4NjM1Q0UgLyogSlNBcnJheS5oICovLAotCQkJCTUzOUZCOEI5MUM5OURBN0Mw
MDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5oICovLAogCQkJCTBGMkI2NkI0MTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0FycmF5QnVmZmVyLmNwcCAqLywKIAkJCQkwRjJCNjZCNTE3QjZCNUFCMDBBN0FF
M0YgLyogSlNBcnJheUJ1ZmZlci5oICovLAogCQkJCTBGMkI2NkI2MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwICovLApAQCAtNzUyMCw3ICs3NTE3LDYgQEAK
IAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBBNzUyMzFCOTRCRkE5MDAxMTA2NjAgLyogSW5mZXJyZWRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZDOTIxMjFCOTRENERGMDA3MURENjYgLyogSW5mZXJyZWRUeXBl
VGFibGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUzOUZCOEJBMUM5OURBN0MwMDk0MEZBMSAvKiBK
U0FycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGOEJERUIxQUQ0Q0Y3MTAwREZF
ODg0IC8qIEluZmVycmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDEwMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBJbml0aWFsaXplVGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTEzRTVCODE4NUI4QkQzMDA3RTk1QUQgLyogSW5qZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90
eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpz
CmluZGV4IDdlNjFlNjg0NjVhMjAyMmI5NzQ5ODEzNzNhMzIwYjI3MThjM2U2ZjguLjFlOGU3MzI4
NzEwZTEyMTFlYjU1ZmYwZWM5YjlhYjk0MDMxODlmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKQEAgLTY0Niw5NCArNjQ2LDYgQEAg
ZnVuY3Rpb24gc29ydChjb21wYXJhdG9yKQogICAgIHJldHVybiBhcnJheTsKIH0KIAotZnVuY3Rp
b24gY29uY2F0U2xvd1BhdGgoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIHZhciBhcmdD
b3VudCA9IGFyZ3VtZW50cy5sZW5ndGg7Ci0gICAgdmFyIHJlc3VsdCA9IG5ldyB0aGlzLnNwZWNp
ZXMoMCk7Ci0gICAgdmFyIHJlc3VsdElzQXJyYXkgPSBAaXNKU0FycmF5KHJlc3VsdCk7Ci0KLSAg
ICB2YXIgY3VycmVudEVsZW1lbnQgPSB0aGlzLmFycmF5OwotICAgIHZhciByZXN1bHRJbmRleCA9
IDA7Ci0gICAgdmFyIGFyZ0luZGV4ID0gMDsKLQotICAgIGRvIHsKLSAgICAgICAgdmFyIHNwcmVh
ZGFibGUgPSBAaXNPYmplY3QoY3VycmVudEVsZW1lbnQpICYmIGN1cnJlbnRFbGVtZW50W0BzeW1i
b2xJc0NvbmNhdFNwcmVhZGFibGVdOwotICAgICAgICBpZiAoKHNwcmVhZGFibGUgPT0gQHVuZGVm
aW5lZCAmJiBAaXNBcnJheShjdXJyZW50RWxlbWVudCkpIHx8IHNwcmVhZGFibGUpIHsKLSAgICAg
ICAgICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoY3VycmVudEVsZW1lbnQubGVuZ3RoKTsKLSAg
ICAgICAgICAgIGlmIChyZXN1bHRJc0FycmF5ICYmIEBpc0pTQXJyYXkoY3VycmVudEVsZW1lbnQp
Ci0gICAgICAgICAgICAgICAgJiYgQGFwcGVuZE1lbWNweShyZXN1bHQsIGN1cnJlbnRFbGVtZW50
KSkgewotCi0gICAgICAgICAgICAgICAgcmVzdWx0SW5kZXggKz0gbGVuZ3RoOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobGVuZ3RoICsgcmVzdWx0SW5kZXggPiBA
TUFYX1NBRkVfSU5URUdFUikKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgQFR5cGVFcnJvcigi
bGVuZ3RoIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIHNhZmUgaW50ZWdlciIpOwotICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgaW4gY3VycmVudEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBAcHV0
QnlWYWxEaXJlY3QocmVzdWx0LCByZXN1bHRJbmRleCwgY3VycmVudEVsZW1lbnRbaV0pOwotICAg
ICAgICAgICAgICAgICAgICByZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHRJbmRleCA+
PSBATUFYX1NBRkVfSU5URUdFUikKLSAgICAgICAgICAgICAgICB0aHJvdyBAVHlwZUVycm9yKCJs
ZW5ndGggZXhjZWVkZWQgdGhlIG1heGltdW0gc2FmZSBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBA
cHV0QnlWYWxEaXJlY3QocmVzdWx0LCByZXN1bHRJbmRleCsrLCBjdXJyZW50RWxlbWVudCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgY3VycmVudEVsZW1lbnQgPSBhcmd1bWVudHNbYXJnSW5kZXhdOwot
ICAgIH0gd2hpbGUgKGFyZ0luZGV4KysgPCBhcmdDb3VudCk7Ci0KLSAgICByZXN1bHQubGVuZ3Ro
ID0gcmVzdWx0SW5kZXg7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnVuY3Rpb24gY29uY2F0
KGZpcnN0KQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICh0aGlzID09IG51bGwpIHsK
LSAgICAgICAgaWYgKHRoaXMgPT09IG51bGwpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiQXJyYXkucHJvdG90eXBlLmNvbmNhdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCIpOwotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmNv
bmNhdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7Ci0gICAgfQotCi0g
ICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKLQotICAgIHZhciBjb25zdHJ1Y3RvcjsKLSAg
ICBpZiAoQGlzQXJyYXkoYXJyYXkpKSB7Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gYXJyYXkuY29u
c3RydWN0b3I7Ci0gICAgICAgIC8vIFdlIGhhdmUgdGhpcyBjaGVjayBzbyB0aGF0IGlmIHNvbWUg
YXJyYXkgZnJvbSBhIGRpZmZlcmVudCBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIC8vIGNhbGxzIHRo
aXMgbWFwIHRoZXkgZG9uJ3QgZ2V0IGFuIGFycmF5IHdpdGggdGhlIEFycmF5LnByb3RvdHlwZSBv
ZiB0aGUKLSAgICAgICAgLy8gb3RoZXIgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgaWYgKEBpc0Fy
cmF5Q29uc3RydWN0b3IoY29uc3RydWN0b3IpICYmIEBBcnJheSAhPT0gY29uc3RydWN0b3IpCi0g
ICAgICAgICAgICBjb25zdHJ1Y3RvciA9IEB1bmRlZmluZWQ7Ci0gICAgICAgIGlmIChAaXNPYmpl
Y3QoY29uc3RydWN0b3IpKSB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9y
W0BzeW1ib2xTcGVjaWVzXTsKLSAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gbnVsbCkK
LSAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IEBBcnJheTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBpZiAoY29uc3RydWN0b3IgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIGNvbnN0cnVjdG9y
ID0gQEFycmF5OwotCi0gICAgdmFyIHJlc3VsdDsKLSAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9
PT0gMQotICAgICAgICAmJiBjb25zdHJ1Y3RvciA9PT0gQEFycmF5Ci0gICAgICAgICYmIEBpc0pT
QXJyYXkoYXJyYXkpCi0gICAgICAgICYmIEBpc0pTQXJyYXkoZmlyc3QpCi0gICAgICAgIC8vIEZJ
WE1FOiB0aGVzZSBnZXRfYnlfaWRzIHNob3VsZCBiZSAiaW4icyBidXQgdXNpbmcgImluIiBoZXJl
IGlzIGEgMTAlIHJlZ3Jlc3Npb24uCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTU1OTAKLSAgICAgICAgJiYgYXJyYXlbQHN5bWJvbElzQ29uY2F0
U3ByZWFkYWJsZV0gPT0gQHVuZGVmaW5lZAotICAgICAgICAmJiBmaXJzdFtAc3ltYm9sSXNDb25j
YXRTcHJlYWRhYmxlXSA9PSBAdW5kZWZpbmVkKSB7Ci0KLSAgICAgICAgcmVzdWx0ID0gQGNvbmNh
dE1lbWNweShhcnJheSwgZmlyc3QpOwotICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKQotICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gQGNvbmNhdFNsb3dQ
YXRoLkBhcHBseSh7IGFycmF5OiBhcnJheSwgc3BlY2llczogY29uc3RydWN0b3IgfSwgYXJndW1l
bnRzKTsKLX0KLQogZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0IC8qLCBlbmQgKi8p
CiB7CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IGQ1ODU0
YjBjMWU0MDY2OWRjZjVmMWE4NDYyMDZhN2JiNjkwNGEyNGEuLmJiYmMzZmZkOWQ5YjFkYTIyMzFj
N2ZlODRhYTEzNjhjNGQxZmU2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTQ5LDEx
ICs0OSw5IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkoVk0mIHZtKQogICAgIG1fYXJyYXlJdGVyYXRpb25LaW5kVmFsdWUuc2V0KG1fdm0sIGpz
TnVtYmVyKEFycmF5SXRlcmF0ZVZhbHVlKSk7CiAgICAgbV9hcnJheUl0ZXJhdGlvbktpbmRLZXlW
YWx1ZS5zZXQobV92bSwganNOdW1iZXIoQXJyYXlJdGVyYXRlS2V5VmFsdWUpKTsKICAgICBtX01B
WF9TVFJJTkdfTEVOR1RILnNldChtX3ZtLCBqc051bWJlcihKU1N0cmluZzo6TWF4TGVuZ3RoKSk7
Ci0gICAgbV9NQVhfU0FGRV9JTlRFR0VSLnNldChtX3ZtLCBqc0RvdWJsZU51bWJlcig5MDA3MTk5
MjU0NzQwOTkxLjApKTsgLy8gMiBeIDUzIC0gMQogICAgIG1fcHJvbWlzZVN0YXRlUGVuZGluZy5z
ZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6U3RhdHVz
OjpQZW5kaW5nKSkpOwogICAgIG1fcHJvbWlzZVN0YXRlRnVsZmlsbGVkLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OkZ1bGZpbGxlZCkp
KTsKICAgICBtX3Byb21pc2VTdGF0ZVJlamVjdGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNQcm9taXNlOjpTdGF0dXM6OlJlamVjdGVkKSkpOwotICAgIG1fc3lt
Ym9sSXNDb25jYXRTcHJlYWRhYmxlLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0
aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+aXNDb25jYXRTcHJlYWRh
YmxlU3ltYm9sLmltcGwoKSkpKTsKICAgICBtX3N5bWJvbEl0ZXJhdG9yLnNldChtX3ZtLCBTeW1i
b2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wuaW1wbCgpKSkpOwogICAgIG1fc3ltYm9sTWF0Y2guc2V0KG1f
dm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5w
cm9wZXJ0eU5hbWVzLT5tYXRjaFN5bWJvbC5pbXBsKCkpKSk7CiAgICAgbV9zeW1ib2xTZWFyY2gu
c2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigq
bV92bS5wcm9wZXJ0eU5hbWVzLT5zZWFyY2hTeW1ib2wuaW1wbCgpKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgKaW5kZXggMDIwNGFmNTIxN2E4ZTZjZWQwOWViN2U3NzY5YzNiNzg2NTg2ZTVkMi4uYmY0
MmEzMWVmM2YwNjI5NDBlODgwYzZkZjRlN2E4M2UwZjc1MTZmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCkBAIC01MSwxMSArNTEsOSBAQCBjbGFzcyBJZGVudGlmaWVyOwogICAgIG1hY3JvKGFycmF5
SXRlcmF0aW9uS2luZFZhbHVlKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kS2V5VmFs
dWUpIFwKICAgICBtYWNybyhNQVhfU1RSSU5HX0xFTkdUSCkgXAotICAgIG1hY3JvKE1BWF9TQUZF
X0lOVEVHRVIpIFwKICAgICBtYWNybyhwcm9taXNlU3RhdGVQZW5kaW5nKSBcCiAgICAgbWFjcm8o
cHJvbWlzZVN0YXRlRnVsZmlsbGVkKSBcCiAgICAgbWFjcm8ocHJvbWlzZVN0YXRlUmVqZWN0ZWQp
IFwKLSAgICBtYWNybyhzeW1ib2xJc0NvbmNhdFNwcmVhZGFibGUpIFwKICAgICBtYWNybyhzeW1i
b2xJdGVyYXRvcikgXAogICAgIG1hY3JvKHN5bWJvbE1hdGNoKSBcCiAgICAgbWFjcm8oc3ltYm9s
U2VhcmNoKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2QyZWU3N2Q0M2U4Y2IyNTdiZjkyYzYy
MzVkNDZjZTAxNzkxYzM0MC4uN2NhNmJiYzFkYjc3YTQyNDA0N2QzNmQ4MjdlZDc0Mzk2OTIzMmE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAKLSNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiREZHQWJz
dHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTk1NiwxMCArOTU1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBjYXNlIElzQXJy
YXlPYmplY3Q6Ci0gICAgY2FzZSBJc0pTQXJyYXk6Ci0gICAgY2FzZSBJc0FycmF5Q29uc3RydWN0
b3I6CisgICAgICAgIAogICAgIGNhc2UgSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBJc0Jvb2xlYW46
CiAgICAgY2FzZSBJc051bWJlcjoKQEAgLTk3MSwyOCArOTY3LDYgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgaWYgKGNoaWxkLnZhbHVlKCkpIHsKICAgICAgICAgICAgIGJvb2wg
Y29uc3RhbnRXYXNTZXQgPSB0cnVlOwogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICBjYXNlIElzQXJyYXlPYmplY3Q6Ci0gICAgICAgICAgICAgICAgaWYgKGNo
aWxkLnZhbHVlKCkuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQu
dmFsdWUoKS5nZXRPYmplY3QoKS0+dHlwZSgpID09IEFycmF5VHlwZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoaWxkLnZhbHVlKCkuZ2V0T2JqZWN0KCktPnR5cGUoKSA9PSBQcm94
eU9iamVjdFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gd2F5
IG9mIGtub3dpbmcgd2hhdCB0eXBlIHdlIGFyZSBwcm94aW5nIHlldC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJc0pTQXJyYXk6Ci0gICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNPYmplY3Qo
KSAmJiBjaGlsZC52YWx1ZSgpLmdldE9iamVjdCgpLT50eXBlKCkgPT0gQXJyYXlUeXBlKSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIElzQXJyYXlDb25zdHJ1Y3Rv
cjoKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFs
dWUoKS5pc09iamVjdCgpICYmIGNoaWxkLnZhbHVlKCkuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbygp
ID09IEFycmF5Q29uc3RydWN0b3I6OmluZm8oKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4oCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkLnZhbHVlKCkuaXND
ZWxsKCkKQEAgLTEwNTUsMjIgKzEwMjksNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAg
ICAgICAKICAgICAgICAgYm9vbCBjb25zdGFudFdhc1NldCA9IGZhbHNlOwogICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgY2FzZSBJc0pTQXJyYXk6Ci0gICAgICAgIGNhc2Ug
SXNBcnJheU9iamVjdDoKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBTcGVjdWxhdGVk
VHlwZSBmb3IgUHJveGllcyB5ZXQgc28gd2UgY2FuJ3QgZG8gYmV0dGVyIGF0IHByb3ZpbmcgZmFs
c2UuCi0gICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+U3BlY0FycmF5KSkgewotICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7Ci0gICAgICAg
ICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiBTcGVjT2Jq
ZWN0KSkgewotICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihmYWxz
ZSkpOwotICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgSXNVbmRlZmluZWQ6CiAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIHRoZSBtYXNxdWVy
YWRlcy1hcy11bmRlZmluZWQgd2F0Y2hwb2ludCB0aGluZ3kuCiAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NDU2CkBAIC0xODI0LDIxICsx
NzgyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhl
Y3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgQVNTRVJUKG5vZGUtPnN0
cnVjdHVyZSgpKTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3Ry
dWN0dXJlKCkpOwogICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVj
dG9yOiB7Ci0gICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGZvck5vZGUobm9k
ZSk7Ci0KLSAgICAgICAgaWYgKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgewotICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKLSAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09iamVjdCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQorICAgICAgICAKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAg
ICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9y
RnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDM1NThkNmE5NmQxOGFjMWFjN2YwNzU0ZGM3ZGYxMDExMTA4ZjZhNzQuLjAw
MThmNmY2Y2FlYjQxOGRmMzBlMjcwNzVhMDdkN2RkMGQ3ZjEzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00NSw3ICs0NSw2IEBA
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUgIk9iamVjdENv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAi
UHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgpAQCAtMjE0MiwzNCAr
MjE0MSw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSog
Y2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBjYXNlIElzQXJyYXlJbnRyaW5zaWM6IHsKLSAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICE9IDIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaW5z
ZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIE5vZGUqIGlzQXJyYXkgPSBhZGRUb0dyYXBoKElzQXJyYXlP
YmplY3QsIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwotICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dE9wZXJhbmQpLCBpc0FycmF5KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
Y2FzZSBJc0pTQXJyYXlJbnRyaW5zaWM6IHsKLSAgICAgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzID09IDIpOwotCi0gICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBO
b2RlKiBpc0FycmF5ID0gYWRkVG9HcmFwaChJc0pTQXJyYXksIE9wSW5mbyhwcmVkaWN0aW9uKSwg
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwotICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBpc0FycmF5KTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgY2FzZSBJc0FycmF5Q29uc3RydWN0b3JJbnRy
aW5zaWM6IHsKLSAgICAgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDIp
OwotCi0gICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBOb2RlKiBpc0FycmF5ID0gYWRk
VG9HcmFwaChJc0FycmF5Q29uc3RydWN0b3IsIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwotICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBpc0FycmF5KTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCiAgICAgY2FzZSBDaGFyQ29kZUF0SW50cmluc2ljOiB7CiAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjU0NSwxNiArMjUxNiw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihy
ZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhhbmRsZSBjb25zdHJ1Y3Rpb24gYXMgd2VsbC4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTU5MQotICAgIGlmIChmdW5j
dGlvbi0+Y2xhc3NJbmZvKCkgPT0gT2JqZWN0Q29uc3RydWN0b3I6OmluZm8oKSAmJiBraW5kID09
IENvZGVGb3JDYWxsKSB7Ci0gICAgICAgIGluc2VydENoZWNrcygpOwotCi0gICAgICAgIE5vZGUq
IHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBnZXQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7Ci0gICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQorICAgIAogICAgIGZvciAodW5zaWduZWQgdHlwZUluZGV4ID0gMDsgdHlwZUlu
ZGV4IDwgTlVNQkVSX09GX1RZUEVEX0FSUkFZX1RZUEVTOyArK3R5cGVJbmRleCkgewogICAgICAg
ICBib29sIHJlc3VsdCA9IGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcigKICAgICAgICAgICAg
IHJlc3VsdE9wZXJhbmQsIGZ1bmN0aW9uLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IGRmNWJkNjdmNjMwNDc5ZDc3ZmY3YjhmNzk1NzczOGIzODViNzYzNTguLjk0MzRhNzZhNzdl
ZDRkNGI2ODRkYzJhNzRjMGYzYzY3ZDZkOTVjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTMsOCArMTUzLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6Ci0gICAgY2FzZSBJc0pTQXJyYXk6Ci0gICAg
Y2FzZSBJc0FycmF5Q29uc3RydWN0b3I6CiAgICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICBjYXNl
IElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgpAQCAtMTk0LDggKzE5Miw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJlYWQoTWF0aERvdFJhbmRvbVN0YXRlKTsKICAg
ICAgICAgd3JpdGUoTWF0aERvdFJhbmRvbVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwotCi0gICAg
Y2FzZSBJc0FycmF5T2JqZWN0OgorICAgICAgICAKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0
eToKICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgR2V0RW51bWVyYWJs
ZUxlbmd0aDoKQEAgLTQxMiw3ICs0MDksNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAg
ICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNl
IENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0
ZVRoaXM6CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggMGVhOTMzMzcwYmVmZWJkMTA5ZjA1YjYxNTQ3YTc1YmRlMjgw
Y2FlMi4uMDBjYjI3ZGFlOGE1ZmYzYTFjMGMyNTY0NDI3NzVhMTY2ZDliNmQ4MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTUxLDkgKzE1MSw2IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE92ZXJyaWRlc0hhc0lu
c3RhbmNlOgogICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIEluc3RhbmNlT2ZDdXN0b206
Ci0gICAgY2FzZSBJc0FycmF5T2JqZWN0OgotICAgIGNhc2UgSXNKU0FycmF5OgotICAgIGNhc2Ug
SXNBcnJheUNvbnN0cnVjdG9yOgogICAgIGNhc2UgSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBJc0Jv
b2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKQEAgLTI0NSw3ICsyNDIsNiBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVu
dHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVDbG9u
ZWRBcmd1bWVudHM6Ci0gICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgY2FzZSBU
b1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCA2MjRhY2YzOWQ1ODA1YWExN2I1YmNjM2MyMzgxMDVlNWRjZmNlMmI0Li4yMjAxYWE0MmY5YjU4
Nzg4ZTA4YjE5NDkyYzliYzk0YzNiMDM1ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEwMzAsMTggKzEwMzAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLQotICAgICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3Rvcjog
ewotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3Qo
KSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVk
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCisg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgICAgIGZpeHVwVG9U
aGlzKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTAyLDkgKzE0OTEsNiBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgY2FzZSBQcm9maWxlV2lsbENh
bGw6CiAgICAgICAgIGNhc2UgUHJvZmlsZURpZENhbGw6Ci0gICAgICAgIGNhc2UgSXNBcnJheU9i
amVjdDoKLSAgICAgICAgY2FzZSBJc0pTQXJyYXk6Ci0gICAgICAgIGNhc2UgSXNBcnJheUNvbnN0
cnVjdG9yOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgICAgICBjYXNlIElzQm9vbGVh
bjoKICAgICAgICAgY2FzZSBJc051bWJlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAppbmRleCAwYzkyNDJkNmJmNTkwZjgyYjZjNWY3NmYyY2IzZWYxMGE1NmMzMmI2Li5l
YzZiNmUxMzZmYzI5YWM2ZTIwYjg0NGIyN2E4ZDEwZGRmNGYxNDVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yOTYsMTEgKzI5Niw2IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhPdmVycmlkZXNIYXNJbnN0YW5jZSwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSW5zdGFuY2VP
ZiwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJbnN0YW5jZU9mQ3VzdG9tLCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKLSAgICBcCi0gICAgLyogSSdkIGxp
a2UgdG8gY2FsbCB0aGlzIElzQXJyYXkgYnV0IHRoZW4gd2UgZ2V0IG5hbWVzcGFjZSBwcm9ibGVt
cyB3aXRoIHRoZSBpbmRleGluZyB0eXBlIG5hbWUuIEFsc28sIGl0IGlzIG1hcmtlZCBtdXN0IGdl
bmVyYXRlIGJlY2F1c2UgaXQgY2FuIHRocm93LiAqLyBcCi0gICAgbWFjcm8oSXNBcnJheU9iamVj
dCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRCb29sZWFuKSBcCi0gICAgbWFjcm8oSXNK
U0FycmF5LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAotICAgIG1hY3JvKElzQXJyYXlDb25zdHJ1Y3Rv
ciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc1VuZGVmaW5lZCwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhJc0Jvb2xlYW4sIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAg
ICAgbWFjcm8oSXNOdW1iZXIsIE5vZGVSZXN1bHRCb29sZWFuKSBcCkBAIC0zMTIsNyArMzA3LDYg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKExvZ2ljYWxOb3Qs
IE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVG9QcmltaXRpdmUsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUb1N0cmluZywgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1hY3JvKENhbGxPYmplY3RDb25zdHJ1Y3Rvciwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTmV3U3RyaW5nT2JqZWN0LCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhNYWtlUm9wZSwgTm9kZVJlc3VsdEpTKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlYWJmZDcwMWFh
OWYwZGJmZGM3MmNhMmY3YzQxYjM3OTlkODZjNzAyLi4wZWU0YzQ1ZGQ5NjMyNTdjZjg2MTJlODI5
NzZjOTFhNGNiMGRlYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJERkdPcGVyYXRpb25zLmgiCiAKLSNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtMTc3LDE5ICsxNzYsNiBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBj
b25zdHJ1Y3RvcgogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKIH0KIAot
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFRhcmdldCkKLXsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLQotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFRhcmdldCk7Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgp
KTsKLQotICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUo
KSk7Ci0gICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7Ci19Ci0K
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpAQCAtNzI0LDIyICs3MTAsNiBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBhc1JlZ0V4cE9iamVjdChiYXNl
KS0+dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKIH0KIAotc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLQotICAgIHJldHVybiBp
c0FycmF5Q29uc3RydWN0b3IoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUYXJnZXQpKTsKLX0KLQot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNBcnJheU9iamVjdChFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0KLSAg
ICByZXR1cm4gaXNBcnJheShleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRhcmdldCkpOwot
fQotCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNDQzOTg1YzZlNDBkNmE3YTllYTY2NTcz
N2MxZWQ3Yzc3Y2Q0YjU1YS4uNmU0MGNhZmY3MTZiMzJmNTJlYjhmYWY4YjdjYmI5NTNkODRmMTIw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTQxLDcg
KzQxLDYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29k
ZShFeGVjU3RhdGUqLCBpbnQzMl90KSAgV1RGX0lOVEUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlVW50eXBlZChFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSkgIFdURl9JTlRFUk5BTDsKIAogLy8gVGhlc2Ugcm91dGluZXMgYXJlIHByb3Zp
ZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9v
IGNvbXBsZXggdG8gSklULgotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFRhcmdldCkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBpbnQzMl90IGlu
bGluZUNhcGFjaXR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBX
VEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhp
c1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJO
QUw7CkBAIC0xMTEsOCArMTEwLDYgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwVGVzdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamUKIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Jc0FycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwotc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNBcnJheU9iamVjdChFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZh
dGlvbkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUq
LCBFbmNvZGVkSlNWYWx1ZSk7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
RGlyZWN0QXJndW1lbnRzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QgbGVuZ3RoLCBp
bnQzMl90IG1pbkNhcGFjaXR5KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVh
dGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSos
IEpTRnVuY3Rpb24qLCBpbnQzMl90IGFyZ3VtZW50Q291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAppbmRleCA4YjgwODQ5ZDk5YTIyODAwZjVmNDljZjk0Yjk0Njk4MWQ3Y2JlMzgxLi5iNDk4ODM3
MzI0OTlmYmYyMGFmNzQ4NTM3Mjk1ZGM2YzJkZDg1ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cApAQCAtNDE4LDkgKzQxOCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFz
SW5zdGFuY2U6CiAgICAgICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICAgICAgY2FzZSBJbnN0YW5j
ZU9mQ3VzdG9tOgotICAgICAgICBjYXNlIElzQXJyYXlPYmplY3Q6Ci0gICAgICAgIGNhc2UgSXNK
U0FycmF5OgotICAgICAgICBjYXNlIElzQXJyYXlDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBJ
c1VuZGVmaW5lZDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNhc2UgSXNOdW1i
ZXI6CkBAIC00OTQsMTEgKzQ5MSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOiB7Ci0gICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY09iamVjdCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgICAgICAv
LyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNob3VsZCBzcGVjdWxhdGUg
cHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgogICAgICAgICAgICAgRUNNQU1vZGUgZWNt
YU1vZGUgPSBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNT
dHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZWZjMzk4ZWZiOGQ1MGUwNTgz
M2VmMmM2ZjEwYmQzYWNhZjU0OGI2NS4uNTJiZGNmZTVlODgwNjc3ZjRmOTAzZDA5YWIzYjg1ZmNm
OWUyNmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTI1MSw5ICsyNTEsNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBPdmVycmlkZXNI
YXNJbnN0YW5jZToKICAgICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBJbnN0YW5jZU9mQ3Vz
dG9tOgotICAgIGNhc2UgSXNBcnJheU9iamVjdDoKLSAgICBjYXNlIElzSlNBcnJheToKLSAgICBj
YXNlIElzQXJyYXlDb25zdHJ1Y3RvcjoKICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgIGNhc2Ug
SXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CkBAIC0yNjMsNyArMjYwLDYgQEAgYm9vbCBz
YWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICBjYXNlIFR5cGVPZjoKICAgICBjYXNl
IExvZ2ljYWxOb3Q6Ci0gICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgY2FzZSBU
b1ByaW1pdGl2ZToKICAgICBjYXNlIFRvU3RyaW5nOgogICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1l
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCAyYzRhOWU1ZjYyZWRhYTE0Y2VkYTZhYTFiNjE3OGE4MGY3MjM1ZmI2Li43YjI5N2Y1NDE1
NGY0MTM1ZjMzNjRkZjNhMWIwZGQ1ZDE4ZjE0ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAgICAgICAgICAgICBkYXRh
TG9nKCJcbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlREZH
RXhjZXB0aW9uSGFuZGxpbmcoKSAmJiAobWF5RXhpdChtX2ppdC5ncmFwaCgpLCBtX2N1cnJlbnRO
b2RlKSAhPSBEb2VzTm90RXhpdCB8fCBtX2N1cnJlbnROb2RlLT5pc1Rlcm1pbmFsKCkpKQorICAg
ICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVERkdFeGNlcHRpb25IYW5kbGluZygpICYmIG1heUV4
aXQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSkgIT0gRG9lc05vdEV4aXQpCiAgICAgICAg
ICAgICBtX2ppdC5qaXRSZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAogICAgICAgICBtX2pp
dC5wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoKS5hcHBlbmRJdGVtKG1faml0LmxhYmVsKCksIG1f
b3JpZ2luLnNlbWFudGljKTsKQEAgLTMyNzIsOTggKzMyNzIsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZkN1c3RvbShOb2RlKiBub2RlKQogICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUlzSlNBcnJheShOb2RlKiBub2RlKQotewotICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICBKSVRDb21waWxl
cjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKLQot
ICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwKLSAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3ModmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksCi0gICAgICAgIFRydXN0ZWRJbW0zMihBcnJheVR5cGUpLAotICAgICAgICByZXN1
bHRHUFIpOwotICAgIGJsZXNzQm9vbGVhbihyZXN1bHRHUFIpOwotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0KLSAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwot
ICAgIG1vdmVGYWxzZVRvKHJlc3VsdEdQUik7Ci0KLSAgICBkb25lLmxpbmsoJm1faml0KTsKLSAg
ICBibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotfQotCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSXNBcnJheU9iamVjdChOb2RlKiBub2RlKQotewotICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7Ci0KLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1
ZS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0K
LSAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKLQotICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOwotCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgbm90SlNBcnJheSA9IG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLAotICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZVJlZ3MucGF5bG9hZEdQ
UigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgVHJ1c3RlZEltbTMy
KEFycmF5VHlwZSkpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1bHRH
UFIpOwotICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICBub3RKU0FycmF5Lmxp
bmsoJm1faml0KTsKLSAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSXNBcnJheU9iamVjdCwgcmVzdWx0R1BSLCB2YWx1ZVJl
Z3MpOwotICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwotICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICBp
c05vdENlbGwubGluaygmbV9qaXQpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKGZhbHNl
KSwgcmVzdWx0R1BSKTsKLQotICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLX0KLQotLy8gRklYTUU6IFRoaXMgZnVuY3Rp
b24gc2hvdWxkIGp1c3QgZ2V0IHRoZSBDbGFzc0luZm8gYW5kIGNoZWNrIGlmIGl0J3MgPT0gQXJy
YXlDb25zdHJ1Y3Rvcjo6aW5mbygpLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1NjY3Ci12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNBcnJheUNvbnN0cnVj
dG9yKE5vZGUqIG5vZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLQotICAg
IEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLQotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Jc0FycmF5Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgdmFs
dWVSZWdzKTsKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci19
Ci0KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9k
ZSogbm9kZSkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSk7Ci0gICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgdmFsdWUpOwotI2Vsc2UKLSAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCB2YWx1ZSwgUGF5bG9hZFdvcmQpOwotI2VuZGlmCi0KLSAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7Ci0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncykpOwotICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVSZWdzLnBheWxv
YWRHUFIoKSkpOwotICAgIG1faml0Lm1vdmUodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0
R1BSKTsKLQotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbk9iamVjdENvbnN0cnVjdG9yLCByZXN1bHRHUFIsIG1faml0Lmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCB2YWx1ZVJlZ3MpKTsKLSAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aEFkZChOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobm9kZS0+YmluYXJ5VXNlS2lu
ZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggNDk5NWJkOTlkNzhhYjE4OWY5YWExYmEwMjczMmJmZDY4ZjA4MWJkYi4uODQwOWY2NWZl
Y2IzN2JmYjM3MmNlNjZhZWYwOTU3Nzk0OGI1MzJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzI5LDEwICs3MjksNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVl
UmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3VsdFJlZywgR1BS
UmVnIHNjcmF0Y2gyUmVnKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5vZGUqKTsKLQotICAgIHZvaWQgY29tcGls
ZUlzSlNBcnJheShOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlSXNBcnJheUNvbnN0cnVjdG9yKE5v
ZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVJc0FycmF5T2JqZWN0KE5vZGUqKTsKICAgICAKICAgICB2
b2lkIGVtaXRDYWxsKE5vZGUqKTsKICAgICAKQEAgLTEzOTYsMTcgKzEzOTIsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEdQUlJlZyBhcmcxKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMSk7Ci0gICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0K
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWVSZWdzIGFyZzEpCi0gICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIHJlc3VsdCwgZ2xvYmFsT2JqZWN0LCBhcmcxLmdwcigpKTsKLSAgICB9Ci0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CkBAIC0xNDQ3LDE4ICsxNDMyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25f
RUogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQsIGFyZzEuZ3ByKCkp
OwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQucGF5
bG9hZEdQUigpLCBhcmcxLnBheWxvYWRHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBKU1ZhbHVlUmVncyBhcmcxKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uLCByZXN1bHQsIGFyZzEucGF5bG9hZEdQUigpKTsKLSAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwpAQCAtMTgzOCwxNyArMTgxNSw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVy
YXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKLSAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdCksIGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwotICAgIH0KLQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBn
bG9iYWxPYmplY3QsIGFyZzEudGFnR1BSKCksIGFyZzEucGF5bG9hZEdQUigpKTsKLSAgICB9Ci0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9h
ZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZyk7CkBAIC0xODczLDExICsxODM5
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihTX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdz
IGFyZzEpCi0gICAgewotICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJl
c3VsdCwgYXJnMS50YWdHUFIoKSwgYXJnMS5wYXlsb2FkR1BSKCkpOwotICAgIH0KLQogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9h
ZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CkBA
IC0yNDUxLDggKzI0MTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTGF6eUpTQ29uc3Rh
bnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQoTm9kZSopOwotICAgIHZv
aWQgY29tcGlsZUNhbGxPYmplY3RDb25zdHJ1Y3RvcihOb2RlKik7Ci0KKyAgICAKICAgICB2b2lk
IG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CiAgICAg
dm9pZCBibGVzc0Jvb2xlYW4oR1BSUmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGI3MDdiZjNiZjhjZTM3NjQy
ZWY2ZmJlYTQwNWFkZWFlYzNmZWM0YTQuLjI5NWM2YWQwNDlhNTM5ODUyNDkyYTM2OTZiN2E1MTBk
YTgwNDA4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzgxMywxMSArMzgxMyw2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRQYXls
b2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgY2FzZSBDYWxs
T2JqZWN0Q29uc3RydWN0b3I6IHsKLSAgICAgICAgY29tcGlsZUNhbGxPYmplY3RDb25zdHJ1Y3Rv
cihub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgICAgICAKICAgICBjYXNlIFRvVGhp
czogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwpAQCAtNDQ2OSwyMSArNDQ2NCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBJc0pTQXJyYXk6
IHsKLSAgICAgICAgY29tcGlsZUlzSlNBcnJheShub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgY2FzZSBJc0FycmF5T2JqZWN0OiB7Ci0gICAgICAgIGNvbXBpbGVJc0FycmF5T2Jq
ZWN0KG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIElzQXJyYXlDb25z
dHJ1Y3RvcjogewotICAgICAgICBjb21waWxlSXNBcnJheUNvbnN0cnVjdG9yKG5vZGUpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIElzT2JqZWN0OiB7CiAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUsIFRhZ1dvcmQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNGRkODJlZjFi
MTc5MGFkZDY2ZjY3YzAyYTljOWVkMjQ4MDAxYzkzOS4uYTYyNzY4ZGYxZTk2OTAwN2ZkOWJjZTI5
ODIyMTZiMWMxMzY1YTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zODc3LDEyICszODc3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIGNhc2UgQ2FsbE9iamVj
dENvbnN0cnVjdG9yOiB7Ci0gICAgICAgIGNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3Iobm9k
ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQorICAgICAgICAKICAgICBjYXNlIFRvVGhpczog
ewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2Up
OwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwpAQCAtNDQ4NSwyMSArNDQ4MCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBJc0pTQXJyYXk6IHsK
LSAgICAgICAgY29tcGlsZUlzSlNBcnJheShub2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgY2FzZSBJc0FycmF5T2JqZWN0OiB7Ci0gICAgICAgIGNvbXBpbGVJc0FycmF5T2JqZWN0
KG5vZGUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIElzQXJyYXlDb25zdHJ1
Y3RvcjogewotICAgICAgICBjb21waWxlSXNBcnJheUNvbnN0cnVjdG9yKG5vZGUpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIElzT2JqZWN0OiB7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDc2NjE0NTc4YjIxZmM1OTAzMTZlNDVkMjJmNzhj
ZjFiZGYyMmFlODguLjMxZWRmYjZkZWNjNzA1ZGY4MGE0YTYwYmIyNWQxYjUwNDkzOWRiNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE2
Miw3ICsxNjIsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgIGNhc2UgR2V0
QXJndW1lbnRDb3VudDoKLSAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNl
IFRvU3RyaW5nOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgIGNhc2UgTWFr
ZVJvcGU6CkBAIC0xNzYsOSArMTc1LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIFRocm93UmVmZXJlbmNl
RXJyb3I6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKLSAgICBjYXNlIElzQXJyYXlPYmplY3Q6Ci0g
ICAgY2FzZSBJc0pTQXJyYXk6Ci0gICAgY2FzZSBJc0FycmF5Q29uc3RydWN0b3I6CiAgICAgY2Fz
ZSBJc1VuZGVmaW5lZDoKICAgICBjYXNlIElzQm9vbGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRi
NTE1ZmVkMDY5YzkzMDRjNTIxNjlmYTcxZGQzNjEzZjkwNGI5ZjYuLjU4NDAyMGIxNDliMzM0NWY3
YjlmNGM1NTA1YWRkOTdlNWFkYTBkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQ4MCw5ICs0ODAsNiBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIERGRzo6Q2hlY2s6CiAgICAgICAgICAgICBjb21waWxlTm9PcCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOgotICAgICAgICAg
ICAgY29tcGlsZUNhbGxPYmplY3RDb25zdHJ1Y3RvcigpOwotICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAgICAgICAgY29tcGlsZVRvVGhpcygpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC04NDksMTUgKzg0Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SXNTdHJpbmc6CiAgICAgICAgICAgICBjb21waWxlSXNTdHJpbmcoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIElzQXJyYXlPYmplY3Q6Ci0gICAgICAgICAgICBjb21waWxlSXNB
cnJheU9iamVjdCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSXNKU0FycmF5
OgotICAgICAgICAgICAgY29tcGlsZUlzSlNBcnJheSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgSXNBcnJheUNvbnN0cnVjdG9yOgotICAgICAgICAgICAgY29tcGlsZUlzQXJy
YXlDb25zdHJ1Y3RvcigpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSXNPYmpl
Y3Q6CiAgICAgICAgICAgICBjb21waWxlSXNPYmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTQyMiwyOCArMTQxMCw2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBERkdfTk9ERV9E
T19UT19DSElMRFJFTihtX2dyYXBoLCBtX25vZGUsIHNwZWN1bGF0ZSk7CiAgICAgfQotCi0gICAg
dm9pZCBjb21waWxlQ2FsbE9iamVjdENvbnN0cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0KLSAgICAgICAgTEJhc2lj
QmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Jsb2Nr
IHNsb3dDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgY29udGlu
dWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKLQotICAgICAgICBtX291dC5icmFuY2goaXNDZWxs
KHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0NlbGxDYXNl
KSwgcmFyZWx5KHNsb3dDYXNlKSk7Ci0KLSAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBzbG93Q2FzZSk7Ci0gICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IodmFsdWUpOwotICAgICAgICBtX291dC5icmFu
Y2goaXNPYmplY3QodmFsdWUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2Fz
ZSkpOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwot
ICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCht
X291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRvT2JqZWN0KSwgbV9jYWxsRnJh
bWUsIHZhbHVlKSk7Ci0gICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLQotICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0SlNW
YWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKLSAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVG9UaGlzKCkKICAgICB7CkBAIC01NzI1LDU1ICs1
NjkxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9v
bGVhbiwgbm90Q2VsbFJlc3VsdCwgY2VsbFJlc3VsdCkpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZUlzQXJyYXlPYmplY3QoKQotICAgIHsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIG5vdEFycmF5Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7Ci0KLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpOwotICAgICAgICBtX291dC5icmFuY2goaXND
ZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdW5zdXJlKGNlbGxDYXNl
KSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOwotCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8oY2VsbENhc2UsIG5vdEFycmF5Q2FzZSk7Ci0gICAgICAgIFZhbHVl
RnJvbUJsb2NrIGFycmF5UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsK
LSAgICAgICAgbV9vdXQuYnJhbmNoKGlzQXJyYXkodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDEoKSkpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdEFycmF5Q2FzZSkpOwot
Ci0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEFycmF5Q2FzZSwgY29udGludWF0aW9uKTsKLSAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgbm90QXJyYXlSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxs
KG1fb3V0LmJvb2xlYW4sIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Jc0FycmF5T2JqZWN0KSwg
bV9jYWxsRnJhbWUsIHZhbHVlKSk7Ci0gICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
LQotICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwgYXJy
YXlSZXN1bHQsIG5vdEFycmF5UmVzdWx0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlSXNK
U0FycmF5KCkKLSAgICB7Ci0gICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0KLSAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7Ci0KLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihtX291dC5ib29sZWFuRmFsc2UpOwotICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAg
ICAgICBpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUo
aXNDZWxsQ2FzZSksIHVuc3VyZShjb250aW51YXRpb24pKTsKLQotICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGNvbnRpbnVhdGlvbik7Ci0g
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxSZXN1bHQgPSBtX291dC5hbmNob3IoaXNBcnJheSh2
YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSkpOwotICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIG5v
dENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBpbGVJc0Fy
cmF5Q29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKLQotICAgICAgICBzZXRCb29sZWFuKHZtQ2FsbChtX291dC5i
b29sZWFuLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSXNBcnJheUNvbnN0cnVjdG9yKSwgbV9j
YWxsRnJhbWUsIHZhbHVlKSk7Ci0gICAgfQotCiAgICAgdm9pZCBjb21waWxlSXNPYmplY3QoKQog
ICAgIHsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KTsKQEAgLTk4MDgsMTUgKzk3MjUsNiBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAganNW
YWx1ZVRvU3RyaWN0SW50NTIoZWRnZSwgbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pKTsKICAgICB9Ci0KLSAgICBMVmFsdWUgaXNBcnJheShMVmFsdWUgY2VsbCwgU3Bl
Y3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQotICAgIHsKLSAgICAgICAgaWYgKExWYWx1
ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUgJiBTcGVjQ2VsbCwgU3BlY0FycmF5KSkKLSAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKLSAg
ICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJ
bmZvVHlwZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludDMyKEFycmF5VHlwZSkpOwotICAg
IH0KICAgICAKICAgICBMVmFsdWUgaXNPYmplY3QoTFZhbHVlIGNlbGwsIFNwZWN1bGF0ZWRUeXBl
IHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IDE1YjlmYTJkMzgzZDM4MTJjMWI5ZDI5ZTU3MzdmZGVjNmVkYTQx
ODAuLjk0MWE5OTNhM2E3NDUzNDYxYmMyMzEwZTgwMzExYTI0YmM5MjViYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xNjMsNyArMTYzLDYgQEAgdHlw
ZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FQ1opKEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIGludDMyX3QKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19K
SVRPcGVyYXRpb25fRUNaQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCwgSlNDZWxsKik7
CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VDQykoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElP
TiAoKkNfSklUT3BlcmF0aW9uX0VHQykoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqKTsKLXR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRUdK
KShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRUljZikoRXhlY1N0YXRlKiwg
SW5saW5lQ2FsbEZyYW1lKik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklU
T3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEpTQ2Vs
bCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKc2MpKEV4ZWNTdGF0ZSosIEpTU2Nv
cGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjI1YWQzNGI4YThiZjFhZDBhYmZhNGZhZjNk
Yzg2MjliOTk0NDZmZi4uMGY0NmUyZDgzNTQyOTNkN2YxM2MxZjI2ZDI3ZDIxZmM4YjIyNjdjNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEFy
cmF5VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEFycmF5Q2xhc3MpOworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgQXJyYXlDbGFzcyk7CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC01NjMsNyArNTYzLDYgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZShFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByaW50KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EZWJ1ZyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uRGF0YUxvZ1ZhbHVlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZXNjcmliZShFeGVjU3RhdGUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRGVzY3JpYmVBcnJheShFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSlND
U3RhY2soRXhlY1N0YXRlKik7CkBAIC03MzEsOCArNzMwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRz
KQogICAgIHsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotCi0gICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiZGF0YUxvZ1ZhbHVlIiwgZnVuY3Rpb25EYXRhTG9nVmFsdWUsIDEpOwor
ICAgICAgICAKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJkZWJ1ZyIsIGZ1bmN0aW9uRGVidWcs
IDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImRlc2NyaWJlIiwgZnVuY3Rpb25EZXNjcmli
ZSwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZGVzY3JpYmVBcnJheSIsIGZ1bmN0aW9u
RGVzY3JpYmVBcnJheSwgMSk7CkBAIC04MzEsNyArODI5LDYgQEAgcHJvdGVjdGVkOgogICAgICAg
ICB9CiAKICAgICAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2Jh
bEV4ZWMoKSwgImNvbnNvbGUiKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJpbnRQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcmludFByaXZhdGVOYW1lLnN0cmluZygp
LCBmdW5jdGlvblByaW50KSk7CiAgICAgfQogCiAgICAgdm9pZCBhZGRGdW5jdGlvbihWTSYgdm0s
IGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1
bWVudHMpCkBAIC0xMTMxLDEyICsxMTI4LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRlYnVnKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRGF0YUxvZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBkYXRhTG9nKCJ2YWx1
ZSBpczogIiwgZXhlYy0+YXJndW1lbnQoMCksICJcbiIpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25EZXNjcmliZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwCmluZGV4IDYxMTVjMWExNTkxNWFhODcyYWI0OWQ0N2Y1YTUxZjg2
ZjM0ZGQ5ZjQuLmNhMjhiY2M0OWE2ZmZhZDEwNzliYTY5OTVhODFlZjU4MjFkYWMwZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJhCiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXJyYXlQ
cm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogICAgIHB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNp
ZXNTeW1ib2wsIEFjY2Vzc29yIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgSlNDX05BVElW
RV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmlzQXJyYXksIGFycmF5Q29uc3RydWN0b3JJc0FycmF5LCBEb250RW51bSwgMSwgSXNBcnJheUlu
dHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+aXNBcnJheSwgYXJyYXlDb25zdHJ1Y3RvcklzQXJyYXksIERvbnRFbnVt
LCAxKTsKIH0KIAogYm9vbCBBcnJheUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QgJnNsb3QpCkBAIC0xMzUsNyArMTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheShFeGVjU3RhdGUqIGV4ZWMpCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5j
SXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0FycmF5Q29uc3RydWN0b3IoZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoMCkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oanNEeW5h
bWljQ2FzdDxBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCmluZGV4IGJjM2FjY2M2Njk0ZTNmNTI4OGI0YTJlNjFm
NjliOWNkNzRkOTZiNTIuLjY2NDcwM2FjMzZiYTdkMTRiZTM5OTdkNDI4ZmEyMjYxNDRiYzA0ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmgKQEAgLTkxLDE0ICs5MSw2IEBAIGlubGluZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LWlubGluZSBib29sIGlzQXJyYXlDb25zdHJ1Y3RvcihKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCi17
Ci0gICAgaWYgKCFhcmd1bWVudFZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihhcmd1bWVudFZhbHVlKS0+Y2xhc3NJ
bmZvKCkgPT0gQXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEFycmF5Q29uc3RydWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGM3YTQyNDQyZTM2ZTBlMzIz
MGM0NDI0MjQxYmJlMjQwYjFjN2I4MTcuLmNmZGQ3ZmNlYjdmNDdlOTM5N2VmOWFlYmE4MjEyOWU3
N2YyMjk4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCi0jaW5jbHVkZSAiSlNBcnJheUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NCdWls
dGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTUxLDYgKzUwLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jQ29uY2F0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhlY1N0YXRlKik7CkBAIC05Myw3
ICs5Myw3IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgYXJyYXlQcm90
b0Z1bmNUb1N0cmluZywgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnRvTG9jYWxlU3RyaW5nLCBhcnJheVBy
b3RvRnVuY1RvTG9jYWxlU3RyaW5nLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX0JVSUxUSU5fRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJjb25jYXQiLCBhcnJheVByb3RvdHlwZUNvbmNhdENv
ZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigiY29uY2F0IiwgYXJyYXlQcm90b0Z1bmNDb25jYXQsIERvbnRFbnVtLCAxKTsK
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImZpbGwiLCBhcnJh
eVByb3RvdHlwZUZpbGxDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgYXJyYXlQ
cm90b0Z1bmNKb2luLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJwb3AiLCBhcnJheVByb3RvRnVuY1BvcCwgRG9udEVu
dW0sIDAsIEFycmF5UG9wSW50cmluc2ljKTsKQEAgLTU5MCw2ICs1OTAsODcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoam9pbigqZXhlYywgdGhpc09iamVjdCwgc2VwYXJh
dG9yLT52aWV3KGV4ZWMpLmdldCgpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOwor
ICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIEpTVmFs
dWUgY3VyQXJnID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIGlmICghY3VyQXJnKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGZpbmFsQXJyYXlTaXplID0gMDsKKworICAgIC8vIFdl
IG5lZWQgdG8gZG8gc3BlY2llcyBjb25zdHJ1Y3Rpb24gYmVmb3JlIGdldGluZyB0aGUgcmVzdCBv
ZiB0aGUgZWxlbWVudHMuCisgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQsIEpT
T2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShleGVjLCBjdXJB
cmcuZ2V0T2JqZWN0KCksIDApOworICAgIGlmIChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQXJyYXkqIGN1cnJlbnRBcnJheSA9IG51bGxw
dHI7CisgICAgSlNBcnJheSogcHJldmlvdXNBcnJheSA9IG51bGxwdHI7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgOyArK2kpIHsKKyAgICAgICAgcHJldmlvdXNBcnJheSA9IGN1cnJlbnRBcnJh
eTsKKyAgICAgICAgY3VycmVudEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4oY3VyQXJn
KTsKKyAgICAgICAgaWYgKGN1cnJlbnRBcnJheSkgeworICAgICAgICAgICAgLy8gQ2FuJ3QgdXNl
IEpTQXJyYXk6Omxlbmd0aCBoZXJlIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBhIFJ1bnRpbWVBcnJh
eSEKKyAgICAgICAgICAgIGZpbmFsQXJyYXlTaXplICs9IGdldExlbmd0aChleGVjLCBjdXJyZW50
QXJyYXkpOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgKytmaW5hbEFycmF5U2l6ZTsKKyAgICAgICAgaWYgKGkgPT0gYXJn
Q291bnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY3VyQXJnID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoaSk7CisgICAgfQorCisgICAgaWYgKGZpbmFsQXJyYXlTaXplLmhhc092ZXJm
bG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYykpOworCisgICAgaWYgKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0Nv
bnN0cnVjdFJlc3VsdDo6RmFzdFBhdGggJiYgYXJnQ291bnQgPT0gMSAmJiBwcmV2aW91c0FycmF5
ICYmIGN1cnJlbnRBcnJheSAmJiBmaW5hbEFycmF5U2l6ZS51bnNhZmVHZXQoKSA8IE1JTl9TUEFS
U0VfQVJSQVlfSU5ERVgpIHsKKyAgICAgICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBKU0FycmF5Ojpm
YXN0Q29uY2F0VHlwZShleGVjLT52bSgpLCAqcHJldmlvdXNBcnJheSwgKmN1cnJlbnRBcnJheSk7
CisgICAgICAgIGlmICh0eXBlICE9IE5vbkFycmF5KQorICAgICAgICAgICAgcmV0dXJuIHByZXZp
b3VzQXJyYXktPmZhc3RDb25jYXRXaXRoKCpleGVjLCAqY3VycmVudEFycmF5KTsKKyAgICB9CisK
KyAgICBBU1NFUlQoc3BlY2llc1Jlc3VsdC5maXJzdCAhPSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpFeGNlcHRpb24pOworCisgICAgSlNPYmplY3QqIHJlc3VsdDsKKyAgICBpZiAoc3BlY2llc1Jl
c3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0KQorICAg
ICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29uZDsKKyAgICBlbHNlIHsKKyAgICAgICAg
Ly8gV2UgYWRkIHRoZSBuZXdUYXJnZXQgYmVjYXVzZSB0aGUgY29tcGlsZXIgZ2V0cyBjb25mdXNl
ZCBiZXR3ZWVuIDAgYmVpbmcgYSBudW1iZXIgYW5kIGEgcG9pbnRlci4KKyAgICAgICAgcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCAwLCBKU1ZhbHVlKCkpOworICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIGN1ckFyZyA9IHRoaXNWYWx1
ZS50b09iamVjdChleGVjKTsKKyAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAg
ICB1bnNpZ25lZCBuID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyA7ICsraSkgeworICAg
ICAgICBpZiAoSlNBcnJheSogY3VycmVudEFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4o
Y3VyQXJnKSkgeworICAgICAgICAgICAgLy8gQ2FuJ3QgdXNlIEpTQXJyYXk6Omxlbmd0aCBoZXJl
IGJlY2F1c2UgdGhpcyBtaWdodCBiZSBhIFJ1bnRpbWVBcnJheSEKKyAgICAgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGdldExlbmd0aChleGVjLCBjdXJyZW50QXJyYXkpOworICAgICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAw
OyBrIDwgbGVuZ3RoOyArK2spIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9w
ZXJ0eShleGVjLCBjdXJyZW50QXJyYXksIGspOworICAgICAgICAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICBpZiAodikKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBuLCB2KTsKKyAgICAgICAgICAgICAg
ICBuKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1
bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIG4sIGN1ckFyZyk7CisgICAgICAgICAgICBuKys7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGkgPT0gYXJnQ291bnQpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY3VyQXJnID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSk7CisgICAgfQorICAg
IHNldExlbmd0aChleGVjLCByZXN1bHQsIG4pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1BvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CkBAIC0xMDE0LDkyICsxMDk1LDYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0tleXMoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNBcnJheUl0ZXJhdG9yOjpj
cmVhdGUoZXhlYywgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5hcnJheUl0ZXJhdG9y
U3RydWN0dXJlKCksIEFycmF5SXRlcmF0ZUtleSwgdGhpc09iaikpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0lzSlNBcnJheShFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwotICAgIGlmICh2YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih2YWx1ZS5nZXRPYmplY3QoKS0+dHlwZSgpID09IEFycmF5VHlwZSkp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7Ci19Ci0KLWlu
bGluZSBib29sIG1vdmVFbGVtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNBcnJheSog
dGFyZ2V0LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEpTQXJyYXkqIHNvdXJjZSwgdW5zaWduZWQg
c291cmNlTGVuZ3RoKQotewotICAgIEFTU0VSVCghaGFzQW55QXJyYXlTdG9yYWdlKHNvdXJjZS0+
aW5kZXhpbmdUeXBlKCkpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlTGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldFByb3BlcnR5KGV4ZWMsIHNv
dXJjZSwgaSk7Ci0gICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgICAgICB0YXJnZXQtPnB1dERp
cmVjdEluZGV4KGV4ZWMsIHRhcmdldE9mZnNldCArIGksIHZhbHVlKTsKLSAgICAgICAgICAgIGlm
ICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSogZXhlYykK
LXsKLSAgICBBU1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIpOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7Ci0KLSAgICBKU0FycmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkq
PihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgSlNBcnJheSogc2Vjb25kQXJyYXkg
PSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKLQotICAgIGlm
ICghZmlyc3RBcnJheS0+Y2FuRmFzdENvcHkodm0sIHNlY29uZEFycmF5KSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0KLSAgICBCdXR0ZXJmbHkqIGZpcnN0QnV0
dGVyZmx5ID0gZmlyc3RBcnJheS0+YnV0dGVyZmx5KCk7Ci0gICAgQnV0dGVyZmx5KiBzZWNvbmRC
dXR0ZXJmbHkgPSBzZWNvbmRBcnJheS0+YnV0dGVyZmx5KCk7Ci0KLSAgICB1bnNpZ25lZCBmaXJz
dEFycmF5U2l6ZSA9IGZpcnN0QnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICB1bnNpZ25l
ZCBzZWNvbmRBcnJheVNpemUgPSBzZWNvbmRCdXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwotCi0g
ICAgSW5kZXhpbmdUeXBlIHR5cGUgPSBmaXJzdEFycmF5LT5tZW1Db3B5V2l0aEluZGV4aW5nVHlw
ZShzZWNvbmRBcnJheS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIGlmICh0eXBlID09IE5vbkFycmF5
IHx8IGZpcnN0QXJyYXlTaXplICsgc2Vjb25kQXJyYXlTaXplID49IE1JTl9TUEFSU0VfQVJSQVlf
SU5ERVgpIHsKLSAgICAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCBudWxscHRyLCBmaXJzdEFycmF5U2l6ZSArIHNlY29uZEFycmF5U2l6ZSk7Ci0gICAgICAg
IGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKLQotICAgICAgICBpZiAoIW1vdmVFbGVtZW50cyhleGVjLCB2bSwgcmVzdWx0
LCAwLCBmaXJzdEFycmF5LCBmaXJzdEFycmF5U2l6ZSkKLSAgICAgICAgICAgIHx8ICFtb3ZlRWxl
bWVudHMoZXhlYywgdm0sIHJlc3VsdCwgZmlyc3RBcnJheVNpemUsIHNlY29uZEFycmF5LCBzZWNv
bmRBcnJheVNpemUpKSB7Ci0gICAgICAgICAgICBBU1NFUlQodm0uZXhjZXB0aW9uKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgIH0KLQotICAgIFN0
cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24odHlwZSk7Ci0gICAg
SlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgcmVz
dWx0U3RydWN0dXJlLCBmaXJzdEFycmF5U2l6ZSArIHNlY29uZEFycmF5U2l6ZSk7Ci0gICAgaWYg
KCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKLQotICAgIGlmICh0eXBlID09IEFycmF5V2l0aERvdWJsZSkgewotICAg
ICAgICBkb3VibGUqIGJ1ZmZlciA9IHJlc3VsdC0+YnV0dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3Vi
bGUoKS5kYXRhKCk7Ci0gICAgICAgIG1lbWNweShidWZmZXIsIGZpcnN0QnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiBmaXJzdEFycmF5U2l6ZSk7
Ci0gICAgICAgIG1lbWNweShidWZmZXIgKyBmaXJzdEFycmF5U2l6ZSwgc2Vjb25kQnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiBzZWNvbmRBcnJh
eVNpemUpOwotICAgIH0gZWxzZSBpZiAodHlwZSAhPSBBcnJheVdpdGhVbmRlY2lkZWQpIHsKLSAg
ICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBidWZmZXIgPSByZXN1bHQtPmJ1dHRlcmZseSgp
LT5jb250aWd1b3VzKCkuZGF0YSgpOwotICAgICAgICBtZW1jcHkoYnVmZmVyLCBmaXJzdEJ1dHRl
cmZseS0+Y29udGlndW91cygpLmRhdGEoKSwgc2l6ZW9mKEpTVmFsdWUpICogZmlyc3RBcnJheVNp
emUpOwotICAgICAgICBtZW1jcHkoYnVmZmVyICsgZmlyc3RBcnJheVNpemUsIHNlY29uZEJ1dHRl
cmZseS0+Y29udGlndW91cygpLmRhdGEoKSwgc2l6ZW9mKEpTVmFsdWUpICogc2Vjb25kQXJyYXlT
aXplKTsKLSAgICB9Ci0KLSAgICByZXN1bHQtPmJ1dHRlcmZseSgpLT5zZXRQdWJsaWNMZW5ndGgo
Zmlyc3RBcnJheVNpemUgKyBzZWNvbmRBcnJheVNpemUpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEFTU0VS
VChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7Ci0KLSAgICBKU0FycmF5KiByZXN1bHRBcnJh
eSA9IGpzQ2FzdDxKU0FycmF5Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIEpT
QXJyYXkqIG90aGVyQXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdEFy
cmF5LT5hcHBlbmRNZW1jcHkoZXhlYywgZXhlYy0+dm0oKSwgb3RoZXJBcnJheSkpKTsKLX0KLQot
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheVByb3RvdHlwZS5jb25zdHJ1Y3RvciBXYXRj
aHBvaW50IC0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBBcnJheVByb3RvdHlwZUFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQgOiBwdWJsaWMgQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50QmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuaAppbmRleCAxOTI4MDQ4OGZjMTc5YWQ0ZTZiOTI0MDNmOGVlNDNh
M2IxYzYxMmVhLi42NGQyMTYzZDRlNWFkZGZlMTc0Y2Y4NzgzYmJiNjEwYjJhMmE1NWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhBcnJheVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpLCBBcnJheUNsYXNzKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCksIEFycmF5Q2xhc3MpOwogICAgIH0KIAogICAgIHZvaWQgc2V0Q29uc3RydWN0
b3IoVk0mLCBKU09iamVjdCogY29uc3RydWN0b3JQcm9wZXJ0eSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CkBAIC02NSw5ICs2NSw2IEBAIHByaXZhdGU6CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMoRXhlY1N0YXRlKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9Qcml2YXRlRnVuY0lzSlNBcnJheShFeGVj
U3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1ByaXZhdGVG
dW5jQ29uY2F0TWVtY3B5KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkoRXhlY1N0YXRlKik7CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA3MmZlMTY0NzQ5NGMxMTI3MWE1MjA5NzQ0MmMwZWU3NWM3
MGUzZTAyLi5hMDg2ZGVkOGZiNDhlMzg0NzFhMzJjOGRlNTNiNzlkZjVhNTI3MGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTMwOCwxMiArMzA4LDEyIEBACiAgICAgbWFjcm8oeWllbGQpCiAKICNkZWZpbmUgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0xfTk9UX0lNUExFTUVO
VEVEX1lFVChtYWNybylcCisgICAgbWFjcm8oaXNDb25jYXRTcHJlYWRhYmxlKSBcCiAgICAgbWFj
cm8ocmVwbGFjZSkgXAogICAgIG1hY3JvKHNwbGl0KQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJ
VkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKG1hY3JvKSBcCiAgICAgbWFj
cm8oaGFzSW5zdGFuY2UpIFwKLSAgICBtYWNybyhpc0NvbmNhdFNwcmVhZGFibGUpIFwKICAgICBt
YWNybyhpdGVyYXRvcikgXAogICAgIG1hY3JvKG1hdGNoKSBcCiAgICAgbWFjcm8oc2VhcmNoKSBc
CkBAIC00MTEsMTIgKzQxMSw3IEBACiAgICAgbWFjcm8oaGFzSW5zdGFuY2VCb3VuZEZ1bmN0aW9u
KSBcCiAgICAgbWFjcm8oaW5zdGFuY2VPZikgXAogICAgIG1hY3JvKGlzQXJyYXkpIFwKLSAgICBt
YWNybyhpc0pTQXJyYXkpIFwKICAgICBtYWNybyhpc0FycmF5Q29uc3RydWN0b3IpIFwKLSAgICBt
YWNybyhjb25jYXRNZW1jcHkpIFwKLSAgICBtYWNybyhhcHBlbmRNZW1jcHkpIFwKLSAgICBtYWNy
byhwcmVkaWN0RmluYWxMZW5ndGhGcm9tQXJndW11bnRzKSBcCi0gICAgbWFjcm8ocHJpbnQpIFwK
ICAgICBtYWNybyhpc1NldCkgXAogICAgIG1hY3JvKGlzTWFwKSBcCiAgICAgbWFjcm8ocmVnRXhw
Q3JlYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4
IGI4ZTY2MjNiNmU0MDhlOWQ5M2ZmZWQzODRhOWMzNmM5ZjJjMDMwMjAuLjA4ZmRlYjQ0Nzk5NzIy
NWE3MmU3NjFmY2Y5NzMwYjIzNDdiOWEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCkBAIC01Nyw5ICs1Nyw2IEBAIGVudW0gSlNfRVhQT1JUX1BSSVZBVEUg
SW50cmluc2ljIHsKICAgICBSYW5kb21JbnRyaW5zaWMsCiAgICAgRlJvdW5kSW50cmluc2ljLAog
ICAgIFRydW5jSW50cmluc2ljLAotICAgIElzQXJyYXlJbnRyaW5zaWMsCi0gICAgSXNBcnJheUNv
bnN0cnVjdG9ySW50cmluc2ljLAotICAgIElzSlNBcnJheUludHJpbnNpYywKIAogICAgIC8vIEdl
dHRlciBpbnRyaW5zaWNzLgogICAgIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDRkMjQ1MGU5ZGMyYmI4MzNl
MDkyZjcxMjkyMDMzN2RmMTEwMGZkYTQuLmFmYTA2MmY5MDNiNjA2ZTViN2I1OGJhM2NiZTBmNTNh
NDZjZGIwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBA
IC0zOTIsMzcgKzM5Miw2IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFn
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9vCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgSlNBcnJheTo6YXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSogZXhlYywgVk0m
IHZtLCBKU0M6OkpTQXJyYXkqIG90aGVyQXJyYXkpCi17Ci0gICAgaWYgKCFjYW5GYXN0Q29weSh2
bSwgb3RoZXJBcnJheSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEluZGV4aW5nVHlw
ZSB0eXBlID0gaW5kZXhpbmdUeXBlKCk7Ci0gICAgaWYgKHR5cGUgIT0gbWVtQ29weVdpdGhJbmRl
eGluZ1R5cGUob3RoZXJBcnJheS0+aW5kZXhpbmdUeXBlKCkpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBsZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBv
dGhlckxlbmd0aCA9IG90aGVyQXJyYXktPmxlbmd0aCgpOwotICAgIHVuc2lnbmVkIG5ld0xlbmd0
aCA9IG9sZExlbmd0aCArIG90aGVyTGVuZ3RoOwotICAgIGlmIChuZXdMZW5ndGggPj0gTUlOX1NQ
QVJTRV9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbnN1
cmVMZW5ndGgodm0sIG5ld0xlbmd0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NF
UlQodHlwZSA9PSBpbmRleGluZ1R5cGUoKSk7Ci0gICAgaWYgKGxlbmd0aCgpICE9IG5ld0xlbmd0
aCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSBBcnJheVdpdGhEb3VibGUpCi0gICAg
ICAgIG1lbWNweShidXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpLmRhdGEoKSArIG9sZExl
bmd0aCwgb3RoZXJBcnJheS0+YnV0dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRhKCks
IHNpemVvZihKU1ZhbHVlKSAqIG90aGVyTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1lbWNw
eShidXR0ZXJmbHkoKS0+Y29udGlndW91cygpLmRhdGEoKSArIG9sZExlbmd0aCwgb3RoZXJBcnJh
eS0+YnV0dGVyZmx5KCktPmNvbnRpZ3VvdXMoKS5kYXRhKCksIHNpemVvZihKU1ZhbHVlKSAqIG90
aGVyTGVuZ3RoKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIEpTQXJyYXk6OnNldExl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbikKIHsKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpA
QCAtNzUwLDYgKzcxOSwzOCBAQCBKU0FycmF5KiBKU0FycmF5OjpmYXN0U2xpY2UoRXhlY1N0YXRl
JiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudAogICAgIH0KIH0KIAor
RW5jb2RlZEpTVmFsdWUgSlNBcnJheTo6ZmFzdENvbmNhdFdpdGgoRXhlY1N0YXRlJiBleGVjLCBK
U0FycmF5JiBvdGhlckFycmF5KQoreworICAgIGF1dG8gbmV3QXJyYXlUeXBlID0gaW5kZXhpbmdU
eXBlKCk7CisKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgQVNTRVJUKG5ld0FycmF5VHlw
ZSA9PSBmYXN0Q29uY2F0VHlwZSh2bSwgKnRoaXMsIG90aGVyQXJyYXkpKTsKKworICAgIHVuc2ln
bmVkIHRoaXNBcnJheVNpemUgPSBtX2J1dHRlcmZseS5nZXQoKS0+cHVibGljTGVuZ3RoKCk7Cisg
ICAgdW5zaWduZWQgb3RoZXJBcnJheVNpemUgPSBvdGhlckFycmF5Lm1fYnV0dGVyZmx5LmdldCgp
LT5wdWJsaWNMZW5ndGgoKTsKKyAgICBBU1NFUlQodGhpc0FycmF5U2l6ZSArIG90aGVyQXJyYXlT
aXplIDwgTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCk7CisKKyAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0
cnVjdHVyZSA9IGV4ZWMubGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obmV3QXJyYXlUeXBlKTsKKyAgICBKU0FycmF5KiBy
ZXN1bHRBcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIHJlc3VsdFN0
cnVjdHVyZSwgdGhpc0FycmF5U2l6ZSArIG90aGVyQXJyYXlTaXplKTsKKyAgICBpZiAoIXJlc3Vs
dEFycmF5KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmZXhlYykpOworCisgICAgYXV0byYgcmVzdWx0QnV0dGVyZmx5ID0gKnJlc3VsdEFycmF5
LT5idXR0ZXJmbHkoKTsKKyAgICBhdXRvJiBvdGhlckJ1dHRlcmZseSA9ICpvdGhlckFycmF5LmJ1
dHRlcmZseSgpOworICAgIGlmIChuZXdBcnJheVR5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7Cisg
ICAgICAgIGF1dG8gYnVmZmVyID0gcmVzdWx0QnV0dGVyZmx5LmNvbnRpZ3VvdXNEb3VibGUoKS5k
YXRhKCk7CisgICAgICAgIG1lbWNweShidWZmZXIsIG1fYnV0dGVyZmx5LmdldCgpLT5jb250aWd1
b3VzRG91YmxlKCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiB0aGlzQXJyYXlTaXplKTsKKyAg
ICAgICAgbWVtY3B5KGJ1ZmZlciArIHRoaXNBcnJheVNpemUsIG90aGVyQnV0dGVyZmx5LmNvbnRp
Z3VvdXNEb3VibGUoKS5kYXRhKCksIHNpemVvZihKU1ZhbHVlKSAqIG90aGVyQXJyYXlTaXplKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IHJlc3VsdEJ1dHRlcmZseS5jb250
aWd1b3VzKCkuZGF0YSgpOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBtX2J1dHRlcmZseS5nZXQo
KS0+Y29udGlndW91cygpLmRhdGEoKSwgc2l6ZW9mKEpTVmFsdWUpICogdGhpc0FycmF5U2l6ZSk7
CisgICAgICAgIG1lbWNweShidWZmZXIgKyB0aGlzQXJyYXlTaXplLCBvdGhlckJ1dHRlcmZseS5j
b250aWd1b3VzKCkuZGF0YSgpLCBzaXplb2YoSlNWYWx1ZSkgKiBvdGhlckFycmF5U2l6ZSk7Cisg
ICAgfQorCisgICAgcmVzdWx0QnV0dGVyZmx5LnNldFB1YmxpY0xlbmd0aCh0aGlzQXJyYXlTaXpl
ICsgb3RoZXJBcnJheVNpemUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0QXJy
YXkpOworfQorCiBib29sIEpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKFZNJiB2
bSwgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSogc3Rv
cmFnZSkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCAyZWI2NTFiZTMwY2MxNTM2
OWVkODZlNjIwOTQ0NWNmMmFiMjhlN2M4Li4zYzk1NDE5MDk5NGY0ODNkMGM3ZTBmOGVkNDdkNGM3
NTkzMjYxMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC0y
Myw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJBcnJheUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAi
QnV0dGVyZmx5SW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTc5LDEwICs3OCwxOSBAQCBwdWJs
aWM6CiAKICAgICBKU0FycmF5KiBmYXN0U2xpY2UoRXhlY1N0YXRlJiwgdW5zaWduZWQgc3RhcnRJ
bmRleCwgdW5zaWduZWQgY291bnQpOwogCi0gICAgYm9vbCBjYW5GYXN0Q29weShWTSYsIEpTQXJy
YXkqIG90aGVyQXJyYXkpOwotICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBOb25BcnJheSBp
ZiB0aGUgaW5kZXhpbmcgdHlwZXMgYXJlIG5vdCBjb21wYXRhYmxlIGZvciBtZW1jcHlpbmcuCi0g
ICAgSW5kZXhpbmdUeXBlIG1lbUNvcHlXaXRoSW5kZXhpbmdUeXBlKEluZGV4aW5nVHlwZSBvdGhl
cik7Ci0gICAgYm9vbCBhcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiwgVk0mLCBKU0FycmF5KiBvdGhl
ckFycmF5KTsKKyAgICBzdGF0aWMgSW5kZXhpbmdUeXBlIGZhc3RDb25jYXRUeXBlKFZNJiB2bSwg
SlNBcnJheSYgZmlyc3RBcnJheSwgSlNBcnJheSYgc2Vjb25kQXJyYXkpCisgICAgeworICAgICAg
ICBJbmRleGluZ1R5cGUgdHlwZSA9IGZpcnN0QXJyYXkuaW5kZXhpbmdUeXBlKCk7CisgICAgICAg
IGlmICh0eXBlICE9IHNlY29uZEFycmF5LmluZGV4aW5nVHlwZSgpKQorICAgICAgICAgICAgcmV0
dXJuIE5vbkFycmF5OworICAgICAgICBpZiAodHlwZSAhPSBBcnJheVdpdGhEb3VibGUgJiYgdHlw
ZSAhPSBBcnJheVdpdGhJbnQzMiAmJiB0eXBlICE9IEFycmF5V2l0aENvbnRpZ3VvdXMpCisgICAg
ICAgICAgICByZXR1cm4gTm9uQXJyYXk7CisgICAgICAgIGlmIChmaXJzdEFycmF5LnN0cnVjdHVy
ZSh2bSktPmhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZSh2bSkKKyAgICAgICAgICAgIHx8IHNl
Y29uZEFycmF5LnN0cnVjdHVyZSh2bSktPmhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZSh2bSkp
CisgICAgICAgICAgICByZXR1cm4gTm9uQXJyYXk7CisgICAgICAgIHJldHVybiB0eXBlOworICAg
IH0KKyAgICBFbmNvZGVkSlNWYWx1ZSBmYXN0Q29uY2F0V2l0aChFeGVjU3RhdGUmLCBKU0FycmF5
Jik7CiAKICAgICBlbnVtIFNoaWZ0Q291bnRNb2RlIHsKICAgICAgICAgLy8gVGhpcyBmb3JtIG9m
IHNoaWZ0IGhpbnRzIHRoYXQgd2UncmUgZG9pbmcgcXVldWVpbmcuIFdpdGggdGhpcyBhc3N1bXB0
aW9uIGluIGhhbmQsCkBAIC0xNDQsNyArMTUyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhBcnJheVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBpbmRl
eGluZ1R5cGUpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSwgaW5kZXhpbmdUeXBlKTsKICAgICB9CiAgICAgICAgIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVjODUzMTU2OTk0Yjc0YmY5Y2I5NGI5OGNiMTQ0YzBlNWM2NmVl
MTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDczICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICoKLSAqLwotCi0j
aWZuZGVmIEpTQXJyYXlJbmxpbmVzX2gKLSNkZWZpbmUgSlNBcnJheUlubGluZXNfaAotCi0jaW5j
bHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUluZGV4aW5nVHlwZSBKU0FycmF5Ojpt
ZW1Db3B5V2l0aEluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUgb3RoZXIpCi17Ci0gICAgSW5kZXhp
bmdUeXBlIHR5cGUgPSBpbmRleGluZ1R5cGUoKTsKLSAgICBpZiAoISh0eXBlICYgSXNBcnJheSAm
JiBvdGhlciAmIElzQXJyYXkpKQotICAgICAgICByZXR1cm4gTm9uQXJyYXk7Ci0KLSAgICBpZiAo
aGFzQW55QXJyYXlTdG9yYWdlKHR5cGUpIHx8IGhhc0FueUFycmF5U3RvcmFnZShvdGhlcikpCi0g
ICAgICAgIHJldHVybiBOb25BcnJheTsKLQotICAgIGlmICh0eXBlID09IEFycmF5V2l0aFVuZGVj
aWRlZCkKLSAgICAgICAgcmV0dXJuIG90aGVyOwotCi0gICAgaWYgKG90aGVyID09IEFycmF5V2l0
aFVuZGVjaWRlZCkKLSAgICAgICAgcmV0dXJuIHR5cGU7Ci0KLSAgICAvLyBXZSBjYW4gbWVtY3B5
IGFuIEludDMyIGFuZCBhIENvbnRpZ3VvdXMgaW50byBhIENvbnRpZ3VvdXMgYXJyYXkgc2luY2UK
LSAgICAvLyBib3RoIHNoYXJlIHRoZSBzYW1lIG1lbW9yeSBsYXlvdXQgZm9yIEludDMyIG51bWJl
cnMuCi0gICAgaWYgKCh0eXBlID09IEFycmF5V2l0aEludDMyIHx8IHR5cGUgPT0gQXJyYXlXaXRo
Q29udGlndW91cykKLSAgICAgICAgJiYgKG90aGVyID09IEFycmF5V2l0aEludDMyIHx8IG90aGVy
ID09IEFycmF5V2l0aENvbnRpZ3VvdXMpKSB7Ci0gICAgICAgIGlmIChvdGhlciA9PSBBcnJheVdp
dGhDb250aWd1b3VzKQotICAgICAgICAgICAgcmV0dXJuIG90aGVyOwotICAgICAgICByZXR1cm4g
dHlwZTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSAhPSBvdGhlcikKLSAgICAgICAgcmV0dXJuIE5v
bkFycmF5OwotCi0gICAgcmV0dXJuIHR5cGU7Ci19Ci0KLWJvb2wgSlNBcnJheTo6Y2FuRmFzdENv
cHkoVk0mIHZtLCBKU0FycmF5KiBvdGhlckFycmF5KQotewotICAgIGlmIChoYXNBbnlBcnJheVN0
b3JhZ2UodGhpcy0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0FueUFycmF5U3RvcmFnZShvdGhlckFy
cmF5LT5pbmRleGluZ1R5cGUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGhhdmUgYSB3YXRjaHBvaW50IGZvciBpbmRleGVkIHByb3BlcnRpZXMgb24g
QXJyYXkucHJvdG90eXBlIGFuZCBPYmplY3QucHJvdG90eXBlCi0gICAgLy8gaW5zdGVhZCBvZiB3
YWxraW5nIHRoZSBwcm90b3R5cGUgY2hhaW4uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTU1OTIKLSAgICBpZiAob3RoZXJBcnJheS0+c3RydWN0dXJlKHZtKS0+aG9s
ZXNNdXN0Rm9yd2FyZFRvUHJvdG90eXBlKHZtKQotICAgICAgICB8fCBvdGhlckFycmF5LT5zdHJ1
Y3R1cmUodm0pLT5ob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUodm0pKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0j
ZW5kaWYgLyogSlNBcnJheUlubGluZXNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDU0MDM0ZjM3YjZjZDlhMzA1NjczMzEx
ZDA2NjkyNjA0ZmZiN2E1OWYuLmJhZTEwYjI1OTU4MzQzMDdjYzFiNWI4OWQwMDMwZWJlZTJmMDI3
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTUxNSw4ICs1MTUsNiBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5VaW50MzJBcnJh
eVByaXZhdGVOYW1lLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZVVpbnQzMildLmNvbnN0cnVj
dG9yLmdldCgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkZsb2F0MzJBcnJheVByaXZhdGVOYW1lLCBtX3R5cGVkQXJyYXlz
W3RvSW5kZXgoVHlwZUZsb2F0MzIpXS5jb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5GbG9hdDY0
QXJyYXlQcml2YXRlTmFtZSwgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVGbG9hdDY0KV0uY29u
c3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0cnVj
dG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkFycmF5UHJpdmF0ZU5hbWUsIGFy
cmF5Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAg
IG1fbW9kdWxlTG9hZGVyLnNldCh2bSwgdGhpcywgTW9kdWxlTG9hZGVyT2JqZWN0OjpjcmVhdGUo
dm0sIHRoaXMsIE1vZHVsZUxvYWRlck9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBpZiAoT3B0aW9uczo6ZXhwb3NlSW50ZXJu
YWxNb2R1bGVMb2FkZXIoKSkKQEAgLTU0MCwxNiArNTM4LDEzIEBAIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29u
c3RydWN0CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNIYXNJbnN0YW5jZUJvdW5kRnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBoYXNJbnN0YW5j
ZUJvdW5kRnVuY3Rpb24pOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSW5zdGFuY2VPZiA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG9iamVjdFByaXZhdGVG
dW5jSW5zdGFuY2VPZik7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVl
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVu
Y0dldFRpbWUpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9y
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1
Y3RvclByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yLCBJc0FycmF5Q29uc3RydWN0b3JJbnRy
aW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNKU0FycmF5ID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlQcm90b1ByaXZhdGVGdW5jSXNK
U0FycmF5LCBJc0pTQXJyYXlJbnRyaW5zaWMpOwotICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
Q29uY2F0TWVtY3B5ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwg
YXJyYXlQcm90b1ByaXZhdGVGdW5jQ29uY2F0TWVtY3B5KTsKLSAgICBKU0Z1bmN0aW9uKiBwcml2
YXRlRnVuY0FwcGVuZE1lbWNweSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0FwcGVuZE1lbWNweSk7Ci0gICAgSlNGdW5jdGlv
biogcHJpdmF0ZUZ1bmNDb25jYXRTbG93UGF0aCA9IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5G
dW5jdGlvbih2bSwgYXJyYXlQcm90b3R5cGVDb25jYXRTbG93UGF0aENvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKTsKKyAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQXJyYXlDb25zdHJ1Y3RvciA9
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5Q29uc3RydWN0
b3JQcml2YXRlRnVuY0lzQXJyYXlDb25zdHJ1Y3Rvcik7CiAKICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8gc3RhdGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0
eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+T2JqZWN0UHJpdmF0ZU5hbWUsIG9iamVjdENvbnN0cnVjdG9y
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5vd25FbnVtZXJhYmxlUHJvcGVydHlLZXlzUHJpdmF0
ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIG93bkVudW1l
cmFibGVQcm9wZXJ0eUtleXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5nZXRUZW1wbGF0ZU9i
amVjdFByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0dldFRlbXBsYXRlT2JqZWN0LCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGVucXVldWVKb2IpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCkBAIC01NjMsNiArNTU4LDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QK
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNl
Qm91bmRGdW5jdGlvblByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0hhc0luc3RhbmNlQm91bmRGdW5j
dGlvbiwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aW5zdGFuY2VPZlByaXZhdGVOYW1lLCBwcml2
YXRlRnVuY0luc3RhbmNlT2YsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkJ1aWx0aW5Mb2dQcml2
YXRlTmFtZSwgYnVpbHRpbkxvZywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+QXJyYXlQcml2YXRl
TmFtZSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TnVtYmVyUHJp
dmF0ZU5hbWUsIG51bWJlckNvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5SZWdF
eHBQcml2YXRlTmFtZSwgbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+U3RyaW5nUHJpdmF0ZU5hbWUsIHN0cmluZ0NvbnN0cnVjdG9yLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCkBAIC01ODQsMTAgKzU4MCw2IEBAIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUg
IyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5pc01hcFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmlu
ZygpLCBwcml2YXRlRnVuY0lzTWFwKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheVBy
aXZhdGVOYW1lLCBhcnJheUNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmlzQXJyYXkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5pc0FycmF5Q29uc3RydWN0b3JQ
cml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNJc0FycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmlzSlNBcnJheVByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0lzSlNBcnJheSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+Y29uY2F0TWVtY3B5UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5j
Q29uY2F0TWVtY3B5LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRNZW1jcHlQcml2YXRl
TmFtZSwgcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmNvbmNhdFNsb3dQYXRoUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNDb25j
YXRTbG93UGF0aCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwSXRlcmF0b3JQcml2YXRlTmFt
ZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgcHJpdmF0ZUZ1bmNN
YXBJdGVyYXRvciksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPm1hcEl0ZXJhdG9yTmV4dFByaXZh
dGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBwcml2YXRl
RnVuY01hcEl0ZXJhdG9yTmV4dCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCBiNjg3NmRjYTU3MGEz
MTlhZDZlMGIxNzk1YzgyOGZmYjdkMmY5NGIxLi5mZmY0MDQyMGNiNWE0ODBlY2M1ZjE3ZTlhY2Y5
OTA3Njc3YWY5MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAt
NjEsNyArNjEsNiBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFB1cmVGb3J3YXJkaW5n
UHJveHlUeXBlLAogICAgIEltcHVyZVByb3h5VHlwZSwKICAgICBXaXRoU2NvcGVUeXBlLAotICAg
IEFycmF5VHlwZSwKICAgICBEaXJlY3RBcmd1bWVudHNUeXBlLAogICAgIFNjb3BlZEFyZ3VtZW50
c1R5cGUsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5oCmluZGV4IDQ3YTdmMzM5NWRhNzA1NTVmMjlmYWY2Yjc2NzhmYzgyNWRlMzg2NGMu
LjFiMjJhYjY0NDQ2YzQyY2YyMjdlZmI5MzFkZmRlNmY1NjY5MDJhZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtOTEsMTMg
KzkxLDYgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RFbXB0eU9iamVjdChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpOwogfQogCi1pbmxpbmUgSlNPYmpl
Y3QqIGNvbnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYXJnKQotewotICAgIGlmIChhcmcuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpOwotICAgIHJldHVybiBhcmcudG9PYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKLX0KLQogLy8gU2VjdGlvbiA2LjIuNC40IG9mIHRoZSBFUzYgc3BlY2lmaWNh
dGlvbi4KIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZyb21wcm9wZXJ0
eWRlc2NyaXB0b3IKIGlubGluZSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFt
bCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCA3NTU4N2QwMjVk
NmI2MjgyNjc5ODNhY2NhODYyNjc2NmViNDNhNmUyLi43ODQzNWNjMjNlOGU2MjRkMTM0ZDVjZTk2
ZjZkY2I0NzI1ZGFmYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC05
NTUsNyArOTU1LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19BcnJh
eS5mcm9tLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVy
bmFsX2dldF9jYWxsc19BcnJheS5wcm90b3R5cGUuY29uY2F0LmpzCi0gIGNtZDogcnVuRVM2IDpu
b3JtYWwKKyAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dl
dF9jYWxsc19BcnJheS5wcm90b3R5cGUucG9wLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19BcnJheS5wcm90b3R5cGUucmV2ZXJz
ZS5qcwpAQCAtMTE5NSw3ICsxMTk1LDcgQEAKIC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9s
c19TeW1ib2wuaGFzSW5zdGFuY2UuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUuanMKLSAgY21k
OiBydW5FUzYgOm5vcm1hbAorICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvd2VsbC1r
bm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLnJlcGxhY2UuanMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyYXktY29uY2F0LXNwcmVhZC1v
YmplY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LWNvbmNh
dC1zcHJlYWQtb2JqZWN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2I1NTFl
YmE5MmFhMTQwOWI3YjQ4ZWExNDRlZDNmZTVhZDdhNjJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyYXktY29uY2F0LXNwcmVhZC1vYmplY3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0OCAr
MCwwIEBACi0vLyBUaGlzIGZpbGUgdGVzdHMgaXMgY29uY2F0IHNwcmVhZGFibGUuCi0KLWZ1bmN0
aW9uIGFycmF5RXEoYSwgYikgewotICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0KLXsKLSAgICBsZXQgbyA9IHswOjEsIDE6
MiwgMjozLCBsZW5ndGg6M307Ci0KLSAgICAvLyBUZXN0IGl0IHdvcmtzIHdpdGggcHJveGllcyBi
eSBkZWZhdWx0Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewotICAgICAg
ICBpZiAoIWFycmF5RXEoQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKG8sbyksIFtvLG9dKSkK
LSAgICAgICAgICAgIHRocm93ICJmYWlsZWQgbm9ybWFsbHkgd2l0aCBhbiBvYmplY3QiCi0gICAg
fQotCi0gICAgLy8gVGVzdCBpdCB3b3JrcyB3aXRoIHNwcmVhZGFibGUgdHJ1ZQotICAgIG9bU3lt
Ym9sLmlzQ29uY2F0U3ByZWFkYWJsZV0gPSB0cnVlOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDAwOyBpKyspIHsKLSAgICAgICAgbGV0IHJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5jb25j
YXQuY2FsbChvLG8pCi0gICAgICAgIGlmICghYXJyYXlFcShyZXN1bHQsIFsxLDIsMywxLDIsM10p
KQotICAgICAgICAgICAgdGhyb3cgImZhaWxlZCB3aXRoIHNwcmVhZCBnb3Q6ICIgKyByZXN1bHQ7
Ci0gICAgfQotCi0gICAgLy8gVGVzdCBpdCB3b3JrcyB3aXRoIG1hbnkgdGhpbmdzCi0gICAgb1tT
eW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlXSA9IHRydWU7Ci0gICAgbGV0IG90aGVyID0ge30KLSAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7Ci0gICAgICAgIGxldCByZXN1bHQg
PSBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwobyxvLHRydWUsWzEsMl0sb3RoZXIpCi0gICAg
ICAgIGlmICghYXJyYXlFcShyZXN1bHQsIFsxLDIsMywxLDIsMyx0cnVlLDEsMixvdGhlcl0pKQot
ICAgICAgICAgICAgdGhyb3cgImZhaWxlZCB3aXRoIHNwcmVhZCBnb3Q6ICIgKyByZXN1bHQ7Ci0g
ICAgfQotCi0gICAgLy8gVGVzdCBpdCB3b3JrcyB3aXRoIHN0cmluZ3MKLSAgICBTdHJpbmcucHJv
dG90eXBlW1N5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGVdID0gdHJ1ZTsKLSAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7Ci0gICAgICAgIGxldCByZXN1bHQgPSBBcnJheS5wcm90
b3R5cGUuY29uY2F0LmNhbGwoImhpIiwiaGkiKQotICAgICAgICAvLyBUaGlzIGlzIHdoYXQgdGhl
IHNwZWMgc2F5cyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuLi4gRDoKLSAgICAgICAgaWYgKCFhcnJh
eUVxKHJlc3VsdCwgWyJoIiwgImkiLCAiaGkiXSkpCi0gICAgICAgICAgICB0aHJvdyAiZmFpbGVk
IHdpdGggc3RyaW5nIGdvdDogIiArIHJlc3VsdCArICIgb24gaXRlcmF0aW9uICIgKyBpOwotICAg
IH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
YXktY29uY2F0LXNwcmVhZC1wcm94eS1leGNlcHRpb24tY2hlY2suanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LWNvbmNhdC1zcHJlYWQtcHJveHktZXhjZXB0aW9u
LWNoZWNrLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWIwNmNjYmQxYjZlMzk3
ZjVkYTZkNDRiMTM5OWIxOWQzOTRkYTIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyYXkt
Y29uY2F0LXNwcmVhZC1wcm94eS1leGNlcHRpb24tY2hlY2suanMKKysrIC9kZXYvbnVsbApAQCAt
MSwzNCArMCwwIEBACi1mdW5jdGlvbiBhcnJheUVxKGEsIGIpIHsKLSAgICBpZiAoYS5sZW5ndGgg
IT09IGIubGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBhLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChhW2ldICE9PSBiW2ldKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotewotICAg
IGxldCBjb25jYXQgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0OwotICAgIG5vSW5saW5lKGNvbmNh
dCk7Ci0gICAgbGV0IGFycmF5ID0gWzEsIDIsIDNdOwotICAgIGxldCB7cHJveHk6cCwgcmV2b2tl
fSA9IFByb3h5LnJldm9jYWJsZShhcnJheSwgeyBnZXQgOiBmdW5jdGlvbihvLCBrKSB7IHJldHVy
biBvW2tdOyB9IH0pOwotCi0gICAgY29uY2F0LmNhbGwocCxwKTsKLQotICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgaWYgKCFhcnJheUVxKGNvbmNhdC5jYWxs
KHAscCksIFsxLDIsMywxLDIsM10pKQotICAgICAgICAgICAgdGhyb3cgImJhZCI7Ci0gICAgfQot
ICAgIHJldm9rZSgpOwotICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgdHJ5IHsKLSAgICAgICAgY29u
Y2F0LmNhbGwocCxwKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGZhaWxlZCA9IGZhbHNl
OwotICAgIH0KLQotICAgIGlmIChmYWlsZWQpCi0gICAgICAgIHRocm93ICJiYWQiCi0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyYXktY29uY2F0
LXNwcmVhZC1wcm94eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
YXktY29uY2F0LXNwcmVhZC1wcm94eS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTJjYmQ0OGVjMjk2MzU1MGUxYjExOGRjMzZkNDUyZDg3N2EyZDNmNi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2FycmF5LWNvbmNhdC1zcHJlYWQtcHJveHkuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwzOSArMCwwIEBACi0vLyBUaGlzIGZpbGUgdGVzdHMgaXMgY29uY2F0IHNwcmVhZGFibGUuCi0K
LWZ1bmN0aW9uIGFycmF5RXEoYSwgYikgewotICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0KLXsKLSAgICBsZXQgYXJyYXkg
PSBbMSwyLDNdOwotICAgIGxldCB7cHJveHk6cCwgcmV2b2tlfSA9IFByb3h5LnJldm9jYWJsZShh
cnJheSwgeyBnZXQgOiBmdW5jdGlvbihvLCBrKSB7IHJldHVybiBvW2tdOyB9IH0pOwotCi0gICAg
Ly8gVGVzdCBpdCB3b3JrcyB3aXRoIHByb3hpZXMgYnkgZGVmYXVsdAotICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgaWYgKCFhcnJheUVxKEFycmF5LnByb3Rv
dHlwZS5jb25jYXQuY2FsbChwLHApLCBbMSwyLDMsMSwyLDNdKSkKLSAgICAgICAgICAgIHRocm93
ICJmYWlsZWQgbm9ybWFsbHkgd2l0aCBhIHByb3h5IgotICAgIH0KLQotICAgIC8vIFRlc3QgaXQg
d29ya3Mgd2l0aCBzcHJlYWRhYmxlIGZhbHNlLgotICAgIHBbU3ltYm9sLmlzQ29uY2F0U3ByZWFk
YWJsZV0gPSBmYWxzZTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7Ci0g
ICAgICAgIGlmICghYXJyYXlFcShBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwocCxwKSwgW3As
cF0pKQotICAgICAgICAgICAgdGhyb3cgImZhaWxlZCB3aXRoIG5vIHNwcmVhZCIKLSAgICB9Ci0K
LSAgICBwW1N5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGVdID0gdW5kZWZpbmVkOwotICAgIHJldm9r
ZSgpOwotICAgIHBhc3NlZCA9IHRydWU7Ci0gICAgdHJ5IHsKLSAgICAgICAgQXJyYXkucHJvdG90
eXBlLmNvbmNhdC5jYWxsKHAsW10pOwotICAgICAgICBwYXNzZWQgPSBmYWxzZTsKLSAgICB9IGNh
dGNoIChlKSB7IH0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9hcnJheS1jb25jYXQtd2l0aC1zbG93LWluZGV4aW5ndHlwZXMuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LWNvbmNhdC13aXRoLXNsb3ctaW5kZXhp
bmd0eXBlcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkyZWZiMWZmM2E4YzI3
NDE3YTUyMzhhNjljOGI2ZWRlNGI5NjFhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5
LWNvbmNhdC13aXRoLXNsb3ctaW5kZXhpbmd0eXBlcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDM1
ICswLDAgQEAKLWZ1bmN0aW9uIGFycmF5RXEoYSwgYikgewotICAgIGlmIChhLmxlbmd0aCAhPT0g
Yi5sZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8
IGEubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0KLXsKLQotICAg
IGFycmF5ID0gWzEsMl07Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFycmF5LCAyLCB7IGdl
dDogKCkgPT4geyByZXR1cm4gMTsgfSB9KTsKLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwOyBpKyspIHsKLSAgICAgICAgaWYgKCFhcnJheUVxKEFycmF5LnByb3RvdHlwZS5jb25jYXQu
Y2FsbChhcnJheSxhcnJheSksIFsxLDIsMSwxLDIsMV0pKQotICAgICAgICAgICAgdGhyb3cgImZh
aWxlZCBub3JtYWxseSB3aXRoIGEgZ2V0dGVyIgotICAgICAgICBpZiAoIWFycmF5RXEoQXJyYXku
cHJvdG90eXBlLmNvbmNhdC5jYWxsKFtdLGFycmF5KSwgWzEsMiwxXSkpCi0gICAgICAgICAgICB0
aHJvdyAiZmFpbGVkIHdpdGggdW5kZWNpZGVkIGFuZCBhIGdldHRlciIKLSAgICB9Ci0KLSAgICAv
LyBUZXN0IHdpdGggaW5kZXhlZCB0eXBlcyBvbiBwcm90b3R5cGUuCi0gICAgYXJyYXkgPSBbMSwy
XTsKLSAgICBhcnJheS5sZW5ndGggPSAzOwotICAgIEFycmF5LnByb3RvdHlwZVsyXSA9IDE7Ci0K
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7Ci0gICAgICAgIGlmICghYXJy
YXlFcShBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoYXJyYXksYXJyYXkpLCBbMSwyLDEsMSwy
LDFdKSkKLSAgICAgICAgICAgIHRocm93ICJmYWlsZWQgbm9ybWFsbHkgd2l0aCBhbiBpbmRleGVk
IHByb3RvdHlwZSIKLSAgICAgICAgaWYgKCFhcnJheUVxKEFycmF5LnByb3RvdHlwZS5jb25jYXQu
Y2FsbChbXSxhcnJheSksIFsxLDIsMV0pKQotICAgICAgICAgICAgdGhyb3cgImZhaWxlZCB3aXRo
IHVuZGVjaWRlZCBhbmQgYW4gaW5kZXhlZCBwcm90b3R5cGUiCi0gICAgfQotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJheS1zcGVjaWVzLWNvbmZp
Zy1hcnJheS1jb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyYXktc3BlY2llcy1jb25maWctYXJyYXktY29uc3RydWN0b3IuanMKaW5kZXggODQ3N2Q1
YjI5M2VlYWIyNjQ0NjhhOTYzODI0MjVjNTE2OTZiMDA4Ny4uY2QwZWYyMWMxZGE2ZDE3MzM3NTQz
ZThlOGI5NjRhNjMxNzEzYzg5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hcnJheS1zcGVjaWVzLWNvbmZpZy1hcnJheS1jb25zdHJ1Y3Rvci5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LXNwZWNpZXMtY29uZmln
LWFycmF5LWNvbnN0cnVjdG9yLmpzCkBAIC0xNiw5ICsxNiw2IEBAIGlmICghKHJlc3VsdCBpbnN0
YW5jZW9mIEEpKQogCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXksIFN5bWJvbC5zcGVjaWVz
LCB7IHZhbHVlOiBJbnQzMkFycmF5LCBjb25maWd1cmFibGU6IHRydWUgfSk7CiAKLS8vIFdlIGNh
bid0IHdyaXRlIHRvIHRoZSBsZW5ndGggcHJvcGVydHkgb24gYSB0eXBlZCBhcnJheSBieSBkZWZh
dWx0LgotT2JqZWN0LmRlZmluZVByb3BlcnR5KEludDMyQXJyYXkucHJvdG90eXBlLCAibGVuZ3Ro
IiwgeyB2YWx1ZTogMCwgd3JpdGFibGU6IHRydWUgfSk7Ci0KIHJlc3VsdCA9IGZvby5jb25jYXQo
WzFdKTsKIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIEludDMyQXJyYXkpKQogICAgIHRocm93ICJj
b25jYXQgZmFpbGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X2FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCmluZGV4IGQ0
NzBhNGUyNWUzYjNjOWQ2MzM4M2M5MDM5ZDM0ODhhYmQ0YmI1YzMuLjAxOGMxMzI3OGRiYTNkZDAz
MTcxZTUzZWZjMGFkN2RmMGUxMDdlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEFycmF5VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCksIEFycmF5Q2xhc3MpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgQXJyYXlDbGFzcyk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMTE0Mjc3NTMxZDMzNmJiNGU5MDQzYzRhOGUxY2Y4ZDkwNDJlNjNmNS4uYjFmZWEz
YWZhYTcxY2FlMjJmZjA4NDdhMDFmMTc1OGQzMWFkM2E1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE2LTA0LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk5MTI4IGFuZCByMTk5MTQxLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzQ4CisKKyAg
ICAgICAgQ2F1c2VzIGNyYXNoZXMgb24gbXVsdGlwbGUgd2VicGFnZXMgKFJlcXVlc3RlZCBieSBr
ZWl0aF9taV8gb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdl
c2V0czoKKworICAgICAgICAiW0VTNl0gQWRkIHN1cHBvcnQgZm9yIFN5bWJvbC5pc0NvbmNhdFNw
cmVhZGFibGUuIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1MzUxCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5OTEy
OAorCisgICAgICAgICJVbnJldmlld2VkLCB1bmNvbW1lbnQgYWNjaWRlbnRhbGx5IGNvbW1lbnRl
ZCBsaW5lIGluIHRlc3QuIgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xOTkxNDEKKwogMjAxNi0wNC0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIHdpbmRvdy5DcnlwdG8gaXMgbWlzc2luZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDVmNzNiMGJi
MWNjZDA2YWI4NjI3NzhhYjc3MDZmYmU0YjNiMjQyYzAuLmVjZTkwOTdiYjE1YWM0NTUwMzgzYzkx
ZGE5NmFiZTBkMTAwZWNiMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRP
d25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9PYmplY3Qt
Z2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKQEAgLTYxLDcgKzYxLDcgQEAgUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9yKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3By
b3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IucHJvdG90eXBl
KSBpcyBbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0cmluZyddCiBQQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWF0aCkgaXMgWydFJywnTE4xMCcsJ0xOMicsJ0xP
RzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gn
LCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6
MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90Jywn
aW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFu
ZG9tJywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1
bmMnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEpTT04pIGlzIFsncGFyc2UnLCAn
c3RyaW5naWZ5J10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTeW1ib2wpIGlzIFsn
Zm9yJywgJ2hhc0luc3RhbmNlJywgJ2lzQ29uY2F0U3ByZWFkYWJsZScsICdpdGVyYXRvcicsICdr
ZXlGb3InLCAnbGVuZ3RoJywgJ21hdGNoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcs
ICdzcGVjaWVzJywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10K
K1BBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTeW1ib2wpIGlzIFsnZm9yJywgJ2hhc0lu
c3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScs
ICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAndG9QcmltaXRpdmUnLCAndG9TdHJp
bmdUYWcnLCAndW5zY29wYWJsZXMnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5
bWJvbC5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZidd
CiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWFwKSBpcyBbJ2xlbmd0aCcsICduYW1l
JywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWFwLnByb3Rv
dHlwZSkgaXMgWydjbGVhcicsICdjb25zdHJ1Y3RvcicsICdkZWxldGUnLCAnZW50cmllcycsICdm
b3JFYWNoJywgJ2dldCcsICdoYXMnLCAna2V5cycsICdzZXQnLCAnc2l6ZScsICd2YWx1ZXMnXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQKaW5kZXggNTIyOGViNmU5MGRjZDM2ZjcwYzZhMTY1OGU3MThjZDNm
Njk3NDhlZi4uYzRlOWFmY2M0Njk3ZWYyYzFiMzEzNGEzNzAwYjg2ZGYzYjFlZjgzZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2FycmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CkBAIC01LDcgKzUsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQog
CiBQQVNTIEFycmF5LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J0FycmF5LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHVuZGVmaW5lZCknKS4KIFBBU1MgQXJyYXku
cHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXku
cHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwodW5kZWZpbmVkKScpLgotUEFTUyBBcnJheS5w
cm90b3R5cGUuY29uY2F0LmNhbGwodW5kZWZpbmVkLCBbXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXJyYXkucHJvdG90eXBlLmNvbmNhdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
dW5kZWZpbmVkLgorUEFTUyBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwodW5kZWZpbmVkLCBb
XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ0FycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbCh1bmRlZmluZWQsIFtdKScp
LgogUEFTUyBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKHVuZGVmaW5lZCwgW10pIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKHVuZGVmaW5lZCwgW10pJykuCiBQQVNTIEFycmF5
LnByb3RvdHlwZS5wb3AuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUu
cG9wLmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKHVu
ZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKHVuZGVmaW5l
ZCwge30pJykuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2Jq
ZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKaW5kZXggNmY1MzE2YjdhYWQxNzU2MDM2Y2UzNDgw
MWZlNTU2YmUxN2U0Y2MwNC4uMjM0NWRmNjBiMzhmNzk5ZmEwNWIwNTY2NGYwODNlYzE4YTUwZDUx
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Q
cm9wZXJ0eU5hbWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3Qt
Z2V0T3duUHJvcGVydHlOYW1lcy5qcwpAQCAtNzAsNyArNzAsNyBAQCB2YXIgZXhwZWN0ZWRQcm9w
ZXJ0eU5hbWVzU2V0ID0gewogICAgICJFcnJvci5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3Rvcics
ICdtZXNzYWdlJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCiAgICAgIk1hdGgiOiAiWydFJywnTE4x
MCcsJ0xOMicsJ0xPRzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdh
Y29zJywnYWNvc2gnLCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQn
LCdjZWlsJywnY2x6MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3Vu
ZCcsJ2h5cG90JywnaW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWlu
JywncG93JywncmFuZG9tJywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4n
LCd0YW5oJywndHJ1bmMnXSIsCiAgICAgIkpTT04iOiAiWydwYXJzZScsICdzdHJpbmdpZnknXSIs
Ci0gICAgIlN5bWJvbCI6ICJbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpc0NvbmNhdFNwcmVhZGFi
bGUnLCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3By
b3RvdHlwZScsICdzZWFyY2gnLCAnc3BlY2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1Rh
ZycsICd1bnNjb3BhYmxlcyddIiwKKyAgICAiU3ltYm9sIjogIlsnZm9yJywgJ2hhc0luc3RhbmNl
JywgJ2l0ZXJhdG9yJywgJ2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90
b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcn
LCAndW5zY29wYWJsZXMnXSIsCiAgICAgIlN5bWJvbC5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3Rv
cicsICd0b1N0cmluZycsICd2YWx1ZU9mJ10iLAogICAgICJNYXAiOiAiWydsZW5ndGgnLCAnbmFt
ZScsICdwcm90b3R5cGUnXSIsCiAgICAgIk1hcC5wcm90b3R5cGUiOiAiWydjbGVhcicsICdjb25z
dHJ1Y3RvcicsICdkZWxldGUnLCAnZW50cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMnLCAn
a2V5cycsICdzZXQnLCAnc2l6ZScsICd2YWx1ZXMnXSIsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>