<?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>237558</bug_id>
          
          <creation_ts>2022-03-07 14:34:14 -0800</creation_ts>
          <short_desc>WIP Patch for Scroll To Text Fragment searching.</short_desc>
          <delta_ts>2025-10-02 23:08:10 -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>MOVED</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1848977</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2022-03-07 14:34:14 -0800</bug_when>
    <thetext>WIP Patch for Scroll To Text Fragment searching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848978</commentid>
    <comment_count>1</comment_count>
      <attachid>454037</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2022-03-07 14:35:04 -0800</bug_when>
    <thetext>Created attachment 454037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851042</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-14 15:35:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/90273249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859402</commentid>
    <comment_count>3</comment_count>
      <attachid>456959</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2022-04-07 13:13:14 -0700</bug_when>
    <thetext>Created attachment 456959
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454037</attachid>
            <date>2022-03-07 14:35:04 -0800</date>
            <delta_ts>2022-04-07 13:13:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237558-20220307143503.patch</filename>
            <type>text/plain</type>
            <size>23860</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUyN2E1ZGRjYjViYzhj
YjczOGNlZmJjZDc3Y2I3YjJmMTMzMjI5Yi4uM2U2NDc0MmFkOWY3MDczZDkyN2M2YTk3ODE2NjAx
ZjBhYTc4YmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAzLTA3ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgV0lQIFBhdGNo
IGZvciBTY3JvbGwgVG8gVGV4dCBGcmFnbWVudCBzZWFyY2hpbmcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc1NTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIGRvbS9Cb3VuZGFyeVBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKiBkb20vRnJhZ21lbnREaXJlY3RpdmVSYW5nZUZpbmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyOjppc1NlYXJjaElu
dmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVy
Ojppc05vblNlYXJjaGFibGVTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50RGly
ZWN0aXZlUmFuZ2VGaW5kZXI6Om5lYXJlc3RCbG9ja0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OmdldEJvdW5kYXJ5UG9pbnRBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OmluZGV4
SXNXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnREaXJlY3RpdmVSYW5n
ZUZpbmRlcjo6ZmluZFJhbmdlRnJvbU5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OnJhbmdlT2ZTdHJpbmdJblJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OmFkdmFuY2VSYW5nZVN0YXJ0
VG9OZXh0Tm9uV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2
ZVJhbmdlRmluZGVyOjpyYW5nZXNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnREaXJlY3RpdmVSYW5nZUZpbmRlcjo6cmFuZ2VGb3JGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyOjpjb2xsYXBzZUlmUm9vdHNEaWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnREaXJlY3RpdmVSYW5nZUZp
bmRlcjo6cmFuZ2VPZlN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0ZyYWdtZW50RGly
ZWN0aXZlUmFuZ2VGaW5kZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZmZXI6OnNlYXJjaCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aXNEaXNwbGF5QmxvY2tMZXZlbCBjb25zdCk6CisKIDIwMjItMDItMjggIEFkaXR5YSBLZWVy
dGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gVW5hYmxlIHRvIHVw
bG9hZCAiLnBhZ2VzIiBmaWxlcyB0byBmaWxlIGlucHV0cyBhY2NlcHRpbmcgIi5wYWdlcyIgYW5k
ICIuanBlZyIgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBv
aW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCmluZGV4IDU5NjExMTIz
OWIwMzViZDE3ZDAzYjczM2NhZDYwMTU1NWVmZGFmMWMuLjk1Yzg0MmMzMmQ1Mzc4YmZlMTExZjEx
OTk0ZGExMjdiMDJmYzBkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFy
eVBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApAQCAtNjYs
NiArNjYsMTEgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JiBh
LCBjb25zdCBCb3VuZGFyeVBvaW50JiBiKQogICAgIHJldHVybiBhLmNvbnRhaW5lci5wdHIoKSA9
PSBiLmNvbnRhaW5lci5wdHIoKSAmJiBhLm9mZnNldCA9PSBiLm9mZnNldDsKIH0KIAoraW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBv
aW50JiBiKQoreworICAgIHJldHVybiBhLmNvbnRhaW5lci5wdHIoKSAhPSBiLmNvbnRhaW5lci5w
dHIoKSB8fCBhLm9mZnNldCAhPSBiLm9mZnNldDsKK30KKwogaW5saW5lIEJvdW5kYXJ5UG9pbnQg
bWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMoTm9kZSYgbm9kZSkKIHsKICAgICBy
ZXR1cm4geyBub2RlLCAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21l
bnREaXJlY3RpdmVSYW5nZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnRE
aXJlY3RpdmVSYW5nZUZpbmRlci5jcHAKaW5kZXggNzExN2QyYzcwYmQ5MWU1YjMzODFmNTVmZGYx
MDEwNTVjZGFjMzM2Yi4uYzA0NDMyNjg5MGE4YTRhNjExNzdhMWY5NTJkNmE0YjI2MGU4YWIyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERpcmVjdGl2ZVJhbmdlRmlu
ZGVyLmNwcApAQCAtMjYsMzUgKzI2LDMwMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXIuaCIKIAorI2luY2x1ZGUgIkhUTUxBdWRp
b0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKLSNpbmNs
dWRlICJGaW5kT3B0aW9ucy5oIgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2lt
cGxlUmFuZ2UuaCIKKyNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogCisjaW5jbHVkZSA8ZGJnX2VkaXRpbmcuaD4KKyNpbmNsdWRlIDxkYmdfZG9t
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBGcmFnbWVudERpcmVjdGl2ZVJh
bmdlRmluZGVyIHsKIAotc3RhdGljIFNpbXBsZVJhbmdlIGNvbGxhcHNlSWZSb290c0RpZmZlcihT
aW1wbGVSYW5nZSYmIHJhbmdlKQorLy9zdGF0aWMgU2ltcGxlUmFuZ2UgY29sbGFwc2VJZlJvb3Rz
RGlmZmVyKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCisvL3sKKy8vICAgIHJldHVybiAmcmFuZ2Uuc3Rh
cnQuY29udGFpbmVyLT5yb290Tm9kZSgpID09ICZyYW5nZS5lbmQuY29udGFpbmVyLT5yb290Tm9k
ZSgpCisvLyAgICAgICAgPyBXVEZNb3ZlKHJhbmdlKSA6IFNpbXBsZVJhbmdlIHsgcmFuZ2Uuc3Rh
cnQsIHJhbmdlLnN0YXJ0IH07CisvL30KKworc3RhdGljIGJvb2wgaXNTZWFyY2hJbnZpc2libGUo
Tm9kZSYgbm9kZSkKK3sKKyAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGlzU2VhcmNoSW52aXNpYmxl
OiAlcyIsIHJlcHIoJm5vZGUpKTsKKyAgICAvLyBGSVhNRTogVGhlIGNvbXB1dGVkIHZhbHVlIG9m
IGl0cyBkaXNwbGF5IHByb3BlcnR5IGlzIG5vbmUuCisgICAgCisgICAgLy8gRklYTUU6IElmIHRo
ZSBub2RlIHNlcmlhbGl6ZXMgYXMgdm9pZC4KKyAgICAKKyAgICBpZiAoaXM8SFRNTElGcmFtZUVs
ZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxNZXRl
ckVsZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50Pihub2RlKSB8fCBpczxIVE1M
UHJvZ3Jlc3NFbGVtZW50Pihub2RlKSB8fCBpczxIVE1MU3R5bGVFbGVtZW50Pihub2RlKSB8fCBp
czxIVE1MU2NyaXB0RWxlbWVudD4obm9kZSkgfHwgaXM8SFRNTFZpZGVvRWxlbWVudD4obm9kZSkg
fHwgaXM8SFRNTEF1ZGlvRWxlbWVudD4obm9kZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IAorICAgIAorICAgIC8vIEZJWE1FOiBJcyBhIHNlbGVjdCBlbGVtZW50IHdob3NlIG11bHRpcGxl
IGNvbnRlbnQgYXR0cmlidXRlIGlzIGFic2VudC4KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3N0YXRpYyBib29sIGlzTm9uU2VhcmNoYWJsZVN1YnRyZWUoTm9kZSYgbm9kZSkKK3sKKyAg
ICBXVEZMb2dBbHdheXMoIjxNTUc+IGlzTm9uU2VhcmNoYWJsZVN1YnRyZWU6ICVzIiwgcmVwcigm
bm9kZSkpOworICAgIE5vZGUqIHRyYXZlcnNpbmdOb2RlID0gJm5vZGU7CisgICAgd2hpbGUodHJh
dmVyc2luZ05vZGUpIHsKKyAgICAgICAgaWYgKGlzU2VhcmNoSW52aXNpYmxlKCp0cmF2ZXJzaW5n
Tm9kZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgdHJhdmVyc2luZ05vZGUg
PSB0cmF2ZXJzaW5nTm9kZS0+cGFyZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICB9CisgICAgV1RG
TG9nQWx3YXlzKCI8TU1HPiBpcyBzZWFyY2hhYmxlIik7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitzdGF0aWMgTm9kZSYgbmVhcmVzdEJsb2NrQW5jZXN0b3IoTm9kZSYgbm9kZSkKIHsKLSAgICBy
ZXR1cm4gJnJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cm9vdE5vZGUoKSA9PSAmcmFuZ2UuZW5kLmNv
bnRhaW5lci0+cm9vdE5vZGUoKQotICAgICAgICA/IFdURk1vdmUocmFuZ2UpIDogU2ltcGxlUmFu
Z2UgeyByYW5nZS5zdGFydCwgcmFuZ2Uuc3RhcnQgfTsKKyAgICBXVEZMb2dBbHdheXMoIjxNTUc+
IG5lYXJlc3RCbG9ja0FuY2VzdG9yOiAlcyIsIHJlcHIoJm5vZGUpKTsKKyAgICBOb2RlKiBjdXJO
b2RlID0gJm5vZGU7CisgICAgd2hpbGUgKGN1ck5vZGUpCisgICAgeworICAgICAgICBpZiAoIWN1
ck5vZGUtPmlzVGV4dE5vZGUoKSAmJiBjdXJOb2RlLT5yZW5kZXJlcigpICYmIGN1ck5vZGUtPnJl
bmRlcmVyKCktPnN0eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpKQorICAgICAgICAgICAgcmV0
dXJuICpjdXJOb2RlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjdXJOb2RlID0gY3VyTm9k
ZS0+cGFyZW50SW5Db21wb3NlZFRyZWUoKTsKKyAgICB9CisgICAgcmV0dXJuIG5vZGUuZG9jdW1l
bnQoKTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gZ2V0Qm91bmRh
cnlQb2ludEF0SW5kZXgodW5zaWduZWQgaW5kZXgsIFZlY3RvcjxOb2RlKj4gdGV4dE5vZGVMaXN0
LCBib29sIGlzRW5kKQoreworICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gZ2V0Qm91bmRhcnlQb2lu
dEF0SW5kZXg6ICVkIiwgaW5kZXgpOworICAgIHVuc2lnbmVkIGNvdW50ZWQgPSAwOworICAgIAor
ICAgIGZvciAoYXV0byogY3VyTm9kZSA6IHRleHROb2RlTGlzdCkgeworICAgICAgICB1bnNpZ25l
ZCBub2RlRW5kID0gY291bnRlZCArIGN1ck5vZGUtPmxlbmd0aCgpOworICAgICAgICBpZiAoaXNF
bmQpCisgICAgICAgICAgICBub2RlRW5kKys7CisgICAgICAgIGlmIChub2RlRW5kID4gaW5kZXgp
CisgICAgICAgICAgICByZXR1cm4gQm91bmRhcnlQb2ludCgqY3VyTm9kZSwgaW5kZXggLSBjb3Vu
dGVkKTsKKyAgICAgICAgY291bnRlZCArPSBjdXJOb2RlLT5sZW5ndGgoKTsKKyAgICB9CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIERvY3VtZW50JiBkb2N1bWVu
dCkKK3N0YXRpYyBib29sIGluZGV4SXNXb3JkQm91bmRhcnkoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IHVuc2lnbmVkIGluZGV4KQogewotICAgIGlmICh0YXJnZXQuaXNFbXB0eSgpKQorICAgIFdURkxv
Z0Fsd2F5cygiPE1NRz4gaW5kZXhJc1dvcmRCb3VuZGFyeTogJXMgJWQiLCBzdHJpbmcudXRmOCgp
LmRhdGEoKSwgaW5kZXgpOworICAgIGludCBuZXh0V29yZCA9IGZpbmROZXh0V29yZEZyb21JbmRl
eChzdHJpbmcsIGluZGV4LCB0cnVlKTsKKyAgICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVh
bSA8PCAiTU1HOiBuZXh0V29yZDogIiA8PCBuZXh0V29yZCk7CisgICAgaWYgKG5leHRXb3JkID4g
MCAmJiAodW5zaWduZWQpbmV4dFdvcmQgPT0gaW5kZXgpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IGZpbmRSYW5nZUZyb21Ob2RlTGlzdChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBTaW1wbGVSYW5nZSBz
ZWFyY2hSYW5nZSwgVmVjdG9yPE5vZGUqPiBub2RlcywgYm9vbCB3b3JkU3RhcnRCb3VuZGVkLCBi
b29sIHdvcmRFbmRCb3VuZGVkKQoreworICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gZmluZFJhbmdl
RnJvbU5vZGVMaXN0OiAlcyAlcyIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCksIHJlcHIoc2VhcmNoUmFu
Z2UpKTsKKyAgICBTdHJpbmcgc2VhcmNoQnVmZmVyOworICAgIHN0ZDo6b3B0aW9uYWw8Qm91bmRh
cnlQb2ludD4gc3RhcnQ7CisgICAgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBlbmQ7Cisg
ICAgCisgICAgaWYgKG5vZGVzLnNpemUoKSA8IDEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgCisgICAgZm9yIChhdXRvKiBub2RlIDogbm9kZXMpIHsKKyAgICAgICAgaWYgKG5v
ZGUpCisgICAgICAgICAgICBzZWFyY2hCdWZmZXIuYXBwZW5kKGRvd25jYXN0PFRleHQ+KG5vZGUp
LT5kYXRhKCkpOworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBzZWFyY2hTdGFydCA9IDA7Cisg
ICAgCisgICAgaWYgKG5vZGVzWzBdID09ICZzZWFyY2hSYW5nZS5zdGFydENvbnRhaW5lcigpKSB7
IC8vIDxNTUc+IGlzIHRoaXMgZXZlbiByaWdodD8gd2lsbCB0aGVzZSBwb2ludGVycyBiZSB0aGUg
c2FtZT8KKyAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBGT1VORCBTVEFSVCBDT05UQUlORVIi
KTsKKyAgICAgICAgc2VhcmNoU3RhcnQgPSBzZWFyY2hSYW5nZS5zdGFydE9mZnNldCgpOworICAg
IH0KKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtYXRjaEluZGV4OworICAgIAor
ICAgIHdoaWxlICghbWF0Y2hJbmRleCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IHNl
YXJjaEJ1ZmZlcjogJXMgJXMgJWQiLCBzZWFyY2hCdWZmZXIudXRmOCgpLmRhdGEoKSwgcXVlcnku
dXRmOCgpLmRhdGEoKSwgc2VhcmNoU3RhcnQpOworICAgICAgICBhdXRvIHBvdGVudGlhbEluZGV4
ID0gc2VhcmNoQnVmZmVyLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShxdWVyeSwgc2VhcmNoU3RhcnQp
OyAvLyA8TU1HPiBhbHNvIGlnbm9yZSBhY2NlbnRzIGFuZCBvdGhlciB0ZXh0IG1hcmtzCisKKyAg
ICAgICAgaWYgKHBvdGVudGlhbEluZGV4ID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIjxNTUc+IE5PIE1BVENIIEZPVU5EIik7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWF0Y2hJ
bmRleCA9IHBvdGVudGlhbEluZGV4OworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBJ
IFRISU5LIEkgRk9VTkQgQSBNQVRDSCEgJWQiLCAqbWF0Y2hJbmRleCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHN0YXJ0ID0gZ2V0Qm91bmRhcnlQb2ludEF0SW5kZXgoKm1hdGNoSW5k
ZXgsIG5vZGVzLCBmYWxzZSk7CisgICAgICAgIGVuZCA9IGdldEJvdW5kYXJ5UG9pbnRBdEluZGV4
KCptYXRjaEluZGV4ICsgcXVlcnkubGVuZ3RoKCksIG5vZGVzLCB0cnVlKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICgod29yZFN0YXJ0Qm91bmRlZCAmJiAhaW5kZXhJc1dvcmRCb3VuZGFyeShxdWVy
eSwgKm1hdGNoSW5kZXgpKSB8fCAod29yZEVuZEJvdW5kZWQgJiYgIWluZGV4SXNXb3JkQm91bmRh
cnkocXVlcnksICptYXRjaEluZGV4ICsgcXVlcnkubGVuZ3RoKCkpKSkgeworICAgICAgICAgICAg
c2VhcmNoU3RhcnQgPSAqbWF0Y2hJbmRleCArIDE7CisgICAgICAgICAgICBtYXRjaEluZGV4ID0g
c3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorICAgICAgICAKKyAgICB1bnNpZ25lZCBl
bmRJbnNldCA9IDA7CisgICAgaWYgKG5vZGVzLmxhc3QoKSA9PSAmc2VhcmNoUmFuZ2UuZW5kQ29u
dGFpbmVyKCkpIC8vIDxNTUc+IGlzIHRoaXMgZXZlbiByaWdodD8gd2lsbCB0aGVzZSBwb2ludGVy
cyBiZSB0aGUgc2FtZT8KKyAgICAgICAgZW5kSW5zZXQgPSBzZWFyY2hSYW5nZS5lbmRDb250YWlu
ZXIoKS5sZW5ndGgoKSAtIHNlYXJjaFJhbmdlLmVuZE9mZnNldCgpOworICAgIAorICAgIGlmICgq
bWF0Y2hJbmRleCArIHF1ZXJ5Lmxlbmd0aCgpID4gc2VhcmNoQnVmZmVyLmxlbmd0aCgpIC0gZW5k
SW5zZXQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgLy8gPE1NRz4g
QXNzZXJ0OiBzdGFydCBhbmQgZW5kIGFyZSBub24tbnVsbCwgdmFsaWQgYm91bmRhcnkgcG9pbnRz
IGluIHNlYXJjaFJhbmdlLgorICAgIAorICAgIHJldHVybiBTaW1wbGVSYW5nZSgqc3RhcnQsICpl
bmQpOworICAgIAorfQogCi0gICAgYXV0byBzZWFyY2hSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cyhkb2N1bWVudCk7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VPZlN0cmluZ0luUmFuZ2UoY29uc3QgU3RyaW5nJiBxdWVyeSwgU2ltcGxlUmFuZ2Ug
c2VhcmNoUmFuZ2UsIGJvb2wgd29yZFN0YXJ0Qm91bmRlZCwgYm9vbCB3b3JkRW5kQm91bmRlZCkK
K3sKKyAgICBXVEZMb2dBbHdheXMoIjxNTUc+IHJhbmdlT2ZTdHJpbmdJblJhbmdlOiAlcyAlcyIs
IHF1ZXJ5LnV0ZjgoKS5kYXRhKCksIHJlcHIoc2VhcmNoUmFuZ2UpKTsKKyAgICB3aGlsZSAoIXNl
YXJjaFJhbmdlLmNvbGxhcHNlZCgpKSB7CisgICAgICAgIE5vZGUqIGN1ck5vZGUgPSAmc2VhcmNo
UmFuZ2Uuc3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBTdGFy
dGluZyB3aXRoIEN1ck5vZGU6JXMiLCByZXByKGN1ck5vZGUpKTsKICAgICAKLSAgICBGaW5kT3B0
aW9ucyBmaW5kT3B0aW9ucyB7IERvTm90UmV2ZWFsU2VsZWN0aW9uIH07CisgICAgICAgIGlmIChp
c05vblNlYXJjaGFibGVTdWJ0cmVlKCpjdXJOb2RlKSkgeworICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCI8TU1HPiBOZXcgU2VhcmNoUmFuZ2U6JXMiLCByZXByKHNlYXJjaFJhbmdlKSk7CisgICAg
ICAgICAgICBpZiAoYXV0byBuZXdTdGFydCA9IG5leHRTa2lwcGluZ0NoaWxkcmVuSW5Db21wb3Nl
ZFRyZWVJZ25vcmluZ1VzZXJBZ2VudFNoYWRvdygqY3VyTm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICBzZWFyY2hSYW5nZS5zdGFydCA9IHsgKm5ld1N0YXJ0LCAwIH07IC8vIDxNTUc+IHRoZSBzcGVj
IGRvZXMgbm90IHNheSB0byBzZXQgb2Zmc2V0IHRvIDAgaGVyZSwgYnV0IEkgYmVsaWV2ZSB0aGF0
IHNob3VsZCBoYXBwZW4uIEZpbGUgb24gdGhlIHNwZWM/CisgICAgICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCI8TU1HPiBOZXcgU2VhcmNoUmFuZ2U6JXMiLCByZXByKHNlYXJjaFJhbmdlKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGN1ck5vZGUtPmlzVGV4dE5vZGUoKTogJXMiLCBj
dXJOb2RlLT5pc1RleHROb2RlKCkgPyAiWUVTIiA6ICJOTyIpOworICAgICAgICBXVEZMb2dBbHdh
eXMoIjxNTUc+IGN1ck5vZGUtPnJlbmRlcmVyKCk6ICVzIiwgY3VyTm9kZS0+cmVuZGVyZXIoKSA/
ICJZRVMiIDogIk5PIik7CisgICAgICAgIGlmIChjdXJOb2RlLT5yZW5kZXJlcigpKSB7CisgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGN1ck5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCku
dmlzaWJpbGl0eSgpOiAlcyIsIChjdXJOb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSA/ICJZRVMiIDogIk5PIik7CisKKyAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gY3VyTm9kZS0+cmVuZGVyZXIoKS5kaXNwbGF5KCk6ICVo
aHUiLCBjdXJOb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLmRpc3BsYXkoKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIAorICAgICAgICBpZiAoIShjdXJOb2RlLT5pc1RleHROb2RlKCkg
JiYgY3VyTm9kZS0+cmVuZGVyZXIoKSAmJiBjdXJOb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlKSkgeyAvLzxNTUc+IEZJWE1FOiBtYWtl
IHRoaXMgYSBmdW5jdGlvbj8KKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gSXNuJ3Qg
YSBUZXh0IE5vZGUiKTsKKyAgICAgICAgICAgIGlmIChhdXRvIG5ld1N0YXJ0ID0gbmV4dEluQ29t
cG9zZWRUcmVlSWdub3JpbmdVc2VyQWdlbnRTaGFkb3coKmN1ck5vZGUpKSAvLyA8TU1HPiB0aGF0
IGlzIG5vdCBhIGRvY1R5cGUKKyAgICAgICAgICAgICAgICBzZWFyY2hSYW5nZS5zdGFydCA9IHsg
Km5ld1N0YXJ0LCAwIH07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBhdXRvJiBibG9ja0FuY2VzdG9yID0gbmVhcmVzdEJsb2NrQW5jZXN0b3IoKmN1
ck5vZGUpOworICAgICAgICBWZWN0b3I8Tm9kZSo+IHRleHROb2RlTGlzdDsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCI8TU1HPiBibG9ja0FuY2VzdG9yOiVzIiwgcmVwcigmYmxvY2tBbmNlc3Rvcikp
OworICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGJlZm9yZSBhbmNlc3RvciBzZWFyY2g6ICVz
IiwgcmVwcihjdXJOb2RlKSk7CisgICAgICAgIHdoaWxlIChjdXJOb2RlLT5pc0Rlc2NlbmRhbnRP
ZihibG9ja0FuY2VzdG9yKSAmJiBpc19sdGVxKHRyZWVPcmRlcihCb3VuZGFyeVBvaW50KCpjdXJO
b2RlLDApLCBzZWFyY2hSYW5nZS5lbmQpKSkgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCI8
TU1HPiBzZWFyY2ggRm9yIE5vZGUiKTsKKyAgICAgICAgICAgIGlmIChjdXJOb2RlLT5yZW5kZXJl
cigpICYmIGlzPEVsZW1lbnQ+KGN1ck5vZGUpICYmIGN1ck5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpKSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlz
KCI8TU1HPiBoYXMgYmxvY2sgbGV2ZWwgZGlzcGxheSIpOworICAgICAgICAgICAgICAgIC8vY3Vy
Tm9kZS0+c2hvd1RyZWVGb3JUaGlzKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoaXNTZWFyY2hJbnZpc2libGUoKmN1ck5vZGUpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8gbmV3Tm9kZSA9IG5leHRJbkNvbXBvc2VkVHJlZUlnbm9y
aW5nVXNlckFnZW50U2hhZG93KCpjdXJOb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY3VyTm9k
ZSA9IG5ld05vZGU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChjdXJOb2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIjxNTUc+IGFwcGVuZGluZyB0ZXh0IE5vZGU6ICVzIiwgY3VyTm9kZS0+dGV4dENvbnRl
bnQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICB0ZXh0Tm9kZUxpc3QuYXBwZW5k
KGN1ck5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8gbmV3Tm9kZSA9
IG5leHRJbkNvbXBvc2VkVHJlZUlnbm9yaW5nVXNlckFnZW50U2hhZG93KCpjdXJOb2RlKSkKKyAg
ICAgICAgICAgICAgICBjdXJOb2RlID0gbmV3Tm9kZTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gZGlkbid0IGdldCBhIG5vZGUiKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBX
VEZMb2dBbHdheXMoIjxNTUc+IGFmdGVyIGFuY2VzdG9yIHNlYXJjaDogJXMiLCByZXByKGN1ck5v
ZGUpKTsKKyAgICAgICAgaWYgKGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2VGcm9tTm9kZUxpc3QocXVl
cnksIHNlYXJjaFJhbmdlLCB0ZXh0Tm9kZUxpc3QsIHdvcmRTdGFydEJvdW5kZWQsIHdvcmRFbmRC
b3VuZGVkKSkgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBmb3VuZCBSYW5nZTog
JXMiLCByZXByKHJhbmdlKSk7CisgICAgICAgICAgICByZXR1cm4gcmFuZ2U7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGN1ck5vZGUgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAvLyBGSVhNRTogQXNzZXJ0OiBjdXJOb2RlIGZvbGxvd3Mgc2VhcmNoUmFuZ2XigJlzIHN0YXJ0
IG5vZGUuCisgICAgICAgIC8vUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGlzX2d0KHRyZWVP
cmRlcihjdXJOb2RlLCBzZWFyY2hSYW5nZS5zdGFydCksICI8TU1HPiBjdXJyZW50IG5vZGUgaXMg
bm90IHBhc3Qgc3RhcnQiKSk7CisgICAgICAgIGlmIChpc19ndCh0cmVlT3JkZXIoQm91bmRhcnlQ
b2ludCgqY3VyTm9kZSwwKSwgc2VhcmNoUmFuZ2Uuc3RhcnQpKSkKKyAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiPE1NRz4gc2hvdWxkIGJlIGFzc2VydGluZyIpOworICAgICAgICBzZWFyY2hSYW5n
ZS5zdGFydCA9IHsgKmN1ck5vZGUsIDAgfTsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKK30KICAgICAKLSAgICBhdXRvIHJlc3VsdFJhbmdlID0gY29sbGFwc2VJZlJvb3RzRGlmZmVy
KGZpbmRQbGFpblRleHQoc2VhcmNoUmFuZ2UsIHRhcmdldCwgZmluZE9wdGlvbnMpKTsKKy8vICAg
IGlmICh0YXJnZXQuaXNFbXB0eSgpKQorLy8gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisv
LworLy8gICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBmaW5kaW5nOiAlcyIsIHRhcmdldC51dGY4KCku
ZGF0YSgpKTsKKy8vICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gaW4gcmFuZ2U6ICVzIiwgcmVwcihz
ZWFyY2hSYW5nZSkpOworLy8gICAgYXV0byByZXN1bHRSYW5nZSA9IGNvbGxhcHNlSWZSb290c0Rp
ZmZlcihmaW5kUGxhaW5UZXh0KHNlYXJjaFJhbmdlLCB0YXJnZXQpKTsKKy8vCisvLyAgICByZXR1
cm4gcmVzdWx0UmFuZ2UuY29sbGFwc2VkKCkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0
aW9uYWwocmVzdWx0UmFuZ2UpOworCitzdGF0aWMgdm9pZCBhZHZhbmNlUmFuZ2VTdGFydFRvTmV4
dE5vbldoaXRlc3BhY2UoU2ltcGxlUmFuZ2UmIHJhbmdlKQoreworICAgIFdURkxvZ0Fsd2F5cygi
PE1NRz4gYWR2YW5jZVJhbmdlU3RhcnRUb05leHROb25XaGl0ZXNwYWNlOiAlcyIsIHJlcHIocmFu
Z2UpKTsKKyAgICB3aGlsZSAoIXJhbmdlLmNvbGxhcHNlZCgpKSB7CisgICAgICAgIGF1dG8mIG5v
ZGUgPSByYW5nZS5zdGFydENvbnRhaW5lcigpOworICAgICAgICBhdXRvIG9mZnNldCA9IHJhbmdl
LnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNOb25TZWFyY2hhYmxlU3Vi
dHJlZShub2RlKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gbmV3U3RhcnQgPSBuZXh0SW5Db21w
b3NlZFRyZWVJZ25vcmluZ1VzZXJBZ2VudFNoYWRvdyhub2RlKSkKKyAgICAgICAgICAgICAgICBy
YW5nZS5zdGFydCA9IHsgKm5ld1N0YXJ0LCAwIH07CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAg
IHJldHVybiByZXN1bHRSYW5nZS5jb2xsYXBzZWQoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFr
ZV9vcHRpb25hbChyZXN1bHRSYW5nZSk7CisgICAgICAgIGlmICghbm9kZS5pc1RleHROb2RlKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIG5ld1N0YXJ0ID0gbmV4dEluQ29tcG9zZWRUcmVlSWdu
b3JpbmdVc2VyQWdlbnRTaGFkb3cobm9kZSkpCisgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQg
PSB7ICpuZXdTdGFydCwgMCB9OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBhdXRvIHN0cmluZyA9IG5vZGUudGV4dENvbnRlbnQoKS5zdWJzdHJpbmcob2Zmc2V0KTsKKyAg
ICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IG9mZnNldCkKKyAgICAgICAgICAgIHN0cmluZy5z
dWJzdHJpbmcob2Zmc2V0KTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0
aCgiJm5ic3A7IikpCisgICAgICAgICAgICBvZmZzZXQgKz0gNjsKKyAgICAgICAgCisgICAgICAg
IGlmIChzdHJpbmcuc3RhcnRzV2l0aCgiJm5ic3AiKSkKKyAgICAgICAgICAgIG9mZnNldCArPSA1
OworICAgICAgICAKKyAgICAgICAgaWYgKGlzU3BhY2VPck5ld2xpbmUoc3RyaW5nW29mZnNldF0p
KQorICAgICAgICAgICAgb2Zmc2V0Kys7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgICAgIGlmIChvZmZzZXQgPT0gbm9kZS5sZW5ndGgoKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gbmV3U3RhcnQgPSBuZXh0SW5Db21wb3NlZFRyZWVJZ25vcmluZ1Vz
ZXJBZ2VudFNoYWRvdyhub2RlKSkKKyAgICAgICAgICAgICAgICByYW5nZS5zdGFydCA9IHsgKm5l
d1N0YXJ0LCAwIH07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQogfQogCiBjb25zdCBWZWN0b3I8U2ltcGxlUmFuZ2U+IHJhbmdlc0Zv
ckZyYWdtZW50cyhWZWN0b3I8UGFyc2VkVGV4dERpcmVjdGl2ZT4mIHBhcnNlZFRleHREaXJlY3Rp
dmVzLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC02Miw4ICszMjcsNyBAQCBjb25zdCBWZWN0b3I8
U2ltcGxlUmFuZ2U+IHJhbmdlc0ZvckZyYWdtZW50cyhWZWN0b3I8UGFyc2VkVGV4dERpcmVjdGl2
ZT4mIHBhcnNlZAogICAgIFZlY3RvcjxTaW1wbGVSYW5nZT4gcmFuZ2VzOwogICAgIAogICAgIGZv
ciAoYXV0byBkaXJlY3RpdmUgOiBwYXJzZWRUZXh0RGlyZWN0aXZlcykgewotICAgICAgICAvLyBG
SVhNRTogZG8gZnVsbCBhbGdvcml0aG0gdG8gZmluZCB0aGUgZXhhY3QgdGV4dCBwaHJhc2UsIHJh
dGhlciB0aGFuIGp1c3Qgc2VhcmNoaW5nIGZvciB0aGUgZmlyc3QgcGxhY2UgdGhhdCB0aGUgdGV4
dCBpcwotICAgICAgICBhdXRvIHJhbmdlID0gcmFuZ2VPZlN0cmluZyhkaXJlY3RpdmUudGV4dFN0
YXJ0LCBkb2N1bWVudCk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvckZyYWdtZW50KGRp
cmVjdGl2ZSwgZG9jdW1lbnQpOwogICAgICAgICBpZiAocmFuZ2UgJiYgIXJhbmdlLT5jb2xsYXBz
ZWQoKSkKICAgICAgICAgICAgIHJhbmdlcy5hcHBlbmQocmFuZ2UudmFsdWUoKSk7CiAgICAgfQpA
QCAtNzEsNiArMzM1LDEwOCBAQCBjb25zdCBWZWN0b3I8U2ltcGxlUmFuZ2U+IHJhbmdlc0ZvckZy
YWdtZW50cyhWZWN0b3I8UGFyc2VkVGV4dERpcmVjdGl2ZT4mIHBhcnNlZAogICAgIHJldHVybiBy
YW5nZXM7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yRnJhZ21lbnQo
UGFyc2VkVGV4dERpcmVjdGl2ZSBwYXJzZWRUZXh0RGlyZWN0aXZlLCBEb2N1bWVudCYgZG9jdW1l
bnQpCit7CisgICAgYXV0byBzZWFyY2hSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cyhkb2N1bWVudCk7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWF0Y2hSYW5n
ZTsKKyAgICBib29sIG11c3RFbmRBdFdvcmRCb3VuZGFyeSA9IHBhcnNlZFRleHREaXJlY3RpdmUu
dGV4dEVuZC5pc051bGwoKSB8fCAhcGFyc2VkVGV4dERpcmVjdGl2ZS5zdWZmaXguaXNOdWxsKCk7
CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcG90ZW50aWFsTWF0Y2g7CisgICAgCisg
ICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBzZWFyY2hSYW5nZSAod2hvbGUgRG9jdW1lbnQpOiAlcyIs
IHJlcHIoc2VhcmNoUmFuZ2UpKTsKKyAgICB3aGlsZSAoIXNlYXJjaFJhbmdlLmNvbGxhcHNlZCgp
KSB7CisgICAgICAgIGlmICghcGFyc2VkVGV4dERpcmVjdGl2ZS5wcmVmaXguaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIGF1dG8gcHJlZml4TWF0Y2ggPSByYW5nZU9mU3RyaW5nSW5SYW5nZShwYXJz
ZWRUZXh0RGlyZWN0aXZlLnByZWZpeCwgc2VhcmNoUmFuZ2UsIHRydWUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGlmICghcHJlZml4TWF0Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gU2V0IHNlYXJjaFJhbmdl4oCZcyBz
dGFydCB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9pbnQgYWZ0ZXIgcHJlZml4TWF0Y2jigJlzIHN0
YXJ0CisgICAgICAgICAgICBhdXRvIG5ld1N0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQobWFrZUNv
bnRhaW5lck9mZnNldFBvc2l0aW9uKHByZWZpeE1hdGNoLT5zdGFydCkubmV4dCgpKTsKKyAgICAg
ICAgICAgIGlmICghbmV3U3RhcnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHNlYXJjaFJhbmdlLnN0YXJ0ID0gbmV3U3RhcnQudmFsdWUoKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgbWF0Y2hSYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShwcmVm
aXhNYXRjaC0+ZW5kLCBzZWFyY2hSYW5nZS5lbmQpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBBZHZhbmNlIG1hdGNoUmFuZ2XigJlzIHN0YXJ0IHRvIHRoZSBuZXh0IG5vbi13aGl0ZXNw
YWNlIHBvc2l0aW9uLgorICAgICAgICAgICAgYWR2YW5jZVJhbmdlU3RhcnRUb05leHROb25XaGl0
ZXNwYWNlKG1hdGNoUmFuZ2UudmFsdWUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
IChtYXRjaFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobWF0Y2hSYW5nZS0+c3Rh
cnQuY29udGFpbmVyLT5pc1RleHROb2RlKCksICJNYXRjaFJhbmdlIHN0YXJ0IGlzIG5vdCBhIFRl
eHQgTm9kZSIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaCA9IHJh
bmdlT2ZTdHJpbmdJblJhbmdlKHBhcnNlZFRleHREaXJlY3RpdmUudGV4dFN0YXJ0LCBtYXRjaFJh
bmdlLnZhbHVlKCksIGZhbHNlLCBtdXN0RW5kQXRXb3JkQm91bmRhcnkpOworICAgICAgICAgICAg
aWYgKCFwb3RlbnRpYWxNYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICAgICAgaWYgKHBvdGVudGlhbE1hdGNoLT5zdGFydCAhPSBtYXRjaFJhbmdlLT5z
dGFydCkgLy8gPE1NRz4gY29tcGFyZSBCUD8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8g
PE1NRz4gZG91YmxlIGNoZWNrIHRoaXM/CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGxvb2tpbmcgZm9yIG1hdGNoIGZv
ciBUZXh0U3RhcnQ6ICVzIixwYXJzZWRUZXh0RGlyZWN0aXZlLnRleHRTdGFydC51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIHBvdGVudGlhbE1hdGNoID0gcmFuZ2VPZlN0cmluZ0luUmFuZ2Uo
cGFyc2VkVGV4dERpcmVjdGl2ZS50ZXh0U3RhcnQsIHNlYXJjaFJhbmdlLCB0cnVlLCBtdXN0RW5k
QXRXb3JkQm91bmRhcnkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBXVEZMb2dBbHdheXMo
IjxNTUc+IHBvdGVudGlhbE1hdGNoICh3aXRob3V0IHByZWZpeCk6ICVzIiwgcmVwcihwb3RlbnRp
YWxNYXRjaCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXBvdGVudGlhbE1hdGNo
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIFNldCBzZWFyY2hSYW5nZeKAmXMgc3RhcnQgdG8gdGhlIGZpcnN0IGJvdW5k
YXJ5IHBvaW50IGFmdGVyIHBvdGVudGlhbE1hdGNoJ3Mgc3RhcnQKKyAgICAgICAgICAgIGF1dG8g
bmV3U3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24o
cG90ZW50aWFsTWF0Y2gtPnN0YXJ0KS5uZXh0KCkpOworICAgICAgICAgICAgaWYgKCFuZXdTdGFy
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgc2Vh
cmNoUmFuZ2Uuc3RhcnQgPSBuZXdTdGFydC52YWx1ZSgpOworICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCI8TU1HPiBzZWFyY2hSYW5nZSAoQWZ0ZXIgZmluZGluZyB0ZXh0U3RhcnQpOiAlcyIsIHJl
cHIoc2VhcmNoUmFuZ2UpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCI8TU1HPiBwb3RlbnRpYWxNYXRjaCAoYmVmb3JlIHVzaW5nIHRvIG1ha2UgcmFuZ2VFbmRT
ZWFyY2hSYW5nZSk6ICVzIiwgcmVwcihwb3RlbnRpYWxNYXRjaCkpOworICAgICAgICBXVEZMb2dB
bHdheXMoIjxNTUc+IHBvdGVudGlhbE1hdGNoIChlbmQpOiAlcyIsIHJlcHIocG90ZW50aWFsTWF0
Y2gtPmVuZCkpOworICAgICAgICBhdXRvIHJhbmdlRW5kU2VhcmNoUmFuZ2UgPSBtYWtlU2ltcGxl
UmFuZ2UocG90ZW50aWFsTWF0Y2gtPmVuZCwgc2VhcmNoUmFuZ2UuZW5kKTsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCI8TU1HPiByYW5nZUVuZFNlYXJjaFJhbmdlOiAlcyIsIHJlcHIocmFuZ2VFbmRT
ZWFyY2hSYW5nZSkpOworICAgICAgICB3aGlsZSAoIXJhbmdlRW5kU2VhcmNoUmFuZ2UuY29sbGFw
c2VkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcGFyc2VkVGV4dERpcmVjdGl2ZS50
ZXh0RW5kLmlzTnVsbCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG11c3RFbmRB
dFdvcmRCb3VuZGFyeSA9ICFwYXJzZWRUZXh0RGlyZWN0aXZlLnN1ZmZpeDsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBhdXRvIHRleHRFbmRNYXRjaCA9IHJhbmdlT2ZTdHJpbmdJ
blJhbmdlKHBhcnNlZFRleHREaXJlY3RpdmUudGV4dEVuZCwgcmFuZ2VFbmRTZWFyY2hSYW5nZSwg
dHJ1ZSwgbXVzdEVuZEF0V29yZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAoIXRleHRFbmRNYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwb3RlbnRpYWxN
YXRjaC0+ZW5kID0gdGV4dEVuZE1hdGNoLT5lbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAvLyBBc3NlcnQ6IHBvdGVudGlhbE1hdGNoIGlzIG5vbi1udWxsLCBub3QgY29sbGFwc2VkIGFu
ZCByZXByZXNlbnRzIGEgcmFuZ2UgZXhhY3RseSBjb250YWluaW5nIGFuIGluc3RhbmNlIG9mIG1h
dGNoaW5nIHRleHQuCisgICAgICAgICAgICBpZiAoIXBhcnNlZFRleHREaXJlY3RpdmUuc3VmZml4
KQorICAgICAgICAgICAgICAgIHJldHVybiBwb3RlbnRpYWxNYXRjaDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgYXV0byBzdWZmaXhSYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShwb3RlbnRpYWxN
YXRjaC0+ZW5kLCBzZWFyY2hSYW5nZS5lbmQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBBZHZhbmNlIHN1ZmZpeFJhbmdlJ3Mgc3RhcnQgdG8gdGhlIG5leHQgbm9uLXdoaXRlc3BhY2Ug
cG9zaXRpb24uCisgICAgICAgICAgICBhZHZhbmNlUmFuZ2VTdGFydFRvTmV4dE5vbldoaXRlc3Bh
Y2Uoc3VmZml4UmFuZ2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBhdXRvIHN1ZmZpeE1h
dGNoID0gcmFuZ2VPZlN0cmluZ0luUmFuZ2UocGFyc2VkVGV4dERpcmVjdGl2ZS5zdWZmaXgsIHN1
ZmZpeFJhbmdlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgh
c3VmZml4TWF0Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKHN1ZmZpeE1hdGNoLT5zdGFydCA9PSBzdWZmaXhSYW5n
ZS5zdGFydCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcG90ZW50aWFsTWF0Y2g7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChwYXJzZWRUZXh0RGlyZWN0aXZlLnRleHRFbmQuaXNOdWxs
KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDxNTUc+IGlzIHRoaXMgcmlnaHQ/PworICAg
ICAgICAgICAgCisgICAgICAgICAgICByYW5nZUVuZFNlYXJjaFJhbmdlLnN0YXJ0ID0gcG90ZW50
aWFsTWF0Y2gtPmVuZDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHJhbmdlRW5k
U2VhcmNoUmFuZ2UuY29sbGFwc2VkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghcGFyc2VkVGV4
dERpcmVjdGl2ZS50ZXh0RW5kLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAor
fSAvLyBGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyCisKIH0gLy8gV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyLmgKaW5kZXgg
NDRlYzMzNjRmNWYwNzBkMGZkNzExOGUyZTUwZGNmZWVkYmNjMGRmYi4uNTViMDIwMzlmYjZmZGVj
MTBmYTUyYmM4NjY2ZjM3NTM5NzBjMDk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0ZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RnJhZ21lbnREaXJlY3RpdmVSYW5nZUZpbmRlci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyIHsKIAog
Y29uc3QgVmVjdG9yPFNpbXBsZVJhbmdlPiByYW5nZXNGb3JGcmFnbWVudHMoVmVjdG9yPFBhcnNl
ZFRleHREaXJlY3RpdmU+JiBwYXJzZWRUZXh0RGlyZWN0aXZlcywgRG9jdW1lbnQmKTsKK3N0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yRnJhZ21lbnQoUGFyc2VkVGV4dERpcmVjdGl2
ZSBwYXJzZWRUZXh0RGlyZWN0aXZlLCBEb2N1bWVudCYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBjZjcxNDk1ZmY5ZDI0OWU1YTM1YmE1ZmE0YWUy
MDhlOWIwYzVlYWY5Li4yY2I0ZjQzZmQ3YjdhMjQyOWIxN2QwMjI3YzI5Y2MwODEzZTRmMTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0yMjMwLDcgKzIyMzAs
NyBAQCBuZXh0TWF0Y2g6CiAgICAgICAgIHx8IChtX29wdGlvbnMuY29udGFpbnMoQXRXb3JkU3Rh
cnRzKSAmJiAhaXNXb3JkU3RhcnRNYXRjaChtYXRjaFN0YXJ0LCBtYXRjaGVkTGVuZ3RoKSkKICAg
ICAgICAgfHwgKG1fb3B0aW9ucy5jb250YWlucyhBdFdvcmRFbmRzKSAmJiAhaXNXb3JkRW5kTWF0
Y2gobWF0Y2hTdGFydCwgbWF0Y2hlZExlbmd0aCkpKSB7CiAgICAgICAgIG1hdGNoU3RhcnQgPSB1
c2VhcmNoX25leHQoc2VhcmNoZXIsICZzdGF0dXMpOwotICAgICAgICBBU1NFUlQoc3RhdHVzID09
IFVfWkVST19FUlJPUik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzdGF0
dXMgPT0gVV9aRVJPX0VSUk9SLCAiYWN0dWFsIHN0YXR1czogJWQiLHN0YXR1cyk7CiAgICAgICAg
IGdvdG8gbmV4dE1hdGNoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwOTA1OGY3OWNlNzE3NTUwMzRmZGE4NDhkNDJhYzZhOTky
ZDQ0ZTY4Li44MjI1Y2ZmYTQ3MGRjZWI3NTQxYjBkNmVlMzY3OGQ5ZmE2MTI1MTM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTUyNyw2ICsx
NTI3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNEaXNwbGF5RmxleGlibGVPckdyaWRCb3goKSBj
b25zdCB7IHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveChkaXNwbGF5KCkpOyB9CiAg
ICAgYm9vbCBpc0Rpc3BsYXlGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWRPckdyaWRCb3go
KSBjb25zdCB7IHJldHVybiBpc0Rpc3BsYXlGbGV4aWJsZU9yR3JpZEJveCgpIHx8IGlzRGlzcGxh
eURlcHJlY2F0ZWRGbGV4aWJsZUJveChkaXNwbGF5KCkpOyB9CiAgICAgYm9vbCBpc0Rpc3BsYXlS
ZWdpb25UeXBlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Rpc3BsYXlCbG9ja0xldmVsKCkgY29uc3Q7
CiAgICAgYm9vbCBpc0Rpc3BsYXlUYWJsZU9yVGFibGVQYXJ0KCkgY29uc3QgeyByZXR1cm4gaXNE
aXNwbGF5VGFibGVPclRhYmxlUGFydChkaXNwbGF5KCkpOyB9CiAgICAgYm9vbCBpc09yaWdpbmFs
RGlzcGxheUxpc3RJdGVtVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheUxpc3RJdGVtVHlw
ZShvcmlnaW5hbERpc3BsYXkoKSk7IH0KIApAQCAtMjM4OSw2ICsyMzkwLDEzIEBAIGlubGluZSBi
b29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlSZWdpb25UeXBlKCkgY29uc3QKICAgICAgICAgfHwg
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbTsKIH0KIAoraW5saW5lIGJvb2wgUmVu
ZGVyU3R5bGU6OmlzRGlzcGxheUJsb2NrTGV2ZWwoKSBjb25zdAoreworICAgIHJldHVybiBkaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
VGFibGUKKyAgICAgICAgfHwgZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpGbG93Um9vdCB8fCBk
aXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkdyaWQKKyAgICAgICAgfHwgZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpGbGV4IHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW07Cit9
CisKIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB2
KQogewogICAgIGlmICh2ID09IHdyaXRpbmdNb2RlKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456959</attachid>
            <date>2022-04-07 13:13:14 -0700</date>
            <delta_ts>2022-04-07 13:34:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237558-20220407131313.patch</filename>
            <type>text/plain</type>
            <size>30947</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY1NzQ1ZTc3NDIzMGVj
