<?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>256897</bug_id>
          
          <creation_ts>2023-05-17 09:17:43 -0700</creation_ts>
          <short_desc>REGRESSION(264134@main): breaks membuster</short_desc>
          <delta_ts>2023-05-17 09:23:22 -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>256685</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1955911</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-05-17 09:17:43 -0700</bug_when>
    <thetext>https://commits.webkit.org/264134@main introduced a regression:
breaks membuster

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>1955913</commentid>
    <comment_count>1</comment_count>
      <attachid>466384</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-05-17 09:17:49 -0700</bug_when>
    <thetext>Created attachment 466384
REVERT of 264134@main

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>1955919</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-05-17 09:22:48 -0700</bug_when>
    <thetext>Committed 264152@main (7b574a20516f): &lt;https://commits.webkit.org/264152@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466384.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1955920</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-05-17 09:23:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/109463142&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466384</attachid>
            <date>2023-05-17 09:17:49 -0700</date>
            <delta_ts>2023-05-17 09:22:49 -0700</delta_ts>
            <desc>REVERT of 264134@main</desc>
            <filename>bug-256897-20230517161748.patch</filename>
            <type>text/plain</type>
            <size>244060</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA2NDYwOTM2M2VlYWU2OGNjNmVlMzA5NTdjNjUzZjZkMTlhYzk3ODNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBXZWQsIDE3IE1heSAyMDIzIDE2OjE3OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI2NDEzNEBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1Njg5NwoKYnJlYWtzIG1lbWJ1c3RlcgoKUmV2ZXJ0ZWQgY2hh
bmdlc2V0OgoKIltKU0NdIEltcGxlbWVudCBtZWdhbW9ycGhpYyBzdG9yZSBjYWNoZSIKaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjY4NQpodHRwczovL2NvbW1pdHMu
d2Via2l0Lm9yZy8yNjQxMzRAbWFpbgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5vcmRlciAgICB8ICAyMiArLQogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogIHwgICA0ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcCB8ICAyMCAtLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuaCAgIHwgICAyIC0KIC4uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0
YXR1cy5jcHAgICB8ICAxNCArCiAuLi4vYnl0ZWNvZGUvSW5saW5lQ2FjaGVDb21waWxlci5jcHAg
ICAgICAgICAgfCAxODEgKy0tLS0tLS0tLQogLi4uL2J5dGVjb2RlL0lubGluZUNhY2hlQ29tcGls
ZXIuaCAgICAgICAgICAgIHwgIDExIC0KIC4uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVDYWxsRnJhbWUuaCB8ICAxNCAtCiAuLi4vSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlT
dGF0dXMuY3BwICAgfCAgNTkgKy0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5U3RhdHVzLmggIHwgICA3ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
S2luZC5oICAgICAgfCAgMzIgKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBh
dGNoLmNwcCAgICB8IDMyOSArKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZXBhdGNoLmggICAgICB8ICAyMCArLQogLi4uL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcCAgICAgICAgICAgIHwgMTI1ICsrKy0tLS0KIC4uLi9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oICAgICAgICAgICAgICB8ICAxOCArLQogLi4uL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgICAgICAgIHwgIDE4ICstCiAuLi4vYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmggICAgICAgICAgfCAgIDIgKy0KIC4uLi9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaCAgICAgICB8ICAyMiArLQogLi4uL2RmZy9ERkdCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlLmNwcCAgICAgIHwgICAzICstCiAuLi4vSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCAgfCAgMTAgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oICAgICB8ICAgNSArLQogLi4uL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAgICAgICAgICAgIHwgIDI1ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAgICAgICAgfCAgIDIgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCAgIHwgIDE1ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuY3BwICAgICAgICAgfCAgMjIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oICAgICAgICAgICB8ICAgOSAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmggICAgICAgfCAgIDIgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCAgIHwgIDIyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaCAgICAgfCAgMjIgKy0KIC4uLi9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwICAgICB8ICAgNSArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggIHwgICAyIC0KIC4uLi9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwICB8ICA0MiArLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaCB8ICAgNSArLQogLi4uL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAgICAg
ICAgICAgIHwgICAyIC0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgICAgICAgICAg
ICAgICB8ICA4MyArLS0tLQogLi4uL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAgICAgIHwgICA2ICstCiAuLi4vZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwICAg
ICAgICAgfCAgIDIgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwIHwgICAyIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCB8IDE3OSArKy0tLS0tLS0tCiAuLi4vaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwICAgICAg
ICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcCB8IDEwNSAtLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmggICB8ICAgMSAtCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCAg
ICAgICAgICAgfCAgMTAgKy0KIC4uLi9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwICAg
ICAgICAgICB8ICA0MiArLS0KIC4uLi9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCAgICAg
ICAgICAgICB8ICAzMCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCAgIHwgMjc4ICsrLS0tLS0tLS0tLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmggICAgIHwgIDIwICstCiAuLi4vSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcCAgfCAgMjAgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcCB8ICAgNiArLQogLi4uL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwICAgICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oICAgICAgfCAgIDkgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwICAgICB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHAgIHwgIDEwICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmggfCAgIDIgKy0KIC4uLi9ydW50aW1lL01lZ2Ftb3JwaGljQ2FjaGUuY3BwICAg
ICAgICAgICAgICB8ICAxMiAtCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9NZWdhbW9ycGhp
Y0NhY2hlLmggfCAgNzIgLS0tLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcCAgIHwgICA2ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAgfCAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmggICB8ICAgNiArLQogLi4uL21lZ2Ftb3JwaGljLXN0b3JlLWJ5LXZhbC5qcyAgICAgICAg
ICAgICAgIHwgIDE5IC0KIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL21lZ2Ftb3JwaGljLXN0b3Jl
LmpzICB8ICAxNyAtCiAuLi4vcHV0LWJ5LWlkLW1lZ2Ftb3JwaGljLWhhdmUtYS1iYWQtdGltZS5q
cyAgfCAgNDQgLS0tCiA2MiBmaWxlcyBjaGFuZ2VkLCA1MjEgaW5zZXJ0aW9ucygrKSwgMTU2NyBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0S2luZC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvbWVnYW1vcnBoaWMtc3RvcmUtYnktdmFsLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvbWVnYW1vcnBoaWMtc3RvcmUuanMKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBKU1Rlc3RzL3N0cmVzcy9wdXQtYnktaWQtbWVnYW1vcnBoaWMtaGF2ZS1hLWJhZC10aW1lLmpz
CgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVy
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCmluZGV4IDI2MWJl
NWY3ZjZlNi4uMzI0NDZjNTg0ZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUub3JkZXIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLm9yZGVyCkBAIC0yNTA1LDcgKzI1MDUsNyBAQCBfX1pOM0pTQzNERkdMMjFsaW5rRm9y
VGh1bmtHZW5lcmF0b3JFUE5TXzJWTUVOU18yMkNvZGVTcGVjaWFsaXphdGlvbktpbmRFCiBfX1pO
M0pTQzNERkdMMTFzbG93UGF0aEZvckVSTlMwXzEyQ0NhbGxIZWxwZXJzRVBOU18yVk1FUEZQY1BO
U185RXhlY1N0YXRlRUUKIF9vcGVyYXRpb25MaW5rQ2FsbAogX2xpbmtGb3IKLV9vcGVyYXRpb25Q
dXRCeVZhbFNsb3BweQorX29wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0CiBfb3BlcmF0aW9uQ29t
cGFyZUVxCiBfb3BlcmF0aW9uR2V0QnlWYWwKIF9fWk4zSlNDM0RGRzEwZGZnTGlua0ZvckVQTlNf
OUV4ZWNTdGF0ZUVSTlNfMTJDYWxsTGlua0luZm9FUE5TXzlDb2RlQmxvY2tFUE5TXzEwSlNGdW5j
dGlvbkVOU18yMU1hY3JvQXNzZW1ibGVyQ29kZVB0ckVOU18yMkNvZGVTcGVjaWFsaXphdGlvbktp
bmRFCkBAIC0yOTE3LDEwICsyOTE3LDEwIEBAIF9fWk4zSlNDM0RGRzE0U3BlY3VsYXRpdmVKSVQx
M2NhbGxPcGVyYXRpb25FUEZQTlNfNkpTQ2VsbEVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTCiBfX1pO
M0pTQzNERkcxNFNwZWN1bGF0aXZlSklUMTNjYWxsT3BlcmF0aW9uRVBGdlBOU185RXhlY1N0YXRl
RXhQTlNfNkpTQ2VsbEVQTlNfMTBJZGVudGlmaWVyRUVOU18xMlg4NlJlZ2lzdGVyczEwUmVnaXN0
ZXJJREVTQl9TN18KIF9fWk5LM0pTQzNERkcyMUNhbGxTbG93UGF0aEdlbmVyYXRvcklOU18yMkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXJJTlNfMTJYODZBc3NlbWJsZXJFRTRKdW1wRVBGdlBOU185RXhl
Y1N0YXRlRXhQTlNfNkpTQ2VsbEVQTlNfMTBJZGVudGlmaWVyRUVOUzBfMTFOb1Jlc3VsdFRhZ0VF
NGNhbGxFdgogX29wZXJhdGlvblRvU3RyaW5nCi1fb3BlcmF0aW9uUHV0QnlJZFNsb3BweU9wdGlt
aXplCi1fb3BlcmF0aW9uUHV0QnlJZFNsb3BweU9wdGltaXplV2l0aFJldHVybkFkZHJlc3MKK19v
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUKK19vcGVyYXRpb25QdXRCeUlkTm9uU3Ry
aWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcwogX19aTjNKU0MzREZHMTdkZmdSZXBhdGNoUHV0
QnlJREVQTlNfOUV4ZWNTdGF0ZUVOU183SlNWYWx1ZUVSS05TXzEwSWRlbnRpZmllckVSS05TXzE1
UHV0UHJvcGVydHlTbG90RVJOU18xN1N0cnVjdHVyZVN0dWJJbmZvRU5TXzdQdXRLaW5kRQotX29w
ZXJhdGlvblB1dEJ5SWRTbG9wcHkKK19vcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0CiBfX1pOM1dU
RjIwVGhyZWFkSWRlbnRpZmllckRhdGE4ZGVzdHJ1Y3RFUHYKIF9fWk4zV1RGMTN0aHJlYWREaWRF
eGl0RWoKIF9fWk4zV1RGMjBUQ01hbGxvY19UaHJlYWRDYWNoZTE4RGVzdHJveVRocmVhZENhY2hl
RVB2CkBAIC0zNDA3LDggKzM0MDcsOCBAQCBfX1pOM0pTQzNERkcxNUFzc2VtYmx5SGVscGVyczEx
dW5ib3hEb3VibGVFTlNfMTJYODZSZWdpc3RlcnMxMFJlZ2lzdGVySURFTlMyXzEzWAogX19aTjNK
U0MzREZHMTRTcGVjdWxhdGl2ZUpJVDIwY29tcGlsZURvdWJsZUNvbXBhcmVFUE5TMF80Tm9kZUVO
U18yM01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uMTVEb3VibGVDb25kaXRpb25FCiBfX1pOM0pTQzNE
RkcxNFNwZWN1bGF0aXZlSklUMTlmaWxsU3BlY3VsYXRlRG91YmxlRU5TMF80RWRnZUUKIF9vcGVy
YXRpb25NYWtlUm9wZTIKLV9vcGVyYXRpb25QdXRCeUlkU2xvcHB5QnVpbGRMaXN0Ci1fb3BlcmF0
aW9uUHV0QnlJZFNsb3BweUJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNzCitfb3BlcmF0aW9uUHV0
QnlJZE5vblN0cmljdEJ1aWxkTGlzdAorX29wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExp
c3RXaXRoUmV0dXJuQWRkcmVzcwogX19aTjNKU0MzREZHMTlkZmdCdWlsZFB1dEJ5SWRMaXN0RVBO
U185RXhlY1N0YXRlRU5TXzdKU1ZhbHVlRVJLTlNfMTBJZGVudGlmaWVyRVJLTlNfMTVQdXRQcm9w
ZXJ0eVNsb3RFUk5TXzE3U3RydWN0dXJlU3R1YkluZm9FTlNfN1B1dEtpbmRFCiBfX1pOM0pTQzIy
UG9seW1vcnBoaWNQdXRCeUlkTGlzdDRmcm9tRU5TXzdQdXRLaW5kRVJOU18xN1N0cnVjdHVyZVN0
dWJJbmZvRU5TXzIxTWFjcm9Bc3NlbWJsZXJDb2RlUHRyRQogX19aTjNKU0MyMlBvbHltb3JwaGlj
UHV0QnlJZExpc3RDMkVOU183UHV0S2luZEVSTlNfMTdTdHJ1Y3R1cmVTdHViSW5mb0VOU18yMU1h
Y3JvQXNzZW1ibGVyQ29kZVB0ckUKQEAgLTM1ODUsNyArMzU4NSw3IEBAIF9fWk4zV1RGMTdkb3Vi
bGVfY29udmVyc2lvbkwyMUdlbmVyYXRlQ291bnRlZERpZ2l0c0VpUGlQTlMwXzZCaWdudW1FUzNf
TlMwXzE1QnVmCiBfX1pOM1dURjE3ZG91YmxlX2NvbnZlcnNpb242QmlnbnVtMjFEaXZpZGVNb2R1
bG9JbnRCaWdudW1FUktTMV8KIF9fWk4zV1RGMTdkb3VibGVfY29udmVyc2lvbjZCaWdudW0xM1N1
YnRyYWN0VGltZXNFUktTMV9pCiBfX1pOM1dURjE3ZG91YmxlX2NvbnZlcnNpb242QmlnbnVtMTRT
dWJ0cmFjdEJpZ251bUVSS1MxXwotX29wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNT
bG9wcHkKK19vcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0CiBfX1pO
M0pTQzhKU09iamVjdDE2cHV0QnlJbmRleElubGluZUVQTlNfOUV4ZWNTdGF0ZUVqTlNfN0pTVmFs
dWVFYgogX19aTjNKU0MzSklUMjVlbWl0X29wX3Jlc29sdmVfd2l0aF9iYXNlRVBOU18xMUluc3Ry
dWN0aW9uRQogX19aTjNKU0MzSklUMjllbWl0U2xvd19vcF9yZXNvbHZlX3dpdGhfYmFzZUVQTlNf
MTFJbnN0cnVjdGlvbkVSUE5TXzEzU2xvd0Nhc2VFbnRyeUUKQEAgLTM3NjMsOSArMzc2Myw5IEBA
IF9fWk4zSlNDTDI0ZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyRVBOU185RXhlY1N0YXRlRQogX19a
TjNKU0NMMjRkYXRlUHJvdG9GdW5jU2V0RnVsbFllYXJFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pT
Q0wyM3NldE5ld1ZhbHVlRnJvbURhdGVBcmdzRVBOU185RXhlY1N0YXRlRWliCiBfX1pOM0pTQzlD
b2RlQmxvY2syNmZpbmRDbG9zdXJlQ2FsbEZvclJldHVyblBDRU5TXzE2UmV0dXJuQWRkcmVzc1B0
ckUKLV9vcGVyYXRpb25QdXRCeUlkRGlyZWN0U2xvcHB5T3B0aW1pemUKLV9vcGVyYXRpb25QdXRC
eUlkRGlyZWN0U2xvcHB5T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcwotX29wZXJhdGlvblB1dEJ5
SWREaXJlY3RTbG9wcHkKK19vcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUK
K19vcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVz
cworX29wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3QKIF9fWk4zV1RGNlZlY3RvcklOM0pT
QzEzUHV0QnlJZEFjY2Vzc0VMbTJFTlNfMTVDcmFzaE9uT3ZlcmZsb3dFRTE1cmVzZXJ2ZUNhcGFj
aXR5RW0KIF9fWk4zSlNDM0RGRzE1ZGZnUmVzZXRQdXRCeUlERVJOU18xM1JlcGF0Y2hCdWZmZXJF
Uk5TXzE3U3RydWN0dXJlU3R1YkluZm9FCiBfX1pOM0pTQ0wxOGFycmF5UHJvdG9GdW5jU29tZUVQ
TlNfOUV4ZWNTdGF0ZUUKQEAgLTQ4MDIsNyArNDgwMiw3IEBAIF9KU1N0cmluZ0dldExlbmd0aAog
X19aTjNKU0M1TGV4ZXJJdEUyM3BhcnNlSWRlbnRpZmllclNsb3dDYXNlSUxiMUVFRU5TXzExSlNU
b2tlblR5cGVFUE5TXzExSlNUb2tlbkRhdGFFamIKIF9fWk4zV1RGNlZlY3RvcklOM0pTQzEwTGFi
ZWxTY29wZUVMbThFTlNfMTVDcmFzaE9uT3ZlcmZsb3dFRTE1cmVzZXJ2ZUNhcGFjaXR5RW0KIF9f
Wk4zSlNDMTZKU0NhbGxiYWNrT2JqZWN0SU5TXzIwSlNEZXN0cnVjdGlibGVPYmplY3RFRTExZ2V0
Q2FsbERhdGFFUE5TXzZKU0NlbGxFUk5TXzhDYWxsRGF0YUUKLV9vcGVyYXRpb25QdXREb3VibGVC
eVZhbEJleW9uZEFycmF5Qm91bmRzU2xvcHB5Citfb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlv
bmRBcnJheUJvdW5kc05vblN0cmljdAogX0pTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZQogX19aTjNKU0MxNWNvbnN0cnVjdFN0cmluZ0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2Jh
bE9iamVjdEVOU183SlNWYWx1ZUUKIF9fWk4zV1RGMTdjaGFyYWN0ZXJzVG9GbG9hdEVQS3RtUm0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjIzMzRiNGE5NTM2Li5hMTg2YzQ2Nzc0
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDMsNiArNDQzLDcgQEAKIAkJ
MEY5REFBMEExRkQxQzNEMzAwNzlDNUIyIC8qIFBhcmFsbGVsU291cmNlQWRhcHRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5REFBMDgxRkQxQzND
ODAwNzlDNUIyIC8qIFBhcmFsbGVsU291cmNlQWRhcHRlci5oICovOyB9OwogCQkwRjlFMzI2NDFC
MDVBQjA0MDA4MDFFRDUgLyogREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUUzMjYyMUIwNUFCMDQw
MDgwMUVENSAvKiBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5oICovOyB9OwogCQkwRjlG
QjRGNTE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RkI0RjMxN0ZDQjkxNzAwQ0I2
N0Y4IC8qIERGR1N0YWNrTGF5b3V0UGhhc2UuaCAqLzsgfTsKKwkJMEY5RkM4QzUxNEUxQjYwNDAw
RDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZBMkMxN0MxN0Q3Q0Y4
NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5u
ZXJVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTU4MUI4MTUwRTk1MkEwMEI5
QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCAqLzsgfTsKIAkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5
IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkE1ODFCOTE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCAqLzsgfTsK
QEAgLTI5NzksNiArMjk4MCw3IEBACiAJCTBGOUUzMjYyMUIwNUFCMDQwMDgwMUVENSAvKiBERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBoYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBw
YXRoID0gZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlvdXRQaGFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdGFja0xheW91dFBoYXNlLmg7
IHBhdGggPSBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGQTEyNjUzMjBDOERCOTgwMDRCMEQxMSAvKiBTdHViSW5mb1N1bW1hcnkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R1YkluZm9TdW1tYXJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8q
IFRlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEy
QzE3QTE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTA3NCw2ICs5MDc2LDcgQEAKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYz
QzYgLyogUHV0QnlTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyog
UHV0QnlWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRBODE4QjkyQzREMDAxNzhBM0YgLyogUHV0
QnlWYXJpYW50LmggKi8sCisJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQu
aCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5j
cHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMu
aCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5j
cHAgKi8sCkBAIC0xMDk3MCw2ICsxMDk3Myw3IEBACiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVG
M0M2IC8qIFB1dEJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRBQTE4QjkyQzRE
MDAxNzhBM0YgLyogUHV0QnlWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1
RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTMzQTk0OTYyMjU1MzIzMDAwRDQyQjA2IC8qIFJhbmRvbWl6aW5nRnV6emVy
QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBS
ZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCA0ZDc4NzQwZGMzODAuLjM4ZmVhMDFkMGYz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApA
QCAtNzMsNyArNzMsNiBAQCBSZWY8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNoZQogewogICAgIHN3aXRjaCAo
dHlwZSkgewogICAgIGNhc2UgTG9hZE1lZ2Ftb3JwaGljOgotICAgIGNhc2UgU3RvcmVNZWdhbW9y
cGhpYzoKICAgICBjYXNlIEluSGl0OgogICAgIGNhc2UgSW5NaXNzOgogICAgIGNhc2UgRGVsZXRl
Tm9uQ29uZmlndXJhYmxlOgpAQCAtOTEsNyArOTAsNiBAQCBSZWY8QWNjZXNzQ2FzZT4gQWNjZXNz
Q2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNzVHlwZSB0eXBlLCBDYWNo
ZQogICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVyaWM6CiAgICAgY2FzZSBJbmRleGVkUHJveHlPYmpl
Y3RMb2FkOgogICAgIGNhc2UgSW5kZXhlZE1lZ2Ftb3JwaGljTG9hZDoKLSAgICBjYXNlIEluZGV4
ZWRNZWdhbW9ycGhpY1N0b3JlOgogICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKICAgICBjYXNl
IEluZGV4ZWREb3VibGVMb2FkOgogICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgpAQCAt
MzQyLDcgKzM0MCw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Z3VhcmRlZEJ5U3RydWN0dXJlQ2hlY2tT
a2lwcGluZ0NvbnN0YW50SWRlbnRpZmllckNoZWNrKCkgY29uc3QKIAogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBMb2FkTWVnYW1vcnBoaWM6Ci0gICAgY2FzZSBTdG9yZU1lZ2Ftb3Jw
aGljOgogICAgIGNhc2UgQXJyYXlMZW5ndGg6CiAgICAgY2FzZSBTdHJpbmdMZW5ndGg6CiAgICAg
Y2FzZSBEaXJlY3RBcmd1bWVudHNMZW5ndGg6CkBAIC0zNTYsNyArMzUzLDYgQEAgYm9vbCBBY2Nl
c3NDYXNlOjpndWFyZGVkQnlTdHJ1Y3R1cmVDaGVja1NraXBwaW5nQ29uc3RhbnRJZGVudGlmaWVy
Q2hlY2soKSBjb25zdAogICAgIGNhc2UgSW5zdGFuY2VPZkdlbmVyaWM6CiAgICAgY2FzZSBJbmRl
eGVkUHJveHlPYmplY3RMb2FkOgogICAgIGNhc2UgSW5kZXhlZE1lZ2Ftb3JwaGljTG9hZDoKLSAg
ICBjYXNlIEluZGV4ZWRNZWdhbW9ycGhpY1N0b3JlOgogICAgIGNhc2UgSW5kZXhlZEludDMyTG9h
ZDoKICAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgogICAgIGNhc2UgSW5kZXhlZENvbnRpZ3Vv
dXNMb2FkOgpAQCAtNDM1LDcgKzQzMSw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cmVxdWlyZXNJZGVu
dGlmaWVyTmFtZU1hdGNoKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2Ug
TG9hZDoKICAgICBjYXNlIExvYWRNZWdhbW9ycGhpYzoKLSAgICBjYXNlIFN0b3JlTWVnYW1vcnBo
aWM6CiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSBieV92YWwgZm9yIHRoZXNlIHB1
dHMsIGJ1dCB3ZSBkbyBjYXJlIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgIGNhc2UgVHJhbnNp
dGlvbjoKICAgICBjYXNlIERlbGV0ZToKQEAgLTQ2OSw3ICs0NjQsNiBAQCBib29sIEFjY2Vzc0Nh
c2U6OnJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgpIGNvbnN0CiAgICAgY2FzZSBJbnN0YW5j
ZU9mR2VuZXJpYzoKICAgICBjYXNlIEluZGV4ZWRQcm94eU9iamVjdExvYWQ6CiAgICAgY2FzZSBJ
bmRleGVkTWVnYW1vcnBoaWNMb2FkOgotICAgIGNhc2UgSW5kZXhlZE1lZ2Ftb3JwaGljU3RvcmU6
CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgogICAgIGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6
CiAgICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CkBAIC01MjgsNyArNTIyLDYgQEAgYm9v
bCBBY2Nlc3NDYXNlOjpyZXF1aXJlc0ludDMyUHJvcGVydHlDaGVjaygpIGNvbnN0CiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBMb2FkTWVnYW1vcnBoaWM6
Ci0gICAgY2FzZSBTdG9yZU1lZ2Ftb3JwaGljOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKICAgICBj
YXNlIERlbGV0ZToKICAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKQEAgLTU2MCw3ICs1
NTMsNiBAQCBib29sIEFjY2Vzc0Nhc2U6OnJlcXVpcmVzSW50MzJQcm9wZXJ0eUNoZWNrKCkgY29u
c3QKICAgICBjYXNlIFNldFByaXZhdGVCcmFuZDoKICAgICBjYXNlIEluZGV4ZWRQcm94eU9iamVj
dExvYWQ6CiAgICAgY2FzZSBJbmRleGVkTWVnYW1vcnBoaWNMb2FkOgotICAgIGNhc2UgSW5kZXhl
ZE1lZ2Ftb3JwaGljU3RvcmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIEluZGV4
ZWRJbnQzMkxvYWQ6CiAgICAgY2FzZSBJbmRleGVkRG91YmxlTG9hZDoKQEAgLTYyMCw3ICs2MTIs
NiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAgc3dpdGNo
IChtX3R5cGUpIHsKICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBMb2FkTWVnYW1vcnBoaWM6Ci0g
ICAgY2FzZSBTdG9yZU1lZ2Ftb3JwaGljOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKICAgICBjYXNl
IERlbGV0ZToKICAgICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKQEAgLTY1MSw3ICs2NDIs
NiBAQCBib29sIEFjY2Vzc0Nhc2U6Om5lZWRzU2NyYXRjaEZQUigpIGNvbnN0CiAgICAgY2FzZSBJ
bnN0YW5jZU9mR2VuZXJpYzoKICAgICBjYXNlIEluZGV4ZWRQcm94eU9iamVjdExvYWQ6CiAgICAg
Y2FzZSBJbmRleGVkTWVnYW1vcnBoaWNMb2FkOgotICAgIGNhc2UgSW5kZXhlZE1lZ2Ftb3JwaGlj
U3RvcmU6CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgogICAgIGNhc2UgSW5kZXhlZENvbnRp
Z3VvdXNMb2FkOgogICAgIGNhc2UgSW5kZXhlZEFycmF5U3RvcmFnZUxvYWQ6CkBAIC03NjYsNyAr
NzU2LDYgQEAgdm9pZCBBY2Nlc3NDYXNlOjpmb3JFYWNoRGVwZW5kZW50Q2VsbChWTSYsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjoK
ICAgICBjYXNlIExvYWQ6CiAgICAgY2FzZSBMb2FkTWVnYW1vcnBoaWM6Ci0gICAgY2FzZSBTdG9y
ZU1lZ2Ftb3JwaGljOgogICAgIGNhc2UgVHJhbnNpdGlvbjoKICAgICBjYXNlIERlbGV0ZToKICAg
ICBjYXNlIERlbGV0ZU5vbkNvbmZpZ3VyYWJsZToKQEAgLTc4NCw3ICs3NzMsNiBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmZvckVhY2hEZXBlbmRlbnRDZWxsKFZNJiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikgY29uc3QKICAgICBjYXNlIFNjb3BlZEFyZ3VtZW50c0xlbmd0aDoKICAgICBjYXNlIEluc3Rh
bmNlT2ZHZW5lcmljOgogICAgIGNhc2UgSW5kZXhlZE1lZ2Ftb3JwaGljTG9hZDoKLSAgICBjYXNl
IEluZGV4ZWRNZWdhbW9ycGhpY1N0b3JlOgogICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKICAg
ICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgogICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2Fk
OgpAQCAtODY1LDcgKzg1Myw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6ZG9lc0NhbGxzKFZNJiB2bSwg
VmVjdG9yPEpTQ2VsbCo+KiBjZWxsc1RvTWFya0lmRG9lc0NhbGxzKSBjb25zCiAgICAgY2FzZSBE
ZWxldGVNaXNzOgogICAgIGNhc2UgTG9hZDoKICAgICBjYXNlIExvYWRNZWdhbW9ycGhpYzoKLSAg
ICBjYXNlIFN0b3JlTWVnYW1vcnBoaWM6CiAgICAgY2FzZSBNaXNzOgogICAgIGNhc2UgR2V0R2V0
dGVyOgogICAgIGNhc2UgSW5IaXQ6CkBAIC04ODEsNyArODY4LDYgQEAgYm9vbCBBY2Nlc3NDYXNl
Ojpkb2VzQ2FsbHMoVk0mIHZtLCBWZWN0b3I8SlNDZWxsKj4qIGNlbGxzVG9NYXJrSWZEb2VzQ2Fs
bHMpIGNvbnMKICAgICBjYXNlIEluc3RhbmNlT2ZNaXNzOgogICAgIGNhc2UgSW5zdGFuY2VPZkdl
bmVyaWM6CiAgICAgY2FzZSBJbmRleGVkTWVnYW1vcnBoaWNMb2FkOgotICAgIGNhc2UgSW5kZXhl
ZE1lZ2Ftb3JwaGljU3RvcmU6CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgogICAgIGNhc2Ug
SW5kZXhlZERvdWJsZUxvYWQ6CiAgICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6CkBAIC05
OTIsOSArOTc4LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpjYW5SZXBsYWNlKGNvbnN0IEFjY2Vzc0Nh
c2UmIG90aGVyKSBjb25zdAogICAgIAogICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBM
b2FkTWVnYW1vcnBoaWM6Ci0gICAgY2FzZSBTdG9yZU1lZ2Ftb3JwaGljOgogICAgIGNhc2UgSW5k
ZXhlZE1lZ2Ftb3JwaGljTG9hZDoKLSAgICBjYXNlIEluZGV4ZWRNZWdhbW9ycGhpY1N0b3JlOgog
ICAgIGNhc2UgSW5kZXhlZEludDMyTG9hZDoKICAgICBjYXNlIEluZGV4ZWREb3VibGVMb2FkOgog
ICAgIGNhc2UgSW5kZXhlZENvbnRpZ3VvdXNMb2FkOgpAQCAtMTIwNCw3ICsxMTg4LDYgQEAgaW5s
aW5lIHZvaWQgQWNjZXNzQ2FzZTo6cnVuV2l0aERvd25jYXN0KGNvbnN0IEZ1bmMmIGZ1bmMpCiB7
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIExvYWRNZWdhbW9ycGhpYzoKLSAgICBj
YXNlIFN0b3JlTWVnYW1vcnBoaWM6CiAgICAgY2FzZSBUcmFuc2l0aW9uOgogICAgIGNhc2UgRGVs
ZXRlOgogICAgIGNhc2UgRGVsZXRlTm9uQ29uZmlndXJhYmxlOgpAQCAtMTIxOSw3ICsxMjAyLDYg
QEAgaW5saW5lIHZvaWQgQWNjZXNzQ2FzZTo6cnVuV2l0aERvd25jYXN0KGNvbnN0IEZ1bmMmIGZ1
bmMpCiAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoKICAgICBjYXNlIFNldFByaXZhdGVCcmFu
ZDoKICAgICBjYXNlIEluZGV4ZWRNZWdhbW9ycGhpY0xvYWQ6Ci0gICAgY2FzZSBJbmRleGVkTWVn
YW1vcnBoaWNTdG9yZToKICAgICBjYXNlIEluZGV4ZWRJbnQzMkxvYWQ6CiAgICAgY2FzZSBJbmRl
eGVkRG91YmxlTG9hZDoKICAgICBjYXNlIEluZGV4ZWRDb250aWd1b3VzTG9hZDoKQEAgLTEzNDYs
NyArMTMyOCw2IEBAIGJvb2wgQWNjZXNzQ2FzZTo6Y2FuQmVTaGFyZWQoY29uc3QgQWNjZXNzQ2Fz
ZSYgbGhzLCBjb25zdCBBY2Nlc3NDYXNlJiByaHMpCiAgICAgc3dpdGNoIChsaHMubV90eXBlKSB7
CiAgICAgY2FzZSBMb2FkOgogICAgIGNhc2UgTG9hZE1lZ2Ftb3JwaGljOgotICAgIGNhc2UgU3Rv
cmVNZWdhbW9ycGhpYzoKICAgICBjYXNlIFRyYW5zaXRpb246CiAgICAgY2FzZSBEZWxldGU6CiAg
ICAgY2FzZSBEZWxldGVOb25Db25maWd1cmFibGU6CkBAIC0xMzYzLDcgKzEzNDQsNiBAQCBib29s
IEFjY2Vzc0Nhc2U6OmNhbkJlU2hhcmVkKGNvbnN0IEFjY2Vzc0Nhc2UmIGxocywgY29uc3QgQWNj
ZXNzQ2FzZSYgcmhzKQogICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CiAgICAgY2FzZSBTZXRQ
cml2YXRlQnJhbmQ6CiAgICAgY2FzZSBJbmRleGVkTWVnYW1vcnBoaWNMb2FkOgotICAgIGNhc2Ug
SW5kZXhlZE1lZ2Ftb3JwaGljU3RvcmU6CiAgICAgY2FzZSBJbmRleGVkSW50MzJMb2FkOgogICAg
IGNhc2UgSW5kZXhlZERvdWJsZUxvYWQ6CiAgICAgY2FzZSBJbmRleGVkQ29udGlndW91c0xvYWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAppbmRleCAzOTcx
MDRiNDY2NDAuLjUwYjNhYTA4YzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5oCkBAIC05NSw3ICs5NSw2IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhf
SEVBUF9JREVOVElGSUVSKEFjY2Vzc0Nhc2UpOwogICAgIG1hY3JvKExvYWQpIFwKICAgICBtYWNy
byhMb2FkTWVnYW1vcnBoaWMpIFwKICAgICBtYWNybyhUcmFuc2l0aW9uKSBcCi0gICAgbWFjcm8o
U3RvcmVNZWdhbW9ycGhpYykgXAogICAgIG1hY3JvKERlbGV0ZSkgXAogICAgIG1hY3JvKERlbGV0
ZU5vbkNvbmZpZ3VyYWJsZSkgXAogICAgIG1hY3JvKERlbGV0ZU1pc3MpIFwKQEAgLTE1Miw3ICsx
NTEsNiBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBY2Nlc3NDYXNl
KTsKICAgICBtYWNybyhJbmRleGVkUmVzaXphYmxlVHlwZWRBcnJheUZsb2F0NjRMb2FkKSBcCiAg
ICAgbWFjcm8oSW5kZXhlZFN0cmluZ0xvYWQpIFwKICAgICBtYWNybyhJbmRleGVkTm9JbmRleGlu
Z01pc3MpIFwKLSAgICBtYWNybyhJbmRleGVkTWVnYW1vcnBoaWNTdG9yZSkgXAogICAgIG1hY3Jv
KEluZGV4ZWRJbnQzMlN0b3JlKSBcCiAgICAgbWFjcm8oSW5kZXhlZERvdWJsZVN0b3JlKSBcCiAg
ICAgbWFjcm8oSW5kZXhlZENvbnRpZ3VvdXNTdG9yZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKaW5kZXggZWQ1YWE5YjBkOWMyLi4xZDAyZjE2
YWQ5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0
YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVz
LmNwcApAQCAtMjE3LDYgKzIxNywyMCBAQCBHZXRCeVN0YXR1czo6R2V0QnlTdGF0dXMoY29uc3Qg
UHJveHlPYmplY3RBY2Nlc3NDYXNlJikKIHsKIH0KIAorc3RhdGljIGJvb2wgaXNTYW1lU3R5bGVk
Q29kZU9yaWdpbihDb2RlT3JpZ2luIGxocywgQ29kZU9yaWdpbiByaHMpCit7CisgICAgd2hpbGUg
KHRydWUpIHsKKyAgICAgICAgaWYgKGxocy5ieXRlY29kZUluZGV4KCkgIT0gcmhzLmJ5dGVjb2Rl
SW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCEhbGhzLmlu
bGluZUNhbGxGcmFtZSgpICE9ICEhcmhzLmlubGluZUNhbGxGcmFtZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWxocy5pbmxpbmVDYWxsRnJhbWUoKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBsaHMgPSBsaHMuaW5saW5lQ2FsbEZyYW1lKCkt
PmRpcmVjdENhbGxlcjsKKyAgICAgICAgcmhzID0gcmhzLmlubGluZUNhbGxGcmFtZSgpLT5kaXJl
Y3RDYWxsZXI7CisgICAgfQorfQorCiBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZv
clN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEsIENv
ZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKICAgICBTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSA9IFN0
cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KHByb2ZpbGVkQmxvY2stPnZtKCksIHN0dWJJbmZvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNoZUNv
bXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNoZUNv
bXBpbGVyLmNwcAppbmRleCAwN2Q5YjkxZDRmOTIuLjc0ZDMwNmM2MWQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhY2hlQ29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNoZUNvbXBpbGVyLmNw
cApAQCAtMTMyOCw3NCArMTMyOCw2IEBAIHZvaWQgSW5saW5lQ2FjaGVDb21waWxlcjo6Z2VuZXJh
dGVXaXRoR3VhcmQoQWNjZXNzQ2FzZSYgYWNjZXNzQ2FzZSwgQ0NhbGxIZWxwZXJzCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBjYXNlIEFjY2Vzc0Nhc2U6OlN0b3JlTWVnYW1vcnBoaWM6
IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBBU1NFUlQoIWFjY2Vzc0Nhc2UudmlhR2xv
YmFsUHJveHkoKSk7Ci0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbEFuZFJlcGF0
Y2g7Ci0gICAgICAgIGF1dG8qIHVpZCA9IGFjY2Vzc0Nhc2UubV9pZGVudGlmaWVyLnVpZCgpOwot
Ci0gICAgICAgIGF1dG8gYWxsb2NhdG9yID0gbWFrZURlZmF1bHRTY3JhdGNoQWxsb2NhdG9yKHNj
cmF0Y2hHUFIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBhbGxvY2F0b3IuYWxsb2Nh
dGVTY3JhdGNoR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoM0dQUiA9IGFsbG9jYXRvci5h
bGxvY2F0ZVNjcmF0Y2hHUFIoKTsKLSAgICAgICAgR1BSUmVnIHNjcmF0Y2g0R1BSID0gYWxsb2Nh
dG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwotCi0gICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9j
YXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPSBhbGxvY2F0b3IucHJlc2VydmVS
ZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4
dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsKLQotICAgICAgICBhdXRvIHNsb3dDYXNlcyA9
IGppdC5zdG9yZU1lZ2Ftb3JwaGljUHJvcGVydHkodm0sIGJhc2VHUFIsIEludmFsaWRHUFJSZWcs
IHVpZCwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNj
cmF0Y2gzR1BSLCBzY3JhdGNoNEdQUik7Ci0KLSAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVz
ZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7Ci0gICAgICAgIHN1Y2Nl
ZWQoKTsKLQotICAgICAgICBpZiAoYWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkpIHsKLSAg
ICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwotICAgICAgICAgICAgYWxsb2NhdG9yLnJl
c3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7Ci0gICAg
ICAgICAgICBtX2ZhaWxBbmRSZXBhdGNoLmFwcGVuZChqaXQuanVtcCgpKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBtX2ZhaWxBbmRSZXBhdGNoLmFwcGVuZChzbG93Q2FzZXMpOwotI2Vu
ZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIEFjY2Vzc0Nhc2U6OkluZGV4
ZWRNZWdhbW9ycGhpY1N0b3JlOiB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgQVNTRVJU
KCFhY2Nlc3NDYXNlLnZpYUdsb2JhbFByb3h5KCkpOwotCi0gICAgICAgIENDYWxsSGVscGVyczo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwotCi0gICAgICAgIGF1dG8gYWxsb2NhdG9yID0gbWFrZURlZmF1
bHRTY3JhdGNoQWxsb2NhdG9yKHNjcmF0Y2hHUFIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaDJH
UFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBzY3Jh
dGNoM0dQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKLSAgICAgICAgR1BSUmVn
IHNjcmF0Y2g0R1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpOwotICAgICAgICBH
UFJSZWcgc2NyYXRjaDVHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7Ci0KLSAg
ICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRT
dGF0ZSA9IGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwot
Ci0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgbm90U3RyaW5nOwotICAgICAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBtX3N0dWJJbmZvLT5wcm9wZXJ0eUdQUigpOwotICAgICAgICBpZiAo
IW1fc3R1YkluZm8tPnByb3BlcnR5SXNTdHJpbmcpIHsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChwcm9wZXJ0eUdQUikpOwotICAgICAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RTdHJpbmcocHJvcGVydHlHUFIpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwcm9wZXJ0
eUdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2g1R1BSKTsKLSAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzY3JhdGNoNUdQUikp
OwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxwZXJz
OjpaZXJvLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDVHUFIsIFN0cmluZ0ltcGw6OmZs
YWdzT2Zmc2V0KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFn
SXNBdG9tKCkpKSk7Ci0KLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChqaXQuc3RvcmVNZWdhbW9y
cGhpY1Byb3BlcnR5KHZtLCBiYXNlR1BSLCBzY3JhdGNoNUdQUiwgbnVsbHB0ciwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNjcmF0Y2gzR1BSLCBzY3Jh
dGNoNEdQUikpOwotCi0gICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQ
b3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOwotICAgICAgICBzdWNjZWVkKCk7Ci0KLSAgICAg
ICAgaWYgKGFsbG9jYXRvci5kaWRSZXVzZVJlZ2lzdGVycygpKSB7Ci0gICAgICAgICAgICBzbG93
Q2FzZXMubGluaygmaml0KTsKLSAgICAgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVn
aXN0ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOwotICAgICAgICAgICAgbV9mYWls
QW5kUmVwYXRjaC5hcHBlbmQoaml0Lmp1bXAoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgbV9mYWlsQW5kUmVwYXRjaC5hcHBlbmQoc2xvd0Nhc2VzKTsKLSNlbmRpZgotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCiAgICAgZGVmYXVsdDoKICAgICAgICAgZW1pdERlZmF1bHRHdWFyZCgp
OwogICAgICAgICBicmVhazsKQEAgLTIxNjYsMTAgKzIwOTgsOCBAQCB2b2lkIElubGluZUNhY2hl
Q29tcGlsZXI6OmdlbmVyYXRlSW1wbChBY2Nlc3NDYXNlJiBhY2Nlc3NDYXNlKQogICAgIGNhc2Ug
QWNjZXNzQ2FzZTo6UHJveHlPYmplY3RTdG9yZToKICAgICBjYXNlIEFjY2Vzc0Nhc2U6Okluc3Rh
bmNlT2ZHZW5lcmljOgogICAgIGNhc2UgQWNjZXNzQ2FzZTo6TG9hZE1lZ2Ftb3JwaGljOgotICAg
IGNhc2UgQWNjZXNzQ2FzZTo6U3RvcmVNZWdhbW9ycGhpYzoKICAgICBjYXNlIEFjY2Vzc0Nhc2U6
OkluZGV4ZWRQcm94eU9iamVjdExvYWQ6CiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbmRleGVkTWVn
YW1vcnBoaWNMb2FkOgotICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW5kZXhlZE1lZ2Ftb3JwaGljU3Rv
cmU6CiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbmRleGVkSW50MzJMb2FkOgogICAgIGNhc2UgQWNj
ZXNzQ2FzZTo6SW5kZXhlZERvdWJsZUxvYWQ6CiAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbmRleGVk
Q29udGlndW91c0xvYWQ6CkBAIC0yNjkyLDE4ICsyNjIyLDYgQEAgc3RhdGljIHZvaWQgY29tbWl0
KGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2bSwgc3RkOjp1bmlxdWVfcHRy
PFdhdGMKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjYW5Vc2VNZWdhbW9ycGhpY1B1
dEZhc3RQYXRoKFN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG8oKSB8fCBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJv
dG90eXBlKCkgfHwgc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1B1dCgpIHx8IHN0cnVj
dHVyZS0+aGFzUG9seVByb3RvKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKLSAgICAg
ICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKTsKLSAgICB9
Ci19Ci0KIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgSW5saW5lQ2FjaGVDb21waWxlcjo6cmVnZW5l
cmF0ZShjb25zdCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgUG9seW1vcnBoaWNB
Y2Nlc3MmIHBvbHksIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKQEAgLTI3NzYsMjIgKzI2OTQsMTYgQEAgQWNj
ZXNzR2VuZXJhdGlvblJlc3VsdCBJbmxpbmVDYWNoZUNvbXBpbGVyOjpyZWdlbmVyYXRlKGNvbnN0
IEdDU2FmZUNvbmN1cnJlbnRKU0wKICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGNhc2Vz
Lmxhc3QoKS0+bV9pZGVudGlmaWVyOwogICAgICAgICAgICAgYm9vbCBhbGxBcmVTaW1wbGVMb2Fk
T3JNaXNzID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgYWNjZXNzQ2FzZSA6IGNhc2Vz
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFjY2Vzc0Nhc2UtPnR5cGUoKSAhPSBBY2Nlc3NDYXNl
OjpMb2FkICYmIGFjY2Vzc0Nhc2UtPnR5cGUoKSAhPSBBY2Nlc3NDYXNlOjpNaXNzKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGFjY2Vzc0Nhc2UtPnR5cGUoKSAhPSBBY2Nlc3NDYXNlOjpMb2FkICYm
IGFjY2Vzc0Nhc2UtPnR5cGUoKSAhPSBBY2Nlc3NDYXNlOjpNaXNzKQogICAgICAgICAgICAgICAg
ICAgICBhbGxBcmVTaW1wbGVMb2FkT3JNaXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWNjZXNzQ2Fz
ZS0+dXNlc1BvbHlQcm90bygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFjY2Vzc0Nhc2UtPnVz
ZXNQb2x5UHJvdG8oKSkKICAgICAgICAgICAgICAgICAgICAgYWxsQXJlU2ltcGxlTG9hZE9yTWlz
cyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKGFjY2Vzc0Nhc2UtPnZpYUdsb2JhbFByb3h5KCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dmlhR2xvYmFsUHJveHkoKSkKICAgICAgICAg
ICAgICAgICAgICAgYWxsQXJlU2ltcGxlTG9hZE9yTWlzcyA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIC8vIEN1cnJlbnRseSwgd2UgZG8gbm90IGFwcGx5IG1lZ2Ftb3JwaGljIGNhY2hlIGZv
ciAibGVuZ3RoIiBwcm9wZXJ0eSBzaW5jZSBBcnJheSNsZW5ndGggYW5kIFN0cmluZyNsZW5ndGgg
YXJlIHRvbyBjb21tb24uCi0gICAgICAgICAgICBpZiAoIWNhblVzZU1lZ2Ftb3JwaGljR2V0QnlJ
ZCh2bSgpLCBpZGVudGlmaWVyLnVpZCgpKSkKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLnVp
ZCgpID09IHZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoIHx8IGlkZW50aWZpZXIudWlkKCkgPT0g
dm0oKS5wcm9wZXJ0eU5hbWVzLT5uYW1lIHx8IGlkZW50aWZpZXIudWlkKCkgPT0gdm0oKS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUpCiAgICAgICAgICAgICAgICAgYWxsQXJlU2ltcGxlTG9hZE9y
TWlzcyA9IGZhbHNlOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTI4MTAsMTggKzI3MjIs
MTIgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBJbmxpbmVDYWNoZUNvbXBpbGVyOjpyZWdlbmVy
YXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0wKICAgICAgICAgY2FzZSBBY2Nlc3NUeXBlOjpH
ZXRCeVZhbFdpdGhUaGlzOiB7CiAgICAgICAgICAgICBib29sIGFsbEFyZVNpbXBsZUxvYWRPck1p
c3MgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChhdXRvJiBhY2Nlc3NDYXNlIDogY2FzZXMpIHsK
LSAgICAgICAgICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dHlwZSgpICE9IEFjY2Vzc0Nhc2U6Okxv
YWQgJiYgYWNjZXNzQ2FzZS0+dHlwZSgpICE9IEFjY2Vzc0Nhc2U6Ok1pc3MpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dHlwZSgpICE9IEFjY2Vzc0Nhc2U6OkxvYWQgJiYgYWNj
ZXNzQ2FzZS0+dHlwZSgpICE9IEFjY2Vzc0Nhc2U6Ok1pc3MpCiAgICAgICAgICAgICAgICAgICAg
IGFsbEFyZVNpbXBsZUxvYWRPck1pc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChhY2Nlc3NDYXNlLT51
c2VzUG9seVByb3RvKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dXNlc1Bv
bHlQcm90bygpKQogICAgICAgICAgICAgICAgICAgICBhbGxBcmVTaW1wbGVMb2FkT3JNaXNzID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dmlhR2xvYmFsUHJveHkoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChhY2Nlc3NDYXNlLT52aWFHbG9iYWxQcm94eSgpKQogICAgICAgICAgICAg
ICAgICAgICBhbGxBcmVTaW1wbGVMb2FkT3JNaXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCkBAIC0yODM4LDc5ICsyNzQ0LDYgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBJbmxpbmVDYWNoZUNvbXBpbGVyOjpyZWdlbmVyYXRlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRK
U0wKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZFN0cmljdDoKLSAgICAgICAgY2FzZSBBY2Nlc3NUeXBl
OjpQdXRCeUlkU2xvcHB5OiB7Ci0gICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjYXNlcy5s
YXN0KCktPm1faWRlbnRpZmllcjsKLSAgICAgICAgICAgIGJvb2wgYWxsQXJlU2ltcGxlUmVwbGFj
ZU9yVHJhbnNpdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGFjY2Vzc0Nhc2Ug
OiBjYXNlcykgewotICAgICAgICAgICAgICAgIGlmIChhY2Nlc3NDYXNlLT50eXBlKCkgIT0gQWNj
ZXNzQ2FzZTo6UmVwbGFjZSAmJiBhY2Nlc3NDYXNlLT50eXBlKCkgIT0gQWNjZXNzQ2FzZTo6VHJh
bnNpdGlvbikgewotICAgICAgICAgICAgICAgICAgICBhbGxBcmVTaW1wbGVSZXBsYWNlT3JUcmFu
c2l0aW9uID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dXNlc1BvbHlQcm90bygpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGFsbEFyZVNpbXBsZVJlcGxhY2VPclRyYW5zaXRpb24gPSBm
YWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmIChhY2Nlc3NDYXNlLT52aWFHbG9iYWxQcm94eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFsbEFyZVNpbXBsZVJlcGxhY2VPclRyYW5zaXRpb24gPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmICghY2FuVXNlTWVnYW1vcnBoaWNQdXRGYXN0UGF0aChhY2Nlc3NDYXNlLT5zdHJ1Y3R1
cmUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYWxsQXJlU2ltcGxlUmVwbGFjZU9yVHJhbnNp
dGlvbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgZG8gbm90
IGFwcGx5IG1lZ2Ftb3JwaGljIGNhY2hlIGZvciAibGVuZ3RoIiBwcm9wZXJ0eSBzaW5jZSBBcnJh
eSNsZW5ndGggYW5kIFN0cmluZyNsZW5ndGggYXJlIHRvbyBjb21tb24uCi0gICAgICAgICAgICBp
ZiAoIWNhblVzZU1lZ2Ftb3JwaGljUHV0QnlJZCh2bSgpLCBpZGVudGlmaWVyLnVpZCgpKSkKLSAg
ICAgICAgICAgICAgICBhbGxBcmVTaW1wbGVSZXBsYWNlT3JUcmFuc2l0aW9uID0gZmFsc2U7Ci0K
LSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICAgICAgYWxsQXJlU2ltcGxlUmVwbGFjZU9y
VHJhbnNpdGlvbiA9IGZhbHNlOwotI2VuZGlmCi0KLSAgICAgICAgICAgIGlmIChhbGxBcmVTaW1w
bGVSZXBsYWNlT3JUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCFjYXNlcy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHBvbHkubV9saXN0LmFwcGVuZChjYXNlcy50
YWtlTGFzdCgpKTsKLSAgICAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoQWNjZXNzQ2FzZTo6Y3Jl
YXRlKHZtKCksIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6U3RvcmVNZWdhbW9ycGhpYywgaWRlbnRp
ZmllcikpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRlZE1lZ2Ftb3JwaGljQ29kZSA9IHRydWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU3RyaWN0OgotICAgICAgICBjYXNlIEFjY2Vzc1R5cGU6
OlB1dEJ5VmFsU2xvcHB5OiB7Ci0gICAgICAgICAgICBib29sIGFsbEFyZVNpbXBsZVJlcGxhY2VP
clRyYW5zaXRpb24gPSB0cnVlOwotICAgICAgICAgICAgZm9yIChhdXRvJiBhY2Nlc3NDYXNlIDog
Y2FzZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dHlwZSgpICE9IEFjY2Vz
c0Nhc2U6OlJlcGxhY2UgJiYgYWNjZXNzQ2FzZS0+dHlwZSgpICE9IEFjY2Vzc0Nhc2U6OlRyYW5z
aXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgYWxsQXJlU2ltcGxlUmVwbGFjZU9yVHJhbnNp
dGlvbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKGFjY2Vzc0Nhc2UtPnVzZXNQb2x5UHJvdG8oKSkgewot
ICAgICAgICAgICAgICAgICAgICBhbGxBcmVTaW1wbGVSZXBsYWNlT3JUcmFuc2l0aW9uID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoYWNjZXNzQ2FzZS0+dmlhR2xvYmFsUHJveHkoKSkgewotICAgICAgICAg
ICAgICAgICAgICBhbGxBcmVTaW1wbGVSZXBsYWNlT3JUcmFuc2l0aW9uID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAoIWNhblVzZU1lZ2Ftb3JwaGljUHV0RmFzdFBhdGgoYWNjZXNzQ2FzZS0+c3RydWN0dXJl
KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbEFyZVNpbXBsZVJlcGxhY2VPclRyYW5zaXRp
b24gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgIGFs
bEFyZVNpbXBsZVJlcGxhY2VPclRyYW5zaXRpb24gPSBmYWxzZTsKLSNlbmRpZgotCi0gICAgICAg
ICAgICBpZiAoYWxsQXJlU2ltcGxlUmVwbGFjZU9yVHJhbnNpdGlvbikgewotICAgICAgICAgICAg
ICAgIHdoaWxlICghY2FzZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBwb2x5Lm1f
bGlzdC5hcHBlbmQoY2FzZXMudGFrZUxhc3QoKSk7Ci0gICAgICAgICAgICAgICAgY2FzZXMuYXBw
ZW5kKEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSgpLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkluZGV4
ZWRNZWdhbW9ycGhpY1N0b3JlLCBudWxscHRyKSk7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdGVk
TWVnYW1vcnBoaWNDb2RlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNh
Y2hlQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNo
ZUNvbXBpbGVyLmgKaW5kZXggNTk1YjQ4NDZkZjRmLi5hYTI3M2FjNDhhYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNoZUNvbXBpbGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUNhY2hlQ29tcGlsZXIuaApA
QCAtMTg0LDE3ICsxODQsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXRjaHBv
aW50c09uU3RydWN0dXJlU3R1YkluZm8+IG1fd2F0Y2hwb2ludHM7CiB9OwogCi1pbmxpbmUgYm9v
bCBjYW5Vc2VNZWdhbW9ycGhpY0dldEJ5SWQoVk0mIHZtLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQotewotICAgIHJldHVybiAhcGFyc2VJbmRleCgqdWlkKSAmJiB1aWQgIT0gdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoICYmIHVpZCAhPSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lICYmIHVpZCAhPSB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUgJiYgdWlkICE9IHZtLnByb3BlcnR5TmFtZXMtPnVu
ZGVyc2NvcmVQcm90bzsKLX0KLQotaW5saW5lIGJvb2wgY2FuVXNlTWVnYW1vcnBoaWNQdXRCeUlk
KFZNJiB2bSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKLXsKLSAgICByZXR1cm4gIXBhcnNlSW5k
ZXgoKnVpZCkgJiYgdWlkICE9IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bzsKLX0K
LQotCiBjbGFzcyBJbmxpbmVDYWNoZUNvbXBpbGVyIHsKIHB1YmxpYzoKICAgICBJbmxpbmVDYWNo
ZUNvbXBpbGVyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUg
ZWNtYU1vZGUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuaAppbmRleCA3NjEyYThjYTYyNWUu
LmYwNjNkZmNhMTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lubGluZUNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVDYWxsRnJhbWUuaApAQCAtMzExLDIwICszMTEsNiBAQCBBTFdBWVNfSU5MSU5FIE9wZXJh
bmQgdW5tYXBPcGVyYW5kKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBWaXJ0dWFs
UmVnaQogICAgIHJldHVybiB1bm1hcE9wZXJhbmQoaW5saW5lQ2FsbEZyYW1lLCBPcGVyYW5kKHJl
ZykpOwogfQogCi1pbmxpbmUgYm9vbCBpc1NhbWVTdHlsZWRDb2RlT3JpZ2luKENvZGVPcmlnaW4g
bGhzLCBDb2RlT3JpZ2luIHJocykKLXsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAo
bGhzLmJ5dGVjb2RlSW5kZXgoKSAhPSByaHMuYnl0ZWNvZGVJbmRleCgpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoISFsaHMuaW5saW5lQ2FsbEZyYW1lKCkgIT0gISFy
aHMuaW5saW5lQ2FsbEZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmICghbGhzLmlubGluZUNhbGxGcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGxocyA9IGxocy5pbmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyOwotICAgICAg
ICByaHMgPSByaHMuaW5saW5lQ2FsbEZyYW1lKCktPmRpcmVjdENhbGxlcjsKLSAgICB9Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlTdGF0dXMuY3BwCmluZGV4IGQxY2Q1ODdmYTAzOS4uNTc1
Zjk0ZWM0MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVN0
YXR1cy5jcHAKQEAgLTEyMiwxMCArMTIyLDggQEAgUHV0QnlTdGF0dXM6OlB1dEJ5U3RhdHVzKFN0
dWJJbmZvU3VtbWFyeSBzdW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAg
Y2FzZSBTdHViSW5mb1N1bW1hcnk6Ok5vSW5mb3JtYXRpb246CiAgICAgICAgIG1fc3RhdGUgPSBO
b0luZm9ybWF0aW9uOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6
Ok1lZ2Ftb3JwaGljOgotICAgICAgICBtX3N0YXRlID0gTWVnYW1vcnBoaWM7Ci0gICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6U2ltcGxlOgorICAgIGNhc2UgU3R1Yklu
Zm9TdW1tYXJ5OjpNZWdhbW9ycGhpYzoKICAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6TWFrZXND
YWxsczoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTUwLDcgKzE0OCw4IEBAIFB1dEJ5U3RhdHVzIFB1dEJ5U3RhdHVzOjpjb21wdXRl
Rm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwKICAgICAgICAg
cmV0dXJuIFB1dEJ5U3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgpOwogICAgIAogICAgIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4
KSkuc3R1YkluZm87Ci0gICAgUHV0QnlTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZv
KGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIGNhbGxFeGl0U2l0ZURhdGEsIENvZGVP
cmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIFB1dEJ5U3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVG
b3JTdHViSW5mbygKKyAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5mbywgY2Fs
bEV4aXRTaXRlRGF0YSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogICAgIApAQCAtMTY1LDEw
ICsxNjQsMTIgQEAgUHV0QnlTdGF0dXMgUHV0QnlTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLAogCiBQdXRCeVN0YXR1cyBQdXRCeVN0
YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2Vy
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewotICAgIHJldHVybiBjb21wdXRlRm9yU3R1YkluZm8o
bG9ja2VyLCBiYXNlbGluZUJsb2NrLCBzdHViSW5mbywgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVF
eGl0U2l0ZURhdGEoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpLCBj
b2RlT3JpZ2luKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAgICBsb2Nr
ZXIsIGJhc2VsaW5lQmxvY2ssIHN0dWJJbmZvLAorICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUV4aXRTaXRlRGF0YShiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgo
KSkpOwogfQogCi1QdXRCeVN0YXR1cyBQdXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0
YSBjYWxsRXhpdFNpdGVEYXRhLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCitQdXRCeVN0YXR1cyBQ
dXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYg
bG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewog
ICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnko
cHJvZmlsZWRCbG9jay0+dm0oKSwgc3R1YkluZm8pOwogICAgIGlmICghaXNJbmxpbmVhYmxlKHN1
bW1hcnkpKQpAQCAtMTk1LDMwICsxOTYsNyBAQCBQdXRCeVN0YXR1cyBQdXRCeVN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDbwogCiAg
ICAgICAgIFB1dEJ5U3RhdHVzIHJlc3VsdDsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1w
bGU7Ci0KLSAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBjb25z
dCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdCgwKTsKLSAgICAgICAgICAgIHN3aXRjaCAo
YWNjZXNzLnR5cGUoKSkgewotICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpTdG9yZU1lZ2Ft
b3JwaGljOgotICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbmRleGVkTWVnYW1vcnBoaWNT
dG9yZTogewotICAgICAgICAgICAgICAgIC8vIEVtaXR0aW5nIFN0b3JlTWVnYW1vcnBoaWMgbWVh
bnMgdGhhdCB3ZSBnaXZlIHVwIHBvbHltb3JwaGljIElDIG9wdGltaXphdGlvbi4gU28gdGhpcyBu
ZWVkcyB2ZXJ5IGNhcmVmdWwgaGFuZGxpbmcuCi0gICAgICAgICAgICAgICAgLy8gSXQgaXMgcG9z
c2libGUgdGhhdCBvbmUgZnVuY3Rpb24gY2FuIGJlIGlubGluZWQgZnJvbSB0aGUgb3RoZXIgZnVu
Y3Rpb24sIGFuZCB0aGVuIGl0IGdldHMgbGltaXRlZCAjIG9mIHN0cnVjdHVyZXMuCi0gICAgICAg
ICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBjb250aW51ZSB1c2luZyBJQyBpcyBiZXR0ZXIgdGhh
biBmYWxsaW5nIGJhY2sgdG8gbWVnYW1vcnBoaWMgY2FzZS4gQnV0IGlmIHRoZSBmdW5jdGlvbiBn
ZXRzIGNvbXBpbGVkIGJlZm9yZSwKLSAgICAgICAgICAgICAgICAvLyBhbmQgZXZlbiBvcHRpbWl6
aW5nIEpJVCBzYXcgdGhlIG1lZ2Ftb3JwaGlzbSwgdGhlbiB0aGlzIGlzIGxpa2VseSB0aGF0IHRo
aXMgZnVuY3Rpb24gY29udGludWVzIGhhdmluZyBtZWdhbW9ycGhpYyBiZWhhdmlvciwKLSAgICAg
ICAgICAgICAgICAvLyBhbmQgaW5saW5lZCBtZWdhbW9ycGhpYyBjb2RlIGlzIGZhc3Rlci4gQ3Vy
cmVudGx5LCB3ZSB1c2UgU3RvcmVNZWdhbW9ycGhpYyBvbmx5IHdoZW4gdGhlIGV4YWN0IHNhbWUg
Zm9ybSBvZiBDb2RlT3JpZ2luIGdldHMKLSAgICAgICAgICAgICAgICAvLyB0aGlzIG1lZ2Ftb3Jw
aGljIEdldEJ5SWQgYmVmb3JlIChzYW1lIGxldmVsIG9mIGlubGluaW5nIGV0Yy4pLiBUaGlzIGlz
IHZlcnkgY29uc2VydmF0aXZlIGJ1dCBlZmZlY3RpdmUgc2luY2UgSUMgaXMgdmVyeSBmYXN0Ci0g
ICAgICAgICAgICAgICAgLy8gd2hlbiBpdCB3b3JrZWQgd2VsbCAoYnV0IGNvc3RseSBpZiBpdCBk
b2Vzbid0IHdvcmsgYW5kIGdldCBtZWdhbW9ycGhpYykuIE9uY2UgdGhpcyBjb3N0LWJlbmVmaXQg
dHJhZGVvZmYgZ2V0cyBjaGFuZ2VkICh2aWEKLSAgICAgICAgICAgICAgICAvLyBoYW5kbGVyIElD
KSwgd2UgY2FuIHJldmlzaXQgdGhpcyBjb25kaXRpb24uCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCB0aGlzIHRoaW5nLgotICAgICAgICAgICAgICAgIGlmIChpc1NhbWVTdHlsZWRDb2Rl
T3JpZ2luKHN0dWJJbmZvLT5jb2RlT3JpZ2luLCBjb2RlT3JpZ2luKSAmJiAhc3R1YkluZm8tPnRv
b2tTbG93UGF0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB1dEJ5U3RhdHVzKE1lZ2Ft
b3JwaGljKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQorICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3Qt
PnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBs
aXN0LT5hdChpKTsKICAgICAgICAgICAgIGlmIChhY2Nlc3MudmlhR2xvYmFsUHJveHkoKSkKQEAg
LTMxOCw3ICsyOTYsOSBAQCBQdXRCeVN0YXR1cyBQdXRCeVN0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbAogICAgICAgICAKICAgICAg
ICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgUHV0QnlTdGF0dXMmIHJlc3VsdCkgLT4gUHV0QnlT
dGF0dXMgewogICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9yaWdpbikp
IHsKLSAgICAgICAgICAgICAgICBQdXRCeVN0YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVG
b3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQsIGNh
bGxFeGl0U2l0ZURhdGEpOworICAgICAgICAgICAgICAgIFB1dEJ5U3RhdHVzIGJhc2VsaW5lUmVz
dWx0ID0gY29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywgYmFz
ZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQsCisgICAgICAgICAgICAgICAgICAgIGNh
bGxFeGl0U2l0ZURhdGEpOwogICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0OwogICAgICAgICAg
ICAgfQpAQCAtMzMxLDcgKzMxMSw4IEBAIFB1dEJ5U3RhdHVzIFB1dEJ5U3RhdHVzOjpjb21wdXRl
Rm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsCiAgICAgICAg
ICAgICBQdXRCeVN0YXR1cyByZXN1bHQ7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKGxvY2tl
ciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8sIGNhbGxFeGl0
U2l0ZURhdGEsIGNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVG
b3JTdHViSW5mbygKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6
ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGJsZXNzKHJlc3VsdCk7CkBAIC00NTMsNyArNDM0LDYgQEAgYm9vbCBQdXRCeVN0YXR1
czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIE1h
a2VzQ2FsbHM6CiAgICAgY2FzZSBPYnNlcnZlZFNsb3dQYXRoQW5kTWFrZXNDYWxsczoKLSAgICBj
YXNlIE1lZ2Ftb3JwaGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFNpbXBsZTog
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ZhcmlhbnRzLnNpemUoKTsgaS0tOykgewpA
QCAtNTIzLDE2ICs1MDMsNiBAQCB2b2lkIFB1dEJ5U3RhdHVzOjptZXJnZShjb25zdCBQdXRCeVN0
YXR1cyYgb3RoZXIpCiAgICAgY2FzZSBOb0luZm9ybWF0aW9uOgogICAgICAgICAqdGhpcyA9IG90
aGVyOwogICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIE1lZ2Ftb3JwaGljOgotICAgICAgICBp
ZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKSB7Ci0gICAgICAgICAgICBpZiAob3RoZXIubV9z
dGF0ZSA9PSBTaW1wbGUpIHsKLSAgICAgICAgICAgICAgICAqdGhpcyA9IG90aGVyOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtZXJn
ZVNsb3coKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2Ug
U2ltcGxlOgogICAgICAgICBpZiAob3RoZXIubV9zdGF0ZSAhPSBTaW1wbGUpCkBAIC01NzUsOSAr
NTQ1LDYgQEAgdm9pZCBQdXRCeVN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgIGNhc2UgU2ltcGxlOgogICAgICAgICBvdXQucHJpbnQoIigiLCBsaXN0RHVtcChtX3Zhcmlh
bnRzKSwgIikiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWVnYW1vcnBoaWM6Ci0gICAg
ICAgIG91dC5wcmludCgiTWVnYW1vcnBoaWMiKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
TGlrZWx5VGFrZXNTbG93UGF0aDoKICAgICAgICAgb3V0LnByaW50KCJMaWtlbHlUYWtlc1Nsb3dQ
YXRoIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5U3RhdHVzLmgKaW5kZXggNmFhOGFkYWRiNmQwLi4xY2VhMzExYTIxOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVN0YXR1cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVN0YXR1cy5oCkBAIC01Myw4ICs1Myw2
IEBAIHB1YmxpYzoKICAgICAgICAgTm9JbmZvcm1hdGlvbiwKICAgICAgICAgLy8gSXQncyBjYWNo
ZWQgYXMgYSBzaW1wbGUgc3RvcmUgb2Ygc29tZSBraW5kLgogICAgICAgICBTaW1wbGUsCi0gICAg
ICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIG1lZ2Ftb3JwaGljIGNhc2UuCi0gICAgICAgIE1lZ2Ft
b3JwaGljLAogICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCiAg
ICAgICAgIExpa2VseVRha2VzU2xvd1BhdGgsCiAgICAgICAgIC8vIEl0J3Mga25vd24gdG8gdGFr
ZSBzbG93IHBhdGguIFdlIGFsc28gb2JzZXJ2ZWQgdGhhdCB0aGUgc2xvdyBwYXRoIHdhcyB0YWtl
biBvbiBTdHJ1Y3R1cmVTdHViSW5mby4KQEAgLTgwLDcgKzc4LDYgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKICAgICAgICAgY2FzZSBNYWtlc0NhbGxzOgog
ICAgICAgICBjYXNlIE9ic2VydmVkU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgotICAgICAgICBjYXNl
IE1lZ2Ftb3JwaGljOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTExLDExICsxMDgsOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gTm9J
bmZvcm1hdGlvbjsgfQogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSA9PSBOb0luZm9ybWF0aW9uOyB9CiAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gU2ltcGxlOyB9Ci0gICAgYm9vbCBpc01lZ2Ftb3JwaGljKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBNZWdhbW9ycGhpYzsgfQogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgp
IGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBN
ZWdhbW9ycGhpYzoKICAgICAgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgogICAgICAgICBj
YXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTQ1LDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKEpJVCkK
LSAgICBzdGF0aWMgUHV0QnlTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ2FsbExpbmtTdGF0
dXM6OkV4aXRTaXRlRGF0YSwgQ29kZU9yaWdpbik7CisgICAgc3RhdGljIFB1dEJ5U3RhdHVzIGNv
bXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEpOwogI2VuZGlm
CiAgICAgc3RhdGljIFB1dEJ5U3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgQnl0
ZWNvZGVJbmRleCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI2MGQwNzAwNmE3NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5k
LmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3Mg
UHV0S2luZCA6IHVpbnQ4X3QgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0ZUZpZWxk
RGVmaW5lLCBEaXJlY3RQcml2YXRlRmllbGRTZXQgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggYzc0MjgzNjA4
M2JmLi42OTc3OTc5ZDU3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVw
YXRjaC5jcHAKQEAgLTE5MSw2ICsxOTEsMzIgQEAgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1Rv
V2FzbUlDQ29kZVB0cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KgogCiAj
aWYgRU5BQkxFKEpJVCkKIAorc3RhdGljIENvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZXRhZ09w
ZXJhdGlvbldpdGhWYWxpZGF0aW9uKENvZGVQdHI8T3BlcmF0aW9uUHRyVGFnPiBvcGVyYXRpb24p
Cit7CisgICAgSlNDX1JFVFVSTl9SRVRBR0dFRF9PUEVSQVRJT05fV0lUSF9WQUxJREFUSU9OKG9w
ZXJhdGlvbik7Cit9CisKK3N0YXRpYyBDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gcmV0YWdDYWxs
VGFyZ2V0V2l0aFZhbGlkYXRpb24oQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBj
YWxsKQoreworICAgIEpTQ19SRVRVUk5fUkVUQUdHRURfQ0FMTF9UQVJHRVRfV0lUSF9WQUxJREFU
SU9OKGNhbGwpOworfQorCitzdGF0aWMgQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IHJlYWRQdXRJ
Q0NhbGxUYXJnZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKK3sKKyAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKKyAgICAgICAgcmV0dXJu
IHJldGFnT3BlcmF0aW9uV2l0aFZhbGlkYXRpb24oc3R1YkluZm8ubV9zbG93T3BlcmF0aW9uKTsK
KyAgICBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJUYWc+IGNhbGwgPSBzdHViSW5mby5t
X3Nsb3dQYXRoQ2FsbExvY2F0aW9uOworI2lmIEVOQUJMRShGVExfSklUKQorICAgIGlmIChjb2Rl
QmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpGVExKSVQpIHsKKyAgICAgICAgQ29kZVB0cjxK
SVRUaHVua1B0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PEpJ
VFRodW5rUHRyVGFnPihjYWxsKTsKKyAgICAgICAgcmV0dXJuIHJldGFnT3BlcmF0aW9uV2l0aFZh
bGlkYXRpb24oY29kZUJsb2NrLT52bSgpLmZ0bFRodW5rcy0+a2V5Rm9yU2xvd1BhdGhDYWxsVGh1
bmsodGFyZ2V0KS5jYWxsVGFyZ2V0KCkpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGNvZGVCbG9jayk7CisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisgICAgcmV0dXJuIHJldGFn
Q2FsbFRhcmdldFdpdGhWYWxpZGF0aW9uKGNhbGwpOworfQorCiB2b2lkIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVy
bmFsUHRyVGFnPiBjYWxsLCBDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gbmV3Q2FsbGVlRnVuY3Rp
b24pCiB7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCkBAIC03NjMsODAgKzc4OSw5OSBAQCB2b2lkIHJl
cGF0Y2hBcnJheUdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKUwogICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihraW5kKSk7CiB9CiAKLXN0YXRpYyBD
b2RlUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlGdW5jdGlvbihQ
dXRCeUtpbmQgcHV0QnlLaW5kKQorc3RhdGljIENvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHBy
b3ByaWF0ZUdlbmVyaWNQdXRCeUZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwg
UHV0QnlLaW5kIHB1dEJ5S2luZCwgUHV0S2luZCBwdXRLaW5kKQogewogICAgIHN3aXRjaCAocHV0
QnlLaW5kKSB7Ci0gICAgY2FzZSBQdXRCeUtpbmQ6OkJ5SWRTdHJpY3Q6Ci0gICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OwotICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkU2xvcHB5
OgotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNsb3BweTsKLSAgICBjYXNlIFB1dEJ5
S2luZDo6QnlJZERpcmVjdFN0cmljdDoKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRE
aXJlY3RTdHJpY3Q7Ci0gICAgY2FzZSBQdXRCeUtpbmQ6OkJ5SWREaXJlY3RTbG9wcHk6Ci0gICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U2xvcHB5OwotICAgIGNhc2UgUHV0QnlL
aW5kOjpEZWZpbmVQcml2YXRlTmFtZUJ5SWQ6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0OwotICAgIGNhc2UgUHV0QnlLaW5kOjpTZXRQcml2
YXRlTmFtZUJ5SWQ6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZp
ZWxkU3RyaWN0OwotICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbFN0cmljdDoKLSAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0R2VuZXJpYzsKLSAgICBjYXNlIFB1dEJ5S2luZDo6
QnlWYWxTbG9wcHk6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeVZhbFNsb3BweUdlbmVy
aWM7Ci0gICAgY2FzZSBQdXRCeUtpbmQ6OkJ5VmFsRGlyZWN0U3RyaWN0OgotICAgICAgICByZXR1
cm4gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljOwotICAgIGNhc2UgUHV0QnlL
aW5kOjpCeVZhbERpcmVjdFNsb3BweToKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsU2xvcHB5R2VuZXJpYzsKLSAgICBjYXNlIFB1dEJ5S2luZDo6RGVmaW5lUHJpdmF0ZU5h
bWVCeVZhbDoKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZp
ZWxkR2VuZXJpYzsKLSAgICBjYXNlIFB1dEJ5S2luZDo6U2V0UHJpdmF0ZU5hbWVCeVZhbDoKLSAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYzsKKyAg
ICBjYXNlIFB1dEJ5S2luZDo6QnlJZDogeworICAgICAgICBzd2l0Y2ggKHB1dEtpbmQpIHsKKyAg
ICAgICAgY2FzZSBQdXRLaW5kOjpOb3REaXJlY3Q6CisgICAgICAgICAgICBpZiAoc2xvdC5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
dDsKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0OworICAgICAg
ICBjYXNlIFB1dEtpbmQ6OkRpcmVjdDoKKyAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
OworICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3Q7Cisg
ICAgICAgIGNhc2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lOgorICAgICAgICAg
ICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Q7CisgICAgICAgIGNhc2UgUHV0S2lu
ZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRl
RmllbGRTdHJpY3Q7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
UHV0QnlLaW5kOjpCeVZhbDogeworICAgICAgICBzd2l0Y2ggKHB1dEtpbmQpIHsKKyAgICAgICAg
Y2FzZSBQdXRLaW5kOjpOb3REaXJlY3Q6CisgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RHZW5l
cmljOworICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJp
YzsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3Q6CisgICAgICAgICAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxTdHJpY3RHZW5lcmljOworICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYzsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2
YXRlRmllbGREZWZpbmU6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7
CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRH
ZW5lcmljOworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAg
ICAgICAgICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZEdlbmVyaWM7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KICAgICAvLyBNYWtlIHdpbiBwb3J0IGNvbXBpbGVy
IGhhcHB5CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotLy8gTWFpbmx5IHVzZWQgdG8gdHJhbnNpdGlvbiBmcm9tIG1lZ2Ftb3JwaGlj
IGNhc2UgdG8gZ2VuZXJpYyBjYXNlLgotdm9pZCByZXBhdGNoUHV0QnlTbG93UGF0aENhbGwoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0QnlLaW5k
IGtpbmQpCi17Ci0gICAgcmVzZXRQdXRCeShjb2RlQmxvY2ssIHN0dWJJbmZvLCBraW5kKTsKLSAg
ICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIGFwcHJvcHJpYXRlR2Vu
ZXJpY1B1dEJ5RnVuY3Rpb24oa2luZCkpOwotfQotCi1zdGF0aWMgQ29kZVB0cjxDRnVuY3Rpb25Q
dHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5RnVuY3Rpb24oUHV0QnlLaW5kIHB1dEJ5
S2luZCkKK3N0YXRpYyBDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRpbWl6
aW5nUHV0QnlGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEJ5S2luZCBw
dXRCeUtpbmQsIFB1dEtpbmQgcHV0S2luZCkKIHsKICAgICBzd2l0Y2ggKHB1dEJ5S2luZCkgewot
ICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkU3RyaWN0OgotICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkU2xvcHB5Ogot
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNsb3BweU9wdGltaXplOwotICAgIGNhc2Ug
UHV0QnlLaW5kOjpCeUlkRGlyZWN0U3RyaWN0OgotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwotICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkRGlyZWN0
U2xvcHB5OgotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFNsb3BweU9wdGlt
aXplOwotICAgIGNhc2UgUHV0QnlLaW5kOjpEZWZpbmVQcml2YXRlTmFtZUJ5SWQ6Ci0gICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7
Ci0gICAgY2FzZSBQdXRCeUtpbmQ6OlNldFByaXZhdGVOYW1lQnlJZDoKLSAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKLSAgICBjYXNl
IFB1dEJ5S2luZDo6QnlWYWxTdHJpY3Q6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeVZh
bFN0cmljdE9wdGltaXplOwotICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbFNsb3BweToKLSAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5VmFsU2xvcHB5T3B0aW1pemU7Ci0gICAgY2FzZSBQdXRC
eUtpbmQ6OkJ5VmFsRGlyZWN0U3RyaWN0OgotICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZTsKLSAgICBjYXNlIFB1dEJ5S2luZDo6QnlWYWxEaXJlY3RT
bG9wcHk6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbFNsb3BweU9wdGlt
aXplOwotICAgIGNhc2UgUHV0QnlLaW5kOjpEZWZpbmVQcml2YXRlTmFtZUJ5VmFsOgotICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZTsKLSAg
ICBjYXNlIFB1dEJ5S2luZDo6U2V0UHJpdmF0ZU5hbWVCeVZhbDoKLSAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemU7CisgICAgY2FzZSBQdXRCeUtp
bmQ6OkJ5SWQ6CisgICAgICAgIHN3aXRjaCAocHV0S2luZCkgeworICAgICAgICBjYXNlIFB1dEtp
bmQ6Ok5vdERpcmVjdDoKKyAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CisgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOworICAgICAg
ICBjYXNlIFB1dEtpbmQ6OkRpcmVjdDoKKyAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
T3B0aW1pemU7CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdE9wdGltaXplOworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERl
ZmluZToKKyAgICAgICAgICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emU7CisgICAgICAgIGNhc2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAg
ICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFB1dEJ5S2luZDo6QnlWYWw6CisgICAgICAgIHN3aXRj
aCAocHV0S2luZCkgeworICAgICAgICBjYXNlIFB1dEtpbmQ6Ok5vdERpcmVjdDoKKyAgICAgICAg
ICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplOworICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemU7CisgICAgICAgIGNhc2UgUHV0S2luZDo6RGlyZWN0
OgorICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7CisgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZTsKKyAgICAg
ICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmU6CisgICAgICAgICAgICBB
U1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZTsKKyAgICAgICAgY2FzZSBQdXRLaW5k
OjpEaXJlY3RQcml2YXRlRmllbGRTZXQ6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmlj
dE1vZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRl
RmllbGRPcHRpbWl6ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9CiAgICAgLy8g
TWFrZSB3aW4gcG9ydCBjb21waWxlciBoYXBweQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZVB1dEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIENh
Y2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25zdCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0QnlLaW5kIHB1dEJ5S2luZCkKK3N0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgU3RydWN0
dXJlKiBvbGRTdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBjb25z
dCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0
QnlLaW5kIHB1dEJ5S2luZCwgUHV0S2luZCBwdXRLaW5kKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTg4
MywyNCArOTI4LDggQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzR2xvYmFsUHJv
eHkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAocHV0QnlLaW5kKSB7Ci0gICAgICAgICAgICBjYXNl
IFB1dEJ5S2luZDo6RGVmaW5lUHJpdmF0ZU5hbWVCeUlkOgotICAgICAgICAgICAgY2FzZSBQdXRC
eUtpbmQ6OkRlZmluZVByaXZhdGVOYW1lQnlWYWw6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5S2lu
ZDo6U2V0UHJpdmF0ZU5hbWVCeUlkOgotICAgICAgICAgICAgY2FzZSBQdXRCeUtpbmQ6OlNldFBy
aXZhdGVOYW1lQnlWYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0g
ICAgICAgICAgICBjYXNlIFB1dEJ5S2luZDo6QnlJZFN0cmljdDoKLSAgICAgICAgICAgIGNhc2Ug
UHV0QnlLaW5kOjpCeUlkU2xvcHB5OgotICAgICAgICAgICAgY2FzZSBQdXRCeUtpbmQ6OkJ5VmFs
U3RyaWN0OgotICAgICAgICAgICAgY2FzZSBQdXRCeUtpbmQ6OkJ5VmFsU2xvcHB5OgotICAgICAg
ICAgICAgY2FzZSBQdXRCeUtpbmQ6OkJ5SWREaXJlY3RTdHJpY3Q6Ci0gICAgICAgICAgICBjYXNl
IFB1dEJ5S2luZDo6QnlJZERpcmVjdFNsb3BweToKLSAgICAgICAgICAgIGNhc2UgUHV0QnlLaW5k
OjpCeVZhbERpcmVjdFN0cmljdDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbERp
cmVjdFNsb3BweToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICBpZiAoaXNHbG9iYWxQcm94eSAmJiAocHV0S2luZCA9PSBQdXRLaW5kOjpE
aXJlY3RQcml2YXRlRmllbGRTZXQgfHwgcHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3RQcml2YXRl
RmllbGREZWZpbmUpKQorICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICAg
ICAgUmVmUHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKQEAgLTkyNCw3ICs5NTMsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29k
ZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNlKGNvZGVC
bG9jaywgc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2RlSW5saW5lKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OlB1dEJ5U2VsZlBhdGNoLCBvbGRTdHJ1Y3R1cmUt
PmNsYXNzSW5mb0ZvckNlbGxzKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlGdW5jdGlvbihwdXRCeUtpbmQpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlGdW5jdGlvbihzbG90LCBwdXRCeUtp
bmQsIHB1dEtpbmQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRC
eUlkUmVwbGFjZShsb2NrZXIsIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBzbG90LmNhY2hlZE9m
ZnNldCgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
dHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtOTY2LDExICs5OTUsNyBA
QCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAg
ICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7Ci0g
ICAgICAgICAgICAgICAgc3dpdGNoIChwdXRCeUtpbmQpIHsKLSAgICAgICAgICAgICAgICBjYXNl
IFB1dEJ5S2luZDo6QnlJZFN0cmljdDoKLSAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5S2luZDo6
QnlJZFNsb3BweToKLSAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5S2luZDo6QnlWYWxTdHJpY3Q6
Ci0gICAgICAgICAgICAgICAgY2FzZSBQdXRCeUtpbmQ6OkJ5VmFsU2xvcHB5OiB7CisgICAgICAg
ICAgICAgICAgaWYgKHB1dEtpbmQgPT0gUHV0S2luZDo6Tm90RGlyZWN0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2Jh
bE9iamVjdCwgYmFzZUNlbGwsIHByb3BlcnR5TmFtZS51aWQoKSwgbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTk4NiwyMyArMTAxMSwxMyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7
CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlLaW5kOjpEZWZpbmVQcml2
YXRlTmFtZUJ5SWQ6Ci0gICAgICAgICAgICAgICAgY2FzZSBQdXRCeUtpbmQ6OkRlZmluZVByaXZh
dGVOYW1lQnlWYWw6IHsKKworICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IFB1dEtpbmQ6
OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
aWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0
ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2Jh
bE9iamVjdCwgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkRGlyZWN0U3Ry
aWN0OgotICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkRGlyZWN0U2xvcHB5Ogot
ICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbERpcmVjdFN0cmljdDoKLSAgICAg
ICAgICAgICAgICBjYXNlIFB1dEJ5S2luZDo6QnlWYWxEaXJlY3RTbG9wcHk6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBQdXRCeUtpbmQ6OlNldFByaXZhdGVOYW1lQnlJZDoKLSAgICAgICAgICAgICAg
ICBjYXNlIFB1dEJ5S2luZDo6U2V0UHJpdmF0ZU5hbWVCeVZhbDoKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9
IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0sIGNvZGVCbG9jaywgcHJvcGVydHlOYW1l
LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1v
dmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pLCBzdHViSW5mbyk7CkBAIC0xMDk0LDQ2ICsxMTA5LDE4
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgIGZpcmVXYXRjaHBvaW50c0FuZENsZWFy
U3R1YklmTmVlZGVkKHZtLCBzdHViSW5mbywgY29kZUJsb2NrLCByZXN1bHQpOwogCi0gICAgaWYg
KHJlc3VsdC5nZW5lcmF0ZWRNZWdhbW9ycGhpY0NvZGUoKSkKLSAgICAgICAgcmV0dXJuIFByb21v
dGVUb01lZ2Ftb3JwaGljOwogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBH
aXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0Y2hQdXRCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1
ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIFB1dEJ5S2luZCBwdXRCeUtpbmQpCit2b2lkIHJlcGF0Y2hQdXRCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1
ZSBiYXNlVmFsdWUsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgY29uc3QgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIFB1dEJ5S2luZCBwdXRCeUtpbmQsIFB1dEtpbmQgcHV0S2luZCkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0g
ICAgc3dpdGNoICh0cnlDYWNoZVB1dEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90LCBzdHViSW5mbywgcHV0QnlLaW5k
KSkgewotICAgIGNhc2UgUHJvbW90ZVRvTWVnYW1vcnBoaWM6IHsKLSAgICAgICAgc3dpdGNoIChw
dXRCeUtpbmQpIHsKLSAgICAgICAgY2FzZSBQdXRCeUtpbmQ6OkJ5SWRTdHJpY3Q6Ci0gICAgICAg
ICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblB1
dEJ5SWRNZWdhbW9ycGhpY1N0cmljdCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQdXRCeUtpbmQ6OkJ5SWRTbG9wcHk6Ci0gICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxs
KGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblB1dEJ5SWRNZWdhbW9ycGhpY1Nsb3BweSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQdXRCeUtpbmQ6OkJ5VmFsU3RyaWN0
OgotICAgICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBv
cGVyYXRpb25QdXRCeVZhbE1lZ2Ftb3JwaGljU3RyaWN0KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFB1dEJ5S2luZDo6QnlWYWxTbG9wcHk6Ci0gICAgICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvblB1dEJ5VmFsTWVnYW1v
cnBoaWNTbG9wcHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR2l2ZVVwT25DYWNo
ZToKLSAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHBy
b3ByaWF0ZUdlbmVyaWNQdXRCeUZ1bmN0aW9uKHB1dEJ5S2luZCkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFJldHJ5Q2FjaGVMYXRlcjoKLSAgICBjYXNlIEF0dGVtcHRUb0NhY2hlOgotICAg
ICAgICBicmVhazsKLSAgICB9CisgICAgaWYgKHRyeUNhY2hlUHV0QnkoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0
dWJJbmZvLCBwdXRCeUtpbmQsIHB1dEtpbmQpID09IEdpdmVVcE9uQ2FjaGUpCisgICAgICAgIHJl
cGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVHZW5lcmlj
UHV0QnlGdW5jdGlvbihzbG90LCBwdXRCeUtpbmQsIHB1dEtpbmQpKTsKIH0KIAotc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQXJyYXlQdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFs
dWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3N0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUFycmF5UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIGluZGV4
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEtpbmQpCiB7CiAgICAgaWYgKCFiYXNl
VmFsdWUuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtMTIyNiwx
MCArMTIxMywxMCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVBcnJheVB1dEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZAogICAgIHJldHVybiByZXN1bHQu
c2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQog
Ci12b2lkIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0QnlLaW5kIHB1dEJ5S2luZCkKK3ZvaWQgcmVwYXRj
aEFycmF5UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvLCBQdXRLaW5kIHB1dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlKQogewotICAgIGlm
ICh0cnlDYWNoZUFycmF5UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2UsIGlu
ZGV4LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgcmVwYXRjaFNsb3dQYXRo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUZ1bmN0aW9u
KHB1dEJ5S2luZCkpOworICAgIGlmICh0cnlDYWNoZUFycmF5UHV0QnlWYWwoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIGJhc2UsIGluZGV4LCBzdHViSW5mbywgcHV0S2luZCkgPT0gR2l2ZVVwT25D
YWNoZSkKKyAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBw
dXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IChlY21hTW9kZS5pc1N0cmljdCgpID8gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljIDogb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxO
b25TdHJpY3RHZW5lcmljKSA6IChlY21hTW9kZS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlW
YWxTdHJpY3RHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3RHZW5lcmljKSk7CiB9
CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQcm9wZXJ0eVNs
b3QmIHNsb3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgRGVsQnlLaW5kLCBFQ01BTW9kZSBlY21hTW9kZSkKQEAgLTIxMjMsNjAgKzIxMTAsNTIgQEAg
dm9pZCByZXNldFB1dEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIFB1dEJ5S2luZCBraW4KIHsKICAgICBDb2RlUHRyPENGdW5jdGlvblB0clRhZz4g
b3B0aW1pemVkRnVuY3Rpb247CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBQdXRCeUtp
bmQ6OkJ5SWRTdHJpY3Q6Ci0gICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFB1dEJ5S2luZDo6
QnlJZFNsb3BweToKLSAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlk
U2xvcHB5T3B0aW1pemU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlk
RGlyZWN0U3RyaWN0OgotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQdXRCeUtp
bmQ6OkJ5SWREaXJlY3RTbG9wcHk6Ci0gICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFNsb3BweU9wdGltaXplOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFB1dEJ5S2luZDo6RGVmaW5lUHJpdmF0ZU5hbWVCeUlkOgotICAgICAgICBvcHRpbWl6ZWRGdW5j
dGlvbiA9IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQdXRCeUtpbmQ6OlNldFByaXZhdGVOYW1lQnlJZDoK
LSAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZp
ZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHV0QnlLaW5kOjpC
eVZhbFN0cmljdDoKLSAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeVZh
bFN0cmljdE9wdGltaXplOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFB1dEJ5S2luZDo6QnlW
YWxTbG9wcHk6Ci0gICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxT
bG9wcHlPcHRpbWl6ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQdXRCeUtpbmQ6OkJ5VmFs
RGlyZWN0U3RyaWN0OgotICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHV0QnlL
aW5kOjpCeVZhbERpcmVjdFNsb3BweToKLSAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbFNsb3BweU9wdGltaXplOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFB1dEJ5S2luZDo6RGVmaW5lUHJpdmF0ZU5hbWVCeVZhbDoKLSAgICAgICAgb3B0aW1pemVk
RnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplOwor
ICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkOiB7CisgICAgICAgIHVzaW5nIEZ1bmN0aW9uVHlwZSA9
IGRlY2x0eXBlKCZvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOworICAgICAg
ICBGdW5jdGlvblR5cGUgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVu
Y3Rpb25UeXBlPihyZWFkUHV0SUNDYWxsVGFyZ2V0KGNvZGVCbG9jaywgc3R1YkluZm8pLnRhZ2dl
ZFB0cigpKTsKKyAgICAgICAgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJp
Y3RPcHRpbWl6ZSkKKyAgICAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplOworICAgICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9u
ID09IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBv
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUpCisgICAgICAgICAgICBvcHRpbWl6ZWRG
dW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgZWxz
ZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplKQorICAgICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0T3B0aW1pemU7CisgICAgICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rp
b24gPT0gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdCB8fCB1bm9wdGltaXpl
ZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZSkKKyAgICAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFNldFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1
bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QgfHwgdW5v
cHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3Ry
aWN0T3B0aW1pemUpCisgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1
dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBBU1NFUlQodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0Tm9uU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdE9wdGltaXplKTsKKyAgICAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9u
ID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOworICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHV0QnlLaW5kOjpTZXRQcml2YXRlTmFtZUJ5VmFsOgot
ICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZp
ZWxkT3B0aW1pemU7CisgICAgfQorICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbDogeworICAgICAg
ICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RP
cHRpbWl6ZSk7CisgICAgICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9uID0gcmVp
bnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29kZUJsb2Nr
LCBzdHViSW5mbykudGFnZ2VkUHRyKCkpOworICAgICAgICBpZiAodW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdEdlbmVyaWMgfHwgdW5vcHRpbWl6ZWRGdW5jdGlv
biA9PSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplKQorICAgICAgICAgICAgb3B0aW1p
emVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplOworICAgICAgICBl
bHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0
R2VuZXJpYyB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3Ry
aWN0T3B0aW1pemUpCisgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1
dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemU7CisgICAgICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVu
Y3Rpb24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljIHx8IHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSkKKyAg
ICAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJp
Y3RPcHRpbWl6ZTsKKyAgICAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVy
YXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgfHwgdW5vcHRpbWl6ZWRGdW5j
dGlvbiA9PSBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKQorICAg
ICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZh
dGVGaWVsZE9wdGltaXplOworICAgICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09
IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYyB8fCB1bm9wdGltaXplZEZ1
bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemUpCisgICAg
ICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZp
ZWxkT3B0aW1pemU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RHZW5lcmljIHx8
IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RP
cHRpbWl6ZSk7CisgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemU7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIH0KIAogICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5m
bywgb3B0aW1pemVkRnVuY3Rpb24pOwogICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgUHV0
QnlLaW5kOjpCeUlkU3RyaWN0OgotICAgIGNhc2UgUHV0QnlLaW5kOjpCeUlkU2xvcHB5OgotICAg
IGNhc2UgUHV0QnlLaW5kOjpCeUlkRGlyZWN0U3RyaWN0OgotICAgIGNhc2UgUHV0QnlLaW5kOjpC
eUlkRGlyZWN0U2xvcHB5OgotICAgIGNhc2UgUHV0QnlLaW5kOjpEZWZpbmVQcml2YXRlTmFtZUJ5
SWQ6Ci0gICAgY2FzZSBQdXRCeUtpbmQ6OlNldFByaXZhdGVOYW1lQnlJZDoKKyAgICBjYXNlIFB1
dEJ5S2luZDo6QnlJZDoKICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFj
Y2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQdXRC
eUtpbmQ6OkJ5VmFsU3RyaWN0OgotICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbFNsb3BweToKLSAg
ICBjYXNlIFB1dEJ5S2luZDo6QnlWYWxEaXJlY3RTdHJpY3Q6Ci0gICAgY2FzZSBQdXRCeUtpbmQ6
OkJ5VmFsRGlyZWN0U2xvcHB5OgotICAgIGNhc2UgUHV0QnlLaW5kOjpEZWZpbmVQcml2YXRlTmFt
ZUJ5VmFsOgotICAgIGNhc2UgUHV0QnlLaW5kOjpTZXRQcml2YXRlTmFtZUJ5VmFsOgorICAgIGNh
c2UgUHV0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1
bXBJbkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAg
ICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2gu
aAppbmRleCA3NzEzNWY5YmUyOWQuLjkzNTIzMDQ4ZmE3OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVwYXRjaC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKKyNpbmNsdWRlICJQ
dXRLaW5kLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NiwxOCArNDcsOCBAQCBlbnVtIGNs
YXNzIEdldEJ5S2luZCB7CiB9OwogCiBlbnVtIGNsYXNzIFB1dEJ5S2luZCB7Ci0gICAgQnlJZFN0
cmljdCwKLSAgICBCeUlkU2xvcHB5LAotICAgIEJ5VmFsU3RyaWN0LAotICAgIEJ5VmFsU2xvcHB5
LAotICAgIEJ5SWREaXJlY3RTdHJpY3QsCi0gICAgQnlJZERpcmVjdFNsb3BweSwKLSAgICBCeVZh
bERpcmVjdFN0cmljdCwKLSAgICBCeVZhbERpcmVjdFNsb3BweSwKLSAgICBEZWZpbmVQcml2YXRl
TmFtZUJ5SWQsCi0gICAgRGVmaW5lUHJpdmF0ZU5hbWVCeVZhbCwKLSAgICBTZXRQcml2YXRlTmFt
ZUJ5SWQsCi0gICAgU2V0UHJpdmF0ZU5hbWVCeVZhbCwKKyAgICBCeUlkLAorICAgIEJ5VmFsLAog
fTsKIAogZW51bSBjbGFzcyBEZWxCeUtpbmQgewpAQCAtNzMsOCArNjQsOCBAQCBlbnVtIGNsYXNz
IEluQnlLaW5kIHsKIAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoR2V0QnkoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBKU1ZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7Ci12b2lkIHJlcGF0Y2hBcnJheVB1dEJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGlu
ZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEJ5S2luZCk7Ci12b2lkIHJlcGF0Y2hQdXRCeShK
U0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJs
ZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwg
UHV0QnlLaW5kKTsKK3ZvaWQgcmVwYXRjaEFycmF5UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZv
JiwgUHV0S2luZCwgRUNNQU1vZGUpOwordm9pZCByZXBhdGNoUHV0QnkoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEJ5S2luZCwgUHV0
S2luZCk7CiB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayos
IERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50
aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBFQ01BTW9kZSk7CiB2b2lkIHJl
cGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFi
bGVJZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIEluQnlLaW5kKTsKIHZvaWQgcmVwYXRjaEhhc1ByaXZhdGVCcmFuZChKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
Ym9vbCB3YXNGb3VuZCwgIFN0cnVjdHVyZVN0dWJJbmZvJik7CkBAIC05NSw3ICs4Niw2IEBAIHZv
aWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwogCiB2b2lkIHJlcGF0Y2hHZXRCeVNsb3dQYXRoQ2FsbChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7Ci12b2lkIHJlcGF0Y2hQdXRCeVNsb3dQYXRoQ2FsbChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEJ5S2luZCk7CiAKIHZvaWQgZnRsVGh1
bmtBd2FyZVJlcGF0Y2hDYWxsKENvZGVCbG9jayosIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5h
bFB0clRhZz4sIENvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPiBuZXdDYWxsZWVGdW5jdGlvbik7CiBD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IGpzVG9XYXNtSUNDb2RlUHRyKENvZGVTcGVjaWFsaXphdGlv
bktpbmQsIEpTT2JqZWN0KiBjYWxsZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggOGE4ZGZiM2Q5NzA0Li41NzFh
MTlkZjRiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjY4LDQxICsyNjgsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lQnlJZDoKICAgICAg
ICAgcmVzZXRHZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lQnlJ
ZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZFN0cmljdDoK
LSAgICAgICAgcmVzZXRQdXRCeShjb2RlQmxvY2ssICp0aGlzLCBQdXRCeUtpbmQ6OkJ5SWRTdHJp
Y3QpOworICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZDoKKyAgICAgICAgcmVzZXRQdXRCeShj
b2RlQmxvY2ssICp0aGlzLCBQdXRCeUtpbmQ6OkJ5SWQpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWRTbG9wcHk6Ci0gICAgICAgIHJlc2V0UHV0QnkoY29kZUJs
b2NrLCAqdGhpcywgUHV0QnlLaW5kOjpCeUlkU2xvcHB5KTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBY2Nlc3NUeXBlOjpQdXRCeUlkRGlyZWN0U3RyaWN0OgotICAgICAgICByZXNldFB1dEJ5
KGNvZGVCbG9jaywgKnRoaXMsIFB1dEJ5S2luZDo6QnlJZERpcmVjdFN0cmljdCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZERpcmVjdFNsb3BweToKLSAgICAg
ICAgcmVzZXRQdXRCeShjb2RlQmxvY2ssICp0aGlzLCBQdXRCeUtpbmQ6OkJ5SWREaXJlY3RTbG9w
cHkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU3RyaWN0
OgotICAgICAgICByZXNldFB1dEJ5KGNvZGVCbG9jaywgKnRoaXMsIFB1dEJ5S2luZDo6QnlWYWxT
dHJpY3QpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU2xv
cHB5OgotICAgICAgICByZXNldFB1dEJ5KGNvZGVCbG9jaywgKnRoaXMsIFB1dEJ5S2luZDo6QnlW
YWxTbG9wcHkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFs
RGlyZWN0U3RyaWN0OgotICAgICAgICByZXNldFB1dEJ5KGNvZGVCbG9jaywgKnRoaXMsIFB1dEJ5
S2luZDo6QnlWYWxEaXJlY3RTdHJpY3QpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vz
c1R5cGU6OlB1dEJ5VmFsRGlyZWN0U2xvcHB5OgotICAgICAgICByZXNldFB1dEJ5KGNvZGVCbG9j
aywgKnRoaXMsIFB1dEJ5S2luZDo6QnlWYWxEaXJlY3RTbG9wcHkpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlZmluZVByaXZhdGVOYW1lQnlJZDoKLSAgICAgICAgcmVz
ZXRQdXRCeShjb2RlQmxvY2ssICp0aGlzLCBQdXRCeUtpbmQ6OkRlZmluZVByaXZhdGVOYW1lQnlJ
ZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZU5hbWVC
eUlkOgotICAgICAgICByZXNldFB1dEJ5KGNvZGVCbG9jaywgKnRoaXMsIFB1dEJ5S2luZDo6U2V0
UHJpdmF0ZU5hbWVCeUlkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpE
ZWZpbmVQcml2YXRlTmFtZUJ5VmFsOgotICAgICAgICByZXNldFB1dEJ5KGNvZGVCbG9jaywgKnRo
aXMsIFB1dEJ5S2luZDo6RGVmaW5lUHJpdmF0ZU5hbWVCeVZhbCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZU5hbWVCeVZhbDoKLSAgICAgICAgcmVzZXRQ
dXRCeShjb2RlQmxvY2ssICp0aGlzLCBQdXRCeUtpbmQ6OlNldFByaXZhdGVOYW1lQnlWYWwpOwor
ICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlWYWw6CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRQ
cml2YXRlTmFtZToKKyAgICAgICAgcmVzZXRQdXRCeShjb2RlQmxvY2ssICp0aGlzLCBQdXRCeUtp
bmQ6OkJ5VmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6
CiAgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6QnlJZCk7CkBA
IC00MTcsMTUgKzM4OCw4IEBAIFN0dWJJbmZvU3VtbWFyeSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3Vt
bWFyeShWTSYgdm0pIGNvbnN0CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGxpc3QtPnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGxpc3QtPmF0KDApLnR5
cGUoKSkgewotICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpMb2FkTWVnYW1vcnBoaWM6Ci0g
ICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkluZGV4ZWRNZWdhbW9ycGhpY0xvYWQ6Ci0gICAg
ICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OlN0b3JlTWVnYW1vcnBoaWM6Ci0gICAgICAgICAgICBj
YXNlIEFjY2Vzc0Nhc2U6OkluZGV4ZWRNZWdhbW9ycGhpY1N0b3JlOgorICAgICAgICAgICAgaWYg
KGxpc3QtPmF0KDApLnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpMb2FkTWVnYW1vcnBoaWMgfHwgbGlz
dC0+YXQoMCkudHlwZSgpID09IEFjY2Vzc0Nhc2U6OkluZGV4ZWRNZWdhbW9ycGhpY0xvYWQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0dWJJbmZvU3VtbWFyeTo6TWVnYW1vcnBoaWM7Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogICAgIApAQCAtNDkxLDMwICs0NTUsNDIgQEAgc3RhdGljIENvZGVQ
dHI8T3BlcmF0aW9uUHRyVGFnPiBzbG93T3BlcmF0aW9uRnJvbVVubGlua2VkU3RydWN0dXJlU3R1
YkluZm8oY29uc3QKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1p
emU7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZUJ5SWQ6CiAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZUJ5SWRPcHRpbWl6ZTsKLSAgICBjYXNlIEFjY2Vz
c1R5cGU6OlB1dEJ5SWRTdHJpY3Q6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0T3B0aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeUlkU2xvcHB5OgotICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNsb3BweU9wdGltaXplOwotICAgIGNhc2UgQWNjZXNz
VHlwZTo6UHV0QnlJZERpcmVjdFN0cmljdDoKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWREaXJl
Y3RTbG9wcHk6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U2xvcHB5T3B0
aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeVZhbFN0cmljdDoKLSAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBl
OjpQdXRCeVZhbFNsb3BweToKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5VmFsU2xvcHB5
T3B0aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeVZhbERpcmVjdFN0cmljdDoKLSAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7Ci0gICAg
Y2FzZSBBY2Nlc3NUeXBlOjpQdXRCeVZhbERpcmVjdFNsb3BweToKLSAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU2xvcHB5T3B0aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBl
OjpEZWZpbmVQcml2YXRlTmFtZUJ5SWQ6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
RGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpT
ZXRQcml2YXRlTmFtZUJ5SWQ6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWZpbmVQcml2
YXRlTmFtZUJ5VmFsOgotICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2
YXRlRmllbGRPcHRpbWl6ZTsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVOYW1lQnlW
YWw6Ci0gICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZE9wdGlt
aXplOworICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlJZDoKKyAgICAgICAgc3dpdGNoICh1bmxp
bmtlZFN0dWJJbmZvLnB1dEtpbmQpIHsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpOb3REaXJlY3Q6
CisgICAgICAgICAgICBpZiAodW5saW5rZWRTdHViSW5mby5lY21hTW9kZS5pc1N0cmljdCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3Q6CisgICAgICAg
ICAgICBpZiAodW5saW5rZWRTdHViSW5mby5lY21hTW9kZS5pc1N0cmljdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3ROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRl
RmllbGREZWZpbmU6CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFBy
aXZhdGVGaWVsZFNldDoKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU2V0UHJp
dmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpQdXRCeVZhbDoKKyAgICAgICAgc3dpdGNoICh1bmxpbmtlZFN0dWJJ
bmZvLnB1dEtpbmQpIHsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpOb3REaXJlY3Q6CisgICAgICAg
ICAgICBpZiAodW5saW5rZWRTdHViSW5mby5lY21hTW9kZS5pc1N0cmljdCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmlj
dE9wdGltaXplOworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdDoKKyAgICAgICAgICAgIGlm
ICh1bmxpbmtlZFN0dWJJbmZvLmVjbWFNb2RlLmlzU3RyaWN0KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsTm9u
U3RyaWN0T3B0aW1pemU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QWNjZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiB1bmxpbmtlZFN0dWJJ
bmZvLnByaXZhdGVGaWVsZFB1dEtpbmQuaXNEZWZpbmUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGVm
aW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVs
ZE9wdGltaXplOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZUJyYW5kOgogICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemU7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKQEAgLTY2NSwxMiArNjQxLDcgQEAgdm9pZCBTdHJ1
Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKGNv
bnN0IEJhc2VsaW5lVW4KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNl
bmRpZgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWRTdHJpY3Q6
Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeUlkU2xvcHB5OgotICAgIGNhc2UgQWNjZXNzVHlw
ZTo6UHV0QnlJZERpcmVjdFN0cmljdDoKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWREaXJl
Y3RTbG9wcHk6Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWZpbmVQcml2YXRlTmFtZUJ5SWQ6Ci0g
ICAgY2FzZSBBY2Nlc3NUeXBlOjpTZXRQcml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpQdXRCeUlkOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSB0cnVlOwogICAg
ICAgICBtX2V4dHJhR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgbV9iYXNlR1BSID0gQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5SWQ6OmJhc2VKU1IucGF5bG9hZEdQUigpOwpAQCAtNjgy
LDE4ICs2NTMsMTQgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdGlhbGl6ZUZyb21Vbmxp
bmtlZFN0cnVjdHVyZVN0dWJJbmZvKGNvbnN0IEJhc2VsaW5lVW4KICAgICAgICAgbV92YWx1ZVRh
Z0dQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeUlkOjp2YWx1ZUpTUi50YWdHUFIoKTsK
ICNlbmRpZgogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU3Ry
aWN0OgotICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlWYWxTbG9wcHk6Ci0gICAgY2FzZSBBY2Nl
c3NUeXBlOjpQdXRCeVZhbERpcmVjdFN0cmljdDoKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5
VmFsRGlyZWN0U2xvcHB5OgotICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVmaW5lUHJpdmF0ZU5hbWVC
eVZhbDoKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlNldFByaXZhdGVOYW1lQnlWYWw6CisgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpQdXRCeVZhbDoKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVO
YW1lOgogICAgICAgICBoYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKICAgICAgICAgbV9i
YXNlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjpiYXNlSlNSLnBheWxvYWRH
UFIoKTsKICAgICAgICAgbV9leHRyYUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6cHJvcGVydHlKU1IucGF5bG9hZEdQUigpOwogICAgICAgICBtX3ZhbHVlR1BSID0gQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OlB1dEJ5VmFsOjp2YWx1ZUpTUi5wYXlsb2FkR1BSKCk7CiAgICAgICAg
IG1fc3R1YkluZm9HUFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OnN0dWJJbmZv
R1BSOwotICAgICAgICBpZiAoYWNjZXNzVHlwZSAhPSBBY2Nlc3NUeXBlOjpEZWZpbmVQcml2YXRl
TmFtZUJ5VmFsICYmIGFjY2Vzc1R5cGUgIT0gQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZU5hbWVCeVZh
bCkKKyAgICAgICAgaWYgKGFjY2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6UHV0QnlWYWwpCiAgICAg
ICAgICAgICBtX2FycmF5UHJvZmlsZUdQUiA9IEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpQdXRCeVZh
bDo6cHJvZmlsZUdQUjsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBtX2Jhc2VUYWdH
UFIgPSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6UHV0QnlWYWw6OmJhc2VKU1IudGFnR1BSKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CmluZGV4IGJlNjRkZjMyOTNjNy4uYjQ0YjlmOTdjYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKICNpbmNsdWRlICJPcHRpb25zLmgiCisjaW5jbHVkZSAiUHV0S2luZC5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU2V0LmgiCkBAIC02MCwxOCArNjEsOSBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4
X3QgewogICAgIFRyeUdldEJ5SWQsCiAgICAgR2V0QnlWYWwsCiAgICAgR2V0QnlWYWxXaXRoVGhp
cywKLSAgICBQdXRCeUlkU3RyaWN0LAotICAgIFB1dEJ5SWRTbG9wcHksCi0gICAgUHV0QnlJZERp
cmVjdFN0cmljdCwKLSAgICBQdXRCeUlkRGlyZWN0U2xvcHB5LAotICAgIFB1dEJ5VmFsU3RyaWN0
LAotICAgIFB1dEJ5VmFsU2xvcHB5LAotICAgIFB1dEJ5VmFsRGlyZWN0U3RyaWN0LAotICAgIFB1
dEJ5VmFsRGlyZWN0U2xvcHB5LAotICAgIERlZmluZVByaXZhdGVOYW1lQnlWYWwsCi0gICAgRGVm
aW5lUHJpdmF0ZU5hbWVCeUlkLAotICAgIFNldFByaXZhdGVOYW1lQnlWYWwsCi0gICAgU2V0UHJp
dmF0ZU5hbWVCeUlkLAorICAgIFB1dEJ5SWQsCisgICAgUHV0QnlWYWwsCisgICAgUHV0UHJpdmF0
ZU5hbWUsCiAgICAgSW5CeUlkLAogICAgIEluQnlWYWwsCiAgICAgSGFzUHJpdmF0ZU5hbWUsCkBA
IC01MjAsNiArNTEyLDggQEAgaW5saW5lIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1
bmN0aW9uKEFjY2Vzc1R5cGUgdHlwZSkgLT4gZGVjbHR5cGUoJm9wZXIKIAogc3RydWN0IFVubGlu
a2VkU3RydWN0dXJlU3R1YkluZm8gewogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZTsKKyAgICBQ
dXRLaW5kIHB1dEtpbmQgeyBQdXRLaW5kOjpEaXJlY3QgfTsKKyAgICBQcml2YXRlRmllbGRQdXRL
aW5kIHByaXZhdGVGaWVsZFB1dEtpbmQgeyBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkgfTsK
ICAgICBFQ01BTW9kZSBlY21hTW9kZSB7IEVDTUFNb2RlOjpzbG9wcHkoKSB9OwogICAgIGJvb2wg
cHJvcGVydHlJc0ludDMyIDogMSB7IGZhbHNlIH07CiAgICAgYm9vbCBwcm9wZXJ0eUlzU3RyaW5n
IDogMSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGIyZTEyNWZjMWQxMy4uNDM2ZDJk
ZjEzZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHBy
ZXNzaW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCi0g
ICAgLCBtX3VzZXNTbG9wcHlFdmFsKGZhbHNlKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChm
YWxzZSkKICAgICAsIG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRh
dGVBcnJvd0Z1bmN0aW9uQ29udGV4dChwcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8
fCBwcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZWNtYU1vZGUoRUNNQU1vZGU6OmZy
b21Cb29sKHByb2dyYW1Ob2RlLT5pc1N0cmljdE1vZGUoKSkpCkBAIC0zOTAsNyArMzkwLDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAsIG1fdXNlc0V4Y2VwdGlvbnMoZmFsc2UpCiAg
ICAgLCBtX2V4cHJlc3Npb25Ub29EZWVwKGZhbHNlKQogICAgICwgbV9pc0J1aWx0aW5GdW5jdGlv
bihjb2RlQmxvY2stPmlzQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgLCBtX3VzZXNTbG9wcHlFdmFs
KGZ1bmN0aW9uTm9kZS0+dXNlc0V2YWwoKSAmJiAhZnVuY3Rpb25Ob2RlLT5pc1N0cmljdE1vZGUo
KSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZnVuY3Rpb25Ob2RlLT51c2VzRXZhbCgpICYm
ICFmdW5jdGlvbk5vZGUtPmlzU3RyaWN0TW9kZSgpKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgYWJsZSB0byBoYXZlIHRhaWwgY2FsbCBlbGltaW5hdGlvbiB3aXRoIHRoZSBwcm9maWxlcgog
ICAgIC8vIGVuYWJsZWQuIFRoaXMgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSBiZWNhdXNlIHRo
ZSBwcm9maWxlciBleHBlY3RzCiAgICAgLy8gb3Bfd2lsbF9jYWxsIC8gb3BfZGlkX2NhbGwgcGFp
cnMgYmVmb3JlIGFuZCBhZnRlciBhIGNhbGwsIHdoaWNoIGFyZSBub3QKQEAgLTQwNyw3ICs0MDcs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMo
cGFyZW50UHJpdmF0ZU5hbWVFbnZpcm9ubWVudCk7CiAKICAgICBTeW1ib2xUYWJsZSogZnVuY3Rp
b25TeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUobV92bSk7Ci0gICAgZnVuY3Rpb25T
eW1ib2xUYWJsZS0+c2V0VXNlc1Nsb3BweUV2YWwobV91c2VzU2xvcHB5RXZhbCk7CisgICAgZnVu
Y3Rpb25TeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZh
bCk7CiAgICAgaW50IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCA9IDA7CiAKICAgICBtX2NhY2hl
ZFBhcmVudFREWiA9IHBhcmVudFNjb3BlVERaVmFyaWFibGVzOwpAQCAtODk0LDcgKzg5NCw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEV2YWxOb2RlKiBl
dmFsTm9kZSwgVW5saW5rZWRFdmFsQ29kCiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQog
ICAgICwgbV9leHByZXNzaW9uVG9vRGVlcChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rp
b24oZmFsc2UpCi0gICAgLCBtX3VzZXNTbG9wcHlFdmFsKGV2YWxOb2RlLT51c2VzRXZhbCgpICYm
ICFldmFsTm9kZS0+aXNTdHJpY3RNb2RlKCkpCisgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGV2
YWxOb2RlLT51c2VzRXZhbCgpICYmICFldmFsTm9kZS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgLCBt
X2luVGFpbFBvc2l0aW9uKGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlv
bkNvbnRleHQoZXZhbE5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZXZhbE5vZGUtPnVzZXNF
dmFsKCkpCiAgICAgLCBtX2VjbWFNb2RlKEVDTUFNb2RlOjpmcm9tQm9vbChldmFsTm9kZS0+aXNT
dHJpY3RNb2RlKCkpKQpAQCAtOTU3LDcgKzk1Nyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9k
CiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVl
cChmYWxzZSkKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oZmFsc2UpCi0gICAgLCBtX3VzZXNT
bG9wcHlFdmFsKGZhbHNlKQorICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKICAgICAs
IG1faW5UYWlsUG9zaXRpb24oZmFsc2UpCiAgICAgLCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0
aW9uQ29udGV4dChtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBtb2R1
bGVQcm9ncmFtTm9kZS0+dXNlc0V2YWwoKSkKICAgICAsIG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0
cmljdCgpKQpAQCAtOTY1LDcgKzk2NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAg
QVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFy
aWFibGVzKTsKIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
ID0gU3ltYm9sVGFibGU6OmNyZWF0ZShtX3ZtKTsKLSAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJv
bFRhYmxlLT5zZXRVc2VzU2xvcHB5RXZhbChtX3VzZXNTbG9wcHlFdmFsKTsKKyAgICBtb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNOb25TdHJp
Y3RFdmFsKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRTY29wZVR5cGUo
U3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsKIAogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gc2hvdWxkRW1pdERlYnVnSG9va3MoKSB8fCB1c2VzRXZh
bCgpOwpAQCAtMjM4Myw3ICsyMzgzLDcgQEAgVmFyaWFibGUgQnl0ZWNvZGVHZW5lcmF0b3I6OnZh
cmlhYmxlKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBUaGlzUmVzb2x1dGlvblQKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBib29sIHJlc3VsdElzQ2FsbGVlID0gZmFsc2U7CiAg
ICAgICAgIGlmIChzeW1ib2xUYWJsZS0+c2NvcGVUeXBlKCkgPT0gU3ltYm9sVGFibGU6OlNjb3Bl
VHlwZTo6RnVuY3Rpb25OYW1lU2NvcGUpIHsKLSAgICAgICAgICAgIGlmIChtX3VzZXNTbG9wcHlF
dmFsKSB7CisgICAgICAgICAgICBpZiAobV91c2VzTm9uU3RyaWN0RXZhbCkgewogICAgICAgICAg
ICAgICAgIC8vIFdlIGRvbid0IGtub3cgaWYgYW4gZXZhbCBoYXMgaW50cm9kdWNlZCBhICJ2YXIi
IG5hbWVkIHRoZSBzYW1lIHRoaW5nIGFzIHRoZSBmdW5jdGlvbiBuYW1lIHNjb3BlIHZhcmlhYmxl
IG5hbWUuCiAgICAgICAgICAgICAgICAgLy8gV2UgcmVzb3J0IHRvIGR5bmFtaWMgbG9va3VwIHRv
IGFuc3dlciB0aGlzIHF1ZXN0aW9uLgogICAgICAgICAgICAgICAgIFZhcmlhYmxlIHJlc3VsdCA9
IFZhcmlhYmxlKHByb3BlcnR5KTsKQEAgLTI0NjksNyArMjQ2OSw3IEBAIFJlc29sdmVUeXBlIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlVHlwZSgpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9s
ZXhpY2FsU2NvcGVTdGFjay5zaXplKCk7IGktLTsgKSB7CiAgICAgICAgIGlmIChtX2xleGljYWxT
Y29wZVN0YWNrW2ldLm1faXNXaXRoU2NvcGUpCiAgICAgICAgICAgICByZXR1cm4gRHluYW1pYzsK
LSAgICAgICAgaWYgKG1fdXNlc1Nsb3BweUV2YWwgJiYgbV9sZXhpY2FsU2NvcGVTdGFja1tpXS5t
X3N5bWJvbFRhYmxlLT5zY29wZVR5cGUoKSA9PSBTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpGdW5j
dGlvbk5hbWVTY29wZSkgeworICAgICAgICBpZiAobV91c2VzTm9uU3RyaWN0RXZhbCAmJiBtX2xl
eGljYWxTY29wZVN0YWNrW2ldLm1fc3ltYm9sVGFibGUtPnNjb3BlVHlwZSgpID09IFN5bWJvbFRh
YmxlOjpTY29wZVR5cGU6OkZ1bmN0aW9uTmFtZVNjb3BlKSB7CiAgICAgICAgICAgICAvLyBXZSBu
ZXZlciB3YW50IHRvIGFzc2lnbiB0byBhIEZ1bmN0aW9uTmFtZVNjb3BlLiBSZXR1cm5pbmcgRHlu
YW1pYyBoZXJlIGFjaGlldmVzIHRoaXMgZ29hbC4KICAgICAgICAgICAgIC8vIElmIHdlIGFyZW4n
dCBpbiBub24tc3RyaWN0IGV2YWwgbW9kZSwgdGhlbiBOb2Rlc0NvZGVHZW4gbmVlZHMgdG8gdGFr
ZSBjYXJlIG5vdCB0byBlbWl0CiAgICAgICAgICAgICAvLyBhIHB1dF90b19zY29wZSB3aXRoIHRo
ZSBkZXN0aW5hdGlvbiBiZWluZyB0aGUgZnVuY3Rpb24gbmFtZSBzY29wZSB2YXJpYWJsZS4KQEAg
LTI0NzcsNyArMjQ3Nyw3IEBAIFJlc29sdmVUeXBlIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZl
VHlwZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV91c2VzU2xvcHB5RXZhbCkKKyAg
ICBpZiAobV91c2VzTm9uU3RyaWN0RXZhbCkKICAgICAgICAgcmV0dXJuIEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrczsKICAgICByZXR1cm4gR2xvYmFsUHJvcGVydHk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggZjZiYzQ0N2RmMjlhLi45ZTdlZjE5YjIyZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTEzMjEsNyArMTMyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fdXNl
c0V4Y2VwdGlvbnMgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXAg
eyBmYWxzZSB9OwogICAgICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9Owot
ICAgICAgICBib29sIG1fdXNlc1Nsb3BweUV2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIG1f
dXNlc05vblN0cmljdEV2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRp
b24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25D
b250ZXh0IDogMTsKICAgICAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCA0NjY3NWM0NGM4MWMuLmI1NDA0YjJhMWE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApA
QCAtMjU5MiwzMSArMjU5MiwxNCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAg
ICAgCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgotICAgIGNh
c2UgUHV0QnlWYWxBbGlhczoKLSAgICBjYXNlIFB1dEJ5VmFsTWVnYW1vcnBoaWM6IHsKKyAgICBj
YXNlIFB1dEJ5VmFsQWxpYXM6IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS5t
b2RlRm9yUHV0KCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDoKICAg
ICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzogewotICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gUHV0QnlWYWwgfHwgbm9kZS0+b3AoKSA9PSBQdXRCeVZhbE1lZ2Ftb3JwaGljKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2hpbGQobm9kZSwgMCkudXNlS2luZCgpID09IENl
bGxVc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgcHJvcGVydHkgPSBm
b3JOb2RlKG1fZ3JhcGguY2hpbGQobm9kZSwgMSkpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
SlNWYWx1ZSBjb25zdGFudCA9IHByb3BlcnR5LnZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjb25zdGFudC5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGNvbnN0YW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVu
dGlmaWVyQ2VsbChzdHJpbmcpICYmICFwYXJzZUluZGV4KENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21DZWxsKHN0cmluZykudWlkKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBcnJheTo6R2Vu
ZXJpYzoKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgICAgICBpZiAobm9k
ZS0+YXJyYXlNb2RlKCkuaXNPdXRPZkJvdW5kcygpKQogICAgICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZCgpOwpAQCAtNDQ0NCw3ICs0NDI3LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKIAog
ICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWVCeUlkOgogICAgIGNhc2UgUHV0QnlJZDoKLSAgICBjYXNl
IFB1dEJ5SWRNZWdhbW9ycGhpYzoKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1
dEJ5SWREaXJlY3Q6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGIxNDg3OWU0ZGU0OS4uYWM3
ZDY4MTFlMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3
YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTQ5Nyw4ICs0OTcsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIGNhc2UgRW51bWVyYXRvclB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1
dEJ5VmFsRGlyZWN0OgotICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAgICAgICBjYXNlIFB1dEJ5
VmFsTWVnYW1vcnBoaWM6IHsKKyAgICAgICAgY2FzZSBQdXRCeVZhbDogewogICAgICAgICAgICAg
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2Vz
QXNWYWx1ZSk7CiAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLT5tZXJn
ZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB8IE5vZGVCeXRlY29kZVVzZXNBc090aGVy
IHwgTm9kZUJ5dGVjb2RlVXNlc0FzSW50IHwgTm9kZUJ5dGVjb2RlVXNlc0FzQXJyYXlJbmRleCk7
CiAgICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpLT5tZXJnZUZsYWdzKE5v
ZGVCeXRlY29kZVVzZXNBc1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNWQzYTYxYzc0YWE3Li4wZTExMzJjYWI5MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC01MDQzLDcgKzUwNDMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgICAgICB9CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNz
VHlwZTo6R2V0QnlJZCkgewotICAgICAgICAgICAgaWYgKGdldEJ5U3RhdHVzLmlzTWVnYW1vcnBo
aWMoKSAmJiBjYW5Vc2VNZWdhbW9ycGhpY0dldEJ5SWQoKm1fdm0sIGlkZW50aWZpZXIudWlkKCkp
KSB7CisgICAgICAgICAgICBpZiAoZ2V0QnlTdGF0dXMuaXNNZWdhbW9ycGhpYygpKSB7CiAgICAg
ICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBhZGRUb0dyYXBoKEdldEJ5SWRNZWdhbW9ycGhp
YywgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01NDMwLDcgKzU0MzAsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKICAgICBpZiAoaXNEaXJlY3QpCiAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0QnlJZERpcmVjdCwgT3BJbmZvKGlkZW50aWZpZXIpLCBPcEluZm8o
ZWNtYU1vZGUpLCBiYXNlLCB2YWx1ZSk7CiAgICAgZWxzZQotICAgICAgICBhZGRUb0dyYXBoKChw
dXRCeVN0YXR1cy5pc01lZ2Ftb3JwaGljKCkgJiYgY2FuVXNlTWVnYW1vcnBoaWNQdXRCeUlkKCpt
X3ZtLCBpZGVudGlmaWVyLnVpZCgpKSkgPyBQdXRCeUlkTWVnYW1vcnBoaWMgOiBwdXRCeVN0YXR1
cy5tYWtlc0NhbGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8oaWRlbnRpZmll
ciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKKyAgICAgICAgYWRkVG9HcmFwaChw
dXRCeVN0YXR1cy5tYWtlc0NhbGxzKCkgPyBQdXRCeUlkRmx1c2ggOiBQdXRCeUlkLCBPcEluZm8o
aWRlbnRpZmllciksIE9wSW5mbyhlY21hTW9kZSksIGJhc2UsIHZhbHVlKTsKIH0KIAogdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKQEAgLTcwOTcsNyArNzA5Nyw3IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAg
IEdldEJ5U3RhdHVzIGdldEJ5U3RhdHVzID0gR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLCBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsKIAotICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKGdldEJ5U3RhdHVzLmlzTWVnYW1vcnBo
aWMoKSAmJiBjYW5Vc2VNZWdhbW9ycGhpY0dldEJ5SWQoKm1fdm0sIHVpZCkgPyBHZXRCeUlkV2l0
aFRoaXNNZWdhbW9ycGhpYyA6IEdldEJ5SWRXaXRoVGhpcywgT3BJbmZvKENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHRo
aXNWYWx1ZSkpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKGdl
dEJ5U3RhdHVzLmlzTWVnYW1vcnBoaWMoKSA/IEdldEJ5SWRXaXRoVGhpc01lZ2Ftb3JwaGljIDog
R2V0QnlJZFdpdGhUaGlzLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlk
ZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgdWlkKSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSwgdGhpc1ZhbHVlKSk7CiAKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOwogICAgICAgICB9CkBA
IC05NTEzLDkgKzk1MTMsOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChC
eXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAgICAgICBhZGRW
YXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBM
ZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJBcmdDaGlsZChu
dWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBOb2RlKiBwdXRCeVZh
bCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDog
c3RhdHVzLmlzTWVnYW1vcnBoaWMoKSA/IFB1dEJ5VmFsTWVnYW1vcnBoaWMgOiBQdXRCeVZhbCwg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7
CisgICAgICAgIE5vZGUqIHB1dEJ5VmFsID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGly
ZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQo
KSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFs
c2U7IC8vIFB1dEJ5VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYg
dGhleSBjbG9iYmVyIGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBn
ZW5lcmljLgotICAgICAgICBpZiAoIXN0YXR1cy5pc01lZ2Ftb3JwaGljKCkgJiYgc3RhdHVzLm9i
c2VydmVkU3RydWN0dXJlU3R1YkluZm9TbG93UGF0aCgpKQorICAgICAgICBpZiAoc3RhdHVzLm9i
c2VydmVkU3RydWN0dXJlU3R1YkluZm9TbG93UGF0aCgpKQogICAgICAgICAgICAgbV9ncmFwaC5t
X3Nsb3dQdXRCeVZhbC5hZGQocHV0QnlWYWwpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjM1MmJkMjMyMTRmLi40YTRhMzJlNzEyNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNjIsNyAr
MTYyLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgY2FzZSBQdXRCeVZhbERp
cmVjdDoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFz
OgotICAgICAgICBjYXNlIFB1dEJ5VmFsTWVnYW1vcnBoaWM6CiAgICAgICAgIGNhc2UgR2V0QnlW
YWw6CiAgICAgICAgIGNhc2UgR2V0QnlWYWxNZWdhbW9ycGhpYzoKICAgICAgICAgY2FzZSBTdHJp
bmdDaGFyQXQ6CkBAIC03MTMsNyArNzEyLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzTWVnYW1v
cnBoaWM6CiAgICAgY2FzZSBQdXRCeUlkOgotICAgIGNhc2UgUHV0QnlJZE1lZ2Ftb3JwaGljOgog
ICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAg
ICBjYXNlIFB1dEJ5SWRGbHVzaDoKQEAgLTExMDQsOCArMTEwMiw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6
Ci0gICAgY2FzZSBQdXRCeVZhbEFsaWFzOgotICAgIGNhc2UgUHV0QnlWYWxNZWdhbW9ycGhpYzog
eworICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewogICAgICAgICBBcnJheU1vZGUgbW9kZSA9IG5v
ZGUtPmFycmF5TW9kZSgpOwogICAgICAgICBOb2RlKiBiYXNlID0gZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMCkubm9kZSgpOwogICAgICAgICBOb2RlKiBpbmRleCA9IGdyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDEpLm5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggMjVlZTBjOTcyMGYxLi4yYmMzM2VlZWE1
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCkBAIC02NzEsOCArNjcxLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAg
ICAgY2FzZSBQdXRCeUlkOgogICAgICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgotICAgICAg
ICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5SWRNZWdhbW9y
cGhpYzogeworICAgICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgICAg
ICBib29sIGlzRGlyZWN0ID0gbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0OwogICAgICAgICAg
ICAgICAgIHRyeUZvbGRBc1B1dEJ5T2Zmc2V0KG5vZGUsIGluZGV4SW5CbG9jaywgbm9kZS0+Y2hp
bGQxKCksIG5vZGUtPmNoaWxkMigpLCBpc0RpcmVjdCwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9u
ZSgpLCBjaGFuZ2VkLCBhbHJlYWR5SGFuZGxlZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC03MTgsMjkgKzcxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGNhc2UgUHV0QnlWYWw6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5VmFsTWVnYW1v
cnBoaWM6IHsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBw
cm9wZXJ0eSA9IG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgY29uc3RhbnQgPSBwcm9wZXJ0eS52YWx1ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQuaXNTdHJpbmcoKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhjb25z
dGFudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3RyaW5nKSAmJiAhcGFyc2VJbmRleChDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdHJpbmcpLnVpZCgpKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5n
LT50cnlHZXRWYWx1ZUltcGwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaW1wbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZnJlZXplU3Ryb25nKHN0cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoY29uc3RfY2FzdDxVbmlxdWVkU3RyaW5nSW1w
bCo+KHN0YXRpY19jYXN0PGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Q2hlY2soaW5k
ZXhJbkJsb2NrLCBub2RlLT5vcmlnaW4sIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QdXRCeUlkTWF5YmVNZWdh
bW9ycGhpYyhtX2dyYXBoLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdHJp
bmcpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZTogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDI1OTQwMDZiMGFjYy4uMDgxNTZkMDMwZjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zMjEsNyArMzIxLDYg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0QnlJ
ZDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6Ci0gICAg
Y2FzZSBQdXRCeUlkTWVnYW1vcnBoaWM6CiAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKQEAgLTUzMyw3
ICs1MzIsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxB
bGlhczoKLSAgICBjYXNlIFB1dEJ5VmFsTWVnYW1vcnBoaWM6CiAgICAgICAgIGlmICghZ3JhcGgu
bV9wbGFuLmlzRlRMKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCku
bW9kZUZvclB1dCgpLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNTU4
OTllYTYwOGI4Li4zYTkwM2QxNTBhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTIxNSwxNSArMTIxNSw2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgUHV0QnlWYWxNZWdhbW9ycGhp
YzogewotICAgICAgICAgICAgRWRnZSYgY2hpbGQxID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKTsKLSAgICAgICAgICAgIEVkZ2UmIGNoaWxkMiA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSk7Ci0gICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoQXJyYXlNb2RlKEFycmF5OjpH
ZW5lcmljLCBub2RlLT5hcnJheU1vZGUoKS5hY3Rpb24oKSkpOwotICAgICAgICAgICAgZml4RWRn
ZTxDZWxsVXNlPihjaGlsZDEpOwotICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KGNoaWxk
Mik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxB
bGlhczogewpAQCAtMTI2Niw3ICsxMjU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAg
IAogICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihjaGlsZDEsIGNoaWxkMiwgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+YXJyYXlNb2RlKCkubW9kZUZvclB1dCgpLnR5cGUoKSkgewpAQCAtMTk5MiwxMCAr
MTk4Myw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUHV0QnlJZE1lZ2Ft
b3JwaGljOgotICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IDUzNGFmMTg2YTA2YS4uYjg1OGY1MDU1ZTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCi0jaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGlu
ZXMuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR1Byb21vdGVkSGVhcExv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiRE9NSklUU2lnbmF0dXJlLmgiCkBAIC0zNTcsNyArMzU2LDcg
QEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9SZWdFeHBUZXN0SW5saW5lKEZyb3plblZhbHVlKiBnbG9i
YWxPYmplY3QsIEZyb3plblZhbHVlKiByZWcKIHZvaWQgTm9kZTo6Y29udmVydFRvR2V0QnlJZE1h
eWJlTWVnYW1vcnBoaWMoR3JhcGgmIGdyYXBoLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKG9wKCkgPT0gR2V0QnlWYWwgfHwgb3AoKSA9PSBHZXRCeVZhbE1l
Z2Ftb3JwaGljKTsKLSAgICBib29sIGlzTWVnYW1vcnBoaWMgPSBvcCgpID09IEdldEJ5VmFsTWVn
YW1vcnBoaWMgJiYgY2FuVXNlTWVnYW1vcnBoaWNHZXRCeUlkKGdyYXBoLm1fdm0sIGlkZW50aWZp
ZXIudWlkKCkpOworICAgIGJvb2wgaXNNZWdhbW9ycGhpYyA9IG9wKCkgPT0gR2V0QnlWYWxNZWdh
bW9ycGhpYzsKICAgICBFZGdlIGJhc2UgPSBncmFwaC52YXJBcmdDaGlsZCh0aGlzLCAwKTsKICAg
ICBBU1NFUlQoYmFzZS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW4oKTsgKytpKSB7CkBAIC0zNzEsMjUgKzM3MCw2IEBAIHZv
aWQgTm9kZTo6Y29udmVydFRvR2V0QnlJZE1heWJlTWVnYW1vcnBoaWMoR3JhcGgmIGdyYXBoLCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkCiAgICAgbV9vcEluZm8gPSBpZGVudGlmaWVyOwogfQogCi12
b2lkIE5vZGU6OmNvbnZlcnRUb1B1dEJ5SWRNYXliZU1lZ2Ftb3JwaGljKEdyYXBoJiBncmFwaCwg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIEFTU0VSVChvcCgpID09IFB1
dEJ5VmFsIHx8IG9wKCkgPT0gUHV0QnlWYWxNZWdhbW9ycGhpYyk7Ci0gICAgYm9vbCBpc01lZ2Ft
b3JwaGljID0gb3AoKSA9PSBQdXRCeVZhbE1lZ2Ftb3JwaGljICYmIGNhblVzZU1lZ2Ftb3JwaGlj
UHV0QnlJZChncmFwaC5tX3ZtLCBpZGVudGlmaWVyLnVpZCgpKTsKLSAgICBFZGdlIGJhc2UgPSBn
cmFwaC5jaGlsZCh0aGlzLCAwKTsKLSAgICBFZGdlIHZhbHVlID0gZ3JhcGguY2hpbGQodGhpcywg
Mik7Ci0gICAgQVNTRVJUKGJhc2UudXNlS2luZCgpID09IENlbGxVc2UpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1DaGlsZHJlbigpOyArK2kpIHsKLSAgICAgICAgRWRnZSYgZWRn
ZSA9IGdyYXBoLnZhckFyZ0NoaWxkKHRoaXMsIGkpOwotICAgICAgICBlZGdlID0gRWRnZSgpOwot
ICAgIH0KLQotICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKGlzTWVnYW1vcnBoaWMgPyBQdXRCeUlk
TWVnYW1vcnBoaWMgOiBQdXRCeUlkKTsKLSAgICBjaGlsZHJlbi5jaGlsZDEoKSA9IEVkZ2UoYmFz
ZS5ub2RlKCksIENlbGxVc2UpOwotICAgIGNoaWxkcmVuLmNoaWxkMigpID0gRWRnZSh2YWx1ZS5u
b2RlKCkpOwotICAgIGNoaWxkcmVuLmNoaWxkMygpID0gRWRnZSgpOwotICAgIG1fb3BJbmZvID0g
aWRlbnRpZmllcjsKLX0KLQogU3RyaW5nIE5vZGU6OnRyeUdldFN0cmluZyhHcmFwaCYgZ3JhcGgp
CiB7CiAgICAgaWYgKGhhc0NvbnN0YW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CmluZGV4IDE3MWIwN2ViNTEyNy4uMDI4YzQ3M2YxYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaApAQCAtNTE4LDcgKzUxOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnRU
b0lkZW50aXR5T24oTm9kZSopOwogCiAgICAgdm9pZCBjb252ZXJ0VG9HZXRCeUlkTWF5YmVNZWdh
bW9ycGhpYyhHcmFwaCYsIENhY2hlYWJsZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY29udmVydFRv
UHV0QnlJZE1heWJlTWVnYW1vcnBoaWMoR3JhcGgmLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAog
ICAgIGJvb2wgbXVzdEdlbmVyYXRlKCkgY29uc3QKICAgICB7CkBAIC0xMTQ4LDcgKzExNDcsNiBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1
c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKLSAgICAgICAgY2FzZSBQdXRCeUlkTWVn
YW1vcnBoaWM6CiAgICAgICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1
dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjEwMiw3ICsy
MTAwLDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBj
YXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6Ci0gICAgICAgIGNhc2Ug
UHV0QnlWYWxNZWdhbW9ycGhpYzoKICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBj
YXNlIEF0b21pY3NBbmQ6CiAgICAgICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKQEAg
LTIxMzgsNyArMjEzNSw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoK
ICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgotICAg
ICAgICBjYXNlIFB1dEJ5VmFsTWVnYW1vcnBoaWM6CiAgICAgICAgICAgICByZXR1cm4gMzsKICAg
ICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICBjYXNlIEF0b21pY3NBbmQ6CkBAIC0yNDM3
LDcgKzI0MzMsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAg
ICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKLSAgICAgICAg
Y2FzZSBQdXRCeVZhbE1lZ2Ftb3JwaGljOgogICAgICAgICBjYXNlIEVudW1lcmF0b3JQdXRCeVZh
bDoKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgY2FzZSBHZXRCeVZhbE1lZ2Ftb3Jw
aGljOgpAQCAtMjUwNiwxMSArMjUwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBQdXRCeUlk
OgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNo
OgotICAgICAgICBjYXNlIFB1dEJ5SWRNZWdhbW9ycGhpYzoKICAgICAgICAgY2FzZSBQdXRCeUlk
V2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxB
bGlhczoKLSAgICAgICAgY2FzZSBQdXRCeVZhbE1lZ2Ftb3JwaGljOgogICAgICAgICBjYXNlIFB1
dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNh
c2UgRW51bWVyYXRvclB1dEJ5VmFsOgpAQCAtMjUzNSwxMSArMjUyOCw5IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgotICAgICAgICBjYXNlIFB1dEJ5SWRNZWdhbW9ycGhpYzoKICAg
ICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAg
ICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKLSAgICAgICAgY2FzZSBQdXRCeVZhbE1lZ2Ftb3JwaGlj
OgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIEVudW1lcmF0b3JQ
dXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDQ2MzY0NDI0NjFkZi4uMDMwNzcyYmIxM2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMTMsNyArMjEzLDYgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZh
bCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlW
YWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCi0gICAgbWFjcm8o
UHV0QnlWYWxNZWdhbW9ycGhpYywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CiAgICAgbWFjcm8oUHV0UHJpdmF0ZU5hbWUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQdXRQcml2YXRlTmFtZUJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVj
a1ByaXZhdGVCcmFuZCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMjMwLDcgKzIyOSw2IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeUlkRmx1c2gsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFdpdGhUaGlzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0g
ICAgbWFjcm8oUHV0QnlJZE1lZ2Ftb3JwaGljLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oUHV0QnlWYWxXaXRoVGhpcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CiAgICAgbWFjcm8oUHV0R2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KFB1dFNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDM0MTc0MGQzNDY0Ni4uM2IwYjAwOTQyOWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTg4
OSw3ICs4ODksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxT
dHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHB1dEJ5VmFsSW50ZXJu
YWw8dHJ1ZSwgZmFsc2U+KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRCYXNlLCBlbmNvZGVkUHJv
cGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25QdXRCeVZhbFNsb3BweSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVy
dHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05MDcsNyArOTA3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1N0cmljdCwgdm9pZCwgKEpTR2xvYmFs
T2JqZWMKICAgICBwdXRCeVZhbENlbGxTdHJpbmdJbnRlcm5hbDx0cnVlLCBmYWxzZT4oZ2xvYmFs
T2JqZWN0LCB2bSwgY2VsbCwgYXNTdHJpbmcoc3RyaW5nKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3RyaW5nU2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBjZWxsLCBKU0NlbGwqIHN0cmluZywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdO
b25TdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGNl
bGwsIEpTQ2VsbCogc3RyaW5nLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC05MjYsNyArOTI2LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCwgdm9pZCwgKEpT
R2xvYmFsT2JqZWMKICAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDx0cnVlLCBmYWxzZT4oZ2xvYmFs
T2JqZWN0LCB2bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbENl
bGxTeW1ib2xTbG9wcHksIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIGNlbGwsIEpTQ2VsbCogc3ltYm9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0
cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY2VsbCwg
SlNDZWxsKiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTk1Miw3ICs5NTIsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCwgdm9pZCwg
KEpTR2xvYgogICAgICAgICBvYmplY3QsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2
bSwgaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CiAKLUpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRz
U2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9i
amVjdCwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9u
U3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9i
amVjdCwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtOTg2LDcgKzk4Niw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3Ry
aWN0LCB2b2lkLCAoCiAgICAgICAgIG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tKHZtLCBpbmRleCksIGpzVmFsdWUsIHNsb3QpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1Nsb3BweSwgdm9p
ZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIGludDMy
X3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCwgdm9pZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIGludDMyX3QgaW5kZXgs
IGRvdWJsZSB2YWx1ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTEwMjEs
NyArMTAyMSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXREb3VibGVC
eVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0LCB2CiAgICAgQ29tbW9uU2xvd1BhdGhz
OjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgb2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tKHZtLCBpbmRleCksIGpzVmFsdWUsIHNsb3QpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1Ns
b3BweSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmpl
Y3QsIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmlj
dCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3Qs
IGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAg
cHV0QnlWYWxJbnRlcm5hbDx0cnVlLCB0cnVlPihnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkQmFz
ZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTbG9wcHksIHZvaWQsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQorSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMTA2NSw3ICsx
MDY1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
Q2VsbFN0cmluZ1N0cmljdCwgdm9pZCwgKEpTR2xvYmEKICAgICBwdXRCeVZhbENlbGxTdHJpbmdJ
bnRlcm5hbDx0cnVlLCB0cnVlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBhc1N0cmluZyhzdHJp
bmcpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdTbG9wcHksIHZvaWQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGNlbGwsIEpTQ2VsbCogc3Ry
aW5nLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQorSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0cmljdCwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY2VsbCwgSlNDZWxsKiBzdHJpbmcs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKQEAgLTEwODQsNyArMTA4NCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xTdHJpY3QsIHZvaWQsIChKU0dsb2JhCiAgICAg
cHV0QnlWYWxDZWxsSW50ZXJuYWw8dHJ1ZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgY2VsbCwg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKLUpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xTbG9w
cHksIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGNlbGwsIEpT
Q2VsbCogc3ltYm9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdCwg
dm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogY2VsbCwgSlNDZWxs
KiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKQEAgLTExMDgsNyArMTEwOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0LCB2b2lk
LCAoCiAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9i
amVjdCwgb2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCksIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTbG9wcHksIHZvaWQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBpbnQzMl90IGluZGV4
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBpbnQzMl90
IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7CkBAIC0zNzA0LDcgKzM3MDQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bAogICAgIHJldHVybiBwdXREeW5hbWljVmFyKGdsb2JhbE9iamVjdCwgdm0sIHNjb3BlLCB2YWx1
ZSwgaW1wbCwgZ2V0UHV0SW5mb0JpdHMsIGlzU3RyaWN0TW9kZSk7CiB9CiAKLUpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXREeW5hbWljVmFyU2xvcHB5LCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHNjb3BlLCBFbmNvZGVkSlNWYWx1ZSB2
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGdldFB1dEluZm9CaXRzKSkK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0
LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHNjb3BlLCBF
bmNvZGVkSlNWYWx1ZSB2YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGdl
dFB1dEluZm9CaXRzKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAyOGI2YmNkMDFjMjUuLjhmYjE2
MWRkNzAxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAg
LTE2MywyNSArMTYzLDI1IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
TWFwSXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVjdHVyZSopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3U2V0SXRlcmF0b3IsIEpTQ2VsbCosIChWTSosIFN0cnVj
dHVyZSopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFN0
cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU2xvcHB5
LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Qs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdT
dHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEpTQ2VsbCogc3RyaW5nLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqLCBKU0NlbGwqIHN0cmluZywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSk7
CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05v
blN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgSlNDZWxsKiBzdHJpbmcs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCosIEpTQ2VsbCogc3ltYm9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9s
U2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU0NlbGwqIHN5bWJvbCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiwgSlNDZWxsKiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFy
cmF5Qm91bmRzU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGludDMy
X3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU2xvcHB5LCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmlj
dCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U2xv
cHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RO
b25TdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERp
cmVjdENlbGxTdHJpbmdTdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEpT
Q2VsbCogc3RyaW5nLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU2xvcHB5LCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU0NlbGwqIHN0cmluZywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiwgSlNDZWxsKiBzdHJpbmcsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxT
eW1ib2xTdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEpTQ2VsbCogc3lt
Ym9sLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU2xvcHB5LCB2b2lkLCAoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqLCBKU0NlbGwqIHN5bWJvbCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxs
KiwgSlNDZWxsKiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91
bmRzU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QgaW5k
ZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU2xvcHB5LCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXREb3VibGVCeVZh
bEJleW9uZEFycmF5Qm91bmRzU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU2xvcHB5LCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1
ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXREb3VibGVCeVZhbEJl
eW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJs
ZSB2YWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXREb3VibGVC
eVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGludDMyX3Qg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Q
dXRCeVZhbFdpdGhUaGlzLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwpAQCAtMzQ0
LDcgKzM0NCw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNj
b3BlLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU1NjCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU1Njb3BlKiwgVW5pcXVlZFN0cmluZ0lt
cGwqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldER5bmFtaWNWYXIs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogc2NvcGUsIFVuaXF1
ZWRTdHJpbmdJbXBsKiwgdW5zaWduZWQpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHNjb3BlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqLCB1bnNpZ25lZCkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXREeW5hbWljVmFyU2xvcHB5
LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogc2NvcGUsIEVuY29kZWRKU1ZhbHVl
LCBVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVkKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIHZvaWQsIChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBzY29wZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiwg
dW5zaWduZWQpKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db252ZXJ0
Qm94ZWREb3VibGVUb0ludDUyLCBpbnQ2NF90LCAoRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIsIGludDY0X3Qs
IChkb3VibGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMmJmNTJkNDZhNGMyLi5kMDRm
ZTJiOTg5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC04MDQsOCArODA0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBFbnVtZXJhdG9yUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0
QnlWYWxEaXJlY3Q6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6Ci0gICAgICAgIGNhc2UgUHV0QnlW
YWxBbGlhczoKLSAgICAgICAgY2FzZSBQdXRCeVZhbE1lZ2Ftb3JwaGljOiB7CisgICAgICAgIGNh
c2UgUHV0QnlWYWxBbGlhczogewogICAgICAgICAgICAgRWRnZSBjaGlsZDEgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApOwogICAgICAgICAgICAgRWRnZSBjaGlsZDIgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDEpOwogICAgICAgICAgICAgRWRnZSBjaGlsZDMgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpOwpAQCAtMTQ3MCw3ICsxNDY5LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoK
ICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgY2FzZSBQdXRCeVZhbE1lZ2Ftb3JwaGlj
OgogICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lOgogICAgICAgICBjYXNlIFB1dFByaXZhdGVO
YW1lQnlJZDoKICAgICAgICAgY2FzZSBFbnVtZXJhdG9yUHV0QnlWYWw6CkBAIC0xNDg5LDcgKzE0
ODcsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0
QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6Ci0gICAgICAgIGNhc2UgUHV0
QnlJZE1lZ2Ftb3JwaGljOgogICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgICAgICBjYXNl
IE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYWIxMGNjNzgyYTky
Li4zZTljMWNiNDY5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC0zOTksNyArMzk5LDYgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOgotICAgIGNhc2UgUHV0QnlWYWxNZWdhbW9ycGhpYzoKICAgICAgICAgcmV0dXJu
IG5vZGUtPmFycmF5TW9kZSgpLm1vZGVGb3JQdXQoKS5hbHJlYWR5Q2hlY2tlZCgKICAgICAgICAg
ICAgIGdyYXBoLCBub2RlLCBzdGF0ZS5mb3JOb2RlKGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDAp
KSk7CiAKQEAgLTU0NCw3ICs1NDMsNiBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgR2V0QnlJZERpcmVjdEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5
SWRGbHVzaDoKLSAgICBjYXNlIFB1dEJ5SWRNZWdhbW9ycGhpYzoKICAgICBjYXNlIFB1dEJ5SWRX
aXRoVGhpczoKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCBjZjc0ZDA5ZDVlZWQuLmVhNmI4YzNlODUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTI4MzAsNyArMjgzMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHV0QnlWYWwoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLAogICAgICAgICAgICAgbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZh
bERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3Qg
OiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KSA6Ci0gICAgICAgICAg
ICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERp
cmVjdEJleW9uZEFycmF5Qm91bmRzU2xvcHB5IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJh
eUJvdW5kc1Nsb3BweSksCisgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAg
ICAgICBOb1Jlc3VsdCwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2Rl
KSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykpOwogICAgIH0KIApAQCAtMjkwNSw3
ICsyOTA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCiAgICAgICAgICAgICAg
ICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgICAgICAgICAgKG5v
ZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVj
dEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRB
cnJheUJvdW5kc1N0cmljdCkgOgotICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQ
dXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlC
b3VuZHNTbG9wcHkgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU2xv
cHB5KSwKKyAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3Qg
PyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAg
ICAgICAgICAgICAgICAgTm9SZXN1bHQsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgq
dGhpcywgbm9kZSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgIH0KIApA
QCAtMjk2NCw5ICsyOTY0LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFs
KE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCkKLSAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTbG9wcHksIExpbmthYmxlQ29u
c3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Ms
IHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3Qo
KnRoaXMsIG5vZGUpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bFNsb3BweSwgTGlua2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgYmFz
ZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKKyAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIExpbmthYmxlQ29uc3RhbnQ6Omdsb2Jh
bE9iamVjdCgqdGhpcywgbm9kZSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7
CiAgICAgICAgICAgICBleGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgICAgICBub1Jlc3VsdChu
b2RlKTsKQEAgLTI5OTUsMTIgKzI5OTUsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBy
ZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQo
Y29kZU9yaWdpbiwgbV9zdHJlYW0uc2l6ZSgpKTsKICAgICAgICAgUmVnaXN0ZXJTZXRCdWlsZGVy
IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAgICAgICAgIGJvb2wgaXNE
aXJlY3QgPSBub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0OworICAgICAgICBQdXRLaW5kIHB1
dEtpbmQgPSBpc0RpcmVjdCA/IFB1dEtpbmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdDsK
ICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpOwogCiAgICAgICAg
IGF1dG8gWyBzdHViSW5mbywgc3R1YkluZm9Db25zdGFudCBdID0gYWRkU3RydWN0dXJlU3R1Yklu
Zm8oKTsKICAgICAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgY29k
ZUJsb2NrKCksIHN0dWJJbmZvLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCBpc0RpcmVjdCA/IChlY21hTW9kZS5pc1N0cmljdCgpID8gQWNjZXNzVHlwZTo6UHV0QnlWYWxE
aXJlY3RTdHJpY3QgOiBBY2Nlc3NUeXBlOjpQdXRCeVZhbERpcmVjdFNsb3BweSkgOiAoZWNtYU1v
ZGUuaXNTdHJpY3QoKSA/IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU3RyaWN0IDogQWNjZXNzVHlwZTo6
UHV0QnlWYWxTbG9wcHkpLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgYmFzZVJlZ3MsIHBy
b3BlcnR5UmVncywgdmFsdWVSZWdzLCBJbnZhbGlkR1BSUmVnLCBzdHViSW5mb0dQUiwgZWNtYU1v
ZGUpOworICAgICAgICAgICAgY29kZUJsb2NrKCksIHN0dWJJbmZvLCBKSVRUeXBlOjpERkdKSVQs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgdXNlZFJlZ2lzdGVy
cywKKyAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgSW52YWxp
ZEdQUlJlZywgc3R1YkluZm9HUFIsIHB1dEtpbmQsIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQdXRL
aW5kOjpub25lKCkpOwogCiAgICAgICAgIHN0ZDo6dmlzaXQoWyZdKGF1dG8qIHN0dWJJbmZvKSB7
CiAgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKGNoaWxkMikuaXNUeXBlKFNwZWNTdHJp
bmcpKQpAQCAtMzAxNCw3ICszMDE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwotICAgICAgICBh
dXRvIG9wZXJhdGlvbiA9IGlzRGlyZWN0ID8gKGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbFN0cmljdE9wdGltaXplIDogb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxT
bG9wcHlPcHRpbWl6ZSkgOiAoZWNtYU1vZGUuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0T3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbFNsb3BweU9wdGltaXplKTsKKyAgICAg
ICAgYXV0byBvcGVyYXRpb24gPSBpc0RpcmVjdCA/IChlY21hTW9kZS5pc1N0cmljdCgpID8gb3Bl
cmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSA6IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsTm9uU3RyaWN0T3B0aW1pemUpIDogKGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25Q
dXRCeVZhbFN0cmljdE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6
ZSk7CiAgICAgICAgIGlmIChtX2dyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKICAgICAgICAg
ICAgIGdlbi5nZW5lcmF0ZURGR0RhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBzdHViSW5mb0NvbnN0YW50
LmluZGV4KCksIHN0dWJJbmZvR1BSKTsKICAgICAgICAgICAgIGdlbi5tX3VubGlua2VkU3R1Yklu
Zm9Db25zdGFudEluZGV4ID0gc3R1YkluZm9Db25zdGFudC5pbmRleCgpOwpAQCAtMzExNyw3ICsz
MTE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAogICAgICAgICAgICAgICAgIG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/CiAgICAgICAgICAgICAgICAgICAgIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpIDoK
LSAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU2xvcHB5IDogb3BlcmF0aW9uUHV0
QnlWYWxCZXlvbmRBcnJheUJvdW5kc1Nsb3BweSksCisgICAgICAgICAgICAgICAgICAgIChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QpLAogICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBMaW5rYWJsZUNvbnN0YW50Ojpn
bG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdz
KSk7CiAgICAgICAgIH0KIApAQCAtNDI0Myw3ICs0MjQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShOb2RlKiBub2RlLCBUeXBlZEFycmF5
VHlwZQogICAgICAgICAgICAgc2xvd1BhdGhDYXNlcywgdGhpcywKICAgICAgICAgICAgIG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/CiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0g
UHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsU3RyaWN0KSA6Ci0gICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlW
YWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFNsb3BweSA6IG9wZXJhdGlvblB1dEJ5
VmFsU2xvcHB5KSwKKyAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxO
b25TdHJpY3QpLAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBOb1Jlc3VsdCwgTGlu
a2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgYmFzZVJlZywgcHJvcGVy
dHlSZWcsIHZhbHVlR1BSKSk7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKQEAgLTQ1Njcs
NyArNDU2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckNlbGxX
aXRoU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5
VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0KSA6Ci0gICAgICAgICAgICAobm9kZS0+b3Ao
KSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ1Ns
b3BweSA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ1Nsb3BweSksCisgICAgICAgICAgICAo
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2Vs
bFN0cmluZ05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCks
CiAgICAgICAgIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIGFy
ZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBleGNlcHRpb25DaGVjaygpOwogCkBAIC00
NTkwLDcgKzQ1OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JD
ZWxsV2l0aFN5bWJvbChOb2RlKiBub2RlKQogICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgPyAobm9kZS0+b3AoKSA9PSBQ
dXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdCkKLSAgICAgICAgICAgIDogKG5vZGUt
Pm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1i
b2xTbG9wcHkgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTbG9wcHkpLAorICAgICAgICAg
ICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0Q2VsbFN5bWJvbE5vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0
cmljdCksCiAgICAgICAgIExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9k
ZSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBleGNlcHRpb25DaGVjaygpOwog
CkBAIC00NjQ3LDggKzQ2NDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJp
dmF0ZU5hbWUoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gWyBzdHViSW5mbywgc3R1YkluZm9Db25z
dGFudCBdID0gYWRkU3RydWN0dXJlU3R1YkluZm8oKTsKICAgICBKSVRQdXRCeVZhbEdlbmVyYXRv
ciBnZW4oCi0gICAgICAgIGNvZGVCbG9jaygpLCBzdHViSW5mbywgSklUVHlwZTo6REZHSklULCBj
b2RlT3JpZ2luLCBjYWxsU2l0ZSwgbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5l
KCkgPyBBY2Nlc3NUeXBlOjpEZWZpbmVQcml2YXRlTmFtZUJ5VmFsIDogQWNjZXNzVHlwZTo6U2V0
UHJpdmF0ZU5hbWVCeVZhbCwgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocHJvcGVydHlHUFIp
LCB2YWx1ZVJlZ3MsIEludmFsaWRHUFJSZWcsIHN0dWJJbmZvR1BSLCBFQ01BTW9kZTo6c2xvcHB5
KCkpOworICAgICAgICBjb2RlQmxvY2soKSwgc3R1YkluZm8sIEpJVFR5cGU6OkRGR0pJVCwgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVOYW1lLCB1c2VkUmVnaXN0
ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgSW52YWxpZEdQUlJlZywg
c3R1YkluZm9HUFIsIFB1dEtpbmQ6OkRpcmVjdCwgRUNNQU1vZGU6OnNsb3BweSgpLCBub2RlLT5w
cml2YXRlRmllbGRQdXRLaW5kKCkpOwogCiAgICAgc3RkOjp2aXNpdChbJl0oYXV0byogc3R1Yklu
Zm8pIHsKICAgICAgICAgc3R1YkluZm8tPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwpAQCAtNDcw
MSw3ICs0NzAyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1l
QnlJZChOb2RlKiBub2RlKQogCiAgICAgLy8gV2UgZW1pdCBwcm9wZXJ0eSBjaGVjayBkdXJpbmcg
REZHIGdlbmVyYXRpb24sIHNvIHdlIGRvbid0IG5lZWQKICAgICAvLyB0byBjaGVjayBpdCBoZXJl
LgotICAgIGNhY2hlZFB1dEJ5SWQobm9kZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BS
LCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZp
bmUoKSA/IEFjY2Vzc1R5cGU6OkRlZmluZVByaXZhdGVOYW1lQnlJZCA6IEFjY2Vzc1R5cGU6OlNl
dFByaXZhdGVOYW1lQnlJZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBhdXRvIHB1dEtpbmQg
PSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAg
ICBjYWNoZWRQdXRCeUlkKG5vZGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFs
dWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKSwgcHV0S2luZCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQpAQCAtMTM0OTAsNyArMTM0OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9u
UHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTbG9wcHksIExpbmth
YmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVjdCgqdGhpcywgbm9kZSksIHNjb3BlR1BSLCB2YWx1ZVJl
Z3MsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25Q
dXREeW5hbWljVmFyTm9uU3RyaWN0LCBMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRo
aXMsIG5vZGUpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAg
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTE0NjQ1LDcgKzE0
NjQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRGbHVzaChOb2RlKiBu
b2RlKQogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICBmbHVzaFJl
Z2lzdGVycygpOwogCi0gICAgY2FjaGVkUHV0QnlJZChub2RlLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gy
R1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCksIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSA/IEFjY2Vzc1R5cGU6OlB1dEJ5SWRTdHJpY3QgOiBBY2Nlc3NUeXBlOjpQdXRCeUlkU2xv
cHB5LCBub2RlLT5lY21hTW9kZSgpLCBKdW1wKCksIERvbnRTcGlsbCk7CisgICAgY2FjaGVkUHV0
QnlJZChub2RlLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHZhbHVlUmVncywgc3R1
YkluZm9HUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCksIFB1dEtpbmQ6Ok5vdERpcmVjdCwgbm9kZS0+ZWNtYU1vZGUoKSwgSnVtcCgpLCBEb250
U3BpbGwpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xNDY3MCw3ICsxNDY3Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUsIG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRj
aEdQUiwgc2NyYXRjaDJHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8gQWNjZXNzVHlwZTo6UHV0QnlJZFN0cmljdCA6IEFjY2Vzc1R5
cGU6OlB1dEJ5SWRTbG9wcHksIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQo
bm9kZSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZv
R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LCBQdXRLaW5kOjpOb3REaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQo
bm9kZSk7CiB9CkBAIC0xNDY5NSw3ICsxNDY5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7CiAKLSAgICBjYWNoZWRQdXRCeUlkKG5vZGUsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
YmFzZUdQUiwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIs
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSwgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8gQWNjZXNzVHlwZTo6UHV0QnlJZERpcmVjdFN0cmljdCA6IEFjY2Vzc1R5cGU6OlB1dEJ5SWRE
aXJlY3RTbG9wcHksIG5vZGUtPmVjbWFNb2RlKCkpOworICAgIGNhY2hlZFB1dEJ5SWQobm9kZSwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBz
Y3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLCBQdXRL
aW5kOjpEaXJlY3QsIG5vZGUtPmVjbWFNb2RlKCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9
CkBAIC0xNjQ3MSw3ICsxNjQ3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQcm9m
aWxlVHlwZShOb2RlKiBub2RlKQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKE5vZGUqIG5vZGUsIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSwgRUNNQU1vZGUgZWNtYU1v
ZGUsIEp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKE5vZGUqIG5vZGUsIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNt
YU1vZGUsIEp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUp
CiB7CiAgICAgUmVnaXN0ZXJTZXRCdWlsZGVyIHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVn
aXN0ZXJzKCk7CiAgICAgaWYgKHNwaWxsTW9kZSA9PSBEb250U3BpbGwpIHsKQEAgLTE2NDkwLDcg
KzE2NDkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChOb2RlKiBub2Rl
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXMKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgY29kZUJsb2NrKCksIHN0dWJJbmZvLCBKSVRUeXBlOjpERkdKSVQs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAgICAg
ICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9H
UFIsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBhY2Nlc3NUeXBlKTsKKyAgICAgICAg
c2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQpOwogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIGlmIChzbG93UGF0aFRhcmdldC5pc1NldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGU5ZDRjZWViMmQ4YS4uNjRlZTI0NGRk
OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
IgogI2luY2x1ZGUgIkpJVE1hdGhJQy5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNp
bmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiU3BpbGxSZWdpc3RlcnNNb2RlLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCkBA
IC02OTcsNyArNjk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUNoZWNrRGV0YWNoZWQo
Tm9kZSopOwogCiAgICAgdm9pZCBjYWNoZWRHZXRCeUlkKE5vZGUqLCBDb2RlT3JpZ2luLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBzdHViSW5mb0dQUiwgR1BS
UmVnIHNjcmF0Y2hHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUsIEFjY2Vzc1R5cGUpOwotICAgIHZvaWQg
Y2FjaGVkUHV0QnlJZChOb2RlKiwgQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgR1BS
UmVnIHNjcmF0Y2gyR1BSLCBDYWNoZWFibGVJZGVudGlmaWVyLCBBY2Nlc3NUeXBlLCBFQ01BTW9k
ZSwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgp
LCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRQdXRC
eUlkKE5vZGUqLCBDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1ZVJlZ3MgdmFsdWVS
ZWdzLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRj
aDJHUFIsIENhY2hlYWJsZUlkZW50aWZpZXIsIFB1dEtpbmQsIEVDTUFNb2RlLCBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0
ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgdm9pZCBj
YWNoZWRHZXRCeUlkKE5vZGUqLCBDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJl
c3VsdEdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0
ZXJzTW9kZSwgQWNjZXNzVHlwZSk7CkBAIC0xMzczLDcgKzEzNzQsNiBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBp
bGVQdXRCeVZhbE1lZ2Ftb3JwaGljKE5vZGUqKTsKIAogICAgIC8vIFdlIHVzZSBhIHNjb3BlZExh
bWJkYSB0byBwbGFjYXRlIHJlZ2lzdGVyIGFsbG9jYXRpb24gdmFsaWRhdGlvbi4KICAgICBlbnVt
IGNsYXNzIENhblVzZUZsdXNoIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTE1ODYsNyArMTU4Niw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVQdXRCeUlkRGlyZWN0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkV2l0aFRo
aXMoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZVB1dEJ5SWRNZWdhbW9ycGhpYyhOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVHZXRFeGVjdXRhYmxlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRHZXR0ZXIoTm9k
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggNmMwYzM0NmUwMTkzLi5jYWQyNGMxNzEwNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtNDI3OSw4ICs0Mjc5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzTWVnYW1vcnBoaWM6CiAgICAgY2FzZSBHZXRC
eVZhbE1lZ2Ftb3JwaGljOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpc01lZ2Ftb3JwaGljOgot
ICAgIGNhc2UgUHV0QnlJZE1lZ2Ftb3JwaGljOgotICAgIGNhc2UgUHV0QnlWYWxNZWdhbW9ycGhp
YzoKICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJ1bmV4cGVjdGVkIG5vZGUgaW4g
REZHIGJhY2tlbmQiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggODE2M2RjMDZkOWQ2
Li45ZDFmNDVmYWQ4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzU4MiwxMiArMzU4Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVB1dEJ5VmFsKG5vZGUp
OwogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBjYXNlIFB1dEJ5VmFsTWVnYW1vcnBoaWM6
IHsKLSAgICAgICAgY29tcGlsZVB1dEJ5VmFsTWVnYW1vcnBoaWMobm9kZSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQorICAgICAgICAKICAgICBjYXNlIEF0b21pY3NBZGQ6CiAgICAgY2FzZSBB
dG9taWNzQW5kOgogICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKQEAgLTQ2NzUsMTEg
KzQ2NzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgUHV0QnlJZE1lZ2Ftb3JwaGljOiB7Ci0gICAg
ICAgIGNvbXBpbGVQdXRCeUlkTWVnYW1vcnBoaWMobm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQogICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIGNvbXBpbGVQdXRCeUlk
V2l0aFRoaXMobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjg1NSwyMyArNjg0NSwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvclB1dEJ5VmFsKE5vZGUqIG5vZGUp
CiAKICAgICAgICAgICAgIGF1dG8gWyBzdHViSW5mbywgc3R1YkluZm9Db25zdGFudCBdID0gYWRk
U3RydWN0dXJlU3R1YkluZm8oKTsKICAgICAgICAgICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2soKSwgc3R1YkluZm8sIEpJVFR5cGU6OkRGR0pJ
VCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBBY2Nlc3NUeXBl
OjpQdXRCeVZhbFN0cmljdCA6IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU2xvcHB5LCB1c2VkUmVnaXN0
ZXJzLAotICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywg
SW52YWxpZEdQUlJlZywgc2NyYXRjaEdQUiwgZWNtYU1vZGUpOwotCi0gICAgICAgICAgICBzdGQ6
OnZpc2l0KFsmXShhdXRvKiBzdHViSW5mbykgewotICAgICAgICAgICAgICAgIGlmIChtX3N0YXRl
LmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNTdHJpbmcp
KQotICAgICAgICAgICAgICAgICAgICBzdHViSW5mby0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjSW50MzJPbmx5KSkKLSAgICAgICAgICAgICAgICAg
ICAgc3R1YkluZm8tPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlw
ZShTcGVjU3ltYm9sKSkKLSAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8tPnByb3BlcnR5SXNT
eW1ib2wgPSB0cnVlOwotICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5pc0VudW1lcmF0b3IgPSB0
cnVlOwotICAgICAgICAgICAgfSwgc3R1YkluZm8pOworICAgICAgICAgICAgICAgIGNvZGVCbG9j
aygpLCBzdHViSW5mbywgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNj
ZXNzVHlwZTo6UHV0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgYmFzZVJl
Z3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBJbnZhbGlkR1BSUmVnLCBzY3JhdGNoR1BSLCBQ
dXRLaW5kOjpOb3REaXJlY3QsIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkp
OwogCiAgICAgICAgICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7Ci0gICAgICAgICAgICBhdXRv
IG9wZXJhdGlvbiA9IGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxTbG9wcHlPcHRpbWl6ZTsKKyAgICAgICAgICAg
IGF1dG8gb3BlcmF0aW9uID0gZWNtYU1vZGUuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0T3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdE9wdGltaXplOwogICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9wbGFuLmlzVW5saW5rZWQoKSkgewogICAgICAgICAgICAg
ICAgIGdlbi5nZW5lcmF0ZURGR0RhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBzdHViSW5mb0NvbnN0YW50
LmluZGV4KCksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIGdlbi5tX3VubGlua2VkU3R1
YkluZm9Db25zdGFudEluZGV4ID0gc3R1YkluZm9Db25zdGFudC5pbmRleCgpOwpAQCAtNjkxMyw2
MSArNjg5Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yUHV0QnlW
YWwoTm9kZSogbm9kZSkKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5SWRNZWdhbW9ycGhpYyhOb2RlKiBub2RlKQotewotICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAwKSk7Ci0gICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbV9ncmFwaC5jaGlsZChub2RlLCAxKSk7Ci0gICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0
aGlzKTsKLSAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDModGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2g0KHRoaXMpOwotCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAg
IEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgR1BSUmVn
IHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
c2NyYXRjaDIuZ3ByKCk7Ci0gICAgR1BSUmVnIHNjcmF0Y2gzR1BSID0gc2NyYXRjaDMuZ3ByKCk7
Ci0gICAgR1BSUmVnIHNjcmF0Y2g0R1BSID0gc2NyYXRjaDQuZ3ByKCk7Ci0KLSAgICBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnVpZCgpOwotICAg
IEp1bXBMaXN0IHNsb3dDYXNlcyA9IHN0b3JlTWVnYW1vcnBoaWNQcm9wZXJ0eSh2bSgpLCBiYXNl
R1BSLCBJbnZhbGlkR1BSUmVnLCB1aWQsIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gx
R1BSLCBzY3JhdGNoMkdQUiwgc2NyYXRjaDNHUFIsIHNjcmF0Y2g0R1BSKTsKLSAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkTWVnYW1vcnBoaWNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeUlkTWVnYW1vcnBoaWNTbG9wcHksIE5vUmVzdWx0LCBMaW5rYWJsZUNvbnN0YW50
OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1
ZVJlZ3MsIGJhc2VHUFIsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpKTsK
LSAgICBub1Jlc3VsdChub2RlKTsKLX0KLQotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
dEJ5VmFsTWVnYW1vcnBoaWMoTm9kZSogbm9kZSkKLXsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGguY2hpbGQobm9kZSwgMCkpOwotICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDEpKTsKLSAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDIpKTsKLSAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMp
OwotICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMyh0aGlzKTsKLSAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDQodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g1KHRoaXMpOwotCi0gICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEdQUlJlZyBzdWJzY3JpcHRHUFIgPSBzdWJz
Y3JpcHQuZ3ByKCk7Ci0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKLSAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKLSAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKLSAgICBHUFJSZWcgc2NyYXRjaDNHUFIg
PSBzY3JhdGNoMy5ncHIoKTsKLSAgICBHUFJSZWcgc2NyYXRjaDRHUFIgPSBzY3JhdGNoNC5ncHIo
KTsKLSAgICBHUFJSZWcgc2NyYXRjaDVHUFIgPSBzY3JhdGNoNS5ncHIoKTsKLQotICAgIHNwZWN1
bGF0ZVN0cmluZyhtX2dyYXBoLmNoaWxkKG5vZGUsIDEpLCBzdWJzY3JpcHRHUFIpOwotCi0gICAg
SnVtcExpc3Qgc2xvd0Nhc2VzOwotCi0gICAgbG9hZFB0cihBZGRyZXNzKHN1YnNjcmlwdEdQUiwg
SlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2g1R1BSKTsKLSAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaElmUm9wZVN0cmluZ0ltcGwoc2NyYXRjaDVHUFIpKTsKLSAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBBZGRyZXNzKHNjcmF0Y2g1R1BSLCBTdHJpbmdJ
bXBsOjpmbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJc0F0b20o
KSkpKTsKLQotICAgIHNsb3dDYXNlcy5hcHBlbmQoc3RvcmVNZWdhbW9ycGhpY1Byb3BlcnR5KHZt
KCksIGJhc2VHUFIsIHNjcmF0Y2g1R1BSLCBudWxscHRyLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigp
LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNjcmF0Y2gzR1BSLCBzY3JhdGNoNEdQUikpOwot
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsTWVnYW1vcnBoaWNT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE1lZ2Ftb3JwaGljU2xvcHB5LCBOb1Jlc3VsdCwgTGlu
a2FibGVDb25zdGFudDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgYmFzZUdQUiwgc3Vic2Ny
aXB0R1BSLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW1QdHIo
bnVsbHB0cikpKTsKLSAgICBub1Jlc3VsdChub2RlKTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhOb2RlKiBub2RlKQogewogICAgIGlmICht
X2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZS5jcHAKaW5kZXggYmM2MDFjODhjMWJlLi44MzgyNWU1MGU5ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UuY3BwCkBAIC0yMzQsOCArMjM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHN3aXRjaCAobV9ub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxB
bGlhczoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxNZWdhbW9ycGhpYzogeworICAgICAgICAg
ICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChtX25vZGUt
PmFycmF5TW9kZSgpLm1vZGVGb3JQdXQoKS50eXBlKCkpIHsKICAgICAgICAgICAgICAgICBjYXNl
IEFycmF5OjpHZW5lcmljOgogICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkJpZ0ludDY0QXJy
YXk6CkBAIC0yOTksOCArMjk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgUHV0QnlJ
ZDoKICAgICAgICAgICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICAgICAgY2FzZSBQdXRC
eUlkRGlyZWN0OgotICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAgICAgICAgICBj
YXNlIFB1dEJ5SWRNZWdhbW9ycGhpYzogeworICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6
IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCBl
MjFhZDVhZjA0YTAuLjBjYmI5NWI0YjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yNzgsNyArMjc4
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAg
ICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgotICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxNZWdhbW9ycGhpYzoKICAgICAg
ICAgICAgICAgICBjYXNlIEVudW1lcmF0b3JQdXRCeVZhbDoKICAgICAgICAgICAgICAgICBjYXNl
IEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0
aEFzSW50NTI6CkBAIC0zNjMsNyArMzYyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBj
YXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgotICAgICAgICAgICAgICAgIGNhc2UgUHV0
QnlWYWxNZWdhbW9ycGhpYzoKICAgICAgICAgICAgICAgICBjYXNlIEVudW1lcmF0b3JQdXRCeVZh
bDoKICAgICAgICAgICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgICAg
IGNhc2UgR2V0VHlwZWRBcnJheUxlbmd0aEFzSW50NTI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggODk0NDZiYmY2ZDIzLi5hYzZhZDFjOGRj
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTMzOSw3ICszMzksNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgotICAgIGNhc2UgUHV0QnlJZE1lZ2Ftb3JwaGljOgogICAgIGNh
c2UgUHV0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICBjYXNlIFB1
dFNldHRlckJ5SWQ6CkBAIC00MTgsNyArNDE3LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzTWVnYW1vcnBo
aWM6CiAgICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6Ci0gICAgY2Fz
ZSBQdXRCeVZhbE1lZ2Ftb3JwaGljOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2Fz
ZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMWY4YWRhNjBkZjFk
Li5jNzUwZjQ3MzNkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTEwMDcsOSArMTAwNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5SWQoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFB1dEJ5SWRNZWdhbW9ycGhpYzoKLSAgICAgICAgICAgIGNv
bXBpbGVQdXRCeUlkTWVnYW1vcnBoaWMoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA5MCw5ICsxMDg3LDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbCgp
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUHV0QnlWYWxNZWdhbW9ycGhpYzoK
LSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbE1lZ2Ftb3JwaGljKCk7Ci0gICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGls
ZVB1dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDY5OSw3MCArNDY5
Myw2IEBAIHByaXZhdGU6CiAgICAgICAgIHZtQ2FsbChWb2lkLCBtX25vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbFdpdGhUaGlzLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
YmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KLQotICAgIHZvaWQgY29t
cGlsZVB1dEJ5VmFsTWVnYW1vcnBoaWMoKQotICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fZ3JhcGguY2hpbGQobV9ub2RlLCAw
KSk7Ci0gICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dTdHJpbmcobV9ncmFwaC5jaGlsZCht
X25vZGUsIDEpKTsKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLmNo
aWxkKG1fbm9kZSwgMikpOwotCi0gICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVS
ZWdpc3RlcihjZWxsKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHN1
YnNjcmlwdCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7
Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldEJ1aWxk
ZXI6Om1hY3JvQ2xvYmJlcmVkR1BScygpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gNTsKLQotICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBh
dGNocG9pbnQpOwotCi0gICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAg
ICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
OwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fbm9kZS0+ZWNtYU1vZGUoKTsKLSAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0KLSAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3JpZ2luKTsKLQot
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRp
b24gY2FsbHMuCi0gICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0
aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVt
cHMoaml0KTsKLQotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZXhpdCBmb3IgY2FsbCBJQydz
IGNyZWF0ZWQgYnkgdGhlIElDIGZvciBnZXR0ZXJzLiBXZSBkb24ndCBoYXZlCi0gICAgICAgICAg
ICAvLyB0byBkbyBhbnl0aGluZyB3ZWlyZCBvdGhlciB0aGFuIGNhbGwgdGhpcywgc2luY2UgaXQg
d2lsbCBhc3NvY2lhdGUgdGhlIGV4aXQgd2l0aAotICAgICAgICAgICAgLy8gdGhlIGNhbGxzaXRl
IGluZGV4LgotICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlv
bkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwotCi0gICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRH
UFIgPSBwYXJhbXNbMV0uZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSBwYXJh
bXNbMl0uZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gcGFyYW1zLmdwU2Ny
YXRjaCgxKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoM0dQUiA9IHBhcmFtcy5ncFNjcmF0
Y2goMik7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDRHUFIgPSBwYXJhbXMuZ3BTY3JhdGNo
KDMpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2g1R1BSID0gcGFyYW1zLmdwU2NyYXRjaCg0
KTsKLQotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0KLSAg
ICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzdWJzY3JpcHRHUFIs
IEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoNUdQUik7Ci0gICAgICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0Y2g1R1BSKSk7
Ci0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoQ0NhbGxIZWxw
ZXJzOjpaZXJvLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDVHUFIsIFN0cmluZ0ltcGw6
OmZsYWdzT2Zmc2V0KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpm
bGFnSXNBdG9tKCkpKSk7Ci0KLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LnN0b3Jl
TWVnYW1vcnBoaWNQcm9wZXJ0eShzdGF0ZS0+dm0oKSwgYmFzZUdQUiwgc2NyYXRjaDVHUFIsIG51
bGxwdHIsIHZhbHVlR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNjcmF0Y2gzR1BSLCBz
Y3JhdGNoNEdQUikpOwotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBkb25lRm9yU2xv
dyA9IGppdC5sYWJlbCgpOwotCi0gICAgICAgICAgICBwYXJhbXMuYWRkTGF0ZVBhdGgoWz1dKEND
YWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5s
aW5rKCZqaXQpOwotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZVNl
bWFudGljT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBlY21h
TW9kZS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxNZWdhbW9ycGhpY1N0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsTWVnYW1vcnBoaWNTbG9wcHksIEludmFsaWRHUFJSZWcsCi0gICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBi
YXNlR1BSLCBzdWJzY3JpcHRHUFIsIHZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSkuY2FsbCgp
OwotICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmVGb3JTbG93LCAmaml0KTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlUHV0UHJpdmF0ZU5hbWVCeUlkKCkKICAgICB7CkBAIC00NzczLDcgKzQ3MDMsOCBAQCBwcml2
YXRlOgogCiAgICAgICAgIC8vIFdlIGVtaXQgcHJvcGVydHkgY2hlY2sgZHVyaW5nIERGRyBnZW5l
cmF0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCiAgICAgICAgIC8vIHRvIGNoZWNrIGl0IGhlcmUuCi0g
ICAgICAgIGNhY2hlZFB1dEJ5SWQobV9ub2RlLCBiYXNlLCB2YWx1ZSwgRUNNQU1vZGU6OnN0cmlj
dCgpLCBtX25vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gQWNjZXNzVHlw
ZTo6RGVmaW5lUHJpdmF0ZU5hbWVCeUlkIDogQWNjZXNzVHlwZTo6U2V0UHJpdmF0ZU5hbWVCeUlk
KTsKKyAgICAgICAgYXV0byBwdXRLaW5kID0gbV9ub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCku
aXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6
OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKKyAgICAgICAgY2FjaGVkUHV0QnlJZChtX25vZGUsIGJh
c2UsIHZhbHVlLCBFQ01BTW9kZTo6c3RyaWN0KCksIHB1dEtpbmQpOwogICAgIH0KIAogICAgIHZv
aWQgY29tcGlsZVB1dFByaXZhdGVOYW1lKCkKQEAgLTQ4MzUsOCArNDc2Niw4IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgIGF1dG8qIHN0dWJJbmZvID0gc3RhdGUtPmFkZFN0cnVjdHVyZVN0dWJJ
bmZvKCk7CiAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQdXRCeVZhbEdlbmVy
YXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHN0dWJJbmZv
LCBKSVRUeXBlOjpGVExKSVQsIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgcHJp
dmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpID8gQWNjZXNzVHlwZTo6RGVmaW5lUHJpdmF0ZU5h
bWVCeVZhbCA6IEFjY2Vzc1R5cGU6OlNldFByaXZhdGVOYW1lQnlWYWwsCi0gICAgICAgICAgICAg
ICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBK
U1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgSW52YWxpZEdQ
UlJlZywgc3R1YkluZm9HUFIsIEVDTUFNb2RlOjpzbG9wcHkoKSk7CisgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBzdHViSW5mbywgSklUVHlwZTo6RlRMSklULCBub2RlU2VtYW50aWNP
cmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVOYW1lLAorICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIElu
dmFsaWRHUFJSZWcsIHN0dWJJbmZvR1BSLCBQdXRLaW5kOjpEaXJlY3QsIEVDTUFNb2RlOjpzbG9w
cHkoKSwgcHJpdmF0ZUZpZWxkUHV0S2luZCk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1
YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAKQEAgLTUxNDQsNyArNTA3NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBjYWNoZWRQdXRCeUlk
KE5vZGUqIG5vZGUsIExWYWx1ZSBiYXNlLCBMVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2Rl
LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUpCisgICAgdm9pZCBjYWNoZWRQdXRCeUlkKE5vZGUqIG5v
ZGUsIExWYWx1ZSBiYXNlLCBMVmFsdWUgdmFsdWUsIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5k
IHB1dEtpbmQpCiAgICAgewogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCk7CiAgICAgICAgIEFTU0VSVChpZGVudGlmaWVy
KTsKQEAgLTUxOTMsNyArNTEyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKSwgc3R1YkluZm8sIEpJVFR5cGU6OkZUTEpJVCwgbm9kZVNlbWFudGljT3Jp
Z2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwK
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgc3R1Yklu
Zm9HUFIsIEdQUkluZm86OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAg
ICAgICAgICAgICAgICAgICBhY2Nlc3NUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgcHV0S2lu
ZCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0LCBz
Y3JhdGNoR1BSLCBzY3JhdGNoMkdQUik7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC01MjQyLDY3ICs1MTczLDEwIEBAIHByaXZhdGU6
CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93
Q2VsbChub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUo
bm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBhdXRvIGFjY2Vzc1R5cGUgPSBub2RlLT5vcCgpID09
IFB1dEJ5SWREaXJlY3QgPyAobm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gQWNjZXNzVHlw
ZTo6UHV0QnlJZERpcmVjdFN0cmljdCA6IEFjY2Vzc1R5cGU6OlB1dEJ5SWREaXJlY3RTbG9wcHkp
IDogKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IEFjY2Vzc1R5cGU6OlB1dEJ5SWRTdHJp
Y3QgOiBBY2Nlc3NUeXBlOjpQdXRCeUlkU2xvcHB5KTsKLSAgICAgICAgY2FjaGVkUHV0QnlJZChu
b2RlLCBiYXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgYWNjZXNzVHlwZSk7CisgICAgICAg
IGF1dG8gcHV0S2luZCA9IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IFB1dEtpbmQ6OkRp
cmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdDsKKyAgICAgICAgY2FjaGVkUHV0QnlJZChub2RlLCBi
YXNlLCB2YWx1ZSwgbm9kZS0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CiAgICAgfQotCi0gICAgdm9p
ZCBjb21waWxlUHV0QnlJZE1lZ2Ftb3JwaGljKCkKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLQot
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZv
aWQpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7Ci0gICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7Ci0gICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldEJ1aWxkZXI6Om1hY3JvQ2xvYmJl
cmVkR1BScygpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
NDsKLQotICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwotCi0g
ICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkudWlkKCk7Ci0gICAgICAg
IENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWM7
Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fbm9kZS0+ZWNt
YU1vZGUoKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
Ci0KLSAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRD
b2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFu
dGljT3JpZ2luKTsKLQotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFy
Z2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCi0gICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpK
dW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRp
b24ocGFyYW1zKS0+anVtcHMoaml0KTsKLQotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZXhp
dCBmb3IgY2FsbCBJQydzIGNyZWF0ZWQgYnkgdGhlIElDIGZvciBnZXR0ZXJzLiBXZSBkb24ndCBo
YXZlCi0gICAgICAgICAgICAvLyB0byBkbyBhbnl0aGluZyB3ZWlyZCBvdGhlciB0aGFuIGNhbGwg
dGhpcywgc2luY2UgaXQgd2lsbCBhc3NvY2lhdGUgdGhlIGV4aXQgd2l0aAotICAgICAgICAgICAg
Ly8gdGhlIGNhbGxzaXRlIGluZGV4LgotICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hl
ZHVsZUV4aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwotCi0gICAg
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1swXS5ncHIoKTsKLSAgICAgICAgICAgIEdQ
UlJlZyB2YWx1ZUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMUdQUiA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2gz
R1BSID0gcGFyYW1zLmdwU2NyYXRjaCgyKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoNEdQ
UiA9IHBhcmFtcy5ncFNjcmF0Y2goMyk7Ci0KLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3Qgc2xvd0Nhc2VzID0gaml0LnN0b3JlTWVnYW1vcnBoaWNQcm9wZXJ0eShzdGF0ZS0+dm0o
KSwgYmFzZUdQUiwgSW52YWxpZEdQUlJlZywgdWlkLCB2YWx1ZUdQUiwgc2NyYXRjaDFHUFIsIHNj
cmF0Y2gyR1BSLCBzY3JhdGNoM0dQUiwgc2NyYXRjaDRHUFIpOwotICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBkb25lRm9yU2xvdyA9IGppdC5sYWJlbCgpOwotCi0gICAgICAgICAgICBw
YXJhbXMuYWRkTGF0ZVBhdGgoWz1dKENDYWxsSGVscGVycyYgaml0KSB7Ci0gICAgICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGppdCwgbm9kZVNlbWFudGljT3JpZ2luLAotICAgICAgICAgICAgICAgICAg
ICBleGNlcHRpb25zLmdldCgpLCBlY21hTW9kZS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlJ
ZE1lZ2Ftb3JwaGljU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZE1lZ2Ftb3JwaGljU2xvcHB5LCBJ
bnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2xvYmFsT2JqZWN0KSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCB2YWx1ZUdQUiwgYmFzZUdQUiwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGlkZW50aWZpZXIucmF3Qml0cygpKSkuY2FsbCgpOwotICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmVGb3JTbG93LCAmaml0KTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLSAgICB9Ci0KKyAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRCdXR0ZXJm
bHkoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseSA9IG1fb3V0LmxvYWRQdHIobG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpOwpAQCAt
NjMzNywxMiArNjIxMSwxMiBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxTdHJpbmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdENlbGxTdHJpbmdTbG9wcHk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0
cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxT
dHJpbmdTdHJpY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxT
dHJpbmdTbG9wcHk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdDsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb24s
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwoY2hpbGQxKSwgbG93U3RyaW5nKGNo
aWxkMiksIGxvd0pTVmFsdWUoY2hpbGQzKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC02MzUzLDEyICs2MjI3LDEyIEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFNsb3BweTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3lt
Ym9sTm9uU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN5bWJvbFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dEJ5
VmFsQ2VsbFN5bWJvbFNsb3BweTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG9w
ZXJhdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbChjaGlsZDEpLCBsb3dT
eW1ib2woY2hpbGQyKSwgbG93SlNWYWx1ZShjaGlsZDMpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTYzNzAsMTIgKzYyNDQsMTIgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdT
X0VORAogICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdFN0cmljdDsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTbG9wcHk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5v
blN0cmljdDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbFN0cmljdDsKICAgICAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0
QnlWYWxTbG9wcHk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRCeVZhbE5vblN0cmljdDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICB2bUNhbGwoCkBAIC02NDE3LDYgKzYyOTEsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAgICAgICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYzsKICAgICAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbV9ub2RlLT5lY21h
TW9kZSgpOwogICAgICAgICAgICAgYm9vbCBpc0RpcmVjdCA9IG1fbm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdDsKKyAgICAgICAgICAgIFB1dEtpbmQgcHV0S2luZCA9IGlzRGlyZWN0ID8gUHV0
S2luZDo6RGlyZWN0IDogUHV0S2luZDo6Tm90RGlyZWN0OwogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCkBAIC02NDM3LDggKzYzMTIsOCBA
QCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAKICAgICAgICAgICAgICAgICBhdXRvKiBzdHVi
SW5mbyA9IHN0YXRlLT5hZGRTdHJ1Y3R1cmVTdHViSW5mbygpOwogICAgICAgICAgICAgICAgIGF1
dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHN0dWJJbmZvLCBKSVRUeXBlOjpGVExKSVQs
IG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgaXNEaXJlY3QgPyAoZWNtYU1vZGUu
aXNTdHJpY3QoKSA/IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogQWNjZXNzVHlw
ZTo6UHV0QnlWYWxEaXJlY3RTbG9wcHkpIDogKGVjbWFNb2RlLmlzU3RyaWN0KCkgPyBBY2Nlc3NU
eXBlOjpQdXRCeVZhbFN0cmljdCA6IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU2xvcHB5KSwKLSAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgSW52YWxpZEdQUlJlZywgc3R1YkluZm9HUFIsIGVjbWFNb2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLCBzdHViSW5mbywgSklUVHlwZTo6RlRMSklULCBub2RlU2Vt
YW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLAorICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIp
LCBJbnZhbGlkR1BSUmVnLCBzdHViSW5mb0dQUiwgcHV0S2luZCwgZWNtYU1vZGUsIFByaXZhdGVG
aWVsZFB1dEtpbmQ6Om5vbmUoKSk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJ
bmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSBwcm9wZXJ0eUlzU3RyaW5nOwogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gcHJvcGVydHlJc0lu
dDMyOwpAQCAtNjQ1NCw3ICs2MzI5LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4g
PSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNs
b3dQYXRoQ2FsbDsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBvcGVyYXRpb24gPSBpc0RpcmVj
dCA/IChlY21hTW9kZS5pc1N0cmljdCgpID8gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RP
cHRpbWl6ZSA6IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU2xvcHB5T3B0aW1pemUpIDogKGVjbWFN
b2RlLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplIDogb3BlcmF0
aW9uUHV0QnlWYWxTbG9wcHlPcHRpbWl6ZSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gb3Bl
cmF0aW9uID0gaXNEaXJlY3QgPyAoZWNtYU1vZGUuaXNTdHJpY3QoKSA/IG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsU3RyaWN0T3B0aW1pemUgOiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE5vblN0cmlj
dE9wdGltaXplKSA6IChlY21hTW9kZS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJp
Y3RPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemUpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlRGF0YUlDSW5GVEwoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uOwpAQCAt
NjUxOCw3ICs2MzkzLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
ICAgIGNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRzKAogICAgICAgICAgICAgICAgICAgICBt
X25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKQogICAgICAgICAgICAgICAgICAgICAgICAgPyAo
bV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RC
ZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0
QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU2xv
cHB5IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1Nsb3BweSksCisgICAgICAg
ICAgICAgICAgICAgICAgICA6IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCiAgICAgICAgICAgICAgICAgICAg
IGJhc2UsIHN0b3JhZ2UsIGluZGV4LCB2YWx1ZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTY0KHZhbHVlLCBlbGVtZW50UG9pbnRl
cik7CkBAIC02NTQ0LDcgKzY0MTksNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAg
ICAgICAgICAgICAgY29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMoCiAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICAgICAgICAg
ICAgICA/IChtX25vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3Vi
bGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91Ymxl
QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDog
KG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFs
RGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTbG9wcHkgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJl
eW9uZEFycmF5Qm91bmRzU2xvcHB5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDogKG1fbm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9u
ZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3RvcmFn
ZSwgaW5kZXgsIHZhbHVlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIG1fb3V0LnN0b3JlRG91YmxlKHZhbHVlLCBlbGVtZW50UG9pbnRlcik7CkBAIC02
NTg0LDcgKzY0NTksNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAKICAgICAgICAgICAg
IGF1dG8gc2xvd1BhdGhGdW5jdGlvbiA9IG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAg
ICAgICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCi0gICAgICAgICAgICAgICAgOiAobV9ub2RlLT5v
cCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJh
eUJvdW5kc1Nsb3BweSA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTbG9wcHkp
OworICAgICAgICAgICAgICAgIDogKG1fbm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KTsKICAgICAgICAgICAgIGlmICgh
YXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShP
dXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBudWxscHRyLCBpc091dE9mQm91bmRzKTsKICAgICAgICAg
ICAgICAgICBpc091dE9mQm91bmRzID0gbV9vdXQuYm9vbGVhbkZhbHNlOwpAQCAtMTUxMTgsNiAr
MTQ5OTMsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgIFN0YXRlKiBzdGF0
ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9
IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1f
bm9kZS0+ZWNtYU1vZGUoKTsKKyAgICAgICAgUHV0S2luZCBwdXRLaW5kID0gUHV0S2luZDo6Tm90
RGlyZWN0OwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
IApAQCAtMTUxMzgsOSArMTUwMTQsOCBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAKICAg
ICAgICAgICAgIGF1dG8qIHN0dWJJbmZvID0gc3RhdGUtPmFkZFN0cnVjdHVyZVN0dWJJbmZvKCk7
CiAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQdXRCeVZhbEdlbmVyYXRvcj46
OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHN0dWJJbmZvLCBKSVRU
eXBlOjpGVExKSVQsIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgZWNtYU1vZGUu
aXNTdHJpY3QoKSA/IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU3RyaWN0IDogQWNjZXNzVHlwZTo6UHV0
QnlWYWxTbG9wcHksCi0gICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgSW52YWxpZEdQUlJlZywgc3R1YkluZm9HUFIsIGVjbWFNb2RlKTsK
LSAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+aXNFbnVtZXJhdG9yID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHN0dWJJbmZvLCBKSVRUeXBlOjpGVExK
SVQsIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6UHV0QnlW
YWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgSW52YWxpZEdQUlJlZywgc3R1YkluZm9HUFIsIHB1dEtpbmQsIGVjbWFNb2RlLCBQ
cml2YXRlRmllbGRQdXRLaW5kOjpub25lKCkpOwogCiAgICAgICAgICAgICBnZW5lcmF0b3ItPmdl
bmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9u
ZSA9IGppdC5sYWJlbCgpOwpAQCAtMTUxNTIsNyArMTUwMjcsNyBAQCBJR05PUkVfQ0xBTkdfV0FS
TklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCku
bGluaygmaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRo
QmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
c2xvd1BhdGhDYWxsOwotICAgICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uID0gZWNtYU1vZGUu
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUgOiBvcGVyYXRpb25Q
dXRCeVZhbFNsb3BweU9wdGltaXplOworICAgICAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uID0g
ZWNtYU1vZGUuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUgOiBv
cGVyYXRpb25QdXRCeVZhbE5vblN0cmljdE9wdGltaXplOwogICAgICAgICAgICAgICAgIGlmIChP
cHRpb25zOjp1c2VEYXRhSUNJbkZUTCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBzdHVi
SW5mb0dQUik7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c3R1YkluZm8oKS0+bV9z
bG93T3BlcmF0aW9uID0gb3BlcmF0aW9uOwpAQCAtMTY5NTYsNyArMTY4MzEsNyBAQCBJR05PUkVf
Q0xBTkdfV0FSTklOR1NfRU5ECiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoVm9pZCwg
bV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1ZhclNsb3BweSwKKyAgICAgICAgc2V0SlNWYWx1ZSh2
bUNhbGwoVm9pZCwgbV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRE
eW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwKICAgICAg
ICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSksIG1fb3V0LmNvbnN0SW50UHRyKHVpZCks
IG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZXRQdXRJbmZvKCkpKSk7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggNDM4MDcxN2I3ZmEzLi4xNzczMGMxMjFmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTUzLDEyICsxNTMsMTIg
QEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
SlNTY29wZSogY2FsbGVyU2NvcGVDaGFpbiwKICAgICBpZiAoIWV2YWwpIHsKICAgICAgICAgaWYg
KCFlY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgICAgICBpZiAocHJvZ3JhbVNvdXJjZS5p
czhCaXQoKSkgewotICAgICAgICAgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNl
cihnbG9iYWxPYmplY3QsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczgoKSwgcHJvZ3JhbVNvdXJj
ZS5sZW5ndGgoKSwgU2xvcHB5SlNPTiwgY2FsbGVyQmFzZWxpbmVDb2RlQmxvY2spOworICAgICAg
ICAgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihnbG9iYWxPYmplY3QsIHBy
b2dyYW1Tb3VyY2UuY2hhcmFjdGVyczgoKSwgcHJvZ3JhbVNvdXJjZS5sZW5ndGgoKSwgTm9uU3Ry
aWN0SlNPTiwgY2FsbGVyQmFzZWxpbmVDb2RlQmxvY2spOwogICAgICAgICAgICAgICAgIGlmIChK
U1ZhbHVlIHBhcnNlZE9iamVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSkKICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwYXJzZWRPYmplY3QpOwog
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIExpdGVyYWxQYXJzZXI8VUNo
YXI+IHByZXBhcnNlcihnbG9iYWxPYmplY3QsIHByb2dyYW1Tb3VyY2UuY2hhcmFjdGVyczE2KCks
IHByb2dyYW1Tb3VyY2UubGVuZ3RoKCksIFNsb3BweUpTT04sIGNhbGxlckJhc2VsaW5lQ29kZUJs
b2NrKTsKKyAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoZ2xv
YmFsT2JqZWN0LCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnMxNigpLCBwcm9ncmFtU291cmNlLmxl
bmd0aCgpLCBOb25TdHJpY3RKU09OLCBjYWxsZXJCYXNlbGluZUNvZGVCbG9jayk7CiAgICAgICAg
ICAgICAgICAgaWYgKEpTVmFsdWUgcGFyc2VkT2JqZWN0ID0gcHJlcGFyc2VyLnRyeUxpdGVyYWxQ
YXJzZSgpKQogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBh
cnNlZE9iamVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcAppbmRleCA1ZGU1ZjFmNmM4MzIuLjczZmJjZGU2NGNmNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtNTMyLDExMSArNTMyLDYg
QEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlzdCBBc3NlbWJseUhlbHBlcnM6OmxvYWRNZWdhbW9y
cGhpY1Byb3BlcnR5KFZNJiB2bSwgR1BSUmUKIAogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9Ci0K
LUFzc2VtYmx5SGVscGVyczo6SnVtcExpc3QgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZU1lZ2Ftb3Jw
aGljUHJvcGVydHkoVk0mIHZtLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHVpZEdQUiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCwgR1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgc2NyYXRjaDFHUFIsIEdQ
UlJlZyBzY3JhdGNoMkdQUiwgR1BSUmVnIHNjcmF0Y2gzR1BSLCBHUFJSZWcgc2NyYXRjaDRHUFIp
Ci17Ci0gICAgLy8gdWlkR1BSIGNhbiBiZSBJbnZhbGlkR1BSUmVnIGlmIHVpZCBpcyBub24tbnVs
bHB0ci4KLQotICAgIGlmICghdWlkKQotICAgICAgICBBU1NFUlQodWlkR1BSICE9IEludmFsaWRH
UFJSZWcpOwotCi0gICAgSnVtcExpc3QgcHJpbWFyeUZhaWw7Ci0gICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwotCi0gICAgbG9hZDMyKEFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgc2NyYXRjaDFHUFIpOwotI2lmIENQVShBUk02NCkKLSAgICBleHRyYWN0VW5zaWdu
ZWRCaXRmaWVsZDMyKHNjcmF0Y2gxR1BSLCBUcnVzdGVkSW1tMzIoTWVnYW1vcnBoaWNDYWNoZTo6
c3RydWN0dXJlSURIYXNoU2hpZnQxKSwgVHJ1c3RlZEltbTMyKDMyIC0gTWVnYW1vcnBoaWNDYWNo
ZTo6c3RydWN0dXJlSURIYXNoU2hpZnQxKSwgc2NyYXRjaDJHUFIpOwotICAgIHhvclVuc2lnbmVk
UmlnaHRTaGlmdDMyKHNjcmF0Y2gyR1BSLCBzY3JhdGNoMUdQUiwgVHJ1c3RlZEltbTMyKE1lZ2Ft
b3JwaGljQ2FjaGU6OnN0cnVjdHVyZUlESGFzaFNoaWZ0NCksIHNjcmF0Y2gzR1BSKTsKLSNlbHNl
Ci0gICAgdXJzaGlmdDMyKHNjcmF0Y2gxR1BSLCBUcnVzdGVkSW1tMzIoTWVnYW1vcnBoaWNDYWNo
ZTo6c3RydWN0dXJlSURIYXNoU2hpZnQxKSwgc2NyYXRjaDJHUFIpOwotICAgIHVyc2hpZnQzMihz
Y3JhdGNoMUdQUiwgVHJ1c3RlZEltbTMyKE1lZ2Ftb3JwaGljQ2FjaGU6OnN0cnVjdHVyZUlESGFz
aFNoaWZ0NCksIHNjcmF0Y2gzR1BSKTsKLSAgICB4b3IzMihzY3JhdGNoMkdQUiwgc2NyYXRjaDNH
UFIpOwotI2VuZGlmCi0KLSAgICBpZiAodWlkKQotICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIo
dWlkLT5oYXNoKCkpLCBzY3JhdGNoM0dQUik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIE5vdGUg
dGhhdCB3ZSBkb24ndCB0ZXN0IGlmIHRoZSBoYXNoIGlzIHplcm8gaGVyZS4gQXRvbVN0cmluZ0lt
cGwncyBjYW4ndCBoYXZlIGEgemVybwotICAgICAgICAvLyBoYXNoLCBob3dldmVyLCBhIFN5bWJv
bEltcGwgbWF5LiBCdXQsIGJlY2F1c2UgdGhpcyBpcyBhIGNhY2hlLCB3ZSBkb24ndCBjYXJlLiBX
ZSBvbmx5Ci0gICAgICAgIC8vIGV2ZXIgbG9hZCB0aGUgcmVzdWx0IGZyb20gdGhlIGNhY2hlIGlm
IHRoZSBjYWNoZSBlbnRyeSBtYXRjaGVzIHdoYXQgd2UgYXJlIHF1ZXJ5aW5nIGZvci4KLSAgICAg
ICAgLy8gU28gd2UgZWl0aGVyIGdldCBzdXBlciBsdWNreSBhbmQgdXNlIHplcm8gZm9yIHRoZSBo
YXNoIGFuZCBzb21laG93IGNvbGxpZGUgd2l0aCB0aGUgZW50aXR5Ci0gICAgICAgIC8vIHdlJ3Jl
IGxvb2tpbmcgZm9yLCBvciB3ZSByZWFsaXplIHdlJ3JlIGNvbXBhcmluZyBhZ2FpbnN0IGFub3Ro
ZXIgZW50aXR5LCBhbmQgZ28gdG8gdGhlCi0gICAgICAgIC8vIHNsb3cgcGF0aCBhbnl3YXlzLgot
ICAgICAgICBsb2FkMzIoQWRkcmVzcyh1aWRHUFIsIFVuaXF1ZWRTdHJpbmdJbXBsOjpmbGFnc09m
ZnNldCgpKSwgc2NyYXRjaDJHUFIpOwotICAgICAgICB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyKFN0
cmluZ0ltcGw6OnNfZmxhZ0NvdW50KSwgc2NyYXRjaDJHUFIpOwotICAgICAgICBhZGQzMihzY3Jh
dGNoMkdQUiwgc2NyYXRjaDNHUFIpOwotICAgIH0KLQotICAgIGFuZDMyKFRydXN0ZWRJbW0zMihN
ZWdhbW9ycGhpY0NhY2hlOjpzdG9yZUNhY2hlUHJpbWFyeU1hc2spLCBzY3JhdGNoM0dQUik7Ci0g
ICAgaWYgKGhhc09uZUJpdFNldChzaXplb2YoTWVnYW1vcnBoaWNDYWNoZTo6U3RvcmVFbnRyeSkp
KSAvLyBpcyBhIHBvd2VyIG9mIDIKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGdldExT
QlNldChzaXplb2YoTWVnYW1vcnBoaWNDYWNoZTo6U3RvcmVFbnRyeSkpKSwgc2NyYXRjaDNHUFIp
OwotICAgIGVsc2UKLSAgICAgICAgbXVsMzIoVHJ1c3RlZEltbTMyKHNpemVvZihNZWdhbW9ycGhp
Y0NhY2hlOjpTdG9yZUVudHJ5KSksIHNjcmF0Y2gzR1BSLCBzY3JhdGNoM0dQUik7Ci0gICAgYXV0
byYgY2FjaGUgPSB2bS5lbnN1cmVNZWdhbW9ycGhpY0NhY2hlKCk7Ci0gICAgbW92ZShUcnVzdGVk
SW1tUHRyKCZjYWNoZSksIHNjcmF0Y2gyR1BSKTsKLSAgICBhZGRQdHIoc2NyYXRjaDJHUFIsIHNj
cmF0Y2gzR1BSKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihNZWdhbW9ycGhpY0NhY2hlOjpv
ZmZzZXRPZlN0b3JlQ2FjaGVQcmltYXJ5RW50cmllcygpKSwgc2NyYXRjaDNHUFIpOwotCi0gICAg
bG9hZDE2KEFkZHJlc3Moc2NyYXRjaDJHUFIsIE1lZ2Ftb3JwaGljQ2FjaGU6Om9mZnNldE9mRXBv
Y2goKSksIHNjcmF0Y2g0R1BSKTsKLQotICAgIGxvYWQxNihBZGRyZXNzKHNjcmF0Y2gzR1BSLCBN
ZWdhbW9ycGhpY0NhY2hlOjpTdG9yZUVudHJ5OjpvZmZzZXRPZkVwb2NoKCkpLCBzY3JhdGNoMkdQ
Uik7Ci0gICAgcHJpbWFyeUZhaWwuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBzY3JhdGNoNEdQ
Uiwgc2NyYXRjaDJHUFIpKTsKLSAgICBwcmltYXJ5RmFpbC5hcHBlbmQoYnJhbmNoMzIoTm90RXF1
YWwsIHNjcmF0Y2gxR1BSLCBBZGRyZXNzKHNjcmF0Y2gzR1BSLCBNZWdhbW9ycGhpY0NhY2hlOjpT
dG9yZUVudHJ5OjpvZmZzZXRPZk9sZFN0cnVjdHVyZUlEKCkpKSk7Ci0gICAgaWYgKHVpZCkKLSAg
ICAgICAgcHJpbWFyeUZhaWwuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoM0dQUiwgTWVnYW1vcnBoaWNDYWNoZTo6U3RvcmVFbnRyeTo6b2Zmc2V0T2ZVaWQoKSksIFRy
dXN0ZWRJbW1QdHIodWlkKSkpOwotICAgIGVsc2UKLSAgICAgICAgcHJpbWFyeUZhaWwuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoM0dQUiwgTWVnYW1vcnBoaWNDYWNo
ZTo6U3RvcmVFbnRyeTo6b2Zmc2V0T2ZVaWQoKSksIHVpZEdQUikpOwotCi0gICAgLy8gQ2FjaGUg
aGl0IQotICAgIExhYmVsIGNhY2hlSGl0ID0gbGFiZWwoKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhz
Y3JhdGNoM0dQUiwgTWVnYW1vcnBoaWNDYWNoZTo6U3RvcmVFbnRyeTo6b2Zmc2V0T2ZOZXdTdHJ1
Y3R1cmVJRCgpKSwgc2NyYXRjaDRHUFIpOwotICAgIGxvYWQxNihBZGRyZXNzKHNjcmF0Y2gzR1BS
LCBNZWdhbW9ycGhpY0NhY2hlOjpTdG9yZUVudHJ5OjpvZmZzZXRPZk9mZnNldCgpKSwgc2NyYXRj
aDJHUFIpOwotICAgIGF1dG8gcmVwbGFjZUNhc2UgPSBicmFuY2gzMihFcXVhbCwgc2NyYXRjaDRH
UFIsIHNjcmF0Y2gxR1BSKTsKLQotICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBub24tYWxsb2NhdGlu
ZyB0cmFuc2l0aW9uLiBUaGlzIG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRvIG51a2UgU3RydWN0dXJl
KiBmb3IgdHJhbnNpdGlvbiBoZXJlLgotICAgIHN0b3JlMzIoc2NyYXRjaDRHUFIsIEFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Ci0gICAgYXV0byBzdG9yZSA9
IGp1bXAoKTsKLQotICAgIHJlcGxhY2VDYXNlLmxpbmsodGhpcyk7Ci0gICAgZW1pdE5vbk51bGxE
ZWNvZGVaZXJvRXh0ZW5kZWRTdHJ1Y3R1cmVJRChzY3JhdGNoMUdQUiwgc2NyYXRjaDRHUFIpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblplcm8sIEFkZHJlc3Moc2NyYXRj
aDRHUFIsIFN0cnVjdHVyZTo6Yml0RmllbGRPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJ1Y3R1
cmU6OnNfaXNXYXRjaGluZ1JlcGxhY2VtZW50Qml0cykpKTsKLQotICAgIHN0b3JlLmxpbmsodGhp
cyk7Ci0gICAgc3RvcmVQcm9wZXJ0eShKU1ZhbHVlUmVncyB7IHZhbHVlR1BSIH0sIGJhc2VHUFIs
IHNjcmF0Y2gyR1BSLCBzY3JhdGNoM0dQUik7Ci0gICAgYXV0byBkb25lID0ganVtcCgpOwotCi0g
ICAgLy8gU2Vjb25kYXJ5IGNhY2hlIGxvb2t1cAotICAgIHByaW1hcnlGYWlsLmxpbmsodGhpcyk7
Ci0gICAgaWYgKHVpZCkKLSAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVp
bnQzMl90PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih1aWQpKSksIHNjcmF0Y2gxR1BSLCBzY3Jh
dGNoMkdQUik7Ci0gICAgZWxzZQotICAgICAgICBhZGQzMih1aWRHUFIsIHNjcmF0Y2gxR1BSLCBz
Y3JhdGNoMkdQUik7Ci0jaWYgQ1BVKEFSTTY0KQotICAgIGFkZFVuc2lnbmVkUmlnaHRTaGlmdDMy
KHNjcmF0Y2gyR1BSLCBzY3JhdGNoMkdQUiwgVHJ1c3RlZEltbTMyKE1lZ2Ftb3JwaGljQ2FjaGU6
OnN0cnVjdHVyZUlESGFzaFNoaWZ0NSksIHNjcmF0Y2gzR1BSKTsKLSNlbHNlCi0gICAgdXJzaGlm
dDMyKHNjcmF0Y2gyR1BSLCBUcnVzdGVkSW1tMzIoTWVnYW1vcnBoaWNDYWNoZTo6c3RydWN0dXJl
SURIYXNoU2hpZnQ1KSwgc2NyYXRjaDNHUFIpOwotICAgIGFkZDMyKHNjcmF0Y2gyR1BSLCBzY3Jh
dGNoM0dQUik7Ci0jZW5kaWYKLSAgICBhbmQzMihUcnVzdGVkSW1tMzIoTWVnYW1vcnBoaWNDYWNo
ZTo6c3RvcmVDYWNoZVNlY29uZGFyeU1hc2spLCBzY3JhdGNoM0dQUik7Ci0gICAgaWYgY29uc3Rl
eHByIChoYXNPbmVCaXRTZXQoc2l6ZW9mKE1lZ2Ftb3JwaGljQ2FjaGU6OlN0b3JlRW50cnkpKSkg
Ly8gaXMgYSBwb3dlciBvZiAyCi0gICAgICAgIGxzaGlmdDMyKFRydXN0ZWRJbW0zMihnZXRMU0JT
ZXQoc2l6ZW9mKE1lZ2Ftb3JwaGljQ2FjaGU6OlN0b3JlRW50cnkpKSksIHNjcmF0Y2gzR1BSKTsK
LSAgICBlbHNlCi0gICAgICAgIG11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoTWVnYW1vcnBoaWND
YWNoZTo6U3RvcmVFbnRyeSkpLCBzY3JhdGNoM0dQUiwgc2NyYXRjaDNHUFIpOwotICAgIGFkZFB0
cihUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx1aW50OF90Kj4oJmNhY2hlKSArIE1lZ2Ftb3Jw
aGljQ2FjaGU6Om9mZnNldE9mU3RvcmVDYWNoZVNlY29uZGFyeUVudHJpZXMoKSksIHNjcmF0Y2gz
R1BSKTsKLQotICAgIGxvYWQxNihBZGRyZXNzKHNjcmF0Y2gzR1BSLCBNZWdhbW9ycGhpY0NhY2hl
OjpTdG9yZUVudHJ5OjpvZmZzZXRPZkVwb2NoKCkpLCBzY3JhdGNoMkdQUik7Ci0gICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaDRHUFIsIHNjcmF0Y2gyR1BSKSk7
Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIEFk
ZHJlc3Moc2NyYXRjaDNHUFIsIE1lZ2Ftb3JwaGljQ2FjaGU6OlN0b3JlRW50cnk6Om9mZnNldE9m
T2xkU3RydWN0dXJlSUQoKSkpKTsKLSAgICBpZiAodWlkKQotICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoM0dQUiwgTWVnYW1vcnBoaWND
YWNoZTo6U3RvcmVFbnRyeTo6b2Zmc2V0T2ZVaWQoKSksIFRydXN0ZWRJbW1QdHIodWlkKSkpOwot
ICAgIGVsc2UKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3Moc2NyYXRjaDNHUFIsIE1lZ2Ftb3JwaGljQ2FjaGU6OlN0b3JlRW50cnk6Om9mZnNldE9m
VWlkKCkpLCB1aWRHUFIpKTsKLSAgICBqdW1wKCkubGlua1RvKGNhY2hlSGl0LCB0aGlzKTsKLQot
ICAgIGRvbmUubGluayh0aGlzKTsKLQotICAgIHJldHVybiBzbG93Q2FzZXM7Ci19CiAjZW5kaWYK
IAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXROb25OdWxsRGVjb2RlWmVyb0V4dGVuZGVkU3Ry
dWN0dXJlSUQoUmVnaXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGM4YTlkMDUxNDg3NS4uZGI1
YzEzZGRkZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKQEAgLTI1Myw3ICsyNTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVByb3BlcnR5KEpT
VmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgb2JqZWN0LCBHUFJSZWcgb2Zmc2V0LCBHUFJSZWcgc2Ny
YXRjaCk7CiAKICAgICBKdW1wTGlzdCBsb2FkTWVnYW1vcnBoaWNQcm9wZXJ0eShWTSYsIEdQUlJl
ZyBiYXNlR1BSLCBHUFJSZWcgdWlkR1BSLCBVbmlxdWVkU3RyaW5nSW1wbCosIEdQUlJlZyByZXN1
bHRHUFIsIEdQUlJlZyBzY3JhdGNoMUdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBHUFJSZWcgc2Ny
YXRjaDNHUFIsIEdQUlJlZyBzY3JhdGNoNEdQUik7Ci0gICAgSnVtcExpc3Qgc3RvcmVNZWdhbW9y
cGhpY1Byb3BlcnR5KFZNJiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyB1aWRHUFIsIFVuaXF1ZWRT
dHJpbmdJbXBsKiwgR1BSUmVnIHZhbHVlR1BSLCBHUFJSZWcgc2NyYXRjaDFHUFIsIEdQUlJlZyBz
Y3JhdGNoMkdQUiwgR1BSUmVnIHNjcmF0Y2gzR1BSLCBHUFJSZWcgc2NyYXRjaDRHUFIpOwogCiAg
ICAgdm9pZCBtb3ZlVmFsdWVSZWdzKEpTVmFsdWVSZWdzIHNyY1JlZ3MsIEpTVmFsdWVSZWdzIGRl
c3RSZWdzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNT
dGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggZTI1N2Vk
MjBlZjk2Li4wM2NlNjM5ZWU1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBA
IC01NywxNSArNTcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uSW5C
eUlkR2VuZXJpYykgXAogICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZE9wdGltaXplKSBcCiAgICAg
bWFjcm8oT3BlcmF0aW9uUHV0QnlJZFN0cmljdCkgXAotICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5
SWRTbG9wcHkpIFwKKyAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCiAgICAg
bWFjcm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCkgXAotICAgIG1hY3JvKE9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTbG9wcHkpIFwKKyAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0KSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKSBc
Ci0gICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFNsb3BweU9wdGltaXplKSBcCisgICAgbWFjcm8o
T3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdFNsb3BweU9wdGltaXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZERpcmVj
dE5vblN0cmljdE9wdGltaXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1
aWxkTGlzdCkgXAotICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRTbG9wcHlCdWlsZExpc3QpIFwK
KyAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKSBcCiAg
ICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKSBc
CiAgICAgbWFjcm8oUHV0QnlBZGRBY2Nlc3NDYXNlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGJjZmZhZmM4
ZTU1OC4uMjU0OTMzOTZkYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcApAQCAtNDAsOCArNDAsOCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yKENvZGVCbG9jayosIENvbXBpbGVUaW1lU3RydWN0dXJlU3R1YkluZm8gc3R1YkluZm8s
IEpJVFR5cGUsIENvZGVPcmlnaW4sIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSkKLSAgICA6IG1fYWNj
ZXNzVHlwZShhY2Nlc3NUeXBlKQorSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I6OkpJVElubGluZUNh
Y2hlR2VuZXJhdG9yKAorICAgIENvZGVCbG9jayosIENvbXBpbGVUaW1lU3RydWN0dXJlU3R1Yklu
Zm8gc3R1YkluZm8sIEpJVFR5cGUsIENvZGVPcmlnaW4sIEFjY2Vzc1R5cGUpCiB7CiAgICAgc3Rk
Ojp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbJl0oU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvKSB7CkBAIC0yMzcsMTEgKzIzNywxMyBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhp
c0dlbmVyYXRvcjo6Z2VuZXJhdGVERkdEYXRhSUNGYXN0UGF0aChERkc6OkpJVENvbXBpbGVyJiBq
aQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29tcGlsZVRpbWVTdHJ1Y3R1cmVTdHViSW5mbyBzdHViSW5mbywgSklU
VHlwZSBqaXRUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNp
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0QnVpbGRlciYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRl
bnRpZmllciwKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVn
IHN0dWJJbmZvR1BSLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSkKLSAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9j
aywgc3R1YkluZm8sIGppdFR5cGUsIGNvZGVPcmlnaW4sIGFjY2Vzc1R5cGUsIGJhc2UsIHZhbHVl
KQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgICAgIDogSklU
QnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIHN0dWJJbmZvLCBqaXRUeXBlLCBjb2RlT3JpZ2luLCBB
Y2Nlc3NUeXBlOjpQdXRCeUlkLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgLCBtX2VjbWFNb2RlKGVj
bWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQogewogICAgIHN0ZDo6dmlzaXQo
WyZdKGF1dG8qIHN0dWJJbmZvKSB7Ci0gICAgICAgIHNldFVwU3R1YkluZm8oKnN0dWJJbmZvLCBh
Y2Nlc3NUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFs
dWUsIHN0dWJJbmZvR1BSLCBzY3JhdGNoLCBlY21hTW9kZSk7CisgICAgICAgIHNldFVwU3R1Yklu
Zm8oKnN0dWJJbmZvLCBBY2Nlc3NUeXBlOjpQdXRCeUlkLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHN0dWJJbmZvR1BSLCBzY3JhdGNoLCBlY21hTW9k
ZSwgcHV0S2luZCk7CiAgICAgfSwgc3R1YkluZm8pOwogfQogCkBAIC0yOTgsMjEgKzMwMCwyMSBA
QCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJz
JiBqaXQsIEdQUlJlZyBzY3JhdGNoR1BSLAogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1
dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogewotICAgIHN3aXRjaCAobV9hY2Nl
c3NUeXBlKSB7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXRCeUlkU3RyaWN0OgotICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwotICAgIGNhc2UgQWNjZXNzVHlw
ZTo6UHV0QnlJZFNsb3BweToKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTbG9wcHlP
cHRpbWl6ZTsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dEJ5SWREaXJlY3RTdHJpY3Q6Ci0gICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Ci0gICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpQdXRCeUlkRGlyZWN0U2xvcHB5OgotICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFNsb3BweU9wdGltaXplOwotICAgIGNhc2UgQWNjZXNzVHlwZTo6RGVm
aW5lUHJpdmF0ZU5hbWVCeUlkOgorICAgIHN3aXRjaCAobV9wdXRLaW5kKSB7CisgICAgY2FzZSBQ
dXRLaW5kOjpOb3REaXJlY3Q6CisgICAgICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpCisg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOworICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplOworICAgIGNhc2UgUHV0
S2luZDo6RGlyZWN0OgorICAgICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKKyAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKKyAgICBj
YXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZToKKyAgICAgICAgQVNTRVJUKG1f
ZWNtYU1vZGUuaXNTdHJpY3QoKSk7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVm
aW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpTZXRQ
cml2YXRlTmFtZUJ5SWQ6CisgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQ6
CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpOwogICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIGJyZWFrOwogICAgIH0KICAgICAvLyBNYWtlIHdpbiBwb3J0IGNvbXBpbGVy
IGhhcHB5CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU4MiwxMyArNTg0
LDEzIEBAIHZvaWQgSklUR2V0QnlWYWxXaXRoVGhpc0dlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1
ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsCiAgICAgICAgIG1fc3R1YkluZm8tPm1fY29k
ZVB0ciA9IG1fc3R1YkluZm8tPnNsb3dQYXRoU3RhcnRMb2NhdGlvbjsKIH0KIAotSklUUHV0QnlW
YWxHZW5lcmF0b3I6OkpJVFB1dEJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBD
b21waWxlVGltZVN0cnVjdHVyZVN0dWJJbmZvIHN0dWJJbmZvLCBKSVRUeXBlIGppdFR5cGUsIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0QnVpbGRlciYgdXNlZFJlZ2lzdGVycywg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgYXJyYXlQcm9maWxlR1BSLCBHUFJSZWcgc3R1YkluZm9HUFIsIEVDTUFNb2RlIGVj
bWFNb2RlKQorSklUUHV0QnlWYWxHZW5lcmF0b3I6OkpJVFB1dEJ5VmFsR2VuZXJhdG9yKENvZGVC
bG9jayogY29kZUJsb2NrLCBDb21waWxlVGltZVN0cnVjdHVyZVN0dWJJbmZvIHN0dWJJbmZvLCBK
SVRUeXBlIGppdFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4LCBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0QnVpbGRl
ciYgdXNlZFJlZ2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgYXJyYXlQcm9maWxlR1BSLCBHUFJSZWcgc3R1Yklu
Zm9HUFIsIFB1dEtpbmQgcHV0S2luZCwgRUNNQU1vZGUgZWNtYU1vZGUsIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkKICAgICA6IEJhc2UoY29kZUJsb2NrLCBzdHViSW5m
bywgaml0VHlwZSwgY29kZU9yaWdpbiwgYWNjZXNzVHlwZSkKICAgICAsIG1fYmFzZShiYXNlKQog
ICAgICwgbV92YWx1ZSh2YWx1ZSkKIHsKICAgICBzdGQ6OnZpc2l0KFsmXShhdXRvKiBzdHViSW5m
bykgewotICAgICAgICBzZXRVcFN0dWJJbmZvKCpzdHViSW5mbywgYWNjZXNzVHlwZSwgY29kZU9y
aWdpbiwgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgcHJvcGVydHksIHZhbHVl
LCBhcnJheVByb2ZpbGVHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZSk7CisgICAgICAgIHNldFVw
U3R1YkluZm8oKnN0dWJJbmZvLCBhY2Nlc3NUeXBlLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGFycmF5UHJvZmlsZUdQUiwg
c3R1YkluZm9HUFIsIHB1dEtpbmQsIGVjbWFNb2RlLCBwcml2YXRlRmllbGRQdXRLaW5kKTsKICAg
ICB9LCBzdHViSW5mbyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA5YjU3MGU3MWM3NzUuLmZkZjAyZjI0YTQ4
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvblZhbGlk
YXRpb24uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTEwMCw3ICsxMDEsNiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogbV9zdHViSW5mbyB7IG51bGxwdHIgfTsKLSAgICBBY2Nl
c3NUeXBlIG1fYWNjZXNzVHlwZTsKIAogcHVibGljOgogICAgIENDYWxsSGVscGVyczo6TGFiZWwg
bV9zdGFydDsKQEAgLTIyNCw3ICsyMjQsNyBAQCBwdWJsaWM6CiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBDb21waWxlVGltZVN0cnVjdHVyZVN0dWJJbmZv
LCBKSVRUeXBlLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldEJ1
aWxkZXImIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCi0gICAgICAgIEpTVmFs
dWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJl
ZyBzY3JhdGNoLCBFQ01BTW9kZSwgQWNjZXNzVHlwZSk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc3R1YkluZm9HUFIsIEdQUlJlZyBzY3JhdGNo
LCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKEND
YWxsSGVscGVycyYsIEdQUlJlZyBzY3JhdGNoR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIpOwogICAg
IHZvaWQgZ2VuZXJhdGVCYXNlbGluZURhdGFJQ0Zhc3RQYXRoKEpJVCYsIHVuc2lnbmVkIHN0dWJJ
bmZvQ29uc3RhbnQsIEdQUlJlZyBzdHViSW5mb0dQUik7CkBAIC0yMzcsMTggKzIzNywyNSBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3R1YkluZm8+CiAgICAgc3RhdGljIHZvaWQg
c2V0VXBTdHViSW5mbyhTdHViSW5mbyYgc3R1YkluZm8sCiAgICAgICAgIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXgsIGNvbnN0IFJlZ2lzdGVyU2V0QnVpbGRlciYgdXNlZFJlZ2lzdGVycywKLSAgICAgICAgSlNW
YWx1ZVJlZ3MgYmFzZVJlZ3MsIEpTVmFsdWVSZWdzIHZhbHVlUmVncywgR1BSUmVnIHN0dWJJbmZv
R1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIEpTVmFs
dWVSZWdzIGJhc2VSZWdzLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBzdHViSW5mb0dQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQp
CiAgICAgewogICAgICAgICBKSVRCeUlkR2VuZXJhdG9yOjpzZXRVcFN0dWJJbmZvSW1wbChzdHVi
SW5mbywgYWNjZXNzVHlwZSwgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgdXNlZFJlZ2lzdGVy
cywgYmFzZVJlZ3MsIHZhbHVlUmVncywgc3R1YkluZm9HUFIpOwogICAgICAgICBpZiBjb25zdGV4
cHIgKCFzdGQ6OmlzX3NhbWVfdjxzdGQ6OmRlY2F5X3Q8U3R1YkluZm8+LCBCYXNlbGluZVVubGlu
a2VkU3RydWN0dXJlU3R1YkluZm8+KQogICAgICAgICAgICAgc3R1YkluZm8udXNlZFJlZ2lzdGVy
cy5yZW1vdmUoc2NyYXRjaEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShzY3JhdGNoR1BSKTsKLSAgICAgICAgaWYgY29uc3RleHByICghc3RkOjppc19zYW1lX3Y8
c3RkOjpkZWNheV90PFN0dWJJbmZvPiwgU3RydWN0dXJlU3R1YkluZm8+KQorICAgICAgICBpZiBj
b25zdGV4cHIgKCFzdGQ6OmlzX3NhbWVfdjxzdGQ6OmRlY2F5X3Q8U3R1YkluZm8+LCBTdHJ1Y3R1
cmVTdHViSW5mbz4pIHsKICAgICAgICAgICAgIHN0dWJJbmZvLmVjbWFNb2RlID0gZWNtYU1vZGU7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0dWJJbmZvLnB1dEtpbmQgPSBwdXRLaW5kOwor
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVjbWFNb2RlKTsKKyAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTShwdXRLaW5kKTsKKyAgICAgICAgfQogICAgIH0KKworcHJp
dmF0ZToKKyAgICBFQ01BTW9kZSBtX2VjbWFNb2RlIHsgRUNNQU1vZGU6OnN0cmljdCgpIH07Cisg
ICAgUHV0S2luZCBtX3B1dEtpbmQ7CiB9OwogCiBjbGFzcyBKSVRQdXRCeVZhbEdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvciB7CkBAIC0yNTgsNyArMjY1LDcg
QEAgcHVibGljOgogCiAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9j
ayosIENvbXBpbGVUaW1lU3RydWN0dXJlU3R1YkluZm8sIEpJVFR5cGUsIENvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGUsIGNvbnN0IFJlZ2lzdGVyU2V0QnVpbGRlciYgdXNlZFJl
Z2lzdGVycywKLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHks
IEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFycmF5UHJvZmlsZUdQUiwgR1BSUmVnIHN0dWJJ
bmZvR1BSLCBFQ01BTW9kZSk7CisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdz
IHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcnJheVByb2ZpbGVHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgUHV0S2luZCwgRUNNQU1vZGUsIFByaXZhdGVGaWVsZFB1dEtpbmQp
OwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHNsb3dQYXRoSnVtcCgpIGNvbnN0CiAgICAgewpA
QCAtMjczLDcgKzI4MCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHViSW5m
bz4KICAgICBzdGF0aWMgdm9pZCBzZXRVcFN0dWJJbmZvKFN0dWJJbmZvJiBzdHViSW5mbywKICAg
ICAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXRCdWlsZGVyJiB1c2VkUmVn
aXN0ZXJzLAotICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncywgSlNWYWx1ZVJlZ3MgcHJvcGVy
dHlSZWdzLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MsIEdQUlJlZyBhcnJheVByb2ZpbGVHUFIsIEdQ
UlJlZyBzdHViSW5mb0dQUiwgRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIEpTVmFsdWVSZWdz
IGJhc2VSZWdzLCBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MsIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cywgR1BSUmVnIGFycmF5UHJvZmlsZUdQUiwgR1BSUmVnIHN0dWJJbmZvR1BSLCBQdXRLaW5kIHB1
dEtpbmQsIEVDTUFNb2RlIGVjbWFNb2RlLCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVs
ZFB1dEtpbmQpCiAgICAgewogICAgICAgICBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6c2V0VXBT
dHViSW5mb0ltcGwoc3R1YkluZm8sIGFjY2Vzc1R5cGUsIGNvZGVPcmlnaW4sIGNhbGxTaXRlSW5k
ZXgsIHVzZWRSZWdpc3RlcnMpOwogICAgICAgICBpZiBjb25zdGV4cHIgKCFzdGQ6OmlzX3NhbWVf
djxzdGQ6OmRlY2F5X3Q8U3R1YkluZm8+LCBCYXNlbGluZVVubGlua2VkU3RydWN0dXJlU3R1Yklu
Zm8+KSB7CkBAIC0yOTgsMTAgKzMwNSwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBVTlVTRURf
UEFSQU0oc3R1YkluZm9HUFIpOwogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmls
ZUdQUik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgY29uc3RleHByICghc3RkOjppc19zYW1lX3Y8
c3RkOjpkZWNheV90PFN0dWJJbmZvPiwgU3RydWN0dXJlU3R1YkluZm8+KQorICAgICAgICBpZiBj
b25zdGV4cHIgKCFzdGQ6OmlzX3NhbWVfdjxzdGQ6OmRlY2F5X3Q8U3R1YkluZm8+LCBTdHJ1Y3R1
cmVTdHViSW5mbz4pIHsKKyAgICAgICAgICAgIHN0dWJJbmZvLnB1dEtpbmQgPSBwdXRLaW5kOwog
ICAgICAgICAgICAgc3R1YkluZm8uZWNtYU1vZGUgPSBlY21hTW9kZTsKLSAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc3R1YkluZm8ucHJpdmF0ZUZpZWxkUHV0S2luZCA9IHByaXZhdGVGaWVsZFB1
dEtpbmQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0ocHV0S2lu
ZCk7CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZWNtYU1vZGUpOworICAgICAgICAgICAgVU5V
U0VEX1BBUkFNKHByaXZhdGVGaWVsZFB1dEtpbmQpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
SlNWYWx1ZVJlZ3MgbV9iYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggNzk5YzdlYTQ1M2Q1Li41NjQ3MmJiMGY3OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNzkyLDcgKzc5Miw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU3RyaWN0LCB2b2lkLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRC
eUlkU3RyaWN0LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCksIGlkZW50LCBzbG90LmJhc2Uo
KSA9PSBiYXNlVmFsdWUpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dEJ5SWRTbG9wcHksIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVy
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0LCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIApAQCAtODA4LDEwNyAr
ODA4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRTbG9wcHks
IHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUsIGZhbHNlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4
dCgpKTsKICAgICBiYXNlVmFsdWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIAotICAgIExPR19JQygoSUNFdmVudDo6
T3BlcmF0aW9uUHV0QnlJZFNsb3BweSwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCgpLCBpZGVu
dCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgcHV0QnlJZE1lZ2Ftb3JwaGljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
SlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgdmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgUHV0QnlLaW5kIGtpbmQpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotCi0gICAgYXV0byogdWlkID0gaWRlbnRpZmllci51aWQoKTsKLSAgICBi
b29sIGlzU3RyaWN0ID0ga2luZCA9PSBQdXRCeUtpbmQ6OkJ5SWRTdHJpY3Q7Ci0gICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBpc1N0cmljdCwgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+cHV0QnlJZENvbnRleHQoKSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoIWJhc2VWYWx1ZS5pc09i
amVjdCgpKSkgewotICAgICAgICBpZiAoc3R1YkluZm8gJiYgc3R1YkluZm8tPmNvbnNpZGVyUmVw
YXRjaGluZ0NhY2hlTWVnYW1vcnBoaWModm0pKQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5U2xv
d1BhdGhDYWxsKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksICpzdHViSW5mbywga2luZCk7Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgYmFzZVZhbHVlLnB1dChnbG9iYWxPYmplY3Qs
IHVpZCwgdmFsdWUsIHNsb3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIHsKLSAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGJhc2VPYmplY3Q7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKCk7Ci0gICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoc3RydWN0dXJlLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJy
aWRlc0dldFByb3RvdHlwZSgpIHx8IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNQdXQo
KSB8fCBzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSkgewotICAgICAgICAgICAgICAgIGlmIChz
dHViSW5mbyAmJiBzdHViSW5mby0+Y29uc2lkZXJSZXBhdGNoaW5nQ2FjaGVNZWdhbW9ycGhpYyh2
bSkpCi0gICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hQdXRCeVNsb3dQYXRoQ2FsbChjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLCAqc3R1YkluZm8sIGtpbmQpOwotICAgICAgICAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRJbmxpbmVTbG93KGds
b2JhbE9iamVjdCwgdWlkLCB2YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBvYmplY3QtPmdl
dFByb3RvdHlwZURpcmVjdCgpOwotICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHBy
b3RvdHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpOwotICAgIGJhc2VPYmplY3QtPnB1dElubGluZUZh
c3QoZ2xvYmFsT2JqZWN0LCB1aWQsIHZhbHVlLCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAgaWYgKFVOTElLRUxZKCFzbG90LmlzQ2FjaGVhYmxl
UHV0KCkgfHwgIW9sZFN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSkg
ewotICAgICAgICBpZiAoc3R1YkluZm8gJiYgc3R1YkluZm8tPmNvbnNpZGVyUmVwYXRjaGluZ0Nh
Y2hlTWVnYW1vcnBoaWModm0pKQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5U2xvd1BhdGhDYWxs
KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksICpzdHViSW5mbywga2luZCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0
cnVjdHVyZSgpOwotICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OkV4aXN0
aW5nUHJvcGVydHkpIHsKLSAgICAgICAgaWYgKExJS0VMWShvbGRTdHJ1Y3R1cmUgPT0gbmV3U3Ry
dWN0dXJlICYmICFvbGRTdHJ1Y3R1cmUtPmlzV2F0Y2hpbmdSZXBsYWNlbWVudCgpICYmIHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgPD0gTWVnYW1vcnBoaWNDYWNoZTo6bWF4T2Zmc2V0KSkKLSAgICAgICAg
ICAgIHZtLm1lZ2Ftb3JwaGljQ2FjaGUoKS0+aW5pdEFzUmVwbGFjZShTdHJ1Y3R1cmVJRDo6ZW5j
b2RlKG9sZFN0cnVjdHVyZSksIHVpZCwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90
OjpOZXdQcm9wZXJ0eSk7Ci0gICAgLy8gVGhpcyBpcyBub3Qgd29ydGggcmVnaXN0ZXJpbmcuIERp
Y3Rpb25hcnkgU3RydWN0dXJlIGlzIG9uZS1vbi1vbmUgdG8gdGhpcyBvYmplY3QuIEFuZCBOZXdQ
cm9wZXJ0eSBoYXBwZW5zIG9ubHkgb25jZS4KLSAgICAvLyBTbyB0aGlzIGNhY2hlIHdpbGwgYmUg
bmV2ZXIgdXNlZCBhZ2Fpbi4KLSAgICBpZiAob2xkU3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSB8
fCBuZXdTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoVU5MSUtFTFkob2xkU3RydWN0dXJlLT5tYXlCZVByb3RvdHlwZSgpIHx8IChuZXdTdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSAhPSBvbGRTdHJ1Y3R1cmUpIHx8ICFuZXdTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkpIHsKLSAgICAgICAgaWYgKHN0dWJJbmZvICYmIHN0
dWJJbmZvLT5jb25zaWRlclJlcGF0Y2hpbmdDYWNoZU1lZ2Ftb3JwaGljKHZtKSkKLSAgICAgICAg
ICAgIHJlcGF0Y2hQdXRCeVNsb3dQYXRoQ2FsbChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCAqc3R1
YkluZm8sIGtpbmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5ld1N0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpIHsKLSAgICAgICAgaWYgKExJS0VMWShzbG90LmNhY2hlZE9mZnNldCgpIDw9IE1lZ2Ft
b3JwaGljQ2FjaGU6Om1heE9mZnNldCkpCi0gICAgICAgICAgICB2bS5tZWdhbW9ycGhpY0NhY2hl
KCktPmluaXRBc1RyYW5zaXRpb24oU3RydWN0dXJlSUQ6OmVuY29kZShvbGRTdHJ1Y3R1cmUpLCBT
dHJ1Y3R1cmVJRDo6ZW5jb2RlKG5ld1N0cnVjdHVyZSksIHVpZCwgc2xvdC5jYWNoZWRPZmZzZXQo
KSk7Ci0gICAgfQotfQotCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJ
ZE1lZ2Ftb3JwaGljU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRp
ZmllcikpCi17Ci0gICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OwotCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0KLSAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJh
d0NhY2hlYWJsZUlkZW50aWZpZXIpOwotCi0gICAgcHV0QnlJZE1lZ2Ftb3JwaGljKGdsb2JhbE9i
amVjdCwgdm0sIGNhbGxGcmFtZSwgc3R1YkluZm8sIGJhc2VWYWx1ZSwgdmFsdWUsIGlkZW50aWZp
ZXIsIFB1dEJ5S2luZDo6QnlJZFN0cmljdCk7Ci19Ci0KLUpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRCeUlkTWVnYW1vcnBoaWNTbG9wcHksIHZvaWQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKSkKLXsKLSAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7Ci0KLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0g
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LQotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7Ci0KLSAgICBwdXRCeUlkTWVn
YW1vcnBoaWMoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLCBzdHViSW5mbywgYmFzZVZhbHVl
LCB2YWx1ZSwgaWRlbnRpZmllciwgUHV0QnlLaW5kOjpCeUlkU2xvcHB5KTsKKyAgICBMT0dfSUMo
KElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QsIGJhc2VWYWx1ZS5jbGFzc0luZm9P
ck51bGwoKSwgaWRlbnQsIHNsb3QuYmFzZSgpID09IGJhc2VWYWx1ZSkpOwogfQogCiBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdCwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpKQpAQCAtOTMwLDcgKzgzMCw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0LCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRC
eUlkRGlyZWN0U3RyaWN0LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCksIGlkZW50LCBzbG90
LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTbG9wcHksIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFi
bGVJZGVudGlmaWVyKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlk
RGlyZWN0Tm9uU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwog
ICAgIApAQCAtOTQ2LDcgKzg0Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBmYWxzZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+cHV0QnlJZENvbnRleHQoKSk7CiAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRo
UmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYXNPYmplY3QoYmFzZVZhbHVlKSwgaWRlbnQsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsKIAotICAgIExPR19JQygoSUNFdmVudDo6
T3BlcmF0aW9uUHV0QnlJZERpcmVjdFNsb3BweSwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCgp
LCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVlKSk7CisgICAgTE9HX0lDKChJQ0V2ZW50
OjpPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JO
dWxsKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKIH0KIAogSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpKQpAQCAtOTc4LDEwICs4NzgsMTAgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSwg
dm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKHN0
dWJJbmZvLT5jb25zaWRlclJlcGF0Y2hpbmdDYWNoZUJ5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSwgaWRlbnRpZmllcikpCi0gICAgICAgIHJlcGF0Y2hQdXRCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywg
UHV0QnlLaW5kOjpCeUlkU3RyaWN0KTsKKyAgICAgICAgcmVwYXRjaFB1dEJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0
dWJJbmZvLCBQdXRCeUtpbmQ6OkJ5SWQsIFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiB9CiAKLUpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2xvcHB5T3B0aW1pemUsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKK0pTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRw
dHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBz
dXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCkBAIC0xMDAyLDcgKzkwMiw3IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2xvcHB5T3B0aW1pemUsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCoKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IENvbW1vblNsb3dQ
YXRoczo6b3JpZ2luYWxTdHJ1Y3R1cmVCZWZvcmVQdXQoYmFzZVZhbHVlKTsKICAgICBiYXNlVmFs
dWUucHV0SW5saW5lKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKIAotICAgIExP
R19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFNsb3BweU9wdGltaXplLCBiYXNlVmFsdWUu
Y2xhc3NJbmZvT3JOdWxsKCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlVmFsdWUpKTsKKyAg
ICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZSwgYmFz
ZVZhbHVlLmNsYXNzSW5mb09yTnVsbCgpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZVZhbHVl
KSk7CiAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCkBAIC0xMDEw
LDcgKzkxMCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2xv
cHB5T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJSZXBhdGNoaW5nQ2FjaGVCeSh2bSwgY29kZUJs
b2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBzbG90
LCAqc3R1YkluZm8sIFB1dEJ5S2luZDo6QnlJZFNsb3BweSk7CisgICAgICAgIHJlcGF0Y2hQdXRC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHNsb3QsICpzdHViSW5mbywgUHV0QnlLaW5kOjpCeUlkLCBQdXRLaW5kOjpOb3REaXJlY3Qp
OwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikp
CkBAIC0xMDQxLDEwICs5NDEsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2IKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJSZXBhdGNoaW5nQ2FjaGVC
eSh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNo
UHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRl
bnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBQdXRCeUtpbmQ6OkJ5SWREaXJlY3RTdHJpY3QpOwor
ICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3Qs
IHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBQdXRCeUtpbmQ6OkJ5SWQs
IFB1dEtpbmQ6OkRpcmVjdCk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U2xvcHB5T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNo
ZWFibGVJZGVudGlmaWVyKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRC
eUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFi
bGVJZGVudGlmaWVyKSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29w
ZShmYWxzZSk7CiAgICAgCkBAIC0xMDY0LDcgKzk2NCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRCeUlkRGlyZWN0U2xvcHB5T3B0aW1pemUsIHZvaWQsIChKU0dsb2Jh
bE9iCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOwogICAgIENvbW1vblNsb3dQ
YXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIGlk
ZW50LCB2YWx1ZSwgc2xvdCwgJnN0cnVjdHVyZSk7CiAKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTbG9wcHlPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZv
KCksIGlkZW50LCBzbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisgICAgTE9HX0lDKChJQ0V2
ZW50OjpPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3Qt
PmNsYXNzSW5mbygpLCBpZGVudCwgc2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOwogCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAKQEAgLTEwNzIsNyArOTcy
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTbG9w
cHlPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2IKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJSZXBhdGNoaW5nQ2FjaGVCeSh2bSwgY29kZUJsb2NrLCBz
dHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0
dWJJbmZvLCBQdXRCeUtpbmQ6OkJ5SWREaXJlY3RTbG9wcHkpOworICAgICAgICByZXBhdGNoUHV0
QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRp
Zmllciwgc2xvdCwgKnN0dWJJbmZvLCBQdXRCeUtpbmQ6OkJ5SWQsIFB1dEtpbmQ6OkRpcmVjdCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFB1dFByaXZhdGVGaWVsZENhbGxiYWNrPgpAQCAtMTE0
Nyw3ICsxMDQ3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRE
ZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgdm9pZCwKICAgICAgICAgQVNTRVJUX1VO
VVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CiAKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlclJl
cGF0Y2hpbmdDYWNoZUJ5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikp
Ci0gICAgICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VP
YmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBQdXRC
eUtpbmQ6OkRlZmluZVByaXZhdGVOYW1lQnlJZCk7CisgICAgICAgICAgICByZXBhdGNoUHV0Qnko
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRp
ZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBQdXRCeUtpbmQ6OkJ5SWQsIFB1dEtpbmQ6OkRpcmVj
dFByaXZhdGVGaWVsZERlZmluZSk7CiAgICAgfSk7CiB9CiAKQEAgLTExODMsNyArMTA4Myw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemUsIHZvaWQsIChKCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlw
ZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSkpOwogCiAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJSZXBhdGNoaW5nQ2FjaGVC
eSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICAgICAg
cmVwYXRjaFB1dEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1
Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywgUHV0QnlLaW5kOjpTZXRQcml2
YXRlTmFtZUJ5SWQpOworICAgICAgICAgICAgcmVwYXRjaFB1dEJ5KGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpz
dHViSW5mbywgUHV0QnlLaW5kOjpCeUlkLCBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQp
OwogICAgIH0pOwogfQogCkBAIC0xMjc1LDExICsxMTc1LDEwIEBAIGVudW0gY2xhc3MgT3B0aW1p
emF0aW9uUmVzdWx0IHsKICAgICBHaXZlVXAsCiB9OwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSB2
b2lkIHB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNW
YWx1ZSB2YWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqIHBy
b2ZpbGUsIFB1dEJ5S2luZCBraW5kKQorc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRCeVZh
bE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJs
b2NrLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKiBwcm9maWxlLCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGJvb2wgaXNTdHJpY3Qg
PSBraW5kID09IFB1dEJ5S2luZDo6QnlWYWxTdHJpY3Q7CiAKICAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNl
VmFsdWUpOwpAQCAtMTI5MCw3ICsxMTg5LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBw
dXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG8KICAg
ICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1f
bG9jayk7CiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcmVwYXRjaEFycmF5UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCAqc3R1YkluZm8sIGtpbmQpOworICAgICAgICAgICAg
ICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpOb3REaXJlY3QsIGVjbWFNb2RlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMjk5LDcgKzExOTgsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIHB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsbwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSB8fCAhcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgQWNjZXNzVHlwZSBhY2Nlc3NU
eXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwotICAg
ICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgaXNTdHJpY3QsIGNv
ZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBlY21hTW9kZS5pc1N0cmljdCgpLCBjb2RlQmxvY2stPnB1dEJ5
SWRDb250ZXh0KCkpOwogCiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBD
b21tb25TbG93UGF0aHM6Om9yaWdpbmFsU3RydWN0dXJlQmVmb3JlUHV0KGJhc2VWYWx1ZSk7CiAg
ICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0SW5saW5lKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CkBAIC0xMzEwLDEzICsxMjA5LDEzIEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIHZvaWQgcHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDb2RlQmxvCiAKICAgICAgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXND
ZWxsKCkpOwogICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJSZXBhdGNoaW5n
Q2FjaGVCeSh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQotICAgICAgICAg
ICAgICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1
ZSwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIGtpbmQpOworICAgICAg
ICAgICAgICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VW
YWx1ZSwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIFB1dEJ5S2luZDo6
QnlWYWwsIFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBwdXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwg
cHJvZmlsZSwgaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5
KCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBwcm9maWxlLCBlY21hTW9kZSkpOwogfQog
CiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6
ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVBy
b2ZpbGUqIHByb2ZpbGUpKQpAQCAtMTMyOSwxMCArMTIyOCwxMCBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFs
T2JqZWN0KgogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRT
dWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKIAotICAgIHB1dEJ5VmFsT3B0aW1pemUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIHN0dWJJbmZvLCBwcm9maWxl
LCBQdXRCeUtpbmQ6OkJ5VmFsU3RyaWN0KTsKKyAgICBwdXRCeVZhbE9wdGltaXplKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVl
LCBzdHViSW5mbywgcHJvZmlsZSwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU2xvcHB5T3B0aW1pemUsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKiBwcm9m
aWxlKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE5vblN0cmlj
dE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEFycmF5UHJvZmlsZSogcHJvZmlsZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
QEAgLTEzNDIsMTQgKzEyNDEsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dEJ5VmFsU2xvcHB5T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBwdXRC
eVZhbE9wdGltaXplKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgYmFzZVZh
bHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBzdHViSW5mbywgcHJvZmlsZSwgUHV0QnlLaW5kOjpCeVZh
bFNsb3BweSk7CisgICAgcHV0QnlWYWxPcHRpbWl6ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCksIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgc3R1YkluZm8sIHByb2Zp
bGUsIEVDTUFNb2RlOjpzbG9wcHkoKSk7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
ZGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBK
U1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSog
cHJvZmlsZSwgUHV0QnlLaW5kIGtpbmQpCitzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpcmVj
dFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1
ZSB2YWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqIHByb2Zp
bGUsIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYm9vbCBp
c1N0cmljdCA9IGtpbmQgPT0gUHV0QnlLaW5kOjpCeVZhbERpcmVjdFN0cmljdDsKIAogICAgIFJF
TEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CkBAIC0xMzYxLDcgKzEyNTksNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQwogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIsIGNvZGVCbG9jaywgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBraW5kKTsKKyAgICAgICAg
ICAgIHJlcGF0Y2hBcnJheVB1dEJ5VmFsKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgKnN0dWJJbmZvLCBQdXRLaW5kOjpEaXJlY3QsIGVjbWFNb2RlKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTM3MCw3ICsxMjY4LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBkaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAg
ICAgaWYgKHN1YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKLSAgICAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSwgaXNTdHJpY3QsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7
CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGVjbWFNb2RlLmlz
U3RyaWN0KCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CiAKICAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gQ29tbW9uU2xvd1BhdGhzOjpvcmlnaW5hbFN0cnVjdHVyZUJl
Zm9yZVB1dChiYXNlVmFsdWUpOwogICAgICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJl
Y3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CkBAIC0xMzgyLDEyICsxMjgwLDEyIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDCiAKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CiAgICAg
ICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyUmVwYXRjaGluZ0NhY2hlQnkodm0sIGNvZGVC
bG9jaywgc3RydWN0dXJlLCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICByZXBhdGNoUHV0
QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0dXJlLCBpZGVudGlm
aWVyLCBzbG90LCAqc3R1YkluZm8sIGtpbmQpOworICAgICAgICAgICAgICAgIHJlcGF0Y2hQdXRC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZp
ZXIsIHNsb3QsICpzdHViSW5mbywgUHV0QnlLaW5kOjpCeVZhbCwgUHV0S2luZDo6RGlyZWN0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBz
dWJzY3JpcHQsIHZhbHVlLCBwcm9maWxlLCBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6
IEVDTUFNb2RlOjpzbG9wcHkoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGly
ZWN0UHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBw
cm9maWxlLCBlY21hTW9kZSkpOwogCiB9CiAKQEAgLTE0MDEsMTAgKzEyOTksMTAgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemUs
IHZvaWQsIChKU0dsb2JhbE8KICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAKLSAgICBkaXJlY3RQdXRCeVZhbE9wdGltaXplKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBz
dHViSW5mbywgcHJvZmlsZSwgUHV0QnlLaW5kOjpCeVZhbERpcmVjdFN0cmljdCk7CisgICAgZGly
ZWN0UHV0QnlWYWxPcHRpbWl6ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCks
IGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgc3R1YkluZm8sIHByb2ZpbGUsIEVDTUFNb2Rl
OjpzdHJpY3QoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EaXJl
Y3RQdXRCeVZhbFNsb3BweU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSogcHJvZmlsZSkpCitKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZSwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqIHBy
b2ZpbGUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xNDE0LDcgKzEzMTIs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTbG9w
cHlPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsTwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKIAotICAgIGRpcmVjdFB1dEJ5VmFsT3B0aW1pemUo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCBiYXNlVmFsdWUsIHN1YnNjcmlw
dCwgdmFsdWUsIHN0dWJJbmZvLCBwcm9maWxlLCBQdXRCeUtpbmQ6OkJ5VmFsRGlyZWN0U2xvcHB5
KTsKKyAgICBkaXJlY3RQdXRCeVZhbE9wdGltaXplKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBzdHViSW5mbywgcHJvZmls
ZSwgRUNNQU1vZGU6OnNsb3BweSgpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dEJ5VmFsU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUpKQpAQCAtMTQzMiw3ICsx
MzMwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0
R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIHB1dEJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBwcm9maWxlLCBFQ01BTW9kZTo6c3RyaWN0
KCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTbG9w
cHlHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEFycmF5UHJvZmlsZSogcHJvZmlsZSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0QnlWYWxOb25TdHJpY3RHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSogcHJvZmlsZSkpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE0NjMsMTE1ICsxMzYxLDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpT
R2xvYmFsT2IKICAgICBkaXJlY3RQdXRCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2VW
YWx1ZSksIHN1YnNjcmlwdCwgdmFsdWUsIHByb2ZpbGUsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiB9
CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0QnlWYWxNZWdhbW9ycGhpYyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSogcHJvZmlsZSwgSlNWYWx1ZSBi
YXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBQdXRCeUtpbmQga2lu
ZCkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYm9v
bCBpc1N0cmljdCA9IGtpbmQgPT0gUHV0QnlLaW5kOjpCeVZhbFN0cmljdDsKLQotICAgIGlmIChV
TkxJS0VMWSghYmFzZVZhbHVlLmlzT2JqZWN0KCkgfHwgIShzdWJzY3JpcHQuaXNTdHJpbmcoKSAm
JiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxsKHN1YnNjcmlw
dCkpKSkgewotICAgICAgICBpZiAoc3R1YkluZm8gJiYgc3R1YkluZm8tPmNvbnNpZGVyUmVwYXRj
aGluZ0NhY2hlTWVnYW1vcnBoaWModm0pKQotICAgICAgICAgICAgcmVwYXRjaFB1dEJ5U2xvd1Bh
dGhDYWxsKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksICpzdHViSW5mbywga2luZCk7Ci0gICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcHV0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFs
dWUsIHN1YnNjcmlwdCwgdmFsdWUsIHByb2ZpbGUsIGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0cmlj
dCgpIDogRUNNQU1vZGU6OnNsb3BweSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0gICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBpc1N0cmljdCk7Ci0KLSAgICBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkID0gcHJvcGVydHlOYW1lLmltcGwoKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhblVzZU1lZ2Ftb3JwaGljUHV0QnlJZCh2bSwgdWlkKSkpIHsKLSAgICAgICAgaWYgKHN0dWJJ
bmZvICYmIHN0dWJJbmZvLT5jb25zaWRlclJlcGF0Y2hpbmdDYWNoZU1lZ2Ftb3JwaGljKHZtKSkK
LSAgICAgICAgICAgIHJlcGF0Y2hQdXRCeVNsb3dQYXRoQ2FsbChjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLCAqc3R1YkluZm8sIGtpbmQpOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IGJhc2VWYWx1ZS5wdXQoZ2xvYmFsT2JqZWN0LCB1aWQsIHZhbHVlLCBzbG90KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKLSAgICB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBiYXNlT2JqZWN0Owot
ICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBvYmplY3QtPnN0cnVjdHVyZSgpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHN0cnVjdHVy
ZS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIHx8
IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm90b3R5cGUoKSB8fCBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzUHV0KCkgfHwgc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8o
KSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8gJiYgc3R1YkluZm8tPmNvbnNpZGVy
UmVwYXRjaGluZ0NhY2hlTWVnYW1vcnBoaWModm0pKQotICAgICAgICAgICAgICAgICAgICByZXBh
dGNoUHV0QnlTbG93UGF0aENhbGwoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgKnN0dWJJbmZvLCBr
aW5kKTsKLSAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAg
YmFzZU9iamVjdC0+cHV0SW5saW5lU2xvdyhnbG9iYWxPYmplY3QsIHVpZCwgdmFsdWUsIHNsb3Qp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gb2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3QoKTsKLSAgICAgICAg
ICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBvYmplY3QgPSBhc09iamVjdChwcm90b3R5cGUpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKTsK
LSAgICBiYXNlT2JqZWN0LT5wdXRJbmxpbmVGYXN0KGdsb2JhbE9iamVjdCwgdWlkLCB2YWx1ZSwg
c2xvdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgIGlm
IChVTkxJS0VMWSghc2xvdC5pc0NhY2hlYWJsZVB1dCgpIHx8ICFvbGRTdHJ1Y3R1cmUtPnByb3Bl
cnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkpIHsKLSAgICAgICAgaWYgKHN0dWJJbmZvICYmIHN0
dWJJbmZvLT5jb25zaWRlclJlcGF0Y2hpbmdDYWNoZU1lZ2Ftb3JwaGljKHZtKSkKLSAgICAgICAg
ICAgIHJlcGF0Y2hQdXRCeVNsb3dQYXRoQ2FsbChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLCAqc3R1
YkluZm8sIGtpbmQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKTsKLSAgICBpZiAoc2xvdC50eXBl
KCkgPT0gUHV0UHJvcGVydHlTbG90OjpFeGlzdGluZ1Byb3BlcnR5KSB7Ci0gICAgICAgIC8vIGRh
dGFMb2dMbihNZWdhbW9ycGhpY0NhY2hlOjpzdG9yZUNhY2hlUHJpbWFyeU1hc2sgJiBNZWdhbW9y
cGhpY0NhY2hlOjpzdG9yZUNhY2hlUHJpbWFyeUhhc2goU3RydWN0dXJlSUQ6OmVuY29kZShvbGRT
dHJ1Y3R1cmUpLCB1aWQpLCAiICIsIEpTVmFsdWUob2xkU3RydWN0dXJlKSk7Ci0gICAgICAgIGlm
IChMSUtFTFkob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZSAmJiAhb2xkU3RydWN0dXJlLT5p
c1dhdGNoaW5nUmVwbGFjZW1lbnQoKSAmJiBzbG90LmNhY2hlZE9mZnNldCgpIDw9IE1lZ2Ftb3Jw
aGljQ2FjaGU6Om1heE9mZnNldCkpCi0gICAgICAgICAgICB2bS5tZWdhbW9ycGhpY0NhY2hlKCkt
PmluaXRBc1JlcGxhY2UoU3RydWN0dXJlSUQ6OmVuY29kZShvbGRTdHJ1Y3R1cmUpLCB1aWQsIHNs
b3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
KHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpOwotICAgIC8vIFRo
aXMgaXMgbm90IHdvcnRoIHJlZ2lzdGVyaW5nLiBEaWN0aW9uYXJ5IFN0cnVjdHVyZSBpcyBvbmUt
b24tb25lIHRvIHRoaXMgb2JqZWN0LiBBbmQgTmV3UHJvcGVydHkgaGFwcGVucyBvbmx5IG9uY2Uu
Ci0gICAgLy8gU28gdGhpcyBjYWNoZSB3aWxsIGJlIG5ldmVyIHVzZWQgYWdhaW4uCi0gICAgaWYg
KG9sZFN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgfHwgbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKFVOTElLRUxZKG9sZFN0cnVjdHVyZS0+
bWF5QmVQcm90b3R5cGUoKSB8fCAobmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkgIT0gb2xkU3Ry
dWN0dXJlKSB8fCAhbmV3U3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkp
KSB7Ci0gICAgICAgIGlmIChzdHViSW5mbyAmJiBzdHViSW5mby0+Y29uc2lkZXJSZXBhdGNoaW5n
Q2FjaGVNZWdhbW9ycGhpYyh2bSkpCi0gICAgICAgICAgICByZXBhdGNoUHV0QnlTbG93UGF0aENh
bGwoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgKnN0dWJJbmZvLCBraW5kKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
PT0gb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Ci0gICAgICAgIGlmIChMSUtF
TFkoc2xvdC5jYWNoZWRPZmZzZXQoKSA8PSBNZWdhbW9ycGhpY0NhY2hlOjptYXhPZmZzZXQpKQot
ICAgICAgICAgICAgdm0ubWVnYW1vcnBoaWNDYWNoZSgpLT5pbml0QXNUcmFuc2l0aW9uKFN0cnVj
dHVyZUlEOjplbmNvZGUob2xkU3RydWN0dXJlKSwgU3RydWN0dXJlSUQ6OmVuY29kZShuZXdTdHJ1
Y3R1cmUpLCB1aWQsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwotICAgIH0KLX0KLQotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsTWVnYW1vcnBoaWNTdHJpY3QsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKiBw
cm9maWxlKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwotICAg
IEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLQotICAg
IHB1dEJ5VmFsTWVnYW1vcnBoaWMoZ2xvYmFsT2JqZWN0LCB2bSwgY2FsbEZyYW1lLCBzdHViSW5m
bywgcHJvZmlsZSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBQdXRCeUtpbmQ6OkJ5VmFs
U3RyaWN0KTsKLX0KLQotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFs
TWVnYW1vcnBoaWNTbG9wcHksIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vi
c2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgQXJyYXlQcm9maWxlKiBwcm9maWxlKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKLQotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlVmFsdWUpOwotICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRTdWJzY3JpcHQpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLQotICAgIHB1dEJ5VmFsTWVnYW1vcnBoaWMoZ2xvYmFsT2JqZWN0
LCB2bSwgY2FsbEZyYW1lLCBzdHViSW5mbywgcHJvZmlsZSwgYmFzZVZhbHVlLCBzdWJzY3JpcHQs
IHZhbHVlLCBQdXRCeUtpbmQ6OkJ5VmFsU2xvcHB5KTsKLX0KLQotSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU2xvcHB5R2VuZXJpYywgdm9pZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqIHByb2ZpbGUp
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsTm9uU3Ry
aWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBBcnJheVByb2ZpbGUqIHByb2ZpbGUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CkBAIC0xNzEyLDcgKzE1MDIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFByaXZh
dGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlk
ZW50aWZpZXJDZWxsKHN1YnNjcmlwdCkpIHsKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0
LmFzQ2VsbCgpKTsKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlclJlcGF0Y2hpbmdDYWNo
ZUJ5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICBy
ZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0dXJl
LCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIGRlZmluZSA/IFB1dEJ5S2luZDo6RGVmaW5l
UHJpdmF0ZU5hbWVCeVZhbCA6IFB1dEJ5S2luZDo6U2V0UHJpdmF0ZU5hbWVCeVZhbCk7CisgICAg
ICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwg
c3RydWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIFB1dEJ5S2luZDo6QnlWYWws
IGRlZmluZSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRp
cmVjdFByaXZhdGVGaWVsZFNldCk7CiAgICAgfQogfQogCkBAIC0yNjkzLDcgKzI0ODMsNyBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsTWVnYW1vcnBoaWMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gcHJvcGVydHlOYW1lLmltcGwoKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNhblVzZU1lZ2Ftb3JwaGljR2V0QnlJZCh2bSwgdWlkKSkpIHsK
KyAgICBpZiAoVU5MSUtFTFkocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpIHx8IHVpZCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGggfHwgdWlkID09IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUgfHwg
dWlkID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkpIHsKICAgICAgICAgaWYgKHN0dWJJ
bmZvICYmIHN0dWJJbmZvLT5jb25zaWRlclJlcGF0Y2hpbmdDYWNoZU1lZ2Ftb3JwaGljKHZtKSkK
ICAgICAgICAgICAgIHJlcGF0Y2hHZXRCeVNsb3dQYXRoQ2FsbChjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLCAqc3R1YkluZm8sIGtpbmQpOwogICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUtpbmQ6OkJ5
VmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBjNmM4
NTcwY2I3YjAuLmVkYTYzYTA4OTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKQEAgLTE5MSwxNSArMTkxLDEzIEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0ds
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGlt
aXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIAogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25QdXRCeUlkU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRCeUlkU2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25QdXRCeUlkTm9uU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U2xvcHB5LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIHVpbnRwdHJfdCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dEJ5SWRTbG9wcHlPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSk7Ci1KU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTbG9wcHlPcHRpbWl6ZSwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZE1lZ2Ftb3JwaGljU3RyaWN0LCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwot
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkTWVnYW1vcnBoaWNTbG9w
cHksIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25T
dHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJ
ZERlZmluZVByaXZhdGVGaWVsZFN0cmljdCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCB2b2lkLCAoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3RyaWN0LCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkpOwpA
QCAtMjEwLDE2ICsyMDgsMTQgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25D
aGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmoKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogCi1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU2xvcHB5T3B0aW1pemUsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOworSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
U3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU2xvcHB5T3B0aW1pemUsIHZvaWQsIChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOworSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE5vblN0cmljdE9wdGltaXplLCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSwg
dm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7Ci1KU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU2xvcHB5R2VuZXJpYywgdm9p
ZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYywgdm9p
ZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0R2VuZXJpYywgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsTWVnYW1vcnBoaWNTdHJpY3QsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwotSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE1lZ2Ftb3JwaGljU2xvcHB5LCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljLCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTbG9wcHlHZW5lcmlj
LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKK0pT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RH
ZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSop
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2
YXRlRmllbGRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJh
eVByb2ZpbGUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFs
RGVmaW5lUHJpdmF0ZUZpZWxkR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBBcnJheVByb2ZpbGUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA4ZjRmYzFkYjJiM2EuLjQ1NjBkN2EwNDIy
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTM2OCwxNCArMzY4LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29u
c3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZVdpdGhDZWxsKGJ5dGVjb2RlLCBiYXNlSlNSLnBheWxvYWRHUFIoKSwgLyogc2Ny
YXRjaEdQUjogKi8gc3R1YkluZm9HUFIpOwogCisgICAgUHV0S2luZCBwdXRLaW5kID0gc3RkOjpp
c19zYW1lX3Y8T3AsIE9wUHV0QnlWYWxEaXJlY3Q+ID8gUHV0S2luZDo6RGlyZWN0IDogUHV0S2lu
ZDo6Tm90RGlyZWN0OwogICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gdGhpcy0+ZWNtYU1vZGUoYnl0
ZWNvZGUpOwotICAgIGJvb2wgaXNEaXJlY3QgPSBzdGQ6OmlzX3NhbWVfdjxPcCwgT3BQdXRCeVZh
bERpcmVjdD47CiAgICAgYXV0byBbIHN0dWJJbmZvLCBzdHViSW5mb0luZGV4IF0gPSBhZGRVbmxp
bmtlZFN0cnVjdHVyZVN0dWJJbmZvKCk7CiAgICAgSklUUHV0QnlWYWxHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBudWxscHRyLCBzdHViSW5mbywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLAotICAg
ICAgICBpc0RpcmVjdCA/IChlY21hTW9kZS5pc1N0cmljdCgpID8gQWNjZXNzVHlwZTo6UHV0QnlW
YWxEaXJlY3RTdHJpY3QgOiBBY2Nlc3NUeXBlOjpQdXRCeVZhbERpcmVjdFNsb3BweSkgOiAoZWNt
YU1vZGUuaXNTdHJpY3QoKSA/IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsU3RyaWN0IDogQWNjZXNzVHlw
ZTo6UHV0QnlWYWxTbG9wcHkpLAotICAgICAgICBSZWdpc3RlclNldEJ1aWxkZXI6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVK
U1IsIHByb2ZpbGVHUFIsIHN0dWJJbmZvR1BSLCBlY21hTW9kZSk7CisgICAgICAgIG51bGxwdHIs
IHN0dWJJbmZvLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlB1dEJ5VmFs
LCBSZWdpc3RlclNldEJ1aWxkZXI6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAg
ICBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVKU1IsIHByb2ZpbGVHUFIsIHN0dWJJbmZvR1BS
LCBwdXRLaW5kLCBlY21hTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKICAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQocHJvcGVydHkpKQogICAgICAgICBzdHViSW5mby0+cHJv
cGVydHlJc0ludDMyID0gdHJ1ZTsKICAgICBnZW4ubV91bmxpbmtlZFN0dWJJbmZvQ29uc3RhbnRJ
bmRleCA9IHN0dWJJbmZvSW5kZXg7CkBAIC00ODksOCArNDg3LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAKICAgICBhdXRvIFsgc3R1YkluZm8sIHN0dWJJbmZvSW5kZXggXSA9IGFkZFVubGlua2Vk
U3RydWN0dXJlU3R1YkluZm8oKTsKICAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgIG51bGxwdHIsIHN0dWJJbmZvLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIGJ5dGVjb2Rl
Lm1fcHV0S2luZC5pc0RlZmluZSgpID8gQWNjZXNzVHlwZTo6RGVmaW5lUHJpdmF0ZU5hbWVCeVZh
bCA6IEFjY2Vzc1R5cGU6OlNldFByaXZhdGVOYW1lQnlWYWwsIFJlZ2lzdGVyU2V0QnVpbGRlcjo6
c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGJhc2VKU1IsIHByb3BlcnR5SlNS
LCB2YWx1ZUpTUiwgSW52YWxpZEdQUlJlZywgc3R1YkluZm9HUFIsIEVDTUFNb2RlOjpzbG9wcHko
KSk7CisgICAgICAgIG51bGxwdHIsIHN0dWJJbmZvLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVOYW1lLCBSZWdpc3RlclNldEJ1aWxkZXI6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBiYXNlSlNSLCBwcm9wZXJ0eUpTUiwgdmFsdWVK
U1IsIEludmFsaWRHUFJSZWcsIHN0dWJJbmZvR1BSLCBQdXRLaW5kOjpEaXJlY3QsIEVDTUFNb2Rl
OjpzbG9wcHkoKSwgYnl0ZWNvZGUubV9wdXRLaW5kKTsKICAgICBnZW4ubV91bmxpbmtlZFN0dWJJ
bmZvQ29uc3RhbnRJbmRleCA9IHN0dWJJbmZvSW5kZXg7CiAKICAgICBnZW4uZ2VuZXJhdGVCYXNl
bGluZURhdGFJQ0Zhc3RQYXRoKCp0aGlzLCBzdHViSW5mb0luZGV4LCBzdHViSW5mb0dQUik7CkBA
IC0xMTU3LDcgKzExNTUsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSlNJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNl
VlJlZyA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWVWUmVnID0g
Ynl0ZWNvZGUubV92YWx1ZTsKICAgICBib29sIGRpcmVjdCA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNE
aXJlY3QoKTsKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IHRoaXMtPmVjbWFNb2RlKGJ5dGVjb2Rl
KTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV91bmxpbmtlZENvZGVCbG9jay0+
aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSk7CiAKICAgICAvLyBJbiBvcmRlciB0byBi
ZSBhYmxlIHRvIHBhdGNoIGJvdGggdGhlIFN0cnVjdHVyZSwgYW5kIHRoZSBvYmplY3Qgb2Zmc2V0
LCB3ZSBzdG9yZSBvbmUgcG9pbnRlciwKQEAgLTExNzcsNyArMTE3NCw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG51bGxwdHIsIHN0dWJJbmZv
LCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0QnVpbGRlcjo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX3VubGlua2VkQ29kZUJsb2NrLCAqaWRlbnQp
LAotICAgICAgICBiYXNlSlNSLCB2YWx1ZUpTUiwgc3R1YkluZm9HUFIsIHNjcmF0Y2hHUFIsIGVj
bWFNb2RlLCBkaXJlY3QgPyAoZWNtYU1vZGUuaXNTdHJpY3QoKSA/IEFjY2Vzc1R5cGU6OlB1dEJ5
SWREaXJlY3RTdHJpY3QgOiBBY2Nlc3NUeXBlOjpQdXRCeUlkRGlyZWN0U2xvcHB5KSA6IChlY21h
TW9kZS5pc1N0cmljdCgpID8gQWNjZXNzVHlwZTo6UHV0QnlJZFN0cmljdCA6IEFjY2Vzc1R5cGU6
OlB1dEJ5SWRTbG9wcHkpKTsKKyAgICAgICAgYmFzZUpTUiwgdmFsdWVKU1IsIHN0dWJJbmZvR1BS
LCBzY3JhdGNoR1BSLCBlY21hTW9kZShieXRlY29kZSksCisgICAgICAgIGRpcmVjdCA/IFB1dEtp
bmQ6OkRpcmVjdCA6IFB1dEtpbmQ6Ok5vdERpcmVjdCk7CiAgICAgZ2VuLm1fdW5saW5rZWRTdHVi
SW5mb0NvbnN0YW50SW5kZXggPSBzdHViSW5mb0luZGV4OwogCiAgICAgZ2VuLmdlbmVyYXRlQmFz
ZWxpbmVEYXRhSUNGYXN0UGF0aCgqdGhpcywgc3R1YkluZm9JbmRleCwgc3R1YkluZm9HUFIpOwpA
QCAtMjU3Myw4ICsyNTcxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZW51bWVyYXRvcl9wdXRfYnlf
dmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIFsg
c3R1YkluZm8sIHN0dWJJbmZvSW5kZXggXSA9IGFkZFVubGlua2VkU3RydWN0dXJlU3R1YkluZm8o
KTsKICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CiAgICAgSklU
UHV0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICBudWxscHRyLCBzdHViSW5mbywgSklUVHlw
ZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBlY21hTW9kZS5pc1N0cmljdCgpID8gQWNjZXNzVHlwZTo6UHV0
QnlWYWxTdHJpY3QgOiBBY2Nlc3NUeXBlOjpQdXRCeVZhbFNsb3BweSwgUmVnaXN0ZXJTZXRCdWls
ZGVyOjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBw
cm9maWxlR1BSLCBzdHViSW5mb0dQUiwgZWNtYU1vZGUpOworICAgICAgICBudWxscHRyLCBzdHVi
SW5mbywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgUmVn
aXN0ZXJTZXRCdWlsZGVyOjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBwcm9maWxlR1BSLCBzdHViSW5mb0dQUiwgUHV0S2luZDo6Tm90RGlyZWN0LCBl
Y21hTW9kZSwgUHJpdmF0ZUZpZWxkUHV0S2luZDo6bm9uZSgpKTsKICAgICBnZW4ubV91bmxpbmtl
ZFN0dWJJbmZvQ29uc3RhbnRJbmRleCA9IHN0dWJJbmZvSW5kZXg7CiAgICAgc3R1YkluZm8tPmlz
RW51bWVyYXRvciA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcAppbmRleCAwOTA5MjRkMWUzN2IuLjQyNzJmNDA4MjQ2OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTE3OCw3ICsx
MTc4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9tYXAuZW5jb2RlKGVuY29kZXIsIHN5
bWJvbFRhYmxlLm1fbWFwKTsKICAgICAgICAgbV9tYXhTY29wZU9mZnNldCA9IHN5bWJvbFRhYmxl
Lm1fbWF4U2NvcGVPZmZzZXQ7Ci0gICAgICAgIG1fdXNlc1Nsb3BweUV2YWwgPSBzeW1ib2xUYWJs
ZS5tX3VzZXNTbG9wcHlFdmFsOworICAgICAgICBtX3VzZXNOb25TdHJpY3RFdmFsID0gc3ltYm9s
VGFibGUubV91c2VzTm9uU3RyaWN0RXZhbDsKICAgICAgICAgbV9uZXN0ZWRMZXhpY2FsU2NvcGUg
PSBzeW1ib2xUYWJsZS5tX25lc3RlZExleGljYWxTY29wZTsKICAgICAgICAgbV9zY29wZVR5cGUg
PSBzeW1ib2xUYWJsZS5tX3Njb3BlVHlwZTsKICAgICAgICAgbV9hcmd1bWVudHMuZW5jb2RlKGVu
Y29kZXIsIHN5bWJvbFRhYmxlLm1fYXJndW1lbnRzLmdldCgpKTsKQEAgLTExOTAsNyArMTE5MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gU3ltYm9sVGFi
bGU6OmNyZWF0ZShkZWNvZGVyLnZtKCkpOwogICAgICAgICBtX21hcC5kZWNvZGUoZGVjb2Rlciwg
c3ltYm9sVGFibGUtPm1fbWFwKTsKICAgICAgICAgc3ltYm9sVGFibGUtPm1fbWF4U2NvcGVPZmZz
ZXQgPSBtX21heFNjb3BlT2Zmc2V0OwotICAgICAgICBzeW1ib2xUYWJsZS0+bV91c2VzU2xvcHB5
RXZhbCA9IG1fdXNlc1Nsb3BweUV2YWw7CisgICAgICAgIHN5bWJvbFRhYmxlLT5tX3VzZXNOb25T
dHJpY3RFdmFsID0gbV91c2VzTm9uU3RyaWN0RXZhbDsKICAgICAgICAgc3ltYm9sVGFibGUtPm1f
bmVzdGVkTGV4aWNhbFNjb3BlID0gbV9uZXN0ZWRMZXhpY2FsU2NvcGU7CiAgICAgICAgIHN5bWJv
bFRhYmxlLT5tX3Njb3BlVHlwZSA9IG1fc2NvcGVUeXBlOwogICAgICAgICBTY29wZWRBcmd1bWVu
dHNUYWJsZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rl
cik7CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENhY2hlZEhh
c2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgQ2FjaGVkU3ltYm9s
VGFibGVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4sIFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJhaXRzPiBtX21hcDsKICAgICBTY29w
ZU9mZnNldCBtX21heFNjb3BlT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fdXNlc1Nsb3BweUV2YWwg
OiAxOworICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOwogICAgIHVuc2lnbmVk
IG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7
CiAgICAgQ2FjaGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcAppbmRleCA4MzhhZWM0MWU2YzEuLmU1OWQzZjFhMGQ5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcApAQCAtNDk0LDEwICs0OTQsMTAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGdsb2JhbEZ1bmNFdmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW0KIAogICAgIEpTVmFsdWUgcGFyc2VkT2JqZWN0OwogICAgIGlmIChzLmlzOEJpdCgpKSB7Ci0g
ICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihnbG9iYWxPYmplY3QsIHMuY2hh
cmFjdGVyczgoKSwgcy5sZW5ndGgoKSwgU2xvcHB5SlNPTiwgbnVsbHB0cik7CisgICAgICAgIExp
dGVyYWxQYXJzZXI8TENoYXI+IHByZXBhcnNlcihnbG9iYWxPYmplY3QsIHMuY2hhcmFjdGVyczgo
KSwgcy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwgbnVsbHB0cik7CiAgICAgICAgIHBhcnNlZE9i
amVjdCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoZ2xvYmFsT2JqZWN0LCBzLmNoYXJhY3Rl
cnMxNigpLCBzLmxlbmd0aCgpLCBTbG9wcHlKU09OLCBudWxscHRyKTsKKyAgICAgICAgTGl0ZXJh
bFBhcnNlcjxVQ2hhcj4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwgcy5jaGFyYWN0ZXJzMTYoKSwg
cy5sZW5ndGgoKSwgTm9uU3RyaWN0SlNPTiwgbnVsbHB0cik7CiAgICAgICAgIHBhcnNlZE9iamVj
dCA9IHByZXBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICB9CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAppbmRleCBkODgzOGQ4ZWQyZmUuLmNlNmQ3NDEyOTNmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xMDAwLDEwICsxMDAwLDYg
QEAgcHVibGljOgogICAgIGJvb2wgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoVk0mLCBTdHJ1
Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgZ2V0Tm9uSW5k
ZXhQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGJvb2wgcHV0SW5saW5l
U2xvdyhKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGJvb2wgcHV0SW5saW5l
RmFzdFJlcGxhY2luZ1N0YXRpY1Byb3BlcnR5SWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIGJvb2wgcHV0SW5saW5l
RmFzdChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7Ci0KIHByb3RlY3RlZDoKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQpAQCAtMTE2MCw2ICsxMTU2LDExIEBAIHByaXZhdGU6CiAgICAgQVND
SUlMaXRlcmFsIHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IE5FVkVSX0lOTElORSBBU0NJSUxpdGVyYWwgcHV0RGlyZWN0VG9EaWN0aW9uYXJ5V2l0aG91dEV4
dGVuc2liaWxpdHkoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGJvb2wgcHV0SW5saW5lU2xv
dyhKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGJvb2wgcHV0SW5saW5lRmFz
dFJlcGxhY2luZ1N0YXRpY1Byb3BlcnR5SWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgcHV0SW5saW5lRmFz
dChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qo
Vk0mLCBQcm9wZXJ0eVNsb3QmLCBKU0NlbGwqLCB1bnNpZ25lZCwgUHJvcGVydHlPZmZzZXQpOwog
ICAgIHZvaWQgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBDdXN0
b21HZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCwgU3RydWN0dXJlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggYjFmYWRlOTgyMmQ4Li5iZWRlYTkyZDg1
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC05OSw3
ICs5OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSwKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmIChzeW1ib2xUYWJsZS0+dXNlc1Nsb3BweUV2YWwoKSkKKyAgICAgICAg
aWYgKHN5bWJvbFRhYmxlLT51c2VzTm9uU3RyaWN0RXZhbCgpKQogICAgICAgICAgICAgbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRl
eCAyMzc3YTJkN2UxMDkuLmVhMDBjZTc0YzdmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKQEAgLTgzMSw3ICs4MzEsNyBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0UGFyc2VyVG9rZW5TdHJpbmc8VUNoYXI+KExpdGVyYWxQYXJzZXJUb2tl
bjxVQ2hhcj4mIHRva2VuLAogICAgIHRva2VuLnN0cmluZ1N0YXJ0MTYgPSBzdHJpbmc7CiB9CiAK
LWVudW0gY2xhc3MgU2FmZVN0cmluZ0NoYXJhY3RlclNldCB7IFN0cmljdCwgU2xvcHB5IH07Citl
bnVtIGNsYXNzIFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQgeyBTdHJpY3QsIE5vblN0cmljdCB9Owog
CiB0ZW1wbGF0ZSA8U2FmZVN0cmluZ0NoYXJhY3RlclNldCBzZXQ+CiBzdGF0aWMgQUxXQVlTX0lO
TElORSBib29sIGlzU2FmZVN0cmluZ0NoYXJhY3RlcihMQ2hhciBjLCBMQ2hhciB0ZXJtaW5hdG9y
KQpAQCAtODY0LDcgKzg2NCw3IEBAIEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJz
ZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4U3RyaW5nKExpdGVyYWxQYXJzZXJUCiAgICAgICAgIHdo
aWxlIChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0NoYXJhY3RlcjxTYWZlU3RyaW5nQ2hh
cmFjdGVyU2V0OjpTdHJpY3Q+KCptX3B0ciwgJyInKSkKICAgICAgICAgICAgICsrbV9wdHI7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNTYWZlU3RyaW5n
Q2hhcmFjdGVyPFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQ6OlNsb3BweT4oKm1fcHRyLCB0ZXJtaW5h
dG9yKSkKKyAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNTYWZlU3RyaW5nQ2hhcmFj
dGVyPFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQ6Ok5vblN0cmljdD4oKm1fcHRyLCB0ZXJtaW5hdG9y
KSkKICAgICAgICAgICAgICsrbV9wdHI7CiAgICAgfQogCkBAIC04ODgsNyArODg4LDcgQEAgVG9r
ZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4U3RyaW5nU2xvdyhMaXRl
cmFsUGFyc2VyVG9rZW48Q2hhclQKICAgICAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYm
IGlzU2FmZVN0cmluZ0NoYXJhY3RlcjxTYWZlU3RyaW5nQ2hhcmFjdGVyU2V0OjpTdHJpY3Q+KCpt
X3B0ciwgdGVybWluYXRvcikpCiAgICAgICAgICAgICAgICAgKyttX3B0cjsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0No
YXJhY3RlcjxTYWZlU3RyaW5nQ2hhcmFjdGVyU2V0OjpTbG9wcHk+KCptX3B0ciwgdGVybWluYXRv
cikpCisgICAgICAgICAgICB3aGlsZSAobV9wdHIgPCBtX2VuZCAmJiBpc1NhZmVTdHJpbmdDaGFy
YWN0ZXI8U2FmZVN0cmluZ0NoYXJhY3RlclNldDo6Tm9uU3RyaWN0PigqbV9wdHIsIHRlcm1pbmF0
b3IpKQogICAgICAgICAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIH0KIApAQCAtODk2LDcgKzg5
Niw3IEBAIFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleFN0cmlu
Z1Nsb3coTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUCiAgICAgICAgICAgICBtX2J1aWxkZXIuYXBw
ZW5kQ2hhcmFjdGVycyhydW5TdGFydCwgbV9wdHIgLSBydW5TdGFydCk7CiAKIHNsb3dQYXRoQmVn
aW46Ci0gICAgICAgIGlmICgobV9tb2RlICE9IFNsb3BweUpTT04pICYmIG1fcHRyIDwgbV9lbmQg
JiYgKm1fcHRyID09ICdcXCcpIHsKKyAgICAgICAgaWYgKChtX21vZGUgIT0gTm9uU3RyaWN0SlNP
TikgJiYgbV9wdHIgPCBtX2VuZCAmJiAqbV9wdHIgPT0gJ1xcJykgewogICAgICAgICAgICAgaWYg
KG1fYnVpbGRlci5pc0VtcHR5KCkgJiYgcnVuU3RhcnQgPCBtX3B0cikKICAgICAgICAgICAgICAg
ICBtX2J1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhydW5TdGFydCwgbV9wdHIgLSBydW5TdGFydCk7
CiAgICAgICAgICAgICArK21fcHRyOwpAQCAtOTYzLDcgKzk2Myw3IEBAIHNsb3dQYXRoQmVnaW46
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0gd2hpbGUgKChtX21vZGUgIT0gU2xvcHB5SlNPTikgJiYgbV9wdHIgIT0g
cnVuU3RhcnQgJiYgKG1fcHRyIDwgbV9lbmQpICYmICptX3B0ciAhPSB0ZXJtaW5hdG9yKTsKKyAg
ICB9IHdoaWxlICgobV9tb2RlICE9IE5vblN0cmljdEpTT04pICYmIG1fcHRyICE9IHJ1blN0YXJ0
ICYmIChtX3B0ciA8IG1fZW5kKSAmJiAqbV9wdHIgIT0gdGVybWluYXRvcik7CiAKICAgICBpZiAo
bV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRyICE9IHRlcm1pbmF0b3IpIHsKICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyJfczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAppbmRleCBkOWY5NTI2YjgxZTguLjU1MmVh
N2M1MzU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJz
ZXIuaApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBQYXJzZXJN
b2RlIDogdWludDhfdCB7IFN0cmljdEpTT04sIFNsb3BweUpTT04sIEpTT05QIH07CitlbnVtIFBh
cnNlck1vZGUgOiB1aW50OF90IHsgU3RyaWN0SlNPTiwgTm9uU3RyaWN0SlNPTiwgSlNPTlAgfTsK
IAogZW51bSBKU09OUFBhdGhFbnRyeVR5cGUgOiB1aW50OF90IHsKICAgICBKU09OUFBhdGhFbnRy
eVR5cGVEZWNsYXJlVmFyLCAvLyB2YXIgcGF0aEVudHJ5TmFtZSA9IEpTT04KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01lZ2Ftb3JwaGljQ2FjaGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWVnYW1vcnBoaWNDYWNoZS5jcHAKaW5kZXggYWQ2
NThjMjZhODliLi41NGY1MmU4ZDJlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01lZ2Ftb3JwaGljQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01lZ2Ftb3JwaGljQ2FjaGUuY3BwCkBAIC00MiwxNCArNDIsNiBAQCB2b2lkIE1l
Z2Ftb3JwaGljQ2FjaGU6OmFnZShDb2xsZWN0aW9uU2NvcGUgY29sbGVjdGlvblNjb3BlKQogICAg
ICAgICAgICAgZW50cnkubV91aWQgPSBudWxscHRyOwogICAgICAgICAgICAgZW50cnkubV9lcG9j
aCA9IGludmFsaWRFcG9jaDsKICAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bV9zdG9yZUNhY2hlUHJpbWFyeUVudHJpZXMpIHsKLSAgICAgICAgICAgIGVudHJ5Lm1fdWlkID0g
bnVsbHB0cjsKLSAgICAgICAgICAgIGVudHJ5Lm1fZXBvY2ggPSBpbnZhbGlkRXBvY2g7Ci0gICAg
ICAgIH0KLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fc3RvcmVDYWNoZVNlY29uZGFyeUVu
dHJpZXMpIHsKLSAgICAgICAgICAgIGVudHJ5Lm1fdWlkID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IGVudHJ5Lm1fZXBvY2ggPSBpbnZhbGlkRXBvY2g7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKG1f
ZXBvY2ggPT0gaW52YWxpZEVwb2NoKQogICAgICAgICAgICAgbV9lcG9jaCA9IDE7CiAgICAgfQpA
QCAtNjEsMTAgKzUzLDYgQEAgdm9pZCBNZWdhbW9ycGhpY0NhY2hlOjpjbGVhckVudHJpZXMoKQog
ICAgICAgICBlbnRyeS5tX2Vwb2NoID0gaW52YWxpZEVwb2NoOwogICAgIGZvciAoYXV0byYgZW50
cnkgOiBtX3NlY29uZGFyeUVudHJpZXMpCiAgICAgICAgIGVudHJ5Lm1fZXBvY2ggPSBpbnZhbGlk
RXBvY2g7Ci0gICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fc3RvcmVDYWNoZVByaW1hcnlFbnRyaWVz
KQotICAgICAgICBlbnRyeS5tX2Vwb2NoID0gaW52YWxpZEVwb2NoOwotICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX3N0b3JlQ2FjaGVTZWNvbmRhcnlFbnRyaWVzKQotICAgICAgICBlbnRyeS5tX2Vw
b2NoID0gaW52YWxpZEVwb2NoOwogICAgIG1fZXBvY2ggPSAxOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NZWdhbW9ycGhpY0NhY2hlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NZWdhbW9ycGhpY0NhY2hlLmgKaW5kZXggMWNiZWJlMzNm
MzRhLi4xMjQ3ZjQyNDVhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01lZ2Ftb3JwaGljQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NZWdhbW9ycGhpY0NhY2hlLmgKQEAgLTQyLDEzICs0Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIHVpbnQzMl90IHByaW1hcnlNYXNrID0gcHJpbWFyeVNpemUgLSAxOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc2Vjb25kYXJ5TWFzayA9IHNlY29uZGFyeVNpemUg
LSAxOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBzdG9yZUNhY2hlUHJpbWFyeVNp
emUgPSAyMDQ4OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc3RvcmVDYWNoZVNlY29u
ZGFyeVNpemUgPSA1MTI7Ci0gICAgc3RhdGljX2Fzc2VydChoYXNPbmVCaXRTZXQoc3RvcmVDYWNo
ZVByaW1hcnlTaXplKSwgInNpemUgc2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvLiIpOwotICAgIHN0
YXRpY19hc3NlcnQoaGFzT25lQml0U2V0KHN0b3JlQ2FjaGVTZWNvbmRhcnlTaXplKSwgInNpemUg
c2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvLiIpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc3RvcmVDYWNoZVByaW1hcnlNYXNrID0gc3RvcmVDYWNoZVByaW1hcnlTaXplIC0gMTsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHN0b3JlQ2FjaGVTZWNvbmRhcnlNYXNrID0gc3Rv
cmVDYWNoZVNlY29uZGFyeVNpemUgLSAxOwotCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZf
dCBpbnZhbGlkRXBvY2ggPSAwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQg
bWF4T2Zmc2V0ID0gVUlOVDE2X01BWDsKIApAQCAtODQsMzMgKzc3LDggQEAgcHVibGljOgogICAg
ICAgICBKU0NlbGwqIG1faG9sZGVyIHsgbnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBzdHJ1Y3Qg
U3RvcmVFbnRyeSB7Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZVaWQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RvcmVFbnRyeSwgbV91aWQpOyB9Ci0gICAgICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZPbGRTdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihTdG9yZUVudHJ5LCBtX29sZFN0cnVjdHVyZUlEKTsgfQotICAgICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mTmV3U3RydWN0dXJlSUQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
U3RvcmVFbnRyeSwgbV9uZXdTdHJ1Y3R1cmVJRCk7IH0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkVwb2NoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0b3JlRW50cnksIG1f
ZXBvY2gpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZPZmZzZXQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RvcmVFbnRyeSwgbV9vZmZzZXQpOyB9Ci0KLSAgICAgICAg
dm9pZCBpbml0KFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlELCBTdHJ1Y3R1cmVJRCBuZXdTdHJ1
Y3R1cmVJRCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdWludDE2X3QgZXBvY2gsIHVpbnQxNl90
IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgbV91aWQgPSB1aWQ7Ci0gICAgICAgICAg
ICBtX29sZFN0cnVjdHVyZUlEID0gb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBtX25ld1N0
cnVjdHVyZUlEID0gbmV3U3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBtX2Vwb2NoID0gZXBvY2g7
Ci0gICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKLSAgICAgICAgfQotCi0gICAgICAgIFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gbV91aWQ7Ci0gICAgICAgIFN0cnVjdHVyZUlEIG1fb2xk
U3RydWN0dXJlSUQgeyB9OwotICAgICAgICBTdHJ1Y3R1cmVJRCBtX25ld1N0cnVjdHVyZUlEIHsg
fTsKLSAgICAgICAgdWludDE2X3QgbV9lcG9jaCB7IGludmFsaWRFcG9jaCB9OwotICAgICAgICB1
aW50MTZfdCBtX29mZnNldCB7IDAgfTsKLSAgICB9OwotCiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlByaW1hcnlFbnRyaWVzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1lZ2Ftb3Jw
aGljQ2FjaGUsIG1fcHJpbWFyeUVudHJpZXMpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZlNlY29uZGFyeUVudHJpZXMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWVnYW1vcnBo
aWNDYWNoZSwgbV9zZWNvbmRhcnlFbnRyaWVzKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZTdG9yZUNhY2hlUHJpbWFyeUVudHJpZXMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
TWVnYW1vcnBoaWNDYWNoZSwgbV9zdG9yZUNhY2hlUHJpbWFyeUVudHJpZXMpOyB9Ci0gICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0b3JlQ2FjaGVTZWNvbmRhcnlFbnRyaWVzKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKE1lZ2Ftb3JwaGljQ2FjaGUsIG1fc3RvcmVDYWNoZVNlY29uZGFy
eUVudHJpZXMpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVwb2NoKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKE1lZ2Ftb3JwaGljQ2FjaGUsIG1fZXBvY2gpOyB9CiAKICAgICBN
ZWdhbW9ycGhpY0NhY2hlKCkgPSBkZWZhdWx0OwpAQCAtMTI2LDEwICs5NCw2IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc3RydWN0dXJlSURIYXNoU2hpZnQzID0g
c3RydWN0dXJlSURIYXNoU2hpZnQxICsgOTsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgc3RydWN0dXJlSURIYXNoU2hpZnQ0ID0gc3RydWN0dXJlSURIYXNoU2hpZnQxICsgMTE7Ci0K
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHN0cnVjdHVyZUlESGFzaFNoaWZ0NSA9IHN0
cnVjdHVyZUlESGFzaFNoaWZ0MSArIDk7Ci0KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50
MzJfdCBwcmltYXJ5SGFzaChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHNpZCA9IGJpdHdpc2VfY2FzdDx1aW50
MzJfdD4oc3RydWN0dXJlSUQpOwpAQCAtMTQyLDE4ICsxMDYsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBrZXkgKyAoa2V5ID4+IHN0cnVjdHVyZUlESGFzaFNoaWZ0Myk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdWludDMyX3Qgc3RvcmVDYWNoZVByaW1hcnlIYXNoKFN0
cnVjdHVyZUlEIHN0cnVjdHVyZUlELCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQotICAgIHsKLSAg
ICAgICAgdWludDMyX3Qgc2lkID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCk7
Ci0gICAgICAgIHJldHVybiAoKHNpZCA+PiBzdHJ1Y3R1cmVJREhhc2hTaGlmdDEpIF4gKHNpZCA+
PiBzdHJ1Y3R1cmVJREhhc2hTaGlmdDQpKSArIHVpZC0+aGFzaCgpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIHVpbnQzMl90IHN0b3JlQ2FjaGVTZWNvbmRhcnlIYXNoKFN0cnVj
dHVyZUlEIHN0cnVjdHVyZUlELCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQotICAgIHsKLSAgICAg
ICAgdWludDMyX3Qga2V5ID0gYml0d2lzZV9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCkgKyBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odWlkKSk7Ci0gICAg
ICAgIHJldHVybiBrZXkgKyAoa2V5ID4+IHN0cnVjdHVyZUlESGFzaFNoaWZ0NSk7Ci0gICAgfQot
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZ2UoQ29sbGVjdGlvblNjb3BlKTsKIAogICAg
IHZvaWQgaW5pdEFzTWlzcyhTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKQEAgLTE3OCwyOCArMTMwLDYgQEAgcHVibGljOgogICAgICAgICBtX3ByaW1hcnlF
bnRyaWVzW3ByaW1hcnlJbmRleF0uaW5pdEFzSGl0KHN0cnVjdHVyZUlELCB1aWQsIG1fZXBvY2gs
IGhvbGRlciwgb2Zmc2V0LCBvd25Qcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0QXNU
cmFuc2l0aW9uKFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlELCBTdHJ1Y3R1cmVJRCBuZXdTdHJ1
Y3R1cmVJRCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgdWludDE2X3Qgb2Zmc2V0KQotICAgIHsK
LSAgICAgICAgdWludDMyX3QgcHJpbWFyeUluZGV4ID0gTWVnYW1vcnBoaWNDYWNoZTo6c3RvcmVD
YWNoZVByaW1hcnlIYXNoKG9sZFN0cnVjdHVyZUlELCB1aWQpICYgc3RvcmVDYWNoZVByaW1hcnlN
YXNrOwotICAgICAgICBhdXRvJiBlbnRyeSA9IG1fc3RvcmVDYWNoZVByaW1hcnlFbnRyaWVzW3By
aW1hcnlJbmRleF07Ci0gICAgICAgIGlmIChlbnRyeS5tX2Vwb2NoID09IG1fZXBvY2gpIHsKLSAg
ICAgICAgICAgIHVpbnQzMl90IHNlY29uZGFyeUluZGV4ID0gTWVnYW1vcnBoaWNDYWNoZTo6c3Rv
cmVDYWNoZVNlY29uZGFyeUhhc2goZW50cnkubV9vbGRTdHJ1Y3R1cmVJRCwgZW50cnkubV91aWQu
Z2V0KCkpICYgc3RvcmVDYWNoZVNlY29uZGFyeU1hc2s7Ci0gICAgICAgICAgICBtX3N0b3JlQ2Fj
aGVTZWNvbmRhcnlFbnRyaWVzW3NlY29uZGFyeUluZGV4XSA9IFdURk1vdmUoZW50cnkpOwotICAg
ICAgICB9Ci0gICAgICAgIG1fc3RvcmVDYWNoZVByaW1hcnlFbnRyaWVzW3ByaW1hcnlJbmRleF0u
aW5pdChvbGRTdHJ1Y3R1cmVJRCwgbmV3U3RydWN0dXJlSUQsIHVpZCwgbV9lcG9jaCwgb2Zmc2V0
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGluaXRBc1JlcGxhY2UoU3RydWN0dXJlSUQgc3RydWN0dXJl
SUQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIHVpbnQxNl90IG9mZnNldCkKLSAgICB7Ci0gICAg
ICAgIHVpbnQzMl90IHByaW1hcnlJbmRleCA9IE1lZ2Ftb3JwaGljQ2FjaGU6OnN0b3JlQ2FjaGVQ
cmltYXJ5SGFzaChzdHJ1Y3R1cmVJRCwgdWlkKSAmIHN0b3JlQ2FjaGVQcmltYXJ5TWFzazsKLSAg
ICAgICAgYXV0byYgZW50cnkgPSBtX3N0b3JlQ2FjaGVQcmltYXJ5RW50cmllc1twcmltYXJ5SW5k
ZXhdOwotICAgICAgICBpZiAoZW50cnkubV9lcG9jaCA9PSBtX2Vwb2NoKSB7Ci0gICAgICAgICAg
ICB1aW50MzJfdCBzZWNvbmRhcnlJbmRleCA9IE1lZ2Ftb3JwaGljQ2FjaGU6OnN0b3JlQ2FjaGVT
ZWNvbmRhcnlIYXNoKGVudHJ5Lm1fb2xkU3RydWN0dXJlSUQsIGVudHJ5Lm1fdWlkLmdldCgpKSAm
IHN0b3JlQ2FjaGVTZWNvbmRhcnlNYXNrOwotICAgICAgICAgICAgbV9zdG9yZUNhY2hlU2Vjb25k
YXJ5RW50cmllc1tzZWNvbmRhcnlJbmRleF0gPSBXVEZNb3ZlKGVudHJ5KTsKLSAgICAgICAgfQot
ICAgICAgICBtX3N0b3JlQ2FjaGVQcmltYXJ5RW50cmllc1twcmltYXJ5SW5kZXhdLmluaXQoc3Ry
dWN0dXJlSUQsIHN0cnVjdHVyZUlELCB1aWQsIG1fZXBvY2gsIG9mZnNldCk7Ci0gICAgfQotCiAg
ICAgdWludDE2X3QgZXBvY2goKSBjb25zdCB7IHJldHVybiBtX2Vwb2NoOyB9CiAKICAgICB2b2lk
IGJ1bXBFcG9jaCgpCkBAIC0yMTQsOCArMTQ0LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6YXJy
YXk8RW50cnksIHByaW1hcnlTaXplPiBtX3ByaW1hcnlFbnRyaWVzIHsgfTsKICAgICBzdGQ6OmFy
cmF5PEVudHJ5LCBzZWNvbmRhcnlTaXplPiBtX3NlY29uZGFyeUVudHJpZXMgeyB9OwotICAgIHN0
ZDo6YXJyYXk8U3RvcmVFbnRyeSwgc3RvcmVDYWNoZVByaW1hcnlTaXplPiBtX3N0b3JlQ2FjaGVQ
cmltYXJ5RW50cmllcyB7IH07Ci0gICAgc3RkOjphcnJheTxTdG9yZUVudHJ5LCBzdG9yZUNhY2hl
U2Vjb25kYXJ5U2l6ZT4gbV9zdG9yZUNhY2hlU2Vjb25kYXJ5RW50cmllcyB7IH07CiAgICAgdWlu
dDE2X3QgbV9lcG9jaCB7IDEgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCmluZGV4IGFmNzJhYjI0N2RmMi4uYzE5OGYwMjY0OTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAg
LTMwLDcgKzMwLDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFJl
Z0V4cE9iamVjdCk7CiBjb25zdCBDbGFzc0luZm8gUmVnRXhwT2JqZWN0OjpzX2luZm8gPSB7ICJS
ZWdFeHAiX3MsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoUmVnRXhwT2JqZWN0KSB9OwogCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihyZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhTdHJpY3QpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIocmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U2xvcHB5KTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdCk7
CiAKIFJlZ0V4cE9iamVjdDo6UmVnRXhwT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZ0V4cCogcmVnRXhwLCBib29sIGFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCkKICAgICA6
IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIocmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbAogICAgIHJldHVybiBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUodmFsdWUpLCB0cnVlKTsKIH0KIAotSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFNsb3BweSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIFBy
b3BlcnR5TmFtZSkpCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIocmVnRXhwT2JqZWN0U2V0TGFz
dEluZGV4Tm9uU3RyaWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsK
ICAgICByZXR1cm4ganNDYXN0PFJlZ0V4cE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKS0+c2V0TGFzdEluZGV4KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwg
ZmFsc2UpOwogfQpAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgUmVnRXhwT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBzbG90LnNl
dEN1c3RvbVZhbHVlKHRoaXNPYmplY3QsIHNsb3QuaXNTdHJpY3RNb2RlKCkKICAgICAgICAgICAg
ID8gcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0Ci0gICAgICAgICAgICA6IHJlZ0V4cE9i
amVjdFNldExhc3RJbmRleFNsb3BweSk7CisgICAgICAgICAgICA6IHJlZ0V4cE9iamVjdFNldExh
c3RJbmRleE5vblN0cmljdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDJhMmMxNmZlMmY3OS4uNzBhNmY3YThiNjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIFN5bWJvbFRhYmxlRW50cnk6OkZhdEVudHJ5KiBTeW1ib2xUYWJsZUVudHJ5Ojpp
bmZsYXRlU2xvdygpCiAKIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZShWTSYgdm0pCiAgICAgOiBK
U0NlbGwodm0sIHZtLnN5bWJvbFRhYmxlU3RydWN0dXJlLmdldCgpKQotICAgICwgbV91c2VzU2xv
cHB5RXZhbChmYWxzZSkKKyAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCiAgICAgLCBt
X25lc3RlZExleGljYWxTY29wZShmYWxzZSkKICAgICAsIG1fc2NvcGVUeXBlKFZhclNjb3BlKQog
ewpAQCAtMTQxLDcgKzE0MSw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29w
ZVBhcnQoVk0mIHZtKQogewogICAgIFN5bWJvbFRhYmxlKiByZXN1bHQgPSBTeW1ib2xUYWJsZTo6
Y3JlYXRlKHZtKTsKICAgICAKLSAgICByZXN1bHQtPm1fdXNlc1Nsb3BweUV2YWwgPSBtX3VzZXNT
bG9wcHlFdmFsOworICAgIHJlc3VsdC0+bV91c2VzTm9uU3RyaWN0RXZhbCA9IG1fdXNlc05vblN0
cmljdEV2YWw7CiAgICAgcmVzdWx0LT5tX25lc3RlZExleGljYWxTY29wZSA9IG1fbmVzdGVkTGV4
aWNhbFNjb3BlOwogICAgIHJlc3VsdC0+bV9zY29wZVR5cGUgPSBtX3Njb3BlVHlwZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggZWQzMmQxZWRm
Mzc2Li44MzA3OWFhYzg2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaApAQCAtNzE1LDggKzcxNSw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8VHlwZVNl
dD4gZ2xvYmFsVHlwZVNldEZvck9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWYXJP
ZmZzZXQsIFZNJik7CiAgICAgUmVmUHRyPFR5cGVTZXQ+IGdsb2JhbFR5cGVTZXRGb3JWYXJpYWJs
ZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBWTSYp
OwogCi0gICAgYm9vbCB1c2VzU2xvcHB5RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1Nsb3Bw
eUV2YWw7IH0KLSAgICB2b2lkIHNldFVzZXNTbG9wcHlFdmFsKGJvb2wgdXNlc1Nsb3BweUV2YWwp
IHsgbV91c2VzU2xvcHB5RXZhbCA9IHVzZXNTbG9wcHlFdmFsOyB9CisgICAgYm9vbCB1c2VzTm9u
U3RyaWN0RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc05vblN0cmljdEV2YWw7IH0KKyAgICB2
b2lkIHNldFVzZXNOb25TdHJpY3RFdmFsKGJvb2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91c2Vz
Tm9uU3RyaWN0RXZhbCA9IHVzZXNOb25TdHJpY3RFdmFsOyB9CiAKICAgICBib29sIGlzTmVzdGVk
TGV4aWNhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9uZXN0ZWRMZXhpY2FsU2NvcGU7IH0KICAg
ICB2b2lkIG1hcmtJc05lc3RlZExleGljYWxTY29wZSgpIHsgQVNTRVJUKHNjb3BlVHlwZSgpID09
IExleGljYWxTY29wZSk7IG1fbmVzdGVkTGV4aWNhbFNjb3BlID0gdHJ1ZTsgfQpAQCAtNzgwLDcg
Kzc4MCw3IEBAIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwog
CiBwcml2YXRlOgotICAgIHVuc2lnbmVkIG1fdXNlc1Nsb3BweUV2YWwgOiAxOworICAgIHVuc2ln
bmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOwogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNh
bFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KICAgICB1bnNpZ25lZCBt
X3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9tZWdhbW9ycGhpYy1zdG9yZS1ieS12YWwuanMgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9tZWdhbW9ycGhpYy1zdG9yZS1ieS12YWwuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGZjMDIzNDhlOWE2OC4uMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL21lZ2Ftb3JwaGljLXN0b3JlLWJ5LXZhbC5qcworKysgL2Rldi9udWxsCkBAIC0x
LDE5ICswLDAgQEAKLS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMi
ICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKLShmdW5jdGlvbigpIHsKLSAgICB2
YXIgYXJyYXkgPSBbXTsKLSAgICB2YXIgbmFtZXMgPSBbJ2EnLCAnYicsICdjJywgJ2QnLCAnZScs
ICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJywgJ3AnXTsK
LSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgICAgIHZhciBvID0ge307
Ci0gICAgICAgIG9bImkiICsgaV0gPSBpOwotICAgICAgICBvW25hbWVzW2kgJiAxNV1dID0gNDI7
Ci0gICAgICAgIGFycmF5LnB1c2gobyk7Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpIHsKLSAgICAgICAgdmFyIG5hbWUgPSBuYW1lc1tpICYgMTVdOwotICAg
ICAgICB2YXIgaW5zdGFuY2UgPSBhcnJheVtpICUgYXJyYXkubGVuZ3RoXTsKLSAgICAgICAgaW5z
dGFuY2VbbmFtZV0gPSBpOwotICAgICAgICBpZiAoaW5zdGFuY2VbbmFtZV0gIT0gaSkKLSAgICAg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKLSAgICB9Ci19KSgp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWVnYW1vcnBoaWMtc3RvcmUu
anMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tZWdhbW9ycGhpYy1zdG9yZS5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU0YjY2ZDE4ZjY1Li4wMDAwMDAwMDAwMDAKLS0tIGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvbWVnYW1vcnBoaWMtc3RvcmUuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxNyArMCwwIEBACi0vL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNl
cmllcyAzIiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5Ci0oZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGFycmF5ID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkg
ewotICAgICAgICB2YXIgbyA9IHt9OwotICAgICAgICBvWyJpIiArIGldID0gaTsKLSAgICAgICAg
by5mID0gNDI7Ci0gICAgICAgIGFycmF5LnB1c2gobyk7Ci0gICAgfQotCi0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKLSAgICAgICAgdmFyIGluc3RhbmNlID0gYXJyYXlb
aSAlIGFycmF5Lmxlbmd0aF07Ci0gICAgICAgIGluc3RhbmNlLmYgPSBpOwotICAgICAgICBpZiAo
aW5zdGFuY2UuZiAhPSBpKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgcmVzdWx0OwotICAgIH0KLX0pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQt
YnktaWQtbWVnYW1vcnBoaWMtaGF2ZS1hLWJhZC10aW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0
LWJ5LWlkLW1lZ2Ftb3JwaGljLWhhdmUtYS1iYWQtdGltZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2VjYWQ5ZWIyNDAyLi4wMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJl
c3MvcHV0LWJ5LWlkLW1lZ2Ftb3JwaGljLWhhdmUtYS1iYWQtdGltZS5qcworKysgL2Rldi9udWxs
CkBAIC0xLDQ0ICswLDAgQEAKLS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2Vy
aWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKLShmdW5jdGlvbigpIHsK
LSAgICB2YXIgYXJyYXkgPSBbXTsKLSAgICB2YXIgYXJyYXkyID0gW107Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgICAgICB2YXIgbyA9IHt9OwotICAgICAgICBvWyJp
IiArIGldID0gaTsKLSAgICAgICAgYXJyYXkucHVzaChvKTsKLSAgICAgICAgdmFyIG8gPSB7fTsK
LSAgICAgICAgb1siaSIgKyBpXSA9IGk7Ci0gICAgICAgIGFycmF5Mi5wdXNoKG8pOwotICAgIH0K
LQotICAgIGZ1bmN0aW9uIHRlc3Qob2JqZWN0LCBpKSB7Ci0gICAgICAgIG9iamVjdC5mID0gaTsK
LSAgICB9Ci0gICAgbm9JbmxpbmUodGVzdCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkgewotICAgICAgICB2YXIgaW5zdGFuY2UgPSBhcnJheVtpICUgYXJyYXkubGVu
Z3RoXTsKLSAgICAgICAgdGVzdChpbnN0YW5jZSwgaSk7Ci0gICAgICAgIGlmIChpbnN0YW5jZS5m
ICE9PSBpKQotICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OwotICAgIH0KLQotICAgIE9iamVjdC5wcm90b3R5cGVbMF0gPSA0MzsKLSAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgJ2YnLCB7Ci0gICAgICAgIGdldCgpIHsgcmV0
dXJuIDQ0OyB9Ci0gICAgfSk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kp
IHsKLSAgICAgICAgdmFyIGluc3RhbmNlID0gYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF07Ci0gICAg
ICAgIHRlc3QoaW5zdGFuY2UsIGkpOwotICAgICAgICBpZiAoaW5zdGFuY2UuZiAhPT0gaSkKLSAg
ICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKLSAgICB9Ci0K
LSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgICAgIHZhciBpbnN0YW5j
ZSA9IGFycmF5MltpICUgYXJyYXkubGVuZ3RoXTsKLSAgICAgICAgdGVzdChpbnN0YW5jZSwgaSk7
Ci0gICAgICAgIGlmIChpbnN0YW5jZS5mICE9PSA0NCkKLSAgICAgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKLSAgICB9Ci0KLX0pKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>