<?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>198642</bug_id>
          
          <creation_ts>2019-06-06 21:21:39 -0700</creation_ts>
          <short_desc>[LFC][IFC] Line should skip all vertical adjustment when running preferred width computation</short_desc>
          <delta_ts>2019-06-07 10:15:57 -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>1542711</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-06-06 21:21:39 -0700</bug_when>
    <thetext>Layout should trigger both horizontal and vertical alignment while preferred width computation should only do (logical)horizontal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542712</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-06 21:22:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/51511043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542714</commentid>
    <comment_count>2</comment_count>
      <attachid>371557</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-06-06 21:41:50 -0700</bug_when>
    <thetext>Created attachment 371557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542860</commentid>
    <comment_count>3</comment_count>
      <attachid>371557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-07 10:15:55 -0700</bug_when>
    <thetext>Comment on attachment 371557
Patch

Clearing flags on attachment: 371557

Committed r246206: &lt;https://trac.webkit.org/changeset/246206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542861</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-07 10:15:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371557</attachid>
            <date>2019-06-06 21:41:50 -0700</date>
            <delta_ts>2019-06-07 10:15:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198642-20190606214147.patch</filename>
            <type>text/plain</type>
            <size>30780</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE0MjBkNTdkMTE1MjRj
NTQ1MDcyMjliYjFmMGM5NzQ2MWRmMWFiMi4uMDZhNTYxNTc2OTNjZjY5OGM0MWYwMTJmNzA0ZTU3
YjNiYzc0NzJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA2LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBMaW5lIHNo
b3VsZCBza2lwIGFsbCB2ZXJ0aWNhbCBhZGp1c3RtZW50IHdoZW4gcnVubmluZyBwcmVmZXJyZWQg
d2lkdGggY29tcHV0YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODY0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE1MTEwNDM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgbGF5b3V0
IHRyaWdnZXJzIGJvdGggaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYWxpZ21lbnQsIHByZWZlcnJl
ZCB3aWR0aCBjb21wdXRhdGlvbiBzaG91bGQgb25seSBkbyAobG9naWNhbClob3Jpem9udGFsLgor
ICAgICAgICBNYWtlIGFsbCB2ZXJ0aWNhbCBhbGlnbm1lbnQgY29tcHV0YXRpb24gb3B0aW9uYWwg
aW4gTGluZS4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlVu
Y29tbWl0dGVkQ29udGVudDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlvdXQ6OnBsYWNlSW5saW5lSXRlbXMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUxh
eW91dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5
UnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmlubGluZUl0ZW1IZWlnaHQp
OiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpDb250ZW50OjpSdW46OlJ1bik6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OkxpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmU6Om1vdmVMb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OnRyYWlsaW5nVHJpbW1hYmxlV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lOjphcHBlbmROb25CcmVha2FibGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZTo6YXBwZW5kSW5saW5lQ29udGFpbmVyRW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmlubGluZUl0ZW1IZWlnaHQgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaDoKKwogMjAxOS0wNi0wNiAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gTW92ZSBi
YXNlbGluZSBhbmQgbGluZSBoZWlnaHQgY29tcHV0YXRpb24gdG8gYSBkZWRpY2F0ZWQgZnVuY3Rp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3Bw
CmluZGV4IDBiNTM3NjQyNTZiZTIyYTY4ZmE0YzY1YTI4NjY2ZGI3ZjczNWY0ODEuLmVlMzQzMzgz
MThhNDFiZDRiNGY3NGFkYTA4OWU1YzY5ZDYyNGQ3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtNDQsMTAgKzQ0LDEwIEBAIG5h
bWVzcGFjZSBMYXlvdXQgewogc3RydWN0IFVuY29tbWl0dGVkQ29udGVudCB7CiAgICAgc3RydWN0
IFJ1biB7CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW07Ci0gICAgICAgIExp
bmU6OklubGluZUl0ZW1TaXplIHNpemU7CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRo
OwogICAgICAgICAvLyBGSVhNRTogYWRkIG9wdGlvbmFsIGJyZWFraW5nIGNvbnRleHQgKHN0YXJ0
IGFuZCBlbmQgcG9zaXRpb24pIGZvciBzcGxpdCB0ZXh0IGNvbnRlbnQuCiAgICAgfTsKLSAgICB2
b2lkIGFkZChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgTGluZTo6SW5saW5lSXRlbVNpemUmKTsK
KyAgICB2b2lkIGFkZChjb25zdCBJbmxpbmVJdGVtJiwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgp
OwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIFZlY3RvcjxSdW4+IHJ1bnMoKSB7IHJldHVybiBt
X3VuY29tbWl0dGVkUnVuczsgfQpAQCAtNjAsMTAgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgTGF5
b3V0VW5pdCBtX3dpZHRoOwogfTsKIAotdm9pZCBVbmNvbW1pdHRlZENvbnRlbnQ6OmFkZChjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBMaW5lOjpJbmxpbmVJdGVtU2l6ZSYgc2l6
ZSkKK3ZvaWQgVW5jb21taXR0ZWRDb250ZW50OjphZGQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5l
SXRlbSwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiB7Ci0gICAgbV91bmNvbW1pdHRlZFJ1bnMu
YXBwZW5kKHsgaW5saW5lSXRlbSwgc2l6ZSB9KTsKLSAgICBtX3dpZHRoICs9IHNpemUubG9naWNh
bFdpZHRoOworICAgIG1fdW5jb21taXR0ZWRSdW5zLmFwcGVuZCh7IGlubGluZUl0ZW0sIGxvZ2lj
YWxXaWR0aCB9KTsKKyAgICBtX3dpZHRoICs9IGxvZ2ljYWxXaWR0aDsKIH0KIAogdm9pZCBVbmNv
bW1pdHRlZENvbnRlbnQ6OnJlc2V0KCkKQEAgLTEyNSwzNCArMTI1LDE1IEBAIHN0YXRpYyBMYXlv
dXRVbml0IGlubGluZUl0ZW1XaWR0aChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IElubGluZUl0CiAgICAgcmV0dXJuIGRpc3BsYXlCb3gud2lkdGgoKTsKIH0KIAotc3RhdGlj
IExheW91dFVuaXQgaW5saW5lSXRlbUhlaWdodChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCi17Ci0gICAgYXV0byYgZm9udE1ldHJp
Y3MgPSBpbmxpbmVJdGVtLnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICBpZiAoaW5saW5lSXRl
bS5pc0xpbmVCcmVhaygpIHx8IGlzPElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSkKLSAgICAg
ICAgcmV0dXJuIGZvbnRNZXRyaWNzLmhlaWdodCgpOwotCi0gICAgYXV0byYgbGF5b3V0Qm94ID0g
aW5saW5lSXRlbS5sYXlvdXRCb3goKTsKLSAgICBBU1NFUlQobGF5b3V0U3RhdGUuaGFzRGlzcGxh
eUJveChsYXlvdXRCb3gpKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwotCi0gICAgaWYgKGxheW91dEJveC5pc0Zs
b2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICByZXR1cm4gZGlzcGxheUJveC5tYXJnaW5Cb3go
KS5oZWlnaHQoKTsKLQotICAgIGlmIChsYXlvdXRCb3guaXNSZXBsYWNlZCgpKQotICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveC5oZWlnaHQoKTsKLQotICAgIGlmIChpbmxpbmVJdGVtLmlzQ29udGFp
bmVyU3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzQ29udGFpbmVyRW5kKCkpCi0gICAgICAgIHJldHVy
biBmb250TWV0cmljcy5oZWlnaHQoKSArIGRpc3BsYXlCb3gudmVydGljYWxCb3JkZXIoKSArIGRp
c3BsYXlCb3gudmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKTsKLQotICAgIC8vIE5vbi1yZXBs
YWNlZCBpbmxpbmUgYm94IChlLmcuIGlubGluZS1ibG9jaykKLSAgICByZXR1cm4gZGlzcGxheUJv
eC5oZWlnaHQoKTsKLX0KLQogSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlvdXQ6Okxp
bmVDb250ZW50IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lTGF5b3V0OjpwbGFjZUlubGlu
ZUl0ZW1zKGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0KSBjb25zdAogewotICAgIGF1dG8gbWlt
aW11bUxpbmVIZWlnaHQgPSBtX2Zvcm1hdHRpbmdSb290LnN0eWxlKCkuY29tcHV0ZWRMaW5lSGVp
Z2h0KCk7Ci0gICAgYXV0byBiYXNlbGluZU9mZnNldCA9IExpbmU6OmhhbGZMZWFkaW5nTWV0cmlj
cyhtX2Zvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgbWltaW11bUxpbmVIZWln
aHQpLmhlaWdodDsKLSAgICBhdXRvIGxpbmUgPSBMaW5lIHsgbGF5b3V0U3RhdGUoKSwgbGluZUlu
cHV0Lmhvcml6b250YWxDb25zdHJhaW50LmxvZ2ljYWxUb3BMZWZ0LCBsaW5lSW5wdXQuaG9yaXpv
bnRhbENvbnN0cmFpbnQuYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBtaW1pbXVtTGluZUhlaWdodCwg
YmFzZWxpbmVPZmZzZXQgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGluZT4gbGluZTsKKyAgICBp
ZiAobGluZUlucHV0LnNraXBWZXJ0aWNhbEFsaWdtZW50ID09IExpbmVJbnB1dDo6U2tpcFZlcnRp
Y2FsQWxpZ21lbnQ6Ok5vKSB7CisgICAgICAgIGF1dG8gbWltaW11bUxpbmVIZWlnaHQgPSBtX2Zv
cm1hdHRpbmdSb290LnN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CisgICAgICAgIGF1dG8g
YmFzZWxpbmVPZmZzZXQgPSBMaW5lOjpoYWxmTGVhZGluZ01ldHJpY3MobV9mb3JtYXR0aW5nUm9v
dC5zdHlsZSgpLmZvbnRNZXRyaWNzKCksIG1pbWltdW1MaW5lSGVpZ2h0KS5oZWlnaHQ7CisgICAg
ICAgIGxpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmU+KGxheW91dFN0YXRlKCksIGxpbmVJbnB1
dC5ob3Jpem9udGFsQ29uc3RyYWludC5sb2dpY2FsVG9wTGVmdCwgbGluZUlucHV0Lmhvcml6b250
YWxDb25zdHJhaW50LmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgbWltaW11bUxpbmVIZWlnaHQsIGJh
c2VsaW5lT2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbGluZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TGluZT4obGF5b3V0U3RhdGUoKSwgbGluZUlucHV0Lmhvcml6b250YWxDb25zdHJhaW50Lmxv
Z2ljYWxUb3BMZWZ0LngoKSwgbGluZUlucHV0Lmhvcml6b250YWxDb25zdHJhaW50LmF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCk7CiAKICAgICBWZWN0b3I8V2Vha1B0cjxJbmxpbmVJdGVtPj4gZmxvYXRz
OwogICAgIHVuc2lnbmVkIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCA9IDA7CkBAIC0xNjUsMTcg
KzE0NiwxNyBAQCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUxheW91dDo6TGluZUNvbnRl
bnQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmVMYQogICAgICAgICBmb3IgKGF1dG8mIHVu
Y29tbWl0dGVkUnVuIDogdW5jb21taXR0ZWRDb250ZW50LnJ1bnMoKSkgewogICAgICAgICAgICAg
YXV0byYgaW5saW5lSXRlbSA9IHVuY29tbWl0dGVkUnVuLmlubGluZUl0ZW07CiAgICAgICAgICAg
ICBpZiAoaW5saW5lSXRlbS5pc0hhcmRMaW5lQnJlYWsoKSkKLSAgICAgICAgICAgICAgICBsaW5l
LmFwcGVuZEhhcmRMaW5lQnJlYWsoaW5saW5lSXRlbSk7CisgICAgICAgICAgICAgICAgbGluZS0+
YXBwZW5kSGFyZExpbmVCcmVhayhpbmxpbmVJdGVtKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlz
PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSkKLSAgICAgICAgICAgICAgICBsaW5lLmFwcGVu
ZFRleHRDb250ZW50KGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSwgdW5jb21t
aXR0ZWRSdW4uc2l6ZSk7CisgICAgICAgICAgICAgICAgbGluZS0+YXBwZW5kVGV4dENvbnRlbnQo
ZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pLCB1bmNvbW1pdHRlZFJ1bi5sb2dp
Y2FsV2lkdGgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaW5saW5lSXRlbS5pc0NvbnRhaW5lclN0
YXJ0KCkpCi0gICAgICAgICAgICAgICAgbGluZS5hcHBlbmRJbmxpbmVDb250YWluZXJTdGFydChp
bmxpbmVJdGVtLCB1bmNvbW1pdHRlZFJ1bi5zaXplKTsKKyAgICAgICAgICAgICAgICBsaW5lLT5h
cHBlbmRJbmxpbmVDb250YWluZXJTdGFydChpbmxpbmVJdGVtLCB1bmNvbW1pdHRlZFJ1bi5sb2dp
Y2FsV2lkdGgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaW5saW5lSXRlbS5pc0NvbnRhaW5lckVu
ZCgpKQotICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kSW5saW5lQ29udGFpbmVyRW5kKGlubGlu
ZUl0ZW0sIHVuY29tbWl0dGVkUnVuLnNpemUpOworICAgICAgICAgICAgICAgIGxpbmUtPmFwcGVu
ZElubGluZUNvbnRhaW5lckVuZChpbmxpbmVJdGVtLCB1bmNvbW1pdHRlZFJ1bi5sb2dpY2FsV2lk
dGgpOwogICAgICAgICAgICAgZWxzZSBpZiAoaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc1JlcGxh
Y2VkKCkpCi0gICAgICAgICAgICAgICAgbGluZS5hcHBlbmRSZXBsYWNlZElubGluZUJveChpbmxp
bmVJdGVtLCB1bmNvbW1pdHRlZFJ1bi5zaXplKTsKKyAgICAgICAgICAgICAgICBsaW5lLT5hcHBl
bmRSZXBsYWNlZElubGluZUJveChpbmxpbmVJdGVtLCB1bmNvbW1pdHRlZFJ1bi5sb2dpY2FsV2lk
dGgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kTm9uUmVw
bGFjZWRJbmxpbmVCb3goaW5saW5lSXRlbSwgdW5jb21taXR0ZWRSdW4uc2l6ZSk7CisgICAgICAg
ICAgICAgICAgbGluZS0+YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goaW5saW5lSXRlbSwgdW5j
b21taXR0ZWRSdW4ubG9naWNhbFdpZHRoKTsKICAgICAgICAgfQogICAgICAgICB1bmNvbW1pdHRl
ZENvbnRlbnQucmVzZXQoKTsKICAgICB9OwpAQCAtMTgzLDE4ICsxNjQsMTggQEAgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlvdXQ6OkxpbmVDb250ZW50IElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpMaW5lTGEKICAgICBhdXRvIGNsb3NlTGluZSA9IFsmXSB7CiAgICAgICAgIC8vIFRo
aXMgbWlnaHQgY2hhbmdlIGF0IHNvbWUgcG9pbnQuCiAgICAgICAgIEFTU0VSVChjb21taXR0ZWRJ
bmxpbmVJdGVtQ291bnQpOwotICAgICAgICByZXR1cm4gTGluZUNvbnRlbnQgeyBsaW5lSW5wdXQu
Zmlyc3RJbmxpbmVJdGVtSW5kZXggKyAoY29tbWl0dGVkSW5saW5lSXRlbUNvdW50IC0gMSksIFdU
Rk1vdmUoZmxvYXRzKSwgbGluZS5jbG9zZSgpIH07CisgICAgICAgIHJldHVybiBMaW5lQ29udGVu
dCB7IGxpbmVJbnB1dC5maXJzdElubGluZUl0ZW1JbmRleCArIChjb21taXR0ZWRJbmxpbmVJdGVt
Q291bnQgLSAxKSwgV1RGTW92ZShmbG9hdHMpLCBsaW5lLT5jbG9zZSgpIH07CiAgICAgfTsKICAg
ICBMaW5lQnJlYWtlciBsaW5lQnJlYWtlcjsKICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIGlu
bGluZSBjb250ZW50IGFuZCBwbGFjZSB0aGUgaW5saW5lIGJveGVzIG9uIHRoZSBjdXJyZW50IGxp
bmUuCiAgICAgZm9yIChhdXRvIGlubGluZUl0ZW1JbmRleCA9IGxpbmVJbnB1dC5maXJzdElubGlu
ZUl0ZW1JbmRleDsgaW5saW5lSXRlbUluZGV4IDwgbGluZUlucHV0LmlubGluZUl0ZW1zLnNpemUo
KTsgKytpbmxpbmVJdGVtSW5kZXgpIHsKLSAgICAgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGxp
bmUuYXZhaWxhYmxlV2lkdGgoKSAtIHVuY29tbWl0dGVkQ29udGVudC53aWR0aCgpOwotICAgICAg
ICBhdXRvIGN1cnJlbnRMb2dpY2FsUmlnaHQgPSBsaW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSAr
IHVuY29tbWl0dGVkQ29udGVudC53aWR0aCgpOworICAgICAgICBhdXRvIGF2YWlsYWJsZVdpZHRo
ID0gbGluZS0+YXZhaWxhYmxlV2lkdGgoKSAtIHVuY29tbWl0dGVkQ29udGVudC53aWR0aCgpOwor
ICAgICAgICBhdXRvIGN1cnJlbnRMb2dpY2FsUmlnaHQgPSBsaW5lLT5jb250ZW50TG9naWNhbFJp
Z2h0KCkgKyB1bmNvbW1pdHRlZENvbnRlbnQud2lkdGgoKTsKICAgICAgICAgYXV0byYgaW5saW5l
SXRlbSA9IGxpbmVJbnB1dC5pbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdOwogICAgICAgICBh
dXRvIGl0ZW1Mb2dpY2FsV2lkdGggPSBpbmxpbmVJdGVtV2lkdGgobGF5b3V0U3RhdGUoKSwgKmlu
bGluZUl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBFbnN1
cmUgTGluZUNvbnRleHQ6OnRyaW1tYWJsZVdpZHRoIGluY2x1ZGVzIHVuY29tbWl0dGVkIGNvbnRl
bnQgaWYgbmVlZGVkLgotICAgICAgICBhdXRvIGJyZWFraW5nQ29udGV4dCA9IGxpbmVCcmVha2Vy
LmJyZWFraW5nQ29udGV4dCgqaW5saW5lSXRlbSwgaXRlbUxvZ2ljYWxXaWR0aCwgeyBhdmFpbGFi
bGVXaWR0aCwgY3VycmVudExvZ2ljYWxSaWdodCwgbGluZS50cmFpbGluZ1RyaW1tYWJsZVdpZHRo
KCksICFsaW5lLmhhc0NvbnRlbnQoKSB9KTsKKyAgICAgICAgYXV0byBicmVha2luZ0NvbnRleHQg
PSBsaW5lQnJlYWtlci5icmVha2luZ0NvbnRleHQoKmlubGluZUl0ZW0sIGl0ZW1Mb2dpY2FsV2lk
dGgsIHsgYXZhaWxhYmxlV2lkdGgsIGN1cnJlbnRMb2dpY2FsUmlnaHQsIGxpbmUtPnRyYWlsaW5n
VHJpbW1hYmxlV2lkdGgoKSwgIWxpbmUtPmhhc0NvbnRlbnQoKSB9KTsKICAgICAgICAgaWYgKGJy
ZWFraW5nQ29udGV4dC5pc0F0QnJlYWtpbmdPcHBvcnR1bml0eSkKICAgICAgICAgICAgIGNvbW1p
dFBlbmRpbmdDb250ZW50KCk7CiAKQEAgLTIxNiwxNyArMTk3LDEzIEBAIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpMaW5lTGF5b3V0OjpMaW5lQ29udGVudCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6TGluZUxhCiAgICAgICAgICAgICBBU1NFUlQobGF5b3V0U3RhdGUoKS5oYXNEaXNwbGF5Qm94
KGZsb2F0Qm94KSk7CiAgICAgICAgICAgICAvLyBTaHJpbmsgYXZhaWxibGUgc3BhY2UgZm9yIGN1
cnJlbnQgbGluZSBhbmQgbW92ZSBleGlzdGluZyBpbmxpbmUgcnVucy4KICAgICAgICAgICAgIGF1
dG8gZmxvYXRCb3hXaWR0aCA9IGxheW91dFN0YXRlKCkuZGlzcGxheUJveEZvckxheW91dEJveChm
bG9hdEJveCkubWFyZ2luQm94V2lkdGgoKTsKLSAgICAgICAgICAgIGZsb2F0Qm94LmlzTGVmdEZs
b2F0aW5nUG9zaXRpb25lZCgpID8gbGluZS5tb3ZlTG9naWNhbExlZnQoZmxvYXRCb3hXaWR0aCkg
OiBsaW5lLm1vdmVMb2dpY2FsUmlnaHQoZmxvYXRCb3hXaWR0aCk7CisgICAgICAgICAgICBmbG9h
dEJveC5pc0xlZnRGbG9hdGluZ1Bvc2l0aW9uZWQoKSA/IGxpbmUtPm1vdmVMb2dpY2FsTGVmdChm
bG9hdEJveFdpZHRoKSA6IGxpbmUtPm1vdmVMb2dpY2FsUmlnaHQoZmxvYXRCb3hXaWR0aCk7CiAg
ICAgICAgICAgICBmbG9hdHMuYXBwZW5kKG1ha2VXZWFrUHRyKCppbmxpbmVJdGVtKSk7CiAgICAg
ICAgICAgICArK2NvbW1pdHRlZElubGluZUl0ZW1Db3VudDsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaXRlbUxvZ2ljYWxI
ZWlnaHQ7Ci0gICAgICAgIGlmIChsaW5lSW5wdXQuc2tpcFZlcnRpY2FsQWxpZ21lbnQgPT0gTGlu
ZUlucHV0OjpTa2lwVmVydGljYWxBbGlnbWVudDo6Tm8pCi0gICAgICAgICAgICBpdGVtTG9naWNh
bEhlaWdodCA9IGlubGluZUl0ZW1IZWlnaHQobGF5b3V0U3RhdGUoKSwgKmlubGluZUl0ZW0pOwot
ICAgICAgICB1bmNvbW1pdHRlZENvbnRlbnQuYWRkKCppbmxpbmVJdGVtLCB7IGl0ZW1Mb2dpY2Fs
V2lkdGgsIGl0ZW1Mb2dpY2FsSGVpZ2h0IH0pOwotCisgICAgICAgIHVuY29tbWl0dGVkQ29udGVu
dC5hZGQoKmlubGluZUl0ZW0sIGl0ZW1Mb2dpY2FsV2lkdGgpOwogICAgICAgICBpZiAoYnJlYWtp
bmdDb250ZXh0LmlzQXRCcmVha2luZ09wcG9ydHVuaXR5KQogICAgICAgICAgICAgY29tbWl0UGVu
ZGluZ0NvbnRlbnQoKTsKIApAQCAtMzQxLDMzICszMTgsMzMgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6TGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29u
dGVudCYKICAgICAgICAgYXV0byYgbGluZVJ1biA9IGxpbmVSdW5zLmF0KGluZGV4KTsKIAogICAg
ICAgICBhdXRvJiBpbmxpbmVJdGVtID0gbGluZVJ1bi0+aW5saW5lSXRlbTsKLSAgICAgICAgYXV0
byYgaW5saW5lUnVuID0gbGluZVJ1bi0+aW5saW5lUnVuOworICAgICAgICBhdXRvJiBsb2dpY2Fs
UmVjdCA9IGxpbmVSdW4tPmxvZ2ljYWxSZWN0OwogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBp
bmxpbmVJdGVtLmxheW91dEJveCgpOwogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0
U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKICAgICAgICAgaWYg
KGlubGluZUl0ZW0uaXNIYXJkTGluZUJyZWFrKCkpIHsKLSAgICAgICAgICAgIGRpc3BsYXlCb3gu
c2V0VG9wTGVmdChpbmxpbmVSdW4ubG9naWNhbFRvcExlZnQoKSk7Ci0gICAgICAgICAgICBkaXNw
bGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChpbmxpbmVSdW4ubG9naWNhbFdpZHRoKCkpOwotICAg
ICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGlubGluZVJ1bi5sb2dpY2Fs
SGVpZ2h0KCkpOwotICAgICAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0
ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihpbmxpbmVSdW4pKTsKKyAgICAgICAgICAgIGRp
c3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0KCkpOworICAgICAgICAgICAg
ZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgobG9naWNhbFJlY3Qud2lkdGgoKSk7CisgICAg
ICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJlY3QuaGVpZ2h0
KCkpOworICAgICAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFr
ZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJbmxpbmUgbGV2ZWwgYm94IChyZXBsYWNlZCBv
ciBpbmxpbmUtYmxvY2spCiAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzQm94KCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gdG9wTGVmdCA9IGlubGluZVJ1bi5sb2dpY2FsVG9wTGVmdCgpOworICAgICAg
ICAgICAgYXV0byB0b3BMZWZ0ID0gbG9naWNhbFJlY3QudG9wTGVmdCgpOwogICAgICAgICAgICAg
aWYgKGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgICAgICB0b3BM
ZWZ0ICs9IEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZzZXQobGF5b3V0U3Rh
dGUoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BM
ZWZ0KTsKLSAgICAgICAgICAgIGxpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGlubGluZVJ1bi5s
b2dpY2FsV2lkdGgoKSk7Ci0gICAgICAgICAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVS
dW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGlubGluZVJ1bikpOworICAgICAgICAg
ICAgbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxE
aXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIElubGluZSBsZXZlbCBjb250YWluZXIgc3RhcnQgKDxzcGFuPikK
ICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpKSB7Ci0gICAgICAgICAg
ICBkaXNwbGF5Qm94LnNldFRvcExlZnQoaW5saW5lUnVuLmxvZ2ljYWxUb3BMZWZ0KCkpOwotICAg
ICAgICAgICAgbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkoaW5saW5lUnVuLmxvZ2ljYWxXaWR0
aCgpKTsKKyAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BM
ZWZ0KCkpOworICAgICAgICAgICAgbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJl
Y3Qud2lkdGgoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0zNzgs
NDAgKzM1NSw0MCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lTGF5b3V0Ojpj
cmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW50JgogICAgICAgICAgICAgICAgIGRp
c3BsYXlCb3gubW92ZUhvcml6b250YWxseShpbmZsb3dPZmZzZXQud2lkdGgoKSk7CiAgICAgICAg
ICAgICAgICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxseShpbmZsb3dPZmZzZXQuaGVpZ2h0KCkp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBtYXJnaW5Cb3hXaWR0aCA9IGlubGlu
ZVJ1bi5sb2dpY2FsTGVmdCgpIC0gZGlzcGxheUJveC5sZWZ0KCk7CisgICAgICAgICAgICBhdXRv
IG1hcmdpbkJveFdpZHRoID0gbG9naWNhbFJlY3QubGVmdCgpIC0gZGlzcGxheUJveC5sZWZ0KCk7
CiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRCb3hXaWR0aCA9IG1hcmdpbkJveFdpZHRoIC0gKGRp
c3BsYXlCb3gubWFyZ2luU3RhcnQoKSArIGRpc3BsYXlCb3guYm9yZGVyTGVmdCgpICsgZGlzcGxh
eUJveC5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCkpOwogICAgICAgICAgICAgLy8gRklYTUUgZml4
IGl0IGZvciBtdWx0aWxpbmUuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hX
aWR0aChjb250ZW50Qm94V2lkdGgpOwotICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50
Qm94SGVpZ2h0KGlubGluZVJ1bi5sb2dpY2FsSGVpZ2h0KCkpOwotICAgICAgICAgICAgbGluZUJv
eC5leHBhbmRIb3Jpem9udGFsbHkoaW5saW5lUnVuLmxvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAg
ICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChsb2dpY2FsUmVjdC5oZWlnaHQoKSk7
CisgICAgICAgICAgICBsaW5lQm94LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0
aCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGV4
dCBjb250ZW50LiBUcnkgdG8gam9pbiBtdWx0aXBsZSB0ZXh0IHJ1bnMgd2hlbiBwb3NzaWJsZS4K
LSAgICAgICAgQVNTRVJUKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpKTsgICAgICAgIAorICAgICAg
ICBBU1NFUlQobGluZVJ1bi0+dGV4dENvbnRleHQpOyAgICAgICAgCiAgICAgICAgIGNvbnN0IExp
bmU6OkNvbnRlbnQ6OlJ1biogcHJldmlvdXNMaW5lUnVuID0gIWluZGV4ID8gbnVsbHB0ciA6IGxp
bmVSdW5zW2luZGV4IC0gMV0uZ2V0KCk7CiAgICAgICAgIGlmICghbGluZVJ1bi0+aXNDb2xsYXBz
ZWQpIHsKICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkID0gcHJldmlv
dXNMaW5lUnVuID8gcHJldmlvdXNMaW5lUnVuLT5jYW5CZUV4dGVuZGVkIDogZmFsc2U7CiAgICAg
ICAgICAgICBhdXRvIHJlcXVpcmVzTmV3UnVuID0gIWluZGV4IHx8ICFwcmV2aW91c1J1bkNhbkJl
RXh0ZW5kZWQgfHwgJmxheW91dEJveCAhPSAmcHJldmlvdXNMaW5lUnVuLT5pbmxpbmVJdGVtLmxh
eW91dEJveCgpOwogICAgICAgICAgICAgaWYgKHJlcXVpcmVzTmV3UnVuKQotICAgICAgICAgICAg
ICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3Bs
YXk6OlJ1bj4oaW5saW5lUnVuKSk7CisgICAgICAgICAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwg
RGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IGxpbmVSdW4tPnRleHRDb250ZXh0LT5zdGFydCwg
bGluZVJ1bi0+dGV4dENvbnRleHQtPmxlbmd0aCB9KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxheVJ1biA9IG1fZm9ybWF0dGluZ1N0YXRlLmlu
bGluZVJ1bnMoKS5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgbGFzdERpc3BsYXlSdW4tPmV4cGFu
ZEhvcml6b250YWxseShpbmxpbmVSdW4ubG9naWNhbFdpZHRoKCkpOwotICAgICAgICAgICAgICAg
IGxhc3REaXNwbGF5UnVuLT50ZXh0Q29udGV4dCgpLT5leHBhbmQoaW5saW5lUnVuLnRleHRDb250
ZXh0KCktPmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBsYXN0RGlzcGxheVJ1bi0+ZXhwYW5k
SG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgICAgIGxhc3RE
aXNwbGF5UnVuLT50ZXh0Q29udGV4dCgpLT5leHBhbmQobGluZVJ1bi0+dGV4dENvbnRleHQtPmxl
bmd0aCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaW5lQm94LmV4cGFuZEhvcml6b250
YWxseShpbmxpbmVSdW4ubG9naWNhbFdpZHRoKCkpOworICAgICAgICAgICAgbGluZUJveC5leHBh
bmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Ly8gRklYTUUgdGFrZSBjb250ZW50IGJyZWFraW5nIGludG8gYWNjb3VudCB3aGVuIHBhcnQgb2Yg
dGhlIGxheW91dCBib3ggaXMgb24gdGhlIHByZXZpb3VzIGxpbmUuCiAgICAgICAgIGF1dG8gZmly
c3RJbmxpbmVSdW5Gb3JMYXlvdXRCb3ggPSAhcHJldmlvdXNMaW5lUnVuIHx8ICZwcmV2aW91c0xp
bmVSdW4tPmlubGluZUl0ZW0ubGF5b3V0Qm94KCkgIT0gJmxheW91dEJveDsKICAgICAgICAgaWYg
KGZpcnN0SW5saW5lUnVuRm9yTGF5b3V0Qm94KSB7CiAgICAgICAgICAgICAvLyBTZXR1cCBkaXNw
bGF5IGJveCBmb3IgdGhlIGFzc29jaWF0ZWQgbGF5b3V0IGJveC4KLSAgICAgICAgICAgIGRpc3Bs
YXlCb3guc2V0VG9wTGVmdChpbmxpbmVSdW4ubG9naWNhbFRvcExlZnQoKSk7Ci0gICAgICAgICAg
ICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsaW5lUnVuLT5pc0NvbGxhcHNlZCA/IExh
eW91dFVuaXQoKSA6IGlubGluZVJ1bi5sb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAgICAgICBkaXNw
bGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoaW5saW5lUnVuLmxvZ2ljYWxIZWlnaHQoKSk7Cisg
ICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQobG9naWNhbFJlY3QudG9wTGVmdCgpKTsK
KyAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGxpbmVSdW4tPmlzQ29s
bGFwc2VkID8gTGF5b3V0VW5pdCgpIDogbG9naWNhbFJlY3Qud2lkdGgoKSk7CisgICAgICAgICAg
ICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJlY3QuaGVpZ2h0KCkpOwog
ICAgICAgICB9IGVsc2UgaWYgKCFsaW5lUnVuLT5pc0NvbGxhcHNlZCkgewogICAgICAgICAgICAg
Ly8gRklYTUUgZml4IGl0IGZvciBtdWx0aXJ1bi9tdWx0aWxpbmUuCi0gICAgICAgICAgICBkaXNw
bGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChkaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpICsg
aW5saW5lUnVuLmxvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29u
dGVudEJveFdpZHRoKGRpc3BsYXlCb3guY29udGVudEJveFdpZHRoKCkgKyBsb2dpY2FsUmVjdC53
aWR0aCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBGSVhNRSBsaW5lYm94IG5lZWRzIHRv
IGJlIGFqdXN0ZWQgYWZ0ZXIgY29udGVudCBhbGlnbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDFhNGVj
MjU4ZGE1NDJhMmMxOWRmMjg5YzgyMjRkMTZlMWJmZmRkZGYuLjU0NGVjMTc3MTM4ZmFkN2UyYTEx
MmYzNjFiMWM2ZmRmNGNjMmM0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCkBAIC00NywxNCArNDcsMjQgQEAgYm9v
bCBMaW5lOjpDb250ZW50Ojppc1Zpc3VhbGx5RW1wdHkoKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1MaW5lOjpDb250ZW50OjpSdW46OlJ1bihEaXNwbGF5OjpSdW4gaW5saW5lUnVuLCBj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBib29sIGlzQ29sbGFwc2VkLCBib29sIGNhbkJl
RXh0ZW5kZWQpCi0gICAgOiBpbmxpbmVSdW4oaW5saW5lUnVuKQotICAgICwgaW5saW5lSXRlbShp
bmxpbmVJdGVtKQorTGluZTo6Q29udGVudDo6UnVuOjpSdW4oY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgY29uc3QgRGlzcGxheTo6UmVjdCYgbG9naWNhbFJlY3QsIFRleHRDb250ZXh0IHRl
eHRDb250ZXh0LCBib29sIGlzQ29sbGFwc2VkLCBib29sIGNhbkJlRXh0ZW5kZWQpCisgICAgOiBp
bmxpbmVJdGVtKGlubGluZUl0ZW0pCisgICAgLCBsb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKKyAg
ICAsIHRleHRDb250ZXh0KHRleHRDb250ZXh0KQogICAgICwgaXNDb2xsYXBzZWQoaXNDb2xsYXBz
ZWQpCiAgICAgLCBjYW5CZUV4dGVuZGVkKGNhbkJlRXh0ZW5kZWQpCiB7CiB9CiAKK0xpbmU6Okxp
bmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0
LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQorICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRT
dGF0ZSkKKyAgICAsIG1fY29udGVudChzdGQ6Om1ha2VfdW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkp
CisgICAgLCBtX2xvZ2ljYWxUb3BMZWZ0KGxvZ2ljYWxMZWZ0LCAwKQorICAgICwgbV9saW5lTG9n
aWNhbFdpZHRoKGF2YWlsYWJsZVdpZHRoKQorICAgICwgbV9za2lwVmVydGljYWxBbGlnbWVudCh0
cnVlKQoreworfQorCiBMaW5lOjpMaW5lKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgTGF5b3V0UG9pbnQmIHRvcExlZnQsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIExh
eW91dFVuaXQgbWluaW11bUhlaWdodCwgTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCkKICAgICA6
IG1fbGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCiAgICAgLCBtX2NvbnRlbnQoc3RkOjptYWtlX3Vu
aXF1ZTxMaW5lOjpDb250ZW50PigpKQpAQCAtNjcsMTAgKzc3LDEyIEBAIExpbmU6OkxpbmUoY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBMYXlvdXRQb2ludCYgdG9wTGVmdCwg
TGF5b3V0VW5pCiBzdGQ6OnVuaXF1ZV9wdHI8TGluZTo6Q29udGVudD4gTGluZTo6Y2xvc2UoKQog
ewogICAgIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOwotICAgIC8vIENvbnZlcnQg
aW5saW5lIHJ1biBnZW9tZXRyeSBmcm9tIHJlbGF0aXZlIHRvIHRoZSBiYXNlbGluZSB0byByZWxh
dGl2ZSB0byBsb2dpY2FsIHRvcC4KLSAgICBmb3IgKGF1dG8mIHJ1biA6IG1fY29udGVudC0+cnVu
cygpKSB7Ci0gICAgICAgIGF1dG8gYWRqdXN0ZWRMb2dpY2FsVG9wID0gcnVuLT5pbmxpbmVSdW4u
bG9naWNhbFRvcCgpICsgbV9sb2dpY2FsSGVpZ2h0LmhlaWdodCArIG1fbG9naWNhbFRvcExlZnQu
eSgpOwotICAgICAgICBydW4tPmlubGluZVJ1bi5zZXRMb2dpY2FsVG9wKGFkanVzdGVkTG9naWNh
bFRvcCk7CisgICAgaWYgKCFtX3NraXBWZXJ0aWNhbEFsaWdtZW50KSB7CisgICAgICAgIC8vIENv
bnZlcnQgaW5saW5lIHJ1biBnZW9tZXRyeSBmcm9tIHJlbGF0aXZlIHRvIHRoZSBiYXNlbGluZSB0
byByZWxhdGl2ZSB0byBsb2dpY2FsIHRvcC4KKyAgICAgICAgZm9yIChhdXRvJiBydW4gOiBtX2Nv
bnRlbnQtPnJ1bnMoKSkgeworICAgICAgICAgICAgYXV0byBhZGp1c3RlZExvZ2ljYWxUb3AgPSBy
dW4tPmxvZ2ljYWxSZWN0LnRvcCgpICsgbV9sb2dpY2FsSGVpZ2h0LmhlaWdodCArIG1fbG9naWNh
bFRvcExlZnQueSgpOworICAgICAgICAgICAgcnVuLT5sb2dpY2FsUmVjdC5zZXRUb3AoYWRqdXN0
ZWRMb2dpY2FsVG9wKTsKKyAgICAgICAgfQogICAgIH0KICAgICBtX2NvbnRlbnQtPnNldExvZ2lj
YWxSZWN0KHsgbG9naWNhbFRvcCgpLCBsb2dpY2FsTGVmdCgpLCBjb250ZW50TG9naWNhbFdpZHRo
KCksIGxvZ2ljYWxIZWlnaHQoKSB9KTsKICAgICByZXR1cm4gV1RGTW92ZShtX2NvbnRlbnQpOwpA
QCAtODIsNyArOTQsNyBAQCB2b2lkIExpbmU6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVu
dCgpCiAgICAgTGF5b3V0VW5pdCB0cmltbWFibGVXaWR0aDsKICAgICBmb3IgKGF1dG8qIHRyaW1t
YWJsZVJ1biA6IG1fdHJpbW1hYmxlQ29udGVudCkgewogICAgICAgICB0cmltbWFibGVSdW4tPmlz
Q29sbGFwc2VkID0gdHJ1ZTsKLSAgICAgICAgdHJpbW1hYmxlV2lkdGggKz0gdHJpbW1hYmxlUnVu
LT5pbmxpbmVSdW4ubG9naWNhbFdpZHRoKCk7CisgICAgICAgIHRyaW1tYWJsZVdpZHRoICs9IHRy
aW1tYWJsZVJ1bi0+bG9naWNhbFJlY3Qud2lkdGgoKTsKICAgICB9CiAgICAgbV9jb250ZW50TG9n
aWNhbFdpZHRoIC09IHRyaW1tYWJsZVdpZHRoOwogfQpAQCAtOTYsNyArMTA4LDcgQEAgdm9pZCBM
aW5lOjptb3ZlTG9naWNhbExlZnQoTGF5b3V0VW5pdCBkZWx0YSkKICAgICBtX2xvZ2ljYWxUb3BM
ZWZ0Lm1vdmUoZGVsdGEsIDApOwogICAgIG1fbGluZUxvZ2ljYWxXaWR0aCAtPSBkZWx0YTsKICAg
ICBmb3IgKGF1dG8mIHJ1biA6IG1fY29udGVudC0+cnVucygpKQotICAgICAgICBydW4tPmlubGlu
ZVJ1bi5tb3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsKKyAgICAgICAgcnVuLT5sb2dpY2FsUmVjdC5t
b3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsKIH0KIAogdm9pZCBMaW5lOjptb3ZlTG9naWNhbFJpZ2h0
KExheW91dFVuaXQgZGVsdGEpCkBAIC0xMDksMzggKzEyMSw0MiBAQCBMYXlvdXRVbml0IExpbmU6
OnRyYWlsaW5nVHJpbW1hYmxlV2lkdGgoKSBjb25zdAogewogICAgIExheW91dFVuaXQgdHJpbW1h
YmxlV2lkdGg7CiAgICAgZm9yIChhdXRvKiB0cmltbWFibGVSdW4gOiBtX3RyaW1tYWJsZUNvbnRl
bnQpCi0gICAgICAgIHRyaW1tYWJsZVdpZHRoICs9IHRyaW1tYWJsZVJ1bi0+aW5saW5lUnVuLmxv
Z2ljYWxXaWR0aCgpOworICAgICAgICB0cmltbWFibGVXaWR0aCArPSB0cmltbWFibGVSdW4tPmxv
Z2ljYWxSZWN0LndpZHRoKCk7CiAgICAgcmV0dXJuIHRyaW1tYWJsZVdpZHRoOwogfQogCiB2b2lk
IExpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0KQogewotICAgIG1fY29udGVudC0+
cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oRGlzcGxheTo6UnVu
IHsgbG9naWNhbFJlY3QgfSwgaW5saW5lSXRlbSwgZmFsc2UsIGZhbHNlKSk7CisgICAgbV9jb250
ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJ
dGVtLCBsb2dpY2FsUmVjdCwgQ29udGVudDo6UnVuOjpUZXh0Q29udGV4dCB7IH0sIGZhbHNlLCBm
YWxzZSkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsUmVjdC53aWR0aCgp
OwogfQogCi12b2lkIExpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIElubGluZUl0ZW1TaXplIHJ1blNpemUpCit2b2lkIExpbmU6OmFw
cGVuZElubGluZUNvbnRhaW5lclN0YXJ0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExh
eW91dFVuaXQgbG9naWNhbFdpZHRoKQogewotICAgIGlmIChydW5TaXplLmxvZ2ljYWxIZWlnaHQp
Ci0gICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVtLCAqcnVuU2l6
ZS5sb2dpY2FsSGVpZ2h0KTsKLQotICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUl0ZW0ubGF5
b3V0Qm94KCk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBsYXlvdXRCb3guc3R5bGUoKS5mb250
TWV0cmljcygpOwotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBtX2xheW91dFN0YXRlLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKLQotICAgIGF1dG8gbG9naWNhbFRvcCA9IC1mb250
TWV0cmljcy5hc2NlbnQoKSAtIGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgLSBkaXNwbGF5Qm94LnBh
ZGRpbmdUb3AoKS52YWx1ZU9yKDApOwotICAgIGF1dG8gbG9naWNhbFJlY3QgPSBEaXNwbGF5OjpS
ZWN0IHsgbG9naWNhbFRvcCwgY29udGVudExvZ2ljYWxSaWdodCgpLCBydW5TaXplLmxvZ2ljYWxX
aWR0aCwgcnVuU2l6ZS5sb2dpY2FsSGVpZ2h0LnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIGxvZ2lj
YWxSZWN0ID0gRGlzcGxheTo6UmVjdCB7IH07CisgICAgbG9naWNhbFJlY3Quc2V0TGVmdChjb250
ZW50TG9naWNhbFJpZ2h0KCkpOworICAgIGxvZ2ljYWxSZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0
aCk7CisKKyAgICBpZiAoIW1fc2tpcFZlcnRpY2FsQWxpZ21lbnQpIHsKKyAgICAgICAgYXV0byBs
b2dpY2FsSGVpZ2h0ID0gaW5saW5lSXRlbUhlaWdodChpbmxpbmVJdGVtKTsKKyAgICAgICAgYWRq
dXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0sIGxvZ2ljYWxIZWlnaHQpOworCisg
ICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBtX2xheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSk7CisgICAgICAgIGF1dG8gbG9naWNhbFRvcCA9
IC1pbmxpbmVJdGVtLnN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAtIGRpc3BsYXlCb3gu
Ym9yZGVyVG9wKCkgLSBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOworICAgICAg
ICBsb2dpY2FsUmVjdC5zZXRUb3AobG9naWNhbFRvcCk7CisgICAgICAgIGxvZ2ljYWxSZWN0LnNl
dEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKKyAgICB9CiAgICAgYXBwZW5kTm9uQnJlYWthYmxlU3Bh
Y2UoaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpOwogfQogCi12b2lkIExpbmU6OmFwcGVuZElubGlu
ZUNvbnRhaW5lckVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVJdGVtU2l6
ZSBydW5TaXplKQordm9pZCBMaW5lOjphcHBlbmRJbmxpbmVDb250YWluZXJFbmQoY29uc3QgSW5s
aW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiB7CiAgICAgLy8g
VGhpcyBpcyByZWFsbHkganVzdCBhIHBsYWNlaG9sZGVyIHRvIG1hcmsgdGhlIGVuZCBvZiB0aGUg
aW5saW5lIGxldmVsIGNvbnRhaW5lci4KLSAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gRGlzcGxheTo6
UmVjdCB7IDAsIGNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgcnVuU2l6ZS5sb2dpY2FsV2lkdGgsIHJ1
blNpemUubG9naWNhbEhlaWdodC52YWx1ZU9yKDApIH07CisgICAgYXV0byBsb2dpY2FsUmVjdCA9
IERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9naWNhbFJpZ2h0KCksIGxvZ2ljYWxXaWR0aCwg
MCB9OwogICAgIGFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0
KTsKIH0KIAotdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRl
bSYgaW5saW5lSXRlbSwgSW5saW5lSXRlbVNpemUgcnVuU2l6ZSkKK3ZvaWQgTGluZTo6YXBwZW5k
VGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQg
bG9naWNhbFdpZHRoKQogewogICAgIGF1dG8gaXNUcmltbWFibGUgPSBUZXh0VXRpbDo6aXNUcmlt
bWFibGVDb250ZW50KGlubGluZUl0ZW0pOwogICAgIGlmICghaXNUcmltbWFibGUpCkBAIC0xNjgs
NDUgKzE4NCw1NiBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRl
eHRJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVJdGVtU2l6ZSBydQogICAgIC8vIENvbGxhcHNlZCBs
aW5lIGl0ZW1zIGRvbid0IGNvbnRyaWJ1dGUgdG8gdGhlIGxpbmUgd2lkdGguCiAgICAgYXV0byBp
c0NvbXBsZXRlbHlDb2xsYXBzZWQgPSBzaG91bGRDb2xsYXBzZUNvbXBsZXRlbHkoKTsKICAgICBh
dXRvIGNhbkJlRXh0ZW5kZWQgPSAhaXNDb21wbGV0ZWx5Q29sbGFwc2VkICYmICFpbmxpbmVJdGVt
LmlzQ29sbGFwc2VkKCk7Ci0gICAgYXV0byBsb2dpY2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyAt
aW5saW5lSXRlbS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCksIGNvbnRlbnRMb2dpY2Fs
UmlnaHQoKSwgcnVuU2l6ZS5sb2dpY2FsV2lkdGgsIHJ1blNpemUubG9naWNhbEhlaWdodC52YWx1
ZU9yKDApIH07Ci0gICAgYXV0byB0ZXh0Q29udGV4dCA9IERpc3BsYXk6OlJ1bjo6VGV4dENvbnRl
eHQgeyBpbmxpbmVJdGVtLnN0YXJ0KCksIGlubGluZUl0ZW0uaXNDb2xsYXBzZWQoKSA/IDEgOiBp
bmxpbmVJdGVtLmxlbmd0aCgpIH07Ci0gICAgYXV0byBkaXNwbGF5UnVuID0gRGlzcGxheTo6UnVu
KGxvZ2ljYWxSZWN0LCB0ZXh0Q29udGV4dCk7CisgICAgCisgICAgYXV0byBsb2dpY2FsUmVjdCA9
IERpc3BsYXk6OlJlY3QgeyB9OworICAgIGxvZ2ljYWxSZWN0LnNldExlZnQoY29udGVudExvZ2lj
YWxSaWdodCgpKTsKKyAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOworICAg
IGlmICghbV9za2lwVmVydGljYWxBbGlnbWVudCkgeworICAgICAgICBsb2dpY2FsUmVjdC5zZXRU
b3AoLWlubGluZUl0ZW0uc3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKKyAgICAgICAg
bG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1IZWlnaHQoaW5saW5lSXRlbSkpOworICAg
IH0KIAotICAgIGF1dG8gbGluZUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4o
ZGlzcGxheVJ1biwgaW5saW5lSXRlbSwgaXNDb21wbGV0ZWx5Q29sbGFwc2VkLCBjYW5CZUV4dGVu
ZGVkKTsKKyAgICBhdXRvIHRleHRDb250ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0Q29udGV4dCB7
IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5saW5lSXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6IGlubGlu
ZUl0ZW0ubGVuZ3RoKCkgfTsKKyAgICBhdXRvIGxpbmVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0LCB0ZXh0Q29udGV4dCwgaXNDb21w
bGV0ZWx5Q29sbGFwc2VkLCBjYW5CZUV4dGVuZGVkKTsKICAgICBpZiAoaXNUcmltbWFibGUpCiAg
ICAgICAgIG1fdHJpbW1hYmxlQ29udGVudC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCiAgICAgbV9j
b250ZW50LT5ydW5zKCkuYXBwZW5kKFdURk1vdmUobGluZUl0ZW0pKTsKLSAgICBtX2NvbnRlbnRM
b2dpY2FsV2lkdGggKz0gaXNDb21wbGV0ZWx5Q29sbGFwc2VkID8gTGF5b3V0VW5pdCgpIDogcnVu
U2l6ZS5sb2dpY2FsV2lkdGg7CisgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IGlzQ29tcGxl
dGVseUNvbGxhcHNlZCA/IExheW91dFVuaXQoKSA6IGxvZ2ljYWxXaWR0aDsKIH0KIAotdm9pZCBM
aW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtLCBJbmxpbmVJdGVtU2l6ZSBydW5TaXplKQordm9pZCBMaW5lOjphcHBlbmROb25SZXBsYWNl
ZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2lj
YWxXaWR0aCkKIHsKLSAgICBpZiAocnVuU2l6ZS5sb2dpY2FsSGVpZ2h0KQotICAgICAgICBhZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgKnJ1blNpemUubG9naWNhbEhlaWdo
dCk7Ci0KLSAgICBhdXRvIGlubGluZUJveEhlaWdodCA9IHJ1blNpemUubG9naWNhbEhlaWdodC52
YWx1ZU9yKDApOwogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBtX2xheW91dFN0YXRlLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSk7Ci0gICAgYXV0byBsb2dpY2Fs
VG9wID0gLWlubGluZUJveEhlaWdodDsKLSAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBkaXNw
bGF5Qm94Lmhvcml6b250YWxNYXJnaW4oKTsKLSAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gRGlzcGxh
eTo6UmVjdCB7IGxvZ2ljYWxUb3AsIGNvbnRlbnRMb2dpY2FsUmlnaHQoKSArIGhvcml6b250YWxN
YXJnaW4uc3RhcnQsIHJ1blNpemUubG9naWNhbFdpZHRoLCBpbmxpbmVCb3hIZWlnaHQgfTsKKyAg
ICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBkaXNwbGF5Qm94Lmhvcml6b250YWxNYXJnaW4oKTsg
ICAgCisgICAgYXV0byBsb2dpY2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyB9OwogCi0gICAgbV9j
b250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihEaXNw
bGF5OjpSdW4geyBsb2dpY2FsUmVjdCB9LCBpbmxpbmVJdGVtLCBmYWxzZSwgZmFsc2UpKTsKLSAg
ICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gKHJ1blNpemUubG9naWNhbFdpZHRoICsgaG9yaXpv
bnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKKyAgICBsb2dpY2FsUmVj
dC5zZXRMZWZ0KGNvbnRlbnRMb2dpY2FsUmlnaHQoKSArIGhvcml6b250YWxNYXJnaW4uc3RhcnQp
OworICAgIGxvZ2ljYWxSZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7CisgICAgaWYgKCFtX3Nr
aXBWZXJ0aWNhbEFsaWdtZW50KSB7CisgICAgICAgIGF1dG8gbG9naWNhbEhlaWdodCA9IGlubGlu
ZUl0ZW1IZWlnaHQoaW5saW5lSXRlbSk7CisgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhl
aWdodChpbmxpbmVJdGVtLCBsb2dpY2FsSGVpZ2h0KTsKKworICAgICAgICBsb2dpY2FsUmVjdC5z
ZXRUb3AoLWxvZ2ljYWxIZWlnaHQpOworICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9n
aWNhbEhlaWdodCk7CisgICAgfQorCisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCwgQ29udGVu
dDo6UnVuOjpUZXh0Q29udGV4dCB7IH0sIGZhbHNlLCBmYWxzZSkpOworICAgIG1fY29udGVudExv
Z2ljYWxXaWR0aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhv
cml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuY2xlYXIoKTsKIH0K
IAotdm9pZCBMaW5lOjphcHBlbmRSZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBp
bmxpbmVJdGVtLCBJbmxpbmVJdGVtU2l6ZSBydW5TaXplKQordm9pZCBMaW5lOjphcHBlbmRSZXBs
YWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aCkKIHsKICAgICAvLyBGSVhNRSBTdXJlbHkgcmVwbGFjZWQgYm94ZXMgYmVoYXZl
IGRpZmZlcmVudGx5LgotICAgIGFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGlubGluZUl0ZW0s
IHJ1blNpemUpOworICAgIGFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGlubGluZUl0ZW0sIGxv
Z2ljYWxXaWR0aCk7CiB9CiAKIHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogewogICAgIGF1dG8gYXNjZW50ID0gaW5saW5lSXRlbS5s
YXlvdXRCb3goKS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CiAgICAgYXV0byBsb2dp
Y2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyAtYXNjZW50LCBjb250ZW50TG9naWNhbFJpZ2h0KCks
IHsgfSwgbG9naWNhbEhlaWdodCgpIH07Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihEaXNwbGF5OjpSdW4geyBsb2dpY2FsUmVjdCB9
LCBpbmxpbmVJdGVtLCBmYWxzZSwgZmFsc2UpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0
LCBDb250ZW50OjpSdW46OlRleHRDb250ZXh0IHsgfSwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIHZv
aWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlu
bGluZUl0ZW0sIExheW91dFVuaXQgcnVuSGVpZ2h0KQpAQCAtMjM5LDYgKzI2NiwzMCBAQCB2b2lk
IExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBMYXlvdXRVbml0CiAgICAgbV9sb2dpY2FsSGVpZ2h0LmhlaWdodCA9IHN0ZDo6bWF4
KHJ1bkhlaWdodCwgbV9sb2dpY2FsSGVpZ2h0LmhlaWdodCk7CiB9CiAKK0xheW91dFVuaXQgTGlu
ZTo6aW5saW5lSXRlbUhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKSBjb25zdAor
eworICAgIEFTU0VSVCghbV9za2lwVmVydGljYWxBbGlnbWVudCk7CisgICAgYXV0byYgZm9udE1l
dHJpY3MgPSBpbmxpbmVJdGVtLnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKKyAgICBpZiAoaW5saW5l
SXRlbS5pc0xpbmVCcmVhaygpIHx8IGlzPElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSkKKyAg
ICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmhlaWdodCgpOworCisgICAgYXV0byYgbGF5b3V0Qm94
ID0gaW5saW5lSXRlbS5sYXlvdXRCb3goKTsKKyAgICBBU1NFUlQobV9sYXlvdXRTdGF0ZS5oYXNE
aXNwbGF5Qm94KGxheW91dEJveCkpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBtX2xheW91dFN0
YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKworICAgIGlmIChsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3gubWFy
Z2luQm94KCkuaGVpZ2h0KCk7CisKKyAgICBpZiAobGF5b3V0Qm94LmlzUmVwbGFjZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGRpc3BsYXlCb3guaGVpZ2h0KCk7CisKKyAgICBpZiAoaW5saW5lSXRlbS5p
c0NvbnRhaW5lclN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0NvbnRhaW5lckVuZCgpKQorICAgICAg
ICByZXR1cm4gZm9udE1ldHJpY3MuaGVpZ2h0KCkgKyBkaXNwbGF5Qm94LnZlcnRpY2FsQm9yZGVy
KCkgKyBkaXNwbGF5Qm94LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7CisKKyAgICAvLyBO
b24tcmVwbGFjZWQgaW5saW5lIGJveCAoZS5nLiBpbmxpbmUtYmxvY2spCisgICAgcmV0dXJuIGRp
c3BsYXlCb3guaGVpZ2h0KCk7Cit9CisKIExpbmU6OlVzZWRIZWlnaHRBbmREZXB0aCBMaW5lOjpo
YWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBMYXlvdXRV
bml0IGxpbmVMb2dpY2FsSGVpZ2h0KQogewogICAgIGF1dG8gYXNjZW50ID0gZm9udE1ldHJpY3Mu
YXNjZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lLmgKaW5kZXggODJkYjg0ZjliYTlhOWQ3YTEzMTkzODVmNmU5ZDdkMDAxNDE1
MGZlOC4uYjRhMjhjMWQwOWU3N2QyYTVlMjQwYjU2YjE5YmYwYzQ0MGI5MjMzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApA
QCAtMzksMTUgKzM5LDIxIEBAIGNsYXNzIExpbmUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoTGluZSk7CiBwdWJsaWM6CiAgICAgTGluZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IExh
eW91dFBvaW50JiB0b3BMZWZ0LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoLCBMYXlvdXRVbml0
IG1pbmltdW1MaW5lSGVpZ2h0LCBMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KTsKKyAgICBMaW5l
KGNvbnN0IExheW91dFN0YXRlJiwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBh
dmFpbGFibGVXaWR0aCk7CiAKICAgICBjbGFzcyBDb250ZW50IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHN0cnVjdCBSdW4gewotICAgICAgICAgICAgUnVuKERpc3BsYXk6OlJ1biwgY29uc3QgSW5s
aW5lSXRlbSYsIGJvb2wgaXNDb2xsYXBzZWQsIGJvb2wgY2FuQmVFeHRlbmRlZCk7CisgICAgICAg
ICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0
IHsgMCB9OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKKyAgICAgICAg
ICAgIH07CisgICAgICAgICAgICBSdW4oY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IERpc3BsYXk6
OlJlY3QmLCBUZXh0Q29udGV4dCwgYm9vbCBpc0NvbGxhcHNlZCwgYm9vbCBjYW5CZUV4dGVuZGVk
KTsKIAotICAgICAgICAgICAgLy8gUmVsYXRpdmUgdG8gdGhlIGJhc2VsaW5lLgotICAgICAgICAg
ICAgRGlzcGxheTo6UnVuIGlubGluZVJ1bjsKICAgICAgICAgICAgIGNvbnN0IElubGluZUl0ZW0m
IGlubGluZUl0ZW07CisgICAgICAgICAgICAvLyBSZWxhdGl2ZSB0byB0aGUgYmFzZWxpbmUuCisg
ICAgICAgICAgICBEaXNwbGF5OjpSZWN0IGxvZ2ljYWxSZWN0OworICAgICAgICAgICAgT3B0aW9u
YWw8VGV4dENvbnRleHQ+IHRleHRDb250ZXh0OwogICAgICAgICAgICAgYm9vbCBpc0NvbGxhcHNl
ZCB7IGZhbHNlIH07CiAgICAgICAgICAgICBib29sIGNhbkJlRXh0ZW5kZWQgeyBmYWxzZSB9Owog
ICAgICAgICB9OwpAQCAtNzUsMTUgKzgxLDExIEBAIHB1YmxpYzoKICAgICB9OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50PiBjbG9zZSgpOwogCi0gICAgc3RydWN0IElubGluZUl0ZW1TaXpl
IHsKLSAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGg7Ci0gICAgICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQ7Ci0gICAgfTsKLSAgICB2b2lkIGFwcGVuZFRleHRDb250
ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiwgSW5saW5lSXRlbVNpemUpOwotICAgIHZvaWQgYXBw
ZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYsIElubGluZUl0ZW1TaXpl
KTsKLSAgICB2b2lkIGFwcGVuZFJlcGxhY2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mLCBJ
bmxpbmVJdGVtU2l6ZSk7Ci0gICAgdm9pZCBhcHBlbmRJbmxpbmVDb250YWluZXJTdGFydChjb25z
dCBJbmxpbmVJdGVtJiwgSW5saW5lSXRlbVNpemUpOwotICAgIHZvaWQgYXBwZW5kSW5saW5lQ29u
dGFpbmVyRW5kKGNvbnN0IElubGluZUl0ZW0mLCBJbmxpbmVJdGVtU2l6ZSk7CisgICAgdm9pZCBh
cHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYsIExheW91dFVuaXQgbG9naWNh
bFdpZHRoKTsKKyAgICB2b2lkIGFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGNvbnN0IElubGlu
ZUl0ZW0mLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CisgICAgdm9pZCBhcHBlbmRSZXBsYWNl
ZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwor
ICAgIHZvaWQgYXBwZW5kSW5saW5lQ29udGFpbmVyU3RhcnQoY29uc3QgSW5saW5lSXRlbSYsIExh
eW91dFVuaXQgbG9naWNhbFdpZHRoKTsKKyAgICB2b2lkIGFwcGVuZElubGluZUNvbnRhaW5lckVu
ZChjb25zdCBJbmxpbmVJdGVtJiwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwogICAgIHZvaWQg
YXBwZW5kSGFyZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJik7CiAKICAgICBib29sIGhhc0Nv
bnRlbnQoKSBjb25zdCB7IHJldHVybiAhbV9jb250ZW50LT5pc1Zpc3VhbGx5RW1wdHkoKTsgfQpA
QCAtMTE3LDYgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVUcmFpbGluZ1RyaW1t
YWJsZUNvbnRlbnQoKTsKIAogICAgIHZvaWQgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNv
bnN0IElubGluZUl0ZW0mLCBMYXlvdXRVbml0IHJ1bkhlaWdodCk7CisgICAgTGF5b3V0VW5pdCBp
bmxpbmVJdGVtSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mKSBjb25zdDsKIAogICAgIGNvbnN0IExh
eW91dFN0YXRlJiBtX2xheW91dFN0YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50PiBt
X2NvbnRlbnQ7CkBAIC0xMjcsNiArMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFVzZWRIZWlnaHRB
bmREZXB0aCBtX2xvZ2ljYWxIZWlnaHQ7CiAgICAgTGF5b3V0VW5pdCBtX2xpbmVMb2dpY2FsV2lk
dGg7CisgICAgYm9vbCBtX3NraXBWZXJ0aWNhbEFsaWdtZW50IHsgZmFsc2UgfTsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>