<?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>214790</bug_id>
          
          <creation_ts>2020-07-25 19:52:44 -0700</creation_ts>
          <short_desc>[LFC][IFC] Do not move the runs out of the LineBuilder while closing the line</short_desc>
          <delta_ts>2020-08-25 18:32:00 -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>
          
          <blocked>215087</blocked>
    
    <blocked>215752</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</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>1675040</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-07-25 19:52:44 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675041</commentid>
    <comment_count>1</comment_count>
      <attachid>405237</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-25 19:58:32 -0700</bug_when>
    <thetext>Created attachment 405237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675042</commentid>
    <comment_count>2</comment_count>
      <attachid>405238</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-25 20:06:16 -0700</bug_when>
    <thetext>Created attachment 405238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677189</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-01 19:53:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/66434660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682705</commentid>
    <comment_count>4</comment_count>
      <attachid>407208</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-25 10:45:15 -0700</bug_when>
    <thetext>Created attachment 407208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682731</commentid>
    <comment_count>5</comment_count>
      <attachid>407213</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-25 11:59:35 -0700</bug_when>
    <thetext>Created attachment 407213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682865</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 18:32:00 -0700</bug_when>
    <thetext>Committed r266155: &lt;https://trac.webkit.org/changeset/266155&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407213.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405237</attachid>
            <date>2020-07-25 19:58:32 -0700</date>
            <delta_ts>2020-07-25 20:06:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214790-20200725195831.patch</filename>
            <type>text/plain</type>
            <size>25078</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMyOTg2NmZmM2M2MjBi
