<?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>198935</bug_id>
          
          <creation_ts>2019-06-17 15:21:09 -0700</creation_ts>
          <short_desc>Crash at com.apple.WebKit: WebKit::WebsiteDataStore::processPools const</short_desc>
          <delta_ts>2019-06-19 12:44:18 -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>New Bugs</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1545412</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-17 15:21:09 -0700</bug_when>
    <thetext>Thread 0 Crashed ↩:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit              	0x00007fff4cffeda0 WebKit::WebsiteDataStore::processPools(unsigned long, bool) const + 114
1   com.apple.WebKit              	0x00007fff4d0001e9 WebKit::WebsiteDataStore::plugins() const + 53
2   com.apple.WebKit              	0x00007fff4d000142 WebKit::WebsiteDataStore::fetchDataAndApply(WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::OptionSet&lt;WebKit::WebsiteDataFetchOption&gt;, WTF::RefPtr&lt;WTF::WorkQueue, WTF::DumbPtrTraits&lt;WTF::WorkQueue&gt; &gt;&amp;&amp;, WTF::Function&lt;void (WTF::Vector&lt;WebKit::WebsiteDataRecord, 0ul, WTF::CrashOnOverflow, 16ul&gt;)&gt;&amp;&amp;) + 2874
3   com.apple.WebKit              	0x00007fff4d0006f7 WebKit::WebsiteDataStore::fetchDataForRegistrableDomains(WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::OptionSet&lt;WebKit::WebsiteDataFetchOption&gt;, WTF::Vector&lt;WebCore::RegistrableDomain, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;, WTF::CompletionHandler&lt;void (WTF::Vector&lt;WebKit::WebsiteDataRecord, 0ul, WTF::CrashOnOverflow, 16ul&gt;&amp;&amp;, WTF::HashSet&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain::RegistrableDomainHash, WTF::HashTraits&lt;WebCore::RegistrableDomain&gt; &gt;&amp;&amp;)&gt;&amp;&amp;) + 167
4   com.apple.WebKit              	0x00007fff4cfb0bf4 WebKit::NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains(PAL::SessionID, WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::OptionSet&lt;WebKit::WebsiteDataFetchOption&gt;, WTF::Vector&lt;WebCore::RegistrableDomain, 0ul, WTF::CrashOnOverflow, 16ul&gt;, WTF::CompletionHandler&lt;void (WTF::HashSet&lt;WebCore::RegistrableDomain, WebCore::RegistrableDomain::RegistrableDomainHash, WTF::HashTraits&lt;WebCore::RegistrableDomain&gt; &gt;&amp;&amp;)&gt;&amp;&amp;) + 130
5   com.apple.WebKit              	0x00007fff4cceee38 WebKit::NetworkProcessProxy::didReceiveNetworkProcessProxyMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 8976
6   com.apple.WebKit              	0x00007fff4cca3bca IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545414</commentid>
    <comment_count>1</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-17 15:21:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/51549308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545423</commentid>
    <comment_count>2</comment_count>
      <attachid>372279</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-17 15:31:59 -0700</bug_when>
    <thetext>Created attachment 372279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545652</commentid>
    <comment_count>3</comment_count>
      <attachid>372279</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-18 10:21:05 -0700</bug_when>
    <thetext>Comment on attachment 372279
Patch

Separation of concerns &lt;https://en.wikipedia.org/wiki/Separation_of_concerns&gt; is one of our most powerful abstractions for writing maintainable code. It&apos;s why we break up code into functions, and why we break up code and data into classes.

This patch eliminates some of the separation of concerns between WebsiteDataStore and WebProcessProxy because it requires WebsiteDataStore to know all of the conditions under which WebProcessProxy&apos;s processPool() might be null. If someone changes those conditions in WebProcessProxy in the future, they need to know that they should also update the code in WebsiteDataStore -- but they&apos;re very unlikely to know that since, by appearance, WebsiteDataStore and WebProcessProxy are separate classes.

