<?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>226749</bug_id>
          
          <creation_ts>2021-06-07 18:25:22 -0700</creation_ts>
          <short_desc>REGRESSION(r278371): Break dumpDisassembly in JetStream2</short_desc>
          <delta_ts>2021-06-07 18:30:28 -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>226187</blocked>
    
    <blocked>226556</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767621</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-06-07 18:25:22 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/278371 broke the build:
Break dumpDisassembly in JetStream2

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>1767624</commentid>
    <comment_count>1</comment_count>
      <attachid>430797</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-06-07 18:25:33 -0700</bug_when>
    <thetext>Created attachment 430797
REVERT of r278371

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767627</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-07 18:29:37 -0700</bug_when>
    <thetext>Committed r278587 (238577@main): &lt;https://commits.webkit.org/238577@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430797.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767628</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-07 18:30:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/78975844&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430797</attachid>
            <date>2021-06-07 18:25:33 -0700</date>
            <delta_ts>2021-06-07 18:29:38 -0700</delta_ts>
            <desc>REVERT of r278371</desc>
            <filename>bug-226749-20210608012532.patch</filename>
            <type>text/plain</type>
            <size>86732</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OGNlMDUyMTg1ZTlhMjM4ZTdiYWU5YTM3MjkzYTUyNzUzNDRhMTNjLi42MzY2NDliOWYwZjdhNDg5