ZGY4OGZlMmU2NzNlMjkxYmIyMmM0ODAxOS4uYTg1Mzc4YjU5NmI3ODlhNTFiYTMzZjgzMjU3YzI2
NzRlNmM2ODUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA3LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBEbyBub3Qg
bW92ZSB0aGUgcnVucyBvdXQgb2YgdGhlIExpbmVCdWlsZGVyIHdoaWxlIGNsb3NpbmcgdGhlIGxp
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc5
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsb3Np
bmcgdGhlIGxpbmUgc2hvdWxkIG5vdCBtZWFuIHRoYXQgdGhlIExpbmVCdWlsZGVyIGRvZXMgbm90
IGhhdmUgdGhlIGxpbmUgcnVucyBhbnltb3JlLgorICAgICAgICAoVGhpcyBwYXRjaCBhbHNvIHJl
bW92ZXMgc29tZSBjb21wbGV4aXR5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBsaW5lIGNvbnRlbnQu
KQorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRE
aXNwbGF5Qm94ZXNGb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0SW5s
aW5lQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0
OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0Ojpu
ZXh0Q29udGVudEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0
Q29udGV4dDo6Y29tbWl0RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxh
eW91dENvbnRleHQ6OmxheW91dExpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2U6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJh
bmdlOjpzaXplIGNvbnN0KToKKwogMjAyMC0wNy0yNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gVGhlIGluaXRpYWwgYWxpZ25tZW50IGJhc2Vs
aW5lIGlzIGFsd2F5cyBzZXQgYnkgdGhlIHN0cnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKaW5kZXggZmU4MjdjMDE5MTU3MjM0MDg3NjM1NGE2NmVmOTM4NGUxMTdkYzdkMy4u
MzNjZjRiNzcxMDk4MmM1OTY4ZTVjN2M1NTgwOTlhMWE5NDZkODc4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTMxLDU2ICsxMzEsNTMgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYg
aW52YWxpZGF0aW8KICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0
aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lTGF5b3V0
Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCBjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVMYXlvdXRDb250ZXh0
OjpJbmxpbmVJdGVtUmFuZ2UgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgQ29uc3RyYWludHNGb3JJ
bkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBhdXRvIGxpbmVMb2dpY2FsVG9wID0g
Y29uc3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKLSAgICBzdHJ1Y3QgUHJldmlvdXNMaW5l
RW5kIHsKLSAgICAgICAgdW5zaWduZWQgcnVuSW5kZXg7CisgICAgc3RydWN0IFByZXZpb3VzTGlu
ZSB7CisgICAgICAgIExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgcmFuZ2U7CiAg
ICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0NvbnRlbnRMZW5ndGg7CiAgICAgfTsK
LSAgICBPcHRpb25hbDxQcmV2aW91c0xpbmVFbmQ+IHByZXZpb3VzTGluZUVuZDsKLSAgICBhdXRv
IGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFs
aWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6Ok5vIH07CisgICAgT3B0aW9uYWw8
UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmU7CisgICAgYXV0byBsaW5lID0gTGluZUJ1aWxkZXIg
eyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5z
aWNTaXppbmc6Ok5vIH07CiAgICAgYXV0byBsaW5lTGF5b3V0Q29udGV4dCA9IExpbmVMYXlvdXRD
b250ZXh0IHsgKnRoaXMsIHJvb3QoKSwgaW5saW5lSXRlbXMgfTsKIAotICAgIHdoaWxlICghbGF5
b3V0UmFuZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxpbmVCdWlsZGVyLmluaXRpYWxpemUoY29u
c3RyYWludHNGb3JMaW5lKGNvbnN0cmFpbnRzLmhvcml6b250YWwsIGxpbmVMb2dpY2FsVG9wKSk7
Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlvdXRMaW5l
KGxpbmVCdWlsZGVyLCBsYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lRW5kID8gcHJldmlvdXNMaW5l
RW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBXVEY6Om51bGxvcHQpOwotICAgICAgICBzZXRE
aXNwbGF5Qm94ZXNGb3JMaW5lKGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsK
LQotICAgICAgICBpZiAobGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgpIHsKLSAg
ICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gbGluZUNvbnRlbnQubGluZUJveC5sb2dpY2FsQm90
dG9tKCk7CisgICAgd2hpbGUgKCFuZWVkc0xheW91dFJhbmdlLmlzRW1wdHkoKSkgeworICAgICAg
ICBsaW5lLmluaXRpYWxpemUoY29uc3RyYWludHNGb3JMaW5lKGNvbnN0cmFpbnRzLmhvcml6b250
YWwsIGxpbmVMb2dpY2FsVG9wKSk7CisgICAgICAgIC8vIFR1cm4gcHJldmlvdXMgbGluZSdzIG92
ZXJmbG93IGNvbnRlbnQgbGVuZ3RoIGludG8gdGhlIG5leHQgbGluZSdzIGxlYWRpbmcgY29udGVu
dCBwYXJ0aWFsIGxlbmd0aC4KKyAgICAgICAgLy8gInNwWzwtbGluZSBicmVhay0+XWxpdF9jb250
ZW50IiAtPiBvdmVyZmxvdyBsZW5ndGg6IDExIC0+IGxlYWRpbmcgcGFydGlhbCBjb250ZW50IGxl
bmd0aDogMTEuCisgICAgICAgIGF1dG8gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0gcHJl
dmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlv
dXRJbmxpbmVDb250ZW50KGxpbmUsIG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29u
dGVudExlbmd0aCk7CisgICAgICAgIHNldERpc3BsYXlCb3hlc0ZvckxpbmUobGluZSwgbGluZUNv
bnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworCisgICAgICAgIGF1dG8gbGluZUNvbnRl
bnRSYW5nZSA9IGxpbmVDb250ZW50LmlubGluZUl0ZW1zOworICAgICAgICBpZiAoIWxpbmVDb250
ZW50UmFuZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBBU1NFUlQobmVlZHNMYXlvdXRSYW5n
ZS5zdGFydCA8IGxpbmVDb250ZW50UmFuZ2UuZW5kKTsKKyAgICAgICAgICAgIGxpbmVMb2dpY2Fs
VG9wID0gbGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpOwogICAgICAgICAgICAgLy8gV2hl
biB0aGUgdHJhaWxpbmcgY29udGVudCBpcyBwYXJ0aWFsLCB3ZSBuZWVkIHRvIHJldXNlIHRoZSBs
YXN0IElubGluZVRleHRJdGVtLgotICAgICAgICAgICAgYXV0byB0cmFpbGluZ1J1bkluZGV4ID0g
KmxpbmVDb250ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4OwotICAgICAgICAgICAgaWYgKGxp
bmVDb250ZW50LnBhcnRpYWxDb250ZW50KSB7CisgICAgICAgICAgICBhdXRvIGxhc3RJbmxpbmVJ
dGVtTmVlZHNQYXJ0aWFsTGF5b3V0ID0gbGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQuaGFzVmFs
dWUoKTsKKyAgICAgICAgICAgIGlmIChsYXN0SW5saW5lSXRlbU5lZWRzUGFydGlhbExheW91dCkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+b3Zl
cmZsb3dDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAvLyBUdXJuIHByZXZpb3VzIGxp
bmUncyBvdmVyZmxvdyBjb250ZW50IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBsZWFkaW5n
IGNvbnRlbnQgcGFydGlhbCBsZW5ndGguCi0gICAgICAgICAgICAgICAgLy8gInNwPC0+bGl0Y29u
dGVudCIgLT4gb3ZlcmZsb3cgbGVuZ3RoOiAxMCAtPiBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBs
ZW5ndGg6IDEwLgotICAgICAgICAgICAgICAgIGF1dG8gaXNOZXdJbmxpbmVDb250ZW50ID0gIXBy
ZXZpb3VzTGluZUVuZAotICAgICAgICAgICAgICAgICAgICB8fCB0cmFpbGluZ1J1bkluZGV4ID4g
cHJldmlvdXNMaW5lRW5kLT5ydW5JbmRleAotICAgICAgICAgICAgICAgICAgICB8fCAocHJldmlv
dXNMaW5lRW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggJiYgKnByZXZpb3VzTGluZUVuZC0+b3Zl
cmZsb3dDb250ZW50TGVuZ3RoID4gbGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQtPm92ZXJmbG93
Q29udGVudExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTmV3SW5saW5lQ29udGVudCkg
ewotICAgICAgICAgICAgICAgICAgICAvLyBTdHJhcnQgdGhlIG5leHQgbGluZSB3aXRoIHRoZSBz
YW1lLCBwYXJ0aWFsIHRyYWlsaW5nIElubGluZVRleHRJdGVtLgotICAgICAgICAgICAgICAgICAg
ICBwcmV2aW91c0xpbmVFbmQgPSBQcmV2aW91c0xpbmVFbmQgeyB0cmFpbGluZ1J1bkluZGV4LCBs
aW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoIH07Ci0gICAg
ICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gcHJldmlvdXNMaW5lRW5kLT5ydW5J
bmRleDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gbGlu
ZUxheW91dEhhc0FkdmFuY2VkID0gIXByZXZpb3VzTGluZQorICAgICAgICAgICAgICAgICAgICB8
fCBsaW5lQ29udGVudFJhbmdlLmVuZCA+IHByZXZpb3VzTGluZS0+cmFuZ2UuZW5kCisgICAgICAg
ICAgICAgICAgICAgIHx8IChwcmV2aW91c0xpbmUtPm92ZXJmbG93Q29udGVudExlbmd0aCAmJiAq
cHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggPiBsaW5lQ29udGVudC5wYXJ0aWFs
Q29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxp
bmVMYXlvdXRIYXNBZHZhbmNlZCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBvdmVyIHRvIHRoZSBuZXh0IHJ1
biBpZiB3ZSBhcmUgc3R1Y2sgb24gdGhpcyBwYXJ0aWFsIGNvbnRlbnQgKHdoZW4gdGhlIG92ZXJm
bG93IGNvbnRlbnQgbGVuZ3RoIHJlbWFpbnMgdGhlIHNhbWUpLgotICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBjZXJ0YWlubHkgbG9zZSBzb21lIGNvbnRlbnQsIGJ1dCB3ZSB3b3VsZCBiZSBidXN5
IGxvb3BpbmcgYW55d2F5LgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBQ
cmV2aW91c0xpbmVFbmQgeyB0cmFpbGluZ1J1bkluZGV4LCB7IH0gfTsKLSAgICAgICAgICAgICAg
ICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSBwcmV2aW91c0xpbmVFbmQtPnJ1bkluZGV4ICsgMTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2VydGFpbmx5IGxvc2Ugc29tZSBjb250ZW50LCBi
dXQgd2Ugd291bGQgYmUgYnVzeSBsb29waW5nIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAg
ICAgbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTGlu
ZUVuZCA9IFByZXZpb3VzTGluZUVuZCB7IHRyYWlsaW5nUnVuSW5kZXgsIHsgfSB9OwotICAgICAg
ICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gcHJldmlvdXNMaW5lRW5kLT5ydW5JbmRleCAr
IDE7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuZWVkc0xheW91dFJhbmdlLnN0YXJ0ID0g
bGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPyBsaW5lQ29udGVudFJhbmdlLmVuZCAt
IDEgOiBsaW5lQ29udGVudFJhbmdlLmVuZDsKKyAgICAgICAgICAgIHByZXZpb3VzTGluZSA9IFBy
ZXZpb3VzTGluZSB7IGxpbmVDb250ZW50UmFuZ2UsIGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50
ID8gbWFrZU9wdGlvbmFsKGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50LT5vdmVyZmxvd0NvbnRl
bnRMZW5ndGgpIDogV1RGOjpudWxsb3B0IH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICAvLyBGbG9hdHMgcHJldmVudGVkIHVzIHBsYWNpbmcgYW55IGNvbnRlbnQg
b24gdGhlIGxpbmUuCi0gICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5ydW5MaXN0LmlzRW1wdHko
KSk7Ci0gICAgICAgIEFTU0VSVChsaW5lQnVpbGRlci5oYXNJbnRydXNpdmVGbG9hdCgpKTsKKyAg
ICAgICAgQVNTRVJUKGxpbmUucnVucygpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChsaW5l
Lmhhc0ludHJ1c2l2ZUZsb2F0KCkpOwogICAgICAgICAvLyBNb3ZlIHRoZSBuZXh0IGxpbmUgYmVs
b3cgdGhlIGludHJ1c2l2ZSBmbG9hdC4KICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBG
bG9hdGluZ0NvbnRleHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS5mbG9hdGlu
Z1N0YXRlKCkgfTsKLSAgICAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRpbmdDb250
ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xheW91dFVuaXQobGluZUNvbnRlbnQu
bGluZUJveC5sb2dpY2FsQm90dG9tKCkpKTsKKyAgICAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRz
ID0gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xheW91dFVu
aXQobGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpKSk7CiAgICAgICAgIEFTU0VSVChmbG9h
dENvbnN0cmFpbnRzLmxlZnQgfHwgZmxvYXRDb25zdHJhaW50cy5yaWdodCk7CiAgICAgICAgIHN0
YXRpYyBhdXRvIGluaWZpdGVQb2ludCA9IFBvaW50SW5Db250ZXh0Um9vdDo6bWF4KCk7CiAgICAg
ICAgIC8vIEluIGNhc2Ugb2YgbGVmdCBhbmQgcmlnaHQgY29uc3RyYWludHMsIHdlIG5lZWQgdG8g
cGljayB0aGUgb25lIHRoYXQncyBjbG9zZXIgdG8gdGhlIGN1cnJlbnQgbGluZS4KQEAgLTI1MSwx
NiArMjQ4LDE2IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KEluCiB7CiAgICAgYXV0byYgaW5saW5l
SXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGF1dG8gbWF4aW11
bUxpbmVXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gbGluZUJ1aWxkZXIg
PSBMaW5lQnVpbGRlciB7ICp0aGlzLCByb290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwgTGluZUJ1
aWxkZXI6OkludHJpbnNpY1NpemluZzo6WWVzIH07CisgICAgYXV0byBsaW5lID0gTGluZUJ1aWxk
ZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJbnRy
aW5zaWNTaXppbmc6OlllcyB9OwogICAgIGF1dG8gbGluZUxheW91dENvbnRleHQgPSBMaW5lTGF5
b3V0Q29udGV4dCB7ICp0aGlzLCByb290KCksIGlubGluZUl0ZW1zIH07CiAgICAgYXV0byBsYXlv
dXRSYW5nZSA9IExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgeyAwICwgaW5saW5l
SXRlbXMuc2l6ZSgpIH07CiAgICAgd2hpbGUgKCFsYXlvdXRSYW5nZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gT25seSB0aGUgaG9yaXp0b25hbCBhdmFpbGFibGUgd2lkdGggaXMgY29uc3RyYWlu
ZWQgd2hlbiBjb21wdXRpbmcgaW50cmluc2ljIHdpZHRoLgotICAgICAgICBsaW5lQnVpbGRlci5p
bml0aWFsaXplKExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyB7IHsgfSwgYXZhaWxhYmxlV2lkdGgs
IHsgfSwgZmFsc2UgfSk7Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29u
dGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVyLCBsYXlvdXRSYW5nZSwgeyB9KTsKLSAgICAgICAg
bGF5b3V0UmFuZ2Uuc3RhcnQgPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgg
KyAxOworICAgICAgICBsaW5lLmluaXRpYWxpemUoTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIHsg
eyB9LCBhdmFpbGFibGVXaWR0aCwgeyB9LCBmYWxzZSB9KTsKKyAgICAgICAgYXV0byBsaW5lQ29u
dGVudCA9IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dElubGluZUNvbnRlbnQobGluZSwgbGF5b3V0
UmFuZ2UsIHsgfSk7CisgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gbGluZUNvbnRlbnQuaW5s
aW5lSXRlbXMuZW5kOwogICAgICAgICAvLyBGSVhNRTogVXNlIGxpbmUgbG9naWNhbCBsZWZ0IGFu
ZCByaWdodCB0byB0YWtlIGZsb2F0cyBpbnRvIGFjY291bnQuCi0gICAgICAgIG1heGltdW1MaW5l
V2lkdGggPSBzdGQ6Om1heChtYXhpbXVtTGluZVdpZHRoLCBsaW5lQ29udGVudC5saW5lQm94Lmxv
Z2ljYWxXaWR0aCgpKTsKKyAgICAgICAgbWF4aW11bUxpbmVXaWR0aCA9IHN0ZDo6bWF4KG1heGlt
dW1MaW5lV2lkdGgsIGxpbmUubGluZUJveCgpLmxvZ2ljYWxXaWR0aCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIG1heGltdW1MaW5lV2lkdGg7CiB9CkBAIC00NjQsMTAgKzQ2MSwxMCBAQCBMaW5lQnVp
bGRlcjo6Q29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzRm9y
TGluZShjb25zdCBIb3JpegogICAgIHJldHVybiBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMgeyB7
IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxUb3AgfSwgbGluZUxvZ2ljYWxSaWdodCAtIGxp
bmVMb2dpY2FsTGVmdCwgaW5pdGlhbExpbmVIZWlnaHQsIGxpbmVJc0NvbnN0cmFpbmVkQnlGbG9h
dCB9OwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNG
b3JMaW5lKGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQs
IGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQordm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBM
aW5lQnVpbGRlciYgbGluZSwgY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50JiBs
aW5lQ29udGVudCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3Ry
YWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0
YXRlKCk7Ci0gICAgYXV0byYgbGluZUJveCA9IGxpbmVDb250ZW50LmxpbmVCb3g7CisgICAgYXV0
byYgbGluZUJveCA9IGxpbmUubGluZUJveCgpOwogCiAgICAgaWYgKCFsaW5lQ29udGVudC5mbG9h
dHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdD
b250ZXh0IHsgcm9vdCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSB9
OwpAQCAtNDc2LDcgKzQ3Myw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERp
c3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgICAgICAg
ICBhdXRvJiBmbG9hdEJveCA9IGZsb2F0Q2FuZGlkYXRlLml0ZW0tPmxheW91dEJveCgpOwogICAg
ICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5Qm94KGZs
b2F0Qm94KTsKICAgICAgICAgICAgIC8vIFNldCBzdGF0aWMgcG9zaXRpb24gZmlyc3QuCi0gICAg
ICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gPSBmbG9hdENhbmRpZGF0ZS5pc0lu
dHJ1c2l2ZSA9PSBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQ6OkZsb2F0OjpJbnRydXNp
dmU6OlllcyA/IGxpbmVCb3gubG9naWNhbFRvcCgpIDogbGluZUJveC5sb2dpY2FsQm90dG9tKCk7
CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gPSBmbG9hdENhbmRpZGF0
ZS5pc0ludHJ1c2l2ZSA/IGxpbmVCb3gubG9naWNhbFRvcCgpIDogbGluZUJveC5sb2dpY2FsQm90
dG9tKCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoeyBsaW5lQm94LmxvZ2lj
YWxMZWZ0KCksIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gfSk7CiAgICAgICAgICAgICAvLyBGbG9h
dCBpdC4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChmbG9hdGluZ0NvbnRleHQu
cG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSk7CkBAIC00
OTQsNyArNDkxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJv
eGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICBhdXRvIGxpbmVJbmRl
eCA9IGlubGluZUNvbnRlbnQubGluZUJveGVzLnNpemUoKTsKICAgICBhdXRvIGxpbmVJbmtPdmVy
ZmxvdyA9IGxpbmVCb3guc2Nyb2xsYWJsZU92ZXJmbG93KCk7CiAgICAgLy8gQ29tcHV0ZSBib3gg
ZmluYWwgZ2VvbWV0cnkuCi0gICAgYXV0byYgbGluZVJ1bnMgPSBsaW5lQ29udGVudC5ydW5MaXN0
OworICAgIGF1dG8mIGxpbmVSdW5zID0gbGluZS5ydW5zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1
dG8mIGxpbmVSdW4gPSBsaW5lUnVucy5hdChpbmRleCk7CiAgICAgICAgIGF1dG8mIGxvZ2ljYWxS
ZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKaW5kZXggOWFmZWNmMGI0YWFjYTBlODI3N2IyNmFiMjE0YjViZWU2ODdlNjNiNy4uNmNkMjA4
MWRjY2Q3NzhlMzE4Mjk2NTk3NjZlNDRhNWI5OGE3MTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbGxl
Y3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKICAgICBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMg
Y29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIElubGluZUxh
eW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApOwotICAgIHZvaWQgc2V0RGlzcGxheUJveGVzRm9yTGlu
ZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmKTsKKyAgICB2b2lkIHNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGlu
ZUJ1aWxkZXImLCBjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKIAogICAgIGNvbnN0IElubGluZUZvcm1hdHRp
bmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggMjdmNGU2NjA1ZDU3MDlmZjUxZDFjYzA5MGIx
Y2JkMDkzMTZlOWY0Yi4uMTg4ZTg0ZmI5YWRmMmMzYjFkODVhNGRlOGE5OGM5ODI5MTBlMmIxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtODYsNiArODYsOSBAQCB2b2lkIExpbmVCdWls
ZGVyOjppbml0aWFsaXplKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKICAgICBtX2xp
bmVCb3ggPSBMaW5lQm94IHsgbGluZVJlY3QsIExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJp
Y3Mocm9vdCgpLnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgaW5pdGlhbExpbmVIZWlnaHQpIH07CiAK
ICAgICByZXNldENvbnRlbnQoKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faXNDbG9zZWQg
PSBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIExpbmVCdWlsZGVyOjpyZXNldENvbnRlbnQoKQpA
QCAtOTcsMTQgKzEwMCwxNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpyZXNldENvbnRlbnQoKQogICAg
IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCA9IHsg
fTsKIH0KIAotTGluZUJ1aWxkZXI6OlJ1bkxpc3QgTGluZUJ1aWxkZXI6OmNsb3NlKElzTGFzdExp
bmVXaXRoSW5saW5lQ29udGVudCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpCit2b2lkIExp
bmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50KQogeworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9pc0Nsb3NlZCA9
IHRydWU7CisjZW5kaWYKICAgICAvLyAxLiBSZW1vdmUgdHJpbW1hYmxlIHRyYWlsaW5nIGNvbnRl
bnQuCiAgICAgLy8gMi4gQWxpZ24gbWVyZ2VkIHJ1bnMgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jp
em9udGFsbHkuCiAgICAgcmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CiAgICAgdmlz
dWFsbHlDb2xsYXBzZVByZVdyYXBPdmVyZmxvd0NvbnRlbnQoKTsKICAgICBpZiAobV9pc0ludHJp
bnNpY1NpemluZykKLSAgICAgICAgcmV0dXJuIFdURk1vdmUobV9ydW5zKTsKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBoYW5naW5nQ29udGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVudChp
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOwogICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhl
aWdodCgpOwpAQCAtMTE0LDcgKzEyMCw2IEBAIExpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWls
ZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpCiAgICAg
fQogICAgIGFsaWduQ29udGVudFZlcnRpY2FsbHkoKTsKICAgICBhbGlnbkhvcml6b250YWxseSho
YW5naW5nQ29udGVudCwgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KTsKLSAgICByZXR1cm4g
V1RGTW92ZShtX3J1bnMpOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRWZXJ0
aWNhbGx5KCkKQEAgLTM5Myw2ICszOTgsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjptb3ZlTG9naWNh
bFJpZ2h0KElubGluZUxheW91dFVuaXQgZGVsdGEpCiAKIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVu
ZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCkKIHsKKyAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAgIGFwcGVuZFdpdGgoaW5saW5l
SXRlbSwgeyBsb2dpY2FsV2lkdGgsIGZhbHNlIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaApp
bmRleCBkYjNlYjg5N2MyZDYxODUyNTI1YmYzOGY1ZTk4ZjJlOTc0YTZmMjMyLi40MzJjM2NhNzZk
MmNjMjA0NTFmZTYxMDZmMWU4Nzc2NDYyZGM0YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAg
LTU1LDYgKzU1LDEwIEBAIHB1YmxpYzoKICAgICB+TGluZUJ1aWxkZXIoKTsKIAogICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBDb25zdHJhaW50cyYpOworCisgICAgZW51bSBjbGFzcyBJc0xhc3RM
aW5lV2l0aElubGluZUNvbnRlbnQgeyBObywgWWVzIH07CisgICAgdm9pZCBjbG9zZShJc0xhc3RM
aW5lV2l0aElubGluZUNvbnRlbnQpOworCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgSW5saW5lSXRl
bSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVuZFBhcnRp
YWxUcmFpbGluZ1RleHRJdGVtKGNvbnN0IElubGluZVRleHRJdGVtJiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgsIGJvb2wgbmVlZHNIeXBlbik7CiAgICAgdm9pZCByZXNldENvbnRlbnQo
KTsKQEAgLTE0MCw4ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIG1fZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudCB7IDAgfTsKICAgICB9OwogICAgIHVzaW5nIFJ1bkxpc3QgPSBW
ZWN0b3I8UnVuLCAxMD47Ci0gICAgZW51bSBjbGFzcyBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQgeyBObywgWWVzIH07Ci0gICAgUnVuTGlzdCBjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNv
bnRlbnQgPSBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vKTsKKyAgICBjb25zdCBSdW5M
aXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9CiAKICAgICBzdGF0aWMgQXNjZW50
QW5kRGVzY2VudCBoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmLCBJbmxpbmVM
YXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KTsKIApAQCAtMjIyLDYgKzIyNSw5IEBAIHByaXZh
dGU6CiAgICAgTGluZUJveCBtX2xpbmVCb3g7CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9saW5lSXNW
aXN1YWxseUVtcHR5QmVmb3JlVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50OwogICAgIGJvb2wgbV9z
aG91bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcgeyBmYWxzZSB9OworI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogaW5s
aW5lIHZvaWQgTGluZUJ1aWxkZXI6OlRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDo6cmVzZXQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxh
eW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZUxheW91dENvbnRleHQuY3BwCmluZGV4IDViZjc3MThiYzk0NjQ2ZWJmZjMxY2RmMTk5ZDc1
NGM5ZjM1MDNlYzEuLmUzZTA0Yzc4ZDc5MTY3YTQ1N2M3NTk1YzBiMGMwOWIzYWMxMTUxM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlv
dXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCBMaW5lTGF5b3V0Q29u
dGV4dDo6TGluZUxheW91dENvbnRleHQoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlu
bGluZUZvcm1hdAogewogfQogCi1MaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxh
eW91dENvbnRleHQ6OmxheW91dExpbmUoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IElubGluZUl0
ZW1SYW5nZSBsYXlvdXRSYW5nZSwgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5nQ29u
dGVudExlbmd0aCkKK0xpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0Q29u
dGV4dDo6bGF5b3V0SW5saW5lQ29udGVudChMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgSW5saW5l
SXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5n
Q29udGVudExlbmd0aCkKIHsKICAgICBBU1NFUlQobV9mbG9hdHMuaXNFbXB0eSgpKTsKICAgICBt
X3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0gPSB7IH07CkBAIC0zMjUsMjcgKzMyNSwxNiBAQCBMaW5l
TGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmxheW91dExpbmUo
TGluZUJ1aWxkZXImIGxpbmUsCiAgICAgcmV0dXJuIGNsb3NlKGxpbmUsIGxheW91dFJhbmdlLCBj
b21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIHsgfSk7CiB9CiAKLUxpbmVMYXlvdXRDb250ZXh0OjpM
aW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6Y2xvc2UoTGluZUJ1aWxkZXImIGxpbmUsIGNv
bnN0IElubGluZUl0ZW1SYW5nZSBsYXlvdXRSYW5nZSwgdW5zaWduZWQgY29tbWl0dGVkSW5saW5l
SXRlbUNvdW50LCBPcHRpb25hbDxMaW5lQ29udGVudDo6UGFydGlhbENvbnRlbnQ+IHBhcnRpYWxD
b250ZW50KQorTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0
OjpjbG9zZShMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRS
YW5nZSwgdW5zaWduZWQgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCBPcHRpb25hbDxMaW5lQ29u
dGVudDo6UGFydGlhbENvbnRlbnQ+IHBhcnRpYWxDb250ZW50KQogewogICAgIEFTU0VSVChjb21t
aXR0ZWRJbmxpbmVJdGVtQ291bnQgfHwgIW1fZmxvYXRzLmlzRW1wdHkoKSB8fCBsaW5lLmhhc0lu
dHJ1c2l2ZUZsb2F0KCkpOwotICAgIGlmICghY29tbWl0dGVkSW5saW5lSXRlbUNvdW50KSB7Ci0g
ICAgICAgIGlmIChtX2Zsb2F0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIFdlIGRpZG4n
dCBtYW5hZ2UgdG8gYWRkIGEgcnVuIG9yIGEgZmxvYXQgYXQgdGhpcyB2ZXJ0aWNhbCBwb3NpdGlv
bi4KLSAgICAgICAgICAgIHJldHVybiBMaW5lQ29udGVudCB7IHsgfSwgeyB9LCBXVEZNb3ZlKG1f
ZmxvYXRzKSwgbGluZS5jbG9zZSgpLCBsaW5lLmxpbmVCb3goKSB9OwotICAgICAgICB9Ci0gICAg
ICAgIHVuc2lnbmVkIHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ID0gbGF5b3V0UmFuZ2Uuc3RhcnQg
KyBtX2Zsb2F0cy5zaXplKCkgLSAxOwotICAgICAgICByZXR1cm4gTGluZUNvbnRlbnQgeyB0cmFp
bGluZ0lubGluZUl0ZW1JbmRleCwgeyB9LCBXVEZNb3ZlKG1fZmxvYXRzKSwgbGluZS5jbG9zZSgp
LCBsaW5lLmxpbmVCb3goKSB9OwotICAgIH0KLSAgICAvLyBBZGp1c3QgaHlwaGVuYXRlZCBsaW5l
IGNvdW50LgotICAgIGlmIChwYXJ0aWFsQ29udGVudCAmJiBwYXJ0aWFsQ29udGVudC0+dHJhaWxp
bmdDb250ZW50SGFzSHlwaGVuKQotICAgICAgICArK21fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5l
Q291bnQ7Ci0gICAgZWxzZQotICAgICAgICBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNvdW50
ID0gMDsKLSAgICBBU1NFUlQoY29tbWl0dGVkSW5saW5lSXRlbUNvdW50KTsKLSAgICB1bnNpZ25l
ZCB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA9IGxheW91dFJhbmdlLnN0YXJ0ICsgY29tbWl0dGVk
SW5saW5lSXRlbUNvdW50ICsgbV9mbG9hdHMuc2l6ZSgpIC0gMTsKLSAgICBBU1NFUlQodHJhaWxp
bmdJbmxpbmVJdGVtSW5kZXggPCBsYXlvdXRSYW5nZS5lbmQpOworICAgIGF1dG8gbnVtYmVyT2ZD
b21taXR0ZWRJdGVtcyA9IGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCArIG1fZmxvYXRzLnNpemUo
KTsKKyAgICBhdXRvIHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ID0gbGF5b3V0UmFuZ2Uuc3RhcnQg
KyBudW1iZXJPZkNvbW1pdHRlZEl0ZW1zIC0gMTsKKyAgICBhdXRvIGxpbmVSYW5nZSA9IElubGlu
ZUl0ZW1SYW5nZSB7IGxheW91dFJhbmdlLnN0YXJ0LCB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCAr
IDEgfTsKKyAgICBBU1NFUlQobGluZVJhbmdlLmVuZCA8PSBsYXlvdXRSYW5nZS5lbmQpOworCiAg
ICAgYXV0byBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgPSBbJl0gewotICAgICAgICBpZiAo
dHJhaWxpbmdJbmxpbmVJdGVtSW5kZXggPT0gbGF5b3V0UmFuZ2UuZW5kIC0gMSkKKyAgICAgICAg
aWYgKGxpbmVSYW5nZS5lbmQgPT0gbGF5b3V0UmFuZ2UuZW5kKQogICAgICAgICAgICAgcmV0dXJu
IExpbmVCdWlsZGVyOjpJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6OlllczsKICAgICAgICAg
aWYgKHBhcnRpYWxDb250ZW50KQogICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpJc0xh
c3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vOwpAQCAtMzU4LDEwICszNDcsMTMgQEAgTGluZUxh
eW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpjbG9zZShMaW5lQnVp
bGRlciYgbGluZSwgY29uc3QKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybiBMaW5lQnVpbGRlcjo6SXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpObzsKICAg
ICB9KCk7Ci0gICAgcmV0dXJuIExpbmVDb250ZW50IHsgdHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgs
IHBhcnRpYWxDb250ZW50LCBXVEZNb3ZlKG1fZmxvYXRzKSwgbGluZS5jbG9zZShpc0xhc3RMaW5l
V2l0aElubGluZUNvbnRlbnQpLCBsaW5lLmxpbmVCb3goKSB9OworICAgIGxpbmUuY2xvc2UoaXNM
YXN0TGluZVdpdGhJbmxpbmVDb250ZW50KTsKKyAgICAvLyBBZGp1c3QgaHlwaGVuYXRlZCBsaW5l
IGNvdW50LgorICAgIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291bnQgPSBwYXJ0aWFsQ29u
dGVudCAmJiBwYXJ0aWFsQ29udGVudC0+dHJhaWxpbmdDb250ZW50SGFzSHlwaGVuID8gbV9zdWNj
ZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCArIDEgOiAwOworICAgIHJldHVybiBMaW5lQ29udGVu
dCB7IHBhcnRpYWxDb250ZW50LCBsaW5lUmFuZ2UsIFdURk1vdmUobV9mbG9hdHMpIH07CiB9CiAK
LXZvaWQgTGluZUxheW91dENvbnRleHQ6Om5leHRDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRl
JiBsaW5lQ2FuZGlkYXRlLCB1bnNpZ25lZCBjdXJyZW50SW5saW5lSXRlbUluZGV4LCBjb25zdCBJ
bmxpbmVJdGVtUmFuZ2UgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVh
ZGluZ0NvbnRlbnRMZW5ndGgsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlTGluZVdpZHRoLCBJ
bmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpCit2b2lkIExpbmVMYXlvdXRDb250
ZXh0OjpuZXh0Q29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgdW5z
aWduZWQgY3VycmVudElubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlv
dXRSYW5nZSwgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwg
SW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVMaW5lV2lkdGgsIElubGluZUxheW91dFVuaXQgY3Vy
cmVudExvZ2ljYWxSaWdodCkKIHsKICAgICBBU1NFUlQoY3VycmVudElubGluZUl0ZW1JbmRleCA8
IGxheW91dFJhbmdlLmVuZCk7CiAgICAgbGluZUNhbmRpZGF0ZS5yZXNldCgpOwpAQCAtNDE3LDcg
KzQwOSw3IEBAIHZvaWQgTGluZUxheW91dENvbnRleHQ6OmNvbW1pdEZsb2F0cyhMaW5lQnVpbGRl
ciYgbGluZSwgY29uc3QgTGluZUNhbmRpZGF0ZSYgbGluCiAgICAgZm9yIChhdXRvJiBmbG9hdENh
bmRpZGF0ZSA6IGZsb2F0Q29udGVudC5saXN0KCkpIHsKICAgICAgICAgaWYgKCFmbG9hdENhbmRp
ZGF0ZS5pc0ludHJ1c2l2ZSAmJiBjb21taXRJbnRydXNpdmVPbmx5ID09IENvbW1pdEludHJ1c2l2
ZUZsb2F0c09ubHk6OlllcykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2Zsb2F0
cy5hcHBlbmQoeyBmbG9hdENhbmRpZGF0ZS5pc0ludHJ1c2l2ZT8gTGluZUNvbnRlbnQ6OkZsb2F0
OjpJbnRydXNpdmU6OlllcyA6IExpbmVDb250ZW50OjpGbG9hdDo6SW50cnVzaXZlOjpObywgZmxv
YXRDYW5kaWRhdGUuaXRlbSB9KTsKKyAgICAgICAgbV9mbG9hdHMuYXBwZW5kKHsgZmxvYXRDYW5k
aWRhdGUuaXNJbnRydXNpdmUsIGZsb2F0Q2FuZGlkYXRlLml0ZW0gfSk7CiAgICAgICAgIGlmIChm
bG9hdENhbmRpZGF0ZS5pc0ludHJ1c2l2ZSkgewogICAgICAgICAgICAgaGFzSW50cnVzaXZlRmxv
YXQgPSB0cnVlOwogICAgICAgICAgICAgLy8gVGhpcyBmbG9hdCBpcyBpbnRydXNpdmUgYW5kIGl0
IHNocmlua3MgdGhlIGN1cnJlbnQgbGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCmluZGV4IDMxZmY4
NmJmZDI0MzNhMDA0Y2UyMDU1NzBkMjg5ODcyNTVhNmZjMWUuLjM0YjhmY2I5ZGM0YWY1N2NmMjg2
ZGJhZTZjMDk4ZTI2Y2NjMzhjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaApAQCAtMzksMzMgKzM5
LDMwIEBAIGNsYXNzIExpbmVMYXlvdXRDb250ZXh0IHsKIHB1YmxpYzoKICAgICBMaW5lTGF5b3V0
Q29udGV4dChjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IENvbnRhaW5lckJv
eCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBJbmxpbmVJdGVtcyYpOwogCisgICAgc3Ry
dWN0IElubGluZUl0ZW1SYW5nZSB7CisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXJ0ID09IGVuZDsgfQorICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IGVuZCAtIHN0YXJ0OyB9CisgICAgICAgIHNpemVfdCBzdGFydCB7IDAgfTsKKyAgICAgICAgc2l6
ZV90IGVuZCB7IDAgfTsKKyAgICB9OwogICAgIHN0cnVjdCBMaW5lQ29udGVudCB7CiAgICAgICAg
IHN0cnVjdCBQYXJ0aWFsQ29udGVudCB7CiAgICAgICAgICAgICBib29sIHRyYWlsaW5nQ29udGVu
dEhhc0h5cGhlbiB7IGZhbHNlIH07CiAgICAgICAgICAgICB1bnNpZ25lZCBvdmVyZmxvd0NvbnRl
bnRMZW5ndGggeyAwIH07CiAgICAgICAgIH07Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0
cmFpbGluZ0lubGluZUl0ZW1JbmRleDsKICAgICAgICAgT3B0aW9uYWw8UGFydGlhbENvbnRlbnQ+
IHBhcnRpYWxDb250ZW50OworICAgICAgICBJbmxpbmVJdGVtUmFuZ2UgaW5saW5lSXRlbXM7CiAg
ICAgICAgIHN0cnVjdCBGbG9hdCB7Ci0gICAgICAgICAgICBlbnVtIGNsYXNzIEludHJ1c2l2ZSB7
IE5vLCBZZXMgfTsKLSAgICAgICAgICAgIEludHJ1c2l2ZSBpc0ludHJ1c2l2ZSB7IEludHJ1c2l2
ZTo6WWVzIH07CisgICAgICAgICAgICBib29sIGlzSW50cnVzaXZlIHsgdHJ1ZSB9OwogICAgICAg
ICAgICAgY29uc3QgSW5saW5lSXRlbSogaXRlbSB7IG51bGxwdHIgfTsKICAgICAgICAgfTsKICAg
ICAgICAgdXNpbmcgRmxvYXRMaXN0ID0gVmVjdG9yPEZsb2F0PjsKICAgICAgICAgRmxvYXRMaXN0
IGZsb2F0czsKLSAgICAgICAgY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3QgcnVuTGlzdDsKLSAg
ICAgICAgY29uc3QgTGluZUJveCBsaW5lQm94OwotICAgIH07Ci0gICAgc3RydWN0IElubGluZUl0
ZW1SYW5nZSB7Ci0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09
IGVuZDsgfQotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVuZCAtIHN0YXJ0
OyB9Ci0gICAgICAgIHNpemVfdCBzdGFydCB7IDAgfTsKLSAgICAgICAgc2l6ZV90IGVuZCB7IDAg
fTsKICAgICB9OwotICAgIExpbmVDb250ZW50IGxheW91dExpbmUoTGluZUJ1aWxkZXImLCBjb25z
dCBJbmxpbmVJdGVtUmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRl
bnRMZW5ndGgpOworICAgIExpbmVDb250ZW50IGxheW91dElubGluZUNvbnRlbnQoTGluZUJ1aWxk
ZXImLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExl
YWRpbmdDb250ZW50TGVuZ3RoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5leHRDb250ZW50Rm9y
TGluZShMaW5lQ2FuZGlkYXRlJiwgdW5zaWduZWQgaW5saW5lSXRlbUluZGV4LCBjb25zdCBJbmxp
bmVJdGVtUmFuZ2UgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0
aCwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVMaW5lV2lkdGgsIElubGluZUxheW91dFVuaXQg
Y3VycmVudExvZ2ljYWxSaWdodCk7CisgICAgdm9pZCBuZXh0Q29udGVudEZvckxpbmUoTGluZUNh
bmRpZGF0ZSYsIHVuc2lnbmVkIGlubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdl
JiBsYXlvdXRSYW5nZSwgT3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoLCBJbmxpbmVM
YXlvdXRVbml0IGF2YWlsYWJsZUxpbmVXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9n
aWNhbFJpZ2h0KTsKICAgICBzdHJ1Y3QgUmVzdWx0IHsKICAgICAgICAgTGluZUJyZWFrZXI6Oklz
RW5kT2ZMaW5lIGlzRW5kT2ZMaW5lIHsgTGluZUJyZWFrZXI6OklzRW5kT2ZMaW5lOjpObyB9Owog
ICAgICAgICBzdHJ1Y3QgQ29tbWl0dGVkQ29udGVudENvdW50IHsKQEAgLTgwLDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICBSZXN1bHQgaGFuZGxlRmxvYXRzQW5kSW5saW5lQ29udGVudChMaW5lQnJl
YWtlciYsIExpbmVCdWlsZGVyJiwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwg
Y29uc3QgTGluZUNhbmRpZGF0ZSYpOwogICAgIHNpemVfdCByZWJ1aWxkTGluZShMaW5lQnVpbGRl
ciYsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UpOwogICAgIHZvaWQgY29tbWl0
UGFydGlhbENvbnRlbnQoTGluZUJ1aWxkZXImLCBjb25zdCBMaW5lQnJlYWtlcjo6UnVuTGlzdCYs
IGNvbnN0IExpbmVCcmVha2VyOjpSZXN1bHQ6OlBhcnRpYWxUcmFpbGluZ0NvbnRlbnQmKTsKLSAg
ICBMaW5lQ29udGVudCBjbG9zZShMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1SYW5nZSBs
YXlvdXRSYW5nZSwgdW5zaWduZWQgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCBPcHRpb25hbDxM
aW5lQ29udGVudDo6UGFydGlhbENvbnRlbnQ+KTsKKyAgICBMaW5lQ29udGVudCBjbG9zZShMaW5l
QnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIHVuc2lnbmVkIGNv
bW1pdHRlZElubGluZUl0ZW1Db3VudCwgT3B0aW9uYWw8TGluZUNvbnRlbnQ6OlBhcnRpYWxDb250
ZW50Pik7CiAKICAgICBJbmxpbmVMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0aChjb25zdCBJbmxp
bmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405238</attachid>
            <date>2020-07-25 20:06:16 -0700</date>
            <delta_ts>2020-08-25 10:45:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214790-20200725200615.patch</filename>
            <type>text/plain</type>
            <size>26089</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMyOTg2NmZmM2M2MjBi
