<?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>198796</bug_id>
          
          <creation_ts>2019-06-12 11:37:16 -0700</creation_ts>
          <short_desc>REGRESSION(r246322): &quot;It&apos;s a huge page load regression on iOS&quot; (Requested by saamyjoon on #webkit).</short_desc>
          <delta_ts>2019-06-12 11:42:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198726</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1544176</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-12 11:37:16 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/246322 broke the build:
&quot;It&apos;s a huge page load regression on iOS&quot; (Requested by saamyjoon on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544178</commentid>
    <comment_count>1</comment_count>
      <attachid>371976</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-12 11:37:31 -0700</bug_when>
    <thetext>Created attachment 371976
ROLLOUT of r246322

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544179</commentid>
    <comment_count>2</comment_count>
      <attachid>371976</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-12 11:41:02 -0700</bug_when>
    <thetext>Comment on attachment 371976
ROLLOUT of r246322

Clearing flags on attachment: 371976

Committed r246368: &lt;https://trac.webkit.org/changeset/246368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544180</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-12 11:41:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544182</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-12 11:42:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/51676224&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371976</attachid>
            <date>2019-06-12 11:37:31 -0700</date>
            <delta_ts>2019-06-12 11:41:02 -0700</delta_ts>
            <desc>ROLLOUT of r246322</desc>
            <filename>bug-198796-20190612113731.patch</filename>
            <type>text/plain</type>
            <size>120719</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YzA4ZjYwMzljMTEwODRkMTE4N2ExNWM2MGYwZTEzNTI2ODk5YmRkLi5iODZlYWU0NzA4NzM4M2Uw
Y2E0ZGFmZmE3MzczOGNjNWJmODJlZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wNi0xMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0NjMyMi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODc5NgorCisgICAg
ICAgICJJdCdzIGEgaHVnZSBwYWdlIGxvYWQgcmVncmVzc2lvbiBvbiBpT1MiIChSZXF1ZXN0ZWQg
YnkKKyAgICAgICAgc2FhbXlqb29uIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldDoKKworICAgICAgICAiUm9sbCBvdXQgUEFDIGNhZ2UiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg3MjYKKyAgICAgICAgaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NjMyMgorCiAyMDE5LTA2LTExICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIHRocm93
IGlmIHByb3h5IHNldCByZXR1cm5zIGZhbHNpc2ggaW4gc3RyaWN0IG1vZGUgY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCBmMzdmN2ViMWZmN2Y1ODUzNTQwM2FlZGI0YTIxOWI1MTdlMjI0NzA0Li5kMzg0MjkwNmUwZmQ3
NTZhYmVmODZhODExYjQ3ODU4MjZhMzg3OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA2
LTEyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjQ2MzIyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4Nzk2CisKKyAgICAgICAgIkl0J3MgYSBodWdlIHBh
Z2UgbG9hZCByZWdyZXNzaW9uIG9uIGlPUyIgKFJlcXVlc3RlZCBieQorICAgICAgICBzYWFteWpv
b24gb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAg
ICJSb2xsIG91dCBQQUMgY2FnZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5ODcyNgorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjQ2MzIyCisKIDIwMTktMDYtMTAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxvZ2dpbmcgZm9yIFVJLXNpZGUgY29tcG9zaXRpbmcg
aGl0LXRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCA5M2VlMmU2ZTg3YWZlMmE4NmU4OTk0NTNiY2Y3ZGU5
N2U2ZGIzMjFlLi4xMTA0OTI2ZjE5YjRjYWY5Njg0OTEwNmEwOTEwMWNiYTNiNTNjYTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDYtMTIgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
NDYzMjIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTg3OTYKKworICAgICAgICAiSXQncyBhIGh1Z2UgcGFnZSBsb2FkIHJlZ3Jlc3Npb24gb24gaU9T
IiAoUmVxdWVzdGVkIGJ5CisgICAgICAgIHNhYW15am9vbiBvbiAjd2Via2l0KS4KKworICAgICAg
ICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIlJvbGwgb3V0IFBBQyBjYWdlIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NzI2CisgICAg
ICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDYzMjIKKwogMjAxOS0wNi0x
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsIG91dCBQ
QUMgY2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKaW5kZXggZGRjY2QwMGE4
NzliNTE3MDIxY2VlZjhmZDE5OTY2MDk3ZGJmODc1Ny4uYzE2NzRlYzkxOWM3YmVjMjY3OGEzNzQ4
MTdiNzE5YWI2ZTJjYjZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9DUFUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCkBA
IC01Niw2ICs1NiwxNSBAQCBjb25zdGV4cHIgYm9vbCBpc0FSTTY0KCkKICNlbmRpZgogfQogCitj
b25zdGV4cHIgYm9vbCBpc0FSTTY0RSgpCit7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICByZXR1cm4g
dHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGNvbnN0ZXhwciBi
b29sIGlzWDg2KCkKIHsKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCmlu
ZGV4IDk4MDNiZDVjMTQwM2QwNDdkNTk2NWYwZjRjY2EwYWUxMDM3ZjRkYjAuLjBiOTY4ZjZhZmVk
ZmVhNjk1YTRhM2EzMDhkMzQwZjA3NmM5Y2ZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKQEAgLTgyLDYgKzgy
LDI4IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueHBhY2kodGFyZ2V0KTsKICAgICB9
CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdGFnQXJyYXlQdHIoUmVnaXN0ZXJJRCBsZW5ndGgs
IFJlZ2lzdGVySUQgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucGFjZGIodGFy
Z2V0LCBsZW5ndGgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ0FycmF5
UHRyKFJlZ2lzdGVySUQgbGVuZ3RoLCBSZWdpc3RlcklEIHRhcmdldCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmF1dGRiKHRhcmdldCwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgdW50YWdBcnJheVB0cihBZGRyZXNzIGxlbmd0aCwgUmVnaXN0ZXJJRCB0YXJn
ZXQpCisgICAgeworICAgICAgICBhdXRvIGxlbmd0aEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgbG9hZDMyKGxlbmd0aCwgbGVuZ3RoR1BS
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYXV0ZGIodGFyZ2V0LCBsZW5ndGhHUFIpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZW1vdmVBcnJheVB0clRhZyhSZWdpc3RlcklEIHRh
cmdldCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhwYWNkKHRhcmdldCk7CisgICAgfQor
CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgSW52YWxpZEdQUiAgPSBzdGF0aWNfY2FzdDxS
ZWdpc3RlcklEPigtMSk7CiAKICAgICBlbnVtIGNsYXNzIENhbGxTaWduYXR1cmVUeXBlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMWIzYTkyZTUyMjYz
MjAzNjVkZmFhZTYzMDNjMGZlMWUyZGJiOWVlOC4uYjQwOThiY2RkMTk3OTZhM2ZiMjEzMTk2ZDhh
MDNlYTkyYzY0Y2YyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAKQEAgLTEyNzQsNiArMTI3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGFy
ZyA9IHRtcCh2YWx1ZS52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcjoKKyAgICAgICAgICAgIGNhc2UgVmFsdWVS
ZXA6OlNvbWVMYXRlUmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAgYXJnID0gdG1wKHZhbHVlLnZh
bHVlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyV2l0aENsb2JiZXI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAppbmRleCBkYWFlMjQzMmM1YjViZjQ0ZDhlYzNm
MTZmNzA5ZTAzYzBjYzU3YTIzLi4xNTMyZWRmZjJiOTRmOTRkZWE4MWRhNDcyZWVlY2EwY2EzZTQ2
ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3Bl
Y2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNp
YWwuY3BwCkBAIC0xMjAsNiArMTIwLDcgQEAgYm9vbCBQYXRjaHBvaW50U3BlY2lhbDo6YWRtaXRz
U3RhY2soSW5zdCYgaW5zdCwgdW5zaWduZWQgYXJnSW5kZXgpCiAgICAgICAgIGNhc2UgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcjoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyV2l0
aENsb2JiZXI6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyOgorICAg
ICAgICBjYXNlIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyOgogICAgICAgICBjYXNlIFZhbHVl
UmVwOjpSZWdpc3RlcjoKICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6TGF0ZVJlZ2lzdGVyOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0
YWNrbWFwU3BlY2lhbC5jcHAKaW5kZXggMmYwNzExMTQ3MDE4OGE5Y2U5YWVjYTNmMWViY2YzN2Vi
ZGJkM2YzZC4uMjk4Yzk0Yzk1YTVjNWQwMWRkZWNhNDVjYTRhZGI2MDczZDVlZTMxZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCkBAIC0xMTMs
NiArMTEzLDcgQEAgdm9pZCBTdGFja21hcFNwZWNpYWw6OmZvckVhY2hBcmdJbXBsKAogICAgICAg
ICAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyV2l0aENsb2JiZXI6CiAgICAgICAgICAg
ICAgICAgcm9sZSA9IEFyZzo6VXNlRGVmOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcjoKICAgICAgICAgICAgIGNhc2Ug
VmFsdWVSZXA6OkxhdGVSZWdpc3RlcjoKICAgICAgICAgICAgICAgICByb2xlID0gQXJnOjpMYXRl
VXNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU0LDYgKzI1NSw3IEBAIGJvb2wgU3Rh
Y2ttYXBTcGVjaWFsOjppc0FyZ1ZhbGlkRm9yUmVwKEFpcjo6Q29kZSYgY29kZSwgY29uc3QgQWly
OjpBcmcmIGFyZywgY29uCiAgICAgY2FzZSBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyOgogICAgIGNh
c2UgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcldpdGhDbG9iYmVyOgogICAgIGNhc2UgVmFsdWVSZXA6
OlNvbWVFYXJseVJlZ2lzdGVyOgorICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXI6
CiAgICAgICAgIHJldHVybiBhcmcuaXNUbXAoKTsKICAgICBjYXNlIFZhbHVlUmVwOjpMYXRlUmVn
aXN0ZXI6CiAgICAgY2FzZSBWYWx1ZVJlcDo6UmVnaXN0ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggZjVjZDdkMmYwYzkxZTg2ODY4ZDEyZWY4MDlhMTUwZGRm
ZmI0ZDA4Yi4uZjdiM2M1NWY4ZWVmMDk5YjBiZDc4YzQwNWZkZmYwNzc1YjYxM2M3YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApAQCAtNTgwLDYgKzU4MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6UmVnaXN0
ZXI6CiAgICAgICAgIGNhc2UgVmFsdWVSZXA6OkxhdGVSZWdpc3RlcjoKKyAgICAgICAgY2FzZSBW
YWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcjoKICAgICAgICAgICAgIGlmICh2YWx1ZS5yZXAoKS5r
aW5kKCkgPT0gVmFsdWVSZXA6OkxhdGVSZWdpc3RlcikKICAgICAgICAgICAgICAgICBWQUxJREFU
RShyb2xlID09IENvbnN0cmFpbnRSb2xlOjpVc2UsICgiQXQgIiwgKmNvbnRleHQsICI6ICIsIHZh
bHVlKSk7CiAgICAgICAgICAgICBpZiAodmFsdWUucmVwKCkucmVnKCkuaXNHUFIoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcAppbmRleCA0NWExMTEzZTBkZTQzNTQ2OWQ5
MzAyOWJhNDg5MTNiMWU3MWQ1ZGEzLi5kNGI0N2YxNGIwZTg5YzA4Y2Q2NjFiNDg4YjVlNmVlYjk0
NDBmMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuY3BwCkBAIC00Miw2
ICs0Miw3IEBAIHZvaWQgVmFsdWVSZXA6OmFkZFVzZWRSZWdpc3RlcnNUbyhSZWdpc3RlclNldCYg
c2V0KSBjb25zdAogICAgIGNhc2UgU29tZVJlZ2lzdGVyOgogICAgIGNhc2UgU29tZVJlZ2lzdGVy
V2l0aENsb2JiZXI6CiAgICAgY2FzZSBTb21lRWFybHlSZWdpc3RlcjoKKyAgICBjYXNlIFNvbWVM
YXRlUmVnaXN0ZXI6CiAgICAgY2FzZSBDb25zdGFudDoKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgTGF0ZVJlZ2lzdGVyOgpAQCAtNzQsNiArNzUsNyBAQCB2b2lkIFZhbHVlUmVwOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgY2FzZSBTb21lUmVnaXN0ZXI6CiAgICAgY2FzZSBT
b21lUmVnaXN0ZXJXaXRoQ2xvYmJlcjoKICAgICBjYXNlIFNvbWVFYXJseVJlZ2lzdGVyOgorICAg
IGNhc2UgU29tZUxhdGVSZWdpc3RlcjoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTGF0ZVJl
Z2lzdGVyOgogICAgIGNhc2UgUmVnaXN0ZXI6CkBAIC0xODMsNiArMTg1LDkgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFZhbHVlUmVwOjpLaW5kIGtpbmQpCiAgICAgY2Fz
ZSBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXI6CiAgICAgICAgIG91dC5wcmludCgiU29tZUVh
cmx5UmVnaXN0ZXIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVM
YXRlUmVnaXN0ZXI6CisgICAgICAgIG91dC5wcmludCgiU29tZUxhdGVSZWdpc3RlciIpOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBWYWx1ZVJlcDo6UmVnaXN0ZXI6CiAgICAgICAgIG91dC5w
cmludCgiUmVnaXN0ZXIiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlUmVwLmgKaW5kZXggNDYzZjI3ZTQwZDY0ZTFiZmQyZTIxMmUzNjhjYmVhMmZiZGYzNzBi
Ny4uMGZmMzlkOWI4NzY5YzNhZjk3OTRjYTc0MjllYThmZWNlOTU5ZjllOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCkBAIC03NCw3ICs3NCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIHRoYXQgdGhlIGRlZiBoYXBwZW5zIGJlZm9yZSBhbnkgb2YgdGhlIGVmZmVjdHMgb2Yg
dGhlIHN0YWNrbWFwLiBUaGlzIGlzIG9ubHkgdmFsaWQgZm9yCiAgICAgICAgIC8vIHRoZSByZXN1
bHQgY29uc3RyYWludCBvZiBhIFBhdGNocG9pbnQuCiAgICAgICAgIFNvbWVFYXJseVJlZ2lzdGVy
LAotICAgICAgICAKKworICAgICAgICAvLyBBcyBhbiBpbnB1dCByZXByZXNlbnRhdGlvbiwgdGhp
cyB0ZWxscyB1cyB0aGF0IEIzIHNob3VsZCBwaWNrIHNvbWUgcmVnaXN0ZXIsIGJ1dCBpbXBsaWVz
CisgICAgICAgIC8vIHRoZSB1c2UgaGFwcGVucyBhZnRlciBhbnkgZGVmcy4gVGhpcyBpcyBvbmx5
IHdvcmtzIGZvciBwYXRjaHBvaW50cy4KKyAgICAgICAgU29tZUxhdGVSZWdpc3RlciwKKwogICAg
ICAgICAvLyBBcyBhbiBpbnB1dCByZXByZXNlbnRhdGlvbiwgdGhpcyBmb3JjZXMgYSBwYXJ0aWN1
bGFyIHJlZ2lzdGVyLiBBcyBhbiBvdXRwdXQKICAgICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHRo
aXMgdGVsbHMgdXMgd2hhdCByZWdpc3RlciBCMyBwaWNrZWQuCiAgICAgICAgIFJlZ2lzdGVyLApA
QCAtMTExLDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZVJlcChLaW5kIGtpbmQpCiAgICAg
ICAgIDogbV9raW5kKGtpbmQpCiAgICAgewotICAgICAgICBBU1NFUlQoa2luZCA9PSBXYXJtQW55
IHx8IGtpbmQgPT0gQ29sZEFueSB8fCBraW5kID09IExhdGVDb2xkQW55IHx8IGtpbmQgPT0gU29t
ZVJlZ2lzdGVyIHx8IGtpbmQgPT0gU29tZVJlZ2lzdGVyV2l0aENsb2JiZXIgfHwga2luZCA9PSBT
b21lRWFybHlSZWdpc3Rlcik7CisgICAgICAgIEFTU0VSVChraW5kID09IFdhcm1BbnkgfHwga2lu
ZCA9PSBDb2xkQW55IHx8IGtpbmQgPT0gTGF0ZUNvbGRBbnkgfHwga2luZCA9PSBTb21lUmVnaXN0
ZXIgfHwga2luZCA9PSBTb21lUmVnaXN0ZXJXaXRoQ2xvYmJlciB8fCBraW5kID09IFNvbWVFYXJs
eVJlZ2lzdGVyIHx8IGtpbmQgPT0gU29tZUxhdGVSZWdpc3Rlcik7CiAgICAgfQogCiAgICAgc3Rh
dGljIFZhbHVlUmVwIHJlZyhSZWcgcmVnKQpAQCAtMTg1LDcgKzE4OSw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNBbnkoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gV2FybUFueSB8fCBraW5k
KCkgPT0gQ29sZEFueSB8fCBraW5kKCkgPT0gTGF0ZUNvbGRBbnk7IH0KIAotICAgIGJvb2wgaXNS
ZWcoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgfHwga2luZCgpID09IExhdGVS
ZWdpc3RlcjsgfQorICAgIGJvb2wgaXNSZWcoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gUmVn
aXN0ZXIgfHwga2luZCgpID09IExhdGVSZWdpc3RlciB8fCBraW5kKCkgPT0gU29tZUxhdGVSZWdp
c3RlcjsgfQogICAgIAogICAgIFJlZyByZWcoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDljNzA0OTQzODgxMTY1MTFlZTU1
M2M2MjViZjQ5MTY5M2FhOTIyOTUuLjVjYjI3NmYzZjE5ZmNmODFlYmZmM2VmZGNkN2JlMDE1Mzk0
N2U5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApA
QCAtMTk4LDcgKzE5OCw3IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IHNpemUsCiAgICAgfQogICAgIAog
ICAgIGlmICh2ZWN0b3IpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdD
bGFzczo6Y3JlYXRlV2l0aEZhc3RWZWN0b3IoZXhlYywgc3RydWN0dXJlLCBzaXplLCB2ZWN0b3Ip
KTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGVX
aXRoRmFzdFZlY3RvcihleGVjLCBzdHJ1Y3R1cmUsIHNpemUsIHVudGFnQXJyYXlQdHIodmVjdG9y
LCBzaXplKSkpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgc2l6ZSkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NjhlZjFiZDkzMmI5ZTU1M2FlYWE5ZGNlNzg4NTdhOTllMTE5MTdiMC4uN2I5NmVjMDNlOTY0Mzlk
MTA4NTg2NTA2ZmE5ZTQwOTYyNmY5NDIwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJE
RkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1NuaXBwZXRQYXJhbXMuaCIKICNp
bmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJEaXNhbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpA
QCAtMjg3MSw5ICsyODcyLDIxIEBAIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpq
dW1wRm9yVHlwZWRBcnJheUlzTmV1dGVyZWRJZk91dE9mQm91bmRzKE5vZGUqCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTW9kZSgpKSwKICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoV2FzdGVmdWxUeXBl
ZEFycmF5KSk7CiAKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGhhc051bGxWZWN0b3Ig
PSBtX2ppdC5icmFuY2hUZXN0UHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaGFz
TnVsbFZlY3RvcjsKKyNpZiAhR0lHQUNBR0VfRU5BQkxFRCAmJiBDUFUoQVJNNjRFKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gbV9qaXQuc2NyYXRjaFJl
Z2lzdGVyKCk7CisgICAgICAgICAgICAgICAgRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGRpc2FsbG93U2NyYXRjaChtX2ppdCk7CisKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgbV9qaXQucmVtb3ZlQXJy
YXlQdHJUYWcoc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgaGFzTnVsbFZlY3RvciA9IG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2gpOworICAgICAgICAg
ICAgfQorI2Vsc2UgLy8gIUdJR0FDQUdFX0VOQUJMRUQgJiYgQ1BVKEFSTTY0RSkKKyAgICAgICAg
ICAgIGhhc051bGxWZWN0b3IgPSBtX2ppdC5icmFuY2hUZXN0UHRyKAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpaZXJvLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSk7CisjZW5k
aWYKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVTb3Vy
Y2UoKSwgbm9kZSwgaGFzTnVsbFZlY3Rvcik7CiAgICAgICAgICAgICBub3RXYXN0ZWZ1bC5saW5r
KCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTY3NDUsOSArNjc1OCwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ29uc3RhbnRTdG9yYWdlUG9pbnRlcihOb2RlKiBub2RlKQogICAgIHN0
b3JhZ2VSZXN1bHQoc3RvcmFnZUdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgc3RvcmFnZVJlZykKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHN0b3Jh
Z2VSZWcpCiB7CiAjaWYgR0lHQUNBR0VfRU5BQkxFRAorICAgIFVOVVNFRF9QQVJBTShiYXNlUmVn
KTsKICAgICBpZiAoIUdpZ2FjYWdlOjpzaG91bGRCZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIApAQCAtNjc1OSw3ICs2NzczLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhZ2VU
eXBlZEFycmF5U3RvcmFnZShHUFJSZWcgc3RvcmFnZVJlZykKICAgICB9CiAgICAgCiAgICAgbV9q
aXQuY2FnZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBzdG9yYWdlUmVnKTsKKyNlbGlmIENQVShBUk02
NEUpCisgICAgbV9qaXQudW50YWdBcnJheVB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHN0b3JhZ2VSZWcpOwog
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYmFzZVJlZyk7CiAgICAgVU5VU0VEX1BBUkFNKHN0b3Jh
Z2VSZWcpOwogI2VuZGlmCiB9CkBAIC02NzgzLDE2ICs2ODAwLDE3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBT
dHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIAotICAgIGRlZmF1bHQ6CisKKyAgICBkZWZhdWx0OiB7CiAgICAgICAgIGF1dG8gdHlw
ZWRBcnJheVR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKHR5cGVkQXJyYXlUeXBlLCBpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlw
ZSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBzdG9yYWdlUmVnKTsKLSAg
ICAgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKHN0b3JhZ2VSZWcpOworICAgICAgICBjYWdlVHlw
ZWRBcnJheVN0b3JhZ2UoYmFzZVJlZywgc3RvcmFnZVJlZyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICAKKyAgICB9CisKICAgICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VSZWcsIG5vZGUpOwog
fQogCkBAIC02ODE3LDE3ICs2ODM1LDI0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChOb2RlKiBub2RlKQogICAgICAgICBUcnVzdGVkSW1tMzIo
V2FzdGVmdWxUeXBlZEFycmF5KSk7CiAKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwg
dmVjdG9yR1BSKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBtYXNrIHRoZSBQQUMgYml0
cworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc3MDEK
ICAgICBKSVRDb21waWxlcjo6SnVtcCBudWxsVmVjdG9yID0gbV9qaXQuYnJhbmNoVGVzdFB0cihK
SVRDb21waWxlcjo6WmVybywgdmVjdG9yR1BSKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
ZGF0YUdQUik7CiAgICAgbV9qaXQuY2FnZShHaWdhY2FnZTo6SlNWYWx1ZSwgZGF0YUdQUik7CiAK
LSAgICBjYWdlVHlwZWRBcnJheVN0b3JhZ2UodmVjdG9yR1BSKTsKKyAgICBjYWdlVHlwZWRBcnJh
eVN0b3JhZ2UoYmFzZUdQUiwgdmVjdG9yR1BSKTsKIAogICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoZGF0YUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVy
KCkpLCBhcnJheUJ1ZmZlckdQUik7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgY2FnaW5nLgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MTUKICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFycmF5QnVmZmVyR1BSLCBB
cnJheUJ1ZmZlcjo6b2Zmc2V0T2ZEYXRhKCkpLCBkYXRhR1BSKTsKKyNpZiBDUFUoQVJNNjRFKQor
ICAgIG1faml0LnJlbW92ZUFycmF5UHRyVGFnKGRhdGFHUFIpOworI2VuZGlmCisKICAgICBtX2pp
dC5zdWJQdHIoZGF0YUdQUiwgdmVjdG9yR1BSKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVt
cCBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtOTgyMCw2ICs5ODQ1LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5V2l0aFNpemUoTm9kZSogbm9kZSkKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNGb3VyKSk7CiAgICAgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBzY3JhdGNoR1BSKS5saW5rVG8obG9vcCwgJm1faml0KTsKICAgICBk
b25lLmxpbmsoJm1faml0KTsKKyNpZiAhR0lHQUNBR0VfRU5BQkxFRCAmJiBDUFUoQVJNNjRFKQor
ICAgIC8vIHNpemVHUFIgaXMgc3RpbGwgYm94ZWQgYXMgYSBudW1iZXIgYW5kIHRoZXJlIGlzIG5v
IDMyLWJpdCB2YXJpYW50IG9mIHRoZSBQQUMgaW5zdHJ1Y3Rpb25zLgorICAgIG1faml0Lnplcm9F
eHRlbmQzMlRvUHRyKHNpemVHUFIsIHNjcmF0Y2hHUFIpOworICAgIG1faml0LnRhZ0FycmF5UHRy
KHNjcmF0Y2hHUFIsIHN0b3JhZ2VHUFIpOworI2VuZGlmCiAKICAgICBhdXRvIGJ1dHRlcmZseSA9
IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJh
eUJ1ZmZlclZpZXc+KApAQCAtOTg0MSw3ICs5ODcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1R5cGVkQXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwKICAgICAgICAg
cmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKLSAgICAKKwogICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDE1M2NiNzc3MzVlMGM3NjFjZjk1ZDc1
NzEzN2YzMTZkYTJiMzJjN2QuLjlmMWQ4OTNiODdjMTVjZWE0NTU5ZWQ3NzViMDk5NDFhYTAxMDFh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
QEAgLTE2NTIsNyArMTY1Miw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxib29sIHN0cmljdD4K
ICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwoRWRnZSwgRGF0YUZvcm1hdCYg
cmV0dXJuRm9ybWF0KTsKICAgICAKLSAgICB2b2lkIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShHUFJS
ZWcpOworICAgIHZvaWQgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKEdQUlJlZywgR1BSUmVnKTsKICAg
ICAKICAgICB2b2lkIHJlY29yZFNldExvY2FsKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYnl0
ZWNvZGVSZWcsIFZpcnR1YWxSZWdpc3RlciBtYWNoaW5lUmVnLCBEYXRhRm9ybWF0IGZvcm1hdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGI3ZmVlYjM3M2M4MmFiZGYyMzY5NTAyM2Y4YTY5MzU3MDRlMmJlMWEuLjJkNjJmYWE4
YzMzYWM5NDk5ZjUwM2ZkYjI0MDQ3NmRiNjNhNjFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDY4Miw3ICs0NjgyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdDIsIHQxKSk7CiAK
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhkYXRhVmlld0dQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCB0Mik7Ci0gICAgICAgIGNhZ2VU
eXBlZEFycmF5U3RvcmFnZSh0Mik7CisgICAgICAgIGNhZ2VUeXBlZEFycmF5U3RvcmFnZShkYXRh
Vmlld0dQUiwgdDIpOwogCiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGluZGV4R1BS
LCB0MSk7CiAgICAgICAgIGF1dG8gYmFzZUluZGV4ID0gSklUQ29tcGlsZXI6OkJhc2VJbmRleCh0
MiwgdDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09uZSk7CkBAIC00ODc4LDcgKzQ4NzgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2pp
dC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0MiwgdDEpKTsKIAogICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGRhdGFWaWV3R1BSLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIHQyKTsKLSAgICAgICAgY2FnZVR5cGVk
QXJyYXlTdG9yYWdlKHQyKTsKKyAgICAgICAgY2FnZVR5cGVkQXJyYXlTdG9yYWdlKGRhdGFWaWV3
R1BSLCB0Mik7CiAKICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoaW5kZXhHUFIsIHQx
KTsKICAgICAgICAgYXV0byBiYXNlSW5kZXggPSBKSVRDb21waWxlcjo6QmFzZUluZGV4KHQyLCB0
MSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAwNDZkZmZkMTQ5NTUzYmRlMTk5YTU1ZTRhNjli
ZjQyZmVmMTRjNTIyLi5kNzJhZjQxYjQxMzY4YzFjMGY5ZTE1OTA0MGFmZDUxY2Y1ZmIxNjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0z
ODgzLDcgKzM4ODMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bV9ub2RlLCBpc1R5cGVkVmlldyhtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkp
LCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwogICAgICAgICBMVmFsdWUg
dmVjdG9yID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3Zl
Y3Rvcik7Ci0gICAgICAgIHNldFN0b3JhZ2UoY2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgdmVj
dG9yKSk7CisgICAgICAgIHNldFN0b3JhZ2UoY2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgdmVj
dG9yLCBjZWxsKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUNoZWNrQXJyYXkoKQpA
QCAtMzkyNywxNCArMzkyNywxNSBAQCBwcml2YXRlOgogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KG5vdE51bGwsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgTFZhbHVlIGJ1dHRlcmZseVB0ciA9
IGNhZ2VkKEdpZ2FjYWdlOjpKU1ZhbHVlLCBtX291dC5sb2FkUHRyKGJhc2VQdHIsIG1faGVhcHMu
SlNPYmplY3RfYnV0dGVyZmx5KSk7CisgICAgICAgIExWYWx1ZSBidXR0ZXJmbHlQdHIgPSBjYWdl
ZChHaWdhY2FnZTo6SlNWYWx1ZSwgbV9vdXQubG9hZFB0cihiYXNlUHRyLCBtX2hlYXBzLkpTT2Jq
ZWN0X2J1dHRlcmZseSksIGJhc2VQdHIpOwogICAgICAgICBMVmFsdWUgYXJyYXlCdWZmZXJQdHIg
PSBtX291dC5sb2FkUHRyKGJ1dHRlcmZseVB0ciwgbV9oZWFwcy5CdXR0ZXJmbHlfYXJyYXlCdWZm
ZXIpOwogCi0gICAgICAgIExWYWx1ZSB2ZWN0b3JQdHIgPSBjYWdlZChHaWdhY2FnZTo6UHJpbWl0
aXZlLCB2ZWN0b3IpOworICAgICAgICBMVmFsdWUgdmVjdG9yUHRyID0gY2FnZWQoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgdmVjdG9yLCBiYXNlUHRyKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBu
ZWVkcyBjYWdpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzU1MTUKICAgICAgICAgTFZhbHVlIGRhdGFQdHIgPSBtX291dC5sb2FkUHRyKGFy
cmF5QnVmZmVyUHRyLCBtX2hlYXBzLkFycmF5QnVmZmVyX2RhdGEpOworICAgICAgICBkYXRhUHRy
ID0gcmVtb3ZlQXJyYXlQdHJUYWcoZGF0YVB0cik7CiAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
d2FzdGVmdWxPdXQgPSBtX291dC5hbmNob3IobV9vdXQuc3ViKHZlY3RvclB0ciwgZGF0YVB0cikp
OwogCkBAIC02NDg0LDYgKzY0ODUsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291
dC5pbnQ2NFplcm8sCiAgICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGll
cyk7CiAKKyNpZiAhR0lHQUNBR0VfRU5BQkxFRCAmJiBDUFUoQVJNNjRFKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIExWYWx1ZSBzaXplUHRyID0gbV9vdXQuemVyb0V4dFB0cihzaXpl
KTsKKyAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0
LnBhdGNocG9pbnQocG9pbnRlclR5cGUoKSk7CisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRl
LT5hcHBlbmRTb21lUmVnaXN0ZXIoc3RvcmFnZSk7CisgICAgICAgICAgICAgICAgYXV0aGVudGlj
YXRlLT5hcHBlbmQoc2l6ZVB0ciwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVS
ZWdpc3RlcikpOworICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFy
YW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFt
c1syXS5ncHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICBzdG9yYWdlID0gYXV0aGVudGljYXRlOworICAgICAgICAgICAgfQorI2VuZGlm
CisKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGhhdmVTdG9yYWdlID0gbV9vdXQuYW5jaG9y
KHN0b3JhZ2UpOwogCiAgICAgICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0KQEAgLTEy
NzAyLDcgKzEyNzE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IG1f
b3V0LmFkZChpbmRleFRvQ2hlY2ssIG1fb3V0LmNvbnN0SW50NjQoZGF0YS5ieXRlU2l6ZSAtIDEp
KTsKICAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51bGxwdHIsIG1f
b3V0LmFib3ZlT3JFcXVhbChpbmRleFRvQ2hlY2ssIGxlbmd0aCkpOwogCi0gICAgICAgIExWYWx1
ZSB2ZWN0b3IgPSBjYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBtX291dC5sb2FkUHRyKGRhdGFW
aWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3RvcikpOworICAgICAgICBMVmFsdWUg
dmVjdG9yID0gY2FnZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbV9vdXQubG9hZFB0cihkYXRhVmll
dywgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpLCBkYXRhVmlldyk7CiAKICAgICAg
ICAgVHlwZWRQb2ludGVyIHBvaW50ZXIobV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcywgbV9v
dXQuYWRkKHZlY3RvciwgbV9vdXQuemVyb0V4dFB0cihpbmRleCkpKTsKIApAQCAtMTI4NjEsNyAr
MTI4NzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBjYWdlZChHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBtX291dC5sb2FkUHRyKGRhdGFWaWV3LCBtX2hlYXBzLkpTQXJyYXlCdWZm
ZXJWaWV3X3ZlY3RvcikpOworICAgICAgICBMVmFsdWUgdmVjdG9yID0gY2FnZWQoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgbV9vdXQubG9hZFB0cihkYXRhVmlldywgbV9oZWFwcy5KU0FycmF5QnVmZmVy
Vmlld192ZWN0b3IpLCBkYXRhVmlldyk7CiAgICAgICAgIFR5cGVkUG9pbnRlciBwb2ludGVyKG1f
aGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMsIG1fb3V0LmFkZCh2ZWN0b3IsIG1fb3V0Lnplcm9F
eHRQdHIoaW5kZXgpKSk7CiAKICAgICAgICAgaWYgKGRhdGEuaXNGbG9hdGluZ1BvaW50KSB7CkBA
IC0xNDEwOCwxMCArMTQxMjMsNDIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHBlcmZvcm1TdG9yZSwgbGFzdE5leHQpOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAg
IExWYWx1ZSBjYWdlZChHaWdhY2FnZTo6S2luZCBraW5kLCBMVmFsdWUgcHRyKQorCisgICAgTFZh
bHVlIHVudGFnQXJyYXlQdHIoTFZhbHVlIHB0ciwgTFZhbHVlIHNpemUpCisgICAgeworI2lmIENQ
VShBUk02NEUpCisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogYXV0aGVudGljYXRlID0gbV9vdXQu
cGF0Y2hwb2ludChwb2ludGVyVHlwZSgpKTsKKyAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmRT
b21lUmVnaXN0ZXIocHRyKTsKKyAgICAgICAgYXV0aGVudGljYXRlLT5hcHBlbmQoc2l6ZSwgQjM6
OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAgICBhdXRo
ZW50aWNhdGUtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgaml0Lm1vdmUocGFy
YW1zWzFdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgaml0LnVudGFnQXJy
YXlQdHIocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0ZTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShz
aXplKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorICAgIH0KKworICAgIExWYWx1ZSBy
ZW1vdmVBcnJheVB0clRhZyhMVmFsdWUgcHRyKQorICAgIHsKKyNpZiBDUFUoQVJNNjRFKQorICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIGF1dGhlbnRpY2F0ZSA9IG1fb3V0LnBhdGNocG9pbnQocG9p
bnRlclR5cGUoKSk7CisgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHB0
cik7CisgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAg
ICAgICBqaXQucmVtb3ZlQXJyYXlQdHJUYWcocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBhdXRoZW50aWNhdGU7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHB0
cjsKKyAgICB9CisKKyAgICBMVmFsdWUgY2FnZWQoR2lnYWNhZ2U6OktpbmQga2luZCwgTFZhbHVl
IHB0ciwgTFZhbHVlIGJhc2UpCiAgICAgewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKKyAgICAgICAg
VU5VU0VEX1BBUkFNKGJhc2UpOwogICAgICAgICBpZiAoIUdpZ2FjYWdlOjppc0VuYWJsZWQoa2lu
ZCkpCiAgICAgICAgICAgICByZXR1cm4gcHRyOwogICAgICAgICAKQEAgLTE0MTQwLDggKzE0MTg3
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGFuZCBwb3NzaWJseSBvdGhlciBzbWFydCB0aGlu
Z3MgaWYgd2Ugd2FudCB0byBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIG9wYXF1ZS4KICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQ5MwogICAgICAg
ICByZXR1cm4gbV9vdXQub3BhcXVlKHJlc3VsdCk7CisjZWxpZiBDUFUoQVJNNjRFKQorICAgICAg
ICBpZiAoa2luZCA9PSBHaWdhY2FnZTo6UHJpbWl0aXZlKSB7CisgICAgICAgICAgICBMVmFsdWUg
c2l6ZSA9IG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0
aCk7CisgICAgICAgICAgICByZXR1cm4gdW50YWdBcnJheVB0cihwdHIsIHNpemUpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHB0cjsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShr
aW5kKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGJhc2UpOwogICAgICAgICByZXR1cm4gcHRyOwog
I2VuZGlmCiAgICAgfQpAQCAtMTY1NTUsNiArMTY2MTAsOSBAQCBwcml2YXRlOgogCiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNXYXN0ZWZ1bCwgY29udGlu
dWF0aW9uKTsKICAgICAgICAgTFZhbHVlIHZlY3RvciA9IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9o
ZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpOworICAgICAgICAvLyBGSVhNRTogV2UgY291
bGQgcHJvYmFibHkgbWFrZSB0aGlzIGEgbWFzay4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzcwMQorICAgICAgICB2ZWN0b3IgPSByZW1vdmVB
cnJheVB0clRhZyh2ZWN0b3IpOwogICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIGpzVmFs
dWVWYWx1ZSh2ZWN0b3IpLCBtX25vZGUsIG1fb3V0LmlzWmVybzY0KHZlY3RvcikpOwogICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAppbmRleCBhNDIwZmU4ZTYyNWM5OTNlZDU5NGQw
YWNmNThhZWNiNzZjOGM5OTVlLi4yYTU1ODkyNDFjNGY0NGIyZDM0OTQ4NGQ3YjQ1ZWEyYmEyMTE4
MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVS
b290cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9v
dHMuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6Omdyb3coKQog
dGVtcGxhdGU8dHlwZW5hbWUgTWFya0hvb2s+CiBpbmxpbmUgdm9pZCBDb25zZXJ2YXRpdmVSb290
czo6Z2VuZXJpY0FkZFBvaW50ZXIodm9pZCogcCwgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24s
IEhlYXBWZXJzaW9uIG5ld2x5QWxsb2NhdGVkVmVyc2lvbiwgVGlueUJsb29tRmlsdGVyIGZpbHRl
ciwgTWFya0hvb2smIG1hcmtIb29rKQogeworICAgIHAgPSByZW1vdmVBcnJheVB0clRhZyhwKTsK
ICAgICBtYXJrSG9vay5tYXJrKHApOwogCiAgICAgSGVhcFV0aWw6OmZpbmRHQ09iamVjdFBvaW50
ZXJzRm9yTWFya2luZygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCmluZGV4IDc2MDJiMmE5M2RhYjdhMTdiMjlkNWI1ZWI4MzJjMTVkYTI1MzY2M2UuLmQ5MjY4
ZTgzNjkxNDIxZmZlZGMxNTQxMjE3Yzg2N2YzNTFlZGI4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTU2OSw3ICsxNTY5LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfQogICAgIAotICAgIHZvaWQgY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNh
Z2U6OktpbmQga2luZCwgR1BSUmVnIHN0b3JhZ2UsIEdQUlJlZyBzY3JhdGNoKQorICAgIHZvaWQg
Y2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OktpbmQga2luZCwgR1BSUmVnIHN0b3JhZ2UsIEdQ
UlJlZyBzY3JhdGNoT3JMZW5ndGgpCiAgICAgewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICAg
ICAgaWYgKCFHaWdhY2FnZTo6aXNFbmFibGVkKGtpbmQpKQpAQCAtMTU3OCwxNSArMTU3OCwxOCBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChraW5kICE9IEdpZ2FjYWdlOjpQcmltaXRpdmUgfHwgR2ln
YWNhZ2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGNhZ2Uoa2luZCwgc3RvcmFnZSk7CiAgICAgICAgIAotICAgICAgICBsb2FkUHRy
KCZHaWdhY2FnZTo6YmFzZVB0cihraW5kKSwgc2NyYXRjaCk7Ci0gICAgICAgIEp1bXAgZG9uZSA9
IGJyYW5jaFRlc3RQdHIoWmVybywgc2NyYXRjaCk7CisgICAgICAgIGxvYWRQdHIoJkdpZ2FjYWdl
OjpiYXNlUHRyKGtpbmQpLCBzY3JhdGNoT3JMZW5ndGgpOworICAgICAgICBKdW1wIGRvbmUgPSBi
cmFuY2hUZXN0UHRyKFplcm8sIHNjcmF0Y2hPckxlbmd0aCk7CiAgICAgICAgIGFuZFB0cihUcnVz
dGVkSW1tUHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwgc3RvcmFnZSk7Ci0gICAgICAgIGFkZFB0
cihzY3JhdGNoLCBzdG9yYWdlKTsKKyAgICAgICAgYWRkUHRyKHNjcmF0Y2hPckxlbmd0aCwgc3Rv
cmFnZSk7CiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKKyNlbGlmIENQVShBUk02NEUpCisgICAg
ICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUpCisgICAgICAgICAgICB1bnRhZ0Fy
cmF5UHRyKHNjcmF0Y2hPckxlbmd0aCwgc3RvcmFnZSk7CiAjZWxzZQogICAgICAgICBVTlVTRURf
UEFSQU0oa2luZCk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShzdG9yYWdlKTsKLSAgICAgICAgVU5V
U0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaE9yTGVuZ3Ro
KTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmlu
c2ljRW1pdHRlci5jcHAKaW5kZXggY2FlMzllOTM1Y2I5M2VkOTc2MTgzNzBlZDcxYjk5NDViNTU0
MjVkMC4uMWE2YjQzMmZkYmRiZmY3NjNhMTM2MDAzYWZkMzg2YzU2NGYyMTRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC0xMTQsOCAr
MTE0LDE0IEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dl
dHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAKICAgICAgICAgaml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgdmFs
dWVHUFIpOworI2lmIENQVShBUk02NEUpCisgICAgICAgIGppdC5yZW1vdmVBcnJheVB0clRhZyh2
YWx1ZUdQUik7CisjZW5kaWYKICAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZkFycmF5QnVmZmVyKCkpLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgQXJyYXlCdWZmZXI6Om9mZnNldE9mRGF0YSgpKSwgc2NyYXRjaEdQUik7CisjaWYg
Q1BVKEFSTTY0RSkKKyAgICAgICAgaml0LnJlbW92ZUFycmF5UHRyVGFnKHNjcmF0Y2hHUFIpOwor
I2VuZGlmCiAgICAgICAgIGppdC5zdWJQdHIoc2NyYXRjaEdQUiwgdmFsdWVHUFIpOwogCiAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNzk4ZjE3M2NjYWI2
YTRkMTRhNTFiMzQ1ZTQxYTQ4NmMzZmRlM2FmZi4uOWQ2MjE0ODFmNzc0NzRlZmI4MzFiZDRlNWYx
ZjU4MjI5ZTMzMjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKQEAgLTE1ODksNyArMTU4OSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0RGlyZWN0QXJndW1lbnRzR2V0QnlWYWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBQYXRjaGFibGVK
dW1wCiAgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxl
bmd0aCgpKSwgc2NyYXRjaDIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eSwgc2NyYXRjaDIpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFRlc3RQdHIoTm9uWmVybywgQWRkcmVzcyhiYXNlLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9m
TWFwcGVkQXJndW1lbnRzKCkpKSk7Ci0gICAgCisKICAgICBsb2FkVmFsdWUoQmFzZUluZGV4KGJh
c2UsIHByb3BlcnR5LCBUaW1lc0VpZ2h0LCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQo
KSksIHJlc3VsdCk7CiAgICAgCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKQEAgLTE2NjksNyArMTY2
OSw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKGNvbnN0
IEluc3RydWN0aW9uKiwgUGF0Y2hhYmxlSnVtcCYKICAgICAKICAgICBsb2FkOChBZGRyZXNzKGJh
c2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKICAgICBiYWRUeXBl
ID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBl
Rm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMy
KEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKSk7CisgICAgbG9hZDMyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpLCBzY3JhdGNoMik7CisgICAgc2xvd0Nhc2VzLmFw
cGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBzY3JhdGNoMikpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSks
IHNjcmF0Y2gpOwogICAgIGNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNj
cmF0Y2gsIHNjcmF0Y2gyKTsKIApAQCAtMTczMiw3ICsxNzMzLDggQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlHZXRCeVZhbChjb25zdCBJbnN0cnVjdGlvbiosIFBhdGNo
YWJsZUp1bXAKIAogICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIHNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RF
cXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkp
OwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwg
QWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKKyAg
ICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHNjcmF0Y2gyKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVh
bCwgcHJvcGVydHksIHNjcmF0Y2gyKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgc2NyYXRjaCk7CiAgICAgY2FnZUNvbmRp
dGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2NyYXRjaCwgc2NyYXRjaDIpOwogICAgIApA
QCAtMTc4Miw3ICsxNzg0LDggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5
UHV0QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUKICAgICAKICAgICBs
b2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNj
cmF0Y2gpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlT
Y3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7Ci0gICAg
SnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworICAgIGxvYWQzMihBZGRyZXNz
KGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNjcmF0Y2gy
KTsKKyAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBsYXRlU2Ny
YXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2Zp
bGUpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoanVtcCgpKTsKICAgICBpbkJvdW5kcy5saW5rKHRo
aXMpOwpAQCAtMTg1Nyw3ICsxODYwLDggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHkKICAgICAK
ICAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBl
YXJseVNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
ZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7
Ci0gICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgQWRkcmVzcyhi
YXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOworICAgIGxvYWQzMihB
ZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSwgbGF0ZVNj
cmF0Y2gyKTsKKyAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBs
YXRlU2NyYXRjaDIpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNl
KHByb2ZpbGUpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoanVtcCgpKTsKICAgICBpbkJvdW5kcy5s
aW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAppbmRleCA3Y2Y3NGIxNjRkM2NiYjA2NDI4YTczNDMy
Y2U3NzQyNDVkNmUxOGQwLi45MWJiNTg1NmQxNzhiZWFhNGI5Zjc3OTE3YTBjYzM1ZDJiZDljMTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmNwcApAQCAtNTcsOSArNTcsNiBAQCB2b2lkIFBvbHltb3JwaGljQ2Fs
bE5vZGU6OnVubGluayhWTSYgdm0pCiAKIHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6Y2xlYXJD
YWxsTGlua0luZm8oKQogewotICAgIGlmIChPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkKLSAg
ICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBsaW5rIGluZm8gZm9yIHBvbHltb3JwaGljIGNh
bGwgYXQgIiwgbV9jYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLCAiLCAiLCBtX2Nh
bGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCAiXG4iKTsKLQogICAgIG1fY2FsbExpbmtJbmZvID0g
bnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCmluZGV4
IGFlNDIzMjM3NjM1OGRhNmI4YjljNjYxOTMyYjczYjFjOTY0ZDk2ZDcuLjhjMDE4NDJkNjk0OWVh
NDhhNjJlYTM2YTRlYmYwNjk1ZmZlNjhjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyU2V0LmgKQEAgLTg0LDcgKzg0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgc2V0KHJl
Z3MudGFnR1BSKCksIHZhbHVlKTsKICAgICAgICAgc2V0KHJlZ3MucGF5bG9hZEdQUigpLCB2YWx1
ZSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVy
LCBib29sIHZhbHVlID0gdHJ1ZSkgeyB2YWx1ZSA/IG1lcmdlKG90aGVyKSA6IGV4Y2x1ZGUob3Ro
ZXIpOyB9CisKICAgICB2b2lkIGNsZWFyKFJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQo
ISFyZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQppbmRleCAwMTQwMGE1MmY1YzQ2OGFlOGViMTcwYzgyMjg5ZGQ3ZmY5
MWJiNTM3Li42YWFmMGRkMTBjM2ViOGFmNmIyNzc3MTM0MTlhYzQwZTNkODc4Mzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQpAQCAtNDIyLDIwICs0MjIsMjkgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3Ao
KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gdW5jYWdlKGJhc2VQdHIsIG1hc2ssIHB0ciwg
c2NyYXRjaCkKLSAgICBpZiBHSUdBQ0FHRV9FTkFCTEVEIGFuZCBub3QgQ19MT09QCi0gICAgICAg
IGxvYWRwIGJhc2VQdHIsIHNjcmF0Y2gKLSAgICAgICAgYnRweiBzY3JhdGNoLCAuZG9uZQorbWFj
cm8gdW5jYWdlKGJhc2VQdHIsIG1hc2ssIHB0ciwgc2NyYXRjaE9yTGVuZ3RoKQorICAgIGlmIEdJ
R0FDQUdFX0VOQUJMRUQgYW5kIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCisgICAgICAgIGxv
YWRwIGJhc2VQdHIsIHNjcmF0Y2hPckxlbmd0aAorICAgICAgICBidHB6IHNjcmF0Y2hPckxlbmd0
aCwgLmRvbmUKICAgICAgICAgYW5kcCBtYXNrLCBwdHIKLSAgICAgICAgYWRkcCBzY3JhdGNoLCBw
dHIKLSAgICAgICAgLmRvbmU6CisgICAgICAgIGFkZHAgc2NyYXRjaE9yTGVuZ3RoLCBwdHIKKyAg
ICAuZG9uZToKKyAgICBlbmQKK2VuZAorCittYWNybyBsb2FkQ2FnZWRQcmltaXRpdmUoc291cmNl
LCBkZXN0LCBzY3JhdGNoT3JMZW5ndGgpCisgICAgbG9hZHAgc291cmNlLCBkZXN0CisgICAgaWYg
R0lHQUNBR0VfRU5BQkxFRAorICAgICAgICB1bmNhZ2UoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2
ZUdpZ2FjYWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQorICAgIGVsc2lmIEFSTTY0RQor
ICAgICAgICB1bnRhZ0FycmF5UHRyIHNjcmF0Y2hPckxlbmd0aCwgZGVzdAogICAgIGVuZAogZW5k
CiAKLW1hY3JvIGxvYWRDYWdlZChiYXNlUHRyLCBtYXNrLCBzb3VyY2UsIGRlc3QsIHNjcmF0Y2gp
CittYWNybyBsb2FkQ2FnZWRKU1ZhbHVlKHNvdXJjZSwgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQog
ICAgIGxvYWRwIHNvdXJjZSwgZGVzdAotICAgIHVuY2FnZShiYXNlUHRyLCBtYXNrLCBkZXN0LCBz
Y3JhdGNoKQotIGVuZAorICAgIHVuY2FnZShfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpqc1ZhbHVlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1h
c2ssIGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKK2VuZAogCiBtYWNybyBsb2FkVmFyaWFibGUoZ2V0
LCBmaWVsZE5hbWUsIHZhbHVlUmVnKQogICAgIGdldChmaWVsZE5hbWUsIHZhbHVlUmVnKQpAQCAt
MTMzNSw3ICsxMzQ0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKICAgICBhcnJheVByb2Zp
bGUoT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFy
cmF5UHJvZmlsZSwgdDAsIHQyLCB0NSkKICAgICBidGl6IHQwLCBJc0FycmF5LCAub3BHZXRCeUlk
U2xvdwogICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRCeUlkU2xvdwotICAg
IGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpqc1Zh
bHVlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1hc2ssIEpTT2JqZWN0Ojpt
X2J1dHRlcmZseVt0M10sIHQwLCB0MSkKKyAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0Ojpt
X2J1dHRlcmZseVt0M10sIHQwLCB0MSkKICAgICBsb2FkaSAtc2l6ZW9mIEluZGV4aW5nSGVhZGVy
ICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCB0MAogICAgIGJp
bHQgdDAsIDAsIC5vcEdldEJ5SWRTbG93CiAgICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCkBAIC0x
NDU4LDcgKzE0NjcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0
QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKICAgICBzeGky
cSB0MSwgdDEKIAotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpqc1ZhbHVlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1h
c2ssIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCB0YWdUeXBlTnVtYmVyKQorICAgIGxv
YWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1i
ZXIpCiAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAKICAgICBhbmRpIElu
ZGV4aW5nU2hhcGVNYXNrLCB0MgpAQCAtMTUwMiw3ICsxNTExLDE3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkCiAgICAgYmlhZXEgdDIsIE51bWJlck9mVHlwZWRBcnJheVR5cGVzRXhjbHVkaW5n
RGF0YVZpZXcsIC5vcEdldEJ5VmFsU2xvdwogICAgIAogICAgICMgU3dlZXQsIG5vdyB3ZSBrbm93
IHRoYXQgd2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBzb21lIGJhc2ljIHRoaW5ncyBub3cuCi0g
ICAgYmlhZXEgdDEsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIC5vcEdldEJ5VmFs
U2xvdworCisgICAgaWYgQVJNNjRFCisgICAgICAgIGNvbnN0IHNjcmF0Y2hPckxlbmd0aCA9IHQ2
CisgICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIHNjcmF0Y2hP
ckxlbmd0aAorICAgICAgICBiaWFlcSB0MSwgc2NyYXRjaE9yTGVuZ3RoLCAub3BHZXRCeVZhbFNs
b3cKKyAgICBlbHNlCisgICAgICAgIGNvbnN0IHNjcmF0Y2hPckxlbmd0aCA9IHQwCisgICAgICAg
IGJpYWVxIHQxLCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNs
b3cKKyAgICBlbmQKKworICAgIGxvYWRDYWdlZFByaW1pdGl2ZShKU0FycmF5QnVmZmVyVmlldzo6
bV92ZWN0b3JbdDBdLCB0Mywgc2NyYXRjaE9yTGVuZ3RoKQogCiAgICAgIyBOb3cgYmlzZWN0IHRo
cm91Z2ggdGhlIHZhcmlvdXMgdHlwZXM6CiAgICAgIyAgICBJbnQ4QXJyYXlUeXBlLApAQCAtMTUy
NCw3ICsxNTQzLDYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDhB
cnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVp
bnQ4Q2xhbXBlZEFycmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRic2kgW3QzLCB0MV0sIHQwCiAg
ICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0xNTMyLDEzICsxNTUwLDExIEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBVaW50OEFycmF5VHlwZSAtIEZpcnN0
VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXkKIAogICAgICMgV2Ug
aGF2ZSBVaW50OEFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyAr
IEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1p
dGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQy
KQogICAgIGxvYWRiIFt0MywgdDFdLCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkK
IAogLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheToKICAgICAjIFdlIGhhdmUgVWludDhDbGFt
cGVkQXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNh
Z2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2ln
YWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAg
bG9hZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0x
NTQ3LDEzICsxNTYzLDExIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJ
bnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDE2QXJy
YXkKIAogICAgICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
R2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVj
dG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRoc2kgW3QzLCB0MSwgMl0sIHQwCiAgICAgZmluaXNo
SW50R2V0QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQxNkFycmF5OgogICAgICMgV2Ug
aGF2ZSBVaW50MTZBcnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMg
KyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmlt
aXRpdmVHaWdhY2FnZU1hc2ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0
MikKICAgICBsb2FkaCBbdDMsIHQxLCAyXSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwg
dDEpCiAKQEAgLTE1NjUsMTMgKzE1NzksMTEgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAg
ICBiaWEgdDIsIEludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlW
YWxVaW50MzJBcnJheQogCiAgICAgIyBXZSBoYXZlIEludDMyQXJyYXlUeXBlLgotICAgIGxvYWRD
YWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUs
IGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVy
Vmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAg
ICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQzMkFycmF5Ogog
ICAgICMgV2UgaGF2ZSBVaW50MzJBcnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdl
QmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2Fj
YWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0
MF0sIHQzLCB0MikKICAgICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCBiZWNhdXNlIG9mIGxh
cmdlIHVuc2lnbmVkIHZhbHVlcy4KICAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKICAgICBiaWx0
IHQwLCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBp
bXBsZW1lbnQgaW4gTExJbnQuCkBAIC0xNTgzLDcgKzE1OTUsNiBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZAogICAgIGJpZXEgdDIsIEZsb2F0MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlU
eXBlLCAub3BHZXRCeVZhbFNsb3cKIAogICAgICMgV2UgaGF2ZSBGbG9hdDY0QXJyYXlUeXBlLgot
ICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpw
cmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0Fy
cmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGQgW3QzLCB0MSwg
OF0sIGZ0MAogICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdwogICAgIGZpbmlz
aERvdWJsZUdldEJ5VmFsKGZ0MCwgdDAsIHQxKQpAQCAtMTYxOSw3ICsxNjMwLDcgQEAgbWFjcm8g
cHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QpCiAgICAgICAgIGdldChtX3Byb3Bl
cnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQwLCB0
MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAgbG9hZENh
Z2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNv
bnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgSlNPYmplY3Q6Om1fYnV0dGVy
Zmx5W3QxXSwgdDAsIHRhZ1R5cGVOdW1iZXIpCisgICAgICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNP
YmplY3Q6Om1fYnV0dGVyZmx5W3QxXSwgdDAsIHRhZ1R5cGVOdW1iZXIpCiAgICAgICAgIG1vdmUg
VGFnVHlwZU51bWJlciwgdGFnVHlwZU51bWJlcgogICAgICAgICBidGlueiB0MiwgQ29weU9uV3Jp
dGUsIC5vcFB1dEJ5VmFsU2xvdwogICAgICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCmluZGV4IDhm
ODU1NmI4OTdiYTcwYWM3ZTlkYjM4ZTBmOGFiOWMwNDVhZDM5MDUuLjY3MWJkYjc3MTMyZmE2OWYx
ZTE0Zjc1ZDNiZDc2NmJiNjE0YzhhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTMzLDE1ICszMywxNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6U2hhcmVkQXJyYXlCdWZmZXJDb250ZW50
cyh2b2lkKiBkYXRhLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0b3Ip
Ci0gICAgOiBtX2RhdGEoZGF0YSkKK1NoYXJlZEFycmF5QnVmZmVyQ29udGVudHM6OlNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZmZXJE
ZXN0cnVjdG9yRnVuY3Rpb24mJiBkZXN0cnVjdG9yKQorICAgIDogbV9kYXRhKGRhdGEsIHNpemUp
CiAgICAgLCBtX2Rlc3RydWN0b3IoV1RGTW92ZShkZXN0cnVjdG9yKSkKKyAgICAsIG1fc2l6ZUlu
Qnl0ZXMoc2l6ZSkKIHsKIH0KIAogU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50czo6flNoYXJlZEFy
cmF5QnVmZmVyQ29udGVudHMoKQogewotICAgIG1fZGVzdHJ1Y3RvcihtX2RhdGEuZ2V0TWF5QmVO
dWxsKCkpOworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGRuJ3QgdXNlIGdldFVuc2FmZSBoZXJlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2OTgKKyAgICBtX2Rlc3Ry
dWN0b3IobV9kYXRhLmdldFVuc2FmZSgpKTsKIH0KIAogQXJyYXlCdWZmZXJDb250ZW50czo6QXJy
YXlCdWZmZXJDb250ZW50cygpCkBAIC01Niw3ICs1OCw3IEBAIEFycmF5QnVmZmVyQ29udGVudHM6
OkFycmF5QnVmZmVyQ29udGVudHMoQXJyYXlCdWZmZXJDb250ZW50cyYmIG90aGVyKQogfQogCiBB
cnJheUJ1ZmZlckNvbnRlbnRzOjpBcnJheUJ1ZmZlckNvbnRlbnRzKHZvaWQqIGRhdGEsIHVuc2ln
bmVkIHNpemVJbkJ5dGVzLCBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiYmIGRlc3RydWN0
b3IpCi0gICAgOiBtX2RhdGEoZGF0YSkKKyAgICA6IG1fZGF0YShkYXRhLCBzaXplSW5CeXRlcykK
ICAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9zaXplSW5CeXRlcyA8PSBNQVhfQVJSQVlfQlVGRkVSX1NJWkUpOwpAQCAtODIsNyArODQsOCBA
QCB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6OmNsZWFyKCkKIAogdm9pZCBBcnJheUJ1ZmZlckNv
bnRlbnRzOjpkZXN0cm95KCkKIHsKLSAgICBtX2Rlc3RydWN0b3IobV9kYXRhLmdldE1heUJlTnVs
bCgpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IHVzZSBnZXRVbnNhZmUgaGVyZTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzY5OAorICAgIG1fZGVzdHJ1
Y3RvcihtX2RhdGEuZ2V0VW5zYWZlKCkpOwogfQogCiB2b2lkIEFycmF5QnVmZmVyQ29udGVudHM6
OnJlc2V0KCkKQEAgLTEwMywyNiArMTA2LDI5IEBAIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6
dHJ5QWxsb2NhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgc2l6ZV90IHNpemUgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KG51bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxl
bWVudEJ5dGVTaXplKTsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHNpemUgPSAxOyAvLyBNYWtl
IHN1cmUgbWFsbG9jIGFjdHVhbGx5IGFsbG9jYXRlcyBzb21ldGhpbmcsIGJ1dCBub3QgdG9vIG11
Y2guIFdlIHVzZSBudWxsIHRvIG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzIG5ldXRlcmVkLgotICAg
IG1fZGF0YSA9IEdpZ2FjYWdlOjp0cnlNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgc2l6ZSk7
Ci0gICAgaWYgKCFtX2RhdGEpIHsKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG51bUVsZW1lbnRzKSAqIHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVudEJ5dGVT
aXplKTsKKyAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBzaXplSW5CeXRlczsKKyAgICBpZiAo
IWFsbG9jYXRpb25TaXplKQorICAgICAgICBhbGxvY2F0aW9uU2l6ZSA9IDE7IC8vIE1ha2Ugc3Vy
ZSBtYWxsb2MgYWN0dWFsbHkgYWxsb2NhdGVzIHNvbWV0aGluZywgYnV0IG5vdCB0b28gbXVjaC4g
V2UgdXNlIG51bGwgdG8gbWVhbiB0aGF0IHRoZSBidWZmZXIgaXMgbmV1dGVyZWQuCisKKyAgICB2
b2lkKiBkYXRhID0gR2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBhbGxv
Y2F0aW9uU2l6ZSk7CisgICAgbV9kYXRhID0gRGF0YVR5cGUoZGF0YSwgc2l6ZUluQnl0ZXMpOwor
ICAgIGlmICghZGF0YSkgewogICAgICAgICByZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAogICAgIGlmIChwb2xpY3kgPT0gWmVyb0luaXRpYWxpemUpCi0gICAgICAgIG1lbXNl
dChtX2RhdGEuZ2V0KCksIDAsIHNpemUpOworICAgICAgICBtZW1zZXQoZGF0YSwgMCwgYWxsb2Nh
dGlvblNpemUpOwogCi0gICAgbV9zaXplSW5CeXRlcyA9IG51bUVsZW1lbnRzICogZWxlbWVudEJ5
dGVTaXplOworICAgIG1fc2l6ZUluQnl0ZXMgPSBzaXplSW5CeXRlczsKICAgICBSRUxFQVNFX0FT
U0VSVChtX3NpemVJbkJ5dGVzIDw9IE1BWF9BUlJBWV9CVUZGRVJfU0laRSk7CiAgICAgbV9kZXN0
cnVjdG9yID0gW10gKHZvaWQqIHApIHsgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2
ZSwgcCk7IH07CiB9CiAKIHZvaWQgQXJyYXlCdWZmZXJDb250ZW50czo6bWFrZVNoYXJlZCgpCiB7
Ci0gICAgbV9zaGFyZWQgPSBhZG9wdFJlZihuZXcgU2hhcmVkQXJyYXlCdWZmZXJDb250ZW50cyht
X2RhdGEuZ2V0TWF5QmVOdWxsKCksIFdURk1vdmUobV9kZXN0cnVjdG9yKSkpOworICAgIG1fc2hh
cmVkID0gYWRvcHRSZWYobmV3IFNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMoZGF0YSgpLCBzaXpl
SW5CeXRlcygpLCBXVEZNb3ZlKG1fZGVzdHJ1Y3RvcikpKTsKICAgICBtX2Rlc3RydWN0b3IgPSBb
XSAodm9pZCopIHsgfTsKIH0KIApAQCAtMTQzLDcgKzE0OSw3IEBAIHZvaWQgQXJyYXlCdWZmZXJD
b250ZW50czo6Y29weVRvKEFycmF5QnVmZmVyQ29udGVudHMmIG90aGVyKQogICAgIG90aGVyLnRy
eUFsbG9jYXRlKG1fc2l6ZUluQnl0ZXMsIHNpemVvZihjaGFyKSwgQXJyYXlCdWZmZXJDb250ZW50
czo6RG9udEluaXRpYWxpemUpOwogICAgIGlmICghb3RoZXIubV9kYXRhKQogICAgICAgICByZXR1
cm47Ci0gICAgbWVtY3B5KG90aGVyLm1fZGF0YS5nZXQoKSwgbV9kYXRhLmdldCgpLCBtX3NpemVJ
bkJ5dGVzKTsKKyAgICBtZW1jcHkob3RoZXIuZGF0YSgpLCBkYXRhKCksIG1fc2l6ZUluQnl0ZXMp
OwogICAgIG90aGVyLm1fc2l6ZUluQnl0ZXMgPSBtX3NpemVJbkJ5dGVzOwogICAgIFJFTEVBU0Vf
QVNTRVJUKG90aGVyLm1fc2l6ZUluQnl0ZXMgPD0gTUFYX0FSUkFZX0JVRkZFUl9TSVpFKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGJhZjJi
ODU2YTIxMDA0OTU0YmE1YzQzYmY1ZWIxY2Q3YjZhNDQwNGMuLjdjMDViYmM1ZDI0ZDQxYmRmMWUy
M2I3ZWMxODlkMjI2OTRmZTMwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaApAQCAtNDgsMTQgKzQ4LDE2IEBAIHR5cGVkZWYgRnVuY3Rpb248dm9pZCh2
b2lkKik+IEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uOwogCiBjbGFzcyBTaGFyZWRBcnJh
eUJ1ZmZlckNvbnRlbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEFycmF5
QnVmZmVyQ29udGVudHM+IHsKIHB1YmxpYzoKLSAgICBTaGFyZWRBcnJheUJ1ZmZlckNvbnRlbnRz
KHZvaWQqIGRhdGEsIEFycmF5QnVmZmVyRGVzdHJ1Y3RvckZ1bmN0aW9uJiYpOworICAgIFNoYXJl
ZEFycmF5QnVmZmVyQ29udGVudHModm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZSwgQXJyYXlCdWZm
ZXJEZXN0cnVjdG9yRnVuY3Rpb24mJik7CiAgICAgflNoYXJlZEFycmF5QnVmZmVyQ29udGVudHMo
KTsKICAgICAKLSAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldE1heUJl
TnVsbCgpOyB9CisgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlC
ZU51bGwobV9zaXplSW5CeXRlcyk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgQ2FnZWRQdHI8R2ln
YWNhZ2U6OlByaW1pdGl2ZSwgdm9pZD4gbV9kYXRhOworICAgIHVzaW5nIERhdGFUeXBlID0gQ2Fn
ZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OworICAgIERhdGFU
eXBlIG1fZGF0YTsKICAgICBBcnJheUJ1ZmZlckRlc3RydWN0b3JGdW5jdGlvbiBtX2Rlc3RydWN0
b3I7CisgICAgdW5zaWduZWQgbV9zaXplSW5CeXRlczsKIH07CiAKIGNsYXNzIEFycmF5QnVmZmVy
Q29udGVudHMgewpAQCAtNzMsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCi0gICAgdm9pZCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoKTsgfQorICAgIHZvaWQqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxsKHNpemVJbkJ5dGVzKCkpOyB9
CiAgICAgdW5zaWduZWQgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVz
OyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9
CkBAIC05OCw3ICsxMDAsOCBAQCBwcml2YXRlOgogCiAgICAgQXJyYXlCdWZmZXJEZXN0cnVjdG9y
RnVuY3Rpb24gbV9kZXN0cnVjdG9yOwogICAgIFJlZlB0cjxTaGFyZWRBcnJheUJ1ZmZlckNvbnRl
bnRzPiBtX3NoYXJlZDsKLSAgICBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkPiBt
X2RhdGE7CisgICAgdXNpbmcgRGF0YVR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZl
LCB2b2lkLCB0YWdDYWdlZFB0cj47CisgICAgRGF0YVR5cGUgbV9kYXRhOwogICAgIHVuc2lnbmVk
IG1fc2l6ZUluQnl0ZXM7CiB9OwogCkBAIC0xNzQsMTcgKzE3NywxNyBAQCBwdWJsaWM6CiAKIHZv
aWQqIEFycmF5QnVmZmVyOjpkYXRhKCkKIHsKLSAgICByZXR1cm4gbV9jb250ZW50cy5tX2RhdGEu
Z2V0TWF5QmVOdWxsKCk7CisgICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQogCiBjb25z
dCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGVu
dHMubV9kYXRhLmdldE1heUJlTnVsbCgpOworICAgIHJldHVybiBtX2NvbnRlbnRzLmRhdGEoKTsK
IH0KIAogdW5zaWduZWQgQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2NvbnRlbnRzLm1fc2l6ZUluQnl0ZXM7CisgICAgcmV0dXJuIG1fY29udGVudHMuc2l6
ZUluQnl0ZXMoKTsKIH0KIAogYm9vbCBBcnJheUJ1ZmZlcjo6aXNTaGFyZWQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAKaW5k
ZXggOWZlZDdjNzg2YjZiZTk3YTMxZTU5NDM1MjZjYmJkYmViNjA1MGRhNy4uYjc5NWZlNGY1NWEz
ZWNkMjMxNDZlNzdkNWZkZmI4YzcyNjJmZGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0yNSwxNyArMjUsMjIgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQXJyYXlC
dWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwKLSAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4m
JiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiAgICAg
ICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc05ldXRlcmFibGUo
dHJ1ZSkKKyAgICAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkKICAgICAgICAgLCBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7Ci0gICAgbV9iYXNlQWRkcmVzcyA9IG1fYnVmZmVyID8g
KHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSArIG1fYnl0ZU9mZnNldCkgOiAw
OworICAgIENoZWNrZWQ8dW5zaWduZWQsIENyYXNoT25PdmVyZmxvdz4gbGVuZ3RoKGJ5dGVPZmZz
ZXQpOworICAgIGxlbmd0aCArPSBieXRlTGVuZ3RoOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04obGVuZ3RoIDw9IG1fYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwor
ICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9iYXNlQWRkcmVzcyA9IEJhc2VBZGRyZXNzKHN0
YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSArIG1fYnl0ZU9mZnNldCwgYnl0ZUxl
bmd0aCk7CiB9CiAKIEFycmF5QnVmZmVyVmlldzo6fkFycmF5QnVmZmVyVmlldygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDc1NDc4
NGU4NjRmY2MzMzc3YjE2NGE4ZDFhZjg3YTc1NDJlN2U2MTkuLjM5ZmU2YmJmZjU2NmI5MTU5YmE2
MzcxOTNjNjgzYTNiY2MyZGMxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyVmlldy5oCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
KiBiYXNlQWRkcmVzcygpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNOZXV0ZXJlZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzLmdldE1h
eUJlTnVsbCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBt
X2Jhc2VBZGRyZXNzLmdldE1heUJlTnVsbChieXRlTGVuZ3RoKCkpOwogICAgIH0KIAogICAgIHZv
aWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBiYXNlQWRkcmVzcygpOyB9CkBAIC04NCw3ICs4NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYnl0ZU9mZnNldDsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCA9IDA7CisgICAgdW5zaWduZWQgYnl0
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXROZXV0ZXJhYmxlKGJvb2wgZmxhZyk7CiAgICAgYm9vbCBpc05ldXRl
cmFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmV1dGVyYWJsZTsgfQpAQCAtMTEzLDEzICsxMTMs
MTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCk7CiAKICAgICBpbmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2ln
bmVkIGJ5dGVPZmZzZXQpOwogCi0gICAgLy8gQ2FsbGVyIHBhc3NlcyBpbiBidWZmZXJCeXRlTGVu
Z3RoIHRvIGF2b2lkIGEgdmlydHVhbCBmdW5jdGlvbiBjYWxsLgotICAgIGlubGluZSBib29sIHNl
dFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ1ZmZlckJ5dGVMZW5ndGgpOwotICAgIGlubGluZSBi
b29sIGdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFCeXRlTGVuZ3Ro
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBidWZmZXJCeXRlTGVuZ3RoKTsKKyAgICBp
bmxpbmUgYm9vbCBzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFCeXRl
TGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBpbmxpbmUgYm9vbCBnZXRSYW5nZUlt
cGwodm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5zaWduZWQgYnl0
ZU9mZnNldCk7CiAKICAgICBpbmxpbmUgYm9vbCB6ZXJvUmFuZ2VJbXBsKHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVMZW5ndGgpOwogCkBAIC0xNTAsOSArMTQ5LDExIEBAIHBy
b3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIG1fYnl0ZU9mZnNldCA6IDMxOwogICAgIGJvb2wgbV9p
c05ldXRlcmFibGUgOiAxOworICAgIHVuc2lnbmVkIG1fYnl0ZUxlbmd0aDsKIAorICAgIHVzaW5n
IEJhc2VBZGRyZXNzID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2Fn
ZWRQdHI+OwogICAgIC8vIFRoaXMgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIEFycmF5QnVmZmVyJ3Mg
c3RvcmFnZSwgcGx1cyB0aGUgYnl0ZSBvZmZzZXQuCi0gICAgQ2FnZWRQdHI8R2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgdm9pZD4gbV9iYXNlQWRkcmVzczsKKyAgICBCYXNlQWRkcmVzcyBtX2Jhc2VBZGRy
ZXNzOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTE3Mywx
MiArMTc0LDEwIEBAIGJvb2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRJbXBsKEFycmF5QnVmZmVyVmll
dyogYXJyYXksIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgQXJyYXlCdWZmZXJWaWV3OjpzZXRSYW5nZUltcGwoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBidWZmZXJCeXRl
TGVuZ3RoKQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpCiB7Ci0gICAg
Ly8gRG8gbm90IHJlcGxhY2Ugd2l0aCBSRUxFQVNFX0FTU0VSVDsgd2Ugd2FudCB0byBhdm9pZCB0
aGUgdmlydHVhbCBieXRlTGVuZ3RoKCkgZnVuY3Rpb24gY2FsbCBpbiByZWxlYXNlLgotICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGJ1ZmZlckJ5dGVMZW5ndGggPT0gYnl0ZUxl
bmd0aCgpKTsKLSAgICBpZiAoYnl0ZU9mZnNldCA+IGJ1ZmZlckJ5dGVMZW5ndGgKLSAgICAgICAg
fHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVuZ3RoID4gYnVmZmVyQnl0ZUxlbmd0aAorICAgIGlm
IChieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCgpCisgICAgICAgIHx8IGJ5dGVPZmZzZXQgKyBkYXRh
Qnl0ZUxlbmd0aCA+IGJ5dGVMZW5ndGgoKQogICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5
dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7CiAgICAgICAgIC8vIE91dCBvZiByYW5nZSBvZmZzZXQg
b3Igb3ZlcmZsb3cKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg5LDEyICsxODgsMTAgQEAg
Ym9vbCBBcnJheUJ1ZmZlclZpZXc6OnNldFJhbmdlSW1wbChjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgZGF0YUJ5dGVMZW5ndGgsIHVuc2kKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcnJh
eUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGRhdGFC
eXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBidWZmZXJCeXRlTGVuZ3Ro
KQorYm9vbCBBcnJheUJ1ZmZlclZpZXc6OmdldFJhbmdlSW1wbCh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGRhdGFCeXRlTGVuZ3RoLCB1bnNpZ25lZCBieXRlT2Zmc2V0KQogewotICAgIC8vIERv
IG5vdCByZXBsYWNlIHdpdGggUkVMRUFTRV9BU1NFUlQ7IHdlIHdhbnQgdG8gYXZvaWQgdGhlIHZp
cnR1YWwgYnl0ZUxlbmd0aCgpIGZ1bmN0aW9uIGNhbGwgaW4gcmVsZWFzZS4KLSAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihidWZmZXJCeXRlTGVuZ3RoID09IGJ5dGVMZW5ndGgo
KSk7Ci0gICAgaWYgKGJ5dGVPZmZzZXQgPiBidWZmZXJCeXRlTGVuZ3RoCi0gICAgICAgIHx8IGJ5
dGVPZmZzZXQgKyBkYXRhQnl0ZUxlbmd0aCA+IGJ1ZmZlckJ5dGVMZW5ndGgKKyAgICBpZiAoYnl0
ZU9mZnNldCA+IGJ5dGVMZW5ndGgoKQorICAgICAgICB8fCBieXRlT2Zmc2V0ICsgZGF0YUJ5dGVM
ZW5ndGggPiBieXRlTGVuZ3RoKCkKICAgICAgICAgfHwgYnl0ZU9mZnNldCArIGRhdGFCeXRlTGVu
Z3RoIDwgYnl0ZU9mZnNldCkgewogICAgICAgICAvLyBPdXQgb2YgcmFuZ2Ugb2Zmc2V0IG9yIG92
ZXJmbG93CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBiMTYyMzY5NWNiNjNlNGU5ZDk2Mzc2ZjFjMjQx
ZjczNmY5ZjliZTc1Li4wM2NmMTY0ZmJjY2MwMTFlOGM4NWYwMTc3NzI0MDhiMWMxMTU0ZWJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0x
MDg4LDEzICsxMDg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTY29wZWRBcmd1bWVudHNUYWJsZSYgc2NvcGVkQXJndW1lbnRzVGFibGUpCiAg
ICAgewogICAgICAgICBtX2xlbmd0aCA9IHNjb3BlZEFyZ3VtZW50c1RhYmxlLm1fbGVuZ3RoOwot
ICAgICAgICBtX2FyZ3VtZW50cy5lbmNvZGUoZW5jb2Rlciwgc2NvcGVkQXJndW1lbnRzVGFibGUu
bV9hcmd1bWVudHMuZ2V0KCksIG1fbGVuZ3RoKTsKKyAgICAgICAgbV9hcmd1bWVudHMuZW5jb2Rl
KGVuY29kZXIsIHNjb3BlZEFyZ3VtZW50c1RhYmxlLm1fYXJndW1lbnRzLmdldChtX2xlbmd0aCks
IG1fbGVuZ3RoKTsKICAgICB9CiAKICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBTY29wZWRBcmd1bWVudHNUYWJs
ZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBTY29wZWRBcmd1bWVudHNUYWJsZTo6Y3JlYXRlKGRl
Y29kZXIudm0oKSwgbV9sZW5ndGgpOwotICAgICAgICBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rl
ciwgc2NvcGVkQXJndW1lbnRzVGFibGUtPm1fYXJndW1lbnRzLmdldCgpLCBtX2xlbmd0aCk7Cisg
ICAgICAgIG1fYXJndW1lbnRzLmRlY29kZShkZWNvZGVyLCBzY29wZWRBcmd1bWVudHNUYWJsZS0+
bV9hcmd1bWVudHMuZ2V0KG1fbGVuZ3RoKSwgbV9sZW5ndGgpOwogICAgICAgICByZXR1cm4gc2Nv
cGVkQXJndW1lbnRzVGFibGU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWdlZEJhcnJpZXJQdHIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhZ2VkQmFycmllclB0ci5oCmluZGV4IDkxOGRkZjJmM2Y3ZDNkM2I4NjJiMjgxZGM2
ZGM2OTA3NTE2Mzk5MTMuLjQyNWE4N2M2NjhlM2NlZDhkZjcyN2ZjOWM2YzkxNGY3ZmZiMzU5MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhZ2VkQmFycmllclB0
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhZ2VkQmFycmllclB0ci5o
CkBAIC0zNSw4NyArMzUsNDEgQEAgY2xhc3MgVk07CiAKIC8vIFRoaXMgaXMgYSBjb252ZW5pZW50
IGNvbWJvIG9mIEF1eGlsaWFyeUJhcnJpZXIgYW5kIENhZ2VkUHRyLgogCi10ZW1wbGF0ZTxHaWdh
Y2FnZTo6S2luZCBwYXNzZWRLaW5kLCB0eXBlbmFtZSBUPgordGVtcGxhdGU8R2lnYWNhZ2U6Oktp
bmQgcGFzc2VkS2luZCwgdHlwZW5hbWUgVCwgYm9vbCBzaG91bGRUYWcgPSBmYWxzZT4KIGNsYXNz
IENhZ2VkQmFycmllclB0ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHaWdhY2Fn
ZTo6S2luZCBraW5kID0gcGFzc2VkS2luZDsKLSAgICB0eXBlZGVmIFQgVHlwZTsKKyAgICB1c2lu
ZyBUeXBlID0gVDsKKyAgICB1c2luZyBDYWdlZFR5cGUgPSBDYWdlZFB0cjxraW5kLCBUeXBlLCBz
aG91bGRUYWc+OwogICAgIAotICAgIENhZ2VkQmFycmllclB0cigpIHsgfQorICAgIENhZ2VkQmFy
cmllclB0cigpID0gZGVmYXVsdDsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAg
IENhZ2VkQmFycmllclB0cihWTSYgdm0sIEpTQ2VsbCogY2VsbCwgVSYmIHZhbHVlKQorICAgIENh
Z2VkQmFycmllclB0cihWTSYgdm0sIEpTQ2VsbCogY2VsbCwgVSYmIHZhbHVlLCB1bnNpZ25lZCBz
aXplKQogICAgIHsKLSAgICAgICAgbV9iYXJyaWVyLnNldCh2bSwgY2VsbCwgc3RkOjpmb3J3YXJk
PFU+KHZhbHVlKSk7CisgICAgICAgIG1fYmFycmllci5zZXQodm0sIGNlbGwsIENhZ2VkVHlwZShz
dGQ6OmZvcndhcmQ8VT4odmFsdWUpLCBzaXplKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY2xl
YXIoKSB7IG1fYmFycmllci5jbGVhcigpOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KLSAgICB2b2lkIHNldChWTSYgdm0sIEpTQ2VsbCogY2VsbCwgVSYmIHZhbHVlKQorICAgIHZv
aWQgc2V0KFZNJiB2bSwgSlNDZWxsKiBjZWxsLCBVJiYgdmFsdWUsIHVuc2lnbmVkIHNpemUpCiAg
ICAgewotICAgICAgICBtX2JhcnJpZXIuc2V0KHZtLCBjZWxsLCBzdGQ6OmZvcndhcmQ8VT4odmFs
dWUpKTsKKyAgICAgICAgbV9iYXJyaWVyLnNldCh2bSwgY2VsbCwgQ2FnZWRUeXBlKHN0ZDo6Zm9y
d2FyZDxVPih2YWx1ZSksIHNpemUpKTsKICAgICB9CiAgICAgCi0gICAgVCogZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9iYXJyaWVyLmdldCgpLmdldCgpOyB9Ci0gICAgVCogZ2V0TWF5QmVOdWxsKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXJyaWVyLmdldCgpLmdldE1heUJlTnVsbCgpOyB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhZ2VkQmFycmllclB0ciYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gZ2V0TWF5QmVOdWxsKCkgPT0gb3RoZXIuZ2V0TWF5QmVOdWxs
KCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWdlZEJhcnJpZXJQ
dHImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgIH0KLSAgICAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiAqdGhpcyAhPSBDYWdlZEJhcnJpZXJQdHIoKTsKLSAgICB9Ci0gICAg
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICB2b2lkIHNldFdpdGhvdXRCYXJyaWVyKFUm
JiB2YWx1ZSkgeyBtX2JhcnJpZXIuc2V0V2l0aG91dEJhcnJpZXIoc3RkOjpmb3J3YXJkPFU+KHZh
bHVlKSk7IH0KLSAgICAKLSAgICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqZ2V0KCk7
IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KLSAgICAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbmRleFR5cGU+Ci0gICAgVCYgb3BlcmF0b3JbXShJbmRleFR5
cGUgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGdldCgpW2luZGV4XTsgfQotICAgIAotcHJpdmF0ZToK
LSAgICBBdXhpbGlhcnlCYXJyaWVyPENhZ2VkUHRyPGtpbmQsIFQ+PiBtX2JhcnJpZXI7Ci19Owor
ICAgIFQqIGdldCh1bnNpZ25lZCBzaXplKSBjb25zdCB7IHJldHVybiBtX2JhcnJpZXIuZ2V0KCku
Z2V0KHNpemUpOyB9CisgICAgVCogZ2V0TWF5QmVOdWxsKHVuc2lnbmVkIHNpemUpIGNvbnN0IHsg
cmV0dXJuIG1fYmFycmllci5nZXQoKS5nZXRNYXlCZU51bGwoc2l6ZSk7IH0KKyAgICBUKiBnZXRV
bnNhZmUoKSBjb25zdCB7IHJldHVybiBtX2JhcnJpZXIuZ2V0KCkuZ2V0VW5zYWZlKCk7IH0KKwor
ICAgIC8vIFdlIG5lZWQgdGhlIHRlbXBsYXRlIGhlcmUgc28gdGhhdCB0aGUgdHlwZSBvZiBVIGlz
IGRlZHVjZWQgYXQgdXNhZ2UgdGltZSByYXRoZXIgdGhhbiBjbGFzcyB0aW1lLiBVIHNob3VsZCBh
bHdheXMgYmUgVC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KKyAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPHZvaWQsIFU+Ojp2YWx1ZSwgVD46OnR5cGUmCisg
ICAgLyogVCYgKi8gYXQodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIHNpemUpIGNvbnN0IHsgcmV0
dXJuIGdldChzaXplKVtpbmRleF07IH0KIAotdGVtcGxhdGU8R2lnYWNhZ2U6OktpbmQgcGFzc2Vk
S2luZD4KLWNsYXNzIENhZ2VkQmFycmllclB0cjxwYXNzZWRLaW5kLCB2b2lkPiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHaWdhY2FnZTo6S2luZCBraW5kID0gcGFzc2VkS2luZDsK
LSAgICB0eXBlZGVmIHZvaWQgVHlwZTsKLSAgICAKLSAgICBDYWdlZEJhcnJpZXJQdHIoKSB7IH0K
LSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIENhZ2VkQmFycmllclB0cihWTSYg
dm0sIEpTQ2VsbCogY2VsbCwgVSYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgbV9iYXJyaWVyLnNl
dCh2bSwgY2VsbCwgc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7Ci0gICAgfQotICAgIAotICAgIHZv
aWQgY2xlYXIoKSB7IG1fYmFycmllci5jbGVhcigpOyB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KLSAgICB2b2lkIHNldChWTSYgdm0sIEpTQ2VsbCogY2VsbCwgVSYmIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgbV9iYXJyaWVyLnNldCh2bSwgY2VsbCwgc3RkOjpmb3J3YXJkPFU+KHZh
bHVlKSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFy
cmllci5nZXQoKS5nZXQoKTsgfQotICAgIHZvaWQqIGdldE1heUJlTnVsbCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFycmllci5nZXQoKS5nZXRNYXlCZU51bGwoKTsgfQotICAgIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDYWdlZEJhcnJpZXJQdHImIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGdldE1heUJlTnVsbCgpID09IG90aGVyLmdldE1heUJlTnVsbCgpOworICAgICAg
ICByZXR1cm4gbV9iYXJyaWVyLmdldCgpID09IG90aGVyLm1fYmFycmllci5nZXQoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhZ2VkQmFycmllclB0ciYgb3RoZXIp
IGNvbnN0CkBAIC0xMjUsMTQgKzc5LDE0IEBAIHB1YmxpYzoKICAgICAKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAqdGhpcyAhPSBDYWdl
ZEJhcnJpZXJQdHIoKTsKKyAgICAgICAgcmV0dXJuICEhbV9iYXJyaWVyLmdldCgpOwogICAgIH0K
ICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHZvaWQgc2V0V2l0aG91dEJhcnJp
ZXIoVSYmIHZhbHVlKSB7IG1fYmFycmllci5zZXRXaXRob3V0QmFycmllcihzdGQ6OmZvcndhcmQ8
VT4odmFsdWUpKTsgfQorICAgIHZvaWQgc2V0V2l0aG91dEJhcnJpZXIoVSYmIHZhbHVlLCB1bnNp
Z25lZCBzaXplKSB7IG1fYmFycmllci5zZXRXaXRob3V0QmFycmllcihDYWdlZFR5cGUoc3RkOjpm
b3J3YXJkPFU+KHZhbHVlKSwgc2l6ZSkpOyB9CiAgICAgCiBwcml2YXRlOgotICAgIEF1eGlsaWFy
eUJhcnJpZXI8Q2FnZWRQdHI8a2luZCwgdm9pZD4+IG1fYmFycmllcjsKKyAgICBBdXhpbGlhcnlC
YXJyaWVyPENhZ2VkVHlwZT4gbV9iYXJyaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXggM2I1ODcxYmEz
YmUyYTFlYmNmNDFiM2Q3Yjc0ZWFmOWY2MzZlZGU4Yi4uNWUwNzNmNTRmNzkxMDg3MzkyOWJhZjlm
ZDA5N2E0ODMxMGJmNThhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFW
aWV3LmNwcApAQCAtMzMsOCArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIERhdGFWaWV3OjpE
YXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVm
ZmVyKSwgYnl0ZU9mZnNldCkKLSAgICAsIG1fYnl0ZUxlbmd0aChieXRlTGVuZ3RoKQorICAgIDog
QXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZp
ZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggN2Ez
OTc2MzY2NTliMTg4ZDlkN2I5Y2VjODRjNzBkYjYzZDI3MTNlYS4uMjJhMjNmZGJiOGM2MjY0Y2Iw
OGNjYzgzZGEwMzk2ZmMxZTVjMmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRhVmlldy5oCkBAIC0zOCwxMSArMzgsNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVmPERhdGFW
aWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKLSAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2J5dGVM
ZW5ndGg7Ci0gICAgfQotICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIGdldFR5cGUoKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIFR5cGVEYXRhVmlldzsKQEAgLTYyLDcgKzU3
LDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9mZnNldCArIHNpemVvZihUKSA8PSBieXRlTGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gZmxp
cEJ5dGVzSWZMaXR0bGVFbmRpYW4oCi0gICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxUKj4o
c3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYmFzZUFkZHJlc3MuZ2V0KCkpICsgb2Zmc2V0KSwKKyAg
ICAgICAgICAgICpyZWludGVycHJldF9jYXN0PFQqPihzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9i
YXNlQWRkcmVzcy5nZXQoYnl0ZUxlbmd0aCgpKSkgKyBvZmZzZXQpLAogICAgICAgICAgICAgbGl0
dGxlRW5kaWFuKTsKICAgICB9CiAgICAgCkBAIC04NiwxMiArODEsOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAqc3RhdHVzID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChvZmZzZXQgKyBzaXplb2YoVCkgPD0gYnl0ZUxlbmd0aCgpKTsKLSAgICAgICAg
KnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2Jhc2VBZGRyZXNz
LmdldCgpKSArIG9mZnNldCkgPQorICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxUKj4oc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KG1fYmFzZUFkZHJlc3MuZ2V0KGJ5dGVMZW5ndGgoKSkpICsgb2Zmc2V0
KSA9CiAgICAgICAgICAgICBmbGlwQnl0ZXNJZkxpdHRsZUVuZGlhbih2YWx1ZSwgbGl0dGxlRW5k
aWFuKTsKICAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9ieXRlTGVuZ3RoOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGlyZWN0QXJndW1lbnRzLmNwcAppbmRleCBlMDAxYmUyOTRiNjY4MjlkMTM3YWZjYjdiMWIy
MGRmZWYzMjNjYzY2Li4zZWU4NzZiZTcyODM3ZTc3OGQ3MDFkYTIxMTJhZTQ1YjNhYjM3MDIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIERpcmVjdEFyZ3VtZW50czo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIHRoaXNDZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+bV9tYXBw
ZWRBcmd1bWVudHMpCi0gICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh0aGlzT2JqZWN0LT5t
X21hcHBlZEFyZ3VtZW50cy5nZXQoKSk7CisgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFyeSh0
aGlzT2JqZWN0LT5tX21hcHBlZEFyZ3VtZW50cy5nZXQodGhpc09iamVjdC0+aW50ZXJuYWxMZW5n
dGgoKSkpOwogICAgIEdlbmVyaWNBcmd1bWVudHM8RGlyZWN0QXJndW1lbnRzPjo6dmlzaXRDaGls
ZHJlbih0aGlzQ2VsbCwgdmlzaXRvcik7CiB9CiAKQEAgLTEyMCw4ICsxMjAsOCBAQCB2b2lkIERp
cmVjdEFyZ3VtZW50czo6b3ZlcnJpZGVUaGluZ3MoVk0mIHZtKQogICAgIAogICAgIHZvaWQqIGJh
Y2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9tYXBwZWRBcmd1bWVudHMu
a2luZCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBtYXBwZWRBcmd1bWVudHNTaXplKCksIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKICAgICBib29sKiBvdmVycmlkZXMg
PSBzdGF0aWNfY2FzdDxib29sKj4oYmFja2luZ1N0b3JlKTsKLSAgICBtX21hcHBlZEFyZ3VtZW50
cy5zZXQodm0sIHRoaXMsIG92ZXJyaWRlcyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9sZW5n
dGg7IGktLTspCisgICAgbV9tYXBwZWRBcmd1bWVudHMuc2V0KHZtLCB0aGlzLCBvdmVycmlkZXMs
IGludGVybmFsTGVuZ3RoKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IGludGVybmFsTGVuZ3Ro
KCk7IGktLTspCiAgICAgICAgIG92ZXJyaWRlc1tpXSA9IGZhbHNlOwogfQogCkBAIC0xMzQsNyAr
MTM0LDcgQEAgdm9pZCBEaXJlY3RBcmd1bWVudHM6Om92ZXJyaWRlVGhpbmdzSWZOZWNlc3Nhcnko
Vk0mIHZtKQogdm9pZCBEaXJlY3RBcmd1bWVudHM6OnVubWFwQXJndW1lbnQoVk0mIHZtLCB1bnNp
Z25lZCBpbmRleCkKIHsKICAgICBvdmVycmlkZVRoaW5nc0lmTmVjZXNzYXJ5KHZtKTsKLSAgICBt
X21hcHBlZEFyZ3VtZW50c1tpbmRleF0gPSB0cnVlOworICAgIG1fbWFwcGVkQXJndW1lbnRzLmF0
KGluZGV4LCBpbnRlcm5hbExlbmd0aCgpKSA9IHRydWU7CiB9CiAKIHZvaWQgRGlyZWN0QXJndW1l
bnRzOjpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBWaXJ0dWFsUmVnaXN0ZXIgZmly
c3RFbGVtZW50RGVzdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCmluZGV4IDMyY2Rk
MGI3MDQ2Y2M4ZjYxODZiNThjNDM5ZDY1NzQ1ZWZlOWRjZWQuLjljYTAxZjMzYzczMzg1OTIwNmY5
NzAzOWZmNWU1N2FkZTYzZDYyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RpcmVjdEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RpcmVjdEFyZ3VtZW50cy5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBib29sIGlzTWFwcGVkQXJndW1lbnQodWludDMyX3QgaSkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBpIDwgbV9sZW5ndGggJiYgKCFtX21hcHBlZEFyZ3VtZW50cyB8fCAhbV9tYXBwZWRB
cmd1bWVudHNbaV0pOworICAgICAgICByZXR1cm4gaSA8IG1fbGVuZ3RoICYmICghbV9tYXBwZWRB
cmd1bWVudHMgfHwgIW1fbWFwcGVkQXJndW1lbnRzLmF0KGksIG1fbGVuZ3RoKSk7CiAgICAgfQog
CiAgICAgYm9vbCBpc01hcHBlZEFyZ3VtZW50SW5ERkcodWludDMyX3QgaSkgY29uc3QKQEAgLTE4
Miw3ICsxODIsOCBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Nh
bGxlZTsKICAgICB1aW50MzJfdCBtX2xlbmd0aDsgLy8gQWx3YXlzIHRoZSBhY3R1YWwgbGVuZ3Ro
IG9mIGNhcHR1cmVkIGFyZ3VtZW50cyBhbmQgbmV2ZXIgd2hhdCB3YXMgc3RvcmVkIGludG8gdGhl
IGxlbmd0aCBwcm9wZXJ0eS4KICAgICB1aW50MzJfdCBtX21pbkNhcGFjaXR5OyAvLyBUaGUgbWF4
IG9mIHRoaXMgYW5kIGxlbmd0aCBkZXRlcm1pbmVzIHRoZSBjYXBhY2l0eSBvZiB0aGlzIG9iamVj
dC4gSXQgbWF5IGJlIHRoZSBhY3R1YWwgY2FwYWNpdHksIG9yIG1heWJlIHNvbWV0aGluZyBzbWFs
bGVyLiBXZSBhcnJhbmdlIGl0IHRoaXMgd2F5IHRvIGJlIGtpbmQgdG8gdGhlIEpJVHMuCi0gICAg
Q2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJvb2w+IG1fbWFwcGVkQXJndW1l
bnRzOyAvLyBJZiBub24tbnVsbCwgaXQgbWVhbnMgdGhhdCBsZW5ndGgsIGNhbGxlZSwgYW5kIGNh
bGxlciBhcmUgZnVsbHkgbWF0ZXJpYWxpemVkIHByb3BlcnRpZXMuCisgICAgdXNpbmcgTWFwcGVk
QXJndW1lbnRzID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJvb2w+Owor
ICAgIE1hcHBlZEFyZ3VtZW50cyBtX21hcHBlZEFyZ3VtZW50czsgLy8gSWYgbm9uLW51bGwsIGl0
IG1lYW5zIHRoYXQgbGVuZ3RoLCBjYWxsZWUsIGFuZCBjYWxsZXIgYXJlIGZ1bGx5IG1hdGVyaWFs
aXplZCBwcm9wZXJ0aWVzLgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKaW5kZXggNmE2MzgwZTdm
MWI5ZDUxZTlkM2EzNzZmOTIwZTNlNmQ2NzZiNzE2Ni4uYjFjNzg2ODQyNzQxNDU5NjRmNzFhMmI3
NDkwZmEzYzEwOTg2NDFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHMuaApAQCAtNjAsOCArNjAsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpc01vZGlmaWVkQXJndW1lbnREZXNjcmlwdG9yKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBs
ZW5ndGgpOwogCiAgICAgdm9pZCBjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKiwgVmlydHVhbFJl
Z2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICAKLSAgICBDYWdlZEJhcnJpZXJQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgYm9vbD4g
bV9tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3I7CisKKyAgICB1c2luZyBNb2RpZmllZEFyZ3Vt
ZW50c1B0ciA9IENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCBib29sPjsKKyAg
ICBNb2RpZmllZEFyZ3VtZW50c1B0ciBtX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggMmJlNDFmZTk5NzI2Y2Vi
ZDlhODhmOGE0MjlmNWRlMDFhMzkyM2NkMi4uZDU2ZWJmNWI3ODMyNTk1YzhiZjlhNGVkNGQ1NTRj
MWRiNGNhMmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgR2VuZXJp
Y0FyZ3VtZW50czxUeXBlPjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIHRoaXNDZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzQ2VsbCwgdmlzaXRvcik7
CiAgICAgCiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9y
KQotICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlhcnkodGhpc09iamVjdC0+bV9tb2RpZmllZEFy
Z3VtZW50c0Rlc2NyaXB0b3IuZ2V0KCkpOworICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlhcnko
dGhpc09iamVjdC0+bV9tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IuZ2V0VW5zYWZlKCkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgR2Vu
ZXJpY0FyZ3VtZW50czxUeXBlPjo6aW5pdE1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcihWTSYg
dm0sIHVuc2lnbmVkIGFyCiAgICAgaWYgKGFyZ3NMZW5ndGgpIHsKICAgICAgICAgdm9pZCogYmFj
a2luZ1N0b3JlID0gdm0uZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShtX21vZGlmaWVkQXJndW1lbnRz
RGVzY3JpcHRvci5raW5kKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZjw4PihhcmdzTGVuZ3RoKSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpB
c3NlcnQpOwogICAgICAgICBib29sKiBtb2RpZmllZEFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PGJv
b2wqPihiYWNraW5nU3RvcmUpOwotICAgICAgICBtX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRv
ci5zZXQodm0sIHRoaXMsIG1vZGlmaWVkQXJndW1lbnRzKTsKKyAgICAgICAgbV9tb2RpZmllZEFy
Z3VtZW50c0Rlc2NyaXB0b3Iuc2V0KHZtLCB0aGlzLCBtb2RpZmllZEFyZ3VtZW50cywgYXJnc0xl
bmd0aCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3NMZW5ndGg7IGktLTspCiAgICAg
ICAgICAgICBtb2RpZmllZEFyZ3VtZW50c1tpXSA9IGZhbHNlOwogICAgIH0KQEAgLTI4Myw3ICsy
ODMsNyBAQCB2b2lkIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnNldE1vZGlmaWVkQXJndW1lbnRE
ZXNjcmlwdG9yKFZNJiB2bSwgdW5zaWduZWQgaW5kZQogewogICAgIGluaXRNb2RpZmllZEFyZ3Vt
ZW50c0Rlc2NyaXB0b3JJZk5lY2Vzc2FyeSh2bSwgbGVuZ3RoKTsKICAgICBpZiAoaW5kZXggPCBs
ZW5ndGgpCi0gICAgICAgIG1fbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yW2luZGV4XSA9IHRy
dWU7CisgICAgICAgIG1fbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yLmF0KGluZGV4LCBsZW5n
dGgpID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KQEAgLTI5Miw3ICsyOTIs
NyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmlzTW9kaWZpZWRBcmd1bWVudERlc2Ny
aXB0b3IodW5zaWduZWQgaW5kZXgsIHVuc2lnbgogICAgIGlmICghbV9tb2RpZmllZEFyZ3VtZW50
c0Rlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaW5kZXggPCBsZW5n
dGgpCi0gICAgICAgIHJldHVybiBtX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcltpbmRleF07
CisgICAgICAgIHJldHVybiBtX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvci5hdChpbmRleCwg
bGVuZ3RoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggZWYyZTgwZjRl
YTAzYmRlNjQ5MWNmNzMzM2EyN2I3YzU3N2YwZWI1ZS4uODJmZGZhMWY0NGEwMDg3ODY1NjY3YmM0
NWRhNjQ1ZDg2OTRiMTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTU4LDggKzU4LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSksCiAgICAgICAgICAgICBjb3VudCAqIHNpemVvZih0eXBlbmFt
ZSBBZGFwdG9yOjpUeXBlKSwKLSAgICAgICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSwKLSAgICAgICAgICAgIGludGVybmFsQnl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIG9mZnNldCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CiAgICAgfQog
ICAgIAogICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IGNvdW50KQpA
QCAtNzMsMTIgKzcyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKGlzTmV1dGVyZWQo
KSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gbV9sZW5ndGg7Ci0gICAg
fQotICAgIAotICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGludGVybmFsQnl0ZUxlbmd0aCgpOworICAgICAgICByZXR1cm4gYnl0
ZUxlbmd0aCgpIC8gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIH0KIAogICAg
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKQEAgLTEw
NCw4ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdldFJhbmdlSW1wbCgKICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpLAogICAgICAgICAgICAgY291bnQg
KiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksCi0gICAgICAgICAgICBvZmZzZXQgKiBz
aXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksCi0gICAgICAgICAgICBpbnRlcm5hbEJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgICAgICBvZmZzZXQgKiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOwogICAgIH0KIAogICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZz
ZXQsIHNpemVfdCBjb3VudCkgY29uc3QKQEAgLTEyNiwxNCArMTE5LDYgQEAgcHVibGljOgogICAg
IH0KIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0Kikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgaW50ZXJuYWxCeXRlTGVu
Z3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBsZW5ndGgoKSAqIHNpemVvZih0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGU2NjBj
ZmNkZDQ4OTQ1NjJkMTc0ZjY0NjU3NWQ1NjIyYjEyMjM3OTMuLjc0NmNiZTJmYmViMDdjZTFmOWFi
MzY5MmE0NGRhYmU5YzhiYTJmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTMyLDkg
KzMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKLSAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCi0gICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRl
T2Zmc2V0KQotICAgICwgbV9sZW5ndGgobGVuZ3RoKQorUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1
ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogQXJyYXlC
dWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoICogc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggYzJkZTAwM2ZmNmI3MTBk
ZGU3ZGRiYmU4MTk5NGE1ODI4ZTQ1NzJjYy4uZDFkODY3OTkwNTRhNzU3MDU4NWNjNmE0MGE3NmI1
ZjU0NTMyM2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDExICs1MCwxMiBAQCBTdHJpbmcgSlNBcnJheUJ1
ZmZlclZpZXc6OnRvU3RyaW5nTmFtZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSopCiBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbGVuZ3RoLCB2b2lkKiB2ZWN0b3Ip
CiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCi0gICAgLCBtX3ZlY3Rvcih2ZWN0b3IpCisg
ICAgLCBtX3ZlY3Rvcih2ZWN0b3IsIGxlbmd0aCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAg
ICAsIG1fbW9kZShGYXN0VHlwZWRBcnJheSkKICAgICAsIG1fYnV0dGVyZmx5KG51bGxwdHIpCiB7
CisgICAgQVNTRVJUKHZlY3RvciA9PSByZW1vdmVBcnJheVB0clRhZyh2ZWN0b3IpKTsKICAgICBS
RUxFQVNFX0FTU0VSVChsZW5ndGggPD0gZmFzdFNpemVMaW1pdCk7CiB9CiAKQEAgLTc0LDExICs3
NSwxMSBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0
aW9uQ29udGV4dCgKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX3N0cnVjdHVyZSA9
IHN0cnVjdHVyZTsKLSAgICAgICAgbV92ZWN0b3IgPSB0ZW1wOworICAgICAgICBtX3ZlY3RvciA9
IFZlY3RvclR5cGUodGVtcCwgbGVuZ3RoKTsKICAgICAgICAgbV9tb2RlID0gRmFzdFR5cGVkQXJy
YXk7CiAKICAgICAgICAgaWYgKG1vZGUgPT0gWmVyb0ZpbGwpIHsKLSAgICAgICAgICAgIHVpbnQ2
NF90KiBhc1dvcmRzID0gc3RhdGljX2Nhc3Q8dWludDY0X3QqPihtX3ZlY3Rvci5nZXRNYXlCZU51
bGwoKSk7CisgICAgICAgICAgICB1aW50NjRfdCogYXNXb3JkcyA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90Kj4odmVjdG9yKCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2l6ZSAvIHNp
emVvZih1aW50NjRfdCk7IGktLTspCiAgICAgICAgICAgICAgICAgYXNXb3Jkc1tpXSA9IDA7CiAg
ICAgICAgIH0KQEAgLTkxLDExICs5MiwxMSBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0
aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbGVtZW50U2l6ZSk7Ci0gICAgbV92ZWN0b3IgPSBHaWdhY2FnZTo6dHJ5TWFs
bG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpOworICAgIG1fdmVjdG9yID0gVmVjdG9yVHlw
ZShHaWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHNpemUpLCBsZW5ndGgp
OwogICAgIGlmICghbV92ZWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobW9kZSA9PSBa
ZXJvRmlsbCkKLSAgICAgICAgbWVtc2V0KG1fdmVjdG9yLmdldCgpLCAwLCBzaXplKTsKKyAgICAg
ICAgbWVtc2V0KHZlY3RvcigpLCAwLCBzaXplKTsKICAgICAKICAgICB2bS5oZWFwLnJlcG9ydEV4
dHJhTWVtb3J5QWxsb2NhdGVkKHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSAqIGVsZW1lbnRT
aXplKTsKICAgICAKQEAgLTExMCw3ICsxMTEsOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3Ry
dWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKICAgICAsIG1fbW9kZShXYXN0ZWZ1bFR5cGVkQXJyYXkpCiB7Ci0gICAgbV92ZWN0b3IgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSkgKyBieXRlT2Zmc2V0Owor
ICAgIEFTU0VSVChhcnJheUJ1ZmZlci0+ZGF0YSgpID09IHJlbW92ZUFycmF5UHRyVGFnKGFycmF5
QnVmZmVyLT5kYXRhKCkpKTsKKyAgICBtX3ZlY3RvciA9IFZlY3RvclR5cGUoc3RhdGljX2Nhc3Q8
dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAg
ICBJbmRleGluZ0hlYWRlciBpbmRleGluZ0hlYWRlcjsKICAgICBpbmRleGluZ0hlYWRlci5zZXRB
cnJheUJ1ZmZlcihhcnJheUJ1ZmZlci5nZXQoKSk7CiAgICAgbV9idXR0ZXJmbHkgPSBCdXR0ZXJm
bHk6OmNyZWF0ZSh2bSwgMCwgMCwgMCwgdHJ1ZSwgaW5kZXhpbmdIZWFkZXIsIDApOwpAQCAtMTI0
LDcgKzEyNiw4IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25z
dHJ1Y3Rpb25Db250ZXh0KAogICAgICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKICAgICAsIG1fYnV0
dGVyZmx5KDApCiB7Ci0gICAgbV92ZWN0b3IgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlC
dWZmZXItPmRhdGEoKSkgKyBieXRlT2Zmc2V0OworICAgIEFTU0VSVChhcnJheUJ1ZmZlci0+ZGF0
YSgpID09IHJlbW92ZUFycmF5UHRyVGFnKGFycmF5QnVmZmVyLT5kYXRhKCkpKTsKKyAgICBtX3Zl
Y3RvciA9IFZlY3RvclR5cGUoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRh
KCkpICsgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKIH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkpTQXJy
YXlCdWZmZXJWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCkKQEAgLTEz
Myw3ICsxMzYsOCBAQCBKU0FycmF5QnVmZmVyVmlldzo6SlNBcnJheUJ1ZmZlclZpZXcoVk0mIHZt
LCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9tb2RlKGNvbnRleHQubW9k
ZSgpKQogewogICAgIHNldEJ1dHRlcmZseSh2bSwgY29udGV4dC5idXR0ZXJmbHkoKSk7Ci0gICAg
bV92ZWN0b3Iuc2V0V2l0aG91dEJhcnJpZXIoY29udGV4dC52ZWN0b3IoKSk7CisgICAgQVNTRVJU
KGNvbnRleHQudmVjdG9yKCkgPT0gcmVtb3ZlQXJyYXlQdHJUYWcoY29udGV4dC52ZWN0b3IoKSkp
OworICAgIG1fdmVjdG9yLnNldFdpdGhvdXRCYXJyaWVyKGNvbnRleHQudmVjdG9yKCksIG1fbGVu
Z3RoKTsKIH0KIAogdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQpAQCAtMTk0LDcgKzE5OCw3IEBAIHZvaWQgSlNBcnJheUJ1ZmZlclZpZXc6OmZpbmFsaXplKEpT
Q2VsbCogY2VsbCkKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCk7CiAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1f
bW9kZSA9PSBPdmVyc2l6ZVR5cGVkQXJyYXkgfHwgdGhpc09iamVjdC0+bV9tb2RlID09IFdhc3Rl
ZnVsVHlwZWRBcnJheSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kZSA9PSBPdmVyc2l6ZVR5
cGVkQXJyYXkpCi0gICAgICAgIEdpZ2FjYWdlOjpmcmVlKEdpZ2FjYWdlOjpQcmltaXRpdmUsIHRo
aXNPYmplY3QtPm1fdmVjdG9yLmdldCgpKTsKKyAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNh
Z2U6OlByaW1pdGl2ZSwgdGhpc09iamVjdC0+dmVjdG9yKCkpOwogfQogCiBKU0FycmF5QnVmZmVy
KiBKU0FycmF5QnVmZmVyVmlldzo6dW5zaGFyZWRKU0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCkBA
IC0yODMsNyArMjg3LDcgQEAgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpzbG93RG93
bkFuZFdhc3RlTWVtb3J5KCkKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
Y2VsbExvY2soKSk7CiAgICAgICAgIGJ1dHRlcmZseSgpLT5pbmRleGluZ0hlYWRlcigpLT5zZXRB
cnJheUJ1ZmZlcihidWZmZXIuZ2V0KCkpOwotICAgICAgICBtX3ZlY3Rvci5zZXRXaXRob3V0QmFy
cmllcihidWZmZXItPmRhdGEoKSk7CisgICAgICAgIG1fdmVjdG9yLnNldFdpdGhvdXRCYXJyaWVy
KGJ1ZmZlci0+ZGF0YSgpLCBtX2xlbmd0aCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7CiAgICAgICAgIG1fbW9kZSA9IFdhc3RlZnVsVHlwZWRBcnJheTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCBl
ZjdlYmUxYWQyYTVkMTc2MTMyOTkyOTVlNDc4YjQ3NzRiZDY2Nzk2Li40ZGZkMDhmMjU5M2Y5ZDU0
ZGYwMTFiM2M4MTI3OGM1OTRiMWUzZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiQXV4aWxpYXJ5QmFycmllci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSA8d3RmL1RhZ2dlZEFycmF5U3RvcmFnZVB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
OTYsNiArOTcsNyBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZmFzdFNpemVMaW1pdCA9IDEwMDA7CisgICAgdXNpbmcg
VmVjdG9yUHRyID0gQ2FnZWRCYXJyaWVyUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRh
Z0NhZ2VkUHRyPjsKICAgICAKICAgICBzdGF0aWMgc2l6ZV90IHNpemVPZih1aW50MzJfdCBsZW5n
dGgsIHVpbnQzMl90IGVsZW1lbnRTaXplKQogICAgIHsKQEAgLTEzMywxNCArMTM1LDE1IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdHJ1
Y3R1cmU7IH0KICAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICAgICAgdm9pZCogdmVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKCk7IH0KKyAgICAgICAgdm9pZCogdmVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0TWF5QmVOdWxsKG1fbGVuZ3RoKTsgfQogICAgICAg
ICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgICAgICBU
eXBlZEFycmF5TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAgIEJ1
dHRlcmZseSogYnV0dGVyZmx5KCkgY29uc3QgeyByZXR1cm4gbV9idXR0ZXJmbHk7IH0KICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKLSAgICAg
ICAgQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZD4gbV92ZWN0b3I7CisgICAgICAg
IHVzaW5nIFZlY3RvclR5cGUgPSBDYWdlZFB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lkLCB0
YWdDYWdlZFB0cj47CisgICAgICAgIFZlY3RvclR5cGUgbV92ZWN0b3I7CiAgICAgICAgIHVpbnQz
Ml90IG1fbGVuZ3RoOwogICAgICAgICBUeXBlZEFycmF5TW9kZSBtX21vZGU7CiAgICAgICAgIEJ1
dHRlcmZseSogbV9idXR0ZXJmbHk7CkBAIC0xNjQsMTAgKzE2NywxMSBAQCBwdWJsaWM6CiAgICAg
SlNBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRKU0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpOwog
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHVuc2hhcmVkSW1wbCgpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHBvc3NpYmx5U2hhcmVkSW1wbCgpOwot
ICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuIGhhc0FycmF5QnVmZmVyKCkgJiYgIXZlY3Rv
cigpOyB9CisgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gaGFzQXJyYXlCdWZmZXIoKSAm
JiAhaGFzVmVjdG9yKCk7IH0KICAgICB2b2lkIG5ldXRlcigpOwotICAgIAotICAgIHZvaWQqIHZl
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmdldE1heUJlTnVsbCgpOyB9CisKKyAgICBi
b29sIGhhc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuICEhbV92ZWN0b3I7IH0KKyAgICB2b2lkKiB2
ZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5nZXRNYXlCZU51bGwobGVuZ3RoKCkpOyB9
CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CkBAIC0xOTEsNyArMTk1LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBFeGVj
U3RhdGUqKTsKIAotICAgIENhZ2VkQmFycmllclB0cjxHaWdhY2FnZTo6UHJpbWl0aXZlLCB2b2lk
PiBtX3ZlY3RvcjsKKyAgICBWZWN0b3JQdHIgbV92ZWN0b3I7CiAgICAgdWludDMyX3QgbV9sZW5n
dGg7CiAgICAgVHlwZWRBcnJheU1vZGUgbV9tb2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmgKaW5kZXggYTI3ZmU3ODI2ZTk0NWIzODI2NzI5NGNmNzExM2E2NzlkMmJhMjdmYy4uZDQy
YWY2NDk1NGYzZjRhZmUyMDBjMGQ0OGYyN2Y2YzY5ZGEyZjg2MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmgKQEAgLTc3LDggKzc3LDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVXaXRoRmEKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFs
aXplZCgKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25l
ZCBsZW5ndGgpCitKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtNTA3LDcgKzUwNiw3IEBAIHNpemVfdCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pjo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2bSkKIAogICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX21vZGUgPT0gT3ZlcnNpemVUeXBlZEFycmF5KQogICAgICAgICByZXR1cm4gQmFzZTo6
ZXN0aW1hdGVkU2l6ZSh0aGlzT2JqZWN0LCB2bSkgKyB0aGlzT2JqZWN0LT5ieXRlU2l6ZSgpOwot
ICAgIGlmICh0aGlzT2JqZWN0LT5tX21vZGUgPT0gRmFzdFR5cGVkQXJyYXkgJiYgdGhpc09iamVj
dC0+bV92ZWN0b3IpCisgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kZSA9PSBGYXN0VHlwZWRBcnJh
eSAmJiB0aGlzT2JqZWN0LT5oYXNWZWN0b3IoKSkKICAgICAgICAgcmV0dXJuIEJhc2U6OmVzdGlt
YXRlZFNpemUodGhpc09iamVjdCwgdm0pICsgdGhpc09iamVjdC0+Ynl0ZVNpemUoKTsKIAogICAg
IHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKHRoaXNPYmplY3QsIHZtKTsKQEAgLTUyNiw3ICs1
MjUsNyBAQCB2b2lkIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImCiAgICAgewogICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHRoaXNPYmplY3QtPmNlbGxMb2NrKCkpOwogICAgICAgICBtb2RlID0gdGhp
c09iamVjdC0+bV9tb2RlOwotICAgICAgICB2ZWN0b3IgPSB0aGlzT2JqZWN0LT5tX3ZlY3Rvci5n
ZXRNYXlCZU51bGwoKTsKKyAgICAgICAgdmVjdG9yID0gdGhpc09iamVjdC0+dmVjdG9yKCk7CiAg
ICAgICAgIGJ5dGVTaXplID0gdGhpc09iamVjdC0+Ynl0ZVNpemUoKTsKICAgICB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggYzJjNTkzNjFkZGMxMzJk
NDEyMGU3Njg2YTk5YjVkMzVkOWEzZWY2NC4uYzQyYTM0MWZkOGRkYmIxNGZiM2U2Mjc3NTYyYTQ1
YWEzZDA2ZGEwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAt
NDkyLDggKzQ5Miw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5n
QXBpID0gZmFsc2U7CiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1ibHlMb29wRGVjcmVtZW50LCAx
NSwgTm9ybWFsLCAiVGhlIGFtb3VudCB0aGUgdGllciB1cCBjb3VudGRvd24gaXMgZGVjcmVtZW50
ZWQgb24gZWFjaCBsb29wIGJhY2tlZGdlLiIpIFwKICAgICB2KHVuc2lnbmVkLCB3ZWJBc3NlbWJs
eUZ1bmN0aW9uRW50cnlEZWNyZW1lbnQsIDEsIE5vcm1hbCwgIlRoZSBhbW91bnQgdGhlIHRpZXIg
dXAgY291bnRkb3duIGlzIGRlY3JlbWVudGVkIG9uIGVhY2ggZnVuY3Rpb24gZW50cnkuIikgXAog
ICAgIFwKLSAgICAvKiBGSVhNRTogZW5hYmxlIGZhc3QgbWVtb3JpZXMgb24gaU9TIGFuZCBwcmUt
YWxsb2NhdGUgdGhlbS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDc3NCAqLyBcCi0gICAgdihib29sLCB1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnksICFpc0lPUygp
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHRyeSB0byB1c2UgYSAzMi1iaXQgYWRkcmVzcyBz
cGFjZSB3aXRoIGEgc2lnbmFsIGhhbmRsZXIgdG8gYm91bmRzIGNoZWNrIHdhc20gbWVtb3J5LiIp
IFwKKyAgICB2KGJvb2wsIHVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSwgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgd2Ugd2lsbCB0cnkgdG8gdXNlIGEgMzItYml0IGFkZHJlc3Mgc3BhY2Ugd2l0aCBh
IHNpZ25hbCBoYW5kbGVyIHRvIGJvdW5kcyBjaGVjayB3YXNtIG1lbW9yeS4iKSBcCiAgICAgdihi
b29sLCBsb2dXZWJBc3NlbWJseU1lbW9yeSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYodW5zaWduZWQsIHdlYkFzc2VtYmx5RmFzdE1lbW9yeVJlZHpvbmVQYWdlcywgMTI4LCBOb3Jt
YWwsICJXZWJBc3NlbWJseSBmYXN0IG1lbW9yaWVzIHVzZSA0R2lCIHZpcnR1YWwgYWxsb2NhdGlv
bnMsIHBsdXMgYSByZWR6b25lIChjb3VudGVkIGFzIG11bHRpcGxlIG9mIDY0S2lCIFdlYkFzc2Vt
Ymx5IHBhZ2VzKSBhdCB0aGUgZW5kIHRvIGNhdGNoIHJlZytpbW0gYWNjZXNzZXMgd2hpY2ggZXhj
ZWVkIDMyLWJpdCwgYW55dGhpbmcgYmV5b25kIHRoZSByZWR6b25lIGlzIGV4cGxpY2l0bHkgYm91
bmRzLWNoZWNrZWQiKSBcCiAgICAgdihib29sLCBjcmFzaElmV2ViQXNzZW1ibHlDYW50RmFzdE1l
bW9yeSwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgY3Jhc2ggaWYgd2UgY2FuJ3Qg
b2J0YWluIGZhc3QgbWVtb3J5IGZvciB3YXNtLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmNwcAppbmRleCA5NTVhMzA3
ZDIzZTE2NjllZmJhNGMwMzIyOWVlMWU1MmM3NjA0ZDE1Li41YjBlOWFmMDZjZmIwNGEwZWQyNDdh
YjdmYjRlOTQ4MWFmNjlmOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuY3BwCkBAIC02OCwxNiArNjgsMTYgQEAgU2Nv
cGVkQXJndW1lbnRzVGFibGUqIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjbG9uZShWTSYgdm0pCiB7
CiAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHJlc3VsdCA9IGNyZWF0ZSh2bSwgbV9sZW5ndGgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fbGVuZ3RoOyBpLS07KQotICAgICAgICByZXN1bHQt
Pm1fYXJndW1lbnRzW2ldID0gbV9hcmd1bWVudHNbaV07CisgICAgICAgIHJlc3VsdC0+YXQoaSkg
PSB0aGlzLT5hdChpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBTY29wZWRBcmd1bWVudHNU
YWJsZSogU2NvcGVkQXJndW1lbnRzVGFibGU6OnNldExlbmd0aChWTSYgdm0sIHVpbnQzMl90IG5l
d0xlbmd0aCkKIHsKICAgICBpZiAoTElLRUxZKCFtX2xvY2tlZCkpIHsKLSAgICAgICAgQXJndW1l
bnRzUHRyIG5ld0FyZ3VtZW50cyA9IEFyZ3VtZW50c1B0cjo6Y3JlYXRlKG5ld0xlbmd0aCk7Cisg
ICAgICAgIEFyZ3VtZW50c1B0ciBuZXdBcmd1bWVudHMgPSBBcmd1bWVudHNQdHI6OmNyZWF0ZShu
ZXdMZW5ndGgsIG5ld0xlbmd0aCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0ZDo6bWlu
KG1fbGVuZ3RoLCBuZXdMZW5ndGgpOyBpLS07KQotICAgICAgICAgICAgbmV3QXJndW1lbnRzW2ld
ID0gbV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBuZXdBcmd1bWVudHMuYXQoaSwgbmV3TGVu
Z3RoKSA9IHRoaXMtPmF0KGkpOwogICAgICAgICBtX2xlbmd0aCA9IG5ld0xlbmd0aDsKICAgICAg
ICAgbV9hcmd1bWVudHMgPSBXVEZNb3ZlKG5ld0FyZ3VtZW50cyk7CiAgICAgICAgIHJldHVybiB0
aGlzOwpAQCAtODUsMTAgKzg1LDEyIEBAIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBTY29wZWRBcmd1
bWVudHNUYWJsZTo6c2V0TGVuZ3RoKFZNJiB2bSwgdWludDMyX3QgbmV3TGVuZ3RoCiAgICAgCiAg
ICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHJlc3VsdCA9IGNyZWF0ZSh2bSwgbmV3TGVuZ3RoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGQ6Om1pbihtX2xlbmd0aCwgbmV3TGVuZ3RoKTsgaS0t
OykKLSAgICAgICAgcmVzdWx0LT5tX2FyZ3VtZW50c1tpXSA9IG1fYXJndW1lbnRzW2ldOworICAg
ICAgICByZXN1bHQtPmF0KGkpID0gdGhpcy0+YXQoaSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8U2NvcGVPZmZz
ZXQ+Ojp2YWx1ZSwgIiIpOworCiBTY29wZWRBcmd1bWVudHNUYWJsZSogU2NvcGVkQXJndW1lbnRz
VGFibGU6OnNldChWTSYgdm0sIHVpbnQzMl90IGksIFNjb3BlT2Zmc2V0IHZhbHVlKQogewogICAg
IFNjb3BlZEFyZ3VtZW50c1RhYmxlKiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuaAppbmRleCBlODEyMzQyOTdiMGJi
OGEwMjU4MDJmMzdhODk4NDcwODhhNWFlMTM1Li41NThhOWViYTM5ZGU1MDBiODYwMzU0NDYwNzYz
MjhjYTg0NDk5YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZWRBcmd1bWVudHNUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlZEFyZ3VtZW50c1RhYmxlLmgKQEAgLTYxLDEwICs2MSw3IEBAIHB1YmxpYzoKICAgICB1
aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIFNjb3BlZEFy
Z3VtZW50c1RhYmxlKiBzZXRMZW5ndGgoVk0mLCB1aW50MzJfdCBuZXdMZW5ndGgpOwogICAgIAot
ICAgIFNjb3BlT2Zmc2V0IGdldCh1aW50MzJfdCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8U2NvcGVkQXJndW1lbnRzVGFibGUqPih0aGlzKS0+YXQoaSk7Ci0gICAg
fQorICAgIFNjb3BlT2Zmc2V0IGdldCh1aW50MzJfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsg
fQogICAgIAogICAgIHZvaWQgbG9jaygpCiAgICAgewpAQCAtODAsMTMgKzc3LDEzIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFNjb3BlZEFyZ3VtZW50c1RhYmxlLCBtX2xlbmd0aCk7IH0KICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mQXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFNj
b3BlZEFyZ3VtZW50c1RhYmxlLCBtX2FyZ3VtZW50cyk7IH0KIAotICAgIHR5cGVkZWYgQ2FnZWRV
bmlxdWVQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgU2NvcGVPZmZzZXRbXT4gQXJndW1lbnRzUHRy
OworICAgIHR5cGVkZWYgQ2FnZWRVbmlxdWVQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgU2NvcGVP
ZmZzZXQ+IEFyZ3VtZW50c1B0cjsKIAogcHJpdmF0ZToKLSAgICBTY29wZU9mZnNldCYgYXQodWlu
dDMyX3QgaSkKKyAgICBTY29wZU9mZnNldCYgYXQodWludDMyX3QgaSkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2xlbmd0aCk7Ci0g
ICAgICAgIHJldHVybiBtX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRz
LmdldChsZW5ndGgoKSlbaV07CiAgICAgfQogICAgIAogICAgIHVpbnQzMl90IG1fbGVuZ3RoOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggNmZhM2Y1
ODBhMjg4NDU3YzAwNGU4NmEyYmU0ZDA5MGQwZWUwMWY5OC4uOGI3NGEyMGM4MjkxMDkxMjI1MTMw
Y2YxOWExMWFlMzA5ZGQ3YzdiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCkBAIC02MzYsOCArNjM2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXJn
dW1lbnRzTGVuZ3RoKFZNJiB2bSwgdWludDMyX3QgbGVuZ3RoKQogICAgIHsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFtX2FyZ3VtZW50cykpCi0gICAgICAgICAgICBtX2FyZ3VtZW50cy5zZXQodm0s
IHRoaXMsIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjcmVhdGUodm0pKTsKLSAgICAgICAgbV9hcmd1
bWVudHMuc2V0KHZtLCB0aGlzLCBtX2FyZ3VtZW50cy0+c2V0TGVuZ3RoKHZtLCBsZW5ndGgpKTsK
KyAgICAgICAgICAgIG1fYXJndW1lbnRzLnNldCh2bSwgdGhpcywgU2NvcGVkQXJndW1lbnRzVGFi
bGU6OmNyZWF0ZSh2bSwgbGVuZ3RoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYXJn
dW1lbnRzLnNldCh2bSwgdGhpcywgbV9hcmd1bWVudHMtPnNldExlbmd0aCh2bSwgbGVuZ3RoKSk7
CiAgICAgfQogICAgIAogICAgIFNjb3BlT2Zmc2V0IGFyZ3VtZW50T2Zmc2V0KHVpbnQzMl90IGkp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcAppbmRleCA5OTQ0Zjc1MjNmNDcwMmY1OWZmNjA5YTQzM2JkOGE0NmIxZGZhNTE2Li41
N2IzZGY4MTBlNGIxMmY5ZTczYWM0YjE0NzgwYjE2NDlkODczY2IyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTgzNiw2ICs4
MzYsOCBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0
ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0bwogICAgICAgICBSZWdpc3RlclNldCBjbG9i
YmVyczsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVy
KTsKICAgICAgICAgY2xvYmJlcnMuc2V0KHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7CisgICAg
ICAgIGlmICghaXNBUk02NCgpKQorICAgICAgICAgICAgY2xvYmJlcnMuc2V0KFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9
IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOwogICAgICAgICBCMzo6RWZmZWN0cyBlZmZlY3RzID0g
QjM6OkVmZmVjdHM6Om5vbmUoKTsKQEAgLTg0MywxMCArODQ1LDE4IEBAIHZvaWQgQWlySVJHZW5l
cmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xp
bWl0IHJlc3RvCiAgICAgICAgIGVmZmVjdHMucmVhZHMgPSBCMzo6SGVhcFJhbmdlOjp0b3AoKTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IGVmZmVjdHM7CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoY2xvYmJlcnMpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnMgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gMSA6
IDA7CiAKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFtwaW5uZWRSZWdzXSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSkgfHwgIWlzQVJNNjQoKSk7CisgICAgICAgICAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCAhaXNBUk02NCgpKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50
ZXI7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJs
ZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVn
cy0+c2l6ZVJlZ2lzdGVyOworCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlT
aXplKCkpLCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOwotICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNl
dE9mQ2FjaGVkTWVtb3J5KCkpLCBwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7CisgICAg
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigp
LCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworCisgICAg
ICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1l
bW9yeSwgc2NyYXRjaE9yU2l6ZSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGVtaXRQYXRjaHBv
aW50KGJsb2NrLCBwYXRjaHBvaW50LCBUbXAoKSwgaW5zdGFuY2UpOwpAQCAtMTk1OCw2ICsxOTY4
LDggQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2kKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIxODEKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihQaW5uZWRSZWdpc3Rlcklu
Zm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOwogICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEdpZ2FjYWdlOjpp
c0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyAxIDogMDsKKwogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBHUFJSZWcg
bmV3Q29udGV4dEluc3RhbmNlID0gcGFyYW1zWzBdLmdwcigpOwpAQCAtMTk3MSw4ICsxOTgzLDEy
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpCiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAg
ICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NTIKICAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAhPSBuZXdDb250
ZXh0SW5zdGFuY2UpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBHaWdhY2Fn
ZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8vIE1lbW9yeSBz
aXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0Nv
bnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVt
b3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KKworICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25h
bGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPclNpemUpOwogICAg
ICAgICB9KTsKIAogICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNo
cG9pbnQsIFRtcCgpLCBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXgg
OTQwYzg4ODIyOWFkOTQ2ZWU2NzQxMDE2NzU4YjVkYzU0NDhhY2E4OS4uMjIyNmZmYzcyYzkzODJj
YzI2ZmIzZWJiZTA5NDI5NzYwZWY0NGFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IkIzVmFyaWFibGVWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCIKKyNpbmNsdWRlICJEaXNhbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmgiCkBAIC00NzcsNiArNDc4LDggQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdCByZXN0b3IKICAg
ICAgICAgUmVnaXN0ZXJTZXQgY2xvYmJlcnM7CiAgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRS
ZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7CiAgICAgICAgIGNsb2JiZXJzLnNldChwaW5uZWRSZWdz
LT5zaXplUmVnaXN0ZXIpOworICAgICAgICBpZiAoIWlzQVJNNjQoKSkKKyAgICAgICAgICAgIGNs
b2JiZXJzLnNldChSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCiAgICAg
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PEIz
OjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBvcmlnaW4oKSk7CiAgICAgICAgIEVm
ZmVjdHMgZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKQEAgLTQ4NCwxMyArNDg3LDE5IEBAIHZv
aWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNh
Y2hlZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIGVmZmVjdHMucmVhZHMgPSBCMzo6SGVhcFJh
bmdlOjp0b3AoKTsKICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IGVmZmVjdHM7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoY2xvYmJlcnMpOworICAgICAgICBwYXRjaHBvaW50LT5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmlt
aXRpdmUpID8gMSA6IDA7CiAKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGluc3RhbmNlLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLQogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoW3Bpbm5lZFJlZ3NdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2ln
YWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSB8fCAhaXNBUk02NCgpKTsKKyAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChq
aXQsICFpc0FSTTY0KCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRS
ZWdzLT5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXpl
ID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNj
cmF0Y2goMCkgOiBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXI7CisKICAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpv
ZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7CiAg
ICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdw
cigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworCisg
ICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFz
ZU1lbW9yeSwgc2NyYXRjaE9yU2l6ZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTEzNzEs
NiArMTM4MCw4IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAgICAgICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG5ld0NvbnRleHRJbnN0YW5jZSwgVmFsdWVSZXA6OlNvbWVSZWdp
c3Rlcik7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChpbnN0YW5jZVZhbHVlKCksIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gMSA6IDA7
CisKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwog
ICAgICAgICAgICAgR1BSUmVnIG5ld0NvbnRleHRJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsK
QEAgLTEzODUsOCArMTM5NiwxMiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVj
dChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUg
cmVnaXN0ZXIKICAgICAgICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5zaXpl
UmVnaXN0ZXIgIT0gbmV3Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoT3JTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBh
cmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcjsKKwogICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwg
SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwgcGlubmVkUmVncy5zaXplUmVn
aXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCisKKyAgICAgICAgICAg
IGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBz
Y3JhdGNoT3JTaXplKTsKICAgICAgICAgfSk7CiAgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCBlNjg2
ZmE3YzU4ODNkNTI0ODQwMmNlMWVjZjM1ZDAzMTAwMjViYTA1Li4wYjM4ZjlkNTk2YmZjMDdiY2I2
NzJiYzJhMTdiNzFhYWRjMWM0OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShj
b25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBv
aW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAotICAg
ICAgICAgICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25Q
dHJUYWcsICJXZWJBc3NlbWJseSBmdW5jdGlvblslaV0gJXMiLCBmdW5jdGlvbkluZGV4LCBzaWdu
YXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5
IEJCUSBmdW5jdGlvblslaV0gJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAgICAgIFdURk1vdmUoY29udGV4dC53
YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IDkzNDk3MTczOTEyNmVmODUzZDll
MDU3ZTM2YmIyZTYxMmQ0NzIyNGYuLmZlZDQ1YjEwNjNjOWEzNmJmNjUxY2Y4MDNlZTEwZjFjNWJl
N2M2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0
clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICBjb25zdCBQaW5uZWRS
ZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAg
IEpJVCBqaXQ7CiAKLSAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86Om5vblByZXNlcnZlZE5v
bkFyZ3VtZW50R1BSMDsKKyAgICBHUFJSZWcgc2NyYXRjaCA9IHdhc21DYWxsaW5nQ29udmVudGlv
bkFpcigpLnByb2xvZ3VlU2NyYXRjaCgwKTsKICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5l
ZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNTRVJUKGJhc2VNZW1vcnkgIT0gc2NyYXRj
aCk7CiAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOwpA
QCAtNjYsOCArNjYsMTMgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRy
eVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKIAogICAgIC8vIEZJWE1F
IHRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHRoYXQgYWxsIFdhc206Okluc3RhbmNlIGhhdmUg
dGhlIHNhbWUgcGlubmVkIHJlZ2lzdGVycy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2Mjk1MgogICAgIC8vIFNldCB1cCB0aGUgY2FsbGVlJ3MgYmFzZU1lbW9yeSBy
ZWdpc3RlciBhcyB3ZWxsIGFzIHRoZSBtZW1vcnkgc2l6ZSByZWdpc3RlcnMuCi0gICAgaml0Lmxv
YWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNp
emUuCi0gICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIFdhc206Ok1lbW9y
eTo6dm9pZCouCisgICAgeworICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IGlzQVJNNjRF
KCkgPyBwaW5uZWRSZWdzLnNpemVSZWdpc3RlciA6IHdhc21DYWxsaW5nQ29udmVudGlvbkFpcigp
LnByb2xvZ3VlU2NyYXRjaCgxKTsKKworICAgICAgICBqaXQubG9hZFB0cihKSVQ6OkFkZHJlc3Mo
YmFzZU1lbW9yeSwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5U2l6ZSgpKSwg
cGlubmVkUmVncy5zaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KKyAgICAgICAgaml0Lmxv
YWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIFdhc206Ok1lbW9yeTo6VGFnZ2VkQXJyYXlT
dG9yYWdlUHRyPHZvaWQ+ICh2b2lkKikuCisgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShH
aWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JTaXplKTsKKyAgICB9CiAK
ICAgICAvLyBUYWlsIGNhbGwgaW50byB0aGUgY2FsbGVlIFdlYkFzc2VtYmx5IGZ1bmN0aW9uLgog
ICAgIGppdC5sb2FkUHRyKHNjcmF0Y2gsIHNjcmF0Y2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtSW5zdGFuY2UuaAppbmRleCBiZjExYzE1MjJiOWE2MTlmM2MzNzA0NjZlNGI3OGMz
MmU4NTBkY2JkLi41ZDFmY2YzZjlkM2I4MmJkMDk4MWEyMGNjY2Q1NDRlNzgwN2NlNGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAtNjYsNyArNjYsNyBA
QCBwdWJsaWM6CiAgICAgTWVtb3J5KiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQoKTsg
fQogICAgIFRhYmxlKiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGUuZ2V0KCk7IH0KIAotICAgIHZv
aWQqIGNhY2hlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5OyB9CisgICAg
dm9pZCogY2FjaGVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5
QmVOdWxsKGNhY2hlZE1lbW9yeVNpemUoKSk7IH0KICAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVtb3J5U2l6ZTsgfQogCiAgICAgdm9pZCBzZXRN
ZW1vcnkoUmVmPE1lbW9yeT4mJiBtZW1vcnkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVwZGF0ZUNhY2hlZE1lbW9yeSgpCiAgICAgewogICAgICAgICBpZiAobV9tZW1vcnkg
IT0gbnVsbHB0cikgewotICAgICAgICAgICAgbV9jYWNoZWRNZW1vcnkgPSBtZW1vcnkoKS0+bWVt
b3J5KCk7CisgICAgICAgICAgICBtX2NhY2hlZE1lbW9yeSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPihtZW1vcnkoKS0+bWVtb3J5KCksIG1lbW9yeSgp
LT5zaXplKCkpOwogICAgICAgICAgICAgbV9jYWNoZWRNZW1vcnlTaXplID0gbWVtb3J5KCktPnNp
emUoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAg
IH0KICAgICB2b2lkKiBtX293bmVyIHsgbnVsbHB0ciB9OyAvLyBJbiBhIEpTIGVtYmVkZGluZywg
dGhpcyBpcyBhIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSouCiAgICAgQ29udGV4dCogbV9jb250ZXh0
IHsgbnVsbHB0ciB9OwotICAgIHZvaWQqIG1fY2FjaGVkTWVtb3J5IHsgbnVsbHB0ciB9OworICAg
IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPiBtX2NhY2hl
ZE1lbW9yeTsKICAgICBzaXplX3QgbV9jYWNoZWRNZW1vcnlTaXplIHsgMCB9OwogICAgIFJlZjxN
b2R1bGU+IG1fbW9kdWxlOwogICAgIFJlZlB0cjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCBiMmRhODcwODRjMmJh
MTE2MmNkMzFiNmNiOTlhZDhlMGFmZWMzMDViLi41OTEwMzgyMzQ4ZTk2ZDEyM2FhMWY1MzllMzli
MDlkYTAzMWYwNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNw
cApAQCAtMjUzLDEwICsyNTMsMTEgQEAgTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWws
IFBhZ2VDb3VudCBtYXhpbXVtLCBGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXIKICAgICBBU1NF
UlQoIWluaXRpYWwuYnl0ZXMoKSk7CiAgICAgQVNTRVJUKG1fbW9kZSA9PSBNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZyk7CiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1lbW9yeTo6TWVtb3J5
IGFsbG9jYXRpbmcgIiwgKnRoaXMpOworICAgIEFTU0VSVCghbWVtb3J5KCkpOwogfQogCiBNZW1v
cnk6Ok1lbW9yeSh2b2lkKiBtZW1vcnksIFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4
aW11bSwgc2l6ZV90IG1hcHBlZENhcGFjaXR5LCBNZW1vcnlNb2RlIG1vZGUsIEZ1bmN0aW9uPHZv
aWQoTm90aWZ5UHJlc3N1cmUpPiYmIG5vdGlmeU1lbW9yeVByZXNzdXJlLCBGdW5jdGlvbjx2b2lk
KFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rp
b248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNz
Q2FsbGJhY2spCi0gICAgOiBtX21lbW9yeShtZW1vcnkpCisgICAgOiBtX21lbW9yeShtZW1vcnks
IGluaXRpYWwuYnl0ZXMoKSkKICAgICAsIG1fc2l6ZShpbml0aWFsLmJ5dGVzKCkpCiAgICAgLCBt
X2luaXRpYWwoaW5pdGlhbCkKICAgICAsIG1fbWF4aW11bShtYXhpbXVtKQpAQCAtMzM4LDE0ICsz
MzksMTQgQEAgTWVtb3J5Ojp+TWVtb3J5KCkKICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVQ
aHlzaWNhbEJ5dGVzKG1fc2l6ZSk7CiAgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAg
IGNhc2UgTWVtb3J5TW9kZTo6U2lnbmFsaW5nOgotICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1f
bWVtb3J5LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
KSkgeworICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSgpLCBNZW1vcnk6OmZhc3RNYXBw
ZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewogICAgICAgICAgICAgICAgIGRh
dGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVtb3J5KG1fbWVtb3J5KTsKKyAg
ICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlRmFzdE1lbW9yeShtZW1vcnkoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzoK
LSAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIG1fbWVtb3J5LCBtX3NpemUpOworICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFs
UGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbWVtb3J5KCksIG1fc2l6ZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTQxOSwyNCArNDIwLDI2IEBAIEV4cGVjdGVk
PFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VDb3Vu
dCBkZWx0YSkKICAgICAgICAgaWYgKCFuZXdNZW1vcnkpCiAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoR3Jvd0ZhaWxSZWFzb246Ok91dE9mTWVtb3J5KTsKIAotICAgICAgICBtZW1j
cHkobmV3TWVtb3J5LCBtX21lbW9yeSwgbV9zaXplKTsKKyAgICAgICAgbWVtY3B5KG5ld01lbW9y
eSwgbWVtb3J5KCksIG1fc2l6ZSk7CiAgICAgICAgIGlmIChtX21lbW9yeSkKLSAgICAgICAgICAg
IEdpZ2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1fbWVtb3J5
LCBtX3NpemUpOwotICAgICAgICBtX21lbW9yeSA9IG5ld01lbW9yeTsKKyAgICAgICAgICAgIEdp
Z2FjYWdlOjpmcmVlVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBt
X3NpemUpOworICAgICAgICBtX21lbW9yeSA9IENhZ2VkTWVtb3J5KG5ld01lbW9yeSwgZGVzaXJl
ZFNpemUpOwogICAgICAgICBtX21hcHBlZENhcGFjaXR5ID0gZGVzaXJlZFNpemU7CiAgICAgICAg
IG1fc2l6ZSA9IGRlc2lyZWRTaXplOworICAgICAgICBBU1NFUlQobWVtb3J5KCkgPT0gbmV3TWVt
b3J5KTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CiAgICAgY2FzZSBNZW1vcnlN
b2RlOjpTaWduYWxpbmc6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9tZW1vcnkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnkoKSk7CiAgICAgICAgIC8vIFNpZ25hbGluZyBtZW1v
cnkgbXVzdCBoYXZlIGJlZW4gcHJlLWFsbG9jYXRlZCB2aXJ0dWFsbHkuCi0gICAgICAgIHVpbnQ4
X3QqIHN0YXJ0QWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX21lbW9yeSkgKyBtX3Np
emU7CisgICAgICAgIHVpbnQ4X3QqIHN0YXJ0QWRkcmVzcyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihtZW1vcnkoKSkgKyBtX3NpemU7CiAgICAgICAgIAotICAgICAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1vcnkncyAiLCBSYXdQb2ludGVyKG1fbWVtb3J5
KSwgIiBhcyByZWFkK3dyaXRlIGluIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyks
ICIsICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzICsgZXh0cmFCeXRlcyksICIpIik7CisgICAg
ICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJNYXJraW5nIFdlYkFzc2VtYmx5IG1lbW9yeSdzICIs
IFJhd1BvaW50ZXIobWVtb3J5KCkpLCAiIGFzIHJlYWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1Bv
aW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRy
YUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFC
eXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coIm1w
cm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKyAgICAgICAgbV9tZW1vcnku
cmVjYWdlKG1fc2l6ZSwgZGVzaXJlZFNpemUpOwogICAgICAgICBtX3NpemUgPSBkZXNpcmVkU2l6
ZTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MoKTsKICAgICB9CkBAIC00NjAsNyArNDYzLDcgQEAg
dm9pZCBNZW1vcnk6OnJlZ2lzdGVySW5zdGFuY2UoSW5zdGFuY2UqIGluc3RhbmNlKQogCiB2b2lk
IE1lbW9yeTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCgi
TWVtb3J5IGF0ICIsIFJhd1BvaW50ZXIobV9tZW1vcnkpLCAiLCBzaXplICIsIG1fc2l6ZSwgIkIg
Y2FwYWNpdHkgIiwgbV9tYXBwZWRDYXBhY2l0eSwgIkIsIGluaXRpYWwgIiwgbV9pbml0aWFsLCAi
IG1heGltdW0gIiwgbV9tYXhpbXVtLCAiIG1vZGUgIiwgbWFrZVN0cmluZyhtX21vZGUpKTsKKyAg
ICBvdXQucHJpbnQoIk1lbW9yeSBhdCAiLCBSYXdQb2ludGVyKG1lbW9yeSgpKSwgIiwgc2l6ZSAi
LCBtX3NpemUsICJCIGNhcGFjaXR5ICIsIG1fbWFwcGVkQ2FwYWNpdHksICJCLCBpbml0aWFsICIs
IG1faW5pdGlhbCwgIiBtYXhpbXVtICIsIG1fbWF4aW11bSwgIiBtb2RlICIsIG1ha2VTdHJpbmco
bV9tb2RlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeS5oCmluZGV4IDAwNzM3ZmMxZTY1ZTJiMjhkMGIwMDhhOWUzOTUzZGM3NzJj
OTkxMTEuLjk2NzA4MzhmMTcxMWY4MmU3YmI0ZTE1YmY4YjVkZDNiODQ4MjZiNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJXYXNtTWVtb3J5TW9kZS5oIgogI2luY2x1ZGUgIldhc21QYWdlQ291bnQuaCIKIAorI2lu
Y2x1ZGUgPHd0Zi9DYWdlZFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02OCw3
ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBwZWRCeXRlcygpOyAv
LyBJbmNsdWRlcyByZWR6b25lLgogICAgIHN0YXRpYyBib29sIGFkZHJlc3NJc0luQWN0aXZlRmFz
dE1lbW9yeSh2b2lkKik7CiAKLSAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX21l
bW9yeTsgfQorICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsgQVNTRVJUKG1fbWVtb3J5LmdldE1h
eUJlTnVsbChzaXplKCkpID09IG1fbWVtb3J5LmdldFVuc2FmZSgpKTsgcmV0dXJuIG1fbWVtb3J5
LmdldE1heUJlTnVsbChzaXplKCkpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KICAgICBQYWdlQ291bnQgc2l6ZUluUGFnZXMoKSBjb25zdCB7IHJldHVybiBQ
YWdlQ291bnQ6OmZyb21CeXRlcyhtX3NpemUpOyB9CiAKQEAgLTk2LDcgKzk3LDggQEAgcHJpdmF0
ZToKICAgICBNZW1vcnkodm9pZCogbWVtb3J5LCBQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50
IG1heGltdW0sIHNpemVfdCBtYXBwZWRDYXBhY2l0eSwgTWVtb3J5TW9kZSwgV1RGOjpGdW5jdGlv
bjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1vcnlQcmVzc3VyZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNUcnlUb1JlY2xhaW1NZW1vcnksIFdU
Rjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNvdW50LCBQYWdlQ291bnQpPiYmIGdy
b3dTdWNjZXNzQ2FsbGJhY2spOwogICAgIE1lbW9yeShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNv
dW50IG1heGltdW0sIFdURjo6RnVuY3Rpb248dm9pZChOb3RpZnlQcmVzc3VyZSk+JiYgbm90aWZ5
TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChTeW5jVHJ5VG9SZWNsYWltKT4mJiBz
eW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoR3Jvd1N1Y2Nlc3MsIFBh
Z2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHZvaWQq
IG1fbWVtb3J5IHsgbnVsbHB0ciB9OworICAgIHVzaW5nIENhZ2VkTWVtb3J5ID0gQ2FnZWRQdHI8
R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+OworICAgIENhZ2VkTWVtb3J5
IG1fbWVtb3J5OwogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAgICAgUGFnZUNvdW50IG1faW5p
dGlhbDsKICAgICBQYWdlQ291bnQgbV9tYXhpbXVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwCmluZGV4IDg5MDNkMWM2ZjJiYTNjZTI3ZGQwZDVmNmQwYjE2M2Fi
OTYxMGFmODguLjY1N2RhNTdhZWI3Y2UzZGFlYWYzYzI1NzQ3ODE4YjYyMGRjZTE0OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIK
KyNpbmNsdWRlICJEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgpAQCAtMjExLDE1ICsyMTIsMjMgQEAg
c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihD
b21waWxhdGlvbkNvbnRleHQmIGNvbXAKIAogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAg
ICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb25BaXIoKS5w
cm9sb2d1ZVNjcmF0Y2goMCk7CiAKICAgICAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkK
ICAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHRJbnN0YW5jZShiYXNlTWVtb3J5KTsKIAog
ICAgICAgICBHUFJSZWcgY3VycmVudEluc3RhbmNlR1BSID0gQ29udGV4dDo6dXNlRmFzdFRMUygp
ID8gYmFzZU1lbW9yeSA6IHdhc21Db250ZXh0SW5zdGFuY2VHUFI7Ci0gICAgICAgIGlmIChtb2Rl
ICE9IE1lbW9yeU1vZGU6OlNpZ25hbGluZykKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZz
ZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsKKyAgICAg
ICAgaWYgKGlzQVJNNjRFKCkpIHsKKyAgICAgICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9y
eU1vZGU6OlNpZ25hbGluZykKKyAgICAgICAgICAgICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVk
UmVncy5zaXplUmVnaXN0ZXI7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNo
ZWRNZW1vcnlTaXplKCkpLCBzY3JhdGNoT3JTaXplKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKKyAgICAgICAg
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNl
R1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRS
ZWdzLnNpemVSZWdpc3Rlcik7CisgICAgICAgIH0KIAogICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zm
c2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICBqaXQuY2FnZUNvbmRp
dGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yU2l6ZSk7
CiAgICAgfQogCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBh
dGNoYWJsZU5lYXJDYWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDQ4NTBhMjU5MTY4NjM0YjNlNjkxMzA5
ZTk1MTY5N2ViYjAxMmFkMWUuLjJmZjBlNzhlNTgyZjY1NjFhMjhmM2M1OTUzNzgyMWMwMzk4MGI4
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCkBAIC00MTAsMTMgKzQxMCwyMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNs
b3coKQogCiAgICAgaWYgKCEhbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5KSB7CiAgICAgICAgIEdQ
UlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLQotICAgICAg
ICBpZiAoaW5zdGFuY2UoKS0+bWVtb3J5TW9kZSgpICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25h
bGluZykgewotICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IHNj
cmF0Y2hHUFIpOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSks
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUg
PSBzY3JhdGNoMkdQUjsKKyAgICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVtb3J5TW9k
ZSgpOworCisgICAgICAgIGlmIChpc0FSTTY0RSgpKSB7CisgICAgICAgICAgICBpZiAobW9kZSAh
PSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCisgICAgICAgICAgICAgICAgc2NyYXRjaE9y
U2l6ZSA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZE1lbW9yeVNpemUoKSksIHNjcmF0Y2hPclNpemUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKG1vZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQorICAg
ICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdz
LnNpemVSZWdpc3Rlcik7CiAgICAgICAgIH0KIAogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVk
TWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdp
Z2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hPclNpemUpOwogICAgIH0KIAog
ICAgIC8vIFdlIHVzZSB0aGlzIGNhbGxlZSB0byBpbmRpY2F0ZSBob3cgdG8gdW53aW5kIHBhc3Qg
dGhlc2UgdHlwZXMgb2YgZnJhbWVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjA0YzQzNThiNjU2MjVjNTAwMTYzMTc0ZTVmMTgwMDYxM2UwNjFiMS4uMjYz
NDRhYzcyNWFjOTNkMDJlYWI5M2M0NGU1ZWNmM2UzZGFmYzhkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTMsNiArNjUzLDcgQEAKIAkJRENFRTIxRkMx
Q0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tPYmpDRXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0
aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrT2Jq
Q0V4Y2VwdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRUUyMjA0MUNF
Qjk4NjkwMDBDMjM5NiAvKiBCYWNrd2FyZHNHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCYWNrd2FyZHNHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlERUY3RkU1RjIyNTgxQUM4MDBDMTUxMjkgLyogVGFnZ2VkQXJyYXlTdG9yYWdlUHRyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ2dlZEFycmF5U3RvcmFnZVB0ci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyog
Q3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0aWxp
dGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzAwRTUyMTIwM0Q2NDVGMDBE
QTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VW5pcXVlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNjAsNiArMTE2
MSw3IEBACiAJCQkJNTU5N0Y4MkMxRDk0Qjk5NzAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVk
UXVldWUuaCAqLywKIAkJCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5o
ICovLAogCQkJCTBGQjMxN0MzMUM0ODgwMDEwMDdFMzk1QSAvKiBTeXN0ZW1UcmFjaW5nLmggKi8s
CisJCQkJREVGN0ZFNUYyMjU4MUFDODAwQzE1MTI5IC8qIFRhZ2dlZEFycmF5U3RvcmFnZVB0ci5o
ICovLAogCQkJCUUzMTFGQjE1MUYwQTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5jcHAgKi8s
CiAJCQkJRTMxMUZCMTYxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmggKi8sCiAJCQkJ
QThBNDczMzIxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5jcHAgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CmluZGV4IGM4Y2NhZDRkOTFjYmJjZjA1NjYxMGU5ODQ5N2Q0MzI2ZTU1MzRkNWIuLjk3
NWQ4NzEzMmE1MzQ0NDU2N2ZmZWI0Y2I5ODc4NmFlMDM4NzRiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CkBAIC0yMzAsNiArMjMwLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFN5bmNo
cm9uaXplZEZpeGVkUXVldWUuaAogICAgIFN5c3RlbUZyZWUuaAogICAgIFN5c3RlbVRyYWNpbmcu
aAorICAgIFRhZ2dlZEFycmF5U3RvcmFnZVB0ci5oCiAgICAgVGhyZWFkR3JvdXAuaAogICAgIFRo
cmVhZE1lc3NhZ2UuaAogICAgIFRocmVhZFNhZmVSZWZDb3VudGVkLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0NhZ2VkUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9DYWdlZFB0ci5oCmluZGV4
IGQ0YjRiYTFiYjNkMDdmZWVkZTkxNGQyNTE5N2EwNWI1Y2RmZGYyZDAuLjcxZWM1MWUyOTQ3YjVi
MmNhMDZlYTJjNDA1NmRhZGNlYjkzOGRmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nh
Z2VkUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2FnZWRQdHIuaApAQCAtMjcsMTA3ICsyNyw5
MSBAQAogCiAjaW5jbHVkZSA8d3RmL0R1bWJQdHJUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvR2ln
YWNhZ2UuaD4KKyNpbmNsdWRlIDx3dGYvUHRyVGFnLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi10
ZW1wbGF0ZTxHaWdhY2FnZTo6S2luZCBwYXNzZWRLaW5kLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBQ
dHJUcmFpdHMgPSBEdW1iUHRyVHJhaXRzPFQ+PgorY29uc3RleHByIGJvb2wgdGFnQ2FnZWRQdHIg
PSB0cnVlOworCit0ZW1wbGF0ZTxHaWdhY2FnZTo6S2luZCBwYXNzZWRLaW5kLCB0eXBlbmFtZSBU
LCBib29sIHNob3VsZFRhZyA9IGZhbHNlLCB0eXBlbmFtZSBQdHJUcmFpdHMgPSBEdW1iUHRyVHJh
aXRzPFQ+PgogY2xhc3MgQ2FnZWRQdHIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
R2lnYWNhZ2U6OktpbmQga2luZCA9IHBhc3NlZEtpbmQ7CiAKICAgICBDYWdlZFB0cigpIDogQ2Fn
ZWRQdHIobnVsbHB0cikgeyB9Ci0gICAgQ2FnZWRQdHIoc3RkOjpudWxscHRyX3QpIDogbV9wdHIo
bnVsbHB0cikgeyB9CisgICAgQ2FnZWRQdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgIDogbV9w
dHIoc2hvdWxkVGFnID8gdGFnQXJyYXlQdHI8VD4obnVsbHB0ciwgMCkgOiBudWxscHRyKQorICAg
IHsgfQogCi0gICAgZXhwbGljaXQgQ2FnZWRQdHIoVCogcHRyKQotICAgICAgICA6IG1fcHRyKHB0
cikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFQqIGdldCgpIGNvbnN0CisgICAgQ2FnZWRQdHIo
VCogcHRyLCB1bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fcHRyKHNob3VsZFRhZyA/IHRhZ0Fy
cmF5UHRyKHB0ciwgc2l6ZSkgOiBwdHIpCisgICAgeyB9CisKKworICAgIFQqIGdldCh1bnNpZ25l
ZCBzaXplKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcHRyKTsKLSAgICAgICAgcmV0
dXJuIEdpZ2FjYWdlOjpjYWdlZChraW5kLCBQdHJUcmFpdHM6OnVud3JhcChtX3B0cikpOwotICAg
IH0KLSAgICAKLSAgICBUKiBnZXRNYXlCZU51bGwoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KCFtX3B0cikKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gZ2V0
KCk7CisgICAgICAgIFQqIHB0ciA9IFB0clRyYWl0czo6dW53cmFwKG1fcHRyKTsKKyAgICAgICAg
aWYgKHNob3VsZFRhZykKKyAgICAgICAgICAgIHB0ciA9IHVudGFnQXJyYXlQdHIocHRyLCBzaXpl
KTsKKyAgICAgICAgcmV0dXJuIEdpZ2FjYWdlOjpjYWdlZChraW5kLCBwdHIpOwogICAgIH0KIAot
ICAgIENhZ2VkUHRyJiBvcGVyYXRvcj0oVCogcHRyKQorICAgIFQqIGdldE1heUJlTnVsbCh1bnNp
Z25lZCBzaXplKSBjb25zdAogICAgIHsKLSAgICAgICAgbV9wdHIgPSBwdHI7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICAgICAgVCogcHRyID0gUHRyVHJhaXRzOjp1bndyYXAobV9wdHIpOwor
ICAgICAgICBpZiAoc2hvdWxkVGFnKQorICAgICAgICAgICAgcHRyID0gdW50YWdBcnJheVB0cihw
dHIsIHNpemUpOworICAgICAgICByZXR1cm4gR2lnYWNhZ2U6OmNhZ2VkTWF5QmVOdWxsKGtpbmQs
IHB0cik7CiAgICAgfQogCi0gICAgQ2FnZWRQdHImIG9wZXJhdG9yPShUKiYmIHB0cikKKyAgICBU
KiBnZXRVbnNhZmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgbV9wdHIgPSBXVEZNb3ZlKHB0cik7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgVCogcHRyID0gUHRyVHJhaXRzOjp1bndy
YXAobV9wdHIpOworICAgICAgICBpZiAoc2hvdWxkVGFnKQorICAgICAgICAgICAgcHRyID0gcmVt
b3ZlQXJyYXlQdHJUYWcocHRyKTsKKyAgICAgICAgcmV0dXJuIEdpZ2FjYWdlOjpjYWdlZE1heUJl
TnVsbChraW5kLCBwdHIpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWdl
ZFB0ciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZ2V0TWF5QmVOdWxsKCkg
PT0gb3RoZXIuZ2V0TWF5QmVOdWxsKCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBDYWdlZFB0ciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdAorICAgIC8vIFdlIG5lZWQgdGhlIHRlbXBsYXRlIGhlcmUgc28gdGhhdCB0aGUgdHlw
ZSBvZiBVIGlzIGRlZHVjZWQgYXQgdXNhZ2UgdGltZSByYXRoZXIgdGhhbiBjbGFzcyB0aW1lLiBV
IHNob3VsZCBhbHdheXMgYmUgVC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KKyAgICB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPHZvaWQsIFU+Ojp2YWx1ZSwgVD46
OnR5cGUmCisgICAgLyogVCYgKi8gYXQodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIHNpemUpIGNv
bnN0IHsgcmV0dXJuIGdldChzaXplKVtpbmRleF07IH0KKworICAgIHZvaWQgcmVjYWdlKHVuc2ln
bmVkIG9sZFNpemUsIHVuc2lnbmVkIG5ld1NpemUpCiAgICAgewotICAgICAgICByZXR1cm4gKnRo
aXMgIT0gQ2FnZWRQdHIoKTsKKyAgICAgICAgYXV0byBwdHIgPSBnZXQob2xkU2l6ZSk7CisgICAg
ICAgIEFTU0VSVChwdHIgPT0gZ2V0VW5zYWZlKCkpOworICAgICAgICAqdGhpcyA9IENhZ2VkUHRy
KHB0ciwgbmV3U2l6ZSk7CiAgICAgfQotICAgIAotICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsg
cmV0dXJuICpnZXQoKTsgfQotICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBnZXQo
KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5kZXhUeXBlPgotICAgIFQmIG9wZXJhdG9y
W10oSW5kZXhUeXBlIGluZGV4KSBjb25zdCB7IHJldHVybiBnZXQoKVtpbmRleF07IH0KLSAgICAK
LXByb3RlY3RlZDoKLSAgICB0eXBlbmFtZSBQdHJUcmFpdHM6OlN0b3JhZ2VUeXBlIG1fcHRyOwot
fTsKIAotdGVtcGxhdGU8R2lnYWNhZ2U6OktpbmQgcGFzc2VkS2luZCwgdHlwZW5hbWUgUHRyVHJh
aXRzPgotY2xhc3MgQ2FnZWRQdHI8cGFzc2VkS2luZCwgdm9pZCwgUHRyVHJhaXRzPiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHaWdhY2FnZTo6S2luZCBraW5kID0gcGFzc2VkS2lu
ZDsKLQotICAgIENhZ2VkUHRyKCkgOiBDYWdlZFB0cihudWxscHRyKSB7IH0KLSAgICBDYWdlZFB0
cihzdGQ6Om51bGxwdHJfdCkgOiBtX3B0cihudWxscHRyKSB7IH0KLQotICAgIGV4cGxpY2l0IENh
Z2VkUHRyKHZvaWQqIHB0cikKLSAgICAgICAgOiBtX3B0cihwdHIpCisgICAgQ2FnZWRQdHIoQ2Fn
ZWRQdHImIG90aGVyKQorICAgICAgICA6IG1fcHRyKG90aGVyLm1fcHRyKQogICAgIHsKICAgICB9
Ci0gICAgCi0gICAgdm9pZCogZ2V0KCkgY29uc3QKKworICAgIENhZ2VkUHRyJiBvcGVyYXRvcj0o
Y29uc3QgQ2FnZWRQdHImIHB0cikKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3B0cik7Ci0gICAg
ICAgIHJldHVybiBHaWdhY2FnZTo6Y2FnZWQoa2luZCwgUHRyVHJhaXRzOjp1bndyYXAobV9wdHIp
KTsKKyAgICAgICAgbV9wdHIgPSBwdHIubV9wdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKICAg
ICB9Ci0gICAgCi0gICAgdm9pZCogZ2V0TWF5QmVOdWxsKCkgY29uc3QKKworICAgIENhZ2VkUHRy
KENhZ2VkUHRyJiYgb3RoZXIpCisgICAgICAgIDogbV9wdHIoUHRyVHJhaXRzOjpleGNoYW5nZShv
dGhlci5tX3B0ciwgbnVsbHB0cikpCiAgICAgewotICAgICAgICBpZiAoIW1fcHRyKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBnZXQoKTsKICAgICB9CiAKLSAg
ICBDYWdlZFB0ciYgb3BlcmF0b3I9KHZvaWQqIHB0cikKKyAgICBDYWdlZFB0ciYgb3BlcmF0b3I9
KENhZ2VkUHRyJiYgcHRyKQogICAgIHsKLSAgICAgICAgbV9wdHIgPSBwdHI7CisgICAgICAgIG1f
cHRyID0gUHRyVHJhaXRzOjpleGNoYW5nZShwdHIubV9wdHIsIG51bGxwdHIpOwogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhZ2VkUHRy
JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBnZXRNYXlCZU51bGwoKSA9PSBv
dGhlci5nZXRNYXlCZU51bGwoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX3B0ciA9PSBvdGhl
ci5tX3B0cjsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSAoZ2V0VW5zYWZlKCkgPT0gb3RoZXIu
Z2V0VW5zYWZlKCkpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENhZ2VkUHRyJiBvdGhlcikgY29uc3QKQEAgLTEzNyw3ICsx
MjEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gKnRoaXMgIT0gQ2FnZWRQdHIoKTsKKyAgICAgICAgcmV0
dXJuIGdldFVuc2FmZSgpICE9IG51bGxwdHI7CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgpAQCAt
MTQ3LDQgKzEzMSw1IEBAIHByb3RlY3RlZDoKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6OkNhZ2VkUHRyOwordXNpbmcgV1RGOjp0YWdDYWdlZFB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ2FnZWRVbmlxdWVQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NhZ2VkVW5pcXVl
UHRyLmgKaW5kZXggNGFhZTI4NzhmNjE3YzcyZGIzMTdmMjg5M2JhNjEyYzhlZmMyM2EwOS4uMmVk
MDgzYzE2NWNlMGQ1ZjYxOGRiM2QyMDE5N2VmMjk4ODllODFkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ2FnZWRVbmlxdWVQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DYWdlZFVuaXF1
ZVB0ci5oCkBAIC0yOSw4MCArMjksMzAgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRl
PEdpZ2FjYWdlOjpLaW5kIGtpbmQsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+
Ci1jbGFzcyBDYWdlZFVuaXF1ZVB0ciA6IHB1YmxpYyBDYWdlZFB0cjxraW5kLCBUPiB7Cit0ZW1w
bGF0ZTxHaWdhY2FnZTo6S2luZCBraW5kLCB0eXBlbmFtZSBULCBib29sIHNob3VsZFRhZyA9IGZh
bHNlPgorY2xhc3MgQ2FnZWRVbmlxdWVQdHIgOiBwdWJsaWMgQ2FnZWRQdHI8a2luZCwgVCwgc2hv
dWxkVGFnPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8VD46OnZhbHVlLCAiV2UgZXhwZWN0IHRoZSBjb250ZW50cyBvZiBhIGNhZ2VkIHBvaW50ZXIg
dG8gYmUgdHJpdmlhbGx5IGRlc3RydWN0YWJsZS4iKTsKIHB1YmxpYzoKLSAgICBDYWdlZFVuaXF1
ZVB0cihUKiBwdHIgPSBudWxscHRyKQotICAgICAgICA6IENhZ2VkUHRyPGtpbmQsIFQ+KHB0cikK
LSAgICB7Ci0gICAgfQotICAgIAotICAgIENhZ2VkVW5pcXVlUHRyKENhZ2VkVW5pcXVlUHRyJiYg
cHRyKQotICAgICAgICA6IENhZ2VkUHRyPGtpbmQsIFQ+KHB0ci5tX3B0cikKLSAgICB7Ci0gICAg
ICAgIHB0ci5tX3B0ciA9IG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIENhZ2VkVW5pcXVlUHRy
KGNvbnN0IENhZ2VkVW5pcXVlUHRyJikgPSBkZWxldGU7Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBDYWdlZFVuaXF1ZVB0ciBjcmVhdGUoQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKQotICAgIHsKLSAgICAgICAgVCogcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VCo+KEdpZ2FjYWdlOjptYWxsb2Moa2luZCwgc2l6ZW9mKFQpKSk7Ci0gICAgICAgIG5l
dyAocmVzdWx0KSBUKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwotICAg
ICAgICByZXR1cm4gQ2FnZWRVbmlxdWVQdHIocmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAgQ2Fn
ZWRVbmlxdWVQdHImIG9wZXJhdG9yPShDYWdlZFVuaXF1ZVB0ciYmIHB0cikKLSAgICB7Ci0gICAg
ICAgIGRlc3Ryb3koKTsKLSAgICAgICAgdGhpcy0+bV9wdHIgPSBwdHIubV9wdHI7Ci0gICAgICAg
IHB0ci5tX3B0ciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAg
Ci0gICAgQ2FnZWRVbmlxdWVQdHImIG9wZXJhdG9yPShjb25zdCBDYWdlZFVuaXF1ZVB0ciYpID0g
ZGVsZXRlOwotICAgIAotICAgIH5DYWdlZFVuaXF1ZVB0cigpCi0gICAgewotICAgICAgICBkZXN0
cm95KCk7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICB2b2lkIGRlc3Ryb3koKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLT5tX3B0cikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
dGhpcy0+bV9wdHItPn5UKCk7Ci0gICAgICAgIEdpZ2FjYWdlOjpmcmVlKGtpbmQsIHRoaXMtPm1f
cHRyKTsKLSAgICB9Ci19OworICAgIHVzaW5nIEJhc2UgPSBDYWdlZFB0cjxraW5kLCBULCBzaG91
bGRUYWc+OworICAgIENhZ2VkVW5pcXVlUHRyKCkgPSBkZWZhdWx0OworCisgICAgQ2FnZWRVbmlx
dWVQdHIoVCogcHRyLCB1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2UocHRyLCBzaXplKQor
ICAgIHsgfQogCi10ZW1wbGF0ZTxHaWdhY2FnZTo6S2luZCBraW5kLCB0eXBlbmFtZSBUPgotY2xh
c3MgQ2FnZWRVbmlxdWVQdHI8a2luZCwgVFtdLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlPjo6dHlwZT4gOiBwdWJsaWMgQ2Fn
ZWRQdHI8a2luZCwgVD4gewotcHVibGljOgotICAgIENhZ2VkVW5pcXVlUHRyKCkgOiBDYWdlZFB0
cjxraW5kLCBUPigpIHsgfQotICAgIAotICAgIENhZ2VkVW5pcXVlUHRyKFQqIHB0cikKLSAgICAg
ICAgOiBDYWdlZFB0cjxraW5kLCBUPihwdHIpCi0gICAgewotICAgIH0KLSAgICAKICAgICBDYWdl
ZFVuaXF1ZVB0cihDYWdlZFVuaXF1ZVB0ciYmIHB0cikKLSAgICAgICAgOiBDYWdlZFB0cjxraW5k
LCBUPihwdHIubV9wdHIpCi0gICAgewotICAgICAgICBwdHIubV9wdHIgPSBudWxscHRyOwotICAg
IH0KKyAgICAgICAgOiBCYXNlKHN0ZDo6Zm9yd2FyZDxDYWdlZFVuaXF1ZVB0ciYmPihwdHIpKQor
ICAgIHsgfQogICAgIAogICAgIENhZ2VkVW5pcXVlUHRyKGNvbnN0IENhZ2VkVW5pcXVlUHRyJikg
PSBkZWxldGU7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAg
IHN0YXRpYyBDYWdlZFVuaXF1ZVB0ciBjcmVhdGUoc2l6ZV90IGNvdW50LCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCisgICAgc3RhdGljIENhZ2VkVW5pcXVlUHRyIGNyZWF0ZSh1bnNpZ25lZCBs
ZW5ndGgsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIFQqIHJlc3Vs
dCA9IHN0YXRpY19jYXN0PFQqPihHaWdhY2FnZTo6bWFsbG9jQXJyYXkoa2luZCwgY291bnQsIHNp
emVvZihUKSkpOwotICAgICAgICB3aGlsZSAoY291bnQtLSkKLSAgICAgICAgICAgIG5ldyAocmVz
dWx0ICsgY291bnQpIFQoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7Ci0g
ICAgICAgIHJldHVybiBDYWdlZFVuaXF1ZVB0cihyZXN1bHQpOworICAgICAgICBUKiByZXN1bHQg
PSBzdGF0aWNfY2FzdDxUKj4oR2lnYWNhZ2U6Om1hbGxvYyhraW5kLCBzaXplb2YoVCkgKiBsZW5n
dGgpKTsKKyAgICAgICAgd2hpbGUgKGxlbmd0aC0tKQorICAgICAgICAgICAgbmV3IChyZXN1bHQg
KyBsZW5ndGgpIFQoYXJndW1lbnRzLi4uKTsKKyAgICAgICAgcmV0dXJuIENhZ2VkVW5pcXVlUHRy
KHJlc3VsdCwgbGVuZ3RoKTsKICAgICB9CiAgICAgCiAgICAgQ2FnZWRVbmlxdWVQdHImIG9wZXJh
dG9yPShDYWdlZFVuaXF1ZVB0ciYmIHB0cikKQEAgLTExOSw4MyArNjksMTYgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgZGVzdHJveSgpOwogICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgdm9p
ZCBkZXN0cm95KCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy0+bV9wdHIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIEdpZ2FjYWdlOjpmcmVlKGtpbmQsIHRoaXMtPm1fcHRyKTsKLSAg
ICB9Ci19OwogCi10ZW1wbGF0ZTxHaWdhY2FnZTo6S2luZCBraW5kLCB0eXBlbmFtZSBUPgotY2xh
c3MgQ2FnZWRVbmlxdWVQdHI8a2luZCwgVFtdLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZT46OnR5cGU+IDogcHVibGljIENh
Z2VkUHRyPGtpbmQsIFQ+IHsKLXB1YmxpYzoKLSAgICBDYWdlZFVuaXF1ZVB0cigpIDogQ2FnZWRQ
dHI8a2luZCwgVD4oKSB7IH0KLSAgICAKLSAgICBDYWdlZFVuaXF1ZVB0cihUKiBwdHIsIHNpemVf
dCBjb3VudCkKLSAgICAgICAgOiBDYWdlZFB0cjxraW5kLCBUPihwdHIpCi0gICAgICAgICwgbV9j
b3VudChjb3VudCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIENhZ2VkVW5pcXVlUHRyKENhZ2Vk
VW5pcXVlUHRyJiYgcHRyKQotICAgICAgICA6IENhZ2VkUHRyPGtpbmQsIFQ+KHB0ci5tX3B0cikK
LSAgICAgICAgLCBtX2NvdW50KHB0ci5tX2NvdW50KQotICAgIHsKLSAgICAgICAgcHRyLmNsZWFy
KCk7Ci0gICAgfQotICAgIAotICAgIENhZ2VkVW5pcXVlUHRyKGNvbnN0IENhZ2VkVW5pcXVlUHRy
JikgPSBkZWxldGU7Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgot
ICAgIHN0YXRpYyBDYWdlZFVuaXF1ZVB0ciBjcmVhdGUoc2l6ZV90IGNvdW50LCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCi0gICAgewotICAgICAgICBUKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxU
Kj4oR2lnYWNhZ2U6Om1hbGxvY0FycmF5KGtpbmQsIGNvdW50LCBzaXplb2YoVCkpKTsKLSAgICAg
ICAgd2hpbGUgKGNvdW50LS0pCi0gICAgICAgICAgICBuZXcgKHJlc3VsdCArIGNvdW50KSBUKHN0
ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwotICAgICAgICByZXR1cm4gQ2Fn
ZWRVbmlxdWVQdHIocmVzdWx0LCBjb3VudCk7Ci0gICAgfQotICAgIAotICAgIENhZ2VkVW5pcXVl
UHRyJiBvcGVyYXRvcj0oQ2FnZWRVbmlxdWVQdHImJiBwdHIpCi0gICAgewotICAgICAgICBkZXN0
cm95KCk7Ci0gICAgICAgIHRoaXMtPm1fcHRyID0gcHRyLm1fcHRyOwotICAgICAgICBtX2NvdW50
ID0gcHRyLm1fY291bnQ7Ci0gICAgICAgIHB0ci5jbGVhcigpOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotICAgIAotICAgIENhZ2VkVW5pcXVlUHRyJiBvcGVyYXRvcj0oY29uc3QgQ2Fn
ZWRVbmlxdWVQdHImKSA9IGRlbGV0ZTsKLSAgICAKLSAgICB+Q2FnZWRVbmlxdWVQdHIoKQotICAg
IHsKLSAgICAgICAgZGVzdHJveSgpOwotICAgIH0KLSAgICAKLSAgICAvLyBGSVhNRTogSXQncyB3
ZWlyZCB0aGF0IHdlIGluaGVyaXQgQ2FnZWRQdHI6Om9wZXJhdG9yPT0gYW5kIGZyaWVuZHMsIHdo
aWNoIGRvbid0IGRvIGFueXRoaW5nCi0gICAgLy8gYWJvdXQgbV9jb3VudC4gSXQgIndvcmtzIiBi
ZWNhdXNlIHBvaW50ZXIgZXF1YWxpdHkgaXMgZW5vdWdoIHNvIGxvbmcgYXMgZXZlcnl0aGluZyBp
cyBzYW5lLCBidXQKLSAgICAvLyBpdCBzZWVtcyBsaWtlIGEgbWlzc2VkIG9wcG9ydHVuaXR5IHRv
IGFzc2VydCB0aGluZ3MuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTU0MQotICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3koKQogICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLT5tX3B0cikKKyAgICAgICAgVCogcHRyID0gQmFzZTo6Z2V0VW5z
YWZlKCk7CisgICAgICAgIGlmICghcHRyKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB3
aGlsZSAobV9jb3VudC0tKQotICAgICAgICAgICAgdGhpcy0+bV9wdHJbbV9jb3VudF0uflQoKTsK
LSAgICAgICAgR2lnYWNhZ2U6OmZyZWUoa2luZCwgdGhpcy0+bV9wdHIpOworICAgICAgICBwdHIt
Pn5UKCk7CisgICAgICAgIEdpZ2FjYWdlOjpmcmVlKGtpbmQsIHB0cik7CiAgICAgfQotICAgIAot
ICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgdGhpcy0+bV9wdHIgPSBudWxscHRyOwot
ICAgICAgICBtX2NvdW50ID0gMDsKLSAgICB9Ci0gICAgCi0gICAgc2l6ZV90IG1fY291bnQgeyAw
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0dpZ2FjYWdlLmggYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCmluZGV4IDIzM2Y1NmVjMzRj
NGUwZDJjMzFmYmNlZjYwNWM4MzE0NjhmZmI4MTEuLjIyN2Y2NDcxZjJkMDVlOTljOGRhMzg1Zjk3
NDRmMDVlZjYzMTNjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmgKKysr
IGIvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaApAQCAtMTE0LDYgKzExNCw4IEBAIEFMV0FZU19J
TkxJTkUgc2l6ZV90IG1hc2soS2luZCkgeyByZXR1cm4gMDsgfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogaW5saW5lIFQqIGNhZ2VkKEtpbmQsIFQqIHB0cikgeyByZXR1cm4gcHRyOyB9Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQqIGNhZ2VkTWF5QmVOdWxsKEtpbmQsIFQqIHB0cikg
eyByZXR1cm4gcHRyOyB9CiAKIGlubGluZSBib29sIGlzQ2FnZWQoS2luZCwgY29uc3Qgdm9pZCop
IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5o
IGIvU291cmNlL1dURi93dGYvUHRyVGFnLmgKaW5kZXggNjBhMGE4ZDRlZmUwNmFkNWU2MWZhNzc5
MjkxYmRmZmE2OTYxOTRiZC4uMTQzNDliZGE0N2UwYTY3NjEyNzBjZmNjOTk3OGUzOGNmOWVkZWM3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUHRyVGFnLmgKKysrIGIvU291cmNlL1dURi93
dGYvUHRyVGFnLmgKQEAgLTEyMiw2ICsxMjIsMzggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlUHRy
VGFnRGVidWdBc3NlcnQgPSB0cnVlOwogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitpbmxpbmUgVCogdGFnQXJyYXlQdHIoc3RkOjpudWxscHRyX3QgcHRyLCBz
aXplX3QgbGVuZ3RoKQoreworICAgIEFTU0VSVCghbGVuZ3RoKTsKKyAgICByZXR1cm4gcHRyYXV0
aF9zaWduX3VuYXV0aGVudGljYXRlZChzdGF0aWNfY2FzdDxUKj4ocHRyKSwgcHRyYXV0aF9rZXlf
cHJvY2Vzc19kZXBlbmRlbnRfZGF0YSwgbGVuZ3RoKTsKK30KKworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgoraW5saW5lIFQqIHRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6ZV90IGxlbmd0aCkKK3sKKyAg
ICByZXR1cm4gcHRyYXV0aF9zaWduX3VuYXV0aGVudGljYXRlZChwdHIsIHB0cmF1dGhfa2V5X3By
b2Nlc3NfZGVwZW5kZW50X2RhdGEsIGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitpbmxpbmUgVCogdW50YWdBcnJheVB0cihUKiBwdHIsIHNpemVfdCBsZW5ndGgpCit7CisgICAg
cmV0dXJuIHB0cmF1dGhfYXV0aF9kYXRhKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRl
bnRfZGF0YSwgbGVuZ3RoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUKiBy
ZW1vdmVBcnJheVB0clRhZyhUKiBwdHIpCit7CisgICAgcmV0dXJuIHB0cmF1dGhfc3RyaXAocHRy
LCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK2lubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6ZV90IG9sZExlbmd0
aCwgc2l6ZV90IG5ld0xlbmd0aCkKK3sKKyAgICByZXR1cm4gcHRyYXV0aF9hdXRoX2FuZF9yZXNp
Z24ocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhLCBvbGRMZW5ndGgsIHB0
cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG5ld0xlbmd0aCk7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlICYmICFzdGQ6OmlzX3NhbWU8VCwg
UHRyVHlwZT46OnZhbHVlPj4KIGlubGluZSBjb25zdGV4cHIgVCByZW1vdmVDb2RlUHRyVGFnKFB0
clR5cGUgcHRyKQogewpAQCAtMzk1LDYgKzQyNywzOCBAQCBpbmxpbmUgYm9vbCB1c2VzUG9pbnRl
clRhZ2dpbmcoKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgdm9pZCByZWdpc3RlclB0clRhZ0xv
b2t1cChQdHJUYWdMb29rdXAqKSB7IH0KIGlubGluZSB2b2lkIHJlcG9ydEJhZFRhZyhjb25zdCB2
b2lkKiwgUHRyVGFnKSB7IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUKiB0YWdB
cnJheVB0cihzdGQ6Om51bGxwdHJfdCwgc2l6ZV90IHNpemUpCit7CisgICAgQVNTRVJUX1VOVVNF
RChzaXplLCAhc2l6ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+CitpbmxpbmUgVCogdGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3QpCit7CisgICAgcmV0
dXJuIHB0cjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBUKiB1bnRhZ0FycmF5
UHRyKFQqIHB0ciwgc2l6ZV90KQoreworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitpbmxpbmUgVCogcmVtb3ZlQXJyYXlQdHJUYWcoVCogcHRyKQoreworICAgIHJl
dHVybiBwdHI7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgVCogcmV0YWdBcnJh
eVB0cihUKiBwdHIsIHNpemVfdCwgc2l6ZV90KQoreworICAgIHJldHVybiBwdHI7Cit9CisKKwog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWUgJiYgIXN0ZDo6aXNfc2Ft
ZTxULCBQdHJUeXBlPjo6dmFsdWU+PgogY29uc3RleHByIFQgdGFnQ29kZVB0cihQdHJUeXBlIHB0
ciwgUHRyVGFnKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4ocHRyKTsgfQogCkBAIC00OTQsNiAr
NTU4LDExIEBAIHVzaW5nIFdURjo6UHRyVGFnOwogCiB1c2luZyBXVEY6OnJlcG9ydEJhZFRhZzsK
IAordXNpbmcgV1RGOjp0YWdBcnJheVB0cjsKK3VzaW5nIFdURjo6dW50YWdBcnJheVB0cjsKK3Vz
aW5nIFdURjo6cmV0YWdBcnJheVB0cjsKK3VzaW5nIFdURjo6cmVtb3ZlQXJyYXlQdHJUYWc7CisK
IHVzaW5nIFdURjo6dGFnQ29kZVB0cjsKIHVzaW5nIFdURjo6dW50YWdDb2RlUHRyOwogdXNpbmcg
V1RGOjpyZXRhZ0NvZGVQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UYWdnZWRBcnJh
eVN0b3JhZ2VQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1RhZ2dlZEFycmF5U3RvcmFnZVB0ci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU1M2U4NmY3NzM5OTg0N2QwZTA3MTE3ZjYwOWVlYzUxN2NhNTc5ZDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UYWdnZWRBcnJheVN0b3JhZ2VQdHIuaApAQCAt
MCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUHRyVGFnLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorY2xhc3MgVGFnZ2VkQXJyYXlTdG9y
YWdlUHRyIHsKK3B1YmxpYzoKKyAgICBUYWdnZWRBcnJheVN0b3JhZ2VQdHIoKQorICAgICAgICA6
IG1fcHRyKHRhZ0FycmF5UHRyPFB0clR5cGU+KG51bGxwdHIsIDApKQorICAgIHsgfQorCisgICAg
VGFnZ2VkQXJyYXlTdG9yYWdlUHRyKFB0clR5cGUqIHB0ciwgdW5zaWduZWQgbGVuZ3RoKQorICAg
ICAgICA6IG1fcHRyKHRhZ0FycmF5UHRyKHB0ciwgbGVuZ3RoKSkKKyAgICB7IH0KKworICAgIFB0
clR5cGUqIGdldCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHVudGFnQXJyYXlQdHIo
bV9wdHIsIGxlbmd0aCk7IH0gCisgICAgUHRyVHlwZSogZ2V0VW5zYWZlKCkgY29uc3QgeyByZXR1
cm4gcmVtb3ZlQXJyYXlQdHJUYWcobV9wdHIpOyB9CisKKyAgICB2b2lkIHJlc2l6ZSh1bnNpZ25l
ZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCkKKyAgICB7CisgICAgICAgIG1fcHRyID0g
cmV0YWdBcnJheVB0cihtX3B0ciwgb2xkTGVuZ3RoLCBuZXdMZW5ndGgpOworICAgIH0KKyAgICAK
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFnZXRVbnNhZmUo
KTsgfQorCitwcml2YXRlOgorICAgIFB0clR5cGUqIG1fcHRyOworfTsKKworfQorCit1c2luZyBX
VEY6OlRhZ2dlZEFycmF5U3RvcmFnZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2UuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAppbmRl
eCA3MGNjZTY3YTI0NWI0MzM5NTEzMmJmZGRhYTQxNjZhM2JlODMzYjQyLi43NmQ3MmRmNzRhMTM2
ZjAyMTkxNTVjZjIwOGY3Yzc3OTU4YzRlOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0dpZ2FjYWdlLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5o
CkBAIC0zNCw4ICszNCw3IEBACiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxpbnR0eXBl
cy5oPgogCi0jaWYgKChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgpKSAmJiBcCi0oQkNQVShYODZf
NjQpIHx8IChCQ1BVKEFSTTY0KSAmJiAhZGVmaW5lZChfX0lMUDMyX18pICYmICghQlBMQVRGT1JN
KElPU19GQU1JTFkpIHx8IEJQTEFURk9STShJT1MpKSkpKQorI2lmICgoQk9TKERBUldJTikgfHwg
Qk9TKExJTlVYKSkgJiYgQkNQVShYODZfNjQpKQogI2RlZmluZSBHSUdBQ0FHRV9FTkFCTEVEIDEK
ICNlbHNlCiAjZGVmaW5lIEdJR0FDQUdFX0VOQUJMRUQgMApAQCAtMjAwLDYgKzE5OSwxNCBAQCBC
SU5MSU5FIFQqIGNhZ2VkKEtpbmQga2luZCwgVCogcHRyKQogICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHB0cikgJiBtYXNrKGtpbmQpKSk7CiB9CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitCSU5MSU5FIFQqIGNhZ2VkTWF5QmVOdWxsKEtpbmQga2luZCwgVCogcHRyKQor
eworICAgIGlmICghcHRyKQorICAgICAgICByZXR1cm4gcHRyOworICAgIHJldHVybiBjYWdlZChr
aW5kLCBwdHIpOworfQorCiBCSU5MSU5FIGJvb2wgaXNDYWdlZChLaW5kIGtpbmQsIGNvbnN0IHZv
aWQqIHB0cikKIHsKICAgICByZXR1cm4gY2FnZWQoa2luZCwgcHRyKSA9PSBwdHI7CkBAIC0yMTks
OCArMjI2LDkgQEAgQklOTElORSBzaXplX3Qgc2l6ZShLaW5kKSB7IEJDUkFTSCgpOyByZXR1cm4g
MDsgfQogQklOTElORSB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkgeyB9CiBCSU5MSU5FIGJvb2wgd2Fz
RW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiBCSU5MSU5FIGJvb2wgaXNDYWdlZChLaW5kLCBj
b25zdCB2b2lkKikgeyByZXR1cm4gdHJ1ZTsgfQotQklOTElORSBib29sIGlzRW5hYmxlZCgpIHsg
cmV0dXJuIGZhbHNlOyB9CitCSU5MSU5FIGJvb2wgaXNFbmFibGVkKEtpbmQpIHsgcmV0dXJuIGZh
bHNlOyB9CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQsIFQqIHB0
cikgeyByZXR1cm4gcHRyOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2Vk
TWF5QmVOdWxsKEtpbmQsIFQqIHB0cikgeyByZXR1cm4gcHRyOyB9CiBCSU5MSU5FIHZvaWQgZGlz
YWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKSB7IH0KIEJJ
TkxJTkUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiBmYWxz
ZTsgfQogQklOTElORSB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>