ZGVlNmFhMjdkYWUyNmE4YWFkNTNiMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wNi0wNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzgzNzEgYW5kIHIyNzg0
NjMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3
NDkKKworICAgICAgICBCcmVhayBkdW1wRGlzYXNzZW1ibHkgaW4gSmV0U3RyZWFtMgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIldlIHNob3VsZCBkcm9wIEIzIHZh
bHVlcyB3aGlsZSBydW5uaW5nIEFpciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjE4NworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjc4MzcxCisKKyAgICAgICAgIkRyb3AgdGhlIEZUTChERkcpIGdyYXBoIGFmdGVy
IGxvd2VyaW5nIHRvIEIzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NTU2CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8yNzg0NjMKKwogMjAyMS0wNi0wNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CiAKICAgICAgICAgV2luZG93IHNob3VsZCBiZWhhdmUgbGlrZSBhIGxlZ2FjeSBwbGF0
Zm9ybSBvYmplY3Qgd2l0aG91dCBpbmRleGVkIHNldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzR2VuZXJhdGUuY3BwCmluZGV4IGNkNDRhMjkxNTc3NzQwZDIzOTkzMDhjMjYyYTc5Mjc1OTVm
ZTdiNDMuLmQ5ZjYxYzk5NjRlNjdiZjczOGJlNGQyMTc0ODIxNjE3MDExMzc5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKQEAgLTEzMyw3ICsxMzMsNiBAQCB2b2lk
IGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCiAgICAgfQogCiAgICAgbG93ZXJU
b0Fpcihwcm9jZWR1cmUpOwotICAgIHByb2NlZHVyZS5mcmVlVW5uZWVkZWRCM1ZhbHVlc0FmdGVy
TG93ZXJpbmcoKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQQ1RvT3JpZ2luTWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQQ1RvT3JpZ2luTWFwLmgKaW5kZXggNWQ1MTY0NzU1MmI4MjE0MzA1MWQ4
YTY2YmE0ZDcwOWQyYWM0YTMyOC4uNWU2Y2U0NTFkMzk3MjMxODMxZDZjNzFmMDc5ZjBkYmYwNjE3
OTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUENUb09yaWdpbk1h
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BDVG9PcmlnaW5NYXAuaApAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPE9yaWdpblJhbmdlPiYgcmFu
Z2VzKCkgY29uc3QgIHsgcmV0dXJuIG1fcmFuZ2VzOyB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9y
PE9yaWdpblJhbmdlLCAwPiBtX3JhbmdlczsKKyAgICBWZWN0b3I8T3JpZ2luUmFuZ2U+IG1fcmFu
Z2VzOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCA3NzQ0YTYxZTI5N2U3NmNjNzAwNTE0ZGIwNzYwODgz
M2M1ZjMwOGUyLi44NjBlN2ExYWUzYzZhMDU0ZDM0ZjhiOTAzNmQ0ZDM3ZGMxZmNhZDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MzQsNTEgKzQzNCw2
IEBAIHZvaWQgUHJvY2VkdXJlOjpzZXROdW1FbnRyeXBvaW50cyh1bnNpZ25lZCBudW1FbnRyeXBv
aW50cykKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG51bUVudHJ5cG9pbnRzKTsKIH0K
IAotdm9pZCBQcm9jZWR1cmU6OmZyZWVVbm5lZWRlZEIzVmFsdWVzQWZ0ZXJMb3dlcmluZygpCi17
Ci0gICAgLy8gV2UgY2Fubm90IGNsZWFyIG1fc3RhY2tTbG90cygpIG9yIG1fdHVwbGVzIGhlcmUs
IGFzIHRoZXkgYXJlIHVuZm9ydHVuYXRlbHkgbW9kaWZpZWQgYW5kIHJlYWQgcmVzcGVjdGl2ZWx5
IGJ5IEFpci4KLSAgICBtX3ZhcmlhYmxlcy5jbGVhckFsbCgpOwotICAgIG1fYmxvY2tzLmNsZWFy
KCk7Ci0gICAgbV9jZmcgPSBudWxscHRyOwotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7Ci0g
ICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0
cjsKLSAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fZmFzdENvbnN0
YW50cy5jbGVhcigpOwotCi0gICAgaWYgKG1fY29kZS0+c2hvdWxkUHJlc2VydmVCM09yaWdpbnMo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQml0VmVjdG9yIHZhbHVlc1RvUHJlc2VydmU7Ci0g
ICAgdmFsdWVzVG9QcmVzZXJ2ZS5lbnN1cmVTaXplKG1fdmFsdWVzLnNpemUoKSk7Ci0gICAgZm9y
IChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVlcykgewotICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNv
ZGUoKSkgewotICAgICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGFsc28gYmUgYWJsZSB0byBnZXQg
cmlkIG9mIGFsbCBvZiB0aG9zZS4KLSAgICAgICAgLy8gQnV0IEFpciBjdXJyZW50bHkgcmVsaWVz
IG9uIHRoZXNlIG9yaWdpbnMgYmVpbmcgcHJlc2VydmVkLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MAotICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVj
azoKLSAgICAgICAgICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQodmFsdWUtPmluZGV4KCkp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0NhbGw6Ci0gICAgICAgIGNhc2Ug
UGF0Y2hwb2ludDoKLSAgICAgICAgY2FzZSBDaGVja0FkZDoKLSAgICAgICAgY2FzZSBDaGVja1N1
YjoKLSAgICAgICAgY2FzZSBDaGVja011bDoKLSAgICAgICAgY2FzZSBDaGVjazoKLSAgICAgICAg
ICAgIHZhbHVlc1RvUHJlc2VydmUucXVpY2tTZXQodmFsdWUtPmluZGV4KCkpOwotICAgICAgICAg
ICAgZm9yIChWYWx1ZSogY2hpbGQgOiB2YWx1ZS0+Y2hpbGRyZW4oKSkKLSAgICAgICAgICAgICAg
ICB2YWx1ZXNUb1ByZXNlcnZlLnF1aWNrU2V0KGNoaWxkLT5pbmRleCgpKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZm9yIChWYWx1ZSogdmFsdWUgOiBtX3ZhbHVlcykgewotICAgICAgICBpZiAo
IXZhbHVlc1RvUHJlc2VydmUucXVpY2tHZXQodmFsdWUtPmluZGV4KCkpKQotICAgICAgICAgICAg
bV92YWx1ZXMucmVtb3ZlKHZhbHVlKTsKLSAgICB9Ci0gICAgbV92YWx1ZXMucGFja0luZGljZXMo
KTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNf
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCA4NzgxYzBkZWRh
Y2ZjODE5OTJiYjIxYTBlZjRiNGYyYzc4MzY0Njc3Li43YzkzOTNjNjJhNmViODU4YjI4MTJkZGJi
NDRkYjVkZDk2NjNhODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1OCwxMSArMjU4LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lz
dGVyQXRPZmZzZXRMaXN0IGNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpIGNvbnN0Owog
CiAgICAgUENUb09yaWdpbk1hcCYgcGNUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fcGNUb09yaWdp
bk1hcDsgfQotICAgIFBDVG9PcmlnaW5NYXAgcmVsZWFzZVBDVG9PcmlnaW5NYXAoKQotICAgIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobmVlZHNQQ1RvT3JpZ2luTWFwKCkpOwotICAgICAgICBy
ZXR1cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXApOwotICAgIH0KKyAgICBQQ1RvT3JpZ2luTWFw
IHJlbGVhc2VQQ1RvT3JpZ2luTWFwKCkgeyByZXR1cm4gV1RGTW92ZShtX3BjVG9PcmlnaW5NYXAp
OyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFdhc21Cb3VuZHNDaGVja0dlbmVy
YXRvcihSZWZQdHI8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yPik7CiAKQEAgLTI3NSwxMSArMjcx
LDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ2lzdGVyU2V0IG11dGFibGVH
UFJzKCk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnaXN0ZXJTZXQgbXV0YWJsZUZQUnMoKTsK
IAotICAgIHZvaWQgc2V0TmVlZHNQQ1RvT3JpZ2luTWFwKCkgeyBtX25lZWRzUENUb09yaWdpbk1h
cCA9IHRydWU7IH0KLSAgICBib29sIG5lZWRzUENUb09yaWdpbk1hcCgpIHsgcmV0dXJuIG1fbmVl
ZHNQQ1RvT3JpZ2luTWFwOyB9Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVVbm5l
ZWRlZEIzVmFsdWVzQWZ0ZXJMb3dlcmluZygpOwotCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBCbG9ja0luc2VydGlvblNldDsKIApAQCAtMjk2LDE3ICsyODcsMTYgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwog
ICAgIEhhc2hTZXQ8VmFsdWVLZXk+IG1fZmFzdENvbnN0YW50czsKKyAgICB1bnNpZ25lZCBtX251
bUVudHJ5cG9pbnRzIHsgMSB9OwogICAgIGNvbnN0IGNoYXIqIG1fbGFzdFBoYXNlTmFtZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlQnlwcm9kdWN0cz4gbV9ieXByb2R1Y3RzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBaXI6OkNvZGU+IG1fY29kZTsKICAgICBSZWZQdHI8U2hhcmVkVGFzazx2
b2lkKFByaW50U3RyZWFtJiwgT3JpZ2luKT4+IG1fb3JpZ2luUHJpbnRlcjsKICAgICBjb25zdCB2
b2lkKiBtX2Zyb250ZW5kRGF0YTsKICAgICBQQ1RvT3JpZ2luTWFwIG1fcGNUb09yaWdpbk1hcDsK
LSAgICB1bnNpZ25lZCBtX251bUVudHJ5cG9pbnRzIHsgMSB9OwogICAgIHVuc2lnbmVkIG1fb3B0
TGV2ZWwgeyBkZWZhdWx0T3B0TGV2ZWwoKSB9OwogICAgIGJvb2wgbV9uZWVkc1VzZWRSZWdpc3Rl
cnMgeyB0cnVlIH07CiAgICAgYm9vbCBtX2hhc1F1aXJrcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X25lZWRzUENUb09yaWdpbk1hcCB7IGZhbHNlIH07CiB9OwogICAgIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VD
b2xsZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9u
LmgKaW5kZXggNDk1Yjk0ZGI5YzU3MDZmM2U4YzA3MTY2MmUwNDNiZTRhNjcyNTFlZC4uMDlhMzY0
NzUyNTU2MTUxMWJiYTIyNzkzMzg3ZWQzYjEwMTlmZTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTEsMTIgKzExMSw2IEBAIHB1YmxpYzoK
ICAgICAgICAgbV92ZWN0b3Iuc2hyaW5rKGVuZEluZGV4KTsKICAgICB9CiAKLSAgICB2b2lkIGNs
ZWFyQWxsKCkKLSAgICB7Ci0gICAgICAgIG1faW5kZXhGcmVlTGlzdC5jbGVhcigpOwotICAgICAg
ICBtX3ZlY3Rvci5jbGVhcigpOwotICAgIH0KLQogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3ZlY3Rvci5pc0VtcHR5KCk7IH0KICAgICAKQEAgLTE2MCw4ICsxNTQsNiBAQCBwdWJs
aWM6CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTcGFy
c2VDb2xsZWN0aW9uOwotCiAgICAgICAgIHVuc2lnbmVkIGZpbmROZXh0KHVuc2lnbmVkIGluZGV4
KQogICAgICAgICB7CiAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBtX2NvbGxlY3Rpb24tPnNp
emUoKSAmJiAhbV9jb2xsZWN0aW9uLT5hdChpbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJDb2RlLmNwcAppbmRleCAxODg1NzhkNDgzYWE5ODViMjE4OTAxZjI0MjllZjk2Zjlk
NmI1NzYzLi5iZGUxYmYwMmEwYzVmOTQ5OGUwYWM0ODcyOTAyYjY1NWM3MTAyYmE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTU2LDcgKzU2LDYgQEAgc3Rh
dGljIHZvaWQgZGVmYXVsdFByb2xvZ3VlR2VuZXJhdG9yKENDYWxsSGVscGVycyYgaml0LCBDb2Rl
JiBjb2RlKQogQ29kZTo6Q29kZShQcm9jZWR1cmUmIHByb2MpCiAgICAgOiBtX3Byb2MocHJvYykK
ICAgICAsIG1fY2ZnKG5ldyBDRkcoKnRoaXMpKQotICAgICwgbV9wcmVzZXJ2ZUIzT3JpZ2lucyhw
cm9jLm5lZWRzUENUb09yaWdpbk1hcCgpIHx8IE9wdGlvbnM6OmR1bXBBaXJHcmFwaEF0RWFjaFBo
YXNlKCkgfHwgT3B0aW9uczo6ZHVtcEZUTERpc2Fzc2VtYmx5KCkpCiAgICAgLCBtX2xhc3RQaGFz
ZU5hbWUoImluaXRpYWwiKQogICAgICwgbV9kZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3IoY3JlYXRl
U2hhcmVkVGFzazxQcm9sb2d1ZUdlbmVyYXRvckZ1bmN0aW9uPigmZGVmYXVsdFByb2xvZ3VlR2Vu
ZXJhdG9yKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Q29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXggNTYw
NGFiMzMwOTlhNDE1MzliMzRlN2FhMTRjZDZiNWU4MWFmN2IwOS4uNDg2ZWQwNjMyMmEwNGI2ZTc4
NzgwNDQzYzA0MDlhNWQwZDg0ZDg4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNTQsMTAgKzM1NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRFcGlsb2d1
ZShDQ2FsbEhlbHBlcnMmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzPiBtX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM7Ci0KLSAgICBib29s
IHNob3VsZFByZXNlcnZlQjNPcmlnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUIzT3Jp
Z2luczsgfQotCi0gICAgdm9pZCBmb3JjZVByZXNlcnZhdGlvbk9mQjNPcmlnaW5zKCkgeyBtX3By
ZXNlcnZlQjNPcmlnaW5zID0gdHJ1ZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgOjpKU0M6OkIzOjpQcm9jZWR1cmU7CkBAIC0zOTQsOSArMzkwLDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX251bUZQVG1wcyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2ZyYW1lU2l6ZSB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2NhbGxBcmdBcmVhU2l6ZSB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBtX29wdExldmVsIHsgZGVmYXVsdE9wdExldmVsKCkgfTsKICAgICBib29sIG1fc3RhY2tJc0Fs
bG9jYXRlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3ByZXNlcnZlQjNPcmlnaW5zIHsgdHJ1ZSB9
OwogICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IG1fdW5jb3JyZWN0ZWRDYWxsZWVTYXZlUmVnaXN0
ZXJBdE9mZnNldExpc3Q7CiAgICAgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwog
ICAgIFN0YWNrU2xvdCogbV9jYWxsZWVTYXZlU3RhY2tTbG90IHsgbnVsbHB0ciB9OwpAQCAtNDA2
LDYgKzQwMCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdhc21Cb3VuZHNDaGVja0dlbmVyYXRv
cj4gbV93YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CiAgICAgY29uc3QgY2hhciogbV9sYXN0UGhh
c2VOYW1lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJsZXI+IG1fZGlzYXNzZW1ibGVy
OworICAgIHVuc2lnbmVkIG1fb3B0TGV2ZWwgeyBkZWZhdWx0T3B0TGV2ZWwoKSB9OwogICAgIFJl
ZjxQcm9sb2d1ZUdlbmVyYXRvcj4gbV9kZWZhdWx0UHJvbG9ndWVHZW5lcmF0b3I7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IDU3Zjk0
ZWFmMDM0NmQwNzQzNjZhNDYwODRmMTcwMWEzYjA2NzhhMDAuLjRmNWM3NDA4MDBiZjYxZGU3MjU1
ODQ1NTAwM2RjMDc4OTk1ZTYyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyR2VuZXJhdGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjE0LDEyICsyMTQsMTEgQEAgc3RhdGljIHZvaWQgZ2VuZXJh
dGVXaXRoQWxyZWFkeUFsbG9jYXRlZFJlZ2lzdGVycyhDb2RlJiBjb2RlLCBDQ2FsbEhlbHBlcnMm
IGppdCkKIAogICAgIFBDVG9PcmlnaW5NYXAmIHBjVG9PcmlnaW5NYXAgPSBjb2RlLnByb2MoKS5w
Y1RvT3JpZ2luTWFwKCk7CiAgICAgYXV0byBhZGRJdGVtID0gWyZdIChJbnN0JiBpbnN0KSB7Ci0g
ICAgICAgIGlmICghY29kZS5zaG91bGRQcmVzZXJ2ZUIzT3JpZ2lucygpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBpZiAoaW5zdC5vcmlnaW4pCi0gICAgICAgICAgICBwY1RvT3JpZ2lu
TWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBpbnN0Lm9yaWdp
bi0+b3JpZ2luKCkpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmICghaW5zdC5vcmlnaW4pIHsK
ICAgICAgICAgICAgIHBjVG9PcmlnaW5NYXAuYXBwZW5kSXRlbShqaXQubGFiZWxJZ25vcmluZ1dh
dGNocG9pbnRzKCksIE9yaWdpbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBwY1RvT3JpZ2luTWFwLmFwcGVuZEl0ZW0oaml0LmxhYmVsSWdub3JpbmdXYXRjaHBv
aW50cygpLCBpbnN0Lm9yaWdpbi0+b3JpZ2luKCkpOwogICAgIH07CiAKICAgICBEaXNhc3NlbWJs
ZXIqIGRpc2Fzc2VtYmxlciA9IGNvZGUuZGlzYXNzZW1ibGVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM182LmNwcAppbmRleCA2ZWM5MzIwN2RlYmE4Y2QzYzc3ZjE0MjRiMTdhN2ZkMjNh
Y2FhNjQyLi43YmEzMzNkYzE0MDE5YThhZDdmOTc3NzMwZGI0NTk4YjYyYWRmMmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzYuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfNi5jcHAKQEAgLTI3NjcsOCArMjc2Nyw2IEBAIHZvaWQg
dGVzdFRyYXBwaW5nU3RvcmVFbGltaW5hdGlvbigpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0NCksCiAgICAgICAgIHB0cik7CiAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKLSAgICAvLyBXZSds
bCBsb29rIGF0IHRoZSB2YWx1ZXMgYWZ0ZXIgY29tcGlsaW5nCi0gICAgcHJvYy5jb2RlKCkuZm9y
Y2VQcmVzZXJ2YXRpb25PZkIzT3JpZ2lucygpOwogICAgIGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
KTsKICAgICB1bnNpZ25lZCBzdG9yZUNvdW50ID0gMDsKICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6
IHByb2MudmFsdWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5k
ZXggOWQ0OWZlNjMyNWM1ZDRlZjRmODEyNGZmZTM2ZmEwY2ZiZGJkNjFiZi4uMTExMDA4MjYwMzk4
MjJmNTA1MzJhZTIzMjM4ZjM4ZWNhOWM3OTU3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKQEAgLTE4NjEsMjYgKzE4NjEsNiBAQCB2b2lkIEdyYXBoOjpjbGVhckNQU0NG
R0RhdGEoKQogICAgIG1fY3BzQ0ZHID0gbnVsbHB0cjsKIH0KIAotdm9pZCBHcmFwaDo6ZnJlZURG
R0lSQWZ0ZXJMb3dlcmluZygpCi17Ci0gICAgbV9ibG9ja3MuY2xlYXIoKTsKLSAgICBtX3Jvb3Rz
LmNsZWFyKCk7Ci0gICAgbV92YXJBcmdDaGlsZHJlbi5jbGVhcigpOwotICAgIG1fbm9kZXMuY2xl
YXJBbGwoKTsKLQotICAgIG1fYnl0ZWNvZGVMaXZlbmVzcy5jbGVhcigpOwotICAgIG1fc2FmZVRv
TG9hZC5jbGVhcigpOwotICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7Ci0gICAgbV9zc2FE
b21pbmF0b3JzID0gbnVsbHB0cjsKLSAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7Ci0g
ICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fc3NhQ0ZHID0gbnVsbHB0cjsK
LSAgICBtX2Nwc0NGRyA9IG51bGxwdHI7Ci0gICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwot
ICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7Ci0gICAgbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgUHJlZml4OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2VuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKaW5kZXggNjJhMWZlZjNkYzJjZGRlMTA5MTUyNGQ2NzM0MDg0MGZkM2Yy
NjBiMS4uNzZmOWRiODJmOTExODkxZGM5MzM2NTA1Yzc2ZGQ2MTM2M2ZlNDZhYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTA3NCw4ICsxMDc0LDYgQEAgcHVibGljOgog
ICAgICAgICBtX2NhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlwb2ludERhdGEgeyBt
YWNoaW5lQ29kZSwgRml4ZWRWZWN0b3I8Rmx1c2hGb3JtYXQ+KFdURk1vdmUoYXJndW1lbnRGb3Jt
YXRzKSksIGJ5dGVjb2RlSW5kZXggfSk7CiAgICAgfQogCi0gICAgdm9pZCBmcmVlREZHSVJBZnRl
ckxvd2VyaW5nKCk7Ci0KICAgICBTdGFja0NoZWNrIG1fc3RhY2tDaGVja2VyOwogICAgIFZNJiBt
X3ZtOwogICAgIFBsYW4mIG1fcGxhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwCmluZGV4IDQxYWE2MzNmZjkzYjFjZWVkNjIxY2VhOTE1ZjFhY2MxYWZjNmFiNzQuLmQ3
YzI3Y2NlZjkyZjMyMWE3ODI2ZDNjNTZmNDUwMWY1MGFiNjBkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAtNTgsOSArNTgsNiBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNl
dERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKLSAg
ICBpZiAoIXNob3VsZER1bXBEaXNhc3NlbWJseSgpICYmICFPcHRpb25zOjphc3luY0Rpc2Fzc2Vt
Ymx5KCkgJiYgIWdyYXBoLmNvbXBpbGF0aW9uKCkgJiYgIXN0YXRlLnByb2MtPm5lZWRzUENUb09y
aWdpbk1hcCgpKQotICAgICAgICBncmFwaC5mcmVlREZHSVJBZnRlckxvd2VyaW5nKCk7Ci0KICAg
ICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2FmZXBv
aW50UmVzdWx0KTsKIApAQCAtMTUzLDExICsxNTAsMTAgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBz
dGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAgc3RhdGUu
YWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBp
ZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2luTWFwcGluZygpKSB7Ci0gICAgICAgIEIz
OjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2lu
TWFwKCk7CisgICAgCisgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJv
Yy0+cmVsZWFzZVBDVG9PcmlnaW5NYXAoKTsKKyAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9D
b2RlT3JpZ2luTWFwcGluZygpKQogICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2lu
TWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRl
cih2bSwgV1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1
ZmZlcikpOwotICAgIH0KIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxh
YmVsID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50
cnlQdHJUYWc+KHN0YXRlLnByb2MtPmNvZGUoKS5lbnRyeXBvaW50TGFiZWwoMCkpOwogICAgIHN0
YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNDEzM2I4MjhiNjRjYzZlNjM4ODY3N2UwNzhm
MTFjOWY3YTdkMDYxYS4uYWJkNjk0ZjhkYzY0NTBkZmVjNGNlMmQ5MzFiZGU1Yjg4NmE0YTUzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
MjM4NCw3ICsyMzg0LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3Jh
dGNoUmVnaXN0ZXJzID0gMTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9m
dGxTdGF0ZTsKLSAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5v
cmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAg
ICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMjQxNSwxMiArMjQxNCwxMiBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRoSUNHZW5lcmF0aW9u
U3RhdGUtPnNob3VsZFNsb3dQYXRoUmVwYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9ucy5n
ZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFu
dGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBj
YWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZXhjZXB0aW9ucy5nZXQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3By
KCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyksIHBhcmFtc1sxXS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGhJQykp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xv
d1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFu
dGljTm9kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIHBhcmFtc1sxXS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1BhdGhDYWxsIGNhbGwgPSBj
YWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLmdldCgpLCBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwg
cGFyYW1zWzFdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRoSUNHZW5l
cmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGwuY2FsbCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CkBAIC0yNDM5LDggKzI0MzgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sIGV4Y2VwdGlvbnMu
Z2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBub25SZXBhdGNoaW5nRnVuY3Rpb24sIHBh
cmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNO
b2RlT3JpZ2luKSwgcGFyYW1zWzFdLmdwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBleGNlcHRpb25zLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHBhcmFtc1sxXS5ncHIoKSk7CiAgICAg
ICAgICAgICAgICAgfQogCiAjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCkBAIC0yNDkyLDcgKzI0
OTEsNiBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50LT5udW1GUFNjcmF0Y2hSZWdpc3Rl
cnMgPSAyOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwot
ICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CkBAIC0yNTI2LDEyICsyNTI0LDEyIEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2hv
dWxkU2xvd1BhdGhSZXBhdGNoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvd1Bh
dGhDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKCpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25zLmdldCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBhdGNoaW5nRnVuY3Rpb24sIHBhcmFtc1sw
XS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3Jp
Z2luKSwgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCksIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihtYXRoSUMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG93UGF0
aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1z
WzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCksIHBhcmFtc1syXS5ncHIoKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGhJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbC5jYWxsKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNs
b3dQYXRoQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbigqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGlj
Tm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTbG93UGF0aENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oKnN0
YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2Vt
YW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCks
IG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBwYXJhbXNbMV0uZ3ByKCks
IHBhcmFtc1syXS5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0aElDR2Vu
ZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsLmNhbGwoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRv
bmUsICZqaXQpOwpAQCAtMjU1MCw4ICsyNTQ4LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25z
LmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBw
YXJhbXNbMF0uZ3ByKCksIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGlj
Tm9kZU9yaWdpbiksIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGpp
dCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBleGNlcHRpb25zLmdldCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksIGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHBhcmFt
c1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAKICNpZiBF
TkFCTEUoTUFUSF9JQ19TVEFUUykKQEAgLTM5OTUsMTEgKzM5OTMsMTAgQEAgcHJpdmF0ZToKIAog
ICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgYm9vbCBiYXNlSXND
ZWxsID0gYWJzdHJhY3RWYWx1ZShub2RlLT5jaGlsZDEoKSkuaXNUeXBlKFNwZWNDZWxsKTsKLSAg
ICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
IAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5q
aXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNl
bWFudGljT3JpZ2luKTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0
ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAg
ICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlv
bkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTQw
MTQsNyArNDAxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5
R1BSID0gcGFyYW1zWzJdLmdwcigpOwogCiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBCb3g8SklUR2V0QnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LCBBY2Nl
c3NUeXBlOjpHZXRQcml2YXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6Okdl
dFByaXZhdGVOYW1lLAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIEpTVmFsdWVSZWdzKHByb3BlcnR5R1BSKSwg
SlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSk7CiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm90Q2VsbDsKQEAgLTQwMzIsOSArNDAyOSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlU2VtYW50aWNPcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBq
aXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUsIHJlc3VsdEdQUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9y
KG5vZGVTZW1hbnRpY09yaWdpbiksCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCkBAIC00MTI4LDExICs0MTI1LDEw
IEBAIHByaXZhdGU6CiAKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAg
ICAgIGJvb2wgYmFzZUlzQ2VsbCA9IGFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkuaXNU
eXBlKFNwZWNDZWxsKTsKLSAgICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBu
b2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
PV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwogCi0gICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgg
PSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUlu
ZGV4KG5vZGVTZW1hbnRpY09yaWdpbik7CisgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVD
YWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgogICAgICAg
ICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25I
YW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC00MTQ2
LDcgKzQxNDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgR1BSUmVnIGJyYW5kR1BSID0gcGFy
YW1zWzFdLmdwcigpOwogCiAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgaml0LmNv
ZGVCbG9jaygpLCBub2RlU2VtYW50aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUs
CisgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsIGFjY2Vzc1R5cGUsCiAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhicmFu
ZEdQUikpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90Q2VsbDsKQEAgLTQx
NzYsOSArNDE3Miw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93
UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1h
bnRpY09yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIGFwcHJvcHJpYXRlUHJpdmF0ZUFjY2Vzc0Z1bmN0aW9u
KGFjY2Vzc1R5cGUpLCBJbnZhbGlkR1BSUmVnLAotICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAorICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgYmFzZUdQUiwgYnJhbmRHUFIpLmNhbGwoKTsKICAg
ICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIApAQCAtNDUzOCwx
NCArNDUzNCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JF
eGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0
YXRlOwotCi0gICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9kZS0+b3Jp
Z2luLnNlbWFudGljOworICAgICAgICAKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxs
U2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1h
bnRpY09yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24u
Y29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKIAogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRp
b25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRD
cmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwpAQCAtNDU1NCw3ICs0NTQ5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9u
Rm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CiAKICAgICAgICAgICAgICAgICBhdXRv
IGdlbmVyYXRvciA9IEJveDxKSVRQdXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAg
ICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3By
KCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBH
UFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgcHV0S2luZCk7CkBAIC00NTY5LDkgKzQ1NjQsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2lu
ID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1h
bnRpY09yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBnZW5lcmF0b3ItPnNsb3dQ
YXRoRnVuY3Rpb24oKSwgSW52YWxpZEdQUlJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFt
c1sxXS5ncHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNbMF0uZ3ByKCks
IGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTUyNTgsMTEgKzUyNTMsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNl
cHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7
CiAKICAgICAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAgICAgICAgICAg
Q29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAg
ICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAK
LSAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0
Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1h
bnRpY09yaWdpbik7CisgICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4
ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJ
bmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0IGZvciBvcGVyYXRpb24gY2FsbHMuCiAgICAgICAgICAg
ICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25I
YW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC01Mjc3
LDcgKzUyNzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IHBhcmFtc1syXS5ncHIoKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
Qm94PEpJVEdldEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNz
VHlwZTo6R2V0QnlWYWwsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwK
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHJl
c3VsdEdQUikpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzU3RyaW5nID0gcHJvcGVydHlJc1N0cmluZzsKQEAgLTUyOTksOSArNTI5Myw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGlu
aygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0
aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlU2VtYW50
aWNPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUs
IHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCisgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdl
bmVyYXRvci0+c3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRy
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgaml0
Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKQEAgLTU4NTksMTYgKzU4NTMsMTIgQEAgcHJp
dmF0ZToKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgQ29kZU9yaWdpbiBub2RlU2VtYW50aWNPcmlnaW4g
PSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Ci0gICAgICAgIGF1dG8gY2hpbGQxVXNlS2luZCA9IG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKTsKLSAgICAgICAgYXV0byBjaGlsZDJVc2VLaW5kID0gbm9k
ZS0+Y2hpbGQyKCkudXNlS2luZCgpOwotICAgICAgICBhdXRvIGVjbWFNb2RlID0gbm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5k
ZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5j
b21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZVNlbWFudGljT3Jp
Z2luKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3Jp
Z2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCiAg
ICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQog
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9u
KHBhcmFtcyktPmp1bXBzKGppdCk7CkBAIC01ODgwLDcgKzU4NzAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIEFTU0VSVChiYXNlLmdwcigpICE9IHBhcmFtcy5ncFNjcmF0Y2goMCkpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXR1cm5HUFIgIT0gcGFyYW1zLmdwU2NyYXRjaCgwKSk7
CiAKLSAgICAgICAgICAgICAgICBpZiAoY2hpbGQxVXNlS2luZCkKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpCiAgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAKICAg
ICAgICAgICAgICAgICBjb25zdGV4cHIgYXV0byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IFsmXSAo
KSB7CkBAIC01ODk1LDcgKzU4ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdC
aXRzKCkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJhbXMuZ3BTY3JhdGNoKDApICE9IHBhcmFtc1syXS5ncHIoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQyVXNlS2luZCA9PSBVbnR5cGVkVXNlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0
LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtNTkwNCwxMiArNTg5NCwxMiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVERlbEJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlU2VtYW50
aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1
YnNjcmlwdFZhbHVlLCBiYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeVZh
bEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29k
ZUJsb2NrKCksIG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJz
Y3JpcHQsIEpTVmFsdWVSZWdzKHJldHVybkdQUiksIHBhcmFtcy5ncFNjcmF0Y2goMCkpOwogICAg
ICAgICAgICAgICAgICAgICB9CkBAIC01OTI2LDExICs1OTE2LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2Fs
bCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlU2VtYW50aWNPcmlnaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJldHVybkdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksIGJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3Vic2NyaXB0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihlY21hTW9kZSkpLmNhbGwo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHQsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpLmNhbGwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogCiAgICAgICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJl
Z2luLCBzbG93UGF0aENhbGwpOwpAQCAtOTc4Niw4ICs5Nzc2LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0
ZSgpOwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0qIHZt
ID0gJnRoaXMtPnZtKCk7Ci0gICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7
CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwpAQCAtOTc5OSwxNiArOTc4NywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3Rl
cihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAg
ICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5h
ZGRDYWxsTGlua0luZm8obm9kZVNlbWFudGljT3JpZ2luKTsKKyAgICAgICAgICAgICAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5z
ZXRVcENhbGwoCi0gICAgICAgICAgICAgICAgICAgIG5vZGVPcCA9PSBDb25zdHJ1Y3QgPyBDYWxs
TGlua0luZm86OkNvbnN0cnVjdCA6IENhbGxMaW5rSW5mbzo6Q2FsbCwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IENvbnN0cnVjdCA/IENhbGxMaW5r
SW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CiAK
ICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoID0gY2FsbExpbmtJbmZvLT5lbWl0RmFzdFBh
dGgoaml0LCBHUFJJbmZvOjpyZWdUMCwgSW52YWxpZEdQUlJlZywgQ2FsbExpbmtJbmZvOjpVc2VE
YXRhSUM6Ok5vKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGpp
dC5qdW1wKCk7CiAKICAgICAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQpOwogICAgICAg
ICAgICAgICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOwor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BS
SW5mbzo6cmVnVDMpOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRo
KCp2bSwgaml0KTsKIAogICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKQEAgLTk4OTgs
NyArOTg4Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiA9IGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKTsKLSAg
ICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtOTkzMiw3ICs5OTE5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2Vk
QXJncyA9IG51bVBhc3NlZEFyZ3M7CiAgICAgICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNl
dHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhqaXQuY29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBq
aXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1hbnRpY05vZGVPcmlnaW4pOworICAg
ICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxv
Y2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6RGlyZWN0VGFp
bENhbGwsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBtYWluUGF0aCA9IGppdC5sYWJlbCgpOwpAQCAt
OTk0OSw3ICs5OTM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBzbG93UGF0aCA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCB0b1NhdmUsIGpp
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljTm9kZU9yaWdpbiwgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uTGlua0RpcmVjdENhbGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkxpbmtE
aXJlY3RDYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgSW52YWxpZEdQUlJlZywgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIGNhbGxlZUdQUikuY2FsbCgpOwog
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJmppdCk7CiAg
ICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RXhlY3V0YWJsZUR1cmluZ0NvbXBp
bGF0aW9uKGV4ZWN1dGFibGUpOwpAQCAtOTk2NCw3ICs5OTUxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGppdC5jb2Rl
QmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdpbik7CisgICAgICAgICAg
ICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENh
bGxMaW5rSW5mbyhub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby0+c2V0VXBDYWxsKAogICAgICAgICAgICAgICAgICAgICBpc0NvbnN0cnVjdCA/IENh
bGxMaW5rSW5mbzo6RGlyZWN0Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJlY3RDYWxsLCBJ
bnZhbGlkR1BSUmVnKTsKIApAQCAtOTk5MSw3ICs5OTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNOb2Rl
T3JpZ2luLCBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEludmFsaWRHUFJSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0lu
Zm8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZUdQUikuY2FsbCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obWFpblBhdGgsICZqaXQpOwpA
QCAtMTAwNjcsNyArMTAwNTQsNiBAQCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKLSAg
ICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwpAQCAtMTAxMDUsNyArMTAwOTEsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHNsb3dQYXRoU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3Mo
R1BSSW5mbzo6cmVnVDApKTsKICAgICAgICAgICAgICAgICBzbG93UGF0aFNodWZmbGVyLnByZXBh
cmVGb3JTbG93UGF0aCgpOwogCi0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGlj
Tm9kZU9yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogCiAgICAgICAgICAg
ICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBqaXQubGFiZWwoKTsKQEAgLTEwMTE5LDYwICsxMDEw
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7
CiAgICAgfQotCi0gICAgc3RydWN0IENhcHR1cmVkRm9yUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVh
ZENhc2UgewotICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQ7Ci0gICAgfTsKLSAgICBz
dHJ1Y3QgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlIHsKLSAgICAgICAgaW50
NjRfdCB2YWx1ZTsKLSAgICAgICAgaW50MzJfdCBjdXJyZW50U3RvcmVPZmZzZXQ7Ci0gICAgfTsK
LSAgICBzdHJ1Y3QgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQgewotICAgICAg
ICB1bnNpZ25lZCBhcnJheUxlbmd0aDsKLSAgICB9OwotICAgIHN0cnVjdCBDYXB0dXJlZEZvclBo
YW50b21DcmVhdGVSZXN0IHsKLSAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWU7Ci0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwotICAgICAgICB1
bnNpZ25lZCBwYXJhbWV0ZXJPZmZzZXQ7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgVmFyYXJnc1NwcmVh
ZEFyZ3VtZW50VG9FbWl0IHsKLSAgICAgICAgZW51bSBUeXBlIHsKLSAgICAgICAgICAgIFBoYW50
b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlLAotICAgICAgICAgICAgUGhhbnRvbU5ld0FycmF5QnVm
ZmVyQ2FzZSwKLSAgICAgICAgICAgIFBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCwKLSAgICAgICAg
ICAgIFBoYW50b21DcmVhdGVSZXN0Ci0gICAgICAgIH0gbV90eXBlOwotICAgICAgICB1bmlvbiB7
Ci0gICAgICAgICAgICBDYXB0dXJlZEZvclBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlIG1f
cGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2U7Ci0gICAgICAgICAgICBDYXB0dXJlZEZvclBo
YW50b21OZXdBcnJheUJ1ZmZlckNhc2UgbV9waGFudG9tTmV3QXJyYXlCdWZmZXJDYXNlOwotICAg
ICAgICAgICAgQ2FwdHVyZWRGb3JQaGFudG9tTmV3QXJyYXlCdWZmZXJFbmQgbV9waGFudG9tTmV3
QXJyYXlCdWZmZXJFbmQ7Ci0gICAgICAgICAgICBDYXB0dXJlZEZvclBoYW50b21DcmVhdGVSZXN0
IG1fcGhhbnRvbUNyZWF0ZVJlc3Q7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgVmFyYXJnc1NwcmVh
ZEFyZ3VtZW50VG9FbWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCB1bnNp
Z25lZCBhcmcpCi0gICAgICAgICAgICA6IG1fdHlwZSh0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAobV90eXBlID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlKQotICAgICAgICAg
ICAgICAgIG1fcGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZENhc2UgPSB7IGFyZyB9OwotICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHQgPT0gUGhhbnRvbU5ld0FycmF5
QnVmZmVyRW5kKTsKLSAgICAgICAgICAgICAgICBtX3BoYW50b21OZXdBcnJheUJ1ZmZlckVuZCA9
IHsgYXJnIH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgVmFyYXJnc1NwcmVh
ZEFyZ3VtZW50VG9FbWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0LCBpbnQ2
NF90IHZhbHVlLCBpbnQzMl90IGN1cnJlbnRTdG9yZU9mZnNldCkKLSAgICAgICAgICAgIDogbV90
eXBlKHQpCi0gICAgICAgICAgICAsIG1fcGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZSh7IHZhbHVl
LCBjdXJyZW50U3RvcmVPZmZzZXQgfSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHQg
PT0gUGhhbnRvbU5ld0FycmF5QnVmZmVyQ2FzZSk7Ci0gICAgICAgIH0KLSAgICAgICAgVmFyYXJn
c1NwcmVhZEFyZ3VtZW50VG9FbWl0KFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6VHlwZSB0
LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAsIHVuc2lnbmVkIHBhcmFtZXRlck9mZnNldCkKLSAgICAgICAgICAgIDogbV90
eXBlKHQpCi0gICAgICAgICAgICAsIG1fcGhhbnRvbUNyZWF0ZVJlc3QoeyBpbmxpbmVDYWxsRnJh
bWUsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCBwYXJhbWV0ZXJPZmZzZXQgfSkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKHQgPT0gUGhhbnRvbUNyZWF0ZVJlc3QpOwotICAgICAgICB9
Ci0gICAgfTsKLQorICAgIAogICAgIHZvaWQgY29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3NT
cHJlYWQoKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKQEAgLTEwMTg3LDIw
ICsxMDEyMCwxMyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8TFZhbHVlLCAyPiBzcHJlYWRM
ZW5ndGhzOwogICAgICAgICBWZWN0b3I8TFZhbHVlLCA4PiBwYXRjaHBvaW50QXJndW1lbnRzOwog
ICAgICAgICBIYXNoTWFwPElubGluZUNhbGxGcmFtZSosIExWYWx1ZSwgV1RGOjpEZWZhdWx0SGFz
aDxJbmxpbmVDYWxsRnJhbWUqPiwgV1RGOjpOdWxsYWJsZUhhc2hUcmFpdHM8SW5saW5lQ2FsbEZy
YW1lKj4+IGNhY2hlZFNwcmVhZExlbmd0aHM7Ci0gICAgICAgIC8vIEJlY2F1c2UgdGhlIHBhdGNo
cG9pbnQgZ2VuZXJhdG9yIHJ1bnMgbGF0ZSBpbiBBaXIsIHRoZSBkZmcgZ3JhcGggd2lsbCBiZSBs
b25nIGdvbmUuCi0gICAgICAgIC8vIFNvIHdlIG11c3QgbG9hZCBldmVyeXRoaW5nIHJlbGV2YW50
IHJpZ2h0IG5vdywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXkgYXJlIGNhcHR1cmVkIGJ5IHZhbHVl
IGJ5IHRoZSBsYW1iZGEgdGhhdCBhY3RzIGFzIHRoZSBnZW5lcmF0b3IKLSAgICAgICAgLy8gT25l
IHBhcnRpY3VsYXJseSB0cmlja3kgcG9pbnQgaXMgdGhhdCB0aGUgZ2VuZXJhdG9yIHdvdWxkIGxp
a2UgdG8gd2FsayBvdmVyIHRoZSB0cmVlIHJvb3RlZCBhdCB0aGlzIG5vZGUsIGV4cGxvcmluZyB0
aHJvdWdoIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQgYW5kIFBoYW50b21OZXdBcnJheUJ1ZmZl
ciwgZW1pdHRpbmcgY29kZSBhbG9uZyB0aGUgd2F5LgotICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBk
byB0aGF0IHdhbGsgaGVyZSwgYW5kIHJlY29yZCBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB0
aGUgZm9sbG93aW5nIHZlY3RvciB0byBlbWl0IHRoZSByaWdodCBjb2RlIGF0IHRoZSBlbmQgb2Yg
QWlyLgotICAgICAgICBWZWN0b3I8VmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0PiBhcmd1bWVu
dHNUb0VtaXRGcm9tUmlnaHRUb0xlZnQ7Ci0gICAgICAgIGludCBzdG9yZU9mZnNldCA9IENhbGxG
cmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpOwotICAgICAgICB1bnNpZ25lZCBwYXJhbXNPZmZzZXQgPSA0OwotICAgICAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CiAgICAgICAgIGF1dG8gcHVzaEFuZENvdW50QXJndW1lbnRzRnJvbVJp
Z2h0VG9MZWZ0ID0gcmVjdXJzYWJsZUxhbWJkYShbJl0oYXV0byBzZWxmLCBOb2RlKiB0YXJnZXQp
IC0+IHZvaWQgewotICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQtPm9wKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKKyAgICAgICAgICAgIGlmICh0YXJnZXQtPm9wKCkgPT0g
UGhhbnRvbVNwcmVhZCkgewogICAgICAgICAgICAgICAgIHNlbGYodGFyZ2V0LT5jaGlsZDEoKS5u
b2RlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld0FycmF5V2l0aFNwcmVhZDogeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
dGFyZ2V0LT5vcCgpID09IFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQpIHsKICAgICAgICAgICAg
ICAgICBCaXRWZWN0b3IqIGJpdFZlY3RvciA9IHRhcmdldC0+Yml0VmVjdG9yKCk7CiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFyZ2V0LT5udW1DaGlsZHJlbigpOyBpLS07ICkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoYml0VmVjdG9yLT5nZXQoaSkpCkBAIC0xMDIwOSw0
NSArMTAxMzUsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhdGlj
QXJndW1lbnRDb3VudDsKICAgICAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9
IHRoaXMtPmxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZCh0YXJnZXQsIGkpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnRBcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50KTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdC5h
cHBlbmQoeyBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6OlBoYW50b21OZXdBcnJh
eVdpdGhTcHJlYWRDYXNlLCBwYXJhbXNPZmZzZXQgKyAoaW5kZXgrKyl9KTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheUJ1ZmZlcjogewot
ICAgICAgICAgICAgICAgIGF1dG8qIGFycmF5ID0gdGFyZ2V0LT5jYXN0T3BlcmFuZDxKU0ltbXV0
YWJsZUJ1dHRlcmZseSo+KCk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgYXJyYXlMZW5ndGgg
PSBhcnJheS0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGljQXJndW1lbnRDb3VudCAr
PSBhcnJheUxlbmd0aDsKLSAgICAgICAgICAgICAgICBDaGVja2VkPGludDMyX3Q+IG9mZnNldENv
dW50IHsgMSB9OwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFycmF5TGVuZ3Ro
OyBpLS07ICsrb2Zmc2V0Q291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQz
Ml90PiBjdXJyZW50U3RvcmVPZmZzZXQgeyBzdG9yZU9mZnNldCB9OwotICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50U3RvcmVPZmZzZXQgLT0gKG9mZnNldENvdW50ICogc3RhdGljX2Nhc3Q8aW50
MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNl
IHZhcmFyZ3MgdmFsdWVzIGFyZSBkcmFpbmVkIGFzIEpTVmFsdWUsIHdlIHNob3VsZCBub3QgZ2Vu
ZXJhdGUgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgLy8gaW4gRG91YmxlIGZvcm0gZXZlbiBp
ZiBQaGFudG9tTmV3QXJyYXlCdWZmZXIncyBpbmRleGluZ1R5cGUgaXMgQXJyYXlXaXRoRG91Ymxl
LgotICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGFy
cmF5LT5nZXQoaSkpOwotICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNUb0VtaXRGcm9tUmln
aHRUb0xlZnQuYXBwZW5kKHsgVmFyYXJnc1NwcmVhZEFyZ3VtZW50VG9FbWl0OjpUeXBlOjpQaGFu
dG9tTmV3QXJyYXlCdWZmZXJDYXNlLCB2YWx1ZSwgY3VycmVudFN0b3JlT2Zmc2V0LnZhbHVlKCkg
fSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFyZ3VtZW50c1RvRW1pdEZy
b21SaWdodFRvTGVmdC5hcHBlbmQoeyBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6OlR5cGU6
OlBoYW50b21OZXdBcnJheUJ1ZmZlckVuZCwgYXJyYXlMZW5ndGggfSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRl
UmVzdDogewotICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9m
QXJndW1lbnRzVG9Ta2lwKCk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zm
c2V0ID0gcGFyYW1zT2Zmc2V0ICsgKGluZGV4KyspOwotICAgICAgICAgICAgICAgIExWYWx1ZSBs
ZW5ndGggPSBjYWNoZWRTcHJlYWRMZW5ndGhzLmVuc3VyZShpbmxpbmVDYWxsRnJhbWUsIFsmXSAo
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC56ZXJvRXh0UHRyKHRoaXMtPmdl
dFNwcmVhZExlbmd0aEZyb21JbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lLCBudW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcCkpOwotICAgICAgICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
LSAgICAgICAgICAgICAgICBwYXRjaHBvaW50QXJndW1lbnRzLmFwcGVuZChsZW5ndGgpOwotICAg
ICAgICAgICAgICAgIHNwcmVhZExlbmd0aHMuYXBwZW5kKGxlbmd0aCk7Ci0gICAgICAgICAgICAg
ICAgYXJndW1lbnRzVG9FbWl0RnJvbVJpZ2h0VG9MZWZ0LmFwcGVuZCh7IFZhcmFyZ3NTcHJlYWRB
cmd1bWVudFRvRW1pdDo6VHlwZTo6UGhhbnRvbUNyZWF0ZVJlc3QsIGlubGluZUNhbGxGcmFtZSwg
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHBhcmFtZXRlck9mZnNldCB9KTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKKyAgICAgICAg
ICAgICAgICBzdGF0aWNBcmd1bWVudENvdW50ICs9IHRhcmdldC0+Y2FzdE9wZXJhbmQ8SlNJbW11
dGFibGVCdXR0ZXJmbHkqPigpLT5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVzdCk7CisgICAgICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRhcmdldC0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CisgICAg
ICAgICAgICBMVmFsdWUgbGVuZ3RoID0gY2FjaGVkU3ByZWFkTGVuZ3Rocy5lbnN1cmUoaW5saW5l
Q2FsbEZyYW1lLCBbJl0gKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtX291dC56ZXJvRXh0
UHRyKHRoaXMtPmdldFNwcmVhZExlbmd0aEZyb21JbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZy
YW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkpOworICAgICAgICAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOworICAgICAgICAgICAgcGF0Y2hwb2ludEFyZ3VtZW50cy5hcHBlbmQobGVuZ3RoKTsK
KyAgICAgICAgICAgIHNwcmVhZExlbmd0aHMuYXBwZW5kKGxlbmd0aCk7CiAgICAgICAgIH0pOwot
ICAgICAgICBwdXNoQW5kQ291bnRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQoYXJndW1lbnRzKTsK
IAorICAgICAgICBwdXNoQW5kQ291bnRBcmd1bWVudHNGcm9tUmlnaHRUb0xlZnQoYXJndW1lbnRz
KTsKICAgICAgICAgTFZhbHVlIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gbV9vdXQuY29u
c3RJbnRQdHIoc3RhdGljQXJndW1lbnRDb3VudCArIDEpOwogICAgICAgICBmb3IgKExWYWx1ZSBs
ZW5ndGggOiBzcHJlYWRMZW5ndGhzKQogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBtX291dC5hZGQobGVuZ3RoLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CkBA
IC0xMDI3NSwxNCArMTAxODMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpKTsKIAogICAgICAgICBtX3Byb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMo
bWluaW11bUpTQ2FsbEFyZWFTaXplKTsKLQorICAgICAgICAKICAgICAgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBT
dGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0qIHZtID0gJnRoaXMtPnZtKCk7
Ci0gICAgICAgIENvZGVPcmlnaW4gc2VtYW50aWNOb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNl
bWFudGljOwotICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgIFs9LCBhcmd1bWVudHNUb0VtaXQgPSBX
VEZNb3ZlKGFyZ3VtZW50c1RvRW1pdEZyb21SaWdodFRvTGVmdCldIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNp
dGVJbmRleCA9CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoY29kZU9yaWdpbik7CkBAIC0xMDI5Niw3
ICsxMDIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjp0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKSkpOwogCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1hbnRp
Y05vZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKIAogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3Rl
clNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycy5leGNs
dWRlKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKQEAgLTEwMzYw
LDU0ICsxMDI2Niw3NCBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUjEsIENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQpKTsKIAotICAgICAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGFyZ3VtZW50VG9FbWl0IDogYXJndW1lbnRzVG9FbWl0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50VG9FbWl0Lm1fdHlwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYXJhcmdzU3ByZWFkQXJndW1lbnRUb0VtaXQ6
OlBoYW50b21OZXdBcnJheVdpdGhTcHJlYWRDYXNlOiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0ID0gYXJndW1lbnRUb0VtaXQubV9waGFudG9t
TmV3QXJyYXlXaXRoU3ByZWFkQ2FzZS5wYXJhbWV0ZXJPZmZzZXQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGlj
X2Nhc3Q8c2l6ZV90PigxKSksIHNjcmF0Y2hHUFIyKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRWYWx1ZUZyb21SZXAocGFyYW1zW3BhcmFtZXRlck9mZnNldF0sIHNjcmF0Y2hHUFIz
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSMywg
Q0NhbGxIZWxwZXJzOjpCYXNlSW5kZXgoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBDQ2FsbEhl
bHBlcnM6OlRpbWVzRWlnaHQsIHN0b3JlT2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIFZhcmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbU5ld0Fy
cmF5QnVmZmVyQ2FzZTogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFs
dWUgPSBhcmd1bWVudFRvRW1pdC5tX3BoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UudmFsdWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBjdXJyZW50U3RvcmVPZmZzZXQgPSBh
cmd1bWVudFRvRW1pdC5tX3BoYW50b21OZXdBcnJheUJ1ZmZlckNhc2UuY3VycmVudFN0b3JlT2Zm
c2V0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KHZhbHVlKSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChz
Y3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgY3VycmVu
dFN0b3JlT2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZh
cmFyZ3NTcHJlYWRBcmd1bWVudFRvRW1pdDo6UGhhbnRvbU5ld0FycmF5QnVmZmVyRW5kOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFycmF5TGVuZ3RoID0gc3RhdGljX2Nh
c3Q8c2l6ZV90Pihhcmd1bWVudFRvRW1pdC5tX3BoYW50b21OZXdBcnJheUJ1ZmZlckVuZC5hcnJh
eUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoYXJyYXlMZW5ndGgpLCBzY3JhdGNoR1BSMik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGludCBz
dG9yZU9mZnNldCA9IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHBhcmFtc09mZnNldCA9IDQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBlbWl0QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0
ID0gcmVjdXJzYWJsZUxhbWJkYShbJl0oYXV0byBzZWxmLCBOb2RlKiB0YXJnZXQpIC0+IHZvaWQg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tU3By
ZWFkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZih0YXJnZXQtPmNoaWxkMSgp
Lm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWYXJhcmdzU3By
ZWFkQXJndW1lbnRUb0VtaXQ6OlBoYW50b21DcmVhdGVSZXN0OiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBhcmd1bWVudFRv
RW1pdC5tX3BoYW50b21DcmVhdGVSZXN0LmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IGFyZ3VtZW50
VG9FbWl0Lm1fcGhhbnRvbUNyZWF0ZVJlc3QubnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyT2Zmc2V0ID0gYXJndW1l
bnRUb0VtaXQubV9waGFudG9tQ3JlYXRlUmVzdC5wYXJhbWV0ZXJPZmZzZXQ7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVtQXJndW1lbnRzVG9Db3B5ID0gcGFy
YW1zW3BhcmFtZXRlck9mZnNldF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VmFs
dWVGcm9tUmVwKG51bUFyZ3VtZW50c1RvQ29weSwgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBsb2FkT2Zmc2V0ID0gKEFzc2VtYmx5SGVscGVyczo6YXJndW1l
bnRzU3RhcnQoaW5saW5lQ2FsbEZyYW1lKS5vZmZzZXQoKSArIG51bWJlck9mQXJndW1lbnRzVG9T
a2lwKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgc2NyYXRjaEdQUjMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gbG9vcFN0YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90
PigxKSksIHNjcmF0Y2hHUFIzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3Vi
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwg
c2NyYXRjaEdQUjIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0Nh
bGxIZWxwZXJzOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHNjcmF0Y2hH
UFIzLCBDQ2FsbEhlbHBlcnM6OlRpbWVzRWlnaHQsIGxvYWRPZmZzZXQpLCBzY3JhdGNoR1BSNCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNj
cmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9m
ZnNldCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5icmFuY2hUZXN0UHRyKEND
YWxsSGVscGVyczo6Tm9uWmVybywgc2NyYXRjaEdQUjMpLmxpbmtUbyhsb29wU3RhcnQsICZqaXQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlXaXRo
U3ByZWFkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0VmVjdG9yKiBiaXRWZWN0
b3IgPSB0YXJnZXQtPmJpdFZlY3RvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IHRhcmdldC0+bnVtQ2hpbGRyZW4oKTsgaS0tOyApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdFZlY3Rvci0+Z2V0KGkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZihzdGF0ZS0+Z3JhcGgudmFyQXJnQ2hpbGQo
dGFyZ2V0LCBpKS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBzY3JhdGNoR1BS
Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAo
cGFyYW1zW3BhcmFtc09mZnNldCArIChpbmRleCsrKV0sIHNjcmF0Y2hHUFIzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QmFzZUlu
ZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBz
dG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHRhcmdldC0+b3AoKSA9PSBQaGFudG9tTmV3QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBhcnJheSA9IHRhcmdldC0+Y2FzdE9wZXJhbmQ8SlNJbW11
dGFibGVCdXR0ZXJmbHkqPigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZWQ8
aW50MzJfdD4gb2Zmc2V0Q291bnQgeyAxIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYXJyYXktPmxlbmd0aCgpOyBpLS07ICsrb2Zmc2V0Q291bnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB2YXJhcmdzIHZhbHVl
cyBhcmUgZHJhaW5lZCBhcyBKU1ZhbHVlLCB3ZSBzaG91bGQgbm90IGdlbmVyYXRlIHZhbHVlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIERvdWJsZSBmb3JtIGV2ZW4gaWYg
UGhhbnRvbU5ld0FycmF5QnVmZmVyJ3MgaW5kZXhpbmdUeXBlIGlzIEFycmF5V2l0aERvdWJsZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IEpTVmFsdWU6
OmVuY29kZShhcnJheS0+Z2V0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQodmFsdWUpLCBzY3JhdGNoR1BSMyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50MzJfdD4gY3VycmVu
dFN0b3JlT2Zmc2V0IHsgc3RvcmVPZmZzZXQgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudFN0b3JlT2Zmc2V0IC09IChvZmZzZXRDb3VudCAqIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHNpemVvZihSZWdpc3RlcikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LnN0b3JlNjQoc2NyYXRjaEdQUjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIs
IENDYWxsSGVscGVyczo6VGltZXNFaWdodCwgY3VycmVudFN0b3JlT2Zmc2V0KSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5z
dWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oYXJy
YXktPmxlbmd0aCgpKSksIHNjcmF0Y2hHUFIyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodGFyZ2V0LT5vcCgp
ID09IFBoYW50b21DcmVhdGVSZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGFyZ2V0LT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gdGFyZ2V0LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgbnVtQXJndW1lbnRzVG9Db3B5ID0g
cGFyYW1zW3BhcmFtc09mZnNldCArIChpbmRleCsrKV07CisgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRWYWx1ZUZyb21SZXAobnVtQXJndW1lbnRzVG9Db3B5LCBzY3JhdGNoR1BSMyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbG9hZE9mZnNldCA9IChBc3NlbWJseUhlbHBlcnM6OmFy
Z3VtZW50c1N0YXJ0KGlubGluZUNhbGxGcmFtZSkub2Zmc2V0KCkgKyBudW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgc2NyYXRjaEdQUjMpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBs
b29wU3RhcnQgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdWJQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PHNpemVfdD4oMSkpLCBz
Y3JhdGNoR1BSMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDEpKSwgc2NyYXRjaEdQUjIp
OworICAgICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJ
bmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgc2NyYXRjaEdQUjMsIENDYWxsSGVscGVy
czo6VGltZXNFaWdodCwgbG9hZE9mZnNldCksIHNjcmF0Y2hHUFI0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFI0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwg
Q0NhbGxIZWxwZXJzOjpUaW1lc0VpZ2h0LCBzdG9yZU9mZnNldCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNo
R1BSMykubGlua1RvKGxvb3BTdGFydCwgJmppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBk
b25lLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
ICAgICBlbWl0QXJndW1lbnRzRnJvbVJpZ2h0VG9MZWZ0KGFyZ3VtZW50cyk7CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXAgZG9udFRocm93ID0gaml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAg
c2xvd0Nhc2UubGluaygmaml0KTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKTsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhF
eGNlcHRpb25DaGVjayhvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKTsKICAg
ICAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQ
YXRoRGlkTm90VGhyb3cpOwpAQCAtMTA0MjEsOSArMTAzNDcsOSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIzLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUFy
Z3VtZW50U2xvdCgwKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ2FsbExp
bmtJbmZvOjpDYWxsVHlwZSBjYWxsVHlwZTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZU9wID09
IENvbnN0cnVjdFZhcmFyZ3MgfHwgbm9kZU9wID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQor
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbnN0cnVjdFZhcmFyZ3MgfHwgbm9k
ZS0+b3AoKSA9PSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncykKICAgICAgICAgICAgICAgICAgICAg
Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAobm9kZU9wID09IFRhaWxDYWxsVmFyYXJncyB8fCBub2RlT3AgPT0gVGFpbENh
bGxGb3J3YXJkVmFyYXJncykKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09
IFRhaWxDYWxsVmFyYXJncyB8fCBub2RlLT5vcCgpID09IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3Mp
CiAgICAgICAgICAgICAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZh
cmFyZ3M7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlw
ZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CkBAIC0xMDQ1MSw3ICsxMDM3Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKICAgICAgICAgICAgICAg
ICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9j
aygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEdQUkluZm86OnJl
Z1QzKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGpp
dCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCkBA
IC0xMDU1NywxNCArMTA0ODMsNiBAQCBwcml2YXRlOgogICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCk7CiAgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICBWTSogdm0gPSAmdGhpcy0+dm0oKTsKLSAg
ICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7Ci0gICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQzKCkpCi0gICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5j
aGlsZDMoKS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBzZW1hbnRpY05vZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKCk7Ci0gICAgICAgIENhbGxWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmNhbGxW
YXJhcmdzRGF0YSgpOwotICAgICAgICBhdXRvIG5vZGVPcCA9IG5vZGUtPm9wKCk7CiAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwpAQCAtMTA1ODAsNyArMTA0OTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJh
bWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpKTsKIAotICAgICAgICAgICAgICAg
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlu
a0luZm8oc2VtYW50aWNOb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IGppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAgQ2FsbFZhcmFyZ3NEYXRhKiBkYXRhID0g
bm9kZS0+Y2FsbFZhcmFyZ3NEYXRhKCk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmdJ
bmRleCA9IDE7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUdQUiA9IHBhcmFtc1thcmdJ
bmRleCsrXS5ncHIoKTsKQEAgLTEwNjY0LDEzICsxMDU4MywxOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5h
bFN0YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIyKTsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3Qgc2xvd0Nhc2U7CisgICAgICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5jaGlsZDMoKS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSgpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8g
ZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UgbW9kaWZpZXMgdGhlIHN0YWNrIHBvaW50ZXIg
aWYgaXQgc3VjY2VlZHMuCiAgICAgICAgICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFt
ZUZhc3RDYXNlKCp2bSwgaml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIy
LCBzY3JhdGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwg
c2xvd0Nhc2UpOwogCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25l
ID0gaml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsK
LSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
blRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnNl
dHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFy
Z3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52
bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNl
X2Nhc3Q8dm9pZCgqKSgpPihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7
CiAgICAgICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93
aW5nUGF0aERpZE5vdFRocm93KTsKQEAgLTEwNjc4LDcgKzEwNjAyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgc2NyYXRj
aEdQUjEpOwotICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbiksIGFyZ3VtZW50c0dQUiwgc2NyYXRjaEdQUjEsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25TaXpl
RnJhbWVGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSwgYXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKICAgICAgICAgICAgICAg
ICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCgqKSgpPihvcGVy
YXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKSk7CiAKQEAgLTEwNjg3LDcgKzEwNjExLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzTGF0ZVJlcC5lbWl0UmVzdG9yZShq
aXQsIGFyZ3VtZW50c0dQUik7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJh
bWUoaml0LCBzY3JhdGNoR1BSMSwgZmFsc2UsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMik7CiAg
ICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
LW1pbmltdW1KU0NhbGxBcmVhU2l6ZSksIHNjcmF0Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKT4oaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwgc2NyYXRjaEdQUjIsIGFyZ3VtZW50
c0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQp
LCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHNjcmF0Y2hHUFIyLCBhcmd1bWVu
dHNHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0
KSwgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24oaml0LnZtKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKGJpdHdpc2VfY2FzdDx2b2lkKCopKCk+KG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKSk7
CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMTA3MDQsOSArMTA2MjgsOSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHRoaXNHUFIsIENDYWxsSGVscGVyczo6Y2FsbGVl
QXJndW1lbnRTbG90KDApKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBDYWxs
TGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlOwotICAgICAgICAgICAgICAgIGlmIChub2RlT3Ag
PT0gQ29uc3RydWN0VmFyYXJncyB8fCBub2RlT3AgPT0gQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3Mp
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0VmFyYXJncyB8fCBu
b2RlLT5vcCgpID09IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKQogICAgICAgICAgICAgICAgICAg
ICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0VmFyYXJnczsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChub2RlT3AgPT0gVGFpbENhbGxWYXJhcmdzIHx8IG5vZGVPcCA9PSBUYWls
Q2FsbEZvcndhcmRWYXJhcmdzKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkg
PT0gVGFpbENhbGxWYXJhcmdzIHx8IG5vZGUtPm9wKCkgPT0gVGFpbENhbGxGb3J3YXJkVmFyYXJn
cykKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxs
VmFyYXJnczsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNhbGxU
eXBlID0gQ2FsbExpbmtJbmZvOjpDYWxsVmFyYXJnczsKQEAgLTEwNzMyLDcgKzEwNjU2LDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAg
ICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJs
b2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgR1BSSW5mbzo6
cmVnVDMpOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKCp2bSwg
aml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkK
QEAgLTEwODA2LDggKzEwNzMwLDYgQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpOwogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKLSAg
ICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50
aWM7Ci0gICAgICAgIGF1dG8gZWNtYU1vZGUgPSBub2RlLT5lY21hTW9kZSgpLnZhbHVlKCk7CiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cigKICAgICAgICAgICAgIFs9LCAmdm1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKQEAgLTEwODIyLDcgKzEwNzQ0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2Fs
bFNpdGVJbmRleC5iaXRzKCkpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRh
Z0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSBqaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbyhzZW1hbnRp
Y05vZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gaml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8obm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86
OkNhbGwsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CkBAIC0xMDgzNCw3ICsxMDc1Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVxdWlyZWRCeXRlcyA9IHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSArIHNpemVvZihDYWxsRnJhbWUqKSAqIDI7CiAgICAgICAgICAgICAg
ICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGVjbWFNb2RlKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9iYWxPYmplY3QsIEdQUkluZm86
OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ2FsbEV2
YWwpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKQEAgLTEyMzgzLDEy
ICsxMjMwNSwxMiBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25z
KHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAg
ICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljOworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAg
ICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21t
b24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgoc2VtYW50aWNOb2RlT3JpZ2lu
KTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+
aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJl
Y3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2No
ZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKQEAgLTEyNDA2LDEyICsxMjMy
OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0g
WyZdIHsKICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5k
OjpOb3JtYWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWls
YWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpKTsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZhbEdl
bmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJs
b2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2Fs
bFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgYmFzZSwgc3Vic2NyaXB0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUikpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0x
MjQyOSwxNiArMTIzNTEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50
aWNOb2RlT3JpZ2luKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVy
YXRvci0+c3R1YkluZm8oKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Us
IHN1YnNjcmlwdCkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgcmV0dXJuR1BSLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBiYXNlLCBzdWJz
Y3JpcHQpLmNhbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyNjY1LDcgKzEy
NTg3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKLSAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVP
cmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTI2ODksMTQgKzEy
NjEwLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
aml0LmJyYW5jaElmTm90Q2VsbChwcm90b3R5cGVHUFIpKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQotICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxs
U2l0ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
LT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAg
ICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24o
cGFyYW1zKS0+anVtcHMoaml0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPjo6Y3JlYXRlKAotICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9kZU9yaWdpbiwgY2Fs
bFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCByZXN1bHRHUFIsIHZhbHVlR1BSLCBwcm90b3R5cGVH
UFIsIHNjcmF0Y2hHUFIsCiAgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2gyR1BSLCBwcm90b3R5
cGVJc09iamVjdCk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRo
KGppdCk7CkBAIC0xMjcxMSw5ICsxMjYzMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdpbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVy
YXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVuY3Rpb24sIHJlc3VsdEdQUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1h
bnRpY05vZGVPcmlnaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+
c3R1YkluZm8oKSksIHZhbHVlR1BSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rv
dHlwZUdQUikuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5r
VG8oZG9uZSwgJmppdCk7CkBAIC0xNDE3MSwxMyArMTQwOTIsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAg
ICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKLSAgICAgICAgQ29kZU9yaWdpbiBzZW1h
bnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogCiAgICAg
ICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAgICAgICAgICAg
ICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNp
dGVJbmRleChzZW1hbnRpY05vZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+
aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJl
Y3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KICAgICAgICAgICAgICAgICBCb3g8
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CkBAIC0xNDE4OSw3ICsxNDEwOSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4
aXRDcmVhdGlvbkZvclVud2luZChwYXJhbXMsIGNhbGxTaXRlSW5kZXgpOwogCiAgICAgICAgICAg
ICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgK
LSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBzZW1hbnRpY05vZGVPcmlnaW4s
IGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBw
YXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFy
YW1zWzFdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBd
LmdwcigpKSwgdHlwZSk7CiAKQEAgLTE0MjA1LDkgKzE0MTI1LDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhCZWdp
biA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
YWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRp
Y05vZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3B0aW1pemF0aW9uRnVu
Y3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5n
cHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTE0MjQxLDEzICsxNDE2MSwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25z
KHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwotICAg
ICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
YzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CiAKICAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5k
ZXggPQotICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmln
aW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KHNlbWFudGljTm9kZU9yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1
ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Igb3BlcmF0aW9uIGNhbGxzLgog
ICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0K
QEAgLTE0MjU5LDcgKzE0MTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBleGNlcHRp
b25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5kKHBhcmFtcywgY2FsbFNpdGVJ
bmRleCk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRHZXRCeUlk
V2l0aFRoaXNHZW5lcmF0b3I+OjpjcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgc2VtYW50aWNOb2RlT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJ
bmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEpTVmFsdWVSZWdzKHBhcmFtc1sy
XS5ncHIoKSkpOwogCkBAIC0xNDI3NSw5ICsxNDE5NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBq
aXQubGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBz
bG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2Rl
T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9u
LCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoaWRlbnRpZmllci5yYXdCaXRzKCkpKS5jYWxsKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKQEAgLTE0Njcy
LDcgKzE0NTkxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3Rh
dGU7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIE5vZGVUeXBlIG9wID0g
bV9ub2RlLT5vcCgpOwotICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1f
c3RhdGUuZm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogCiAgICAgICAgIGF1dG8g
bm9kZUluZGV4ID0gbV9ub2RlSW5kZXhJbkdyYXBoOwpAQCAtMTQ2OTQsNyArMTQ2MTIsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICAgICAgUmVmUHRyPE9TUkV4aXRIYW5kbGU+IGhhbmRsZSA9
IGV4aXREZXNjcmlwdG9yLT5lbWl0T1NSRXhpdExhdGVyKCpzdGF0ZSwgQmFkVHlwZSwgb3JpZ2lu
LCBwYXJhbXMsIG5vZGVJbmRleCwgb3NyRXhpdEFyZ3VtZW50T2Zmc2V0KTsKIAotICAgICAgICAg
ICAgICAgIFNuaXBwZXRQYXJhbXMgZG9tSklUUGFyYW1zKCpzdGF0ZSwgcGFyYW1zLCBzZW1hbnRp
Y05vZGVPcmlnaW4sIG51bGxwdHIsIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwg
V1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICAgICAgICAgICAgICBTbmlwcGV0UGFyYW1zIGRvbUpJ
VFBhcmFtcygqc3RhdGUsIHBhcmFtcywgbm9kZSwgbnVsbHB0ciwgV1RGTW92ZShyZWdzKSwgV1RG
TW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzID0gZG9tSklULT5nZW5lcmF0b3IoKS0+
cnVuKGppdCwgZG9tSklUUGFyYW1zKTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IG5vdEpTQ2FzdEZhaWx1cmVDYXNlczsKICAgICAgICAgICAgICAgICBpZiAob3AgPT0g
Q2hlY2tOb3RKU0Nhc3QpIHsKQEAgLTE0ODE0LDcgKzE0NzMyLDYgQEAgcHJpdmF0ZToKIAogICAg
ICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSogbm9kZSA9IG1f
bm9kZTsKLSAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmln
aW4uc2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAg
ICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTQ4MzYsNyArMTQ3NTMsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMg
PSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGpp
dCk7CiAKLSAgICAgICAgICAgICAgICBTbmlwcGV0UGFyYW1zIGRvbUpJVFBhcmFtcygqc3RhdGUs
IHBhcmFtcywgc2VtYW50aWNOb2RlT3JpZ2luLCBleGNlcHRpb25zLCBXVEZNb3ZlKHJlZ3MpLCBX
VEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAgICAgICAg
U25pcHBldFBhcmFtcyBkb21KSVRQYXJhbXMoKnN0YXRlLCBwYXJhbXMsIG5vZGUsIGV4Y2VwdGlv
bnMsIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gp
KTsKICAgICAgICAgICAgICAgICBkb21KSVQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBkb21KSVRQ
YXJhbXMpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBF
ZmZlY3RzOjpmb3JDYWxsKCk7CkBAIC0xNTU5Myw3ICsxNTUxMCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVw
OjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0
ZTsKLSAgICAgICAgQ29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4u
c2VtYW50aWM7CiAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAg
IFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOwpAQCAtMTU2MTksMTYgKzE1NTM1LDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5zbG93UGF0aEp1bXBMaXN0KCkubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGlj
Tm9kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNsb3dQYXRo
RnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zWzFdLmdwcigpLCBwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgc2VtYW50aWNOb2RlT3JpZ2luLAot
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgc2xvd1BhdGhGdW5jdGlv
biwgcGFyYW1zWzBdLmdwcigpLCBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1h
bnRpY05vZGVPcmlnaW4pLCBwYXJhbXNbMV0uZ3ByKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIHNs
b3dQYXRoRnVuY3Rpb24sIHBhcmFtc1swXS5ncHIoKSwgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgcGFyYW1zWzFdLmdwcigpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9KTsKQEAgLTE1NjYxLDcgKzE1NTc3LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNv
bWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwot
ICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7CkBAIC0xNTY4Myw5ICsxNTU5OCw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3It
PnNsb3dQYXRoSnVtcExpc3QoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIHNlbWFudGljTm9kZU9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdw
cigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTE1NzE5LDcgKzE1NjM0LDYgQEAgcHJp
dmF0ZToKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3Jh
dGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9
IHsgVmFsdWVSZXA6OlNvbWVFYXJseVJlZ2lzdGVyIH07CiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9
ICZtX2Z0bFN0YXRlOwotICAgICAgICBDb2RlT3JpZ2luIHNlbWFudGljTm9kZU9yaWdpbiA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xNTc0Nyw5ICsxNTY2MSw5IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvcGVyYXRpb25WYWx1ZUJpdFJT
aGlmdCA6IG9wZXJhdGlvblZhbHVlQml0VVJTaGlmdDsKICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IHNlbWFudGljTm9kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBzbG93UGF0
aEZ1bmN0aW9uLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtc1sxXS5ncHIoKSwgcGFyYW1zWzJdLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwogICAgICAgICAgICAgICAgICAgICB9KTsK
QEAgLTIwMDkyLDcgKzIwMDA2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gYmxvY2stPmluZGV4OwogICAgICAgICB1bnNpZ25lZCBub2RlSW5kZXggPSBub2Rl
ID8gbm9kZS0+aW5kZXgoKSA6IFVJTlRfTUFYOwogI2lmICFBU1NFUlRfRU5BQkxFRAotICAgICAg
ICBhdXRvIG5vZGVPcCA9IG5vZGUgPyBub2RlLT5vcCgpIDogTGFzdE5vZGVUeXBlOwogICAgICAg
ICBtX291dC5wYXRjaHBvaW50KFZvaWQpLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAg
ICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOwpAQCAtMjAxMDAsNyArMjAwMTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJsb2NrSW5kZXgpLCBHUFJJbmZv
OjpyZWdUMCk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobm9kZUluZGV4KSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGlmIChu
b2RlKQotICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihub2RlT3ApLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAgICAgICAgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPm9wKCkpLCBHUFJJbmZvOjpyZWdU
Mik7CiAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihGVExDcmFzaCk7CiAgICAg
ICAgICAgICB9KTsKICNlbHNlIC8vIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmNwcAppbmRleCBmNjc1YzE5ZjRhYjJjNTNhMjZh
MWMyOWZmNjI1YjllNWE3MzcwMDVmLi42ZDY2ODg5ZWU1MjMxYTU2M2M5YjdlZWE5ZjRjZDQ0Njc5
ZjAzYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQ
YXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU25pcHBldFBhcmFt
cy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwg
dHlwZW5hbWUgQXJndW1lbnRzLCBzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+Ci1zdGF0aWMgdm9p
ZCBkaXNwYXRjaChDQ2FsbEhlbHBlcnMmIGppdCwgRlRMOjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgQ29kZU9yaWdpbiBzZW1hbnRpY05v
ZGVPcmlnaW4sIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zLCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZyb20sIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzIGFyZ3VtZW50cywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVu
dHNJbmRleC4uLj4pCitzdGF0aWMgdm9pZCBkaXNwYXRjaChDQ2FsbEhlbHBlcnMmIGppdCwgRlRM
OjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cywgREZHOjpOb2RlKiBub2RlLCBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9u
cywgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwg
UmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cyBhcmd1bWVudHMsIHN0ZDo6aW5kZXhfc2VxdWVu
Y2U8QXJndW1lbnRzSW5kZXguLi4+KQogewogICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9
IGppdC5sYWJlbCgpOwogICAgIHBhcmFtcy5hZGRMYXRlUGF0aChbPV0gKENDYWxsSGVscGVycyYg
aml0KSB7CkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoKENDYWxsSGVscGVy
cyYgaml0LCBGVEw6OlN0YXRlKiBzdGF0ZSwgY29uc3QgQjM6OlN0YWNrbWFwR2VuCiAKICAgICAg
ICAgZnJvbS5saW5rKCZqaXQpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAg
KnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVP
cmlnaW4sCisgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0
KCksIG9wZXJhdGlvbiwgZXh0cmFjdFJlc3VsdChyZXN1bHQpLCBzdGQ6OmdldDxBcmd1bWVudHNJ
bmRleD4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwogICAgIH0pOwpAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaChDQ2Fs
bEhlbHBlcnMmIGppdCwgRlRMOjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbgog
I2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCAuLi4pIFwKICAgICB2b2lkIFNuaXBwZXRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwo
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9u
VHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19f
PiBhcmdzKSBcCiAgICAgeyBcCi0gICAgICAgIGRpc3BhdGNoKGppdCwgJm1fc3RhdGUsIG1fcGFy
YW1zLCBtX3NlbWFudGljTm9kZU9yaWdpbiwgbV9leGNlcHRpb25zLCBmcm9tLCBvcGVyYXRpb24s
IHJlc3VsdCwgYXJncywgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxk
ZWNsdHlwZShhcmdzKT46OnZhbHVlPigpKTsgXAorICAgICAgICBkaXNwYXRjaChqaXQsICZtX3N0
YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9wZXJhdGlvbiwgcmVz
dWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPGRlY2x0
eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NB
TExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTbmlwcGV0UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaAppbmRleCA2MDBiZWY2MTQwMTdkYjczNzM2YzA0ZTlmOTQ0
Yzc0MWJlZjJmNzQ4Li4xYWYyYmQzOGY0ZGI2ODY0MTY1MGQwMTcxZDA1Yjk4Y2E0ZTNmNGRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNuaXBwZXRQYXJhbXMuaApAQCAtMzgs
MTEgKzM4LDExIEBAIGNsYXNzIFN0YXRlOwogCiBjbGFzcyBTbmlwcGV0UGFyYW1zIGZpbmFsIDog
cHVibGljIEpTQzo6U25pcHBldFBhcmFtcyB7CiBwdWJsaWM6Ci0gICAgU25pcHBldFBhcmFtcyhT
dGF0ZSYgc3RhdGUsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywg
Q29kZU9yaWdpbiBzZW1hbnRpY05vZGVPcmlnaW4sIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
PiBleGNlcHRpb25zLCBWZWN0b3I8VmFsdWU+JiYgcmVncywgVmVjdG9yPEdQUlJlZz4mJiBncFNj
cmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiYgZnBTY3JhdGNoKQorICAgIFNuaXBwZXRQYXJhbXMoU3Rh
dGUmIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMsIERG
Rzo6Tm9kZSogbm9kZSwgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMsIFZl
Y3RvcjxWYWx1ZT4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQ
UlJlZz4mJiBmcFNjcmF0Y2gpCiAgICAgICAgIDogSlNDOjpTbmlwcGV0UGFyYW1zKHN0YXRlLnZt
KCksIFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gp
KQogICAgICAgICAsIG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9wYXJhbXMocGFyYW1zKQot
ICAgICAgICAsIG1fc2VtYW50aWNOb2RlT3JpZ2luKHNlbWFudGljTm9kZU9yaWdpbikKKyAgICAg
ICAgLCBtX25vZGUobm9kZSkKICAgICAgICAgLCBtX2V4Y2VwdGlvbnMoZXhjZXB0aW9ucykKICAg
ICB7CiAgICAgfQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgU3RhdGUmIG1fc3Rh
dGU7CiAgICAgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgbV9wYXJhbXM7Ci0g
ICAgQ29kZU9yaWdpbiBtX3NlbWFudGljTm9kZU9yaWdpbjsKKyAgICBERkc6Ok5vZGUqIG1fbm9k
ZTsKICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gbV9leGNlcHRpb25zOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCA0NTFkNThhZGUwMGNiOWNl
MDA1MWY0NTU2NjRmMDY2ZjVmYmUwZGFjLi4wMWJkZWVjOWZkMzc5NmY0ZTQ3ZGJhZTcxMjBkOWU2
ZGFkZTZkYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtNjMs
OSArNjMsNiBAQCBTdGF0ZTo6U3RhdGUoR3JhcGgmIGdyYXBoKQogCiAgICAgcHJvYyA9IG1ha2VV
bmlxdWU8UHJvY2VkdXJlPigpOwogCi0gICAgaWYgKGdyYXBoLm1fdm0uc2hvdWxkQnVpbGRlclBD
VG9Db2RlT3JpZ2luTWFwcGluZygpKQotICAgICAgICBwcm9jLT5zZXROZWVkc1BDVG9PcmlnaW5N
YXAoKTsKLQogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0
cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewogICAgICAgICAgICAgb3V0LnByaW50KGJp
dHdpc2VfY2FzdDxOb2RlKj4ob3JpZ2luLmRhdGEoKSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>