<?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>218444</bug_id>
          
          <creation_ts>2020-11-02 07:11:17 -0800</creation_ts>
          <short_desc>[LFC][Integration] RenderText::absoluteQuadsForRange should use iterator</short_desc>
          <delta_ts>2020-11-03 06:06:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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=218510</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703521</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-02 07:11:17 -0800</bug_when>
    <thetext>It really should</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703523</commentid>
    <comment_count>1</comment_count>
      <attachid>412916</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-02 07:20:42 -0800</bug_when>
    <thetext>Created attachment 412916
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703616</commentid>
    <comment_count>2</comment_count>
      <attachid>412950</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-02 11:38:58 -0800</bug_when>
    <thetext>Created attachment 412950
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703636</commentid>
    <comment_count>3</comment_count>
      <attachid>412950</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-11-02 12:16:50 -0800</bug_when>
    <thetext>Comment on attachment 412950
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=412950&amp;action=review

&gt; LayoutTests/ChangeLog:12
&gt; +        On legacy path &lt;br&gt; y position is miscomputed affecting getBoundingClientRect().
&gt; +        Update the test to match the new behavior. Results now match Firefox and Chrome.

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703679</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-02 13:43:11 -0800</bug_when>
    <thetext>Committed r269272: &lt;https://trac.webkit.org/changeset/269272&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412950.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703680</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-02 13:44:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/70964539&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412916</attachid>
            <date>2020-11-02 07:20:42 -0800</date>
            <delta_ts>2020-11-02 11:38:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-absoluteQuadsForRange.patch</filename>
            <type>text/plain</type>
            <size>16645</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZjk5NjJhNmU0MGMuLmZiNmMyMzYwMmMxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDIwLTExLTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFk
c0ZvclJhbmdlIHNob3VsZCB1c2UgaXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgcmVxdWlyZWQgaXRlcmF0b3Igc3VwcG9ydCBh
bmQgY29udmVydCBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UgdG8gdXNlIGl0LgorICAgICAgICBUaGlz
IGVsaW1pbmF0ZXMgZW5zdXJlTGluZUJveGVzIGZyb20gdHdvIHBsYWNlcy4KKworICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFRleHRSdW46OmlzU2VsZWN0YWJs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFRleHRS
dW46OnNlbGVjdGlvblJlY3QgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6aXNTZWxlY3RhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRv
ckxlZ2FjeVBhdGg6OnNlbGVjdGlvblJlY3QgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6b2Zm
c2V0Rm9yUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNTZWxlY3RhYmxlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVj
dGlvblJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1
bkl0ZXJhdG9yTW9kZXJuUGF0aDo6Y2xhbXBlZE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpjcmVhdGVUZXh0
UnVuIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzRm9yUmFuZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9jYWxRdWFkRm9yVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsUXVh
ZEZvclRleHRCb3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVC
b3hlczo6YWJzb2x1dGVRdWFkc0ZvclJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUmVjdHNGb3JSYW5nZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaDoKKwog
MjAyMC0xMS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RvcCBzZW5kaW5nIG9yaWdpbnMgZnJvbSBXZWJQcm9jZXNzIHRvIFVJUHJvY2VzcyBmb3IgZ2V0
VXNlck1lZGlhIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRleCAw
M2RhOGNlZDAyZTMuLmQzNmExMTE3ZDBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5oCkBAIC0xMDksNiArMTA5LDkgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgb2Zmc2V0Rm9y
UG9zaXRpb24oZmxvYXQgeCkgY29uc3Q7CiAKKyAgICBib29sIGlzU2VsZWN0YWJsZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3QodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisKICAgICBib29sIGlzTGFz
dFRleHRSdW5PbkxpbmUoKSBjb25zdDsKICAgICBib29sIGlzTGFzdFRleHRSdW4oKSBjb25zdDsK
IApAQCAtMzI1LDYgKzMyOCwyMCBAQCBpbmxpbmUgdW5zaWduZWQgUGF0aFRleHRSdW46Om9mZnNl
dEZvclBvc2l0aW9uKGZsb2F0IHgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2lubGluZSBib29sIFBh
dGhUZXh0UnVuOjppc1NlbGVjdGFibGUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkgY29u
c3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbJl0oYXV0byYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pc1NlbGVjdGFibGUoc3RhcnQsIGVuZCk7Cisg
ICAgfSk7Cit9CisKK2lubGluZSBMYXlvdXRSZWN0IFBhdGhUZXh0UnVuOjpzZWxlY3Rpb25SZWN0
KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9wYXRoVmFyaWFudCwgWyZdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJu
IHBhdGguc2VsZWN0aW9uUmVjdChzdGFydCwgZW5kKTsKKyAgICB9KTsKK30KKwogaW5saW5lIGJv
b2wgUGF0aFRleHRSdW46OmlzTGFzdFRleHRSdW5PbkxpbmUoKSBjb25zdAogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yTGVnYWN5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKaW5kZXggNDY2YWJhZDA5
MTA3Li41ZTE4M2EwMjIzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yTGVnYWN5UGF0aC5oCkBAIC02MSw2ICs2MSw5IEBAIHB1YmxpYzoKIAogICAgIGlubGluZSB1
bnNpZ25lZCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4KSBjb25zdCB7IHJldHVybiBpbmxpbmVU
ZXh0Qm94KCktPm9mZnNldEZvclBvc2l0aW9uKHgpOyB9CiAKKyAgICBib29sIGlzU2VsZWN0YWJs
ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdCB7IHJldHVybiBpbmxpbmVUZXh0
Qm94KCktPmlzU2VsZWN0ZWQoc3RhcnQsIGVuZCk7IH0KKyAgICBMYXlvdXRSZWN0IHNlbGVjdGlv
blJlY3QodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkgY29uc3QgeyByZXR1cm4gaW5saW5l
VGV4dEJveCgpLT5sb2NhbFNlbGVjdGlvblJlY3Qoc3RhcnQsIGVuZCk7IH0KKwogICAgIGJvb2wg
aXNMYXN0VGV4dFJ1bk9uTGluZSgpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRvKiBuZXh0ID0g
bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5Q
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvck1vZGVyblBhdGguaAppbmRleCBkZTQyNWU2ZTcwNGQuLjY3ZmI2NzI0NzRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgK
QEAgLTc3LDE4ICs3NywzOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChsb2NhbFggPCAwKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgYXV0byYgc3R5bGUgPSBydW4oKS5zdHlsZSgp
OworICAgICAgICBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIHJ1bigpLnN0eWxlKCkuZm9udENhc2NhZGUoKS5vZmZzZXRGb3JQb3NpdGlvbihjcmVhdGVU
ZXh0UnVuKEh5cGhlbk1vZGU6Oklnbm9yZSksIGxvY2FsWCwgaW5jbHVkZVBhcnRpYWxHbHlwaHMp
OworICAgIH0KIAotICAgICAgICBhdXRvIGNyZWF0ZVRleHRSdW4gPSBbJl0gewotICAgICAgICAg
ICAgYXV0byBleHBhbnNpb24gPSBydW4oKS5leHBhbnNpb24oKTsKLSAgICAgICAgICAgIGF1dG8g
eFBvcyA9IHJlY3QueCgpIC0gKGxpbmUoKS5yZWN0KCkueCgpICsgbGluZSgpLmhvcml6b250YWxB
bGlnbm1lbnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICBUZXh0UnVuIHRleHRSdW4geyB0ZXh0KCks
IHhQb3MsIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3Ig
fTsKLSAgICAgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNw
YWNlKCksIHN0eWxlLnRhYlNpemUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dFJ1bjsKLSAg
ICAgICAgfTsKKyAgICBib29sIGlzU2VsZWN0YWJsZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
ZW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNsYW1wZWRPZmZzZXQoc3RhcnQpID4g
Y2xhbXBlZE9mZnNldChlbmQpOworICAgIH0KIAotICAgICAgICBib29sIGluY2x1ZGVQYXJ0aWFs
R2x5cGhzID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHJ1bigpLnN0eWxlKCkuZm9udENhc2NhZGUo
KS5vZmZzZXRGb3JQb3NpdGlvbihjcmVhdGVUZXh0UnVuKCksIGxvY2FsWCwgaW5jbHVkZVBhcnRp
YWxHbHlwaHMpOworICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCh1bnNpZ25lZCByYW5nZVN0
YXJ0LCB1bnNpZ25lZCByYW5nZUVuZCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNs
YW1wZWRTdGFydCA9IGNsYW1wZWRPZmZzZXQocmFuZ2VTdGFydCk7CisgICAgICAgIHVuc2lnbmVk
IGNsYW1wZWRFbmQgPSBjbGFtcGVkT2Zmc2V0KHJhbmdlRW5kKTsKKworICAgICAgICBpZiAoY2xh
bXBlZFN0YXJ0ID49IGNsYW1wZWRFbmQgJiYgIShyYW5nZVN0YXJ0ID09IHJhbmdlRW5kICYmIHJh
bmdlU3RhcnQgPj0gc3RhcnQoKSAmJiByYW5nZVN0YXJ0IDw9IGVuZCgpKSkKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisKKyAgICAgICAgYXV0byBsb2dpY2FsTGVmdCA9IExheW91dFVuaXQoaXNI
b3Jpem9udGFsKCkgPyByZWN0KCkueCgpIDogcmVjdCgpLnkoKSk7CisgICAgICAgIGF1dG8gbG9n
aWNhbFJpZ2h0ID0gTGF5b3V0VW5pdChpc0hvcml6b250YWwoKSA/IHJlY3QoKS5tYXhYKCkgOiBy
ZWN0KCkubWF4WSgpKTsKKyAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBsb2dpY2FsUmlnaHQg
LSBsb2dpY2FsTGVmdDsKKworICAgICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIHNoYXJlIGlt
cGxlbWVudGF0aW9uIHdpdGggdGhlIGxpbmUgaXRlcmF0b3IuCisgICAgICAgIGF1dG8gc2VsZWN0
aW9uVG9wID0gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQobGluZSgpLnJlY3QoKS55KCkpOwor
ICAgICAgICBhdXRvIHNlbGVjdGlvbkhlaWdodCA9IExheW91dFVuaXQ6OmZyb21GbG9hdFJvdW5k
KGxpbmUoKS5yZWN0KCkuaGVpZ2h0KCkpOworCisgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdCB7IGxvZ2ljYWxMZWZ0LCBzZWxlY3Rpb25Ub3AsIGxvZ2ljYWxXaWR0aCwgc2VsZWN0aW9u
SGVpZ2h0IH07CisKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bihIeXBo
ZW5Nb2RlOjpJbmNsdWRlKTsKKyAgICAgICAgaWYgKGNsYW1wZWRTdGFydCAhPSBzdGFydCgpIHx8
IGNsYW1wZWRFbmQgIT0gdGV4dFJ1bi5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJ1bigpLnN0eWxl
KCkuZm9udENhc2NhZGUoKS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxl
Y3Rpb25SZWN0LCBjbGFtcGVkU3RhcnQgLSBzdGFydCgpLCBjbGFtcGVkRW5kIC0gc3RhcnQoKSk7
CisKKyAgICAgICAgcmV0dXJuIHNuYXBwZWRTZWxlY3Rpb25SZWN0KHNlbGVjdGlvblJlY3QsIGxv
Z2ljYWxSaWdodCwgc2VsZWN0aW9uVG9wLCBzZWxlY3Rpb25IZWlnaHQsIGlzSG9yaXpvbnRhbCgp
KTsKICAgICB9CiAKICAgICBib29sIGlzTGFzdFRleHRSdW5PbkxpbmUoKSBjb25zdApAQCAtMTc2
LDYgKzE5NiwzNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSdW5JdGVy
YXRvcjsKIAorICAgIHVuc2lnbmVkIGNsYW1wZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25z
dAorICAgIHsKKyAgICAgICAgYXV0byBjbGFtcGVkT2Zmc2V0ID0gc3RkOjptYXgoc3RhcnQoKSwg
c3RkOjptaW4ob2Zmc2V0LCBlbmQoKSkpOworICAgICAgICAvLyBXZSB0cmVhdCB0aGUgbGFzdCBj
b2RlcG9pbnQgaW4gdGhpcyBydW4gYW5kIHRoZSBoeXBoZW4gYXMgYSBzaW5nbGUgdW5pdC4KKyAg
ICAgICAgaWYgKGhhc0h5cGhlbigpICYmIGNsYW1wZWRPZmZzZXQgPT0gZW5kKCkpCisgICAgICAg
ICAgICBjbGFtcGVkT2Zmc2V0ICs9IHJ1bigpLnN0eWxlKCkuaHlwaGVuU3RyaW5nKCkubGVuZ3Ro
KCk7CisKKyAgICAgICAgcmV0dXJuIGNsYW1wZWRPZmZzZXQ7CisgICAgfQorCisgICAgZW51bSBj
bGFzcyBIeXBoZW5Nb2RlIHsgSW5jbHVkZSwgSWdub3JlIH07CisgICAgVGV4dFJ1biBjcmVhdGVU
ZXh0UnVuKEh5cGhlbk1vZGUgaHlwaGVuTW9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGF1dG8m
IHN0eWxlID0gcnVuKCkuc3R5bGUoKTsKKyAgICAgICAgYXV0byBleHBhbnNpb24gPSBydW4oKS5l
eHBhbnNpb24oKTsKKyAgICAgICAgYXV0byByZWN0ID0gdGhpcy0+cmVjdCgpOworICAgICAgICBh
dXRvIHhQb3MgPSByZWN0LngoKSAtIChsaW5lKCkucmVjdCgpLngoKSArIGxpbmUoKS5ob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KCkpOworCisgICAgICAgIGF1dG8gdGV4dEZvclJ1biA9IFsmXSB7
CisgICAgICAgICAgICBpZiAoaHlwaGVuTW9kZSA9PSBIeXBoZW5Nb2RlOjpJZ25vcmUgfHwgIWhh
c0h5cGhlbigpKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0KCkudG9TdHJpbmdXaXRob3V0
Q29weWluZygpOworCisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZyh0ZXh0KCksIHN0eWxl
Lmh5cGhlblN0cmluZygpKTsKKyAgICAgICAgfSgpOworCisgICAgICAgIFRleHRSdW4gdGV4dFJ1
biB7IHRleHRGb3JSdW4sIHhQb3MsIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBh
bnNpb24uYmVoYXZpb3IgfTsKKyAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xs
YXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRleHRS
dW47CisgICAgfTsKKwogICAgIGNvbnN0IElubGluZUNvbnRlbnQ6OlJ1bnMmIHJ1bnMoKSBjb25z
dCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPnJ1bnM7IH0KICAgICBjb25zdCBSdW4mIHJ1bigp
IGNvbnN0IHsgcmV0dXJuIHJ1bnMoKVttX3J1bkluZGV4XTsgfQogICAgIGNvbnN0IExpbmUmIGxp
bmUoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmxpbmVGb3JSdW4ocnVuKCkpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNDM2Y2MyZDEzZmRj
Li4zY2JiY2UzZjZkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTMxMywxOSArMzEzLDkgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXUKIAogVmVjdG9yPElu
dFJlY3Q+IFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0CiB7Ci0gICAgY29uc3RfY2FzdDxSZW5kZXJUZXh0Jj4oKnRoaXMpLmVuc3VyZUxpbmVCb3hl
cygpOwotCi0gICAgLy8gV29yayBhcm91bmQgc2lnbmVkL3Vuc2lnbmVkIGlzc3Vlcy4gVGhpcyBm
dW5jdGlvbiB0YWtlcyB1bnNpZ25lZHMsIGFuZCBpcyBvZnRlbiBwYXNzZWQgVUlOVF9NQVgKLSAg
ICAvLyB0byBtZWFuICJhbGwgdGhlIHdheSB0byB0aGUgZW5kIi4gSW5saW5lVGV4dEJveCBjb29y
ZGluYXRlcyBhcmUgdW5zaWduZWRzLCBzbyBjaGFuZ2luZyB0aGlzIAotICAgIC8vIGZ1bmN0aW9u
IHRvIHRha2UgaW50cyBjYXVzZXMgdmFyaW91cyBpbnRlcm5hbCBtaXNtYXRjaGVzLiBCdXQgc2Vs
ZWN0aW9uUmVjdCB0YWtlcyBpbnRzLCBhbmQgCi0gICAgLy8gcGFzc2luZyBVSU5UX01BWCB0byBp
dCBjYXVzZXMgdHJvdWJsZS4gSWRlYWxseSB3ZSdkIGNoYW5nZSBzZWxlY3Rpb25SZWN0IHRvIHRh
a2UgdW5zaWduZWRzLCBidXQgCi0gICAgLy8gdGhhdCB3b3VsZCBjYXVzZSBtYW55IHJpcHBsZSBl
ZmZlY3RzLCBzbyBmb3Igbm93IHdlJ2xsIGp1c3QgY2xhbXAgb3VyIHVuc2lnbmVkIHBhcmFtZXRl
cnMgdG8gSU5UX01BWC4KLSAgICBBU1NFUlQoZW5kID09IFVJTlRfTUFYIHx8IGVuZCA8PSBJTlRf
TUFYKTsKLSAgICBBU1NFUlQoc3RhcnQgPD0gSU5UX01BWCk7Ci0gICAgc3RhcnQgPSBzdGQ6Om1p
bihzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKLSAgICBlbmQgPSBzdGQ6
Om1pbihlbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7Ci0gICAgCi0gICAgcmV0
dXJuIG1fbGluZUJveGVzLmFic29sdXRlUmVjdHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVuZCwg
dXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CisgICAgcmV0dXJuIGFic29sdXRlUXVhZHNG
b3JSYW5nZShzdGFydCwgZW5kLCB1c2VTZWxlY3Rpb25IZWlnaHQsIGZhbHNlIC8qIGlnbm9yZUVt
cHR5VGV4dFNlbGVjdGlvbnMgKi8sIHdhc0ZpeGVkKS5tYXAoW10oYXV0byYgcXVhZCkgeworICAg
ICAgICByZXR1cm4gcXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOworICAgIH0pOwogfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQzMyw2ICs0MjMsMjYgQEAgdm9pZCBSZW5kZXJU
ZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CiAgICAgcXVhZHMuYXBwZW5kVmVjdG9yKG1fbGluZUJveGVzLmFic29sdXRlUXVh
ZHMoKnRoaXMsIHdhc0ZpeGVkLCBSZW5kZXJUZXh0TGluZUJveGVzOjpOb0NsaXBwaW5nKSk7CiB9
CiAKK3N0YXRpYyBGbG9hdFJlY3QgbG9jYWxRdWFkRm9yVGV4dFJ1bihjb25zdCBMYXlvdXRJbnRl
Z3JhdGlvbjo6UGF0aFRleHRSdW4mIHJ1biwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwg
Ym9vbCB1c2VTZWxlY3Rpb25IZWlnaHQpCit7CisgICAgdW5zaWduZWQgcmVhbEVuZCA9IHN0ZDo6
bWluKHJ1bi5lbmQoKSwgZW5kKTsKKyAgICBMYXlvdXRSZWN0IGJveFNlbGVjdGlvblJlY3QgPSBy
dW4uc2VsZWN0aW9uUmVjdChzdGFydCwgcmVhbEVuZCk7CisgICAgaWYgKCFib3hTZWxlY3Rpb25S
ZWN0LmhlaWdodCgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGlmICh1c2VTZWxlY3Rpb25I
ZWlnaHQpCisgICAgICAgIHJldHVybiBib3hTZWxlY3Rpb25SZWN0OworCisgICAgYXV0byByZWN0
ID0gcnVuLnJlY3QoKTsKKyAgICBpZiAocnVuLmlzSG9yaXpvbnRhbCgpKSB7CisgICAgICAgIGJv
eFNlbGVjdGlvblJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBib3hTZWxl
Y3Rpb25SZWN0LnNldFkocmVjdC55KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGJveFNlbGVj
dGlvblJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpKTsKKyAgICAgICAgYm94U2VsZWN0aW9uUmVj
dC5zZXRYKHJlY3QueCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGJveFNlbGVjdGlvblJlY3Q7Cit9
CisKIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNGb3JSYW5nZSh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgYm9v
bCBpZ25vcmVFbXB0eVRleHRTZWxlY3Rpb25zLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAg
ICAvLyBXb3JrIGFyb3VuZCBzaWduZWQvdW5zaWduZWQgaXNzdWVzLiBUaGlzIGZ1bmN0aW9uIHRh
a2VzIHVuc2lnbmVkcywgYW5kIGlzIG9mdGVuIHBhc3NlZCBVSU5UX01BWApAQCAtNDQ1LDggKzQ1
NSwzNSBAQCBWZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFu
Z2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZAogICAgIHN0YXJ0ID0gc3RkOjptaW4oc3Rh
cnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CiAgICAgZW5kID0gc3RkOjptaW4o
ZW5kLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwogCi0gICAgY29uc3RfY2FzdDxS
ZW5kZXJUZXh0Jj4oKnRoaXMpLmVuc3VyZUxpbmVCb3hlcygpOwotICAgIHJldHVybiBtX2xpbmVC
b3hlcy5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoKnRoaXMsIHN0YXJ0LCBlbmQsIHVzZVNlbGVjdGlv
bkhlaWdodCwgaWdub3JlRW1wdHlUZXh0U2VsZWN0aW9ucywgd2FzRml4ZWQpOworICAgIFZlY3Rv
cjxGbG9hdFF1YWQ+IHF1YWRzOworICAgIGZvciAoYXV0byYgcnVuIDogTGF5b3V0SW50ZWdyYXRp
b246OnRleHRSdW5zRm9yKCp0aGlzKSkgeworICAgICAgICBpZiAoaWdub3JlRW1wdHlUZXh0U2Vs
ZWN0aW9ucyAmJiAhcnVuLmlzU2VsZWN0YWJsZShzdGFydCwgZW5kKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAoc3RhcnQgPD0gcnVuLnN0YXJ0KCkgJiYgcnVuLmVuZCgpIDw9
IGVuZCkgeworICAgICAgICAgICAgYXV0byBib3VuZGFyaWVzID0gWyZdIHsKKyAgICAgICAgICAg
ICAgICBpZiAocnVuLmxlZ2FjeUlubGluZUJveCgpICYmIHJ1bi5sZWdhY3lJbmxpbmVCb3goKS0+
aXNTVkdJbmxpbmVUZXh0Qm94KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBydW4ubGVn
YWN5SW5saW5lQm94KCktPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcnVuLnJlY3QoKTsKKyAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgaWYgKHVz
ZVNlbGVjdGlvbkhlaWdodCkgeworICAgICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdCA9IHJ1bi5zZWxlY3Rpb25SZWN0KHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgICAgIGlm
IChydW4uaXNIb3Jpem9udGFsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllcy5z
ZXRIZWlnaHQoc2VsZWN0aW9uUmVjdC5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIGJv
dW5kYXJpZXMuc2V0WShzZWxlY3Rpb25SZWN0LnkoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllcy5zZXRXaWR0aChzZWxlY3Rpb25SZWN0
LndpZHRoKCkpOworICAgICAgICAgICAgICAgICAgICBib3VuZGFyaWVzLnNldFgoc2VsZWN0aW9u
UmVjdC54KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKGJvdW5kYXJpZXMsIFVzZVRyYW5zZm9y
bXMsIHdhc0ZpeGVkKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICBGbG9hdFJlY3QgcmVjdCA9IGxvY2FsUXVhZEZvclRleHRSdW4ocnVuLCBzdGFydCwgZW5kLCB1
c2VTZWxlY3Rpb25IZWlnaHQpOworICAgICAgICBpZiAoIXJlY3QuaXNaZXJvKCkpCisgICAgICAg
ICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChyZWN0LCBVc2VUcmFuc2Zvcm1z
LCB3YXNGaXhlZCkpOworICAgIH0KKyAgICByZXR1cm4gcXVhZHM7CiB9CiAKIFBvc2l0aW9uIFJl
bmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCmluZGV4
IGI3NTYzOWFmZjhiNy4uYWRkYmY1OGZkZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCkBAIC0yMzcsNTkgKzIzNyw2IEBAIHZvaWQg
UmVuZGVyVGV4dExpbmVCb3hlczo6Y29sbGVjdFNlbGVjdGlvblJlY3RzRm9yUmFuZ2UodW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkCiAgICAgfQogfQogCi1zdGF0aWMgRmxvYXRSZWN0IGxvY2FsUXVh
ZEZvclRleHRCb3goY29uc3QgSW5saW5lVGV4dEJveCYgYm94LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCkKLXsKLSAgICB1bnNpZ25lZCByZWFs
RW5kID0gc3RkOjptaW4oYm94LmVuZCgpLCBlbmQpOwotICAgIExheW91dFJlY3QgYm94U2VsZWN0
aW9uUmVjdCA9IGJveC5sb2NhbFNlbGVjdGlvblJlY3Qoc3RhcnQsIHJlYWxFbmQpOwotICAgIGlm
ICghYm94U2VsZWN0aW9uUmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OwotICAgIGlmICh1c2VTZWxlY3Rpb25IZWlnaHQpCi0gICAgICAgIHJldHVybiBib3hTZWxlY3Rp
b25SZWN0OwotICAgIC8vIENoYW5nZSB0aGUgaGVpZ2h0IGFuZCB5IHBvc2l0aW9uIChvciB3aWR0
aCBhbmQgeCBmb3IgdmVydGljYWwgdGV4dCkKLSAgICAvLyBiZWNhdXNlIHNlbGVjdGlvblJlY3Qg
dXNlcyBzZWxlY3Rpb24tc3BlY2lmaWMgdmFsdWVzLgotICAgIGlmIChib3guaXNIb3Jpem9udGFs
KCkpIHsKLSAgICAgICAgYm94U2VsZWN0aW9uUmVjdC5zZXRIZWlnaHQoYm94LmhlaWdodCgpKTsK
LSAgICAgICAgYm94U2VsZWN0aW9uUmVjdC5zZXRZKGJveC55KCkpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGJveFNlbGVjdGlvblJlY3Quc2V0V2lkdGgoYm94LndpZHRoKCkpOwotICAgICAgICBi
b3hTZWxlY3Rpb25SZWN0LnNldFgoYm94LngoKSk7Ci0gICAgfQotICAgIHJldHVybiBib3hTZWxl
Y3Rpb25SZWN0OwotfQotCi1WZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0TGluZUJveGVzOjph
YnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sIGlnbm9y
ZUVtcHR5VGV4dFNlbGVjdGlvbnMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAotewotICAgIFZlY3Rv
cjxGbG9hdFF1YWQ+IHF1YWRzOwotICAgIGZvciAoYXV0byogYm94ID0gbV9maXJzdDsgYm94OyBi
b3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKLSAgICAgICAgaWYgKGlnbm9yZUVtcHR5VGV4dFNl
bGVjdGlvbnMgJiYgIWJveC0+aXNTZWxlY3RlZChzdGFydCwgZW5kKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBpZiAoc3RhcnQgPD0gYm94LT5zdGFydCgpICYmIGJveC0+ZW5kKCkg
PD0gZW5kKSB7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRhcmllcyA9IGJveC0+Y2FsY3Vs
YXRlQm91bmRhcmllcygpOwotICAgICAgICAgICAgaWYgKHVzZVNlbGVjdGlvbkhlaWdodCkgewot
ICAgICAgICAgICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IGJveC0+bG9jYWxTZWxl
Y3Rpb25SZWN0KHN0YXJ0LCBlbmQpOwotICAgICAgICAgICAgICAgIGlmIChib3gtPmlzSG9yaXpv
bnRhbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJpZXMuc2V0SGVpZ2h0KHNlbGVj
dGlvblJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgICAgICBib3VuZGFyaWVzLnNldFko
c2VsZWN0aW9uUmVjdC55KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGJvdW5kYXJpZXMuc2V0V2lkdGgoc2VsZWN0aW9uUmVjdC53aWR0aCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgYm91bmRhcmllcy5zZXRYKHNlbGVjdGlvblJlY3QueCgpKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBxdWFkcy5hcHBlbmQo
cmVuZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChib3VuZGFyaWVzLCBVc2VUcmFuc2Zvcm1zLCB3
YXNGaXhlZCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgRmxv
YXRSZWN0IHJlY3QgPSBsb2NhbFF1YWRGb3JUZXh0Qm94KCpib3gsIHN0YXJ0LCBlbmQsIHVzZVNl
bGVjdGlvbkhlaWdodCk7Ci0gICAgICAgIGlmICghcmVjdC5pc1plcm8oKSkKLSAgICAgICAgICAg
IHF1YWRzLmFwcGVuZChyZW5kZXJlci5sb2NhbFRvQWJzb2x1dGVRdWFkKHJlY3QsIFVzZVRyYW5z
Zm9ybXMsIHdhc0ZpeGVkKSk7Ci0gICAgfQotICAgIHJldHVybiBxdWFkczsKLX0KLQotVmVjdG9y
PEludFJlY3Q+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUmVjdHNGb3JSYW5nZShjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJlciwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgYm9v
bCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAotewotICAgIHJldHVy
biBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UocmVuZGVyZXIsIHN0YXJ0LCBlbmQsIHVzZVNlbGVjdGlv
bkhlaWdodCwgZmFsc2UgLyogaWdub3JlRW1wdHlUZXh0U2VsZWN0aW9ucyAqLywgd2FzRml4ZWQp
Lm1hcChbXShhdXRvJiBxdWFkKSB7IHJldHVybiBxdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7
IH0pOwotfQotCiBWZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0TGluZUJveGVzOjphYnNvbHV0
ZVF1YWRzKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29sKiB3YXNGaXhlZCwgQ2xpcHBp
bmdPcHRpb24gb3B0aW9uKSBjb25zdAogewogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgKaW5kZXgg
MDJkMzBhYjNjMGUwLi5lMmY5ZjU1ODA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaApAQCAtNjQsOCArNjQsNiBAQCBwdWJsaWM6CiAKICAg
ICBlbnVtIENsaXBwaW5nT3B0aW9uIHsgTm9DbGlwcGluZywgQ2xpcFRvRWxsaXBzaXMgfTsKICAg
ICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlclRleHQmLCBib29s
KiB3YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24pIGNvbnN0OwotICAgIFZlY3RvcjxGbG9hdFF1YWQ+
IGFic29sdXRlUXVhZHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wgaWdub3JlRW1wdHlU
ZXh0U2VsZWN0aW9ucywgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwotICAgIFZlY3RvcjxJbnRSZWN0
PiBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoY29uc3QgUmVuZGVyVGV4dCYsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sKiB3YXNGaXhlZCkg
Y29uc3Q7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIH5SZW5kZXJUZXh0TGluZUJveGVzKCk7
Cg==
</data>
<flag name="commit-queue"
          id="429446"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412950</attachid>
            <date>2020-11-02 11:38:58 -0800</date>
            <delta_ts>2020-11-02 13:43:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-absoluteQuadsForRange-2.patch</filename>
            <type>text/plain</type>
            <size>20118</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNzMyZTEzYmRlZDcuLjRiNGQ0MDgzMDAyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTExLTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbTEZDXVtJbnRlZ3JhdGlvbl0gUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkc0ZvclJhbmdlIHNo