ZGY4OGZlMmU2NzNlMjkxYmIyMmM0ODAxOS4uYTg1Mzc4YjU5NmI3ODlhNTFiYTMzZjgzMjU3YzI2
NzRlNmM2ODUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA3LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBEbyBub3Qg
bW92ZSB0aGUgcnVucyBvdXQgb2YgdGhlIExpbmVCdWlsZGVyIHdoaWxlIGNsb3NpbmcgdGhlIGxp
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc5
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsb3Np
bmcgdGhlIGxpbmUgc2hvdWxkIG5vdCBtZWFuIHRoYXQgdGhlIExpbmVCdWlsZGVyIGRvZXMgbm90
IGhhdmUgdGhlIGxpbmUgcnVucyBhbnltb3JlLgorICAgICAgICAoVGhpcyBwYXRjaCBhbHNvIHJl
bW92ZXMgc29tZSBjb21wbGV4aXR5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBsaW5lIGNvbnRlbnQu
KQorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRE
aXNwbGF5Qm94ZXNGb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0SW5s
aW5lQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0
OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0Ojpu
ZXh0Q29udGVudEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0
Q29udGV4dDo6Y29tbWl0RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxh
eW91dENvbnRleHQ6OmxheW91dExpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2U6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJh
bmdlOjpzaXplIGNvbnN0KToKKwogMjAyMC0wNy0yNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gVGhlIGluaXRpYWwgYWxpZ25tZW50IGJhc2Vs
aW5lIGlzIGFsd2F5cyBzZXQgYnkgdGhlIHN0cnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKaW5kZXggZmU4MjdjMDE5MTU3MjM0MDg3NjM1NGE2NmVmOTM4NGUxMTdkYzdkMy4u
MzNjZjRiNzcxMDk4MmM1OTY4ZTVjN2M1NTgwOTlhMWE5NDZkODc4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTMxLDU2ICsxMzEsNTMgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYg
aW52YWxpZGF0aW8KICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0
aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lTGF5b3V0
Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCBjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVMYXlvdXRDb250ZXh0
OjpJbmxpbmVJdGVtUmFuZ2UgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgQ29uc3RyYWludHNGb3JJ
bkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBhdXRvIGxpbmVMb2dpY2FsVG9wID0g
Y29uc3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKLSAgICBzdHJ1Y3QgUHJldmlvdXNMaW5l
RW5kIHsKLSAgICAgICAgdW5zaWduZWQgcnVuSW5kZXg7CisgICAgc3RydWN0IFByZXZpb3VzTGlu
ZSB7CisgICAgICAgIExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgcmFuZ2U7CiAg
ICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0NvbnRlbnRMZW5ndGg7CiAgICAgfTsK
LSAgICBPcHRpb25hbDxQcmV2aW91c0xpbmVFbmQ+IHByZXZpb3VzTGluZUVuZDsKLSAgICBhdXRv
IGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFs
aWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6Ok5vIH07CisgICAgT3B0aW9uYWw8
UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmU7CisgICAgYXV0byBsaW5lID0gTGluZUJ1aWxkZXIg
eyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5z
aWNTaXppbmc6Ok5vIH07CiAgICAgYXV0byBsaW5lTGF5b3V0Q29udGV4dCA9IExpbmVMYXlvdXRD
b250ZXh0IHsgKnRoaXMsIHJvb3QoKSwgaW5saW5lSXRlbXMgfTsKIAotICAgIHdoaWxlICghbGF5
b3V0UmFuZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxpbmVCdWlsZGVyLmluaXRpYWxpemUoY29u
c3RyYWludHNGb3JMaW5lKGNvbnN0cmFpbnRzLmhvcml6b250YWwsIGxpbmVMb2dpY2FsVG9wKSk7
Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlvdXRMaW5l
KGxpbmVCdWlsZGVyLCBsYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lRW5kID8gcHJldmlvdXNMaW5l
RW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBXVEY6Om51bGxvcHQpOwotICAgICAgICBzZXRE
aXNwbGF5Qm94ZXNGb3JMaW5lKGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsK
LQotICAgICAgICBpZiAobGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgpIHsKLSAg
ICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gbGluZUNvbnRlbnQubGluZUJveC5sb2dpY2FsQm90
dG9tKCk7CisgICAgd2hpbGUgKCFuZWVkc0xheW91dFJhbmdlLmlzRW1wdHkoKSkgeworICAgICAg
ICBsaW5lLmluaXRpYWxpemUoY29uc3RyYWludHNGb3JMaW5lKGNvbnN0cmFpbnRzLmhvcml6b250
YWwsIGxpbmVMb2dpY2FsVG9wKSk7CisgICAgICAgIC8vIFR1cm4gcHJldmlvdXMgbGluZSdzIG92
ZXJmbG93IGNvbnRlbnQgbGVuZ3RoIGludG8gdGhlIG5leHQgbGluZSdzIGxlYWRpbmcgY29udGVu
dCBwYXJ0aWFsIGxlbmd0aC4KKyAgICAgICAgLy8gInNwWzwtbGluZSBicmVhay0+XWxpdF9jb250
ZW50IiAtPiBvdmVyZmxvdyBsZW5ndGg6IDExIC0+IGxlYWRpbmcgcGFydGlhbCBjb250ZW50IGxl
bmd0aDogMTEuCisgICAgICAgIGF1dG8gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0gcHJl
dmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlv
dXRJbmxpbmVDb250ZW50KGxpbmUsIG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29u
dGVudExlbmd0aCk7CisgICAgICAgIHNldERpc3BsYXlCb3hlc0ZvckxpbmUobGluZSwgbGluZUNv
bnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworCisgICAgICAgIGF1dG8gbGluZUNvbnRl
bnRSYW5nZSA9IGxpbmVDb250ZW50LmlubGluZUl0ZW1zOworICAgICAgICBpZiAoIWxpbmVDb250
ZW50UmFuZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBBU1NFUlQobmVlZHNMYXlvdXRSYW5n
ZS5zdGFydCA8IGxpbmVDb250ZW50UmFuZ2UuZW5kKTsKKyAgICAgICAgICAgIGxpbmVMb2dpY2Fs
VG9wID0gbGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpOwogICAgICAgICAgICAgLy8gV2hl
biB0aGUgdHJhaWxpbmcgY29udGVudCBpcyBwYXJ0aWFsLCB3ZSBuZWVkIHRvIHJldXNlIHRoZSBs
YXN0IElubGluZVRleHRJdGVtLgotICAgICAgICAgICAgYXV0byB0cmFpbGluZ1J1bkluZGV4ID0g
KmxpbmVDb250ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4OwotICAgICAgICAgICAgaWYgKGxp
bmVDb250ZW50LnBhcnRpYWxDb250ZW50KSB7CisgICAgICAgICAgICBhdXRvIGxhc3RJbmxpbmVJ
dGVtTmVlZHNQYXJ0aWFsTGF5b3V0ID0gbGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQuaGFzVmFs
dWUoKTsKKyAgICAgICAgICAgIGlmIChsYXN0SW5saW5lSXRlbU5lZWRzUGFydGlhbExheW91dCkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+b3Zl
cmZsb3dDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAvLyBUdXJuIHByZXZpb3VzIGxp
bmUncyBvdmVyZmxvdyBjb250ZW50IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBsZWFkaW5n
IGNvbnRlbnQgcGFydGlhbCBsZW5ndGguCi0gICAgICAgICAgICAgICAgLy8gInNwPC0+bGl0Y29u
dGVudCIgLT4gb3ZlcmZsb3cgbGVuZ3RoOiAxMCAtPiBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBs
ZW5ndGg6IDEwLgotICAgICAgICAgICAgICAgIGF1dG8gaXNOZXdJbmxpbmVDb250ZW50ID0gIXBy
ZXZpb3VzTGluZUVuZAotICAgICAgICAgICAgICAgICAgICB8fCB0cmFpbGluZ1J1bkluZGV4ID4g
cHJldmlvdXNMaW5lRW5kLT5ydW5JbmRleAotICAgICAgICAgICAgICAgICAgICB8fCAocHJldmlv
dXNMaW5lRW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggJiYgKnByZXZpb3VzTGluZUVuZC0+b3Zl
cmZsb3dDb250ZW50TGVuZ3RoID4gbGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQtPm92ZXJmbG93
Q29udGVudExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTmV3SW5saW5lQ29udGVudCkg
ewotICAgICAgICAgICAgICAgICAgICAvLyBTdHJhcnQgdGhlIG5leHQgbGluZSB3aXRoIHRoZSBz
YW1lLCBwYXJ0aWFsIHRyYWlsaW5nIElubGluZVRleHRJdGVtLgotICAgICAgICAgICAgICAgICAg
ICBwcmV2aW91c0xpbmVFbmQgPSBQcmV2aW91c0xpbmVFbmQgeyB0cmFpbGluZ1J1bkluZGV4LCBs
aW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoIH07Ci0gICAg
ICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gcHJldmlvdXNMaW5lRW5kLT5ydW5J
bmRleDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gbGlu
ZUxheW91dEhhc0FkdmFuY2VkID0gIXByZXZpb3VzTGluZQorICAgICAgICAgICAgICAgICAgICB8
fCBsaW5lQ29udGVudFJhbmdlLmVuZCA+IHByZXZpb3VzTGluZS0+cmFuZ2UuZW5kCisgICAgICAg
ICAgICAgICAgICAgIHx8IChwcmV2aW91c0xpbmUtPm92ZXJmbG93Q29udGVudExlbmd0aCAmJiAq
cHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggPiBsaW5lQ29udGVudC5wYXJ0aWFs
Q29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxp
bmVMYXlvdXRIYXNBZHZhbmNlZCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBvdmVyIHRvIHRoZSBuZXh0IHJ1
biBpZiB3ZSBhcmUgc3R1Y2sgb24gdGhpcyBwYXJ0aWFsIGNvbnRlbnQgKHdoZW4gdGhlIG92ZXJm
bG93IGNvbnRlbnQgbGVuZ3RoIHJlbWFpbnMgdGhlIHNhbWUpLgotICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBjZXJ0YWlubHkgbG9zZSBzb21lIGNvbnRlbnQsIGJ1dCB3ZSB3b3VsZCBiZSBidXN5
IGxvb3BpbmcgYW55d2F5LgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBQ
cmV2aW91c0xpbmVFbmQgeyB0cmFpbGluZ1J1bkluZGV4LCB7IH0gfTsKLSAgICAgICAgICAgICAg
ICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSBwcmV2aW91c0xpbmVFbmQtPnJ1bkluZGV4ICsgMTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2VydGFpbmx5IGxvc2Ugc29tZSBjb250ZW50LCBi
dXQgd2Ugd291bGQgYmUgYnVzeSBsb29waW5nIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAg
ICAgbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTGlu
ZUVuZCA9IFByZXZpb3VzTGluZUVuZCB7IHRyYWlsaW5nUnVuSW5kZXgsIHsgfSB9OwotICAgICAg
ICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gcHJldmlvdXNMaW5lRW5kLT5ydW5JbmRleCAr
IDE7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuZWVkc0xheW91dFJhbmdlLnN0YXJ0ID0g
bGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPyBsaW5lQ29udGVudFJhbmdlLmVuZCAt
IDEgOiBsaW5lQ29udGVudFJhbmdlLmVuZDsKKyAgICAgICAgICAgIHByZXZpb3VzTGluZSA9IFBy
ZXZpb3VzTGluZSB7IGxpbmVDb250ZW50UmFuZ2UsIGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50
ID8gbWFrZU9wdGlvbmFsKGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50LT5vdmVyZmxvd0NvbnRl
bnRMZW5ndGgpIDogV1RGOjpudWxsb3B0IH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICAvLyBGbG9hdHMgcHJldmVudGVkIHVzIHBsYWNpbmcgYW55IGNvbnRlbnQg
b24gdGhlIGxpbmUuCi0gICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5ydW5MaXN0LmlzRW1wdHko
KSk7Ci0gICAgICAgIEFTU0VSVChsaW5lQnVpbGRlci5oYXNJbnRydXNpdmVGbG9hdCgpKTsKKyAg
ICAgICAgQVNTRVJUKGxpbmUucnVucygpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChsaW5l
Lmhhc0ludHJ1c2l2ZUZsb2F0KCkpOwogICAgICAgICAvLyBNb3ZlIHRoZSBuZXh0IGxpbmUgYmVs
b3cgdGhlIGludHJ1c2l2ZSBmbG9hdC4KICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBG
bG9hdGluZ0NvbnRleHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS5mbG9hdGlu
Z1N0YXRlKCkgfTsKLSAgICAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRpbmdDb250
ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xheW91dFVuaXQobGluZUNvbnRlbnQu
bGluZUJveC5sb2dpY2FsQm90dG9tKCkpKTsKKyAgICAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRz
ID0gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xheW91dFVu
aXQobGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpKSk7CiAgICAgICAgIEFTU0VSVChmbG9h
dENvbnN0cmFpbnRzLmxlZnQgfHwgZmxvYXRDb25zdHJhaW50cy5yaWdodCk7CiAgICAgICAgIHN0
YXRpYyBhdXRvIGluaWZpdGVQb2ludCA9IFBvaW50SW5Db250ZXh0Um9vdDo6bWF4KCk7CiAgICAg
ICAgIC8vIEluIGNhc2Ugb2YgbGVmdCBhbmQgcmlnaHQgY29uc3RyYWludHMsIHdlIG5lZWQgdG8g
cGljayB0aGUgb25lIHRoYXQncyBjbG9zZXIgdG8gdGhlIGN1cnJlbnQgbGluZS4KQEAgLTI1MSwx
NiArMjQ4LDE2IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KEluCiB7CiAgICAgYXV0byYgaW5saW5l
SXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGF1dG8gbWF4aW11
bUxpbmVXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gbGluZUJ1aWxkZXIg
PSBMaW5lQnVpbGRlciB7ICp0aGlzLCByb290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwgTGluZUJ1
aWxkZXI6OkludHJpbnNpY1NpemluZzo6WWVzIH07CisgICAgYXV0byBsaW5lID0gTGluZUJ1aWxk
ZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJbnRy
aW5zaWNTaXppbmc6OlllcyB9OwogICAgIGF1dG8gbGluZUxheW91dENvbnRleHQgPSBMaW5lTGF5
b3V0Q29udGV4dCB7ICp0aGlzLCByb290KCksIGlubGluZUl0ZW1zIH07CiAgICAgYXV0byBsYXlv
dXRSYW5nZSA9IExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgeyAwICwgaW5saW5l
SXRlbXMuc2l6ZSgpIH07CiAgICAgd2hpbGUgKCFsYXlvdXRSYW5nZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gT25seSB0aGUgaG9yaXp0b25hbCBhdmFpbGFibGUgd2lkdGggaXMgY29uc3RyYWlu
ZWQgd2hlbiBjb21wdXRpbmcgaW50cmluc2ljIHdpZHRoLgotICAgICAgICBsaW5lQnVpbGRlci5p
bml0aWFsaXplKExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyB7IHsgfSwgYXZhaWxhYmxlV2lkdGgs
IHsgfSwgZmFsc2UgfSk7Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29u
dGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVyLCBsYXlvdXRSYW5nZSwgeyB9KTsKLSAgICAgICAg
bGF5b3V0UmFuZ2Uuc3RhcnQgPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgg
KyAxOworICAgICAgICBsaW5lLmluaXRpYWxpemUoTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIHsg
eyB9LCBhdmFpbGFibGVXaWR0aCwgeyB9LCBmYWxzZSB9KTsKKyAgICAgICAgYXV0byBsaW5lQ29u
dGVudCA9IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dElubGluZUNvbnRlbnQobGluZSwgbGF5b3V0
UmFuZ2UsIHsgfSk7CisgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gbGluZUNvbnRlbnQuaW5s
aW5lSXRlbXMuZW5kOwogICAgICAgICAvLyBGSVhNRTogVXNlIGxpbmUgbG9naWNhbCBsZWZ0IGFu
ZCByaWdodCB0byB0YWtlIGZsb2F0cyBpbnRvIGFjY291bnQuCi0gICAgICAgIG1heGltdW1MaW5l
V2lkdGggPSBzdGQ6Om1heChtYXhpbXVtTGluZVdpZHRoLCBsaW5lQ29udGVudC5saW5lQm94Lmxv
Z2ljYWxXaWR0aCgpKTsKKyAgICAgICAgbWF4aW11bUxpbmVXaWR0aCA9IHN0ZDo6bWF4KG1heGlt
dW1MaW5lV2lkdGgsIGxpbmUubGluZUJveCgpLmxvZ2ljYWxXaWR0aCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIG1heGltdW1MaW5lV2lkdGg7CiB9CkBAIC00NjQsMTAgKzQ2MSwxMCBAQCBMaW5lQnVp
bGRlcjo6Q29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzRm9y
TGluZShjb25zdCBIb3JpegogICAgIHJldHVybiBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMgeyB7
IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxUb3AgfSwgbGluZUxvZ2ljYWxSaWdodCAtIGxp
bmVMb2dpY2FsTGVmdCwgaW5pdGlhbExpbmVIZWlnaHQsIGxpbmVJc0NvbnN0cmFpbmVkQnlGbG9h
dCB9OwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNG
b3JMaW5lKGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQs
IGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQordm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBM
aW5lQnVpbGRlciYgbGluZSwgY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50JiBs
aW5lQ29udGVudCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3Ry
YWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0
YXRlKCk7Ci0gICAgYXV0byYgbGluZUJveCA9IGxpbmVDb250ZW50LmxpbmVCb3g7CisgICAgYXV0
byYgbGluZUJveCA9IGxpbmUubGluZUJveCgpOwogCiAgICAgaWYgKCFsaW5lQ29udGVudC5mbG9h
dHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdD
b250ZXh0IHsgcm9vdCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSB9
OwpAQCAtNDc2LDcgKzQ3Myw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERp
c3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAgICAgICAg
ICBhdXRvJiBmbG9hdEJveCA9IGZsb2F0Q2FuZGlkYXRlLml0ZW0tPmxheW91dEJveCgpOwogICAg
ICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5Qm94KGZs
b2F0Qm94KTsKICAgICAgICAgICAgIC8vIFNldCBzdGF0aWMgcG9zaXRpb24gZmlyc3QuCi0gICAg
ICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gPSBmbG9hdENhbmRpZGF0ZS5pc0lu
dHJ1c2l2ZSA9PSBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQ6OkZsb2F0OjpJbnRydXNp
dmU6OlllcyA/IGxpbmVCb3gubG9naWNhbFRvcCgpIDogbGluZUJveC5sb2dpY2FsQm90dG9tKCk7
CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gPSBmbG9hdENhbmRpZGF0
ZS5pc0ludHJ1c2l2ZSA/IGxpbmVCb3gubG9naWNhbFRvcCgpIDogbGluZUJveC5sb2dpY2FsQm90
dG9tKCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoeyBsaW5lQm94LmxvZ2lj
YWxMZWZ0KCksIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gfSk7CiAgICAgICAgICAgICAvLyBGbG9h
dCBpdC4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChmbG9hdGluZ0NvbnRleHQu
cG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSk7CkBAIC00
OTQsNyArNDkxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJv
eGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICBhdXRvIGxpbmVJbmRl
eCA9IGlubGluZUNvbnRlbnQubGluZUJveGVzLnNpemUoKTsKICAgICBhdXRvIGxpbmVJbmtPdmVy
ZmxvdyA9IGxpbmVCb3guc2Nyb2xsYWJsZU92ZXJmbG93KCk7CiAgICAgLy8gQ29tcHV0ZSBib3gg
ZmluYWwgZ2VvbWV0cnkuCi0gICAgYXV0byYgbGluZVJ1bnMgPSBsaW5lQ29udGVudC5ydW5MaXN0
OworICAgIGF1dG8mIGxpbmVSdW5zID0gbGluZS5ydW5zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1
dG8mIGxpbmVSdW4gPSBsaW5lUnVucy5hdChpbmRleCk7CiAgICAgICAgIGF1dG8mIGxvZ2ljYWxS
ZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKaW5kZXggOWFmZWNmMGI0YWFjYTBlODI3N2IyNmFiMjE0YjViZWU2ODdlNjNiNy4uNmNkMjA4
MWRjY2Q3NzhlMzE4Mjk2NTk3NjZlNDRhNWI5OGE3MTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbGxl
Y3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKICAgICBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMg
Y29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIElubGluZUxh
eW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApOwotICAgIHZvaWQgc2V0RGlzcGxheUJveGVzRm9yTGlu
ZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmKTsKKyAgICB2b2lkIHNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGlu
ZUJ1aWxkZXImLCBjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKIAogICAgIGNvbnN0IElubGluZUZvcm1hdHRp
bmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggMjdmNGU2NjA1ZDU3MDlmZjUxZDFjYzA5MGIx
Y2JkMDkzMTZlOWY0Yi4uNTE4ZjkyZjYzYzM5YzZmZjE1ZDQ2YzgzN2ZkNDhiM2M0MmM5Mjc4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtODQsMTEgKzg0LDEzIEBAIHZvaWQgTGluZUJ1
aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQogICAgIGF1
dG8gaW5pdGlhbExpbmVIZWlnaHQgPSBjb25zdHJhaW50cy5saW5lSGVpZ2h0OwogICAgIGF1dG8g
bGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgY29uc3RyYWludHMubG9naWNhbFRvcExl
ZnQsIDBfbHUsIGluaXRpYWxMaW5lSGVpZ2h0IH07CiAgICAgbV9saW5lQm94ID0gTGluZUJveCB7
IGxpbmVSZWN0LCBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKHJvb3QoKS5zdHlsZSgp
LmZvbnRNZXRyaWNzKCksIGluaXRpYWxMaW5lSGVpZ2h0KSB9OwotCi0gICAgcmVzZXRDb250ZW50
KCk7CisgICAgY2xlYXIoKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faXNDbG9zZWQgPSBm
YWxzZTsKKyNlbmRpZgogfQogCi12b2lkIExpbmVCdWlsZGVyOjpyZXNldENvbnRlbnQoKQordm9p
ZCBMaW5lQnVpbGRlcjo6Y2xlYXIoKQogewogICAgIG1fbGluZUJveC5zZXRMb2dpY2FsV2lkdGgo
eyB9KTsKICAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkRW1wdHkoKTsKQEAgLTk3LDE0ICs5
OSwxNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpyZXNldENvbnRlbnQoKQogICAgIG1fbGluZUlzVmlz
dWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCA9IHsgfTsKIH0KIAotTGlu
ZUJ1aWxkZXI6OlJ1bkxpc3QgTGluZUJ1aWxkZXI6OmNsb3NlKElzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpCit2b2lkIExpbmVCdWlsZGVyOjpj
bG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250
ZW50KQogeworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9pc0Nsb3NlZCA9IHRydWU7CisjZW5k
aWYKICAgICAvLyAxLiBSZW1vdmUgdHJpbW1hYmxlIHRyYWlsaW5nIGNvbnRlbnQuCiAgICAgLy8g
Mi4gQWxpZ24gbWVyZ2VkIHJ1bnMgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHkuCiAg
ICAgcmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CiAgICAgdmlzdWFsbHlDb2xsYXBz
ZVByZVdyYXBPdmVyZmxvd0NvbnRlbnQoKTsKICAgICBpZiAobV9pc0ludHJpbnNpY1NpemluZykK
LSAgICAgICAgcmV0dXJuIFdURk1vdmUobV9ydW5zKTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byBoYW5naW5nQ29udGVudCA9IGNvbGxlY3RIYW5naW5nQ29udGVudChpc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpOwogICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodCgpOwpAQCAt
MTE0LDcgKzExOSw2IEBAIExpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJ
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpCiAgICAgfQogICAgIGFsaWdu
Q29udGVudFZlcnRpY2FsbHkoKTsKICAgICBhbGlnbkhvcml6b250YWxseShoYW5naW5nQ29udGVu
dCwgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KTsKLSAgICByZXR1cm4gV1RGTW92ZShtX3J1
bnMpOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCkKQEAg
LTM5Myw2ICszOTcsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjptb3ZlTG9naWNhbFJpZ2h0KElubGlu
ZUxheW91dFVuaXQgZGVsdGEpCiAKIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZChjb25zdCBJbmxp
bmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKKyAg
ICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAgIGFwcGVuZFdpdGgoaW5saW5lSXRlbSwgeyBsb2dp
Y2FsV2lkdGgsIGZhbHNlIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCBkYjNlYjg5
N2MyZDYxODUyNTI1YmYzOGY1ZTk4ZjJlOTc0YTZmMjMyLi45YjY4YTg2NWRkY2ExMjI4YjczMThl
MzUyNjk3NzFhYTRmOGJmMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTU1LDkgKzU1LDEz
IEBAIHB1YmxpYzoKICAgICB+TGluZUJ1aWxkZXIoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShj
b25zdCBDb25zdHJhaW50cyYpOworCisgICAgZW51bSBjbGFzcyBJc0xhc3RMaW5lV2l0aElubGlu
ZUNvbnRlbnQgeyBObywgWWVzIH07CisgICAgdm9pZCBjbG9zZShJc0xhc3RMaW5lV2l0aElubGlu
ZUNvbnRlbnQpOworCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgSW5saW5lSXRlbSYsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVuZFBhcnRpYWxUcmFpbGluZ1Rl
eHRJdGVtKGNvbnN0IElubGluZVRleHRJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGgsIGJvb2wgbmVlZHNIeXBlbik7Ci0gICAgdm9pZCByZXNldENvbnRlbnQoKTsKKyAgICB2b2lk
IGNsZWFyKCk7CiAgICAgYm9vbCBpc1Zpc3VhbGx5RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2xp
bmVCb3guaXNDb25zaWRlcmVkRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzSW50cnVzaXZlRmxvYXQo
KSBjb25zdCB7IHJldHVybiBtX2hhc0ludHJ1c2l2ZUZsb2F0OyB9CiAgICAgSW5saW5lTGF5b3V0
VW5pdCBhdmFpbGFibGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxXaWR0aCgpIC0gY29u
dGVudExvZ2ljYWxXaWR0aCgpOyB9CkBAIC0xNDAsOCArMTQ0LDcgQEAgcHVibGljOgogICAgICAg
ICB1bnNpZ25lZCBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgeyAwIH07CiAgICAgfTsKICAg
ICB1c2luZyBSdW5MaXN0ID0gVmVjdG9yPFJ1biwgMTA+OwotICAgIGVudW0gY2xhc3MgSXNMYXN0
TGluZVdpdGhJbmxpbmVDb250ZW50IHsgTm8sIFllcyB9OwotICAgIFJ1bkxpc3QgY2xvc2UoSXNM
YXN0TGluZVdpdGhJbmxpbmVDb250ZW50ID0gSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpO
byk7CisgICAgY29uc3QgUnVuTGlzdCYgcnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQog
CiAgICAgc3RhdGljIEFzY2VudEFuZERlc2NlbnQgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZv
bnRNZXRyaWNzJiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7CiAKQEAgLTIy
Miw2ICsyMjUsOSBAQCBwcml2YXRlOgogICAgIExpbmVCb3ggbV9saW5lQm94OwogICAgIE9wdGlv
bmFsPGJvb2w+IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29u
dGVudDsKICAgICBib29sIG1fc2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nIHsgZmFs
c2UgfTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07
CisjZW5kaWYKIH07CiAKIGlubGluZSB2b2lkIExpbmVCdWlsZGVyOjpUcmltbWFibGVUcmFpbGlu
Z0NvbnRlbnQ6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcAppbmRleCA1YmY3NzE4YmM5
NDY0NmViZmYzMWNkZjE5OWQ3NTRjOWYzNTAzZWMxLi41OGRlNjEzYTBmMzgzMjc5ZjkxYjdmNDNh
YTk4MGNjOWMzODdkMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwCkBAIC0yODYsNyArMjg2
LDcgQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVMYXlvdXRDb250ZXh0KGNvbnN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXQKIHsKIH0KIAotTGluZUxheW91dENvbnRleHQ6
OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpsYXlvdXRMaW5lKExpbmVCdWlsZGVyJiBs
aW5lLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVk
PiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpCitMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNv
bnRlbnQgTGluZUxheW91dENvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoTGluZUJ1aWxkZXIm
IGxpbmUsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2ln
bmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fZmxvYXRz
LmlzRW1wdHkoKSk7CiAgICAgbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtID0geyB9OwpAQCAtMzI1
LDI3ICszMjUsMTYgQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRD
b250ZXh0OjpsYXlvdXRMaW5lKExpbmVCdWlsZGVyJiBsaW5lLAogICAgIHJldHVybiBjbG9zZShs
aW5lLCBsYXlvdXRSYW5nZSwgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCB7IH0pOwogfQogCi1M
aW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExp
bmVCdWlsZGVyJiBsaW5lLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UgbGF5b3V0UmFuZ2UsIHVuc2ln
bmVkIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgT3B0aW9uYWw8TGluZUNvbnRlbnQ6OlBhcnRp
YWxDb250ZW50PiBwYXJ0aWFsQ29udGVudCkKK0xpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVu
dCBMaW5lTGF5b3V0Q29udGV4dDo6Y2xvc2UoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIHVuc2lnbmVkIGNvbW1pdHRlZElubGluZUl0ZW1Db3Vu
dCwgT3B0aW9uYWw8TGluZUNvbnRlbnQ6OlBhcnRpYWxDb250ZW50PiBwYXJ0aWFsQ29udGVudCkK
IHsKICAgICBBU1NFUlQoY29tbWl0dGVkSW5saW5lSXRlbUNvdW50IHx8ICFtX2Zsb2F0cy5pc0Vt
cHR5KCkgfHwgbGluZS5oYXNJbnRydXNpdmVGbG9hdCgpKTsKLSAgICBpZiAoIWNvbW1pdHRlZElu
bGluZUl0ZW1Db3VudCkgewotICAgICAgICBpZiAobV9mbG9hdHMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAvLyBXZSBkaWRuJ3QgbWFuYWdlIHRvIGFkZCBhIHJ1biBvciBhIGZsb2F0IGF0IHRo
aXMgdmVydGljYWwgcG9zaXRpb24uCi0gICAgICAgICAgICByZXR1cm4gTGluZUNvbnRlbnQgeyB7
IH0sIHsgfSwgV1RGTW92ZShtX2Zsb2F0cyksIGxpbmUuY2xvc2UoKSwgbGluZS5saW5lQm94KCkg
fTsKLSAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA9
IGxheW91dFJhbmdlLnN0YXJ0ICsgbV9mbG9hdHMuc2l6ZSgpIC0gMTsKLSAgICAgICAgcmV0dXJu
IExpbmVDb250ZW50IHsgdHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgsIHsgfSwgV1RGTW92ZShtX2Zs
b2F0cyksIGxpbmUuY2xvc2UoKSwgbGluZS5saW5lQm94KCkgfTsKLSAgICB9Ci0gICAgLy8gQWRq
dXN0IGh5cGhlbmF0ZWQgbGluZSBjb3VudC4KLSAgICBpZiAocGFydGlhbENvbnRlbnQgJiYgcGFy
dGlhbENvbnRlbnQtPnRyYWlsaW5nQ29udGVudEhhc0h5cGhlbikKLSAgICAgICAgKyttX3N1Y2Nl
c3NpdmVIeXBoZW5hdGVkTGluZUNvdW50OwotICAgIGVsc2UKLSAgICAgICAgbV9zdWNjZXNzaXZl
SHlwaGVuYXRlZExpbmVDb3VudCA9IDA7Ci0gICAgQVNTRVJUKGNvbW1pdHRlZElubGluZUl0ZW1D
b3VudCk7Ci0gICAgdW5zaWduZWQgdHJhaWxpbmdJbmxpbmVJdGVtSW5kZXggPSBsYXlvdXRSYW5n
ZS5zdGFydCArIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCArIG1fZmxvYXRzLnNpemUoKSAtIDE7
Ci0gICAgQVNTRVJUKHRyYWlsaW5nSW5saW5lSXRlbUluZGV4IDwgbGF5b3V0UmFuZ2UuZW5kKTsK
KyAgICBhdXRvIG51bWJlck9mQ29tbWl0dGVkSXRlbXMgPSBjb21taXR0ZWRJbmxpbmVJdGVtQ291
bnQgKyBtX2Zsb2F0cy5zaXplKCk7CisgICAgYXV0byB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA9
IGxheW91dFJhbmdlLnN0YXJ0ICsgbnVtYmVyT2ZDb21taXR0ZWRJdGVtcyAtIDE7CisgICAgYXV0
byBsaW5lUmFuZ2UgPSBJbmxpbmVJdGVtUmFuZ2UgeyBsYXlvdXRSYW5nZS5zdGFydCwgdHJhaWxp
bmdJbmxpbmVJdGVtSW5kZXggKyAxIH07CisgICAgQVNTRVJUKGxpbmVSYW5nZS5lbmQgPD0gbGF5
b3V0UmFuZ2UuZW5kKTsKKwogICAgIGF1dG8gaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50ID0g
WyZdIHsKLSAgICAgICAgaWYgKHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ID09IGxheW91dFJhbmdl
LmVuZCAtIDEpCisgICAgICAgIGlmIChsaW5lUmFuZ2UuZW5kID09IGxheW91dFJhbmdlLmVuZCkK
ICAgICAgICAgICAgIHJldHVybiBMaW5lQnVpbGRlcjo6SXNMYXN0TGluZVdpdGhJbmxpbmVDb250
ZW50OjpZZXM7CiAgICAgICAgIGlmIChwYXJ0aWFsQ29udGVudCkKICAgICAgICAgICAgIHJldHVy
biBMaW5lQnVpbGRlcjo6SXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpObzsKQEAgLTM1OCwx
MCArMzQ3LDEzIEBAIExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0Q29u
dGV4dDo6Y2xvc2UoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5s
aW5lQ29udGVudDo6Tm87CiAgICAgfSgpOwotICAgIHJldHVybiBMaW5lQ29udGVudCB7IHRyYWls
aW5nSW5saW5lSXRlbUluZGV4LCBwYXJ0aWFsQ29udGVudCwgV1RGTW92ZShtX2Zsb2F0cyksIGxp
bmUuY2xvc2UoaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KSwgbGluZS5saW5lQm94KCkgfTsK
KyAgICBsaW5lLmNsb3NlKGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7CisgICAgLy8gQWRq
dXN0IGh5cGhlbmF0ZWQgbGluZSBjb3VudC4KKyAgICBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGlu
ZUNvdW50ID0gcGFydGlhbENvbnRlbnQgJiYgcGFydGlhbENvbnRlbnQtPnRyYWlsaW5nQ29udGVu
dEhhc0h5cGhlbiA/IG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291bnQgKyAxIDogMDsKKyAg
ICByZXR1cm4gTGluZUNvbnRlbnQgeyBwYXJ0aWFsQ29udGVudCwgbGluZVJhbmdlLCBXVEZNb3Zl
KG1fZmxvYXRzKSB9OwogfQogCi12b2lkIExpbmVMYXlvdXRDb250ZXh0OjpuZXh0Q29udGVudEZv
ckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgdW5zaWduZWQgY3VycmVudElubGlu
ZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCBPcHRpb25hbDx1
bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBJbmxpbmVMYXlvdXRVbml0IGF2
YWlsYWJsZUxpbmVXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KQor
dm9pZCBMaW5lTGF5b3V0Q29udGV4dDo6bmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUm
IGxpbmVDYW5kaWRhdGUsIHVuc2lnbmVkIGN1cnJlbnRJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElu
bGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVh
ZGluZ0NvbnRlbnRMZW5ndGgsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlTGluZVdpZHRoLCBJ
bmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpCiB7CiAgICAgQVNTRVJUKGN1cnJl
bnRJbmxpbmVJdGVtSW5kZXggPCBsYXlvdXRSYW5nZS5lbmQpOwogICAgIGxpbmVDYW5kaWRhdGUu
cmVzZXQoKTsKQEAgLTQxNyw3ICs0MDksNyBAQCB2b2lkIExpbmVMYXlvdXRDb250ZXh0Ojpjb21t
aXRGbG9hdHMoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IExpbmVDYW5kaWRhdGUmIGxpbgogICAg
IGZvciAoYXV0byYgZmxvYXRDYW5kaWRhdGUgOiBmbG9hdENvbnRlbnQubGlzdCgpKSB7CiAgICAg
ICAgIGlmICghZmxvYXRDYW5kaWRhdGUuaXNJbnRydXNpdmUgJiYgY29tbWl0SW50cnVzaXZlT25s
eSA9PSBDb21taXRJbnRydXNpdmVGbG9hdHNPbmx5OjpZZXMpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgbV9mbG9hdHMuYXBwZW5kKHsgZmxvYXRDYW5kaWRhdGUuaXNJbnRydXNpdmU/
IExpbmVDb250ZW50OjpGbG9hdDo6SW50cnVzaXZlOjpZZXMgOiBMaW5lQ29udGVudDo6RmxvYXQ6
OkludHJ1c2l2ZTo6Tm8sIGZsb2F0Q2FuZGlkYXRlLml0ZW0gfSk7CisgICAgICAgIG1fZmxvYXRz
LmFwcGVuZCh7IGZsb2F0Q2FuZGlkYXRlLmlzSW50cnVzaXZlLCBmbG9hdENhbmRpZGF0ZS5pdGVt
IH0pOwogICAgICAgICBpZiAoZmxvYXRDYW5kaWRhdGUuaXNJbnRydXNpdmUpIHsKICAgICAgICAg
ICAgIGhhc0ludHJ1c2l2ZUZsb2F0ID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIFRoaXMgZmxvYXQg
aXMgaW50cnVzaXZlIGFuZCBpdCBzaHJpbmtzIHRoZSBjdXJyZW50IGxpbmUuCkBAIC01MjgsNyAr
NTIwLDcgQEAgdm9pZCBMaW5lTGF5b3V0Q29udGV4dDo6Y29tbWl0UGFydGlhbENvbnRlbnQoTGlu
ZUJ1aWxkZXImIGxpbmUsIGNvbnN0IExpbmVCcmVha2UKIHNpemVfdCBMaW5lTGF5b3V0Q29udGV4
dDo6cmVidWlsZExpbmUoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYg
bGF5b3V0UmFuZ2UpCiB7CiAgICAgLy8gQ2xlYXIgdGhlIGxpbmUgYW5kIHN0YXJ0IGFwcGVuZGlu
ZyB0aGUgaW5saW5lIGl0ZW1zIGNsb3Npbmcgd2l0aCB0aGUgbGFzdCB3cmFwIG9wcG9ydHVuaXR5
IHJ1bi4KLSAgICBsaW5lLnJlc2V0Q29udGVudCgpOworICAgIGxpbmUuY2xlYXIoKTsKICAgICBh
dXRvIGN1cnJlbnRJdGVtSW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydDsKICAgICBhdXRvIGxvZ2lj
YWxSaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgIGlmIChtX3BhcnRpYWxMZWFkaW5n
VGV4dEl0ZW0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCmluZGV4IDMxZmY4NmJmZDI0MzNhMDA0Y2Uy
MDU1NzBkMjg5ODcyNTVhNmZjMWUuLjM0YjhmY2I5ZGM0YWY1N2NmMjg2ZGJhZTZjMDk4ZTI2Y2Nj
MzhjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0xpbmVMYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaApAQCAtMzksMzMgKzM5LDMwIEBAIGNsYXNzIExp
bmVMYXlvdXRDb250ZXh0IHsKIHB1YmxpYzoKICAgICBMaW5lTGF5b3V0Q29udGV4dChjb25zdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBjb25zdCBJbmxpbmVJdGVtcyYpOwogCisgICAgc3RydWN0IElubGluZUl0ZW1S
YW5nZSB7CisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IGVu
ZDsgfQorICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVuZCAtIHN0YXJ0OyB9
CisgICAgICAgIHNpemVfdCBzdGFydCB7IDAgfTsKKyAgICAgICAgc2l6ZV90IGVuZCB7IDAgfTsK
KyAgICB9OwogICAgIHN0cnVjdCBMaW5lQ29udGVudCB7CiAgICAgICAgIHN0cnVjdCBQYXJ0aWFs
Q29udGVudCB7CiAgICAgICAgICAgICBib29sIHRyYWlsaW5nQ29udGVudEhhc0h5cGhlbiB7IGZh
bHNlIH07CiAgICAgICAgICAgICB1bnNpZ25lZCBvdmVyZmxvd0NvbnRlbnRMZW5ndGggeyAwIH07
CiAgICAgICAgIH07Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0cmFpbGluZ0lubGluZUl0
ZW1JbmRleDsKICAgICAgICAgT3B0aW9uYWw8UGFydGlhbENvbnRlbnQ+IHBhcnRpYWxDb250ZW50
OworICAgICAgICBJbmxpbmVJdGVtUmFuZ2UgaW5saW5lSXRlbXM7CiAgICAgICAgIHN0cnVjdCBG
bG9hdCB7Ci0gICAgICAgICAgICBlbnVtIGNsYXNzIEludHJ1c2l2ZSB7IE5vLCBZZXMgfTsKLSAg
ICAgICAgICAgIEludHJ1c2l2ZSBpc0ludHJ1c2l2ZSB7IEludHJ1c2l2ZTo6WWVzIH07CisgICAg
ICAgICAgICBib29sIGlzSW50cnVzaXZlIHsgdHJ1ZSB9OwogICAgICAgICAgICAgY29uc3QgSW5s
aW5lSXRlbSogaXRlbSB7IG51bGxwdHIgfTsKICAgICAgICAgfTsKICAgICAgICAgdXNpbmcgRmxv
YXRMaXN0ID0gVmVjdG9yPEZsb2F0PjsKICAgICAgICAgRmxvYXRMaXN0IGZsb2F0czsKLSAgICAg
ICAgY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3QgcnVuTGlzdDsKLSAgICAgICAgY29uc3QgTGlu
ZUJveCBsaW5lQm94OwotICAgIH07Ci0gICAgc3RydWN0IElubGluZUl0ZW1SYW5nZSB7Ci0gICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IGVuZDsgfQotICAgICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVuZCAtIHN0YXJ0OyB9Ci0gICAgICAgIHNp
emVfdCBzdGFydCB7IDAgfTsKLSAgICAgICAgc2l6ZV90IGVuZCB7IDAgfTsKICAgICB9OwotICAg
IExpbmVDb250ZW50IGxheW91dExpbmUoTGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtUmFu
Z2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgpOworICAg
IExpbmVDb250ZW50IGxheW91dElubGluZUNvbnRlbnQoTGluZUJ1aWxkZXImLCBjb25zdCBJbmxp
bmVJdGVtUmFuZ2UmLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVu
Z3RoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5leHRDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlk
YXRlJiwgdW5zaWduZWQgaW5saW5lSXRlbUluZGV4LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UgbGF5
b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCwgSW5saW5lTGF5b3V0
VW5pdCBhdmFpbGFibGVMaW5lV2lkdGgsIElubGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxS
aWdodCk7CisgICAgdm9pZCBuZXh0Q29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYsIHVuc2ln
bmVkIGlubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwg
T3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJmbG93TGVuZ3RoLCBJbmxpbmVMYXlvdXRVbml0IGF2YWls
YWJsZUxpbmVXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKICAg
ICBzdHJ1Y3QgUmVzdWx0IHsKICAgICAgICAgTGluZUJyZWFrZXI6OklzRW5kT2ZMaW5lIGlzRW5k
T2ZMaW5lIHsgTGluZUJyZWFrZXI6OklzRW5kT2ZMaW5lOjpObyB9OwogICAgICAgICBzdHJ1Y3Qg
Q29tbWl0dGVkQ29udGVudENvdW50IHsKQEAgLTgwLDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBS
ZXN1bHQgaGFuZGxlRmxvYXRzQW5kSW5saW5lQ29udGVudChMaW5lQnJlYWtlciYsIExpbmVCdWls
ZGVyJiwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgY29uc3QgTGluZUNhbmRp
ZGF0ZSYpOwogICAgIHNpemVfdCByZWJ1aWxkTGluZShMaW5lQnVpbGRlciYsIGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UpOwogICAgIHZvaWQgY29tbWl0UGFydGlhbENvbnRlbnQo
TGluZUJ1aWxkZXImLCBjb25zdCBMaW5lQnJlYWtlcjo6UnVuTGlzdCYsIGNvbnN0IExpbmVCcmVh
a2VyOjpSZXN1bHQ6OlBhcnRpYWxUcmFpbGluZ0NvbnRlbnQmKTsKLSAgICBMaW5lQ29udGVudCBj
bG9zZShMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1SYW5nZSBsYXlvdXRSYW5nZSwgdW5z
aWduZWQgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50LCBPcHRpb25hbDxMaW5lQ29udGVudDo6UGFy
dGlhbENvbnRlbnQ+KTsKKyAgICBMaW5lQ29udGVudCBjbG9zZShMaW5lQnVpbGRlciYsIGNvbnN0
IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIHVuc2lnbmVkIGNvbW1pdHRlZElubGluZUl0
ZW1Db3VudCwgT3B0aW9uYWw8TGluZUNvbnRlbnQ6OlBhcnRpYWxDb250ZW50Pik7CiAKICAgICBJ
bmxpbmVMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0aChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5l
TGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407208</attachid>
            <date>2020-08-25 10:45:15 -0700</date>
            <delta_ts>2020-08-25 11:59:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214790-20200825104514.patch</filename>
            <type>text/plain</type>
            <size>25940</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQwMzhmOTgwNmI4OGVm
NTA2MGM4Y2MyZDhmY2Y2ZjA1OTQ1MTcxZS4uYmM3Zjc3YTQ1ZGRiMTE1ZjJlMmZmZWY0NzM5OTFi
M2NiMjQyMzJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA4LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBEbyBub3Qg
bW92ZSB0aGUgcnVucyBvdXQgb2YgdGhlIExpbmVCdWlsZGVyIHdoaWxlIGNsb3NpbmcgdGhlIGxp
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc5
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsb3Np
bmcgdGhlIGxpbmUgc2hvdWxkIG5vdCBtZWFuIHRoYXQgdGhlIExpbmVCdWlsZGVyIGRvZXMgbm90
IGhhdmUgdGhlIGxpbmUgcnVucyBhbnltb3JlLgorICAgICAgICAoVGhpcyBwYXRjaCBhbHNvIHJl
bW92ZXMgc29tZSBjb21wbGV4aXR5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBsaW5lIGNvbnRlbnQu
KQorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRE
aXNwbGF5Qm94ZXNGb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBw
ZW5kKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0SW5s
aW5lQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0
OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0Ojpu
ZXh0Q29udGVudEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0
Q29udGV4dDo6Y29tbWl0RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxh
eW91dENvbnRleHQ6OmxheW91dExpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2U6OmlzRW1wdHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJh
bmdlOjpzaXplIGNvbnN0KToKKwogMjAyMC0wOC0yNSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIEFkZCBzZXR0aW5nIGZvciBsYXp5IGlmcmFtZSBsb2FkaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYWIyNDY3ZWY5ZWRkNTBhZmJkMmU5
NjQ2NTg4YjUzNWExMmVmMDQyNi4uY2Q4ZmExYjIwYzg0MDdkODUyODRjOTU5Y2Q0NzZhZDgyMTlk
MzU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTMxLDU2ICsx
MzEsNTMgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVu
dChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW8KICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRp
bmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAK
LXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlu
bGluZUl0ZW1zLCBMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdl
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRl
bXMsIExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgbmVlZHNMYXlvdXRSYW5nZSwg
Y29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBh
dXRvIGxpbmVMb2dpY2FsVG9wID0gY29uc3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKLSAg
ICBzdHJ1Y3QgUHJldmlvdXNMaW5lRW5kIHsKLSAgICAgICAgdW5zaWduZWQgcnVuSW5kZXg7Cisg
ICAgc3RydWN0IFByZXZpb3VzTGluZSB7CisgICAgICAgIExpbmVMYXlvdXRDb250ZXh0OjpJbmxp
bmVJdGVtUmFuZ2UgcmFuZ2U7CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0Nv
bnRlbnRMZW5ndGg7CiAgICAgfTsKLSAgICBPcHRpb25hbDxQcmV2aW91c0xpbmVFbmQ+IHByZXZp
b3VzTGluZUVuZDsKLSAgICBhdXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywg
cm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6
Ok5vIH07CisgICAgT3B0aW9uYWw8UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmU7CisgICAgYXV0
byBsaW5lID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCks
IExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6Ok5vIH07CiAgICAgYXV0byBsaW5lTGF5b3V0
Q29udGV4dCA9IExpbmVMYXlvdXRDb250ZXh0IHsgKnRoaXMsIHJvb3QoKSwgaW5saW5lSXRlbXMg
fTsKIAotICAgIHdoaWxlICghbGF5b3V0UmFuZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxpbmVC
dWlsZGVyLmluaXRpYWxpemUoY29uc3RyYWludHNGb3JMaW5lKGNvbnN0cmFpbnRzLmhvcml6b250
YWwsIGxpbmVMb2dpY2FsVG9wKSk7Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5
b3V0Q29udGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVyLCBsYXlvdXRSYW5nZSwgcHJldmlvdXNM
aW5lRW5kID8gcHJldmlvdXNMaW5lRW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBXVEY6Om51
bGxvcHQpOwotICAgICAgICBzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKGxpbmVDb250ZW50LCBjb25z
dHJhaW50cy5ob3Jpem9udGFsKTsKLQotICAgICAgICBpZiAobGluZUNvbnRlbnQudHJhaWxpbmdJ
bmxpbmVJdGVtSW5kZXgpIHsKLSAgICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gbGluZUNvbnRl
bnQubGluZUJveC5sb2dpY2FsQm90dG9tKCk7CisgICAgd2hpbGUgKCFuZWVkc0xheW91dFJhbmdl
LmlzRW1wdHkoKSkgeworICAgICAgICBsaW5lLmluaXRpYWxpemUoY29uc3RyYWludHNGb3JMaW5l
KGNvbnN0cmFpbnRzLmhvcml6b250YWwsIGxpbmVMb2dpY2FsVG9wKSk7CisgICAgICAgIC8vIFR1
cm4gcHJldmlvdXMgbGluZSdzIG92ZXJmbG93IGNvbnRlbnQgbGVuZ3RoIGludG8gdGhlIG5leHQg
bGluZSdzIGxlYWRpbmcgY29udGVudCBwYXJ0aWFsIGxlbmd0aC4KKyAgICAgICAgLy8gInNwWzwt
bGluZSBicmVhay0+XWxpdF9jb250ZW50IiAtPiBvdmVyZmxvdyBsZW5ndGg6IDExIC0+IGxlYWRp
bmcgcGFydGlhbCBjb250ZW50IGxlbmd0aDogMTEuCisgICAgICAgIGF1dG8gcGFydGlhbExlYWRp
bmdDb250ZW50TGVuZ3RoID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0Nv
bnRlbnRMZW5ndGggOiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBs
aW5lTGF5b3V0Q29udGV4dC5sYXlvdXRJbmxpbmVDb250ZW50KGxpbmUsIG5lZWRzTGF5b3V0UmFu
Z2UsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7CisgICAgICAgIHNldERpc3BsYXlCb3hl
c0ZvckxpbmUobGluZSwgbGluZUNvbnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworCisg
ICAgICAgIGF1dG8gbGluZUNvbnRlbnRSYW5nZSA9IGxpbmVDb250ZW50LmlubGluZUl0ZW1zOwor
ICAgICAgICBpZiAoIWxpbmVDb250ZW50UmFuZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBB
U1NFUlQobmVlZHNMYXlvdXRSYW5nZS5zdGFydCA8IGxpbmVDb250ZW50UmFuZ2UuZW5kKTsKKyAg
ICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gbGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgp
OwogICAgICAgICAgICAgLy8gV2hlbiB0aGUgdHJhaWxpbmcgY29udGVudCBpcyBwYXJ0aWFsLCB3
ZSBuZWVkIHRvIHJldXNlIHRoZSBsYXN0IElubGluZVRleHRJdGVtLgotICAgICAgICAgICAgYXV0
byB0cmFpbGluZ1J1bkluZGV4ID0gKmxpbmVDb250ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4
OwotICAgICAgICAgICAgaWYgKGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50KSB7CisgICAgICAg
ICAgICBhdXRvIGxhc3RJbmxpbmVJdGVtTmVlZHNQYXJ0aWFsTGF5b3V0ID0gbGluZUNvbnRlbnQu
cGFydGlhbENvbnRlbnQuaGFzVmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChsYXN0SW5saW5lSXRl
bU5lZWRzUGFydGlhbExheW91dCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lQ29udGVu
dC5wYXJ0aWFsQ29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICAvLyBUdXJuIHByZXZpb3VzIGxpbmUncyBvdmVyZmxvdyBjb250ZW50IGxlbmd0aCBpbnRvIHRo
ZSBuZXh0IGxpbmUncyBsZWFkaW5nIGNvbnRlbnQgcGFydGlhbCBsZW5ndGguCi0gICAgICAgICAg
ICAgICAgLy8gInNwPC0+bGl0Y29udGVudCIgLT4gb3ZlcmZsb3cgbGVuZ3RoOiAxMCAtPiBsZWFk
aW5nIHBhcnRpYWwgY29udGVudCBsZW5ndGg6IDEwLgotICAgICAgICAgICAgICAgIGF1dG8gaXNO
ZXdJbmxpbmVDb250ZW50ID0gIXByZXZpb3VzTGluZUVuZAotICAgICAgICAgICAgICAgICAgICB8
fCB0cmFpbGluZ1J1bkluZGV4ID4gcHJldmlvdXNMaW5lRW5kLT5ydW5JbmRleAotICAgICAgICAg
ICAgICAgICAgICB8fCAocHJldmlvdXNMaW5lRW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggJiYg
KnByZXZpb3VzTGluZUVuZC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoID4gbGluZUNvbnRlbnQucGFy
dGlhbENvbnRlbnQtPm92ZXJmbG93Q29udGVudExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzTmV3SW5saW5lQ29udGVudCkgewotICAgICAgICAgICAgICAgICAgICAvLyBTdHJhcnQgdGhl
IG5leHQgbGluZSB3aXRoIHRoZSBzYW1lLCBwYXJ0aWFsIHRyYWlsaW5nIElubGluZVRleHRJdGVt
LgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBQcmV2aW91c0xpbmVFbmQg
eyB0cmFpbGluZ1J1bkluZGV4LCBsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+b3ZlcmZsb3dD
b250ZW50TGVuZ3RoIH07Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0g
cHJldmlvdXNMaW5lRW5kLT5ydW5JbmRleDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGF1dG8gbGluZUxheW91dEhhc0FkdmFuY2VkID0gIXByZXZpb3VzTGluZQor
ICAgICAgICAgICAgICAgICAgICB8fCBsaW5lQ29udGVudFJhbmdlLmVuZCA+IHByZXZpb3VzTGlu
ZS0+cmFuZ2UuZW5kCisgICAgICAgICAgICAgICAgICAgIHx8IChwcmV2aW91c0xpbmUtPm92ZXJm
bG93Q29udGVudExlbmd0aCAmJiAqcHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGgg
PiBsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWxpbmVMYXlvdXRIYXNBZHZhbmNlZCkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gTW92
ZSBvdmVyIHRvIHRoZSBuZXh0IHJ1biBpZiB3ZSBhcmUgc3R1Y2sgb24gdGhpcyBwYXJ0aWFsIGNv
bnRlbnQgKHdoZW4gdGhlIG92ZXJmbG93IGNvbnRlbnQgbGVuZ3RoIHJlbWFpbnMgdGhlIHNhbWUp
LgotICAgICAgICAgICAgICAgICAgICAvLyBXZSBjZXJ0YWlubHkgbG9zZSBzb21lIGNvbnRlbnQs
IGJ1dCB3ZSB3b3VsZCBiZSBidXN5IGxvb3BpbmcgYW55d2F5LgotICAgICAgICAgICAgICAgICAg
ICBwcmV2aW91c0xpbmVFbmQgPSBQcmV2aW91c0xpbmVFbmQgeyB0cmFpbGluZ1J1bkluZGV4LCB7
IH0gfTsKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSBwcmV2aW91c0xp
bmVFbmQtPnJ1bkluZGV4ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2VydGFpbmx5
IGxvc2Ugc29tZSBjb250ZW50LCBidXQgd2Ugd291bGQgYmUgYnVzeSBsb29waW5nIG90aGVyd2lz
ZS4KKyAgICAgICAgICAgICAgICAgICAgbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHByZXZpb3VzTGluZUVuZCA9IFByZXZpb3VzTGluZUVuZCB7IHRyYWlsaW5nUnVu
SW5kZXgsIHsgfSB9OwotICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gcHJldmlv
dXNMaW5lRW5kLT5ydW5JbmRleCArIDE7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuZWVk
c0xheW91dFJhbmdlLnN0YXJ0ID0gbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPyBs
aW5lQ29udGVudFJhbmdlLmVuZCAtIDEgOiBsaW5lQ29udGVudFJhbmdlLmVuZDsKKyAgICAgICAg
ICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGluZSB7IGxpbmVDb250ZW50UmFuZ2UsIGxpbmVD
b250ZW50LnBhcnRpYWxDb250ZW50ID8gbWFrZU9wdGlvbmFsKGxpbmVDb250ZW50LnBhcnRpYWxD
b250ZW50LT5vdmVyZmxvd0NvbnRlbnRMZW5ndGgpIDogV1RGOjpudWxsb3B0IH07CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAvLyBGbG9hdHMgcHJldmVudGVkIHVz
IHBsYWNpbmcgYW55IGNvbnRlbnQgb24gdGhlIGxpbmUuCi0gICAgICAgIEFTU0VSVChsaW5lQ29u
dGVudC5ydW5MaXN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChsaW5lQnVpbGRlci5oYXNJ
bnRydXNpdmVGbG9hdCgpKTsKKyAgICAgICAgQVNTRVJUKGxpbmUucnVucygpLmlzRW1wdHkoKSk7
CisgICAgICAgIEFTU0VSVChsaW5lLmhhc0ludHJ1c2l2ZUZsb2F0KCkpOwogICAgICAgICAvLyBN
b3ZlIHRoZSBuZXh0IGxpbmUgYmVsb3cgdGhlIGludHJ1c2l2ZSBmbG9hdC4KICAgICAgICAgYXV0
byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyByb290KCksICp0aGlzLCBmb3Jt
YXR0aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkgfTsKLSAgICAgICAgYXV0byBmbG9hdENvbnN0
cmFpbnRzID0gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xh
eW91dFVuaXQobGluZUNvbnRlbnQubGluZUJveC5sb2dpY2FsQm90dG9tKCkpKTsKKyAgICAgICAg
YXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKGxpbmVM
b2dpY2FsVG9wLCB0b0xheW91dFVuaXQobGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpKSk7
CiAgICAgICAgIEFTU0VSVChmbG9hdENvbnN0cmFpbnRzLmxlZnQgfHwgZmxvYXRDb25zdHJhaW50
cy5yaWdodCk7CiAgICAgICAgIHN0YXRpYyBhdXRvIGluaWZpdGVQb2ludCA9IFBvaW50SW5Db250
ZXh0Um9vdDo6bWF4KCk7CiAgICAgICAgIC8vIEluIGNhc2Ugb2YgbGVmdCBhbmQgcmlnaHQgY29u
c3RyYWludHMsIHdlIG5lZWQgdG8gcGljayB0aGUgb25lIHRoYXQncyBjbG9zZXIgdG8gdGhlIGN1
cnJlbnQgbGluZS4KQEAgLTI1MSwxNiArMjQ4LDE2IEBAIElubGluZUxheW91dFVuaXQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KElu
CiB7CiAgICAgYXV0byYgaW5saW5lSXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVt
cygpOwogICAgIGF1dG8gbWF4aW11bUxpbmVXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9Owot
ICAgIGF1dG8gbGluZUJ1aWxkZXIgPSBMaW5lQnVpbGRlciB7ICp0aGlzLCByb290KCkuc3R5bGUo
KS50ZXh0QWxpZ24oKSwgTGluZUJ1aWxkZXI6OkludHJpbnNpY1NpemluZzo6WWVzIH07CisgICAg
YXV0byBsaW5lID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWdu
KCksIExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6OlllcyB9OwogICAgIGF1dG8gbGluZUxh
eW91dENvbnRleHQgPSBMaW5lTGF5b3V0Q29udGV4dCB7ICp0aGlzLCByb290KCksIGlubGluZUl0
ZW1zIH07CiAgICAgYXV0byBsYXlvdXRSYW5nZSA9IExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJ
dGVtUmFuZ2UgeyAwICwgaW5saW5lSXRlbXMuc2l6ZSgpIH07CiAgICAgd2hpbGUgKCFsYXlvdXRS
YW5nZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gT25seSB0aGUgaG9yaXp0b25hbCBhdmFpbGFi
bGUgd2lkdGggaXMgY29uc3RyYWluZWQgd2hlbiBjb21wdXRpbmcgaW50cmluc2ljIHdpZHRoLgot
ICAgICAgICBsaW5lQnVpbGRlci5pbml0aWFsaXplKExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyB7
IHsgfSwgYXZhaWxhYmxlV2lkdGgsIHsgfSwgZmFsc2UgfSk7Ci0gICAgICAgIGF1dG8gbGluZUNv
bnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVyLCBsYXlvdXRS
YW5nZSwgeyB9KTsKLSAgICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSAqbGluZUNvbnRlbnQudHJh
aWxpbmdJbmxpbmVJdGVtSW5kZXggKyAxOworICAgICAgICBsaW5lLmluaXRpYWxpemUoTGluZUJ1
aWxkZXI6OkNvbnN0cmFpbnRzIHsgeyB9LCBhdmFpbGFibGVXaWR0aCwgeyB9LCBmYWxzZSB9KTsK
KyAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dElubGlu
ZUNvbnRlbnQobGluZSwgbGF5b3V0UmFuZ2UsIHsgfSk7CisgICAgICAgIGxheW91dFJhbmdlLnN0
YXJ0ID0gbGluZUNvbnRlbnQuaW5saW5lSXRlbXMuZW5kOwogICAgICAgICAvLyBGSVhNRTogVXNl
IGxpbmUgbG9naWNhbCBsZWZ0IGFuZCByaWdodCB0byB0YWtlIGZsb2F0cyBpbnRvIGFjY291bnQu
Ci0gICAgICAgIG1heGltdW1MaW5lV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtTGluZVdpZHRoLCBs
aW5lQ29udGVudC5saW5lQm94LmxvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgbWF4aW11bUxpbmVX
aWR0aCA9IHN0ZDo6bWF4KG1heGltdW1MaW5lV2lkdGgsIGxpbmUubGluZUJveCgpLmxvZ2ljYWxX
aWR0aCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1heGltdW1MaW5lV2lkdGg7CiB9CkBAIC00NjQs
MTAgKzQ2MSwxMCBAQCBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbnN0cmFpbnRzRm9yTGluZShjb25zdCBIb3JpegogICAgIHJldHVybiBMaW5lQnVp
bGRlcjo6Q29uc3RyYWludHMgeyB7IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxUb3AgfSwg
bGluZUxvZ2ljYWxSaWdodCAtIGxpbmVMb2dpY2FsTGVmdCwgaW5pdGlhbExpbmVIZWlnaHQsIGxp
bmVJc0NvbnN0cmFpbmVkQnlGbG9hdCB9OwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaW5l
Q29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpv
bnRhbENvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxh
eUJveGVzRm9yTGluZShjb25zdCBMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgTGluZUxheW91dENv
bnRleHQ6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRl
ID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAgYXV0byYgbGluZUJveCA9IGxpbmVDb250
ZW50LmxpbmVCb3g7CisgICAgYXV0byYgbGluZUJveCA9IGxpbmUubGluZUJveCgpOwogCiAgICAg
aWYgKCFsaW5lQ29udGVudC5mbG9hdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gZmxvYXRp
bmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgcm9vdCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0
YXRlLmZsb2F0aW5nU3RhdGUoKSB9OwpAQCAtNDc2LDcgKzQ3Myw3IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENv
bnRleHQ6OkxpCiAgICAgICAgICAgICBhdXRvJiBmbG9hdEJveCA9IGZsb2F0Q2FuZGlkYXRlLml0
ZW0tPmxheW91dEJveCgpOwogICAgICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRp
bmdTdGF0ZS5kaXNwbGF5Qm94KGZsb2F0Qm94KTsKICAgICAgICAgICAgIC8vIFNldCBzdGF0aWMg
cG9zaXRpb24gZmlyc3QuCi0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24g
PSBmbG9hdENhbmRpZGF0ZS5pc0ludHJ1c2l2ZSA9PSBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNv
bnRlbnQ6OkZsb2F0OjpJbnRydXNpdmU6OlllcyA/IGxpbmVCb3gubG9naWNhbFRvcCgpIDogbGlu
ZUJveC5sb2dpY2FsQm90dG9tKCk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9z
aXRpb24gPSBmbG9hdENhbmRpZGF0ZS5pc0ludHJ1c2l2ZSA/IGxpbmVCb3gubG9naWNhbFRvcCgp
IDogbGluZUJveC5sb2dpY2FsQm90dG9tKCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRv
cExlZnQoeyBsaW5lQm94LmxvZ2ljYWxMZWZ0KCksIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gfSk7
CiAgICAgICAgICAgICAvLyBGbG9hdCBpdC4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9w
TGVmdChmbG9hdGluZ0NvbnRleHQucG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCwgaG9yaXpvbnRh
bENvbnN0cmFpbnRzKSk7CkBAIC00OTQsNyArNDkxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6
TGkKICAgICBhdXRvIGxpbmVJbmRleCA9IGlubGluZUNvbnRlbnQubGluZUJveGVzLnNpemUoKTsK
ICAgICBhdXRvIGxpbmVJbmtPdmVyZmxvdyA9IGxpbmVCb3guc2Nyb2xsYWJsZU92ZXJmbG93KCk7
CiAgICAgLy8gQ29tcHV0ZSBib3ggZmluYWwgZ2VvbWV0cnkuCi0gICAgYXV0byYgbGluZVJ1bnMg
PSBsaW5lQ29udGVudC5ydW5MaXN0OworICAgIGF1dG8mIGxpbmVSdW5zID0gbGluZS5ydW5zKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyAr
K2luZGV4KSB7CiAgICAgICAgIGF1dG8mIGxpbmVSdW4gPSBsaW5lUnVucy5hdChpbmRleCk7CiAg
ICAgICAgIGF1dG8mIGxvZ2ljYWxSZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZDIwYWE5ZWE5NjM4YWM1YmI1NjE1ZDljZWNh
YTM5OGJlNjBlN2JiYi4uMWRiMGZjNGRjZjY0YmE2NGRlNWUzMzE1ZTQzMzdiZWMxNGY4Y2VkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKICAgICBMaW5l
QnVpbGRlcjo6Q29uc3RyYWludHMgY29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApOwotICAgIHZvaWQg
c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRl
bnQmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIHNldERpc3BsYXlC
b3hlc0ZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXImLCBjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6
TGluZUNvbnRlbnQmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGlu
dmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKIAogICAg
IGNvbnN0IElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6
Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNmNjZjIy
ZjY4MmNhYmFjODE4MzRhNTdiOTg5MDBmNDA0ZDBmMzVkNi4uOTQ1NGI5M2FlODZjODQ1MjJhYzcy
OTVlZGZkNjYzN2YwMzVjMzAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtODksMTEg
Kzg5LDEzIEBAIHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMm
IGNvbnN0cmFpbnRzKQogICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IEFzY2VudEFuZERlc2NlbnQg
eyBhc2NlbnRBbmREZXNjZW50LmFzY2VudCwgaW5pdGlhbExpbmVIZWlnaHQgLSBhc2NlbnRBbmRE
ZXNjZW50LmFzY2VudCB9OwogICAgIGVsc2UKICAgICAgICAgbV9pbml0aWFsU3RydXQgPSB7IH07
Ci0KLSAgICByZXNldENvbnRlbnQoKTsKKyAgICBjbGVhcigpOworI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgbV9pc0Nsb3NlZCA9IGZhbHNlOworI2VuZGlmCiB9CiAKLXZvaWQgTGluZUJ1aWxkZXI6
OnJlc2V0Q29udGVudCgpCit2b2lkIExpbmVCdWlsZGVyOjpjbGVhcigpCiB7CiAgICAgbV9saW5l
Qm94LnNldExvZ2ljYWxXaWR0aCh7IH0pOwogICAgIG1fbGluZUJveC5zZXRJc0NvbnNpZGVyZWRF
bXB0eSgpOwpAQCAtMTAyLDE0ICsxMDQsMTcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6cmVzZXRDb250
ZW50KCkKICAgICBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFibGVUcmFpbGluZ0Nv
bnRlbnQgPSB7IH07CiB9CiAKLUxpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9z
ZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50
KQordm9pZCBMaW5lQnVpbGRlcjo6Y2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IGlz
TGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1f
aXNDbG9zZWQgPSB0cnVlOworI2VuZGlmCiAgICAgLy8gMS4gUmVtb3ZlIHRyaW1tYWJsZSB0cmFp
bGluZyBjb250ZW50LgogICAgIC8vIDIuIEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxs
eSBhbmQgaG9yaXpvbnRhbGx5LgogICAgIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgp
OwogICAgIHZpc3VhbGx5Q29sbGFwc2VQcmVXcmFwT3ZlcmZsb3dDb250ZW50KCk7CiAgICAgaWYg
KG1faXNJbnRyaW5zaWNTaXppbmcpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcnVucyk7Cisg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaGFuZ2luZ0NvbnRlbnQgPSBjb2xsZWN0SGFuZ2lu
Z0NvbnRlbnQoaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KTsKICAgICBhZGp1c3RCYXNlbGlu
ZUFuZExpbmVIZWlnaHQoKTsKQEAgLTEyNCw3ICsxMjksNiBAQCBMaW5lQnVpbGRlcjo6UnVuTGlz
dCBMaW5lQnVpbGRlcjo6Y2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IGlzTGFzdExp
bmVXaQogICAgIH0KICAgICBhbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCk7CiAgICAgYWxpZ25Ib3Jp
em9udGFsbHkoaGFuZ2luZ0NvbnRlbnQsIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7Ci0g
ICAgcmV0dXJuIFdURk1vdmUobV9ydW5zKTsKIH0KIAogdm9pZCBMaW5lQnVpbGRlcjo6YWxpZ25D
b250ZW50VmVydGljYWxseSgpCkBAIC00MDMsNiArNDA3LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6
bW92ZUxvZ2ljYWxSaWdodChJbmxpbmVMYXlvdXRVbml0IGRlbHRhKQogCiB2b2lkIExpbmVCdWls
ZGVyOjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgpCiB7CisgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBhcHBlbmRX
aXRoKGlubGluZUl0ZW0sIHsgbG9naWNhbFdpZHRoLCBmYWxzZSB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
dWlsZGVyLmgKaW5kZXggZWJhMzA1N2M4YzkyYTZlNTUzMTAyNWRiZDI4ZTE4ODU4NzI0OTNhYS4u
MWE2YWUwMDZhOGQ5YjZlMDM0ZTY1NGE0NTY0Mzc0M2U1YzMyMDcyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVp
bGRlci5oCkBAIC01NSw5ICs1NSwxMyBAQCBwdWJsaWM6CiAgICAgfkxpbmVCdWlsZGVyKCk7CiAK
ICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMmKTsKKworICAgIGVudW0gY2xh
c3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsgTm8sIFllcyB9OworICAgIHZvaWQgY2xv
c2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KTsKKwogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IElubGluZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBh
cHBlbmRQYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0SXRlbSYsIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBib29sIG5lZWRzSHlwZW4pOwotICAgIHZvaWQgcmVz
ZXRDb250ZW50KCk7CisgICAgdm9pZCBjbGVhcigpOwogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94LmlzQ29uc2lkZXJlZEVtcHR5KCk7IH0KICAgICBi
b29sIGhhc0ludHJ1c2l2ZUZsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRydXNpdmVGbG9h
dDsgfQogICAgIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgoKSBjb25zdCB7IHJldHVy
biBsb2dpY2FsV2lkdGgoKSAtIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQpAQCAtMTQwLDggKzE0
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbV9leHBhbnNpb25PcHBvcnR1bml0eUNv
dW50IHsgMCB9OwogICAgIH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZlY3RvcjxSdW4sIDEwPjsK
LSAgICBlbnVtIGNsYXNzIElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCB7IE5vLCBZZXMgfTsK
LSAgICBSdW5MaXN0IGNsb3NlKElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCA9IElzTGFzdExp
bmVXaXRoSW5saW5lQ29udGVudDo6Tm8pOworICAgIGNvbnN0IFJ1bkxpc3QmIHJ1bnMoKSBjb25z
dCB7IHJldHVybiBtX3J1bnM7IH0KIAogICAgIHN0YXRpYyBBc2NlbnRBbmREZXNjZW50IGhhbGZM
ZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQgbGluZUxv
Z2ljYWxIZWlnaHQpOwogCkBAIC0yMjMsNiArMjI2LDkgQEAgcHJpdmF0ZToKICAgICBMaW5lQm94
IG1fbGluZUJveDsKICAgICBPcHRpb25hbDxib29sPiBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZv
cmVUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ7CiAgICAgYm9vbCBtX3Nob3VsZElnbm9yZVRyYWls
aW5nTGV0dGVyU3BhY2luZyB7IGZhbHNlIH07CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29s
IG1faXNDbG9zZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiBpbmxpbmUgdm9pZCBMaW5lQnVp
bGRlcjo6VHJpbW1hYmxlVHJhaWxpbmdDb250ZW50OjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4
dC5jcHAKaW5kZXggNWJmNzcxOGJjOTQ2NDZlYmZmMzFjZGYxOTlkNzU0YzlmMzUwM2VjMS4uNThk
ZTYxM2EwZjM4MzI3OWY5MWI3ZjQzYWE5ODBjYzljMzg3ZDA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250
ZXh0LmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIExpbmVMYXlvdXRDb250ZXh0OjpMaW5lTGF5b3V0
Q29udGV4dChjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0CiB7CiB9
CiAKLUxpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5
b3V0TGluZShMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgSW5saW5lSXRlbVJhbmdlIGxheW91dFJh
bmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKQorTGlu
ZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpsYXlvdXRJbmxp
bmVDb250ZW50KExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91
dFJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKQog
ewogICAgIEFTU0VSVChtX2Zsb2F0cy5pc0VtcHR5KCkpOwogICAgIG1fcGFydGlhbExlYWRpbmdU
ZXh0SXRlbSA9IHsgfTsKQEAgLTMyNSwyNyArMzI1LDE2IEBAIExpbmVMYXlvdXRDb250ZXh0OjpM
aW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5lQnVpbGRlciYgbGlu
ZSwKICAgICByZXR1cm4gY2xvc2UobGluZSwgbGF5b3V0UmFuZ2UsIGNvbW1pdHRlZElubGluZUl0
ZW1Db3VudCwgeyB9KTsKIH0KIAotTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVM
YXlvdXRDb250ZXh0OjpjbG9zZShMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgSW5saW5lSXRlbVJh
bmdlIGxheW91dFJhbmdlLCB1bnNpZ25lZCBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIE9wdGlv
bmFsPExpbmVDb250ZW50OjpQYXJ0aWFsQ29udGVudD4gcGFydGlhbENvbnRlbnQpCitMaW5lTGF5
b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWls
ZGVyJiBsaW5lLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCB1bnNpZ25lZCBj
b21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIE9wdGlvbmFsPExpbmVDb250ZW50OjpQYXJ0aWFsQ29u
dGVudD4gcGFydGlhbENvbnRlbnQpCiB7CiAgICAgQVNTRVJUKGNvbW1pdHRlZElubGluZUl0ZW1D
b3VudCB8fCAhbV9mbG9hdHMuaXNFbXB0eSgpIHx8IGxpbmUuaGFzSW50cnVzaXZlRmxvYXQoKSk7
Ci0gICAgaWYgKCFjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQpIHsKLSAgICAgICAgaWYgKG1fZmxv
YXRzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gV2UgZGlkbid0IG1hbmFnZSB0byBhZGQg
YSBydW4gb3IgYSBmbG9hdCBhdCB0aGlzIHZlcnRpY2FsIHBvc2l0aW9uLgotICAgICAgICAgICAg
cmV0dXJuIExpbmVDb250ZW50IHsgeyB9LCB7IH0sIFdURk1vdmUobV9mbG9hdHMpLCBsaW5lLmNs
b3NlKCksIGxpbmUubGluZUJveCgpIH07Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgdHJh
aWxpbmdJbmxpbmVJdGVtSW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydCArIG1fZmxvYXRzLnNpemUo
KSAtIDE7Ci0gICAgICAgIHJldHVybiBMaW5lQ29udGVudCB7IHRyYWlsaW5nSW5saW5lSXRlbUlu
ZGV4LCB7IH0sIFdURk1vdmUobV9mbG9hdHMpLCBsaW5lLmNsb3NlKCksIGxpbmUubGluZUJveCgp
IH07Ci0gICAgfQotICAgIC8vIEFkanVzdCBoeXBoZW5hdGVkIGxpbmUgY291bnQuCi0gICAgaWYg
KHBhcnRpYWxDb250ZW50ICYmIHBhcnRpYWxDb250ZW50LT50cmFpbGluZ0NvbnRlbnRIYXNIeXBo
ZW4pCi0gICAgICAgICsrbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudDsKLSAgICBlbHNl
Ci0gICAgICAgIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291bnQgPSAwOwotICAgIEFTU0VS
VChjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQpOwotICAgIHVuc2lnbmVkIHRyYWlsaW5nSW5saW5l
SXRlbUluZGV4ID0gbGF5b3V0UmFuZ2Uuc3RhcnQgKyBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQg
KyBtX2Zsb2F0cy5zaXplKCkgLSAxOwotICAgIEFTU0VSVCh0cmFpbGluZ0lubGluZUl0ZW1JbmRl
eCA8IGxheW91dFJhbmdlLmVuZCk7CisgICAgYXV0byBudW1iZXJPZkNvbW1pdHRlZEl0ZW1zID0g
Y29tbWl0dGVkSW5saW5lSXRlbUNvdW50ICsgbV9mbG9hdHMuc2l6ZSgpOworICAgIGF1dG8gdHJh
aWxpbmdJbmxpbmVJdGVtSW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydCArIG51bWJlck9mQ29tbWl0
dGVkSXRlbXMgLSAxOworICAgIGF1dG8gbGluZVJhbmdlID0gSW5saW5lSXRlbVJhbmdlIHsgbGF5
b3V0UmFuZ2Uuc3RhcnQsIHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ICsgMSB9OworICAgIEFTU0VS
VChsaW5lUmFuZ2UuZW5kIDw9IGxheW91dFJhbmdlLmVuZCk7CisKICAgICBhdXRvIGlzTGFzdExp
bmVXaXRoSW5saW5lQ29udGVudCA9IFsmXSB7Ci0gICAgICAgIGlmICh0cmFpbGluZ0lubGluZUl0
ZW1JbmRleCA9PSBsYXlvdXRSYW5nZS5lbmQgLSAxKQorICAgICAgICBpZiAobGluZVJhbmdlLmVu
ZCA9PSBsYXlvdXRSYW5nZS5lbmQpCiAgICAgICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Oklz
TGFzdExpbmVXaXRoSW5saW5lQ29udGVudDo6WWVzOwogICAgICAgICBpZiAocGFydGlhbENvbnRl
bnQpCiAgICAgICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudDo6Tm87CkBAIC0zNTgsMTAgKzM0NywxMyBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGlu
ZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5lLCBjb25z
dAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIExpbmVCdWls
ZGVyOjpJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vOwogICAgIH0oKTsKLSAgICByZXR1
cm4gTGluZUNvbnRlbnQgeyB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCwgcGFydGlhbENvbnRlbnQs
IFdURk1vdmUobV9mbG9hdHMpLCBsaW5lLmNsb3NlKGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVu
dCksIGxpbmUubGluZUJveCgpIH07CisgICAgbGluZS5jbG9zZShpc0xhc3RMaW5lV2l0aElubGlu
ZUNvbnRlbnQpOworICAgIC8vIEFkanVzdCBoeXBoZW5hdGVkIGxpbmUgY291bnQuCisgICAgbV9z
dWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudCA9IHBhcnRpYWxDb250ZW50ICYmIHBhcnRpYWxD
b250ZW50LT50cmFpbGluZ0NvbnRlbnRIYXNIeXBoZW4gPyBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVk
TGluZUNvdW50ICsgMSA6IDA7CisgICAgcmV0dXJuIExpbmVDb250ZW50IHsgcGFydGlhbENvbnRl
bnQsIGxpbmVSYW5nZSwgV1RGTW92ZShtX2Zsb2F0cykgfTsKIH0KIAotdm9pZCBMaW5lTGF5b3V0
Q29udGV4dDo6bmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUs
IHVuc2lnbmVkIGN1cnJlbnRJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSBs
YXlvdXRSYW5nZSwgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0
aCwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVMaW5lV2lkdGgsIElubGluZUxheW91dFVuaXQg
Y3VycmVudExvZ2ljYWxSaWdodCkKK3ZvaWQgTGluZUxheW91dENvbnRleHQ6Om5leHRDb250ZW50
Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCB1bnNpZ25lZCBjdXJyZW50SW5s
aW5lSXRlbUluZGV4LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCBPcHRpb25h
bDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBJbmxpbmVMYXlvdXRVbml0
IGF2YWlsYWJsZUxpbmVXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0
KQogewogICAgIEFTU0VSVChjdXJyZW50SW5saW5lSXRlbUluZGV4IDwgbGF5b3V0UmFuZ2UuZW5k
KTsKICAgICBsaW5lQ2FuZGlkYXRlLnJlc2V0KCk7CkBAIC00MTcsNyArNDA5LDcgQEAgdm9pZCBM
aW5lTGF5b3V0Q29udGV4dDo6Y29tbWl0RmxvYXRzKExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBM
aW5lQ2FuZGlkYXRlJiBsaW4KICAgICBmb3IgKGF1dG8mIGZsb2F0Q2FuZGlkYXRlIDogZmxvYXRD
b250ZW50Lmxpc3QoKSkgewogICAgICAgICBpZiAoIWZsb2F0Q2FuZGlkYXRlLmlzSW50cnVzaXZl
ICYmIGNvbW1pdEludHJ1c2l2ZU9ubHkgPT0gQ29tbWl0SW50cnVzaXZlRmxvYXRzT25seTo6WWVz
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1fZmxvYXRzLmFwcGVuZCh7IGZsb2F0
Q2FuZGlkYXRlLmlzSW50cnVzaXZlPyBMaW5lQ29udGVudDo6RmxvYXQ6OkludHJ1c2l2ZTo6WWVz
IDogTGluZUNvbnRlbnQ6OkZsb2F0OjpJbnRydXNpdmU6Ok5vLCBmbG9hdENhbmRpZGF0ZS5pdGVt
IH0pOworICAgICAgICBtX2Zsb2F0cy5hcHBlbmQoeyBmbG9hdENhbmRpZGF0ZS5pc0ludHJ1c2l2
ZSwgZmxvYXRDYW5kaWRhdGUuaXRlbSB9KTsKICAgICAgICAgaWYgKGZsb2F0Q2FuZGlkYXRlLmlz
SW50cnVzaXZlKSB7CiAgICAgICAgICAgICBoYXNJbnRydXNpdmVGbG9hdCA9IHRydWU7CiAgICAg
ICAgICAgICAvLyBUaGlzIGZsb2F0IGlzIGludHJ1c2l2ZSBhbmQgaXQgc2hyaW5rcyB0aGUgY3Vy
cmVudCBsaW5lLgpAQCAtNTI4LDcgKzUyMCw3IEBAIHZvaWQgTGluZUxheW91dENvbnRleHQ6OmNv
bW1pdFBhcnRpYWxDb250ZW50KExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBMaW5lQnJlYWtlCiBz
aXplX3QgTGluZUxheW91dENvbnRleHQ6OnJlYnVpbGRMaW5lKExpbmVCdWlsZGVyJiBsaW5lLCBj
b25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlKQogewogICAgIC8vIENsZWFyIHRoZSBs
aW5lIGFuZCBzdGFydCBhcHBlbmRpbmcgdGhlIGlubGluZSBpdGVtcyBjbG9zaW5nIHdpdGggdGhl
IGxhc3Qgd3JhcCBvcHBvcnR1bml0eSBydW4uCi0gICAgbGluZS5yZXNldENvbnRlbnQoKTsKKyAg
ICBsaW5lLmNsZWFyKCk7CiAgICAgYXV0byBjdXJyZW50SXRlbUluZGV4ID0gbGF5b3V0UmFuZ2Uu
c3RhcnQ7CiAgICAgYXV0byBsb2dpY2FsUmlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAg
ICBpZiAobV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRl
eCAzMWZmODZiZmQyNDMzYTAwNGNlMjA1NTcwZDI4OTg3MjU1YTZmYzFlLi4zNGI4ZmNiOWRjNGFm
NTdjZjI4NmRiYWU2YzA5OGUyNmNjYzM4YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTM5
LDMzICszOSwzMCBAQCBjbGFzcyBMaW5lTGF5b3V0Q29udGV4dCB7CiBwdWJsaWM6CiAgICAgTGlu
ZUxheW91dENvbnRleHQoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBDb250
YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSW5saW5lSXRlbXMmKTsKIAor
ICAgIHN0cnVjdCBJbmxpbmVJdGVtUmFuZ2UgeworICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0KKyAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBlbmQgLSBzdGFydDsgfQorICAgICAgICBzaXplX3Qgc3RhcnQgeyAwIH07CisgICAg
ICAgIHNpemVfdCBlbmQgeyAwIH07CisgICAgfTsKICAgICBzdHJ1Y3QgTGluZUNvbnRlbnQgewog
ICAgICAgICBzdHJ1Y3QgUGFydGlhbENvbnRlbnQgewogICAgICAgICAgICAgYm9vbCB0cmFpbGlu
Z0NvbnRlbnRIYXNIeXBoZW4geyBmYWxzZSB9OwogICAgICAgICAgICAgdW5zaWduZWQgb3ZlcmZs
b3dDb250ZW50TGVuZ3RoIHsgMCB9OwogICAgICAgICB9OwotICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZD4gdHJhaWxpbmdJbmxpbmVJdGVtSW5kZXg7CiAgICAgICAgIE9wdGlvbmFsPFBhcnRpYWxD
b250ZW50PiBwYXJ0aWFsQ29udGVudDsKKyAgICAgICAgSW5saW5lSXRlbVJhbmdlIGlubGluZUl0
ZW1zOwogICAgICAgICBzdHJ1Y3QgRmxvYXQgewotICAgICAgICAgICAgZW51bSBjbGFzcyBJbnRy
dXNpdmUgeyBObywgWWVzIH07Ci0gICAgICAgICAgICBJbnRydXNpdmUgaXNJbnRydXNpdmUgeyBJ
bnRydXNpdmU6OlllcyB9OworICAgICAgICAgICAgYm9vbCBpc0ludHJ1c2l2ZSB7IHRydWUgfTsK
ICAgICAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIGl0ZW0geyBudWxscHRyIH07CiAgICAgICAg
IH07CiAgICAgICAgIHVzaW5nIEZsb2F0TGlzdCA9IFZlY3RvcjxGbG9hdD47CiAgICAgICAgIEZs
b2F0TGlzdCBmbG9hdHM7Ci0gICAgICAgIGNvbnN0IExpbmVCdWlsZGVyOjpSdW5MaXN0IHJ1bkxp
c3Q7Ci0gICAgICAgIGNvbnN0IExpbmVCb3ggbGluZUJveDsKLSAgICB9OwotICAgIHN0cnVjdCBJ
bmxpbmVJdGVtUmFuZ2UgewotICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBz
dGFydCA9PSBlbmQ7IH0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBlbmQg
LSBzdGFydDsgfQotICAgICAgICBzaXplX3Qgc3RhcnQgeyAwIH07Ci0gICAgICAgIHNpemVfdCBl
bmQgeyAwIH07CiAgICAgfTsKLSAgICBMaW5lQ29udGVudCBsYXlvdXRMaW5lKExpbmVCdWlsZGVy
JiwgY29uc3QgSW5saW5lSXRlbVJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRp
bmdDb250ZW50TGVuZ3RoKTsKKyAgICBMaW5lQ29udGVudCBsYXlvdXRJbmxpbmVDb250ZW50KExp
bmVCdWlsZGVyJiwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiwgT3B0aW9uYWw8dW5zaWduZWQ+IHBh
cnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBuZXh0Q29u
dGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYsIHVuc2lnbmVkIGlubGluZUl0ZW1JbmRleCwgY29u
c3QgSW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gb3ZlcmZs
b3dMZW5ndGgsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlTGluZVdpZHRoLCBJbmxpbmVMYXlv
dXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQpOworICAgIHZvaWQgbmV4dENvbnRlbnRGb3JMaW5l
KExpbmVDYW5kaWRhdGUmLCB1bnNpZ25lZCBpbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGluZUl0
ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCwg
SW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVMaW5lV2lkdGgsIElubGluZUxheW91dFVuaXQgY3Vy
cmVudExvZ2ljYWxSaWdodCk7CiAgICAgc3RydWN0IFJlc3VsdCB7CiAgICAgICAgIExpbmVCcmVh
a2VyOjpJc0VuZE9mTGluZSBpc0VuZE9mTGluZSB7IExpbmVCcmVha2VyOjpJc0VuZE9mTGluZTo6
Tm8gfTsKICAgICAgICAgc3RydWN0IENvbW1pdHRlZENvbnRlbnRDb3VudCB7CkBAIC04MCw3ICs3
Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVzdWx0IGhhbmRsZUZsb2F0c0FuZElubGluZUNvbnRlbnQo
TGluZUJyZWFrZXImLCBMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0
UmFuZ2UsIGNvbnN0IExpbmVDYW5kaWRhdGUmKTsKICAgICBzaXplX3QgcmVidWlsZExpbmUoTGlu
ZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlKTsKICAgICB2b2lk
IGNvbW1pdFBhcnRpYWxDb250ZW50KExpbmVCdWlsZGVyJiwgY29uc3QgTGluZUJyZWFrZXI6OlJ1
bkxpc3QmLCBjb25zdCBMaW5lQnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50
Jik7Ci0gICAgTGluZUNvbnRlbnQgY2xvc2UoTGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVt
UmFuZ2UgbGF5b3V0UmFuZ2UsIHVuc2lnbmVkIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgT3B0
aW9uYWw8TGluZUNvbnRlbnQ6OlBhcnRpYWxDb250ZW50Pik7CisgICAgTGluZUNvbnRlbnQgY2xv
c2UoTGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCB1bnNp
Z25lZCBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIE9wdGlvbmFsPExpbmVDb250ZW50OjpQYXJ0
aWFsQ29udGVudD4pOwogCiAgICAgSW5saW5lTGF5b3V0VW5pdCBpbmxpbmVJdGVtV2lkdGgoY29u
c3QgSW5saW5lSXRlbSYsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KSBjb25z
dDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407213</attachid>
            <date>2020-08-25 11:59:35 -0700</date>
            <delta_ts>2020-08-25 18:32:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214790-20200825115934.patch</filename>
            <type>text/plain</type>
            <size>26039</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQwMzhmOTgwNmI4OGVm
NTA2MGM4Y2MyZDhmY2Y2ZjA1OTQ1MTcxZS4uZTY0OTFmZjY3OGVjODZjMTNmNTk3NTljOGI1NGRm
YWZkNThhYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA4LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBEbyBub3Qg
bW92ZSB0aGUgcnVucyBvdXQgb2YgdGhlIExpbmVCdWlsZGVyIHdoaWxlIGNsb3NpbmcgdGhlIGxp
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc5
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsb3Np
bmcgdGhlIGxpbmUgc2hvdWxkIG5vdCBtZWFuIHRoYXQgdGhlIExpbmVCdWlsZGVyIGRvZXMgbm90
IGhhdmUgdGhlIGxpbmUgcnVucyBhbnltb3JlLgorICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0
aW9uIGZvciBtb3ZpbmcgYWxpZ25tZW50IGNvZGUgZnJvbSBMaW5lQnVpbGRlciB0byBMaW5lQm94
LiAKKyAgICAgICAgKFRoaXMgcGF0Y2ggYWxzbyByZWZhY3RvcnMgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmxpbmVMYXlvdXQgdG8gbWFrZSBpdCBsZXNzIHZlcmJvc2UuKQorCisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNGb3JM
aW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAg
KiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cnVucyBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpuZXh0Q29udGVudEZvckxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6Y29tbWl0
RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6Omxh
eW91dExpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xp
bmVMYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRD
b250ZXh0OjpJbmxpbmVJdGVtUmFuZ2U6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlOjpzaXplIGNvbnN0
KToKKwogMjAyMC0wOC0yNSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IEFkZCBzZXR0aW5nIGZvciBsYXp5IGlmcmFtZSBsb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKaW5kZXggYWIyNDY3ZWY5ZWRkNTBhZmJkMmU5NjQ2NTg4YjUzNWExMmVm
MDQyNi4uY2Q4ZmExYjIwYzg0MDdkODUyODRjOTU5Y2Q0NzZhZDgyMTlkMzU3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTMxLDU2ICsxMzEsNTMgQEAgdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25T
dGF0ZSYgaW52YWxpZGF0aW8KICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBm
b3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKLXZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5l
TGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCBjb25zdCBDb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVMYXlvdXRD
b250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgQ29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cykKIHsKICAgICBhdXRvIGxpbmVMb2dpY2Fs
VG9wID0gY29uc3RyYWludHMudmVydGljYWwubG9naWNhbFRvcDsKLSAgICBzdHJ1Y3QgUHJldmlv
dXNMaW5lRW5kIHsKLSAgICAgICAgdW5zaWduZWQgcnVuSW5kZXg7CisgICAgc3RydWN0IFByZXZp
b3VzTGluZSB7CisgICAgICAgIExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgcmFu
Z2U7CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0NvbnRlbnRMZW5ndGg7CiAg
ICAgfTsKLSAgICBPcHRpb25hbDxQcmV2aW91c0xpbmVFbmQ+IHByZXZpb3VzTGluZUVuZDsKLSAg
ICBhdXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCku
dGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJbnRyaW5zaWNTaXppbmc6Ok5vIH07CisgICAgT3B0
aW9uYWw8UHJldmlvdXNMaW5lPiBwcmV2aW91c0xpbmU7CisgICAgYXV0byBsaW5lID0gTGluZUJ1
aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVyOjpJ
bnRyaW5zaWNTaXppbmc6Ok5vIH07CiAgICAgYXV0byBsaW5lTGF5b3V0Q29udGV4dCA9IExpbmVM
YXlvdXRDb250ZXh0IHsgKnRoaXMsIHJvb3QoKSwgaW5saW5lSXRlbXMgfTsKIAotICAgIHdoaWxl
ICghbGF5b3V0UmFuZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGxpbmVCdWlsZGVyLmluaXRpYWxp
emUoY29uc3RyYWludHNGb3JMaW5lKGNvbnN0cmFpbnRzLmhvcml6b250YWwsIGxpbmVMb2dpY2Fs
VG9wKSk7Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlv
dXRMaW5lKGxpbmVCdWlsZGVyLCBsYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lRW5kID8gcHJldmlv
dXNMaW5lRW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBXVEY6Om51bGxvcHQpOwotICAgICAg
ICBzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9u
dGFsKTsKLQotICAgICAgICBpZiAobGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgp
IHsKLSAgICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gbGluZUNvbnRlbnQubGluZUJveC5sb2dp
Y2FsQm90dG9tKCk7CisgICAgd2hpbGUgKCFuZWVkc0xheW91dFJhbmdlLmlzRW1wdHkoKSkgewor
ICAgICAgICBsaW5lLmluaXRpYWxpemUoY29uc3RyYWludHNGb3JMaW5lKGNvbnN0cmFpbnRzLmhv
cml6b250YWwsIGxpbmVMb2dpY2FsVG9wKSk7CisgICAgICAgIC8vIFR1cm4gcHJldmlvdXMgbGlu
ZSdzIG92ZXJmbG93IGNvbnRlbnQgbGVuZ3RoIGludG8gdGhlIG5leHQgbGluZSdzIGxlYWRpbmcg
Y29udGVudCBwYXJ0aWFsIGxlbmd0aC4KKyAgICAgICAgLy8gInNwWzwtbGluZSBicmVhay0+XWxp
dF9jb250ZW50IiAtPiBvdmVyZmxvdyBsZW5ndGg6IDExIC0+IGxlYWRpbmcgcGFydGlhbCBjb250
ZW50IGxlbmd0aDogMTEuCisgICAgICAgIGF1dG8gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3Ro
ID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4
dC5sYXlvdXRJbmxpbmVDb250ZW50KGxpbmUsIG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFk
aW5nQ29udGVudExlbmd0aCk7CisgICAgICAgIHNldERpc3BsYXlCb3hlc0ZvckxpbmUobGluZSwg
bGluZUNvbnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworCisgICAgICAgIGF1dG8gbGlu
ZUNvbnRlbnRSYW5nZSA9IGxpbmVDb250ZW50LmlubGluZUl0ZW1zOworICAgICAgICBpZiAoIWxp
bmVDb250ZW50UmFuZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBBU1NFUlQobmVlZHNMYXlv
dXRSYW5nZS5zdGFydCA8IGxpbmVDb250ZW50UmFuZ2UuZW5kKTsKKyAgICAgICAgICAgIGxpbmVM
b2dpY2FsVG9wID0gbGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpOwogICAgICAgICAgICAg
Ly8gV2hlbiB0aGUgdHJhaWxpbmcgY29udGVudCBpcyBwYXJ0aWFsLCB3ZSBuZWVkIHRvIHJldXNl
IHRoZSBsYXN0IElubGluZVRleHRJdGVtLgotICAgICAgICAgICAgYXV0byB0cmFpbGluZ1J1bklu
ZGV4ID0gKmxpbmVDb250ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4OwotICAgICAgICAgICAg
aWYgKGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50KSB7CisgICAgICAgICAgICBhdXRvIGxhc3RJ
bmxpbmVJdGVtTmVlZHNQYXJ0aWFsTGF5b3V0ID0gbGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQu
aGFzVmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChsYXN0SW5saW5lSXRlbU5lZWRzUGFydGlhbExh
eW91dCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVu
dC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAvLyBUdXJuIHByZXZp
b3VzIGxpbmUncyBvdmVyZmxvdyBjb250ZW50IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBs
ZWFkaW5nIGNvbnRlbnQgcGFydGlhbCBsZW5ndGguCi0gICAgICAgICAgICAgICAgLy8gInNwPC0+
bGl0Y29udGVudCIgLT4gb3ZlcmZsb3cgbGVuZ3RoOiAxMCAtPiBsZWFkaW5nIHBhcnRpYWwgY29u
dGVudCBsZW5ndGg6IDEwLgotICAgICAgICAgICAgICAgIGF1dG8gaXNOZXdJbmxpbmVDb250ZW50
ID0gIXByZXZpb3VzTGluZUVuZAotICAgICAgICAgICAgICAgICAgICB8fCB0cmFpbGluZ1J1bklu
ZGV4ID4gcHJldmlvdXNMaW5lRW5kLT5ydW5JbmRleAotICAgICAgICAgICAgICAgICAgICB8fCAo
cHJldmlvdXNMaW5lRW5kLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggJiYgKnByZXZpb3VzTGluZUVu
ZC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoID4gbGluZUNvbnRlbnQucGFydGlhbENvbnRlbnQtPm92
ZXJmbG93Q29udGVudExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlzTmV3SW5saW5lQ29u
dGVudCkgewotICAgICAgICAgICAgICAgICAgICAvLyBTdHJhcnQgdGhlIG5leHQgbGluZSB3aXRo
IHRoZSBzYW1lLCBwYXJ0aWFsIHRyYWlsaW5nIElubGluZVRleHRJdGVtLgotICAgICAgICAgICAg
ICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBQcmV2aW91c0xpbmVFbmQgeyB0cmFpbGluZ1J1bklu
ZGV4LCBsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoIH07
Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gcHJldmlvdXNMaW5lRW5k
LT5ydW5JbmRleDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGF1
dG8gbGluZUxheW91dEhhc0FkdmFuY2VkID0gIXByZXZpb3VzTGluZQorICAgICAgICAgICAgICAg
ICAgICB8fCBsaW5lQ29udGVudFJhbmdlLmVuZCA+IHByZXZpb3VzTGluZS0+cmFuZ2UuZW5kCisg
ICAgICAgICAgICAgICAgICAgIHx8IChwcmV2aW91c0xpbmUtPm92ZXJmbG93Q29udGVudExlbmd0
aCAmJiAqcHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggPiBsaW5lQ29udGVudC5w
YXJ0aWFsQ29udGVudC0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWxpbmVMYXlvdXRIYXNBZHZhbmNlZCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBvdmVyIHRvIHRoZSBu
ZXh0IHJ1biBpZiB3ZSBhcmUgc3R1Y2sgb24gdGhpcyBwYXJ0aWFsIGNvbnRlbnQgKHdoZW4gdGhl
IG92ZXJmbG93IGNvbnRlbnQgbGVuZ3RoIHJlbWFpbnMgdGhlIHNhbWUpLgotICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBjZXJ0YWlubHkgbG9zZSBzb21lIGNvbnRlbnQsIGJ1dCB3ZSB3b3VsZCBi
ZSBidXN5IGxvb3BpbmcgYW55d2F5LgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0xpbmVF
bmQgPSBQcmV2aW91c0xpbmVFbmQgeyB0cmFpbGluZ1J1bkluZGV4LCB7IH0gfTsKLSAgICAgICAg
ICAgICAgICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSBwcmV2aW91c0xpbmVFbmQtPnJ1bkluZGV4
ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2VydGFpbmx5IGxvc2Ugc29tZSBjb250
ZW50LCBidXQgd2Ugd291bGQgYmUgYnVzeSBsb29waW5nIG90aGVyd2lzZS4KKyAgICAgICAgICAg
ICAgICAgICAgbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByZXZp
b3VzTGluZUVuZCA9IFByZXZpb3VzTGluZUVuZCB7IHRyYWlsaW5nUnVuSW5kZXgsIHsgfSB9Owot
ICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gcHJldmlvdXNMaW5lRW5kLT5ydW5J
bmRleCArIDE7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuZWVkc0xheW91dFJhbmdlLnN0
YXJ0ID0gbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPyBsaW5lQ29udGVudFJhbmdl
LmVuZCAtIDEgOiBsaW5lQ29udGVudFJhbmdlLmVuZDsKKyAgICAgICAgICAgIHByZXZpb3VzTGlu
ZSA9IFByZXZpb3VzTGluZSB7IGxpbmVDb250ZW50UmFuZ2UsIGxpbmVDb250ZW50LnBhcnRpYWxD
b250ZW50ID8gbWFrZU9wdGlvbmFsKGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50LT5vdmVyZmxv
d0NvbnRlbnRMZW5ndGgpIDogV1RGOjpudWxsb3B0IH07CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICAvLyBGbG9hdHMgcHJldmVudGVkIHVzIHBsYWNpbmcgYW55IGNv
bnRlbnQgb24gdGhlIGxpbmUuCi0gICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5ydW5MaXN0Lmlz
RW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChsaW5lQnVpbGRlci5oYXNJbnRydXNpdmVGbG9hdCgp
KTsKKyAgICAgICAgQVNTRVJUKGxpbmUucnVucygpLmlzRW1wdHkoKSk7CisgICAgICAgIEFTU0VS
VChsaW5lLmhhc0ludHJ1c2l2ZUZsb2F0KCkpOwogICAgICAgICAvLyBNb3ZlIHRoZSBuZXh0IGxp
bmUgYmVsb3cgdGhlIGludHJ1c2l2ZSBmbG9hdC4KICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRl
eHQgPSBGbG9hdGluZ0NvbnRleHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS5m
bG9hdGluZ1N0YXRlKCkgfTsKLSAgICAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRp
bmdDb250ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xheW91dFVuaXQobGluZUNv
bnRlbnQubGluZUJveC5sb2dpY2FsQm90dG9tKCkpKTsKKyAgICAgICAgYXV0byBmbG9hdENvbnN0
cmFpbnRzID0gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xh
eW91dFVuaXQobGluZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpKSk7CiAgICAgICAgIEFTU0VS
VChmbG9hdENvbnN0cmFpbnRzLmxlZnQgfHwgZmxvYXRDb25zdHJhaW50cy5yaWdodCk7CiAgICAg
ICAgIHN0YXRpYyBhdXRvIGluaWZpdGVQb2ludCA9IFBvaW50SW5Db250ZXh0Um9vdDo6bWF4KCk7
CiAgICAgICAgIC8vIEluIGNhc2Ugb2YgbGVmdCBhbmQgcmlnaHQgY29uc3RyYWludHMsIHdlIG5l
ZWQgdG8gcGljayB0aGUgb25lIHRoYXQncyBjbG9zZXIgdG8gdGhlIGN1cnJlbnQgbGluZS4KQEAg
LTI1MSwxNiArMjQ4LDE2IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KEluCiB7CiAgICAgYXV0byYg
aW5saW5lSXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGF1dG8g
bWF4aW11bUxpbmVXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gbGluZUJ1
aWxkZXIgPSBMaW5lQnVpbGRlciB7ICp0aGlzLCByb290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwg
TGluZUJ1aWxkZXI6OkludHJpbnNpY1NpemluZzo6WWVzIH07CisgICAgYXV0byBsaW5lID0gTGlu
ZUJ1aWxkZXIgeyAqdGhpcywgcm9vdCgpLnN0eWxlKCkudGV4dEFsaWduKCksIExpbmVCdWlsZGVy
OjpJbnRyaW5zaWNTaXppbmc6OlllcyB9OwogICAgIGF1dG8gbGluZUxheW91dENvbnRleHQgPSBM
aW5lTGF5b3V0Q29udGV4dCB7ICp0aGlzLCByb290KCksIGlubGluZUl0ZW1zIH07CiAgICAgYXV0
byBsYXlvdXRSYW5nZSA9IExpbmVMYXlvdXRDb250ZXh0OjpJbmxpbmVJdGVtUmFuZ2UgeyAwICwg
aW5saW5lSXRlbXMuc2l6ZSgpIH07CiAgICAgd2hpbGUgKCFsYXlvdXRSYW5nZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgLy8gT25seSB0aGUgaG9yaXp0b25hbCBhdmFpbGFibGUgd2lkdGggaXMgY29u
c3RyYWluZWQgd2hlbiBjb21wdXRpbmcgaW50cmluc2ljIHdpZHRoLgotICAgICAgICBsaW5lQnVp
bGRlci5pbml0aWFsaXplKExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyB7IHsgfSwgYXZhaWxhYmxl
V2lkdGgsIHsgfSwgZmFsc2UgfSk7Ci0gICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5
b3V0Q29udGV4dC5sYXlvdXRMaW5lKGxpbmVCdWlsZGVyLCBsYXlvdXRSYW5nZSwgeyB9KTsKLSAg
ICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSAqbGluZUNvbnRlbnQudHJhaWxpbmdJbmxpbmVJdGVt
SW5kZXggKyAxOworICAgICAgICBsaW5lLmluaXRpYWxpemUoTGluZUJ1aWxkZXI6OkNvbnN0cmFp
bnRzIHsgeyB9LCBhdmFpbGFibGVXaWR0aCwgeyB9LCBmYWxzZSB9KTsKKyAgICAgICAgYXV0byBs
aW5lQ29udGVudCA9IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dElubGluZUNvbnRlbnQobGluZSwg
bGF5b3V0UmFuZ2UsIHsgfSk7CisgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gbGluZUNvbnRl
bnQuaW5saW5lSXRlbXMuZW5kOwogICAgICAgICAvLyBGSVhNRTogVXNlIGxpbmUgbG9naWNhbCBs
ZWZ0IGFuZCByaWdodCB0byB0YWtlIGZsb2F0cyBpbnRvIGFjY291bnQuCi0gICAgICAgIG1heGlt
dW1MaW5lV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtTGluZVdpZHRoLCBsaW5lQ29udGVudC5saW5l
Qm94LmxvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgbWF4aW11bUxpbmVXaWR0aCA9IHN0ZDo6bWF4
KG1heGltdW1MaW5lV2lkdGgsIGxpbmUubGluZUJveCgpLmxvZ2ljYWxXaWR0aCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIG1heGltdW1MaW5lV2lkdGg7CiB9CkBAIC00NjQsMTAgKzQ2MSwxMCBAQCBM
aW5lQnVpbGRlcjo6Q29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0cmFp
bnRzRm9yTGluZShjb25zdCBIb3JpegogICAgIHJldHVybiBMaW5lQnVpbGRlcjo6Q29uc3RyYWlu
dHMgeyB7IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxUb3AgfSwgbGluZUxvZ2ljYWxSaWdo
dCAtIGxpbmVMb2dpY2FsTGVmdCwgaW5pdGlhbExpbmVIZWlnaHQsIGxpbmVJc0NvbnN0cmFpbmVk
QnlGbG9hdCB9OwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5
Qm94ZXNGb3JMaW5lKGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCYgbGluZUNv
bnRlbnQsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShj
b25zdCBMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250
ZW50JiBsaW5lQ29udGVudCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFs
Q29uc3RyYWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0
dGluZ1N0YXRlKCk7Ci0gICAgYXV0byYgbGluZUJveCA9IGxpbmVDb250ZW50LmxpbmVCb3g7Cisg
ICAgYXV0byYgbGluZUJveCA9IGxpbmUubGluZUJveCgpOwogCiAgICAgaWYgKCFsaW5lQ29udGVu
dC5mbG9hdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxv
YXRpbmdDb250ZXh0IHsgcm9vdCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3Rh
dGUoKSB9OwpAQCAtNDc2LDcgKzQ3Myw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OnNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpCiAgICAg
ICAgICAgICBhdXRvJiBmbG9hdEJveCA9IGZsb2F0Q2FuZGlkYXRlLml0ZW0tPmxheW91dEJveCgp
OwogICAgICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5
Qm94KGZsb2F0Qm94KTsKICAgICAgICAgICAgIC8vIFNldCBzdGF0aWMgcG9zaXRpb24gZmlyc3Qu
Ci0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gPSBmbG9hdENhbmRpZGF0
ZS5pc0ludHJ1c2l2ZSA9PSBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQ6OkZsb2F0OjpJ
bnRydXNpdmU6OlllcyA/IGxpbmVCb3gubG9naWNhbFRvcCgpIDogbGluZUJveC5sb2dpY2FsQm90
dG9tKCk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gPSBmbG9hdENh
bmRpZGF0ZS5pc0ludHJ1c2l2ZSA/IGxpbmVCb3gubG9naWNhbFRvcCgpIDogbGluZUJveC5sb2dp
Y2FsQm90dG9tKCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoeyBsaW5lQm94
LmxvZ2ljYWxMZWZ0KCksIHZlcnRpY2FsU3RhdGljUG9zaXRpb24gfSk7CiAgICAgICAgICAgICAv
LyBGbG9hdCBpdC4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChmbG9hdGluZ0Nv
bnRleHQucG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSk7
CkBAIC00OTQsNyArNDkxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlz
cGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICBhdXRvIGxp
bmVJbmRleCA9IGlubGluZUNvbnRlbnQubGluZUJveGVzLnNpemUoKTsKICAgICBhdXRvIGxpbmVJ
bmtPdmVyZmxvdyA9IGxpbmVCb3guc2Nyb2xsYWJsZU92ZXJmbG93KCk7CiAgICAgLy8gQ29tcHV0
ZSBib3ggZmluYWwgZ2VvbWV0cnkuCi0gICAgYXV0byYgbGluZVJ1bnMgPSBsaW5lQ29udGVudC5y
dW5MaXN0OworICAgIGF1dG8mIGxpbmVSdW5zID0gbGluZS5ydW5zKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAg
ICAgIGF1dG8mIGxpbmVSdW4gPSBsaW5lUnVucy5hdChpbmRleCk7CiAgICAgICAgIGF1dG8mIGxv
Z2ljYWxSZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmgKaW5kZXggZDIwYWE5ZWE5NjM4YWM1YmI1NjE1ZDljZWNhYTM5OGJlNjBlN2JiYi4u
MWRiMGZjNGRjZjY0YmE2NGRlNWUzMzE1ZTQzMzdiZWMxNGY4Y2VkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKICAgICBMaW5lQnVpbGRlcjo6Q29uc3Ry
YWludHMgY29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIElu
bGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApOwotICAgIHZvaWQgc2V0RGlzcGxheUJveGVz
Rm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIHNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29u
c3QgTGluZUJ1aWxkZXImLCBjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmLCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0
aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKIAogICAgIGNvbnN0IElubGluZUZv
cm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRl
KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNmNjZjIyZjY4MmNhYmFjODE4MzRh
NTdiOTg5MDBmNDA0ZDBmMzVkNi4uOTQ1NGI5M2FlODZjODQ1MjJhYzcyOTVlZGZkNjYzN2YwMzVj
MzAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtODksMTEgKzg5LDEzIEBAIHZvaWQg
TGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQog
ICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IEFzY2VudEFuZERlc2NlbnQgeyBhc2NlbnRBbmREZXNj
ZW50LmFzY2VudCwgaW5pdGlhbExpbmVIZWlnaHQgLSBhc2NlbnRBbmREZXNjZW50LmFzY2VudCB9
OwogICAgIGVsc2UKICAgICAgICAgbV9pbml0aWFsU3RydXQgPSB7IH07Ci0KLSAgICByZXNldENv
bnRlbnQoKTsKKyAgICBjbGVhcigpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9pc0Nsb3Nl
ZCA9IGZhbHNlOworI2VuZGlmCiB9CiAKLXZvaWQgTGluZUJ1aWxkZXI6OnJlc2V0Q29udGVudCgp
Cit2b2lkIExpbmVCdWlsZGVyOjpjbGVhcigpCiB7CiAgICAgbV9saW5lQm94LnNldExvZ2ljYWxX
aWR0aCh7IH0pOwogICAgIG1fbGluZUJveC5zZXRJc0NvbnNpZGVyZWRFbXB0eSgpOwpAQCAtMTAy
LDE0ICsxMDQsMTcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6cmVzZXRDb250ZW50KCkKICAgICBtX2xp
bmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgPSB7IH07CiB9
CiAKLUxpbmVCdWlsZGVyOjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQordm9pZCBMaW5lQnVp
bGRlcjo6Y2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IGlzTGFzdExpbmVXaXRoSW5s
aW5lQ29udGVudCkKIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faXNDbG9zZWQgPSB0cnVl
OworI2VuZGlmCiAgICAgLy8gMS4gUmVtb3ZlIHRyaW1tYWJsZSB0cmFpbGluZyBjb250ZW50Lgog
ICAgIC8vIDIuIEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRh
bGx5LgogICAgIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOwogICAgIHZpc3VhbGx5
Q29sbGFwc2VQcmVXcmFwT3ZlcmZsb3dDb250ZW50KCk7CiAgICAgaWYgKG1faXNJbnRyaW5zaWNT
aXppbmcpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fcnVucyk7CisgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8gaGFuZ2luZ0NvbnRlbnQgPSBjb2xsZWN0SGFuZ2luZ0NvbnRlbnQoaXNMYXN0
TGluZVdpdGhJbmxpbmVDb250ZW50KTsKICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQo
KTsKQEAgLTEyNCw3ICsxMjksNiBAQCBMaW5lQnVpbGRlcjo6UnVuTGlzdCBMaW5lQnVpbGRlcjo6
Y2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IGlzTGFzdExpbmVXaQogICAgIH0KICAg
ICBhbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCk7CiAgICAgYWxpZ25Ib3Jpem9udGFsbHkoaGFuZ2lu
Z0NvbnRlbnQsIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7Ci0gICAgcmV0dXJuIFdURk1v
dmUobV9ydW5zKTsKIH0KIAogdm9pZCBMaW5lQnVpbGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxs
eSgpCkBAIC00MDMsNiArNDA3LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6bW92ZUxvZ2ljYWxSaWdo
dChJbmxpbmVMYXlvdXRVbml0IGRlbHRhKQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmQoY29u
c3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgp
CiB7CisgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBhcHBlbmRXaXRoKGlubGluZUl0ZW0s
IHsgbG9naWNhbFdpZHRoLCBmYWxzZSB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXgg
ZWJhMzA1N2M4YzkyYTZlNTUzMTAyNWRiZDI4ZTE4ODU4NzI0OTNhYS4uMWE2YWUwMDZhOGQ5YjZl
MDM0ZTY1NGE0NTY0Mzc0M2U1YzMyMDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCkBAIC01NSw5
ICs1NSwxMyBAQCBwdWJsaWM6CiAgICAgfkxpbmVCdWlsZGVyKCk7CiAKICAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgQ29uc3RyYWludHMmKTsKKworICAgIGVudW0gY2xhc3MgSXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50IHsgTm8sIFllcyB9OworICAgIHZvaWQgY2xvc2UoSXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50KTsKKwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGluZUl0ZW0mLCBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBhcHBlbmRQYXJ0aWFsVHJh
aWxpbmdUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0SXRlbSYsIElubGluZUxheW91dFVuaXQgbG9n
aWNhbFdpZHRoLCBib29sIG5lZWRzSHlwZW4pOwotICAgIHZvaWQgcmVzZXRDb250ZW50KCk7Cisg
ICAgdm9pZCBjbGVhcigpOwogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9saW5lQm94LmlzQ29uc2lkZXJlZEVtcHR5KCk7IH0KICAgICBib29sIGhhc0ludHJ1c2l2
ZUZsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRydXNpdmVGbG9hdDsgfQogICAgIElubGlu
ZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsV2lkdGgo
KSAtIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQpAQCAtMTQwLDggKzE0NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdW5zaWduZWQgbV9leHBhbnNpb25PcHBvcnR1bml0eUNvdW50IHsgMCB9OwogICAg
IH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZlY3RvcjxSdW4sIDEwPjsKLSAgICBlbnVtIGNsYXNz
IElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCB7IE5vLCBZZXMgfTsKLSAgICBSdW5MaXN0IGNs
b3NlKElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCA9IElzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudDo6Tm8pOworICAgIGNvbnN0IFJ1bkxpc3QmIHJ1bnMoKSBjb25zdCB7IHJldHVybiBtX3J1
bnM7IH0KIAogICAgIHN0YXRpYyBBc2NlbnRBbmREZXNjZW50IGhhbGZMZWFkaW5nTWV0cmljcyhj
b25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOwog
CkBAIC0yMjMsNiArMjI2LDkgQEAgcHJpdmF0ZToKICAgICBMaW5lQm94IG1fbGluZUJveDsKICAg
ICBPcHRpb25hbDxib29sPiBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFibGVUcmFp
bGluZ0NvbnRlbnQ7CiAgICAgYm9vbCBtX3Nob3VsZElnbm9yZVRyYWlsaW5nTGV0dGVyU3BhY2lu
ZyB7IGZhbHNlIH07CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIG1faXNDbG9zZWQgeyBm
YWxzZSB9OworI2VuZGlmCiB9OwogCiBpbmxpbmUgdm9pZCBMaW5lQnVpbGRlcjo6VHJpbW1hYmxl
VHJhaWxpbmdDb250ZW50OjpyZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNWJm
NzcxOGJjOTQ2NDZlYmZmMzFjZGYxOTlkNzU0YzlmMzUwM2VjMS4uNThkZTYxM2EwZjM4MzI3OWY5
MWI3ZjQzYWE5ODBjYzljMzg3ZDA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcApAQCAtMjg2
LDcgKzI4Niw3IEBAIExpbmVMYXlvdXRDb250ZXh0OjpMaW5lTGF5b3V0Q29udGV4dChjb25zdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0CiB7CiB9CiAKLUxpbmVMYXlvdXRD
b250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5lQnVp
bGRlciYgbGluZSwgY29uc3QgSW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdlLCBPcHRpb25hbDx1
bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKQorTGluZUxheW91dENvbnRleHQ6
OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpsYXlvdXRJbmxpbmVDb250ZW50KExpbmVC
dWlsZGVyJiBsaW5lLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCBPcHRpb25h
bDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKQogewogICAgIEFTU0VSVCht
X2Zsb2F0cy5pc0VtcHR5KCkpOwogICAgIG1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSA9IHsgfTsK
QEAgLTMyNSwyNyArMzI1LDE2IEBAIExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5l
TGF5b3V0Q29udGV4dDo6bGF5b3V0TGluZShMaW5lQnVpbGRlciYgbGluZSwKICAgICByZXR1cm4g
Y2xvc2UobGluZSwgbGF5b3V0UmFuZ2UsIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgeyB9KTsK
IH0KIAotTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0Ojpj
bG9zZShMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgSW5saW5lSXRlbVJhbmdlIGxheW91dFJhbmdl
LCB1bnNpZ25lZCBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQsIE9wdGlvbmFsPExpbmVDb250ZW50
OjpQYXJ0aWFsQ29udGVudD4gcGFydGlhbENvbnRlbnQpCitMaW5lTGF5b3V0Q29udGV4dDo6TGlu
ZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5lLCBjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCB1bnNpZ25lZCBjb21taXR0ZWRJbmxpbmVJ
dGVtQ291bnQsIE9wdGlvbmFsPExpbmVDb250ZW50OjpQYXJ0aWFsQ29udGVudD4gcGFydGlhbENv
bnRlbnQpCiB7CiAgICAgQVNTRVJUKGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCB8fCAhbV9mbG9h
dHMuaXNFbXB0eSgpIHx8IGxpbmUuaGFzSW50cnVzaXZlRmxvYXQoKSk7Ci0gICAgaWYgKCFjb21t
aXR0ZWRJbmxpbmVJdGVtQ291bnQpIHsKLSAgICAgICAgaWYgKG1fZmxvYXRzLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgLy8gV2UgZGlkbid0IG1hbmFnZSB0byBhZGQgYSBydW4gb3IgYSBmbG9h
dCBhdCB0aGlzIHZlcnRpY2FsIHBvc2l0aW9uLgotICAgICAgICAgICAgcmV0dXJuIExpbmVDb250
ZW50IHsgeyB9LCB7IH0sIFdURk1vdmUobV9mbG9hdHMpLCBsaW5lLmNsb3NlKCksIGxpbmUubGlu
ZUJveCgpIH07Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgdHJhaWxpbmdJbmxpbmVJdGVt
SW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydCArIG1fZmxvYXRzLnNpemUoKSAtIDE7Ci0gICAgICAg
IHJldHVybiBMaW5lQ29udGVudCB7IHRyYWlsaW5nSW5saW5lSXRlbUluZGV4LCB7IH0sIFdURk1v
dmUobV9mbG9hdHMpLCBsaW5lLmNsb3NlKCksIGxpbmUubGluZUJveCgpIH07Ci0gICAgfQotICAg
IC8vIEFkanVzdCBoeXBoZW5hdGVkIGxpbmUgY291bnQuCi0gICAgaWYgKHBhcnRpYWxDb250ZW50
ICYmIHBhcnRpYWxDb250ZW50LT50cmFpbGluZ0NvbnRlbnRIYXNIeXBoZW4pCi0gICAgICAgICsr
bV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVDb3VudDsKLSAgICBlbHNlCi0gICAgICAgIG1fc3Vj
Y2Vzc2l2ZUh5cGhlbmF0ZWRMaW5lQ291bnQgPSAwOwotICAgIEFTU0VSVChjb21taXR0ZWRJbmxp
bmVJdGVtQ291bnQpOwotICAgIHVuc2lnbmVkIHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ID0gbGF5
b3V0UmFuZ2Uuc3RhcnQgKyBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgKyBtX2Zsb2F0cy5zaXpl
KCkgLSAxOwotICAgIEFTU0VSVCh0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA8IGxheW91dFJhbmdl
LmVuZCk7CisgICAgYXV0byBudW1iZXJPZkNvbW1pdHRlZEl0ZW1zID0gY29tbWl0dGVkSW5saW5l
SXRlbUNvdW50ICsgbV9mbG9hdHMuc2l6ZSgpOworICAgIGF1dG8gdHJhaWxpbmdJbmxpbmVJdGVt
SW5kZXggPSBsYXlvdXRSYW5nZS5zdGFydCArIG51bWJlck9mQ29tbWl0dGVkSXRlbXMgLSAxOwor
ICAgIGF1dG8gbGluZVJhbmdlID0gSW5saW5lSXRlbVJhbmdlIHsgbGF5b3V0UmFuZ2Uuc3RhcnQs
IHRyYWlsaW5nSW5saW5lSXRlbUluZGV4ICsgMSB9OworICAgIEFTU0VSVChsaW5lUmFuZ2UuZW5k
IDw9IGxheW91dFJhbmdlLmVuZCk7CisKICAgICBhdXRvIGlzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudCA9IFsmXSB7Ci0gICAgICAgIGlmICh0cmFpbGluZ0lubGluZUl0ZW1JbmRleCA9PSBsYXlv
dXRSYW5nZS5lbmQgLSAxKQorICAgICAgICBpZiAobGluZVJhbmdlLmVuZCA9PSBsYXlvdXRSYW5n
ZS5lbmQpCiAgICAgICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5s
aW5lQ29udGVudDo6WWVzOwogICAgICAgICBpZiAocGFydGlhbENvbnRlbnQpCiAgICAgICAgICAg
ICByZXR1cm4gTGluZUJ1aWxkZXI6OklzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudDo6Tm87CkBA
IC0zNTgsMTAgKzM0NywxMyBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxh
eW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdAogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpJc0xhc3RMaW5l
V2l0aElubGluZUNvbnRlbnQ6Ok5vOwogICAgIH0oKTsKLSAgICByZXR1cm4gTGluZUNvbnRlbnQg
eyB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCwgcGFydGlhbENvbnRlbnQsIFdURk1vdmUobV9mbG9h
dHMpLCBsaW5lLmNsb3NlKGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCksIGxpbmUubGluZUJv
eCgpIH07CisgICAgbGluZS5jbG9zZShpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOworICAg
IC8vIEFkanVzdCBoeXBoZW5hdGVkIGxpbmUgY291bnQuCisgICAgbV9zdWNjZXNzaXZlSHlwaGVu
YXRlZExpbmVDb3VudCA9IHBhcnRpYWxDb250ZW50ICYmIHBhcnRpYWxDb250ZW50LT50cmFpbGlu
Z0NvbnRlbnRIYXNIeXBoZW4gPyBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNvdW50ICsgMSA6
IDA7CisgICAgcmV0dXJuIExpbmVDb250ZW50IHsgcGFydGlhbENvbnRlbnQsIGxpbmVSYW5nZSwg
V1RGTW92ZShtX2Zsb2F0cykgfTsKIH0KIAotdm9pZCBMaW5lTGF5b3V0Q29udGV4dDo6bmV4dENv
bnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHVuc2lnbmVkIGN1cnJl
bnRJbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSBsYXlvdXRSYW5nZSwgT3B0
aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgSW5saW5lTGF5b3V0
VW5pdCBhdmFpbGFibGVMaW5lV2lkdGgsIElubGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxS
aWdodCkKK3ZvaWQgTGluZUxheW91dENvbnRleHQ6Om5leHRDb250ZW50Rm9yTGluZShMaW5lQ2Fu
ZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCB1bnNpZ25lZCBjdXJyZW50SW5saW5lSXRlbUluZGV4LCBj
b25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFy
dGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZUxpbmVX
aWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0KQogewogICAgIEFTU0VS
VChjdXJyZW50SW5saW5lSXRlbUluZGV4IDwgbGF5b3V0UmFuZ2UuZW5kKTsKICAgICBsaW5lQ2Fu
ZGlkYXRlLnJlc2V0KCk7CkBAIC00MTcsNyArNDA5LDcgQEAgdm9pZCBMaW5lTGF5b3V0Q29udGV4
dDo6Y29tbWl0RmxvYXRzKExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBMaW5lQ2FuZGlkYXRlJiBs
aW4KICAgICBmb3IgKGF1dG8mIGZsb2F0Q2FuZGlkYXRlIDogZmxvYXRDb250ZW50Lmxpc3QoKSkg
ewogICAgICAgICBpZiAoIWZsb2F0Q2FuZGlkYXRlLmlzSW50cnVzaXZlICYmIGNvbW1pdEludHJ1
c2l2ZU9ubHkgPT0gQ29tbWl0SW50cnVzaXZlRmxvYXRzT25seTo6WWVzKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIG1fZmxvYXRzLmFwcGVuZCh7IGZsb2F0Q2FuZGlkYXRlLmlzSW50
cnVzaXZlPyBMaW5lQ29udGVudDo6RmxvYXQ6OkludHJ1c2l2ZTo6WWVzIDogTGluZUNvbnRlbnQ6
OkZsb2F0OjpJbnRydXNpdmU6Ok5vLCBmbG9hdENhbmRpZGF0ZS5pdGVtIH0pOworICAgICAgICBt
X2Zsb2F0cy5hcHBlbmQoeyBmbG9hdENhbmRpZGF0ZS5pc0ludHJ1c2l2ZSwgZmxvYXRDYW5kaWRh
dGUuaXRlbSB9KTsKICAgICAgICAgaWYgKGZsb2F0Q2FuZGlkYXRlLmlzSW50cnVzaXZlKSB7CiAg
ICAgICAgICAgICBoYXNJbnRydXNpdmVGbG9hdCA9IHRydWU7CiAgICAgICAgICAgICAvLyBUaGlz
IGZsb2F0IGlzIGludHJ1c2l2ZSBhbmQgaXQgc2hyaW5rcyB0aGUgY3VycmVudCBsaW5lLgpAQCAt
NTI4LDcgKzUyMCw3IEBAIHZvaWQgTGluZUxheW91dENvbnRleHQ6OmNvbW1pdFBhcnRpYWxDb250
ZW50KExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBMaW5lQnJlYWtlCiBzaXplX3QgTGluZUxheW91
dENvbnRleHQ6OnJlYnVpbGRMaW5lKExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBJbmxpbmVJdGVt
UmFuZ2UmIGxheW91dFJhbmdlKQogewogICAgIC8vIENsZWFyIHRoZSBsaW5lIGFuZCBzdGFydCBh
cHBlbmRpbmcgdGhlIGlubGluZSBpdGVtcyBjbG9zaW5nIHdpdGggdGhlIGxhc3Qgd3JhcCBvcHBv
cnR1bml0eSBydW4uCi0gICAgbGluZS5yZXNldENvbnRlbnQoKTsKKyAgICBsaW5lLmNsZWFyKCk7
CiAgICAgYXV0byBjdXJyZW50SXRlbUluZGV4ID0gbGF5b3V0UmFuZ2Uuc3RhcnQ7CiAgICAgYXV0
byBsb2dpY2FsUmlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICBpZiAobV9wYXJ0aWFs
TGVhZGluZ1RleHRJdGVtKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCAzMWZmODZiZmQyNDMz
YTAwNGNlMjA1NTcwZDI4OTg3MjU1YTZmYzFlLi4zNGI4ZmNiOWRjNGFmNTdjZjI4NmRiYWU2YzA5
OGUyNmNjYzM4YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTM5LDMzICszOSwzMCBAQCBj
bGFzcyBMaW5lTGF5b3V0Q29udGV4dCB7CiBwdWJsaWM6CiAgICAgTGluZUxheW91dENvbnRleHQo
Y29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBDb250YWluZXJCb3gmIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSW5saW5lSXRlbXMmKTsKIAorICAgIHN0cnVjdCBJbmxp
bmVJdGVtUmFuZ2UgeworICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFy
dCA9PSBlbmQ7IH0KKyAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBlbmQgLSBz
dGFydDsgfQorICAgICAgICBzaXplX3Qgc3RhcnQgeyAwIH07CisgICAgICAgIHNpemVfdCBlbmQg
eyAwIH07CisgICAgfTsKICAgICBzdHJ1Y3QgTGluZUNvbnRlbnQgewogICAgICAgICBzdHJ1Y3Qg
UGFydGlhbENvbnRlbnQgewogICAgICAgICAgICAgYm9vbCB0cmFpbGluZ0NvbnRlbnRIYXNIeXBo
ZW4geyBmYWxzZSB9OwogICAgICAgICAgICAgdW5zaWduZWQgb3ZlcmZsb3dDb250ZW50TGVuZ3Ro
IHsgMCB9OwogICAgICAgICB9OwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gdHJhaWxpbmdJ
bmxpbmVJdGVtSW5kZXg7CiAgICAgICAgIE9wdGlvbmFsPFBhcnRpYWxDb250ZW50PiBwYXJ0aWFs
Q29udGVudDsKKyAgICAgICAgSW5saW5lSXRlbVJhbmdlIGlubGluZUl0ZW1zOwogICAgICAgICBz
dHJ1Y3QgRmxvYXQgewotICAgICAgICAgICAgZW51bSBjbGFzcyBJbnRydXNpdmUgeyBObywgWWVz
IH07Ci0gICAgICAgICAgICBJbnRydXNpdmUgaXNJbnRydXNpdmUgeyBJbnRydXNpdmU6OlllcyB9
OworICAgICAgICAgICAgYm9vbCBpc0ludHJ1c2l2ZSB7IHRydWUgfTsKICAgICAgICAgICAgIGNv
bnN0IElubGluZUl0ZW0qIGl0ZW0geyBudWxscHRyIH07CiAgICAgICAgIH07CiAgICAgICAgIHVz
aW5nIEZsb2F0TGlzdCA9IFZlY3RvcjxGbG9hdD47CiAgICAgICAgIEZsb2F0TGlzdCBmbG9hdHM7
Ci0gICAgICAgIGNvbnN0IExpbmVCdWlsZGVyOjpSdW5MaXN0IHJ1bkxpc3Q7Ci0gICAgICAgIGNv
bnN0IExpbmVCb3ggbGluZUJveDsKLSAgICB9OwotICAgIHN0cnVjdCBJbmxpbmVJdGVtUmFuZ2Ug
ewotICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0K
LSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBlbmQgLSBzdGFydDsgfQotICAg
ICAgICBzaXplX3Qgc3RhcnQgeyAwIH07Ci0gICAgICAgIHNpemVfdCBlbmQgeyAwIH07CiAgICAg
fTsKLSAgICBMaW5lQ29udGVudCBsYXlvdXRMaW5lKExpbmVCdWlsZGVyJiwgY29uc3QgSW5saW5l
SXRlbVJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3Ro
KTsKKyAgICBMaW5lQ29udGVudCBsYXlvdXRJbmxpbmVDb250ZW50KExpbmVCdWlsZGVyJiwgY29u
c3QgSW5saW5lSXRlbVJhbmdlJiwgT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnRpYWxMZWFkaW5nQ29u
dGVudExlbmd0aCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBuZXh0Q29udGVudEZvckxpbmUoTGlu
ZUNhbmRpZGF0ZSYsIHVuc2lnbmVkIGlubGluZUl0ZW1JbmRleCwgY29uc3QgSW5saW5lSXRlbVJh
bmdlIGxheW91dFJhbmdlLCBPcHRpb25hbDx1bnNpZ25lZD4gb3ZlcmZsb3dMZW5ndGgsIElubGlu
ZUxheW91dFVuaXQgYXZhaWxhYmxlTGluZVdpZHRoLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRM
b2dpY2FsUmlnaHQpOworICAgIHZvaWQgbmV4dENvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUm
LCB1bnNpZ25lZCBpbmxpbmVJdGVtSW5kZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0
UmFuZ2UsIE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCwgSW5saW5lTGF5b3V0VW5p
dCBhdmFpbGFibGVMaW5lV2lkdGgsIElubGluZUxheW91dFVuaXQgY3VycmVudExvZ2ljYWxSaWdo
dCk7CiAgICAgc3RydWN0IFJlc3VsdCB7CiAgICAgICAgIExpbmVCcmVha2VyOjpJc0VuZE9mTGlu
ZSBpc0VuZE9mTGluZSB7IExpbmVCcmVha2VyOjpJc0VuZE9mTGluZTo6Tm8gfTsKICAgICAgICAg
c3RydWN0IENvbW1pdHRlZENvbnRlbnRDb3VudCB7CkBAIC04MCw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgUmVzdWx0IGhhbmRsZUZsb2F0c0FuZElubGluZUNvbnRlbnQoTGluZUJyZWFrZXImLCBM
aW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIGNvbnN0IExp
bmVDYW5kaWRhdGUmKTsKICAgICBzaXplX3QgcmVidWlsZExpbmUoTGluZUJ1aWxkZXImLCBjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlKTsKICAgICB2b2lkIGNvbW1pdFBhcnRpYWxD
b250ZW50KExpbmVCdWlsZGVyJiwgY29uc3QgTGluZUJyZWFrZXI6OlJ1bkxpc3QmLCBjb25zdCBM
aW5lQnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50Jik7Ci0gICAgTGluZUNv
bnRlbnQgY2xvc2UoTGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UgbGF5b3V0UmFu
Z2UsIHVuc2lnbmVkIGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCwgT3B0aW9uYWw8TGluZUNvbnRl
bnQ6OlBhcnRpYWxDb250ZW50Pik7CisgICAgTGluZUNvbnRlbnQgY2xvc2UoTGluZUJ1aWxkZXIm
LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlLCB1bnNpZ25lZCBjb21taXR0ZWRJ
bmxpbmVJdGVtQ291bnQsIE9wdGlvbmFsPExpbmVDb250ZW50OjpQYXJ0aWFsQ29udGVudD4pOwog
CiAgICAgSW5saW5lTGF5b3V0VW5pdCBpbmxpbmVJdGVtV2lkdGgoY29uc3QgSW5saW5lSXRlbSYs
IElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KSBjb25zdDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>