<?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>300268</bug_id>
          
          <creation_ts>2025-10-06 15:38:41 -0700</creation_ts>
          <short_desc>REGRESSION(301069@main): broke internal builds</short_desc>
          <delta_ts>2025-10-06 20:54:57 -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>300260</blocked>
    
    <blocked>300201</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2148867</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-10-06 15:38:41 -0700</bug_when>
    <thetext>https://commits.webkit.org/301069@main introduced a regression:
broke internal builds

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>2148869</commentid>
    <comment_count>1</comment_count>
      <attachid>476990</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-10-06 15:38:53 -0700</bug_when>
    <thetext>Created attachment 476990
REVERT of 301069@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>2148870</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-10-06 15:43:08 -0700</bug_when>
    <thetext>Committed 301094@main (1d4be5627579): &lt;https://commits.webkit.org/301094@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 476990.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2148871</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-10-06 15:44:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/162073550&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2148944</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2025-10-06 20:52:15 -0700</bug_when>
    <thetext>Re-opening for pull request https://github.com/WebKit/WebKit/pull/51912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2148945</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-10-06 20:54:55 -0700</bug_when>
    <thetext>Committed 301107@main (b4ce21425e00): &lt;https://commits.webkit.org/301107@main&gt;

Reviewed commits have been landed. Closing PR #51912 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>476990</attachid>
            <date>2025-10-06 15:38:53 -0700</date>
            <delta_ts>2025-10-06 15:43:09 -0700</delta_ts>
            <desc>REVERT of 301069@main</desc>
            <filename>bug-300268-20251006223853.patch</filename>
            <type>text/plain</type>
            <size>122802</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAxZDcwZWU3MzYwZjQ4YzkwYmQ0YzEzYzQ3MGFmZGQ5ZWFhZjJhNTVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBNb24sIDYgT2N0IDIwMjUgMjI6Mzg6NTAgKzAwMDAKU3ViamVjdDogW1BBVENIXSBV