b3VsZCB1c2UgaXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuaHRt
bDoKKworICAgICAgICBPbiBsZWdhY3kgcGF0aCA8YnI+IHkgcG9zaXRpb24gaXMgbWlzY29tcHV0
ZWQgYWZmZWN0aW5nIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLgorICAgICAgICBVcGRhdGUgdGhl
IHRlc3QgdG8gbWF0Y2ggdGhlIG5ldyBiZWhhdmlvci4gUmVzdWx0cyBub3cgbWF0Y2ggRmlyZWZv
eCBhbmQgQ2hyb21lLgorCiAyMDIwLTExLTAxICBNYXNvbiBYaWFvICA8bWVAbWFzb254LmNhPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTI2ODkpOiBib3gtc2hhZG93IHdpdGggaW5zZXQgYW5k
IG5lZ2F0aXZlIHNwcmVhZCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVk
LnR4dAppbmRleCA1ZTRmOTY2ZTViN2EuLjM4YTI1N2NiYTViNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vUmFuZ2UvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJlY3QtZXhw
ZWN0ZWQudHh0CkBAIC00OCw5ICs0OCw5IEBAIFBBU1MgcmVjdC5ib3R0b20gaXMgcmVjdC50b3Ag
KyByZWN0LmhlaWdodAogCiBUZXN0IDcKIFBBU1MgcmVjdC5sZWZ0LnRvRml4ZWQoMykgaXMgIjgu
MDAwIgotUEFTUyByZWN0LnRvcC50b0ZpeGVkKDMpIGlzICIyMTY4LjAwMCIKK1BBU1MgcmVjdC50
b3AudG9GaXhlZCgzKSBpcyAiMjE4MC4wMDAiCiBQQVNTIHJlY3Qud2lkdGgudG9GaXhlZCgzKSBp
cyAiMTc2LjAwMCIKLVBBU1MgcmVjdC5oZWlnaHQudG9GaXhlZCgzKSBpcyAiMTA4LjAwMCIKK1BB
U1MgcmVjdC5oZWlnaHQudG9GaXhlZCgzKSBpcyAiOTYuMDAwIgogUEFTUyByZWN0LnJpZ2h0IGlz
IHJlY3QubGVmdCArIHJlY3Qud2lkdGgKIFBBU1MgcmVjdC5ib3R0b20gaXMgcmVjdC50b3AgKyBy
ZWN0LmhlaWdodAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRC
b3VuZGluZ0NsaWVudFJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2dldEJv
dW5kaW5nQ2xpZW50UmVjdC5odG1sCmluZGV4IGY0MzJiYzk1YTc3OS4uY2FlYWIzYWJmNDg0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVudFJl
Y3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9nZXRCb3VuZGluZ0NsaWVu
dFJlY3QuaHRtbApAQCAtMTA1LDcgKzEwNSw3IEBAIGJvZHkgewogICAgICAgICAvKjQqLyAgeyBs
ZWZ0OiAwLCB0b3A6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSwKICAgICAgICAgLyo1Ki8gIHsg
bGVmdDogLTE0LjU3NCwgdG9wOiAxNzYxLjk0Nywgd2lkdGg6IDUwNC4wMDksIGhlaWdodDogNTM1
Ljg0OSB9LAogICAgICAgICAvKjYqLyAgeyBsZWZ0OiAwLCB0b3A6IDAsIHdpZHRoOiAwLCBoZWln
aHQ6IDAgfSwKLSAgICAgICAgLyo3Ki8gIHsgbGVmdDogOCwgdG9wOiAyMTY4LCB3aWR0aDogMTc2
LCBoZWlnaHQ6IDEwOCB9LAorICAgICAgICAvKjcqLyAgeyBsZWZ0OiA4LCB0b3A6IDIxODAsIHdp
ZHRoOiAxNzYsIGhlaWdodDogOTYgfSwKICAgICBdOwogCiAgICAgLy8gUmFuZ2Ugb3ZlciBlbnRp
cmUgZWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZjk5NjJhNmU0MGMuLmZiNmMyMzYwMmMxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTExLTAyICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gUmVuZGVyVGV4dDo6
YWJzb2x1dGVRdWFkc0ZvclJhbmdlIHNob3VsZCB1c2UgaXRlcmF0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgcmVxdWlyZWQgaXRlcmF0
b3Igc3VwcG9ydCBhbmQgY29udmVydCBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UgdG8gdXNlIGl0Lgor
ICAgICAgICBUaGlzIGVsaW1pbmF0ZXMgZW5zdXJlTGluZUJveGVzIGZyb20gdHdvIHBsYWNlcy4K
KworICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJh
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aFRleHRSdW46
OmlzU2VsZWN0YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6UGF0aFRleHRSdW46OnNlbGVjdGlvblJlY3QgY29uc3QpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTGVnYWN5UGF0aDo6
aXNTZWxlY3RhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9u
OjpSdW5JdGVyYXRvckxlZ2FjeVBhdGg6OnNlbGVjdGlvblJlY3QgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0
aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9k
ZXJuUGF0aDo6b2Zmc2V0Rm9yUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6aXNTZWxlY3RhYmxlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVy
blBhdGg6OnNlbGVjdGlvblJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJuUGF0aDo6Y2xhbXBlZE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRo
OjpjcmVhdGVUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzRm9yUmFuZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxRdWFkRm9yVGV4dFJ1bik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2UgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmxvY2FsUXVhZEZvclRleHRCb3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkc0ZvclJhbmdlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUmVjdHNGb3JS
YW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRMaW5l
Qm94ZXMuaDoKKwogMjAyMC0xMS0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RvcCBzZW5kaW5nIG9yaWdpbnMgZnJvbSBXZWJQcm9jZXNzIHRvIFVJUHJv
Y2VzcyBmb3IgZ2V0VXNlck1lZGlhIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggNzdjMDFmNTc3NDMyLi5hYTE4ZGM5NzJh
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVJdGVyYXRvck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
LmgKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgdG9wKCkgY29uc3Qg
eyByZXR1cm4gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQobGluZSgpLmVuY2xvc2luZ1JlY3Qo
KS55KCkpOyB9CiAgICAgTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVybiBMYXlvdXRV
bml0Ojpmcm9tRmxvYXRSb3VuZChsaW5lKCkuZW5jbG9zaW5nUmVjdCgpLm1heFkoKSk7IH0KICAg
ICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhlc2UgcmVhbGx5IGJlPwotICAgIExheW91dFVuaXQg
c2VsZWN0aW9uVG9wKCkgY29uc3QgeyByZXR1cm4gbGluZUJveFRvcCgpOyB9Ci0gICAgTGF5b3V0
VW5pdCBzZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbGluZUJveFRv
cCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20oKSBjb25zdCB7IHJldHVybiBs
aW5lQm94Qm90dG9tKCk7IH0KKyAgICBMYXlvdXRVbml0IHNlbGVjdGlvblRvcCgpIGNvbnN0IHsg
cmV0dXJuIHRvcCgpOyB9CisgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5n
KCkgY29uc3QgeyByZXR1cm4gdG9wKCk7IH0KKyAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkJvdHRv
bSgpIGNvbnN0IHsgcmV0dXJuIGJvdHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBsaW5lQm94VG9w
KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQobGluZSgpLnJlY3Qo
KS55KCkpOyB9CiAgICAgTGF5b3V0VW5pdCBsaW5lQm94Qm90dG9tKCkgY29uc3QgeyByZXR1cm4g
TGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQobGluZSgpLnJlY3QoKS5tYXhZKCkpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmluZGV4IDAzZGE4Y2VkMDJlMy4uZDM2YTExMTdk
MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKQEAgLTEwOSw2ICsxMDksOSBA
QCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB4KSBjb25z
dDsKIAorICAgIGJvb2wgaXNTZWxlY3RhYmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQp
IGNvbnN0OworICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgZW5kKSBjb25zdDsKKwogICAgIGJvb2wgaXNMYXN0VGV4dFJ1bk9uTGluZSgpIGNvbnN0
OwogICAgIGJvb2wgaXNMYXN0VGV4dFJ1bigpIGNvbnN0OwogCkBAIC0zMjUsNiArMzI4LDIwIEBA
IGlubGluZSB1bnNpZ25lZCBQYXRoVGV4dFJ1bjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCkg
Y29uc3QKICAgICB9KTsKIH0KIAoraW5saW5lIGJvb2wgUGF0aFRleHRSdW46OmlzU2VsZWN0YWJs
ZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSBjb25zdAoreworICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFsmXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHJldHVy
biBwYXRoLmlzU2VsZWN0YWJsZShzdGFydCwgZW5kKTsKKyAgICB9KTsKK30KKworaW5saW5lIExh
eW91dFJlY3QgUGF0aFRleHRSdW46OnNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGVuZCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBbJl0oYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5zZWxlY3Rpb25SZWN0KHN0
YXJ0LCBlbmQpOworICAgIH0pOworfQorCiBpbmxpbmUgYm9vbCBQYXRoVGV4dFJ1bjo6aXNMYXN0
VGV4dFJ1bk9uTGluZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRo
VmFyaWFudCwgW10oYXV0byYgcGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvckxlZ2FjeVBhdGguaAppbmRleCA0NjZhYmFkMDkxMDcuLjVlMTgzYTAyMjNmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKQEAgLTYx
LDYgKzYxLDkgQEAgcHVibGljOgogCiAgICAgaW5saW5lIHVuc2lnbmVkIG9mZnNldEZvclBvc2l0
aW9uKGZsb2F0IHgpIGNvbnN0IHsgcmV0dXJuIGlubGluZVRleHRCb3goKS0+b2Zmc2V0Rm9yUG9z
aXRpb24oeCk7IH0KIAorICAgIGJvb2wgaXNTZWxlY3RhYmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQpIGNvbnN0IHsgcmV0dXJuIGlubGluZVRleHRCb3goKS0+aXNTZWxlY3RlZChzdGFy
dCwgZW5kKTsgfQorICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCh1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgZW5kKSBjb25zdCB7IHJldHVybiBpbmxpbmVUZXh0Qm94KCktPmxvY2FsU2VsZWN0
aW9uUmVjdChzdGFydCwgZW5kKTsgfQorCiAgICAgYm9vbCBpc0xhc3RUZXh0UnVuT25MaW5lKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIGF1dG8qIG5leHQgPSBuZXh0SW5saW5lVGV4dEJveEluVGV4
dE9yZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0
aC5oCmluZGV4IGRlNDI1ZTZlNzA0ZC4uYWYwOWIzMzgyNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1v
ZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaApAQCAtNzcsMTggKzc3LDM4IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKGxvY2FsWCA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKIAot
ICAgICAgICBhdXRvJiBzdHlsZSA9IHJ1bigpLnN0eWxlKCk7CisgICAgICAgIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMgPSB0cnVlOworICAgICAgICByZXR1cm4gcnVuKCkuc3R5bGUoKS5mb250
Q2FzY2FkZSgpLm9mZnNldEZvclBvc2l0aW9uKGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9kZTo6SWdu
b3JlKSwgbG9jYWxYLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CisgICAgfQogCi0gICAgICAgIGF1
dG8gY3JlYXRlVGV4dFJ1biA9IFsmXSB7Ci0gICAgICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IHJ1
bigpLmV4cGFuc2lvbigpOwotICAgICAgICAgICAgYXV0byB4UG9zID0gcmVjdC54KCkgLSAobGlu
ZSgpLnJlY3QoKS54KCkgKyBsaW5lKCkuaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCgpKTsKLSAg
ICAgICAgICAgIFRleHRSdW4gdGV4dFJ1biB7IHRleHQoKSwgeFBvcywgZXhwYW5zaW9uLmhvcml6
b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwotICAgICAgICAgICAgdGV4dFJ1
bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgp
KTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0UnVuOwotICAgICAgICB9OworICAgIGJvb2wgaXNT
ZWxlY3RhYmxlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gY2xhbXBlZE9mZnNldChzdGFydCkgPCBjbGFtcGVkT2Zmc2V0KGVuZCk7Cisg
ICAgfQogCi0gICAgICAgIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlOwotICAgICAg
ICByZXR1cm4gcnVuKCkuc3R5bGUoKS5mb250Q2FzY2FkZSgpLm9mZnNldEZvclBvc2l0aW9uKGNy
ZWF0ZVRleHRSdW4oKSwgbG9jYWxYLCBpbmNsdWRlUGFydGlhbEdseXBocyk7CisgICAgTGF5b3V0
UmVjdCBzZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHJhbmdlU3RhcnQsIHVuc2lnbmVkIHJhbmdlRW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2xhbXBlZFN0YXJ0ID0gY2xhbXBlZE9m
ZnNldChyYW5nZVN0YXJ0KTsKKyAgICAgICAgdW5zaWduZWQgY2xhbXBlZEVuZCA9IGNsYW1wZWRP
ZmZzZXQocmFuZ2VFbmQpOworCisgICAgICAgIGlmIChjbGFtcGVkU3RhcnQgPj0gY2xhbXBlZEVu
ZCAmJiAhKHJhbmdlU3RhcnQgPT0gcmFuZ2VFbmQgJiYgcmFuZ2VTdGFydCA+PSBzdGFydCgpICYm
IHJhbmdlU3RhcnQgPD0gZW5kKCkpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAg
ICBhdXRvIGxvZ2ljYWxMZWZ0ID0gTGF5b3V0VW5pdChpc0hvcml6b250YWwoKSA/IHJlY3QoKS54
KCkgOiByZWN0KCkueSgpKTsKKyAgICAgICAgYXV0byBsb2dpY2FsUmlnaHQgPSBMYXlvdXRVbml0
KGlzSG9yaXpvbnRhbCgpID8gcmVjdCgpLm1heFgoKSA6IHJlY3QoKS5tYXhZKCkpOworICAgICAg
ICBhdXRvIGxvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxSaWdodCAtIGxvZ2ljYWxMZWZ0OworCisgICAg
ICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgc2hhcmUgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUg
bGluZSBpdGVyYXRvci4KKyAgICAgICAgYXV0byBzZWxlY3Rpb25Ub3AgPSBMYXlvdXRVbml0Ojpm
cm9tRmxvYXRSb3VuZChsaW5lKCkuZW5jbG9zaW5nUmVjdCgpLnkoKSk7CisgICAgICAgIGF1dG8g
c2VsZWN0aW9uSGVpZ2h0ID0gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Um91bmQobGluZSgpLmVuY2xv
c2luZ1JlY3QoKS5oZWlnaHQoKSk7CisKKyAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
IHsgbG9naWNhbExlZnQsIHNlbGVjdGlvblRvcCwgbG9naWNhbFdpZHRoLCBzZWxlY3Rpb25IZWln
aHQgfTsKKworICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1v
ZGU6OkluY2x1ZGUpOworICAgICAgICBpZiAoY2xhbXBlZFN0YXJ0ICE9IHN0YXJ0KCkgfHwgY2xh
bXBlZEVuZCAhPSB0ZXh0UnVuLmxlbmd0aCgpKQorICAgICAgICAgICAgcnVuKCkuc3R5bGUoKS5m
b250Q2FzY2FkZSgpLmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlv
blJlY3QsIGNsYW1wZWRTdGFydCAtIHN0YXJ0KCksIGNsYW1wZWRFbmQgLSBzdGFydCgpKTsKKwor
ICAgICAgICByZXR1cm4gc25hcHBlZFNlbGVjdGlvblJlY3Qoc2VsZWN0aW9uUmVjdCwgbG9naWNh
bFJpZ2h0LCBzZWxlY3Rpb25Ub3AsIHNlbGVjdGlvbkhlaWdodCwgaXNIb3Jpem9udGFsKCkpOwog
ICAgIH0KIAogICAgIGJvb2wgaXNMYXN0VGV4dFJ1bk9uTGluZSgpIGNvbnN0CkBAIC0xNzYsNiAr
MTk2LDM2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJ1bkl0ZXJhdG9y
OwogCisgICAgdW5zaWduZWQgY2xhbXBlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Cisg
ICAgeworICAgICAgICBhdXRvIGNsYW1wZWRPZmZzZXQgPSBzdGQ6Om1heChzdGFydCgpLCBzdGQ6
Om1pbihvZmZzZXQsIGVuZCgpKSk7CisgICAgICAgIC8vIFdlIHRyZWF0IHRoZSBsYXN0IGNvZGVw
b2ludCBpbiB0aGlzIHJ1biBhbmQgdGhlIGh5cGhlbiBhcyBhIHNpbmdsZSB1bml0LgorICAgICAg
ICBpZiAoaGFzSHlwaGVuKCkgJiYgY2xhbXBlZE9mZnNldCA9PSBlbmQoKSkKKyAgICAgICAgICAg
IGNsYW1wZWRPZmZzZXQgKz0gcnVuKCkuc3R5bGUoKS5oeXBoZW5TdHJpbmcoKS5sZW5ndGgoKTsK
KworICAgICAgICByZXR1cm4gY2xhbXBlZE9mZnNldDsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNz
IEh5cGhlbk1vZGUgeyBJbmNsdWRlLCBJZ25vcmUgfTsKKyAgICBUZXh0UnVuIGNyZWF0ZVRleHRS
dW4oSHlwaGVuTW9kZSBoeXBoZW5Nb2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byYgc3R5
bGUgPSBydW4oKS5zdHlsZSgpOworICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IHJ1bigpLmV4cGFu
c2lvbigpOworICAgICAgICBhdXRvIHJlY3QgPSB0aGlzLT5yZWN0KCk7CisgICAgICAgIGF1dG8g
eFBvcyA9IHJlY3QueCgpIC0gKGxpbmUoKS5yZWN0KCkueCgpICsgbGluZSgpLmhvcml6b250YWxB
bGlnbm1lbnRPZmZzZXQoKSk7CisKKyAgICAgICAgYXV0byB0ZXh0Rm9yUnVuID0gWyZdIHsKKyAg
ICAgICAgICAgIGlmIChoeXBoZW5Nb2RlID09IEh5cGhlbk1vZGU6Oklnbm9yZSB8fCAhaGFzSHlw
aGVuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQoKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCk7CisKKyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHRleHQoKSwgc3R5bGUuaHlw
aGVuU3RyaW5nKCkpOworICAgICAgICB9KCk7CisKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsg
dGV4dEZvclJ1biwgeFBvcywgZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lv
bi5iZWhhdmlvciB9OworICAgICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNl
V2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOworICAgICAgICByZXR1cm4gdGV4dFJ1bjsK
KyAgICB9OworCiAgICAgY29uc3QgSW5saW5lQ29udGVudDo6UnVucyYgcnVucygpIGNvbnN0IHsg
cmV0dXJuIG1faW5saW5lQ29udGVudC0+cnVuczsgfQogICAgIGNvbnN0IFJ1biYgcnVuKCkgY29u
c3QgeyByZXR1cm4gcnVucygpW21fcnVuSW5kZXhdOyB9CiAgICAgY29uc3QgTGluZSYgbGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+bGluZUZvclJ1bihydW4oKSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA0MzZjYzJkMTNmZGMuLjNj
YmJjZTNmNmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAt
MzEzLDE5ICszMTMsOSBAQCB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdQogCiBWZWN0b3I8SW50UmVj
dD4gUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sKiB3YXNGaXhlZCkgY29uc3QK
IHsKLSAgICBjb25zdF9jYXN0PFJlbmRlclRleHQmPigqdGhpcykuZW5zdXJlTGluZUJveGVzKCk7
Ci0KLSAgICAvLyBXb3JrIGFyb3VuZCBzaWduZWQvdW5zaWduZWQgaXNzdWVzLiBUaGlzIGZ1bmN0
aW9uIHRha2VzIHVuc2lnbmVkcywgYW5kIGlzIG9mdGVuIHBhc3NlZCBVSU5UX01BWAotICAgIC8v
IHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRoZSBlbmQiLiBJbmxpbmVUZXh0Qm94IGNvb3JkaW5h
dGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5naW5nIHRoaXMgCi0gICAgLy8gZnVuY3Rpb24gdG8g
dGFrZSBpbnRzIGNhdXNlcyB2YXJpb3VzIGludGVybmFsIG1pc21hdGNoZXMuIEJ1dCBzZWxlY3Rp
b25SZWN0IHRha2VzIGludHMsIGFuZCAKLSAgICAvLyBwYXNzaW5nIFVJTlRfTUFYIHRvIGl0IGNh
dXNlcyB0cm91YmxlLiBJZGVhbGx5IHdlJ2QgY2hhbmdlIHNlbGVjdGlvblJlY3QgdG8gdGFrZSB1
bnNpZ25lZHMsIGJ1dCAKLSAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIG1hbnkgcmlwcGxlIGVmZmVj
dHMsIHNvIGZvciBub3cgd2UnbGwganVzdCBjbGFtcCBvdXIgdW5zaWduZWQgcGFyYW1ldGVycyB0
byBJTlRfTUFYLgotICAgIEFTU0VSVChlbmQgPT0gVUlOVF9NQVggfHwgZW5kIDw9IElOVF9NQVgp
OwotICAgIEFTU0VSVChzdGFydCA8PSBJTlRfTUFYKTsKLSAgICBzdGFydCA9IHN0ZDo6bWluKHN0
YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwotICAgIGVuZCA9IHN0ZDo6bWlu
KGVuZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKLSAgICAKLSAgICByZXR1cm4g
bV9saW5lQm94ZXMuYWJzb2x1dGVSZWN0c0ZvclJhbmdlKCp0aGlzLCBzdGFydCwgZW5kLCB1c2VT
ZWxlY3Rpb25IZWlnaHQsIHdhc0ZpeGVkKTsKKyAgICByZXR1cm4gYWJzb2x1dGVRdWFkc0ZvclJh
bmdlKHN0YXJ0LCBlbmQsIHVzZVNlbGVjdGlvbkhlaWdodCwgZmFsc2UgLyogaWdub3JlRW1wdHlU
ZXh0U2VsZWN0aW9ucyAqLywgd2FzRml4ZWQpLm1hcChbXShhdXRvJiBxdWFkKSB7CisgICAgICAg
IHJldHVybiBxdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAgfSk7CiB9CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpAQCAtNDMzLDYgKzQyMywyNiBAQCB2b2lkIFJlbmRlclRleHQ6
OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkg
Y29uc3QKICAgICBxdWFkcy5hcHBlbmRWZWN0b3IobV9saW5lQm94ZXMuYWJzb2x1dGVRdWFkcygq
dGhpcywgd2FzRml4ZWQsIFJlbmRlclRleHRMaW5lQm94ZXM6Ok5vQ2xpcHBpbmcpKTsKIH0KIAor
c3RhdGljIEZsb2F0UmVjdCBsb2NhbFF1YWRGb3JUZXh0UnVuKGNvbnN0IExheW91dEludGVncmF0
aW9uOjpQYXRoVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29s
IHVzZVNlbGVjdGlvbkhlaWdodCkKK3sKKyAgICB1bnNpZ25lZCByZWFsRW5kID0gc3RkOjptaW4o
cnVuLmVuZCgpLCBlbmQpOworICAgIExheW91dFJlY3QgYm94U2VsZWN0aW9uUmVjdCA9IHJ1bi5z
ZWxlY3Rpb25SZWN0KHN0YXJ0LCByZWFsRW5kKTsKKyAgICBpZiAoIWJveFNlbGVjdGlvblJlY3Qu
aGVpZ2h0KCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKHVzZVNlbGVjdGlvbkhlaWdo
dCkKKyAgICAgICAgcmV0dXJuIGJveFNlbGVjdGlvblJlY3Q7CisKKyAgICBhdXRvIHJlY3QgPSBy
dW4ucmVjdCgpOworICAgIGlmIChydW4uaXNIb3Jpem9udGFsKCkpIHsKKyAgICAgICAgYm94U2Vs
ZWN0aW9uUmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGJveFNlbGVjdGlv
blJlY3Quc2V0WShyZWN0LnkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm94U2VsZWN0aW9u
UmVjdC5zZXRXaWR0aChyZWN0LndpZHRoKCkpOworICAgICAgICBib3hTZWxlY3Rpb25SZWN0LnNl
dFgocmVjdC54KCkpOworICAgIH0KKyAgICByZXR1cm4gYm94U2VsZWN0aW9uUmVjdDsKK30KKwog
VmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sIGln
bm9yZUVtcHR5VGV4dFNlbGVjdGlvbnMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIC8v
IFdvcmsgYXJvdW5kIHNpZ25lZC91bnNpZ25lZCBpc3N1ZXMuIFRoaXMgZnVuY3Rpb24gdGFrZXMg
dW5zaWduZWRzLCBhbmQgaXMgb2Z0ZW4gcGFzc2VkIFVJTlRfTUFYCkBAIC00NDUsOCArNDU1LDM1
IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNGb3JSYW5nZSh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kCiAgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGFydCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgpKTsKICAgICBlbmQgPSBzdGQ6Om1pbihlbmQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CiAKLSAgICBjb25zdF9jYXN0PFJlbmRl
clRleHQmPigqdGhpcykuZW5zdXJlTGluZUJveGVzKCk7Ci0gICAgcmV0dXJuIG1fbGluZUJveGVz
LmFic29sdXRlUXVhZHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVp
Z2h0LCBpZ25vcmVFbXB0eVRleHRTZWxlY3Rpb25zLCB3YXNGaXhlZCk7CisgICAgVmVjdG9yPEZs
b2F0UXVhZD4gcXVhZHM7CisgICAgZm9yIChhdXRvJiBydW4gOiBMYXlvdXRJbnRlZ3JhdGlvbjo6
dGV4dFJ1bnNGb3IoKnRoaXMpKSB7CisgICAgICAgIGlmIChpZ25vcmVFbXB0eVRleHRTZWxlY3Rp
b25zICYmICFydW4uaXNTZWxlY3RhYmxlKHN0YXJ0LCBlbmQpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmIChzdGFydCA8PSBydW4uc3RhcnQoKSAmJiBydW4uZW5kKCkgPD0gZW5k
KSB7CisgICAgICAgICAgICBhdXRvIGJvdW5kYXJpZXMgPSBbJl0geworICAgICAgICAgICAgICAg
IGlmIChydW4ubGVnYWN5SW5saW5lQm94KCkgJiYgcnVuLmxlZ2FjeUlubGluZUJveCgpLT5pc1NW
R0lubGluZVRleHRCb3goKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bi5sZWdhY3lJ
bmxpbmVCb3goKS0+Y2FsY3VsYXRlQm91bmRhcmllcygpOworICAgICAgICAgICAgICAgIHJldHVy
biBydW4ucmVjdCgpOworICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICBpZiAodXNlU2Vs
ZWN0aW9uSGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
ID0gcnVuLnNlbGVjdGlvblJlY3Qoc3RhcnQsIGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKHJ1
bi5pc0hvcml6b250YWwoKSkgeworICAgICAgICAgICAgICAgICAgICBib3VuZGFyaWVzLnNldEhl
aWdodChzZWxlY3Rpb25SZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYm91bmRh
cmllcy5zZXRZKHNlbGVjdGlvblJlY3QueSgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBib3VuZGFyaWVzLnNldFdpZHRoKHNlbGVjdGlvblJlY3Qud2lk
dGgoKSk7CisgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJpZXMuc2V0WChzZWxlY3Rpb25SZWN0
LngoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcXVh
ZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoYm91bmRhcmllcywgVXNlVHJhbnNmb3Jtcywg
d2FzRml4ZWQpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEZs
b2F0UmVjdCByZWN0ID0gbG9jYWxRdWFkRm9yVGV4dFJ1bihydW4sIHN0YXJ0LCBlbmQsIHVzZVNl
bGVjdGlvbkhlaWdodCk7CisgICAgICAgIGlmICghcmVjdC5pc1plcm8oKSkKKyAgICAgICAgICAg
IHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKHJlY3QsIFVzZVRyYW5zZm9ybXMsIHdh
c0ZpeGVkKSk7CisgICAgfQorICAgIHJldHVybiBxdWFkczsKIH0KIAogUG9zaXRpb24gUmVuZGVy
VGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKaW5kZXggYjc1
NjM5YWZmOGI3Li5hZGRiZjU4ZmRkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKQEAgLTIzNyw1OSArMjM3LDYgQEAgdm9pZCBSZW5k
ZXJUZXh0TGluZUJveGVzOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHNGb3JSYW5nZSh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQKICAgICB9CiB9CiAKLXN0YXRpYyBGbG9hdFJlY3QgbG9jYWxRdWFkRm9y
VGV4dEJveChjb25zdCBJbmxpbmVUZXh0Qm94JiBib3gsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0KQotewotICAgIHVuc2lnbmVkIHJlYWxFbmQg
PSBzdGQ6Om1pbihib3guZW5kKCksIGVuZCk7Ci0gICAgTGF5b3V0UmVjdCBib3hTZWxlY3Rpb25S
ZWN0ID0gYm94LmxvY2FsU2VsZWN0aW9uUmVjdChzdGFydCwgcmVhbEVuZCk7Ci0gICAgaWYgKCFi
b3hTZWxlY3Rpb25SZWN0LmhlaWdodCgpKQotICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci0g
ICAgaWYgKHVzZVNlbGVjdGlvbkhlaWdodCkKLSAgICAgICAgcmV0dXJuIGJveFNlbGVjdGlvblJl
Y3Q7Ci0gICAgLy8gQ2hhbmdlIHRoZSBoZWlnaHQgYW5kIHkgcG9zaXRpb24gKG9yIHdpZHRoIGFu
ZCB4IGZvciB2ZXJ0aWNhbCB0ZXh0KQotICAgIC8vIGJlY2F1c2Ugc2VsZWN0aW9uUmVjdCB1c2Vz
IHNlbGVjdGlvbi1zcGVjaWZpYyB2YWx1ZXMuCi0gICAgaWYgKGJveC5pc0hvcml6b250YWwoKSkg
ewotICAgICAgICBib3hTZWxlY3Rpb25SZWN0LnNldEhlaWdodChib3guaGVpZ2h0KCkpOwotICAg
ICAgICBib3hTZWxlY3Rpb25SZWN0LnNldFkoYm94LnkoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgYm94U2VsZWN0aW9uUmVjdC5zZXRXaWR0aChib3gud2lkdGgoKSk7Ci0gICAgICAgIGJveFNl
bGVjdGlvblJlY3Quc2V0WChib3gueCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGJveFNlbGVjdGlv
blJlY3Q7Ci19Ci0KLVZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29s
dXRlUXVhZHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wgaWdub3JlRW1w
dHlUZXh0U2VsZWN0aW9ucywgYm9vbCogd2FzRml4ZWQpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPEZs
b2F0UXVhZD4gcXVhZHM7Ci0gICAgZm9yIChhdXRvKiBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9
IGJveC0+bmV4dFRleHRCb3goKSkgewotICAgICAgICBpZiAoaWdub3JlRW1wdHlUZXh0U2VsZWN0
aW9ucyAmJiAhYm94LT5pc1NlbGVjdGVkKHN0YXJ0LCBlbmQpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlmIChzdGFydCA8PSBib3gtPnN0YXJ0KCkgJiYgYm94LT5lbmQoKSA8PSBl
bmQpIHsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGFyaWVzID0gYm94LT5jYWxjdWxhdGVC
b3VuZGFyaWVzKCk7Ci0gICAgICAgICAgICBpZiAodXNlU2VsZWN0aW9uSGVpZ2h0KSB7Ci0gICAg
ICAgICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gYm94LT5sb2NhbFNlbGVjdGlv
blJlY3Qoc3RhcnQsIGVuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJveC0+aXNIb3Jpem9udGFs
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllcy5zZXRIZWlnaHQoc2VsZWN0aW9u
UmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJpZXMuc2V0WShzZWxl
Y3Rpb25SZWN0LnkoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgYm91bmRhcmllcy5zZXRXaWR0aChzZWxlY3Rpb25SZWN0LndpZHRoKCkpOwotICAgICAg
ICAgICAgICAgICAgICBib3VuZGFyaWVzLnNldFgoc2VsZWN0aW9uUmVjdC54KCkpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHF1YWRzLmFwcGVuZChyZW5k
ZXJlci5sb2NhbFRvQWJzb2x1dGVRdWFkKGJvdW5kYXJpZXMsIFVzZVRyYW5zZm9ybXMsIHdhc0Zp
eGVkKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBGbG9hdFJl
Y3QgcmVjdCA9IGxvY2FsUXVhZEZvclRleHRCb3goKmJveCwgc3RhcnQsIGVuZCwgdXNlU2VsZWN0
aW9uSGVpZ2h0KTsKLSAgICAgICAgaWYgKCFyZWN0LmlzWmVybygpKQotICAgICAgICAgICAgcXVh
ZHMuYXBwZW5kKHJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQocmVjdCwgVXNlVHJhbnNmb3Jt
cywgd2FzRml4ZWQpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHF1YWRzOwotfQotCi1WZWN0b3I8SW50
UmVjdD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKGNvbnN0IFJl
bmRlclRleHQmIHJlbmRlcmVyLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVz
ZVNlbGVjdGlvbkhlaWdodCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFi
c29sdXRlUXVhZHNGb3JSYW5nZShyZW5kZXJlciwgc3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVp
Z2h0LCBmYWxzZSAvKiBpZ25vcmVFbXB0eVRleHRTZWxlY3Rpb25zICovLCB3YXNGaXhlZCkubWFw
KFtdKGF1dG8mIHF1YWQpIHsgcmV0dXJuIHF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsgfSk7
Ci19Ci0KIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUXVh
ZHMoY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGluZ09w
dGlvbiBvcHRpb24pIGNvbnN0CiB7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaAppbmRleCAwMmQz
MGFiM2MwZTAuLmUyZjlmNTU4MDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dExpbmVCb3hlcy5oCkBAIC02NCw4ICs2NCw2IEBAIHB1YmxpYzoKIAogICAgIGVu
dW0gQ2xpcHBpbmdPcHRpb24geyBOb0NsaXBwaW5nLCBDbGlwVG9FbGxpcHNpcyB9OwogICAgIFZl
Y3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wqIHdh
c0ZpeGVkLCBDbGlwcGluZ09wdGlvbikgY29uc3Q7Ci0gICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJz
b2x1dGVRdWFkc0ZvclJhbmdlKGNvbnN0IFJlbmRlclRleHQmLCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgYm9vbCBpZ25vcmVFbXB0eVRleHRT
ZWxlY3Rpb25zLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7Ci0gICAgVmVjdG9yPEludFJlY3Q+IGFi
c29sdXRlUmVjdHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dDsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgflJlbmRlclRleHRMaW5lQm94ZXMoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>