<?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>229497</bug_id>
          
          <creation_ts>2021-08-25 08:19:59 -0700</creation_ts>
          <short_desc>[GStreamer] Track handling refactoring</short_desc>
          <delta_ts>2021-09-06 16:24:01 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229973</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>crzwdjk</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1787172</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-25 08:19:59 -0700</bug_when>
    <thetext>Let&apos;s try to re-land the changes initially reviewed in bug 229123.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787175</commentid>
    <comment_count>1</comment_count>
      <attachid>436392</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-08-25 08:38:44 -0700</bug_when>
    <thetext>Created attachment 436392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788368</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-29 02:50:35 -0700</bug_when>
    <thetext>Committed r281741 (241083@main): &lt;https://commits.webkit.org/241083@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436392.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788369</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-29 02:51:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/82490003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789444</commentid>
    <comment_count>4</comment_count>
    <who name="Arcady Goldmints-Orlov">crzwdjk</who>
    <bug_when>2021-09-01 13:20:18 -0700</bug_when>
    <thetext>It appears that this has made the test media/track/in-band/track-in-band-kate-ogg-cues-added-once.html considerably more likely to fail (though admittedly it was somewhat flaky even before this change).

When it fails it does so like this:

--- /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/media/track/in-band/track-in-band-kate-ogg-cues-added-once-expected.txt
+++ /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/media/track/in-band/track-in-band-kate-ogg-cues-added-once-actual.txt
@@ -6,13 +6,13 @@
 ** Setting track 1 to showing
 RUN(inbandTrack1.mode = &apos;showing&apos;)
 RUN(video.play())
-EXPECTED (inbandTrack1.cues.length &gt; &apos;0&apos;) OK
+EXPECTED (inbandTrack1.cues.length &gt; &apos;0&apos;), OBSERVED &apos;0&apos; FAIL
 RUN(video.pause())
 RUN(video.currentTime = 0)
 RUN(video.play())
 
 EVENT(seeked)
-EXPECTED (inbandTrack1.cues.length &gt; &apos;0&apos;) OK
+EXPECTED (inbandTrack1.cues.length &gt; &apos;0&apos;), OBSERVED &apos;0&apos; FAIL
 RUN(video.pause())
 Test all cues are equal OK
 END OF TEST</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789458</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-09-01 13:26:50 -0700</bug_when>
    <thetext>Indeed... I&apos;ll pile this somewhere on the ever-to-big TODO :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436392</attachid>
            <date>2021-08-25 08:38:44 -0700</date>
            <delta_ts>2021-08-29 02:50:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229497-20210825083843.patch</filename>
            <type>text/plain</type>
            <size>40150</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjcwMmZmZWUzYjg1MjUx
ZmQ1OTZhMGYyOTA1MTZiNjMxNWFiOTgxYy4uYjVjOTQ5OTgwZWQ3ZDEyODVjMjlmZDBiNGJjNmFk
MTI0ZDE3MjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA4LTI1ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBUcmFjayBoYW5kbGluZyByZWZhY3RvcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgY2xhc3Mg
bm93IGZhY3RvcnMgbW9zdCBvZiB0aGUgY29tbW9uIGNvZGUgdXNlZCBieSBpdHMKKyAgICAgICAg
c3ViLWNsYXNzZXMuIFRoZSBjb2RlIHN0eWxlIHdhcyBtb2Rlcm5pc2VkLCBzb21lIE1TRS1yZWxh
dGVkIGRlYWQgY29kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICBwbGF5ZXIuIE1vcmUg
Y291bGQgYmUgZG9uZSBpbiB0aGUgTVNFIEFwcGVuZFBpcGVsaW5lIGJ5IG1ha2luZyBpdCByZWx5
IG9uIHBhcnNlYmluLCBidXQKKyAgICAgICAgdGhhdCdzIGFub3RoZXIgcXVlc3QuIFRoZSB0cmFj
a3MgY3JlYXRlZCBieSB0aGUgQXBwZW5kUGlwZWxpbmUgd2VyZSB0cmlnZ2VyaW5nIHRyYWNrIElE
CisgICAgICAgIG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgcGxheWVyIGFuZCB0aG9zZSB0cmFja3Ms
IHNvIGEgbmV3IGZsYWcgd2FzIGFkZGVkIGluIHRoZSBjb25zdHJ1Y3RvcgorICAgICAgICBvZiB0
aG9zZSB0byBwcmV2ZW50IHN0cmVhbS1zdGFydCBldmVudCBoYW5kbGluZy4gSWRlYWxseSB0aGF0
IGNvZGUgc2hvdWxkIHJlbHkgb24gR3N0U3RyZWFtLAorICAgICAgICB0aGF0IHdvdWxkIHJlbW92
ZSB0aGUgbmVlZCBvZiB0aGF0IGZsYWcuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGlu
ZyBtZWRpYSB0ZXN0cyBjb3ZlciB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFu
ZGxlVGV4dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnVwZGF0ZVRyYWNrcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2VuZXJhdGVVbmlxdWVQbGF5YmluMlN0cmVhbUlEKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6c2V0UGFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXI6OnRhZ3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnN0cmVhbUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpzZXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpzdHJlYW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Vmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwZW5kUGlwZWxpbmU6Om1ha2VXZWJLaXRUcmFjayk6CisKIDIwMjEtMDgtMjUgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5
cHRvIHVzZXMgZGVwcmVjYXRlZCBDQ0tleURlcml2YXRpb25ITWFjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2ZDNmNDI4MDFmMzI0MmM3Y2Ni
YzVlMmI1NjBmMDM0ZTVlNDJjOWY0Li43ODQ3MDVhNjhlMGZkOWQxNmNhZGM4Mzg3ZjkzMmY2Mzhh
NTIxMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTMwLDMxICszMCwyNiBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmgiCiAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCIKLSNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBh
ZD4gcGFkKQotICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFk
KQorQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIHVuc2lnbmVkIGlu
ZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiBwYWQsIGJvb2wgc2hvdWxkSGFuZGxlU3RyZWFtU3RhcnRF
dmVudCkKKyAgICA6IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcjo6VHJhY2tUeXBlOjpBdWRpbywgdGhpcywgaW5kZXgsIFdURk1vdmUocGFkKSwgc2hv
dWxkSGFuZGxlU3RyZWFtU3RhcnRFdmVudCkKICAgICAsIG1fcGxheWVyKHBsYXllcikKIHsKLSAg
ICAvLyBGSVhNRTogR2V0IGEgcmVhbCBJRCBmcm9tIHRoZSB0a2hkIGF0b20uCi0gICAgbV9pZCA9
ICJBIiArIFN0cmluZzo6bnVtYmVyKGluZGV4KTsKIH0KIAotQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiBzdHJl
YW0pCi0gICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKHRoaXMsIGluZGV4LCBzdHJlYW0p
CitBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIo
V2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBsYXllciwgdW5zaWduZWQgaW5k
ZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiYmIHN0cmVhbSkKKyAgICA6IFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlOjpBdWRpbywgdGhp
cywgaW5kZXgsIFdURk1vdmUoc3RyZWFtKSkKICAgICAsIG1fcGxheWVyKHBsYXllcikKIHsKLSAg
ICBnaW50IGtpbmQ7CisgICAgaW50IGtpbmQ7CiAgICAgYXV0byB0YWdzID0gYWRvcHRHUmVmKGdz
dF9zdHJlYW1fZ2V0X3RhZ3MobV9zdHJlYW0uZ2V0KCkpKTsKIAotICAgIGlmICh0YWdzICYmIGdz
dF90YWdfbGlzdF9nZXRfaW50KHRhZ3MuZ2V0KCksICJ3ZWJraXQtbWVkaWEtc3RyZWFtLWtpbmQi
LCAma2luZCkgJiYga2luZCA9PSBzdGF0aWNfY2FzdDxpbnQ+KFZpZGVvVHJhY2tQcml2YXRlOjpL
aW5kOjpNYWluKSkgewotICAgICAgICBHc3RTdHJlYW1GbGFncyBzdHJlYW1GbGFncyA9IGdzdF9z
dHJlYW1fZ2V0X3N0cmVhbV9mbGFncyhzdHJlYW0uZ2V0KCkpOwotICAgICAgICBnc3Rfc3RyZWFt
X3NldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RTdHJlYW1GbGFn
cz4oc3RyZWFtRmxhZ3MgfCBHU1RfU1RSRUFNX0ZMQUdfU0VMRUNUKSk7CisgICAgaWYgKHRhZ3Mg
JiYgZ3N0X3RhZ19saXN0X2dldF9pbnQodGFncy5nZXQoKSwgIndlYmtpdC1tZWRpYS1zdHJlYW0t
a2luZCIsICZraW5kKSAmJiBraW5kID09IHN0YXRpY19jYXN0PGludD4oQXVkaW9UcmFja1ByaXZh
dGU6OktpbmQ6Ok1haW4pKSB7CisgICAgICAgIGF1dG8gc3RyZWFtRmxhZ3MgPSBnc3Rfc3RyZWFt
X2dldF9zdHJlYW1fZmxhZ3MobV9zdHJlYW0uZ2V0KCkpOworICAgICAgICBnc3Rfc3RyZWFtX3Nl
dF9zdHJlYW1fZmxhZ3MobV9zdHJlYW0uZ2V0KCksIHN0YXRpY19jYXN0PEdzdFN0cmVhbUZsYWdz
PihzdHJlYW1GbGFncyB8IEdTVF9TVFJFQU1fRkxBR19TRUxFQ1QpKTsKICAgICB9Ci0KLSAgICBt
X2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKHN0cmVhbS5nZXQoKSk7CiB9CiAKIEF1ZGlv
VHJhY2tQcml2YXRlOjpLaW5kIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpraW5kKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZmU5
NzlmNDM4MDdkOTZlNTJkOGNkMjM2YTNlNzYyN2MxZTZlYWM4MC4uZTUzNTBkNzEzNzhiYzUzMTNl
MWVmYTI4ZDc2MzRhYTJlOTczY2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmgKQEAgLTI4LDkgKzI4LDggQEAKICNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUg
IkdTdHJlYW1lckNvbW1vbi5oIgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
aCIKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwzNCArMzcsMzMgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOwogCiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBn
aW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcj4gcGxheWVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+JiYgcGFkLCBib29s
IHNob3VsZEhhbmRsZVN0cmVhbVN0YXJ0RXZlbnQgPSB0cnVlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWVyLCBpbmRl
eCwgcGFkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIFdURk1vdmUocGFkKSwgc2hvdWxkSGFuZGxlU3RyZWFt
U3RhcnRFdmVudCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxh
eWVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQorICAgIHN0YXRpYyBS
ZWY8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJl
YW0+JiYgc3RyZWFtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWVyLCBpbmRleCwgc3RyZWFtKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5k
ZXgsIFdURk1vdmUoc3RyZWFtKSkpOwogICAgIH0KIAogICAgIEtpbmQga2luZCgpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25u
ZWN0KCkgZmluYWw7CiAKLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IHNldEVuYWJsZWQoZW5hYmxl
ZCk7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXRBY3Rp
dmUoYm9vbCBlbmFibGVkKSBmaW5hbCB7IHNldEVuYWJsZWQoZW5hYmxlZCk7IH0KIAotICAgIGlu
dCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIGlu
dCB0cmFja0luZGV4KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmRleDsgfQogCi0gICAgQXRv
bVN0cmluZyBpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICBBdG9tU3Ry
aW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIEF0b21T
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhbmd1YWdlOyB9Cisg
ICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9t
U3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21T
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhbmd1YWdlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI+LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4pOwotICAgIEF1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyPiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+KTsKKyAgICBBdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIHVuc2ln
bmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiwgYm9vbCBzaG91bGRIYW5kbGVTdHJlYW1TdGFy
dEV2ZW50KTsKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcj4sIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4m
Jik7CiAKLSAgICBBdG9tU3RyaW5nIG1faWQ7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI+IG1fcGxheWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGRmZmVmYTI3NDg3NjFiNWI2Njc1
N2RmNDJiYTFhNjUxMDdjZTBmZDAuLjdiMjAyNzk1ZWQxNWZmMjQyODg5ZDhkODFmYzYyMWU4YmFk
YzI0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTI5LDU4ICsyOSwzMyBAQAogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oIgogCi0jaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCi0j
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8
Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIEdTVF9ERUJVR19DQVRFR09SWV9F
WFRFUk4od2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVM
VCB3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcihnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQorSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcih1bnNpZ25lZCBp
bmRleCwgR1JlZlB0cjxHc3RQYWQ+JiYgcGFkLCBib29sIHNob3VsZEhhbmRsZVN0cmVhbVN0YXJ0
RXZlbnQpCiAgICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKEN1ZUZvcm1hdDo6V2ViVlRUKQot
ICAgICwgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgcGFkKQorICAgICwg
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFj
a1R5cGU6OlRleHQsIHRoaXMsIGluZGV4LCBXVEZNb3ZlKHBhZCksIHNob3VsZEhhbmRsZVN0cmVh
bVN0YXJ0RXZlbnQpCiAgICAgLCBtX2tpbmQoS2luZDo6U3VidGl0bGVzKQogewotICAgIG1faWQg
PSAiVCIgKyBTdHJpbmc6Om51bWJlcihpbmRleCk7Ci0gICAgbV9ldmVudFByb2JlID0gZ3N0X3Bh
ZF9hZGRfcHJvYmUobV9wYWQuZ2V0KCksIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RS
RUFNLCBbXSAoR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0
YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewotICAgICAgICBhdXRvKiB0cmFjayA9IHN0YXRpY19j
YXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIqPih1c2VyRGF0YSk7Ci0gICAgICAg
IHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUoZ3N0X3BhZF9wcm9iZV9pbmZvX2dldF9ldmVudChpbmZv
KSkpIHsKLSAgICAgICAgY2FzZSBHU1RfRVZFTlRfU1RSRUFNX1NUQVJUOgotICAgICAgICAgICAg
dHJhY2stPnN0cmVhbUNoYW5nZWQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEdTVF9Q
QURfUFJPQkVfT0s7Ci0gICAgfSwgdGhpcywgbnVsbHB0cik7Ci0KLSAgICBub3RpZnlUcmFja09m
U3RyZWFtQ2hhbmdlZCgpOwogfQogCi1JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0U3Ry
ZWFtPiBzdHJlYW0pCitJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4m
JiBzdHJlYW0pCiAgICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKEN1ZUZvcm1hdDo6V2ViVlRU
KQotICAgICwgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcih0aGlzLCBpbmRleCwgc3RyZWFtKQor
ICAgICwgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
OjpUcmFja1R5cGU6OlRleHQsIHRoaXMsIGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiB7Ci0gICAg
bV9zdHJlYW1JZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChzdHJlYW0uZ2V0KCkpOwotICAg
IEdTVF9JTkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9p
bmRleCwgbV9zdHJlYW1JZC51dGY4KCkuZGF0YSgpKTsKKyAgICBtX2lkID0gZ3N0X3N0cmVhbV9n
ZXRfc3RyZWFtX2lkKG1fc3RyZWFtLmdldCgpKTsKKyAgICBHU1RfSU5GTygiVHJhY2sgJWQgZ290
IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1faWQuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1RfUFRSX0ZPUk1BVCwg
c3RyZWFtLmdldCgpKTsKLSAgICBhdXRvIGNhcHMgPSBhZG9wdEdSZWYoZ3N0X3N0cmVhbV9nZXRf
Y2FwcyhzdHJlYW0uZ2V0KCkpKTsKKyAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1RfUFRSX0ZP
Uk1BVCwgbV9zdHJlYW0uZ2V0KCkpOworICAgIGF1dG8gY2FwcyA9IGFkb3B0R1JlZihnc3Rfc3Ry
ZWFtX2dldF9jYXBzKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgY29uc3QgY2hhciogbWVkaWFUeXBl
ID0gY2Fwc01lZGlhVHlwZShjYXBzLmdldCgpKTsKICAgICBtX2tpbmQgPSBnX3N0cl9oYXNfcHJl
Zml4KG1lZGlhVHlwZSwgImNsb3NlZGNhcHRpb24vIikgPyBLaW5kOjpDYXB0aW9ucyA6IEtpbmQ6
OlN1YnRpdGxlczsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpk
aXNjb25uZWN0KCkKLXsKLSAgICBpZiAobV9wYWQpCi0gICAgICAgIGdzdF9wYWRfcmVtb3ZlX3By
b2JlKG1fcGFkLmdldCgpLCBtX2V2ZW50UHJvYmUpOwotCi0gICAgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcjo6ZGlzY29ubmVjdCgpOwotfQotCiB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogewogICAg
IHsKQEAgLTk0LDE0ICs2OSw2IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
cjo6aGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGUpCiAgICAgfSk7CiB9CiAK
LXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCgpCi17
Ci0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7Ci0gICAgbV9ub3RpZmllci0+bm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRpb246
OlN0cmVhbUNoYW5nZWQsIFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMt
Pm5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCiB7CiAgICAg
VmVjdG9yPEdSZWZQdHI8R3N0U2FtcGxlPiA+IHNhbXBsZXM7CkBAIC0xMzAsMTkgKzk3LDYgQEAg
dm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxl
KCkKICAgICB9CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90
aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKQotewotICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50
ID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3BhZC5nZXQoKSwKLSAgICAg
ICAgR1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwotICAgIGlmICghZXZlbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNvbnN0IGdjaGFyKiBzdHJlYW1JZDsKLSAgICBnc3RfZXZlbnRfcGFy
c2Vfc3RyZWFtX3N0YXJ0KGV2ZW50LmdldCgpLCAmc3RyZWFtSWQpOwotICAgIEdTVF9JTkZPKCJU
cmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwgc3RyZWFt
SWQpOwotICAgIG1fc3RyZWFtSWQgPSBzdHJlYW1JZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMjJl
ZGM5YjE5ZmVhYjBhNzdiZTU4NGYxNDk3OTJkMDA5NmYzZjVkOS4uZmQ5N2Y4YjUzNTUwNDkwNTQy
ZDQzMTc5MmNkNzIyNTdmYzI3Y2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0yNywxMSArMjcsOSBAQAogCiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCi0jaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgi
CiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuaCIKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM5LDQ5ICszNywzOCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7
CiAKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIgOiBwdWJsaWMgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gY3Jl
YXRlKGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAgc3RhdGljIFJlZjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUodW5zaWduZWQgaW5kZXgsIEdSZWZQ
dHI8R3N0UGFkPiYmIHBhZCwgYm9vbCBzaG91bGRIYW5kbGVTdHJlYW1TdGFydEV2ZW50ID0gdHJ1
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXIoaW5kZXgsIHBhZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGluZGV4LCBXVEZNb3ZlKHBhZCksIHNo
b3VsZEhhbmRsZVN0cmVhbVN0YXJ0RXZlbnQpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPElu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPiBwYWQpCisgICAg
c3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxH
c3RQYWQ+IHBhZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIHBhZCk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGUoaW5kZXgsIFdURk1vdmUocGFkKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBjcmVhdGUoZ2ludCBp
bmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+IHN0cmVhbSkKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZSh1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxH
c3RTdHJlYW0+JiYgc3RyZWFtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihpbmRleCwgc3RyZWFtKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoaW5k
ZXgsIFdURk1vdmUoc3RyZWFtKSkpOwogICAgIH0KIAotICAgIHZvaWQgZGlzY29ubmVjdCgpIG92
ZXJyaWRlOwotCi0gICAgS2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9raW5k
OyB9Ci0KLSAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsg
fQotICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVs
OyB9Ci0gICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGFuZ3VhZ2U7IH0KLQotICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pbmRleDsgfQotICAgIFN0cmluZyBzdHJlYW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
ZWFtSWQ7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2tpbmQ7IH0K
KyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0
b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgQXRv
bVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KKyAg
ICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5kZXg7IH0KIAogICAg
IHZvaWQgaGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPik7CiAKIHByaXZhdGU6Ci0gICAg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcihnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBh
ZD4pOwotICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RTdHJlYW0+KTsKLQotICAgIHZvaWQgc3RyZWFtQ2hhbmdlZCgpOworICAgIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIodW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0UGFk
PiYmLCBib29sIHNob3VsZEhhbmRsZVN0cmVhbVN0YXJ0RXZlbnQpOworICAgIEluYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIodW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiYm
KTsKIAogICAgIHZvaWQgbm90aWZ5VHJhY2tPZlNhbXBsZSgpOwotICAgIHZvaWQgbm90aWZ5VHJh
Y2tPZlN0cmVhbUNoYW5nZWQoKTsKIAotICAgIGd1bG9uZyBtX2V2ZW50UHJvYmU7CiAgICAgVmVj
dG9yPEdSZWZQdHI8R3N0U2FtcGxlPj4gbV9wZW5kaW5nU2FtcGxlcyBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fc2FtcGxlTXV0ZXgpOwotICAgIFN0cmluZyBtX3N0cmVhbUlkOwogICAgIEtpbmQgbV9r
aW5kOwogICAgIExvY2sgbV9zYW1wbGVNdXRleDsKLSAgICBBdG9tU3RyaW5nIG1faWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGNhOGM1NTU3NGU5ZTA5MWI4NzkwODY0NTQwM2NlYTFl
NjE3NjgyNTkuLjZjODQ1OTUyNTBmYTZlOWZmMjkyMGZkYjlhOWU4ODRmZmEyYjBjNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05OTAs
MjUgKzk5MCwyNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxh
eWVyT2ZUcmFjaygpCiAgICAgaWYgKFVOTElLRUxZKCFtX3BpcGVsaW5lIHx8ICFtX3NvdXJjZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2lzTGVnYWN5UGxheWJpbiB8fCBpc01l
ZGlhU291cmNlKCkpOworICAgIEFTU0VSVChtX2lzTGVnYWN5UGxheWJpbik7CiAKLSAgICBlbnVt
IFRyYWNrVHlwZSB7IEF1ZGlvID0gMCwgVmlkZW8gPSAxLCBUZXh0ID0gMiB9OworICAgIHVzaW5n
IFRyYWNrVHlwZSA9IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTsKICAgICBW
YXJpYW50PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyPj4qLCBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcj4+Kj4gdmFyaWFudFRyYWNrcyA9IHN0YXRpY19jYXN0PEhhc2hNYXA8QXRvbVN0
cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+KDApOwogICAgIGF1dG8gdHlwZShzdGF0
aWNfY2FzdDxUcmFja1R5cGU+KHZhcmlhbnRUcmFja3MuaW5kZXgoKSkpOwogICAgIGNvbnN0IGNo
YXIqIHR5cGVOYW1lOwogICAgIGJvb2wqIGhhc1R5cGU7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBBdWRpbzoKKyAgICBjYXNlIFRyYWNrVHlwZTo6QXVkaW86CiAgICAgICAgIHR5cGVO
YW1lID0gImF1ZGlvIjsKICAgICAgICAgaGFzVHlwZSA9ICZtX2hhc0F1ZGlvOwogICAgICAgICB2
YXJpYW50VHJhY2tzID0gJm1fYXVkaW9UcmFja3M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
VmlkZW86CisgICAgY2FzZSBUcmFja1R5cGU6OlZpZGVvOgogICAgICAgICB0eXBlTmFtZSA9ICJ2
aWRlbyI7CiAgICAgICAgIGhhc1R5cGUgPSAmbV9oYXNWaWRlbzsKICAgICAgICAgdmFyaWFudFRy
YWNrcyA9ICZtX3ZpZGVvVHJhY2tzOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHQ6Cisg
ICAgY2FzZSBUcmFja1R5cGU6OlRleHQ6CiAgICAgICAgIHR5cGVOYW1lID0gInRleHQiOwogICAg
ICAgICBoYXNUeXBlID0gbnVsbHB0cjsKICAgICAgICAgdmFyaWFudFRyYWNrcyA9ICZtX3RleHRU
cmFja3M7CkBAIC0xMDE5LDE3ICsxMDE5LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJl
ZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4mIHRyYWNrcyA9ICpnZXQ8SGFzaE1hcDxBdG9tU3RyaW5n
LCBSZWZQdHI8VHJhY2tQcml2YXRlVHlwZT4+Kj4odmFyaWFudFRyYWNrcyk7CiAKICAgICAvLyBJ
Z25vcmUgbm90aWZpY2F0aW9ucyBhZnRlciBhIEVPUy4gV2UgZG9uJ3Qgd2FudCB0aGUgdHJhY2tz
IHRvIGRpc2FwcGVhciB3aGVuIHRoZSB2aWRlbyBpcyBmaW5pc2hlZC4KLSAgICBpZiAobV9pc0Vu
ZFJlYWNoZWQgJiYgKHR5cGUgPT0gQXVkaW8gfHwgdHlwZSA9PSBWaWRlbykpCisgICAgaWYgKG1f
aXNFbmRSZWFjaGVkICYmICh0eXBlID09IFRyYWNrVHlwZTo6QXVkaW8gfHwgdHlwZSA9PSBUcmFj
a1R5cGU6OlZpZGVvKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZU
cmFja3MgPSAwOwotICAgIGJvb2wgdXNlTWVkaWFTb3VyY2UgPSBpc01lZGlhU291cmNlKCk7Ci0K
ICAgICBTdHJpbmdQcmludFN0cmVhbSBudW1iZXJPZlRyYWNrc1Byb3BlcnR5OwogICAgIG51bWJl
ck9mVHJhY2tzUHJvcGVydHkucHJpbnRmKCJuLSVzIiwgdHlwZU5hbWUpOwotCi0gICAgR3N0RWxl
bWVudCogZWxlbWVudCA9IHVzZU1lZGlhU291cmNlID8gbV9zb3VyY2UuZ2V0KCkgOiBtX3BpcGVs
aW5lLmdldCgpOwotICAgIGdfb2JqZWN0X2dldChlbGVtZW50LCBudW1iZXJPZlRyYWNrc1Byb3Bl
cnR5LnRvQ1N0cmluZygpLmRhdGEoKSwgJm51bWJlck9mVHJhY2tzLCBudWxscHRyKTsKKyAgICBn
X29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgbnVtYmVyT2ZUcmFja3NQcm9wZXJ0eS50b0NT
dHJpbmcoKS5kYXRhKCksICZudW1iZXJPZlRyYWNrcywgbnVsbHB0cik7CiAKICAgICBHU1RfSU5G
T19PQkpFQ1QocGlwZWxpbmUoKSwgIk1lZGlhIGhhcyAlZCAlcyB0cmFja3MiLCBudW1iZXJPZlRy
YWNrcywgdHlwZU5hbWUpOwogCkBAIC0xMDM5LDE3ICsxMDM1LDExIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICAgICAgaWYgKG9s
ZEhhc1R5cGUgIT0gKmhhc1R5cGUpCiAgICAgICAgICAgICBtX3BsYXllci0+Y2hhcmFjdGVyaXN0
aWNDaGFuZ2VkKCk7CiAKLSAgICAgICAgaWYgKCpoYXNUeXBlICYmIHR5cGUgPT0gVmlkZW8pCisg
ICAgICAgIGlmICgqaGFzVHlwZSAmJiB0eXBlID09IFRyYWNrVHlwZTo6VmlkZW8pCiAgICAgICAg
ICAgICBtX3BsYXllci0+c2l6ZUNoYW5nZWQoKTsKICAgICB9CiAKLSAgICBpZiAodXNlTWVkaWFT
b3VyY2UpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiVHJhY2tzIG1h
bmFnZWQgYnkgc291cmNlIGVsZW1lbnQuIEJhaWxpbmcgb3V0IG5vdy4iKTsKLSAgICAgICAgbV9w
bGF5ZXItPm1lZGlhRW5naW5lVXBkYXRlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgVmVjdG9yPFN0cmluZz4gdmFsaWRTdHJlYW1zOworICAgIFZlY3RvcjxBdG9tU3RyaW5nPiB2
YWxpZFN0cmVhbXM7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gZ2V0UGFkUHJvcGVydHk7CiAgICAg
Z2V0UGFkUHJvcGVydHkucHJpbnRmKCJnZXQtJXMtcGFkIiwgdHlwZU5hbWUpOwogCkBAIC0xMDU4
LDcgKzEwNDgsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxh
eWVyT2ZUcmFjaygpCiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3BpcGVsaW5lLmdl
dCgpLCBnZXRQYWRQcm9wZXJ0eS50b0NTdHJpbmcoKS5kYXRhKCksIGksICZwYWQub3V0UHRyKCks
IG51bGxwdHIpOwogICAgICAgICBBU1NFUlQocGFkKTsKIAotICAgICAgICBTdHJpbmcgc3RyZWFt
SWQgPSBTdHJpbmcodHlwZU5hbWUpLnN1YnN0cmluZygwLCAxKS5jb252ZXJ0VG9BU0NJSVVwcGVy
Y2FzZSgpICsgU3RyaW5nOjpudW1iZXIoaSk7CisgICAgICAgIC8vIFRoZSBwYWQgbWlnaHQgbm90
IGhhdmUgYSBzdGlja3kgc3RyZWFtLXN0YXJ0IGV2ZW50IHlldCwgc28gd2UgY2FuJ3QgdXNlCisg
ICAgICAgIC8vIGdzdF9wYWRfZ2V0X3N0cmVhbV9pZCgpIGhlcmUuCisgICAgICAgIGF1dG8gc3Ry
ZWFtSWQgPSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZW5lcmF0ZVVuaXF1ZVBsYXliaW4y
U3RyZWFtSUQodHlwZSwgaSk7CiAgICAgICAgIHZhbGlkU3RyZWFtcy5hcHBlbmQoc3RyZWFtSWQp
OwogCiAgICAgICAgIGlmIChpIDwgdHJhY2tzLnNpemUoKSkgewpAQCAtMTA3MywxNyArMTA2NSwy
MyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFj
aygpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHRyYWNrID0gVHJh
Y2tQcml2YXRlVHlwZTo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgaSwgcGFkKTsKLSAgICAg
ICAgaWYgKCF0cmFjay0+dHJhY2tJbmRleCgpICYmICh0eXBlID09IEF1ZGlvIHx8IHR5cGUgPT0g
VmlkZW8pKQorICAgICAgICBhdXRvIHRyYWNrID0gVHJhY2tQcml2YXRlVHlwZTo6Y3JlYXRlKG1h
a2VXZWFrUHRyKCp0aGlzKSwgaSwgV1RGTW92ZShwYWQpKTsKKyAgICAgICAgaWYgKCF0cmFjay0+
dHJhY2tJbmRleCgpICYmICh0eXBlID09IFRyYWNrVHlwZTo6QXVkaW8gfHwgdHlwZSA9PSBUcmFj
a1R5cGU6OlZpZGVvKSkKICAgICAgICAgICAgIHRyYWNrLT5zZXRBY3RpdmUodHJ1ZSk7CiAgICAg
ICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0cmFjay0+aWQoKSk7CiAgICAgICAgIHRyYWNrcy5hZGQo
c3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CiAKICAgICAgICAgVmFyaWFudDxBdWRpb1RyYWNr
UHJpdmF0ZSYsIFZpZGVvVHJhY2tQcml2YXRlJiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSY+IHZh
cmlhbnRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAgICAgIHN3aXRjaCAodmFyaWFudFRyYWNrLmlu
ZGV4KCkpIHsKLSAgICAgICAgY2FzZSBBdWRpbzogbV9wbGF5ZXItPmFkZEF1ZGlvVHJhY2soZ2V0
PEF1ZGlvVHJhY2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7IGJyZWFrOwotICAgICAgICBjYXNl
IFZpZGVvOiBtX3BsYXllci0+YWRkVmlkZW9UcmFjayhnZXQ8VmlkZW9UcmFja1ByaXZhdGUmPih2
YXJpYW50VHJhY2spKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgVGV4dDogbV9wbGF5ZXItPmFkZFRl
eHRUcmFjayhnZXQ8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSY+KHZhcmlhbnRUcmFjaykpOyBicmVh
azsKKyAgICAgICAgY2FzZSBUcmFja1R5cGU6OkF1ZGlvOgorICAgICAgICAgICAgbV9wbGF5ZXIt
PmFkZEF1ZGlvVHJhY2soZ2V0PEF1ZGlvVHJhY2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFja1R5cGU6OlZpZGVvOgorICAgICAg
ICAgICAgbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soZ2V0PFZpZGVvVHJhY2tQcml2YXRlJj4odmFy
aWFudFRyYWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFja1R5cGU6
OlRleHQ6CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKGdldDxJbmJhbmRUZXh0
VHJhY2tQcml2YXRlJj4odmFyaWFudFRyYWNrKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMTE0Myw3ICsxMTQxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnRleHRDaGFuZ2VkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWUKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVUZXh0U2FtcGxlKEdz
dFNhbXBsZSogc2FtcGxlLCBjb25zdCBjaGFyKiBzdHJlYW1JZCkKIHsKICAgICBmb3IgKGF1dG8m
IHRyYWNrIDogbV90ZXh0VHJhY2tzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghc3RyY21wKHRy
YWNrLT5zdHJlYW1JZCgpLnV0ZjgoKS5kYXRhKCksIHN0cmVhbUlkKSkgeworICAgICAgICBpZiAo
IXN0cmNtcCh0cmFjay0+aWQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdHJlYW1JZCkpIHsK
ICAgICAgICAgICAgIHRyYWNrLT5oYW5kbGVTYW1wbGUoc2FtcGxlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMTQ0OSw4ICsxNDQ3LDggQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhjb25zdCBHUmVmUHRyPEdzdFN0cmVhbUNvbGxl
Y3Rpb24KICAgICB1bnNpZ25lZCB2aWRlb1RyYWNrSW5kZXggPSAwOwogICAgIHVuc2lnbmVkIHRl
eHRUcmFja0luZGV4ID0gMDsKIAotI2RlZmluZSBDUkVBVEVfVFJBQ0sodHlwZSwgVHlwZSkgR19T
VE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBSZWZQdHI8VHlw
ZSMjVHJhY2tQcml2YXRlR1N0cmVhbWVyPiB0cmFjayA9IFR5cGUjI1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKCp0aGlzKSwgdHlwZSMjVHJhY2tJbmRleCwgc3RyZWFt
KTsgXAorI2RlZmluZSBDUkVBVEVfVFJBQ0sodHlwZSwgVHlwZSkgR19TVE1UX1NUQVJUIHsgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIFJlZlB0cjxUeXBlIyNUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IHRyYWNrID0gVHlwZSMjVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdl
YWtQdHIoKnRoaXMpLCB0eXBlIyNUcmFja0luZGV4LCBXVEZNb3ZlKHN0cmVhbSkpOyBcCiAgICAg
ICAgIGF1dG8gdHJhY2tJZCA9IHRyYWNrLT5pZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgaWYgKCF0eXBlIyNUcmFja0luZGV4KSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgbV93YW50ZWQjI1R5cGUjI1N0cmVh
bUlkID0gdHJhY2tJZDsgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNDYzLDExICsxNDYxLDEx
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVUcmFja3MoY29uc3Qg
R1JlZlB0cjxHc3RTdHJlYW1Db2xsZWN0aW9uCiAgICAgfSBHX1NUTVRfRU5ECiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgYXV0byogc3RyZWFt
ID0gZ3N0X3N0cmVhbV9jb2xsZWN0aW9uX2dldF9zdHJlYW0oc3RyZWFtQ29sbGVjdGlvbi5nZXQo
KSwgaSk7Ci0gICAgICAgIFN0cmluZyBzdHJlYW1JZChnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQo
c3RyZWFtKSk7Ci0gICAgICAgIGF1dG8gdHlwZSA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV90eXBl
KHN0cmVhbSk7CisgICAgICAgIEdSZWZQdHI8R3N0U3RyZWFtPiBzdHJlYW0gPSBnc3Rfc3RyZWFt
X2NvbGxlY3Rpb25fZ2V0X3N0cmVhbShzdHJlYW1Db2xsZWN0aW9uLmdldCgpLCBpKTsKKyAgICAg
ICAgY29uc3QgY2hhciogc3RyZWFtSWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQoc3RyZWFt
LmdldCgpKTsKKyAgICAgICAgYXV0byB0eXBlID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX3R5cGUo
c3RyZWFtLmdldCgpKTsKIAotICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJJ
bnNwZWN0aW5nICVzIHRyYWNrIHdpdGggSUQgJXMiLCBnc3Rfc3RyZWFtX3R5cGVfZ2V0X25hbWUo
dHlwZSksIHN0cmVhbUlkLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBHU1RfREVCVUdfT0JKRUNU
KHBpcGVsaW5lKCksICJJbnNwZWN0aW5nICVzIHRyYWNrIHdpdGggSUQgJXMiLCBnc3Rfc3RyZWFt
X3R5cGVfZ2V0X25hbWUodHlwZSksIHN0cmVhbUlkKTsKIAogICAgICAgICBpZiAodHlwZSAmIEdT
VF9TVFJFQU1fVFlQRV9BVURJTykgewogICAgICAgICAgICAgQ1JFQVRFX1RSQUNLKGF1ZGlvLCBB
dWRpbyk7CkBAIC0xNDc1LDExICsxNDczLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp1cGRhdGVUcmFja3MoY29uc3QgR1JlZlB0cjxHc3RTdHJlYW1Db2xsZWN0aW9uCiAg
ICAgICAgIH0gZWxzZSBpZiAodHlwZSAmIEdTVF9TVFJFQU1fVFlQRV9WSURFTyAmJiBtX3BsYXll
ci0+aXNWaWRlb1BsYXllcigpKQogICAgICAgICAgICAgQ1JFQVRFX1RSQUNLKHZpZGVvLCBWaWRl
byk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgJiBHU1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNl
TWVkaWFTb3VyY2UpIHsKLSAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywgc3RyZWFtKTsKKyAgICAg
ICAgICAgIGF1dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGUodGV4dFRyYWNrSW5kZXgrKywgV1RGTW92ZShzdHJlYW0pKTsKICAgICAgICAgICAgIG1fdGV4
dFRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBtX3Bs
YXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBHU1RfV0FSTklORygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5kIGZvciBzdHJlYW0gJXMi
LCBzdHJlYW1JZC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJVbmtu
b3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVhbUlkKTsKICAgICB9CiAK
ICAgICBtX2hhc0F1ZGlvID0gIW1fYXVkaW9UcmFja3MuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IDYwMGE2N2ZkZjc0ZjY5MWM4
NTcxMDgxZGI4MzA4NDNmYzJhNTQyMmUuLmRjYTJjMjFmZDYzMGE0Mjc1MjA0YjU0NTVlN2M0ZDI5
NDcyYzVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAKQEAgLTMwLDEyICszMCw4IEBACiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ci5oIgogCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZUJhc2UuaCIKLSNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgotI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvdGFnL3RhZy5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX3BsYXllcl9kZWJ1Zyk7
CkBAIC00Myw2ICszOSwyNSBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRp
YV9wbGF5ZXJfZGVidWcpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0F0b21TdHJpbmcgVHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2VuZXJhdGVVbmlxdWVQbGF5YmluMlN0cmVhbUlEKFRy
YWNrVHlwZSB0cmFja1R5cGUsIHVuc2lnbmVkIGluZGV4KQoreworICAgIGF1dG8gcHJlZml4ID0g
W3RyYWNrVHlwZV0oKSAtPiBjaGFyIHsKKyAgICAgICAgc3dpdGNoICh0cmFja1R5cGUpIHsKKyAg
ICAgICAgY2FzZSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OkF1ZGlvOgor
ICAgICAgICAgICAgcmV0dXJuICdBJzsKKyAgICAgICAgY2FzZSBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpUcmFja1R5cGU6OlZpZGVvOgorICAgICAgICAgICAgcmV0dXJuICdWJzsKKyAgICAg
ICAgY2FzZSBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlRleHQ6CisgICAg
ICAgICAgICByZXR1cm4gJ1QnOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gJ1UnOworICAgICAgICB9CisgICAg
fSgpOworCisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LCBpbmRleCk7Cit9CisKIHN0YXRp
YyBHUmVmUHRyPEdzdFBhZD4gZmluZEJlc3RVcHN0cmVhbVBhZChHUmVmUHRyPEdzdFBhZD4gcGFk
KQogewogICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gcGFkOwpAQCAtNTYsMTEgKzcxLDEy
IEBAIHN0YXRpYyBHUmVmUHRyPEdzdFBhZD4gZmluZEJlc3RVcHN0cmVhbVBhZChHUmVmUHRyPEdz
dFBhZD4gcGFkKQogICAgIHJldHVybiBzaW5rUGFkOwogfQogCi1UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2UqIG93bmVy
LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQorVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1R5cGUgdHlwZSwgVHJhY2tQcml2
YXRlQmFzZSogb3duZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiBwYWQsIGJv
b2wgc2hvdWxkSGFuZGxlU3RyZWFtU3RhcnRFdmVudCkKICAgICA6IG1fbm90aWZpZXIoTWFpblRo
cmVhZE5vdGlmaWVyPE1haW5UaHJlYWROb3RpZmljYXRpb24+OjpjcmVhdGUoKSkKICAgICAsIG1f
aW5kZXgoaW5kZXgpCi0gICAgLCBtX2V2ZW50UHJvYmUoMCkKKyAgICAsIG1fdHlwZSh0eXBlKQog
ICAgICwgbV9vd25lcihvd25lcikKKyAgICAsIG1fc2hvdWxkSGFuZGxlU3RyZWFtU3RhcnRFdmVu
dChzaG91bGRIYW5kbGVTdHJlYW1TdGFydEV2ZW50KQogewogICAgIHNldFBhZChXVEZNb3ZlKHBh
ZCkpOwogICAgIEFTU0VSVChtX3BhZCk7CkBAIC02OSwxNCArODUsMTUgQEAgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNl
KiBvd25lciwgZ2kKICAgICB0YWdzQ2hhbmdlZCgpOwogfQogCi1UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2UqIG93bmVy
LCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4gc3RyZWFtKQorVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1R5cGUgdHlwZSwgVHJh
Y2tQcml2YXRlQmFzZSogb3duZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4m
JiBzdHJlYW0pCiAgICAgOiBtX25vdGlmaWVyKE1haW5UaHJlYWROb3RpZmllcjxNYWluVGhyZWFk
Tm90aWZpY2F0aW9uPjo6Y3JlYXRlKCkpCiAgICAgLCBtX2luZGV4KGluZGV4KQotICAgICwgbV9z
dHJlYW0oc3RyZWFtKQotICAgICwgbV9ldmVudFByb2JlKDApCisgICAgLCBtX3N0cmVhbShXVEZN
b3ZlKHN0cmVhbSkpCisgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fb3duZXIob3duZXIpCiB7
CiAgICAgQVNTRVJUKG1fc3RyZWFtKTsKKyAgICBtX2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFt
X2lkKG1fc3RyZWFtLmdldCgpKTsKIAogICAgIC8vIFdlIGNhbid0IGNhbGwgbm90aWZ5VHJhY2tP
ZlRhZ3NDaGFuZ2VkKCkgZGlyZWN0bHksIGJlY2F1c2Ugd2UgbmVlZCB0YWdzQ2hhbmdlZCgpIHRv
IHNldHVwIG1fdGFncy4KICAgICB0YWdzQ2hhbmdlZCgpOwpAQCAtODksMTIgKzEwNiwxOCBAQCB2
b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OnNldFBhZChHUmVmUHRyPEdzdFBhZD4mJiBw
YWQpCiAKICAgICBtX3BhZCA9IFdURk1vdmUocGFkKTsKICAgICBtX2Jlc3RVcHN0cmVhbVBhZCA9
IGZpbmRCZXN0VXBzdHJlYW1QYWQobV9wYWQpOworICAgIG1faWQgPSBnZW5lcmF0ZVVuaXF1ZVBs
YXliaW4yU3RyZWFtSUQobV90eXBlLCBtX2luZGV4KTsKKwogICAgIG1fZXZlbnRQcm9iZSA9IGdz
dF9wYWRfYWRkX3Byb2JlKG1fYmVzdFVwc3RyZWFtUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZ
UEVfRVZFTlRfRE9XTlNUUkVBTSwgW10gKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywg
Z3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byog
dHJhY2sgPSBzdGF0aWNfY2FzdDxUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKj4odXNlckRhdGEp
OwogICAgICAgICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFKGdzdF9wYWRfcHJvYmVfaW5mb19nZXRf
ZXZlbnQoaW5mbykpKSB7CiAgICAgICAgIGNhc2UgR1NUX0VWRU5UX1RBRzoKICAgICAgICAgICAg
IHRhZ3NDaGFuZ2VkQ2FsbGJhY2sodHJhY2spOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR1NUX0VWRU5UX1NUUkVBTV9TVEFSVDoKKyAgICAgICAgICAgIGlmICh0cmFjay0+bV9z
aG91bGRIYW5kbGVTdHJlYW1TdGFydEV2ZW50KQorICAgICAgICAgICAgICAgIHRyYWNrLT5zdHJl
YW1DaGFuZ2VkKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNjMsNyArMTg2LDkgQEAgdm9pZCBUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjp0YWdzQ2hhbmdlZCgpCiAgICAgICAgIG1fdGFncy5zd2FwKHRh
Z3MpOwogICAgIH0KIAotICAgIG1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0
aW9uOjpUYWdzQ2hhbmdlZCwgW3RoaXNdIHsgbm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCk7IH0p
OworICAgIG1fbm90aWZpZXItPm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpUYWdzQ2hh
bmdlZCwgW3RoaXNdIHsKKyAgICAgICAgbm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCk7CisgICAg
fSk7CiB9CiAKIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0TGFuZ3VhZ2VDb2Rl
KEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMjIwLDYgKzI0NSwyMyBA
QCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZUYWdzQ2hhbmdl
ZCgpCiAgICAgICAgIGNsaWVudC0+bGFuZ3VhZ2VDaGFuZ2VkKG1fbGFuZ3VhZ2UpOwogfQogCit2
b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2Vk
KCkKK3sKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHN0cmVhbUlkKGdzdF9wYWRfZ2V0X3N0cmVhbV9p
ZChtX3BhZC5nZXQoKSkpOworICAgIGlmICghc3RyZWFtSWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdTVF9JTkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwg
bV9pbmRleCwgc3RyZWFtSWQuZ2V0KCkpOworICAgIG1faWQgPSBzdHJlYW1JZC5nZXQoKTsKK30K
Kwordm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpzdHJlYW1DaGFuZ2VkKCkKK3sKKyAg
ICBtX25vdGlmaWVyLT5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6U3RyZWFtQ2hhbmdl
ZCwgW3RoaXNdIHsKKyAgICAgICAgbm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKKyAgICB9
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyLmgKaW5kZXggMDk1NzVhZDkwZjgwYTEwZmJkOGFmMTNmYjQ0NzEyOGUwMjFkNTY5Yy4uZmRm
ZDU4NmFmNTI5NWI4ZmM0YWU4M2YwMjJmOWNmMDg5NjFiYmIzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgVW5rbm93bgogICAgIH07CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXRvbVN0
cmluZyBnZW5lcmF0ZVVuaXF1ZVBsYXliaW4yU3RyZWFtSUQoVHJhY2tUeXBlLCB1bnNpZ25lZCBp
bmRleCk7CisKICAgICBHc3RQYWQqIHBhZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFkLmdldCgpOyB9
CiAgICAgdm9pZCBzZXRQYWQoR1JlZlB0cjxHc3RQYWQ+JiYpOwogCkBAIC01NSwxMiArNTcsOSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpIHsgfQogCi0gICAg
dm9pZCBzZXRJbmRleChpbnQgaW5kZXgpIHsgbV9pbmRleCA9ICBpbmRleDsgfQorICAgIHZvaWQg
c2V0SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9pbmRleCA9ICBpbmRleDsgfQogCi0gICAgR3N0
U3RyZWFtKiBzdHJlYW0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RyZWFtLmdldCgpOwot
ICAgIH0KKyAgICBHc3RTdHJlYW0qIHN0cmVhbSgpIHsgcmV0dXJuIG1fc3RyZWFtLmdldCgpOyB9
CiAKICAgICAvLyBVc2VkIGZvciBNU0UsIHdoZXJlIHRoZSBpbml0aWFsIGNhcHMgb2YgdGhlIHBh
ZCBhcmUgcmVsZXZhbnQgZm9yIGluaXRpYWxpemluZyB0aGUgbWF0Y2hpbmcgcGFkIGluIHRoZQog
ICAgIC8vIHBsYXliYWNrIHBpcGVsaW5lLgpAQCAtNjgsMTAgKzY3LDExIEBAIHB1YmxpYzoKICAg
ICBjb25zdCBHUmVmUHRyPEdzdENhcHM+JiBpbml0aWFsQ2FwcygpIHsgcmV0dXJuIG1faW5pdGlh
bENhcHM7IH0KIAogcHJvdGVjdGVkOgotICAgIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJh
Y2tQcml2YXRlQmFzZSogb3duZXIsIGdpbnQgaW5kZXgsIEdSZWZQdHI8R3N0UGFkPik7Ci0gICAg
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1ByaXZhdGVCYXNlKiBvd25lciwgZ2ludCBp
bmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+KTsKKyAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
KFRyYWNrVHlwZSwgVHJhY2tQcml2YXRlQmFzZSosIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdz
dFBhZD4mJiwgYm9vbCBzaG91bGRIYW5kbGVTdHJlYW1TdGFydEV2ZW50KTsKKyAgICBUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrVHlwZSwgVHJhY2tQcml2YXRlQmFzZSosIHVuc2lnbmVk
IGluZGV4LCBHUmVmUHRyPEdzdFN0cmVhbT4mJik7CiAKICAgICB2b2lkIG5vdGlmeVRyYWNrT2ZU
YWdzQ2hhbmdlZCgpOworICAgIHZvaWQgbm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKIAog
ICAgIGVudW0gTWFpblRocmVhZE5vdGlmaWNhdGlvbiB7CiAgICAgICAgIFRhZ3NDaGFuZ2VkID0g
MSA8PCAxLApAQCAtODAsMTMgKzgwLDE0IEBAIHByb3RlY3RlZDoKICAgICB9OwogCiAgICAgUmVm
PE1haW5UaHJlYWROb3RpZmllcjxNYWluVGhyZWFkTm90aWZpY2F0aW9uPj4gbV9ub3RpZmllcjsK
LSAgICBnaW50IG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9pbmRleDsKICAgICBBdG9tU3RyaW5n
IG1fbGFiZWw7CiAgICAgQXRvbVN0cmluZyBtX2xhbmd1YWdlOworICAgIEF0b21TdHJpbmcgbV9p
ZDsKICAgICBHUmVmUHRyPEdzdFBhZD4gbV9wYWQ7CiAgICAgR1JlZlB0cjxHc3RQYWQ+IG1fYmVz
dFVwc3RyZWFtUGFkOwogICAgIEdSZWZQdHI8R3N0U3RyZWFtPiBtX3N0cmVhbTsKLSAgICBndWxv
bmcgbV9ldmVudFByb2JlOworICAgIHVuc2lnbmVkIGxvbmcgbV9ldmVudFByb2JlIHsgMCB9Owog
ICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9pbml0aWFsQ2FwczsKIAogcHJpdmF0ZToKQEAgLTk1LDE0
ICs5NiwxOCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFN0cmluZ1R5cGU+CiAgICAg
Ym9vbCBnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFN0cmlu
Z1R5cGUmIHZhbHVlKTsKIAorICAgIHZvaWQgc3RyZWFtQ2hhbmdlZCgpOworCiAgICAgc3RhdGlj
IHZvaWQgYWN0aXZlQ2hhbmdlZENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIqKTsK
ICAgICBzdGF0aWMgdm9pZCB0YWdzQ2hhbmdlZENhbGxiYWNrKFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIqKTsKIAogICAgIHZvaWQgdGFnc0NoYW5nZWQoKTsKIAorICAgIFRyYWNrVHlwZSBtX3R5
cGU7CiAgICAgVHJhY2tQcml2YXRlQmFzZSogbV9vd25lcjsKICAgICBMb2NrIG1fdGFnTXV0ZXg7
CiAgICAgR1JlZlB0cjxHc3RUYWdMaXN0PiBtX3RhZ3M7CisgICAgYm9vbCBtX3Nob3VsZEhhbmRs
ZVN0cmVhbVN0YXJ0RXZlbnQgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBl
NjFmNTVhNTYwZmY4MWYwMzViOTIzYjMyNDkxMDg0MDZhMDVmYTdhLi5iMDdmZDU5YTBkOTM5ZTI2
ZjJmNTcyYzYzM2JkOTFmMGY5ZGE2ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMwLDMxICszMCwyNiBAQAogI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaCIKLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGlu
ZGV4LCBHUmVmUHRyPEdzdFBhZD4gcGFkKQotICAgIDogVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cih0aGlzLCBpbmRleCwgcGFkKQorVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBw
bGF5ZXIsIHVuc2lnbmVkIGluZGV4LCBHUmVmUHRyPEdzdFBhZD4mJiBwYWQsIGJvb2wgc2hvdWxk
SGFuZGxlU3RyZWFtU3RhcnRFdmVudCkKKyAgICA6IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIo
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlOjpWaWRlbywgdGhpcywgaW5kZXgs
IFdURk1vdmUocGFkKSwgc2hvdWxkSGFuZGxlU3RyZWFtU3RhcnRFdmVudCkKICAgICAsIG1fcGxh
eWVyKHBsYXllcikKIHsKLSAgICAvLyBGSVhNRTogR2V0IGEgcmVhbCBJRCBmcm9tIHRoZSB0a2hk
IGF0b20uCi0gICAgbV9pZCA9ICJWIiArIFN0cmluZzo6bnVtYmVyKGluZGV4KTsKIH0KIAotVmlk
ZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OlZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKFdlYWtQ
dHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBwbGF5ZXIsIGdpbnQgaW5kZXgsIEdSZWZQ
dHI8R3N0U3RyZWFtPiBzdHJlYW0pCi0gICAgOiBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKHRo
aXMsIGluZGV4LCBzdHJlYW0pCitWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6VmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+IHBs
YXllciwgdW5zaWduZWQgaW5kZXgsIEdSZWZQdHI8R3N0U3RyZWFtPiYmIHN0cmVhbSkKKyAgICA6
IFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJh
Y2tUeXBlOjpWaWRlbywgdGhpcywgaW5kZXgsIFdURk1vdmUoc3RyZWFtKSkKICAgICAsIG1fcGxh
eWVyKHBsYXllcikKIHsKLSAgICBnaW50IGtpbmQ7CisgICAgaW50IGtpbmQ7CiAgICAgYXV0byB0
YWdzID0gYWRvcHRHUmVmKGdzdF9zdHJlYW1fZ2V0X3RhZ3MobV9zdHJlYW0uZ2V0KCkpKTsKIAog
ICAgIGlmICh0YWdzICYmIGdzdF90YWdfbGlzdF9nZXRfaW50KHRhZ3MuZ2V0KCksICJ3ZWJraXQt
bWVkaWEtc3RyZWFtLWtpbmQiLCAma2luZCkgJiYga2luZCA9PSBzdGF0aWNfY2FzdDxpbnQ+KFZp
ZGVvVHJhY2tQcml2YXRlOjpLaW5kOjpNYWluKSkgewotICAgICAgICBHc3RTdHJlYW1GbGFncyBz
dHJlYW1GbGFncyA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9mbGFncyhzdHJlYW0uZ2V0KCkpOwot
ICAgICAgICBnc3Rfc3RyZWFtX3NldF9zdHJlYW1fZmxhZ3Moc3RyZWFtLmdldCgpLCBzdGF0aWNf
Y2FzdDxHc3RTdHJlYW1GbGFncz4oc3RyZWFtRmxhZ3MgfCBHU1RfU1RSRUFNX0ZMQUdfU0VMRUNU
KSk7CisgICAgICAgIGF1dG8gc3RyZWFtRmxhZ3MgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1fZmxh
Z3MobV9zdHJlYW0uZ2V0KCkpOworICAgICAgICBnc3Rfc3RyZWFtX3NldF9zdHJlYW1fZmxhZ3Mo
bV9zdHJlYW0uZ2V0KCksIHN0YXRpY19jYXN0PEdzdFN0cmVhbUZsYWdzPihzdHJlYW1GbGFncyB8
IEdTVF9TVFJFQU1fRkxBR19TRUxFQ1QpKTsKICAgICB9Ci0KLSAgICBtX2lkID0gZ3N0X3N0cmVh
bV9nZXRfc3RyZWFtX2lkKHN0cmVhbS5nZXQoKSk7CiB9CiAKIFZpZGVvVHJhY2tQcml2YXRlOjpL
aW5kIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpraW5kKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggNjM0Y2FhMDRhNGQ0Y2VmOGU0
MWYzOTdlYWE5MDdlMTcxNjA0Mjk5Mi4uMDhkZDBlYzk2OWYyNzIzMjdmZTdjY2Q2MGY0NmQ4YTE0
YzQxMzRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmgK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmgi
CiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwz
NCArMzgsMzMgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOwogCiBjbGFzcyBW
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0
ZSwgcHVibGljIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdzdFBhZD4g
cGFkKQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShX
ZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCB1bnNpZ25lZCBpbmRl
eCwgR1JlZlB0cjxHc3RQYWQ+JiYgcGFkLCBib29sIHNob3VsZEhhbmRsZVN0cmVhbVN0YXJ0RXZl
bnQgPSB0cnVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIocGxheWVyLCBpbmRleCwgcGFkKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIFdU
Rk1vdmUocGFkKSwgc2hvdWxkSGFuZGxlU3RyZWFtU3RhcnRFdmVudCkpOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+IGNyZWF0ZShXZWFrUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCBnaW50IGluZGV4LCBHUmVmUHRyPEdz
dFN0cmVhbT4gc3RyZWFtKQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IGNyZWF0ZShXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gcGxheWVyLCB1
bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYgc3RyZWFtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIocGxheWVy
LCBpbmRleCwgc3RyZWFtKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyKHBsYXllciwgaW5kZXgsIFdURk1vdmUoc3RyZWFtKSkpOwogICAg
IH0KIAogICAgIEtpbmQga2luZCgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBkaXNjb25uZWN0
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0KCkgZmluYWw7CiAKLSAgICB2b2lkIHNl
dFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgZW5hYmxl
ZCkgb3ZlcnJpZGUgeyBzZXRTZWxlY3RlZChlbmFibGVkKTsgfQorICAgIHZvaWQgc2V0U2VsZWN0
ZWQoYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBmaW5hbCB7
IHNldFNlbGVjdGVkKGVuYWJsZWQpOyB9CiAKLSAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faW5kZXg7IH0KIAotICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2lkOyB9Ci0gICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIEF0b21TdHJpbmcgaWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CisgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCiBwcml2YXRlOgotICAgIFZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyKFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiwgZ2lu
dCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+KTsKLSAgICBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
cihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4sIGdpbnQgaW5kZXgsIEdSZWZQ
dHI8R3N0U3RyZWFtPik7CisgICAgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCB1bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RQ
YWQ+JiYsIGJvb2wgc2hvdWxkSGFuZGxlU3RyZWFtU3RhcnRFdmVudCk7CisgICAgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIoV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+LCB1
bnNpZ25lZCBpbmRleCwgR1JlZlB0cjxHc3RTdHJlYW0+JiYpOwogCi0gICAgQXRvbVN0cmluZyBt
X2lkOwogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiBtX3BsYXllcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggM2ZlN2E3MWM4NGYx
NDE2OGFmYzAyODRhZTVhYTNiYWNlMzkxOGQ0My4uMWYyZTM3MjM5NDhlMzM4YTM0NmZhNzdiYTM0
YjBhZDhjYTFhMDlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTcx
OSwyMSArNzE5LDIyIEBAIFJlZjxXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlPiBBcHBlbmRQaXBl
bGluZTo6bWFrZVdlYktpdFRyYWNrKGludCB0cmFja0luZGV4KQogICAgIFJlZlB0cjxXZWJDb3Jl
OjpUcmFja1ByaXZhdGVCYXNlPiB0cmFjazsKICAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
KiBnc3RyZWFtZXJUcmFjayA9IG51bGxwdHI7CiAgICAgLy8gRklYTUU6IEF1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyIGV0Yy4gc2hvdWxkIHByb2JhYmx5IHVzZSBwYWRzIG9mIHRoZSBwbGF5YmFj
ayBwaXBlbGluZSByYXRoZXIgdGhhbiB0aGUgYXBwZW5kIHBpcGVsaW5lLgorICAgIEdSZWZQdHI8
R3N0UGFkPiBwYWQoYXBwZW5kUGlwZWxpbmVUcmFjay5hcHBzaW5rUGFkKTsKICAgICBzd2l0Y2gg
KGFwcGVuZFBpcGVsaW5lVHJhY2suc3RyZWFtVHlwZSkgewogICAgIGNhc2UgU3RyZWFtVHlwZTo6
QXVkaW86IHsKLSAgICAgICAgYXV0byBzcGVjaWZpY1RyYWNrID0gQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZShtYWtlV2Vha1B0cihtX3BsYXllclByaXZhdGUpLCB0cmFja0luZGV4
LCBhcHBlbmRQaXBlbGluZVRyYWNrLmFwcHNpbmtQYWQpOworICAgICAgICBhdXRvIHNwZWNpZmlj
VHJhY2sgPSBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1f
cGxheWVyUHJpdmF0ZSksIHRyYWNrSW5kZXgsIFdURk1vdmUocGFkKSwgZmFsc2UpOwogICAgICAg
ICBnc3RyZWFtZXJUcmFjayA9IHNwZWNpZmljVHJhY2sucHRyKCk7CiAgICAgICAgIHRyYWNrID0g
bWFrZVJlZlB0cihzdGF0aWNfY2FzdDxUcmFja1ByaXZhdGVCYXNlKj4oc3BlY2lmaWNUcmFjay5w
dHIoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTdHJlYW1UeXBlOjpWaWRl
bzogewotICAgICAgICBhdXRvIHNwZWNpZmljVHJhY2sgPSBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fcGxheWVyUHJpdmF0ZSksIHRyYWNrSW5kZXgsIGFw
cGVuZFBpcGVsaW5lVHJhY2suYXBwc2lua1BhZCk7CisgICAgICAgIGF1dG8gc3BlY2lmaWNUcmFj
ayA9IFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUobWFrZVdlYWtQdHIobV9wbGF5
ZXJQcml2YXRlKSwgdHJhY2tJbmRleCwgV1RGTW92ZShwYWQpLCBmYWxzZSk7CiAgICAgICAgIGdz
dHJlYW1lclRyYWNrID0gc3BlY2lmaWNUcmFjay5wdHIoKTsKICAgICAgICAgdHJhY2sgPSBtYWtl
UmVmUHRyKHN0YXRpY19jYXN0PFRyYWNrUHJpdmF0ZUJhc2UqPihzcGVjaWZpY1RyYWNrLnB0cigp
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN0cmVhbVR5cGU6OlRleHQ6IHsK
LSAgICAgICAgYXV0byBzcGVjaWZpY1RyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlKHRyYWNrSW5kZXgsIGFwcGVuZFBpcGVsaW5lVHJhY2suYXBwc2lua1BhZCk7
CisgICAgICAgIGF1dG8gc3BlY2lmaWNUcmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZSh0cmFja0luZGV4LCBXVEZNb3ZlKHBhZCksIGZhbHNlKTsKICAgICAgICAg
Z3N0cmVhbWVyVHJhY2sgPSBzcGVjaWZpY1RyYWNrLnB0cigpOwogICAgICAgICB0cmFjayA9IG1h
a2VSZWZQdHIoc3RhdGljX2Nhc3Q8VHJhY2tQcml2YXRlQmFzZSo+KHNwZWNpZmljVHJhY2sucHRy
KCkpKTsKICAgICAgICAgYnJlYWs7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>