I&apos;d suggest instead is that you add a function named WebProcessProxy::processPoolIfExists(). (That&apos;s not my favorite name, but it&apos;s a naming scheme we&apos;ve agreed upon for WebKit.) WebProcessProxy::processPoolIfExists() should return m_processPool if it is not null, or null otherwise. If you do that, then WebsiteDataStore can call processPoolIfExists() without knowing all the conditions that might make the return value null, retaining most of the separation of concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545653</commentid>
    <comment_count>4</comment_count>
      <attachid>372279</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-18 10:21:22 -0700</bug_when>
    <thetext>Comment on attachment 372279
Patch

Oh! Also, can you write an API test for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545673</commentid>
    <comment_count>5</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-18 10:50:04 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 372279 [details]
&gt; Patch
&gt; 
&gt; Separation of concerns
&gt; &lt;https://en.wikipedia.org/wiki/Separation_of_concerns&gt; is one of our most
&gt; powerful abstractions for writing maintainable code. It&apos;s why we break up
&gt; code into functions, and why we break up code and data into classes.
&gt; 
&gt; This patch eliminates some of the separation of concerns between
&gt; WebsiteDataStore and WebProcessProxy because it requires WebsiteDataStore to
&gt; know all of the conditions under which WebProcessProxy&apos;s processPool() might
&gt; be null. If someone changes those conditions in WebProcessProxy in the
&gt; future, they need to know that they should also update the code in
&gt; WebsiteDataStore -- but they&apos;re very unlikely to know that since, by
&gt; appearance, WebsiteDataStore and WebProcessProxy are separate classes.
&gt; 
&gt; I&apos;d suggest instead is that you add a function named
&gt; WebProcessProxy::processPoolIfExists(). (That&apos;s not my favorite name, but
&gt; it&apos;s a naming scheme we&apos;ve agreed upon for WebKit.)
&gt; WebProcessProxy::processPoolIfExists() should return m_processPool if it is
&gt; not null, or null otherwise. If you do that, then WebsiteDataStore can call
&gt; processPoolIfExists() without knowing all the conditions that might make the
&gt; return value null, retaining most of the separation of concerns.

Okay. Will add processPoolIfExists().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545916</commentid>
    <comment_count>6</comment_count>
      <attachid>372413</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-06-18 18:03:12 -0700</bug_when>
    <thetext>Created attachment 372413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546153</commentid>
    <comment_count>7</comment_count>
      <attachid>372413</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-06-19 11:43:17 -0700</bug_when>
    <thetext>Comment on attachment 372413
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546193</commentid>
    <comment_count>8</comment_count>
      <attachid>372413</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-19 12:44:16 -0700</bug_when>
    <thetext>Comment on attachment 372413
Patch

Clearing flags on attachment: 372413

Committed r246606: &lt;https://trac.webkit.org/changeset/246606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546194</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-19 12:44:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372279</attachid>
            <date>2019-06-17 15:31:59 -0700</date>
            <delta_ts>2019-06-18 18:03:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198935-20190617153158.patch</filename>
            <type>text/plain</type>
            <size>1888</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlOGM2YTBiMDc5M2IyZjQ2
