<?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>219314</bug_id>
          
          <creation_ts>2020-11-27 10:36:56 -0800</creation_ts>
          <short_desc>[LFC Display] Use a vector to maintain state during display tree building</short_desc>
          <delta_ts>2020-11-30 19:19:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</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>1710340</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 10:36:56 -0800</bug_when>
    <thetext>[LFC Display] Use a vector to maintain state during display tree building</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710342</commentid>
    <comment_count>1</comment_count>
      <attachid>414958</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 10:37:17 -0800</bug_when>
    <thetext>Created attachment 414958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710432</commentid>
    <comment_count>2</comment_count>
      <attachid>414958</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-28 11:30:30 -0800</bug_when>
    <thetext>Comment on attachment 414958
Patch

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

&gt; Source/WebCore/display/DisplayTreeBuilder.cpp:107
&gt; +    m_stateStack-&gt;reserveInitialCapacity(32);

An inline capacity on m_stateStack&apos;s vector probably makes sense if you are going to do this unconditionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710463</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-28 21:01:44 -0800</bug_when>
    <thetext>I tried that and makeUnique&lt;Vector, 32&gt; didn&apos;t compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710464</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-28 21:11:12 -0800</bug_when>
    <thetext>Committed r270224: &lt;https://trac.webkit.org/changeset/270224&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414958.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710465</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-28 21:12:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/71779000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710479</commentid>
    <comment_count>6</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-11-29 08:45:33 -0800</bug_when>
    <thetext>This breaks the non-unified build and the BuildingState struct is defined in DisplayTreeBuilder.cpp so there&apos;s no header that can be included to fix it. Not sure how you all would like to resolve this as the BuildingState has a PositioningContext which is also defined in that .cpp file.

Here&apos;s the build log for reference.

In file included from ..\..\Source\WebCore\display\DisplayView.cpp:27:
In file included from ..\..\Source\WebCore\display/DisplayView.h:30:
In file included from ..\..\Source\WebCore\display/DisplayLayerController.h:30:
In file included from ..\..\Source\WebCore\platform\graphics\GraphicsLayer.h:29:
In file included from ..\..\Source\WebCore\rendering\EventRegion.h:29:
In file included from ..\..\Source\WebCore\platform\graphics\Region.h:29:
In file included from ..\..\Source\WebCore\platform\graphics\IntRect.h:28:
In file included from ..\..\Source\WebCore\platform\graphics\IntPoint.h:28:
In file included from ..\..\Source\WebCore\platform\graphics\IntSize.h:29:
In file included from WTF\Headers\wtf/JSONValues.h:36:
In file included from WTF\Headers\wtf/text/StringHash.h:25:
In file included from WTF\Headers\wtf/text/AtomString.h:25:
In file included from WTF\Headers\wtf/text/AtomStringImpl.h:23:
In file included from WTF\Headers\wtf/text/UniquedStringImpl.h:28:
In file included from WTF\Headers\wtf/text/StringImpl.h:34:
WTF\Headers\wtf/Vector.h(731,37): error: arithmetic on a pointer to an incomplete type &apos;WebCore::Display::BuildingState&apos;
    iterator end() { return begin() + m_size; }
                            ~~~~~~~ ^
WTF\Headers\wtf/Vector.h(676,47): note: in instantiation of member function &apos;WTF::Vector&lt;WebCore::Display::BuildingState, 0, WTF::CrashOnOverflow, 16, WTF::FastMalloc&gt;::end&apos; requested here
            TypeOperations::destruct(begin(), end());
                                              ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\memory(2537,9): note: in instantiation of member function &apos;WTF::Vector&lt;WebCore::Display::BuildingState, 0, WTF::CrashOnOverflow, 16, WTF::FastMalloc&gt;::~Vector&apos; requested here
        delete _Ptr;
        ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\memory(2647,13): note: in instantiation of member function &apos;std::default_delete&lt;WTF::Vector&lt;WebCore::Display::BuildingState, 0, WTF::CrashOnOverflow, 16, WTF::FastMalloc&gt;&gt;::operator()&apos; requested here
            _Mypair._Get_first()(_Mypair._Myval2);
            ^