bnJldmlld2VkLCByZXZlcnRpbmcgMzAxMDY5QG1haW4uCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzAwMjY4Cgpicm9rZSBpbnRlcm5hbCBidWlsZHMKClJldmVydGVk
IGNoYW5nZXNldDoKCiJBZG9wdCBMSUZFVElNRV9CT1VORCBmb3IgV1RGOjpSZWZQdHIiCmh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDAyMDEKaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvMzAxMDY5QG1haW4KLS0tCiAuLi4vVW5jb3VudGVkTG9jYWxWYXJzQ2hlY2tl
ckV4cGVjdGF0aW9ucyAgICAgfCAgMSArCiAuLi4vYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCAgICAgICAgfCAxMCArKy0tLQogLi4uL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwICAgICAgICAgICAgIHwgMzggKysrKysrKysrLS0tLS0tLS0tLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgICAgICAgIHwgIDIgKy0KIC4uLi9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8ICA1ICstLQogLi4uL2RmZy9ERkdTdGFja0xh
eW91dFBoYXNlLmNwcCAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwICAgICAgICAgICAgICB8ICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAgfCAgMiArLQogLi4uL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwICAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9WTUluc3BlY3Rvci5jcHAgICB8ICAyICstCiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCAgICAg
ICAgICAgICAgICAgICAgICAgfCAgOSArKy0tLQogLi4uL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhDb3JlT2JqZWN0LmNwcCB8IDE4ICsrKystLS0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWENvcmVPYmplY3QuaCAgIHwgMTIgKysrLS0tCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAyNCArKysrKystLS0tLS0KIC4uLi9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGVJbmxpbmVzLmggICAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFV0aWxpdGllcy5jcHAgIHwgIDIgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCB8IDMwICsrKysrKystLS0tLS0tLQogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgIDQgKy0KIC4uLi9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICB8IDE4ICsrKystLS0tLQogLi4uL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR09iamVjdC5jcHAgIHwgIDIgKy0KIC4uLi9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCB8ICA0ICstCiAuLi4vaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAgfCAgNCArLQogLi4uL21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vU2Nyb2xsVGltZWxpbmUuY3BwICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwICAgICAgICAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgICAgICAgICAgICAgICB8ICA2ICstLQogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuY3BwICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCAgICAgICAgICAgICAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQ
YXRoLmggICAgICAgICAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmNwcCAgICAgICAgICB8ICAyICstCiAuLi4vV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcCAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNw
cCAgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCAg
ICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcCAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
ICAgICAgIHwgIDIgKy0KIC4uLi9lZGl0aW5nL2NvY29hL05vZGVIVE1MQ29udmVydGVyLm1tICAg
ICAgICB8ICAyICstCiAuLi4vaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbklubGluZXMuaCAgICAg
ICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5jcHAgICAg
IHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCB8
ICAyICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCAgICAgfCAg
MiArLQogLi4uL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwICAgICAgIHwgIDIg
Ky0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAgICAgICB8ICAyICst
CiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcCAgICAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgICAgIHwgIDIgKy0KIC4u
Li9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwICAgICAgICB8ICAyICstCiAuLi4v
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgICAgfCAgMiArLQogLi4uL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwICAgIHwgMTAgKystLS0KIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgICAgICB8ICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggICAgfCAgMiArLQogLi4uL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgfCAgOCArKy0tCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCAgICAgICAgfCAgMiArLQogLi4uL3BhZ2UvRWxlbWVu
dFRhcmdldGluZ0NvbnRyb2xsZXIuY3BwICAgICAgIHwgIDggKystLQogU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcCAgICAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVHJlZS5jcHAgICAgICAgICAgICAgfCAxMCArKy0tLQogLi4uL1dlYkNvcmUvcGFnZS9M
YXJnZXN0Q29udGVudGZ1bFBhaW50LmNwcCAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYWxGcmFtZS5jcHAgICAgICAgICAgICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwICAgICAgICAgICAgICAgICAgfCAgMiArLQogLi4uL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUV2ZW50VGltaW5nLmNwcCAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL3BhZ2UvUG9pbnRlckNh
cHR1cmVDb250cm9sbGVyLmNwcCB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZy
YW1lLmNwcCAgICAgICAgICAgfCAgMiArLQogLi4uL3BhZ2UvVXNlck1lc3NhZ2VIYW5kbGVyc05h
bWVzcGFjZS5jcHAgICAgIHwgIDQgKy0KIC4uLi9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgICB8ICAyICstCiAuLi4vU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZS5oICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAgIHwgIDIgKy0KIC4uLi9wbGF0Zm9ybS9jb2NvYS9XZWJBVlBsYXllckxheWVyLm1t
ICAgICAgICB8ICAyICstCiAuLi4vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
ci5jcHAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAg
ICAgIHwgIDIgKy0KIC4uLi9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHAgICAg
ICB8ICAyICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCAg
fCAgNCArLQogLi4uL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIHwg
IDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAgICAgICB8ICAy
ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgfCAgMiAr
LQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgIHwgIDIgKy0K
IC4uLi9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcCB8ICA0ICstCiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgICAgICAgICAgfCAgMiArLQogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwICAgICAgICAgIHwgIDIgKy0KIFNvdXJj
ZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAgICAgICAgICAgICAgfCAgNCArLQogU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgICAgIHwgIDIgKy0KIC4uLi9jbGFzc2lm
aWVyL2NvY29hL1RleHRFeHRyYWN0aW9uRmlsdGVyLm1tICB8ICAyICstCiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcCAgfCAgNCArLQogLi4uL0NvY29hL1dlYkV4
dGVuc2lvbkNvbnRleHRDb2NvYS5tbSAgICAgICAgIHwgIDIgKy0KIC4uLi9HYW1lcGFkL2lvcy9V
SUdhbWVwYWRQcm92aWRlcklPUy5tbSAgICAgICB8ICAyICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwICAgfCAgMiArLQogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJWaWV3SW1wbC5tbSAgICB8ICAyICstCiAuLi4vQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcCAgfCAgOCArKy0tCiAuLi4vd2MvUmVtb3RlV0NMYXllclRyZWVI
b3N0UHJveHkuY3BwICAgICAgICAgfCAgMiArLQogLi4uL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuY3BwICAgIHwgIDIgKy0KIC4uLi9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcCAgICB8ICAyICstCiAuLi4vR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1h
bmRMaXN0ZW5lci5jcHAgfCAgMiArLQogLi4uL0dQVS9tZWRpYS9jb2NvYS9WaWRlb0xheWVyUmVt
b3RlQ29jb2EubW0gIHwgIDIgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwICAgICAgICB8ICA0ICstCiAuLi4vV2ViTG9jYWxGcmFtZUxvYWRlckNsaWVudC5jcHAgICAg
ICAgICAgICAgfCAgMiArLQogLi4uL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVy
LmNwcCAgIHwgIDIgKy0KIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcCB8ICAyICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tICAg
ICAgfCAgMiArLQogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkg
IHwgMjQgLS0tLS0tLS0tLS0tCiAuLi4vd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0
ZXN0LnB5ICAgfCAxOCAtLS0tLS0tLS0KIC4uLi9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q1NTUGFyc2VyLmNwcCB8ICA0ICstCiAuLi4vVGVzdHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNw
cCAgICAgICAgICAgfCAgMiArLQogLi4uL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tICAgICAgIHwgIDIgKy0KIDEwOSBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwg
MjY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TYWZl
ckNQUEV4cGVjdGF0aW9ucy9VbmNvdW50ZWRMb2NhbFZhcnNDaGVja2VyRXhwZWN0YXRpb25zIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NhZmVyQ1BQRXhwZWN0YXRpb25zL1VuY291bnRlZExvY2Fs
VmFyc0NoZWNrZXJFeHBlY3RhdGlvbnMKaW5kZXggYTgzZmE4MGM0ZGZkLi5lZDMxMTZmMDAxYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TYWZlckNQUEV4cGVjdGF0aW9ucy9V
bmNvdW50ZWRMb2NhbFZhcnNDaGVja2VyRXhwZWN0YXRpb25zCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TYWZlckNQUEV4cGVjdGF0aW9ucy9VbmNvdW50ZWRMb2NhbFZhcnNDaGVja2VyRXhw
ZWN0YXRpb25zCkBAIC0xMTAsNiArMTEwLDcgQEAgcnVudGltZS9UeXBlU2V0LmNwcAogcnVudGlt
ZS9WTVRyYXBzLmNwcAogcnVudGltZS9XYWl0ZXJMaXN0TWFuYWdlci5oCiB0b29scy9KU0RvbGxh
clZNLmNwcAordG9vbHMvVk1JbnNwZWN0b3IuY3BwCiB3YXNtL1dhc21CQlFKSVQuY3BwCiB3YXNt
L1dhc21CQlFKSVQ2NC5jcHAKIHdhc20vV2FzbUJCUVBsYW4uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDM1YzMwMmQ2YWU3Yy4uOTIwMDkwNWMyYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjM3
MSw3ICsyMzcxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZl
U2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKFJlZ2lzdGUKICAgICBlbHNlCiAgICAgICAg
IE9wR2V0U2NvcGU6OmVtaXQodGhpcywgc2NvcGUuZ2V0KCkpOwogICAgIE9wUmVzb2x2ZVNjb3Bl
Rm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDo6ZW1pdCh0aGlzLCBraWxsKHJlc3VsdC5nZXQoKSks
IHNjb3BlLmdldCgpLCBhZGRDb25zdGFudChwcm9wZXJ0eSkpOwotICAgIHJldHVybiByZXN1bHQu
dW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKIH0KIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6cG9wTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiBub2Rl
KQpAQCAtNDc3NSw3ICs0Nzc1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXAKICAgICB9CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0YW50ID0gYWRkVGVtcGxhdGVPYmplY3RDb25zdGFu
dChUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZShXVEZNb3ZlKHJhd1N0cmluZ3MpLCBX
VEZNb3ZlKGNvb2tlZFN0cmluZ3MpKSwgdGFnZ2VkVGVtcGxhdGUtPmVuZE9mZnNldCgpKTsKICAg
ICBpZiAoIWRzdCkKLSAgICAgICAgcmV0dXJuIGNvbnN0YW50LnVuc2FmZUdldCgpOworICAgICAg
ICByZXR1cm4gY29uc3RhbnQuZ2V0KCk7CiAgICAgcmV0dXJuIG1vdmUoZHN0LCBjb25zdGFudC5n
ZXQoKSk7CiB9CiAKQEAgLTUxMzMsNyArNTEzMyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0R2VuZXJpY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJv
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGl0ZXJhdG9yID0gZW1pdEdldEJ5SWQobmV3VGVtcG9y
YXJ5KCksIGFyZ3VtZW50LCBwcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIGVt
aXRDYWxsSXRlcmF0b3IoaXRlcmF0b3IuZ2V0KCksIGFyZ3VtZW50LCBub2RlKTsKIAotICAgIHJl
dHVybiBpdGVyYXRvci51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gaXRlcmF0b3IuZ2V0KCk7CiB9
CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JHZW5lcmljTmV4
dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIG5leHRNZXRob2QsIFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRW1pdEF3YWl0IGRv
RW1pdEF3YWl0KQpAQCAtNTIyMSw3ICs1MjIxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRBc3luY0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2EK
ICAgICBlbWl0Q2FsbEl0ZXJhdG9yKGl0ZXJhdG9yLmdldCgpLCBhcmd1bWVudCwgbm9kZSk7CiAg
ICAgZW1pdExhYmVsKGl0ZXJhdG9yUmVjZWl2ZWQuZ2V0KCkpOwogCi0gICAgcmV0dXJuIGl0ZXJh
dG9yLnVuc2FmZUdldCgpOworICAgIHJldHVybiBpdGVyYXRvci5nZXQoKTsKIH0KIAogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSkKQEAgLTUzNDIsNyArNTM0Miw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdp
c3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgfQogCiAgICAgZW1pdEdldEJ5SWQodmFs
dWUuZ2V0KCksIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUpOwotICAgIHJldHVy
biB2YWx1ZS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gdmFsdWUuZ2V0KCk7CiB9CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IDUyNmM4MzIyZWZiZS4uZGViNjliOTdlYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMDMxLDcgKzEw
MzEsNyBAQCBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICB9CiAKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7Ci0gICAgICAgIHJldHVybiBmaW5hbERlc3QudW5zYWZlR2V0KCk7CisgICAgICAg
IHJldHVybiBmaW5hbERlc3QuZ2V0KCk7CiAgICAgfQogCiAgICAgUmVnaXN0ZXJJRCogcmV0OwpA
QCAtMTMzNSw3ICsxMzM1LDcgQEAgUmVnaXN0ZXJJRCogRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAgICB9IGVsc2UK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGlyZWN0RXZhbChyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwogCi0gICAgcmV0dXJuIHJldHVyblZhbHVlLnVuc2Fm
ZUdldCgpOworICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDEwLDcgKzE0MTAsNyBAQCBSZWdpc3RlcklEKiBT
dGF0aWNCbG9ja0Z1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdAogICAgIFJlZlB0ciByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQ
b3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpLCBE
ZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKIAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0
dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIHJl
c3VsdC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0LmdldCgpOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjQ5NSw3ICsyNDk1LDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19uZXdBcnJheVdpdGhT
aXplKEpTQzo6Qnl0ZWNvZGUKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbERlc3RpbmF0
aW9uID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBnZW5lcmF0b3IuZW1p
dE5ld0FycmF5V2l0aFNpemUoZmluYWxEZXN0aW5hdGlvbi5nZXQoKSwgc2l6ZS5nZXQoKSk7Ci0g
ICAgcmV0dXJuIGZpbmFsRGVzdGluYXRpb24udW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGZpbmFs
RGVzdGluYXRpb24uZ2V0KCk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfbmV3QXJyYXlXaXRoU3BlY2llcyhKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIEpTQzo6UmVnaXN0ZXJJRCogZHN0KQpAQCAtMjUwOCw3ICsyNTA4LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19uZXdB
cnJheVdpdGhTcGVjaWVzKEpTQzo6Qnl0ZWMKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5h
bERlc3RpbmF0aW9uID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBnZW5l
cmF0b3IuZW1pdE5ld0FycmF5V2l0aFNwZWNpZXMoZmluYWxEZXN0aW5hdGlvbi5nZXQoKSwgc2l6
ZS5nZXQoKSwgYXJyYXkuZ2V0KCkpOwotICAgIHJldHVybiBmaW5hbERlc3RpbmF0aW9uLnVuc2Fm
ZUdldCgpOworICAgIHJldHVybiBmaW5hbERlc3RpbmF0aW9uLmdldCgpOwogfQogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2NyZWF0ZVByb21pc2Uo
SlNDOjpCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBKU0M6OlJlZ2lzdGVySUQqIGRzdCkK
QEAgLTI1MjgsNyArMjUyOCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6
ZW1pdF9pbnRyaW5zaWNfbmV3UHJvbWlzZShKU0M6OkJ5dGVjb2RlR2VuZXJhCiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGZpbmFsRGVzdGluYXRpb24gPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpOwogICAgIGJvb2wgaXNJbnRlcm5hbFByb21pc2UgPSBmYWxzZTsKICAgICBnZW5lcmF0
b3IuZW1pdE5ld1Byb21pc2UoZmluYWxEZXN0aW5hdGlvbi5nZXQoKSwgaXNJbnRlcm5hbFByb21p
c2UpOwotICAgIHJldHVybiBmaW5hbERlc3RpbmF0aW9uLnVuc2FmZUdldCgpOworICAgIHJldHVy
biBmaW5hbERlc3RpbmF0aW9uLmdldCgpOwogfQogCiAKQEAgLTI3MDksNyArMjcwOSw3IEBAIFJl
Z2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCksIERlYnVnZ2FibGVDYWxsOjpZZXMpOwogICAgICAgICBnZW5lcmF0b3IubW92ZShkc3Qs
IHJldHVyblZhbHVlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlLnVuc2FmZUdl
dCgpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiAgICAgfQogCiAgICAgUmVm
PExhYmVsPiByZWFsQ2FsbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMjc1NSw3ICsyNzU1
LDcgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KGVuZC5nZXQoKSk7CiAgICAgfQogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJu
VmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIHJldHVy
blZhbHVlLnVuc2FmZUdldCgpOworICAgIHJldHVybiByZXR1cm5WYWx1ZS5nZXQoKTsKIH0KIAog
UmVnaXN0ZXJJRCogSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMjgy
NCw3ICsyODI0LDcgQEAgUmVnaXN0ZXJJRCogSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGcKICAgICB9CiAKICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgIHJldHVybiByZXR1cm5WYWx1ZS51bnNhZmVHZXQoKTsKKyAgICByZXR1
cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKIHN0YXRpYyBib29sIGFyZVRyaXZpYWxBcHBseUFy
Z3VtZW50cyhBcmd1bWVudHNOb2RlKiBhcmdzKQpAQCAtMjg2NSw3ICsyODY1LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbElu
VGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCksIERlYnVnZ2FibGVDYWxsOjpZZXMpOwogICAgICAgICBnZW5lcmF0b3IubW92ZShkc3QsIHJl
dHVyblZhbHVlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlLnVuc2FmZUdldCgp
OworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiAgICAgfQogCiAgICAgUmVmPExh
YmVsPiByZWFsQ2FsbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMjk0OCw3ICsyOTQ4LDcg
QEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChl
bmQuZ2V0KCkpOwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZh
bHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXR1cm5W
YWx1ZS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWUuZ2V0KCk7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQb3N0Zml4Tm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yOTkxLDcgKzI5OTEsNyBAQCBSZWdpc3RlcklEKiBQ
b3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZAogICAgICAgICB9CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1
ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCBsb2NhbFJlZy5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUobG9jYWxSZWcuZ2V0KCksIHZhciwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICAgICAgcmV0dXJuIG9sZFZhbHVlLnVuc2FmZUdldCgpOworICAgICAgICByZXR1
cm4gb2xkVmFsdWUuZ2V0KCk7CiAgICAgfQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7CkBAIC0zMDAxLDcgKzMwMDEs
NyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogICAgIGlmICh2YXIuaXNSZWFkT25seSgpKSB7
CiAgICAgICAgIGJvb2wgdGhyZXdFeGNlcHRpb24gPSBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhj
ZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgaWYgKHRocmV3RXhjZXB0aW9uKQotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlLnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LmdldCgpOwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9z
dEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdmFs
dWUuZ2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGlmICghdmFyLmlzUmVhZE9ubHkoKSkgewpAQCAt
MzAwOSw3ICszMDA5LDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgdmFyLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIH0KIAotICAgIHJldHVybiBvbGRWYWx1ZS51bnNhZmVHZXQoKTsKKyAgICBy
ZXR1cm4gb2xkVmFsdWUuZ2V0KCk7CiB9CiAKIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0
QnJhY2tldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBA
IC0zMzA0LDcgKzMzMDQsNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0UmVzb2x2ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICh2YXIu
aXNSZWFkT25seSgpKSB7CiAgICAgICAgIGJvb2wgdGhyZXdFeGNlcHRpb24gPSBnZW5lcmF0b3Iu
ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQodmFyKTsKICAgICAgICAgaWYgKHRocmV3RXhj
ZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnVuc2FmZUdldCgpOworICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlLmdldCgpOwogICAgIH0KIAogICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0
b3IsIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKQEAgLTM5NTYsNyArMzk1Niw3IEBAIFJlZ2lz
dGVySUQqIE9wdGlvbmFsQ2hhaW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0CiAgICAgaWYgKG1faXNPdXRlcm1vc3QpCiAgICAgICAgIGdlbmVy
YXRvci5wb3BPcHRpb25hbENoYWluVGFyZ2V0KGZpbmFsRGVzdC5nZXQoKSwgbV9leHByLT5pc0Rl
bGV0ZU5vZGUoKSk7CiAKLSAgICByZXR1cm4gZmluYWxEZXN0LnVuc2FmZUdldCgpOworICAgIHJl
dHVybiBmaW5hbERlc3QuZ2V0KCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBDb25kaXRpb25hbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0z
OTgzLDcgKzM5ODMsNyBAQCBSZWdpc3RlcklEKiBDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogCiAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9leHByMi0+ZW5kT2Zmc2V0KCkgKyAxKTsKIAotICAg
IHJldHVybiBuZXdEc3QudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIG5ld0RzdC5nZXQoKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlYWRNb2RpZnlSZXNvbHZlTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDI3NCw3ICs0Mjc0LDcg
QEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBpZiAoaXNSZWFkT25seSkgewogICAgICAg
ICBib29sIHRocmV3RXhjZXB0aW9uID0gZ2VuZXJhdG9yLmVtaXRSZWFkT25seUV4Y2VwdGlvbklm
TmVlZGVkKHZhcik7CiAgICAgICAgIGlmICh0aHJld0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQudW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmdldCgp
OwogICAgIH0KICAgICBSZWdpc3RlcklEKiByZXR1cm5SZXN1bHQgPSByZXN1bHQuZ2V0KCk7CiAg
ICAgaWYgKCFpc1JlYWRPbmx5KSB7CkBAIC00MzE2LDcgKzQzMTYsNyBAQCBSZWdpc3RlcklEKiBS
ZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1p
dFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFs
dWUpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQudW5zYWZlR2V0KCk7CisgICAgcmV0
dXJuIHJldC5nZXQoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNo
b3J0Q2lyY3VpdFJlYWRNb2RpZnlEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDQ3ZjJiN2U3
ODk0Mi4uMzJkNWY5MjUxMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgdW5zaWduZWQgR3JhcGg6OnN0YWNrUG9pbnRlck9mZnNl
dCgpCiB1bnNpZ25lZCBHcmFwaDo6cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpCiB7CiAg
ICAgdW5zaWduZWQgY291bnQgPSBKSVQ6OmZyYW1lUmVnaXN0ZXJDb3VudEZvcihtX3Byb2ZpbGVk
QmxvY2spOwotICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lU2V0OjppdGVyYXRvciBpdGVyID0gbV9w
bGFuLmlubGluZUNhbGxGcmFtZXMoKS51bnNhZmVHZXQoKS0+YmVnaW4oKTsgISFpdGVyOyArK2l0
ZXIpIHsKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZVNldDo6aXRlcmF0b3IgaXRlciA9IG1fcGxh
bi5pbmxpbmVDYWxsRnJhbWVzKCktPmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CiAgICAgICAg
IElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gKml0ZXI7CiAgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRDb3VudCA9IFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgKyAxICsgSklU
OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZDYwZWMzMjg3MjVkLi41Y2Y5
ZGY4ZjYwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1bGF0aXZl
SklUKEdyYXBoJiBkZmcpCiAgICAgLCBtX2NvbXBpbGVPa2F5KHRydWUpCiAgICAgLCBtX3N0YXRl
KG1fZ3JhcGgpCiAgICAgLCBtX2ludGVycHJldGVyKG1fZ3JhcGgsIG1fc3RhdGUpCi0gICAgLCBt
X21pbmlmaWVkR3JhcGgoJmppdENvZGUoKS51bnNhZmVHZXQoKS0+bWluaWZpZWRERkcpCisgICAg
LCBtX21pbmlmaWVkR3JhcGgoJmppdENvZGUoKS0+bWluaWZpZWRERkcpCiB7CiB9CiAKQEAgLTIz
ODMsOCArMjM4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtPU1JFbnRyaWVzKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpCiAgICAgICAgIFdURjo6ZGF0YUZpbGUoKS5hdG9taWNhbGx5KFsm
XShhdXRvJiBvdXQpIHsKICAgICAgICAgICAgIER1bXBDb250ZXh0IGR1bXBDb250ZXh0OwogICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJPU1IgRW50cmllczoiKTsKLSAgICAgICAgICAgIFJlZlB0ciBq
aXRDb2RlID0gdGhpcy0+aml0Q29kZSgpOwotICAgICAgICAgICAgZm9yIChPU1JFbnRyeURhdGEm
IGVudHJ5RGF0YSA6IGppdENvZGUtPm1fb3NyRW50cnkpCisgICAgICAgICAgICBmb3IgKE9TUkVu
dHJ5RGF0YSYgZW50cnlEYXRhIDogaml0Q29kZSgpLT5tX29zckVudHJ5KQogICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbigiICAgICIsIGluQ29udGV4dChlbnRyeURhdGEsICZkdW1wQ29udGV4dCkp
OwogICAgICAgICAgICAgaWYgKCFkdW1wQ29udGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgZHVtcENvbnRleHQuZHVtcChvdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5kZXggNzU0ZmI5NWE1N2YwLi5jNDc3NjJkNzA4
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBo
YXNlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCi0gICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lU2V0OjppdGVyYXRvciBpdGVyID0g
bV9ncmFwaC5tX3BsYW4uaW5saW5lQ2FsbEZyYW1lcygpLnVuc2FmZUdldCgpLT5iZWdpbigpOyAh
IWl0ZXI7ICsraXRlcikgeworICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZVNldDo6aXRlcmF0
b3IgaXRlciA9IG1fZ3JhcGgubV9wbGFuLmlubGluZUNhbGxGcmFtZXMoKS0+YmVnaW4oKTsgISFp
dGVyOyArK2l0ZXIpIHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gKml0ZXI7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzVmFyYXJncygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IGIxY2U4Mzg3NWVhZS4uZmFkN2Y1ZjE5NDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9y
LmNwcApAQCAtNjM5LDggKzYzOSw4IEBAIHZvaWQgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0LCBJbmRlbnRlciBpbmRlbnQsIFdURjo6RnVuY3Rpb248CiAKICAgICAg
ICAgICAgICAgICAgICAgSklUVHlwZSBqaXRUeXBlID0gY29kZUJsb2NrLT5qaXRUeXBlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChqaXRUeXBlICE9IEpJVFR5cGU6OkZUTEpJVCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChpbmRlbnQsICJqaXRDb2RlOiAi
LCBSYXdQb2ludGVyKGppdENvZGUuZ2V0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgSklU
Q29kZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLmdldCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0LnByaW50KGluZGVudCwgImppdENvZGU6ICIsIFJhd1BvaW50ZXIoaml0
Q29kZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzdGFydCAiLCBSYXdQb2ludGVy
KGppdENvZGUtPnN0YXJ0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZW5kICIs
IFJhd1BvaW50ZXIoaml0Q29kZS0+ZW5kKCkpLCAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCmluZGV4
IDk3NWUyMDFlNWY3ZS4uYTYzMzZjYTExNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIHN5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxv
b2tVcFByaXZhdGVOYW1lKGJ1ZmZlcik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzeW1i
b2wpOwogICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN5bWJvbDsKLSAgICAgICAgICAgIFN0cmlu
Z0ltcGwqIGltcGwgPSBzdHIucmVsZWFzZUltcGwoKS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAg
IFN0cmluZ0ltcGwqIGltcGwgPSBzdHIucmVsZWFzZUltcGwoKS5nZXQoKTsKICAgICAgICAgICAg
IEFTU0VSVChpbXBsLT5pc1N5bWJvbCgpKTsKICAgICAgICAgICAgIGlmIChtX2lzV2VsbEtub3du
U3ltYm9sKQogICAgICAgICAgICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCo+
KGltcGwpLT5pc1ByaXZhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggMjRmN2MxYmY5ZTBjLi5hZGJmZmVlODMw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZl
clZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoKQogICAgIH0KICAgICBoZWFwLT5hZGRSZWZl
cmVuY2UodGhpcywgYnVmZmVyLmdldCgpKTsKIAotICAgIHJldHVybiBidWZmZXIudW5zYWZlR2V0
KCk7CisgICAgcmV0dXJuIGJ1ZmZlci5nZXQoKTsKIH0KIAogLy8gQWxsb2NhdGVzIHRoZSBmdWxs
LW9uIG5hdGl2ZSBidWZmZXIgYW5kIG1vdmVzIGRhdGEgaW50byB0aGUgQyBoZWFwIGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAppbmRleCAyY2Q0NzJkZjUz
NGQuLjQyYmIxZDhlOGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1ZNSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNw
ZWN0b3IuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgYXV0byBWTUluc3BlY3Rvcjo6Y29kZUJsb2Nr
Rm9yTWFjaGluZVBDKHZvaWQqIG1hY2hpbmVQQykgLT4gRXhwZWN0ZWQ8Q29kZUJsb2NrKiwKIAog
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRMb2NrLCBjb2RlQmxvY2tTZXRMb2NrIH07CiAg
ICAgICAgIHZtLmhlYXAuZm9yRWFjaENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnMobG9ja2VyLCBb
Jl0gKENvZGVCbG9jayogY2IpIHsKLSAgICAgICAgICAgIFJlZlB0ciBqaXRDb2RlID0gY2ItPmpp
dENvZGUoKTsKKyAgICAgICAgICAgIEpJVENvZGUqIGppdENvZGUgPSBjYi0+aml0Q29kZSgpLmdl
dCgpOwogICAgICAgICAgICAgaWYgKCFqaXRDb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhlIGNvZGVCbG9jayBpcyBhIHJlcGxhY2VtZW50IGNvZGVCbG9jayB3aGljaCBpcyBpbiB0aGUg
cHJvY2VzcyBvZiBiZWluZwogICAgICAgICAgICAgICAgIC8vIGNvbXBpbGVkLCBpdHMgaml0Q29k
ZSB3aWxsIGJlIG51bGwsIGFuZCB3ZSBjYW4gZGlzcmVnYXJkIGl0IGFzIGEgbWF0Y2ggZm9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0
ci5oCmluZGV4IDkyNjBlN2FiYjk2OS4uZTg5ODJkZmRiNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMjUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02MCwxNSArNjAsMTQg
QEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lOTElORSB+UmVmUHRyKCkgeyBSZWZEZXJlZlRyYWl0
czo6ZGVyZWZJZk5vdE51bGwoUHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9
CiAKLSAgICBUKiBnZXQoKSBjb25zdCBMSUZFVElNRV9CT1VORCB7IHJldHVybiBQdHJUcmFpdHM6
OnVud3JhcChtX3B0cik7IH0KLSAgICBUKiB1bnNhZmVHZXQoKSBjb25zdCB7IHJldHVybiBQdHJU
cmFpdHM6OnVud3JhcChtX3B0cik7IH0gLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBnZXQoKSB0aGVu
IHJlbW92ZS4KKyAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcCht
X3B0cik7IH0KIAogICAgIFJlZjxUPiByZWxlYXNlTm9uTnVsbCgpIHsgQVNTRVJUKG1fcHRyKTsg
UmVmPFQ+IHRtcChhZG9wdFJlZigqbV9wdHIpKTsgbV9wdHIgPSBudWxscHRyOyByZXR1cm4gdG1w
OyB9CiAKICAgICBUKiBsZWFrUmVmKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCi0gICAgVCYgb3Bl
cmF0b3IqKCkgY29uc3QgTElGRVRJTUVfQk9VTkQgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gKlB0
clRyYWl0czo6dW53cmFwKG1fcHRyKTsgfQotICAgIEFMV0FZU19JTkxJTkUgVCogb3BlcmF0b3It
PigpIGNvbnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIFB0clRyYWl0czo6dW53cmFwKG1fcHRy
KTsgfQorICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICpQ
dHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQqIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KIAogICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcHRyOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCA2MzRiY2U4MGUx
OWMuLjBlZDZkMjc0YWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7
IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSgpIGNvbnN0IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLnVuc2Fm
ZUdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0
IExJRkVUSU1FX0JPVU5EIHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAgICAgdm9p
ZCBzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuY3BwCmluZGV4IGZiMjBmODM1OWNlYS4uMTM5MGNjNTk1
OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuY3Bw
CkBAIC0zNDYsMTMgKzM0NiwxMyBAQCBBWENvcmVPYmplY3QqIEFYQ29yZU9iamVjdDo6Zmlyc3RV
bmlnbm9yZWRDaGlsZCgpCiAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBjaGlsZHJlbkluY2x1
ZGluZ0lnbm9yZWQoLyogdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCAqLyB0cnVlKTsKICAgICBSZWZQ
dHIgZGVzY2VuZGFudCA9IGNoaWxkcmVuLnNpemUoKSA/IGNoaWxkcmVuWzBdLnB0cigpIDogbnVs
bHB0cjsKICAgICBpZiAob25seUFkZHNVbmlnbm9yZWRDaGlsZHJlbigpKQotICAgICAgICByZXR1
cm4gZGVzY2VuZGFudC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIGRlc2NlbmRhbnQuZ2V0
KCk7CiAKICAgICBib29sIGlzRXhwb3NlZFRhYmxlID0gaXNFeHBvc2FibGVUYWJsZSgpOwogICAg
IHdoaWxlIChkZXNjZW5kYW50ICYmIGRlc2NlbmRhbnQgIT0gdGhpcykgewogICAgICAgICBib29s
IGNoaWxkSXNWYWxpZCA9ICFpc0V4cG9zZWRUYWJsZSB8fCBpc1ZhbGlkQ2hpbGRGb3JUYWJsZSgq
ZGVzY2VuZGFudCk7CiAgICAgICAgIGlmIChjaGlsZElzVmFsaWQgJiYgIWRlc2NlbmRhbnQtPmlz
SWdub3JlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGRlc2NlbmRhbnQudW5zYWZlR2V0KCk7Cisg
ICAgICAgICAgICByZXR1cm4gZGVzY2VuZGFudC5nZXQoKTsKICAgICAgICAgZGVzY2VuZGFudCA9
IGRlc2NlbmRhbnQtPm5leHRJblByZU9yZGVyKC8qIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgKi8g
dHJ1ZSwgLyogc3RheVdpdGhpbiAqLyB0aGlzKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0zOTAsNyArMzkwLDcgQEAgQVhDb3JlT2JqZWN0KiBBWENvcmVPYmplY3Q6OmNyb3NzRnJh
bWVQYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdAogICAgIH0KICNlbmRpZgogCi0gICAgcmV0
dXJuIHJlc3VsdC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0LmdldCgpOwogfQogCiBB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWENvcmVPYmplY3Q6OmNy
b3NzRnJhbWVDaGlsZHJlbkluY2x1ZGluZ0lnbm9yZWQoYm9vbCB1cGRhdGVDaGlsZHJlbklmTmVl
ZGVkKQpAQCAtNDMxLDcgKzQzMSw3IEBAIEFYQ29yZU9iamVjdCogQVhDb3JlT2JqZWN0OjpwYXJl
bnRPYmplY3RJbmNsdWRpbmdDcm9zc0ZyYW1lKCkgY29uc3QKICAgICB9CiAjZW5kaWYKIAotICAg
IHJldHVybiByZXN1bHQudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKIH0K
IAogCkBAIC00ODAsNyArNDgwLDcgQEAgQVhDb3JlT2JqZWN0KiBBWENvcmVPYmplY3Q6Om5leHRJ
blByZU9yZGVyKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCAsIEFYQ29yZU8KICAgICAgICAg
aWYgKCFjdXJyZW50IHx8IHN0YXlXaXRoaW4gPT0gY3VycmVudCkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gbmV4dC51bnNhZmVHZXQoKTsKKyAgICByZXR1
cm4gbmV4dC5nZXQoKTsKIH0KIAogQVhDb3JlT2JqZWN0KiBBWENvcmVPYmplY3Q6OnByZXZpb3Vz
SW5QcmVPcmRlcihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQsIEFYQ29yZU9iamVjdCogc3Rh
eVdpdGhpbikKQEAgLTQ5Miw3ICs0OTIsNyBAQCBBWENvcmVPYmplY3QqIEFYQ29yZU9iamVjdDo6
cHJldmlvdXNJblByZU9yZGVyKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCwgQVhDbwogICAg
ICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IHNpYmxpbmctPmNoaWxkcmVuSW5jbHVkaW5nSWdu
b3JlZCh1cGRhdGVDaGlsZHJlbklmTmVlZGVkKTsKICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUo
KSkKICAgICAgICAgICAgIHJldHVybiBzaWJsaW5nLT5kZWVwZXN0TGFzdENoaWxkSW5jbHVkaW5n
SWdub3JlZCh1cGRhdGVDaGlsZHJlbklmTmVlZGVkKTsKLSAgICAgICAgcmV0dXJuIHNpYmxpbmcu
dW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiBzaWJsaW5nLmdldCgpOwogICAgIH0KICAgICBy
ZXR1cm4gcGFyZW50T2JqZWN0KCk7CiB9CkBAIC01ODMsOCArNTgzLDggQEAgQVhDb3JlT2JqZWN0
KiBBWENvcmVPYmplY3Q6Om5leHRTaWJsaW5nSW5jbHVkaW5nSWdub3JlZE9yUGFyZW50KCkgY29u
c3QKIHsKICAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CiAgICAgaWYgKFJlZlB0
ciBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nSW5jbHVkaW5nSWdub3JlZCgvKiB1cGRhdGVDaGls
ZHJlbklmTmVlZGVkICovIHRydWUpKQotICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcudW5zYWZl
R2V0KCk7Ci0gICAgcmV0dXJuIHBhcmVudC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIG5l
eHRTaWJsaW5nLmdldCgpOworICAgIHJldHVybiBwYXJlbnQuZ2V0KCk7CiB9CiAKIFN0cmluZyBB
WENvcmVPYmplY3Q6OmF1dG9Db21wbGV0ZVZhbHVlKCkgY29uc3QKQEAgLTE3OTUsNyArMTc5NSw3
IEBAIEFYQ29yZU9iamVjdCogQVhDb3JlT2JqZWN0OjpwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBj
b25zdAogewogICAgIGlmIChyb2xlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvdykgewogICAg
ICAgICBpZiAoUmVmUHRyIHRhYmxlID0gZXhwb3NlZFRhYmxlQW5jZXN0b3IoKSkKLSAgICAgICAg
ICAgIHJldHVybiB0YWJsZS51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIHJldHVybiB0YWJsZS5n
ZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFY
Q29yZU9iamVjdD4oKnRoaXMsIGZhbHNlLCBbJl0gKGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCA4
NTBlOWI4ZDg3ODUuLjIwOTFmM2Y1ZTVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYQ29yZU9iamVjdC5oCkBAIC0xNDM5LDcgKzE0MzksNyBAQCBUKiBjcm9zc0ZyYW1lRmlu
ZEFuY2VzdG9yKGNvbnN0IFQmIG9iamVjdCwgYm9vbCBpbmNsdWRlU2VsZiwgY29uc3QgTWF0Y2hG
dW5jdGlvbgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKG1hdGNo
ZXMoKmN1cnJlbnQpKQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQudW5zYWZlR2V0KCk7Cisg
ICAgICAgICAgICByZXR1cm4gY3VycmVudC5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CkBAIC0xNDU4LDcgKzE0NTgsNyBAQCBUKiBmaW5kQW5jZXN0b3IoY29uc3QgVCYgb2Jq
ZWN0LCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBNYXRjaEZ1bmN0aW9uVCYgbWF0Y2hlcwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKG1hdGNoZXMoKmN1cnJlbnQp
KQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQudW5zYWZlR2V0KCk7CisgICAgICAgICAgICBy
ZXR1cm4gY3VycmVudC5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0x
NTEyLDcgKzE1MTIsNyBAQCBUKiBjbGlja2FibGVTZWxmT3JBbmNlc3Rvcihjb25zdCBUJiBzdGFy
dE9iamVjdCwgY29uc3QgRiYgc2hvdWxkU3RvcCkKICAgICAvLyBQcmVzZW50YXRpb25hbCBvYmpl
Y3RzIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBiZSBjbGlja2VkLgogICAgIGlmIChhbmNlc3Rv
ciAmJiBhbmNlc3Rvci0+cm9sZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQcmVzZW50YXRpb25h
bCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFuY2VzdG9yLnVuc2FmZUdl
dCgpOworICAgIHJldHVybiBhbmNlc3Rvci5nZXQoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KQEAgLTE1MzksNyArMTUzOSw3IEBAIFQqIGhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yKFQmIHN0
YXJ0T2JqZWN0KQogICAgICAgICBwcmV2aW91c0VkaXRhYmxlQW5jZXN0b3IgPSBlZGl0YWJsZUFu
Y2VzdG9yOwogICAgICAgICBlZGl0YWJsZUFuY2VzdG9yID0gZWRpdGFibGVBbmNlc3Rvci0+ZWRp
dGFibGVBbmNlc3RvcigpOwogICAgIH0KLSAgICByZXR1cm4gcHJldmlvdXNFZGl0YWJsZUFuY2Vz
dG9yLnVuc2FmZUdldCgpOworICAgIHJldHVybiBwcmV2aW91c0VkaXRhYmxlQW5jZXN0b3IuZ2V0
KCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBUKiBm
aW5kUmVsYXRlZE9iamVjdEluQW5jZXN0cnkoY29uc3QgVCYgb2JqZWN0LCBBWFJlbGF0aW9uIHJl
bGF0aW9uLCBjb25zdCBUJiBkZQogICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWRPYmplY3QuZ2V0
KCkgPT0gJmFuY2VzdG9yOwogICAgICAgICB9KTsKICAgICAgICAgaWYgKGFuY2VzdG9yKQotICAg
ICAgICAgICAgcmV0dXJuIGFuY2VzdG9yLnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJu
IGFuY2VzdG9yLmdldCgpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTE1ODAs
NyArMTU4MCw3IEBAIEFYQ29yZU9iamVjdCogZmluZFVuaWdub3JlZERlc2NlbmRhbnQoVCYgb2Jq
ZWN0LCBib29sIGluY2x1ZGVTZWxmLCBjb25zdCBGJiBtYXRjCiAKICAgICBmb3IgKFJlZiBjaGls
ZCA6IG9iamVjdC5jaGlsZHJlbkluY2x1ZGluZ0lnbm9yZWQoKSkgewogICAgICAgICBpZiAoUmVm
UHRyIGRlc2NlbmRhbnQgPSBmaW5kVW5pZ25vcmVkRGVzY2VuZGFudChjaGlsZC5nZXQoKSwgLyog
aW5jbHVkZVNlbGYgKi8gdHJ1ZSwgbWF0Y2hlcykpCi0gICAgICAgICAgICByZXR1cm4gZGVzY2Vu
ZGFudC51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBkZXNjZW5kYW50LmdldCgpOwog
ICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDc5N2VmYzRmMTllMC4uODQzNGM4NGI4MDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUN1cnJlbnRNb2Rh
bE5vZGUoKQogICAgICAgICAvLyBQaWNrIHRoZSBkb2N1bWVudCBhY3RpdmUgbW9kYWwgPGRpYWxv
Zz4gZWxlbWVudCBpZiBpdCBleGlzdHMuCiAgICAgICAgIGlmIChSZWZQdHIgYWN0aXZlTW9kYWxE
aWFsb2cgPSBkb2N1bWVudC0+YWN0aXZlTW9kYWxEaWFsb2coKSkgewogICAgICAgICAgICAgQVNT
RVJUKG1fbW9kYWxFbGVtZW50cy5jb250YWlucyhhY3RpdmVNb2RhbERpYWxvZy5nZXQoKSkpOwot
ICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZU1vZGFsRGlhbG9nLnVuc2FmZUdldCgpOworICAgICAg
ICAgICAgcmV0dXJuIGFjdGl2ZU1vZGFsRGlhbG9nLmdldCgpOwogICAgICAgICB9CiAKICAgICAg
ICAgU2V0Rm9yU2NvcGUgcmV0cmlldmluZ0N1cnJlbnRNb2RhbE5vZGUobV9pc1JldHJpZXZpbmdD
dXJyZW50TW9kYWxOb2RlLCB0cnVlKTsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnVwZGF0ZUN1cnJlbnRNb2RhbE5vZGUoKQogICAgICAgICBSZWZQdHIgb2JqZWN0ID0g
Z2V0T3JDcmVhdGUobW9kYWxFbGVtZW50VG9SZXR1cm4uZ2V0KCkpOwogICAgICAgICBpZiAoIW9i
amVjdCB8fCBvYmplY3QtPmlzQVhIaWRkZW4oKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICByZXR1cm4gbW9kYWxFbGVtZW50VG9SZXR1cm4udW5zYWZlR2V0KCk7CisgICAg
ICAgIHJldHVybiBtb2RhbEVsZW1lbnRUb1JldHVybi5nZXQoKTsKICAgICB9OwogCiAgICAgUmVm
UHRyIHByZXZpb3VzTW9kYWwgPSBtX2N1cnJlbnRNb2RhbEVsZW1lbnQuZ2V0KCk7CkBAIC01ODcs
NyArNTg3LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZE9i
amVjdEZvck5vZGUoTm9kZSogZm9jdXNlZE5vZGUpCiAKICAgICBpZiAoZm9jdXMtPmlzSWdub3Jl
ZCgpKQogICAgICAgICByZXR1cm4gZm9jdXMtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAg
IHJldHVybiBmb2N1cy51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gZm9jdXMuZ2V0KCk7CiB9CiAK
ICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQpAQCAtNjk5LDcgKzY5OSw3
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmV4cG9ydGVkR2V0T3JDcmVh
dGUoTm9kZSYgbm9kZSkKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9y
Q3JlYXRlKFdpZGdldCYgd2lkZ2V0KQogewogICAgIGlmIChSZWZQdHIgb2JqZWN0ID0gZ2V0KHdp
ZGdldCkpCi0gICAgICAgIHJldHVybiBvYmplY3QudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVy
biBvYmplY3QuZ2V0KCk7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbmV3T2Jq
ZWN0OwogICAgIGlmIChhdXRvKiBzY3JvbGxWaWV3ID0gZHluYW1pY0Rvd25jYXN0PFNjcm9sbFZp
ZXc+KHdpZGdldCkpCkBAIC03MTYsNyArNzE2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhP
YmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoV2lkZ2V0JiB3aWRnZXQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgY2FjaGVBbmRJbml0aWFsaXplV3JhcHBlcigqbmV3T2JqZWN0LCAmd2lk
Z2V0KTsKLSAgICByZXR1cm4gbmV3T2JqZWN0LnVuc2FmZUdldCgpOworICAgIHJldHVybiBuZXdP
YmplY3QuZ2V0KCk7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlU2xvdyhOb2RlJiBub2RlLCBJc1BhcnRPZlJlbGF0aW9uIGlzUGFydE9mUmVsYXRp
b24pCkBAIC03NTksNyArNzU5LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGVTbG93KE5vZGUmIG5vZGUsIElzUGFydE9mUmVsYXRpb24KICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBvYmplY3QgPSBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6
Y3JlYXRlKEFYSUQ6OmdlbmVyYXRlKCksIGRvd25jYXN0PEhUTUxFbGVtZW50Pihub2RlKSwgKnRo
aXMpOwogICAgICAgICBjYWNoZUFuZEluaXRpYWxpemVXcmFwcGVyKCpvYmplY3QsICZub2RlKTsK
LSAgICAgICAgcmV0dXJuIG9iamVjdC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIG9iamVj
dC5nZXQoKTsKICAgICB9CiAKICAgICBib29sIGluQ2FudmFzU3VidHJlZSA9IGxpbmVhZ2VPZlR5
cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCpjb21wb3NlZFBhcmVudCkuZmlyc3QoKTsKQEAgLTc4OCw3
ICs3ODgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0
ZVNsb3coTm9kZSYgbm9kZSwgSXNQYXJ0T2ZSZWxhdGlvbgogCiAgICAgLy8gVGhlIG9iamVjdCBt
YXkgaGF2ZSBhbHJlYWR5IGJlZW4gY3JlYXRlZCBkdXJpbmcgcmVsYXRpb25zIHVwZGF0ZS4KICAg
ICBpZiAoUmVmUHRyIG9iamVjdCA9IGdldChub2RlKSkKLSAgICAgICAgcmV0dXJuIG9iamVjdC51
bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5nZXQoKTsKIAogICAgIC8vIEZhbGxi
YWNrIGNvbnRlbnQgaXMgb25seSBmb2N1c2FibGUgYXMgbG9uZyBhcyB0aGUgY2FudmFzIGlzIGRp
c3BsYXllZCBhbmQgdmlzaWJsZS4KICAgICAvLyBVcGRhdGUgdGhlIHN0eWxlIGJlZm9yZSBFbGVt
ZW50Ojppc0ZvY3VzYWJsZSgpIGdldHMgY2FsbGVkLgpAQCAtODA2LDcgKzgwNiw3IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlU2xvdyhOb2RlJiBub2Rl
LCBJc1BhcnRPZlJlbGF0aW9uCiAgICAgLy8gaXQgd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGlzIGZ1
bmN0aW9uIGlzIGZpbmlzaGVkLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCiAgICAgaWYg
KG5ld09iamVjdC0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gbmV3T2JqZWN0LnVuc2FmZUdldCgpOworICAgIHJldHVybiBuZXdPYmplY3QuZ2V0KCk7
CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFJl
bmRlck9iamVjdCYgcmVuZGVyZXIpCkBAIC04MTUsNyArODE1LDcgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0JiByZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIGdldE9yQ3JlYXRlKHJlbmRlcmVyLm5vZGUoKSk7CiAKICAgICBpZiAo
UmVmUHRyIG9iamVjdCA9IGdldChyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBvYmplY3QudW5z
YWZlR2V0KCk7CisgICAgICAgIHJldHVybiBvYmplY3QuZ2V0KCk7CiAKICAgICAvLyBEb24ndCBj
cmVhdGUgYW4gb2JqZWN0IGZvciB0aGlzIHJlbmRlcmVyIGlmIGl0J3MgYmVpbmcgZGVzdHJveWVk
LgogICAgIGlmIChyZW5kZXJlci5iZWluZ0Rlc3Ryb3llZCgpKQpAQCAtOTU4LDcgKzk1OCw3IEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNhY2hlQW5kSW5pdGlh
bGl6ZVdyYXBwZXIoKm9iamVjdCk7Ci0gICAgcmV0dXJuIG9iamVjdC51bnNhZmVHZXQoKTsKKyAg
ICByZXR1cm4gb2JqZWN0LmdldCgpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShB
WElEIGF4SUQpCkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9i
amVjdENhY2hlOjpnZXRJbmNsdWRpbmdBbmNlc3RvcnMoUmVuZGVyT2JqZWN0JiByZW5kZXJlcgog
ewogICAgIGZvciAoQ2hlY2tlZFB0ciBjdXJyZW50ID0gJnJlbmRlcmVyOyBjdXJyZW50OyBjdXJy
ZW50ID0gY3VycmVudC0+cGFyZW50KCkpIHsKICAgICAgICAgaWYgKFJlZlB0ciBvYmplY3QgPSBn
ZXQoKmN1cnJlbnQpKQotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC51bnNhZmVHZXQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBvYmplY3QuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwogfQpAQCAtNDA5OCw3ICs0MDk4LDcgQEAgc3RhdGljIE5vZGUqIHBhcmVudEVkaXRpbmdCb3Vu
ZGFyeShOb2RlKiBub2RlKQogICAgIHdoaWxlIChib3VuZGFyeSAhPSBkb2N1bWVudEVsZW1lbnQg
JiYgYm91bmRhcnktPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIG5vZGUtPmhhc0Vk
aXRhYmxlU3R5bGUoKSA9PSBib3VuZGFyeS0+cGFyZW50Tm9kZSgpLT5oYXNFZGl0YWJsZVN0eWxl
KCkpCiAgICAgICAgIGJvdW5kYXJ5ID0gYm91bmRhcnktPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50
Tm9kZSgpOwogCi0gICAgcmV0dXJuIGJvdW5kYXJ5LnVuc2FmZUdldCgpOworICAgIHJldHVybiBi
b3VuZGFyeS5nZXQoKTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRC
b3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgQm91bmRhcnlT
ZWFyY2hGdW5jdGlvbiBzZWFyY2hGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZUlubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZUlubGluZXMuaAppbmRleCAwMGQ2Y2MzMjA4M2UuLjRi
MTVkOTI3MzY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZUlubGluZXMuaApAQCAtNzIsMTQgKzcyLDE0IEBAIGlubGluZSBOb2RlKiBBWE9i
amVjdENhY2hlOjpub2RlRm9ySUQoc3RkOjpvcHRpb25hbDxBWElEPiBheElEKSBjb25zdAogaW5s
aW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKE5vZGUm
IG5vZGUsIElzUGFydE9mUmVsYXRpb24gaXNQYXJ0T2ZSZWxhdGlvbikKIHsKICAgICBpZiAoUmVm
UHRyIG9iamVjdCA9IGdldChub2RlKSkKLSAgICAgICAgcmV0dXJuIG9iamVjdC51bnNhZmVHZXQo
KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5nZXQoKTsKICAgICByZXR1cm4gZ2V0T3JDcmVhdGVT
bG93KG5vZGUsIGlzUGFydE9mUmVsYXRpb24pOwogfQogCiBpbmxpbmUgQWNjZXNzaWJpbGl0eU9i
amVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoRWxlbWVudCYgZWxlbWVudCwgSXNQYXJ0
T2ZSZWxhdGlvbiBpc1BhcnRPZlJlbGF0aW9uKQogewogICAgIGlmIChSZWZQdHIgb2JqZWN0ID0g
Z2V0KGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gb2JqZWN0LnVuc2FmZUdldCgpOworICAgICAg
ICByZXR1cm4gb2JqZWN0LmdldCgpOwogICAgIHJldHVybiBnZXRPckNyZWF0ZVNsb3coZWxlbWVu
dCwgaXNQYXJ0T2ZSZWxhdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhUZXh0TWFya2VyLmNwcAppbmRleCA2NTJmZTU2ZTQ3YjEuLjcwMGQwNDFlM2IwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApAQCAtMTY0
OSw3ICsxNjQ5LDcgQEAgQVhJc29sYXRlZE9iamVjdCogZmluZE9iamVjdFdpdGhSdW5zKEFYSXNv
bGF0ZWRPYmplY3QmIHN0YXJ0LCBBWERpcmVjdGlvbiBkaXJlY3QKICAgICAgICAgICAgIGV4aXRP
YmplY3QoKmN1cnJlbnQpOwogICAgICAgICAgICAgY3VycmVudCA9IG5leHRJblByZU9yZGVyKCpj
dXJyZW50KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gY3VycmVudC51bnNhZmVHZXQoKTsK
KyAgICAgICAgcmV0dXJuIGN1cnJlbnQuZ2V0KCk7CiAgICAgfQogICAgIEFTU0VSVChkaXJlY3Rp
b24gPT0gQVhEaXJlY3Rpb246OlByZXZpb3VzKTsKIApAQCAtMTY3NSw3ICsxNjc1LDcgQEAgQVhJ
c29sYXRlZE9iamVjdCogZmluZE9iamVjdFdpdGhSdW5zKEFYSXNvbGF0ZWRPYmplY3QmIHN0YXJ0
LCBBWERpcmVjdGlvbiBkaXJlY3QKICAgICAgICAgZXhpdE9iamVjdCgqY3VycmVudCk7CiAgICAg
ICAgIGN1cnJlbnQgPSBwcmV2aW91c0luUHJlT3JkZXIoKmN1cnJlbnQpOwogICAgIH0KLSAgICBy
ZXR1cm4gY3VycmVudC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gY3VycmVudC5nZXQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgQWNjZXNzaWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVXRpbGl0aWVzLmNwcAppbmRleCA0ZjI2MjAxNzRiY2EuLjc4ZDExNTNhZjZkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFV0aWxpdGllcy5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgQ29udGFpbmVyTm9kZSogY29tcG9zZWRQYXJlbnRJZ25vcmluZ0RvY3VtZW50
RnJhZ21lbnRzKGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgUmVmUHRyIGFuY2VzdG9yID0gbm9kZS5w
YXJlbnRJbkNvbXBvc2VkVHJlZSgpOwogICAgIHdoaWxlIChpczxEb2N1bWVudEZyYWdtZW50Pihh
bmNlc3Rvci5nZXQoKSkpCiAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEluQ29t
cG9zZWRUcmVlKCk7Ci0gICAgcmV0dXJuIGFuY2VzdG9yLnVuc2FmZUdldCgpOworICAgIHJldHVy
biBhbmNlc3Rvci5nZXQoKTsKIH0KIAogQ29udGFpbmVyTm9kZSogY29tcG9zZWRQYXJlbnRJZ25v
cmluZ0RvY3VtZW50RnJhZ21lbnRzKGNvbnN0IE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmlu
ZGV4IGVjNGI5MTU3NmRkOS4uNjlmOGU5YmMyZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTgy
LDcgKzE4Miw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpmaXJzdENoaWxkKCkgY29uc3QKICAgICAgICAgY3VycmVudENoaWxkID0gY3VycmVudENoaWxk
LT5uZXh0U2libGluZygpOwogICAgICAgICBheEN1cnJlbnRDaGlsZCA9IGNhY2hlLT5nZXRPckNy
ZWF0ZShjdXJyZW50Q2hpbGQuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gYXhDdXJyZW50Q2hp
bGQudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGF4Q3VycmVudENoaWxkLmdldCgpOwogfQogCiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bGFzdENoaWxkKCkg
Y29uc3QKQEAgLTI0Nyw3ICsyNDcsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICB9CiAKICAgICBpZiAoUmVm
UHRyIG93bmVyUGFyZW50ID0gb3duZXJQYXJlbnRPYmplY3QoKSkgW1t1bmxpa2VseV1dCi0gICAg
ICAgIHJldHVybiBvd25lclBhcmVudC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIG93bmVy
UGFyZW50LmdldCgpOwogCiAjaWYgVVNFKEFUU1BJKQogICAgIC8vIEZJWE1FOiBDb25zaWRlciBy
ZW1vdmluZyB0aGlzIEFUU1BJLW9ubHkgYnJhbmNoIHdpdGggaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4MjExNy4KQEAgLTE0MjgsNyArMTQyOCw3IEBAIEVsZW1lbnQq
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoUmVmUHRyIGFyZWFFbGVtZW50ID0gZHluYW1pY0Rv
d25jYXN0PEhUTUxBcmVhRWxlbWVudD4oKm5vZGUpKQotICAgICAgICByZXR1cm4gYXJlYUVsZW1l
bnQudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiBhcmVhRWxlbWVudC5nZXQoKTsKIAogICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUp
CkBAIC0xNDM4LDcgKzE0MzgsNyBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAgICAgLy8gTk9URTogdGhpcyBhc3N1bWVzIHRoYXQgYW55
IG5vbi1pbWFnZSB3aXRoIGFuIGFuY2hvciBpcyBhbiBIVE1MQW5jaG9yRWxlbWVudAogICAgIGZv
ciAoIDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAoaXM8
SFRNTEFuY2hvckVsZW1lbnQ+KCpub2RlKSB8fCAobm9kZS0+cmVuZGVyZXIoKSAmJiBjYWNoZS0+
Z2V0T3JDcmVhdGUoKm5vZGUpLT5pc0xpbmsoKSkpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4obm9kZSkudW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4obm9kZSkuZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNTM4LDEwICsxNTM4LDEwIEBAIHN0YXRpYyBFbGVtZW50KiBuYXRpdmVBY3Rpb25FbGVtZW50
KE5vZGUqIHN0YXJ0KQogCiAgICAgZm9yIChSZWZQdHIgY2hpbGQgPSBzdGFydC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
UmVmUHRyIGVsZW1lbnQgPSBub2RlQWN0aW9uRWxlbWVudCgqY2hpbGQpKQotICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQudW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5n
ZXQoKTsKIAogICAgICAgICBpZiAoUmVmUHRyIHN1YkNoaWxkID0gbmF0aXZlQWN0aW9uRWxlbWVu
dChjaGlsZC5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gc3ViQ2hpbGQudW5zYWZlR2V0KCk7
CisgICAgICAgICAgICByZXR1cm4gc3ViQ2hpbGQuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBu
dWxscHRyOwogfQpAQCAtMTU1MywxMCArMTU1MywxMCBAQCBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6YWN0aW9uRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKFJlZlB0ciBlbGVtZW50ID0gbm9kZUFjdGlvbkVsZW1lbnQoKm5vZGUpKQot
ICAgICAgICByZXR1cm4gZWxlbWVudC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIGVsZW1l
bnQuZ2V0KCk7CiAKICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQoYXJp
YVJvbGVBdHRyaWJ1dGUoKSkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2Rl
KS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLmdl
dCgpOwogCiAgICAgc3dpdGNoIChyb2xlKCkpIHsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpCdXR0b246CkBAIC0xNTY5LDE0ICsxNTY5LDE0IEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjphY3Rpb25FbGVtZW50KCkgY29uc3QKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlS
b2xlOjpMaXN0SXRlbToKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGF1dGhvciBpcyBoaWRpbmcg
dGhlIHJlYWwgY29udHJvbCBlbGVtZW50IGluc2lkZSB0aGUgQVJJQSBlbGVtZW50LgogICAgICAg
ICBpZiAoUmVmUHRyIG5hdGl2ZUVsZW1lbnQgPSBuYXRpdmVBY3Rpb25FbGVtZW50KG5vZGUuZ2V0
KCkpKQotICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUVsZW1lbnQudW5zYWZlR2V0KCk7Ci0gICAg
ICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlKS51bnNhZmVHZXQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBuYXRpdmVFbGVtZW50LmdldCgpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudD4obm9kZSkuZ2V0KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCiAgICAgaWYgKFJlZlB0ciBlbGVtZW50ID0gYW5jaG9yRWxlbWVudCgpKQotICAgICAgICBy
ZXR1cm4gZWxlbWVudC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7
CiAKICAgICBpZiAoUmVmUHRyIGNsaWNrYWJsZU9iamVjdCA9IHRoaXMtPmNsaWNrYWJsZVNlbGZP
ckFuY2VzdG9yKCkpCiAgICAgICAgIHJldHVybiBjbGlja2FibGVPYmplY3QtPmVsZW1lbnQoKTsK
QEAgLTI2MjQsNyArMjYyNCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gd2UgZG9u
J3Qgd2FudCB0byBjaG9vc2UgYW5vdGhlciBhbmNlc3RvciB0YWJsZSBhcyB0aGlzIGNlbGwncyB0
YWJsZS4KICAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzVGFibGUoKSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzRXhwb3NhYmxlVGFibGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBhbmNlc3Rvci51bnNhZmVHZXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBhbmNlc3Rvci5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGFuY2VzdG9yLT5ub2RlKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CkBAIC0yNjMyLDcgKzI2MzIsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdGFibGVGcm9t
UmVuZGVyVHJlZS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIHRhYmxlRnJvbVJlbmRlclRy
ZWUuZ2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGlzVGFibGVSb3coKSkgewpAQCAtMjY0Miw3ICsy
NjQyLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnBh
cmVudFRhYmxlKCkgY29uc3QKICAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aXNUYWJsZSgpKSB7
CiAgICAgICAgICAgICAgICAgYm9vbCBpc05vbkdyaWRSb3dPclZhbGlkQXJpYVRhYmxlID0gIWlz
QVJJQUdyaWRSb3coKSB8fCBhbmNlc3Rvci0+aXNBcmlhVGFibGUoKSB8fCBlbGVtZW50TmFtZSgp
ID09IEVsZW1lbnROYW1lOjpIVE1MX3RyOwogICAgICAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+
aXNFeHBvc2FibGVUYWJsZSgpICYmIGlzTm9uR3JpZFJvd09yVmFsaWRBcmlhVGFibGUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBhbmNlc3Rvci51bnNhZmVHZXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFuY2VzdG9yLmdldCgpOwogCiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhpcyBpcyBhIG5vbi1hbm9ueW1vdXMgdGFibGUgb2JqZWN0LCBidXQgbm90IGFuIGFjY2Vzc2li
aWxpdHkgdGFibGUsIHdlIHNob3VsZCBzdG9wIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0bwogICAg
ICAgICAgICAgICAgIC8vIGNob29zZSBhbm90aGVyIGFuY2VzdG9yIHRhYmxlIGFzIHRoaXMgcm93
J3MgdGFibGUuCkBAIC0yODA1LDcgKzI4MDUsNyBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpwYXJlbnRUYWJsZUlmRXhwb3NlZFRhYmxlUm93KCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHIgdGFibGUgPSBwYXJlbnRUYWJsZSgpOwot
ICAgIHJldHVybiB0YWJsZSAmJiB0YWJsZS0+aXNFeHBvc2FibGVUYWJsZSgpID8gdGFibGUudW5z
YWZlR2V0KCkgOiBudWxscHRyOworICAgIHJldHVybiB0YWJsZSAmJiB0YWJsZS0+aXNFeHBvc2Fi
bGVUYWJsZSgpID8gdGFibGUuZ2V0KCkgOiBudWxscHRyOwogfQogCiBib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc1RhYmxlQ2VsbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBkMjM4NDQwMmMz
ZGEuLjJiMmY2NzZhMzFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC01OTEsNyArNTkxLDcgQEAgQWNjZXNzaWJp
bGl0eU9iamVjdCogZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoY29uc3QgTm9kZSogbm9k
ZSwgTk9FU0NBUEUgY28KICAgICAgICAgYWNjZXNzaWJsZU9iamVjdCA9IGNhY2hlLT5nZXRPckNy
ZWF0ZShjb25zdF9jYXN0PE5vZGUmPigqYXhOb2RlKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGFj
Y2Vzc2libGVPYmplY3QudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGFjY2Vzc2libGVPYmplY3Qu
Z2V0KCk7CiB9CiAKIC8vIEZJWE1FOiBVc2FnZXMgb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg
cmVwbGFjZWQgYnkgYSBuZXcgZmxhZyBpbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptX2FuY2VzdG9y
RmxhZ3MuCkBAIC0zMDQ1LDcgKzMwNDUsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UAogICAg
ICAgICAgICAgICAgIGlmIChSZWZQdHIgcmVtb3RlSG9zdFdpZGdldCA9IGNhY2hlLT5nZXRPckNy
ZWF0ZSgqd2lkZ2V0KSkgewogICAgICAgICAgICAgICAgICAgICByZW1vdGVIb3N0V2lkZ2V0LT51
cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0ciBz
Y3JvbGxWaWV3ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PigqcmVt
b3RlSG9zdFdpZGdldCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzY3JvbGxWaWV3ID8g
c2Nyb2xsVmlldy0+cmVtb3RlRnJhbWUoKS51bnNhZmVHZXQoKSA6IG51bGxwdHI7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzY3JvbGxWaWV3ID8gc2Nyb2xsVmlldy0+cmVtb3RlRnJhbWUo
KS5nZXQoKSA6IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCBlMzY4OGUxMmQ1YjYuLjQ2NTU3YWU1YTNh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC00NzEsNyArNDcxLDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bmV4dFNpYmxpbmcoKSBjb25zdAog
ICAgIFJlZlB0ciBuZXh0UmVuZGVyUGFyZW50ID0gbmV4dEFYUmVuZGVyT2JqZWN0ID8gY2FjaGUt
PmdldE9yQ3JlYXRlKG5leHRBWFJlbmRlck9iamVjdC0+cmVuZGVyUGFyZW50T2JqZWN0KCkpIDog
bnVsbHB0cjsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgbmV4dCBzaWJsaW5nIGhhcyB0aGUgc2Ft
ZSByZW5kZXIgcGFyZW50LgotICAgIHJldHVybiAhbmV4dFJlbmRlclBhcmVudCB8fCBuZXh0UmVu
ZGVyUGFyZW50ID09IGNhY2hlLT5nZXRPckNyZWF0ZShyZW5kZXJQYXJlbnRPYmplY3QoKSkgPyBu
ZXh0T2JqZWN0LnVuc2FmZUdldCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gIW5leHRSZW5kZXJQ
YXJlbnQgfHwgbmV4dFJlbmRlclBhcmVudCA9PSBjYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyUGFy
ZW50T2JqZWN0KCkpID8gbmV4dE9iamVjdC5nZXQoKSA6IG51bGxwdHI7CiB9CiAKIHN0YXRpYyBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogbmV4dENvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QmIHJlbmRl
cmVyKQpAQCAtNTMxLDcgKzUzMSw3IEBAIFJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6cmVuZGVyUGFyZW50T2JqZWN0KCkgY29uc3QKIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7CiAgICAg
aWYgKFJlZlB0ciBvd25lclBhcmVudCA9IG93bmVyUGFyZW50T2JqZWN0KCkpIFtbdW5saWtlbHld
XQotICAgICAgICByZXR1cm4gb3duZXJQYXJlbnQudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVy
biBvd25lclBhcmVudC5nZXQoKTsKIAogI2lmIFVTRShBVFNQSSkKICAgICAvLyBGSVhNRTogQ29u
c2lkZXIgcmVtb3ZpbmcgdGhpcyBBVFNQSS1vbmx5IGJyYW5jaCB3aXRoIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODIxMTcuCkBAIC01NTEsNyArNTUxLDcgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cGFyZW50T2JqZWN0
KCkgY29uc3QKICAgICBSZWZQdHIgbm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoUmVmUHRy
IHBhcmVudE5vZGUgPSBjb21wb3NlZFBhcmVudElnbm9yaW5nRG9jdW1lbnRGcmFnbWVudHMobm9k
ZS5nZXQoKSkpIHsKICAgICAgICAgaWYgKFJlZlB0ciBwYXJlbnQgPSBjYWNoZS0+Z2V0T3JDcmVh
dGUoKnBhcmVudE5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIHBhcmVudC51bnNhZmVHZXQoKTsK
KyAgICAgICAgICAgIHJldHVybiBwYXJlbnQuZ2V0KCk7CiAgICAgfQogCiAgICAgaWYgKENoZWNr
ZWRQdHIgcmVuZGVyRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX3Jl
bmRlcmVyLmdldCgpKTsgcmVuZGVyRWxlbWVudCAmJiByZW5kZXJFbGVtZW50LT5pc0JlZm9yZU9y
QWZ0ZXJDb250ZW50KCkpIHsKQEAgLTU2MCw3ICs1NjAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3QoKSBjb25zdAogICAgICAg
ICAvLyBnZW5lcmF0aW5nIGVsZW1lbnQgYXMgdGhlaXIgcGFyZW50IHJhdGhlciB0aGFuIHRoZWly
ICJuYXR1cmFsIiByZW5kZXIgdHJlZSBwYXJlbnQuIFRoaXMgYXZvaWRzCiAgICAgICAgIC8vIGEg
cGFyZW50LWNoaWxkIG1pc21hdGNoIHdoaWNoIGNhbiBjYXVzZSBpc3N1ZXMgZm9yIEFUcy4KICAg
ICAgICAgaWYgKFJlZlB0ciBwYXJlbnQgPSBjYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyRWxlbWVu
dC0+Z2VuZXJhdGluZ0VsZW1lbnQoKSkpCi0gICAgICAgICAgICByZXR1cm4gcGFyZW50LnVuc2Fm
ZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIHBhcmVudC5nZXQoKTsKICAgICB9CiAjZW5kaWYg
Ly8gIVVTRShBVFNQSSkKIApAQCAtNTY5LDcgKzU2OSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgICAg
IGZvciAoYXV0byYgbGlzdEl0ZW1BbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxSZW5kZXJMaXN0
SXRlbT4oKm1fcmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBSZWZQdHIgcGFyZW50ID0gZHluYW1p
Y0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+KGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUobGlzdEl0ZW1BbmNlc3RvcikpOwogICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBw
YXJlbnQtPm1hcmtlclJlbmRlcmVyKCkgPT0gbV9yZW5kZXJlcikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyZW50LnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQu
Z2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNzIsNyArMjI3Miw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChsaXN0Qm94
T3B0aW9uICYmICFsaXN0Qm94T3B0aW9uLT5pc0lnbm9yZWQoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbGlzdEJveE9wdGlvbi51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bGlzdEJveE9wdGlvbi5nZXQoKTsKIAogICAgICAgICAgICAgQ2hlY2tlZFB0ciBjYWNoZSA9IGF4
T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAgIHJldHVybiBjYWNoZSA/IGNhY2hlLT5nZXRPckNy
ZWF0ZSgqcmVuZGVyTGlzdEJveCkgOiBudWxscHRyOwpAQCAtMjMyMywxMSArMjMyMywxMSBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQbwogICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgdGhl
IGxhYmVsIG9mIGEgY29udHJvbCwgYSBoaXQgdGVzdCBzaG91bGQgcmV0dXJuIHRoZSBjb250cm9s
LgogICAgICAgICBSZWZQdHIgY29udHJvbE9iamVjdCA9IHJlc3VsdC0+Y29udHJvbEZvckxhYmVs
RWxlbWVudCgpOwogICAgICAgICBpZiAoY29udHJvbE9iamVjdCAmJiAhY29udHJvbE9iamVjdC0+
dGl0bGVVSUVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBjb250cm9sT2JqZWN0LnVuc2Fm
ZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2xPYmplY3QuZ2V0KCk7CiAKICAgICAg
ICAgcmVzdWx0ID0gcmVzdWx0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKICAgICB9Ci0gICAg
cmV0dXJuIHJlc3VsdC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0LmdldCgpOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlck9iamVjdElzT2JzZXJ2YWJs
ZShSZW5kZXJPYmplY3QmIHJlbmRlcmVyKSBjb25zdApAQCAtMjY4Miw3ICsyNjgyLDcgQEAgQWNj
ZXNzaWJpbGl0eVNWR09iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZH
Um9vdEVsZW1lbnQoQ3JlYXRlSWYKIAogICAgIFJlZlB0ciByb290U1ZHT2JqZWN0ID0gY3JlYXRl
SWZOZWNlc3NhcnkgPT0gQ3JlYXRlSWZOZWNlc3Nhcnk6OlllcyA/IGNhY2hlLT5nZXRPckNyZWF0
ZSgqcmVuZGVyZXJSb290KSA6IGNhY2hlLT5nZXQocmVuZGVyZXJSb290KTsKICAgICBBU1NFUlQo
Y3JlYXRlSWZOZWNlc3NhcnkgPT0gQ3JlYXRlSWZOZWNlc3Nhcnk6Ok5vIHx8IHJvb3RTVkdPYmpl
Y3QpOwotICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVNWR09iamVjdD4o
cm9vdFNWR09iamVjdCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5U1ZHT2JqZWN0Pihyb290U1ZHT2JqZWN0KS5nZXQoKTsKIH0KIAogdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJlbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHT2JqZWN0
LmNwcAppbmRleCBkMzJjMjViMDgzZDYuLjRiZGI3ZGJlMjZjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdPYmplY3QuY3BwCkBA
IC0xMjMsNyArMTIzLDcgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eVNWR09iamVjdDo6Y2hpbGRF
bGVtZW50V2l0aE1hdGNoaW5nTGFuZ3VhZ2UoQ2hpbGRyZW5UeXBlJgogICAgIGlmIChpbmRleCA8
IGNoaWxkTGFuZ3VhZ2VDb2Rlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBlbGVtZW50c1tpbmRl
eF07CiAKLSAgICByZXR1cm4gZmFsbGJhY2sudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGZhbGxi
YWNrLmdldCgpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlTVkdPYmplY3Q6OmFjY2Vzc2liaWxp
dHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRPcmRlcikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5jcHAKaW5kZXggYjZkZWEyOTI4NGRjLi41OGI1Njk0OWJiZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
Y3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
Ojpkb2N1bWVudCgpIGNvbnN0CiBMb2NhbEZyYW1lVmlldyogQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OmRvY3VtZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKICAgICBpZiAoUmVmUHRyIGxvY2FsRnJh
bWVWaWV3ID0gZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3PihtX3Njcm9sbFZpZXcuZ2V0
KCkpKQotICAgICAgICByZXR1cm4gbG9jYWxGcmFtZVZpZXcudW5zYWZlR2V0KCk7CisgICAgICAg
IHJldHVybiBsb2NhbEZyYW1lVmlldy5nZXQoKTsKIAogICAgIGlmIChtX2ZyYW1lT3duZXJFbGVt
ZW50ICYmIG1fZnJhbWVPd25lckVsZW1lbnQtPmNvbnRlbnREb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gbV9mcmFtZU93bmVyRWxlbWVudC0+Y29udGVudERvY3VtZW50KCktPnZpZXcoKTsKQEAg
LTQ4MCw3ICs0ODAsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBh
bmNlc3RvckVsZW1lbnQgPSBhbmNlc3RvckVsZW1lbnQtPnBhcmVudEVsZW1lbnRJbkNvbXBvc2Vk
VHJlZSgpOwogICAgIH0KLSAgICByZXR1cm4gYW5jZXN0b3JBY2Nlc3NpYmlsaXR5T2JqZWN0LnVu
c2FmZUdldCgpOworICAgIHJldHVybiBhbmNlc3RvckFjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCk7
CiB9CiAKICNpZiBFTkFCTEVfQUNDRVNTSUJJTElUWV9MT0NBTF9GUkFNRQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oCmluZGV4IGY4MDM4NThkYjIwNC4uZTJjOThkNWQyZDNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oCkBAIC0zMzksMTEgKzMzOSwxMSBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0
ZWRPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmlu
YWw7CiAgICAgQVhJc29sYXRlZE9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFs
CiAgICAgewotICAgICAgICByZXR1cm4gdHJlZSgpLT5mb2N1c2VkTm9kZSgpLnVuc2FmZUdldCgp
OworICAgICAgICByZXR1cm4gdHJlZSgpLT5mb2N1c2VkTm9kZSgpLmdldCgpOwogICAgIH0KICAg
ICBBWElzb2xhdGVkT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50SW5BbnlMb2NhbEZyYW1lKCkgY29u
c3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiB0cmVlKCktPmZvY3VzZWROb2RlKCkudW5z
YWZlR2V0KCk7CisgICAgICAgIHJldHVybiB0cmVlKCktPmZvY3VzZWROb2RlKCkuZ2V0KCk7CiAg
ICAgfQogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBvYmplY3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5OjpJbnRlcm5hbExp
bmtFbGVtZW50KTsgfQogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByYWRpb0J1dHRv
bkdyb3VwKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3Rv
ckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHk6OlJhZGlvQnV0dG9uR3JvdXBNZW1iZXJz
KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBkNmUx
NTBmOWQ3NjAuLjA0ZTMxZDE0NTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCop
YmFzZVVwZGF0ZUJhY2tpbmdTdG9yZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQ
dHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAj
ZW5kaWYKLSAgICByZXR1cm4gYmFja2luZ09iamVjdC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4g
YmFja2luZ09iamVjdC5nZXQoKTsKIH0KIAogLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKils
aW5lUmVjdHNBbmRUZXh0CkBAIC05NTgsNyArOTU4LDcgQEAgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhIGFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYUZvclNlYXJjaFByZWRpY2F0ZShBWENv
cmUKICAgICAgICAgICAgIGNyaXRlcmlhLnN0YXJ0UmFuZ2UgPSAqbnNSYW5nZTsKIAogICAgICAg
ICBpZiAoIWNyaXRlcmlhLnN0YXJ0T2JqZWN0KQotICAgICAgICAgICAgY3JpdGVyaWEuc3RhcnRP
YmplY3QgPSBtYXJrZXJSYW5nZS5zdGFydCgpLm9iamVjdCgpLnVuc2FmZUdldCgpOworICAgICAg
ICAgICAgY3JpdGVyaWEuc3RhcnRPYmplY3QgPSBtYXJrZXJSYW5nZS5zdGFydCgpLm9iamVjdCgp
LmdldCgpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAppbmRleCA3NzQ3OGQ4NzdhMjAuLjNjODJiZDNlN2JiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC0xOTE0LDcgKzE5MTQs
NyBAQCBjb25zdCBUaW1pbmdGdW5jdGlvbiogS2V5ZnJhbWVFZmZlY3Q6OnRpbWluZ0Z1bmN0aW9u
Rm9yQmxlbmRpbmdLZXlmcmFtZShjb25zdCBCbAogICAgICAgICB9CiAKICAgICAgICAgLy8gRmFp
bGluZyB0aGF0LCBvciBmb3IgYSBDU1MgVHJhbnNpdGlvbiwgdGhlIHRpbWluZyBmdW5jdGlvbiBp
cyBpbmhlcml0ZWQgZnJvbSB0aGUgYmFja2luZyBBbmltYXRpb24gb2JqZWN0LgotICAgICAgICBy
ZXR1cm4gc3R5bGVPcmlnaW5hdGVkQW5pbWF0aW9uLT5iYWNraW5nQW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb24oKS51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlT3JpZ2luYXRlZEFuaW1h
dGlvbi0+YmFja2luZ0FuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGtleWZyYW1lLnRpbWluZ0Z1bmN0aW9uKCk7CkBAIC0zMTYzLDcgKzMxNjMsNyBA
QCBjb25zdCBWaWV3VGltZWxpbmUqIEtleWZyYW1lRWZmZWN0OjphY3RpdmVWaWV3VGltZWxpbmUo
KQogCiAgICAgUmVmUHRyIHZpZXdUaW1lbGluZSA9IGR5bmFtaWNEb3duY2FzdDxWaWV3VGltZWxp
bmU+KGFuaW1hdGlvbi0+dGltZWxpbmUoKSk7CiAgICAgaWYgKHZpZXdUaW1lbGluZSAmJiB2aWV3
VGltZWxpbmUtPmN1cnJlbnRUaW1lKCkpCi0gICAgICAgIHJldHVybiB2aWV3VGltZWxpbmUudW5z
YWZlR2V0KCk7CisgICAgICAgIHJldHVybiB2aWV3VGltZWxpbmUuZ2V0KCk7CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9TY3Jv
bGxUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vU2Nyb2xsVGltZWxpbmUu
Y3BwCmluZGV4IDY1MGU2ZDA3ZTg3Yy4uMzUwMDZmOTg3MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vU2Nyb2xsVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9TY3JvbGxUaW1lbGluZS5jcHAKQEAgLTEyOSwxMiArMTI5LDEyIEBAIEVsZW1l
bnQqIFNjcm9sbFRpbWVsaW5lOjpzb3VyY2UoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICBS
ZWYgZG9jdW1lbnQgPSBuZWFyZXN0U291cmNlLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgICAg
ICAgICBSZWZQdHIgZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
OwogICAgICAgICAgICAgICAgICAgICBpZiAobmVhcmVzdFNvdXJjZSAhPSBkb2N1bWVudEVsZW1l
bnQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmVhcmVzdFNvdXJjZS51bnNhZmVH
ZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZWFyZXN0U291cmNlLmdldCgp
OwogICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXJPYmplY3Q6OmVuY2xvc2luZ1Njcm9sbGFi
bGVDb250YWluZXIoKSB3aWxsIHJldHVybiB0aGUgZG9jdW1lbnQgZWxlbWVudCBldmVuIGluCiAg
ICAgICAgICAgICAgICAgICAgIC8vIHF1aXJrcyBtb2RlLCBidXQgdGhlIHNjcm9sbGluZyBlbGVt
ZW50IGluIHRoYXQgY2FzZSBpcyB0aGUgPGJvZHk+IGVsZW1lbnQsIHNvIHdlIG11c3QKICAgICAg
ICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRvIHJldHVybiBEb2N1bWVudDo6c2Nyb2xsaW5n
RWxlbWVudCgpIGluIGNhc2UgdGhlIGRvY3VtZW50IGVsZW1lbnQgaXMKICAgICAgICAgICAgICAg
ICAgICAgLy8gcmV0dXJuZWQgYnkgZW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lcigpIGJ1dCBp
dCB3YXMgbm90IGV4cGxpY2l0bHkgc2V0IGFzIHRoZSBzb3VyY2UuCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAmc291cmNlLT5lbGVtZW50ID09IGRvY3VtZW50RWxlbWVudCA/IG5lYXJlc3RT
b3VyY2UudW5zYWZlR2V0KCkgOiBkb2N1bWVudC0+c2Nyb2xsaW5nRWxlbWVudCgpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gJnNvdXJjZS0+ZWxlbWVudCA9PSBkb2N1bWVudEVsZW1lbnQg
PyBuZWFyZXN0U291cmNlLmdldCgpIDogZG9jdW1lbnQtPnNjcm9sbGluZ0VsZW1lbnQoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmNwcAppbmRleCA3ZWEwYzc5ZDRjMGMuLjliMjNkOTM2NjQxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtODcsOCArODcsOCBAQCBzdGF0aWMgQ29u
dGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNo
YXJhY3RlckRhdGEsCiAgICAgcmV0dXJuIHsKICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlR5cGU6OlRleHRDaGFuZ2VkLAogICAgICAgICBudWxscHRyLAotICAgICAgICBSZWZQ
dHIgeyBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hhcmFjdGVyRGF0YSkgfS51
bnNhZmVHZXQoKSwKLSAgICAgICAgUmVmUHRyIHsgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxp
bmcoY2hhcmFjdGVyRGF0YSkgfS51bnNhZmVHZXQoKSwKKyAgICAgICAgUmVmUHRyIHsgRWxlbWVu
dFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEpIH0uZ2V0KCksCisgICAg
ICAgIFJlZlB0ciB7IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoYXJhY3RlckRhdGEp
IH0uZ2V0KCksCiAgICAgICAgIHNvdXJjZSwKICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OkFmZmVjdHNFbGVtZW50czo6Tm8KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggMTAwY2Y0Y2E4ZGFhLi4zZmZjZTViNzdlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMjQxOSw3ICsyNDE5LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6OnNjcm9sbGluZ0VsZW1l
bnQoKQogICAgICAgICAvLyAxLiBJZiB0aGUgSFRNTCBib2R5IGVsZW1lbnQgZXhpc3RzLCBhbmQg
aXQgaXMgbm90IHBvdGVudGlhbGx5IHNjcm9sbGFibGUsIHJldHVybiB0aGUKICAgICAgICAgLy8g
SFRNTCBib2R5IGVsZW1lbnQgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoUmVm
UHRyIGZpcnN0Qm9keSA9IGJvZHkoKTsgZmlyc3RCb2R5ICYmICFpc0JvZHlQb3RlbnRpYWxseVNj
cm9sbGFibGUoKmZpcnN0Qm9keSkpCi0gICAgICAgICAgICByZXR1cm4gZmlyc3RCb2R5LnVuc2Fm
ZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0Qm9keS5nZXQoKTsKIAogICAgICAgICAv
LyAyLiBSZXR1cm4gbnVsbCBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtODk4MSw3ICs4OTgxLDcgQEAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiBEb2N1
bWVudDo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpCiAgICAgUmVmUHRyIGxpc3RlbmVy
ID0gbV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzLmJlZ2luKCkuZ2V0KCk7CiAgICAgbV9tZWRpYUNh
blN0YXJ0TGlzdGVuZXJzLnJlbW92ZSgqbGlzdGVuZXIpOwogCi0gICAgcmV0dXJuIGxpc3RlbmVy
LnVuc2FmZUdldCgpOworICAgIHJldHVybiBsaXN0ZW5lci5nZXQoKTsKIH0KIAogdm9pZCBEb2N1
bWVudDo6YWRkRGlzcGxheUNoYW5nZWRPYnNlcnZlcihjb25zdCBEaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyJiBvYnNlcnZlcikKQEAgLTEwODgyLDcgKzEwODgyLDcgQEAgSFRNTERpYWxvZ0VsZW1lbnQq
IERvY3VtZW50OjphY3RpdmVNb2RhbERpYWxvZygpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogbWFrZVJldmVyc2VkUmFuZ2UobV90b3BMYXllckVsZW1lbnRzKSkgewogICAgICAg
ICBpZiAoUmVmUHRyIGRpYWxvZyA9IGR5bmFtaWNEb3duY2FzdDxIVE1MRGlhbG9nRWxlbWVudD4o
ZWxlbWVudC5nZXQoKSk7IGRpYWxvZyAmJiBkaWFsb2ctPmlzTW9kYWwoKSkKLSAgICAgICAgICAg
IHJldHVybiBkaWFsb2cudW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gZGlhbG9nLmdl
dCgpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwCmluZGV4IDMyNWIyZWIxYzhiOS4uYmE3YWUyNDUzZWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgRWxl
bWVudCogRG9jdW1lbnRGcmFnbWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbVN0cmluZyYg
aWQpIGNvbnN0CiAKICAgICAvLyBGYXN0IHBhdGggZm9yIFNoYWRvd1Jvb3QsIHdoZXJlIHdlIGFy
ZSBib3RoIGEgRG9jdW1lbnRGcmFnbWVudCBhbmQgYSBUcmVlU2NvcGUuCiAgICAgaWYgKGlzVHJl
ZVNjb3BlKCkpCi0gICAgICAgIHJldHVybiBwcm90ZWN0ZWRUcmVlU2NvcGUoKS0+Z2V0RWxlbWVu
dEJ5SWQoaWQpLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gcHJvdGVjdGVkVHJlZVNjb3Bl
KCktPmdldEVsZW1lbnRCeUlkKGlkKS5nZXQoKTsKIAogICAgIC8vIE90aGVyd2lzZSwgZmFsbCBi
YWNrIHRvIGl0ZXJhdGluZyBhbGwgb2YgdGhlIGVsZW1lbnQgZGVzY2VuZGFudHMuCiAgICAgZm9y
IChSZWYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KCp0aGlzKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IDM3YmIwMDk0NGViNS4uODUyZTk3MmE1MTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC0zNTIyLDcgKzM1MjIsNyBAQCBSZWZQdHI8U2hhZG93Um9vdD4g
RWxlbWVudDo6cHJvdGVjdGVkVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0CiBTaGFkb3dSb290
JiBFbGVtZW50OjplbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkKIHsKICAgICBpZiAoUmVmUHRy
IHNoYWRvdyA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuICpzaGFkb3cu
dW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAqc2hhZG93OwogICAgIHJldHVybiBjcmVhdGVV
c2VyQWdlbnRTaGFkb3dSb290KCk7CiB9CiAKQEAgLTY0MDYsNyArNjQwNiw3IEBAIEhUTUxFbGVt
ZW50KiBFbGVtZW50Ojp0b3Btb3N0UG9wb3ZlckFuY2VzdG9yKFRvcExheWVyRWxlbWVudFR5cGUg
dG9wTGF5ZXJUeXBlKQogICAgIGlmICh0b3BMYXllclR5cGUgPT0gVG9wTGF5ZXJFbGVtZW50VHlw
ZTo6UG9wb3ZlcikKICAgICAgICAgY2hlY2tBbmNlc3Rvcihwb3BvdmVyRGF0YSgpLT5pbnZva2Vy
KCkpOwogCi0gICAgcmV0dXJuIHRvcG1vc3RBbmNlc3Rvci51bnNhZmVHZXQoKTsKKyAgICByZXR1
cm4gdG9wbW9zdEFuY2VzdG9yLmdldCgpOwogfQogCiBkb3VibGUgRWxlbWVudDo6bG9va3VwQ1NT
UmFuZG9tQmFzZVZhbHVlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3R5bGU6OlBzZXVkb0VsZW1lbnRJ
ZGVudGlmaWVyPiYgcHNldWRvRWxlbWVudElkZW50aWZpZXIsIGNvbnN0IENTU0NhbGM6OlJhbmRv
bUNhY2hpbmdLZXkmIGtleSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaAppbmRleCA4ZWM4ZDA3
NWY2M2EuLjEyM2RkYWM1NTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaApAQCAtODAsNyArODAs
NyBAQCBpbmxpbmUgTm9kZSogRXZlbnRQYXRoOjpldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRS
dWxlcyhOb2RlJiByZWZlcmVuY2VOb2RlKQogICAgIC8vIEV2ZW50cyBzZW50IHRvIGVsZW1lbnRz
IGluc2lkZSBhbiBTVkcgdXNlIGVsZW1lbnQncyBzaGFkb3cgdHJlZSBnbyB0byB0aGUgdXNlIGVs
ZW1lbnQuCiAgICAgaWYgKGF1dG8qIHN2Z0VsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8U1ZHRWxl
bWVudD4ocmVmZXJlbmNlTm9kZSkpIHsKICAgICAgICAgaWYgKGF1dG8gdXNlRWxlbWVudCA9IHN2
Z0VsZW1lbnQtPmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4g
dXNlRWxlbWVudC51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIHJldHVybiB1c2VFbGVtZW50Lmdl
dCgpOwogICAgIH0KIAogICAgIHJldHVybiAmcmVmZXJlbmNlTm9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcAppbmRleCA2M2FlMjYxMmU0YjMuLjE3ZmJlOTE0NTgwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHN0YXRpYyBD
b250YWluZXJOb2RlJiBmaWx0ZXJSb290QnlJZChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29u
c3QgQ1NTU2VsZWN0b3ImCiAgICAgICAgICAgICAgICAgICAgIGlmIChpbkFkamFjZW50Q2hhaW4p
CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hSb290ID0gc2VhcmNoUm9vdC0+cGFyZW50
Tm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoUm9vdCAmJiAocm9vdE5vZGUu
aXNUcmVlU2NvcGUoKSB8fCBzZWFyY2hSb290LT5pc0luY2x1c2l2ZURlc2NlbmRhbnRPZihyb290
Tm9kZSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICpzZWFyY2hSb290LnVuc2Fm
ZUdldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICpzZWFyY2hSb290OwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwCmluZGV4IGJhNjAxMjM3NWExYS4uMWUxYTdhMTg1NzhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC05Myw3ICs5Myw3IEBAIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmIFN0eWxlZEVsZW1lbnQ6OmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpCiAg
ICAgICAgIHJldHVybiBtdXRhYmxlUHJvcGVydGllcy5nZXQoKTsKICAgICB9CiAgICAgaWYgKFJl
ZlB0ciBtdXRhYmxlUHJvcGVydGllcyA9IGR5bmFtaWNEb3duY2FzdDxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPigqaW5saW5lU3R5bGUpKQotICAgICAgICByZXR1cm4gKm11dGFibGVQcm9wZXJ0aWVz
LnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gKm11dGFibGVQcm9wZXJ0aWVzOwogICAgIFJl
ZiBtdXRhYmxlUHJvcGVydGllcyA9IGlubGluZVN0eWxlLT5tdXRhYmxlQ29weSgpOwogICAgIGlu
bGluZVN0eWxlID0gbXV0YWJsZVByb3BlcnRpZXMuY29weVJlZigpOwogICAgIHJldHVybiBtdXRh
YmxlUHJvcGVydGllcy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggOTEzNzk3NmM2NTIzLi4wZjNjYmM5MjEwNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC00
NTUsNyArNDU1LDcgQEAgRWRpdENvbW1hbmRDb21wb3NpdGlvbiogQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmNvbXBvc2l0aW9uKCkgY29uc3QKICAgICBmb3IgKFJlZlB0ciBjb21tYW5kID0gdGhpczsg
Y29tbWFuZDsgY29tbWFuZCA9IGNvbW1hbmQtPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChhdXRv
IGNvbXBvc2l0aW9uID0gY29tbWFuZC0+bV9jb21wb3NpdGlvbikgewogICAgICAgICAgICAgQVNT
RVJUKCFjb21tYW5kLT5wYXJlbnQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcG9zaXRpb24u
dW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gY29tcG9zaXRpb24uZ2V0KCk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NjgsNyArNDY4LDcgQEAgRWRp
dENvbW1hbmRDb21wb3NpdGlvbiYgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmVuc3VyZUNvbXBvc2l0
aW9uKCkKICAgICAgICAgY29tbWFuZCA9IFdURk1vdmUocGFyZW50KTsKICAgICBpZiAoIWNvbW1h
bmQtPm1fY29tcG9zaXRpb24pCiAgICAgICAgIGNvbW1hbmQtPm1fY29tcG9zaXRpb24gPSBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRpbmdTZWxlY3Rpb24o
KSwgZW5kaW5nU2VsZWN0aW9uKCksIGVkaXRpbmdBY3Rpb24oKSk7Ci0gICAgcmV0dXJuICpjb21t
YW5kLT5tX2NvbXBvc2l0aW9uLnVuc2FmZUdldCgpOworICAgIHJldHVybiAqY29tbWFuZC0+bV9j
b21wb3NpdGlvbjsKIH0KIAogYm9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJlc2VydmVzVHlw
aW5nU3R5bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggYjNkMjgy
NzY3ZjU2Li5iM2QyMzVkNjcxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAt
MjAzLDcgKzIwMyw3IEBAIEVsZW1lbnQqIHVuc3BsaXR0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihj
b25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgLy8gU2luY2UgZW5jbG9zaW5nTm9kZU9mVHlw
ZSB3b24ndCBzZWFyY2ggYmV5b25kIHRoZSBoaWdoZXN0IHJvb3QgZWRpdGFibGUgbm9kZSwKICAg
ICAvLyB0aGlzIGNvZGUgd29ya3MgZXZlbiBpZiB0aGUgY2xvc2VzdCB0YWJsZSBjZWxsIHdhcyBv
dXRzaWRlIG9mIHRoZSByb290IGVkaXRhYmxlIG5vZGUuCiAgICAgaWYgKGF1dG8gZW5jbG9zaW5n
Q2VsbCA9IGRvd25jYXN0PEVsZW1lbnQ+KGVuY2xvc2luZ05vZGVPZlR5cGUocG9zaXRpb24sICZp
c1RhYmxlQ2VsbCkpKQotICAgICAgICByZXR1cm4gZW5jbG9zaW5nQ2VsbC51bnNhZmVHZXQoKTsK
KyAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0NlbGwuZ2V0KCk7CiAgICAgcmV0dXJuIGVkaXRhYmxl
Um9vdEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDdkY2QyYjE3NTQyYi4uMzkxMGYxMzg2MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCBOb2RlKiBFZGl0b3I6Om5vZGVCZWZvcmVXcml0
aW5nU3VnZ2VzdGlvbnMoKSBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlm
IChSZWZQdHIgdGV4dCA9IGR5bmFtaWNEb3duY2FzdDxUZXh0Pihjb250YWluZXIpKQotICAgICAg
ICByZXR1cm4gdGV4dC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0KCk7CiAK
ICAgICByZXR1cm4gcG9zaXRpb24uY29tcHV0ZU5vZGVCZWZvcmVQb3NpdGlvbigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCA1YjliZWZj
ZmFiODAuLjhkODJiNmY1YTk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBB
Y2N1bXVsYXRvci5jcHAKQEAgLTM4OSw3ICszODksNyBAQCBjb25zdCBTaGFkb3dSb290KiBNYXJr
dXBBY2N1bXVsYXRvcjo6c3VpdGFibGVTaGFkb3dSb290KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAg
UmVmUHRyIHNoYWRvd1Jvb3QgPSBkeW5hbWljRG93bmNhc3Q8U2hhZG93Um9vdD4obm9kZSk7CiAg
ICAgaWYgKCFzaGFkb3dSb290IHx8ICFpbmNsdWRlU2hhZG93Um9vdCgqc2hhZG93Um9vdCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzaGFkb3dSb290LnVuc2FmZUdldCgp
OworICAgIHJldHVybiBzaGFkb3dSb290LmdldCgpOwogfQogCiB2b2lkIE1hcmt1cEFjY3VtdWxh
dG9yOjpzdGFydEFwcGVuZGluZ05vZGUoY29uc3QgTm9kZSYgbm9kZSwgTmFtZXNwYWNlcyogbmFt
ZXNwYWNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCA2NTI4
ZGUxYmJhMDIuLmI5YWFiOWY4ZGUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyBOb2RlKiBmaXJzdE5vZGUoY29uc3Qg
Qm91bmRhcnlQb2ludCYgcG9pbnQpCiAgICAgaWYgKHBvaW50LmNvbnRhaW5lci0+aXNDaGFyYWN0
ZXJEYXRhTm9kZSgpKQogICAgICAgICByZXR1cm4gcG9pbnQuY29udGFpbmVyLnB0cigpOwogICAg
IGlmIChSZWZQdHIgY2hpbGQgPSBwb2ludC5jb250YWluZXItPnRyYXZlcnNlVG9DaGlsZEF0KHBv
aW50Lm9mZnNldCkpCi0gICAgICAgIHJldHVybiBjaGlsZC51bnNhZmVHZXQoKTsKKyAgICAgICAg
cmV0dXJuIGNoaWxkLmdldCgpOwogICAgIGlmICghcG9pbnQub2Zmc2V0KQogICAgICAgICByZXR1
cm4gcG9pbnQuY29udGFpbmVyLnB0cigpOwogICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0
U2tpcHBpbmdDaGlsZHJlbihwb2ludC5jb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9Ob2RlSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvTm9kZUhUTUxDb252ZXJ0ZXIubW0KaW5kZXggNmQxOWVjZjlmZTNmLi5m
MDQwYjMwMjYzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvTm9k
ZUhUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Ob2Rl
SFRNTENvbnZlcnRlci5tbQpAQCAtNzk1LDcgKzc5NSw3IEBAIEVsZW1lbnQqIEhUTUxDb252ZXJ0
ZXI6Ol9ibG9ja0xldmVsRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgZWxlbWVu
dCA9IG5vZGUtPnBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoZWxlbWVudCAmJiAhX2NhY2hlcy0+
aXNCbG9ja0VsZW1lbnQoKmVsZW1lbnQpKQogICAgICAgICBlbGVtZW50ID0gX2Jsb2NrTGV2ZWxF
bGVtZW50Rm9yTm9kZShlbGVtZW50LT5wYXJlbnRJbkNvbXBvc2VkVHJlZSgpKTsKLSAgICByZXR1
cm4gZWxlbWVudC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gZWxlbWVudC5nZXQoKTsKIH0KIAog
c3RhdGljIENvbG9yIG5vcm1hbGl6ZWRDb2xvcihDb2xvciBjb2xvciwgYm9vbCBpZ25vcmVEZWZh
dWx0Q29sb3IsIEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uSW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
YWNoZWRIVE1MQ29sbGVjdGlvbklubGluZXMuaAppbmRleCA2ZTRkY2Q1NzAxMjAuLmE4YjUwNjk5
ODcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlv
bklubGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9u
SW5saW5lcy5oCkBAIC0xMzAsNyArMTMwLDcgQEAgRWxlbWVudCogQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46Om5hbWVkSXRlbShjb24KIAog
ICAgICAgICBpZiAoY2FuZGlkYXRlICYmIGNvbGxlY3Rpb24oKS5lbGVtZW50TWF0Y2hlcygqY2Fu
ZGlkYXRlKSkgewogICAgICAgICAgICAgaWYgKHRyYXZlcnNhbFR5cGUgPT0gQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seSA/IGNhbmRpZGF0ZS0+cGFyZW50Tm9kZSgpID09ICZy
b290IDogY2FuZGlkYXRlLT5pc0Rlc2NlbmRhbnRPZihyb290KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY2FuZGlkYXRlLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgIHJldHVybiBjYW5k
aWRhdGUuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DaGVj
a2JveElucHV0VHlwZS5jcHAKaW5kZXggNTIxOGIyNDllOTE3Li44MDIxNjNlZTg0YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwCkBAIC0xNTMsNyArMTUzLDcg
QEAgc3RhdGljIFRvdWNoKiBmaW5kVG91Y2hXaXRoSWRlbnRpZmllcihUb3VjaExpc3QmIGxpc3Qs
IHVuc2lnbmVkIGlkZW50aWZpZXIpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIFJlZlB0ciB0b3VjaCA9IGxpc3QuaXRlbShpKTsKICAgICAgICAg
aWYgKHRvdWNoLT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVy
biB0b3VjaC51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIHJldHVybiB0b3VjaC5nZXQoKTsKICAg
ICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1B
c3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggMGQ1MWYzN2Y1OThjLi5hMWVhNmMwMmRmOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQo
SFRNTEZvcm1FbGVtZW50KiBmb3JtKQogSFRNTEZvcm1FbGVtZW50KiBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ6OmZvcm1Gb3JCaW5kaW5ncygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoZSBkb3du
Y2FzdCBzaG91bGQgYmUgdW5uZWNlc3NhcnksIGJ1dCB0aGUgV1BUIHdhcyB3cml0dGVuIGJlZm9y
ZSBodHRwczovL2dpdGh1Yi5jb20vV0lDRy93ZWJjb21wb25lbnRzL2lzc3Vlcy8xMDcyIHdhcyBy
ZXNvbHZlZC4gVXBkYXRlIG9uY2UgdGhlIFdQVCBoYXMgYmVlbiB1cGRhdGVkLgotICAgIHJldHVy
biBkeW5hbWljRG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihhc0hUTUxFbGVtZW50KCkucmV0YXJn
ZXRSZWZlcmVuY2VUYXJnZXRGb3JCaW5kaW5ncyhmb3JtKCkpKS51bnNhZmVHZXQoKTsKKyAgICBy
ZXR1cm4gZHluYW1pY0Rvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oYXNIVE1MRWxlbWVudCgpLnJl
dGFyZ2V0UmVmZXJlbmNlVGFyZ2V0Rm9yQmluZGluZ3MoZm9ybSgpKSkuZ2V0KCk7CiB9CiAKIHZv
aWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRGb3JtSW50ZXJuYWwoUmVmUHRyPEhUTUxGb3Jt
RWxlbWVudD4mJiBuZXdGb3JtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAppbmRleCBiZTYwMDYwODhkYWMuLjMxMjA5ZmEzYmIxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dFdlYkdMKFdlYkdM
VmVyc2lvbiB0eXBlLAogICAgIGlmICgodHlwZSA9PSBXZWJHTFZlcnNpb246OldlYkdMMSkgIT0g
Z2xDb250ZXh0LT5pc1dlYkdMMSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBnbENvbnRleHQudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGdsQ29udGV4dC5nZXQoKTsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggYmE3ZmQ3MTI2N2VkLi4zMWNi
YzYyOTVkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIEhUTUxFbGVtZW50KiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6Y3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqIGN1cnJlbnQpIGNv
CiAgICAgICAgIGlmIChlbGVtZW50LT5hc0Zvcm1MaXN0ZWRFbGVtZW50KCktPmlzRW51bWVyYXRh
YmxlKCkpIHsKICAgICAgICAgICAgIG1fY2FjaGVkRWxlbWVudCA9IGVsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgICAgICBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5ID0gaTsKLSAgICAgICAgICAg
IHJldHVybiBlbGVtZW50LnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAppbmRleCBiYjZkNzFmNDZkNGIuLmI3Njg2NWUw
NWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC0xMDgs
NyArMTA4LDcgQEAgSFRNTEZvcm1FbGVtZW50KiBIVE1MTGFiZWxFbGVtZW50Ojpmb3JtKCkgY29u
c3QKIEhUTUxGb3JtRWxlbWVudCogSFRNTExhYmVsRWxlbWVudDo6Zm9ybUZvckJpbmRpbmdzKCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhlIGRvd25jYXN0IHNob3VsZCBiZSB1bm5lY2Vzc2Fy
eSwgYnV0IHRoZSBXUFQgd2FzIHdyaXR0ZW4gYmVmb3JlIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNH
L3dlYmNvbXBvbmVudHMvaXNzdWVzLzEwNzIgd2FzIHJlc29sdmVkLiBVcGRhdGUgb25jZSB0aGUg
V1BUIGhhcyBiZWVuIHVwZGF0ZWQuCi0gICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxIVE1MRm9y
bUVsZW1lbnQ+KHJldGFyZ2V0UmVmZXJlbmNlVGFyZ2V0Rm9yQmluZGluZ3MoZm9ybSgpKSkudW5z
YWZlR2V0KCk7CisgICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KHJl
dGFyZ2V0UmVmZXJlbmNlVGFyZ2V0Rm9yQmluZGluZ3MoZm9ybSgpKSkuZ2V0KCk7CiB9CiAKIHZv
aWQgSFRNTExhYmVsRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgU3R5bGU6OkludmFsaWRh
dGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMZWdl
bmRFbGVtZW50LmNwcAppbmRleCAzNTJmZGIzNGY2Y2YuLjA2ZmRiZDI5NjE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSFRN
TEZvcm1FbGVtZW50KiBIVE1MTGVnZW5kRWxlbWVudDo6Zm9ybSgpIGNvbnN0CiBIVE1MRm9ybUVs
ZW1lbnQqIEhUTUxMZWdlbmRFbGVtZW50Ojpmb3JtRm9yQmluZGluZ3MoKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBUaGUgZG93bmNhc3Qgc2hvdWxkIGJlIHVubmVjZXNzYXJ5LCBidXQgdGhlIFdQ
VCB3YXMgd3JpdHRlbiBiZWZvcmUgaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvd2ViY29tcG9uZW50
cy9pc3N1ZXMvMTA3MiB3YXMgcmVzb2x2ZWQuIFVwZGF0ZSBvbmNlIHRoZSBXUFQgaGFzIGJlZW4g
dXBkYXRlZC4KLSAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4ocmV0
YXJnZXRSZWZlcmVuY2VUYXJnZXRGb3JCaW5kaW5ncyhmb3JtKCkpKS51bnNhZmVHZXQoKTsKKyAg
ICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4ocmV0YXJnZXRSZWZlcmVu
Y2VUYXJnZXRGb3JCaW5kaW5ncyhmb3JtKCkpKS5nZXQoKTsKIH0KICAgICAKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDNhYmM0
ZjBhMWUyOC4uNTdhMWM3MDYzMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIEhUTUxGb3JtRWxlbWVudCogSFRNTE9wdGlv
bkVsZW1lbnQ6OmZvcm0oKSBjb25zdAogSFRNTEZvcm1FbGVtZW50KiBIVE1MT3B0aW9uRWxlbWVu
dDo6Zm9ybUZvckJpbmRpbmdzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhlIGRvd25jYXN0
IHNob3VsZCBiZSB1bm5lY2Vzc2FyeSwgYnV0IHRoZSBXUFQgd2FzIHdyaXR0ZW4gYmVmb3JlIGh0
dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3dlYmNvbXBvbmVudHMvaXNzdWVzLzEwNzIgd2FzIHJlc29s
dmVkLiBVcGRhdGUgb25jZSB0aGUgV1BUIGhhcyBiZWVuIHVwZGF0ZWQuCi0gICAgcmV0dXJuIGR5
bmFtaWNEb3duY2FzdDxIVE1MRm9ybUVsZW1lbnQ+KHJldGFyZ2V0UmVmZXJlbmNlVGFyZ2V0Rm9y
QmluZGluZ3MoZm9ybSgpKSkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGR5bmFtaWNEb3duY2Fz
dDxIVE1MRm9ybUVsZW1lbnQ+KHJldGFyZ2V0UmVmZXJlbmNlVGFyZ2V0Rm9yQmluZGluZ3MoZm9y
bSgpKSkuZ2V0KCk7CiB9CiAKIGludCBIVE1MT3B0aW9uRWxlbWVudDo6aW5kZXgoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAK
aW5kZXggN2VmNWVjYjhhYmIxLi5jNDFmZjI2MjJmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNDIxLDcgKzQyMSw3IEBA
IHN0YXRpYyBUb3VjaCogZmluZFRvdWNoV2l0aElkZW50aWZpZXIoVG91Y2hMaXN0JiBsaXN0LCB1
bnNpZ25lZCBpZGVudGlmaWVyKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewogICAgICAgICBSZWZQdHI8VG91Y2g+IHRvdWNoID0gbGlzdC5pdGVtKGkpOwogICAg
ICAgICBpZiAodG91Y2gtPmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKQotICAgICAgICAgICAg
cmV0dXJuIHRvdWNoLnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIHRvdWNoLmdldCgp
OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMTNhNjk0YmJi
MTlmLi5hZDc5OWQ4ZTgzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0xMjc2LDcgKzEyNzYsNyBAQCBJbnNw
ZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YmluZFN0eWxlU2hlZXQoQ1NTU3R5
bGVTaGVldCogc3R5bGVTaGVldAogICAgICAgICAgICAgaW5zcGVjdG9yU3R5bGVTaGVldHNGb3JE
b2N1bWVudC5hcHBlbmQoaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGlu
c3BlY3RvclN0eWxlU2hlZXQuZ2V0KCk7CiB9CiAKIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3Bl
Y3RvckNTU0FnZW50Ojphc3NlcnRTdHlsZVNoZWV0Rm9ySWQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggMWYwZTNiMmQ3NGE0Li4zMWVkODY5OGExNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00
NzYsNyArNDc2LDcgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydE5vZGUoSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBub2RlIGZvciBnaXZlbiBub2RlSWQiX3M7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gbm9kZS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4g
bm9kZS5nZXQoKTsKIH0KIAogRG9jdW1lbnQqIEluc3BlY3RvckRPTUFnZW50Ojphc3NlcnREb2N1
bWVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCkKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBE
b2N1bWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydERvY3VtZW50KEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nJiBlcgogICAgIFJlZlB0ciBkb2N1bWVudCA9IGR5bmFtaWNEb3du
Y2FzdDxEb2N1bWVudD4oKm5vZGUpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIGVycm9y
U3RyaW5nID0gIk5vZGUgZm9yIGdpdmVuIG5vZGVJZCBpcyBub3QgYSBkb2N1bWVudCJfczsKLSAg
ICByZXR1cm4gZG9jdW1lbnQudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIGRvY3VtZW50LmdldCgp
OwogfQogCiBFbGVtZW50KiBJbnNwZWN0b3JET01BZ2VudDo6YXNzZXJ0RWxlbWVudChJbnNwZWN0
b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkIG5vZGVJZCkKQEAgLTQ5OCw3ICs0OTgsNyBAQCBFbGVtZW50KiBJbnNw
ZWN0b3JET01BZ2VudDo6YXNzZXJ0RWxlbWVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJybwogICAgIFJlZlB0ciBlbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEVsZW1lbnQ+
KCpub2RlKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vZGUg
Zm9yIGdpdmVuIG5vZGVJZCBpcyBub3QgYW4gZWxlbWVudCJfczsKLSAgICByZXR1cm4gZWxlbWVu
dC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gZWxlbWVudC5nZXQoKTsKIH0KIAogTm9kZSogSW5z
cGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlTm9kZShJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlk
IG5vZGVJZCkKQEAgLTUxNCw3ICs1MTQsNyBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6YXNz
ZXJ0RWRpdGFibGVOb2RlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcgogICAg
ICAgICBlcnJvclN0cmluZyA9ICJOb2RlIGZvciBnaXZlbiBub2RlSWQgaXMgYSBwc2V1ZG8tZWxl
bWVudCJfczsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBub2Rl
LnVuc2FmZUdldCgpOworICAgIHJldHVybiBub2RlLmdldCgpOwogfQogCiBFbGVtZW50KiBJbnNw
ZWN0b3JET01BZ2VudDo6YXNzZXJ0RWRpdGFibGVFbGVtZW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
SWQgbm9kZUlkKQpAQCAtNTI1LDcgKzUyNSw3IEBAIEVsZW1lbnQqIEluc3BlY3RvckRPTUFnZW50
Ojphc3NlcnRFZGl0YWJsZUVsZW1lbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpCiAg
ICAgUmVmUHRyIGVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CiAgICAg
aWYgKCFlbGVtZW50KQogICAgICAgICBlcnJvclN0cmluZyA9ICJOb2RlIGZvciBnaXZlbiBub2Rl
SWQgaXMgbm90IGFuIGVsZW1lbnQiX3M7Ci0gICAgcmV0dXJuIGVsZW1lbnQudW5zYWZlR2V0KCk7
CisgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7CiB9CiAKIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3Rv
ckRPTUFnZW50OjpnZXREb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA3M2Q3MTNiNTBlYjQuLmEyM2ExY2ZmMGZiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgRGF0YVBheWxvYWQKIAogY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VM
b2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRh
LmdldCgpLnVuc2FmZUdldCgpOworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQo
KTsKIH0KIAogUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlc291cmNlTG9h
ZGVyOjpwcm90ZWN0ZWRSZXNvdXJjZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDY2MWRiM2M0NjE4MC4uNGUxZjNiMGM0MjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gKm1fZGF0YS5nZXQoKS51bnNhZmVHZXQoKTsgfQorICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiAqbV9kYXRhLmdldCgpOyB9CiAgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHByb3RlY3RlZERhdGEoKSBjb25zdCB7IHJldHVy
biBkYXRhKCk7IH0KICAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
eyBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1w
dHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAppbmRleCA2ZWNjODg5MDA3N2UuLmUxYzRlMzkw
YWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uOjphZGRSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYm
IHJlc291cmNlKQogQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjph
cmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKFJlZlB0ciBy
ZXNvdXJjZSA9IG1fc3VicmVzb3VyY2VzLmdldCh1cmwuc3RyaW5nKCkpKQotICAgICAgICByZXR1
cm4gcmVzb3VyY2UudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5nZXQoKTsK
ICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJodHRwcyJfcykpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIFVSTCBodHRwVVJMID0gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggOGJhNDI1ZjQ3N2U3Li5jZjRiMzJiMGVjN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMjkwLDkgKzI5
MCw5IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogICAgIGlmIChtX2ltYWdlLT5kcmF3c1NWR0ltYWdlKCkpIHsKICAg
ICAgICAgUmVmUHRyIGltYWdlID0gbV9zdmdJbWFnZUNhY2hlLT5pbWFnZUZvclJlbmRlcmVyKHJl
bmRlcmVyKTsKICAgICAgICAgaWYgKGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gaW1hZ2UudW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gaW1h
Z2UuZ2V0KCk7CiAgICAgfQotICAgIHJldHVybiBtX2ltYWdlLnVuc2FmZUdldCgpOworICAgIHJl
dHVybiBtX2ltYWdlLmdldCgpOwogfQogCiB2b2lkIENhY2hlZEltYWdlOjpzZXRDb250YWluZXJD
b250ZXh0Rm9yQ2xpZW50KGNvbnN0IENhY2hlZEltYWdlQ2xpZW50JiBjbGllbnQsIGNvbnN0IExh
eW91dFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYg
aW1hZ2VVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5j
cHAKaW5kZXggZWFlYzFmODQyMmFkLi4xOTAxMjJkMGM0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBFbGVt
ZW50KiBNYXRoTUxTZWxlY3RFbGVtZW50OjpnZXRTZWxlY3RlZEFjdGlvbkNoaWxkKCkKICAgICAg
ICAgY2hpbGQgPSBzZWxlY3RlZENoaWxkOwogICAgIH0KIAotICAgIHJldHVybiBjaGlsZC51bnNh
ZmVHZXQoKTsKKyAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CiB9CiAKIEVsZW1lbnQqIE1hdGhNTFNl
bGVjdEVsZW1lbnQ6OmdldFNlbGVjdGVkU2VtYW50aWNzQ2hpbGQoKQpAQCAtMTcwLDcgKzE3MCw3
IEBAIEVsZW1lbnQqIE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmdldFNlbGVjdGVkU2VtYW50aWNzQ2hp
bGQoKQogICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKICAgICB9
IGVsc2UgaWYgKCFkb3duY2FzdDxNYXRoTUxFbGVtZW50PigqY2hpbGQpLmlzU2VtYW50aWNBbm5v
dGF0aW9uKCkpIHsKICAgICAgICAgLy8gVGhlIGZpcnN0IGNoaWxkIGlzIGEgcHJlc2VudGF0aW9u
IE1hdGhNTCBidXQgbm90IGFuIGFubm90YXRpb24sIHNvIHdlIGNhbiBqdXN0IGRpc3BsYXkgaXQu
Ci0gICAgICAgIHJldHVybiBjaGlsZC51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIGNoaWxk
LmdldCgpOwogICAgIH0KICAgICAvLyBPdGhlcndpc2UsIHRoZSBmaXJzdCBjaGlsZCBpcyBhbiA8
YW5ub3RhdGlvbj4gb3IgPGFubm90YXRpb24teG1sPiBlbGVtZW50LiBUaGlzIGlzIGludmFsaWQs
IGJ1dCBzb21lIHBlb3BsZSB1c2UgdGhpcyBzeW50YXggc28gd2UgdGFrZSBjYXJlIG9mIHRoaXMg
Y2FzZSB0b28gYW5kIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbSB0aGlzIGZpcnN0IGNoaWxkLgogCkBA
IC0xODMsNyArMTgzLDcgQEAgRWxlbWVudCogTWF0aE1MU2VsZWN0RWxlbWVudDo6Z2V0U2VsZWN0
ZWRTZW1hbnRpY3NDaGlsZCgpCiAgICAgICAgICAgICBpZiAoY2hpbGQtPmhhc0F0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oTWF0aE1MTmFtZXM6OnNyY0F0dHIpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBhc3N1bWUgaXQgaXMg
YSB0ZXh0IGFubm90YXRpb24gdGhhdCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCBhbmQgd2Ugc3Rv
cCBoZXJlLgotICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnVuc2FmZUdldCgpOworICAgICAgICAg
ICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNoaWxkLT5o
YXNUYWdOYW1lKE1hdGhNTE5hbWVzOjphbm5vdGF0aW9uX3htbFRhZykpIHsKQEAgLTE5Myw3ICsx
OTMsNyBAQCBFbGVtZW50KiBNYXRoTUxTZWxlY3RFbGVtZW50OjpnZXRTZWxlY3RlZFNlbWFudGlj
c0NoaWxkKCkKICAgICAgICAgICAgIC8vIElmIHRoZSA8YW5ub3RhdGlvbi14bWw+IGVsZW1lbnQg
aGFzIGFuIGVuY29kaW5nIGF0dHJpYnV0ZSBkZXNjcmliaW5nIHByZXNlbnRhdGlvbiBNYXRoTUws
IFNWRyBvciBIVE1MIHdlIGFzc3VtZSB0aGUgY29udGVudCBjYW4gYmUgZGlzcGxheWVkIGFuZCB3
ZSBzdG9wIGhlcmUuCiAgICAgICAgICAgICBhdXRvJiB2YWx1ZSA9IGNoaWxkLT5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKE1hdGhNTE5hbWVzOjplbmNvZGluZ0F0dHIpOwogICAgICAg
ICAgICAgaWYgKGlzTWF0aE1MRW5jb2RpbmcodmFsdWUpIHx8IGlzU1ZHRW5jb2RpbmcodmFsdWUp
IHx8IGlzSFRNTEVuY29kaW5nKHZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGQu
dW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRi
NzI5ZmJhMWE5MS4uNWI1ZDVkMjVmZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcApAQCAtNDEwLDcgKzQxMCw3IEBAIHN0YXRpYyBFbGVtZW50KiBlbGVtZW50VW5kZXJN
b3VzZShEb2N1bWVudCYgZG9jdW1lbnRVbmRlck1vdXNlLCBjb25zdCBJbnRQb2ludCYKICAgICBp
ZiAoIWVsZW1lbnQpCiAgICAgICAgIGVsZW1lbnQgPSBub2RlLT5wYXJlbnRFbGVtZW50KCk7CiAg
ICAgYXV0byogaG9zdCA9IGVsZW1lbnQtPnNoYWRvd0hvc3QoKTsKLSAgICByZXR1cm4gaG9zdCA/
IGhvc3QgOiBlbGVtZW50LnVuc2FmZUdldCgpOworICAgIHJldHVybiBob3N0ID8gaG9zdCA6IGVs
ZW1lbnQuZ2V0KCk7CiB9CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWxlbWVudFRhcmdldGluZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FbGVtZW50VGFyZ2V0aW5nQ29udHJvbGxlci5jcHAKaW5kZXggN2Ez
MzNjNzUwNTY5Li4wZDY3ZDg0MGU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWxlbWVudFRhcmdldGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWxlbWVudFRhcmdldGluZ0NvbnRyb2xsZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGlj
IGlubGluZSBib29sIHF1ZXJ5U2VsZWN0b3JNYXRjaGVzT25lRWxlbWVudChjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdAogewogICAgIFJlZiBjb250YWluZXIgPSBbJl0oKSAtPiBDb250YWlu
ZXJOb2RlJiB7CiAgICAgICAgIGlmIChSZWZQdHIgc2hhZG93Um9vdCA9IGVsZW1lbnQuY29udGFp
bmluZ1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHJldHVybiAqc2hhZG93Um9vdC51bnNhZmVH
ZXQoKTsKKyAgICAgICAgICAgIHJldHVybiAqc2hhZG93Um9vdDsKICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuZG9jdW1lbnQoKTsKICAgICB9KCk7CiAKQEAgLTc3MSw3ICs3NzEsNyBAQCBzdGF0aWMg
Y29uc3QgSFRNTEVsZW1lbnQqIGZpbmRPbmx5TWFpbkVsZW1lbnQoY29uc3QgSFRNTEJvZHlFbGVt
ZW50JiBib2R5RWxlbWVudAogCiAgICAgICAgIG9ubHlNYWluRWxlbWVudCA9IGRlc2NlbmRhbnQ7
CiAgICAgfQotICAgIHJldHVybiBvbmx5TWFpbkVsZW1lbnQudW5zYWZlR2V0KCk7CisgICAgcmV0
dXJuIG9ubHlNYWluRWxlbWVudC5nZXQoKTsKIH0KIAogc3RhdGljIGJvb2wgaXNOYXZpZ2F0aW9u
YWxFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBz
dGF0aWMgRWxlbWVudCogc2VhcmNoRm9yRWxlbWVudENvbnRhaW5pbmdUZXh0KENvbnRhaW5lck5v
ZGUmIGNvbnRhaW5lciwgY29uc3QgUwogICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50cyA9IGNvbGxl
Y3REb2N1bWVudEVsZW1lbnRzRnJvbUNoaWxkRnJhbWVzKGNvbnRhaW5lcik7CiAgICAgZm9yIChh
dXRvJiBkb2N1bWVudEVsZW1lbnQgOiBkb2N1bWVudEVsZW1lbnRzKSB7CiAgICAgICAgIGlmIChS
ZWZQdHIgdGFyZ2V0ID0gc2VhcmNoRm9yRWxlbWVudENvbnRhaW5pbmdUZXh0KGRvY3VtZW50RWxl
bWVudCwgc2VhcmNoVGV4dCkpCi0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnVuc2FmZUdldCgp
OworICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5nZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE0MTEsNyArMTQxMSw3IEBAIHN0YXRpYyBpbmxpbmUgRWxlbWVudCYgZWxl
bWVudFRvQWRqdXN0KEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKFJlZlB0ciBwc2V1ZG9F
bGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAg
ICAgIGlmIChSZWZQdHIgaG9zdCA9IHBzZXVkb0VsZW1lbnQtPmhvc3RFbGVtZW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gKmhvc3QudW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gKmhv
c3Q7CiAgICAgfQogICAgIHJldHVybiBlbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDQ1ZmFjMDEzNTJiMy4uNTEzOTg1NjU5YjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC01NjIsNyArNTYyLDcgQEAgc3RhdGljIE5vZGUqIG5v
ZGVUb1NlbGVjdE9uTW91c2VEb3duRm9yTm9kZShOb2RlJiB0YXJnZXROb2RlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChSZWZQdHIgcm9vdFVzZXJTZWxlY3RBbGwgPSBQb3Np
dGlvbjo6cm9vdFVzZXJTZWxlY3RBbGxGb3JOb2RlKCZ0YXJnZXROb2RlKSkKLSAgICAgICAgcmV0
dXJuIHJvb3RVc2VyU2VsZWN0QWxsLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gcm9vdFVz
ZXJTZWxlY3RBbGwuZ2V0KCk7CiAKICAgICBpZiAodGFyZ2V0Tm9kZS5zaG91bGRTZWxlY3RPbk1v
dXNlRG93bigpKQogICAgICAgICByZXR1cm4gJnRhcmdldE5vZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggMTUxZDI0ZDNiZGFlLi5mOWE0M2E3NjhjNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
c3RhdGljIEVsZW1lbnQqIG9wZW5Qb3BvdmVyRm9ySW52b2tlcihjb25zdCBOb2RlKiBjYW5kaWRh
dGVJbnZva2VyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHIgcG9wb3ZlciA9
IGludm9rZXItPmludm9rZWRQb3BvdmVyKCk7CiAgICAgaWYgKHBvcG92ZXIgJiYgcG9wb3Zlci0+
aXNQb3BvdmVyU2hvd2luZygpICYmIHBvcG92ZXItPnBvcG92ZXJEYXRhKCktPmludm9rZXIoKSA9
PSBpbnZva2VyKQotICAgICAgICByZXR1cm4gcG9wb3Zlci51bnNhZmVHZXQoKTsKKyAgICAgICAg
cmV0dXJuIHBvcG92ZXIuZ2V0KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTUwNSw3
ICs1MDUsNyBAQCBMb2NhbEZyYW1lKiBGb2N1c0NvbnRyb2xsZXI6OmZvY3VzZWRPck1haW5GcmFt
ZSgpIGNvbnN0CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZm9jdXNlZExvY2FsRnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuIGZyYW1lOwogICAgIGlmIChSZWZQdHIgbG9jYWxNYWluRnJhbWUgPSBtX3Bh
Z2UtPmxvY2FsTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiBsb2NhbE1haW5GcmFtZS51bnNh
ZmVHZXQoKTsKKyAgICAgICAgcmV0dXJuIGxvY2FsTWFpbkZyYW1lLmdldCgpOwogICAgIEFTU0VS
VChtX3BhZ2UtPnNldHRpbmdzKCkuc2l0ZUlzb2xhdGlvbkVuYWJsZWQoKSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKaW5kZXggZjE3ZDlkMGJiMGE5
Li4zYTQ5ZTVjMjEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTE1OCw3ICsx
NTgsNyBAQCBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgVHJl
ZVNjb3BlKiBzY29wZSkgY29uc3QKICAgICBmb3IgKFJlZlB0ciByZXN1bHQgPSBmaXJzdENoaWxk
KCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBpZiAoaW5TY29wZSgqcmVzdWx0LCAqc2NvcGUpKSB7CiAgICAgICAgICAgICBpZiAoc2Nv
cGVkSW5kZXggPT0gaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC51bnNhZmVH
ZXQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmdldCgpOwogICAgICAgICAgICAg
c2NvcGVkSW5kZXgrKzsKICAgICAgICAgfQogICAgIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBpbmxp
bmUgRnJhbWUqIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQoTk9FU0NBUEUgY29uc3QgRnVuY3Rpb248
Ym9vbChjb25zdCBGcmFtZVRyZQogCiAgICAgZm9yIChSZWZQdHIgY2hpbGQgPSBmaXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewogICAgICAg
ICBpZiAoaXNNYXRjaChjaGlsZC0+dHJlZSgpKSAmJiBpblNjb3BlKCpjaGlsZCwgKnNjb3BlKSkK
LSAgICAgICAgICAgIHJldHVybiBjaGlsZC51bnNhZmVHZXQoKTsKKyAgICAgICAgICAgIHJldHVy
biBjaGlsZC5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0zMDUsMTMg
KzMwNSwxMyBAQCBpbmxpbmUgRnJhbWUqIEZyYW1lVHJlZTo6ZmluZChjb25zdCBBdG9tU3RyaW5n
JiBuYW1lLCBGJiYgbmFtZUdldHRlciwgRnJhbWUmIGFjdAogICAgIFJlZiB0aGlzRnJhbWUgPSBt
X3RoaXNGcmFtZS5nZXQoKTsKICAgICBmb3IgKFJlZlB0ciBmcmFtZSA9IHRoaXNGcmFtZS5wdHIo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQodGhpc0ZyYW1lLnB0
cigpKSkgewogICAgICAgICBpZiAobmFtZUdldHRlcihmcmFtZS0+dHJlZSgpKSA9PSBuYW1lKQot
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJu
IGZyYW1lLmdldCgpOwogICAgIH0KIAogICAgIC8vIFRoZW4gdGhlIHJlc3Qgb2YgdGhlIHRyZWUu
CiAgICAgZm9yIChSZWZQdHIgZnJhbWUgPSAmdGhpc0ZyYW1lLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAobmFt
ZUdldHRlcihmcmFtZS0+dHJlZSgpKSA9PSBuYW1lKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmdldCgpOwogICAgIH0KIAog
ICAgIC8vIFNlYXJjaCB0aGUgZW50aXJlIHRyZWUgb2YgZWFjaCBvZiB0aGUgb3RoZXIgcGFnZXMg
aW4gdGhpcyBuYW1lc3BhY2UuCkBAIC0zMjUsNyArMzI1LDcgQEAgaW5saW5lIEZyYW1lKiBGcmFt
ZVRyZWU6OmZpbmQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgRiYmIG5hbWVHZXR0ZXIsIEZyYW1l
JiBhY3QKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmb3IgKFJlZlB0ciBmcmFtZSA9
ICZvdGhlclBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAobmFtZUdldHRlcihmcmFtZS0+dHJlZSgp
KSA9PSBuYW1lICYmIGlzRnJhbWVGYW1pbGlhcldpdGgoYWN0aXZlRnJhbWUsICpmcmFtZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAg
IHJldHVybiBmcmFtZS5nZXQoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9MYXJnZXN0Q29udGVudGZ1bFBhaW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTGFyZ2VzdENvbnRlbnRmdWxQYWludC5jcHAKaW5kZXggNDYyNDFkNjljNjA2Li5j
NjkyMWVkNGNiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTGFyZ2VzdENvbnRl
bnRmdWxQYWludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9MYXJnZXN0Q29udGVudGZ1
bFBhaW50LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEVsZW1lbnQqIExhcmdlc3RDb250ZW50ZnVs
UGFpbnQ6OmVsZW1lbnQoKSBjb25zdAogICAgIGlmICghTGFyZ2VzdENvbnRlbnRmdWxQYWludERh
dGE6OmlzRXhwb3NlZEZvclBhaW50VGltaW5nKCplbGVtZW50KSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gZWxlbWVudC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gZWxl
bWVudC5nZXQoKTsKIH0KIAogdm9pZCBMYXJnZXN0Q29udGVudGZ1bFBhaW50OjpzZXRFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2Fs
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lLmNwcAppbmRleCA0OTIz
YjM3MmNjOTkuLjMwNjgzNDk5ZmQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWUuY3BwCkBA
IC03NDcsNyArNzQ3LDcgQEAgY29uc3QgVXNlckNvbnRlbnRQcm92aWRlciogTG9jYWxGcmFtZTo6
dXNlckNvbnRlbnRQcm92aWRlcigpIGNvbnN0CiAgICAgUmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKICAgICBSZWZQdHIgZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudCA/IGRvY3Vt
ZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKFJlZlB0ciB1c2VyQ29udGVudFByb3Zp
ZGVyID0gZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+cHJlZmVyZW5jZXMoKS51c2Vy
Q29udGVudFByb3ZpZGVyIDogbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIHVzZXJDb250ZW50UHJv
dmlkZXIudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiB1c2VyQ29udGVudFByb3ZpZGVyLmdl
dCgpOwogICAgIGlmIChSZWZQdHIgcGFnZSA9IHRoaXMtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJu
IHBhZ2UtPnByb3RlY3RlZFVzZXJDb250ZW50UHJvdmlkZXJGb3JGcmFtZSgpLnB0cigpOwogICAg
IHJldHVybiBudWxscHRyOwpAQCAtNzU4LDcgKzc1OCw3IEBAIFVzZXJDb250ZW50UHJvdmlkZXIq
IExvY2FsRnJhbWU6OnVzZXJDb250ZW50UHJvdmlkZXIoKQogICAgIFJlZlB0ciBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyIGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQg
PyBkb2N1bWVudC0+bG9hZGVyKCkgOiBudWxscHRyOwogICAgIGlmIChSZWZQdHIgdXNlckNvbnRl
bnRQcm92aWRlciA9IGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnByZWZlcmVuY2Vz
KCkudXNlckNvbnRlbnRQcm92aWRlciA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiB1c2VyQ29u
dGVudFByb3ZpZGVyLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gdXNlckNvbnRlbnRQcm92
aWRlci5nZXQoKTsKICAgICBpZiAoUmVmUHRyIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCiAgICAgICAg
IHJldHVybiBwYWdlLT5wcm90ZWN0ZWRVc2VyQ29udGVudFByb3ZpZGVyRm9yRnJhbWUoKS5wdHIo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDg1MTZjMmFjMDYx
OS4uZDk3ODIzMDJjY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQ0MzIsNyArNDQzMiw3IEBA
IERvY3VtZW50KiBQYWdlOjpvdXRlcm1vc3RGdWxsc2NyZWVuRG9jdW1lbnQoKSBjb25zdAogCiAg
ICAgICAgIGN1cnJlbnREb2N1bWVudCA9IGZ1bGxzY3JlZW5GcmFtZS0+Y29udGVudERvY3VtZW50
KCk7CiAgICAgfQotICAgIHJldHVybiBvdXRlcm1vc3RGdWxsc2NyZWVuRG9jdW1lbnQudW5zYWZl
R2V0KCk7CisgICAgcmV0dXJuIG91dGVybW9zdEZ1bGxzY3JlZW5Eb2N1bWVudC5nZXQoKTsKICNl
bHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VFdmVudFRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlRXZlbnRUaW1pbmcuY3BwCmluZGV4IGE5MjFlY2IwOGFiNi4uMDI2Y2RlODBi
YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRXZlbnRUaW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFdmVudFRpbWluZy5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgTm9kZSogUGVyZm9ybWFuY2VFdmVudFRpbWluZzo6dGFyZ2V0
KCkgY29uc3QKICAgICBpZiAoIW5vZGUtPmlzQ29ubmVjdGVkKCkgfHwgIWRvY3VtZW50LT5pc0Z1
bGx5QWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG5vZGUu
dW5zYWZlR2V0KCk7CisgICAgcmV0dXJuIG5vZGUuZ2V0KCk7CiB9CiAKIFBlcmZvcm1hbmNlRW50
cnk6OlR5cGUgUGVyZm9ybWFuY2VFdmVudFRpbWluZzo6cGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGMxNjgyNDVkZGFhYi4uZWVkZmYwYjM5YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBA
IEVsZW1lbnQqIFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcjo6cG9pbnRlckNhcHR1cmVFbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgUG9pCiAgICAgaWYgKGF1dG8gY2FwdHVyaW5nRGF0YSA9IG1f
YWN0aXZlUG9pbnRlcklkc1RvQ2FwdHVyaW5nRGF0YS5nZXQocG9pbnRlcklkKSkgewogICAgICAg
ICBhdXRvIHBvaW50ZXJDYXB0dXJlRWxlbWVudCA9IGNhcHR1cmluZ0RhdGEtPnRhcmdldE92ZXJy
aWRlOwogICAgICAgICBpZiAocG9pbnRlckNhcHR1cmVFbGVtZW50ICYmICZwb2ludGVyQ2FwdHVy
ZUVsZW1lbnQtPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gcG9p
bnRlckNhcHR1cmVFbGVtZW50LnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIHBvaW50
ZXJDYXB0dXJlRWxlbWVudC5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVtb3RlRnJhbWUuY3BwCmluZGV4IDJjYTZhYWIzNzgyMS4uMWM2MjhjN2Zi
NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZUZyYW1lLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBSZW1vdGVGcmFtZTo6ZnJhbWVEb2N1bWVudFNlY3VyaXR5
T3JpZ2luT3JPcGFxdWUoKSBjb25zdAogewogICAgIFJlZlB0ciBzZWN1cml0eU9yaWdpbiA9IGZy
YW1lRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpOwogICAgIGlmIChzZWN1cml0eU9yaWdpbikKLSAg
ICAgICAgcmV0dXJuICpzZWN1cml0eU9yaWdpbi51bnNhZmVHZXQoKTsKKyAgICAgICAgcmV0dXJu
ICpzZWN1cml0eU9yaWdpbjsKICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46Om9wYXF1ZU9yaWdp
bigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFu
ZGxlcnNOYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRs
ZXJzTmFtZXNwYWNlLmNwcAppbmRleCBhNWUxZGZjNmQyNTEuLjgxNWQyNjRhZDFlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2Uu
Y3BwCkBAIC05MCw3ICs5MCw3IEBAIFVzZXJNZXNzYWdlSGFuZGxlciogVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZTo6bmFtZWRJdGVtKERPTVdyYXBwZXJXb3JsZCYgd29yCiAKICAgICBSZWZQ
dHIgaGFuZGxlciA9IG1fbWVzc2FnZUhhbmRsZXJzLmdldCh7IG5hbWUsICZ3b3JsZCB9KTsKICAg
ICBpZiAoaGFuZGxlcikKLSAgICAgICAgcmV0dXJuIGhhbmRsZXIudW5zYWZlR2V0KCk7CisgICAg
ICAgIHJldHVybiBoYW5kbGVyLmdldCgpOwogCiAgICAgdXNlckNvbnRlbnRQcm92aWRlci0+Zm9y
RWFjaFVzZXJNZXNzYWdlSGFuZGxlcihbJl0oY29uc3QgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5uYW1lKCkgIT0gbmFt
ZSB8fCAmZGVzY3JpcHRvci53b3JsZCgpICE9ICZ3b3JsZCkKQEAgLTEwMiw3ICsxMDIsNyBAQCBV
c2VyTWVzc2FnZUhhbmRsZXIqIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2U6Om5hbWVkSXRl
bShET01XcmFwcGVyV29ybGQmIHdvcgogICAgICAgICBoYW5kbGVyID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKICAgICB9KTsKIAotICAgIHJldHVybiBoYW5kbGVyLnVuc2FmZUdl
dCgpOworICAgIHJldHVybiBoYW5kbGVyLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGZkOWM1MmViOTU1MC4uYjc5NGRlNzk4NjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjE4LDcgKzYxOCw3IEBAIExvY2FsRnJhbWVW
aWV3KiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2Rl
KHN0ZDo6b3B0aW9uCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGZvciAoY29uc3QgYXV0
byYgcm9vdEZyYW1lIDogcGFnZSgpLT5yb290RnJhbWVzKCkpIHsKICAgICAgICAgaWYgKFJlZlB0
ciBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2RlKHJvb3RGcmFtZS5nZXQoKSwg
c2Nyb2xsaW5nTm9kZUlEKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZVZpZXcudW5zYWZlR2V0
KCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWVWaWV3LmdldCgpOwogICAgIH0KICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaAppbmRleCA0
ODVhNjlmN2EzZGQuLmI4NDIwMzFiMmJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUuaApAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSgpOwogCiAgICAgUmVmUHRy
PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPiBwcm90ZWN0ZWRTY3JvbGxpbmdOb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxpbmdOb2RlLmdldCgpOyB9Ci0gICAgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUoKSB7IHJldHVybiAgKnByb3RlY3RlZFNjcm9sbGlu
Z05vZGUoKS51bnNhZmVHZXQoKTsgfQotICAgIGNvbnN0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlJiBzY3JvbGxpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gICpwcm90ZWN0ZWRTY3JvbGxpbmdO
b2RlKCkudW5zYWZlR2V0KCk7IH0KKyAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Ny
b2xsaW5nTm9kZSgpIHsgcmV0dXJuICAqcHJvdGVjdGVkU2Nyb2xsaW5nTm9kZSgpLmdldCgpOyB9
CisgICAgY29uc3QgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUoKSBj
b25zdCB7IHJldHVybiAgKnByb3RlY3RlZFNjcm9sbGluZ05vZGUoKS5nZXQoKTsgfQogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsVG9Qb3NpdGlvbihGbG9hdFBvaW50
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRlZFNjcm9sbCgpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNTEzNDc5Njhm
NDFhLi5hZjEwNzMyZTcxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZp
ZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAKIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gKm1fcHJldmlld0RhdGEuZ2V0KCkudW5zYWZlR2V0KCk7CisgICAgcmV0dXJuICptX3By
ZXZpZXdEYXRhLmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5S
ZXNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJB
VlBsYXllckxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQVZQbGF5
ZXJMYXllci5tbQppbmRleCBmYjZkM2Y3MWRjOWEuLmE2MDdlN2Q5ZjE1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViQVZQbGF5ZXJMYXllci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJBVlBsYXllckxheWVyLm1tCkBAIC0xMjIs
NyArMTIyLDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKFZpZGVvUHJlc2VudGF0aW9uTW9kZWwq
KXByZXNlbnRhdGlvbk1vZGVsCiB7Ci0gICAgcmV0dXJuIF9wcmVzZW50YXRpb25Nb2RlbC5nZXQo
KS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gX3ByZXNlbnRhdGlvbk1vZGVsLmdldCgpLmdldCgp
OwogfQogCiAtICh2b2lkKXNldFByZXNlbnRhdGlvbk1vZGVsOihWaWRlb1ByZXNlbnRhdGlvbk1v
ZGVsKilwcmVzZW50YXRpb25Nb2RlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcApp
bmRleCA5NzY3NDk0NTAzYjIuLmM0MThkYjM3NTM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlci5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6Om1vbml0b3JGb3JDbGllbnQoRGlzcGxheVJlZgog
ICAgIGlmIChtb25pdG9yKQogICAgICAgICBtb25pdG9yLT5hZGRDbGllbnQoY2xpZW50KTsKIAot
ICAgIHJldHVybiBtb25pdG9yLnVuc2FmZUdldCgpOworICAgIHJldHVybiBtb25pdG9yLmdldCgp
OwogfQogCiBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXI6Om1vbml0b3JGb3JEaXNwbGF5SUQoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCA5ODY5Y2Ji
N2UzMTYuLmQ3ZmQ0MmExNjU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBQYXRoSW1wbCYgUGF0aDo6ZW5zdXJlSW1wbCgp
CiAgICAgICAgIHJldHVybiBzZXRJbXBsKFBhdGhTdHJlYW06OmNyZWF0ZShXVEZNb3ZlKCpzZWdt
ZW50KSkpOwogCiAgICAgaWYgKGF1dG8gaW1wbCA9IGFzSW1wbCgpKQotICAgICAgICByZXR1cm4g
KmltcGwudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAqaW1wbDsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgLy8gSW1wbCBpcyBuZXZlciBlbXB0eS4KICAgICByZXR1cm4gc2V0SW1wbChQ
YXRoU3RyZWFtOjpjcmVhdGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHAKaW5kZXggNDUw
MTEyNmMxYmNjLi45YzY3YTAwOTdmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1N5c3RlbUZhbGxiYWNrRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZS5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgUmVmUHRyPEZvbnQ+IFN5c3RlbUZhbGxiYWNrRm9udENhY2hlOjpzeXN0ZW1G
YWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXJDbHVzdGVyKGNvbnMKICAgICAgICAgUmVmUHRyIGZhbGxi
YWNrRm9udCA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLT5zeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlckNsdXN0ZXIoZGVzY3JpcHRpb24sICpmb250LCBpc0ZvclBsYXRmb3JtRm9udCwg
Rm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sIHN0cmluZ0J1aWxkZXIpOwogICAgICAg
ICBpZiAoZmFsbGJhY2tGb250KQogICAgICAgICAgICAgZmFsbGJhY2tGb250LT5zZXRJc1VzZWRJ
blN5c3RlbUZhbGxiYWNrRm9udENhY2hlKCk7Ci0gICAgICAgIHJldHVybiBmYWxsYmFja0ZvbnQu
dW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiBmYWxsYmFja0ZvbnQuZ2V0KCk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA3YmRmMjk4N2ViY2QuLjMw
NGFkMjNkNDFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC00MDA3LDEyICs0MDA3LDEyIEBAIGNvbnN0
IFRpbWluZ0Z1bmN0aW9uJiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0
aW9uVmFsdWUoY29uc3QgQW5pCiAgICAgICAgIC8vIGl0cyBtb2RlIHNldCB0byBTaW5nbGVQcm9w
ZXJ0eS4gSW4gdGhpcyBjYXNlLCB3ZSBjaG9zZSBub3QgdG8gc2V0IHNldCB0aGUKICAgICAgICAg
Ly8gYW5pbWF0aW9uLXdpZGUgdGltaW5nIGZ1bmN0aW9uLCBzbyB3ZSBzZXQgaXQgb24gdGhlIHNp
bmdsZSBrZXlmcmFtZSBpbnRlcnZhbAogICAgICAgICAvLyB0byB3b3JrIGFyb3VuZCBhIENvcmUg
QW5pbWF0aW9uIGxpbWl0YXRpb24uCi0gICAgICAgIHJldHVybiAqYW5pbS50aW1pbmdGdW5jdGlv
bigpLnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gKmFuaW0udGltaW5nRnVuY3Rpb24oKTsK
ICAgICB9CiAgICAgaWYgKGFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICByZXR1
cm4gKmFuaW1WYWx1ZS50aW1pbmdGdW5jdGlvbigpOwogICAgIGlmIChhbmltLmRlZmF1bHRUaW1p
bmdGdW5jdGlvbkZvcktleWZyYW1lcygpKQotICAgICAgICByZXR1cm4gKmFuaW0uZGVmYXVsdFRp
bWluZ0Z1bmN0aW9uRm9yS2V5ZnJhbWVzKCkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiAq
YW5pbS5kZWZhdWx0VGltaW5nRnVuY3Rpb25Gb3JLZXlmcmFtZXMoKTsKICAgICByZXR1cm4gTGlu
ZWFyVGltaW5nRnVuY3Rpb246OmlkZW50aXR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0KaW5kZXggNDI2NWJjMGZkYjQ3Li42YmQ4NWJjYTBjNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6Y29weUNvbnRlbnRzRnJvbUxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5
ZXIpCiAKIFBsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxheWVyQ29jb2E6OnN1cGVybGF5ZXIo
KSBjb25zdAogewotICAgIHJldHVybiBwbGF0Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ug
dm9pZCopW21fbGF5ZXIgc3VwZXJsYXllcl0pLnVuc2FmZUdldCgpOworICAgIHJldHVybiBwbGF0
Zm9ybUNBTGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopW21fbGF5ZXIgc3VwZXJsYXllcl0p
LmdldCgpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpyZW1vdmVGcm9tU3VwZXJs
YXllcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAppbmRleCA1Mjc3
ZTkwMjhkOGEuLjNkY2U0NDk3M2Q0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRl
ck5vZGUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgQ291bnRlck5vZGUqIENvdW50ZXJOb2RlOjpu
ZXh0SW5QcmVPcmRlckFmdGVyQ2hpbGRyZW4oY29uc3QgQ291bnRlck5vZGUqIHN0YXlXaXQKICAg
ICAgICAgaWYgKCFjdXJyZW50IHx8IGN1cnJlbnQgPT0gc3RheVdpdGhpbikKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gbmV4dC51bnNhZmVHZXQoKTsKKyAg
ICByZXR1cm4gbmV4dC5nZXQoKTsKIH0KIAogQ291bnRlck5vZGUqIENvdW50ZXJOb2RlOjpuZXh0
SW5QcmVPcmRlcihjb25zdCBDb3VudGVyTm9kZSogc3RheVdpdGhpbikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGYxMWQyZDk4OWExMy4uM2ZkMjhm
NzBhZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTc0
OSw3ICs3NDksNyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3Qo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAgICAgLy8gRklYTUU6IERvY3VtZW50IHdoZW4g
aW1hZ2UgIT0gaW1nLmdldCgpLgotICAgIGF1dG8qIGltYWdlID0gaW1hZ2VSZXNvdXJjZSgpLmlt
YWdlKCkudW5zYWZlR2V0KCk7CisgICAgYXV0byogaW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1h
Z2UoKS5nZXQoKTsKIAogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMgPSB7CiAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAwYzRmZTk3NTk5YmEuLjAyMjJl
MWEzYmYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTM2MTQsNyArMzYxNCw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVy
QmFja2luZzo6Y2hpbGRGb3JTdXBlcmxheWVyc0V4Y2x1ZGluZ1ZpZXdUcmFuc2l0aW9ucygpCiAg
ICAgICAgIHJldHVybiBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjay0+Zmlyc3RMYXllcigpOwogCiAg
ICAgaWYgKFJlZlB0ciB2aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIgPSB2aWV3cG9ydENsaXBwaW5n
T3JBbmNob3JMYXllcigpKQotICAgICAgICByZXR1cm4gdmlld3BvcnRDb25zdHJhaW5lZExheWVy
LnVuc2FmZUdldCgpOworICAgICAgICByZXR1cm4gdmlld3BvcnRDb25zdHJhaW5lZExheWVyLmdl
dCgpOwogCiAgICAgaWYgKG1fY29udGVudHNDb250YWlubWVudExheWVyKQogICAgICAgICByZXR1
cm4gbV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNjZmYjg4OWI0MmMwLi4y
Y2EzODY4NzYxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1
ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVy
eUV2YWx1YXRvci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBjb25zdCBFbGVtZW50KiBDb250YWlu
ZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVyKE9wdGlvblNldDxDUTo6QXhpcz4gcmVx
dQogICAgICAgICAvLyBGb3Igc2VsZWN0b3JzIHdpdGggcHNldWRvIGVsZW1lbnRzLCBxdWVyeSBj
b250YWluZXJzIGNhbiBiZSBlc3RhYmxpc2hlZCBieSB0aGUgc2hhZG93LWluY2x1ZGluZyBpbmNs
dXNpdmUgYW5jZXN0b3JzIG9mIHRoZSB1bHRpbWF0ZSBvcmlnaW5hdGluZyBlbGVtZW50LgogICAg
ICAgICBmb3IgKFJlZlB0ciBhbmNlc3RvciA9IG9yaWdpbmF0aW5nRWxlbWVudDsgYW5jZXN0b3I7
IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgewogICAg
ICAgICAgICAgaWYgKGlzQ29udGFpbmVyRm9yUXVlcnkoKmFuY2VzdG9yLmdldCgpLCBvcmlnaW5h
dGluZ0VsZW1lbnQuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBhbmNlc3Rvci51bnNh
ZmVHZXQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3IuZ2V0KCk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTk0LDcgKzE5NCw3IEBAIGNv
bnN0IEVsZW1lbnQqIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpzZWxlY3RDb250YWluZXIoT3B0
aW9uU2V0PENROjpBeGlzPiByZXF1CiAKICAgICBmb3IgKFJlZlB0ciBhbmNlc3RvciA9IGVsZW1l
bnQucGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpc0NvbnRh
aW5lckZvclF1ZXJ5KCphbmNlc3Rvci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gYW5jZXN0
b3IudW5zYWZlR2V0KCk7CisgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3IuZ2V0KCk7CiAgICAg
fQogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5k
ZXggODU3ZmMzMjc3ZjcwLi5hZDZhOWI0MDllZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKQEAgLTg2MCw3ICs4NjAsNyBAQCBFbGVtZW50KiBTVkdTVkdFbGVtZW50OjpnZXRF
bGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIAogICAgIFJlZlB0ciBlbGVtZW50ID0g
dHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmIChlbGVtZW50ICYmIGVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQudW5zYWZl
R2V0KCk7CisgICAgICAgIHJldHVybiBlbGVtZW50LmdldCgpOwogICAgIGlmICh0cmVlU2NvcGUo
KS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoaWQpKSB7CiAgICAgICAgIGZvciAoYXV0
byYgZWxlbWVudCA6ICp0cmVlU2NvcGUoKS5nZXRBbGxFbGVtZW50c0J5SWQoaWQpKSB7CiAgICAg
ICAgICAgICBpZiAoZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoKnRoaXMpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUzZjU2MTcxOWMzMC4uNDk2MmY0ZTRjNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNjc5LDcgKzE2NzksNyBAQCB2b2lk
IEludGVybmFsczo6c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wg
Y2FuU2hvd1BsYWNlaG9sZGVyKQogRWxlbWVudCogSW50ZXJuYWxzOjppbnNlcnRUZXh0UGxhY2Vo
b2xkZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIFJlZlB0ciBsb2NhbEZyYW1lID0g
ZnJhbWUoKTsKLSAgICByZXR1cm4gbG9jYWxGcmFtZSA/IGxvY2FsRnJhbWUtPmVkaXRvcigpLmlu
c2VydFRleHRQbGFjZWhvbGRlcihJbnRTaXplIHsgd2lkdGgsIGhlaWdodCB9KS51bnNhZmVHZXQo
KSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGxvY2FsRnJhbWUgPyBsb2NhbEZyYW1lLT5lZGl0b3Io
KS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoSW50U2l6ZSB7IHdpZHRoLCBoZWlnaHQgfSkuZ2V0KCkg
OiBudWxscHRyOwogfQogCiB2b2lkIEludGVybmFsczo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKEVs
ZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCmluZGV4IDIzZTJkOTFjOTcxNi4uN2Q3
YTNjODg2NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpAQCAtNjkxLDcgKzY5MSw3IEBAIGNvbnN0
IERldmljZSYgUXVldWU6OmRldmljZSgpIGNvbnN0CiB7CiAgICAgYXV0byBkZXZpY2UgPSBtX2Rl
dmljZS5nZXQoKTsKICAgICBSRUxFQVNFX0FTU0VSVChkZXZpY2UpOwotICAgIHJldHVybiAqZGV2
aWNlLnVuc2FmZUdldCgpOworICAgIHJldHVybiAqZGV2aWNlOwogfQogCiB2b2lkIFF1ZXVlOjpj
bGVhclRleHR1cmVJZk5lZWRlZChjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRp
b24sIE5TVUludGVnZXIgc2xpY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMTg4NWViMDE0ZGQ1
Li4zNTYzZTE0MDhkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTE1NzUsMTMgKzE1NzUsMTMg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplTlNVUkxTZXNzaW9uc0luU2V0
KFNlc3Npb25TZXQmIHNlc3Npb25TZXQsIE4KIFNlc3Npb25TZXQmIE5ldHdvcmtTZXNzaW9uQ29j
b2E6OnNlc3Npb25TZXRGb3JQYWdlKHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmll
cj4gd2ViUGFnZVByb3h5SUQpCiB7CiAgICAgUmVmUHRyIHNlc3Npb25TZXQgPSB3ZWJQYWdlUHJv
eHlJRCA/IG1fcGVyUGFnZVNlc3Npb25TZXRzLmdldCgqd2ViUGFnZVByb3h5SUQpIDogbnVsbHB0
cjsKLSAgICByZXR1cm4gc2Vzc2lvblNldCA/ICpzZXNzaW9uU2V0LnVuc2FmZUdldCgpIDogbV9k
ZWZhdWx0U2Vzc2lvblNldC5nZXQoKTsKKyAgICByZXR1cm4gc2Vzc2lvblNldCA/ICpzZXNzaW9u
U2V0IDogbV9kZWZhdWx0U2Vzc2lvblNldC5nZXQoKTsKIH0KIAogY29uc3QgU2Vzc2lvblNldCYg
TmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvblNldEZvclBhZ2Uoc3RkOjpvcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiB3ZWJQYWdlUHJveHlJRCkgY29uc3QKIHsKICAgICBSZWZQdHIg
c2Vzc2lvblNldCA9IHdlYlBhZ2VQcm94eUlEID8gbV9wZXJQYWdlU2Vzc2lvblNldHMuZ2V0KCp3
ZWJQYWdlUHJveHlJRCkgOiBudWxscHRyOwotICAgIHJldHVybiBzZXNzaW9uU2V0ID8gKnNlc3Np
b25TZXQudW5zYWZlR2V0KCkgOiBtX2RlZmF1bHRTZXNzaW9uU2V0LmdldCgpOworICAgIHJldHVy
biBzZXNzaW9uU2V0ID8gKnNlc3Npb25TZXQgOiBtX2RlZmF1bHRTZXNzaW9uU2V0LmdldCgpOwog
fQogCiBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVwaGVt
ZXJhbFN0YXRlbGVzc1Nlc3Npb25JZk5lZWRlZChzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXI+IHdlYlBhZ2VQcm94eUlELCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAppbmRleCBjMzg0NDFiNzBkZGMuLjhmOThhMTQ1NWM1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTE1MTcsNyArMTUxNyw3IEBAIFNl
cmlhbEZ1bmN0aW9uRGlzcGF0Y2hlciYgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hlcigpCiAgICAgLy8g
T3VyIHN5bmNTdGF0ZSBpcyBzcGVjaWZpYyB0byB0aGUgU2VyaWFsRnVuY3Rpb25EaXNwYXRjaGVy
IHdlIGhhdmUgYmVlbgogICAgIC8vIGJvdW5kIHRvIGR1cmluZyBvcGVuKCksIHNvIHdlIGNhbiBy
ZXRyaWV2ZSB0aGUgU2VyaWFsRnVuY3Rpb25EaXNwYXRjaGVyCiAgICAgLy8gZnJvbSBpdCAocmF0
aGVyIHRoYW4gc3RvcmluZyBhbm90aGVyIHBvaW50ZXIgb24gdGhpcyBjbGFzcykuCi0gICAgcmV0
dXJuICpkaXNwYXRjaGVyLnVuc2FmZUdldCgpOyAvLyBGSVhNRTogVGhpcyBpcyB1bnNhZmUuIFRo
aXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBSZWZQdHIgaW5zdGVhZC4KKyAgICByZXR1cm4gKmRp
c3BhdGNoZXI7IC8vIEZJWE1FOiBUaGlzIGlzIHVuc2FmZS4gVGhpcyBmdW5jdGlvbiBzaG91bGQg
cmV0dXJuIFJlZlB0ciBpbnN0ZWFkLgogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoT25l
SW5jb21pbmdNZXNzYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY2xh
c3NpZmllci9jb2NvYS9UZXh0RXh0cmFjdGlvbkZpbHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY2xhc3NpZmllci9jb2NvYS9UZXh0RXh0cmFjdGlvbkZpbHRlci5tbQppbmRleCA2YTIy
NGQ3MGZkMDMuLjc3YzQ4YmQ3NjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jbGFzc2lmaWVyL2NvY29hL1RleHRFeHRyYWN0aW9uRmlsdGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9UZXh0RXh0cmFjdGlvbkZpbHRlci5tbQpA
QCAtNDcsNyArNDcsNyBAQCBXVEZfTUFLRV9UWk9ORV9BTExPQ0FURURfSU1QTChUZXh0RXh0cmFj
dGlvbkZpbHRlcik7CiBUZXh0RXh0cmFjdGlvbkZpbHRlciYgVGV4dEV4dHJhY3Rpb25GaWx0ZXI6
OnNpbmdsZXRvbigpCiB7CiAgICAgaWYgKFJlZlB0ciBpbnN0YW5jZSA9IFdlYktpdDo6c2luZ2xl
dG9uKCkpCi0gICAgICAgIHJldHVybiAqaW5zdGFuY2UudW5zYWZlR2V0KCk7CisgICAgICAgIHJl
dHVybiAqaW5zdGFuY2U7CiAKICAgICBXZWJLaXQ6OnNpbmdsZXRvbigpID0gYWRvcHRSZWYoKm5l
dyBUZXh0RXh0cmFjdGlvbkZpbHRlcik7CiAgICAgcmV0dXJuIHNpbmdsZXRvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAppbmRleCA0OGEzN2FhMDQx
MzkuLjliMTU4NDAwMzc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZyYW1lSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZy
YW1lSW5mby5jcHAKQEAgLTcwLDEyICs3MCwxMiBAQCBXVEY6OlN0cmluZyBGcmFtZUluZm86OnRp
dGxlKCkgY29uc3QKIAogY29uc3QgV2ViS2l0OjpXZWJQYWdlUHJveHkqIEZyYW1lSW5mbzo6cGFn
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmcm9tSWRlbnRp
ZmllcihtX2RhdGEud2ViUGFnZVByb3h5SUQpLnVuc2FmZUdldCgpOworICAgIHJldHVybiBXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZnJvbUlkZW50aWZpZXIobV9kYXRhLndlYlBhZ2VQcm94eUlEKS5n
ZXQoKTsKIH0KIAogV2ViS2l0OjpXZWJQYWdlUHJveHkqIEZyYW1lSW5mbzo6cGFnZSgpCiB7Ci0g
ICAgcmV0dXJuIFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmcm9tSWRlbnRpZmllcihtX2RhdGEud2Vi
UGFnZVByb3h5SUQpLnVuc2FmZUdldCgpOworICAgIHJldHVybiBXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZnJvbUlkZW50aWZpZXIobV9kYXRhLndlYlBhZ2VQcm94eUlEKS5nZXQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FeHRl
bnNpb25zL0NvY29hL1dlYkV4dGVuc2lvbkNvbnRleHRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0V4dGVuc2lvbnMvQ29jb2EvV2ViRXh0ZW5zaW9uQ29udGV4dENvY29hLm1tCmlu
ZGV4IDZkNjkzZWE0OGYxNS4uY2I2MTk2ZDk3ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9FeHRlbnNpb25zL0NvY29hL1dlYkV4dGVuc2lvbkNvbnRleHRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FeHRlbnNpb25zL0NvY29hL1dlYkV4dGVuc2lv
bkNvbnRleHRDb2NvYS5tbQpAQCAtMjM4MSw3ICsyMzgxLDcgQEAgV2Vic2l0ZURhdGFTdG9yZSog
V2ViRXh0ZW5zaW9uQ29udGV4dDo6d2Vic2l0ZURhdGFTdG9yZShzdGQ6Om9wdGlvbmFsPFBBTDo6
U2Vzc2kKICAgICBpZiAocmVzdWx0ICYmICFyZXN1bHQtPmlzUGVyc2lzdGVudCgpICYmICFoYXNB
Y2Nlc3NUb1ByaXZhdGVEYXRhKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIHJlc3VsdC51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gcmVzdWx0LmdldCgpOwogfQogCiB2
b2lkIFdlYkV4dGVuc2lvbkNvbnRleHQ6OmNvb2tpZXNEaWRDaGFuZ2UoQVBJOjpIVFRQQ29va2ll
U3RvcmUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9pb3Mv
VUlHYW1lcGFkUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L2lvcy9VSUdhbWVwYWRQcm92aWRlcklPUy5tbQppbmRleCA5MGEwODU1ZGRlMzIuLmNjNDNiYjM5
NjY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9pb3MvVUlH
YW1lcGFkUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICNpZiBFTkFCTEUoV0VCWFIpICYmICFVU0UoT1BF
TlhSKQogICAgIGlmIChhdXRvIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2VXaXRoQWN0
aXZlWFJTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBwYWdlLnVuc2FmZUdldCgpOworICAgICAg
ICByZXR1cm4gcGFnZS5nZXQoKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCAwYzJl
MjVlMTYyOTYuLjhiODIxOGIyOTY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbUZvcklEKEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBBU1NFUlQoaXRlbS0+cGFnZUlE
KCkgPT0gbV9wYWdlLT5pZGVudGlmaWVyKCkpOwotICAgIHJldHVybiBpdGVtLnVuc2FmZUdldCgp
OworICAgIHJldHVybiBpdGVtLmdldCgpOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6
cGFnZUNsb3NlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmlu
ZGV4IDU0ZjQ1NzUzYzY5OS4uNjhmZTA4NTQ3YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcApAQCAtNzMxLDcgKzczMSw3IEBAIFdlYkZyYW1lUHJveHkqIFdl
YkZyYW1lUHJveHk6OmRlZXBMYXN0Q2hpbGQoKQogICAgIFJlZlB0ciByZXN1bHQgPSB0aGlzOwog
ICAgIGZvciAoUmVmUHRyIGxhc3QgPSBsYXN0Q2hpbGQoKTsgbGFzdDsgbGFzdCA9IGxhc3QtPmxh
c3RDaGlsZCgpKQogICAgICAgICByZXN1bHQgPSBsYXN0OwotICAgIHJldHVybiByZXN1bHQudW5z
YWZlR2V0KCk7CisgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKIH0KIAogV2ViRnJhbWVQcm94eSog
V2ViRnJhbWVQcm94eTo6Zmlyc3RDaGlsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViVmlld0ltcGwubW0KaW5kZXggZDE0OWNiMDZmMDdhLi43NjUyNzFjODdjMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJWaWV3SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViVmlld0ltcGwubW0KQEAgLTY1ODAsNyAr
NjU4MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoKQogUGxh
dGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFdlYlZpZXdJbXBsOjpwbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UoKSBjb25zdAogewogICAgIGlmIChSZWZQdHIgbWFuYWdlciA9IG1fcGFnZS0+
cGxheWJhY2tTZXNzaW9uTWFuYWdlcigpKQotICAgICAgICByZXR1cm4gbWFuYWdlci0+Y29udHJv
bHNNYW5hZ2VySW50ZXJmYWNlKCkudW5zYWZlR2V0KCk7CisgICAgICAgIHJldHVybiBtYW5hZ2Vy
LT5jb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKS5nZXQoKTsKIAogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCA1ODRmY2M4MGNjZTgu
LjBiZGRiM2U0MmIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTM3
MSw3ICszNzEsNyBAQCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpnZXRBY2Nlc3NpYmlsaXR5T2JqZWN0RgogICAgICAgICBheE9iamVjdENh
Y2hlLT5wZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZShGb3JjZUxheW91dDo6WWVzKTsKIAogICAg
ICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4T2JqZWN0ID0g
YXhPYmplY3RDYWNoZS0+ZXhwb3J0ZWRHZXRPckNyZWF0ZSgqY29yZUVsZW1lbnQpKQotICAgICAg
ICAgICAgcmV0dXJuIGF4T2JqZWN0LnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LmdldCgpOwogICAgIH0KIAogICAgIGVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpOwpAQCAtNjY3
LDE2ICs2NjcsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRG
b3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL3dlYmRyaXZlci93ZWJkcml2ZXItc3BlYy5odG1sI2Rmbi1jb250YWluZXIuCiAg
ICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewogICAgICAg
ICBpZiAoUmVmUHRyIHBhcmVudEVsZW1lbnQgPSBXZWJDb3JlOjphbmNlc3RvcnNPZlR5cGU8V2Vi
Q29yZTo6SFRNTERhdGFMaXN0RWxlbWVudD4oZWxlbWVudCkuZmlyc3QoKSkKLSAgICAgICAgICAg
IHJldHVybiBwYXJlbnRFbGVtZW50LnVuc2FmZUdldCgpOworICAgICAgICAgICAgcmV0dXJuIHBh
cmVudEVsZW1lbnQuZ2V0KCk7CiAgICAgICAgIGlmIChSZWZQdHIgcGFyZW50RWxlbWVudCA9IGRv
d25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5vd25lclNlbGVjdEVs
ZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50LnVuc2FmZUdldCgpOwor
ICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKFJlZlB0ciBvcHRncm91cCA9IGR5bmFtaWNEb3du
Y2FzdDxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KSkgewogICAgICAgICBp
ZiAoUmVmUHRyIHBhcmVudEVsZW1lbnQgPSBvcHRncm91cC0+b3duZXJTZWxlY3RFbGVtZW50KCkp
Ci0gICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudC51bnNhZmVHZXQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBwYXJlbnRFbGVtZW50LmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3Mvd2MvUmVtb3RlV0NMYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy93Yy9SZW1vdGVXQ0xheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5k
ZXggZDA4YjcyOWY5MGFjLi4xZGVhN2E4NzJlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlV0NMYXllclRyZWVIb3N0UHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mvd2MvUmVtb3RlV0NM
YXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIEdQVVByb2Nlc3NDb25uZWN0
aW9uJiBSZW1vdGVXQ0xheWVyVHJlZUhvc3RQcm94eTo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKQogICAgICAgICAgICAgTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNy
ZWF0ZVdDTGF5ZXJUcmVlSG9zdCh3Y0xheWVyVHJlZUhvc3RJZGVudGlmaWVyKCksIG1fcGFnZS0+
bmF0aXZlV2luZG93SGFuZGxlKCksIG1fdXNlc09mZnNjcmVlblJlbmRlcmluZyksCiAgICAgICAg
ICAgICAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSk7CiAgICAgfQotICAgIHJldHVybiAqZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24udW5z
YWZlR2V0KCk7CisgICAgcmV0dXJuICpncHVQcm9jZXNzQ29ubmVjdGlvbjsKIH0KIAogdm9pZCBS
ZW1vdGVXQ0xheWVyVHJlZUhvc3RQcm94eTo6ZGlzY29ubmVjdEdwdVByb2Nlc3NJZk5lZWRlZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCBjOThhODE5MjExMmIu
LmFhMGI3ZDkyMGIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBA
IC05Niw3ICs5Niw3IEBAIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgICAgIGdwdVByb2Nl
c3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKICAgICB9Ci0gICAgcmV0dXJuICpncHVQcm9jZXNzQ29ubmVjdGlvbi51bnNhZmVHZXQoKTsK
KyAgICByZXR1cm4gKmdwdVByb2Nlc3NDb25uZWN0aW9uOwogfQogCiB2b2lkIFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCmluZGV4IDdjYjVmNjJlYzU3ZS4uNmQzZTJiODFi
Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKQogICAgICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0
aGlzKTsKICAgICB9CiAKLSAgICByZXR1cm4gKmdwdVByb2Nlc3NDb25uZWN0aW9uLnVuc2FmZUdl
dCgpOworICAgIHJldHVybiAqZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiB9CiAKIFJlZjxHUFVQcm9j
ZXNzQ29ubmVjdGlvbj4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpwcm90ZWN0ZWRHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKaW5kZXgg
YzYyNTRkMTU1ZDZkLi43ZmJiMDVjNDgyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0
ZW5lci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lcjo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAg
ICBncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0aGlzKTsKICAgICAgICAgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIoaWRlbnRpZmllcigp
KSwgeyB9KTsKICAgICB9Ci0gICAgcmV0dXJuICpncHVQcm9jZXNzQ29ubmVjdGlvbi51bnNhZmVH
ZXQoKTsKKyAgICByZXR1cm4gKmdwdVByb2Nlc3NDb25uZWN0aW9uOwogfQogCiB2b2lkIFJlbW90
ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvVmlkZW9MYXll
clJlbW90ZUNvY29hLm1tCmluZGV4IDBkMTk3MWI4Yzc0Zi4uZDE2MTk5OWYwNDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL1ZpZGVvTGF5ZXJS
ZW1vdGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2Nv
Y29hL1ZpZGVvTGF5ZXJSZW1vdGVDb2NvYS5tbQpAQCAtODUsNyArODUsNyBAQCAtICh2b2lkKWRl
YWxsb2MKIAogLSAoV2ViS2l0OjpWaWRlb0xheWVyUmVtb3RlUGFyZW50KilwYXJlbnQKIHsKLSAg
ICByZXR1cm4gX3BhcmVudC5nZXQoKS51bnNhZmVHZXQoKTsKKyAgICByZXR1cm4gX3BhcmVudC5n
ZXQoKS5nZXQoKTsKIH0KIAogLSAodm9pZClzZXRQYXJlbnQ6KFdlYktpdDo6VmlkZW9MYXllclJl
bW90ZVBhcmVudCopcGFyZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDhmNDIzODdjYzZm
Ni4uZjA1ZTNhZDk3MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTg0NSwxNCArMTg0
NSwxNCBAQCBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhRnJvbUpTT05EYXRhKEpTT046OlZh
bHVlJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUodmFsdWUuYXNT
dHJpbmcoKSk7CiAgICAgY2FzZSBKU09OOjpWYWx1ZTo6VHlwZTo6T2JqZWN0OiB7CiAgICAgICAg
IGF1dG8gcmVzdWx0ID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoKTsKLSAgICAgICAgZm9yIChh
dXRvIFtrZXksIHZhbHVlXSA6ICp2YWx1ZS5hc09iamVjdCgpLnVuc2FmZUdldCgpKQorICAgICAg
ICBmb3IgKGF1dG8gW2tleSwgdmFsdWVdIDogKnZhbHVlLmFzT2JqZWN0KCkpCiAgICAgICAgICAg
ICByZXN1bHQtPmFkZChrZXksIHVzZXJEYXRhRnJvbUpTT05EYXRhKHZhbHVlKSk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2UgSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5
OiB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSB2YWx1ZS5hc0FycmF5KCk7CiAgICAgICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiByZXN1bHQ7Ci0gICAgICAgIGZvciAoYXV0byYgaXRlbSA6
ICp2YWx1ZS5hc0FycmF5KCkudW5zYWZlR2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6
ICp2YWx1ZS5hc0FycmF5KCkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVzZXJEYXRhRnJv
bUpTT05EYXRhKGl0ZW0pKTsKICAgICAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKHJlc3VsdCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA4OTEzM2UxMWYxNzcuLmJkZTI5MjVjMDM1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkxvY2FsRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJM
b2NhbEZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTI3LDcgKzkyNyw3IEBAIExvY2FsRnJhbWUq
IFdlYkxvY2FsRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uCiAgICAgaWYgKCFuZXdQYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKLSAgICByZXR1cm4gbmV3UGFnZS0+bG9jYWxNYWluRnJhbWUoKS51bnNhZmVHZXQoKTsK
KyAgICByZXR1cm4gbmV3UGFnZS0+bG9jYWxNYWluRnJhbWUoKS5nZXQoKTsKIH0KIAogdm9pZCBX
ZWJMb2NhbEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdl
Q29udHJvbGxlci5jcHAKaW5kZXggZDk4OWUyNTdmYjg4Li5kYTA0NWE5MWQyOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91
bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcApAQCAtNTE2LDcgKzUxNiw3IEBAIFdlYkNvcmU6Okxv
Y2FsRnJhbWUqIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6ZnJhbWVGb3JGb3VuZFRleHRS
YW5nZShjb25zdCBXCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKHJhbmdlLmZy
YW1lSWRlbnRpZmllci5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtYWluRnJhbWUudW5zYWZl
R2V0KCk7CisgICAgICAgIHJldHVybiBtYWluRnJhbWUuZ2V0KCk7CiAKICAgICByZXR1cm4gZHlu
YW1pY0Rvd25jYXN0PFdlYkNvcmU6OkxvY2FsRnJhbWU+KG1haW5GcmFtZS0+dHJlZSgpLmZpbmRC
eVVuaXF1ZU5hbWUoQXRvbVN0cmluZyB7IHJhbmdlLmZyYW1lSWRlbnRpZmllciB9LCAqbWFpbkZy
YW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKaW5kZXggMTMzZTE2NTdkZmM4Li41NDc5NzllOGM1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEzNDIsNyArMTM0Miw3IEBAIGlu
bGluZSBEb2N1bWVudExvYWRlciogV2ViRnJhbWU6OnBvbGljeVNvdXJjZURvY3VtZW50TG9hZGVy
KCkgY29uc3QKICAgICBpZiAoIXBvbGljeVNvdXJjZURvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCku
dXJsKCkuaGFzU3BlY2lhbFNjaGVtZSgpICYmIGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkpCiAgICAgICAgIHBvbGljeVNvdXJjZURvY3VtZW50TG9hZGVyID0gZG9jdW1l
bnQtPmxvYWRlcigpOwogCi0gICAgcmV0dXJuIHBvbGljeVNvdXJjZURvY3VtZW50TG9hZGVyLnVu
c2FmZUdldCgpOworICAgIHJldHVybiBwb2xpY3lTb3VyY2VEb2N1bWVudExvYWRlci5nZXQoKTsK
IH0KIAogT3B0aW9uU2V0PFdlYkNvcmU6OkFkdmFuY2VkUHJpdmFjeVByb3RlY3Rpb25zPiBXZWJG
cmFtZTo6YWR2YW5jZWRQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwN2U3Yjcz
NTg1Y2MuLjNkZTUxNGU4MTU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEzMDcsNyArMTMwNyw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50
aWZpZXIgcmVxdWVzdElECiAgICAgfQogCiAgICAgaWYgKFJlZlB0ciBhcmVhID0gZHluYW1pY0Rv
d25jYXN0PEhUTUxBcmVhRWxlbWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIG5vZGUgPSBhcmVhLT5p
bWFnZUVsZW1lbnQoKS51bnNhZmVHZXQoKTsKKyAgICAgICAgbm9kZSA9IGFyZWEtPmltYWdlRWxl
bWVudCgpLmdldCgpOwogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRl
eCAwYjQyZDEyYTU0MzQuLmIxMmQ1YzBmNTNhNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkKQEAgLTI4MTcsMjggKzI4MTcsNiBAQCBkZWYgY2hlY2tf
d3RmX21vdmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6CiAg
ICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL3d0Zl9tb3ZlJywgNCwgIlVzZSAnV1RGTW92
ZSgpJyBpbnN0ZWFkIG9mICdzdGQ6Om1vdmUoKScuIikKIAogCi1kZWYgY2hlY2tfdW5zYWZlX2dl
dChjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfc3RhdGUsIGVycm9yKToKLSAgICAiIiJM
b29rcyBmb3IgdXNlIG9mICd1bnNhZmVHZXQoKScgd2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQuCi0K
LSAgICBBcmdzOgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBj
b250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhl
IGxpbmUgdG8gY2hlY2suCi0gICAgICBmaWxlX3N0YXRlOiBBIF9GaWxlU3RhdGUgaW5zdGFuY2Ug
d2hpY2ggbWFpbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgICAgICAgICAgICAgICB0aGUg
c3RhdGUgb2YgdGhpbmdzIGluIHRoZSBmaWxlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0
byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgICMgVGhpcyBjaGVj
ayBkb2Vzbid0IGFwcGx5IHRvIEMgaW1wbGVtZW50YXRpb24gZmlsZXMuCi0gICAgaWYgZmlsZV9z
dGF0ZS5pc19jKCk6Ci0gICAgICAgIHJldHVybgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVs
aWRlZFtsaW5lX251bWJlcl0gICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KLQot
ICAgIHVzaW5nX3Vuc2FmZV9nZXQgPSBzZWFyY2gocidcYnVuc2FmZUdldFxzKlwoXHMqXCknLCBs
aW5lKQotICAgIGlmIHVzaW5nX3Vuc2FmZV9nZXQ6Ci0gICAgICAgIGVycm9yKGxpbmVfbnVtYmVy
LCAncnVudGltZS91bnNhZmVfZ2V0JywgNSwgIkF2b2lkIHVzaW5nICd1bnNhZmVHZXQoKScgYnkg
ZXh0ZW5kaW5nIHRoZSBsaWZldGltZSBvZiB0aGUgUmVmUHRyLiIpCi0KLQogZGVmIGNoZWNrX2Nh
bGxvbm1haW50aHJlYWQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9z
dGF0ZSwgZXJyb3IpOgogICAgICIiIkxvb2tzIGZvciB1c2Ugb2YgJ2NhbGxPbk1haW5UaHJlYWQo
KScgd2hpY2ggc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggJ2NhbGxPbk1haW5SdW5Mb29wKCknLgog
CkBAIC0zNzU0LDcgKzM3MzIsNiBAQCBkZWYgY2hlY2tfc3R5bGUoY2xlYW5fbGluZXMsIGxpbmVf
bnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgY2xhc3Nfc3RhdGUsIGZpbGVfc3RhdAogICAgIGNoZWNr
X21heF9taW5fbWFjcm9zKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwgZXJy
b3IpCiAgICAgY2hlY2tfd3RmX2NoZWNrZWRfc2l6ZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGZpbGVfc3RhdGUsIGVycm9yKQogICAgIGNoZWNrX3d0Zl9tb3ZlKGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCi0gICAgY2hlY2tfdW5zYWZlX2dldChjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGZpbGVfc3RhdGUsIGVycm9yKQogICAgIGNoZWNrX3d0Zl9tYWtl
X3VuaXF1ZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfc3RhdGUsIGVycm9yKQogICAg
IGNoZWNrX3d0Zl9uZXZlcl9kZXN0cm95ZWQoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxl
X3N0YXRlLCBlcnJvcikKICAgICBjaGVja19sb2NrX2d1YXJkKGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZmlsZV9zdGF0ZSwgZXJyb3IpCkBAIC01MDMwLDcgKzUwMDcsNiBAQCBjbGFzcyBDcHBD
aGVja2VyKG9iamVjdCk6CiAgICAgICAgICdydW50aW1lL3NvZnQtbGlua2VkLWFsbG9jJywKICAg
ICAgICAgJ3J1bnRpbWUvc3RyaW5nJywKICAgICAgICAgJ3J1bnRpbWUvdGhyZWFkc2FmZV9mbics
Ci0gICAgICAgICdydW50aW1lL3Vuc2FmZV9nZXQnLAogICAgICAgICAncnVudGltZS91bnNpZ25l
ZCcsCiAgICAgICAgICdydW50aW1lL3ZpcnR1YWwnLAogICAgICAgICAncnVudGltZS93dGZfY2hl
Y2tlZF9zaXplJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggODQxZTM5OTBlNTE5Li4wZWJmOTZlMGFiNmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3Vu
aXR0ZXN0LnB5CkBAIC02MTA1LDI0ICs2MTA1LDYgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENw
cFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAgICAgIiAgW3J1bnRpbWUvd3RmX21vdmVdIFs0XSIs
CiAgICAgICAgICAgICAnZm9vLm1tJykKIAotICAgIGRlZiB0ZXN0X3Vuc2FmZV9nZXQoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnYXV0byBwdHIgPSBvYmou
Z2V0KCk7JywKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnYXV0byBwdHIgPSBvYmoudW5zYWZl
R2V0KCk7JywKLSAgICAgICAgICAgICJBdm9pZCB1c2luZyAndW5zYWZlR2V0KCknIGJ5IGV4dGVu
ZGluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIFJlZlB0ci4iCi0gICAgICAgICAgICAiICBbcnVudGlt
ZS91bnNhZmVfZ2V0XSBbNV0iLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnYXV0byBwdHIgPSBvYmoudW5zYWZlR2V0KCk7
JywKLSAgICAgICAgICAgICJBdm9pZCB1c2luZyAndW5zYWZlR2V0KCknIGJ5IGV4dGVuZGluZyB0
aGUgbGlmZXRpbWUgb2YgdGhlIFJlZlB0ci4iCi0gICAgICAgICAgICAiICBbcnVudGltZS91bnNh
ZmVfZ2V0XSBbNV0iLAotICAgICAgICAgICAgJ2Zvby5tbScpCi0KICAgICBkZWYgdGVzdF93dGZf
bmV2ZXJfZGVzdHJveWVkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50KAogICAgICAg
ICAgICAgICdzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9vPiBmb287JywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DU1NQYXJzZXIuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NTU1BhcnNlci5jcHAKaW5kZXggMWY3ZDQ0OWZjYWUx
Li45NjM5YTQ2MWU4N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DU1NQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DU1NQYXJzZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFRFU1QoQ1NTUGFyc2VyLCBQYXJzZUNv
bG9ySW5wdXQpCiAgICAgYXV0byBwcm9wZXJ0aWVzID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
Y3JlYXRlKCk7CiAKICAgICBBU1NFUlRfVFJVRShDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25M
aXN0KHByb3BlcnRpZXMsICJjb2xvcjogI2ZmMDAwMDsiX3MsIHN0cmljdENTU1BhcnNlckNvbnRl
eHQoKSkpOwotICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0aWVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5Q29sb3IpLnVuc2FmZUdldCgpOworICAgIGF1dG8gdmFsdWUgPSBwcm9wZXJ0
aWVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Q29sb3IpLmdldCgpOwogCiAgICAg
QVNTRVJUX1RSVUUoaXM8Q1NTVmFsdWU+KHZhbHVlKSk7CiAgICAgQ29sb3IgdmFsdWVDb2xvcihD
b2xvcjo6cmVkKTsKQEAgLTU5LDcgKzU5LDcgQEAgVEVTVChDU1NQYXJzZXIsIFBhcnNlQ29sb3JX
aXRoTmV3bGluZUFuZFdoaXRlc3BhY2VzSW5wdXQpCiAgICAgYXV0byBwcm9wZXJ0aWVzID0gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAKICAgICBBU1NFUlRfVFJVRShDU1NQYXJz
ZXI6OnBhcnNlRGVjbGFyYXRpb25MaXN0KHByb3BlcnRpZXMsICJjb2xvcjogIFxuICAgICNmZjAw
MDA7Il9zLCBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkpKTsKLSAgICBhdXRvIHZhbHVlID0gcHJv
cGVydGllcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKS51bnNhZmVHZXQo
KTsKKyAgICBhdXRvIHZhbHVlID0gcHJvcGVydGllcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUNvbG9yKS5nZXQoKTsKIAogICAgIEFTU0VSVF9UUlVFKGlzPENTU1ZhbHVlPih2YWx1
ZSkpOwogICAgIENvbG9yIHZhbHVlQ29sb3IoQ29sb3I6OnJlZCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAKaW5kZXggNTU2NjJk
ZWJlNWU4Li41NDlkODYzOTA0ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBURVNUKERv
Y3VtZW50T3JkZXIsIFBvc2l0aW9ucykKICAgICBURVNUX0FMTF9QT1NJVElPTl9UWVBFUyhnLCAw
LCBjLCAxLCBsZXNzKTsKICAgICBURVNUX0FMTF9QT1NJVElPTl9UWVBFUyhnLCAwLCBjLCAyLCBs
ZXNzKTsKIAotICAgIGF1dG8mIGggPSAqZy0+aW5uZXJUZXh0RWxlbWVudCgpLnVuc2FmZUdldCgp
OworICAgIGF1dG8mIGggPSAqZy0+aW5uZXJUZXh0RWxlbWVudCgpOwogICAgIFRFU1RfQUxMX1BP
U0lUSU9OX1RZUEVTKGJvZHksIDEsIGgsIDAsIGxlc3MpOwogICAgIFRFU1RfQUxMX1BPU0lUSU9O
X1RZUEVTKGMsIDAsIGgsIDAsIGxlc3MpOwogICAgIFRFU1RfQUxMX1BPU0lUSU9OX1RZUEVTKGgs
IDAsIGMsIDEsIGxlc3MpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggODhlZTk5NDU0MzllLi5hYWQ5YWNi
MGQ3ZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtODUsNyArODUsNyBAQCBURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogICAgICAgICBO
U1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVu
Z3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9y
IChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkudW5zYWZlR2V0KCkpCisgICAgICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RS
VUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3Rl
ZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEu
Y291bnQsIHNlZ21lbnRDb3VudCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>