<?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>299310</bug_id>
          
          <creation_ts>2025-09-22 13:14:59 -0700</creation_ts>
          <short_desc>REGRESSION(300282@main): JetStream2 / JetStream3 regression</short_desc>
          <delta_ts>2025-09-22 13:20:18 -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>296539</blocked>
    
    <blocked>299254</blocked>
    
    <blocked>299262</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2144947</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-09-22 13:14:59 -0700</bug_when>
    <thetext>https://commits.webkit.org/300282@main introduced a regression:
JetStream2 / JetStream3 regression

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>2144951</commentid>
    <comment_count>1</comment_count>
      <attachid>476827</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-09-22 13:15:23 -0700</bug_when>
    <thetext>Created attachment 476827
REVERT of 300282@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>2144952</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-09-22 13:19:08 -0700</bug_when>
    <thetext>Committed 300340@main (15e5e7dc80b9): &lt;https://commits.webkit.org/300340@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 476827.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2144953</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-09-22 13:20:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/161117606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>476827</attachid>
            <date>2025-09-22 13:15:23 -0700</date>
            <delta_ts>2025-09-22 13:19:20 -0700</delta_ts>
            <desc>REVERT of 300282@main</desc>
            <filename>bug-299310-20250922201523.patch</filename>
            <type>text/plain</type>
            <size>570732</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAyOWJmNzU1YzMwMzc5Y2E0MjFiMDlkMzNhODg5MDgwY2IwYzM4OTA3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBNb24sIDIyIFNlcCAyMDI1IDIwOjE1OjIwICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDMwMDI4MkBtYWluLCAzMDAzMDJAbWFpbiwgYW5kCiAzMDAz
MTFAbWFpbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTMxMAoK
SmV0U3RyZWFtMiAvIEpldFN0cmVhbTMgcmVncmVzc2lvbgoKUmV2ZXJ0ZWQgY2hhbmdlc2V0czoK
CiJNYWtlIExDaGFyIGEgZGlzdGluY3QgdHlwZSBmcm9tIHVpbnQ4X3Qgc28gaXQgY2FuIGltcGx5
IGNoYXJhY3RlciBlbmNvZGluZyBhcyBjaGFyOC8xNi8zMl90IGRvIgpodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2NTM5Cmh0dHBzOi8vY29tbWl0cy53ZWJraXQub3Jn
LzMwMDI4MkBtYWluCgoiUmVuYW1lIExDaGFyIHRvIExhdGluMUNoYXJhY3RlciIKaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTI1NApodHRwczovL2NvbW1pdHMud2Vi
a2l0Lm9yZy8zMDAzMDJAbWFpbgoKIlJFR1JFU1NJT04oMzAwMjgyQG1haW4pOiBGaXggLVdmb3Jt
YXQgd2FybmluZyBpbiBXUEVEaXNwbGF5RFJNLmNwcCIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI5OTI2MgpodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8zMDAzMTFA
bWFpbgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gICAgICAgICB8
ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcCAgIHwg
ICA2ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwICAgICAgfCAg
IDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaCAgICB8ICAg
NiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcCAgIHwgICAy
ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weSAgfCAgIDYg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3h4ZC5wbCAgICAgICAgICB8ICAxOSAr
LS0KIC4uLi9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwICAgICAgICAgICB8ICAgMiAr
LQogLi4uL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAgIHwgICA2ICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggfCAgIDQgKy0K
IC4uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmggICB8ICAgMiArLQog
Li4uL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgIHwgICAyICstCiAu
Li4vZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAgICAgICAgICAgfCAgIDIgKy0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCB8ICAgNiArLQogLi4u
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgICAgICAgICAgICAgIHwgICA3ICstCiAuLi4v
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAgICAgICAgfCAgIDQgKy0KIC4uLi9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgICB8ICAgMiArLQogLi4uL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCAgICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCAgICAgICAgfCAxMDMgKysrKysrLS0tLS0t
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oICAgICAgICAgIHwgIDE4ICst
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgICAyICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oICAgICAgICAgfCAgIDYgKy0K
IC4uLi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCB8ICAgNCArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIHwgICAyICstCiAu
Li4vcnVudGltZS9GdXp6ZXJQcmVkaWN0aW9ucy5jcHAgICAgICAgICAgICAgfCAgIDIgKy0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwICAgICB8ICAxNiArLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oICAgICAgIHwgICA2ICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggICAgfCAgMjQgKy0tCiAuLi4v
cnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAgICB8ICAgMiArLQogLi4uL3J1
bnRpbWUvSW50bER1cmF0aW9uRm9ybWF0LmNwcCAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcCAgfCAgIDIgKy0KIC4uLi9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggICAgICAgICB8ICAgMiArLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgIHwgICAzICstCiAuLi4vcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwICAgICB8ICAgMiArLQogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCAgfCAgIDIgKy0KIC4uLi9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCAgICB8ICAgMiArLQogLi4uL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCAgICAgIHwgICAyICstCiAuLi4vSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwICAgICAgfCAgIDggKy0KIC4uLi9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcCAgICAgICB8ICAxNCArLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgIHwgIDI0ICstLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwICAgIHwgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oICAgICAgfCAgIDYgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oICB8ICAyMiArLS0KIC4uLi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcCB8ICAxNiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgIHwgIDI0ICstLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIHwgICA0ICstCiAuLi4vcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwICAgICAgICAgICAgICAgfCAgIDYgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaCAgICB8ICAgOCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUGFyc2VJbnQuaCAgICAgIHwgICA2ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU5hbWUuaCAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5jcHAgICAgICB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmNwcCAgIHwgICA0ICstCiAuLi4vcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAgICAgICAgICAgICAgICB8ICAgNCArLQogLi4uL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlSW5s
aW5lcy5oICAgICAgICAgIHwgIDEwICstCiAuLi4veWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5q
cyAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRl
cnByZXRlci5jcHAgICB8ICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5oICAgICAgICAgIHwgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFy
c2VyLmggICAgICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2hhc2hlci5w
eSAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgIHwgICA4ICstCiBTb3VyY2UvV1RGL3d0Zi9BU0NJSUNUeXBlLmggICAgICAgICAg
ICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0ICAgICAgICAg
ICAgICAgICB8ICAgMiArLQogU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwICAgICAgICAgICAg
ICAgICAgIHwgIDI0ICstLQogU291cmNlL1dURi93dGYvRGF0ZU1hdGguaCAgICAgICAgICAgICAg
ICAgICAgIHwgICA2ICstCiBTb3VyY2UvV1RGL3d0Zi9GYXN0RmxvYXQuY3BwICAgICAgICAgICAg
ICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XVEYvd3RmL0Zhc3RGbG9hdC5oICAgICAgICAgICAgICAg
ICAgICB8ICAgNCArLQogU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmNwcCAgICAgICAgICAgICAg
ICAgIHwgIDE1ICstCiBTb3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIuaCAgICAgICAgICAgICAgICAg
ICAgfCAgMjIgKy0tCiBTb3VyY2UvV1RGL3d0Zi9JbnQxMjguY3BwICAgICAgICAgICAgICAgICAg
ICAgfCAgIDQgKy0KIFNvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwICAgICAgICAgICAgICAg
ICB8ICAgNSArLQogU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaCAgICAgICAgICAgICAgICAg
IHwgICA1IC0KIFNvdXJjZS9XVEYvd3RmL1NJTURIZWxwZXJzLmggICAgICAgICAgICAgICAgICB8
ICAyNiArLS0tCiBTb3VyY2UvV1RGL3d0Zi9TZXF1ZXN0ZXJlZEFsbG9jYXRvci5jcHAgICAgICAg
fCAgIDIgKy0KIFNvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmggICAgICAgICAgICAgICB8
ICAgMiArLQogU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggICAgICAgICAgICAgICAgIHwg
IDM5ICsrLS0tCiBTb3VyY2UvV1RGL3d0Zi9VUkwuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDQgKy0KIFNvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgICAgICAgICAgICAgICAgICB8
ICAyOSArKy0tCiBTb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaCAgICAgICAgICAgICAgICAgICAg
fCAgMTAgKy0KIFNvdXJjZS9XVEYvd3RmL2NmL0NGVVJMRXh0cmFzLmNwcCAgICAgICAgICAgICB8
ICAgNiArLQogU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwICAgICAgICAgICAgICAgICAgIHwg
ICAyICstCiBTb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSAgICAgICAgICAgfCAg
IDIgKy0KIFNvdXJjZS9XVEYvd3RmL2NvY29hL1NwYW5Db2NvYS5oICAgICAgICAgICAgICB8ICAy
MCArLS0KIC4uLi9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwICB8ICAg
NCArLQogLi4uL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCAgIHwgICAy
ICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaCAgICAgICAgICAgfCAgNDAg
KysrLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggICAgICAgICAgICB8ICAg
NiArLQogU291cmNlL1dURi93dGYvdGV4dC9BZGFwdGl2ZVN0cmluZ1NlYXJjaGVyLmggIHwgICAy
ICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwICAgICAgICAgICAgfCAgIDgg
Ky0KIFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oICAgICAgICAgICAgICB8ICAgOCAr
LQogU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAgICAgICAgIHwgIDE4ICst
LQogU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oICAgICAgICAgIHwgIDEwICst
CiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAgICAgICAgICAgICAgICAgfCAgMjggKyst
LQogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaCAgICAgICAgICAgICAgICAgIHwgICAyICst
CiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwICAgICAgICAgICAgICAgfCAgIDIgKy0K
IFNvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oICAgICAgICAgICAgICAgICB8ICAgNiArLQog
U291cmNlL1dURi93dGYvdGV4dC9Db2RlUG9pbnRJdGVyYXRvci5oICAgICAgIHwgICA2ICstCiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L0V4dGVybmFsU3RyaW5nSW1wbC5jcHAgICAgfCAgIDQgKy0KIFNv
dXJjZS9XVEYvd3RmL3RleHQvRXh0ZXJuYWxTdHJpbmdJbXBsLmggICAgICB8ICAgNCArLQogLi4u
L1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggIHwgIDE2ICstCiBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0xDaGFyLmggICAgICAgICAgICAgICAgICAgfCAgMzIgKysrKwogU291
cmNlL1dURi93dGYvdGV4dC9MYXRpbjFDaGFyYWN0ZXIuaCAgICAgICAgIHwgMTIwIC0tLS0tLS0t
LS0tLS0tLQogU291cmNlL1dURi93dGYvdGV4dC9NYWtlU3RyaW5nLmggICAgICAgICAgICAgIHwg
ICA4ICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1BhcnNpbmdVdGlsaXRpZXMuaCAgICAgICAgfCAg
MjQgKy0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwICAgICAgICAgfCAg
MTggKy0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaCAgICAgICAgICAgfCAg
MjUgKystCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcCAgICAgfCAg
IDIgKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmNwcCAgICAgICAgICB8ICAg
NCArLQogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCAgICAgICAgICAgIHwgIDgz
ICsrKysrLS0tLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCAgICAg
ICB8ICAyNCArLS0KIC4uLi9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmgg
ICB8ICAxMCArLQogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoZXIuaCAgICAgICAgICAg
IHwgIDEwICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwICAgICAgICAgICAg
fCAgOTMgKysrKystLS0tLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oICAgICAg
ICAgICAgICB8IDE0NCArKysrKysrKystLS0tLS0tLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAgICAgICAgICAgICB8ICAxMiArLQogU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmggICAgICAgICAgICAgIHwgIDQ0ICsrKy0tLQogU291cmNlL1dURi93dGYvdGV4dC9T
dXBlckZhc3RIYXNoLmggICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgIDggKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvVW5p
cXVlZFN0cmluZ0ltcGwuaCAgICAgICB8ICAgNCArLQogU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwICAgICAgICAgICAgIHwgIDYzICsrKysrLS0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oICAgICAgICAgICAgICAgfCAgNjIgKysrKy0tLS0KIFNvdXJjZS9XVEYvd3Rm
L3RleHQvV1lIYXNoLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dURi93dGYv
dGV4dC9jZi9BdG9tU3RyaW5nSW1wbENGLmNwcCAgIHwgICAyICstCiBTb3VyY2UvV1RGL3d0Zi90
ZXh0L2NmL1N0cmluZ0NGLmNwcCAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XVEYvd3RmL3Rl
eHQvY2YvU3RyaW5nQ29uY2F0ZW5hdGVDRi5oICB8ICAgMiArLQogU291cmNlL1dURi93dGYvdGV4
dC9jZi9TdHJpbmdJbXBsQ0YuY3BwICAgICAgIHwgICA0ICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0
L2NmL1N0cmluZ1ZpZXdDRi5jcHAgICAgICAgfCAgIDQgKy0KIC4uLi9XVEYvd3RmL3RleHQvY29j
b2EvQVNDSUlMaXRlcmFsQ29jb2EubW0gICB8ICAgMiArLQogU291cmNlL1dURi93dGYvdGV4dC9j
b2NvYS9TdHJpbmdWaWV3Q29jb2EubW0gIHwgICA0ICstCiAuLi4vV1RGL3d0Zi90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAgfCAgMTAgKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaCB8ICAgNiArLQogU291cmNlL1dURi93dGYvdW5pY29kZS9V
VEY4Q29udmVyc2lvbi5jcHAgICAgIHwgICA2ICstCiBTb3VyY2UvV1RGL3d0Zi91bmljb2RlL1VU
RjhDb252ZXJzaW9uLmggICAgICAgfCAgIDYgKy0KIFNvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1
L0NvbGxhdG9ySUNVLmNwcCAgICB8ICAgOCArLQogLi4uL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCAgIHwgICAyIC0KIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgICAgICAgICAgICB8ICAgNCArLQogLi4uL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwICAgICAgIHwgICA0ICstCiAuLi4vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcCAgICAgfCAgIDIgKy0KIC4uLi9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29h
LmNwcCAgICAgICAgICB8ICAgOCArLQogLi4uL0dTdHJlYW1lckR0bHNUcmFuc3BvcnRCYWNrZW5k
LmNwcCAgICAgICAgIHwgICA2ICstCiAuLi4vTW9kdWxlcy9wdXNoLWFwaS9QdXNoTWVzc2FnZUNy
eXB0by5jcHAgICAgfCAgIDYgKy0KIC4uLi9Nb2R1bGVzL3VybC1wYXR0ZXJuL1VSTFBhdHRlcm5Q
YXJzZXIuY3BwICB8ICAgNCArLQogLi4uL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3Bw
ICAgICAgICAgIHwgICAzICstCiAuLi4vd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJz
ZXIuY3BwICAgfCAgIDIgKy0KIC4uLi93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNl
ci5oICAgICB8ICAgNiArLQogLi4uL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwIHwgIDE3ICstLQogLi4uL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIHwgICA4ICsKIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvQ01ha2VMaXN0cy50eHQgICAg
ICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0d1bnppcC5oICAgICAgICAgICAg
ICAgfCAgMzkgKysrKysKIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2Ug
ICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0d1bnppcC5jcHAgICAg
ICAgfCAgOTAgKysrKysrKysrKysKIC4uLi9QQUwvcGFsL3RleHQvVGV4dENvZGVjQVNDSUlGYXN0
UGF0aC5oICAgICB8ICAgNiArLQogLi4uL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRDb2RlY0xh
dGluMS5jcHAgIHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dENvZGVj
VVRGOC5jcHAgfCAgIDggKy0KIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0Q29kZWNV
VEY4LmggICB8ICAgNCArLQogLi4uL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5j
cHAgICAgIHwgIDEyICstCiAuLi4vYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCAgfCAgIDIgKy0KIC4uLi9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
ICAgICB8ICAgNCArLQogLi4uL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwICAgICAgICAgICAg
ICAgIHwgIDE2ICstCiAuLi4vREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oICAgICAgICAgICAgICAg
ICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwICAgICAg
ICB8ICAgMyArLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAgICAgICAg
IHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmggICAg
fCAgIDIgKy0KIC4uLi9jc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmggICAgICB8
ICAgMiArLQogLi4uL2Nzcy9zY3JpcHRzL3Byb2Nlc3MtY3NzLXByb3BlcnRpZXMucHkgICAgIHwg
ICA0ICstCiAuLi4vc2NyaXB0cy9wcm9jZXNzLWNzcy1wc2V1ZG8tc2VsZWN0b3JzLnB5ICAgfCAg
MTIgKy0KIC4uLi9DU1NQcm9wZXJ0eU5hbWVzLmdwZXJmICAgICAgICAgICAgICAgICAgICB8ICAg
NCArLQogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3BwICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgIDYg
Ky0KIFNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCAgICAgICB8ICAgMiAr
LQogU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgICAgICAgICAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwICAgICAgICAgICAgfCAgIDIgKy0K
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwICB8ICAgMiArLQog
Li4uL2VkaXRpbmcvY29jb2EvTm9kZUhUTUxDb252ZXJ0ZXIubW0gICAgICAgIHwgICAyICstCiAu
Li4vZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gICAgfCAgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgICB8ICAgMiArLQogU291
cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgIHwgICA0ICstCiAuLi4v
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwICAgfCAgIDggKy0KIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oICB8ICAgNCArLQogLi4uL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXJGYXN0UGF0aC5jcHAgICAgIHwgICA0ICstCiAuLi4vV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRW50aXR5UGFyc2VyLmNwcCAgfCAgIDYgKy0KIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJzZXIuaCB8ICAgNCArLQogU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5hbWVDYWNoZS5oICAgIHwgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggfCAgIDIgKy0KIC4uLi9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwICB8ICAgMiArLQogU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggICAgICAgIHwgIDIwICstLQogU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmggICAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRTY2FubmVyLmNwcCAgICAgIHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFNjYW5uZXIuaCAgICAgICAgfCAgMTQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCAgICB8ICAgMiArLQogLi4uL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIHwgICA0ICstCiAuLi4vaW5saW5lL3RleHQvVGV4
dFV0aWwuY3BwICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwICB8ICAgOCArLQogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZUUERpcmVjdG9yeVBhcnNlci5oICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwICAgICAgfCAgIDQgKy0KIC4uLi9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcCAgICB8ICAgNCArLQogLi4uL2xvYWRlci9SZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuaCAgICAgIHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFJlc291cmNlRGVjb2Rlci5jcHAgfCAgMTggKy0tCiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcCAgfCAgIDYgKy0KIC4uLi9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwICB8ICAgOCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0FWMVV0
aWxpdGllcy5jcHAgICAgICAgIHwgIDEyICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAgfCAgIDQgKy0KIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmggICB8ICAgNiArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRl
eHRJdGVyYXRvci5oICAgIHwgIDEwICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UZXh0UnVuLmggICAgfCAgIDQgKy0KIC4uLi9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuY3BwICAgICB8ICAgNiArLQogLi4uL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tICAgIHwgICAyICstCiAuLi4vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwICAgfCAgIDIgKy0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5k
ZXIuY3BwICAgICB8ICAgNCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwICAgICAgIHwgICA2ICstCiAuLi4vZ3N0cmVhbWVyL0dTdHJlYW1lckVsZW1lbnRIYXJuZXNz
LmNwcCAgICAgfCAgIDIgKy0KIC4uLi9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcCAgICB8ICAgOCArLQogLi4uL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgICAgICAg
ICAgICAgIHwgICAyICstCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcCAgfCAgMTMgKy0KIC4uLi9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAg
ICAgICB8ICAgNCArLQogLi4uL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNw
cCAgIHwgICA0ICstCiAuLi4vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mb1NvdXAuY3BwICAg
ICAgfCAgIDIgKy0KIC4uLi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgg
ICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaCAgICAgICAg
IHwgIDY3ICsrKystLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
ICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oICAg
ICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAgICAg
ICAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmggICAgICAg
ICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwICAg
ICB8ICAgNiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oICAgICAg
IHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1ZpZXdTb3VyY2UuaCAg
fCAgIDIgKy0KIC4uLi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmNwcCAgICAgICB8
ICAgMiArLQogLi4uL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oIHwg
ICAyICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAgICAgICAgfCAg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmggICAgICAgICB8ICAg
MiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwICAgICAgIHwgICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oICAgICAgICAgfCAgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcCAgICAgICAgICB8ICAgMiAr
LQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaCAgICAgICAgICAgIHwgICAyICst
CiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCAgICAgfCAgIDYgKy0K
IC4uLi94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgICB8ICAgMiArLQog
U291cmNlL1dlYkdQVS9XR1NML0xleGVyLmNwcCAgICAgICAgICAgICAgICAgIHwgIDMzICstLS0K
IFNvdXJjZS9XZWJHUFUvV0dTTC9MZXhlci5oICAgICAgICAgICAgICAgICAgICB8ICA0OCArKysr
LS0KIFNvdXJjZS9XZWJHUFUvV0dTTC9QYXJzZXIuY3BwICAgICAgICAgICAgICAgICB8ICAxMCAr
LQogU291cmNlL1dlYkdQVS9XR1NML1BhcnNlclByaXZhdGUuaCAgICAgICAgICAgIHwgICAxIC0K
IFNvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lLm1tICAgICAgICAgICAgICB8ICAgMiArLQog
Li4uL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgICAgIHwgICAyICstCiAu
Li4vY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwICAgICAgICAgfCAgIDIgKy0KIC4u
Li9OZXR3b3JrUHJvY2Vzcy9jdXJsL1dlYlNvY2tldFRhc2tDdXJsLmNwcCB8ICAxNCArLQogLi4u
L3N0b3JhZ2UvQ2FjaGVTdG9yYWdlTWFuYWdlci5jcHAgICAgICAgICAgIHwgICAyICstCiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgfCAgIDIgKy0KIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvZGVycy5oICAgICB8ICAgNCArLQogU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uRGVjb2Rlci5oICAgIHwgICAyICstCiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tICAgfCAgIDIgKy0KIC4uLi9TaGFy
ZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tICAgICB8ICAgMiArLQogLi4uL1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIHwgICAyICstCiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwICAgICAgfCAgIDIgKy0KIC4uLi9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSAgICAgICAgICB8ICAgMiArLQogLi4uZW5zaW9uRGVj
bGFyYXRpdmVOZXRSZXF1ZXN0U1FMaXRlU3RvcmUuY3BwIHwgICAzICstCiAuLi4vSW5zcGVjdG9y
L2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCAgfCAgIDIgKy0KIC4uLi9tYWMvUmVtb3Rl
V2ViSW5zcGVjdG9yVUlQcm94eU1hYy5tbSAgICAgICB8ICAgMiArLQogLi4uL0luc3BlY3Rvci9t
YWMvV2ViSW5zcGVjdG9yVUlQcm94eU1hYy5tbSAgIHwgICAyICstCiAuLi4vVUlQcm9jZXNzL3dw
ZS9XZWJQYXN0ZWJvYXJkUHJveHlXUEUuY3BwICAgfCAgIDIgKy0KIC4uLi9XUEVQbGF0Zm9ybS93
cGUvZHJtL1dQRURpc3BsYXlEUk0uY3BwICAgICB8ICAgNyArLQogLi4uL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwICAgIHwgICAyICstCiAuLi4vV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0gICAgICAgfCAgIDYgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9X
ZWJTb2NrZXRDaGFubmVsLmNwcCAgICAgICB8ICAgMiArLQogVG9vbHMvU2NyaXB0cy9kby13ZWJj
b3JlLXJlbmFtZSAgICAgICAgICAgICAgIHwgIDIwICstLQogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkgIHwgICAyICstCiAuLi4vVGVzdHMvV0dTTC9Db25zdExp
dGVyYWxUZXN0cy5jcHAgICAgICAgICAgfCAgIDYgKy0KIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV0dTTC9MZXhlclRlc3RzLmNwcCB8ICAxNiArLQogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvQmFzZTY0LmNwcCAgICAgIHwgIDU2ICsrKy0tLS0KIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwICB8ICAyNCArLS0KIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hleE51bWJlci5jcHAgICB8ICAgMiArLQogLi4uL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwIHwgIDEyICstCiAuLi4vVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nQ29tbW9uLmNwcCAgfCAxMTYgKysrKysrKy0tLS0tLS0KIC4uLi9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdIYXNoZXIuY3BwICB8ICAgOCArLQogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgIHwgIDEyICstCiAuLi4vVGVzdHMvV1RG
L1N0cmluZ1BhcnNpbmdCdWZmZXIuY3BwICAgICAgICAgfCAgIDIgKy0KIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwICB8ICAxMiArLQogLi4uL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N1cGVyRmFzdEhhc2guY3BwIHwgIDEyICstCiAuLi4vVGVzdHMvV1RGL1VU
RjhDb252ZXJzaW9uLmNwcCAgICAgICAgICAgICAgfCAgIDIgKy0KIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAgICAgICB8ICAgMiArLQogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvV1lIYXNoLmNwcCAgICAgIHwgICA0ICstCiAuLi4vVGVzdHMvV1RGL2NvY29h
L1VSTEV4dHJhcy5tbSAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9UZXN0cy9XZWJDb3JlL0Zp
bGVNb25pdG9yLmNwcCAgICAgICAgICAgICB8ICAgMiArLQogLi4uL1Rlc3RzL1dlYkNvcmUvUHVz
aE1lc3NhZ2VDcnlwdG8uY3BwICAgICAgIHwgIDEyICstCiAuLi4vVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwICAgICAgICAgICAgfCAgMTQgKy0KIC4uLi9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwICAgICAgICB8ICAgMiArLQogLi4uL1dlYkNvcmUvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlVGVzdHMuY3BwIHwgIDU2ICsrKy0tLS0KIC4uLi9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZC5tbSAgICAgICAgICAgICB8ICAgNCArLQogLi4uL1Rlc3RzL1dlYktpdENvY29h
L0luZGV4ZWREQlBlcnNpc3RlbmNlLm1tIHwgICAyICstCiAuLi4vV0tXZWJFeHRlbnNpb25BUElX
ZWJOYXZpZ2F0aW9uLm1tICAgICAgICAgfCAgIDQgKy0KIC4uLi9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tICAgICAgICB8ICAgNCArLQogLi4uL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAgICAgIHwgICAyICstCiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1N0
cmluZ0Z1bmN0aW9ucy5oICAgICAgfCAgIDYgKy0KIFRvb2xzL2dkYi93ZWJraXQucHkgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogMjk3IGZpbGVzIGNoYW5nZWQsIDE1MTMgaW5z
ZXJ0aW9ucygrKSwgMTUwNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L0xDaGFyLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV1RGL3d0Zi90
ZXh0L0xhdGluMUNoYXJhY3Rlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUv
UEFML3BhbC9HdW56aXAuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvR3VuemlwLmNwcAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNTY3JpcHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmlu
ZGV4IDkzNTA2ZGI2YzYxNS4uMWJjZjA0Njg2MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNTY3JpcHQubW0KQEAgLTE0Niw3ICsxNDYsNyBAQCArIChpbnN0YW5jZXR5cGUpc2NyaXB0T2ZU
eXBlOihKU1NjcmlwdFR5cGUpdHlwZSBtZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOihOU1VSTAog
ICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW0pTU2NyaXB0IGFsbG9jXSBpbml0XSk7CiAgICAg
cmVzdWx0LT5tX3ZpcnR1YWxNYWNoaW5lID0gdm07CiAgICAgcmVzdWx0LT5tX3R5cGUgPSB0eXBl
OwotICAgIHJlc3VsdC0+bV9zb3VyY2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGZpbGVEYXRhLT5zcGFuKCkpKTsKKyAgICByZXN1
bHQtPm1fc291cmNlID0gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGZp
bGVEYXRhLT5zcGFuKCkpKTsKICAgICByZXN1bHQtPm1fbWFwcGVkU291cmNlID0gV1RGTW92ZSgq
ZmlsZURhdGEpOwogICAgIHJlc3VsdC0+bV9zb3VyY2VVUkwgPSBzb3VyY2VVUkw7CiAgICAgcmVz
dWx0LT5tX2NhY2hlUGF0aCA9IGNhY2hlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IDk4ZGE2Y2E4ODM0MC4uNzAxM2E2YTdhMTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAgLTQ1LDkgKzQ1
LDkgQEAgSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYg
c3RyaW5nKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUoIiJfc3BhbjgpLmxlYWtSZWYoKTsKIAotICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0
ZXIsIDEwMjQ+IGxjaGFyQnVmZmVyKGxlbmd0aCk7CisgICAgVmVjdG9yPExDaGFyLCAxMDI0PiBs
Y2hhckJ1ZmZlcihsZW5ndGgpOwogICAgIENGSW5kZXggdXNlZEJ1ZmZlckxlbmd0aDsKLSAgICBD
RkluZGV4IGNvbnZlcnRlZFNpemUgPSBDRlN0cmluZ0dldEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1h
a2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIDAsIGZhbHNlLCBieXRl
Q2FzdDxVSW50OD4obGNoYXJCdWZmZXIubXV0YWJsZVNwYW4oKS5kYXRhKCkpLCBsZW5ndGgsICZ1
c2VkQnVmZmVyTGVuZ3RoKTsKKyAgICBDRkluZGV4IGNvbnZlcnRlZFNpemUgPSBDRlN0cmluZ0dl
dEJ5dGVzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwga0NGU3RyaW5nRW5jb2RpbmdJ
U09MYXRpbjEsIDAsIGZhbHNlLCBsY2hhckJ1ZmZlci5tdXRhYmxlU3BhbigpLmRhdGEoKSwgbGVu
Z3RoLCAmdXNlZEJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oY29u
dmVydGVkU2l6ZSkgPT0gbGVuZ3RoICYmIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZEJ1ZmZlckxl
bmd0aCkgPT0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
bGNoYXJCdWZmZXIuc3BhbigpKS5sZWFrUmVmKCk7CiAKQEAgLTY0LDcgKzY0LDcgQEAgQ0ZTdHJp
bmdSZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBKU1N0
cmluZ1JlZiBzdHJpbmcpCiAKICAgICBpZiAoc3RyaW5nLT5pczhCaXQoKSkgewogICAgICAgICBh
dXRvIGNoYXJhY3RlcnMgPSBzdHJpbmctPnNwYW44KCk7Ci0gICAgICAgIHJldHVybiBDRlN0cmlu
Z0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3IsIGJ5dGVDYXN0PFVJbnQ4PihjaGFyYWN0ZXJzLmRh
dGEoKSksIGNoYXJhY3RlcnMuc2l6ZSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFs
c2UpOworICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoYWxsb2NhdG9yLCBj
aGFyYWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCksIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSk7CiAgICAgfQogICAgIGF1dG8gY2hhcmFjdGVycyA9IHN0cmluZy0+c3Bh
bjE2KCk7CiAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYWxsb2NhdG9y
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFyYWN0ZXJzLmRhdGEoKSksIGNo
YXJhY3RlcnMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3Bw
CmluZGV4IGVjOTgxNGQyMDg1Zi4uMTdjZmY4ZDE3OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTY5Nyw3ICs2OTcsNyBAQCBKU1ZhbHVlUmVmIEpTVmFs
dWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5n
KQogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBTdHJpbmcgc3Ry
ID0gc3RyaW5nLT5zdHJpbmcoKTsKICAgICBpZiAoc3RyLmlzOEJpdCgpKSB7Ci0gICAgICAgIExp
dGVyYWxQYXJzZXI8TGF0aW4xQ2hhcmFjdGVyLCBKU09OUmV2aXZlck1vZGU6OkRpc2FibGVkPiBw
YXJzZXIoZ2xvYmFsT2JqZWN0LCBzdHIuc3BhbjgoKSwgU3RyaWN0SlNPTik7CisgICAgICAgIExp
dGVyYWxQYXJzZXI8TENoYXIsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IHBhcnNlcihnbG9i
YWxPYmplY3QsIHN0ci5zcGFuOCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgcmV0dXJuIHRvUmVm
KGdsb2JhbE9iamVjdCwgcGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpKTsKICAgICB9CiAgICAgTGl0
ZXJhbFBhcnNlcjxjaGFyMTZfdCwgSlNPTlJldml2ZXJNb2RlOjpEaXNhYmxlZD4gcGFyc2VyKGds
b2JhbE9iamVjdCwgc3RyLnNwYW4xNigpLCBTdHJpY3RKU09OKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAppbmRleCBiNmM0M2YzNTkzNDAuLjU2ZGY2ZmE4MmRi
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNDAs
NyArNDAsNyBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3Bh
cXVlSlNTdHJpbmcpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8T3BhcXVlSlNTdHJpbmc+IGNy
ZWF0ZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQorICAgIHN0
YXRpYyBSZWY8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNo
YXJhY3RlcnMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPcGFxdWVKU1N0
cmluZyhjaGFyYWN0ZXJzKSk7CiAgICAgfQpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgT3BhcXVl
SlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSB+T3BhcXVlSlNTdHJpbmcoKTsKIAogICAgIGJvb2wgaXM4
Qml0KCkgeyByZXR1cm4gbV9zdHJpbmcuaXM4Qml0KCk7IH0KLSAgICBzdGQ6OnNwYW48Y29uc3Qg
TGF0aW4xQ2hhcmFjdGVyPiBzcGFuOCgpIExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIG1fc3RyaW5n
LnNwYW44KCk7IH0KKyAgICBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHNwYW44KCkgTElGRVRJTUVf
Qk9VTkQgeyByZXR1cm4gbV9zdHJpbmcuc3BhbjgoKTsgfQogICAgIHN0ZDo6c3Bhbjxjb25zdCBj
aGFyMTZfdD4gc3BhbjE2KCkgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gbV9zdHJpbmcuc3BhbjE2
KCk7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX3N0cmluZy5sZW5ndGgoKTsg
fQogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIE9wYXF1
ZUpTU3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMpCisg
ICAgT3BhcXVlSlNTdHJpbmcoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKQogICAg
ICAgICA6IG1fc3RyaW5nKGNoYXJhY3RlcnMpCiAgICAgICAgICwgbV9jaGFyYWN0ZXJzKG51bGxw
dHIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAK
aW5kZXggZTZkNTA4OTg5ZjAwLi45Y2VmNDJkYjdiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcApAQCAtMjA5Myw3ICsyMDkzLDcgQEAgSlNDVmFsdWUq
IGpzY192YWx1ZV9uZXdfZnJvbV9qc29uKEpTQ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIq
IGpzb24pCiAgICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWU7CiAgICAgU3RyaW5nIGpzb25TdHJpbmcg
PSBTdHJpbmc6OmZyb21VVEY4KGpzb24pOwogICAgIGlmIChqc29uU3RyaW5nLmlzOEJpdCgpKSB7
Ci0gICAgICAgIEpTQzo6TGl0ZXJhbFBhcnNlcjxMYXRpbjFDaGFyYWN0ZXIsIEpTQzo6SlNPTlJl
dml2ZXJNb2RlOjpEaXNhYmxlZD4ganNvblBhcnNlcihnbG9iYWxPYmplY3QsIGpzb25TdHJpbmcu
c3BhbjgoKSwgSlNDOjpTdHJpY3RKU09OKTsKKyAgICAgICAgSlNDOjpMaXRlcmFsUGFyc2VyPExD
aGFyLCBKU0M6OkpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IGpzb25QYXJzZXIoZ2xvYmFsT2Jq
ZWN0LCBqc29uU3RyaW5nLnNwYW44KCksIEpTQzo6U3RyaWN0SlNPTik7CiAgICAgICAgIGpzVmFs
dWUgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwogICAgICAgICBpZiAoIWpzVmFsdWUp
CiAgICAgICAgICAgICBleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVN5bnRheEVycm9yKGds
b2JhbE9iamVjdCwganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weQppbmRleCAzZWNhNjBmYjI0
OWQuLjcwZGEzOTc2OTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdv
cmRMb29rdXBHZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRM
b29rdXBHZW5lcmF0b3IucHkKQEAgLTE4NSw3ICsxODUsNyBAQCBjbGFzcyBUcmllOgogICAgICAg
ICBwcmludCgiIikKICAgICAgICAgcHJpbnQoIm5hbWVzcGFjZSBKU0MgeyIpCiAgICAgICAgIHBy
aW50KCIiKQotICAgICAgICBwcmludCgic3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5ub3RC
ZUlkZW50UGFydE9yRXNjYXBlU3RhcnQoTGF0aW4xQ2hhcmFjdGVyKTsiKQorICAgICAgICBwcmlu
dCgic3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5ub3RCZUlkZW50UGFydE9yRXNjYXBlU3Rh
cnQoTENoYXIpOyIpCiAgICAgICAgIHByaW50KCJzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNh
bm5vdEJlSWRlbnRQYXJ0T3JFc2NhcGVTdGFydChjaGFyMTZfdCk7IikKICAgICAgICAgIyBtYXgg
bGVuZ3RoICsgMSBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBib3VuZHMgY2hlY2tpbmcgYXQg
YWxsCiAgICAgICAgIHByaW50KCJzdGF0aWMgY29uc3RleHByIGludCBtYXhUb2tlbkxlbmd0aCA9
ICVkOyIgJSAoc2VsZi5tYXhMZW5ndGgoKSArIDEpKQpAQCAtMjAxLDExICsyMDEsMTEgQEAgY2xh
c3MgVHJpZToKICAgICAgICAgcHJpbnQoIn0iKQogICAgICAgICBwcmludCgiIikKICAgICAgICAg
cHJpbnQoInRlbXBsYXRlIDw+IikKLSAgICAgICAgcHJpbnQoInRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TGF0aW4x
Q2hhcmFjdGVyPjo6cGFyc2VLZXl3b3JkKEpTVG9rZW5EYXRhKiBkYXRhKSIpCisgICAgICAgIHBy
aW50KCJ0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VLZXl3b3JkKEpTVG9rZW5EYXRhKiBkYXRh
KSIpCiAgICAgICAgIHByaW50KCJ7IikKICAgICAgICAgcHJpbnQoIiAgICBBU1NFUlQobV9jb2Rl
RW5kIC0gbV9jb2RlID49IG1heFRva2VuTGVuZ3RoKTsiKQogICAgICAgICBwcmludCgiIikKLSAg
ICAgICAgcHJpbnQoIiAgICBjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIGNvZGUgPSBtX2NvZGU7IikK
KyAgICAgICAgcHJpbnQoIiAgICBjb25zdCBMQ2hhciogY29kZSA9IG1fY29kZTsiKQogICAgICAg
ICBzZWxmLnByaW50U3ViVHJlZUFzQygiQ0hBUiIsIDQpCiAgICAgICAgIHByaW50KCIgICAgcmV0
dXJuIElERU5UOyIpCiAgICAgICAgIHByaW50KCJ9IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3h4ZC5wbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3h4ZC5wbAppbmRleCBmYzI0M2YzYmE4ZGMuLjVmZjI2MmY5Y2VkMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMveHhkLnBsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3h4ZC5wbApAQCAtMSw3ICsxLDYgQEAKICMhIC91c3IvYmluL2VudiBwZXJs
CiAKICMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDI1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMwLDE5ICsyOSwxNyBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogIwogCi1teSAkYXJyYXlOYW1lID0gc2hpZnQ7Ci1teSAkaW5OYW1lID0g
c2hpZnQ7Ci1teSAkb3V0TmFtZSA9IHNoaWZ0OworJHZhcm5hbWUgPSBzaGlmdDsKKyRmbmFtZSA9
IHNoaWZ0OworJG91dHB1dCA9IHNoaWZ0OwogCi1vcGVuKG15ICRpbnB1dCwgJzwnLCAkaW5OYW1l
KSBvciBkaWUgIkNhbid0IG9wZW4gZmlsZSBmb3IgcmVhZDogJGluTmFtZSAkISI7CitvcGVuKCRp
bnB1dCwgJzwnLCAkZm5hbWUpIG9yIGRpZSAiQ2FuJ3Qgb3BlbiBmaWxlIGZvciByZWFkOiAkZm5h
bWUgJCEiOwogJC8gPSB1bmRlZjsKLW15ICR0ZXh0ID0gPCRpbnB1dD47CiskdGV4dCA9IDwkaW5w
dXQ+OwogY2xvc2UoJGlucHV0KTsKIAotbXkgQHZhbHVlcyA9IG1hcCAoJzB4JyAuIHVucGFjaygi
SCoiLCAkXyksIHNwbGl0KHVuZGVmLCAkdGV4dCkpOwotbXkgJHNpemUgPSBAdmFsdWVzOwotbXkg
JGFycmF5ID0gam9pbignLCAnLCBAdmFsdWVzKTsKKyR0ZXh0ID0gam9pbignLCAnLCBtYXAoJzB4
JyAuIHVucGFjaygiSCoiLCAkXyksIHNwbGl0KHVuZGVmLCAkdGV4dCkpKTsKIAotb3BlbihteSAk
b3V0cHV0LCAnPicsICRvdXROYW1lKSBvciBkaWUgIkNhbid0IG9wZW4gZmlsZSBmb3Igd3JpdGU6
ICRvdXROYW1lICQhIjsKLXByaW50ICRvdXRwdXQgIiNpZmRlZiBfX2NwbHVzcGx1c1xuI2luY2x1
ZGUgPGFycmF5PlxuI2luY2x1ZGUgPHd0Zi90ZXh0L0xhdGluMUNoYXJhY3Rlci5oPlxuc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OmFycmF5PExhdGluMUNoYXJhY3RlciwgJHNpemU+ICRhcnJheU5hbWVc
biNlbHNlXG5zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAke2FycmF5TmFtZX1bXSA9XG4jZW5k
aWZcbntcbiRhcnJheVxufTtcbiI7CitvcGVuKCRvdXRwdXQsICc+JywgJG91dHB1dCkgb3IgZGll
ICJDYW4ndCBvcGVuIGZpbGUgZm9yIHdyaXRlOiAkb3V0cHV0ICQhIjsKK3ByaW50ICRvdXRwdXQg
ImNvbnN0IHVuc2lnbmVkIGNoYXIgJHZhcm5hbWVcW1xdID0ge1xuJHRleHRcbn07XG4iOwogY2xv
c2UoJG91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDMyMzg0NDU1Zjc2Ny4uZTcwMTBlODQ1Njc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoYXJhY3Rl
cnNbaV0gPT0gJywnKQogICAgICAgICAgICAgICAgICsrY29tbWFzOwotICAgICAgICAgICAgZWxz
ZSBpZiAoIUxleGVyPExhdGluMUNoYXJhY3Rlcj46OmlzV2hpdGVTcGFjZShjaGFyYWN0ZXJzW2ld
KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCFMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjaGFy
YWN0ZXJzW2ldKSkKICAgICAgICAgICAgICAgICBzYXdPbmVQYXJhbSA9IHRydWU7CiAKICAgICAg
ICAgICAgIGlmIChpICsgMiA8IHZpZXcubGVuZ3RoKCkgJiYgY2hhcmFjdGVyc1tpXSA9PSAnLicg
JiYgY2hhcmFjdGVyc1tpICsgMV0gPT0gJy4nICYmIGNoYXJhY3RlcnNbaSArIDJdID09ICcuJykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcApp
bmRleCBiYmNiMDBhOTZlNWUuLjMzMDllZGYyNjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgQnVpbHRp
bk5hbWVzOjpCdWlsdGluTmFtZXMoVk0mIHZtLCBDb21tb25JZGVudGlmaWVycyogY29tbW9uSWRl
bnRpZmllcnMpCiAjdW5kZWYgSU5JVElBTElaRV9XRUxMX0tOT1dOX1NZTUJPTF9QVUJMSUNfVE9f
UFJJVkFURV9FTlRSWQogCiAKLXVzaW5nIExDaGFyQnVmZmVyID0gV1RGOjpIYXNoVHJhbnNsYXRv
ckNoYXJCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPjsKK3VzaW5nIExDaGFyQnVmZmVyID0gV1RGOjpI
YXNoVHJhbnNsYXRvckNoYXJCdWZmZXI8TENoYXI+OwogdXNpbmcgVUNoYXJCdWZmZXIgPSBXVEY6
Okhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcjxjaGFyMTZfdD47CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIFN5bWJvbEltcGwqIGxv
b2tVcFdlbGxLbm93blN5bWJvbEltcGwoY29uc3QgQnVpbHRpbk5hbWVzOjpXZWxsS25vd25TeW1i
b2wKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogfQogCi1Qcml2YXRlU3ltYm9sSW1wbCog
QnVpbHRpbk5hbWVzOjpsb29rVXBQcml2YXRlTmFtZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hh
cmFjdGVyPiBjaGFyYWN0ZXJzKSBjb25zdAorUHJpdmF0ZVN5bWJvbEltcGwqIEJ1aWx0aW5OYW1l
czo6bG9va1VwUHJpdmF0ZU5hbWUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKSBj
b25zdAogewogICAgIExDaGFyQnVmZmVyIGJ1ZmZlciB7IGNoYXJhY3RlcnMgfTsKICAgICByZXR1
cm4gbG9va1VwUHJpdmF0ZU5hbWVJbXBsKG1fcHJpdmF0ZU5hbWVTZXQsIGJ1ZmZlcik7CkBAIC0x
NTcsNyArMTU3LDcgQEAgUHJpdmF0ZVN5bWJvbEltcGwqIEJ1aWx0aW5OYW1lczo6bG9va1VwUHJp
dmF0ZU5hbWUoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0CiAgICAgcmV0dXJuIGxvb2tVcFBy
aXZhdGVOYW1lSW1wbChtX3ByaXZhdGVOYW1lU2V0LCBidWZmZXIpOwogfQogCi1TeW1ib2xJbXBs
KiBCdWlsdGluTmFtZXM6Omxvb2tVcFdlbGxLbm93blN5bWJvbChzdGQ6OnNwYW48Y29uc3QgTGF0
aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKSBjb25zdAorU3ltYm9sSW1wbCogQnVpbHRpbk5hbWVz
Ojpsb29rVXBXZWxsS25vd25TeW1ib2woc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJz
KSBjb25zdAogewogICAgIExDaGFyQnVmZmVyIGJ1ZmZlciB7IGNoYXJhY3RlcnMgfTsKICAgICBy
ZXR1cm4gbG9va1VwV2VsbEtub3duU3ltYm9sSW1wbChtX3dlbGxLbm93blN5bWJvbHNNYXAsIGJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
aW5kZXggODE4NDBjNjBjOWZkLi5kYWE0YjlkODU4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTI1MywxMiArMjUzLDEyIEBAIHB1Ymxp
YzoKIAogICAgIFByaXZhdGVTeW1ib2xJbXBsKiBsb29rVXBQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJikgY29uc3Q7CiAgICAgUHJpdmF0ZVN5bWJvbEltcGwqIGxvb2tVcFByaXZhdGVOYW1l
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIFByaXZhdGVTeW1ib2xJbXBsKiBsb29rVXBQcml2
YXRlTmFtZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPikgY29uc3Q7CisgICAgUHJp
dmF0ZVN5bWJvbEltcGwqIGxvb2tVcFByaXZhdGVOYW1lKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4p
IGNvbnN0OwogICAgIFByaXZhdGVTeW1ib2xJbXBsKiBsb29rVXBQcml2YXRlTmFtZShzdGQ6OnNw
YW48Y29uc3QgY2hhcjE2X3Q+KSBjb25zdDsKIAogICAgIFN5bWJvbEltcGwqIGxvb2tVcFdlbGxL
bm93blN5bWJvbChjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgU3ltYm9sSW1wbCogbG9v
a1VwV2VsbEtub3duU3ltYm9sKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIFN5bWJvbEltcGwq
IGxvb2tVcFdlbGxLbm93blN5bWJvbChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPikg
Y29uc3Q7CisgICAgU3ltYm9sSW1wbCogbG9va1VwV2VsbEtub3duU3ltYm9sKHN0ZDo6c3Bhbjxj
b25zdCBMQ2hhcj4pIGNvbnN0OwogICAgIFN5bWJvbEltcGwqIGxvb2tVcFdlbGxLbm93blN5bWJv
bChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KSBjb25zdDsKICAgICAKICAgICB2b2lkIGFwcGVu
ZEV4dGVybmFsTmFtZShjb25zdCBJZGVudGlmaWVyJiBwdWJsaWNOYW1lLCBjb25zdCBJZGVudGlm
aWVyJiBwcml2YXRlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSGFzaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0hhc2guaAppbmRleCA2YTU1MTU5MmQwY2YuLjk3ODQ2MTVmMjQ5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCkBAIC04OSw3ICs4
OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHdyaXRlVG8oc3RkOjpzcGFuPENoYXJhY3RlclR5cGU+IGRlc3RpbmF0aW9uKSBjb25zdAogICAg
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSBpbnRlZ2VyVG9TaXhDaGFyYWN0ZXJIYXNoU3RyaW5n
KG1faGFzaC5oYXNoKCkpOwotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0
aW5hdGlvbiwgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4oc3RkOjpiaXRfY2FzdDxj
b25zdCBMYXRpbjFDaGFyYWN0ZXIqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSkpOwor
ICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgc3RkOjpzcGFu
PGNvbnN0IExDaGFyPihzdGQ6OmJpdF9jYXN0PGNvbnN0IExDaGFyKj4oYnVmZmVyLmRhdGEoKSks
IGJ1ZmZlci5zaXplKCkpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDUzZjdhNWNmNzllZS4uMzJj
MWQ4MTIwYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMTI2NjcsNyArMTI2NjcsNyBAQCBzdHJ1Y3QgQ2hhcmFjdGVyQ2FzZSB7
CiAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPCBvdGhlci5jaGFyYWN0ZXI7CiAgICAgfQogICAg
IAotICAgIExhdGluMUNoYXJhY3RlciBjaGFyYWN0ZXI7CisgICAgTENoYXIgY2hhcmFjdGVyOwog
ICAgIHVuc2lnbmVkIGJlZ2luOwogICAgIHVuc2lnbmVkIGVuZDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4
IDU2NTQ3ODFlNmYwNi4uMzVmNDhiNjhkMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtMjAxLDcgKzIwMSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsX2ludGVybmFsRmllbGRzLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZHMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PikpIFwKICAgICBtYWNybyhTY29wZWRBcmd1bWVudHNfU3RvcmFnZV9zdG9yYWdlLCAwLCBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSBcCiAgICAgbWFjcm8oV3JpdGVCYXJyaWVyQnVmZmVyX2J1ZmZl
ckNvbnRlbnRzLCAwLCBzaXplb2YoSlNDZWxsKikpIFwKLSAgICBtYWNybyhjaGFyYWN0ZXJzOCwg
MCwgc2l6ZW9mKExhdGluMUNoYXJhY3RlcikpIFwKKyAgICBtYWNybyhjaGFyYWN0ZXJzOCwgMCwg
c2l6ZW9mKExDaGFyKSkgXAogICAgIG1hY3JvKGNoYXJhY3RlcnMxNiwgMCwgc2l6ZW9mKGNoYXIx
Nl90KSkgXAogICAgIG1hY3JvKGluZGV4ZWRJbnQzMlByb3BlcnRpZXMsIDAsIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpIFwKICAgICBtYWNybyhpbmRleGVkRG91YmxlUHJvcGVydGllcywgMCwgc2l6
ZW9mKGRvdWJsZSkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCA5MmJkYjY5YThlZWMuLmQyNmU1ZDVmMGZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMjE0NjQsNyArMjE0NjQs
NyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIENoYXJhY3RlckNhc2UoTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3RlciwgdW5zaWduZWQg
YmVnaW4sIHVuc2lnbmVkIGVuZCkKKyAgICAgICAgQ2hhcmFjdGVyQ2FzZShMQ2hhciBjaGFyYWN0
ZXIsIHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQpCiAgICAgICAgICAgICA6IGNoYXJhY3Rl
cihjaGFyYWN0ZXIpCiAgICAgICAgICAgICAsIGJlZ2luKGJlZ2luKQogICAgICAgICAgICAgLCBl
bmQoZW5kKQpAQCAtMjE0NzYsNyArMjE0NzYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyIDwgb3RoZXIuY2hhcmFjdGVyOwogICAgICAg
ICB9CiAKLSAgICAgICAgTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3RlcjsKKyAgICAgICAgTENoYXIg
Y2hhcmFjdGVyOwogICAgICAgICB1bnNpZ25lZCBiZWdpbjsKICAgICAgICAgdW5zaWduZWQgZW5k
OwogICAgIH07CkBAIC0yMTU2OCw3ICsyMTU2OCw3IEBAIElHTk9SRV9DTEFOR19XQVJOSU5HU19F
TkQKICAgICAgICAgVmVjdG9yPENoYXJhY3RlckNhc2U+IGNoYXJhY3RlckNhc2VzOwogICAgICAg
ICBDaGFyYWN0ZXJDYXNlIGN1cnJlbnRDYXNlKGNhc2VzW2JlZ2luXS5zdHJpbmctPmF0KGNvbW1v
bkNoYXJzKSwgYmVnaW4sIGJlZ2luICsgMSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJl
Z2luICsgMTsgaSA8IGVuZDsgKytpKSB7Ci0gICAgICAgICAgICBMYXRpbjFDaGFyYWN0ZXIgY3Vy
cmVudENoYXIgPSBjYXNlc1tpXS5zdHJpbmctPmF0KGNvbW1vbkNoYXJzKTsKKyAgICAgICAgICAg
IExDaGFyIGN1cnJlbnRDaGFyID0gY2FzZXNbaV0uc3RyaW5nLT5hdChjb21tb25DaGFycyk7CiAg
ICAgICAgICAgICBpZiAoY3VycmVudENoYXIgIT0gY3VycmVudENhc2UuY2hhcmFjdGVyKSB7CiAg
ICAgICAgICAgICAgICAgY3VycmVudENhc2UuZW5kID0gaTsKICAgICAgICAgICAgICAgICBjaGFy
YWN0ZXJDYXNlcy5hcHBlbmQoY3VycmVudENhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCAwNjQ4NTVjNTU2YTAuLjM2
MmUyYjkzNzYwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNu
YXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNu
YXBzaG90QnVpbGRlci5jcHAKQEAgLTI3OCw2ICsyNzgsMTEgQEAgZW51bSBjbGFzcyBOb2RlRmxh
Z3MgewogICAgIEVsZW1lbnRTdWJ0eXBlID0gMSA8PCAyLAogfTsKIAorc3RhdGljIHVpbnQ4X3Qg
ZWRnZVR5cGVUb051bWJlcihFZGdlVHlwZSB0eXBlKQoreworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1aW50OF90Pih0eXBlKTsKK30KKwogc3RhdGljIEFTQ0lJTGl0ZXJhbCBlZGdlVHlwZVRvU3Ry
aW5nKEVkZ2VUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC00NDUsNyArNDUw
LDcgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24oKQogICAgICAgICBmaXJzdEVk
Z2UgPSBmYWxzZTsKIAogICAgICAgICAvLyA8ZnJvbU5vZGVJZD4sIDx0b05vZGVJZD4sIDxlZGdl
VHlwZUluZGV4PiwgPGVkZ2VFeHRyYURhdGE+Ci0gICAgICAgIGpzb24uYXBwZW5kKGVkZ2UuZnJv
bS5pZGVudGlmaWVyLCAnLCcsIGVkZ2UudG8uaWRlbnRpZmllciwgJywnLCBlZGdlLnR5cGUsICcs
Jyk7CisgICAgICAgIGpzb24uYXBwZW5kKGVkZ2UuZnJvbS5pZGVudGlmaWVyLCAnLCcsIGVkZ2Uu
dG8uaWRlbnRpZmllciwgJywnLCBlZGdlVHlwZVRvTnVtYmVyKGVkZ2UudHlwZSksICcsJyk7CiAg
ICAgICAgIHN3aXRjaCAoZWRnZS50eXBlKSB7CiAgICAgICAgIGNhc2UgRWRnZVR5cGU6OlByb3Bl
cnR5OgogICAgICAgICBjYXNlIEVkZ2VUeXBlOjpWYXJpYWJsZTogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rv
ckNvbm5lY3Rpb25DbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCmluZGV4IGY5
NDc4YWY4NGIyMy4uYzZlZjdhYzAwZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCkBAIC05MCw3ICs5MCw5IEBAIHN0
ZDo6b3B0aW9uYWw8UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6RXZlbnQ+IFJlbW90
ZUluc3BlY3RvckNvbm5lY3Rpb25DCiAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBtZXNzYWdlVmFsdWUgPSBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKFN0cmluZyB7IGJ5dGVDYXN0PGNoYXI4X3Q+KGRhdGEuc3BhbigpKSB9KTsK
KyAgICBTdHJpbmcganNvbkRhdGEgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEpOworCisgICAgYXV0
byBtZXNzYWdlVmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb25EYXRhKTsKICAgICBp
ZiAoIW1lc3NhZ2VWYWx1ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRleCA4OTYxOTZhYmNlNTgu
LmJkMmI4ZmY1MWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tl
dC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBTdHJpbmcgUmVtb3RlSW5zcGVjdG9yOjpiYWNrZW5k
Q29tbWFuZHMoKSBjb25zdAogCiAgICAgYXV0byBjb250ZW50cyA9IEZpbGVTeXN0ZW06OnJlYWRF
bnRpcmVGaWxlKG1fYmFja2VuZENvbW1hbmRzUGF0aCk7CiAKLSAgICByZXR1cm4gY29udGVudHMg
PyBTdHJpbmcgeyBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNvbnRlbnRzLT5zcGFuKCkpIH0g
OiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBjb250ZW50cyA/IFN0cmluZzo6YWRvcHQoV1RG
TW92ZSgqY29udGVudHMpKSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIC8vIFJlbW90ZUluc3BlY3Rv
ckNvbm5lY3Rpb25DbGllbnQgaGFuZGxlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM3MjE3YjBmNDE0OC4uNTFlMmMyY2E3
NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKiBjYWxsZXJTY29wZUNoYWluLAogICAg
ICAgICBpZiAoIShsZXhpY2FsbHlTY29wZWRGZWF0dXJlcyAmIFN0cmljdE1vZGVMZXhpY2FsbHlT
Y29wZWRGZWF0dXJlKSkgewogICAgICAgICAgICAgSlNWYWx1ZSBwYXJzZWRWYWx1ZTsKICAgICAg
ICAgICAgIGlmIChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7Ci0gICAgICAgICAgICAgICAgTGl0
ZXJhbFBhcnNlcjxMYXRpbjFDaGFyYWN0ZXIsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IHBy
ZXBhcnNlcihnbG9iYWxPYmplY3QsIHByb2dyYW1Tb3VyY2Uuc3BhbjgoKSwgU2xvcHB5SlNPTiwg
Y2FsbGVyQmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgICAgIExpdGVyYWxQYXJzZXI8
TENoYXIsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IHByZXBhcnNlcihnbG9iYWxPYmplY3Qs
IHByb2dyYW1Tb3VyY2Uuc3BhbjgoKSwgU2xvcHB5SlNPTiwgY2FsbGVyQmFzZWxpbmVDb2RlQmxv
Y2spOwogICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcHJlcGFyc2VyLnRyeUV2YWwoKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNlcjxjaGFy
MTZfdCwgSlNPTlJldml2ZXJNb2RlOjpEaXNhYmxlZD4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwg
cHJvZ3JhbVNvdXJjZS5zcGFuMTYoKSwgU2xvcHB5SlNPTiwgY2FsbGVyQmFzZWxpbmVDb2RlQmxv
Y2spOwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZVBy
b2dyYW0oY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU0dsb2JhbE9iamVjdCosIEoKICAgICBp
ZiAocHJvZ3JhbVNvdXJjZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgaWYgKHByb2dyYW1Tb3VyY2UuaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNl
cjxMYXRpbjFDaGFyYWN0ZXIsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IGxpdGVyYWxQYXJz
ZXIoZ2xvYmFsT2JqZWN0LCBwcm9ncmFtU291cmNlLnNwYW44KCksIEpTT05QKTsKKyAgICAgICAg
TGl0ZXJhbFBhcnNlcjxMQ2hhciwgSlNPTlJldml2ZXJNb2RlOjpEaXNhYmxlZD4gbGl0ZXJhbFBh
cnNlcihnbG9iYWxPYmplY3QsIHByb2dyYW1Tb3VyY2Uuc3BhbjgoKSwgSlNPTlApOwogICAgICAg
ICBwYXJzZVJlc3VsdCA9IGxpdGVyYWxQYXJzZXIudHJ5SlNPTlBQYXJzZShKU09OUERhdGEsIGds
b2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+c3VwcG9ydHNSaWNoU291cmNl
SW5mbyhnbG9iYWxPYmplY3QpKTsKICAgICB9IGVsc2UgewogICAgICAgICBMaXRlcmFsUGFyc2Vy
PGNoYXIxNl90LCBKU09OUmV2aXZlck1vZGU6OkRpc2FibGVkPiBsaXRlcmFsUGFyc2VyKGdsb2Jh
bE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5zcGFuMTYoKSwgSlNPTlApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAzOTMxYWY4Y2U4NmMuLmExZjVmNzY5MDBiYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV1RG
X0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfQkVHSU4KIG5hbWVzcGFjZSBKU0MgewogCiBjb25z
dGluaXQgY29uc3QgV1RGOjpCaXRTZXQ8MjU2PiB3aGl0ZVNwYWNlVGFibGUgPSBtYWtlTGF0aW4x
Q2hhcmFjdGVyQml0U2V0KAotICAgIFtdKExhdGluMUNoYXJhY3RlciBjaCkgeworICAgIFtdKExD
aGFyIGNoKSB7CiAgICAgICAgIHJldHVybiBjaCA9PSAnICcgfHwgY2ggPT0gJ1x0JyB8fCBjaCA9
PSAweEIgfHwgY2ggPT0gMHhDIHx8IGNoID09IDB4QTA7CiAgICAgfSk7CiAKQEAgLTM2OCw3ICsz
NjgsNyBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IENoYXJhY3RlclR5cGUgdHlwZXNPZkxhdGlu
MUNoYXJhY3RlcnNbMjU2XSA9IHsKIAogLy8gVGhpcyB0YWJsZSBwcm92aWRlcyB0aGUgY2hhcmFj
dGVyIHRoYXQgcmVzdWx0cyBmcm9tIFxYIHdoZXJlIFggaXMgdGhlIGluZGV4IGluIHRoZSB0YWJs
ZSBiZWdpbm5pbmcKIC8vIHdpdGggU1BBQ0UuIEEgdGFibGUgdmFsdWUgb2YgMCBtZWFucyB0aGF0
IG1vcmUgcHJvY2Vzc2luZyBuZWVkcyB0byBiZSBkb25lLgotc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBMYXRpbjFDaGFyYWN0ZXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUlbMTI4
XSA9IHsKK3N0YXRpYyBjb25zdGV4cHIgY29uc3QgTENoYXIgc2luZ2xlQ2hhcmFjdGVyRXNjYXBl
VmFsdWVzRm9yQVNDSUlbMTI4XSA9IHsKIC8qICAgMCAtIE51bGwgICAgICAgICAgICAgICAqLyAw
LAogLyogICAxIC0gU3RhcnQgb2YgSGVhZGluZyAgICovIDAsCiAvKiAgIDIgLSBTdGFydCBvZiBU
ZXh0ICAgICAgKi8gMCwKQEAgLTYyMyw3ICs2MjMsNyBAQCBBTFdBWVNfSU5MSU5FIFQgTGV4ZXI8
VD46OnBlZWsoaW50IG9mZnNldCkgY29uc3QKIHsKICAgICBBU1NFUlQob2Zmc2V0ID4gMCAmJiBv
ZmZzZXQgPCA1KTsKICAgICBjb25zdCBUKiBjb2RlID0gbV9jb2RlICsgb2Zmc2V0OwotICAgIHJl
dHVybiAoY29kZSA8IG1fY29kZUVuZCkgPyAqY29kZSA6IFQgeyB9OworICAgIHJldHVybiAoY29k
ZSA8IG1fY29kZUVuZCkgPyAqY29kZSA6IDA7CiB9CiAKIHN0cnVjdCBQYXJzZWRVbmljb2RlRXNj
YXBlVmFsdWUgewpAQCAtNzUyLDIwICs3NTIsMjAgQEAgc3RhdGljIGJvb2wgaXNOb25MYXRpbjFJ
ZGVudFN0YXJ0KGNoYXIzMl90IGMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgog
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0lkZW50U3RhcnQoQ2hhcmFjdGVyVHlwZSBjKQog
ewotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8Q2hhcmFjdGVyVHlwZSwgTGF0aW4x
Q2hhcmFjdGVyPiB8fCBzdGQ6OmlzX3NhbWVfdjxDaGFyYWN0ZXJUeXBlLCBjaGFyMzJfdD4sICJD
YWxsIGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRTdGFydCBmb3IgVUNoYXJzIHRoYXQgZG9uJ3QgbmVl
ZCB0byBjaGVjayBmb3Igc3Vycm9nYXRlIHBhaXJzIik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWVfdjxDaGFyYWN0ZXJUeXBlLCBMQ2hhcj4gfHwgc3RkOjppc19zYW1lX3Y8Q2hhcmFj
dGVyVHlwZSwgY2hhcjMyX3Q+LCAiQ2FsbCBpc1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQgZm9y
IFVDaGFycyB0aGF0IGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIHN1cnJvZ2F0ZSBwYWlycyIpOwog
ICAgIGlmICghaXNMYXRpbjEoYykpCiAgICAgICAgIHJldHVybiBpc05vbkxhdGluMUlkZW50U3Rh
cnQoYyk7Ci0gICAgcmV0dXJuIHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzW3N0YXRpY19jYXN0PExh
dGluMUNoYXJhY3Rlcj4oYyldID09IENoYXJhY3RlckxhdGluMUlkZW50aWZpZXJTdGFydDsKKyAg
ICByZXR1cm4gdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbc3RhdGljX2Nhc3Q8TENoYXI+KGMpXSA9
PSBDaGFyYWN0ZXJMYXRpbjFJZGVudGlmaWVyU3RhcnQ7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIFVOVVNFRF9GVU5DVElPTiBib29sIGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRTdGFydChjaGFy
MTZfdCBjKQogewogICAgIGlmIChpc0xhdGluMShjKSkgW1tsaWtlbHldXQotICAgICAgICByZXR1
cm4gaXNJZGVudFN0YXJ0KHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oYykpOworICAgICAg
ICByZXR1cm4gaXNJZGVudFN0YXJ0KHN0YXRpY19jYXN0PExDaGFyPihjKSk7CiAgICAgcmV0dXJu
ICFVMTZfSVNfU1VSUk9HQVRFKGMpICYmIGlzSWRlbnRTdGFydChzdGF0aWNfY2FzdDxjaGFyMzJf
dD4oYykpOwogfQogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNhbm5vdEJlSWRlbnRTdGFy
dChMYXRpbjFDaGFyYWN0ZXIgYykKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2Fubm90QmVJ
ZGVudFN0YXJ0KExDaGFyIGMpCiB7CiAgICAgcmV0dXJuICFpc0lkZW50U3RhcnQoYykgJiYgYyAh
PSAnXFwnOwogfQpAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wg
Y2Fubm90QmVJZGVudFN0YXJ0KExhdGluMUNoYXJhY3RlciBjKQogc3RhdGljIEFMV0FZU19JTkxJ
TkUgYm9vbCBjYW5ub3RCZUlkZW50U3RhcnQoY2hhcjE2X3QgYykKIHsKICAgICBpZiAoaXNMYXRp
bjEoYykpIFtbbGlrZWx5XV0KLSAgICAgICAgcmV0dXJuIGNhbm5vdEJlSWRlbnRTdGFydChzdGF0
aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGMpKTsKKyAgICAgICAgcmV0dXJuIGNhbm5vdEJlSWRl
bnRTdGFydChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOwogICAgIHJldHVybiBMZXhlcjxjaGFyMTZf
dD46OmlzV2hpdGVTcGFjZShjKSB8fCBMZXhlcjxjaGFyMTZfdD46OmlzTGluZVRlcm1pbmF0b3Io
Yyk7CiB9CiAKQEAgLTc4NSwyNCArNzg1LDI0IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBp
c05vbkxhdGluMUlkZW50UGFydChjaGFyMzJfdCBjKQogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJZGVudFBhcnQoQ2hhcmFjdGVy
VHlwZSBjKQogewotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8Q2hhcmFjdGVyVHlw
ZSwgTGF0aW4xQ2hhcmFjdGVyPiB8fCBzdGQ6OmlzX3NhbWVfdjxDaGFyYWN0ZXJUeXBlLCBjaGFy
MzJfdD4sICJDYWxsIGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRQYXJ0IGZvciBVQ2hhcnMgdGhhdCBk
b24ndCBuZWVkIHRvIGNoZWNrIGZvciBzdXJyb2dhdGUgcGFpcnMiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZV92PENoYXJhY3RlclR5cGUsIExDaGFyPiB8fCBzdGQ6OmlzX3NhbWVf
djxDaGFyYWN0ZXJUeXBlLCBjaGFyMzJfdD4sICJDYWxsIGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRQ
YXJ0IGZvciBVQ2hhcnMgdGhhdCBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciBzdXJyb2dhdGUgcGFp
cnMiKTsKICAgICBpZiAoIWlzTGF0aW4xKGMpKQogICAgICAgICByZXR1cm4gaXNOb25MYXRpbjFJ
ZGVudFBhcnQoYyk7CiAKICAgICAvLyBDaGFyYWN0ZXIgdHlwZXMgYXJlIGRpdmlkZWQgaW50byB0
d28gZ3JvdXBzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXkgY2FuIGJlIHBhcnQgb2YgYW4KICAg
ICAvLyBpZGVudGlmaWVyIG9yIG5vdC4gVGhvc2Ugd2hvc2UgdHlwZSB2YWx1ZSBpcyBsZXNzIG9y
IGVxdWFsIHRoYW4gQ2hhcmFjdGVyT3RoZXJJZGVudGlmaWVyUGFydCBjYW4gYmUKICAgICAvLyBw
YXJ0IG9mIGFuIGlkZW50aWZpZXIuIChTZWUgdGhlIENoYXJhY3RlclR5cGUgZGVmaW5pdGlvbiBm
b3IgbW9yZSBkZXRhaWxzLikKLSAgICByZXR1cm4gdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbc3Rh
dGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjKV0gPD0gQ2hhcmFjdGVyT3RoZXJJZGVudGlmaWVy
UGFydDsKKyAgICByZXR1cm4gdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbc3RhdGljX2Nhc3Q8TENo
YXI+KGMpXSA8PSBDaGFyYWN0ZXJPdGhlcklkZW50aWZpZXJQYXJ0OwogfQogCiBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRQYXJ0KGNoYXIxNl90IGMpCiB7
CiAgICAgaWYgKGlzTGF0aW4xKGMpKSBbW2xpa2VseV1dCi0gICAgICAgIHJldHVybiBpc0lkZW50
UGFydChzdGF0aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGMpKTsKKyAgICAgICAgcmV0dXJuIGlz
SWRlbnRQYXJ0KHN0YXRpY19jYXN0PExDaGFyPihjKSk7CiAgICAgcmV0dXJuICFVMTZfSVNfU1VS
Uk9HQVRFKGMpICYmIGlzSWRlbnRQYXJ0KHN0YXRpY19jYXN0PGNoYXIzMl90PihjKSk7CiB9CiAK
LXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2Fubm90QmVJZGVudFBhcnRPckVzY2FwZVN0YXJ0
KExhdGluMUNoYXJhY3RlciBjKQorc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5ub3RCZUlk
ZW50UGFydE9yRXNjYXBlU3RhcnQoTENoYXIgYykKIHsKICAgICByZXR1cm4gIWlzSWRlbnRQYXJ0
KGMpICYmIGMgIT0gJ1xcJzsKIH0KQEAgLTgxMiwxMyArODEyLDEzIEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIGJvb2wgY2Fubm90QmVJZGVudFBhcnRPckVzY2FwZVN0YXJ0KExhdGluMUNoYXJhY3Rl
ciBjKQogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5ub3RCZUlkZW50UGFydE9yRXNjYXBl
U3RhcnQoY2hhcjE2X3QgYykKIHsKICAgICBpZiAoaXNMYXRpbjEoYykpIFtbbGlrZWx5XV0KLSAg
ICAgICAgcmV0dXJuIGNhbm5vdEJlSWRlbnRQYXJ0T3JFc2NhcGVTdGFydChzdGF0aWNfY2FzdDxM
YXRpbjFDaGFyYWN0ZXI+KGMpKTsKKyAgICAgICAgcmV0dXJuIGNhbm5vdEJlSWRlbnRQYXJ0T3JF
c2NhcGVTdGFydChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOwogICAgIHJldHVybiBMZXhlcjxjaGFy
MTZfdD46OmlzV2hpdGVTcGFjZShjKSB8fCBMZXhlcjxjaGFyMTZfdD46OmlzTGluZVRlcm1pbmF0
b3IoYyk7CiB9CiAKIAogdGVtcGxhdGU8PgotQUxXQVlTX0lOTElORSBjaGFyMzJfdCBMZXhlcjxM
YXRpbjFDaGFyYWN0ZXI+OjpjdXJyZW50Q29kZVBvaW50KCkgY29uc3QKK0FMV0FZU19JTkxJTkUg
Y2hhcjMyX3QgTGV4ZXI8TENoYXI+OjpjdXJyZW50Q29kZVBvaW50KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9jdXJyZW50OwogfQpAQCAtODYxLDcgKzg2MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc0FTQ0lJT2N0YWxEaWdpdE9yU2VwYXJhdG9yKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQog
ICAgIHJldHVybiBpc0FTQ0lJT2N0YWxEaWdpdChjaGFyYWN0ZXIpIHx8IGNoYXJhY3RlciA9PSAn
Xyc7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTGF0aW4xQ2hhcmFjdGVyIHNpbmdsZUVzY2FwZShpbnQg
YykKK3N0YXRpYyBpbmxpbmUgTENoYXIgc2luZ2xlRXNjYXBlKGludCBjKQogewogICAgIGlmIChj
IDwgMTI4KSB7CiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGMpIDwgc3RkOjpz
aXplKHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJKSk7CkBAIC04NzQsNyArODc0
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6cmVjb3Jk
OChpbnQgYykKIHsKICAgICBBU1NFUlQoaXNMYXRpbjEoYykpOwotICAgIG1fYnVmZmVyOC5hcHBl
bmQoc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjKSk7CisgICAgbV9idWZmZXI4LmFwcGVu
ZChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAg
LTg4Miw3ICs4ODIsNyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6YXBwZW5kOChzdGQ6OnNwYW48
Y29uc3QgVD4gc3BhbikKIHsKICAgICBzaXplX3QgY3VycmVudFNpemUgPSBtX2J1ZmZlcjguc2l6
ZSgpOwogICAgIG1fYnVmZmVyOC5ncm93KGN1cnJlbnRTaXplICsgc3Bhbi5zaXplKCkpOwotICAg
IExhdGluMUNoYXJhY3RlciogcmF3QnVmZmVyID0gbV9idWZmZXI4Lm11dGFibGVTcGFuKCkuZGF0
YSgpICsgY3VycmVudFNpemU7CisgICAgTENoYXIqIHJhd0J1ZmZlciA9IG1fYnVmZmVyOC5tdXRh
YmxlU3BhbigpLmRhdGEoKSArIGN1cnJlbnRTaXplOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzcGFuLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIFQgYyA9IHNwYW5baV07CkBAIC04OTIs
NyArODkyLDcgQEAgaW5saW5lIHZvaWQgTGV4ZXI8VD46OmFwcGVuZDgoc3RkOjpzcGFuPGNvbnN0
IFQ+IHNwYW4pCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgTGV4ZXI8
VD46OmFwcGVuZDE2KHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHNwYW4pCitpbmxp
bmUgdm9pZCBMZXhlcjxUPjo6YXBwZW5kMTYoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBzcGFuKQog
ewogICAgIHNpemVfdCBjdXJyZW50U2l6ZSA9IG1fYnVmZmVyMTYuc2l6ZSgpOwogICAgIG1fYnVm
ZmVyMTYuZ3JvdyhjdXJyZW50U2l6ZSArIHNwYW4uc2l6ZSgpKTsKQEAgLTk0OSw3ICs5NDksNyBA
QCBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciog
aWRlbnQpCiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKICAgICAKIHRlbXBsYXRlIDw+Ci10ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPExhdGluMUNoYXJhY3Rlcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSog
dG9rZW5EYXRhLCBPcHRpb25TZXQ8TGV4ZXJGbGFncz4gbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RN
b2RlKQordGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSog
dG9rZW5EYXRhLCBPcHRpb25TZXQ8TGV4ZXJGbGFncz4gbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RN
b2RlKQogewogICAgIHRva2VuRGF0YS0+ZXNjYXBlZCA9IGZhbHNlOwogICAgIGNvbnN0IHB0cmRp
ZmZfdCByZW1haW5pbmcgPSBtX2NvZGVFbmQgLSBtX2NvZGU7CkBAIC05NzMsNyArOTczLDcgQEAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMYXRpbjFDaGEKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IExh
dGluMUNoYXJhY3RlciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworICAg
IGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAKICAg
ICBpZiAoaXNQcml2YXRlTmFtZSkKICAgICAgICAgc2hpZnQoKTsKQEAgLTExODcsNyArMTE4Nyw3
IEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93
Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAot
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjaGFyYWN0ZXJSZXF1aXJlc1BhcnNlU3RyaW5nU2xv
d0Nhc2UoTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3RlcikKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJv
b2wgY2hhcmFjdGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3RlcikK
IHsKICAgICByZXR1cm4gY2hhcmFjdGVyIDwgMHhFOwogfQpAQCAtMTIwOCw3ICsxMjA4LDcgQEAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIHR5cGVuYW1l
IExleGVyPFQ+OjpTdHJpbmdQYXJzZVIKIAogICAgIGNvbnN0IFQqIHN0cmluZ1N0YXJ0ID0gY3Vy
cmVudFNvdXJjZVB0cigpOwogCi0gICAgdXNpbmcgVW5zaWduZWRUeXBlID0gU0lNRDo6U2FtZVNp
emVVbnNpZ25lZEludGVnZXI8VD47CisgICAgdXNpbmcgVW5zaWduZWRUeXBlID0gc3RkOjptYWtl
X3Vuc2lnbmVkX3Q8VD47CiAgICAgYXV0byBxdW90ZU1hc2sgPSBTSU1EOjpzcGxhdDxVbnNpZ25l
ZFR5cGU+KHN0cmluZ1F1b3RlQ2hhcmFjdGVyKTsKICAgICBjb25zdGV4cHIgYXV0byBlc2NhcGVN
YXNrID0gU0lNRDo6c3BsYXQ8VW5zaWduZWRUeXBlPignXFwnKTsKICAgICBjb25zdGV4cHIgYXV0
byBjb250cm9sTWFzayA9IFNJTUQ6OnNwbGF0PFVuc2lnbmVkVHlwZT4oMHhFKTsKQEAgLTEyMTcs
NyArMTIxNyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lO
TElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgIGF1dG8gcXVvdGVz
ID0gU0lNRDo6ZXF1YWwoaW5wdXQsIHF1b3RlTWFzayk7CiAgICAgICAgIGF1dG8gZXNjYXBlcyA9
IFNJTUQ6OmVxdWFsKGlucHV0LCBlc2NhcGVNYXNrKTsKICAgICAgICAgYXV0byBjb250cm9scyA9
IFNJTUQ6Omxlc3NUaGFuKGlucHV0LCBjb250cm9sTWFzayk7Ci0gICAgICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19zYW1lX3Y8VCwgTGF0aW4xQ2hhcmFjdGVyPiB8fCAhc2hvdWxkQnVpbGRTdHJp
bmdzKSB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8VCwgTENoYXI+IHx8
ICFzaG91bGRCdWlsZFN0cmluZ3MpIHsKICAgICAgICAgICAgIGF1dG8gbWFzayA9IFNJTUQ6OmJp
dE9yKHF1b3RlcywgZXNjYXBlcywgY29udHJvbHMpOwogICAgICAgICAgICAgcmV0dXJuIFNJTUQ6
OmZpbmRGaXJzdE5vblplcm9JbmRleChtYXNrKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEyMzUs
NyArMTIzNSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lO
TElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgIGlmIChjaGFyYWN0
ZXIgPCAweEUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfc2FtZV92PFQsIExhdGluMUNoYXJhY3Rlcj4gfHwgIXNob3VsZEJ1aWxkU3Ry
aW5ncykKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxULCBMQ2hhcj4gfHwg
IXNob3VsZEJ1aWxkU3RyaW5ncykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcmV0dXJuICFpc0xhdGluMShjaGFyYWN0ZXIpOwpAQCAtMTI2Niw3
ICsxMjY2LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5M
SU5FIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVIKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIExhdGluMUNoYXJhY3RlciBlc2NhcGUgPSBz
aW5nbGVFc2NhcGUobV9jdXJyZW50KTsKKyAgICAgICAgICAgIExDaGFyIGVzY2FwZSA9IHNpbmds
ZUVzY2FwZShtX2N1cnJlbnQpOwogCiAgICAgICAgICAgICAvLyBNb3N0IGNvbW1vbiBlc2NhcGUg
c2VxdWVuY2VzIGZpcnN0LgogICAgICAgICAgICAgaWYgKGVzY2FwZSkgewpAQCAtMTQzMiw3ICsx
NDMyLDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBhdXRvIExleGVyPFQ+
OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9rZW5EYXQKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIExhdGluMUNoYXJhY3RlciBlc2NhcGUgPSBzaW5n
bGVFc2NhcGUobV9jdXJyZW50KTsKKyAgICAgICAgICAgIExDaGFyIGVzY2FwZSA9IHNpbmdsZUVz
Y2FwZShtX2N1cnJlbnQpOwogCiAgICAgICAgICAgICAvLyBNb3N0IGNvbW1vbiBlc2NhcGUgc2Vx
dWVuY2VzIGZpcnN0CiAgICAgICAgICAgICBpZiAoZXNjYXBlKSB7CkBAIC0xNDUyLDYgKzE0NTIs
NyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IGF1dG8gTGV4ZXI8VD46OnBh
cnNlU3RyaW5nU2xvd0Nhc2UoSlNUb2tlbkRhdAogICAgICAgICB9CiAgICAgICAgIC8vIEZhc3Qg
Y2hlY2sgZm9yIGNoYXJhY3RlcnMgdGhhdCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAg
ICAgIC8vIENhdGNoZXMgMCwgXG4sIGFuZCBcciBhcyBlZmZpY2llbnRseSBhcyBwb3NzaWJsZSwg
YW5kIGxldHMgdGhyb3VnaCBhbGwgY29tbW9uIEFTQ0lJIGNoYXJhY3RlcnMuCisgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUsICJMZXhlciBleHBlY3RzIGFu
IHVuc2lnbmVkIGNoYXJhY3RlciB0eXBlIik7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPCAweEUp
IFtbdW5saWtlbHldXSB7CiAgICAgICAgICAgICAvLyBOZXctbGluZSBvciBlbmQgb2YgaW5wdXQg
aXMgbm90IGFsbG93ZWQKICAgICAgICAgICAgIGlmIChhdEVuZCgpIHx8IG1fY3VycmVudCA9PSAn
XHInIHx8IG1fY3VycmVudCA9PSAnXG4nKSB7CkBAIC0xNDg3LDcgKzE0ODgsNyBAQCB0eXBlbmFt
ZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRl
cmFsKEpTVG9rZW5EYXRhKgogICAgICAgICAgICAgICAgIGFwcGVuZDE2KHsgc3RyaW5nU3RhcnQs
IGN1cnJlbnRTb3VyY2VQdHIoKSB9KTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAg
ICAgIExhdGluMUNoYXJhY3RlciBlc2NhcGUgPSBzaW5nbGVFc2NhcGUobV9jdXJyZW50KTsKKyAg
ICAgICAgICAgIExDaGFyIGVzY2FwZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOwogCiAgICAg
ICAgICAgICAvLyBNb3N0IGNvbW1vbiBlc2NhcGUgc2VxdWVuY2VzIGZpcnN0LgogICAgICAgICAg
ICAgaWYgKGVzY2FwZSkgewpAQCAtMTY2MCw3ICsxNjYxLDcgQEAgQUxXQVlTX0lOTElORSBhdXRv
IExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpIC0+IHN0ZDo6b3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1
bHQ+CiAgICAgaW50IGRpZ2l0ID0gbWF4aW11bURpZ2l0cyAtIDE7CiAgICAgLy8gVGVtcG9yYXJ5
IGJ1ZmZlciBmb3IgdGhlIGRpZ2l0cy4gTWFrZXMgZWFzaWVyCiAgICAgLy8gdG8gcmVjb25zdHJ1
Y3QgdGhlIGlucHV0IGNoYXJhY3RlcnMgd2hlbiBuZWVkZWQuCi0gICAgTGF0aW4xQ2hhcmFjdGVy
IGRpZ2l0c1ttYXhpbXVtRGlnaXRzXTsKKyAgICBMQ2hhciBkaWdpdHNbbWF4aW11bURpZ2l0c107
CiAKICAgICBkbyB7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CkBAIC0xNzE2LDcg
KzE3MTcsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKSAtPiBz
dGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIGludCBkaWdpdCA9IG1heGltdW1E
aWdpdHMgLSAxOwogICAgIC8vIFRlbXBvcmFyeSBidWZmZXIgZm9yIHRoZSBkaWdpdHMuIE1ha2Vz
IGVhc2llcgogICAgIC8vIHRvIHJlY29uc3RydWN0IHRoZSBpbnB1dCBjaGFyYWN0ZXJzIHdoZW4g
bmVlZGVkLgotICAgIExhdGluMUNoYXJhY3RlciBkaWdpdHNbbWF4aW11bURpZ2l0c107CisgICAg
TENoYXIgZGlnaXRzW21heGltdW1EaWdpdHNdOwogCiAgICAgZG8gewogICAgICAgICBpZiAobV9j
dXJyZW50ID09ICdfJykgewpAQCAtMTc3Nyw3ICsxNzc4LDcgQEAgQUxXQVlTX0lOTElORSBhdXRv
IExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKSAtPiBzdGQ6Om9wdGlvbmFsPE51bWJlclBhcnNlUmVz
dWx0PgogICAgICAgICBpbnQgZGlnaXQgPSBtYXhpbXVtRGlnaXRzIC0gMTsKICAgICAgICAgLy8g
VGVtcG9yYXJ5IGJ1ZmZlciBmb3IgdGhlIGRpZ2l0cy4gTWFrZXMgZWFzaWVyCiAgICAgICAgIC8v
IHRvIHJlY29uc3RydWN0IHRoZSBpbnB1dCBjaGFyYWN0ZXJzIHdoZW4gbmVlZGVkLgotICAgICAg
ICBMYXRpbjFDaGFyYWN0ZXIgZGlnaXRzW21heGltdW1EaWdpdHNdOworICAgICAgICBMQ2hhciBk
aWdpdHNbbWF4aW11bURpZ2l0c107CiAKICAgICAgICAgZG8gewogICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA9PSAnXycpIHsKQEAgLTE5MDgsMTQgKzE5MDksMTQgQEAgQUxXQVlTX0lOTElORSB2
b2lkIExleGVyPFQ+OjpwYXJzZUNvbW1lbnREaXJlY3RpdmUoKQogICAgIH0KIH0KIAotQUxXQVlT
X0lOTElORSBjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIHBhcnNlQ29tbWVudERpcmVjdGl2ZVZhbHVl
U0lNRChjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIHN0YXJ0LCBjb25zdCBMYXRpbjFDaGFyYWN0ZXIq
IGVuZCkKK0FMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIHBhcnNlQ29tbWVudERpcmVjdGl2ZVZh
bHVlU0lNRChjb25zdCBMQ2hhciogc3RhcnQsIGNvbnN0IExDaGFyKiBlbmQpCiB7Ci0gICAgY29u
c3RleHByIGF1dG8gY29udHJvbE1pbkNoYXIgPSBTSU1EOjpzcGxhdDxMYXRpbjFDaGFyYWN0ZXI+
KDB4MDkpOyAvLyAnXHQnCi0gICAgY29uc3RleHByIGF1dG8gY29udHJvbE1heENoYXIgPSBTSU1E
OjpzcGxhdDxMYXRpbjFDaGFyYWN0ZXI+KDB4MEQpOyAvLyAnXHInCi0gICAgY29uc3RleHByIGF1
dG8gc3BhY2VDaGFyID0gU0lNRDo6c3BsYXQ8TGF0aW4xQ2hhcmFjdGVyPigweDIwKTsgLy8gJyAn
Ci0gICAgY29uc3RleHByIGF1dG8gcXVvdGVDaGFyID0gU0lNRDo6c3BsYXQ8TGF0aW4xQ2hhcmFj
dGVyPigweDIyKTsgLy8gJyInCi0gICAgY29uc3RleHByIGF1dG8gc3F1b3RlQ2hhciA9IFNJTUQ6
OnNwbGF0PExhdGluMUNoYXJhY3Rlcj4oMHgyNyk7IC8vICdcJycKLSAgICBjb25zdGV4cHIgYXV0
byBuYnNwQ2hhciA9IFNJTUQ6OnNwbGF0PExhdGluMUNoYXJhY3Rlcj4oMHhBMCk7IC8vIG5vbi1i
cmVha2luZyBzcGFjZQorICAgIGNvbnN0ZXhwciBhdXRvIGNvbnRyb2xNaW5DaGFyID0gU0lNRDo6
c3BsYXQ8TENoYXI+KDB4MDkpOyAvLyAnXHQnCisgICAgY29uc3RleHByIGF1dG8gY29udHJvbE1h
eENoYXIgPSBTSU1EOjpzcGxhdDxMQ2hhcj4oMHgwRCk7IC8vICdccicKKyAgICBjb25zdGV4cHIg
YXV0byBzcGFjZUNoYXIgPSBTSU1EOjpzcGxhdDxMQ2hhcj4oMHgyMCk7IC8vICcgJworICAgIGNv
bnN0ZXhwciBhdXRvIHF1b3RlQ2hhciA9IFNJTUQ6OnNwbGF0PExDaGFyPigweDIyKTsgLy8gJyIn
CisgICAgY29uc3RleHByIGF1dG8gc3F1b3RlQ2hhciA9IFNJTUQ6OnNwbGF0PExDaGFyPigweDI3
KTsgLy8gJ1wnJworICAgIGNvbnN0ZXhwciBhdXRvIG5ic3BDaGFyID0gU0lNRDo6c3BsYXQ8TENo
YXI+KDB4QTApOyAvLyBub24tYnJlYWtpbmcgc3BhY2UKIAogICAgIGF1dG8gdmVjdG9yTWF0Y2gg
PSBbJl0oYXV0byBpbnB1dCkgQUxXQVlTX0lOTElORV9MQU1CREEgewogICAgICAgICBhdXRvIGNv
bnRyb2xzID0gU0lNRDo6Yml0QW5kKApAQCAtMTkzMiw4ICsxOTMzLDggQEAgQUxXQVlTX0lOTElO
RSBjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIHBhcnNlQ29tbWVudERpcmVjdGl2ZVZhbHVlU0lNRChj
b25zdCBMYXRpbjEKICAgICB9OwogCiAgICAgYXV0byBzY2FsYXJNYXRjaCA9IFsmXShhdXRvIGNo
YXJhY3RlcikgQUxXQVlTX0lOTElORV9MQU1CREEgewotICAgICAgICByZXR1cm4gTGV4ZXI8TGF0
aW4xQ2hhcmFjdGVyPjo6aXNXaGl0ZVNwYWNlKGNoYXJhY3RlcikKLSAgICAgICAgICAgIHx8IExl
eGVyPExhdGluMUNoYXJhY3Rlcj46OmlzTGluZVRlcm1pbmF0b3IoY2hhcmFjdGVyKQorICAgICAg
ICByZXR1cm4gTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoY2hhcmFjdGVyKQorICAgICAgICAg
ICAgfHwgTGV4ZXI8TENoYXI+Ojppc0xpbmVUZXJtaW5hdG9yKGNoYXJhY3RlcikKICAgICAgICAg
ICAgIHx8IGNoYXJhY3RlciA9PSAnIicKICAgICAgICAgICAgIHx8IGNoYXJhY3RlciA9PSAnXCcn
OwogICAgIH07CkBAIC0xOTQ3LDcgKzE5NDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFN0cmluZyBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFycwog
ICAgIHNraXBXaGl0ZXNwYWNlKCk7CiAgICAgY2hhcjE2X3QgbWVyZ2VkQ2hhcmFjdGVyQml0cyA9
IDA7CiAgICAgYXV0byBzdHJpbmdTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKLSAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PENoYXJhY3RlclR5cGUsIExhdGluMUNoYXJhY3Rlcj4p
IHsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PENoYXJhY3RlclR5cGUsIExDaGFy
PikgewogICAgICAgICBtX2NvZGUgPSBwYXJzZUNvbW1lbnREaXJlY3RpdmVWYWx1ZVNJTUQoc3Ry
aW5nU3RhcnQsIG1fY29kZUVuZCk7CiAgICAgICAgIGlmIChtX2NvZGUgPCBtX2NvZGVFbmQpCiAg
ICAgICAgICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwpAQCAtMjAyMCwxNCArMjAyMSwxNCBAQCBz
dGFydDoKICAgICBBU1NFUlQoY3VycmVudE9mZnNldCgpID49IGN1cnJlbnRMaW5lU3RhcnRPZmZz
ZXQoKSk7CiAgICAgdG9rZW5SZWNvcmQtPm1fc3RhcnRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlv
bigpOwogCi0gICAgTGF0aW4xQ2hhcmFjdGVyIHR5cGUgPSBtX2N1cnJlbnQ7CisgICAgTENoYXIg
dHlwZSA9IG1fY3VycmVudDsKIAogICAgIGlmIChhdEVuZCgpKSB7CiAgICAgICAgIHRva2VuID0g
RU9GVE9LOwogICAgICAgICBnb3RvIHJldHVyblRva2VuOwogICAgIH0KIAotICAgIGlmIGNvbnN0
ZXhwciAoIXN0ZDo6aXNfc2FtZV92PFQsIExhdGluMUNoYXJhY3Rlcj4pIHsKKyAgICBpZiBjb25z
dGV4cHIgKCFzdGQ6OmlzX3NhbWVfdjxULCBMQ2hhcj4pIHsKICAgICAgICAgaWYgKCFpc0xhdGlu
MShtX2N1cnJlbnQpKSBbW3VubGlrZWx5XV0gewogICAgICAgICAgICAgY2hhcjMyX3QgY29kZVBv
aW50OwogICAgICAgICAgICAgVTE2X0dFVChtX2NvZGUsIDAsIDAsIG1fY29kZUVuZCAtIG1fY29k
ZSwgY29kZVBvaW50KTsKQEAgLTI3NzgsNyArMjc3OSw3IEBAIHN0YXJ0OgogICAgICAgICBhdXRv
IG5leHRDaGFyYWN0ZXIgPSBwZWVrKDEpOwogICAgICAgICBpZiAoaXNMYXRpbjEobmV4dENoYXJh
Y3RlcikpIFtbbGlrZWx5XV0gewogICAgICAgICAgICAgLy8gVGhpcyBxdWlja2x5IGRldGVjdHMg
dGhlIGNoYXJhY3RlciBpcyBub3QgYSBwYXJ0IG9mIGlkZW50aWZpZXItcGFydCAqYW5kKiBiYWNr
LXNsYXNoLgotICAgICAgICAgICAgaWYgKHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzW3N0YXRpY19j
YXN0PExhdGluMUNoYXJhY3Rlcj4obmV4dENoYXJhY3RlcildID4gQ2hhcmFjdGVyQmFja1NsYXNo
KSB7CisgICAgICAgICAgICBpZiAodHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbc3RhdGljX2Nhc3Q8
TENoYXI+KG5leHRDaGFyYWN0ZXIpXSA+IENoYXJhY3RlckJhY2tTbGFzaCkgewogICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8gY2hhcmFjdGVyID0gbV9jdXJyZW50OwogICAgICAgICAgICAgICAg
IHNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJG
bGFnczo6RG9udEJ1aWxkS2V5d29yZHMpKQpAQCAtMjgzNyw3ICsyODM4LDcgQEAgc3RhcnQ6CiAK
ICAgICAgICAgYm9vbCBpc1ZhbGlkUHJpdmF0ZU5hbWU7CiAgICAgICAgIGlmIChpc0xhdGluMShu
ZXh0KSkgW1tsaWtlbHldXQotICAgICAgICAgICAgaXNWYWxpZFByaXZhdGVOYW1lID0gdHlwZXNP
ZkxhdGluMUNoYXJhY3RlcnNbc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihuZXh0KV0gPT0g
Q2hhcmFjdGVyTGF0aW4xSWRlbnRpZmllclN0YXJ0IHx8IG5leHQgPT0gJ1xcJzsKKyAgICAgICAg
ICAgIGlzVmFsaWRQcml2YXRlTmFtZSA9IHR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzW3N0YXRpY19j
YXN0PExDaGFyPihuZXh0KV0gPT0gQ2hhcmFjdGVyTGF0aW4xSWRlbnRpZmllclN0YXJ0IHx8IG5l
eHQgPT0gJ1xcJzsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9jb2RlICsg
MSA8IG1fY29kZUVuZCk7CiAgICAgICAgICAgICBjaGFyMzJfdCBjb2RlUG9pbnQ7CkBAIC0yOTY4
LDcgKzI5NjksNyBAQCBpblNpbmdsZUxpbmVDb21tZW50OgogICAgIHsKICAgICAgICAgYXV0byBl
bmRQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbigpOwogCi0gICAgICAgIHVzaW5nIFVuc2lnbmVk
VHlwZSA9IFNJTUQ6OlNhbWVTaXplVW5zaWduZWRJbnRlZ2VyPFQ+OworICAgICAgICB1c2luZyBV
bnNpZ25lZFR5cGUgPSBzdGQ6Om1ha2VfdW5zaWduZWRfdDxUPjsKICAgICAgICAgY29uc3RleHBy
IGF1dG8gbGluZUZlZWRNYXNrID0gU0lNRDo6c3BsYXQ8VW5zaWduZWRUeXBlPignXG4nKTsKICAg
ICAgICAgY29uc3RleHByIGF1dG8gY2FycmlhZ2VSZXR1cm5NYXNrID0gU0lNRDo6c3BsYXQ8VW5z
aWduZWRUeXBlPignXHInKTsKICAgICAgICAgY29uc3RleHByIGF1dG8gdTIwMjhNYXNrID0gU0lN
RDo6c3BsYXQ8VW5zaWduZWRUeXBlPihzdGF0aWNfY2FzdDxVbnNpZ25lZFR5cGU+KDB4MjAyOCkp
OwpAQCAtMjk3Niw3ICsyOTc3LDcgQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKICAgICAgICAgYXV0
byB2ZWN0b3JNYXRjaCA9IFsmXShhdXRvIGlucHV0KSBBTFdBWVNfSU5MSU5FX0xBTUJEQSB7CiAg
ICAgICAgICAgICBhdXRvIGxpbmVGZWVkID0gU0lNRDo6ZXF1YWwoaW5wdXQsIGxpbmVGZWVkTWFz
ayk7CiAgICAgICAgICAgICBhdXRvIGNhcnJpYWdlUmV0dXJuID0gU0lNRDo6ZXF1YWwoaW5wdXQs
IGNhcnJpYWdlUmV0dXJuTWFzayk7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
c2FtZV92PFQsIExhdGluMUNoYXJhY3Rlcj4pIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19zYW1lX3Y8VCwgTENoYXI+KSB7CiAgICAgICAgICAgICAgICAgYXV0byBtYXNrID0g
U0lNRDo6Yml0T3IobGluZUZlZWQsIGNhcnJpYWdlUmV0dXJuKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU0lNRDo6ZmluZEZpcnN0Tm9uWmVyb0luZGV4KG1hc2spOwogICAgICAgICAgICAgfSBl
bHNlIHsKQEAgLTMwMzEsNyArMzAzMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGlj
IGlubGluZSB2b2lkIG9yQ2hhcmFjdGVyKGNoYXIxNl90JiwgY2hhcjE2X3QpOwogCiB0ZW1wbGF0
ZSA8PgotaW5saW5lIHZvaWQgb3JDaGFyYWN0ZXI8TGF0aW4xQ2hhcmFjdGVyPihjaGFyMTZfdCYs
IGNoYXIxNl90KSB7IH0KK2lubGluZSB2b2lkIG9yQ2hhcmFjdGVyPExDaGFyPihjaGFyMTZfdCYs
IGNoYXIxNl90KSB7IH0KIAogdGVtcGxhdGUgPD4KIGlubGluZSB2b2lkIG9yQ2hhcmFjdGVyPGNo
YXIxNl90PihjaGFyMTZfdCYgb3JBY2N1bXVsYXRvciwgY2hhcjE2X3QgY2hhcmFjdGVyKQpAQCAt
MzA5OSw5ICszMTAwLDkgQEAgSlNUb2tlblR5cGUgTGV4ZXI8VD46OnNjYW5SZWdFeHAoSlNUb2tl
biogdG9rZW5SZWNvcmQsIGNoYXIxNl90IHBhdHRlcm5QcmVmaXgpCiAKICAgICBBU1NFUlQobV9i
dWZmZXI4LmlzRW1wdHkoKSk7CiAgICAgd2hpbGUgKGlzTGF0aW4xKG1fY3VycmVudCkpIFtbbGlr
ZWx5XV0gewotICAgICAgICBpZiAoIWlzSWRlbnRQYXJ0KHN0YXRpY19jYXN0PExhdGluMUNoYXJh
Y3Rlcj4obV9jdXJyZW50KSkpCisgICAgICAgIGlmICghaXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8
TENoYXI+KG1fY3VycmVudCkpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHJlY29yZDgo
c3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihtX2N1cnJlbnQpKTsKKyAgICAgICAgcmVjb3Jk
OChzdGF0aWNfY2FzdDxMQ2hhcj4obV9jdXJyZW50KSk7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAg
fQogCkBAIC0zMTU3LDcgKzMxNTgsNyBAQCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiB7CiAgICAg
bV9hcmVuYSA9IG51bGxwdHI7CiAKLSAgICBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyPiBuZXdCdWZm
ZXI4OworICAgIFZlY3RvcjxMQ2hhcj4gbmV3QnVmZmVyODsKICAgICBtX2J1ZmZlcjguc3dhcChu
ZXdCdWZmZXI4KTsKIAogICAgIFZlY3RvcjxjaGFyMTZfdD4gbmV3QnVmZmVyMTY7CkBAIC0zMTcw
LDcgKzMxNzEsNyBAQCB2b2lkIExleGVyPFQ+OjpjbGVhcigpCiB9CiAKIC8vIEluc3RhbnRpYXRl
IHRoZSB0d28gZmxhdm9ycyBvZiBMZXhlciB3ZSBuZWVkIGluc3RlYWQgb2YgcHV0dGluZyBtb3N0
IG9mIHRoaXMgZmlsZSBpbiBMZXhlci5oCi10ZW1wbGF0ZSBjbGFzcyBMZXhlcjxMYXRpbjFDaGFy
YWN0ZXI+OwordGVtcGxhdGUgY2xhc3MgTGV4ZXI8TENoYXI+OwogdGVtcGxhdGUgY2xhc3MgTGV4
ZXI8Y2hhcjE2X3Q+OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaAppbmRleCBlNzFkNzJlMTRjNWMuLmI3MGZkYWQzMjU2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWNvcmQxNihpbnQpOwogICAgIHZvaWQgcmVjb3JkMTYoVCk7CiAgICAgdm9pZCByZWNv
cmRVbmljb2RlQ29kZVBvaW50KGNoYXIzMl90KTsKLSAgICB2b2lkIGFwcGVuZDE2KHN0ZDo6c3Bh
bjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsKKyAgICB2b2lkIGFwcGVuZDE2KHN0ZDo6c3Bhbjxj
b25zdCBMQ2hhcj4pOwogICAgIHZvaWQgYXBwZW5kMTYoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90
PiBjaGFyYWN0ZXJzKSB7IG1fYnVmZmVyMTYuYXBwZW5kKGNoYXJhY3RlcnMpOyB9CiAKICAgICBz
dGF0aWMgY29uc3RleHByIGNoYXIzMl90IGVycm9yQ29kZVBvaW50ID0gMHhGRkZGRkZGRnU7CkBA
IC0xNjYsNyArMTY2LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFrZUlkZW50aWZp
ZXIoc3RkOjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGU+KTsKIAotICAgIEFMV0FZU19JTkxJTkUg
Y29uc3QgSWRlbnRpZmllciogbWFrZUxDaGFySWRlbnRpZmllcihzdGQ6OnNwYW48Y29uc3QgTGF0
aW4xQ2hhcmFjdGVyPik7CisgICAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBtYWtl
TENoYXJJZGVudGlmaWVyKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4pOwogICAgIEFMV0FZU19JTkxJ
TkUgY29uc3QgSWRlbnRpZmllciogbWFrZUxDaGFySWRlbnRpZmllcihzdGQ6OnNwYW48Y29uc3Qg
Y2hhcjE2X3Q+KTsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIG1ha2VSaWdo
dFNpemVkSWRlbnRpZmllcihzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+LCBjaGFyMTZfdCBvckFs
bENoYXJzKTsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIG1ha2VJZGVudGlm
aWVyTENoYXJGcm9tVUNoYXIoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7CkBAIC0yMTQsNyAr
MjE0LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9saW5lTnVtYmVyOwogICAgIGludCBtX2xhc3RM
aW5lTnVtYmVyOwogCi0gICAgVmVjdG9yPExhdGluMUNoYXJhY3Rlcj4gbV9idWZmZXI4OworICAg
IFZlY3RvcjxMQ2hhcj4gbV9idWZmZXI4OwogICAgIFZlY3RvcjxjaGFyMTZfdD4gbV9idWZmZXIx
NjsKICAgICBWZWN0b3I8Y2hhcjE2X3Q+IG1fYnVmZmVyRm9yUmF3VGVtcGxhdGVTdHJpbmcxNjsK
ICAgICBib29sIG1faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbjsKQEAgLTI1MSw3ICsyNTEs
NyBAQCBXVEZfTUFLRV9UWk9ORV9BTExPQ0FURURfVEVNUExBVEVfSU1QTCh0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiwgTGV4ZXI8VD4pOwogSlNfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIGNvbnN0IFdURjo6
Qml0U2V0PDI1Nj4gd2hpdGVTcGFjZVRhYmxlOwogCiB0ZW1wbGF0ZSA8PgotQUxXQVlTX0lOTElO
RSBib29sIExleGVyPExhdGluMUNoYXJhY3Rlcj46OmlzV2hpdGVTcGFjZShMYXRpbjFDaGFyYWN0
ZXIgY2gpCitBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoTENo
YXIgY2gpCiB7CiAgICAgcmV0dXJuIHdoaXRlU3BhY2VUYWJsZS5nZXQoY2gpOwogfQpAQCAtMjU5
LDExICsyNTksMTEgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPExhdGluMUNoYXJhY3Rlcj46
OmlzV2hpdGVTcGFjZShMYXRpbjFDaGFyYWN0ZXIgY2gpCiB0ZW1wbGF0ZSA8PgogQUxXQVlTX0lO
TElORSBib29sIExleGVyPGNoYXIxNl90Pjo6aXNXaGl0ZVNwYWNlKGNoYXIxNl90IGNoKQogewot
ICAgIHJldHVybiBpc0xhdGluMShjaCkgPyBMZXhlcjxMYXRpbjFDaGFyYWN0ZXI+Ojppc1doaXRl
U3BhY2Uoc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjaCkpIDogKHVfY2hhclR5cGUoY2gp
ID09IFVfU1BBQ0VfU0VQQVJBVE9SIHx8IGNoID09IGJ5dGVPcmRlck1hcmspOworICAgIHJldHVy
biBpc0xhdGluMShjaCkgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNfY2FzdDxM
Q2hhcj4oY2gpKSA6ICh1X2NoYXJUeXBlKGNoKSA9PSBVX1NQQUNFX1NFUEFSQVRPUiB8fCBjaCA9
PSBieXRlT3JkZXJNYXJrKTsKIH0KIAogdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxMYXRpbjFDaGFyYWN0ZXI+Ojppc0xpbmVUZXJtaW5hdG9yKExhdGluMUNoYXJhY3RlciBj
aCkKK0FMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxMQ2hhcj46OmlzTGluZVRlcm1pbmF0b3IoTENo
YXIgY2gpCiB7CiAgICAgcmV0dXJuIGNoID09ICdccicgfHwgY2ggPT0gJ1xuJzsKIH0KQEAgLTI5
NCw3ICsyOTQsNyBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+Ojpt
YWtlSWRlbnRpZmllcihzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdAogfQogCiB0ZW1wbGF0ZSA8Pgot
QUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxMYXRpbjFDaGFyYWN0ZXI+Ojpt
YWtlUmlnaHRTaXplZElkZW50aWZpZXIoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyYWN0
ZXJzLCBjaGFyMTZfdCkKK0FMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8TENo
YXI+OjptYWtlUmlnaHRTaXplZElkZW50aWZpZXIoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBj
aGFyYWN0ZXJzLCBjaGFyMTZfdCkKIHsKICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlm
aWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hhcmFjdGVycyk7CiB9CkBAIC0zMTUsNyArMzE1LDcg
QEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUVtcHR5SWRl
bnRpZmllcigpCiB9CiAKIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8TGF0
aW4xQ2hhcmFjdGVyPjo6c2V0Q29kZVN0YXJ0KFN0cmluZ1ZpZXcgc291cmNlU3RyaW5nKQorQUxX
QVlTX0lOTElORSB2b2lkIExleGVyPExDaGFyPjo6c2V0Q29kZVN0YXJ0KFN0cmluZ1ZpZXcgc291
cmNlU3RyaW5nKQogewogICAgIEFTU0VSVChzb3VyY2VTdHJpbmcuaXM4Qml0KCkpOwogICAgIG1f
Y29kZVN0YXJ0ID0gc291cmNlU3RyaW5nLnNwYW44KCkuZGF0YSgpOwpAQCAtMzM1LDcgKzMzNSw3
IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VJZGVudGlm
aWVyTENoYXJGcm9tVUNoYXIoc3RkOjpzcGFuCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
QUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRp
ZmllcihzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQorQUxXQVlT
X0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUxDaGFySWRlbnRpZmllcihz
dGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiB7CiAgICAgcmV0dXJuICZtX2FyZW5h
LT5tYWtlSWRlbnRpZmllcihtX3ZtLCBjaGFyYWN0ZXJzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA4ZDkzZjdhNWMyYmQuLjI4MGU0OWExYzVhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNTcyNCw3ICs1NzI0LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKIH0KIAogLy8gSW5zdGFudGlhdGUgdGhlIHR3byBm
bGF2b3JzIG9mIFBhcnNlciB3ZSBuZWVkIGluc3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoaXMg
ZmlsZSBpbiBQYXJzZXIuaAotdGVtcGxhdGUgY2xhc3MgUGFyc2VyPExleGVyPExhdGluMUNoYXJh
Y3Rlcj4+OwordGVtcGxhdGUgY2xhc3MgUGFyc2VyPExleGVyPExDaGFyPj47CiB0ZW1wbGF0ZSBj
bGFzcyBQYXJzZXI8TGV4ZXI8Y2hhcjE2X3Q+PjsKICAgICAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzQxN2M0Njg0OTNkLi4wZTJl
MjEwODQ4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIxOCw3
ICsyMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3ZpZGVy
KCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMYXRpbjFDaGFy
YWN0ZXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgaW1wbGVtZW50YXRpb25WaXNpYmlsaXR5LCBidWls
dGluTW9kZSwgbGV4aWNhbGx5U2NvcGVkRmVhdHVyZXMsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwg
ZnVuY3Rpb25Nb2RlLCBzdXBlckJpbmRpbmcsIGNvbnN0cnVjdG9yS2luZCwgZGVyaXZlZENvbnRl
eHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0
ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGltcGxlbWVudGF0aW9uVmlzaWJpbGl0eSwgYnVpbHRpbk1v
ZGUsIGxleGljYWxseVNjb3BlZEZlYXR1cmVzLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIGZ1bmN0
aW9uTW9kZSwgc3VwZXJCaW5kaW5nLCBjb25zdHJ1Y3RvcktpbmQsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIGlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CiAgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQ
YXJzZWROb2RlPihlcnJvciwgbmFtZSwgUGFyc2luZ0NvbnRleHQ6Ok5vcm1hbCwgc3RkOjpudWxs
b3B0LCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgY2xhc3NFbGVtZW50RGVmaW5pdGlvbnMpOwog
ICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikg
ewogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKQEAgLTIyNjYsNyArMjI2Niw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZVJvb3ROb2RlKAogICAgIGJvb2wgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7
Ci0gICAgICAgIFBhcnNlcjxMZXhlcjxMYXRpbjFDaGFyYWN0ZXI+PiBwYXJzZXIodm0sIHNvdXJj
ZSwgaW1wbGVtZW50YXRpb25WaXNpYmlsaXR5LCBidWlsdGluTW9kZSwgbGV4aWNhbGx5U2NvcGVk
RmVhdHVyZXMsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgRnVuY3Rpb25Nb2RlOjpOb25lLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsIGlzRXZhbE5vZGUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgZGVidWdnZXJQ
YXJzZURhdGEsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgICAgIFBhcnNlcjxMZXhl
cjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBpbXBsZW1lbnRhdGlvblZpc2liaWxpdHksIGJ1
aWx0aW5Nb2RlLCBsZXhpY2FsbHlTY29wZWRGZWF0dXJlcywgc2NyaXB0TW9kZSwgcGFyc2VNb2Rl
LCBGdW5jdGlvbk1vZGU6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgaXNFdmFsTm9kZSwgRXZhbENv
bnRleHRUeXBlOjpOb25lLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uKTsKICAgICAgICAgcGFyc2VyLm92ZXJyaWRlQ29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxG
dW5jdGlvbkV4cHJlc3Npb25zKGNvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb25FeHBy
ZXNzaW9ucyk7CiAgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJv
ciwgbmFtZSwgUGFyc2luZ0NvbnRleHQ6Ok5vcm1hbCk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKQpAQCAtMjMwMiw3ICsyMzAyLDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxQcm9ncmFtTm9kZT4gcGFyc2VGdW5jdGlvbkZvckZ1bmN0aW9uQ29uc3RydWN0b3IoVk0m
IHZtLAogICAgIGJvb2wgaXNFdmFsTm9kZSA9IGZhbHNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9ncmFtTm9kZT4gcmVzdWx0OwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCku
aXM4Qml0KCkpIHsKLSAgICAgICAgUGFyc2VyPExleGVyPExhdGluMUNoYXJhY3Rlcj4+IHBhcnNl
cih2bSwgc291cmNlLCBJbXBsZW1lbnRhdGlvblZpc2liaWxpdHk6OlB1YmxpYywgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgbGV4aWNhbGx5U2NvcGVkRmVhdHVyZXMsIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6Q2xhc3NpYywgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgRnVuY3Rp
b25Nb2RlOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzRXZhbE5vZGUsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgbnVsbHB0cik7CisgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBJbXBsZW1lbnRhdGlvblZpc2liaWxpdHk6OlB1YmxpYywgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwgbGV4aWNhbGx5U2NvcGVkRmVhdHVyZXMsIEpTUGFyc2VyU2Ny
aXB0TW9kZTo6Q2xhc3NpYywgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgRnVuY3Rpb25N
b2RlOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzRXZhbE5vZGUsIEV2YWxDb250ZXh0VHlwZTo6
Tm9uZSwgbnVsbHB0cik7CiAgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQcm9ncmFtTm9k
ZT4oZXJyb3IsIG5hbWUsIFBhcnNpbmdDb250ZXh0OjpGdW5jdGlvbkNvbnN0cnVjdG9yLCBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggYjIyYzMwYjBk
MzZmLi4yZWJhZDJlNDRlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogCiAgICAgLy8gMy4gTGV0IHNlcGFyYXRvciBiZSB0aGUgU3RyaW5nIHZhbHVlIGZv
ciB0aGUgbGlzdC1zZXBhcmF0b3IgU3RyaW5nIGFwcHJvcHJpYXRlIGZvcgogICAgIC8vIHRoZSBo
b3N0IGVudmlyb25tZW50J3MgY3VycmVudCBsb2NhbGUgKHRoaXMgaXMgZGVyaXZlZCBpbiBhbiBp
bXBsZW1lbnRhdGlvbi1kZWZpbmVkIHdheSkuCi0gICAgY29uc3QgTGF0aW4xQ2hhcmFjdGVyIGNv
bW1hID0gJywnOworICAgIGNvbnN0IExDaGFyIGNvbW1hID0gJywnOwogICAgIEpTU3RyaW5nKiBz
ZXBhcmF0b3IgPSBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyh2bSwgY29tbWEpOwogCiAgICAgLy8g
NC4gTGV0IFIgYmUgdGhlIGVtcHR5IFN0cmluZy4KQEAgLTQ1Myw3ICs0NTMsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNKb2luLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbAogICAgIC8vIDMuIElmIHNlcGFyYXRvciBpcyB1bmRlZmluZWQsIGxl
dCBzZXBhcmF0b3IgYmUgdGhlIHNpbmdsZS1lbGVtZW50IFN0cmluZyAiLCIuCiAgICAgSlNWYWx1
ZSBzZXBhcmF0b3JWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHNlcGFy
YXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgY29uc3QgTGF0aW4xQ2hhcmFjdGVy
IGNvbW1hID0gJywnOworICAgICAgICBjb25zdCBMQ2hhciBjb21tYSA9ICcsJzsKIAogICAgICAg
ICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIHx8ICFj
YW5Vc2VGYXN0QXJyYXlKb2luKHRoaXNPYmplY3QpKSBbW3VubGlrZWx5XV0gewogICAgICAgICAg
ICAgSlNTdHJpbmcqIGpzU2VwYXJhdG9yID0ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIGNv
bW1hKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5
cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApp
bmRleCBhNjMzNmNhMTE0NmEuLjI2NjZmMzQ3ZDYxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtNzgzLDcgKzc4Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1faXM4Qml0ID8gY3JlYXRlKHNwYW44KCkpIDogY3JlYXRlKHNwYW4x
NigpKTsKICAgICB9CiAKLSAgICBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzcGFu
OCgpIGNvbnN0IHsgcmV0dXJuIHsgdGhpcy0+dGVtcGxhdGUgYnVmZmVyPExhdGluMUNoYXJhY3Rl
cj4oKSwgbV9sZW5ndGggfTsgfQorICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3BhbjgoKSBj
b25zdCB7IHJldHVybiB7IHRoaXMtPnRlbXBsYXRlIGJ1ZmZlcjxMQ2hhcj4oKSwgbV9sZW5ndGgg
fTsgfQogICAgIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gc3BhbjE2KCkgY29uc3QgeyByZXR1
cm4geyB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8Y2hhcjE2X3Q+KCksIG1fbGVuZ3RoIH07IH0KIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enpl
clByZWRpY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclBy
ZWRpY3Rpb25zLmNwcAppbmRleCA4Mzc2YjVlNzU4ZTAuLjI4YjYzMTQ0MWZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmNwcApA
QCAtMzksNyArMzksNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRGaWxlSW50b1N0cmluZyhjb25zdCBj
aGFyKiBmaWxlTmFtZSkKICAgICBSRUxFQVNFX0FTU0VSVChidWZmZXJDYXBhY2l0eSAhPSAtMSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpICE9IC0xKTsKIAot
ICAgIHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlcjsKKyAgICBzdGQ6OnNwYW48TENo
YXI+IGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxp
emVkKGJ1ZmZlckNhcGFjaXR5LCBidWZmZXIpOwogV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNB
R0VfQkVHSU4KICAgICBzaXplX3QgcmVhZFNpemUgPSBmcmVhZChidWZmZXIuZGF0YSgpLCAxLCBi
dWZmZXIuc2l6ZSgpLCBmaWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYw
MS5jcHAKaW5kZXggMzc2ZDE3NDI2NDA5Li5lMGZmZTJiY2U5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lk
IGhhbmRsZUZyYWN0aW9uKER1cmF0aW9uJiBkdXJhdGlvbiwgaW50IGZhY3RvciwgU3RyaW5nVmll
dyBmcmFjdGlvblN0CiAgICAgQVNTRVJUKGZyYWN0aW9uTGVuZ3RoICYmIGZyYWN0aW9uTGVuZ3Ro
IDw9IDkgJiYgZnJhY3Rpb25TdHJpbmcuY29udGFpbnNPbmx5QVNDSUkoKSk7CiAgICAgQVNTRVJU
KGZyYWN0aW9uVHlwZSA9PSBUZW1wb3JhbFVuaXQ6OkhvdXIgfHwgZnJhY3Rpb25UeXBlID09IFRl
bXBvcmFsVW5pdDo6TWludXRlIHx8IGZyYWN0aW9uVHlwZSA9PSBUZW1wb3JhbFVuaXQ6OlNlY29u
ZCk7CiAKLSAgICBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCA5PiBwYWRkZWQoOSwgJzAnKTsKKyAg
ICBWZWN0b3I8TENoYXIsIDk+IHBhZGRlZCg5LCAnMCcpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmcmFjdGlvbkxlbmd0aDsgaSsrKQogICAgICAgICBwYWRkZWRbaV0gPSBmcmFjdGlv
blN0cmluZ1tpXTsKIApAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBs
YWluVGltZT4gcGFyc2VUaW1lU3BlYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
CiAgICAgaWYgKCFkaWdpdHMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBW
ZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCA5PiBwYWRkZWQoOSwgJzAnKTsKKyAgICBWZWN0b3I8TENo
YXIsIDk+IHBhZGRlZCg5LCAnMCcpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlnaXRz
OyArK2kpCiAgICAgICAgIHBhZGRlZFtpXSA9IGJ1ZmZlcltpXTsKICAgICBidWZmZXIuYWR2YW5j
ZUJ5KGRpZ2l0cyk7CkBAIC02MTgsNyArNjE4LDcgQEAgc3RhdGljIGJvb2wgY2FuQmVUaW1lWm9u
ZShjb25zdCBTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIENoYXIK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZhcmlhbnQ8VmVjdG9yPExhdGluMUNoYXJhY3Rlcj4sIGludDY0X3Q+PiBwYXJzZVRpbWVa
b25lQW5ub3RhdGlvbihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxWYXJpYW50PFZlY3RvcjxMQ2hhcj4sIGludDY0X3Q+PiBw
YXJzZVRpbWVab25lQW5ub3RhdGlvbihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+
JiBidWZmZXIpCiB7CiAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNw
cm9kLVRpbWVab25lQW5ub3RhdGlvbgogICAgIC8vIFRpbWVab25lQW5ub3RhdGlvbiA6CkBAIC03
NTIsNyArNzUyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxWZWN0b3I8TGF0aW4x
Q2hhcmFjdGVyPiwgaW50NjRfdD4+IHBhcnNlVGltZVpvbmVBbm4KICAgICAgICAgaWYgKCFpc1Zh
bGlkQ29tcG9uZW50KGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRleCwgbmFtZUxlbmd0aCkp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIFZlY3RvcjxMYXRp
bjFDaGFyYWN0ZXI+IHJlc3VsdChidWZmZXIuY29uc3VtZShuYW1lTGVuZ3RoKSk7CisgICAgICAg
IFZlY3RvcjxMQ2hhcj4gcmVzdWx0KGJ1ZmZlci5jb25zdW1lKG5hbWVMZW5ndGgpKTsKIAogICAg
ICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpAQCAtOTA1LDcgKzkwNSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJGQzk1NTdBbm5vdGF0
aW9uPiBwYXJzZU9uZVJGQzk1NTdBbm5vdGF0aW9uKFN0cmluZ1BhcnNpbmdCCiAgICAgaWYgKCFp
c1ZhbGlkQ29tcG9uZW50KGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRleCwgbmFtZUxlbmd0
aCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8TGF0aW4xQ2hh
cmFjdGVyLCBtYXhDYWxlbmRhckxlbmd0aD4gcmVzdWx0KGJ1ZmZlci5jb25zdW1lKG5hbWVMZW5n
dGgpKTsKKyAgICBWZWN0b3I8TENoYXIsIG1heENhbGVuZGFyTGVuZ3RoPiByZXN1bHQoYnVmZmVy
LmNvbnN1bWUobmFtZUxlbmd0aCkpOwogCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTQwNyw3ICsxNDA3LDcgQEAgU3RyaW5nIGZvcm1h
dFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3Qgb2Zmc2V0KQogCiAgICAgaWYgKG5hbm9zZWNv
bmRzKSB7CiAgICAgICAgIC8vIFNpbmNlIG5zUGVyU2Vjb25kIGlzIDEwMDAwMDAwMDAsIHN0cmlu
Z2lmaWVkIG5hbm9zZWNvbmRzIHRha2VzIGF0IG1vc3QgOSBjaGFyYWN0ZXJzICg5OTk5OTk5OTkp
LgotICAgICAgICBhdXRvIGZyYWN0aW9uID0gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8
TGF0aW4xQ2hhcmFjdGVyLCA5Pj4obmFub3NlY29uZHMpOworICAgICAgICBhdXRvIGZyYWN0aW9u
ID0gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+PihuYW5vc2Vjb25kcyk7
CiAgICAgICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgpOwog
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZyYWN0aW9uLnNpemUoKTsKICAgICAgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdmFsaWRMZW5ndGg7CkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBTdHJp
bmcgdGVtcG9yYWxUaW1lVG9TdHJpbmcoUGxhaW5UaW1lIHBsYWluVGltZSwgc3RkOjp0dXBsZTxQ
cmVjaXNpb24sIHVuc2lnbmVkPgogICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6
QXV0bykgewogICAgICAgICBpZiAoIWZyYWN0aW9uTmFub3NlY29uZHMpCiAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQo
JzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5z
ZWNvbmQoKSkpOwotICAgICAgICBhdXRvIGZyYWN0aW9uID0gbnVtYmVyVG9TdHJpbmdVbnNpZ25l
ZDxWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCA5Pj4oZnJhY3Rpb25OYW5vc2Vjb25kcyk7CisgICAg
ICAgIGF1dG8gZnJhY3Rpb24gPSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwg
OT4+KGZyYWN0aW9uTmFub3NlY29uZHMpOwogICAgICAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3Ro
ID0gOSAtIGZyYWN0aW9uLnNpemUoKTsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmcmFjdGlv
bi5zaXplKCk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbGlkTGVuZ3RoOwpA
QCAtMTQ2MCw3ICsxNDYwLDcgQEAgU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGlt
ZSBwbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4KICAgICB9CiAgICAg
aWYgKCFwcmVjaXNpb25WYWx1ZSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywg
MiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgp
KSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKLSAgICBhdXRvIGZyYWN0
aW9uID0gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCA5Pj4o
ZnJhY3Rpb25OYW5vc2Vjb25kcyk7CisgICAgYXV0byBmcmFjdGlvbiA9IG51bWJlclRvU3RyaW5n
VW5zaWduZWQ8VmVjdG9yPExDaGFyLCA5Pj4oZnJhY3Rpb25OYW5vc2Vjb25kcyk7CiAgICAgdW5z
aWduZWQgcGFkZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7CiAgICAgcGFkZGluZ0xl
bmd0aCA9IHN0ZDo6bWluKHBhZGRpbmdMZW5ndGgsIHByZWNpc2lvblZhbHVlKTsKICAgICBwcmVj
aXNpb25WYWx1ZSAtPSBwYWRkaW5nTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SVNPODYwMS5oCmluZGV4IDNiMGYzZWU2ZGIyYS4uNWY0OWFlOWVhZjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA+IDkpCiAgICAgICAgICAgICBhc1N0cmluZ0ltcGwo
YnVpbGRlciwgdmFsdWUgLyAxMCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KCh2YWx1ZSAlIDEwKSArICcwJykpOworICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0
aWNfY2FzdDxMQ2hhcj4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZhbHVlICUgMTApICsgJzAnKSk7
CiAgICAgfQogCiAgICAgSW50MTI4IG1fZXBvY2hOYW5vc2Vjb25kcyB7IH07CkBAIC0yODIsMTQg
KzI4MiwxNCBAQCB1c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwgaW50NjRfdD47
CiBzdHJ1Y3QgVGltZVpvbmVSZWNvcmQgewogICAgIGJvb2wgbV96IHsgZmFsc2UgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1fb2Zmc2V0OwotICAgIFZhcmlhbnQ8VmVjdG9yPExhdGlu
MUNoYXJhY3Rlcj4sIGludDY0X3Q+IG1fbmFtZU9yT2Zmc2V0OworICAgIFZhcmlhbnQ8VmVjdG9y
PExDaGFyPiwgaW50NjRfdD4gbV9uYW1lT3JPZmZzZXQ7CiB9OwogCiBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1pbkNhbGVuZGFyTGVuZ3RoID0gMzsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4Q2FsZW5kYXJMZW5ndGggPSA4OwogZW51bSBjbGFzcyBSRkM5NTU3RmxhZyA6IGJvb2wg
eyBOb25lLCBDcml0aWNhbCB9OyAvLyAiQ3JpdGljYWwiID0gIiEiIGZsYWcKIGVudW0gY2xhc3Mg
UkZDOTU1N0tleSA6IGJvb2wgeyBDYWxlbmRhciwgT3RoZXIgfTsKLXVzaW5nIFJGQzk1NTdWYWx1
ZSA9IFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXIsIG1heENhbGVuZGFyTGVuZ3RoPjsKK3VzaW5nIFJG
Qzk1NTdWYWx1ZSA9IFZlY3RvcjxMQ2hhciwgbWF4Q2FsZW5kYXJMZW5ndGg+Owogc3RydWN0IFJG
Qzk1NTdBbm5vdGF0aW9uIHsKICAgICBSRkM5NTU3RmxhZyBtX2ZsYWc7CiAgICAgUkZDOTU1N0tl
eSBtX2tleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRl
eCA1NmI1YzNlYWE3MDkuLjI0ZTc5OTg5YTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICAvLyBV
c2UgZnJvbVVpZCB3aGVuIGNvbnN0cnVjdGluZyBJZGVudGlmaWVyIGZyb20gU3RyaW5nSW1wbCog
d2hpY2ggbWF5IHJlcHJlc2VudCBzeW1ib2xzLgogCiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJv
bVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJhbCk7Ci0gICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0
cmluZyhWTSYsIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsKKyAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgc3RkOjpzcGFuPGNvbnN0IExDaGFyPik7CiAgICAg
c3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZf
dD4pOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcm
KTsKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgQXRvbVN0cmluZ0ltcGwq
KTsKQEAgLTE0NCwxMiArMTQ0LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
KSBjb25zdCB7IHJldHVybiBpc1N5bWJvbCgpICYmIHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbElt
cGwqPihpbXBsKCkpLT5pc1ByaXZhdGUoKTsgfQogCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IExhdGluMUNoYXJhY3RlciopOwor
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IExDaGFy
Kik7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
Y2hhciopOwogCi0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IExhdGluMUNoYXJhY3RlciopOwotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdJbXBsKiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBJZGVudGlmaWVyOjplcXVhbChh
LCBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGIpKTsgfTsKLSAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBTdHJpbmdJbXBsKiwgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pOwor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwor
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBj
aGFyKiBiKSB7IHJldHVybiBJZGVudGlmaWVyOjplcXVhbChhLCBieXRlQ2FzdDxMQ2hhcj4oYikp
OyB9OworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBzdGQ6OnNwYW48
Y29uc3QgTENoYXI+KTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwg
c3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
U3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gOjplcXVhbChhLCBi
KTsgfQogCkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBdG9tU3Ry
aW5nIG1fc3RyaW5nOwogCi0gICAgaW5saW5lIElkZW50aWZpZXIoVk0mLCBzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPik7IC8vIERlZmluZWQgaW4gSWRlbnRpZmllcklubGluZXMuaAor
ICAgIGlubGluZSBJZGVudGlmaWVyKFZNJiwgc3RkOjpzcGFuPGNvbnN0IExDaGFyPik7IC8vIERl
ZmluZWQgaW4gSWRlbnRpZmllcklubGluZXMuaAogICAgIGlubGluZSBJZGVudGlmaWVyKFZNJiwg
c3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7IC8vIERlZmluZWQgaW4gSWRlbnRpZmllcklubGlu
ZXMuaAogICAgIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllcihWTSYsIEFTQ0lJTGl0ZXJhbCk7IC8v
IERlZmluZWQgaW4gSWRlbnRpZmllcklubGluZXMuaAogICAgIGlubGluZSBJZGVudGlmaWVyKFZN
JiwgQXRvbVN0cmluZ0ltcGwqKTsgLy8gRGVmaW5lZCBpbiBJZGVudGlmaWVySW5saW5lcy5oCkBA
IC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICB7IH0KIAogICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEu
bV9zdHJpbmcuaW1wbCgpID09IGIubV9zdHJpbmcuaW1wbCgpOyB9Ci0gICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBiKSB7IHJl
dHVybiBlcXVhbChhLm1fc3RyaW5nLmltcGwoKSwgYik7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5t
X3N0cmluZy5pbXBsKCksIGIpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHN0YXRpYyBSZWY8QXRvbVN0cmluZ0ltcGw+IGFkZChWTSYsIHN0ZDo6c3Bhbjxjb25zdCBUPik7
IC8vIERlZmluZWQgaW4gSWRlbnRpZmllcklubGluZXMuaAogICAgIHN0YXRpYyBSZWY8QXRvbVN0
cmluZ0ltcGw+IGFkZDgoVk0mLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KTsKQEAgLTE5MSw3
ICsxOTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi10ZW1wbGF0ZSA8PiBBTFdBWVNfSU5M
SU5FIGNvbnN0ZXhwciBib29sIElkZW50aWZpZXI6OmNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhMYXRpbjFDaGFyYWN0ZXIpCit0ZW1wbGF0ZSA8PiBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciBi
b29sIElkZW50aWZpZXI6OmNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmluZyhMQ2hhcikKIHsKICAg
ICBzdGF0aWNfYXNzZXJ0KG1heFNpbmdsZUNoYXJhY3RlclN0cmluZyA9PSAweGZmKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTIwNywyMiArMjA3LDIyIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgSWRlbnRpZmllciYgYikKICAgICByZXR1cm4gSWRl
bnRpZmllcjo6ZXF1YWwoYSwgYik7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SWRlbnRpZmllciYgYSwgY29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBiKQoraW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBMQ2hhciogYikKIHsKICAgICByZXR1
cm4gSWRlbnRpZmllcjo6ZXF1YWwoYSwgYik7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgY2hhciogYikKIHsKLSAgICByZXR1cm4gSWRlbnRp
Zmllcjo6ZXF1YWwoYSwgYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihiKSk7CisgICAgcmV0dXJu
IElkZW50aWZpZXI6OmVxdWFsKGEsIGJ5dGVDYXN0PExDaGFyPihiKSk7CiB9CiAKLWlubGluZSBi
b29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIHIsIGNvbnN0IExhdGluMUNo
YXJhY3RlciogcykKK2lubGluZSBib29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFN0cmluZ0lt
cGwqIHIsIGNvbnN0IExDaGFyKiBzKQogewogICAgIHJldHVybiBXVEY6OmVxdWFsKHIsIHMpOwog
fQogCi1pbmxpbmUgYm9vbCBJZGVudGlmaWVyOjplcXVhbChjb25zdCBTdHJpbmdJbXBsKiByLCBz
dGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzKQoraW5saW5lIGJvb2wgSWRlbnRpZmll
cjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBzKQog
ewogICAgIHJldHVybiBXVEY6OmVxdWFsKHIsIHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKaW5kZXggNjRlNWJhNmFlM2QyLi4x
ODhlYmM3Y2I2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllcklubGluZXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDICB7CiAK
LWlubGluZSBJZGVudGlmaWVyOjpJZGVudGlmaWVyKFZNJiB2bSwgc3RkOjpzcGFuPGNvbnN0IExh
dGluMUNoYXJhY3Rlcj4gc3RyaW5nKQoraW5saW5lIElkZW50aWZpZXI6OklkZW50aWZpZXIoVk0m
IHZtLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHN0cmluZykKICAgICA6IG1fc3RyaW5nKGFkZCh2
bSwgc3RyaW5nKSkKIHsKICAgICBBU1NFUlQobV9zdHJpbmcuaW1wbCgpLT5pc0F0b20oKSk7CkBA
IC0xMzgsNyArMTM4LDcgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcykKICAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgcyk7CiB9CiAKLWlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0m
IHZtLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzKQoraW5saW5lIElkZW50aWZp
ZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4g
cykKIHsKICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAppbmRleCA1YTZhNDY0NjU1N2YuLjAy
NWM3Mjk3NDE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3IuY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmNoZWNrSUNV
TG9jYWxlSW52YXJpYW50cyhjb25zdCBMb2NhbGVTZXQmIGxvY2FsZXMpCiAgICAgICAgICAgICBi
b29sIGFsbEFyZUdvb2QgPSB0cnVlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB4ID0gMDsg
eCA8IDEyODsgKyt4KSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB5ID0gMDsgeSA8
IDEyODsgKyt5KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYW5Vc2VBU0NJSVVDQURVQ0VU
Q29tcGFyaXNvbihzdGF0aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHgpKSAmJiBjYW5Vc2VBU0NJ
SVVDQURVQ0VUQ29tcGFyaXNvbihzdGF0aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHkpKSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FuVXNlQVNDSUlVQ0FEVUNFVENvbXBhcmlzb24oc3Rh
dGljX2Nhc3Q8TENoYXI+KHgpKSAmJiBjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihzdGF0
aWNfY2FzdDxMQ2hhcj4oeSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBVRXJyb3JDb2Rl
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIxNl90
IHhzdHJpbmdbXSA9IHsgc3RhdGljX2Nhc3Q8Y2hhcjE2X3Q+KHgpLCAwIH07CiAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyMTZfdCB5c3RyaW5nW10gPSB7IHN0YXRpY19jYXN0PGNoYXIxNl90
Pih5KSwgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bER1cmF0aW9uRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
dXJhdGlvbkZvcm1hdC5jcHAKaW5kZXggMjlkZTllNjA0NGI0Li45YmY0MzE0MjUwMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEdXJhdGlvbkZvcm1hdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bER1cmF0aW9uRm9ybWF0
LmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBEdXJhdGlvblNpZ25UeXBlIGdldER1cmF0
aW9uU2lnbihJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbikKIAogc3RhdGljIFN0cmluZyBpbnQx
MjhUb1N0cmluZyhJbnQxMjggdmFsdWUpCiB7Ci0gICAgVmVjdG9yPExhdGluMUNoYXJhY3Rlcj4g
cmVzdWx0U3RyaW5nOworICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0U3RyaW5nOwogICAgIGJvb2wg
aXNOZWdhdGl2ZSA9IHZhbHVlIDwgMDsKICAgICBpZiAoaXNOZWdhdGl2ZSkKICAgICAgICAgdmFs
dWUgPSAtdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUu
Y3BwCmluZGV4IDI4Mzg5YmQ4YmIzMC4uOWYyOGIyMWViMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIGJvb2wg
TG9jYWxlSURCdWlsZGVyOjpzZXRLZXl3b3JkVmFsdWUoQVNDSUlMaXRlcmFsIGtleSwgU3RyaW5n
VmlldyB2YWx1ZSkKIAogICAgIEFTU0VSVCh2YWx1ZS5jb250YWluc09ubHlBU0NJSSgpKTsKICAg
ICBWZWN0b3I8Y2hhciwgMzI+IHJhd1ZhbHVlKHZhbHVlLmxlbmd0aCgpICsgMSk7Ci0gICAgdmFs
dWUuZ2V0Q2hhcmFjdGVycyhieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHJhd1ZhbHVlLm11dGFi
bGVTcGFuKCkpKTsKKyAgICB2YWx1ZS5nZXRDaGFyYWN0ZXJzKGJ5dGVDYXN0PExDaGFyPihyYXdW
YWx1ZS5tdXRhYmxlU3BhbigpKSk7CiAgICAgcmF3VmFsdWVbdmFsdWUubGVuZ3RoKCldID0gJ1ww
JzsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgK
aW5kZXggMWQ2OWFhOTZkNmM0Li5jNjQwYjczY2M4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtMjI0
LDcgKzIyNCw3IEBAIHZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zVG9Ta2VsZXRv
bihJbnRsVHlwZSogaW50bEluc3RhbmNlLCBTdHJpbmdCdWlsCiAKICAgICBpZiAoaW50bEluc3Rh
bmNlLT5tX3JvdW5kaW5nSW5jcmVtZW50ICE9IDEpIHsKICAgICAgICAgc2tlbGV0b25CdWlsZGVy
LmFwcGVuZCgiIHByZWNpc2lvbi1pbmNyZW1lbnQvIl9zKTsKLSAgICAgICAgYXV0byBzdHJpbmcg
PSBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXIsIDEwPj4oaW50
bEluc3RhbmNlLT5tX3JvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBu
dW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgMTA+PihpbnRsSW5zdGFuY2UtPm1f
cm91bmRpbmdJbmNyZW1lbnQpOwogICAgICAgICBpZiAoaW50bEluc3RhbmNlLT5tX21heGltdW1G
cmFjdGlvbkRpZ2l0cyA+PSBzdHJpbmcuc2l6ZSgpKSB7CiAgICAgICAgICAgICBza2VsZXRvbkJ1
aWxkZXIuYXBwZW5kKCIwLiJfcyk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgKGludGxJbnN0YW5jZS0+bV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMgLSBzdHJpbmcuc2l6ZSgp
KTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApp
bmRleCBiYWYyOGViNDM1M2IuLjhlZjFlZTY3ODA2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTExNDAsOCArMTE0MCw5IEBAIHN0YXRpYyBW
YXJpYW50Q29kZSBwYXJzZVZhcmlhbnRDb2RlKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIEFTU0VS
VChzdHJpbmcubGVuZ3RoKCkgPD0gOCk7CiAgICAgQVNTRVJUKHN0cmluZy5sZW5ndGgoKSA+PSAx
KTsKICAgICBzdHJ1Y3QgQ29kZSB7Ci0gICAgICAgIExhdGluMUNoYXJhY3RlciBjaGFyYWN0ZXJz
WzhdIHsgfTsKKyAgICAgICAgTENoYXIgY2hhcmFjdGVyc1s4XSB7IH07CiAgICAgfTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWRfdjxMQ2hhcj4pOwogICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFZhcmlhbnRDb2RlKSA9PSBzaXplb2YoQ29kZSkpOwogICAgIENvZGUgY29kZSB7
IH07CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgc3RyaW5nLmxlbmd0aCgp
OyArK2luZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKaW5kZXggYmU2ZDBmNDAyYTNhLi5jNDYyOTcwNjYzYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMjAz
LDcgKzIwMyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFy
aXNvbihjaGFyMTZfdCBjaGFyYWN0ZXIpCiAgICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVyKSAm
JiBkdWNldExldmVsMVdlaWdodHNbY2hhcmFjdGVyXTsKIH0KIAotQUxXQVlTX0lOTElORSBib29s
IGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKExhdGluMUNoYXJhY3RlciBjaGFyYWN0ZXIp
CitBTFdBWVNfSU5MSU5FIGJvb2wgY2FuVXNlQVNDSUlVQ0FEVUNFVENvbXBhcmlzb24oTENoYXIg
Y2hhcmFjdGVyKQogewogICAgIHJldHVybiBkdWNldExldmVsMVdlaWdodHNbY2hhcmFjdGVyXTsK
IH0KQEAgLTIxNiw3ICsyMTYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZm9sbG93ZWRCeU5vbkxh
dGluQ2hhcmFjdGVyKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hhcmFjdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIGZvbGxvd2VkQnlOb25MYXRpbkNoYXJh
Y3RlcihzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiwgc2l6ZV90KQorQUxXQVlTX0lO
TElORSBib29sIGZvbGxvd2VkQnlOb25MYXRpbkNoYXJhY3RlcihzdGQ6OnNwYW48Y29uc3QgTENo
YXI+LCBzaXplX3QpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAwNDNiZTVmMjg0YTYuLjEyYTc2MzdiMDdjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTEwMDIsNyAr
MTAwMiw3IEBAIEpTU3RyaW5nKiBKU0FycmF5OjpmYXN0VG9TdHJpbmcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcodm0pOwogCiAgICAg
aWYgKGNhblVzZUZhc3RBcnJheUpvaW4odGhpcykpIFtbbGlrZWx5XV0gewotICAgICAgICBjb25z
dCBMYXRpbjFDaGFyYWN0ZXIgY29tbWEgPSAnLCc7CisgICAgICAgIGNvbnN0IExDaGFyIGNvbW1h
ID0gJywnOwogCiAgICAgICAgIGJvb2wgaXNDb1cgPSBpc0NvcHlPbldyaXRlKHRoaXMtPmluZGV4
aW5nTW9kZSgpKTsKICAgICAgICAgSlNDZWxsQnV0dGVyZmx5KiBpbW11dGFibGVCdXR0ZXJmbHkg
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmlu
ZGV4IGNjMjg2MTM1ZjI5Ni4uNzM1MTMzZmU3NWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0yMjczLDcgKzIyNzMsNyBAQCBTdHJpbmcgSlNCaWdJ
bnQ6OnRvU3RyaW5nQmFzZVBvd2VyT2ZUd28oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogbnVsbE9y
R2xvYmFsT2JqZQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgVmVjdG9y
PExhdGluMUNoYXJhY3Rlcj4gcmVzdWx0U3RyaW5nKGNoYXJzUmVxdWlyZWQpOworICAgIFZlY3Rv
cjxMQ2hhcj4gcmVzdWx0U3RyaW5nKGNoYXJzUmVxdWlyZWQpOwogICAgIERpZ2l0IGRpZ2l0ID0g
MDsKICAgICAvLyBLZWVwcyB0cmFjayBvZiBob3cgbWFueSB1bnByb2Nlc3NlZCBiaXRzIHRoZXJl
IGFyZSBpbiB7ZGlnaXR9LgogICAgIHVuc2lnbmVkIGF2YWlsYWJsZUJpdHMgPSAwOwpAQCAtMjMx
Miw3ICsyMzEyLDcgQEAgU3RyaW5nIEpTQmlnSW50Ojp0b1N0cmluZ0dlbmVyaWMoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogbnVsbE9yR2xvYmFsT2JqZWN0Rm9yT08KIHsKICAgICAvLyBGSVhNRTog
W0pTQ10gUmV2aXNpdCB1c2FnZSBvZiBWZWN0b3IgaW50byBKU0JpZ0ludDo6dG9TdHJpbmcKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjcxCi0gICAg
VmVjdG9yPExhdGluMUNoYXJhY3Rlcj4gcmVzdWx0U3RyaW5nOworICAgIFZlY3RvcjxMQ2hhcj4g
cmVzdWx0U3RyaW5nOwogCiAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpOwog
ICAgIEFTU0VSVCgheC0+aXNaZXJvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGVNYXRoLmNwcAppbmRleCA4Njg4NThhMTU5MmYuLjk2OTkzYWY1MmQzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTQxOCw3ICs0
MTgsNyBAQCBkb3VibGUgRGF0ZUNhY2hlOjpwYXJzZURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVk0mIHZtLCBjb25zdCBTdHJpbmcmCiAgICAgfTsKIAogICAgIC8vIEZJWE1FOiBl
eHBlY3RlZFN0cmluZyBpcyBVVEYtOCBidXQgcGFyc2VEYXRlSW1wbCByZXF1aXJlcyBMYXRpbjEu
IFdoaWNoIGlzIGNvcnJlY3Q/Ci0gICAgZG91YmxlIHZhbHVlID0gcGFyc2VEYXRlSW1wbChieXRl
Q2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGV4cGVjdGVkU3RyaW5nLnZhbHVlKCkuc3BhbigpKSk7Cisg
ICAgZG91YmxlIHZhbHVlID0gcGFyc2VEYXRlSW1wbChieXRlQ2FzdDxMQ2hhcj4oZXhwZWN0ZWRT
dHJpbmcudmFsdWUoKS5zcGFuKCkpKTsKICAgICBtX2NhY2hlZERhdGVTdHJpbmcgPSBkYXRlOwog
ICAgIG1fY2FjaGVkRGF0ZVN0cmluZ1ZhbHVlID0gdmFsdWU7CiAgICAgcmV0dXJuIHZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAppbmRleCAxZjgzNWM3ZGRmNzcu
LjY1M2U5NzBkOTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAK
QEAgLTIwMCw3ICsyMDAsNyBAQCBpbmxpbmUgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzaXpl
X3QgZGVjb2RlSGV4SW1wbChzdGQ6OnNwYW48Q2hhcmFjdGVyVHlwZT4gcwogICAgIHJldHVybiBX
VEY6Om5vdEZvdW5kOwogfQogCi1XQVJOX1VOVVNFRF9SRVRVUk4gc2l6ZV90IGRlY29kZUhleChz
dGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzcGFuLCBzdGQ6OnNwYW48dWludDhfdD4g
cmVzdWx0KQorV0FSTl9VTlVTRURfUkVUVVJOIHNpemVfdCBkZWNvZGVIZXgoc3RkOjpzcGFuPGNv
bnN0IExDaGFyPiBzcGFuLCBzdGQ6OnNwYW48dWludDhfdD4gcmVzdWx0KQogewogICAgIHJldHVy
biBkZWNvZGVIZXhJbXBsKHNwYW4sIHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9yLmgKaW5kZXggOGNhYjY0OWI1NTc3Li4zMDA3ZmRkYmZlODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgog
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih1aW50OEFycmF5Q29uc3RydWN0b3JGcm9tQmFzZTY0
KTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odWludDhBcnJheUNvbnN0cnVjdG9yRnJvbUhl
eCk7CiAKLVdBUk5fVU5VU0VEX1JFVFVSTiBzaXplX3QgZGVjb2RlSGV4KHN0ZDo6c3Bhbjxjb25z
dCBMYXRpbjFDaGFyYWN0ZXI+LCBzdGQ6OnNwYW48dWludDhfdD4gcmVzdWx0KTsKK1dBUk5fVU5V
U0VEX1JFVFVSTiBzaXplX3QgZGVjb2RlSGV4KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4sIHN0ZDo6
c3Bhbjx1aW50OF90PiByZXN1bHQpOwogV0FSTl9VTlVTRURfUkVUVVJOIHNpemVfdCBkZWNvZGVI
ZXgoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Piwgc3RkOjpzcGFuPHVpbnQ4X3Q+IHJlc3VsdCk7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CmluZGV4IDlhYTBmZGZjYzQzNC4uNjY5ZjFhM2Q2NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwCkBAIC0yMzMsOCArMjMzLDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHVpbnQ4QXJyYXlQcm90b3R5cGVUb0hleCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBzdGQ6OnNwYW48TGF0aW4xQ2hh
cmFjdGVyPiBidWZmZXI7CisgICAgc3RkOjpzcGFuPExDaGFyPiBidWZmZXI7CiAgICAgYXV0byBy
ZXN1bHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCAqIDIsIGJ1ZmZl
cik7CisgICAgTENoYXIqIGJ1ZmZlckVuZCA9IHN0ZDo6dG9fYWRkcmVzcyhidWZmZXIuZW5kKCkp
OwogICAgIGNvbnN0ZXhwciBzaXplX3Qgc3RyaWRlID0gODsgLy8gQmVjYXVzZSBsb2FkaW5nIHVp
bnQ4eDhfdC4KICAgICBpZiAobGVuZ3RoID49IHN0cmlkZSkgewogICAgICAgICBhdXRvIGVuY29k
ZVZlY3RvciA9IFsmXShhdXRvIGlucHV0KSB7CkBAIC0yNjAsMTAgKzI2MSwxMSBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odWludDhBcnJheVByb3RvdHlwZVRvSGV4LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgICAgICB9OwogCiAgICAgICAgIGNvbnN0IGF1dG8qIGN1cnNv
ciA9IGRhdGE7Ci0gICAgICAgIGZvciAoYXV0byogb3V0cHV0ID0gYnl0ZUNhc3Q8dWludDhfdD4o
YnVmZmVyLmRhdGEoKSk7IGN1cnNvciArIHN0cmlkZSA8PSBlbmQ7IGN1cnNvciArPSBzdHJpZGUs
IG91dHB1dCArPSBzdHJpZGUgKiAyKQorICAgICAgICBhdXRvKiBvdXRwdXQgPSBidWZmZXIuZGF0
YSgpOworICAgICAgICBmb3IgKDsgY3Vyc29yICsgc3RyaWRlIDw9IGVuZDsgY3Vyc29yICs9IHN0
cmlkZSwgb3V0cHV0ICs9IHN0cmlkZSAqIDIpCiAgICAgICAgICAgICBzaW1kZV92c3QxcV91OChv
dXRwdXQsIGVuY29kZVZlY3RvcihzaW1kZV92bGQxX3U4KGN1cnNvcikpKTsKICAgICAgICAgaWYg
KGN1cnNvciA8IGVuZCkKLSAgICAgICAgICAgIHNpbWRlX3ZzdDFxX3U4KGJ5dGVDYXN0PHVpbnQ4
X3Q+KHN0ZDo6dG9fYWRkcmVzcyhidWZmZXIuZW5kKCkpKSAtIHN0cmlkZSAqIDIsIGVuY29kZVZl
Y3RvcihzaW1kZV92bGQxX3U4KGVuZCAtIHN0cmlkZSkpKTsKKyAgICAgICAgICAgIHNpbWRlX3Zz
dDFxX3U4KGJ1ZmZlckVuZCAtIHN0cmlkZSAqIDIsIGVuY29kZVZlY3RvcihzaW1kZV92bGQxX3U4
KGVuZCAtIHN0cmlkZSkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb25zdCBhdXRvKiBjdXJz
b3IgPSBkYXRhOwogICAgICAgICBhdXRvKiBvdXRwdXQgPSBidWZmZXIuZGF0YSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCmluZGV4IGIwMzk4MzM5MGFjNy4uM2Y5NDU2MzY5NWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXVEY6OkJpdFNldDwyNTY+JiBkb05vCiAgICAgICAg
IGlmIChjaGFyYWN0ZXIgPCBkb05vdEVzY2FwZS5zaXplKCkgJiYgZG9Ob3RFc2NhcGUuZ2V0KGNo
YXJhY3RlcikpIHsKICAgICAgICAgICAgIC8vIDQtYy1pLiBMZXQgUyBiZSBhIFN0cmluZyBjb250
YWluaW5nIG9ubHkgdGhlIGNvZGUgdW5pdCBDLgogICAgICAgICAgICAgLy8gNC1jLWlpLiBMZXQg
UiBiZSBhIG5ldyBTdHJpbmcgdmFsdWUgY29tcHV0ZWQgYnkgY29uY2F0ZW5hdGluZyB0aGUgcHJl
dmlvdXMgdmFsdWUgb2YgUiBhbmQgUy4KLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PExhdGluMUNoYXJhY3Rlcj4oY2hhcmFjdGVyKSk7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIEpTVmFsdWUgZW5j
b2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdURjo6Qml0U2V0PDI1Nj4m
IGRvTm8KICAgICAgICAgfQogCiAgICAgICAgIC8vIDQtZC1pdi4gTGV0IE9jdGV0cyBiZSB0aGUg
YXJyYXkgb2Ygb2N0ZXRzIHJlc3VsdGluZyBieSBhcHBseWluZyB0aGUgVVRGLTggdHJhbnNmb3Jt
YXRpb24gdG8gViwgYW5kIGxldCBMIGJlIHRoZSBhcnJheSBzaXplLgotICAgICAgICBMYXRpbjFD
aGFyYWN0ZXIgdXRmOE9jdGV0c0J1ZmZlcltVOF9NQVhfTEVOR1RIXTsKKyAgICAgICAgTENoYXIg
dXRmOE9jdGV0c0J1ZmZlcltVOF9NQVhfTEVOR1RIXTsKICAgICAgICAgdW5zaWduZWQgdXRmOExl
bmd0aCA9IDA7CiAgICAgICAgIC8vIFdlIGNhbiB1c2UgVThfQVBQRU5EX1VOU0FGRSBoZXJlIHNp
bmNlIGNvZGVQb2ludCBpcyBlaXRoZXIKICAgICAgICAgLy8gMS4gbm9uIHN1cnJvZ2F0ZSBvbmUs
IGNvcnJlY3QgY29kZSBwb2ludC4KQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgSlNWYWx1ZSBk
ZWNvZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc3RkOjpzcGFuPGNvbnN0IENoYXJU
eXBlPiBjaAogICAgICAgICAgICAgICAgICAgICB1ID0gTGV4ZXI8Y2hhcjE2X3Q+Ojpjb252ZXJ0
VW5pY29kZShwWzJdLCBwWzNdLCBwWzRdLCBwWzVdKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2hhckxlbiAmJiAodSA+PSAxMjggfHwgIWRvTm90
VW5lc2NhcGUuZ2V0KHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4odSkpKSkgeworICAgICAg
ICAgICAgaWYgKGNoYXJMZW4gJiYgKHUgPj0gMTI4IHx8ICFkb05vdFVuZXNjYXBlLmdldChzdGF0
aWNfY2FzdDxMQ2hhcj4odSkpKSkgewogICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHUp
OwogICAgICAgICAgICAgICAgIGsgKz0gY2hhckxlbjsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTUwNSw3ICs1MDUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVu
Y0V2YWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbQogCiAgICAgSlNW
YWx1ZSBwYXJzZWRWYWx1ZTsKICAgICBpZiAocHJvZ3JhbVNvdXJjZS5pczhCaXQoKSkgewotICAg
ICAgICBMaXRlcmFsUGFyc2VyPExhdGluMUNoYXJhY3RlciwgSlNPTlJldml2ZXJNb2RlOjpEaXNh
YmxlZD4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5zcGFuOCgpLCBTbG9w
cHlKU09OLCBudWxscHRyKTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhciwgSlNPTlJldml2
ZXJNb2RlOjpEaXNhYmxlZD4gcHJlcGFyc2VyKGdsb2JhbE9iamVjdCwgcHJvZ3JhbVNvdXJjZS5z
cGFuOCgpLCBTbG9wcHlKU09OLCBudWxscHRyKTsKICAgICAgICAgcGFyc2VkVmFsdWUgPSBwcmVw
YXJzZXIudHJ5RXZhbCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExpdGVyYWxQYXJzZXI8Y2hh
cjE2X3QsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IHByZXBhcnNlcihnbG9iYWxPYmplY3Qs
IHByb2dyYW1Tb3VyY2Uuc3BhbjE2KCksIFNsb3BweUpTT04sIG51bGxwdHIpOwpAQCAtNjI5LDcg
KzYyOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jRXNjYXBlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgICAgICAgICBmb3IgKGF1dG8g
Y2hhcmFjdGVyIDogdmlldy5zcGFuMTYoKSkgewogICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0
ZXIgPj0gZG9Ob3RFc2NhcGUuc2l6ZSgpKQogICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiJXUiX3MsIGhleChzdGF0aWNfY2FzdDx1aW50OF90PihjaGFyYWN0ZXIgPj4gOCksIDIp
LCBoZXgoc3RhdGljX2Nhc3Q8dWludDhfdD4oY2hhcmFjdGVyKSwgMikpOwotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGRvTm90RXNjYXBlLmdldChzdGF0aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXI+
KGNoYXJhY3RlcikpKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvTm90RXNjYXBlLmdldChz
dGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSkpCiAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGNoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScsIGhleChjaGFyYWN0ZXIsIDIpKTsKQEAgLTY2MCw3
ICs2NjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1VuZXNjYXBlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogCiAgICAgICAgIGlmICh2aWV3Lmlz
OEJpdCgpKSB7CiAgICAgICAgICAgICBhdXRvIGNoYXJhY3RlcnMgPSB2aWV3LnNwYW44KCk7Ci0g
ICAgICAgICAgICBMYXRpbjFDaGFyYWN0ZXIgY29udmVydGVkTENoYXI7CisgICAgICAgICAgICBM
Q2hhciBjb252ZXJ0ZWRMQ2hhcjsKICAgICAgICAgICAgIHdoaWxlIChrIDwgbGVuZ3RoKSB7CiAg
ICAgICAgICAgICAgICAgYXV0byBjID0gY2hhcmFjdGVycy5zdWJzcGFuKGspOwogICAgICAgICAg
ICAgICAgIGlmIChjWzBdID09ICclJyAmJiBrIDw9IGxlbmd0aCAtIDYgJiYgY1sxXSA9PSAndScp
IHsKQEAgLTY3MCw3ICs2NzAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVu
Y1VuZXNjYXBlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNbMF0gPT0gJyUnICYmIGsgPD0gbGVuZ3RoIC0gMyAmJiBpc0FT
Q0lJSGV4RGlnaXQoY1sxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGNbMl0pKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnZlcnRlZExDaGFyID0gTGF0aW4xQ2hhcmFjdGVyKExleGVyPExhdGluMUNo
YXJhY3Rlcj46OmNvbnZlcnRIZXgoY1sxXSwgY1syXSkpOworICAgICAgICAgICAgICAgICAgICBj
b252ZXJ0ZWRMQ2hhciA9IExDaGFyKExleGVyPExDaGFyPjo6Y29udmVydEhleChjWzFdLCBjWzJd
KSk7CiAgICAgICAgICAgICAgICAgICAgIGMgPSBzcGFuKGNvbnZlcnRlZExDaGFyKTsKICAgICAg
ICAgICAgICAgICAgICAgayArPSAyOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMTRlMWEzZmZjNGRlLi43YjM2
NmI2MDQ4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCkBAIC04MjgsNyArODI4LDcgQEAgaW5saW5lIHVuc2lnbmVkIEZhc3RTdHJpbmdpZmllcjxD
aGFyVHlwZSwgYnVmZmVyTW9kZT46OnVzYWJsZUJ1ZmZlclNpemUodW5zaWduZWQKICAgICAvLyB0
byBsaW1pdCByZWN1cnNpb24uIEhlbmNlLCB3ZSBuZWVkIHRvIGNvbXB1dGUgYW4gYXBwcm9wcmlh
dGUgbV9jYXBhY2l0eSB2YWx1ZS4KICAgICAvLwogICAgIC8vIFRvIGRvIHRoaXMsIHdlIGVtcGly
aWNhbGx5IG1lYXN1cmVkIHRoZSB3b3JzdCBjYXNlIHN0YWNrIHVzYWdlIGluY3VycmVkIGJ5IDEg
cmVjdXJzaW9uCi0gICAgLy8gb2YgYW55IG9mIHRoZSBhcHBlbmQgbWV0aG9kcy4gQXNzdW1pbmcg
ZWFjaCBjYWxsIHRvIGFwcGVuZCgpIG9ubHkgY29uc3VtZXMgMSBMYXRpbjFDaGFyYWN0ZXIgaW4K
KyAgICAvLyBvZiBhbnkgb2YgdGhlIGFwcGVuZCBtZXRob2RzLiBBc3N1bWluZyBlYWNoIGNhbGwg
dG8gYXBwZW5kKCkgb25seSBjb25zdW1lcyAxIExDaGFyIGluCiAgICAgLy8gbV9idWZmZXIsIHRo
ZSBhbW91bnQgb2YgYnVmZmVyIHNpemUgdGhhdCBGYXN0U3RyaW5naWZpZXIgaXMgYWxsb3dlZCB0
byBydW4gd2l0aCBjYW4gYmUKICAgICAvLyBlc3RpbWF0ZWQgYXM6CiAgICAgLy8KQEAgLTEwODEs
NyArMTA4MSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3RyaW5nQ29weVNhbWVUeXBl
KHN0ZDo6c3Bhbjxjb25zdCBDaGFyVHlwZT4gc3BhbiwgQ2hhCiAjaWYgKENQVShBUk02NCkgfHwg
Q1BVKFg4Nl82NCkpICYmIENPTVBJTEVSKENMQU5HKQogICAgIGNvbnN0ZXhwciBzaXplX3Qgc3Ry
aWRlID0gU0lNRDo6c3RyaWRlPENoYXJUeXBlPjsKICAgICBpZiAoc3Bhbi5zaXplKCkgPj0gc3Ry
aWRlKSB7Ci0gICAgICAgIHVzaW5nIFVuc2lnbmVkVHlwZSA9IFNJTUQ6OlNhbWVTaXplVW5zaWdu
ZWRJbnRlZ2VyPENoYXJUeXBlPjsKKyAgICAgICAgdXNpbmcgVW5zaWduZWRUeXBlID0gc3RkOjpt
YWtlX3Vuc2lnbmVkX3Q8Q2hhclR5cGU+OwogICAgICAgICB1c2luZyBCdWxrVHlwZSA9IGRlY2x0
eXBlKFNJTUQ6OmxvYWQoc3RhdGljX2Nhc3Q8Y29uc3QgVW5zaWduZWRUeXBlKj4obnVsbHB0cikp
KTsKICAgICAgICAgY29uc3RleHByIGF1dG8gcXVvdGVNYXNrID0gU0lNRDo6c3BsYXQ8VW5zaWdu
ZWRUeXBlPignIicpOwogICAgICAgICBjb25zdGV4cHIgYXV0byBlc2NhcGVNYXNrID0gU0lNRDo6
c3BsYXQ8VW5zaWduZWRUeXBlPignXFwnKTsKQEAgLTExMzEsMTIgKzExMzEsMTIgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBzdHJpbmdDb3B5U2FtZVR5cGUoc3RkOjpzcGFuPGNvbnN0IENo
YXJUeXBlPiBzcGFuLCBDaGEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBBTFdBWVNf
SU5MSU5FIGJvb2wgc3RyaW5nQ29weVVwY29udmVydChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hh
cmFjdGVyPiBzcGFuLCBjaGFyMTZfdCogY3Vyc29yKQorc3RhdGljIEFMV0FZU19JTkxJTkUgYm9v
bCBzdHJpbmdDb3B5VXBjb252ZXJ0KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3BhbiwgY2hhcjE2
X3QqIGN1cnNvcikKIHsKICNpZiAoQ1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkgJiYgQ09NUElM
RVIoQ0xBTkcpCi0gICAgY29uc3RleHByIHNpemVfdCBzdHJpZGUgPSBTSU1EOjpzdHJpZGU8TGF0
aW4xQ2hhcmFjdGVyPjsKKyAgICBjb25zdGV4cHIgc2l6ZV90IHN0cmlkZSA9IFNJTUQ6OnN0cmlk
ZTxMQ2hhcj47CiAgICAgaWYgKHNwYW4uc2l6ZSgpID49IHN0cmlkZSkgewotICAgICAgICB1c2lu
ZyBVbnNpZ25lZFR5cGUgPSB1aW50OF90OworICAgICAgICB1c2luZyBVbnNpZ25lZFR5cGUgPSBz
dGQ6Om1ha2VfdW5zaWduZWRfdDxMQ2hhcj47CiAgICAgICAgIHVzaW5nIEJ1bGtUeXBlID0gZGVj
bHR5cGUoU0lNRDo6bG9hZChzdGF0aWNfY2FzdDxjb25zdCBVbnNpZ25lZFR5cGUqPihudWxscHRy
KSkpOwogICAgICAgICBjb25zdGV4cHIgYXV0byBxdW90ZU1hc2sgPSBTSU1EOjpzcGxhdDxVbnNp
Z25lZFR5cGU+KCciJyk7CiAgICAgICAgIGNvbnN0ZXhwciBhdXRvIGVzY2FwZU1hc2sgPSBTSU1E
OjpzcGxhdDxVbnNpZ25lZFR5cGU+KCdcXCcpOwpAQCAtMTQ5Nyw3ICsxNDk3LDcgQEAgc3RhdGlj
IE5FVkVSX0lOTElORSBTdHJpbmcgc3RyaW5naWZ5KEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUKICAgICBpZiAoc3RkOjpiaXRfY2FzdDx1aW50OF90Kj4oY3VycmVu
dFN0YWNrUG9pbnRlcigpKSA+PSBzdGFja0xpbWl0KSBbW2xpa2VseV1dIHsKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxGYWlsdXJlUmVhc29uPiBmYWlsdXJlUmVhc29uOwogICAgICAgICBmYWlsdXJl
UmVhc29uID0gc3RkOjpudWxsb3B0OwotICAgICAgICBpZiAoU3RyaW5nIHJlc3VsdCA9IEZhc3RT
dHJpbmdpZmllcjxMYXRpbjFDaGFyYWN0ZXIsIEJ1ZmZlck1vZGU6OlN0YXRpY0J1ZmZlcj46OnN0
cmluZ2lmeShnbG9iYWxPYmplY3QsIHZhbHVlLCByZXBsYWNlciwgc3BhY2UsIGZhaWx1cmVSZWFz
b24pOyAhcmVzdWx0LmlzTnVsbCgpKQorICAgICAgICBpZiAoU3RyaW5nIHJlc3VsdCA9IEZhc3RT
dHJpbmdpZmllcjxMQ2hhciwgQnVmZmVyTW9kZTo6U3RhdGljQnVmZmVyPjo6c3RyaW5naWZ5KGds
b2JhbE9iamVjdCwgdmFsdWUsIHJlcGxhY2VyLCBzcGFjZSwgZmFpbHVyZVJlYXNvbik7ICFyZXN1
bHQuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoZmFp
bHVyZVJlYXNvbiA9PSBGYWlsdXJlUmVhc29uOjpGb3VuZDE2Qml0RWFybHkpIHsKICAgICAgICAg
ICAgIGZhaWx1cmVSZWFzb24gPSBzdGQ6Om51bGxvcHQ7CkBAIC0xNTExLDcgKzE1MTEsNyBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIFN0cmluZyBzdHJpbmdpZnkoSlNHbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWx1ZQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYg
KGZhaWx1cmVSZWFzb24gPT0gRmFpbHVyZVJlYXNvbjo6QnVmZmVyRnVsbCkgewogICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgICAgIGlmIChTdHJpbmcg
cmVzdWx0ID0gRmFzdFN0cmluZ2lmaWVyPExhdGluMUNoYXJhY3RlciwgQnVmZmVyTW9kZTo6RHlu
YW1pY0J1ZmZlcj46OnN0cmluZ2lmeShnbG9iYWxPYmplY3QsIHZhbHVlLCByZXBsYWNlciwgc3Bh
Y2UsIGZhaWx1cmVSZWFzb24pOyAhcmVzdWx0LmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKFN0
cmluZyByZXN1bHQgPSBGYXN0U3RyaW5naWZpZXI8TENoYXIsIEJ1ZmZlck1vZGU6OkR5bmFtaWNC
dWZmZXI+OjpzdHJpbmdpZnkoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlLCBm
YWlsdXJlUmVhc29uKTsgIXJlc3VsdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAgICAgfQpAQCAtMTgxOSw3ICsxODE5LDcgQEAgc3RhdGljIE5F
VkVSX0lOTElORSBKU1ZhbHVlIGpzb25QYXJzZVNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNTdHJpbmcKICAgICBKU09OUmFuZ2VzIHJhbmdlczsKICAgICBKU1ZhbHVlIHVuZmls
dGVyZWQ7CiAgICAgaWYgKHZpZXcuaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxM
YXRpbjFDaGFyYWN0ZXIsIEpTT05SZXZpdmVyTW9kZTo6RW5hYmxlZD4ganNvblBhcnNlcihnbG9i
YWxPYmplY3QsIHZpZXcuc3BhbjgoKSwgU3RyaWN0SlNPTik7CisgICAgICAgIExpdGVyYWxQYXJz
ZXI8TENoYXIsIEpTT05SZXZpdmVyTW9kZTo6RW5hYmxlZD4ganNvblBhcnNlcihnbG9iYWxPYmpl
Y3QsIHZpZXcuc3BhbjgoKSwgU3RyaWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29u
UGFyc2VyLnRyeUxpdGVyYWxQYXJzZShPcHRpb25zOjp1c2VKU09OU291cmNlVGV4dEFjY2Vzcygp
ID8gJnJhbmdlcyA6IG51bGxwdHIpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5l
eGNlcHRpb24oKSB8fCAhdW5maWx0ZXJlZCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJlZCkgewpA
QCAtMTg2MSw3ICsxODYxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzb25Qcm90b0Z1
bmNQYXJzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICB9CiAKICAg
ICBpZiAodmlldy0+aXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxMYXRpbjFDaGFy
YWN0ZXIsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IGpzb25QYXJzZXIoZ2xvYmFsT2JqZWN0
LCB2aWV3LT5zcGFuOCgpLCBTdHJpY3RKU09OKTsKKyAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hh
ciwgSlNPTlJldml2ZXJNb2RlOjpEaXNhYmxlZD4ganNvblBhcnNlcihnbG9iYWxPYmplY3QsIHZp
ZXctPnNwYW44KCksIFN0cmljdEpTT04pOwogICAgICAgICBKU1ZhbHVlIHVuZmlsdGVyZWQgPSBq
c29uUGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSB8fCAhdW5maWx0ZXJlZCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJl
ZCkgewpAQCAtMTg5NCw3ICsxODk0LDcgQEAgSlNWYWx1ZSBKU09OUGFyc2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyBqc29uKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogCiAgICAgaWYgKGpzb24uaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxM
YXRpbjFDaGFyYWN0ZXIsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IGpzb25QYXJzZXIoZ2xv
YmFsT2JqZWN0LCBqc29uLnNwYW44KCksIFN0cmljdEpTT04pOworICAgICAgICBMaXRlcmFsUGFy
c2VyPExDaGFyLCBKU09OUmV2aXZlck1vZGU6OkRpc2FibGVkPiBqc29uUGFyc2VyKGdsb2JhbE9i
amVjdCwganNvbi5zcGFuOCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgcmV0dXJuIGpzb25QYXJz
ZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgfQogCkBAIC0xOTExLDcgKzE5MTEsNyBAQCBKU1Zh
bHVlIEpTT05QYXJzZVdpdGhFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RyaW5nVmlldyBqc29uKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCiAgICAgaWYgKGpz
b24uaXM4Qml0KCkpIHsKLSAgICAgICAgTGl0ZXJhbFBhcnNlcjxMYXRpbjFDaGFyYWN0ZXIsIEpT
T05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IGpzb25QYXJzZXIoZ2xvYmFsT2JqZWN0LCBqc29uLnNw
YW44KCksIFN0cmljdEpTT04pOworICAgICAgICBMaXRlcmFsUGFyc2VyPExDaGFyLCBKU09OUmV2
aXZlck1vZGU6OkRpc2FibGVkPiBqc29uUGFyc2VyKGdsb2JhbE9iamVjdCwganNvbi5zcGFuOCgp
LCBTdHJpY3RKU09OKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc29uUGFyc2VyLnRyeUxp
dGVyYWxQYXJzZSgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgICAgICBpZiAoIXJlc3VsdCkKQEAgLTE5NzksNyArMTk3OSw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc29uUHJvdG9GdW5jUmF3SlNPTiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhCiAgICAgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKHN0
cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMYXRpbjFDaGFyYWN0
ZXIsIEpTT05SZXZpdmVyTW9kZTo6RGlzYWJsZWQ+IGpzb25QYXJzZXIoZ2xvYmFsT2JqZWN0LCBz
dHJpbmcuc3BhbjgoKSwgU3RyaWN0SlNPTik7CisgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPExD
aGFyLCBKU09OUmV2aXZlck1vZGU6OkRpc2FibGVkPiBqc29uUGFyc2VyKGdsb2JhbE9iamVjdCwg
c3RyaW5nLnNwYW44KCksIFN0cmljdEpTT04pOwogICAgICAgICAgICAgcmVzdWx0ID0ganNvblBh
cnNlci50cnlMaXRlcmFsUGFyc2VQcmltaXRpdmVWYWx1ZSgpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KSBbW3Vu
bGlrZWx5XV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmlu
ZGV4IGQwMzg5NGI5MDljMi4uZDgxZmIxMDEwMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0xNjksOSArMTY5LDkgQEAgR0NPd25lZERhdGFTY29w
ZTxBdG9tU3RyaW5nSW1wbCo+IEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVUb0F0b21TdHJpbmco
SlNHbG9iYWwKICAgICB1aW50OF90KiBzdGFja0xpbWl0ID0gc3RkOjpiaXRfY2FzdDx1aW50OF90
Kj4odm0uc29mdFN0YWNrTGltaXQoKSk7CiAgICAgaWYgKCFpc1N1YnN0cmluZygpKSB7CiAgICAg
ICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgc3RkOjphcnJheTxMYXRpbjFDaGFyYWN0
ZXIsIG1heExlbmd0aEZvck9uU3RhY2tSZXNvbHZlPiBidWZmZXI7CisgICAgICAgICAgICBzdGQ6
OmFycmF5PExDaGFyLCBtYXhMZW5ndGhGb3JPblN0YWNrUmVzb2x2ZT4gYnVmZmVyOwogICAgICAg
ICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbE5vU3Vic3RyaW5nKHN0ZDo6c3BhbiB7IGJ1ZmZlciB9
LmZpcnN0KGxlbmd0aCgpKSwgc3RhY2tMaW1pdCk7Ci0gICAgICAgICAgICBhdG9tU3RyaW5nID0g
c3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4geyBidWZmZXIgfS5maXJzdChsZW5ndGgo
KSk7CisgICAgICAgICAgICBhdG9tU3RyaW5nID0gc3RkOjpzcGFuPGNvbnN0IExDaGFyPiB7IGJ1
ZmZlciB9LmZpcnN0KGxlbmd0aCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8Y2hhcjE2X3QsIG1heExlbmd0aEZvck9uU3RhY2tSZXNvbHZlPiBidWZmZXI7CiAg
ICAgICAgICAgICByZXNvbHZlUm9wZUludGVybmFsTm9TdWJzdHJpbmcoc3RkOjpzcGFuIHsgYnVm
ZmVyIH0uZmlyc3QobGVuZ3RoKCkpLCBzdGFja0xpbWl0KTsKQEAgLTIwOSw3ICsyMDksNyBAQCBH
Q093bmVkRGF0YVNjb3BlPEF0b21TdHJpbmdJbXBsKj4gSlNSb3BlU3RyaW5nOjpyZXNvbHZlUm9w
ZVRvRXhpc3RpbmdBdG9tU3RyaW5nKAogICAgIGlmICghaXNTdWJzdHJpbmcoKSkgewogICAgICAg
ICB1aW50OF90KiBzdGFja0xpbWl0ID0gc3RkOjpiaXRfY2FzdDx1aW50OF90Kj4odm0uc29mdFN0
YWNrTGltaXQoKSk7CiAgICAgICAgIGlmIChpczhCaXQoKSkgewotICAgICAgICAgICAgc3RkOjph
cnJheTxMYXRpbjFDaGFyYWN0ZXIsIG1heExlbmd0aEZvck9uU3RhY2tSZXNvbHZlPiBidWZmZXI7
CisgICAgICAgICAgICBzdGQ6OmFycmF5PExDaGFyLCBtYXhMZW5ndGhGb3JPblN0YWNrUmVzb2x2
ZT4gYnVmZmVyOwogICAgICAgICAgICAgcmVzb2x2ZVJvcGVJbnRlcm5hbE5vU3Vic3RyaW5nKHN0
ZDo6c3BhbiB7IGJ1ZmZlciB9LmZpcnN0KGxlbmd0aCgpKSwgc3RhY2tMaW1pdCk7CiAgICAgICAg
ICAgICBleGlzdGluZ0F0b21TdHJpbmcgPSBBdG9tU3RyaW5nSW1wbDo6bG9va1VwKHN0ZDo6c3Bh
biB7IGJ1ZmZlciB9LmZpcnN0KGxlbmd0aCgpKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMzks
NyArMjM5LDcgQEAgY29uc3QgU3RyaW5nJiBKU1JvcGVTdHJpbmc6OnJlc29sdmVSb3BlV2l0aEZ1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWwKICAgICB9CiAgICAgCiAgICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlcjsK
KyAgICAgICAgc3RkOjpzcGFuPExDaGFyPiBidWZmZXI7CiAgICAgICAgIGF1dG8gbmV3SW1wbCA9
IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCksIGJ1ZmZlcik7CiAg
ICAgICAgIGlmICghbmV3SW1wbCkgewogICAgICAgICAgICAgb3V0T2ZNZW1vcnkobnVsbE9yR2xv
YmFsT2JqZWN0Rm9yT09NKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CmluZGV4IGU4MWY1MGIxMjc2Zi4uOGVjYmY4MjY4NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTYyLDcgKzYyLDcgQEAgSlNTdHJpbmcqIGpzU3RyaW5n
KFZNJiwgUmVmPEF0b21TdHJpbmdJbXBsPiYmKTsKIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYsIFJl
ZjxTdHJpbmdJbXBsPiYmKTsKIAogSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZN
JiwgY2hhcjE2X3QpOwotSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNJiwgTGF0
aW4xQ2hhcmFjdGVyKTsKK0pTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhWTSYsIExD
aGFyKTsKIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhWTSYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogLy8gTm9uLXRyaXZpYWwgc3RyaW5ncyBhcmUg
dHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nLgpAQCAtMzA4LDcgKzMwOCw3IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIGZyaWVuZCBKU19FWFBP
UlRfUFJJVkFURSBKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZShWTSYsIFN0cmlu
Z0ltcGwmKTsKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZN
JiwgY2hhcjE2X3QpOwotICAgIGZyaWVuZCBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcoVk0mLCBMYXRpbjFDaGFyYWN0ZXIpOworICAgIGZyaWVuZCBKU1N0cmluZyoganNTaW5nbGVD
aGFyYWN0ZXJTdHJpbmcoVk0mLCBMQ2hhcik7CiAgICAgZnJpZW5kIEpTU3RyaW5nKiBqc05vbnRy
aXZpYWxTdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmKTsKICAgICBmcmllbmQgSlNTdHJpbmcqIGpz
Tm9udHJpdmlhbFN0cmluZyhWTSYsIFN0cmluZyYmKTsKICAgICBmcmllbmQgSlNTdHJpbmcqIGpz
U3Vic3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKQEAgLTgx
MSw3ICs4MTEsNyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0
cmluZyhWTSYgdm0sIGNoYXIxNl90IGMpCiAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0s
IFN0cmluZ0ltcGw6OmNyZWF0ZShzdGQ6OnNwYW4geyAmYywgMSB9KSk7CiB9CiAKLUFMV0FZU19J
TkxJTkUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNJiB2bSwgTGF0aW4xQ2hh
cmFjdGVyIGMpCitBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3RlclN0cmlu
ZyhWTSYgdm0sIExDaGFyIGMpCiB7CiAgICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNH
QykKICAgICAgICAgdm0udmVyaWZ5Q2FuR0MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKaW5kZXggMDU5ZjMzN2UzNGQwLi44YTRjYzYwNWVh
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5l
cy5oCkBAIC0xODAsNyArMTgwLDcgQEAgaW5saW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlhbFN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdUeXBlJiYKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci0gICAgcmVxdWlyZXMgKHN0ZDo6c2FtZV9h
czxDaGFyYWN0ZXJUeXBlLCBMYXRpbjFDaGFyYWN0ZXI+IHx8IHN0ZDo6c2FtZV9hczxDaGFyYWN0
ZXJUeXBlLCBjaGFyMTZfdD4pCisgICAgcmVxdWlyZXMgKHN0ZDo6c2FtZV9hczxDaGFyYWN0ZXJU
eXBlLCBMQ2hhcj4gfHwgc3RkOjpzYW1lX2FzPENoYXJhY3RlclR5cGUsIGNoYXIxNl90PikKIGlu
bGluZSBKU1N0cmluZyogcmVwZWF0Q2hhcmFjdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENoYXJhY3RlclR5cGUgY2hhcmFjdGVyLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC00NTMsNyArNDUzLDcgQEAgaW5saW5l
IEpTU3RyaW5nKiBqc0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCBKU1N0cmluZyogc3QKICAgICAgICAgfTsKIAogICAgICAgICBpZiAoc3RyaW5nLT52YWx1
ZUludGVybmFsKCkuaXM4Qml0KCkpIHsKLSAgICAgICAgICAgIFdURjo6SGFzaFRyYW5zbGF0b3JD
aGFyQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4gYnVmZmVyIHsgc3RyaW5nLT52YWx1ZUludGVybmFs
KCkuc3BhbjgoKSwgc3RyaW5nLT52YWx1ZUludGVybmFsKCkuaGFzaCgpIH07CisgICAgICAgICAg
ICBXVEY6Okhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcjxMQ2hhcj4gYnVmZmVyIHsgc3RyaW5nLT52
YWx1ZUludGVybmFsKCkuc3BhbjgoKSwgc3RyaW5nLT52YWx1ZUludGVybmFsKCkuaGFzaCgpIH07
CiAgICAgICAgICAgICByZXR1cm4gdm0ua2V5QXRvbVN0cmluZ0NhY2hlLm1ha2Uodm0sIGJ1ZmZl
ciwgY3JlYXRlRnJvbU5vblJvcGUpOwogICAgICAgICB9CiAKQEAgLTQ3Nyw5ICs0NzcsOSBAQCBp
bmxpbmUgSlNTdHJpbmcqIGpzQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBWTSYgdm0sIEpTU3RyaW5nKiBzdAogICAgICAgICBKU1N0cmluZyogZmliZXIxID0gcm9wZVN0
cmluZy0+ZmliZXIxKCk7CiAgICAgICAgIEpTU3RyaW5nKiBmaWJlcjIgPSByb3BlU3RyaW5nLT5m
aWJlcjIoKTsKICAgICAgICAgaWYgKHJvcGVTdHJpbmctPmlzOEJpdCgpKSB7Ci0gICAgICAgICAg
ICBzdGQ6OmFycmF5PExhdGluMUNoYXJhY3RlciwgS2V5QXRvbVN0cmluZ0NhY2hlOjptYXhTdHJp
bmdMZW5ndGhGb3JDYWNoZT4gY2hhcmFjdGVyczsKKyAgICAgICAgICAgIHN0ZDo6YXJyYXk8TENo
YXIsIEtleUF0b21TdHJpbmdDYWNoZTo6bWF4U3RyaW5nTGVuZ3RoRm9yQ2FjaGU+IGNoYXJhY3Rl
cnM7CiAgICAgICAgICAgICBKU1JvcGVTdHJpbmc6OnJlc29sdmVUb0J1ZmZlcihmaWJlcjAsIGZp
YmVyMSwgZmliZXIyLCBzdGQ6OnNwYW4geyBjaGFyYWN0ZXJzIH0uZmlyc3QobGVuZ3RoKSwgc3Rh
Y2tMaW1pdCk7Ci0gICAgICAgICAgICBXVEY6Okhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcjxMYXRp
bjFDaGFyYWN0ZXI+IGJ1ZmZlciB7IHN0ZDo6c3BhbiB7IGNoYXJhY3RlcnMgfS5maXJzdChsZW5n
dGgpIH07CisgICAgICAgICAgICBXVEY6Okhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcjxMQ2hhcj4g
YnVmZmVyIHsgc3RkOjpzcGFuIHsgY2hhcmFjdGVycyB9LmZpcnN0KGxlbmd0aCkgfTsKICAgICAg
ICAgICAgIHJldHVybiB2bS5rZXlBdG9tU3RyaW5nQ2FjaGUubWFrZSh2bSwgYnVmZmVyLCBjcmVh
dGVGcm9tUm9wZSk7CiAgICAgICAgIH0KICAgICAgICAgc3RkOjphcnJheTxjaGFyMTZfdCwgS2V5
QXRvbVN0cmluZ0NhY2hlOjptYXhTdHJpbmdMZW5ndGhGb3JDYWNoZT4gY2hhcmFjdGVyczsKQEAg
LTQ5MCw3ICs0OTAsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzQXRvbVN0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTU3RyaW5nKiBzdAogCiAgICAgYXV0byB2aWV3
ID0gU3RyaW5nVmlldyB7IHJvcGVTdHJpbmctPnN1YnN0cmluZ0Jhc2UoKS0+dmFsdWVJbnRlcm5h
bCgpIH0uc3Vic3RyaW5nKHJvcGVTdHJpbmctPnN1YnN0cmluZ09mZnNldCgpLCBsZW5ndGgpOwog
ICAgIGlmICh2aWV3LmlzOEJpdCgpKSB7Ci0gICAgICAgIFdURjo6SGFzaFRyYW5zbGF0b3JDaGFy
QnVmZmVyPExhdGluMUNoYXJhY3Rlcj4gYnVmZmVyIHsgdmlldy5zcGFuOCgpIH07CisgICAgICAg
IFdURjo6SGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyPExDaGFyPiBidWZmZXIgeyB2aWV3LnNwYW44
KCkgfTsKICAgICAgICAgcmV0dXJuIHZtLmtleUF0b21TdHJpbmdDYWNoZS5tYWtlKHZtLCBidWZm
ZXIsIGNyZWF0ZUZyb21Sb3BlKTsKICAgICB9CiAgICAgV1RGOjpIYXNoVHJhbnNsYXRvckNoYXJC
dWZmZXI8Y2hhcjE2X3Q+IGJ1ZmZlciB7IHZpZXcuc3BhbjE2KCkgfTsKQEAgLTU2Niw5ICs1NjYs
OSBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBWTSYgdm0sIEpTU3RyaW5nKiBzMQogICAgIH07CiAKICAgICBpZiAoczEtPmlzOEJp
dCgpICYmIHMyLT5pczhCaXQoKSkgewotICAgICAgICBMYXRpbjFDaGFyYWN0ZXIgY2hhcmFjdGVy
c1tLZXlBdG9tU3RyaW5nQ2FjaGU6Om1heFN0cmluZ0xlbmd0aEZvckNhY2hlXTsKKyAgICAgICAg
TENoYXIgY2hhcmFjdGVyc1tLZXlBdG9tU3RyaW5nQ2FjaGU6Om1heFN0cmluZ0xlbmd0aEZvckNh
Y2hlXTsKICAgICAgICAgcmVzb2x2ZVdpdGgyRmliZXJzKHMxLCBzMiwgc3RkOjpzcGFuIHsgY2hh
cmFjdGVycyB9LmZpcnN0KGxlbmd0aCkpOwotICAgICAgICBXVEY6Okhhc2hUcmFuc2xhdG9yQ2hh
ckJ1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlciB7IHN0ZDo6c3BhbihjaGFyYWN0ZXJzKS5m
aXJzdChsZW5ndGgpIH07CisgICAgICAgIFdURjo6SGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyPExD
aGFyPiBidWZmZXIgeyBzdGQ6OnNwYW4oY2hhcmFjdGVycykuZmlyc3QobGVuZ3RoKSB9OwogICAg
ICAgICByZXR1cm4gdm0ua2V5QXRvbVN0cmluZ0NhY2hlLm1ha2Uodm0sIGJ1ZmZlciwgY3JlYXRl
RnJvbUZpYmVycyk7CiAgICAgfQogICAgIGNoYXIxNl90IGNoYXJhY3RlcnNbS2V5QXRvbVN0cmlu
Z0NhY2hlOjptYXhTdHJpbmdMZW5ndGhGb3JDYWNoZV07CkBAIC02MjUsOSArNjI1LDkgQEAgaW5s
aW5lIEpTU3RyaW5nKiBqc0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBKU1N0cmluZyogczEKICAgICB9OwogCiAgICAgaWYgKHMxLT5pczhCaXQoKSAmJiBz
Mi0+aXM4Qml0KCkgJiYgczMtPmlzOEJpdCgpKSB7Ci0gICAgICAgIExhdGluMUNoYXJhY3RlciBj
aGFyYWN0ZXJzW0tleUF0b21TdHJpbmdDYWNoZTo6bWF4U3RyaW5nTGVuZ3RoRm9yQ2FjaGVdOwor
ICAgICAgICBMQ2hhciBjaGFyYWN0ZXJzW0tleUF0b21TdHJpbmdDYWNoZTo6bWF4U3RyaW5nTGVu
Z3RoRm9yQ2FjaGVdOwogICAgICAgICByZXNvbHZlV2l0aDNGaWJlcnMoczEsIHMyLCBzMywgc3Rk
OjpzcGFuIHsgY2hhcmFjdGVycyB9LmZpcnN0KGxlbmd0aCkpOwotICAgICAgICBXVEY6Okhhc2hU
cmFuc2xhdG9yQ2hhckJ1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlciB7IHN0ZDo6c3BhbiB7
IGNoYXJhY3RlcnMgfS5maXJzdChsZW5ndGgpIH07CisgICAgICAgIFdURjo6SGFzaFRyYW5zbGF0
b3JDaGFyQnVmZmVyPExDaGFyPiBidWZmZXIgeyBzdGQ6OnNwYW4geyBjaGFyYWN0ZXJzIH0uZmly
c3QobGVuZ3RoKSB9OwogICAgICAgICByZXR1cm4gdm0ua2V5QXRvbVN0cmluZ0NhY2hlLm1ha2Uo
dm0sIGJ1ZmZlciwgY3JlYXRlRnJvbUZpYmVycyk7CiAgICAgfQogICAgIGNoYXIxNl90IGNoYXJh
Y3RlcnNbS2V5QXRvbVN0cmluZ0NhY2hlOjptYXhTdHJpbmdMZW5ndGhGb3JDYWNoZV07CkBAIC02
NjgsOCArNjY4LDggQEAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZ09mUmVzb2x2ZWQoVk0m
IHZtLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXgKICAgICAgICAgICAgICAgICBh
dXRvIGltcGwgPSBBdG9tU3RyaW5nSW1wbDo6YWRkKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0sIGRlZmVycmFsQ29udGV4dCwgaW1wbC5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBMYXRpbjFDaGFyYWN0ZXIg
YnVmW10gPSB7IHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oZmlyc3QpLCBzdGF0aWNfY2Fz
dDxMYXRpbjFDaGFyYWN0ZXI+KHNlY29uZCkgfTsKLSAgICAgICAgICAgIFdURjo6SGFzaFRyYW5z
bGF0b3JDaGFyQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4gYnVmZmVyIHsgdW5zYWZlTWFrZVNwYW4o
YnVmLCBsZW5ndGgpIH07CisgICAgICAgICAgICBMQ2hhciBidWZbXSA9IHsgc3RhdGljX2Nhc3Q8
TENoYXI+KGZpcnN0KSwgc3RhdGljX2Nhc3Q8TENoYXI+KHNlY29uZCkgfTsKKyAgICAgICAgICAg
IFdURjo6SGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyPExDaGFyPiBidWZmZXIgeyB1bnNhZmVNYWtl
U3BhbihidWYsIGxlbmd0aCkgfTsKICAgICAgICAgICAgIHJldHVybiB2bS5rZXlBdG9tU3RyaW5n
Q2FjaGUubWFrZSh2bSwgYnVmZmVyLCBjcmVhdGVGcm9tU3Vic3RyaW5nKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
Sm9pbmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVy
LmNwcAppbmRleCBiMmE5MmUyNDQzOTMuLmQ1MDJjOWQ3Y2I0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcApAQCAtMzksNyArMzksNyBA
QCBKU1N0cmluZ0pvaW5lcjo6fkpTU3RyaW5nSm9pbmVyKCkgPSBkZWZhdWx0OwogdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTdHJpbmdU
b0RhdGEoc3RkOjpzcGFuPENoYXJhY3RlclR5cGU+JiBkYXRhLCBTdHJpbmdWaWV3IHN0cmluZykK
IHsKLSAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PENoYXJhY3RlclR5cGUsIExhdGlu
MUNoYXJhY3Rlcj4pIHsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PENoYXJhY3Rl
clR5cGUsIExDaGFyPikgewogICAgICAgICBBU1NFUlQoc3RyaW5nLmlzOEJpdCgpKTsKICAgICAg
ICAgc3RyaW5nLmdldENoYXJhY3RlcnM4KGRhdGEpOwogICAgIH0gZWxzZQpAQCAtNTcsNyArNTcs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRhKHN0ZDo6c3BhbjxPdXRw
dXRDaGFyYWN0ZXJUeXBlPiYgZGF0YSwgc3RkOgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRTdHJpbmdUb0RhdGEoc3RkOjpzcGFuPENo
YXJhY3RlclR5cGU+JiBkYXRhLCBpbnQzMl90IHZhbHVlKQogewotICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19zYW1lX3Y8Q2hhcmFjdGVyVHlwZSwgTGF0aW4xQ2hhcmFjdGVyPikgeworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8Q2hhcmFjdGVyVHlwZSwgTENoYXI+KSB7CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gc3RkOjp0b19jaGFycyhzdGQ6OmJpdF9jYXN0PGNoYXIqPihkYXRh
LmRhdGEoKSksIHN0ZDo6Yml0X2Nhc3Q8Y2hhcio+KGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCkp
LCB2YWx1ZSk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuZWMgIT0gc3RkOjplcnJjOjp2YWx1ZV90
b29fbGFyZ2UpOwogICAgICAgICBza2lwKGRhdGEsIHJlc3VsdC5wdHIgLSBzdGQ6OmJpdF9jYXN0
PGNoYXIqPihkYXRhLmRhdGEoKSkpOwpAQCAtNzIsMTIgKzcyLDEyIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRh
V2l0aE9uZUNoYXJhY3RlclNlcGFyYXRvclJlcGVhdGVkbHkoc3RkOjpzcGFuPENoYXJhY3RlclR5
cGU+JiBkYXRhLCBjaGFyMTZfdCBzZXBhcmF0b3JDaGFyYWN0ZXIsIFN0cmluZ1ZpZXcgc3RyaW5n
LCB1bnNpZ25lZCBjb3VudCkKIHsKICNpZiBPUyhEQVJXSU4pCi0gICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX3NhbWVfdjxDaGFyYWN0ZXJUeXBlLCBMYXRpbjFDaGFyYWN0ZXI+KSB7CisgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxDaGFyYWN0ZXJUeXBlLCBMQ2hhcj4pIHsKICAgICAg
ICAgQVNTRVJUKHN0cmluZy5pczhCaXQoKSk7CiAgICAgICAgIGlmIChjb3VudCA+IDQpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoc3RyaW5nLmxlbmd0aCgpICsgMSkgewogICAgICAgICAgICAgY2Fz
ZSAxNjogewotICAgICAgICAgICAgICAgIGFsaWduYXMoMTYpIExhdGluMUNoYXJhY3RlciBwYXR0
ZXJuWzE2XTsKKyAgICAgICAgICAgICAgICBhbGlnbmFzKDE2KSBMQ2hhciBwYXR0ZXJuWzE2XTsK
ICAgICAgICAgICAgICAgICBwYXR0ZXJuWzBdID0gc2VwYXJhdG9yQ2hhcmFjdGVyOwogICAgICAg
ICAgICAgICAgIHN0cmluZy5nZXRDaGFyYWN0ZXJzOChzdGQ6OnNwYW4geyBwYXR0ZXJuIH0uc3Vi
c3BhbigxKSk7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGZpbGxMZW5ndGggPSBjb3VudCAqIDE2
OwpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kU3RyaW5nVG9EYXRh
V2l0aE9uZUNoYXJhY3RlclNlcGFyYXRvclJlcGVhdGVkbHkoc3RkOjpzcAogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgODogewotICAgICAg
ICAgICAgICAgIGFsaWduYXMoOCkgTGF0aW4xQ2hhcmFjdGVyIHBhdHRlcm5bOF07CisgICAgICAg
ICAgICAgICAgYWxpZ25hcyg4KSBMQ2hhciBwYXR0ZXJuWzhdOwogICAgICAgICAgICAgICAgIHBh
dHRlcm5bMF0gPSBzZXBhcmF0b3JDaGFyYWN0ZXI7CiAgICAgICAgICAgICAgICAgc3RyaW5nLmdl
dENoYXJhY3RlcnM4KHN0ZDo6c3BhbiB7IHBhdHRlcm4gfS5zdWJzcGFuKDEpKTsKICAgICAgICAg
ICAgICAgICBzaXplX3QgZmlsbExlbmd0aCA9IGNvdW50ICogODsKQEAgLTk1LDcgKzk1LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFN0cmluZ1RvRGF0YVdpdGhPbmVDaGFyYWN0ZXJTZXBh
cmF0b3JSZXBlYXRlZGx5KHN0ZDo6c3AKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIDQ6IHsKLSAgICAgICAgICAgICAgICBhbGlnbmFzKDQp
IExhdGluMUNoYXJhY3RlciBwYXR0ZXJuWzRdOworICAgICAgICAgICAgICAgIGFsaWduYXMoNCkg
TENoYXIgcGF0dGVybls0XTsKICAgICAgICAgICAgICAgICBwYXR0ZXJuWzBdID0gc2VwYXJhdG9y
Q2hhcmFjdGVyOwogICAgICAgICAgICAgICAgIHN0cmluZy5nZXRDaGFyYWN0ZXJzOChzdGQ6OnNw
YW4geyBwYXR0ZXJuIH0uc3Vic3BhbigxKSk7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGZpbGxM
ZW5ndGggPSBjb3VudCAqIDQ7CkBAIC0yODAsNyArMjgwLDcgQEAgSlNTdHJpbmcqIEpTU3RyaW5n
Sm9pbmVyOjpqb2luSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgU3Ry
aW5nIHJlc3VsdDsKICAgICBpZiAobV9pc0FsbDhCaXQpCi0gICAgICAgIHJlc3VsdCA9IGpvaW5T
dHJpbmdzPExhdGluMUNoYXJhY3Rlcj4obV9zdHJpbmdzLCBtX3NlcGFyYXRvci5zcGFuOCgpLCBs
ZW5ndGgpOworICAgICAgICByZXN1bHQgPSBqb2luU3RyaW5nczxMQ2hhcj4obV9zdHJpbmdzLCBt
X3NlcGFyYXRvci5zcGFuOCgpLCBsZW5ndGgpOwogICAgIGVsc2UgewogICAgICAgICBpZiAobV9z
ZXBhcmF0b3IuaXM4Qml0KCkpCiAgICAgICAgICAgICByZXN1bHQgPSBqb2luU3RyaW5nczxjaGFy
MTZfdD4obV9zdHJpbmdzLCBtX3NlcGFyYXRvci5zcGFuOCgpLCBsZW5ndGgpOwpAQCAtMzE0LDcg
KzMxNCw3IEBAIEpTU3RyaW5nKiBKU09ubHlTdHJpbmdzQW5kSW50MzJzSm9pbmVyOjpqb2luSW1w
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjCiAKICAgICBTdHJpbmcgcmVzdWx0Owog
ICAgIGlmIChtX2lzQWxsOEJpdCkKLSAgICAgICAgcmVzdWx0ID0gam9pblN0cmluZ3M8TGF0aW4x
Q2hhcmFjdGVyPihnbG9iYWxPYmplY3QsIGRhdGEsIGxlbmd0aCwgbV9zZXBhcmF0b3Iuc3Bhbjgo
KSwgdG90YWxMZW5ndGgpOworICAgICAgICByZXN1bHQgPSBqb2luU3RyaW5nczxMQ2hhcj4oZ2xv
YmFsT2JqZWN0LCBkYXRhLCBsZW5ndGgsIG1fc2VwYXJhdG9yLnNwYW44KCksIHRvdGFsTGVuZ3Ro
KTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKG1fc2VwYXJhdG9yLmlzOEJpdCgpKQogICAgICAg
ICAgICAgcmVzdWx0ID0gam9pblN0cmluZ3M8Y2hhcjE2X3Q+KGdsb2JhbE9iamVjdCwgZGF0YSwg
bGVuZ3RoLCBtX3NlcGFyYXRvci5zcGFuOCgpLCB0b3RhbExlbmd0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IGQzMzgwYmY3ZTll
Mi4uOTQzOGNhMjE2NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
aXRlcmFsUGFyc2VyLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIEFMV0FZU19JTkxJTkUgSlNTdHJp
bmcqIExpdGVyYWxQYXJzZXI8Q2hhclR5cGUsIHJldml2ZXJNb2RlPjo6bWFrZUpTU3RyaW5nKFZN
JiB2CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCB0
b2tlbi0+c3RyaW5nMTYoKSkucmVsZWFzZUltcGwoKSk7CiB9CiAKLVtbbWF5YmVfdW51c2VkXV0g
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5ub3RCZUlkZW50UGFydE9yRXNjYXBlU3RhcnQo
TGF0aW4xQ2hhcmFjdGVyKQorW1ttYXliZV91bnVzZWRdXSBzdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIGNhbm5vdEJlSWRlbnRQYXJ0T3JFc2NhcGVTdGFydChMQ2hhcikKIHsKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpAQCAtODgxLDcgKzg4MSw3IEBAIEFMV0FZU19JTkxJ
TkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGUsIHJldml2ZXJNb2RlPjo6TGV4ZXI6
Om5leHRNYXliZUlkCiB9CiAKIHRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIHZvaWQgc2V0UGFy
c2VyVG9rZW5TdHJpbmc8TGF0aW4xQ2hhcmFjdGVyPihMaXRlcmFsUGFyc2VyVG9rZW48TGF0aW4x
Q2hhcmFjdGVyPiYgdG9rZW4sIGNvbnN0IExhdGluMUNoYXJhY3Rlciogc3RyaW5nKQorQUxXQVlT
X0lOTElORSB2b2lkIHNldFBhcnNlclRva2VuU3RyaW5nPExDaGFyPihMaXRlcmFsUGFyc2VyVG9r
ZW48TENoYXI+JiB0b2tlbiwgY29uc3QgTENoYXIqIHN0cmluZykKIHsKICAgICB0b2tlbi5zdHJp
bmdJczhCaXQgPSAxOwogICAgIHRva2VuLnN0cmluZ1N0YXJ0OCA9IHN0cmluZzsKQEAgLTg5Nyw3
ICs4OTcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0UGFyc2VyVG9rZW5TdHJpbmc8Y2hhcjE2
X3Q+KExpdGVyYWxQYXJzZXJUb2tlbjxjaGFyMTZfdD4mCiBlbnVtIGNsYXNzIFNhZmVTdHJpbmdD
aGFyYWN0ZXJTZXQgeyBTdHJpY3QsIFNsb3BweSB9OwogCiB0ZW1wbGF0ZSA8U2FmZVN0cmluZ0No
YXJhY3RlclNldCBzZXQ+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzU2FmZVN0cmluZ0No
YXJhY3RlcihMYXRpbjFDaGFyYWN0ZXIgYywgTGF0aW4xQ2hhcmFjdGVyIHRlcm1pbmF0b3IpCitz
dGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzU2FmZVN0cmluZ0NoYXJhY3RlcihMQ2hhciBjLCBM
Q2hhciB0ZXJtaW5hdG9yKQogewogICAgIGlmIGNvbnN0ZXhwciAoc2V0ID09IFNhZmVTdHJpbmdD
aGFyYWN0ZXJTZXQ6OlN0cmljdCkKICAgICAgICAgcmV0dXJuIHNhZmVTdHJpbmdMYXRpbjFDaGFy
YWN0ZXJzSW5TdHJpY3RKU09OW2NdOwpAQCAtOTEwLDE0ICs5MTAsMTQgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc1NhZmVTdHJpbmdDaGFyYWN0ZXIoY2hhcjE2X3QgYywgY2hhcjE2X3Qg
dGVybWluYXRvcikKIHsKICAgICBpZiAoIWlzTGF0aW4xKGMpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICByZXR1cm4gaXNTYWZlU3RyaW5nQ2hhcmFjdGVyPHNldD4oc3RhdGljX2Nhc3Q8TGF0
aW4xQ2hhcmFjdGVyPihjKSwgc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPih0ZXJtaW5hdG9y
KSk7CisgICAgcmV0dXJuIGlzU2FmZVN0cmluZ0NoYXJhY3RlcjxzZXQ+KHN0YXRpY19jYXN0PExD
aGFyPihjKSwgc3RhdGljX2Nhc3Q8TENoYXI+KHRlcm1pbmF0b3IpKTsKIH0KIAogdGVtcGxhdGUg
PFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQgc2V0Pgogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBp
c1NhZmVTdHJpbmdDaGFyYWN0ZXJGb3JJZGVudGlmaWVyKGNoYXIxNl90IGMsIGNoYXIxNl90IHRl
cm1pbmF0b3IpCiB7CiAgICAgaWYgY29uc3RleHByIChzZXQgPT0gU2FmZVN0cmluZ0NoYXJhY3Rl
clNldDo6U3RyaWN0KQotICAgICAgICByZXR1cm4gaXNTYWZlU3RyaW5nQ2hhcmFjdGVyPHNldD4o
c3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjKSwgc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFj
dGVyPih0ZXJtaW5hdG9yKSkgfHwgIWlzTGF0aW4xKGMpOworICAgICAgICByZXR1cm4gaXNTYWZl
U3RyaW5nQ2hhcmFjdGVyPHNldD4oc3RhdGljX2Nhc3Q8TENoYXI+KGMpLCBzdGF0aWNfY2FzdDxM
Q2hhcj4odGVybWluYXRvcikpIHx8ICFpc0xhdGluMShjKTsKICAgICBlbHNlCiAgICAgICAgIHJl
dHVybiAoYyA+PSAnICcgJiYgaXNMYXRpbjEoYykgJiYgYyAhPSAnXFwnICYmIGMgIT0gdGVybWlu
YXRvcikgfHwgKGMgPT0gJ1x0Jyk7CiB9CkBAIC05MzIsMTAgKzkzMiwxMCBAQCBBTFdBWVNfSU5M
SU5FIFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlLCByZXZpdmVyTW9kZT46OkxleGVy
OjpsZXhTdHJpbmcoTAogICAgIGlmIChtX21vZGUgPT0gU3RyaWN0SlNPTikgewogICAgICAgICBB
U1NFUlQodGVybWluYXRvciA9PSAnIicpOwogICAgICAgICBpZiBjb25zdGV4cHIgKGhpbnQgPT0g
SlNPTklkZW50aWZpZXJIaW50OjpNYXliZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIHdoaWxl
IChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0NoYXJhY3RlckZvcklkZW50aWZpZXI8U2Fm
ZVN0cmluZ0NoYXJhY3RlclNldDo6U3RyaWN0PigqbV9wdHIsIHRlcm1pbmF0b3IpKQorICAgICAg
ICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNTYWZlU3RyaW5nQ2hhcmFjdGVyRm9ySWRl
bnRpZmllcjxTYWZlU3RyaW5nQ2hhcmFjdGVyU2V0OjpTdHJpY3Q+KCptX3B0ciwgJyInKSkKICAg
ICAgICAgICAgICAgICArK21fcHRyOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdXNp
bmcgVW5zaWduZWRUeXBlID0gU0lNRDo6U2FtZVNpemVVbnNpZ25lZEludGVnZXI8Q2hhclR5cGU+
OworICAgICAgICAgICAgdXNpbmcgVW5zaWduZWRUeXBlID0gc3RkOjptYWtlX3Vuc2lnbmVkX3Q8
Q2hhclR5cGU+OwogICAgICAgICAgICAgY29uc3RleHByIGF1dG8gcXVvdGVNYXNrID0gU0lNRDo6
c3BsYXQ8VW5zaWduZWRUeXBlPignIicpOwogICAgICAgICAgICAgY29uc3RleHByIGF1dG8gZXNj
YXBlTWFzayA9IFNJTUQ6OnNwbGF0PFVuc2lnbmVkVHlwZT4oJ1xcJyk7CiAgICAgICAgICAgICBj
b25zdGV4cHIgYXV0byBjb250cm9sTWFzayA9IFNJTUQ6OnNwbGF0PFVuc2lnbmVkVHlwZT4oJyAn
KTsKQEAgLTk0Nyw4ICs5NDcsOCBAQCBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFsUGFy
c2VyPENoYXJUeXBlLCByZXZpdmVyTW9kZT46OkxleGVyOjpsZXhTdHJpbmcoTAogICAgICAgICAg
ICAgICAgIHJldHVybiBTSU1EOjpmaW5kRmlyc3ROb25aZXJvSW5kZXgobWFzayk7CiAgICAgICAg
ICAgICB9OwogCi0gICAgICAgICAgICBhdXRvIHNjYWxhck1hdGNoID0gWyZdKENoYXJUeXBlIGNo
YXJhY3RlcikgQUxXQVlTX0lOTElORV9MQU1CREEgewotICAgICAgICAgICAgICAgIHJldHVybiAh
aXNTYWZlU3RyaW5nQ2hhcmFjdGVyPFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQ6OlN0cmljdD4oY2hh
cmFjdGVyLCB0ZXJtaW5hdG9yKTsKKyAgICAgICAgICAgIGF1dG8gc2NhbGFyTWF0Y2ggPSBbJl0o
YXV0byBjaGFyYWN0ZXIpIEFMV0FZU19JTkxJTkVfTEFNQkRBIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIWlzU2FmZVN0cmluZ0NoYXJhY3RlcjxTYWZlU3RyaW5nQ2hhcmFjdGVyU2V0OjpTdHJp
Y3Q+KGNoYXJhY3RlciwgJyInKTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIG1fcHRy
ID0gU0lNRDo6ZmluZChzdGQ6OnNwYW4geyBtX3B0ciwgbV9lbmQgfSwgdmVjdG9yTWF0Y2gsIHNj
YWxhck1hdGNoKTsKQEAgLTk1OCw3ICs5NTgsNyBAQCBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlLCByZXZpdmVyTW9kZT46OkxleGVyOjpsZXhTdHJpbmcoTAog
ICAgICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNTYWZlU3RyaW5nQ2hhcmFjdGVy
Rm9ySWRlbnRpZmllcjxTYWZlU3RyaW5nQ2hhcmFjdGVyU2V0OjpTbG9wcHk+KCptX3B0ciwgdGVy
bWluYXRvcikpCiAgICAgICAgICAgICAgICAgKyttX3B0cjsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHVzaW5nIFVuc2lnbmVkVHlwZSA9IFNJTUQ6OlNhbWVTaXplVW5zaWduZWRJbnRl
Z2VyPENoYXJUeXBlPjsKKyAgICAgICAgICAgIHVzaW5nIFVuc2lnbmVkVHlwZSA9IHN0ZDo6bWFr
ZV91bnNpZ25lZF90PENoYXJUeXBlPjsKICAgICAgICAgICAgIGF1dG8gcXVvdGVNYXNrID0gU0lN
RDo6c3BsYXQ8VW5zaWduZWRUeXBlPih0ZXJtaW5hdG9yKTsKICAgICAgICAgICAgIGNvbnN0ZXhw
ciBhdXRvIGVzY2FwZU1hc2sgPSBTSU1EOjpzcGxhdDxVbnNpZ25lZFR5cGU+KCdcXCcpOwogICAg
ICAgICAgICAgY29uc3RleHByIGF1dG8gY29udHJvbE1hc2sgPSBTSU1EOjpzcGxhdDxVbnNpZ25l
ZFR5cGU+KCcgJyk7CkBAIC0xOTA2LDkgKzE5MDYsOSBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8
Q2hhclR5cGUsIHJldml2ZXJNb2RlPjo6cGFyc2UoVk0mIHZtLCBQYXJzZXJTdGF0ZSBpbml0aWFs
UwogfQogCiAvLyBJbnN0YW50aWF0ZSB0aGUgdHdvIGZsYXZvcnMgb2YgTGl0ZXJhbFBhcnNlciB3
ZSBuZWVkIGluc3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoaXMgZmlsZSBpbiBMaXRlcmFsUGFy
c2VyLmgKLXRlbXBsYXRlIGNsYXNzIExpdGVyYWxQYXJzZXI8TGF0aW4xQ2hhcmFjdGVyLCBKU09O
UmV2aXZlck1vZGU6OkVuYWJsZWQ+OwordGVtcGxhdGUgY2xhc3MgTGl0ZXJhbFBhcnNlcjxMQ2hh
ciwgSlNPTlJldml2ZXJNb2RlOjpFbmFibGVkPjsKIHRlbXBsYXRlIGNsYXNzIExpdGVyYWxQYXJz
ZXI8Y2hhcjE2X3QsIEpTT05SZXZpdmVyTW9kZTo6RW5hYmxlZD47Ci10ZW1wbGF0ZSBjbGFzcyBM
aXRlcmFsUGFyc2VyPExhdGluMUNoYXJhY3RlciwgSlNPTlJldml2ZXJNb2RlOjpEaXNhYmxlZD47
Cit0ZW1wbGF0ZSBjbGFzcyBMaXRlcmFsUGFyc2VyPExDaGFyLCBKU09OUmV2aXZlck1vZGU6OkRp
c2FibGVkPjsKIHRlbXBsYXRlIGNsYXNzIExpdGVyYWxQYXJzZXI8Y2hhcjE2X3QsIEpTT05SZXZp
dmVyTW9kZTo6RGlzYWJsZWQ+OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmgKaW5kZXggZTQxMDZlNTAyODE1Li43ODI0ZjEwYjEzZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTExNywx
MiArMTE3LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0cnVjdCBMaXRl
cmFsUGFyc2VyVG9rZW4gewogICAgIHVuaW9uIHsKICAgICAgICAgZG91YmxlIG51bWJlclRva2Vu
OyAvLyBPbmx5IHVzZWQgZm9yIFRva051bWJlci4KICAgICAgICAgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogaWRlbnRpZmllclN0YXJ0OwotICAgICAgICBjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIHN0cmlu
Z1N0YXJ0ODsKKyAgICAgICAgY29uc3QgTENoYXIqIHN0cmluZ1N0YXJ0ODsKICAgICAgICAgY29u
c3QgY2hhcjE2X3QqIHN0cmluZ1N0YXJ0MTY7CiAgICAgfTsKIAogICAgIHN0ZDo6c3Bhbjxjb25z
dCBDaGFyYWN0ZXJUeXBlPiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4geyBpZGVudGlmaWVy
U3RhcnQsIHN0cmluZ09ySWRlbnRpZmllckxlbmd0aCB9OyB9Ci0gICAgc3RkOjpzcGFuPGNvbnN0
IExhdGluMUNoYXJhY3Rlcj4gc3RyaW5nOCgpIGNvbnN0IHsgcmV0dXJuIHsgc3RyaW5nU3RhcnQ4
LCBzdHJpbmdPcklkZW50aWZpZXJMZW5ndGggfTsgfQorICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hh
cj4gc3RyaW5nOCgpIGNvbnN0IHsgcmV0dXJuIHsgc3RyaW5nU3RhcnQ4LCBzdHJpbmdPcklkZW50
aWZpZXJMZW5ndGggfTsgfQogICAgIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gc3RyaW5nMTYo
KSBjb25zdCB7IHJldHVybiB7IHN0cmluZ1N0YXJ0MTYsIHN0cmluZ09ySWRlbnRpZmllckxlbmd0
aCB9OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcAppbmRleCA1MDFlNjZhYzVhZmUuLmI3YjY5ZjE2ZDk5MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC0z
NDUsOSArMzQ1LDkgQEAgc3RhdGljIGNoYXIqIHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoUmFk
aXhCdWZmZXImIGJ1ZmZlciwgZG91YmxlIG9yaWdpbmFsTnVtYmUKIAogc3RhdGljIFN0cmluZyB0
b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKGludDMyX3QgbnVtYmVyLCB1bnNpZ25lZCByYWRpeCkK
IHsKLSAgICBMYXRpbjFDaGFyYWN0ZXIgYnVmWzEgKyAzMl07IC8vIFdvcnN0IGNhc2UgaXMgcmFk
aXggPT0gMiwgd2hpY2ggZ2l2ZXMgdXMgMzIgZGlnaXRzICsgc2lnbi4KLSAgICBMYXRpbjFDaGFy
YWN0ZXIqIGVuZCA9IHN0ZDo6ZW5kKGJ1Zik7Ci0gICAgTGF0aW4xQ2hhcmFjdGVyKiBwID0gZW5k
OworICAgIExDaGFyIGJ1ZlsxICsgMzJdOyAvLyBXb3JzdCBjYXNlIGlzIHJhZGl4ID09IDIsIHdo
aWNoIGdpdmVzIHVzIDMyIGRpZ2l0cyArIHNpZ24uCisgICAgTENoYXIqIGVuZCA9IHN0ZDo6ZW5k
KGJ1Zik7CisgICAgTENoYXIqIHAgPSBlbmQ7CiAKICAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7
CiAgICAgdWludDMyX3QgcG9zaXRpdmVOdW1iZXIgPSBudW1iZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggYTg0YTQ5ZTcwYmZmLi5mMTI2YjlhOGQ1
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTEw
MSw3ICsxMDEsNyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHUxLAogICAgIC8vIFdlIGRvIG5vdCBh
Y2NvdW50IHUxIGNvc3QgaW4gKDIpIHNpbmNlIHUxIG1heSBiZSBzaGFyZWQgU3RyaW5nSW1wbCwg
YW5kIGl0IG1heSBub3QgaW50cm9kdWNlIGFkZGl0aW9uYWwgY29zdC4KICAgICAvLyBXZSBjb25z
ZXJ2YXRpdmVseSBjb25zaWRlciB0aGUgY29zdCBvZiB1MS4gQ3VycmVudGx5LCB3ZSBhcmUgbm90
IGNvbnNpZGVyaW5nIGFib3V0IGlzOEJpdCgpIGNhc2UgYmVjYXVzZSAxNi1iaXQKICAgICAvLyBz
dHJpbmdzIGFyZSByZWxhdGl2ZWx5IHJhcmUuIEJ1dCB3ZSBjYW4gZG8gdGhhdCBpZiB3ZSBuZWVk
IHRvIGNvbnNpZGVyIGl0LgotICAgIGlmIChzMi0+aXNSb3BlKCkgfHwgKFN0cmluZ0ltcGw6Omhl
YWRlclNpemU8TGF0aW4xQ2hhcmFjdGVyPigpICsgbGVuZ3RoMSArIGxlbmd0aDIpID49IHNpemVv
ZihKU1JvcGVTdHJpbmcpKQorICAgIGlmIChzMi0+aXNSb3BlKCkgfHwgKFN0cmluZ0ltcGw6Omhl
YWRlclNpemU8TENoYXI+KCkgKyBsZW5ndGgxICsgbGVuZ3RoMikgPj0gc2l6ZW9mKEpTUm9wZVN0
cmluZykpCiAgICAgICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwganNTdHJpbmco
dm0sIHUxKSwgczIpOwogCiAgICAgQVNTRVJUKCFzMi0+aXNSb3BlKCkpOwpAQCAtMTM0LDcgKzEz
NCw3IEBAIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzMSwgY29uCiAKICAgICAvLyAoMSkgQ29zdCBvZiBtYWtp
bmcgSlNTdHJpbmcgICAgOiBzaXplb2YoSlNTdHJpbmcpIChmb3IgbmV3IHN0cmluZykgKyBzaXpl
b2YoU3RyaW5nSW1wbCBoZWFkZXIpICsgbGVuZ3RoMSArIGxlbmd0aDIKICAgICAvLyAoMikgQ29z
dCBvZiBtYWtpbmcgSlNSb3BlU3RyaW5nOiBzaXplb2YoSlNTdHJpbmcpIChmb3IgdTIpICsgc2l6
ZW9mKEpTUm9wZVN0cmluZykKLSAgICBpZiAoczEtPmlzUm9wZSgpIHx8IChTdHJpbmdJbXBsOjpo
ZWFkZXJTaXplPExhdGluMUNoYXJhY3Rlcj4oKSArIGxlbmd0aDEgKyBsZW5ndGgyKSA+PSBzaXpl
b2YoSlNSb3BlU3RyaW5nKSkKKyAgICBpZiAoczEtPmlzUm9wZSgpIHx8IChTdHJpbmdJbXBsOjpo
ZWFkZXJTaXplPExDaGFyPigpICsgbGVuZ3RoMSArIGxlbmd0aDIpID49IHNpemVvZihKU1JvcGVT
dHJpbmcpKQogICAgICAgICByZXR1cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUodm0sIHMxLCBqc1N0
cmluZyh2bSwgdTIpKTsKIAogICAgIEFTU0VSVCghczEtPmlzUm9wZSgpKTsKQEAgLTIxMyw3ICsy
MTMsNyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHUxLAogCiAgICAgLy8gKDEpIENvc3Qgb2YgbWFr
aW5nIEpTU3RyaW5nICAgIDogc2l6ZW9mKEpTU3RyaW5nKSAoZm9yIG5ldyBzdHJpbmcpICsgc2l6
ZW9mKFN0cmluZ0ltcGwgaGVhZGVyKSArIGxlbmd0aDEgKyBsZW5ndGgyCiAgICAgLy8gKDIpIENv
c3Qgb2YgbWFraW5nIEpTUm9wZVN0cmluZzogc2l6ZW9mKEpTU3RyaW5nKSAoZm9yIHUxKSArIHNp
emVvZihKU1N0cmluZykgKGZvciB1MikgKyBzaXplb2YoSlNSb3BlU3RyaW5nKQotICAgIGlmICgo
U3RyaW5nSW1wbDo6aGVhZGVyU2l6ZTxMYXRpbjFDaGFyYWN0ZXI+KCkgKyBsZW5ndGgxICsgbGVu
Z3RoMikgPj0gKHNpemVvZihKU1JvcGVTdHJpbmcpICsgc2l6ZW9mKEpTU3RyaW5nKSkpCisgICAg
aWYgKChTdHJpbmdJbXBsOjpoZWFkZXJTaXplPExDaGFyPigpICsgbGVuZ3RoMSArIGxlbmd0aDIp
ID49IChzaXplb2YoSlNSb3BlU3RyaW5nKSArIHNpemVvZihKU1N0cmluZykpKQogICAgICAgICBy
ZXR1cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUodm0sIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5n
KHZtLCB1MikpOwogCiAgICAgU3RyaW5nIG5ld1N0cmluZyA9IHRyeU1ha2VTdHJpbmcodTEsIHUy
KTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHUxLAogCiAgICAgLy8g
KDEpIENvc3Qgb2YgbWFraW5nIEpTU3RyaW5nICAgIDogc2l6ZW9mKEpTU3RyaW5nKSAoZm9yIG5l
dyBzdHJpbmcpICsgc2l6ZW9mKFN0cmluZ0ltcGwgaGVhZGVyKSArIGxlbmd0aDEgKyBsZW5ndGgy
ICsgbGVuZ3RoMwogICAgIC8vICgyKSBDb3N0IG9mIG1ha2luZyBKU1JvcGVTdHJpbmc6IHNpemVv
ZihKU1N0cmluZykgKGZvciB1MSkgKyBzaXplb2YoSlNTdHJpbmcpIChmb3IgdTIpICsgc2l6ZW9m
KEpTU3RyaW5nKSAoZm9yIHUzKSArIHNpemVvZihKU1JvcGVTdHJpbmcpCi0gICAgaWYgKChTdHJp
bmdJbXBsOjpoZWFkZXJTaXplPExhdGluMUNoYXJhY3Rlcj4oKSArIGxlbmd0aDEgKyBsZW5ndGgy
ICsgbGVuZ3RoMykgPj0gKHNpemVvZihKU1JvcGVTdHJpbmcpICsgc2l6ZW9mKEpTU3RyaW5nKSAq
IDIpKQorICAgIGlmICgoU3RyaW5nSW1wbDo6aGVhZGVyU2l6ZTxMQ2hhcj4oKSArIGxlbmd0aDEg
KyBsZW5ndGgyICsgbGVuZ3RoMykgPj0gKHNpemVvZihKU1JvcGVTdHJpbmcpICsgc2l6ZW9mKEpT
U3RyaW5nKSAqIDIpKQogICAgICAgICByZXR1cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUodm0sIGpz
U3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5nKHZtLCB1MykpOwogCiAg
ICAgU3RyaW5nIG5ld1N0cmluZyA9IHRyeU1ha2VTdHJpbmcodTEsIHUyLCB1Myk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQuaAppbmRleCA2NzhmNTRmMTMyNTEuLmI2NTg5
ZmQ2OWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJ
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCkBAIC01
MSwxMiArNTEsMTIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IHBhcnNlRGlnaXQodW5zaWdu
ZWQgc2hvcnQgYywgaW50IHJhZGl4KQogICAgIHJldHVybiBkaWdpdDsKIH0KIAotc3RhdGljIGRv
dWJsZSBwYXJzZUludE92ZXJmbG93KHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHMs
IGludCByYWRpeCkKK3N0YXRpYyBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhzdGQ6OnNwYW48Y29u
c3QgTENoYXI+IHMsIGludCByYWRpeCkKIHsKICAgICBkb3VibGUgbnVtYmVyID0gMC4wOwogICAg
IGRvdWJsZSByYWRpeE11bHRpcGxpZXIgPSAxLjA7CiAKLSAgICBmb3IgKGNvbnN0IExhdGluMUNo
YXJhY3RlciogcCA9IHMuZGF0YSgpICsgcy5zaXplKCkgLSAxOyBwID49IHMuZGF0YSgpOyBwLS0p
IHsKKyAgICBmb3IgKGNvbnN0IExDaGFyKiBwID0gcy5kYXRhKCkgKyBzLnNpemUoKSAtIDE7IHAg
Pj0gcy5kYXRhKCk7IHAtLSkgewogICAgICAgICBpZiAocmFkaXhNdWx0aXBsaWVyID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkgewogICAgICAgICAgICAgaWYgKCpw
ICE9ICcwJykgewogICAgICAgICAgICAgICAgIG51bWJlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBib29sIGlzU3RyV2hpdGVTcGFjZShDaGFyYWN0ZXJUeXBlIGMpCiB7CiAgICAgLy8gaHR0
cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9udW1iZXItYXBwbGllZC10by10aGUt
c3RyaW5nLXR5cGUKICAgICBpZiBjb25zdGV4cHIgKHNpemVvZihjKSA9PSAxKQotICAgICAgICBy
ZXR1cm4gTGV4ZXI8TGF0aW4xQ2hhcmFjdGVyPjo6aXNXaGl0ZVNwYWNlKGMpIHx8IExleGVyPExh
dGluMUNoYXJhY3Rlcj46OmlzTGluZVRlcm1pbmF0b3IoYyk7CisgICAgICAgIHJldHVybiBMZXhl
cjxMQ2hhcj46OmlzV2hpdGVTcGFjZShjKSB8fCBMZXhlcjxMQ2hhcj46OmlzTGluZVRlcm1pbmF0
b3IoYyk7CiAgICAgcmV0dXJuIExleGVyPGNoYXIxNl90Pjo6aXNXaGl0ZVNwYWNlKGMpIHx8IExl
eGVyPGNoYXIxNl90Pjo6aXNMaW5lVGVybWluYXRvcihjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAppbmRleCAzYjdjZWQ4YjIxMTUuLmEyMmY4
ZjMzMjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYW5vbmljYWxOdW1l
cmljSW5kZXhTdHJpbmcoVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZQogICAgIGRvdWJs
ZSBpbmRleCA9IGpzVG9OdW1iZXIocHJvcGVydHlOYW1lKTsKICAgICBOdW1iZXJUb1N0cmluZ0J1
ZmZlciBidWZmZXI7CiAgICAgYXV0byBzcGFuID0gV1RGOjpudW1iZXJUb1N0cmluZ0FuZFNpemUo
aW5kZXgsIGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGVxdWFsKHByb3BlcnR5TmFtZSwgYnl0ZUNhc3Q8
TGF0aW4xQ2hhcmFjdGVyPihzcGFuKSk7CisgICAgcmV0dXJuIGVxdWFsKHByb3BlcnR5TmFtZSwg
Ynl0ZUNhc3Q8TENoYXI+KHNwYW4pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCBmOTNmYTU3NDcyNzQuLjkxOWJk
NDRmOTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC01
NzksNyArNTc5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMg
aW5saW5lIHZvaWQgYXBwZW5kTGluZVRlcm1pbmF0b3JFc2NhcGUoU3RyaW5nQnVpbGRlciYsIENo
YXJhY3RlclR5cGUpOwogCiB0ZW1wbGF0ZSA8PgotaW5saW5lIHZvaWQgYXBwZW5kTGluZVRlcm1p
bmF0b3JFc2NhcGU8TGF0aW4xQ2hhcmFjdGVyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBMYXRp
bjFDaGFyYWN0ZXIgbGluZVRlcm1pbmF0b3IpCitpbmxpbmUgdm9pZCBhcHBlbmRMaW5lVGVybWlu
YXRvckVzY2FwZTxMQ2hhcj4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgTENoYXIgbGluZVRlcm1p
bmF0b3IpCiB7CiAgICAgaWYgKGxpbmVUZXJtaW5hdG9yID09ICdcbicpCiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCduJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbWFsbFN0cmluZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmNwcAppbmRleCA4Mjc2ZWEyNmEwODMuLmYyOTlkOTNhNjFkZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIHZvaWQgU21hbGxTdHJpbmdzOjppbml0aWFsaXplQ29tbW9uU3RyaW5ncyhWTSYgdm0pCiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnQ7
ICsraSkgewogICAgICAgICBBU1NFUlQoIW1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tpXSk7Ci0g
ICAgICAgIHN0ZDo6YXJyYXk8Y29uc3QgTGF0aW4xQ2hhcmFjdGVyLCAxPiBzdHJpbmcgPSB7IHN0
YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oaSkgfTsKKyAgICAgICAgc3RkOjphcnJheTxjb25z
dCBMQ2hhciwgMT4gc3RyaW5nID0geyBzdGF0aWNfY2FzdDxMQ2hhcj4oaSkgfTsKICAgICAgICAg
bV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldID0gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3du
ZXIodm0sIEF0b21TdHJpbmdJbXBsOjphZGQoc3RyaW5nKS5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgQVNTRVJUKG1fbmVlZHNUb0JlVmlzaXRlZCk7CiAgICAgfQpAQCAtMTE4LDcgKzExOCw3
IEBAIFJlZjxBdG9tU3RyaW5nSW1wbD4gU21hbGxTdHJpbmdzOjpzaW5nbGVDaGFyYWN0ZXJTdHJp
bmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0CiB7CiAgICAgaWYgKG1faXNJbml0aWFsaXplZCkg
W1tsaWtlbHldXQogICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PEF0b21TdHJpbmdJbXBsKj4o
Y29uc3RfY2FzdDxTdHJpbmdJbXBsKj4obV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2NoYXJhY3Rl
cl0tPnRyeUdldFZhbHVlSW1wbCgpKSk7Ci0gICAgc3RkOjphcnJheTxjb25zdCBMYXRpbjFDaGFy
YWN0ZXIsIDE+IHN0cmluZyA9IHsgc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjaGFyYWN0
ZXIpIH07CisgICAgc3RkOjphcnJheTxjb25zdCBMQ2hhciwgMT4gc3RyaW5nID0geyBzdGF0aWNf
Y2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSB9OwogICAgIHJldHVybiBBdG9tU3RyaW5nSW1wbDo6YWRk
KHN0cmluZykucmVsZWFzZU5vbk51bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCmluZGV4IGEyY2EwZmI0NmJmYy4u
YzM1YjNhM2ZlZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihzdHJpbmdGcm9tQ2hhckNvZGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTaW5nbGVDaGFyYWN0ZXJT
dHJpbmcodm0sIGNvZGUpKTsKICAgICB9CiAKLSAgICBzdGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVy
PiBidWY4Qml0OworICAgIHN0ZDo6c3BhbjxMQ2hhcj4gYnVmOEJpdDsKICAgICBhdXRvIGltcGw4
Qml0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZjhCaXQpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBjaGFy
MTZfdCBjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxjaGFyMTZfdD4oY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChpKS50b1VJbnQzMihnbG9iYWxPYmplY3QpKTsKQEAgLTEwNiw3ICsxMDYsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3RyaW5nRnJvbUNoYXJDb2RlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIFdURk1v
dmUoaW1wbDE2Qml0KSkpKTsKICAgICAgICAgfQotICAgICAgICBidWY4Qml0W2ldID0gc3RhdGlj
X2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjaGFyYWN0ZXIpOworICAgICAgICBidWY4Qml0W2ldID0g
c3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rlcik7CiAgICAgfQogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBXVEZNb3ZlKGltcGw4Qml0
KSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCmluZGV4IGRjZmQyYzMwNjEyZi4uY2EzYTVlZjJmMzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTMxMCw3
ICszMTAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3RyaW5nUHJvdG9GdW5jUmVwZWF0
Q2hhcmFjdGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGNoYXIxNl90IGNoYXJhY3Rl
ciA9IHZpZXdbMF07CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlmIChpc0xhdGluMShjaGFy
YWN0ZXIpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3Rlcihn
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oY2hhcmFjdGVyKSwgcmVw
ZWF0Q291bnQpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0
ZXIoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSwgcmVwZWF0Q291
bnQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcihnbG9iYWxP
YmplY3QsIGNoYXJhY3RlciwgcmVwZWF0Q291bnQpKTsKIH0KIApAQCAtODMyLDcgKzgzMiw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgaWYgKHNlcGFyYXRvckxlbmd0aCA9PSAxKSB7
CiAgICAgICAgIGNoYXIxNl90IHNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvckltcGwtPmF0
KDApOwogICAgICAgICBpZiAoc3RyaW5nSW1wbC0+aXM4Qml0KCkpIHsKLSAgICAgICAgICAgIGlm
IChzcGxpdFN0cmluZ0J5T25lQ2hhcmFjdGVySW1wbDxMYXRpbjFDaGFyYWN0ZXI+KHJlc3VsdCwg
c3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBsaW1pdCkpCisgICAgICAgICAgICBpZiAo
c3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8TENoYXI+KHJlc3VsdCwgc3RyaW5nSW1wbCwg
c2VwYXJhdG9yQ2hhcmFjdGVyLCBsaW1pdCkpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FjaGVBbmRDcmVhdGVBcnJheSgpKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3Rl
ckltcGw8Y2hhcjE2X3Q+KHJlc3VsdCwgc3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBs
aW1pdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGVJbmxpbmVzLmgKaW5kZXggYmRlZmEzYmE1ZWZlLi5mM2UwM2FkMDY5ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGVJ
bmxpbmVzLmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1Nw
bGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAg
ICAgICByZXR1cm4ganNFbXB0eVN0cmluZyh2bSk7CiAKICAgICBpZiAoc291cmNlLmlzOEJpdCgp
ICYmIGFsbFNlcGFyYXRvcnM4Qml0KSB7Ci0gICAgICAgIHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgc3RkOjpzcGFuPExDaGFyPiBidWZmZXI7CiAgICAgICAgIGF1
dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgs
IGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkgewogICAgICAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIEFMV0FZ
U19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKHZtKTsKIAog
ICAgIGlmIChzb3VyY2UuaXM4Qml0KCkgJiYgYWxsU2VwYXJhdG9yczhCaXQpIHsKLSAgICAgICAg
c3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gYnVmZmVyOworICAgICAgICBzdGQ6OnNwYW48TENo
YXI+IGJ1ZmZlcjsKICAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh0b3RhbExlbmd0aCwgYnVmZmVyKTsKICAgICAgICAgaWYgKCFpbXBsKSB7CiAg
ICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CkBA
IC01MjQsNyArNTI0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNl
U3Vic3RyaW5ncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4g
anNFbXB0eVN0cmluZyh2bSk7CiAKICAgICBpZiAoc291cmNlLmlzOEJpdCgpKSB7Ci0gICAgICAg
IHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlcjsKKyAgICAgICAgc3RkOjpzcGFuPExD
aGFyPiBidWZmZXI7CiAgICAgICAgIGF1dG8gc291cmNlRGF0YSA9IHNvdXJjZS5zcGFuOCgpOwog
ICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRv
dGFsTGVuZ3RoLCBidWZmZXIpOwogICAgICAgICBpZiAoIWltcGwpIHsKQEAgLTgxOSw3ICs4MTks
NyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogcmVwbGFjZUFsbFdpdGhDYWNoZVVz
aW5nUmVnRXhwU2VhcmNoVGhyZWVBcmd1bWVudAogCiAgICAgU3RyaW5nVmlldyBzb3VyY2VWaWV3
IHsgc291cmNlIH07CiAgICAgaWYgKHNvdXJjZVZpZXcuaXM4Qml0KCkgJiYgcmVwbGFjZW1lbnRz
QXJlOEJpdCkgewotICAgICAgICBzdGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBidWZmZXI7Cisg
ICAgICAgIHN0ZDo6c3BhbjxMQ2hhcj4gYnVmZmVyOwogICAgICAgICBhdXRvIGltcGwgPSBTdHJp
bmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLCBidWZmZXIpOwogICAg
ICAgICBpZiAoIWltcGwpIFtbdW5saWtlbHldXSB7CiAgICAgICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CkBAIC05NjQsNyArOTY0LDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VBbGxXaXRoQ2FjaGVVc2luZ1JlZ0V4cFNl
YXJjaChWTSYgdm0sIEpTR2wKIAogICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZVZpZXcgeyBzb3Vy
Y2UgfTsKICAgICAgICAgaWYgKHNvdXJjZVZpZXcuaXM4Qml0KCkgJiYgcmVwbGFjZW1lbnRzQXJl
OEJpdCkgewotICAgICAgICAgICAgc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gYnVmZmVyOwor
ICAgICAgICAgICAgc3RkOjpzcGFuPExDaGFyPiBidWZmZXI7CiAgICAgICAgICAgICBhdXRvIGlt
cGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLCBidWZm
ZXIpOwogICAgICAgICAgICAgaWYgKCFpbXBsKSBbW3VubGlrZWx5XV0gewogICAgICAgICAgICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuanMKaW5kZXgg
YWNmZmNiZDI3Y2Q2Li4yOWZhMGRhMzE2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmpzCkBAIC0xODcsNyArMTg3LDcgQEAgZnVu
Y3Rpb24gY3JlYXRlVGFibGVzKHByZWZpeCwgbWF4VmFsdWUsIGNhbm9uaWNhbEdyb3VwcykKICAg
ICB9CiAgICAgcHJpbnQoIn07Iik7CiAgICAgcHJpbnQoKTsKLSAgICAvLyBDcmVhdGUgY2Fub25p
Y2FsIHRhYmxlIGZvciBMYXRpbjFDaGFyYWN0ZXIgZG9tYWluCisgICAgLy8gQ3JlYXRlIGNhbm9u
aWNhbCB0YWJsZSBmb3IgTENoYXIgZG9tYWluCiAgICAgbGV0IGxpbmUgPSAiY29uc3Rpbml0IGNv
bnN0IHVpbnQxNl90IGNhbm9uaWNhbFRhYmxlTENoYXJbMjU2XSA9IHsiOwogICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgaWYgKCEoaSAlIDE2KSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggNzk0OGQ5
MjhlZTA4Li5kZWM3NGFhMjRiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckludGVycHJldGVyLmNwcApAQCAtMzIwNSwxMSArMzIwNSwxMSBAQCB1bnNpZ25lZCBpbnRl
cnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiBieXRlY29kZSwgU3RyaW5nVmlldyBpbnB1dCwgdW5zaWdu
ZWQgc3RhcnQsCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOwogICAgIGlmIChpbnB1dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIEludGVycHJldGVy
PExhdGluMUNoYXJhY3Rlcj4oYnl0ZWNvZGUsIG91dHB1dCwgaW5wdXQuc3BhbjgoKSwgc3RhcnQp
LmludGVycHJldCgpOworICAgICAgICByZXR1cm4gSW50ZXJwcmV0ZXI8TENoYXI+KGJ5dGVjb2Rl
LCBvdXRwdXQsIGlucHV0LnNwYW44KCksIHN0YXJ0KS5pbnRlcnByZXQoKTsKICAgICByZXR1cm4g
SW50ZXJwcmV0ZXI8Y2hhcjE2X3Q+KGJ5dGVjb2RlLCBvdXRwdXQsIGlucHV0LnNwYW4xNigpLCBz
dGFydCkuaW50ZXJwcmV0KCk7CiB9CiAKLS8vIFRoZXNlIHNob3VsZCBiZSB0aGUgc2FtZSBmb3Ig
Ym90aCBjaGFyMTZfdCAmIExhdGluMUNoYXJhY3Rlci4KKy8vIFRoZXNlIHNob3VsZCBiZSB0aGUg
c2FtZSBmb3IgYm90aCBjaGFyMTZfdCAmIExDaGFyLgogc3RhdGljX2Fzc2VydChzaXplb2YoQmFj
a1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIpID09IChZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFj
a0luZm9QYXR0ZXJuQ2hhcmFjdGVyICogc2l6ZW9mKHVpbnRwdHJfdCkpKTsKIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKEJhY2tUcmFja0luZm9DaGFyYWN0ZXJDbGFzcykgPT0gKFlhcnJTdGFja1NwYWNl
Rm9yQmFja1RyYWNrSW5mb0NoYXJhY3RlckNsYXNzICogc2l6ZW9mKHVpbnRwdHJfdCkpKTsKIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKEJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlKSA9PSAoWWFyclN0
YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZSAqIHNpemVvZih1aW50cHRyX3Qp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggZmU2MDZmMjI4NjgxLi44
YmMwMGM5ODRjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTI3Niw5
ICsyNzYsOSBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFlhcnJCb3llck1v
b3JlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWWFyckNvZGVCbG9jayk7CiAKIHB1
YmxpYzoKLSAgICB1c2luZyBZYXJySklUQ29kZTggPSBVR1BSUGFpciBTWVNWX0FCSSAoKikoY29u
c3QgTGF0aW4xQ2hhcmFjdGVyKiBpbnB1dCwgVUNQVVJlZ2lzdGVyIHN0YXJ0LCBVQ1BVUmVnaXN0
ZXIgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKikgWUFSUl9DQUxM
OworICAgIHVzaW5nIFlhcnJKSVRDb2RlOCA9IFVHUFJQYWlyIFNZU1ZfQUJJICgqKShjb25zdCBM
Q2hhciogaW5wdXQsIFVDUFVSZWdpc3RlciBzdGFydCwgVUNQVVJlZ2lzdGVyIGxlbmd0aCwgaW50
KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciopIFlBUlJfQ0FMTDsKICAgICB1c2luZyBZ
YXJySklUQ29kZTE2ID0gVUdQUlBhaXIgU1lTVl9BQkkgKCopKGNvbnN0IGNoYXIxNl90KiBpbnB1
dCwgVUNQVVJlZ2lzdGVyIHN0YXJ0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCBpbnQqIG91dHB1dCwg
TWF0Y2hpbmdDb250ZXh0SG9sZGVyKikgWUFSUl9DQUxMOwotICAgIHVzaW5nIFlhcnJKSVRDb2Rl
TWF0Y2hPbmx5OCA9IFVHUFJQYWlyIFNZU1ZfQUJJICgqKShjb25zdCBMYXRpbjFDaGFyYWN0ZXIq
IGlucHV0LCBVQ1BVUmVnaXN0ZXIgc3RhcnQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqLCBN
YXRjaGluZ0NvbnRleHRIb2xkZXIqKSBZQVJSX0NBTEw7CisgICAgdXNpbmcgWWFyckpJVENvZGVN
YXRjaE9ubHk4ID0gVUdQUlBhaXIgU1lTVl9BQkkgKCopKGNvbnN0IExDaGFyKiBpbnB1dCwgVUNQ
VVJlZ2lzdGVyIHN0YXJ0LCBVQ1BVUmVnaXN0ZXIgbGVuZ3RoLCB2b2lkKiwgTWF0Y2hpbmdDb250
ZXh0SG9sZGVyKikgWUFSUl9DQUxMOwogICAgIHVzaW5nIFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYg
PSBVR1BSUGFpciBTWVNWX0FCSSAoKikoY29uc3QgY2hhcjE2X3QqIGlucHV0LCBVQ1BVUmVnaXN0
ZXIgc3RhcnQsIFVDUFVSZWdpc3RlciBsZW5ndGgsIHZvaWQqLCBNYXRjaGluZ0NvbnRleHRIb2xk
ZXIqKSBZQVJSX0NBTEw7CiAKICAgICBZYXJyQ29kZUJsb2NrKFJlZ0V4cCogcmVnRXhwKQpAQCAt
MzMyLDcgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBJbmxpbmVTdGF0cyYgZ2V0OEJpdElubGluZVN0
YXRzKCkgeyByZXR1cm4gbV9tYXRjaE9ubHk4U3RhdHM7IH0KICAgICBJbmxpbmVTdGF0cyYgZ2V0
MTZCaXRJbmxpbmVTdGF0cygpIHsgcmV0dXJuICBtX21hdGNoT25seTE2U3RhdHM7IH0KIAotICAg
IE1hdGNoUmVzdWx0IGV4ZWN1dGUoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gaW5w
dXQsIHVuc2lnbmVkIHN0YXJ0LCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKiBt
YXRjaGluZ0NvbnRleHQpCisgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShzdGQ6OnNwYW48Y29uc3Qg
TENoYXI+IGlucHV0LCB1bnNpZ25lZCBzdGFydCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4
dEhvbGRlciogbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRD
b2RlKCkpOwogI2lmIENQVShBUk02NEUpCkBAIC0zNTIsNyArMzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGUxNiwg
WWFycjE2Qml0UHRyVGFnPihtX3JlZjE2LmNvZGUoKS50YWdnZWRQdHIoKSkoaW5wdXQuZGF0YSgp
LCBzdGFydCwgaW5wdXQuc2l6ZSgpLCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOwogICAgIH0K
IAotICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rl
cj4gaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5n
Q29udGV4dCkKKyAgICBNYXRjaFJlc3VsdCBleGVjdXRlKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4g
aW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZU1hdGNoT25seSgpKTsKICNp
ZiBDUFUoQVJNNjRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCmluZGV4
IGE2Yjc4YjRkNzRkZi4uODkxNWQ3MGNmZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclBhcnNlci5oCkBAIC0yMjk3LDcgKzIyOTcsNyBAQCB0ZW1wbGF0ZTxZYXJyU3ludGF4Q2hl
Y2thYmxlIERlbGVnYXRlPgogRXJyb3JDb2RlIHBhcnNlKERlbGVnYXRlJiBkZWxlZ2F0ZSwgY29u
c3QgU3RyaW5nVmlldyBwYXR0ZXJuLCBDb21waWxlTW9kZSBjb21waWxlTW9kZSwgdW5zaWduZWQg
YmFja1JlZmVyZW5jZUxpbWl0ID0gcXVhbnRpZnlJbmZpbml0ZSwgYm9vbCBpc05hbWVkRm9yd2Fy
ZFJlZmVyZW5jZUFsbG93ZWQgPSB0cnVlKQogewogICAgIGlmIChwYXR0ZXJuLmlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gUGFyc2VyPERlbGVnYXRlLCBMYXRpbjFDaGFyYWN0ZXI+KGRlbGVnYXRl
LCBwYXR0ZXJuLCBjb21waWxlTW9kZSwgYmFja1JlZmVyZW5jZUxpbWl0LCBpc05hbWVkRm9yd2Fy
ZFJlZmVyZW5jZUFsbG93ZWQpLnBhcnNlKCk7CisgICAgICAgIHJldHVybiBQYXJzZXI8RGVsZWdh
dGUsIExDaGFyPihkZWxlZ2F0ZSwgcGF0dGVybiwgY29tcGlsZU1vZGUsIGJhY2tSZWZlcmVuY2VM
aW1pdCwgaXNOYW1lZEZvcndhcmRSZWZlcmVuY2VBbGxvd2VkKS5wYXJzZSgpOwogICAgIHJldHVy
biBQYXJzZXI8RGVsZWdhdGUsIGNoYXIxNl90PihkZWxlZ2F0ZSwgcGF0dGVybiwgY29tcGlsZU1v
ZGUsIGJhY2tSZWZlcmVuY2VMaW1pdCwgaXNOYW1lZEZvcndhcmRSZWZlcmVuY2VBbGxvd2VkKS5w
YXJzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9oYXNo
ZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9oYXNoZXIucHkKaW5kZXggN2ZiYTUz
MzA1YzcwLi42NzM2OWI3NzFjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL2hhc2hlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9oYXNoZXIucHkK
QEAgLTcyLDcgKzcyLDcgQEAgZGVmIG1hc2tUb3A4Qml0c0FuZEF2b2lkWmVybyh2YWx1ZSk6CiAK
IGRlZiBzdXBlckZhc3RIYXNoKHN0cik6CiAgICAgIyBJbXBsZW1lbnRzIFBhdWwgSHNpZWgncyBT
dXBlckZhc3RIYXNoIC0gaHR0cDovL3d3dy5hemlsbGlvbm1vbmtleXMuY29tL3FlZC9oYXNoLmh0
bWwKLSAgICAjIExhdGluMUNoYXJhY3RlciBkYXRhIGlzIGludGVycHJldGVkIGFzIExhdGluLTEt
ZW5jb2RlZCAoemVybyBleHRlbmRlZCB0byAxNiBiaXRzKS4KKyAgICAjIExDaGFyIGRhdGEgaXMg
aW50ZXJwcmV0ZWQgYXMgTGF0aW4tMS1lbmNvZGVkICh6ZXJvIGV4dGVuZGVkIHRvIDE2IGJpdHMp
LgogICAgIHN0cmluZ0hhc2hpbmdTdGFydFZhbHVlID0gMHg5RTM3NzlCOQogCiAgICAgaGFzaCA9
IHN0cmluZ0hhc2hpbmdTdGFydFZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2YWQ0YTRhZTY2YTMuLjA0ZTQyMjQzNWQ4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDUsNyArNjQ1LDcgQEAKIAkJRERGMzA3
RDAyN0MwODZERjAwNkE1MjZGIC8qIFRleHRCcmVha0l0ZXJhdG9yQ0YuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0RCMTQ5MUU1NjY2MjYwMDZDNzND
MCAvKiBUZXh0QnJlYWtJdGVyYXRvckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRERGMzA3RDEyN0MwODZERjAwNkE1MjZGIC8qIFN0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NENEMyNkYxRTJDODJCOTAwOTI5NDcwIC8qIFN0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CURERjMwN0QyMjdDMDg2REYwMDZBNTI2RiAvKiBVVGV4dFByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QTFEMzA3QUI4MDBGNUZB
MTYgLyogVVRleHRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCURERjMwN0QzMjdDMDg2REYwMDZBNTI2RiAvKiBMYXRpbjFDaGFyYWN0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUM5
MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMYXRpbjFDaGFyYWN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlEREYzMDdEMzI3QzA4NkRGMDA2QTUy
NkYgLyogTENoYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURERjMwN0Q0MjdDMDg2REYwMDZBNTI2
RiAvKiBUZXh0QnJlYWtJdGVyYXRvcklDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNDREIxNEQxRTU2Njg5ODAwNkM3M0MwIC8qIFRleHRCcmVha0l0
ZXJhdG9ySUNVLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRERGMzA3RDUyN0MwODZERjAwNkE1MjZGIC8qIExpbmVFbmRpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQkNGQzU0MUY2MjFGM0YwMEM5
MjIyQyAvKiBMaW5lRW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRERGMzA3RDYyN0MwODZERjAwNkE1MjZGIC8qIE51bGxUZXh0QnJlYWtJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REQ0OTAxRUQyN0I0NzREOTAwRDdFNTBEIC8qIE51bGxUZXh0QnJlYWtJdGVyYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDQ5LDcgKzE0
NDksNyBAQAogCQk5Mzg1M0REMjI4NzU1QTY2MDBGRjRFMkIgLyogRXNjYXBlZEZvcm1zRm9ySlNP
Ti5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFc2NhcGVkRm9ybXNGb3JKU09O
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZB
MSAvKiBTdHJpbmdWaWV3Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTdHJpbmdWaWV3Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzOTM0QkQ0MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nVmlld0NGLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8qIExhdGluMUNoYXJh
Y3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXRpbjFDaGFyYWN0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5
IC8qIExDaGFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExDaGFyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjA3RUQ2MjZCODZCQjUwMEEwOUIzNCAvKiBT
dXNwZW5kYWJsZVdvcmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXNwZW5kYWJsZVdvcmtRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IwN0VENzI2Qjg3MTVCMDBBMDlC
MzQgLyogU3VzcGVuZGFibGVXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VzcGVu
ZGFibGVXb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I1QjQ0
RDIyMTNENjE2MDA0QjdBQTcgLyogSGV4TnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhleE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODUxLDcgKzI4NTEsNyBAQAogCQkJCTUwREUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBF
eHRlcm5hbFN0cmluZ0ltcGwuaCAqLywKIAkJCQk0NjEyMjk3MTJBQ0Y2QjMxMDBCQjFDQ0MgLyog
RmFzdENoYXJhY3RlckNvbXBhcmlzb24uaCAqLywKIAkJCQkyNjE0N0IwODE1RERDQ0RDMDBEREI5
MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovLAotCQkJCTkzQUM5MUE3MTg5NDJG
QzQwMDI0NDkzOSAvKiBMYXRpbjFDaGFyYWN0ZXIuaCAqLywKKwkJCQk5M0FDOTFBNzE4OTQyRkM0
MDAyNDQ5MzkgLyogTENoYXIuaCAqLywKIAkJCQlDMkJDRkM1MzFGNjIxRjNGMDBDOTIyMkMgLyog
TGluZUVuZGluZy5jcHAgKi8sCiAJCQkJQzJCQ0ZDNTQxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVF
bmRpbmcuaCAqLywKIAkJCQlCQzUyNjc2NjJDMjcyNkQ2MDBFNDIyREQgLyogTWFrZVN0cmluZy5o
ICovLApAQCAtMzU4MSw5ICszNTgxLDkgQEAKIAkJCQlERDNEQzg2RjI3QTRCRjhFMDA3RTVCNjEg
LyogSlNWYWx1ZU1hbGxvYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQzREM5OTcyN0E0QkY4RTAw
N0U1QjYxIC8qIEtleVZhbHVlUGFpci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQzREM4QkYyN0E0
QkY4RTAwN0U1QjYxIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQlEREYzMDdEMzI3
QzA4NkRGMDA2QTUyNkYgLyogTGF0aW4xQ2hhcmFjdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MzJBQjUwMTJCNUNFMzVEMDBCOUZBQUUgLyogTGF6eVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTMyQUI1MDIyQjVDRTM1RDAwQjlGQUFFIC8qIExhenlVbmlxdWVSZWYuaCBpbiBIZWFkZXJzICov
LAorCQkJCURERjMwN0QzMjdDMDg2REYwMDZBNTI2RiAvKiBMQ2hhci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJREQzREM4ODkyN0E0QkY4RTAwN0U1QjYxIC8qIExFQkRlY29kZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTYzMTE1OTI2Mjg5ODlBNTUwMDZBOUExMiAvKiBMaWJyYXJ5UGF0aERpYWdub3N0
aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzhCNDI3QTRCRjhFMDA3RTVCNjEgLyogTGlr
ZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oIGIvU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5o
CmluZGV4IDgyOGUxN2FiMGJlYi4uYjExMzcwMzdiNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9BU0NJSUNUeXBlLmgKKysrIGIvU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oCkBAIC0y
OCw3ICsyOCw3IEBACiAjaW5jbHVkZSA8Y29uY2VwdHM+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9MYXRpbjFD
aGFyYWN0ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgogCiAvLyBUaGUgYmVoYXZp
b3Igb2YgbWFueSBvZiB0aGUgZnVuY3Rpb25zIGluIHRoZSA8Y3R5cGUuaD4gaGVhZGVyIGlzIGRl
cGVuZGVudAogLy8gb24gdGhlIGN1cnJlbnQgbG9jYWxlLiBCdXQgaW4gdGhlIFdlYktpdCBwcm9q
ZWN0LCBhbGwgdXNlcyBvZiB0aG9zZSBmdW5jdGlvbnMKQEAgLTE5Niw3ICsxOTYsNyBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBjaGFyIHRvQVNDSUlMb3dlcihjaGFyIGNoYXJhY3RlcikKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y2hhcj4oYXNjaWlDYXNlRm9sZFRhYmxlW3N0YXRpY19jYXN0PHVpbnQ4
X3Q+KGNoYXJhY3RlcildKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgTGF0aW4xQ2hhcmFjdGVy
IHRvQVNDSUlMb3dlcihMYXRpbjFDaGFyYWN0ZXIgY2hhcmFjdGVyKQordGVtcGxhdGU8PiBpbmxp
bmUgTENoYXIgdG9BU0NJSUxvd2VyKExDaGFyIGNoYXJhY3RlcikKIHsKICAgICByZXR1cm4gYXNj
aWlDYXNlRm9sZFRhYmxlW2NoYXJhY3Rlcl07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGYx
NjllOTE3N2EyNS4uNGFhYWQ5ZDFiMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDY3LDcg
KzQ2Nyw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICB0ZXh0L0V4dGVybmFsU3RyaW5n
SW1wbC5oCiAgICAgdGV4dC9GYXN0Q2hhcmFjdGVyQ29tcGFyaXNvbi5oCiAgICAgdGV4dC9JbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKLSAgICB0ZXh0L0xhdGluMUNoYXJhY3Rlci5oCisgICAg
dGV4dC9MQ2hhci5oCiAgICAgdGV4dC9MaW5lRW5kaW5nLmgKICAgICB0ZXh0L01ha2VTdHJpbmcu
aAogICAgIHRleHQvTnVsbFRleHRCcmVha0l0ZXJhdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAppbmRleCBk
NDU1MWM3OGVmMzUuLmU1ZjVlNGJmMzY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGF0
ZU1hdGguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApAQCAtMTMzLDggKzEz
Myw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFR3b0RpZ2l0TnVtYmVyKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGludCBudW1iZXIpCiB7CiAgICAgQVNTRVJUKG51bWJlciA+PSAwKTsKICAgICBBU1NF
UlQobnVtYmVyIDwgMTAwKTsKLSAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxMYXRpbjFD
aGFyYWN0ZXI+KCcwJyArIG51bWJlciAvIDEwKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoc3RhdGlj
X2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPignMCcgKyBudW1iZXIgJSAxMCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPignMCcgKyBudW1iZXIgLyAxMCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPignMCcgKyBudW1iZXIgJSAxMCkpOwogfQogCiBz
dGF0aWMgaW5saW5lIGRvdWJsZSBtc1RvTWlsbGlzZWNvbmRzKGRvdWJsZSBtcykKQEAgLTM4Nyw3
ICszODcsNyBAQCBzdGF0aWMgY29uc3RleHByIHN0cnVjdCBLbm93blpvbmUgewogICAgIHsgInBk
dCJfcywgLTQyMCB9CiB9OwogCi1pbmxpbmUgc3RhdGljIHZvaWQgc2tpcFNwYWNlc0FuZENvbW1l
bnRzKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+JiBzKQoraW5saW5lIHN0YXRpYyB2
b2lkIHNraXBTcGFjZXNBbmRDb21tZW50cyhzdGQ6OnNwYW48Y29uc3QgTENoYXI+JiBzKQogewog
ICAgIGludCBuZXN0aW5nID0gMDsKICAgICB3aGlsZSAoIXMuZW1wdHkoKSkgewpAQCAtNDA1LDEy
ICs0MDUsMTIgQEAgaW5saW5lIHN0YXRpYyB2b2lkIHNraXBTcGFjZXNBbmRDb21tZW50cyhzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiYgcykKIH0KIAogLy8gcmV0dXJucyAwLTExIChK
YW4tRGVjKTsgLTEgb24gZmFpbHVyZQotc3RhdGljIGludCBmaW5kTW9udGgoc3RkOjpzcGFuPGNv
bnN0IExhdGluMUNoYXJhY3Rlcj4gbW9udGhTdHIpCitzdGF0aWMgaW50IGZpbmRNb250aChzdGQ6
OnNwYW48Y29uc3QgTENoYXI+IG1vbnRoU3RyKQogewogICAgIGlmIChtb250aFN0ci5zaXplKCkg
PCAzKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBzdGQ6OmFycmF5PExhdGluMUNoYXJhY3Rl
ciwgMz4gbmVlZGxlOworICAgIHN0ZDo6YXJyYXk8TENoYXIsIDM+IG5lZWRsZTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMzsgKytpKQogICAgICAgICBuZWVkbGVbaV0gPSB0b0FTQ0lJ
TG93ZXIobW9udGhTdHJbaV0pOwogICAgIGNvbnN0ZXhwciBhdXRvIGhheXN0YWNrID0gImphbmZl
Ym1hcmFwcm1heWp1bmp1bGF1Z3NlcG9jdG5vdmRlYyJfc3BhbjsKQEAgLTQyMSw3ICs0MjEsNyBA
QCBzdGF0aWMgaW50IGZpbmRNb250aChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBt
b250aFN0cikKICAgICByZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlSW50KHN0ZDo6
c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+JiBzdHJpbmcsIGludCBiYXNlLCBpbnQqIHJlc3Vs
dCkKK3N0YXRpYyBib29sIHBhcnNlSW50KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4mIHN0cmluZywg
aW50IGJhc2UsIGludCogcmVzdWx0KQogewogICAgIGNoYXIqIHN0b3BQb3NpdGlvbjsKIFdURl9B
TExPV19VTlNBRkVfQlVGRkVSX1VTQUdFX0JFR0lOCkBAIC00MzUsNyArNDM1LDcgQEAgV1RGX0FM
TE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfRU5ECiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIHBhcnNlTG9uZyhzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiYgc3RyaW5n
LCBpbnQgYmFzZSwgbG9uZyogcmVzdWx0KQorc3RhdGljIGJvb2wgcGFyc2VMb25nKHN0ZDo6c3Bh
bjxjb25zdCBMQ2hhcj4mIHN0cmluZywgaW50IGJhc2UsIGxvbmcqIHJlc3VsdCkKIHsKICAgICBj
aGFyKiBzdG9wUG9zaXRpb247CiBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgpA
QCAtNDUxLDcgKzQ1MSw3IEBAIFdURl9BTExPV19VTlNBRkVfQlVGRkVSX1VTQUdFX0VORAogLy8g
UGFyc2VzIGEgZGF0ZSB3aXRoIHRoZSBmb3JtYXQgWVlZWVstTU1bLUREXV0uCiAvLyBZZWFyIHBh
cnNpbmcgaXMgbGVuaWVudCwgYWxsb3dzIGFueSBudW1iZXIgb2YgZGlnaXRzLCBhbmQgKy8tLgog
Ly8gUmV0dXJucyAwIGlmIGEgcGFyc2UgZXJyb3Igb2NjdXJzLCBlbHNlIHJldHVybnMgdGhlIGVu
ZCBvZiB0aGUgcGFyc2VkIHBvcnRpb24gb2YgdGhlIHN0cmluZy4KLXN0YXRpYyBib29sIHBhcnNl
RVM1RGF0ZVBvcnRpb24oc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4mIGN1cnJlbnRQ
b3NpdGlvbiwgaW50JiB5ZWFyLCBsb25nJiBtb250aCwgbG9uZyYgZGF5LCBib29sJiBpc1Npbmds
ZURpZ2l0KQorc3RhdGljIGJvb2wgcGFyc2VFUzVEYXRlUG9ydGlvbihzdGQ6OnNwYW48Y29uc3Qg
TENoYXI+JiBjdXJyZW50UG9zaXRpb24sIGludCYgeWVhciwgbG9uZyYgbW9udGgsIGxvbmcmIGRh
eSwgYm9vbCYgaXNTaW5nbGVEaWdpdCkKIHsKICAgICAvLyBUaGlzIGlzIGEgYml0IG1vcmUgbGVu
aWVudCBvbiB0aGUgeWVhciBzdHJpbmcgdGhhbiBFUzUgc3BlY2lmaWVzOgogICAgIC8vIGluc3Rl
YWQgb2YgcmVzdHJpY3RpbmcgdG8gNCBkaWdpdHMgKG9yIDYgZGlnaXRzIHdpdGggbWFuZGF0b3J5
ICsvLSksCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VFUzVEYXRlUG9ydGlv
bihzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiYgY3VycmVudFBvc2l0aW8KIC8vIFBh
cnNlcyBhIHRpbWUgd2l0aCB0aGUgZm9ybWF0IEhIOm1tWzpzc1suc3NzXV1bWnwoK3wtKSgwMDow
MHwwMDAwfDAwKV0uCiAvLyBGcmFjdGlvbmFsIHNlY29uZHMgcGFyc2luZyBpcyBsZW5pZW50LCBh
bGxvd3MgYW55IG51bWJlciBvZiBkaWdpdHMuCiAvLyBSZXR1cm5zIDAgaWYgYSBwYXJzZSBlcnJv
ciBvY2N1cnMsIGVsc2UgcmV0dXJucyB0aGUgZW5kIG9mIHRoZSBwYXJzZWQgcG9ydGlvbiBvZiB0
aGUgc3RyaW5nLgotc3RhdGljIGJvb2wgcGFyc2VFUzVUaW1lUG9ydGlvbihzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiYgY3VycmVudFBvc2l0aW9uLCBsb25nJiBob3VycywgbG9uZyYg
bWludXRlcywgbG9uZyYgc2Vjb25kcywgZG91YmxlJiBtaWxsaXNlY29uZHMsIGJvb2wmIGlzTG9j
YWxUaW1lLCBsb25nJiB0aW1lWm9uZVNlY29uZHMsIGJvb2wgaGFzVFN5bWJvbCkKK3N0YXRpYyBi
b29sIHBhcnNlRVM1VGltZVBvcnRpb24oc3RkOjpzcGFuPGNvbnN0IExDaGFyPiYgY3VycmVudFBv
c2l0aW9uLCBsb25nJiBob3VycywgbG9uZyYgbWludXRlcywgbG9uZyYgc2Vjb25kcywgZG91Ymxl
JiBtaWxsaXNlY29uZHMsIGJvb2wmIGlzTG9jYWxUaW1lLCBsb25nJiB0aW1lWm9uZVNlY29uZHMs
IGJvb2wgaGFzVFN5bWJvbCkKIHsKICAgICBpc0xvY2FsVGltZSA9IGZhbHNlOwogCkBAIC02MTMs
NyArNjEzLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VFUzVUaW1lUG9ydGlvbihzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiYgY3VycmVudFBvc2l0aW8KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotZG91YmxlIHBhcnNlRVM1RGF0ZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBk
YXRlU3RyaW5nLCBib29sJiBpc0xvY2FsVGltZSkKK2RvdWJsZSBwYXJzZUVTNURhdGUoc3RkOjpz
cGFuPGNvbnN0IExDaGFyPiBkYXRlU3RyaW5nLCBib29sJiBpc0xvY2FsVGltZSkKIHsKICAgICBp
c0xvY2FsVGltZSA9IGZhbHNlOwogCkBAIC02ODMsNyArNjgzLDcgQEAgZG91YmxlIHBhcnNlRVM1
RGF0ZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBkYXRlU3RyaW5nLCBib29sJiBp
c0xvY2FsVGkKIH0KIAogLy8gT2RkIGNhc2Ugd2hlcmUgJ2V4ZWMnIGlzIGFsbG93ZWQgdG8gYmUg
MCwgdG8gYWNjb21vZGF0ZSBhIGNhbGxlciBpbiBXZWJDb3JlLgotZG91YmxlIHBhcnNlRGF0ZShz
dGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBkYXRlU3RyaW5nLCBib29sJiBpc0xvY2Fs
VGltZSkKK2RvdWJsZSBwYXJzZURhdGUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBkYXRlU3RyaW5n
LCBib29sJiBpc0xvY2FsVGltZSkKIHsKICAgICBpc0xvY2FsVGltZSA9IHRydWU7CiAgICAgaW50
IG9mZnNldCA9IDA7CkBAIC05NzQsNyArOTc0LDcgQEAgZG91YmxlIHBhcnNlRGF0ZShzdGQ6OnNw
YW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBkYXRlU3RyaW5nLCBib29sJiBpc0xvY2FsVGltZSkK
ICAgICByZXR1cm4geW1kaG1zVG9NaWxsaXNlY29uZHMoeWVhci52YWx1ZSgpLCBtb250aCArIDEs
IGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIDApIC0gb2Zmc2V0ICogKHNlY29uZHNQZXJNaW51
dGUgKiBtc1BlclNlY29uZCk7CiB9CiAKLWRvdWJsZSBwYXJzZURhdGUoc3RkOjpzcGFuPGNvbnN0
IExhdGluMUNoYXJhY3Rlcj4gZGF0ZVN0cmluZykKK2RvdWJsZSBwYXJzZURhdGUoc3RkOjpzcGFu
PGNvbnN0IExDaGFyPiBkYXRlU3RyaW5nKQogewogICAgIGJvb2wgaXNMb2NhbFRpbWU7CiAgICAg
ZG91YmxlIHZhbHVlID0gcGFyc2VEYXRlKGRhdGVTdHJpbmcsIGlzTG9jYWxUaW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0
aC5oCmluZGV4IDUxMDI2YzFhMmU4Ni4uYmRkNDk3NTEwM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTc3
LDkgKzc3LDkgQEAgdm9pZCBpbml0aWFsaXplRGF0ZXMoKTsKIGludCBlcXVpdmFsZW50WWVhckZv
ckRTVChpbnQgeWVhcik7CiAKIC8vIE5vdCByZWFsbHkgbWF0aCByZWxhdGVkLCBidXQgdGhpcyBp
cyBjdXJyZW50bHkgdGhlIG9ubHkgc2hhcmVkIHBsYWNlIHRvIHB1dCB0aGVzZS4KLVdURl9FWFBP
UlRfUFJJVkFURSBkb3VibGUgcGFyc2VFUzVEYXRlKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFy
YWN0ZXI+IGRhdGVTdHJpbmcsIGJvb2wmIGlzTG9jYWxUaW1lKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBkb3VibGUgcGFyc2VEYXRlKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGRhdGVT
dHJpbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZURhdGUoc3RkOjpzcGFuPGNv
bnN0IExhdGluMUNoYXJhY3Rlcj4gZGF0ZVN0cmluZywgYm9vbCYgaXNMb2NhbFRpbWUpOworV1RG
X0VYUE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZUVTNURhdGUoc3RkOjpzcGFuPGNvbnN0IExDaGFy
PiBkYXRlU3RyaW5nLCBib29sJiBpc0xvY2FsVGltZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIHBhcnNlRGF0ZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGRhdGVTdHJpbmcpOworV1RGX0VY
UE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZURhdGUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBkYXRl
U3RyaW5nLCBib29sJiBpc0xvY2FsVGltZSk7CiAvLyBkYXlPZldlZWs6IFswLCA2XSAwIGJlaW5n
IE1vbmRheSwgZGF5OiBbMSwgMzFdLCBtb250aDogWzAsIDExXSwgeWVhcjogZXg6IDIwMTEsIGhv
dXJzOiBbMCwgMjNdLCBtaW51dGVzOiBbMCwgNTldLCBzZWNvbmRzOiBbMCwgNTldLCB1dGNPZmZz
ZXQ6IFstNzIwLDcyMF0uIAogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBtYWtlUkZDMjgyMkRh
dGVTdHJpbmcodW5zaWduZWQgZGF5T2ZXZWVrLCB1bnNpZ25lZCBkYXksIHVuc2lnbmVkIG1vbnRo
LCB1bnNpZ25lZCB5ZWFyLCB1bnNpZ25lZCBob3VycywgdW5zaWduZWQgbWludXRlcywgdW5zaWdu
ZWQgc2Vjb25kcywgaW50IHV0Y09mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RGbG9hdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0RmxvYXQuY3BwCmluZGV4IDA5MTIx
NGJlMmE2Ni4uMzI3NjFmYTJkMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Rmxv
YXQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RGbG9hdC5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWRvdWJsZSBwYXJzZURvdWJsZShzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiBzdHJpbmcsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKQorZG91Ymxl
IHBhcnNlRG91YmxlKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3RyaW5nLCBzaXplX3QmIHBhcnNl
ZExlbmd0aCkKIHsKICAgICBkb3VibGUgZG91YmxlVmFsdWUgPSAwOwogICAgIGF1dG8gc3RyaW5n
RGF0YSA9IGJ5dGVDYXN0PGNoYXI+KHN0cmluZyk7CkBAIC00OCw3ICs0OCw3IEBAIGRvdWJsZSBw
YXJzZURvdWJsZShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IHN0cmluZywgc2l6ZV90JiBwYXJz
ZWRMZW5ndGgpCiAgICAgcmV0dXJuIGRvdWJsZVZhbHVlOwogfQogCi1kb3VibGUgcGFyc2VIZXhE
b3VibGUoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gc3RyaW5nLCBzaXplX3QmIHBh
cnNlZExlbmd0aCkKK2RvdWJsZSBwYXJzZUhleERvdWJsZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+
IHN0cmluZywgc2l6ZV90JiBwYXJzZWRMZW5ndGgpCiB7CiAgICAgZG91YmxlIGRvdWJsZVZhbHVl
ID0gMDsKICAgICBhdXRvIHN0cmluZ0RhdGEgPSBieXRlQ2FzdDxjaGFyPihzdHJpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEZsb2F0LmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
RmxvYXQuaAppbmRleCAwNjFkNDY0N2I0NDguLmFmMzVmNDQ4YTZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRmFzdEZsb2F0LmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEZsb2F0LmgK
QEAgLTMxLDEwICszMSwxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotV1RGX0VYUE9SVF9QUklW
QVRFIGRvdWJsZSBwYXJzZURvdWJsZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBz
dHJpbmcsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUg
cGFyc2VEb3VibGUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBzdHJpbmcsIHNpemVfdCYgcGFyc2Vk
TGVuZ3RoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgcGFyc2VEb3VibGUoc3RkOjpzcGFu
PGNvbnN0IGNoYXIxNl90PiBzdHJpbmcsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKIAotV1RGX0VY
UE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZUhleERvdWJsZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4x
Q2hhcmFjdGVyPiBzdHJpbmcsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBkb3VibGUgcGFyc2VIZXhEb3VibGUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBzdHJpbmcs
IHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgcGFyc2VI
ZXhEb3VibGUoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBzdHJpbmcsIHNpemVfdCYgcGFyc2Vk
TGVuZ3RoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9IZXhOdW1iZXIuY3BwIGIvU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmNwcAppbmRleCA1NjBi
MTJlMmRmYjQuLmQzODdhZjEzM2E0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGV4TnVt
YmVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIuY3BwCkBAIC0zMSwxNCArMzEs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogbmFtZXNwYWNlIEludGVybmFsIHsKIAotc3RhdGljIGNv
bnN0IHN0ZDo6YXJyYXk8TGF0aW4xQ2hhcmFjdGVyLCAxNj4mIGhleERpZ2l0c0Zvck1vZGUoSGV4
Q29udmVyc2lvbk1vZGUgbW9kZSkKLXsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8
TGF0aW4xQ2hhcmFjdGVyLCAxNj4gbG93ZXJjYXNlSGV4RGlnaXRzIHsgJzAnLCAnMScsICcyJywg
JzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnYScsICdiJywgJ2MnLCAnZCcsICdl
JywgJ2YnIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PExhdGluMUNoYXJhY3Rl
ciwgMTY+IHVwcGVyY2FzZUhleERpZ2l0cyB7ICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScs
ICc2JywgJzcnLCAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJyB9OwotICAg
IHJldHVybiBtb2RlID09IExvd2VyY2FzZSA/IGxvd2VyY2FzZUhleERpZ2l0cyA6IHVwcGVyY2Fz
ZUhleERpZ2l0czsKLX0KLQotc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gYXBwZW5kSGV4KHN0
ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlciwgc3RkOjp1aW50bWF4X3QgbnVtYmVyLCB1
bnNpZ25lZCBtaW5pbXVtRGlnaXRzLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlKQorc3RkOjpzcGFu
PExDaGFyPiBhcHBlbmRIZXgoc3RkOjpzcGFuPExDaGFyPiBidWZmZXIsIHN0ZDo6dWludG1heF90
IG51bWJlciwgdW5zaWduZWQgbWluaW11bURpZ2l0cywgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSkK
IHsKICAgICBzaXplX3Qgc3RhcnRJbmRleCA9IGJ1ZmZlci5zaXplKCk7CiAgICAgYXV0byYgaGV4
RGlnaXRzID0gaGV4RGlnaXRzRm9yTW9kZShtb2RlKTsKQEAgLTYxLDcgKzU0LDcgQEAgdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEhleE51bWJlckJ1ZmZlciBidWZmZXIpCiAg
ICAgb3V0LnByaW50KFN0cmluZ1ZpZXcoYnVmZmVyLnNwYW4oKSkpOwogfQogCi1zdGF0aWMgdm9p
ZCB0b0hleEludGVybmFsKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB2YWx1ZXMsIHN0ZDo6c3Bh
bjxMYXRpbjFDaGFyYWN0ZXI+IGhleGFkZWNpbWFsT3V0cHV0KQorc3RhdGljIHZvaWQgdG9IZXhJ
bnRlcm5hbChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdmFsdWVzLCBzdGQ6OnNwYW48TENoYXI+
IGhleGFkZWNpbWFsT3V0cHV0KQogewogICAgIGZvciAoYXV0byBbaSwgZGlnZXN0VmFsdWVdIDog
aW5kZXhlZFJhbmdlKHZhbHVlcykpIHsKICAgICAgICAgaGV4YWRlY2ltYWxPdXRwdXRbaSAqIDJd
ID0gdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQoZGlnZXN0VmFsdWUpOwpAQCAtNzMsMTMgKzY2
LDEzIEBAIENTdHJpbmcgdG9IZXhDU3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB2YWx1
ZXMpCiB7CiAgICAgc3RkOjpzcGFuPGNoYXI+IGJ1ZmZlcjsKICAgICBhdXRvIHJlc3VsdCA9IENT
dHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoQ2hlY2tlZFNpemUodmFsdWVzLnNpemUoKSkgKiAyVSwg
YnVmZmVyKTsKLSAgICB0b0hleEludGVybmFsKHZhbHVlcywgYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFj
dGVyPihidWZmZXIpKTsKKyAgICB0b0hleEludGVybmFsKHZhbHVlcywgYnl0ZUNhc3Q8TENoYXI+
KGJ1ZmZlcikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyB0b0hleFN0cmluZyhz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4gdmFsdWVzKQogewotICAgIHN0ZDo6c3BhbjxMYXRpbjFD
aGFyYWN0ZXI+IGJ1ZmZlcjsKKyAgICBzdGQ6OnNwYW48TENoYXI+IGJ1ZmZlcjsKICAgICBhdXRv
IHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChDaGVja2VkU2l6ZSh2YWx1ZXMu
c2l6ZSgpKSAqIDJVLCBidWZmZXIpOwogICAgIHRvSGV4SW50ZXJuYWwodmFsdWVzLCBidWZmZXIp
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IZXhOdW1i
ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCmluZGV4IDA1YWI3MmM1N2Y2MS4uNzcz
NTVhNWJlZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIuaApAQCAtMzAsMTkgKzMwLDE5IEBAIGVudW0gSGV4Q29u
dmVyc2lvbk1vZGUgeyBMb3dlcmNhc2UsIFVwcGVyY2FzZSB9OwogCiBuYW1lc3BhY2UgSW50ZXJu
YWwgewogCi1XVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gYXBw
ZW5kSGV4KHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlciwgc3RkOjp1aW50bWF4X3Qg
bnVtYmVyLCB1bnNpZ25lZCBtaW5pbXVtRGlnaXRzLCBIZXhDb252ZXJzaW9uTW9kZSk7Ci0KLXRl
bXBsYXRlPHNpemVfdCBhcnJheVNpemUsIHR5cGVuYW1lIE51bWJlclR5cGU+Ci1pbmxpbmUgc3Rk
OjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gYXBwZW5kSGV4KHN0ZDo6YXJyYXk8TGF0aW4xQ2hhcmFj
dGVyLCBhcnJheVNpemU+JiBidWZmZXIsIE51bWJlclR5cGUgbnVtYmVyLCB1bnNpZ25lZCBtaW5p
bXVtRGlnaXRzLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlKQoraW5saW5lIGNvbnN0IHN0ZDo6YXJy
YXk8TENoYXIsIDE2PiYgaGV4RGlnaXRzRm9yTW9kZShIZXhDb252ZXJzaW9uTW9kZSBtb2RlKQog
ewotICAgIHJldHVybiBhcHBlbmRIZXgoc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4geyBidWZm
ZXIgfSwgdW5zaWduZWRDYXN0KG51bWJlciksIG1pbmltdW1EaWdpdHMsIG1vZGUpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxMQ2hhciwgMTY+IGxvd2VyY2FzZUhleERpZ2l0cyB7
ICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ2EnLCAn
YicsICdjJywgJ2QnLCAnZScsICdmJyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh
eTxMQ2hhciwgMTY+IHVwcGVyY2FzZUhleERpZ2l0cyB7ICcwJywgJzEnLCAnMicsICczJywgJzQn
LCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJyB9
OworICAgIHJldHVybiBtb2RlID09IExvd2VyY2FzZSA/IGxvd2VyY2FzZUhleERpZ2l0cyA6IHVw
cGVyY2FzZUhleERpZ2l0czsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGFycmF5U2l6ZT4KLWlubGlu
ZSBzdGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBhcHBlbmRIZXgoc3RkOjphcnJheTxMYXRpbjFD
aGFyYWN0ZXIsIGFycmF5U2l6ZT4mIGJ1ZmZlciwgTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3Rlciwg
dW5zaWduZWQgbWluaW11bURpZ2l0cywgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSkKK1dURl9FWFBP
UlRfUFJJVkFURSBzdGQ6OnNwYW48TENoYXI+IGFwcGVuZEhleChzdGQ6OnNwYW48TENoYXI+IGJ1
ZmZlciwgc3RkOjp1aW50bWF4X3QgbnVtYmVyLCB1bnNpZ25lZCBtaW5pbXVtRGlnaXRzLCBIZXhD
b252ZXJzaW9uTW9kZSk7CisKK3RlbXBsYXRlPHNpemVfdCBhcnJheVNpemUsIHR5cGVuYW1lIE51
bWJlclR5cGU+CitpbmxpbmUgc3RkOjpzcGFuPExDaGFyPiBhcHBlbmRIZXgoc3RkOjphcnJheTxM
Q2hhciwgYXJyYXlTaXplPiYgYnVmZmVyLCBOdW1iZXJUeXBlIG51bWJlciwgdW5zaWduZWQgbWlu
aW11bURpZ2l0cywgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSkKIHsKLSAgICB1aW50OF90IG51bWJl
ciA9IGNoYXJhY3RlcjsKLSAgICByZXR1cm4gYXBwZW5kSGV4KGJ1ZmZlciwgbnVtYmVyLCBtaW5p
bXVtRGlnaXRzLCBtb2RlKTsKKyAgICByZXR1cm4gYXBwZW5kSGV4KHN0ZDo6c3BhbjxMQ2hhcj4g
eyBidWZmZXIgfSwgdW5zaWduZWRDYXN0KG51bWJlciksIG1pbmltdW1EaWdpdHMsIG1vZGUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbApAQCAtNTAsMTAgKzUwLDEwIEBAIGlubGluZSBz
dGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBhcHBlbmRIZXgoc3RkOjphcnJheTxMYXRpbjFDaGFy
YWN0ZXIsIGFycmF5U2l6CiBzdHJ1Y3QgSGV4TnVtYmVyQnVmZmVyIHsKICAgICBXVEZfREVQUkVD
QVRFRF9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRChIZXhOdW1iZXJCdWZmZXIpOwogCi0gICAg
c3RkOjphcnJheTxMYXRpbjFDaGFyYWN0ZXIsIDE2PiBidWZmZXI7CisgICAgc3RkOjphcnJheTxM
Q2hhciwgMTY+IGJ1ZmZlcjsKICAgICB1bnNpZ25lZCBsZW5ndGg7CiAKLSAgICBzdGQ6OnNwYW48
Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzcGFuKCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1
cm4gc3RkOjpzcGFuIHsgYnVmZmVyIH0ubGFzdChsZW5ndGgpOyB9CisgICAgc3RkOjpzcGFuPGNv
bnN0IExDaGFyPiBzcGFuKCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gc3RkOjpzcGFu
IHsgYnVmZmVyIH0ubGFzdChsZW5ndGgpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBOdW1i
ZXJUeXBlPiBIZXhOdW1iZXJCdWZmZXIgaGV4KE51bWJlclR5cGUgbnVtYmVyLCB1bnNpZ25lZCBt
aW5pbXVtRGlnaXRzID0gMCwgSGV4Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2FzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9JbnQx
MjguY3BwCmluZGV4IGE1YzQzMjgzOTY2NC4uMmY3OGRhMTE5NTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9JbnQxMjguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5jcHAKQEAg
LTMwMiw3ICszMDIsNyBAQCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBv
cywgSW50MTI4SW1wbCB2KSB7CiAKIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBVSW50MTI4IHZhbHVlKQogewotICAgIGF1dG8gdmVjdG9yID0gbnVtYmVyVG9TdHJpbmdVbnNp
Z25lZDxWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCA1MD4+KHZhbHVlKTsKKyAgICBhdXRvIHZlY3Rv
ciA9IG51bWJlclRvU3RyaW5nVW5zaWduZWQ8VmVjdG9yPExDaGFyLCA1MD4+KHZhbHVlKTsKICAg
ICB2ZWN0b3IuYXBwZW5kKCdcMCcpOwogV1RGX0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfQkVH
SU4KICAgICBvdXQucHJpbnRmKCIlcyIsIHN0ZDo6Yml0X2Nhc3Q8Y29uc3QgY2hhcio+KHZlY3Rv
ci5zcGFuKCkuZGF0YSgpKSk7CkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEludDEyOCB2YWx1ZSkKICAgICAgICAgcG9zaXRpdmUgPSBzdGF0
aWNfY2FzdDxVSW50MTI4PigweDgwMDAnMDAwMCcwMDAwJzAwMDBVTEwpIDw8IDY0OwogICAgIGVs
c2UKICAgICAgICAgcG9zaXRpdmUgPSAtdmFsdWU7Ci0gICAgYXV0byB2ZWN0b3IgPSBudW1iZXJU
b1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXIsIDUwPj4ocG9zaXRpdmUpOwor
ICAgIGF1dG8gdmVjdG9yID0gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDUw
Pj4ocG9zaXRpdmUpOwogICAgIHZlY3Rvci5hcHBlbmQoJ1wwJyk7CiBXVEZfQUxMT1dfVU5TQUZF
X0JVRkZFUl9VU0FHRV9CRUdJTgogICAgIG91dC5wcmludGYoIi0lcyIsIHN0ZDo6Yml0X2Nhc3Q8
Y29uc3QgY2hhcio+KHZlY3Rvci5zcGFuKCkuZGF0YSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCmlu
ZGV4IGIyZGRmNDcxMTA3Yy4uZmFkYjM5NmQ3NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9KU09OVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcApAQCAt
MjEyLDggKzIxMiw3IEBAIFRva2VuIHBhcnNlVG9rZW4oc3RkOjpzcGFuPGNvbnN0IENvZGVVbml0
PiBkYXRhLCBzdGQ6OnNwYW48Y29uc3QgQ29kZVVuaXQ+JiB0b2tlCiAKICAgICB0b2tlblN0YXJ0
ID0gZGF0YTsKIAotICAgIGNoYXIxNl90IGZpcnN0Q2hhcmFjdGVyID0gZGF0YS5mcm9udCgpOwot
ICAgIHN3aXRjaCAoZmlyc3RDaGFyYWN0ZXIpIHsKKyAgICBzd2l0Y2ggKGRhdGEuZnJvbnQoKSkg
ewogICAgIGNhc2UgJ24nOgogICAgICAgICBpZiAocGFyc2VDb25zdFRva2VuKGRhdGEsIHRva2Vu
RW5kLCBudWxsVG9rZW4pKQogICAgICAgICAgICAgcmV0dXJuIFRva2VuOjpOdWxsOwpAQCAtNTMy
LDcgKzUzMSw3IEBAIFJlZlB0cjxWYWx1ZT4gVmFsdWU6OnBhcnNlSlNPTihTdHJpbmdWaWV3IGpz
b24pCiAgICAgUmVmUHRyPFZhbHVlPiByZXN1bHQ7CiAgICAgaWYgKGpzb24uaXM4Qml0KCkpIHsK
ICAgICAgICAgYXV0byBkYXRhID0ganNvbi5zcGFuOCgpOwotICAgICAgICBzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiB0b2tlbkVuZDsKKyAgICAgICAgc3RkOjpzcGFuPGNvbnN0IExD
aGFyPiB0b2tlbkVuZDsKICAgICAgICAgcmVzdWx0ID0gYnVpbGRWYWx1ZShkYXRhLCB0b2tlbkVu
ZCwgMCk7CiAgICAgICAgIGlmIChjb250YWluc05vblNwYWNlKHRva2VuRW5kKSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUHJpbnRTdHJl
YW0uaCBiL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKaW5kZXggNWJhZTk3YzVjNGI1Li5i
NDdmOTQ5ZTJhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKKysr
IGIvU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaApAQCAtMTAzLDcgKzEwMyw2IEBAIHByb3Rl
Y3RlZDoKIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBjb25zdCBjaGFyKik7Ci0KIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IEV4dGVudD4KIGlu
bGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgc3RkOjpzcGFuPGNvbnN0
IGNoYXIsIEV4dGVudD4gc3RyaW5nKQogewpAQCAtMTExLDEwICsxMTAsNiBAQCBXVEZfQUxMT1df
VU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgogICAgIG91dC5wcmludGYoIiUuKnMiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cmluZy5zaXplKCkpLCBzdHJpbmcuZGF0YSgpKTsKIFdURl9BTExPV19VTlNB
RkVfQlVGRkVSX1VTQUdFX0VORAogfQotCi10ZW1wbGF0ZTxzdGQ6OnNpemVfdCBFeHRlbnQ+Ci12
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgc3RkOjpzcGFuPGNvbnN0IGNoYXI4
X3QsIEV4dGVudD4gc3RyaW5nKSB7IHByaW50SW50ZXJuYWwob3V0LCBieXRlQ2FzdDxjaGFyPihz
dHJpbmcpKTsgfQotCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiwgU3RyaW5nVmlldyk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiwgY29uc3QgQ1N0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU0lNREhlbHBlcnMuaCBiL1NvdXJjZS9XVEYvd3RmL1NJTURIZWxw
ZXJzLmgKaW5kZXggNGNkMjI2YTc2ZWRmLi5lZDRiNjkzNmRkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1NJTURIZWxwZXJzLmgKKysrIGIvU291cmNlL1dURi93dGYvU0lNREhlbHBlcnMu
aApAQCAtNDY2LDcgKzQ2Niw3IEBAIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50OF90
PiBmaW5kRmlyc3ROb25aZXJvSW5kZXgoc2ltZGVfdWludDY0eDJfdCB2YWx1CiAjZW5kaWYKIH0K
IAotdGVtcGxhdGU8TGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3RlciwgTGF0aW4xQ2hhcmFjdGVyLi4u
IGNoYXJhY3RlcnM+Cit0ZW1wbGF0ZTxMQ2hhciBjaGFyYWN0ZXIsIExDaGFyLi4uIGNoYXJhY3Rl
cnM+CiBBTFdBWVNfSU5MSU5FIHNpbWRlX3VpbnQ4eDE2X3QgZXF1YWwoc2ltZGVfdWludDh4MTZf
dCBpbnB1dCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHNpbWRlX3ZjZXFxX3U4KGlucHV0LCBzaW1k
ZV92bW92cV9uX3U4KGNoYXJhY3RlcikpOwpAQCAtNTg2LDMxICs1ODYsMTEgQEAgQUxXQVlTX0lO
TElORSBzaW1kZV91aW50NjR4Ml90IGdyZWF0ZXJUaGFuT3JFcXVhbChzaW1kZV91aW50NjR4Ml90
IGxocywgc2ltZGVfdWkKICAgICByZXR1cm4gc2ltZGVfdmNnZXFfdTY0KGxocywgcmhzKTsKIH0K
IAotdGVtcGxhdGU8c2l6ZV90PiBzdHJ1Y3QgU2l6ZWRVbnNpZ25lZFRyYWl0OwotdGVtcGxhdGU8
Pgotc3RydWN0IFNpemVkVW5zaWduZWRUcmFpdDwxPiB7Ci0gICAgdXNpbmcgVHlwZSA9IHVpbnQ4
X3Q7Ci19OwotdGVtcGxhdGU8Pgotc3RydWN0IFNpemVkVW5zaWduZWRUcmFpdDwyPiB7Ci0gICAg
dXNpbmcgVHlwZSA9IHVpbnQxNl90OwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBTaXplZFVuc2ln
bmVkVHJhaXQ8ND4gewotICAgIHVzaW5nIFR5cGUgPSB1aW50MzJfdDsKLX07Ci10ZW1wbGF0ZTw+
Ci1zdHJ1Y3QgU2l6ZWRVbnNpZ25lZFRyYWl0PDg+IHsKLSAgICB1c2luZyBUeXBlID0gdWludDY0
X3Q7Ci19OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVzaW5nIFNhbWVTaXplVW5zaWduZWRJbnRl
Z2VyID0gU2l6ZWRVbnNpZ25lZFRyYWl0PHNpemVvZihUKT46OlR5cGU7Ci0KIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCB0aHJlc2hvbGQgPSBTSU1EOjpzdHJpZGU8Q2hh
cmFjdGVyVHlwZT4+CiBBTFdBWVNfSU5MSU5FIGNvbnN0IENoYXJhY3RlclR5cGUqIGZpbmQoc3Rk
OjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGU+IHNwYW4sIGNvbnN0IGF1dG8mIHZlY3Rvck1hdGNo
LCBjb25zdCBhdXRvJiBzY2FsYXJNYXRjaCkKIHsKICAgICBjb25zdGV4cHIgc2l6ZV90IHN0cmlk
ZSA9IFNJTUQ6OnN0cmlkZTxDaGFyYWN0ZXJUeXBlPjsKLSAgICB1c2luZyBVbnNpZ25lZFR5cGUg
PSBTYW1lU2l6ZVVuc2lnbmVkSW50ZWdlcjxDaGFyYWN0ZXJUeXBlPjsKKyAgICB1c2luZyBVbnNp
Z25lZFR5cGUgPSBzdGQ6Om1ha2VfdW5zaWduZWRfdDxDaGFyYWN0ZXJUeXBlPjsKICAgICBzdGF0
aWNfYXNzZXJ0KHRocmVzaG9sZCA+PSBzdHJpZGUpOwogICAgIGNvbnN0IGF1dG8qIGN1cnNvciA9
IHNwYW4uZGF0YSgpOwogICAgIGNvbnN0IGF1dG8qIGVuZCA9IHNwYW4uZGF0YSgpICsgc3Bhbi5z
aXplKCk7CkBAIC02NjcsNyArNjQ3LDcgQEAgQUxXQVlTX0lOTElORSBzaXplX3QgY291bnQoc3Rk
OjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGU+IHNwYW4sIGNvbnN0IGF1dG8mIHZlY3QKIHsKICAg
ICBjb25zdGV4cHIgc2l6ZV90IHN0cmlkZSA9IFNJTUQ6OnN0cmlkZTxDaGFyYWN0ZXJUeXBlPjsK
ICAgICBjb25zdGV4cHIgc2l6ZV90IGJ1bGtMb2FkQ291bnQgPSA0OwotICAgIHVzaW5nIFVuc2ln
bmVkVHlwZSA9IFNhbWVTaXplVW5zaWduZWRJbnRlZ2VyPENoYXJhY3RlclR5cGU+OworICAgIHVz
aW5nIFVuc2lnbmVkVHlwZSA9IHN0ZDo6bWFrZV91bnNpZ25lZF90PENoYXJhY3RlclR5cGU+Owog
ICAgIHN0YXRpY19hc3NlcnQodGhyZXNob2xkID49IHN0cmlkZSk7CiAgICAgY29uc3QgYXV0byog
Y3Vyc29yID0gc3Bhbi5kYXRhKCk7CiAgICAgY29uc3QgYXV0byogZW5kID0gc3Bhbi5kYXRhKCkg
KyBzcGFuLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NlcXVlc3RlcmVkQWxs
b2NhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1NlcXVlc3RlcmVkQWxsb2NhdG9yLmNwcAppbmRl
eCAzNGIxYTM5ZDhhY2EuLjBiNjI2OGM3YzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
U2VxdWVzdGVyZWRBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlcXVlc3RlcmVk
QWxsb2NhdG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQCB2b2lkIFNlcXVlc3RlcmVkQXJlbmFBbGxv
Y2F0b3I6OmxvZ0xpdmVBbGxvY2F0aW9uRGVidWdJbmZvcygpCiAgICAgICAgIGlmICghaW5mby5s
aXZlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICsrcHJpbnRDb3VudDsKLSAgICAg
ICAgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gc3BhbiA9IGluZm8ucHJveGltYXRl
RnJhbWUuc3BhbjgoKTsKKyAgICAgICAgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBzcGFuID0gaW5m
by5wcm94aW1hdGVGcmFtZS5zcGFuOCgpOwogICAgICAgICBzdGQ6OnN0cmluZyB0b1ByaW50IHsg
c3Bhbi5iZWdpbigpLCBzcGFuLmVuZCgpIH07CiAgICAgICAgIC8vIE5vIG5ld2xpbmUgc2luY2Ug
d2UgYXNzdW1lIHRoZSBzdGFjayBmcmFtZSB3aWxsIGhhdmUgaXQKICAgICAgICAgZGF0YUxvZ0lm
KHZlcmJvc2UsICJBbGxvY2F0b3IgIiwgaWQoKSwgIjogIiwgaW5mby5zaXplLCAiQiBAICIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oIGIvU291cmNlL1dURi93
dGYvU29ydGVkQXJyYXlNYXAuaAppbmRleCA2MDQxMDQ0OWZhZTAuLmE3MmQ2NWM0ZjRiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgdGVtcGxhdGU8QVNDSUlT
dWJzZXQgc3Vic2V0PiBjb25zdGV4cHIgYm9vbCBpc0luU3Vic2V0KGNoYXIgY2hhcmFjdGVyKQog
ICAgIH0KIH0KIAotdGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0LCB0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBjb25zdGV4cHIgU0lNRDo6U2FtZVNpemVVbnNpZ25lZEludGVnZXI8Q2hhcmFjdGVy
VHlwZT4gZm9sZEZvckNvbXBhcmlzb24oQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0
ZTxBU0NJSVN1YnNldCBzdWJzZXQsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBz
dGQ6Om1ha2VfdW5zaWduZWRfdDxDaGFyYWN0ZXJUeXBlPiBmb2xkRm9yQ29tcGFyaXNvbihDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICBzd2l0Y2ggKHN1YnNldCkgewogICAgIGNhc2Ug
QVNDSUlTdWJzZXQ6OkFsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJh
cy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggYWQ2OGU5ODY3NWVjLi4w
YWExMDQwN2Y5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC01MCwxMCArNTAsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9UeXBlVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAotbmFt
ZXNwYWNlIFdURiB7Ci1zdHJ1Y3QgTGF0aW4xQ2hhcmFjdGVyOwotfQotCiBXVEZfQUxMT1dfVU5T
QUZFX0JVRkZFUl9VU0FHRV9CRUdJTgogCiAjZGVmaW5lIFNJTkdMRV9BUkcoLi4uKSBfX1ZBX0FS
R1NfXyAvLyB1c2VmdWwgd2hlbiBhIG1hY3JvIGFyZ3VtZW50IGluY2x1ZGVzIGEgY29tbWEKQEAg
LTEwNSw2ICsxMDEsNyBAQCBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgogI2Rl
ZmluZSBXVEZfQ09OQ0FUX0lOVEVSTkFMX0RPTlRfVVNFKGEsIGIpIGEgIyMgYgogI2RlZmluZSBX
VEZfQ09OQ0FUKGEsIGIpIFdURl9DT05DQVRfSU5URVJOQUxfRE9OVF9VU0UoYSwgYikKIAorCiAv
KgogICogVGhlIHJlaW50ZXJwcmV0X2Nhc3Q8VHlwZTEqPihbcG9pbnRlciB0byBUeXBlMl0pIGV4
cHJlc3Npb25zIC0gd2hlcmUKICAqIHNpemVvZihUeXBlMSkgPiBzaXplb2YoVHlwZTIpIC0gY2F1
c2UgdGhlIGZvbGxvd2luZyB3YXJuaW5nIG9uIEFSTSB3aXRoIEdDQzoKQEAgLTEyMzAsNDEgKzEy
MjcsMzEgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlLCBUPjoKICAgICBzbnByaW50ZihkZXN0aW5hdGlv
blNwYW4uZGF0YSgpLCBkZXN0aW5hdGlvblNwYW4uc2l6ZV9ieXRlcygpLCBmb3JtYXQgX19WQV9P
UFRfXygsIFNBRkVfUFJJTlRGX1RZUEUoX19WQV9BUkdTX18pKSkgXAogICAgIFdURl9BTExPV19V
TlNBRkVfQlVGRkVSX1VTQUdFX0VORAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uY2VwdCBJ
c0J5dGUgPSAoc2l6ZW9mKFQpID09IDEgJiYgc3RkOjppc19pbnRlZ3JhbF92PFQ+ICYmICFzdGQ6
OnNhbWVfYXM8c3RkOjpyZW1vdmVfY29uc3RfdDxUPiwgYm9vbD4pIHx8IHN0ZDo6c2FtZV9hczxz
dGQ6OnJlbW92ZV9jb25zdF90PFQ+LCBzdGQ6OmJ5dGU+IHx8IHN0ZDo6c2FtZV9hczxzdGQ6OnJl
bW92ZV9jb25zdF90PFQ+LCBXVEY6OkxhdGluMUNoYXJhY3Rlcj47Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1jb25jZXB0IElzTXV0YWJsZUJ5dGUgPSBJc0J5dGU8VD4gJiYgIXN0ZDo6aXNfY29u
c3RfdjxUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbmNlcHQgQnl0ZVR5cGUgPSBzaXplb2Yo
VCkgPT0gMSAmJiAoKHN0ZDo6aXNfaW50ZWdyYWxfdjxUPiAmJiAhc3RkOjpzYW1lX2FzPFQsIGJv
b2w+KSB8fCBzdGQ6OnNhbWVfYXM8VCwgc3RkOjpieXRlPikgJiYgIXN0ZDo6aXNfY29uc3RfdjxU
PjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBCeXRlQ2FzdFRyYWl0czsKIAotdGVtcGxh
dGU8SXNCeXRlIFQ+Ci1zdHJ1Y3QgQnl0ZUNhc3RUcmFpdHM8VD4gewotICAgIHRlbXBsYXRlPElz
Qnl0ZSBVPiBzdGF0aWMgY29uc3RleHByIFUgY2FzdChUIGNoYXJhY3RlcikgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VT4oY2hhcmFjdGVyKTsgfQordGVtcGxhdGU8Qnl0ZVR5cGUgVD4gc3RydWN0IEJ5
dGVDYXN0VHJhaXRzPFQ+IHsKKyAgICB0ZW1wbGF0ZTxCeXRlVHlwZSBVPiBzdGF0aWMgY29uc3Rl
eHByIFUgY2FzdChUIGNoYXJhY3RlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VT4oY2hhcmFjdGVy
KTsgfQogfTsKIAotdGVtcGxhdGU8SXNNdXRhYmxlQnl0ZSBUPgotc3RydWN0IEJ5dGVDYXN0VHJh
aXRzPFQqPiB7Ci0gICAgdGVtcGxhdGU8SXNNdXRhYmxlQnl0ZSBVPiBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY2FzdChUKiBwb2ludGVyKSB7IHJldHVybiBzdGQ6OmJpdF9jYXN0PFUqPihwb2ludGVy
KTsgfQordGVtcGxhdGU8Qnl0ZVR5cGUgVD4gc3RydWN0IEJ5dGVDYXN0VHJhaXRzPFQqPiB7Cisg
ICAgdGVtcGxhdGU8Qnl0ZVR5cGUgVT4gc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhc3QoVCogcG9p
bnRlcikgeyByZXR1cm4gc3RkOjpiaXRfY2FzdDxVKj4ocG9pbnRlcik7IH0KIH07CiAKLXRlbXBs
YXRlPElzTXV0YWJsZUJ5dGUgVD4KLXN0cnVjdCBCeXRlQ2FzdFRyYWl0czxjb25zdCBUKj4gewot
ICAgIHRlbXBsYXRlPElzTXV0YWJsZUJ5dGUgVT4gc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhc3Qo
Y29uc3QgVCogcG9pbnRlcikgeyByZXR1cm4gc3RkOjpiaXRfY2FzdDxjb25zdCBVKj4ocG9pbnRl
cik7IH0KK3RlbXBsYXRlPEJ5dGVUeXBlIFQ+IHN0cnVjdCBCeXRlQ2FzdFRyYWl0czxjb25zdCBU
Kj4geworICAgIHRlbXBsYXRlPEJ5dGVUeXBlIFU+IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYXN0
KGNvbnN0IFQqIHBvaW50ZXIpIHsgcmV0dXJuIHN0ZDo6Yml0X2Nhc3Q8Y29uc3QgVSo+KHBvaW50
ZXIpOyB9CiB9OwogCi10ZW1wbGF0ZTxJc011dGFibGVCeXRlIFQsIHNpemVfdCBFeHRlbnQ+Ci1z
dHJ1Y3QgQnl0ZUNhc3RUcmFpdHM8c3RkOjpzcGFuPFQsIEV4dGVudD4+IHsKLSAgICB0ZW1wbGF0
ZTxJc011dGFibGVCeXRlIFU+IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYXN0KHN0ZDo6c3BhbjxU
LCBFeHRlbnQ+IHNwYW4pIHsgcmV0dXJuIHNwYW5SZWludGVycHJldENhc3Q8VT4oc3Bhbik7IH0K
K3RlbXBsYXRlPEJ5dGVUeXBlIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBCeXRlQ2FzdFRyYWl0
czxzdGQ6OnNwYW48VCwgRXh0ZW50Pj4geworICAgIHRlbXBsYXRlPEJ5dGVUeXBlIFU+IHN0YXRp
YyBjb25zdGV4cHIgYXV0byBjYXN0KHN0ZDo6c3BhbjxULCBFeHRlbnQ+IHNwYW4pIHsgcmV0dXJu
IHNwYW5SZWludGVycHJldENhc3Q8VT4oc3Bhbik7IH0KIH07CiAKLXRlbXBsYXRlPElzTXV0YWJs
ZUJ5dGUgVCwgc2l6ZV90IEV4dGVudD4KLXN0cnVjdCBCeXRlQ2FzdFRyYWl0czxzdGQ6OnNwYW48
Y29uc3QgVCwgRXh0ZW50Pj4gewotICAgIHRlbXBsYXRlPElzTXV0YWJsZUJ5dGUgVT4gc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGNhc3Qoc3RkOjpzcGFuPGNvbnN0IFQsIEV4dGVudD4gc3BhbikgeyBy
ZXR1cm4gc3BhblJlaW50ZXJwcmV0Q2FzdDxjb25zdCBVPihzcGFuKTsgfQordGVtcGxhdGU8Qnl0
ZVR5cGUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEJ5dGVDYXN0VHJhaXRzPHN0ZDo6c3Bhbjxj
b25zdCBULCBFeHRlbnQ+PiB7CisgICAgdGVtcGxhdGU8Qnl0ZVR5cGUgVT4gc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGNhc3Qoc3RkOjpzcGFuPGNvbnN0IFQsIEV4dGVudD4gc3BhbikgeyByZXR1cm4g
c3BhblJlaW50ZXJwcmV0Q2FzdDxjb25zdCBVPihzcGFuKTsgfQogfTsKIAotdGVtcGxhdGU8SXNC
eXRlIFQsIHR5cGVuYW1lIFU+Ci1jb25zdGV4cHIgYXV0byBieXRlQ2FzdChjb25zdCBVJiB2YWx1
ZSkKK3RlbXBsYXRlPEJ5dGVUeXBlIFQsIHR5cGVuYW1lIFU+IGNvbnN0ZXhwciBhdXRvIGJ5dGVD
YXN0KGNvbnN0IFUmIHZhbHVlKQogewogICAgIHJldHVybiBCeXRlQ2FzdFRyYWl0czxVPjo6dGVt
cGxhdGUgY2FzdDxUPih2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCAwMTI2NzI3MzNhOTcuLjkwN2U0YWZj
Y2JiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0
QW5kUG9ydCgpIGNvbnN0CiAgICAgKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF0aW4x
Q2hhcmFjdGVyPiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0LCB1bnNpZ25l
ZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TENoYXI+IGRl
Y29kZUVzY2FwZVNlcXVlbmNlKFN0cmluZ1ZpZXcgaW5wdXQsIHVuc2lnbmVkIGluZGV4LCB1bnNp
Z25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKGluZGV4ICsgMyA+IGxlbmd0aCB8fCBpbnB1dFtpbmRl
eF0gIT0gJyUnKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjE3LDcgKzIxNyw3
IEBAIHN0YXRpYyBTdHJpbmcgZGVjb2RlRXNjYXBlU2VxdWVuY2VzRnJvbVBhcnNlZFVSTChTdHJp
bmdWaWV3IGlucHV0KQogICAgICAgICByZXR1cm4gaW5wdXQudG9TdHJpbmcoKTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIDEwMCBpcyBhcmJpdHJhcnkuIFNob3VsZCBtYWtlIGEgaGlzdG9ncmFtIG9m
IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHVzZWQgdG8gY2hvb3NlIGEgYmV0dGVyIHZh
bHVlLgotICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXIsIDEwMD4gcGVyY2VudERlY29kZWQ7Cisg
ICAgVmVjdG9yPExDaGFyLCAxMDA+IHBlcmNlbnREZWNvZGVkOwogICAgIHBlcmNlbnREZWNvZGVk
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyApIHsKICAgICAgICAgaWYgKGF1dG8gZGVjb2RlZENoYXJhY3RlciA9IGRl
Y29kZUVzY2FwZVNlcXVlbmNlKGlucHV0LCBpLCBsZW5ndGgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApp
bmRleCBhNjEzNmZmY2Y2YzEuLjYzMjVkMmEyNmJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC00
MTUsNyArNDE1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFVSTFBhcnNlcjo6YXBwZW5kVG9BU0NJ
SUJ1ZmZlcihjaGFyMzJfdCBjb2RlUG9pbnQpCiAgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5k
KGNvZGVQb2ludCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFRv
QVNDSUlCdWZmZXIoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVycykK
K0FMV0FZU19JTkxJTkUgdm9pZCBVUkxQYXJzZXI6OmFwcGVuZFRvQVNDSUlCdWZmZXIoc3RkOjpz
cGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKQogewogICAgIGlmIChtX2RpZFNlZVN5bnRheFZp
b2xhdGlvbikgW1t1bmxpa2VseV1dCiAgICAgICAgIG1fYXNjaWlCdWZmZXIuYXBwZW5kKGNoYXJh
Y3RlcnMpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIGJvb2wgVVJMUGFyc2VyOjpzaG91bGRDb3B5Rmls
ZVVSTChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKICAgICByZXR1
cm4gIWlzU2xhc2hRdWVzdGlvbk9ySGFzaCgqaXRlcmF0b3IpOwogfQogCi1zdGF0aWMgdm9pZCBw
ZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5dGUsIFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXI+JiBi
dWZmZXIpCitzdGF0aWMgdm9pZCBwZXJjZW50RW5jb2RlQnl0ZSh1aW50OF90IGJ5dGUsIFZlY3Rv
cjxMQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICBidWZmZXIuYXBwZW5kKCclJyk7CiAgICAgYnVmZmVy
LmFwcGVuZCh1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChieXRlKSk7CkBAIC05NzUsNyArOTc1
LDcgQEAgYm9vbCBVUkxQYXJzZXI6OnNob3VsZFBvcFBhdGgodW5zaWduZWQgbmV3UGF0aEFmdGVy
TGFzdFNsYXNoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEFTU0VSVChtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCA8PSBtX2FzY2lpQnVmZmVyLnNpemUoKSk7Ci0gICAgQ29kZVBvaW50
SXRlcmF0b3I8TGF0aW4xQ2hhcmFjdGVyPiBjb21wb25lbnRUb1BvcChtX2FzY2lpQnVmZmVyLnN1
YnNwYW4obmV3UGF0aEFmdGVyTGFzdFNsYXNoLCBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCAt
IG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpOworICAgIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPiBj
b21wb25lbnRUb1BvcChtX2FzY2lpQnVmZmVyLnN1YnNwYW4obmV3UGF0aEFmdGVyTGFzdFNsYXNo
LCBtX3VybC5tX3BhdGhBZnRlckxhc3RTbGFzaCAtIG5ld1BhdGhBZnRlckxhc3RTbGFzaCkpOwog
ICAgIGlmIChuZXdQYXRoQWZ0ZXJMYXN0U2xhc2ggPT0gbV91cmwubV9ob3N0RW5kICsgbV91cmwu
bV9wb3J0TGVuZ3RoICsgMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihjb21wb25lbnRUb1BvcCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNTUsNyArMTA1
NSw3IEBAIGJvb2wgVVJMUGFyc2VyOjppc0F0TG9jYWxob3N0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGl0ZXJhdG9yKQogYm9vbCBVUkxQYXJzZXI6OmlzTG9jYWxob3N0KFN0cmlu
Z1ZpZXcgdmlldykKIHsKICAgICBpZiAodmlldy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGlz
QXRMb2NhbGhvc3Q8TGF0aW4xQ2hhcmFjdGVyPih2aWV3LnNwYW44KCkpOworICAgICAgICByZXR1
cm4gaXNBdExvY2FsaG9zdDxMQ2hhcj4odmlldy5zcGFuOCgpKTsKICAgICByZXR1cm4gaXNBdExv
Y2FsaG9zdDxjaGFyMTZfdD4odmlldy5zcGFuMTYoKSk7CiB9CiAKQEAgLTIxMTAsMTIgKzIxMTAs
MTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4KIHZvaWQgVVJMUGFy
c2VyOjphcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUgbnVtYmVy
KQogewogICAgIGNvbnN0ZXhwciBzaXplX3QgYnVmZmVyU2l6ZSA9IHNpemVvZihVbnNpZ25lZElu
dGVnZXJUeXBlKSAqIDMgKyAxOwotICAgIHN0ZDo6YXJyYXk8TGF0aW4xQ2hhcmFjdGVyLCBidWZm
ZXJTaXplPiBidWZmZXI7CisgICAgc3RkOjphcnJheTxMQ2hhciwgYnVmZmVyU2l6ZT4gYnVmZmVy
OwogICAgIHNpemVfdCBpbmRleCA9IGJ1ZmZlclNpemU7CiAgICAgZG8gewotICAgICAgICBidWZm
ZXJbLS1pbmRleF0gPSBzdGF0aWNfY2FzdDxjaGFyPigobnVtYmVyICUgMTApICsgJzAnKTsKKyAg
ICAgICAgYnVmZmVyWy0taW5kZXhdID0gKG51bWJlciAlIDEwKSArICcwJzsKICAgICAgICAgbnVt
YmVyIC89IDEwOwogICAgIH0gd2hpbGUgKG51bWJlcik7CisKICAgICBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKHN0ZDo6c3BhbiB7IGJ1ZmZlciB9LnN1YnNwYW4oaW5kZXgpKTsKIH0KIApAQCAtMjUwOCw3
ICsyNTA5LDcgQEAgc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJz
ZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3IKIAogLy8gRklYTUU6IFRoaXMgZnVu
Y3Rpb24gc2hvdWxkIHRha2Ugc3Bhbjxjb25zdCBjaGFyOF90Piwgc2luY2UgaXQgcmVxdWlyZXMg
VVRGLTguCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotVVJMUGFyc2VyOjpMQ2hh
ckJ1ZmZlciBVUkxQYXJzZXI6OnBlcmNlbnREZWNvZGUoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNo
YXJhY3Rlcj4gaW5wdXQsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBp
dGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQorVVJMUGFyc2VyOjpMQ2hhckJ1ZmZl
ciBVUkxQYXJzZXI6OnBlcmNlbnREZWNvZGUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBpbnB1dCwg
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4
VmlvbGF0aW9uUG9zaXRpb24pCiB7CiAgICAgTENoYXJCdWZmZXIgb3V0cHV0OwogICAgIG91dHB1
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7CkBAIC0yNTMwLDcgKzI1MzEs
NyBAQCBVUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPgogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAgICAg
Ci1VUkxQYXJzZXI6OkxDaGFyQnVmZmVyIFVSTFBhcnNlcjo6cGVyY2VudERlY29kZShzdGQ6OnNw
YW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBpbnB1dCkKK1VSTFBhcnNlcjo6TENoYXJCdWZmZXIg
VVJMUGFyc2VyOjpwZXJjZW50RGVjb2RlKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gaW5wdXQpCiB7
CiAgICAgTENoYXJCdWZmZXIgb3V0cHV0OwogICAgIG91dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGlucHV0LnNpemUoKSk7CkBAIC0yNzM3LDcgKzI3MzgsNyBAQCBib29sIFVSTFBhcnNlcjo6
c3ViZG9tYWluU3RhcnRzV2l0aFhORGFzaERhc2goQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVy
VHlwZT4gaQogYm9vbCBVUkxQYXJzZXI6OnN1YmRvbWFpblN0YXJ0c1dpdGhYTkRhc2hEYXNoKFN0
cmluZ0ltcGwmIGhvc3QpCiB7CiAgICAgaWYgKGhvc3QuaXM4Qml0KCkpCi0gICAgICAgIHJldHVy
biBzdWJkb21haW5TdGFydHNXaXRoWE5EYXNoRGFzaDxMYXRpbjFDaGFyYWN0ZXI+KGhvc3Quc3Bh
bjgoKSk7CisgICAgICAgIHJldHVybiBzdWJkb21haW5TdGFydHNXaXRoWE5EYXNoRGFzaDxMQ2hh
cj4oaG9zdC5zcGFuOCgpKTsKICAgICByZXR1cm4gc3ViZG9tYWluU3RhcnRzV2l0aFhORGFzaERh
c2g8Y2hhcjE2X3Q+KGhvc3Quc3BhbjE2KCkpOwogfQogCkBAIC0yODkzLDcgKzI4OTQsNyBAQCBh
dXRvIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiBpdGVyYXRvcikgLT4gSAogICAgICAgICByZXR1cm4gSG9zdFBhcnNpbmdSZXN1bHQ6
OkludmFsaWRIb3N0OwogICAgIExDaGFyQnVmZmVyJiBhc2NpaURvbWFpblZhbHVlID0gYXNjaWlE
b21haW4udmFsdWUoKTsKIAotICAgIGF1dG8gYWRkcmVzcyA9IHBhcnNlSVB2NEhvc3Q8Q2hhcmFj
dGVyVHlwZSwgTGF0aW4xQ2hhcmFjdGVyPihob3N0QmVnaW4sIGFzY2lpRG9tYWluVmFsdWUuc3Bh
bigpKTsKKyAgICBhdXRvIGFkZHJlc3MgPSBwYXJzZUlQdjRIb3N0PENoYXJhY3RlclR5cGUsIExD
aGFyPihob3N0QmVnaW4sIGFzY2lpRG9tYWluVmFsdWUuc3BhbigpKTsKICAgICBpZiAoYWRkcmVz
cykgewogICAgICAgICBzZXJpYWxpemVJUHY0KGFkZHJlc3MudmFsdWUoKSk7CiAgICAgICAgIG1f
dXJsLm1faG9zdEVuZCA9IGN1cnJlbnRQb3NpdGlvbihpdGVyYXRvcik7CkBAIC0yOTIzLDggKzI5
MjQsOCBAQCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQpCiAgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJz
aW9uKTsKICAgICBpZiAodXRmOC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBhdXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShieXRlQ2FzdDxMYXRp
bjFDaGFyYWN0ZXI+KHV0Zjguc3BhbigpKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjhS
ZXBsYWNpbmdJbnZhbGlkU2VxdWVuY2VzKGJ5dGVDYXN0PGNoYXI4X3Q+KHBlcmNlbnREZWNvZGVk
LnNwYW4oKSkpOworICAgIGF1dG8gcGVyY2VudERlY29kZWQgPSBwZXJjZW50RGVjb2RlKGJ5dGVD
YXN0PExDaGFyPih1dGY4LnNwYW4oKSkpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4UmVw
bGFjaW5nSW52YWxpZFNlcXVlbmNlcyhwZXJjZW50RGVjb2RlZC5zcGFuKCkpOwogfQogCiAvLyBo
dHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsZW5jb2RlZC1wYXJzZXIKQEAg
LTI5NTQsNyArMjk1NSw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPFN0cmluZywgU3Ry
aW5nPj4gVVJMUGFyc2VyOjpwYXJzZVF1ZXJ5TmFtZUFuZFZhbHVlKFN0CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIHZvaWQgc2VyaWFsaXplVVJMRW5jb2RlZEZvcm0oY29u
c3QgU3RyaW5nJiBpbnB1dCwgVmVjdG9yPExhdGluMUNoYXJhY3Rlcj4mIG91dHB1dCkKK3N0YXRp
YyB2b2lkIHNlcmlhbGl6ZVVSTEVuY29kZWRGb3JtKGNvbnN0IFN0cmluZyYgaW5wdXQsIFZlY3Rv
cjxMQ2hhcj4mIG91dHB1dCkKIHsKICAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENv
bnZlcnNpb24pOwogICAgIGZvciAoY2hhciBieXRlIDogdXRmOC5zcGFuKCkpIHsKQEAgLTI5Nzgs
NyArMjk3OSw3IEBAIFN0cmluZyBVUkxQYXJzZXI6OnNlcmlhbGl6ZShjb25zdCBVUkxFbmNvZGVk
Rm9ybSYgdHVwbGVzKQogICAgIGlmICh0dXBsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgVmVjdG9yPExhdGluMUNoYXJhY3Rlcj4gb3V0cHV0OworICAgIFZlY3RvcjxM
Q2hhcj4gb3V0cHV0OwogICAgIGZvciAoYXV0byYgdHVwbGUgOiB0dXBsZXMpIHsKICAgICAgICAg
aWYgKCFvdXRwdXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgnJicpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9V
UkxQYXJzZXIuaAppbmRleCAxMjkyZjQ4MDMzNmUuLmFjODI1YzE3NWY0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVJMUGFyc2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2Vy
LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVVJMOwogCiAg
ICAgVVJMIG1fdXJsOwotICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXI+IG1fYXNjaWlCdWZmZXI7
CisgICAgVmVjdG9yPExDaGFyPiBtX2FzY2lpQnVmZmVyOwogICAgIGJvb2wgbV91cmxJc1NwZWNp
YWwgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91cmxJc0ZpbGUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9ob3N0SGFzUGVyY2VudE9yTm9uQVNDSUkgeyBmYWxzZSB9OwpAQCAtODUsNyArODUsNyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IHZvaWQqIG1faW5wdXRCZWdpbiB7IG51bGxwdHIgfTsKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplID0gMjA0ODsK
LSAgICB1c2luZyBMQ2hhckJ1ZmZlciA9IFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXIsIGRlZmF1bHRJ
bmxpbmVCdWZmZXJTaXplPjsKKyAgICB1c2luZyBMQ2hhckJ1ZmZlciA9IFZlY3RvcjxMQ2hhciwg
ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gdm9pZCBwYXJzZShzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4sIGNvbnN0
IFVSTCYsIGNvbnN0IFVSTFRleHRFbmNvZGluZyopOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHZvaWQgcGFyc2VBdXRob3JpdHkoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4pOwpAQCAtMTE3LDEyICsxMTcsMTIgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxi
b29sKCppc0luQ29kZVNldCkoY2hhcjMyX3QpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHV0ZjhQZXJjZW50RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB1dGY4UXVlcnlF
bmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPExDaGFyQnVmZmVyPiBk
b21haW5Ub0FTQ0lJKFN0cmluZ0ltcGwmLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwotICAgIHN0
YXRpYyBMQ2hhckJ1ZmZlciBwZXJjZW50RGVjb2RlKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFy
YWN0ZXI+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBMQ2hhckJ1ZmZl
ciBwZXJjZW50RGVjb2RlKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4sIGNvbnN0IENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9u
KTsKKyAgICBzdGF0aWMgTENoYXJCdWZmZXIgcGVyY2VudERlY29kZShzdGQ6OnNwYW48Y29uc3Qg
TENoYXI+KTsKICAgICBib29sIGhhc0ZvcmJpZGRlbkhvc3RDb2RlUG9pbnQoY29uc3QgTENoYXJC
dWZmZXImKTsKICAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOwogICAgIHZvaWQg
YXBwZW5kVG9BU0NJSUJ1ZmZlcihjaGFyMzJfdCk7Ci0gICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVm
ZmVyKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsKKyAgICB2b2lkIGFwcGVuZFRv
QVNDSUlCdWZmZXIoc3RkOjpzcGFuPGNvbnN0IExDaGFyPik7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBlbmNvZGVOb25VVEY4UXVlcnkoY29uc3QgVmVjdG9yPGNo
YXIxNl90PiYgc291cmNlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcmLCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPik7CiAgICAgdm9pZCBjb3B5QVNDSUlTdHJpbmdVbnRpbChjb25zdCBT
dHJpbmcmLCBzaXplX3QgbGVuZ3RoKTsKICAgICBib29sIGNvcHlCYXNlV2luZG93c0RyaXZlTGV0
dGVyKGNvbnN0IFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRy
YXMuY3BwIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCmluZGV4IGFhOGNlZDk0
NjczYS4uZjgwNmMzODU4MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9DRlVSTEV4
dHJhcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvQ0ZVUkxFeHRyYXMuY3BwCkBAIC01Nyw5
ICs1Nyw5IEBAIFN0cmluZyBieXRlc0FzU3RyaW5nKENGVVJMUmVmIHVybCkKICAgICBhdXRvIGJ5
dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIG51bGxwdHIsIDApOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGJ5dGVzTGVuZ3RoICE9IC0xKTsKICAgICBSRUxFQVNFX0FTU0VSVChieXRlc0xlbmd0
aCA8PSBzdGF0aWNfY2FzdDxDRkluZGV4PihTdHJpbmc6Ok1heExlbmd0aCkpOwotICAgIHN0ZDo6
c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGJ1ZmZlcjsKKyAgICBzdGQ6OnNwYW48TENoYXI+IGJ1ZmZl
cjsKICAgICBhdXRvIHJlc3VsdCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChieXRlc0xl
bmd0aCwgYnVmZmVyKTsKLSAgICBDRlVSTEdldEJ5dGVzKHVybCwgYnl0ZUNhc3Q8VUludDg+KGJ1
ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBDRlVSTEdldEJ5dGVzKHVybCwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
OTMsNyArOTMsNyBAQCBib29sIGlzU2FtZU9yaWdpbihDRlVSTFJlZiBhLCBjb25zdCBVUkwmIGIp
CiAgICAgYXV0byBhQnl0ZXMgPSBieXRlc0FzVmVjdG9yKGEpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGFCeXRlcy5zaXplKCkgPD0gU3RyaW5nOjpNYXhMZW5ndGgpOwogCi0gICAgU3RyaW5nVmlldyBh
U3RyaW5nIHsgYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihhQnl0ZXMuc3BhbigpKSB9OworICAg
IFN0cmluZ1ZpZXcgYVN0cmluZyB7IGFCeXRlcy5zcGFuKCkgfTsKICAgICBTdHJpbmdWaWV3IGJT
dHJpbmcgeyBiLnN0cmluZygpIH07CiAKICAgICBpZiAoIWIuaGFzUGF0aCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2YvVVJMQ0Yu
Y3BwCmluZGV4IDgxNjQ0NWJhMGNkMy4uMzc5Y2UyMTlmNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9jZi9VUkxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTChjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmluZy5j
b250YWluc09ubHlBU0NJSSgpKSBbW2xpa2VseV1dIHsKICAgICAgICAgYXV0byBjaGFyYWN0ZXJz
ID0gc3RyaW5nLnNwYW44KCk7Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlQWJz
b2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZUNhc3Q8VUludDg+KGNoYXJhY3RlcnMuZGF0
YSgpKSwgY2hhcmFjdGVycy5zaXplKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwg
dHJ1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0
aEJ5dGVzKG51bGxwdHIsIGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUoKSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CiAgICAgfQogICAgIENTdHJpbmcg
dXRmOCA9IHN0cmluZy51dGY4KCk7CiAgICAgYXV0byB1dGY4U3BhbiA9IHV0Zjguc3BhbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQppbmRleCAwYTkyYmJlMGJlYmYuLjEzMzY3NWEy
ZTIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysr
IGIvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTMyMiw3ICszMjIsNyBA
QCBOU0RhdGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQogCiBOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcoTlNVUkwgKlVSTCkKIHsKLSAgICByZXR1cm4gVVJMSGVscGVyczo6dXNlclZp
c2libGVVUkwoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihzcGFuKG9yaWdpbmFsVVJMRGF0YShV
UkwpKSkpLmNyZWF0ZU5TU3RyaW5nKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gVVJMSGVs
cGVyczo6dXNlclZpc2libGVVUkwoc3BhbihvcmlnaW5hbFVSTERhdGEoVVJMKSkpLmNyZWF0ZU5T
U3RyaW5nKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQk9PTCBpc1VzZXJWaXNpYmxlVVJMKE5TU3Ry
aW5nICpzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9TcGFuQ29jb2Eu
aCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1NwYW5Db2NvYS5oCmluZGV4IGY5MDU3MGRkZGFhNy4u
ZmYxYWEzMTZlMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9TcGFuQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9TcGFuQ29jb2EuaApAQCAtMzIsNyArMzIsNiBA
QAogbmFtZXNwYWNlIFdURiB7CiAKICNpZmRlZiBfX09CSkNfXwotCiBpbmxpbmUgc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4oTlNEYXRhICpkYXRhKQogewogICAgIGlmICghZGF0YSkKQEAg
LTUxLDIyICs1MCwxNyBAQCBpbmxpbmUgUmV0YWluUHRyPE5TRGF0YT4gdG9OU0RhdGFOb0NvcHko
c3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4sIEZyZWVXaGVuRAogewogICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KHNwYW4uZGF0YSgpKSBsZW5ndGg6c3Bhbi5zaXplKCkgZnJlZVdoZW5Eb25lOmZyZWVX
aGVuRG9uZSA9PSBGcmVlV2hlbkRvbmU6Olllc10pOwogfQotCi10ZW1wbGF0ZTxJc0J5dGUgVD4g
UmV0YWluUHRyPE5TRGF0YT4gdG9OU0RhdGEoc3RkOjpzcGFuPGNvbnN0IFQ+IHNwYW4pCi17Ci0g
ICAgcmV0dXJuIHRvTlNEYXRhKGJ5dGVDYXN0PHVpbnQ4X3Q+KHNwYW4pKTsKLX0KLQotdGVtcGxh
dGU8SXNCeXRlIFQ+IFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhTm9Db3B5KHN0ZDo6c3Bhbjxj
b25zdCBUPiBzcGFuLCBGcmVlV2hlbkRvbmUgZnJlZVdoZW5Eb25lKQotewotICAgIHJldHVybiB0
b05TRGF0YU5vQ29weShieXRlQ2FzdDx1aW50OF90PihzcGFuKSwgZnJlZVdoZW5Eb25lKTsKLX0K
LQogI2VuZGlmIC8vICNpZmRlZiBfX09CSkNfXwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
RnVuY3Rpb247CiAKLWV4dGVybiAiQyIgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZGlzcGF0Y2hf
ZGF0YV9hcHBseV9zcGFuKGRpc3BhdGNoX2RhdGFfdCwgTk9FU0NBUEUgY29uc3QgRnVuY3Rpb248
Ym9vbChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcik7CisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBkaXNw
YXRjaF9kYXRhX2FwcGx5X3NwYW4oZGlzcGF0Y2hfZGF0YV90LCBOT0VTQ0FQRSBjb25zdCBGdW5j
dGlvbjxib29sKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Pik+JiBhcHBsaWVyKTsKKyNpZmRlZiBf
X2NwbHVzcGx1cworfSAvLyBleHRlcm4gIkMKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcApp
bmRleCA1MGE1MzlkZDY1ZWMuLmY4OGNjMzcyZTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lk
IENvZGVyPFN0cmluZz46OmVuY29kZUZvclBlcnNpc3RlbmNlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVuY29kZXIgPDwgc3RyaW5nLmxlbmd0aCgpIDw8IGlz
OEJpdDsKIAogICAgIGlmIChpczhCaXQpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGFzQnl0ZXMoc3RyaW5nLnNwYW44KCkpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoc3RyaW5nLnNwYW44KCkpOwogICAgIGVsc2UKICAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYXNCeXRlcyhzdHJpbmcuc3BhbjE2KCkpKTsKIH0KQEAg
LTEzOCw3ICsxMzgsNyBAQCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gQ29kZXI8U3RyaW5nPjo6ZGVj
b2RlRm9yUGVyc2lzdGVuY2UoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICgqaXM4Qml0KQotICAgICAgICByZXR1cm4gZGVjb2RlU3RyaW5n
VGV4dDxMYXRpbjFDaGFyYWN0ZXI+KGRlY29kZXIsICpsZW5ndGgpOworICAgICAgICByZXR1cm4g
ZGVjb2RlU3RyaW5nVGV4dDxMQ2hhcj4oZGVjb2RlciwgKmxlbmd0aCk7CiAgICAgcmV0dXJuIGRl
Y29kZVN0cmluZ1RleHQ8Y2hhcjE2X3Q+KGRlY29kZXIsICpsZW5ndGgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAppbmRleCAzNzJlNDg3
YjUyYTQuLmI4ODE2N2YyOGI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudERlY29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBXQVJOX1VOVVNFRF9SRVRVUk4KICAgICBib29sIGJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4oc2l6ZV90IG51bUVsZW1lbnRzKSBjb25zdAogICAgIHsKLSAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPiB8fCBzdGQ6OmlzX3NhbWVfdjxU
LCBMYXRpbjFDaGFyYWN0ZXI+LCAiVHlwZSBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2Rl
ZCBzaXplIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljPFQ+Ojp2
YWx1ZSwgIlR5cGUgVCBtdXN0IGhhdmUgYSBmaXhlZCwga25vd24gZW5jb2RlZCBzaXplISIpOwog
ICAgICAgICByZXR1cm4gbnVtRWxlbWVudHMgPD0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAvIHNpemVvZihUKSAmJiBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKG51bUVs
ZW1lbnRzICogc2l6ZW9mKFQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQVNDSUlGYXN0UGF0aC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUZhc3RQYXRo
LmgKaW5kZXggNjZkNGZjOWNiMDAxLi5kODk4ZjRmODYyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlGYXN0UGF0aC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSA8d3RmL0JpdFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BU0NJSUxp
dGVyYWwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9MYXRpbjFDaGFyYWN0ZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9MQ2hhci5oPgogCiAjaWYgQ1BVKFg4Nl9TU0UyKQogI2luY2x1ZGUgPGVtbWlu
dHJpbi5oPgpAQCAtNDIsMTEgKzQyLDExIEBAIGlubGluZSBjb25zdGV4cHIgQml0U2V0PDI1Nj4g
bWFrZUxhdGluMUNoYXJhY3RlckJpdFNldChBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKICAgICBy
ZXR1cm4gYml0bWFwOwogfQogCi1pbmxpbmUgY29uc3RleHByIEJpdFNldDwyNTY+IG1ha2VMYXRp
bjFDaGFyYWN0ZXJCaXRTZXQoTk9FU0NBUEUgY29uc3QgSW52b2NhYmxlPGJvb2woTGF0aW4xQ2hh
cmFjdGVyKT4gYXV0byYgbWF0Y2hlcykKK2lubGluZSBjb25zdGV4cHIgQml0U2V0PDI1Nj4gbWFr
ZUxhdGluMUNoYXJhY3RlckJpdFNldChOT0VTQ0FQRSBjb25zdCBJbnZvY2FibGU8Ym9vbChMQ2hh
cik+IGF1dG8mIG1hdGNoZXMpCiB7CiAgICAgQml0U2V0PDI1Nj4gYml0bWFwOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1h
dGNoZXMoc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihpKSkpCisgICAgICAgIGlmIChtYXRj
aGVzKHN0YXRpY19jYXN0PExDaGFyPihpKSkpCiAgICAgICAgICAgICBiaXRtYXAuc2V0KGkpOwog
ICAgIH0KICAgICByZXR1cm4gYml0bWFwOwpAQCAtNzMsMzIgKzczLDM4IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBUKiBhbGlnblRvTWFjaGluZVdvcmQoVCogcG9pbnRlcikKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHBv
aW50ZXIpICYgfm1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7CiB9CiAKLXRlbXBsYXRlPHNpemVf
dCB2YWx1ZVNpemUsIHNpemVfdCBjaGFyYWN0ZXJTaXplPiBzdHJ1Y3QgTm9uQVNDSUlNYXNrOwot
dGVtcGxhdGU8PiBzdHJ1Y3QgTm9uQVNDSUlNYXNrPDQsIDI+IHsKK3RlbXBsYXRlPHNpemVfdCBz
aXplLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdHJ1Y3QgTm9uQVNDSUlNYXNrOwordGVtcGxh
dGU8PiBzdHJ1Y3QgTm9uQVNDSUlNYXNrPDQsIGNoYXIxNl90PiB7CiAgICAgc3RhdGljIGlubGlu
ZSB1aW50MzJfdCB2YWx1ZSgpIHsgcmV0dXJuIDB4RkY4MEZGODBVOyB9CiB9OwotdGVtcGxhdGU8
PiBzdHJ1Y3QgTm9uQVNDSUlNYXNrPDQsIDE+IHsKK3RlbXBsYXRlPD4gc3RydWN0IE5vbkFTQ0lJ
TWFzazw0LCBMQ2hhcj4gewogICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgdmFsdWUoKSB7IHJl
dHVybiAweDgwODA4MDgwVTsgfQogfTsKLXRlbXBsYXRlPD4gc3RydWN0IE5vbkFTQ0lJTWFzazw4
LCAyPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8NCwgY2hhcjhfdD4geworICAg
IHN0YXRpYyBpbmxpbmUgdWludDMyX3QgdmFsdWUoKSB7IHJldHVybiAweDgwODA4MDgwVTsgfQor
fTsKK3RlbXBsYXRlPD4gc3RydWN0IE5vbkFTQ0lJTWFzazw4LCBjaGFyMTZfdD4gewogICAgIHN0
YXRpYyBpbmxpbmUgdWludDY0X3QgdmFsdWUoKSB7IHJldHVybiAweEZGODBGRjgwRkY4MEZGODBV
TEw7IH0KIH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8OCwgMT4gewordGVtcGxh
dGU8PiBzdHJ1Y3QgTm9uQVNDSUlNYXNrPDgsIExDaGFyPiB7CisgICAgc3RhdGljIGlubGluZSB1
aW50NjRfdCB2YWx1ZSgpIHsgcmV0dXJuIDB4ODA4MDgwODA4MDgwODA4MFVMTDsgfQorfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IE5vbkFTQ0lJTWFzazw4LCBjaGFyOF90PiB7CiAgICAgc3RhdGljIGlu
bGluZSB1aW50NjRfdCB2YWx1ZSgpIHsgcmV0dXJuIDB4ODA4MDgwODA4MDgwODA4MFVMTDsgfQog
fTsKIAotdGVtcGxhdGU8c2l6ZV90IHZhbHVlU2l6ZSwgc2l6ZV90IGNoYXJhY3RlclNpemU+IHN0
cnVjdCBOb25MYXRpbjFNYXNrOwotdGVtcGxhdGU8PiBzdHJ1Y3QgTm9uTGF0aW4xTWFzazw0LCAy
PiB7Cit0ZW1wbGF0ZTxzaXplX3Qgc2l6ZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RydWN0
IE5vbkxhdGluMU1hc2s7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOb25MYXRpbjFNYXNrPDQsIGNoYXIx
Nl90PiB7CiAgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCB2YWx1ZSgpIHsgcmV0dXJuIDB4RkYw
MEZGMDBVOyB9CiB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgTm9uTGF0aW4xTWFzazw4LCAyPiB7Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBOb25MYXRpbjFNYXNrPDgsIGNoYXIxNl90PiB7CiAgICAgc3RhdGlj
IGlubGluZSB1aW50NjRfdCB2YWx1ZSgpIHsgcmV0dXJuIDB4RkYwMEZGMDBGRjAwRkYwMFVMTDsg
fQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIGlubGluZSBib29sIGNv
bnRhaW5zT25seUFTQ0lJKE1hY2hpbmVXb3JkIHdvcmQpCiB7Ci0gICAgcmV0dXJuICEod29yZCAm
IE5vbkFTQ0lJTWFzazxzaXplb2YoTWFjaGluZVdvcmQpLCBzaXplb2YoQ2hhcmFjdGVyVHlwZSk+
Ojp2YWx1ZSgpKTsKKyAgICByZXR1cm4gISh3b3JkICYgTm9uQVNDSUlNYXNrPHNpemVvZihNYWNo
aW5lV29yZCksIENoYXJhY3RlclR5cGU+Ojp2YWx1ZSgpKTsKIH0KIAogLy8gTm90ZTogVGhpcyBm
dW5jdGlvbiBhc3N1bWUgdGhlIGlucHV0IGlzIGxpa2VseSBhbGwgQVNDSUksIGFuZApAQCAtMTEw
LDcgKzExNiw3IEBAIGlubGluZSBib29sIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdGQ6OnNwYW48
Y29uc3QgQ2hhcmFjdGVyVHlwZT4gc3BhbikKIAogICAgIC8vIFByb2xvZ3VlOiBhbGlnbiB0aGUg
aW5wdXQuCiAgICAgd2hpbGUgKCFzcGFuLmVtcHR5KCkgJiYgIWlzQWxpZ25lZFRvTWFjaGluZVdv
cmQoc3Bhbi5kYXRhKCkpKQotICAgICAgICBhbGxDaGFyQml0cyB8PSBjaGFyMTZfdCB7IFdURjo6
Y29uc3VtZShzcGFuKSB9OworICAgICAgICBhbGxDaGFyQml0cyB8PSBXVEY6OmNvbnN1bWUoc3Bh
bik7CiAKICAgICAvLyBDb21wYXJlIHRoZSB2YWx1ZXMgb2YgQ1BVIHdvcmQgc2l6ZS4KICAgICBz
aXplX3Qgc2l6ZUFmdGVyQWxpZ25lZEVuZCA9IHN0ZDo6dG9fYWRkcmVzcyhzcGFuLmVuZCgpKSAt
IGFsaWduVG9NYWNoaW5lV29yZChzdGQ6OnRvX2FkZHJlc3Moc3Bhbi5lbmQoKSkpOwpAQCAtMTIw
LDkgKzEyNiwxMCBAQCBpbmxpbmUgYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RkOjpzcGFu
PGNvbnN0IENoYXJhY3RlclR5cGU+IHNwYW4pCiAKICAgICAvLyBQcm9jZXNzIHRoZSByZW1haW5p
bmcgYnl0ZXMuCiAgICAgd2hpbGUgKCFzcGFuLmVtcHR5KCkpCi0gICAgICAgIGFsbENoYXJCaXRz
IHw9IGNoYXIxNl90IHsgV1RGOjpjb25zdW1lKHNwYW4pIH07CisgICAgICAgIGFsbENoYXJCaXRz
IHw9IFdURjo6Y29uc3VtZShzcGFuKTsKIAotICAgIHJldHVybiAhKGFsbENoYXJCaXRzICYgTm9u
QVNDSUlNYXNrPHNpemVvZihNYWNoaW5lV29yZCksIHNpemVvZihDaGFyYWN0ZXJUeXBlKT46OnZh
bHVlKCkpOworICAgIE1hY2hpbmVXb3JkIG5vbkFTQ0lJQml0TWFzayA9IE5vbkFTQ0lJTWFzazxz
aXplb2YoTWFjaGluZVdvcmQpLCBDaGFyYWN0ZXJUeXBlPjo6dmFsdWUoKTsKKyAgICByZXR1cm4g
IShhbGxDaGFyQml0cyAmIG5vbkFTQ0lJQml0TWFzayk7CiB9CiAKIC8vIE5vdGU6IFRoaXMgZnVu
Y3Rpb24gYXNzdW1lIHRoZSBpbnB1dCBpcyBsaWtlbHkgYWxsIExhdGluMSwgYW5kCkBAIC0xNDks
NyArMTU2LDggQEAgaW5saW5lIGJvb2wgY2hhcmFjdGVyc0FyZUFsbExhdGluMShzdGQ6OnNwYW48
Y29uc3QgQ2hhcmFjdGVyVHlwZT4gc3BhbikKICAgICAgICAgd2hpbGUgKCFzcGFuLmVtcHR5KCkp
CiAgICAgICAgICAgICBhbGxDaGFyQml0cyB8PSBXVEY6OmNvbnN1bWUoc3Bhbik7CiAKLSAgICAg
ICAgcmV0dXJuICEoYWxsQ2hhckJpdHMgJiBOb25MYXRpbjFNYXNrPHNpemVvZihNYWNoaW5lV29y
ZCksIHNpemVvZihDaGFyYWN0ZXJUeXBlKT46OnZhbHVlKCkpOworICAgICAgICBNYWNoaW5lV29y
ZCBub25MYXRpbjFCaXRNYXNrID0gTm9uTGF0aW4xTWFzazxzaXplb2YoTWFjaGluZVdvcmQpLCBD
aGFyYWN0ZXJUeXBlPjo6dmFsdWUoKTsKKyAgICAgICAgcmV0dXJuICEoYWxsQ2hhckJpdHMgJiBu
b25MYXRpbjFCaXRNYXNrKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5o
CmluZGV4IDkxZmE0OGQyYWVmNC4uMjU1OGYyNGMxMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlM
aXRlcmFsLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdG9yLmRhdGEoKTsgfQogICAgIGNvbnN0ZXhwciBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRvci5lbXB0eSgpID8gbV9jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdG9yLnNpemUoKSAtIDEgOiAwOyB9CiAgICAgY29uc3RleHByIHN0
ZDo6c3Bhbjxjb25zdCBjaGFyPiBzcGFuKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdG9yLmZpcnN0KGxlbmd0aCgpKTsgfQotICAgIHN0ZDo6c3Bhbjxjb25zdCBM
YXRpbjFDaGFyYWN0ZXI+IHNwYW44KCkgY29uc3QgeyByZXR1cm4gYnl0ZUNhc3Q8TGF0aW4xQ2hh
cmFjdGVyPihtX2NoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0b3IuZmlyc3QobGVuZ3RoKCkpKTsg
fQorICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3BhbjgoKSBjb25zdCB7IHJldHVybiBieXRl
Q2FzdDxMQ2hhcj4obV9jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdG9yLmZpcnN0KGxlbmd0aCgp
KSk7IH0KICAgICBzdGQ6OnNwYW48Y29uc3QgY2hhcj4gc3BhbkluY2x1ZGluZ051bGxUZXJtaW5h
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdG9yOyB9CiAg
ICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0b3Iuc2l6ZSgpIDw9IDE7IH0KIApAQCAtMTYyLDkgKzE2Miw5IEBAIGNvbnN0ZXhwciBz
dGQ6OnNwYW48Y29uc3QgY2hhcj4gb3BlcmF0b3IiIl9zcGFuKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCBuCiAgICAgcmV0dXJuIHNwYW47CiB9CiAKLWNvbnN0ZXhwciBzdGQ6OnNwYW48
Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBvcGVyYXRvciIiX3NwYW44KGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCBuKQorY29uc3RleHByIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gb3BlcmF0
b3IiIl9zcGFuOChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbikKIHsKLSAgICBhdXRv
IHNwYW4gPSBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHVuc2FmZU1ha2VTcGFuKGNoYXJhY3Rl
cnMsIG4pKTsKKyAgICBhdXRvIHNwYW4gPSBieXRlQ2FzdDxMQ2hhcj4odW5zYWZlTWFrZVNwYW4o
Y2hhcmFjdGVycywgbikpOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSBzcGFuLnNpemUoKTsgaSA8IHNpemU7ICsraSkKICAgICAgICAgQVNTRVJUX1VO
REVSX0NPTlNURVhQUl9DT05URVhUKGlzQVNDSUkoc3BhbltpXSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9BZGFwdGl2ZVN0cmluZ1NlYXJjaGVyLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0FkYXB0aXZlU3RyaW5nU2VhcmNoZXIuaAppbmRleCBjZTIwMmI4MTA3MzIuLjAzMzlk
NDM3MTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BZGFwdGl2ZVN0cmluZ1Nl
YXJjaGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BZGFwdGl2ZVN0cmluZ1NlYXJjaGVy
LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIC8vIHRvIGNvbXBlbnNhdGUgZm9yIHRo
ZSBhbGdvcml0aG1pYyBvdmVyaGVhZCBjb21wYXJlZCB0byBzaW1wbGUgYnJ1dGUgZm9yY2UuCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgYm1NaW5QYXR0ZXJuTGVuZ3RoID0gNzsKIAotICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBleGNlZWRzT25lQnl0ZShMYXRpbjFDaGFyYWN0ZXIpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGV4Y2VlZHNPbmVCeXRlKExD
aGFyKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBleGNlZWRz
T25lQnl0ZShjaGFyMTZfdCBjKSB7IHJldHVybiBjID4gMHhmZjsgfQogCiBXVEZfQUxMT1dfVU5T
QUZFX0JVRkZFUl9VU0FHRV9CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXgg
Zjg3YTRmNzcyMmViLi5iYjUyYWRhZDAwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbVN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNw
cApAQCAtNjQsMTIgKzY0LDEyIEBAIEFMV0FZU19JTkxJTkUgQXRvbVN0cmluZyBBdG9tU3RyaW5n
Ojpjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3QKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKnRo
aXM7CiBTbG93UGF0aDoKLSAgICAgICAgc3RkOjphcnJheTxMYXRpbjFDaGFyYWN0ZXIsIGxvY2Fs
QnVmZmVyU2l6ZT4gbG9jYWxCdWZmZXI7CisgICAgICAgIHN0ZDo6YXJyYXk8TENoYXIsIGxvY2Fs
QnVmZmVyU2l6ZT4gbG9jYWxCdWZmZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBmYWlsaW5nSW5kZXg7ICsraSkKICAgICAgICAgICAgIGxvY2FsQnVmZmVyW2ldID0gY2hhcmFj
dGVyc1tpXTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZmFpbGluZ0luZGV4OyBpIDwgbGVu
Z3RoOyArK2kpCiAgICAgICAgICAgICBsb2NhbEJ1ZmZlcltpXSA9IHR5cGUgPT0gQ2FzZUNvbnZl
cnRUeXBlOjpMb3dlciA/IHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKSA6IHRvQVNDSUlVcHBl
cihjaGFyYWN0ZXJzW2ldKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFD
aGFyYWN0ZXI+IHsgbG9jYWxCdWZmZXIgfS5maXJzdChsZW5ndGgpOworICAgICAgICByZXR1cm4g
c3RkOjpzcGFuPGNvbnN0IExDaGFyPiB7IGxvY2FsQnVmZmVyIH0uZmlyc3QobGVuZ3RoKTsKICAg
ICB9CiAKICAgICBSZWY8U3RyaW5nSW1wbD4gY29udmVydGVkU3RyaW5nID0gdHlwZSA9PSBDYXNl
Q29udmVydFR5cGU6Okxvd2VyID8gaW1wbC0+Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6IGlt
cGwtPmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CkBAIC0xMTUsMTQgKzExNSwxNCBAQCBBdG9t
U3RyaW5nIEF0b21TdHJpbmc6Om51bWJlcihmbG9hdCBudW1iZXIpCiB7CiAgICAgTnVtYmVyVG9T
dHJpbmdCdWZmZXIgYnVmZmVyOwogICAgIGF1dG8gc3BhbiA9IG51bWJlclRvU3RyaW5nQW5kU2l6
ZShudW1iZXIsIGJ1ZmZlcik7Ci0gICAgcmV0dXJuIEF0b21TdHJpbmcgeyBieXRlQ2FzdDxMYXRp
bjFDaGFyYWN0ZXI+KHNwYW4pIH07CisgICAgcmV0dXJuIEF0b21TdHJpbmcgeyBieXRlQ2FzdDxM
Q2hhcj4oc3BhbikgfTsKIH0KIAogQXRvbVN0cmluZyBBdG9tU3RyaW5nOjpudW1iZXIoZG91Ymxl
IG51bWJlcikKIHsKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CiAgICAgYXV0byBz
cGFuID0gbnVtYmVyVG9TdHJpbmdBbmRTaXplKG51bWJlciwgYnVmZmVyKTsKLSAgICByZXR1cm4g
QXRvbVN0cmluZyB7IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oc3BhbikgfTsKKyAgICByZXR1
cm4gQXRvbVN0cmluZyB7IGJ5dGVDYXN0PExDaGFyPihzcGFuKSB9OwogfQogCiBBdG9tU3RyaW5n
IEF0b21TdHJpbmc6OmZyb21VVEY4SW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IGNoYXI+IGNoYXJh
Y3RlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IGY4ZDg1NjI5MDFiNi4uNTM1NTYz
MTlhMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtMzAsNyArMzAsNyBAQCBjbGFz
cyBBdG9tU3RyaW5nIGZpbmFsIHsKICAgICBXVEZfREVQUkVDQVRFRF9NQUtFX0ZBU1RfQUxMT0NB
VEVEKEF0b21TdHJpbmcpOwogcHVibGljOgogICAgIEF0b21TdHJpbmcoKTsKLSAgICBBdG9tU3Ry
aW5nKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsKKyAgICBBdG9tU3RyaW5nKHN0
ZDo6c3Bhbjxjb25zdCBMQ2hhcj4pOwogICAgIEF0b21TdHJpbmcoc3RkOjpzcGFuPGNvbnN0IGNo
YXIxNl90Pik7CiAKICAgICBBdG9tU3RyaW5nKEF0b21TdHJpbmdJbXBsKik7CkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IHJlbGVhc2VJbXBsKCkg
eyByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxBdG9tU3RyaW5nSW1wbD4obV9zdHJpbmcucmVs
ZWFzZUltcGwoKSk7IH0KIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuaXM4Qml0KCk7IH0KLSAgICBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzcGFu
OCgpIGNvbnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIG1fc3RyaW5nLnNwYW44KCk7IH0KKyAg
ICBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHNwYW44KCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyBy
ZXR1cm4gbV9zdHJpbmcuc3BhbjgoKTsgfQogICAgIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4g
c3BhbjE2KCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gbV9zdHJpbmcuc3BhbjE2KCk7
IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5sZW5ndGgo
KTsgfQogCkBAIC0xNjUsNyArMTY1LDcgQEAgaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJpbmco
KQogewogfQogCi1pbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhzdGQ6OnNwYW48Y29uc3Qg
TGF0aW4xQ2hhcmFjdGVyPiBzdHJpbmcpCitpbmxpbmUgQXRvbVN0cmluZzo6QXRvbVN0cmluZyhz
dGQ6OnNwYW48Y29uc3QgTENoYXI+IHN0cmluZykKICAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJ
bXBsOjphZGQoc3RyaW5nKSkKIHsKIH0KQEAgLTMzMiw3ICszMzIsNyBAQCBBTFdBWVNfSU5MSU5F
IFN0cmluZyBXQVJOX1VOVVNFRF9SRVRVUk4gbWFrZVN0cmluZ0J5UmVwbGFjaW5nQWxsKGNvbnN0
IEF0b21TdHJpbgogdGVtcGxhdGU8PiBzdHJ1Y3QgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvblRy
YWl0PEF0b21TdHJpbmc+IHsKICAgICB1c2luZyBSZXR1cm5UeXBlID0gQXRvbVN0cmluZzsKICAg
ICB1c2luZyBBZGRpdGlvbmFsQXJndW1lbnRUeXBlID0gdm9pZDsKLSAgICBzdGF0aWMgQXRvbVN0
cmluZyBmbHVzaChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCB2
b2lkKikgeyByZXR1cm4gY2hhcmFjdGVyczsgfQorICAgIHN0YXRpYyBBdG9tU3RyaW5nIGZsdXNo
KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gY2hhcmFjdGVycywgdm9pZCopIHsgcmV0dXJuIGNoYXJh
Y3RlcnM7IH0KIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IE1hcmthYmxlVHJhaXRzPEF0b21TdHJp
bmc+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAKaW5kZXggYTIzZmJkZmE5
OGE4Li4zZmE2MTBhZmI1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3Bw
CkBAIC0xMzMsNyArMTMzLDcgQEAgc3RydWN0IEhhc2hlZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRv
ciB7CiAgICAgICAgICAgICByZXR1cm4gVW5pY29kZTo6ZXF1YWwoc3RyaW5nLT5zcGFuMTYoKSwg
Y2hhcmFjdGVycy5jaGFyYWN0ZXJzKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gY2hhcmFj
dGVyc0xhdGluMSA9IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oY2hhcmFjdGVycy5jaGFyYWN0
ZXJzKTsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXJzTGF0aW4xID0gYnl0ZUNhc3Q8TENoYXI+KGNo
YXJhY3RlcnMuY2hhcmFjdGVycyk7CiAgICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6ZXF1YWwoc3RyaW5nLT5zcGFuOCgpLmRhdGEoKSwgY2hhcmFj
dGVyc0xhdGluMSk7CiAgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0cmluZy0+c3BhbjE2KCku
ZGF0YSgpLCBjaGFyYWN0ZXJzTGF0aW4xKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdHJ1Y3QgSGFz
aGVkVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVz
dWx0LmNvZGUgPT0gVW5pY29kZTo6Q29udmVyc2lvblJlc3VsdENvZGU6OlN1Y2Nlc3MpOwogCiAg
ICAgICAgIGlmIChyZXN1bHQuaXNBbGxBU0NJSSkKLSAgICAgICAgICAgIG5ld1N0cmluZyA9IFN0
cmluZ0ltcGw6OmNyZWF0ZShieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNoYXJhY3RlcnMuY2hh
cmFjdGVycykpOworICAgICAgICAgICAgbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlKGJ5
dGVDYXN0PExDaGFyPihjaGFyYWN0ZXJzLmNoYXJhY3RlcnMpKTsKIAogICAgICAgICBhdXRvKiBw
b2ludGVyID0gJm5ld1N0cmluZy5sZWFrUmVmKCk7CiAgICAgICAgIHBvaW50ZXItPnNldEhhc2go
aGFzaCk7CkBAIC0yNDEsNyArMjQxLDcgQEAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBBdG9tU3Ry
aW5nSW1wbDo6YWRkKFN0cmluZ0ltcGwqIGJhc2VTdHJpbmcsIHVuc2lnbmVkIHN0YXIKICAgICBy
ZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxTdWJzdHJpbmdMb2NhdGlvbiwgU3Vic3RyaW5nVHJhbnNs
YXRvcjE2PihidWZmZXIpOwogfQogICAgIAotdXNpbmcgTENoYXJCdWZmZXIgPSBIYXNoVHJhbnNs
YXRvckNoYXJCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPjsKK3VzaW5nIExDaGFyQnVmZmVyID0gSGFz
aFRyYW5zbGF0b3JDaGFyQnVmZmVyPExDaGFyPjsKIHN0cnVjdCBMQ2hhckJ1ZmZlclRyYW5zbGF0
b3IgewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExDaGFyQnVmZmVyJiBidWYpCiAg
ICAgewpAQCAtMjg0LDcgKzI4NCw3IEBAIHN0cnVjdCBCdWZmZXJGcm9tU3RhdGljRGF0YVRyYW5z
bGF0b3IgewogICAgIH0KIH07CiAKLVJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gQXRvbVN0cmluZ0lt
cGw6OmFkZChIYXNoVHJhbnNsYXRvckNoYXJCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYgYnVmZmVy
KQorUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5nSW1wbDo6YWRkKEhhc2hUcmFuc2xh
dG9yQ2hhckJ1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlci5jaGFyYWN0
ZXJzLmRhdGEoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yOTUsNyArMjk1LDcgQEAg
UmVmUHRyPEF0b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5nSW1wbDo6YWRkKEhhc2hUcmFuc2xhdG9y
Q2hhckJ1ZmZlcjxMYXRpbjFDaGFyYWMKICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxMQ2hh
ckJ1ZmZlciwgTENoYXJCdWZmZXJUcmFuc2xhdG9yPihidWZmZXIpOwogfQogCi1SZWZQdHI8QXRv
bVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGQoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNo
YXJhY3Rlcj4gY2hhcmFjdGVycykKK1JlZlB0cjxBdG9tU3RyaW5nSW1wbD4gQXRvbVN0cmluZ0lt
cGw6OmFkZChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiB7CiAgICAgaWYgKCFj
aGFyYWN0ZXJzLmRhdGEoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDcsMTMgKzMw
NywxMyBAQCBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGQoc3RkOjpz
cGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcgogICAgIHJldHVybiBhZGRUb1N0cmluZ1Rh
YmxlPExDaGFyQnVmZmVyLCBMQ2hhckJ1ZmZlclRyYW5zbGF0b3I+KGJ1ZmZlcik7CiB9CiAKLVJl
ZjxBdG9tU3RyaW5nSW1wbD4gQXRvbVN0cmluZ0ltcGw6OmFkZExpdGVyYWwoc3RkOjpzcGFuPGNv
bnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVycykKK1JlZjxBdG9tU3RyaW5nSW1wbD4gQXRv
bVN0cmluZ0ltcGw6OmFkZExpdGVyYWwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJz
KQogewogICAgIEFTU0VSVChjaGFyYWN0ZXJzLmRhdGEoKSk7CiAgICAgQVNTRVJUKCFjaGFyYWN0
ZXJzLmVtcHR5KCkpOwogCiAgICAgTENoYXJCdWZmZXIgYnVmZmVyIHsgY2hhcmFjdGVycyB9Owot
ICAgIHJldHVybiBhZGRUb1N0cmluZ1RhYmxlPExDaGFyQnVmZmVyLCBCdWZmZXJGcm9tU3RhdGlj
RGF0YVRyYW5zbGF0b3I8TGF0aW4xQ2hhcmFjdGVyPj4oYnVmZmVyKTsKKyAgICByZXR1cm4gYWRk
VG9TdHJpbmdUYWJsZTxMQ2hhckJ1ZmZlciwgQnVmZmVyRnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9y
PExDaGFyPj4oYnVmZmVyKTsKIH0KIAogc3RhdGljIFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkU3lt
Ym9sKEF0b21TdHJpbmdUYWJsZUxvY2tlciYgbG9ja2VyLCBTdHJpbmdUYWJsZUltcGwmIGF0b21T
dHJpbmdUYWJsZSwgU3RyaW5nSW1wbCYgYmFzZSkKQEAgLTM0MCw3ICszNDAsNyBAQCBzdGF0aWMg
UmVmPEF0b21TdHJpbmdJbXBsPiBhZGRTdGF0aWMoQXRvbVN0cmluZ1RhYmxlTG9ja2VyJiBsb2Nr
ZXIsIFN0cmluZ1RhYmxlSQogCiAgICAgaWYgKGJhc2UuaXM4Qml0KCkpIHsKICAgICAgICAgTENo
YXJCdWZmZXIgYnVmZmVyIHsgYmFzZS5zcGFuOCgpLCBiYXNlLmhhc2goKSB9OwotICAgICAgICBy
ZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxMQ2hhckJ1ZmZlciwgQnVmZmVyRnJvbVN0YXRpY0RhdGFU
cmFuc2xhdG9yPExhdGluMUNoYXJhY3Rlcj4+KGxvY2tlciwgYXRvbVN0cmluZ1RhYmxlLCBidWZm
ZXIpOworICAgICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxMQ2hhckJ1ZmZlciwgQnVmZmVy
RnJvbVN0YXRpY0RhdGFUcmFuc2xhdG9yPExDaGFyPj4obG9ja2VyLCBhdG9tU3RyaW5nVGFibGUs
IGJ1ZmZlcik7CiAgICAgfQogICAgIFVDaGFyQnVmZmVyIGJ1ZmZlciB7IGJhc2Uuc3BhbjE2KCks
IGJhc2UuaGFzaCgpIH07CiAgICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8VUNoYXJCdWZmZXIs
IEJ1ZmZlckZyb21TdGF0aWNEYXRhVHJhbnNsYXRvcjxjaGFyMTZfdD4+KGxvY2tlciwgYXRvbVN0
cmluZ1RhYmxlLCBidWZmZXIpOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIFJlZlB0cjxBdG9tU3RyaW5n
SW1wbD4gQXRvbVN0cmluZ0ltcGw6OmFkZChzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4gY2hhcmFj
dGVycykKICAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxIYXNoZWRVVEY4Q2hhcmFjdGVycywg
SGFzaGVkVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yPihidWZmZXIpOwogfQogCi1SZWZQdHI8QXRv
bVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjpsb29rVXAoc3RkOjpzcGFuPGNvbnN0IExhdGlu
MUNoYXJhY3Rlcj4gY2hhcmFjdGVycykKK1JlZlB0cjxBdG9tU3RyaW5nSW1wbD4gQXRvbVN0cmlu
Z0ltcGw6Omxvb2tVcChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiB7CiAgICAg
QXRvbVN0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKICAgICBhdXRvJiB0YWJsZSA9IHN0cmluZ1Rh
YmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgKaW5kZXggZDk0MzE3YTc0MWQ0
Li5kNzE4OTYyY2Y5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Z0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgKQEAgLTI5
LDE3ICsyOSwxNyBAQCBjbGFzcyBBdG9tU3RyaW5nVGFibGU7CiAKIGNsYXNzIEF0b21TdHJpbmdJ
bXBsIGZpbmFsIDogcHVibGljIFVuaXF1ZWRTdHJpbmdJbXBsIHsKIHB1YmxpYzoKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gbG9va1VwKHN0ZDo6
c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gbG9va1VwKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4p
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBs
b29rVXAoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7CiAgICAgc3RhdGljIFJlZlB0cjxBdG9t
U3RyaW5nSW1wbD4gbG9va1VwKFN0cmluZ0ltcGwqKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbW92
ZShBdG9tU3RyaW5nSW1wbCopOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXRvbVN0cmluZ0ltcGw+IGFkZChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGFk
ZChzdGQ6OnNwYW48Y29uc3QgTENoYXI+KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4pOwog
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRkKHN0ZDo6
c3Bhbjxjb25zdCBjaGFyPiBjaGFyYWN0ZXJzKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhZGQoSGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVy
PExhdGluMUNoYXJhY3Rlcj4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0
cjxBdG9tU3RyaW5nSW1wbD4gYWRkKEhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcjxMQ2hhcj4mKTsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gYWRk
KEhhc2hUcmFuc2xhdG9yQ2hhckJ1ZmZlcjxjaGFyMTZfdD4mKTsKIAogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0
ZToKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkKFN0
cmluZ0ltcGwmKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8QXRvbVN0cmluZ0ltcGw+
IGFkZChSZWY8U3RyaW5nSW1wbD4mJik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8QXRvbVN0cmluZ0ltcGw+IGFkZExpdGVyYWwoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJh
Y3Rlcj4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEF0b21TdHJpbmdJbXBs
PiBhZGRMaXRlcmFsKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4pOwogCiAgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgUmVmPEF0b21TdHJpbmdJbXBsPiBhZGQoQXRvbVN0cmluZ1RhYmxlJiwgU3RyaW5n
SW1wbCYpOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+
IEF0b21TdHJpbmdJbXBsOjpsb29rVXAoU3RyaW5nSW1wbCogc3RyaW5nKQogCiBBTFdBWVNfSU5M
SU5FIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gQXRvbVN0cmluZ0ltcGw6OmFkZChzdGQ6OnNwYW48
Y29uc3QgY2hhcj4gY2hhcmFjdGVycykKIHsKLSAgICByZXR1cm4gYWRkKGJ5dGVDYXN0PExhdGlu
MUNoYXJhY3Rlcj4oY2hhcmFjdGVycykpOworICAgIHJldHVybiBhZGQoYnl0ZUNhc3Q8TENoYXI+
KGNoYXJhY3RlcnMpKTsKIH0KIAogQUxXQVlTX0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+
IEF0b21TdHJpbmdJbXBsOjphZGQoU3RyaW5nSW1wbCogc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQu
Y3BwCmluZGV4IDRjYzkyZmU4NmFhNy4uYmQ0NDg5Zjc2YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQu
Y3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBiYXNlNjRFbmNvZGUoc3RkOjpzcGFuPGNvbnN0
IHN0ZDo6Ynl0ZT4gaW5wdXQsIHN0ZDo6c3BhbjxjaGFyMTZfdD4gZGVzdGluYXQKICAgICBiYXNl
NjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgZGVzdGluYXRpb24sIG9wdGlvbnMpOwogfQogCi12b2lk
IGJhc2U2NEVuY29kZShzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCwgc3RkOjpzcGFu
PExhdGluMUNoYXJhY3Rlcj4gZGVzdGluYXRpb24sIE9wdGlvblNldDxCYXNlNjRFbmNvZGVPcHRp
b24+IG9wdGlvbnMpCit2b2lkIGJhc2U2NEVuY29kZShzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRl
PiBpbnB1dCwgc3RkOjpzcGFuPExDaGFyPiBkZXN0aW5hdGlvbiwgT3B0aW9uU2V0PEJhc2U2NEVu
Y29kZU9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBpZiAoIWRlc3RpbmF0aW9uLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjA1LDE3ICsyMDUsMTcgQEAgdW5zaWduZWQgY2FsY3VsYXRlQmFz
ZTY0RW5jb2RlZFNpemUodW5zaWduZWQgaW5wdXRMZW5ndGgsIE9wdGlvblNldDxCYXNlNjRFbmNv
ZGUKICAgICByZXR1cm4gc2ltZHV0Zjo6YmFzZTY0X2xlbmd0aF9mcm9tX2JpbmFyeShpbnB1dExl
bmd0aCwgdG9TSU1EVVRGRW5jb2RlT3B0aW9ucyhvcHRpb25zKSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFZlY3RvclR5cGUgPSBWZWN0b3I8dWludDhfdCwgMCwgQ3Jhc2hP
bk92ZXJmbG93LCAxNiwgVmVjdG9yQnVmZmVyTWFsbG9jPj4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvclR5cGU+IGJhc2U2NERlY29kZUludGVybmFsKHN0ZDo6c3Bhbjxjb25zdCBUPiBpbnB1
dERhdGFCdWZmZXIsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb24+IG9wdGlvbnMpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNYWxsb2MgPSBWZWN0b3JCdWZmZXJNYWxsb2M+Citz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdCwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAx
NiwgTWFsbG9jPj4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IFQ+IGlucHV0
RGF0YUJ1ZmZlciwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbj4gb3B0aW9ucykKIHsKICAg
ICBpZiAoIWlucHV0RGF0YUJ1ZmZlci5zaXplKCkpCi0gICAgICAgIHJldHVybiBWZWN0b3JUeXBl
IHsgfTsKKyAgICAgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90LCAwLCBDcmFzaE9uT3ZlcmZsb3cs
IDE2LCBNYWxsb2M+IHsgfTsKIAogICAgIGF1dG8gZGVjb2RlTWFwID0gb3B0aW9ucy5jb250YWlu
cyhCYXNlNjREZWNvZGVPcHRpb246OlVSTCkgPyBiYXNlNjRVUkxEZWNNYXAgOiBiYXNlNjREZWNN
YXA7CiAgICAgYXV0byB2YWxpZGF0ZVBhZGRpbmcgPSBvcHRpb25zLmNvbnRhaW5zKEJhc2U2NERl
Y29kZU9wdGlvbjo6VmFsaWRhdGVQYWRkaW5nKTsKICAgICBhdXRvIGlnbm9yZVdoaXRlc3BhY2Ug
PSBvcHRpb25zLmNvbnRhaW5zKEJhc2U2NERlY29kZU9wdGlvbjo6SWdub3JlV2hpdGVzcGFjZSk7
CiAKLSAgICBWZWN0b3JUeXBlIGRlc3RpbmF0aW9uKGlucHV0RGF0YUJ1ZmZlci5zaXplKCkpOwor
ICAgIFZlY3Rvcjx1aW50OF90LCAwLCBDcmFzaE9uT3ZlcmZsb3csIDE2LCBNYWxsb2M+IGRlc3Rp
bmF0aW9uKGlucHV0RGF0YUJ1ZmZlci5zaXplKCkpOwogCiAgICAgdW5zaWduZWQgZXF1YWxzU2ln
bkNvdW50ID0gMDsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbkxlbmd0aCA9IDA7CkBAIC0yNDYs
NyArMjQ2LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yVHlwZT4gYmFzZTY0RGVjb2Rl
SW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IFQ+IGlucHV0RGEKICAgICBpZiAoIWRlc3RpbmF0aW9u
TGVuZ3RoKSB7CiAgICAgICAgIGlmIChlcXVhbHNTaWduQ291bnQpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gVmVjdG9yVHlwZSB7IH07CisgICAgICAg
IHJldHVybiBWZWN0b3I8dWludDhfdCwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAxNiwgTWFsbG9jPiB7
IH07CiAgICAgfQogCiAgICAgLy8gVGhlIHNob3VsZCBiZSBubyBwYWRkaW5nIGlmIGxlbmd0aCBp
cyBhIG11bHRpcGxlIG9mIDQuCkBAIC0zMDIsMTMgKzMwMiwxNSBAQCBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQsIE9wdGlvblNldDxC
YXNlNjREZQogCiBTdHJpbmcgYmFzZTY0RGVjb2RlVG9TdHJpbmcoU3RyaW5nVmlldyBpbnB1dCwg
T3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbj4gb3B0aW9ucykKIHsKLSAgICB1c2luZyBWZWN0
b3JUeXBlID0gVmVjdG9yPExhdGluMUNoYXJhY3RlciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAxNiwg
U3RyaW5nSW1wbE1hbGxvYz47Ci0gICAgYXV0byByZXN1bHQgPSBpbnB1dC5pczhCaXQoKQotICAg
ICAgICA/IGJhc2U2NERlY29kZUludGVybmFsPExhdGluMUNoYXJhY3RlciwgVmVjdG9yVHlwZT4o
aW5wdXQuc3BhbjgoKSwgb3B0aW9ucykKLSAgICAgICAgOiBiYXNlNjREZWNvZGVJbnRlcm5hbDxj
aGFyMTZfdCwgVmVjdG9yVHlwZT4oaW5wdXQuc3BhbjE2KCksIG9wdGlvbnMpOwotICAgIGlmICgh
cmVzdWx0KQotICAgICAgICByZXR1cm4gbnVsbFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmc6
OmFkb3B0KFdURk1vdmUoKnJlc3VsdCkpOworICAgIGF1dG8gdG9TdHJpbmcgPSBbJl0gKGF1dG8g
b3B0aW9uYWxCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFvcHRpb25hbEJ1ZmZlcikKKyAgICAgICAg
ICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdU
Rk1vdmUoKm9wdGlvbmFsQnVmZmVyKSk7CisgICAgfTsKKworICAgIGlmIChpbnB1dC5pczhCaXQo
KSkKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKGJhc2U2NERlY29kZUludGVybmFsPExDaGFyLCBT
dHJpbmdJbXBsTWFsbG9jPihpbnB1dC5zcGFuOCgpLCBvcHRpb25zKSk7CisgICAgcmV0dXJuIHRv
U3RyaW5nKGJhc2U2NERlY29kZUludGVybmFsPGNoYXIxNl90LCBTdHJpbmdJbXBsTWFsbG9jPihp
bnB1dC5zcGFuMTYoKSwgb3B0aW9ucykpOwogfQogCiBzdGF0aWMgaW5saW5lIHNpbWR1dGY6OmJh
c2U2NF9vcHRpb25zIHRvU0lNRFVURkRlY29kZU9wdGlvbnMoQWxwaGFiZXQgYWxwaGFiZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9CYXNlNjQuaAppbmRleCBhYjI1ZjNkMzY2NTIuLjBhNTY1MjRlZDZmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0Jhc2U2NC5oCkBAIC01OCw3ICs1OCw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBj
YWxjdWxhdGVCYXNlNjRFbmNvZGVkU2l6ZSh1bnNpZ25lZCBpbnB1dExlbmd0aCwgT3B0CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQmFzZTY0T3JCYXNlNjRVUkxDaGFy
YWN0ZXIoQ2hhcmFjdGVyVHlwZSk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NEVu
Y29kZShzdGQ6OnNwYW48Y29uc3Qgc3RkOjpieXRlPiwgc3RkOjpzcGFuPGNoYXIxNl90PiwgT3B0
aW9uU2V0PEJhc2U2NEVuY29kZU9wdGlvbj4gPSB7IH0pOwotV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgYmFzZTY0RW5jb2RlKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5dGU+LCBzdGQ6OnNwYW48TGF0
aW4xQ2hhcmFjdGVyPiwgT3B0aW9uU2V0PEJhc2U2NEVuY29kZU9wdGlvbj4gPSB7IH0pOworV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYmFzZTY0RW5jb2RlKHN0ZDo6c3Bhbjxjb25zdCBzdGQ6OmJ5
dGU+LCBzdGQ6OnNwYW48TENoYXI+LCBPcHRpb25TZXQ8QmFzZTY0RW5jb2RlT3B0aW9uPiA9IHsg
fSk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3Ioc3RkOjpzcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4sIE9wdGlvblNldDxCYXNlNjRFbmNvZGVP
cHRpb24+ID0geyB9KTsKIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4sIE9wdGlvblNldDxCYXNlNjRFbmNvZGVPcHRpb24+ID0geyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCmluZGV4IGI4YjU2ZjZjOTU0MC4uMWYwYzIwZWYxODcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChhLmxlbmd0aCgpICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gZXF1YWwoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihhLnNw
YW4oKSkuZGF0YSgpLCBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGIuc3BhbigpKSk7CisgICAg
cmV0dXJuIGVxdWFsKGJ5dGVDYXN0PExDaGFyPihhLnNwYW4oKSkuZGF0YSgpLCBieXRlQ2FzdDxM
Q2hhcj4oYi5zcGFuKCkpKTsKIH0KIAogdW5zaWduZWQgQ1N0cmluZzo6aGFzaCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQ1N0cmluZy5oCmluZGV4IDY3N2M4NmFhZTAxNS4uZTU3NzkxYjllZjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0NTdHJpbmcuaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcoQVNDSUlMaXRlcmFsKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0
cmluZyhjb25zdCBjaGFyKik7IC8vIEFueSBlbmNvZGluZwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBDU3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBjaGFyPik7IC8vIEFueSBlbmNvZGluZwotICAgIENT
dHJpbmcoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pOyAvLyBMYXRpbjEKLSAgICBD
U3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBjaGFyOF90PiBjaGFyYWN0ZXJzKSA6IENTdHJpbmcoYnl0
ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjaGFyYWN0ZXJzKSkgeyB9IC8vIFVURi04CisgICAgQ1N0
cmluZyhzdGQ6OnNwYW48Y29uc3QgTENoYXI+KTsgLy8gTGF0aW4xCisgICAgQ1N0cmluZyhzdGQ6
OnNwYW48Y29uc3QgY2hhcjhfdD4gY2hhcmFjdGVycykgOiBDU3RyaW5nKGJ5dGVDYXN0PExDaGFy
PihjaGFyYWN0ZXJzKSkgeyB9IC8vIFVURi04CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBi
dWZmZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBzdGQ6OnNwYW48Y2hh
cj4mIGNoYXJhY3RlckJ1ZmZlcik7CiAgICAgQ1N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKSA6IG1fYnVmZmVyKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CkBAIC0xMjIsNyArMTIy
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8Q1N0cmluZz4gOiBDU3RyaW5nSGFz
aCB7IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IEhhc2hUcmFpdHM7CiB0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPENTdHJpbmc+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENTdHJp
bmc+IHsgfTsKIAotaW5saW5lIENTdHJpbmc6OkNTdHJpbmcoc3RkOjpzcGFuPGNvbnN0IExhdGlu
MUNoYXJhY3Rlcj4gYnl0ZXMpCitpbmxpbmUgQ1N0cmluZzo6Q1N0cmluZyhzdGQ6OnNwYW48Y29u
c3QgTENoYXI+IGJ5dGVzKQogICAgIDogQ1N0cmluZyhieXRlQ2FzdDxjaGFyPihieXRlcykpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NvZGVQb2ludEl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NvZGVQb2ludEl0ZXJhdG9yLmgKaW5kZXggMjg1MjdkMzU0
NzM4Li5jZDBkYjU3NzEyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ29kZVBv
aW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NvZGVQb2ludEl0ZXJhdG9y
LmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9MYXRpbjFDaGFyYWN0
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Bh
cnNpbmdVdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC03OSwxNCArNzksMTQgQEAg
cHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPD4KLUFMV0FZU19JTkxJTkUgY2hhcjMyX3QgQ29kZVBv
aW50SXRlcmF0b3I8TGF0aW4xQ2hhcmFjdGVyPjo6b3BlcmF0b3IqKCkgY29uc3QKK0FMV0FZU19J
TkxJTkUgY2hhcjMyX3QgQ29kZVBvaW50SXRlcmF0b3I8TENoYXI+OjpvcGVyYXRvciooKSBjb25z
dAogewogICAgIEFTU0VSVCghYXRFbmQoKSk7CiAgICAgcmV0dXJuIG1fZGF0YS5mcm9udCgpOwog
fQogCiB0ZW1wbGF0ZTw+Ci1BTFdBWVNfSU5MSU5FIGF1dG8gQ29kZVBvaW50SXRlcmF0b3I8TGF0
aW4xQ2hhcmFjdGVyPjo6b3BlcmF0b3IrKygpIC0+IENvZGVQb2ludEl0ZXJhdG9yJgorQUxXQVlT
X0lOTElORSBhdXRvIENvZGVQb2ludEl0ZXJhdG9yPExDaGFyPjo6b3BlcmF0b3IrKygpIC0+IENv
ZGVQb2ludEl0ZXJhdG9yJgogewogICAgIHNraXAobV9kYXRhLCAxKTsKICAgICByZXR1cm4gKnRo
aXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0V4dGVybmFsU3RyaW5nSW1wbC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0V4dGVybmFsU3RyaW5nSW1wbC5jcHAKaW5kZXggZWU3
OGExYWQwYTUxLi4xMmY0NzNiMjZiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
RXh0ZXJuYWxTdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0V4dGVybmFs
U3RyaW5nSW1wbC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLVdU
Rl9FWFBPUlRfUFJJVkFURSBSZWY8RXh0ZXJuYWxTdHJpbmdJbXBsPiBFeHRlcm5hbFN0cmluZ0lt
cGw6OmNyZWF0ZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCBF
eHRlcm5hbFN0cmluZ0ltcGxGcmVlRnVuY3Rpb24mJiBmcmVlKQorV1RGX0VYUE9SVF9QUklWQVRF
IFJlZjxFeHRlcm5hbFN0cmluZ0ltcGw+IEV4dGVybmFsU3RyaW5nSW1wbDo6Y3JlYXRlKHN0ZDo6
c3Bhbjxjb25zdCBMQ2hhcj4gY2hhcmFjdGVycywgRXh0ZXJuYWxTdHJpbmdJbXBsRnJlZUZ1bmN0
aW9uJiYgZnJlZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFeHRlcm5hbFN0cmluZ0lt
cGwoY2hhcmFjdGVycywgV1RGTW92ZShmcmVlKSkpOwogfQpAQCAtMzgsNyArMzgsNyBAQCBXVEZf
RVhQT1JUX1BSSVZBVEUgUmVmPEV4dGVybmFsU3RyaW5nSW1wbD4gRXh0ZXJuYWxTdHJpbmdJbXBs
OjpjcmVhdGUoc3RkOjpzcGFuPAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEV4dGVybmFsU3Ry
aW5nSW1wbChjaGFyYWN0ZXJzLCBXVEZNb3ZlKGZyZWUpKSk7CiB9CiAKLUV4dGVybmFsU3RyaW5n
SW1wbDo6RXh0ZXJuYWxTdHJpbmdJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+
IGNoYXJhY3RlcnMsIEV4dGVybmFsU3RyaW5nSW1wbEZyZWVGdW5jdGlvbiYmIGZyZWUpCitFeHRl
cm5hbFN0cmluZ0ltcGw6OkV4dGVybmFsU3RyaW5nSW1wbChzdGQ6OnNwYW48Y29uc3QgTENoYXI+
IGNoYXJhY3RlcnMsIEV4dGVybmFsU3RyaW5nSW1wbEZyZWVGdW5jdGlvbiYmIGZyZWUpCiAgICAg
OiBTdHJpbmdJbXBsKGNoYXJhY3RlcnMsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nKQogICAgICwg
bV9mcmVlKFdURk1vdmUoZnJlZSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0V4dGVybmFsU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9FeHRlcm5hbFN0cmlu
Z0ltcGwuaAppbmRleCA4NGIxN2I1ODNkZGMuLmEyYzI3YWE0ZWNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9FeHRlcm5hbFN0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0V4dGVybmFsU3RyaW5nSW1wbC5oCkBAIC0zNiwxMyArMzYsMTMgQEAgdXNpbmcgRXh0
ZXJuYWxTdHJpbmdJbXBsRnJlZUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZChFeHRlcm5hbFN0cmlu
Z0ltcGwqLCB2b2lkKiwKIAogY2xhc3MgRXh0ZXJuYWxTdHJpbmdJbXBsIGZpbmFsIDogcHVibGlj
IFN0cmluZ0ltcGwgewogcHVibGljOgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEV4dGVybmFsU3RyaW5nSW1wbD4gY3JlYXRlKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0
ZXI+IGNoYXJhY3RlcnMsIEV4dGVybmFsU3RyaW5nSW1wbEZyZWVGdW5jdGlvbiYmKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxFeHRlcm5hbFN0cmluZ0ltcGw+IGNyZWF0ZShz
dGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMsIEV4dGVybmFsU3RyaW5nSW1wbEZyZWVG
dW5jdGlvbiYmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxFeHRlcm5hbFN0
cmluZ0ltcGw+IGNyZWF0ZShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGNoYXJhY3RlcnMsIEV4
dGVybmFsU3RyaW5nSW1wbEZyZWVGdW5jdGlvbiYmKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgU3RyaW5nSW1wbDsKIAotICAgIEV4dGVybmFsU3RyaW5nSW1wbChzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCBFeHRlcm5hbFN0cmluZ0ltcGxGcmVlRnVu
Y3Rpb24mJik7CisgICAgRXh0ZXJuYWxTdHJpbmdJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4g
Y2hhcmFjdGVycywgRXh0ZXJuYWxTdHJpbmdJbXBsRnJlZUZ1bmN0aW9uJiYpOwogICAgIEV4dGVy
bmFsU3RyaW5nSW1wbChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGNoYXJhY3RlcnMsIEV4dGVy
bmFsU3RyaW5nSW1wbEZyZWVGdW5jdGlvbiYmKTsKIAogICAgIGlubGluZSB2b2lkIGZyZWVFeHRl
cm5hbEJ1ZmZlcih2b2lkKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlclNpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaAppbmRleCBjMDk1Mzg4
ZWNhYjcuLjRiMTUxMmJkZmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0xhdGluMUNoYXJhY3Rlci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zOSwxMCArMzks
MTAgQEAgdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
VHJhaXQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBl
LCBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIgTnVtYmVyVHlwZSwgdHlwZW5hbWUgQWRkaXRpb25h
bEFyZ3VtZW50VHlwZT4KIHN0YXRpYyB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
VHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdJbXBsKFVuc2lnbmVkSW50ZWdlclR5
cGUgbnVtYmVyLCBBZGRpdGlvbmFsQXJndW1lbnRUeXBlIGFkZGl0aW9uYWxBcmd1bWVudCkKIHsK
LSAgICBzdGQ6OmFycmF5PExhdGluMUNoYXJhY3Rlciwgc2l6ZW9mKFVuc2lnbmVkSW50ZWdlclR5
cGUpICogMyArIDE+IGJ1ZmZlcjsKKyAgICBzdGQ6OmFycmF5PExDaGFyLCBzaXplb2YoVW5zaWdu
ZWRJbnRlZ2VyVHlwZSkgKiAzICsgMT4gYnVmZmVyOwogICAgIGF1dG8gaW5kZXggPSBidWZmZXIu
c2l6ZSgpOwogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyWy0taW5kZXhdID0gc3RhdGljX2Nhc3Q8
Y2hhcj4oKG51bWJlciAlIDEwKSArICcwJyk7CisgICAgICAgIGJ1ZmZlclstLWluZGV4XSA9IHN0
YXRpY19jYXN0PExDaGFyPigobnVtYmVyICUgMTApICsgJzAnKTsKICAgICAgICAgbnVtYmVyIC89
IDEwOwogICAgIH0gd2hpbGUgKG51bWJlcik7CiAKQEAgLTcwLDEwICs3MCwxMCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlLCBQ
b3NpdGl2ZU9yTmVnYXRpdgogc3RhdGljIHZvaWQgd3JpdGVJbnRlZ2VyVG9CdWZmZXJJbXBsKFVu
c2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyLCBzdGQ6OnNwYW48Q2hhcmFjdGVyVHlwZT4gZGVzdGlu
YXRpb24pCiB7CiAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19zYW1lX3Y8Ym9vbCwgc3RkOjpy
ZW1vdmVfY3ZfdDxVbnNpZ25lZEludGVnZXJUeXBlPj4sICInYm9vbCcgbm90IHN1cHBvcnRlZCIp
OwotICAgIHN0ZDo6YXJyYXk8TGF0aW4xQ2hhcmFjdGVyLCBzaXplb2YoVW5zaWduZWRJbnRlZ2Vy
VHlwZSkgKiAzICsgMT4gYnVmZmVyOworICAgIHN0ZDo6YXJyYXk8TENoYXIsIHNpemVvZihVbnNp
Z25lZEludGVnZXJUeXBlKSAqIDMgKyAxPiBidWZmZXI7CiAgICAgYXV0byBpbmRleCA9IGJ1ZmZl
ci5zaXplKCk7CiAgICAgZG8gewotICAgICAgICBidWZmZXJbLS1pbmRleF0gPSBzdGF0aWNfY2Fz
dDxjaGFyPigobnVtYmVyICUgMTApICsgJzAnKTsKKyAgICAgICAgYnVmZmVyWy0taW5kZXhdID0g
c3RhdGljX2Nhc3Q8TENoYXI+KChudW1iZXIgJSAxMCkgKyAnMCcpOwogICAgICAgICBudW1iZXIg
Lz0gMTA7CiAgICAgfSB3aGlsZSAobnVtYmVyKTsKIApAQCAtMTMxLDEwICsxMzEsMTAgQEAgY29u
c3RleHByIHVuc2lnbmVkIGxlbmd0aE9mSW50ZWdlckFzU3RyaW5nKEludGVnZXJUeXBlIGludGVn
ZXIpCiB9CiAKIHRlbXBsYXRlPHNpemVfdCBOPgotc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb25UcmFpdDxWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCBOPj4gewotICAgIHVzaW5nIFJldHVy
blR5cGUgPSBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCBOPjsKK3N0cnVjdCBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uVHJhaXQ8VmVjdG9yPExDaGFyLCBOPj4geworICAgIHVzaW5nIFJldHVyblR5
cGUgPSBWZWN0b3I8TENoYXIsIE4+OwogICAgIHVzaW5nIEFkZGl0aW9uYWxBcmd1bWVudFR5cGUg
PSB2b2lkOwotICAgIHN0YXRpYyBSZXR1cm5UeXBlIGZsdXNoKHN0ZDo6c3Bhbjxjb25zdCBMYXRp
bjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMsIHZvaWQqKSB7IHJldHVybiBjaGFyYWN0ZXJzOyB9Cisg
ICAgc3RhdGljIFJldHVyblR5cGUgZmx1c2goc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0
ZXJzLCB2b2lkKikgeyByZXR1cm4gY2hhcmFjdGVyczsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xDaGFyLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0xDaGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li42ZGFjYmQwOTk0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xD
aGFyLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworLy8gQSB0eXBlIHRvIGhvbGQgYSBzaW5n
bGUgTGF0aW4tMSBjaGFyYWN0ZXIuCisvLyBUaGlzIHR5cGUgY29tcGxlbWVudHMgdGhlIGNoYXIx
Nl90IHR5cGUgdGhhdCB3ZSBnZXQgZnJvbSBDKysuCisvLyBUbyBwYXJhbGxlbCB0aGF0IHR5cGUs
IHdlIHB1dCB0aGlzIG9uZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KK3R5cGVkZWYgdW5zaWdu
ZWQgY2hhciBMQ2hhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTGF0aW4xQ2hh
cmFjdGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xhdGluMUNoYXJhY3Rlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmFkMzk2MGZkYmMuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0xhdGluMUNoYXJhY3Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICoKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
LQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIFNpbmdsZSBMYXRpbi0xIGNoYXJhY3Rlci4gQ29tcGxl
bWVudHMgY2hhcjhfdCBmb3IgVVRGLTgsIGNoYXIxNl90IGZvciBVVEYtMTYsIGNoYXIzMl90IGZv
ciBVVEYtMzIuCi1zdHJ1Y3QgTGF0aW4xQ2hhcmFjdGVyIHsKLSAgICB1aW50OF90IHZhbHVlOwot
Ci0gICAgTGF0aW4xQ2hhcmFjdGVyKCkgPSBkZWZhdWx0OwotICAgIGNvbnN0ZXhwciBMYXRpbjFD
aGFyYWN0ZXIoc3RkOjppbnRlZ3JhbCBhdXRvIHZhbHVlKSA6IHZhbHVlIHsgc3RhdGljX2Nhc3Q8
dWludDhfdD4odmFsdWUpIH0geyB9Ci0gICAgY29uc3RleHByIG9wZXJhdG9yIHN0ZDo6aW50ZWdy
YWwgYXV0bygpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9Ci0gICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIXZhbHVlOyB9Ci0gICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMYXRpbjFDaGFyYWN0ZXImKSBjb25zdCA9IGRlZmF1bHQ7Ci0gICAgY29u
c3RleHByIGF1dG8gb3BlcmF0b3I8PT4oY29uc3QgTGF0aW4xQ2hhcmFjdGVyJikgY29uc3QgPSBk
ZWZhdWx0OwotfTsKLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShMYXRpbjFDaGFyYWN0ZXIg
YSwgc3RkOjppbnRlZ3JhbCBhdXRvIGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUgPT0gYjsKLX0K
LQotY29uc3RleHByIGF1dG8gb3BlcmF0b3I8PT4oTGF0aW4xQ2hhcmFjdGVyIGEsIHN0ZDo6aW50
ZWdyYWwgYXV0byBiKQotewotICAgIHJldHVybiBhLnZhbHVlIDw9PiBiOwotfQotCi1jb25zdGV4
cHIgTGF0aW4xQ2hhcmFjdGVyIG9wZXJhdG9yKyhMYXRpbjFDaGFyYWN0ZXIgYSwgc3RkOjppbnRl
Z3JhbCBhdXRvIGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUgKyBiOwotfQotCi1jb25zdGV4cHIg
TGF0aW4xQ2hhcmFjdGVyIG9wZXJhdG9yLShMYXRpbjFDaGFyYWN0ZXIgYSwgc3RkOjppbnRlZ3Jh
bCBhdXRvIGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUgLSBiOwotfQotCi1jb25zdGV4cHIgTGF0
aW4xQ2hhcmFjdGVyIG9wZXJhdG9yJihMYXRpbjFDaGFyYWN0ZXIgYSwgc3RkOjppbnRlZ3JhbCBh
dXRvIGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUgJiBiOwotfQotCi1jb25zdGV4cHIgTGF0aW4x
Q2hhcmFjdGVyIG9wZXJhdG9yfChMYXRpbjFDaGFyYWN0ZXIgYSwgc3RkOjppbnRlZ3JhbCBhdXRv
IGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUgfCBiOwotfQotCi1jb25zdGV4cHIgTGF0aW4xQ2hh
cmFjdGVyIG9wZXJhdG9yJShMYXRpbjFDaGFyYWN0ZXIgYSwgc3RkOjppbnRlZ3JhbCBhdXRvIGIp
Ci17Ci0gICAgcmV0dXJuIGEudmFsdWUgJSBiOwotfQotCi1jb25zdGV4cHIgTGF0aW4xQ2hhcmFj
dGVyJiBvcGVyYXRvcis9KExhdGluMUNoYXJhY3RlciYgYSwgc3RkOjppbnRlZ3JhbCBhdXRvIGIp
Ci17Ci0gICAgYS52YWx1ZSArPSBiOwotICAgIHJldHVybiBhOwotfQotCi1jb25zdGV4cHIgTGF0
aW4xQ2hhcmFjdGVyJiBvcGVyYXRvci09KExhdGluMUNoYXJhY3RlciYgYSwgc3RkOjppbnRlZ3Jh
bCBhdXRvIGIpCi17Ci0gICAgYS52YWx1ZSAtPSBiOwotICAgIHJldHVybiBhOwotfQotCi1jb25z
dGV4cHIgTGF0aW4xQ2hhcmFjdGVyJiBvcGVyYXRvciY9KExhdGluMUNoYXJhY3RlciYgYSwgc3Rk
OjppbnRlZ3JhbCBhdXRvIGIpCi17Ci0gICAgYS52YWx1ZSAmPSBiOwotICAgIHJldHVybiBhOwot
fQotCi1jb25zdGV4cHIgTGF0aW4xQ2hhcmFjdGVyJiBvcGVyYXRvcnw9KExhdGluMUNoYXJhY3Rl
ciYgYSwgc3RkOjppbnRlZ3JhbCBhdXRvIGIpCi17Ci0gICAgYS52YWx1ZSB8PSBiOwotICAgIHJl
dHVybiBhOwotfQotCi1jb25zdGV4cHIgTGF0aW4xQ2hhcmFjdGVyJiBvcGVyYXRvciU9KExhdGlu
MUNoYXJhY3RlciYgYSwgc3RkOjppbnRlZ3JhbCBhdXRvIGIpCi17Ci0gICAgYS52YWx1ZSAlPSBi
OwotICAgIHJldHVybiBhOwotfQotCi1jb25zdGV4cHIgaW50IG9wZXJhdG9yLShMYXRpbjFDaGFy
YWN0ZXIgYSwgY2hhciBiKQotewotICAgIHJldHVybiBhLnZhbHVlIC0gYjsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWNvbmNlcHQgSXNTdHJpbmdTdG9yYWdlQ2hhcmFj
dGVyID0gc3RkOjpzYW1lX2FzPENoYXJhY3RlclR5cGUsIExhdGluMUNoYXJhY3Rlcj4gfHwgc3Rk
OjpzYW1lX2FzPENoYXJhY3RlclR5cGUsIGNoYXIxNl90PjsKLQotfQotCi11c2luZyBXVEY6Okxh
dGluMUNoYXJhY3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTWFrZVN0cmlu
Zy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9NYWtlU3RyaW5nLmgKaW5kZXggNDA1ZjZiZTMxYTIw
Li43NjBiNTlhMzZmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTWFrZVN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTWFrZVN0cmluZy5oCkBAIC00NSw3ICs0NSw3
IEBAIFJlZlB0cjxTdHJpbmdJbXBsPiB0cnlNYWtlU3RyaW5nSW1wbEZyb21BZGFwdGVyc0ludGVy
bmFsKHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBhCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA8PSBTdHJp
bmc6Ok1heExlbmd0aCk7CiAgICAgaWYgKGFyZUFsbEFkYXB0ZXJzOEJpdCkgewotICAgICAgICBz
dGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBidWZmZXI7CisgICAgICAgIHN0ZDo6c3BhbjxMQ2hh
cj4gYnVmZmVyOwogICAgICAgICBSZWZQdHIgcmVzdWx0ID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghcmVzdWx0KQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjIsOSArMTIyLDkgQEAgQXRvbVN0cmluZyB0
cnlNYWtlQXRvbVN0cmluZ0Zyb21BZGFwdGVycyhTdHJpbmdUeXBlQWRhcHRlcnMgLi4uYWRhcHRl
cnMpCiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4TGVuZ3RoVG9Vc2VTdGFja1ZhcmlhYmxl
ID0gNjQ7CiAgICAgICAgIGlmIChsZW5ndGggPCBtYXhMZW5ndGhUb1VzZVN0YWNrVmFyaWFibGUp
IHsKICAgICAgICAgICAgIGlmIChhcmVBbGxBZGFwdGVyczhCaXQpIHsKLSAgICAgICAgICAgICAg
ICBzdGQ6OmFycmF5PExhdGluMUNoYXJhY3RlciwgbWF4TGVuZ3RoVG9Vc2VTdGFja1ZhcmlhYmxl
PiBidWZmZXI7Ci0gICAgICAgICAgICAgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihz
dGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiB7IGJ1ZmZlciB9LCBhZGFwdGVycy4uLik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHsgYnVm
ZmVyIH0uZmlyc3QobGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PExDaGFyLCBt
YXhMZW5ndGhUb1VzZVN0YWNrVmFyaWFibGU+IGJ1ZmZlcjsKKyAgICAgICAgICAgICAgICBzdHJp
bmdUeXBlQWRhcHRlckFjY3VtdWxhdG9yKHN0ZDo6c3BhbjxMQ2hhcj4geyBidWZmZXIgfSwgYWRh
cHRlcnMuLi4pOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnNwYW48Y29uc3QgTENoYXI+
IHsgYnVmZmVyIH0uZmlyc3QobGVuZ3RoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8Y2hhcjE2X3QsIG1heExlbmd0aFRvVXNlU3RhY2tWYXJpYWJsZT4gYnVmZmVyOwog
ICAgICAgICAgICAgc3RyaW5nVHlwZUFkYXB0ZXJBY2N1bXVsYXRvcihzdGQ6OnNwYW48Y2hhcjE2
X3Q+IHsgYnVmZmVyIH0sIGFkYXB0ZXJzLi4uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvUGFyc2luZ1V0aWxpdGllcy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9QYXJzaW5nVXRp
bGl0aWVzLmgKaW5kZXggMTVlMTg3NTRiYTJkLi4xMzEyYThjYTE3YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvUGFyc2luZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvUGFyc2luZ1V0aWxpdGllcy5oCkBAIC02OSw3ICs2OSw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIERlbGltaXRlclR5cGU+IGJvb2wgc2tpcEV4YWN0
bHkoU3RyaW5nCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi10ZW1wbGF0ZTxib29sIGNoYXJhY3Rl
clByZWRpY2F0ZShMYXRpbjFDaGFyYWN0ZXIpPiBib29sIHNraXBFeGFjdGx5KFN0cmluZ1BhcnNp
bmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYgYnVmZmVyKQordGVtcGxhdGU8Ym9vbCBjaGFyYWN0
ZXJQcmVkaWNhdGUoTENoYXIpPiBib29sIHNraXBFeGFjdGx5KFN0cmluZ1BhcnNpbmdCdWZmZXI8
TENoYXI+JiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5n
KCkgJiYgY2hhcmFjdGVyUHJlZGljYXRlKCpidWZmZXIpKSB7CiAgICAgICAgICsrYnVmZmVyOwpA
QCAtODcsNyArODcsNyBAQCB0ZW1wbGF0ZTxib29sIGNoYXJhY3RlclByZWRpY2F0ZShjaGFyMTZf
dCk+IGJvb2wgc2tpcEV4YWN0bHkoU3RyaW5nUGFyc2luZ0J1ZmZlcgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoTGF0aW4xQ2hhcmFjdGVy
KSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBza2lwRXhhY3RseShzdGQ6OnNwYW48Q2hh
cmFjdGVyVHlwZT4mIGJ1ZmZlcikgcmVxdWlyZXMoc3RkOjppc19zYW1lX3Y8c3RkOjpyZW1vdmVf
Y29uc3RfdDxDaGFyYWN0ZXJUeXBlPiwgTGF0aW4xQ2hhcmFjdGVyPikKK3RlbXBsYXRlPGJvb2wg
Y2hhcmFjdGVyUHJlZGljYXRlKExDaGFyKSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBz
a2lwRXhhY3RseShzdGQ6OnNwYW48Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikgcmVxdWlyZXMoc3Rk
Ojppc19zYW1lX3Y8c3RkOjpyZW1vdmVfY29uc3RfdDxDaGFyYWN0ZXJUeXBlPiwgTENoYXI+KQog
ewogICAgIGlmICghYnVmZmVyLmVtcHR5KCkgJiYgY2hhcmFjdGVyUHJlZGljYXRlKGJ1ZmZlclsw
XSkpIHsKICAgICAgICAgc2tpcChidWZmZXIsIDEpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIERlbGltaXRlclR5cGU+IHZvaWQg
c2tpcFVudGlsKHN0ZDo6c3BhCiAgICAgc2tpcChidWZmZXIsIGluZGV4KTsKIH0KIAotdGVtcGxh
dGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoTGF0aW4xQ2hhcmFjdGVyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCBza2lwVW50aWwoc3RkOjpzcGFuPENoYXJhY3RlclR5cGU+JiBkYXRh
KSByZXF1aXJlcyhzdGQ6OmlzX3NhbWVfdjxzdGQ6OnJlbW92ZV9jb25zdF90PENoYXJhY3RlclR5
cGU+LCBMYXRpbjFDaGFyYWN0ZXI+KQordGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUo
TENoYXIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHNraXBVbnRpbChzdGQ6OnNwYW48
Q2hhcmFjdGVyVHlwZT4mIGRhdGEpIHJlcXVpcmVzKHN0ZDo6aXNfc2FtZV92PHN0ZDo6cmVtb3Zl
X2NvbnN0X3Q8Q2hhcmFjdGVyVHlwZT4sIExDaGFyPikKIHsKICAgICBzaXplX3QgaW5kZXggPSAw
OwogICAgIHdoaWxlIChpbmRleCA8IGRhdGEuc2l6ZSgpICYmICFjaGFyYWN0ZXJQcmVkaWNhdGUo
ZGF0YVtpbmRleF0pKQpAQCAtMTM1LDcgKzEzNSw3IEBAIHRlbXBsYXRlPGJvb2wgY2hhcmFjdGVy
UHJlZGljYXRlKGNoYXIxNl90KSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBza2lwVW50
CiAgICAgc2tpcChkYXRhLCBpbmRleCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJl
ZGljYXRlKExhdGluMUNoYXJhY3Rlcik+IHZvaWQgc2tpcFVudGlsKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8TGF0aW4xQ2hhcmFjdGVyPiYgYnVmZmVyKQordGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVk
aWNhdGUoTENoYXIpPiB2b2lkIHNraXBVbnRpbChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYg
YnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYm
ICFjaGFyYWN0ZXJQcmVkaWNhdGUoKmJ1ZmZlcikpCiAgICAgICAgICsrYnVmZmVyOwpAQCAtMTYx
LDE1ICsxNjEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBE
ZWxpbWl0ZXJUeXBlPiB2b2lkIHNraXBXaGlsZShzdGQ6OnNwYQogICAgIHNraXAoYnVmZmVyLCBp
bmRleCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKExhdGluMUNoYXJh
Y3RlciksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgc2tpcFdoaWxlKHN0ZDo6c3BhbjxD
aGFyYWN0ZXJUeXBlPiYgZGF0YSkgcmVxdWlyZXMoc3RkOjppc19zYW1lX3Y8c3RkOjpyZW1vdmVf
Y29uc3RfdDxDaGFyYWN0ZXJUeXBlPiwgTGF0aW4xQ2hhcmFjdGVyPikKLXsKLSAgICBzaXplX3Qg
aW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8IGRhdGEuc2l6ZSgpICYmIGNoYXJhY3RlclBy
ZWRpY2F0ZShkYXRhW2luZGV4XSkpCi0gICAgICAgICsraW5kZXg7Ci0gICAgc2tpcChkYXRhLCBp
bmRleCk7Ci19Ci0KLXRlbXBsYXRlPGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKGNoYXI4X3QpLCB0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHNraXBXaGlsZShzdGQ6OnNwYW48Q2hhcmFjdGVy
VHlwZT4mIGRhdGEpIHJlcXVpcmVzKHN0ZDo6aXNfc2FtZV92PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
Q2hhcmFjdGVyVHlwZT4sIGNoYXI4X3Q+KQordGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNh
dGUoTENoYXIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHNraXBXaGlsZShzdGQ6OnNw
YW48Q2hhcmFjdGVyVHlwZT4mIGRhdGEpIHJlcXVpcmVzKHN0ZDo6aXNfc2FtZV92PHN0ZDo6cmVt
b3ZlX2NvbnN0X3Q8Q2hhcmFjdGVyVHlwZT4sIExDaGFyPikKIHsKICAgICBzaXplX3QgaW5kZXgg
PSAwOwogICAgIHdoaWxlIChpbmRleCA8IGRhdGEuc2l6ZSgpICYmIGNoYXJhY3RlclByZWRpY2F0
ZShkYXRhW2luZGV4XSkpCkBAIC0xODUsNyArMTc3LDcgQEAgdGVtcGxhdGU8Ym9vbCBjaGFyYWN0
ZXJQcmVkaWNhdGUoY2hhcjE2X3QpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHNraXBX
aGkKICAgICBza2lwKGRhdGEsIGluZGV4KTsKIH0KIAotdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQ
cmVkaWNhdGUoTGF0aW4xQ2hhcmFjdGVyKT4gdm9pZCBza2lwV2hpbGUoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+JiBidWZmZXIpCit0ZW1wbGF0ZTxib29sIGNoYXJhY3RlclBy
ZWRpY2F0ZShMQ2hhcik+IHZvaWQgc2tpcFdoaWxlKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+
JiBidWZmZXIpCiB7CiAgICAgd2hpbGUgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkg
JiYgY2hhcmFjdGVyUHJlZGljYXRlKCpidWZmZXIpKQogICAgICAgICArK2J1ZmZlcjsKQEAgLTI0
OCw5ICsyNDAsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzdGQ6OnNpemVf
dCBFeHRlbnQ+IGNvbnN0ZXhwciBib29sIHNraXBDaGFyYWN0ZQogICAgIHJldHVybiB0cnVlOwog
fQogCi0vLyBBZGFwdCBhIGNoYXIxNl90LXByZWRpY2F0ZSB0byBhbiBMYXRpbjFDaGFyYWN0ZXIt
cHJlZGljYXRlLgorLy8gQWRhcHQgYSBjaGFyMTZfdC1wcmVkaWNhdGUgdG8gYW4gTENoYXItcHJl
ZGljYXRlLgogdGVtcGxhdGU8Ym9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoY2hhcjE2X3QpPgotc3Rh
dGljIGlubGluZSBib29sIExDaGFyUHJlZGljYXRlQWRhcHRlcihMYXRpbjFDaGFyYWN0ZXIgYykg
eyByZXR1cm4gY2hhcmFjdGVyUHJlZGljYXRlKGMpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgTENo
YXJQcmVkaWNhdGVBZGFwdGVyKExDaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlclByZWRpY2F0ZShj
KTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5jcHAKaW5kZXggODY5NjhjNTVhMjViLi5jYmNlN2IyY2Y2NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6
OnNocmluayh1bnNpZ25lZCBuZXdMZW5ndGgpCiAgICAgICAgIH0KICAgICAgICAgLy8gQWxsb2Nh
dGUgYSBmcmVzaCBidWZmZXIsIHdpdGggYSBjb3B5IG9mIHRoZSBjaGFyYWN0ZXJzIHdlIGFyZSBr
ZWVwaW5nLgogICAgICAgICBpZiAobV9idWZmZXItPmlzOEJpdCgpKQotICAgICAgICAgICAgYWxs
b2NhdGVCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPihtX2J1ZmZlci0+c3BhbjgoKS5maXJzdChtX2xl
bmd0aCksIG5ld0xlbmd0aCk7CisgICAgICAgICAgICBhbGxvY2F0ZUJ1ZmZlcjxMQ2hhcj4obV9i
dWZmZXItPnNwYW44KCkuZmlyc3QobV9sZW5ndGgpLCBuZXdMZW5ndGgpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBhbGxvY2F0ZUJ1ZmZlcjxjaGFyMTZfdD4obV9idWZmZXItPnNwYW4xNigp
LmZpcnN0KG1fbGVuZ3RoKSwgbmV3TGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTA2LDcg
KzEwNiw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6c2hyaW5rKHVuc2lnbmVkIG5ld0xlbmd0aCkK
IHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVhbGxvY2F0ZUJ1ZmZlcih1bnNpZ25lZCByZXF1aXJlZENh
cGFjaXR5KQogewogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmVhbGxvY2F0ZUJ1ZmZlcjxM
YXRpbjFDaGFyYWN0ZXI+KHJlcXVpcmVkQ2FwYWNpdHkpOworICAgICAgICByZWFsbG9jYXRlQnVm
ZmVyPExDaGFyPihyZXF1aXJlZENhcGFjaXR5KTsKICAgICBlbHNlCiAgICAgICAgIHJlYWxsb2Nh
dGVCdWZmZXI8Y2hhcjE2X3Q+KHJlcXVpcmVkQ2FwYWNpdHkpOwogfQpAQCAtMTIyLDkgKzEyMiw5
IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFj
aXR5KQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuZXdDYXBhY2l0eSA+IG1fbGVuZ3RoKSB7
CiAgICAgICAgICAgICBpZiAoIW1fbGVuZ3RoKQotICAgICAgICAgICAgICAgIGFsbG9jYXRlQnVm
ZmVyPExhdGluMUNoYXJhY3Rlcj4oc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4geyB9
LCBuZXdDYXBhY2l0eSk7CisgICAgICAgICAgICAgICAgYWxsb2NhdGVCdWZmZXI8TENoYXI+KHN0
ZDo6c3Bhbjxjb25zdCBMQ2hhcj4geyB9LCBuZXdDYXBhY2l0eSk7CiAgICAgICAgICAgICBlbHNl
IGlmIChtX3N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgICAgICAgICBhbGxvY2F0ZUJ1ZmZlcjxM
YXRpbjFDaGFyYWN0ZXI+KG1fc3RyaW5nLnNwYW44KCksIG5ld0NhcGFjaXR5KTsKKyAgICAgICAg
ICAgICAgICBhbGxvY2F0ZUJ1ZmZlcjxMQ2hhcj4obV9zdHJpbmcuc3BhbjgoKSwgbmV3Q2FwYWNp
dHkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGFsbG9jYXRlQnVmZmVyPGNo
YXIxNl90PihtX3N0cmluZy5zcGFuMTYoKSwgbmV3Q2FwYWNpdHkpOwogICAgICAgICB9CkBAIC0x
MzMsOSArMTMzLDkgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpyZXNlcnZlQ2FwYWNpdHkodW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpCiB9CiAKIC8vIEFsdGVyYXRpdmUgZXh0ZW5kQnVmZmVyRm9yQXBwZW5k
aW5nIHRoYXQgY2FuIGJlIGNhbGxlZCBmcm9tIHRoZSBoZWFkZXIgd2l0aG91dCBpbmxpbmluZy4K
LXN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IFN0cmluZ0J1aWxkZXI6OmV4dGVuZEJ1ZmZlckZv
ckFwcGVuZGluZ0xDaGFyKHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQorc3RkOjpzcGFuPExDaGFy
PiBTdHJpbmdCdWlsZGVyOjpleHRlbmRCdWZmZXJGb3JBcHBlbmRpbmdMQ2hhcih1bnNpZ25lZCBy
ZXF1aXJlZExlbmd0aCkKIHsKLSAgICByZXR1cm4gZXh0ZW5kQnVmZmVyRm9yQXBwZW5kaW5nPExh
dGluMUNoYXJhY3Rlcj4ocmVxdWlyZWRMZW5ndGgpOworICAgIHJldHVybiBleHRlbmRCdWZmZXJG
b3JBcHBlbmRpbmc8TENoYXI+KHJlcXVpcmVkTGVuZ3RoKTsKIH0KIAogc3RkOjpzcGFuPGNoYXIx
Nl90PiBTdHJpbmdCdWlsZGVyOjpleHRlbmRCdWZmZXJGb3JBcHBlbmRpbmdXaXRoVXBjb252ZXJ0
KHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgU3RyaW5n
QnVpbGRlcjo6YXBwZW5kKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hhcmFjdGVycykKICAg
ICBpZiAoY2hhcmFjdGVycy5lbXB0eSgpIHx8IGhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGlmIChjaGFyYWN0ZXJzLnNpemUoKSA9PSAxICYmIGlzTGF0aW4xKGNoYXJhY3Rl
cnNbMF0pICYmIGlzOEJpdCgpKSB7Ci0gICAgICAgIGFwcGVuZChzdGF0aWNfY2FzdDxMYXRpbjFD
aGFyYWN0ZXI+KGNoYXJhY3RlcnNbMF0pKTsKKyAgICAgICAgYXBwZW5kKHN0YXRpY19jYXN0PExD
aGFyPihjaGFyYWN0ZXJzWzBdKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUkVMRUFT
RV9BU1NFUlQoY2hhcmFjdGVycy5zaXplKCkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCkpOwpAQCAtMTYyLDEzICsxNjIsMTMgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyYWN0ZXJzKQogICAgICAgICBTdHJpbmdJ
bXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwgY2hhcmFjdGVycyk7CiB9CiAKLXZvaWQg
U3RyaW5nQnVpbGRlcjo6YXBwZW5kKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNo
YXJhY3RlcnMpCit2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdGQ6OnNwYW48Y29uc3QgTENo
YXI+IGNoYXJhY3RlcnMpCiB7CiAgICAgaWYgKGNoYXJhY3RlcnMuZW1wdHkoKSB8fCBoYXNPdmVy
Zmxvd2VkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBSRUxFQVNFX0FTU0VSVChjaGFyYWN0ZXJz
LnNpemUoKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7CiAgICAgaWYg
KGlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIGRlc3RpbmF0aW9uID0gZXh0ZW5kQnVmZmVy
Rm9yQXBwZW5kaW5nPExhdGluMUNoYXJhY3Rlcj4oc2F0dXJhdGVkU3VtPHVpbnQzMl90PihtX2xl
bmd0aCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNoYXJhY3RlcnMuc2l6ZSgpKSkpOyBkZXN0aW5h
dGlvbi5kYXRhKCkpCisgICAgICAgIGlmIChhdXRvIGRlc3RpbmF0aW9uID0gZXh0ZW5kQnVmZmVy
Rm9yQXBwZW5kaW5nPExDaGFyPihzYXR1cmF0ZWRTdW08dWludDMyX3Q+KG1fbGVuZ3RoLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oY2hhcmFjdGVycy5zaXplKCkpKSk7IGRlc3RpbmF0aW9uLmRhdGEo
KSkKICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCBj
aGFyYWN0ZXJzKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoYXV0byBkZXN0aW5hdGlvbiA9
IGV4dGVuZEJ1ZmZlckZvckFwcGVuZGluZzxjaGFyMTZfdD4oc2F0dXJhdGVkU3VtPHVpbnQzMl90
PihtX2xlbmd0aCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNoYXJhY3RlcnMuc2l6ZSgpKSkpOyBk
ZXN0aW5hdGlvbi5kYXRhKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmluZGV4IGMx
MjNlYTFiZmE1Mi4uNmJmMjY2NDRjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aApAQCAtNTUsMTggKzU1LDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
a2VlcCB0aGVzZSBvdmVybG9hZHMgb25seSBpZiBvcHRpbWl6YXRpb25zIG1ha2UgdGhlbSBtb3Jl
IGVmZmljaWVudCB0aGFuIHRoZSBzaW5nbGUtYXJndW1lbnQgZm9ybSBvZiB0aGUgdmFyaWFkaWMg
YXBwZW5kIGFib3ZlLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChzdGQ6OnNw
YW48Y29uc3QgY2hhcjE2X3Q+KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQo
c3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGFwcGVuZChzdGQ6OnNwYW48Y29uc3QgTENoYXI+KTsKICAgICB2b2lkIGFwcGVuZChj
b25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpIHsgYXBwZW5kKHN0cmluZy5zdHJpbmcoKSk7IH0KICAg
ICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZChTdHJpbmdWaWV3
KTsKICAgICB2b2lkIGFwcGVuZChBU0NJSUxpdGVyYWwpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IGNoYXIqKSA9IGRlbGV0ZTsgLy8gUGFzcyBBU0NJSUxpdGVyYWwgb3Igc3BhbiBpbnN0ZWFkLgog
ICAgIHZvaWQgYXBwZW5kKGNoYXIxNl90KTsKLSAgICB2b2lkIGFwcGVuZChMYXRpbjFDaGFyYWN0
ZXIpOwotICAgIHZvaWQgYXBwZW5kKGNoYXIgY2hhcmFjdGVyKSB7IGFwcGVuZChieXRlQ2FzdDxM
YXRpbjFDaGFyYWN0ZXI+KGNoYXJhY3RlcikpOyB9Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBoYW5k
bGVzIHVpbnQ4X3QgZGlmZmVyZW50bHkgdGhhbiB2YXJpYWRpYyBhcHBlbmQsIHdoaWNoIGluc3Rl
YWQgc2VyaWFsaXplcyB0aGUgdmFsdWUgYXMgYSBudW1lcmFsLgotICAgIHZvaWQgYXBwZW5kKHVp
bnQ4X3QgY2hhcmFjdGVyKSB7IGFwcGVuZChieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNoYXJh
Y3RlcikpOyB9CisgICAgdm9pZCBhcHBlbmQoTENoYXIpOworICAgIHZvaWQgYXBwZW5kKGNoYXIg
Y2hhcmFjdGVyKSB7IGFwcGVuZChieXRlQ2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSk7IH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVBZGFwdGVycz4gdm9pZCBhcHBlbmRGcm9t
QWRhcHRlcnMoY29uc3QgU3RyaW5nVHlwZUFkYXB0ZXJzJi4uLik7CiAKQEAgLTkxLDcgKzg4LDcg
QEAgcHVibGljOgogICAgIGNoYXIxNl90IG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3Q7CiAK
ICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwotICAgIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFy
YWN0ZXI+IHNwYW44KCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gc3BhbjxMYXRpbjFD
aGFyYWN0ZXI+KCk7IH0KKyAgICBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHNwYW44KCkgY29uc3Qg
TElGRVRJTUVfQk9VTkQgeyByZXR1cm4gc3BhbjxMQ2hhcj4oKTsgfQogICAgIHN0ZDo6c3Bhbjxj
b25zdCBjaGFyMTZfdD4gc3BhbjE2KCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gc3Bh
bjxjaGFyMTZfdD4oKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
ZDo6c3Bhbjxjb25zdCBDaGFyYWN0ZXJUeXBlPiBzcGFuKCkgY29uc3QgTElGRVRJTUVfQk9VTkQ7
CiAgICAgCkBAIC0xMTMsNyArMTEwLDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6c3BhbjxDaGFyYWN0ZXJUeXBlPiBleHRlbmRCdWZmZXJG
b3JBcHBlbmRpbmcodW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6c3BhbjxDaGFyYWN0ZXJUeXBlPiBleHRlbmRCdWZmZXJG
b3JBcHBlbmRpbmdTbG93Q2FzZSh1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7Ci0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGV4dGVuZEJ1ZmZlckZvckFw
cGVuZGluZ0xDaGFyKHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RkOjpzcGFuPExDaGFyPiBleHRlbmRCdWZmZXJGb3JBcHBlbmRpbmdMQ2hhcih1bnNp
Z25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6c3Bhbjxj
aGFyMTZfdD4gZXh0ZW5kQnVmZmVyRm9yQXBwZW5kaW5nV2l0aFVwY29udmVydCh1bnNpZ25lZCBy
ZXF1aXJlZExlbmd0aCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlmeVN0cmlu
ZygpIGNvbnN0OwpAQCAtMTU5LDcgKzE1Niw3IEBAIGlubGluZSB2b2lkIFN0cmluZ0J1aWxkZXI6
OnN3YXAoU3RyaW5nQnVpbGRlciYgb3RoZXIpCiBpbmxpbmUgU3RyaW5nQnVpbGRlcjo6b3BlcmF0
b3IgU3RyaW5nVmlldygpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1
cm4gc3BhbjxMYXRpbjFDaGFyYWN0ZXI+KCk7CisgICAgICAgIHJldHVybiBzcGFuPExDaGFyPigp
OwogICAgIHJldHVybiBzcGFuPGNoYXIxNl90PigpOwogfQogCkBAIC0xNzEsMTggKzE2OCwxOCBA
QCBpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY2hhcjE2X3QgY2hhcmFjdGVyKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0xhdGluMShjaGFy
YWN0ZXIpKSB7Ci0gICAgICAgICAgICBzcGFuQ29uc3RDYXN0PExhdGluMUNoYXJhY3Rlcj4obV9i
dWZmZXItPnNwYW44KCkpW21fbGVuZ3RoKytdID0gc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVy
PihjaGFyYWN0ZXIpOworICAgICAgICAgICAgc3BhbkNvbnN0Q2FzdDxMQ2hhcj4obV9idWZmZXIt
PnNwYW44KCkpW21fbGVuZ3RoKytdID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rlcik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgYXBwZW5kKFdURjo6c3Bh
bihjaGFyYWN0ZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKExh
dGluMUNoYXJhY3RlciBjaGFyYWN0ZXIpCitpbmxpbmUgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoTENoYXIgY2hhcmFjdGVyKQogewogICAgIGlmIChtX2J1ZmZlciAmJiBtX2xlbmd0aCA8IG1f
YnVmZmVyLT5sZW5ndGgoKSAmJiBtX3N0cmluZy5pc051bGwoKSkgewogICAgICAgICBpZiAobV9i
dWZmZXItPmlzOEJpdCgpKQotICAgICAgICAgICAgc3BhbkNvbnN0Q2FzdDxMYXRpbjFDaGFyYWN0
ZXI+KG1fYnVmZmVyLT5zcGFuOCgpKVttX2xlbmd0aCsrXSA9IGNoYXJhY3RlcjsKKyAgICAgICAg
ICAgIHNwYW5Db25zdENhc3Q8TENoYXI+KG1fYnVmZmVyLT5zcGFuOCgpKVttX2xlbmd0aCsrXSA9
IGNoYXJhY3RlcjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3BhbkNvbnN0Q2FzdDxjaGFy
MTZfdD4obV9idWZmZXItPnNwYW4xNigpKVttX2xlbmd0aCsrXSA9IGNoYXJhY3RlcjsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjk5LDcgKzI5Niw3IEBAIGlubGluZSB1bnNpZ25lZCBTdHJpbmdCdWls
ZGVyOjpjYXBhY2l0eSgpIGNvbnN0CiAKIGlubGluZSBjaGFyMTZfdCBTdHJpbmdCdWlsZGVyOjpv
cGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzOEJpdCgpID8gY2hh
cjE2X3QgeyBzcGFuOCgpW2ldIH0gOiBzcGFuMTYoKVtpXTsKKyAgICByZXR1cm4gaXM4Qml0KCkg
PyBzcGFuOCgpW2ldIDogc3BhbjE2KClbaV07CiB9CiAKIGlubGluZSBib29sIFN0cmluZ0J1aWxk
ZXI6OmlzOEJpdCgpIGNvbnN0CkBAIC0zNzEsNyArMzY4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCBlcXVhbChjb25zdCBTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBz
dGQ6OnMKIHRlbXBsYXRlPD4gc3RydWN0IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25UcmFpdDxT
dHJpbmdCdWlsZGVyPiB7CiAgICAgdXNpbmcgUmV0dXJuVHlwZSA9IHZvaWQ7CiAgICAgdXNpbmcg
QWRkaXRpb25hbEFyZ3VtZW50VHlwZSA9IFN0cmluZ0J1aWxkZXI7Ci0gICAgc3RhdGljIHZvaWQg
Zmx1c2goc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVycywgU3RyaW5n
QnVpbGRlciogYnVpbGRlcikgeyBidWlsZGVyLT5hcHBlbmQoY2hhcmFjdGVycyk7IH0KKyAgICBz
dGF0aWMgdm9pZCBmbHVzaChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMsIFN0cmlu
Z0J1aWxkZXIqIGJ1aWxkZXIpIHsgYnVpbGRlci0+YXBwZW5kKGNoYXJhY3RlcnMpOyB9CiB9Owog
CiAvLyBIZWxwZXIgZnVuY3RvciB1c2VmdWwgaW4gZ2VuZXJpYyBjb250ZXh0cyB3aGVyZSBib3Ro
IG1ha2VTdHJpbmcoKSBhbmQgU3RyaW5nQnVpbGRlciBhcmUgYmVpbmcgdXNlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlckpTT04uY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAKaW5kZXggOWEzMTMwMGU4YWI1Li4wZTM5
NDhkNWNhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlckpT
T04uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlckpTT04uY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kUXVvdGVkSlNPTlN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBhdXRvIHN0cmluZ0xlbmd0aFZhbHVlID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHN0cmluZ0xlbmd0aC52YWx1ZSgpKTsKIAogICAgIGlmIChpczhC
aXQoKSAmJiBzdHJpbmcuaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gb3V0cHV0ID0gZXh0
ZW5kQnVmZmVyRm9yQXBwZW5kaW5nPExhdGluMUNoYXJhY3Rlcj4oc2F0dXJhdGVkU3VtPHVpbnQz
Ml90PihtX2xlbmd0aCwgc3RyaW5nTGVuZ3RoVmFsdWUpKTsgb3V0cHV0LmRhdGEoKSkgeworICAg
ICAgICBpZiAoYXV0byBvdXRwdXQgPSBleHRlbmRCdWZmZXJGb3JBcHBlbmRpbmc8TENoYXI+KHNh
dHVyYXRlZFN1bTx1aW50MzJfdD4obV9sZW5ndGgsIHN0cmluZ0xlbmd0aFZhbHVlKSk7IG91dHB1
dC5kYXRhKCkpIHsKICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5maXJzdChzdHJpbmdMZW5n
dGhWYWx1ZSk7CiAgICAgICAgICAgICBjb25zdW1lKG91dHB1dCkgPSAnIic7CiAgICAgICAgICAg
ICBhcHBlbmRFc2NhcGVkSlNPTlN0cmluZ0NvbnRlbnQob3V0cHV0LCBzdHJpbmcuc3BhbjgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5jcHAKaW5kZXggZjc3NmJmZGNmNWU4Li40ZGQx
ZTQxY2IwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgY29uc3QgZG91YmxlKiBmaW5kRG91YmxlQWxpZ25lZEltcGwoY29uc3QgZG91YmxlKiBw
b2ludGVyLCBkb3VibGUgdGFyZ2V0LCBzaXplX3QKIH0KIAogU1VQUFJFU1NfQVNBTgotY29uc3Qg
TGF0aW4xQ2hhcmFjdGVyKiBmaW5kOE5vbkFTQ0lJQWxpZ25lZEltcGwoc3RkOjpzcGFuPGNvbnN0
IExhdGluMUNoYXJhY3Rlcj4gZGF0YSkKK2NvbnN0IExDaGFyKiBmaW5kOE5vbkFTQ0lJQWxpZ25l
ZEltcGwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBkYXRhKQogewogICAgIGNvbnN0ZXhwciBzaW1k
ZV91aW50OHgxNl90IGluZGV4TWFzayB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw
LCAxMSwgMTIsIDEzLCAxNCwgMTUgfTsKIApAQCAtMTEyLDcgKzExMiw3IEBAIGNvbnN0IExhdGlu
MUNoYXJhY3RlciogZmluZDhOb25BU0NJSUFsaWduZWRJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMYXRp
bjFDaGFyYWN0ZXI+CiAgICAgICAgIGlmIChzaW1kZV92bWF4dnFfdTgobWFzaykpIHsKICAgICAg
ICAgICAgIHNpbWRlX3VpbnQ4eDE2X3QgcmFua2VkID0gc2ltZGVfdm9ybnFfdTgoaW5kZXhNYXNr
LCBtYXNrKTsKICAgICAgICAgICAgIHVpbnQ4X3QgaW5kZXggPSBzaW1kZV92bWludnFfdTgocmFu
a2VkKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmJpdF9jYXN0PGNvbnN0IExhdGluMUNoYXJh
Y3Rlcio+KChpbmRleCA8IGxlbmd0aCkgPyBjdXJzb3IgKyBpbmRleCA6IG51bGxwdHIpOworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6Yml0X2Nhc3Q8Y29uc3QgTENoYXIqPigoaW5kZXggPCBsZW5n
dGgpID8gY3Vyc29yICsgaW5kZXggOiBudWxscHRyKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
bGVuZ3RoIDw9IHN0cmlkZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29tbW9uLmgKaW5kZXggMDMwNDVlNWM0OWM5Li42YWQ2NTc0M2JjODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdDb21tb24uaApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotaW5saW5lIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHNwYW4oY29u
c3QgTGF0aW4xQ2hhcmFjdGVyJiBjaGFyYWN0ZXIpCitpbmxpbmUgc3RkOjpzcGFuPGNvbnN0IExD
aGFyPiBzcGFuKGNvbnN0IExDaGFyJiBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIHVuc2FmZU1h
a2VTcGFuKCZjaGFyYWN0ZXIsIDEpOwogfQpAQCAtNTAsMTcgKzUwLDE3IEBAIGlubGluZSBzdGQ6
OnNwYW48Y29uc3QgY2hhcjE2X3Q+IHNwYW4oY29uc3QgY2hhcjE2X3QmIGNoYXJhY3RlcikKICAg
ICByZXR1cm4gdW5zYWZlTWFrZVNwYW4oJmNoYXJhY3RlciwgMSk7CiB9CiAKLWlubGluZSBzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiB1bnNhZmVTcGFuOChjb25zdCBjaGFyKiBzdHJp
bmcpCitpbmxpbmUgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiB1bnNhZmVTcGFuOChjb25zdCBjaGFy
KiBzdHJpbmcpCiB7CiBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9CRUdJTgotICAgIHJl
dHVybiB1bnNhZmVNYWtlU3BhbihieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHN0cmluZyksIHN0
cmluZyA/IHN0cmxlbihzdHJpbmcpIDogMCk7CisgICAgcmV0dXJuIHVuc2FmZU1ha2VTcGFuKGJ5
dGVDYXN0PExDaGFyPihzdHJpbmcpLCBzdHJpbmcgPyBzdHJsZW4oc3RyaW5nKSA6IDApOwogV1RG
X0FMTE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfRU5ECiB9CiAKLWlubGluZSBzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiB1bnNhZmVTcGFuOEluY2x1ZGluZ051bGxUZXJtaW5hdG9yKGNv
bnN0IGNoYXIqIHN0cmluZykKK2lubGluZSBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHVuc2FmZVNw
YW44SW5jbHVkaW5nTnVsbFRlcm1pbmF0b3IoY29uc3QgY2hhciogc3RyaW5nKQogewogV1RGX0FM
TE9XX1VOU0FGRV9CVUZGRVJfVVNBR0VfQkVHSU4KLSAgICByZXR1cm4gdW5zYWZlTWFrZVNwYW4o
Ynl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihzdHJpbmcpLCBzdHJpbmcgPyBzdHJsZW4oc3RyaW5n
KSArIDEgOiAwKTsKKyAgICByZXR1cm4gdW5zYWZlTWFrZVNwYW4oYnl0ZUNhc3Q8TENoYXI+KHN0
cmluZyksIHN0cmluZyA/IHN0cmxlbihzdHJpbmcpICsgMSA6IDApOwogV1RGX0FMTE9XX1VOU0FG
RV9CVUZGRVJfVVNBR0VfRU5ECiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgV1RGX0FMTE9XX1VOU0FG
RV9CVUZGRVJfVVNBR0VfQkVHSU4KIFdURl9BTExPV19VTlNBRkVfQlVGRkVSX1VTQUdFX0VORAog
fQogCi1pbmxpbmUgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gdW5zYWZlU3Bhbihj
b25zdCBMYXRpbjFDaGFyYWN0ZXIqIHN0cmluZykKK2lubGluZSBzdGQ6OnNwYW48Y29uc3QgTENo
YXI+IHVuc2FmZVNwYW4oY29uc3QgTENoYXIqIHN0cmluZykKIHsKIFdURl9BTExPV19VTlNBRkVf
QlVGRkVSX1VTQUdFX0JFR0lOCiAgICAgcmV0dXJuIHVuc2FmZU1ha2VTcGFuKHN0cmluZywgc3Ry
aW5nID8gc3RybGVuKGJ5dGVDYXN0PGNoYXI+KHN0cmluZykpIDogMCk7CkBAIC0xMjAsNyArMTIw
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGNvbnN0ZXhwciBi
b29sIGlzTGF0aW4xKENoYXJhY3RlclR5cGUgY2gKICAgICByZXR1cm4gdW5zaWduZWRDYXN0KGNo
YXJhY3RlcikgPD0gMHhGRnU7CiB9CiAKLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBjb25zdGV4
cHIgYm9vbCBpc0xhdGluMShMYXRpbjFDaGFyYWN0ZXIpCit0ZW1wbGF0ZTw+IEFMV0FZU19JTkxJ
TkUgY29uc3RleHByIGJvb2wgaXNMYXRpbjEoTENoYXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC0xMzEsNyArMTMxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUEsIHR5
cGVuYW1lIENoYXJhY3RlclR5cGVCPiBib29sIGVxdWFsSWdub3JpbmdBU0MKIAogdGVtcGxhdGU8
dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJpbmdDbGFzc0I+IGJvb2wgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihjb25zdCBTdHJpbmdDbGFzc0EmLCBjb25zdCBTdHJpbmdD
bGFzc0ImKTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4sIHN0
ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGxvd2VyY2FzZUxldHRlcnMpOwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4sIHN0ZDo6c3Bhbjxjb25zdCBMQ2hh
cj4gbG93ZXJjYXNlTGV0dGVycyk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBi
b29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0ZDo6c3Bhbjxjb25zdCBDaGFyYWN0
ZXJUeXBlPiwgQVNDSUlMaXRlcmFsKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+
IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xh
c3MmLCBBU0NJSUxpdGVyYWwpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIGJvb2wgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogCiAvLyBEbyBjb21wYXJpc29u
cyA4IG9yIDQgYnl0ZXMtYXQtYS10aW1lIG9uIGFyY2hpdGVjdHVyZXMgd2hlcmUgaXQncyBzYWZl
LgogI2lmIChDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpKSAmJiAhQVNBTl9FTkFCTEVECi1BTFdB
WVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBhTENoYXIsIHN0ZDo6
c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGJMQ2hhcikKK0FMV0FZU19JTkxJTkUgYm9vbCBl
cXVhbChjb25zdCBMQ2hhciogYUxDaGFyLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGJMQ2hhcikK
IHsKICAgICBBU1NFUlQoYkxDaGFyLnNpemUoKSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJMQ2hhci5zaXplKCk7CkBAIC0y
NDEsNyArMjQxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNvbnN0IGNoYXIxNl90KiBh
VUNoYXIsIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gYlVDaGEKICAgICB9CiB9CiAjZWxpZiBD
UFUoWDg2KSAmJiAhQVNBTl9FTkFCTEVECi1BTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3Qg
TGF0aW4xQ2hhcmFjdGVyKiBhTENoYXIsIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+
IGJMQ2hhcikKK0FMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25zdCBMQ2hhciogYUxDaGFyLCBz
dGQ6OnNwYW48Y29uc3QgTENoYXI+IGJMQ2hhcikKIHsKICAgICBBU1NFUlQoYkxDaGFyLnNpemUo
KSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGJMQ2hhci5zaXplKCk7CkBAIC0yNjAsOCArMjYwLDggQEAgQUxXQVlTX0lOTElO
RSBib29sIGVxdWFsKGNvbnN0IExhdGluMUNoYXJhY3RlciogYUxDaGFyLCBzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2gKICAgICBsZW5ndGggJj0gMzsKIAogICAgIGlmIChsZW5ndGgpIHsKLSAgICAg
ICAgY29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBhUmVtYWluZGVyID0gYnl0ZUNhc3Q8TGF0aW4xQ2hh
cmFjdGVyPihhKTsKLSAgICAgICAgY29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBiUmVtYWluZGVyID0g
Ynl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihiKTsKKyAgICAgICAgY29uc3QgTENoYXIqIGFSZW1h
aW5kZXIgPSBieXRlQ2FzdDxMQ2hhcj4oYSk7CisgICAgICAgIGNvbnN0IExDaGFyKiBiUmVtYWlu
ZGVyID0gYnl0ZUNhc3Q8TENoYXI+KGIpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCAgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmIChhUmVtYWluZGVyW2ldICE9IGJS
ZW1haW5kZXJbaV0pCkBAIC0yOTQsMTEgKzI5NCwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1
YWwoY29uc3QgY2hhcjE2X3QqIGFVQ2hhciwgc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBiVUNo
YQogICAgIHJldHVybiB0cnVlOwogfQogI2Vsc2UKLUFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChj
b25zdCBMYXRpbjFDaGFyYWN0ZXIqIGEsIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+
IGIpIHsgcmV0dXJuICFtZW1jbXAoYSwgYi5kYXRhKCksIGIuc2l6ZSgpKTsgfQorQUxXQVlTX0lO
TElORSBib29sIGVxdWFsKGNvbnN0IExDaGFyKiBhLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGIp
IHsgcmV0dXJuICFtZW1jbXAoYSwgYi5kYXRhKCksIGIuc2l6ZSgpKTsgfQogQUxXQVlTX0lOTElO
RSBib29sIGVxdWFsKGNvbnN0IGNoYXIxNl90KiBhLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+
IGIpIHsgcmV0dXJuICFtZW1jbXAoYSwgYi5kYXRhKCksIGIuc2l6ZV9ieXRlcygpKTsgfQogI2Vu
ZGlmCiAKLUFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIGEs
IHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gYikKK0FMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChj
b25zdCBMQ2hhciogYSwgc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBiKQogewogI2lmIENQVShB
Uk02NCkKICAgICBBU1NFUlQoYi5zaXplKCkgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKTsKQEAgLTMxOCw3ICszMTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwo
Y29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBhLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGIpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAobGVuZ3RoID49IDQpIHsKLSAgICAg
ICAgYXV0byByZWFkNCA9IFtdKGNvbnN0IExhdGluMUNoYXJhY3RlciogcCkgQUxXQVlTX0lOTElO
RV9MQU1CREEgeworICAgICAgICBhdXRvIHJlYWQ0ID0gW10oY29uc3QgTENoYXIqIHApIEFMV0FZ
U19JTkxJTkVfTEFNQkRBIHsKICAgICAgICAgICAgIC8vIENvcHkgMzIgYml0cyBhbmQgZXhwYW5k
IHRvIDY0IGJpdHMuCiAgICAgICAgICAgICB1aW50MzJfdCB2MzIgPSB1bmFsaWduZWRMb2FkPHVp
bnQzMl90PihwKTsKICAgICAgICAgICAgIHVpbnQ2NF90IHY2NCA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih2MzIpOwpAQCAtMzI5LDcgKzMyOSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChj
b25zdCBMYXRpbjFDaGFyYWN0ZXIqIGEsIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gYikKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFkNChhKSA9PSB1bmFsaWduZWRM
b2FkPHVpbnQ2NF90PihiLmRhdGEoKSkpICYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYWQ0KGEg
KyAobGVuZ3RoICUgNCkpID09IHVuYWxpZ25lZExvYWQ8dWludDY0X3Q+KGIuZGF0YSgpICsgKGxl
bmd0aCAlIDQpKSk7CiAgICAgfQogICAgIGlmIChsZW5ndGggPj0gMikgewotICAgICAgICBhdXRv
IHJlYWQyID0gW10oY29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBwKSBBTFdBWVNfSU5MSU5FX0xBTUJE
QSB7CisgICAgICAgIGF1dG8gcmVhZDIgPSBbXShjb25zdCBMQ2hhciogcCkgQUxXQVlTX0lOTElO
RV9MQU1CREEgewogICAgICAgICAgICAgLy8gQ29weSAxNiBiaXRzIGFuZCBleHBhbmQgdG8gMzIg
Yml0cy4KICAgICAgICAgICAgIHVpbnQxNl90IHYxNiA9IHVuYWxpZ25lZExvYWQ8dWludDE2X3Q+
KHApOwogICAgICAgICAgICAgdWludDMyX3QgdjMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHYx
Nik7CkBAIC0zNDksNyArMzQ5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNvbnN0IExh
dGluMUNoYXJhY3RlciogYSwgc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBiKQogI2VuZGlmCiB9
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25zdCBjaGFyMTZfdCogYSwgc3RkOjpzcGFu
PGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gYikKK0FMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25z
dCBjaGFyMTZfdCogYSwgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBiKQogewogICAgIHJldHVybiBl
cXVhbChiLmRhdGEoKSwgeyBhLCBiLnNpemUoKSB9KTsKIH0KQEAgLTY0MiwyMCArNjQyLDIwIEBA
IEFMV0FZU19JTkxJTkUgY29uc3QgZG91YmxlKiBmaW5kRG91YmxlKGNvbnN0IGRvdWJsZSogcG9p
bnRlciwgZG91YmxlIHRhcmdldCwgc2l6CiB9CiAjZW5kaWYKIAotV1RGX0VYUE9SVF9QUklWQVRF
IGNvbnN0IExhdGluMUNoYXJhY3RlciogZmluZDhOb25BU0NJSUFsaWduZWRJbXBsKHN0ZDo6c3Bh
bjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsKK1dURl9FWFBPUlRfUFJJVkFURSBjb25zdCBMQ2hh
ciogZmluZDhOb25BU0NJSUFsaWduZWRJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4pOwogV1RG
X0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIxNl90KiBmaW5kMTZOb25BU0NJSUFsaWduZWRJbXBs
KHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4pOwogCiAjaWYgQ1BVKEFSTTY0KQotQUxXQVlTX0lO
TElORSBjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIGZpbmQ4Tm9uQVNDSUkoc3RkOjpzcGFuPGNvbnN0
IExhdGluMUNoYXJhY3Rlcj4gZGF0YSkKK0FMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIGZpbmQ4
Tm9uQVNDSUkoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBkYXRhKQogewogICAgIGNvbnN0ZXhwciBz
aXplX3QgdGhyZXNob2xkTGVuZ3RoID0gMTY7Ci0gICAgc3RhdGljX2Fzc2VydCghKHRocmVzaG9s
ZExlbmd0aCAlICgxNiAvIHNpemVvZihMYXRpbjFDaGFyYWN0ZXIpKSksICJsZW5ndGggdGhyZXNo
b2xkIHNob3VsZCBiZSAxNi1ieXRlIGFsaWduZWQgdG8gbWFrZSBmaW5kOE5vbkFTQ0lJQWxpZ25l
ZEltcGwgc2ltcGxlciIpOworICAgIHN0YXRpY19hc3NlcnQoISh0aHJlc2hvbGRMZW5ndGggJSAo
MTYgLyBzaXplb2YoTENoYXIpKSksICJsZW5ndGggdGhyZXNob2xkIHNob3VsZCBiZSAxNi1ieXRl
IGFsaWduZWQgdG8gbWFrZSBmaW5kOE5vbkFTQ0lJQWxpZ25lZEltcGwgc2ltcGxlciIpOwogICAg
IGF1dG8qIHBvaW50ZXIgPSBkYXRhLmRhdGEoKTsKICAgICBhdXRvIGxlbmd0aCA9IGRhdGEuc2l6
ZSgpOwogICAgIHVpbnRwdHJfdCB1bmFsaWduZWQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ocG9pbnRlcikgJiAweGY7CiAKICAgICBzaXplX3QgaW5kZXggPSAwOwotICAgIHNpemVfdCBy
dW53YXkgPSBzdGQ6Om1pbih0aHJlc2hvbGRMZW5ndGggLSAodW5hbGlnbmVkIC8gc2l6ZW9mKExh
dGluMUNoYXJhY3RlcikpLCBsZW5ndGgpOworICAgIHNpemVfdCBydW53YXkgPSBzdGQ6Om1pbih0
aHJlc2hvbGRMZW5ndGggLSAodW5hbGlnbmVkIC8gc2l6ZW9mKExDaGFyKSksIGxlbmd0aCk7CiAg
ICAgZm9yICg7IGluZGV4IDwgcnVud2F5OyArK2luZGV4KSB7CiAgICAgICAgIGlmICghaXNBU0NJ
SShwb2ludGVyW2luZGV4XSkpCiAgICAgICAgICAgICByZXR1cm4gcG9pbnRlciArIGluZGV4OwpA
QCAtNjg5LDEwICs2ODksNyBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IGNoYXIxNl90KiBmaW5kMTZO
b25BU0NJSShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGRhdGEpCiB9CiAjZW5kaWYKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uY2VwdCBJc0ZpbmRhYmxlQ2hhcmFjdGVyID0gc3RkOjppc19p
bnRlZ3JhbF92PFQ+IHx8IHN0ZDo6c2FtZV9hczxULCBMYXRpbjFDaGFyYWN0ZXI+OwotCi10ZW1w
bGF0ZTxJc0ZpbmRhYmxlQ2hhcmFjdGVyIENoYXJhY3RlclR5cGUxLCBJc0ZpbmRhYmxlQ2hhcmFj
dGVyIENoYXJhY3RlclR5cGUyPgotICAgIHJlcXVpcmVzIChzaXplb2YoQ2hhcmFjdGVyVHlwZTEp
ID09IHNpemVvZihDaGFyYWN0ZXJUeXBlMikpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTIsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19p
bnRlZ3JhbF92PENoYXJhY3RlclR5cGUxPiAmJiBzdGQ6OmlzX2ludGVncmFsX3Y8Q2hhcmFjdGVy
VHlwZTI+ICYmIHNpemVvZihDaGFyYWN0ZXJUeXBlMSkgPT0gc2l6ZW9mKENoYXJhY3RlclR5cGUy
KT4qID0gbnVsbHB0cj4KIGlubGluZSBzaXplX3QgZmluZChzdGQ6OnNwYW48Y29uc3QgQ2hhcmFj
dGVyVHlwZTE+IGNoYXJhY3RlcnMsIENoYXJhY3RlclR5cGUyIG1hdGNoQ2hhcmFjdGVyLCBzaXpl
X3QgaW5kZXggPSAwKQogewogICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKENoYXJhY3RlclR5cGUx
KSA9PSAxKSB7CkBAIC03MjMsMTkgKzcyMCwxOSBAQCBpbmxpbmUgc2l6ZV90IGZpbmQoc3RkOjpz
cGFuPGNvbnN0IENoYXJhY3RlclR5cGUxPiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJUeXBlMiBtYQog
ICAgIHJldHVybiBub3RGb3VuZDsKIH0KIAotQUxXQVlTX0lOTElORSBzaXplX3QgZmluZChzdGQ6
OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGNoYXJhY3RlcnMsIExhdGluMUNoYXJhY3RlciBtYXRjaENo
YXJhY3Rlciwgc2l6ZV90IGluZGV4ID0gMCkKK0FMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmQoc3Rk
OjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyYWN0ZXJzLCBMQ2hhciBtYXRjaENoYXJhY3Rlciwg
c2l6ZV90IGluZGV4ID0gMCkKIHsKICAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBzdGF0aWNf
Y2FzdDxjaGFyMTZfdD4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRleCk7CiB9CiAKLWlubGluZSBzaXpl
X3QgZmluZChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCBjaGFy
MTZfdCBtYXRjaENoYXJhY3Rlciwgc2l6ZV90IGluZGV4ID0gMCkKK2lubGluZSBzaXplX3QgZmlu
ZChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMsIGNoYXIxNl90IG1hdGNoQ2hhcmFj
dGVyLCBzaXplX3QgaW5kZXggPSAwKQogewogICAgIGlmICghaXNMYXRpbjEobWF0Y2hDaGFyYWN0
ZXIpKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgcmV0dXJuIGZpbmQoY2hhcmFjdGVy
cywgc3RhdGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsK
KyAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFy
YWN0ZXIpLCBpbmRleCk7CiB9CiAKLXRlbXBsYXRlPElzRmluZGFibGVDaGFyYWN0ZXIgQ2hhcmFj
dGVyVHlwZTEsIElzRmluZGFibGVDaGFyYWN0ZXIgQ2hhcmFjdGVyVHlwZTI+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTIsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19pbnRlZ3JhbF92PENoYXJhY3RlclR5cGUxPiAmJiBzdGQ6OmlzX2lu
dGVncmFsX3Y8Q2hhcmFjdGVyVHlwZTI+PiogPSBudWxscHRyPgogaW5saW5lIGJvb2wgY29udGFp
bnMoc3RkOjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGUxPiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJU
eXBlMiBtYXRjaENoYXJhY3Rlciwgc2l6ZV90IGluZGV4ID0gMCkKIHsKICAgICByZXR1cm4gZmlu
ZChjaGFyYWN0ZXJzLCBtYXRjaENoYXJhY3RlciwgaW5kZXgpICE9IG5vdEZvdW5kOwpAQCAtNzY4
LDI1ICs3NjUsMjUgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgc2l6ZV90IHJldmVyc2VGaW5kSW5u
ZXIoc3RkOjpzcGFuPGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUKICAgICByZXR1cm4gZGVsdGE7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlV2l0aExlbmd0aChzdGQ6OnNwYW48Y29uc3QgQ2hhcmFj
dGVyVHlwZT4gY2hhcmFjdGVycywgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gbG93
ZXJjYXNlTGV0dGVycywgc2l6ZV90IGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlV2l0aExlbmd0
aChzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4gY2hhcmFjdGVycywgc3RkOjpzcGFuPGNv
bnN0IExDaGFyPiBsb3dlcmNhc2VMZXR0ZXJzLCBzaXplX3QgbGVuZ3RoKQogewogICAgIEFTU0VS
VChjaGFyYWN0ZXJzLnNpemUoKSA+PSBsZW5ndGgpOwogICAgIEFTU0VSVChsb3dlcmNhc2VMZXR0
ZXJzLnNpemUoKSA+PSBsZW5ndGgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3Rl
cnNbaV0sIGJ5dGVDYXN0PGNoYXI+KGxvd2VyY2FzZUxldHRlcnNbaV0pKSkKKyAgICAgICAgaWYg
KCFpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKGNoYXJhY3RlcnNbaV0sIGxvd2VyY2FzZUxldHRl
cnNbaV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RkOjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGU+
IGNoYXJhY3RlcnMsIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGxvd2VyY2FzZUxl
dHRlcnMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4g
Y2hhcmFjdGVycywgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBsb3dlcmNhc2VMZXR0ZXJzKQogewog
ICAgIHJldHVybiBjaGFyYWN0ZXJzLnNpemUoKSA9PSBsb3dlcmNhc2VMZXR0ZXJzLnNpemUoKSAm
JiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhMZW5ndGgoY2hhcmFjdGVycywgbG93
ZXJjYXNlTGV0dGVycywgbG93ZXJjYXNlTGV0dGVycy5zaXplKCkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4gY2hhcmFjdGVycywgc3RkOjpz
cGFuPGNvbnN0IGNoYXI+IGxvd2VyY2FzZUxldHRlcnMpCiB7Ci0gICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNoYXJhY3RlcnMsIGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rl
cj4obG93ZXJjYXNlTGV0dGVycykpOworICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShjaGFyYWN0ZXJzLCBieXRlQ2FzdDxMQ2hhcj4obG93ZXJjYXNlTGV0dGVycykpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4gY2hh
cmFjdGVycywgQVNDSUlMaXRlcmFsIGxvd2VyY2FzZUxldHRlcnMpCkBAIC03OTQsNyArNzkxLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RkOjoKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoY2hhcmFjdGVycywgbG93ZXJjYXNlTGV0dGVycy5zcGFuOCgpKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+IGJvb2wgaW5saW5lIGhhc1ByZWZpeFdpdGhM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmluZywg
c3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gbG93ZXJjYXNlTGV0dGVycykKK3RlbXBs
YXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPiBib29sIGlubGluZSBoYXNQcmVmaXhXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBzdHJpbmcsIHN0ZDo6
c3Bhbjxjb25zdCBMQ2hhcj4gbG93ZXJjYXNlTGV0dGVycykKIHsKICNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIEFTU0VSVChsb3dlcmNhc2VMZXR0ZXJzLmZyb250KCkpOwpAQCAtODA5LDE0ICs4MDYs
MTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+IGJvb2wgaW5saW5lIGhhc1ByZWZp
eFdpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UKIH0KIAogLy8gVGhpcyBpcyBpbnRlbnRpb25h
bGx5IG5vdCBtYXJrZWQgaW5saW5lIGJlY2F1c2UgaXQncyB1c2VkIG9mdGVuIGFuZCBpcyBub3Qg
c3BlZWQtY3JpdGljYWwgZW5vdWdoIHRvIHdhbnQgaXQgaW5saW5lZCBldmVyeXdoZXJlLgotdGVt
cGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmluZywgc3RkOjpzcGFuPGNvbnN0IExh
dGluMUNoYXJhY3Rlcj4gbGl0ZXJhbCkKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPiBi
b29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNz
JiBzdHJpbmcsIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gbGl0ZXJhbCkKIHsKICAgICBpZiAoc3Ry
aW5nLmxlbmd0aCgpICE9IGxpdGVyYWwuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIGhhc1ByZWZpeFdpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb24oc3Ry
aW5nLCBsaXRlcmFsKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3M+IGJvb2wg
c3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihjb25zdCBTdHJpbmdDbGFz
cyYgc3RyaW5nLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBwcmVmaXgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzcz4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBzdHJpbmcsIHN0ZDo6c3Bhbjxjb25z
dCBMQ2hhcj4gcHJlZml4KQogewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMTM1LDEyICsxMTMyLDEyIEBAIGlubGluZSB2b2lkIGNvcHlFbGVtZW50
cyhzdGQ6OnNwYW48ZmxvYXQ+IGRlc3RpbmF0aW9uU3Bhbiwgc3RkOjpzcGFuPGNvbnN0IGRvdWJs
CiB9CiAKICNpZm5kZWYgX19zd2lmdF9fIC8vIEZJWE1FOiByZGFyOi8vMTM2MTU2MjI4Ci1pbmxp
bmUgdm9pZCBjb3B5RWxlbWVudHMoc3RkOjpzcGFuPGNoYXIxNl90PiBkZXN0aW5hdGlvbiwgc3Rk
OjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gc291cmNlKQoraW5saW5lIHZvaWQgY29weUVs
ZW1lbnRzKHN0ZDo6c3BhbjxjaGFyMTZfdD4gZGVzdGluYXRpb24sIHN0ZDo6c3Bhbjxjb25zdCBM
Q2hhcj4gc291cmNlKQogewogICAgIGNvcHlFbGVtZW50cyhzcGFuUmVpbnRlcnByZXRDYXN0PHVp
bnQxNl90PihkZXN0aW5hdGlvbiksIGJ5dGVDYXN0PHVpbnQ4X3Q+KHNvdXJjZSkpOwogfQogCi1p
bmxpbmUgdm9pZCBjb3B5RWxlbWVudHMoc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gZGVzdGlu
YXRpb24sIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gc291cmNlKQoraW5saW5lIHZvaWQgY29w
eUVsZW1lbnRzKHN0ZDo6c3BhbjxMQ2hhcj4gZGVzdGluYXRpb24sIHN0ZDo6c3Bhbjxjb25zdCBj
aGFyMTZfdD4gc291cmNlKQogewogICAgIGNvcHlFbGVtZW50cyhieXRlQ2FzdDx1aW50OF90Pihk
ZXN0aW5hdGlvbiksIHNwYW5SZWludGVycHJldENhc3Q8Y29uc3QgdWludDE2X3Q+KHNvdXJjZSkp
OwogfQpAQCAtMTE0OSw4ICsxMTQ2LDggQEAgaW5saW5lIHZvaWQgY29weUVsZW1lbnRzKHN0ZDo6
c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGRlc3RpbmF0aW9uLCBzdGQ6OnNwYW48Y29uc3QKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIENoYXJhY3RlclR5cGUuLi4gY2hhcmFjdGVycz4K
IEFMV0FZU19JTkxJTkUgYm9vbCBjb21wYXJlRWFjaChDaGFyYWN0ZXJUeXBlIGlucHV0KQogewot
ICAgIC8vIFVzZSB8IGludGVudGlvbmFsbHkgdG8gcmVkdWNlIGJyYW5jaGVzLiBDYXN0IHRvIGlu
dCB0byBzaWxlbmNlICJ1c2Ugb2YgYml0d2lzZSAnfCcgd2l0aCBib29sZWFuIG9wZXJhbmRzIiB3
YXJuaW5nLgotICAgIHJldHVybiAoLi4uIHwgc3RhdGljX2Nhc3Q8aW50PihpbnB1dCA9PSBjaGFy
YWN0ZXJzKSk7CisgICAgLy8gVXNlIHwgaW50ZW50aW9uYWxseSB0byByZWR1Y2UgYnJhbmNoZXMu
CisgICAgcmV0dXJuICguLi4gfCAoaW5wdXQgPT0gY2hhcmFjdGVycykpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBDaGFyYWN0ZXJUeXBlLi4uIGNoYXJhY3RlcnM+CkBA
IC0xMTYxLDcgKzExNTgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFjdGVyc0NvbnRhaW4o
c3RkOjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGU+IHNwYW4pCiAKICNpZiBDUFUoQVJNNjQpIHx8
IENQVShYODZfNjQpCiAgICAgY29uc3RleHByIHNpemVfdCBzdHJpZGUgPSBTSU1EOjpzdHJpZGU8
Q2hhcmFjdGVyVHlwZT47Ci0gICAgdXNpbmcgVW5zaWduZWRUeXBlID0gU0lNRDo6U2FtZVNpemVV
bnNpZ25lZEludGVnZXI8Q2hhcmFjdGVyVHlwZT47CisgICAgdXNpbmcgVW5zaWduZWRUeXBlID0g
c3RkOjptYWtlX3Vuc2lnbmVkX3Q8Q2hhcmFjdGVyVHlwZT47CiAgICAgdXNpbmcgQnVsa1R5cGUg
PSBkZWNsdHlwZShTSU1EOjpsb2FkKHN0YXRpY19jYXN0PGNvbnN0IFVuc2lnbmVkVHlwZSo+KG51
bGxwdHIpKSk7CiAgICAgaWYgKGxlbmd0aCA+PSBzdHJpZGUpIHsKICAgICAgICAgc2l6ZV90IGlu
ZGV4ID0gMDsKQEAgLTExODYsMTQgKzExODMsMTYgQEAgQUxXQVlTX0lOTElORSBib29sIGNoYXJh
Y3RlcnNDb250YWluKHN0ZDo6c3Bhbjxjb25zdCBDaGFyYWN0ZXJUeXBlPiBzcGFuKQogdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIGlubGluZSBzaXplX3QgY291bnRNYXRjaGVkQ2hh
cmFjdGVycyhzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4gc3BhbiwgQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpCiB7Ci0gICAgdXNpbmcgVW5zaWduZWRUeXBlID0gU0lNRDo6U2FtZVNpemVV
bnNpZ25lZEludGVnZXI8Q2hhcmFjdGVyVHlwZT47CisgICAgdXNpbmcgVW5zaWduZWRUeXBlID0g
c3RkOjptYWtlX3Vuc2lnbmVkX3Q8Q2hhcmFjdGVyVHlwZT47CiAgICAgYXV0byBtYXNrID0gU0lN
RDo6c3BsYXQ8VW5zaWduZWRUeXBlPihjaGFyYWN0ZXIpOwogICAgIGF1dG8gdmVjdG9yTWF0Y2gg
PSBbJl0oYXV0byBpbnB1dCkgQUxXQVlTX0lOTElORV9MQU1CREEgewogICAgICAgICByZXR1cm4g
U0lNRDo6ZXF1YWwoaW5wdXQsIG1hc2spOwogICAgIH07CisKICAgICBhdXRvIHNjYWxhck1hdGNo
ID0gWyZdKGF1dG8gaW5wdXQpIEFMV0FZU19JTkxJTkVfTEFNQkRBIHsKICAgICAgICAgcmV0dXJu
IGlucHV0ID09IGNoYXJhY3RlcjsKICAgICB9OworCiAgICAgcmV0dXJuIFNJTUQ6OmNvdW50KHNw
YW4sIHZlY3Rvck1hdGNoLCBzY2FsYXJNYXRjaCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaAppbmRleCAzNWUyMTIzMjNmNzUuLmFkZjc1NjdiZWM5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gMTsgfQogICAgIGJvb2wg
aXM4Qml0KCkgY29uc3QgeyByZXR1cm4gaXNMYXRpbjEobV9jaGFyYWN0ZXIpOyB9CiAKLSAgICB2
b2lkIHdyaXRlVG8oc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gZGVzdGluYXRpb24pIGNvbnN0
CisgICAgdm9pZCB3cml0ZVRvKHN0ZDo6c3BhbjxMQ2hhcj4gZGVzdGluYXRpb24pIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQoaXM4Qml0KCkpOwogICAgICAgICBkZXN0aW5hdGlvblswXSA9
IG1fY2hhcmFjdGVyOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBVMTZfTEVOR1RIKG1fY2hhcmFjdGVyKTsgfQogICAgIGJv
b2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gaXNMYXRpbjEobV9jaGFyYWN0ZXIpOyB9CiAKLSAg
ICB2b2lkIHdyaXRlVG8oc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gZGVzdGluYXRpb24pIGNv
bnN0CisgICAgdm9pZCB3cml0ZVRvKHN0ZDo6c3BhbjxMQ2hhcj4gZGVzdGluYXRpb24pIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoaXM4Qml0KCkpOwogICAgICAgICBkZXN0aW5hdGlvblsw
XSA9IG1fY2hhcmFjdGVyOwpAQCAtMTIwLDkgKzEyMCw5IEBAIHByaXZhdGU6CiAgICAgY2hhcjMy
X3QgbV9jaGFyYWN0ZXI7CiB9OwogCi10ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVy
PGNvbnN0IExhdGluMUNoYXJhY3RlciosIHZvaWQ+IHsKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5n
VHlwZUFkYXB0ZXI8Y29uc3QgTENoYXIqLCB2b2lkPiB7CiBwdWJsaWM6Ci0gICAgU3RyaW5nVHlw
ZUFkYXB0ZXIoY29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBjaGFyYWN0ZXJzKQorICAgIFN0cmluZ1R5
cGVBZGFwdGVyKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKQogICAgICAgICA6IG1fY2hhcmFjdGVy
cyB7IHVuc2FmZVNwYW4oY2hhcmFjdGVycykgfQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV9jaGFyYWN0ZXJzLnNpemUoKSA8PSBTdHJpbmc6Ok1heExlbmd0aCk7CkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZv
aWQgd3JpdGVUbyhzdGQ6OnNwYW48Q2hhcmFjdGVyVHlwZT4gZGVzdGluYXRpb24pIGNvbnN0IHsg
U3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVzdGluYXRpb24sIG1fY2hhcmFjdGVycyk7IH0K
IAogcHJpdmF0ZToKLSAgICBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBtX2NoYXJh
Y3RlcnM7CisgICAgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBtX2NoYXJhY3RlcnM7CiB9OwogCiB0
ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNvbnN0IGNoYXIxNl90Kiwgdm9pZD4g
ewpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVycy5zaXplKCk7IH0KICAgICBib29sIGlzOEJpdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVycy5lbXB0eSgpOyB9Ci0gICAgdm9pZCB3cml0ZVRvKHN0
ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+KSBjb25zdCB7IEFTU0VSVChtX2NoYXJhY3RlcnMuZW1w
dHkoKSk7IH0KKyAgICB2b2lkIHdyaXRlVG8oc3RkOjpzcGFuPExDaGFyPikgY29uc3QgeyBBU1NF
UlQobV9jaGFyYWN0ZXJzLmVtcHR5KCkpOyB9CiAgICAgdm9pZCB3cml0ZVRvKHN0ZDo6c3Bhbjxj
aGFyMTZfdD4gZGVzdGluYXRpb24pIGNvbnN0IHsgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMo
ZGVzdGluYXRpb24sIG1fY2hhcmFjdGVycyk7IH0KIAogcHJpdmF0ZToKQEAgLTE2Niw3ICsxNjYs
NyBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXN0aW5hdGlvbkNoYXJhY3Rl
clR5cGU+IHZvaWQgd3JpdGVUbyhzdGQ6OnNwYW48RGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlPiBk
ZXN0aW5hdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHVzaW5nIENoYXJhY3RlclR5cGVGb3JT
dHJpbmcgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8c2l6ZW9mKENoYXJhY3RlclR5cGUpID09IHNpemVv
ZihMYXRpbjFDaGFyYWN0ZXIpLCBMYXRpbjFDaGFyYWN0ZXIsIGNoYXIxNl90PjsKKyAgICAgICAg
dXNpbmcgQ2hhcmFjdGVyVHlwZUZvclN0cmluZyA9IHN0ZDo6Y29uZGl0aW9uYWxfdDxzaXplb2Yo
Q2hhcmFjdGVyVHlwZSkgPT0gc2l6ZW9mKExDaGFyKSwgTENoYXIsIGNoYXIxNl90PjsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ2hhcmFjdGVyVHlwZUZvclN0cmluZykgPT0gc2l6ZW9m
KENoYXJhY3RlclR5cGUpKTsKICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoZGVz
dGluYXRpb24sIHNwYW5SZWludGVycHJldENhc3Q8Y29uc3QgQ2hhcmFjdGVyVHlwZUZvclN0cmlu
Zz4obV9jaGFyYWN0ZXJzKSk7CiAgICAgfQpAQCAtMTgzLDEwICsxODMsMTAgQEAgcHVibGljOgog
ICAgIH0KIH07CiAKLXRlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8QVNDSUlMaXRl
cmFsLCB2b2lkPiA6IHB1YmxpYyBTdHJpbmdUeXBlQWRhcHRlcjxzdGQ6OnNwYW48Y29uc3QgTGF0
aW4xQ2hhcmFjdGVyPiwgdm9pZD4gewordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRl
cjxBU0NJSUxpdGVyYWwsIHZvaWQ+IDogcHVibGljIFN0cmluZ1R5cGVBZGFwdGVyPHN0ZDo6c3Bh
bjxjb25zdCBMQ2hhcj4sIHZvaWQ+IHsKIHB1YmxpYzoKICAgICBTdHJpbmdUeXBlQWRhcHRlcihB
U0NJSUxpdGVyYWwgY2hhcmFjdGVycykKLSAgICAgICAgOiBTdHJpbmdUeXBlQWRhcHRlcjxzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiwgdm9pZD4geyBjaGFyYWN0ZXJzLnNwYW44KCkg
fQorICAgICAgICA6IFN0cmluZ1R5cGVBZGFwdGVyPHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4sIHZv
aWQ+IHsgY2hhcmFjdGVycy5zcGFuOCgpIH0KICAgICB7CiAgICAgfQogfTsKQEAgLTI4MCw3ICsy
ODAsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2NoYXJhY3RlcnMubGVuZ3RoVVRGMTY7IH0KICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhcmFjdGVycy5pc0FsbEFTQ0lJOyB9Ci0gICAgdm9pZCB3cml0ZVRvKHN0ZDo6c3Bh
bjxMYXRpbjFDaGFyYWN0ZXI+IGRlc3RpbmF0aW9uKSBjb25zdCB7IG1lbWNweVNwYW4oZGVzdGlu
YXRpb24sIHVuc2FmZU1ha2VTcGFuKG1fY2hhcmFjdGVycy5jaGFyYWN0ZXJzLmRhdGEoKSwgbV9j
aGFyYWN0ZXJzLmxlbmd0aFVURjE2KSk7IH0KKyAgICB2b2lkIHdyaXRlVG8oc3RkOjpzcGFuPExD
aGFyPiBkZXN0aW5hdGlvbikgY29uc3QgeyBtZW1jcHlTcGFuKGRlc3RpbmF0aW9uLCB1bnNhZmVN
YWtlU3BhbihtX2NoYXJhY3RlcnMuY2hhcmFjdGVycy5kYXRhKCksIG1fY2hhcmFjdGVycy5sZW5n
dGhVVEYxNikpOyB9CiAjaWZuZGVmIF9fc3dpZnRfXyAvLyBGSVhNRTogVGhpcyBmYWlscyB0byBj
b21waWxlIGJlY2F1c2Ugb2YgcmRhcjovLzEzNjE1NjIyOAogICAgIHZvaWQgd3JpdGVUbyhzdGQ6
OnNwYW48Y2hhcjE2X3Q+IGRlc3RpbmF0aW9uKSBjb25zdCB7IFVuaWNvZGU6OmNvbnZlcnQobV9j
aGFyYWN0ZXJzLmNoYXJhY3RlcnMsIGRlc3RpbmF0aW9uLmZpcnN0KG1fY2hhcmFjdGVycy5sZW5n
dGhVVEYxNikpOyB9CiAjZW5kaWYKQEAgLTMzNSwxNCArMzM1LDE0IEBAIHByaXZhdGU6CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBVbmRlcmx5aW5nRWxlbWVudFR5cGU+IHN0cnVjdCBQYWRkaW5n
U3BlY2lmaWNhdGlvbiB7Ci0gICAgTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3RlcjsKKyAgICBMQ2hh
ciBjaGFyYWN0ZXI7CiAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIFVuZGVybHlpbmdFbGVtZW50
VHlwZSB1bmRlcmx5aW5nRWxlbWVudDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFVuZGVybHlp
bmdFbGVtZW50VHlwZT4gUGFkZGluZ1NwZWNpZmljYXRpb248VW5kZXJseWluZ0VsZW1lbnRUeXBl
PiBwYWQoY2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIGxlbmd0aCwgVW5kZXJseWluZ0VsZW1lbnRU
eXBlIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIHsgYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihj
aGFyYWN0ZXIpLCBsZW5ndGgsIGVsZW1lbnQgfTsKKyAgICByZXR1cm4geyBieXRlQ2FzdDxMQ2hh
cj4oY2hhcmFjdGVyKSwgbGVuZ3RoLCBlbGVtZW50IH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFVuZGVybHlpbmdFbGVtZW50VHlwZT4gY2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8UGFkZGluZ1Nw
ZWNpZmljYXRpb248VW5kZXJseWluZ0VsZW1lbnRUeXBlPj4gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmgKaW5kZXggYzhkN2U2ZWE0M2ZjLi40MmMx
NDBjYzExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGVOdW1iZXJzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51
bWJlcnMuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKHN0ZDo6c3BhbjxDaGFyYWN0ZXJUeXBlPiBkZXN0
aW5hdGlvbikgY29uc3QgeyBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwg
c3BhbigpKTsgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0
ZXI+IHNwYW4oKSBjb25zdCBMSUZFVElNRV9CT1VORCB7IHJldHVybiBieXRlQ2FzdDxMYXRpbjFD
aGFyYWN0ZXI+KHN0ZDo6c3BhbiB7IG1fYnVmZmVyIH0pLmZpcnN0KG1fbGVuZ3RoKTsgfQorICAg
IHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3BhbigpIGNvbnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0
dXJuIGJ5dGVDYXN0PExDaGFyPihzdGQ6OnNwYW4geyBtX2J1ZmZlciB9KS5maXJzdChtX2xlbmd0
aCk7IH0KIAogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIG1fYnVmZmVyOwogICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOwpAQCAtMTA1LDggKzEwNSw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIGNvbnN0IExhdGlu
MUNoYXJhY3RlciogYnVmZmVyKCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gYnl0ZUNh
c3Q8TGF0aW4xQ2hhcmFjdGVyPigmbV9idWZmZXJbMF0pOyB9Ci0gICAgc3RkOjpzcGFuPGNvbnN0
IExhdGluMUNoYXJhY3Rlcj4gc3BhbigpIGNvbnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIGJ5
dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oc3RkOjpzcGFuIHsgbV9idWZmZXIgfSkuZmlyc3QobV9s
ZW5ndGgpOyB9CisgICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IExJRkVUSU1FX0JPVU5E
IHsgcmV0dXJuIGJ5dGVDYXN0PExDaGFyPigmbV9idWZmZXJbMF0pOyB9CisgICAgc3RkOjpzcGFu
PGNvbnN0IExDaGFyPiBzcGFuKCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gYnl0ZUNh
c3Q8TENoYXI+KHN0ZDo6c3BhbiB7IG1fYnVmZmVyIH0pLmZpcnN0KG1fbGVuZ3RoKTsgfQogCiBw
cml2YXRlOgogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIG1fYnVmZmVyOwpAQCAtMTM5LDggKzEz
OSw4IEBAIHB1YmxpYzoKICAgICB9IAogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KLSAgICBjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIGJ1ZmZlcigpIGNv
bnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oJm1f
YnVmZmVyWzBdKTsgfQotICAgIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHNwYW4o
KSBjb25zdCBMSUZFVElNRV9CT1VORCB7IHJldHVybiBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+
KHN0ZDo6c3BhbiB7IG1fYnVmZmVyIH0pLmZpcnN0KG1fbGVuZ3RoKTsgfQorICAgIGNvbnN0IExD
aGFyKiBidWZmZXIoKSBjb25zdCBMSUZFVElNRV9CT1VORCB7IHJldHVybiBieXRlQ2FzdDxMQ2hh
cj4oJm1fYnVmZmVyWzBdKTsgfQorICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3BhbigpIGNv
bnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIGJ5dGVDYXN0PExDaGFyPihzdGQ6OnNwYW4geyBt
X2J1ZmZlciB9KS5maXJzdChtX2xlbmd0aCk7IH0KIAogcHJpdmF0ZToKICAgICBOdW1iZXJUb0NT
U1N0cmluZ0J1ZmZlciBtX2J1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSGFzaGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2hlci5oCmluZGV4
IDQxNTFjODZiZDc2Yi4uYjM1MDljYWEyNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0hhc2hlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaGVy
LmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0xhdGluMUNoYXJhY3Rlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xD
aGFyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00OSwxNSArNDksMTEgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc21hbGxTdHJpbmdUaHJlc2hvbGQgPSBudW1i
ZXJPZkNoYXJhY3RlcnNJbkxhcmdlc3RCdWxrRm9yV1lIYXNoICogMjsKIAogICAgIHN0cnVjdCBE
ZWZhdWx0Q29udmVydGVyIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdCBjb252ZXJ0KENoYXJhY3RlclR5
cGUgY2hhcmFjdGVyKQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdCBjb252ZXJ0KENoYXJUeXBlIGNoYXJhY3RlcikK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHVuc2lnbmVkQ2FzdChjaGFyYWN0ZXIpOwog
ICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhcjE2X3QgY29udmVydChMYXRp
bjFDaGFyYWN0ZXIgY2hhcmFjdGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY2hh
cmFjdGVyOwotICAgICAgICB9CiAgICAgfTsKIAogICAgIFN0cmluZ0hhc2hlcigpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDg2OTIzY2Q2ZTY4NS4uMjg0NjM1
MTJkOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTEzOSwxMSArMTM5LDEx
IEBAIFN0cmluZ0ltcGw6On5TdHJpbmdJbXBsKCkKICAgICBjYXNlIEJ1ZmZlck93bmVkOgogICAg
ICAgICAvLyBXZSB1c2UgbV9kYXRhOCwgYnV0IHNpbmNlIGl0IGlzIGEgdW5pb24gd2l0aCBtX2Rh
dGExNiB0aGlzIHdvcmtzIGVpdGhlciB3YXkuCiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKLSAg
ICAgICAgU3RyaW5nSW1wbE1hbGxvYzo6ZnJlZShjb25zdF9jYXN0PExhdGluMUNoYXJhY3Rlcio+
KG1fZGF0YTgpKTsKKyAgICAgICAgU3RyaW5nSW1wbE1hbGxvYzo6ZnJlZShjb25zdF9jYXN0PExD
aGFyKj4obV9kYXRhOCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJ1ZmZlckV4dGVybmFs
OiB7CiAgICAgICAgIGF1dG8qIGV4dGVybmFsID0gc3RhdGljX2Nhc3Q8RXh0ZXJuYWxTdHJpbmdJ
bXBsKj4odGhpcyk7Ci0gICAgICAgIGV4dGVybmFsLT5mcmVlRXh0ZXJuYWxCdWZmZXIoY29uc3Rf
Y2FzdDxMYXRpbjFDaGFyYWN0ZXIqPihtX2RhdGE4KSwgc2l6ZUluQnl0ZXMoKSk7CisgICAgICAg
IGV4dGVybmFsLT5mcmVlRXh0ZXJuYWxCdWZmZXIoY29uc3RfY2FzdDxMQ2hhcio+KG1fZGF0YTgp
LCBzaXplSW5CeXRlcygpKTsKICAgICAgICAgZXh0ZXJuYWwtPm1fZnJlZS5+RXh0ZXJuYWxTdHJp
bmdJbXBsRnJlZUZ1bmN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE2Niw3ICsx
NjYsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmdO
b25FbXB0eShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2XwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0cmluZ0ltcGwoY2hhcmFjdGVycywgQ29uc3RydWN0V2l0aG91dENvcHlpbmcpKTsKIH0KIAot
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nTm9uRW1wdHko
c3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVycykKK1JlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZ05vbkVtcHR5KHN0ZDo6c3Bhbjxj
b25zdCBMQ2hhcj4gY2hhcmFjdGVycykKIHsKICAgICBBU1NFUlQoIWNoYXJhY3RlcnMuZW1wdHko
KSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nSW1wbChjaGFyYWN0ZXJzLCBDb25z
dHJ1Y3RXaXRob3V0Q29weWluZykpOwpAQCAtMTk2LDEwICsxOTYsMTAgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXQKICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8Q2hhcmFjdGVyVHlwZT4o
KnN0cmluZywgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHNpemVfdCBsZW5ndGgsIHN0
ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+JiBkYXRhKTsKK3RlbXBsYXRlIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShzaXplX3Qg
bGVuZ3RoLCBzdGQ6OnNwYW48TENoYXI+JiBkYXRhKTsKIHRlbXBsYXRlIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShzaXplX3Qg
bGVuZ3RoLCBzdGQ6OnNwYW48Y2hhcjE2X3Q+JiBkYXRhKTsKIAotUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgc3RkOjpzcGFuPExh
dGluMUNoYXJhY3Rlcj4mIGRhdGEpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRl
VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBzdGQ6OnNwYW48TENoYXI+JiBkYXRhKQogewog
ICAgIHJldHVybiBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWwobGVuZ3RoLCBkYXRhKTsKIH0K
QEAgLTIzMiw3ICsyMzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxp
bmUgRXhwZWN0ZWQ8UmVmPFN0cmluZ0ltcGw+LCBVVEY4Q29udmVyc2lvbgogICAgIHJldHVybiBj
b25zdHJ1Y3RJbnRlcm5hbDxDaGFyYWN0ZXJUeXBlPigqc3RyaW5nLCBsZW5ndGgpOwogfQogCi1S
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZShSZWY8U3RyaW5nSW1wbD4mJiBv
cmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMYXRpbjFDaGFyYWN0ZXIqJiBkYXRhKQor
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYg
b3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKQogewogICAgIGF1
dG8gZXhwZWN0ZWRTdHJpbmdJbXBsID0gdHJ5UmVhbGxvY2F0ZShXVEZNb3ZlKG9yaWdpbmFsU3Ry
aW5nKSwgbGVuZ3RoLCBkYXRhKTsKICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3RlZFN0cmluZ0lt
cGwpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFs
bG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lCiAgICAgcmV0
dXJuIFdURk1vdmUoZXhwZWN0ZWRTdHJpbmdJbXBsLnZhbHVlKCkpOwogfQogCi1FeHBlY3RlZDxS
ZWY8U3RyaW5nSW1wbD4sIFVURjhDb252ZXJzaW9uRXJyb3I+IFN0cmluZ0ltcGw6OnRyeVJlYWxs
b2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYgb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwg
TGF0aW4xQ2hhcmFjdGVyKiYgZGF0YSkKK0V4cGVjdGVkPFJlZjxTdHJpbmdJbXBsPiwgVVRGOENv
bnZlcnNpb25FcnJvcj4gU3RyaW5nSW1wbDo6dHJ5UmVhbGxvY2F0ZShSZWY8U3RyaW5nSW1wbD4m
JiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpCiB7CiAgICAg
QVNTRVJUKG9yaWdpbmFsU3RyaW5nLT5pczhCaXQoKSk7CiAgICAgcmV0dXJuIHJlYWxsb2NhdGVJ
bnRlcm5hbChXVEZNb3ZlKG9yaWdpbmFsU3RyaW5nKSwgbGVuZ3RoLCBkYXRhKTsKQEAgLTI3Mywz
MSArMjczLDEyIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGUoc3RkOjpzcGFu
PGNvbnN0IGNoYXIxNl90PiBjaGFyYWN0ZXJzKQogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChj
aGFyYWN0ZXJzKTsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQorUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNyZWF0ZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZUludGVybmFsKGNoYXJhY3RlcnMpOwogfQogCi1SZWZQdHI8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlKHN0ZDo6c3Bhbjxjb25zdCBjaGFyOF90PiBjaGFy
YWN0ZXJzLCBSZXBsYWNlSW52YWxpZFNlcXVlbmNlcyByZXBsYWNlSW52YWxpZFNlcXVlbmNlcykK
LXsKLSAgICBpZiAoY2hhcmFjdGVycy5lbXB0eSgpKQotICAgICAgICByZXR1cm4gKmVtcHR5KCk7
Ci0gICAgaWYgKGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjaGFyYWN0ZXJzKSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZShieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNoYXJhY3RlcnMpKTsKLSAgICBW
ZWN0b3I8Y2hhcjE2X3QsIDEwMjQ+IGJ1ZmZlcihjaGFyYWN0ZXJzLnNpemUoKSk7Ci0gICAgYXV0
byByZXN1bHQgPSByZXBsYWNlSW52YWxpZFNlcXVlbmNlcyA9PSBSZXBsYWNlSW52YWxpZFNlcXVl
bmNlczo6Tm8KLSAgICAgICAgPyBVbmljb2RlOjpjb252ZXJ0KGNoYXJhY3RlcnMsIGJ1ZmZlci5t
dXRhYmxlU3BhbigpKQotICAgICAgICA6IFVuaWNvZGU6OmNvbnZlcnRSZXBsYWNpbmdJbnZhbGlk
U2VxdWVuY2VzKGNoYXJhY3RlcnMsIGJ1ZmZlci5tdXRhYmxlU3BhbigpKTsKLSAgICBpZiAocmVz
dWx0LmNvZGUgIT0gVW5pY29kZTo6Q29udmVyc2lvblJlc3VsdENvZGU6OlN1Y2Nlc3MpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ocmVzdWx0LmJ1ZmZlci5zaXplKCkgPD0gY2hhcmFjdGVycy5zaXplKCkpOwotICAg
IHN0ZDo6c3BhbjxjaGFyMTZfdD4gZGF0YTsKLSAgICBhdXRvIHN0cmluZyA9IGNyZWF0ZVVuaW5p
dGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHJlc3VsdC5idWZmZXIuc2l6ZSgpLCBkYXRhKTsKLSAg
ICBjb3B5Q2hhcmFjdGVycyhkYXRhLCBzcGFuQ29uc3RDYXN0PGNvbnN0IGNoYXIxNl90PihyZXN1
bHQuYnVmZmVyKSk7Ci0gICAgcmV0dXJuIHN0cmluZzsKLX0KLQotUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNo
YXJhY3Rlcj4gY2hhcmFjdGVycykKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVT
dGF0aWNTdHJpbmdJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gY2hhcmFjdGVycykKIHsKICAg
ICBpZiAoY2hhcmFjdGVycy5lbXB0eSgpKQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7CkBAIC0z
MjIsMTQgKzMwMywxNCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElm
UG9zc2libGUoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyYQogICAgIGlmIChjaGFyYWN0
ZXJzLmVtcHR5KCkpCiAgICAgICAgIHJldHVybiAqZW1wdHkoKTsKIAotICAgIHN0ZDo6c3BhbjxM
YXRpbjFDaGFyYWN0ZXI+IGRhdGE7CisgICAgc3RkOjpzcGFuPExDaGFyPiBkYXRhOwogICAgIGF1
dG8gc3RyaW5nID0gY3JlYXRlVW5pbml0aWFsaXplZEludGVybmFsTm9uRW1wdHkoY2hhcmFjdGVy
cy5zaXplKCksIGRhdGEpOwogCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoYXV0byBjaGFy
YWN0ZXIgOiBjaGFyYWN0ZXJzKSB7CiAgICAgICAgIGlmICghaXNMYXRpbjEoY2hhcmFjdGVyKSkK
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGUoY2hhcmFjdGVycyk7Ci0gICAgICAgIGRhdGFbaSsr
XSA9IHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oY2hhcmFjdGVyKTsKKyAgICAgICAgZGF0
YVtpKytdID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rlcik7CiAgICAgfQogCiAgICAgcmV0
dXJuIHN0cmluZzsKQEAgLTM3Myw3ICszNTQsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpCiAgICAgaWYgKGlzOEJpdCgpKSB7
CiAgICAgICAgIGF1dG8gc3BhbiA9IHNwYW44KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzcGFuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBMYXRpbjFDaGFyYWN0ZXIg
Y2hhcmFjdGVyID0gc3BhbltpXTsKKyAgICAgICAgICAgIExDaGFyIGNoYXJhY3RlciA9IHNwYW5b
aV07CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUkoY2hhcmFjdGVyKSB8fCBpc0FTQ0lJVXBwZXIo
Y2hhcmFjdGVyKSkgW1t1bmxpa2VseV1dCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b0xvd2VyY2FzZVdpdGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdChpKTsKICAg
ICAgICAgfQpAQCAtNDI3LDcgKzQwOCw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpj
b252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCkKIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRl
eDhCaXQodW5zaWduZWQgZmFpbGluZ0luZGV4KQogewogICAgIEFTU0VSVChpczhCaXQoKSk7Ci0g
ICAgc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gZGF0YTg7CisgICAgc3RkOjpzcGFuPExDaGFy
PiBkYXRhODsKICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxO
b25FbXB0eShtX2xlbmd0aCwgZGF0YTgpOwogCiAgICAgYXV0byBzcGFuID0gc3BhbjgoKTsKQEAg
LTQzOCwxMiArNDE5LDEyIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9M
b3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRlCiAgICAgfQogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZmFpbGluZ0luZGV4OyBpIDwgc3Bhbi5zaXplKCk7ICsraSkgewot
ICAgICAgICBMYXRpbjFDaGFyYWN0ZXIgY2hhcmFjdGVyID0gc3BhbltpXTsKKyAgICAgICAgTENo
YXIgY2hhcmFjdGVyID0gc3BhbltpXTsKICAgICAgICAgaWYgKGlzQVNDSUkoY2hhcmFjdGVyKSkK
ICAgICAgICAgICAgIGRhdGE4W2ldID0gdG9BU0NJSUxvd2VyKGNoYXJhY3Rlcik7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGlzTGF0aW4xKHVfdG9sb3dlcihjaGFyYWN0ZXIp
KSk7Ci0gICAgICAgICAgICBkYXRhOFtpXSA9IHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4o
dV90b2xvd2VyKGNoYXJhY3RlcikpOworICAgICAgICAgICAgZGF0YThbaV0gPSBzdGF0aWNfY2Fz
dDxMQ2hhcj4odV90b2xvd2VyKGNoYXJhY3RlcikpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00
NjQsNyArNDQ1LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb1VwcGVy
Y2FzZVdpdGhvdXRMb2NhbGUoKQogICAgIGlmIChpczhCaXQoKSkgewogICAgICAgICBhdXRvIHNw
YW4gPSBzcGFuOCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3Bhbi5zaXpl
KCk7ICsraSkgewotICAgICAgICAgICAgTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3RlciA9IHNwYW5b
aV07CisgICAgICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSBzcGFuW2ldOwogICAgICAgICAgICAg
aWYgKCFpc0FTQ0lJKGNoYXJhY3RlcikgfHwgaXNBU0NJSUxvd2VyKGNoYXJhY3RlcikpIFtbdW5s
aWtlbHldXQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0
TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRleDhCaXQoaSk7CiAgICAgICAgIH0KQEAgLTQ3Niw3
ICs0NTcsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBwZXJjYXNl
V2l0aG91dExvY2FsZSgpCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBw
ZXJjYXNlV2l0aG91dExvY2FsZVN0YXJ0aW5nQXRGYWlsaW5nSW5kZXg4Qml0KHVuc2lnbmVkIGZh
aWxpbmdJbmRleCkKIHsKICAgICBBU1NFUlQoaXM4Qml0KCkpOwotICAgIHN0ZDo6c3BhbjxMYXRp
bjFDaGFyYWN0ZXI+IGRlc3RpbmF0aW9uOworICAgIHN0ZDo6c3BhbjxMQ2hhcj4gZGVzdGluYXRp
b247CiAgICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZChtX2xlbmd0aCwgZGVz
dGluYXRpb24pOwogCiAgICAgYXV0byBzcGFuID0gc3BhbjgoKTsKQEAgLTQ4OSw3ICs0NzAsNyBA
QCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExv
Y2FsZVN0YXJ0aW5nQXRGYWlsaW5nSW5kZQogICAgIC8vIERvIGEgZmFzdGVyIGxvb3AgZm9yIHRo
ZSBjYXNlIHdoZXJlIGFsbCB0aGUgY2hhcmFjdGVycyBhcmUgQVNDSUkuCiAgICAgdW5zaWduZWQg
b3JlZCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmFpbGluZ0luZGV4OyBpIDwgc3Bhbi5z
aXplKCk7ICsraSkgewotICAgICAgICBMYXRpbjFDaGFyYWN0ZXIgY2hhcmFjdGVyID0gc3Bhbltp
XTsKKyAgICAgICAgTENoYXIgY2hhcmFjdGVyID0gc3BhbltpXTsKICAgICAgICAgb3JlZCB8PSBj
aGFyYWN0ZXI7CiAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gdG9BU0NJSVVwcGVyKGNoYXJhY3Rl
cik7CiAgICAgfQpAQCAtNTAzLDcgKzQ4NCw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
Ojpjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxpbmdJbmRlCiAg
ICAgLy8gIDEuIFNvbWUgTGF0aW4tMSBjaGFyYWN0ZXJzIHdoZW4gY29udmVydGVkIHRvIHVwcGVy
IGNhc2UgYXJlIDE2IGJpdCBjaGFyYWN0ZXJzLgogICAgIC8vICAyLiBMb3dlciBjYXNlIHNoYXJw
LVMgY29udmVydHMgdG8gIlNTIiAodHdvIGNoYXJhY3RlcnMpCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNwYW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTGF0aW4xQ2hhcmFjdGVyIGNo
YXJhY3RlciA9IHNwYW5baV07CisgICAgICAgIExDaGFyIGNoYXJhY3RlciA9IHNwYW5baV07CiAg
ICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gc21hbGxMZXR0ZXJTaGFycFMpIFtbdW5saWtlbHldXQog
ICAgICAgICAgICAgKytudW1iZXJTaGFycFNDaGFyYWN0ZXJzOwogICAgICAgICBBU1NFUlQodV90
b3VwcGVyKGNoYXJhY3RlcikgPD0gMHhGRkZGKTsKQEAgLTUxMiw3ICs0OTMsNyBAQCBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZVN0YXJ0
aW5nQXRGYWlsaW5nSW5kZQogICAgICAgICAgICAgLy8gU2luY2UgdGhpcyB1cHBlci1jYXNlZCBj
aGFyYWN0ZXIgZG9lcyBub3QgZml0IGluIGFuIDgtYml0IHN0cmluZywgd2UgbmVlZCB0byB0YWtl
IHRoZSAxNi1iaXQgcGF0aC4KICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9VcHBlcmNhc2VX
aXRob3V0TG9jYWxlVXBjb252ZXJ0KCk7CiAgICAgICAgIH0KLSAgICAgICAgZGVzdGluYXRpb25b
aV0gPSBzdGF0aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHVwcGVyKTsKKyAgICAgICAgZGVzdGlu
YXRpb25baV0gPSBzdGF0aWNfY2FzdDxMQ2hhcj4odXBwZXIpOwogICAgIH0KIAogICAgIGlmICgh
bnVtYmVyU2hhcnBTQ2hhcmFjdGVycykKQEAgLTUyNSwxMyArNTA2LDEzIEBAIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdB
dEZhaWxpbmdJbmRlCiAKICAgICBzaXplX3QgZGVzdGluYXRpb25JbmRleCA9IDA7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNwYW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTGF0aW4x
Q2hhcmFjdGVyIGNoYXJhY3RlciA9IHNwYW5baV07CisgICAgICAgIExDaGFyIGNoYXJhY3RlciA9
IHNwYW5baV07CiAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gc21hbGxMZXR0ZXJTaGFycFMpIHsK
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uW2Rlc3RpbmF0aW9uSW5kZXgrK10gPSAnUyc7CiAgICAg
ICAgICAgICBkZXN0aW5hdGlvbltkZXN0aW5hdGlvbkluZGV4KytdID0gJ1MnOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGlzTGF0aW4xKHVfdG91cHBlcihjaGFyYWN0ZXIp
KSk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbltkZXN0aW5hdGlvbkluZGV4KytdID0gc3RhdGlj
X2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPih1X3RvdXBwZXIoY2hhcmFjdGVyKSk7CisgICAgICAgICAg
ICBkZXN0aW5hdGlvbltkZXN0aW5hdGlvbkluZGV4KytdID0gc3RhdGljX2Nhc3Q8TENoYXI+KHVf
dG91cHBlcihjaGFyYWN0ZXIpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjkwLDcgKzY3MSw3
IEBAIFNsb3dQYXRoOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFuZWVkMTZCaXRDaGFyYWN0
ZXJzKSB7Ci0gICAgICAgICAgICBzdGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBkYXRhODsKKyAg
ICAgICAgICAgIHN0ZDo6c3BhbjxMQ2hhcj4gZGF0YTg7CiAgICAgICAgICAgICBhdXRvIGZvbGRl
ZCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KG1fbGVuZ3RoLCBkYXRhOCk7
CiAgICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhOCwgc3Bhbi5maXJzdChmYWlsaW5nSW5k
ZXgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGZhaWxpbmdJbmRleDsgaSA8IHNw
YW4uc2l6ZSgpOyArK2kpIHsKQEAgLTY5OSw3ICs2ODAsNyBAQCBTbG93UGF0aDoKICAgICAgICAg
ICAgICAgICAgICAgZGF0YThbaV0gPSB0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyKTsKICAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzTGF0aW4xKHVfZm9s
ZENhc2UoY2hhcmFjdGVyLCBVX0ZPTERfQ0FTRV9ERUZBVUxUKSkpOwotICAgICAgICAgICAgICAg
ICAgICBkYXRhOFtpXSA9IHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4odV9mb2xkQ2FzZShj
aGFyYWN0ZXIsIFVfRk9MRF9DQVNFX0RFRkFVTFQpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YThbaV0gPSBzdGF0aWNfY2FzdDxMQ2hhcj4odV9mb2xkQ2FzZShjaGFyYWN0ZXIsIFVfRk9MRF9D
QVNFX0RFRkFVTFQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gZm9sZGVkOwpAQCAtODIxLDcgKzgwMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIENvZGVVbml0UHJlZGljYXRlPiBpbmxpbmUgUmVmPFN0
cmluZ0ltCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dHJpbShDb2RlVW5pdE1hdGNoRnVu
Y3Rpb24gcHJlZGljYXRlKQogewogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIHRy
aW1NYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHByZWRpY2F0ZSk7CisgICAgICAg
IHJldHVybiB0cmltTWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KHByZWRpY2F0ZSk7CiAgICAgcmV0
dXJuIHRyaW1NYXRjaGVkQ2hhcmFjdGVyczxjaGFyMTZfdD4ocHJlZGljYXRlKTsKIH0KIApAQCAt
ODYyLDcgKzg0Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIGNsYXNzIFVD
aGFyUHJlZGljYXRlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0CiBSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNwYWNlKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBpc1do
aXRlU3BhY2UpCiB7CiAgICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nSW1w
bDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8TGF0aW4xQ2hhcmFjdGVyPihpc1do
aXRlU3BhY2UpOworICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hh
cmFjdGVyc1RvU3BhY2U8TENoYXI+KGlzV2hpdGVTcGFjZSk7CiAgICAgcmV0dXJuIFN0cmluZ0lt
cGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlPGNoYXIxNl90Pihpc1doaXRlU3Bh
Y2UpOwogfQogCkBAIC04ODAsNyArODYxLDcgQEAgZmxvYXQgU3RyaW5nSW1wbDo6dG9GbG9hdChi
b29sKiBvaykKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvRmxvYXQoc3BhbjE2KCksIG9rKTsKIH0K
IAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rl
cj4gbWF0Y2hTdHJpbmcsIHNpemVfdCBzdGFydCkKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5kKHN0
ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gbWF0Y2hTdHJpbmcsIHNpemVfdCBzdGFydCkKIHsKICAgICBB
U1NFUlQoIW1hdGNoU3RyaW5nLmVtcHR5KCkpOwogICAgIEFTU0VSVChtYXRjaFN0cmluZy5zaXpl
KCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihNYXhMZW5ndGgpKTsKQEAgLTkzOCw3ICs5MTksNyBA
QCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVy
PiBtYXRjaFN0cmluZywgc2l6ZV90IHN0YQogICAgIHJldHVybiBzdGFydCArIGk7CiB9CiAKLXNp
emVfdCBTdHJpbmdJbXBsOjpyZXZlcnNlRmluZChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFj
dGVyPiBtYXRjaFN0cmluZywgc2l6ZV90IHN0YXJ0KQorc2l6ZV90IFN0cmluZ0ltcGw6OnJldmVy
c2VGaW5kKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gbWF0Y2hTdHJpbmcsIHNpemVfdCBzdGFydCkK
IHsKICAgICBBU1NFUlQoIW1hdGNoU3RyaW5nLmVtcHR5KCkpOwogCkBAIC0xMDU2LDggKzEwMzcs
OCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1w
bCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgcwogICAgIEFTU0VSVChzdGFydCArIG1hdGNoU3Ry
aW5nLnNpemUoKSA8PSBzdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5zcGFuOCgpLnN1YnNwYW4oc3RhcnQpLmRh
dGEoKSwgYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihtYXRjaFN0cmluZykpOwotICAgIHJldHVy
biBlcXVhbChzdHJpbmcuc3BhbjE2KCkuc3Vic3BhbihzdGFydCkuZGF0YSgpLCBieXRlQ2FzdDxM
YXRpbjFDaGFyYWN0ZXI+KG1hdGNoU3RyaW5nKSk7CisgICAgICAgIHJldHVybiBlcXVhbChzdHJp
bmcuc3BhbjgoKS5zdWJzcGFuKHN0YXJ0KS5kYXRhKCksIGJ5dGVDYXN0PExDaGFyPihtYXRjaFN0
cmluZykpOworICAgIHJldHVybiBlcXVhbChzdHJpbmcuc3BhbjE2KCkuc3Vic3BhbihzdGFydCku
ZGF0YSgpLCBieXRlQ2FzdDxMQ2hhcj4obWF0Y2hTdHJpbmcpKTsKIH0KIAogQUxXQVlTX0lOTElO
RSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWdu
ZWQgc3RhcnQsIFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcpCkBAIC0xMTczLDcgKzExNTQsNyBAQCBS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShzaXplX3QgcG9zaXRpb24sIHNpemVf
dCBsZW5ndGhUb1JlcGxhY2UsIFN0cgogICAgICAgICBDUkFTSCgpOwogCiAgICAgaWYgKGlzOEJp
dCgpICYmICghc3RyaW5nIHx8IHN0cmluZy5pczhCaXQoKSkpIHsKLSAgICAgICAgc3RkOjpzcGFu
PExhdGluMUNoYXJhY3Rlcj4gZGF0YTsKKyAgICAgICAgc3RkOjpzcGFuPExDaGFyPiBkYXRhOwog
ICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpIC0gbGVu
Z3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBjb3B5Q2hhcmFj
dGVycyhkYXRhLCBzcGFuOCgpLmZpcnN0KHBvc2l0aW9uKSk7CiAgICAgICAgIGlmIChzdHJpbmcp
CkBAIC0xMjA5LDcgKzExOTAsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFj
ZShjaGFyMTZfdCBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogICAgIHJldHVybiBy
ZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LnNwYW4xNigpKTsKIH0KIAotUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoY2hhcjE2X3QgcGF0dGVybiwgc3RkOjpzcGFuPGNvbnN0
IExhdGluMUNoYXJhY3Rlcj4gcmVwbGFjZW1lbnQpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6cmVwbGFjZShjaGFyMTZfdCBwYXR0ZXJuLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHJlcGxh
Y2VtZW50KQogewogICAgIEFTU0VSVChyZXBsYWNlbWVudC5kYXRhKCkpOwogCkBAIC0xMjQzLDcg
KzEyMjQsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShjaGFyMTZfdCBw
YXR0ZXJuLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcgogICAgIHNpemVfdCBkc3RPZmZzZXQg
PSAwOwogCiAgICAgaWYgKGlzOEJpdCgpKSB7Ci0gICAgICAgIHN0ZDo6c3BhbjxMYXRpbjFDaGFy
YWN0ZXI+IGRhdGE7CisgICAgICAgIHN0ZDo6c3BhbjxMQ2hhcj4gZGF0YTsKICAgICAgICAgYXV0
byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXplZChuZXdTaXplLCBkYXRhKTsKIAogICAgICAg
ICB3aGlsZSAoKHNyY1NlZ21lbnRFbmQgPSBmaW5kKHBhdHRlcm4sIHNyY1NlZ21lbnRTdGFydCkp
ICE9IG5vdEZvdW5kKSB7CkBAIC0xNDExLDcgKzEzOTIsNyBAQCBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVwbGFjZShTdHJpbmdWaWV3IHBhdHRlcm4sIFN0cmluZ1ZpZXcgcmVwbGFjZW1l
bnQpCiAgICAgLy8gNC4gVGhpcyBpcyAxNiBiaXQgYW5kIHJlcGxhY2VtZW50IGlzIDggYml0Lgog
ICAgIGlmIChzcmNJczhCaXQgJiYgcmVwbGFjZW1lbnRJczhCaXQpIHsKICAgICAgICAgLy8gQ2Fz
ZSAxCi0gICAgICAgIHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGRhdGE7CisgICAgICAgIHN0
ZDo6c3BhbjxMQ2hhcj4gZGF0YTsKICAgICAgICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0
aWFsaXplZChuZXdTaXplLCBkYXRhKTsKICAgICAgICAgd2hpbGUgKChzcmNTZWdtZW50RW5kID0g
ZmluZChwYXR0ZXJuLCBzcmNTZWdtZW50U3RhcnQpKSAhPSBub3RGb3VuZCkgewogICAgICAgICAg
ICAgc3JjU2VnbWVudExlbmd0aCA9IHNyY1NlZ21lbnRFbmQgLSBzcmNTZWdtZW50U3RhcnQ7CkBA
IC0xNDg4LDcgKzE0NjksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxp
bmUgYm9vbCBlcXVhbEludGVybmFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsCiAgICAgcmV0dXJuIGEt
PnNwYW4xNigpLmZyb250KCkgPT0gYi5mcm9udCgpICYmIGVxdWFsKGEtPnNwYW4xNigpLnN1YnNw
YW4oMSkuZGF0YSgpLCBiLnN1YnNwYW4oMSkpOwogfQogCi1ib29sIGVxdWFsKGNvbnN0IFN0cmlu
Z0ltcGwqIGEsIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGIpCitib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqIGEsIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gYikKIHsKICAgICBy
ZXR1cm4gZXF1YWxJbnRlcm5hbChhLCBiKTsKIH0KQEAgLTE1NDEsNyArMTUyMiw3IEBAIHN0ZDo6
b3B0aW9uYWw8VUNoYXJEaXJlY3Rpb24+IFN0cmluZ0ltcGw6OmRlZmF1bHRXcml0aW5nRGlyZWN0
aW9uKCkKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6YWRvcHQoU3RyaW5nQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4mJiBidWZmZXIpCitS
ZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6YWRvcHQoU3RyaW5nQnVmZmVyPExDaGFyPiYmIGJ1
ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlci5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICplbXB0
eSgpOwpAQCAtMTU2NCw3ICsxNTQ1LDcgQEAgc2l6ZV90IFN0cmluZ0ltcGw6OnNpemVJbkJ5dGVz
KCkgY29uc3QKICAgICByZXR1cm4gc2l6ZSArIHNpemVvZigqdGhpcyk7CiB9CiAKLUV4cGVjdGVk
PENTdHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IFN0cmluZ0ltcGw6OnV0ZjhGb3JDaGFyYWN0
ZXJzKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHNvdXJjZSkKK0V4cGVjdGVkPENT
dHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IFN0cmluZ0ltcGw6OnV0ZjhGb3JDaGFyYWN0ZXJz
KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc291cmNlKQogewogICAgIHJldHVybiB0cnlHZXRVVEY4
Rm9yQ2hhcmFjdGVycyhbXSAoc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+IGNvbnZlcnRlZCkgewog
ICAgICAgICByZXR1cm4gQ1N0cmluZyB7IGNvbnZlcnRlZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAppbmRleCBjODk4OTAwNzdlODEuLjRiNDY3OTY2MDY0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKQEAgLTIyLDEyICsyMiwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
PHd0Zi9Db21waWxlci5oPgorCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGFjdFB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9Db21waWxlci5oPgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z0hlYXAuaD4KICNpbmNsdWRl
IDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRmxpcEJ5dGVzLmg+CkBAIC0xNTAsNyAr
MTUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWF4TGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CiAKIHByb3RlY3RlZDoKLSAg
ICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHN0ZDo6c3Bhbjxjb25zdCBMYXRp
bjFDaGFyYWN0ZXI+LCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpOworICAgIFN0cmluZ0ltcGxTaGFw
ZSh1bnNpZ25lZCByZWZDb3VudCwgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiwgdW5zaWduZWQgaGFz
aEFuZEZsYWdzKTsKICAgICBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHN0ZDo6
c3Bhbjxjb25zdCBjaGFyMTZfdD4sIHVuc2lnbmVkIGhhc2hBbmRGbGFncyk7CiAKICAgICBlbnVt
IENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcgeyBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByIH07CkBA
IC0xNjAsNyArMTYxLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBt
X3JlZkNvdW50OwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgIHVuaW9uIHsKLSAgICAgICAg
Y29uc3QgTGF0aW4xQ2hhcmFjdGVyKiBtX2RhdGE4OworICAgICAgICBjb25zdCBMQ2hhciogbV9k
YXRhODsKICAgICAgICAgY29uc3QgY2hhcjE2X3QqIG1fZGF0YTE2OwogICAgICAgICAvLyBJdCBz
ZWVtcyB0aGF0IHJlaW50ZXJwcmV0X2Nhc3QgcHJldmVudHMgY29uc3RleHByJ3MgY29tcGlsZSB0
aW1lIGluaXRpYWxpemF0aW9uIGluIFZDKysuCiAgICAgICAgIC8vIFRoZXNlIGFyZSBuZWVkZWQg
dG8gYXZvaWQgcmVpbnRlcnByZXRfY2FzdC4KQEAgLTIzNywyNyArMjM4LDI0IEBAIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU3RyaW5nSW1wbCh1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ3Jl
YXRlIGEgU3RyaW5nSW1wbCBhZG9wdGluZyBvd25lcnNoaXAgb2YgdGhlIHByb3ZpZGVkIGJ1ZmZl
ciAoQnVmZmVyT3duZWQpLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hbGxvYz4gZXhwbGljaXQg
U3RyaW5nSW1wbChNYWxsb2NTcGFuPExhdGluMUNoYXJhY3RlciwgTWFsbG9jPik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgTWFsbG9jPiBleHBsaWNpdCBTdHJpbmdJbXBsKE1hbGxvY1NwYW48TENo
YXIsIE1hbGxvYz4pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hbGxvYz4gZXhwbGljaXQgU3Ry
aW5nSW1wbChNYWxsb2NTcGFuPGNoYXIxNl90LCBNYWxsb2M+KTsKICAgICBlbnVtIENvbnN0cnVj
dFdpdGhvdXRDb3B5aW5nVGFnIHsgQ29uc3RydWN0V2l0aG91dENvcHlpbmcgfTsKICAgICBTdHJp
bmdJbXBsKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4sIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5n
VGFnKTsKLSAgICBTdHJpbmdJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+LCBD
b25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZyk7CisgICAgU3RyaW5nSW1wbChzdGQ6OnNwYW48Y29u
c3QgTENoYXI+LCBDb25zdHJ1Y3RXaXRob3V0Q29weWluZ1RhZyk7CiAKICAgICAvLyBVc2VkIHRv
IGNyZWF0ZSBuZXcgc3RyaW5ncyB0aGF0IGFyZSBhIHN1YnN0cmluZyBvZiBhbiBleGlzdGluZyBT
dHJpbmdJbXBsIChCdWZmZXJTdWJzdHJpbmcpLgotICAgIFN0cmluZ0ltcGwoc3RkOjpzcGFuPGNv
bnN0IExhdGluMUNoYXJhY3Rlcj4sIFJlZjxTdHJpbmdJbXBsPiYmKTsKKyAgICBTdHJpbmdJbXBs
KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4sIFJlZjxTdHJpbmdJbXBsPiYmKTsKICAgICBTdHJpbmdJ
bXBsKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4sIFJlZjxTdHJpbmdJbXBsPiYmKTsKIAogcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZXN0cm95KFN0cmluZ0lt
cGwqKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJh
Y3Rlcj4pOwotICAgIGVudW0gY2xhc3MgUmVwbGFjZUludmFsaWRTZXF1ZW5jZXMgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZShzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4sIFJlcGxhY2VJbnZhbGlkU2VxdWVu
Y2VzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPik7CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZShzdGQ6OnNwYW48Y29uc3QgY2hhcj4gY2hhcmFjdGVycykgeyBy
ZXR1cm4gY3JlYXRlKGJ5dGVDYXN0PExDaGFyPihjaGFyYWN0ZXJzKSk7IH0KICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShz
dGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KTsKIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBjcmVhdGUoc3RkOjpzcGFuPGNvbnN0IGNoYXI+IGNoYXJhY3RlcnMpIHsg
cmV0dXJuIGNyZWF0ZShieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNoYXJhY3RlcnMpKTsgfQot
CiAgICAgLy8gTm90IHVzaW5nIGNyZWF0ZSgpIG5hbWluZyB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVy
cyB0byBjYWxsIGNyZWF0ZShBU0NJSUxpdGVyYWwpIHdoZW4gdGhleSBoYXZlIGEgc3RyaW5nIGxp
dGVyYWwuCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZy
b21DU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIHsgcmV0dXJuIGNyZWF0ZSh1bnNhZmVT
cGFuOChjaGFyYWN0ZXJzKSk7IH0KIApAQCAtMjY2LDMxICsyNjQsMzEgQEAgcHVibGljOgogICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoQVNDSUlMaXRlcmFs
IGxpdGVyYWwpIHsgcmV0dXJuIGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGxpdGVyYWwuc3BhbjgoKSk7
IH0KIAogICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoc3Rk
OjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyYWN0ZXJzKSB7IHJldHVybiBjaGFyYWN0ZXJzLmVt
cHR5KCkgPyAgUmVmIHsgKmVtcHR5KCkgfSA6IGNyZWF0ZVdpdGhvdXRDb3B5aW5nTm9uRW1wdHko
Y2hhcmFjdGVycyk7IH0KLSAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRD
b3B5aW5nKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMpIHsgcmV0
dXJuIGNoYXJhY3RlcnMuZW1wdHkoKSA/IFJlZiB7ICplbXB0eSgpIH0gOiBjcmVhdGVXaXRob3V0
Q29weWluZ05vbkVtcHR5KGNoYXJhY3RlcnMpOyB9Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKHN0ZDo6c3Bhbjxjb25zdCBjaGFy
PiBjaGFyYWN0ZXJzKSB7IHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhieXRlQ2FzdDxMYXRp
bjFDaGFyYWN0ZXI+KGNoYXJhY3RlcnMpKTsgfQorICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlV2l0aG91dENvcHlpbmcoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKSB7
IHJldHVybiBjaGFyYWN0ZXJzLmVtcHR5KCkgPyBSZWYgeyAqZW1wdHkoKSB9IDogY3JlYXRlV2l0
aG91dENvcHlpbmdOb25FbXB0eShjaGFyYWN0ZXJzKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZyhzdGQ6OnNwYW48Y29uc3Qg
Y2hhcj4gY2hhcmFjdGVycykgeyByZXR1cm4gY3JlYXRlV2l0aG91dENvcHlpbmcoYnl0ZUNhc3Q8
TENoYXI+KGNoYXJhY3RlcnMpKTsgfQogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBzdGQ6OnNw
YW48TGF0aW4xQ2hhcmFjdGVyPiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgc3RkOjpzcGFu
PExDaGFyPiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgc3RkOjpzcGFuPGNoYXIxNl90PiYp
OwogCi0gICAgdGVtcGxhdGU8SXNTdHJpbmdTdG9yYWdlQ2hhcmFjdGVyIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3Qg
bGVuZ3RoLCBzdGQ6OnNwYW48Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgc3RkOjpzcGFuPENoYXJhY3RlclR5cGU+Jik7CiAKLSAg
ICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUJ5UmVwbGFjaW5nSW5DaGFyYWN0ZXJzKHN0
ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+LCBjaGFyMTZfdCB0YXJnZXQsIGNoYXIxNl90
IHJlcGxhY2VtZW50LCBzaXplX3QgaW5kZXhPZkZpcnN0VGFyZ2V0Q2hhcmFjdGVyKTsKKyAgICBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUJ5UmVwbGFjaW5nSW5DaGFyYWN0ZXJzKHN0ZDo6
c3Bhbjxjb25zdCBMQ2hhcj4sIGNoYXIxNl90IHRhcmdldCwgY2hhcjE2X3QgcmVwbGFjZW1lbnQs
IHNpemVfdCBpbmRleE9mRmlyc3RUYXJnZXRDaGFyYWN0ZXIpOwogICAgIHN0YXRpYyBSZWY8U3Ry
aW5nSW1wbD4gY3JlYXRlQnlSZXBsYWNpbmdJbkNoYXJhY3RlcnMoc3RkOjpzcGFuPGNvbnN0IGNo
YXIxNl90PiwgY2hhcjE2X3QgdGFyZ2V0LCBjaGFyMTZfdCByZXBsYWNlbWVudCwgc2l6ZV90IGlu
ZGV4T2ZGaXJzdFRhcmdldENoYXJhY3Rlcik7CiAKICAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RkOjpzcGFuPGNvbnN0IGNoYXI+IGNoYXJhY3RlcnMp
CiAgICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ5dGVDYXN0PExh
dGluMUNoYXJhY3Rlcj4oY2hhcmFjdGVycykpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0YXRp
Y1N0cmluZ0ltcGwoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjaGFyYWN0ZXJzKSk7CisgICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnl0ZUNhc3Q8TENoYXI+KGNoYXJhY3Rl
cnMpKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGJ5dGVDYXN0PExD
aGFyPihjaGFyYWN0ZXJzKSk7CiAgICAgfQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RkOjpzcGFuPGNvbnN0IExh
dGluMUNoYXJhY3Rlcj4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGlj
U3RyaW5nSW1wbChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KTsKIAogICAgIC8vIFJlYWxsb2Nh
dGUgdGhlIFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3duZWQg
YnkgdGhlIFJlZiwKICAgICAvLyBhbmQgdGhlIGJ1ZmZlciBvd25lcnNoaXAgbXVzdCBiZSBCdWZm
ZXJJbnRlcm5hbC4gSnVzdCBsaWtlIHRoZSBpbnB1dCBwb2ludGVyIG9mIHJlYWxsb2MoKSwKICAg
ICAvLyB0aGUgb3JpZ2luYWxTdHJpbmcgY2FuJ3QgYmUgdXNlZCBhZnRlciB0aGlzIGZ1bmN0aW9u
LgotICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZShSZWY8U3RyaW5nSW1wbD4m
JiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMYXRpbjFDaGFyYWN0ZXIqJiBkYXRh
KTsKKyAgICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUmVmPFN0cmluZ0ltcGw+
JiYgb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKICAgICBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IHJlYWxsb2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYgb3JpZ2lu
YWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY2hhcjE2X3QqJiBkYXRhKTsKLSAgICBzdGF0aWMg
RXhwZWN0ZWQ8UmVmPFN0cmluZ0ltcGw+LCBVVEY4Q29udmVyc2lvbkVycm9yPiB0cnlSZWFsbG9j
YXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIExh
dGluMUNoYXJhY3RlciomIGRhdGEpOworICAgIHN0YXRpYyBFeHBlY3RlZDxSZWY8U3RyaW5nSW1w
bD4sIFVURjhDb252ZXJzaW9uRXJyb3I+IHRyeVJlYWxsb2NhdGUoUmVmPFN0cmluZ0ltcGw+JiYg
b3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKICAgICBzdGF0
aWMgRXhwZWN0ZWQ8UmVmPFN0cmluZ0ltcGw+LCBVVEY4Q29udmVyc2lvbkVycm9yPiB0cnlSZWFs
bG9jYXRlKFJlZjxTdHJpbmdJbXBsPiYmIG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IGNoYXIxNl90KiYgZGF0YSk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGZsYWdz
T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cmluZ0ltcGwsIG1faGFzaEFuZEZs
YWdzKTsgfQpAQCAtMzAwLDIxICsyOTgsMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbWFza1N0cmluZ0tpbmQoKSB7IHJldHVybiBzX2hhc2hNYXNrU3RyaW5nS2lu
ZDsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCi0gICAgdGVtcGxhdGU8
SXNTdHJpbmdTdG9yYWdlQ2hhcmFjdGVyIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVu
YW1lIE1hbGxvYz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5LCB0eXBlbmFtZSBNYWxsb2M+CiAgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChW
ZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvYz4mJik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8Y2hhcjE2X3Q+JiYpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxM
YXRpbjFDaGFyYWN0ZXI+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mJik7CiAKICAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIg
cHRyZGlmZl90IGxlbmd0aE1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihT
dHJpbmdJbXBsLCBtX2xlbmd0aCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9sZW5ndGg7IH0KIAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNo
QW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQotICAgIEFMV0FZU19JTkxJTkUgc3Rk
OjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gc3BhbjgoKSBjb25zdCBMSUZFVElNRV9CT1VO
RCB7IEFTU0VSVChpczhCaXQoKSk7IHJldHVybiB1bnNhZmVNYWtlU3BhbihtX2RhdGE4LCBsZW5n
dGgoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3Bhbjgo
KSBjb25zdCBMSUZFVElNRV9CT1VORCB7IEFTU0VSVChpczhCaXQoKSk7IHJldHVybiB1bnNhZmVN
YWtlU3BhbihtX2RhdGE4LCBsZW5ndGgoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6c3Bh
bjxjb25zdCBjaGFyMTZfdD4gc3BhbjE2KCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyBBU1NFUlQo
IWlzOEJpdCgpIHx8IGlzRW1wdHkoKSk7IHJldHVybiB1bnNhZmVNYWtlU3BhbihtX2RhdGExNiwg
bGVuZ3RoKCkpOyB9CiAKLSAgICB0ZW1wbGF0ZTxJc1N0cmluZ1N0b3JhZ2VDaGFyYWN0ZXIgQ2hh
cmFjdGVyVHlwZT4gc3RkOjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGU+IHNwYW4oKSBjb25zdCBM
SUZFVElNRV9CT1VORDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6
OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4gc3BhbigpIGNvbnN0IExJRkVUSU1FX0JPVU5EOwog
CiAgICAgc2l6ZV90IGNvc3QoKSBjb25zdDsKICAgICBzaXplX3QgY29zdER1cmluZ0dDKCk7CkBA
IC0zMjksMTIgKzMyNywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU3ViU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nOyB9CiAKLSAg
ICBzdGF0aWMgV1RGX0VYUE9SVF9QUklWQVRFIEV4cGVjdGVkPENTdHJpbmcsIFVURjhDb252ZXJz
aW9uRXJyb3I+IHV0ZjhGb3JDaGFyYWN0ZXJzKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0
ZXI+IGNoYXJhY3RlcnMpOworICAgIHN0YXRpYyBXVEZfRVhQT1JUX1BSSVZBVEUgRXhwZWN0ZWQ8
Q1N0cmluZywgVVRGOENvbnZlcnNpb25FcnJvcj4gdXRmOEZvckNoYXJhY3RlcnMoc3RkOjpzcGFu
PGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKTsKICAgICBzdGF0aWMgV1RGX0VYUE9SVF9QUklWQVRF
IEV4cGVjdGVkPENTdHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IHV0ZjhGb3JDaGFyYWN0ZXJz
KHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hhcmFjdGVycywgQ29udmVyc2lvbk1vZGUgPSBM
ZW5pZW50Q29udmVyc2lvbik7CiAgICAgc3RhdGljIFdURl9FWFBPUlRfUFJJVkFURSBFeHBlY3Rl
ZDxzaXplX3QsIFVURjhDb252ZXJzaW9uRXJyb3I+IHV0ZjhGb3JDaGFyYWN0ZXJzSW50b0J1ZmZl
cihzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGNoYXJhY3RlcnMsIENvbnZlcnNpb25Nb2RlLCBW
ZWN0b3I8Y2hhcjhfdCwgMTAyND4mKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0g
ICAgc3RhdGljIEV4cGVjdGVkPHN0ZDo6aW52b2tlX3Jlc3VsdF90PEZ1bmMsIHN0ZDo6c3Bhbjxj
b25zdCBjaGFyOF90Pj4sIFVURjhDb252ZXJzaW9uRXJyb3I+IHRyeUdldFVURjhGb3JDaGFyYWN0
ZXJzKE5PRVNDQVBFIGNvbnN0IEZ1bmMmLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVy
PiBjaGFyYWN0ZXJzKTsKKyAgICBzdGF0aWMgRXhwZWN0ZWQ8c3RkOjppbnZva2VfcmVzdWx0X3Q8
RnVuYywgc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+PiwgVVRGOENvbnZlcnNpb25FcnJvcj4gdHJ5
R2V0VVRGOEZvckNoYXJhY3RlcnMoTk9FU0NBUEUgY29uc3QgRnVuYyYsIHN0ZDo6c3Bhbjxjb25z
dCBMQ2hhcj4gY2hhcmFjdGVycyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBz
dGF0aWMgRXhwZWN0ZWQ8c3RkOjppbnZva2VfcmVzdWx0X3Q8RnVuYywgc3RkOjpzcGFuPGNvbnN0
IGNoYXI4X3Q+PiwgVVRGOENvbnZlcnNpb25FcnJvcj4gdHJ5R2V0VVRGOEZvckNoYXJhY3RlcnMo
Tk9FU0NBUEUgY29uc3QgRnVuYyYsIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hhcmFjdGVy
cywgQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50Q29udmVyc2lvbik7CiAKQEAgLTQxNiwyMiArNDE0
LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvcHlFbGVtZW50cyhkZXN0aW5hdGlvbiwg
c291cmNlKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGNvcHlDaGFy
YWN0ZXJzKHN0ZDo6c3BhbjxjaGFyMTZfdD4gZGVzdGluYXRpb24sIHN0ZDo6c3Bhbjxjb25zdCBM
YXRpbjFDaGFyYWN0ZXI+IHNvdXJjZSkKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGNv
cHlDaGFyYWN0ZXJzKHN0ZDo6c3BhbjxjaGFyMTZfdD4gZGVzdGluYXRpb24sIHN0ZDo6c3Bhbjxj
b25zdCBMQ2hhcj4gc291cmNlKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
Y2hhcjE2X3QpID09IHNpemVvZih1aW50MTZfdCkpOwotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihMYXRpbjFDaGFyYWN0ZXIpID09IHNpemVvZih1aW50OF90KSk7Ci0gICAgICAgIHJldHVy
biBjb3B5RWxlbWVudHMoc3BhblJlaW50ZXJwcmV0Q2FzdDx1aW50MTZfdD4oZGVzdGluYXRpb24p
LCBzcGFuUmVpbnRlcnByZXRDYXN0PGNvbnN0IHVpbnQ4X3Q+KHNvdXJjZSkpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihMQ2hhcikgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAgICAg
cmV0dXJuIGNvcHlFbGVtZW50cyhzcGFuUmVpbnRlcnByZXRDYXN0PHVpbnQxNl90PihkZXN0aW5h
dGlvbiksIHNvdXJjZSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBj
b3B5Q2hhcmFjdGVycyhzdGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBkZXN0aW5hdGlvbiwgc3Rk
OjpzcGFuPGNvbnN0IGNoYXIxNl90PiBzb3VyY2UpCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
dm9pZCBjb3B5Q2hhcmFjdGVycyhzdGQ6OnNwYW48TENoYXI+IGRlc3RpbmF0aW9uLCBzdGQ6OnNw
YW48Y29uc3QgY2hhcjE2X3Q+IHNvdXJjZSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKGNoYXIxNl90KSA9PSBzaXplb2YodWludDE2X3QpKTsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoTGF0aW4xQ2hhcmFjdGVyKSA9PSBzaXplb2YodWludDhfdCkpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihMQ2hhcikgPT0gc2l6ZW9mKHVpbnQ4X3QpKTsKICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgICAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogc291cmNlKQogICAg
ICAgICAgICAgQVNTRVJUKGlzTGF0aW4xKGNoYXJhY3RlcikpOwogI2VuZGlmCi0gICAgICAgIHJl
dHVybiBjb3B5RWxlbWVudHMoc3BhblJlaW50ZXJwcmV0Q2FzdDx1aW50OF90PihkZXN0aW5hdGlv
biksIHNwYW5SZWludGVycHJldENhc3Q8Y29uc3QgdWludDE2X3Q+KHNvdXJjZSkpOworICAgICAg
ICByZXR1cm4gY29weUVsZW1lbnRzKGRlc3RpbmF0aW9uLCBzcGFuUmVpbnRlcnByZXRDYXN0PGNv
bnN0IHVpbnQxNl90Pihzb3VyY2UpKTsKICAgICB9CiAKICAgICAvLyBTb21lIHN0cmluZyBmZWF0
dXJlcywgbGlrZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIHRoZSBhdG9taWNpdHkgZmxhZywgYXJl
IG5vdApAQCAtNDcwLDkgKzQ2OCw5IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zT25seUxh
dGluMSgpIGNvbnN0OwogICAgIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXIx
Nl90KT4gYm9vbCBjb250YWluc09ubHkoKSBjb25zdDsKIAotICAgIHNpemVfdCBmaW5kKExhdGlu
MUNoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoY2hhciwgc2l6
ZV90IHN0YXJ0ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoY2hhcjE2X3QsIHNpemVfdCBzdGFydCA9
IDApOworICAgIHNpemVfdCBmaW5kKExDaGFyIGNoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0ID0gMCk7
CisgICAgc2l6ZV90IGZpbmQoY2hhciBjaGFyYWN0ZXIsIHNpemVfdCBzdGFydCA9IDApOworICAg
IHNpemVfdCBmaW5kKGNoYXIxNl90IGNoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0ID0gMCk7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfaW52b2NhYmxlX3Jfdjxib29sLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIGNoYXIx
Nl90Pj4qID0gbnVsbHB0cj4KICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24s
IHNpemVfdCBzdGFydCA9IDApOwogICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmQoQVNDSUlM
aXRlcmFsIGxpdGVyYWwsIHNpemVfdCBzdGFydCA9IDApIHsgcmV0dXJuIGZpbmQobGl0ZXJhbC5z
cGFuOCgpLCBzdGFydCk7IH0KQEAgLTQ5OSw4ICs0OTcsOCBAQCBwdWJsaWM6CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoY2hhcjE2X3QsIGNoYXIxNl90
KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoY2hhcjE2
X3QsIFN0cmluZ1ZpZXcpOwotICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IHJlcGxh
Y2UoY2hhcjE2X3QgcGF0dGVybiwgc3RkOjpzcGFuPGNvbnN0IGNoYXI+IHJlcGxhY2VtZW50KSB7
IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4ocmVwbGFj
ZW1lbnQpKTsgfQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFj
ZShjaGFyMTZfdCwgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pOworICAgIEFMV0FZ
U19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoY2hhcjE2X3QgcGF0dGVybiwgc3RkOjpz
cGFuPGNvbnN0IGNoYXI+IHJlcGxhY2VtZW50KSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIGJ5
dGVDYXN0PExDaGFyPihyZXBsYWNlbWVudCkpOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKGNoYXIxNl90LCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+KTsK
ICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShjaGFyMTZfdCwgc3RkOjpzcGFuPGNvbnN0IGNo
YXIxNl90Pik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNl
KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZShzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZ1ZpZXcp
OwpAQCAtNTI5LDcgKzUyNyw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFVzZWQgdG8gY3JlYXRl
IG5ldyBzeW1ib2wgc3RyaW5nIHRoYXQgaG9sZHMgYW4gZXhpc3RpbmcgW1tEZXNjcmlwdGlvbl1d
IHN0cmluZyBhcyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCiAgICAgZW51
bSBDcmVhdGVTeW1ib2xUYWcgeyBDcmVhdGVTeW1ib2wgfTsKLSAgICBTdHJpbmdJbXBsKENyZWF0
ZVN5bWJvbFRhZywgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pOworICAgIFN0cmlu
Z0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+KTsKICAgICBTdHJp
bmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7CiAKICAg
ICAvLyBOdWxsIHN5bWJvbC4KQEAgLTU0MCw4ICs1MzgsOCBAQCBwcml2YXRlOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lPiBzdGF0aWMgc2l6ZV90IG1heEludGVybmFsTGVuZ3RoKCk7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWU+IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHRhaWxPZmZzZXQoKTsKIAot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChzdGQ6OnNwYW48Y29uc3QgTGF0aW4x
Q2hhcmFjdGVyPiwgc2l6ZV90IHN0YXJ0KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IHJldmVyc2VGaW5kKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+LCBzaXplX3Qgc3Rh
cnQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChzdGQ6OnNwYW48Y29uc3Qg
TENoYXI+LCBzaXplX3Qgc3RhcnQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2
ZXJzZUZpbmQoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiwgc2l6ZV90IHN0YXJ0KTsKIAogICAgIGJv
b2wgcmVxdWlyZXNDb3B5KCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Qg
VCogdGFpbFBvaW50ZXIoKSBjb25zdDsKQEAgLTU1Miw3ICs1NTAsNyBAQCBwcml2YXRlOgogICAg
IGVudW0gY2xhc3MgQ2FzZUNvbnZlcnRUeXBlIHsgVXBwZXIsIExvd2VyIH07CiAgICAgdGVtcGxh
dGU8Q2FzZUNvbnZlcnRUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNvbnZlcnRBU0NJSUNhc2UoU3RyaW5nSW1wbCYsIHN0ZDo6c3Bhbjxjb25zdCBD
aGFyYWN0ZXJUeXBlPik7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZ05vbkVtcHR5KHN0ZDo6c3Bhbjxjb25zdCBMYXRp
bjFDaGFyYWN0ZXI+KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGVXaXRob3V0Q29weWluZ05vbkVtcHR5KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4p
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdp
dGhvdXRDb3B5aW5nTm9uRW1wdHkoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBjbGFzcyBDb2RlVW5pdFByZWRpY2F0ZT4g
UmVmPFN0cmluZ0ltcGw+IHRyaW1NYXRjaGVkQ2hhcmFjdGVycyhDb2RlVW5pdFByZWRpY2F0ZSk7
CkBAIC02MTQsMTEgKzYxMiwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZUNoZWNrPFN0cmlu
Z0ltcGwqPiB7CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLVdURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25z
dCBTdHJpbmdJbXBsKiwgc3RkOjpzcGFuPGNvbnN0IExDaGFyPik7CiBpbmxpbmUgYm9vbCBlcXVh
bChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLCB1
bnNhZmVTcGFuOChiKSk7IH0KIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0
cmluZ0ltcGwqLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KTsKIEFMV0FZU19JTkxJTkUgYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBBU0NJSUxpdGVyYWwgYikgeyByZXR1cm4gZXF1
YWwoYSwgYi5zcGFuOCgpKTsgfQotaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCog
YSwgc3RkOjpzcGFuPGNvbnN0IGNoYXI+IGIpIHsgcmV0dXJuIGVxdWFsKGEsIGJ5dGVDYXN0PExh
dGluMUNoYXJhY3Rlcj4oYikpOyB9CitpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBs
KiBhLCBzdGQ6OnNwYW48Y29uc3QgY2hhcj4gYikgeyByZXR1cm4gZXF1YWwoYSwgYnl0ZUNhc3Q8
TENoYXI+KGIpKTsgfQogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1w
bCogYikgeyByZXR1cm4gZXF1YWwoYiwgdW5zYWZlU3BhbjgoYSkpOyB9CiBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsJiBhLCBjb25zdCBTdHJpbmdJbXBsJiBi
KTsKIApAQCAtNjQwLDggKzYzOCw4IEBAIHNpemVfdCBmaW5kKHN0ZDo6c3Bhbjxjb25zdCBDb2Rl
VW5pdD4sIENvZGVVbml0TWF0Y2hGdW5jdGlvbiYmLCBzaXplX3Qgc3RhcnQgPSAwCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5h
dG9yKHN0ZDo6c3Bhbjxjb25zdCBDaGFyYWN0ZXJUeXBlPiwgc2l6ZV90IHN0YXJ0ID0gU3RyaW5n
SW1wbDo6TWF4TGVuZ3RoKTsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVf
dCByZXZlcnNlRmluZChzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4sIENoYXJhY3RlclR5
cGUgbWF0Y2hDaGFyYWN0ZXIsIHNpemVfdCBzdGFydCA9IFN0cmluZ0ltcGw6Ok1heExlbmd0aCk7
Ci1zaXplX3QgcmV2ZXJzZUZpbmQoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiwgTGF0aW4xQ2hh
cmFjdGVyIG1hdGNoQ2hhcmFjdGVyLCBzaXplX3Qgc3RhcnQgPSBTdHJpbmdJbXBsOjpNYXhMZW5n
dGgpOwotc2l6ZV90IHJldmVyc2VGaW5kKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+
LCBjaGFyMTZfdCBtYXRjaENoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4
TGVuZ3RoKTsKK3NpemVfdCByZXZlcnNlRmluZChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+LCBM
Q2hhciBtYXRjaENoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3Ro
KTsKK3NpemVfdCByZXZlcnNlRmluZChzdGQ6OnNwYW48Y29uc3QgTENoYXI+LCBjaGFyMTZfdCBt
YXRjaENoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKIAog
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5
KGNvbnN0IFZlY3RvcjxjaGFyMTZfdCwgaW5saW5lQ2FwYWNpdHk+JiwgU3RyaW5nSW1wbCopOwog
CkBAIC02NzAsNyArNjY4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8Q29tcGFj
dFB0cjxTdHJpbmdJbXBsPj47CiAgICAgICAgIHJldHVybiAmaW1wbDsgXAogICAgIH0oKSkKIAot
dGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25z
dHJ1Y3RJbnRlcm5hbDxMYXRpbjFDaGFyYWN0ZXI+KFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWdu
ZWQgbGVuZ3RoKQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxMQ2hhcj4oU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsICZzdHJp
bmcpIFN0cmluZ0ltcGwgeyBsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yIH0pOwogfQpAQCAt
NjgwLDcgKzY3OCw3IEBAIHRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8Y2hhcjE2X3Q+CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgKE5vdE51bGwsICZzdHJpbmcpIFN0cmluZ0ltcGwgeyBsZW5ndGggfSk7CiB9CiAK
LXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVy
PiBTdHJpbmdJbXBsOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4oKSBjb25zdAordGVtcGxhdGU8PiBB
TFdBWVNfSU5MSU5FIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gU3RyaW5nSW1wbDo6c3BhbjxMQ2hh
cj4oKSBjb25zdAogewogICAgIHJldHVybiBzcGFuOCgpOwogfQpAQCAtNzI5LDE5ICs3MjcsMTkg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHNpemVfdCByZXZlcnNl
RmluZChzdGQ6OnNwYW48Y29uc3QgQ2hhcmEKICAgICByZXR1cm4gc3RhcnQ7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgc2l6ZV90IHJldmVyc2VGaW5kKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hh
cmFjdGVycywgTGF0aW4xQ2hhcmFjdGVyIG1hdGNoQ2hhcmFjdGVyLCBzaXplX3Qgc3RhcnQpCitB
TFdBWVNfSU5MSU5FIHNpemVfdCByZXZlcnNlRmluZChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+
IGNoYXJhY3RlcnMsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCBzaXplX3Qgc3RhcnQpCiB7CiAgICAg
cmV0dXJuIHJldmVyc2VGaW5kKGNoYXJhY3RlcnMsIHN0YXRpY19jYXN0PGNoYXIxNl90PihtYXRj
aENoYXJhY3RlciksIHN0YXJ0KTsKIH0KIAotaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCBjaGFyMTZfdCBtYXRjaENo
YXJhY3Rlciwgc2l6ZV90IHN0YXJ0KQoraW5saW5lIHNpemVfdCByZXZlcnNlRmluZChzdGQ6OnNw
YW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMsIGNoYXIxNl90IG1hdGNoQ2hhcmFjdGVyLCBzaXpl
X3Qgc3RhcnQpCiB7CiAgICAgaWYgKCFpc0xhdGluMShtYXRjaENoYXJhY3RlcikpCiAgICAgICAg
IHJldHVybiBub3RGb3VuZDsKLSAgICByZXR1cm4gcmV2ZXJzZUZpbmQoY2hhcmFjdGVycywgc3Rh
dGljX2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyPihtYXRjaENoYXJhY3RlciksIHN0YXJ0KTsKKyAgICBy
ZXR1cm4gcmV2ZXJzZUZpbmQoY2hhcmFjdGVycywgc3RhdGljX2Nhc3Q8TENoYXI+KG1hdGNoQ2hh
cmFjdGVyKSwgc3RhcnQpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoTGF0
aW4xQ2hhcmFjdGVyIGNoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0KQoraW5saW5lIHNpemVfdCBTdHJp
bmdJbXBsOjpmaW5kKExDaGFyIGNoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0KQogewogICAgIGlmIChp
czhCaXQoKSkKICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChzcGFuOCgpLCBjaGFyYWN0ZXIsIHN0
YXJ0KTsKQEAgLTc1MCw3ICs3NDgsNyBAQCBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQo
TGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3Rlciwgc2l6ZV90IHN0YXJ0KQogCiBBTFdBWVNfSU5MSU5F
IHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNoYXIgY2hhcmFjdGVyLCBzaXplX3Qgc3RhcnQpCiB7
Ci0gICAgcmV0dXJuIGZpbmQoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjaGFyYWN0ZXIpLCBz
dGFydCk7CisgICAgcmV0dXJuIGZpbmQoYnl0ZUNhc3Q8TENoYXI+KGNoYXJhY3RlciksIHN0YXJ0
KTsKIH0KIAogaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKGNoYXIxNl90IGNoYXJhY3Rl
ciwgc2l6ZV90IHN0YXJ0KQpAQCAtODQ5LDcgKzg0Nyw3IEBAIGlubGluZSBzdGQ6OnN0cm9uZ19v
cmRlcmluZyBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0
IFN0CiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RyaW5nMS0+c3BhbjE2KCksIHN0cmlu
ZzItPnNwYW4xNigpKTsKIH0KIAotLy8gRklYTUU6IEZvciBMYXRpbjFDaGFyYWN0ZXIsIGlzVW5p
Y29kZUNvbXBhdGlibGVBU0NJSVdoaXRlc3BhY2UoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0g
MHgwMDg1IHx8IGNoYXJhY3RlciA9PSBub0JyZWFrU3BhY2Ugd291bGQgYmUgZW5vdWdoCisvLyBG
SVhNRTogRm9yIExDaGFyLCBpc1VuaWNvZGVDb21wYXRpYmxlQVNDSUlXaGl0ZXNwYWNlKGNoYXJh
Y3RlcikgfHwgY2hhcmFjdGVyID09IDB4MDA4NSB8fCBjaGFyYWN0ZXIgPT0gbm9CcmVha1NwYWNl
IHdvdWxkIGJlIGVub3VnaAogaW5saW5lIGJvb2wgaXNVbmljb2RlV2hpdGVzcGFjZShjaGFyMTZf
dCBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVyKSA/IGlzVW5pY29k
ZUNvbXBhdGlibGVBU0NJSVdoaXRlc3BhY2UoY2hhcmFjdGVyKSA6IHVfaXNVV2hpdGVTcGFjZShj
aGFyYWN0ZXIpOwpAQCAtODY3LDcgKzg2NSw3IEBAIGlubGluZSBib29sIGRlcHJlY2F0ZWRJc05v
dFNwYWNlT3JOZXdsaW5lKGNoYXIxNl90IGNoYXJhY3RlcikKICAgICByZXR1cm4gIWRlcHJlY2F0
ZWRJc1NwYWNlT3JOZXdsaW5lKGNoYXJhY3Rlcik7CiB9CiAKLWlubGluZSBTdHJpbmdJbXBsU2hh
cGU6OlN0cmluZ0ltcGxTaGFwZSh1bnNpZ25lZCByZWZDb3VudCwgc3RkOjpzcGFuPGNvbnN0IExh
dGluMUNoYXJhY3Rlcj4gZGF0YSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzKQoraW5saW5lIFN0cmlu
Z0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVkIHJlZkNvdW50LCBzdGQ6OnNwYW48
Y29uc3QgTENoYXI+IGRhdGEsIHVuc2lnbmVkIGhhc2hBbmRGbGFncykKICAgICA6IG1fcmVmQ291
bnQocmVmQ291bnQpCiAgICAgLCBtX2xlbmd0aChkYXRhLnNpemUoKSkKICAgICAsIG1fZGF0YTgo
ZGF0YS5kYXRhKCkpCkBAIC05NTEsNyArOTQ5LDcgQEAgdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxD
aGFyYWN0ZXIoY2hhcjE2X3QpPiBpbmxpbmUgYm9vbCBTdHJpbmdJbXBsOjpjb250YWluc09ubHkK
IH0KIAogaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoLCBGb3Jj
ZThCaXQpCi0gICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgdW5zYWZl
TWFrZVNwYW4odGFpbFBvaW50ZXI8TGF0aW4xQ2hhcmFjdGVyPigpLCBsZW5ndGgpLCBzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlckludGVybmFsKQorICAgIDogU3Ry
aW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIHVuc2FmZU1ha2VTcGFuKHRhaWxQb2lu
dGVyPExDaGFyPigpLCBsZW5ndGgpLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1h
bCB8IEJ1ZmZlckludGVybmFsKQogewogICAgIEFTU0VSVChtX2RhdGE4KTsKICAgICBBU1NFUlQo
bV9sZW5ndGgpOwpAQCAtOTgxLDcgKzk3OSw3IEBAIE1hbGxvY1NwYW48Q2hhcmFjdGVyVHlwZSwg
U3RyaW5nSW1wbE1hbGxvYz4gU3RyaW5nSW1wbDo6dG9TdHJpbmdJbXBsTWFsbG9jU3BhbihNCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1hbGxvYz4KLWlubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJ
bXBsKE1hbGxvY1NwYW48TGF0aW4xQ2hhcmFjdGVyLCBNYWxsb2M+IGNoYXJhY3RlcnMpCitpbmxp
bmUgU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChNYWxsb2NTcGFuPExDaGFyLCBNYWxsb2M+IGNoYXJh
Y3RlcnMpCiAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgdG9TdHJp
bmdJbXBsTWFsbG9jU3BhbihXVEZNb3ZlKGNoYXJhY3RlcnMpKS5sZWFrU3BhbigpLCBzX2hhc2hG
bGFnOEJpdEJ1ZmZlciB8IFN0cmluZ05vcm1hbCB8IEJ1ZmZlck93bmVkKQogewogICAgIEFTU0VS
VChtX2RhdGE4KTsKQEAgLTk5OSw3ICs5OTcsNyBAQCBpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5n
SW1wbChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGNoYXJhY3RlcnMsIENvbnN0cnVjdFdpdAog
ICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1fbGVuZ3RoKTsKIH0KIAotaW5saW5l
IFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4g
Y2hhcmFjdGVycywgQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcpCitpbmxpbmUgU3RyaW5nSW1w
bDo6U3RyaW5nSW1wbChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMsIENvbnN0cnVj
dFdpdGhvdXRDb3B5aW5nVGFnKQogICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNy
ZW1lbnQsIGNoYXJhY3RlcnMsIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgU3RyaW5nTm9ybWFsIHwg
QnVmZmVySW50ZXJuYWwpCiB7CiAgICAgQVNTRVJUKG1fZGF0YTgpOwpAQCAtMTAxOCw3ICsxMDE2
LDcgQEAgaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoTWFsbG9jU3BhbjxjaGFyMTZfdCwg
TWFsbG9jPiBjaGFyYWN0ZXJzKQogICAgIFNUUklOR19TVEFUU19BRERfMTZCSVRfU1RSSU5HKG1f
bGVuZ3RoKTsKIH0KIAotaW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoc3RkOjpzcGFuPGNv
bnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVycywgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkK
K2lubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gY2hh
cmFjdGVycywgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKICAgICA6IFN0cmluZ0ltcGxTaGFwZShz
X3JlZkNvdW50SW5jcmVtZW50LCBjaGFyYWN0ZXJzLCBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IFN0
cmluZ05vcm1hbCB8IEJ1ZmZlclN1YnN0cmluZykKIHsKICAgICBBU1NFUlQoaXM4Qml0KCkpOwpA
QCAtMTA1NCw3ICsxMDUyLDcgQEAgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1wbCYKICAgICAvLyBDb3B5
aW5nIHRoZSB0aGluZyB3b3VsZCBzYXZlIG1vcmUgbWVtb3J5IHNvbWV0aW1lcywgbGFyZ2VseSBk
dWUgdG8gdGhlIHNpemUgb2YgcG9pbnRlci4KICAgICBzaXplX3Qgc3Vic3RyaW5nU2l6ZSA9IGFs
bG9jYXRpb25TaXplPFN0cmluZ0ltcGwqPigxKTsKICAgICBpZiAocmVwLmlzOEJpdCgpKSB7Ci0g
ICAgICAgIGlmIChzdWJzdHJpbmdTaXplID49IGFsbG9jYXRpb25TaXplPExhdGluMUNoYXJhY3Rl
cj4obGVuZ3RoKSkKKyAgICAgICAgaWYgKHN1YnN0cmluZ1NpemUgPj0gYWxsb2NhdGlvblNpemU8
TENoYXI+KGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlKHJlcC5zcGFuOCgpLnN1
YnNwYW4ob2Zmc2V0LCBsZW5ndGgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc3Vic3Ry
aW5nU2l6ZSA+PSBhbGxvY2F0aW9uU2l6ZTxjaGFyMTZfdD4obGVuZ3RoKSkKQEAgLTEwNzAsNyAr
MTA2OCw3IEBAIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0
ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKFN0cmluZ0ltcGwmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwocmVwLnNwYW4xNigpLnN1YnNwYW4o
b2Zmc2V0LCBsZW5ndGgpLCAqb3duZXJSZXApKTsKIH0KIAotdGVtcGxhdGU8SXNTdHJpbmdTdG9y
YWdlQ2hhcmFjdGVyIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgUmVmUHRyPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgc3Rk
OjpzcGFuPENoYXJhY3RlclR5cGU+JiBvdXRwdXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIHN0ZDo6c3BhbjxDaGFyYWN0ZXJUeXBl
PiYgb3V0cHV0KQogewogICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgIG91dHB1dCA9IHsgfTsK
QEAgLTEwOTEsNyArMTA4OSw3IEBAIHRlbXBsYXRlPElzU3RyaW5nU3RvcmFnZUNoYXJhY3RlciBD
aGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsCiAgICAgcmV0dXJu
IGNvbnN0cnVjdEludGVybmFsPENoYXJhY3RlclR5cGU+KCpyZXN1bHQsIGxlbmd0aCk7CiB9CiAK
LXRlbXBsYXRlPElzU3RyaW5nU3RvcmFnZUNoYXJhY3RlciBDaGFyYWN0ZXJUeXBlLCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmFkb3B0KFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPiYmIHZlY3RvcikKIHsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfc2FtZV92PE1hbGxvYywgU3RyaW5nSW1wbE1hbGxvYz4pIHsKQEAgLTEx
OTUsMTAgKzExOTMsMTAgQEAgaW5saW5lIHZvaWQgU3RyaW5nSW1wbDo6ZGVyZWYoKQogCiBpbmxp
bmUgY2hhcjE2X3QgU3RyaW5nSW1wbDo6YXQodW5zaWduZWQgaSkgY29uc3QKIHsKLSAgICByZXR1
cm4gaXM4Qml0KCkgPyBjaGFyMTZfdCB7IHNwYW44KClbaV0gfSA6IHNwYW4xNigpW2ldOworICAg
IHJldHVybiBpczhCaXQoKSA/IHNwYW44KClbaV0gOiBzcGFuMTYoKVtpXTsKIH0KIAotaW5saW5l
IFN0cmluZ0ltcGw6OlN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnLCBzdGQ6OnNwYW48Y29uc3Qg
TGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQoraW5saW5lIFN0cmluZ0ltcGw6OlN0cmluZ0lt
cGwoQ3JlYXRlU3ltYm9sVGFnLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiAg
ICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3VudEluY3JlbWVudCwgY2hhcmFjdGVycywgc19o
YXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJTdWJzdHJpbmcpCiB7CiAg
ICAgQVNTRVJUKGlzOEJpdCgpKTsKQEAgLTEyNDUsNyArMTI0Myw3IEBAIGlubGluZSBib29sIFN0
cmluZ0ltcGw6OnJlcXVpcmVzQ29weSgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgaWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbV9kYXRhOCA9PSB0YWlsUG9pbnRlcjxM
YXRpbjFDaGFyYWN0ZXI+KCk7CisgICAgICAgIHJldHVybiBtX2RhdGE4ID09IHRhaWxQb2ludGVy
PExDaGFyPigpOwogICAgIHJldHVybiBtX2RhdGExNiA9PSB0YWlsUG9pbnRlcjxjaGFyMTZfdD4o
KTsKIH0KIApAQCAtMTM2OSwxNyArMTM2NywxNyBAQCBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoY29uc3QgUHJlZGljYXRlJiBmaW5kTWF0Y2gpCiAg
ICAgcmV0dXJuIHJlbW92ZUNoYXJhY3RlcnNJbXBsKHNwYW4xNigpLCBmaW5kTWF0Y2gpOwogfQog
Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUJ5UmVwbGFjaW5nSW5D
aGFyYWN0ZXJzKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMsIGNo
YXIxNl90IHRhcmdldCwgY2hhcjE2X3QgcmVwbGFjZW1lbnQsIHNpemVfdCBpbmRleE9mRmlyc3RU
YXJnZXRDaGFyYWN0ZXIpCitpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0
ZUJ5UmVwbGFjaW5nSW5DaGFyYWN0ZXJzKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gY2hhcmFjdGVy
cywgY2hhcjE2X3QgdGFyZ2V0LCBjaGFyMTZfdCByZXBsYWNlbWVudCwgc2l6ZV90IGluZGV4T2ZG
aXJzdFRhcmdldENoYXJhY3RlcikKIHsKICAgICBBU1NFUlQoaW5kZXhPZkZpcnN0VGFyZ2V0Q2hh
cmFjdGVyIDwgY2hhcmFjdGVycy5zaXplKCkpOwogICAgIGlmIChpc0xhdGluMShyZXBsYWNlbWVu
dCkpIHsKLSAgICAgICAgc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gZGF0YTsKLSAgICAgICAg
TGF0aW4xQ2hhcmFjdGVyIG9sZENoYXIgPSB0YXJnZXQ7Ci0gICAgICAgIExhdGluMUNoYXJhY3Rl
ciBuZXdDaGFyID0gcmVwbGFjZW1lbnQ7CisgICAgICAgIHN0ZDo6c3BhbjxMQ2hhcj4gZGF0YTsK
KyAgICAgICAgTENoYXIgb2xkQ2hhciA9IHRhcmdldDsKKyAgICAgICAgTENoYXIgbmV3Q2hhciA9
IHJlcGxhY2VtZW50OwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVk
SW50ZXJuYWxOb25FbXB0eShjaGFyYWN0ZXJzLnNpemUoKSwgZGF0YSk7CiAgICAgICAgIG1lbWNw
eVNwYW4oZGF0YSwgY2hhcmFjdGVycy5maXJzdChpbmRleE9mRmlyc3RUYXJnZXRDaGFyYWN0ZXIp
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4T2ZGaXJzdFRhcmdldENoYXJhY3Rlcjsg
aSAhPSBjaGFyYWN0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBMYXRpbjFDaGFyYWN0
ZXIgY2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpXTsKKyAgICAgICAgICAgIExDaGFyIGNoYXJhY3Rl
ciA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgICAgICBkYXRhW2ldID0gY2hhcmFjdGVyID09IG9s
ZENoYXIgPyBuZXdDaGFyIDogY2hhcmFjdGVyOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBu
ZXdJbXBsOwpAQCAtMTM4OSw3ICsxMzg3LDcgQEAgaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpjcmVhdGVCeVJlcGxhY2luZ0luQ2hhcmFjdGVycyhzdGQ6OnNwYW48Y29uc3QKICAg
ICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eShjaGFy
YWN0ZXJzLnNpemUoKSwgZGF0YSk7CiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoYXV0byBj
aGFyYWN0ZXIgOiBjaGFyYWN0ZXJzKQotICAgICAgICBkYXRhW2krK10gPSBjaGFyYWN0ZXIgPT0g
dGFyZ2V0ID8gcmVwbGFjZW1lbnQgOiBjaGFyMTZfdCB7IGNoYXJhY3RlciB9OworICAgICAgICBk
YXRhW2krK10gPSBjaGFyYWN0ZXIgPT0gdGFyZ2V0ID8gcmVwbGFjZW1lbnQgOiBjaGFyYWN0ZXI7
CiAgICAgcmV0dXJuIG5ld0ltcGw7CiB9CiAKQEAgLTE0MjEsMTMgKzE0MTksMTMgQEAgc3RhdGlj
IGlubGluZSBzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4gbm9uTnVsbEVtcHR5VVRGOFNwYW4oKQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIEV4cGVjdGVkPHN0ZDo6aW52b2tl
X3Jlc3VsdF90PEZ1bmMsIHN0ZDo6c3Bhbjxjb25zdCBjaGFyOF90Pj4sIFVURjhDb252ZXJzaW9u
RXJyb3I+IFN0cmluZ0ltcGw6OnRyeUdldFVURjhGb3JDaGFyYWN0ZXJzKE5PRVNDQVBFIGNvbnN0
IEZ1bmMmIGZ1bmN0aW9uLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0
ZXJzKQoraW5saW5lIEV4cGVjdGVkPHN0ZDo6aW52b2tlX3Jlc3VsdF90PEZ1bmMsIHN0ZDo6c3Bh
bjxjb25zdCBjaGFyOF90Pj4sIFVURjhDb252ZXJzaW9uRXJyb3I+IFN0cmluZ0ltcGw6OnRyeUdl
dFVURjhGb3JDaGFyYWN0ZXJzKE5PRVNDQVBFIGNvbnN0IEZ1bmMmIGZ1bmN0aW9uLCBzdGQ6OnNw
YW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiB7CiAgICAgaWYgKGNoYXJhY3RlcnMuZW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG5vbk51bGxFbXB0eVVURjhTcGFuKCkpOwogCiAg
ICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFj
dGVycwotICAgIC8vIChhbiBpbmRpdmlkdWFsIExhdGluMUNoYXJhY3RlciBjYW4gb25seSBleHBh
bmQgdG8gMiBVVEYtOCBieXRlcykuCisgICAgLy8gKGFuIGluZGl2aWR1YWwgTENoYXIgY2FuIG9u
bHkgZXhwYW5kIHRvIDIgVVRGLTggYnl0ZXMpLgogICAgIC8vIE9wdGltaXphdGlvbiBpZGVhcywg
aWYgd2UgZmluZCB0aGlzIGZ1bmN0aW9uIGlzIGhvdDoKICAgICAvLyAgKiBXZSBjb3VsZCBzcGVj
dWxhdGl2ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZmZXIgdG8gY29udGFpbiAnbGVuZ3RoJwogICAg
IC8vICAgIGNoYXJhY3RlcnMsIGFuZCByZXNpemUgaWYgbmVjZXNzYXJ5IChpLmUuIGlmIHRoZSBi
dWZmZXIgY29udGFpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGJjOTFiZDY4
MzRlOC4uYTcyM2E2MGViMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTE1
Myw3ICsxNTMsNyBAQCBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChBZGFwdGl2ZVN0cmluZ1NlYXJj
aGVyVGFibGVzJiB0YWJsZXMsIFN0cmluZ1ZpZXcgbWF0Y2hTdAogICAgIHJldHVybiBzZWFyY2hT
dHJpbmcodGFibGVzLCBzcGFuMTYoKSwgbWF0Y2hTdHJpbmcuc3BhbjE2KCksIHN0YXJ0KTsKIH0K
IAotc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmQoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rl
cj4gbWF0Y2gsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAorc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmQo
c3RkOjpzcGFuPGNvbnN0IExDaGFyPiBtYXRjaCwgdW5zaWduZWQgc3RhcnQpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFtYXRjaC5lbXB0eSgpKTsKICAgICBhdXRvIGxlbmd0aCA9IHRoaXMtPmxlbmd0
aCgpOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHNpemVfdCBTdHJpbmdWaWV3OjpmaW5kKHN0ZDo6c3Bh
bjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IG1hdGNoLCB1bnNpZ25lZCBzdGFydCkKICAgICByZXR1
cm4gZmluZElubmVyKHNwYW4xNigpLnN1YnNwYW4oc3RhcnQpLCBtYXRjaCwgc3RhcnQpOwogfQog
Ci1zaXplX3QgU3RyaW5nVmlldzo6cmV2ZXJzZUZpbmQoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNo
YXJhY3Rlcj4gbWF0Y2gsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAorc2l6ZV90IFN0cmluZ1ZpZXc6
OnJldmVyc2VGaW5kKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gbWF0Y2gsIHVuc2lnbmVkIHN0YXJ0
KSBjb25zdAogewogICAgIEFTU0VSVCghbWF0Y2guZW1wdHkoKSk7CiAgICAgaWYgKG1hdGNoLnNp
emUoKSA+IGxlbmd0aCgpKQpAQCAtMzM0LDE1ICszMzQsMTUgQEAgQXRvbVN0cmluZyBTdHJpbmdW
aWV3Ojpjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUF0b20oKSBjb25zdAogdGVtcGxhdGU8dHlwZW5h
bWUgRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBTb3VyY2VDaGFyYWN0ZXJUeXBl
Pgogdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKFN0cmluZ1ZpZXc6OkNh
c2VDb252ZXJ0VHlwZSB0eXBlLCBzdGQ6OnNwYW48RGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlPiBk
ZXN0aW5hdGlvbiwgc3RkOjpzcGFuPGNvbnN0IFNvdXJjZUNoYXJhY3RlclR5cGU+IHNvdXJjZSkK
IHsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBM
YXRpbjFDaGFyYWN0ZXI+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3NhbWU8U291cmNlQ2hhcmFjdGVyVHlw
ZSwgY2hhcjE2X3Q+Ojp2YWx1ZSk7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RGVz
dGluYXRpb25DaGFyYWN0ZXJUeXBlLCBMYXRpbjFDaGFyYWN0ZXI+Ojp2YWx1ZSB8fCBzdGQ6Omlz
X3NhbWU8RGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCBjaGFyMTZfdD46OnZhbHVlKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBMQ2hhcj46OnZh
bHVlIHx8IHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBjaGFyMTZfdD46OnZhbHVl
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxEZXN0aW5hdGlvbkNoYXJhY3RlclR5
cGUsIExDaGFyPjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlw
ZSwgY2hhcjE2X3Q+Ojp2YWx1ZSk7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRGVzdGluYXRp
b25DaGFyYWN0ZXJUeXBlKSA+PSBzaXplb2YoU291cmNlQ2hhcmFjdGVyVHlwZSkpOwogICAgIGF1
dG8gY2FzZUNvbnZlcnQgPSAodHlwZSA9PSBTdHJpbmdWaWV3OjpDYXNlQ29udmVydFR5cGU6Okxv
d2VyKSA/IHRvQVNDSUlMb3dlcjxTb3VyY2VDaGFyYWN0ZXJUeXBlPiA6IHRvQVNDSUlVcHBlcjxT
b3VyY2VDaGFyYWN0ZXJUeXBlPjsKICAgICBmb3IgKGF1dG8gW2Rlc3RpbmF0aW9uQ2hhcmFjdGVy
LCBjaGFyYWN0ZXJdIDogemlwcGVkUmFuZ2UoZGVzdGluYXRpb24sIHNvdXJjZSkpCiAgICAgICAg
IGRlc3RpbmF0aW9uQ2hhcmFjdGVyID0gY2FzZUNvbnZlcnQoY2hhcmFjdGVyKTsKIH0KIAotdm9p
ZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNlQ29udmVydFR5cGUg
dHlwZSwgc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gZGVzdGluYXRpb24pIGNvbnN0Cit2b2lk
IFN0cmluZ1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSB0
eXBlLCBzdGQ6OnNwYW48TENoYXI+IGRlc3RpbmF0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChp
czhCaXQoKSk7CiAgICAgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2VJbnRlcm5hbCh0eXBlLCBk
ZXN0aW5hdGlvbiwgc3BhbjgoKSk7CkBAIC01MDIsNyArNTAyLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFN0cmluZyBtYWtlU3RyaW5nQnlTaW1wbGlmeWluZ05l
d0xpbmVzU2wKIFN0cmluZyBtYWtlU3RyaW5nQnlTaW1wbGlmeWluZ05ld0xpbmVzU2xvd0Nhc2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGZpcnN0Q2FycmlhZ2VSZXR1cm4pCiB7CiAg
ICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmdCeVNpbXBs
aWZ5aW5nTmV3TGluZXNTbG93Q2FzZTxMYXRpbjFDaGFyYWN0ZXI+KHN0cmluZywgZmlyc3RDYXJy
aWFnZVJldHVybik7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nQnlTaW1wbGlmeWluZ05ld0xp
bmVzU2xvd0Nhc2U8TENoYXI+KHN0cmluZywgZmlyc3RDYXJyaWFnZVJldHVybik7CiAgICAgcmV0
dXJuIG1ha2VTdHJpbmdCeVNpbXBsaWZ5aW5nTmV3TGluZXNTbG93Q2FzZTxjaGFyMTZfdD4oc3Ry
aW5nLCBmaXJzdENhcnJpYWdlUmV0dXJuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApp
bmRleCA3N2M3NDUxM2I3NjIuLmZjMDQxNmFhOWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvTGF0aW4xQ2hhcmFjdGVyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvTENoYXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb21tb24uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9VVEY4Q29udmVyc2lvbkVycm9yLmg+CiAKQEAgLTY2LDEzICs2NiwxMyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmcmIHN0cmluZyBMSUZFVElNRV9CT1VO
RCk7CiAgICAgU3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcgTElGRVRJTUVfQk9V
TkQpOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nIExJRkVUSU1FX0JP
VU5EKTsKLSAgICBTdHJpbmdWaWV3KHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHNw
YW4gTElGRVRJTUVfQk9VTkQpOworICAgIFN0cmluZ1ZpZXcoc3RkOjpzcGFuPGNvbnN0IExDaGFy
PiBzcGFuIExJRkVUSU1FX0JPVU5EKTsKICAgICBTdHJpbmdWaWV3KHN0ZDo6c3Bhbjxjb25zdCBj
aGFyMTZfdD4gc3BhbiBMSUZFVElNRV9CT1VORCk7CiAgICAgU3RyaW5nVmlldyhzdGQ6OnNwYW48
Y29uc3QgY2hhcj4gc3BhbiBMSUZFVElNRV9CT1VORCk7IC8vIEZJWE1FOiBDb25zaWRlciBkcm9w
cGluZyB0aGlzIG92ZXJsb2FkLiBDYWxsZXJzIHNob3VsZCBwYXNzIExDaGFycy9VQ2hhcnMgaW5z
dGVhZC4KICAgICBTdHJpbmdWaWV3KGNvbnN0IHZvaWQqIHN0cmluZyBMSUZFVElNRV9CT1VORCwg
dW5zaWduZWQgbGVuZ3RoLCBib29sIGlzOGJpdCk7CiAgICAgU3RyaW5nVmlldyhBU0NJSUxpdGVy
YWwpOwogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3RyaW5nVmlldyBmcm9tTGF0aW4xKHN0
ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHNwYW4gTElGRVRJTUVfQk9VTkQpIHsgcmV0
dXJuIFN0cmluZ1ZpZXcgeyBzcGFuIH07IH0gLy8gRklYTUU6IFRoaXMgY2FuIGJlY29tZSBzcGFu
PGNvbnN0IGNoYXI+IG9uY2UgQ1N0cmluZzo6c3BhbigpIGNoYW5nZXMgdG8gbWF0Y2gKKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBTdHJpbmdWaWV3IGZyb21MYXRpbjEoc3RkOjpzcGFuPGNvbnN0
IExDaGFyPiBzcGFuIExJRkVUSU1FX0JPVU5EKSB7IHJldHVybiBTdHJpbmdWaWV3IHsgc3BhbiB9
OyB9IC8vIEZJWE1FOiBUaGlzIGNhbiBiZWNvbWUgc3Bhbjxjb25zdCBjaGFyPiBvbmNlIENTdHJp
bmc6OnNwYW4oKSBjaGFuZ2VzIHRvIG1hdGNoCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3Ry
aW5nVmlldyBmcm9tTGF0aW4xKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpIHsgcmV0dXJuIFN0cmlu
Z1ZpZXcgeyBjaGFyYWN0ZXJzIH07IH0KIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpA
QCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwogICAg
IGNvbnN0IHZvaWQqIHJhd0NoYXJhY3RlcnMoKSBjb25zdCBMSUZFVElNRV9CT1VORCB7IHJldHVy
biBtX2NoYXJhY3RlcnM7IH0KLSAgICBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBz
cGFuOCgpIGNvbnN0IExJRkVUSU1FX0JPVU5EOworICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4g
c3BhbjgoKSBjb25zdCBMSUZFVElNRV9CT1VORDsKICAgICBzdGQ6OnNwYW48Y29uc3QgY2hhcjE2
X3Q+IHNwYW4xNigpIGNvbnN0IExJRkVUSU1FX0JPVU5EOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0ZDo6c3Bhbjxjb25zdCBDaGFyYWN0ZXJUeXBlPiBzcGFuKCkgY29u
c3QgTElGRVRJTUVfQk9VTkQ7CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBnZXRDaGFyYWN0ZXJzMTYoc3RkOjpz
cGFuPENoYXJhY3RlclR5cGU+KSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgQ2FzZUNvbnZlcnRU
eXBlIHsgVXBwZXIsIExvd2VyIH07Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0Q2hh
cmFjdGVyc1dpdGhBU0NJSUNhc2UoQ2FzZUNvbnZlcnRUeXBlLCBzdGQ6OnNwYW48TGF0aW4xQ2hh
cmFjdGVyPikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0Q2hhcmFjdGVy
c1dpdGhBU0NJSUNhc2UoQ2FzZUNvbnZlcnRUeXBlLCBzdGQ6OnNwYW48TENoYXI+KSBjb25zdDsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShD
YXNlQ29udmVydFR5cGUsIHN0ZDo6c3BhbjxjaGFyMTZfdD4pIGNvbnN0OwogCiAgICAgU3RyaW5n
VmlldyBzdWJzdHJpbmcodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CkBAIC0xNTMsOCArMTUzLDggQEAg
cHVibGljOgogICAgIFNwbGl0UmVzdWx0IHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoY2hhcjE2
X3QpIGNvbnN0OwogCiAgICAgc2l6ZV90IGZpbmQoY2hhcjE2X3QsIHVuc2lnbmVkIHN0YXJ0ID0g
MCkgY29uc3Q7Ci0gICAgc2l6ZV90IGZpbmQoTGF0aW4xQ2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFy
dCA9IDApIGNvbnN0OwotICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmQoY2hhciBjLCB1bnNp
Z25lZCBzdGFydCA9IDApIGNvbnN0IHsgcmV0dXJuIGZpbmQoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFj
dGVyPihjKSwgc3RhcnQpOyB9CisgICAgc2l6ZV90IGZpbmQoTENoYXIsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3Q7CisgICAgQUxXQVlTX0lOTElORSBzaXplX3QgZmluZChjaGFyIGMsIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gZmluZChieXRlQ2FzdDxMQ2hhcj4oYyksIHN0
YXJ0KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludm9jYWJsZV9yX3Y8Ym9vbCwgQ29kZVVuaXRNYXRjaEZ1
bmN0aW9uLCBjaGFyMTZfdD4+KiA9IG51bGxwdHI+CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRN
YXRjaEZ1bmN0aW9uJiYsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgQUxXQVlTX0lO
TElORSBzaXplX3QgZmluZChBU0NJSUxpdGVyYWwgbGl0ZXJhbCwgdW5zaWduZWQgc3RhcnQgPSAw
KSBjb25zdCB7IHJldHVybiBmaW5kKGxpdGVyYWwuc3BhbjgoKSwgc3RhcnQpOyB9CkBAIC0yMTMs
MTEgKzIxMywxMSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbFJlc3BlY3RpbmdOdWxsaXR5KFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogICAgIGZy
aWVuZCBzaXplX3QgZmluZENvbW1vbihTdHJpbmdWaWV3IGhheXN0YWNrLCBTdHJpbmdWaWV3IG5l
ZWRsZSwgdW5zaWduZWQgc3RhcnQpOwogCi0gICAgdm9pZCBpbml0aWFsaXplKHN0ZDo6c3Bhbjxj
b25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsKKyAgICB2b2lkIGluaXRpYWxpemUoc3RkOjpzcGFuPGNv
bnN0IExDaGFyPik7CiAgICAgdm9pZCBpbml0aWFsaXplKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZf
dD4pOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKHN0ZDo6c3Bhbjxjb25z
dCBMYXRpbjFDaGFyYWN0ZXI+IG1hdGNoLCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChzdGQ6OnNwYW48Y29uc3QgTGF0aW4x
Q2hhcmFjdGVyPiBtYXRjaCwgdW5zaWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmluZChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IG1hdGNoLCB1bnNpZ25l
ZCBzdGFydCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmlu
ZChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IG1hdGNoLCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaGVkQ2hh
cmFjdGVyUHJlZGljYXRlPgogICAgIFN0cmluZ1ZpZXcgdHJpbShzdGQ6OnNwYW48Y29uc3QgQ2hh
cmFjdGVyVHlwZT4sIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKSBjb25zdDsKQEAg
LTI1MSw3ICsyNTEsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiB2b2lkIGFwcGVuZChWZWN0b3I8Q2hhcmFjdGVyVHlw
ZSwgaW5saW5lQ2FwYWNpdHk+JiwgU3RyaW5nVmlldyk7CiAKIGJvb2wgZXF1YWwoU3RyaW5nVmll
dywgU3RyaW5nVmlldyk7Ci1ib29sIGVxdWFsKFN0cmluZ1ZpZXcsIGNvbnN0IExhdGluMUNoYXJh
Y3RlciogYik7Citib29sIGVxdWFsKFN0cmluZ1ZpZXcsIGNvbnN0IExDaGFyKiBiKTsKIAogYm9v
bCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwogYm9vbCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIEFTQ0lJTGl0ZXJhbCk7CkBAIC0zODAs
NyArMzgwLDcgQEAgaW5saW5lIFN0cmluZ1ZpZXcmIFN0cmluZ1ZpZXc6Om9wZXJhdG9yPShjb25z
dCBTdHJpbmdWaWV3JiBvdGhlcikKIAogI2VuZGlmIC8vIENIRUNLX1NUUklOR1ZJRVdfTElGRVRJ
TUUKIAotaW5saW5lIHZvaWQgU3RyaW5nVmlldzo6aW5pdGlhbGl6ZShzdGQ6OnNwYW48Y29uc3Qg
TGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQoraW5saW5lIHZvaWQgU3RyaW5nVmlldzo6aW5p
dGlhbGl6ZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiB7CiAgICAgbV9jaGFy
YWN0ZXJzID0gY2hhcmFjdGVycy5kYXRhKCk7CiAgICAgbV9sZW5ndGggPSBjaGFyYWN0ZXJzLnNp
emUoKTsKQEAgLTM5NCw3ICszOTQsNyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3Ojppbml0aWFs
aXplKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hhcmFjdGVycykKICAgICBtX2lzOEJpdCA9
IGZhbHNlOwogfQogCi1pbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQoraW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKQogewogICAgIGluaXRpYWxp
emUoY2hhcmFjdGVycyk7CiB9CkBAIC00MTEsNyArNDExLDcgQEAgaW5saW5lIFN0cmluZ1ZpZXc6
OlN0cmluZ1ZpZXcoY29uc3QgY2hhciogY2hhcmFjdGVycykKIAogaW5saW5lIFN0cmluZ1ZpZXc6
OlN0cmluZ1ZpZXcoc3RkOjpzcGFuPGNvbnN0IGNoYXI+IGNoYXJhY3RlcnMpCiB7Ci0gICAgaW5p
dGlhbGl6ZShieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNoYXJhY3RlcnMpKTsKKyAgICBpbml0
aWFsaXplKGJ5dGVDYXN0PExDaGFyPihjaGFyYWN0ZXJzKSk7CiB9CiAKIGlubGluZSBTdHJpbmdW
aWV3OjpTdHJpbmdWaWV3KGNvbnN0IHZvaWQqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
Ym9vbCBpczhiaXQpCkBAIC00NzMsMTEgKzQ3MywxMSBAQCBpbmxpbmUgdm9pZCBTdHJpbmdWaWV3
OjpjbGVhcigpCiAgICAgbV9pczhCaXQgPSB0cnVlOwogfQogCi1pbmxpbmUgc3RkOjpzcGFuPGNv
bnN0IExhdGluMUNoYXJhY3Rlcj4gU3RyaW5nVmlldzo6c3BhbjgoKSBjb25zdAoraW5saW5lIHN0
ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gU3RyaW5nVmlldzo6c3BhbjgoKSBjb25zdAogewogICAgIEFT
U0VSVChpczhCaXQoKSk7CiAgICAgQVNTRVJUKHVuZGVybHlpbmdTdHJpbmdJc1ZhbGlkKCkpOwot
ICAgIHJldHVybiB1bnNhZmVNYWtlU3BhbihzdGF0aWNfY2FzdDxjb25zdCBMYXRpbjFDaGFyYWN0
ZXIqPihtX2NoYXJhY3RlcnMpLCBtX2xlbmd0aCk7CisgICAgcmV0dXJuIHVuc2FmZU1ha2VTcGFu
KHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKSwgbV9sZW5ndGgpOwogfQog
CiBpbmxpbmUgc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBTdHJpbmdWaWV3OjpzcGFuMTYoKSBj
b25zdApAQCAtNDk0LDcgKzQ5NCw3IEBAIGlubGluZSB1bnNpZ25lZCBTdHJpbmdWaWV3OjpoYXNo
KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhzcGFuMTYoKSk7CiB9CiAKLXRlbXBsYXRlPD4gQUxXQVlTX0lOTElORSBzdGQ6OnNwYW48
Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBTdHJpbmdWaWV3OjpzcGFuPExhdGluMUNoYXJhY3Rlcj4o
KSBjb25zdAordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4g
U3RyaW5nVmlldzo6c3BhbjxMQ2hhcj4oKSBjb25zdAogewogICAgIHJldHVybiBzcGFuOCgpOwog
fQpAQCAtNjg4LDcgKzY4OCw3IEBAIGlubGluZSBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChjaGFy
MTZfdCBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogICAgIHJldHVybiBXVEY6OmZp
bmQoc3BhbjE2KCksIGNoYXJhY3Rlciwgc3RhcnQpOwogfQogCi1pbmxpbmUgc2l6ZV90IFN0cmlu
Z1ZpZXc6OmZpbmQoTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQpIGNv
bnN0CitpbmxpbmUgc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmQoTENoYXIgY2hhcmFjdGVyLCB1bnNp
Z25lZCBzdGFydCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBX
VEY6OmZpbmQoc3BhbjgoKSwgY2hhcmFjdGVyLCBzdGFydCk7CkBAIC03NjAsNyArNzYwLDcgQEAg
QUxXQVlTX0lOTElORSBib29sIGVxdWFsKFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKQogICAg
IHJldHVybiBlcXVhbENvbW1vbihhLCBiKTsKIH0KIAotaW5saW5lIGJvb2wgZXF1YWwoU3RyaW5n
VmlldyBhLCBjb25zdCBMYXRpbjFDaGFyYWN0ZXIqIGIpCitpbmxpbmUgYm9vbCBlcXVhbChTdHJp
bmdWaWV3IGEsIGNvbnN0IExDaGFyKiBiKQogewogICAgIGlmICghYikKICAgICAgICAgcmV0dXJu
ICFhLmlzRW1wdHkoKTsKQEAgLTk5NCw3ICs5OTQsNyBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3
OjpDb2RlUG9pbnRzOjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpIC0+IEl0ZXJhdG9yJgogI2VuZGlm
CiAgICAgQVNTRVJUKG1fY3VycmVudCA8IG1fZW5kKTsKICAgICBpZiAobV9pczhCaXQpCi0gICAg
ICAgIG1fY3VycmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IExhdGluMUNoYXJhY3Rlcio+KG1fY3Vy
cmVudCkgKyAxOworICAgICAgICBtX2N1cnJlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+
KG1fY3VycmVudCkgKyAxOwogICAgIGVsc2UgewogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIxNl90Kj4obV9lbmQp
IC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcjE2X3QqPihtX2N1cnJlbnQpOwpAQCAtMTAxMSw3ICsx
MDExLDcgQEAgaW5saW5lIGNoYXIzMl90IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9y
OjpvcGVyYXRvciooKSBjb25zdAogI2VuZGlmCiAgICAgQVNTRVJUKG1fY3VycmVudCA8IG1fZW5k
KTsKICAgICBpZiAobV9pczhCaXQpCi0gICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3Qg
TGF0aW4xQ2hhcmFjdGVyKj4obV9jdXJyZW50KTsKKyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2Fz
dDxjb25zdCBMQ2hhcio+KG1fY3VycmVudCk7CiAgICAgY2hhcjMyX3QgY29kZVBvaW50OwogICAg
IHNpemVfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyMTZfdCo+KG1fZW5kKSAtIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIxNl90Kj4obV9jdXJyZW50KTsKICAgICBVMTZfR0VUKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIxNl90Kj4obV9jdXJyZW50KSwgMCwgMCwgbGVuZ3RoLCBjb2RlUG9p
bnQpOwpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hlZENoYXJh
Y3RlclByZWRpY2F0ZT4KIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6dHJpbShjb25zdCBNYXRjaGVk
Q2hhcmFjdGVyUHJlZGljYXRlJiBwcmVkaWNhdGUpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gdHJpbTxMYXRpbjFDaGFyYWN0ZXI+KHNwYW44KCksIHByZWRpY2F0
ZSk7CisgICAgICAgIHJldHVybiB0cmltPExDaGFyPihzcGFuOCgpLCBwcmVkaWNhdGUpOwogICAg
IHJldHVybiB0cmltPGNoYXIxNl90PihzcGFuMTYoKSwgcHJlZGljYXRlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdXBlckZhc3RIYXNoLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N1cGVyRmFzdEhhc2guaAppbmRleCA3MmNjM2UxY2EwNjIuLjgzNWI1YTIwMzNiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdXBlckZhc3RIYXNoLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdXBlckZhc3RIYXNoLmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAvLyBQYXVsIEhzaWVoJ3MgU3VwZXJGYXN0SGFzaAogLy8gaHR0cDovL3d3dy5h
emlsbGlvbm1vbmtleXMuY29tL3FlZC9oYXNoLmh0bWwKIAotLy8gTGF0aW4xQ2hhcmFjdGVyIGRh
dGEgaXMgaW50ZXJwcmV0ZWQgYXMgTGF0aW4tMS1lbmNvZGVkICh6ZXJvLWV4dGVuZGVkIHRvIDE2
IGJpdHMpLgorLy8gTENoYXIgZGF0YSBpcyBpbnRlcnByZXRlZCBhcyBMYXRpbi0xLWVuY29kZWQg
KHplcm8tZXh0ZW5kZWQgdG8gMTYgYml0cykuCiAKIC8vIE5PVEU6IFRoZSBoYXNoIGNvbXB1dGF0
aW9uIGhlcmUgbXVzdCBzdGF5IGluIHN5bmMgd2l0aCB0aGUgY3JlYXRlX2hhc2hfdGFibGUgc2Ny
aXB0IGluCiAvLyBKYXZhU2NyaXB0Q29yZSBhbmQgdGhlIENvZGVHZW5lcmF0b3JKUy5wbSBzY3Jp
cHQgaW4gV2ViQ29yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1w
bC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKaW5kZXggODI4MjBmMjQxMjRj
Li5mMTlhYzQ3YTY5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1w
bC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCkBAIC03NCw3ICs3NCw3
IEBAIHByb3RlY3RlZDoKIAogICAgIGZyaWVuZCBjbGFzcyBTdHJpbmdJbXBsOwogCi0gICAgaW5s
aW5lIFN5bWJvbEltcGwoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4sIFJlZjxTdHJp
bmdJbXBsPiYmLCBGbGFncyA9IHNfZmxhZ0RlZmF1bHQpOworICAgIGlubGluZSBTeW1ib2xJbXBs
KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4sIFJlZjxTdHJpbmdJbXBsPiYmLCBGbGFncyA9IHNfZmxh
Z0RlZmF1bHQpOwogICAgIGlubGluZSBTeW1ib2xJbXBsKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZf
dD4sIFJlZjxTdHJpbmdJbXBsPiYmLCBGbGFncyA9IHNfZmxhZ0RlZmF1bHQpOwogICAgIGlubGlu
ZSBTeW1ib2xJbXBsKEZsYWdzID0gc19mbGFnRGVmYXVsdCk7CiAKQEAgLTg2LDcgKzg2LDcgQEAg
cHJvdGVjdGVkOgogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFN5bWJvbEltcGwpID09IHNpemVv
ZihTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsKSk7CiAKLWlubGluZSBTeW1ib2xJbXBsOjpT
eW1ib2xJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMsIFJl
ZjxTdHJpbmdJbXBsPiYmIGJhc2UsIEZsYWdzIGZsYWdzKQoraW5saW5lIFN5bWJvbEltcGw6OlN5
bWJvbEltcGwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzLCBSZWY8U3RyaW5nSW1w
bD4mJiBiYXNlLCBGbGFncyBmbGFncykKICAgICA6IFVuaXF1ZWRTdHJpbmdJbXBsKENyZWF0ZVN5
bWJvbCwgY2hhcmFjdGVycykKICAgICAsIG1fb3duZXIoJmJhc2UubGVha1JlZigpKQogICAgICwg
bV9oYXNoRm9yU3ltYm9sU2hpZnRlZFdpdGhGbGFnQ291bnQobmV4dEhhc2hGb3JTeW1ib2woKSkK
QEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWY8UHJpdmF0ZVN5bWJvbEltcGw+IGNyZWF0ZShTdHJpbmdJbXBsJiByZXApOwogCiBwcml2
YXRlOgotICAgIFByaXZhdGVTeW1ib2xJbXBsKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0
ZXI+IGNoYXJhY3RlcnMsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UpCisgICAgUHJpdmF0ZVN5bWJv
bEltcGwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzLCBSZWY8U3RyaW5nSW1wbD4m
JiBiYXNlKQogICAgICAgICA6IFN5bWJvbEltcGwoY2hhcmFjdGVycywgV1RGTW92ZShiYXNlKSwg
c19mbGFnSXNQcml2YXRlKQogICAgIHsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgUmVmPFJlZ2lzdGVyZWRTeW1ib2xJbXBsPiBjcmVhdGUoU3RyaW5nSW1w
bCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYpOwogICAgIHN0YXRpYyBSZWY8UmVnaXN0ZXJlZFN5bWJv
bEltcGw+IGNyZWF0ZVByaXZhdGUoU3RyaW5nSW1wbCYgcmVwLCBTeW1ib2xSZWdpc3RyeSYpOwog
Ci0gICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rl
cj4gY2hhcmFjdGVycywgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSwgU3ltYm9sUmVnaXN0cnkmIHJl
Z2lzdHJ5LCBGbGFncyBmbGFncyA9IHNfZmxhZ0lzUmVnaXN0ZXJlZCkKKyAgICBSZWdpc3RlcmVk
U3ltYm9sSW1wbChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMsIFJlZjxTdHJpbmdJ
bXBsPiYmIGJhc2UsIFN5bWJvbFJlZ2lzdHJ5JiByZWdpc3RyeSwgRmxhZ3MgZmxhZ3MgPSBzX2Zs
YWdJc1JlZ2lzdGVyZWQpCiAgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBXVEZNb3Zl
KGJhc2UpLCBmbGFncykKICAgICAgICAgLCBtX3N5bWJvbFJlZ2lzdHJ5KCZyZWdpc3RyeSkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgKaW5kZXggZTI3Y2U3ZWEx
ZjdlLi4xODM0N2U2MmI1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVW5pcXVl
ZFN0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBs
LmgKQEAgLTM1LDEyICszNSwxMiBAQCBjbGFzcyBVbmlxdWVkU3RyaW5nSW1wbCA6IHB1YmxpYyBT
dHJpbmdJbXBsIHsKIHByaXZhdGU6CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwoKSA9IGRlbGV0ZTsK
IHByb3RlY3RlZDoKLSAgICBpbmxpbmUgVW5pcXVlZFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFn
LCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPik7CisgICAgaW5saW5lIFVuaXF1ZWRT
dHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgc3RkOjpzcGFuPGNvbnN0IExDaGFyPik7CiAgICAg
aW5saW5lIFVuaXF1ZWRTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRhZywgc3RkOjpzcGFuPGNvbnN0
IGNoYXIxNl90Pik7CiAgICAgaW5saW5lIFVuaXF1ZWRTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbFRh
Zyk7CiB9OwogCi1pbmxpbmUgVW5pcXVlZFN0cmluZ0ltcGw6OlVuaXF1ZWRTdHJpbmdJbXBsKENy
ZWF0ZVN5bWJvbFRhZywgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVy
cykKK2lubGluZSBVbmlxdWVkU3RyaW5nSW1wbDo6VW5pcXVlZFN0cmluZ0ltcGwoQ3JlYXRlU3lt
Ym9sVGFnLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiAgICAgOiBTdHJpbmdJ
bXBsKENyZWF0ZVN5bWJvbCwgY2hhcmFjdGVycykKIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKaW5kZXggYjkxMWVkMjUyN2M2Li5iMWUyNWU0Mzk2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAKQEAgLTQ1LDE1ICs0NSwxNCBAQCBTdHJpbmc6OlN0cmluZyhzdGQ6OnNwYW48
Y29uc3QgY2hhcjE2X3Q+IGNoYXJhY3RlcnMpCiB7CiB9CiAKLS8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIExhdGluLTEgZGF0YS4KLVN0cmluZzo6U3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBMYXRp
bjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMpCisvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRp
bjEgZGF0YS4KK1N0cmluZzo6U3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gY2hhcmFjdGVy
cykKICAgICA6IG1faW1wbChjaGFyYWN0ZXJzLmRhdGEoKSA/IFJlZlB0ciB7IFN0cmluZ0ltcGw6
OmNyZWF0ZShjaGFyYWN0ZXJzKSB9IDogbnVsbHB0cikKIHsKIH0KIAotLy8gQ29uc3RydWN0IGEg
c3RyaW5nIHdpdGggTGF0aW4tMSBkYXRhLgogU3RyaW5nOjpTdHJpbmcoc3RkOjpzcGFuPGNvbnN0
IGNoYXI+IGNoYXJhY3RlcnMpCi0gICAgOiBtX2ltcGwoY2hhcmFjdGVycy5kYXRhKCkgPyBSZWZQ
dHIgeyBTdHJpbmdJbXBsOjpjcmVhdGUoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjaGFyYWN0
ZXJzKSkgfSA6IG51bGxwdHIpCisgICAgOiBtX2ltcGwoY2hhcmFjdGVycy5kYXRhKCkgPyBSZWZQ
dHIgeyBTdHJpbmdJbXBsOjpjcmVhdGUoYnl0ZUNhc3Q8dWludDhfdD4oY2hhcmFjdGVycykpIH0g
OiBudWxscHRyKQogewogfQogCkBAIC02MywxMiArNjIsNiBAQCBTdHJpbmc6OlN0cmluZyhjb25z
dCBjaGFyKiBudWxsVGVybWluYXRlZFN0cmluZykKIHsKIH0KIAotLy8gQ29uc3RydWN0IGEgc3Ry
aW5nIGZyb20gVVRGLTggZGF0YSwgbnVsbCBzdHJpbmcgaWYgaXQgY29udGFpbnMgaW52YWxpZCBV
VEYtOCBzZXF1ZW5jZXMuCi1TdHJpbmc6OlN0cmluZyhzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4g
Y2hhcmFjdGVycykKLSAgICA6IG1faW1wbChjaGFyYWN0ZXJzLmRhdGEoKSA/IFN0cmluZ0ltcGw6
OmNyZWF0ZShjaGFyYWN0ZXJzLCBTdHJpbmdJbXBsOjpSZXBsYWNlSW52YWxpZFNlcXVlbmNlczo6
Tm8pIDogbnVsbHB0cikKLXsKLX0KLQogc3RkOjpzdHJvbmdfb3JkZXJpbmcgY29kZVBvaW50Q29t
cGFyZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKIHsKICAgICByZXR1cm4gY29k
ZVBvaW50Q29tcGFyZShhLmltcGwoKSwgYi5pbXBsKCkpOwpAQCAtNDAwLDcgKzM5Myw3IEBAIENT
dHJpbmcgU3RyaW5nOjphc2NpaSgpIGNvbnN0CiAKICAgICAgICAgc2l6ZV90IGNoYXJhY3RlckJ1
ZmZlckluZGV4ID0gMDsKICAgICAgICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IGNoYXJhY3RlcnMp
Ci0gICAgICAgICAgICBjaGFyYWN0ZXJCdWZmZXJbY2hhcmFjdGVyQnVmZmVySW5kZXgrK10gPSBj
aGFyYWN0ZXIgJiYgKGNoYXJhY3RlciA8IDB4MjAgfHwgY2hhcmFjdGVyID4gMHg3ZikgPyAnPycg
OiBieXRlQ2FzdDxjaGFyPihjaGFyYWN0ZXIpOworICAgICAgICAgICAgY2hhcmFjdGVyQnVmZmVy
W2NoYXJhY3RlckJ1ZmZlckluZGV4KytdID0gY2hhcmFjdGVyICYmIChjaGFyYWN0ZXIgPCAweDIw
IHx8IGNoYXJhY3RlciA+IDB4N2YpID8gJz8nIDogY2hhcmFjdGVyOwogCiAgICAgICAgIHJldHVy
biByZXN1bHQ7ICAgICAgICAKICAgICB9CkBAIC00NTcsNyArNDUwLDcgQEAgQ1N0cmluZyBTdHJp
bmc6OnV0ZjgoQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKIAogU3RyaW5nIFN0cmluZzo6bWFr
ZThCaXQoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBzb3VyY2UpCiB7Ci0gICAgc3RkOjpzcGFu
PExhdGluMUNoYXJhY3Rlcj4gZGVzdGluYXRpb247CisgICAgc3RkOjpzcGFuPExDaGFyPiBkZXN0
aW5hdGlvbjsKICAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVk
KHNvdXJjZS5zaXplKCksIGRlc3RpbmF0aW9uKTsKICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFj
dGVycyhkZXN0aW5hdGlvbiwgc291cmNlKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDczLDEx
ICs0NjYsNDEgQEAgdm9pZCBTdHJpbmc6OmNvbnZlcnRUbzE2Qml0KCkKICAgICAqdGhpcyA9IFdU
Rk1vdmUoY29udmVydGVkU3RyaW5nKTsKIH0KIAordGVtcGxhdGU8Ym9vbCByZXBsYWNlSW52YWxp
ZFNlcXVlbmNlcz4KK1N0cmluZyBmcm9tVVRGOEltcGwoc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+
IHN0cmluZykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJpbmcuc2l6ZSgpIDw9IFN0cmluZzo6
TWF4TGVuZ3RoKTsKKworICAgIGlmIChzdHJpbmcuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CisKKyAgICBpZiAoY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHN0cmluZykpCisg
ICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUoYnl0ZUNhc3Q8TENoYXI+KHN0cmluZykp
OworCisgICAgVmVjdG9yPGNoYXIxNl90LCAxMDI0PiBidWZmZXIoc3RyaW5nLnNpemUoKSk7Cisg
CisgICAgYXV0byByZXN1bHQgPSByZXBsYWNlSW52YWxpZFNlcXVlbmNlcworICAgICAgICA/IFVu
aWNvZGU6OmNvbnZlcnRSZXBsYWNpbmdJbnZhbGlkU2VxdWVuY2VzKHN0cmluZywgYnVmZmVyLm11
dGFibGVTcGFuKCkpCisgICAgICAgIDogVW5pY29kZTo6Y29udmVydChzdHJpbmcsIGJ1ZmZlci5t
dXRhYmxlU3BhbigpKTsKKyAgICBpZiAocmVzdWx0LmNvZGUgIT0gVW5pY29kZTo6Q29udmVyc2lv
blJlc3VsdENvZGU6OlN1Y2Nlc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlc3VsdC5idWZmZXIuc2l6ZSgpIDw9
IHN0cmluZy5zaXplKCkpOworICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUocmVzdWx0LmJ1
ZmZlcik7Cit9CisKK1N0cmluZyBTdHJpbmc6OmZyb21VVEY4KHN0ZDo6c3Bhbjxjb25zdCBjaGFy
OF90PiBzdHJpbmcpCit7CisgICAgaWYgKCFzdHJpbmcuZGF0YSgpKQorICAgICAgICByZXR1cm4g
eyB9OworICAgIHJldHVybiBmcm9tVVRGOEltcGw8ZmFsc2U+KHN0cmluZyk7Cit9CisKIFN0cmlu
ZyBTdHJpbmc6OmZyb21VVEY4UmVwbGFjaW5nSW52YWxpZFNlcXVlbmNlcyhzdGQ6OnNwYW48Y29u
c3QgY2hhcjhfdD4gY2hhcmFjdGVycykKIHsKICAgICBpZiAoIWNoYXJhY3RlcnMuZGF0YSgpKQog
ICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFj
dGVycywgU3RyaW5nSW1wbDo6UmVwbGFjZUludmFsaWRTZXF1ZW5jZXM6Olllcyk7CisgICAgcmV0
dXJuIGZyb21VVEY4SW1wbDx0cnVlPihjaGFyYWN0ZXJzKTsKIH0KIAogU3RyaW5nIFN0cmluZzo6
ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+IHN0cmlu
ZykKQEAgLTQ4Niw3ICs1MDksNyBAQCBTdHJpbmcgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayhzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4gc3RyaW5nKQogICAgIGlmICghdXRmOCkg
ewogICAgICAgICAvLyBEbyB0aGlzIGFzc2VydGlvbiBiZWZvcmUgY2hvcHBpbmcgdGhlIHNpemVf
dCBkb3duIHRvIHVuc2lnbmVkLgogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHJpbmcuc2l6ZSgp
IDw9IFN0cmluZzo6TWF4TGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGJ5dGVDYXN0PExhdGluMUNo
YXJhY3Rlcj4oc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVDYXN0PExDaGFyPihzdHJpbmcp
OwogICAgIH0KICAgICByZXR1cm4gdXRmODsKIH0KQEAgLTUyMiwxMCArNTQ1LDEwIEBAIHN0YXRp
YyBpbmxpbmUgZG91YmxlIHRvRG91YmxlVHlwZShzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlw
ZT4gZGF0YSwgYm9vbCogb2ssCiAgICAgcmV0dXJuIG51bWJlcjsKIH0KIAotZG91YmxlIGNoYXJh
Y3RlcnNUb0RvdWJsZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBkYXRhLCBib29s
KiBvaykKK2RvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBk
YXRhLCBib29sKiBvaykKIHsKICAgICBzaXplX3QgcGFyc2VkTGVuZ3RoOwotICAgIHJldHVybiB0
b0RvdWJsZVR5cGU8TGF0aW4xQ2hhcmFjdGVyLCBUcmFpbGluZ0p1bmtQb2xpY3k6OkRpc2FsbG93
PihkYXRhLCBvaywgcGFyc2VkTGVuZ3RoKTsKKyAgICByZXR1cm4gdG9Eb3VibGVUeXBlPExDaGFy
LCBUcmFpbGluZ0p1bmtQb2xpY3k6OkRpc2FsbG93PihkYXRhLCBvaywgcGFyc2VkTGVuZ3RoKTsK
IH0KIAogZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+
IGRhdGEsIGJvb2wqIG9rKQpAQCAtNTM0LDExICs1NTcsMTEgQEAgZG91YmxlIGNoYXJhY3RlcnNU
b0RvdWJsZShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGRhdGEsIGJvb2wqIG9rKQogICAgIHJl
dHVybiB0b0RvdWJsZVR5cGU8Y2hhcjE2X3QsIFRyYWlsaW5nSnVua1BvbGljeTo6RGlzYWxsb3c+
KGRhdGEsIG9rLCBwYXJzZWRMZW5ndGgpOwogfQogCi1mbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChz
dGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBkYXRhLCBib29sKiBvaykKK2Zsb2F0IGNo
YXJhY3RlcnNUb0Zsb2F0KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gZGF0YSwgYm9vbCogb2spCiB7
CiAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCByZXR1cm4gb2sgZXZlbiB3aGVuIHRoZSBzdHJpbmcg
Zml0cyBpbnRvIGEgZG91YmxlIGJ1dCBub3QgYSBmbG9hdC4KICAgICBzaXplX3QgcGFyc2VkTGVu
Z3RoOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odG9Eb3VibGVUeXBlPExhdGluMUNo
YXJhY3RlciwgVHJhaWxpbmdKdW5rUG9saWN5OjpEaXNhbGxvdz4oZGF0YSwgb2ssIHBhcnNlZExl
bmd0aCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odG9Eb3VibGVUeXBlPExDaGFy
LCBUcmFpbGluZ0p1bmtQb2xpY3k6OkRpc2FsbG93PihkYXRhLCBvaywgcGFyc2VkTGVuZ3RoKSk7
CiB9CiAKIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4g
ZGF0YSwgYm9vbCogb2spCkBAIC01NDgsMTAgKzU3MSwxMCBAQCBmbG9hdCBjaGFyYWN0ZXJzVG9G
bG9hdChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGRhdGEsIGJvb2wqIG9rKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxmbG9hdD4odG9Eb3VibGVUeXBlPGNoYXIxNl90LCBUcmFpbGluZ0p1bmtQ
b2xpY3k6OkRpc2FsbG93PihkYXRhLCBvaywgcGFyc2VkTGVuZ3RoKSk7CiB9CiAKLWZsb2F0IGNo
YXJhY3RlcnNUb0Zsb2F0KHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGRhdGEsIHNp
emVfdCYgcGFyc2VkTGVuZ3RoKQorZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoc3RkOjpzcGFuPGNv
bnN0IExDaGFyPiBkYXRhLCBzaXplX3QmIHBhcnNlZExlbmd0aCkKIHsKICAgICAvLyBGSVhNRTog
VGhpcyB3aWxsIHJldHVybiBvayBldmVuIHdoZW4gdGhlIHN0cmluZyBmaXRzIGludG8gYSBkb3Vi
bGUgYnV0IG5vdCBhIGZsb2F0LgotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odG9Eb3Vi
bGVUeXBlPExhdGluMUNoYXJhY3RlciwgVHJhaWxpbmdKdW5rUG9saWN5OjpBbGxvdz4oZGF0YSwg
bnVsbHB0ciwgcGFyc2VkTGVuZ3RoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih0
b0RvdWJsZVR5cGU8TENoYXIsIFRyYWlsaW5nSnVua1BvbGljeTo6QWxsb3c+KGRhdGEsIG51bGxw
dHIsIHBhcnNlZExlbmd0aCkpOwogfQogCiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChzdGQ6OnNw
YW48Y29uc3QgY2hhcjE2X3Q+IGRhdGEsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKaW5kZXggOTQ0YzQ1ZTQyNWExLi5iYjYzM2RhOWQzZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00NCwxMSArNDQs
MTEgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIERlY2xhcmF0aW9ucyBvZiBzdHJpbmcgb3BlcmF0
aW9ucwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiwgYm9vbCogb2sgPSBudWxscHRyKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKHN0ZDo6c3Bhbjxjb25zdCBM
Q2hhcj4sIGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNo
YXJhY3RlcnNUb0RvdWJsZShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+LCBib29sKiBvayA9IG51
bGxwdHIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KHN0ZDo6
c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+LCBib29sKiBvayA9IG51bGxwdHIpOworV1RGX0VY
UE9SVF9QUklWQVRFIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KHN0ZDo6c3Bhbjxjb25zdCBMQ2hh
cj4sIGJvb2wqIG9rID0gbnVsbHB0cik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgY2hhcmFj
dGVyc1RvRmxvYXQoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiwgYm9vbCogb2sgPSBudWxscHRy
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChzdGQ6OnNwYW48
Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiwgc2l6ZV90JiBwYXJzZWRMZW5ndGgpOworV1RGX0VYUE9S
VF9QUklWQVRFIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4s
IHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0
ZXJzVG9GbG9hdChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+LCBzaXplX3QmIHBhcnNlZExlbmd0
aCk7CiAKIHRlbXBsYXRlPGJvb2wgaXNTcGVjaWFsQ2hhcmFjdGVyKGNoYXIxNl90KSwgdHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZSwgc3RkOjpzaXplX3QgRXh0ZW50PiBib29sIGNvbnRhaW5zT25seShz
dGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZSwgRXh0ZW50Pik7CkBAIC02MiwyMCArNjIsMTIg
QEAgcHVibGljOgogICAgIFN0cmluZygpID0gZGVmYXVsdDsKIAogICAgIC8vIENvbnN0cnVjdCBh
IHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmco
c3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyhzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIHdpdGggTGF0aW4tMSBkYXRhLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pOwotCi0gICAgLy8gRGVwcmVj
YXRlZDogQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggTGF0aW4tMSBkYXRhLgotICAgIC8vIEZJWE1F
OiBTdG9wIHVzaW5nIHRoaXMgY29uc3RydWN0b3IgYW5kIGRlbGV0ZSBpdC4KLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nKHN0ZDo6c3Bhbjxjb25zdCBjaGFyPik7Ci0KLSAgICAvLyBDb25z
dHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgotICAgIFN0cmlu
ZyhBU0NJSUxpdGVyYWwpOwotCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gVVRGLTgg
ZGF0YSwgbnVsbCBzdHJpbmcgaWYgaXQgY29udGFpbnMgaW52YWxpZCBVVEYtOCBzZXF1ZW5jZXMu
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4p
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBj
aGFyYWN0ZXJzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKHN0ZDo6c3Bhbjxjb25z
dCBjaGFyPiBjaGFyYWN0ZXJzKTsKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTdHJpbmcgZnJv
bUxhdGluMShjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKSB7IHJldHVybiBTdHJpbmcgeyBjaGFyYWN0
ZXJzIH07IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlz
dGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CkBAIC04OSw2ICs4MSw5
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYpOwogICAgIFN0cmluZyhT
dGF0aWNTdHJpbmdJbXBsKik7CiAKKyAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNv
bnN0YW50IHN0cmluZyBsaXRlcmFsLgorICAgIFN0cmluZyhBU0NJSUxpdGVyYWwpOworCiAgICAg
U3RyaW5nKGNvbnN0IFN0cmluZyYpID0gZGVmYXVsdDsKICAgICBTdHJpbmcoU3RyaW5nJiYpID0g
ZGVmYXVsdDsKICAgICBTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7
CkBAIC05OCw5ICs5Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3dhcChTdHJpbmcmIG8pIHsg
bV9pbXBsLnN3YXAoby5tX2ltcGwpOyB9CiAKLSAgICBzdGF0aWMgU3RyaW5nIGFkb3B0KFN0cmlu
Z0J1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+JiYgYnVmZmVyKSB7IHJldHVybiBTdHJpbmdJbXBsOjph
ZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOyB9CisgICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJpbmdC
dWZmZXI8TENoYXI+JiYgYnVmZmVyKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlcikpOyB9CiAgICAgc3RhdGljIFN0cmluZyBhZG9wdChTdHJpbmdCdWZmZXI8Y2hhcjE2
X3Q+JiYgYnVmZmVyKSB7IHJldHVybiBTdHJpbmdJbXBsOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikp
OyB9Ci0gICAgdGVtcGxhdGU8SXNTdHJpbmdTdG9yYWdlQ2hhcmFjdGVyIENoYXJhY3RlclR5cGUs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CiAgICAgc3RhdGljIFN0cmlu
ZyBhZG9wdChWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz4mJiB2ZWN0b3IpIHsgcmV0dXJuIFN0cmluZ0ltcGw6
OmFkb3B0KFdURk1vdmUodmVjdG9yKSk7IH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gIW1faW1wbDsgfQpAQCAtMTEwLDE2ICsxMDUsMTUgQEAgcHVibGljOgogICAgIFJlZlB0
cjxTdHJpbmdJbXBsPiByZWxlYXNlSW1wbCgpIHsgcmV0dXJuIFdURk1vdmUobV9pbXBsKTsgfQog
CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5s
ZW5ndGgoKSA6IDA7IH0KLSAgICBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzcGFu
OCgpIGNvbnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3Bhbjgo
KSA6IHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KCk7IH0KKyAgICBzdGQ6OnNwYW48
Y29uc3QgTENoYXI+IHNwYW44KCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5zcGFuOCgpIDogc3RkOjpzcGFuPGNvbnN0IExDaGFyPigpOyB9CiAgICAgc3Rk
OjpzcGFuPGNvbnN0IGNoYXIxNl90PiBzcGFuMTYoKSBjb25zdCBMSUZFVElNRV9CT1VORCB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPnNwYW4xNigpIDogc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90
PigpOyB9CiAKICAgICAvLyBSZXR1cm4gc3BhbjgoKSBvciBzcGFuMTYoKSBkZXBlbmRpbmcgb24g
Q2hhcmFjdGVyVHlwZS4KLSAgICB0ZW1wbGF0ZTxJc1N0cmluZ1N0b3JhZ2VDaGFyYWN0ZXIgQ2hh
cmFjdGVyVHlwZT4KLSAgICBzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4gc3BhbigpIGNv
bnN0IExJRkVUSU1FX0JPVU5EOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0ZDo6c3Bhbjxjb25zdCBDaGFyYWN0ZXJUeXBlPiBzcGFuKCkgY29uc3QgTElGRVRJTUVfQk9V
TkQ7CiAKICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBs
LT5pczhCaXQoKTsgfQogCi0gICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPmxlbmd0aCgpICogKGlzOEJpdCgpID8gc2l6ZW9mKExhdGluMUNo
YXJhY3RlcikgOiBzaXplb2YoY2hhcjE2X3QpKSA6IDA7IH0KKyAgICB1bnNpZ25lZCBzaXplSW5C
eXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+bGVuZ3RoKCkgKiAoaXM4Qml0
KCkgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKGNoYXIxNl90KSkgOiAwOyB9CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBDU3RyaW5nIGxhdGluMSgpIGNvbnN0OwpAQCAtMTUxLDcgKzE0NSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIEZpbmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3aXRoIG1h
dGNoIGZ1bmN0aW9uICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKGNoYXIxNl90IGNo
YXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2lt
cGwtPmZpbmQoY2hhcmFjdGVyLCBzdGFydCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCBmaW5k
KExhdGluMUNoYXJhY3RlciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7
IH0KKyAgICBzaXplX3QgZmluZChMQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKGNoYXJhY3Rlciwgc3RhcnQpIDog
bm90Rm91bmQ7IH0KICAgICBzaXplX3QgZmluZChjaGFyIGNoYXJhY3RlciwgdW5zaWduZWQgc3Rh
cnQgPSAwKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmZpbmQoY2hhcmFjdGVyLCBz
dGFydCkgOiBub3RGb3VuZDsgfQogCiAgICAgc2l6ZV90IGZpbmQoU3RyaW5nVmlldykgY29uc3Q7
CkBAIC0yMTcsNyArMjExLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYW4gdW5pbml0aWFs
aXplZCBzdHJpbmcuIFRoZSBjaGFyYWN0ZXJzIG5lZWRzIHRvIGJlIHdyaXR0ZW4KICAgICAvLyBp
bnRvIHRoZSBidWZmZXIgcmV0dXJuZWQgaW4gZGF0YSBiZWZvcmUgdGhlIHJldHVybmVkIHN0cmlu
ZyBpcyB1c2VkLgogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25l
ZCBsZW5ndGgsIHN0ZDo6c3BhbjxjaGFyMTZfdD4mIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQotICAgIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIHN0ZDo6c3BhbjxMYXRpbjFDaGFy
YWN0ZXI+JiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCwgZGF0YSk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoLCBzdGQ6OnNwYW48TENoYXI+JiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBs
OjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KIAogICAgIHVzaW5nIFNwbGl0
RnVuY3RvciA9IFdURjo6RnVuY3Rpb248dm9pZChTdHJpbmdWaWV3KT47CiAKQEAgLTI3MiwyMiAr
MjY2LDE4IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBt
YWtlOEJpdChzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBjb252ZXJ0VG8xNkJpdCgpOwogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU3Ry
aW5nIGZyb21MYXRpbjEoY29uc3QgY2hhciogY2hhcmFjdGVycykgeyByZXR1cm4gU3RyaW5nIHsg
Y2hhcmFjdGVycyB9OyB9Ci0KLSAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgc3RyaW5nIGlmIHRo
ZSBpbnB1dCBkYXRhIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc2VxdWVuY2VzLgotICAgIHN0YXRp
YyBTdHJpbmcgZnJvbVVURjgoc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+IGNoYXJhY3RlcnMpIHsg
cmV0dXJuIGNoYXJhY3RlcnM7IH0gLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFuZCBoYXZlIGNhbGxl
cnMgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseS4KLSAgICB0ZW1wbGF0ZTxJc0J5dGUgQ2hh
cmFjdGVyVHlwZT4KLSAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KHN0ZDo6c3BhbjxDaGFyYWN0
ZXJUeXBlPiBjaGFyYWN0ZXJzKSB7IHJldHVybiBzcGFuQ29uc3RDYXN0PGNvbnN0IGNoYXI4X3Q+
KGJ5dGVDYXN0PGNoYXI4X3Q+KGNoYXJhY3RlcnMpKTsgfQorICAgIC8vIFN0cmluZzo6ZnJvbVVU
Rjggd2lsbCByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBp
bnZhbGlkIFVURi04IHNlcXVlbmNlcy4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cmluZyBmcm9tVVRGOChzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4pOworICAgIHN0YXRpYyBTdHJp
bmcgZnJvbVVURjgoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKSB7IHJldHVybiBm
cm9tVVRGOChieXRlQ2FzdDxjaGFyOF90PihjaGFyYWN0ZXJzKSk7IH0KICAgICBzdGF0aWMgU3Ry
aW5nIGZyb21VVEY4KHN0ZDo6c3Bhbjxjb25zdCBjaGFyPiBjaGFyYWN0ZXJzKSB7IHJldHVybiBm
cm9tVVRGOChieXRlQ2FzdDxjaGFyOF90PihjaGFyYWN0ZXJzKSk7IH0KICAgICBzdGF0aWMgU3Ry
aW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4gZnJvbVVURjgodW5zYWZl
U3Bhbjgoc3RyaW5nKSk7IH0KLQotICAgIC8vIFdpbGwgY29udmVydCBpbnZhbGlkIFVURi04IHNl
cXVlbmNlcyBpbnRvIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIuCiAgICAgc3RhdGljIFN0cmlu
ZyBmcm9tVVRGOFJlcGxhY2luZ0ludmFsaWRTZXF1ZW5jZXMoc3RkOjpzcGFuPGNvbnN0IGNoYXI4
X3Q+KTsKKyAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4UmVwbGFjaW5nSW52YWxpZFNlcXVlbmNl
cyhzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpIHsgcmV0dXJuIGZyb21VVEY4UmVw
bGFjaW5nSW52YWxpZFNlcXVlbmNlcyhieXRlQ2FzdDxjaGFyOF90PihjaGFyYWN0ZXJzKSk7IH0K
IAogICAgIC8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgs
IGJ1dCB3aWxsIGZhbGwgYmFjayB0byBMYXRpbi0xIGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlk
IFVURi04LgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKHN0ZDo6c3Bhbjxjb25zdCBjaGFyOF90Pik7Ci0gICAgdGVtcGxhdGU8
SXNCeXRlIENoYXJhY3RlclR5cGU+Ci0gICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRp
bjFGYWxsYmFjayhzdGQ6OnNwYW48Q2hhcmFjdGVyVHlwZT4gY2hhcmFjdGVycykgeyByZXR1cm4g
ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soc3BhbkNvbnN0Q2FzdDxjb25zdCBjaGFyOF90Pihi
eXRlQ2FzdDxjaGFyOF90PihjaGFyYWN0ZXJzKSkpOyB9CisgICAgc3RhdGljIFN0cmluZyBmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMp
IHsgcmV0dXJuIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ5dGVDYXN0PGNoYXI4X3Q+KGNo
YXJhY3RlcnMpKTsgfQorICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2soc3RkOjpzcGFuPGNvbnN0IGNoYXI+IGNoYXJhY3RlcnMpIHsgcmV0dXJuIGZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKGJ5dGVDYXN0PGNoYXI4X3Q+KGNoYXJhY3RlcnMpKTsgfQogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbUNvZGVQb2ludChjaGFyMzJfdCBj
b2RlUG9pbnQpOwogCkBAIC0zODQsNyArMzc0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9y
VHJhaXRzPFN0cmluZz4gOiBWZWN0b3JUcmFpdHNCYXNlPGZhbHNlLCB2b2lkPiB7CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CiAgICAg
dXNpbmcgUmV0dXJuVHlwZSA9IFN0cmluZzsKICAgICB1c2luZyBBZGRpdGlvbmFsQXJndW1lbnRU
eXBlID0gdm9pZDsKLSAgICBzdGF0aWMgU3RyaW5nIGZsdXNoKHN0ZDo6c3Bhbjxjb25zdCBMYXRp
bjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMsIHZvaWQqKSB7IHJldHVybiBjaGFyYWN0ZXJzOyB9Cisg
ICAgc3RhdGljIFN0cmluZyBmbHVzaChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMs
IHZvaWQqKSB7IHJldHVybiBjaGFyYWN0ZXJzOyB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBN
YXJrYWJsZVRyYWl0czxTdHJpbmc+IHsKQEAgLTQ0OSw3ICs0MzksNyBAQCBpbmxpbmUgU3RyaW5n
OjpTdHJpbmcoQVNDSUlMaXRlcmFsIGNoYXJhY3RlcnMpCiB7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IFN0cmluZzo6c3BhbjxMYXRpbjFD
aGFyYWN0ZXI+KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIHN0ZDo6c3Bhbjxjb25zdCBMQ2hh
cj4gU3RyaW5nOjpzcGFuPExDaGFyPigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNwYW44KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dZSGFzaC5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9XWUhhc2guaAppbmRleCA0MWI3Mjc2NGQ0ZjUuLjMwOTM5NTQ3MzNhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XWUhhc2guaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dZSGFzaC5oCkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
IH07CiAKLSAgICAvLyBMYXRpbjFDaGFyYWN0ZXIgZGF0YSBpcyBpbnRlcnByZXRlZCBhcyBMYXRp
bi0xLWVuY29kZWQgKHplcm8tZXh0ZW5kZWQgdG8gMTYgYml0cykuCisgICAgLy8gTENoYXIgZGF0
YSBpcyBpbnRlcnByZXRlZCBhcyBMYXRpbi0xLWVuY29kZWQgKHplcm8tZXh0ZW5kZWQgdG8gMTYg
Yml0cykuCiAgICAgLy8gVG8gbWF0Y2ggdGhlIGhhc2ggdmFsdWUgb2YgY2hhcjE2X3Qgd2l0aCBz
YW1lIGNvbnRlbnQsIGV4dGVuZCAxNiBiaXRzICgweGZmKQogICAgIC8vIHRvIDMyIGJpdHMgKDB4
MDBmZikuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyID0gRGVm
YXVsdENvbnZlcnRlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvQXRvbVN0
cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL0F0b21TdHJpbmdJbXBsQ0Yu
Y3BwCmluZGV4IGJiNDUzYWMyYzFmZS4uMjJjYTZjM2ZhYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2NmL0F0b21TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvY2YvQXRvbVN0cmluZ0ltcGxDRi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgUmVmUHRyPEF0
b21TdHJpbmdJbXBsPiBBdG9tU3RyaW5nSW1wbDo6YWRkKENGU3RyaW5nUmVmIHN0cmluZykKICAg
ICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoYXV0byBz
cGFuID0gYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihDRlN0cmluZ0dldExhdGluMUNTdHJpbmdT
cGFuKHN0cmluZykpOyBzcGFuLmRhdGEoKSkKKyAgICBpZiAoYXV0byBzcGFuID0gYnl0ZUNhc3Q8
TENoYXI+KENGU3RyaW5nR2V0TGF0aW4xQ1N0cmluZ1NwYW4oc3RyaW5nKSk7IHNwYW4uZGF0YSgp
KQogICAgICAgICByZXR1cm4gYWRkKHNwYW4pOwogCiAgICAgc2l6ZV90IGxlbmd0aCA9IENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2Nm
L1N0cmluZ0NGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nQ0YuY3BwCmluZGV4
IDQ2OGZkZGU1ZTgyZC4uZjMzM2Y4MjdmNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2NmL1N0cmluZ0NGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0NG
LmNwcApAQCAtNDEsOSArNDEsOSBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAg
ICAgfQogCiAgICAgewotICAgICAgICBTdHJpbmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiBidWZm
ZXIoc2l6ZSk7CisgICAgICAgIFN0cmluZ0J1ZmZlcjxMQ2hhcj4gYnVmZmVyKHNpemUpOwogICAg
ICAgICBDRkluZGV4IHVzZWRCdWZMZW47Ci0gICAgICAgIENGSW5kZXggY29udmVydGVkU2l6ZSA9
IENGU3RyaW5nR2V0Qnl0ZXMoc3RyLCBDRlJhbmdlTWFrZSgwLCBzaXplKSwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIDAsIGZhbHNlLCBieXRlQ2FzdDxVSW50OD4oYnVmZmVyLmNoYXJhY3Rl
cnMoKSksIHNpemUsICZ1c2VkQnVmTGVuKTsKKyAgICAgICAgQ0ZJbmRleCBjb252ZXJ0ZWRTaXpl
ID0gQ0ZTdHJpbmdHZXRCeXRlcyhzdHIsIENGUmFuZ2VNYWtlKDAsIHNpemUpLCBrQ0ZTdHJpbmdF
bmNvZGluZ0lTT0xhdGluMSwgMCwgZmFsc2UsIGJ1ZmZlci5jaGFyYWN0ZXJzKCksIHNpemUsICZ1
c2VkQnVmTGVuKTsKICAgICAgICAgaWYgKGNvbnZlcnRlZFNpemUgPT0gc2l6ZSAmJiB1c2VkQnVm
TGVuID09IHNpemUpIHsKICAgICAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmFkb3B0KFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0NvbmNhdGVuYXRlQ0YuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY2YvU3RyaW5nQ29uY2F0ZW5hdGVDRi5oCmluZGV4IDU2ZjVjOWIxNGY4OC4uYWU4Yzc2N2My
MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0NvbmNhdGVuYXRl
Q0YuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0NvbmNhdGVuYXRlQ0YuaApA
QCAtNDksNyArNDksNyBAQCBpbmxpbmUgU3RyaW5nVHlwZUFkYXB0ZXI8Q0ZTdHJpbmdSZWY+OjpT
dHJpbmdUeXBlQWRhcHRlcihDRlN0cmluZ1JlZiBzdHJpbmcpCiB7CiB9CiAKLXRlbXBsYXRlPD4g
aW5saW5lIHZvaWQgU3RyaW5nVHlwZUFkYXB0ZXI8Q0ZTdHJpbmdSZWY+Ojp3cml0ZVRvPExhdGlu
MUNoYXJhY3Rlcj4oc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4gZGVzdGluYXRpb24pIGNvbnN0
Cit0ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFN0cmluZ1R5cGVBZGFwdGVyPENGU3RyaW5nUmVmPjo6
d3JpdGVUbzxMQ2hhcj4oc3RkOjpzcGFuPExDaGFyPiBkZXN0aW5hdGlvbikgY29uc3QKIHsKICAg
ICBpZiAobV9zdHJpbmcpCiAgICAgICAgIG1lbWNweVNwYW4oZGVzdGluYXRpb24sIENGU3RyaW5n
R2V0TGF0aW4xQ1N0cmluZ1NwYW4obV9zdHJpbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3Ry
aW5nSW1wbENGLmNwcAppbmRleCA3MTMzNzU5NzU1YjkuLmE2MjI5YzQxZGVhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogICAgIGlmICgh
bV9sZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkgewog
ICAgICAgICAgICAgYXV0byBjaGFyYWN0ZXJzID0gc3BhbjgoKTsKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVDYXN0PFVJbnQ4
PihjaGFyYWN0ZXJzLmRhdGEoKSksIGNoYXJhY3RlcnMuc2l6ZSgpLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgZmFsc2UpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNp
emUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlKSk7CiAgICAgICAgIH0KICAg
ICAgICAgYXV0byBjaGFyYWN0ZXJzID0gc3BhbjE2KCk7CiAgICAgICAgIHJldHVybiBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVbmlDaGFyKj4oY2hhcmFjdGVycy5kYXRhKCkpLCBjaGFyYWN0ZXJzLnNpemUoKSkpOwpA
QCAtMTM1LDcgKzEzNSw3IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3Jl
YXRlQ0ZTdHJpbmcoKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwogICAgIGlm
IChpczhCaXQoKSkgewogICAgICAgICBhdXRvIGNoYXJhY3RlcnMgPSBzcGFuOCgpOwotICAgICAg
ICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRv
ciwgYnl0ZUNhc3Q8VUludDg+KGNoYXJhY3RlcnMuZGF0YSgpKSwgY2hhcmFjdGVycy5zaXplKCks
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwor
ICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFs
bG9jYXRvciwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3RlcnMuc2l6ZSgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBhdXRvIGNoYXJhY3RlcnMgPSBzcGFuMTYoKTsKICAgICAgICAgc3RyaW5nID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVycy5kYXRhKCkpLCBjaGFyYWN0
ZXJzLnNpemUoKSwga0NGQWxsb2NhdG9yTnVsbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9jZi9TdHJpbmdWaWV3Q0YuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJp
bmdWaWV3Q0YuY3BwCmluZGV4IDYxMTFkZTQ2YmZkOC4uMzgxZDJlMWI1ZTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ1ZpZXdDRi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9jZi9TdHJpbmdWaWV3Q0YuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gU3RyaW5nVmlldzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAg
IGlmIChpczhCaXQoKSkgewogICAgICAgICBhdXRvIGNoYXJhY3RlcnMgPSBzcGFuOCgpOwotICAg
ICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBieXRlQ2FzdDxVSW50OD4oY2hhcmFjdGVycy5kYXRhKCkpLCBjaGFyYWN0ZXJzLnNp
emUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNo
YXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09M
YXRpbjEsIGZhbHNlKSk7CiAgICAgfQogICAgIGF1dG8gY2hhcmFjdGVycyA9IHNwYW4xNigpOwog
ICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVycy5k
YXRhKCkpLCBjaGFyYWN0ZXJzLnNpemUoKSkpOwpAQCAtNDcsNyArNDcsNyBAQCBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IFN0cmluZ1ZpZXc6OmNyZWF0ZUNGU3RyaW5nV2l0aG91dENvcHlpbmcoKSBj
b25zdAogewogICAgIGlmIChpczhCaXQoKSkgewogICAgICAgICBhdXRvIGNoYXJhY3RlcnMgPSBz
cGFuOCgpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05v
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBieXRlQ2FzdDxVSW50OD4oY2hhcmFjdGVycy5kYXRh
KCkpLCBjaGFyYWN0ZXJzLnNpemUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNl
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJhY3RlcnMuZGF0YSgp
LCBjaGFyYWN0ZXJzLnNpemUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgfQogICAgIGF1dG8gY2hhcmFjdGVycyA9IHNwYW4xNigp
OwogICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hh
cmFjdGVycy5kYXRhKCkpLCBjaGFyYWN0ZXJzLnNpemUoKSwga0NGQWxsb2NhdG9yTnVsbCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9BU0NJSUxpdGVyYWxDb2NvYS5t
bSBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvQVNDSUlMaXRlcmFsQ29jb2EubW0KaW5kZXgg
OGQxNGMwMGEzYzNlLi45ZDk2NWI1MmY4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY29jb2EvQVNDSUlMaXRlcmFsQ29jb2EubW0KKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9j
b2NvYS9BU0NJSUxpdGVyYWxDb2NvYS5tbQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKIFJldGFpblB0cjxOU1N0cmluZz4gQVNDSUlMaXRlcmFsOjpjcmVhdGVOU1N0cmluZygpIGNv
bnN0CiB7CiAgICAgYXV0byBzcGFuID0gc3BhbjgoKTsKLSAgICByZXR1cm4gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8TGF0aW4xQ2hhcmFj
dGVyKj4oc3Bhbi5kYXRhKCkpIGxlbmd0aDpzcGFuLnNpemUoKSBlbmNvZGluZzpOU0lTT0xhdGlu
MVN0cmluZ0VuY29kaW5nIGZyZWVXaGVuRG9uZTpOT10pOworICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDxMQ2hhcio+KHNw
YW4uZGF0YSgpKSBsZW5ndGg6c3Bhbi5zaXplKCkgZW5jb2Rpbmc6TlNJU09MYXRpbjFTdHJpbmdF
bmNvZGluZyBmcmVlV2hlbkRvbmU6Tk9dKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ1ZpZXdDb2NvYS5tbSBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nVmlld0NvY29hLm1tCmluZGV4IGQ4YmZkMWU2
Y2JjZS4uM2IwODU2NmU1ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29h
L1N0cmluZ1ZpZXdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmlu
Z1ZpZXdDb2NvYS5tbQpAQCAtMzQsNyArMzQsNyBAQCBSZXRhaW5QdHI8TlNTdHJpbmc+IFN0cmlu
Z1ZpZXc6OmNyZWF0ZU5TU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpIHsKICAg
ICAgICAgYXV0byBjaGFyYWN0ZXJzID0gc3BhbjgoKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhCeXRlczpjb25zdF9jYXN0PExhdGluMUNoYXJhY3Rl
cio+KGNoYXJhY3RlcnMuZGF0YSgpKSBsZW5ndGg6Y2hhcmFjdGVycy5zaXplKCkgZW5jb2Rpbmc6
TlNJU09MYXRpbjFTdHJpbmdFbmNvZGluZ10pOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05T
U3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvbnN0X2Nhc3Q8TENoYXIqPihjaGFyYWN0ZXJz
LmRhdGEoKSkgbGVuZ3RoOmNoYXJhY3RlcnMuc2l6ZSgpIGVuY29kaW5nOk5TSVNPTGF0aW4xU3Ry
aW5nRW5jb2RpbmddKTsKICAgICB9CiAgICAgYXV0byBjaGFyYWN0ZXJzID0gc3BhbjE2KCk7CiAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzOnJl
aW50ZXJwcmV0X2Nhc3Q8dW5pY2hhcio+KGNvbnN0X2Nhc3Q8Y2hhcjE2X3QqPihjaGFyYWN0ZXJz
LmRhdGEoKSkpIGxlbmd0aDpjaGFyYWN0ZXJzLnNpemUoKV0pOwpAQCAtNDQsNyArNDQsNyBAQCBS
ZXRhaW5QdHI8TlNTdHJpbmc+IFN0cmluZ1ZpZXc6OmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlp
bmcoKSBjb25zdAogewogICAgIGlmIChpczhCaXQoKSkgewogICAgICAgICBhdXRvIGNoYXJhY3Rl
cnMgPSBzcGFuOCgpOwotICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8TGF0aW4xQ2hhcmFjdGVyKj4oY2hhcmFjdGVy
cy5kYXRhKCkpIGxlbmd0aDpjaGFyYWN0ZXJzLnNpemUoKSBlbmNvZGluZzpOU0lTT0xhdGluMVN0
cmluZ0VuY29kaW5nIGZyZWVXaGVuRG9uZTpOT10pOworICAgICAgICByZXR1cm4gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8TENoYXIqPihj
aGFyYWN0ZXJzLmRhdGEoKSkgbGVuZ3RoOmNoYXJhY3RlcnMuc2l6ZSgpIGVuY29kaW5nOk5TSVNP
TGF0aW4xU3RyaW5nRW5jb2RpbmcgZnJlZVdoZW5Eb25lOk5PXSk7CiAgICAgfQogICAgIGF1dG8g
Y2hhcmFjdGVycyA9IHNwYW4xNigpOwogICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoQ2hhcmFjdGVyc05vQ29weTpyZWludGVycHJldF9jYXN0PHVuaWNoYXIqPihj
b25zdF9jYXN0PGNoYXIxNl90Kj4oY2hhcmFjdGVycy5kYXRhKCkpKSBsZW5ndGg6Y2hhcmFjdGVy
cy5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCmluZGV4IGIzZjU5OTA2ODkwNy4uMDMwMTJhMWI0YWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4x
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNw
cApAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotc3RhdGljIHN0ZDo6c3Bh
bjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGxhdGluMUNvbnRleHRTcGFuKFVUZXh0KiB1VGV4dCkK
K3N0YXRpYyBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGxhdGluMUNvbnRleHRTcGFuKFVUZXh0KiB1
VGV4dCkKIHsKLSAgICByZXR1cm4gdW5zYWZlTWFrZVNwYW4oc3RhdGljX2Nhc3Q8Y29uc3QgTGF0
aW4xQ2hhcmFjdGVyKj4odVRleHQtPmNvbnRleHQpLCB1VGV4dC0+YSk7CisgICAgcmV0dXJuIHVu
c2FmZU1ha2VTcGFuKHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odVRleHQtPmNvbnRleHQpLCB1
VGV4dC0+YSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnNwYW48Y2hhcjE2X3Q+IGNodW5rU3BhbihVVGV4
dCogdVRleHQpCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9z
ZShVVGV4dCogdVRleHQpCiAgICAgdVRleHQtPmNvbnRleHQgPSBudWxscHRyOwogfQogCi1VVGV4
dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIs
IHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHN0cmluZywgVUVycm9yQ29kZSogc3Rh
dHVzKQorVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRX
aXRoQnVmZmVyLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHN0cmluZywgVUVycm9yQ29kZSogc3Rh
dHVzKQogewogICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdh
cmVNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpCiAgICAgdGV4
dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwogICAgIHRleHQtPmNo
dW5rT2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKIFdURl9BTExPV19V
TlNBRkVfQlVGRkVSX1VTQUdFX0JFR0lOCi0gICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMo
Y2h1bmtTcGFuKHRleHQpLCB1bnNhZmVNYWtlU3BhbihzdGF0aWNfY2FzdDxjb25zdCBMYXRpbjFD
aGFyYWN0ZXIqPih0ZXh0LT5wKSArICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IC0gdGV4dC0+Yiks
IHRleHQtPmNodW5rTGVuZ3RoKSk7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJhY3RlcnMoY2h1
bmtTcGFuKHRleHQpLCB1bnNhZmVNYWtlU3BhbihzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRl
eHQtPnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgLSB0ZXh0LT5iKSwgdGV4dC0+Y2h1bmtM
ZW5ndGgpKTsKIFdURl9BTExPV19VTlNBRkVfQlVGRkVSX1VTQUdFX0VORAogfQogCkBAIC0zODks
NyArMzg5LDcgQEAgc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZShVVGV4
dCogdGV4dCkKICAgICB0ZXh0LT5jb250ZXh0ID0gbnVsbHB0cjsKIH0KIAotVVRleHQqIG9wZW5M
YXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVm
ZmVyLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzdHJpbmcsIHN0ZDo6c3Bhbjxj
b25zdCBjaGFyMTZfdD4gcHJpb3JDb250ZXh0LCBVRXJyb3JDb2RlKiBzdGF0dXMpCitVVGV4dCog
b3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdp
dGhCdWZmZXIsIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc3RyaW5nLCBzdGQ6OnNwYW48Y29uc3Qg
Y2hhcjE2X3Q+IHByaW9yQ29udGV4dCwgVUVycm9yQ29kZSogc3RhdHVzKQogewogICAgIGlmIChV
X0ZBSUxVUkUoKnN0YXR1cykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oCmluZGV4IGFlNGI5NTllZDA1My4u
MzBkMjFkODdjMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyTGF0aW4xLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHVu
aWNvZGUvdXRleHQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9MYXRpbjFDaGFyYWN0ZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMzgsNyAr
MzgsNyBAQCBzdHJ1Y3QgVVRleHRXaXRoQnVmZmVyIHsKICAgICBjaGFyMTZfdCBidWZmZXJbVVRl
eHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHldOwogfTsKIAotVVRleHQqIG9wZW5MYXRpbjFVVGV4
dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBzdGQ6OnNwYW48Y29uc3Qg
TGF0aW4xQ2hhcmFjdGVyPiBzdHJpbmcsIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci1XVEZfRVhQT1JU
X1BSSVZBVEUgVVRleHQqIG9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0
V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVy
PiBzdHJpbmcsIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gcHJpb3JDb250ZXh0LCBVRXJyb3JD
b2RlKiBzdGF0dXMpOworVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1
ZmZlciogdXRXaXRoQnVmZmVyLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHN0cmluZywgVUVycm9y
Q29kZSogc3RhdHVzKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVVGV4dCogb3BlbkxhdGluMUNvbnRl
eHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIHN0ZDo6
c3Bhbjxjb25zdCBMQ2hhcj4gc3RyaW5nLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+IHByaW9y
Q29udGV4dCwgVUVycm9yQ29kZSogc3RhdHVzKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwCmluZGV4IDEwNjhmNjdkODJlNC4u
YTg2YWVmZWNkMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL1VURjhDb252
ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmNw
cApAQCAtNDIsNyArNDIsNyBAQCBlbnVtIGNsYXNzIFJlcGxhY2VtZW50IDogYm9vbCB7IE5vbmUs
IFJlcGxhY2VJbnZhbGlkU2VxdWVuY2VzIH07CiB0ZW1wbGF0ZTxSZXBsYWNlbWVudCA9IFJlcGxh
Y2VtZW50OjpOb25lLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY2hhcjMyX3QgbmV4
dChzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4sIHNpemVfdCYgb2Zmc2V0KTsKIHRlbXBs
YXRlPFJlcGxhY2VtZW50ID0gUmVwbGFjZW1lbnQ6Ok5vbmUsIHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0YXRpYyBib29sIGFwcGVuZChzdGQ6OnNwYW48Q2hhcmFjdGVyVHlwZT4sIHNpemVfdCYg
b2Zmc2V0LCBjaGFyMzJfdCBjaGFyYWN0ZXIpOwogCi10ZW1wbGF0ZTw+IGNoYXIzMl90IG5leHQ8
UmVwbGFjZW1lbnQ6Ok5vbmUsIExhdGluMUNoYXJhY3Rlcj4oc3RkOjpzcGFuPGNvbnN0IExhdGlu
MUNoYXJhY3Rlcj4gY2hhcmFjdGVycywgc2l6ZV90JiBvZmZzZXQpCit0ZW1wbGF0ZTw+IGNoYXIz
Ml90IG5leHQ8UmVwbGFjZW1lbnQ6Ok5vbmUsIExDaGFyPihzdGQ6OnNwYW48Y29uc3QgTENoYXI+
IGNoYXJhY3RlcnMsIHNpemVfdCYgb2Zmc2V0KQogewogICAgIHJldHVybiBjaGFyYWN0ZXJzW29m
ZnNldCsrXTsKIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBDb252ZXJzaW9uUmVzdWx0PGNoYXIxNl90
PiBjb252ZXJ0KHN0ZDo6c3Bhbjxjb25zdCBjaGFyOF90PiBzb3VyY2UsIHN0ZDo6c3BhbjxjaAog
ICAgIHJldHVybiBjb252ZXJ0SW50ZXJuYWwoc291cmNlLCBidWZmZXIpOwogfQogCi1Db252ZXJz
aW9uUmVzdWx0PGNoYXI4X3Q+IGNvbnZlcnQoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rl
cj4gc291cmNlLCBzdGQ6OnNwYW48Y2hhcjhfdD4gYnVmZmVyKQorQ29udmVyc2lvblJlc3VsdDxj
aGFyOF90PiBjb252ZXJ0KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gc291cmNlLCBzdGQ6OnNwYW48
Y2hhcjhfdD4gYnVmZmVyKQogewogICAgIHJldHVybiBjb252ZXJ0SW50ZXJuYWwoc291cmNlLCBi
dWZmZXIpOwogfQpAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgZXF1YWwoc3RkOjpzcGFuPGNvbnN0
IGNoYXIxNl90PiBhLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4gYikKICAgICByZXR1cm4gZXF1
YWxJbnRlcm5hbChhLCBiKTsKIH0KIAotYm9vbCBlcXVhbChzdGQ6OnNwYW48Y29uc3QgTGF0aW4x
Q2hhcmFjdGVyPiBhLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4gYikKK2Jvb2wgZXF1YWwoc3Rk
OjpzcGFuPGNvbnN0IExDaGFyPiBhLCBzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4gYikKIHsKICAg
ICByZXR1cm4gZXF1YWxJbnRlcm5hbChhLCBiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvVVRG
OENvbnZlcnNpb24uaAppbmRleCBmNTA3YjZiOTcyMzYuLjAwN2I4ZmUzMjkyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi90ZXh0L0xhdGluMUNoYXJhY3Rlci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFVuaWNv
ZGUgewpAQCAtNDQsMTQgKzQ0LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0cnVjdCBDb252ZXJzaW9uUmVzdWx0IHsKIAogV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNp
b25SZXN1bHQ8Y2hhcjE2X3Q+IGNvbnZlcnQoc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+LCBzdGQ6
OnNwYW48Y2hhcjE2X3Q+KTsKIFdURl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0PGNo
YXI4X3Q+IGNvbnZlcnQoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Piwgc3RkOjpzcGFuPGNoYXI4
X3Q+KTsKLVdURl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0PGNoYXI4X3Q+IGNvbnZl
cnQoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4sIHN0ZDo6c3BhbjxjaGFyOF90Pik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgQ29udmVyc2lvblJlc3VsdDxjaGFyOF90PiBjb252ZXJ0KHN0
ZDo6c3Bhbjxjb25zdCBMQ2hhcj4sIHN0ZDo6c3BhbjxjaGFyOF90Pik7CiAKIC8vIEludmFsaWQg
c2VxdWVuY2VzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4KIFdU
Rl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0PGNoYXIxNl90PiBjb252ZXJ0UmVwbGFj
aW5nSW52YWxpZFNlcXVlbmNlcyhzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4sIHN0ZDo6c3Bhbjxj
aGFyMTZfdD4pOwogV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1bHQ8Y2hhcjhfdD4g
Y29udmVydFJlcGxhY2luZ0ludmFsaWRTZXF1ZW5jZXMoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90
Piwgc3RkOjpzcGFuPGNoYXI4X3Q+KTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwo
c3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Piwgc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+KTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0
ZXI+LCBzdGQ6OnNwYW48Y29uc3QgY2hhcjhfdD4pOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZXF1YWwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiwgc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+KTsK
IAogLy8gVGhlIGNoZWNrVVRGOCBmdW5jdGlvbiBjaGVja3MgdGhlIFVURi04IGFuZCByZXR1cm5z
IGEgc3BhbiBvZiB0aGUgdmFsaWQgY29tcGxldGUKIC8vIFVURi04IHNlcXVlbmNlcyBhdCB0aGUg
c3RhcnQgb2YgdGhlIHBhc3NlZC1pbiBjaGFyYWN0ZXJzLCBhbG9uZyB3aXRoIHRoZSBVVEYtMTYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAppbmRleCBhOTEzYzlk
MTgzM2UuLjc5NzA5YzY1NDc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9p
Y3UvQ29sbGF0b3JJQ1UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0NvbGxh
dG9ySUNVLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBVQ2hhcjMyIGN1cnJlbnRMYXRp
bjEoVUNoYXJJdGVyYXRvciogaXRlcmF0b3IpCiAgICAgQVNTRVJUKGl0ZXJhdG9yLT5pbmRleCA+
PSBpdGVyYXRvci0+c3RhcnQpOwogICAgIGlmIChpdGVyYXRvci0+aW5kZXggPj0gaXRlcmF0b3It
PmxpbWl0KQogICAgICAgICByZXR1cm4gVV9TRU5USU5FTDsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgTGF0aW4xQ2hhcmFjdGVyKj4oaXRlcmF0b3ItPmNvbnRleHQpW2l0ZXJhdG9yLT5p
bmRleF07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4oaXRlcmF0b3ItPmNv
bnRleHQpW2l0ZXJhdG9yLT5pbmRleF07CiB9CiAKIHN0YXRpYyBVQ2hhcjMyIG5leHRMYXRpbjEo
VUNoYXJJdGVyYXRvciogaXRlcmF0b3IpCkBAIC0xOTgsMTQgKzE5OCwxNCBAQCBzdGF0aWMgVUNo
YXIzMiBuZXh0TGF0aW4xKFVDaGFySXRlcmF0b3IqIGl0ZXJhdG9yKQogICAgIEFTU0VSVChpdGVy
YXRvci0+aW5kZXggPj0gaXRlcmF0b3ItPnN0YXJ0KTsKICAgICBpZiAoaXRlcmF0b3ItPmluZGV4
ID49IGl0ZXJhdG9yLT5saW1pdCkKICAgICAgICAgcmV0dXJuIFVfU0VOVElORUw7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IExhdGluMUNoYXJhY3Rlcio+KGl0ZXJhdG9yLT5jb250ZXh0
KVtpdGVyYXRvci0+aW5kZXgrK107CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IExDaGFy
Kj4oaXRlcmF0b3ItPmNvbnRleHQpW2l0ZXJhdG9yLT5pbmRleCsrXTsKIH0KIAogc3RhdGljIFVD
aGFyMzIgcHJldmlvdXNMYXRpbjEoVUNoYXJJdGVyYXRvciogaXRlcmF0b3IpCiB7CiAgICAgaWYg
KGl0ZXJhdG9yLT5pbmRleCA8PSBpdGVyYXRvci0+c3RhcnQpCiAgICAgICAgIHJldHVybiBVX1NF
TlRJTkVMOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBMYXRpbjFDaGFyYWN0ZXIqPihp
dGVyYXRvci0+Y29udGV4dClbLS1pdGVyYXRvci0+aW5kZXhdOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBMQ2hhcio+KGl0ZXJhdG9yLT5jb250ZXh0KVstLWl0ZXJhdG9yLT5pbmRleF07
CiB9CiBXVEZfQUxMT1dfVU5TQUZFX0JVRkZFUl9VU0FHRV9FTkQKIApAQCAtMjE5LDcgKzIxOSw3
IEBAIHN0YXRpYyB2b2lkIHNldFN0YXRlTGF0aW4xKFVDaGFySXRlcmF0b3IqIGl0ZXJhdG9yLCB1
aW50MzJfdCBzdGF0ZSwgVUVycm9yQ29kZSopCiAgICAgaXRlcmF0b3ItPmluZGV4ID0gc3RhdGU7
CiB9CiAKLXN0YXRpYyBVQ2hhckl0ZXJhdG9yIGNyZWF0ZUxhdGluMUl0ZXJhdG9yKHN0ZDo6c3Bh
bjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMpCitzdGF0aWMgVUNoYXJJdGVyYXRv
ciBjcmVhdGVMYXRpbjFJdGVyYXRvcihzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMp
CiB7CiAgICAgVUNoYXJJdGVyYXRvciBpdGVyYXRvcjsKICAgICBpdGVyYXRvci5jb250ZXh0ID0g
Y2hhcmFjdGVycy5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCBhOWE2ZjA1Y2M1ODguLjFiNDIzMzg2Njk3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yNSw5ICsy
NSw3IEBAICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvYnVpbHRpbnNfZ2Vu
ZXJhdGVfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5wCiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRvci5weQogJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9idWlsdGluc19tb2RlbC5weQogJChKQVZBU0NSSVBUQ09SRV9QUklW
QVRFX0hFQURFUlNfRElSKS9idWlsdGluc190ZW1wbGF0ZXMucHkKLSQoSkFWQVNDUklQVENPUkVf
UFJJVkFURV9IRUFERVJTX0RJUikvY3NzbWluLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ci0kKEpBVkFTQ1JJUFRDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL2pzbWluLnB5CiAkKEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVIpL2xhenl3cml0ZXIucHkKICQoSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvbWFrZS1qcy1maWxlLWFycmF5cy5weQogJChKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSKS93a2J1aWx0aW5zLnB5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCA0M2QxNmM4ZmVjNGMuLjU4NjZiNjc5NDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yMDQzLDcgKzIwNDMsNyBAQCBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmgg
OiAkKFdlYkNvcmUpL2RvbWppdC9nZW5lcmF0ZS1hYnN0cmFjdC1oZWFwLnJiICQoVwogCiBhbGwg
OiBYTUxWaWV3ZXJDU1MuaAogCi1YTUxWaWV3ZXJDU1MuaCA6ICQoV2ViQ29yZSkveG1sL1hNTFZp
ZXdlci5jc3MgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvY3NzbWluLnB5ICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbAorWE1MVmlld2VyQ1NTLmggOiAkKFdlYkNvcmUp
L3htbC9YTUxWaWV3ZXIuY3NzCiAJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2Nzc21pbi5weSA8ICIkKFdlYkNvcmUpL3htbC9YTUxWaWV3ZXIuY3NzIiA+IFhNTFZpZXdl
ci5taW4uY3NzCiAJJChQRVJMKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS94eGQucGwg
WE1MVmlld2VyX2NzcyBYTUxWaWV3ZXIubWluLmNzcyBYTUxWaWV3ZXJDU1MuaAogCSQoREVMRVRF
KSBYTUxWaWV3ZXIubWluLmNzcwpAQCAtMjA1NCw3ICsyMDU0LDcgQEAgWE1MVmlld2VyQ1NTLmgg
OiAkKFdlYkNvcmUpL3htbC9YTUxWaWV3ZXIuY3NzICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2Nzc20KIAogYWxsIDogWE1MVmlld2VySlMuaAogCi1YTUxWaWV3ZXJKUy5oIDogJChXZWJD
b3JlKS94bWwvWE1MVmlld2VyLmpzICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2pzbWlu
LnB5ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL3h4ZC5wbAorWE1MVmlld2VySlMuaCA6
ICQoV2ViQ29yZSkveG1sL1hNTFZpZXdlci5qcwogCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9qc21pbi5weSA8ICIkKFdlYkNvcmUpL3htbC9YTUxWaWV3ZXIuanMiID4g
WE1MVmlld2VyLm1pbi5qcwogCSQoUEVSTCkgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
eHhkLnBsIFhNTFZpZXdlcl9qcyBYTUxWaWV3ZXIubWluLmpzIFhNTFZpZXdlckpTLmgKIAkkKERF
TEVURSkgWE1MVmlld2VyLm1pbi5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggZTg0N2FkNGU1
YmNjLi5hNjAwMGNmNDI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNjksOSArNjksOSBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9l
bmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1h
dAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLnNwYW4oKSB9OwogCi0gICAgLy8gRklYTUU6IFNwZWNpZmljYXRpb24gc2F5cyB0aGlz
IHNob3VsZCBiZSBwYXJzZWQgYXMgVVRGLTgsIG5vdCBMYXRpbi0xLgotICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oYnVmZmVy
LnNwYW4oKSkpOworICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24p
OwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcAppbmRleCA2MWFjZDc1MWFjOTUuLjE2MmYyMGE1NzhjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpoYW5kbGVMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmIGNoYW5uZWws
IFdURkxvCiAKICAgICAvLyBDaGVjayBpZiB0aGUgdGhpcmQgbWVzc2FnZSBpcyBhIG11bHRpLWxp
bmVzIHN0cmluZywgY29uY2F0ZW5hdGluZyBzdWNoIG1lc3NhZ2Ugd291bGQgbG9vayB1Z2x5IGlu
IGxvZyBldmVudHMuCiAgICAgaWYgKHZhbHVlcy5zaXplKCkgPj0gMyAmJiB2YWx1ZXNbMl0udmFs
dWUuZmluZCgiXHJcbiJfcykgIT0gbm90Rm91bmQpCi0gICAgICAgIGV2ZW50ID0gZ2VuZXJhdGVK
U09OTG9nRXZlbnQoTWVzc2FnZUxvZ0V2ZW50IHsgdmFsdWVzWzFdLnZhbHVlLCB7IGJ5dGVDYXN0
PHVpbnQ4X3Q+KHZhbHVlc1syXS52YWx1ZS5zcGFuOCgpKSB9IH0sIGZhbHNlKTsKKyAgICAgICAg
ZXZlbnQgPSBnZW5lcmF0ZUpTT05Mb2dFdmVudChNZXNzYWdlTG9nRXZlbnQgeyB2YWx1ZXNbMV0u
dmFsdWUsIHsgdmFsdWVzWzJdLnZhbHVlLnNwYW44KCkgfSB9LCBmYWxzZSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiB2YWx1
ZSA6IHZhbHVlcy5zdWJ2ZWN0b3IoMSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29h
LmNwcAppbmRleCBlODIxYjAxNjI3YmYuLjJhMDg4ZjcxZGU2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyQ29jb2EuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKIHsKLSAg
ICByZXR1cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LnN1YnNwYW4oMCwgMTYpLCBieXRl
Q2FzdDx1aW50OF90PigiU0ZyYW1lMTAiX3NwYW44KSwgYnl0ZUNhc3Q8dWludDhfdD4oInNhbHQi
X3NwYW44KSwgOTYpOworICAgIHJldHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXkuc3Vi
c3BhbigwLCAxNiksICJTRnJhbWUxMCJfc3BhbjgsICJzYWx0Il9zcGFuOCwgOTYpOwogfQogCiBz
dGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBjcmVhdGVCYXNlU0ZyYW1lS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQogewotICAgIHJldHVybiBkZXJpdmVIREtGU0hB
MjU2Qml0cyhyYXdLZXkuc3Vic3BhbigwLCAxNiksIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJTRnJhbWUx
MCJfc3BhbjgpLCBieXRlQ2FzdDx1aW50OF90Pigia2V5Il9zcGFuOCksIDEyOCk7CisgICAgcmV0
dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKHJhd0tleS5zdWJzcGFuKDAsIDE2KSwgIlNGcmFtZTEw
Il9zcGFuOCwgImtleSJfc3BhbjgsIDEyOCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKQEAgLTUxLDcgKzUxLDcgQEAgRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUF1dGhl
bnRpY2F0aW9uS2V5KGMKICAgICBpZiAoa2V5Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ga2V5OwogCi0gICAgcmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKGtleS5yZXR1cm5WYWx1
ZSgpLnN1YnNwYW4oMCwgMTYpLCBieXRlQ2FzdDx1aW50OF90PigiU0ZyYW1lMTAgQUVTIENNIEFF
QUQiX3NwYW44KSwgYnl0ZUNhc3Q8dWludDhfdD4oImF1dGgiX3NwYW44KSwgMjU2KTsKKyAgICBy
ZXR1cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMoa2V5LnJldHVyblZhbHVlKCkuc3Vic3BhbigwLCAx
NiksICJTRnJhbWUxMCBBRVMgQ00gQUVBRCJfc3BhbjgsICJhdXRoIl9zcGFuOCwgMjU2KTsKIH0K
IAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCkBAIC02
MCw3ICs2MCw3IEBAIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0aW9uS2V5KGNvbnN0CiAgICAgaWYgKGtleS5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIGtleTsKIAotICAgIHJldHVybiBkZXJpdmVIREtGU0hB
MjU2Qml0cyhrZXkucmV0dXJuVmFsdWUoKS5zdWJzcGFuKDAsIDE2KSwgYnl0ZUNhc3Q8dWludDhf
dD4oIlNGcmFtZTEwIEFFUyBDTSBBRUFEIl9zcGFuOCksIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJlbmMi
X3NwYW44KSwgMTI4KTsKKyAgICByZXR1cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMoa2V5LnJldHVy
blZhbHVlKCkuc3Vic3BhbigwLCAxNiksICJTRnJhbWUxMCBBRVMgQ00gQUVBRCJfc3BhbjgsICJl
bmMiX3NwYW44LCAxMjgpOwogfQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RGF0YShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4g
ZGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJEdGxzVHJhbnNwb3J0QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJEdGxzVHJhbnNwb3J0QmFja2Vu
ZC5jcHAKaW5kZXggYmY4NDMwMzYyOThmLi4yNTQyNDhjMjQ5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckR0bHNUcmFu
c3BvcnRCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJEdGxzVHJhbnNwb3J0QmFja2VuZC5jcHAKQEAgLTgyLDEwICs4
MiwxMiBAQCB2b2lkIEdTdHJlYW1lckR0bHNUcmFuc3BvcnRCYWNrZW5kT2JzZXJ2ZXI6OnN0YXRl
Q2hhbmdlZCgpCiAgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IHJlbW90ZUNlcnRpZmlj
YXRlOwogICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBjZXJ0aWZpY2F0ZTsKICAgICAg
ICAgICAgIGdfb2JqZWN0X2dldChtX2JhY2tlbmQuZ2V0KCksICJyZW1vdGUtY2VydGlmaWNhdGUi
LCAmcmVtb3RlQ2VydGlmaWNhdGUub3V0UHRyKCksICJjZXJ0aWZpY2F0ZSIsICZjZXJ0aWZpY2F0
ZS5vdXRQdHIoKSwgbnVsbHB0cik7CisKICAgICAgICAgICAgIGlmIChyZW1vdGVDZXJ0aWZpY2F0
ZSkKLSAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMuYXBwZW5kKEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZShieXRlQ2FzdDx1aW50OF90Pih1bnNhZmVTcGFuKHJlbW90ZUNlcnRpZmljYXRlLmdl
dCgpKSkpKTsKKyAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZXMuYXBwZW5kKEpTQzo6QXJyYXlC
dWZmZXI6OmNyZWF0ZSh1bnNhZmVTcGFuOChyZW1vdGVDZXJ0aWZpY2F0ZS5nZXQoKSkpKTsKKwog
ICAgICAgICAgICAgaWYgKGNlcnRpZmljYXRlKQotICAgICAgICAgICAgICAgIGNlcnRpZmljYXRl
cy5hcHBlbmQoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ5dGVDYXN0PHVpbnQ4X3Q+KHVuc2Fm
ZVNwYW4oY2VydGlmaWNhdGUuZ2V0KCkpKSkpOworICAgICAgICAgICAgICAgIGNlcnRpZmljYXRl
cy5hcHBlbmQoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVuc2FmZVNwYW44KGNlcnRpZmljYXRl
LmdldCgpKSkpOwogICAgICAgICB9CiAgICAgICAgIG1fY2xpZW50LT5vblN0YXRlQ2hhbmdlZCh0
b1JUQ0R0bHNUcmFuc3BvcnRTdGF0ZShzdGF0ZSksIFdURk1vdmUoY2VydGlmaWNhdGVzKSk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hN
ZXNzYWdlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaE1l
c3NhZ2VDcnlwdG8uY3BwCmluZGV4IDJmNTAxNjY0Yzk4NS4uM2I5Y2Q2NzNkM2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hNZXNzYWdlQ3J5cHRv
LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBk
ZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRLCiAgICAgICog
Q0VLID0gSE1BQy1TSEEtMjU2KFBSSywgY2VrX2luZm8gfHwgMHgwMSlbMC4uMTVdCiAgICAgICov
CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gY2VrSW5mbyA9ICJDb250ZW50LUVuY29kaW5nOiBhZXMx
MjhnY21ceDAwXHgwMSJfc3Bhbjg7Ci0gICAgYXV0byBjZWsgPSBobWFjU0hBMjU2KHByaywgYnl0
ZUNhc3Q8dWludDhfdD4oY2VrSW5mbykpOworICAgIGF1dG8gY2VrID0gaG1hY1NIQTI1Nihwcmss
IGNla0luZm8pOwogICAgIGNlay5zaHJpbmsoMTYpOwogCiAgICAgLyoKQEAgLTE2MSw3ICsxNjEs
NyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEFFUzEyOEdDTVBheWxv
YWQoY29uc3QgQ2xpZW50S2V5cyYgY2xpZW50SwogICAgICAqIE5PTkNFID0gSE1BQy1TSEEtMjU2
KFBSSywgbm9uY2VfaW5mbyB8fCAweDAxKVswLi4xMV0KICAgICAgKi8KICAgICBzdGF0aWMgY29u
c3QgYXV0byBub25jZUluZm8gPSAiQ29udGVudC1FbmNvZGluZzogbm9uY2VceDAwXHgwMSJfc3Bh
bjg7Ci0gICAgYXV0byBub25jZSA9IGhtYWNTSEEyNTYocHJrLCBieXRlQ2FzdDx1aW50OF90Pihu
b25jZUluZm8pKTsKKyAgICBhdXRvIG5vbmNlID0gaG1hY1NIQTI1NihwcmssIG5vbmNlSW5mbyk7
CiAgICAgbm9uY2Uuc2hyaW5rKDEyKTsKIAogICAgIC8vIEZpbmFsbHksIGRlY3J5cHQgd2l0aCBB
RVMxMjhHQ00gYW5kIHJldHVybiB0aGUgdW5wYWRkZWQgcGxhaW50ZXh0LgpAQCAtMjM4LDcgKzIz
OCw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0QUVTR0NNUGF5bG9h
ZChjb25zdCBDbGllbnRLZXlzJiBjbGllbnRLZXlzCiAgICAgICovCiAgICAgc3RhdGljIGNvbnN0
IGF1dG8gYXV0aEluZm8gPSAiQ29udGVudC1FbmNvZGluZzogYXV0aFx4MDBceDAxIl9zcGFuODsK
ICAgICBhdXRvIHBya0NvbWJpbmUgPSBobWFjU0hBMjU2KGNsaWVudEtleXMuc2hhcmVkQXV0aFNl
Y3JldCwgKmVjZGhTZWNyZXRSZXN1bHQpOwotICAgIGF1dG8gaWttID0gaG1hY1NIQTI1NihwcmtD
b21iaW5lLCBieXRlQ2FzdDx1aW50OF90PihhdXRoSW5mbykpOworICAgIGF1dG8gaWttID0gaG1h
Y1NIQTI1NihwcmtDb21iaW5lLCBhdXRoSW5mbyk7CiAgICAgYXV0byBwcmsgPSBobWFjU0hBMjU2
KHNhbHQsIGlrbSk7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy91cmwtcGF0dGVybi9VUkxQYXR0ZXJuUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdXJsLXBhdHRlcm4vVVJMUGF0dGVyblBhcnNlci5jcHAKaW5kZXggY2RhMTgxNTg4NmI2Li4y
MTM1MjhmOTdkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdXJsLXBhdHRl
cm4vVVJMUGF0dGVyblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy91cmwt
cGF0dGVybi9VUkxQYXR0ZXJuUGFyc2VyLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFN0cmluZyBn
ZW5lcmF0ZVNlZ21lbnRXaWxkY2FyZFJlZ2V4cChjb25zdCBVUkxQYXR0ZXJuU3RyaW5nT3B0aW9u
cyYgb3B0aW9ucykKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgU3Ry
aW5nIGVzY2FwZVJlZ2V4U3RyaW5nRm9yQ2hhcmFjdGVycyhzdGQ6OnNwYW48Y29uc3QgQ2hhcmFj
dGVyVHlwZT4gY2hhcmFjdGVycykKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVnZXhF
c2NhcGVDaGFyYWN0ZXJzID0gc3RkOjp0b19hcnJheTxjb25zdCBDaGFyYWN0ZXJUeXBlPih7ICcu
JywgJysnLCAnKicsICc/JywgJ14nLCAnJCcsICd7JywgJ30nLCAnKCcsICcpJywgJ1snLCAnXScs
ICd8JywgJy8nLCAnXFwnIH0pOyAvLyBOT0xJTlQKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
YXJyYXkgcmVnZXhFc2NhcGVDaGFyYWN0ZXJzIHsgJy4nLCAnKycsICcqJywgJz8nLCAnXicsICck
JywgJ3snLCAnfScsICcoJywgJyknLCAnWycsICddJywgJ3wnLCAnLycsICdcXCcgfTsgLy8gTk9M
SU5UCiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUNhcGFj
aXR5KGNoYXJhY3RlcnMuc2l6ZSgpKTsKQEAgLTUwOCw3ICs1MDgsNyBAQCBTdHJpbmcgZ2VuZXJh
dGVQYXR0ZXJuU3RyaW5nKGNvbnN0IFZlY3RvcjxQYXJ0PiYgcGFydExpc3QsIGNvbnN0IFVSTFBh
dHRlcm5TdHJpbgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBTdHJp
bmcgZXNjYXBlUGF0dGVyblN0cmluZ0ZvckNoYXJhY3RlcnMoc3RkOjpzcGFuPGNvbnN0IENoYXJh
Y3RlclR5cGU+IGNoYXJhY3RlcnMpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGVzY2Fw
ZUNoYXJhY3RlcnMgPSBzdGQ6OnRvX2FycmF5PGNvbnN0IENoYXJhY3RlclR5cGU+KHsgJysnLCAn
KicsICc/JywgJzonLCAnKCcsICcpJywgJ1xcJywgJ3snLCAnfScgfSk7IC8vIE5PTElOVAorICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBlc2NhcGVDaGFyYWN0ZXJzIHsgJysnLCAnKics
ICc/JywgJzonLCAnKCcsICcpJywgJ1xcJywgJ3snLCAnfScgfTsgLy8gTk9MSU5UCiAKICAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGNoYXJhY3Rl
cnMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAppbmRleCBhYTQw
NDVhZGY0YzAuLjNiZmYyMzAyZDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcApAQCAtOTUsNyArOTUsOCBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6
OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogICAgIH0KIAog
ICAgIGNvbnN0IENTdHJpbmcgaGVhZGVyVmFsdWVEYXRhID0gaGVhZGVyVmFsdWUudXRmOCgpOwot
ICAgIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlciBwYXJzZXIoYnl0ZUNhc3Q8Y2hhcjhfdD4oaGVh
ZGVyVmFsdWVEYXRhLnNwYW4oKSkpOworICAgIC8vIEZJWE1FOiBJcyBVVEYtOCB0aGUgZW5jb2Rp
bmcgdGhhdCBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIgZXhwZWN0cz8gSXQgZG9lc24ndCBzcGVj
aWZ5LgorICAgIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlciBwYXJzZXIoYnl0ZUNhc3Q8dWludDhf
dD4oaGVhZGVyVmFsdWVEYXRhLnNwYW4oKSkpOwogICAgIHdoaWxlICghcGFyc2VyLmZpbmlzaGVk
KCkpIHsKICAgICAgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuOwogICAgICAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBleHRlbnNpb25QYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2Vy
LmNwcAppbmRleCA3NmUzOTQ5MWQ3MGIuLmMxODVmZGFkMzZhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIGJvb2wgaXNTZXBhcmF0b3IoY2hh
ciBjaGFyYWN0ZXIpCiAgICAgcmV0dXJuIFdURjo6Y29udGFpbnMoc2VwYXJhdG9yQ2hhcmFjdGVy
cywgY2hhcmFjdGVyKTsKIH0KIAotc3RhdGljIGJvb2wgaXNTcGFjZU9yVGFiKGNoYXI4X3QgY2hh
cmFjdGVyKQorc3RhdGljIGJvb2wgaXNTcGFjZU9yVGFiKExDaGFyIGNoYXJhY3RlcikKIHsKICAg
ICByZXR1cm4gY2hhcmFjdGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25QYXJzZXIuaAppbmRleCBmYWQ1MTk1ZTQ2MzMuLjQwMGVkZGZhZTQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25QYXJzZXIuaApAQCAtMzgsMTMgKzM4LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyIHsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIoc3RkOjpzcGFuPGNvbnN0IGNoYXI4X3Q+IGRh
dGEpCisgICAgLy8gRklYTUU6IFdoYXQgY2hhcmFjdGVyIGVuY29kaW5nIGFyZSB3ZSBwYXJzaW5n
PyBTcGVjaWZ5IExDaGFyLCBjaGFyOF90LCBjaGFyMTZfdCwgb3Igc29tZXRoaW5nIGVsc2UgaGVy
ZS4KKyAgICBleHBsaWNpdCBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIoc3RkOjpzcGFuPGNvbnN0
IHVpbnQ4X3Q+IGRhdGEpCiAgICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgewogICAgIH0KICAg
ICBib29sIGZpbmlzaGVkKCk7CiAgICAgYm9vbCBwYXJzZWRTdWNjZXNzZnVsbHkoKTsKIAorICAg
IC8vIEZJWE1FOiBXaGF0IGNoYXJhY3RlciBlbmNvZGluZyBhcmUgd2UgcGFyc2luZz8gU3BlY2lm
eSBMQ2hhciwgY2hhcjhfdCwgY2hhcjE2X3QsIG9yIHNvbWV0aGluZyBlbHNlIGhlcmUuCiAgICAg
Ym9vbCBwYXJzZUV4dGVuc2lvbihTdHJpbmcmIGV4dGVuc2lvblRva2VuLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYgcGFyYW1ldGVycyk7CiAKIHByaXZhdGU6CkBAIC01OSw3ICs2MSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNraXBTcGFjZXMoKTsKIAotICAgIHN0ZDo6c3Bhbjxjb25zdCBj
aGFyOF90PiBtX2RhdGE7CisgICAgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IG1fZGF0YTsKICAg
ICBTdHJpbmcgbV9jdXJyZW50VG9rZW47CiAgICAgYm9vbCBtX2RpZEZhaWxQYXJzaW5nIHsgZmFs
c2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDk3NmUyOTdiYjhmNi4uODg4MzE3Y2Y1NThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODgsMTAgKzg4LDkgQEAgc3RhdGljIFN0cmluZyBob3N0
TmFtZShjb25zdCBVUkwmIHVybCwgYm9vbCBzZWN1cmUpCiBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7CiBzdGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBs
ZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gaW5wdXQpCiB7Ci0gICAgLy8gRklYTUU6IFVuY2xl
YXIgd2h5IHRoaXMgaXMgTGF0aW4tMSBhbmQgbm90IFVURi04LgogICAgIGlmIChpbnB1dC5zaXpl
KCkgPD0gbWF4SW5wdXRTYW1wbGVTaXplKQotICAgICAgICByZXR1cm4gYnl0ZUNhc3Q8TGF0aW4x
Q2hhcmFjdGVyPihpbnB1dCk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoYnl0ZUNhc3Q8TGF0aW4x
Q2hhcmFjdGVyPihpbnB1dC5maXJzdChtYXhJbnB1dFNhbXBsZVNpemUpKSwgaG9yaXpvbnRhbEVs
bGlwc2lzKTsKKyAgICAgICAgcmV0dXJuIGlucHV0OworICAgIHJldHVybiBtYWtlU3RyaW5nKGlu
cHV0LmZpcnN0KG1heElucHV0U2FtcGxlU2l6ZSksIGhvcml6b250YWxFbGxpcHNpcyk7CiB9CiAK
IHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQpAQCAtNDE0LDI0ICs0MTMs
MjQgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IGhlYWRlciwgaW50JiBzdGEKICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7
CiAgICAgfQogCi0gICAgU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZShieXRlQ2FzdDxMYXRpbjFD
aGFyYWN0ZXI+KGhlYWRlci5maXJzdCgqZmlyc3RTcGFjZUluZGV4KSkpOworICAgIFN0cmluZ1Zp
ZXcgaHR0cFN0YXR1c0xpbmUoaGVhZGVyLmZpcnN0KCpmaXJzdFNwYWNlSW5kZXgpKTsKICAgICBp
ZiAoIWhlYWRlckhhc1ZhbGlkSFRUUFZlcnNpb24oaHR0cFN0YXR1c0xpbmUpKSB7CiAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcoIkludmFsaWQgSFRUUCB2ZXJzaW9uIHN0cmlu
ZzogIl9zLCBodHRwU3RhdHVzTGluZSk7CiAgICAgICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAg
IH0KIAotICAgIGF1dG8gc3RhdHVzQ29kZVN0cmluZyA9IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rl
cj4oaGVhZGVyLnN1YnNwYW4oKmZpcnN0U3BhY2VJbmRleCArIDEsICpzZWNvbmRTcGFjZUluZGV4
IC0gKmZpcnN0U3BhY2VJbmRleCAtIDEpKTsKLSAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5zaXpl
KCkgIT0gMykgLy8gU3RhdHVzIGNvZGUgbXVzdCBjb25zaXN0IG9mIHRocmVlIGRpZ2l0cy4KKyAg
ICBTdHJpbmdWaWV3IHN0YXR1c0NvZGVTdHJpbmcoaGVhZGVyLnN1YnNwYW4oKmZpcnN0U3BhY2VJ
bmRleCArIDEsICpzZWNvbmRTcGFjZUluZGV4IC0gKmZpcnN0U3BhY2VJbmRleCAtIDEpKTsKKyAg
ICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0
IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgogICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKLSAg
ICBmb3IgKGF1dG8gZGlnaXQgOiBzdGF0dXNDb2RlU3RyaW5nKSB7Ci0gICAgICAgIGlmICghaXNB
U0NJSURpZ2l0KGRpZ2l0KSkgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7Cisg
ICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHN0YXR1c0NvZGVTdHJpbmdbaV0pKSB7CiAgICAgICAg
ICAgICBtX2ZhaWx1cmVSZWFzb24gPSBtYWtlU3RyaW5nKCJJbnZhbGlkIHN0YXR1cyBjb2RlOiAi
X3MsIHN0YXR1c0NvZGVTdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0dXNDb2RlID0gcGFyc2VJbnRlZ2VyPGludD4oc3Rh
dHVzQ29kZVN0cmluZykudmFsdWUoKTsKLSAgICBzdGF0dXNUZXh0ID0gU3RyaW5nKGJ5dGVDYXN0
PExhdGluMUNoYXJhY3Rlcj4oaGVhZGVyLnN1YnNwYW4oKnNlY29uZFNwYWNlSW5kZXggKyAxLCBp
bmRleCAtICpzZWNvbmRTcGFjZUluZGV4IC0gMykpKTsgLy8gRXhjbHVkZSAiXHJcbiIuCisgICAg
c3RhdHVzVGV4dCA9IFN0cmluZyhoZWFkZXIuc3Vic3Bhbigqc2Vjb25kU3BhY2VJbmRleCArIDEs
IGluZGV4IC0gKnNlY29uZFNwYWNlSW5kZXggLSAzKSk7IC8vIEV4Y2x1ZGUgIlxyXG4iLgogICAg
IHJldHVybiBsaW5lTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTBhZjEwNGI2MTRhLi5iYjE4NjFjZmYwNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE2LDYgKzE2LDcgQEAKIAkJMDc5RDFEOTgyNjk1MERENzAwODgzNTc3IC8qIFN5c3Rl
bVN0YXR1c1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc5RDFEOTYyNjk1MERENzAwODgzNTc3IC8qIFN5c3RlbVN0YXR1c1NvZnRMaW5r
Lm1tICovOyB9OwogCQkwQ0Y5OUNBNDFGNzM2Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBDMDBDRkQxMUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICov
OyB9OwogCQkwQ0Y5OUNBODFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1lZGlhU29mdExpbmsuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMENGOTlDQTYx
RjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJMUMwMjJF
RkUyMkNGRThFMTAwNkRGMDFCIC8qIEd1bnppcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAyMkVGQzIyQ0ZFOEUwMDA2REYwMUIgLyogR3Vuemlw
LmNwcCAqLzsgfTsKIAkJMUMwOUQwNTYxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENv
bW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzA5RDA1NTFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRv
LmNwcCAqLzsgfTsKIAkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0ODc2RDYxRjhE
N0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwICovOyB9OwogCQkxQzVDNTdDOTI3NTcxNTMxMDAz
QjU0MEQgLyogVGV4dENvZGVjSUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDNUM1N0JEMjc1NzE1MjQwMDNCNTQwRCAvKiBUZXh0Q29kZWNJQ1Uu
Y3BwICovOyB9OwpAQCAtMjg2LDYgKzI4Nyw3IEBACiAJCUREMjBERTVEMjdCQzkwRDgwMDkzRDE3
NSAvKiBVbmVuY29kYWJsZUhhbmRsaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0U1OTA5QzFGOTNCRjFFMDA2N0Y4Q0YgLyogVW5lbmNvZGFibGVI
YW5kbGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUREMjBERTVFMjdCQzkwRDgwMDkzRDE3NSAvKiBFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkQ5RTcyMUVFRjVBRjYwMERC
QzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlERDIwREU1RjI3QkM5MEQ4MDA5M0QxNzUgLyogRmlsZVNpemVGb3Jt
YXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUREMjBERTYwMjdCQzkwRDgw
MDkzRDE3NSAvKiBHdW56aXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDMDIyRUZEMjJDRkU4RTEwMDZERjAxQiAvKiBHdW56aXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERDIwREU2MTI3QkM5MEQ4
MDA5M0QxNzUgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzlERTc0RDFGN0M0NDNDMDA3QkNCMDAgLyogSHlzdGVy
ZXNpc0FjdGl2aXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJREQyMERFNjIyN0JDOTBEODAwOTNEMTc1IC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNDg3NkQ3MUY4RDdGNEUwMEND
RUVCRCAvKiBMb2dnaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJREQyMERFNjMyN0JDOTBEODAwOTNEMTc1IC8qIFNlc3Npb25JRC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNDNjZDREIxRjQ2MkQ2
QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC01MzEsNiArNTMzLDggQEAKIAkJMEM3Nzg1ODgxRjQ1MTMwRjAw
RjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZWxlcGhvbnlVdGlsaXRpZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMENGOTlDQTYxRjczODQzNjAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcmVNZWRpYVNvZnRMaW5r
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMENGOTlDQTcxRjczODQzNzAwN0VF
NzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvcmVNZWRpYVNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
MDIyRUZDMjJDRkU4RTAwMDZERjAxQiAvKiBHdW56aXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R3VuemlwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwMjJFRkQyMkNGRThF
MTAwNkRGMDFCIC8qIEd1bnppcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHdW56aXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4IC8qIGxpYlBBTC5h
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZl
LmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMwOUQwNTIxRTMxQzQ0MTAwNzI1RjE4IC8qIENyeXB0
b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOUQwNTUxRTMxQzQ2NTAwNzI1RjE4
IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA1NCw2ICsxMDU4LDcgQEAKIAkJCQkwQzJEOUU3MjFFRUY1QUY2
MDBEQkMzMTcgLyogRXhwb3J0TWFjcm9zLmggKi8sCiAJCQkJRjQ0MjkxNjIxRkE1MjY3MDAwMkND
OTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCAqLywKIAkJCQlGNDQyOTE1RjFGQTUyNjFFMDAy
Q0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCAqLywKKwkJCQkxQzAyMkVGRDIyQ0ZFOEUxMDA2
REYwMUIgLyogR3VuemlwLmggKi8sCiAJCQkJQTM5REU3NEQxRjdDNDQzQzAwN0JDQjAwIC8qIEh5
c3RlcmVzaXNBY3Rpdml0eS5oICovLAogCQkJCTFDNDg3NkQ2MUY4RDdGNEUwMENDRUVCRCAvKiBM
b2dnaW5nLmNwcCAqLywKIAkJCQkxQzQ4NzZENzFGOEQ3RjRFMDBDQ0VFQkQgLyogTG9nZ2luZy5o
ICovLApAQCAtMTEyOCw2ICsxMTMzLDcgQEAKIAkJCQlGNERERDAxQTI2NERDNjlFMDBFRjFCOTEg
LyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovLAogCQkJCUY0REREMDE5MjY0REM2OUUw
MEVGMUI5MSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovLAogCQkJCUY0NDI5MTY2
MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovLAorCQkJCTFD
MDIyRUZDMjJDRkU4RTAwMDZERjAxQiAvKiBHdW56aXAuY3BwICovLAogCQkJCUY0NzQ3MUVDMkFD
QTE3QUYwMEUwRDRBQiAvKiBMaW5rUHJlc2VudGF0aW9uU29mdExpbmsuaCAqLywKIAkJCQlGNDc0
NzFFRDJBQ0ExN0FGMDBFMEQ0QUIgLyogTGlua1ByZXNlbnRhdGlvblNvZnRMaW5rLm1tICovLAog
CQkJCTdBNDZBODBGMkEzMjY1QzgwMDdCREQwNCAvKiBMb2NrZG93bk1vZGVDb2NvYS5oICovLApA
QCAtMTQ1Miw2ICsxNDU4LDcgQEAKIAkJCQlERDIwREU1RjI3QkM5MEQ4MDA5M0QxNzUgLyogRmls
ZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0NjkzMjhCMjg0ODNFRjcwMDYx
NEYxNiAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlERDIwREUxMjI3QkM5
MEQ4MDA5M0QxNzUgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
REQyMERFNjAyN0JDOTBEODAwOTNEMTc1IC8qIEd1bnppcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
REQyMERFMUUyN0JDOTBEODAwOTNEMTc1IC8qIEhJU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUREMjBERTFGMjdCQzkwRDgwMDkzRDE3NSAvKiBISVRvb2xib3hTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUREMjBERTYxMjdCQzkwRDgwMDkzRDE3NSAvKiBIeXN0ZXJlc2lzQWN0aXZp
dHkuaCBpbiBIZWFkZXJzICovLApAQCAtMTc3OSw2ICsxNzg2LDcgQEAKIAkJCQkxQzVDNTdENDI3
NTcxNjI2MDAzQjU0MEQgLyogRW5jb2RpbmdUYWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjQ0MjkxNjQxRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0NDI5MTY4MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRl
ckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUMwMjJFRkUyMkNGRThFMTAwNkRGMDFCIC8q
IEd1bnppcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQg
LyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcx
OTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ3NDcxRUYyQUNBMTdB
RjAwRTBENEFCIC8qIExpbmtQcmVzZW50YXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvQ01ha2VMaXN0cy50eHQKaW5kZXggNmNiODM2NWM4MzIyLi41MDJh
ZWQyZWMzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApAQCAtMSw2ICsx
LDcgQEAKIHNldChQQUxfUFVCTElDX0hFQURFUlMKICAgICBFeHBvcnRNYWNyb3MuaAogICAgIEZp
bGVTaXplRm9ybWF0dGVyLmgKKyAgICBHdW56aXAuaAogICAgIEh5c3RlcmVzaXNBY3Rpdml0eS5o
CiAgICAgTG9nZ2luZy5oCiAgICAgU2Vzc2lvbklELmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvR3VuemlwLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0d1bnppcC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmEyN2ZkYjFhMzU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9HdW56aXAuaApAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKKy8v
IFRoaXMgZnVuY3Rpb24gaXMgb25seSBzdWl0YWJsZSBmb3IgemlwIGZpbGVzIHdoaWNoIGFyZSBn
dWFyYW50ZWVkIHRvIG5vdCBoYXZlIGFueSBmbGFncyBzZXQgaW4gdGhlaXIgaGVhZGVycy4KKy8v
IFNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTk1MiBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4KK1BBTF9FWFBPUlQgVmVjdG9yPExDaGFyPiBndW56aXAoc3RkOjpzcGFuPGNvbnN0IHVp
bnQ4X3Q+IGRhdGEpOworCit9CisKK3VzaW5nIFBBTDo6Z3VuemlwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYTBlYTFkNWQyNGJhLi42YzI0ZDEzYWVjNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMTgwLDYgKzE4
MCw3IEBAIGxpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCiAgICAgY29jb2EvQ3J5cHRvS2l0UHJpdmF0
ZVNvZnRMaW5rLm1tCiAgICAgY29jb2EvRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbQogICAg
IGNvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0KKyAgICBjb2NvYS9HdW56aXAuY3BwCiAg
ICAgY29jb2EvTGlua1ByZXNlbnRhdGlvblNvZnRMaW5rLm1tCiAgICAgY29jb2EvTWVkaWFUb29s
Ym94U29mdExpbmsuY3BwCiAgICAgY29jb2EvTmF0dXJhbExhbmd1YWdlU29mdExpbmsubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvR3VuemlwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvR3VuemlwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjIzNDhmZWY1NWIxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvR3VuemlwLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd1bnppcC5oIgorCisjaW5j
bHVkZSA8Y29tcHJlc3Npb24uaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK1ZlY3RvcjxMQ2hhcj4g
Z3VuemlwKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhKQoreworICAgIFZlY3RvcjxMQ2hh
cj4gcmVzdWx0OworCisgICAgLy8gUGFyc2UgdGhlIGd6aXAgaGVhZGVyLgorICAgIGF1dG8gY2hl
Y2tzID0gWyZdKCkgeworICAgICAgICByZXR1cm4gZGF0YS5zaXplKCkgPj0gMTAgJiYgZGF0YVsw
XSA9PSAweDFmICYmIGRhdGFbMV0gPT0gMHg4YiAmJiBkYXRhWzJdID09IDB4OCAmJiBkYXRhWzNd
ID09IDB4MDsKKyAgICB9OworICAgIEFTU0VSVChjaGVja3MoKSk7CisgICAgaWYgKCFjaGVja3Mo
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0ZXhwciBhdXRvIGlnbm9yZWRCeXRl
Q291bnQgPSAxMDsKKworICAgIGNvbXByZXNzaW9uX3N0cmVhbSBzdHJlYW07CisgICAgYXV0byBz
dGF0dXMgPSBjb21wcmVzc2lvbl9zdHJlYW1faW5pdCgmc3RyZWFtLCBDT01QUkVTU0lPTl9TVFJF
QU1fREVDT0RFLCBDT01QUkVTU0lPTl9aTElCKTsKKyAgICBBU1NFUlQoc3RhdHVzID09IENPTVBS
RVNTSU9OX1NUQVRVU19PSyk7CisgICAgaWYgKHN0YXR1cyAhPSBDT01QUkVTU0lPTl9TVEFUVVNf
T0spCisgICAgICAgIHJldHVybiB7IH07CisgICAgc3RyZWFtLmRzdF9wdHIgPSByZXN1bHQubXV0
YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgc3RyZWFtLmRzdF9zaXplID0gcmVzdWx0LnNpemUoKTsK
KyAgICBzdHJlYW0uc3JjX3B0ciA9IGRhdGEuc3Vic3BhbihpZ25vcmVkQnl0ZUNvdW50KS5kYXRh
KCk7CisgICAgc3RyZWFtLnNyY19zaXplID0gZGF0YS5zaXplKCkgLSBpZ25vcmVkQnl0ZUNvdW50
OworICAgIHNpemVfdCBvZmZzZXQgPSAwOworCisgICAgZG8geworICAgICAgICB1aW50OF90KiBv
cmlnaW5hbERlc3RpbmF0aW9uUG9pbnRlciA9IHN0cmVhbS5kc3RfcHRyOworICAgICAgICBzdGF0
dXMgPSBjb21wcmVzc2lvbl9zdHJlYW1fcHJvY2Vzcygmc3RyZWFtLCBDT01QUkVTU0lPTl9TVFJF
QU1fRklOQUxJWkUpOworICAgICAgICB1aW50OF90KiBuZXdEZXN0aW5hdGlvblBvaW50ZXIgPSBz
dHJlYW0uZHN0X3B0cjsKKyAgICAgICAgb2Zmc2V0ICs9IG5ld0Rlc3RpbmF0aW9uUG9pbnRlciAt
IG9yaWdpbmFsRGVzdGluYXRpb25Qb2ludGVyOworICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewor
ICAgICAgICBjYXNlIENPTVBSRVNTSU9OX1NUQVRVU19PSzogeworICAgICAgICAgICAgYXV0byBu
ZXdTaXplID0gb2Zmc2V0ICogMS41ICsgMTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4g
Z2V0IGJldHRlciBwZXJmb3JtYW5jZSBpZiB3ZSwgaW5zdGVhZCBvZiByZXNpemluZyB0aGUgYnVm
ZmVyLCB3ZSBhbGxvY2F0ZSBkaXN0aW5jdCBjaHVua3MgYW5kIGhhdmUgYSBwb3N0cHJvY2Vzc2lu
ZyBzdGVwIHdoaWNoIGNvbmNhdGVuYXRlcyB0aGUgY2h1bmtzIHRvZ2V0aGVyLgorICAgICAgICAg
ICAgaWYgKG5ld1NpemUgPiByZXN1bHQuc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5n
cm93KG5ld1NpemUpOworICAgICAgICAgICAgc3RyZWFtLmRzdF9wdHIgPSByZXN1bHQubXV0YWJs
ZVNwYW4oKS5zdWJzcGFuKG9mZnNldCkuZGF0YSgpOworICAgICAgICAgICAgc3RyZWFtLmRzdF9z
aXplID0gcmVzdWx0LnNpemUoKSAtIG9mZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgQ09NUFJFU1NJT05fU1RBVFVTX0VORDoKKyAgICAgICAgICAgIHN0
YXR1cyA9IGNvbXByZXNzaW9uX3N0cmVhbV9kZXN0cm95KCZzdHJlYW0pOworICAgICAgICAgICAg
QVNTRVJUKHN0YXR1cyA9PSBDT01QUkVTU0lPTl9TVEFUVVNfT0spOworICAgICAgICAgICAgaWYg
KHN0YXR1cyA9PSBDT01QUkVTU0lPTl9TVEFUVVNfT0spIHsKKyAgICAgICAgICAgICAgICByZXN1
bHQuc2hyaW5rKHN0cmVhbS5kc3RfcHRyIC0gcmVzdWx0LnNwYW4oKS5kYXRhKCkpOworICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICBjYXNlIENPTVBSRVNTSU9OX1NUQVRVU19FUlJPUjoKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
Y29tcHJlc3Npb25fc3RyZWFtX2Rlc3Ryb3koJnN0cmVhbSk7CisgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICB9CisgICAgfSB3aGlsZSAodHJ1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRDb2RlY0FT
Q0lJRmFzdFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0Q29kZWNBU0NJ
SUZhc3RQYXRoLmgKaW5kZXggZTVhMDIzYTY2ODUzLi5jMThjNDlkMzE2MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogdGVtcGxhdGU8c2l6ZV90IHNpemU+
IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBVQ2hhckJ5dGVGaWxs
ZXI8ND4gewotICAgIHN0YXRpYyB2b2lkIGNvcHkoc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4g
ZGVzdGluYXRpb24sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzb3VyY2UpCisgICAgc3RhdGlj
IHZvaWQgY29weShzdGQ6OnNwYW48TENoYXI+IGRlc3RpbmF0aW9uLCBzdGQ6OnNwYW48Y29uc3Qg
dWludDhfdD4gc291cmNlKQogICAgIHsKICAgICAgICAgbWVtY3B5U3BhbihkZXN0aW5hdGlvbiwg
c291cmNlLmZpcnN0KDQpKTsKICAgICB9CkBAIC00Nyw3ICs0Nyw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFVDaGFyQnl0ZUZpbGxlcjw0PiB7CiAgICAgfQogfTsKIHRlbXBsYXRlPD4gc3RydWN0IFVD
aGFyQnl0ZUZpbGxlcjw4PiB7Ci0gICAgc3RhdGljIHZvaWQgY29weShzdGQ6OnNwYW48TGF0aW4x
Q2hhcmFjdGVyPiBkZXN0aW5hdGlvbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNvdXJjZSkK
KyAgICBzdGF0aWMgdm9pZCBjb3B5KHN0ZDo6c3BhbjxMQ2hhcj4gZGVzdGluYXRpb24sIHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBzb3VyY2UpCiAgICAgewogICAgICAgICBtZW1jcHlTcGFuKGRl
c3RpbmF0aW9uLCBzb3VyY2UuZmlyc3QoOCkpOwogICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgVUNoYXJCeXRlRmlsbGVyPDg+IHsKICAgICB9CiB9OwogCi1pbmxpbmUg
dm9pZCBjb3B5QVNDSUlNYWNoaW5lV29yZChzdGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBkZXN0
aW5hdGlvbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IHNvdXJjZSkKK2lubGluZSB2b2lkIGNv
cHlBU0NJSU1hY2hpbmVXb3JkKHN0ZDo6c3BhbjxMQ2hhcj4gZGVzdGluYXRpb24sIHN0ZDo6c3Bh
bjxjb25zdCB1aW50OF90PiBzb3VyY2UpCiB7CiAgICAgVUNoYXJCeXRlRmlsbGVyPHNpemVvZihX
VEY6Ok1hY2hpbmVXb3JkKT46OmNvcHkoZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmluZGV4IDZkODQz
ZmM0NTdmMC4uNzdhMmFjNTVkOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Rl
eHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVGV4dENvZGVj
TGF0aW4xOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogCiBT
dHJpbmcgVGV4dENvZGVjTGF0aW4xOjpkZWNvZGUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5
dGVzLCBib29sLCBib29sLCBib29sJiBzYXdFeGNlcHRpb24pCiB7Ci0gICAgc3RkOjpzcGFuPExh
dGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVyczsKKyAgICBzdGQ6OnNwYW48TENoYXI+IGNoYXJhY3Rl
cnM7CiAgICAgaWYgKGJ5dGVzLmVtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogICAgIGlmIChieXRlcy5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpIFtbdW5saWtlbHldXSB7CkBAIC0xMjEsNyArMTIxLDcgQEAgU3RyaW5nIFRleHRDb2Rl
Y0xhdGluMTo6ZGVjb2RlKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBieXRlcywgYm9vbCwgYm9v
bCwgYm9vbCYKICAgICAgICAgICAgICAgICB3aGlsZSAoc291cmNlLmRhdGEoKSA8IGFsaWduZWRF
bmQpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjaHVuayA9IHJlaW50ZXJwcmV0Q2FzdFNw
YW5TdGFydFRvPFdURjo6TWFjaGluZVdvcmQ+KHNvdXJjZSk7CiAKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCFXVEY6OmNvbnRhaW5zT25seUFTQ0lJPExhdGluMUNoYXJhY3Rlcj4oY2h1bmspKQor
ICAgICAgICAgICAgICAgICAgICBpZiAoIVdURjo6Y29udGFpbnNPbmx5QVNDSUk8TENoYXI+KGNo
dW5rKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdXNlTG9va3VwVGFibGU7CiAKICAg
ICAgICAgICAgICAgICAgICAgY29weUFTQ0lJTWFjaGluZVdvcmQoZGVzdGluYXRpb24sIHNvdXJj
ZSk7CkBAIC0xNzIsNyArMTcyLDcgQEAgdXBDb252ZXJ0VG8xNkJpdDoKICAgICAgICAgICAgICAg
ICB3aGlsZSAoc291cmNlLmRhdGEoKSA8IGFsaWduZWRFbmQpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBjaHVuayA9IHJlaW50ZXJwcmV0Q2FzdFNwYW5TdGFydFRvPFdURjo6TWFjaGluZVdv
cmQ+KHNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBp
ZiAoIVdURjo6Y29udGFpbnNPbmx5QVNDSUk8TGF0aW4xQ2hhcmFjdGVyPihjaHVuaykpCisgICAg
ICAgICAgICAgICAgICAgIGlmICghV1RGOjpjb250YWluc09ubHlBU0NJSTxMQ2hhcj4oY2h1bmsp
KQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byB1c2VMb29rdXBUYWJsZTE2OwogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgY29weUFTQ0lJTWFjaGluZVdvcmQo
ZGVzdGluYXRpb24xNiwgc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvdGV4dC9UZXh0Q29kZWNVVEY4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9U
ZXh0Q29kZWNVVEY4LmNwcAppbmRleCA1YTYwMTkzNWQ1OTIuLmYyMzFlYTlhNGJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAtMTg3LDcg
KzE4Nyw3IEBAIHZvaWQgVGV4dENvZGVjVVRGODo6Y29uc3VtZVBhcnRpYWxTZXF1ZW5jZUJ5dGUo
KQogICAgIG1lbW1vdmVTcGFuKHN0ZDo6c3BhbiB7IG1fcGFydGlhbFNlcXVlbmNlIH0sIHN0ZDo6
c3BhbiB7IG1fcGFydGlhbFNlcXVlbmNlIH0uc3Vic3BhbigxLCBtX3BhcnRpYWxTZXF1ZW5jZVNp
emUpKTsKIH0KIAotYm9vbCBUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVuY2Uoc3Rk
OjpzcGFuPExhdGluMUNoYXJhY3Rlcj4mIGRlc3RpbmF0aW9uLCBzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4mIHNvdXJjZSwgYm9vbCBmbHVzaCkKK2Jvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFy
dGlhbFNlcXVlbmNlKHN0ZDo6c3BhbjxMQ2hhcj4mIGRlc3RpbmF0aW9uLCBzdGQ6OnNwYW48Y29u
c3QgdWludDhfdD4mIHNvdXJjZSwgYm9vbCBmbHVzaCkKIHsKICAgICBBU1NFUlQobV9wYXJ0aWFs
U2VxdWVuY2VTaXplKTsKICAgICBkbyB7CkBAIC0zMTAsNyArMzEwLDcgQEAgU3RyaW5nIFRleHRD
b2RlY1VURjg6OmRlY29kZShzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gYnl0ZXMsIGJvb2wgZmx1
c2gsIGJvb2wgc3QKICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KLSAgICBTdHJpbmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiBidWZmZXIoYnVmZmVy
U2l6ZSk7CisgICAgU3RyaW5nQnVmZmVyPExDaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7CiAKICAg
ICBhdXRvIHNvdXJjZSA9IGJ5dGVzOwogICAgIGF1dG8qIGFsaWduZWRFbmQgPSBXVEY6OmFsaWdu
VG9NYWNoaW5lV29yZChzdGQ6OnRvX2FkZHJlc3Moc291cmNlLmVuZCgpKSk7CkBAIC0zMzYsNyAr
MzM2LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjg6OmRlY29kZShzdGQ6OnNwYW48Y29uc3QgdWlu
dDhfdD4gYnl0ZXMsIGJvb2wgZmx1c2gsIGJvb2wgc3QKICAgICAgICAgICAgICAgICBpZiAoV1RG
Ojppc0FsaWduZWRUb01hY2hpbmVXb3JkKHNvdXJjZS5kYXRhKCkpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlIChzb3VyY2UuZGF0YSgpIDwgYWxpZ25lZEVuZCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBjaHVuayA9IHJlaW50ZXJwcmV0Q2FzdFNwYW5TdGFydFRvPGNvbnN0
IFdURjo6TWFjaGluZVdvcmQ+KHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IVdURjo6Y29udGFpbnNPbmx5QVNDSUk8TGF0aW4xQ2hhcmFjdGVyPihjaHVuaykpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIVdURjo6Y29udGFpbnNPbmx5QVNDSUk8TENoYXI+KGNodW5r
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvcHlBU0NJSU1hY2hpbmVXb3JkKGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgc2tpcChzb3VyY2UsIHNpemVvZihXVEY6Ok1hY2hpbmVXb3JkKSk7
CkBAIC00MjEsNyArNDIxLDcgQEAgdXBDb252ZXJ0VG8xNkJpdDoKICAgICAgICAgICAgICAgICBp
ZiAoV1RGOjppc0FsaWduZWRUb01hY2hpbmVXb3JkKHNvdXJjZS5kYXRhKCkpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlIChzb3VyY2UuZGF0YSgpIDwgYWxpZ25lZEVuZCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBjaHVuayA9IHJlaW50ZXJwcmV0Q2FzdFNwYW5TdGFydFRv
PGNvbnN0IFdURjo6TWFjaGluZVdvcmQ+KHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIVdURjo6Y29udGFpbnNPbmx5QVNDSUk8TGF0aW4xQ2hhcmFjdGVyPihjaHVuaykpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVdURjo6Y29udGFpbnNPbmx5QVNDSUk8TENoYXI+
KGNodW5rKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHlBU0NJSU1hY2hpbmVXb3JkKGRlc3RpbmF0aW9uMTYsIHNvdXJjZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwKHNvdXJjZSwgc2l6ZW9mKFdURjo6TWFjaGlu
ZVdvcmQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0Q29k
ZWNVVEY4LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dENvZGVjVVRGOC5oCmlu
ZGV4IDBkMTU2YmRlOGI3ZC4uZTMwMjZlOWY2NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3RleHQvVGV4dENvZGVjVVRGOC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvdGV4dC9UZXh0Q29kZWNVVEY4LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJUZXh0
Q29kZWMuaCIKICNpbmNsdWRlIDx1bmljb2RlL3V0ZjguaD4KICNpbmNsdWRlIDx3dGYvVFpvbmVN
YWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9MYXRpbjFDaGFyYWN0ZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9MQ2hhci5oPgogCiBuYW1lc3BhY2UgUEFMIHsKIApAQCAtNDYsNyArNDYsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBkZWNvZGUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+LCBi
b29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikgZmluYWw7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGVuY29kZShTdHJpbmdWaWV3LCBVbmVuY29kYWJsZUhhbmRsaW5nKSBj
b25zdCBmaW5hbDsKIAotICAgIGJvb2wgaGFuZGxlUGFydGlhbFNlcXVlbmNlKHN0ZDo6c3BhbjxM
YXRpbjFDaGFyYWN0ZXI+JiBkZXN0aW5hdGlvbiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+JiBz
b3VyY2UsIGJvb2wgZmx1c2gpOworICAgIGJvb2wgaGFuZGxlUGFydGlhbFNlcXVlbmNlKHN0ZDo6
c3BhbjxMQ2hhcj4mIGRlc3RpbmF0aW9uLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4mIHNvdXJj
ZSwgYm9vbCBmbHVzaCk7CiAgICAgdm9pZCBoYW5kbGVQYXJ0aWFsU2VxdWVuY2Uoc3RkOjpzcGFu
PGNoYXIxNl90PiYgZGVzdGluYXRpb24sIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiYgc291cmNl
LCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcik7CiAgICAgdm9p
ZCBjb25zdW1lUGFydGlhbFNlcXVlbmNlQnl0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAppbmRleCBhNTA3NjRiZDkz
NDYuLjczMDY1YzZhYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0
L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Rl
eHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGNvbnN0ZXhwciBz
aXplX3QgbWF4RW5jb2RpbmdOYW1lTGVuZ3RoID0gNjM7CiAKIC8vIEhhc2ggZm9yIGFsbC1BU0NJ
SSBzdHJpbmdzIHRoYXQgZG9lcyBjYXNlIGZvbGRpbmcuCiBzdHJ1Y3QgVGV4dEVuY29kaW5nTmFt
ZUhhc2ggewotICAgIHN0YXRpYyBib29sIGVxdWFsKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFy
YWN0ZXI+IHMxLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzMikKKyAgICBzdGF0
aWMgYm9vbCBlcXVhbChzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHMxLCBzdGQ6OnNwYW48Y29uc3Qg
TENoYXI+IHMyKQogICAgIHsKICAgICAgICAgaWYgKHMxLnNpemUoKSAhPSBzMi5zaXplKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03Niw3ICs3Niw3IEBAIHN0cnVjdCBUZXh0RW5j
b2RpbmdOYW1lSGFzaCB7CiAgICAgLy8gVGhpcyBhbGdvcml0aG0gaXMgdGhlIG9uZS1hdC1hLXRp
bWUgaGFzaCBmcm9tOgogICAgIC8vIGh0dHA6Ly9idXJ0bGVidXJ0bGUubmV0L2JvYi9oYXNoL2hh
c2hmYXEuaHRtbAogICAgIC8vIGh0dHA6Ly9idXJ0bGVidXJ0bGUubmV0L2JvYi9oYXNoL2Rvb2Jz
Lmh0bWwKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hh
cmFjdGVyPiBzKQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKHN0ZDo6c3Bhbjxjb25zdCBMQ2hh
cj4gcykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGggPSBXVEY6OnN0cmluZ0hhc2hpbmdTdGFy
dFZhbHVlOwogICAgICAgICBmb3IgKGNoYXIgYyA6IHMpIHsKQEAgLTk5LDEyICs5OSwxMiBAQCBz
dHJ1Y3QgVGV4dEVuY29kaW5nTmFtZUhhc2ggewogfTsKIAogc3RydWN0IEhhc2hUcmFuc2xhdG9y
VGV4dEVuY29kaW5nTmFtZSB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goc3RkOjpzcGFuPGNv
bnN0IExhdGluMUNoYXJhY3Rlcj4gbGl0ZXJhbCkKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChz
dGQ6OnNwYW48Y29uc3QgTENoYXI+IGxpdGVyYWwpCiAgICAgewogICAgICAgICByZXR1cm4gVGV4
dEVuY29kaW5nTmFtZUhhc2g6Omhhc2gobGl0ZXJhbCk7CiAgICAgfQogCi0gICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgQVNDSUlMaXRlcmFsJiBhLCBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hh
cmFjdGVyPiBiKQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgYSwg
c3RkOjpzcGFuPGNvbnN0IExDaGFyPiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIFRleHRFbmNv
ZGluZ05hbWVIYXNoOjplcXVhbChhLnNwYW44KCksIGIpOwogICAgIH0KQEAgLTMxMSw3ICszMTEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWMoY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZykKICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZSgpOwogfQogCi1zdGF0
aWMgQVNDSUlMaXRlcmFsIGF0b21DYW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKHN0ZDo6c3Bhbjxj
b25zdCBMYXRpbjFDaGFyYWN0ZXI+IG5hbWUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF0b21DYW5v
bmljYWxUZXh0RW5jb2RpbmdOYW1lKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gbmFtZSkKIHsKICAg
ICBpZiAobmFtZS5lbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMzM3LDcgKzMzNyw3
IEBAIHN0YXRpYyBBU0NJSUxpdGVyYWwgYXRvbUNhbm9uaWNhbFRleHRFbmNvZGluZ05hbWUoc3Rk
OjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyCiAgICAgaWYgKGNoYXJhY3RlcnMuc2l6ZSgpID4g
bWF4RW5jb2RpbmdOYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgc3RkOjph
cnJheTxMYXRpbjFDaGFyYWN0ZXIsIG1heEVuY29kaW5nTmFtZUxlbmd0aD4gYnVmZmVyOworICAg
IHN0ZDo6YXJyYXk8TENoYXIsIG1heEVuY29kaW5nTmFtZUxlbmd0aD4gYnVmZmVyOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hhcmFjdGVycy5zaXplKCk7ICsraSkKICAgICAgICAgYnVm
ZmVyW2ldID0gY2hhcmFjdGVyc1tpXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggNTE1NTg1NTk3YzI1
Li40NzI4YzFiOTkzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPnNwYW4oKSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJu
IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4obV9jb250aWd1b3VzQnVmZmVyLT5zcGFuKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fY29udGlndW91c0J1ZmZlci0+c3BhbigpOwogCiAgICAgICAg
IGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0
U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDlhMjE1OTZj
NDJhZC4uMzBkZThjYjQ5NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTM1OTgsOSArMzU5OCw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBpZiAoc3Bhbi5zaXplKCkgPCBsZW5ndGgpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKHNob3VsZEF0b21pemUgPT0gU2hvdWxk
QXRvbWl6ZTo6WWVzKQotICAgICAgICAgICAgICAgIHN0ciA9IEF0b21TdHJpbmcoYnl0ZUNhc3Q8
TGF0aW4xQ2hhcmFjdGVyPihjb25zdW1lU3BhbihzcGFuLCBsZW5ndGgpKSk7CisgICAgICAgICAg
ICAgICAgc3RyID0gQXRvbVN0cmluZyhjb25zdW1lU3BhbihzcGFuLCBsZW5ndGgpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdHIgPSBTdHJpbmcoYnl0ZUNhc3Q8TGF0aW4x
Q2hhcmFjdGVyPihjb25zdW1lU3BhbihzcGFuLCBsZW5ndGgpKSk7CisgICAgICAgICAgICAgICAg
c3RyID0gU3RyaW5nKGNvbnN1bWVTcGFuKHNwYW4sIGxlbmd0aCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAppbmRleCBiZTVjNTcx
ZDhjMDkuLmVlNGUwZDhkOWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAKQEAgLTIwNywxMSAr
MjA3LDExIEBAIHZvaWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0VGVzdEZsYWdz
QW5kQXBwZW5kQWN0aW9uKHVpbnQzMl90JiBwcm9ncmFtCiB9CiAKIHRlbXBsYXRlPGJvb2wgY2Fz
ZVNlbnNpdGl2ZT4KLWlubGluZSB2b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJl
dEp1bXBUYWJsZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiB1cmwsIHVpbnQzMl90
JiB1cmxJbmRleCwgdWludDMyX3QmIHByb2dyYW1Db3VudGVyKQoraW5saW5lIHZvaWQgREZBQnl0
ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0SnVtcFRhYmxlKHN0ZDo6c3Bhbjxjb25zdCBMQ2hh
cj4gdXJsLCB1aW50MzJfdCYgdXJsSW5kZXgsIHVpbnQzMl90JiBwcm9ncmFtQ291bnRlcikKIHsK
ICAgICBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29k
ZSwgcHJvZ3JhbUNvdW50ZXIpOwogCi0gICAgY2hhciBjID0gdXJsSW5kZXggPCB1cmwuc2l6ZSgp
ID8gYnl0ZUNhc3Q8Y2hhcj4odXJsW3VybEluZGV4XSkgOiAwOworICAgIGNoYXIgYyA9IHVybElu
ZGV4IDwgdXJsLnNpemUoKSA/IHVybFt1cmxJbmRleF0gOiAwOwogICAgIGNoYXIgY2hhcmFjdGVy
ID0gY2FzZVNlbnNpdGl2ZSA/IGMgOiB0b0FTQ0lJTG93ZXIoYyk7CiAgICAgdWludDhfdCBmaXJz
dENoYXJhY3RlciA9IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIg
KyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikpOwogICAgIHVpbnQ4X3QgbGFzdENoYXJh
Y3RlciA9IGdldEJpdHM8dWludDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXpl
b2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDhfdCkpOwpAQCAtMjQ5LDEz
ICsyNDksMTMgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjphY3Rpb25zTWF0Y2hpbmdF
dmVyeXRoaW5nKCkgLT4gQWN0aW9ucwogYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRl
cnByZXQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc291cmNlRmxhZ3MgZmxhZ3MpIC0+IEFj
dGlvbnMKIHsKICAgICBDU3RyaW5nIHVybENTdHJpbmc7Ci0gICAgc3RkOjpzcGFuPGNvbnN0IExh
dGluMUNoYXJhY3Rlcj4gdXJsOworICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gdXJsOwogICAg
IGlmICh1cmxTdHJpbmcuaXM4Qml0KCkpIFtbbGlrZWx5XV0KICAgICAgICAgdXJsID0gdXJsU3Ry
aW5nLnNwYW44KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdHVmZmluZyBhIFVU
Ri04IHN0cmluZyBpbnRvIGEgTGF0aW4xIGJ1ZmZlciBzZWVtcyB3cm9uZy4KICAgICAgICAgdXJs
Q1N0cmluZyA9IHVybFN0cmluZy51dGY4KCk7Ci0gICAgICAgIHVybCA9IGJ5dGVDYXN0PExhdGlu
MUNoYXJhY3Rlcj4odXJsQ1N0cmluZy5zcGFuKCkpOworICAgICAgICB1cmwgPSBieXRlQ2FzdDxM
Q2hhcj4odXJsQ1N0cmluZy5zcGFuKCkpOwogICAgIH0KICAgICBBU1NFUlQodXJsLmRhdGEoKSk7
CiAgICAgCkBAIC0zMDQsNyArMzA0LDcgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjpp
bnRlcnByZXQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc291cmNlRmxhZ3MgZmwKICAgICAg
ICAgICAgICAgICAgICAgZ290byBuZXh0REZBOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sg
dG8gc2VlIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgdXJsIGlzIHRoZSB2YWx1ZSBzdG9y
ZWQgd2l0aCB0aGUgYnl0ZWNvZGUuCi0gICAgICAgICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSB1
cmxJbmRleCA8IHVybC5zaXplKCkgPyBieXRlQ2FzdDxjaGFyPih1cmxbdXJsSW5kZXhdKSA6IDA7
CisgICAgICAgICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSB1cmxJbmRleCA8IHVybC5zaXplKCkg
PyB1cmxbdXJsSW5kZXhdIDogMDsKICAgICAgICAgICAgICAgICBERkFCeXRlY29kZUp1bXBTaXpl
IGp1bXBTaXplID0gZ2V0SnVtcFNpemUobV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOwogICAg
ICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gZ2V0Qml0czx1aW50OF90PihtX2J5dGVjb2Rl
LCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QganVtcExvY2F0aW9uID0gcHJvZ3JhbUNvdW50ZXIg
KyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDhfdCk7CkBAIC0z
MjAsNyArMzIwLDcgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc291cmNlRmxhZ3MgZmwKICAgICAgICAgICAgICAgICAg
ICAgZ290byBuZXh0REZBOwogCiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRo
ZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgdXJsIGlzIHRoZSB2YWx1ZSBzdG9yZWQgd2l0aCB0aGUg
Ynl0ZWNvZGUuCi0gICAgICAgICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSB1cmxJbmRleCA8IHVy
bC5zaXplKCkgPyBieXRlQ2FzdDxjaGFyPih0b0FTQ0lJTG93ZXIodXJsW3VybEluZGV4XSkpIDog
MDsKKyAgICAgICAgICAgICAgICBjaGFyIGNoYXJhY3RlciA9IHVybEluZGV4IDwgdXJsLnNpemUo
KSA/IHRvQVNDSUlMb3dlcih1cmxbdXJsSW5kZXhdKSA6IDA7CiAgICAgICAgICAgICAgICAgREZB
Qnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dy
YW1Db3VudGVyKTsKICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IGdldEJpdHM8dWlu
dDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbikpKSB7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGp1bXBMb2NhdGlvbiA9
IHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24pICsgc2l6ZW9m
KHVpbnQ4X3QpOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIGF1dG8gREZBQnl0ZWNvZGVJbnRlcnByZXRl
cjo6aW50ZXJwcmV0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZXNvdXJjZUZsYWdzIGZsCiAg
ICAgICAgICAgICAgICAgaWYgKHVybEluZGV4ID4gdXJsLnNpemUoKSkKICAgICAgICAgICAgICAg
ICAgICAgZ290byBuZXh0REZBOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNo
YXIgY2hhcmFjdGVyID0gdXJsSW5kZXggPCB1cmwuc2l6ZSgpID8gYnl0ZUNhc3Q8Y2hhcj4odXJs
W3VybEluZGV4XSkgOiAwOworICAgICAgICAgICAgICAgIGNoYXIgY2hhcmFjdGVyID0gdXJsSW5k
ZXggPCB1cmwuc2l6ZSgpID8gdXJsW3VybEluZGV4XSA6IDA7CiAgICAgICAgICAgICAgICAgREZB
Qnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IGdldEp1bXBTaXplKG1fYnl0ZWNvZGUsIHByb2dy
YW1Db3VudGVyKTsKICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID49IGdldEJpdHM8dWlu
dDhfdD4obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIgKyBzaXplb2YoREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbikpCiAgICAgICAgICAgICAgICAgICAgICYmIGNoYXJhY3RlciA8PSBnZXRCaXRzPHVp
bnQ4X3Q+KG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5z
dHJ1Y3Rpb24pICsgc2l6ZW9mKHVpbnQ4X3QpKSkgewpAQCAtMzY0LDcgKzM2NCw3IEBAIGF1dG8g
REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBSZXNvdXJjZUZsYWdzIGZsCiAgICAgICAgICAgICAgICAgaWYgKHVybEluZGV4ID4gdXJsLnNp
emUoKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0REZBOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGNoYXIgY2hhcmFjdGVyID0gdXJsSW5kZXggPCB1cmwuc2l6ZSgp
ID8gYnl0ZUNhc3Q8Y2hhcj4odG9BU0NJSUxvd2VyKHVybFt1cmxJbmRleF0pKSA6IDA7CisgICAg
ICAgICAgICAgICAgY2hhciBjaGFyYWN0ZXIgPSB1cmxJbmRleCA8IHVybC5zaXplKCkgPyB0b0FT
Q0lJTG93ZXIodXJsW3VybEluZGV4XSkgOiAwOwogICAgICAgICAgICAgICAgIERGQUJ5dGVjb2Rl
SnVtcFNpemUganVtcFNpemUgPSBnZXRKdW1wU2l6ZShtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRl
cik7CiAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA+PSBnZXRCaXRzPHVpbnQ4X3Q+KG1f
Ynl0ZWNvZGUsIHByb2dyYW1Db3VudGVyICsgc2l6ZW9mKERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24p
KQogICAgICAgICAgICAgICAgICAgICAmJiBjaGFyYWN0ZXIgPD0gZ2V0Qml0czx1aW50OF90Piht
X2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlciArIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9u
KSArIHNpemVvZih1aW50OF90KSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaAppbmRleCA1MzU1YzQ4MzE0
NTIuLjE1Zjk5OTZjZTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaApAQCAtNTAsNyArNTAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHVuc2ln
bmVkJiBwcm9ncmFtQ291bnRlciwgUmVzb3VyY2VGbGFncywgQWN0aW9ucyYpOwogCiAgICAgdGVt
cGxhdGU8Ym9vbCBjYXNlU2Vuc2l0aXZlPgotICAgIHZvaWQgaW50ZXJwcmV0SnVtcFRhYmxlKHN0
ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHVybCwgdWludDMyX3QmIHVybEluZGV4LCB1
aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIpOworICAgIHZvaWQgaW50ZXJwcmV0SnVtcFRhYmxlKHN0
ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gdXJsLCB1aW50MzJfdCYgdXJsSW5kZXgsIHVpbnQzMl90JiBw
cm9ncmFtQ291bnRlcik7CiAKICAgICBjb25zdCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gbV9i
eXRlY29kZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5
cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IGU3
M2FmMTk5OTA0NC4uNjQzZjUzYTZiMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5
cHRvLmNwcApAQCAtMTIzNSw4ICsxMjM1LDkgQEAgdm9pZCBTdWJ0bGVDcnlwdG86OnVud3JhcEtl
eShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgS2V5Rm9ybWF0IGZvcm1hdCwgQnVmZmUKICAg
ICAgICAgICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKICAgICAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgICAgICAgICAgU3RyaW5nIGp3a1N0cmlu
ZyhieXRlcy5zcGFuKCkpOwogICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0g
ICAgICAgICAgICBhdXRvIGp3a09iamVjdCA9IEpTT05QYXJzZSgmc3RhdGUsIGJ5dGVDYXN0PExh
dGluMUNoYXJhY3Rlcj4oYnl0ZXMuc3BhbigpKSk7CisgICAgICAgICAgICBhdXRvIGp3a09iamVj
dCA9IEpTT05QYXJzZSgmc3RhdGUsIGp3a1N0cmluZyk7CiAgICAgICAgICAgICBpZiAoIWp3a09i
amVjdCkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb25Db2RlOjpE
YXRhRXJyb3IsICJXcmFwcGVkS2V5IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBKU09OIG9iamVj
dCJfcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFi
bGVEYXRhLmNwcAppbmRleCA2YzAxYTMzNTQwZGQuLjcyYzEyOGQ1MTRkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgQ1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnMKICAgICBpZiAoIXN0cmluZ0J1aWxkZXIuaXNFbXB0eSgpKSB7CiAgICAgICAg
IG1fYmFja2luZ1N0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgaWYg
KG1fYmFja2luZ1N0cmluZy5pczhCaXQoKSkKLSAgICAgICAgICAgIHVwZGF0ZUJhY2tpbmdTdHJp
bmdzSW5Ub2tlbnM8TGF0aW4xQ2hhcmFjdGVyPigpOworICAgICAgICAgICAgdXBkYXRlQmFja2lu
Z1N0cmluZ3NJblRva2VuczxMQ2hhcj4oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdXBk
YXRlQmFja2luZ1N0cmluZ3NJblRva2VuczxjaGFyMTZfdD4oKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgKaW5kZXggYzIyMjkwZjY5OTM1Li43Yzdl
ZGYwNzkzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgK
QEAgLTE3NCw3ICsxNzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV92YWx1ZUlzOEJpdCA6IDEg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0JhY2tlZEJ5U3RyaW5nTGl0ZXJhbCA6IDEgeyBmYWxz
ZSB9OwogICAgIHVuc2lnbmVkIG1fdmFsdWVMZW5ndGggeyAwIH07Ci0gICAgY29uc3Qgdm9pZCog
bV92YWx1ZURhdGFDaGFyUmF3IHsgbnVsbHB0ciB9OyAvLyBFaXRoZXIgTGF0aW4xQ2hhcmFjdGVy
KiBvciBjaGFyMTZfdCouCisgICAgY29uc3Qgdm9pZCogbV92YWx1ZURhdGFDaGFyUmF3IHsgbnVs
bHB0ciB9OyAvLyBFaXRoZXIgTENoYXIqIG9yIGNoYXIxNl90Ki4KIAogICAgIHVuaW9uIHsKICAg
ICAgICAgY2hhcjE2X3QgbV9kZWxpbWl0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmgKaW5kZXggYjA3NDJiMmUyMTg5Li4zOGJl
ZGM5MWYzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5p
emVySW5wdXRTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2Vu
aXplcklucHV0U3RyZWFtLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jb25zdGV4cHIgTGF0aW4xQ2hhcmFjdGVyIGtFbmRPZkZpbGVNYXJrZXIgPSAwOworY29u
c3RleHByIExDaGFyIGtFbmRPZkZpbGVNYXJrZXIgPSAwOwogCiBERUNMQVJFX0FMTE9DQVRPUl9X
SVRIX0hFQVBfSURFTlRJRklFUihDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbSk7CiBjbGFzcyBDU1NU
b2tlbml6ZXJJbnB1dFN0cmVhbSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mvc2Ny
aXB0cy9wcm9jZXNzLWNzcy1wcm9wZXJ0aWVzLnB5IGIvU291cmNlL1dlYkNvcmUvY3NzL3Njcmlw
dHMvcHJvY2Vzcy1jc3MtcHJvcGVydGllcy5weQppbmRleCAxZGQ2YTM2ODM1MzkuLmFmNzg3ODMx
ZGUzOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3NjcmlwdHMvcHJvY2Vzcy1jc3Mt
cHJvcGVydGllcy5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mvc2NyaXB0cy9wcm9jZXNzLWNz
cy1wcm9wZXJ0aWVzLnB5CkBAIC0zMDgyLDcgKzMwODIsNyBAQCBjbGFzcyBHZW5lcmF0ZUNTU1By
b3BlcnR5TmFtZXM6CiAKICAgICAgICAgICAgIFN0cmluZyBuYW1lRm9ySURMKENTU1Byb3BlcnR5
SUQgaWQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTGF0aW4xQ2hhcmFjdGVyIGNo
YXJhY3RlcnNbbWF4Q1NTUHJvcGVydHlOYW1lTGVuZ3RoXTsKKyAgICAgICAgICAgICAgICBMQ2hh
ciBjaGFyYWN0ZXJzW21heENTU1Byb3BlcnR5TmFtZUxlbmd0aF07CiAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogbmFtZUZvckNTUyA9IG5hbWVMaXRlcmFsKGlkKTsKICAgICAgICAgICAgICAg
ICBpZiAoIW5hbWVGb3JDU1MpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwpAQCAtMzA5OCw3ICszMDk4LDcgQEAgY2xhc3MgR2VuZXJhdGVDU1NQcm9wZXJ0eU5hbWVz
OgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICpuZXh0Q2hhcmFj
dGVyKysgPSBjaGFyYWN0ZXI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiB7IGNoYXJhY3RlcnMsIG5leHRD
aGFyYWN0ZXIgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpzcGFuPGNvbnN0IExDaGFy
PiB7IGNoYXJhY3RlcnMsIG5leHRDaGFyYWN0ZXIgfTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgIiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3NjcmlwdHMvcHJvY2Vz
cy1jc3MtcHNldWRvLXNlbGVjdG9ycy5weSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9zY3JpcHRzL3By
b2Nlc3MtY3NzLXBzZXVkby1zZWxlY3RvcnMucHkKaW5kZXggMjM0Y2JkMTNjNzBjLi5hZWJkYmI1
ZjNkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9zY3JpcHRzL3Byb2Nlc3MtY3Nz
LXBzZXVkby1zZWxlY3RvcnMucHkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3NjcmlwdHMvcHJv
Y2Vzcy1jc3MtcHNldWRvLXNlbGVjdG9ycy5weQpAQCAtNDM2LDcgKzQzNiw3IEBAIGNsYXNzIEdQ
ZXJmT3V0cHV0R2VuZXJhdG9yOgogICAgIGRlZiB3cml0ZV9wYXJzaW5nX2Z1bmN0aW9uX2RlZmlu
aXRpb25zX2Zvcl9wc2V1ZG9fY2xhc3Moc2VsZiwgd3JpdGVyKToKICAgICAgICAgbG9uZ2VzdF9r
ZXl3b3JkX2xlbmd0aCA9IGxlbihtYXgoc2VsZi5tYXBwaW5nLCBrZXk9bGVuKSkKICAgICAgICAg
d3JpdGVyLndyaXRlX2Jsb2NrKCIiIgotICAgICAgICBzdGF0aWMgaW5saW5lIGNvbnN0IFNlbGVj
dG9yUHNldWRvQ2xhc3NPckNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50RW50cnkqIGZpbmRQc2V1
ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TmFtZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4x
Q2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQorICAgICAgICBzdGF0aWMgaW5saW5lIGNvbnN0IFNlbGVj
dG9yUHNldWRvQ2xhc3NPckNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50RW50cnkqIGZpbmRQc2V1
ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TmFtZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+
IGNoYXJhY3RlcnMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvclBzZXVk
b0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXBIYXNoOjppbl93b3JkX3NldChieXRlQ2Fz
dDxjaGFyPihjaGFyYWN0ZXJzLmRhdGEoKSksIGNoYXJhY3RlcnMuc2l6ZSgpKTsKICAgICAgICAg
fSIiIikKQEAgLTQ0NSw3ICs0NDUsNyBAQCBjbGFzcyBHUGVyZk91dHB1dEdlbmVyYXRvcjoKICAg
ICAgICAgc3RhdGljIGlubGluZSBjb25zdCBTZWxlY3RvclBzZXVkb0NsYXNzT3JDb21wYXRpYmls
aXR5UHNldWRvRWxlbWVudEVudHJ5KiBmaW5kUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudE5hbWUoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyYWN0ZXJzKQogICAgICAgICB7
ewogICAgICAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIG1heEtleXdvcmRMZW5ndGggPSB7bG9u
Z2VzdF9rZXl3b3JkX2xlbmd0aH07Ci0gICAgICAgICAgICBzdGQ6OmFycmF5PExhdGluMUNoYXJh
Y3RlciwgbWF4S2V5d29yZExlbmd0aD4gYnVmZmVyOworICAgICAgICAgICAgc3RkOjphcnJheTxM
Q2hhciwgbWF4S2V5d29yZExlbmd0aD4gYnVmZmVyOwogICAgICAgICAgICAgaWYgKGNoYXJhY3Rl
cnMuc2l6ZSgpID4gbWF4S2V5d29yZExlbmd0aCkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtNDU0LDcgKzQ1NCw3IEBAIGNsYXNzIEdQZXJmT3V0cHV0R2VuZXJhdG9yOgog
ICAgICAgICAgICAgICAgIGlmICghaXNMYXRpbjEoY2hhcmFjdGVyKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgICAgICBidWZmZXJbaV0gPSBzdGF0
aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNoYXJhY3Rlcik7CisgICAgICAgICAgICAgICAgYnVm
ZmVyW2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rlcik7CiAgICAgICAgICAgICB9fQog
ICAgICAgICAgICAgcmV0dXJuIGZpbmRQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50
TmFtZShzdGQ6OnNwYW4ge3sgYnVmZmVyIH19LmZpcnN0KGNoYXJhY3RlcnMuc2l6ZSgpKSk7CiAg
ICAgICAgIH19IiIiKQpAQCAtNDc2LDcgKzQ3Niw3IEBAIGNsYXNzIEdQZXJmT3V0cHV0R2VuZXJh
dG9yOgogICAgIGRlZiB3cml0ZV9wYXJzaW5nX2Z1bmN0aW9uX2RlZmluaXRpb25zX2Zvcl9wc2V1
ZG9fZWxlbWVudChzZWxmLCB3cml0ZXIpOgogICAgICAgICBsb25nZXN0X2tleXdvcmRfbGVuZ3Ro
ID0gbGVuKG1heChzZWxmLm1hcHBpbmcsIGtleT1sZW4pKQogICAgICAgICB3cml0ZXIud3JpdGVf
YmxvY2soIiIiCi0gICAgICAgICAgICBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q1NTU2Vs
ZWN0b3I6OlBzZXVkb0VsZW1lbnQ+IGZpbmRQc2V1ZG9FbGVtZW50TmFtZShzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQorICAgICAgICAgICAgc3RhdGljIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50PiBmaW5kUHNldWRvRWxl
bWVudE5hbWUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGVudHJ5ID0gU2VsZWN0b3JQc2V1ZG9FbGVtZW50
TWFwSGFzaDo6aW5fd29yZF9zZXQoYnl0ZUNhc3Q8Y2hhcj4oY2hhcmFjdGVycy5kYXRhKCkpLCBj
aGFyYWN0ZXJzLnNpemUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS0+dHlw
ZTsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBjbGFzcyBHUGVyZk91dHB1dEdlbmVyYXRvcjoKICAgICAg
ICAgICAgIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxDU1NTZWxlY3Rvcjo6UHNldWRvRWxl
bWVudD4gZmluZFBzZXVkb0VsZW1lbnROYW1lKHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hh
cmFjdGVycykKICAgICAgICAgICAgIHt7CiAgICAgICAgICAgICAgICAgY29uc3RleHByIHVuc2ln
bmVkIG1heEtleXdvcmRMZW5ndGggPSB7bG9uZ2VzdF9rZXl3b3JkX2xlbmd0aH07Ci0gICAgICAg
ICAgICAgICAgc3RkOjphcnJheTxMYXRpbjFDaGFyYWN0ZXIsIG1heEtleXdvcmRMZW5ndGg+IGJ1
ZmZlcjsKKyAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PExDaGFyLCBtYXhLZXl3b3JkTGVuZ3Ro
PiBidWZmZXI7CiAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnMuc2l6ZSgpID4gbWF4S2V5
d29yZExlbmd0aCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApA
QCAtNDk2LDcgKzQ5Niw3IEBAIGNsYXNzIEdQZXJmT3V0cHV0R2VuZXJhdG9yOgogICAgICAgICAg
ICAgICAgICAgICBpZiAoIWlzTGF0aW4xKGNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltp
XSA9IHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oY2hhcmFjdGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyW2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rlcik7CiAgICAg
ICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICByZXR1cm4gZmluZFBzZXVkb0VsZW1lbnRO
YW1lKHN0ZDo6c3BhbiB7eyBidWZmZXIgfX0uZmlyc3QoY2hhcmFjdGVycy5zaXplKCkpKTsKICAg
ICAgICAgICAgIH19IiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3NjcmlwdHMv
dGVzdC9UZXN0Q1NTUHJvcGVydGllc1Jlc3VsdHMvQ1NTUHJvcGVydHlOYW1lcy5ncGVyZiBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnRpZXNSZXN1bHRzL0NT
U1Byb3BlcnR5TmFtZXMuZ3BlcmYKaW5kZXggNzM5NDNiZjUzNzYyLi4wYzhhYWEzMTk3MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnRp
ZXNSZXN1bHRzL0NTU1Byb3BlcnR5TmFtZXMuZ3BlcmYKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydGllc1Jlc3VsdHMvQ1NTUHJvcGVydHlOYW1lcy5n
cGVyZgpAQCAtNDEwLDcgKzQxMCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVTdHJpbmcoQ1NT
UHJvcGVydHlJRCBpZCkKIAogU3RyaW5nIG5hbWVGb3JJREwoQ1NTUHJvcGVydHlJRCBpZCkKIHsK
LSAgICBMYXRpbjFDaGFyYWN0ZXIgY2hhcmFjdGVyc1ttYXhDU1NQcm9wZXJ0eU5hbWVMZW5ndGhd
OworICAgIExDaGFyIGNoYXJhY3RlcnNbbWF4Q1NTUHJvcGVydHlOYW1lTGVuZ3RoXTsKICAgICBj
b25zdCBjaGFyKiBuYW1lRm9yQ1NTID0gbmFtZUxpdGVyYWwoaWQpOwogICAgIGlmICghbmFtZUZv
ckNTUykKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC00MjYsNyArNDI2LDcgQEAg
U3RyaW5nIG5hbWVGb3JJREwoQ1NTUHJvcGVydHlJRCBpZCkKICAgICAgICAgfQogICAgICAgICAq
bmV4dENoYXJhY3RlcisrID0gY2hhcmFjdGVyOwogICAgIH0KLSAgICByZXR1cm4gc3RkOjpzcGFu
PGNvbnN0IExhdGluMUNoYXJhY3Rlcj4geyBjaGFyYWN0ZXJzLCBuZXh0Q2hhcmFjdGVyIH07Cisg
ICAgcmV0dXJuIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4geyBjaGFyYWN0ZXJzLCBuZXh0Q2hhcmFj
dGVyIH07CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01T
dHJpbmdNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJpbmdNYXAuY3Bw
CmluZGV4IDNlYWQ5ZWNlZDg2ZC4uOGJlMGJkZDZhZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFzZXRET01TdHJpbmdNYXAuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIEF0b21T
dHJpbmcgY29udmVydFByb3BlcnR5TmFtZVRvQXR0cmlidXRlTmFtZShjb25zdCBTdHJpbmcmIG5h
bWUpCiAKICAgICBTdHJpbmdJbXBsKiBuYW1lSW1wbCA9IG5hbWUuaW1wbCgpOwogICAgIGlmIChu
YW1lSW1wbC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjb252ZXJ0UHJvcGVydHlOYW1lVG9B
dHRyaWJ1dGVOYW1lPExhdGluMUNoYXJhY3Rlcj4oKm5hbWVJbXBsKTsKKyAgICAgICAgcmV0dXJu
IGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWU8TENoYXI+KCpuYW1lSW1wbCk7CiAg
ICAgcmV0dXJuIGNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWU8Y2hhcjE2X3Q+KCpu
YW1lSW1wbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkyZDM5Y2U5ZjM0Ny4u
MjczMTNjODA5Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE4NjYsNyArMTg2Niw3
IEBAIGVudW0gY2xhc3MgQ3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXJLaW5kIDogdWludDhfdCB7
CiAgICAgVXBwZXIsCiB9OwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBDdXN0b21FbGVtZW50TmFt
ZUNoYXJhY3RlcktpbmQgY3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXJLaW5kKExhdGluMUNoYXJh
Y3RlciBjaGFyYWN0ZXIpCitzdGF0aWMgQUxXQVlTX0lOTElORSBDdXN0b21FbGVtZW50TmFtZUNo
YXJhY3RlcktpbmQgY3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXJLaW5kKExDaGFyIGNoYXJhY3Rl
cikKIHsKICAgICB1c2luZyBLaW5kID0gQ3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXJLaW5kOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxLaW5kLCAyNTY+IHRhYmxlIHsKQEAgLTcy
MzgsNyArNzIzOCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUNhY2hlZENvb2tpZXNFbmFibGVk
KCkKICAgICB9KTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZE5hbWVOb25BU0NJSShzdGQ6OnNw
YW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQorc3RhdGljIGJvb2wgaXNWYWxp
ZE5hbWVOb25BU0NJSShzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMpCiB7CiAgICAg
aWYgKCFpc1ZhbGlkTmFtZVN0YXJ0KGNoYXJhY3RlcnNbMF0pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC03MjgwLDcgKzcyODAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVB
U0NJSShzdGQ6OnNwYW48Y29uc3QgQ2hhclR5cGU+IGNoYXJhY3RlcnMpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWROYW1lQVNDSUlXaXRob3V0Q29sb24oc3RkOjpz
cGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gY2hhcmFjdGVycykKK3N0YXRpYyBib29sIGlzVmFs
aWROYW1lQVNDSUlXaXRob3V0Q29sb24oc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJz
KQogewogICAgIGF1dG8gYyA9IGNoYXJhY3RlcnMuZnJvbnQoKTsKICAgICBpZiAoIShpc0FTQ0lJ
QWxwaGEoYykgfHwgYyA9PSAnXycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nw
YWNlU3BsaXRTdHJpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwCmluZGV4IGM2OGNmZjY5NTUxNS4uZGYwYTZmYTZjNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NwYWNlU3BsaXRTdHJpbmcuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBTcGFjZVNwbGl0
U3RyaW5nOjpzcGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1ZShTdHJpbmdWaWV3IHNwYWNlU3Bs
aXRTdHJpbmcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHZhbHVlLmlzOEJpdCgp
KQotICAgICAgICByZXR1cm4gc3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWVJbnRlcm5hbDxM
YXRpbjFDaGFyYWN0ZXI+KHNob3VsZEZvbGRDYXNlID09IFNob3VsZEZvbGRDYXNlOjpZZXMgPyBT
dHJpbmdWaWV3IHsgc3BhY2VTcGxpdFN0cmluZy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIH0g
OiBzcGFjZVNwbGl0U3RyaW5nLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBzcGFjZVNwbGl0U3Ry
aW5nQ29udGFpbnNWYWx1ZUludGVybmFsPExDaGFyPihzaG91bGRGb2xkQ2FzZSA9PSBTaG91bGRG
b2xkQ2FzZTo6WWVzID8gU3RyaW5nVmlldyB7IHNwYWNlU3BsaXRTdHJpbmcuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKSB9IDogc3BhY2VTcGxpdFN0cmluZywgdmFsdWUpOwogICAgIHJldHVybiBz
cGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1ZUludGVybmFsPGNoYXIxNl90PihzaG91bGRGb2xk
Q2FzZSA9PSBTaG91bGRGb2xkQ2FzZTo6WWVzID8gU3RyaW5nVmlldyB7IHNwYWNlU3BsaXRTdHJp
bmcuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSB9IDogc3BhY2VTcGxpdFN0cmluZywgdmFsdWUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDhmM2ZhNzE2NjdlNS4uZGIwMzc5
NDgxNDNkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtMTEyMiw3ICsxMTIyLDcgQEAg
c3ViIHByaW50Tm9kZU5hbWVIZWFkZXJGaWxlCiAgICAgcHJpbnQgRiAifSAvLyBuYW1lc3BhY2Ug
QXR0cmlidXRlTmFtZXNcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIk5vZGVO
YW1lIGZpbmROb2RlTmFtZShOYW1lc3BhY2UsIGNvbnN0IFN0cmluZyYpO1xuIjsKLSAgICBwcmlu
dCBGICJFbGVtZW50TmFtZSBmaW5kSFRNTEVsZW1lbnROYW1lKHN0ZDo6c3Bhbjxjb25zdCBMYXRp
bjFDaGFyYWN0ZXI+KTtcbiI7CisgICAgcHJpbnQgRiAiRWxlbWVudE5hbWUgZmluZEhUTUxFbGVt
ZW50TmFtZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+KTtcbiI7CiAgICAgcHJpbnQgRiAiRWxlbWVu
dE5hbWUgZmluZEhUTUxFbGVtZW50TmFtZShzdGQ6OnNwYW48Y29uc3QgY2hhcjE2X3Q+KTtcbiI7
CiAgICAgcHJpbnQgRiAiRWxlbWVudE5hbWUgZmluZEhUTUxFbGVtZW50TmFtZShjb25zdCBTdHJp
bmcmKTtcbiI7CiAgICAgcHJpbnQgRiAiRWxlbWVudE5hbWUgZmluZFNWR0VsZW1lbnROYW1lKGNv
bnN0IFN0cmluZyYpO1xuIjsKQEAgLTEyNjIsNyArMTI2Miw3IEBAIHN1YiBwcmludE5vZGVOYW1l
Q3BwRmlsZQogICAgIHByaW50IEYgIiAgICByZXR1cm4gZmluZE5vZGVOYW1lRnJvbUJ1ZmZlcihu
cywgbmFtZS5zcGFuMTYoKSk7XG4iOwogICAgIHByaW50IEYgIn1cbiI7CiAgICAgcHJpbnQgRiAi
XG4iOwotICAgIHByaW50IEYgIkVsZW1lbnROYW1lIGZpbmRIVE1MRWxlbWVudE5hbWUoc3RkOjpz
cGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gYnVmZmVyKVxuIjsKKyAgICBwcmludCBGICJFbGVt
ZW50TmFtZSBmaW5kSFRNTEVsZW1lbnROYW1lKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gYnVmZmVy
KVxuIjsKICAgICBwcmludCBGICJ7XG4iOwogICAgIHByaW50IEYgIiAgICByZXR1cm4gZmluZEhU
TUxOb2RlTmFtZShidWZmZXIpO1xuIjsKICAgICBwcmludCBGICJ9XG4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKaW5kZXggMWM0Yzc2MGQ4NDQ5Li41NDU0NzU0OWQzY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBAIFN0cmluZyBzdHJpbmdX
aXRoUmViYWxhbmNlZFdoaXRlc3BhY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RhcnRJ
c1N0YXJ0T2ZQCiAgICAgICAgICAgICBwcmV2aW91c0NoYXJhY3Rlcldhc1NwYWNlID0gZmFsc2U7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBMYXRpbjFDaGFyYWN0
ZXIgc2VsZWN0ZWRXaGl0ZXNwYWNlQ2hhcmFjdGVyOworICAgICAgICBMQ2hhciBzZWxlY3RlZFdo
aXRlc3BhY2VDaGFyYWN0ZXI7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoZXJlIGlz
IG5vIG5leHQgc2libGluZyB0ZXh0IG5vZGUuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIzMTYzCiAgICAgICAgIGlmIChwcmV2aW91c0NoYXJhY3Rlcldhc1Nw
YWNlIHx8ICghaSAmJiBzdGFydElzU3RhcnRPZlBhcmFncmFwaCkgfHwgKGkgPT0gbGVuZ3RoIC0g
MSAmJiBzaG91bGRFbWl0TkJTUGJlZm9yZUVuZCkpIHsKICAgICAgICAgICAgIHNlbGVjdGVkV2hp
dGVzcGFjZUNoYXJhY3RlciA9IG5vQnJlYWtTcGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggNTk0NzYxZjIyMjk1Li4zOTM4NWI0ZDM0NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kQ2hhcmFjdGVyc1Jl
cGxhY2luZ0VudGl0aWVzKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkKLSAgICAgICAgYXBwZW5kQ2hhcmFjdGVyc1JlcGxh
Y2luZ0VudGl0aWVzSW50ZXJuYWw8TGF0aW4xQ2hhcmFjdGVyPihyZXN1bHQsIHNvdXJjZSwgZW50
aXR5TWFzayk7CisgICAgICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllc0ludGVy
bmFsPExDaGFyPihyZXN1bHQsIHNvdXJjZSwgZW50aXR5TWFzayk7CiAgICAgZWxzZQogICAgICAg
ICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXNJbnRlcm5hbDxjaGFyMTZfdD4ocmVz
dWx0LCBzb3VyY2UsIGVudGl0eU1hc2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9Ob2RlSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvTm9kZUhUTUxDb252ZXJ0ZXIubW0KaW5kZXggNTc1ZDUyMDIyYjUzLi42NjZlMmQx
NTY2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvTm9kZUhUTUxD
b252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Ob2RlSFRNTENv
bnZlcnRlci5tbQpAQCAtMjEzOSw3ICsyMTM5LDcgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJv
Y2Vzc1RleHQoVGV4dCYgdGV4dCkKICAgICAgICAgdW5zaWduZWQgY291bnQgPSBvcmlnaW5hbFN0
cmluZy5sZW5ndGgoKTsKICAgICAgICAgYm9vbCB3YXNMZWFkaW5nID0gdHJ1ZTsKICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBMYXRpbjFDaGFyYWN0ZXIgbm9CcmVha1Nw
YWNlUmVwcmVzZW50YXRpb24gPSAwOworICAgICAgICBMQ2hhciBub0JyZWFrU3BhY2VSZXByZXNl
bnRhdGlvbiA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CiAgICAgICAgICAgICBjaGFyMTZfdCBjID0gb3JpZ2luYWxTdHJpbmcuY2hhcmFjdGVyQXQo
aSk7CiAgICAgICAgICAgICBib29sIGlzV2hpdGVzcGFjZSA9IGMgPT0gJyAnIHx8IGMgPT0gJ1xu
JyB8fCBjID09ICdccicgfHwgYyA9PSAnXHQnIHx8IGMgPT0gMHhjIHx8IGMgPT0gMHgyMDBiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbQppbmRleCBmNTkzOGZjMjExMTguLjYyNTUwMGMyYjkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTM4Niw3ICszODYsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMoTG9jYWxGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbgogICAgICAgICAvLyBTZWUg
YEhUTUxDb252ZXJ0ZXIubW1gIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICAgIGlmIChpbmZvLmZp
bGVOYW1lLnN0YXJ0c1dpdGgoV2ViQ29udGVudFJlYWRlcjo6cGxhY2Vob2xkZXJBdHRhY2htZW50
RmlsZW5hbWVQcmVmaXgpKSB7CiAgICAgICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS5k
b2N1bWVudCgpOwotICAgICAgICAgICAgaWYgKFJlZlB0ciBleGlzdGluZ0F0dGFjaG1lbnQgPSBk
b2N1bWVudC0+YXR0YWNobWVudEZvcklkZW50aWZpZXIoeyBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0
ZXI+KGluZm8uZGF0YS0+c3BhbigpKSB9KSkgeworICAgICAgICAgICAgaWYgKFJlZlB0ciBleGlz
dGluZ0F0dGFjaG1lbnQgPSBkb2N1bWVudC0+YXR0YWNobWVudEZvcklkZW50aWZpZXIoeyBpbmZv
LmRhdGEtPnNwYW4oKSB9KSkgewogICAgICAgICAgICAgICAgIHBhcmVudC0+cmVwbGFjZUNoaWxk
KCpleGlzdGluZ0F0dGFjaG1lbnQuZ2V0KCksIFdURk1vdmUob3JpZ2luYWxFbGVtZW50KSk7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA5ODI2OTllM2RlODAuLmIwMDFmNDk2
N2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBA
IC0zMzMsNyArMzMzLDcgQEAgU3RyaW5nIEZpbGVSZWFkZXJMb2FkZXI6OnN0cmluZ1Jlc3VsdCgp
CiAgICAgICAgIC8vIE5vIGNvbnZlcnNpb24gaXMgbmVlZGVkLgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFJlYWRBc0JpbmFyeVN0cmluZzoKLSAgICAgICAgbV9zdHJpbmdSZXN1bHQgPSBieXRl
Q2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHByb3RlY3RlZFJhd0RhdGEoKS0+c3BhbigpLmZpcnN0KG1f
Ynl0ZXNMb2FkZWQpKTsKKyAgICAgICAgbV9zdHJpbmdSZXN1bHQgPSBwcm90ZWN0ZWRSYXdEYXRh
KCktPnNwYW4oKS5maXJzdChtX2J5dGVzTG9hZGVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWFkQXNUZXh0OgogICAgICAgICBjb252ZXJ0VG9UZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IGMyOTBkMTc1MWIzMC4uOWQxOGY4
ODRjYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBh
cnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBTdHJpbmcmIGlucHV0TGluZSkKICAgICBMaXN0UmVz
dWx0IHJlc3VsdDsKICAgICBDU3RyaW5nIGxhdGluMUlucHV0ID0gaW5wdXRMaW5lLmxhdGluMSgp
OwogCi0gICAgRlRQRW50cnlUeXBlIHR5cGVSZXN1bHQgPSBwYXJzZU9uZUZUUExpbmUoYnl0ZUNh
c3Q8TGF0aW4xQ2hhcmFjdGVyPihsYXRpbjFJbnB1dC5tdXRhYmxlU3BhbigpKSwgbV9saXN0U3Rh
dGUsIHJlc3VsdCk7CisgICAgRlRQRW50cnlUeXBlIHR5cGVSZXN1bHQgPSBwYXJzZU9uZUZUUExp
bmUoYnl0ZUNhc3Q8TENoYXI+KGxhdGluMUlucHV0Lm11dGFibGVTcGFuKCkpLCBtX2xpc3RTdGF0
ZSwgcmVzdWx0KTsKIAogICAgIC8vIEZUUE1pc2NFbnRyeSBpcyBhIGNvbW1lbnQgb3IgdXNhZ2Ug
c3RhdGlzdGljIHdoaWNoIHdlIGRvbid0IGNhcmUgYWJvdXQsIGFuZCBqdW5rIGlzIGludmFsaWQg
ZGF0YSAtIGJhaWwgaW4gdGhlc2UgMiBjYXNlcwogICAgIGlmICh0eXBlUmVzdWx0ID09IEZUUE1p
c2NFbnRyeSB8fCB0eXBlUmVzdWx0ID09IEZUUEp1bmtFbnRyeSkKQEAgLTI5NCw3ICsyOTQsNyBA
QCBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBIVE1MRG9jdW1lbnRQYXJzZXI6
Omluc2VydChTdHJpbmcoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPih0ZW1wbGF0ZURvY3VtZW50
RGF0YS5nZXQoKS0+c3BhbigpKSkpOworICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KFN0
cmluZyh0ZW1wbGF0ZURvY3VtZW50RGF0YS5nZXQoKS0+c3BhbigpKSk7CiAKICAgICBSZWYgZG9j
dW1lbnQgPSAqdGhpcy0+ZG9jdW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5jcHAKaW5kZXggZmQ1YWE3NDYyZTBmLi5hMTdhZjRiZDBiYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBjb25zdGV4cHIgaW50IHNlY29uZHNQZXJIb3VyID0gMzYwMDsKIGNv
bnN0ZXhwciBpbnQgc2Vjb25kc1Blck1pbnV0ZSA9IDYwOwogY29uc3RleHByIHVuc2lnbmVkIG5w
dElkZW50aWZpZXJMZW5ndGggPSA0OyAvLyAibnB0OiIKIAotc3RhdGljIFN0cmluZyBjb2xsZWN0
RGlnaXRzKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGlucHV0LCB1bnNpZ25lZCYg
cG9zaXRpb24pCitzdGF0aWMgU3RyaW5nIGNvbGxlY3REaWdpdHMoc3RkOjpzcGFuPGNvbnN0IExD
aGFyPiBpbnB1dCwgdW5zaWduZWQmIHBvc2l0aW9uKQogewogICAgIFN0cmluZ0J1aWxkZXIgZGln
aXRzOwogCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBTdHJpbmcgY29sbGVjdERpZ2l0cyhzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBpbnB1dCwgdW5zaWduZWQmIHBvCiAgICAgcmV0
dXJuIGRpZ2l0cy50b1N0cmluZygpOwogfQogCi1zdGF0aWMgU3RyaW5nVmlldyBjb2xsZWN0RnJh
Y3Rpb24oc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gaW5wdXQsIHVuc2lnbmVkJiBw
b3NpdGlvbikKK3N0YXRpYyBTdHJpbmdWaWV3IGNvbGxlY3RGcmFjdGlvbihzdGQ6OnNwYW48Y29u
c3QgTENoYXI+IGlucHV0LCB1bnNpZ25lZCYgcG9zaXRpb24pCiB7CiAgICAgLy8gaHR0cDovL3d3
dy5pZXRmLm9yZy9yZmMvcmZjMjMyNi50eHQKICAgICAvLyBbICIuIiAqRElHSVQgXQpAQCAtMTky
LDcgKzE5Miw3IEBAIHZvaWQgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VUaW1lRnJhZ21l
bnQoKQogICAgIG1fZnJhZ21lbnRzLmNsZWFyKCk7CiB9CiAKLWJvb2wgTWVkaWFGcmFnbWVudFVS
SVBhcnNlcjo6cGFyc2VOUFRGcmFnbWVudChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVy
PiB0aW1lU3RyaW5nLCBNZWRpYVRpbWUmIHN0YXJ0VGltZSwgTWVkaWFUaW1lJiBlbmRUaW1lKQor
Ym9vbCBNZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpwYXJzZU5QVEZyYWdtZW50KHN0ZDo6c3Bhbjxj
b25zdCBMQ2hhcj4gdGltZVN0cmluZywgTWVkaWFUaW1lJiBzdGFydFRpbWUsIE1lZGlhVGltZSYg
ZW5kVGltZSkKIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwogICAgIGlmICh0aW1lU3RyaW5n
LnNpemUoKSA+PSBucHRJZGVudGlmaWVyTGVuZ3RoICYmIHRpbWVTdHJpbmdbMF0gPT0gJ24nICYm
IHRpbWVTdHJpbmdbMV0gPT0gJ3AnICYmIHRpbWVTdHJpbmdbMl0gPT0gJ3QnICYmIHRpbWVTdHJp
bmdbM10gPT0gJzonKQpAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgTWVkaWFGcmFnbWVudFVSSVBh
cnNlcjo6cGFyc2VOUFRGcmFnbWVudChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiB0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFy
c2VOUFRUaW1lKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHRpbWVTdHJpbmcsIHVu
c2lnbmVkJiBvZmZzZXQsIE1lZGlhVGltZSYgdGltZSkKK2Jvb2wgTWVkaWFGcmFnbWVudFVSSVBh
cnNlcjo6cGFyc2VOUFRUaW1lKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gdGltZVN0cmluZywgdW5z
aWduZWQmIG9mZnNldCwgTWVkaWFUaW1lJiB0aW1lKQogewogICAgIGVudW0gTW9kZSB7IG1pbnV0
ZXMsIGhvdXJzIH07CiAgICAgTW9kZSBtb2RlID0gbWludXRlczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmgKaW5kZXggMTM1NzEzMDUxNTFiLi44ZDQ0YWVk
MjNmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5o
CkBAIC00Nyw4ICs0Nyw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgZW51bSBUaW1lRm9ybWF0IHsg
Tm9uZSwgSW52YWxpZCwgTm9ybWFsUGxheVRpbWUsIFNNUFRFVGltZUNvZGUsIFdhbGxDbG9ja1Rp
bWVDb2RlIH07CiAgICAgdm9pZCBwYXJzZVRpbWVGcmFnbWVudCgpOwotICAgIGJvb2wgcGFyc2VO
UFRGcmFnbWVudChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiwgTWVkaWFUaW1lJiBz
dGFydFRpbWUsIE1lZGlhVGltZSYgZW5kVGltZSk7Ci0gICAgYm9vbCBwYXJzZU5QVFRpbWUoc3Rk
OjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4sIHVuc2lnbmVkJiBvZmZzZXQsIE1lZGlhVGlt
ZSYpOworICAgIGJvb2wgcGFyc2VOUFRGcmFnbWVudChzdGQ6OnNwYW48Y29uc3QgTENoYXI+LCBN
ZWRpYVRpbWUmIHN0YXJ0VGltZSwgTWVkaWFUaW1lJiBlbmRUaW1lKTsKKyAgICBib29sIHBhcnNl
TlBUVGltZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+LCB1bnNpZ25lZCYgb2Zmc2V0LCBNZWRpYVRp
bWUmKTsKIAogICAgIFVSTCBtX3VybDsKICAgICBUaW1lRm9ybWF0IG1fdGltZUZvcm1hdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlckZh
c3RQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ckZhc3RQYXRoLmNwcAppbmRleCAyOTdmYmEzYzMwNjIuLjMwNDE1ZTQyYTgzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyRmFzdFBhdGgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlckZh
c3RQYXRoLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NoYXJBZnRlclVucXVvdGVkQXR0cmlidXRlCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogY2xhc3MgSFRNTEZhc3RQYXRoUGFyc2Vy
IHsKICAgICB1c2luZyBDaGFyYWN0ZXJTcGFuID0gc3RkOjpzcGFuPGNvbnN0IENoYXJhY3RlclR5
cGU+OwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8Q2hhcmFjdGVyVHlwZSwgY2hh
cjE2X3Q+IHx8IHN0ZDo6aXNfc2FtZV92PENoYXJhY3RlclR5cGUsIExhdGluMUNoYXJhY3Rlcj4p
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8Q2hhcmFjdGVyVHlwZSwgY2hhcjE2
X3Q+IHx8IHN0ZDo6aXNfc2FtZV92PENoYXJhY3RlclR5cGUsIExDaGFyPik7CiAKIHB1YmxpYzoK
ICAgICBIVE1MRmFzdFBhdGhQYXJzZXIoQ2hhcmFjdGVyU3BhbiBzb3VyY2UsIERvY3VtZW50JiBk
b2N1bWVudCwgQ29udGFpbmVyTm9kZSYgZGVzdGluYXRpb25QYXJlbnQpCkBAIC00NjQsNyArNDY0
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZSBmaXJzdCB0cnkgdG8gc2NhbiB0ZXh0IGFzIGFuIHVu
bW9kaWZpZWQgc3Vic2VxdWVuY2Ugb2YgdGhlIGlucHV0LgogICAgIC8vIEhvd2V2ZXIsIGlmIHRo
ZXJlIGFyZSBlc2NhcGUgc2VxdWVuY2VzLCB3ZSBoYXZlIHRvIGNvcHkgdGhlIHRleHQgdG8gYQog
ICAgIC8vIHNlcGFyYXRlIGJ1ZmZlciBhbmQgd2UgbWlnaHQgZ28gb3V0c2lkZSBvZiBgQ2hhcmAg
cmFuZ2UgaWYgd2UgYXJlIGluIGFuCi0gICAgLy8gYExhdGluMUNoYXJhY3RlcmAgcGFyc2VyLgor
ICAgIC8vIGBMQ2hhcmAgcGFyc2VyLgogICAgIFN0cmluZyBzY2FuVGV4dCgpCiAgICAgewogICAg
ICAgICBhdXRvIHN0YXJ0ID0gbV9wYXJzaW5nQnVmZmVyLnNwYW4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVudGl0eVBhcnNlci5jcHAKaW5kZXggYTBmOWEyYTRiNmY5
Li4zZjVhMmE0ODcwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbnRpdHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxF
bnRpdHlQYXJzZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IFN0cmluZ1BhcnNpbmdCdWZmZXJTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJU
eXBlPiYpOwogCiAgICAgc3RhdGljIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgY2hhcjE2X3QgY3VycmVudENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmF0
RW5kKCkgPyAwIDogY2hhcjE2X3QgeyAqbV9zb3VyY2UgfTsgfQorICAgIGNoYXIxNl90IGN1cnJl
bnRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5hdEVuZCgpID8gMCA6ICptX3Nv
dXJjZTsgfQogICAgIHZvaWQgYWR2YW5jZSgpIHsgbV9zb3VyY2UuYWR2YW5jZSgpOyB9CiAgICAg
dm9pZCBwdXNoRXZlcnl0aGluZ0JhY2soKSB7IG1fc291cmNlLnNldFBvc2l0aW9uKG1fc3RhcnRQ
b3NpdGlvbik7IH0KICAgICB2b2lkIHB1c2hCYWNrQnV0S2VlcCh1bnNpZ25lZCBrZWVwQ291bnQp
IHsgbV9zb3VyY2Uuc2V0UG9zaXRpb24obV9zdGFydFBvc2l0aW9uLnN1YnNwYW4oa2VlcENvdW50
KSk7IH0KQEAgLTI4MSw5ICsyODEsOSBAQCBEZWNvZGVkSFRNTEVudGl0eSBjb25zdW1lSFRNTEVu
dGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY2hhcjE2X3QgYWRkaXRpb25hbAogICAgIHJl
dHVybiBjb25zdW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmdTb3VyY2UgeyBzb3VyY2UgfSwg
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpOwogfQogCi1EZWNvZGVkSFRNTEVudGl0eSBjb25z
dW1lSFRNTEVudGl0eShTdHJpbmdQYXJzaW5nQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4mIHNvdXJj
ZSkKK0RlY29kZWRIVE1MRW50aXR5IGNvbnN1bWVIVE1MRW50aXR5KFN0cmluZ1BhcnNpbmdCdWZm
ZXI8TENoYXI+JiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGNvbnN1bWVIVE1MRW50aXR5KFN0cmlu
Z1BhcnNpbmdCdWZmZXJTb3VyY2U8TGF0aW4xQ2hhcmFjdGVyPiB7IHNvdXJjZSB9LCAwKTsKKyAg
ICByZXR1cm4gY29uc3VtZUhUTUxFbnRpdHkoU3RyaW5nUGFyc2luZ0J1ZmZlclNvdXJjZTxMQ2hh
cj4geyBzb3VyY2UgfSwgMCk7CiB9CiAKIERlY29kZWRIVE1MRW50aXR5IGNvbnN1bWVIVE1MRW50
aXR5KFN0cmluZ1BhcnNpbmdCdWZmZXI8Y2hhcjE2X3Q+JiBzb3VyY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRW50aXR5UGFyc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRW50aXR5UGFyc2VyLmgKaW5kZXggYjliNGM5NTA0ZTlkLi45
OGQwNTFmNzliZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxF
bnRpdHlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRW50aXR5
UGFyc2VyLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxzcGFuPgogI2luY2x1ZGUgPHVu
aWNvZGUvdW1hY2hpbmUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0xhdGluMUNoYXJhY3Rlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTZWdtZW50ZWRT
dHJpbmc7CiBEZWNvZGVkSFRNTEVudGl0eSBjb25zdW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJp
bmcmLCBjaGFyMTZfdCBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IDApOwogCiAvLyBUaGlz
IGZ1bmN0aW9uIGFzc3VtZXMgdGhlIHNvdXJjZSBpcyBjb21wbGV0ZSwgYW5kIGRvZXMgbm90IGV4
cGVjdCBhIG51bGwgY2hhcmFjdGVyLgotRGVjb2RlZEhUTUxFbnRpdHkgY29uc3VtZUhUTUxFbnRp
dHkoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+Jik7CitEZWNvZGVkSFRNTEVu
dGl0eSBjb25zdW1lSFRNTEVudGl0eShTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwogRGVj
b2RlZEhUTUxFbnRpdHkgY29uc3VtZUhUTUxFbnRpdHkoU3RyaW5nUGFyc2luZ0J1ZmZlcjxjaGFy
MTZfdD4mKTsKIAogLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayBmb3IgIm5vdCBlbm91
Z2ggY2hhcmFjdGVycyIgYXQgYWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTE5hbWVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5h
bWVDYWNoZS5oCmluZGV4IDIzNTVlYTkxM2VhZi4uYzBhMGYwNGVkOWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTmFtZUNhY2hlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTE5hbWVDYWNoZS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1ha2VRdWFsaWZpZWROYW1lKHN0cmluZyk7CiAgICAgfQogCi0g
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUXVhbGlmaWVkTmFtZSBtYWtlQXR0cmlidXRlUXVhbGlm
aWVkTmFtZShzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzdHJpbmcpCisgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgUXVhbGlmaWVkTmFtZSBtYWtlQXR0cmlidXRlUXVhbGlmaWVkTmFt
ZShzdGQ6OnNwYW48Y29uc3QgTENoYXI+IHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBt
YWtlUXVhbGlmaWVkTmFtZShzdHJpbmcpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbWFrZUF0b21TdHJpbmcoc3RyaW5nKTsKICAgICB9CiAKLSAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3RyaW5nIG1ha2VBdHRyaWJ1dGVWYWx1ZShzdGQ6OnNw
YW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzdHJpbmcpCisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgQXRvbVN0cmluZyBtYWtlQXR0cmlidXRlVmFsdWUoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBz
dHJpbmcpCiAgICAgewogICAgICAgICByZXR1cm4gbWFrZUF0b21TdHJpbmcoc3RyaW5nKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5k
ZXggYzk0ZmYyODc4MzAzLi5hZDgwYTcwNjU1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBpbmxpbmUgYm9v
bCBpc0hUTUxMaW5lQnJlYWsoY2hhcjE2X3QgY2hhcmFjdGVyKQogQUxXQVlTX0lOTElORSBib29s
IGNvbnRhaW5zSFRNTExpbmVCcmVhayhTdHJpbmdWaWV3IHZpZXcpCiB7CiAgICAgaWYgKHZpZXcu
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFDaGFyYWN0
ZXIsICdccicsICdcbic+KHZpZXcuc3BhbjgoKSk7CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXJz
Q29udGFpbjxMQ2hhciwgJ1xyJywgJ1xuJz4odmlldy5zcGFuOCgpKTsKICAgICByZXR1cm4gY2hh
cmFjdGVyc0NvbnRhaW48Y2hhcjE2X3QsICdccicsICdcbic+KHZpZXcuc3BhbjE2KCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCmlu
ZGV4IGNiNDBkZjkwNDRlYy4uNTRkYjcxZThhZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFZlY3Rv
cjxJbWFnZUNhbmRpZGF0ZT4gcGFyc2VJbWFnZUNhbmRpZGF0ZXNGcm9tU3Jjc2V0QXR0cmlidXRl
KFN0cmluZ1ZpZXcgYXR0cmliCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBy
ZXBsYWNpbmcgdGhlIGRpcmVjdCBwb2ludGVycyBpbiB0aGUgcGFyc2luZyBwcm9jZXNzIHdpdGgg
U3RyaW5nVmlldyBhbmQgcG9zaXRpb25zLgogICAgIGlmIChhdHRyaWJ1dGUuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBwYXJzZUltYWdlQ2FuZGlkYXRlc0Zyb21TcmNzZXRBdHRyaWJ1dGU8TGF0
aW4xQ2hhcmFjdGVyPihhdHRyaWJ1dGUuc3BhbjgoKSk7CisgICAgICAgIHJldHVybiBwYXJzZUlt
YWdlQ2FuZGlkYXRlc0Zyb21TcmNzZXRBdHRyaWJ1dGU8TENoYXI+KGF0dHJpYnV0ZS5zcGFuOCgp
KTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBwYXJzZUltYWdlQ2FuZGlkYXRlc0Zyb21TcmNz
ZXRBdHRyaWJ1dGU8Y2hhcjE2X3Q+KGF0dHJpYnV0ZS5zcGFuMTYoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IDZmZWY3ZDc0ZmE4YS4uMDgyZDczOTM4MDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtOTgsMTAgKzk4LDEw
IEBAIHB1YmxpYzoKICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3Q7CiAgICAgY29uc3QgQXR0
cmlidXRlTGlzdCYgYXR0cmlidXRlcygpIGNvbnN0OwogCi0gICAgdm9pZCBiZWdpblN0YXJ0VGFn
KExhdGluMUNoYXJhY3Rlcik7CisgICAgdm9pZCBiZWdpblN0YXJ0VGFnKExDaGFyKTsKIAotICAg
IHZvaWQgYmVnaW5FbmRUYWcoTGF0aW4xQ2hhcmFjdGVyKTsKLSAgICB2b2lkIGJlZ2luRW5kVGFn
KGNvbnN0IFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXIsIDMyPiYpOworICAgIHZvaWQgYmVnaW5FbmRU
YWcoTENoYXIpOworICAgIHZvaWQgYmVnaW5FbmRUYWcoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4m
KTsKIAogICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGUoKTsKICAgICB2b2lkIGFwcGVuZFRvQXR0cmli
dXRlTmFtZShjaGFyMTZfdCk7CkBAIC0xMjEsOSArMTIxLDkgQEAgcHVibGljOgogICAgIGNvbnN0
IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdDsKICAgICBib29sIGNoYXJhY3RlcnNJc0Fs
bDhCaXREYXRhKCkgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKExhdGluMUNo
YXJhY3Rlcik7CisgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3RlcihMQ2hhcik7CiAgICAgdm9pZCBh
cHBlbmRUb0NoYXJhY3RlcihjaGFyMTZfdCk7Ci0gICAgdm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihj
b25zdCBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCAzMj4mKTsKKyAgICB2b2lkIGFwcGVuZFRvQ2hh
cmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRUb0NoYXJhY3RlcihzdGQ6OnNwYW48Y29uc3QgQ2hh
cmFjdGVyVHlwZT4pOwogCiAgICAgLy8gQ29tbWVudC4KQEAgLTI1Miw3ICsyNTIsNyBAQCBpbmxp
bmUgdm9pZCBIVE1MVG9rZW46OnNldFNlbGZDbG9zaW5nKCkKICAgICBtX3NlbGZDbG9zaW5nID0g
dHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKExhdGluMUNo
YXJhY3RlciBjaGFyYWN0ZXIpCitpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luU3RhcnRUYWco
TENoYXIgY2hhcmFjdGVyKQogewogICAgIEFTU0VSVChjaGFyYWN0ZXIpOwogICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZTo6VW5pbml0aWFsaXplZCk7CkBAIC0yNjcsNyArMjY3LDcgQEAgaW5saW5l
IHZvaWQgSFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKExhdGluMUNoYXJhY3RlciBjaGFyYWN0ZXIp
CiAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwogfQogCi1pbmxpbmUgdm9pZCBIVE1MVG9r
ZW46OmJlZ2luRW5kVGFnKExhdGluMUNoYXJhY3RlciBjaGFyYWN0ZXIpCitpbmxpbmUgdm9pZCBI
VE1MVG9rZW46OmJlZ2luRW5kVGFnKExDaGFyIGNoYXJhY3RlcikKIHsKICAgICBBU1NFUlQobV90
eXBlID09IFR5cGU6OlVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IFR5cGU6OkVuZFRhZzsK
QEAgLTI4MSw3ICsyODEsNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRW5kVGFnKExh
dGluMUNoYXJhY3RlciBjaGFyYWN0ZXIpCiAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwog
fQogCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRW5kVGFnKGNvbnN0IFZlY3RvcjxMYXRp
bjFDaGFyYWN0ZXIsIDMyPiYgY2hhcmFjdGVycykKK2lubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVn
aW5FbmRUYWcoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCiB7CiAgICAgQVNT
RVJUKG1fdHlwZSA9PSBUeXBlOjpVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBUeXBlOjpF
bmRUYWc7CkBAIC0zNTksNyArMzU5LDcgQEAgaW5saW5lIGJvb2wgSFRNTFRva2VuOjpjaGFyYWN0
ZXJzSXNBbGw4Qml0RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YThCaXRDaGVjayA8PSAw
eEZGOwogfQogCi1pbmxpbmUgdm9pZCBIVE1MVG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKExhdGlu
MUNoYXJhY3RlciBjaGFyYWN0ZXIpCitpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmFwcGVuZFRvQ2hh
cmFjdGVyKExDaGFyIGNoYXJhY3RlcikKIHsKICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlVu
aW5pdGlhbGl6ZWQgfHwgbV90eXBlID09IFR5cGU6OkNoYXJhY3Rlcik7CiAgICAgbV90eXBlID0g
VHlwZTo6Q2hhcmFjdGVyOwpAQCAtMzc0LDcgKzM3NCw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tl
bjo6YXBwZW5kVG9DaGFyYWN0ZXIoY2hhcjE2X3QgY2hhcmFjdGVyKQogICAgIG1fZGF0YThCaXRD
aGVjayB8PSBjaGFyYWN0ZXI7CiB9CiAKLWlubGluZSB2b2lkIEhUTUxUb2tlbjo6YXBwZW5kVG9D
aGFyYWN0ZXIoY29uc3QgVmVjdG9yPExhdGluMUNoYXJhY3RlciwgMzI+JiBjaGFyYWN0ZXJzKQor
aW5saW5lIHZvaWQgSFRNTFRva2VuOjphcHBlbmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8TENo
YXIsIDMyPiYgY2hhcmFjdGVycykKIHsKICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OlVuaW5p
dGlhbGl6ZWQgfHwgbV90eXBlID09IFR5cGU6OkNoYXJhY3Rlcik7CiAgICAgbV90eXBlID0gVHlw
ZTo6Q2hhcmFjdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVy
LmNwcAppbmRleCBmNWY2YjY1MTE4MjcuLjRmNWM5OTU0Mjc4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgaW5s
aW5lIExhdGluMUNoYXJhY3RlciBjb252ZXJ0QVNDSUlBbHBoYVRvTG93ZXIoY2hhcjE2X3QgY2hh
cmFjdGVyKQorc3RhdGljIGlubGluZSBMQ2hhciBjb252ZXJ0QVNDSUlBbHBoYVRvTG93ZXIoY2hh
cjE2X3QgY2hhcmFjdGVyKQogewogICAgIEFTU0VSVChpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSk7
CiAgICAgcmV0dXJuIHRvQVNDSUlMb3dlclVuY2hlY2tlZChjaGFyYWN0ZXIpOwpAQCAtNzIsNyAr
NzIsNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW5pemVyOjpidWZmZXJBU0NJSUNoYXJhY3Rlcihj
aGFyMTZfdCBjaGFyYWN0ZXIpCiB7CiAgICAgQVNTRVJUKGNoYXJhY3RlciAhPSBrRW5kT2ZGaWxl
TWFya2VyKTsKICAgICBBU1NFUlQoaXNBU0NJSShjaGFyYWN0ZXIpKTsKLSAgICBMYXRpbjFDaGFy
YWN0ZXIgbmFycm93ZWRDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgTENoYXIgbmFycm93ZWRD
aGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CiAgICAgbV90b2tlbi5hcHBlbmRUb0NoYXJhY3RlcihuYXJy
b3dlZENoYXJhY3Rlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bml6ZXIuaAppbmRleCAyZmY5MWM0Mjg0YmQuLmZmZTE3NTY5NmVhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaApAQCAtMjAwLDEyICsyMDAsMTIgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8Y2hhcjE2X3QsIDMyPiBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZTsK
IAogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RlbXBvcmFyeS1idWZmZXIK
LSAgICBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyLCAzMj4gbV90ZW1wb3JhcnlCdWZmZXI7CisgICAg
VmVjdG9yPExDaGFyLCAzMj4gbV90ZW1wb3JhcnlCdWZmZXI7CiAKICAgICAvLyBXZSBvY2Nhc2lv
bmFsbHkgd2FudCB0byBlbWl0IGJvdGggYSBjaGFyYWN0ZXIgdG9rZW4gYW5kIGFuIGVuZCB0YWcK
ICAgICAvLyB0b2tlbiAoZS5nLiwgd2hlbiBsZXhpbmcgc2NyaXB0KS4gV2UgYnVmZmVyIHRoZSBu
YW1lIG9mIHRoZSBlbmQgdGFnCiAgICAgLy8gdG9rZW4gaGVyZSBzbyB3ZSByZW1lbWJlciBpdCBu
ZXh0IHRpbWUgd2UgcmUtZW50ZXIgdGhlIHRva2VuaXplci4KLSAgICBWZWN0b3I8TGF0aW4xQ2hh
cmFjdGVyLCAzMj4gbV9idWZmZXJlZEVuZFRhZ05hbWU7CisgICAgVmVjdG9yPExDaGFyLCAzMj4g
bV9idWZmZXJlZEVuZFRhZ05hbWU7CiAKICAgICBjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyBtX29w
dGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKaW5kZXggNWFjNzEyOTRhYzU0Li43NTFkNWRlOGU4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgdGFrZVJlbWFpbmluZ1doaXRlc3BhY2UoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAgICBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVy
LCA4PiB3aGl0ZXNwYWNlOworICAgICAgICBWZWN0b3I8TENoYXIsIDg+IHdoaXRlc3BhY2U7CiAg
ICAgICAgIGRvIHsKICAgICAgICAgICAgIGNoYXIxNl90IGNoYXJhY3RlciA9IG1fdGV4dFswXTsK
ICAgICAgICAgICAgIGlmIChpc0FTQ0lJV2hpdGVzcGFjZShjaGFyYWN0ZXIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAKaW5kZXggZTdmMjkzNTgxYTg0Li5lNzUxNmNj
MTg4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBib29sIFZUVFNjYW5uZXI6OnNjYW4oY2hhciBjKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZUVFNjYW5uZXI6OnNjYW4oc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJh
Y3Rlcj4gY2hhcmFjdGVycykKK2Jvb2wgVlRUU2Nhbm5lcjo6c2NhbihzdGQ6OnNwYW48Y29uc3Qg
TENoYXI+IGNoYXJhY3RlcnMpCiB7CiAgICAgYXV0byBtYXRjaExlbmd0aCA9IG1faXM4Qml0ID8g
bV9kYXRhLmNoYXJhY3RlcnM4LnNpemUoKSA6IG1fZGF0YS5jaGFyYWN0ZXJzMTYuc2l6ZSgpOwog
ICAgIGlmIChtYXRjaExlbmd0aCA8IGNoYXJhY3RlcnMuc2l6ZSgpKQpAQCAtMTc4LDggKzE3OCw4
IEBAIGF1dG8gVlRUU2Nhbm5lcjo6Y3JlYXRlUnVuKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBl
bmQpIGNvbnN0IC0+IFJ1bgogewogICAgIGlmIChtX2lzOEJpdCkgewogICAgICAgICBhdXRvIHNw
YW44ID0gbV9zb3VyY2Uuc3BhbjgoKTsKLSAgICAgICAgYXV0byogc3RhcnQ4ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgTGF0aW4xQ2hhcmFjdGVyKj4oc3RhcnQpOwotICAgICAgICBhdXRvKiBlbmQ4ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgTGF0aW4xQ2hhcmFjdGVyKj4oZW5kKTsKKyAgICAgICAgYXV0byog
c3RhcnQ4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPihzdGFydCk7CisgICAgICAgIGF1dG8q
IGVuZDggPSBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KGVuZCk7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXJ0OCA+PSBzcGFuOC5kYXRhKCkpOwogICAgICAgICByZXR1cm4gUnVuIHsgc3Bh
bjguc3Vic3BhbihzdGFydDggLSBzcGFuOC5kYXRhKCksIGVuZDggLSBzdGFydDgpIH07CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuaAppbmRleCBjZTZjYjM5M2NlYjQu
LjdhYjcyNDJmMzc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRT
Y2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmgKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgY2xhc3MgUnVuIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIGV4cGxpY2l0IFJ1bihzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBkYXRh
KQorICAgICAgICBleHBsaWNpdCBSdW4oc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBkYXRhKQogICAg
ICAgICAgICAgOiBtX2lzOEJpdCh0cnVlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2RhdGEu
Y2hhcmFjdGVyczggPSBkYXRhOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2RhdGEuY2hhcmFjdGVyczE2ID0gZGF0YTsKICAgICAgICAgfQogCi0gICAgICAgIHN0ZDo6
c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IHNwYW44KCkgY29uc3QgeyBSRUxFQVNFX0FTU0VS
VChtX2lzOEJpdCk7IHJldHVybiBtX2RhdGEuY2hhcmFjdGVyczg7IH0KKyAgICAgICAgc3RkOjpz
cGFuPGNvbnN0IExDaGFyPiBzcGFuOCgpIGNvbnN0IHsgUkVMRUFTRV9BU1NFUlQobV9pczhCaXQp
OyByZXR1cm4gbV9kYXRhLmNoYXJhY3RlcnM4OyB9CiAgICAgICAgIHN0ZDo6c3Bhbjxjb25zdCBj
aGFyMTZfdD4gc3BhbjE2KCkgY29uc3QgeyBSRUxFQVNFX0FTU0VSVCghbV9pczhCaXQpOyByZXR1
cm4gbV9kYXRhLmNoYXJhY3RlcnMxNjsgfQogCiAgICAgICAgIFBvc2l0aW9uIHN0YXJ0KCkgY29u
c3QKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ2hhcmFjdGVycygpCiAg
ICAgICAgICAgICAgICAgOiBjaGFyYWN0ZXJzOCgpCiAgICAgICAgICAgICB7IH0KLSAgICAgICAg
ICAgIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnM4OworICAgICAg
ICAgICAgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzODsKICAgICAgICAgICAgIHN0
ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hhcmFjdGVyczE2OwogICAgICAgICB9IG1fZGF0YTsK
ICAgICAgICAgYm9vbCBtX2lzOEJpdDsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gU2NhbiB0aGUgY2hhcmFjdGVyIHxjfC4KICAgICBib29sIHNjYW4oY2hhcik7CiAgICAgLy8g
U2NhbiB0aGUgZmlyc3QgfGNoYXJhY3RlcnNDb3VudHwgY2hhcmFjdGVycyBvZiB0aGUgc3RyaW5n
IHxjaGFyYWN0ZXJzfC4KLSAgICBib29sIHNjYW4oc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJh
Y3Rlcj4gY2hhcmFjdGVycyk7CisgICAgYm9vbCBzY2FuKHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4g
Y2hhcmFjdGVycyk7CiAKICAgICAvLyBTa2lwIChhZHZhbmNlIHRoZSBpbnB1dCBwb2ludGVyKSBh
cyBsb25nIGFzIHRoZSBzcGVjaWZpZWQKICAgICAvLyB8Y2hhcmFjdGVyUHJlZGljYXRlfCByZXR1
cm5zIHRydWUsIGFuZCB0aGUgaW5wdXQgcG9pbnRlciBpcyBub3QgcGFzc2VkCkBAIC0xNzIsNyAr
MTcyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBDaGFyYWN0ZXJzKCkKICAgICAgICAgICAgIDog
Y2hhcmFjdGVyczgoKQogICAgICAgICB7IH0KLSAgICAgICAgc3RkOjpzcGFuPGNvbnN0IExhdGlu
MUNoYXJhY3Rlcj4gY2hhcmFjdGVyczg7CisgICAgICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4g
Y2hhcmFjdGVyczg7CiAgICAgICAgIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY2hhcmFjdGVy
czE2OwogICAgIH0gbV9kYXRhOwogICAgIGNvbnN0IFN0cmluZyBtX3NvdXJjZTsKQEAgLTIyNyw3
ICsyMjcsNyBAQCBpbmxpbmUgdm9pZCBWVFRTY2FubmVyOjpzZWVrVG8oUG9zaXRpb24gcG9zaXRp
b24pCiB7CiAgICAgaWYgKG1faXM4Qml0KSB7CiAgICAgICAgIGF1dG8gc3BhbjggPSBtX3NvdXJj
ZS5zcGFuOCgpOwotICAgICAgICBhdXRvKiBwb3NpdGlvbjggPSBzdGF0aWNfY2FzdDxjb25zdCBM
YXRpbjFDaGFyYWN0ZXIqPihwb3NpdGlvbik7CisgICAgICAgIGF1dG8qIHBvc2l0aW9uOCA9IHN0
YXRpY19jYXN0PGNvbnN0IExDaGFyKj4ocG9zaXRpb24pOwogICAgICAgICBSRUxFQVNFX0FTU0VS
VChwb3NpdGlvbjggPj0gc3BhbjguZGF0YSgpKTsKICAgICAgICAgbV9kYXRhLmNoYXJhY3RlcnM4
ID0gc3Bhbjguc3Vic3Bhbihwb3NpdGlvbjggLSBzcGFuOC5kYXRhKCkpOwogICAgIH0gZWxzZSB7
CkBAIC0yNDAsNyArMjQwLDcgQEAgaW5saW5lIHZvaWQgVlRUU2Nhbm5lcjo6c2Vla1RvKFBvc2l0
aW9uIHBvc2l0aW9uKQogCiBpbmxpbmUgY2hhcjE2X3QgVlRUU2Nhbm5lcjo6Y3VycmVudENoYXIo
KSBjb25zdAogewotICAgIHJldHVybiBtX2lzOEJpdCA/IGNoYXIxNl90IHsgbV9kYXRhLmNoYXJh
Y3RlcnM4LmZyb250KCkgfSA6IG1fZGF0YS5jaGFyYWN0ZXJzMTYuZnJvbnQoKTsKKyAgICByZXR1
cm4gbV9pczhCaXQgPyBtX2RhdGEuY2hhcmFjdGVyczguZnJvbnQoKSA6IG1fZGF0YS5jaGFyYWN0
ZXJzMTYuZnJvbnQoKTsKIH0KIAogaW5saW5lIHZvaWQgVlRUU2Nhbm5lcjo6YWR2YW5jZShzaXpl
X3QgYW1vdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmlu
ZGV4IDBiYTViYTA4MGVmZi4uMGZiYWM0MDUwMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBXZWJWVFRQYXJz
ZXI6OnBhcnNlKCkKIHZvaWQgV2ViVlRUUGFyc2VyOjpmaWxlRmluaXNoZWQoKQogewogICAgIEFT
U0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKLSAgICBwYXJzZUJ5dGVzKGJ5dGVDYXN0PHVpbnQ4
X3Q+KCJcblxuIl9zcGFuOCkpOworICAgIHBhcnNlQnl0ZXMoIlxuXG4iX3NwYW44KTsKICAgICBt
X3N0YXRlID0gRmluaXNoZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA1MjI3MzI5NzNlZGYuLjJmZWQwY2NhMzg5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgU3R5bGVTaGVldEhhbmRsZXI6OmVuZFJ1bGVIZWFk
ZXIodW5zaWduZWQgb2Zmc2V0KQogICAgIEFTU0VSVCghbV9jdXJyZW50UnVsZURhdGFTdGFjay5p
c0VtcHR5KCkpOwogICAgIAogICAgIGlmIChtX3BhcnNlZFRleHQuaXM4Qml0KCkpCi0gICAgICAg
IHNldFJ1bGVIZWFkZXJFbmQ8TGF0aW4xQ2hhcmFjdGVyPihtX3BhcnNlZFRleHQuc3BhbjgoKS5m
aXJzdChvZmZzZXQpKTsKKyAgICAgICAgc2V0UnVsZUhlYWRlckVuZDxMQ2hhcj4obV9wYXJzZWRU
ZXh0LnNwYW44KCkuZmlyc3Qob2Zmc2V0KSk7CiAgICAgZWxzZQogICAgICAgICBzZXRSdWxlSGVh
ZGVyRW5kPGNoYXIxNl90PihtX3BhcnNlZFRleHQuc3BhbjE2KCkuZmlyc3Qob2Zmc2V0KSk7CiB9
CkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBTdHlsZVNoZWV0SGFuZGxlcjo6Zml4VW5wYXJzZWRQ
cm9wZXJ0eVJhbmdlcyhDU1NSdWxlU291cmNlRGF0YSogcnVsZURhdGEpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBpZiAobV9wYXJzZWRUZXh0LmlzOEJpdCgpKSB7Ci0gICAgICAgIGZpeFVu
cGFyc2VkUHJvcGVydGllczxMYXRpbjFDaGFyYWN0ZXI+KG1fcGFyc2VkVGV4dC5zcGFuOCgpLCBy
dWxlRGF0YSk7CisgICAgICAgIGZpeFVucGFyc2VkUHJvcGVydGllczxMQ2hhcj4obV9wYXJzZWRU
ZXh0LnNwYW44KCksIHJ1bGVEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3RleHQvVGV4dFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAKaW5kZXggZjU1Y2QxYzEzNjIxLi5hNmVkN2Ex
YWI4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCkBAIC03MzEsNyArNzMx
LDcgQEAgYm9vbCBUZXh0VXRpbDo6Y2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoU3RyaW5n
VmlldyB0ZXh0Q29udGVudCwgY29uc3QgRm9udEMKIGJvb2wgVGV4dFV0aWw6Omhhc1Bvc2l0aW9u
RGVwZW5kZW50Q29udGVudFdpZHRoKFN0cmluZ1ZpZXcgdGV4dENvbnRlbnQpCiB7CiAgICAgaWYg
KHRleHRDb250ZW50LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY2hhcmFjdGVyc0NvbnRhaW48
TGF0aW4xQ2hhcmFjdGVyLCB0YWJDaGFyYWN0ZXI+KHRleHRDb250ZW50LnNwYW44KCkpOworICAg
ICAgICByZXR1cm4gY2hhcmFjdGVyc0NvbnRhaW48TENoYXIsIHRhYkNoYXJhY3Rlcj4odGV4dENv
bnRlbnQuc3BhbjgoKSk7CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNDb250YWluPGNoYXIxNl90LCB0
YWJDaGFyYWN0ZXI+KHRleHRDb250ZW50LnNwYW4xNigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcAppbmRleCA2NzgwMTQxMzVlZmUuLjZkZTky
ZDJjNGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5j
cHAKQEAgLTUwLDEyICs1MCwxMiBAQCBzdGF0aWMgaW5saW5lIEZUUEVudHJ5VHlwZSBQYXJzaW5n
RmFpbGVkKExpc3RTdGF0ZSYgc3RhdGUpCiAgICAgcmV0dXJuIEZUUE1pc2NFbnRyeTsgLyogaXRz
IHBhcnQgb2YgYSBjb21tZW50IG9yIGVycm9yIG1lc3NhZ2UgKi8KIH0KIAotc3RhdGljIGJvb2wg
aXNTcGFjZU9yVGFiKExhdGluMUNoYXJhY3RlciBjKQorc3RhdGljIGJvb2wgaXNTcGFjZU9yVGFi
KExDaGFyIGMpCiB7CiAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1x0JzsKIH0KIAotRlRQ
RW50cnlUeXBlIHBhcnNlT25lRlRQTGluZShzdGQ6OnNwYW48TGF0aW4xQ2hhcmFjdGVyPiBsaW5l
LCBMaXN0U3RhdGUmIHN0YXRlLCBMaXN0UmVzdWx0JiByZXN1bHQpCitGVFBFbnRyeVR5cGUgcGFy
c2VPbmVGVFBMaW5lKHN0ZDo6c3BhbjxMQ2hhcj4gbGluZSwgTGlzdFN0YXRlJiBzdGF0ZSwgTGlz
dFJlc3VsdCYgcmVzdWx0KQogewogICAgIHJlc3VsdC5jbGVhcigpOwogCkBAIC04NCw3ICs4NCw3
IEBAIEZUUEVudHJ5VHlwZSBwYXJzZU9uZUZUUExpbmUoc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rl
cj4gbGluZSwgTGlzdFN0YXRlJiBzdGF0ZSwKIAogICAgIGlmIChsaW5lbGVuID4gMCkgewogICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gbW9udGhOYW1lcyA9ICJKYW5GZWJNYXJBcHJNYXlK
dW5KdWxBdWdTZXBPY3ROb3ZEZWMiX3NwYW47Ci0gICAgICAgIHN0ZDo6YXJyYXk8c3RkOjpzcGFu
PExhdGluMUNoYXJhY3Rlcj4sIDE2PiB0b2tlbnM7IC8qIDE2IGlzIG1vcmUgdGhhbiBlbm91Z2gg
Ki8KKyAgICAgICAgc3RkOjphcnJheTxzdGQ6OnNwYW48TENoYXI+LCAxNj4gdG9rZW5zOyAvKiAx
NiBpcyBtb3JlIHRoYW4gZW5vdWdoICovCiAgICAgICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIHRv
a2Vucy5zaXplKCk+IHRva2xlbjsKICAgICAgICAgdW5zaWduZWQgbGluZUxlblNhbnNXc3A7IC8v
IGxpbmUgbGVuZ3RoIHNhbnMgd2hpdGVzcGFjZQogICAgICAgICB1bnNpZ25lZCBudW10b2tzID0g
MDsKQEAgLTgzMCw3ICs4MzAsNyBAQCBGVFBFbnRyeVR5cGUgcGFyc2VPbmVGVFBMaW5lKHN0ZDo6
c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCh0b2tsZW5bMF0gPT0gMTAgfHwgdG9rbGVuWzBdID09IDExKQotICAgICAgICAg
ICAgICAgICAgICAmJiBXVEY6OmNvbnRhaW5zKGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oIi1i
Y2RscHN3P0RGYW0iX3NwYW4pLCB0b2tlbnNbMF1bMF0pKSB7CisgICAgICAgICAgICAgICAgICAg
ICYmIFdURjo6Y29udGFpbnMoIi1iY2RscHN3P0RGYW0iX3NwYW4sIHRva2Vuc1swXVswXSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgcCA9IHRva2Vuc1swXS5zdWJzcGFuKDEpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoKHBbMF0gPT0gJ3InIHx8IHBbMF0gPT0gJy0nKSAmJiAocFsxXSA9PSAn
dycgfHwgcFsxXSA9PSAnLScpICYmIChwWzNdID09ICdyJyB8fCBwWzNdID09ICctJykgJiYgKHBb
NF0gPT0gJ3cnIHx8IHBbNF0gPT0gJy0nKSAmJiAocFs2XSA9PSAncicgfHwgcFs2XSA9PSAnLScp
ICYmIChwWzddID09ICd3JyB8fCBwWzddID09ICctJykpIHsKICAgICAgICAgICAgICAgICAgICAg
LyogJ3gnL3BbOV0gY2FuIGJlIFN8c3x4fC18VHx0IG9yIGltcGxlbWVudGF0aW9uIHNwZWNpZmlj
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmgKaW5kZXggNmFl
ZjNmZTc3MDllLi5jZjk4MjRhZTJiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GVFBEaXJlY3RvcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGly
ZWN0b3J5UGFyc2VyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgTGlzdFN0YXRlIHsKICAg
ICBGVFBUaW1lICAgICBub3dGVFBUaW1lOwogICAgIGNoYXIgICAgICAgIGxpc3RTdHlsZTsgICAg
ICAgICAvKiBMSVNUaW5nIHN0eWxlICovCiAgICAgYm9vbCAgICAgICAgcGFyc2VkT25lOyAgICAg
ICAgIC8qIHJldHVybmVkIGFueXRoaW5nIHlldD8gKi8KLSAgICBzdGQ6OmFycmF5PExhdGluMUNo
YXJhY3RlciwgODQ+IGNhcnJ5QnVmZmVyOyAgIC8qIGZvciBWTVMgbXVsdGlsaW5lICovCisgICAg
c3RkOjphcnJheTxMQ2hhciwgODQ+IGNhcnJ5QnVmZmVyOyAgIC8qIGZvciBWTVMgbXVsdGlsaW5l
ICovCiAgICAgaW50ICAgICAgICAgY2FycnlCdWZmZXJMZW5ndGg7IC8qIGxlbmd0aCBvZiBuYW1l
IGluIGNhcnJ5X2J1ZiAqLwogICAgIGludDY0X3QgICAgIG51bUxpbmVzOyAgICAgICAgICAvKiBu
dW1iZXIgb2YgbGluZXMgc2VlbiAqLwogfTsKQEAgLTEzNywxNCArMTM3LDE0IEBAIHN0cnVjdCBM
aXN0UmVzdWx0CiAgICAgYm9vbCB2YWxpZDsKICAgICBGVFBFbnRyeVR5cGUgdHlwZTsgICAgICAg
IAogICAgIAotICAgIHN0ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGZpbGVuYW1lOwotICAgIHN0
ZDo6c3BhbjxMYXRpbjFDaGFyYWN0ZXI+IGxpbmtuYW1lOworICAgIHN0ZDo6c3BhbjxMQ2hhcj4g
ZmlsZW5hbWU7CisgICAgc3RkOjpzcGFuPExDaGFyPiBsaW5rbmFtZTsKICAgICAKICAgICBTdHJp
bmcgZmlsZVNpemU7ICAgICAgCiAgICAgRlRQVGltZSBtb2RpZmllZFRpbWU7IAogICAgIGJvb2wg
Y2FzZVNlbnNpdGl2ZTsgLy8gZmlsZSBzeXN0ZW0gaXMgZGVmaW5pdGVseSBjYXNlIGluc2Vuc2l0
aXZlCiB9OwogCi1GVFBFbnRyeVR5cGUgcGFyc2VPbmVGVFBMaW5lKHN0ZDo6c3BhbjxMYXRpbjFD
aGFyYWN0ZXI+IGlucHV0TGluZSwgTGlzdFN0YXRlJiwgTGlzdFJlc3VsdCYpOworRlRQRW50cnlU
eXBlIHBhcnNlT25lRlRQTGluZShzdGQ6OnNwYW48TENoYXI+IGlucHV0TGluZSwgTGlzdFN0YXRl
JiwgTGlzdFJlc3VsdCYpOwogICAgICAgICAgICAgICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IDc1NTQwOWZh
Y2IzYy4uYTU5NTMxZDhkOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9y
bVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWFpbHRvUG9zdEZvcm1E
YXRhVG9VUkwoVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGJvZHlEYXRhKCJib2R5PSJfc3Bhbik7CiAgICAgRm9ybURhdGFCdWlsZGVy
OjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKGJvZHlEYXRhLCBib2R5LnV0ZjgoKSk7Ci0gICAgYm9k
eSA9IG1ha2VTdHJpbmdCeVJlcGxhY2luZ0FsbChieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGJv
ZHlEYXRhLnNwYW4oKSksICcrJywgIiUyMCJfcyk7CisgICAgYm9keSA9IG1ha2VTdHJpbmdCeVJl
cGxhY2luZ0FsbChib2R5RGF0YS5zcGFuKCksICcrJywgIiUyMCJfcyk7CiAKICAgICBhdXRvIHF1
ZXJ5ID0gdXJsLnF1ZXJ5KCk7CiAgICAgaWYgKHF1ZXJ5LmlzRW1wdHkoKSkKQEAgLTIyMyw3ICsy
MjMsNyBAQCBSZWY8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZv
cm1FbGVtZW50JiBmb3JtLCBIVE1MRm9ybUNvbnRybwogCiAgICAgaWYgKGlzTXVsdGlQYXJ0Rm9y
bSkgewogICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoZG9tRm9y
bURhdGEpOwotICAgICAgICBib3VuZGFyeSA9IFN0cmluZyhieXRlQ2FzdDxMYXRpbjFDaGFyYWN0
ZXI+KGZvcm1EYXRhLT5ib3VuZGFyeSgpLnNwYW4oKSkpOworICAgICAgICBib3VuZGFyeSA9IFN0
cmluZyhmb3JtRGF0YS0+Ym91bmRhcnkoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9ybURh
dGEgPSBGb3JtRGF0YTo6Y3JlYXRlKGRvbUZvcm1EYXRhLCBhdHRyaWJ1dGVzLm1ldGhvZCgpID09
IE1ldGhvZDo6R2V0ID8gRm9ybURhdGE6OkVuY29kaW5nVHlwZTo6Rm9ybVVSTEVuY29kZWQgOiBG
b3JtRGF0YTo6cGFyc2VFbmNvZGluZ1R5cGUoZW5jb2RpbmdUeXBlKSk7CiAgICAgICAgIGlmIChj
b3BpZWRBdHRyaWJ1dGVzLm1ldGhvZCgpID09IE1ldGhvZDo6UG9zdCAmJiBpc01haWx0b0Zvcm0p
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdC5jcHAKaW5kZXggMGZjMjkxN2ViM2FhLi41Y2EwZTc3MTM1YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3QoU3RyaW5nUGFyc2luCiAgICAgcmV0dXJuIHBh
cnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJp
bmdQYXJzaW5nQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3QoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gcGFyc2VDcnlw
dG9ncmFwaGljRGlnZXN0SW1wbChidWZmZXIpOwogfQpAQCAtMTE4LDcgKzExOCw3IEBAIHN0ZDo6
b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVk
Q3J5cHRvZ3JhcGhpY0RpZ2VzCiAgICAgcmV0dXJuIHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNE
aWdlc3RJbXBsKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQ
YXJzaW5nQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8RW5j
b2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVy
biBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXN0SW1wbChidWZmZXIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmlu
ZGV4IGRjY2IwZmYxZmE2YS4uMWE4NTNhYmEyMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0xhdGluMUNoYXJhY3Rl
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDEwICs2NywxMCBAQCBzdHJ1
Y3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiB9OwogCiBzdGQ6Om9wdGlv
bmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Y2hhcjE2X3Q+Jik7Ci1zdGQ6Om9wdGlvbmFsPFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGlnZXN0KFN0cmluZ1BhcnNp
bmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYpOworc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVm
ZmVyPExDaGFyPiYpOwogCiBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3QoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxjaGFyMTZfdD4mKTsKLXN0ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5n
QnVmZmVyPExhdGluMUNoYXJhY3Rlcj4mKTsKK3N0ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJp
bmdQYXJzaW5nQnVmZmVyPExDaGFyPiYpOwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChj
b25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCAwMTdhYjQ2MTI5MzEu
LjUwNmUzYjFmN2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VE
ZWNvZGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgc2l6ZV90IGZpbmQoc3RkOjpzcGFu
PGNvbnN0IHVpbnQ4X3Q+IHN1YmplY3QsIHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiB0YQogICAg
IHJldHVybiBub3RGb3VuZDsKIH0KIAotc3RhdGljIFBBTDo6VGV4dEVuY29kaW5nIGZpbmRUZXh0
RW5jb2Rpbmcoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gZW5jb2RpbmdOYW1lKQor
c3RhdGljIFBBTDo6VGV4dEVuY29kaW5nIGZpbmRUZXh0RW5jb2Rpbmcoc3RkOjpzcGFuPGNvbnN0
IExDaGFyPiBlbmNvZGluZ05hbWUpCiB7CiAgICAgcmV0dXJuIFN0cmluZ1ZpZXcgeyBlbmNvZGlu
Z05hbWUgfTsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6
Omhhc0VxdWFsRW5jb2RpbmdGb3JDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkgY29ucwog
Ly8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIGVuY29kaW5nIHN0cmluZy4KIHN0YXRpYyBz
aXplX3QgZmluZFhNTEVuY29kaW5nKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBzdHJpbmcsIHNp
emVfdCYgZW5jb2RpbmdMZW5ndGgpCiB7Ci0gICAgc2l6ZV90IHBvc2l0aW9uID0gZmluZChzdHJp
bmcsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJlbmNvZGluZyJfc3BhbjgpKTsKKyAgICBzaXplX3QgcG9z
aXRpb24gPSBmaW5kKHN0cmluZywgImVuY29kaW5nIl9zcGFuOCk7CiAgICAgaWYgKHBvc2l0aW9u
ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAgICAgcG9zaXRpb24gKz0g
ODsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9y
Q1NTQ2hhcnNldChzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4gZGF0YSwgYm9vbAogCiAgICAgZGF0
YSA9IG1fYnVmZmVyLnNwYW4oKTsKIAotICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkoZGF0
YSwgYnl0ZUNhc3Q8dWludDhfdD4oIkBjaGFyc2V0IFwiIl9zcGFuOCkpKSB7CisgICAgaWYgKHNr
aXBDaGFyYWN0ZXJzRXhhY3RseShkYXRhLCAiQGNoYXJzZXQgXCIiX3NwYW44KSkgewogICAgICAg
ICBzaXplX3QgaW5kZXggPSAwOwogICAgICAgICB3aGlsZSAoaW5kZXggPCBkYXRhLnNpemUoKSAm
JiBkYXRhW2luZGV4XSAhPSAnIicpCiAgICAgICAgICAgICArK2luZGV4OwpAQCAtNDUwLDggKzQ1
MCw4IEBAIGJvb2wgVGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JDU1NDaGFyc2V0KHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBib29sCiAgICAgICAgIGlmIChpbmRleCA9PSBkYXRh
LnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBhdXRvIGVuY29k
aW5nTmFtZSA9IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oZGF0YS5maXJzdChpbmRleCkpOwot
CisgICAgICAgIGF1dG8gZW5jb2RpbmdOYW1lID0gZGF0YS5maXJzdChpbmRleCk7CisgICAgICAg
IAogICAgICAgICArK2luZGV4OwogICAgICAgICBpZiAoaW5kZXggPT0gZGF0YS5zaXplKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00OTIsOSArNDkyLDkgQEAgYm9vbCBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjaGVja0ZvckhlYWRDaGFyc2V0KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90
PiBkYXRhLCBib28KIAogICAgIC8vIEhhbmRsZSBYTUwgZGVjbGFyYXRpb24sIHdoaWNoIGNhbiBo
YXZlIGVuY29kaW5nIGluIGl0LiBUaGlzIGVuY29kaW5nIGlzIGhvbm9yZWQgZXZlbiBmb3IgSFRN
TCBkb2N1bWVudHMuCiAgICAgLy8gSXQgaXMgYW4gZXJyb3IgZm9yIGFuIFhNTCBkZWNsYXJhdGlv
biBub3QgdG8gYmUgYXQgdGhlIHN0YXJ0IG9mIGFuIFhNTCBkb2N1bWVudCwgYW5kIGl0IGlzIGln
bm9yZWQgaW4gSFRNTCBkb2N1bWVudHMgaW4gc3VjaCBjYXNlLgotICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjphcnJheTxMYXRpbjFDaGFyYWN0ZXIsIDU+IHhtbFByZWZpeCB7ICc8JywgJz8nLCAn
eCcsICdtJywgJ2wnIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PExhdGluMUNo
YXJhY3RlciwgNj4geG1sUHJlZml4TGl0dGxlRW5kaWFuIHsgJzwnLCAwLCAnPycsIDAsICd4Jywg
MCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxMYXRpbjFDaGFyYWN0ZXIsIDY+
IHhtbFByZWZpeEJpZ0VuZGlhbiB7IDAsICc8JywgMCwgJz8nLCAwLCAneCcgfTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8dWludDhfdCwgNT4geG1sUHJlZml4IHsgJzwnLCAnPycs
ICd4JywgJ20nLCAnbCcgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8dWludDhf
dCwgNj4geG1sUHJlZml4TGl0dGxlRW5kaWFuIHsgJzwnLCAwLCAnPycsIDAsICd4JywgMCB9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTx1aW50OF90LCA2PiB4bWxQcmVmaXhCaWdF
bmRpYW4geyAwLCAnPCcsIDAsICc/JywgMCwgJ3gnIH07CiAgICAgaWYgKHNwYW5IYXNQcmVmaXgo
YnVmZmVyRGF0YSwgc3RkOjpzcGFuIHsgeG1sUHJlZml4IH0pKSB7CiAgICAgICAgIGF1dG8geG1s
RGVjbGFyYXRpb25FbmQgPSBidWZmZXJEYXRhOwogICAgICAgICBza2lwVW50aWwoeG1sRGVjbGFy
YXRpb25FbmQsICc+Jyk7CkBAIC01MDQsNyArNTA0LDcgQEAgYm9vbCBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjaGVja0ZvckhlYWRDaGFyc2V0KHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBi
b28KICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAgIHNpemVfdCBwb3NpdGlvbiA9
IGZpbmRYTUxFbmNvZGluZyhidWZmZXJEYXRhLmZpcnN0KHhtbERlY2xhcmF0aW9uRW5kLmRhdGEo
KSAtIGJ1ZmZlckRhdGEuZGF0YSgpKSwgbGVuZ3RoKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9
IG5vdEZvdW5kKQotICAgICAgICAgICAgc2V0RW5jb2RpbmcoZmluZFRleHRFbmNvZGluZyhieXRl
Q2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGJ1ZmZlckRhdGEuc3Vic3Bhbihwb3NpdGlvbiwgbGVuZ3Ro
KSkpLCBFbmNvZGluZ0Zyb21YTUxIZWFkZXIpOworICAgICAgICAgICAgc2V0RW5jb2RpbmcoZmlu
ZFRleHRFbmNvZGluZyhidWZmZXJEYXRhLnN1YnNwYW4ocG9zaXRpb24sIGxlbmd0aCkpLCBFbmNv
ZGluZ0Zyb21YTUxIZWFkZXIpOwogICAgICAgICAvLyBjb250aW51ZSBsb29raW5nIGZvciBhIGNo
YXJzZXQgLSBpdCBtYXkgYmUgc3BlY2lmaWVkIGluIGFuIEhUVFAtRXF1aXYgbWV0YQogICAgIH0g
ZWxzZSBpZiAoc3Bhbkhhc1ByZWZpeChidWZmZXJEYXRhLCBzdGQ6OnNwYW4geyB4bWxQcmVmaXhM
aXR0bGVFbmRpYW4gfSkpIHsKICAgICAgICAgc2V0RW5jb2RpbmcoUEFMOjpVVEYxNkxpdHRsZUVu
ZGlhbkVuY29kaW5nKCksIEF1dG9EZXRlY3RlZEVuY29kaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggMzljZjY5MTY5NmI1Li40M2E1NTkz
M2IyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoU2hvdWxk
RGVjb2RlQXNVVEY4T25seSBzaG91bGREZWNvZGVBc1VURjhPbmx5KQogICAgIH0KIAogICAgIGlm
IChtX2RlY29kaW5nU3RhdGUgPT0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzKQot
ICAgICAgICByZXR1cm4geyBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNvbnRpZ3VvdXNEYXRh
LT5zcGFuKCkpIH07CisgICAgICAgIHJldHVybiB7IGNvbnRpZ3VvdXNEYXRhLT5zcGFuKCkgfTsK
IAogICAgIGJvb2wgc2hvdWxkRm9yY2VSZWRlY29kaW5nID0gbV93YXNGb3JjZURlY29kZWRBc1VU
RjggIT0gKHNob3VsZERlY29kZUFzVVRGOE9ubHkgPT0gU2hvdWxkRGVjb2RlQXNVVEY4T25seTo6
WWVzKTsKICAgICBpZiAoIW1fc2NyaXB0IHx8IHNob3VsZEZvcmNlUmVkZWNvZGluZykgewpAQCAt
MTM2LDcgKzEzNiw3IEBAIEpTQzo6Q29kZUJsb2NrSGFzaCBDYWNoZWRTY3JpcHQ6OmNvZGVCbG9j
a0hhc2hDb25jdXJyZW50bHkoaW50IHN0YXJ0T2Zmc2V0LCBpbnQKICAgICAgICAgUmVmIGNvbnRp
Z3VvdXNEYXRhID0gZG93bmNhc3Q8U2hhcmVkQnVmZmVyPigqZGF0YSk7CiAKICAgICAgICAgaWYg
KFBBTDo6VGV4dEVuY29kaW5nKGVuY29kaW5nKCkpLmlzQnl0ZUJhc2VkRW5jb2RpbmcoKSAmJiBj
b250aWd1b3VzRGF0YS0+c2l6ZSgpICYmIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjb250aWd1b3Vz
RGF0YS0+c3BhbigpKSkgewotICAgICAgICAgICAgU3RyaW5nVmlldyBlbnRpcmVTb3VyY2UgeyBi
eXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGNvbnRpZ3VvdXNEYXRhLT5zcGFuKCkpIH07CisgICAg
ICAgICAgICBTdHJpbmdWaWV3IGVudGlyZVNvdXJjZSB7IGNvbnRpZ3VvdXNEYXRhLT5zcGFuKCkg
fTsKICAgICAgICAgICAgIHJldHVybiBKU0M6OkNvZGVCbG9ja0hhc2ggeyBlbnRpcmVTb3VyY2Uu
c3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBzdGFydE9mZnNldCksIGVudGlyZVNv
dXJjZSwga2luZCB9OwogICAgICAgICB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBKU0M6OkNvZGVC
bG9ja0hhc2ggQ2FjaGVkU2NyaXB0Ojpjb2RlQmxvY2tIYXNoQ29uY3VycmVudGx5KGludCBzdGFy
dE9mZnNldCwgaW50CiAgICAgICAgIHJldHVybiBKU0M6OkNvZGVCbG9ja0hhc2ggeyBlbnRpcmVT
b3VyY2Uuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBzdGFydE9mZnNldCksIGVu
dGlyZVNvdXJjZSwga2luZCB9OwogICAgIH0KICAgICBjYXNlIERhdGFBbmREZWNvZGVkU3RyaW5n
SGF2ZVNhbWVCeXRlczogewotICAgICAgICBTdHJpbmdWaWV3IGVudGlyZVNvdXJjZSB7IGJ5dGVD
YXN0PExhdGluMUNoYXJhY3Rlcj4oZG93bmNhc3Q8U2hhcmVkQnVmZmVyPigqZGF0YSkuc3Bhbigp
KSB9OworICAgICAgICBTdHJpbmdWaWV3IGVudGlyZVNvdXJjZSB7IGRvd25jYXN0PFNoYXJlZEJ1
ZmZlcj4oKmRhdGEpLnNwYW4oKSB9OwogICAgICAgICByZXR1cm4gSlNDOjpDb2RlQmxvY2tIYXNo
IHsgZW50aXJlU291cmNlLnN1YnN0cmluZyhzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gc3RhcnRP
ZmZzZXQpLCBlbnRpcmVTb3VyY2UsIGtpbmQgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4
IDc4ZDgyOWQ5MDA3Yy4uMDc3ZTRmYjRhZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTQ1LDE1ICs0
NSwxNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2Ug
dGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChp
ZiBhbnkpLgotICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGJ5dGVDYXN0
PExhdGluMUNoYXJhY3Rlcj4oYnVmZmVyLnNwYW4oKSkpOworICAgIFN0cmluZyBqc29uIHsgYnVm
ZmVyLnNwYW4oKSB9OworCisgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
anNvbik7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBy
ZXR1cm4gdmFsdWUtPmFzT2JqZWN0KCk7CiB9CiAKLX0KK307CiAKLX0KK307CiAKICNlbmRpZiAv
LyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQVYxVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FWMVV0aWxpdGllcy5jcHAKaW5kZXggNTRlYmI1YjhmNTA0Li5hYjBjYWZhZDM0
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FWMVV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQVYxVXRpbGl0
aWVzLmNwcApAQCAtMzQ4LDE4ICszNDgsMTggQEAgU3RyaW5nIGNyZWF0ZUFWMUNvZGVjUGFyYW1l
dGVyc1N0cmluZyhjb25zdCBBVjFDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvbmZpZ3UKICAg
ICBidWlsZGVyLmFwcGVuZCgiYXYwMSJfcyk7CiAKICAgICBhdXRvIGFwcGVuZE9uZURpZ2l0ID0g
WyZdKHVpbnQ4X3QgbnVtYmVyKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0
PExhdGluMUNoYXJhY3Rlcj4oJzAnICsgbnVtYmVyICUgMTApKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KCcwJyArIG51bWJlciAlIDEwKSk7CiAgICAgfTsKIAog
ICAgIGF1dG8gYXBwZW5kVHdvRGlnaXRzID0gWyZdKHVpbnQ4X3QgbnVtYmVyKSB7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oJzAnICsgbnVtYmVy
IC8gMTAgJSAxMCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxMYXRpbjFD
aGFyYWN0ZXI+KCcwJyArIG51bWJlciAlIDEwKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0
YXRpY19jYXN0PExDaGFyPignMCcgKyBudW1iZXIgLyAxMCAlIDEwKSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPignMCcgKyBudW1iZXIgJSAxMCkpOwogICAgIH07
CiAKICAgICBhdXRvIGFwcGVuZFRocmVlRGlnaXRzID0gWyZdKHVpbnQ4X3QgbnVtYmVyKSB7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oJzAnICsg
bnVtYmVyIC8gMTAwICUgMTApKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8
TGF0aW4xQ2hhcmFjdGVyPignMCcgKyBudW1iZXIgLyAxMCAlIDEwKSk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PExhdGluMUNoYXJhY3Rlcj4oJzAnICsgbnVtYmVyICUgMTAp
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KCcwJyArIG51bWJl
ciAvIDEwMCAlIDEwKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFy
PignMCcgKyBudW1iZXIgLyAxMCAlIDEwKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PExDaGFyPignMCcgKyBudW1iZXIgJSAxMCkpOwogICAgIH07CiAKICAgICAvLyBUaGUg
cGFyYW1ldGVycyBzYW1wbGUgZW50cnkgNENDLCBwcm9maWxlLCBsZXZlbCwgdGllciwgYW5kIGJp
dERlcHRoIGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCmluZGV4IDNkZDVkNjA3YTQ5Mi4uZGMwN2E1MmVkMDQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC02MDEsNyAr
NjAxLDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgbm9ybWFsaXplU3BhY2VzSW50ZXJuYWwoc3Rk
OjpzcGFuPGNvbnN0IENoYXJhY3RlclR5cGU+IGNoYXIKICAgICByZXR1cm4gbm9ybWFsaXplZC50
b1N0cmluZygpOwogfQogCi1TdHJpbmcgRm9udENhc2NhZGU6Om5vcm1hbGl6ZVNwYWNlcyhzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzKQorU3RyaW5nIEZvbnRDYXNj
YWRlOjpub3JtYWxpemVTcGFjZXMoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKQog
ewogICAgIHJldHVybiBub3JtYWxpemVTcGFjZXNJbnRlcm5hbChjaGFyYWN0ZXJzKTsKIH0KQEAg
LTExMTMsNyArMTExMyw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoT3JTeW1i
b2woY2hhcjMyX3QgYykKICAgICByZXR1cm4gaXNDSktJZGVvZ3JhcGgoYyk7CiB9CiAKLXN0ZDo6
cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnRJbnRlcm5hbChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCBU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZp
b3IpCitzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBv
cnR1bml0eUNvdW50SW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzLCBU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZp
b3IpCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwogICAgIGJvb2wgaXNBZnRlckV4cGFuc2lv
biA9IGV4cGFuc2lvbkJlaGF2aW9yLmxlZnQgPT0gRXhwYW5zaW9uQmVoYXZpb3I6OkJlaGF2aW9y
OjpGb3JiaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuaAppbmRleCBhYmNkZmVmY2Y5ZGQuLjIwYWUyNmE5NGY0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yNDcsNyArMjQ3LDcgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJh
bmdlQ29kZVBhdGgoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pIHsgcmV0dXJuIENv
ZGVQYXRoOjpTaW1wbGU7IH0KKyAgICBzdGF0aWMgQ29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2Rl
UGF0aChzdGQ6OnNwYW48Y29uc3QgTENoYXI+KSB7IHJldHVybiBDb2RlUGF0aDo6U2ltcGxlOyB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBh
dGgoc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90Pik7CiAKICAgICBib29sIHByaW1hcnlGb250SXNT
eXN0ZW1Gb250KCkgY29uc3Q7CkBAIC0yODIsNyArMjgyLDcgQEAgcHJpdmF0ZToKICAgICBpbnQg
b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9z
aXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0
U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBz
ZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CiAKLSAgICBz
dGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50
SW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4sIFRleHREaXJlY3Rpb24s
IEV4cGFuc2lvbkJlaGF2aW9yKTsKKyAgICBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29s
PiBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoc3RkOjpzcGFuPGNvbnN0IExDaGFy
PiwgVGV4dERpcmVjdGlvbiwgRXhwYW5zaW9uQmVoYXZpb3IpOwogICAgIHN0YXRpYyBzdGQ6OnBh
aXI8dW5zaWduZWQsIGJvb2w+IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChzdGQ6
OnNwYW48Y29uc3QgY2hhcjE2X3Q+LCBUZXh0RGlyZWN0aW9uLCBFeHBhbnNpb25CZWhhdmlvcik7
CiAKICAgICBmcmllbmQgc3RydWN0IFdpZHRoSXRlcmF0b3I7CkBAIC0zNDcsNyArMzQ3LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gY2hhcmFjdGVyOwogICAgIH0KIAotICAgIHN0YXRpYyBT
dHJpbmcgbm9ybWFsaXplU3BhY2VzKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KTsK
KyAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVNwYWNlcyhzdGQ6OnNwYW48Y29uc3QgTENoYXI+
KTsKICAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVNwYWNlcyhzdGQ6OnNwYW48Y29uc3QgY2hh
cjE2X3Q+KTsKICAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVNwYWNlcyhTdHJpbmdWaWV3KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4
dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXRpbjFUZXh0
SXRlcmF0b3IuaAppbmRleCA3MGUwMTgzNjNlM2QuLmM5YWMwNjhkNmMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgK
QEAgLTI3LDkgKzI3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXRpbjFUZXh0
SXRlcmF0b3IgewogcHVibGljOgotICAgIC8vIFRoZSBwYXNzZWQgaW4gTGF0aW4xQ2hhcmFjdGVy
IHBvaW50ZXIgc3RhcnRzIGF0ICdjdXJyZW50SW5kZXgnLiBUaGUgaXRlcmF0b3Igb3BlcmF0ZXMg
b24gdGhlIHJhbmdlIFtjdXJyZW50SW5kZXgsIGxhc3RJbmRleF0uCisgICAgLy8gVGhlIHBhc3Nl
ZCBpbiBMQ2hhciBwb2ludGVyIHN0YXJ0cyBhdCAnY3VycmVudEluZGV4Jy4gVGhlIGl0ZXJhdG9y
IG9wZXJhdGVzIG9uIHRoZSByYW5nZSBbY3VycmVudEluZGV4LCBsYXN0SW5kZXhdLgogICAgIC8v
ICdlbmRDaGFyYWN0ZXInIGRlbm90ZXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBjaGFyMTZf
dCBhcnJheSwgd2hpY2ggbWlnaHQgZXhjZWVkICdsYXN0SW5kZXgnLgotICAgIExhdGluMVRleHRJ
dGVyYXRvcihzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBjdXJyZW50SW5kZXgsIHVuc2lnbmVkIGxhc3RJbmRleCkKKyAgICBMYXRpbjFUZXh0SXRl
cmF0b3Ioc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBjdXJyZW50
SW5kZXgsIHVuc2lnbmVkIGxhc3RJbmRleCkKICAgICAgICAgOiBtX2NoYXJhY3RlcnMoY2hhcmFj
dGVycykKICAgICAgICAgLCBtX2N1cnJlbnRJbmRleChjdXJyZW50SW5kZXgpCiAgICAgICAgICwg
bV9vcmlnaW5hbEluZGV4KGN1cnJlbnRJbmRleCkKQEAgLTYwLDE3ICs2MCwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fY3VycmVudEluZGV4ID0gaW5kZXg7CiAgICAgfQogCi0gICAgc3RkOjpzcGFu
PGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gcmVtYWluaW5nQ2hhcmFjdGVycygpIGNvbnN0CisgICAg
c3RkOjpzcGFuPGNvbnN0IExDaGFyPiByZW1haW5pbmdDaGFyYWN0ZXJzKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGF1dG8gcmVsYXRpdmVJbmRleCA9IG1fY3VycmVudEluZGV4IC0gbV9vcmlnaW5h
bEluZGV4OwogICAgICAgICByZXR1cm4gbV9jaGFyYWN0ZXJzLnN1YnNwYW4ocmVsYXRpdmVJbmRl
eCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgY3VycmVudEluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50SW5kZXg7IH0KLSAgICBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBj
aGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisgICAgc3RkOjpzcGFu
PGNvbnN0IExDaGFyPiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9
CiAKIHByaXZhdGU6Ci0gICAgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gbV9jaGFy
YWN0ZXJzOworICAgIHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gbV9jaGFyYWN0ZXJzOwogICAgIHVu
c2lnbmVkIG1fY3VycmVudEluZGV4OwogICAgIGNvbnN0IHVuc2lnbmVkIG1fb3JpZ2luYWxJbmRl
eDsKICAgICBjb25zdCB1bnNpZ25lZCBtX2xhc3RJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCAwZDU1YzkxZjgzODEuLjk2MDM1NjUwZjRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtMTE5LDkg
KzExOSw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjaGFyMTZfdCBvcGVyYXRvcltdKHVuc2ln
bmVkIGkpIGNvbnN0IHsgUkVMRUFTRV9BU1NFUlQoaSA8IG1fdGV4dC5sZW5ndGgoKSk7IHJldHVy
biBtX3RleHRbaV07IH0KLSAgICBzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBzcGFu
OCgpIGNvbnN0IExJRkVUSU1FX0JPVU5EIHsgQVNTRVJUKGlzOEJpdCgpKTsgcmV0dXJuIG1fdGV4
dC5zcGFuOCgpOyB9CisgICAgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBzcGFuOCgpIGNvbnN0IExJ
RkVUSU1FX0JPVU5EIHsgQVNTRVJUKGlzOEJpdCgpKTsgcmV0dXJuIG1fdGV4dC5zcGFuOCgpOyB9
CiAgICAgc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBzcGFuMTYoKSBjb25zdCBMSUZFVElNRV9C
T1VORCB7IEFTU0VSVCghaXM4Qml0KCkpOyByZXR1cm4gbV90ZXh0LnNwYW4xNigpOyB9Ci0gICAg
c3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gc3Vic3BhbjgodW5zaWduZWQgaSkgY29u
c3QgTElGRVRJTUVfQk9VTkQgeyByZXR1cm4gc3BhbjgoKS5zdWJzcGFuKGkpOyB9CisgICAgc3Rk
OjpzcGFuPGNvbnN0IExDaGFyPiBzdWJzcGFuOCh1bnNpZ25lZCBpKSBjb25zdCBMSUZFVElNRV9C
T1VORCB7IHJldHVybiBzcGFuOCgpLnN1YnNwYW4oaSk7IH0KICAgICBzdGQ6OnNwYW48Y29uc3Qg
Y2hhcjE2X3Q+IHN1YnNwYW4xNih1bnNpZ25lZCBpKSBjb25zdCBMSUZFVElNRV9CT1VORCB7IHJl
dHVybiBzcGFuMTYoKS5zdWJzcGFuKGkpOyB9CiAKICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dC5pczhCaXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHAKaW5kZXggNmRjNjUzNmRlMDMxLi5hZDRiOGY3MWQ0ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtOTYsOCArOTYsOSBAQCBzdGF0
aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxi
YXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5zcGFuKCkgfTsKIAotICAg
IGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGJ5dGVDYXN0PExhdGluMUNoYXJh
Y3Rlcj4oYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPnNwYW4oKSkpOworICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCiAgICAgICAg
IHJldHVybiB7IH07CiAKQEAgLTIxNyw4ICsyMTgsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtl
eQogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgImNvZGMiIDogW2ludGVnZXJdLCAgIm10
eXAiIDogW2ludGVnZXJdLCAgImNvbnQiIDogIm1wdHMifSB9IgogICAgIGlmIChidWZmZXIuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1
cm4geyB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPnNwYW4o
KSB9OwogCi0gICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oYnl0ZUNhc3Q8
TGF0aW4xQ2hhcmFjdGVyPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+c3BhbigpKSk7CisgICAg
YXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA5
MThlYWNhNjBlN2UuLmVmNGY3YTU5MzE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAg
LTMzOCw3ICszMzgsNyBAQCBzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1
ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUg
cm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04o
Ynl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+c3Bhbigp
KSk7CisgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJzZUpTT04oYnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPnNwYW4oKSk7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnN1cHBvcnRzUGVyc2lzdGFibGVTdGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlw
ZS5jcHAKaW5kZXggMDQ1NWY5NzgxODk5Li5kZTQ5OTUzZjBmYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCBzdGF0aWMgU3RyaW5nIGZvbnROYW1l
TWFwTmFtZShGVF9GYWNlIGZhY2UsIHVuc2lnbmVkIGlkKQogICAgICAgICBzd2l0Y2ggKG5hbWUu
cGxhdGZvcm1faWQpIHsKICAgICAgICAgY2FzZSBUVF9QTEFURk9STV9NQUNJTlRPU0g6CiAgICAg
ICAgICAgICBpZiAobmFtZS5lbmNvZGluZ19pZCA9PSBUVF9NQUNfSURfUk9NQU4pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZyh7IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4obmFtZS5z
dHJpbmcpLCBuYW1lLnN0cmluZ19sZW4gfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Zyh7IG5hbWUuc3RyaW5nLCBuYW1lLnN0cmluZ19sZW4gfSk7CiAgICAgICAgICAgICAvLyBGSVhN
RTogaW1wbGVtZW50IG90aGVyIG1hY2ludG9zaCBlbmNvZGluZ3MuCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUVF9QTEFURk9STV9BUFBMRV9VTklDT0RFOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKaW5kZXggOGRlODQ2MDBmMjM2Li41NDZkNTRkNzZmZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1UaHVuZGVyLmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gMHU7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUoKSA+PSA3KSB7CiAg
ICAgICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXItPnJlYWQoMCwgNyk7Ci0gICAgICAgICAgICBT
dHJpbmdWaWV3IGRhdGFTdHJpbmcoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihkYXRhLnNwYW4o
KSkpOworICAgICAgICAgICAgU3RyaW5nVmlldyBkYXRhU3RyaW5nKGRhdGEuc3BhbigpKTsKICAg
ICAgICAgICAgIGlmIChkYXRhU3RyaW5nLmVuZHNXaXRoKCI6VHlwZToiX3MpKSB7CiAgICAgICAg
ICAgICAgICAgbV90eXBlLmVtcGxhY2Uoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNz
YWdlVHlwZT4oZGF0YVN0cmluZy5jaGFyYWN0ZXJBdCgwKSAtICcwJykpOwogICAgICAgICAgICAg
ICAgIG9mZnNldCA9IDc7CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SUQKICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCwgc2Vzc2lvbkxvYWRGYWlsdXJlRnJv
bVRodW5kZXIoeyB9KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRv
IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlTWVzc2FnZS0+ZXh0cmFjdERhdGEoKTsKLSAgICAgICAg
ICAgICAgICBTdHJpbmdWaWV3IHJlc3BvbnNlKGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4ocmVz
cG9uc2VEYXRhLnNwYW4oKSkpOworICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcgcmVzcG9uc2Uo
cmVzcG9uc2VEYXRhLnNwYW4oKSk7CiAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJFcnJvciBt
ZXNzYWdlOiAlcyIsIHJlc3BvbnNlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkLCBzZXNzaW9uTG9hZEZhaWx1cmVGcm9tVGh1bmRlcihyZXNwb25zZSkpOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVlRUQ3VlLmNwcAppbmRleCA1ZjkzODU2YjkwMjcuLmEwMGFhYmI3NDViNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAK
QEAgLTU2LDExICs1NiwxMSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoY2hhcmFjdGVyQ291bnQg
PiBieXRlc1JlbWFpbmluZykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBW
ZWN0b3I8Y2hhcjhfdD4gY2hhcmFjdGVyczsKKyAgICAgICAgVmVjdG9yPExDaGFyPiBjaGFyYWN0
ZXJzOwogICAgICAgICBjaGFyYWN0ZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RhdGljX2Nh
c3Q8c2l6ZV90PihjaGFyYWN0ZXJDb3VudCkpOwogICAgICAgICB3aGlsZSAoY2hhcmFjdGVyQ291
bnQtLSkgewotICAgICAgICAgICAgY2hhcjhfdCBjaGFyYWN0ZXIgPSAwOwotICAgICAgICAgICAg
aWYgKCFjaGVja2VkUmVhZDxjaGFyOF90PihjaGFyYWN0ZXIsIHZpZXcsIGxvY2FsT2Zmc2V0LCBC
aWdFbmRpYW4pKQorICAgICAgICAgICAgaW50OF90IGNoYXJhY3RlciA9IDA7CisgICAgICAgICAg
ICBpZiAoIWNoZWNrZWRSZWFkPGludDhfdD4oY2hhcmFjdGVyLCB2aWV3LCBsb2NhbE9mZnNldCwg
QmlnRW5kaWFuKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBj
aGFyYWN0ZXJzLmFwcGVuZChjaGFyYWN0ZXIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nc3RyZWFtZXIvR1N0cmVhbWVyRWxlbWVudEhhcm5lc3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3N0cmVhbWVyL0dTdHJlYW1lckVsZW1lbnRIYXJu
ZXNzLmNwcAppbmRleCA2NmMwZDRmYjMxYmUuLjUwMjFkN2FkNzQ3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3N0cmVhbWVyL0dTdHJlYW1lckVsZW1lbnRIYXJuZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nc3RyZWFtZXIvR1N0cmVhbWVyRWxlbWVu
dEhhcm5lc3MuY3BwCkBAIC02ODMsNyArNjgzLDcgQEAgU3RyaW5nIE1lcm1haWRCdWlsZGVyOjpk
ZXNjcmliZUNhcHMoY29uc3QgR1JlZlB0cjxHc3RDYXBzPiYgY2FwcykKIAogc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IE1lcm1haWRCdWlsZGVyOjpzcGFuKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
Ynl0ZUNhc3Q8dWludDhfdD4obV9zdHJpbmdCdWlsZGVyLnNwYW44KCkpOworICAgIHJldHVybiBt
X3N0cmluZ0J1aWxkZXIuc3Bhbjx1aW50OF90PigpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggZTZkNDdlM2NmZDI2Li4xMzdlOTUzYzNhZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyB2b2lkIFBOR0FQ
SSBkZWNvZGluZ1dhcm5pbmcocG5nX3N0cnVjdHAgcG5nLCBwbmdfY29uc3RfY2hhcnAgd2Fybmlu
Z01zZykKICAgICAvLyBNb3ppbGxhIGRpZCB0aGlzLCBzbyB3ZSB3aWxsIHRvby4KICAgICAvLyBD
b252ZXJ0IGEgdFJOUyB3YXJuaW5nIHRvIGJlIGFuIGVycm9yIChzZWUKICAgICAvLyBodHRwOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTM4MSApCi0gICAgaWYgKHNw
YW5IYXNQcmVmaXgodW5zYWZlU3BhbihieXRlQ2FzdDxjaGFyPih3YXJuaW5nTXNnKSksICJNaXNz
aW5nIFBMVEUgYmVmb3JlIHRSTlMiX3NwYW4pKQorICAgIGlmIChzcGFuSGFzUHJlZml4KHVuc2Fm
ZVNwYW4od2FybmluZ01zZyksICJNaXNzaW5nIFBMVEUgYmVmb3JlIHRSTlMiX3NwYW4pKQogICAg
ICAgICBwbmdfZXJyb3IocG5nLCB3YXJuaW5nTXNnKTsKIH0KIApAQCAtNTY1LDcgKzU2NSw3IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFs
dEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlCiAKIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyZWFkQ2h1
bmtzKHBuZ191bmtub3duX2NodW5rcCBjaHVuaykKIHsKLSAgICBpZiAoY2h1bmstPnNpemUgPT0g
OCAmJiBzcGFuSGFzUHJlZml4KGJ5dGVDYXN0PGNoYXI+KHN0ZDo6c3BhbiB7IGNodW5rLT5uYW1l
IH0pLCAiYWNUTCJfc3BhbikpIHsKKyAgICBpZiAoY2h1bmstPnNpemUgPT0gOCAmJiBzcGFuSGFz
UHJlZml4KHVuc2FmZVNwYW4oY2h1bmstPm5hbWUpLCAiYWNUTCJfc3BhbikpIHsKICAgICAgICAg
aWYgKG1faGFzSW5mbyB8fCBtX2lzQW5pbWF0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTU4NSw3ICs1ODUsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cmVhZENodW5rcyhwbmdfdW5r
bm93bl9jaHVua3AgY2h1bmspCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlLnJlc2l6ZShtX2ZyYW1lQ291bnQpOwotICAgIH0gZWxzZSBpZiAoY2h1bmst
PnNpemUgPT0gMjYgJiYgc3Bhbkhhc1ByZWZpeChieXRlQ2FzdDxjaGFyPihzdGQ6OnNwYW4geyBj
aHVuay0+bmFtZSB9KSwgImZjVEwiX3NwYW4pKSB7CisgICAgfSBlbHNlIGlmIChjaHVuay0+c2l6
ZSA9PSAyNiAmJiBzcGFuSGFzUHJlZml4KHVuc2FmZVNwYW4oY2h1bmstPm5hbWUpLCAiZmNUTCJf
c3BhbikpIHsKICAgICAgICAgaWYgKG1faGFzSW5mbyAmJiAhbV9pc0FuaW1hdGVkKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC02NTIsNyArNjUyLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6
OnJlYWRDaHVua3MocG5nX3Vua25vd25fY2h1bmtwIGNodW5rKQogICAgICAgICAgICAgZmFsbGJh
Y2tOb3RBbmltYXRlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmIChjaHVuay0+c2l6ZSA+PSA0ICYmIHNwYW5IYXNQcmVmaXgoYnl0ZUNhc3Q8Y2hhcj4o
c3RkOjpzcGFuIHsgY2h1bmstPm5hbWUgfSksICJmZEFUIl9zcGFuKSkgeworICAgIH0gZWxzZSBp
ZiAoY2h1bmstPnNpemUgPj0gNCAmJiBzcGFuSGFzUHJlZml4KHVuc2FmZVNwYW4oY2h1bmstPm5h
bWUpLCAiZmRBVCJfc3BhbikpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lSW5mbyB8fCAhbV9pc0Fu
aW1hdGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAKaW5kZXggOGRlYjJlZjIzZmE0Li5lY2MzNTg5NmI0YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
ewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07Ci0gICAgICAgIFZlY3Rv
cjx1aW50OF90PiB2YWx1ZShieXRlQ2FzdDx1aW50OF90PihtX2J1ZmZlci5zcGFuOCgpKSk7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShtX2J1ZmZlci5zcGFuPHVpbnQ4X3Q+KCkpOwog
ICAgICAgICBtX2J1ZmZlci5jbGVhcigpOwogICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCAwMGRjYTNhOTA5YmQuLjIyNjYyNTll
ZGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5jcHAKQEAgLTMxMiwxOCArMzEyLDE5IEBAIGJvb2wgaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB9CiAjZW5kaWYKIAotc3RhdGljIFN0cmluZyB0cmlt
SW5wdXRTYW1wbGUoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQorc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0gMTI4OwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhclR5cGU+CitzdGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShzdGQ6OnNwYW48Y29uc3Qg
Q2hhclR5cGU+IGlucHV0KQogewotICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4SW5wdXRTYW1wbGVT
aXplID0gMTI4OwogICAgIGlmIChpbnB1dC5zaXplKCkgPD0gbWF4SW5wdXRTYW1wbGVTaXplKQot
ICAgICAgICByZXR1cm4gYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihpbnB1dCk7Ci0gICAgcmV0
dXJuIG1ha2VTdHJpbmcoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihpbnB1dC5maXJzdChtYXhJ
bnB1dFNhbXBsZVNpemUpKSwgaG9yaXpvbnRhbEVsbGlwc2lzKTsKKyAgICAgICAgcmV0dXJuIGlu
cHV0OworICAgIHJldHVybiBtYWtlU3RyaW5nKGlucHV0LmZpcnN0KG1heElucHV0U2FtcGxlU2l6
ZSksIGhvcml6b250YWxFbGxpcHNpcyk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHBh
cnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogcGFyc2VE
YXRlKCkgcmVxdWlyZXMgTGF0aW4xLCBidXQgd2UncmUgcGFzc2luZyBpdCBVVEYtOC4KLSAgICBk
b3VibGUgZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZShieXRlQ2FzdDxM
YXRpbjFDaGFyYWN0ZXI+KHZhbHVlLnV0ZjgoKS5zcGFuKCkpKTsKKyAgICBkb3VibGUgZGF0ZUlu
TWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZShieXRlQ2FzdDxMQ2hhcj4odmFsdWUu
dXRmOCgpLnNwYW4oKSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZShkYXRlSW5NaWxsaXNlY29u
ZHNTaW5jZUVwb2NoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAvLyBUaGlz
IGFzc3VtZXMgc3lzdGVtX2Nsb2NrIGVwb2NoIGVxdWFscyBVbml4IGVwb2NoIHdoaWNoIGlzIHRy
dWUgZm9yIGFsbCBpbXBsZW1lbnRhdGlvbnMgYnV0IHVuc3BlY2lmaWVkLgpAQCAtNzUzLDcgKzc1
NCw3IEBAIHNpemVfdCBwYXJzZUhUVFBIZWFkZXIoc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRh
dGEsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3RyCiAgICAgfQogCiAgICAgbmFtZVNpemUgPSBu
YW1lLnNpemUoKTsKLSAgICBuYW1lU3RyID0gYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihuYW1l
UHRyLmZpcnN0KG5hbWVTaXplKSk7CisgICAgbmFtZVN0ciA9IG5hbWVQdHIuZmlyc3QobmFtZVNp
emUpOwogCiAgICAgV1RGOjpza2lwV2hpbGUocCwgJyAnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDdkMGZmYjAx
ZDBjZi4uYzQ4YzdkMTM5MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgZG9tYWlu
TWF0Y2goY29uc3QgU3RyaW5nJiBjb29raWVEb21haW4sIGNvbnN0IFN0cmluZyYgaG9zdCkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VF
eHBpcmVzTVMoc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4gZXhwaXJlcykKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VFeHBpcmVzTVMoc3RkOjpzcGFuPGNvbnN0IExD
aGFyPiBleHBpcmVzKQogewogICAgIGRvdWJsZSB0bXAgPSBwYXJzZURhdGUoZXhwaXJlcyk7CiAg
ICAgaWYgKGlzbmFuKHRtcCkpCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcGFyc2VD
b29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBoYXNNYXhBZ2Us
IENvb2sKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoYXR0cmlidXRlTmFtZSwgImV4cGlyZXMiX3MpICYmICFoYXNNYXhBZ2UpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY29kZSBwYXNzZXMgYSBVVEYtOCBidWZmZXIgdG8gYSBmdW5jdGlv
biB0aGF0IGV4cGVjdHMgdG8gcGFyc2UgTGF0aW4xLgotICAgICAgICBpZiAoYXV0byBleHBpcnlU
aW1lID0gcGFyc2VFeHBpcmVzTVMoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihhdHRyaWJ1dGVW
YWx1ZS51dGY4KCkuc3BhbigpKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gZXhwaXJ5VGltZSA9IHBh
cnNlRXhwaXJlc01TKGJ5dGVDYXN0PExDaGFyPihhdHRyaWJ1dGVWYWx1ZS51dGY4KCkuc3Bhbigp
KSkpIHsKICAgICAgICAgICAgIHJlc3VsdC5leHBpcmVzID0gZXhwaXJ5VGltZS52YWx1ZSgpOwog
ICAgICAgICAgICAgcmVzdWx0LnNlc3Npb24gPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmICgh
aGFzTWF4QWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvT3BlblNTTEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvT3BlblNTTEhlbHBlci5jcHAKaW5kZXggZTkxNmRlZjFiYjY0Li41MDRmODAxZjgxMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NM
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3Bl
blNTTEhlbHBlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChs
ZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgIHJldHVy
biBTdHJpbmcoeyBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGRhdGEpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkgfSk7CisgICAgICAgIHJldHVybiBTdHJpbmcoeyBkYXRhLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkgfSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFg1
MDksIGRlbGV0ZXI8WDUwOT4+IHJlYWRYNTA5KCkKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IEFTTjFfU1RSSU5HKiBuYW1lKQogICAgIGlmIChsZW5ndGgg
PD0gMCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgU3RyaW5nIHJlc3VsdCh7IGJ5
dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oZGF0YSksIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3Ro
KSB9KTsKKyAgICBTdHJpbmcgcmVzdWx0KHsgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5n
dGgpIH0pOwogICAgIE9QRU5TU0xfZnJlZShkYXRhKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmlj
YXRlSW5mb1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nl
cnRpZmljYXRlSW5mb1NvdXAuY3BwCmluZGV4IDFmZTBmM2ZjYjM5MS4uZjMyZWNjYTdhMzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNh
dGVJbmZvU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0NlcnRpZmljYXRlSW5mb1NvdXAuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpvcHRpb25h
bDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeSgpIGNvbnN0CiAg
ICAgaWYgKHN1YmplY3ROYW1lKQogICAgICAgICBzdW1tYXJ5SW5mby5zdWJqZWN0ID0gU3RyaW5n
Ojpmcm9tVVRGOChzdWJqZWN0TmFtZS5nZXQoKSk7CiAgICAgZm9yIChhdXRvIGRuc05hbWUgOiBz
cGFuPEdCeXRlcyo+KGRuc05hbWVzKSkKLSAgICAgICAgc3VtbWFyeUluZm8uZG5zTmFtZXMuYXBw
ZW5kKFN0cmluZyhieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHNwYW4oZG5zTmFtZSkpKSk7Cisg
ICAgICAgIHN1bW1hcnlJbmZvLmRuc05hbWVzLmFwcGVuZChTdHJpbmcoc3BhbihkbnNOYW1lKSkp
OwogICAgIGZvciAoYXV0byBhZGRyZXNzIDogc3BhbjxHSW5ldEFkZHJlc3MqPihpcEFkZHJlc3Nl
cykpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpcEFkZHJlc3MoZ19pbmV0X2FkZHJlc3Nf
dG9fc3RyaW5nKGFkZHJlc3MpKTsKICAgICAgICAgc3VtbWFyeUluZm8uaXBBZGRyZXNzZXMuYXBw
ZW5kKFN0cmluZzo6ZnJvbVVURjgoaXBBZGRyZXNzLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaAppbmRleCAxZmQyOGNiMTgyN2MuLjVj
M2MwMmQ4MjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdt
ZW50ZWRTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRl
ZFN0cmluZy5oCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBDaGFyYWN0
ZXJzU3BhbigpCiAgICAgICAgICAgICAgICAgOiBjdXJyZW50Q2hhcmFjdGVyOCgpCiAgICAgICAg
ICAgICB7IH0KLSAgICAgICAgICAgIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGN1
cnJlbnRDaGFyYWN0ZXI4OworICAgICAgICAgICAgc3RkOjpzcGFuPGNvbnN0IExDaGFyPiBjdXJy
ZW50Q2hhcmFjdGVyODsKICAgICAgICAgICAgIHN0ZDo6c3Bhbjxjb25zdCBjaGFyMTZfdD4gY3Vy
cmVudENoYXJhY3RlcjE2OwogICAgICAgICB9IHM7CiAgICAgICAgIGJvb2wgaXM4Qml0IHsgdHJ1
ZSB9OwpAQCAtMTgzLDcgKzE4Myw3IEBAIGlubGluZSB1bnNpZ25lZCBTZWdtZW50ZWRTdHJpbmc6
OlN1YnN0cmluZzo6bnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSBjb25zdAogQUxXQVlTX0lO
TElORSBjaGFyMTZfdCBTZWdtZW50ZWRTdHJpbmc6OlN1YnN0cmluZzo6Y3VycmVudENoYXJhY3Rl
cigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0aCgpKTsKLSAgICByZXR1cm4gaXM4Qml0ID8g
Y2hhcjE2X3QgeyBzLmN1cnJlbnRDaGFyYWN0ZXI4LmZyb250KCkgfSA6IHMuY3VycmVudENoYXJh
Y3RlcjE2LmZyb250KCk7CisgICAgcmV0dXJuIGlzOEJpdCA/IHMuY3VycmVudENoYXJhY3Rlcjgu
ZnJvbnQoKSA6IHMuY3VycmVudENoYXJhY3RlcjE2LmZyb250KCk7CiB9CiAKIEFMV0FZU19JTkxJ
TkUgY2hhcjE2X3QgU2VnbWVudGVkU3RyaW5nOjpTdWJzdHJpbmc6OmN1cnJlbnRDaGFyYWN0ZXJQ
cmVJbmNyZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFr
TGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKaW5kZXggZDVj
MGJhNjg2YmNlLi4xYTMzOWFkNWIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGlu
ZXMuaApAQCAtOTcsNiArOTcsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gSWYgd2UgcHVsbCBt
b3JlIGxvZ2ljIGludG8gaXNCcmVha2FibGUsIHRoZXNlIG1heSBuZWVkIHRvIGJlIGRpc3Rpbmd1
aXNoZWQuCiAgICAgfTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Cisg
ICAgc3RydWN0IENoYXJhY3RlckluZm8geworICAgICAgICBDaGFyYWN0ZXJUeXBlIGlkIHsgMCB9
OworICAgICAgICBCcmVha0NsYXNzIHR5cGUgeyBrSW5kZXRlcm1pbmF0ZSB9OworICAgICAgICBD
aGFyYWN0ZXJJbmZvKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyID0gMCkKKyAgICAgICAgICAgIDog
aWQoY2hhcmFjdGVyKQorICAgICAgICAgICAgLCB0eXBlKGtJbmRldGVybWluYXRlKQorICAgICAg
ICB7IH0KKyAgICAgICAgaW5saW5lIHZvaWQgc2V0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZCA9IGNoYXJhY3RlcjsKKyAgICAgICAgICAgIHR5cGUg
PSBrSW5kZXRlcm1pbmF0ZTsKKyAgICAgICAgfQorICAgICAgICBvcGVyYXRvciBDaGFyYWN0ZXJU
eXBlKCkgY29uc3QgeyByZXR1cm4gaWQ7IH0KKyAgICB9OworCiAgICAgY2xhc3MgTGluZUJyZWFr
VGFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyMTZfdCBm
aXJzdENoYXJhY3RlciA9ICchJzsKQEAgLTEzMyw0OCArMTQ5LDQ1IEBAIGlubGluZSBib29sIEJy
ZWFrTGluZXM6OmlzQnJlYWthYmxlU3BhY2UoY2hhcjE2X3QgY2hhcmFjdGVyKQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBCcmVha0xpbmVzOjpMaW5lQnJlYWtSdWxlcyBz
aG9ydGN1dFJ1bGVzLCBCcmVha0xpbmVzOjpXb3JkQnJlYWtCZWhhdmlvciB3b3JkcywgQnJlYWtM
aW5lczo6Tm9CcmVha1NwYWNlQmVoYXZpb3Igbm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yPgotaW5s
aW5lIHNpemVfdCBCcmVha0xpbmVzOjpuZXh0QnJlYWthYmxlUG9zaXRpb24oQ2FjaGVkTGluZUJy
ZWFrSXRlcmF0b3JGYWN0b3J5JiBmYWN0b3J5LCBzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlw
ZT4gc3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbikKK2lubGluZSBzaXplX3QgQnJlYWtMaW5l
czo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKENhY2hlZExpbmVCcmVha0l0ZXJhdG9yRmFjdG9yeSYg
bGluZUJyZWFrSXRlcmF0b3JGYWN0b3J5LCBzdGQ6OnNwYW48Y29uc3QgQ2hhcmFjdGVyVHlwZT4g
c3RyaW5nLCBzaXplX3Qgc3RhcnRQb3NpdGlvbikKIHsKLSAgICBzdHJ1Y3QgQ2hhcmFjdGVySW5m
byB7Ci0gICAgICAgIGNoYXIxNl90IGNoYXJhY3RlciB7IDAgfTsKLSAgICAgICAgQnJlYWtDbGFz
cyB0eXBlIHsga0luZGV0ZXJtaW5hdGUgfTsKLSAgICB9OwotCiAgICAgLy8gRG9uJ3QgYnJlYWsg
aWYgcG9zaXRpb25lZCBhdCBzdGFydCBvZiBwcmltYXJ5IGNvbnRleHQgYW5kIHRoZXJlIGlzIG5v
IHByaW9yIGNvbnRleHQuCi0gICAgYXV0byYgcHJpb3JDb250ZXh0ID0gZmFjdG9yeS5wcmlvckNv
bnRleHQoKTsKLSAgICBpZiAoIXN0YXJ0UG9zaXRpb24gJiYgIXByaW9yQ29udGV4dC5sZW5ndGgo
KSkgeworICAgIGF1dG8gcHJpb3JDb250ZXh0TGVuZ3RoID0gbGluZUJyZWFrSXRlcmF0b3JGYWN0
b3J5LnByaW9yQ29udGV4dCgpLmxlbmd0aCgpOworICAgIGlmICghc3RhcnRQb3NpdGlvbiAmJiAh
cHJpb3JDb250ZXh0TGVuZ3RoKSB7CiAgICAgICAgIGlmIChzdHJpbmcuc2l6ZSgpIDw9IDEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RyaW5nLnNpemUoKTsKICAgICAgICAgc3RhcnRQb3NpdGlvbisr
OwogICAgIH0KIAotICAgIENoYXJhY3RlckluZm8gYmVmb3JlQmVmb3JlIHsgc3RhcnRQb3NpdGlv
biA+IDEgPyBjaGFyMTZfdCB7IHN0cmluZ1tzdGFydFBvc2l0aW9uIC0gMl0gfSA6IHByaW9yQ29u
dGV4dC5zZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSB9OwotICAgIENoYXJhY3RlckluZm8gYmVmb3Jl
IHsgc3RhcnRQb3NpdGlvbiA+IDAgPyBjaGFyMTZfdCB7IHN0cmluZ1tzdGFydFBvc2l0aW9uIC0g
MV0gfSA6IHByaW9yQ29udGV4dC5sYXN0Q2hhcmFjdGVyKCkgfTsKLSAgICBDaGFyYWN0ZXJJbmZv
IGFmdGVyOworICAgIENoYXJhY3RlckluZm88Q2hhcmFjdGVyVHlwZT4gYmVmb3JlQmVmb3JlKHN0
YXJ0UG9zaXRpb24gPiAxID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAyXQorICAgICAgICA6IHN0
YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxpbmVCcmVha0l0ZXJhdG9yRmFjdG9yeS5wcmlvckNv
bnRleHQoKS5zZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSkpOworICAgIENoYXJhY3RlckluZm88Q2hh
cmFjdGVyVHlwZT4gYmVmb3JlKHN0YXJ0UG9zaXRpb24gPiAwID8gc3RyaW5nW3N0YXJ0UG9zaXRp
b24gLSAxXQorICAgICAgICA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxpbmVCcmVha0l0
ZXJhdG9yRmFjdG9yeS5wcmlvckNvbnRleHQoKS5sYXN0Q2hhcmFjdGVyKCkpKTsKKyAgICBDaGFy
YWN0ZXJJbmZvPENoYXJhY3RlclR5cGU+IGFmdGVyOwogCiAgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5leHRCcmVhazsKICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRQb3NpdGlvbjsgaSA8IHN0
cmluZy5zaXplKCk7IGJlZm9yZUJlZm9yZSA9IGJlZm9yZSwgYmVmb3JlID0gYWZ0ZXIsICsraSkg
ewotICAgICAgICBhZnRlciA9IHsgc3RyaW5nW2ldIH07CisgICAgICAgIGFmdGVyLnNldChzdHJp
bmdbaV0pOwogCiAgICAgICAgIC8vIEJyZWFrYWJsZSBzcGFjZXMuCi0gICAgICAgIGlmIChpc0Jy
ZWFrYWJsZVNwYWNlPG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4oYWZ0ZXIuY2hhcmFjdGVyKSkK
KyAgICAgICAgaWYgKGlzQnJlYWthYmxlU3BhY2U8bm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yPihh
ZnRlcikpCiAgICAgICAgICAgICByZXR1cm4gaTsKIAogICAgICAgICAvLyBBU0NJSSByYXBpZCBs
b29rdXAuCiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvcnRjdXRSdWxlcyA9PSBMaW5lQnJlYWtS
dWxlczo6Tm9ybWFsKSB7IC8vIE5vdCB2YWxpZCBmb3IgJ2xvb3NlJyBsaW5lLWJyZWFraW5nLgog
ICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgbGluZSBicmVha2luZyBiZXR3ZWVuICctJyBhbmQg
YSBkaWdpdCBpZiB0aGUgJy0nIG1heSBtZWFuIGEgbWludXMgc2lnbiBpbiB0aGUgY29udGV4dCwK
ICAgICAgICAgICAgIC8vIHdoaWxlIGFsbG93IGJyZWFraW5nIGluICdBQkNELTEyMzQnIGFuZCAn
MTIzNC01Njc4JyB3aGljaCBtYXkgYmUgaW4gbG9uZyBVUkxzLgotICAgICAgICAgICAgaWYgKGJl
Zm9yZS5jaGFyYWN0ZXIgPT0gJy0nICYmIGlzQVNDSUlEaWdpdChhZnRlci5jaGFyYWN0ZXIpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMoYmVmb3JlQmVmb3JlLmNo
YXJhY3RlcikpCisgICAgICAgICAgICBpZiAoYmVmb3JlID09ICctJyAmJiBpc0FTQ0lJRGlnaXQo
YWZ0ZXIpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMoYmVmb3Jl
QmVmb3JlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIElmIGJvdGggY2hhcmFj
dGVycyBhcmUgQVNDSUksIHVzZSBhIGxvb2t1cCB0YWJsZSBmb3IgZW5oYW5jZWQgc3BlZWQKICAg
ICAgICAgICAgIC8vIGFuZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIGJyb3dzZXJzIChz
ZWUgY29tbWVudHMgb24gbGluZUJyZWFrVGFibGUgZm9yIGRldGFpbHMpLgotICAgICAgICAgICAg
aWYgKGJlZm9yZS5jaGFyYWN0ZXIgPD0gbGluZUJyZWFrVGFibGUubGFzdENoYXJhY3RlciAmJiBh
ZnRlci5jaGFyYWN0ZXIgPD0gbGluZUJyZWFrVGFibGUubGFzdENoYXJhY3RlcikgewotICAgICAg
ICAgICAgICAgIGlmIChiZWZvcmUuY2hhcmFjdGVyID49IGxpbmVCcmVha1RhYmxlLmZpcnN0Q2hh
cmFjdGVyICYmIGFmdGVyLmNoYXJhY3RlciA+PSBsaW5lQnJlYWtUYWJsZS5maXJzdENoYXJhY3Rl
cikgewotICAgICAgICAgICAgICAgICAgICBpZiAobGluZUJyZWFrVGFibGUudW5zYWZlTG9va3Vw
KGJlZm9yZS5jaGFyYWN0ZXIsIGFmdGVyLmNoYXJhY3RlcikpCisgICAgICAgICAgICBpZiAoYmVm
b3JlIDw9IGxpbmVCcmVha1RhYmxlLmxhc3RDaGFyYWN0ZXIgJiYgYWZ0ZXIgPD0gbGluZUJyZWFr
VGFibGUubGFzdENoYXJhY3RlcikgeworICAgICAgICAgICAgICAgIGlmIChiZWZvcmUgPj0gbGlu
ZUJyZWFrVGFibGUuZmlyc3RDaGFyYWN0ZXIgJiYgYWZ0ZXIgPj0gbGluZUJyZWFrVGFibGUuZmly
c3RDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVCcmVha1RhYmxlLnVu
c2FmZUxvb2t1cChiZWZvcmUsIGFmdGVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBpOwogICAgICAgICAgICAgICAgIH0gLy8gRWxzZSBhdCBsZWFzdCBvbmUgaXMgYW4gQVNDSUkg
Y29udHJvbCBjaGFyYWN0ZXI7IGRvbid0IGJyZWFrLgogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwpAQCAtMTg0LDggKzE5Nyw4IEBAIGlubGluZSBzaXplX3QgQnJlYWtMaW5lczo6bmV4dEJyZWFr
YWJsZVBvc2l0aW9uKENhY2hlZExpbmVCcmVha0l0ZXJhdG9yRmFjdG9yeSYKICAgICAgICAgLy8g
Tm9uLUFTQ0lJIHJhcGlkIGxvb2t1cC4KICAgICAgICAgaWYgY29uc3RleHByICh3b3JkcyAhPSBX
b3JkQnJlYWtCZWhhdmlvcjo6QXV0b1BocmFzZSkgewogICAgICAgICAgICAgaWYgKCFiZWZvcmUu
dHlwZSkKLSAgICAgICAgICAgICAgICBiZWZvcmUudHlwZSA9IGNsYXNzaWZ5PHNob3J0Y3V0UnVs
ZXMsIG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4oYmVmb3JlLmNoYXJhY3Rlcik7Ci0gICAgICAg
ICAgICBhZnRlci50eXBlID0gY2xhc3NpZnk8c2hvcnRjdXRSdWxlcywgbm9uQnJlYWtpbmdTcGFj
ZUJlaGF2aW9yPihhZnRlci5jaGFyYWN0ZXIpOworICAgICAgICAgICAgICAgIGJlZm9yZS50eXBl
ID0gY2xhc3NpZnk8c2hvcnRjdXRSdWxlcywgbm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yPihiZWZv
cmUpOworICAgICAgICAgICAgYWZ0ZXIudHlwZSA9IGNsYXNzaWZ5PHNob3J0Y3V0UnVsZXMsIG5v
bkJyZWFraW5nU3BhY2VCZWhhdmlvcj4oYWZ0ZXIpOwogICAgICAgICAgICAgLy8gU2hvcnQtY2ly
Y3VpdCB0aGUgY29tbW9uZXN0IGNhc2VzOiBsZXR0ZXIgKyBsZXR0ZXIuCiAgICAgICAgICAgICB1
bnNpZ25lZCBwYWlyID0gYmVmb3JlLnR5cGUgfCBhZnRlci50eXBlOwogICAgICAgICAgICAgLy8g
QUwrQUwgU1ArQUwgU1ArUVUgQUwrUVUgUVUrUVUgUVUrQUwgKGFmdGVyJ3MgU1AgaXMgYWxyZWFk
eSBmaWx0ZXJlZCBvdXQpLgpAQCAtMjIyLDE4ICsyMzUsMjAgQEAgaW5saW5lIHNpemVfdCBCcmVh
a0xpbmVzOjpuZXh0QnJlYWthYmxlUG9zaXRpb24oQ2FjaGVkTGluZUJyZWFrSXRlcmF0b3JGYWN0
b3J5JgogICAgICAgICB9CiAKICAgICAgICAgLy8gSUNVIGxvb2t1cCAoc2xvdykuCi0gICAgICAg
IGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkKLSAgICAgICAgICAgIG5l
eHRCcmVhayA9IGZhY3RvcnkuZ2V0KCkuZm9sbG93aW5nKGkgLSAxKTsKKyAgICAgICAgaWYgKCFu
ZXh0QnJlYWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CisgICAgICAgICAgICBhdXRvJiBi
cmVha0l0ZXJhdG9yID0gbGluZUJyZWFrSXRlcmF0b3JGYWN0b3J5LmdldCgpOworICAgICAgICAg
ICAgbmV4dEJyZWFrID0gYnJlYWtJdGVyYXRvci5mb2xsb3dpbmcoaSAtIDEpOworICAgICAgICB9
CiAgICAgICAgIC8vIEZhc3QgZm9yd2FyZCB3aGlsZSBvdXIgYmVoYXZpb3IgbWF0Y2hlcyBJQ1Uu
CiAgICAgICAgIGlmIChuZXh0QnJlYWsgJiYgaSA8IG5leHRCcmVhay52YWx1ZSgpKSB7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBtYXggPSBzdGQ6Om1pbihuZXh0QnJlYWsudmFsdWUoKSwgc3Ry
aW5nLnNpemUoKSAtIDEpOyBpIDwgbWF4OyBiZWZvcmVCZWZvcmUgPSBiZWZvcmUsIGJlZm9yZSA9
IGFmdGVyLCArK2kpIHsKLSAgICAgICAgICAgICAgICBjaGFyMTZfdCBsb29rYWhlYWQgPSBzdHJp
bmdbaSArIDFdOworICAgICAgICAgICAgICAgIENoYXJhY3RlclR5cGUgbG9va2FoZWFkID0gc3Ry
aW5nW2kgKyAxXTsKICAgICAgICAgICAgICAgICBpZiAoKGxvb2thaGVhZCA8PSBsaW5lQnJlYWtU
YWJsZS5sYXN0Q2hhcmFjdGVyICYmICFpc0FTQ0lJQWxwaGEobG9va2FoZWFkKSkKICAgICAgICAg
ICAgICAgICAgICAgfHwgKG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvciA9PSBOb0JyZWFrU3BhY2VC
ZWhhdmlvcjo6QnJlYWsgJiYgbG9va2FoZWFkID09IG5vQnJlYWtTcGFjZSkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChp
ID09IG5leHRCcmVhayAmJiAhaXNCcmVha2FibGVTcGFjZTxub25CcmVha2luZ1NwYWNlQmVoYXZp
b3I+KGJlZm9yZS5jaGFyYWN0ZXIpKQorICAgICAgICBpZiAoaSA9PSBuZXh0QnJlYWsgJiYgIWlz
QnJlYWthYmxlU3BhY2U8bm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yPihiZWZvcmUpKQogICAgICAg
ICAgICAgcmV0dXJuIGk7CiAgICAgfQogCkBAIC0yNzQsOCArMjg5LDggQEAgaW5saW5lIHVuc2ln
bmVkIEJyZWFrTGluZXM6Om5leHRCcmVha2FibGVQb3NpdGlvbihDYWNoZWRMaW5lQnJlYWtJdGVy
YXRvckZhY3RvcnkKIAogICAgIGlmIChzdHJpbmdWaWV3LmlzOEJpdCgpKSB7CiAgICAgICAgIHJl
dHVybiB3b3JkcyA9PSBXb3JkQnJlYWtCZWhhdmlvcjo6S2VlcEFsbAotICAgICAgICAgICAgPyBu
ZXh0QnJlYWthYmxlU3BhY2U8TGF0aW4xQ2hhcmFjdGVyLCBzcGFjZXM+KHN0cmluZ1ZpZXcuc3Bh
bjgoKSwgc3RhcnRQb3NpdGlvbikKLSAgICAgICAgICAgIDogbmV4dEJyZWFrYWJsZVBvc2l0aW9u
PExhdGluMUNoYXJhY3RlciwgcnVsZXMsIHdvcmRzLCBzcGFjZXM+KGxpbmVCcmVha0l0ZXJhdG9y
RmFjdG9yeSwgc3RyaW5nVmlldy5zcGFuOCgpLCBzdGFydFBvc2l0aW9uKTsKKyAgICAgICAgICAg
ID8gbmV4dEJyZWFrYWJsZVNwYWNlPExDaGFyLCBzcGFjZXM+KHN0cmluZ1ZpZXcuc3BhbjgoKSwg
c3RhcnRQb3NpdGlvbikKKyAgICAgICAgICAgIDogbmV4dEJyZWFrYWJsZVBvc2l0aW9uPExDaGFy
LCBydWxlcywgd29yZHMsIHNwYWNlcz4obGluZUJyZWFrSXRlcmF0b3JGYWN0b3J5LCBzdHJpbmdW
aWV3LnNwYW44KCksIHN0YXJ0UG9zaXRpb24pOwogICAgIH0KICAgICByZXR1cm4gd29yZHMgPT0g
V29yZEJyZWFrQmVoYXZpb3I6OktlZXBBbGwKICAgICAgICAgPyBuZXh0QnJlYWthYmxlU3BhY2U8
Y2hhcjE2X3QsIHNwYWNlcz4oc3RyaW5nVmlldy5zcGFuMTYoKSwgc3RhcnRQb3NpdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDc2NDJjZGU4MzEzYi4u
YTZmYjc5NGI1YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
QEAgLTMwMjAsNyArMzAyMCw3IEBAIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1CiAgICAgcmV0dXJu
IGNvbnN0cnVjdFRleHRSdW4odGV4dC5zdHJpbmdWaWV3KG9mZnNldCwgc3RvcCksIHN0eWxlLCBl
eHBhbnNpb24pOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN0
ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+IGNoYXJhY3RlcnMsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQorVGV4dFJ1biBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNoYXJhY3RlcnMs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQog
ewogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcgeyBjaGFyYWN0ZXJzIH0s
IHN0eWxlLCBleHBhbnNpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAppbmRleCBlMDBiNWY2MjU1ZGQuLjAyZjNlNjBkNzhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEV4
cGFuc2lvbkJlaGF2aW9yID0gRXhwYW5zaW9uQmVoYXZpb3I6OmRlZmF1bHRCZWhhdmlvcigpKTsK
ICAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAg
ICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEV4cGFuc2lvbkJlaGF2aW9yOjpkZWZhdWx0QmVoYXZp
b3IoKSk7Ci0gICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihzdGQ6OnNwYW48Y29u
c3QgTGF0aW4xQ2hhcmFjdGVyPiBjaGFyYWN0ZXJzLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAg
c3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihzdGQ6OnNwYW48Y29uc3QgTENoYXI+IGNo
YXJhY3RlcnMsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3Ig
PSBFeHBhbnNpb25CZWhhdmlvcjo6ZGVmYXVsdEJlaGF2aW9yKCkpOwogICAgIHN0YXRpYyBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiBjaGFyYWN0ZXJz
LCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRXhwYW5z
aW9uQmVoYXZpb3I6OmRlZmF1bHRCZWhhdmlvcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRv
Vmlld0JveC5jcHAKaW5kZXggMGE1ZmI1YWI2MTMyLi5hYzI5ZmY5Mjc5Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCkBAIC05Niw3ICs5Niw3IEBAIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveChTdHJpbmdWaWV3IHZh
bHVlKQogICAgIH0pOwogfQogCi1zdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9WaWV3
Qm94OjpwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+JiBi
dWZmZXIsIGJvb2wgdmFsaWRhdGUpCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9W
aWV3Qm94OjpwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlciwg
Ym9vbCB2YWxpZGF0ZSkKIHsKICAgICByZXR1cm4gcGFyc2VWaWV3Qm94R2VuZXJpYyhidWZmZXIs
IHZhbGlkYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1Zp
ZXdCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAppbmRleCBjNGNh
YTQ4NmY5YzMuLmY2MDdiYWYwNWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpdFRvVmlld0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3gu
aApAQCAtNjcsNyArNjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZXNldCgpOwogICAgIGJv
b2wgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
KTsKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VWaWV3Qm94KFN0cmluZ1ZpZXcp
OwotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+JiwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOworICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBwYXJzZVZpZXdCb3goU3RyaW5nUGFyc2luZ0J1ZmZlcjxM
Q2hhcj4mLCBib29sIHZhbGlkYXRlID0gdHJ1ZSk7CiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IHBhcnNlVmlld0JveChTdHJpbmdQYXJzaW5nQnVmZmVyPGNoYXIxNl90PiYsIGJvb2wgdmFs
aWRhdGUgPSB0cnVlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0
aWxpdGllcy5jcHAKaW5kZXggM2U5OWYzNTA5NTIyLi4yYjQwZGZmMmYwNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZsb2F0
PiBzdGF0aWMgc3RkOjpvcHRpb24KICAgICByZXR1cm4gbnVtYmVyOwogfQogCi1zdGQ6Om9wdGlv
bmFsPGZsb2F0PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPExhdGluMUNoYXJhY3Rl
cj4mIGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCkKK3N0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIsIFN1ZmZp
eFNraXBwaW5nUG9saWN5IHNraXApCiB7CiAgICAgcmV0dXJuIGdlbmVyaWNQYXJzZU51bWJlcihi
dWZmZXIsIHNraXApOwogfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdlbmVyaWNQYXJzZUFyY0ZsYWcoU3Ry
aW5nCiAgICAgcmV0dXJuIGZsYWc7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNG
bGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYgYnVmZmVyKQorc3RkOjpv
cHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gZ2VuZXJpY1BhcnNlQXJjRmxhZyhidWZmZXIpOwogfQpAQCAt
NDE3LDcgKzQxNyw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VGCiAgICAgcmV0dXJuIEZsb2F0
UG9pbnQgeyAqeCwgKnkgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZUZs
b2F0UG9pbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+JiBidWZmZXIpCitz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlRmxvYXRQb2ludChTdHJpbmdQYXJzaW5nQnVm
ZmVyPExDaGFyPiYgYnVmZmVyKQogewogICAgIHJldHVybiBnZW5lcmljUGFyc2VGbG9hdFBvaW50
KGJ1ZmZlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgKaW5kZXgg
ZmNjZTIxNjkzNmUyLi5jYjRmNmJmZjE1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2Vy
VXRpbGl0aWVzLmgKQEAgLTM3LDE5ICszNywxOSBAQCBlbnVtIGNsYXNzIFN1ZmZpeFNraXBwaW5n
UG9saWN5IHsKICAgICBTa2lwCiB9OwogCi1zdGQ6Om9wdGlvbmFsPGZsb2F0PiBwYXJzZU51bWJl
cihTdHJpbmdQYXJzaW5nQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4mLCBTdWZmaXhTa2lwcGluZ1Bv
bGljeSA9IFN1ZmZpeFNraXBwaW5nUG9saWN5OjpTa2lwKTsKK3N0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IHBhcnNlTnVtYmVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiwgU3VmZml4U2tpcHBpbmdQ
b2xpY3kgPSBTdWZmaXhTa2lwcGluZ1BvbGljeTo6U2tpcCk7CiBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBwYXJzZU51bWJlcihTdHJpbmdQYXJzaW5nQnVmZmVyPGNoYXIxNl90PiYsIFN1ZmZpeFNraXBw
aW5nUG9saWN5ID0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApOwogc3RkOjpvcHRpb25hbDxm
bG9hdD4gcGFyc2VOdW1iZXIoU3RyaW5nVmlldywgU3VmZml4U2tpcHBpbmdQb2xpY3kgPSBTdWZm
aXhTa2lwcGluZ1BvbGljeTo6U2tpcCk7CiAKIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0
LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoU3RyaW5nVmlldyk7CiAKLXN0ZDo6
b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8TGF0aW4xQ2hh
cmFjdGVyPiYpOworc3RkOjpvcHRpb25hbDxib29sPiBwYXJzZUFyY0ZsYWcoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxMQ2hhcj4mKTsKIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFnKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Y2hhcjE2X3Q+Jik7CiAKIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4g
cGFyc2VQb2ludChTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBwYXJzZVJl
Y3QoU3RyaW5nVmlldyk7CiAKLXN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VGbG9hdFBv
aW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYpOworc3RkOjpvcHRpb25h
bDxGbG9hdFBvaW50PiBwYXJzZUZsb2F0UG9pbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4m
KTsKIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2VGbG9hdFBvaW50KFN0cmluZ1BhcnNp
bmdCdWZmZXI8Y2hhcjE2X3Q+Jik7CiAKIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFVuaWNvZGVS
YW5nZXMsIEhhc2hTZXQ8U3RyaW5nPj4+IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoU3RyaW5n
Vmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1ZpZXdT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nVmlld1NvdXJjZS5oCmlu
ZGV4IDVkOTcxZjllNDVhYi4uMzY1M2UxY2Y0NzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFN0cmluZ1ZpZXdTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFN0cmluZ1ZpZXdTb3VyY2UuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX2lzOEJpdFNvdXJjZTsKICAgICB1bmlvbiB7Ci0gICAgICAgIFN0cmluZ1BhcnNp
bmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiBtX2J1ZmZlcjg7CisgICAgICAgIFN0cmluZ1BhcnNp
bmdCdWZmZXI8TENoYXI+IG1fYnVmZmVyODsKICAgICAgICAgU3RyaW5nUGFyc2luZ0J1ZmZlcjxj
aGFyMTZfdD4gbV9idWZmZXIxNjsKICAgICB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5jcHAKaW5kZXggMjVhOTlkNWI4NzllLi42
OTEyYjg0YWU3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlOjpwYXJzZShTdHJpbmdWaWV3IHZhbHVlKQogICAgIH0pOwogfQogCi1ib29s
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6cGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxM
YXRpbjFDaGFyYWN0ZXI+JiBidWZmZXIsIGJvb2wgdmFsaWRhdGUpCitib29sIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZTo6cGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZl
ciwgYm9vbCB2YWxpZGF0ZSkKIHsKICAgICByZXR1cm4gcGFyc2VJbnRlcm5hbChidWZmZXIsIHZh
bGlkYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUuaAppbmRleCAwZWJjYzI5Mjc5MWEuLmJiN2NkZmZjYmFhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaApAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgQWZmaW5lVHJhbnNmb3JtIGdldENUTShmbG9hdCBsb2dpY2Fs
WCwgZmxvYXQgbG9naWNhbFksIGZsb2F0IGxvZ2ljYWxXaWR0aCwgZmxvYXQgbG9naWNhbEhlaWdo
dCwgZmxvYXQgcGh5c2ljYWxXaWR0aCwgZmxvYXQgcGh5c2ljYWxIZWlnaHQpIGNvbnN0OwogCiAg
ICAgYm9vbCBwYXJzZShTdHJpbmdWaWV3KTsKLSAgICBib29sIHBhcnNlKFN0cmluZ1BhcnNpbmdC
dWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYsIGJvb2wgdmFsaWRhdGUpOworICAgIGJvb2wgcGFyc2Uo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mLCBib29sIHZhbGlkYXRlKTsKICAgICBib29sIHBh
cnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Y2hhcjE2X3Q+JiwgYm9vbCB2YWxpZGF0ZSk7CiAKICAg
ICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybUxpc3QuY3BwCmluZGV4IDg0YTRlMDMyNmVlMy4uNmMyZjJlNjUzYTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBT
VkdUcmFuc2Zvcm1MaXN0OjpwYXJzZShTdHJpbmdWaWV3IHZhbHVlKQogICAgICAgICBjbGVhckl0
ZW1zKCk7CiB9CiAKLWJvb2wgU1ZHVHJhbnNmb3JtTGlzdDo6cGFyc2UoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+JiBidWZmZXIpCitib29sIFNWR1RyYW5zZm9ybUxpc3Q6OnBh
cnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHBh
cnNlR2VuZXJpYyhidWZmZXIsIExpc3RSZXBsYWNlbWVudDo6QXBwZW5kKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCmluZGV4IDgxYjRjODdjYWQ1ZS4uNjIyNTcwNGE5NTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKQEAgLTY5LDcgKzY5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgUmVwbGFjZQogICAgIH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCBwYXJzZUdlbmVyaWMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiYsIExpc3RSZXBsYWNlbWVudCA9IExpc3RSZXBsYWNlbWVudDo6QXBwZW5kKTsK
LSAgICBib29sIHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYpOwor
ICAgIGJvb2wgcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mKTsKICAgICBib29sIHBh
cnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Y2hhcjE2X3Q+Jik7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKaW5kZXggOTBlZjQyNzUzOGU3Li4zMmVhZDRjY2Q5OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gU1ZH
VHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2YKICAgICB9KTsKIH0KIAotc3RkOjpvcHRpb25hbDxT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFy
c2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdCdWZmZXI8TGF0aW4xQ2hhcmFjdGVyPiYgYnVm
ZmVyKQorc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4g
U1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdCdWZmZXI8
TENoYXI+JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHBhcnNlVHJhbnNmb3JtVHlwZUdlbmVyaWMo
YnVmZmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1h
YmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCmluZGV4IGY4MjQw
ODAwYWY2ZS4uNDA1OWNlN2U2NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxl
LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8U1ZHVHJhbnNm
b3JtPiBwYXJzZVRyYW5zZm9ybShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSwg
U3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYpOyAvLyBEZWZpbmVkIGluIFNWR1Ry
YW5zZm9ybWFibGVJbmxpbmVzLmgKIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlPiBwYXJzZVRyYW5zZm9ybVR5cGUoU3RyaW5nVmll
dyk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5z
Zm9ybVR5cGU+IHBhcnNlVHJhbnNmb3JtVHlwZShTdHJpbmdQYXJzaW5nQnVmZmVyPExhdGluMUNo
YXJhY3Rlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6
U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1BhcnNpbmdCdWZmZXI8
TENoYXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNW
R1RyYW5zZm9ybVR5cGU+IHBhcnNlVHJhbnNmb3JtVHlwZShTdHJpbmdQYXJzaW5nQnVmZmVyPGNo
YXIxNl90PiYpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJh
bnNmb3JtKENUTVNjb3BlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBhbmltYXRlZExvY2FsVHJh
bnNmb3JtKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAppbmRleCAwMWZjMmYz
ODM4YTcuLmVhZmRkMTBjN2Y4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pv
b21BbmRQYW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcApA
QCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2VabwogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IFNWR1pvb21B
bmRQYW46OnBhcnNlWm9vbUFuZFBhbihTdHJpbmdQYXJzaW5nQnVmZmVyPExhdGluMUNoYXJhY3Rl
cj4mIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IFNWR1pvb21BbmRQ
YW46OnBhcnNlWm9vbUFuZFBhbihTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQog
ewogICAgIHJldHVybiBwYXJzZVpvb21BbmRQYW5HZW5lcmljKGJ1ZmZlcik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1pvb21BbmRQYW4uaAppbmRleCBkOTg5YzQ3NDZmNDIuLmUxMjFjN2MwNzU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBTVkdab29tQW5kUGFuKCkgPSBkZWZhdWx0OwogCi0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IHBhcnNlWm9vbUFuZFBhbihTdHJpbmdQYXJz
aW5nQnVmZmVyPExhdGluMUNoYXJhY3Rlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
Vkdab29tQW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kUGFuKFN0cmluZ1BhcnNpbmdCdWZmZXI8TENo
YXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IHBhcnNl
Wm9vbUFuZFBhbihTdHJpbmdQYXJzaW5nQnVmZmVyPGNoYXIxNl90PiYpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCAzNTBhZGE2OGM0
NDEuLmQ5OTRjZGFjMGI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbgogICAgIGlm
ICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnRpZ3VvdXNSZXNwb25zZS0+c3BhbigpKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBmb3IgKGF1dG8gd29yZCA6IFN0cmluZ1ZpZXco
Ynl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjb250aWd1b3VzUmVzcG9uc2UtPnNwYW4oKSkpLnNw
bGl0KCcgJykpIHsKKyAgICBmb3IgKGF1dG8gd29yZCA6IFN0cmluZ1ZpZXcoY29udGlndW91c1Jl
c3BvbnNlLT5zcGFuKCkpLnNwbGl0KCcgJykpIHsKICAgICAgICAgaWYgKHdvcmQgPT0gInZhbGlk
LXJlc3BvbnNlIl9zKQogICAgICAgICAgICAgcmV0dXJuIGNvbnRpZ3VvdXNSZXNwb25zZTsKICAg
ICB9CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKIHZvaWQgTW9j
a0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNl
cnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBSZWYgY29udGln
dW91c0RhdGEgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBjYWxsYmFjayhl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgYnl0ZUNhc3Q8TGF0aW4x
Q2hhcmFjdGVyPihjb250aWd1b3VzRGF0YS0+c3BhbigpKSB9LCAidmFsaWQiX3MpID8gQ0RNSW5z
dGFuY2VTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCA6IENETUluc3RhbmNlU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOworICAgIGNhbGxiYWNrKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcgeyBjb250aWd1b3VzRGF0YS0+c3BhbigpIH0sICJ2YWxpZCJfcykgPyBDRE1JbnN0YW5j
ZVN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkIDogQ0RNSW5zdGFuY2VTdWNjZXNzVmFsdWU6OkZhaWxl
ZCk7CiB9CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9y
ID0gU3RyaW5nKGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4ocmVzcG9uc2UtPm1ha2VDb250aWd1
b3VzKCktPnNwYW4oKSkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VW
ZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPnNwYW4oKSkuc3BsaXQo
JyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQt
Zm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cAppbmRleCA5MWMzYjQ0NDYyMDIuLjQ2MmE0OGY5OTU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTQw
Nyw3ICsxNDA3LDcgQEAgeG1sRG9jUHRyIHhtbERvY1B0ckZvclN0cmluZyhDYWNoZWRSZXNvdXJj
ZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFMKIAogICAgIGNvbnN0IGJvb2wg
aXM4Qml0ID0gc291cmNlLmlzOEJpdCgpOwogICAgIGF1dG8gY2hhcmFjdGVycyA9IGlzOEJpdCA/
IGJ5dGVDYXN0PGNoYXI+KHNvdXJjZS5zcGFuOCgpKSA6IHNwYW5SZWludGVycHJldENhc3Q8Y29u
c3QgY2hhcj4oc291cmNlLnNwYW4xNigpKTsKLSAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzb3Vy
Y2UubGVuZ3RoKCkgKiAoaXM4Qml0ID8gc2l6ZW9mKExhdGluMUNoYXJhY3RlcikgOiBzaXplb2Yo
Y2hhcjE2X3QpKTsKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzb3VyY2UubGVuZ3RoKCkgKiAo
aXM4Qml0ID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihjaGFyMTZfdCkpOwogICAgIGNvbnN0IGNo
YXIqIGVuY29kaW5nID0gaXM4Qml0ID8gImlzby04ODU5LTEiIDogbmF0aXZlRW5kaWFuVVRGMTZF
bmNvZGluZygpOwogCiAgICAgWE1MRG9jdW1lbnRQYXJzZXJTY29wZSBzY29wZSgmY2FjaGVkUmVz
b3VyY2VMb2FkZXIsIGVycm9yRnVuYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dHU0wv
TGV4ZXIuY3BwIGIvU291cmNlL1dlYkdQVS9XR1NML0xleGVyLmNwcAppbmRleCBiNTc2ZDUyNzdl
MjEuLjdiMjljMmM0N2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XR1NML0xleGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViR1BVL1dHU0wvTGV4ZXIuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAj
aW5jbHVkZSAiTGV4ZXIuaCIKIAogI2luY2x1ZGUgIkNvbnN0YW50VmFsdWUuaCIKLSNpbmNsdWRl
ICJUb2tlbi5oIgogI2luY2x1ZGUgPGNoYXJjb252PgogI2luY2x1ZGUgPHd0Zi9GYXN0RmxvYXQu
aD4KICNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KQEAgLTY0LDQxICs2MywxNyBAQCBz
dGF0aWMgdW5zaWduZWQgaXNJZGVudGlmaWVyQ29udGludWUoY2hhcjE2X3QgY2hhcmFjdGVyLCBz
dGQ6OnNwYW48Y29uc3QgY2hhcjE2XwogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdW5zaWdu
ZWQgaXNJZGVudGlmaWVyU3RhcnQoTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3Rlciwgc3RkOjpzcGFu
PGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pCitzdGF0aWMgdW5zaWduZWQgaXNJZGVudGlmaWVyU3Rh
cnQoTENoYXIgY2hhcmFjdGVyLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+KQogewogICAgIHJldHVy
biBpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gJ18nOwogfQogCi1zdGF0
aWMgdW5zaWduZWQgaXNJZGVudGlmaWVyQ29udGludWUoTGF0aW4xQ2hhcmFjdGVyIGNoYXJhY3Rl
ciwgc3RkOjpzcGFuPGNvbnN0IExhdGluMUNoYXJhY3Rlcj4pCitzdGF0aWMgdW5zaWduZWQgaXNJ
ZGVudGlmaWVyQ29udGludWUoTENoYXIgY2hhcmFjdGVyLCBzdGQ6OnNwYW48Y29uc3QgTENoYXI+
KQogewogICAgIHJldHVybiBpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikgfHwgY2hhcmFj
dGVyID09ICdfJzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLVRva2Vu
IExleGVyPENoYXJhY3RlclR5cGU+OjptYWtlVG9rZW4oVG9rZW5UeXBlIHR5cGUpCi17Ci0gICAg
cmV0dXJuIHsgdHlwZSwgbV90b2tlblN0YXJ0aW5nUG9zaXRpb24sIGN1cnJlbnRUb2tlbkxlbmd0
aCgpIH07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1Ub2tlbiBMZXhl
cjxDaGFyYWN0ZXJUeXBlPjo6bWFrZUZsb2F0VG9rZW4oVG9rZW5UeXBlIHR5cGUsIGRvdWJsZSBm
bG9hdFZhbHVlKQotewotICAgIHJldHVybiB7IHR5cGUsIG1fdG9rZW5TdGFydGluZ1Bvc2l0aW9u
LCBjdXJyZW50VG9rZW5MZW5ndGgoKSwgZmxvYXRWYWx1ZSB9OwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgotVG9rZW4gTGV4ZXI8Q2hhcmFjdGVyVHlwZT46Om1ha2VJbnRl
Z2VyVG9rZW4oVG9rZW5UeXBlIHR5cGUsIGludDY0X3QgaW50ZWdlclZhbHVlKQotewotICAgIHJl
dHVybiB7IHR5cGUsIG1fdG9rZW5TdGFydGluZ1Bvc2l0aW9uLCBjdXJyZW50VG9rZW5MZW5ndGgo
KSwgaW50ZWdlclZhbHVlIH07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1Ub2tlbiBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6bWFrZUlkZW50aWZpZXJUb2tlbihTdHJpbmcm
JiBpZGVudGlmaWVyKQotewotICAgIHJldHVybiB7IFdHU0w6OlRva2VuVHlwZTo6SWRlbnRpZmll
ciwgbV90b2tlblN0YXJ0aW5nUG9zaXRpb24sIGN1cnJlbnRUb2tlbkxlbmd0aCgpLCBXVEZNb3Zl
KGlkZW50aWZpZXIpIH07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIFZlY3RvcjxUb2tlbj4gTGV4ZXI8VD46OmxleCgpCiB7CiAgICAgVmVjdG9yPFRv
a2VuPiB0b2tlbnM7CkBAIC0xMDYxLDcgKzEwMzYsNyBAQCBUb2tlbiBMZXhlcjxUPjo6bGV4TnVt
YmVyKCkKICAgICByZXR1cm4gY29udmVydCgqbWF5YmVSZXN1bHQpOwogfQogCi10ZW1wbGF0ZSBj
bGFzcyBMZXhlcjxMYXRpbjFDaGFyYWN0ZXI+OwordGVtcGxhdGUgY2xhc3MgTGV4ZXI8TENoYXI+
OwogdGVtcGxhdGUgY2xhc3MgTGV4ZXI8Y2hhcjE2X3Q+OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dHU0wvTGV4ZXIuaCBiL1NvdXJjZS9XZWJHUFUvV0dTTC9MZXhlci5oCmluZGV4
IGVhNGNmZjNhMGM2ZS4uNTg1OThlY2JhM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dH
U0wvTGV4ZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dHU0wvTGV4ZXIuaApAQCAtMjUsMjIgKzI1
LDI4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU291cmNlU3Bhbi5oIgorI2luY2x1
ZGUgIlRva2VuLmgiCisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXR1NMIHsKIAotZW51bSBjbGFzcyBUb2tlblR5cGUgOiB1aW50MzJf
dDsKLQotc3RydWN0IFRva2VuOwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgTGV4ZXIg
ewogcHVibGljOgotICAgIExleGVyKHN0ZDo6c3Bhbjxjb25zdCBUPiBjb2RlKQotICAgICAgICA6
IG1fY29kZSB7IGNvZGUgfQotICAgICAgICAsIG1fY3VycmVudCB7IG1fY29kZS5oYXNDaGFyYWN0
ZXJzUmVtYWluaW5nKCkgPyBtX2NvZGVbMF0gOiBUIHsgfSB9CisgICAgTGV4ZXIoY29uc3QgU3Ry
aW5nJiB3Z3NsKQogICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8VCwg
TENoYXI+Ojp2YWx1ZSkKKyAgICAgICAgICAgIG1fY29kZSA9IHdnc2wuc3BhbjgoKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxULCBjaGFy
MTZfdD46OnZhbHVlLCAiVGhlIGxleGVyIGV4cGVjdHMgaXRzIHRlbXBsYXRlIHBhcmFtZXRlciB0
byBiZSBlaXRoZXIgTENoYXIgb3IgY2hhcjE2X3QiKTsKKyAgICAgICAgICAgIG1fY29kZSA9IHdn
c2wuc3BhbjE2KCk7CisgICAgICAgICAgICBBU1NFUlQoISh3Z3NsLnNpemVJbkJ5dGVzKCkgJSAy
KSk7CisgICAgICAgIH0KKworICAgICAgICBtX2N1cnJlbnQgPSBtX2NvZGUuaGFzQ2hhcmFjdGVy
c1JlbWFpbmluZygpID8gbV9jb2RlWzBdIDogMDsKKyAgICAgICAgbV9jdXJyZW50UG9zaXRpb24g
PSB7IDEsIDAsIDAgfTsKICAgICB9CiAKICAgICBWZWN0b3I8VG9rZW4+IGxleCgpOwpAQCAtNTIs
MTAgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgY3VycmVudE9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudFBvc2l0aW9uLm9mZnNldDsgfQogICAgIHVuc2lnbmVkIGN1cnJl
bnRUb2tlbkxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRPZmZzZXQoKSAtIG1fdG9rZW5T
dGFydGluZ1Bvc2l0aW9uLm9mZnNldDsgfQogCi0gICAgVG9rZW4gbWFrZVRva2VuKFRva2VuVHlw
ZSk7Ci0gICAgVG9rZW4gbWFrZUZsb2F0VG9rZW4oVG9rZW5UeXBlLCBkb3VibGUpOwotICAgIFRv
a2VuIG1ha2VJbnRlZ2VyVG9rZW4oVG9rZW5UeXBlLCBpbnQ2NF90KTsKLSAgICBUb2tlbiBtYWtl
SWRlbnRpZmllclRva2VuKFN0cmluZyYmKTsKKyAgICBUb2tlbiBtYWtlVG9rZW4oVG9rZW5UeXBl
IHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4geyB0eXBlLCBtX3Rva2VuU3RhcnRpbmdQb3Np
dGlvbiwgY3VycmVudFRva2VuTGVuZ3RoKCkgfTsKKyAgICB9CisgICAgVG9rZW4gbWFrZUZsb2F0
VG9rZW4oVG9rZW5UeXBlIHR5cGUsIGRvdWJsZSBmbG9hdFZhbHVlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHsgdHlwZSwgbV90b2tlblN0YXJ0aW5nUG9zaXRpb24sIGN1cnJlbnRUb2tlbkxlbmd0
aCgpLCBmbG9hdFZhbHVlIH07CisgICAgfQorCisgICAgVG9rZW4gbWFrZUludGVnZXJUb2tlbihU
b2tlblR5cGUgdHlwZSwgaW50NjRfdCBpbnRlZ2VyVmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4geyB0eXBlLCBtX3Rva2VuU3RhcnRpbmdQb3NpdGlvbiwgY3VycmVudFRva2VuTGVuZ3RoKCks
IGludGVnZXJWYWx1ZSB9OworICAgIH0KKworICAgIFRva2VuIG1ha2VJZGVudGlmaWVyVG9rZW4o
U3RyaW5nJiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiB7IFdHU0w6OlRva2Vu
VHlwZTo6SWRlbnRpZmllciwgbV90b2tlblN0YXJ0aW5nUG9zaXRpb24sIGN1cnJlbnRUb2tlbkxl
bmd0aCgpLCBXVEZNb3ZlKGlkZW50aWZpZXIpIH07CisgICAgfQogCiAgICAgVCBzaGlmdCh1bnNp
Z25lZCA9IDEpOwogICAgIFQgcGVlayh1bnNpZ25lZCA9IDApOwpAQCAtNjQsOSArODQsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2tpcExpbmVDb21tZW50KCk7CiAgICAgYm9vbCBza2lwV2hpdGVz
cGFjZUFuZENvbW1lbnRzKCk7CiAKLSAgICBTdHJpbmdQYXJzaW5nQnVmZmVyPFQ+IG1fY29kZTsK
ICAgICBUIG1fY3VycmVudDsKLSAgICBTb3VyY2VQb3NpdGlvbiBtX2N1cnJlbnRQb3NpdGlvbiB7
IDEsIDAsIDAgfTsKKyAgICBTdHJpbmdQYXJzaW5nQnVmZmVyPFQ+IG1fY29kZTsKKyAgICBTb3Vy
Y2VQb3NpdGlvbiBtX2N1cnJlbnRQb3NpdGlvbiB7IDAsIDAsIDAgfTsKICAgICBTb3VyY2VQb3Np
dGlvbiBtX3Rva2VuU3RhcnRpbmdQb3NpdGlvbiB7IDAsIDAsIDAgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV0dTTC9QYXJzZXIuY3BwIGIvU291cmNlL1dlYkdQVS9XR1NML1Bh
cnNlci5jcHAKaW5kZXggZTk5ZDQ3OGVhZTU0Li4yYTkyN2QzMjI2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV0dTTC9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJHUFUvV0dTTC9QYXJz
ZXIuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSAiQVNULmgiCiAjaW5jbHVkZSAiTGV4
ZXIuaCIKICNpbmNsdWRlICJQYXJzZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiVG9rZW4uaCIKICNp
bmNsdWRlICJXR1NMU2hhZGVyTW9kdWxlLmgiCisKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAt
MzIwLDEwICszMjAsMTAgQEAgc3RhdGljIEFTVDo6VW5hcnlPcGVyYXRpb24gdG9VbmFyeU9wZXJh
dGlvbihjb25zdCBUb2tlbiYgdG9rZW4pCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgTGV4ZXI+CiBzdGQ6Om9wdGlvbmFsPEZh
aWxlZENoZWNrPiBwYXJzZShTaGFkZXJNb2R1bGUmIHNoYWRlck1vZHVsZSkKIHsKLSAgICBMZXhl
cjxDaGFyYWN0ZXJUeXBlPiBsZXhlcihzaGFkZXJNb2R1bGUuc291cmNlKCkuc3BhbjxDaGFyYWN0
ZXJUeXBlPigpKTsKKyAgICBMZXhlciBsZXhlcihzaGFkZXJNb2R1bGUuc291cmNlKCkpOwogICAg
IFBhcnNlciBwYXJzZXIoc2hhZGVyTW9kdWxlLCBsZXhlcik7CiAgICAgYXV0byByZXN1bHQgPSBw
YXJzZXIucGFyc2VTaGFkZXIoKTsKICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKQEAgLTMz
NCw4ICszMzQsOCBAQCBzdGQ6Om9wdGlvbmFsPEZhaWxlZENoZWNrPiBwYXJzZShTaGFkZXJNb2R1
bGUmIHNoYWRlck1vZHVsZSkKIHN0ZDo6b3B0aW9uYWw8RmFpbGVkQ2hlY2s+IHBhcnNlKFNoYWRl
ck1vZHVsZSYgc2hhZGVyTW9kdWxlKQogewogICAgIGlmIChzaGFkZXJNb2R1bGUuc291cmNlKCku
aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBwYXJzZTxMYXRpbjFDaGFyYWN0ZXI+KHNoYWRlck1v
ZHVsZSk7Ci0gICAgcmV0dXJuIHBhcnNlPGNoYXIxNl90PihzaGFkZXJNb2R1bGUpOworICAgICAg
ICByZXR1cm4gcGFyc2U8TGV4ZXI8TENoYXI+PihzaGFkZXJNb2R1bGUpOworICAgIHJldHVybiBw
YXJzZTxMZXhlcjxjaGFyMTZfdD4+KHNoYWRlck1vZHVsZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIExleGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XR1NML1BhcnNlclByaXZhdGUu
aCBiL1NvdXJjZS9XZWJHUFUvV0dTTC9QYXJzZXJQcml2YXRlLmgKaW5kZXggYmFiY2M3NTZjYWIx
Li5jODg1NmFhNTJiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV0dTTC9QYXJzZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XR1NML1BhcnNlclByaXZhdGUuaApAQCAtMzcsNyAr
MzcsNiBAQAogI2luY2x1ZGUgIkFTVFZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQ29tcGlsYXRpb25N
ZXNzYWdlLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKLSNpbmNsdWRlICJUb2tlbi5oIgogI2luY2x1
ZGUgIldHU0xTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvUGlwZWxpbmUubW0KaW5kZXggYmJmZTg2NDE1MGRhLi4yOTQxZGY1MmQ3NjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1BpcGVsaW5lLm1tCkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRU
b0ZpbGVGb3JQc29SZXBybygpCiAgICAgfQogCiAgICAgb3V0cHV0VVJMID0gW291dHB1dFVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJwc29SZXByby5tbSJdOwotICAgIGlmIChGaWxl
U3lzdGVtOjpvdmVyd3JpdGVFbnRpcmVGaWxlKG91dHB1dFVSTC5wYXRoLCBieXRlQ2FzdDx1aW50
OF90Pihwc29SZXByb1N0cmluZ0J1aWxkZXIoKS5zcGFuPExhdGluMUNoYXJhY3Rlcj4oKSkpKQor
ICAgIGlmIChGaWxlU3lzdGVtOjpvdmVyd3JpdGVFbnRpcmVGaWxlKG91dHB1dFVSTC5wYXRoLCBw
c29SZXByb1N0cmluZ0J1aWxkZXIoKS5zcGFuPHVpbnQ4X3Q+KCkpKQogICAgICAgICBXVEZMb2dB
bHdheXMoIlN1Y2Vzc2Z1bGx5IHNhdmVkIHJlcHJvIHRvICVAIiwgb3V0cHV0VVJMKTsgLy8gTk9M
SU5UCiAgICAgZWxzZQogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHNhdmluZyByZXBybyB0
byAlQCAtICVAIiwgb3V0cHV0VVJMLCBlcnJvcik7IC8vIE5PTElOVApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDc3MWIy
NzYwNWVhOS4uYWJmODc4N2QzNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBD
YWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3Rl
eHByIGF1dG8gcHJvbG9ndWUgPSAie1xuXCJlbnRyaWVzXCI6IFtcbiJfczsKLSAgICBmaWxlSGFu
ZGxlLndyaXRlKGJ5dGVDYXN0PHVpbnQ4X3Q+KHByb2xvZ3VlLnNwYW44KCkpKTsKKyAgICBmaWxl
SGFuZGxlLndyaXRlKHByb2xvZ3VlLnNwYW44KCkpOwogCiAgICAgc3RydWN0IFRvdGFscyB7CiAg
ICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApp
bmRleCAyZjllOGQ0ZWVhN2EuLjQ4NGU4NzliZjBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFn
ZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQog
U3RyaW5nIEJsb2JTdG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBo
YXNoKSBjb25zdAogewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhh
c2gpOwotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxv
YkRpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKSwgU3RyaW5nVmlldzo6ZnJvbUxhdGluMShieXRl
Q2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGhhc2hBc1N0cmluZy5zcGFuKCkpKSk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aElz
b2xhdGVkQ29weSgpLCBTdHJpbmdWaWV3Ojpmcm9tTGF0aW4xKGJ5dGVDYXN0PExDaGFyPihoYXNo
QXNTdHJpbmcuc3BhbigpKSkpOwogfQogCiBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6
YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9XZWJTb2NrZXRUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvV2ViU29ja2V0VGFza0N1cmwuY3BwCmlu
ZGV4IGM2ZTZiOTIxNmQ4Yy4uYmM3ZTg3MDIwYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvV2ViU29ja2V0VGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9XZWJTb2NrZXRUYXNrQ3VybC5jcHAKQEAgLTE4OSw3
ICsxODksNyBAQCB2b2lkIFdlYlNvY2tldFRhc2s6OmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OkN1
cmxTdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQgogICAgICAgICBzd2l0Y2ggKG9wQ29k
ZSkgewogICAgICAgICBjYXNlIFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpPcENvZGVUZXh0Ogog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gZGF0YS5zaXpl
KCkgPyBTdHJpbmcgeyBieXRlQ2FzdDxjaGFyOF90PihkYXRhKSB9IDogZW1wdHlTdHJpbmcoKTsK
KyAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGRhdGEuc2l6ZSgpID8gU3RyaW5nOjpm
cm9tVVRGOChkYXRhKSA6IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtZXNz
YWdlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRDaGFubmVsKCktPmRp
ZFJlY2VpdmVUZXh0KG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTIwOSw3ICsy
MDksOSBAQCB2b2lkIFdlYlNvY2tldFRhc2s6OmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OkN1cmxT
dHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQgogICAgICAgICAgICAgICAgIGRpZEZhaWwo
IlJlY2VpdmVkIGEgYnJva2VuIGNsb3NlIGZyYW1lIGNvbnRhaW5pbmcgYW4gaW52YWxpZCBzaXpl
IGJvZHkuIl9zKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIG1fY2xvc2VFdmVudENvZGUgPSBkYXRhWzBdIDw8IDggfCBkYXRh
WzFdOworICAgICAgICAgICAgICAgIGF1dG8gaGlnaEJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihkYXRhWzBdKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxvd0J5dGUgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihkYXRhWzFdKTsKKyAgICAgICAgICAgICAgICBtX2Nsb3NlRXZl
bnRDb2RlID0gaGlnaEJ5dGUgPDwgOCB8IGxvd0J5dGU7CiAgICAgICAgICAgICAgICAgaWYgKG1f
Y2xvc2VFdmVudENvZGUgPT0gV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkNs
b3NlRXZlbnRDb2RlOjpDbG9zZUV2ZW50Q29kZU5vU3RhdHVzUmN2ZAogICAgICAgICAgICAgICAg
ICAgICB8fCBtX2Nsb3NlRXZlbnRDb2RlID09IFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpDbG9zZUV2ZW50Q29kZTo6Q2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmUKICAg
ICAgICAgICAgICAgICAgICAgfHwgbV9jbG9zZUV2ZW50Q29kZSA9PSBXZWJDb3JlOjpUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGU6OkNsb3NlRXZlbnRDb2RlVExTSGFu
ZHNoYWtlKSB7CkBAIC0yMTksNyArMjIxLDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpDdXJsU3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEIKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZGF0YS5zaXpl
KCkgPj0gMykKLSAgICAgICAgICAgICAgICBtX2Nsb3NlRXZlbnRSZWFzb24gPSBTdHJpbmcgeyBi
eXRlQ2FzdDxjaGFyOF90PihkYXRhLnN1YnNwYW4oMikpIH07CisgICAgICAgICAgICAgICAgbV9j
bG9zZUV2ZW50UmVhc29uID0gU3RyaW5nOjpmcm9tVVRGOCh7ICZkYXRhWzJdLCBkYXRhLnNpemUo
KSAtIDIgfSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9jbG9zZUV2ZW50
UmVhc29uID0gZW1wdHlTdHJpbmcoKTsKIApAQCAtNDE0LDggKzQxNiwxMCBAQCB2b2lkIFdlYlNv
Y2tldFRhc2s6OnNlbmRDbG9zaW5nSGFuZHNoYWtlSWZOZWVkZWQoaW50MzJfdCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZjsKICAgICBpZiAoIW1fcmVj
ZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNvZGUgIT0gV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkg
ewotICAgICAgICBidWYuYXBwZW5kKGNvZGUgPj4gOCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQoY29k
ZSk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBzaG9ydD4oY29kZSkgPj4gODsKKyAgICAgICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGNvZGUpOworICAgICAgICBidWYuYXBwZW5kKHN0YXRp
Y19jYXN0PGNoYXI+KGhpZ2hCeXRlKSk7CisgICAgICAgIGJ1Zi5hcHBlbmQoc3RhdGljX2Nhc3Q8
Y2hhcj4obG93Qnl0ZSkpOwogICAgICAgICBidWYuYXBwZW5kKHJlYXNvbi51dGY4KCkuc3Bhbigp
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3Rv
cmFnZS9DYWNoZVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9DYWNoZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBkZmJiZGExYzJmYjUuLmY5
OGQ2ZWE2NDE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL0NhY2hlU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9DYWNoZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiByZWFkU2l6ZUZpbGUoY29uc3QgU3RyaW5n
JiBzaXplRGlyZWN0b3J5UGF0aCkKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBwYXJzZUludGVnZXI8dWludDY0X3Q+KGJ5dGVDYXN0
PExhdGluMUNoYXJhY3Rlcj4oYnVmZmVyLT5zcGFuKCkpKTsKKyAgICByZXR1cm4gcGFyc2VJbnRl
Z2VyPHVpbnQ2NF90PihidWZmZXItPnNwYW4oKSk7CiB9CiAKIHN0YXRpYyBib29sIHdyaXRlU2l6
ZUZpbGUoY29uc3QgU3RyaW5nJiBzaXplRGlyZWN0b3J5UGF0aCwgdWludDY0X3Qgc2l6ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAyNWE5
OTg0YTVkMTEuLjNkZjZhZjFiMGY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtODMsNyArODMsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4g
c3RkOjpvcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29k
ZXImCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCppczhCaXQp
Ci0gICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExhdGluMUNoYXJhY3Rlcj4oZGVjb2Rl
ciwgKmxlbmd0aCk7CisgICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFyPihkZWNv
ZGVyLCAqbGVuZ3RoKTsKICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxjaGFyMTZfdD4oZGVj
b2RlciwgKmxlbmd0aCk7CiB9CiB0ZW1wbGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGFlbW9uQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
YWVtb25Db2RlcnMuaAppbmRleCA4NTRlN2E1MjhkMjAuLjc3MDA2OTU4ODI4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29kZXJzLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxXVEY6OlN0cmluZz4gewogICAgICAgICBlbmNvZGVyIDw8
IHN0cmluZy5sZW5ndGgoKSA8PCBpczhCaXQ7CiAKICAgICAgICAgaWYgKGlzOEJpdCkKLSAgICAg
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGJ5dGVDYXN0PHVpbnQ4X3Q+KHN0
cmluZy5zcGFuOCgpKSk7CisgICAgICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShzdHJpbmcuc3BhbjgoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKGFzQnl0ZXMoc3RyaW5nLnNwYW4xNigpKSk7CiAgICAgfQpAQCAt
MTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdURjo6U3RyaW5nPiB7CiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmICgqaXM4Qml0KQot
ICAgICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8TGF0aW4xQ2hhcmFjdGVyPihkZWNv
ZGVyLCAqbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFy
PihkZWNvZGVyLCAqbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8Y2hh
cjE2X3Q+KGRlY29kZXIsICpsZW5ndGgpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYWVtb25EZWNvZGVyLmgKaW5kZXggZTYyYjY0MmNkOTk2Li5hYTZhNWFkMWYwZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkRlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25EZWNvZGVyLmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QgbnVtRWxl
bWVudHMpIGNvbnN0CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGht
ZXRpY192PFQ+IHx8IHN0ZDo6aXNfc2FtZV92PFQsIExhdGluMUNoYXJhY3Rlcj4sICJUeXBlIFQg
bXVzdCBoYXZlIGEgZml4ZWQsIGtub3duIGVuY29kZWQgc2l6ZSEiKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAiVHlwZSBUIG11c3QgaGF2ZSBh
IGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7CiAKICAgICAgICAgaWYgKG51bUVsZW1lbnRz
ID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihUKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NmL1dLU3RyaW5nQ0YubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0
cmluZ0NGLm1tCmluZGV4IDQyOWQ5ODNlMGNhNy4uN2Y3ZjgxMWI4MTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KQEAgLTYxLDcgKzYxLDcgQEAgQ0ZT
dHJpbmdSZWYgV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yUmVm
LCBXS1N0cmluZ1JlZiBzdHJpbmcKICAgICAvLyBleHBlY3RzIHRvIGJlIGNhbGxlZCBvbiB0aGUg
dGhyZWFkIHJ1bm5pbmcgV2ViQ29yZS4KICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7CiAgICAg
ICAgIGF1dG8gY2hhcmFjdGVycyA9IHN0cmluZy5zcGFuOCgpOwotICAgICAgICByZXR1cm4gQ0ZT
dHJpbmdDcmVhdGVXaXRoQnl0ZXMoYWxsb2NhdG9yUmVmLCBieXRlQ2FzdDxVSW50OD4oY2hhcmFj
dGVycy5kYXRhKCkpLCBjaGFyYWN0ZXJzLnNpemUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRp
bjEsIHRydWUpOworICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoYWxsb2Nh
dG9yUmVmLCBjaGFyYWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCksIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xLCB0cnVlKTsKICAgICB9CiAgICAgYXV0byBjaGFyYWN0ZXJzID0gc3Ry
aW5nLnNwYW4xNigpOwogICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGFs
bG9jYXRvclJlZiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVycy5k
YXRhKCkpLCBjaGFyYWN0ZXJzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggYzhmZTJkMTVmNWE2Li4yZmRi
ODkzM2MyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hF
eHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94
RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhbmRi
b3hFeHRlbnNpb25JbXBsPiBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKGNvbnN0IGNoYXIq
IHAKIH0KIAogU2FuZGJveEV4dGVuc2lvbkltcGw6OlNhbmRib3hFeHRlbnNpb25JbXBsKHN0ZDo6
c3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkRm9ybWF0KQotICAgIDogbV90b2tlbiB7IGJ5
dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oc2VyaWFsaXplZEZvcm1hdCkgfQorICAgIDogbV90b2tl
biB7IHNlcmlhbGl6ZWRGb3JtYXQgfQogewogICAgIEFTU0VSVCghc2VyaWFsaXplZEZvcm1hdC5l
bXB0eSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDZlYzQzYjQ0N2Y3OC4uOWU1N2QzZjMxMmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTUxNSw3ICs1MTUsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcg
Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlRnJvbU1hcHBlZEZpbGUoY29uc3QgTWFwcGVkRGF0YSYg
bWFwcAogICAgIHNpemVfdCBsZW5ndGggPSBzb3VyY2VTaXplQnl0ZXMgLSBzaXplb2YoYm9vbCk7
CiAKICAgICBpZiAoaXM4Qml0KQotICAgICAgICByZXR1cm4gYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFj
dGVyPihkYXRhU3Bhbi5zdWJzcGFuKHN0YXJ0LCBsZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIGRh
dGFTcGFuLnN1YnNwYW4oc3RhcnQsIGxlbmd0aCk7CiAKICAgICBpZiAobGVuZ3RoICUgc2l6ZW9m
KGNoYXIxNl90KSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGU5YTcwYjkzNTdkYy4uN2NlNzQ1MTli
ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI4MCw3
ICsyODAsNyBAQCBzdGF0aWMgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IGRhdGFGcm9tKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNOdWxsKCkgfHwgIXN0cmluZy5p
czhCaXQoKSkKICAgICAgICAgcmV0dXJuIGFzQnl0ZXMoc3RyaW5nLnNwYW4xNigpKTsKLSAgICBy
ZXR1cm4gYnl0ZUNhc3Q8dWludDhfdD4oc3RyaW5nLnNwYW44KCkpOworICAgIHJldHVybiBzdHJp
bmcuc3BhbjgoKTsKIH0KIAogc3RhdGljIFJlZjxXZWJDb3JlOjpEYXRhU2VnbWVudD4gZGF0YVJl
ZmVyZW5jZUZyb20oY29uc3QgU3RyaW5nJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IGI5
MDZlZGU3NDY1NS4uZDA1YjMwMDExM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtNzM3LDcgKzcz
Nyw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0ZXN0SVBDU2hhcmVkTWVtb3J5KElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHNoYXJlZE1lbW9yeUJ1ZmZlci0+c2l6ZSgpLCBieXRlQ2Fz
dDxMYXRpbjFDaGFyYWN0ZXI+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+c3BhbigpKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoc2hhcmVkTWVtb3J5QnVmZmVyLT5zaXplKCksIHNoYXJlZE1lbW9yeUJ1
ZmZlci0+c3BhbigpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9FeHRlbnNpb25zL1dlYkV4dGVuc2lvbkRlY2xhcmF0aXZlTmV0UmVxdWVzdFNRTGl0
ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvV2ViRXh0ZW5z
aW9uRGVjbGFyYXRpdmVOZXRSZXF1ZXN0U1FMaXRlU3RvcmUuY3BwCmluZGV4IDI2ZGJlOTllOGZl
MC4uMDAxYTdiMmVjMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FeHRl
bnNpb25zL1dlYkV4dGVuc2lvbkRlY2xhcmF0aXZlTmV0UmVxdWVzdFNRTGl0ZVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FeHRlbnNpb25zL1dlYkV4dGVuc2lvbkRlY2xh
cmF0aXZlTmV0UmVxdWVzdFNRTGl0ZVN0b3JlLmNwcApAQCAtMjQ3LDcgKzI0Nyw4IEBAIFJlZjxK
U09OOjpBcnJheT4gV2ViRXh0ZW5zaW9uRGVjbGFyYXRpdmVOZXRSZXF1ZXN0U1FMaXRlU3RvcmU6
OmdldEtleXNBbmRWYWx1ZXNGCiAgICAgICAgIGlmICghcnVsZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gcnVsZU9iamVjdCA9IEpTT046OlZhbHVlOjpvcHRpb25hbFBh
cnNlSlNPTihieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHJ1bGUtPnNwYW4oKSkpOworICAgICAg
ICBhdXRvIHJ1bGVPYmplY3QgPSBKU09OOjpWYWx1ZTo6b3B0aW9uYWxQYXJzZUpTT04oU3RyaW5n
VmlldyhydWxlLT5zcGFuKCkpKTsKKwogICAgICAgICBpZiAocnVsZU9iamVjdCkKICAgICAgICAg
ICAgIHJlc3VsdHMtPnB1c2hWYWx1ZShydWxlT2JqZWN0LT5nZXQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDFmNDkyZmRjNjNiYi4uYjMzNDViMjk4OThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNw
ZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9n
bGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvckNsaWVudDo6c2V0QmFja2VuZENvbW1hbmRzKGNvbnN0IGNoYXIqIGJhY2tl
bmRDb21tYW5kcykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2VuZENvbW1h
bmRzVVJMID0gbWFrZVN0cmluZygiZGF0YTp0ZXh0L2phdmFzY3JpcHQ7YmFzZTY0LCJfcywgYmFz
ZTY0RW5jb2RlZChieXRlQ2FzdDxzdGQ6OmJ5dGU+KHVuc2FmZVNwYW4oYmFja2VuZENvbW1hbmRz
KSkpKTsKKyAgICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IG1ha2VTdHJpbmcoImRhdGE6dGV4dC9q
YXZhc2NyaXB0O2Jhc2U2NCwiX3MsIGJhc2U2NEVuY29kZWQodW5zYWZlU3BhbjgoYmFja2VuZENv
bW1hbmRzKSkpOwogfQogCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6Y29ubmVjdGlvbkRp
ZENsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eU1hYy5tbQppbmRleCAw
ZDg5ZDQ0YTBlNmQuLjViMjFkYTFmYmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eU1hYy5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eTo6cGxhdGZvcm1TYXZlKFZlY3RvcjxJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6U2F2
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtTG9hZChjb25zdCBTdHJp
bmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudHMgPSBGaWxlU3lzdGVtOjpyZWFk
RW50aXJlRmlsZShwYXRoKSkKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RyaW5nIHsgYnl0
ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihjb250ZW50cy0+c3BhbigpKSB9KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoU3RyaW5nOjphZG9wdChXVEZNb3ZlKCpjb250ZW50cykpKTsKICAgICBl
bHNlCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxTdHJpbmcoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJ
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYklu
c3BlY3RvclVJUHJveHlNYWMubW0KaW5kZXggMzgwMjAzMWI5MjFlLi5iYTFkMGI4MTYyYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVj
dG9yVUlQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
bWFjL1dlYkluc3BlY3RvclVJUHJveHlNYWMubW0KQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtU2F2ZShWZWN0b3I8SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OlNhdmVEYXRhPgogdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUxvYWQo
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvIGNvbnRlbnRzID0gRmlsZVN5
c3RlbTo6cmVhZEVudGlyZUZpbGUocGF0aCkpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0
cmluZyB7IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oY29udGVudHMtPnNwYW4oKSkgfSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0cmluZzo6YWRvcHQoV1RGTW92ZSgqY29udGVudHMp
KSk7CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxsU3RyaW5nKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQ
cm94eVdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFzdGVib2FyZFBy
b3h5V1BFLmNwcAppbmRleCA2ODM1ZGU3MGYxMjguLjUxYWM2ODgzMGRlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAK
QEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludAogICAgICAgICBhdXRv
KiBjbGlwYm9hcmQgPSB3cGVfZGlzcGxheV9nZXRfY2xpcGJvYXJkKHdwZV9kaXNwbGF5X2dldF9w
cmltYXJ5KCkpOwogICAgICAgICBpZiAoR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVm
KHdwZV9jbGlwYm9hcmRfcmVhZF9ieXRlcyhjbGlwYm9hcmQsICJ0ZXh0L3VyaS1saXN0IikpKSB7
CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdl
dCgpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0cmluZyhieXRlQ2FzdDxMYXRp
bjFDaGFyYWN0ZXI+KGJ1ZmZlci0+c3BhbigpKSksIHsgfSk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihTdHJpbmcoYnVmZmVyLT5zcGFuKCkpLCB7IH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XUEVQbGF0
Zm9ybS93cGUvZHJtL1dQRURpc3BsYXlEUk0uY3BwIGIvU291cmNlL1dlYktpdC9XUEVQbGF0Zm9y
bS93cGUvZHJtL1dQRURpc3BsYXlEUk0uY3BwCmluZGV4IGJkNTBiNGU0ZTIwMS4uZDVmYzEyMjA5
NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dQRVBsYXRmb3JtL3dwZS9kcm0vV1BFRGlz
cGxheURSTS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XUEVQbGF0Zm9ybS93cGUvZHJtL1dQRURp
c3BsYXlEUk0uY3BwCkBAIC0zNjgsMTQgKzM2OCwxNSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd3BlRGlz
cGxheURSTVNldHVwKFdQRURpc3BsYXlEUk0qIGRpc3BsYXlEUk0sIGNvbnN0IGNoYXIqIGRldmlj
ZQogICAgIH07CiAKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2NhbGVGcm9tRW52aXJvbm1l
bnQ7Ci0gICAgaWYgKGNvbnN0IGF1dG8qIHNjYWxlU3RyaW5nID0gZ2V0ZW52KCJXUEVfRFJNX1ND
QUxFIikpIHsKLSAgICAgICAgYXV0byB0cmltbWVkU2NhbGVTdHJpbmcgPSBTdHJpbmdWaWV3Ojpm
cm9tTGF0aW4xKHNjYWxlU3RyaW5nKS50cmltKGlzQVNDSUlXaGl0ZXNwYWNlPExhdGluMUNoYXJh
Y3Rlcj4pOworICAgIGlmIChjb25zdCBhdXRvIHNjYWxlU3RyaW5nID0gU3RyaW5nVmlldzo6ZnJv
bUxhdGluMShnZXRlbnYoIldQRV9EUk1fU0NBTEUiKSkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2NhbGVTdHJpbmcuaXM4Qml0KCkpOworICAgICAgICBhdXRvIHRyaW1tZWRTY2FsZVN0cmlu
ZyA9IHNjYWxlU3RyaW5nLnRyaW0oaXNBU0NJSVdoaXRlc3BhY2U8TENoYXI+KTsKICAgICAgICAg
c2l6ZV90IHBhcnNlZExlbmd0aCA9IDA7CiAgICAgICAgIGF1dG8gc2NhbGUgPSBwYXJzZURvdWJs
ZSh0cmltbWVkU2NhbGVTdHJpbmcsIHBhcnNlZExlbmd0aCk7CiAgICAgICAgIGlmIChwYXJzZWRM
ZW5ndGggPT0gdHJpbW1lZFNjYWxlU3RyaW5nLmxlbmd0aCgpICYmIHNjYWxlSXNJbkJvdW5kcyhz
Y2FsZSkpCiAgICAgICAgICAgICBzY2FsZUZyb21FbnZpcm9ubWVudCA9IHNjYWxlOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBnX3dhcm5pbmcoIkludmFsaWQgV1BFX0RSTV9TQ0FMRT0nJXMn
IHZhbHVlLCBvciBvdXQgb2YgYm91bmRzLiIsIHNjYWxlU3RyaW5nKTsKKyAgICAgICAgICAgIGdf
d2FybmluZygiSW52YWxpZCBXUEVfRFJNX1NDQUxFPSclKnMnIHZhbHVlLCBvciBvdXQgb2YgYm91
bmRzLiIsIHN0YXRpY19jYXN0PGludD4oc2NhbGVTdHJpbmcuc3BhbjgoKS5zaXplKCkpLCBzY2Fs
ZVN0cmluZy5zcGFuOCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgaW50IHggPSBjcnRjLT54KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IGIwNGU3
MDE2OGQ0Yi4uYTUwYTE3ZTU2MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291
CiAgICAgICAgIGlmIChpc1JhdykKICAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0
YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNvdXJjZS0+c2VuZFN0cmluZ0RhdGEoQ1N0
cmluZyhieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KGRhdGEpKSk7CisgICAgICAgICAgICBzb3Vy
Y2UtPnNlbmRTdHJpbmdEYXRhKENTdHJpbmcoZGF0YSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMjcx
NjRlZTFhNmNkLi4wMzEyNWFmNzgyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtODM1LDcgKzgzNSw3IEBAIHN0YXRpYyB2
b2lkIHByZXdhcm1Mb2dzKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1z
dGF0aWMgYm9vbCBzaG91bGRJZ25vcmVMb2dNZXNzYWdlKHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFD
aGFyYWN0ZXI+IGxvZ0NoYW5uZWwpCitzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVMb2dNZXNzYWdl
KHN0ZDo6c3Bhbjxjb25zdCBMQ2hhcj4gbG9nQ2hhbm5lbCkKIHsKICAgICByZXR1cm4gZXF1YWxT
cGFucyhsb2dDaGFubmVsLCAiY29tLmFwcGxlLnhwY1wwIl9zcGFuOCkgfHwgZXF1YWxTcGFucyhs
b2dDaGFubmVsLCAiY29tLmFwcGxlLkNvcmVBbmFseXRpY3NcMCJfc3BhbjgpOwogfQpAQCAtODgz
LDEyICs4ODMsMTIgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJMb2dDbGllbnQoYm9vbCBpc0RlYnVn
TG9nZ2luZ0VuYWJsZWQsIHN0ZDo6dW5pcXVlX3B0cjxMb2dDbGkKICAgICAgICAgICAgIHR5cGUg
PSBPU19MT0dfVFlQRV9FUlJPUjsKIAogICAgICAgICBpZiAoY2hhciogbWVzc2FnZVN0cmluZyA9
IG9zX2xvZ19jb3B5X21lc3NhZ2Vfc3RyaW5nKG1zZykpIHsKLSAgICAgICAgICAgIGF1dG8gbG9n
U3RyaW5nID0gc3BhbkNvbnN0Q2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHVuc2FmZVNwYW44SW5jbHVk
aW5nTnVsbFRlcm1pbmF0b3IobWVzc2FnZVN0cmluZykpOworICAgICAgICAgICAgYXV0byBsb2dT
dHJpbmcgPSBzcGFuQ29uc3RDYXN0PExDaGFyPih1bnNhZmVTcGFuOEluY2x1ZGluZ051bGxUZXJt
aW5hdG9yKG1lc3NhZ2VTdHJpbmcpKTsKICAgICAgICAgICAgIGlmIChsb2dTdHJpbmcuc2l6ZSgp
ID4gbG9nU3RyaW5nTWF4U2l6ZSkgewogICAgICAgICAgICAgICAgIGxvZ1N0cmluZyA9IGxvZ1N0
cmluZy5maXJzdChsb2dTdHJpbmdNYXhTaXplKTsKICAgICAgICAgICAgICAgICBsb2dTdHJpbmcu
YmFjaygpID0gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxvZ0NsaWVudCgpLT5sb2co
Ynl0ZUNhc3Q8dWludDhfdD4obG9nQ2hhbm5lbCksIGJ5dGVDYXN0PHVpbnQ4X3Q+KGxvZ0NhdGVn
b3J5KSwgYnl0ZUNhc3Q8dWludDhfdD4obG9nU3RyaW5nKSwgdHlwZSk7CisgICAgICAgICAgICBs
b2dDbGllbnQoKS0+bG9nKGxvZ0NoYW5uZWwsIGxvZ0NhdGVnb3J5LCBsb2dTdHJpbmcsIHR5cGUp
OwogICAgICAgICAgICAgZnJlZShtZXNzYWdlU3RyaW5nKTsKICAgICAgICAgfQogICAgIH0pLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDQ1MmIwNWZjYzRlNC4uYWU1MWIwMzNlNjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKQEAgLTY2OCw3ICs2NjgsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NGcmFtZSgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZyYW1l
LnBheWxvYWQuc2l6ZSgpID49IDMpCi0gICAgICAgICAgICBtX2Nsb3NlRXZlbnRSZWFzb24gPSBi
eXRlQ2FzdDxjaGFyOF90PihmcmFtZS5wYXlsb2FkLnN1YnNwYW4oMikpOworICAgICAgICAgICAg
bV9jbG9zZUV2ZW50UmVhc29uID0gU3RyaW5nOjpmcm9tVVRGOCh7ICZmcmFtZS5wYXlsb2FkWzJd
LCBmcmFtZS5wYXlsb2FkLnNpemUoKSAtIDIgfSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fY2xvc2VFdmVudFJlYXNvbiA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHNraXBCdWZmZXIo
ZnJhbWVFbmQgLSBtX2J1ZmZlci5iZWdpbigpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
ZG8td2ViY29yZS1yZW5hbWUgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCmluZGV4
IDY3MjgzOWE0ZmM2MS4uM2RlZmY0ZmY5NzNjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2Rv
LXdlYmNvcmUtcmVuYW1lCisrKyBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKQEAg
LTY1LDE1ICs2NSwxMCBAQCBpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgewog
CiBteSBAZGlyZWN0b3JpZXNUb0lnbm9yZUxpc3QgPSAoCiAgICAgImV4cGVjdGVkIiwKKyAgICAi
aWN1IiwKICk7CiBteSAlZGlyZWN0b3JpZXNUb0lnbm9yZSA9IG1hcCB7ICRfID0+IDEgfSBAZGly
ZWN0b3JpZXNUb0lnbm9yZUxpc3Q7CiAKLW15IEBwYXRoc1RvSWdub3JlTGlzdCA9ICgKLSAgICAi
U291cmNlL1dURi9pY3UiLAotICAgICJTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9pY3UiLAotKTsK
LW15ICVwYXRoc1RvSWdub3JlID0gbWFwIHsgJF8gPT4gMSB9IEBwYXRoc1RvSWdub3JlTGlzdDsK
LQogIyBmaW5kIGFsbCBmaWxlcyB3ZSB3YW50IHRvIHByb2Nlc3MKIAogbXkgQHBhdGhzOwpAQCAt
ODEsNyArNzYsNiBAQCBmaW5kKFwmd2FudGVkLCAiU291cmNlL0phdmFTY3JpcHRDb3JlIik7CiBm
aW5kKFwmd2FudGVkLCAiU291cmNlL1dURiIpOwogZmluZChcJndhbnRlZCwgIlNvdXJjZS9XZWJD
b3JlIik7CiBmaW5kKFwmd2FudGVkLCAiU291cmNlL1dlYkRyaXZlciIpOwotZmluZChcJndhbnRl
ZCwgIlNvdXJjZS9XZWJHUFUiKTsKIGZpbmQoXCZ3YW50ZWQsICJTb3VyY2UvV2ViS2l0TGVnYWN5
Iik7CiBmaW5kKFwmd2FudGVkLCAiU291cmNlL1dlYktpdCIpOwogZmluZChcJndhbnRlZCwgIlRv
b2xzL2dkYiIpOwpAQCAtOTYsMTQgKzkwLDYgQEAgZmluZChcJndhbnRlZCwgIlRvb2xzL1dlYktp
dFRlc3RSdW5uZXIiKTsKIHN1YiB3YW50ZWQKIHsKICAgICBteSAkZmlsZSA9ICRfOwotICAgIG15
ICRmdWxsUGF0aCA9ICRGaWxlOjpGaW5kOjpuYW1lOwotCi0gICAgIyBDaGVjayBmb3Igc3BlY2lm
aWMgZnVsbCBwYXRocyB0byBpZ25vcmUKLSAgICBpZiAoJHBhdGhzVG9JZ25vcmV7JGZ1bGxQYXRo
fSkgewotICAgICAgICBwcmludCAiSWdub3JpbmcgJGZ1bGxQYXRoXG4iIGlmICR2ZXJib3NlOwot
ICAgICAgICAkRmlsZTo6RmluZDo6cHJ1bmUgPSAxOwotICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgIyBJZ25vcmUgZXhjbHVkZWQgYW5kIGhpZGRlbiBmaWxlcy9kaXJlY3Rvcmllcy4KICAg
ICBpZiAoJGRpcmVjdG9yaWVzVG9JZ25vcmV7JGZpbGV9IG9yICRmaWxlID1+IC9eXC4uLyBvciAk
ZmlsZSA9fiAvXkNoYW5nZUxvZy8pIHsKQEAgLTEyMiw3ICsxMDgsOSBAQCBzdWIgd2FudGVkCiBt
eSAkaXNET01UeXBlUmVuYW1lID0gMDsKIG15ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBn
byBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAgICJMQ2hhciIgPT4gIkxhdGluMUNoYXJhY3RlciIs
CisgICAgInhwY19kaWN0aW9uYXJ5X2dldF9kYXRhX3NwYW4iID0+ICJ4cGNEaWN0aW9uYXJ5R2V0
RGF0YSIsCisgICAgInhwY19kaWN0aW9uYXJ5X2dldF93dGZzdHJpbmciID0+ICJ4cGNEaWN0aW9u
YXJ5R2V0U3RyaW5nIiwKKyAgICAieHBjX3N0cmluZ19nZXRfd3Rmc3RyaW5nIiA9PiAieHBjU3Ry
aW5nR2V0U3RyaW5nIiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJl
ID0gKApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRl
eCBiMTJkNWMwZjUzYTUuLjVjYjBkMWIzODM0NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTIzMDgsNyArMjMwOCw3IEBAIGRlZiBjaGVja19z
cGFjaW5nKGZpbGVfZXh0ZW5zaW9uLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfc3Rh
dGUsIGVycm9yKToKICAgICAgICAgICAgICAgICAgICdTaG91bGQgaGF2ZSBzcGFjZXMgYXJvdW5k
ID0gaW4gcHJvcGVydHkgc3ludGhlc2lzLicpCiAKICAgICAjIERvbid0IHRyeSB0byBkbyBzcGFj
aW5nIGNoZWNrcyBmb3Igb3BlcmF0b3IgbWV0aG9kcwotICAgIGxpbmUgPSBzdWIocidvcGVyYXRv
cig9PXwhPXw8fDw8fDw9fD49fD4+fD58XCs9fC09fFwqPXwvPXwlPXwmPXxcfD18Xj18PDw9fD4+
PXwvfFx8KVwoJywgcidvcGVyYXRvclwoJywgbGluZSkKKyAgICBsaW5lID0gc3ViKHInb3BlcmF0
b3IoPT18IT18PHw8PHw8PXw+PXw+Pnw+fFwrPXwtPXxcKj18Lz18JT18Jj18XHw9fF49fDw8PXw+
Pj18LylcKCcsIHInb3BlcmF0b3JcKCcsIGxpbmUpCiAgICAgIyBEb24ndCB0cnkgdG8gZG8gc3Bh
Y2luZyBjaGVja3MgZm9yICNpbmNsdWRlLCAjaW1wb3J0LCAjaWYsIG9yICNlbGlmIHN0YXRlbWVu
dHMgYXQKICAgICAjIG1pbmltdW0gYmVjYXVzZSBpdCBtZXNzZXMgdXAgY2hlY2tzIGZvciBzcGFj
aW5nIGFyb3VuZCAvCiAgICAgaWYgbWF0Y2gocidccyojXHMqKD86aW5jbHVkZXxpbXBvcnR8aWZ8
ZWxpZiknLCBsaW5lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV0dT
TC9Db25zdExpdGVyYWxUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dHU0wv
Q29uc3RMaXRlcmFsVGVzdHMuY3BwCmluZGV4IDIwYzIyNjVlNTk1Mi4uMmU3NDIyNjk4YjI3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dHU0wvQ29uc3RMaXRlcmFsVGVz
dHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV0dTTC9Db25zdExpdGVyYWxU
ZXN0cy5jcHAKQEAgLTMwLDEwICszMCwxMCBAQAogI2luY2x1ZGUgIldHU0xTaGFkZXJNb2R1bGUu
aCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogCi1zdGF0aWMgRXhwZWN0ZWQ8c3RkOjpwYWly
PFdHU0w6OlNoYWRlck1vZHVsZSwgV0dTTDo6QVNUOjpFeHByZXNzaW9uOjpSZWY+LCBXR1NMOjpF
cnJvcj4gcGFyc2VMQ2hhclByaW1hcnlFeHByZXNzaW9uKEFTQ0lJTGl0ZXJhbCBpbnB1dCkKK3N0
YXRpYyBFeHBlY3RlZDxzdGQ6OnBhaXI8V0dTTDo6U2hhZGVyTW9kdWxlLCBXR1NMOjpBU1Q6OkV4
cHJlc3Npb246OlJlZj4sIFdHU0w6OkVycm9yPiBwYXJzZUxDaGFyUHJpbWFyeUV4cHJlc3Npb24o
Y29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBXR1NMOjpTaGFkZXJNb2R1bGUgc2hhZGVyTW9k
dWxlKGlucHV0LCB7IH0pOwotICAgIFdHU0w6OkxleGVyPExhdGluMUNoYXJhY3Rlcj4gbGV4ZXIo
aW5wdXQuc3BhbjgoKSk7CisgICAgV0dTTDo6TGV4ZXI8TENoYXI+IGxleGVyKGlucHV0KTsKICAg
ICBXR1NMOjpQYXJzZXIgcGFyc2VyKHNoYWRlck1vZHVsZSwgbGV4ZXIpOwogCiAgICAgYXV0byBl
eHByZXNzaW9uID0gcGFyc2VyLnBhcnNlUHJpbWFyeUV4cHJlc3Npb24oKTsKQEAgLTQ0LDcgKzQ0
LDcgQEAgc3RhdGljIEV4cGVjdGVkPHN0ZDo6cGFpcjxXR1NMOjpTaGFkZXJNb2R1bGUsIFdHU0w6
OkFTVDo6RXhwcmVzc2lvbjo6UmVmPiwgV0dTTDoKIAogdGVtcGxhdGU8Y2xhc3MgTnVtYmVyVHlw
ZT4KIHN0cnVjdCBDb25zdExpdGVyYWxUZXN0Q2FzZSB7Ci0gICAgQVNDSUlMaXRlcmFsIGlucHV0
OworICAgIFN0cmluZyBpbnB1dDsKICAgICBOdW1iZXJUeXBlIGV4cGVjdGVkVmFsdWU7CiB9Owog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dHU0wvTGV4ZXJUZXN0cy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dHU0wvTGV4ZXJUZXN0cy5jcHAKaW5kZXgg
MjBmMjIzMWIzYWQxLi41NWU5OGQ4MmNhZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV0dTTC9MZXhlclRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dHU0wvTGV4ZXJUZXN0cy5jcHAKQEAgLTI2LDE2ICsyNiwxNCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAKLSNpbmNsdWRlICJUb2tlbi5oIgotCiBuYW1l
c3BhY2UgVGVzdFdHU0xBUEkgewogCi1jbGFzcyBUZXN0TGV4ZXIgOiBwdWJsaWMgV0dTTDo6TGV4
ZXI8TGF0aW4xQ2hhcmFjdGVyPiB7Ci0gICAgdXNpbmcgQmFzZSA9IFdHU0w6OkxleGVyPExhdGlu
MUNoYXJhY3Rlcj47CitjbGFzcyBUZXN0TGV4ZXIgOiBwdWJsaWMgV0dTTDo6TGV4ZXI8TENoYXI+
IHsKKyAgICB1c2luZyBCYXNlID0gV0dTTDo6TGV4ZXI8TENoYXI+OwogCiBwdWJsaWM6Ci0gICAg
VGVzdExleGVyKEFTQ0lJTGl0ZXJhbCBpbnB1dCkKLSAgICAgICAgOiBCYXNlKGlucHV0LnNwYW44
KCkpCisgICAgVGVzdExleGVyKGNvbnN0IFN0cmluZyYgaW5wdXQpCisgICAgICAgIDogQmFzZShp
bnB1dCkKICAgICAgICAgLCBtX3Rva2VucyhCYXNlOjpsZXgoKSkKICAgICB7CiAgICAgfQpAQCAt
NTEsNyArNDksNyBAQCBwcml2YXRlOgogfTsKIAogCi1zdGF0aWMgV0dTTDo6VG9rZW4gY2hlY2tT
aW5nbGVUb2tlbihBU0NJSUxpdGVyYWwgc3RyaW5nLCBXR1NMOjpUb2tlblR5cGUgdHlwZSkKK3N0
YXRpYyBXR1NMOjpUb2tlbiBjaGVja1NpbmdsZVRva2VuKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBX
R1NMOjpUb2tlblR5cGUgdHlwZSkKIHsKICAgICBUZXN0TGV4ZXIgbGV4ZXIoc3RyaW5nKTsKICAg
ICBXR1NMOjpUb2tlbiByZXN1bHQgPSBsZXhlci5sZXgoKTsKQEAgLTYwLDEyICs1OCwxMiBAQCBz
dGF0aWMgV0dTTDo6VG9rZW4gY2hlY2tTaW5nbGVUb2tlbihBU0NJSUxpdGVyYWwgc3RyaW5nLCBX
R1NMOjpUb2tlblR5cGUgdHlwZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9p
ZCBjaGVja1NpbmdsZUludGVnZXJMaXRlcmFsKEFTQ0lJTGl0ZXJhbCBzdHJpbmcsIFdHU0w6OlRv
a2VuVHlwZSB0eXBlLCBpbnQ2NF90IGludGVnZXJWYWx1ZSkKK3N0YXRpYyB2b2lkIGNoZWNrU2lu
Z2xlSW50ZWdlckxpdGVyYWwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFdHU0w6OlRva2VuVHlwZSB0
eXBlLCBpbnQ2NF90IGludGVnZXJWYWx1ZSkKIHsKICAgICBXR1NMOjpUb2tlbiByZXN1bHQgPSBj
aGVja1NpbmdsZVRva2VuKHN0cmluZywgdHlwZSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5pbnRl
Z2VyVmFsdWUsIGludGVnZXJWYWx1ZSk7CiB9Ci1zdGF0aWMgdm9pZCBjaGVja1NpbmdsZUZsb2F0
TGl0ZXJhbChBU0NJSUxpdGVyYWwgc3RyaW5nLCBXR1NMOjpUb2tlblR5cGUgdHlwZSwgZG91Ymxl
IGZsb2F0VmFsdWUpCitzdGF0aWMgdm9pZCBjaGVja1NpbmdsZUZsb2F0TGl0ZXJhbChjb25zdCBT
dHJpbmcmIHN0cmluZywgV0dTTDo6VG9rZW5UeXBlIHR5cGUsIGRvdWJsZSBmbG9hdFZhbHVlKQog
ewogICAgIFdHU0w6OlRva2VuIHJlc3VsdCA9IGNoZWNrU2luZ2xlVG9rZW4oc3RyaW5nLCB0eXBl
KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmZsb2F0VmFsdWUsIGZsb2F0VmFsdWUpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQmFzZTY0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Jhc2U2NC5jcHAKaW5kZXggMjZlMjMyZGU5ZWY1Li5lYzc4
ZDA1MDBkZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Jhc2U2
NC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQmFzZTY0LmNwcApAQCAt
MzYsMTMgKzM2LDEzIEBAIFRFU1QoQmFzZTY0LCBFbmNvZGUpCiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBPcHRpb25TZXQ8QmFzZTY0RW5jb2RlT3B0aW9uPiBvcHRpb25zOwogCi0gICAgRVhQRUNU
X0VOQ09ERSgiIiwgYnl0ZUNhc3Q8dWludDhfdD4oIiJfc3BhbjgpKTsKLSAgICBFWFBFQ1RfRU5D
T0RFKCJaZz09IiwgYnl0ZUNhc3Q8dWludDhfdD4oImYiX3NwYW44KSk7Ci0gICAgRVhQRUNUX0VO
Q09ERSgiWm04PSIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmbyJfc3BhbjgpKTsKLSAgICBFWFBFQ1Rf
RU5DT0RFKCJabTl2IiwgYnl0ZUNhc3Q8dWludDhfdD4oImZvbyJfc3BhbjgpKTsKLSAgICBFWFBF
Q1RfRU5DT0RFKCJabTl2WWc9PSIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmb29iIl9zcGFuOCkpOwot
ICAgIEVYUEVDVF9FTkNPREUoIlptOXZZbUU9IiwgYnl0ZUNhc3Q8dWludDhfdD4oImZvb2JhIl9z
cGFuOCkpOwotICAgIEVYUEVDVF9FTkNPREUoIlptOXZZbUZ5IiwgYnl0ZUNhc3Q8dWludDhfdD4o
ImZvb2JhciJfc3BhbjgpKTsKKyAgICBFWFBFQ1RfRU5DT0RFKCIiLCAiIl9zcGFuOCk7CisgICAg
RVhQRUNUX0VOQ09ERSgiWmc9PSIsICJmIl9zcGFuOCk7CisgICAgRVhQRUNUX0VOQ09ERSgiWm04
PSIsICJmbyJfc3BhbjgpOworICAgIEVYUEVDVF9FTkNPREUoIlptOXYiLCAiZm9vIl9zcGFuOCk7
CisgICAgRVhQRUNUX0VOQ09ERSgiWm05dllnPT0iLCAiZm9vYiJfc3BhbjgpOworICAgIEVYUEVD
VF9FTkNPREUoIlptOXZZbUU9IiwgImZvb2JhIl9zcGFuOCk7CisgICAgRVhQRUNUX0VOQ09ERSgi
Wm05dlltRnkiLCAiZm9vYmFyIl9zcGFuOCk7CiAKICAgICBFWFBFQ1RfRU5DT0RFKCJBQT09Iiwg
VmVjdG9yPHVpbnQ4X3Q+KHsgMCB9KSk7CiAgICAgRVhQRUNUX0VOQ09ERSgiQVE9PSIsIFZlY3Rv
cjx1aW50OF90Pih7IDEgfSkpOwpAQCAtNTgsMTMgKzU4LDEzIEBAIFRFU1QoQmFzZTY0LCBFbmNv
ZGVPbWl0UGFkZGluZykKIHsKICAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxCYXNlNjRF
bmNvZGVPcHRpb24+IG9wdGlvbnMgPSB7IEJhc2U2NEVuY29kZU9wdGlvbjo6T21pdFBhZGRpbmcg
fTsKIAotICAgIEVYUEVDVF9FTkNPREUoIiIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCIiX3NwYW44KSk7
Ci0gICAgRVhQRUNUX0VOQ09ERSgiWmciLCBieXRlQ2FzdDx1aW50OF90PigiZiJfc3BhbjgpKTsK
LSAgICBFWFBFQ1RfRU5DT0RFKCJabTgiLCBieXRlQ2FzdDx1aW50OF90PigiZm8iX3NwYW44KSk7
Ci0gICAgRVhQRUNUX0VOQ09ERSgiWm05diIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmb28iX3NwYW44
KSk7Ci0gICAgRVhQRUNUX0VOQ09ERSgiWm05dllnIiwgYnl0ZUNhc3Q8dWludDhfdD4oImZvb2Ii
X3NwYW44KSk7Ci0gICAgRVhQRUNUX0VOQ09ERSgiWm05dlltRSIsIGJ5dGVDYXN0PHVpbnQ4X3Q+
KCJmb29iYSJfc3BhbjgpKTsKLSAgICBFWFBFQ1RfRU5DT0RFKCJabTl2WW1GeSIsIGJ5dGVDYXN0
PHVpbnQ4X3Q+KCJmb29iYXIiX3NwYW44KSk7CisgICAgRVhQRUNUX0VOQ09ERSgiIiwgIiJfc3Bh
bjgpOworICAgIEVYUEVDVF9FTkNPREUoIlpnIiwgImYiX3NwYW44KTsKKyAgICBFWFBFQ1RfRU5D
T0RFKCJabTgiLCAiZm8iX3NwYW44KTsKKyAgICBFWFBFQ1RfRU5DT0RFKCJabTl2IiwgImZvbyJf
c3BhbjgpOworICAgIEVYUEVDVF9FTkNPREUoIlptOXZZZyIsICJmb29iIl9zcGFuOCk7CisgICAg
RVhQRUNUX0VOQ09ERSgiWm05dlltRSIsICJmb29iYSJfc3BhbjgpOworICAgIEVYUEVDVF9FTkNP
REUoIlptOXZZbUZ5IiwgImZvb2JhciJfc3BhbjgpOwogCiAgICAgRVhQRUNUX0VOQ09ERSgiQUEi
LCBWZWN0b3I8dWludDhfdD4oeyAwIH0pKTsKICAgICBFWFBFQ1RfRU5DT0RFKCJBUSIsIFZlY3Rv
cjx1aW50OF90Pih7IDEgfSkpOwpAQCAtODAsMTMgKzgwLDEzIEBAIFRFU1QoQmFzZTY0LCBFbmNv
ZGVVUkwpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8QmFzZTY0RW5jb2RlT3B0
aW9uPiBvcHRpb25zID0geyBCYXNlNjRFbmNvZGVPcHRpb246OlVSTCB9OwogCi0gICAgRVhQRUNU
X0VOQ09ERSgiIiwgYnl0ZUNhc3Q8dWludDhfdD4oIiJfc3BhbjgpKTsKLSAgICBFWFBFQ1RfRU5D
T0RFKCJaZz09IiwgYnl0ZUNhc3Q8dWludDhfdD4oImYiX3NwYW44KSk7Ci0gICAgRVhQRUNUX0VO
Q09ERSgiWm04PSIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmbyJfc3BhbjgpKTsKLSAgICBFWFBFQ1Rf
RU5DT0RFKCJabTl2IiwgYnl0ZUNhc3Q8dWludDhfdD4oImZvbyJfc3BhbjgpKTsKLSAgICBFWFBF
Q1RfRU5DT0RFKCJabTl2WWc9PSIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmb29iIl9zcGFuOCkpOwot
ICAgIEVYUEVDVF9FTkNPREUoIlptOXZZbUU9IiwgYnl0ZUNhc3Q8dWludDhfdD4oImZvb2JhIl9z
cGFuOCkpOwotICAgIEVYUEVDVF9FTkNPREUoIlptOXZZbUZ5IiwgYnl0ZUNhc3Q8dWludDhfdD4o
ImZvb2JhciJfc3BhbjgpKTsKKyAgICBFWFBFQ1RfRU5DT0RFKCIiLCAiIl9zcGFuOCk7CisgICAg
RVhQRUNUX0VOQ09ERSgiWmc9PSIsICJmIl9zcGFuOCk7CisgICAgRVhQRUNUX0VOQ09ERSgiWm04
PSIsICJmbyJfc3BhbjgpOworICAgIEVYUEVDVF9FTkNPREUoIlptOXYiLCAiZm9vIl9zcGFuOCk7
CisgICAgRVhQRUNUX0VOQ09ERSgiWm05dllnPT0iLCAiZm9vYiJfc3BhbjgpOworICAgIEVYUEVD
VF9FTkNPREUoIlptOXZZbUU9IiwgImZvb2JhIl9zcGFuOCk7CisgICAgRVhQRUNUX0VOQ09ERSgi
Wm05dlltRnkiLCAiZm9vYmFyIl9zcGFuOCk7CiAKICAgICBFWFBFQ1RfRU5DT0RFKCJBQT09Iiwg
VmVjdG9yPHVpbnQ4X3Q+KHsgMCB9KSk7CiAgICAgRVhQRUNUX0VOQ09ERSgiQVE9PSIsIFZlY3Rv
cjx1aW50OF90Pih7IDEgfSkpOwpAQCAtMTAyLDEzICsxMDIsMTMgQEAgVEVTVChCYXNlNjQsIEVu
Y29kZVVSTE9taXRQYWRkaW5nKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEJh
c2U2NEVuY29kZU9wdGlvbj4gb3B0aW9ucyA9IHsgQmFzZTY0RW5jb2RlT3B0aW9uOjpVUkwsIEJh
c2U2NEVuY29kZU9wdGlvbjo6T21pdFBhZGRpbmcgfTsKIAotICAgIEVYUEVDVF9FTkNPREUoIiIs
IGJ5dGVDYXN0PHVpbnQ4X3Q+KCIiX3NwYW44KSk7Ci0gICAgRVhQRUNUX0VOQ09ERSgiWmciLCBi
eXRlQ2FzdDx1aW50OF90PigiZiJfc3BhbjgpKTsKLSAgICBFWFBFQ1RfRU5DT0RFKCJabTgiLCBi
eXRlQ2FzdDx1aW50OF90PigiZm8iX3NwYW44KSk7Ci0gICAgRVhQRUNUX0VOQ09ERSgiWm05diIs
IGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmb28iX3NwYW44KSk7Ci0gICAgRVhQRUNUX0VOQ09ERSgiWm05
dllnIiwgYnl0ZUNhc3Q8dWludDhfdD4oImZvb2IiX3NwYW44KSk7Ci0gICAgRVhQRUNUX0VOQ09E
RSgiWm05dlltRSIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmb29iYSJfc3BhbjgpKTsKLSAgICBFWFBF
Q1RfRU5DT0RFKCJabTl2WW1GeSIsIGJ5dGVDYXN0PHVpbnQ4X3Q+KCJmb29iYXIiX3NwYW44KSk7
CisgICAgRVhQRUNUX0VOQ09ERSgiIiwgIiJfc3BhbjgpOworICAgIEVYUEVDVF9FTkNPREUoIlpn
IiwgImYiX3NwYW44KTsKKyAgICBFWFBFQ1RfRU5DT0RFKCJabTgiLCAiZm8iX3NwYW44KTsKKyAg
ICBFWFBFQ1RfRU5DT0RFKCJabTl2IiwgImZvbyJfc3BhbjgpOworICAgIEVYUEVDVF9FTkNPREUo
IlptOXZZZyIsICJmb29iIl9zcGFuOCk7CisgICAgRVhQRUNUX0VOQ09ERSgiWm05dlltRSIsICJm
b29iYSJfc3BhbjgpOworICAgIEVYUEVDVF9FTkNPREUoIlptOXZZbUZ5IiwgImZvb2JhciJfc3Bh
bjgpOwogCiAgICAgRVhQRUNUX0VOQ09ERSgiQUEiLCBWZWN0b3I8dWludDhfdD4oeyAwIH0pKTsK
ICAgICBFWFBFQ1RfRU5DT0RFKCJBUSIsIFZlY3Rvcjx1aW50OF90Pih7IDEgfSkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA2OTY1NzZkNjEy
NGYuLjgxMjJmYjcxMDU2MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmls
ZVN5c3RlbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgY29uc3RleHByIGF1dG8gRmlsZVN5c3RlbVRl
c3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0Il9zOwogCiBzdGF0aWMgdm9pZCBjcmVhdGVUZXN0Rmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgYXV0byB3cml0dGVuID0gRmlsZVN5c3RlbTo6
b3ZlcndyaXRlRW50aXJlRmlsZShwYXRoLCBieXRlQ2FzdDx1aW50OF90PihGaWxlU3lzdGVtVGVz
dERhdGEuc3BhbjgoKSkpOworICAgIGF1dG8gd3JpdHRlbiA9IEZpbGVTeXN0ZW06Om92ZXJ3cml0
ZUVudGlyZUZpbGUocGF0aCwgRmlsZVN5c3RlbVRlc3REYXRhLnNwYW44KCkpOwogICAgIEVYUEVD
VF9UUlVFKHdyaXR0ZW4pOwogICAgIEVYUEVDVF9HRSgqd3JpdHRlbiwgMHUpOwogfQpAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSJfcyk7CiAgICAgICAgIG1fdGVtcEZpbGVQYXRo
ID0gcmVzdWx0LmZpcnN0OwogICAgICAgICBhdXRvIGhhbmRsZSA9IFdURk1vdmUocmVzdWx0LnNl
Y29uZCk7Ci0gICAgICAgIGhhbmRsZS53cml0ZShieXRlQ2FzdDx1aW50OF90PihGaWxlU3lzdGVt
VGVzdERhdGEuc3BhbjgoKSkpOworICAgICAgICBoYW5kbGUud3JpdGUoRmlsZVN5c3RlbVRlc3RE
YXRhLnNwYW44KCkpOwogICAgICAgICBoYW5kbGUgPSB7IH07CiAKICAgICAgICAgbV90ZW1wRmls
ZVN5bWxpbmtQYXRoID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RG
aWxlLXN5bWxpbmsiX3MpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgb3BlbkV4aXN0aW5nRmlsZVRydW5jYXRlKQogICAgIC8vIENoZWNrIHRoZSBleGlzdGluZyBm
aWxlIFdBUyB0cnVuY2F0ZWQgd2hlbiB0aGUgb3BlcmF0aW9uIHN1Y2NlZGVkLgogICAgIEVYUEVD
VF9FUShGaWxlU3lzdGVtOjpmaWxlU2l6ZSh0ZW1wRmlsZVBhdGgoKSksIDApOwogICAgIC8vIFdy
aXRlIGRhdGEgdG8gaXQgYW5kIGNoZWNrIHRoZSBmaWxlIHNpemUgZ3Jvd3MuCi0gICAgaGFuZGxl
LndyaXRlKGJ5dGVDYXN0PHVpbnQ4X3Q+KEZpbGVTeXN0ZW1UZXN0RGF0YS5zcGFuOCgpKSk7Cisg
ICAgaGFuZGxlLndyaXRlKEZpbGVTeXN0ZW1UZXN0RGF0YS5zcGFuOCgpKTsKICAgICBFWFBFQ1Rf
RVEoRmlsZVN5c3RlbTo6ZmlsZVNpemUodGVtcEZpbGVQYXRoKCkpLCBzdHJsZW4oRmlsZVN5c3Rl
bVRlc3REYXRhKSk7CiB9CiAKQEAgLTI1Niw4ICsyNTYsOCBAQCBURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIG9wZW5FeGlzdGluZ0ZpbGVSZWFkV3JpdGUpCiAgICAgLy8gUmVhZFdyaXRlIG1vZGUgc2hv
dWxkbid0IHRydW5jYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KICAgICBFWFBFQ1RfRVEo
RmlsZVN5c3RlbTo6ZmlsZVNpemUodGVtcEZpbGVQYXRoKCkpLCBzdHJsZW4oRmlsZVN5c3RlbVRl
c3REYXRhKSk7CiAgICAgLy8gV3JpdGUgZGF0YSB0byBpdCBhbmQgY2hlY2sgdGhlIGZpbGUgc2l6
ZSBncm93cy4KLSAgICBoYW5kbGUud3JpdGUoYnl0ZUNhc3Q8dWludDhfdD4oRmlsZVN5c3RlbVRl
c3REYXRhLnNwYW44KCkpKTsKLSAgICBoYW5kbGUud3JpdGUoYnl0ZUNhc3Q8dWludDhfdD4oRmls
ZVN5c3RlbVRlc3REYXRhLnNwYW44KCkpKTsKKyAgICBoYW5kbGUud3JpdGUoRmlsZVN5c3RlbVRl
c3REYXRhLnNwYW44KCkpOworICAgIGhhbmRsZS53cml0ZShGaWxlU3lzdGVtVGVzdERhdGEuc3Bh
bjgoKSk7CiAgICAgRVhQRUNUX0VRKEZpbGVTeXN0ZW06OmZpbGVTaXplKHRlbXBGaWxlUGF0aCgp
KSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkgKiAyKTsKIH0KIApAQCAtNDUwLDcgKzQ1MCw3
IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGVsZXRlRW1wdHlEaXJlY3RvcnlDb250YWluaW5n
RFNTdG9yZUZpbGUpCiAgICAgLy8gQ3JlYXRlIC5EU1N0b3JlIGZpbGUuCiAgICAgYXV0byBkc1N0
b3JlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wRW1wdHlG
b2xkZXJQYXRoKCksICIuRFNfU3RvcmUiX3MpOwogICAgIGF1dG8gZHNTdG9yZUhhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKGRzU3RvcmVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OlRydW5jYXRlKTsKLSAgICBkc1N0b3JlSGFuZGxlLndyaXRlKGJ5dGVDYXN0PHVpbnQ4X3Q+KEZp
bGVTeXN0ZW1UZXN0RGF0YS5zcGFuOCgpKSk7CisgICAgZHNTdG9yZUhhbmRsZS53cml0ZShGaWxl
U3lzdGVtVGVzdERhdGEuc3BhbjgoKSk7CiAgICAgZHNTdG9yZUhhbmRsZSA9IHsgfTsKICAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRzU3RvcmVQYXRoKSk7CiAKQEAgLTQ2
NiwxNCArNDY2LDE0IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgZGVsZXRlRW1wdHlEaXJlY3Rv
cnlPbk5vbkVtcHR5RGlyZWN0b3J5KQogICAgIC8vIENyZWF0ZSAuRFNTdG9yZSBmaWxlLgogICAg
IGF1dG8gZHNTdG9yZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
dGVtcEVtcHR5Rm9sZGVyUGF0aCgpLCAiLkRTX1N0b3JlIl9zKTsKICAgICBhdXRvIGRzU3RvcmVI
YW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShkc1N0b3JlUGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpUcnVuY2F0ZSk7Ci0gICAgZHNTdG9yZUhhbmRsZS53cml0ZShieXRlQ2FzdDx1
aW50OF90PihGaWxlU3lzdGVtVGVzdERhdGEuc3BhbjgoKSkpOworICAgIGRzU3RvcmVIYW5kbGUu
d3JpdGUoRmlsZVN5c3RlbVRlc3REYXRhLnNwYW44KCkpOwogICAgIGRzU3RvcmVIYW5kbGUgPSB7
IH07CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkc1N0b3JlUGF0aCkp
OwogCiAgICAgLy8gQ3JlYXRlIGEgZHVtbXkgZmlsZS4KICAgICBhdXRvIGR1bW15RmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcEVtcHR5Rm9sZGVyUGF0
aCgpLCAiZHVtbXlGaWxlIl9zKTsKICAgICBhdXRvIGR1bW15RmlsZUhhbmRsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKGR1bW15RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6VHJ1
bmNhdGUpOwotICAgIGR1bW15RmlsZUhhbmRsZS53cml0ZShieXRlQ2FzdDx1aW50OF90PihGaWxl
U3lzdGVtVGVzdERhdGEuc3BhbjgoKSkpOworICAgIGR1bW15RmlsZUhhbmRsZS53cml0ZShGaWxl
U3lzdGVtVGVzdERhdGEuc3BhbjgoKSk7CiAgICAgZHVtbXlGaWxlSGFuZGxlID0geyB9OwogICAg
IEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZHVtbXlGaWxlUGF0aCkpOwogCkBA
IC01NDEsNyArNTQxLDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBtb3ZlRGlyZWN0b3J5KQog
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyh0ZW1wb3JhcnlU
ZXN0Rm9sZGVyKSk7CiAgICAgYXV0byB0ZXN0RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQodGVtcG9yYXJ5VGVzdEZvbGRlciwgInRlc3RGaWxlIl9zKTsKICAg
ICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZXN0RmlsZVBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6VHJ1bmNhdGUpOwotICAgIGZpbGVIYW5kbGUud3JpdGUo
Ynl0ZUNhc3Q8dWludDhfdD4oRmlsZVN5c3RlbVRlc3REYXRhLnNwYW44KCkpKTsKKyAgICBmaWxl
SGFuZGxlLndyaXRlKEZpbGVTeXN0ZW1UZXN0RGF0YS5zcGFuOCgpKTsKICAgICBmaWxlSGFuZGxl
ID0geyB9OwogCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZXN0Rmls
ZVBhdGgpKTsKQEAgLTc1Myw3ICs3NTMsNyBAQCBzdGF0aWMgdm9pZCBydW5HZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZVRlc3QoY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjxzdGQ6Om9wdAogICAg
IC8vIE1vZGlmeSB0aGUgZmlsZS4KICAgICBhdXRvIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSk7CiAgICAg
RVhQRUNUX1RSVUUoISFmaWxlSGFuZGxlKTsKLSAgICBmaWxlSGFuZGxlLndyaXRlKGJ5dGVDYXN0
PHVpbnQ4X3Q+KCJmb28iX3NwYW44KSk7CisgICAgZmlsZUhhbmRsZS53cml0ZSgiZm9vIl9zcGFu
OCk7CiAgICAgZmlsZUhhbmRsZSA9IHsgfTsKIAogICAgIGF1dG8gbmV3TW9kaWZpY2F0aW9uVGlt
ZSA9IGZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOwpAQCAtOTQwLDggKzk0MCw4IEBAIFRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgcmVhZEVudGlyZUZpbGUpCiAKICAgICBhdXRvIGJ1ZmZlciA9IEZp
bGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXIpOwotICAgIGF1dG8gY29udGVudHMgPSBTdHJpbmcgeyBieXRlQ2FzdDxMYXRpbjFD
aGFyYWN0ZXI+KGJ1ZmZlci52YWx1ZSgpLnNwYW4oKSkgfS51dGY4KCk7Ci0gICAgRVhQRUNUX1NU
UkVRKGNvbnRlbnRzLmRhdGEoKSwgRmlsZVN5c3RlbVRlc3REYXRhKTsKKyAgICBhdXRvIGNvbnRl
bnRzID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlci52YWx1ZSgpKSk7CisgICAgRVhQRUNU
X1NUUkVRKGNvbnRlbnRzLnV0ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW1UZXN0RGF0YSk7CiB9CiAK
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgbWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IZXhOdW1iZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGV4TnVtYmVyLmNwcAppbmRleCA4OGE1MTk0
NTM2MTMuLjJiZDM5MGRmY2EzYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGV4TnVtYmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
ZXhOdW1iZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
ICNkZWZpbmUgZXhwZWN0QnVpbGRlckNvbnRlbnQoZXhwZWN0ZWQsIGJ1aWxkZXIpIFwKICAgICB7
IFwKICAgICAgICAgaWYgKGJ1aWxkZXIuaXM4Qml0KCkpIFwKLSAgICAgICAgICAgIEVYUEVDVF9F
UShTdHJpbmcoZXhwZWN0ZWQpLCBTdHJpbmcoYnVpbGRlci5zcGFuPExhdGluMUNoYXJhY3Rlcj4o
KSkpOyBcCisgICAgICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGV4cGVjdGVkKSwgU3RyaW5nKGJ1
aWxkZXIuc3BhbjxMQ2hhcj4oKSkpOyBcCiAgICAgICAgIGVsc2UgXAogICAgICAgICAgICAgRVhQ
RUNUX0VRKFN0cmluZyhleHBlY3RlZCksIFN0cmluZyhidWlsZGVyLnNwYW48Y2hhcjE2X3Q+KCkp
KTsgXAogICAgIH0gXApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nQnVpbGRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdC
dWlsZGVyLmNwcAppbmRleCA3YmE1ZWM3ODYwMTkuLmYwODEyN2YzODNmOSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgc3RhdGljIFN0cmluZyBidWlsZGVyQ29udGVudChjb25zdCBTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyKQogICAgIC8vIE5vdCB1c2luZyBidWlsZGVyLnRvU3RyaW5nKCkgb3IgYnVpbGRlci50
b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSBiZWNhdXNlIHRoZXkgYWxsCiAgICAgLy8gY2hhbmdl
IGludGVybmFsIHN0YXRlIG9mIGJ1aWxkZXIuCiAgICAgaWYgKGJ1aWxkZXIuaXM4Qml0KCkpCi0g
ICAgICAgIHJldHVybiBidWlsZGVyLnNwYW48TGF0aW4xQ2hhcmFjdGVyPigpOworICAgICAgICBy
ZXR1cm4gYnVpbGRlci5zcGFuPExDaGFyPigpOwogICAgIHJldHVybiBidWlsZGVyLnNwYW48Y2hh
cjE2X3Q+KCk7CiB9CiAKQEAgLTY5LDcgKzY5LDcgQEAgVEVTVChTdHJpbmdCdWlsZGVyVGVzdCwg
QXBwZW5kKQogICAgIEVYUEVDVF9FUSgiMDEyMzQ1Njc4OSJfcywgYnVpbGRlckNvbnRlbnQoYnVp
bGRlcikpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJhYmNkIl9zKTsKICAgICBFWFBFQ1RfRVEoIjAx
MjM0NTY3ODlhYmNkIl9zLCBidWlsZGVyQ29udGVudChidWlsZGVyKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoc3RkOjpzcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMYXRpbjFDaGFyYWN0ZXIq
PigiZWZnaCIpLCAzIH0pOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0ZDo6c3BhbiB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZWZnaCIpLCAzIH0pOwogICAgIEVYUEVDVF9FUSgiMDEy
MzQ1Njc4OWFiY2RlZmciX3MsIGJ1aWxkZXJDb250ZW50KGJ1aWxkZXIpKTsKICAgICBidWlsZGVy
LmFwcGVuZCgiIl9zKTsKICAgICBFWFBFQ1RfRVEoIjAxMjM0NTY3ODlhYmNkZWZnIl9zLCBidWls
ZGVyQ29udGVudChidWlsZGVyKSk7CkBAIC04MCwxNSArODAsMTUgQEAgVEVTVChTdHJpbmdCdWls
ZGVyVGVzdCwgQXBwZW5kKQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjE7CiAgICAgYnVpbGRl
ci5hcHBlbmQoIiJfc3Bhbik7CiAgICAgRVhQRUNUX0VRKCIwMTIzNDU2Nzg5YWJjZGVmZyMiX3Ms
IGJ1aWxkZXJDb250ZW50KGJ1aWxkZXIpKTsKLSAgICBidWlsZGVyMS5hcHBlbmQoYnVpbGRlci5z
cGFuPExhdGluMUNoYXJhY3Rlcj4oKSk7CisgICAgYnVpbGRlcjEuYXBwZW5kKGJ1aWxkZXIuc3Bh
bjxMQ2hhcj4oKSk7CiAgICAgYnVpbGRlcjEuYXBwZW5kKCJYWVoiX3MpOwotICAgIGJ1aWxkZXIu
YXBwZW5kKGJ1aWxkZXIxLnNwYW48TGF0aW4xQ2hhcmFjdGVyPigpKTsKKyAgICBidWlsZGVyLmFw
cGVuZChidWlsZGVyMS5zcGFuPExDaGFyPigpKTsKICAgICBFWFBFQ1RfRVEoIjAxMjM0NTY3ODlh
YmNkZWZnIzAxMjM0NTY3ODlhYmNkZWZnI1hZWiJfcywgYnVpbGRlckNvbnRlbnQoYnVpbGRlcikp
OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyMjsKICAgICBidWlsZGVyMi5yZXNlcnZlQ2Fw
YWNpdHkoMTAwKTsKICAgICBidWlsZGVyMi5hcHBlbmQoInh5eiJfcyk7Ci0gICAgY29uc3QgTGF0
aW4xQ2hhcmFjdGVyKiBjaGFyYWN0ZXJzID0gYnVpbGRlcjIuc3BhbjgoKS5kYXRhKCk7CisgICAg
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMgPSBidWlsZGVyMi5zcGFuOCgpLmRhdGEoKTsKICAgICBi
dWlsZGVyMi5hcHBlbmQoIjAxMjM0NTY3ODkiX3MpOwogICAgIEVYUEVDVF9FUShjaGFyYWN0ZXJz
LCBidWlsZGVyMi5zcGFuOCgpLmRhdGEoKSk7CiAgICAgYnVpbGRlcjIudG9TdHJpbmdQcmVzZXJ2
ZUNhcGFjaXR5KCk7IC8vIFRlc3QgYWZ0ZXIgcmVpZnlTdHJpbmcgd2l0aCBidWZmZXIgcHJlc2Vy
dmVkLgpAQCAtMzk3LDcgKzM5Nyw3IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEVxdWFsKQog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjE7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyMjsK
ICAgICBFWFBFQ1RfVFJVRShidWlsZGVyMSA9PSBidWlsZGVyMik7Ci0gICAgRVhQRUNUX1RSVUUo
ZXF1YWwoYnVpbGRlcjEsIHN0ZDo6c3Bhbjxjb25zdCBMYXRpbjFDaGFyYWN0ZXI+KCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShlcXVhbChidWlsZGVyMSwgc3RkOjpzcGFuPGNvbnN0IExDaGFyPigpKSk7
CiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEgPT0gU3RyaW5nKCkpOwogICAgIEVYUEVDVF9UUlVF
KFN0cmluZygpID09IGJ1aWxkZXIxKTsKICAgICBFWFBFQ1RfVFJVRShidWlsZGVyMSAhPSBTdHJp
bmcoImFiYyJfcykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nQ29tbW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0Nv
bW1vbi5jcHAKaW5kZXggODk0Y2Y3MTMzYzE2Li5hYmZlZmE5MmQzZDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0NvbW1vbi5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQ29tbW9uLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAjaWYgQ1BVKEFSTTY0KQogVEVTVChXVEZfU3Ry
aW5nQ29tbW9uLCBGaW5kOE5vbkFTQ0lJKQogewotICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXI+
IHZlY3Rvcig0MDk2KTsKKyAgICBWZWN0b3I8TENoYXI+IHZlY3Rvcig0MDk2KTsKICAgICB2ZWN0
b3IuZmlsbCgnYScpOwogCiAgICAgRVhQRUNUX0ZBTFNFKFdURjo6ZmluZDhOb25BU0NJSSh2ZWN0
b3Iuc3Vic3BhbigwLCA0MDk2KSkpOwpAQCAtMjA2LDQxICsyMDYsNDEgQEAgVEVTVChXVEZfU3Ry
aW5nQ29tbW9uLCBDb3B5RWxlbWVudHMzMlRvMTYpCiBURVNUKFdURl9TdHJpbmdDb21tb24sIENo
YXJhY3RlcnNDb250YWluOCkKIHsKICAgICB7Ci0gICAgICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0
ZXI+IHNvdXJjZTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRp
bjFDaGFyYWN0ZXIsIDA+KHNvdXJjZS5zcGFuKCkpKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSgo
Y2hhcmFjdGVyc0NvbnRhaW48TGF0aW4xQ2hhcmFjdGVyLCAwLCAxPihzb3VyY2Uuc3BhbigpKSkp
OwotICAgICAgICBFWFBFQ1RfRkFMU0UoKGNoYXJhY3RlcnNDb250YWluPExhdGluMUNoYXJhY3Rl
ciwgMCwgMSwgMj4oc291cmNlLnNwYW4oKSkpKTsKKyAgICAgICAgVmVjdG9yPExDaGFyPiBzb3Vy
Y2U7CisgICAgICAgIEVYUEVDVF9GQUxTRSgoY2hhcmFjdGVyc0NvbnRhaW48TENoYXIsIDA+KHNv
dXJjZS5zcGFuKCkpKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRSgoY2hhcmFjdGVyc0NvbnRhaW48
TENoYXIsIDAsIDE+KHNvdXJjZS5zcGFuKCkpKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRSgoY2hh
cmFjdGVyc0NvbnRhaW48TENoYXIsIDAsIDEsIDI+KHNvdXJjZS5zcGFuKCkpKSk7CiAgICAgfQog
CiAgICAgewotICAgICAgICBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyPiBzb3VyY2U7CisgICAgICAg
IFZlY3RvcjxMQ2hhcj4gc291cmNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MTU7ICsraSkKICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoaSk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFDaGFyYWN0ZXIsIDA+KHNvdXJjZS5zcGFuKCkp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFDaGFyYWN0
ZXIsIDE+KHNvdXJjZS5zcGFuKCkpKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChjaGFyYWN0ZXJz
Q29udGFpbjxMYXRpbjFDaGFyYWN0ZXIsIDI+KHNvdXJjZS5zcGFuKCkpKSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFDaGFyYWN0ZXIsIDIsIDM+KHNvdXJj
ZS5zcGFuKCkpKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRp
bjFDaGFyYWN0ZXIsIDE2LCAxND4oc291cmNlLnNwYW4oKSkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFDaGFyYWN0ZXIsIDE2Pihzb3VyY2Uuc3Bhbigp
KSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoKGNoYXJhY3RlcnNDb250YWluPExhdGluMUNoYXJh
Y3RlciwgMTYsIDE1Pihzb3VyY2Uuc3BhbigpKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoKGNo
YXJhY3RlcnNDb250YWluPExhdGluMUNoYXJhY3RlciwgMTYsIDE1LCAxNz4oc291cmNlLnNwYW4o
KSkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFDaGFy
YWN0ZXIsIDE2LCAxNSwgMTcsIDE4Pihzb3VyY2Uuc3BhbigpKSkpOwotICAgICAgICBFWFBFQ1Rf
RkFMU0UoKGNoYXJhY3RlcnNDb250YWluPExhdGluMUNoYXJhY3RlciwgMHg4MT4oc291cmNlLnNw
YW4oKSkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFD
aGFyYWN0ZXIsIDB4ODEsIDB4ODI+KHNvdXJjZS5zcGFuKCkpKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKChjaGFyYWN0ZXJzQ29udGFpbjxMQ2hhciwgMD4oc291cmNlLnNwYW4oKSkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoKGNoYXJhY3RlcnNDb250YWluPExDaGFyLCAxPihzb3VyY2Uuc3Bhbigp
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRSgoY2hhcmFjdGVyc0NvbnRhaW48TENoYXIsIDI+KHNv
dXJjZS5zcGFuKCkpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKChjaGFyYWN0ZXJzQ29udGFpbjxM
Q2hhciwgMiwgMz4oc291cmNlLnNwYW4oKSkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoKGNoYXJh
Y3RlcnNDb250YWluPExDaGFyLCAxNiwgMTQ+KHNvdXJjZS5zcGFuKCkpKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRSgoY2hhcmFjdGVyc0NvbnRhaW48TENoYXIsIDE2Pihzb3VyY2Uuc3BhbigpKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0UoKGNoYXJhY3RlcnNDb250YWluPExDaGFyLCAxNiwgMTU+
KHNvdXJjZS5zcGFuKCkpKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRSgoY2hhcmFjdGVyc0NvbnRh
aW48TENoYXIsIDE2LCAxNSwgMTc+KHNvdXJjZS5zcGFuKCkpKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRSgoY2hhcmFjdGVyc0NvbnRhaW48TENoYXIsIDE2LCAxNSwgMTcsIDE4Pihzb3VyY2Uuc3Bh
bigpKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoKGNoYXJhY3RlcnNDb250YWluPExDaGFyLCAw
eDgxPihzb3VyY2Uuc3BhbigpKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0UoKGNoYXJhY3RlcnND
b250YWluPExDaGFyLCAweDgxLCAweDgyPihzb3VyY2Uuc3BhbigpKSkpOwogICAgIH0KIAogICAg
IHsKLSAgICAgICAgVmVjdG9yPExhdGluMUNoYXJhY3Rlcj4gc291cmNlOworICAgICAgICBWZWN0
b3I8TENoYXI+IHNvdXJjZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1MDsg
KytpKSB7CiAgICAgICAgICAgICBpZiAoaSAmIDB4MSkKICAgICAgICAgICAgICAgICBzb3VyY2Uu
YXBwZW5kKGkpOwogICAgICAgICB9Ci0gICAgICAgIEVYUEVDVF9GQUxTRSgoY2hhcmFjdGVyc0Nv
bnRhaW48TGF0aW4xQ2hhcmFjdGVyLCAwPihzb3VyY2Uuc3BhbigpKSkpOwotICAgICAgICBFWFBF
Q1RfRkFMU0UoKGNoYXJhY3RlcnNDb250YWluPExhdGluMUNoYXJhY3RlciwgMD4oc291cmNlLnNw
YW4oKSkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKChjaGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFD
aGFyYWN0ZXIsIDB4ZmY+KHNvdXJjZS5zcGFuKCkpKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChj
aGFyYWN0ZXJzQ29udGFpbjxMYXRpbjFDaGFyYWN0ZXIsIDB4ODE+KHNvdXJjZS5zcGFuKCkpKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRSgoY2hhcmFjdGVyc0NvbnRhaW48TGF0aW4xQ2hhcmFjdGVy
LCAyNTA+KHNvdXJjZS5zcGFuKCkpKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKChjaGFyYWN0ZXJz
Q29udGFpbjxMYXRpbjFDaGFyYWN0ZXIsIDI0OT4oc291cmNlLnNwYW4oKSkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKChjaGFyYWN0ZXJzQ29udGFpbjxMQ2hhciwgMD4oc291cmNlLnNwYW4oKSkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKChjaGFyYWN0ZXJzQ29udGFpbjxMQ2hhciwgMD4oc291
cmNlLnNwYW4oKSkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKChjaGFyYWN0ZXJzQ29udGFpbjxM
Q2hhciwgMHhmZj4oc291cmNlLnNwYW4oKSkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoKGNoYXJh
Y3RlcnNDb250YWluPExDaGFyLCAweDgxPihzb3VyY2Uuc3BhbigpKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0UoKGNoYXJhY3RlcnNDb250YWluPExDaGFyLCAyNTA+KHNvdXJjZS5zcGFuKCkpKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKChjaGFyYWN0ZXJzQ29udGFpbjxMQ2hhciwgMjQ5Pihzb3Vy
Y2Uuc3BhbigpKSkpOwogICAgIH0KIH0KIApAQCAtMzE0LDYxICszMTQsNjEgQEAgVEVTVChXVEZf
U3RyaW5nQ29tbW9uLCBDaGFyYWN0ZXJzQ29udGFpbjE2KQogVEVTVChXVEZfU3RyaW5nQ29tbW9u
LCBDb3VudE1hdGNoZWRDaGFyYWN0ZXJzOCkKIHsKICAgICB7Ci0gICAgICAgIFZlY3RvcjxMYXRp
bjFDaGFyYWN0ZXI+IHNvdXJjZTsKLSAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hl
ZENoYXJhY3RlcnM8TGF0aW4xQ2hhcmFjdGVyPihzb3VyY2Uuc3BhbigpLCAwKSksIDBVKTsKLSAg
ICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8TGF0aW4xQ2hhcmFj
dGVyPihzb3VyY2Uuc3BhbigpLCAxKSksIDBVKTsKLSAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNv
dW50TWF0Y2hlZENoYXJhY3RlcnM8TGF0aW4xQ2hhcmFjdGVyPihzb3VyY2Uuc3BhbigpLCAyKSks
IDBVKTsKKyAgICAgICAgVmVjdG9yPExDaGFyPiBzb3VyY2U7CisgICAgICAgIEVYUEVDVF9FUSgo
V1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExDaGFyPihzb3VyY2Uuc3BhbigpLCAwKSksIDBV
KTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+
KHNvdXJjZS5zcGFuKCksIDEpKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRN
YXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMikpLCAwVSk7CiAgICAgfQog
CiAgICAgewotICAgICAgICBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyPiBzb3VyY2U7CisgICAgICAg
IFZlY3RvcjxMQ2hhcj4gc291cmNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MTU7ICsraSkKICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoaSk7Ci0gICAgICAgIEVYUEVDVF9F
USgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291cmNlLnNw
YW4oKSwgMCkpLCAxVSk7Ci0gICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFy
YWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291cmNlLnNwYW4oKSwgMSkpLCAxVSk7Ci0gICAgICAg
IEVYUEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4o
c291cmNlLnNwYW4oKSwgMikpLCAxVSk7Ci0gICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1h
dGNoZWRDaGFyYWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291cmNlLnNwYW4oKSwgMykpLCAxVSk7
Ci0gICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExhdGluMUNo
YXJhY3Rlcj4oc291cmNlLnNwYW4oKSwgMTQpKSwgMVUpOwotICAgICAgICBFWFBFQ1RfRVEoKFdU
Rjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCks
IDE1KSksIDBVKTsKLSAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3Rl
cnM8TGF0aW4xQ2hhcmFjdGVyPihzb3VyY2Uuc3BhbigpLCAxNikpLCAwVSk7Ci0gICAgICAgIEVY
UEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291
cmNlLnNwYW4oKSwgMTcpKSwgMFUpOwotICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRj
aGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCksIDE4KSksIDBVKTsK
LSAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8TGF0aW4xQ2hh
cmFjdGVyPihzb3VyY2Uuc3BhbigpLCAweDgxKSksIDBVKTsKLSAgICAgICAgRVhQRUNUX0VRKChX
VEY6OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8TGF0aW4xQ2hhcmFjdGVyPihzb3VyY2Uuc3Bhbigp
LCAweDgyKSksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJh
Y3RlcnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDApKSwgMVUpOworICAgICAgICBFWFBFQ1RfRVEo
KFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMSkpLCAx
VSk7CisgICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExDaGFy
Pihzb3VyY2Uuc3BhbigpLCAyKSksIDFVKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50
TWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDMpKSwgMVUpOworICAgICAg
ICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNw
YW4oKSwgMTQpKSwgMVUpOworICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hh
cmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMTUpKSwgMFUpOworICAgICAgICBFWFBFQ1Rf
RVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMTYp
KSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxM
Q2hhcj4oc291cmNlLnNwYW4oKSwgMTcpKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoKFdURjo6
Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMTgpKSwgMFUpOwor
ICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291
cmNlLnNwYW4oKSwgMHg4MSkpLCAwVSk7CisgICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1h
dGNoZWRDaGFyYWN0ZXJzPExDaGFyPihzb3VyY2Uuc3BhbigpLCAweDgyKSksIDBVKTsKICAgICB9
CiAKICAgICB7Ci0gICAgICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXI+IHNvdXJjZTsKKyAgICAg
ICAgVmVjdG9yPExDaGFyPiBzb3VyY2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCAyNTA7ICsraSkgewogICAgICAgICAgICAgaWYgKGkgJiAweDEpCiAgICAgICAgICAgICAgICAg
c291cmNlLmFwcGVuZChpKTsKICAgICAgICAgfQotICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291
bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCksIDApKSwg
MFUpOwotICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRp
bjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCksIDEpKSwgMVUpOwotICAgICAgICBFWFBFQ1RfRVEo
KFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFu
KCksIDB4ZmYpKSwgMFUpOwotICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hh
cmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCksIDB4ODEpKSwgMVUpOwotICAg
ICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0
ZXI+KHNvdXJjZS5zcGFuKCksIDI1MCkpLCAwVSk7Ci0gICAgICAgIEVYUEVDVF9FUSgoV1RGOjpj
b3VudE1hdGNoZWRDaGFyYWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291cmNlLnNwYW4oKSwgMjQ5
KSksIDFVKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8
TENoYXI+KHNvdXJjZS5zcGFuKCksIDApKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoKFdURjo6
Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMSkpLCAxVSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExDaGFyPihzb3Vy
Y2Uuc3BhbigpLCAweGZmKSksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0
Y2hlZENoYXJhY3RlcnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDB4ODEpKSwgMVUpOworICAgICAg
ICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNw
YW4oKSwgMjUwKSksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENo
YXJhY3RlcnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDI0OSkpLCAxVSk7CiAgICAgfQogCiAgICAg
ewotICAgICAgICBWZWN0b3I8TGF0aW4xQ2hhcmFjdGVyPiBzb3VyY2U7CisgICAgICAgIFZlY3Rv
cjxMQ2hhcj4gc291cmNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGMgPSAwOyBjIDwgMTAyNDsg
KytjKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjUwOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBpZiAoaSAmIDB4MSkKICAgICAgICAgICAgICAgICAgICAgc291cmNl
LmFwcGVuZChpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBFWFBFQ1RfRVEo
KFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFu
KCksIDApKSwgMFUpOwotICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFj
dGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCksIDEpKSwgMTAyNFUpOwotICAgICAg
ICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+
KHNvdXJjZS5zcGFuKCksIDB4ZmYpKSwgMFUpOwotICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291
bnRNYXRjaGVkQ2hhcmFjdGVyczxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCksIDB4ODEp
KSwgMTAyNFUpOwotICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVy
czxMYXRpbjFDaGFyYWN0ZXI+KHNvdXJjZS5zcGFuKCksIDI1MCkpLCAwVSk7Ci0gICAgICAgIEVY
UEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291
cmNlLnNwYW4oKSwgMjQ5KSksIDEwMjRVKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50
TWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDApKSwgMFUpOworICAgICAg
ICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNw
YW4oKSwgMSkpLCAxMDI0VSk7CisgICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRD
aGFyYWN0ZXJzPExDaGFyPihzb3VyY2Uuc3BhbigpLCAweGZmKSksIDBVKTsKKyAgICAgICAgRVhQ
RUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KHNvdXJjZS5zcGFuKCks
IDB4ODEpKSwgMTAyNFUpOworICAgICAgICBFWFBFQ1RfRVEoKFdURjo6Y291bnRNYXRjaGVkQ2hh
cmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMjUwKSksIDBVKTsKKyAgICAgICAgRVhQRUNU
X0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDI0
OSkpLCAxMDI0VSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBWZWN0b3I8TGF0aW4xQ2hhcmFj
dGVyPiBzb3VyY2U7CisgICAgICAgIFZlY3RvcjxMQ2hhcj4gc291cmNlOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGMgPSAwOyBjIDwgMTAyNDsgKytjKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgMjUwOyArK2kpCiAgICAgICAgICAgICAgICAgc291cmNlLmFwcGVuZCgx
KTsKQEAgLTM3Nyw5ICszNzcsOSBAQCBURVNUKFdURl9TdHJpbmdDb21tb24sIENvdW50TWF0Y2hl
ZENoYXJhY3RlcnM4KQogICAgICAgICBzb3VyY2UuYXBwZW5kKDEpOwogICAgICAgICBzb3VyY2Uu
YXBwZW5kKDEpOwogCi0gICAgICAgIEVYUEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0
ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291cmNlLnNwYW4oKSwgMCkpLCAwVSk7Ci0gICAgICAgIEVY
UEVDVF9FUSgoV1RGOjpjb3VudE1hdGNoZWRDaGFyYWN0ZXJzPExhdGluMUNoYXJhY3Rlcj4oc291
cmNlLnNwYW4oKSwgMSkpLCBzb3VyY2Uuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKChXVEY6
OmNvdW50TWF0Y2hlZENoYXJhY3RlcnM8TGF0aW4xQ2hhcmFjdGVyPihzb3VyY2Uuc3BhbigpLCAw
eDgxKSksIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3Rl
cnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDApKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoKFdU
Rjo6Y291bnRNYXRjaGVkQ2hhcmFjdGVyczxMQ2hhcj4oc291cmNlLnNwYW4oKSwgMSkpLCBzb3Vy
Y2Uuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKChXVEY6OmNvdW50TWF0Y2hlZENoYXJhY3Rl
cnM8TENoYXI+KHNvdXJjZS5zcGFuKCksIDB4ODEpKSwgMFUpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSGFzaGVyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0hhc2hlci5jcHAKaW5kZXggNDU2NDJj
M2Q5MDFhLi4zNjkwOWUzNzg5ZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ0hhc2hlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nSGFzaGVyLmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgYm9vbCBkdW1wSGFz
aGluZ1NwZWVkQ29tcGFyaXNvbiA9IGZhbHNlOwogVEVTVChXVEYsIFN0cmluZ0hhc2hlcikKIHsK
ICAgICBhdXRvIGdlbmVyYXRlTENoYXJBcnJheSA9IFsmXShzaXplX3Qgc2l6ZSkgewotICAgICAg
ICBhdXRvIGFycmF5ID0gc3RkOjp1bmlxdWVfcHRyPExhdGluMUNoYXJhY3RlcltdPihuZXcgTGF0
aW4xQ2hhcmFjdGVyW3NpemVdKTsKKyAgICAgICAgYXV0byBhcnJheSA9IHN0ZDo6dW5pcXVlX3B0
cjxMQ2hhcltdPihuZXcgTENoYXJbc2l6ZV0pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gaTsKICAgICAgICAgcmV0dXJu
IGFycmF5OwpAQCAtNTMsNyArNTMsNyBAQCBURVNUKFdURiwgU3RyaW5nSGFzaGVyKQogICAgIFN0
cmluZ0hhc2hlciBoYXNoOwogICAgIHVuc2lnbmVkIG1heDhCaXQgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ4X3Q+OjptYXgoKTsKICAgICBmb3IgKHNpemVfdCBzaXplID0gMDsgc2l6ZSA8PSBt
YXg4Qml0OyBzaXplKyspIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IExhdGluMUNo
YXJhY3RlcltdPiBhcnIxID0gZ2VuZXJhdGVMQ2hhckFycmF5KHNpemUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgTENoYXJbXT4gYXJyMSA9IGdlbmVyYXRlTENoYXJBcnJheShzaXpl
KTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGNoYXIxNl90W10+IGFycjIgPSBnZW5l
cmF0ZVVDaGFyQXJyYXkoc2l6ZSk7CiAgICAgICAgIHVuc2lnbmVkIGxlZnQgPSBTdHJpbmdIYXNo
ZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHN0ZDo6c3BhbiB7IGFycjEuZ2V0KCksIHNp
emUgfSk7CiAgICAgICAgIHVuc2lnbmVkIHJpZ2h0ID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhzdGQ6OnNwYW4geyBhcnIyLmdldCgpLCBzaXplIH0pOwpAQCAtOTQs
OSArOTQsOSBAQCBURVNUKFdURiwgU3RyaW5nSGFzaGVyX1N1cGVyRmFzdEhhc2hfVlNfV1lIYXNo
KQogICAgICAgICBkYXRhTG9nTG4oIlNUSCAiLCBzaXplLCAiIC0+ICIsIE1vbm90b25pY1RpbWU6
Om5vdygpIC0gc3RhcnQpOwogICAgIH0KIAotICAgIGRhdGFMb2dMbigiTGF0aW4xQ2hhcmFjdGVy
Iik7CisgICAgZGF0YUxvZ0xuKCJMQ2hhciIpOwogICAgIGZvciAoc2l6ZV90IHNpemUgPSAyOyBz
aXplIDwgKDEgPDwgMTYpOyBzaXplICo9IDIpIHsKLSAgICAgICAgVmVjdG9yPExhdGluMUNoYXJh
Y3Rlcj4gdmVjdG9yKHNpemUsIFtdKHNpemVfdCBpbmRleCkgeworICAgICAgICBWZWN0b3I8TENo
YXI+IHZlY3RvcihzaXplLCBbXShzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIHJldHVybiBp
bmRleCAmIDB4N2Y7CiAgICAgICAgIH0pOwogICAgICAgICBzdW0gKz0gU3VwZXJGYXN0SGFzaDo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHModmVjdG9yLnNwYW4oKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCmluZGV4IGE3NmE5Y2Y5NDg1Zi4uNTk0
NTliMzY5NmQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBs
LmNwcApAQCAtNzUzLDEyICs3NTMsMTIgQEAgVEVTVChXVEYsIFN0YXRpY1ByaXZhdGVTeW1ib2xJ
bXBsKQogCiBURVNUKFdURiwgRXh0ZXJuYWxTdHJpbmdJbXBsQ3JlYXRlOGJpdCkKIHsKLSAgICBj
b25zdGV4cHIgY2hhciBidWZmZXJbXSA9ICJoZWxsbyI7CisgICAgY29uc3RleHByIExDaGFyIGJ1
ZmZlcltdID0gImhlbGxvIjsKICAgICBjb25zdGV4cHIgc2l6ZV90IGJ1ZmZlclN0cmluZ0xlbmd0
aCA9IHNpemVvZihidWZmZXIpIC0gMTsKICAgICBib29sIGZyZWVGdW5jdGlvbkNhbGxlZCA9IGZh
bHNlOwogCiAgICAgewotICAgICAgICBhdXRvIGV4dGVybmFsID0gRXh0ZXJuYWxTdHJpbmdJbXBs
OjpjcmVhdGUoeyBieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KCZidWZmZXJbMF0pLCBidWZmZXJT
dHJpbmdMZW5ndGggfSwgWyZmcmVlRnVuY3Rpb25DYWxsZWRdKEV4dGVybmFsU3RyaW5nSW1wbCog
ZXh0ZXJuYWxTdHJpbmdJbXBsLCB2b2lkKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlclNpemUpIG11
dGFibGUgeworICAgICAgICBhdXRvIGV4dGVybmFsID0gRXh0ZXJuYWxTdHJpbmdJbXBsOjpjcmVh
dGUoeyBidWZmZXIsIGJ1ZmZlclN0cmluZ0xlbmd0aCB9LCBbJmZyZWVGdW5jdGlvbkNhbGxlZF0o
RXh0ZXJuYWxTdHJpbmdJbXBsKiBleHRlcm5hbFN0cmluZ0ltcGwsIHZvaWQqIGJ1ZmZlciwgdW5z
aWduZWQgYnVmZmVyU2l6ZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBmcmVlRnVuY3Rpb25DYWxs
ZWQgPSB0cnVlOwogICAgICAgICB9KTsKIApAQCAtNzY3LDcgKzc2Nyw3IEBAIFRFU1QoV1RGLCBF
eHRlcm5hbFN0cmluZ0ltcGxDcmVhdGU4Yml0KQogICAgICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJu
YWwtPmlzU3ltYm9sKCkpOwogICAgICAgICBBU1NFUlRfRkFMU0UoZXh0ZXJuYWwtPmlzQXRvbSgp
KTsKICAgICAgICAgQVNTRVJUX0VRKGV4dGVybmFsLT5sZW5ndGgoKSwgYnVmZmVyU3RyaW5nTGVu
Z3RoKTsKLSAgICAgICAgQVNTRVJUX0VRKGJ5dGVDYXN0PGNoYXI+KGV4dGVybmFsLT5zcGFuOCgp
LmRhdGEoKSksIGJ1ZmZlcik7CisgICAgICAgIEFTU0VSVF9FUShleHRlcm5hbC0+c3BhbjgoKS5k
YXRhKCksIGJ1ZmZlcik7CiAgICAgfQogCiAgICAgQVNTRVJUX1RSVUUoZnJlZUZ1bmN0aW9uQ2Fs
bGVkKTsKQEAgLTgwNCwxMiArODA0LDEyIEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsTm90RXh0ZXJu
YWwpCiAKIFRFU1QoV1RGLCBFeHRlcm5hbFN0cmluZ0F0b20pCiB7Ci0gICAgY29uc3RleHByIGNo
YXIgYnVmZmVyW10gPSAiaGVsbG8iOworICAgIGNvbnN0ZXhwciBMQ2hhciBidWZmZXJbXSA9ICJo
ZWxsbyI7CiAgICAgY29uc3RleHByIHNpemVfdCBidWZmZXJTdHJpbmdMZW5ndGggPSBzaXplb2Yo
YnVmZmVyKSAtIDE7CiAgICAgYm9vbCBmcmVlRnVuY3Rpb25DYWxsZWQgPSBmYWxzZTsKIAogICAg
IHsKLSAgICAgICAgYXV0byBleHRlcm5hbCA9IEV4dGVybmFsU3RyaW5nSW1wbDo6Y3JlYXRlKGJ5
dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oc3RkOjpzcGFuIHsgYnVmZmVyLCBidWZmZXJTdHJpbmdM
ZW5ndGggfSksIFsmZnJlZUZ1bmN0aW9uQ2FsbGVkXShFeHRlcm5hbFN0cmluZ0ltcGwqIGV4dGVy
bmFsU3RyaW5nSW1wbCwgdm9pZCogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJTaXplKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byBleHRlcm5hbCA9IEV4dGVybmFsU3RyaW5nSW1wbDo6Y3JlYXRlKHsg
YnVmZmVyLCBidWZmZXJTdHJpbmdMZW5ndGggfSwgWyZmcmVlRnVuY3Rpb25DYWxsZWRdKEV4dGVy
bmFsU3RyaW5nSW1wbCogZXh0ZXJuYWxTdHJpbmdJbXBsLCB2b2lkKiBidWZmZXIsIHVuc2lnbmVk
IGJ1ZmZlclNpemUpIG11dGFibGUgewogICAgICAgICAgICAgZnJlZUZ1bmN0aW9uQ2FsbGVkID0g
dHJ1ZTsKICAgICAgICAgfSk7ICAgIAogCkBAIC04MTgsNyArODE4LDcgQEAgVEVTVChXVEYsIEV4
dGVybmFsU3RyaW5nQXRvbSkKICAgICAgICAgQVNTRVJUX0ZBTFNFKGV4dGVybmFsLT5pc1N5bWJv
bCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoZXh0ZXJuYWwtPmlzOEJpdCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKGV4dGVybmFsLT5sZW5ndGgoKSwgYnVmZmVyU3RyaW5nTGVuZ3RoKTsKLSAgICAg
ICAgQVNTRVJUX0VRKGJ5dGVDYXN0PGNoYXI+KGV4dGVybmFsLT5zcGFuOCgpLmRhdGEoKSksIGJ1
ZmZlcik7CisgICAgICAgIEFTU0VSVF9FUShleHRlcm5hbC0+c3BhbjgoKS5kYXRhKCksIGJ1ZmZl
cik7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBBdG9tU3RyaW5nSW1wbDo6bG9va1VwKGV4dGVy
bmFsLnB0cigpKTsKICAgICAgICAgQVNTRVJUX0ZBTFNFKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdQYXJzaW5nQnVmZmVyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1BhcnNpbmdCdWZmZXIuY3BwCmluZGV4
IGNhNjY2MjRiMGZkOC4uYjU1YWUxNWRkM2IxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdQYXJzaW5nQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdQYXJzaW5nQnVmZmVyLmNwcApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV1RGLCBTdHJpbmdQYXJzaW5nQnVm
ZmVyRW1wdHkpCiB7Ci0gICAgU3RyaW5nUGFyc2luZ0J1ZmZlcjxMYXRpbjFDaGFyYWN0ZXI+IHBh
cnNpbmdCdWZmZXI7CisgICAgU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4gcGFyc2luZ0J1ZmZl
cjsKIAogICAgIEVYUEVDVF9UUlVFKHBhcnNpbmdCdWZmZXIuYXRFbmQoKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKHBhcnNpbmdCdWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKaW5kZXggOTIxMTk2MjRjOTFi
Li41Y2U4MmU3OTcxYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmlu
Z1ZpZXcuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgVEVTVChXVEYsIFN0cmluZ1ZpZXdFcXVhbEJh
c2ljKQogICAgIEVYUEVDVF9GQUxTRShhID09ICJIZWxsbyBXb3JsZCEhIl9zKTsKIAogICAgIGF1
dG8gdGVzdCA9ICJIZWxsXDAiOwotICAgIGEgPSBTdHJpbmdWaWV3IHsgc3RkOjpzcGFuIHsgKGNv
bnN0IExhdGluMUNoYXJhY3RlciopdGVzdCwgNSB9IH07CisgICAgYSA9IFN0cmluZ1ZpZXcgeyBz
dGQ6OnNwYW4geyAoY29uc3QgTENoYXIqKXRlc3QsIDUgfSB9OwogICAgIEVYUEVDVF9GQUxTRShh
ID09ICJIZWxsXDAiX3MpOwogICAgIEVYUEVDVF9GQUxTRShhID09ICJIZWxsIl9zKTsKIApAQCAt
Mzk0LDEwICszOTQsMTAgQEAgVEVTVChXVEYsIFN0cmluZ1ZpZXdFcXVhbElnbm9yaW5nQVNDSUlD
YXNlV2l0aEVtcHR5KQogCiBURVNUKFdURiwgU3RyaW5nVmlld0VxdWFsSWdub3JpbmdBU0NJSUNh
c2VXaXRoTGF0aW4xQ2hhcmFjdGVycykKIHsKLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYSA9IFN0
cmluZ0ltcGw6OmNyZWF0ZShieXRlQ2FzdDxMYXRpbjFDaGFyYWN0ZXI+KHN0ZDo6c3BhbiB7ICJh
QmPDqWVGRyIsIDcgfSkpOwotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBiID0gU3RyaW5nSW1wbDo6
Y3JlYXRlKGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oc3RkOjpzcGFuIHsgIkFCQ8OJRUZHIiwg
NyB9KSk7Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+IGMgPSBTdHJpbmdJbXBsOjpjcmVhdGUoYnl0
ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihzdGQ6OnNwYW4geyAiQUJDw6lFRkciLCA3IH0pKTsKLSAg
ICBSZWZQdHI8U3RyaW5nSW1wbD4gZCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShieXRlQ2FzdDxMYXRp
bjFDaGFyYWN0ZXI+KHN0ZDo6c3BhbiB7ICJhYmPDqWVmZyIsIDcgfSkpOworICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBhID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHN0ZDo6c3BhbiB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiYUJjw6llRkciKSwgNyB9KTsKKyAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gYiA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdGQ6OnNwYW4geyByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oIkFCQ8OJRUZHIiksIDcgfSk7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+
IGMgPSBTdHJpbmdJbXBsOjpjcmVhdGUoc3RkOjpzcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJBQkPDqUVGRyIpLCA3IH0pOworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBkID0g
U3RyaW5nSW1wbDo6Y3JlYXRlKHN0ZDo6c3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiYWJjw6llZmciKSwgNyB9KTsKICAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXdBKCphLmdl
dCgpKTsKICAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXdCKCpiLmdldCgpKTsKICAgICBTdHJpbmdW
aWV3IHN0cmluZ1ZpZXdDKCpjLmdldCgpKTsKQEAgLTg5NCw3ICs4OTQsNyBAQCBURVNUKFdURiwg
U3RyaW5nVmlldzhCaXQpCiAgICAgRVhQRUNUX1RSVUUoU3RyaW5nVmlldygpLmlzOEJpdCgpKTsK
ICAgICBFWFBFQ1RfVFJVRShlbXB0eVN0cmluZ1ZpZXcoKS5pczhCaXQoKSk7CiAKLSAgICBzdGQ6
OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiBsY2hhclNwYW47CisgICAgc3RkOjpzcGFuPGNv
bnN0IExDaGFyPiBsY2hhclNwYW47CiAgICAgc3RkOjpzcGFuPGNvbnN0IGNoYXIxNl90PiB1Y2hh
clNwYW47CiAgICAgRVhQRUNUX1RSVUUoU3RyaW5nVmlldyhsY2hhclNwYW4pLmlzOEJpdCgpKTsK
ICAgICBFWFBFQ1RfRkFMU0UoU3RyaW5nVmlldyh1Y2hhclNwYW4pLmlzOEJpdCgpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N1cGVyRmFzdEhhc2guY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3VwZXJGYXN0SGFzaC5jcHAKaW5kZXggMjdk
MDE1NWYxODIyLi40YjI4MTI2M2RlMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N1cGVyRmFzdEhhc2guY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N1cGVyRmFzdEhhc2guY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgY29uc3QgTGF0aW4xQ2hhcmFjdGVyIG51bGxMQ2hh
cnNbMl0gPSB7IDAsIDAgfTsKK3N0YXRpYyBjb25zdCBMQ2hhciBudWxsTENoYXJzWzJdID0geyAw
LCAwIH07CiBzdGF0aWMgY29uc3QgY2hhcjE2X3QgbnVsbFVDaGFyc1syXSA9IHsgMCwgMCB9Owog
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZW1wdHlTdHJpbmdIYXNoID0gMHg0RUM4ODlFVTsKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCA9IDB4M0QzQUJGNDRV
OwogCi1zdGF0aWMgY29uc3QgTGF0aW4xQ2hhcmFjdGVyIHRlc3RBTENoYXJzWzZdID0geyAweDQx
LCAweDk1LCAweEZGLCAweDUwLCAweDAxLCAwIH07CitzdGF0aWMgY29uc3QgTENoYXIgdGVzdEFM
Q2hhcnNbNl0gPSB7IDB4NDEsIDB4OTUsIDB4RkYsIDB4NTAsIDB4MDEsIDAgfTsKIHN0YXRpYyBj
b25zdCBjaGFyMTZfdCB0ZXN0QVVDaGFyc1s2XSA9IHsgMHg0MSwgMHg5NSwgMHhGRiwgMHg1MCwg
MHgwMSwgMCB9Owogc3RhdGljIGNvbnN0IGNoYXIxNl90IHRlc3RCVUNoYXJzWzZdID0geyAweDQx
LCAweDk1LCAweEZGRkYsIDB4MTA4MCwgMHgwMSwgMCB9OwogCkBAIC0xMTIsNyArMTEyLDcgQEAg
VEVTVChXVEYsIFN1cGVyRmFzdEhhc2hfYWRkQ2hhcmFjdGVycykKIAogICAgIC8vIEhhc2hpbmcg
emVybyBjaGFyYWN0ZXJzLgogICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVycyhzdGF0aWNfY2FzdDxMYXRpbjFDaGFyYWN0ZXIqPigwKSwgMCk7Cisg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoc3RhdGljX2Nhc3Q8TENoYXIqPigwKSwgMCk7CiAgICAg
QVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCwgaGFzaGVyLmhhc2goKSk7CiAgICAgQVNTRVJUX0VR
KGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tl
ZCgpKTsKICAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7CkBAIC0zMDgsNyArMzA4LDcgQEAg
VEVTVChXVEYsIFN1cGVyRmFzdEhhc2hfYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCkKIAog
ICAgIC8vIEhhc2hpbmcgemVybyBjaGFyYWN0ZXJzLgogICAgIGhhc2hlciA9IFN1cGVyRmFzdEhh
c2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChzdGF0aWNfY2Fz
dDxMYXRpbjFDaGFyYWN0ZXIqPigwKSwgMCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1
bWluZ0FsaWduZWQoc3RhdGljX2Nhc3Q8TENoYXIqPigwKSwgMCk7CiAgICAgQVNTRVJUX0VRKGVt
cHR5U3RyaW5nSGFzaCwgaGFzaGVyLmhhc2goKSk7CiAgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5n
SGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKICAgICBo
YXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7CkBAIC00MzcsNyArNDM3LDcgQEAgVEVTVChXVEYsIFN1
cGVyRmFzdEhhc2hfY29tcHV0ZUhhc2gpCiAgICAgLy8gQW1iaWd1b3VzIGNvbnN0cnVjdG9yIGNh
bGwgZXJyb3Igd2hlbiBjYWxsaW5nIHN0ZDo6c3BhbjxUPihUKiwgMCkuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI5NQogICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IHplcm9MZW5ndGggPSAwOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gs
IFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoKHN0ZDo6c3BhbiB7IHN0YXRpY19jYXN0PGNvbnN0
IExhdGluMUNoYXJhY3Rlcio+KDApLCB6ZXJvTGVuZ3RoIH0pKTsKKyAgICBBU1NFUlRfRVEoZW1w
dHlTdHJpbmdIYXNoLCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaChzdGQ6OnNwYW4geyBzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KDApLCB6ZXJvTGVuZ3RoIH0pKTsKICAgICBBU1NFUlRfRVEo
ZW1wdHlTdHJpbmdIYXNoLCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaChzdGQ6OnNwYW4geyBu
dWxsTENoYXJzLCB6ZXJvTGVuZ3RoIH0pKTsKICAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNo
LCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaChzdGQ6OnNwYW4geyBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyMTZfdCo+KDApLCB6ZXJvTGVuZ3RoIH0pKTsKICAgICBBU1NFUlRfRVEoZW1wdHlTdHJp
bmdIYXNoLCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaChzdGQ6OnNwYW4geyBudWxsVUNoYXJz
LCB6ZXJvTGVuZ3RoIH0pKTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBURVNUKFdURiwgU3VwZXJGYXN0
SGFzaF9jb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cykKICAgICAvLyBBbWJpZ3VvdXMgY29uc3Ry
dWN0b3IgY2FsbCBlcnJvciB3aGVuIGNhbGxpbmcgc3RkOjpzcGFuPFQ+KFQqLCAwKS4KICAgICAv
LyBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mjk1CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgemVyb0xlbmd0aCA9IDA7Ci0gICAgQVNTRVJUX0VRKGVtcHR5U3Ry
aW5nSGFzaCAmIDB4RkZGRkZGLCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhzdGQ6OnNwYW4geyBzdGF0aWNfY2FzdDxjb25zdCBMYXRpbjFDaGFyYWN0ZXIqPigwKSwg
emVyb0xlbmd0aCB9KSk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZG
LCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhzdGQ6OnNwYW4geyBz
dGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KDApLCB6ZXJvTGVuZ3RoIH0pKTsKICAgICBBU1NFUlRf
RVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNo
QW5kTWFza1RvcDhCaXRzKHN0ZDo6c3BhbiB7IG51bGxMQ2hhcnMsIHplcm9MZW5ndGggfSkpOwog
ICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgU3VwZXJGYXN0SGFzaDo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoc3RkOjpzcGFuIHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcjE2X3QqPigwKSwgemVyb0xlbmd0aCB9KSk7CiAgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5n
SGFzaCAmIDB4RkZGRkZGLCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhzdGQ6OnNwYW4geyBudWxsVUNoYXJzLCB6ZXJvTGVuZ3RoIH0pKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VURjhDb252ZXJzaW9uLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VURjhDb252ZXJzaW9uLmNwcAppbmRleCBmNTgyNDY0NTRh
NzAuLjQzMzNhMjQ5NzdkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVVRGOENvbnZlcnNpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VURjhDb252ZXJzaW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBWYWx1ZVR5cGVzPiBjb25zdGV4cHIgYXV0byBjaGFyMTZBcnJheShWYWx1ZVR5cGVzLi4uIHZh
bHVlcwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBWYWx1ZVR5cGVzPiBjb25zdGV4cHIgYXV0byBs
YXRpbjFBcnJheShWYWx1ZVR5cGVzLi4uIHZhbHVlcykKIHsKLSAgICByZXR1cm4gc3RkOjphcnJh
eTxMYXRpbjFDaGFyYWN0ZXIsIHNpemVvZi4uLih2YWx1ZXMpPiB7IHN0YXRpY19jYXN0PExhdGlu
MUNoYXJhY3Rlcj4odmFsdWVzKS4uLiB9OworICAgIHJldHVybiBzdGQ6OmFycmF5PExDaGFyLCBz
aXplb2YuLi4odmFsdWVzKT4geyBzdGF0aWNfY2FzdDxMQ2hhcj4odmFsdWVzKS4uLiB9OwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdCBjaGFyKiBzZXJpYWxpemUo
Y29uc3QgV1RGOjpVbmljb2RlOjpDb252ZXJzaW9uUmVzdWx0PENoYXJhY3RlclR5cGU+JiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAppbmRleCA3OTI4NzJh
ZTI5ZjMuLjFmYjRiYTY3ZmNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0
b3IuY3BwCkBAIC0zNTQsNyArMzU0LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb3B5RnJvbU90aGVy
TWluQ2FwYWNpdHkpCiBURVNUKFdURl9WZWN0b3IsIENvbnN0cnVjdG9yT3RoZXJSYXdQb2ludGVy
VHlwZUFuZExlbmd0aCkKIHsKICAgICBjb25zdCBjaGFyMTZfdCB1Y2hhcnNbXSA9IHsgJ2InLCAn
YScsICdyJyB9OwotICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXI+IHZlY3RvcihzdGQ6OnNwYW4o
dWNoYXJzLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDMpKSk7CisgICAgVmVjdG9yPExDaGFyPiB2ZWN0
b3Ioc3RkOjpzcGFuKHVjaGFycywgc3RhdGljX2Nhc3Q8c2l6ZV90PigzKSkpOwogICAgIEVYUEVD
VF9FUSh2ZWN0b3Iuc2l6ZSgpLCAzVSk7CiAgICAgRVhQRUNUX0VRKHZlY3RvclswXSwgJ2InKTsK
ICAgICBFWFBFQ1RfRVEodmVjdG9yWzFdLCAnYScpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvV1lIYXNoLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1dZSGFzaC5jcHAKaW5kZXggZmY5YzMwYWVkMzFlLi5iYzU5MTA1ZWI3M2YgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dZSGFzaC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1lIYXNoLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgZXhwZWN0ZWRbMjU2XSA9IHsKIFRFU1QoV1RGLCBXWUhhc2hlcikK
IHsKICAgICBhdXRvIGdlbmVyYXRlTENoYXJBcnJheSA9IFsmXShzaXplX3Qgc2l6ZSkgewotICAg
ICAgICBhdXRvIGFycmF5ID0gc3RkOjp1bmlxdWVfcHRyPExhdGluMUNoYXJhY3RlcltdPihuZXcg
TGF0aW4xQ2hhcmFjdGVyW3NpemVdKTsKKyAgICAgICAgYXV0byBhcnJheSA9IHN0ZDo6dW5pcXVl
X3B0cjxMQ2hhcltdPihuZXcgTENoYXJbc2l6ZV0pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7IGkrKykKICAgICAgICAgICAgIGFycmF5W2ldID0gaTsKICAgICAgICAgcmV0
dXJuIGFycmF5OwpAQCAtNjksNyArNjksNyBAQCBURVNUKFdURiwgV1lIYXNoZXIpCiAKICAgICB1
bnNpZ25lZCBtYXg4Qml0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCk7CiAg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IDA7IHNpemUgPD0gbWF4OEJpdDsgc2l6ZSsrKSB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBMYXRpbjFDaGFyYWN0ZXJbXT4gYXJyMSA9IGdlbmVy
YXRlTENoYXJBcnJheShzaXplKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IExDaGFy
W10+IGFycjEgPSBnZW5lcmF0ZUxDaGFyQXJyYXkoc2l6ZSk7CiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxjb25zdCBjaGFyMTZfdFtdPiBhcnIyID0gZ2VuZXJhdGVVQ2hhckFycmF5KHNpemUpOwog
ICAgICAgICB1bnNpZ25lZCBsZWZ0ID0gV1lIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhzdGQ6OnNwYW4geyBhcnIxLmdldCgpLCBzaXplIH0pOwogICAgICAgICB1bnNpZ25lZCByaWdo
dCA9IFdZSGFzaDo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoc3RkOjpzcGFuIHsgYXJyMi5n
ZXQoKSwgc2l6ZSB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L2NvY29hL1VSTEV4dHJhcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29h
L1VSTEV4dHJhcy5tbQppbmRleCAxYjEyNmZhZWQxZjguLjkyYWIxZDZiM2Y4ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvY29jb2EvVVJMRXh0cmFzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VSTEV4dHJhcy5tbQpAQCAtNTIs
NyArNTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogZGF0YUFzU3RyaW5nKE5TRGF0YSAqZGF0YSkK
ICAgICBpZiAoW2RhdGEgbGVuZ3RoXSA+IGJ1ZmZlci5zaXplKCkgLSAxKQogICAgICAgICByZXR1
cm4gIkVSUk9SIjsKICAgICBhdXRvIGRhdGFTcGFuID0gc3BhbihkYXRhKTsKLSAgICBpZiAoY29u
dGFpbnMoZGF0YVNwYW4sICdcMCcpKQorICAgIGlmIChjb250YWlucyhkYXRhU3BhbiwgMCkpCiAg
ICAgICAgIHJldHVybiAiRVJST1IiOwogICAgIG1lbWNweVNwYW4oc3RkOjpzcGFuIHsgYnVmZmVy
IH0sIGRhdGFTcGFuKTsKICAgICBidWZmZXJbW2RhdGEgbGVuZ3RoXV0gPSAnXDAnOwpAQCAtMzE2
LDcgKzMxNiw3IEBAIFRFU1QoVVJMRXh0cmFzLCBVUkxFeHRyYXNfUGFyc2luZ0Vycm9yKQogICAg
IEVYUEVDVF9GQUxTRSh1cmwzLmlzVmFsaWQoKSk7CiAgICAgRVhQRUNUX05VTEwoW3VybDMuY3Jl
YXRlTlNVUkwoKSBhYnNvbHV0ZVN0cmluZ10pOwogICAgIAotICAgIHN0ZDo6YXJyYXk8TGF0aW4x
Q2hhcmFjdGVyLCAyPiBsYXRpbjEgeyAweEMyLCAweEI2IH07CisgICAgc3RkOjphcnJheTxMQ2hh
ciwgMj4gbGF0aW4xIHsgMHhDMiwgMHhCNiB9OwogICAgIFdURjo6VVJMIHVybDQgeyBTdHJpbmco
bGF0aW4xKSB9OwogICAgIEVYUEVDVF9GQUxTRSh1cmw0LmlzVmFsaWQoKSk7CiAgICAgRVhQRUNU
X1RSVUUodXJsNC5zdHJpbmcoKS5pczhCaXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCAyNDBhYjQwMTkzNmUuLmQxMTIx
NDg2ZDE4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zp
bGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmls
ZU1vbml0b3IuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIFN0cmluZyByZXN1bHQgPSBieXRlQ2FzdDxMYXRp
bjFDaGFyYWN0ZXI+KGJ1ZmZlci0+c3BhbigpKTsKKyAgICBTdHJpbmcgcmVzdWx0ID0gYnVmZmVy
LT5zcGFuKCk7CiAgICAgaWYgKHJlc3VsdC5lbmRzV2l0aCgnXG4nKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdC5sZWZ0KHJlc3VsdC5sZW5ndGgoKSAtIDEpOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcAppbmRleCBk
MTYxNzRlZGVlNWYuLjE3YzkzN2JjNWRkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1B1c2hNZXNzYWdlQ3J5cHRvLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uY3BwCkBAIC01OSw3ICs1OSw4
IEBAIFRFU1QoUHVzaE1lc3NhZ2VDcnlwdG8sIEFFUzEyOEdDTVBheWxvYWRXaXRoTWluaW1hbFBh
ZGRpbmcpCiAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0QUVTMTI4R0NNUGF5bG9hZChjbGllbnRL
ZXlzLCBwYXlsb2FkKTsKICAgICBBU1NFUlRfVFJVRShyZXN1bHQuaGFzX3ZhbHVlKCkpOwogCi0g
ICAgQVNTRVJUX0VRKCJXaGVuIEkgZ3JvdyB1cCwgSSB3YW50IHRvIGJlIGEgd2F0ZXJtZWxvbiJf
cywgcmVzdWx0LT5zcGFuKCkpOworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChXVEZN
b3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEoIldoZW4gSSBncm93IHVwLCBJIHdhbnQgdG8g
YmUgYSB3YXRlcm1lbG9uIl9zLCBhY3R1YWwpOwogfQogCiBURVNUKFB1c2hNZXNzYWdlQ3J5cHRv
LCBBRVMxMjhHQ01QYXlsb2FkV2l0aFBhZGRpbmcpCkBAIC03MCw3ICs3MSw4IEBAIFRFU1QoUHVz
aE1lc3NhZ2VDcnlwdG8sIEFFUzEyOEdDTVBheWxvYWRXaXRoUGFkZGluZykKICAgICBhdXRvIHJl
c3VsdCA9IGRlY3J5cHRBRVMxMjhHQ01QYXlsb2FkKGNsaWVudEtleXMsIHBheWxvYWQpOwogICAg
IEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CiAKLSAgICBBU1NFUlRfRVEoImZvb2Jh
ciJfcywgcmVzdWx0LT5zcGFuKCkpOworICAgIGF1dG8gYWN0dWFsID0gU3RyaW5nOjphZG9wdChX
VEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEoImZvb2JhciJfcywgYWN0dWFsKTsKIH0K
IAogVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTMTI4R0NNUGF5bG9hZFdpdGhJbmNvcnJlY3RQ
YWRkaW5nKQpAQCAtMTE2LDcgKzExOCw4IEBAIFRFU1QoUHVzaE1lc3NhZ2VDcnlwdG8sIEFFU0dD
TVBheWxvYWRXaXRoTWluaW1hbFBhZGRpbmcpCiAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0QUVT
R0NNUGF5bG9hZChjbGllbnRLZXlzLCBzZXJ2ZXJQdWJsaWNLZXksIHNhbHQsIHBheWxvYWQpOwog
ICAgIEFTU0VSVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CiAKLSAgICBBU1NFUlRfRVEoIkkg
YW0gdGhlIHdhbHJ1cyJfcywgcmVzdWx0LT5zcGFuKCkpOworICAgIGF1dG8gYWN0dWFsID0gU3Ry
aW5nOjphZG9wdChXVEZNb3ZlKCpyZXN1bHQpKTsKKyAgICBBU1NFUlRfRVEoIkkgYW0gdGhlIHdh
bHJ1cyJfcywgYWN0dWFsKTsKIH0KIAogVEVTVChQdXNoTWVzc2FnZUNyeXB0bywgQUVTR0NNUGF5
bG9hZFdpdGhQYWRkaW5nKQpAQCAtMTI5LDcgKzEzMiw4IEBAIFRFU1QoUHVzaE1lc3NhZ2VDcnlw
dG8sIEFFU0dDTVBheWxvYWRXaXRoUGFkZGluZykKICAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRB
RVNHQ01QYXlsb2FkKGNsaWVudEtleXMsIHNlcnZlclB1YmxpY0tleSwgc2FsdCwgcGF5bG9hZCk7
CiAgICAgQVNTRVJUX1RSVUUocmVzdWx0Lmhhc192YWx1ZSgpKTsKIAotICAgIEFTU0VSVF9FUSgi
Zm9vYmFyIl9zLCByZXN1bHQtPnNwYW4oKSk7CisgICAgYXV0byBhY3R1YWwgPSBTdHJpbmc6OmFk
b3B0KFdURk1vdmUoKnJlc3VsdCkpOworICAgIEFTU0VSVF9FUSgiZm9vYmFyIl9zLCBhY3R1YWwp
OwogfQogCiBURVNUKFB1c2hNZXNzYWdlQ3J5cHRvLCBBRVNHQ01QYXlsb2FkV2l0aEluY29ycmVj
dFBhZGRpbmcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IDIyMTcyZGI2ODU3NC4uNDFjMTZjNTQzMDE4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9O
T1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxl
bihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9U
UlVFKFN0cmluZzo6ZnJvbUxhdGluMShGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgPT0gU3RyaW5nKGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5zcGFuKCkpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nOjpmcm9tTGF0aW4x
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5zcGFuKCkpKTsKIH0KIAogVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQpAQCAt
MzcwLDEyICszNzAsMTIgQEAgVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFk
KQogICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0
LCAzKTsKICAgICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7Ci0gICAgICAgIEVYUEVD
VF9FUSgiIGlzIl9zLCBTdHJpbmdWaWV3KGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oZGF0YS5z
dWJzcGFuKDAsIDMpKSkpOworICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nVmlldyhkYXRhLnN1YnNw
YW4oMCwgMykpLCAiIGlzIl9zKTsKIAogICAgICAgICBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQo
NCwgMTAwMCk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgMTh1KTsKIAotICAgICAg
ICBFWFBFQ1RfRVEoIiBpcyBhIHNpbXBsZSB0ZXN0LiJfcywgU3RyaW5nVmlldyhieXRlQ2FzdDxM
YXRpbjFDaGFyYWN0ZXI+KGRhdGEuc3Vic3BhbigwLCAxOCkpKSk7CisgICAgICAgIEVYUEVDVF9F
UShTdHJpbmdWaWV3KGRhdGEuc3Vic3BhbigwLCAxOCkpLCAiIGlzIGEgc2ltcGxlIHRlc3QuIl9z
KTsKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2ltcGxlVGV4dCk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKQEAgLTUwMyw4ICs1MDMsOCBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQog
ICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
MjU2OyArK2kpIHsKLSAgICAgICAgTGF0aW4xQ2hhcmFjdGVyIGMgPSBpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZChzdGQ6OnNwYW48Y29uc3QgTGF0aW4xQ2hhcmFjdGVyPiB7ICZjLCAxIH0pOwor
ICAgICAgICBMQ2hhciBjID0gaTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RkOjpzcGFuPGNv
bnN0IHVpbnQ4X3Q+IHsgJmMsIDEgfSk7CiAgICAgfQogICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIH0KQEAgLTUyMywxMiArNTIzLDEyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRl
clRlc3QsIHBlZWtEYXRhKQogICAgICAgICBzaXplX3QgcmVhZCA9IGNodW5rUmVhZGVyLnBlZWso
ZGF0YSwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShyZWFkLCAzdSk7CiAKLSAgICAgICAgRVhQRUNU
X0VRKCIgaXMiX3MsIFN0cmluZ1ZpZXcoYnl0ZUNhc3Q8TGF0aW4xQ2hhcmFjdGVyPihkYXRhLnNw
YW4oKS5maXJzdCgzKSkpKTsKKyAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhkYXRhLnNwYW4oKS5m
aXJzdCgzKSksICIgaXMiX3MpOwogCiAgICAgICAgIHJlYWQgPSBjaHVua1JlYWRlci5wZWVrKGRh
dGEsIDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEocmVhZCwgMTh1KTsKIAotICAgICAgICBFWFBF
Q1RfRVEoIiBpcyBhIHNpbXBsZSB0ZXN0LiJfcywgU3RyaW5nVmlldyhieXRlQ2FzdDxMYXRpbjFD
aGFyYWN0ZXI+KGRhdGEuc3BhbigpLmZpcnN0KDE4KSkpKTsKKyAgICAgICAgRVhQRUNUX0VRKFN0
cmluZyhkYXRhLnNwYW4oKS5maXJzdCgxOCkpLCAiIGlzIGEgc2ltcGxlIHRlc3QuIl9zKTsKIAog
ICAgICAgICAvLyBFbnN1cmUgdGhlIGN1cnNvciBoYXMgbm90IGNoYW5nZWQuCiAgICAgICAgIGNo
dW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNr
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5jcHAKaW5kZXggMWZjMzhkNTFhMDNiLi5iOWNlYmE5NDQ5MDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVz
dC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
U2V0VXAoKQogICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUKICAgICBhdXRvIHJlc3VsdCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiX3MpOwogICAgIG1fdGVtcEZp
bGVQYXRoID0gcmVzdWx0LmZpcnN0OwotICAgIHJlc3VsdC5zZWNvbmQud3JpdGUoYnl0ZUNhc3Q8
dWludDhfdD4odGVzdERhdGEoKS5zcGFuOCgpKSk7CisgICAgcmVzdWx0LnNlY29uZC53cml0ZSh0
ZXN0RGF0YSgpLnNwYW44KCkpOwogICAgIHJlc3VsdC5zZWNvbmQgPSB7IH07CiAKICAgICBtX3Rl
bXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RmlsZSgidGVtcEVt
cHR5VGVzdEZpbGUiX3MpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZVRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVUZXN0cy5jcHAKaW5k
ZXggMmM3OTk1MjY0MDA3Li4xNTkxNjUxMDViZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVUZXN0cy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZVRlc3RzLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIFRFU1QoQ3VybE11bHRpcGFydEhhbmRs
ZVRlc3RzLCBTaW1wbGVNZXNzYWdlKQogICAgIGF1dG8gY3VybFJlc3BvbnNlID0gY3JlYXRlQ3Vy
bFJlc3BvbnNlKCk7CiAgICAgYXV0byBoYW5kbGUgPSBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVh
dGVJZk5lZWRlZChjbGllbnQsIGN1cmxSZXNwb25zZSk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2Vp
dmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KGRhdGEpKTsKKyAgICBoYW5kbGUtPmRpZFJlY2Vp
dmVNZXNzYWdlKGRhdGEpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVhZGVycygpLnNpemUoKSwg
MSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmhlYWRlcnMoKS5hdCgwKSA9PSAiQ29udGVudC10
eXBlOiB0ZXh0L3BsYWluXHJcbiJfcyk7CiAgICAgY2xpZW50LmNsZWFyKCk7CkBAIC0xODEsNyAr
MTgxLDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIE5vSGVhZGVyKQogICAgIGF1
dG8gY3VybFJlc3BvbnNlID0gY3JlYXRlQ3VybFJlc3BvbnNlKCk7CiAgICAgYXV0byBoYW5kbGUg
PSBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChjbGllbnQsIGN1cmxSZXNwb25z
ZSk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KGRh
dGEpKTsKKyAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGRhdGEpOwogICAgIEVYUEVDVF9F
UShjbGllbnQuaGVhZGVycygpLnNpemUoKSwgMCk7CiAKICAgICBoYW5kbGUtPmNvbXBsZXRlSGVh
ZGVyUHJvY2Vzc2luZygpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIFRFU1QoQ3VybE11bHRpcGFydEhh
bmRsZVRlc3RzLCBOb0JvZHkpCiAgICAgYXV0byBjdXJsUmVzcG9uc2UgPSBjcmVhdGVDdXJsUmVz
cG9uc2UoKTsKICAgICBhdXRvIGhhbmRsZSA9IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlm
TmVlZGVkKGNsaWVudCwgY3VybFJlc3BvbnNlKTsKIAotICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZU1l
c3NhZ2UoYnl0ZUNhc3Q8dWludDhfdD4oZGF0YSkpOworICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZU1l
c3NhZ2UoZGF0YSk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5oZWFkZXJzKCkuc2l6ZSgpLCAxKTsK
ICAgICBFWFBFQ1RfVFJVRShjbGllbnQuaGVhZGVycygpLmF0KDApID09ICJDb250ZW50LXR5cGU6
IHRleHQvcGxhaW5cclxuIl9zKTsKICAgICBjbGllbnQuY2xlYXIoKTsKQEAgLTIzNiw3ICsyMzYs
NyBAQCBURVNUKEN1cmxNdWx0aXBhcnRIYW5kbGVUZXN0cywgVHJhbnNwb3J0UGFkZGluZykKICAg
ICBhdXRvIGN1cmxSZXNwb25zZSA9IGNyZWF0ZUN1cmxSZXNwb25zZSgpOwogICAgIGF1dG8gaGFu
ZGxlID0gQ3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVkZWQoY2xpZW50LCBjdXJsUmVz
cG9uc2UpOwogCi0gICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShieXRlQ2FzdDx1aW50OF90
PihkYXRhKSk7CisgICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShkYXRhKTsKICAgICBFWFBF
Q1RfRVEoY2xpZW50LmhlYWRlcnMoKS5zaXplKCksIDEpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVu
dC5oZWFkZXJzKCkuYXQoMCkgPT0gIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpblxyXG4iX3MpOwog
ICAgIGNsaWVudC5jbGVhcigpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFRFU1QoQ3VybE11bHRpcGFy
dEhhbmRsZVRlc3RzLCBOb0VuZE9mQm91bmRhcnkpCiAgICAgYXV0byBjdXJsUmVzcG9uc2UgPSBj
cmVhdGVDdXJsUmVzcG9uc2UoKTsKICAgICBhdXRvIGhhbmRsZSA9IEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmNyZWF0ZUlmTmVlZGVkKGNsaWVudCwgY3VybFJlc3BvbnNlKTsKIAotICAgIGhhbmRsZS0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoYnl0ZUNhc3Q8dWludDhfdD4oZGF0YSkpOworICAgIGhhbmRsZS0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoZGF0YSk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5oZWFkZXJzKCku
c2l6ZSgpLCAxKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuaGVhZGVycygpLmF0KDApID09ICJD
b250ZW50LXR5cGU6IHRleHQvcGxhaW5cclxuIl9zKTsKICAgICBjbGllbnQuY2xlYXIoKTsKQEAg
LTMwMiw3ICszMDIsNyBAQCBURVNUKEN1cmxNdWx0aXBhcnRIYW5kbGVUZXN0cywgTm9FbmRPZkJv
dW5kYXJ5QWZ0ZXJDb21wbGV0ZWQpCiAgICAgYXV0byBjdXJsUmVzcG9uc2UgPSBjcmVhdGVDdXJs
UmVzcG9uc2UoKTsKICAgICBhdXRvIGhhbmRsZSA9IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0
ZUlmTmVlZGVkKGNsaWVudCwgY3VybFJlc3BvbnNlKTsKIAotICAgIGhhbmRsZS0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoYnl0ZUNhc3Q8dWludDhfdD4oZGF0YSkpOworICAgIGhhbmRsZS0+ZGlkUmVjZWl2
ZU1lc3NhZ2UoZGF0YSk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5oZWFkZXJzKCkuc2l6ZSgpLCAx
KTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuaGVhZGVycygpLmF0KDApID09ICJDb250ZW50LXR5
cGU6IHRleHQvcGxhaW5cclxuIl9zKTsKIApAQCAtMzM2LDcgKzMzNiw3IEBAIFRFU1QoQ3VybE11
bHRpcGFydEhhbmRsZVRlc3RzLCBOb0Nsb3NlRGVsaW1pdGVyKQogICAgIGF1dG8gY3VybFJlc3Bv
bnNlID0gY3JlYXRlQ3VybFJlc3BvbnNlKCk7CiAgICAgYXV0byBoYW5kbGUgPSBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChjbGllbnQsIGN1cmxSZXNwb25zZSk7CiAKLSAgICBo
YW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KGRhdGEpKTsKKyAgICBo
YW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGRhdGEpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVh
ZGVycygpLnNpemUoKSwgMSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmhlYWRlcnMoKS5hdCgw
KSA9PSAiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluXHJcbiJfcyk7CiAgICAgY2xpZW50LmNsZWFy
KCk7CkBAIC0zNzEsNyArMzcxLDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIE5v
Q2xvc2VEZWxpbWl0ZXJBZnRlckNvbXBsZXRlZCkKICAgICBhdXRvIGN1cmxSZXNwb25zZSA9IGNy
ZWF0ZUN1cmxSZXNwb25zZSgpOwogICAgIGF1dG8gaGFuZGxlID0gQ3VybE11bHRpcGFydEhhbmRs
ZTo6Y3JlYXRlSWZOZWVkZWQoY2xpZW50LCBjdXJsUmVzcG9uc2UpOwogCi0gICAgaGFuZGxlLT5k
aWRSZWNlaXZlTWVzc2FnZShieXRlQ2FzdDx1aW50OF90PihkYXRhKSk7CisgICAgaGFuZGxlLT5k
aWRSZWNlaXZlTWVzc2FnZShkYXRhKTsKICAgICBFWFBFQ1RfRVEoY2xpZW50LmhlYWRlcnMoKS5z
aXplKCksIDEpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5oZWFkZXJzKCkuYXQoMCkgPT0gIkNv
bnRlbnQtdHlwZTogdGV4dC9wbGFpblxyXG4iX3MpOwogCkBAIC00MDUsNyArNDA1LDcgQEAgVEVT
VChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIENsb3NlRGVsaW1pdGVyKQogICAgIGF1dG8gY3Vy
bFJlc3BvbnNlID0gY3JlYXRlQ3VybFJlc3BvbnNlKCk7CiAgICAgYXV0byBoYW5kbGUgPSBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChjbGllbnQsIGN1cmxSZXNwb25zZSk7CiAK
LSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KGRhdGEpKTsK
KyAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGRhdGEpOwogICAgIEVYUEVDVF9FUShjbGll
bnQuaGVhZGVycygpLnNpemUoKSwgMSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmhlYWRlcnMo
KS5hdCgwKSA9PSAiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluXHJcbiJfcyk7CiAgICAgY2xpZW50
LmNsZWFyKCk7CkBAIC00MzgsNyArNDM4LDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVz
dHMsIENsb3NlRGVsaW1pdGVyQWZ0ZXJDb21wbGV0ZWQpCiAgICAgYXV0byBjdXJsUmVzcG9uc2Ug
PSBjcmVhdGVDdXJsUmVzcG9uc2UoKTsKICAgICBhdXRvIGhhbmRsZSA9IEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmNyZWF0ZUlmTmVlZGVkKGNsaWVudCwgY3VybFJlc3BvbnNlKTsKIAotICAgIGhhbmRs
ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoYnl0ZUNhc3Q8dWludDhfdD4oZGF0YSkpOworICAgIGhhbmRs
ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoZGF0YSk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5oZWFkZXJz
KCkuc2l6ZSgpLCAxKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuaGVhZGVycygpLmF0KDApID09
ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cclxuIl9zKTsKIApAQCAtNDczLDEwICs0NzMsMTAg
QEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIERpdmlkZUZpcnN0RGVsaW1pdGVyKQog
ICAgIGF1dG8gY3VybFJlc3BvbnNlID0gY3JlYXRlQ3VybFJlc3BvbnNlKCk7CiAgICAgYXV0byBo
YW5kbGUgPSBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChjbGllbnQsIGN1cmxS
ZXNwb25zZSk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4
X3Q+KGRhdGEpKTsKKyAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGRhdGEpOwogICAgIEVY
UEVDVF9FUShjbGllbnQuaGVhZGVycygpLnNpemUoKSwgMCk7CiAKLSAgICBoYW5kbGUtPmRpZFJl
Y2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KG5leHREYXRhKSk7CisgICAgaGFuZGxlLT5k
aWRSZWNlaXZlTWVzc2FnZShuZXh0RGF0YSk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5oZWFkZXJz
KCkuc2l6ZSgpLCAxKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuaGVhZGVycygpLmF0KDApID09
ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cclxuIl9zKTsKICAgICBjbGllbnQuY2xlYXIoKTsK
QEAgLTUxMCw3ICs1MTAsNyBAQCBURVNUKEN1cmxNdWx0aXBhcnRIYW5kbGVUZXN0cywgRGl2aWRl
U2Vjb25kRGVsaW1pdGVyKQogICAgIGF1dG8gY3VybFJlc3BvbnNlID0gY3JlYXRlQ3VybFJlc3Bv
bnNlKCk7CiAgICAgYXV0byBoYW5kbGUgPSBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5l
ZWRlZChjbGllbnQsIGN1cmxSZXNwb25zZSk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNz
YWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KGRhdGEpKTsKKyAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNz
YWdlKGRhdGEpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVhZGVycygpLnNpemUoKSwgMSk7CiAg
ICAgRVhQRUNUX1RSVUUoY2xpZW50LmhlYWRlcnMoKS5hdCgwKSA9PSAiQ29udGVudC10eXBlOiB0
ZXh0L3BsYWluXHJcbiJfcyk7CiAgICAgY2xpZW50LmNsZWFyKCk7CkBAIC01MTgsNyArNTE4LDcg
QEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIERpdmlkZVNlY29uZERlbGltaXRlcikK
ICAgICBoYW5kbGUtPmNvbXBsZXRlSGVhZGVyUHJvY2Vzc2luZygpOwogICAgIEVYUEVDVF9FUShj
bGllbnQuaGVhZGVycygpLnNpemUoKSwgMCk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNz
YWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KG5leHREYXRhKSk7CisgICAgaGFuZGxlLT5kaWRSZWNlaXZl
TWVzc2FnZShuZXh0RGF0YSk7CiAgICAgRVhQRUNUX1RSVUUoc3Bhbkhhc1ByZWZpeChjbGllbnQu
ZGF0YSgpLnNwYW4oKSwgIkFCQ0RFRiJfc3BhbikpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVh
ZGVycygpLnNpemUoKSwgMSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmhlYWRlcnMoKS5hdCgw
KSA9PSAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcclxuIl9zKTsKQEAgLTU0Nyw3ICs1NDcsNyBA
QCBURVNUKEN1cmxNdWx0aXBhcnRIYW5kbGVUZXN0cywgRGl2aWRlTGFzdERlbGltaXRlcikKICAg
ICBhdXRvIGN1cmxSZXNwb25zZSA9IGNyZWF0ZUN1cmxSZXNwb25zZSgpOwogICAgIGF1dG8gaGFu
ZGxlID0gQ3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVkZWQoY2xpZW50LCBjdXJsUmVz
cG9uc2UpOwogCi0gICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShieXRlQ2FzdDx1aW50OF90
PihkYXRhKSk7CisgICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShkYXRhKTsKICAgICBFWFBF
Q1RfRVEoY2xpZW50LmhlYWRlcnMoKS5zaXplKCksIDEpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVu
dC5oZWFkZXJzKCkuYXQoMCkgPT0gIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpblxyXG4iX3MpOwog
ICAgIGNsaWVudC5jbGVhcigpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIFRFU1QoQ3VybE11bHRpcGFy
dEhhbmRsZVRlc3RzLCBEaXZpZGVMYXN0RGVsaW1pdGVyKQogICAgIEVYUEVDVF9UUlVFKHNwYW5I
YXNQcmVmaXgoY2xpZW50LmRhdGEoKS5zcGFuKCksICI8aCJfc3BhbikpOwogICAgIEVYUEVDVF9U
UlVFKCFjbGllbnQuY29tcGxldGUoKSk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdl
KGJ5dGVDYXN0PHVpbnQ4X3Q+KG5leHREYXRhKSk7CisgICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVz
c2FnZShuZXh0RGF0YSk7CiAgICAgRVhQRUNUX1RSVUUoc3Bhbkhhc1ByZWZpeChjbGllbnQuZGF0
YSgpLnNwYW4oKSwgIjxodG1sPjwvaHRtbD4iX3NwYW4pKTsKIAogICAgIGhhbmRsZS0+ZGlkQ29t
cGxldGVNZXNzYWdlKCk7CkBAIC01ODUsNyArNTg1LDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFu
ZGxlVGVzdHMsIERpdmlkZUNsb3NlRGVsaW1pdGVyKQogICAgIGF1dG8gY3VybFJlc3BvbnNlID0g
Y3JlYXRlQ3VybFJlc3BvbnNlKCk7CiAgICAgYXV0byBoYW5kbGUgPSBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpjcmVhdGVJZk5lZWRlZChjbGllbnQsIGN1cmxSZXNwb25zZSk7CiAKLSAgICBoYW5kbGUt
PmRpZFJlY2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KGRhdGEpKTsKKyAgICBoYW5kbGUt
PmRpZFJlY2VpdmVNZXNzYWdlKGRhdGEpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVhZGVycygp
LnNpemUoKSwgMSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmhlYWRlcnMoKS5hdCgwKSA9PSAi
Q29udGVudC10eXBlOiB0ZXh0L3BsYWluXHJcbiJfcyk7CiAgICAgY2xpZW50LmNsZWFyKCk7CkBA
IC02MDEsNyArNjAxLDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIERpdmlkZUNs
b3NlRGVsaW1pdGVyKQogICAgIEVYUEVDVF9UUlVFKHNwYW5IYXNQcmVmaXgoY2xpZW50LmRhdGEo
KS5zcGFuKCksICI8aCJfc3BhbikpOwogICAgIEVYUEVDVF9UUlVFKCFjbGllbnQuY29tcGxldGUo
KSk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KG5l
eHREYXRhKSk7CisgICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShuZXh0RGF0YSk7CiAgICAg
RVhQRUNUX1RSVUUoc3Bhbkhhc1ByZWZpeChjbGllbnQuZGF0YSgpLnNwYW4oKSwgIjxodG1sPjwv
aHRtbD4iX3NwYW4pKTsKIAogICAgIGhhbmRsZS0+ZGlkQ29tcGxldGVNZXNzYWdlKCk7CkBAIC02
MjQsNyArNjI0LDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIERpdmlkZVRyYW5z
cG9ydFBhZGRpbmcpCiAgICAgYXV0byBjdXJsUmVzcG9uc2UgPSBjcmVhdGVDdXJsUmVzcG9uc2Uo
KTsKICAgICBhdXRvIGhhbmRsZSA9IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVk
KGNsaWVudCwgY3VybFJlc3BvbnNlKTsKIAotICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Ynl0ZUNhc3Q8dWludDhfdD4oZGF0YSkpOworICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
ZGF0YSk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5oZWFkZXJzKCkuc2l6ZSgpLCAxKTsKICAgICBF
WFBFQ1RfVFJVRShjbGllbnQuaGVhZGVycygpLmF0KDApID09ICJDb250ZW50LXR5cGU6IHRleHQv
cGxhaW5cclxuIl9zKTsKICAgICBjbGllbnQuY2xlYXIoKTsKQEAgLTYzMyw3ICs2MzMsNyBAQCBU
RVNUKEN1cmxNdWx0aXBhcnRIYW5kbGVUZXN0cywgRGl2aWRlVHJhbnNwb3J0UGFkZGluZykKICAg
ICBFWFBFQ1RfRVEoY2xpZW50LmhlYWRlcnMoKS5zaXplKCksIDApOwogICAgIEVYUEVDVF9UUlVF
KHNwYW5IYXNQcmVmaXgoY2xpZW50LmRhdGEoKS5zcGFuKCksICJBQkNERUYiX3NwYW4pKTsKIAot
ICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoYnl0ZUNhc3Q8dWludDhfdD4obmV4dERhdGEp
KTsKKyAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKG5leHREYXRhKTsKICAgICBFWFBFQ1Rf
RVEoY2xpZW50LmhlYWRlcnMoKS5zaXplKCksIDEpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5o
ZWFkZXJzKCkuYXQoMCkgPT0gIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXHJcbiJfcyk7CiAgICAg
Y2xpZW50LmNsZWFyKCk7CkBAIC02NjEsNyArNjYxLDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFu
ZGxlVGVzdHMsIERpdmlkZUhlYWRlcikKICAgICBhdXRvIGN1cmxSZXNwb25zZSA9IGNyZWF0ZUN1
cmxSZXNwb25zZSgpOwogICAgIGF1dG8gaGFuZGxlID0gQ3VybE11bHRpcGFydEhhbmRsZTo6Y3Jl
YXRlSWZOZWVkZWQoY2xpZW50LCBjdXJsUmVzcG9uc2UpOwogCi0gICAgaGFuZGxlLT5kaWRSZWNl
aXZlTWVzc2FnZShieXRlQ2FzdDx1aW50OF90PihkYXRhKSk7CisgICAgaGFuZGxlLT5kaWRSZWNl
aXZlTWVzc2FnZShkYXRhKTsKICAgICBFWFBFQ1RfRVEoY2xpZW50LmhlYWRlcnMoKS5zaXplKCks
IDEpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5oZWFkZXJzKCkuYXQoMCkgPT0gIkNvbnRlbnQt
dHlwZTogdGV4dC9wbGFpblxyXG4iX3MpOwogICAgIGNsaWVudC5jbGVhcigpOwpAQCAtNjcwLDcg
KzY3MCw3IEBAIFRFU1QoQ3VybE11bHRpcGFydEhhbmRsZVRlc3RzLCBEaXZpZGVIZWFkZXIpCiAg
ICAgRVhQRUNUX1RSVUUoc3Bhbkhhc1ByZWZpeChjbGllbnQuZGF0YSgpLnNwYW4oKSwgIkFCQ0RF
RiJfc3BhbikpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVhZGVycygpLnNpemUoKSwgMCk7CiAK
LSAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KG5leHREYXRh
KSk7CisgICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShuZXh0RGF0YSk7CiAgICAgRVhQRUNU
X0VRKGNsaWVudC5oZWFkZXJzKCkuc2l6ZSgpLCAxKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQu
aGVhZGVycygpLmF0KDApID09ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxyXG4iX3MpOwogICAg
IGNsaWVudC5jbGVhcigpOwpAQCAtNzAwLDcgKzcwMCw3IEBAIFRFU1QoQ3VybE11bHRpcGFydEhh
bmRsZVRlc3RzLCBEaXZpZGVCb2R5KQogICAgIGF1dG8gY3VybFJlc3BvbnNlID0gY3JlYXRlQ3Vy
bFJlc3BvbnNlKCk7CiAgICAgYXV0byBoYW5kbGUgPSBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVh
dGVJZk5lZWRlZChjbGllbnQsIGN1cmxSZXNwb25zZSk7CiAKLSAgICBoYW5kbGUtPmRpZFJlY2Vp
dmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KGRhdGEpKTsKKyAgICBoYW5kbGUtPmRpZFJlY2Vp
dmVNZXNzYWdlKGRhdGEpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVhZGVycygpLnNpemUoKSwg
MSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmhlYWRlcnMoKS5hdCgwKSA9PSAiQ29udGVudC10
eXBlOiB0ZXh0L3BsYWluXHJcbiJfcyk7CiAgICAgY2xpZW50LmNsZWFyKCk7CkBAIC03MDgsNyAr
NzA4LDcgQEAgVEVTVChDdXJsTXVsdGlwYXJ0SGFuZGxlVGVzdHMsIERpdmlkZUJvZHkpCiAgICAg
aGFuZGxlLT5jb21wbGV0ZUhlYWRlclByb2Nlc3NpbmcoKTsKICAgICBFWFBFQ1RfRVEoY2xpZW50
LmRhdGEoKS5zaXplKCksIDApOwogCi0gICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShieXRl
Q2FzdDx1aW50OF90PihzZWNvbmREYXRhKSk7CisgICAgaGFuZGxlLT5kaWRSZWNlaXZlTWVzc2Fn
ZShzZWNvbmREYXRhKTsKICAgICBFWFBFQ1RfVFJVRShzcGFuSGFzUHJlZml4KGNsaWVudC5kYXRh
KCkuc3BhbigpLCAiQUJDREVGIl9zcGFuKSk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5oZWFkZXJz
KCkuc2l6ZSgpLCAxKTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuaGVhZGVycygpLmF0KDApID09
ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxyXG4iX3MpOwpAQCAtNzE3LDcgKzcxNyw3IEBAIFRF
U1QoQ3VybE11bHRpcGFydEhhbmRsZVRlc3RzLCBEaXZpZGVCb2R5KQogICAgIGhhbmRsZS0+Y29t
cGxldGVIZWFkZXJQcm9jZXNzaW5nKCk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5kYXRhKCkuc2l6
ZSgpLCAwKTsKIAotICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoYnl0ZUNhc3Q8dWludDhf
dD4obGFzdERhdGEpKTsKKyAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGxhc3REYXRhKTsK
ICAgICBFWFBFQ1RfVFJVRShzcGFuSGFzUHJlZml4KGNsaWVudC5kYXRhKCkuc3BhbigpLCAiPGh0
bWw+PC9odG1sPiJfc3BhbikpOwogICAgIEVYUEVDVF9UUlVFKCFjbGllbnQuY29tcGxldGUoKSk7
CiAKQEAgLTc0MSwxNyArNzQxLDE3IEBAIFRFU1QoQ3VybE11bHRpcGFydEhhbmRsZVRlc3RzLCBD
b21wbGV0ZVdoaWxlSGVhZGVyUHJvY2Vzc2luZykKICAgICBhdXRvIGN1cmxSZXNwb25zZSA9IGNy
ZWF0ZUN1cmxSZXNwb25zZSgpOwogICAgIGF1dG8gaGFuZGxlID0gQ3VybE11bHRpcGFydEhhbmRs
ZTo6Y3JlYXRlSWZOZWVkZWQoY2xpZW50LCBjdXJsUmVzcG9uc2UpOwogCi0gICAgaGFuZGxlLT5k
aWRSZWNlaXZlTWVzc2FnZShieXRlQ2FzdDx1aW50OF90PihkYXRhKSk7CisgICAgaGFuZGxlLT5k
aWRSZWNlaXZlTWVzc2FnZShkYXRhKTsKICAgICBFWFBFQ1RfRVEoY2xpZW50LmhlYWRlcnMoKS5z
aXplKCksIDEpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5oZWFkZXJzKCkuYXQoMCkgPT0gIkNv
bnRlbnQtdHlwZTogdGV4dC9wbGFpblxyXG4iX3MpOwogICAgIEVYUEVDVF9FUShjbGllbnQuZGF0
YSgpLnNpemUoKSwgMCk7CiAgICAgY2xpZW50LmNsZWFyKCk7CiAKLSAgICBoYW5kbGUtPmRpZFJl
Y2VpdmVNZXNzYWdlKGJ5dGVDYXN0PHVpbnQ4X3Q+KHNlY29uZERhdGEpKTsKKyAgICBoYW5kbGUt
PmRpZFJlY2VpdmVNZXNzYWdlKHNlY29uZERhdGEpOwogICAgIEVYUEVDVF9FUShjbGllbnQuaGVh
ZGVycygpLnNpemUoKSwgMCk7CiAgICAgRVhQRUNUX0VRKGNsaWVudC5kYXRhKCkuc2l6ZSgpLCAw
KTsKIAotICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoYnl0ZUNhc3Q8dWludDhfdD4obGFz
dERhdGEpKTsKKyAgICBoYW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKGxhc3REYXRhKTsKICAgICBF
WFBFQ1RfRVEoY2xpZW50LmhlYWRlcnMoKS5zaXplKCksIDApOwogICAgIEVYUEVDVF9FUShjbGll
bnQuZGF0YSgpLnNpemUoKSwgMCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IGQ3MDg0OGVhMmRkZi4uNzZlZTE2Nzc2ZDc3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0KQEAgLTEyMDMsOSArMTIwMyw5IEBAIFRFU1QoV0tEb3dubG9hZCwgUmVzdW1lZERvd25s
b2FkQ2FuSGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB9CiAKIHRlbXBsYXRlPHNpemVf
dCBsZW5ndGg+Ci1TdHJpbmcgbG9uZ1N0cmluZyhMYXRpbjFDaGFyYWN0ZXIgYykKK1N0cmluZyBs
b25nU3RyaW5nKExDaGFyIGMpCiB7Ci0gICAgVmVjdG9yPExhdGluMUNoYXJhY3Rlcj4gdmVjdG9y
KGxlbmd0aCwgYyk7CisgICAgVmVjdG9yPExDaGFyPiB2ZWN0b3IobGVuZ3RoLCBjKTsKICAgICBy
ZXR1cm4gdmVjdG9yLnNwYW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KaW5kZXgg
Y2E2ZWMzNDg3MzQ2Li5jYWI2NTE0MTM0NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQpA
QCAtNzIsNyArNzIsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6KFdLT3BlblBhbmVsUGFyYQogICAgIEVYUEVDVF9GQUxT
RShwYXJhbWV0ZXJzLmFsbG93c0RpcmVjdG9yaWVzKTsKICAgICBjb25zdGV4cHIgYXV0byBUZXN0
RmlsZURhdGEgPSAiVGhpcyBpcyB0ZXN0IGZpbGUiX3M7CiAgICAgYXV0byBbcGF0aCwgaGFuZGxl
XSA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJJbmRleGVkREJQZXJzaXN0ZW5jZSJf
cyk7Ci0gICAgaGFuZGxlLndyaXRlKGJ5dGVDYXN0PHVpbnQ4X3Q+KFRlc3RGaWxlRGF0YS5zcGFu
OCgpKSk7CisgICAgaGFuZGxlLndyaXRlKFRlc3RGaWxlRGF0YS5zcGFuOCgpKTsKICAgICBoYW5k
bGUgPSB7IH07CiAgICAgc2VsZWN0ZWRGaWxlUGF0aCA9IHBhdGguY3JlYXRlTlNTdHJpbmcoKTsK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnNlbGVjdGVk
RmlsZVBhdGguZ2V0KCldIF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYkV4dGVuc2lvbkFQSVdlYk5hdmlnYXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViRXh0ZW5zaW9uQVBJV2ViTmF2aWdh
dGlvbi5tbQppbmRleCA0ZTQwODUyMTNiOWQuLjk4ZDczNjE2NmQ3MiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYkV4dGVuc2lvbkFQSVdlYk5h
dmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYkV4dGVuc2lvbkFQSVdlYk5hdmlnYXRpb24ubW0KQEAgLTQzOSw5ICs0MzksOSBAQCBURVNU
KFdLV2ViRXh0ZW5zaW9uQVBJV2ViTmF2aWdhdGlvbiwgRXJyb3JPY2N1cnJlZEV2ZW50RHVyaW5n
UHJvdmlzaW9uYWxMb2FkKQogfQogCiB0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgotU3RyaW5nIGxv
bmdTdHJpbmcoTGF0aW4xQ2hhcmFjdGVyIGMpCitTdHJpbmcgbG9uZ1N0cmluZyhMQ2hhciBjKQog
ewotICAgIFZlY3RvcjxMYXRpbjFDaGFyYWN0ZXI+IHZlY3RvcihsZW5ndGgsIGMpOworICAgIFZl
Y3RvcjxMQ2hhcj4gdmVjdG9yKGxlbmd0aCwgYyk7CiAgICAgcmV0dXJuIHZlY3Rvci5zcGFuKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2ViUHVzaERhZW1vbi5tbQppbmRleCAwNDE3OTY3MTE5NGQuLjU4NjZiNzg2ZTI3MyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERh
ZW1vbi5tbQpAQCAtMjgyLDcgKzI4Miw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFRlc3RBcmd1bWVu
dENvZGVyPFN0cmluZz4gewogICAgICAgICBpZiAoIWlzOEJpdCkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqaXM4Qml0KQotICAgICAgICAgICAgcmV0dXJu
IGRlY29kZVN0cmluZ1RleHQ8TGF0aW4xQ2hhcmFjdGVyPihkZWNvZGVyLCAqbGVuZ3RoKTsKKyAg
ICAgICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFyPihkZWNvZGVyLCAqbGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8Y2hhcjE2X3Q+KGRlY29kZXIsICps
ZW5ndGgpOwogICAgIH0KIH07CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBAInVzZXJJbmZvIjogYXBzVXNlckluZm8KICAgICAgICAgfTsKIAotICAgICAgICBTdHJp
bmcgbWVzc2FnZSB7IGJ5dGVDYXN0PExhdGluMUNoYXJhY3Rlcj4oc3BhbihbTlNKU09OU2VyaWFs
aXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6b2JqIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXSkp
IH07CisgICAgICAgIFN0cmluZyBtZXNzYWdlIHsgc3BhbihbTlNKU09OU2VyaWFsaXphdGlvbiBk
YXRhV2l0aEpTT05PYmplY3Q6b2JqIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXSkgfTsKIAogICAg
ICAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlv
blRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIik7CiAgICAg
ICAgIGF1dG8gc2VuZGVyID0gV2ViUHVzaFhQQ0Nvbm5lY3Rpb25NZXNzYWdlU2VuZGVyIHsgdXRp
bGl0eUNvbm5lY3Rpb24uZ2V0KCkgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCBhNDA5
ZjFiMzMwNGEuLjk1MThhNTMwNGJkYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtNzcs
NyArNzcsNyBAQCBpbmxpbmUgU3RyaW5nVHlwZUFkYXB0ZXI8V0tTdHJpbmdSZWY+OjpTdHJpbmdU
eXBlQWRhcHRlcihXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5l
IHZvaWQgU3RyaW5nVHlwZUFkYXB0ZXI8V0tTdHJpbmdSZWY+Ojp3cml0ZVRvPExhdGluMUNoYXJh
Y3Rlcj4oc3RkOjpzcGFuPExhdGluMUNoYXJhY3Rlcj4pIGNvbnN0Cit0ZW1wbGF0ZTw+IGlubGlu
ZSB2b2lkIFN0cmluZ1R5cGVBZGFwdGVyPFdLU3RyaW5nUmVmPjo6d3JpdGVUbzxMQ2hhcj4oc3Rk
OjpzcGFuPExDaGFyPikgY29uc3QKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5n
RnVuY3Rpb25zLmgKaW5kZXggOTcyYjRmZTI2OTY4Li42ZmRiNGZlMjJjZjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtOTgsMTMgKzk4LDEzIEBAIGlubGlu
ZSBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiAgICAgaWYgKCFz
dHJpbmcpCiAgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRv
IGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXI4X3RbXT4oYnVm
ZmVyU2l6ZSk7Ci0gICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJp
bmdOb25TdHJpY3Qoc3RyaW5nLCBieXRlQ2FzdDxjaGFyPihidWZmZXIuZ2V0KCkpLCBidWZmZXJT
aXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5n
R2V0VVRGOENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUp
OwogICAgIGlmICghc3RyaW5nTGVuZ3RoKQogICAgICAgICByZXR1cm4gIihudWxsKSJfczsKICAg
ICByZXR1cm4gV1RGOjpTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKHsgYnVmZmVy
LmdldCgpLCBzdHJpbmdMZW5ndGggLSAxIH0pOwogfQotCisgICAgCiBpbmxpbmUgV1RGOjpTdHJp
bmcgdG9XVEZTdHJpbmcoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiB7
CiAgICAgcmV0dXJuIHRvV1RGU3RyaW5nKHN0cmluZy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9nZGIvd2Via2l0LnB5IGIvVG9vbHMvZ2RiL3dlYmtpdC5weQppbmRleCA3ZDYxNTFkYjA5N2Mu
LjdkMmYwYTZiMWQ4NiAxMDA2NDQKLS0tIGEvVG9vbHMvZ2RiL3dlYmtpdC5weQorKysgYi9Ub29s
cy9nZGIvd2Via2l0LnB5CkBAIC03Miw3ICs3Miw3IEBAIGRlZiB1c3RyaW5nX3RvX3N0cmluZyhw
dHIsIGxlbmd0aD1Ob25lKToKIAogCiBkZWYgbHN0cmluZ190b19zdHJpbmcocHRyLCBsZW5ndGg9
Tm9uZSk6Ci0gICAgIiIiQ29udmVydCBhIHBvaW50ZXIgdG8gTGF0aW4xQ2hhcmFjdGVyKiBkYXRh
IGludG8gYSBQeXRob24gKG5vbi1Vbmljb2RlKSBzdHJpbmcuCisgICAgIiIiQ29udmVydCBhIHBv
aW50ZXIgdG8gTENoYXIqIGRhdGEgaW50byBhIFB5dGhvbiAobm9uLVVuaWNvZGUpIHN0cmluZy4K
IAogICAgIHB0ciBhbmQgbGVuZ3RoIGFyZSBib3RoIGdkYi5WYWx1ZSBvYmplY3RzLgogICAgIElm
IGxlbmd0aCBpcyB1bnNwZWNpZmllZCwgd2lsbCBndWVzcyBhdCB0aGUgbGVuZ3RoLiIiIgpAQCAt
MTAxLDcgKzEwMSw3IEBAIGNsYXNzIFVDaGFyU3RyaW5nUHJpbnRlcihTdHJpbmdQcmludGVyKToK
IAogCiBjbGFzcyBMQ2hhclN0cmluZ1ByaW50ZXIoU3RyaW5nUHJpbnRlcik6Ci0gICAgIlByaW50
IGEgTGF0aW4xQ2hhcmFjdGVyKjsgd2UgbXVzdCBndWVzcyBhdCB0aGUgbGVuZ3RoIgorICAgICJQ
cmludCBhIExDaGFyKjsgd2UgbXVzdCBndWVzcyBhdCB0aGUgbGVuZ3RoIgogICAgIGRlZiB0b19z
dHJpbmcoc2VsZik6CiAgICAgICAgIHJldHVybiBsc3RyaW5nX3RvX3N0cmluZyhzZWxmLnZhbCkK
IApAQCAtMzI1LDcgKzMyNSw3IEBAIGRlZiBhZGRfcHJldHR5X3ByaW50ZXJzKCk6CiAgICAgICAg
ICAgICBuYW1lID0gc3RyKHR5cGUudGFyZ2V0KCkudW5xdWFsaWZpZWQoKSkKICAgICAgICAgICAg
IGlmIG5hbWUgPT0gJ2NoYXIxNl90JzoKICAgICAgICAgICAgICAgICByZXR1cm4gVUNoYXJTdHJp
bmdQcmludGVyKHZhbCkKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gJ0xhdGluMUNoYXJhY3Rlcic6
CisgICAgICAgICAgICBpZiBuYW1lID09ICdMQ2hhcic6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IExDaGFyU3RyaW5nUHJpbnRlcih2YWwpCiAgICAgICAgIHJldHVybiBOb25lCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>