..\..\Source\WebCore\display/DisplayTreeBuilder.h(56,7): note: in instantiation of member function &apos;std::unique_ptr&lt;WTF::Vector&lt;WebCore::Display::BuildingState, 0, WTF::CrashOnOverflow, 16, WTF::FastMalloc&gt;, std::default_delete&lt;WTF::Vector&lt;WebCore::Display::BuildingState, 0, WTF::CrashOnOverflow, 16, WTF::FastMalloc&gt;&gt;&gt;::~unique_ptr&apos; requested here
class TreeBuilder {
      ^
..\..\Source\WebCore\display/DisplayTreeBuilder.h(54,8): note: forward declaration of &apos;WebCore::Display::BuildingState&apos;
struct BuildingState;
       ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710671</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-30 10:45:45 -0800</bug_when>
    <thetext>Fixed in r270251.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710903</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-30 19:19:58 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; I tried that and makeUnique&lt;Vector, 32&gt; didn&apos;t compile.

You would do, makeUnique&lt;Vector&lt;BuildingState, 32&gt;&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414958</attachid>
            <date>2020-11-27 10:37:17 -0800</date>
            <delta_ts>2020-11-28 21:11:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219314-20201127103717.patch</filename>
            <type>text/plain</type>
            <size>9957</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGViYjgwZGU2M2QyOTkz
MjY3N2QwZjU2YmU5NTgyNGUxZDNhOTcwZC4uZWQxMjdjM2NjZTk3MjYzZTVlZjZjMTgyZTNjYmNm
YTY2MTY5N2IyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTExLTI2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gVXNlIGEgdmVjdG9yIHRvIG1haW50YWluIHN0YXRlIGR1cmluZyBkaXNwbGF5IHRyZWUgYnVp
bGRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
OTMxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92
ZXIgdGltZSBtb3JlIHN0YXRlIHdpbGwgYmUgcmVxdWlyZWQgZHVyaW5nIHRyZWUgYnVpbGRpbmcu
IFJhdGhlciB0aGFuIHVzaW5nIHRoZSBzdGFjaworICAgICAgICBhbmQgcGFzc2luZyBsb3RzIG9m
IGFyZ3VtZW50cyB0byB0cmVlIGJ1aWxkaW5nIGZ1bmN0aW9ucywgdXNlIGEgVmVjdG9yPD4gdG8g
cHVzaCBzdGF0ZQorICAgICAgICB3aGVuIHByb2Nlc3NpbmcgYSBDb250YWluZXJCb3gncyBjaGls
ZHJlbiwgYW5kIHBvcCBhZnRlcndhcmRzLgorCisgICAgICAgIFRoZSB2ZWN0b3IgaXMgZGVjbGFy
ZWQgYXMgYSBzdGQ6OnVuaXF1ZV9wdHI8PiB0byBoaWRlIHRoZSBzdGF0ZSB0eXBlcyBmcm9tIHRo
ZSBoZWFkZXIuCisKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6VHJlZUJ1aWxkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6cG9wU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmN1cnJlbnRTdGF0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6cG9zaXRpb25pbmdDb250
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpidWls
ZElubGluZURpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWls
ZGVyOjpyZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OlRyZWVCdWlsZGVyOjpidWlsZElubGluZURpc3BsYXlUcmVlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERp
c3BsYXlUcmVlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVl
QnVpbGRlci5oOgorCiAyMDIwLTExLTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkMgRGlzcGxheV0gQWRkIGJhc2ljIHRyYW5zZm9ybXMgc3Vw
cG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcApp
bmRleCAzNGY0NjdlNjBiNmJhODYzNGQ2MzZiOWQ0MGRhNzE3N2I4MzA4ZjZmLi43NzRiZDU2YzNk
OWViYjM4ZjNlNGFlZjhjY2Y3MTNiZTBkOGYyMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgcHJpdmF0ZToK
ICAgICBDb250YWluaW5nQmxvY2tDb250ZXh0IG1faW5GbG93Q29udGFpbmVyOwogfTsKIAorc3Ry
dWN0IEJ1aWxkaW5nU3RhdGUgeworICAgIFBvc2l0aW9uaW5nQ29udGV4dCBwb3NpdGlvbmluZ0Nv
bnRleHQ7Cit9OwogCiBUcmVlQnVpbGRlcjo6VHJlZUJ1aWxkZXIoZmxvYXQgcGl4ZWxTbmFwcGlu
Z0ZhY3RvcikKICAgICA6IG1fYm94RmFjdG9yeShwaXhlbFNuYXBwaW5nRmFjdG9yKQorICAgICwg
bV9zdGF0ZVN0YWNrKG1ha2VVbmlxdWU8VmVjdG9yPEJ1aWxkaW5nU3RhdGU+PigpKQogeworICAg
IG1fc3RhdGVTdGFjay0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxUcmVlPiBUcmVlQnVpbGRlcjo6YnVpbGQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUpCkBAIC0xMjMsNyArMTI4LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFRyZWU+
IFRyZWVCdWlsZGVyOjpidWlsZChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSkKIAogICAgIGF1dG8gaW5zZXJ0aW9uUG9zaXRpb24gPSBJbnNlcnRpb25Qb3NpdGlvbiB7ICpy
b290RGlzcGxheUNvbnRhaW5lckJveCB9OwogCi0gICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJl
ZShsYXlvdXRTdGF0ZSwgKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCB7ICpyb290RGlzcGxh
eUNvbnRhaW5lckJveCB9LCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgbV9zdGF0ZVN0YWNrLT5h
cHBlbmQoeyAqcm9vdERpc3BsYXlDb250YWluZXJCb3ggfSk7CisKKyAgICByZWN1cnNpdmVCdWls
ZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCAqcm9vdExheW91dEJveC5maXJzdENoaWxkKCksIGlu
c2VydGlvblBvc2l0aW9uKTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKICAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiRGlzcGxheSB0
cmVlOlxuIiA8PCBkaXNwbGF5VHJlZUFzVGV4dCgqcm9vdERpc3BsYXlDb250YWluZXJCb3gpKTsK
QEAgLTEzMiw2ICsxMzksMjggQEAgc3RkOjp1bmlxdWVfcHRyPFRyZWU+IFRyZWVCdWlsZGVyOjpi
dWlsZChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUcmVlPihXVEZNb3ZlKHJvb3REaXNwbGF5Q29udGFpbmVyQm94KSk7CiB9CiAK
K3ZvaWQgVHJlZUJ1aWxkZXI6OnB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRzKGNvbnN0IExheW91
dDo6Q29udGFpbmVyQm94JiBsYXlvdXRDb250YWluZXJCb3gsIGNvbnN0IExheW91dDo6Qm94R2Vv
bWV0cnkmIGxheW91dEdlb21ldHJ5LCBjb25zdCBDb250YWluZXJCb3gmIGRpc3BsYXlCb3gpCit7
CisgICAgYXV0byYgcG9zaXRpb25pbmdDb250ZXh0ID0gbV9zdGF0ZVN0YWNrLT5sYXN0KCkucG9z
aXRpb25pbmdDb250ZXh0OworICAgIG1fc3RhdGVTdGFjay0+YXBwZW5kKHsgcG9zaXRpb25pbmdD
b250ZXh0LmNvbnRleHRGb3JEZXNjZW5kYW50cyhsYXlvdXRDb250YWluZXJCb3gsIGxheW91dEdl
b21ldHJ5LCBkaXNwbGF5Qm94KSB9KTsKK30KKwordm9pZCBUcmVlQnVpbGRlcjo6cG9wU3RhdGUo
KQoreworICAgIG1fc3RhdGVTdGFjay0+cmVtb3ZlTGFzdCgpOworfQorCitjb25zdCBCdWlsZGlu
Z1N0YXRlJiBUcmVlQnVpbGRlcjo6Y3VycmVudFN0YXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9zdGF0ZVN0YWNrICYmIG1fc3RhdGVTdGFjay0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9zdGF0
ZVN0YWNrLT5sYXN0KCk7Cit9CisKK2NvbnN0IFBvc2l0aW9uaW5nQ29udGV4dCYgVHJlZUJ1aWxk
ZXI6OnBvc2l0aW9uaW5nQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGN1cnJlbnRTdGF0
ZSgpLnBvc2l0aW9uaW5nQ29udGV4dDsKK30KKwogdm9pZCBUcmVlQnVpbGRlcjo6aW5zZXJ0KHN0
ZDo6dW5pcXVlX3B0cjxCb3g+JiYgYm94LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5zZXJ0aW9uUG9z
aXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKGluc2VydGlvblBvc2l0aW9uLmN1cnJlbnRDaGlsZCkg
ewpAQCAtMTQ0LDM1ICsxNzMsMzUgQEAgdm9pZCBUcmVlQnVpbGRlcjo6aW5zZXJ0KHN0ZDo6dW5p
cXVlX3B0cjxCb3g+JiYgYm94LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5zZXJ0aW8KICAgICB9CiB9
CiAKLXZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0
OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiBp
bmxpbmVGb3JtYXR0aW5nUm9vdCwgY29uc3QgUG9zaXRpb25pbmdDb250ZXh0JiBwb3NpdGlvbmlu
Z0NvbnRleHQsIEluc2VydGlvblBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikgY29uc3QKK3Zv
aWQgVHJlZUJ1aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiBpbmxpbmVG
b3JtYXR0aW5nUm9vdCwgSW5zZXJ0aW9uUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewog
ICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVk
SW5saW5lRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKIAogICAgIGZvciAo
YXV0byYgcnVuIDogaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCkpIHsKICAgICAgICAg
aWYgKHJ1bi50ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxpbmVHZW9tZXRyeSA9IGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLmF0KHJ1bi5saW5lSW5kZXgoKSk7Ci0gICAgICAgICAg
ICBhdXRvIHRleHRCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvclRleHRSdW4ocnVuLCBs
aW5lR2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dC5pbkZsb3dDb250YWluaW5nQmxvY2tDb250
ZXh0KCkpOworICAgICAgICAgICAgYXV0byB0ZXh0Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlC
b3hGb3JUZXh0UnVuKHJ1biwgbGluZUdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQoKS5pbkZs
b3dDb250YWluaW5nQmxvY2tDb250ZXh0KCkpOwogICAgICAgICAgICAgaW5zZXJ0KFdURk1vdmUo
dGV4dEJveCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94PihydW4ubGF5b3V0
Qm94KCkpKSB7Ci0gICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0
YXRlLCBydW4ubGF5b3V0Qm94KCksIHBvc2l0aW9uaW5nQ29udGV4dCwgaW5zZXJ0aW9uUG9zaXRp
b24pOworICAgICAgICAgICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwg
cnVuLmxheW91dEJveCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSBsYXlvdXRTdGF0ZS5nZW9t
ZXRyeUZvckJveChydW4ubGF5b3V0Qm94KCkpOwotICAgICAgICBhdXRvIGRpc3BsYXlCb3ggPSBt
X2JveEZhY3RvcnkuZGlzcGxheUJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCksIGdlb21l
dHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQuaW5GbG93Q29udGFpbmluZ0Jsb2NrQ29udGV4dCgpKTsK
KyAgICAgICAgYXV0byBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3gocnVuLmxheW91dEJveCgpLCBnZW9tZXRyeSwgcG9zaXRpb25pbmdDb250ZXh0KCkuaW5G
bG93Q29udGFpbmluZ0Jsb2NrQ29udGV4dCgpKTsKICAgICAgICAgaW5zZXJ0KFdURk1vdmUoZGlz
cGxheUJveCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgVHJlZUJ1aWxk
ZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IFBvc2l0aW9u
aW5nQ29udGV4dCYgcG9zaXRpb25pbmdDb250ZXh0LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5zZXJ0
aW9uUG9zaXRpb24pIGNvbnN0Cit2b2lkIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERpc3Bs
YXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24p
CiB7CiAgICAgYXV0byBnZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KGxheW91
dEJveCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveDsKIAotICAgIGF1dG8m
IGNvbnRhaW5pbmdCbG9ja0NvbnRleHQgPSBwb3NpdGlvbmluZ0NvbnRleHQuY29udGFpbmluZ0Js
b2NrQ29udGV4dEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8mIGNvbnRhaW5pbmdC
bG9ja0NvbnRleHQgPSBwb3NpdGlvbmluZ0NvbnRleHQoKS5jb250YWluaW5nQmxvY2tDb250ZXh0
Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgaWYgKGxheW91dEJveC5pc0JvZHlCb3goKSkK
ICAgICAgICAgZGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yQm9keUJveChs
YXlvdXRCb3gsIGdlb21ldHJ5LCBjb250YWluaW5nQmxvY2tDb250ZXh0LCBtX3Jvb3RCYWNrZ3Jv
dW5kUHJvcGdhdGlvbik7CiAgICAgZWxzZQpAQCAtMTkwLDEzICsyMTksMTMgQEAgdm9pZCBUcmVl
QnVpbGRlcjo6cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShjb25zdCBMYXlvdXQ6OkxheW91dFN0
YXRlJiBsYXlvdXRTdGEKICAgICBDb250YWluZXJCb3gmIGN1cnJlbnRCb3ggPSBkb3duY2FzdDxD
b250YWluZXJCb3g+KCppbnNlcnRpb25Qb3NpdGlvbi5jdXJyZW50Q2hpbGQpOwogICAgIGF1dG8g
aW5zZXJ0aW9uUG9zaXRpb25Gb3JDaGlsZHJlbiA9IEluc2VydGlvblBvc2l0aW9uIHsgY3VycmVu
dEJveCB9OwogCi0gICAgYXV0byBwb3NpdGlvbmluZ0NvbnRleHRGb3JEZXNjZW5kYW50cyA9IHBv
c2l0aW9uaW5nQ29udGV4dC5jb250ZXh0Rm9yRGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94
LCBnZW9tZXRyeSwgY3VycmVudEJveCk7CisgICAgcHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMo
bGF5b3V0Q29udGFpbmVyQm94LCBnZW9tZXRyeSwgY3VycmVudEJveCk7CiAKICAgICBlbnVtIGNs
YXNzIERlc2NlbmRhbnRCb3hJbmNsdXNpb24geyBBbGxCb3hlcywgT3V0T2ZGbG93T25seSB9Owog
ICAgIGF1dG8gYm94SW5jbHVzaW9uID0gRGVzY2VuZGFudEJveEluY2x1c2lvbjo6QWxsQm94ZXM7
CiAKICAgICBpZiAobGF5b3V0Q29udGFpbmVyQm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQoKSkgewotICAgICAgICBidWlsZElubGluZURpc3BsYXlUcmVlKGxheW91dFN0YXRl
LCBkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Q29udGFpbmVyQm94KSwgcG9z
aXRpb25pbmdDb250ZXh0Rm9yRGVzY2VuZGFudHMsIGluc2VydGlvblBvc2l0aW9uRm9yQ2hpbGRy
ZW4pOworICAgICAgICBidWlsZElubGluZURpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBkb3duY2Fz
dDxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Q29udGFpbmVyQm94KSwgaW5zZXJ0aW9uUG9z
aXRpb25Gb3JDaGlsZHJlbik7CiAgICAgICAgIGJveEluY2x1c2lvbiA9IERlc2NlbmRhbnRCb3hJ
bmNsdXNpb246Ok91dE9mRmxvd09ubHk7CiAgICAgfQogCkBAIC0yMTAsOCArMjM5LDEwIEBAIHZv
aWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhCiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogTGF5b3V0Ojpj
aGlsZHJlbk9mVHlwZTxMYXlvdXQ6OkJveD4obGF5b3V0Q29udGFpbmVyQm94KSkgewogICAgICAg
ICBpZiAoaW5jbHVkZUJveChib3hJbmNsdXNpb24sIGNoaWxkKSAmJiBsYXlvdXRTdGF0ZS5oYXNC
b3hHZW9tZXRyeShjaGlsZCkpCi0gICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVl
KGxheW91dFN0YXRlLCBjaGlsZCwgcG9zaXRpb25pbmdDb250ZXh0Rm9yRGVzY2VuZGFudHMsIGlu
c2VydGlvblBvc2l0aW9uRm9yQ2hpbGRyZW4pOworICAgICAgICAgICAgcmVjdXJzaXZlQnVpbGRE
aXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgY2hpbGQsIGluc2VydGlvblBvc2l0aW9uRm9yQ2hpbGRy
ZW4pOwogICAgIH0KKworICAgIHBvcFN0YXRlKCk7CiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJV
R0dJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaAppbmRl
eCBjMzJmNTNhOGE3ZWUzYjJhMDU5OTY4MTFkYTNlNGE5NDA0YTQ5NzAyLi4yMWRlMTYyMTVjYjQ3
Njk0YmNlNDJlMDAzMjFhNzNmNmU0ZjJhNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
RGlzcGxheVRyZWVCdWlsZGVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgQm94OwogY2xhc3Mg
Q29udGFpbmVyQm94OwogY2xhc3MgUG9zaXRpb25pbmdDb250ZXh0OwogY2xhc3MgVHJlZTsKK3N0
cnVjdCBCdWlsZGluZ1N0YXRlOwogCiBjbGFzcyBUcmVlQnVpbGRlciB7CiBwdWJsaWM6CkBAIC02
NCwxNCArNjUsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgQm94KiBjdXJyZW50Q2hpbGQgeyBudWxs
cHRyIH07CiAgICAgfTsKIAotICAgIHZvaWQgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShjb25z
dCBMYXlvdXQ6OkxheW91dFN0YXRlJiwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBQb3NpdGlv
bmluZ0NvbnRleHQmLCBJbnNlcnRpb25Qb3NpdGlvbiYpIGNvbnN0OwotCi0gICAgdm9pZCBidWls
ZElubGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlv
dXQ6OkNvbnRhaW5lckJveCYsIGNvbnN0IFBvc2l0aW9uaW5nQ29udGV4dCYsIEluc2VydGlvblBv
c2l0aW9uJikgY29uc3Q7CisgICAgdm9pZCByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGNvbnN0
IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6OkJveCYsIEluc2VydGlvblBvc2l0
aW9uJik7CisgICAgdm9pZCBidWlsZElubGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5
b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYsIEluc2VydGlvblBvc2l0aW9u
Jik7CiAKICAgICB2b2lkIGluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmLCBJbnNlcnRpb25Q
b3NpdGlvbiYpIGNvbnN0OwogCisgICAgdm9pZCBwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyhj
b25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBj
b25zdCBDb250YWluZXJCb3gmKTsKKyAgICB2b2lkIHBvcFN0YXRlKCk7CisgICAgCisgICAgY29u
c3QgQnVpbGRpbmdTdGF0ZSYgY3VycmVudFN0YXRlKCkgY29uc3Q7CisgICAgY29uc3QgUG9zaXRp
b25pbmdDb250ZXh0JiBwb3NpdGlvbmluZ0NvbnRleHQoKSBjb25zdDsKKwogICAgIEJveEZhY3Rv
cnkgbV9ib3hGYWN0b3J5OwogICAgIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gbV9yb290QmFj
a2dyb3VuZFByb3BnYXRpb24geyBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uOjpOb25lIH07Cisg
ICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxCdWlsZGluZ1N0YXRlPj4gbV9zdGF0ZVN0
YWNrOwogfTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykK
</data>

          </attachment>
      

    </bug>

</bugzilla>