<?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>164402</bug_id>
          
          <creation_ts>2016-11-03 21:38:41 -0700</creation_ts>
          <short_desc>REGRESSION(r208364): broke the build (Requested by smfr on #webkit).</short_desc>
          <delta_ts>2016-11-03 21:47:21 -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>164309</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1248025</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 21:38:41 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/208364 broke the build:
broke the build (Requested by smfr 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>1248027</commentid>
    <comment_count>1</comment_count>
      <attachid>293856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 21:39:21 -0700</bug_when>
    <thetext>Created attachment 293856
ROLLOUT of r208364

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>1248028</commentid>
    <comment_count>2</comment_count>
      <attachid>293856</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-03 21:39:45 -0700</bug_when>
    <thetext>Comment on attachment 293856
ROLLOUT of r208364

Breakage: https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20%28Build%29/builds/11562/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248029</commentid>
    <comment_count>3</comment_count>
      <attachid>293856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 21:41:57 -0700</bug_when>
    <thetext>Comment on attachment 293856
ROLLOUT of r208364

Clearing flags on attachment: 293856

Committed r208367: &lt;http://trac.webkit.org/changeset/208367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248030</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-03 21:42:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248034</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-11-03 21:47:21 -0700</bug_when>
    <thetext>Darn - that&apos;s what I get for adding an assertion and only rebuilding release.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293856</attachid>
            <date>2016-11-03 21:39:21 -0700</date>
            <delta_ts>2016-11-03 21:41:57 -0700</delta_ts>
            <desc>ROLLOUT of r208364</desc>
            <filename>bug-164402-20161103213519.patch</filename>
            <type>text/plain</type>
            <size>77632</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OGJmMmVjZmFiOGNlZjc1YjlmZTUxMWQ2NjE2ODU0NDQ5MGU4OGY0Li5lMjJmNDZjNjExNzkyYWNl
ZjY5ODkwYzFkM2ViMGMyMDUwMWI1NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0xMS0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM2NC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDQwMgorCisgICAg
ICAgIGJyb2tlIHRoZSBidWlsZCAoUmVxdWVzdGVkIGJ5IHNtZnIgb24gI3dlYmtpdCkuCisKKyAg
ICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJERkcgcGxheXMgZmFzdCBhbmQg
bG9vc2Ugd2l0aCB0aGUgc2hhZG93IHZhbHVlcyBvZiBhIFBoaSIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDMwOQorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8yMDgzNjQKKwogMjAxNi0xMS0wMyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBwbGF5cyBmYXN0IGFuZCBsb29zZSB3
aXRoIHRoZSBzaGFkb3cgdmFsdWVzIG9mIGEgUGhpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk2NDY5NzQxYmE1OTA4YjNhNGE2
ZmM4YWEwYjc1YjQ0ZWQ5OTI3MmMuLmM5M2NkYzFhNjFlZGJlMTZmODkxMDY2NjFhODU0ZDAyNjU4
YjQyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTEtMDMgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMDgzNjQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQ0MDIKKworICAgICAgICBicm9rZSB0aGUgYnVpbGQgKFJlcXVlc3RlZCBieSBzbWZyIG9u
ICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiREZH
IHBsYXlzIGZhc3QgYW5kIGxvb3NlIHdpdGggdGhlIHNoYWRvdyB2YWx1ZXMgb2YgYSBQaGkiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQzMDkKKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjA4MzY0CisKIDIwMTYtMTEt
MDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgcGxheXMg
ZmFzdCBhbmQgbG9vc2Ugd2l0aCB0aGUgc2hhZG93IHZhbHVlcyBvZiBhIFBoaQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGJiZjZmZTQ4MDYyNjM2YmI4ZDc1YWZmMjEyMDQy
MWIwZGU5MWY2NWQuLmFkNzBjYTZjNjM5ZTAzZTY0MzVjYzZkMWY3MTZjNDM4MTZkNjM0NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTMxMiw3ICszMTIsNiBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdGYWlsZWRGaW5hbGl6ZXIuY3BwCiAg
ICAgZGZnL0RGR0ZpbmFsaXplci5jcHAKICAgICBkZmcvREZHRml4dXBQaGFzZS5jcHAKLSAgICBk
ZmcvREZHRmxvd0luZGV4aW5nLmNwcAogICAgIGRmZy9ERkdGbHVzaEZvcm1hdC5jcHAKICAgICBk
ZmcvREZHRmx1c2hlZEF0LmNwcAogICAgIGRmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlLmNwcApAQCAtMzQ0LDkgKzM0Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcAogICAgIGRmZy9ERkdOYXR1
cmFsTG9vcHMuY3BwCiAgICAgZGZnL0RGR05vZGUuY3BwCi0gICAgZGZnL0RGR05vZGVBYnN0cmFj
dFZhbHVlUGFpci5jcHAKICAgICBkZmcvREZHTm9kZUZsYWdzLmNwcAotICAgIGRmZy9ERkdOb2Rl
Rmxvd1Byb2plY3Rpb24uY3BwCiAgICAgZGZnL0RGR05vZGVPcmlnaW4uY3BwCiAgICAgZGZnL0RG
R09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuY3BwCiAgICAgZGZnL0RGR09TUkVudHJ5LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxOTk3MzQwNDc0MGM3OTQyZTY3Yjk4
MGM4ZDNlNmJkMGM3ZWI3MjEzLi4wMTZlNGY5ZjY2ZTE4NjRhNWI3MTIyNjc1NjQyZTFkZDZmZGRh
ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI5LDEzICsxMjksNiBAQAog
CQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMUUzQTQ0MTUzNENC
QUQwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovOyB9OwogCQkwRjFFM0E2NzE1
M0EyMUUyMDAwRjk0NTYgLyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNjUxNTNBMjFERjAwMEY5
NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2ZVBsYW4uaCAqLzsgfTsKIAkJMEYxRkU1MUMxOTIy
QTNCQzAwNjk4N0M1IC8qIEFib3J0UmVhc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFGRTUxQjE5MjJBM0JDMDA2OTg3QzUgLyogQWJvcnRSZWFz
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkw
RjIwMTc3RjFEQ0FEQzMzMDBFQTU5NTAgLyogREZHRmxvd0luZGV4aW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjAxNzdEMURDQURDMzAwMEVB
NTk1MCAvKiBERkdGbG93SW5kZXhpbmcuY3BwICovOyB9OwotCQkwRjIwMTc4MDFEQ0FEQzM1MDBF
QTU5NTAgLyogREZHRmxvd0luZGV4aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc3RTFEQ0FEQzMwMDBFQTU5NTAgLyogREZHRmxvd0luZGV4
aW5nLmggKi87IH07Ci0JCTBGMjAxNzgyMURDQURENDIwMEVBNTk1MCAvKiBERkdGbG93TWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc4MTFE
Q0FERDQwMDBFQTU5NTAgLyogREZHRmxvd01hcC5oICovOyB9OwotCQkwRjIwMTc4NTFEQ0FFMTQ5
MDBFQTU5NTAgLyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIwMTc4NDFEQ0FFMTQ3MDBFQTU5NTAgLyogREZH
Tm9kZUZsb3dQcm9qZWN0aW9uLmggKi87IH07Ci0JCTBGMjAxNzg2MURDQUUxNEMwMEVBNTk1MCAv
KiBERkdOb2RlRmxvd1Byb2plY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMDE3ODMxRENBRTE0NzAwRUE1OTUwIC8qIERGR05vZGVGbG93
UHJvamVjdGlvbi5jcHAgKi87IH07Ci0JCTBGMjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdO
b2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjAxNzg4MURDQjk0MjIwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RW
YWx1ZVBhaXIuaCAqLzsgfTsKLQkJMEYyMDE3OEExRENCOTQyNjAwRUE1OTUwIC8qIERGR05vZGVB
YnN0cmFjdFZhbHVlUGFpci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjIwMTc4NzFEQ0I5NDIyMDBFQTU5NTAgLyogREZHTm9kZUFic3RyYWN0VmFs
dWVQYWlyLmNwcCAqLzsgfTsKIAkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxS
ZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIwQzI1ODFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCAqLzsgfTsK
IAkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRC
RTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyMUMyN0YxNEJFQUE4MjAwQURD
NjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNv
bnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTI1MjQsMTMgKzI1MTcsNiBAQAogCQkwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyog
REZHU2xvd1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFFM0E2NTE1M0EyMURGMDAwRjk0NTYg
LyogREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmg7IHBhdGggPSBkZmcvREZHU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjFGRTUx
QjE5MjJBM0JDMDA2OTg3QzUgLyogQWJvcnRSZWFzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWJvcnRSZWFzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEYyMDE3N0QxRENBREMzMDAwRUE1OTUwIC8qIERGR0Zsb3dJbmRleGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGbG93SW5kZXhpbmcuY3BwOyBwYXRoID0g
ZGZnL0RGR0Zsb3dJbmRleGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
MjAxNzdFMURDQURDMzAwMEVBNTk1MCAvKiBERkdGbG93SW5kZXhpbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmxvd0luZGV4aW5nLmg7IHBhdGggPSBkZmcvREZHRmxv
d0luZGV4aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMjAxNzgxMURDQURE
NDAwMEVBNTk1MCAvKiBERkdGbG93TWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0Zsb3dNYXAuaDsgcGF0aCA9IGRmZy9ERkdGbG93TWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGMjAxNzgzMURDQUUxNDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1By
b2plY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9k
ZUZsb3dQcm9qZWN0aW9uLmNwcDsgcGF0aCA9IGRmZy9ERkdOb2RlRmxvd1Byb2plY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjIwMTc4NDFEQ0FFMTQ3MDBFQTU5NTAg
LyogREZHTm9kZUZsb3dQcm9qZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR05vZGVGbG93UHJvamVjdGlvbi5oOyBwYXRoID0gZGZnL0RGR05vZGVGbG93UHJvamVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjIwMTc4NzFEQ0I5NDIyMDBF
QTU5NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5jcHA7IHBhdGggPSBk
ZmcvREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMEYyMDE3ODgxRENCOTQyMjAwRUE1OTUwIC8qIERGR05vZGVBYnN0cmFjdFZhbHVlUGFp
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdOb2RlQWJzdHJhY3RWYWx1
ZVBhaXIuaDsgcGF0aCA9IGRmZy9ERkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMEMyNTgxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxS
ZWdpc3Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXJ0dWFs
UmVnaXN0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZl
bnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVu
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NDMsNiArNjcyOSw4IEBA
CiAJCQkJMEZGRkM5NEUxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi8sCiAJCQkJ
MEYyRkM3NzAxNkUxMkY2RjAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmNwcCAqLywKIAkJCQkwRjJG
Qzc3MTE2RTEyRjZGMDAzOEQ5NzYgLyogREZHRENFUGhhc2UuaCAqLywKKwkJCQlFMzIyRTVBMDFE
QTY0NDM1MDA2RTc3MDkgLyogREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8sCisJCQkJ
RTMyMkU1QTExREE2NDQzNTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCAq
LywKIAkJCQkwRjhGMkI5NzE3MkYwNEZEMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJz
LmNwcCAqLywKIAkJCQkwRjhGMkI5ODE3MkYwNEZEMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50
aWZpZXJzLmggKi8sCiAJCQkJMEZGQzkyMTMxQjk0RTgzRTAwNzFERDY2IC8qIERGR0Rlc2lyZWRJ
bmZlcnJlZFR5cGUuaCAqLywKQEAgLTY3NTcsOCArNjc0NSw2IEBACiAJCQkJMEY1QTEyNzExOTJE
OUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5jcHAgKi8sCiAJCQkJMEY1QTEyNzIxOTJEOUZERjAw
ODc2NEEzIC8qIERGR0RvZXNHQy5oICovLAogCQkJCTBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3MiAv
KiBERkdEb21pbmF0b3JzLmggKi8sCi0JCQkJRTMyMkU1QTAxREE2NDQzNTAwNkU3NzA5IC8qIERG
R0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwICovLAotCQkJCUUzMjJFNUExMURBNjQ0MzUwMDZF
NzcwOSAvKiBERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmggKi8sCiAJCQkJMEYxRTNBNDQxNTM0
Q0JBRDAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi8sCiAJCQkJMEZEM0M4MjAx
NDExNUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi8sCiAJCQkJMEZEM0M4MjIxNDExNUQw
RTAwRkQ4MUNCIC8qIERGR0RyaXZlci5oICovLApAQCAtNjc3NSw5ICs2NzYxLDYgQEAKIAkJCQlB
NzhBOTc2RjE3OTczOEI4MDA5REY3NDQgLyogREZHRmluYWxpemVyLmggKi8sCiAJCQkJMEYyQkRD
MTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICovLAogCQkJCTBGMkJEQzEz
MTUxQzVENEEwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggKi8sCi0JCQkJMEYyMDE3N0QxRENB
REMzMDAwRUE1OTUwIC8qIERGR0Zsb3dJbmRleGluZy5jcHAgKi8sCi0JCQkJMEYyMDE3N0UxRENB
REMzMDAwRUE1OTUwIC8qIERGR0Zsb3dJbmRleGluZy5oICovLAotCQkJCTBGMjAxNzgxMURDQURE
NDAwMEVBNTk1MCAvKiBERkdGbG93TWFwLmggKi8sCiAJCQkJMEY5RDMzOTQxN0ZGQzRFNjAwNzND
MkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgKi8sCiAJCQkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJD
IC8qIERGR0ZsdXNoZWRBdC5oICovLAogCQkJCUE3RDg5Q0U4MTdBMEI4Q0MwMDc3M0FEOCAvKiBE
RkdGbHVzaEZvcm1hdC5jcHAgKi8sCkBAIC02ODQ1LDEzICs2ODI4LDkgQEAKIAkJCQlBNzM3ODEw
QjE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggKi8sCiAJCQkJMEZCNEI1MUUx
NkI2Mjc3MjAwM0Y2OTZCIC8qIERGR05vZGUuY3BwICovLAogCQkJCTg2RUNBM0U5MTMyREVGMUMw
MDJCMkFENyAvKiBERkdOb2RlLmggKi8sCi0JCQkJMEYyMDE3ODcxRENCOTQyMjAwRUE1OTUwIC8q
IERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5jcHAgKi8sCi0JCQkJMEYyMDE3ODgxRENCOTQyMjAw
RUE1OTUwIC8qIERGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oICovLAogCQkJCTBGQjRCNTFGMTZC
NjI3NzIwMDNGNjk2QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggKi8sCiAJCQkJMEZBNTgxQjcxNTBF
OTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUy
QTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovLAotCQkJCTBGMjAxNzgzMURDQUUxNDcwMEVB
NTk1MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uY3BwICovLAotCQkJCTBGMjAxNzg0MURDQUUx
NDcwMEVBNTk1MCAvKiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCAqLywKIAkJCQkwRjVEMDg1QzFC
OENGOTlEMDAxMTQzQjQgLyogREZHTm9kZU9yaWdpbi5jcHAgKi8sCiAJCQkJMEYzMDBCNzcxOEFC
MDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCAqLywKIAkJCQkwRkE1ODFCOTE1MEU5NTJB
MDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAqLywKQEAgLTc2MzMsNyArNzYxMiw2IEBACiAJCQkJ
MEZFQzg1NzIxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMzM4REZBMUJFOTZBQTgwMDEzQzg4RiAvKiBCM0NDYWxsVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzM4RTE2MUJGMDI3NkMwMDEzQzg4RiAvKiBCM1ZhbHVlS2V5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyMDE3ODIxRENBREQ0MjAwRUE1OTUwIC8qIERGR0Zs
b3dNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTc0MUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJDQ2FsbFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTc2MUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA5MzFDMEQ2N0VFMDAw
NTJCRkEgLyogQWlyVXNlQ291bnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTg1MjAsNyArODQ5OCw2
IEBACiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIENMb29wU3RhY2tJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTg1NTM5MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmlu
Z0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMjAxNzg1MURDQUUxNDkwMEVBNTk1MCAv
KiBERkdOb2RlRmxvd1Byb2plY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTU1QjhBMURB
RTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzBFQzBFQzMxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDcwQTQ3MUQ1NDNBOEIwMDZFNzIzMiAvKiBDZWxsQ29u
dGFpbmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg2MTgsNyArODU5NSw2IEBACiAJCQkJMTQxNDQ4
Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNEQyRjNEQjEzOUY0QkUyMDA0OTEwMzEgLyogTWFya2VkU3BhY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MkQ2RjEyMTM1MzlBNDEwMEIwMkU4NiAvKiBNYXJrU3RhY2suaCBpbiBIZWFkZXJz
ICovLAotCQkJCTBGMjAxNzg5MURDQjk0MjQwMEVBNTk1MCAvKiBERkdOb2RlQWJzdHJhY3RWYWx1
ZVBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTJFNENEMTUyMzg5RUMwMEM4MzZCRSAvKiBN
YXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM0MEE0ODUxQTkwNTFBRjAwRDczQ0NB
IC8qIE1hdGhDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDNDMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBNYXRoT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTg2ODcsNyArODY2Myw2IEBA
CiAJCQkJMEZCMzg3OTAxQkZCQzQ0RDAwRTNBQjFFIC8qIEFpck9wdGltaXplQmxvY2tPcmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRENFRTIyMEQxQ0VCQUY3NTAwMEMyMzk2IC8qIERGR051bGxB
YnN0cmFjdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCQTE2NkFEMzYwMDAwRjVC
QTMgLyogUHJvZmlsZXJDb21waWxhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyMDE3ODAx
RENBREMzNTAwRUE1OTUwIC8qIERGR0Zsb3dJbmRleGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGNzI5QkIxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjRBMzhGQTFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmls
ZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTk4ODMsNyArOTg1OCw2IEBA
CiAJCQkJQTU4NDBFMjAxODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQTc2MjA0MURCOTI0MjYwMEI3QTJGRCAvKiBDb2xsZWN0
aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4QTdCRUYxQjgyOTc1QTAwMkQ5MTU3
IC8qIElubGluZUNhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjIwMTc4QTFEQ0I5
NDI2MDBFQTU5NTAgLyogREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjRFNTU1MTdGMEI3MUMwMEFCQjIxNyAvKiBJbmxpbmVDYWxsRnJhbWVTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTVDRUVFMTQxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3Rv
ckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAxMTMsNyAr
MTAwODcsNiBAQAogCQkJCTBGMzczMDhDMUMwQkQyOTEwMDA1MkJGQSAvKiBCM1BoaUNoaWxkcmVu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY5RERGMTA3RUM3RTcwMDY1MDQ0NiAvKiBNYXRo
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkwMjEzRTNEMTIzQTQwQzIwMEQ0MjJGMyAv
KiBNZW1vcnlTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGMjAxNzdGMURDQURD
MzMwMEVBNTk1MCAvKiBERkdGbG93SW5kZXhpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
NTQ2N0QxNEY1Q0ZENjAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFu
YWx5emVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzNTVGMzUyMUI3REM4NTMwMEM1MERDNSAv
KiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDIxMSw3ICsx
MDE4NCw2IEBACiAJCQkJQTVGRDAwNjcxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2RDE4OUIwMEFBMDA2MzMyMzEgLyogU2Ny
aXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDZGMTg5QjAwQUEwMDYz
MzIzMSAvKiBTY3JpcHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYyMDE3ODYx
RENBRTE0QzAwRUE1OTUwIC8qIERGR05vZGVGbG93UHJvamVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNUZEMDA3RDE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTAzRkEyNTE4OEVGRkZEMDAxMTBGMTQgLyogU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1RDkzQTUxODUwMTJBODAw
NDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAppbmRleCBlNzI3YzM2YzkyY2QzMjA1
ODA3MjgzMDFiNWJkYjIxMDQ4Yjg2MjA1Li43OTk5NzA3MTdhM2ZiM2RkOTFjMTkxMzVkZTU3NDBi
NTYyZjZjZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxp
dmVuZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5o
CkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBUbXBMaXZlbmVzc0FkYXB0ZXIgewogCiAgICAgVG1w
TGl2ZW5lc3NBZGFwdGVyKENvZGUmKSB7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBudW1JbmRp
Y2VzKENvZGUmIGNvZGUpCisgICAgc3RhdGljIHVuc2lnbmVkIG1heEluZGV4KENvZGUmIGNvZGUp
CiAgICAgewogICAgICAgICB1bnNpZ25lZCBudW1UbXBzID0gY29kZS5udW1UbXBzKGFkYXB0ZXJU
eXBlKTsKICAgICAgICAgcmV0dXJuIEFic29sdXRlVG1wTWFwcGVyPGFkYXB0ZXJUeXBlPjo6YWJz
b2x1dGVJbmRleChudW1UbXBzKTsKQEAgLTY1LDkgKzY1LDkgQEAgc3RydWN0IFN0YWNrU2xvdExp
dmVuZXNzQWRhcHRlciB7CiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBudW1J
bmRpY2VzKENvZGUmIGNvZGUpCisgICAgc3RhdGljIHVuc2lnbmVkIG1heEluZGV4KENvZGUmIGNv
ZGUpCiAgICAgewotICAgICAgICByZXR1cm4gY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpOworICAg
ICAgICByZXR1cm4gY29kZS5zdGFja1Nsb3RzKCkuc2l6ZSgpIC0gMTsKICAgICB9CiAgICAgc3Rh
dGljIGJvb2wgYWNjZXB0c1R5cGUoQXJnOjpUeXBlKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3Rh
dGljIHVuc2lnbmVkIHZhbHVlVG9JbmRleChTdGFja1Nsb3QqIHN0YWNrU2xvdCkgeyByZXR1cm4g
c3RhY2tTbG90LT5pbmRleCgpOyB9CkBAIC04Myw5ICs4Myw5IEBAIHN0cnVjdCBSZWdMaXZlbmVz
c0FkYXB0ZXIgewogCiAgICAgUmVnTGl2ZW5lc3NBZGFwdGVyKENvZGUmKSB7IH0KIAotICAgIHN0
YXRpYyB1bnNpZ25lZCBudW1JbmRpY2VzKENvZGUmKQorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhJ
bmRleChDb2RlJikKICAgICB7Ci0gICAgICAgIHJldHVybiBSZWc6Om1heEluZGV4KCkgKyAxOwor
ICAgICAgICByZXR1cm4gUmVnOjptYXhJbmRleCgpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29s
IGFjY2VwdHNUeXBlKEFyZzo6VHlwZSkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTAxLDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICAKICAgICBBYnN0cmFjdExpdmVuZXNzKENvZGUmIGNvZGUpCiAgICAg
ICAgIDogQWRhcHRlcihjb2RlKQotICAgICAgICAsIG1fd29ya3NldChBZGFwdGVyOjpudW1JbmRp
Y2VzKGNvZGUpKQorICAgICAgICAsIG1fd29ya3NldChBZGFwdGVyOjptYXhJbmRleChjb2RlKSkK
ICAgICAgICAgLCBtX2xpdmVBdEhlYWQoY29kZS5zaXplKCkpCiAgICAgICAgICwgbV9saXZlQXRU
YWlsKGNvZGUuc2l6ZSgpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKaW5kZXggYWY1ZjMzZTQ2NGEwMWNiN2M2MTNjYmE0
ZTUzNTRkNjE2Yjg2NzNhNy4uYmNmNmQ3ZTczMWZjZDdlMDUzNTNhZmQ2OWI4YjlhNDM5M2ZiYTgz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVyLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJERkdCcmFuY2hEaXJlY3Rpb24u
aCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKLSNpbmNsdWRl
ICJERkdOb2RlRmxvd1Byb2plY3Rpb24uaCIKICNpbmNsdWRlICJERkdQaGlDaGlsZHJlbi5oIgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC00Miw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICBBYnN0cmFjdEludGVycHJldGVyKEdyYXBoJiwgQWJzdHJhY3RTdGF0ZVR5cGUmKTsK
ICAgICB+QWJzdHJhY3RJbnRlcnByZXRlcigpOwogICAgIAotICAgIEFic3RyYWN0VmFsdWUmIGZv
ck5vZGUoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUpCisgICAgQWJzdHJhY3RWYWx1ZSYgZm9yTm9k
ZShOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RhdGUuZm9yTm9kZShub2Rl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZTQ1ZmY1YWViMjdkMjBhZmI1MzgzYTA0
OTM3YTQwYjVjN2NhMzYwYy4uN2FkYmE3MTYwMTQ2MTUxMDcyZWY2OTlkMjI2YTJhZjNjZWEwOGQw
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjgxNyw3ICsyODE3LDYgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgICAgIAogICAgIGNhc2UgUGhpOgogICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwotICAgICAgICBmb3JOb2RlKG5vZGUpID0g
Zm9yTm9kZShOb2RlRmxvd1Byb2plY3Rpb24obm9kZSwgTm9kZUZsb3dQcm9qZWN0aW9uOjpTaGFk
b3cpKTsKICAgICAgICAgLy8gVGhlIHN0YXRlIG9mIHRoaXMgbm9kZSB3b3VsZCBoYXZlIGFscmVh
ZHkgYmVlbiBkZWNpZGVkLCBidXQgaXQgbWF5IGhhdmUgYmVjb21lIGEKICAgICAgICAgLy8gY29u
c3RhbnQsIGluIHdoaWNoIGNhc2Ugd2UnZCBsaWtlIHRvIGtub3cuCiAgICAgICAgIGlmIChmb3JO
b2RlKG5vZGUpLm1fdmFsdWUpCkBAIC0yODI1LDExICsyODI0LDggQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgVXBzaWxvbjogewot
ICAgICAgICBOb2RlRmxvd1Byb2plY3Rpb24gc2hhZG93KG5vZGUtPnBoaSgpLCBOb2RlRmxvd1By
b2plY3Rpb246OlNoYWRvdyk7Ci0gICAgICAgIGlmIChzaGFkb3cuaXNTdGlsbFZhbGlkKCkpIHsK
LSAgICAgICAgICAgIG1fc3RhdGUuY3JlYXRlVmFsdWVGb3JOb2RlKHNoYWRvdyk7Ci0gICAgICAg
ICAgICBmb3JOb2RlKHNoYWRvdykgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
fQorICAgICAgICBtX3N0YXRlLmNyZWF0ZVZhbHVlRm9yTm9kZShub2RlLT5waGkoKSk7CisgICAg
ICAgIGZvck5vZGUobm9kZS0+cGhpKCkpID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0yOTgxLDE4ICsyOTc3LDExIEBAIHZvaWQg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZvckFsbFZhbHVlcygKICAg
ICBlbHNlCiAgICAgICAgIGNsb2JiZXJMaW1pdCsrOwogICAgIEFTU0VSVChjbG9iYmVyTGltaXQg
PD0gbV9zdGF0ZS5ibG9jaygpLT5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSBjbG9iYmVy
TGltaXQ7IGktLTspIHsKLSAgICAgICAgTm9kZUZsb3dQcm9qZWN0aW9uOjpmb3JFYWNoKAotICAg
ICAgICAgICAgbV9zdGF0ZS5ibG9jaygpLT5hdChpKSwKLSAgICAgICAgICAgIFsmXSAoTm9kZUZs
b3dQcm9qZWN0aW9uIG5vZGVQcm9qZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgZnVuY3Rvcihm
b3JOb2RlKG5vZGVQcm9qZWN0aW9uKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICB9CisgICAgZm9y
IChzaXplX3QgaSA9IGNsb2JiZXJMaW1pdDsgaS0tOykKKyAgICAgICAgZnVuY3Rvcihmb3JOb2Rl
KG1fc3RhdGUuYmxvY2soKS0+YXQoaSkpKTsKICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NB
KSB7Ci0gICAgICAgIGZvciAoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUgOiBtX3N0YXRlLmJsb2Nr
KCktPnNzYS0+bGl2ZUF0SGVhZCkgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNTdGlsbFZhbGlk
KCkpCi0gICAgICAgICAgICAgICAgZnVuY3Rvcihmb3JOb2RlKG5vZGUpKTsKLSAgICAgICAgfQor
ICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiBtX3N0YXRlLmJsb2NrKCktPnNzYS0+bGl2ZUF0SGVh
ZCkKKyAgICAgICAgICAgIGZ1bmN0b3IoZm9yTm9kZShub2RlKSk7CiAgICAgfQogICAgIGZvciAo
c2l6ZV90IGkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm51bWJlck9mQXJndW1lbnRzKCk7IGktLTsp
CiAgICAgICAgIGZ1bmN0b3IobV9zdGF0ZS52YXJpYWJsZXMoKS5hcmd1bWVudChpKSk7CkBAIC0z
MDQ4LDkgKzMwMzcsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZv
aWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWEoIiAiKTsKLSAgICBIYXNoU2V0PE5v
ZGVGbG93UHJvamVjdGlvbj4gc2VlbjsKKyAgICBIYXNoU2V0PE5vZGUqPiBzZWVuOwogICAgIGlm
IChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpIHsKLSAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rp
b24gbm9kZSA6IG1fc3RhdGUuYmxvY2soKS0+c3NhLT5saXZlQXRIZWFkKSB7CisgICAgICAgIGZv
ciAoTm9kZSogbm9kZSA6IG1fc3RhdGUuYmxvY2soKS0+c3NhLT5saXZlQXRIZWFkKSB7CiAgICAg
ICAgICAgICBzZWVuLmFkZChub2RlKTsKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gZm9yTm9kZShub2RlKTsKICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkpCkBAIC0z
MDU5LDE3ICszMDQ4LDE1IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgfQogICAgIH0KICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fc3RhdGUuYmxvY2soKS0+c2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgTm9kZUZsb3dQcm9qZWN0aW9uOjpmb3JFYWNoKAotICAgICAgICAgICAgbV9zdGF0ZS5ibG9j
aygpLT5hdChpKSwgWyZdIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZVByb2plY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICBzZWVuLmFkZChub2RlUHJvamVjdGlvbik7Ci0gICAgICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGVQcm9qZWN0aW9uKTsKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUuaXNDbGVhcigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlUHJvamVjdGlvbiwgIjoiLCB2
YWx1ZSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fc3RhdGUuYmxv
Y2soKS0+YXQoaSk7CisgICAgICAgIHNlZW4uYWRkKG5vZGUpOworICAgICAgICBBYnN0cmFjdFZh
bHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZSk7CisgICAgICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLCAi
OiIsIHZhbHVlKTsKICAgICB9CiAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewotICAg
ICAgICBmb3IgKE5vZGVGbG93UHJvamVjdGlvbiBub2RlIDogbV9zdGF0ZS5ibG9jaygpLT5zc2Et
PmxpdmVBdFRhaWwpIHsKKyAgICAgICAgZm9yIChOb2RlKiBub2RlIDogbV9zdGF0ZS5ibG9jaygp
LT5zc2EtPmxpdmVBdFRhaWwpIHsKICAgICAgICAgICAgIGlmIChzZWVuLmNvbnRhaW5zKG5vZGUp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBmb3JOb2RlKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggOGQxNGM5Y2JhYmQyMmQ5Y2MxODUw
Nzg0NTZhZGRhY2U1N2NmZjE1OC4uMjIwNjI5MjYzMzA1NzAzNTBhZDA4OGVmMmE3MTI1NGNhYjc3
MjY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0
cmFjdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFi
c3RyYWN0U3RhdGUuY3BwCkBAIC00NywxNiArNDcsMTYgQEAgQXRUYWlsQWJzdHJhY3RTdGF0ZTo6
QXRUYWlsQWJzdHJhY3RTdGF0ZShHcmFwaCYgZ3JhcGgpCiAKIEF0VGFpbEFic3RyYWN0U3RhdGU6
On5BdFRhaWxBYnN0cmFjdFN0YXRlKCkgeyB9CiAKLXZvaWQgQXRUYWlsQWJzdHJhY3RTdGF0ZTo6
Y3JlYXRlVmFsdWVGb3JOb2RlKE5vZGVGbG93UHJvamVjdGlvbiBub2RlKQordm9pZCBBdFRhaWxB
YnN0cmFjdFN0YXRlOjpjcmVhdGVWYWx1ZUZvck5vZGUoTm9kZSogbm9kZSkKIHsKICAgICBtX3Zh
bHVlc0F0VGFpbE1hcC5hdChtX2Jsb2NrKS5hZGQobm9kZSwgQWJzdHJhY3RWYWx1ZSgpKTsKIH0K
IAotQWJzdHJhY3RWYWx1ZSYgQXRUYWlsQWJzdHJhY3RTdGF0ZTo6Zm9yTm9kZShOb2RlRmxvd1By
b2plY3Rpb24gbm9kZSkKK0Fic3RyYWN0VmFsdWUmIEF0VGFpbEFic3RyYWN0U3RhdGU6OmZvck5v
ZGUoTm9kZSogbm9kZSkKIHsKICAgICBhdXRvJiB2YWx1ZXNBdFRhaWwgPSBtX3ZhbHVlc0F0VGFp
bE1hcC5hdChtX2Jsb2NrKTsKLSAgICBIYXNoTWFwPE5vZGVGbG93UHJvamVjdGlvbiwgQWJzdHJh
Y3RWYWx1ZT46Oml0ZXJhdG9yIGl0ZXIgPSB2YWx1ZXNBdFRhaWwuZmluZChub2RlKTsKLSAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUubm9kZSgpLCBpdGVyICE9IHZhbHVlc0F0VGFpbC5lbmQo
KSk7CisgICAgSGFzaE1hcDxOb2RlKiwgQWJzdHJhY3RWYWx1ZT46Oml0ZXJhdG9yIGl0ZXIgPSB2
YWx1ZXNBdFRhaWwuZmluZChub2RlKTsKKyAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIGl0
ZXIgIT0gdmFsdWVzQXRUYWlsLmVuZCgpKTsKICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RT
dGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRl
LmgKaW5kZXggOGYwNDNiNzJiZDFjZGM3NDgxOWIyZTJjYWU4ODZiYzAzODA0MzVmMy4uOTU5NDI2
NTI0YmI2YjU1MWY2NDY2OWU1MjZhM2RlNmFlZWNhZTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIK
ICNpbmNsdWRlICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR05vZGVGbG93UHJvamVjdGlvbi5o
IgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7IAogCkBAIC00OCw4ICs0Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgbV9ibG9jayA9IGJsb2NrOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGNyZWF0ZVZhbHVlRm9yTm9kZShOb2RlRmxvd1Byb2plY3Rpb24pOwotICAgIEFic3RyYWN0VmFs
dWUmIGZvck5vZGUoTm9kZUZsb3dQcm9qZWN0aW9uKTsKKyAgICB2b2lkIGNyZWF0ZVZhbHVlRm9y
Tm9kZShOb2RlKik7CisgICAgQWJzdHJhY3RWYWx1ZSYgZm9yTm9kZShOb2RlKik7CiAgICAgQWJz
dHJhY3RWYWx1ZSYgZm9yTm9kZShFZGdlIGVkZ2UpIHsgcmV0dXJuIGZvck5vZGUoZWRnZS5ub2Rl
KCkpOyB9CiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4mIHZhcmlhYmxlcygpIHsgcmV0dXJu
IG1fYmxvY2stPnZhbHVlc0F0VGFpbDsgfQogICAgIApAQCAtNjcsNyArNjYsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgR3JhcGgmIG1fZ3JhcGg7Ci0gICAgQmxvY2tNYXA8SGFzaE1hcDxO
b2RlRmxvd1Byb2plY3Rpb24sIEFic3RyYWN0VmFsdWU+PiBtX3ZhbHVlc0F0VGFpbE1hcDsKKyAg
ICBCbG9ja01hcDxIYXNoTWFwPE5vZGUqLCBBYnN0cmFjdFZhbHVlPj4gbV92YWx1ZXNBdFRhaWxN
YXA7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jayB7IG51bGxwdHIgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKaW5kZXggMGFlZjEwOGRmNmI3MmI3ZGQ2
ODVhYmEyNDZiZWJmY2M0YzY0NzEwYS4uZjQ1OGMwZjUzNDA4ZjBlYzZlZTYwZmIwNWY0MzUyZWNm
NTQ3YmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiREZHQnJhbmNoRGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSAiREZHRmx1c2hlZEF0LmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgotI2lu
Y2x1ZGUgIkRGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5oIgogI2luY2x1ZGUgIkRGR05vZGVPcmln
aW4uaCIKICNpbmNsdWRlICJERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCIKICNpbmNsdWRlICJP
cGVyYW5kcy5oIgpAQCAtMjQ5LDggKzI0OCwxMiBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNv
dW50ZWQ8QmFzaWNCbG9jaz4gewogICAgICAgICBBdmFpbGFiaWxpdHlNYXAgYXZhaWxhYmlsaXR5
QXRIZWFkOwogICAgICAgICBBdmFpbGFiaWxpdHlNYXAgYXZhaWxhYmlsaXR5QXRUYWlsOwogCi0g
ICAgICAgIFZlY3RvcjxOb2RlRmxvd1Byb2plY3Rpb24+IGxpdmVBdEhlYWQ7Ci0gICAgICAgIFZl
Y3RvcjxOb2RlRmxvd1Byb2plY3Rpb24+IGxpdmVBdFRhaWw7CisgICAgICAgIFZlY3RvcjxOb2Rl
Kj4gbGl2ZUF0SGVhZDsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiBsaXZlQXRUYWlsOworICAgICAg
ICBzdHJ1Y3QgTm9kZUFic3RyYWN0VmFsdWVQYWlyIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGU7
CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlOworICAgICAgICB9OwogICAgICAgICBW
ZWN0b3I8Tm9kZUFic3RyYWN0VmFsdWVQYWlyPiB2YWx1ZXNBdEhlYWQ7CiAgICAgICAgIFZlY3Rv
cjxOb2RlQWJzdHJhY3RWYWx1ZVBhaXI+IHZhbHVlc0F0VGFpbDsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21iaW5lZExpdmVuZXNzLmNwcAppbmRleCAx
ZTliZGUxMTExOGYwOGQwYTE2YzcyM2E1MzVlNjljMWI5NTU1MWFmLi5hMGQ5MzI3NGNlMDIzNjRm
NjgxZjM5OWNiMmQzYzQyZDJmODgyYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tYmluZWRMaXZlbmVzcy5jcHAKQEAgLTM4LDEwICszOCw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIEhhc2hTZXQ8Tm9kZSo+IGxpdmVOb2Rlc0F0SGVhZChH
cmFwaCYgZ3JhcGgsIEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIEhhc2hTZXQ8Tm9kZSo+IHNl
ZW47Ci0gICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJsb2NrLT5zc2EtPmxpdmVB
dEhlYWQpIHsKLSAgICAgICAgaWYgKG5vZGUua2luZCgpID09IE5vZGVGbG93UHJvamVjdGlvbjo6
UHJpbWFyeSkKLSAgICAgICAgICAgIHNlZW4uYWRkKG5vZGUubm9kZSgpKTsKLSAgICB9CisgICAg
Zm9yIChOb2RlKiBub2RlIDogYmxvY2stPnNzYS0+bGl2ZUF0SGVhZCkKKyAgICAgICAgc2Vlbi5h
ZGQobm9kZSk7CiAgICAgCiAgICAgQXZhaWxhYmlsaXR5TWFwJiBhdmFpbGFiaWxpdHlNYXAgPSBi
bG9jay0+c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWQ7CiAgICAgZ3JhcGguZm9yQWxsTG9jYWxzTGl2
ZUluQnl0ZWNvZGUoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bWJpbmVkTGl2ZW5lc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tYmluZWRM
aXZlbmVzcy5oCmluZGV4IGU1MDA2NWE5ZWI2NmFhZjE3YWQ3NTYwZTc3OTk3Nzc0Njg5YzAzNmIu
LjNhN2QzODNmM2U2M2NmN2MyZWVmMjM1YmI0YjE0NmJhNjA1Y2Q4OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tYmluZWRMaXZlbmVzcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tYmluZWRMaXZlbmVzcy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDExICszNSw2IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFJldHVybnMgdGhlIHNldCBvZiBu
b2RlcyBsaXZlIGF0IHRhaWwsIGJvdGggZHVlIHRvIGR1ZSBERkcgYW5kIGR1ZSB0byBieXRlY29k
ZSAoaS5lLiBPU1IgZXhpdCkuCiBIYXNoU2V0PE5vZGUqPiBsaXZlTm9kZXNBdEhlYWQoR3JhcGgm
LCBCYXNpY0Jsb2NrKik7CiAKLS8vIFdBUk5JTkc6IFRoaXMgY3VycmVudGx5IGRvZXMgbm90IHJl
YXNvbiBhYm91dCB0aGUgbGl2ZW5lc3Mgb2Ygc2hhZG93IHZhbHVlcy4gVGhlIGV4ZWN1dGlvbgot
Ly8gc2VtYW50aWNzIG9mIERGRyBTU0EgYXJlIHRoYXQgYW4gVXBzaWxvbiBzdG9yZXMgdG8gdGhl
IHNoYWRvdyB2YWx1ZSBvZiBhIFBoaSwgYW5kIHRoZSBQaGkgbG9hZHMKLS8vIGZyb20gdGhhdCBz
aGFkb3cgdmFsdWUuIEhlbmNlLCB0aGUgc2hhZG93IHZhbHVlcyBhcmUgbGlrZSB2YXJpYWJsZXMs
IGFuZCBoYXZlIGxpdmVuZXNzLiBUaGUgbm9ybWFsCi0vLyBsaXZlbmVzcyBhbmFseXNpcyB3aWxs
IHRlbGwgeW91IGFib3V0IHRoZSBsaXZlbmVzcyBvZiBzaGFkb3cgdmFsdWVzLiBJdCdzIE9LIHRv
IGlnbm9yZSBzaGFkb3cKLS8vIHZhbHVlcyBpZiB5b3UgdHJlYXQgVXBzaWxvbiBhcyBhbiBvcGFx
dWUgZXNjYXBlLCBhbmQgYWxsIG9mIHRoZSBjbGllbnRzIG9mIENvbWJpbmVkTGl2ZW5lc3MgZG8g
c28uCiBzdHJ1Y3QgQ29tYmluZWRMaXZlbmVzcyB7CiAgICAgQ29tYmluZWRMaXZlbmVzcygpIHsg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbG93SW5k
ZXhpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbG93SW5kZXhpbmcuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2MxODY5ZTg5MjNiOGYwYjQ2MTliM2Fm
MzFjMjljOTUwODQxY2M1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmxvd0luZGV4aW5nLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHRmxvd0lu
ZGV4aW5nLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewotCi1GbG93SW5kZXhpbmc6OkZsb3dJbmRleGluZyhHcmFwaCYgZ3JhcGgpCi0g
ICAgOiBtX2dyYXBoKGdyYXBoKQotICAgICwgbV9udW1JbmRpY2VzKDApCi17Ci0gICAgcmVjb21w
dXRlKCk7Ci19Ci0KLUZsb3dJbmRleGluZzo6fkZsb3dJbmRleGluZygpCi17Ci19Ci0KLXZvaWQg
Rmxvd0luZGV4aW5nOjpyZWNvbXB1dGUoKQotewotICAgIHVuc2lnbmVkIG51bU5vZGVJbmRpY2Vz
ID0gbV9ncmFwaC5tYXhOb2RlQ291bnQoKTsKLSAgICAKLSAgICBtX25vZGVJbmRleFRvU2hhZG93
SW5kZXgucmVzaXplKG51bU5vZGVJbmRpY2VzKTsKLSAgICBtX25vZGVJbmRleFRvU2hhZG93SW5k
ZXguZmlsbChVSU5UX01BWCk7Ci0gICAgCi0gICAgbV9zaGFkb3dJbmRleFRvTm9kZUluZGV4LnJl
c2l6ZSgwKTsKLQotICAgIG1fbnVtSW5kaWNlcyA9IG51bU5vZGVJbmRpY2VzOwotCi0gICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewot
ICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpICE9IFBoaSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gbm9kZS0+aW5kZXgoKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIHNoYWRvd0luZGV4ID0gbV9udW1JbmRpY2VzKys7Ci0gICAgICAgICAgICBt
X25vZGVJbmRleFRvU2hhZG93SW5kZXhbbm9kZUluZGV4XSA9IHNoYWRvd0luZGV4OwotICAgICAg
ICAgICAgbV9zaGFkb3dJbmRleFRvTm9kZUluZGV4LmFwcGVuZChub2RlSW5kZXgpOwotICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX3NoYWRvd0luZGV4VG9Ob2RlSW5k
ZXguc2l6ZSgpICsgbnVtTm9kZUluZGljZXMgPT0gbV9udW1JbmRpY2VzKTsKLSAgICAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9zaGFkb3dJbmRleFRvTm9kZUluZGV4W3No
YWRvd0luZGV4IC0gbnVtTm9kZUluZGljZXNdID09IG5vZGVJbmRleCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zsb3dJ
bmRleGluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbG93SW5kZXhpbmcuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2MDUyNTVhNDRiNjgxYWQwNzQ3NWEzNzZh
NjcxMzJkNjlkMWM2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zsb3dJbmRleGluZy5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5j
bHVkZSAiREZHR3JhcGguaCIKLSNpbmNsdWRlICJERkdOb2RlRmxvd1Byb2plY3Rpb24uaCIKLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi0vLyBUaGlzIGlzIGEgbWFwcGluZyBm
cm9tIG5vZGVzIHRvIHVuaXF1ZSwgZGVuc2UgaW5kaWNlcyB0aGF0IGNhbiBiZSB1c2VkIGZvciBj
cmVhdGluZyBmYXN0Ci0vLyBOb2RlLWtleWVkIG1hcHMuIFRoZSBzcGVjaWFsIHBhcnQgaXMgdGhh
dCBpdCBhbHNvIGFsbG9jYXRlZCBpbmRpY2VzIGZvciB0aGUgc2hhZG93IHZhbHVlcyBvZiBQaGkK
LS8vIG5vZGVzLCB3aGljaCBpcyBuZWVkZWQgZm9yIGFueSBmbG93LXNlbnNpdGl2ZSBhbmFseXNp
cy4KLWNsYXNzIEZsb3dJbmRleGluZyB7Ci1wdWJsaWM6Ci0gICAgRmxvd0luZGV4aW5nKEdyYXBo
Jik7Ci0gICAgfkZsb3dJbmRleGluZygpOwotICAgIAotICAgIHZvaWQgcmVjb21wdXRlKCk7Ci0g
ICAgCi0gICAgR3JhcGgmIGdyYXBoKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaDsgfQotICAgIAot
ICAgIHVuc2lnbmVkIG51bUluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX251bUluZGljZXM7IH0K
LSAgICAKLSAgICB1bnNpZ25lZCBpbmRleCh1bnNpZ25lZCBub2RlSW5kZXgpIGNvbnN0IHsgcmV0
dXJuIG5vZGVJbmRleDsgfQotICAgIAotICAgIHVuc2lnbmVkIGluZGV4KE5vZGUqIG5vZGUpIGNv
bnN0IHsgcmV0dXJuIGluZGV4KG5vZGUtPmluZGV4KCkpOyB9Ci0gICAgCi0gICAgdW5zaWduZWQg
c2hhZG93SW5kZXgodW5zaWduZWQgbm9kZUluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fbm9kZUluZGV4VG9TaGFkb3dJbmRleFtub2RlSW5kZXhdOwotICAgIH0KLSAgICAKLSAg
ICB1bnNpZ25lZCBzaGFkb3dJbmRleChOb2RlKiBub2RlKSBjb25zdAotICAgIHsKLSAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5vcCgpID09IFBoaSk7Ci0gICAgICAgIHJl
dHVybiBzaGFkb3dJbmRleChub2RlLT5pbmRleCgpKTsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWdu
ZWQgaW5kZXgodW5zaWduZWQgbm9kZUluZGV4LCBOb2RlRmxvd1Byb2plY3Rpb246OktpbmQga2lu
ZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIE5v
ZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeToKLSAgICAgICAgICAgIHJldHVybiBpbmRleChub2Rl
SW5kZXgpOwotICAgICAgICBjYXNlIE5vZGVGbG93UHJvamVjdGlvbjo6U2hhZG93OgotICAgICAg
ICAgICAgcmV0dXJuIHNoYWRvd0luZGV4KG5vZGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQot
ICAgIAotICAgIHVuc2lnbmVkIGluZGV4KE5vZGUgKm5vZGUsIE5vZGVGbG93UHJvamVjdGlvbjo6
S2luZCBraW5kKSBjb25zdAotICAgIHsKLSAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAg
IGNhc2UgTm9kZUZsb3dQcm9qZWN0aW9uOjpQcmltYXJ5OgotICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4KG5vZGUpOwotICAgICAgICBjYXNlIE5vZGVGbG93UHJvamVjdGlvbjo6U2hhZG93OgotICAg
ICAgICAgICAgcmV0dXJuIHNoYWRvd0luZGV4KG5vZGUpOwotICAgICAgICB9Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAg
ICAKLSAgICB1bnNpZ25lZCBpbmRleChOb2RlRmxvd1Byb2plY3Rpb24gcHJvamVjdGlvbikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbmRleChwcm9qZWN0aW9uLm5vZGUoKSwgcHJvamVj
dGlvbi5raW5kKCkpOwotICAgIH0KLSAgICAKLSAgICBOb2RlRmxvd1Byb2plY3Rpb24gbm9kZVBy
b2plY3Rpb24odW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaW5kZXgg
PCBtX25vZGVJbmRleFRvU2hhZG93SW5kZXguc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIE5v
ZGVGbG93UHJvamVjdGlvbihtX2dyYXBoLm5vZGVBdChpbmRleCkpOwotICAgICAgICByZXR1cm4g
Tm9kZUZsb3dQcm9qZWN0aW9uKAotICAgICAgICAgICAgbV9ncmFwaC5ub2RlQXQobV9zaGFkb3dJ
bmRleFRvTm9kZUluZGV4W2luZGV4IC0gbV9ub2RlSW5kZXhUb1NoYWRvd0luZGV4LnNpemUoKV0p
LAotICAgICAgICAgICAgTm9kZUZsb3dQcm9qZWN0aW9uOjpTaGFkb3cpOwotICAgIH0KLSAgICAK
LXByaXZhdGU6Ci0gICAgR3JhcGgmIG1fZ3JhcGg7Ci0gICAgdW5zaWduZWQgbV9udW1JbmRpY2Vz
OwotICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbm9kZUlu
ZGV4VG9TaGFkb3dJbmRleDsKLSAgICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBtX3NoYWRvd0luZGV4VG9Ob2RlSW5kZXg7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbG93TWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Zsb3dNYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YzZDEy
MTJmNTM3YjNjYzYzZWVjYjczNDA2ZDI0YTcyN2YyOGY3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zs
b3dNYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
REZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Zsb3dJbmRleGluZy5oIgotI2luY2x1ZGUgIkRGR0dy
YXBoLmgiCi0jaW5jbHVkZSAiREZHTm9kZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7Ci0KLS8vIFRoaXMgaXMgYSBtYXBwaW5nIGZyb20gbm9kZXMgdG8gdmFsdWVzIHRoYXQg
aXMgdXNlZnVsIGZvciBmbG93LXNlbnNpdGl2ZSBhbmFseXNpcy4gSW4gc3VjaCBhbgotLy8gYW5h
bHlzaXMsIGF0IGV2ZXJ5IHBvaW50IGluIHRoZSBwcm9ncmFtIHdlIG5lZWQgdG8gY29uc2lkZXIg
dGhlIHZhbHVlcyBvZiBub2RlcyBwbHVzIHRoZSBzaGFkb3cKLS8vIHZhbHVlcyBvZiBQaGlzLiBU
aGlzIG1ha2VzIGl0IGVhc3kgdG8gZG8gYm90aCBvZiB0aG9zZSB0aGluZ3MuCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotY2xhc3MgRmxvd01hcCB7Ci1wdWJsaWM6Ci0gICAgRmxvd01hcChHcmFwaCYg
Z3JhcGgpCi0gICAgICAgIDogbV9ncmFwaChncmFwaCkKLSAgICB7Ci0gICAgICAgIHJlc2l6ZSgp
OwotICAgIH0KLSAgICAKLSAgICAvLyBDYWxsIHRoaXMgaWYgdGhlIG51bWJlciBvZiBub2RlcyBp
biB0aGUgZ3JhcGggaGFzIGNoYW5nZWQuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHJlc2V0IGFu
eQotICAgIC8vIGVudHJpZXMuCi0gICAgdm9pZCByZXNpemUoKQotICAgIHsKLSAgICAgICAgbV9t
YXAucmVzaXplKG1fZ3JhcGgubWF4Tm9kZUNvdW50KCkpOwotICAgICAgICBtX3NoYWRvd01hcC5y
ZXNpemUobV9ncmFwaC5tYXhOb2RlQ291bnQoKSk7Ci0gICAgfQotICAgIAotICAgIEdyYXBoJiBn
cmFwaCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGg7IH0KLSAgICAKLSAgICBUJiBhdCh1bnNpZ25l
ZCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9tYXBbbm9kZUluZGV4XTsKLSAg
ICB9Ci0gICAgCi0gICAgVCYgYXQoTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
dChub2RlLT5pbmRleCgpKTsKLSAgICB9Ci0gICAgCi0gICAgVCYgYXRTaGFkb3codW5zaWduZWQg
bm9kZUluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2hhZG93TWFwW25vZGVJbmRleF07
Ci0gICAgfQotICAgIAotICAgIFQmIGF0U2hhZG93KE5vZGUqIG5vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYXRTaGFkb3cobm9kZS0+aW5kZXgoKSk7Ci0gICAgfQotICAgIAotICAgIFQmIGF0
KHVuc2lnbmVkIG5vZGVJbmRleCwgTm9kZUZsb3dQcm9qZWN0aW9uOjpLaW5kIGtpbmQpCi0gICAg
ewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBOb2RlRmxvd1Byb2plY3Rp
b246OlByaW1hcnk6Ci0gICAgICAgICAgICByZXR1cm4gYXQobm9kZUluZGV4KTsKLSAgICAgICAg
Y2FzZSBOb2RlRmxvd1Byb2plY3Rpb246OlNoYWRvdzoKLSAgICAgICAgICAgIHJldHVybiBhdFNo
YWRvdyhub2RlSW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFQqPihudWxscHRyKTsKLSAg
ICB9Ci0gICAgCi0gICAgVCYgYXQoTm9kZSogbm9kZSwgTm9kZUZsb3dQcm9qZWN0aW9uOjpLaW5k
IGtpbmQpCi0gICAgewotICAgICAgICByZXR1cm4gYXQobm9kZS0+aW5kZXgoKSwga2luZCk7Ci0g
ICAgfQotICAgIAotICAgIFQmIGF0KE5vZGVGbG93UHJvamVjdGlvbiBwcm9qZWN0aW9uKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGF0KHByb2plY3Rpb24ubm9kZSgpLCBwcm9qZWN0aW9uLmtpbmQo
KSk7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IFQmIGF0KHVuc2lnbmVkIG5vZGVJbmRleCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxGbG93TWFwKj4odGhpcyktPmF0KG5vZGVJbmRleCk7IH0K
LSAgICBjb25zdCBUJiBhdChOb2RlKiBub2RlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZs
b3dNYXAqPih0aGlzKS0+YXQobm9kZSk7IH0KLSAgICBjb25zdCBUJiBhdFNoYWRvdyh1bnNpZ25l
ZCBub2RlSW5kZXgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Rmxvd01hcCo+KHRoaXMpLT5h
dFNoYWRvdyhub2RlSW5kZXgpOyB9Ci0gICAgY29uc3QgVCYgYXRTaGFkb3coTm9kZSogbm9kZSkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGbG93TWFwKj4odGhpcyktPmF0U2hhZG93KG5vZGUp
OyB9Ci0gICAgY29uc3QgVCYgYXQodW5zaWduZWQgbm9kZUluZGV4LCBOb2RlRmxvd1Byb2plY3Rp
b246OktpbmQga2luZCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGbG93TWFwKj4odGhpcykt
PmF0KG5vZGVJbmRleCwga2luZCk7IH0KLSAgICBjb25zdCBUJiBhdChOb2RlKiBub2RlLCBOb2Rl
Rmxvd1Byb2plY3Rpb246OktpbmQga2luZCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGbG93
TWFwKj4odGhpcyktPmF0KG5vZGUsIGtpbmQpOyB9Ci0gICAgY29uc3QgVCYgYXQoTm9kZUZsb3dQ
cm9qZWN0aW9uIHByb2plY3Rpb24pIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Rmxvd01hcCo+
KHRoaXMpLT5hdChwcm9qZWN0aW9uKTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBHcmFwaCYgbV9n
cmFwaDsKLSAgICBWZWN0b3I8VCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbWFwOwotICAg
IFZlY3RvcjxULCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9zaGFkb3dNYXA7Ci19OwotCi19
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEpT
Qzo6REZHOjpGbG93TWFwPFQ+JiBtYXApCi17Ci0gICAgQ29tbWFQcmludGVyIGNvbW1hOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXAuZ3JhcGgoKS5tYXhOb2RlQ291bnQoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChKU0M6OkRGRzo6Tm9kZSogbm9kZSA9IG1hcC5ncmFwaCgpLm5vZGVB
dChpKSkgewotICAgICAgICAgICAgaWYgKGNvbnN0IFQmIHZhbHVlID0gbWFwLmF0KG5vZGUpKQot
ICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgbm9kZSwgIj0+IiwgdmFsdWUpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXAuZ3JhcGgoKS5t
YXhOb2RlQ291bnQoKTsgKytpKSB7Ci0gICAgICAgIGlmIChKU0M6OkRGRzo6Tm9kZSogbm9kZSA9
IG1hcC5ncmFwaCgpLm5vZGVBdChpKSkgewotICAgICAgICAgICAgaWYgKGNvbnN0IFQmIHZhbHVl
ID0gbWFwLmF0U2hhZG93KG5vZGUpKQotICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
InNoYWRvdygiLCBub2RlLCAiKT0+IiwgdmFsdWUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGU2ZjVhNTlmMjBhNTI3ZmM3YTBjY2Zj
MDVkN2MzMjcxYTllMTQ4MGEuLmI4N2MxZmUyNjQ0ZDViYmIwZTc3NWEyMWMwZDdmMjJlZjE0Nzk5
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC00MCw4ICs0MCw2
IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJERkdDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKLSNp
bmNsdWRlICJERkdGbG93SW5kZXhpbmcuaCIKLSNpbmNsdWRlICJERkdGbG93TWFwLmgiCiAjaW5j
bHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJE
RkdOYXR1cmFsTG9vcHMuaCIKQEAgLTg1LDkgKzgzLDYgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbiwgTG9uZ0xpdmVkU3RhdGUmIGxvbmdMaXZlZFN0YXRlKQogICAgIEFTU0VSVCht
X3Byb2ZpbGVkQmxvY2spOwogICAgIAogICAgIG1faGFzRGVidWdnZXJFbmFibGVkID0gbV9wcm9m
aWxlZEJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgT3B0aW9uczo6
Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwotICAgIAotICAgIG1faW5kZXhpbmdD
YWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7Ci0gICAgbV9hYnN0
cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+
PigqdGhpcyk7CiB9CiAKIEdyYXBoOjp+R3JhcGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCmluZGV4IGE0YzNmNDA1MTViODQ4OGMzNWQwMjkzNTM1NGNkMTQ5MWYxMzgwMzIuLjdk
NGViYzc1NzNiMmM1MDEyODFjMTJlZTNjZTE4ZTcyYmI5ZTQ3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKQEAgLTU5LDEyICs1OSw5IEBAIGNsYXNzIEJhY2t3YXJkc0RvbWlu
YXRvcnM7CiBjbGFzcyBDRkc7CiBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKIGNs
YXNzIERvbWluYXRvcnM7Ci1jbGFzcyBGbG93SW5kZXhpbmc7CiBjbGFzcyBOYXR1cmFsTG9vcHM7
CiBjbGFzcyBQcmVQb3N0TnVtYmVyaW5nOwogCi10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxv
d01hcDsKLQogI2RlZmluZSBERkdfTk9ERV9ET19UT19DSElMRFJFTihncmFwaCwgbm9kZSwgdGhp
bmdUb0RvKSBkbyB7ICAgICAgICAgICAgXAogICAgICAgICBOb2RlKiBfbm9kZSA9IChub2RlKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAo
X25vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApAQCAtMjA0LDYgKzIwMSw4IEBAIHB1YmxpYzoKICAgICBOb2RlKiBub2RlQXQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXNCeUluZGV4W2luZGV4XTsgfQogICAgIHZv
aWQgcGFja05vZGVJbmRpY2VzKCk7CiAKKyAgICBWZWN0b3I8QWJzdHJhY3RWYWx1ZSwgMCwgVW5z
YWZlVmVjdG9yT3ZlcmZsb3c+JiBhYnN0cmFjdFZhbHVlc0NhY2hlKCkgeyByZXR1cm4gbV9hYnN0
cmFjdFZhbHVlc0NhY2hlOyB9CisKICAgICB2b2lkIGRldGhyZWFkKCk7CiAgICAgCiAgICAgRnJv
emVuVmFsdWUqIGZyZWV6ZShKU1ZhbHVlKTsgLy8gV2UgdXNlIHdlYWsgZnJlZXppbmcgYnkgZGVm
YXVsdC4KQEAgLTkzNiw5ICs5MzUsNiBAQCBwdWJsaWM6CiAgICAgUmVmQ291bnRTdGF0ZSBtX3Jl
ZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1f
aGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93
SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxB
YnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwotCiBwcml2YXRlOgogICAgIHZv
aWQgYWRkTm9kZVRvTWFwQnlJbmRleChOb2RlKik7CiAKQEAgLTk3Niw2ICs5NzIsNyBAQCBwcml2
YXRlOgogCiAgICAgVmVjdG9yPE5vZGUqLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9ub2Rl
c0J5SW5kZXg7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4g
bV9ub2RlSW5kZXhGcmVlTGlzdDsKKyAgICBWZWN0b3I8QWJzdHJhY3RWYWx1ZSwgMCwgVW5zYWZl
VmVjdG9yT3ZlcmZsb3c+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggMWQyMGQxZDRjYTUwMjcyYmM2NmFkNDQ0YWFm
YTk2MDgwMjEzMzFhMy4uZjc1ZDhiNDU3NjQ3NThiNDYxY2EyMDM1OTc3MGI3N2EyZDA4NjUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9
IGZhbHNlOwogCiBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6SW5QbGFjZUFic3RyYWN0U3RhdGUoR3Jh
cGgmIGdyYXBoKQogICAgIDogbV9ncmFwaChncmFwaCkKLSAgICAsIG1fYWJzdHJhY3RWYWx1ZXMo
KmdyYXBoLm1fYWJzdHJhY3RWYWx1ZXNDYWNoZSkKKyAgICAsIG1fYWJzdHJhY3RWYWx1ZXMoZ3Jh
cGguYWJzdHJhY3RWYWx1ZXNDYWNoZSgpKQogICAgICwgbV92YXJpYWJsZXMobV9ncmFwaC5tX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBncmFwaC5tX2xvY2FsVmFycykKICAgICAsIG1fYmxv
Y2soMCkKIHsKQEAgLTU3LDIyICs1NywxOSBAQCB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpi
ZWdpbkJhc2ljQmxvY2soQmFzaWNCbG9jayogYmFzaWNCbG9jaykKICAgICBBU1NFUlQoYmFzaWNC
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gYmFzaWNCbG9jay0+dmFs
dWVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOwogICAgIEFTU0VSVChiYXNpY0Jsb2NrLT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSA9PSBiYXNpY0Jsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZMb2NhbHMoKSk7CiAKLSAgICBtX2Fic3RyYWN0VmFsdWVzLnJlc2l6ZSgpOwor
ICAgIC8vIENlcnRhaW4gcGhhc2VzIGluc2VydCBub2RlcyBpbiBhIGJsb2NrIGFmdGVyIHJ1bm5p
bmcgdGhyb3VnaCBpdC4KKyAgICAvLyBXZSBjYW5ub3QgcmVzZXJ2ZSB0aGUgc3BhY2UgZm9yIEFi
c3RyYWN0VmFsdWVzIHdoZW4gaW5pdGlhbGl6aW5nIEFic3RyYWN0U3RhdGUgYmVjYXVzZSB0aGUg
bnVtYmVyIG9mIHZhbHVlcworICAgIC8vIGNhbiBpbmNyZWFzZSBhcyB3ZSBleGVjdXRlLiBJbnN0
ZWFkLCB3ZSBpbmNyZWFzZSB0aGUgc2l6ZSBhcyBuZWVkZWQgYmVmb3JlIHByb2Nlc3NpbmcgZWFj
aCBibG9jay4KKyAgICBtX2Fic3RyYWN0VmFsdWVzLnJlc2l6ZShtX2dyYXBoLm1heE5vZGVDb3Vu
dCgpKTsKICAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJhc2ljQmxvY2stPnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIE5vZGVGbG93UHJvamVjdGlvbjo6Zm9yRWFjaCgKLSAgICAgICAg
ICAgIGJhc2ljQmxvY2stPmF0KGkpLCBbJl0gKE5vZGVGbG93UHJvamVjdGlvbiBub2RlUHJvamVj
dGlvbikgewotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZVByb2plY3Rpb24pLmNsZWFyKCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNp
Y0Jsb2NrLT5zaXplKCk7IGkrKykKKyAgICAgICAgZm9yTm9kZShiYXNpY0Jsb2NrLT5hdChpKSku
Y2xlYXIoKTsKIAogICAgIG1fdmFyaWFibGVzID0gYmFzaWNCbG9jay0+dmFsdWVzQXRIZWFkOwog
ICAgIAogICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpIHsKLSAgICAgICAgZm9yIChOb2Rl
QWJzdHJhY3RWYWx1ZVBhaXImIGVudHJ5IDogYmFzaWNCbG9jay0+c3NhLT52YWx1ZXNBdEhlYWQp
IHsKLSAgICAgICAgICAgIGlmIChlbnRyeS5ub2RlLmlzU3RpbGxWYWxpZCgpKQotICAgICAgICAg
ICAgICAgIGZvck5vZGUoZW50cnkubm9kZSkgPSBlbnRyeS52YWx1ZTsKLSAgICAgICAgfQorICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogYmFzaWNCbG9jay0+c3NhLT52YWx1ZXNBdEhlYWQpCisg
ICAgICAgICAgICBmb3JOb2RlKGVudHJ5Lm5vZGUpID0gZW50cnkudmFsdWU7CiAgICAgfQogICAg
IGJhc2ljQmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICBiYXNpY0Jsb2NrLT5j
ZmFIYXNWaXNpdGVkID0gdHJ1ZTsKQEAgLTgzLDEyICs4MCwxMiBAQCB2b2lkIEluUGxhY2VBYnN0
cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2soQmFzaWNCbG9jayogYmFzaWNCbG9jaykKICAgICBt
X3N0cnVjdHVyZUNsb2JiZXJTdGF0ZSA9IGJhc2ljQmxvY2stPmNmYVN0cnVjdHVyZUNsb2JiZXJT
dGF0ZUF0SGVhZDsKIH0KIAotc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8Tm9kZUFi
c3RyYWN0VmFsdWVQYWlyPiYgdmFsdWVzLCBjb25zdCBWZWN0b3I8Tm9kZUZsb3dQcm9qZWN0aW9u
PiYgbGl2ZSkKK3N0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPEJhc2ljQmxvY2s6OlNT
QURhdGE6Ok5vZGVBYnN0cmFjdFZhbHVlUGFpcj4mIHZhbHVlcywgY29uc3QgVmVjdG9yPE5vZGUq
PiYgbGl2ZSkKIHsKICAgICB2YWx1ZXMucmVzaXplKDApOwogICAgIHZhbHVlcy5yZXNlcnZlQ2Fw
YWNpdHkobGl2ZS5zaXplKCkpOwotICAgIGZvciAoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUgOiBs
aXZlKQotICAgICAgICB2YWx1ZXMudW5jaGVja2VkQXBwZW5kKE5vZGVBYnN0cmFjdFZhbHVlUGFp
ciB7IG5vZGUsIEFic3RyYWN0VmFsdWUoKSB9KTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgOiBsaXZl
KQorICAgICAgICB2YWx1ZXMudW5jaGVja2VkQXBwZW5kKEJhc2ljQmxvY2s6OlNTQURhdGE6Ok5v
ZGVBYnN0cmFjdFZhbHVlUGFpciB7IG5vZGUsIEFic3RyYWN0VmFsdWUoKSB9KTsKIH0KIAogdm9p
ZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCkBAIC0yMDIsNyArMTk5LDcgQEAg
Ym9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jaygpCiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnZhbHVlc0F0VGFpbC5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgIGJsb2NrLT52YWx1ZXNBdFRhaWxbaV0ubWVyZ2UobV92YXJpYWJsZXNbaV0pOwogCi0g
ICAgICAgIGZvciAoTm9kZUFic3RyYWN0VmFsdWVQYWlyJiB2YWx1ZUF0VGFpbCA6IGJsb2NrLT5z
c2EtPnZhbHVlc0F0VGFpbCkgeworICAgICAgICBmb3IgKGF1dG8mIHZhbHVlQXRUYWlsIDogYmxv
Y2stPnNzYS0+dmFsdWVzQXRUYWlsKSB7CiAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1
ZUF0Tm9kZSA9IGZvck5vZGUodmFsdWVBdFRhaWwubm9kZSk7CiAgICAgICAgICAgICB2YWx1ZUF0
VGFpbC52YWx1ZS5tZXJnZSh2YWx1ZUF0Tm9kZSk7CiAgICAgICAgICAgICB2YWx1ZUF0Tm9kZSA9
IHZhbHVlQXRUYWlsLnZhbHVlOwpAQCAtMjk0LDEzICsyOTEsMTMgQEAgYm9vbCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6bWVyZ2UoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSBmcm9tLT52YWx1ZXNBdFRhaWwuc2l6ZSgpOyBpLS07KQogICAg
ICAgICAgICAgY2hhbmdlZCB8PSB0by0+dmFsdWVzQXRIZWFkW2ldLm1lcmdlKGZyb20tPnZhbHVl
c0F0VGFpbFtpXSk7CiAKLSAgICAgICAgZm9yIChOb2RlQWJzdHJhY3RWYWx1ZVBhaXImIGVudHJ5
IDogdG8tPnNzYS0+dmFsdWVzQXRIZWFkKSB7Ci0gICAgICAgICAgICBOb2RlRmxvd1Byb2plY3Rp
b24gbm9kZSA9IGVudHJ5Lm5vZGU7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB0by0+c3Nh
LT52YWx1ZXNBdEhlYWQpIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBlbnRyeS5ub2RlOwog
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
TWVyZ2luZyBmb3IgIiwgbm9kZSwgIjogZnJvbSAiLCBmb3JOb2RlKG5vZGUpLCAiIHRvICIsIGVu
dHJ5LnZhbHVlLCAiXG4iKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICB1bnNpZ25lZCB2
YWx1ZUNvdW50SW5Gcm9tQmxvY2sgPSAwOwotICAgICAgICAgICAgZm9yIChOb2RlQWJzdHJhY3RW
YWx1ZVBhaXImIGZyb21CbG9ja1ZhbHVlQXRUYWlsIDogZnJvbS0+c3NhLT52YWx1ZXNBdFRhaWwp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZnJvbUJsb2NrVmFsdWVBdFRhaWwgOiBmcm9tLT5z
c2EtPnZhbHVlc0F0VGFpbCkgewogICAgICAgICAgICAgICAgIGlmIChmcm9tQmxvY2tWYWx1ZUF0
VGFpbC5ub2RlID09IG5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZyb21CbG9j
a1ZhbHVlQXRUYWlsLnZhbHVlID09IGZvck5vZGUobm9kZSkpOwogICAgICAgICAgICAgICAgICAg
ICArK3ZhbHVlQ291bnRJbkZyb21CbG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAppbmRleCA5Zjk0Y2ZlZTgxMjg1ZTA4YTQ0
OWY0NGI1M2VjYjZkNzlkZGUxMjA1Li5kNGRkMzgyYWM0ODIxOTI3ODhmNDU2NTYzZTRhOGEzMTVl
ZmFlYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJERkdBYnN0cmFj
dFZhbHVlLmgiCiAjaW5jbHVkZSAiREZHQnJhbmNoRGlyZWN0aW9uLmgiCi0jaW5jbHVkZSAiREZH
Rmxvd01hcC5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgog
CkBAIC00NCwxMSArNDMsMTEgQEAgcHVibGljOgogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdm9pZCBjcmVhdGVWYWx1
ZUZvck5vZGUoTm9kZUZsb3dQcm9qZWN0aW9uKSB7IH0KKyAgICB2b2lkIGNyZWF0ZVZhbHVlRm9y
Tm9kZShOb2RlKikgeyB9CiAgICAgCi0gICAgQWJzdHJhY3RWYWx1ZSYgZm9yTm9kZShOb2RlRmxv
d1Byb2plY3Rpb24gbm9kZSkKKyAgICBBYnN0cmFjdFZhbHVlJiBmb3JOb2RlKE5vZGUqIG5vZGUp
CiAgICAgewotICAgICAgICByZXR1cm4gbV9hYnN0cmFjdFZhbHVlcy5hdChub2RlKTsKKyAgICAg
ICAgcmV0dXJuIG1fYWJzdHJhY3RWYWx1ZXNbbm9kZS0+aW5kZXgoKV07CiAgICAgfQogICAgIAog
ICAgIEFic3RyYWN0VmFsdWUmIGZvck5vZGUoRWRnZSBlZGdlKQpAQCAtMTMzLDcgKzEzMiw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgR3JhcGgmIG1fZ3JhcGg7CiAKLSAgICBGbG93TWFwPEFic3Ry
YWN0VmFsdWU+JiBtX2Fic3RyYWN0VmFsdWVzOworICAgIFZlY3RvcjxBYnN0cmFjdFZhbHVlLCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIG1fYWJzdHJhY3RWYWx1ZXM7CiAgICAgT3BlcmFuZHM8
QWJzdHJhY3RWYWx1ZT4gbV92YXJpYWJsZXM7CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdl
T3B0aW1pemF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRl
Z2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKaW5kZXggZmJmYzQ2MjM0NjlhZjEwNzdlYjE2
M2JkN2EzMTg3OTg1MjA2NzQ4Ni4uMDFlNWRkYTkxMzU2YWZkNzUxNTllNDBjM2Y3NDQ0OTE2NTE5
MmQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNp
bmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAi
REZHSW5zZXJ0aW9uU2V0LmgiCi0jaW5jbHVkZSAiREZHTm9kZUZsb3dQcm9qZWN0aW9uLmgiCiAj
aW5jbHVkZSAiREZHUGhhc2UuaCIKICNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKQEAgLTEyMiw3
ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBSZWxhdGlvbnNoaXAo
Tm9kZUZsb3dQcm9qZWN0aW9uIGxlZnQsIE5vZGVGbG93UHJvamVjdGlvbiByaWdodCwgS2luZCBr
aW5kLCBpbnQgb2Zmc2V0ID0gMCkKKyAgICBSZWxhdGlvbnNoaXAoTm9kZSogbGVmdCwgTm9kZSog
cmlnaHQsIEtpbmQga2luZCwgaW50IG9mZnNldCA9IDApCiAgICAgICAgIDogbV9sZWZ0KGxlZnQp
CiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKQEAgLTEz
MywxNyArMTMyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9sZWZ0ICE9
IG1fcmlnaHQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUmVsYXRpb25zaGlwIHNhZmVDcmVh
dGUoTm9kZUZsb3dQcm9qZWN0aW9uIGxlZnQsIE5vZGVGbG93UHJvamVjdGlvbiByaWdodCwgS2lu
ZCBraW5kLCBpbnQgb2Zmc2V0ID0gMCkKKyAgICBzdGF0aWMgUmVsYXRpb25zaGlwIHNhZmVDcmVh
dGUoTm9kZSogbGVmdCwgTm9kZSogcmlnaHQsIEtpbmQga2luZCwgaW50IG9mZnNldCA9IDApCiAg
ICAgewotICAgICAgICBpZiAoIWxlZnQuaXNTdGlsbFZhbGlkKCkgfHwgIXJpZ2h0LmlzU3RpbGxW
YWxpZCgpIHx8IGxlZnQgPT0gcmlnaHQpCisgICAgICAgIGlmICghbGVmdCB8fCAhcmlnaHQgfHwg
bGVmdCA9PSByaWdodCkKICAgICAgICAgICAgIHJldHVybiBSZWxhdGlvbnNoaXAoKTsKICAgICAg
ICAgcmV0dXJuIFJlbGF0aW9uc2hpcChsZWZ0LCByaWdodCwga2luZCwgb2Zmc2V0KTsKICAgICB9
CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2xlZnQ7
IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9
CiAgICAgCi0gICAgTm9kZUZsb3dQcm9qZWN0aW9uIGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xl
ZnQ7IH0KLSAgICBOb2RlRmxvd1Byb2plY3Rpb24gcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Jp
Z2h0OyB9CisgICAgTm9kZSogbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIE5v
ZGUqIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQogICAgIEtpbmQga2luZCgpIGNv
bnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIGludCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X29mZnNldDsgfQogCkBAIC0yNTksNyArMjU4LDcgQEAgcHVibGljOgogICAgIC8vIElmIHBvc3Np
YmxlLCByZXR1cm5zIGEgZm9ybSBvZiB0aGlzIHJlbGF0aW9uc2hpcCB3aGVyZSB0aGUgZ2l2ZW4g
bm9kZSBpcyB0aGUgbGVmdAogICAgIC8vIHNpZGUuIFJldHVybnMgYSBudWxsIHJlbGF0aW9uc2hp
cCBpZiB0aGlzIHJlbGF0aW9uc2hpcCBjYW5ub3Qgc2F5IGFueXRoaW5nIGFib3V0IHRoaXMKICAg
ICAvLyBub2RlLgotICAgIFJlbGF0aW9uc2hpcCBmb3JOb2RlKE5vZGVGbG93UHJvamVjdGlvbiBu
b2RlKSBjb25zdAorICAgIFJlbGF0aW9uc2hpcCBmb3JOb2RlKE5vZGUqIG5vZGUpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAobV9sZWZ0ID09IG5vZGUpCiAgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CkBAIC0yNjgsNyArMjY3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUmVsYXRpb25z
aGlwKCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0TGVmdChOb2RlRmxvd1Byb2plY3Rpb24g
bGVmdCkKKyAgICB2b2lkIHNldExlZnQoTm9kZSogbGVmdCkKICAgICB7CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGxlZnQgIT0gbV9yaWdodCk7CiAgICAgICAgIG1fbGVmdCA9IGxlZnQ7CkBAIC05
ODUsMTMgKzk4NCwxMyBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKLSAgICBOb2RlRmxvd1Byb2plY3Rpb24gbV9sZWZ0OwotICAg
IE5vZGVGbG93UHJvamVjdGlvbiBtX3JpZ2h0OworICAgIE5vZGUqIG1fbGVmdDsKKyAgICBOb2Rl
KiBtX3JpZ2h0OwogICAgIEtpbmQgbV9raW5kOwogICAgIGludCBtX29mZnNldDsgLy8gVGhpcyBv
ZmZzZXQgY2FuIGJlIGFyYml0cmFyaWx5IGxhcmdlLgogfTsKIAotdHlwZWRlZiBIYXNoTWFwPE5v
ZGVGbG93UHJvamVjdGlvbiwgVmVjdG9yPFJlbGF0aW9uc2hpcD4+IFJlbGF0aW9uc2hpcE1hcDsK
K3R5cGVkZWYgSGFzaE1hcDxOb2RlKiwgVmVjdG9yPFJlbGF0aW9uc2hpcD4+IFJlbGF0aW9uc2hp
cE1hcDsKIAogY2xhc3MgSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogcHVibGljOgpAQCAtMTMxNSw3ICsxMzE0LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcC5taW5WYWx1ZU9mTGVmdCgpID49IDApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9uTmVnYXRpdmUgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsYXRpb25zaGlwLnJp
Z2h0KCkgPT0gbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocmVsYXRpb25zaGlwLnJpZ2h0KCkgPT0gbm9kZS0+Y2hpbGQyKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVsYXRpb25zaGlwLmtpbmQoKSA9PSBSZWxhdGlvbnNo
aXA6OkVxdWFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJlbGF0aW9uc2hp
cC5vZmZzZXQoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlc3NUaGFu
TGVuZ3RoID0gdHJ1ZTsKQEAgLTE0OTIsMTYgKzE0OTEsMjMgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVXBzaWxvbjogewotICAgICAgICAgICAgc2V0
RXF1aXZhbGVuY2UoCi0gICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLAotICAg
ICAgICAgICAgICAgIE5vZGVGbG93UHJvamVjdGlvbihub2RlLT5waGkoKSwgTm9kZUZsb3dQcm9q
ZWN0aW9uOjpTaGFkb3cpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAg
ICAgICBzZXRSZWxhdGlvbnNoaXAoCisgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwOjpzYWZl
Q3JlYXRlKAorICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PnBoaSgpLCBSZWxhdGlvbnNoaXA6OkVxdWFsLCAwKSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBQaGk6IHsKLSAgICAgICAgICAgIHNldEVxdWl2YWxlbmNlKAotICAgICAgICAgICAgICAg
IE5vZGVGbG93UHJvamVjdGlvbihub2RlLCBOb2RlRmxvd1Byb2plY3Rpb246OlNoYWRvdyksCi0g
ICAgICAgICAgICAgICAgbm9kZSk7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3JlbGF0aW9u
c2hpcHMuZmluZChub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGl0ZXIg
IT0gbV9yZWxhdGlvbnNoaXBzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPFJlbGF0
aW9uc2hpcD4gdG9BZGQ7CisgICAgICAgICAgICAgICAgZm9yIChSZWxhdGlvbnNoaXAgcmVsYXRp
b25zaGlwIDogaXRlci0+dmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zaGlw
IG5ld1JlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcDsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPnBoaSgpID09IG5ld1JlbGF0aW9uc2hpcC5yaWdodCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIG5ld1JlbGF0aW9uc2hpcC5z
ZXRMZWZ0KG5vZGUtPnBoaSgpKTsKKyAgICAgICAgICAgICAgICAgICAgdG9BZGQuYXBwZW5kKG5l
d1JlbGF0aW9uc2hpcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAo
UmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcCA6IHRvQWRkKQorICAgICAgICAgICAgICAgICAgICBz
ZXRSZWxhdGlvbnNoaXAocmVsYXRpb25zaGlwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE1MTAsMjYgKzE1MTYsNiBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0RXF1aXZhbGVuY2Uo
Tm9kZUZsb3dQcm9qZWN0aW9uIG9sZE5vZGUsIE5vZGVGbG93UHJvamVjdGlvbiBuZXdOb2RlKQot
ICAgIHsKLSAgICAgICAgc2V0UmVsYXRpb25zaGlwKFJlbGF0aW9uc2hpcDo6c2FmZUNyZWF0ZShv
bGROb2RlLCBuZXdOb2RlLCBSZWxhdGlvbnNoaXA6OkVxdWFsLCAwKSk7Ci0gICAgICAgIAotICAg
ICAgICBhdXRvIGl0ZXIgPSBtX3JlbGF0aW9uc2hpcHMuZmluZChvbGROb2RlKTsKLSAgICAgICAg
aWYgKGl0ZXIgIT0gbV9yZWxhdGlvbnNoaXBzLmVuZCgpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8
UmVsYXRpb25zaGlwPiB0b0FkZDsKLSAgICAgICAgICAgIGZvciAoUmVsYXRpb25zaGlwIHJlbGF0
aW9uc2hpcCA6IGl0ZXItPnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgUmVsYXRpb25zaGlwIG5l
d1JlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcDsKLSAgICAgICAgICAgICAgICAvLyBBdm9pZCBj
cmVhdGluZyBhbnkga2luZCBvZiBzZWxmLXJlbGF0aW9uc2hpcC4KLSAgICAgICAgICAgICAgICBp
ZiAobmV3Tm9kZS5ub2RlKCkgPT0gbmV3UmVsYXRpb25zaGlwLnJpZ2h0KCkubm9kZSgpKQotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBuZXdSZWxhdGlvbnNo
aXAuc2V0TGVmdChuZXdOb2RlKTsKLSAgICAgICAgICAgICAgICB0b0FkZC5hcHBlbmQobmV3UmVs
YXRpb25zaGlwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoUmVsYXRpb25zaGlw
IHJlbGF0aW9uc2hpcCA6IHRvQWRkKQotICAgICAgICAgICAgICAgIHNldFJlbGF0aW9uc2hpcChy
ZWxhdGlvbnNoaXApOwotICAgICAgICB9Ci0gICAgfQotICAgICAgICAgICAgCiAgICAgdm9pZCBz
ZXRSZWxhdGlvbnNoaXAoUmVsYXRpb25zaGlwIHJlbGF0aW9uc2hpcCwgdW5zaWduZWQgdGltZVRv
TGl2ZSA9IDEpCiAgICAgewogICAgICAgICBzZXRSZWxhdGlvbnNoaXAobV9yZWxhdGlvbnNoaXBz
LCByZWxhdGlvbnNoaXAsIHRpbWVUb0xpdmUpOwpAQCAtMTY4Myw3ICsxNjY5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGlmIChtX3NlZW5CbG9ja3MuYWRkKHRhcmdldCkpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgYmxvY2suIFdlIGNvcHkgc3ViamVjdCB0byBsaXZl
bmVzcyBwcnVuaW5nLgotICAgICAgICAgICAgYXV0byBpc0xpdmUgPSBbJl0gKE5vZGVGbG93UHJv
amVjdGlvbiBub2RlKSB7CisgICAgICAgICAgICBhdXRvIGlzTGl2ZSA9IFsmXSAoTm9kZSogbm9k
ZSkgewogICAgICAgICAgICAgICAgIGlmIChub2RlID09IG1femVybykKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC0+c3NhLT5s
aXZlQXRIZWFkLmNvbnRhaW5zKG5vZGUpOwpAQCAtMTcxNSw3ICsxNzAxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gYXNzaWduZWQgd291bGQgb25seSBoYXBwZW4gaWYgd2UgaGF2ZSBub3QgcHJv
Y2Vzc2VkIHRoZSBub2RlJ3MgcHJlZGVjZXNzb3IuIFdlCiAgICAgICAgIC8vIHNob3VsZG4ndCBw
cm9jZXNzIGJsb2NrcyB1bnRpbCB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgYmxvY2sncyBwcmVkZWNl
c3NvciBiZWNhdXNlIHdlCiAgICAgICAgIC8vIGFyZSB1c2luZyByZXZlcnNlIHBvc3RvcmRlci4K
LSAgICAgICAgVmVjdG9yPE5vZGVGbG93UHJvamVjdGlvbj4gdG9SZW1vdmU7CisgICAgICAgIFZl
Y3RvcjxOb2RlKj4gdG9SZW1vdmU7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9yZWxhdGlvbnNoaXBzQXRIZWFkW3RhcmdldF0pIHsK
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IHJlbGF0aW9uc2hpcE1hcC5maW5kKGVudHJ5LmtleSk7
CkBAIC0xODA1LDcgKzE3OTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZW50cnkudmFsdWUg
PSBtZXJnZWRSZWxhdGlvbnNoaXBzOwogICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAg
ICAgIH0KLSAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IHRvUmVtb3ZlKQor
ICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiB0b1JlbW92ZSkKICAgICAgICAgICAgIG1fcmVsYXRp
b25zaGlwc0F0SGVhZFt0YXJnZXRdLnJlbW92ZShub2RlKTsKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiBjaGFuZ2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
aXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
aXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCmluZGV4IGEwMzY4MjBmNTA0MTBiMzdlYzM1ZjI1MjRj
YTNlZGVmNjdmNWU4OTkuLjIzMDQ3ZTZhZjA1MGYyODhkNzhlOGViMmU1MmViNWJkYTU5YWI5ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNp
c1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5h
bHlzaXNQaGFzZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkRGR0Jhc2ljQmxv
Y2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
REZHRmxvd0luZGV4aW5nLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJ
bnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNDUsMTIgKzQ0LDEwIEBA
IHB1YmxpYzoKICAgICBMaXZlbmVzc0FuYWx5c2lzUGhhc2UoR3JhcGgmIGdyYXBoKQogICAgICAg
ICA6IFBoYXNlKGdyYXBoLCAibGl2ZW5lc3MgYW5hbHlzaXMiKQogICAgICAgICAsIG1fZGlydHlC
bG9ja3MobV9ncmFwaC5udW1CbG9ja3MoKSkKLSAgICAgICAgLCBtX2luZGV4aW5nKCptX2dyYXBo
Lm1faW5kZXhpbmdDYWNoZSkKICAgICAgICAgLCBtX2xpdmVBdEhlYWQobV9ncmFwaCkKICAgICAg
ICAgLCBtX2xpdmVBdFRhaWwobV9ncmFwaCkKKyAgICAgICAgLCBtX3dvcmtzZXQoZ3JhcGgubWF4
Tm9kZUNvdW50KCkgLSAxKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUt
PnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtzZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4
U3BhcnNlU2V0PFVuc2FmZVZlY3Rvck92ZXJmbG93Pj4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUt
Pm51bUluZGljZXMoKSk7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQpAQCAtODMsMjAgKzgwLDIw
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3csIDE+JiBsaXZlQXRIZWFkSW5kaWNlcyA9IG1fbGl2ZUF0SGVhZFtibG9ja0luZGV4XTsK
LSAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZUZsb3dQcm9qZWN0aW9uPiYgbGl2ZUF0SGVhZCA9
IGJsb2NrLT5zc2EtPmxpdmVBdEhlYWQ7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgbGl2
ZUF0SGVhZEluZGljZXMgPSBtX2xpdmVBdEhlYWRbYmxvY2tJbmRleF07CisgICAgICAgICAgICAg
ICAgVmVjdG9yPE5vZGUqPiYgbGl2ZUF0SGVhZCA9IGJsb2NrLT5zc2EtPmxpdmVBdEhlYWQ7CiAg
ICAgICAgICAgICAgICAgbGl2ZUF0SGVhZC5yZXNpemUoMCk7CiAgICAgICAgICAgICAgICAgbGl2
ZUF0SGVhZC5yZXNlcnZlQ2FwYWNpdHkobGl2ZUF0SGVhZEluZGljZXMuc2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4IDogbGl2ZUF0SGVhZEluZGljZXMpCi0gICAg
ICAgICAgICAgICAgICAgIGxpdmVBdEhlYWQudW5jaGVja2VkQXBwZW5kKG1faW5kZXhpbmcubm9k
ZVByb2plY3Rpb24oaW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZUF0SGVhZC51bmNo
ZWNrZWRBcHBlbmQobV9ncmFwaC5ub2RlQXQoaW5kZXgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBIYXNoU2V0PHVuc2lnbmVkLCBEZWZhdWx0
SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dW5zaWduZWQ+PiYgbGl2ZUF0VGFpbEluZGljZXMgPSBtX2xpdmVBdFRhaWxbYmxvY2tJbmRleF07
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPE5vZGVGbG93UHJvamVjdGlvbj4mIGxpdmVBdFRhaWwg
PSBibG9jay0+c3NhLT5saXZlQXRUYWlsOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGxp
dmVBdFRhaWxJbmRpY2VzID0gbV9saXZlQXRUYWlsW2Jsb2NrSW5kZXhdOworICAgICAgICAgICAg
ICAgIFZlY3RvcjxOb2RlKj4mIGxpdmVBdFRhaWwgPSBibG9jay0+c3NhLT5saXZlQXRUYWlsOwog
ICAgICAgICAgICAgICAgIGxpdmVBdFRhaWwucmVzaXplKDApOwogICAgICAgICAgICAgICAgIGxp
dmVBdFRhaWwucmVzZXJ2ZUNhcGFjaXR5KGxpdmVBdFRhaWxJbmRpY2VzLnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA6IG1fbGl2ZUF0VGFpbFtibG9ja0luZGV4
XSkKLSAgICAgICAgICAgICAgICAgICAgbGl2ZUF0VGFpbC51bmNoZWNrZWRBcHBlbmQobV9pbmRl
eGluZy5ub2RlUHJvamVjdGlvbihpbmRleCkpOworICAgICAgICAgICAgICAgICAgICBsaXZlQXRU
YWlsLnVuY2hlY2tlZEFwcGVuZChtX2dyYXBoLm5vZGVBdChpbmRleCkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKQEAgLTEwOSw1NyArMTA2LDY3IEBAIHByaXZhdGU6CiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShibG9jaywgIk9ubHkgZGlydHkgYmxvY2tzIG5lZWRzIHVwZGF0ZXMu
IEEgbnVsbCBibG9jayBzaG91bGQgbmV2ZXIgYmUgZGlydHkuIik7CiAKLSAgICAgICAgbV93b3Jr
c2V0LT5jbGVhcigpOworICAgICAgICBtX3dvcmtzZXQuY2xlYXIoKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA6IG1fbGl2ZUF0VGFpbFtibG9ja0luZGV4XSkKLSAgICAgICAgICAgIG1f
d29ya3NldC0+YWRkKGluZGV4KTsKKyAgICAgICAgICAgIG1fd29ya3NldC5hZGQoaW5kZXgpOwog
CiAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gYmxvY2stPnNpemUoKTsgbm9kZUlu
ZGV4LS07KSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7
CiAKLSAgICAgICAgICAgIGF1dG8gaGFuZGxlRWRnZSA9IFsmXSAoRWRnZSYgZWRnZSkgewotICAg
ICAgICAgICAgICAgIGJvb2wgbmV3RW50cnkgPSBtX3dvcmtzZXQtPmFkZChtX2luZGV4aW5nLmlu
ZGV4KGVkZ2Uubm9kZSgpKSk7Ci0gICAgICAgICAgICAgICAgZWRnZS5zZXRLaWxsU3RhdHVzKG5l
d0VudHJ5ID8gRG9lc0tpbGwgOiBEb2VzTm90S2lsbCk7Ci0gICAgICAgICAgICB9OworICAgICAg
ICAgICAgLy8gR2l2ZW4gYW4gVXBzaWxvbjoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAv
LyAgICBuOiBVcHNpbG9uKEB4LCBecCkKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBX
ZSBzYXkgdGhhdCBpdCBkZWYncyBAcCBhbmQgQG4gYW5kIHVzZXMgQHguCisgICAgICAgICAgICAv
LworICAgICAgICAgICAgLy8gR2l2ZW4gYSBQaGk6CisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgLy8gICAgcDogUGhpKCkKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXZSBzYXkg
bm90aGluZy4gSXQncyBuZWl0aGVyIGEgdXNlIG5vciBhIGRlZi4KKyAgICAgICAgICAgIC8vCisg
ICAgICAgICAgICAvLyBHaXZlbiBhIG5vZGU6CisgICAgICAgICAgICAvLworICAgICAgICAgICAg
Ly8gICAgbjogVGhpbmd5KEBhLCBAYiwgQGMpCisgICAgICAgICAgICAvLworICAgICAgICAgICAg
Ly8gV2Ugc2F5IHRoYXQgaXQgZGVmJ3MgQG4gYW5kIHVzZXMgQGEsIEBiLCBAYy4KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNl
IFVwc2lsb246IHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX3dvcmtz
ZXQtPmNvbnRhaW5zKG5vZGUtPmluZGV4KCkpLCAiVXBzaWxvbiBzaG91bGQgbm90IGJlIHVzZWQg
YXMgZGVmcyBieSBvdGhlciBub2Rlcy4iKTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFtX3dvcmtzZXQuY29udGFpbnMobm9kZS0+aW5kZXgoKSksICJVcHNpbG9uIHNob3Vs
ZCBub3QgYmUgdXNlZCBhcyBkZWZzIGJ5IG90aGVyIG5vZGVzLiIpOwogCiAgICAgICAgICAgICAg
ICAgTm9kZSogcGhpID0gbm9kZS0+cGhpKCk7Ci0gICAgICAgICAgICAgICAgbV93b3Jrc2V0LT5y
ZW1vdmUobV9pbmRleGluZy5zaGFkb3dJbmRleChwaGkpKTsKLSAgICAgICAgICAgICAgICBoYW5k
bGVFZGdlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBtX3dvcmtzZXQucmVtb3Zl
KHBoaS0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgbV93b3Jrc2V0LmFkZChub2RlLT5jaGls
ZDEoKS0+aW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIFBoaTogewotICAgICAgICAgICAgICAgIG1fd29ya3NldC0+cmVtb3Zl
KG1faW5kZXhpbmcuaW5kZXgobm9kZSkpOwotICAgICAgICAgICAgICAgIG1fd29ya3NldC0+YWRk
KG1faW5kZXhpbmcuc2hhZG93SW5kZXgobm9kZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBtX3dv
cmtzZXQtPnJlbW92ZShtX2luZGV4aW5nLmluZGV4KG5vZGUpKTsKLSAgICAgICAgICAgICAgICBt
X2dyYXBoLmRvVG9DaGlsZHJlbihub2RlLCBoYW5kbGVFZGdlKTsKKyAgICAgICAgICAgICAgICBt
X3dvcmtzZXQucmVtb3ZlKG5vZGUtPmluZGV4KCkpOworICAgICAgICAgICAgICAgIERGR19OT0RF
X0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5vZGUsIGFkZENoaWxkVXNlKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIFVwZGF0
ZSBsaXZlIGF0IGhlYWQuCi0gICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9y
T3ZlcmZsb3csIDE+JiBsaXZlQXRIZWFkID0gbV9saXZlQXRIZWFkW2Jsb2NrSW5kZXhdOwotICAg
ICAgICBpZiAobV93b3Jrc2V0LT5zaXplKCkgPT0gbGl2ZUF0SGVhZC5zaXplKCkpCisgICAgICAg
IGF1dG8mIGxpdmVBdEhlYWQgPSBtX2xpdmVBdEhlYWRbYmxvY2tJbmRleF07CisgICAgICAgIGlm
IChtX3dvcmtzZXQuc2l6ZSgpID09IGxpdmVBdEhlYWQuc2l6ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgbGl2ZUluZGV4QXRIZWFkIDogbGl2
ZUF0SGVhZCkKLSAgICAgICAgICAgIG1fd29ya3NldC0+cmVtb3ZlKGxpdmVJbmRleEF0SGVhZCk7
Ci0gICAgICAgIEFTU0VSVCghbV93b3Jrc2V0LT5pc0VtcHR5KCkpOworICAgICAgICAgICAgbV93
b3Jrc2V0LnJlbW92ZShsaXZlSW5kZXhBdEhlYWQpOworICAgICAgICBBU1NFUlQoIW1fd29ya3Nl
dC5pc0VtcHR5KCkpOwogCi0gICAgICAgIGxpdmVBdEhlYWQucmVzZXJ2ZUNhcGFjaXR5KGxpdmVB
dEhlYWQuc2l6ZSgpICsgbV93b3Jrc2V0LT5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IG5ld1ZhbHVlIDogKm1fd29ya3NldCkKKyAgICAgICAgbGl2ZUF0SGVhZC5yZXNlcnZlQ2FwYWNp
dHkobGl2ZUF0SGVhZC5zaXplKCkgKyBtX3dvcmtzZXQuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBuZXdWYWx1ZSA6IG1fd29ya3NldCkKICAgICAgICAgICAgIGxpdmVBdEhlYWQudW5j
aGVja2VkQXBwZW5kKG5ld1ZhbHVlKTsKIAogICAgICAgICBib29sIGNoYW5nZWRQcmVkZWNlc3Nv
ciA9IGZhbHNlOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2st
PnByZWRlY2Vzc29ycykgewotICAgICAgICAgICAgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhh
c2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVu
c2lnbmVkPj4mCi0gICAgICAgICAgICAgICAgbGl2ZUF0VGFpbCA9IG1fbGl2ZUF0VGFpbFtwcmVk
ZWNlc3Nvcl07Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5ld1ZhbHVlIDogKm1fd29ya3Nl
dCkgeworICAgICAgICAgICAgYXV0byYgbGl2ZUF0VGFpbCA9IG1fbGl2ZUF0VGFpbFtwcmVkZWNl
c3Nvcl07CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5ld1ZhbHVlIDogbV93b3Jrc2V0KSB7
CiAgICAgICAgICAgICAgICAgaWYgKGxpdmVBdFRhaWwuYWRkKG5ld1ZhbHVlKSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1fZGlydHlCbG9ja3MucXVpY2tTZXQocHJlZGVjZXNzb3ItPmlu
ZGV4KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRQcmVkZWNlc3NvciA9IHRydWU7
CkBAIC0xNjksMTcgKzE3NiwyMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY2hhbmdlZFBy
ZWRlY2Vzc29yOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRDaGlsZFVzZShO
b2RlKiwgRWRnZSYgZWRnZSkKKyAgICB7CisgICAgICAgIGJvb2wgbmV3RW50cnkgPSBtX3dvcmtz
ZXQuYWRkKGVkZ2UtPmluZGV4KCkpOworICAgICAgICBlZGdlLnNldEtpbGxTdGF0dXMobmV3RW50
cnkgPyBEb2VzS2lsbCA6IERvZXNOb3RLaWxsKTsKKyAgICB9CisKICAgICAvLyBCbG9ja3Mgd2l0
aCBuZXcgbGl2ZSB2YWx1ZXMgYXQgdGFpbC4KICAgICBCaXRWZWN0b3IgbV9kaXJ0eUJsb2NrczsK
LSAgICAKLSAgICBGbG93SW5kZXhpbmcmIG1faW5kZXhpbmc7CiAKICAgICAvLyBMaXZlIHZhbHVl
cyBwZXIgYmxvY2sgZWRnZS4KICAgICBCbG9ja01hcDxWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2Fm
ZVZlY3Rvck92ZXJmbG93LCAxPj4gbV9saXZlQXRIZWFkOwogICAgIEJsb2NrTWFwPEhhc2hTZXQ8
dW5zaWduZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+PiBtX2xpdmVBdFRhaWw7CiAKICAgICAvLyBTaW5n
bGUgc3BhcnNlIHNldCBhbGxvY2F0ZWQgb25jZSBhbmQgdXNlZCBieSBldmVyeSBiYXNpYyBibG9j
ay4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5kZXhTcGFyc2VTZXQ8VW5zYWZlVmVjdG9yT3ZlcmZs
b3c+PiBtX3dvcmtzZXQ7CisgICAgSW5kZXhTcGFyc2VTZXQ8VW5zYWZlVmVjdG9yT3ZlcmZsb3c+
IG1fd29ya3NldDsKIH07CiAKIGJvb2wgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoR3JhcGgmIGdy
YXBoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA1NGM0NTNmMzE5ZmQwOGVj
NGY1YTlhMTgxMWJjYjg0NmFlMjYzNDljLi4wN2Q2NDRmM2QzYzU4NGI3YmZjYmM4ZmJlZTVjNTJl
ZDYwODVlOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjU2MCwxOCAr
MjU2MCwxNSBAQCBwdWJsaWM6CiAgICAgQmFzaWNCbG9jayogb3duZXI7CiB9OwogCi1zdHJ1Y3Qg
Tm9kZUNvbXBhcmF0b3IgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVQdHJUeXBlPgotICAg
IGJvb2wgb3BlcmF0b3IoKShOb2RlUHRyVHlwZSBhLCBOb2RlUHRyVHlwZSBiKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGEtPmluZGV4KCkgPCBiLT5pbmRleCgpOwotICAgIH0KLX07Citp
bmxpbmUgYm9vbCBub2RlQ29tcGFyYXRvcihOb2RlKiBhLCBOb2RlKiBiKQoreworICAgIHJldHVy
biBhLT5pbmRleCgpIDwgYi0+aW5kZXgoKTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIENT
dHJpbmcgbm9kZUxpc3REdW1wKGNvbnN0IFQmIG5vZGVMaXN0KQogewotICAgIHJldHVybiBzb3J0
ZWRMaXN0RHVtcChub2RlTGlzdCwgTm9kZUNvbXBhcmF0b3IoKSk7CisgICAgcmV0dXJuIHNvcnRl
ZExpc3REdW1wKG5vZGVMaXN0LCBub2RlQ29tcGFyYXRvcik7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CkBAIC0yNTgyLDcgKzI1NzksNyBAQCBDU3RyaW5nIG5vZGVNYXBEdW1wKGNvbnN0IFQm
IG5vZGVNYXAsIER1bXBDb250ZXh0KiBjb250ZXh0ID0gMCkKICAgICAgICAgdHlwZW5hbWUgVDo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG5vZGVNYXAuYmVnaW4oKTsKICAgICAgICAgaXRlciAhPSBu
b2RlTWFwLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgIGtleXMuYXBwZW5kKGl0ZXItPmtleSk7Ci0g
ICAgc3RkOjpzb3J0KGtleXMuYmVnaW4oKSwga2V5cy5lbmQoKSwgTm9kZUNvbXBhcmF0b3IoKSk7
CisgICAgc3RkOjpzb3J0KGtleXMuYmVnaW4oKSwga2V5cy5lbmQoKSwgbm9kZUNvbXBhcmF0b3Ip
OwogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAg
ICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkKQEAgLTI1OTYsNyAr
MjU5Myw3IEBAIENTdHJpbmcgbm9kZVZhbHVlUGFpckxpc3REdW1wKGNvbnN0IFQmIG5vZGVWYWx1
ZVBhaXJMaXN0LCBEdW1wQ29udGV4dCogY29udGV4dCA9CiAgICAgdXNpbmcgViA9IHR5cGVuYW1l
IFQ6OlZhbHVlVHlwZTsKICAgICBUIHNvcnRlZExpc3QgPSBub2RlVmFsdWVQYWlyTGlzdDsKICAg
ICBzdGQ6OnNvcnQoc29ydGVkTGlzdC5iZWdpbigpLCBzb3J0ZWRMaXN0LmVuZCgpLCBbXShjb25z
dCBWJiBhLCBjb25zdCBWJiBiKSB7Ci0gICAgICAgIHJldHVybiBOb2RlQ29tcGFyYXRvcigpKGEu
bm9kZSwgYi5ub2RlKTsKKyAgICAgICAgcmV0dXJuIG5vZGVDb21wYXJhdG9yKGEubm9kZSwgYi5u
b2RlKTsKICAgICB9KTsKIAogICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ2YWVmNzExMGIyMDZjZmM4YzQ2MDFlY2Uz
Nzg4ZWVkN2ZhMTU2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVBYnN0cmFjdFZhbHVlUGFpci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJE
RkdOb2RlQWJzdHJhY3RWYWx1ZVBhaXIuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi1uYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLXZvaWQgTm9kZUFic3RyYWN0VmFsdWVQYWly
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KG5vZGUsICI9
PiIsIHZhbHVlKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVBYnN0cmFjdFZhbHVlUGFpci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
YTcxOWU2MTkyNDk3OTE3MGRlZDk0NTE4MjBhZTk0OTc3YmRiOTFmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZUFic3RyYWN0VmFsdWVQYWlyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVl
LmgiCi0jaW5jbHVkZSAiREZHTm9kZUZsb3dQcm9qZWN0aW9uLmgiCi0KLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKLQotc3RydWN0IE5vZGVBYnN0cmFjdFZhbHVlUGFpciB7Ci0gICAg
Tm9kZUFic3RyYWN0VmFsdWVQYWlyKCkgeyB9Ci0gICAgCi0gICAgTm9kZUFic3RyYWN0VmFsdWVQ
YWlyKE5vZGVGbG93UHJvamVjdGlvbiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiB2YWx1ZSkK
LSAgICAgICAgOiBub2RlKG5vZGUpCi0gICAgICAgICwgdmFsdWUodmFsdWUpCi0gICAgewotICAg
IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0gICAgCi0g
ICAgTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGU7Ci0gICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZTsKLX07
Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbG93UHJv
amVjdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbG93UHJvamVj
dGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZWViZWM4MDZlOWMyNzFl
YzBjOGIwN2UwZjA0MGE0MTM4ZGZiMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxvd1Byb2pl
Y3Rpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiREZHTm9kZUZsb3dQcm9qZWN0aW9uLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi12b2lkIE5vZGVGbG93UHJvamVjdGlv
bjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotewotICAgIGlmICghKnRoaXMpIHsKLSAg
ICAgICAgb3V0LnByaW50KCItIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGtp
bmQoKSA9PSBQcmltYXJ5KSB7Ci0gICAgICAgIG91dC5wcmludChub2RlKCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG91dC5wcmludCgic2hhZG93KCIsIG5vZGUoKSwgIikiKTsKLX0K
LQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsb3dQcm9q
ZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbG93UHJvamVjdGlv
bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjBhNjY4YTEwMjE4MWM4ODc2Y2Yx
YjI2YzhlMzQxMTVlMWNjZWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9u
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdf
SklUKQotCi0jaW5jbHVkZSAiREZHTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoVGFibGUuaD4K
LQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBOb2RlRmxvd1Byb2pl
Y3Rpb24gewotcHVibGljOgotICAgIGVudW0gS2luZCB7Ci0gICAgICAgIFByaW1hcnksCi0gICAg
ICAgIFNoYWRvdwotICAgIH07Ci0gICAgCi0gICAgTm9kZUZsb3dQcm9qZWN0aW9uKCkgeyB9Ci0g
ICAgCi0gICAgTm9kZUZsb3dQcm9qZWN0aW9uKE5vZGUqIG5vZGUpCi0gICAgICAgIDogbV93b3Jk
KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG5vZGUpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGtp
bmQoKSA9PSBQcmltYXJ5KTsKLSAgICB9Ci0gICAgCi0gICAgTm9kZUZsb3dQcm9qZWN0aW9uKE5v
ZGUqIG5vZGUsIEtpbmQga2luZCkKLSAgICAgICAgOiBtX3dvcmQoYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4obm9kZSkgfCAoa2luZCA9PSBTaGFkb3cgPyBzaGFkb3dCaXQgOiAwKSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChraW5kKCkgPT0ga2luZCk7Ci0gICAgfQotICAgIAotICAgIE5vZGVGbG93
UHJvamVjdGlvbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV93
b3JkKHNoYWRvd0JpdCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fd29yZDsgfQotICAgIAotICAgIEtpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIChtX3dvcmQgJiBzaGFkb3dCaXQpID8gU2hhZG93IDogUHJpbWFyeTsg
fQotICAgIAotICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Tm9k
ZSo+KG1fd29yZCAmIH5zaGFkb3dCaXQpOyB9Ci0gICAgCi0gICAgTm9kZSYgb3BlcmF0b3IqKCkg
Y29uc3QgeyByZXR1cm4gKm5vZGUoKTsgfQotICAgIE5vZGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7
IHJldHVybiBub2RlKCk7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3dvcmQ7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9
PShOb2RlRmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV93b3JkID09IG90aGVyLm1fd29yZDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9
KE5vZGVGbG93UHJvamVjdGlvbiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoTm9kZUZs
b3dQcm9qZWN0aW9uIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGtpbmQoKSAhPSBv
dGhlci5raW5kKCkpCi0gICAgICAgICAgICByZXR1cm4ga2luZCgpIDwgb3RoZXIua2luZCgpOwot
ICAgICAgICByZXR1cm4gbm9kZSgpIDwgb3RoZXIubm9kZSgpOwotICAgIH0KLSAgICAKLSAgICBi
b29sIG9wZXJhdG9yPihOb2RlRmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gb3RoZXIgPCAqdGhpczsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRv
cjw9KE5vZGVGbG93UHJvamVjdGlvbiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID4gb3RoZXIpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oTm9k
ZUZsb3dQcm9qZWN0aW9uIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPCBvdGhlcik7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzID09IE5vZGVGbG93UHJvamVj
dGlvbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7Ci0gICAgfQotICAgIAotICAgIC8vIFBo
aSBzaGFkb3cgcHJvamVjdGlvbnMgY2FuIGJlY29tZSBpbnZhbGlkIGJlY2F1c2UgdGhlIFBoaSBt
aWdodCBiZSBmb2xkZWQgdG8gc29tZXRoaW5nIGVsc2UuCi0gICAgYm9vbCBpc1N0aWxsVmFsaWQo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzICYmIChraW5kKCkgPT0gUHJpbWFy
eSB8fCBub2RlKCktPm9wKCkgPT0gUGhpKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAg
ICBzdGF0aWMgdm9pZCBmb3JFYWNoKE5vZGUqIG5vZGUsIGNvbnN0IEZ1bmMmIGZ1bmMpCi0gICAg
ewotICAgICAgICBmdW5jKE5vZGVGbG93UHJvamVjdGlvbihub2RlKSk7Ci0gICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFBoaSkKLSAgICAgICAgICAgIGZ1bmMoTm9kZUZsb3dQcm9qZWN0aW9uKG5v
ZGUsIFNoYWRvdykpOwotICAgIH0KLSAgICAKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgdWlu
dHB0cl90IHNoYWRvd0JpdCA9IDE7Ci0gICAgCi0gICAgdWludHB0cl90IG1fd29yZCB7IDAgfTsK
LX07Ci0KLXN0cnVjdCBOb2RlRmxvd1Byb2plY3Rpb25IYXNoIHsKLSAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChOb2RlRmxvd1Byb2plY3Rpb24ga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgZXF1YWwoTm9kZUZsb3dQcm9qZWN0aW9uIGEsIE5vZGVGbG93UHJvamVj
dGlvbiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkRGRzo6Tm9k
ZUZsb3dQcm9qZWN0aW9uPiB7Ci0gICAgdHlwZWRlZiBKU0M6OkRGRzo6Tm9kZUZsb3dQcm9qZWN0
aW9uSGFzaCBIYXNoOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFp
dHM7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6REZHOjpOb2RlRmxvd1Byb2pl
Y3Rpb24+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6REZHOjpOb2RlRmxvd1Byb2plY3Rp
b24+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA1ZjMyYjRkNjE4MmQ5YzExMDQ5ZGRjMjAz
MGI5OWZhN2NlYmRmYWM2Li5mNDA3YjdmMWRlNzBlN2M1MGE3ODVlODU4MGNiOTg1MGI3OTU0MGZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllcklu
c2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMTI2LDEzICsxMjYsMTEgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIHN0YXRlLWF0LXRhaWwgYmFzZWQg
b24gdGhlIGVwb2NocyBvZiBsaXZlIG5vZGVzIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICAg
Ly8gY3VycmVudCBlcG9jaC4gV2UgZ3JvdyBzdGF0ZS1hdC10YWlsIG1vbm90b25pY2FsbHkgdG8g
ZW5zdXJlIGNvbnZlcmdlbmNlLgogICAgICAgICAgICAgICAgICAgICBib29sIHRoaXNCbG9ja0No
YW5nZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rp
b24gbm9kZSA6IGJsb2NrLT5zc2EtPmxpdmVBdFRhaWwpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLmtpbmQoKSA9PSBOb2RlRmxvd1Byb2plY3Rpb246OlNoYWRvdykKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9y
IChOb2RlKiBub2RlIDogYmxvY2stPnNzYS0+bGl2ZUF0VGFpbCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmVwb2NoKCkgIT0gbV9jdXJyZW50RXBvY2gpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBvbGRlciB0aGFuIHRoZSBjdXJy
ZW50IGVwb2NoLCB0aGVuIHdlIG1heSBuZWVkIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcnVuIGEgYmFycmllciBvbiBpdCBpbiB0aGUgZnV0dXJlLiBTbywgYWRkIGl0IHRvIHRo
ZSBzdGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzQmxvY2tDaGFuZ2VkIHw9
IG1fc3RhdGVBdFRhaWwtPmF0KGJsb2NrKS5hZGQobm9kZS5ub2RlKCkpLmlzTmV3RW50cnk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0Jsb2NrQ2hhbmdlZCB8PSBtX3N0YXRlQXRU
YWlsLT5hdChibG9jaykuYWRkKG5vZGUpLmlzTmV3RW50cnk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkBAIC0x
ODAsMTAgKzE3OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgbV9zdGF0ZS0+YmVnaW5CYXNpY0Jsb2NrKGJsb2NrKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJsb2NrLT5zc2Et
PmxpdmVBdEhlYWQpIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS5raW5kKCkgPT0gTm9kZUZs
b3dQcm9qZWN0aW9uOjpTaGFkb3cpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIGlmIChtX3N0YXRlQXRIZWFkLT5hdChibG9jaykuY29udGFpbnMobm9kZS5u
b2RlKCkpKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiBibG9jay0+c3NhLT5saXZl
QXRIZWFkKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGVBdEhlYWQtPmF0KGJsb2NrKS5j
b250YWlucyhub2RlKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiBwcmV2aW91cyBibG9j
a3MgdGVsbCB1cyB0aGF0IHRoaXMgbm9kZSBtYXkgbmVlZCBhIGJhcnJpZXIgaW4gdGhlCiAgICAg
ICAgICAgICAgICAgICAgIC8vIGZ1dHVyZSwgdGhlbiBwdXQgaXQgaW4gdGhlIGFuY2llbnQgcHJp
bW9yZGlhbCBlcG9jaC4gVGhpcyBmb3JjZXMgdXMgdG8KICAgICAgICAgICAgICAgICAgICAgLy8g
ZW1pdCBhIGJhcnJpZXIgb24gYW55IHBvc3NpYmx5LWNlbGwgc3RvcmUsIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGVwb2NoIG9mIHRoZQpAQCAtMzMwLDggKzMyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFVwc2lsb246
Ci0gICAgICAgICAgICAgICAgLy8gQXNzdW1lIHRoZSB3b3JzdCBmb3IgUGhpcyBzbyB0aGF0IHdl
IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgUGhpIHNoYWRvd3MuCi0gICAgICAgICAgICAgICAg
bV9ub2RlLT5waGkoKS0+c2V0RXBvY2goRXBvY2goKSk7CisgICAgICAgICAgICAgICAgbV9ub2Rl
LT5waGkoKS0+c2V0RXBvY2gobV9ub2RlLT5lcG9jaCgpKTsKICAgICAgICAgICAgICAgICBtX25v
ZGUtPnNldEVwb2NoKEVwb2NoKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5kZXhTcGFyc2VTZXQuaCBiL1Nv
dXJjZS9XVEYvd3RmL0luZGV4U3BhcnNlU2V0LmgKaW5kZXggZjViZmJiMzJlZWJlYjIzN2VjZjJi
OWViMzAwZTcwMTU4NDczZjY0My4uMzgxZmEzZmMzMzU4ZGRhZTc1YWY5NjQwM2IyYWExZTJjMTZl
ODAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW5kZXhTcGFyc2VTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9JbmRleFNwYXJzZVNldC5oCkBAIC00NSw3ICs0NSw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciA9IENyYXNoT25PdmVyZmxvdz4KIGNsYXNzIEluZGV4
U3BhcnNlU2V0IHsKICAgICB0eXBlZGVmIFZlY3Rvcjx1bnNpZ25lZCwgMCwgT3ZlcmZsb3dIYW5k
bGVyPiBWYWx1ZUxpc3Q7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5kZXhTcGFyc2VTZXQodW5z
aWduZWQgc2l6ZSk7CisgICAgZXhwbGljaXQgSW5kZXhTcGFyc2VTZXQodW5zaWduZWQgbWF4VmFs
dWUpOwogCiAgICAgYm9vbCBhZGQodW5zaWduZWQpOwogICAgIGJvb2wgcmVtb3ZlKHVuc2lnbmVk
KTsKQEAgLTY1LDkgKzY1LDkgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlcj4KLWlubGluZSBJbmRleFNwYXJzZVNldDxPdmVyZmxvd0hhbmRsZXI+OjpJ
bmRleFNwYXJzZVNldCh1bnNpZ25lZCBzaXplKQoraW5saW5lIEluZGV4U3BhcnNlU2V0PE92ZXJm
bG93SGFuZGxlcj46OkluZGV4U3BhcnNlU2V0KHVuc2lnbmVkIG1heFZhbHVlKQogewotICAgIG1f
bWFwLnJlc2l6ZShzaXplKTsKKyAgICBtX21hcC5yZXNpemUobWF4VmFsdWUgKyAxKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyYzI0M2I4NGNmZjc5YmEzZTYzZmU4
NDIxNTA0NzNmZmQ0YmUwMDEwLi40MWViNzg5YzIxNmUxNGQ2ZTFiNTY2ZjZkYWJmMWM5YzU1NjA4
MzcwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTExLTAzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA4MzY0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NDAy
CisKKyAgICAgICAgYnJva2UgdGhlIGJ1aWxkIChSZXF1ZXN0ZWQgYnkgc21mciBvbiAjd2Via2l0
KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkRGRyBwbGF5cyBm
YXN0IGFuZCBsb29zZSB3aXRoIHRoZSBzaGFkb3cgdmFsdWVzIG9mIGEgUGhpIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MzA5CisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIwODM2NAorCiAyMDE2LTExLTAzICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIHBsYXlzIGZhc3QgYW5k
IGxvb3NlIHdpdGggdGhlIHNoYWRvdyB2YWx1ZXMgb2YgYSBQaGkKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2RmZy1zc2Etc3dhcC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1zc2Etc3dhcC5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMwYWQ2OGEyYzM0MzNjNGNjNmY5MDgw
YmM0NWQ2ZGI3Mzc3ZGZiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9kZmctc3NhLXN3YXAuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw4ICswLDAgQEAKLXZhciBpLGM9MDsKLWZ1bmN0aW9uIGZvbygpCi17Ci0gICAgdmFyIGE9MSxi
O2ZvcihpPTA7aTwyOysraSl7W2EsYl09W2IsYV07YysrfWlmKCFhXmIpdGhyb3cgYwotfQotbm9J
bmxpbmUoZm9vKTsKLWZvcih2YXIgayA9IDA7IGsgPCAxMDAwMDsgKytrKQotICAgIGZvbygpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>