<?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>201393</bug_id>
          
          <creation_ts>2019-09-01 20:13:12 -0700</creation_ts>
          <short_desc>[LFC][Floats] Move FloatingState::constraints to FloatingContext</short_desc>
          <delta_ts>2019-09-03 11:21:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1567100</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-01 20:13:12 -0700</bug_when>
    <thetext>where it belongs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567101</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-01 20:13:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/54939361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567103</commentid>
    <comment_count>2</comment_count>
      <attachid>377835</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-01 20:22:10 -0700</bug_when>
    <thetext>Created attachment 377835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567416</commentid>
    <comment_count>3</comment_count>
      <attachid>377835</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-03 10:09:32 -0700</bug_when>
    <thetext>Comment on attachment 377835
Patch

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

&gt; Source/WebCore/layout/floats/FloatingContext.cpp:287
&gt; +    for (int index = floats.size() - 1; index &gt;= 0; --index) {

for (auto index = floats.size(); --index; )

is more compact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567432</commentid>
    <comment_count>4</comment_count>
      <attachid>377908</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-03 11:00:32 -0700</bug_when>
    <thetext>Created attachment 377908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567445</commentid>
    <comment_count>5</comment_count>
      <attachid>377908</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 11:21:48 -0700</bug_when>
    <thetext>Comment on attachment 377908
Patch

Clearing flags on attachment: 377908

Committed r249433: &lt;https://trac.webkit.org/changeset/249433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567446</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 11:21:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377835</attachid>
            <date>2019-09-01 20:22:10 -0700</date>
            <delta_ts>2019-09-03 11:00:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201393-20190901202201.patch</filename>
            <type>text/plain</type>
            <size>18062</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQwNGRlMzE1MTQwOGUx
M2VmZWI2OWYxZTE5YTM2ODMyMGJlYThiYy4uYzUzYmNkMjVhYTNjODlkNGE0NzgzZWZmNTFlYmFi
N2Y1OTMwODlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA5LTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bRmxvYXRzXSBNb3Zl
IEZsb2F0aW5nU3RhdGU6OmNvbnN0cmFpbnRzIHRvIEZsb2F0aW5nQ29udGV4dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMzkzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NDkzOTM2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciB0cmFuc2l0aW9uaW5n
IHRoZSBmbG9hdGluZyBjb2RlYmFzZSB0byB1c2UgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBmb3IK
KyAgICAgICAgcmV0cmlldmluZyBkaXNwbGF5IGJveGVzLiBOb3cgRmxvYXRpbmdDb250ZXh0IChq
dXN0IGxpa2UgYW55IG90aGVyIGZvcm1hdHRpbmcgY29udGV4dCkgaG9sZHMgb24gdG8gdGhlIGZv
cm1hdHRpbmcKKyAgICAgICAgY29udGV4dCByb290LgorCisgICAgICAgICogbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9y
RmxvYXRBdm9pZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0Nv
bnRleHQ6OkZsb2F0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0
aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGbG9hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGb3JtYXR0aW5nQ29udGV4dFJvb3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRp
Y2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6RmxvYXRpbmdDb250ZXh0Ojpjb25zdHJhaW50cyBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rmxv
YXRpbmdDb250ZXh0Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdDb250ZXh0Ojpyb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zs
b2F0aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRl
Ojpjb25zdHJhaW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6
Omxhc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpp
c0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpsYXlvdXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6CisKIDIwMTktMDgtMzEg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBNYWtlIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeS9RdWlyay9NYXJnaW5Db2xsYXBzZSBjJ3RvcnMgcHJp
dmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDAwNDQxOTUyMzhjNjRl
MGFmYzFlMmI1MDk1NTc4OWNlNDgzN2ZiMzQuLmYwYjkwYmZmZDVlZDU3NGM5Nzg2ZjNkZDBkYTFh
NDFmYTc2OTgyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNjIsNyAr
NjIsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dCgpCiAKICAgICBhdXRv
JiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKTsKICAgICBMYXlv
dXRRdWV1ZSBsYXlvdXRRdWV1ZTsKLSAgICBGbG9hdGluZ0NvbnRleHQgZmxvYXRpbmdDb250ZXh0
KGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSk7CisgICAgYXV0byBmbG9hdGluZ0Nv
bnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyBmb3JtYXR0aW5nUm9vdCwgZm9ybWF0dGluZ1N0YXRl
KCkuZmxvYXRpbmdTdGF0ZSgpIH07CiAgICAgLy8gVGhpcyBpcyBhIHBvc3Qtb3JkZXIgdHJlZSB0
cmF2ZXJzYWwgbGF5b3V0LgogICAgIC8vIFRoZSByb290IGNvbnRhaW5lciBsYXlvdXQgaXMgZG9u
ZSBpbiB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGl0IGxpdmVzIGluLCBub3QgdGhhdCBvbmUgaXQg
Y3JlYXRlcywgc28gbGV0J3Mgc3RhcnQgd2l0aCB0aGUgZmlyc3QgY2hpbGQuCiAgICAgaWYgKGF1
dG8qIGZpcnN0Q2hpbGQgPSBmb3JtYXR0aW5nUm9vdC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGls
ZCgpKQpAQCAtMTIzLDEzICsxMjMsMTIgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGMKICAgICAv
LyBOb3JtYWxseSB0aGUgYXZhaWxhYmxlIHdpZHRoIGZvciBhbiBpbi1mbG93IGJsb2NrIGxldmVs
IGJveCBpcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBjb250ZW50IGJveC4K
ICAgICAvLyBIb3dldmVyIChhbmQgY2FuJ3QgZmluZCBpdCBhbnl3aGVyZSBpbiB0aGUgc3BlYykg
bm9uLWZsb2F0aW5nIHBvc2l0aW9uZWQgZmxvYXQgYXZvaWRlciBibG9jayBsZXZlbCBib3hlcyBh
cmUgY29uc3RyYWluZWQgYnkgZXhpc3RpbmcgZmxvYXRzLgogICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNGbG9hdEF2b2lkZXIoKSk7Ci0gICAgYXV0byYgZmxvYXRpbmdTdGF0ZSA9IGZsb2F0aW5nQ29u
dGV4dC5mbG9hdGluZ1N0YXRlKCk7Ci0gICAgaWYgKGZsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKQor
ICAgIGlmIChmbG9hdGluZ0NvbnRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9Owog
ICAgIC8vIFZlcnRpY2FsIHN0YXRpYyBwb3NpdGlvbiBpcyBub3QgY29tcHV0ZWQgeWV0LCBzbyBs
ZXQncyBqdXN0IGVzdGltYXRlIGl0IGZvciBub3cuCiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3Qg
PSBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7CiAgICAgYXV0byB2ZXJ0aWNhbFBvc2l0aW9u
ID0gRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFRvcFRvQW5jZXN0b3IobGF5b3V0U3RhdGUoKSwgbGF5
b3V0Qm94LCBmb3JtYXR0aW5nUm9vdCk7Ci0gICAgYXV0byBjb25zdHJhaW50cyA9IGZsb2F0aW5n
U3RhdGUuY29uc3RyYWludHMoeyB2ZXJ0aWNhbFBvc2l0aW9uIH0sIGZvcm1hdHRpbmdSb290KTsK
KyAgICBhdXRvIGNvbnN0cmFpbnRzID0gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKHsgdmVy
dGljYWxQb3NpdGlvbiB9KTsKICAgICBpZiAoIWNvbnN0cmFpbnRzLmxlZnQgJiYgIWNvbnN0cmFp
bnRzLnJpZ2h0KQogICAgICAgICByZXR1cm4geyB9OwogICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9j
ayA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CkBA
IC0yOTYsNyArMjk1LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0
aW1hdGVkVmVydGljYWxQb3NpdGlvbkZvckZvcm1hdHRpbmdSb290KGMKIHZvaWQgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENs
ZWFyKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSk7Ci0gICAg
aWYgKGZsb2F0aW5nQ29udGV4dC5mbG9hdGluZ1N0YXRlKCkuaXNFbXB0eSgpKQorICAgIGlmIChm
bG9hdGluZ0NvbnRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gVGhlIHN0
YXRpYyBwb3NpdGlvbiB3aXRoIGNsZWFyIHJlcXVpcmVzIG1hcmdpbiBlc2l0bWF0aW9uIHRvIHNl
ZSBpZiBjbGVhcmFuY2UgaXMgbmVlZGVkLgogICAgIGNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBv
c2l0aW9uKGxheW91dEJveCk7CkBAIC0zNDEsNyArMzQwLDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Ojpjb21wdXRlUG9zaXRpb25Ub0F2b2lkRmxvYXRzKGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYKICAgICBBU1NFUlQoIWxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpOwogICAgIEFTU0VS
VChoYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKTsKIAotICAgIGlmIChmbG9h
dGluZ0NvbnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1wdHkoKSkKKyAgICBpZiAoZmxvYXRpbmdD
b250ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gYWRqdXN0
ZWRQb3NpdGlvbiA9IGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvckZvcm1hdHRpbmdDb250ZXh0
Um9vdChsYXlvdXRCb3gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9h
dGluZ0NvbnRleHQuY3BwCmluZGV4IDEwMzc1MDFlZTNiNmRmNGU3YjU1OWYzNGIzNjJlYzdkOTJl
MGI2YWMuLjFiOTI4ZTVmNWIyZDdjYTgyMmZmNWJjNGY1MjVhYjMwNjU1YmM1MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKQEAgLTE1
MCw4ICsxNTAsOSBAQCBzdGF0aWMgYm9vbCBhcmVGbG9hdHNIb3Jpem9udGFsbHlTb3J0ZWQoY29u
c3QgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKIH0KICNlbmRpZgogCi1GbG9hdGluZ0Nv
bnRleHQ6OkZsb2F0aW5nQ29udGV4dChGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKQotICAg
IDogbV9mbG9hdGluZ1N0YXRlKGZsb2F0aW5nU3RhdGUpCitGbG9hdGluZ0NvbnRleHQ6OkZsb2F0
aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgRmxvYXRp
bmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKKyAgICA6IG1fcm9vdChtYWtlV2Vha1B0cihmb3JtYXR0
aW5nQ29udGV4dFJvb3QpKQorICAgICwgbV9mbG9hdGluZ1N0YXRlKGZsb2F0aW5nU3RhdGUpCiB7
CiB9CiAKQEAgLTE2MCw3ICsxNjEsNyBAQCBQb2ludCBGbG9hdGluZ0NvbnRleHQ6OnBvc2l0aW9u
Rm9yRmxvYXQoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgQVNTRVJUKGxheW91dEJv
eC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKICAgICBBU1NFUlQoYXJlRmxvYXRzSG9yaXpvbnRh
bGx5U29ydGVkKG1fZmxvYXRpbmdTdGF0ZSkpOwogCi0gICAgaWYgKG1fZmxvYXRpbmdTdGF0ZS5p
c0VtcHR5KCkpIHsKKyAgICBpZiAoaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlC
b3ggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIAog
ICAgICAgICBhdXRvIGFsaWduV2l0aENvbnRhaW5pbmdCbG9jayA9IFsmXSgpIC0+IFBvc2l0aW9u
IHsKQEAgLTE5MCw3ICsxOTEsNyBAQCBPcHRpb25hbDxQb2ludD4gRmxvYXRpbmdDb250ZXh0Ojpw
b3NpdGlvbkZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBCb3gmIGxheQogICAgIEFTU0VS
VCghbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSk7CiAgICAgQVNTRVJUKGFyZUZsb2F0c0hvcml6
b250YWxseVNvcnRlZChtX2Zsb2F0aW5nU3RhdGUpKTsKIAotICAgIGlmIChtX2Zsb2F0aW5nU3Rh
dGUuaXNFbXB0eSgpKQorICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBGbG9hdEF2b2lkZXIgZmxvYXRBdm9pZGVyID0geyBsYXlvdXRCb3gsIG1fZmxvYXRpbmdT
dGF0ZSwgbGF5b3V0U3RhdGUoKSB9OwpAQCAtMjA0LDcgKzIwNSw3IEBAIEZsb2F0aW5nQ29udGV4
dDo6Q2xlYXJhbmNlUG9zaXRpb24gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aENsZWFyYW5jCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAgICAg
QVNTRVJUKGFyZUZsb2F0c0hvcml6b250YWxseVNvcnRlZChtX2Zsb2F0aW5nU3RhdGUpKTsKIAot
ICAgIGlmIChtX2Zsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKQorICAgIGlmIChpc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIGJvdHRvbSA9IFsmXShPcHRpb25hbDxQb3Np
dGlvbkluQ29udGV4dFJvb3Q+IGZsb2F0Qm90dG9tKSAtPiBDbGVhcmFuY2VQb3NpdGlvbiB7CkBA
IC0yNTEsMjEgKzI1Miw3MCBAQCBGbG9hdGluZ0NvbnRleHQ6OkNsZWFyYW5jZVBvc2l0aW9uIEZs
b2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuYwogICAgIH07CiAKICAg
ICBhdXRvIGNsZWFyID0gbGF5b3V0Qm94LnN0eWxlKCkuY2xlYXIoKTsKLSAgICBhdXRvJiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QgPSBsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCk7Ci0K
ICAgICBpZiAoY2xlYXIgPT0gQ2xlYXI6OkxlZnQpCi0gICAgICAgIHJldHVybiBib3R0b20obV9m
bG9hdGluZ1N0YXRlLmxlZnRCb3R0b20oZm9ybWF0dGluZ0NvbnRleHRSb290KSk7CisgICAgICAg
IHJldHVybiBib3R0b20obV9mbG9hdGluZ1N0YXRlLmxlZnRCb3R0b20ocm9vdCgpKSk7CiAKICAg
ICBpZiAoY2xlYXIgPT0gQ2xlYXI6OlJpZ2h0KQotICAgICAgICByZXR1cm4gYm90dG9tKG1fZmxv
YXRpbmdTdGF0ZS5yaWdodEJvdHRvbShmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKKyAgICAgICAg
cmV0dXJuIGJvdHRvbShtX2Zsb2F0aW5nU3RhdGUucmlnaHRCb3R0b20ocm9vdCgpKSk7CiAKICAg
ICBpZiAoY2xlYXIgPT0gQ2xlYXI6OkJvdGgpCi0gICAgICAgIHJldHVybiBib3R0b20obV9mbG9h
dGluZ1N0YXRlLmJvdHRvbShmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKKyAgICAgICAgcmV0dXJu
IGJvdHRvbShtX2Zsb2F0aW5nU3RhdGUuYm90dG9tKHJvb3QoKSkpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorRmxvYXRpbmdDb250ZXh0OjpDb25z
dHJhaW50cyBGbG9hdGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzKFBvc2l0aW9uSW5Db250ZXh0Um9v
dCB2ZXJ0aWNhbFBvc2l0aW9uKSBjb25zdAoreworICAgIGlmIChpc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICAvLyAxLiBDb252ZXJ0IHZlcnRpY2FsIHBvc2l0aW9uIGlmIHRo
aXMgZmxvYXRpbmcgY29udGV4dCBpcyBpbmhlcml0ZWQuCisgICAgLy8gMi4gRmluZCB0aGUgaW5u
ZXIgbGVmdC9yaWdodCBmbG9hdHMgYXQgdmVydGljYWxQb3NpdGlvbi4KKyAgICAvLyAzLiBDb252
ZXJ0IGxlZnQvcmlnaHQgcG9zaXRpb25zIGJhY2sgdG8gZm9ybWF0dGluZ0NvbnRleHRSb290J3Mg
Y29vcmlkbmF0ZSBzeXN0ZW0uCisgICAgYXV0byBjb29yZGluYXRlTWFwcGluZ0lzUmVxdWlyZWQg
PSAmZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKSAhPSAmcm9vdCgpOworICAgIGF1dG8gYWRqdXN0ZWRQ
b3NpdGlvbiA9IFBvaW50IHsgMCwgdmVydGljYWxQb3NpdGlvbiB9OworICAgIExheW91dFNpemUg
YWRqdXN0aW5nRGVsdGE7CisKKyAgICBpZiAoY29vcmRpbmF0ZU1hcHBpbmdJc1JlcXVpcmVkKSB7
CisgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSBGb3JtYXR0aW5nQ29udGV4dDo6bWFwUG9pbnRU
b0FuY2VzdG9yKGxheW91dFN0YXRlKCksIGFkanVzdGVkUG9zaXRpb24sIHJvb3QoKSwgZG93bmNh
c3Q8Q29udGFpbmVyPihmbG9hdGluZ1N0YXRlKCkucm9vdCgpKSk7CisgICAgICAgIGFkanVzdGlu
Z0RlbHRhID0geyBhZGp1c3RlZFBvc2l0aW9uLngsIGFkanVzdGVkUG9zaXRpb24ueSAtIHZlcnRp
Y2FsUG9zaXRpb24gfTsKKyAgICB9CisKKyAgICBDb25zdHJhaW50cyBjb25zdHJhaW50czsKKyAg
ICBhdXRvJiBmbG9hdHMgPSBmbG9hdGluZ1N0YXRlKCkuZmxvYXRzKCk7CisgICAgZm9yIChpbnQg
aW5kZXggPSBmbG9hdHMuc2l6ZSgpIC0gMTsgaW5kZXggPj0gMDsgLS1pbmRleCkgeworICAgICAg
ICBhdXRvJiBmbG9hdEl0ZW0gPSBmbG9hdHNbaW5kZXhdOworCisgICAgICAgIGlmIChjb25zdHJh
aW50cy5sZWZ0ICYmIGZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAoY29uc3RyYWludHMucmlnaHQgJiYgIWZsb2F0SXRlbS5p
c0xlZnRQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
IHJlY3QgPSBmbG9hdEl0ZW0ucmVjdFdpdGhNYXJnaW4oKTsKKyAgICAgICAgaWYgKCEocmVjdC50
b3AoKSA8PSBhZGp1c3RlZFBvc2l0aW9uLnkgJiYgYWRqdXN0ZWRQb3NpdGlvbi55IDwgcmVjdC5i
b3R0b20oKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZmxvYXRJdGVt
LmlzTGVmdFBvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzLmxlZnQgPSBQb2lu
dEluQ29udGV4dFJvb3QgeyByZWN0LnJpZ2h0KCksIHJlY3QuYm90dG9tKCkgfTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY29uc3RyYWludHMucmlnaHQgPSBQb2ludEluQ29udGV4dFJvb3Qg
eyByZWN0LmxlZnQoKSwgcmVjdC5ib3R0b20oKSB9OworCisgICAgICAgIGlmIChjb25zdHJhaW50
cy5sZWZ0ICYmIGNvbnN0cmFpbnRzLnJpZ2h0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgaWYgKGNvb3JkaW5hdGVNYXBwaW5nSXNSZXF1aXJlZCkgeworICAgICAgICBpZiAoY29u
c3RyYWludHMubGVmdCkKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzLmxlZnQtPm1vdmUoLWFkanVz
dGluZ0RlbHRhKTsKKworICAgICAgICBpZiAoY29uc3RyYWludHMucmlnaHQpCisgICAgICAgICAg
ICBjb25zdHJhaW50cy5yaWdodC0+bW92ZSgtYWRqdXN0aW5nRGVsdGEpOworICAgIH0KKyAgICBy
ZXR1cm4gY29uc3RyYWludHM7Cit9CisKIHN0YXRpYyBGbG9hdFBhaXI6OkxlZnRSaWdodEluZGV4
IGZpbmRBdmFpbGFibGVQb3NpdGlvbihGbG9hdEF2b2lkZXImIGZsb2F0QXZvaWRlciwgY29uc3Qg
RmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0JiBmbG9hdHMpCiB7CiAgICAgT3B0aW9uYWw8UG9zaXRp
b25JbkNvbnRleHRSb290PiBib3R0b21Nb3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
bG9hdHMvRmxvYXRpbmdDb250ZXh0LmgKaW5kZXggMjZiMTE3NzRhODUyZGU1NDFlMGVhMDY3YzNl
NjRlMTJiNzg4ZWVmZC4uODk5M2EwYTcwMWM2ZmMwZDAxNThiZTA2ZTdhZTViMjJhZTA1OTUwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCkBA
IC00Niw3ICs0Niw3IEBAIGNsYXNzIExheW91dFN0YXRlOwogY2xhc3MgRmxvYXRpbmdDb250ZXh0
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZsb2F0aW5nQ29udGV4dCk7CiBwdWJsaWM6
Ci0gICAgRmxvYXRpbmdDb250ZXh0KEZsb2F0aW5nU3RhdGUmKTsKKyAgICBGbG9hdGluZ0NvbnRl
eHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEZsb2F0aW5nU3RhdGUm
KTsKIAogICAgIEZsb2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X2Zsb2F0aW5nU3RhdGU7IH0KIApAQCAtNTksMTIgKzU5LDIyIEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIENsZWFyYW5jZVBvc2l0aW9uIHZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0
IEJveCYpIGNvbnN0OwogCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mbG9h
dGluZ1N0YXRlLmZsb2F0cygpLmlzRW1wdHkoKTsgfQorCisgICAgc3RydWN0IENvbnN0cmFpbnRz
IHsKKyAgICAgICAgT3B0aW9uYWw8UG9pbnRJbkNvbnRleHRSb290PiBsZWZ0OworICAgICAgICBP
cHRpb25hbDxQb2ludEluQ29udGV4dFJvb3Q+IHJpZ2h0OworICAgIH07CisgICAgQ29uc3RyYWlu
dHMgY29uc3RyYWludHMoUG9zaXRpb25JbkNvbnRleHRSb290IHZlcnRpY2FsUG9zaXRpb24pIGNv
bnN0OworCiBwcml2YXRlOgogICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxvYXRpbmdTdGF0ZS5sYXlvdXRTdGF0ZSgpOyB9CisgICAgY29uc3QgQ29udGFp
bmVyJiByb290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdDsgfQogCiAgICAgdm9pZCBmaW5kUG9z
aXRpb25Gb3JGbG9hdEJveChGbG9hdEJveCYpIGNvbnN0OwogICAgIHZvaWQgZmluZFBvc2l0aW9u
Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KEZsb2F0QXZvaWRlciYpIGNvbnN0OwogCisgICAgV2Vh
a1B0cjxjb25zdCBDb250YWluZXI+IG1fcm9vdDsKICAgICBGbG9hdGluZ1N0YXRlJiBtX2Zsb2F0
aW5nU3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGlu
Z1N0YXRlLmNwcAppbmRleCA3MTc2OGI3NzcyNGZmNjIyMmJkNmUwNGY0YTg5ZDA2Y2Y0NDgwYjk4
Li45MmQyZjJkZTlhN2QyOTA5N2U2YWM4ZTBkNDI4NDliNTUxOTgyMWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKQEAgLTEwOSw1NiArMTA5
LDYgQEAgdm9pZCBGbG9hdGluZ1N0YXRlOjphcHBlbmQoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAg
ICAgcmV0dXJuIG1fZmxvYXRzLmluc2VydCgwLCBuZXdGbG9hdEl0ZW0pOwogfQogCi1GbG9hdGlu
Z1N0YXRlOjpDb25zdHJhaW50cyBGbG9hdGluZ1N0YXRlOjpjb25zdHJhaW50cyhQb3NpdGlvbklu
Q29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbiwgY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpIGNvbnN0Ci17Ci0gICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgIC8vIDEuIENvbnZlcnQgdmVydGljYWwgcG9zaXRpb24gaWYgdGhpcyBmbG9hdGluZyBj
b250ZXh0IGlzIGluaGVyaXRlZC4KLSAgICAvLyAyLiBGaW5kIHRoZSBpbm5lciBsZWZ0L3JpZ2h0
IGZsb2F0cyBhdCB2ZXJ0aWNhbFBvc2l0aW9uLgotICAgIC8vIDMuIENvbnZlcnQgbGVmdC9yaWdo
dCBwb3NpdGlvbnMgYmFjayB0byBmb3JtYXR0aW5nQ29udGV4dFJvb3QncyBjb29yaWRuYXRlIHN5
c3RlbS4KLSAgICBhdXRvIGNvb3JkaW5hdGVNYXBwaW5nSXNSZXF1aXJlZCA9ICZyb290KCkgIT0g
JmZvcm1hdHRpbmdDb250ZXh0Um9vdDsKLSAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBQb2lu
dCB7IDAsIHZlcnRpY2FsUG9zaXRpb24gfTsKLSAgICBMYXlvdXRTaXplIGFkanVzdGluZ0RlbHRh
OwotCi0gICAgaWYgKGNvb3JkaW5hdGVNYXBwaW5nSXNSZXF1aXJlZCkgewotICAgICAgICBhZGp1
c3RlZFBvc2l0aW9uID0gRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFBvaW50VG9BbmNlc3RvcihtX2xh
eW91dFN0YXRlLCBhZGp1c3RlZFBvc2l0aW9uLCBkb3duY2FzdDxDb250YWluZXI+KGZvcm1hdHRp
bmdDb250ZXh0Um9vdCksIGRvd25jYXN0PENvbnRhaW5lcj4ocm9vdCgpKSk7Ci0gICAgICAgIGFk
anVzdGluZ0RlbHRhID0geyBhZGp1c3RlZFBvc2l0aW9uLngsIGFkanVzdGVkUG9zaXRpb24ueSAt
IHZlcnRpY2FsUG9zaXRpb24gfTsKLSAgICB9Ci0KLSAgICBDb25zdHJhaW50cyBjb25zdHJhaW50
czsKLSAgICBmb3IgKGludCBpbmRleCA9IG1fZmxvYXRzLnNpemUoKSAtIDE7IGluZGV4ID49IDA7
IC0taW5kZXgpIHsKLSAgICAgICAgYXV0byYgZmxvYXRJdGVtID0gbV9mbG9hdHNbaW5kZXhdOwot
Ci0gICAgICAgIGlmIChjb25zdHJhaW50cy5sZWZ0ICYmIGZsb2F0SXRlbS5pc0xlZnRQb3NpdGlv
bmVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoY29uc3RyYWludHMu
cmlnaHQgJiYgIWZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBhdXRvIHJlY3QgPSBmbG9hdEl0ZW0ucmVjdFdpdGhNYXJnaW4oKTsK
LSAgICAgICAgaWYgKCEocmVjdC50b3AoKSA8PSBhZGp1c3RlZFBvc2l0aW9uLnkgJiYgYWRqdXN0
ZWRQb3NpdGlvbi55IDwgcmVjdC5ib3R0b20oKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBpZiAoZmxvYXRJdGVtLmlzTGVmdFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNv
bnN0cmFpbnRzLmxlZnQgPSBQb2ludEluQ29udGV4dFJvb3QgeyByZWN0LnJpZ2h0KCksIHJlY3Qu
Ym90dG9tKCkgfTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29uc3RyYWludHMucmlnaHQg
PSBQb2ludEluQ29udGV4dFJvb3QgeyByZWN0LmxlZnQoKSwgcmVjdC5ib3R0b20oKSB9OwotCi0g
ICAgICAgIGlmIChjb25zdHJhaW50cy5sZWZ0ICYmIGNvbnN0cmFpbnRzLnJpZ2h0KQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKGNvb3JkaW5hdGVNYXBwaW5nSXNSZXF1aXJl
ZCkgewotICAgICAgICBpZiAoY29uc3RyYWludHMubGVmdCkKLSAgICAgICAgICAgIGNvbnN0cmFp
bnRzLmxlZnQtPm1vdmUoLWFkanVzdGluZ0RlbHRhKTsKLQotICAgICAgICBpZiAoY29uc3RyYWlu
dHMucmlnaHQpCi0gICAgICAgICAgICBjb25zdHJhaW50cy5yaWdodC0+bW92ZSgtYWRqdXN0aW5n
RGVsdGEpOwotICAgIH0KLSAgICByZXR1cm4gY29uc3RyYWludHM7Ci19Ci0KIE9wdGlvbmFsPFBv
c2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IEJveCYgZm9y
bWF0dGluZ0NvbnRleHRSb290LCBDbGVhciB0eXBlKSBjb25zdAogewogICAgIGlmIChtX2Zsb2F0
cy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zs
b2F0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0
ZS5oCmluZGV4IDdlNDkxZGJiNjY0ODRlMmU4OGNmMTdiNWJhNTEyMDNmOGFmYTcwZjAuLjU5OWVi
OTdmYjc1YzA0YzExNGVjNmY5NzEyZjYxZTRlYWM3OTg0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oCkBAIC01MCw4ICs1MCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFwcGVuZChjb25zdCBCb3gmIGxheW91dEJveCk7CiAgICAgdm9pZCByZW1vdmUo
Y29uc3QgQm94JiBsYXlvdXRCb3gpOwogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9mbG9hdHMuaXNFbXB0eSgpOyB9Ci0KICAgICBjb25zdCBCb3gmIHJvb3QoKSBjb25zdCB7
IHJldHVybiAqbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KIAogICAgIE9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4gdG9wKGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBj
b25zdDsKQEAgLTU5LDEyICs1Nyw2IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxQb3NpdGlvbklu
Q29udGV4dFJvb3Q+IHJpZ2h0Qm90dG9tKGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KSBjb25zdDsKICAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGJvdHRvbShjb25z
dCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7CiAKLSAgICBzdHJ1Y3QgQ29uc3Ry
YWludHMgewotICAgICAgICBPcHRpb25hbDxQb2ludEluQ29udGV4dFJvb3Q+IGxlZnQ7Ci0gICAg
ICAgIE9wdGlvbmFsPFBvaW50SW5Db250ZXh0Um9vdD4gcmlnaHQ7Ci0gICAgfTsKLSAgICBDb25z
dHJhaW50cyBjb25zdHJhaW50cyhQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlv
biwgY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OwotCiAgICAgY2xhc3Mg
RmxvYXRJdGVtIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZsb2F0SXRlbShjb25zdCBCb3gmLCBj
b25zdCBGbG9hdGluZ1N0YXRlJik7CkBAIC04Myw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIHVzaW5nIEZsb2F0TGlzdCA9IFZlY3RvcjxGbG9hdEl0ZW0+OwogICAgIGNvbnN0IEZsb2F0
TGlzdCYgZmxvYXRzKCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdHM7IH0KLSAgICBjb25zdCBGbG9h
dEl0ZW0qIGxhc3QoKSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgPyBudWxscHRyIDogJm1fZmxv
YXRzLmxhc3QoKTsgfQorICAgIGNvbnN0IEZsb2F0SXRlbSogbGFzdCgpIGNvbnN0IHsgcmV0dXJu
IGZsb2F0cygpLmlzRW1wdHkoKSA/IG51bGxwdHIgOiAmbV9mbG9hdHMubGFzdCgpOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCmluZGV4IGZiY2MxYjM3M2Ri
MGIzZDhlMjgzMjg5NzMwYTAxYTBmY2MxNjFmMjUuLjNmZTU4ZmYwMTcyZjUzMjljOWY5MTlmYmZi
YmE3MTIwMWRjYmNjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHRMaW5lTGF5b3V0LmNwcApAQCAtMjgyLDE4ICsyODIsMTggQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpsYXlvdXQoY29uc3QgSW5saW5lSXRlbXMmIGlubGlu
ZUl0ZW0KICAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250
ZXh0KCk7CiAgICAgYXV0byYgZm9ybWF0dGluZ1Jvb3QgPSB0aGlzLT5mb3JtYXR0aW5nUm9vdCgp
OwogICAgIGF1dG8mIGZvcm1hdHRpbmdSb290RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goZm9ybWF0dGluZ1Jvb3QpOwotICAgIGF1dG8mIGZsb2F0
aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0
aW5nUm9vdCkuZmxvYXRpbmdTdGF0ZSgpOworICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxv
YXRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ1Jvb3QsIGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9y
bWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290KS5mbG9hdGluZ1N0YXRlKCkgfTsKIAogICAgIGF1
dG8gbGluZUxvZ2ljYWxUb3AgPSBmb3JtYXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVudEJveFRv
cCgpOwogICAgIGF1dG8gbGluZUxvZ2ljYWxMZWZ0ID0gZm9ybWF0dGluZ1Jvb3REaXNwbGF5Qm94
LmNvbnRlbnRCb3hMZWZ0KCk7CiAKICAgICBhdXRvIGFwcGx5RmxvYXRDb25zdHJhaW50ID0gWyZd
KGF1dG8mIGxpbmVJbnB1dCkgewogICAgICAgICAvLyBDaGVjayBmb3IgaW50cnVkaW5nIGZsb2F0
cyBhbmQgYWRqdXN0IGxvZ2ljYWwgbGVmdC9hdmFpbGFibGUgd2lkdGggZm9yIHRoaXMgbGluZSBh
Y2NvcmRpbmdseS4KLSAgICAgICAgaWYgKGZsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKQorICAgICAg
ICBpZiAoZmxvYXRpbmdDb250ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGxpbmVJbnB1dC5pbml0aWFsQ29uc3RyYWludHMu
YXZhaWxhYmxlTG9naWNhbFdpZHRoOwogICAgICAgICBhdXRvIGxpbmVMb2dpY2FsTGVmdCA9IGxp
bmVJbnB1dC5pbml0aWFsQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQueCgpOwotICAgICAgICBh
dXRvIGZsb2F0Q29uc3RyYWludHMgPSBmbG9hdGluZ1N0YXRlLmNvbnN0cmFpbnRzKHsgbGluZUxv
Z2ljYWxUb3AgfSwgZm9ybWF0dGluZ1Jvb3QpOworICAgICAgICBhdXRvIGZsb2F0Q29uc3RyYWlu
dHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHMoeyBsaW5lTG9naWNhbFRvcCB9KTsKICAg
ICAgICAgLy8gQ2hlY2sgaWYgdGhlc2UgY29uc3RyYWludHMgYWN0dWFsbHkgcHV0IGxpbWl0YXRp
b24gb24gdGhlIGxpbmUuCiAgICAgICAgIGlmIChmbG9hdENvbnN0cmFpbnRzLmxlZnQgJiYgZmxv
YXRDb25zdHJhaW50cy5sZWZ0LT54IDw9IGZvcm1hdHRpbmdSb290RGlzcGxheUJveC5jb250ZW50
Qm94TGVmdCgpKQogICAgICAgICAgICAgZmxvYXRDb25zdHJhaW50cy5sZWZ0ID0geyB9OwpAQCAt
MzY1LDcgKzM2NSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91
dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgYXV0byYgZm9ybWF0
dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIGZvcm1h
dHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUu
ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ1Jvb3QoKSkpOwogICAgIGF1dG8m
IGZsb2F0aW5nU3RhdGUgPSBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgIGF1
dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgZmxvYXRpbmdTdGF0ZSB9Owor
ICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ1Jv
b3QoKSwgZmxvYXRpbmdTdGF0ZSB9OwogCiAgICAgLy8gTW92ZSBmbG9hdHMgdG8gdGhlaXIgZmlu
YWwgcG9zaXRpb24uCiAgICAgZm9yIChhdXRvIGZsb2F0SXRlbSA6IGZsb2F0cykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377908</attachid>
            <date>2019-09-03 11:00:32 -0700</date>
            <delta_ts>2019-09-03 11:21:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201393-20190903110032.patch</filename>
            <type>text/plain</type>
            <size>18038</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E1ZTE4NzYyNmYzMGUw
ZjQxOTIzOTQwYjMzOGUyYTg0MzkyOTM4OS4uZTNkOTEzOWJhODM3Y2JmNjhlZmQwYzc4YzczNjM0
ZjI0N2M2YTU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTA5LTAzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bRmxvYXRzXSBNb3Zl
IEZsb2F0aW5nU3RhdGU6OmNvbnN0cmFpbnRzIHRvIEZsb2F0aW5nQ29udGV4dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMzkzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NDkzOTM2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciB0cmFuc2l0aW9uaW5n
IHRoZSBmbG9hdGluZyBjb2RlYmFzZSB0byB1c2UgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBmb3IK
KyAgICAgICAgcmV0cmlldmluZyBkaXNwbGF5IGJveGVzLiBOb3cgRmxvYXRpbmdDb250ZXh0IChq
dXN0IGxpa2UgYW55IG90aGVyIGZvcm1hdHRpbmcgY29udGV4dCkgaG9sZHMgb24gdG8gdGhlIGZv
cm1hdHRpbmcKKyAgICAgICAgY29udGV4dCByb290LgorCisgICAgICAgICogbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6dXNlZEF2YWlsYWJsZVdpZHRoRm9y
RmxvYXRBdm9pZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2FsUG9zaXRpb25Gb3JGbG9hdENs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0Nv
bnRleHQ6OkZsb2F0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0
aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGbG9hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGb3JtYXR0aW5nQ29udGV4dFJvb3Qg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRp
Y2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6RmxvYXRpbmdDb250ZXh0Ojpjb25zdHJhaW50cyBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rmxv
YXRpbmdDb250ZXh0Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdDb250ZXh0Ojpyb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zs
b2F0aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRl
Ojpjb25zdHJhaW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9G
bG9hdGluZ1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6
Omxhc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpp
c0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpsYXlvdXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6CisKIDIwMTktMDktMDMg
IENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEFk
ZCBzdXBwb3J0IHRvIGNvcHkgWVVWIHZpZGVvIHRleHR1cmVzIGludG8gaW1hZ2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAwMDQ0MTk1MjM4YzY0ZTBhZmMxZTJiNTA5NTU3
ODljZTQ4MzdmYjM0Li5mMGI5MGJmZmQ1ZWQ1NzRjOTc4NmYzZGQwZGExYTQxZmE3Njk4MjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoKQogCiAgICAgYXV0byYgZm9ybWF0dGluZ1Jv
b3QgPSBkb3duY2FzdDxDb250YWluZXI+KHJvb3QoKSk7CiAgICAgTGF5b3V0UXVldWUgbGF5b3V0
UXVldWU7Ci0gICAgRmxvYXRpbmdDb250ZXh0IGZsb2F0aW5nQ29udGV4dChmb3JtYXR0aW5nU3Rh
dGUoKS5mbG9hdGluZ1N0YXRlKCkpOworICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRp
bmdDb250ZXh0IHsgZm9ybWF0dGluZ1Jvb3QsIGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3Rh
dGUoKSB9OwogICAgIC8vIFRoaXMgaXMgYSBwb3N0LW9yZGVyIHRyZWUgdHJhdmVyc2FsIGxheW91
dC4KICAgICAvLyBUaGUgcm9vdCBjb250YWluZXIgbGF5b3V0IGlzIGRvbmUgaW4gdGhlIGZvcm1h
dHRpbmcgY29udGV4dCBpdCBsaXZlcyBpbiwgbm90IHRoYXQgb25lIGl0IGNyZWF0ZXMsIHNvIGxl
dCdzIHN0YXJ0IHdpdGggdGhlIGZpcnN0IGNoaWxkLgogICAgIGlmIChhdXRvKiBmaXJzdENoaWxk
ID0gZm9ybWF0dGluZ1Jvb3QuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKQEAgLTEyMywx
MyArMTIzLDEyIEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OnVzZWRBdmFpbGFibGVXaWR0aEZvckZsb2F0QXZvaWRlcihjCiAgICAgLy8gTm9ybWFsbHkgdGhl
IGF2YWlsYWJsZSB3aWR0aCBmb3IgYW4gaW4tZmxvdyBibG9jayBsZXZlbCBib3ggaXMgdGhlIHdp
ZHRoIG9mIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgY29udGVudCBib3guCiAgICAgLy8gSG93ZXZl
ciAoYW5kIGNhbid0IGZpbmQgaXQgYW55d2hlcmUgaW4gdGhlIHNwZWMpIG5vbi1mbG9hdGluZyBw
b3NpdGlvbmVkIGZsb2F0IGF2b2lkZXIgYmxvY2sgbGV2ZWwgYm94ZXMgYXJlIGNvbnN0cmFpbmVk
IGJ5IGV4aXN0aW5nIGZsb2F0cy4KICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRBdm9pZGVy
KCkpOwotICAgIGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBmbG9hdGluZ0NvbnRleHQuZmxvYXRpbmdT
dGF0ZSgpOwotICAgIGlmIChmbG9hdGluZ1N0YXRlLmlzRW1wdHkoKSkKKyAgICBpZiAoZmxvYXRp
bmdDb250ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBWZXJ0aWNh
bCBzdGF0aWMgcG9zaXRpb24gaXMgbm90IGNvbXB1dGVkIHlldCwgc28gbGV0J3MganVzdCBlc3Rp
bWF0ZSBpdCBmb3Igbm93LgogICAgIGF1dG8mIGZvcm1hdHRpbmdSb290ID0gZG93bmNhc3Q8Q29u
dGFpbmVyPihyb290KCkpOwogICAgIGF1dG8gdmVydGljYWxQb3NpdGlvbiA9IEZvcm1hdHRpbmdD
b250ZXh0OjptYXBUb3BUb0FuY2VzdG9yKGxheW91dFN0YXRlKCksIGxheW91dEJveCwgZm9ybWF0
dGluZ1Jvb3QpOwotICAgIGF1dG8gY29uc3RyYWludHMgPSBmbG9hdGluZ1N0YXRlLmNvbnN0cmFp
bnRzKHsgdmVydGljYWxQb3NpdGlvbiB9LCBmb3JtYXR0aW5nUm9vdCk7CisgICAgYXV0byBjb25z
dHJhaW50cyA9IGZsb2F0aW5nQ29udGV4dC5jb25zdHJhaW50cyh7IHZlcnRpY2FsUG9zaXRpb24g
fSk7CiAgICAgaWYgKCFjb25zdHJhaW50cy5sZWZ0ICYmICFjb25zdHJhaW50cy5yaWdodCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBkb3duY2FzdDxD
b250YWluZXI+KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwpAQCAtMjk2LDcgKzI5NSw3
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZFZlcnRpY2Fs
UG9zaXRpb25Gb3JGb3JtYXR0aW5nUm9vdChjCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9uRm9yRmxvYXRDbGVhcihjb25zdCBGbG9h
dGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAg
ICAgQVNTRVJUKGxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpOwotICAgIGlmIChmbG9hdGluZ0Nv
bnRleHQuZmxvYXRpbmdTdGF0ZSgpLmlzRW1wdHkoKSkKKyAgICBpZiAoZmxvYXRpbmdDb250ZXh0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIFRoZSBzdGF0aWMgcG9zaXRpb24g
d2l0aCBjbGVhciByZXF1aXJlcyBtYXJnaW4gZXNpdG1hdGlvbiB0byBzZWUgaWYgY2xlYXJhbmNl
IGlzIG5lZWRlZC4KICAgICBjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbihsYXlvdXRC
b3gpOwpAQCAtMzQxLDcgKzM0MCw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZVBvc2l0aW9uVG9Bdm9pZEZsb2F0cyhjb25zdCBGbG9hdGluZ0NvbnRleHQmCiAgICAgQVNT
RVJUKCFsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKTsKICAgICBBU1NFUlQoaGFzUHJlY29tcHV0
ZWRNYXJnaW5CZWZvcmUobGF5b3V0Qm94KSk7CiAKLSAgICBpZiAoZmxvYXRpbmdDb250ZXh0LmZs
b2F0aW5nU3RhdGUoKS5pc0VtcHR5KCkpCisgICAgaWYgKGZsb2F0aW5nQ29udGV4dC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBm
bG9hdGluZ0NvbnRleHQucG9zaXRpb25Gb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNw
cAppbmRleCAxMDM3NTAxZWUzYjZkZjRlN2I1NTlmMzRiMzYyZWM3ZDkyZTBiNmFjLi40YjhhODI4
ZjdhN2E0ZmFmMzJiNzJmYWEwOWEyYTJiOTAzNTkzMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xNTAsOCArMTUwLDkgQEAg
c3RhdGljIGJvb2wgYXJlRmxvYXRzSG9yaXpvbnRhbGx5U29ydGVkKGNvbnN0IEZsb2F0aW5nU3Rh
dGUmIGZsb2F0aW5nU3RhdGUpCiB9CiAjZW5kaWYKIAotRmxvYXRpbmdDb250ZXh0OjpGbG9hdGlu
Z0NvbnRleHQoRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKLSAgICA6IG1fZmxvYXRpbmdT
dGF0ZShmbG9hdGluZ1N0YXRlKQorRmxvYXRpbmdDb250ZXh0OjpGbG9hdGluZ0NvbnRleHQoY29u
c3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEZsb2F0aW5nU3RhdGUmIGZsb2F0
aW5nU3RhdGUpCisgICAgOiBtX3Jvb3QobWFrZVdlYWtQdHIoZm9ybWF0dGluZ0NvbnRleHRSb290
KSkKKyAgICAsIG1fZmxvYXRpbmdTdGF0ZShmbG9hdGluZ1N0YXRlKQogewogfQogCkBAIC0xNjAs
NyArMTYxLDcgQEAgUG9pbnQgRmxvYXRpbmdDb250ZXh0Ojpwb3NpdGlvbkZvckZsb2F0KGNvbnN0
IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bv
c2l0aW9uZWQoKSk7CiAgICAgQVNTRVJUKGFyZUZsb2F0c0hvcml6b250YWxseVNvcnRlZChtX2Zs
b2F0aW5nU3RhdGUpKTsKIAotICAgIGlmIChtX2Zsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKSB7Cisg
ICAgaWYgKGlzRW1wdHkoKSkgewogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3Rh
dGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKICAgICAgICAgYXV0byBh
bGlnbldpdGhDb250YWluaW5nQmxvY2sgPSBbJl0oKSAtPiBQb3NpdGlvbiB7CkBAIC0xOTAsNyAr
MTkxLDcgQEAgT3B0aW9uYWw8UG9pbnQ+IEZsb2F0aW5nQ29udGV4dDo6cG9zaXRpb25Gb3JGb3Jt
YXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQm94JiBsYXkKICAgICBBU1NFUlQoIWxheW91dEJveC5o
YXNGbG9hdENsZWFyKCkpOwogICAgIEFTU0VSVChhcmVGbG9hdHNIb3Jpem9udGFsbHlTb3J0ZWQo
bV9mbG9hdGluZ1N0YXRlKSk7CiAKLSAgICBpZiAobV9mbG9hdGluZ1N0YXRlLmlzRW1wdHkoKSkK
KyAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgRmxvYXRBdm9p
ZGVyIGZsb2F0QXZvaWRlciA9IHsgbGF5b3V0Qm94LCBtX2Zsb2F0aW5nU3RhdGUsIGxheW91dFN0
YXRlKCkgfTsKQEAgLTIwNCw3ICsyMDUsNyBAQCBGbG9hdGluZ0NvbnRleHQ6OkNsZWFyYW5jZVBv
c2l0aW9uIEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuYwogICAg
IEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogICAgIEFTU0VSVChhcmVGbG9h
dHNIb3Jpem9udGFsbHlTb3J0ZWQobV9mbG9hdGluZ1N0YXRlKSk7CiAKLSAgICBpZiAobV9mbG9h
dGluZ1N0YXRlLmlzRW1wdHkoKSkKKyAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgYXV0byBib3R0b20gPSBbJl0oT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRS
b290PiBmbG9hdEJvdHRvbSkgLT4gQ2xlYXJhbmNlUG9zaXRpb24gewpAQCAtMjUxLDIxICsyNTIs
NzAgQEAgRmxvYXRpbmdDb250ZXh0OjpDbGVhcmFuY2VQb3NpdGlvbiBGbG9hdGluZ0NvbnRleHQ6
OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmMKICAgICB9OwogCiAgICAgYXV0byBjbGVhciA9
IGxheW91dEJveC5zdHlsZSgpLmNsZWFyKCk7Ci0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHRS
b290ID0gbGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpOwotCiAgICAgaWYgKGNsZWFy
ID09IENsZWFyOjpMZWZ0KQotICAgICAgICByZXR1cm4gYm90dG9tKG1fZmxvYXRpbmdTdGF0ZS5s
ZWZ0Qm90dG9tKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOworICAgICAgICByZXR1cm4gYm90dG9t
KG1fZmxvYXRpbmdTdGF0ZS5sZWZ0Qm90dG9tKHJvb3QoKSkpOwogCiAgICAgaWYgKGNsZWFyID09
IENsZWFyOjpSaWdodCkKLSAgICAgICAgcmV0dXJuIGJvdHRvbShtX2Zsb2F0aW5nU3RhdGUucmln
aHRCb3R0b20oZm9ybWF0dGluZ0NvbnRleHRSb290KSk7CisgICAgICAgIHJldHVybiBib3R0b20o
bV9mbG9hdGluZ1N0YXRlLnJpZ2h0Qm90dG9tKHJvb3QoKSkpOwogCiAgICAgaWYgKGNsZWFyID09
IENsZWFyOjpCb3RoKQotICAgICAgICByZXR1cm4gYm90dG9tKG1fZmxvYXRpbmdTdGF0ZS5ib3R0
b20oZm9ybWF0dGluZ0NvbnRleHRSb290KSk7CisgICAgICAgIHJldHVybiBib3R0b20obV9mbG9h
dGluZ1N0YXRlLmJvdHRvbShyb290KCkpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiB7IH07CiB9CiAKK0Zsb2F0aW5nQ29udGV4dDo6Q29uc3RyYWludHMgRmxvYXRp
bmdDb250ZXh0Ojpjb25zdHJhaW50cyhQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3Np
dGlvbikgY29uc3QKK3sKKyAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgLy8gMS4gQ29udmVydCB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiB0aGlzIGZsb2F0aW5nIGNv
bnRleHQgaXMgaW5oZXJpdGVkLgorICAgIC8vIDIuIEZpbmQgdGhlIGlubmVyIGxlZnQvcmlnaHQg
ZmxvYXRzIGF0IHZlcnRpY2FsUG9zaXRpb24uCisgICAgLy8gMy4gQ29udmVydCBsZWZ0L3JpZ2h0
IHBvc2l0aW9ucyBiYWNrIHRvIGZvcm1hdHRpbmdDb250ZXh0Um9vdCdzIGNvb3JpZG5hdGUgc3lz
dGVtLgorICAgIGF1dG8gY29vcmRpbmF0ZU1hcHBpbmdJc1JlcXVpcmVkID0gJmZsb2F0aW5nU3Rh
dGUoKS5yb290KCkgIT0gJnJvb3QoKTsKKyAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBQb2lu
dCB7IDAsIHZlcnRpY2FsUG9zaXRpb24gfTsKKyAgICBMYXlvdXRTaXplIGFkanVzdGluZ0RlbHRh
OworCisgICAgaWYgKGNvb3JkaW5hdGVNYXBwaW5nSXNSZXF1aXJlZCkgeworICAgICAgICBhZGp1
c3RlZFBvc2l0aW9uID0gRm9ybWF0dGluZ0NvbnRleHQ6Om1hcFBvaW50VG9BbmNlc3RvcihsYXlv
dXRTdGF0ZSgpLCBhZGp1c3RlZFBvc2l0aW9uLCByb290KCksIGRvd25jYXN0PENvbnRhaW5lcj4o
ZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKSkpOworICAgICAgICBhZGp1c3RpbmdEZWx0YSA9IHsgYWRq
dXN0ZWRQb3NpdGlvbi54LCBhZGp1c3RlZFBvc2l0aW9uLnkgLSB2ZXJ0aWNhbFBvc2l0aW9uIH07
CisgICAgfQorCisgICAgQ29uc3RyYWludHMgY29uc3RyYWludHM7CisgICAgYXV0byYgZmxvYXRz
ID0gZmxvYXRpbmdTdGF0ZSgpLmZsb2F0cygpOworICAgIGZvciAoYXV0byBpbmRleCA9IGZsb2F0
cy5zaXplKCkgLSAxOyAtLWluZGV4OykgeworICAgICAgICBhdXRvJiBmbG9hdEl0ZW0gPSBmbG9h
dHNbaW5kZXhdOworCisgICAgICAgIGlmIChjb25zdHJhaW50cy5sZWZ0ICYmIGZsb2F0SXRlbS5p
c0xlZnRQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAo
Y29uc3RyYWludHMucmlnaHQgJiYgIWZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHJlY3QgPSBmbG9hdEl0ZW0ucmVjdFdp
dGhNYXJnaW4oKTsKKyAgICAgICAgaWYgKCEocmVjdC50b3AoKSA8PSBhZGp1c3RlZFBvc2l0aW9u
LnkgJiYgYWRqdXN0ZWRQb3NpdGlvbi55IDwgcmVjdC5ib3R0b20oKSkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpZiAoZmxvYXRJdGVtLmlzTGVmdFBvc2l0aW9uZWQoKSkKKyAg
ICAgICAgICAgIGNvbnN0cmFpbnRzLmxlZnQgPSBQb2ludEluQ29udGV4dFJvb3QgeyByZWN0LnJp
Z2h0KCksIHJlY3QuYm90dG9tKCkgfTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uc3Ry
YWludHMucmlnaHQgPSBQb2ludEluQ29udGV4dFJvb3QgeyByZWN0LmxlZnQoKSwgcmVjdC5ib3R0
b20oKSB9OworCisgICAgICAgIGlmIChjb25zdHJhaW50cy5sZWZ0ICYmIGNvbnN0cmFpbnRzLnJp
Z2h0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGNvb3JkaW5hdGVNYXBw
aW5nSXNSZXF1aXJlZCkgeworICAgICAgICBpZiAoY29uc3RyYWludHMubGVmdCkKKyAgICAgICAg
ICAgIGNvbnN0cmFpbnRzLmxlZnQtPm1vdmUoLWFkanVzdGluZ0RlbHRhKTsKKworICAgICAgICBp
ZiAoY29uc3RyYWludHMucmlnaHQpCisgICAgICAgICAgICBjb25zdHJhaW50cy5yaWdodC0+bW92
ZSgtYWRqdXN0aW5nRGVsdGEpOworICAgIH0KKyAgICByZXR1cm4gY29uc3RyYWludHM7Cit9CisK
IHN0YXRpYyBGbG9hdFBhaXI6OkxlZnRSaWdodEluZGV4IGZpbmRBdmFpbGFibGVQb3NpdGlvbihG
bG9hdEF2b2lkZXImIGZsb2F0QXZvaWRlciwgY29uc3QgRmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0
JiBmbG9hdHMpCiB7CiAgICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBib3R0b21N
b3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmgK
aW5kZXggMjZiMTE3NzRhODUyZGU1NDFlMGVhMDY3YzNlNjRlMTJiNzg4ZWVmZC4uODk5M2EwYTcw
MWM2ZmMwZDAxNThiZTA2ZTdhZTViMjJhZTA1OTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExh
eW91dFN0YXRlOwogY2xhc3MgRmxvYXRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKEZsb2F0aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgRmxvYXRpbmdDb250ZXh0KEZs
b2F0aW5nU3RhdGUmKTsKKyAgICBGbG9hdGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIEZsb2F0aW5nU3RhdGUmKTsKIAogICAgIEZsb2F0aW5nU3RhdGUm
IGZsb2F0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGU7IH0KIApAQCAt
NTksMTIgKzU5LDIyIEBAIHB1YmxpYzoKICAgICB9OwogICAgIENsZWFyYW5jZVBvc2l0aW9uIHZl
cnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGNvbnN0IEJveCYpIGNvbnN0OwogCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRlLmZsb2F0cygpLmlzRW1w
dHkoKTsgfQorCisgICAgc3RydWN0IENvbnN0cmFpbnRzIHsKKyAgICAgICAgT3B0aW9uYWw8UG9p
bnRJbkNvbnRleHRSb290PiBsZWZ0OworICAgICAgICBPcHRpb25hbDxQb2ludEluQ29udGV4dFJv
b3Q+IHJpZ2h0OworICAgIH07CisgICAgQ29uc3RyYWludHMgY29uc3RyYWludHMoUG9zaXRpb25J
bkNvbnRleHRSb290IHZlcnRpY2FsUG9zaXRpb24pIGNvbnN0OworCiBwcml2YXRlOgogICAgIExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRpbmdTdGF0ZS5s
YXlvdXRTdGF0ZSgpOyB9CisgICAgY29uc3QgQ29udGFpbmVyJiByb290KCkgY29uc3QgeyByZXR1
cm4gKm1fcm9vdDsgfQogCiAgICAgdm9pZCBmaW5kUG9zaXRpb25Gb3JGbG9hdEJveChGbG9hdEJv
eCYpIGNvbnN0OwogICAgIHZvaWQgZmluZFBvc2l0aW9uRm9yRm9ybWF0dGluZ0NvbnRleHRSb290
KEZsb2F0QXZvaWRlciYpIGNvbnN0OwogCisgICAgV2Vha1B0cjxjb25zdCBDb250YWluZXI+IG1f
cm9vdDsKICAgICBGbG9hdGluZ1N0YXRlJiBtX2Zsb2F0aW5nU3RhdGU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcAppbmRleCA3MTc2OGI3
NzcyNGZmNjIyMmJkNmUwNGY0YTg5ZDA2Y2Y0NDgwYjk4Li45MmQyZjJkZTlhN2QyOTA5N2U2YWM4
ZTBkNDI4NDliNTUxOTgyMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRpbmdTdGF0ZS5jcHAKQEAgLTEwOSw1NiArMTA5LDYgQEAgdm9pZCBGbG9hdGluZ1N0YXRl
OjphcHBlbmQoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAgICAgcmV0dXJuIG1fZmxvYXRzLmluc2Vy
dCgwLCBuZXdGbG9hdEl0ZW0pOwogfQogCi1GbG9hdGluZ1N0YXRlOjpDb25zdHJhaW50cyBGbG9h
dGluZ1N0YXRlOjpjb25zdHJhaW50cyhQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3Np
dGlvbiwgY29uc3QgQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0Ci17Ci0gICAgaWYg
KGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIC8vIDEuIENvbnZlcnQgdmVy
dGljYWwgcG9zaXRpb24gaWYgdGhpcyBmbG9hdGluZyBjb250ZXh0IGlzIGluaGVyaXRlZC4KLSAg
ICAvLyAyLiBGaW5kIHRoZSBpbm5lciBsZWZ0L3JpZ2h0IGZsb2F0cyBhdCB2ZXJ0aWNhbFBvc2l0
aW9uLgotICAgIC8vIDMuIENvbnZlcnQgbGVmdC9yaWdodCBwb3NpdGlvbnMgYmFjayB0byBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QncyBjb29yaWRuYXRlIHN5c3RlbS4KLSAgICBhdXRvIGNvb3JkaW5h
dGVNYXBwaW5nSXNSZXF1aXJlZCA9ICZyb290KCkgIT0gJmZvcm1hdHRpbmdDb250ZXh0Um9vdDsK
LSAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBQb2ludCB7IDAsIHZlcnRpY2FsUG9zaXRpb24g
fTsKLSAgICBMYXlvdXRTaXplIGFkanVzdGluZ0RlbHRhOwotCi0gICAgaWYgKGNvb3JkaW5hdGVN
YXBwaW5nSXNSZXF1aXJlZCkgewotICAgICAgICBhZGp1c3RlZFBvc2l0aW9uID0gRm9ybWF0dGlu
Z0NvbnRleHQ6Om1hcFBvaW50VG9BbmNlc3RvcihtX2xheW91dFN0YXRlLCBhZGp1c3RlZFBvc2l0
aW9uLCBkb3duY2FzdDxDb250YWluZXI+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCksIGRvd25jYXN0
PENvbnRhaW5lcj4ocm9vdCgpKSk7Ci0gICAgICAgIGFkanVzdGluZ0RlbHRhID0geyBhZGp1c3Rl
ZFBvc2l0aW9uLngsIGFkanVzdGVkUG9zaXRpb24ueSAtIHZlcnRpY2FsUG9zaXRpb24gfTsKLSAg
ICB9Ci0KLSAgICBDb25zdHJhaW50cyBjb25zdHJhaW50czsKLSAgICBmb3IgKGludCBpbmRleCA9
IG1fZmxvYXRzLnNpemUoKSAtIDE7IGluZGV4ID49IDA7IC0taW5kZXgpIHsKLSAgICAgICAgYXV0
byYgZmxvYXRJdGVtID0gbV9mbG9hdHNbaW5kZXhdOwotCi0gICAgICAgIGlmIChjb25zdHJhaW50
cy5sZWZ0ICYmIGZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBpZiAoY29uc3RyYWludHMucmlnaHQgJiYgIWZsb2F0SXRlbS5pc0xl
ZnRQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBhdXRvIHJl
Y3QgPSBmbG9hdEl0ZW0ucmVjdFdpdGhNYXJnaW4oKTsKLSAgICAgICAgaWYgKCEocmVjdC50b3Ao
KSA8PSBhZGp1c3RlZFBvc2l0aW9uLnkgJiYgYWRqdXN0ZWRQb3NpdGlvbi55IDwgcmVjdC5ib3R0
b20oKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoZmxvYXRJdGVtLmlz
TGVmdFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzLmxlZnQgPSBQb2ludElu
Q29udGV4dFJvb3QgeyByZWN0LnJpZ2h0KCksIHJlY3QuYm90dG9tKCkgfTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgY29uc3RyYWludHMucmlnaHQgPSBQb2ludEluQ29udGV4dFJvb3QgeyBy
ZWN0LmxlZnQoKSwgcmVjdC5ib3R0b20oKSB9OwotCi0gICAgICAgIGlmIChjb25zdHJhaW50cy5s
ZWZ0ICYmIGNvbnN0cmFpbnRzLnJpZ2h0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgaWYgKGNvb3JkaW5hdGVNYXBwaW5nSXNSZXF1aXJlZCkgewotICAgICAgICBpZiAoY29uc3Ry
YWludHMubGVmdCkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzLmxlZnQtPm1vdmUoLWFkanVzdGlu
Z0RlbHRhKTsKLQotICAgICAgICBpZiAoY29uc3RyYWludHMucmlnaHQpCi0gICAgICAgICAgICBj
b25zdHJhaW50cy5yaWdodC0+bW92ZSgtYWRqdXN0aW5nRGVsdGEpOwotICAgIH0KLSAgICByZXR1
cm4gY29uc3RyYWludHM7Ci19Ci0KIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxv
YXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBDbGVh
ciB0eXBlKSBjb25zdAogewogICAgIGlmIChtX2Zsb2F0cy5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5oCmluZGV4IDdlNDkxZGJiNjY0ODRl
MmU4OGNmMTdiNWJhNTEyMDNmOGFmYTcwZjAuLjU5OWViOTdmYjc1YzA0YzExNGVjNmY5NzEyZjYx
ZTRlYWM3OTg0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdT
dGF0ZS5oCkBAIC01MCw4ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBC
b3gmIGxheW91dEJveCk7CiAgICAgdm9pZCByZW1vdmUoY29uc3QgQm94JiBsYXlvdXRCb3gpOwog
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdHMuaXNFbXB0eSgpOyB9
Ci0KICAgICBjb25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9mb3JtYXR0aW5nQ29u
dGV4dFJvb3Q7IH0KIAogICAgIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gdG9wKGNv
bnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdDsKQEAgLTU5LDEyICs1Nyw2IEBA
IHB1YmxpYzoKICAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IHJpZ2h0Qm90dG9t
KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdDsKICAgICBPcHRpb25hbDxQ
b3NpdGlvbkluQ29udGV4dFJvb3Q+IGJvdHRvbShjb25zdCBCb3gmIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCkgY29uc3Q7CiAKLSAgICBzdHJ1Y3QgQ29uc3RyYWludHMgewotICAgICAgICBPcHRpb25h
bDxQb2ludEluQ29udGV4dFJvb3Q+IGxlZnQ7Ci0gICAgICAgIE9wdGlvbmFsPFBvaW50SW5Db250
ZXh0Um9vdD4gcmlnaHQ7Ci0gICAgfTsKLSAgICBDb25zdHJhaW50cyBjb25zdHJhaW50cyhQb3Np
dGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbiwgY29uc3QgQm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QpIGNvbnN0OwotCiAgICAgY2xhc3MgRmxvYXRJdGVtIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIEZsb2F0SXRlbShjb25zdCBCb3gmLCBjb25zdCBGbG9hdGluZ1N0YXRlJik7CkBA
IC04Myw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIEZsb2F0TGlzdCA9IFZl
Y3RvcjxGbG9hdEl0ZW0+OwogICAgIGNvbnN0IEZsb2F0TGlzdCYgZmxvYXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbG9hdHM7IH0KLSAgICBjb25zdCBGbG9hdEl0ZW0qIGxhc3QoKSBjb25zdCB7IHJl
dHVybiBpc0VtcHR5KCkgPyBudWxscHRyIDogJm1fZmxvYXRzLmxhc3QoKTsgfQorICAgIGNvbnN0
IEZsb2F0SXRlbSogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIGZsb2F0cygpLmlzRW1wdHkoKSA/IG51
bGxwdHIgOiAmbV9mbG9hdHMubGFzdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEZsb2F0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dExpbmVMYXlvdXQuY3BwCmluZGV4IGZiY2MxYjM3M2RiMGIzZDhlMjgzMjg5NzMwYTAxYTBmY2Mx
NjFmMjUuLjNmZTU4ZmYwMTcyZjUzMjljOWY5MTlmYmZiYmE3MTIwMWRjYmNjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtMjgy
LDE4ICsyODIsMTggQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0
OjpsYXlvdXQoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW0KICAgICBhdXRvJiBmb3JtYXR0
aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgZm9ybWF0
dGluZ1Jvb3QgPSB0aGlzLT5mb3JtYXR0aW5nUm9vdCgpOwogICAgIGF1dG8mIGZvcm1hdHRpbmdS
b290RGlzcGxheUJveCA9IGZvcm1hdHRpbmdDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
Zm9ybWF0dGluZ1Jvb3QpOwotICAgIGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5l
c3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nUm9vdCkuZmxvYXRpbmdTdGF0ZSgp
OworICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgZm9ybWF0dGlu
Z1Jvb3QsIGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdS
b290KS5mbG9hdGluZ1N0YXRlKCkgfTsKIAogICAgIGF1dG8gbGluZUxvZ2ljYWxUb3AgPSBmb3Jt
YXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVudEJveFRvcCgpOwogICAgIGF1dG8gbGluZUxvZ2lj
YWxMZWZ0ID0gZm9ybWF0dGluZ1Jvb3REaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCk7CiAKICAg
ICBhdXRvIGFwcGx5RmxvYXRDb25zdHJhaW50ID0gWyZdKGF1dG8mIGxpbmVJbnB1dCkgewogICAg
ICAgICAvLyBDaGVjayBmb3IgaW50cnVkaW5nIGZsb2F0cyBhbmQgYWRqdXN0IGxvZ2ljYWwgbGVm
dC9hdmFpbGFibGUgd2lkdGggZm9yIHRoaXMgbGluZSBhY2NvcmRpbmdseS4KLSAgICAgICAgaWYg
KGZsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKQorICAgICAgICBpZiAoZmxvYXRpbmdDb250ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBhdmFpbGFibGVXaWR0
aCA9IGxpbmVJbnB1dC5pbml0aWFsQ29uc3RyYWludHMuYXZhaWxhYmxlTG9naWNhbFdpZHRoOwog
ICAgICAgICBhdXRvIGxpbmVMb2dpY2FsTGVmdCA9IGxpbmVJbnB1dC5pbml0aWFsQ29uc3RyYWlu
dHMubG9naWNhbFRvcExlZnQueCgpOwotICAgICAgICBhdXRvIGZsb2F0Q29uc3RyYWludHMgPSBm
bG9hdGluZ1N0YXRlLmNvbnN0cmFpbnRzKHsgbGluZUxvZ2ljYWxUb3AgfSwgZm9ybWF0dGluZ1Jv
b3QpOworICAgICAgICBhdXRvIGZsb2F0Q29uc3RyYWludHMgPSBmbG9hdGluZ0NvbnRleHQuY29u
c3RyYWludHMoeyBsaW5lTG9naWNhbFRvcCB9KTsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlc2Ug
Y29uc3RyYWludHMgYWN0dWFsbHkgcHV0IGxpbWl0YXRpb24gb24gdGhlIGxpbmUuCiAgICAgICAg
IGlmIChmbG9hdENvbnN0cmFpbnRzLmxlZnQgJiYgZmxvYXRDb25zdHJhaW50cy5sZWZ0LT54IDw9
IGZvcm1hdHRpbmdSb290RGlzcGxheUJveC5jb250ZW50Qm94TGVmdCgpKQogICAgICAgICAgICAg
ZmxvYXRDb25zdHJhaW50cy5sZWZ0ID0geyB9OwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29u
c3QgTGluZTo6Q29udGVuCiAgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3Jt
YXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3Rh
dGUoZm9ybWF0dGluZ1Jvb3QoKSkpOwogICAgIGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBmb3JtYXR0
aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxv
YXRpbmdDb250ZXh0IHsgZmxvYXRpbmdTdGF0ZSB9OworICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0
ID0gRmxvYXRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ1Jvb3QoKSwgZmxvYXRpbmdTdGF0ZSB9Owog
CiAgICAgLy8gTW92ZSBmbG9hdHMgdG8gdGhlaXIgZmluYWwgcG9zaXRpb24uCiAgICAgZm9yIChh
dXRvIGZsb2F0SXRlbSA6IGZsb2F0cykgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>