<?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>197212</bug_id>
          
          <creation_ts>2019-04-23 14:35:21 -0700</creation_ts>
          <short_desc>REGRESSION(r244556): Causing build failures on multiple builders (Requested by ShawnRoberts on #webkit).</short_desc>
          <delta_ts>2019-04-23 14:39:20 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>197171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>sroberts</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1529762</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-23 14:35:21 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/244556 broke the build:
Causing build failures on multiple builders (Requested by ShawnRoberts 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>1529764</commentid>
    <comment_count>1</comment_count>
      <attachid>368066</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-23 14:35:33 -0700</bug_when>
    <thetext>Created attachment 368066
ROLLOUT of r244556

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>1529765</commentid>
    <comment_count>2</comment_count>
      <attachid>368066</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-23 14:38:17 -0700</bug_when>
    <thetext>Comment on attachment 368066
ROLLOUT of r244556

Clearing flags on attachment: 368066

Committed r244567: &lt;https://trac.webkit.org/changeset/244567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529766</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-23 14:38:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529767</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-23 14:39:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/50144858&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368066</attachid>
            <date>2019-04-23 14:35:33 -0700</date>
            <delta_ts>2019-04-23 14:38:17 -0700</delta_ts>
            <desc>ROLLOUT of r244556</desc>
            <filename>bug-197212-20190423143532.patch</filename>
            <type>text/plain</type>
            <size>251056</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNjZTNjNWNjMzc1ZTIz
YTZiYWZjNzQ3MzdlODg5NDYyY2VkMzViMC4uYWZjMTBkODIzZjRmMzRlNzUzNGJhNjM5NzFmYjE2
MGY5MTFhOTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA0LTIzICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQ0NTU2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk3MjEyCisKKyAgICAgICAgQ2F1c2luZyBidWlsZCBmYWlsdXJlcyBv
biBtdWx0aXBsZSBidWlsZGVycyAoUmVxdWVzdGVkIGJ5CisgICAgICAgIFNoYXduUm9iZXJ0cyBv
biAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkNy
ZWF0ZSBBVkZvdW5kYXRpb25Tb2Z0TGluay57aCxtbX0gdG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2Rl
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTcx
CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ1NTYKKwogMjAx
OS0wNC0yMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogVW5jYXVnaHQgRXhjZXB0aW9uOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ3RoaXMub3duZXJEb2N1bWVudC5mcmFtZUlkZW50aWZpZXInKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggYWM1ZWQ4Y2VmMWQ5Y2EzYmU2NmI0MWRkMTczNjNiN2FiYjFlNTFlOC4uNGEy
OGZmNjIwNTVlODA1OGExN2E4N2Y4OWEwNDM4ZWY1OWQzY2RiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDQtMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDQ1NTYu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcyMTIK
KworICAgICAgICBDYXVzaW5nIGJ1aWxkIGZhaWx1cmVzIG9uIG11bHRpcGxlIGJ1aWxkZXJzIChS
ZXF1ZXN0ZWQgYnkKKyAgICAgICAgU2hhd25Sb2JlcnRzIG9uICN3ZWJraXQpLgorCisgICAgICAg
IFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQ3JlYXRlIEFWRm91bmRhdGlvblNvZnRM
aW5rLntoLG1tfSB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcxNzEKKyAgICAgICAgaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NDU1NgorCiAyMDE5LTA0LTIzICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyZWF0ZSBBVkZvdW5kYXRpb25T
b2Z0TGluay57aCxtbX0gdG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE1YjI5
NjA0MzEwYTc4OWEzN2Y2Njc5M2M0YzZlYTc4N2Y2ODRiMDcuLmRhZDg1NmE5ZmIyOTllMjM2NTEx
MWUwMmVkYjRiZGUzYzg3MjA2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDQt
MjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDQ1NTYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcyMTIKKworICAgICAgICBDYXVzaW5nIGJ1aWxkIGZh
aWx1cmVzIG9uIG11bHRpcGxlIGJ1aWxkZXJzIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgU2hhd25S
b2JlcnRzIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAg
ICAgICAiQ3JlYXRlIEFWRm91bmRhdGlvblNvZnRMaW5rLntoLG1tfSB0byByZWR1Y2UgZHVwbGlj
YXRlIGNvZGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTcxNzEKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NDU1
NgorCiAyMDE5LTA0LTIzICBSZW15IERlbWFyZXN0ICA8cmRlbWFyZXN0QGFwcGxlLmNvbT4KIAog
ICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjI0NDU0NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBkMzllMGZjMTg5ZWM2MDRlMTMxODJlZDBlNTJjMDE2NjkxZWNiZTM3Li41ZjE2MmEz
MDBhMWNlMThkNzE5YWNjNTBjM2QwMDE1ZTgzOTQ1YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDQtMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
NDQ1NTYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTcyMTIKKworICAgICAgICBDYXVzaW5nIGJ1aWxkIGZhaWx1cmVzIG9uIG11bHRpcGxlIGJ1aWxk
ZXJzIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgU2hhd25Sb2JlcnRzIG9uICN3ZWJraXQpLgorCisg
ICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQ3JlYXRlIEFWRm91bmRhdGlv
blNvZnRMaW5rLntoLG1tfSB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcxNzEKKyAgICAgICAgaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NDU1NgorCiAyMDE5LTA0LTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyZWF0ZSBBVkZvdW5k
YXRpb25Tb2Z0TGluay57aCxtbX0gdG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVw
bGFjZW1lbnQubW0KaW5kZXggNDJlYTQzOTU3YzgwZjNmOGI5OWJiYzU5OWU3NDFhNzI5NTQ4ZmQw
OS4uMjYzYTIwMzZhOGQ1ZDY5ZGY3NjFhZWQ5ZGFkOWFmNTAyYmU5YmE3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5tbQpAQCAtNTcsMTQgKzU3LDE4IEBACiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNl
NjQuaD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKwordHlwZWRlZiBBVk1ldGFkYXRhSXRl
bSBBVk1ldGFkYXRhSXRlbVR5cGU7CitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91
bmRhdGlvbikKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFJdGVtKQor
I2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCwgSlND
b250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNv
bnRleHQoQVZNZXRhZGF0YUl0ZW0gKiwgSlNDb250ZXh0ICopOworc3RhdGljIEpTVmFsdWUgKmpz
VmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW1UeXBlICosIEpT
Q29udGV4dCAqKTsKICNlbmRpZgogCiBzdGF0aWMgU3RyaW5nIHF1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50U2NyaXB0KCkKQEAgLTMyNSwxMyArMzI5LDEzIEBAIHN0YXRpYyBKU1ZhbHVlICpqc1Zh
bHVlV2l0aFZhbHVlSW5Db250ZXh0KGlkIHZhbHVlLCBKU0NvbnRleHQgKmNvbnRleHQpCiAgICAg
ICAgIHJldHVybiBqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKICAg
ICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiBqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUsIGVtcHR5U3RyaW5nKCksIGNv
bnRleHQpOwotICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZNZXRh
ZGF0YUl0ZW1DbGFzcygpXSkKKyAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbQVZN
ZXRhZGF0YUl0ZW0gY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoQVZNZXRhZGF0
YUl0ZW1JbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwogCiAgICAgcmV0dXJuIG5pbDsKIH0KIAot
c3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRh
ZGF0YUl0ZW0gKml0ZW0sIEpTQ29udGV4dCAqY29udGV4dCkKK3N0YXRpYyBKU1ZhbHVlICpqc1Zh
bHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqaXRlbSwg
SlNDb250ZXh0ICpjb250ZXh0KQogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGRpY3Rpb25h
cnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aERpY3Rpb25hcnk6W2l0ZW0g
ZXh0cmFBdHRyaWJ1dGVzXV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNjU2Mzc4MzU3NTdmMDZkYThkNGVjNmI3Nzc1ODVl
NDJkNGVlZmQ4Li40ODg0ZWQzMWUzYjRhNDFhNGYxZjk1NDAxOGVmZWMzOWJjMDAxY2JmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMSw4ICsyMSw2IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMDc3RTg3QjEyMjZBNDYwMjAwQTJB
RkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRh
dGlvblNvZnRMaW5rLm1tICovOyB9OwotCQkwNzdFODdCMjIyNkE0NjAzMDBBMkFGRjAgLyogQVZG
b3VuZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3N0U4N0IwMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlu
ay5oICovOyB9OwogCQkwQzAwQ0ZENDFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QzAwQ0ZEMjFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggKi87IH07
CiAJCTBDMkQ5RTczMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkQ5RTcyMUVFRjVBRjYwMERC
QzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLzsgfTsKIAkJMEMyREEwNkQxRjMzQ0E4NDAwREJDMzE3
IC8qIENGTG9jYWxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQzJEQTA2NzFGMzNDQTg0MDBEQkMzMTcgLyogQ0ZMb2NhbGVTUEkuaCAqLzsgfTsK
QEAgLTEwMCw2ICs5OCw3IEBACiAJCTBDNzc4NUEwMUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xv
b2tNYWNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBDNzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCAqLzsgfTsKIAkJ
MEM3Nzg1QTExRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEM3Nzg1ODgxRjQ1MTMw
RjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovOyB9OwogCQkwQ0Y5OUNBNDFG
NzM2Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMDBDRkQxMUY2OENFNDYwMEFBQzI2
RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovOyB9OworCQk3QTM2RDBGOTIyM0FEOUFC
MDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5
cHRvU1BJLmggKi87IH07CiAJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFT
b2Z0TGluay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwQ0Y5OUNBNjFGNzM4NDM2MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuY3BwICovOyB9
OwogCQkwQ0Y5OUNBOTFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDRjk5Q0E3MUY3Mzg0
MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5oICovOyB9OwogCQkxQzA5RDA1MzFFMzFD
NDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGln
ZXN0LmggKi87IH07CkBAIC0xMjIsNyArMTIxLDYgQEAKIAkJNTcwQUI4RjkyMEFGNkUzRDAwQjhC
RTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTcwQUI4RjgyMEFGNkUzRDAwQjhCRTg3IC8qIE5TWFBDQ29ubmVj
dGlvblNQSS5oICovOyB9OwogCQk2M0M3RURDNzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQcm9ncmVz
c1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNF
MzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NTUEkuaCAqLzsgfTsKIAkJN0ExNjU2
NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0
IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovOyB9OwotCQk3QTM2RDBGOTIyM0FEOUFCMDBCMDUy
MkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJ
LmggKi87IH07CiAJCTdBM0E2QTgwMjBDQURCNDcwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBNkE3RjIwQ0FE
QjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5oICovOyB9OwogCQlBMTAyNjU4OTFGNTY3NDdBMDBC
NEM4NDQgLyogSElUb29sYm94U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmgg
Ki87IH07CiAJCUExMDI2NThFMUY1NjdFOUQwMEI0Qzg0NCAvKiBISVNlcnZpY2VzU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTAyNjU4RDFGNTY3
RTlEMDBCNEM4NDQgLyogSElTZXJ2aWNlc1NQSS5oICovOyB9OwpAQCAtMTc3LDggKzE3NSw2IEBA
CiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0JCTA3N0U4N0FGMjI2QTQ2MDIwMEEyQUZGMCAvKiBB
VkZvdW5kYXRpb25Tb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEFWRm91bmRhdGlvblNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwNzdFODdCMDIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZGb3VuZGF0aW9uU29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMwMENGRDExRjY4Q0U0NjAwQUFDMjZEIC8q
IE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQzAwQ0ZEMjFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVGltZUFWRm91bmRhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEOUU3MjFFRUY1QUY2MDBEQkMz
MTcgLyogRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
cG9ydE1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg2LDYgKzE4Miw3
IEBACiAJCTBDMkRBMDY4MUYzM0NBODQwMERCQzMxNyAvKiBDRk5ldHdvcmtDb25uZWN0aW9uQ2Fj
aGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0ZOZXR3b3JrQ29ubmVj
dGlvbkNhY2hlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDMkRBMDY5MUYz
M0NBODQwMERCQzMxNyAvKiBDRk5ldHdvcmtTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ0ZOZXR3b3JrU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBD
MkRBMDZBMUYzM0NBODQwMERCQzMxNyAvKiBDRlV0aWxpdGllc1NQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDRlV0aWxpdGllc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEQTA2QjFGMzNDQTg0MDBEQkMzMTcgLyogQ29y
ZUF1ZGlvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVBdWRpb1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEQTA2QzFGMzNDQTg0MDBEQkMz
MTcgLyogQ29yZU1lZGlhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
cmVNZWRpYVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEQTExQzFGM0JF
OUUwMDBEQkMzMTcgLyogQ29yZUdyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvcmVHcmFwaGljc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjg2LDcgKzI4Myw2IEBACiAJCTU3MEFCOEY4MjBBRjZFM0QwMEI4QkU4NyAvKiBOU1hQQ0Nv
bm5lY3Rpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNYUENDb25uZWN0aW9uU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzRTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBOU1By
b2dyZXNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TUHJvZ3Jlc3NTUEkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNo
aXZlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0tleWVkQXJjaGl2
ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0EzNkQwRjgyMjNBRDlBQjAw
QjA1MjJFIC8qIENvbW1vbkNyeXB0b1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Ez
QTZBN0YyMENBREI0NjAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTlNJbWFnZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0U1OTA5QzFGOTNCRjFFMDA2N0Y4Q0YgLyogVW5lbmNvZGFibGVIYW5kbGluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVbmVuY29kYWJsZUhhbmRsaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElUb29sYm94U1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01NzksOCArNTc1LDYgQEAKIAkJMUM0ODc2REUxRjhEODMxMzAwQ0NF
RUJEIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwNzdFODdCMDIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCAq
LywKLQkJCQkwNzdFODdBRjIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsu
bW0gKi8sCiAJCQkJRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVy
Q29jb2EubW0gKi8sCiAJCQkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0
TGluay5oICovLAogCQkJCUExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExp
bmsubW0gKi8sCkBAIC02NzgsNyArNjcyLDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkyRDAyRTkzQzIwNTZGQUE3MDBBMTM3OTcgLyogQXVk
aW9Ub29sYm94U1BJLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzdFODdCMjIyNkE0NjAzMDBBMkFG
RjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NTg5
MUY0NTEzMEYwMEY0RUJCNiAvKiBBVkZvdW5kYXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBDMkRBMTNFMUYzQkVCNDkwMERCQzMxNyAvKiBBVktpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0RGOTExMTMyMjBFNEVFQzAwMUVBMzlFIC8qIENlbGVzdGlhbFNQSS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04ODQsNyArODc3LDYgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTA3N0U4
N0IxMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBDNUZGRjBGMUY3OEQ5REEwMDlFRkYxQSAvKiBDbG9ja0NNLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5r
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDY0OTkzZDk2NjRlZmQyMzliZTY0ZGEzZWJiNTAzMjNlZWU0ZWI1
OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFVT
RShBVkZPVU5EQVRJT04pCi0KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4K
LSNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgotI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbikKLQotLy8gTm90ZTogV2UgZG9uJ3QgZGVmaW5lIGFjY2Vzc29yIG1hY3JvcyBmb3Ig
Y2xhc3NlcyAoZS5nLgotLy8gICAgI2RlZmluZSBBVkFzc2V0Q2FjaGUgUEFMOjpnZXRBVkFzc2V0
Q2FjaGVDbGFzcygpCi0vLyBiZWNhdXNlIHRoZXkgbWFrZSBpdCBkaWZmaWN1bHQgdG8gdXNlIHRo
ZSBjbGFzcyBuYW1lIGluIHNvdXJjZSBjb2RlLgotCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihQQUwsIEFWQXNzZXRDYWNoZSkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZB
c3NldEltYWdlR2VuZXJhdG9yKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVkFz
c2V0UmVhZGVyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVkFzc2V0UmVhZGVy
U2FtcGxlUmVmZXJlbmNlT3V0cHV0KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFBBTCwgQVZBc3NldFdyaXRlcikKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZB
c3NldFdyaXRlcklucHV0KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVkNhcHR1
cmVDb25uZWN0aW9uKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVkNhcHR1cmVE
ZXZpY2UpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWQ2FwdHVyZURldmljZUZv
cm1hdCkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZDYXB0dXJlRGV2aWNlSW5w
dXQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWQ2FwdHVyZU91dHB1dCkKLVNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZDYXB0dXJlU2Vzc2lvbikKLVNPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0KQotU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVkNvbnRlbnRLZXlSZXNwb25zZSkKLVNPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZDb250ZW50S2V5U2Vzc2lvbikKLVNPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgQVZGcmFtZVJhdGVSYW5nZSkKLVNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBBVk1ldGFkYXRhSXRlbSkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFBBTCwgQVZNdXRhYmxlQXVkaW9NaXgpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IEFWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoUEFMLCBBVk91dHB1dENvbnRleHQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQ
QUwsIEFWUGxheWVyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlBsYXllckl0
ZW0pCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUGxheWVySXRlbUxlZ2libGVP
dXRwdXQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUGxheWVySXRlbVZpZGVv
T3V0cHV0KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlBsYXllckxheWVyKQot
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVy
ZXIpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlNhbXBsZUJ1ZmZlclJl
bmRlclN5bmNocm9uaXplcikKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZVUkxB
c3NldCkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZWaWRlb1BlcmZvcm1hbmNl
TWV0cmljcykKLQotI2lmIFBMQVRGT1JNKE1BQykKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFBBTCwgQVZTdHJlYW1TZXNzaW9uKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBB
VlN0cmVhbURhdGFQYXJzZXIpCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1T
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWQXVkaW9TZXNzaW9uKQotU09GVF9MSU5L
X0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlBlcnNpc3RhYmxlQ29udGVudEtleVJlcXVlc3QpCi1T
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU3BlZWNoU3ludGhlc2lzVm9pY2UpCi1T
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU3BlZWNoU3ludGhlc2l6ZXIpCi1TT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU3BlZWNoVXR0ZXJhbmNlKQotI2VuZGlmCi0K
LSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi1TT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUm91dGVEZXRlY3RvcikKLSNlbmRpZgotCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRj
aEFsZ29yaXRobVNwZWN0cmFsLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVkF1ZGlvVGltZVBpdGNo
QWxnb3JpdGhtU3BlY3RyYWwgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQXVkaW9UaW1lUGl0Y2hB
bGdvcml0aG1TcGVjdHJhbCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFW
Rm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCwgTlNTdHJpbmcg
KikKLSNkZWZpbmUgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCgpCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3Rl
cmlzdGljVmlzdWFsLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNW
aXN1YWwgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRp
YUNoYXJhY3RlcmlzdGljQXVkaWJsZSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljQXVkaWJsZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3Rlcmlz
dGljQXVkaWJsZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk1l
ZGlhVHlwZUNsb3NlZENhcHRpb24gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWVkaWFUeXBlQ2xv
c2VkQ2FwdGlvbigpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZNZWRpYVR5cGVWaWRlbywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYVR5cGVW
aWRlbyBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5cGVWaWRlbygpCi1TT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVNdXhlZCwg
TlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYVR5cGVNdXhlZCBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZNZWRpYVR5cGVNdXhlZCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVBdWRpbywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZN
ZWRpYVR5cGVBdWRpbyBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5cGVBdWRpbygpCi1T
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5
cGVNZXRhZGF0YSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYVR5cGVNZXRhZGF0YSBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5cGVNZXRhZGF0YSgpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEluaGVyaXRVUklRdWVy
eUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZV
UkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21S
ZWZlcmVuY2luZ1VSSUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFW
Rm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVy
ZSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2Rl
Q2xlYW5BcGVydHVyZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZBc3NldEltYWdlR2VuZXJhdG9y
QXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwg
TlNTdHJpbmcgKikKLSNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSBQ
QUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZMYXllclZpZGVv
R3Jhdml0eVJlc2l6ZUFzcGVjdCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3Ry
aW5nICopCi0jZGVmaW5lIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIFBBTDo6
Z2V0X0FWRm91bmRhdGlvbl9BVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgpCi1T
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZTdHJl
YW1pbmdLZXlEZWxpdmVyeUNvbnRlbnRLZXlUeXBlLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlN0
cmVhbWluZ0tleURlbGl2ZXJ5Q29udGVudEtleVR5cGUgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
U3RyZWFtaW5nS2V5RGVsaXZlcnlDb250ZW50S2V5VHlwZSgpCi0KLVNPRlRfTElOS19DT05TVEFO
VF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNDb25uZWN0
ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZVdhc0Nv
bm5lY3RlZE5vdGlmaWNhdGlvbiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZDYXB0dXJlRGV2aWNl
V2FzQ29ubmVjdGVkTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmlj
YXRpb24sIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3Rl
ZE5vdGlmaWNhdGlvbiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZDYXB0dXJlRGV2aWNlV2FzRGlz
Y29ubmVjdGVkTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0aW9u
LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZp
Y2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1l
Tm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVy
Q2hhbmdlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZTdHJlYW1TZXNzaW9u
Q29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24gUEFM
OjpnZXRfQVZGb3VuZGF0aW9uX0FWU3RyZWFtU2Vzc2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lv
bklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxl
ZFRvRGVjb2RlTm90aWZpY2F0aW9uLCBOU1N0cmluZyopCi0jZGVmaW5lIEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb24gUEFMOjpnZXRfQVZGb3VuZGF0
aW9uX0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb24o
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25FcnJvcktleSwg
TlNTdHJpbmcqKQotI2RlZmluZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxlZFRvRGVj
b2RlTm90aWZpY2F0aW9uRXJyb3JLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25FcnJvcktleSgpCi0KLVNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMsIE5TU3RyaW5nICopCi0jZGVm
aW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2Vk
U3VidGl0bGVzKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0
aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlLCBOU1N0cmluZyAqKQotI2RlZmluZSBB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk1lZGlh
Q2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNv
bHV0aW9uU291cmNlQW5kUnVsZXNPbmx5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlBsYXllckl0
ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5IFBB
TDo6Z2V0X0FWRm91bmRhdGlvbl9BVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdS
ZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5KCkKLQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJp
bmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNTdHJp
bmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVk1ldGFkYXRhS2V5U3BhY2VDb21tb24oKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0bGUsIE5TU3RyaW5nICop
Ci0jZGVmaW5lIEFWTWVkaWFUeXBlU3VidGl0bGUgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWVk
aWFUeXBlU3VidGl0bGUoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZv
dW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50LCBOU1N0
cmluZyAqKQotI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVu
dCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3Jh
bUNvbnRlbnQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRp
b24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQsIE5TU3RyaW5nICopCi0jZGVmaW5l
IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
TWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQoKQotCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldE91dE9mQmFuZE1J
TUVUeXBlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5
cGVLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtl
eSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSwgTlNTdHJpbmcg
KikKLSNkZWZpbmUgQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVs
eSgpCi0KLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZywgTlNTdHJpbmcqKQot
I2RlZmluZSBBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZyBQQUw6OmdldF9BVkZv
dW5kYXRpb25fQVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKQotU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ29udGVu
dEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVkNv
bnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSBQQUw6OmdldF9BVkZvdW5kYXRpb25f
QVZDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXkoKQotCi1TT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVj
VHlwZUhFVkNXaXRoQWxwaGEsIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWVmlkZW9Db2RlY1R5cGVI
RVZDV2l0aEFscGhhIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlZpZGVvQ29kZWNUeXBlSEVWQ1dp
dGhBbHBoYSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlv
biwgQVZGaWxlVHlwZU1QRUc0LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVkZpbGVUeXBlTVBFRzQg
UEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRmlsZVR5cGVNUEVHNCgpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjS2V5LCBOU1N0cmlu
ZyAqKQotI2RlZmluZSBBVlZpZGVvQ29kZWNLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVmlk
ZW9Db2RlY0tleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZWaWRlb0NvZGVjSDI2NCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZWaWRlb0NvZGVj
SDI2NCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZWaWRlb0NvZGVjSDI2NCgpCi1TT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb1dpZHRoS2V5LCBO
U1N0cmluZyAqKQotI2RlZmluZSBBVlZpZGVvV2lkdGhLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9u
X0FWVmlkZW9XaWR0aEtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFW
Rm91bmRhdGlvbiwgQVZWaWRlb0hlaWdodEtleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZWaWRl
b0hlaWdodEtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZWaWRlb0hlaWdodEtleSgpCi1TT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0V4cGVj
dGVkU291cmNlRnJhbWVSYXRlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlZpZGVvRXhwZWN0
ZWRTb3VyY2VGcmFtZVJhdGVLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVmlkZW9FeHBlY3Rl
ZFNvdXJjZUZyYW1lUmF0ZUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSwgTlNTdHJpbmcgKikKLSNkZWZp
bmUgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZWaWRlb1By
b2ZpbGVMZXZlbEtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbiwgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBB
VlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVmlkZW9BdmVy
YWdlQml0UmF0ZUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbiwgQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXksIE5TU3RyaW5nICopCi0jZGVm
aW5lIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9B
VlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xl
dmVsLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRv
TGV2ZWwgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1
dG9MZXZlbCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlv
biwgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUg
QVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZW
aWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZFbmNvZGVyQml0UmF0ZUtleSwgTlNT
dHJpbmcgKikKLSNkZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZFbmNvZGVyQml0UmF0ZUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9S
X0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZGb3JtYXRJREtleSwgTlNTdHJpbmcgKikKLSNk
ZWZpbmUgQVZGb3JtYXRJREtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlv
biwgQVZOdW1iZXJPZkNoYW5uZWxzS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk51bWJlck9m
Q2hhbm5lbHNLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tleSgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlv
biwgQVZTYW1wbGVSYXRlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkg
UEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpCi0KLVNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0Q2FjaGVLZXksIE5T
U3RyaW5nICopCi0jZGVmaW5lIEFWVVJMQXNzZXRDYWNoZUtleSBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZVUkxBc3NldENhY2hlS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBO
U1N0cmluZyAqKQotI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5
IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tz
S2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBB
VlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBB
VlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9B
VlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRGlz
cGxheU5hbWVLZXksIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJh
Y2tEaXNwbGF5TmFtZUtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZPdXRPZkJhbmRBbHRlcm5h
dGVUcmFja0Rpc3BsYXlOYW1lS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5kZWRMYW5ndWFn
ZVRhZ0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0V4
dGVuZGVkTGFuZ3VhZ2VUYWdLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWT3V0T2ZCYW5kQWx0
ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrSXNE
ZWZhdWx0S2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNr
SXNEZWZhdWx0S2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk91dE9mQmFuZEFsdGVybmF0ZVRy
YWNrSXNEZWZhdWx0S2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrTWVkaWFDaGFyYWN0ZXJzdGljc0tl
eSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja01lZGlhQ2hh
cmFjdGVyc3RpY3NLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWT3V0T2ZCYW5kQWx0ZXJuYXRl
VHJhY2tNZWRpYUNoYXJhY3RlcnN0aWNzS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrSWRlbnRpZmll
cktleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0lkZW50
aWZpZXJLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJ
ZGVudGlmaWVyS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5LCBOU1N0cmluZyAqKQot
I2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5IFBBTDo6Z2V0X0FWRm91
bmRhdGlvbl9BVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5KCkKLVNPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKLSNk
ZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFjY2Vz
c2liaWxpdHkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2Ny
aWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5KCkKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2Ny
aWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICopCi0jZGVmaW5lIEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0
eSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNT
cG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNv
bnRlbnQsIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxp
YXJ5Q29udGVudCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNB
dXhpbGlhcnlDb250ZW50KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2li
aWxpdHksIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJl
c1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJh
Y3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5KCkKLQotU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZVF1
aWNrVGltZVVzZXJEYXRhLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VR
dWlja1RpbWVVc2VyRGF0YSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNl
UXVpY2tUaW1lVXNlckRhdGEoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBB
VkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZVF1aWNrVGltZU1ldGFkYXRhLCBOU1N0cmlu
ZyAqKQotI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VRdWlja1RpbWVNZXRhZGF0YSBQQUw6Omdl
dF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEoKQotU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFL
ZXlTcGFjZWlUdW5lcywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlaVR1
bmVzIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk1ldGFkYXRhS2V5U3BhY2VpVHVuZXMoKQotU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFL
ZXlTcGFjZUlEMywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlSUQzIFBB
TDo6Z2V0X0FWRm91bmRhdGlvbl9BVk1ldGFkYXRhS2V5U3BhY2VJRDMoKQotU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUlT
T1VzZXJEYXRhLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VJU09Vc2Vy
RGF0YSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEo
KQotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBBVkZvdW5kYXRpb24sIEFWU3RyZWFtRGF0YVBhcnNlckNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9j
b2xWZXJzaW9uc0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZTdHJlYW1EYXRhUGFyc2VyQ29u
dGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9B
VlN0cmVhbURhdGFQYXJzZXJDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXkoKQot
I2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRCb3VuZE5ldHdvcmtJbnRlcmZh
Y2VOYW1lLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50ZXJm
YWNlTmFtZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEJvdW5kTmV0d29ya0ludGVy
ZmFjZU5hbWUoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRp
b24sIEFWVVJMQXNzZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyS2V5LCBOU1N0cmluZyAqKQotI2Rl
ZmluZSBBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcktleSBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXkoKQotU09GVF9MSU5LX0NP
TlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRI
VFRQQ29va2llc0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZVUkxBc3NldEhUVFBDb29raWVz
S2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkoKQotU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFW
VVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXksIE5TU3RyaW5nICopCi0jZGVmaW5l
IEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXkgUEFMOjpnZXRfQVZGb3VuZGF0
aW9uX0FWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXkoKQotU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50
aW1lRXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Np
b25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQ2FwdHVy
ZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRl
ZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbldhc0lu
dGVycnVwdGVkTm90aWZpY2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkNhcHR1cmVTZXNz
aW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRl
ZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkNhcHR1cmVT
ZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRp
b25SZWFzb25LZXksIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1
cHRpb25SZWFzb25LZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQ2FwdHVyZVNlc3Npb25JbnRl
cnJ1cHRpb25SZWFzb25LZXkoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBB
VkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSwgTlNTdHJpbmcgKikKLSNkZWZp
bmUgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkNhcHR1
cmVTZXNzaW9uRXJyb3JLZXkoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBB
VkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50LCBOU1N0cmluZyAqKQot
I2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZBdWRpb1Nlc3Npb25DYXRlZ29yeUFtYmllbnQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlTb2xvQW1i
aWVudCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJp
ZW50IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5U29sb0FtYmll
bnQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFW
QXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5YmFjaywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRp
b1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlvU2Vz
c2lvbkNhdGVnb3J5UGxheWJhY2soKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNvcmQsIE5TU3RyaW5nICop
Ci0jZGVmaW5lIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNvcmQgUEFMOjpnZXRfQVZGb3VuZGF0
aW9uX0FWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNvcmQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5QW5k
UmVjb3JkLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFu
ZFJlY29yZCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXlB
bmRSZWNvcmQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRp
b24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcsIE5TU3RyaW5nICopCi0j
ZGVmaW5lIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcgUEFMOjpnZXRfQVZG
b3VuZGF0aW9uX0FWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcoKQotU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9u
TW9kZURlZmF1bHQsIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQXVkaW9TZXNzaW9uTW9kZURlZmF1
bHQgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQoKQotU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNz
aW9uTW9kZVZpZGVvQ2hhdCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nlc3Npb25Nb2Rl
VmlkZW9DaGF0IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlvU2Vzc2lvbk1vZGVWaWRlb0No
YXQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFW
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotI2RlZmlu
ZSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oKQotU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uSW50
ZXJydXB0aW9uVHlwZUtleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRl
cnJ1cHRpb25UeXBlS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlvU2Vzc2lvbkludGVy
cnVwdGlvblR5cGVLZXkoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZv
dW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5LCBOU1N0cmluZyAq
KQotI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvbktleSBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXkoKQotU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWUm91dGVEZXRlY3Rv
ck11bHRpcGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICop
Ci0jZGVmaW5lIEFWUm91dGVEZXRlY3Rvck11bHRpcGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VO
b3RpZmljYXRpb24gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWUm91dGVEZXRlY3Rvck11bHRpcGxl
Um91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uTWVkaWFTZXJ2aWNl
c1dlcmVSZXNldE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nlc3Np
b25NZWRpYVNlcnZpY2VzV2VyZVJlc2V0Tm90aWZpY2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRhdGlv
bl9BVkF1ZGlvU2Vzc2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmljYXRpb24oKQotI2Vu
ZGlmIC8vICBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmNmZmY0ZmJjMGVlZWRk
MGFmODA0NzZlYzIzMjBjOWJjODZkYWIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFLCBQQUxf
RVhQT1JUKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFWRk9VTkRBVElPTikK
LQotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgUEFMX0VYUE9SVCkKLQotU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXNzZXRDYWNoZSwgUEFMX0VY
UE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBc3NldFJlYWRl
ciwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVkFzc2V0V3JpdGVyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXNzZXRXcml0
ZXJJbnB1dCwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVDb25uZWN0aW9uLCBQQUxfRVhQT1JUKQot
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24s
IEFWQ2FwdHVyZURldmljZSwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VGb3JtYXQsIFBB
TF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlSW5wdXQsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZDYXB0dXJl
T3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb24sIFBBTF9FWFBPUlQpCi1TT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZD
YXB0dXJlVmlkZW9EYXRhT3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWRnJhbWVSYXRlUmFuZ2UsIFBB
TF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwLCBQQUxfRVhQT1JUKQotU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24sIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0sIFBBTF9FWFBPUlQp
Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlv
biwgQVZNdXRhYmxlQXVkaW9NaXgsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNdXRhYmxlQXVkaW9NaXhJbnB1
dFBhcmFtZXRlcnMsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZPdXRwdXRDb250ZXh0LCBQQUxfRVhQT1JUKQot
U09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24s
IEFWUGxheWVyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUGxheWVySXRlbSwgUEFMX0VYUE9SVCkKLVNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBs
YXllckl0ZW1MZWdpYmxlT3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZTdHJlYW1E
YXRhUGFyc2VyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXQsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlv
biwgQVZBc3NldFJlYWRlclNhbXBsZVJlZmVyZW5jZU91dHB1dCwgUEFMX0VYUE9SVCkKLVNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0
aW9uLCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCwgUEFMX0VYUE9SVCkKLVNPRlRfTElO
S19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9u
LCBBVkNvbnRlbnRLZXlSZXNwb25zZSwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1Jf
U09VUkNFX09QVElPTkFMX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNvbnRlbnRL
ZXlTZXNzaW9uLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9O
QUxfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5k
ZXJlciwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJ
VEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwg
UEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplciwg
UEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzLCBQQUxfRVhQ
T1JUKQotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vzc2lvbiwgUEFMX0VYUE9SVCkK
LSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLVNPRlRfTElOS19DTEFTU19GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbiwgUEFM
X0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVlBlcnNpc3RhYmxlQ29udGVudEtleVJlcXVlc3QsIFBBTF9FWFBPUlQpCi1T
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwg
QVZTcGVlY2hTeW50aGVzaXNWb2ljZSwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFN5bnRoZXNpemVy
LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlLCBQQUxfRVhQT1JUKQotI2VuZGlmCi0K
LSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi1TT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZSb3V0ZURl
dGVjdG9yLCBQQUxfRVhQT1JUKQotI2VuZGlmCi0KLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JB
cGVydHVyZU1vZGVDbGVhbkFwZXJ0dXJlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFW
QXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJhbCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkK
LVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0
aW9uLCBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkLCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZVdhc0Nvbm5lY3RlZE5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWRO
b3RpZmljYXRpb24sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZGaWxlVHlwZU1QRUc0
LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUs
IE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNBdWRpYmxlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgTlNTdHJpbmcgKiwgUEFMX0VY
UE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9y
QWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICosIFBBTF9F
WFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCwgTlNTdHJpbmcgKiwg
UEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQs
IE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWlu
UHJvZ3JhbUNvbnRlbnQsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljTGVnaWJsZSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05T
VEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIE5TU3Ry
aW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsLCBOU1N0
cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICosIFBB
TF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlTWV0YWRhdGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRh
dGlvbiwgQVZNZWRpYVR5cGVNdXhlZCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1l
ZGlhVHlwZVN1YnRpdGxlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBl
VmlkZW8sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUNvbW1vbktleVRp
dGxlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1v
biwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VJRDMsIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEs
IE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1l
TWV0YWRhdGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNl
UXVpY2tUaW1lVXNlckRhdGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0
YUtleVNwYWNlaVR1bmVzLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWT3V0T2ZCYW5k
QWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9u
LCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5kZWRMYW5ndWFnZVRhZ0tleSwgTlNTdHJp
bmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrSWRlbnRpZmll
cktleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRy
YWNrSXNEZWZhdWx0S2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWT3V0T2ZCYW5k
QWx0ZXJuYXRlVHJhY2tNZWRpYUNoYXJhY3RlcnN0aWNzS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tTb3VyY2VLZXksIE5TU3RyaW5nICos
IFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlv
biwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0
VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5LCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3Rp
ZmljYXRpb24sIE5TU3RyaW5nKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllckZhaWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uRXJyb3JLZXksIE5TU3RyaW5nKiwgUEFM
X0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXJDb250ZW50S2V5UmVxdWVzdFByb3RvY29s
VmVyc2lvbnNLZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZTdHJlYW1TZXNzaW9u
Q29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24sIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZTdHJlYW1pbmdLZXlEZWxpdmVyeUNvbnRlbnRL
ZXlUeXBlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRDYWNoZUtleSwg
TlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29t
cG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24s
IEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXksIE5TU3RyaW5nICosIFBBTF9F
WFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgTlNTdHJpbmcg
KiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5LCBO
U1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSwgTlNT
dHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlZpZGVvQ29kZWNIMjY0LCBOU1N0cmluZyAqLCBQ
QUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBBVkZvdW5kYXRpb24sIEFWVmlkZW9Db2RlY0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkK
LVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0
aW9uLCBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSwgTlNTdHJpbmcgKiwg
UEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlZpZGVvSGVpZ2h0S2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbCwgTlNTdHJpbmcg
KiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVlZpZGVvUHJvZmlsZUxldmVsS2V5LCBOU1N0cmluZyAqLCBQ
QUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBBVkZvdW5kYXRpb24sIEFWVmlkZW9XaWR0aEtleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkK
LQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5LCBO
U1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVN5c3RlbUZh
aXJQbGF5U3RyZWFtaW5nLCBOU1N0cmluZyosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZF
bmNvZGVyQml0UmF0ZUtleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBB
VkZvcm1hdElES2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTnVt
YmVyT2ZDaGFubmVsc0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBB
VlNhbXBsZVJhdGVLZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZV
UkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHksIE5TU3Ry
aW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRo
QWxwaGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50LCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcsIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXlBbmRSZWNvcmQs
IE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXli
YWNrLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlS
ZWNvcmQsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29y
eVNvbG9BbWJpZW50LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFW
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleSwgTlNTdHJpbmcgKiwgUEFM
X0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmlj
YXRpb24sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25Nb2RlRGVm
YXVsdCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbk1vZGVWaWRl
b0NoYXQsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkVycm9y
S2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1
cHRpb25FbmRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNh
cHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZp
Y2F0aW9uLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUm91dGVEZXRlY3Rvck11bHRp
cGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICosIFBBTF9F
WFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZVUkxBc3NldEJvdW5kTmV0d29ya0ludGVyZmFjZU5hbWUsIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXks
IE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi0KLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SFRUUENv
b2tpZXNLZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3Nl
dFJlcXVpcmVzQ3VzdG9tVVJMTG9hZGluZ0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLSNl
bmRpZgotCi0jZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMTc2YzUwNWVmMmQxYTcy
MGIyN2Y2ZDA1NDY5MzEwZmFhZmE3OWU2Li4xZTVjZjlkMGU1NzMzMWY4OGQxMTkyMGEzNGQ1ZGQ3
OWZhYmQxNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMDAsNyArMTAwLDYgQEAKIAkJMDcwOUZDNEUxMDI1REVFMzAwNTlD
REJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmls
aXR5U2xpZGVyLmggKi87IH07CiAJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcwRTgx
RDExQkYyNzY1NjAwMUZEQTQ4IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEU4MUQwMUJGMjc2
NTYwMDFGREE0OCAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi87IH07Ci0JCUNE
QTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyNTE3MEEyNzkwMDBENDVD
NTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tICovOyB9OwogCQkwNzBGNTQ5ODE3RjEyRjZCMDAxNjlF
MDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEY1NDk3MTdGMTJGNkIwMDE2
OUUwNCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovOyB9Owog
CQkwNzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzhBRDEx
MUQwNzNENjMwMDg3QzVDRSAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tICovOyB9Owog
CQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFBOUVDMDE2OEZC
NTZDMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgKi87IH07CkBAIC00MDgxLDYg
KzQwODAsNyBAQAogCQlDREEyOUEzMjFDQzAxQTk1MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQTI5QTJFMUNCRjczRkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEQTU5NTkzMjE0NkRFQzMwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE1OTU5MTIxNDZERUMzMDBB
ODQxODUgLyogSEVWQ1V0aWxpdGllcy5oICovOyB9OwogCQlDREE1OTU5ODIxNDZERjc4MDBBODQx
ODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREE1OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGll
c0NvY29hLmggKi87IH07CisJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Np
b25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REE3OTgyNTE3MEEyNzkwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tICovOyB9OwogCQlD
REE3OTgyQTE3MEEzRDAwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUg
LyogQXVkaW9TZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDND
RDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCAqLzsgfTsKIAkJQ0RBQjZEMjkxN0M3REU2QzAw
QzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNzE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250
cm9sc0hvc3QuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IDFiMmY2NWVmY2RhMDQxNTljYWQyZjZmMTYz
OTYzM2QyYWUzYmQyYjEuLjkwOTI0ZTZmYTZmODIwNWM5YTkyOTdhMzkwNTM2ODMwZWE5ZTlmZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vz
c2lvbklPUy5tbQpAQCAtMzQsOCArMzQsMjkgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91
bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5o
PgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoQVZG
b3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb24p
CisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdv
cnlBbWJpZW50LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50LCBOU1N0cmluZyAqKQorU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Np
b25DYXRlZ29yeVJlY29yZCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkLCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeUF1
ZGlvUHJvY2Vzc2luZywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09O
U1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbk1vZGVWaWRlb0NoYXQsIE5TU3RyaW5n
ICopCisKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb24gZ2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpCisj
ZGVmaW5lIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50IGdldEFWQXVkaW9TZXNzaW9uQ2F0
ZWdvcnlBbWJpZW50KCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50
IGdldEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlTb2xvQW1iaWVudCgpCisjZGVmaW5lIEFWQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlQbGF5YmFjayBnZXRBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheWJhY2so
KQorI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UmVjb3JkIGdldEFWQXVkaW9TZXNzaW9u
Q2F0ZWdvcnlSZWNvcmQoKQorI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFuZFJl
Y29yZCBnZXRBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFuZFJlY29yZCgpCisjZGVmaW5lIEFW
QXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcgZ2V0QVZBdWRpb1Nlc3Npb25DYXRl
Z29yeUF1ZGlvUHJvY2Vzc2luZygpCisjZGVmaW5lIEFWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQg
Z2V0QVZBdWRpb1Nlc3Npb25Nb2RlRGVmYXVsdCgpCisjZGVmaW5lIEFWQXVkaW9TZXNzaW9uTW9k
ZVZpZGVvQ2hhdCBnZXRBVkF1ZGlvU2Vzc2lvbk1vZGVWaWRlb0NoYXQoKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEyNCw3ICsxNDUsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0
ZWdvcnkoQ2F0ZWdvcnlUeXBlIG5ld0NhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saQog
ICAgIH0KIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIFtbUEFMOjpnZXRBVkF1ZGlv
U2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHNldENhdGVnb3J5OmNhdGVnb3J5U3RyaW5n
IG1vZGU6Y2F0ZWdvcnlNb2RlIHJvdXRlU2hhcmluZ1BvbGljeTpzdGF0aWNfY2FzdDxBVkF1ZGlv
U2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeT4ocG9saWN5KSBvcHRpb25zOm9wdGlvbnMgZXJyb3I6
JmVycm9yXTsKKyAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBzZXRDYXRlZ29y
eTpjYXRlZ29yeVN0cmluZyBtb2RlOmNhdGVnb3J5TW9kZSByb3V0ZVNoYXJpbmdQb2xpY3k6c3Rh
dGljX2Nhc3Q8QVZBdWRpb1Nlc3Npb25Sb3V0ZVNoYXJpbmdQb2xpY3k+KHBvbGljeSkgb3B0aW9u
czpvcHRpb25zIGVycm9yOiZlcnJvcl07CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxB
VE9SKSAmJiAhUExBVEZPUk0oSU9TTUFDKQogICAgIEFTU0VSVCghZXJyb3IpOwogI2VuZGlmCkBA
IC0xMzIsNyArMTUzLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5
VHlwZSBuZXdDYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGkKIAogQXVkaW9TZXNzaW9u
OjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0CiB7Ci0gICAgTlNT
dHJpbmcgKmNhdGVnb3J5U3RyaW5nID0gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBz
aGFyZWRJbnN0YW5jZV0gY2F0ZWdvcnldOworICAgIE5TU3RyaW5nICpjYXRlZ29yeVN0cmluZyA9
IFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIGNhdGVnb3J5XTsKICAgICBpZiAoW2Nh
dGVnb3J5U3RyaW5nIGlzRXF1YWw6QVZBdWRpb1Nlc3Npb25DYXRlZ29yeUFtYmllbnRdKQogICAg
ICAgICByZXR1cm4gQW1iaWVudFNvdW5kOwogICAgIGlmIChbY2F0ZWdvcnlTdHJpbmcgaXNFcXVh
bDpBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5U29sb0FtYmllbnRdKQpAQCAtMTYxLDcgKzE4Miw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJvdXRlU2hhcmluZ1BvbGljeTo6SW5kZXBlbmRlbnQp
ID09IHN0YXRpY19jYXN0PHNpemVfdD4oQVZBdWRpb1Nlc3Npb25Sb3V0ZVNoYXJpbmdQb2xpY3lJ
bmRlcGVuZGVudCksICJSb3V0ZVNoYXJpbmdQb2xpY3k6OkluZGVwZW5kZW50IGlzIG5vdCBBVkF1
ZGlvU2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeUluZGVwZW5kZW50IGFzIGV4cGVjdGVkIik7CiAK
LSAgICBBVkF1ZGlvU2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kgPSBbW1BBTDo6Z2V0
QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSByb3V0ZVNoYXJpbmdQb2xpY3ld
OworICAgIEFWQXVkaW9TZXNzaW9uUm91dGVTaGFyaW5nUG9saWN5IHBvbGljeSA9IFtbQVZBdWRp
b1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHJvdXRlU2hhcmluZ1BvbGljeV07CiAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PFJvdXRlU2hhcmluZ1BvbGljeT4ocG9saWN5KSA8PSBSb3V0ZVNoYXJpbmdQ
b2xpY3k6OkxvbmdGb3JtVmlkZW8pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSb3V0ZVNoYXJp
bmdQb2xpY3k+KHBvbGljeSk7CiB9CkBAIC0xNjksNyArMTkwLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiBTdHJpbmcgQXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJ
RCgpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExB
VEZPUk0oSU9TTUFDKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICByZXR1cm4gW1tQQUw6Omdl
dEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRleHRVSURd
OworICAgIHJldHVybiBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSByb3V0aW5nQ29u
dGV4dFVJRF07CiAjZWxzZQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogI2VuZGlmCkBAIC0x
OTEsMTcgKzIxMiwxNyBAQCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246
OmNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdAogCiBmbG9hdCBBdWRpb1Nlc3Npb246OnNhbXBsZVJh
dGUoKSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygp
IHNoYXJlZEluc3RhbmNlXSBzYW1wbGVSYXRlXTsKKyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lv
biBzaGFyZWRJbnN0YW5jZV0gc2FtcGxlUmF0ZV07CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246
OmJ1ZmZlclNpemUoKSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Np
b25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUo
KTsKKyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gSU9CdWZmZXJE
dXJhdGlvbl0gKiBzYW1wbGVSYXRlKCk7CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246Om51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRp
b1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBvdXRwdXROdW1iZXJPZkNoYW5uZWxzXTsK
KyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVy
T2ZDaGFubmVsc107CiB9CiAKIGJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZUludGVy
bmFsKGJvb2wgYWN0aXZlKQpAQCAtMjE2LDE0ICsyMzcsMTQgQEAgYm9vbCBBdWRpb1Nlc3Npb246
OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCiAgICAgLy8gcmV0dXJucywgc28g
ZG8gaXQgc3luY2hyb25vdXNseSBvbiB0aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAgICAgaWYgKGFj
dGl2ZSkgewogICAgICAgICBkaXNwYXRjaF9zeW5jKG1fcHJpdmF0ZS0+bV9kaXNwYXRjaFF1ZXVl
LmdldCgpLCBeewotICAgICAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBz
aGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOllFUyB3aXRoT3B0aW9uczowIGVycm9yOiZlcnJvcl07
CisgICAgICAgICAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6
WUVTIHdpdGhPcHRpb25zOjAgZXJyb3I6JmVycm9yXTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
cmV0dXJuICFlcnJvcjsKICAgICB9CiAKICAgICBkaXNwYXRjaF9hc3luYyhtX3ByaXZhdGUtPm1f
ZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKLSAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9u
Q2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOk5PIHdpdGhPcHRpb25zOkFWQXVkaW9T
ZXNzaW9uU2V0QWN0aXZlT3B0aW9uTm90aWZ5T3RoZXJzT25EZWFjdGl2YXRpb24gZXJyb3I6JmVy
cm9yXTsKKyAgICAgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZl
Ok5PIHdpdGhPcHRpb25zOkFWQXVkaW9TZXNzaW9uU2V0QWN0aXZlT3B0aW9uTm90aWZ5T3RoZXJz
T25EZWFjdGl2YXRpb24gZXJyb3I6JmVycm9yXTsKICAgICB9KTsKIAogICAgIHJldHVybiB0cnVl
OwpAQCAtMjMxLDE0ICsyNTIsMTQgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZl
SW50ZXJuYWwoYm9vbCBhY3RpdmUpCiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1
ZmZlclNpemUoKSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25D
bGFzcygpIHNoYXJlZEluc3RhbmNlXSBwcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBs
ZVJhdGUoKTsKKyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gcHJl
ZmVycmVkSU9CdWZmZXJEdXJhdGlvbl0gKiBzYW1wbGVSYXRlKCk7CiB9CiAKIHZvaWQgQXVkaW9T
ZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogewogICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyU2l6ZSAv
IHNhbXBsZVJhdGUoKTsKLSAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJl
ZEluc3RhbmNlXSBzZXRQcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uOmR1cmF0aW9uIGVycm9yOiZl
cnJvcl07CisgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0UHJlZmVycmVk
SU9CdWZmZXJEdXJhdGlvbjpkdXJhdGlvbiBlcnJvcjomZXJyb3JdOwogICAgIEFTU0VSVCghZXJy
b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IGZhZjViNDRkYjdkM2E5N2RhOWQy
N2UyN2RhOTQ5YmU5ODMzMmU0NDkuLmQ2MjU5M2EzYjU1Zjc4NmZhYjQzYTc1NjU3YjFmODQ5ODNj
YWM0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC00NSwxMiArNDUsMTIgQEAKICNpbXBv
cnQgPHd0Zi9SQU1TaXplLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpbXBvcnQg
PHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgotCi1XRUJDT1JFX0VYUE9SVCBOU1N0
cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldl
YlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNPUkVfRVhQ
T1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNh
dGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24i
OwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmlj
YXRpb24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmROb3RpZmljYXRpb24iOworU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCitT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbikKK1NPRlRfTElOS19D
T05TVEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0
aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXksIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlJvdXRlRGV0ZWN0
b3JNdWx0aXBsZVJvdXRlc0RldGVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAq
KQogCiAjaWYgSEFWRShDRUxFU1RJQUwpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BU
SU9OQUwoQ2VsZXN0aWFsKQpAQCAtNTgsNiArNTgsMjAgQEAgU09GVF9MSU5LX0NMQVNTX09QVElP
TkFMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQogU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0
aW9uU3RhdGVGcm9tLCBOU1N0cmluZyAqKQogI2VuZGlmCiAKKyNpZiBIQVZFKE1FRElBX1BMQVlF
UikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
VlJvdXRlRGV0ZWN0b3IpCisjZW5kaWYKKworI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbiBnZXRBVkF1
ZGlvU2Vzc2lvbkNsYXNzKCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3Rp
ZmljYXRpb24gZ2V0QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oKQorI2Rl
ZmluZSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXkgZ2V0QVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25UeXBlS2V5KCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25P
cHRpb25LZXkgZ2V0QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXkoKQorCitXRUJD
T1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3Rp
ZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9u
IjsKK1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmROb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24iOworCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogQGludGVyZmFjZSBXZWJNZWRpYVNlc3Npb25IZWxwZXIgOiBOU09iamVjdCB7CkBA
IC0yMDMsNyArMjE3LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpCiAgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7
CiAKICAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3Rv
cjpAc2VsZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bk5vdGlmaWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJl
ZEluc3RhbmNlXV07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihpbnRlcnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZp
Y2F0aW9uIG9iamVjdDpbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdXTsKIAogICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNh
dGlvbiBvYmplY3Q6bmlsXTsKQEAgLTI4Niw5ICszMDAsOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkKIAogICAg
ICAgICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKSB7CiAgICAgICAgICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURl
dGVjdG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5p
dF0pOworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IgPSBhZG9wdE5T
KFthbGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICAgICAgcHJv
dGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0g
cHJvdGVjdGVkU2VsZi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgICAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRT
ZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTop
IG5hbWU6QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlm
aWNhdGlvbiBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOworICAg
ICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
cjpwcm90ZWN0ZWRTZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJs
ZURpZENoYW5nZTopIG5hbWU6Z2V0QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3Rl
ZERpZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRl
Y3Rvci5nZXQoKV07CiAgICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5t
bQppbmRleCAwMTUwMmNkYjBiZWFiZTM4ODBiZjMzZDU0MzJmMmY2NTI2ZjM2YzdmLi5lYjY5ODg4
NDBhMTMwNzE1NzgzMWZlMzhhYWIyM2YwZTg1YThiZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQpAQCAtMzUsMTQgKzM1LDM4IEBACiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZQbGF5ZXJJdGVtVHJhY2suaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotCi0jaW1wb3J0
IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgogCiBAY2xhc3MgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIEBpbnRlcmZhY2UgQVZN
ZWRpYVNlbGVjdGlvbk9wdGlvbiAoV2ViS2l0SW50ZXJuYWwpCiAtIChpZClvcHRpb25JRDsKIEBl
bmQKIAorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCisKK1NPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRUcmFjaykKK1NPRlRfTElOS19DTEFTUyhB
VkZvdW5kYXRpb24sIEFWUGxheWVySXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24s
IEFWUGxheWVySXRlbVRyYWNrKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZNZWRp
YVNlbGVjdGlvbkdyb3VwKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbikKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFJ
dGVtKQorCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rl
c2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxp
YXJ5Q29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZv
dW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9y
QWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChB
VkZvdW5kYXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNv
bW1vbiwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRh
SXRlbUNsYXNzKCkKKworI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFt
Q29udGVudCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpCisj
ZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0
eSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHko
KQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQgZ2V0QVZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50KCkKKyNkZWZpbmUgQVZNZWRpYUNo
YXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IGdldEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0
eSgpCisjZGVmaW5lIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9u
S2V5VGl0bGUoKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24gZ2V0QVZNZXRhZGF0
YUtleVNwYWNlQ29tbW9uKCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsOjpBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNr
KiB0cmFjaykKQEAgLTg4LDIyICsxMTIsMjIgQEAgdm9pZCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIEF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kIEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6OmF1ZGlvS2luZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
YXNzZXRUcmFjaykgewotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudF0pCisgICAgICAg
IGlmIChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50KCkgJiYg
W21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzQXV4aWxpYXJ5Q29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gQXVkaW9UcmFja1ByaXZh
dGU6OkFsdGVybmF0aXZlOwotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJp
bGl0eV0pCisgICAgICAgIGlmIChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVz
VmlkZW9Gb3JBY2Nlc3NpYmlsaXR5KCkgJiYgW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0
eV0pCiAgICAgICAgICAgICByZXR1cm4gQXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOwot
ICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50XSkKKyAgICAgICAgaWYgKGNhbkxvYWRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpICYmIFttX2Fzc2V0VHJh
Y2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9n
cmFtQ29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gQXVkaW9UcmFja1ByaXZhdGU6Ok1haW47
CiAgICAgICAgIHJldHVybiBBdWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZTsKICAgICB9CiAKICAgICBp
ZiAobV9tZWRpYVNlbGVjdGlvbk9wdGlvbikgewogICAgICAgICBBVk1lZGlhU2VsZWN0aW9uT3B0
aW9uICpvcHRpb24gPSBtX21lZGlhU2VsZWN0aW9uT3B0aW9uLT5hdk1lZGlhU2VsZWN0aW9uT3B0
aW9uKCk7Ci0gICAgICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRp
YUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50XSkKKyAgICAgICAgaWYgKGNhbkxvYWRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQoKSAmJiBbb3B0aW9uIGhhc01l
ZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50
XSkKICAgICAgICAgICAgIHJldHVybiBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU7Ci0g
ICAgICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rl
cmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKKyAgICAgICAgaWYgKGNhbkxv
YWRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHkoKSAm
JiBbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVz
Y3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKICAgICAgICAgICAgIHJldHVybiBBdWRpb1Ry
YWNrUHJpdmF0ZTo6RGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hh
cmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnRdKQor
ICAgICAgICBpZiAoY2FuTG9hZEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250
ZW50KCkgJiYgW29wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0lzTWFpblByb2dyYW1Db250ZW50XSkKICAgICAgICAgICAgIHJldHVybiBBdWRpb1RyYWNr
UHJpdmF0ZTo6TWFpbjsKICAgICAgICAgcmV0dXJuIEF1ZGlvVHJhY2tQcml2YXRlOjpOb25lOwog
ICAgIH0KQEAgLTExNSwyNiArMTM5LDI2IEBAIEF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kIEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw6OmF1ZGlvS2luZCgpIGNvbnN0CiBWaWRlb1RyYWNrUHJpdmF0
ZTo6S2luZCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjp2aWRlb0tpbmQoKSBjb25zdAogewog
ICAgIGlmIChtX2Fzc2V0VHJhY2spIHsKLSAgICAgICAgaWYgKFttX2Fzc2V0VHJhY2sgaGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFj
Y2Vzc2liaWxpdHldKQorICAgICAgICBpZiAoY2FuTG9hZEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rl
c2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSgpICYmIFttX2Fzc2V0VHJhY2sgaGFzTWVkaWFD
aGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vz
c2liaWxpdHldKQogICAgICAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOwot
ICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eV0pCisg
ICAgICAgIGlmIChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5E
aWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkgJiYgW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNj
ZXNzaWJpbGl0eV0pCiAgICAgICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRp
b25zOwotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudF0pCisgICAgICAgIGlmIChjYW5M
b2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50KCkgJiYgW21fYXNzZXRU
cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxp
YXJ5Q29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6OkFsdGVy
bmF0aXZlOwotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGlj
OkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50XSkKKyAgICAgICAgaWYg
KGNhbkxvYWRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpICYmIFtt
X2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJ
c01haW5Qcm9ncmFtQ29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZh
dGU6Ok1haW47CiAgICAgICAgIHJldHVybiBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZTsKICAgICB9
CiAKICAgICBpZiAobV9tZWRpYVNlbGVjdGlvbk9wdGlvbikgewogICAgICAgICBBVk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICpvcHRpb24gPSBtX21lZGlhU2VsZWN0aW9uT3B0aW9uLT5hdk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uKCk7Ci0gICAgICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0
aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkK
KyAgICAgICAgaWYgKGNhbkxvYWRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0Zv
ckFjY2Vzc2liaWxpdHkoKSAmJiBbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRp
YUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKICAgICAgICAg
ICAgIHJldHVybiBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjsKLSAgICAgICAgaWYgKFtvcHRpb24g
aGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nw
b2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHldKQorICAgICAgICBpZiAoY2FuTG9hZEFWTWVkaWFD
aGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpICYm
IFtvcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFu
c2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHldKQogICAgICAgICAgICAgcmV0dXJu
IFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczsKLSAgICAgICAgaWYgKFtvcHRpb24gaGFzTWVk
aWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnRd
KQorICAgICAgICBpZiAoY2FuTG9hZEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29u
dGVudCgpICYmIFtvcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNJc0F1eGlsaWFyeUNvbnRlbnRdKQogICAgICAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQ
cml2YXRlOjpBbHRlcm5hdGl2ZTsKLSAgICAgICAgaWYgKFtvcHRpb24gaGFzTWVkaWFDaGFyYWN0
ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudF0pCisgICAg
ICAgIGlmIChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQo
KSAmJiBbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
SXNNYWluUHJvZ3JhbUNvbnRlbnRdKQogICAgICAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQcml2
YXRlOjpNYWluOwogICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU7CiAgICAg
fQpAQCAtMTY1LDYgKzE4OSw5IEBAIEF0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsOjppZCgpIGNvbnN0CiAKIEF0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
OjpsYWJlbCgpIGNvbnN0CiB7CisgICAgaWYgKCFjYW5Mb2FkQVZNZXRhZGF0YUNvbW1vbktleVRp
dGxlKCkgfHwgIWNhbkxvYWRBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24oKSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5QXRvbSgpOworCiAgICAgTlNBcnJheSAqY29tbW9uTWV0YWRhdGEgPSBuaWw7CiAg
ICAgaWYgKG1fYXNzZXRUcmFjaykKICAgICAgICAgY29tbW9uTWV0YWRhdGEgPSBbbV9hc3NldFRy
YWNrIGNvbW1vbk1ldGFkYXRhXTsKQEAgLTE3MywxMiArMjAwLDEyIEBAIEF0b21pY1N0cmluZyBB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpsYWJlbCgpIGNvbnN0CiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIE5TQXJyYXkgKnRpdGxlcyA9IFtQQUw6Omdl
dEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBtZXRhZGF0YUl0ZW1zRnJvbUFycmF5OmNvbW1vbk1ldGFk
YXRhIHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFWTWV0YWRhdGFL
ZXlTcGFjZUNvbW1vbl07CisgICAgTlNBcnJheSAqdGl0bGVzID0gW0FWTWV0YWRhdGFJdGVtIG1l
dGFkYXRhSXRlbXNGcm9tQXJyYXk6Y29tbW9uTWV0YWRhdGEgd2l0aEtleTpBVk1ldGFkYXRhQ29t
bW9uS2V5VGl0bGUga2V5U3BhY2U6QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKICAgICBpZiAo
IVt0aXRsZXMgY291bnRdKQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAKICAgICAvLyBJ
ZiBwb3NzaWJsZSwgcmV0dXJuIGEgdGl0bGUgaW4gb25lIG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVk
IGxhbmd1YWdlcy4KLSAgICBOU0FycmF5ICp0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMgPSBb
UEFMOjpnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkgbWV0YWRhdGFJdGVtc0Zyb21BcnJheTp0aXRs
ZXMgZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpbTlNMb2Nh
bGUgcHJlZmVycmVkTGFuZ3VhZ2VzXV07CisgICAgTlNBcnJheSAqdGl0bGVzRm9yUHJlZmVycmVk
TGFuZ3VhZ2VzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6dGl0bGVz
IGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXM6W05TTG9jYWxl
IHByZWZlcnJlZExhbmd1YWdlc11dOwogICAgIGlmIChbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3Vh
Z2VzIGNvdW50XSkKICAgICAgICAgcmV0dXJuIFtbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2Vz
IG9iamVjdEF0SW5kZXg6MF0gc3RyaW5nVmFsdWVdOwogICAgIHJldHVybiBbW3RpdGxlcyBvYmpl
Y3RBdEluZGV4OjBdIHN0cmluZ1ZhbHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCBhNTc2YjZiNzExNDk0MjE5MzJjMTQzM2M5NTBk
ZTU4OTdhNGE1YjA3Li40NjA5MDU2MTgxMWVkMWM0NDgyNzIxMDE1ZTdlYzQxYjJlYjkwZjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBA
IC00OCwxMSArNDgsMTUgQEAKICNlbmRpZgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaD4KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitT
T0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19GUkFNRVdPUksoTWVk
aWFUb29sYm94KQogU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCiAKK1NPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVySXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZv
dW5kYXRpb24sIEFWTXV0YWJsZUF1ZGlvTWl4KQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZNdXRhYmxlQXVkaW9NaXhJbnB1dFBhcmFtZXRlcnMpCisKIFNPRlRfTElOSyhBdWRpb1Rv
b2xib3gsIEF1ZGlvQ29udmVydGVyQ29udmVydENvbXBsZXhCdWZmZXIsIE9TU3RhdHVzLCAoQXVk
aW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgVUludDMyIGluTnVtYmVyUENNRnJhbWVz
LCBjb25zdCBBdWRpb0J1ZmZlckxpc3QqIGluSW5wdXREYXRhLCBBdWRpb0J1ZmZlckxpc3QqIG91
dE91dHB1dERhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5OdW1iZXJQQ01GcmFtZXMsIGluSW5w
dXREYXRhLCBvdXRPdXRwdXREYXRhKSkKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29u
dmVydGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiog
aW5Tb3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0
aW5hdGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGlu
U291cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCiAK
QEAgLTIwMyw3ICsyMDcsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVh
dGVNaXgoKQogICAgIEFTU0VSVChtX2F2UGxheWVySXRlbSk7CiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKIAotICAgIG1fYXZBdWRpb01peCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVk11dGFibGVBdWRp
b01peEluc3RhbmNlKCkgaW5pdF0pOworICAgIG1fYXZBdWRpb01peCA9IGFkb3B0TlMoW2FsbG9j
QVZNdXRhYmxlQXVkaW9NaXhJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE1UQXVkaW9Qcm9jZXNz
aW5nVGFwQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKICAgICAgICAgMCwKQEAgLTIyMCw3ICsyMjQs
NyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNaXgoKQogICAgIEFT
U0VSVCh0YXApOwogICAgIEFTU0VSVChtX3RhcCA9PSB0YXApOwogCi0gICAgUmV0YWluUHRyPEFW
TXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbUEFM
OjphbGxvY0FWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzSW5zdGFuY2UoKSBpbml0XSk7
CisgICAgUmV0YWluUHRyPEFWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzPiBwYXJhbWV0
ZXJzID0gYWRvcHROUyhbYWxsb2NBVk11dGFibGVBdWRpb01peElucHV0UGFyYW1ldGVyc0luc3Rh
bmNlKCkgaW5pdF0pOwogICAgIFtwYXJhbWV0ZXJzIHNldEF1ZGlvVGFwUHJvY2Vzc29yOm1fdGFw
LmdldCgpXTsKIAogICAgIENNUGVyc2lzdGVudFRyYWNrSUQgdHJhY2tJRCA9IG1fYXZBc3NldFRy
YWNrLmdldCgpLnRyYWNrSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0
TWFjLm1tCmluZGV4IDhlNmVkN2M4YjJhMTI2MWVkNzRiOTM5MDg0NzUyYzkzZGQxZTdmNDMuLjVk
NWUxNDczZDA5NDUwZjNkNjI5ZDZmZDk4OTAzMWJkMzVmNDhjODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFy
Z2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCkBAIC0zMCw4ICszMCwxMCBAQAogCiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQ
SS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9B
VkZvdW5kYXRpb25Tb2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZv
dW5kYXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dENvbnRleHQp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2Vs
ZWN0aW9uR3JvdXBBVkZPYmpDLm1tCmluZGV4IDgzYjY0MjE3MmUxOWU2N2JlOWVhYmQ5YTZmOTlh
YmMzNDkwNDhmMjAuLmY3ODJkOGI3ZTBmZDg5N2QwMmJhYTVhZDFmNzczMzFhYmI5ZmFiY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KQEAg
LTMzLDE1ICszMywxOSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbS5oPgog
I2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
K1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktf
Q0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uR3JvdXApCitTT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQorCiAjaWYgSEFWRShNRURJ
QV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKICNpbmNsdWRlIDxNZWRpYUFjY2Vzc2liaWxpdHkv
TWVkaWFBY2Nlc3NpYmlsaXR5Lmg+CiAjaW5jbHVkZSAiTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExp
bmsuaCIKICNlbmRpZgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsu
aD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZP
YmpDPiBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZShNZWRpYVNlbGVjdGlvbkdy
b3VwQVZGT2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikKQEAgLTEw
Miw3ICsxMDYsNyBAQCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6fk1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDKCkKIAogdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRl
T3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewotICAgIFJl
dGFpblB0cjxOU1NldD4gbmV3QVZPcHRpb25zID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0
V2l0aEFycmF5OltQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgcGxheWFibGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRp
b25zXV1dKTsKKyAgICBSZXRhaW5QdHI8TlNTZXQ+IG5ld0FWT3B0aW9ucyA9IGFkb3B0TlMoW1tO
U1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpbZ2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3Mo
KSBwbGF5YWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpbbV9tZWRpYVNlbGVjdGlv
bkdyb3VwIG9wdGlvbnNdXV0pOwogICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IG9sZEFWT3B0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bV9v
cHRpb25zLnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgYXZPcHRpb24gOiBtX29wdGlvbnMua2V5
cygpKQogICAgICAgICBbb2xkQVZPcHRpb25zIGFkZE9iamVjdDooX19icmlkZ2UgQVZNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqKWF2T3B0aW9uXTsKQEAgLTEzNSw3ICsxMzksNyBAQCB2b2lkIE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBjaGFyYWN0ZXJpcwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNMYW5ndWFnZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6dXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpLnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpCiAgICAgICAgIFtuc0xhbmd1YWdlcyBhZGRPYmplY3Q6
KE5TU3RyaW5nKilsYW5ndWFnZV07Ci0gICAgTlNBcnJheSogZmlsdGVyZWRPcHRpb25zID0gW1BB
TDo6Z2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlvbk9wdGlvbnNG
cm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRpb25zXSBmaWx0ZXJlZEFuZFNvcnRl
ZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzOm5zTGFuZ3VhZ2VzLmdldCgpXTsKKyAgICBO
U0FycmF5KiBmaWx0ZXJlZE9wdGlvbnMgPSBbZ2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3Mo
KSBtZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBv
cHRpb25zXSBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzOm5z
TGFuZ3VhZ2VzLmdldCgpXTsKIAogICAgIGlmICghW2ZpbHRlcmVkT3B0aW9ucyBjb3VudF0gJiYg
Y2hhcmFjdGVyaXN0aWNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4LDcgKzE1
Miw3IEBAIHZvaWQgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OnVwZGF0ZU9wdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzCiAgICAgZm9yIChhdXRvJiBjaGFyYWN0ZXJp
c3RpYyA6IGNoYXJhY3RlcmlzdGljcykKICAgICAgICAgW25zQ2hhcmFjdGVyaXN0aWNzIGFkZE9i
amVjdDooTlNTdHJpbmcgKiljaGFyYWN0ZXJpc3RpY107CiAKLSAgICBOU0FycmF5KiBvcHRpb25z
V2l0aENoYXJhY3RlcmlzdGljcyA9IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNz
KCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZpbHRlcmVkT3B0aW9ucyB3aXRoTWVk
aWFDaGFyYWN0ZXJpc3RpY3M6bnNDaGFyYWN0ZXJpc3RpY3MuZ2V0KCldOworICAgIE5TQXJyYXkq
IG9wdGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzID0gW2dldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENs
YXNzKCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZpbHRlcmVkT3B0aW9ucyB3aXRo
TWVkaWFDaGFyYWN0ZXJpc3RpY3M6bnNDaGFyYWN0ZXJpc3RpY3MuZ2V0KCldOwogICAgIGlmIChv
cHRpb25zV2l0aENoYXJhY3RlcmlzdGljcyAmJiBbb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3Mg
Y291bnRdKQogICAgICAgICBmaWx0ZXJlZE9wdGlvbnMgPSBvcHRpb25zV2l0aENoYXJhY3Rlcmlz
dGljczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWRm91bmRhdGlvbk1JTUVU
eXBlQ2FjaGUubW0KaW5kZXggYmU0NzY2N2NjZDM3MmZiYWQ2YWVlMGVkNThlYjg0MzY3NTJkYjg4
Ny4uMGIzMmY3OWY1ZTkzMzY4NjI4MDE1NjcwYmJkNDQ3NTQzMWVhMTJhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZGb3Vu
ZGF0aW9uTUlNRVR5cGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tCkBAIC0y
OSwxNCArMjksMTggQEAKICNpZiBQTEFURk9STShDT0NPQSkKIAogI2ltcG9ydCAiQ29udGVudFR5
cGUuaCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0Lmg+CiAjaW1wb3J0IDx3dGYvSGFz
aFNldC5oPgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KLSNpbXBvcnQg
PHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCisjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQogI2lmICFQTEFURk9STShJT1NNQUMpCiBTT0ZUX0xJTktfRlJB
TUVXT1JLX09QVElPTkFMX1BSRUZMSUdIVChBVkZvdW5kYXRpb24pCiAjZW5kaWYKK1NPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91
bmRhdGlvbiwgQVZVUkxBc3NldCkKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTgxLDcgKzg1LDcgQEAgYm9vbCBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICByZXR1cm4gW1BBTDo6Z2V0
QVZVUkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6bWltZVR5cGVdOwor
ICAgIHJldHVybiBbZ2V0QVZVUkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5
cGU6bWltZVR5cGVdOwogI2VuZGlmCiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksMTAgKzEx
MywxMCBAQCB2b2lkIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGU6OmxvYWRNSU1FVHlwZXMoKQog
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7
Ci0gICAgICAgIGlmICghUEFMOjpBVkZvdW5kYXRpb25MaWJyYXJ5KCkpCisgICAgICAgIGlmICgh
QVZGb3VuZGF0aW9uTGlicmFyeSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZv
ciAoTlNTdHJpbmcqIHR5cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1
YWxNSU1FVHlwZXNdKQorICAgICAgICBmb3IgKE5TU3RyaW5nKiB0eXBlIGluIFtnZXRBVlVSTEFz
c2V0Q2xhc3MoKSBhdWRpb3Zpc3VhbE1JTUVUeXBlc10pCiAgICAgICAgICAgICBtX2NhY2hlLT5h
ZGQodHlwZSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlQ2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCmluZGV4IDQzZWYyY2Q3MDAwNDkwMjY1M2U0MzFkZDJiMDhhYzM0MmFiZTdl
YmQuLjYyMDAxNGQ5MDQzN2I0ZGQyNWZjMjExYWM1NmIyZGRiZTQ2NDAyNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCkBAIC0zOSw5ICszOSwxOCBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMv
QVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvQWxnb3JpdGhtcy5oPgogI2ltcG9ydCA8
d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQor
U09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDb250ZW50S2V5U2Vzc2lv
bik7CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNvbnRlbnRLZXlS
ZXNwb25zZSk7CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFz
c2V0KTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ29udGVu
dEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nLCBOU1N0cmluZyopCisKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZQZXJz
aXN0YWJsZUNvbnRlbnRLZXlSZXF1ZXN0KTsKKyNlbmRpZgogCiBzdGF0aWMgY29uc3QgTlNTdHJp
bmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CiAKQEAgLTEy
OSwxMyArMTM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCkKIHsKLSAg
ICByZXR1cm4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50
aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildOworICAgIHJldHVybiBbZ2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZW5kaW5nRXhw
aXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJM
OildOwogfQogCiBib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBw
b3J0c1BlcnNpc3RlbnRLZXlzKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHJl
dHVybiBQQUw6OmdldEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdENsYXNzKCk7CisgICAg
cmV0dXJuIGdldEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdENsYXNzKCk7CiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMTQzLDcgKzE1Miw3IEBAIGJvb2wgQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnN1cHBvcnRzUGVyc2lzdGVudEtleXMoKQog
CiBib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c01lZGlh
Q2FwYWJpbGl0eShjb25zdCBDRE1NZWRpYUNhcGFiaWxpdHkmIGNhcGFiaWxpdHkpCiB7Ci0gICAg
aWYgKCFbUEFMOjpnZXRBVlVSTEFzc2V0Q2xhc3MoKSBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlw
ZTpjYXBhYmlsaXR5LmNvbnRlbnRUeXBlXSkKKyAgICBpZiAoIVtnZXRBVlVSTEFzc2V0Q2xhc3Mo
KSBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTpjYXBhYmlsaXR5LmNvbnRlbnRUeXBlXSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRmFpclBsYXkgb25seSBzdXBwb3J0cyAnY2Jj
cycgZW5jcnlwdGlvbjoKQEAgLTE2OCw3ICsxNzcsNyBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1Zh
bHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENv
bgogICAgIGlmIChjb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcy5jb250YWlucyhDRE1TZXNzaW9u
VHlwZTo6UGVyc2lzdGVudExpY2Vuc2UpICYmICFzdXBwb3J0c1BlcnNpc3RlbnRLZXlzKCkpCiAg
ICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoIVBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRp
b25fQVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSkKKyAgICBpZiAoIWNhbkxv
YWRBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQogICAgICAgICByZXR1cm4g
RmFpbGVkOwogCiAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKQEAgLTM2MSw3ICszNzAsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAKICAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAg
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRT
ZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBw
SWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CisgICAg
ICAgIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNl
c3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJ
ZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nl
ZWRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zODIsNyArMzkxLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX2N1cnJl
bnRSZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5
UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tl
eVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICBb
bV9jdXJyZW50UmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltnZXRBVkNvbnRlbnRL
ZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5n
S2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogCiAg
ICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sg
YW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3Mg
Y2FsbGJhY2suCiAgICAgc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1ldGhvZCA9IHBy
b3RvY29sX2dldE1ldGhvZERlc2NyaXB0aW9uKEBwcm90b2NvbChBVkNvbnRlbnRLZXlTZXNzaW9u
RGVsZWdhdGUpLCBAc2VsZWN0b3IoY29udGVudEtleVNlc3Npb246Y29udGVudEtleVJlcXVlc3RE
aWRTdWNjZWVkOiksIE5PLCBZRVMpOwpAQCAtNDE0LDcgKzQyMyw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSBsaWNlbnNlCiAKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5n
ZWRLZXlzOwotICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlB
dFVSTDpzdG9yYWdlVVJMXSkgeworICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25E
YXRhIGluIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Np
b25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGly
ZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhw
aXJlZFNlc3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdp
dGhEYXRhOmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJs
ZSBmb3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpw
bGF5YmFja1Nlc3Npb25JZFZhbHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVj
dEZvcktleTpQbGF5YmFja1Nlc3Npb25JZEtleV07CiAgICAgICAgICAgICBpZiAoIVtwbGF5YmFj
a1Nlc3Npb25JZFZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC00NzMs
NyArNDgyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0
b3IgY2hhbmdlZEtleXM7Ci0gICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEg
aW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CisgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVk
U2Vzc2lvbkRhdGEgaW4gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBp
cmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0
b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgTlNEaWN0aW9u
YXJ5ICpleHBpcmVkU2Vzc2lvbiA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVy
dHlMaXN0V2l0aERhdGE6ZXhwaXJlZFNlc3Npb25EYXRhIG9wdGlvbnM6a0NGUHJvcGVydHlMaXN0
SW1tdXRhYmxlIGZvcm1hdDpudWxscHRyIGVycm9yOm51bGxwdHJdOwogICAgICAgICAgICAgTlNT
dHJpbmcgKnBsYXliYWNrU2Vzc2lvbklkVmFsdWUgPSAoTlNTdHJpbmcgKilbZXhwaXJlZFNlc3Np
b24gb2JqZWN0Rm9yS2V5OlBsYXliYWNrU2Vzc2lvbklkS2V5XTsKICAgICAgICAgICAgIGlmICgh
W3BsYXliYWNrU2Vzc2lvbklkVmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkK
QEAgLTcwNiw5ICs3MTUsOSBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmVuc3VyZVNlc3Npb24oKQogCiAgICAgYXV0byBz
dG9yYWdlVVJMID0gbV9pbnN0YW5jZS0+c3RvcmFnZVVSTCgpOwogICAgIGlmICghbV9pbnN0YW5j
ZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJMKQotICAgICAgICBtX3Nl
c3Npb24gPSBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vz
c2lvbldpdGhLZXlTeXN0ZW06QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmddOwor
ICAgICAgICBtX3Nlc3Npb24gPSBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVu
dEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOmdldEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3Ry
ZWFtaW5nKCldOwogICAgIGVsc2UKLSAgICAgICAgbV9zZXNzaW9uID0gW1BBTDo6Z2V0QVZDb250
ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOkFWQ29u
dGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9y
YWdlVVJMXTsKKyAgICAgICAgbV9zZXNzaW9uID0gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFz
cygpIGNvbnRlbnRLZXlTZXNzaW9uV2l0aEtleVN5c3RlbTpnZXRBVkNvbnRlbnRLZXlTeXN0ZW1G
YWlyUGxheVN0cmVhbWluZygpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKIAog
ICAgIGlmICghbV9zZXNzaW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0K
aW5kZXggMWY0Njg3OTc3MDBjMDVmMzk2OTdjNTI4Yjg2ZDY0NzFlODNjMzEzZi4uOTgzOWYzNTNm
ODJjMWFjN2EyYjU4Y2Y3NjVmMGNkYzdhNjQyMGViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTQwLDgg
KzQwLDE0IEBACiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24p
CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXIpOworU09G
VF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDb250ZW50S2V5U2Vzc2lvbik7
CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNvbnRlbnRLZXlSZXNw
b25zZSk7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVkNvbnRl
bnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5
U3RyZWFtaW5nLCBOU1N0cmluZyAqKQogCiB0eXBlZGVmIE5TU3RyaW5nICpBVkNvbnRlbnRLZXlT
eXN0ZW07CiAKQEAgLTEyMSw3ICsxMjcsNyBAQCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bjo6fkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKCkKIAogYm9vbCBDRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKQogewotICAgIHJldHVybiBQQUw6OmdldEFW
Q29udGVudEtleVNlc3Npb25DbGFzcygpOworICAgIHJldHVybiBnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKTsKIH0KIAogUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWlu
dDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0
JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQpAQCAtMTY3LDcgKzE3Myw3IEBAIHZv
aWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAgICAgICAg
aWYgKCFtX2NlcnRpZmljYXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICgh
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6c3Rv
cmFnZURpcmVjdG9yeUF0VVJMOildKQorICAgICAgICBpZiAoIVtnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlbmRpbmdFeHBpcmVkU2Vz
c2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0pCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBzdG9yYWdlUGF0aCA9IHRoaXMtPnN0
b3JhZ2VQYXRoKCk7CkBAIC0xNzUsNyArMTgxLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXM6bV9jZXJ0aWZpY2F0ZS0+ZGF0YSgpIGxlbmd0aDptX2NlcnRpZmlj
YXRlLT5sZW5ndGgoKV0pOwotICAgICAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbUEFM
OjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBv
cnRzV2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VEaXJlY3Rv
cnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07CisgICAgICAgIE5T
QXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBw
ZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVE
YXRhLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0
b3JhZ2VQYXRoXV07CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4g
ZXhwaXJlZFNlc3Npb25zKSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmV4cGlyZWRTZXNz
aW9uID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBwcm9wZXJ0eUxpc3RXaXRoRGF0YTpl
eHBpcmVkU2Vzc2lvbkRhdGEgb3B0aW9uczprQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0
Om51bGxwdHIgZXJyb3I6bnVsbHB0cl07CiAgICAgICAgICAgICBOU1N0cmluZyAqcGxheWJhY2tT
ZXNzaW9uSWRWYWx1ZSA9IChOU1N0cmluZyAqKVtleHBpcmVkU2Vzc2lvbiBvYmplY3RGb3JLZXk6
UGxheWJhY2tTZXNzaW9uSWRLZXldOwpAQCAtMjIzLDggKzIyOSw4IEBAIGJvb2wgQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50
OEFycmF5PiYKIAogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjZXJ0aWZpY2F0ZURhdGEgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm1fY2VydGlmaWNhdGUtPmRhdGEo
KSBsZW5ndGg6bV9jZXJ0aWZpY2F0ZS0+bGVuZ3RoKCldKTsKIAotICAgICAgICBpZiAoW1BBTDo6
Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihyZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOndpdGhBcHBJZGVudGlmaWVyOnN0
b3JhZ2VEaXJlY3RvcnlBdFVSTDopXSkKLSAgICAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtl
eVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6QFttX2V4
cGlyZWRTZXNzaW9uLmdldCgpXSB3aXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0ZURhdGEuZ2V0
KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBh
dGhdXTsKKyAgICAgICAgaWYgKFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6
d2l0aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKQorICAgICAgICAgICAg
W2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lv
blJlcG9ydHM6QFttX2V4cGlyZWRTZXNzaW9uLmdldCgpXSB3aXRoQXBwSWRlbnRpZmllcjpjZXJ0
aWZpY2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6c3RvcmFnZVBhdGhdXTsKICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IG51bGxwdHI7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI3OCw3ICsyODQsNyBAQCBib29sIENE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQ
dHI8VWludDhBcnJheT4mCiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bV9jZXJ0aWZpY2F0ZS0+
ZGF0YSgpIGxlbmd0aDptX2NlcnRpZmljYXRlLT5sZW5ndGgoKV0pOwogCiAgICAgICAgIFJldGFp
blB0cjxOU0RpY3Rpb25hcnk+IG9wdGlvbnM7Ci0gICAgICAgIGlmICghbV9wcm90b2NvbFZlcnNp
b25zLmlzRW1wdHkoKSAmJiBQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtleVJl
cXVlc3RQcm90b2NvbFZlcnNpb25zS2V5KCkpIHsKKyAgICAgICAgaWYgKCFtX3Byb3RvY29sVmVy
c2lvbnMuaXNFbXB0eSgpICYmIGNhbkxvYWRBVkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJz
aW9uc0tleSgpKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHByb3Rv
Y29sVmVyc2lvbnNPcHRpb24gPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKICAgICAgICAgICAgIGZvciAoYXV0byYgdmVyc2lvbiA6IG1fcHJvdG9jb2xWZXJzaW9ucykg
ewogICAgICAgICAgICAgICAgIGlmICghdmVyc2lvbikKQEAgLTI4Niw3ICsyOTIsNyBAQCBib29s
IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBS
ZWZQdHI8VWludDhBcnJheT4mCiAgICAgICAgICAgICAgICAgW3Byb3RvY29sVmVyc2lvbnNPcHRp
b24gYWRkT2JqZWN0OkAodmVyc2lvbildOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBv
cHRpb25zID0gQHsgQVZDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXk6IHByb3Rv
Y29sVmVyc2lvbnNPcHRpb24uZ2V0KCkgfTsKKyAgICAgICAgICAgIG9wdGlvbnMgPSBAeyBnZXRB
VkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSgpOiBwcm90b2NvbFZlcnNpb25z
T3B0aW9uLmdldCgpIH07CiAgICAgICAgIH0KIAogICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBs
YXllcjo6Tm9FcnJvcjsKQEAgLTMxMCw4ICszMTYsOCBAQCBib29sIENETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4m
CiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5LT5kYXRhKCkgbGVuZ3RoOmtl
eS0+bGVuZ3RoKCldKTsKICAgICAKLSAgICBpZiAoW21fa2V5UmVxdWVzdCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6KV0gJiYgW1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOild
KQotICAgICAgICBbbV9rZXlSZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTprZXlEYXRhLmdldCgpXV07CisgICAgaWYgKFtt
X2tleVJlcXVlc3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOildICYmIFtnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXNwb25zZURhdGE6KV0pCisgICAgICAgIFttX2tleVJlcXVlc3QgcHJvY2Vzc0NvbnRl
bnRLZXlSZXNwb25zZTpbZ2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlS
ZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTprZXlEYXRhLmdldCgp
XV07CiAgICAgZWxzZQogICAgICAgICBbbV9rZXlSZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVz
cG9uc2VEYXRhOmtleURhdGEuZ2V0KCldOwogCkBAIC0zNDAsMTMgKzM0NiwxMyBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVs
ZWFzZU1lc3NhZ2UodW5zaQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bV9jZXJ0aWZpY2F0ZS0+ZGF0
YSgpIGxlbmd0aDptX2NlcnRpZmljYXRlLT5sZW5ndGgoKV0pOwogCiAgICAgU3RyaW5nIHN0b3Jh
Z2VQYXRoID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKLSAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0
eSgpIHx8ICFbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRp
ZmllcjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0pIHsKKyAgICBpZiAoc3RvcmFnZVBhdGguaXNF
bXB0eSgpIHx8ICFbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZp
ZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKSB7CiAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlh
UGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7CiAgICAgICAgIHN5c3RlbUNvZGUgPSAnIW1v
cic7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE5TQXJyYXkqIGV4cGly
ZWRTZXNzaW9ucyA9IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdF
eHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0ZURhdGEuZ2V0
KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBh
dGhdXTsKKyAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbZ2V0QVZDb250ZW50S2V5U2Vz
c2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVy
OmNlcnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpzdG9yYWdlUGF0aF1dOwogICAgIGlmICghW2V4cGlyZWRTZXNzaW9ucyBjb3Vu
dF0pIHsKICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246
OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UoJXApIC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3Vu
ZCIsIHRoaXMpOwogCkBAIC0zNzUsMTAgKzM4MSwxMCBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Y29udGVudEtleVNlc3Npb24oKQogCiAgICAg
U3RyaW5nIHN0b3JhZ2VQYXRoID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKICAgICBpZiAoc3RvcmFn
ZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmICghW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vz
c2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50S2V5U2Vzc2lv
bldpdGhLZXlTeXN0ZW06KV0gfHwgIVBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZDb250ZW50
S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSkKKyAgICAgICAgaWYgKCFbZ2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50S2V5
U2Vzc2lvbldpdGhLZXlTeXN0ZW06KV0gfHwgIWNhbkxvYWRBVkNvbnRlbnRLZXlTeXN0ZW1GYWly
UGxheVN0cmVhbWluZygpKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBtX2Nv
bnRlbnRLZXlTZXNzaW9uID0gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29u
dGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOkFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3Ry
ZWFtaW5nXTsKKyAgICAgICAgbV9jb250ZW50S2V5U2Vzc2lvbiA9IFtnZXRBVkNvbnRlbnRLZXlT
ZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lvbldpdGhLZXlTeXN0ZW06Z2V0QVZDb250ZW50
S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3Ry
aW5nIHN0b3JhZ2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHN0b3JhZ2VQ
YXRoKTsKIApAQCAtMzg4LDEwICszOTQsMTAgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICAgICAgfQog
CiAgICAgICAgIGF1dG8gdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aF07
Ci0gICAgICAgIGlmIChbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uV2l0aEtleVN5c3RlbTpzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6KV0gJiYgUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkNvbnRl
bnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQotICAgICAgICAgICAgbV9jb250ZW50S2V5
U2Vzc2lvbiA9IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIGNvbnRlbnRLZXlT
ZXNzaW9uV2l0aEtleVN5c3RlbTpBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZyBz
dG9yYWdlRGlyZWN0b3J5QXRVUkw6dXJsXTsKKyAgICAgICAgaWYgKFtnZXRBVkNvbnRlbnRLZXlT
ZXNzaW9uQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNz
aW9uV2l0aEtleVN5c3RlbTpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0gJiYgY2FuTG9hZEFWQ29u
dGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCisgICAgICAgICAgICBtX2NvbnRlbnRL
ZXlTZXNzaW9uID0gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIGNvbnRlbnRLZXlTZXNz
aW9uV2l0aEtleVN5c3RlbTpnZXRBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygp
IHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDp1cmxdOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2NvbnRlbnRLZXlTZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQ29udGVudEtleVNlc3Np
b25JbnN0YW5jZSgpIGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJMOnVybF0pOworICAgICAg
ICAgICAgbV9jb250ZW50S2V5U2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZDb250ZW50S2V5U2Vz
c2lvbkluc3RhbmNlKCkgaW5pdFdpdGhTdG9yYWdlRGlyZWN0b3J5QXRVUkw6dXJsXSk7CiAgICAg
fQogCiAgICAgbV9jb250ZW50S2V5U2Vzc2lvbi5nZXQoKS5kZWxlZ2F0ZSA9IG1fY29udGVudEtl
eVNlc3Npb25EZWxlZ2F0ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYzFlZmQ1MWM5NWMyODVkZDllM2Jm
OTcxYmE5NDE2Mjc2YTQwNjI5ZS4uY2ExOWJhZTA4ZmVjNWZjY2JhNTdlNDlhYTBmNGVhZjg3MTNl
NTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTQxLDYgKzQxLDEyIEBACiAjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KICNpbXBvcnQgPHd0Zi9VVUlELmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZVUkxBc3Nl
dCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0KQorI2RlZmluZSBBVlVSTEFzc2V0IGdldEFWVVJMQXNzZXRDbGFzcygpCisjZGVmaW5l
IEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0IGdldEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0KCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpp
bmRleCA5OTE3NWE3NWUyYWMzOWZhNTc0ODdmMDc3YjYxYTg0YTEyODgwY2UxLi43NTU4N2M2Mjlm
MmYzOTJiYmU2Y2MyYmI3MGRjODQ0NGU0MGI0OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1T
ZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KQEAgLTQwLDkgKzQwLDE0IEBA
CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZG
b3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgogCi0jaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1EYXRh
UGFyc2VyKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWU3RyZWFt
U2Vzc2lvbik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlN0
cmVhbURhdGFQYXJzZXJDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXksIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVh
bVNlc3Npb25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNh
dGlvbiwgTlNTdHJpbmcgKikKIAogQGludGVyZmFjZSBBVlN0cmVhbVNlc3Npb24gOiBOU09iamVj
dAogLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyOwpAQCAtMTM3LDExICsxNDIsMTEgQEAgdm9pZCBDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uOjpyZWxlYXNlS2V5cygpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
U3RyaW5nIHN0b3JhZ2VQYXRoID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKLSAgICAgICAgaWYgKHN0
b3JhZ2VQYXRoLmlzRW1wdHkoKSB8fCAhW1BBTDo6Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNX
aXRoQXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0pCisgICAgICAgIGlmIChz
dG9yYWdlUGF0aC5pc0VtcHR5KCkgfHwgIVtnZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhB
cHBJZGVudGlmaWVyOnN0b3JhZ2VEaXJlY3RvcnlBdFVSTDopXSkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm1fY2VydGlmaWNhdGUtPmRhdGEoKSBsZW5n
dGg6bV9jZXJ0aWZpY2F0ZS0+bGVuZ3RoKCldKTsKLSAgICAgICAgTlNBcnJheSogZXhwaXJlZFNl
c3Npb25zID0gW1BBTDo6Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNl
c3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07Cisg
ICAgICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtnZXRBVlN0cmVhbVNlc3Npb25DbGFz
cygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZp
Y2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6c3RvcmFnZVBhdGhdXTsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0
YSBpbiBleHBpcmVkU2Vzc2lvbnMpIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJl
ZFNlc3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhE
YXRhOmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBm
b3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbGF5
YmFja1Nlc3Npb25JZFZhbHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVjdEZv
cktleTpQbGF5YmFja1Nlc3Npb25JZEtleV07CkBAIC0xOTUsOCArMjAwLDggQEAgYm9vbCBDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWlu
dDhBcnJheT4mIG5leHQKIAogICAgICAgICBJR05PUkVfV0FSTklOR1NfQkVHSU4oIm9iamMtbGl0
ZXJhbC1jb252ZXJzaW9uIikKICAgICAgICAgU3RyaW5nIHN0b3JhZ2VQYXRoID0gdGhpcy0+c3Rv
cmFnZVBhdGgoKTsKLSAgICAgICAgaWYgKCFzdG9yYWdlUGF0aC5pc0VtcHR5KCkgJiYgW1BBTDo6
Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJl
bW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6d2l0aEFwcElkZW50aWZpZXI6c3RvcmFn
ZURpcmVjdG9yeUF0VVJMOildKQotICAgICAgICAgICAgW1BBTDo6Z2V0QVZTdHJlYW1TZXNzaW9u
Q2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOkBbbV9leHBpcmVkU2Vz
c2lvbi5nZXQoKV0gd2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07Cisg
ICAgICAgIGlmICghc3RvcmFnZVBhdGguaXNFbXB0eSgpICYmIFtnZXRBVlN0cmVhbVNlc3Npb25D
bGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlUGVuZGluZ0V4cGlyZWRT
ZXNzaW9uUmVwb3J0czp3aXRoQXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0p
CisgICAgICAgICAgICBbZ2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhw
aXJlZFNlc3Npb25SZXBvcnRzOkBbbV9leHBpcmVkU2Vzc2lvbi5nZXQoKV0gd2l0aEFwcElkZW50
aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19F
TkQKICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMjI1LDcgKzIzMCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6
dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0CiAgICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGluaXREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlczptX2luaXREYXRhLT5kYXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgp
XSk7CiAKICAgICAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gb3B0aW9uczsKLSAgICAgICAg
aWYgKCFtX3Byb3RvY29sVmVyc2lvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9wcm90
b2NvbFZlcnNpb25zLmlzRW1wdHkoKSAmJiBjYW5Mb2FkQVZTdHJlYW1EYXRhUGFyc2VyQ29udGVu
dEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5KCkpIHsKICAgICAgICAgICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gcHJvdG9jb2xWZXJzaW9uc09wdGlvbiA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgZm9yIChhdXRvJiB2ZXJzaW9u
IDogbV9wcm90b2NvbFZlcnNpb25zKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF2ZXJzaW9uKQpA
QCAtMjMzLDcgKzIzOCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBkYXRl
KFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0CiAgICAgICAgICAgICAg
ICAgW3Byb3RvY29sVmVyc2lvbnNPcHRpb24gYWRkT2JqZWN0OkAodmVyc2lvbildOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBvcHRpb25zID0gQHsgQVZTdHJlYW1EYXRhUGFyc2VyQ29u
dGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5OiBwcm90b2NvbFZlcnNpb25zT3B0aW9u
LmdldCgpIH07CisgICAgICAgICAgICBvcHRpb25zID0gQHsgZ2V0QVZTdHJlYW1EYXRhUGFyc2Vy
Q29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5KCk6IHByb3RvY29sVmVyc2lvbnNP
cHRpb24uZ2V0KCkgfTsKICAgICAgICAgfQogCiAgICAgICAgIE5TRXJyb3IqIGVycm9yID0gbmls
OwpAQCAtMjc1LDE1ICsyODAsMTYgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1
cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQKIAogdm9pZCBD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpzZXRTdHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lv
biAqc3RyZWFtU2Vzc2lvbikKIHsKLSAgICBpZiAobV9zdHJlYW1TZXNzaW9uKQotICAgICAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fZGF0
YVBhcnNlck9ic2VydmVyLmdldCgpIG5hbWU6QVZTdHJlYW1TZXNzaW9uQ29udGVudFByb3RlY3Rp
b25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om1fc3RyZWFtU2Vz
c2lvbi5nZXQoKV07CisgICAgaWYgKG1fc3RyZWFtU2Vzc2lvbiAmJiBjYW5Mb2FkQVZTdHJlYW1T
ZXNzaW9uQ29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRp
b24oKSkKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1v
dmVPYnNlcnZlcjptX2RhdGFQYXJzZXJPYnNlcnZlci5nZXQoKSBuYW1lOmdldEFWU3RyZWFtU2Vz
c2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9u
KCkgb2JqZWN0Om1fc3RyZWFtU2Vzc2lvbi5nZXQoKV07CiAKICAgICBtX3N0cmVhbVNlc3Npb24g
PSBzdHJlYW1TZXNzaW9uOwogCiAgICAgaWYgKCFtX3N0cmVhbVNlc3Npb24pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRl
bnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkOikgbmFtZTpBVlN0cmVhbVNlc3Np
b25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbiBv
YmplY3Q6bV9zdHJlYW1TZXNzaW9uLmdldCgpXTsKKyAgICBpZiAoY2FuTG9hZEFWU3RyZWFtU2Vz
c2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9u
KCkpCisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRl
bnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkOikgbmFtZTpnZXRBVlN0cmVhbVNl
c3Npb25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlv
bigpIG9iamVjdDptX3N0cmVhbVNlc3Npb24uZ2V0KCldOwogCiAgICAgTlNEYXRhKiBpZGVudGlm
aWVyID0gW3N0cmVhbVNlc3Npb24gY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcl07
CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGlkZW50
aWZpZXIgPyBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppZGVudGlmaWVy
IGVuY29kaW5nOihOU1VURjhTdHJpbmdFbmNvZGluZyldKSA6IG5pbDsKQEAgLTMwOSwxMyArMzE1
LDEzIEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5l
cmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY2Vy
dGlmaWNhdGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczptX2Nl
cnRpZmljYXRlLT5kYXRhKCkgbGVuZ3RoOm1fY2VydGlmaWNhdGUtPmxlbmd0aCgpXSk7CiAKICAg
ICBTdHJpbmcgc3RvcmFnZVBhdGggPSB0aGlzLT5zdG9yYWdlUGF0aCgpOwotICAgIGlmIChzdG9y
YWdlUGF0aC5pc0VtcHR5KCkgfHwgIVtQQUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0
aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKSB7CisgICAgaWYgKHN0b3Jh
Z2VQYXRoLmlzRW1wdHkoKSB8fCAhW2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElk
ZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKSB7CiAgICAgICAgIGVycm9yQ29kZSA9
IE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7CiAgICAgICAgIHN5c3RlbUNvZGUg
PSAnIW1vcic7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE5TQXJyYXkq
IGV4cGlyZWRTZXNzaW9ucyA9IFtQQUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcGVuZGlu
Z0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0YS5n
ZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdl
UGF0aF1dOworICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtnZXRBVlN0cmVhbVNlc3Np
b25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpj
ZXJ0aWZpY2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6c3RvcmFnZVBhdGhdXTsKICAgICBpZiAoIVtleHBpcmVkU2Vzc2lvbnMgY291bnRd
KSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVy
YXRlS2V5UmVsZWFzZU1lc3NhZ2UoJXApIC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIsIHRo
aXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpp
bmRleCBkM2Y1NDdmOTljNDZmNWRlNDcxNjVlMDVmNDQxNDYyYjM3NGVhYTQ0Li4xN2RmZDdhOGYy
YzI3NmMwOGRiMWY3ZjhhZmY3ZWI2ZDZkMGRkMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTUyLDEyICs1MiwyNSBAQAogI2ltcG9ydCA8
d3RmL01lZGlhVGltZS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0
IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgogCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNp
bXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGlu
ay5oIgotI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworI3ByYWdtYSBtYXJrIC0gU29mdCBMaW5r
aW5nCisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9M
SU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldCkKK1NPRlRfTElOS19D
TEFTU19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQXNzZXRSZWFkZXIpCitTT0ZUX0xJTktfQ0xB
U1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkFzc2V0UmVhZGVyU2FtcGxlUmVmZXJlbmNlT3V0
cHV0KQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNo
YXJhY3RlcmlzdGljVmlzdWFsLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWVVJM
QXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXksIE5TU3RyaW5nICopCisjZGVmaW5lIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWwoKQor
I2RlZmluZSBBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5IGdldEFWVVJMQXNzZXRS
ZWZlcmVuY2VSZXN0cmljdGlvbnNLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0VXNlc05vUGVyc2lz
dGVudENhY2hlS2V5IGdldEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXkoKQogCiAj
cHJhZ21hIG1hcmsgLQogCkBAIC0yMjUsNiArMjM4LDkgQEAgc3RhdGljIE5TVVJMICpjdXN0b21T
Y2hlbWVVUkwoKQogc3RhdGljIE5TRGljdGlvbmFyeSAqaW1hZ2VEZWNvZGVyQXNzZXRPcHRpb25z
KCkKIHsKICAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gW10geworICAgICAgICAv
LyBGSVhNRTogQXJlIHRoZXNlIGtleXMgcmVhbGx5IG9wdGlvbmFsPworICAgICAgICBpZiAoIWNh
bkxvYWRBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkgfHwgIWNhbkxvYWRBVlVS
TEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5KCkpCisgICAgICAgICAgICByZXR1cm4gW0B7
IH0gcmV0YWluXTsKICAgICAgICAgcmV0dXJuIFtAewogICAgICAgICAgICAgQVZVUkxBc3NldFJl
ZmVyZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3Ji
aWRBbGwpLAogICAgICAgICAgICAgQVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleTog
QFlFUywKQEAgLTM1MCw3ICszNjYsNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29k
ZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgIDog
SW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3V0aShX
ZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQotICAgICwgbV9hc3NldChhZG9wdE5T
KFtQQUw6OmFsbG9jQVZVUkxBc3NldEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6Y3VzdG9tU2NoZW1l
VVJMKCkgb3B0aW9uczppbWFnZURlY29kZXJBc3NldE9wdGlvbnMoKV0pKQorICAgICwgbV9hc3Nl
dChhZG9wdE5TKFthbGxvY0FWVVJMQXNzZXRJbnN0YW5jZSgpIGluaXRXaXRoVVJMOmN1c3RvbVNj
aGVtZVVSTCgpIG9wdGlvbnM6aW1hZ2VEZWNvZGVyQXNzZXRPcHRpb25zKCldKSkKICAgICAsIG1f
bG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vz
c2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewpAQCAtMzgz
LDYgKzM5OSwxMiBAQCBib29sIEltYWdlRGVjb2RlckFWRk9iakM6OmNhbkRlY29kZVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogQVZBc3NldFRyYWNrICpJbWFnZURlY29kZXJBVkZPYmpD
OjpmaXJzdEVuYWJsZWRUcmFjaygpCiB7CisgICAgLy8gRklYTUU6IElzIEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY1Zpc3VhbCB0cnVseSBvcHRpb25hbD8KKyAgICBpZiAoIWNhbkxvYWRBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNWaXN1YWwoKSkgeworICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Zmlyc3RFbmFibGVkVHJhY2soJXApIC0gQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlz
dWFsIGlzIG5vdCBzdXBwb3J0ZWQiLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9
CisKICAgICBOU0FycmF5PEFWQXNzZXRUcmFjayAqPiAqdmlkZW9UcmFja3MgPSBbbV9hc3NldCB0
cmFja3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxd
OwogICAgIE5TVUludGVnZXIgZmlyc3RFbmFibGVkSW5kZXggPSBbdmlkZW9UcmFja3MgaW5kZXhP
Zk9iamVjdFBhc3NpbmdUZXN0Ol4oQVZBc3NldFRyYWNrICp0cmFjaywgTlNVSW50ZWdlciwgQk9P
TCopIHsKICAgICAgICAgcmV0dXJuIHRyYWNrLmVuYWJsZWQ7CkBAIC00MDEsOCArNDIzLDggQEAg
dm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkU2FtcGxlcygpCiAgICAgaWYgKCFtX3NhbXBs
ZURhdGEuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBhc3NldFJlYWRlciA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0UmVhZGVySW5zdGFuY2UoKSBpbml0V2l0aEFzc2V0
Om1fYXNzZXQuZ2V0KCkgZXJyb3I6bmlsXSk7Ci0gICAgYXV0byByZWZlcmVuY2VPdXRwdXQgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFJlYWRlclNhbXBsZVJlZmVyZW5jZU91dHB1dEluc3Rh
bmNlKCkgaW5pdFdpdGhUcmFjazptX3RyYWNrLmdldCgpXSk7CisgICAgYXV0byBhc3NldFJlYWRl
ciA9IGFkb3B0TlMoW2FsbG9jQVZBc3NldFJlYWRlckluc3RhbmNlKCkgaW5pdFdpdGhBc3NldDpt
X2Fzc2V0LmdldCgpIGVycm9yOm5pbF0pOworICAgIGF1dG8gcmVmZXJlbmNlT3V0cHV0ID0gYWRv
cHROUyhbYWxsb2NBVkFzc2V0UmVhZGVyU2FtcGxlUmVmZXJlbmNlT3V0cHV0SW5zdGFuY2UoKSBp
bml0V2l0aFRyYWNrOm1fdHJhY2suZ2V0KCldKTsKIAogICAgIHJlZmVyZW5jZU91dHB1dC5nZXQo
KS5hbHdheXNDb3BpZXNTYW1wbGVEYXRhID0gTk87CiAgICAgW2Fzc2V0UmVhZGVyIGFkZE91dHB1
dDpyZWZlcmVuY2VPdXRwdXQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzMDY3MjczZWQ2MmU1
YTFmYTZmZWM0YWRiZDIyODI1OGY1YzBiNTQwLi5kODhmN2M3NDc5YjJiNGJlMDc4OTBmOTA5NmY3
ZDk0YTBmNzEyNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzksOCArMzksNDIgQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllckl0ZW1PdXRwdXQuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotCi0jaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVlBsYXllckl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
Vk1ldGFkYXRhSXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVySXRl
bUxlZ2libGVPdXRwdXQpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCBnZXRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWwoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNBdWRpYmxlIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUoKQorI2RlZmluZSBBVk1l
ZGlhVHlwZUNsb3NlZENhcHRpb24gZ2V0QVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uKCkKKyNkZWZp
bmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzIGdldEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpCisjZGVmaW5l
IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50IGdldEFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3Rl
cmlzdGljRWFzeVRvUmVhZCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkKCkKKwor
U09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9u
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNo
YXJhY3RlcmlzdGljTGVnaWJsZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNTdHJp
bmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0
bGUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05T
VEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250
ZW50LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRp
YUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVlBsYXll
ciBnZXRBVlBsYXllckNsYXNzKCkKKyNkZWZpbmUgQVZQbGF5ZXJJdGVtIGdldEFWUGxheWVySXRl
bUNsYXNzKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygp
CisjZGVmaW5lIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgZ2V0QVZQbGF5ZXJJdGVtTGVnaWJs
ZU91dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUNvbW1vbktl
eVRpdGxlIGdldEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSgpCisjZGVmaW5lIEFWTWV0YWRhdGFL
ZXlTcGFjZUNvbW1vbiBnZXRBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24oKQorI2RlZmluZSBBVk1l
ZGlhVHlwZVN1YnRpdGxlIGdldEFWTWVkaWFUeXBlU3VidGl0bGUoKQorI2RlZmluZSBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgZ2V0
QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmls
aXR5KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3Vu
ZEZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNB
bmRTb3VuZEZvckFjY2Vzc2liaWxpdHkoKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEz
NiwxMCArMTcwLDEwIEBAIEF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qzo6bGFiZWwoKSBjb25zdAogCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gMDsKIAotICAgIE5TQXJy
YXkgKnRpdGxlcyA9IFtQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBtZXRhZGF0YUl0ZW1z
RnJvbUFycmF5OlttX21lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpIGNvbW1vbk1ldGFkYXRhXSB3
aXRoS2V5OkFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBrZXlTcGFjZTpBVk1ldGFkYXRhS2V5U3Bh
Y2VDb21tb25dOworICAgIE5TQXJyYXkgKnRpdGxlcyA9IFtBVk1ldGFkYXRhSXRlbSBtZXRhZGF0
YUl0ZW1zRnJvbUFycmF5OlttX21lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpIGNvbW1vbk1ldGFk
YXRhXSB3aXRoS2V5OkFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBrZXlTcGFjZTpBVk1ldGFkYXRh
S2V5U3BhY2VDb21tb25dOwogICAgIGlmIChbdGl0bGVzIGNvdW50XSkgewogICAgICAgICAvLyBJ
ZiBwb3NzaWJsZSwgcmV0dXJuIGEgdGl0bGUgaW4gb25lIG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVk
IGxhbmd1YWdlcy4KLSAgICAgICAgTlNBcnJheSAqdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2Vz
ID0gW1BBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6
dGl0bGVzIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXM6W05T
TG9jYWxlIHByZWZlcnJlZExhbmd1YWdlc11dOworICAgICAgICBOU0FycmF5ICp0aXRsZXNGb3JQ
cmVmZXJyZWRMYW5ndWFnZXMgPSBbQVZNZXRhZGF0YUl0ZW0gbWV0YWRhdGFJdGVtc0Zyb21BcnJh
eTp0aXRsZXMgZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpb
TlNMb2NhbGUgcHJlZmVycmVkTGFuZ3VhZ2VzXV07CiAgICAgICAgIGlmIChbdGl0bGVzRm9yUHJl
ZmVycmVkTGFuZ3VhZ2VzIGNvdW50XSkKICAgICAgICAgICAgIHRpdGxlID0gW1t0aXRsZXNGb3JQ
cmVmZXJyZWRMYW5ndWFnZXMgb2JqZWN0QXRJbmRleDowXSBzdHJpbmdWYWx1ZV07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWRk9iakMubW0KaW5kZXggYmEwZGZkZWEzZTRhYjQ1ZDcxYWI3OTBlOTMxZjQ3NjRh
MzFiYTQyNy4uNGM3YTQ1ZjJkMzA3OTE4OTg4MGM3MzY5MzRiNDk0ZDM4NmExNzk0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMubW0KQEAgLTMzLDggKzMzLDI0IEBACiAjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgiCiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaW1w
b3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9u
LCBBVlBsYXllckl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRh
SXRlbSkKKyNkZWZpbmUgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uIGdldEFWTWVkaWFUeXBlQ2xv
c2VkQ2FwdGlvbigpCisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFU
eXBlQ2xvc2VkQ2FwdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUsIE5TU3RyaW5nICopCitTT0ZUX0xJ
TktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUsIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VDb21tb24sIE5TU3RyaW5nICopCisKKyNkZWZpbmUgQVZQbGF5ZXJJdGVtIGdldEFWUGxheWVy
SXRlbUNsYXNzKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0ZW1DbGFz
cygpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUgZ2V0QVZNZWRpYUNoYXJh
Y3RlcmlzdGljTGVnaWJsZSgpCisjZGVmaW5lIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRB
Vk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUoKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VDb21t
b24gZ2V0QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC04NSwxMCArMTAxLDEwIEBAIEF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
TGVnYWN5QVZGT2JqQzo6bGFiZWwoKSBjb25zdAogCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gMDsK
IAotICAgIE5TQXJyYXkgKnRpdGxlcyA9IFtQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBt
ZXRhZGF0YUl0ZW1zRnJvbUFycmF5OltbbV9wbGF5ZXJJdGVtVHJhY2sgYXNzZXRUcmFja10gY29t
bW9uTWV0YWRhdGFdIHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFW
TWV0YWRhdGFLZXlTcGFjZUNvbW1vbl07CisgICAgTlNBcnJheSAqdGl0bGVzID0gW0FWTWV0YWRh
dGFJdGVtIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6W1ttX3BsYXllckl0ZW1UcmFjayBhc3NldFRy
YWNrXSBjb21tb25NZXRhZGF0YV0gd2l0aEtleTpBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUga2V5
U3BhY2U6QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKICAgICBpZiAoW3RpdGxlcyBjb3VudF0p
IHsKICAgICAgICAgLy8gSWYgcG9zc2libGUsIHJldHVybiBhIHRpdGxlIGluIG9uZSBvZiB0aGUg
dXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCi0gICAgICAgIE5TQXJyYXkgKnRpdGxlc0ZvclBy
ZWZlcnJlZExhbmd1YWdlcyA9IFtQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBtZXRhZGF0
YUl0ZW1zRnJvbUFycmF5OnRpdGxlcyBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVy
cmVkTGFuZ3VhZ2VzOltOU0xvY2FsZSBwcmVmZXJyZWRMYW5ndWFnZXNdXTsKKyAgICAgICAgTlNB
cnJheSAqdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFk
YXRhSXRlbXNGcm9tQXJyYXk6dGl0bGVzIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVm
ZXJyZWRMYW5ndWFnZXM6W05TTG9jYWxlIHByZWZlcnJlZExhbmd1YWdlc11dOwogICAgICAgICBp
ZiAoW3RpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcyBjb3VudF0pCiAgICAgICAgICAgICB0aXRs
ZSA9IFtbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzIG9iamVjdEF0SW5kZXg6MF0gc3RyaW5n
VmFsdWVdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1hYy5tbQppbmRleCA5ZDAzZjk4ZjA5MGMxYWQ4NGNkOWZlZDhkMWU3ZDkx
ZjgzMjkyNmU5Li4yNzYzNzQ0YWQwMTE5YjRkM2Y4NGY1MTU4NzZkZjUwNTA0ODRhNDgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNYWMubW0KQEAgLTM3LDkgKzM3LDE0IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5k
YXRpb25TUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLSNpbXBvcnQgPHBhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgordHlwZWRlZiBBVk91dHB1dENvbnRleHQgQVZP
dXRwdXRDb250ZXh0V0tUeXBlOwordHlwZWRlZiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVy
IEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJXS1R5cGU7CisKIAogU09GVExJTktfQVZLSVRf
RlJBTUVXT1JLKCkKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQor
CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVk91dHB1dENvbnRleHQp
CiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRy
b2xsZXIpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODIsNyArODcsNyBAQCBSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYzo6cGxheWJh
Y2tUYXJnZXQoKQogICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpj
cmVhdGUoY29udGV4dCk7CiB9CiAKLUFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXIgKk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6OmRldmljZVBpY2tlcigpCitBVk91dHB1dERldmljZU1l
bnVDb250cm9sbGVyV0tUeXBlICpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpkZXZpY2VQ
aWNrZXIoKQogewogICAgIGlmICghZ2V0QVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckNsYXNz
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtOTAsNyArOTUsNyBAQCBBVk91dHB1dERl
dmljZU1lbnVDb250cm9sbGVyICpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpkZXZpY2VQ
aWNrZXIoKQogICAgIGlmICghbV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlcikgewogICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpkZXZpY2VQaWNrZXIg
LSBhbGxvY2F0aW5nIHBpY2tlciIpOwogCi0gICAgICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRl
eHQ+IGNvbnRleHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZPdXRwdXRDb250ZXh0SW5zdGFuY2Uo
KSBpbml0XSk7CisgICAgICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHRXS1R5cGU+IGNvbnRl
eHQgPSBhZG9wdE5TKFthbGxvY0FWT3V0cHV0Q29udGV4dEluc3RhbmNlKCkgaW5pdF0pOwogICAg
ICAgICBtX291dHB1dERldmljZU1lbnVDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVk91dHB1
dERldmljZU1lbnVDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aE91dHB1dENvbnRleHQ6Y29u
dGV4dC5nZXQoKV0pOwogCiAgICAgICAgIFttX291dHB1dERldmljZU1lbnVDb250cm9sbGVyLmdl
dCgpIGFkZE9ic2VydmVyOm1fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQo
KSBmb3JLZXlQYXRoOmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlS2V5TmFtZSBvcHRpb25z
Ok5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDRlNWI4MjM3MmU5Yjc1OGMyNmQ0YTNlNWQ1ODAxY2ZhN2ExODQw
YmMuLjVlMjkzYmEwNTE4YmUwZTRmYzhiYTBkYTRhYmZiZGVlOGZiNDk0NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTM2LDggKzEzNiwxNjggQEAgdGVtcGxhdGUgPD4gc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlv
bkEKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKnJlc29sdmVkVVJMOwog
QGVuZAogCit0eXBlZGVmIEFWUGxheWVyIEFWUGxheWVyVHlwZTsKK3R5cGVkZWYgQVZQbGF5ZXJJ
dGVtIEFWUGxheWVySXRlbVR5cGU7Cit0eXBlZGVmIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQg
QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFR5cGU7Cit0eXBlZGVmIEFWUGxheWVySXRlbVZpZGVv
T3V0cHV0IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0VHlwZTsKK3R5cGVkZWYgQVZNZXRhZGF0YUl0
ZW0gQVZNZXRhZGF0YUl0ZW1UeXBlOwordHlwZWRlZiBBVk1lZGlhU2VsZWN0aW9uR3JvdXAgQVZN
ZWRpYVNlbGVjdGlvbkdyb3VwVHlwZTsKK3R5cGVkZWYgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiBB
Vk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZTsKK3R5cGVkZWYgQVZBc3NldENhY2hlIEFWQXNzZXRD
YWNoZVR5cGU7CisKKyNwcmFnbWEgbWFyayAtIFNvZnQgTGlua2luZworCisvLyBTb2Z0LWxpbmtp
bmcgaGVhZGVycyBtdXN0IGJlIGluY2x1ZGVkIGxhc3Qgc2luY2UgdGhleSAjZGVmaW5lIGZ1bmN0
aW9ucywgY29uc3RhbnRzLCBldGMuCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsu
aD4KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09GVF9MSU5LX0ZSQU1FV09S
S19PUFRJT05BTChDb3JlSW1hZ2UpCisKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFW
UGxheWVyKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtKQorU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQpCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9MSU5LX0NMQVNT
KEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24s
IEFWQXNzZXRJbWFnZUdlbmVyYXRvcikKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFW
TWV0YWRhdGFJdGVtKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldENhY2hl
KQorCitTT0ZUX0xJTktfQ0xBU1MoQ29yZUltYWdlLCBDSUNvbnRleHQpCitTT0ZUX0xJTktfQ0xB
U1MoQ29yZUltYWdlLCBDSUltYWdlKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9u
LCBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwsIE5TU3RyaW5nICopCitTT0ZUX0xJ
TktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNw
ZWVkLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRp
YUNoYXJhY3RlcmlzdGljVmlzdWFsLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFW
Rm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwg
TlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBl
VmlkZW8sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1l
ZGlhVHlwZUF1ZGlvLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZNZWRpYVR5cGVNZXRhZGF0YSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SW5o
ZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBl
cnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3RyaW5nICopCitTT0ZU
X0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1pbmdL
ZXlEZWxpdmVyeUNvbnRlbnRLZXlUeXBlLCBOU1N0cmluZyAqKQorCitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXks
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBB
VlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5LCBOU1N0cmluZyAqKQorCisj
ZGVmaW5lIEFWUGxheWVyIGluaXRBVlBsYXllcigpCisjZGVmaW5lIEFWUGxheWVySXRlbSBpbml0
QVZQbGF5ZXJJdGVtKCkKKyNkZWZpbmUgQVZQbGF5ZXJMYXllciBpbml0QVZQbGF5ZXJMYXllcigp
CisjZGVmaW5lIEFWVVJMQXNzZXQgaW5pdEFWVVJMQXNzZXQoKQorI2RlZmluZSBBVkFzc2V0SW1h
Z2VHZW5lcmF0b3IgaW5pdEFWQXNzZXRJbWFnZUdlbmVyYXRvcigpCisjZGVmaW5lIEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0IGluaXRBVlBsYXllckl0ZW1WaWRlb091dHB1dCgpCisjZGVmaW5lIEFW
TWV0YWRhdGFJdGVtIGluaXRBVk1ldGFkYXRhSXRlbSgpCisjZGVmaW5lIEFWQXNzZXRDYWNoZSBp
bml0QVZBc3NldENhY2hlKCkKKworI2RlZmluZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3Bl
Y3RyYWwgZ2V0QVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsKCkKKyNkZWZpbmUgQVZB
dWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCBnZXRBVkF1ZGlvVGltZVBpdGNoQWxnb3Jp
dGhtVmFyaXNwZWVkKCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsIGdldEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0F1ZGlibGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSgpCisjZGVmaW5lIEFWTWVk
aWFUeXBlQ2xvc2VkQ2FwdGlvbiBnZXRBVk1lZGlhVHlwZUNsb3NlZENhcHRpb24oKQorI2RlZmlu
ZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8oKQorI2RlZmluZSBBVk1lZGlh
VHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8oKQorI2RlZmluZSBBVk1lZGlhVHlwZU1ldGFk
YXRhIGdldEFWTWVkaWFUeXBlTWV0YWRhdGEoKQorI2RlZmluZSBBVlBsYXllckl0ZW1EaWRQbGF5
VG9FbmRUaW1lTm90aWZpY2F0aW9uIGdldEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3Rp
ZmljYXRpb24oKQorI2RlZmluZSBBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJv
bVJlZmVyZW5jaW5nVVJJS2V5IGdldEFWVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRG
cm9tUmVmZXJlbmNpbmdVUklLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5
cGVLZXkgZ2V0QVZVUkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5KCkKKyNkZWZpbmUgQVZVUkxB
c3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSBnZXRBVlVSTEFzc2V0VXNlQ2xpZW50
VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5KCkKKyNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBl
cnR1cmVNb2RlQ2xlYW5BcGVydHVyZSBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1v
ZGVDbGVhbkFwZXJ0dXJlKCkKKyNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9u
c0tleSBnZXRBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkKKyNkZWZpbmUgQVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0KCkKKyNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwgZ2V0
QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKQorI2RlZmluZSBBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplIGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKQorI2RlZmluZSBB
VlN0cmVhbWluZ0tleURlbGl2ZXJ5Q29udGVudEtleVR5cGUgZ2V0QVZTdHJlYW1pbmdLZXlEZWxp
dmVyeUNvbnRlbnRLZXlUeXBlKCkKKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVD
VElPTl9HUk9VUCkKKwordHlwZWRlZiBBVk1lZGlhU2VsZWN0aW9uR3JvdXAgQVZNZWRpYVNlbGVj
dGlvbkdyb3VwVHlwZTsKK3R5cGVkZWYgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiBBVk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uVHlwZTsKKworU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVk
aWFTZWxlY3Rpb25Hcm91cCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dENv
bnRleHQpCisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0xlZ2libGUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0
aW9uLCBBVk1lZGlhVHlwZVN1YnRpdGxlLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVz
T25seSwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0IGdl
dEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRDbGFzcygpCisjZGVmaW5lIEFWTWVkaWFTZWxlY3Rp
b25Hcm91cCBnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpCisjZGVmaW5lIEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb24gZ2V0QVZNZWRpYVNlbGVjdGlvbk9wdGlvbkNsYXNzKCkKKyNkZWZpbmUg
QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdp
YmxlKCkKKyNkZWZpbmUgQVZNZWRpYVR5cGVTdWJ0aXRsZSBnZXRBVk1lZGlhVHlwZVN1YnRpdGxl
KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygp
CisjZGVmaW5lIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25T
b3VyY2VBbmRSdWxlc09ubHkgZ2V0QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5n
UmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSgpCisKKyNlbmRpZgorCisjaWYgRU5BQkxFKEFW
Rl9DQVBUSU9OUykKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZVUkxBc3Nl
dENhY2hlS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZVUkxBc3NldE91dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2Fj
aGVLZXksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk91
dE9mQmFuZEFsdGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXksIE5TU3RyaW5nICopCitTT0ZUX0xJ
TktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5k
ZWRMYW5ndWFnZVRhZ0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJc0RlZmF1bHRLZXksIE5TU3RyaW5nICop
CitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRy
YWNrTWVkaWFDaGFyYWN0ZXJzdGljc0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFO
VChBVkZvdW5kYXRpb24sIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5LCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZPdXRPZkJhbmRB
bHRlcm5hdGVUcmFja1NvdXJjZUtleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRG
b3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRh
dGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nl
c3NpYmlsaXR5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50LCBOU1N0cmluZyAqKQorCisj
ZGVmaW5lIEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkgZ2V0QVZVUkxBc3Nl
dE91dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSgpCisjZGVmaW5lIEFWVVJMQXNzZXRDYWNoZUtl
eSBnZXRBVlVSTEFzc2V0Q2FjaGVLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0VXNlc05vUGVyc2lz
dGVudENhY2hlS2V5IGdldEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXkoKQorI2Rl
ZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXkgZ2V0QVZPdXRPZkJh
bmRBbHRlcm5hdGVUcmFja0Rpc3BsYXlOYW1lS2V5KCkKKyNkZWZpbmUgQVZPdXRPZkJhbmRBbHRl
cm5hdGVUcmFja0V4dGVuZGVkTGFuZ3VhZ2VUYWdLZXkgZ2V0QVZPdXRPZkJhbmRBbHRlcm5hdGVU
cmFja0V4dGVuZGVkTGFuZ3VhZ2VUYWdLZXkoKQorI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0
ZVRyYWNrSXNEZWZhdWx0S2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJc0RlZmF1bHRL
ZXkoKQorI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrTWVkaWFDaGFyYWN0ZXJzdGlj
c0tleSBnZXRBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrTWVkaWFDaGFyYWN0ZXJzdGljc0tleSgp
CisjZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5IGdldEFWT3V0
T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5KCkKKyNkZWZpbmUgQVZPdXRPZkJhbmRB
bHRlcm5hdGVUcmFja1NvdXJjZUtleSBnZXRBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNl
S2V5KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3Vu
ZEZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNB
bmRTb3VuZEZvckFjY2Vzc2liaWxpdHkoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNU
cmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3Rl
cmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKKyNkZWZpbmUg
QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50IGdldEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCgpCisKKyNlbmRpZgorCisjaWYgRU5BQkxFKERBVEFD
VUVfVkFMVUUpCisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFL
ZXlTcGFjZVF1aWNrVGltZVVzZXJEYXRhLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
X01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEsIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5
U3BhY2VRdWlja1RpbWVNZXRhZGF0YSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZWlUdW5lcywgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUlEMywgTlNTdHJp
bmcgKikKKworI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VRdWlja1RpbWVVc2VyRGF0YSBnZXRB
Vk1ldGFkYXRhS2V5U3BhY2VRdWlja1RpbWVVc2VyRGF0YSgpCisjZGVmaW5lIEFWTWV0YWRhdGFL
ZXlTcGFjZUlTT1VzZXJEYXRhIGdldEFWTWV0YWRhdGFLZXlTcGFjZUlTT1VzZXJEYXRhKCkKKyNk
ZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEgZ2V0QVZNZXRhZGF0YUtl
eVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEoKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VpVHVu
ZXMgZ2V0QVZNZXRhZGF0YUtleVNwYWNlaVR1bmVzKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUtleVNw
YWNlSUQzIGdldEFWTWV0YWRhdGFLZXlTcGFjZUlEMygpCisKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZVUkxB
c3NldEJvdW5kTmV0d29ya0ludGVyZmFjZU5hbWUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRp
ZmllcktleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5k
YXRpb24sIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVS
TExvYWRpbmdLZXksIE5TU3RyaW5nICopCisKKyNkZWZpbmUgQVZVUkxBc3NldEJvdW5kTmV0d29y
a0ludGVyZmFjZU5hbWUgZ2V0QVZVUkxBc3NldEJvdW5kTmV0d29ya0ludGVyZmFjZU5hbWUoKQor
I2RlZmluZSBBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcktleSBnZXRBVlVSTEFzc2V0
Q2xpZW50QnVuZGxlSWRlbnRpZmllcktleSgpCisjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2ll
c0tleSBnZXRBVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0UmVx
dWlyZXNDdXN0b21VUkxMb2FkaW5nS2V5IGdldEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExv
YWRpbmdLZXkoKQorCisjZW5kaWYKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVRvb2xib3gp
CiBTT0ZUX0xJTktfT1BUSU9OQUwoTWVkaWFUb29sYm94LCBNVEVuYWJsZUNhcHRpb24yMDE1QmVo
YXZpb3IsIEJvb2xlYW4sICgpLCAoKSkKQEAgLTE2NSw3ICszMjUsMTEgQEAgZW51bSBNZWRpYVBs
YXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dCB7CiAgICAgTWVkaWFQbGF5ZXJBVkZv
dW5kYXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyLAogfTsKIAorI2lmIEhBVkUo
QVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05f
TEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKIEBpbnRlcmZhY2UgV2ViQ29yZUFWRk1vdmllT2JzZXJ2
ZXIgOiBOU09iamVjdCA8QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFB1c2hEZWxlZ2F0ZT4KKyNl
bHNlCitAaW50ZXJmYWNlIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIDogTlNPYmplY3QKKyNlbmRp
ZgogewogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9w
bGF5ZXI7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lciwgc3RkOjphdG9taWM8dW5zaWduZWQ+
PiBtX3Rhc2tRdWV1ZTsKQEAgLTE3Niw4ICszNDAsMTAgQEAgZW51bSBNZWRpYVBsYXllckFWRm91
bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dCB7CiAtKHZvaWQpbWV0YWRhdGFMb2FkZWQ7CiAtKHZv
aWQpZGlkRW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0odm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGlj
dGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0OihNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0
aW9uQ29udGV4dCljb250ZXh0OworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElP
Tl9HUk9VUCkKIC0gKHZvaWQpbGVnaWJsZU91dHB1dDooaWQpb3V0cHV0IGRpZE91dHB1dEF0dHJp
YnV0ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBuYXRpdmVTYW1wbGVCdWZmZXJzOihOU0Fy
cmF5ICopbmF0aXZlU2FtcGxlcyBmb3JJdGVtVGltZTooQ01UaW1lKWl0ZW1UaW1lOwogLSAodm9p
ZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KGlkKW91dHB1dDsKKyNlbmRpZgogQGVuZAogCiAj
aWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQpAQCAtMjQzLDcgKzQwOSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVu
Z2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhCiAgICAgQVNTRVJUKEFWRm91bmRhdGlvbk1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQogCi1zdGF0aWMgQVZBc3NldENh
Y2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCitzdGF0aWMgQVZBc3Nl
dENhY2hlVHlwZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IE5TVVJMICphc3NldENhY2hlVVJMOwogICAgIApAQCAtMjUyLDcgKzQxOCw3IEBAIHN0YXRpYyBB
VkFzc2V0Q2FjaGUgKmFzc2V0Q2FjaGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBl
bHNlCiAgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGgg
aXNEaXJlY3Rvcnk6WUVTXTsKIAotICAgIHJldHVybiBbUEFMOjpnZXRBVkFzc2V0Q2FjaGVDbGFz
cygpIGFzc2V0Q2FjaGVXaXRoVVJMOmFzc2V0Q2FjaGVVUkxdOworICAgIHJldHVybiBbaW5pdEFW
QXNzZXRDYWNoZSgpIGFzc2V0Q2FjaGVXaXRoVVJMOmFzc2V0Q2FjaGVVUkxdOwogfQogCiBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMjc0LDcg
KzQ0MCw3IEBAIHN0YXRpYyBXYWxsVGltZSB0b1N5c3RlbUNsb2NrVGltZShOU0RhdGUgKmRhdGUp
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNh
Y2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKLSAgICBB
VkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRoKTsKKyAgICBB
VkFzc2V0Q2FjaGVUeXBlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7CiAg
ICAgCiAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CiAg
ICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShbYXNzZXRDYWNoZSBsYXN0TW9kaWZpZWREYXRl
T2ZFbnRyeUZvcktleTprZXldKSA+IG1vZGlmaWVkU2luY2UpCkBAIC0zMTYsNyArNDgyLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBXYWwKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBB
VkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRoKTsKKyAgICBB
VkFzc2V0Q2FjaGVUeXBlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7CiAg
ICAgZm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CiAgICAgICAg
IFVSTCBrZXlBc1VSTCA9IFVSTChVUkwoKSwga2V5KTsKICAgICAgICAgaWYgKGtleUFzVVJMLmlz
VmFsaWQoKSkgewpAQCAtMzk0LDExICs1NjAsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKCkKIAogICAgIGNsZWFyVGV4dFRyYWNrcygpOwog
CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFW
Rk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQogICAgIGlmIChtX2xlZ2libGVPdXRw
dXQpIHsKICAgICAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQogICAgICAgICAgICAgW21fYXZQbGF5
ZXJJdGVtLmdldCgpIHJlbW92ZU91dHB1dDptX2xlZ2libGVPdXRwdXQuZ2V0KCldOwogICAgICAg
ICBtX2xlZ2libGVPdXRwdXQgPSBuaWw7CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAobV9hdlBs
YXllckl0ZW0pIHsKICAgICAgICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBpdGVtS1ZPUHJv
cGVydGllcygpKQpAQCAtNDc3LDcgKzY0NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoKQogICAgIGlmICghbV9hdkFzc2V0
IHx8IG1faW1hZ2VHZW5lcmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW1hZ2VHZW5l
cmF0b3IgPSBbUEFMOjpnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JDbGFzcygpIGFzc2V0SW1hZ2VH
ZW5lcmF0b3JXaXRoQXNzZXQ6bV9hdkFzc2V0LmdldCgpXTsKKyAgICBtX2ltYWdlR2VuZXJhdG9y
ID0gW0FWQXNzZXRJbWFnZUdlbmVyYXRvciBhc3NldEltYWdlR2VuZXJhdG9yV2l0aEFzc2V0Om1f
YXZBc3NldC5nZXQoKV07CiAKICAgICBbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBzZXRBcGVydHVy
ZU1vZGU6QVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZV07CiAg
ICAgW21faW1hZ2VHZW5lcmF0b3IuZ2V0KCkgc2V0QXBwbGllc1ByZWZlcnJlZFRyYWNrVHJhbnNm
b3JtOllFU107CkBAIC01MzMsNyArNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKCkKICAgICBpZiAoIW1fYXZQbGF5ZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVlBsYXllckxheWVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgbV92aWRlb0xheWVyID0gYWRv
cHROUyhbW0FWUGxheWVyTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV92aWRlb0xheWVyIHNl
dFBsYXllcjptX2F2UGxheWVyLmdldCgpXTsKIAogI2lmbmRlZiBOREVCVUcKQEAgLTYzMiw3ICs4
MDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNocm9u
aXplVGV4dFRyYWNrU3RhdGUoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAg
ICAgICBSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gdHJhY2tQcml2YXRlID0g
c3RhdGljX2Nhc3Q8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRio+KHRleHRUcmFjay5nZXQo
KSk7Ci0gICAgICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBjdXJyZW50T3B0
aW9uID0gdHJhY2tQcml2YXRlLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpOworICAgICAgICBSZXRh
aW5QdHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGU+IGN1cnJlbnRPcHRpb24gPSB0cmFja1By
aXZhdGUtPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1
dG8mIHRyYWNrIDogb3V0T2ZCYW5kVHJhY2tTb3VyY2VzKSB7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHVuaXF1ZUlEID0gU3RyaW5nOjpudW1iZXIodHJhY2stPnVuaXF1ZUlk
KCkpLmNyZWF0ZUNGU3RyaW5nKCk7CkBAIC03MjIsMTkgKzg5MCwxOSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgVVJM
JiB1cmwpCiAgICAgaWYgKHBsYXllcigpLT5kb2VzSGF2ZUF0dHJpYnV0ZSgieC1pdHVuZXMtaW5o
ZXJpdC11cmktcXVlcnktY29tcG9uZW50IikpCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9i
amVjdDpAWUVTIGZvcktleTogQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21S
ZWZlcmVuY2luZ1VSSUtleV07CiAKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9B
VlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5KCkpCisgICAgaWYgKGNhbkxv
YWRBVlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5KCkpCiAgICAgICAgIFtv
cHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpBVlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGlu
Z0V4Y2x1c2l2ZWx5XTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGVsc2UgaWYgKFBB
TDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFJlcXVpcmVzQ3VzdG9tVVJMTG9hZGlu
Z0tleSgpKQorICAgIGVsc2UgaWYgKGNhbkxvYWRBVlVSTEFzc2V0UmVxdWlyZXNDdXN0b21VUkxM
b2FkaW5nS2V5KCkpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpBVlVS
TEFzc2V0UmVxdWlyZXNDdXN0b21VUkxMb2FkaW5nS2V5XTsKICAgICAvLyBGSVhNRTogcmRhcjov
L3Byb2JsZW0vMjAzNTQ2ODgKICAgICBTdHJpbmcgaWRlbnRpZmllciA9IHBsYXllcigpLT5zb3Vy
Y2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKTsKLSAgICBpZiAoIWlkZW50aWZpZXIuaXNFbXB0eSgp
KQorICAgIGlmICghaWRlbnRpZmllci5pc0VtcHR5KCkgJiYgY2FuTG9hZEFWVVJMQXNzZXRDbGll
bnRCdW5kbGVJZGVudGlmaWVyS2V5KCkpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDppZGVu
dGlmaWVyIGZvcktleTpBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcktleV07CiAjZW5k
aWYKIAogICAgIGF1dG8gdHlwZSA9IHBsYXllcigpLT5jb250ZW50TUlNRVR5cGUoKTsKLSAgICBp
ZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVL
ZXkoKSAmJiAhdHlwZS5pc0VtcHR5KCkgJiYgIXBsYXllcigpLT5jb250ZW50TUlNRVR5cGVXYXNJ
bmZlcnJlZEZyb21FeHRlbnNpb24oKSkgeworICAgIGlmIChjYW5Mb2FkQVZVUkxBc3NldE91dE9m
QmFuZE1JTUVUeXBlS2V5KCkgJiYgIXR5cGUuaXNFbXB0eSgpICYmICFwbGF5ZXIoKS0+Y29udGVu
dE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uKCkpIHsKICAgICAgICAgYXV0byBjb2Rl
Y3MgPSBwbGF5ZXIoKS0+Y29udGVudFR5cGVDb2RlY3MoKTsKICAgICAgICAgaWYgKCFjb2RlY3Mu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBOU1N0cmluZyAqdHlwZVN0cmluZyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcgKil0eXBl
LCAoTlNTdHJpbmcgKiljb2RlY3NdOwpAQCAtNzc5LDcgKzk0Nyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwm
IHVybCkKICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAgICAgICAgICAg
W25zQ29va2llcyBhZGRPYmplY3Q6dG9OU0hUVFBDb29raWUoY29va2llKV07CiAKLSAgICAgICAg
aWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEhUVFBDb29raWVzS2V5KCkp
CisgICAgICAgIGlmIChjYW5Mb2FkQVZVUkxBc3NldEhUVFBDb29raWVzS2V5KCkpCiAgICAgICAg
ICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6bnNDb29raWVzLmdldCgpIGZvcktleTpBVlVSTEFzc2V0
SFRUUENvb2tpZXNLZXldOwogICAgIH0KICNlbmRpZgpAQCAtNzkxLDcgKzk1OSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0OmFzc2V0Q2FjaGVGb3JQ
YXRoKHBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkg
Zm9yS2V5OkFWVVJMQXNzZXRDYWNoZUtleV07CiAKICAgICBOU1VSTCAqY29jb2FVUkwgPSBjYW5v
bmljYWxVUkwodXJsKTsKLSAgICBtX2F2QXNzZXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZVUkxB
c3NldEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6Y29jb2FVUkwgb3B0aW9uczpvcHRpb25zLmdldCgp
XSk7CisgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbW0FWVVJMQXNzZXQgYWxsb2NdIGluaXRXaXRo
VVJMOmNvY29hVVJMIG9wdGlvbnM6b3B0aW9ucy5nZXQoKV0pOwogCiAjaWYgSEFWRShBVkZPVU5E
QVRJT05fTE9BREVSX0RFTEVHQVRFKQogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3Vy
Y2VMb2FkZXIgPSBtX2F2QXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXI7CkBAIC04MTMsNyArOTgx
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFz
c2V0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRBVlBsYXll
ckl0ZW0oQVZQbGF5ZXJJdGVtICppdGVtKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzZXRBVlBsYXllckl0ZW0oQVZQbGF5ZXJJdGVtVHlwZSAqaXRlbSkKIHsKICAg
ICBpZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTgyMyw4ICs5OTEsOCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEFWUGxheWVySXRlbShB
VlBsYXllckl0ZW0gKml0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5Q
dHI8QVZQbGF5ZXI+IHN0cm9uZ1BsYXllciA9IG1fYXZQbGF5ZXIuZ2V0KCk7Ci0gICAgUmV0YWlu
UHRyPEFWUGxheWVySXRlbT4gc3Ryb25nSXRlbSA9IGl0ZW07CisgICAgUmV0YWluUHRyPEFWUGxh
eWVyVHlwZT4gc3Ryb25nUGxheWVyID0gbV9hdlBsYXllci5nZXQoKTsKKyAgICBSZXRhaW5QdHI8
QVZQbGF5ZXJJdGVtVHlwZT4gc3Ryb25nSXRlbSA9IGl0ZW07CiAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1BsYXllciwgc3Ryb25nSXRlbV0gewog
ICAgICAgICBbc3Ryb25nUGxheWVyIHJlcGxhY2VDdXJyZW50SXRlbVdpdGhQbGF5ZXJJdGVtOnN0
cm9uZ0l0ZW0uZ2V0KCldOwogICAgIH0pOwpAQCAtODM5LDEzICsxMDA3LDE1IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIoKQogCiAgICAg
c2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKLSAgICBtX2F2UGxheWVyID0gYWRvcHROUyhbUEFM
OjphbGxvY0FWUGxheWVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgbV9hdlBsYXllciA9IGFkb3B0
TlMoW1tBVlBsYXllciBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUg
aW4gcGxheWVyS1ZPUHJvcGVydGllcygpKQogICAgICAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRP
YnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWUgb3B0aW9uczpO
U0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFW
Rm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllcl07CiAKICAgICBzZXRTaG91bGRPYnNl
cnZlVGltZUNvbnRyb2xTdGF0dXModHJ1ZSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJ
QV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NV
UFBPUlQpCiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0QXBwbGllc01lZGlhU2VsZWN0aW9uQ3Jp
dGVyaWFBdXRvbWF0aWNhbGx5Ok5PXTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwpAQCAt
ODg5LDcgKzEwNTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNyZWF0ZUFWUGxheWVySXRlbSgpCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKICAg
ICAvLyBDcmVhdGUgdGhlIHBsYXllciBpdGVtIHNvIHdlIGNhbiBsb2FkIG1lZGlhIGRhdGEuIAot
ICAgIG1fYXZQbGF5ZXJJdGVtID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbUluc3Rh
bmNlKCkgaW5pdFdpdGhBc3NldDptX2F2QXNzZXQuZ2V0KCldKTsKKyAgICBtX2F2UGxheWVySXRl
bSA9IGFkb3B0TlMoW1tBVlBsYXllckl0ZW0gYWxsb2NdIGluaXRXaXRoQXNzZXQ6bV9hdkFzc2V0
LmdldCgpXSk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihkaWRFbmQ6
KSBuYW1lOkFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24gb2JqZWN0Om1f
YXZQbGF5ZXJJdGVtLmdldCgpXTsKIApAQCAtOTAyLDE2ICsxMDcyLDE4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCkKICAgICBp
ZiAobV9hdlBsYXllcikKICAgICAgICAgc2V0QVZQbGF5ZXJJdGVtKG1fYXZQbGF5ZXJJdGVtLmdl
dCgpKTsKIAorI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYg
SEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKICAgICBjb25zdCBOU1Rp
bWVJbnRlcnZhbCBsZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKIAogICAgIFJldGFp
blB0cjxOU0FycmF5PiBzdWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ01TdWJ0aXRsZUZvcm1h
dFR5cGVfV2ViVlRUXSwgbmlsXSk7Ci0gICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbUEFM
OjphbGxvY0FWUGxheWVySXRlbUxlZ2libGVPdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFT
dWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0aW9uOnN1YnR5cGVzLmdldCgpXSk7CisgICAgbV9s
ZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbW0FWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgYWxsb2Nd
IGluaXRXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0aW9uOnN1YnR5cGVzLmdl
dCgpXSk7CiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXRTdXBwcmVzc2VzUGxheWVyUmVu
ZGVyaW5nOllFU107CiAKICAgICBbbV9sZWdpYmxlT3V0cHV0LmdldCgpIHNldERlbGVnYXRlOm1f
b2JqY09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOwogICAg
IFttX2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0QWR2YW5jZUludGVydmFsRm9yRGVsZWdhdGVJbnZv
Y2F0aW9uOmxlZ2libGVPdXRwdXRBZHZhbmNlSW50ZXJ2YWxdOwogICAgIFttX2xlZ2libGVPdXRw
dXQuZ2V0KCkgc2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uOkFWUGxheWVySXRlbUxlZ2libGVPdXRw
dXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHldOwogICAgIFttX2F2UGxh
eWVySXRlbS5nZXQoKSBhZGRPdXRwdXQ6bV9sZWdpYmxlT3V0cHV0LmdldCgpXTsKKyNlbmRpZgog
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgVVNFKE1FRElBVE9PTEJPWCkKICAgICBpZiAobV9w
cm92aWRlcikgewpAQCAtMTU1MCw3ICsxNzIyLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QK
ICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIE5TU3Ry
aW5nICp0eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNz
PVwiJUBcIiIsIChOU1N0cmluZyAqKWNvbnRhaW5lclR5cGUsIChOU1N0cmluZyAqKXBhcmFtZXRl
cnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKV07Ci0gICAg
cmV0dXJuIFtQQUw6OmdldEFWVVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVU
eXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6
Ok1heUJlU3VwcG9ydGVkOworICAgIHJldHVybiBbQVZVUkxBc3NldCBpc1BsYXlhYmxlRXh0ZW5k
ZWRNSU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlh
UGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTE2OTYsNyArMTg2OCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KEFWQXNz
ZXRSZXNvdXJjZUxvCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
aXNBdmFpbGFibGUoKQogewotICAgIHJldHVybiBQQUw6OkFWRm91bmRhdGlvbkxpYnJhcnkoKSAm
JiBpc0NvcmVNZWRpYUZyYW1ld29ya0F2YWlsYWJsZSgpOworICAgIHJldHVybiBBVkZvdW5kYXRp
b25MaWJyYXJ5KCkgJiYgaXNDb3JlTWVkaWFGcmFtZXdvcmtBdmFpbGFibGUoKTsKIH0KIAogTWVk
aWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1lZGlhVGltZUZvclRp
bWVWYWx1ZShjb25zdCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QKQEAgLTE3NjEsNiArMTkz
Myw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tzQ2hh
bmdlZCgpCiAgICAgICAgIEFWQXNzZXRUcmFjayogZmlyc3RFbmFibGVkVmlkZW9UcmFjayA9IGZp
cnN0RW5hYmxlZFRyYWNrKFttX2F2QXNzZXQuZ2V0KCkgdHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSk7CiAgICAgICAgIHNldEhhc1ZpZGVv
KGZpcnN0RW5hYmxlZFZpZGVvVHJhY2spOwogICAgICAgICBzZXRIYXNBdWRpbyhmaXJzdEVuYWJs
ZWRUcmFjayhbbV9hdkFzc2V0LmdldCgpIHRyYWNrc1dpdGhNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSk7CisjaWYgIUhBVkUoQVZGT1VOREFUSU9OX01F
RElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICAgICAgaGFzQ2FwdGlvbnMgPSBbW21fYXZBc3NldC5n
ZXQoKSB0cmFja3NXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbl0gY291bnRd
OworI2VuZGlmCiAgICAgICAgIGF1dG8gc2l6ZSA9IGZpcnN0RW5hYmxlZFZpZGVvVHJhY2sgPyBG
bG9hdFNpemUoQ0dTaXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0oW2ZpcnN0RW5hYmxlZFZpZGVvVHJh
Y2sgbmF0dXJhbFNpemVdLCBbZmlyc3RFbmFibGVkVmlkZW9UcmFjayBwcmVmZXJyZWRUcmFuc2Zv
cm1dKSkgOiBGbG9hdFNpemUoKTsKICAgICAgICAgLy8gRm9yIHZpZGVvcyB3aXRoIHJvdGF0aW9u
IHRhZyBzZXQsIHRoZSB0cmFuc2Zvcm1hdGlvbiBhYm92ZSBtaWdodCByZXR1cm4gYSBDR1NpemUg
aW5zdGFuY2Ugd2l0aCBuZWdhdGl2ZSB3aWR0aCBvciBoZWlnaHQuCiAgICAgICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjQ4LgpAQCAtMTc4Miw2
ICsxOTU3LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0cmFj
a3NDaGFuZ2VkKCkKICAgICAgICAgICAgICAgICBlbHNlIGlmIChbbWVkaWFUeXBlIGlzRXF1YWxU
b1N0cmluZzpBVk1lZGlhVHlwZUF1ZGlvXSkKICAgICAgICAgICAgICAgICAgICAgaGFzQXVkaW8g
PSB0cnVlOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKFttZWRpYVR5cGUgaXNFcXVhbFRvU3Ry
aW5nOkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbl0pIHsKKyNpZiAhSEFWRShBVkZPVU5EQVRJT05f
TUVESUFfU0VMRUNUSU9OX0dST1VQKQorICAgICAgICAgICAgICAgICAgICBoYXNDYXB0aW9ucyA9
IHRydWU7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgaGF2ZUNDVHJhY2sgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoW21lZGlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QVZN
ZWRpYVR5cGVNZXRhZGF0YV0pIHsKICAgICAgICAgICAgICAgICAgICAgaGFzTWV0YURhdGEgPSB0
cnVlOwpAQCAtMTc4OSwxMSArMTk2NywxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnRyYWNrc0NoYW5nZWQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgIHVwZGF0ZUF1ZGlvVHJhY2tzKCk7CiAg
ICAgICAgIHVwZGF0ZVZpZGVvVHJhY2tzKCk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJ
QV9TRUxFQ1RJT05fR1JPVVApCiAgICAgICAgIGhhc0F1ZGlvIHw9IChtX2F1ZGlibGVHcm91cCAm
JiBtX2F1ZGlibGVHcm91cC0+c2VsZWN0ZWRPcHRpb24oKSk7CiAgICAgICAgIGhhc1ZpZGVvIHw9
IChtX3Zpc3VhbEdyb3VwICYmIG1fdmlzdWFsR3JvdXAtPnNlbGVjdGVkT3B0aW9uKCkpOworI2Vu
ZGlmCisjZW5kaWYKIAogICAgICAgICAvLyBBbHdheXMgc2F5cyB3ZSBoYXZlIHZpZGVvIGlmIHRo
ZSBBVlBsYXllckxheWVyIGlzIHJlYWR5IGZvciBkaWFwbGF5IHRvIHdvcmsgYXJvdW5kCiAgICAg
ICAgIC8vIGFuIEFWRm91bmRhdGlvbiBidWcgd2hpY2ggY2F1c2VzIGl0IHRvIHNvbWV0aW1lcyBj
bGFpbSBhIHRyYWNrIGlzIGRpc2FibGVkIGV2ZW4KQEAgLTE4MDcsMTIgKzE5ODksMjIgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0cmFja3NDaGFuZ2VkKCkKICNl
bmRpZgogICAgIH0KIAotICAgIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqbGVnaWJsZUdyb3VwID0g
c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKTsKKyNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgQVZNZWRpYVNlbGVjdGlvbkdyb3Vw
VHlwZSAqbGVnaWJsZUdyb3VwID0gc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVk
aWEoKTsKICAgICBpZiAobGVnaWJsZUdyb3VwICYmIG1fY2FjaGVkVHJhY2tzKSB7Ci0gICAgICAg
IGhhc0NhcHRpb25zID0gW1tQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgcGxh
eWFibGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6W2xlZ2libGVHcm91cCBvcHRpb25z
XV0gY291bnRdOworICAgICAgICBoYXNDYXB0aW9ucyA9IFtbQVZNZWRpYVNlbGVjdGlvbkdyb3Vw
IHBsYXlhYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxlR3JvdXAgb3B0
aW9uc11dIGNvdW50XTsKICAgICAgICAgaWYgKGhhc0NhcHRpb25zKQogICAgICAgICAgICAgcHJv
Y2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucygpOwogICAgIH0KKyNlbmRpZgorCisjaWYgIUhBVkUo
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmIEhBVkUoQVZGT1VOREFUSU9O
X01FRElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICBpZiAoIWhhc0NhcHRpb25zICYmIGhhdmVDQ1Ry
YWNrKQorICAgICAgICBwcm9jZXNzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFja3MoKTsKKyNlbGlm
ICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIGlmIChoYXZl
Q0NUcmFjaykKKyAgICAgICAgcHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCk7Cisj
ZW5kaWYKIAogICAgIHNldEhhc0Nsb3NlZENhcHRpb25zKGhhc0NhcHRpb25zKTsKIApAQCAtMTg3
Nyw2ICsyMDY5LDggQEAgdm9pZCBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNrc0Fu
ZE9sZEl0ZW1zKE5TQXJyYXkqIHRyYWNrcywgTlNTdHJpbmcqIHQKICAgICAgICAgKHBsYXllci0+
KmFkZGVkRnVuY3Rpb24pKCphZGRlZEl0ZW0pOwogfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05f
TUVESUFfU0VMRUNUSU9OX0dST1VQKQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVmVCwgdHlwZW5h
bWUgUGFzc1JlZlQ+CiB2b2lkIGRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJhY2tzQW5k
T2xkSXRlbXMoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMqIGdyb3VwLCBWZWN0b3I8UmVmVD4m
IG9sZEl0ZW1zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzLCBSZWZUICgq
aXRlbUZhY3RvcnkpKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYpLCBNZWRpYVBsYXllciog
cGxheWVyLCB2b2lkIChNZWRpYVBsYXllcjo6KnJlbW92ZWRGdW5jdGlvbikoUGFzc1JlZlQpLCB2
b2lkIChNZWRpYVBsYXllcjo6KmFkZGVkRnVuY3Rpb24pKFBhc3NSZWZUKSkKIHsKQEAgLTE4ODYs
NyArMjA4MCw3IEBAIHZvaWQgZGV0ZXJtaW5lQ2hhbmdlZFRyYWNrc0Zyb21OZXdUcmFja3NBbmRP
bGRJdGVtcyhNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyoKICAgICBmb3IgKGF1dG8mIG9wdGlv
biA6IGdyb3VwLT5vcHRpb25zKCkpIHsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYXZPcHRpb24gPSBv
cHRpb24tPmF2TWVkaWFTZWxlY3Rpb25PcHRpb24oKTsKKyAgICAgICAgQVZNZWRpYVNlbGVjdGlv
bk9wdGlvblR5cGUqIGF2T3B0aW9uID0gb3B0aW9uLT5hdk1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7
CiAgICAgICAgIGlmICghYXZPcHRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
bmV3U2VsZWN0aW9uT3B0aW9ucy5hZGQob3B0aW9uKTsKQEAgLTE5MzcsMjEgKzIxMzEsMjUgQEAg
dm9pZCBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNrc0FuZE9sZEl0ZW1zKE1lZGlh
U2VsZWN0aW9uR3JvdXBBVkZPYmpDKgogICAgICAgICAocGxheWVyLT4qYWRkZWRGdW5jdGlvbiko
KmFkZGVkSXRlbSk7CiB9CiAKKyNlbmRpZgorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUF1ZGlvVHJhY2tzKCkKIHsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBzaXplX3QgY291bnQgPSBtX2F1ZGlvVHJhY2tzLnNpemUoKTsKICNlbmRpZgog
CisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQogICAgIFZlY3Rv
cjxTdHJpbmc+IGNoYXJhY3RlcmlzdGljcyA9IHBsYXllcigpLT5wcmVmZXJyZWRBdWRpb0NoYXJh
Y3RlcmlzdGljcygpOwogICAgIGlmICghbV9hdWRpYmxlR3JvdXApIHsKLSAgICAgICAgaWYgKEFW
TWVkaWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAgPSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckF1
ZGlibGVNZWRpYSgpKQorICAgICAgICBpZiAoQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqZ3Jv
dXAgPSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckF1ZGlibGVNZWRpYSgpKQogICAgICAgICAg
ICAgbV9hdWRpYmxlR3JvdXAgPSBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKG1f
YXZQbGF5ZXJJdGVtLmdldCgpLCBncm91cCwgY2hhcmFjdGVyaXN0aWNzKTsKICAgICB9CiAKICAg
ICBpZiAobV9hdWRpYmxlR3JvdXApCiAgICAgICAgIGRldGVybWluZUNoYW5nZWRUcmFja3NGcm9t
TmV3VHJhY2tzQW5kT2xkSXRlbXMobV9hdWRpYmxlR3JvdXAuZ2V0KCksIG1fYXVkaW9UcmFja3Ms
IGNoYXJhY3RlcmlzdGljcywgJkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6Y3JlYXRlLCBwbGF5
ZXIoKSwgJk1lZGlhUGxheWVyOjpyZW1vdmVBdWRpb1RyYWNrLCAmTWVkaWFQbGF5ZXI6OmFkZEF1
ZGlvVHJhY2spOwogICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBkZXRlcm1pbmVDaGFuZ2VkVHJh
Y2tzRnJvbU5ld1RyYWNrc0FuZE9sZEl0ZW1zKG1fY2FjaGVkVHJhY2tzLmdldCgpLCBBVk1lZGlh
VHlwZUF1ZGlvLCBtX2F1ZGlvVHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVh
dGUsIHBsYXllcigpLCAmTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2ssICZNZWRpYVBsYXll
cjo6YWRkQXVkaW9UcmFjayk7CiAKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNr
cykKQEAgLTE5NzAsMTMgKzIxNjgsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcygpCiAKICAgICBkZXRlcm1pbmVDaGFuZ2VkVHJh
Y2tzRnJvbU5ld1RyYWNrc0FuZE9sZEl0ZW1zKG1fY2FjaGVkVHJhY2tzLmdldCgpLCBBVk1lZGlh
VHlwZVZpZGVvLCBtX3ZpZGVvVHJhY2tzLCAmVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVh
dGUsIHBsYXllcigpLCAmTWVkaWFQbGF5ZXI6OnJlbW92ZVZpZGVvVHJhY2ssICZNZWRpYVBsYXll
cjo6YWRkVmlkZW9UcmFjayk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJ
T05fR1JPVVApCiAgICAgaWYgKCFtX3Zpc3VhbEdyb3VwKSB7Ci0gICAgICAgIGlmIChBVk1lZGlh
U2VsZWN0aW9uR3JvdXAgKmdyb3VwID0gc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JWaXN1YWxN
ZWRpYSgpKQorICAgICAgICBpZiAoQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqZ3JvdXAgPSBz
YWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvclZpc3VhbE1lZGlhKCkpCiAgICAgICAgICAgICBtX3Zp
c3VhbEdyb3VwID0gTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShtX2F2UGxheWVy
SXRlbS5nZXQoKSwgZ3JvdXAsIFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIH0KIAogICAgIGlmICht
X3Zpc3VhbEdyb3VwKQogICAgICAgICBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNr
c0FuZE9sZEl0ZW1zKG1fdmlzdWFsR3JvdXAuZ2V0KCksIG1fdmlkZW9UcmFja3MsIFZlY3RvcjxT
dHJpbmc+KCksICZWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSwgcGxheWVyKCksICZN
ZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjaywgJk1lZGlhUGxheWVyOjphZGRWaWRlb1RyYWNr
KTsKKyNlbmRpZgogCiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpCiAgICAg
ICAgIHRyYWNrLT5yZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKQEAgLTIwNzIsNyArMjI3Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9P
dXRwdXQoKQogI2Vsc2UKICAgICBOU0RpY3Rpb25hcnkqIGF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZEludDprQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBXSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXksIG5pbF07CiAjZW5kaWYKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhb
UEFMOjphbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVs
QnVmZmVyQXR0cmlidXRlczphdHRyaWJ1dGVzXSk7CisgICAgbV92aWRlb091dHB1dCA9IGFkb3B0
TlMoW1tBVlBsYXllckl0ZW1WaWRlb091dHB1dCBhbGxvY10gaW5pdFdpdGhQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXM6YXR0cmlidXRlc10pOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAogICAg
IFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXREZWxlZ2F0ZS5nZXQoKSBx
dWV1ZTpnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpXTsKQEAgLTIyMjIsNyArMjQyMiw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZSgpCiAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAi
dGltZWQgb3V0Iik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZShBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0VHlwZSAqKQogewogICAgIG1fdmlkZW9P
dXRwdXRTZW1hcGhvcmUuc2lnbmFsKCk7CiB9CkBAIC0yMzUxLDYgKzI1NTEsNDUgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXYWl0aW5nRm9yS2V5KGJvb2wg
d2FpdGluZ0ZvcktleSkKIH0KICNlbmRpZgogCisjaWYgIUhBVkUoQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQpCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCkKK3sKKyNpZiBIQVZFKEFW
Rk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgW21fYXZQbGF5ZXJJdGVtLmdl
dCgpIHNlbGVjdE1lZGlhT3B0aW9uOm5pbCBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlh
U2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CisjZW5kaWYKKworICAgIFZlY3RvcjxS
ZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4+IHJlbW92ZWRUZXh0VHJhY2tzID0gbV90
ZXh0VHJhY2tzOworICAgIGZvciAoQVZQbGF5ZXJJdGVtVHJhY2sgKnBsYXllckl0ZW1UcmFjayBp
biBtX2NhY2hlZFRyYWNrcy5nZXQoKSkgeworCisgICAgICAgIEFWQXNzZXRUcmFjayAqYXNzZXRU
cmFjayA9IFtwbGF5ZXJJdGVtVHJhY2sgYXNzZXRUcmFja107CisgICAgICAgIGlmICghW1thc3Nl
dFRyYWNrIG1lZGlhVHlwZV0gaXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlv
bl0pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBib29sIG5ld0NDVHJhY2sgPSB0
cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRyYWNrcy5zaXplKCk7
IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0t
PnRleHRUcmFja0NhdGVnb3J5KCkgIT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6TGVnYWN5
Q2xvc2VkQ2FwdGlvbikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiB0cmFjayA9IHN0YXRp
Y19jYXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDKj4obV90ZXh0VHJhY2tz
W2kgLSAxXS5nZXQoKSk7CisgICAgICAgICAgICBpZiAodHJhY2stPmF2UGxheWVySXRlbVRyYWNr
KCkgPT0gcGxheWVySXRlbVRyYWNrKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlZFRleHRUcmFj
a3MucmVtb3ZlKGkgLSAxKTsKKyAgICAgICAgICAgICAgICBuZXdDQ1RyYWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIW5ld0NDVHJhY2spCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAg
ICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9i
akM6OmNyZWF0ZSh0aGlzLCBwbGF5ZXJJdGVtVHJhY2spKTsKKyAgICB9CisKKyAgICBwcm9jZXNz
TmV3QW5kUmVtb3ZlZFRleHRUcmFja3MocmVtb3ZlZFRleHRUcmFja3MpOworfQorCisjZW5kaWYK
KwogTlNBcnJheSogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZUFWQXNz
ZXRUcmFja3NGb3JBdWRpYmxlTWVkaWEoKQogewogICAgIGlmICghbV9hdkFzc2V0KQpAQCAtMjM2
Miw2ICsyNjAxLDggQEAgTlNBcnJheSogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2FmZUFWQXNzZXRUcmFja3NGb3JBdWRpYmxlTWVkaWEoKQogICAgIHJldHVybiBbbV9hdkFz
c2V0IHRyYWNrc1dpdGhNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1
ZGlibGVdOwogfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQ
KQorCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0xvYWRlZE1l
ZGlhU2VsZWN0aW9uR3JvdXBzKCkKIHsKICAgICBpZiAoIW1fYXZBc3NldCkKQEAgLTIzNzMsNyAr
MjYxNCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzTG9h
ZGVkTWVkaWFTZWxlY3Rpb25Hcm91cHMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1BVk1lZGlh
U2VsZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVN
ZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCkKK0FWTWVkaWFTZWxlY3Rpb25Hcm91
cFR5cGUqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVj
dGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCkKIHsKICAgICBpZiAoIWhhc0xvYWRlZE1lZGlhU2Vs
ZWN0aW9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMzgxLDcgKzI2MjIsNyBA
QCBBVk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNhZmVNZWRpYVNlbGVjdGlvbkdybwogICAgIHJldHVybiBbbV9hdkFzc2V0LmdldCgpIG1l
ZGlhU2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0xlZ2libGVdOwogfQogCi1BVk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yQXVkaWJsZU1l
ZGlhKCkKK0FWTWVkaWFTZWxlY3Rpb25Hcm91cFR5cGUqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yQXVkaWJsZU1lZGlhKCkKIHsK
ICAgICBpZiAoIWhhc0xvYWRlZE1lZGlhU2VsZWN0aW9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVy
biBuaWw7CkBAIC0yMzg5LDcgKzI2MzAsNyBAQCBBVk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdybwogICAg
IHJldHVybiBbbV9hdkFzc2V0LmdldCgpIG1lZGlhU2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdOwogfQogCi1BVk1lZGlhU2Vs
ZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRp
YVNlbGVjdGlvbkdyb3VwRm9yVmlzdWFsTWVkaWEoKQorQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlw
ZSogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlhU2VsZWN0aW9u
R3JvdXBGb3JWaXN1YWxNZWRpYSgpCiB7CiAgICAgaWYgKCFoYXNMb2FkZWRNZWRpYVNlbGVjdGlv
bkdyb3VwcygpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjM5OSw3ICsyNjQwLDcgQEAgQVZN
ZWRpYVNlbGVjdGlvbkdyb3VwKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
YWZlTWVkaWFTZWxlY3Rpb25Hcm8KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkKIHsKLSAgICBBVk1lZGlhU2Vs
ZWN0aW9uR3JvdXAgKmxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVn
aWJsZU1lZGlhKCk7CisgICAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqbGVnaWJsZUdyb3Vw
ID0gc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKTsKICAgICBpZiAoIWxl
Z2libGVHcm91cCkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAibm8gbWVkaWFT
ZWxlY3Rpb25Hcm91cCIpOwogICAgICAgICByZXR1cm47CkBAIC0yNDExLDE0ICsyNjUyLDE0IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucygpCiAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxlY3RNZWRp
YU9wdGlvbjpuaWwgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3Vw
Rm9yTGVnaWJsZU1lZGlhKCldOwogCiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGPj4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7Ci0gICAgTlNBcnJh
eSAqbGVnaWJsZU9wdGlvbnMgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygp
IHBsYXlhYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxlR3JvdXAgb3B0
aW9uc11dOwotICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0aW9uIGluIGxlZ2li
bGVPcHRpb25zKSB7CisgICAgTlNBcnJheSAqbGVnaWJsZU9wdGlvbnMgPSBbQVZNZWRpYVNlbGVj
dGlvbkdyb3VwIHBsYXlhYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxl
R3JvdXAgb3B0aW9uc11dOworICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgKm9w
dGlvbiBpbiBsZWdpYmxlT3B0aW9ucykgewogICAgICAgICBib29sIG5ld1RyYWNrID0gdHJ1ZTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4g
MDsgLS1pKSB7CiAgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0
VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3Nl
ZENhcHRpb24pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBjdXJyZW50T3B0aW9uOwor
ICAgICAgICAgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlPiBjdXJyZW50
T3B0aW9uOwogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCiAgICAgICAgICAgICBpZiAocmVtb3Zl
ZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6Ok91dE9mQmFuZCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxPdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IHN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRU
cmFja1ByaXZhdGVBVkYqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOwpAQCAtMjQ4
Myw2ICsyNzI0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpm
bHVzaEN1ZXMoKQogICAgIG1fY3VycmVudFRleHRUcmFjay0+cmVzZXRDdWVWYWx1ZXMoKTsKIH0K
IAorI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKwog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRDdXJyZW50VGV4dFRy
YWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgKnRyYWNrKQogewogICAgIGlmIChtX2N1cnJl
bnRUZXh0VHJhY2sgPT0gdHJhY2spCkBAIC0yNDk3LDE0ICsyNzQwLDE4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRleHRUcmFjayhJbmJhbmRU
ZXh0VHJhY2tQcml2CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgICAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0Q2xvc2VkQ2FwdGlvbkRpc3Bs
YXlFbmFibGVkOllFU107CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCiAjaWYg
RU5BQkxFKEFWRl9DQVBUSU9OUykKICAgICAgICAgZWxzZSBpZiAodHJhY2stPnRleHRUcmFja0Nh
dGVnb3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQogICAgICAg
ICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0
PE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0
aW9uKCkgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVn
aWJsZU1lZGlhKCldOwogI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFttX2F2UGxh
eWVySXRlbS5nZXQoKSBzZWxlY3RNZWRpYU9wdGlvbjpzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGT2JqQyo+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlh
U2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07
CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVD
VElPTl9HUk9VUCkKICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0
aW9uOjAgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVn
aWJsZU1lZGlhKCldOworI2VuZGlmCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHNldENsb3NlZENhcHRpb25EaXNw
bGF5RW5hYmxlZDpOT107CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RApAQCAtMjUyMCwxMCArMjc2NywxMSBAQCBTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKICAgICBpZiAo
IW1fYXZQbGF5ZXJJdGVtLmdldCgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAor
I2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKICAgICAvLyBJZiBB
VkZvdW5kYXRpb24gaGFzIGFuIGF1ZGlibGUgZ3JvdXAsIHJldHVybiB0aGUgbGFuZ3VhZ2Ugb2Yg
dGhlIGN1cnJlbnRseSBzZWxlY3RlZCBhdWRpYmxlIG9wdGlvbi4KLSAgICBBVk1lZGlhU2VsZWN0
aW9uR3JvdXAgKmF1ZGlibGVHcm91cCA9IFttX2F2QXNzZXQuZ2V0KCkgbWVkaWFTZWxlY3Rpb25H
cm91cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV07
CisgICAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqYXVkaWJsZUdyb3VwID0gW21fYXZBc3Nl
dC5nZXQoKSBtZWRpYVNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNBdWRpYmxlXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRseVNlbGVjdGVkQXVk
aWJsZU9wdGlvbiA9IFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxlY3RlZE1lZGlhT3B0aW9uSW5N
ZWRpYVNlbGVjdGlvbkdyb3VwOmF1ZGlibGVHcm91cF07CisgICAgQVZNZWRpYVNlbGVjdGlvbk9w
dGlvblR5cGUgKmN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbiA9IFttX2F2UGxheWVySXRl
bS5nZXQoKSBzZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwOmF1ZGlibGVH
cm91cF07CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgaWYgKGN1
cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbikgewogICAgICAgICBtX2xhbmd1YWdlT2ZQcmlt
YXJ5QXVkaW9UcmFjayA9IFtbY3VycmVudGx5U2VsZWN0ZWRBdWRpYmxlT3B0aW9uIGxvY2FsZV0g
bG9jYWxlSWRlbnRpZmllcl07CkBAIC0yNTMxLDYgKzI3NzksNyBAQCBTdHJpbmcgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkg
Y29uc3QKIAogICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAg
ICAgfQorI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkK
IAogICAgIC8vIEFWRm91bmRhdGlvbiBzeW50aGVzaXplcyBhbiBhdWRpYmxlIGdyb3VwIHdoZW4g
dGhlcmUgaXMgb25seSBvbmUgdW5ncm91cGVkIGF1ZGlvIHRyYWNrIGlmIHRoZXJlIGlzIGFsc28g
YSBsZWdpYmxlIGdyb3VwIChvbmUgb3IKICAgICAvLyBtb3JlIGluLWJhbmQgdGV4dCB0cmFja3Mp
LiBJdCBkb2Vzbid0IGtub3cgYWJvdXQgb3V0LW9mLWJhbmQgdHJhY2tzLCBzbyBpZiB0aGVyZSBp
cyBhIHNpbmdsZSBhdWRpbyB0cmFjayByZXR1cm4gaXRzIGxhbmd1YWdlLgpAQCAtMjU3Niw3ICsy
ODI1LDcgQEAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmUKICAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjpUYXJnZXRUeXBlTm9uZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYg
KCFQQUw6OkFWRm91bmRhdGlvbkxpYnJhcnkoKSkKKyAgICBpZiAoIUFWRm91bmRhdGlvbkxpYnJh
cnkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKIAogICAg
IHN3aXRjaCAoW21fYXZQbGF5ZXIgZXh0ZXJuYWxQbGF5YmFja1R5cGVdKSB7CkBAIC0yNTk3LDE0
ICsyODQ2LDE0IEBAIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlCiB9CiAgICAgCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLXN0YXRpYyBOU1N0cmluZyAqZXhlcm5hbERldmljZURpc3BsYXlOYW1l
Rm9yUGxheWVyKEFWUGxheWVyICpwbGF5ZXIpCitzdGF0aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZp
Y2VEaXNwbGF5TmFtZUZvclBsYXllcihBVlBsYXllclR5cGUgKnBsYXllcikKIHsKICNpZiBIQVZF
KENFTEVTVElBTCkKLSAgICBpZiAoIVBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgpKQorICAgIGlm
ICghQVZGb3VuZGF0aW9uTGlicmFyeSgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYg
KFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHQpXSkgewotICAgICAgICBB
Vk91dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQgPSBbUEFMOjpnZXRBVk91dHB1dENvbnRleHRD
bGFzcygpIHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dF07CisgICAgaWYgKFtn
ZXRBVk91dHB1dENvbnRleHRDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hh
cmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KV0pIHsKKyAgICAgICAgQVZPdXRwdXRD
b250ZXh0ICpvdXRwdXRDb250ZXh0ID0gW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgc2hhcmVk
QXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0XTsKIAogICAgICAgICBpZiAoIVtvdXRwdXRD
b250ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1
dERldmljZXMpXQogICAgICAgICAgICAgfHwgIVtvdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlw
bGVPdXRwdXREZXZpY2VzXQpAQCAtMjg4Nyw3ICszMTM2LDcgQEAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWV0YWRhdGFUeXBlKE5TU3RyaW5nICphdk1ldGFkYXRhS2V5U3BhY2UpCiAKICAg
ICBpZiAoW2F2TWV0YWRhdGFLZXlTcGFjZSBpc0VxdWFsVG9TdHJpbmc6QVZNZXRhZGF0YUtleVNw
YWNlUXVpY2tUaW1lVXNlckRhdGFdKQogICAgICAgICByZXR1cm4gcXVpY2tUaW1lVXNlckRhdGE7
Ci0gICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2UgaXNFcXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFL
ZXlTcGFjZUlTT1VzZXJEYXRhXSkKKyAgICBpZiAoY2FuTG9hZEFWTWV0YWRhdGFLZXlTcGFjZUlT
T1VzZXJEYXRhKCkgJiYgW2F2TWV0YWRhdGFLZXlTcGFjZSBpc0VxdWFsVG9TdHJpbmc6QVZNZXRh
ZGF0YUtleVNwYWNlSVNPVXNlckRhdGFdKQogICAgICAgICByZXR1cm4gaXNvVXNlckRhdGE7CiAg
ICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2UgaXNFcXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlT
cGFjZVF1aWNrVGltZU1ldGFkYXRhXSkKICAgICAgICAgcmV0dXJuIHF1aWNrVGltZU1ldGFkYXRh
OwpAQCAtMjkyMSwxNCArMzE3MCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om1ldGFkYXRhRGlkQXJyaXZlKGNvbnN0IFJldGFpblB0cjxOU0FycgogCiAgICAg
Ly8gU2V0IHRoZSBkdXJhdGlvbiBvZiBhbGwgaW5jb21wbGV0ZSBjdWVzIGJlZm9yZSBhZGRpbmcg
bmV3IG9uZXMuCiAgICAgTWVkaWFUaW1lIGVhcmxpZXN0U3RhcnRUaW1lID0gTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGZvciAoQVZNZXRhZGF0YUl0ZW0gKml0ZW0gaW4g
bV9jdXJyZW50TWV0YURhdGEuZ2V0KCkpIHsKKyAgICBmb3IgKEFWTWV0YWRhdGFJdGVtVHlwZSAq
aXRlbSBpbiBtX2N1cnJlbnRNZXRhRGF0YS5nZXQoKSkgewogICAgICAgICBNZWRpYVRpbWUgc3Rh
cnQgPSBzdGQ6Om1heChQQUw6OnRvTWVkaWFUaW1lKGl0ZW0udGltZSksIE1lZGlhVGltZTo6emVy
b1RpbWUoKSk7CiAgICAgICAgIGlmIChzdGFydCA8IGVhcmxpZXN0U3RhcnRUaW1lKQogICAgICAg
ICAgICAgZWFybGllc3RTdGFydFRpbWUgPSBzdGFydDsKICAgICB9CiAgICAgbV9tZXRhZGF0YVRy
YWNrLT51cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMoZWFybGllc3RTdGFydFRpbWUpOwogCi0gICAg
Zm9yIChBVk1ldGFkYXRhSXRlbSAqaXRlbSBpbiBtX2N1cnJlbnRNZXRhRGF0YS5nZXQoKSkgewor
ICAgIGZvciAoQVZNZXRhZGF0YUl0ZW1UeXBlICppdGVtIGluIG1fY3VycmVudE1ldGFEYXRhLmdl
dCgpKSB7CiAgICAgICAgIE1lZGlhVGltZSBzdGFydCA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRp
bWUoaXRlbS50aW1lKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICAgICAgTWVkaWFUaW1l
IGVuZCA9IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgaWYgKENN
VElNRV9JU19WQUxJRChpdGVtLmR1cmF0aW9uKSkKQEAgLTMyNzQsNyArMzUyMyw3IEBAIE5TQXJy
YXkqIHBsYXllcktWT1Byb3BlcnRpZXMoKQogICAgICAgICAgICAgICAgIHBsYXllci0+ZHVyYXRp
b25EaWRDaGFuZ2UoUEFMOjp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVdKSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0aW1lZE1ldGFk
YXRhIl0gJiYgbmV3VmFsdWUpIHsKICAgICAgICAgICAgICAgICBNZWRpYVRpbWUgbm93OwotICAg
ICAgICAgICAgICAgIENNVGltZSBpdGVtVGltZSA9IFsoQVZQbGF5ZXJJdGVtICopb2JqZWN0Lmdl
dCgpIGN1cnJlbnRUaW1lXTsKKyAgICAgICAgICAgICAgICBDTVRpbWUgaXRlbVRpbWUgPSBbKEFW
UGxheWVySXRlbVR5cGUgKilvYmplY3QuZ2V0KCkgY3VycmVudFRpbWVdOwogICAgICAgICAgICAg
ICAgIGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVtVGltZSkpCiAgICAgICAgICAgICAgICAgICAg
IG5vdyA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBNZWRpYVRpbWU6Onpl
cm9UaW1lKCkpOwogICAgICAgICAgICAgICAgIHBsYXllci0+bWV0YWRhdGFEaWRBcnJpdmUoUmV0
YWluUHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSwgbm93KTsKQEAgLTMzMTksNiArMzU2OCw4IEBAIE5T
QXJyYXkqIHBsYXllcktWT1Byb3BlcnRpZXMoKQogICAgIH0pOwogfQogCisjaWYgSEFWRShBVkZP
VU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorCiAtICh2b2lkKWxlZ2libGVPdXRwdXQ6
KGlkKW91dHB1dCBkaWRPdXRwdXRBdHRyaWJ1dGVkU3RyaW5nczooTlNBcnJheSAqKXN0cmluZ3Mg
bmF0aXZlU2FtcGxlQnVmZmVyczooTlNBcnJheSAqKW5hdGl2ZVNhbXBsZXMgZm9ySXRlbVRpbWU6
KENNVGltZSlpdGVtVGltZQogewogICAgIFVOVVNFRF9QQVJBTShvdXRwdXQpOwpAQCAtMzM0MSw2
ICszNTkyLDggQEAgTlNBcnJheSogcGxheWVyS1ZPUHJvcGVydGllcygpCiAgICAgfSk7CiB9CiAK
KyNlbmRpZgorCiBAZW5kCiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUp
CkBAIC0zNDA4LDEzICszNjYxLDEzIEBAIE5TQXJyYXkqIHBsYXllcktWT1Byb3BlcnRpZXMoKQog
ICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKW91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6
KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0CistICh2b2lkKW91dHB1dE1lZGlhRGF0
YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0VHlwZSAqKW91dHB1dAogewogICAg
IGlmIChtX3BsYXllcikKICAgICAgICAgbV9wbGF5ZXItPm91dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2Uob3V0cHV0KTsKIH0KIAotLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1
c2hlZDooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRUeXBlICopb3V0cHV0CiB7CiAgICAgVU5VU0VE
X1BBUkFNKG91dHB1dCk7CiAgICAgLy8gTm8tb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
aW5kZXggN2ZiMWE1ZWMzMDVhODU0ZjY2ZWUyMDc1Nzk4MTRjNjYxOGQxYmVjOS4uZDgzMWIwNWQx
ODBlYmI3ODgwMWQ2ZWM2Y2YxMjdhNjNhODI1NWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQpAQCAtNTIsOSArNTIsMzEgQEAKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsu
aCIKKyNwcmFnbWEgbWFyayAtIFNvZnQgTGlua2luZworCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5o
PgorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKKworU09GVF9MSU5LX0ZSQU1FV09SS19P
UFRJT05BTChBVkZvdW5kYXRpb24pCisKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5k
YXRpb24sIEFWQXNzZXQpCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
VlVSTEFzc2V0KQorQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorU09GVF9MSU5L
X0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
KQorQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKK1NPRlRfTElOS19DTEFTU19PUFRJ
T05BTChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorQUxMT1dfTkVX
X0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91
bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIpCitBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0VORAorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlv
biwgQVZTdHJlYW1EYXRhUGFyc2VyKQorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTdHJlYW1TZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5k
YXRpb24sIEFWVmlkZW9QZXJmb3JtYW5jZU1ldHJpY3MpCisKK1NPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJhbCwgTlNTdHJpbmcq
KQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRjaEFsZ29y
aXRobVZhcmlzcGVlZCwgTlNTdHJpbmcqKQorCisjZGVmaW5lIEFWQXVkaW9UaW1lUGl0Y2hBbGdv
cml0aG1TcGVjdHJhbCBnZXRBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwoKQorI2Rl
ZmluZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkIGdldEFWQXVkaW9UaW1lUGl0
Y2hBbGdvcml0aG1WYXJpc3BlZWQoKQogCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIEFW
U3RyZWFtU2Vzc2lvbgpAQCAtOTUsNyArMTE3LDcgQEAgc3RhdGljIHZvaWQgQ01UaW1lYmFzZUVm
ZmVjdGl2ZVJhdGVDaGFuZ2VkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnMK
IAogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVy
KHBsYXllcikKLSAgICAsIG1fc3luY2hyb25pemVyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBs
ZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplckluc3RhbmNlKCkgaW5pdF0pKQorICAgICwgbV9zeW5j
aHJvbml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcklu
c3RhbmNlKCkgaW5pdF0pKQogICAgICwgbV9zZWVrVGltZXIoKnRoaXMsICZNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtJbnRlcm5hbCkKICAgICAsIG1fbmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKICAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6
SGF2ZU5vdGhpbmcpCkBAIC0xNzksNyArMjAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QK
IAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmlzQXZhaWxhYmxl
KCkKIHsKLSAgICByZXR1cm4gUEFMOjpBVkZvdW5kYXRpb25MaWJyYXJ5KCkKKyAgICByZXR1cm4g
QVZGb3VuZGF0aW9uTGlicmFyeSgpCiAgICAgICAgICYmIGlzQ29yZU1lZGlhRnJhbWV3b3JrQXZh
aWxhYmxlKCkKICAgICAgICAgJiYgZ2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKQogICAgICAg
ICAmJiBnZXRBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJDbGFzcygpCkBAIC0yMTIsMTQgKzIz
NCwxNCBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgogICAgICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6Ok1heUJlU3VwcG9ydGVkOwogCiAgICAgTlNTdHJpbmcgKm91dHB1dENvZGVjcyA9IGNvZGVj
czsKLSAgICBpZiAoW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNv
ZGVjUGFyYW1ldGVyOildKQotICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVh
bURhdGFQYXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNv
ZGVjUGFyYW1ldGVyOm91dHB1dENvZGVjc107CisgICAgaWYgKFtnZXRBVlN0cmVhbURhdGFQYXJz
ZXJDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFy
YW1ldGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6KV0pCisgICAgICAgIG91dHB1dENvZGVj
cyA9IFtnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRl
ckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOm91dHB1dENvZGVjc107CiAKICAgICBpZiAoIWNv
bnRlbnRUeXBlTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUs
IHBhcmFtZXRlcnMuY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIE5TU3RyaW5nICp0
eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBc
IiIsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCksIChOU1N0cmlu
ZyAqKW91dHB1dENvZGVjc107Ci0gICAgcmV0dXJuIFtQQUw6OmdldEFWVVJMQXNzZXRDbGFzcygp
IGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6Oklz
U3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKKyAgICByZXR1cm4gW2dl
dEFWVVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmdd
ID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVk
OzsKIH0KIAogI3ByYWdtYSBtYXJrIC0KQEAgLTY5Nyw3ICs3MTksNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogICAgIGlmIChtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciA9IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJbnN0YW5jZSgpIGlu
aXRdKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHNl
dE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZSBBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciJdOwogI2VuZGlmCkBAIC05MTUsNyArOTM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmZsdXNoUGVuZGluZ1NpemVDaGFuZ2VzKCkKICNpZiBI
QVZFKEFWU1RSRUFNU0VTU0lPTikKIEFWU3RyZWFtU2Vzc2lvbiogTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzdHJlYW1TZXNzaW9uKCkKIHsKLSAgICBpZiAoIWdldEFWU3Ry
ZWFtU2Vzc2lvbkNsYXNzKCkgfHwgIVtQQUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgaW5z
dGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRXaXRoU3RvcmFnZURpcmVjdG9y
eUF0VVJMOildKQorICAgIGlmICghZ2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSB8fCAhW2dldEFW
U3RyZWFtU2Vzc2lvbkNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9y
KGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJMOildKQogICAgICAgICByZXR1cm4gbmlsOwog
CiAgICAgaWYgKCFtX3N0cmVhbVNlc3Npb24pIHsKQEAgLTkyOSw3ICs5NTEsNyBAQCBBVlN0cmVh
bVNlc3Npb24qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vz
c2lvbigpCiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0
b3AucGxpc3QiKTsKLSAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWU3RyZWFtU2Vzc2lvbkluc3RhbmNlKCkgaW5pdFdpdGhTdG9yYWdlRGlyZWN0b3J5QXRVUkw6
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aF1dKTsKKyAgICAgICAgbV9zdHJlYW1T
ZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVlN0cmVhbVNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRo
U3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhd
XSk7CiAgICAgfQogICAgIHJldHVybiBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KaW5kZXggY2RhOTdjOTFmZGEwODNkZWY2YWNmNWZhYzNkZWQyZjQ0
ODE3MWQ0Yy4uZDBlOTJiMmEzMmM5MTAxNzc5OTM5YTQ0NGI3YmE3NjIyMTRhZTAzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDYsOSArNDYsMjMgQEAKICNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2ltcG9ydCAi
Q29yZVZpZGVvU29mdExpbmsuaCIKKworI3ByYWdtYSBtYXJrIC0gU29mdCBMaW5raW5nCisKICNp
bXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rLmg+CisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09GVF9MSU5LX0NM
QVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCisK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNp
emVBc3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
VkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUsIE5TU3Ry
aW5nICopCisKKyNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBnZXRBVkxh
eWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkKKyNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdEZpbGwgZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwo
KQorI2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplIGdldEFWTGF5ZXJWaWRlb0dyYXZp
dHlSZXNpemUoKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTE5LDcgKzEzMyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGlmICghX3BhcmVudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0pIHsKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNs
YXNzOmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0pIHsKICAgICAgICAgUmV0
YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBsYXllciA9IChBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciAqKW9iamVjdDsKICAgICAgICAgQVNTRVJUKGxheWVyLmdldCgpID09IF9w
YXJlbnQtPmRpc3BsYXlMYXllcigpKTsKIApAQCAtMjI2LDcgKzI0MCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlh
RW5naW5lUmVnaXN0CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Ojppc0F2YWlsYWJsZSgpCiB7Ci0gICAgcmV0dXJuIFBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgp
ICYmIGlzQ29yZU1lZGlhRnJhbWV3b3JrQXZhaWxhYmxlKCkgJiYgZ2V0QVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJDbGFzcygpOworICAgIHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5KCkgJiYg
aXNDb3JlTWVkaWFGcmFtZXdvcmtBdmFpbGFibGUoKSAmJiBnZXRBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllckNsYXNzKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgdHlwZXMpCkBAIC00NzAsNyArNDg0LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCiAgICAgaWYgKCFtX21lZGlh
U3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2so
KSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5p
dF0pOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIGlmICghbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICIrW0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGFsbG9jXSBmYWlsZWQuIik7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpp
bmRleCA1YzBmM2RjMDYxZjA1ZmM2OTNhMzc4NzM2MWVmZDg5MjhmMjIwOWFhLi5mZmM2OWQ3Nzg1
NzcyZGNhZDFhNDlhZDdhNGExYjA3ZDZjYjkxZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1wb3J0IDx3dGYv
UHJpbnRTdHJlYW0uaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi0jaW1wb3J0
ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+CisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiB1c2luZyBuYW1lc3BhY2UgUEFM
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCmluZGV4IDcyZWQ1YzljZjJmZDA5OTgyNzRkNjI4Y2QyZDY1OTliYzIzMjc5NWQu
LmNiOTRkNjY1OTJmNTc1N2Q4MDNkMTA3ZDAwYTIxODAxNDMxODU4ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC02
NSw3ICs2NSwyOSBAQAogI3ByYWdtYSBtYXJrIC0gU29mdCBMaW5raW5nCiAKICNpbXBvcnQgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlv
blNvZnRMaW5rLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9u
KQorCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0VHJhY2spCitTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXIpCitBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0JFR0lOCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlNh
bXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VO
RAorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNlc3Npb24pCisKK1NP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3Vh
bCwgTlNTdHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNo
YXJhY3RlcmlzdGljQXVkaWJsZSwgTlNTdHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91
bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSwgTlNTdHJpbmcqKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJGYWls
ZWRUb0RlY29kZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFW
Rm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJGYWlsZWRUb0RlY29kZU5vdGlm
aWNhdGlvbkVycm9yS2V5LCBOU1N0cmluZyopCisKKyNkZWZpbmUgQVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJGYWlsZWRUb0RlY29kZU5vdGlmaWNhdGlvbiBnZXRBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllckZhaWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJGYWlsZWRUb0RlY29kZU5vdGlmaWNhdGlvbkVycm9yS2V5IGdldEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25FcnJvcktleSgp
CisKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsIGdldEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY1Zpc3VhbCgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUgZ2V0
QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0xlZ2libGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSgpCiAKIEBpbnRlcmZh
Y2UgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKFdlYkNvcmVBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllclF1ZXVlTWFuYWdlbWVudFByaXZhdGUpCiAtICh2b2lkKXByZXJvbGxEZWNvZGVXaXRo
Q29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcykpYmxvY2s7CkBAIC0zMzIs
NyArMzU0LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICBVTlVTRURf
UEFSQU0oa2V5UGF0aCk7CiAgICAgQVNTRVJUKF9wYXJlbnQpOwogCi0gICAgaWYgKFtvYmplY3Qg
aXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0p
IHsKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOmdldEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyQ2xhc3MoKV0pIHsKICAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyPiBsYXllciA9IChBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqKW9iamVjdDsKICAg
ICAgICAgQVNTRVJUKF9sYXllcnMuY29udGFpbnMobGF5ZXIuZ2V0KCkpKTsKIApAQCAtMzUzLDcg
KzM3NSw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICB9IGVsc2UgaWYgKFtv
YmplY3QgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNs
YXNzKCldKSB7CisgICAgfSBlbHNlIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6Z2V0QVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKV0pIHsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9X
SVRIT1VUX0dVQVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRp
b1JlbmRlcmVyPiByZW5kZXJlciA9IChBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKilvYmpl
Y3Q7CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECkBAIC00NjQsNyAr
NDg2LDcgQEAgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHIKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMqIHBhcmVudCkKLSAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVh
bURhdGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKKyAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW2Fs
bG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCiAgICAgLCBtX2RlbGVnYXRl
KGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQ
YXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OmNyZWF0ZVdlYWtQdHIoKV0pKQogICAgICwgbV9l
cnJvckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoUGFyZW50OmNyZWF0ZVdlYWtQdHIoKV0pKQogICAgICwgbV9pc0FwcGVuZGlu
Z0dyb3VwKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpKQpAQCAtNDc2LDgg
KzQ5OCw4IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAjZW5kaWYKIHsKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwotCi0gICAgaWYgKCFbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHBy
ZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgCisgICAgaWYgKCFbZ2V0
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVj
dG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAg
ICAgICBDTU5vdGlmaWNhdGlvbkNlbnRlckFkZExpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVy
R2V0RGVmYXVsdExvY2FsQ2VudGVyKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQp
LCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlm
aWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0ciwgMCk7CiAgICAgCiAgICAgbV9kZWxlZ2F0
ZS5nZXQoKS5hYm9ydFNlbWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CkBAIC00
OTQsNyArNTE2LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQygpCiAgICAgZGVzdHJveVBhcnNlcigpOwogICAgIGRlc3Ryb3lSZW5kZXJl
cnMoKTsKIAotICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFz
cygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0
aENvbXBsZXRpb25IYW5kbGVyOildKQorICAgIGlmICghW2dldEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9s
bERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25D
ZW50ZXJSZW1vdmVMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENl
bnRlcigpLCB0aGlzLCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJD
b25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0cik7CiAKICAgICBpZiAo
bV9oYXNTZXNzaW9uU2VtYXBob3JlKQpAQCAtODg3LDcgKzkwOSw3IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291CiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+
IHJlbmRlcmVyOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAg
ICAgICBpZiAoIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpIHsKLSAgICAgICAg
ICAgIHJlbmRlcmVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU2FtcGxlQnVmZmVyQXVkaW9SZW5k
ZXJlckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICAgICAgcmVuZGVyZXIgPSBhZG9wdE5TKFth
bGxvY0FWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckluc3RhbmNlKCkgaW5pdF0pOwogICAgICAg
ICAgICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKICAgICAgICAgICAgIFtyZW5k
ZXJlciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpIHVzaW5nQmxvY2s6XnsKICAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC0x
MTI5LDcgKzExNTEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVl
U2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0CiAgICAgICAgIGlmIChtX21l
ZGlhU291cmNlICYmICFtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+aGFzQXZhaWxhYmxlVmlkZW9G
cmFtZSgpICYmICFzYW1wbGUtPmlzTm9uRGlzcGxheWluZygpKSB7CiAgICAgICAgICAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgImFkZGluZyBidWZmZXIgYXR0YWNobWVudCIpOwogCi0gICAg
ICAgICAgICBib29sIGhhdmVQcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyID0gW1BB
TDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRU
b1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOild
OworICAgICAgICAgICAgYm9vbCBoYXZlUHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxl
ciA9IFtnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9u
ZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHByZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6
KV07CiAKICAgICAgICAgICAgIGlmICghaGF2ZVByZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhh
bmRsZXIpIHsKICAgICAgICAgICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVDb3B5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCBhNDg1MjNjZjUxNzZiMzFm
MmFjYzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li43ZGFhMjU5NTJiY2JmNjc5YzUzNWQ0YjMyOTYwZTNk
M2MyMTBiMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNjMsNyAr
NjMsOSBAQAogI2ltcG9ydCAiVGhlbWVNYWMuaCIKICNlbmRpZgogCi0jaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
VlBsYXllckxheWVyKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5NiwxMiArMTk4LDEy
IEBAIHN0YXRpYyBOU1N0cmluZyAqdG9DQUZpbHRlclR5cGUoUGxhdGZvcm1DQUxheWVyOjpGaWx0
ZXJUeXBlIHR5cGUpCiAKIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQog
ewotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFz
cygpXSkKKyAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXllckNsYXNz
KCldKQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjsKIAogICAgIGlmIChb
bGF5ZXIgaXNLaW5kT2ZDbGFzczpvYmpjX2dldENsYXNzKCJXZWJWaWRlb0NvbnRhaW5lckxheWVy
IildCiAgICAgICAgICYmIGxheWVyLnN1YmxheWVycy5jb3VudCA9PSAxCi0gICAgICAgICYmIFts
YXllci5zdWJsYXllcnNbMF0gaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFz
cygpXSkKKyAgICAgICAgJiYgW2xheWVyLnN1YmxheWVyc1swXSBpc0tpbmRPZkNsYXNzOmdldEFW
UGxheWVyTGF5ZXJDbGFzcygpXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVyTGF5
ZXI7CiAKICAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkK
QEAgLTI2MSw3ICsyNjMsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVy
Q29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBsYXll
ckNsYXNzID0gW1dlYlRpbGVkQmFja2luZ0xheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgICAgICBsYXllckNsYXNzID0gUEFM
OjpnZXRBVlBsYXllckxheWVyQ2xhc3MoKTsKKyAgICAgICAgbGF5ZXJDbGFzcyA9IGdldEFWUGxh
eWVyTGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZUNvbnRl
bnRzUHJvdmlkZWRMYXllcjoKICAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FM
YXllckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycyBvciBXZWJHUFVMYXllcnMuCkBA
IC0zNTgsNyArMzYwLDcgQEAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyQ29j
b2E6OmNsb25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIGMKICAgICBuZXdMYXllci0+
dXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShjdXN0b21BcHBlYXJhbmNlKCkpOwogCiAgICAgaWYgKHR5
cGUgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcikgewotICAgICAgICBBU1NFUlQoW25ld0xheWVy
LT5wbGF0Zm9ybUxheWVyKCkgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFz
cygpXSk7CisgICAgICAgIEFTU0VSVChbbmV3TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBpc0tpbmRP
ZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSk7CiAKICAgICAgICAgQVZQbGF5ZXJMYXll
ciAqZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FMYXllckNv
Y29hJj4obmV3TGF5ZXIuZ2V0KCkpLmF2UGxheWVyTGF5ZXIoKTsKICAgICAgICAgQVZQbGF5ZXJM
YXllciAqc291cmNlUGxheWVyTGF5ZXIgPSBhdlBsYXllckxheWVyKCk7CkBAIC0xMjY5LDEyICsx
MjcxLDEyIEBAIEFWUGxheWVyTGF5ZXIgKlBsYXRmb3JtQ0FMYXllckNvY29hOjphdlBsYXllckxh
eWVyKCkgY29uc3QKICAgICBpZiAobGF5ZXJUeXBlKCkgIT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXll
cikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGlmIChbcGxhdGZvcm1MYXllcigpIGlzS2lu
ZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pCisgICAgaWYgKFtwbGF0Zm9y
bUxheWVyKCkgaXNLaW5kT2ZDbGFzczpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pCiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxBVlBsYXllckxheWVyICo+KHBsYXRmb3JtTGF5ZXIoKSk7CiAK
ICAgICBpZiAoW3BsYXRmb3JtTGF5ZXIoKSBpc0tpbmRPZkNsYXNzOm9iamNfZ2V0Q2xhc3MoIldl
YlZpZGVvQ29udGFpbmVyTGF5ZXIiKV0pIHsKICAgICAgICAgQVNTRVJUKFtwbGF0Zm9ybUxheWVy
KCkgc3VibGF5ZXJzXS5jb3VudCA9PSAxKTsKLSAgICAgICAgQVNTRVJUKFtbcGxhdGZvcm1MYXll
cigpIHN1YmxheWVyc11bMF0gaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFz
cygpXSk7CisgICAgICAgIEFTU0VSVChbW3BsYXRmb3JtTGF5ZXIoKSBzdWJsYXllcnNdWzBdIGlz
S2luZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCldKTsKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oW3BsYXRmb3JtTGF5ZXIoKSBzdWJsYXllcnNdWzBd
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA1MDUwNjY3NjA1NDgyODg5
MWM2YzM3YzA3NzFiNjBmMTU4ZjcxMTg3Li4zMWMyZDcxYjU4NGM2YzZmMmE4YjAxYzg1YWU3ZjBi
Y2QwMjM4OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCkBAIC0yMywxNyArMjMsMTkgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkhFVkNVdGlsaXRpZXNDb2NvYS5oIgorI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkhFVkNVdGlsaXRpZXNDb2NvYS5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAKLSNpbXBvcnQgIkZvdXJDQy5oIgotI2ltcG9ydCAiSEVWQ1V0aWxpdGllcy5oIgotI2ltcG9y
dCAiTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCisjaW5jbHVkZSAiRm91ckNDLmgiCisjaW5jbHVk
ZSAiSEVWQ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIgog
Ci0jaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5oIgotI2ltcG9ydCA8cGFsL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rLmg+CisjaW5jbHVkZSAiVmlkZW9Ub29sYm94U29mdExpbmsuaCIK
KworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCitTT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhB
bHBoYSwgTlNTdHJpbmcgKikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSwxMCArNDMs
MTAgQEAgYm9vbCB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKEhFVkNQYXJhbWV0ZXJTZXQmIHBhcmFt
ZXRlcnMsIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYKIHsKICAgICBDTVZpZGVvQ29kZWNUeXBlIGNv
ZGVjID0ga0NNVmlkZW9Db2RlY1R5cGVfSEVWQzsKICAgICBpZiAoaGFzQWxwaGFDaGFubmVsKSB7
Ci0gICAgICAgIGlmICghUEFMOjpBVkZvdW5kYXRpb25MaWJyYXJ5KCkgfHwgIVBBTDo6Y2FuTG9h
ZF9BVkZvdW5kYXRpb25fQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSkKKyAgICAgICAg
aWYgKCFBVkZvdW5kYXRpb25MaWJyYXJ5KCkgfHwgIWNhbkxvYWRBVlZpZGVvQ29kZWNUeXBlSEVW
Q1dpdGhBbHBoYSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8g
Y29kZWNDb2RlID0gRm91ckNDOjpmcm9tU3RyaW5nKEFWVmlkZW9Db2RlY1R5cGVIRVZDV2l0aEFs
cGhhKTsKKyAgICAgICAgYXV0byBjb2RlY0NvZGUgPSBGb3VyQ0M6OmZyb21TdHJpbmcoZ2V0QVZW
aWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSk7CiAgICAgICAgIGlmICghY29kZWNDb2RlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCmluZGV4IDRi
Mzc4ZmExN2U2ZWY1NWRmZmVkYzU4MDE0ZDdmM2ZlZWU2MjVjYTAuLjVhMGZlNzFhZWU5YzRmZGFj
YTc4YzMwMmNkYTcyODM3YmRlMWIwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCkBAIC0zMiwz
NiArMzIsMjIgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNwZWVjaFN5bnRoZXNpcy5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9u
KQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hTeW50aGVzaXplcikKK1NP
RlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlKQorU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hTeW50aGVzaXNWb2ljZSkKIAotc3RhdGljIGZs
b2F0IGdldEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGUoKQotewotICAgIHN0YXRp
YyBmbG9hdCB2YWx1ZTsKLSAgICBzdGF0aWMgdm9pZCogc3ltYm9sOwotICAgIGlmICghc3ltYm9s
KSB7Ci0gICAgICAgIHZvaWQqIHN5bWJvbCA9IGRsc3ltKFBBTDo6QVZGb3VuZGF0aW9uTGlicmFy
eSgpLCAiQVZTcGVlY2hVdHRlcmFuY2VEZWZhdWx0U3BlZWNoUmF0ZSIpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uoc3ltYm9sLCAiJXMiLCBkbGVycm9yKCkpOwotICAgICAg
ICB2YWx1ZSA9ICpzdGF0aWNfY2FzdDxmbG9hdCBjb25zdCAqPihzeW1ib2wpOwotICAgIH0KLSAg
ICByZXR1cm4gdmFsdWU7Ci19Ci0KLXN0YXRpYyBmbG9hdCBnZXRBVlNwZWVjaFV0dGVyYW5jZU1h
eGltdW1TcGVlY2hSYXRlKCkKLXsKLSAgICBzdGF0aWMgZmxvYXQgdmFsdWU7Ci0gICAgc3RhdGlj
IHZvaWQqIHN5bWJvbDsKLSAgICBpZiAoIXN5bWJvbCkgewotICAgICAgICB2b2lkKiBzeW1ib2wg
PSBkbHN5bShQQUw6OkFWRm91bmRhdGlvbkxpYnJhcnkoKSwgIkFWU3BlZWNoVXR0ZXJhbmNlTWF4
aW11bVNwZWVjaFJhdGUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHN5
bWJvbCwgIiVzIiwgZGxlcnJvcigpKTsKLSAgICAgICAgdmFsdWUgPSAqc3RhdGljX2Nhc3Q8Zmxv
YXQgY29uc3QgKj4oc3ltYm9sKTsKLSAgICB9Ci0gICAgcmV0dXJuIHZhbHVlOwotfQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VEZWZhdWx0U3BlZWNo
UmF0ZSwgZmxvYXQpCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0
dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIAogI2RlZmluZSBBVlNwZWVjaFV0dGVy
YW5jZURlZmF1bHRTcGVlY2hSYXRlIGdldEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJh
dGUoKQogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlIGdldEFWU3Bl
ZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUoKQogCisjZGVmaW5lIEFWU3BlZWNoVXR0ZXJh
bmNlQ2xhc3MgZ2V0QVZTcGVlY2hVdHRlcmFuY2VDbGFzcygpCisjZGVmaW5lIEFWU3BlZWNoU3lu
dGhlc2lzVm9pY2VDbGFzcyBnZXRBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlQ2xhc3MoKQorCiBAaW50
ZXJmYWNlIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgOiBOU09iamVjdDxBVlNwZWVjaFN5bnRo
ZXNpemVyRGVsZWdhdGU+CiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ciogbV9zeW50aGVzaXplck9iamVjdDsKQEAgLTExMCw3ICs5Niw3IEBAIHN0YXRpYyBmbG9hdCBn
ZXRBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlKCkKIAogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogICAgIGlmICghbV9zeW50aGVzaXplcikgewotICAgICAgICBtX3N5
bnRoZXNpemVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU3BlZWNoU3ludGhlc2l6ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICAgICAgbV9zeW50aGVzaXplciA9IGFkb3B0TlMoW2FsbG9jQVZTcGVl
Y2hTeW50aGVzaXplckluc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICBbbV9zeW50aGVzaXplciBz
ZXREZWxlZ2F0ZTpzZWxmXTsKICAgICB9CiAKQEAgLTEyMCw3ICsxMDYsNyBAQCBzdGF0aWMgZmxv
YXQgZ2V0QVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSgpCiAgICAgTlNTdHJpbmcg
KnZvaWNlTGFuZ3VhZ2UgPSBuaWw7CiAgICAgaWYgKCF1dHRlcmFuY2VWb2ljZSkgewogICAgICAg
ICBpZiAodXR0ZXJhbmNlLT5sYW5nKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgdm9pY2VMYW5n
dWFnZSA9IFtQQUw6OmdldEFWU3BlZWNoU3ludGhlc2lzVm9pY2VDbGFzcygpIGN1cnJlbnRMYW5n
dWFnZUNvZGVdOworICAgICAgICAgICAgdm9pY2VMYW5ndWFnZSA9IFtBVlNwZWVjaFN5bnRoZXNp
c1ZvaWNlQ2xhc3MgY3VycmVudExhbmd1YWdlQ29kZV07CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHZvaWNlTGFuZ3VhZ2UgPSB1dHRlcmFuY2UtPmxhbmcoKTsKICAgICB9IGVsc2UKQEAgLTEy
OCw5ICsxMTQsOSBAQCBzdGF0aWMgZmxvYXQgZ2V0QVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3Bl
ZWNoUmF0ZSgpCiAKICAgICBBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlICphdlZvaWNlID0gbmlsOwog
ICAgIGlmICh2b2ljZUxhbmd1YWdlKQotICAgICAgICBhdlZvaWNlID0gW1BBTDo6Z2V0QVZTcGVl
Y2hTeW50aGVzaXNWb2ljZUNsYXNzKCkgdm9pY2VXaXRoTGFuZ3VhZ2U6dm9pY2VMYW5ndWFnZV07
CisgICAgICAgIGF2Vm9pY2UgPSBbQVZTcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzIHZvaWNlV2l0
aExhbmd1YWdlOnZvaWNlTGFuZ3VhZ2VdOwogCi0gICAgQVZTcGVlY2hVdHRlcmFuY2UgKmF2VXR0
ZXJhbmNlID0gW1BBTDo6Z2V0QVZTcGVlY2hVdHRlcmFuY2VDbGFzcygpIHNwZWVjaFV0dGVyYW5j
ZVdpdGhTdHJpbmc6dXR0ZXJhbmNlLT50ZXh0KCldOworICAgIEFWU3BlZWNoVXR0ZXJhbmNlICph
dlV0dGVyYW5jZSA9IFtBVlNwZWVjaFV0dGVyYW5jZUNsYXNzIHNwZWVjaFV0dGVyYW5jZVdpdGhT
dHJpbmc6dXR0ZXJhbmNlLT50ZXh0KCldOwogCiAgICAgW2F2VXR0ZXJhbmNlIHNldFJhdGU6W3Nl
bGYgbWFwU3BlZWNoUmF0ZVRvUGxhdGZvcm1SYXRlOnV0dGVyYW5jZS0+cmF0ZSgpXV07CiAgICAg
W2F2VXR0ZXJhbmNlIHNldFZvbHVtZTp1dHRlcmFuY2UtPnZvbHVtZSgpXTsKQEAgLTI1OCw3ICsy
NDQsNyBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcigpCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxp
c3QoKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGZvciAoQVZTcGVl
Y2hTeW50aGVzaXNWb2ljZSAqdm9pY2UgaW4gW1BBTDo6Z2V0QVZTcGVlY2hTeW50aGVzaXNWb2lj
ZUNsYXNzKCkgc3BlZWNoVm9pY2VzXSkgeworICAgIGZvciAoQVZTcGVlY2hTeW50aGVzaXNWb2lj
ZSAqdm9pY2UgaW4gW0FWU3BlZWNoU3ludGhlc2lzVm9pY2VDbGFzcyBzcGVlY2hWb2ljZXNdKSB7
CiAgICAgICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IFt2b2ljZSBsYW5ndWFnZV07CiAgICAgICAg
IGJvb2wgaXNEZWZhdWx0ID0gdHJ1ZTsKICAgICAgICAgTlNTdHJpbmcgKnZvaWNlVVJJID0gW3Zv
aWNlIGlkZW50aWZpZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDAzY2UyMGM5MDI3
MzM3OGY0ZTg2MmE4MmVkZjlkMThlNmMxMjQ0MmIuLjA4NzI0ZWI2NmM2OWI0OGJkZmVjMGQyMzZk
NzIwYWM4ZGVmZGM1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9W
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTQzLDYgKzQzLDcg
QEAKICNpbXBvcnQgPFVJS2l0L1VJV2luZG93Lmg+CiAjaW1wb3J0IDxvYmpjL21lc3NhZ2UuaD4K
ICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTEsOSArNTIs
MTQgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKy8vIFNvZnQtbGlua2luZyBoZWFk
ZXJzIG11c3QgYmUgaW5jbHVkZWQgbGFzdCBzaW5jZSB0aGV5ICNkZWZpbmUgZnVuY3Rpb25zLCBj
b25zdGFudHMsIGV0Yy4KICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2lt
cG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvaW9z
L1VJS2l0U29mdExpbmsuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCitT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9MSU5LX0NP
TlNUQU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlS
ZXNpemVBc3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9u
LCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikKIAogU09G
VExJTktfQVZLSVRfRlJBTUVXT1JLKCkKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVktpdCwg
QVZQaWN0dXJlSW5QaWN0dXJlQ29udHJvbGxlcikKQEAgLTIwNCw3ICsyMTAsNyBAQCBzdGF0aWMg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZl
cnRUb0V4aXRGdWxsU2NyZQogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKHNlbGYp
IHsKICAgICAgICAgW3NlbGYgc2V0TWFza3NUb0JvdW5kczpZRVNdOwotICAgICAgICBfdmlkZW9H
cmF2aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICAgICAgX3ZpZGVv
R3Jhdml0eSA9IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKTsKICAgICB9CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yNjQsMTMgKzI3MCwxMyBAQCBzdGF0aWMgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRG
dWxsU2NyZQogICAgIEZsb2F0UmVjdCB0YXJnZXRWaWRlb0ZyYW1lOwogICAgIGZsb2F0IHZpZGVv
QXNwZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlkZW9EaW1l
bnNpb25zLmhlaWdodDsKICAgICAKLSAgICBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUg
aXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgeworICAgIGlmIChbZ2V0QVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZSgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0p
IHsKICAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWU7
CiAgICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsKLSAgICB9IGVsc2UgaWYg
KFtBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0IGlzRXF1YWxUb1N0cmluZzpzZWxmLnZp
ZGVvR3Jhdml0eV0pIHsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0KCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgewogICAgICAg
ICBzb3VyY2VWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0
KHZpZGVvQXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgICAgICB0
YXJnZXRWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZp
ZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKLSAgICB9IGVsc2UgaWYgKFtBVkxheWVyVmlk
ZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZp
dHldKSB7CisgICAgfSBlbHNlIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dEZpbGwoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKSB7CiAgICAgICAgIHNv
dXJjZVZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KHZp
ZGVvQXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgICAgICBzZWxm
Lm1vZGVsVmlkZW9MYXllckZyYW1lID0gQ0dSZWN0TWFrZSgwLCAwLCBzb3VyY2VWaWRlb0ZyYW1l
LndpZHRoKCksIHNvdXJjZVZpZGVvRnJhbWUuaGVpZ2h0KCkpOwogICAgICAgICBpZiAoYXV0byog
bW9kZWwgPSBfZnVsbHNjcmVlbkludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKQEAg
LTMyMiw3ICszMjgsNyBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4
aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogI2lmIFBMQVRGT1JNKElP
U01BQykKICAgICAvLyBGSVhNRTxyZGFyOi8vNDYwMTEyMzA+OiByZW1vdmUgdGhpcyAjaWYgb25j
ZSB0aGlzIHJhZGFyIGxhbmRzLgogICAgIGlmICghdmlkZW9HcmF2aXR5KQotICAgICAgICB2aWRl
b0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgICAgICB2aWRl
b0dyYXZpdHkgPSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCk7CiAjZW5kaWYK
IAogICAgIF92aWRlb0dyYXZpdHkgPSB2aWRlb0dyYXZpdHk7CkBAIC0zMzEsMTEgKzMzNywxMSBA
QCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVh
c29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSA9IFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAodmlkZW9HcmF2
aXR5ID09IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUpCisgICAgaWYgKHZpZGVvR3Jhdml0eSA9
PSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplKCkpCiAgICAgICAgIGdyYXZpdHkgPSBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemU7Ci0gICAgaWYgKHZpZGVv
R3Jhdml0eSA9PSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQorICAgIGlmICh2aWRl
b0dyYXZpdHkgPT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpKQogICAgICAg
ICBncmF2aXR5ID0gV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0OwotICAgIGVsc2UgaWYgKHZpZGVvR3Jhdml0eSA9PSBBVkxheWVyVmlkZW9HcmF2aXR5
UmVzaXplQXNwZWN0RmlsbCkKKyAgICBlbHNlIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAg
ZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTM1Niw5ICszNjIsOSBAQCBz
dGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29u
IGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogICAgIAogICAgIGZsb2F0IHZpZGVvQXNwZWN0UmF0aW8g
PSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlkZW9EaW1lbnNpb25zLmhlaWdo
dDsKIAotICAgIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBpc0VxdWFsVG9T
dHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCiAgICAg
ICAgIHJldHVybiBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3Bl
Y3RSYXRpbywgc2VsZi5ib3VuZHMpOwotICAgIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGwgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAgICBpZiAo
W2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3RyaW5n
OnNlbGYudmlkZW9HcmF2aXR5XSkKICAgICAgICAgcmV0dXJuIHNtYWxsZXN0UmVjdFdpdGhBc3Bl
Y3RSYXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOwogCiAgICAg
cmV0dXJuIHNlbGYuYm91bmRzOwpAQCAtNDU0LDcgKzQ2MCw3IEBAIHN0YXRpYyB2b2lkIFdlYkFW
UGxheWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVy
TGF5ZXJWCiAKICAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXll
ckxheWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAgICAgV2ViQVZQbGF5ZXJM
YXllciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3IGxheWVy
XTsKLSAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OkFWTGF5ZXJWaWRlb0dyYXZpdHlS
ZXNpemVBc3BlY3RdOworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6Z2V0QVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0Vmlk
ZW9TdWJsYXllcjpwbGF5ZXJMYXllci52aWRlb1N1YmxheWVyXTsKICAgICBbcGlwUGxheWVyTGF5
ZXIgc2V0VmlkZW9EaW1lbnNpb25zOnBsYXllckxheWVyLnZpZGVvRGltZW5zaW9uc107CiAgICAg
W3BpcFBsYXllckxheWVyIHNldFZpZGVvR3Jhdml0eTpwbGF5ZXJMYXllci52aWRlb0dyYXZpdHld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCmluZGV4IGMyOTUzY2EwM2U4MDVj
ZmRjMzA1MGNmNjBhMzVkODRjZmZjOTU4NzkuLmU5OTdiMzZhN2I0YTUwYTE2MzNhYjBhZWFhZjZh
YTFiNzhmNWRiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KQEAgLTM4
LDkgKzM4LDE0IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9C
YXNlNjQuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Cit0
eXBlZGVmIEFWTWV0YWRhdGFJdGVtIEFWTWV0YWRhdGFJdGVtVHlwZTsKK1NPRlRfTElOS19GUkFN
RVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZNZXRhZGF0YUl0ZW0pCisjZGVmaW5lIEFWTWV0YWRhdGFJdGVtIGdldEFWTWV0YWRhdGFJ
dGVtQ2xhc3MoKQorCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNyArNTMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEYXRhSW5Db250
ZXh0KE5TRGF0YSAqLCBKU0NvbnRleHQgKik7CiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhB
cnJheUluQ29udGV4dChOU0FycmF5ICosIEpTQ29udGV4dCAqKTsKIHN0YXRpYyBKU1ZhbHVlICpq
c1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5ICosIEpTQ29udGV4dCAq
KTsKLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFW
TWV0YWRhdGFJdGVtICosIEpTQ29udGV4dCAqKTsKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0
aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRleHQg
Kik7CiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCwgSlNDb250
ZXh0ICopOwogI2VuZGlmCiAKQEAgLTEzMSw3ICsxMzYsNyBAQCBzdGF0aWMgSlNWYWx1ZSAqanNW
YWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCB2YWx1ZSwgSlNDb250ZXh0ICpjb250ZXh0KQogICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAgIHJldHVy
biBqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwogCi0gICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpXSkKKyAgICBp
ZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W0FWTWV0YWRhdGFJdGVtIGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiBqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KHZhbHVlLCBjb250ZXh0
KTsKIAogICAgIHJldHVybiBuaWw7CkBAIC0xOTQsNyArMTk5LDcgQEAgc3RhdGljIEpTVmFsdWUg
KmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnks
IEpTQ29udGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1
ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFkYXRhSXRlbSAqaXRlbSwgSlNDb250
ZXh0ICpjb250ZXh0KQorc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1J
bkNvbnRleHQoQVZNZXRhZGF0YUl0ZW1UeXBlICppdGVtLCBKU0NvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9u
YXJ5IGRpY3Rpb25hcnldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggNzVkNDY1Njc4Njk4NDFkYzA0Y2Q5ZGFkMzlhZjkx
NThiZDcxNzI4NC4uMmI3ODRhNGRlYjZhMTk4YmQ1ODMwMDZlNTM5ZGZmNTRlZGJiMWYxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQpAQCAtMzcsMTUgKzM3LDUyIEBACiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rLmg+Cit0eXBlZGVmIEFWQXNzZXRXcml0ZXIgQVZBc3NldFdyaXRl
clR5cGU7Cit0eXBlZGVmIEFWQXNzZXRXcml0ZXJJbnB1dCBBVkFzc2V0V3JpdGVySW5wdXRUeXBl
OworCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldFdyaXRlcikKK1NPRlRfTElOS19DTEFTUyhB
VkZvdW5kYXRpb24sIEFWQXNzZXRXcml0ZXJJbnB1dCkKKworU09GVF9MSU5LX0NPTlNUQU5UKEFW
Rm91bmRhdGlvbiwgQVZGaWxlVHlwZU1QRUc0LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjSDI2NCwgTlNTdHJpbmcgKikKK1NP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVmlkZW9XaWR0aEtleSwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVmlkZW9IZWlnaHRLZXksIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZp
ZGVvLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRp
YVR5cGVBdWRpbywgTlNTdHJpbmcgKikKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5LCBOU1N0cmluZyAqKQorU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSwgTlNTdHJp
bmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVmlkZW9BdmVyYWdlQml0
UmF0ZUtleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFW
VmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvbXBy
ZXNzaW9uUHJvcGVydGllc0tleSwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVkZpbGVUeXBlTVBF
RzQgZ2V0QVZGaWxlVHlwZU1QRUc0KCkKKyNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1l
ZGlhVHlwZUF1ZGlvKCkKKyNkZWZpbmUgQVZNZWRpYVR5cGVWaWRlbyBnZXRBVk1lZGlhVHlwZVZp
ZGVvKCkKKyNkZWZpbmUgQVZWaWRlb0NvZGVjS2V5IGdldEFWVmlkZW9Db2RlY0tleSgpCisjZGVm
aW5lIEFWVmlkZW9Db2RlY0gyNjQgZ2V0QVZWaWRlb0NvZGVjSDI2NCgpCisjZGVmaW5lIEFWVmlk
ZW9XaWR0aEtleSBnZXRBVlZpZGVvV2lkdGhLZXkoKQorI2RlZmluZSBBVlZpZGVvSGVpZ2h0S2V5
IGdldEFWVmlkZW9IZWlnaHRLZXkoKQorCisjZGVmaW5lIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZy
YW1lUmF0ZUtleSBnZXRBVlZpZGVvRXhwZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkoKQorI2RlZmlu
ZSBBVlZpZGVvUHJvZmlsZUxldmVsS2V5IGdldEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkoKQorI2Rl
ZmluZSBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgZ2V0QVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5
KCkKKyNkZWZpbmUgQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXkgZ2V0QVZWaWRlb01heEtl
eUZyYW1lSW50ZXJ2YWxLZXkoKQorI2RlZmluZSBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5B
dXRvTGV2ZWwgZ2V0QVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsKCkKKyNkZWZp
bmUgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSBnZXRBVlZpZGVvQ29tcHJlc3Npb25Q
cm9wZXJ0aWVzS2V5KCkKKworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlv
biwgQVZFbmNvZGVyQml0UmF0ZUtleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTChBVkZvdW5kYXRpb24sIEFWRm9ybWF0SURLZXksIE5TU3RyaW5nICopCitTT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVk51bWJlck9mQ2hhbm5lbHNLZXks
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBB
VlNhbXBsZVJhdGVLZXksIE5TU3RyaW5nICopCiAKLSN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5
CiAjZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhG
YWxsYmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtleQogI2RlZmluZSBBVkZvcm1hdElES2V5IGdl
dEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tl
eQogI2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5
V2l0aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKICNkZWZpbmUgQVZTYW1wbGVS
YXRlS2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU0LDggKzkxLDggQEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAogc3RhdGljIE5T
U3RyaW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKIHsKLSAgICBpZiAoUEFMOjpj
YW5Mb2FkX0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpOworICAgIGlmIChjYW5Mb2FkQVZGb3Jt
YXRJREtleSgpKQorICAgICAgICByZXR1cm4gZ2V0QVZGb3JtYXRJREtleSgpOwogCiAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkZvcm1hdElES2V5Iik7CiAg
ICAgcmV0dXJuIEAiQVZGb3JtYXRJREtleSI7CkBAIC02Myw4ICsxMDAsOCBAQCBzdGF0aWMgTlNT
dHJpbmcgKmdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQogCiBzdGF0aWMgTlNTdHJpbmcg
KmdldEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAgaWYgKFBBTDo6
Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJl
dHVybiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7CisgICAg
aWYgKGNhbkxvYWRBVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKKyAgICAgICAgcmV0dXJuIGdldEFW
TnVtYmVyT2ZDaGFubmVsc0tleSgpOwogCiAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJG
YWlsZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKICAgICByZXR1cm4gQCJBVk51
bWJlck9mQ2hhbm5lbHNLZXkiOwpAQCAtNzIsOCArMTA5LDggQEAgc3RhdGljIE5TU3RyaW5nICpn
ZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQogCiBzdGF0aWMgTlNTdHJpbmcg
KmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9h
ZF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6Omdl
dF9BVkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisgICAgaWYgKGNhbkxvYWRBVlNhbXBs
ZVJhdGVLZXkoKSkKKyAgICAgICAgcmV0dXJuIGdldEFWU2FtcGxlUmF0ZUtleSgpOwogCiAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXki
KTsKICAgICByZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOwpAQCAtODEsOCArMTE4LDggQEAgc3Rh
dGljIE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQogCiBzdGF0aWMg
TlNTdHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQogewotICAgIGlm
IChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKSkKLSAgICAg
ICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7Cisg
ICAgaWYgKGNhbkxvYWRBVkVuY29kZXJCaXRSYXRlS2V5KCkpCisgICAgICAgIHJldHVybiBnZXRB
VkVuY29kZXJCaXRSYXRlS2V5KCk7CiAKICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZh
aWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXkiKTsKICAgICByZXR1cm4gQCJBVkVuY29k
ZXJCaXRSYXRlS2V5IjsKQEAgLTk3LDcgKzEzNCw3IEBAIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShjb25zdCBNZWRp
CiAgICAgTlNVUkwgKm91dHB1dFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF07CiAg
ICAgU3RyaW5nIGZpbGVQYXRoID0gW3BhdGggVVRGOFN0cmluZ107CiAgICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7Ci0gICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
QXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoVVJMOm91dHB1dFVSTCBmaWxlVHlwZTpBVkZp
bGVUeXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CisgICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRv
cHROUyhbYWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwg
ZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwogICAgIGlmIChlcnJvcikg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0
V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3Iu
Y29kZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTYwLDcgKzE5Nyw3IEBAIGJvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVz
c2lvblByb3BlcnRpZXMKICAgICB9OwogICAgIAotICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBl
OkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3VyY2VGb3Jt
YXRIaW50Om5pbF0pOworICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW2FsbG9jQVZBc3NldFdy
aXRlcklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91
dHB1dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKICAgICBb
bV92aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOwogICAgIAog
ICAgIGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKQEAg
LTE4NCw3ICsyMjEsNyBAQCBib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRp
b0lucHV0KCkKICAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1MCkKICAgICB9OwogCi0g
ICAgbV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dElu
c3RhbmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5n
czphdWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgbV9hdWRpb0lucHV0
ID0gYWRvcHROUyhbYWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVk
aWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6YXVkaW9TZXR0aW5ncyBzb3Vy
Y2VGb3JtYXRIaW50Om5pbF0pOwogICAgIFttX2F1ZGlvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0
YUluUmVhbFRpbWU6dHJ1ZV07CiAgICAgCiAgICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6
bV9hdWRpb0lucHV0LmdldCgpXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IDk5YmFjYmUyNDIz
OTliYTQ2NDU5YzNiZmRhOGM5YTBkYWZmMThlYTAuLmFjMzQ0MDBkNTI0MGExMDM2ZWY0MjBhZjEz
Njk1NmUwZmQyNmZlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRl
ICJSZWFsdGltZU1lZGlhU291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaAppbmRleCAyMDMzYzc2ZGI2NWZhMzllNmFkY2EzOWRk
ODJjNGQwOTJjNzU4NmZmLi5mOTlmZjBhMzhjNzQ0Zjc2MTNkNzlhZDlhNWFlMjQzZGEwMTlmZTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1By
ZXNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJl
c2V0LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNp
bmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4
IDQ2MDUwZDkzODM0ZjNhOTM3ZmVlMzc1NTczN2RlYWE0ZTJjOWMwYTUuLjA0MDZkNmM5YjUzMWQ1
Mjk3YTg5MzhiMjc0ZmIzOGE2MDNmMDk0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0yMywxNyArMjMsMjAgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgiCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQog
Ci0jaW1wb3J0ICJBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UuaCIKLSNpbXBvcnQgIlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vz
c2lvbi5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIK
KyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYv
U29mdExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpbXBvcnQgPHBhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5k
YXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbikKKyNk
ZWZpbmUgQVZBdWRpb1Nlc3Npb24gZ2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpCiAKIHZvaWQqIEF2
YWlsYWJsZUlucHV0c0NvbnRleHQgPSAmQXZhaWxhYmxlSW5wdXRzQ29udGV4dDsKIApAQCAtMTI0
LDEzICsxMjcsMTMgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpy
ZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgICAgIG1fbGlzdGVuZXIgPSBhZG9wdE5T
KFtbV2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBhbGxvY10gaW5pdFdp
dGhDYWxsYmFjazpbdGhpc10gewogICAgICAgICAgICAgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmlj
ZXMoKTsKICAgICAgICAgfV0pOwotICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFz
cygpIHNoYXJlZEluc3RhbmNlXSBhZGRPYnNlcnZlcjptX2xpc3RlbmVyLmdldCgpIGZvcktleVBh
dGg6QCJhdmFpbGFibGVJbnB1dHMiIG9wdGlvbnM6MCBjb250ZXh0OkF2YWlsYWJsZUlucHV0c0Nv
bnRleHRdOworICAgICAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBhZGRPYnNl
cnZlcjptX2xpc3RlbmVyLmdldCgpIGZvcktleVBhdGg6QCJhdmFpbGFibGVJbnB1dHMiIG9wdGlv
bnM6MCBjb250ZXh0OkF2YWlsYWJsZUlucHV0c0NvbnRleHRdOwogICAgIH0KIAogICAgIFZlY3Rv
cjxBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+IG5ld0F1ZGlvRGV2aWNlczsKICAgICBWZWN0
b3I8Q2FwdHVyZURldmljZT4gbmV3RGV2aWNlczsKIAotICAgIGZvciAoQVZBdWRpb1Nlc3Npb25Q
b3J0RGVzY3JpcHRpb24gKnBvcnREZXNjcmlwdGlvbiBpbiBbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lv
bkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdLmF2YWlsYWJsZUlucHV0cykgeworICAgIGZvciAoQVZB
dWRpb1Nlc3Npb25Qb3J0RGVzY3JpcHRpb24gKnBvcnREZXNjcmlwdGlvbiBpbiBbQVZBdWRpb1Nl
c3Npb24gc2hhcmVkSW5zdGFuY2VdLmF2YWlsYWJsZUlucHV0cykgewogICAgICAgICBhdXRvIGF1
ZGlvRGV2aWNlID0gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlOjpjcmVhdGUocG9ydERlc2Ny
aXB0aW9uKTsKICAgICAgICAgbmV3RGV2aWNlcy5hcHBlbmQoYXVkaW9EZXZpY2UpOwogICAgICAg
ICBuZXdBdWRpb0RldmljZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9EZXZpY2UpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9z
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KaW5kZXggNmZiM2RhZDM5YzJkOWU5NzhkYzUy
MWI3YmI4M2Y2OTlhOTMyNTNmZi4uMmVkODMyNDI3NDEyMjQ0ZjJkNmYzODYwNGMyMDkzYTQxYzU0
M2E1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9z
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KQEAgLTMxLDgg
KzMxLDIxIEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZB
dWRpb1Nlc3Npb24uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5r
Lmg+Cit0eXBlZGVmIEFWQXVkaW9TZXNzaW9uIEFWQXVkaW9TZXNzaW9uVHlwZTsKKworU09GVF9M
SU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9u
LCBBVkF1ZGlvU2Vzc2lvbikKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZB
dWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJ
TktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVL
ZXksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlv
U2Vzc2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCisK
KyNkZWZpbmUgQVZBdWRpb1Nlc3Npb24gZ2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpCisjZGVmaW5l
IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIGdldEFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1
cHRpb25UeXBlS2V5IGdldEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleSgpCisjZGVm
aW5lIEFWQXVkaW9TZXNzaW9uTWVkaWFTZXJ2aWNlc1dlcmVSZXNldE5vdGlmaWNhdGlvbiBnZXRB
VkF1ZGlvU2Vzc2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmljYXRpb24oKQogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTUsNyArNjgsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKIAogICAgIE5TTm90aWZpY2F0aW9u
Q2VudGVyKiBjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0g
ICAgQVZBdWRpb1Nlc3Npb24qIHNlc3Npb24gPSBbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNz
KCkgc2hhcmVkSW5zdGFuY2VdOworICAgIEFWQXVkaW9TZXNzaW9uVHlwZSogc2Vzc2lvbiA9IFtB
VkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV07CiAKICAgICBbY2VudGVyIGFkZE9ic2VydmVy
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGhhbmRsZUludGVycnVwdGlvbjopIG5hbWU6QVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOwogICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lvbk1lZGlhU2Vy
dmljZXNXZXJlUmVzZXQ6KSBuYW1lOkFWQXVkaW9TZXNzaW9uTWVkaWFTZXJ2aWNlc1dlcmVSZXNl
dE5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CkBAIC04Miw3ICs5NSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiAgICAgaWYgKFtbbm90aWZpY2F0aW9uLnVzZXJJbmZvIHZhbHVl
Rm9yS2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gaW50VmFsdWVdID09IEFW
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUVuZGVkKSB7CiAgICAgICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOwotICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJl
ZEluc3RhbmNlXSBzZXRBY3RpdmU6WUVTIGVycm9yOiZlcnJvcl07CisgICAgICAgIFtbQVZBdWRp
b1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHNldEFjdGl2ZTpZRVMgZXJyb3I6JmVycm9yXTsKIAog
I2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgaWYgKGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQppbmRleCBhOWVhM2UxYjNlY2FhM2Y5MzkxNmU2ZDE1NzQ2MmQyMzEzZTdj
ZDUyLi4xMDYyNmFhZWY4YWEwMjMzMjEzYTZmNTNmOWFhYjk5N2E3MDU1MzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtNDEsOCArNDEsMjcgQEAKICNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQg
PHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgordHlwZWRlZiBBVkNhcHR1cmVEZXZp
Y2UgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZjsKK3R5cGVkZWYgQVZDYXB0dXJlU2Vzc2lvbiBBVkNh
cHR1cmVTZXNzaW9uVHlwZTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5k
YXRpb24pCisKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZSkK
K1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb24pCisKK1NPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICop
CitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZU11eGVkLCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRl
bywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVy
ZURldmljZVdhc0Nvbm5lY3RlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlm
aWNhdGlvbiwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVk
aWFUeXBlQXVkaW8oKQorI2RlZmluZSBBVk1lZGlhVHlwZU11eGVkIGdldEFWTWVkaWFUeXBlTXV4
ZWQoKQorI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8oKQorI2Rl
ZmluZSBBVkNhcHR1cmVEZXZpY2VXYXNDb25uZWN0ZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJl
RGV2aWNlV2FzQ29ubmVjdGVkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDYXB0dXJlRGV2aWNl
V2FzRGlzY29ubmVjdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5l
Y3RlZE5vdGlmaWNhdGlvbigpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC04MCw3
ICs5OSw3IEBAIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgQVZDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Y2FwdHVyZURldmljZXMoKQogICAgIHJldHVybiBjYXB0dXJlRGV2aWNlc0ludGVybmFs
KCk7CiB9CiAKLWlubGluZSBzdGF0aWMgYm9vbCBkZXZpY2VJc0F2YWlsYWJsZShBVkNhcHR1cmVE
ZXZpY2UgKmRldmljZSkKK2lubGluZSBzdGF0aWMgYm9vbCBkZXZpY2VJc0F2YWlsYWJsZShBVkNh
cHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UpCiB7CiAgICAgaWYgKCFbZGV2aWNlIGlzQ29ubmVj
dGVkXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTUsMjAgKzExNCwyMCBAQCBpbmxpbmUg
c3RhdGljIGJvb2wgZGV2aWNlSXNBdmFpbGFibGUoQVZDYXB0dXJlRGV2aWNlICpkZXZpY2UpCiAK
IHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dXBkYXRlQ2FjaGVkQVZDYXB0dXJlRGV2aWNl
cygpCiB7Ci0gICAgYXV0byogY3VycmVudERldmljZXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZp
Y2VDbGFzcygpIGRldmljZXNdOworICAgIGF1dG8qIGN1cnJlbnREZXZpY2VzID0gW2dldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgZGV2aWNlc107CiAgICAgYXV0byBjaGFuZ2VkRGV2aWNlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoQVZDYXB0dXJl
RGV2aWNlICpjYWNoZWREZXZpY2UgaW4gbV9hdkNhcHR1cmVEZXZpY2VzLmdldCgpKSB7CisgICAg
Zm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpjYWNoZWREZXZpY2UgaW4gbV9hdkNhcHR1cmVE
ZXZpY2VzLmdldCgpKSB7CiAgICAgICAgIGlmICghW2N1cnJlbnREZXZpY2VzIGNvbnRhaW5zT2Jq
ZWN0OmNhY2hlZERldmljZV0pCiAgICAgICAgICAgICBbY2hhbmdlZERldmljZXMgYWRkT2JqZWN0
OmNhY2hlZERldmljZV07CiAgICAgfQogCiAgICAgaWYgKFtjaGFuZ2VkRGV2aWNlcyBjb3VudF0p
IHsKLSAgICAgICAgZm9yIChBVkNhcHR1cmVEZXZpY2UgKmRldmljZSBpbiBjaGFuZ2VkRGV2aWNl
cy5nZXQoKSkKKyAgICAgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgaW4g
Y2hhbmdlZERldmljZXMuZ2V0KCkpCiAgICAgICAgICAgICBbZGV2aWNlIHJlbW92ZU9ic2VydmVy
Om1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJzdXNwZW5kZWQiXTsKICAgICAgICAg
W21fYXZDYXB0dXJlRGV2aWNlcyByZW1vdmVPYmplY3RzSW5BcnJheTpjaGFuZ2VkRGV2aWNlcy5n
ZXQoKV07CiAgICAgfQogCi0gICAgZm9yIChBVkNhcHR1cmVEZXZpY2UgKmRldmljZSBpbiBjdXJy
ZW50RGV2aWNlcykgeworICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2aWNlIGlu
IGN1cnJlbnREZXZpY2VzKSB7CiAKICAgICAgICAgaWYgKCFbZGV2aWNlIGhhc01lZGlhVHlwZTpB
Vk1lZGlhVHlwZVZpZGVvXSAmJiAhW2RldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVNdXhl
ZF0pCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMiw5ICsxNTEsOSBAQCB2b2lkIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcygpCiAgICAgdXBkYXRlQ2Fj
aGVkQVZDYXB0dXJlRGV2aWNlcygpOwogCiAgICAgYm9vbCBkZXZpY2VIYXNDaGFuZ2VkID0gZmFs
c2U7Ci0gICAgYXV0byogY3VycmVudERldmljZXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VD
bGFzcygpIGRldmljZXNdOworICAgIGF1dG8qIGN1cnJlbnREZXZpY2VzID0gW2dldEFWQ2FwdHVy
ZURldmljZUNsYXNzKCkgZGV2aWNlc107CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGRldmlj
ZUxpc3Q7Ci0gICAgZm9yIChBVkNhcHR1cmVEZXZpY2UgKnBsYXRmb3JtRGV2aWNlIGluIGN1cnJl
bnREZXZpY2VzKSB7CisgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpwbGF0Zm9ybURl
dmljZSBpbiBjdXJyZW50RGV2aWNlcykgewogCiAgICAgICAgIGlmICghW3BsYXRmb3JtRGV2aWNl
IGhhc01lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXSAmJiAhW3BsYXRmb3JtRGV2aWNlIGhhc01l
ZGlhVHlwZTpBVk1lZGlhVHlwZU11eGVkXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTYw
LDcgKzE3OSw3IEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVE
ZXZpY2VzKCkKIAogYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiB7
Ci0gICAgcmV0dXJuIFBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgpOworICAgIHJldHVybiBBVkZv
dW5kYXRpb25MaWJyYXJ5KCk7CiB9CiAKIEFWQ2FwdHVyZURldmljZU1hbmFnZXImIEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpCkBAIC0xNzgsNyArMTk3LDcgQEAgQVZDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6fkFWQ2FwdHVyZURldmljZU1hbmFnZXIoKQogewogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2
ZXIuZ2V0KCldOwogICAgIFttX29iamNPYnNlcnZlciBkaXNjb25uZWN0XTsKLSAgICBmb3IgKEFW
Q2FwdHVyZURldmljZSAqZGV2aWNlIGluIG1fYXZDYXB0dXJlRGV2aWNlcy5nZXQoKSkKKyAgICBm
b3IgKEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSBpbiBtX2F2Q2FwdHVyZURldmljZXMu
Z2V0KCkpCiAgICAgICAgIFtkZXZpY2UgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0
KCkgZm9yS2V5UGF0aDpAInN1c3BlbmRlZCJdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0KaW5kZXggODUxNDRhZGY0NTkwYTZkOGM0MmZlMDViODEzZmM1MWZhOGIzY2IzYi4uN2Yz
ZWM4MmIzYThmM2NmYWI3OWQ4NGZlNTJlNGEyM2M4ZDQwYzhjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbQpAQCAtNDUsOSArNDUsNTUgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkVycm9yLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KIAotI2ltcG9ydCAiQ29yZVZpZGVv
U29mdExpbmsuaCIKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgog
I2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJDb3JlVmlkZW9T
b2Z0TGluay5oIgorCit0eXBlZGVmIEFWQ2FwdHVyZUNvbm5lY3Rpb24gQVZDYXB0dXJlQ29ubmVj
dGlvblR5cGU7Cit0eXBlZGVmIEFWQ2FwdHVyZURldmljZSBBVkNhcHR1cmVEZXZpY2VUeXBlZGVm
OwordHlwZWRlZiBBVkNhcHR1cmVEZXZpY2VGb3JtYXQgQVZDYXB0dXJlRGV2aWNlRm9ybWF0VHlw
ZTsKK3R5cGVkZWYgQVZDYXB0dXJlRGV2aWNlSW5wdXQgQVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBl
OwordHlwZWRlZiBBVkNhcHR1cmVPdXRwdXQgQVZDYXB0dXJlT3V0cHV0VHlwZTsKK3R5cGVkZWYg
QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0IEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU7Cit0
eXBlZGVmIEFWRnJhbWVSYXRlUmFuZ2UgQVZGcmFtZVJhdGVSYW5nZVR5cGU7Cit0eXBlZGVmIEFW
Q2FwdHVyZVNlc3Npb24gQVZDYXB0dXJlU2Vzc2lvblR5cGU7CisKK1NPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9u
LCBBVkNhcHR1cmVDb25uZWN0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZD
YXB0dXJlRGV2aWNlKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2
aWNlRm9ybWF0KQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNl
SW5wdXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVPdXRwdXQpCitT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQpCitT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkZyYW1lUmF0ZVJhbmdlKQorU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbikKKworI2RlZmluZSBBVkNhcHR1
cmVDb25uZWN0aW9uIGdldEFWQ2FwdHVyZUNvbm5lY3Rpb25DbGFzcygpCisjZGVmaW5lIEFWQ2Fw
dHVyZURldmljZSBnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpCisjZGVmaW5lIEFWQ2FwdHVyZURl
dmljZUZvcm1hdCBnZXRBVkNhcHR1cmVEZXZpY2VGb3JtYXRDbGFzcygpCisjZGVmaW5lIEFWQ2Fw
dHVyZURldmljZUlucHV0IGdldEFWQ2FwdHVyZURldmljZUlucHV0Q2xhc3MoKQorI2RlZmluZSBB
VkNhcHR1cmVPdXRwdXQgZ2V0QVZDYXB0dXJlT3V0cHV0Q2xhc3MoKQorI2RlZmluZSBBVkNhcHR1
cmVWaWRlb0RhdGFPdXRwdXQgZ2V0QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0Q2xhc3MoKQorI2Rl
ZmluZSBBVkZyYW1lUmF0ZVJhbmdlIGdldEFWRnJhbWVSYXRlUmFuZ2VDbGFzcygpCisKK1NPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlkZW8sIE5TU3RyaW5nICop
CisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZVdhc0Rp
c2Nvbm5lY3RlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKKyNkZWZpbmUgQVZDYXB0dXJlRGV2
aWNlV2FzRGlzY29ubmVjdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nv
bm5lY3RlZE5vdGlmaWNhdGlvbigpCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorU09GVF9M
SU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUnVudGlt
ZUVycm9yTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRp
b24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24s
IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvblJlYXNvbktleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVS
X09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5LCBOU1N0cmlu
ZyAqKQorCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24g
Z2V0QVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFW
Q2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNz
aW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9u
SW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlU2Vzc2lvbkludGVycnVw
dGlvbkVuZGVkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVw
dGlvblJlYXNvbktleSBnZXRBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5KCkK
KyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5IGdldEFWQ2FwdHVyZVNlc3Npb25FcnJv
cktleSgpCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgUEFMOwpAQCAtNjAsNyArMTA2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIC0odm9pZClk
aXNjb25uZWN0OwogLSh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2VydmVyczsKIC0odm9pZClyZW1v
dmVOb3RpZmljYXRpb25PYnNlcnZlcnM7Ci0tKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJl
T3V0cHV0KiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZm
ZXJSZWYpc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uKilj
b25uZWN0aW9uOworLSh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNh
cHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1w
bGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0
aW9uOwogLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4
dDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6
KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CkBAIC05NCwyMyArMTQwLDIzIEBAIHN0YXRp
YyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhVmlkZW9DYXB0dXJlU2VyaWFsUXVldWUoKQogCiBjbGFz
cyBBVlZpZGVvUHJlc2V0IDogcHVibGljIFZpZGVvUHJlc2V0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEFWVmlkZW9QcmVzZXQ+IGNyZWF0ZShJbnRTaXplIHNpemUsIFZlY3RvcjxGcmFtZVJh
dGVSYW5nZT4mJiBmcmFtZVJhdGVSYW5nZXMsIEFWQ2FwdHVyZURldmljZUZvcm1hdCogZm9ybWF0
KQorICAgIHN0YXRpYyBSZWY8QVZWaWRlb1ByZXNldD4gY3JlYXRlKEludFNpemUgc2l6ZSwgVmVj
dG9yPEZyYW1lUmF0ZVJhbmdlPiYmIGZyYW1lUmF0ZVJhbmdlcywgQVZDYXB0dXJlRGV2aWNlRm9y
bWF0VHlwZSogZm9ybWF0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVZW
aWRlb1ByZXNldChzaXplLCBXVEZNb3ZlKGZyYW1lUmF0ZVJhbmdlcyksIGZvcm1hdCkpOwogICAg
IH0KIAotICAgIEFWVmlkZW9QcmVzZXQoSW50U2l6ZSBzaXplLCBWZWN0b3I8RnJhbWVSYXRlUmFu
Z2U+JiYgZnJhbWVSYXRlUmFuZ2VzLCBBVkNhcHR1cmVEZXZpY2VGb3JtYXQqIGZvcm1hdCkKKyAg
ICBBVlZpZGVvUHJlc2V0KEludFNpemUgc2l6ZSwgVmVjdG9yPEZyYW1lUmF0ZVJhbmdlPiYmIGZy
YW1lUmF0ZVJhbmdlcywgQVZDYXB0dXJlRGV2aWNlRm9ybWF0VHlwZSogZm9ybWF0KQogICAgICAg
ICA6IFZpZGVvUHJlc2V0KHNpemUsIFdURk1vdmUoZnJhbWVSYXRlUmFuZ2VzKSwgQVZDYXB0dXJl
KQogICAgICAgICAsIGZvcm1hdChmb3JtYXQpCiAgICAgewogICAgIH0KIAotICAgIFJldGFpblB0
cjxBVkNhcHR1cmVEZXZpY2VGb3JtYXQ+IGZvcm1hdDsKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJl
RGV2aWNlRm9ybWF0VHlwZT4gZm9ybWF0OwogfTsKIAogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBpZCwgU3RyaW5nJiYgaGFzaFNhbHQs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewotICAgIEFWQ2FwdHVyZURl
dmljZSAqZGV2aWNlID0gW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VXaXRo
VW5pcXVlSUQ6aWRdOworICAgIEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSA9IFtnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpIGRldmljZVdpdGhVbmlxdWVJRDppZF07CiAgICAgaWYgKCFk
ZXZpY2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTEyNCw3ICsxNzAsNyBAQCBDYXB0dXJl
U291cmNlT3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGlkLCBT
dHJpbmcmJiBoYXNoU2FsdAogICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3Zl
KHNvdXJjZSkpOwogfQogCi1BVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVTb3Vy
Y2UoQVZDYXB0dXJlRGV2aWNlKiBkZXZpY2UsIFN0cmluZyYmIGlkLCBTdHJpbmcmJiBoYXNoU2Fs
dCkKK0FWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVE
ZXZpY2VUeXBlZGVmKiBkZXZpY2UsIFN0cmluZyYmIGlkLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAg
ICA6IFJlYWx0aW1lVmlkZW9Tb3VyY2UoZGV2aWNlLmxvY2FsaXplZE5hbWUsIFdURk1vdmUoaWQp
LCBXVEZNb3ZlKGhhc2hTYWx0KSkKICAgICAsIG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJD
b3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0
aGlzXSkpCiAgICAgLCBtX2RldmljZShkZXZpY2UpCkBAIC0yNTksNyArMzA1LDcgQEAgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNh
cGFiaWxpdGllcygpCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmls
aXRpZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKICAgICBjYXBhYmlsaXRp
ZXMuc2V0RGV2aWNlSWQoaGFzaGVkSWQoKSk7CiAKLSAgICBBVkNhcHR1cmVEZXZpY2UgKnZpZGVv
RGV2aWNlID0gZGV2aWNlKCk7CisgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqdmlkZW9EZXZp
Y2UgPSBkZXZpY2UoKTsKICAgICBpZiAoW3ZpZGVvRGV2aWNlIHBvc2l0aW9uXSA9PSBBVkNhcHR1
cmVEZXZpY2VQb3NpdGlvbkZyb250KQogICAgICAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9k
ZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOwogICAgIGlmIChbdmlkZW9EZXZp
Y2UgcG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uQmFjaykKQEAgLTM3NSw5ICs0
MjEsOSBAQCBzdGF0aWMgaW5saW5lIGludCBzZW5zb3JPcmllbnRhdGlvbihBVkNhcHR1cmVWaWRl
b09yaWVudGF0aW9uIHZpZGVvT3JpZW50YXRpb24pCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGlu
ZSBpbnQgc2Vuc29yT3JpZW50YXRpb25Gcm9tVmlkZW9PdXRwdXQoQVZDYXB0dXJlVmlkZW9EYXRh
T3V0cHV0KiB2aWRlb091dHB1dCkKK3N0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9u
RnJvbVZpZGVvT3V0cHV0KEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGUqIHZpZGVvT3V0cHV0
KQogewotICAgIEFWQ2FwdHVyZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBbdmlkZW9PdXRwdXQg
Y29ubmVjdGlvbldpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb107CisgICAgQVZDYXB0dXJl
Q29ubmVjdGlvblR5cGUqIGNvbm5lY3Rpb24gPSBbdmlkZW9PdXRwdXQgY29ubmVjdGlvbldpdGhN
ZWRpYVR5cGU6IGdldEFWTWVkaWFUeXBlVmlkZW8oKV07CiAgICAgcmV0dXJuIGNvbm5lY3Rpb24g
PyBzZW5zb3JPcmllbnRhdGlvbihbY29ubmVjdGlvbiB2aWRlb09yaWVudGF0aW9uXSkgOiAwOwog
fQogCkBAIC0zODgsNyArNDM0LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBT
ZXNzaW9uKCkKIAogICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIp
OwogCi0gICAgbV9zZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQ2FwdHVyZVNlc3Npb25J
bnN0YW5jZSgpIGluaXRdKTsKKyAgICBtX3Nlc3Npb24gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVy
ZVNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKICAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1f
b2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJydW5uaW5nIiBvcHRpb25zOk5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07CiAKICAgICBbbV9zZXNz
aW9uIGJlZ2luQ29uZmlndXJhdGlvbl07CkBAIC00MDEsMTAgKzQ0NywxMCBAQCBib29sIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24oKQogICAgIHJldHVybiBzdWNjZXNzOwogfQog
Ci1BVkZyYW1lUmF0ZVJhbmdlKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkZv
ckZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKK0FWRnJhbWVSYXRlUmFuZ2VUeXBlKiBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkZvckZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKIHsKLSAg
ICBBVkZyYW1lUmF0ZVJhbmdlICpiZXN0RnJhbWVSYXRlUmFuZ2UgPSBuaWw7Ci0gICAgZm9yIChB
VkZyYW1lUmF0ZVJhbmdlICpmcmFtZVJhdGVSYW5nZSBpbiBbW2RldmljZSgpIGFjdGl2ZUZvcm1h
dF0gdmlkZW9TdXBwb3J0ZWRGcmFtZVJhdGVSYW5nZXNdKSB7CisgICAgQVZGcmFtZVJhdGVSYW5n
ZVR5cGUgKmJlc3RGcmFtZVJhdGVSYW5nZSA9IG5pbDsKKyAgICBmb3IgKEFWRnJhbWVSYXRlUmFu
Z2VUeXBlICpmcmFtZVJhdGVSYW5nZSBpbiBbW2RldmljZSgpIGFjdGl2ZUZvcm1hdF0gdmlkZW9T
dXBwb3J0ZWRGcmFtZVJhdGVSYW5nZXNdKSB7CiAgICAgICAgIGlmIChmcmFtZVJhdGVSYW5nZUlu
Y2x1ZGVzUmF0ZSh7IFtmcmFtZVJhdGVSYW5nZSBtaW5GcmFtZVJhdGVdLCBbZnJhbWVSYXRlUmFu
Z2UgbWF4RnJhbWVSYXRlXSB9LCByYXRlKSkgewogICAgICAgICAgICAgaWYgKCFiZXN0RnJhbWVS
YXRlUmFuZ2UgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKFtmcmFtZVJhdGVSYW5nZSBtaW5GcmFt
ZUR1cmF0aW9uXSwgPiwgW2Jlc3RGcmFtZVJhdGVSYW5nZSBtaW5GcmFtZUR1cmF0aW9uXSkpCiAg
ICAgICAgICAgICAgICAgYmVzdEZyYW1lUmF0ZVJhbmdlID0gZnJhbWVSYXRlUmFuZ2U7CkBAIC00
MjYsNyArNDcyLDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vz
c2lvbigpCiAjZW5kaWYKIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIFJldGFpblB0
cjxBVkNhcHR1cmVEZXZpY2VJbnB1dD4gdmlkZW9JbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkNh
cHR1cmVEZXZpY2VJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhEZXZpY2U6ZGV2aWNlKCkgZXJyb3I6
JmVycm9yXSk7CisgICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmljZUlucHV0VHlwZT4gdmlkZW9J
biA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlRGV2aWNlSW5wdXRJbnN0YW5jZSgpIGluaXRXaXRo
RGV2aWNlOmRldmljZSgpIGVycm9yOiZlcnJvcl0pOwogICAgIGlmIChlcnJvcikgewogICAgICAg
ICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJmYWlsZWQgdG8gYWxs
b2NhdGUgQVZDYXB0dXJlRGV2aWNlSW5wdXQgIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0gVVRGOFN0cmluZ10pOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MzgsNyArNDg0LDcg
QEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiAgICAg
fQogICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CiAKLSAgICBtX3ZpZGVv
T3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dEluc3Rh
bmNlKCkgaW5pdF0pOworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVy
ZVZpZGVvRGF0YU91dHB1dEluc3RhbmNlKCkgaW5pdF0pOwogICAgIGF1dG8gc2V0dGluZ3NEaWN0
aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0c0FuZEtleXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmF2VmlkZW9DYXB0dXJlUGl4ZWxC
dWZmZXJGb3JtYXQoKV0sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxdKTsK
IAogICAgIFttX3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5
LmdldCgpXTsKQEAgLTUyMiw3ICs1NjgsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpw
cm9jZXNzTmV3RnJhbWUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSkKICAgICBkaXNwYXRjaE1l
ZGlhU2FtcGxlVG9PYnNlcnZlcnMoV1RGTW92ZShzYW1wbGUpKTsKIH0KIAotdm9pZCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25u
ZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwg
QVZDYXB0dXJlQ29ubmVjdGlvbiogY2FwdHVyZUNvbm5lY3Rpb24pCit2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rp
b24oQVZDYXB0dXJlT3V0cHV0VHlwZSosIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwg
QVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqIGNhcHR1cmVDb25uZWN0aW9uKQogewogICAgIGlmICht
X2ZyYW1lc1RvRHJvcEF0U3RhcnR1cCAmJiBtX2ZyYW1lc1RvRHJvcEF0U3RhcnR1cC0tKQogICAg
ICAgICByZXR1cm47CkBAIC01NzMsNyArNjE5LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6aW50ZXJydXB0ZWQoKSBjb25zdAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Z2VuZXJh
dGVQcmVzZXRzKCkKIHsKICAgICBWZWN0b3I8UmVmPFZpZGVvUHJlc2V0Pj4gcHJlc2V0czsKLSAg
ICBmb3IgKEFWQ2FwdHVyZURldmljZUZvcm1hdCogZm9ybWF0IGluIFtkZXZpY2UoKSBmb3JtYXRz
XSkgeworICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlRm9ybWF0VHlwZSogZm9ybWF0IGluIFtkZXZp
Y2UoKSBmb3JtYXRzXSkgewogCiAgICAgICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVuc2lvbnMg
PSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdC5mb3JtYXREZXNj
cmlwdGlvbik7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IHsgZGltZW5zaW9ucy53aWR0aCwgZGlt
ZW5zaW9ucy5oZWlnaHQgfTsKQEAgLTU4NCw3ICs2MzAsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpnZW5lcmF0ZVByZXNldHMoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgVmVjdG9yPEZyYW1lUmF0ZVJhbmdlPiBmcmFtZVJhdGVzOwotICAgICAgICBmb3IgKEFWRnJh
bWVSYXRlUmFuZ2UqIHJhbmdlIGluIFtmb3JtYXQgdmlkZW9TdXBwb3J0ZWRGcmFtZVJhdGVSYW5n
ZXNdKQorICAgICAgICBmb3IgKEFWRnJhbWVSYXRlUmFuZ2VUeXBlICpyYW5nZSBpbiBbZm9ybWF0
IHZpZGVvU3VwcG9ydGVkRnJhbWVSYXRlUmFuZ2VzXSkKICAgICAgICAgICAgIGZyYW1lUmF0ZXMu
YXBwZW5kKHsgcmFuZ2UubWluRnJhbWVSYXRlLCByYW5nZS5tYXhGcmFtZVJhdGV9KTsKIAogICAg
ICAgICBwcmVzZXRzLmFwcGVuZChBVlZpZGVvUHJlc2V0OjpjcmVhdGUoc2l6ZSwgV1RGTW92ZShm
cmFtZVJhdGVzKSwgZm9ybWF0KSk7CkBAIC02NjYsNyArNzEyLDcgQEAgdm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6ZGV2aWNlRGlzY29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4g
bm90aWZpY2EKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KGRldmljZUNvbm5lY3RlZERpZENoYW5nZTopIG5hbWU6QVZDYXB0dXJlRGV2aWNlV2FzRGlzY29u
bmVjdGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBBVkNhcHR1cmVTZXNzaW9uKiBzZXNzaW9uID0gbV9jYWxsYmFjay0+c2Vzc2lvbigp
OworICAgIEFWQ2FwdHVyZVNlc3Npb25UeXBlKiBzZXNzaW9uID0gbV9jYWxsYmFjay0+c2Vzc2lv
bigpOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioc2Vz
c2lvblJ1bnRpbWVFcnJvcjopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlm
aWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNl
bGVjdG9yOkBzZWxlY3RvcihiZWdpblNlc3Npb25JbnRlcnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJl
U2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKICAgICBb
Y2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGVuZFNlc3Npb25JbnRl
cnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0
aW9uIG9iamVjdDpzZXNzaW9uXTsKQEAgLTY3OCw3ICs3MjQsNyBAQCB2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpkZXZpY2VEaXNjb25uZWN0ZWQoUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPiBu
b3RpZmljYQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3Zl
T2JzZXJ2ZXI6c2VsZl07CiB9CiAKLS0gKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0
cHV0KiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJS
ZWYpc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uKiljb25u
ZWN0aW9uCistICh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1
cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVC
dWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9u
CiB7CiAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggNWM3ODk4N2JiNzNhNzg2OGIyYWM3Yjli
ZWEwZTNiNGJmNTc3YzRiNC4uMDQ3NTkwMTNiMGM1NDkxNGExM2Q5YjBlNzkwMTJlYWMxZjM4ODNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtNDYsOCAr
NDYsOCBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDxv
YmpjL3J1bnRpbWUuaD4KIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKICNpbXBvcnQg
PHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJY29uVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMubW0KaW5kZXggNzkyYzdkZTliOGRk
YWQ2ZDU5ZmJlMGZmOWQ4MzM0YWE0NTc0ZGQwMi4uNDcwZWNhNDU2N2EwMzI5MjczYjNiZjVjOThi
N2RmZDJkYTYyNzQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklj
b25VdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkljb25VdGls
aXRpZXMubW0KQEAgLTM0LDExICszNCwxNCBAQAogI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRp
YS5oPgogI2ltcG9ydCA8SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaD4KICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAotI2ltcG9ydCA8cGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9uKTsKK1NPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdlbmVyYXRvcik7CitTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEx
Nyw4ICsxMjAsOCBAQCBVSUltYWdlKiBpY29uRm9yVmlkZW9GaWxlKE5TVVJMICpmaWxlKQogewog
ICAgIEFTU0VSVF9BUkcoZmlsZSwgW2ZpbGUgaXNGaWxlVVJMXSk7CiAKLSAgICBSZXRhaW5QdHI8
QVZVUkxBc3NldD4gYXNzZXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZVUkxBc3NldEluc3RhbmNl
KCkgaW5pdFdpdGhVUkw6ZmlsZSBvcHRpb25zOm5pbF0pOwotICAgIFJldGFpblB0cjxBVkFzc2V0
SW1hZ2VHZW5lcmF0b3I+IGdlbmVyYXRvciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0SW1h
Z2VHZW5lcmF0b3JJbnN0YW5jZSgpIGluaXRXaXRoQXNzZXQ6YXNzZXQuZ2V0KCldKTsKKyAgICBS
ZXRhaW5QdHI8QVZVUkxBc3NldD4gYXNzZXQgPSBhZG9wdE5TKFthbGxvY0FWVVJMQXNzZXRJbnN0
YW5jZSgpIGluaXRXaXRoVVJMOmZpbGUgb3B0aW9uczpuaWxdKTsKKyAgICBSZXRhaW5QdHI8QVZB
c3NldEltYWdlR2VuZXJhdG9yPiBnZW5lcmF0b3IgPSBhZG9wdE5TKFthbGxvY0FWQXNzZXRJbWFn
ZUdlbmVyYXRvckluc3RhbmNlKCkgaW5pdFdpdGhBc3NldDphc3NldC5nZXQoKV0pOwogICAgIFtn
ZW5lcmF0b3Igc2V0QXBwbGllc1ByZWZlcnJlZFRyYWNrVHJhbnNmb3JtOllFU107CiAKICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDViYTUyYzkwYWViMGZlYWQ2ZjQ0OGQ3
MDg2ZjU5YTJhZTZlOWU5NTIuLjIxYzAwNjc3NmE2Njc0MWFiOTRhZTY5MTgwYmY2YjQxMGY5OTQ5
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVu
dENvZGVyc01hYy5tbQpAQCAtNDQsOCArNDQsMTEgQEAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4
dC5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZv
dW5kYXRpb25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BU
SU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZPdXRw
dXRDb250ZXh0KQogI2VuZGlmCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNTc3LDE2ICs1ODAsMTYg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJn
ZXQpCiB7Ci0gICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNU
b1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgIGlmIChbZ2V0QVZPdXRw
dXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29k
aW5nKV0pCiAgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpOwogfQog
CiBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6TWVkaWFQbGF5
YmFja1RhcmdldENvbnRleHQmIHRhcmdldCkKIHsKLSAgICBpZiAoIVtQQUw6OmdldEFWT3V0cHV0
Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGlu
ZyldKQorICAgIGlmICghW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3Rv
Y29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGNvbnRleHQgPSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIs
IFBBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7CisgICAgYXV0byBjb250ZXh0ID0gSVBD
OjpkZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBnZXRBVk91dHB1dENvbnRleHRDbGFz
cygpKTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggYTUxYTIyMzYyMzg0
MTUxYWIxMWQ0ODk0MzY5ZjhhMTg1ODAwNjdkYS4uNWVhYTI3MTc1ZjBmMWVhNDU1NTEyYjlmNDdj
NDg5MDgyOTY3MjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tCkBAIC02MCw4ICs2MCwxMiBAQAogI2lmIEhBVkUoQVVUSE9SSVpBVElPTl9TVEFUVVNf
Rk9SX01FRElBX1RZUEUpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+
CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRpYUZvcm1hdC5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5o
PgorU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pOworU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlKTsKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRlbywgTlNTdHJpbmcgKik7CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC05NDMsNyArOTQ3LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpV
SUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFn
ZVByb3gKICAgICAgICAgICAgIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRnJhbWUo
ZnJhbWUsIHRvcExldmVsT3JpZ2luLCBwcm90ZWN0ZWRSZXF1ZXN0LCAoaWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2ViVmlldy5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgQVZBdXRob3JpemF0aW9u
U3RhdHVzIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSB1c2luZ01vY2tDYXB0dXJlRGV2aWNl
cyA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVE
ZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVW
aWRlb107CisgICAgICAgIEFWQXV0aG9yaXphdGlvblN0YXR1cyBjYW1lcmFBdXRob3JpemF0aW9u
U3RhdHVzID0gdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNB
dXRob3JpemVkIDogW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1
c0Zvck1lZGlhVHlwZTpnZXRBVk1lZGlhVHlwZVZpZGVvKCldOwogICAgICAgICBzd2l0Y2ggKGNh
bWVyYUF1dGhvcml6YXRpb25TdGF0dXMpIHsKICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25T
dGF0dXNBdXRob3JpemVkOgogICAgICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRp
b25Gb3JGcmFtZShmcmFtZSwgdG9wTGV2ZWxPcmlnaW4sIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8
V0tVSURlbGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCksICp3ZWJW
aWV3LmdldCgpKTsKQEAgLTk2MSwxMyArOTY1LDEzIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
CiAgICAgICAgICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JGcmFtZShm
cmFtZSwgdG9wTGV2ZWxPcmlnaW4sIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRl
UHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCksICp3ZWJWaWV3LmdldCgpKTsK
ICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VD
bGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBjb21wbGV0
aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworICAgICAgICAgICAgW2dldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTpnZXRBVk1lZGlhVHlw
ZVZpZGVvKCkgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSk7CiAKICAgICBpZiAocmVxdWlyZXNBdWRp
b0NhcHR1cmUpIHsKLSAgICAgICAgQVZBdXRob3JpemF0aW9uU3RhdHVzIG1pY3JvcGhvbmVBdXRo
b3JpemF0aW9uU3RhdHVzID0gdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPyBBVkF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRo
b3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOworICAgICAgICBB
VkF1dGhvcml6YXRpb25TdGF0dXMgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSB1c2lu
Z01vY2tDYXB0dXJlRGV2aWNlcyA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBb
Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBl
OmdldEFWTWVkaWFUeXBlQXVkaW8oKV07CiAgICAgICAgIHN3aXRjaCAobWljcm9waG9uZUF1dGhv
cml6YXRpb25TdGF0dXMpIHsKICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkOgogICAgICAgICAgICAgcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb24oKTsKQEAgLTk4
NSw3ICs5ODksNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogICAgICAgICAgICAgICAgIHJl
cXVlc3RDYW1lcmFBdXRob3JpemF0aW9uKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAg
ICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFU
eXBlOkFWTWVkaWFUeXBlQXVkaW8gY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdl
dCgpXTsKKyAgICAgICAgICAgIFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nl
c3NGb3JNZWRpYVR5cGU6Z2V0QVZNZWRpYVR5cGVBdWRpbygpIGNvbXBsZXRpb25IYW5kbGVyOmRl
Y2lzaW9uSGFuZGxlci5nZXQoKV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVDdXN0b20ubW0KaW5kZXggNTJhOWJkNGRjYzkxNzU4Y2RmMDAwZGJjMGI0ZGU3MjdhYzg1NmNk
OC4uNWJkZmI2ZGRkYmY5OTE0MmY0MjI5MjE0ZGZiMGQ1ODQ0ZjFmM2RkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0z
NSw4ICszNSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05B
TChBVkZvdW5kYXRpb24pCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBB
VlBsYXllckxheWVyKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMTAzLDggKzEwNSw4IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAKICAgICBp
ZiAobGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcikgewogICAgICAgICAKLSAg
ICAgICAgaWYgKFtwbGF0Zm9ybUxheWVyKCkgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVy
TGF5ZXJDbGFzcygpXSkgewotICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jQVZQbGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICBpZiAoW3BsYXRm
b3JtTGF5ZXIoKSBpc0tpbmRPZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkgeworICAg
ICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKIAogICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqZGVzdGluYXRpb25QbGF5
ZXJMYXllciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oY2xvbmVkTGF5ZXIuZ2V0KCkp
OwogICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqc291cmNlUGxheWVyTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxBVlBsYXllckxheWVyICo+KHBsYXRmb3JtTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0KaW5kZXggMjNhYWMzNDQyNmJhMDNhYjkzYjRlOTYzZjFlODJmODUxNDA0YTFj
Yi4uYzZlMDcxNjRjYWYwNWNhNDgxOWUzMGE3ODZkY2M4YWQ4M2Q2MDUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbQpAQCAtMzYsMTEgKzM2LDEzIEBACiAjaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgotCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKK1NP
RlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCisKIEBpbnRlcmZhY2Ug
V2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IDogTlNXaW5kb3c8TlNBbmltYXRpb25EZWxlZ2F0ZT4g
ewogICAgIFNFTCBfY29udHJvbGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kOwogICAgIFdlYldpbmRv
d1NjYWxlQW5pbWF0aW9uICpfZnVsbHNjcmVlbkFuaW1hdGlvbjsgLy8gKHJldGFpbikKQEAgLTEx
Niw3ICsxMTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAgICAg
YXV0byBjb250ZW50VmlldyA9IFtbc2VsZiBmdWxsc2NyZWVuV2luZG93XSBjb250ZW50Vmlld107
CiAKLSAgICBhdXRvIGxheWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVyTGF5ZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIGxheWVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckxh
eWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW2xheWVyIHNldFBsYXllcjpwbGF5ZXJdOwogCiAg
ICAgW2NvbnRlbnRWaWV3IHNldExheWVyOmxheWVyLmdldCgpXTsKQEAgLTE0NSw3ICsxNDcsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAodm9pZCl3aW5kb3dEaWRF
eGl0RnVsbHNjcmVlbgogewogICAgIENBTGF5ZXIgKmxheWVyID0gW1tbc2VsZiB3aW5kb3ddIGNv
bnRlbnRWaWV3XSBsYXllcl07Ci0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0
QVZQbGF5ZXJMYXllckNsYXNzKCldKQorICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpnZXRB
VlBsYXllckxheWVyQ2xhc3MoKV0pCiAgICAgICAgIFtbKEFWUGxheWVyTGF5ZXIgKilsYXllciBw
bGF5ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInJhdGUiXTsKIAogICAgIFtz
ZWxmIGNsZWFyRmFkZUFuaW1hdGlvbl07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMWE4NzkzZWFlNWRlZmZlNzlkY2U3NmZkMWQ5MjM3YTJmNThj
YTQ1Yi4uMjFlMGQ2ZWU2MWFiYTBjZWRjNjE2MTg4M2U3MzE2NjU4Mjc3OWM3MiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE5LTA0LTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQ0NTU2LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MjEyCisKKyAgICAgICAgQ2F1c2lu
ZyBidWlsZCBmYWlsdXJlcyBvbiBtdWx0aXBsZSBidWlsZGVycyAoUmVxdWVzdGVkIGJ5CisgICAg
ICAgIFNoYXduUm9iZXJ0cyBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2Vz
ZXQ6CisKKyAgICAgICAgIkNyZWF0ZSBBVkZvdW5kYXRpb25Tb2Z0TGluay57aCxtbX0gdG8gcmVk
dWNlIGR1cGxpY2F0ZSBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk3MTcxCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yNDQ1NTYKKwogMjAxOS0wNC0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDI1YmExMDhiNDYxMmI2NzYxYmExNzgxZThmMmI5YzRiZDM0ZTFjMDMuLmYzMjk2
NjU3NjhlNmMwOWFiNzdkYTk3NDVmZTM4ZDQ3YjM4ZmZhN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMyw3ICsyMyw2IEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDQxQTFFMzMyMTZGRkRCQzAw
Nzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgKi87IH07Ci0JCTA3MTFERjUyMjI2QTk1RkMwMDNE
RDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExREY1MTIyNkE5NUZCMDAzREQyRjcgLyogQVZG
b3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tICovOyB9OwogCQkwNzQ5MkIzQjFERjhCMTRDMDA2MzNE
RTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDkyQjNBMURGOEFFMkQwMDYzM0RFMSAvKiBFbnVtZXJh
dGVNZWRpYURldmljZXMuY3BwICovOyB9OwogCQkwNzQ5MkIzQzFERjhCODY2MDA2MzNERTEgLyog
ZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0OTJCMzkxREY4QURBNDAwNjMzREUxIC8qIGVudW1l
cmF0ZU1lZGlhRGV2aWNlcy5odG1sICovOyB9OwogCQkwNzQ5OTQ0MjFFQTUwMzRCMDAwREE0NEUg
LyogZ2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNEQxOUFGN0JFRjAwMkVCQUI1IC8qIGdldFVzZXJNZWRp
YS5odG1sICovOyB9OwpAQCAtMTMzNyw3ICsxMzM2LDYgQEAKIC8qIEJlZ2luIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCQkwMENEOUY2MjE1QkUzMTJDMDAyREEyQ0UgLyogQmFja0Zvcndh
cmRMaXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmFja0Zv
cndhcmRMaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNDFBMUUzMzIxNkZG
REJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFB1YmxpY1N1ZmZpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTA3MTFERjUxMjI2QTk1RkIwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkZvdW5kYXRpb25T
b2Z0TGlua1Rlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NDkyQjM5MURG
OEFEQTQwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVk
aWFEZXZpY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVudW1l
cmF0ZU1lZGlhRGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjZE
RDFGMUE1QUQ1MjAwMDIzRTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjgyLDcgKzM2ODAsNiBAQAogCQlDRDg5RDAz
NzFDNEVEQjEzMDAwNDBBMDQgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCTA3MTFERjUxMjI2QTk1RkIwMDNERDJGNyAvKiBBVkZvdW5kYXRp
b25Tb2Z0TGlua1Rlc3QubW0gKi8sCiAJCQkJNzUxQjA1RDUxRjhFQUMxQTAwMjhBMDlFIC8qIERh
dGFiYXNlVHJhY2tlclRlc3QubW0gKi8sCiAJCQkJNTc2OUM1MEExRDlCMDAwMTAwMDg0N0ZCIC8q
IFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tICovLAogCQkJCUExNzk5MTg2MUUxQzk5NEUwMEE1
MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gKi8sCkBAIC00MDI0LDcgKzQwMjEsNiBAQAogCQkJCUNE
QzhFNDhEMUJDNUNCNDUwMDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMEI5MUQwQTY0RjEwMEZFQkNGMyAvKiBBdXRvTGF5b3V0SW50
ZWdyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0NEMzJGNjIwNjVCNTQzMDA2NEE0QkUg
LyogQVZGb3VuZGF0aW9uUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3MTFERjUy
MjI2QTk1RkMwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VCNTFBNDExQTdFMDA0NDdDNEMgLyogQmFja0ZvcndhcmRMaXN0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUM3RkVCMjAyMDdDMEYyRTAwRDIzMjc4IC8qIEJhY2tncm91
bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NEI3QTYwMURGMzZFRUUwMEFDQ0I2QyAv
KiBCdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlu
a1Rlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmtUZXN0Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2Iw
YzE2NmYxZTU0MGJjYTMwMjc0NjIxY2VhZGY5MWE4MWM5NDQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0KKysrIC9kZXYvbnVsbApAQCAt
MSwxOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsu
aD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUKEFWRm91bmRhdGlvblNvZnRM
aW5rLCBDbGFzc2VzKQotewotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWUGxheWVyQ2xhc3MoKSwg
bnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZQbGF5ZXJJdGVtQ2xhc3MoKSwgbnVs
bHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFz
cygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVlBsYXllckxheWVyQ2xhc3Mo
KSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCksIG51
bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWQXNzZXRJbWFnZUdlbmVyYXRvckNsYXNz
KCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3Mo
KSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZBc3NldENhY2hlQ2xhc3MoKSwg
bnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1
dENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWTWVkaWFTZWxlY3Rp
b25Hcm91cENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWTWVkaWFT
ZWxlY3Rpb25PcHRpb25DbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRB
Vk91dHB1dENvbnRleHRDbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRB
VkFzc2V0UmVhZGVyQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZB
c3NldFdyaXRlckNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWQXNz
ZXRXcml0ZXJJbnB1dENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFW
Q2FwdHVyZVNlc3Npb25DbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRB
VkNhcHR1cmVDb25uZWN0aW9uQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6
Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6
Z2V0QVZDYXB0dXJlRGV2aWNlRm9ybWF0Q2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05F
KFBBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlSW5wdXRDbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBF
Q1RfTkUoUEFMOjpnZXRBVkNhcHR1cmVPdXRwdXRDbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBF
Q1RfTkUoUEFMOjpnZXRBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRDbGFzcygpLCBudWxscHRyKTsK
LSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVkZyYW1lUmF0ZVJhbmdlQ2xhc3MoKSwgbnVsbHB0cik7
Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZNdXRhYmxlQXVkaW9NaXhDbGFzcygpLCBudWxscHRy
KTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVk11dGFibGVBdWRpb01peElucHV0UGFyYW1ldGVy
c0NsYXNzKCksIG51bGxwdHIpOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIEVYUEVDVF9ORShQ
QUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQ
QUw6OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCksIG51bGxwdHIpOwotI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWUGVyc2lzdGFi
bGVDb250ZW50S2V5UmVxdWVzdENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6
OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6
Z2V0QVZTcGVlY2hTeW50aGVzaXplckNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQ
QUw6OmdldEFWU3BlZWNoVXR0ZXJhbmNlQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05F
KFBBTDo6Z2V0QVZTcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzKCksIG51bGxwdHIpOwotI2VuZGlm
Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0gICAgRVhQ
RUNUX05FKFBBTDo6Z2V0QVZSb3V0ZURldGVjdG9yQ2xhc3MoKSwgbnVsbHB0cik7Ci0jZW5kaWYK
LQotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSwgbnVs
bHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCks
IG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0Q2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZBc3NldFJl
YWRlclNhbXBsZVJlZmVyZW5jZU91dHB1dENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9O
RShQQUw6OmdldEFWVmlkZW9QZXJmb3JtYW5jZU1ldHJpY3NDbGFzcygpLCBudWxscHRyKTsKLSAg
ICBFWFBFQ1RfTkUoUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJDbGFzcygpLCBu
dWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ckNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWU2FtcGxlQnVmZmVy
UmVuZGVyU3luY2hyb25pemVyQ2xhc3MoKSwgbnVsbHB0cik7Ci19Ci0KLQotVEVTVChBVkZvdW5k
YXRpb25Tb2Z0TGluaywgQ29uc3RhbnRzKQotewotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvVGlt
ZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwgaXNFcXVhbFRvU3RyaW5nOkAiU3BlY3RyYWwiXSk7Ci0g
ICAgRVhQRUNUX1RSVUUoW0FWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQgaXNFcXVh
bFRvU3RyaW5nOkAiVmFyaXNwZWVkIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk1lZGlhVHlwZUNs
b3NlZENhcHRpb24gaXNFcXVhbFRvU3RyaW5nOkAiY2xjcCJdKTsKLSAgICBFWFBFQ1RfVFJVRShb
QVZNZWRpYVR5cGVWaWRlbyBpc0VxdWFsVG9TdHJpbmc6QCJ2aWRlIl0pOwotICAgIEVYUEVDVF9U
UlVFKFtBVk1lZGlhVHlwZUF1ZGlvIGlzRXF1YWxUb1N0cmluZzpAInNvdW4iXSk7Ci0gICAgRVhQ
RUNUX1RSVUUoW0FWTWVkaWFUeXBlTXV4ZWQgaXNFcXVhbFRvU3RyaW5nOkAibXV4eCJdKTsKLSAg
ICBFWFBFQ1RfVFJVRShbQVZNZWRpYVR5cGVNZXRhZGF0YSBpc0VxdWFsVG9TdHJpbmc6QCJtZXRh
Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVD
bGVhbkFwZXJ0dXJlIGlzRXF1YWxUb1N0cmluZzpAIkNsZWFuQXBlcnR1cmUiXSk7Ci0gICAgRVhQ
RUNUX1RSVUUoW0FWU3RyZWFtaW5nS2V5RGVsaXZlcnlDb250ZW50S2V5VHlwZSBpc0VxdWFsVG9T
dHJpbmc6QCJjb20uYXBwbGUuc3RyZWFtaW5na2V5ZGVsaXZlcnkuY29udGVudGtleSJdKTsKLSAg
ICBFWFBFQ1RfVFJVRShbQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzIGlzRXF1YWxUb1N0cmluZzpAInB1YmxpYy5zdWJ0aXRsZXMuZm9yY2VkLW9ubHkiXSk7
Ci0gICAgRVhQRUNUX1RSVUUoW0FWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBpc0VxdWFsVG9TdHJp
bmc6QCJ0aXRsZSJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9u
IGlzRXF1YWxUb1N0cmluZzpAImNvbW4iXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWTWVkaWFUeXBl
U3VidGl0bGUgaXNFcXVhbFRvU3RyaW5nOkAic2J0bCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQgaXNFcXVhbFRvU3RyaW5nOkAi
cHVibGljLm1haW4tcHJvZ3JhbS1jb250ZW50Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkIGlzRXF1YWxUb1N0cmluZzpAInB1YmxpYy5lYXN5LXRv
LXJlYWQiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWRmlsZVR5cGVNUEVHNCBpc0VxdWFsVG9TdHJp
bmc6QCJwdWJsaWMubXBlZy00Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVlZpZGVvQ29kZWNIMjY0
IGlzRXF1YWxUb1N0cmluZzpAImF2YzEiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWVmlkZW9FeHBl
Y3RlZFNvdXJjZUZyYW1lUmF0ZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJFeHBlY3RlZEZyYW1lUmF0
ZSJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSBpc0VxdWFsVG9T
dHJpbmc6QCJQcm9maWxlTGV2ZWwiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWVmlkZW9BdmVyYWdl
Qml0UmF0ZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJBdmVyYWdlQml0UmF0ZSJdKTsKLSAgICBFWFBF
Q1RfVFJVRShbQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXkgaXNFcXVhbFRvU3RyaW5nOkAi
TWF4S2V5RnJhbWVJbnRlcnZhbCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZWaWRlb1Byb2ZpbGVM
ZXZlbEgyNjRNYWluQXV0b0xldmVsIGlzRXF1YWxUb1N0cmluZzpAIkgyNjRfTWFpbl9BdXRvTGV2
ZWwiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5
TmFtZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJNZWRpYVNlbGVjdGlvbk9wdGlvbnNOYW1lIl0pOwot
ICAgIEVYUEVDVF9UUlVFKFtBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5kZWRMYW5ndWFn
ZVRhZ0tleSBpc0VxdWFsVG9TdHJpbmc6QCJNZWRpYVNlbGVjdGlvbk9wdGlvbnNFeHRlbmRlZExh
bmd1YWdlVGFnIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNr
SXNEZWZhdWx0S2V5IGlzRXF1YWxUb1N0cmluZzpAIk1lZGlhU2VsZWN0aW9uT3B0aW9uc0lzRGVm
YXVsdCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja01lZGlh
Q2hhcmFjdGVyc3RpY3NLZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWVkaWFTZWxlY3Rpb25PcHRpb25z
VGFnZ2VkTWVkaWFDaGFyYWN0ZXJpc3RpY3MiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWT3V0T2ZC
YW5kQWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5IGlzRXF1YWxUb1N0cmluZzpAIk1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NsaWVudElkZW50aWZpZXIiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWT3V0
T2ZCYW5kQWx0ZXJuYXRlVHJhY2tTb3VyY2VLZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWVkaWFTZWxl
Y3Rpb25PcHRpb25zVVJMIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBpc0VxdWFsVG9TdHJpbmc6
QCJwdWJsaWMuYWNjZXNzaWJpbGl0eS5kZXNjcmliZXMtbXVzaWMtYW5kLXNvdW5kIl0pOwotICAg
IEVYUEVDVF9UUlVFKFtBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxv
Z0ZvckFjY2Vzc2liaWxpdHkgaXNFcXVhbFRvU3RyaW5nOkAicHVibGljLmFjY2Vzc2liaWxpdHku
dHJhbnNjcmliZXMtc3Bva2VuLWRpYWxvZyJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZWRpYUNo
YXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50IGlzRXF1YWxUb1N0cmluZzpAInB1YmxpYy5h
dXhpbGlhcnktY29udGVudCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZWRpYUNoYXJhY3Rlcmlz
dGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5IGlzRXF1YWxUb1N0cmluZzpAInB1Ymxp
Yy5hY2Nlc3NpYmlsaXR5LmRlc2NyaWJlcy12aWRlbyJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZN
ZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lVXNlckRhdGEgaXNFcXVhbFRvU3RyaW5nOkAidWR0YSJd
KTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEg
aXNFcXVhbFRvU3RyaW5nOkAibWR0YSJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZXRhZGF0YUtl
eVNwYWNlaVR1bmVzIGlzRXF1YWxUb1N0cmluZzpAIml0c2siXSk7Ci0gICAgRVhQRUNUX1RSVUUo
W0FWTWV0YWRhdGFLZXlTcGFjZUlEMyBpc0VxdWFsVG9TdHJpbmc6QCJvcmcuaWQzIl0pOwotICAg
IEVYUEVDVF9UUlVFKFtBVk1ldGFkYXRhS2V5U3BhY2VJU09Vc2VyRGF0YSBpc0VxdWFsVG9TdHJp
bmc6QCJ1aXNvIl0pOwotCi0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNv
ZGVyQml0UmF0ZUtleSgpKQotICAgICAgICBFWFBFQ1RfVFJVRShbQVZFbmNvZGVyQml0UmF0ZUtl
eSBpc0VxdWFsVG9TdHJpbmc6QCJBVkVuY29kZXJCaXRSYXRlS2V5Il0pOwotICAgIGlmIChQQUw6
OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKLSAgICAgICAgRVhQRUNUX1RS
VUUoW0FWRm9ybWF0SURLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZGb3JtYXRJREtleSJdKTsKLSAg
ICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkK
LSAgICAgICAgRVhQRUNUX1RSVUUoW0FWTnVtYmVyT2ZDaGFubmVsc0tleSBpc0VxdWFsVG9TdHJp
bmc6QCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiXSk7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZv
dW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIEVYUEVDVF9UUlVFKFtBVlNhbXBs
ZVJhdGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZTYW1wbGVSYXRlS2V5Il0pOwotCi0jaWYgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAp
IHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDExMDAwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gNDAwMDApIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRf
QVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSgpKTsKLSAgICBFWFBF
Q1RfVFJVRShbQVZVUkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5IGlzRXF1YWxUb1N0cmluZzpA
IkFWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSJdKTsKLSNlbmRpZgotCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEy
MDAwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gNTAwMDApIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEyMDAwMCkKLSAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZG
b3VuZGF0aW9uX0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkg
aXNFcXVhbFRvU3RyaW5nOkAiQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVs
eSJdKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNP
TlRFTlRLRVlTRVNTSU9OKQotICAgIEVYUEVDVF9UUlVFKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRp
b25fQVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSk7Ci0gICAgRVhQRUNUX1RS
VUUoW0FWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nIGlzRXF1YWxUb1N0cmluZzpA
IkZhaXJQbGF5U3RyZWFtaW5nIl0pOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBFWFBFQ1RfVFJVRShQQUw6
OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25z
S2V5KCkpOwotICAgIEVYUEVDVF9UUlVFKFtBVkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJz
aW9uc0tleSBpc0VxdWFsVG9TdHJpbmc6QCJQcm90b2NvbFZlcnNpb25zS2V5Il0pOwotI2VuZGlm
Ci0KLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTMwMDAwKSB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSA2MDAwMCkgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmIF9f
VFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQotICAgIEVYUEVDVF9UUlVFKFBB
TDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSk7
Ci0gICAgRVhQRUNUX1RSVUUoW0FWVmlkZW9Db2RlY1R5cGVIRVZDV2l0aEFscGhhIGlzRXF1YWxU
b1N0cmluZzpAIm11eGEiXSk7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBFWFBF
Q1RfVFJVRShbQVZTdHJlYW1EYXRhUGFyc2VyQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNp
b25zS2V5IGlzRXF1YWxUb1N0cmluZzpAIkFWQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNp
b25zS2V5Il0pOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEVYUEVD
VF9UUlVFKFtBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50ZXJmYWNlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6QCJBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50ZXJmYWNlTmFtZSJdKTsKLSAgICBFWFBFQ1Rf
VFJVRShbQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXkgaXNFcXVhbFRvU3RyaW5n
OkAiQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXkiXSk7Ci0gICAgRVhQRUNUX1RS
VUUoW0FWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gaXNFcXVhbFRvU3Ry
aW5nOkAiQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiJdKTsKLSAgICBF
WFBFQ1RfVFJVRShbQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIGlz
RXF1YWxUb1N0cmluZzpAIkFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlv
biJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVk
Tm90aWZpY2F0aW9uIGlzRXF1YWxUb1N0cmluZzpAIkFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRp
b25FbmRlZE5vdGlmaWNhdGlvbiJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZDYXB0dXJlU2Vzc2lv
bkludGVycnVwdGlvblJlYXNvbktleSBpc0VxdWFsVG9TdHJpbmc6QCJBVkNhcHR1cmVTZXNzaW9u
SW50ZXJydXB0aW9uUmVhc29uS2V5Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkNhcHR1cmVTZXNz
aW9uRXJyb3JLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5Il0p
OwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCBpc0VxdWFs
VG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCJdKTsKLSAgICBFWFBFQ1Rf
VFJVRShbQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50IGlzRXF1YWxUb1N0cmluZzpA
IkFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlTb2xvQW1iaWVudCJdKTsKLSAgICBFWFBFQ1RfVFJVRShb
QVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrIGlzRXF1YWxUb1N0cmluZzpAIkFWQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlQbGF5YmFjayJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZBdWRpb1Nlc3Np
b25DYXRlZ29yeVJlY29yZCBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5
UmVjb3JkIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFu
ZFJlY29yZCBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFuZFJl
Y29yZCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZBdWRpb1Nlc3Npb25DYXRlZ29yeUF1ZGlvUHJv
Y2Vzc2luZyBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QXVkaW9Qcm9j
ZXNzaW5nIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lvbk1vZGVEZWZhdWx0IGlz
RXF1YWxUb1N0cmluZzpAIkFWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQiXSk7Ci0gICAgRVhQRUNU
X1RSVUUoW0FWQXVkaW9TZXNzaW9uTW9kZVZpZGVvQ2hhdCBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1
ZGlvU2Vzc2lvbk1vZGVWaWRlb0NoYXQiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWQXVkaW9TZXNz
aW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIGlzRXF1YWxUb1N0cmluZzpAIkFWQXVkaW9TZXNz
aW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlv
U2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZBdWRpb1Nlc3Np
b25JbnRlcnJ1cHRpb25UeXBlS2V5Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lv
bkludGVycnVwdGlvbk9wdGlvbktleSBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvbk9wdGlvbktleSJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZSb3V0ZURldGVjdG9y
TXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbiBpc0VxdWFsVG9TdHJp
bmc6QCJBVlJvdXRlRGV0ZWN0b3JNdWx0aXBsZVJvdXRlc0RldGVjdGVkRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uIl0pOwotI2VuZGlmCi19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKLQotfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>