<?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>203375</bug_id>
          
          <creation_ts>2019-10-24 11:11:05 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add support for partial leading and trailing content</short_desc>
          <delta_ts>2019-10-24 13:04:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</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>1583423</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-10-24 11:11:05 -0700</bug_when>
    <thetext>when the content gets split at the end of the line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583433</commentid>
    <comment_count>1</comment_count>
      <attachid>381828</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-10-24 11:33:00 -0700</bug_when>
    <thetext>Created attachment 381828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583463</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-24 12:41:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/56590078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583473</commentid>
    <comment_count>3</comment_count>
      <attachid>381828</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-24 13:04:26 -0700</bug_when>
    <thetext>Comment on attachment 381828
Patch

Clearing flags on attachment: 381828

Committed r251554: &lt;https://trac.webkit.org/changeset/251554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583474</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-24 13:04:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381828</attachid>
            <date>2019-10-24 11:33:00 -0700</date>
            <delta_ts>2019-10-24 13:04:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203375-20191024113259.patch</filename>
            <type>text/plain</type>
            <size>30855</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY1MGM0NjgyOGQyMTgy
NTA4YjE4N2U3MjYzZWM2YWFiZTkzOWY5Ny4uZGM1Y2VlYWIyNDM0ZjFjZWE5YTFhYWYxODc4MWUz
MjI1Njk1ZDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTEwLTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3Vw
cG9ydCBmb3IgcGFydGlhbCBsZWFkaW5nIGFuZCB0cmFpbGluZyBjb250ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMzNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3Vw
cG9ydCBmb3Igc3BsaXR0aW5nIHRleHQgY29udGVudCBhY3Jvc3MgbXVsdGlwbGUgbGluZXMgd2hl
biBuZWVkZWQuCisgICAgICAgIEl0IGFsc28gc3VwcG9ydHMgY29tcGxleCBjYXNlcyB3aGVuIHRo
ZSB0ZXh0IGNvbnRlbnQgc3ByZWFkcyBhY3Jvc3MgbXVsdGlwbGUgaW5saW5lIGxldmVsIGJveGVz
IHdpdGggZGlmZmVyZW50IHdvcmQtYnJlYWsgdmFsdWVzIGUuZy4KKyAgICAgICAgPHNwYW4gc3R5
bGU9IndvcmQtYnJlYWs6IGtlZXAtYWxsIj5kb25vdHNwbGl0dGhpc2NvbnRlbnQ8L3NwYW4+PHNw
YW4gc3R5bGU9IndvcmQtYnJlYWs6IGJyZWFrLWFsbCI+c3BsaXR0aGlzY29udGVudDwvc3Bhbj4K
KyAgICAgICAgd291bGQgcHJvZHVjZSBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGggY2VydGFpbiBj
b25zdHJhaW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gfCA8LSBhdmFp
bGFibGUgd2lkdGgKKyAgICAgICAgImRvbm90c3BsaXR0aGlzY29udGVudHNwbGl0CisgICAgICAg
IHRoaXNjb250ZW50IgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3Ry
YWludCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJlYWtlcjo6YnJl
YWtpbmdDb250ZXh0Rm9ySW5saW5lQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVCcmVha2VyOjpzaG91bGRXcmFwRmxvYXRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnJlYWtlcjo6d29yZEJyZWFraW5nQmVoYXZpb3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJyZWFrZXI6OmJyZWFraW5nQ29udGV4dCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCcmVha2VyOjpicmVha2lu
Z0NvbnRleHRGb3JGbG9hdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUxheW91dDo6TGluZUlucHV0OjpMaW5lSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5
b3V0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXQ6OnBsYWNl
SW5saW5lSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXQ6OnByb2Nl
c3NVbmNvbW1pdHRlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5
b3V0OjpzaG91bGRQcm9jZXNzVW5jb21taXR0ZWRDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUxheW91dDo6VW5jb21taXR0ZWRDb250ZW50Ojp0cmltKToKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lTGF5b3V0Lmg6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6bGVmdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpyaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaDoKKwog
MjAxOS0xMC0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF1
ZGlvQ29udGV4dCBzaG91bGQgbm90IHByZXZlbnQgZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBj
YWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDEyZjI0YjM1ZTg4
YWRmYjEwYjk5ZmM1YTk5N2ZjYzY1ZjRhMWJjZjguLjE5ZTVkYTMyNTI2OTYxOTZhZTEwMTNhNmVl
MjQ3ZGQ3Y2YzMjAxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTk1LDE4ICs5NSwyOCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0
KFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdQogewogICAgIGF1dG8mIGlu
bGluZUl0ZW1zID0gZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKTsKICAgICBhdXRvIGxp
bmVMb2dpY2FsVG9wID0gZ2VvbWV0cnlGb3JCb3gocm9vdCgpKS5jb250ZW50Qm94VG9wKCk7Ci0g
ICAgTGluZUxheW91dDo6SW5kZXhBbmRSYW5nZSBjdXJyZW50SW5saW5lSXRlbTsKLSAgICB3aGls
ZSAoY3VycmVudElubGluZUl0ZW0uaW5kZXggPCBpbmxpbmVJdGVtcy5zaXplKCkpIHsKKyAgICB1
bnNpZ25lZCBsZWFkaW5nSW5saW5lSXRlbUluZGV4ID0gMDsKKyAgICBPcHRpb25hbDxMaW5lTGF5
b3V0OjpQYXJ0aWFsQ29udGVudD4gbGVhZGluZ1BhcnRpYWxDb250ZW50OworICAgIHdoaWxlIChs
ZWFkaW5nSW5saW5lSXRlbUluZGV4IDwgaW5saW5lSXRlbXMuc2l6ZSgpKSB7CiAgICAgICAgIGF1
dG8gbGluZUNvbnN0cmFpbnRzID0gaW5pdGlhbENvbnN0cmFpbnRzRm9yTGluZSh1c2VkSG9yaXpv
bnRhbFZhbHVlcywgbGluZUxvZ2ljYWxUb3ApOwotICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExp
bmVMYXlvdXQ6OkxpbmVJbnB1dCB7IGxpbmVDb25zdHJhaW50cywgcm9vdCgpLnN0eWxlKCkudGV4
dEFsaWduKCksIGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9OworCisgICAgICAgIGF1
dG8gbGluZUlucHV0ID0gTGluZUxheW91dDo6TGluZUlucHV0IHsgbGluZUNvbnN0cmFpbnRzLCBy
b290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwgaW5saW5lSXRlbXMsIGxlYWRpbmdJbmxpbmVJdGVt
SW5kZXgsIGxlYWRpbmdQYXJ0aWFsQ29udGVudCB9OwogICAgICAgICBhdXRvIGxpbmVMYXlvdXQg
PSBMaW5lTGF5b3V0IHsgKnRoaXMsIGxpbmVJbnB1dCB9OwogCiAgICAgICAgIGF1dG8gbGluZUNv
bnRlbnQgPSBsaW5lTGF5b3V0LmxheW91dCgpOwogICAgICAgICBzZXREaXNwbGF5Qm94ZXNGb3JM
aW5lKGxpbmVDb250ZW50LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAKLSAgICAgICAgaWYgKGxp
bmVDb250ZW50Lmxhc3RDb21taXR0ZWQpIHsKLSAgICAgICAgICAgIGN1cnJlbnRJbmxpbmVJdGVt
ID0geyBsaW5lQ29udGVudC5sYXN0Q29tbWl0dGVkLT5pbmRleCArIDEsIFdURjo6bnVsbG9wdCB9
OworICAgICAgICBsZWFkaW5nUGFydGlhbENvbnRlbnQgPSB7IH07CisgICAgICAgIGlmIChsaW5l
Q29udGVudC50cmFpbGluZ0lubGluZUl0ZW1JbmRleCkgewogICAgICAgICAgICAgbGluZUxvZ2lj
YWxUb3AgPSBsaW5lQ29udGVudC5saW5lQm94LmxvZ2ljYWxCb3R0b20oKTsKKyAgICAgICAgICAg
IC8vIFdoZW4gdGhlIHRyYWlsaW5nIGNvbnRlbnQgaXMgcGFydGlhbCwgd2UgbmVlZCB0byByZXVz
ZSB0aGUgbGFzdCBJbmxpbkl0ZW0uCisgICAgICAgICAgICBpZiAobGluZUNvbnRlbnQudHJhaWxp
bmdQYXJ0aWFsQ29udGVudCkgeworICAgICAgICAgICAgICAgIGxlYWRpbmdJbmxpbmVJdGVtSW5k
ZXggPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXg7CisgICAgICAgICAgICAg
ICAgLy8gVHVybiBwcmV2aW91cyBsaW5lJ3Mgb3ZlcmZsb3cgY29udGVudCBsZW5ndGggaW50byB0
aGUgbmV4dCBsaW5lJ3MgbGVhZGluZyBjb250ZW50IHBhcnRpYWwgbGVuZ3RoLgorICAgICAgICAg
ICAgICAgIC8vICJzcDwtPmxpdGNvbnRlbnQiIC0+IG92ZXJmbG93IGxlbmd0aDogMTAgLT4gbGVh
ZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3RoOiAxMC4gCisgICAgICAgICAgICAgICAgbGVhZGlu
Z1BhcnRpYWxDb250ZW50ID0gTGluZUxheW91dDo6UGFydGlhbENvbnRlbnQgeyBsaW5lQ29udGVu
dC50cmFpbGluZ1BhcnRpYWxDb250ZW50LT5sZW5ndGggfTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXggPSAqbGluZUNvbnRlbnQudHJh
aWxpbmdJbmxpbmVJdGVtSW5kZXggKyAxOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Ly8gRmxvYXRzIHByZXZlbnRlZCB1cyBwbGFjaW5nIGFueSBjb250ZW50IG9uIHRoZSBsaW5lLgog
ICAgICAgICAgICAgQVNTRVJUKGxpbmVJbnB1dC5pbml0aWFsQ29uc3RyYWludHMubGluZUlzQ29u
c3RyYWluZWRCeUZsb2F0KTsKQEAgLTIyNSwxNSArMjM1LDE1IEBAIExheW91dFVuaXQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KFVz
ZWRIb3JpCiB7CiAgICAgYXV0byYgaW5saW5lSXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxp
bmVJdGVtcygpOwogICAgIExheW91dFVuaXQgbWF4aW11bUxpbmVXaWR0aDsKLSAgICBMaW5lTGF5
b3V0OjpJbmRleEFuZFJhbmdlIGN1cnJlbnRJbmxpbmVJdGVtOwotICAgIHdoaWxlIChjdXJyZW50
SW5saW5lSXRlbS5pbmRleCA8IGlubGluZUl0ZW1zLnNpemUoKSkgeworICAgIHVuc2lnbmVkIGxl
YWRpbmdJbmxpbmVJdGVtSW5kZXggPSAwOworICAgIHdoaWxlIChsZWFkaW5nSW5saW5lSXRlbUlu
ZGV4IDwgaW5saW5lSXRlbXMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIE9ubHkgdGhlIGhvcml6dG9u
YWwgYXZhaWxhYmxlIHdpZHRoIGlzIGNvbnN0cmFpbmVkIHdoZW4gY29tcHV0aW5nIGludHJpbnNp
YyB3aWR0aC4KICAgICAgICAgYXV0byBpbml0aWFsTGluZUNvbnN0cmFpbnRzID0gTGluZTo6SW5p
dGlhbENvbnN0cmFpbnRzIHsgeyB9LCB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb25zdHJhaW50cy53
aWR0aCwgZmFsc2UsIHsgfSB9OwotICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVMYXlvdXQ6
OkxpbmVJbnB1dCB7IGluaXRpYWxMaW5lQ29uc3RyYWludHMsIGN1cnJlbnRJbmxpbmVJdGVtLCBp
bmxpbmVJdGVtcyB9OworICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVMYXlvdXQ6OkxpbmVJ
bnB1dCB7IGluaXRpYWxMaW5lQ29uc3RyYWludHMsIGlubGluZUl0ZW1zLCBsZWFkaW5nSW5saW5l
SXRlbUluZGV4IH07CiAKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IExpbmVMYXlvdXQoKnRo
aXMsIGxpbmVJbnB1dCkubGF5b3V0KCk7CiAKLSAgICAgICAgY3VycmVudElubGluZUl0ZW0gPSB7
IGxpbmVDb250ZW50Lmxhc3RDb21taXR0ZWQtPmluZGV4ICsgMSwgeyB9IH07CisgICAgICAgIGxl
YWRpbmdJbmxpbmVJdGVtSW5kZXggPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5k
ZXggKyAxOwogICAgICAgICBMYXlvdXRVbml0IGZsb2F0c1dpZHRoOwogICAgICAgICBmb3IgKGF1
dG8mIGZsb2F0SXRlbSA6IGxpbmVDb250ZW50LmZsb2F0cykKICAgICAgICAgICAgIGZsb2F0c1dp
ZHRoICs9IGdlb21ldHJ5Rm9yQm94KGZsb2F0SXRlbS0+bGF5b3V0Qm94KCkpLm1hcmdpbkJveFdp
ZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAKaW5kZXggNTVkZTBjYmM2MDJmY2ViMzEzZjQ1
MDJkOTNlMTJmNTQ4OTNhNzFlZS4uNzRiMDY3MzYzZWM4MzVhNDhkMmYyMmJhNDllOTNkZTA5NjU3
MWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcApAQCAtMzUsNTkgKzM1LDgwIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotTGluZUJyZWFrZXI6OkJyZWFr
aW5nQmVoYXZpb3IgTGluZUJyZWFrZXI6OmJyZWFraW5nQ29udGV4dChjb25zdCBWZWN0b3I8TGlu
ZUxheW91dDo6UnVuPiYgcnVucywgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQg
YXZhaWxhYmxlV2lkdGgsIGJvb2wgbGluZUlzRW1wdHkpCitMaW5lQnJlYWtlcjo6QnJlYWtpbmdD
b250ZXh0IExpbmVCcmVha2VyOjpicmVha2luZ0NvbnRleHRGb3JJbmxpbmVDb250ZW50KGNvbnN0
IFZlY3RvcjxMaW5lTGF5b3V0OjpSdW4+JiBydW5zLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwg
TGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBsaW5lSXNFbXB0eSkKIHsKLSAgICAvLyBG
aXJzdCBjb250ZW50IGFsd2F5cyBzdGF5cyBvbiBsaW5lLgotICAgIGlmIChsaW5lSXNFbXB0eSB8
fCBsb2dpY2FsV2lkdGggPD0gYXZhaWxhYmxlV2lkdGgpCi0gICAgICAgIHJldHVybiBCcmVha2lu
Z0JlaGF2aW9yOjpLZWVwOwotCi0gICAgLy8gRklYTUU6IExvb2sgaW5zaWRlIHRoZSBsaXN0IHRv
IGZpbmQgb3V0IHdoZXRoZXIgaXQgcmVxdWlyZXMgdGV4dCBjb250ZW50IHJlbGF0ZWQgbGluZSBi
cmVha2luZyAoZS5nIDxzcGFuPnRleHQ8L3NwYW4+IDwtIHRoZSBmaXJzdCBpbmxpbmUgaXRlbSBo
ZXJlIGlzIGEgJ2NvbnRhaW5lciBzdGFydCcgYnV0IHRoZSBjb250ZW50IGlzIHRleHQgb25seSku
Ci0gICAgYXV0byYgaW5saW5lSXRlbSA9IHJ1bnMuZmlyc3QoKS5pbmxpbmVJdGVtOwotICAgIGlm
IChpczxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkpCi0gICAgICAgIHJldHVybiB3b3JkQnJl
YWtpbmdCZWhhdmlvcihydW5zLCBsaW5lSXNFbXB0eSk7Ci0KLSAgICByZXR1cm4gQnJlYWtpbmdC
ZWhhdmlvcjo6V3JhcDsKKyAgICBpZiAobG9naWNhbFdpZHRoIDw9IGF2YWlsYWJsZVdpZHRoKQor
ICAgICAgICByZXR1cm4geyBCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRCcmVhazo6S2VlcCwgeyB9
IH07CisKKyAgICBhdXRvIGlzVGV4dENvbnRlbnQgPSBbXShhdXRvJiBydW5zKSB7CisgICAgICAg
IC8vIDxzcGFuPnRleHQ8L3NwYW4+IGlzIGNvbnNpZGVyZWQgYSB0ZXh0IHJ1biBldmVuIHdpdGgg
dGhlIFtjb250YWluZXIgc3RhcnRdW2NvbnRhaW5lciBlbmRdIGlubGluZSBpdGVtcy4KKyAgICAg
ICAgZm9yIChhdXRvJiBydW4gOiBydW5zKSB7CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVJdGVt
ID0gcnVuLmlubGluZUl0ZW07CisgICAgICAgICAgICAvLyBTa2lwICJ0eXBlbGVzcyIgaW5saW5l
IGl0ZW1zLgorICAgICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpIHx8
IGlubGluZUl0ZW0uaXNDb250YWluZXJFbmQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIHJldHVybiBpbmxpbmVJdGVtLmlzVGV4dCgpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworICAgIGlmIChpc1RleHRDb250ZW50KHJ1bnMpKQor
ICAgICAgICByZXR1cm4gd29yZEJyZWFraW5nQmVoYXZpb3IocnVucywgYXZhaWxhYmxlV2lkdGgs
IGxpbmVJc0VtcHR5KTsKKworICAgIC8vIEZpcnN0IG5vbi10ZXh0IGlubGluZSBjb250ZW50IGFs
d2F5cyBzdGF5cyBvbiBsaW5lLgorICAgIHJldHVybiB7IGxpbmVJc0VtcHR5ID8gQnJlYWtpbmdD
b250ZXh0OjpDb250ZW50QnJlYWs6OktlZXAgOiBCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRCcmVh
azo6V3JhcCwgeyB9IH07CiB9CiAKLUxpbmVCcmVha2VyOjpCcmVha2luZ0JlaGF2aW9yIExpbmVC
cmVha2VyOjpicmVha2luZ0NvbnRleHRGb3JGbG9hdChMYXlvdXRVbml0IGZsb2F0TG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoLCBib29sIGxpbmVJc0VtcHR5KQorYm9vbCBM
aW5lQnJlYWtlcjo6c2hvdWxkV3JhcEZsb2F0Qm94KExheW91dFVuaXQgZmxvYXRMb2dpY2FsV2lk
dGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgbGluZUlzRW1wdHkpCiB7Ci0gICAg
cmV0dXJuIChsaW5lSXNFbXB0eSB8fCBmbG9hdExvZ2ljYWxXaWR0aCA8PSBhdmFpbGFibGVXaWR0
aCkgPyBCcmVha2luZ0JlaGF2aW9yOjpLZWVwIDogQnJlYWtpbmdCZWhhdmlvcjo6V3JhcDsKKyAg
ICByZXR1cm4gIWxpbmVJc0VtcHR5ICYmIGZsb2F0TG9naWNhbFdpZHRoID4gYXZhaWxhYmxlV2lk
dGg7CiB9CiAKLUxpbmVCcmVha2VyOjpCcmVha2luZ0JlaGF2aW9yIExpbmVCcmVha2VyOjp3b3Jk
QnJlYWtpbmdCZWhhdmlvcihjb25zdCBWZWN0b3I8TGluZUxheW91dDo6UnVuPiYgcnVucywgYm9v
bCBsaW5lSXNFbXB0eSkgY29uc3QKK0xpbmVCcmVha2VyOjpCcmVha2luZ0NvbnRleHQgTGluZUJy
ZWFrZXI6OndvcmRCcmVha2luZ0JlaGF2aW9yKGNvbnN0IFZlY3RvcjxMaW5lTGF5b3V0OjpSdW4+
JiBydW5zLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoLCBib29sIGxpbmVJc0VtcHR5KSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBDaGVjayB3aGVyZSB0aGUgb3ZlcmZsb3cgb2NjdXJzIGFuZCB1
c2UgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgdG8gZmlndXJlIG91dCB0aGUgYnJlYWtpbmcgYmVo
YXZpb3VyLgorICAgIC8vIENoZWNrIHdoZXJlIHRoZSBvdmVyZmxvdyBvY2N1cnMgYW5kIHVzZSB0
aGUgY29ycmVzcG9uZGluZyBzdHlsZSB0byBmaWd1cmUgb3V0IHRoZSBicmVha2luZyBiZWhhdmlv
dXIuCiAgICAgLy8gPHNwYW4gc3R5bGU9IndvcmQtYnJlYWs6IG5vcm1hbCI+Zmlyc3Q8L3NwYW4+
PHNwYW4gc3R5bGU9IndvcmQtYnJlYWs6IGJyZWFrLWFsbCI+c2Vjb25kPC9zcGFuPjxzcGFuIHN0
eWxlPSJ3b3JkLWJyZWFrOiBub3JtYWwiPnRoaXJkPC9zcGFuPgotICAgIGF1dG8mIGlubGluZUl0
ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVucy5maXJzdCgpLmlubGluZUl0ZW0pOwot
Ci0gICAgLy8gV29yZCBicmVha2luZyBiZWhhdmlvdXI6Ci0gICAgLy8gMS4gV2hpdGVzYXBjZSBj
b2xsYXBzZSBvbiAtPiBwdXNoIHdoaXRlc3BhY2UgdG8gbmV4dCBsaW5lLgotICAgIC8vIDIuIFdo
aXRlc3BhY2UgY29sbGFwc2Ugb2ZmIC0+IHdoaXRlc3BhY2UgaXMgc3BsaXQgd2hlcmUgcG9zc2li
bGUuCi0gICAgLy8gMy4gTm9uLXdoaXRlc3BhY2UgLT4gZmlyc3QgcnVuIG9uIHRoZSBsaW5lIC0+
IGVpdGhlciBzcGxpdCBvciBrZXB0IG9uIHRoZSBsaW5lLiAoZGVwZW5kcyBvbiBvdmVyZmxvdy13
cmFwKQotICAgIC8vIDQuIE5vbi13aGl0ZXNwYWNlIC0+IGFscmVhZHkgY29udGVudCBvbiB0aGUg
bGluZSAtPiBlaXRoZXIgZ2V0cyBzcGxpdCAod29yZC1icmVhazogYnJlYWstYWxsKSBvciBnZXRz
IHB1c2hlZCB0byB0aGUgbmV4dCBsaW5lLgotICAgIC8vIChIeXBoZW5hdGUgd2hlbiBwb3NzaWJs
ZSkKLSAgICAvLyA1LiBOb24tdGV4dCB0eXBlIC0+IG5leHQgbGluZQotICAgIGF1dG8mIHN0eWxl
ID0gaW5saW5lSXRlbS5zdHlsZSgpOwotCi0gICAgaWYgKGlubGluZUl0ZW0uaXNXaGl0ZXNwYWNl
KCkpCi0gICAgICAgIHJldHVybiBzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSA/IEJyZWFraW5n
QmVoYXZpb3I6OldyYXAgOiBCcmVha2luZ0JlaGF2aW9yOjpTcGxpdDsKLQotICAgIGF1dG8gc2hv
dWxkSHlwZW5hdGUgPSAhbV9oeXBoZW5hdGlvbklzRGlzYWJsZWQgJiYgc3R5bGUuaHlwaGVucygp
ID09IEh5cGhlbnM6OkF1dG8gJiYgY2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKTsKLSAgICBp
ZiAoc2hvdWxkSHlwZW5hdGUpCi0gICAgICAgIHJldHVybiBCcmVha2luZ0JlaGF2aW9yOjpTcGxp
dDsKLQotICAgIGlmIChzdHlsZS5hdXRvV3JhcCgpKSB7Ci0gICAgICAgIC8vIEJyZWFrIGFueSB3
b3JkCi0gICAgICAgIGlmIChzdHlsZS53b3JkQnJlYWsoKSA9PSBXb3JkQnJlYWs6OkJyZWFrQWxs
KQotICAgICAgICAgICAgcmV0dXJuIEJyZWFraW5nQmVoYXZpb3I6OlNwbGl0OwotCi0gICAgICAg
IC8vIEJyZWFrIGZpcnN0IHJ1biBvbiBsaW5lLgotICAgICAgICBpZiAobGluZUlzRW1wdHkgJiYg
c3R5bGUuYnJlYWtXb3JkcygpICYmIHN0eWxlLnByZXNlcnZlTmV3bGluZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIEJyZWFraW5nQmVoYXZpb3I6OlNwbGl0OworICAgIExheW91dFVuaXQgcnVuc1dp
ZHRoID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVucy5zaXplKCk7ICsraSkg
eworICAgICAgICBhdXRvJiBydW4gPSBydW5zW2ldOworICAgICAgICBBU1NFUlQocnVuLmlubGlu
ZUl0ZW0uaXNUZXh0KCkgfHwgcnVuLmlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpIHx8IHJ1
bi5pbmxpbmVJdGVtLmlzQ29udGFpbmVyRW5kKCkpOworICAgICAgICBydW5zV2lkdGggKz0gcnVu
LmxvZ2ljYWxXaWR0aDsKKyAgICAgICAgaWYgKHJ1bnNXaWR0aCA8PSBhdmFpbGFibGVXaWR0aCkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBMZXQncyBmaW5kIHRoZSBmaXJzdCBi
cmVha2luZyBvcHBvcnR1bml0eSBzdGFydGluZyBmcm9tIHRoaXMgb3ZlcmZsb3duIGlubGluZSBp
dGVtLgorICAgICAgICBpZiAoIXJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKSB7CisgICAgICAgICAg
ICAvLyBDYW4ndCBzcGxpdCBob3Jpem9udGFsIHNwYWNpbmcgLT4gZS5nLiA8c3BhbiBzdHlsZT0i
cGFkZGluZy1yaWdodDogMTAwcHg7Ij50ZXh0Y29udGVudDwvc3Bhbj4sIGlmIHRoZSBbY29udGFp
bmVyIGVuZF0gaXMgdGhlIG92ZXJmbG93biBpbmxpbmUgaXRlbQorICAgICAgICAgICAgLy8gd2Ug
bmVlZCB0byBjaGVjayBpZiB0aGVyZSdzIGFub3RoZXIgaW5saW5lIGl0ZW0gYmV5b25kIHRoZSBb
Y29udGFpbmVyIGVuZF0gdG8gc3BsaXQuCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorICAgICAgICAvLyBEbyBub3QgZXZlbiB0cnkgdG8gd3JhcCAncHJlJyBhbmQgJ25vLXdyYXAn
IGNvbnRlbnQuCisgICAgICAgIGF1dG8gd2hpdGVzcGFjZSA9IHJ1bi5pbmxpbmVJdGVtLnN0eWxl
KCkud2hpdGVTcGFjZSgpOworICAgICAgICBpZiAod2hpdGVzcGFjZSA9PSBXaGl0ZVNwYWNlOjpQ
cmUgfHwgd2hpdGVzcGFjZSA9PSBXaGl0ZVNwYWNlOjpOb1dyYXApCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgYXZhaWxhYmxlIHdpZHRoIGNhbiB2
ZXJ5IHdlbGwgYmUgbmVnYXRpdmUgZS5nLiB3aGVuIHNvbWUgcGFydCBvZiB0aGUgY29udGludW91
cyB0ZXh0IGNvbnRlbnQgY2FuIG5vdCBiZSBicm9rZW4gaW50byBwYXJ0cyAtPgorICAgICAgICAv
LyA8c3BhbiBzdHlsZT0id29yZC1icmVhazoga2VlcC1hbGwiPnRleHRjb250ZW50d2l0aG5vYnJl
YWs8L3NwYW4+PHNwYW4+dGV4dGNvbnRlbnR3aXRoeWVzYnJlYWs8L3NwYW4+CisgICAgICAgIC8v
IFdoZW4gdGhlIGZpcnN0IHNwYW4gY29tcHV0ZXMgbG9uZ2VyIHRoYW4gdGhlIGF2YWlsYWJsZSBz
cGFjZSwgYnkgdGhlIHRpbWUgd2UgZ2V0IHRvIHRoZSBzZWNvbmQgc3BhbiwgdGhlIGFkanVzdGVk
IGF2YWlsYWJsZSBzcGFjZSBiZWNvbWVzIG5lZ2F0aXZlLgorICAgICAgICBhdXRvIGFkanVzdGVk
QXZhaWxhYmxlV2lkdGggPSBzdGQ6Om1heChMYXlvdXRVbml0IHsgfSwgYXZhaWxhYmxlV2lkdGgg
LSBydW5zV2lkdGggKyBydW4ubG9naWNhbFdpZHRoKTsKKyAgICAgICAgaWYgKGF1dG8gc3BsaXRM
ZW5ndGhBbmRXaWR0aCA9IHRyeUJyZWFraW5nVGV4dFJ1bihydW4sIGFkanVzdGVkQXZhaWxhYmxl
V2lkdGgpKQorICAgICAgICAgICAgcmV0dXJuIHsgQnJlYWtpbmdDb250ZXh0OjpDb250ZW50QnJl
YWs6OlNwbGl0LCBCcmVha2luZ0NvbnRleHQ6OlRyYWlsaW5nUGFydGlhbENvbnRlbnQgeyBpLCBz
cGxpdExlbmd0aEFuZFdpZHRoLT5sZW5ndGgsIHNwbGl0TGVuZ3RoQW5kV2lkdGgtPmxlZnRMb2dp
Y2FsV2lkdGggfSB9OwogICAgIH0KKyAgICAvLyBXZSBkaWQgbm90IG1hbmFnZSB0byBicmVhayBp
biB0aGlzIHNlcXVlbmNlIG9mIHJ1bnMuCisgICAgcmV0dXJuIHsgbGluZUlzRW1wdHkgPyBCcmVh
a2luZ0NvbnRleHQ6OkNvbnRlbnRCcmVhazo6S2VlcCA6IEJyZWFraW5nQ29udGV4dDo6Q29udGVu
dEJyZWFrOjpXcmFwLCB7IH0gfTsKK30KIAotICAgIC8vIE5vbi1icmVha2FibGUgbm9uLXdoaXRl
c3BhY2UgcnVuLgotICAgIHJldHVybiBsaW5lSXNFbXB0eSA/IEJyZWFraW5nQmVoYXZpb3I6Oktl
ZXAgOiBCcmVha2luZ0JlaGF2aW9yOjpXcmFwOworT3B0aW9uYWw8TGluZUJyZWFrZXI6OlNwbGl0
TGVuZ3RoQW5kV2lkdGg+IExpbmVCcmVha2VyOjp0cnlCcmVha2luZ1RleHRSdW4oY29uc3QgTGlu
ZUxheW91dDo6UnVuIG92ZXJmbG93UnVuLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKSBjb25z
dAoreworICAgIEFTU0VSVChvdmVyZmxvd1J1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKKyAgICBh
dXRvIGJyZWFrV29yZHMgPSBvdmVyZmxvd1J1bi5pbmxpbmVJdGVtLnN0eWxlKCkud29yZEJyZWFr
KCk7CisgICAgaWYgKGJyZWFrV29yZHMgPT0gV29yZEJyZWFrOjpLZWVwQWxsKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4
dEl0ZW0+KG92ZXJmbG93UnVuLmlubGluZUl0ZW0pOworICAgIGlmIChicmVha1dvcmRzID09IFdv
cmRCcmVhazo6QnJlYWtBbGwpIHsKKyAgICAgICAgLy8gRklYTUU6IFBhc3MgaW4gdGhlIGNvbnRl
bnQgbG9naWNhbCBsZWZ0IHRvIGJlIGFibGUgdG8gbWVhc3VyZSB0YWJzLgorICAgICAgICBhdXRv
IHNwbGl0RGF0YSA9IFRleHRVdGlsOjpzcGxpdChpbmxpbmVUZXh0SXRlbS5sYXlvdXRCb3goKSwg
aW5saW5lVGV4dEl0ZW0uc3RhcnQoKSwgaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCksIG92ZXJmbG93
UnVuLmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIHsgfSk7CisgICAgICAgIHJldHVybiBT
cGxpdExlbmd0aEFuZFdpZHRoIHsgc3BsaXREYXRhLmxlbmd0aCwgc3BsaXREYXRhLmxvZ2ljYWxX
aWR0aCB9OworICAgIH0KKyAgICAvLyBGSVhNRTogRmluZCBmaXJzdCBzb2Z0IHdyYXAgb3Bwb3J0
dW5pdHkgKGUuZy4gaHlwaGVuYXRpb24pCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJy
ZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCcmVha2VyLmgKaW5kZXggZjI3ZjdhYTkxMDg4OGE2OGY1OGYwZTdjNGVjYTEyZDU3YThmYWI2
Zi4uMDQ0MjY4NmE2MDA0Y2Q4M2ZmNDI3MzhhZDliM2ZkNzJmOThiY2I2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnJlYWtlci5oCkBAIC0zOCwxNCArMzgsMjggQEAgY2xhc3MgSW5saW5lVGV4dEl0ZW07CiAKIGNs
YXNzIExpbmVCcmVha2VyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEJyZWFraW5nQmVoYXZp
b3IgeyBLZWVwLCBTcGxpdCwgV3JhcCB9OwotICAgIEJyZWFraW5nQmVoYXZpb3IgYnJlYWtpbmdD
b250ZXh0KGNvbnN0IFZlY3RvcjxMaW5lTGF5b3V0OjpSdW4+JiwgTGF5b3V0VW5pdCBsb2dpY2Fs
V2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgbGluZUlzRW1wdHkpOwotICAg
IEJyZWFraW5nQmVoYXZpb3IgYnJlYWtpbmdDb250ZXh0Rm9yRmxvYXQoTGF5b3V0VW5pdCBmbG9h
dExvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBsaW5lSXNFbXB0
eSk7CisgICAgc3RydWN0IEJyZWFraW5nQ29udGV4dCB7CisgICAgICAgIGVudW0gY2xhc3MgQ29u
dGVudEJyZWFrIHsgS2VlcCwgU3BsaXQsIFdyYXAgfTsKKyAgICAgICAgQ29udGVudEJyZWFrIGNv
bnRlbnRCcmVhazsKKyAgICAgICAgc3RydWN0IFRyYWlsaW5nUGFydGlhbENvbnRlbnQgeworICAg
ICAgICAgICAgdW5zaWduZWQgcnVuSW5kZXggeyAwIH07CisgICAgICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggeyAwIH07CisgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aDsKKyAgICAg
ICAgfTsKKyAgICAgICAgT3B0aW9uYWw8VHJhaWxpbmdQYXJ0aWFsQ29udGVudD4gdHJhaWxpbmdQ
YXJ0aWFsQ29udGVudDsKKyAgICB9OworICAgIEJyZWFraW5nQ29udGV4dCBicmVha2luZ0NvbnRl
eHRGb3JJbmxpbmVDb250ZW50KGNvbnN0IFZlY3RvcjxMaW5lTGF5b3V0OjpSdW4+JiwgTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgbGluZUlz
RW1wdHkpOworICAgIGJvb2wgc2hvdWxkV3JhcEZsb2F0Qm94KExheW91dFVuaXQgZmxvYXRMb2dp
Y2FsV2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgbGluZUlzRW1wdHkpOwog
CiBwcml2YXRlOgogCi0gICAgQnJlYWtpbmdCZWhhdmlvciB3b3JkQnJlYWtpbmdCZWhhdmlvcihj
b25zdCBWZWN0b3I8TGluZUxheW91dDo6UnVuPiYsIGJvb2wgbGluZUlzRW1wdHkpIGNvbnN0Owot
ICAgIGJvb2wgbV9oeXBoZW5hdGlvbklzRGlzYWJsZWQgeyB0cnVlIH07CisgICAgTGluZUJyZWFr
ZXI6OkJyZWFraW5nQ29udGV4dCB3b3JkQnJlYWtpbmdCZWhhdmlvcihjb25zdCBWZWN0b3I8TGlu
ZUxheW91dDo6UnVuPiYsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgbGluZUlzRW1w
dHkpIGNvbnN0OworCisgICAgc3RydWN0IFNwbGl0TGVuZ3RoQW5kV2lkdGggeworICAgICAgICB1
bnNpZ25lZCBsZW5ndGggeyAwIH07CisgICAgICAgIExheW91dFVuaXQgbGVmdExvZ2ljYWxXaWR0
aDsKKyAgICB9OworICAgIE9wdGlvbmFsPFNwbGl0TGVuZ3RoQW5kV2lkdGg+IHRyeUJyZWFraW5n
VGV4dFJ1bihjb25zdCBMaW5lTGF5b3V0OjpSdW4gb3ZlcmZsb3dSdW4sIExheW91dFVuaXQgYXZh
aWxhYmxlV2lkdGgpIGNvbnN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lTGF5b3V0LmNwcAppbmRleCBh
MzQyNzE0MTg0NjUzMTZlMDFiNTY5ODYxODQ2ZTk5MGQ0NWU0ZmM5Li5mZmI5Y2YzNDQxYjkxMGIx
ZjhkYTU4NjhmOGFhZmYxN2YyY2QzZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lTGF5b3V0LmNwcApAQCAtNjUs
MTkgKzY1LDIwIEBAIHN0YXRpYyBMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0aChjb25zdCBGb3Jt
YXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQsIGNvCiAgICAgcmV0dXJuIGJveEdlb21l
dHJ5LndpZHRoKCk7CiB9CiAKLUxpbmVMYXlvdXQ6OkxpbmVJbnB1dDo6TGluZUlucHV0KGNvbnN0
IExpbmU6OkluaXRpYWxDb25zdHJhaW50cyYgaW5pdGlhbExpbmVDb25zdHJhaW50cywgVGV4dEFs
aWduTW9kZSBob3Jpem9udGFsQWxpZ25tZW50LCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9jZXNz
LCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMpCitMaW5lTGF5b3V0OjpMaW5lSW5wdXQ6
OkxpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29u
c3RyYWludHMsIFRleHRBbGlnbk1vZGUgaG9yaXpvbnRhbEFsaWdubWVudCwgY29uc3QgSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCB1bnNpZ25lZCBsZWFkaW5nSW5saW5lSXRlbUluZGV4LCBPcHRp
b25hbDxQYXJ0aWFsQ29udGVudD4gbGVhZGluZ1BhcnRpYWxDb250ZW50KQogICAgIDogaW5pdGlh
bENvbnN0cmFpbnRzKGluaXRpYWxMaW5lQ29uc3RyYWludHMpCiAgICAgLCBob3Jpem9udGFsQWxp
Z25tZW50KGhvcml6b250YWxBbGlnbm1lbnQpCi0gICAgLCBmaXJzdElubGluZUl0ZW0oZmlyc3RU
b1Byb2Nlc3MpCiAgICAgLCBpbmxpbmVJdGVtcyhpbmxpbmVJdGVtcykKKyAgICAsIGxlYWRpbmdJ
bmxpbmVJdGVtSW5kZXgobGVhZGluZ0lubGluZUl0ZW1JbmRleCkKKyAgICAsIGxlYWRpbmdQYXJ0
aWFsQ29udGVudChsZWFkaW5nUGFydGlhbENvbnRlbnQpCiB7CiB9CiAKLUxpbmVMYXlvdXQ6Okxp
bmVJbnB1dDo6TGluZUlucHV0KGNvbnN0IExpbmU6OkluaXRpYWxDb25zdHJhaW50cyYgaW5pdGlh
bExpbmVDb25zdHJhaW50cywgSW5kZXhBbmRSYW5nZSBmaXJzdFRvUHJvY2VzcywgY29uc3QgSW5s
aW5lSXRlbXMmIGlubGluZUl0ZW1zKQorTGluZUxheW91dDo6TGluZUlucHV0OjpMaW5lSW5wdXQo
Y29uc3QgTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFsTGluZUNvbnN0cmFpbnRzLCBj
b25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIHVuc2lnbmVkIGxlYWRpbmdJbmxpbmVJdGVt
SW5kZXgpCiAgICAgOiBpbml0aWFsQ29uc3RyYWludHMoaW5pdGlhbExpbmVDb25zdHJhaW50cykK
ICAgICAsIHNraXBBbGlnbm1lbnQoTGluZTo6U2tpcEFsaWdubWVudDo6WWVzKQotICAgICwgZmly
c3RJbmxpbmVJdGVtKGZpcnN0VG9Qcm9jZXNzKQogICAgICwgaW5saW5lSXRlbXMoaW5saW5lSXRl
bXMpCisgICAgLCBsZWFkaW5nSW5saW5lSXRlbUluZGV4KGxlYWRpbmdJbmxpbmVJdGVtSW5kZXgp
CiB7CiB9CiAKQEAgLTEwNCwyNCArMTA1LDIxIEBAIExpbmVMYXlvdXQ6OkxpbmVMYXlvdXQoY29u
c3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBjCiBM
aW5lTGF5b3V0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0OjpsYXlvdXQoKQogewogICAgIC8vIEl0
ZXJhdGUgdGhyb3VnaCB0aGUgaW5saW5lIGNvbnRlbnQgYW5kIHBsYWNlIHRoZSBpbmxpbmUgYm94
ZXMgb24gdGhlIGN1cnJlbnQgbGluZS4KLSAgICAvLyBTdGFydCB3aXRoIHRoZSBwYXJ0aWFsIHRl
eHQgZnJvbSB0aGUgcHJldmlvdXMgbGluZS4KLSAgICBhdXRvIGZpcnN0SW5saW5lSXRlbSA9IG1f
bGluZUlucHV0LmZpcnN0SW5saW5lSXRlbTsKLSAgICB1bnNpZ25lZCBmaXJzdE5vblBhcnRpYWxJ
bmRleCA9IGZpcnN0SW5saW5lSXRlbS5pbmRleDsKLSAgICBpZiAoZmlyc3RJbmxpbmVJdGVtLnBh
cnRpYWxDb250ZXh0KSB7CisgICAgLy8gU3RhcnQgd2l0aCB0aGUgcGFydGlhbCBsZWFkaW5nIHRl
eHQgZnJvbSB0aGUgcHJldmlvdXMgbGluZS4KKyAgICBhdXRvIGZpcnN0Tm9uUGFydGlhbElubGlu
ZUl0ZW1JbmRleCA9IG1fbGluZUlucHV0LmxlYWRpbmdJbmxpbmVJdGVtSW5kZXg7CisgICAgaWYg
KG1fbGluZUlucHV0LmxlYWRpbmdQYXJ0aWFsQ29udGVudCkgewogICAgICAgICAvLyBIYW5kbGUg
cGFydGlhbCBpbmxpbmUgaXRlbSAoc3BsaXQgdGV4dCBmcm9tIHRoZSBwcmV2aW91cyBsaW5lKS4K
LSAgICAgICAgYXV0byYgb3JpZ2luYWxUZXh0SXRlbSA9IG1fbGluZUlucHV0LmlubGluZUl0ZW1z
W2ZpcnN0SW5saW5lSXRlbS5pbmRleF07Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbmFs
VGV4dEl0ZW0tPmlzVGV4dCgpKTsKLQotICAgICAgICBhdXRvIHRleHRSYW5nZSA9ICpmaXJzdElu
bGluZUl0ZW0ucGFydGlhbENvbnRleHQ7CisgICAgICAgIGF1dG8mIGxlYWRpbmdUZXh0SXRlbSA9
IG1fbGluZUlucHV0LmlubGluZUl0ZW1zW21fbGluZUlucHV0LmxlYWRpbmdJbmxpbmVJdGVtSW5k
ZXhdOworICAgICAgICBSRUxFQVNFX0FTU0VSVChsZWFkaW5nVGV4dEl0ZW0tPmlzVGV4dCgpKTsK
ICAgICAgICAgLy8gQ29uc3RydWN0IGEgcGFydGlhbCBsZWFkaW5nIGlubGluZSBpdGVtLgotICAg
ICAgICBBU1NFUlQoIW1fbGVhZGluZ1BhcnRpYWxJbmxpbmVUZXh0SXRlbSk7Ci0gICAgICAgIG1f
bGVhZGluZ1BhcnRpYWxJbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPigq
b3JpZ2luYWxUZXh0SXRlbSkuc3BsaXQodGV4dFJhbmdlLnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3Ro
KTsKLSAgICAgICAgaWYgKHBsYWNlSW5saW5lSXRlbSgqbV9sZWFkaW5nUGFydGlhbElubGluZVRl
eHRJdGVtKSA9PSBJc0VuZE9mTGluZTo6WWVzKQorICAgICAgICBBU1NFUlQoIW1fbGVhZGluZ1Bh
cnRpYWxUZXh0SXRlbSk7CisgICAgICAgIG1fbGVhZGluZ1BhcnRpYWxUZXh0SXRlbSA9IGRvd25j
YXN0PElubGluZVRleHRJdGVtPigqbGVhZGluZ1RleHRJdGVtKS5yaWdodChtX2xpbmVJbnB1dC5s
ZWFkaW5nUGFydGlhbENvbnRlbnQtPmxlbmd0aCk7CisgICAgICAgIGlmIChwbGFjZUlubGluZUl0
ZW0oKm1fbGVhZGluZ1BhcnRpYWxUZXh0SXRlbSkgPT0gSXNFbmRPZkxpbmU6OlllcykKICAgICAg
ICAgICAgIHJldHVybiBjbG9zZSgpOwotICAgICAgICArK2ZpcnN0Tm9uUGFydGlhbEluZGV4Owor
ICAgICAgICArK2ZpcnN0Tm9uUGFydGlhbElubGluZUl0ZW1JbmRleDsKICAgICB9CiAKLSAgICBm
b3IgKGF1dG8gaW5saW5lSXRlbUluZGV4ID0gZmlyc3ROb25QYXJ0aWFsSW5kZXg7IGlubGluZUl0
ZW1JbmRleCA8IG1fbGluZUlucHV0LmlubGluZUl0ZW1zLnNpemUoKTsgKytpbmxpbmVJdGVtSW5k
ZXgpIHsKKyAgICBmb3IgKGF1dG8gaW5saW5lSXRlbUluZGV4ID0gZmlyc3ROb25QYXJ0aWFsSW5s
aW5lSXRlbUluZGV4OyBpbmxpbmVJdGVtSW5kZXggPCBtX2xpbmVJbnB1dC5pbmxpbmVJdGVtcy5z
aXplKCk7ICsraW5saW5lSXRlbUluZGV4KSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bm90IG5lZWQgdG8gcmUtbWVhc3VyZSB0aGUgZHJvcHBlZCwgdW5jb21taXR0ZWQgY29udGVudCB3
aGVuIHJlLXVzaW5nIHRoZW0gb24gdGhlIG5leHQgbGluZS4KICAgICAgICAgaWYgKHBsYWNlSW5s
aW5lSXRlbSgqbV9saW5lSW5wdXQuaW5saW5lSXRlbXNbaW5saW5lSXRlbUluZGV4XSkgPT0gSXNF
bmRPZkxpbmU6OlllcykKICAgICAgICAgICAgIHJldHVybiBjbG9zZSgpOwpAQCAtMTQ3LDE1ICsx
NDUsMTMgQEAgTGluZUxheW91dDo6TGluZUNvbnRlbnQgTGluZUxheW91dDo6Y2xvc2UoKQogICAg
IEFTU0VSVChtX2NvbW1pdHRlZElubGluZUl0ZW1Db3VudCB8fCBtX2xpbmVIYXNJbnRydXNpdmVG
bG9hdCk7CiAgICAgbV91bmNvbW1pdHRlZENvbnRlbnQucmVzZXQoKTsKICAgICBpZiAoIW1fY29t
bWl0dGVkSW5saW5lSXRlbUNvdW50KQotICAgICAgICByZXR1cm4gTGluZUNvbnRlbnQgeyBXVEY6
Om51bGxvcHQsIFdURk1vdmUobV9mbG9hdHMpLCBtX2xpbmUuY2xvc2UoKSwgbV9saW5lLmxpbmVC
b3goKSB9OwotCi0gICAgYXV0byBsYXN0SW5saW5lSXRlbUluZGV4ID0gbV9saW5lSW5wdXQuZmly
c3RJbmxpbmVJdGVtLmluZGV4ICsgbV9jb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgLSAxOwotICAg
IE9wdGlvbmFsPEluZGV4QW5kUmFuZ2U6OlJhbmdlPiBwYXJ0aWFsQ29udGV4dDsKLSAgICBpZiAo
bV90cmFpbGluZ1BhcnRpYWxJbmxpbmVUZXh0SXRlbSkKLSAgICAgICAgcGFydGlhbENvbnRleHQg
PSBJbmRleEFuZFJhbmdlOjpSYW5nZSB7IG1fdHJhaWxpbmdQYXJ0aWFsSW5saW5lVGV4dEl0ZW0t
PnN0YXJ0KCksIG1fdHJhaWxpbmdQYXJ0aWFsSW5saW5lVGV4dEl0ZW0tPmxlbmd0aCgpIH07Cisg
ICAgICAgIHJldHVybiBMaW5lQ29udGVudCB7IHsgfSwgeyB9LCBXVEZNb3ZlKG1fZmxvYXRzKSwg
bV9saW5lLmNsb3NlKCksIG1fbGluZS5saW5lQm94KCkgfTsKIAotICAgIGF1dG8gbGFzdENvbW1p
dGVkSXRlbSA9IEluZGV4QW5kUmFuZ2UgeyBsYXN0SW5saW5lSXRlbUluZGV4LCBwYXJ0aWFsQ29u
dGV4dCB9OwotICAgIHJldHVybiBMaW5lQ29udGVudCB7IGxhc3RDb21taXRlZEl0ZW0sIFdURk1v
dmUobV9mbG9hdHMpLCBtX2xpbmUuY2xvc2UoKSwgbV9saW5lLmxpbmVCb3goKSB9OworICAgIE9w
dGlvbmFsPFBhcnRpYWxDb250ZW50PiBvdmVyZmxvd0NvbnRlbnQ7CisgICAgaWYgKG1fb3ZlcmZs
b3dUZXh0TGVuZ3RoKQorICAgICAgICBvdmVyZmxvd0NvbnRlbnQgPSBQYXJ0aWFsQ29udGVudCB7
ICptX292ZXJmbG93VGV4dExlbmd0aCB9OworICAgIGF1dG8gdHJhaWxpbmdJbmxpbmVJdGVtSW5k
ZXggPSBtX2xpbmVJbnB1dC5sZWFkaW5nSW5saW5lSXRlbUluZGV4ICsgbV9jb21taXR0ZWRJbmxp
bmVJdGVtQ291bnQgLSAxOworICAgIHJldHVybiBMaW5lQ29udGVudCB7IHRyYWlsaW5nSW5saW5l
SXRlbUluZGV4LCBvdmVyZmxvd0NvbnRlbnQsIFdURk1vdmUobV9mbG9hdHMpLCBtX2xpbmUuY2xv
c2UoKSwgbV9saW5lLmxpbmVCb3goKSB9OwogfQogCiBMaW5lTGF5b3V0OjpJc0VuZE9mTGluZSBM
aW5lTGF5b3V0OjpwbGFjZUlubGluZUl0ZW0oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkK
QEAgLTE3NCw5ICsxNzAsNyBAQCBMaW5lTGF5b3V0OjpJc0VuZE9mTGluZSBMaW5lTGF5b3V0Ojpw
bGFjZUlubGluZUl0ZW0oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbQogICAgICAgICAgICAg
aWYgKHByb2Nlc3NVbmNvbW1pdHRlZENvbnRlbnQoKSA9PSBJc0VuZE9mTGluZTo6WWVzKQogICAg
ICAgICAgICAgICAgIHJldHVybiBJc0VuZE9mTGluZTo6WWVzOwogICAgICAgICB9Ci0gICAgICAg
IGF1dG8gYnJlYWtpbmdCZWhhdmlvciA9IExpbmVCcmVha2VyKCkuYnJlYWtpbmdDb250ZXh0Rm9y
RmxvYXQoaXRlbUxvZ2ljYWxXaWR0aCwgbV9saW5lLmF2YWlsYWJsZVdpZHRoKCkgKyBtX2xpbmUu
dHJhaWxpbmdUcmltbWFibGVXaWR0aCgpLCBsaW5lSXNDb25zaWRlcmVkRW1wdHkpOwotICAgICAg
ICBBU1NFUlQoYnJlYWtpbmdCZWhhdmlvciAhPSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdCZWhhdmlv
cjo6U3BsaXQpOwotICAgICAgICBpZiAoYnJlYWtpbmdCZWhhdmlvciA9PSBMaW5lQnJlYWtlcjo6
QnJlYWtpbmdCZWhhdmlvcjo6V3JhcCkKKyAgICAgICAgaWYgKExpbmVCcmVha2VyKCkuc2hvdWxk
V3JhcEZsb2F0Qm94KGl0ZW1Mb2dpY2FsV2lkdGgsIG1fbGluZS5hdmFpbGFibGVXaWR0aCgpICsg
bV9saW5lLnRyYWlsaW5nVHJpbW1hYmxlV2lkdGgoKSwgbGluZUlzQ29uc2lkZXJlZEVtcHR5KSkK
ICAgICAgICAgICAgIHJldHVybiBJc0VuZE9mTGluZTo6WWVzOwogCiAgICAgICAgIC8vIFRoaXMg
ZmxvYXQgY2FuIHNpdCBvbiB0aGUgY3VycmVudCBsaW5lLgpAQCAtMjEyLDIxICsyMDYsMzYgQEAg
TGluZUxheW91dDo6SXNFbmRPZkxpbmUgTGluZUxheW91dDo6cHJvY2Vzc1VuY29tbWl0dGVkQ29u
dGVudCgpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIHBlbmRpbmcgY29udGVudCBmaXRzLgogICAg
IGF1dG8gbGluZUlzQ29uc2lkZXJlZEVtcHR5ID0gIW1fbGluZS5oYXNDb250ZW50KCkgJiYgIW1f
bGluZUhhc0ludHJ1c2l2ZUZsb2F0OwotICAgIGF1dG8gYnJlYWtpbmdCZWhhdmlvciA9IExpbmVC
cmVha2VyKCkuYnJlYWtpbmdDb250ZXh0KG1fdW5jb21taXR0ZWRDb250ZW50LnJ1bnMoKSwgbV91
bmNvbW1pdHRlZENvbnRlbnQud2lkdGgoKSwgbV9saW5lLmF2YWlsYWJsZVdpZHRoKCksIGxpbmVJ
c0NvbnNpZGVyZWRFbXB0eSk7Ci0KKyAgICBhdXRvIGJyZWFraW5nQ29udGV4dCA9IExpbmVCcmVh
a2VyKCkuYnJlYWtpbmdDb250ZXh0Rm9ySW5saW5lQ29udGVudChtX3VuY29tbWl0dGVkQ29udGVu
dC5ydW5zKCksIG1fdW5jb21taXR0ZWRDb250ZW50LndpZHRoKCksIG1fbGluZS5hdmFpbGFibGVX
aWR0aCgpLCBsaW5lSXNDb25zaWRlcmVkRW1wdHkpOwogICAgIC8vIFRoZSB1bmNvbW1pdHRlZCBj
b250ZW50IGNhbiBmdWxseSwgcGFydGlhbGx5IGZpdCB0aGUgY3VycmVudCBsaW5lIChjb21taXQv
cGFydGlhbCBjb21taXQpIG9yIG5vdCBhdCBhbGwgKHJlc2V0KS4KLSAgICBpZiAoYnJlYWtpbmdC
ZWhhdmlvciA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdCZWhhdmlvcjo6S2VlcCkKKyAgICBpZiAo
YnJlYWtpbmdDb250ZXh0LmNvbnRlbnRCcmVhayA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdDb250
ZXh0OjpDb250ZW50QnJlYWs6OktlZXApCiAgICAgICAgIGNvbW1pdFBlbmRpbmdDb250ZW50KCk7
Ci0gICAgZWxzZSBpZiAoYnJlYWtpbmdCZWhhdmlvciA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdC
ZWhhdmlvcjo6U3BsaXQpCi0gICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7Ci0g
ICAgZWxzZSBpZiAoYnJlYWtpbmdCZWhhdmlvciA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdCZWhh
dmlvcjo6V3JhcCkKKyAgICBlbHNlIGlmIChicmVha2luZ0NvbnRleHQuY29udGVudEJyZWFrID09
IExpbmVCcmVha2VyOjpCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRCcmVhazo6U3BsaXQpIHsKKyAg
ICAgICAgQVNTRVJUKGJyZWFraW5nQ29udGV4dC50cmFpbGluZ1BhcnRpYWxDb250ZW50KTsKKyAg
ICAgICAgQVNTRVJUKG1fdW5jb21taXR0ZWRDb250ZW50LnJ1bnMoKVticmVha2luZ0NvbnRleHQu
dHJhaWxpbmdQYXJ0aWFsQ29udGVudC0+cnVuSW5kZXhdLmlubGluZUl0ZW0uaXNUZXh0KCkpOwor
ICAgICAgICAvLyBUdXJuIHRoZSB1bmNvbW1pdHRlZCB0cmFpbGluZyBydW4gaW50byBhIHBhcnRp
YWwgdHJhaWxpbmcgcnVuLgorICAgICAgICBhdXRvIG92ZXJmbG93SW5saW5lVGV4dEl0ZW1JbmRl
eCA9IGJyZWFraW5nQ29udGV4dC50cmFpbGluZ1BhcnRpYWxDb250ZW50LT5ydW5JbmRleDsKKyAg
ICAgICAgYXV0byYgb3ZlcmZsb3dJbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJ
dGVtPihtX3VuY29tbWl0dGVkQ29udGVudC5ydW5zKClbb3ZlcmZsb3dJbmxpbmVUZXh0SXRlbUlu
ZGV4XS5pbmxpbmVJdGVtKTsKKworICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIHRyYWls
aW5nIGlubGluZSBydW4uCisgICAgICAgIEFTU0VSVCghbV90cmFpbGluZ1BhcnRpYWxUZXh0SXRl
bSk7CisgICAgICAgIGF1dG8gdHJhaWxpbmdDb250ZW50TGVuZ3RoID0gYnJlYWtpbmdDb250ZXh0
LnRyYWlsaW5nUGFydGlhbENvbnRlbnQtPmxlbmd0aDsKKyAgICAgICAgbV90cmFpbGluZ1BhcnRp
YWxUZXh0SXRlbSA9IG92ZXJmbG93SW5saW5lVGV4dEl0ZW0ubGVmdCh0cmFpbGluZ0NvbnRlbnRM
ZW5ndGgpOworICAgICAgICBtX292ZXJmbG93VGV4dExlbmd0aCA9IG92ZXJmbG93SW5saW5lVGV4
dEl0ZW0ubGVuZ3RoKCkgLSB0cmFpbGluZ0NvbnRlbnRMZW5ndGg7CisgICAgICAgIC8vIEtlZXAg
dGhlIG5vbi1vdmVyZmxvdyBwYXJ0IG9mIHRoZSB1bmNvbW1pdHRlZCBydW5zIGFuZCBhZGQgdGhl
IHRyYWlsaW5nIHBhcnRpYWwgY29udGVudC4KKyAgICAgICAgbV91bmNvbW1pdHRlZENvbnRlbnQu
dHJpbShvdmVyZmxvd0lubGluZVRleHRJdGVtSW5kZXgpOworICAgICAgICBtX3VuY29tbWl0dGVk
Q29udGVudC5hZGQoKm1fdHJhaWxpbmdQYXJ0aWFsVGV4dEl0ZW0sIGJyZWFraW5nQ29udGV4dC50
cmFpbGluZ1BhcnRpYWxDb250ZW50LT5sb2dpY2FsV2lkdGgpOworICAgICAgICBjb21taXRQZW5k
aW5nQ29udGVudCgpOworICAgIH0gZWxzZSBpZiAoYnJlYWtpbmdDb250ZXh0LmNvbnRlbnRCcmVh
ayA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdDb250ZXh0OjpDb250ZW50QnJlYWs6OldyYXApCiAg
ICAgICAgIG1fdW5jb21taXR0ZWRDb250ZW50LnJlc2V0KCk7Ci0KLSAgICByZXR1cm4gYnJlYWtp
bmdCZWhhdmlvciA9PSBMaW5lQnJlYWtlcjo6QnJlYWtpbmdCZWhhdmlvcjo6S2VlcCA/IElzRW5k
T2ZMaW5lOjpObyA6SXNFbmRPZkxpbmU6OlllczsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBicmVha2luZ0NvbnRleHQuY29udGVudEJyZWFrID09
IExpbmVCcmVha2VyOjpCcmVha2luZ0NvbnRleHQ6OkNvbnRlbnRCcmVhazo6S2VlcCA/IElzRW5k
T2ZMaW5lOjpObyA6SXNFbmRPZkxpbmU6OlllczsKIH0KIAogYm9vbCBMaW5lTGF5b3V0OjpzaG91
bGRQcm9jZXNzVW5jb21taXR0ZWRDb250ZW50KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0p
IGNvbnN0CiB7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LTMvI2xp
bmUtYnJlYWstZGV0YWlscwogICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhlIG5ldyBpbmNvbWluZyBj
b250ZW50IHB1dHMgdGhlIHVuY29tbWl0dGVkIGNvbnRlbnQgb24gY29tbWl0IGJvdW5kYXJ5Lgog
ICAgIC8vIGUuZy4gPHNwYW4+Y29udGludW91czwvc3Bhbj4gPC0gdW5jb21pdHRlZCBjb250ZW50
IC0+CiAgICAgLy8gW2lubGluZSBjb250YWluZXIgc3RhcnRdW3RleHQgY29udGVudF1baW5saW5l
IGNvbnRhaW5lciBlbmRdCkBAIC0zMDMsNiArMzEyLDEzIEBAIGJvb2wgTGluZUxheW91dDo6c2hv
dWxkUHJvY2Vzc1VuY29tbWl0dGVkQ29udGVudChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
KSBjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTGluZUxheW91dDo6VW5jb21taXR0ZWRD
b250ZW50Ojp0cmltKHVuc2lnbmVkIG5ld1NpemUpCit7CisgICAgZm9yIChhdXRvIGkgPSBtX3Vu
Y29tbWl0dGVkUnVucy5zaXplKCk7IGktLTspCisgICAgICAgIG1fd2lkdGggLT0gbV91bmNvbW1p
dHRlZFJ1bnNbaV0ubG9naWNhbFdpZHRoOworICAgIG1fdW5jb21taXR0ZWRSdW5zLnNocmluayhu
ZXdTaXplKTsKK30KKwogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lTGF5b3V0LmgKaW5kZXggM2E5MTA3YzNkMzMz
MDUxYTgzZWNmZmZlODJkNmRiZTJkMjk4ZTYyMy4uMWY2NDliYTM1YTViYjhjMTFjYjJhNDI4OTM3
NzAzMDRiY2ZlMjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVMYXlvdXQuaApAQCAtNDEsMzAgKzQxLDI3IEBAIHB1
YmxpYzoKICAgICBzdHJ1Y3QgTGluZUNvbnRlbnQ7CiAgICAgTGluZUNvbnRlbnQgbGF5b3V0KCk7
CiAKLSAgICBzdHJ1Y3QgSW5kZXhBbmRSYW5nZSB7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4IHsg
MCB9OwotICAgICAgICBzdHJ1Y3QgUmFuZ2UgewotICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQg
eyAwIH07Ci0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07Ci0gICAgICAgIH07Ci0g
ICAgICAgIE9wdGlvbmFsPFJhbmdlPiBwYXJ0aWFsQ29udGV4dDsKKyAgICBzdHJ1Y3QgUGFydGlh
bENvbnRlbnQgeworICAgICAgICAvLyBUaGlzIHdpbGwgcG90ZW50aWFsbHkgZ2FpbiBzb21lIG1v
cmUgbWVtYmVycy4gCisgICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICB9OwotCiAgICAgc3Ry
dWN0IExpbmVJbnB1dCB7Ci0gICAgICAgIExpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29u
c3RyYWludHMmLCBUZXh0QWxpZ25Nb2RlLCBJbmRleEFuZFJhbmdlIGZpcnN0VG9Qcm9jZXNzLCBj
b25zdCBJbmxpbmVJdGVtcyYpOwotICAgICAgICBMaW5lSW5wdXQoY29uc3QgTGluZTo6SW5pdGlh
bENvbnN0cmFpbnRzJiwgSW5kZXhBbmRSYW5nZSBmaXJzdFRvUHJvY2VzcywgY29uc3QgSW5saW5l
SXRlbXMmKTsKKyAgICAgICAgTGluZUlucHV0KGNvbnN0IExpbmU6OkluaXRpYWxDb25zdHJhaW50
cyYsIFRleHRBbGlnbk1vZGUsIGNvbnN0IElubGluZUl0ZW1zJiwgdW5zaWduZWQgbGVhZGluZ0lu
bGluZUl0ZW1JbmRleCwgT3B0aW9uYWw8UGFydGlhbENvbnRlbnQ+IGxlYWRpbmdQYXJ0aWFsQ29u
dGVudCk7CisgICAgICAgIExpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMm
LCBjb25zdCBJbmxpbmVJdGVtcyYsIHVuc2lnbmVkIGxlYWRpbmdJbmxpbmVJdGVtSW5kZXgpOwog
CiAgICAgICAgIExpbmU6OkluaXRpYWxDb25zdHJhaW50cyBpbml0aWFsQ29uc3RyYWludHM7CiAg
ICAgICAgIFRleHRBbGlnbk1vZGUgaG9yaXpvbnRhbEFsaWdubWVudDsKICAgICAgICAgLy8gRklY
TUUgQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZCBqdXN0IGhhdmUgYSBzZWNvbmQgcGFzcyB3aXRoIHZl
cnRpY2FsIHBvc2l0aW9uaW5nIChwcmVmZXJyZWQgd2lkdGggY29tcHV0YXRpb24gb3B0cyBvdXQp
IAogICAgICAgICBMaW5lOjpTa2lwQWxpZ25tZW50IHNraXBBbGlnbm1lbnQgeyBMaW5lOjpTa2lw
QWxpZ25tZW50OjpObyB9OwotICAgICAgICBJbmRleEFuZFJhbmdlIGZpcnN0SW5saW5lSXRlbTsK
ICAgICAgICAgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zOworICAgICAgICB1bnNpZ25l
ZCBsZWFkaW5nSW5saW5lSXRlbUluZGV4IHsgMCB9OworICAgICAgICBPcHRpb25hbDxQYXJ0aWFs
Q29udGVudD4gbGVhZGluZ1BhcnRpYWxDb250ZW50OwogICAgICAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBmbG9hdE1pbmltdW1Mb2dpY2FsQm90dG9tOwogICAgIH07CiAKICAgICBzdHJ1Y3QgTGlu
ZUNvbnRlbnQgewotICAgICAgICBPcHRpb25hbDxJbmRleEFuZFJhbmdlPiBsYXN0Q29tbWl0dGVk
OworICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gdHJhaWxpbmdJbmxpbmVJdGVtSW5kZXg7Cisg
ICAgICAgIE9wdGlvbmFsPFBhcnRpYWxDb250ZW50PiB0cmFpbGluZ1BhcnRpYWxDb250ZW50Owog
ICAgICAgICBWZWN0b3I8V2Vha1B0cjxJbmxpbmVJdGVtPj4gZmxvYXRzOwogICAgICAgICBjb25z
dCBMaW5lOjpSdW5MaXN0IHJ1bkxpc3Q7CiAgICAgICAgIGNvbnN0IExpbmVCb3ggbGluZUJveDsK
QEAgLTg3LDYgKzg0LDcgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgVW5jb21taXR0ZWRDb250ZW50
IHsKICAgICAgICAgdm9pZCBhZGQoY29uc3QgSW5saW5lSXRlbSYsIExheW91dFVuaXQgbG9naWNh
bFdpZHRoKTsKICAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICB2b2lkIHRyaW0odW5zaWdu
ZWQgbmV3U2l6ZSk7CiAKICAgICAgICAgVmVjdG9yPFJ1bj4mIHJ1bnMoKSB7IHJldHVybiBtX3Vu
Y29tbWl0dGVkUnVuczsgfQogICAgICAgICBjb25zdCBWZWN0b3I8UnVuPiYgcnVucygpIGNvbnN0
IHsgcmV0dXJuIG1fdW5jb21taXR0ZWRSdW5zOyB9CkBAIC0xMDYsOCArMTA0LDkgQEAgcHJpdmF0
ZToKICAgICBVbmNvbW1pdHRlZENvbnRlbnQgbV91bmNvbW1pdHRlZENvbnRlbnQ7CiAgICAgdW5z
aWduZWQgbV9jb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgeyAwIH07CiAgICAgVmVjdG9yPFdlYWtQ
dHI8SW5saW5lSXRlbT4+IG1fZmxvYXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0
SXRlbT4gbV9sZWFkaW5nUGFydGlhbElubGluZVRleHRJdGVtOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVUZXh0SXRlbT4gbV90cmFpbGluZ1BhcnRpYWxJbmxpbmVUZXh0SXRlbTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IG1fbGVhZGluZ1BhcnRpYWxUZXh0SXRlbTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IG1fdHJhaWxpbmdQYXJ0aWFsVGV4
dEl0ZW07CisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fb3ZlcmZsb3dUZXh0TGVuZ3RoOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lVGV4dEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lVGV4dEl0ZW0uY3BwCmluZGV4IGY3OTQwM2M2NzczNzdhMTQ4Y2FlNWU4MjczOTRm
OGIxOWRlYmFmNWUuLjUxOTliYWJkNDczODU0YTlhNzI4M2UxNzVlZTZkMmIxNWM2NGZiMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRl
eHRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVUZXh0SXRlbS5jcHAKQEAgLTE0NSwxMyArMTQ1LDIwIEBAIElubGluZVRleHRJdGVtOjpJ
bmxpbmVUZXh0SXRlbShjb25zdCBCb3gmIGlubGluZUJveCkKIHsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6c3BsaXQodW5zaWduZWQgc3BsaXRQ
b3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPElubGluZVRl
eHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6bGVmdCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5zdGFydCgpKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVuZCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVCghaXNTZWdt
ZW50QnJlYWsoKSk7CiAgICAgQVNTRVJUKG1fdGV4dEl0ZW1UeXBlICE9IFRleHRJdGVtVHlwZTo6
VW5kZWZpbmVkKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0
Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgbV90ZXh0SXRlbVR5cGUpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3RhcnQoKSwgbGVuZ3Ro
LCBtX3RleHRJdGVtVHlwZSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4g
SW5saW5lVGV4dEl0ZW06OnJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgIEFTU0VSVCghaXNTZWdt
ZW50QnJlYWsoKSk7CisgICAgQVNTRVJUKG1fdGV4dEl0ZW1UeXBlICE9IFRleHRJdGVtVHlwZTo6
VW5kZWZpbmVkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0
Qm94KCksIGVuZCgpIC0gbGVuZ3RoLCBsZW5ndGgsIG1fdGV4dEl0ZW1UeXBlKTsKIH0KIAogYm9v
bCBJbmxpbmVUZXh0SXRlbTo6aXNXaGl0ZXNwYWNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5oCmluZGV4
IDBhOWMzMDU0ZjE0MTZmOTc1YTAzZWVkYWQwZjNmNDgxNjE5ZmQyZTQuLjcwZDA2MzBjNWY3OGFl
ODEyM2Q5YjE3NDk0OWIyY2YxNGVkZDU5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uaApAQCAtNTAsNyArNTAs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbGxhcHNpYmxlKCkgY29uc3QgeyByZXR1cm4gaXNX
aGl0ZXNwYWNlKCkgJiYgc3R5bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKTsgfQogICAgIGJvb2wg
aXNTZWdtZW50QnJlYWsoKSBjb25zdDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0
SXRlbT4gc3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKSBjb25z
dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IGxlZnQodW5zaWduZWQgbGVu
Z3RoKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IHJpZ2h0KHVu
c2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFRleHRJdGVtVHlwZSB7IFVu
ZGVmaW5lZCwgV2hpdGVzcGFjZSwgTm9uV2hpdGVzcGFjZSwgU2VnbWVudEJyZWFrIH07CiAgICAg
SW5saW5lVGV4dEl0ZW0oY29uc3QgQm94JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0
aCwgVGV4dEl0ZW1UeXBlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>