ZGIwOTk5YmI3MGVmYjAxMzAwY2I3ZTkuLmQ2OTEwMzFmMWMzNTg0ZDRhNDE1MDU2NTNkMGI5ZjRj
MGEwNGQ2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDYtMTcgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggYXQgY29tLmFwcGxlLldl
YktpdDogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkzNQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTE1NDkzMDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hlbiBXZWJQcm9jZXNzUHJveHkgaXMgcHJlLXdhcm1lZCBv
ciBpbiBwcm9jZXNzIGNhY2hlLCBpdCBkb2VzIG5vdCBob2xkIHN0cm9uZyByZWZlcmVuY2UgdG8g
aXRzIFdlYlByb2Nlc3NQb29sLAorICAgICAgICBzbyBpdCBpcyBub3Qgc2FmZSB0byBkZWZlcmVu
Y2UgYXQgdGhhdCB0aW1lLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9j
ZXNzUG9vbHMgY29uc3QpOgorCiAyMDE5LTA2LTE3ICBMdWRvdmljbyBkZSBOaXR0aXMgIDxsdWRv
dmljby5kZW5pdHRpc0Bjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFtHVEtdIFN0b3AgYWNjZXNz
aW5nIEdka0V2ZW50IGZpZWxkcyB3aGVuIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGMy
OGE2NDBmNzc3M2Q0MGUyMDg5MDk0ZGI2OGNhMTNiYTc2ZTNmNTIuLjAzMjhlM2RlMzNmMDkxMTY0
NWVkZWYzMWUzMGFmMzIxNDNjNjhmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNzQ3LDggKzE3
NDcsMTEgQEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjppc0Fzc29jaWF0ZWRQcm9jZXNzUG9vbChX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpIGNvbnMKIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nl
c3NQb29sPj4gV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCwgYm9v
bCBlbnN1cmVBUG9vbEV4aXN0cykgY29uc3QKIHsKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9j
ZXNzUG9vbD4+IHByb2Nlc3NQb29sczsKLSAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNz
ZXMoKSkKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkgeworICAgICAgICBp
ZiAocHJvY2Vzcy0+aXNJblByb2Nlc3NDYWNoZSgpIHx8IHByb2Nlc3MtPmlzUHJld2FybWVkKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZCgmcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKSk7CisgICAgfQogCiAgICAgaWYgKHByb2Nlc3NQb29scy5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgb25lIG9mIHRoZSBsZWdhY3kgZGF0YSBz
dG9yZXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372413</attachid>
            <date>2019-06-18 18:03:12 -0700</date>
            <delta_ts>2019-06-19 12:44:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198935-20190618180311.patch</filename>
            <type>text/plain</type>
            <size>4014</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg1YmQ0YWYzZTI5OGNhODEw