ZmIzOGZiYTA3YjlhMjY3MGYyYWYyZjU5MS4uZDBlYmY4MTljNDBiNGFkMWU1YzE5OTQ5NDQ3NTc1
MmQ5Nzk4NjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAzLTA3ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgV0lQIFBhdGNo
IGZvciBTY3JvbGwgVG8gVGV4dCBGcmFnbWVudCBzZWFyY2hpbmcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc1NTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIGRvbS9Cb3VuZGFyeVBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
ciE9KToKKyAgICAgICAgKiBkb20vRnJhZ21lbnREaXJlY3RpdmVSYW5nZUZpbmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyOjppc1NlYXJjaElu
dmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVy
Ojppc05vblNlYXJjaGFibGVTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50RGly
ZWN0aXZlUmFuZ2VGaW5kZXI6Om5lYXJlc3RCbG9ja0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OmdldEJvdW5kYXJ5UG9pbnRBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OmluZGV4
SXNXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnREaXJlY3RpdmVSYW5n
ZUZpbmRlcjo6ZmluZFJhbmdlRnJvbU5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OnJhbmdlT2ZTdHJpbmdJblJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6OmFkdmFuY2VSYW5nZVN0YXJ0
VG9OZXh0Tm9uV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2
ZVJhbmdlRmluZGVyOjpyYW5nZXNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnREaXJlY3RpdmVSYW5nZUZpbmRlcjo6cmFuZ2VGb3JGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyOjpjb2xsYXBzZUlmUm9vdHNEaWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnREaXJlY3RpdmVSYW5nZUZp
bmRlcjo6cmFuZ2VPZlN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0ZyYWdtZW50RGly
ZWN0aXZlUmFuZ2VGaW5kZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZmZXI6OnNlYXJjaCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6aXNEaXNwbGF5QmxvY2tMZXZlbCBjb25zdCk6CisKIDIwMjItMDQtMDcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRqdXN0IGFuZCByZWZhY3Rv
ciBzb21lIFVBIHN0eWxlcyBhbmQgbG9naWMgZm9yIGluamVjdGluZyBMaXZlIFRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQm91bmRhcnlQb2ludC5oCmluZGV4IDcxYmUyYTI5YWVhYmI3OTY4MmMzMzA3YWQ2Nzcy
Y2JmNjQ5MDJmMDYuLjQ1NmMxYzhlMzIwMDFlMGEwYzgyYzcyMTg5OGJmNWRlOGI0ZmM5MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaApAQCAtNjgsNiArNjgsMTIgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50
JiBiKQogICAgIHJldHVybiBhLmNvbnRhaW5lci5wdHIoKSA9PSBiLmNvbnRhaW5lci5wdHIoKSAm
JiBhLm9mZnNldCA9PSBiLm9mZnNldDsKIH0KIAoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50JiBiKQoreworICAgIFdURkxv
Z0Fsd2F5cygiPE1NRz4gY29tcGFyaW5nIEJQOiAlcCAlcCIsIGEuY29udGFpbmVyLnB0cigpLGIu
Y29udGFpbmVyLnB0cigpKTsKKyAgICByZXR1cm4gYS5jb250YWluZXIucHRyKCkgIT0gYi5jb250
YWluZXIucHRyKCkgfHwgYS5vZmZzZXQgIT0gYi5vZmZzZXQ7Cit9CisKIGlubGluZSBCb3VuZGFy
eVBvaW50IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpCiB7
CiAgICAgcmV0dXJuIHsgbm9kZSwgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0ZyYWdtZW50RGlyZWN0aXZlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVu
dERpcmVjdGl2ZVBhcnNlci5jcHAKaW5kZXggMmE0NDQyYWNkY2Q4ZmE3ZWUxYzk0MmYyOGUwY2Yz
NDRhN2Y3ZGFjMy4uNGM2ZjIwNmQyY2U5MTkzY2U2Nzg1NTA3YWEyM2ZkZWQ4OTYwNjIxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnREaXJlY3RpdmVQYXJzZXIuY3BwCkBAIC0x
MDAsNyArMTAwLDcgQEAgdm9pZCBGcmFnbWVudERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VGcmFnbWVu
dERpcmVjdGl2ZShTdHJpbmdWaWV3IGZyYWdtZW50RGlyZWN0aXYKICAgICAgICAgUGFyc2VkVGV4
dERpcmVjdGl2ZSBwYXJzZWRUZXh0RGlyZWN0aXZlOwogICAgICAgICAKICAgICAgICAgaWYgKHRv
a2Vucy5maXJzdCgpLmVuZHNXaXRoKCctJykgJiYgdG9rZW5zLmZpcnN0KCkubGVuZ3RoKCkgPiAx
KSB7Ci0gICAgICAgICAgICB0b2tlbnMuZmlyc3QoKS50cnVuY2F0ZSh0b2tlbnMuZmlyc3QoKS5s
ZW5ndGgoKSAtIDIpOworICAgICAgICAgICAgdG9rZW5zLmZpcnN0KCkudHJ1bmNhdGUodG9rZW5z
LmZpcnN0KCkubGVuZ3RoKCkgLSAxKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGF1
dG8gcHJlZml4ID0gV1RGOjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUodG9rZW5zLnRha2VGaXJz
dCgpKSkKICAgICAgICAgICAgICAgICBwYXJzZWRUZXh0RGlyZWN0aXZlLnByZWZpeCA9IFdURk1v
dmUoKnByZWZpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnREaXJl
Y3RpdmVSYW5nZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnREaXJlY3Rp
dmVSYW5nZUZpbmRlci5jcHAKaW5kZXggNzExN2QyYzcwYmQ5MWU1YjMzODFmNTVmZGYxMDEwNTVj
ZGFjMzM2Yi4uM2UwOGNhOGVlOGY0NzZmZGZiMTcwM2EzMWIzNTg0N2MzM2I4M2E1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyLmNw
cApAQCAtMjYsMzUgKzI2LDM2NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZy
YWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXIuaCIKIAorI2luY2x1ZGUgIkhUTUxBdWRpb0VsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbWFn
ZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TE9iamVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTY3JpcHRFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbXBvc2VkVHJlZUl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKLSNpbmNsdWRlICJG
aW5kT3B0aW9ucy5oIgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFu
Z2UuaCIKKyNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgogCisjaW5jbHVkZSA8ZGJnX2VkaXRpbmcuaD4KKyNpbmNsdWRlIDxkYmdfZG9tLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBGcmFnbWVudERpcmVjdGl2ZVJhbmdlRmlu
ZGVyIHsKIAotc3RhdGljIFNpbXBsZVJhbmdlIGNvbGxhcHNlSWZSb290c0RpZmZlcihTaW1wbGVS
YW5nZSYmIHJhbmdlKQorLy9zdGF0aWMgU2ltcGxlUmFuZ2UgY29sbGFwc2VJZlJvb3RzRGlmZmVy
KFNpbXBsZVJhbmdlJiYgcmFuZ2UpCisvL3sKKy8vICAgIHJldHVybiAmcmFuZ2Uuc3RhcnQuY29u
dGFpbmVyLT5yb290Tm9kZSgpID09ICZyYW5nZS5lbmQuY29udGFpbmVyLT5yb290Tm9kZSgpCisv
LyAgICAgICAgPyBXVEZNb3ZlKHJhbmdlKSA6IFNpbXBsZVJhbmdlIHsgcmFuZ2Uuc3RhcnQsIHJh
bmdlLnN0YXJ0IH07CisvL30KKworc3RhdGljIGJvb2wgaXNTZWFyY2hJbnZpc2libGUoTm9kZSYg
bm9kZSkKK3sKKyAgICAvL1dURkxvZ0Fsd2F5cygiPE1NRz4gaXNTZWFyY2hJbnZpc2libGU6ICVz
IiwgcmVwcigmbm9kZSkpOworICAgIC8vIEZJWE1FOiBUaGUgY29tcHV0ZWQgdmFsdWUgb2YgaXRz
IGRpc3BsYXkgcHJvcGVydHkgaXMgbm9uZS4KKyAgICAKKyAgICAvLyBGSVhNRTogSWYgdGhlIG5v
ZGUgc2VyaWFsaXplcyBhcyB2b2lkLgorICAgIAorICAgIGlmIChpczxIVE1MSUZyYW1lRWxlbWVu
dD4obm9kZSkgfHwgaXM8SFRNTEltYWdlRWxlbWVudD4obm9kZSkgfHwgaXM8SFRNTE1ldGVyRWxl
bWVudD4obm9kZSkgfHwgaXM8SFRNTE9iamVjdEVsZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxQcm9n
cmVzc0VsZW1lbnQ+KG5vZGUpIHx8IGlzPEhUTUxTdHlsZUVsZW1lbnQ+KG5vZGUpIHx8IGlzPEhU
TUxTY3JpcHRFbGVtZW50Pihub2RlKSB8fCBpczxIVE1MVmlkZW9FbGVtZW50Pihub2RlKSB8fCBp
czxIVE1MQXVkaW9FbGVtZW50Pihub2RlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisg
ICAgCisgICAgLy8gRklYTUU6IElzIGEgc2VsZWN0IGVsZW1lbnQgd2hvc2UgbXVsdGlwbGUgY29u
dGVudCBhdHRyaWJ1dGUgaXMgYWJzZW50LgorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
c3RhdGljIGJvb2wgaXNOb25TZWFyY2hhYmxlU3VidHJlZShOb2RlJiBub2RlLCBib29sIGNhbGxz
aXRlKQoreworICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gaXNOb25TZWFyY2hhYmxlU3VidHJlZTog
JXMgJXMiLCByZXByKCZub2RlKSwgY2FsbHNpdGUgPyAiQ2FsbCBTaXRlIDEiIDogIkNhbGwgU2l0
ZSAyIik7CisgICAgTm9kZSogdHJhdmVyc2luZ05vZGUgPSAmbm9kZTsKKyAgICB3aGlsZSh0cmF2
ZXJzaW5nTm9kZSkgeworICAgICAgICBpZiAoaXNTZWFyY2hJbnZpc2libGUoKnRyYXZlcnNpbmdO
b2RlKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB0cmF2ZXJzaW5nTm9kZSA9
IHRyYXZlcnNpbmdOb2RlLT5wYXJlbnRJbkNvbXBvc2VkVHJlZSgpOworICAgIH0KKyAgICBXVEZM
b2dBbHdheXMoIjxNTUc+IGlzIHNlYXJjaGFibGUiKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0YXRpYyBOb2RlJiBuZWFyZXN0QmxvY2tBbmNlc3RvcihOb2RlJiBub2RlKQoreworICAgIFdU
RkxvZ0Fsd2F5cygiPE1NRz4gbmVhcmVzdEJsb2NrQW5jZXN0b3I6ICVzIiwgcmVwcigmbm9kZSkp
OworICAgIE5vZGUqIGN1ck5vZGUgPSAmbm9kZTsKKyAgICB3aGlsZSAoY3VyTm9kZSkKKyAgICB7
CisgICAgICAgIGlmICghY3VyTm9kZS0+aXNUZXh0Tm9kZSgpICYmIGN1ck5vZGUtPnJlbmRlcmVy
KCkgJiYgY3VyTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5pc0Rpc3BsYXlCbG9ja0xldmVsKCkp
CisgICAgICAgICAgICByZXR1cm4gKmN1ck5vZGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGN1ck5vZGUgPSBjdXJOb2RlLT5wYXJlbnRJbkNvbXBvc2VkVHJlZSgpOworICAgIH0KKyAgICBy
ZXR1cm4gbm9kZS5kb2N1bWVudCgpOworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxCb3VuZGFy
eVBvaW50PiBnZXRCb3VuZGFyeVBvaW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCwgVmVjdG9yPE5v
ZGUqPiB0ZXh0Tm9kZUxpc3QsIGJvb2wgaXNFbmQpCit7CisgICAgV1RGTG9nQWx3YXlzKCI8TU1H
PiBnZXRCb3VuZGFyeVBvaW50QXRJbmRleDogJWQiLCBpbmRleCk7CisgICAgdW5zaWduZWQgY291
bnRlZCA9IDA7CisgICAgCisgICAgZm9yIChhdXRvKiBjdXJOb2RlIDogdGV4dE5vZGVMaXN0KSB7
CisgICAgICAgIHVuc2lnbmVkIG5vZGVFbmQgPSBjb3VudGVkICsgY3VyTm9kZS0+bGVuZ3RoKCk7
CisgICAgICAgIGlmIChpc0VuZCkKKyAgICAgICAgICAgIG5vZGVFbmQrKzsKKyAgICAgICAgaWYg
KG5vZGVFbmQgPiBpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBCb3VuZGFyeVBvaW50KCpjdXJO
b2RlLCBpbmRleCAtIGNvdW50ZWQpOworICAgICAgICBjb3VudGVkICs9IGN1ck5vZGUtPmxlbmd0
aCgpOworICAgIH0KKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitzdGF0aWMgYm9vbCBp
bmRleElzV29yZEJvdW5kYXJ5KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBpbmRleCkK
IHsKLSAgICByZXR1cm4gJnJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cm9vdE5vZGUoKSA9PSAmcmFu
Z2UuZW5kLmNvbnRhaW5lci0+cm9vdE5vZGUoKQotICAgICAgICA/IFdURk1vdmUocmFuZ2UpIDog
U2ltcGxlUmFuZ2UgeyByYW5nZS5zdGFydCwgcmFuZ2Uuc3RhcnQgfTsKKyAgICBXVEZMb2dBbHdh
eXMoIjxNTUc+IGluZGV4SXNXb3JkQm91bmRhcnk6ICVzICVkIiwgc3RyaW5nLnV0ZjgoKS5kYXRh
KCksIGluZGV4KTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcihz
dHJpbmcpOworICAgIC8vKmVuZCA9IHVicmtfZm9sbG93aW5nKGl0LCBwb3NpdGlvbik7CisgICAg
cmV0dXJuIHVicmtfaXNCb3VuZGFyeShpdCwgaW5kZXgpOworLy8gICAgaWYgKCplbmQgPCAwKQor
Ly8gICAgICAgICplbmQgPSB1YnJrX2xhc3QoaXQpOworLy8gICAgKnN0YXJ0ID0gdWJya19wcmV2
aW91cyhpdCk7CiB9CisvKgorc3RhdGljIGJvb2wgaW5kZXhJc1dvcmRCb3VuZGFyeShjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgaW5kZXgpCit7CisgICAgV1RGTG9nQWx3YXlzKCI8TU1H
PiBpbmRleElzV29yZEJvdW5kYXJ5OiAlcyAlZCIsIHN0cmluZy51dGY4KCkuZGF0YSgpLCBpbmRl
eCk7CisgICAgaWYgKGluZGV4ID09IDAgfHwgaW5kZXggPT0gc3RyaW5nLmxlbmd0aCgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpbnQgc3RhcnRXb3JkID0gZmluZE5leHRXb3Jk
RnJvbUluZGV4KHN0cmluZywgMCwgdHJ1ZSk7CisvLyAgICBpZiAoc3RhcnRXb3JkID4gMCAmJiAo
dW5zaWduZWQpc3RhcnRXb3JkID09IGluZGV4KSB7CisvLyAgICAgICAgV1RGTG9nQWx3YXlzKCI8
TU1HPiBXSFkgRElETidUIEkgVFJZIFRISVMgQkVGT1JFPz86ICVzICVkIiwgc3RyaW5nLnV0Zjgo
KS5kYXRhKCksIGluZGV4KTsKKy8vICAgICAgICByZXR1cm4gdHJ1ZTsKKy8vICAgIH0KKy8vICAg
IEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFtIDw8ICJNTUc6IElTIE5PVCBXT1JEIEJPVU5E
QVJZISBzdGFydFdvcmQ6ICIgPDwgc3RhcnRXb3JkIDw8ICIgZm9ySW5kZXg6IiA8PCBpbmRleCk7
CisvLyAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgd2hpbGUoKHVuc2lnbmVkKXN0YXJ0V29y
ZCA8PSBpbmRleCkKKyAgICB7CisgICAgICAgIEFMV0FZU19MT0dfV0lUSF9TVFJFQU0oc3RyZWFt
IDw8ICJNTUc6IHN0YXJ0V29yZDogIiA8PCBzdGFydFdvcmQgPDwgIiBmb3JJbmRleDoiIDw8IGlu
ZGV4KTsKKyAgICAgICAgaWYgKCh1bnNpZ25lZClzdGFydFdvcmQgPT0gaW5kZXggfHwgKHVuc2ln
bmVkKShzdGFydFdvcmQgLSAxKSA9PSBpbmRleCkgeworICAgICAgICAgICAgQUxXQVlTX0xPR19X
SVRIX1NUUkVBTShzdHJlYW0gPDwgIk1NRzogSVMgV09SRCBCT1VOREFSWSEgc3RhcnRXb3JkOiAi
IDw8IHN0YXJ0V29yZCA8PCAiIGZvckluZGV4OiIgPDwgaW5kZXgpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgc3RhcnRXb3JkID0gZmluZE5leHRXb3JkRnJv
bUluZGV4KHN0cmluZywgc3RhcnRXb3JkLCB0cnVlKTsKKyAgICAgICAgaWYgKHN0YXJ0V29yZCA8
IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFMV0FZU19MT0dfV0lU
SF9TVFJFQU0oc3RyZWFtIDw8ICJNTUc6IElTIE5PVCBXT1JEIEJPVU5EQVJZISBzdGFydFdvcmQ6
ICIgPDwgc3RhcnRXb3JkIDw8ICIgZm9ySW5kZXg6IiA8PCBpbmRleCk7CisgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIAorICAgIAorLy8gICAgaWYgKGluZGV4ID09IDAgfHwgaW5kZXggPT0g
c3RyaW5nLmxlbmd0aCgpKQorLy8gICAgICAgIHJldHVybiB0cnVlOworLy8gICAgaW50IG5leHRX
b3JkID0gZmluZE5leHRXb3JkRnJvbUluZGV4KHN0cmluZywgaW5kZXgtMSwgdHJ1ZSk7CisvLyAg
ICBBTFdBWVNfTE9HX1dJVEhfU1RSRUFNKHN0cmVhbSA8PCAiTU1HOiBuZXh0V29yZDogIiA8PCBu
ZXh0V29yZCA8PCAiIGZyb21JbmRleDoiIDw8IGluZGV4LTEpOworLy8gICAgaWYgKG5leHRXb3Jk
ID4gMCAmJiAodW5zaWduZWQpbmV4dFdvcmQgPT0gaW5kZXgpIHsKKy8vICAgICAgICBXVEZMb2dB
bHdheXMoIjxNTUc+IEluZGV4IGlzIGF0IHdvcmQgQm91bmRhcnkhIik7CisvLyAgICAgICAgcmV0
dXJuIHRydWU7CisvLyAgICB9CisvLyAgICBpbnQgcHJldmlvdXNXb3JkID0gZmluZE5leHRXb3Jk
RnJvbUluZGV4KHN0cmluZywgaW5kZXgrMSwgZmFsc2UpOworLy8gICAgQUxXQVlTX0xPR19XSVRI
X1NUUkVBTShzdHJlYW0gPDwgIk1NRzogcHJldmlvdXNXb3JkOiAiIDw8IHByZXZpb3VzV29yZCA8
PCAiIGZyb21JbmRleDoiIDw8IGluZGV4KzEpOworLy8gICAgaWYgKG5leHRXb3JkID4gMCAmJiAo
dW5zaWduZWQpcHJldmlvdXNXb3JkID09IGluZGV4KSB7CisvLyAgICAgICAgV1RGTG9nQWx3YXlz
KCI8TU1HPiBJbmRleCBpcyBhdCB3b3JkIEJvdW5kYXJ5ISIpOworLy8gICAgICAgIHJldHVybiB0
cnVlOworLy8gICAgfQorLy8gICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBJbmRleCBpcyBfbm90XyBh
dCB3b3JkIEJvdW5kYXJ5Iik7CisvLyAgICByZXR1cm4gZmFsc2U7Cit9Ki8KIAotc3RhdGljIHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIERvY3VtZW50JiBkb2N1bWVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBmaW5kUmFuZ2VGcm9tTm9kZUxpc3QoY29uc3QgU3RyaW5nJiBxdWVyeSwgU2ltcGxlUmFuZ2Ug
c2VhcmNoUmFuZ2UsIFZlY3RvcjxOb2RlKj4gbm9kZXMsIGJvb2wgd29yZFN0YXJ0Qm91bmRlZCwg
Ym9vbCB3b3JkRW5kQm91bmRlZCkKIHsKLSAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKKyAgICBX
VEZMb2dBbHdheXMoIjxNTUc+IGZpbmRSYW5nZUZyb21Ob2RlTGlzdDogJXMgJXMgJXMgJXMiLCBx
dWVyeS51dGY4KCkuZGF0YSgpLCByZXByKHNlYXJjaFJhbmdlKSwgd29yZFN0YXJ0Qm91bmRlZCA/
ICJ3b3JkU3RhcnRCb3VuZGVkIiA6ICJubyIsIHdvcmRFbmRCb3VuZGVkID8gIndvcmRFbmRCb3Vu
ZGVkIiA6ICJubyIpOworICAgIFN0cmluZyBzZWFyY2hCdWZmZXI7CisgICAgc3RkOjpvcHRpb25h
bDxCb3VuZGFyeVBvaW50PiBzdGFydDsKKyAgICBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+
IGVuZDsKKyAgICAKKyAgICBpZiAobm9kZXMuc2l6ZSgpIDwgMSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2RlcykgeworICAgICAg
ICBpZiAobm9kZSkKKyAgICAgICAgICAgIHNlYXJjaEJ1ZmZlci5hcHBlbmQoZG93bmNhc3Q8VGV4
dD4obm9kZSktPmRhdGEoKSk7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIHNlYXJjaFN0YXJ0
ID0gMDsKKyAgICAKKyAgICBpZiAobm9kZXNbMF0gPT0gJnNlYXJjaFJhbmdlLnN0YXJ0Q29udGFp
bmVyKCkpIHsgLy8gPE1NRz4gaXMgdGhpcyBldmVuIHJpZ2h0PyB3aWxsIHRoZXNlIHBvaW50ZXJz
IGJlIHRoZSBzYW1lPworICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IEZPVU5EIFNUQVJUIENP
TlRBSU5FUiIpOworICAgICAgICBzZWFyY2hTdGFydCA9IHNlYXJjaFJhbmdlLnN0YXJ0T2Zmc2V0
KCk7CisgICAgfQorICAgIAorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1hdGNoSW5kZXg7
CisgICAgCisgICAgd2hpbGUgKCFtYXRjaEluZGV4KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
PE1NRz4gc2VhcmNoQnVmZmVyOiAlcyBxdWVyeTolcyBzZWFyY2hTdGFydDolZCIsIHNlYXJjaEJ1
ZmZlci51dGY4KCkuZGF0YSgpLCBxdWVyeS51dGY4KCkuZGF0YSgpLCBzZWFyY2hTdGFydCk7Cisg
ICAgICAgIGF1dG8gcG90ZW50aWFsSW5kZXggPSBzZWFyY2hCdWZmZXIuZmluZElnbm9yaW5nQVND
SUlDYXNlKHF1ZXJ5LCBzZWFyY2hTdGFydCk7IC8vIDxNTUc+IGFsc28gaWdub3JlIGFjY2VudHMg
YW5kIG90aGVyIHRleHQgbWFya3MKIAotICAgIGF1dG8gc2VhcmNoUmFuZ2UgPSBtYWtlUmFuZ2VT
ZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpOworICAgICAgICBpZiAocG90ZW50aWFsSW5k
ZXggPT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gTk8gTUFU
Q0ggRk9VTkQiKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtYXRjaEluZGV4ID0gcG90ZW50aWFsSW5kZXg7
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IEkgVEhJTksgSSBGT1VORCBBIE1BVENI
ISAlZCIsICptYXRjaEluZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhcnQg
PSBnZXRCb3VuZGFyeVBvaW50QXRJbmRleCgqbWF0Y2hJbmRleCwgbm9kZXMsIGZhbHNlKTsKKyAg
ICAgICAgZW5kID0gZ2V0Qm91bmRhcnlQb2ludEF0SW5kZXgoKm1hdGNoSW5kZXggKyBxdWVyeS5s
ZW5ndGgoKSwgbm9kZXMsIHRydWUpOworICAgICAgICAKKyAgICAgICAgaWYgKCh3b3JkU3RhcnRC
b3VuZGVkICYmICFpbmRleElzV29yZEJvdW5kYXJ5KHNlYXJjaEJ1ZmZlciwgKm1hdGNoSW5kZXgp
KSB8fCAod29yZEVuZEJvdW5kZWQgJiYgIWluZGV4SXNXb3JkQm91bmRhcnkoc2VhcmNoQnVmZmVy
LCAqbWF0Y2hJbmRleCArIHF1ZXJ5Lmxlbmd0aCgpKSkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiPE1NRz4gd29yZCBCb3VuZGFyeSBGYWlsIik7CisgICAgICAgICAgICBzZWFyY2hTdGFy
dCA9ICptYXRjaEluZGV4ICsgMTsKKyAgICAgICAgICAgIG1hdGNoSW5kZXggPSBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorICAgIHVuc2lnbmVkIGVuZEluc2V0ID0g
MDsKKyAgICBpZiAobm9kZXMubGFzdCgpID09ICZzZWFyY2hSYW5nZS5lbmRDb250YWluZXIoKSkg
Ly8gPE1NRz4gaXMgdGhpcyBldmVuIHJpZ2h0PyB3aWxsIHRoZXNlIHBvaW50ZXJzIGJlIHRoZSBz
YW1lPworICAgICAgICBlbmRJbnNldCA9IHNlYXJjaFJhbmdlLmVuZENvbnRhaW5lcigpLmxlbmd0
aCgpIC0gc2VhcmNoUmFuZ2UuZW5kT2Zmc2V0KCk7CisgICAgCisgICAgaWYgKCptYXRjaEluZGV4
ICsgcXVlcnkubGVuZ3RoKCkgPiBzZWFyY2hCdWZmZXIubGVuZ3RoKCkgLSBlbmRJbnNldCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICAvLyA8TU1HPiBBc3NlcnQ6IHN0
YXJ0IGFuZCBlbmQgYXJlIG5vbi1udWxsLCB2YWxpZCBib3VuZGFyeSBwb2ludHMgaW4gc2VhcmNo
UmFuZ2UuCisgICAgCisgICAgcmV0dXJuIFNpbXBsZVJhbmdlKCpzdGFydCwgKmVuZCk7CiAgICAg
Ci0gICAgRmluZE9wdGlvbnMgZmluZE9wdGlvbnMgeyBEb05vdFJldmVhbFNlbGVjdGlvbiB9Owor
fQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VPZlN0cmluZ0luUmFu
Z2UoY29uc3QgU3RyaW5nJiBxdWVyeSwgU2ltcGxlUmFuZ2Ugc2VhcmNoUmFuZ2UsIGJvb2wgd29y
ZFN0YXJ0Qm91bmRlZCwgYm9vbCB3b3JkRW5kQm91bmRlZCkKK3sKKyAgICBXVEZMb2dBbHdheXMo
IjxNTUc+IHJhbmdlT2ZTdHJpbmdJblJhbmdlOiAlcyAlcyIsIHF1ZXJ5LnV0ZjgoKS5kYXRhKCks
IHJlcHIoc2VhcmNoUmFuZ2UpKTsKKyAgICB3aGlsZSAoIXNlYXJjaFJhbmdlLmNvbGxhcHNlZCgp
KSB7CisgICAgICAgIE5vZGUqIGN1ck5vZGUgPSAmc2VhcmNoUmFuZ2Uuc3RhcnRDb250YWluZXIo
KTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBTdGFydGluZyB3aXRoIEN1ck5vZGU6JXMi
LCByZXByKGN1ck5vZGUpKTsKICAgICAKLSAgICBhdXRvIHJlc3VsdFJhbmdlID0gY29sbGFwc2VJ
ZlJvb3RzRGlmZmVyKGZpbmRQbGFpblRleHQoc2VhcmNoUmFuZ2UsIHRhcmdldCwgZmluZE9wdGlv
bnMpKTsKKyAgICAgICAgaWYgKGlzTm9uU2VhcmNoYWJsZVN1YnRyZWUoKmN1ck5vZGUsIHRydWUp
KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IE5ldyBTZWFyY2hSYW5nZTolcyIs
IHJlcHIoc2VhcmNoUmFuZ2UpKTsKKyAgICAgICAgICAgIGlmIChhdXRvIG5ld1N0YXJ0ID0gbmV4
dFNraXBwaW5nQ2hpbGRyZW5JbkNvbXBvc2VkVHJlZUlnbm9yaW5nVXNlckFnZW50U2hhZG93KCpj
dXJOb2RlKSkgeworICAgICAgICAgICAgICAgIHNlYXJjaFJhbmdlLnN0YXJ0ID0geyAqbmV3U3Rh
cnQsIDAgfTsgLy8gPE1NRz4gdGhlIHNwZWMgZG9lcyBub3Qgc2F5IHRvIHNldCBvZmZzZXQgdG8g
MCBoZXJlLCBidXQgSSBiZWxpZXZlIHRoYXQgc2hvdWxkIGhhcHBlbi4gRmlsZSBvbiB0aGUgc3Bl
Yz8KKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IE5ldyBTZWFyY2hSYW5nZTol
cyIsIHJlcHIoc2VhcmNoUmFuZ2UpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gY3Vy
Tm9kZS0+aXNUZXh0Tm9kZSgpOiAlcyIsIGN1ck5vZGUtPmlzVGV4dE5vZGUoKSA/ICJZRVMiIDog
Ik5PIik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gY3VyTm9kZS0+cmVuZGVyZXIoKTog
JXMiLCBjdXJOb2RlLT5yZW5kZXJlcigpID8gIllFUyIgOiAiTk8iKTsKKyAgICAgICAgaWYgKGN1
ck5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gY3Vy
Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCk6ICVzIiwgKGN1ck5vZGUtPnJl
bmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpID8g
IllFUyIgOiAiTk8iKTsKIAotICAgIHJldHVybiByZXN1bHRSYW5nZS5jb2xsYXBzZWQoKSA/IHN0
ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChyZXN1bHRSYW5nZSk7CisgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIjxNTUc+IGN1ck5vZGUtPnJlbmRlcmVyKCkuZGlzcGxheSgpOiAlaGh1
IiwgY3VyTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5kaXNwbGF5KCkpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICAKKyAgICAgICAgaWYgKCEoY3VyTm9kZS0+aXNUZXh0Tm9kZSgpICYm
IGN1ck5vZGUtPnJlbmRlcmVyKCkgJiYgY3VyTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS52aXNp
YmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkpIHsgLy88TU1HPiBGSVhNRTogbWFrZSB0
aGlzIGEgZnVuY3Rpb24/CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IElzbid0IGEg
VGV4dCBOb2RlIik7CisgICAgICAgICAgICBpZiAoYXV0byBuZXdTdGFydCA9IG5leHRJbkNvbXBv
c2VkVHJlZUlnbm9yaW5nVXNlckFnZW50U2hhZG93KCpjdXJOb2RlKSkgLy8gPE1NRz4gdGhhdCBp
cyBub3QgYSBkb2NUeXBlCisgICAgICAgICAgICAgICAgc2VhcmNoUmFuZ2Uuc3RhcnQgPSB7ICpu
ZXdTdGFydCwgMCB9OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgYXV0byYgYmxvY2tBbmNlc3RvciA9IG5lYXJlc3RCbG9ja0FuY2VzdG9yKCpjdXJO
b2RlKTsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiB0ZXh0Tm9kZUxpc3Q7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiPE1NRz4gYmxvY2tBbmNlc3RvcjolcyIsIHJlcHIoJmJsb2NrQW5jZXN0b3IpKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBiZWZvcmUgYW5jZXN0b3Igc2VhcmNoOiAlcyIs
IHJlcHIoY3VyTm9kZSkpOworICAgICAgICB3aGlsZSAoY3VyTm9kZS0+aXNEZXNjZW5kYW50T2Yo
YmxvY2tBbmNlc3RvcikgJiYgaXNfbHRlcSh0cmVlT3JkZXIoQm91bmRhcnlQb2ludCgqY3VyTm9k
ZSwwKSwgc2VhcmNoUmFuZ2UuZW5kKSkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1N
Rz4gc2VhcmNoIEZvciBOb2RlIik7CisgICAgICAgICAgICBpZiAoY3VyTm9kZS0+cmVuZGVyZXIo
KSAmJiBpczxFbGVtZW50PihjdXJOb2RlKSAmJiBjdXJOb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgp
LmlzRGlzcGxheUJsb2NrTGV2ZWwoKSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
PE1NRz4gaGFzIGJsb2NrIGxldmVsIGRpc3BsYXkiKTsKKyAgICAgICAgICAgICAgICAvL2N1ck5v
ZGUtPnNob3dUcmVlRm9yVGhpcygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGlzU2VhcmNoSW52aXNpYmxlKCpjdXJOb2RlKSkgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIG5ld05vZGUgPSBuZXh0SW5Db21wb3NlZFRyZWVJZ25vcmlu
Z1VzZXJBZ2VudFNoYWRvdygqY3VyTm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGN1ck5vZGUg
PSBuZXdOb2RlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoY3VyTm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCI8TU1HPiBhcHBlbmRpbmcgdGV4dCBOb2RlOiAlcyIsIGN1ck5vZGUtPnRleHRDb250ZW50
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgdGV4dE5vZGVMaXN0LmFwcGVuZChj
dXJOb2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvIG5ld05vZGUgPSBu
ZXh0SW5Db21wb3NlZFRyZWVJZ25vcmluZ1VzZXJBZ2VudFNoYWRvdygqY3VyTm9kZSkpCisgICAg
ICAgICAgICAgICAgY3VyTm9kZSA9IG5ld05vZGU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGRpZG4ndCBnZXQgYSBub2RlIik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgV1RG
TG9nQWx3YXlzKCI8TU1HPiBhZnRlciBhbmNlc3RvciBzZWFyY2g6ICVzIiwgcmVwcihjdXJOb2Rl
KSk7CisgICAgICAgIGlmIChhdXRvIHJhbmdlID0gZmluZFJhbmdlRnJvbU5vZGVMaXN0KHF1ZXJ5
LCBzZWFyY2hSYW5nZSwgdGV4dE5vZGVMaXN0LCB3b3JkU3RhcnRCb3VuZGVkLCB3b3JkRW5kQm91
bmRlZCkpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gZm91bmQgUmFuZ2U6ICVz
IiwgcmVwcihyYW5nZSkpOworICAgICAgICAgICAgcmV0dXJuIHJhbmdlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChjdXJOb2RlID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Ly8gRklYTUU6IEFzc2VydDogY3VyTm9kZSBmb2xsb3dzIHNlYXJjaFJhbmdl4oCZcyBzdGFydCBu
b2RlLgorICAgICAgICAvL1JFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShpc19ndCh0cmVlT3Jk
ZXIoY3VyTm9kZSwgc2VhcmNoUmFuZ2Uuc3RhcnQpLCAiPE1NRz4gY3VycmVudCBub2RlIGlzIG5v
dCBwYXN0IHN0YXJ0IikpOworICAgICAgICBpZiAoaXNfZ3QodHJlZU9yZGVyKEJvdW5kYXJ5UG9p
bnQoKmN1ck5vZGUsMCksIHNlYXJjaFJhbmdlLnN0YXJ0KSkpCisgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIjxNTUc+IHNob3VsZCBiZSBhc3NlcnRpbmciKTsKKyAgICAgICAgc2VhcmNoUmFuZ2Uu
c3RhcnQgPSB7ICpjdXJOb2RlLCAwIH07CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisgICAgCisvLyAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKKy8vICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworLy8KKy8vICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gZmluZGluZzogJXMi
LCB0YXJnZXQudXRmOCgpLmRhdGEoKSk7CisvLyAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGluIHJh
bmdlOiAlcyIsIHJlcHIoc2VhcmNoUmFuZ2UpKTsKKy8vICAgIGF1dG8gcmVzdWx0UmFuZ2UgPSBj
b2xsYXBzZUlmUm9vdHNEaWZmZXIoZmluZFBsYWluVGV4dChzZWFyY2hSYW5nZSwgdGFyZ2V0KSk7
CisvLworLy8gICAgcmV0dXJuIHJlc3VsdFJhbmdlLmNvbGxhcHNlZCgpID8gc3RkOjpudWxsb3B0
IDogc3RkOjptYWtlX29wdGlvbmFsKHJlc3VsdFJhbmdlKTsKKworc3RhdGljIHZvaWQgYWR2YW5j
ZVJhbmdlU3RhcnRUb05leHROb25XaGl0ZXNwYWNlKFNpbXBsZVJhbmdlJiByYW5nZSkKK3sKKyAg
ICBXVEZMb2dBbHdheXMoIjxNTUc+IGFkdmFuY2VSYW5nZVN0YXJ0VG9OZXh0Tm9uV2hpdGVzcGFj
ZTogJXMiLCByZXByKHJhbmdlKSk7CisgICAgd2hpbGUgKCFyYW5nZS5jb2xsYXBzZWQoKSkgewor
ICAgICAgICBhdXRvJiBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgYXV0
byBvZmZzZXQgPSByYW5nZS5zdGFydE9mZnNldCgpOworICAgICAgICAKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCI8TU1HPiBhZHZhbmNlUmFuZ2VTdGFydFRvTmV4dE5vbldoaXRlc3BhY2UgOiVzIG9m
ZnNldDogJXUiLCAgcmVwcigmbm9kZSksIG9mZnNldCk7CisgICAgICAgIAorICAgICAgICBpZiAo
aXNOb25TZWFyY2hhYmxlU3VidHJlZShub2RlLCBmYWxzZSkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIG5ld1N0YXJ0ID0gbmV4dEluQ29tcG9zZWRUcmVlSWdub3JpbmdVc2VyQWdlbnRTaGFkb3co
bm9kZSkpIHsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIjxNTUc+IGFkdmFuY2luZyBz
dGFydCB0byA6JXMgZnJvbTogJXMiLCByZXByKG5ld1N0YXJ0KSwgcmVwcigmbm9kZSkpOworICAg
ICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0geyAqbmV3U3RhcnQsIDAgfTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1N
Rz4gY291bGRuJ3QgYWN0dWFsbHkgYWR2YW5jZSwgSSB0aGluayB0aGlzIGlzIGEgYmlnIHByb2Js
ZW0uLi46JXMiLCByZXByKCZub2RlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gPE1N
Rz4gb2J2aW91bHN5IGNvbWVzIGhlcmUuLi4gZmlyZ3VyIHdvdXQgd2h5IHdlJ3JlIG5vdCBhZHZh
bmNpbmcuLi4KKyAgICAgICAgaWYgKCFub2RlLmlzVGV4dE5vZGUoKSB8fCAobm9kZS5yZW5kZXJl
cigpICYmIG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0
eTo6VmlzaWJsZSkpIHsvLyA8TU1HPiB0aGlzIG5lZWQgdG8gY2hlY2sgZm9yIHZpc2libGUuLgor
ICAgICAgICAgICAgaWYgKGF1dG8gbmV3U3RhcnQgPSBuZXh0SW5Db21wb3NlZFRyZWVJZ25vcmlu
Z1VzZXJBZ2VudFNoYWRvdyhub2RlKSkgeworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
PE1NRz4gYWR2YW5jaW5nIHN0YXJ0KDEpIHRvIDolcyBmcm9tOiAlcyIsIHJlcHIobmV3U3RhcnQp
LCByZXByKCZub2RlKSk7CisgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQgPSB7ICpuZXdTdGFy
dCwgMCB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gaXMgYSB0ZXh0IG5vZGUiKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIDxNTUc+IEkgYWRkZWQgdGhpcywgSSBkb24ndCBrbm93IHdoeS4uLgor
ICAgICAgICBhdXRvIHN0cmluZyA9IG5vZGUudGV4dENvbnRlbnQoKS5zdWJzdHJpbmcob2Zmc2V0
KTsKKyAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IG9mZnNldCkKKyAgICAgICAgICAgIHN0
cmluZy5zdWJzdHJpbmcob2Zmc2V0KTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBzdHJp
bmc/ICVzIiwgc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIAorICAgICAgICBpZiAo
c3RyaW5nLnN0YXJ0c1dpdGgoIiZuYnNwOyIpKQorICAgICAgICAgICAgb2Zmc2V0ICs9IDY7Cisg
ICAgICAgIAorICAgICAgICBpZiAoc3RyaW5nLnN0YXJ0c1dpdGgoIiZuYnNwIikpCisgICAgICAg
ICAgICBvZmZzZXQgKz0gNTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc1NwYWNlT3JOZXdsaW5l
KHN0cmluZ1tvZmZzZXRdKSkKKyAgICAgICAgICAgIG9mZnNldCsrOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBpZiAob2Zmc2V0ID09IG5vZGUu
bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIG5ld1N0YXJ0ID0gbmV4dEluQ29tcG9z
ZWRUcmVlSWdub3JpbmdVc2VyQWdlbnRTaGFkb3cobm9kZSkpIHsKKyAgICAgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIjxNTUc+IGFkdmFuY2luZyBzdGFydCgyKSB0byA6JXMgZnJvbTogJXMiLCBy
ZXByKG5ld1N0YXJ0KSwgcmVwcigmbm9kZSkpOworICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0
ID0geyAqbmV3U3RhcnQsIDAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmFuZ2Uuc3RhcnQgPSB7IG5vZGUsIG9mZnNldCB9OworICAgIH0KIH0KIAogY29uc3QgVmVj
dG9yPFNpbXBsZVJhbmdlPiByYW5nZXNGb3JGcmFnbWVudHMoVmVjdG9yPFBhcnNlZFRleHREaXJl
Y3RpdmU+JiBwYXJzZWRUZXh0RGlyZWN0aXZlcywgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNjIs
OCArMzk0LDcgQEAgY29uc3QgVmVjdG9yPFNpbXBsZVJhbmdlPiByYW5nZXNGb3JGcmFnbWVudHMo
VmVjdG9yPFBhcnNlZFRleHREaXJlY3RpdmU+JiBwYXJzZWQKICAgICBWZWN0b3I8U2ltcGxlUmFu
Z2U+IHJhbmdlczsKICAgICAKICAgICBmb3IgKGF1dG8gZGlyZWN0aXZlIDogcGFyc2VkVGV4dERp
cmVjdGl2ZXMpIHsKLSAgICAgICAgLy8gRklYTUU6IGRvIGZ1bGwgYWxnb3JpdGhtIHRvIGZpbmQg
dGhlIGV4YWN0IHRleHQgcGhyYXNlLCByYXRoZXIgdGhhbiBqdXN0IHNlYXJjaGluZyBmb3IgdGhl
IGZpcnN0IHBsYWNlIHRoYXQgdGhlIHRleHQgaXMKLSAgICAgICAgYXV0byByYW5nZSA9IHJhbmdl
T2ZTdHJpbmcoZGlyZWN0aXZlLnRleHRTdGFydCwgZG9jdW1lbnQpOworICAgICAgICBhdXRvIHJh
bmdlID0gcmFuZ2VGb3JGcmFnbWVudChkaXJlY3RpdmUsIGRvY3VtZW50KTsKICAgICAgICAgaWYg
KHJhbmdlICYmICFyYW5nZS0+Y29sbGFwc2VkKCkpCiAgICAgICAgICAgICByYW5nZXMuYXBwZW5k
KHJhbmdlLnZhbHVlKCkpOwogICAgIH0KQEAgLTcxLDYgKzQwMiwxMTQgQEAgY29uc3QgVmVjdG9y
PFNpbXBsZVJhbmdlPiByYW5nZXNGb3JGcmFnbWVudHMoVmVjdG9yPFBhcnNlZFRleHREaXJlY3Rp
dmU+JiBwYXJzZWQKICAgICByZXR1cm4gcmFuZ2VzOwogfQogCitzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiByYW5nZUZvckZyYWdtZW50KFBhcnNlZFRleHREaXJlY3RpdmUgcGFyc2VkVGV4dERp
cmVjdGl2ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGF1dG8gc2VhcmNoUmFuZ2UgPSBt
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpOworICAgIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IG1hdGNoUmFuZ2U7CisgICAgYm9vbCBtdXN0RW5kQXRXb3JkQm91bmRh
cnkgPSAhcGFyc2VkVGV4dERpcmVjdGl2ZS50ZXh0RW5kLmlzTnVsbCgpIHx8IHBhcnNlZFRleHRE
aXJlY3RpdmUuc3VmZml4LmlzTnVsbCgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IHBvdGVudGlhbE1hdGNoOworICAgIAorICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gc2VhcmNoUmFu
Z2UgKHdob2xlIERvY3VtZW50KTogJXMiLCByZXByKHNlYXJjaFJhbmdlKSk7CisgICAgd2hpbGUg
KCFzZWFyY2hSYW5nZS5jb2xsYXBzZWQoKSkgeworICAgICAgICBpZiAoIXBhcnNlZFRleHREaXJl
Y3RpdmUucHJlZml4LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhdXRvIHByZWZpeE1hdGNoID0g
cmFuZ2VPZlN0cmluZ0luUmFuZ2UocGFyc2VkVGV4dERpcmVjdGl2ZS5wcmVmaXgsIHNlYXJjaFJh
bmdlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICBpZiAoIXByZWZpeE1hdGNoKQorICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIFNldCBzZWFyY2hSYW5nZeKAmXMgc3RhcnQgdG8gdGhlIGZpcnN0IGJvdW5kYXJ5IHBvaW50
IGFmdGVyIHByZWZpeE1hdGNo4oCZcyBzdGFydAorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCI8
TU1HPiBwcmVmaXhNYXRjaC0+c3RhcnQ6ICVzIiwgcmVwcihwcmVmaXhNYXRjaC0+c3RhcnQpKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3U3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChtYWtlQ29udGFp
bmVyT2Zmc2V0UG9zaXRpb24ocHJlZml4TWF0Y2gtPnN0YXJ0KS5uZXh0KCkpOworICAgICAgICAg
ICAgaWYgKCFuZXdTdGFydCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICAgICAgc2VhcmNoUmFuZ2Uuc3RhcnQgPSBuZXdTdGFydC52YWx1ZSgpOworICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBzZWFyY2hSYW5nZS5zdGFydDogJXMiLCByZXByKHNl
YXJjaFJhbmdlLnN0YXJ0KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1hdGNoUmFuZ2Ug
PSBtYWtlU2ltcGxlUmFuZ2UocHJlZml4TWF0Y2gtPmVuZCwgc2VhcmNoUmFuZ2UuZW5kKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gQWR2YW5jZSBtYXRjaFJhbmdl4oCZcyBzdGFydCB0
byB0aGUgbmV4dCBub24td2hpdGVzcGFjZSBwb3NpdGlvbi4KKyAgICAgICAgICAgIGFkdmFuY2VS
YW5nZVN0YXJ0VG9OZXh0Tm9uV2hpdGVzcGFjZShtYXRjaFJhbmdlLnZhbHVlKCkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAobWF0Y2hSYW5nZS0+Y29sbGFwc2VkKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QVNTRVJUKG1hdGNoUmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci0+aXNUZXh0Tm9kZSgpLCAiTWF0Y2hS
YW5nZSBzdGFydCBpcyBub3QgYSBUZXh0IE5vZGUiKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgcG90ZW50aWFsTWF0Y2ggPSByYW5nZU9mU3RyaW5nSW5SYW5nZShwYXJzZWRUZXh0RGlyZWN0
aXZlLnRleHRTdGFydCwgbWF0Y2hSYW5nZS52YWx1ZSgpLCBmYWxzZSwgbXVzdEVuZEF0V29yZEJv
dW5kYXJ5KTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gcG90ZW50aWFsTWF0Y2gg
KHdpdGggcHJlZml4KTogJXMiLCByZXByKHBvdGVudGlhbE1hdGNoKSk7CisgICAgICAgICAgICBp
ZiAoIXBvdGVudGlhbE1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgICAgICBpZiAocG90ZW50aWFsTWF0Y2gtPnN0YXJ0ICE9IG1hdGNoUmFuZ2UtPnN0
YXJ0KSB7ICAvLyA8TU1HPiBjb21wYXJlIEJQPworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiPE1NRz4gcG90ZW50aWxNYXRjaCBhbmQgbWF0Y2ggUmFuZ2UgZG8gbm90IC4uLiBtYXRjaCIp
OworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gcG90ZW50aWFsTWF0Y2gtPnN0
YXJ0OiAlcyBtYXRjaFJhbmdlLT5zdGFydDogJXMiLCByZXByKHBvdGVudGlhbE1hdGNoLT5zdGFy
dCksIHJlcHIocG90ZW50aWFsTWF0Y2gtPnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7IC8vIDxNTUc+IGRvdWJsZSBjaGVjayB0aGlzPworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1H
PiBsb29raW5nIGZvciBtYXRjaCBmb3IgVGV4dFN0YXJ0OiAlcyIscGFyc2VkVGV4dERpcmVjdGl2
ZS50ZXh0U3RhcnQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBwb3RlbnRpYWxNYXRjaCA9
IHJhbmdlT2ZTdHJpbmdJblJhbmdlKHBhcnNlZFRleHREaXJlY3RpdmUudGV4dFN0YXJ0LCBzZWFy
Y2hSYW5nZSwgdHJ1ZSwgbXVzdEVuZEF0V29yZEJvdW5kYXJ5KTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBwb3RlbnRpYWxNYXRjaCAod2l0aG91dCBwcmVm
aXgpOiAlcyIsIHJlcHIocG90ZW50aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKCFwb3RlbnRpYWxNYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBTZXQgc2VhcmNoUmFuZ2XigJlzIHN0
YXJ0IHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb2ludCBhZnRlciBwb3RlbnRpYWxNYXRjaCdzIHN0
YXJ0CisgICAgICAgICAgICBhdXRvIG5ld1N0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQobWFrZUNv
bnRhaW5lck9mZnNldFBvc2l0aW9uKHBvdGVudGlhbE1hdGNoLT5zdGFydCkubmV4dCgpKTsKKyAg
ICAgICAgICAgIGlmICghbmV3U3RhcnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHNlYXJjaFJhbmdlLnN0YXJ0ID0gbmV3U3RhcnQudmFsdWUoKTsK
KyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gc2VhcmNoUmFuZ2UgKEFmdGVyIGZpbmRp
bmcgdGV4dFN0YXJ0KTogJXMiLCByZXByKHNlYXJjaFJhbmdlKSk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gcG90ZW50aWFsTWF0Y2ggKGJlZm9yZSB1
c2luZyB0byBtYWtlIHJhbmdlRW5kU2VhcmNoUmFuZ2UpOiAlcyIsIHJlcHIocG90ZW50aWFsTWF0
Y2gpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCI8TU1HPiBwb3RlbnRpYWxNYXRjaCAoZW5kKTog
JXMiLCByZXByKHBvdGVudGlhbE1hdGNoLT5lbmQpKTsKKyAgICAgICAgYXV0byByYW5nZUVuZFNl
YXJjaFJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHBvdGVudGlhbE1hdGNoLT5lbmQsIHNlYXJjaFJh
bmdlLmVuZCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiPE1NRz4gcmFuZ2VFbmRTZWFyY2hSYW5n
ZTogJXMiLCByZXByKHJhbmdlRW5kU2VhcmNoUmFuZ2UpKTsKKyAgICAgICAgd2hpbGUgKCFyYW5n
ZUVuZFNlYXJjaFJhbmdlLmNvbGxhcHNlZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IXBhcnNlZFRleHREaXJlY3RpdmUudGV4dEVuZC5pc051bGwoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBtdXN0RW5kQXRXb3JkQm91bmRhcnkgPSAhcGFyc2VkVGV4dERpcmVjdGl2
ZS5zdWZmaXg7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byB0ZXh0RW5k
TWF0Y2ggPSByYW5nZU9mU3RyaW5nSW5SYW5nZShwYXJzZWRUZXh0RGlyZWN0aXZlLnRleHRFbmQs
IHJhbmdlRW5kU2VhcmNoUmFuZ2UsIHRydWUsIG11c3RFbmRBdFdvcmRCb3VuZGFyeSk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0RW5kTWF0Y2gpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgcG90ZW50aWFsTWF0Y2gtPmVuZCA9IHRleHRFbmRNYXRjaC0+ZW5kOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLy8gQXNzZXJ0OiBwb3RlbnRpYWxNYXRjaCBpcyBub24t
bnVsbCwgbm90IGNvbGxhcHNlZCBhbmQgcmVwcmVzZW50cyBhIHJhbmdlIGV4YWN0bHkgY29udGFp
bmluZyBhbiBpbnN0YW5jZSBvZiBtYXRjaGluZyB0ZXh0LgorICAgICAgICAgICAgaWYgKCFwYXJz
ZWRUZXh0RGlyZWN0aXZlLnN1ZmZpeCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcG90ZW50aWFs
TWF0Y2g7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGF1dG8gc3VmZml4UmFuZ2UgPSBtYWtl
U2ltcGxlUmFuZ2UocG90ZW50aWFsTWF0Y2gtPmVuZCwgc2VhcmNoUmFuZ2UuZW5kKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gQWR2YW5jZSBzdWZmaXhSYW5nZSdzIHN0YXJ0IHRvIHRo
ZSBuZXh0IG5vbi13aGl0ZXNwYWNlIHBvc2l0aW9uLgorICAgICAgICAgICAgYWR2YW5jZVJhbmdl
U3RhcnRUb05leHROb25XaGl0ZXNwYWNlKHN1ZmZpeFJhbmdlKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYXV0byBzdWZmaXhNYXRjaCA9IHJhbmdlT2ZTdHJpbmdJblJhbmdlKHBhcnNlZFRl
eHREaXJlY3RpdmUuc3VmZml4LCBzdWZmaXhSYW5nZSwgZmFsc2UsIHRydWUpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoIXN1ZmZpeE1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzdWZmaXhNYXRj
aC0+c3RhcnQgPT0gc3VmZml4UmFuZ2Uuc3RhcnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBv
dGVudGlhbE1hdGNoOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocGFyc2VkVGV4dERp
cmVjdGl2ZS50ZXh0RW5kLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOyAvLyA8TU1H
PiBpcyB0aGlzIHJpZ2h0Pz8KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmFuZ2VFbmRTZWFy
Y2hSYW5nZS5zdGFydCA9IHBvdGVudGlhbE1hdGNoLT5lbmQ7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChyYW5nZUVuZFNlYXJjaFJhbmdlLmNvbGxhcHNlZCgpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIXBhcnNlZFRleHREaXJlY3RpdmUudGV4dEVuZC5pc051bGwoKSk7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKK30gLy8gRnJhZ21lbnREaXJlY3RpdmVSYW5nZUZpbmRlcgor
CiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERp
cmVjdGl2ZVJhbmdlRmluZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnREaXJlY3Rp
dmVSYW5nZUZpbmRlci5oCmluZGV4IDQ0ZWMzMzY0ZjVmMDcwZDBmZDcxMThlMmU1MGRjZmVlZGJj
YzBkZmIuLjU1YjAyMDM5ZmI2ZmRlYzEwZmE1MmJjODY2NmYzNzUzOTcwYzA5OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERpcmVjdGl2ZVJhbmdlRmluZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXIuaApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRnJhZ21lbnREaXJl
Y3RpdmVSYW5nZUZpbmRlciB7CiAKIGNvbnN0IFZlY3RvcjxTaW1wbGVSYW5nZT4gcmFuZ2VzRm9y
RnJhZ21lbnRzKFZlY3RvcjxQYXJzZWRUZXh0RGlyZWN0aXZlPiYgcGFyc2VkVGV4dERpcmVjdGl2
ZXMsIERvY3VtZW50Jik7CitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvckZyYWdt
ZW50KFBhcnNlZFRleHREaXJlY3RpdmUgcGFyc2VkVGV4dERpcmVjdGl2ZSwgRG9jdW1lbnQmKTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZTFhODky
NWU5ZmViOWNiZmIzZDU3ZWZmOTc5NzlkZTJlZjU4NmY4OC4uMTY5ZWMyZGY0ZGYwZGI0YzYxNGZi
NjA5MDZlZTk4NWNmOWE3ZTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcApAQCAtMjIzMyw3ICsyMjMzLDcgQEAgbmV4dE1hdGNoOgogICAgICAgICB8fCAobV9vcHRp
b25zLmNvbnRhaW5zKEF0V29yZFN0YXJ0cykgJiYgIWlzV29yZFN0YXJ0TWF0Y2gobWF0Y2hTdGFy
dCwgbWF0Y2hlZExlbmd0aCkpCiAgICAgICAgIHx8IChtX29wdGlvbnMuY29udGFpbnMoQXRXb3Jk
RW5kcykgJiYgIWlzV29yZEVuZE1hdGNoKG1hdGNoU3RhcnQsIG1hdGNoZWRMZW5ndGgpKSkgewog
ICAgICAgICBtYXRjaFN0YXJ0ID0gdXNlYXJjaF9uZXh0KHNlYXJjaGVyLCAmc3RhdHVzKTsKLSAg
ICAgICAgQVNTRVJUKHN0YXR1cyA9PSBVX1pFUk9fRVJST1IpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX01FU1NBR0Uoc3RhdHVzID09IFVfWkVST19FUlJPUiwgImFjdHVhbCBzdGF0dXM6
ICVkIixzdGF0dXMpOwogICAgICAgICBnb3RvIG5leHRNYXRjaDsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAppbmRleCBjYzUyMWM5ZTJhZDQ0NWNiNWQ2MzMwN2JiNTdlZWQ3Zjgw
ZTdhYjQ5Li40YTM3ODkzMGQ4MGY0ZDgxY2VjYTBlZGE1MmFkNmVlOTE2ZjM2ODBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMjQ3LDYgKzIyNDcsOSBAQCBib29sIEZyYW1lVmll
dzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYXV0byBwYXJzZWRUZXh0RGlyZWN0aXZlcyA9IGZyYWdtZW50RGlyZWN0aXZlUGFyc2Vy
LnBhcnNlZFRleHREaXJlY3RpdmVzKCk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAo
YXV0byBwYXJzZWRUZXh0RGlyZWN0aXZlIDogcGFyc2VkVGV4dERpcmVjdGl2ZXMpCisgICAgICAg
ICAgICAgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIjxNTUc+OiBwYXJzZWRU
ZXh0RGlyZWN0aXZlczogIiA8PCAidGV4dFN0YXJ0OiAiIDw8IHBhcnNlZFRleHREaXJlY3RpdmUu
dGV4dFN0YXJ0IDw8ICIgdGV4dEVuZDogIiA8PCBwYXJzZWRUZXh0RGlyZWN0aXZlLnRleHRFbmQg
PDwgIiBwcmVmaXg6ICIgPDwgcGFyc2VkVGV4dERpcmVjdGl2ZS5wcmVmaXggPDwgIiBzdWZmaXg6
ICIgPDwgcGFyc2VkVGV4dERpcmVjdGl2ZS5zdWZmaXgpOworICAgICAgICAgICAgCiAgICAgICAg
ICAgICBhdXRvIGhpZ2hsaWdodFJhbmdlcyA9IEZyYWdtZW50RGlyZWN0aXZlUmFuZ2VGaW5kZXI6
OnJhbmdlc0ZvckZyYWdtZW50cyhwYXJzZWRUZXh0RGlyZWN0aXZlcywgZG9jdW1lbnQpOwogICAg
ICAgICAgICAgZm9yIChhdXRvIHJhbmdlIDogaGlnaGxpZ2h0UmFuZ2VzKQogICAgICAgICAgICAg
ICAgIGRvY3VtZW50LT5mcmFnbWVudEhpZ2hsaWdodFJlZ2lzdGVyKCkuYWRkQW5ub3RhdGlvbkhp
Z2hsaWdodFdpdGhSYW5nZShTdGF0aWNSYW5nZTo6Y3JlYXRlKHJhbmdlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmgKaW5kZXggOWE4NzNhZjRkN2Q3
M2MzYWUwOTRkZGZmNDc0ZDlkY2IzNTVhYjEzNS4uNGQxYjJlMTA4YWY3NjU5OGY5YmY5ZmJlZTE3
MjhhMDE0OWUwYzQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Qm91bmRhcmllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJv
dW5kYXJpZXMuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9p
ZCBmaW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcsIGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwg
aW50KiBlbmQpOwogICAgIHZvaWQgZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3LCBpbnQg
cG9zaXRpb24sIGludCogZW5kKTsKICAgICBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmlu
Z1ZpZXcsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKTsKKyAgICAvL2Jvb2wgaXNXb3JkQm91
bmRhcnkoU3RyaW5nVmlldywgaW50IHBvc2l0aW9uKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IGYxM2MzM2Vi
ZGMyZWZjYWE0OGQzMWQ2NzA3MjMyYjA3MjJhODRmMzAuLmEyYzBjMDgzOTgyNzI4MzE0MjAyMjZi
NGRkMjk2YTE3Zjg2ZGNmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCkBAIC0yNjQsNCArMjY0LDkgQEAgaW50IGZpbmROZXh0
V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJk
KQogI2VuZGlmCiB9CiAKKy8vYm9vbCBpc1dvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIGlu
dCBwb3NpdGlvbikKKy8veworLy8gICAgaWYgKHRleHRbKQorLy99CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZGIxMmUzMDM2ZjM2NDFh
MzFmNzBiYzAxNzExYjkyOTZlNDEzMTA3Mi4uNmE2MGQ4ZTk0ODU2MDE5NDdjNzc2ZGEzN2Q3YjE1
MmNiYzg5YTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTE1NDMsNiArMTU0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGlzcGxheUZs
ZXhpYmxlT3JHcmlkQm94KCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5RmxleGlibGVPckdyaWRC
b3goZGlzcGxheSgpKTsgfQogICAgIGJvb2wgaXNEaXNwbGF5RmxleGlibGVCb3hJbmNsdWRpbmdE
ZXByZWNhdGVkT3JHcmlkQm94KCkgY29uc3QgeyByZXR1cm4gaXNEaXNwbGF5RmxleGlibGVPckdy
aWRCb3goKSB8fCBpc0Rpc3BsYXlEZXByZWNhdGVkRmxleGlibGVCb3goZGlzcGxheSgpKTsgfQog
ICAgIGJvb2wgaXNEaXNwbGF5UmVnaW9uVHlwZSgpIGNvbnN0OworICAgIGJvb2wgaXNEaXNwbGF5
QmxvY2tMZXZlbCgpIGNvbnN0OwogICAgIGJvb2wgaXNEaXNwbGF5VGFibGVPclRhYmxlUGFydCgp
IGNvbnN0IHsgcmV0dXJuIGlzRGlzcGxheVRhYmxlT3JUYWJsZVBhcnQoZGlzcGxheSgpKTsgfQog
ICAgIGJvb2wgaXNPcmlnaW5hbERpc3BsYXlMaXN0SXRlbVR5cGUoKSBjb25zdCB7IHJldHVybiBp
c0Rpc3BsYXlMaXN0SXRlbVR5cGUob3JpZ2luYWxEaXNwbGF5KCkpOyB9CiAKQEAgLTI0MTYsNiAr
MjQxNywxMyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6aXNEaXNwbGF5UmVnaW9uVHlwZSgp
IGNvbnN0CiAgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW07CiB9
CiAKK2lubGluZSBib29sIFJlbmRlclN0eWxlOjppc0Rpc3BsYXlCbG9ja0xldmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBkaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OlRhYmxlCisgICAgICAgIHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6Rmxvd1Jvb3QgfHwgZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpHcmlkCisgICAgICAg
IHx8IGRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6RmxleCB8fCBkaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6Okxpc3RJdGVtOworfQorCiBpbmxpbmUgYm9vbCBSZW5kZXJTdHlsZTo6c2V0V3JpdGlu
Z01vZGUoV3JpdGluZ01vZGUgdikKIHsKICAgICBpZiAodiA9PSB3cml0aW5nTW9kZSgpKQo=
</data>
<flag name="commit-queue"
          id="485420"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>