ZjVhMGU2YmI0OTJiMTZjMjAyNWMxZWYuLjQ5OGJkODg5MGRkYzc1NDAxMzJhMDhlNzA5ZTg2MGMx
ZTdiMDU0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDYtMTggIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggYXQgY29tLmFwcGxlLldl
YktpdDogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODkzNQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTE1NDkzMDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hlbiBXZWJQcm9jZXNzUHJveHkgaXMgaW4gV2ViUHJvY2Vz
c0NhY2hlIG9yIGlzIHByZS13YXJtZWQsIGl0IGRvZXMgbm90IGhvbGQgYSBzdHJvbmcgcmVmZXJl
bmNlIG9mIAorICAgICAgICBXZWJQcm9jZXNzUG9vbC4gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQg
bm90IHN0b3JlIHRoZSByYXcgcG9pbnRlciBvZiBXZWJQcm9jZXNzUG9vbCBhbmQgcGVyZm9ybSB3
ZWJzaXRlRGF0YVN0b3JlCisgICAgICAgIG9wZXJhdGlvbnMgd2l0aCBpdC4KKyAgICAgICAgVGhp
cyBwYXRjaCBzaG91bGQgZml4IHRoZSBjcmFzaCBhdCBkZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRl
ciBvZiBXZWJQcm9jZXNzUG9vbCBpbiAKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vz
c1Bvb2xzLCBidXQgaXQgaXMgdW5jbGVhciB3aHkgd2Vic2l0ZURhdGFTdG9yZSBjb21lcyB0byBv
YnNlcnZlIGNhY2hlZCBvciBwcmV3YXJtZWQgd2ViIAorICAgICAgICBwcm9jZXNzIHRoYXQgc2hv
dWxkIG5vdCBoYXZlIHdlYiBwYWdlLiBUaGUgcmVsZWFzZSBsb2cgbWF5IGhlbHAgdXMgZmluZCB0
aGUgY2F1c2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUG9vbElmRXhpc3RzIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorCiAyMDE5LTA2LTE4ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9yYWdlTWFuYWdl
cjo6cmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbiBzaG91bGQg
bWFrZSBzdXJlIGl0cyBzdG9yYWdlTmFtZXNwYWNlSUQgaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDNhMGMxMmQ3ZTM4MWY3ZDE5ZWVm
NmU2NTA4YjI5ZDZiZjBiNzNlMzMuLjczZWQ5OGM0ODJkYjMzYzE4MzFkM2RmMTk4YzU3ZDRjNDIw
Y2FlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMTUxNiw2ICsxNTE2LDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkZWNyZW1lbnRTdXNw
ZW5kZWRQYWdlQ291bnQoKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRI
YXNTdXNwZW5kZWRQYWdlUHJveHkoZmFsc2UpLCAwKTsKIH0KIAorV2ViUHJvY2Vzc1Bvb2wqIFdl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1Bvb2xJZkV4aXN0cygpIGNvbnN0Cit7CisgICAgaWYgKG1f
aXNQcmV3YXJtZWQgfHwgbV9pc0luUHJvY2Vzc0NhY2hlKQorICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihQcm9jZXNzLCAiJXAgLSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sSWZFeGlzdHM6
IHRyeWluZyB0byBnZXQgV2ViUHJvY2Vzc1Bvb2wgZnJvbSBhbiBpbmFjdGl2ZSBXZWJQcm9jZXNz
UHJveHkgJWkiLCB0aGlzLCBwcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBlbHNlCisgICAgICAg
IEFTU0VSVChtX3Byb2Nlc3NQb29sKTsKKyAgICByZXR1cm4gbV9wcm9jZXNzUG9vbC5nZXQoKTsK
K30KKwogV2ViUHJvY2Vzc1Bvb2wmIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1Bvb2woKSBjb25z
dAogewogICAgIEFTU0VSVChtX3Byb2Nlc3NQb29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZTc5MGJjNmIyYjRiYjVmMTI5YWQ1ODAyMzE0N2VjOTgx
NGU0NDcwYS4uZWNiYzVkOGZjNGM5ZDQyNzlmZTZhNDFkYmIwMTQ0MTQxNGRlYWI5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTExOSw2ICsxMTksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRTdXNwZW5kZWRQYWdlQ291bnQoKTsKICAgICB2
b2lkIGRlY3JlbWVudFN1c3BlbmRlZFBhZ2VDb3VudCgpOwogCisgICAgV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sSWZFeGlzdHMoKSBjb25zdDsKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2woKSBjb25zdDsKIAogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi52YWx1ZU9yKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggM2Ri
ODkzYzk3Njc1MGQ0ZDU1NGZjOTEzODBmMjVlYzhhN2ZjZWNlNC4uNGM2MzdlNWFiZGNlYzkxMzI5
MzQ1OTZiODA0NmEyYmE1MWY1NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3MTcsOCArMTcx
NywxMCBAQCBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29sKFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkgY29ucwogSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vz
c1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50LCBib29s
IGVuc3VyZUFQb29sRXhpc3RzKSBjb25zdAogewogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nl
c3NQb29sPj4gcHJvY2Vzc1Bvb2xzOwotICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3Nl
cygpKQotICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKCZwcm9jZXNzLT5wcm9jZXNzUG9vbCgpKTsK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAoYXV0
byogcHJvY2Vzc1Bvb2wgPSBwcm9jZXNzLT5wcm9jZXNzUG9vbElmRXhpc3RzKCkpCisgICAgICAg
ICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sKTsKKyAgICB9CiAKICAgICBpZiAocHJv
Y2Vzc1Bvb2xzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBvbmUgb2Yg
dGhlIGxlZ2FjeSBkYXRhIHN0b3Jlcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>