<?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>181438</bug_id>
          
          <creation_ts>2018-01-09 09:08:42 -0800</creation_ts>
          <short_desc>REGRESSION(r226266): [GTK] RELEASE_ASSERT(reservedZoneSize &gt;= minimumReservedZoneSize) in JSC::VM::updateStackLimits</short_desc>
          <delta_ts>2018-01-17 07:28:31 -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>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179914</see_also>
    
    <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=792593</see_also>
          <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="Guilaume Ayoub">guillaume.webkit</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mike</cc>
    
    <cc>oliver</cc>
    
    <cc>tpopela</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1387290</commentid>
    <comment_count>0</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2018-01-09 09:08:42 -0800</bug_when>
    <thetext>When I use Geary (a GTK-based mail client using WebKit-GTK), I get this trace:

1   0x7fbfa97e5c67 /usr/lib64/libjavascriptcoregtk-4.0.so.18(+0xaabc67) [0x7fbfa97e5c67]
2   0x7fbfa96e9ee5 /usr/lib64/libjavascriptcoregtk-4.0.so.18(+0x9afee5) [0x7fbfa96e9ee5]
3   0x7fbfa95d3bc7 /usr/lib64/libjavascriptcoregtk-4.0.so.18(+0x899bc7) [0x7fbfa95d3bc7]
4   0x7fbfa8ded210 /usr/lib64/libjavascriptcoregtk-4.0.so.18(JSValueIsNumber+0x20) [0x7fbfa8ded210]
5   0x67b24e geary(geary_js_to_number+0x2e) [0x67b24e]
6   0x5099a0 geary(web_kit_util_to_number+0x40) [0x5099a0]
7   0x49c94e geary() [0x49c94e]
8   0x7fbfb00b1ebd /usr/lib64/libgobject-2.0.so.0(g_closure_invoke+0x19d) [0x7fbfb00b1ebd]
9   0x7fbfb00c4ee3 /usr/lib64/libgobject-2.0.so.0(+0x22ee3) [0x7fbfb00c4ee3]
10  0x7fbfb00cd905 /usr/lib64/libgobject-2.0.so.0(g_signal_emit_valist+0xa65) [0x7fbfb00cd905]
11  0x7fbfb00ce2ca /usr/lib64/libgobject-2.0.so.0(g_signal_emit+0x8a) [0x7fbfb00ce2ca]
12  0x7fbfabc133b9 /usr/lib64/libwebkit2gtk-4.0.so.37(+0x8f13b9) [0x7fbfabc133b9]
13  0x7fbfababfa03 /usr/lib64/libwebkit2gtk-4.0.so.37(+0x79da03) [0x7fbfababfa03]
14  0x7fbfabd7b1be /usr/lib64/libwebkit2gtk-4.0.so.37(+0xa591be) [0x7fbfabd7b1be]
15  0x7fbfab97b54e /usr/lib64/libwebkit2gtk-4.0.so.37(+0x65954e) [0x7fbfab97b54e]
16  0x7fbfaba58ec2 /usr/lib64/libwebkit2gtk-4.0.so.37(+0x736ec2) [0x7fbfaba58ec2]
17  0x7fbfab976e60 /usr/lib64/libwebkit2gtk-4.0.so.37(+0x654e60) [0x7fbfab976e60]
18  0x7fbfab977728 /usr/lib64/libwebkit2gtk-4.0.so.37(+0x655728) [0x7fbfab977728]
19  0x7fbfadb222f3 /usr/lib64/libwebkit2gtk-4.0.so.37(+0x28002f3) [0x7fbfadb222f3]
20  0x7fbfadb505a9 /usr/lib64/libwebkit2gtk-4.0.so.37(+0x282e5a9) [0x7fbfadb505a9]
21  0x7fbfafdd8585 /usr/lib64/libglib-2.0.so.0(g_main_context_dispatch+0x135) [0x7fbfafdd8585]
22  0x7fbfafdd8928 /usr/lib64/libglib-2.0.so.0(+0x4a928) [0x7fbfafdd8928]
23  0x7fbfafdd89ac /usr/lib64/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7fbfafdd89ac]
24  0x7fbfb039ce1d /usr/lib64/libgio-2.0.so.0(g_application_run+0x1ed) [0x7fbfb039ce1d]
25  0x46b9a3 geary(_vala_main+0x53) [0x46b9a3]
26  0x7fbfa8479f3a /lib64/libc.so.6(__libc_start_main+0xea) [0x7fbfa8479f3a]
27  0x46b87a geary(_start+0x2a) [0x46b87a]

The problem happens with WebKit-GTK 2.19.4 but didn&apos;t happen with 2.19.3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387291</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-09 09:08:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/36376724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387320</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-09 10:41:09 -0800</bug_when>
    <thetext>We need a real backtrace with debuginfo, taken with gdb, if you want us to investigate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387572</commentid>
    <comment_count>3</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2018-01-10 00:11:03 -0800</bug_when>
    <thetext>Sorry, I don&apos;t know gdb very well…  I&apos;ve tried to run Geary with gdb but I don&apos;t get much more than the trace I posted previously. How can I get more debug info?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387700</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-10 09:17:31 -0800</bug_when>
    <thetext>See https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces for help with getting stack traces. Once you&apos;ve figured out how to install the needed debuginfo, if you use a modern distro with coredumpctl enabled, it should be as easy as:

$ coredumpctl gdb
(gdb) bt full</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387896</commentid>
    <comment_count>5</comment_count>
      <attachid>330972</attachid>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2018-01-10 15:18:39 -0800</bug_when>
    <thetext>Created attachment 330972
Backtrace

Thanks a lot for your help, here&apos;s the trace with Geary and WebKit-GTK symbols (I hope it&apos;s enough).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388008</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-10 18:41:02 -0800</bug_when>
    <thetext>Thanks, that was what I was looking for. Unfortunately I can&apos;t reproduce with trunk, and it&apos;s only been one day since 2.19.4.

While something is clearly wrong here, there&apos;s no sign that this crash on startup is also a web-exposed security issue. And it only affects an unstable release, so I&apos;m going to make this bug public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388010</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-10 18:44:47 -0800</bug_when>
    <thetext>It&apos;s hitting a release assert:

    // We should have already ensured that Options::reservedZoneSize() &gt;= minimumReserveZoneSize at
    // options initialization time, and the option value should not have been changed thereafter.
    // We don&apos;t have the ability to assert here that it hasn&apos;t changed, but we can at least assert
    // that the value is sane.
    RELEASE_ASSERT(reservedZoneSize &gt;= minimumReservedZoneSize);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388040</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-10 19:59:41 -0800</bug_when>
    <thetext>Can we get a symbolicated trace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388042</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-10 20:00:42 -0800</bug_when>
    <thetext>(In reply to Oliver Hunt from comment #8)
&gt; Can we get a symbolicated trace?

Sorry was looking at a different bug. The internet is hard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388087</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-10 21:13:20 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #7)
&gt; It&apos;s hitting a release assert:
&gt; 
&gt;     // We should have already ensured that Options::reservedZoneSize() &gt;=
&gt; minimumReserveZoneSize at
&gt;     // options initialization time, and the option value should not have
&gt; been changed thereafter.
&gt;     // We don&apos;t have the ability to assert here that it hasn&apos;t changed, but
&gt; we can at least assert
&gt;     // that the value is sane.
&gt;     RELEASE_ASSERT(reservedZoneSize &gt;= minimumReservedZoneSize);

Options::reservedZoneSize() is initialized in recomputeDependentOptions(), which is called from Options::initialize().  Options::initialize() is called from initializeThreading().

The only way this assertion can fail is if initializeThreading() was not called in the initialization process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388137</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-10 23:20:28 -0800</bug_when>
    <thetext>This is called after a message has been received from the web process, so threading has been initialized for sure. The first thing InitializeWebKit2() does is calling JSC::initializeThreading(). Guillaume, could you check the value of reservedZoneSize right before the assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388174</commentid>
    <comment_count>12</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2018-01-11 02:19:23 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #11)
&gt; Guillaume, could you check the
&gt; value of reservedZoneSize right before the assert?

It&apos;s 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388197</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-11 05:33:34 -0800</bug_when>
    <thetext>(In reply to Guilaume Ayoub from comment #12)
&gt; (In reply to Carlos Garcia Campos from comment #11)
&gt; &gt; Guillaume, could you check the
&gt; &gt; value of reservedZoneSize right before the assert?
&gt; 
&gt; It&apos;s 0.

Can we ensure that Options::initialize() is called?
My rough guess is that this is similar to bug 179914 issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388238</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 08:16:10 -0800</bug_when>
    <thetext>I can reproduce 100% by loading https://mail.gnome.org/mailman/admindb/epiphany-list in 2.19.5. The spam arriving at epiphany-list will grow unchecked. :P

So now that I have a reproducer, I can help with debugging.

(In reply to Yusuke Suzuki from comment #13)
&gt; Can we ensure that Options::initialize() is called?
&gt; My rough guess is that this is similar to bug 179914 issue.

My fear is that we&apos;ll discover my solution to bug #179914 is somehow insufficient. Which would be quite a shame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388240</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 08:18:40 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; I can reproduce 100% by loading
&gt; https://mail.gnome.org/mailman/admindb/epiphany-list in 2.19.5.

You have to load that in Epiphany since the crash depends on Epiphany web process messages (same as what Geary is doing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388392</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 12:58:59 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #15)
&gt; You have to load that in Epiphany since the crash depends on Epiphany web
&gt; process messages (same as what Geary is doing).

Every webpage with a password form crashes the UI process. :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388582</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 17:38:07 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; My fear is that we&apos;ll discover my solution to bug #179914 is somehow
&gt; insufficient. Which would be quite a shame.

I can only reproduce when I build without -DDEVELOPER_MODE=ON. That&apos;s a bad sign.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388596</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 17:54:06 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #17)
&gt; I can only reproduce when I build without -DDEVELOPER_MODE=ON. That&apos;s a bad
&gt; sign.

And indeed, there are two different instances of the function JSC::Options::Initialize in the process address space, according to some simple debugging:

// Above the RELEASE_ASSERT
WTFLogAlways(&quot;%s: pid=%u Options::Initialize=%p&quot;, __PRETTY_FUNCTION__, getpid(), &amp;Options::initialize);


Output snippet:

void JSC::VM::updateStackLimits(): pid=10373 Options::Initialize=0x7fe2b2387af6
void JSC::VM::updateStackLimits(): pid=10373 Options::Initialize=0x7fe2ad41091e

^ note the address of the function has changed....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388602</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 18:09:08 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #11)
&gt; This is called after a message has been received from the web process, so
&gt; threading has been initialized for sure. The first thing InitializeWebKit2()
&gt; does is calling JSC::initializeThreading(). Guillaume, could you check the
&gt; value of reservedZoneSize right before the assert?

The problem is that it&apos;s only been called in libwebkit2gtk&apos;s copy of JSC, not in libjavascriptcoregtk&apos;s copy of JSC. Remember that after bug #179914, both libraries contain their own separate copies of JSC, so both will need to be initialized.

Maybe we can do this in a library constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388609</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-11 18:19:18 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #19)
&gt; (In reply to Carlos Garcia Campos from comment #11)
&gt; &gt; This is called after a message has been received from the web process, so
&gt; &gt; threading has been initialized for sure. The first thing InitializeWebKit2()
&gt; &gt; does is calling JSC::initializeThreading(). Guillaume, could you check the
&gt; &gt; value of reservedZoneSize right before the assert?
&gt; 
&gt; The problem is that it&apos;s only been called in libwebkit2gtk&apos;s copy of JSC,
&gt; not in libjavascriptcoregtk&apos;s copy of JSC. Remember that after bug #179914,
&gt; both libraries contain their own separate copies of JSC, so both will need
&gt; to be initialized.
&gt; 
&gt; Maybe we can do this in a library constructor.

How do we solve such a problem in macOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388613</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-11 18:21:27 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #20)
&gt; (In reply to Michael Catanzaro from comment #19)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #11)
&gt; &gt; &gt; This is called after a message has been received from the web process, so
&gt; &gt; &gt; threading has been initialized for sure. The first thing InitializeWebKit2()
&gt; &gt; &gt; does is calling JSC::initializeThreading(). Guillaume, could you check the
&gt; &gt; &gt; value of reservedZoneSize right before the assert?
&gt; &gt; 
&gt; &gt; The problem is that it&apos;s only been called in libwebkit2gtk&apos;s copy of JSC,
&gt; &gt; not in libjavascriptcoregtk&apos;s copy of JSC. Remember that after bug #179914,
&gt; &gt; both libraries contain their own separate copies of JSC, so both will need
&gt; &gt; to be initialized.
&gt; &gt; 
&gt; &gt; Maybe we can do this in a library constructor.
&gt; 
&gt; How do we solve such a problem in macOS?

If we the app can mix libjavascriptcoregtk and libwebkit2gtk, having 2 copies of JSC looks dangerous to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388615</commentid>
    <comment_count>22</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-11 18:26:51 -0800</bug_when>
    <thetext>&gt; How do we solve such a problem in macOS?

on osx JavaScriptCore is not included in WebKit, so there&apos;s only one.

The problem is that (I would guess) webkitgtk can&apos;t simply depend on a distinct jsc package due the the (non-api) binary dependencies between webkit and jsc.

Because webkitgtk and javascriptcoregtk are separately packaged they can be updated out of sync, and so webkitgtk must contain its own JSC. This means that you encounter a problem if you have an application that uses webkitgtk and javacrbiptcoregtk at the same time.

On osx we just ensure that webkit and javascriptcore releases are built in lock step, and if there is ever an update to only (strictly speaking) requires JSC to update we still rebuild and update the entire dependency chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388616</commentid>
    <comment_count>23</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-11 18:33:50 -0800</bug_when>
    <thetext>
&gt; If we the app can mix libjavascriptcoregtk and libwebkit2gtk, having 2
&gt; copies of JSC looks dangerous to me.

Yes, the fix for this is probably to prevent an application from linking both.

Basically imagine I do the following:

(in my app):
JSObjectRef obj = JSObjectMake(GtkWebViewGetContext(), ...)
GtkWebViewDoCoolThing(obj)

If my app links to libjavascriptgtk then JSObjectMake will hit that implementation, and pass a JSContextRef that points to a context from the webkitgtk jsc, which may not be binary compatible. Even if it is, it will then create a JSObject using the ljscgtk object layout and pass the the webkitgtk&apos;s jsc implementation, and so on and so forth with each step getting increasingly more likely to go wrong.

Also I suspect the GC(s) will have a fit :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388626</commentid>
    <comment_count>24</comment_count>
      <attachid>331155</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 19:01:05 -0800</bug_when>
    <thetext>Created attachment 331155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388627</commentid>
    <comment_count>25</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-11 19:01:45 -0800</bug_when>
    <thetext>I&apos;m unsure what a good fix for this is. Literally the reason JSC and WK c an be different frameworks on osx is because B&amp;I has binary (e.g. non-api,spi) dependency chains recorded for all projects, so when an update needs one project all the depending projects are also rebuilt and placed in the update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388630</commentid>
    <comment_count>26</comment_count>
      <attachid>331155</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-11 19:05:00 -0800</bug_when>
    <thetext>Comment on attachment 331155
Patch

I am not convinced this is safe (see my prior comment) -- if the two jsc binaries cannot be guaranteed to be the same, then objects can&apos;t be shared.  Also I just realized that I have no idea what happens with things like the GC, or even gigacages, will work if there are different instances of the same library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388631</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 19:05:14 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #24)
&gt; Created attachment 331155 [details]
&gt; Patch

This broken patch fixes the reported crash, and I think it&apos;s the only way to make this work. But it introduces a UI process hang when closing any web process, which I have not debugged yet.

It&apos;s also possible that passing JSValues between two different JSC VMs will, er... not work very stupendously. Not sure. Might be that we have to roll out r226266.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388632</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 19:07:18 -0800</bug_when>
    <thetext>(In reply to Oliver Hunt from comment #26) 
&gt; I am not convinced this is safe (see my prior comment) -- if the two jsc
&gt; binaries cannot be guaranteed to be the same, then objects can&apos;t be shared. 
&gt; Also I just realized that I have no idea what happens with things like the
&gt; GC, or even gigacages, will work if there are different instances of the
&gt; same library.

Yeah, I think we need to go back to the drawing board in bug #179914.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388638</commentid>
    <comment_count>29</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-11 19:13:44 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #28)
&gt; (In reply to Oliver Hunt from comment #26) 
&gt; &gt; I am not convinced this is safe (see my prior comment) -- if the two jsc
&gt; &gt; binaries cannot be guaranteed to be the same, then objects can&apos;t be shared. 
&gt; &gt; Also I just realized that I have no idea what happens with things like the
&gt; &gt; GC, or even gigacages, will work if there are different instances of the
&gt; &gt; same library.
&gt; 
&gt; Yeah, I think we need to go back to the drawing board in bug #179914.

Yeah, looking at that you&apos;re correct.

It&apos;s not even mixing between VMs (which isn&apos;t safe anyway :p ) it&apos;s sharing objects with the same C type between libraries that may have different ideas of what the C type actually is.

Ideally there would be a single libjavascriptcore that webkitgtk (or qt) could link to. The problem is that you need to have a way to ensure lock step updates when they&apos;re necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388642</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 19:20:35 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #28) 
&gt; Yeah, I think we need to go back to the drawing board in bug #179914.

It seemed to work so well at first, too. :(

Carlos, we have a few options:

 a) We could export the JSC API in libwebkit2gtk, and change libwebkit2gtk to not link to libjavascriptcoregtk. The downside is an application will likely blow up if it accidentally links to both libs.

 b) We could get rid of separate libjavascriptcoregtk, which was probably a mistake. I think we can do it now, since nothing except seed git master depends on it, and it has not released in years. If anyone starts working on seed again, we can tell them to package the JSCOnly port instead. That does have the same problem as the point above, though: any app that accidentally links to our libwebkit2gtk and the hypothetical libjsconly will likely blow up due to symbol clashes.

 c) If you don&apos;t want to get rid of separate libjavascriptcoregtk, then we can do a partial revert of r226266, stop static linking libwebkit2gtk to JavaScriptCore but keep -fvisibility=hidden. Then we need to sabotage all the internal export macros (JSC_EXPORT, WEBCORE_EXPORT) to do nothing. Then we can drop the linker version script entirely. I *think* that would solve everything.

Let me try (c). Disabling the internal export macros is something I really should have done in the previous bug, anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388647</commentid>
    <comment_count>31</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 19:25:44 -0800</bug_when>
    <thetext>(In reply to Oliver Hunt from comment #29)
&gt; It&apos;s not even mixing between VMs (which isn&apos;t safe anyway :p ) it&apos;s sharing
&gt; objects with the same C type between libraries that may have different ideas
&gt; of what the C type actually is.

No they&apos;re guaranteed to have the same idea of what the C type is, because they&apos;re literally built from the same source. The static lib inside both is exactly the same. In both traditional Linux distributions and in new deployment models like Flatpak, they&apos;ll always be updated at the same time, and it would not be our fault if that wasn&apos;t the case.

The problem is the library state, like the VMs, being unexpectedly different. If I was smarter, I would not have even tried to do this. But, hey, it seemed like it worked well... for about three weeks!

&gt; Ideally there would be a single libjavascriptcore that webkitgtk (or qt)
&gt; could link to. The problem is that you need to have a way to ensure lock
&gt; step updates when they&apos;re necessary

It would be way too hard. And the first step would be to bring back PLATFORM(QT) upstream. I guess Konstantin would like that. :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388652</commentid>
    <comment_count>32</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-11 19:30:53 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #31)
&gt; (In reply to Oliver Hunt from comment #29)
&gt; &gt; It&apos;s not even mixing between VMs (which isn&apos;t safe anyway :p ) it&apos;s sharing
&gt; &gt; objects with the same C type between libraries that may have different ideas
&gt; &gt; of what the C type actually is.
&gt; 
&gt; No they&apos;re guaranteed to have the same idea of what the C type is, because
&gt; they&apos;re literally built from the same source. The static lib inside both is
&gt; exactly the same. In both traditional Linux distributions and in new
&gt; deployment models like Flatpak, they&apos;ll always be updated at the same time,
&gt; and it would not be our fault if that wasn&apos;t the case.
&gt; 
&gt; The problem is the library state, like the VMs, being unexpectedly
&gt; different. If I was smarter, I would not have even tried to do this. But,
&gt; hey, it seemed like it worked well... for about three weeks!


If they&apos;re the same library my inclination would be to have libwebkitgtk (or whatever it is called now) just link libjavascriptcore, then you wouldn&apos;t need to worry about duplicate linking as you only get a single library loaded

&gt; 
&gt; &gt; Ideally there would be a single libjavascriptcore that webkitgtk (or qt)
&gt; &gt; could link to. The problem is that you need to have a way to ensure lock
&gt; &gt; step updates when they&apos;re necessary
&gt; 
&gt; It would be way too hard. And the first step would be to bring back
&gt; PLATFORM(QT) upstream. I guess Konstantin would like that. :D

I was joking :D

But I mean an ideal world would be a single libjavascriptcore that all platforms could use -- the problem would be if there are multiple webkits for different toolkits (with different build flags, etc) and different release schedules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388660</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 19:45:11 -0800</bug_when>
    <thetext>(In reply to Oliver Hunt from comment #32) 
&gt; If they&apos;re the same library my inclination would be to have libwebkitgtk (or
&gt; whatever it is called now) just link libjavascriptcore, then you wouldn&apos;t
&gt; need to worry about duplicate linking as you only get a single library loaded

Yes, that&apos;s what we need to go back to, but we need to do it slightly differently than before, because what we had before blew up too (bug #179914). Patch incoming....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388682</commentid>
    <comment_count>34</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-11 20:42:23 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #30)
&gt; Let me try (c). Disabling the internal export macros is something I really
&gt; should have done in the previous bug, anyway.

I think it might work, but I&apos;m not sure. I need another day to test it, since it requires doing full rebuilds with and without DEVELOPER_MODE enabled.

It turns out the export macros were *already* doing nothing on Linux ports. So removing the version scripts should be possible. But the risk is that -fvisibility=hidden might cause bug #179914, even without the version script. Not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388689</commentid>
    <comment_count>35</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-11 21:05:37 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #34)
&gt; (In reply to Michael Catanzaro from comment #30)
&gt; &gt; Let me try (c). Disabling the internal export macros is something I really
&gt; &gt; should have done in the previous bug, anyway.
&gt; 
&gt; I think it might work, but I&apos;m not sure. I need another day to test it,
&gt; since it requires doing full rebuilds with and without DEVELOPER_MODE
&gt; enabled.
&gt; 
&gt; It turns out the export macros were *already* doing nothing on Linux ports.
&gt; So removing the version scripts should be possible. But the risk is that
&gt; -fvisibility=hidden might cause bug #179914, even without the version
&gt; script. Not sure.

Hmmm, I just found myself wondering if JSC uses identity of function pointers anywhere (I mean compiled in function pointers, rather than js ones :D )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388691</commentid>
    <comment_count>36</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-01-11 21:09:09 -0800</bug_when>
    <thetext>(In reply to Oliver Hunt from comment #35)
&gt; (In reply to Michael Catanzaro from comment #34)
&gt; &gt; (In reply to Michael Catanzaro from comment #30)
&gt; &gt; &gt; Let me try (c). Disabling the internal export macros is something I really
&gt; &gt; &gt; should have done in the previous bug, anyway.
&gt; &gt; 
&gt; &gt; I think it might work, but I&apos;m not sure. I need another day to test it,
&gt; &gt; since it requires doing full rebuilds with and without DEVELOPER_MODE
&gt; &gt; enabled.
&gt; &gt; 
&gt; &gt; It turns out the export macros were *already* doing nothing on Linux ports.
&gt; &gt; So removing the version scripts should be possible. But the risk is that
&gt; &gt; -fvisibility=hidden might cause bug #179914, even without the version
&gt; &gt; script. Not sure.
&gt; 
&gt; Hmmm, I just found myself wondering if JSC uses identity of function
&gt; pointers anywhere (I mean compiled in function pointers, rather than js ones
&gt; :D )

At least one place that I want to remove eventually:
  Source/JavaScriptCore/wasm/WasmThunks.cpp

void Thunks::setThrowWasmException(ThrowWasmException throwWasmException)
{
    auto locker = holdLock(m_lock);
    // The thunks are unique for the entire process, therefore changing the throwing function changes it for all uses of WebAssembly.
    RELEASE_ASSERT(!m_throwWasmException || m_throwWasmException == throwWasmException);
    m_throwWasmException = throwWasmException;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388719</commentid>
    <comment_count>37</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-11 23:17:10 -0800</bug_when>
    <thetext>Let me explain how things have worked before r226266. 

 - We have libwk.so and libjsc.so. 
 - Applications only link to libwk.so and libwk links to libjsc.so.
 - Both libraries are distributed by a single package libwebkitgtk, so they are always built together, it&apos;s not possible to have different versions mixed.
 - libwk uses a version script to ensure only public API symbols were exported.
 - libjsc exports all symbols marked as default visibility in the code, because WebCore uses internal libjsc symbols.

In bug #179914 we realized that when defining symbols in the header we might end up with the same symbol in both libjsc and libwk (in this case the problem was a PerProcess&lt;&gt; impl what caused the issues). The symbol is expected to be a libjsc one, but also defined in libwk because the header is included in WebCore. That duplicated symbol was global (public) in libjsc, but local (private) in libwk. See more details in https://bugs.webkit.org/show_bug.cgi?id=179914#c49. The thing is that both symbols might end up being used.

My first idea was to make those symbols also global in libwk, because when duplicated symbols are unique global, only one is ensured to be used. But Michael&apos;s solution seemed to work and it included other improvements, like reducing the amount of exported symbols in libwk and no longer exporting everything in libjsc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388800</commentid>
    <comment_count>38</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-12 07:49:00 -0800</bug_when>
    <thetext>*** Bug 181581 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388958</commentid>
    <comment_count>39</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-12 14:28:35 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #30)
&gt; Let me try (c). Disabling the internal export macros is something I really
&gt; should have done in the previous bug, anyway.

It doesn&apos;t work, because the jsc shell and WebDriver need internal JSC/WTF symbols.

Still trying a few different things....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389062</commentid>
    <comment_count>40</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-12 19:47:19 -0800</bug_when>
    <thetext>The jsc shell totally prevents building JSC only as a shared library and also not export internal symbols. I think we have to (a) give up on exporting only public API symbols from libjsc (something we had not previously been doing), or (b) give up on having separate libjavascriptcoregtk, or (c) adopt Carlos&apos;s suggestion in https://bugs.webkit.org/show_bug.cgi?id=179914#c56 to programatically generate a linker version script that dynamically searches for unique global symbols that are present in the bss of both libjavascriptcoregtk and libwebkit2gtk and ensures they are not marked local.

My preference is (b), since it allows us to keep everything except separate JSC, and separate JSC is the cause of all these problems. But I presume that&apos;s not likely to be accepted.

So I&apos;ll probably try to implement (a). With this approach, we&apos;ll need to export all the same internal symbols from bmalloc, WTF, and JSC that are exported on other ports. That is, we&apos;ll need to make BEXPORT, WTF_EXPORT, and JS_EXPORT actually export. (BEXPORT is special -- it already does! -- but the others currently do nothing for GTK and WPE.) This is not great, because we don&apos;t want to expose any of those symbols, but it&apos;ll still be better than what we had before, because before we exported everything in libjavascriptcoregtk, including all the symbols that were not marked for export. I suppose exporting internal symbols is not the end of the world, and of course it will only be those symbols that are actually needed in libwebkit2gtk, jsc shell, or WebDriver. There&apos;s also one advantage for WebKit developers: it means we&apos;ll notice build failures on Linux when we forget to mark something with e.g. WEBCORE_EXPORT, instead of having to wait for the Windows EWS to fail.

(c) would be useful an optimization to reduce as greatly as possible the set of symbols that get exported from libjavascriptcoregtk, though it&apos;s also overly-complex. If we take this approach, we have to decide how to keep the jsc shell working. I think it could be done by static linking JSC to the jsc shell (as we do WTF to the WebDriver), but *not* to libwebkit2gtk (since that is causing this very bug). This is starting to seem very complex, but it might be worthwhile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389063</commentid>
    <comment_count>41</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-12 19:59:32 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #40)
&gt; (c) adopt Carlos&apos;s suggestion in
&gt; https://bugs.webkit.org/show_bug.cgi?id=179914#c56 to programatically
&gt; generate a linker version script that dynamically searches for unique global
&gt; symbols that are present in the bss of both libjavascriptcoregtk and
&gt; libwebkit2gtk and ensures they are not marked local.

Or the script could fail the build if this situation is ever detected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389069</commentid>
    <comment_count>42</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-12 20:28:30 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #40)
&gt; The jsc shell totally prevents building JSC only as a shared library and
&gt; also not export internal symbols. I think we have to (a) give up on
&gt; exporting only public API symbols from libjsc (something we had not
&gt; previously been doing), or (b) give up on having separate
&gt; libjavascriptcoregtk, or (c) adopt Carlos&apos;s suggestion in
&gt; https://bugs.webkit.org/show_bug.cgi?id=179914#c56 to programatically
&gt; generate a linker version script that dynamically searches for unique global
&gt; symbols that are present in the bss of both libjavascriptcoregtk and
&gt; libwebkit2gtk and ensures they are not marked local.
&gt; 

Seriously you shouldn&apos;t include the jsc binary in distribution (it&apos;s only in macOS by accident leading to people using it and causing it to be needed to avoid breaking people).

The jsc binary is a testing tool so isn&apos;t remotely hardened against arbitrary JS execution, and some of the test functions trust input to be valid in ways that aren&apos;t secure.

That said, I believe that you will need at least some of the non-api symbols to be publicly exported, although I have no idea how that works now that the exports files are gone :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389070</commentid>
    <comment_count>43</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-12 20:29:26 -0800</bug_when>
    <thetext>I like (a). Aligning our ports to the other ones makes less problematic. And noticing missing EXPORT in Linux build is very nice for Linux WebKit devs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389071</commentid>
    <comment_count>44</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-12 20:30:29 -0800</bug_when>
    <thetext>I like (a). Aligning our ports to the other ones makes less problematic. And noticing missing EXPORT in Linux build is very nice for Linux WebKit devs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389114</commentid>
    <comment_count>45</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-13 08:40:01 -0800</bug_when>
    <thetext>(In reply to Oliver Hunt from comment #42)
&gt; Seriously you shouldn&apos;t include the jsc binary in distribution (it&apos;s only in
&gt; macOS by accident leading to people using it and causing it to be needed to
&gt; avoid breaking people).

I think it should be safe to remove, because I think nobody should be using it.

(In reply to Michael Catanzaro from comment #40)
&gt; There&apos;s also one advantage for
&gt; WebKit developers: it means we&apos;ll notice build failures on Linux when we
&gt; forget to mark something with e.g. WEBCORE_EXPORT, instead of having to wait
&gt; for the Windows EWS to fail.

Sorry, it was late and I wasn&apos;t thinking properly. What I said was right, until I provided a bogus example. You&apos;ll only notice missing JS_EXPORT[_PRIVATE] or WTF_EXPORT. WEBCORE_EXPORT will still be a no-op because WebCore is only in libwebkit2gtk, so the exports aren&apos;t needed. The only way those could possibly do anything is if we build WebCore as a shared library, which would just reduce performance for no benefit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389116</commentid>
    <comment_count>46</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-13 09:15:15 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #40)
&gt; The jsc shell totally prevents building JSC only as a shared library and
&gt; also not export internal symbols.

That&apos;s not really true either. What I was trying to do yesterday was build JSC as two shared libraries: one an internal library with all the internal symbols exported, and one with them stripped out. The entire approach was silly because that&apos;s not how visibility works: one shared lib cannot hide the symbols of another lib. So jsc shell isn&apos;t actually causing any problems here. The root of all the problems is the separate libjavascriptcoregtk, which IMO is serving no good purpose.

Anyway, I&apos;ll try to implement (a) today. Remains to be seen how -fvisibility=hidden affects unique global symbols, but in the worst case, if we get crashes in the future because something that ought to be unique global is instead local, it should be solvable by exporting the affected symbol.

(b) is still my preference. We should at least drop the separate libjavascriptcoregtk from future API versions, if not from libwebkit2gtk-4.0, because it has proved to have been quite a mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389155</commentid>
    <comment_count>47</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-13 15:50:53 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #46)
&gt; Anyway, I&apos;ll try to implement (a) today.

The problem I didn&apos;t anticipate is Source/ThirdParty. It&apos;s easy enough to control our own export macros in the WebKit projects, but many subprojects in Source/ThirdParty use these too. It&apos;s going to be a real pain to stay on top of these: we will no doubt start exporting new symbols by accident after random ANGLE and libwebrtc updates, each of which pull in a bunch of other bundled libraries that will change or get added....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389156</commentid>
    <comment_count>48</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2018-01-13 16:09:37 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #47)
&gt; (In reply to Michael Catanzaro from comment #46)
&gt; &gt; Anyway, I&apos;ll try to implement (a) today.
&gt; 
&gt; The problem I didn&apos;t anticipate is Source/ThirdParty. It&apos;s easy enough to
&gt; control our own export macros in the WebKit projects, but many subprojects
&gt; in Source/ThirdParty use these too. It&apos;s going to be a real pain to stay on
&gt; top of these: we will no doubt start exporting new symbols by accident after
&gt; random ANGLE and libwebrtc updates, each of which pull in a bunch of other
&gt; bundled libraries that will change or get added....

angle, etc are above jsc so their changes shouldn&apos;t impact libjsc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389167</commentid>
    <comment_count>49</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-13 19:16:49 -0800</bug_when>
    <thetext>Right, but it matters because it makes it very difficult to drop the libwebkit2gtk version script, which was the cause of bug #179914.

I&apos;m attaching a patch that fixes the immediate issue, but without removing the version script. This patch reintroduces the underlying problem in bug #179914, but that&apos;s OK because it does not currently blow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389173</commentid>
    <comment_count>50</comment_count>
      <attachid>331301</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-13 19:41:24 -0800</bug_when>
    <thetext>Created attachment 331301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389198</commentid>
    <comment_count>51</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-14 01:25:05 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #40)
&gt; The jsc shell totally prevents building JSC only as a shared library and
&gt; also not export internal symbols. I think we have to (a) give up on
&gt; exporting only public API symbols from libjsc (something we had not
&gt; previously been doing), or (b) give up on having separate
&gt; libjavascriptcoregtk, or (c) adopt Carlos&apos;s suggestion in
&gt; https://bugs.webkit.org/show_bug.cgi?id=179914#c56 to programatically
&gt; generate a linker version script that dynamically searches for unique global
&gt; symbols that are present in the bss of both libjavascriptcoregtk and
&gt; libwebkit2gtk and ensures they are not marked local.

I don&apos;t think a) and b) are mutually exclusive. Actually, only doing a) is like what we had before, but exporting fewer symbols, the PerProcess&lt;&gt; problem would not be fixed I think.

&gt; My preference is (b), since it allows us to keep everything except separate
&gt; JSC, and separate JSC is the cause of all these problems. But I presume
&gt; that&apos;s not likely to be accepted.

No, it&apos;s not. Seed still exists in debian and probably in other distros. It&apos;s true that currently nobody uses it, but we plan to add a glib wrapper to JSC, similar to the Objc bindings, that will allow to do seed the right way. At least in debian also libproxy1-plugin-webkit depends only on libjsc, so it&apos;s not acceptable to remove libjsc right now.

&gt; So I&apos;ll probably try to implement (a). With this approach, we&apos;ll need to
&gt; export all the same internal symbols from bmalloc, WTF, and JSC that are
&gt; exported on other ports. That is, we&apos;ll need to make BEXPORT, WTF_EXPORT,
&gt; and JS_EXPORT actually export. (BEXPORT is special -- it already does! --
&gt; but the others currently do nothing for GTK and WPE.) This is not great,
&gt; because we don&apos;t want to expose any of those symbols, but it&apos;ll still be
&gt; better than what we had before, because before we exported everything in
&gt; libjavascriptcoregtk, including all the symbols that were not marked for
&gt; export. I suppose exporting internal symbols is not the end of the world,
&gt; and of course it will only be those symbols that are actually needed in
&gt; libwebkit2gtk, jsc shell, or WebDriver. There&apos;s also one advantage for
&gt; WebKit developers: it means we&apos;ll notice build failures on Linux when we
&gt; forget to mark something with e.g. WEBCORE_EXPORT, instead of having to wait
&gt; for the Windows EWS to fail.
&gt; 
&gt; (c) would be useful an optimization to reduce as greatly as possible the set
&gt; of symbols that get exported from libjavascriptcoregtk, though it&apos;s also
&gt; overly-complex. If we take this approach, we have to decide how to keep the
&gt; jsc shell working. I think it could be done by static linking JSC to the jsc
&gt; shell (as we do WTF to the WebDriver), but *not* to libwebkit2gtk (since
&gt; that is causing this very bug). This is starting to seem very complex, but
&gt; it might be worthwhile.

No, that was not the idea of c). This idea was based on the fact the we exported all symbols in libjsc, so in case of having the same symbol in libwk (and in bss), we also exported it in libwk to ensure it&apos;s not local. This way the symbols become unique global and only one is used. I don&apos;t know what happens if the symbol is local in both...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389199</commentid>
    <comment_count>52</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-14 01:26:52 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #46)
&gt; (In reply to Michael Catanzaro from comment #40)
&gt; &gt; The jsc shell totally prevents building JSC only as a shared library and
&gt; &gt; also not export internal symbols.
&gt; 
&gt; That&apos;s not really true either. What I was trying to do yesterday was build
&gt; JSC as two shared libraries: one an internal library with all the internal
&gt; symbols exported, and one with them stripped out. The entire approach was
&gt; silly because that&apos;s not how visibility works: one shared lib cannot hide
&gt; the symbols of another lib. So jsc shell isn&apos;t actually causing any problems
&gt; here. The root of all the problems is the separate libjavascriptcoregtk,
&gt; which IMO is serving no good purpose.
&gt; 
&gt; Anyway, I&apos;ll try to implement (a) today. Remains to be seen how
&gt; -fvisibility=hidden affects unique global symbols, but in the worst case, if
&gt; we get crashes in the future because something that ought to be unique
&gt; global is instead local, it should be solvable by exporting the affected
&gt; symbol.
&gt; 
&gt; (b) is still my preference. We should at least drop the separate
&gt; libjavascriptcoregtk from future API versions, if not from
&gt; libwebkit2gtk-4.0, because it has proved to have been quite a mistake.

That&apos;s your opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389200</commentid>
    <comment_count>53</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-14 01:27:40 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #51)
&gt; (In reply to Michael Catanzaro from comment #40)
&gt; &gt; The jsc shell totally prevents building JSC only as a shared library and
&gt; &gt; also not export internal symbols. I think we have to (a) give up on
&gt; &gt; exporting only public API symbols from libjsc (something we had not
&gt; &gt; previously been doing), or (b) give up on having separate
&gt; &gt; libjavascriptcoregtk, or (c) adopt Carlos&apos;s suggestion in
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=179914#c56 to programatically
&gt; &gt; generate a linker version script that dynamically searches for unique global
&gt; &gt; symbols that are present in the bss of both libjavascriptcoregtk and
&gt; &gt; libwebkit2gtk and ensures they are not marked local.
&gt; 
&gt; I don&apos;t think a) and b) are mutually exclusive. Actually, only doing a) is
&gt; like what we had before, but exporting fewer symbols, the PerProcess&lt;&gt;
&gt; problem would not be fixed I think.

I meant a) and c), sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389201</commentid>
    <comment_count>54</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-14 01:30:02 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #49)
&gt; Right, but it matters because it makes it very difficult to drop the
&gt; libwebkit2gtk version script, which was the cause of bug #179914.

I don&apos;t think the libwk version script caused the bug, and I don&apos;t think we should drop it either.

&gt; I&apos;m attaching a patch that fixes the immediate issue, but without removing
&gt; the version script. This patch reintroduces the underlying problem in bug
&gt; #179914, but that&apos;s OK because it does not currently blow up.

So, we still need c)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389209</commentid>
    <comment_count>55</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-14 10:16:15 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #51)
&gt; &gt; My preference is (b), since it allows us to keep everything except separate
&gt; &gt; JSC, and separate JSC is the cause of all these problems. But I presume
&gt; &gt; that&apos;s not likely to be accepted.
&gt; 
&gt; No, it&apos;s not. Seed still exists in debian and probably in other distros.
&gt; It&apos;s true that currently nobody uses it, but we plan to add a glib wrapper
&gt; to JSC, similar to the Objc bindings, that will allow to do seed the right
&gt; way. At least in debian also libproxy1-plugin-webkit depends only on libjsc,
&gt; so it&apos;s not acceptable to remove libjsc right now.

I think this is not a very good example, for several reasons:

 * seed does not use libjavascriptcoregtk-4.0. The current release is over five years old and uses libjavascriptcoregtk-3.0. Only git master can use libjavascriptcoregtk-4.0, and there&apos;s no indication that a release is coming anytime soon.
 * seed has actually been removed from Fedora for the above reason. It&apos;s unlikely that it will ever return, even if so, because nothing depends on seed. gjs has thoroughly won. I&apos;m surprised that seed has not been removed from Debian as well. Does Debian build a git snapshot?
 * Independently of all that, seed and any other application linking to libjavascriptcoregtk would continue to work just fine if we symlink libjavascriptcoregtk to libwebkit2gtk. The only problem is that it would be &quot;unnecessarily&quot; linked to libwebkit2gtk, for some value of unnecessarily. ;)

But anyway, it&apos;s fair that you don&apos;t want to do that, so let&apos;s move on to the other options....
 
&gt; No, that was not the idea of c). This idea was based on the fact the we
&gt; exported all symbols in libjsc, so in case of having the same symbol in
&gt; libwk (and in bss), we also exported it in libwk to ensure it&apos;s not local.
&gt; This way the symbols become unique global and only one is used. I don&apos;t know
&gt; what happens if the symbol is local in both...

Yes, I understand. If the symbol is local in both, it would probably blow up. That&apos;s not the goal.

(In reply to Carlos Garcia Campos from comment #54)
&gt; I don&apos;t think the libwk version script caused the bug, and I don&apos;t think we
&gt; should drop it either.

It definitely caused the bug, by changing the unique global symbols to local symbols.

Anyway, my patch here retains that version script, it only removes the javascriptcoregtk version script.

&gt; &gt; I&apos;m attaching a patch that fixes the immediate issue, but without removing
&gt; &gt; the version script. This patch reintroduces the underlying problem in bug
&gt; &gt; #179914, but that&apos;s OK because it does not currently blow up.
&gt; 
&gt; So, we still need c)

Yes, these solutions are not mutually-exclusive. My patch implements (a), which is sufficient to solve this bug and leaves us in a mildly-better position than we were originally. I&apos;ve already committed this patch to the GNOME SDK builder to un-break WebKit there. If you want to implement (c), I&apos;ll review it in bug #179914, which I have reopened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389210</commentid>
    <comment_count>56</comment_count>
      <attachid>331301</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-14 10:24:18 -0800</bug_when>
    <thetext>Comment on attachment 331301
Patch

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

&gt; Source/WTF/wtf/Platform.h:1073
&gt; +#if !defined(USE_EXPORT_MACROS) &amp;&amp; !PLATFORM(WPE)

A better condition to use here would be:

#if !defined(USE_EXPORT_MACROS) &amp;&amp; (!OS(UNIX) || PLATFORM(GTK))

To clarify that GTK is the odd one out, and that there is nothing odd about WPE not using these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389222</commentid>
    <comment_count>57</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-14 15:39:08 -0800</bug_when>
    <thetext>I&apos;ve unset r? because the patch is broken. I guess I did not test it properly yesterday; maybe I only tried running Epiphany in developer mode, and just checked that it built with developer mode off. I&apos;m starting to feel rather unreliable. Anyway, it crashes immediately. Problem is that s_mainRunLoop is unset. I think it&apos;s caused because GTK port static links WebCore to WTF, causing us to have two copies of all the WTF stuff in both the shared libjavascriptcoregtk and libwebkit2gtk. That&apos;s not a new problem; I guess it&apos;s just luck that it ever worked before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389230</commentid>
    <comment_count>58</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-14 16:52:04 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #57)
&gt; I think it&apos;s caused because GTK port static links
&gt; WebCore to WTF, causing us to have two copies of all the WTF stuff in both
&gt; the shared libjavascriptcoregtk and libwebkit2gtk.

I&apos;ve failed to fix it. My only suggestion now is to undo all of my functional changes in bug #179914 (including use of -fvisibility=hidden, which is a shame).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389233</commentid>
    <comment_count>59</comment_count>
      <attachid>331317</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-14 17:32:19 -0800</bug_when>
    <thetext>Created attachment 331317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389244</commentid>
    <comment_count>60</comment_count>
      <attachid>331317</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-15 00:20:43 -0800</bug_when>
    <thetext>Comment on attachment 331317
Patch

Yes, better let&apos;s go back to what we had and then let&apos;s try to find a way to improve it. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389247</commentid>
    <comment_count>61</comment_count>
      <attachid>331317</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-15 00:45:18 -0800</bug_when>
    <thetext>Comment on attachment 331317
Patch

Clearing flags on attachment: 331317

Committed r226945: &lt;https://trac.webkit.org/changeset/226945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389248</commentid>
    <comment_count>62</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-15 00:45:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389998</commentid>
    <comment_count>63</comment_count>
    <who name="Guilaume Ayoub">guillaume.webkit</who>
    <bug_when>2018-01-17 07:28:31 -0800</bug_when>
    <thetext>The bug is gone in 2.19.6, thank you very much for your help and your hard work on WebKit-GTK &lt;3 &lt;3 &lt;3.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>330972</attachid>
            <date>2018-01-10 15:18:39 -0800</date>
            <delta_ts>2018-01-10 15:18:39 -0800</delta_ts>
            <desc>Backtrace</desc>
            <filename>trace</filename>
            <type>text/plain</type>
            <size>12446</size>
            <attacher name="Guilaume Ayoub">guillaume.webkit</attacher>
            
              <data encoding="base64">IzAgIDB4MDAwMDdmZmZmMGRlZjUyYyBpbiBXVEZDcmFzaCAoKSBhdCAvdmFyL3RtcC9wb3J0YWdl
L25ldC1saWJzL3dlYmtpdC1ndGstMi4xOS40L3dvcmsvd2Via2l0Z3RrLTIuMTkuNC9Tb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmNwcDoyNzIKTm8gbG9jYWxzLgojMSAgMHgwMDAwN2ZmZmYwY2U3
NjY1IGluIEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzICh0aGlzPTB4N2ZmZjYwOTAwMDAwKSBh
dCAvdmFyL3RtcC9wb3J0YWdlL25ldC1saWJzL3dlYmtpdC1ndGstMi4xOS40L3dvcmsvd2Via2l0
Z3RrLTIuMTkuNC9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHA6ODE0CiAgICAg
ICAgcmVzZXJ2ZWRab25lU2l6ZSA9IDxvcHRpbWl6ZWQgb3V0PgojMiAgMHgwMDAwN2ZmZmYwY2Rj
ZTljIGluIEpTQzo6Vk06OnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSAodGhpcz08b3B0aW1pemVk
IG91dD4sIHNwPXNwQGVudHJ5PTB4N2ZmZmZmZmZkYzcwKSBhdCAvdmFyL3RtcC9wb3J0YWdlL25l
dC1saWJzL3dlYmtpdC1ndGstMi4xOS40L3dvcmsvd2Via2l0Z3RrLTIuMTkuNC9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHA6NzYxCk5vIGxvY2Fscy4KIzMgIDB4MDAwMDdmZmZm
MGJjOTA2OCBpbiBKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2sgKHRoaXM9MHg3ZmZmZGQ3ZDEz
ZjApIGF0IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxpYnMvd2Via2l0LWd0ay0yLjE5LjQvd29yay93
ZWJraXRndGstMi4xOS40L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHA6
MTQ0CiAgICAgICAgcCA9IDB4N2ZmZmZmZmZkYzcwCiM0ICAweDAwMDA3ZmZmZjAzYTlmNjAgaW4g
SlNWYWx1ZUlzTnVtYmVyIChjdHg9Y3R4QGVudHJ5PTB4N2ZmZjYxYmQ4MGY4LCB2YWx1ZT12YWx1
ZUBlbnRyeT0weGZmZmYwMDAwMDAwMDAwZDYpIGF0IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxpYnMv
d2Via2l0LWd0ay0yLjE5LjQvd29yay93ZWJraXRndGstMi4xOS40L1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHA6MTM2CiAgICAgICAgbG9ja2VyID0ge21fdm0gPSB7c3Rh
dGljIGlzUmVmUHRyID0gPG9wdGltaXplZCBvdXQ+LCBtX3B0ciA9IDB4N2ZmZjYwOTAwMDAwfX0K
IzUgIDB4MDAwMDU1NTU1NTdlZjBjZSBpbiBnZWFyeV9qc190b19udW1iZXIgKGNvbnRleHQ9Y29u
dGV4dEBlbnRyeT0weDdmZmY2MWJkODBmOCwgdmFsdWU9MHhmZmZmMDAwMDAwMDAwMGQ2LCBlcnJv
cj1lcnJvckBlbnRyeT0weDdmZmZmZmZmZGQ2MCkKICAgIGF0IC92YXIvdG1wL3BvcnRhZ2UvbWFp
bC1jbGllbnQvZ2VhcnktMC4xMi4wL3dvcmsvZ2VhcnktMC4xMi4wL3NyYy9lbmdpbmUvdXRpbC91
dGlsLWpzLnZhbGE6NDgKICAgICAgICByZXN1bHQgPSAwCiAgICAgICAgX3RtcDBfID0gMHg3ZmZm
NjFiZDgwZjgKICAgICAgICBfdG1wMV8gPSA8b3B0aW1pemVkIG91dD4KICAgICAgICBlcnIgPSAw
eDAKICAgICAgICBudW1iZXIgPSAwCiAgICAgICAgX3RtcDVfID0gPG9wdGltaXplZCBvdXQ+CiAg
ICAgICAgX3RtcDZfID0gMHgwCiAgICAgICAgX3RtcDdfID0gPG9wdGltaXplZCBvdXQ+CiAgICAg
ICAgX3RtcDhfID0gMHg3ZmZmNjFiZTJmMjAKICAgICAgICBfdG1wMTBfID0gPG9wdGltaXplZCBv
dXQ+CiAgICAgICAgX3RtcDExXyA9IDxvcHRpbWl6ZWQgb3V0PgogICAgICAgIF9pbm5lcl9lcnJv
cl8gPSAweDAKIzYgIDB4MDAwMDU1NTU1NTY3YTdhMCBpbiB3ZWJfa2l0X3V0aWxfdG9fbnVtYmVy
IChfcmVzdWx0Xz1fcmVzdWx0X0BlbnRyeT0weDdmZmZkZDdiNzQ5OCwgZXJyb3I9ZXJyb3JAZW50
cnk9MHg3ZmZmZmZmZmRkOTApIGF0IC92YXIvdG1wL3BvcnRhZ2UvbWFpbC1jbGllbnQvZ2Vhcnkt
MC4xMi4wL3dvcmsvZ2VhcnktMC4xMi4wL3NyYy9jbGllbnQvdXRpbC91dGlsLXdlYmtpdC52YWxh
OjM3CiAgICAgICAgX3RtcDBfID0gMAogICAgICAgIF90bXAxXyA9IDB4N2ZmZmRkN2I3NDk4CiAg
ICAgICAgX3RtcDJfID0gMHg3ZmZmNjFiZDgwZjgKICAgICAgICBfdG1wNF8gPSA8b3B0aW1pemVk
IG91dD4KICAgICAgICBfdG1wNV8gPSA8b3B0aW1pemVkIG91dD4KICAgICAgICBfaW5uZXJfZXJy
b3JfID0gMHgwCiAgICAgICAgX19mdW5jX18gPSAid2ViX2tpdF91dGlsX3RvX251bWJlciIKIzcg
IDB4MDAwMDU1NTU1NTYwOGZlNyBpbiBjbGllbnRfd2ViX3ZpZXdfb25fcHJlZmVycmVkX2hlaWdo
dF9jaGFuZ2VkIChfcmVzdWx0Xz0weDdmZmZkZDdiNzQ5OCwgc2VsZj0weDU1NTU1N2Q2MTNlMCkg
YXQgL3Zhci90bXAvcG9ydGFnZS9tYWlsLWNsaWVudC9nZWFyeS0wLjEyLjAvd29yay9nZWFyeS0w
LjEyLjAvc3JjL2NsaWVudC9jb21wb25lbnRzL2NsaWVudC13ZWItdmlldy52YWxhOjQ4MAogICAg
ICAgIF90bXAxXyA9IDB4N2ZmZmRkN2I3NDk4CiAgICAgICAgX3RtcDNfID0gPG9wdGltaXplZCBv
dXQ+CiAgICAgICAgX3RtcDBfID0gMAogICAgICAgIF90bXAyXyA9IDxvcHRpbWl6ZWQgb3V0Pgog
ICAgICAgIGhlaWdodCA9IDAKICAgICAgICBfdG1wNF8gPSA8b3B0aW1pemVkIG91dD4KICAgICAg
ICBfaW5uZXJfZXJyb3JfID0gMHgwCiM4ICBfY2xpZW50X3dlYl92aWV3X29uX3ByZWZlcnJlZF9o
ZWlnaHRfY2hhbmdlZF9jbGllbnRfd2ViX3ZpZXdfamF2YV9zY3JpcHRfbWVzc2FnZV9oYW5kbGVy
IChqc19yZXN1bHQ9MHg3ZmZmZGQ3Yjc0OTgsIHNlbGY9MHg1NTU1NTdkNjEzZTApCiAgICBhdCAv
dmFyL3RtcC9wb3J0YWdlL21haWwtY2xpZW50L2dlYXJ5LTAuMTIuMC93b3JrL2dlYXJ5LTAuMTIu
MC9zcmMvY2xpZW50L2NvbXBvbmVudHMvY2xpZW50LXdlYi12aWV3LnZhbGE6MjY4Ck5vIGxvY2Fs
cy4KIzkgIDB4MDAwMDdmZmZmNzdlYmViZCBpbiBnX2Nsb3N1cmVfaW52b2tlICgpIGZyb20gL3Vz
ci9saWI2NC9saWJnb2JqZWN0LTIuMC5zby4wCk5vIHN5bWJvbCB0YWJsZSBpbmZvIGF2YWlsYWJs
ZS4KIzEwIDB4MDAwMDdmZmZmNzdmZWVlMyBpbiA/PyAoKSBmcm9tIC91c3IvbGliNjQvbGliZ29i
amVjdC0yLjAuc28uMApObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFpbGFibGUuCiMxMSAweDAwMDA3
ZmZmZjc4MDc5MDUgaW4gZ19zaWduYWxfZW1pdF92YWxpc3QgKCkgZnJvbSAvdXNyL2xpYjY0L2xp
YmdvYmplY3QtMi4wLnNvLjAKTm8gc3ltYm9sIHRhYmxlIGluZm8gYXZhaWxhYmxlLgojMTIgMHgw
MDAwN2ZmZmY3ODA4MmNhIGluIGdfc2lnbmFsX2VtaXQgKCkgZnJvbSAvdXNyL2xpYjY0L2xpYmdv
YmplY3QtMi4wLnNvLjAKTm8gc3ltYm9sIHRhYmxlIGluZm8gYXZhaWxhYmxlLgojMTMgMHgwMDAw
N2ZmZmYzMjM1OGI5IGluIFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs6OmRpZFBvc3RNZXNzYWdlICh0
aGlzPXRoaXNAZW50cnk9MHg1NTU1NTdkNjU2ZTAsIHBhZ2U9Li4uLCBzZXJpYWxpemVkU2NyaXB0
VmFsdWU9Li4uKQogICAgYXQgL3Zhci90bXAvcG9ydGFnZS9uZXQtbGlicy93ZWJraXQtZ3RrLTIu
MTkuNC93b3JrL3dlYmtpdGd0ay0yLjE5LjQvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcDoxOTQKICAgICAgICBqc1Jlc3VsdCA9IDB4
N2ZmZmRkN2I3NDk4CiMxNCAweDAwMDA3ZmZmZjMwZDIyNWIgaW4gV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UgKHRoaXM9PG9wdGltaXplZCBvdXQ+
LCBjb25uZWN0aW9uPS4uLiwgcGFnZUlEPTxvcHRpbWl6ZWQgb3V0PiwgZnJhbWVJbmZvRGF0YT0u
Li4sIG1lc3NhZ2VIYW5kbGVySUQ9PG9wdGltaXplZCBvdXQ+LCBkYXRhUmVmZXJlbmNlPS4uLikK
ICAgIGF0IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxpYnMvd2Via2l0LWd0ay0yLjE5LjQvd29yay93
ZWJraXRndGstMi4xOS40L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDozMjMKICAgICAgICBwYWdlID0gMHg3ZmZmZGQz
ZjM5MDAKICAgICAgICBoYW5kbGVyID0ge3N0YXRpYyBpc1JlZlB0ciA9IDxvcHRpbWl6ZWQgb3V0
PiwgbV9wdHIgPSAweDdmZmZkZDdkMTBjMH0KIzE1IDB4MDAwMDdmZmZmMzNiMjkwNiBpbiBJUEM6
OmNhbGxNZW1iZXJGdW5jdGlvbkltcGw8V2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eSwgdm9pZCAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6KikoSVBD
OjpDb25uZWN0aW9uJiwgdW5zaWduZWQgbG9uZywgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGNvbnN0
JiwgdW5zaWduZWQgbG9uZywgSVBDOjpEYXRhUmVmZXJlbmNlIAogICAgYXQgL3Zhci90bXAvcG9y
dGFnZS9uZXQtbGlicy93ZWJraXQtZ3RrLTIuMTkuNC93b3JrL3dlYmtpdGd0ay0yLjE5LjQvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOjgyCk5vIGxvY2Fscy4KIzE2
IElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uPFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHksIHZvaWQgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OiopKElQ
Qzo6Q29ubmVjdGlvbiYsIHVuc2lnbmVkIGxvbmcsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBjb25z
dCYsIHVuc2lnbmVkIGxvbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBjb25zdCYpLCBzdGQ6OnR1cGxl
PHVuc2lnbmVkIGxvbmcsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSwgdW5zaWduZWQgbG9uZywgSVBD
OjpEYXRhUmVmZXJlbmNlPiwgc3RkOjppbnRlZ2VyX3NlcXVlbmNlPHVuc2lnbmVkIGxvbmcsIDB1
bCwgMXVsLCAydWwsIDN1bD4gPiAoZnVuY3Rpb249PG9wdGltaXplZCBvdXQ+LCBvYmplY3Q9MHg3
ZmZmZGQ3ZjEyZDAsIGFyZ3M9Li4uLCBjb25uZWN0aW9uPS4uLikKICAgIGF0IC92YXIvdG1wL3Bv
cnRhZ2UvbmV0LWxpYnMvd2Via2l0LWd0ay0yLjE5LjQvd29yay93ZWJraXRndGstMi4xOS40L1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDo4OApObyBsb2NhbHMuCiMx
NyBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpEaWRQb3N0TWVzc2FnZSwgV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSwgdm9pZCAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6KikoSVBDOjpD
b25uZWN0aW9uJiwgdW5zaWduZWQgbG9uZywgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGNvbnN0Jiwg
dW5zaWduZWQgbG9uZywgSVBDOjpEYXRhUmVmZXJlbmNlIGNvbnN0Jik+IChjb25uZWN0aW9uPS4u
LiwgZGVjb2Rlcj0uLi4sIG9iamVjdD0weDdmZmZkZDdmMTJkMCwgZnVuY3Rpb249CiAgICAodm9p
ZCAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6KikoV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSAqIGNvbnN0LCBJUEM6OkNvbm5lY3Rpb24gJiwgdW5z
aWduZWQgbG9uZywgY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhICYsIHVuc2lnbmVkIGxvbmcs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSAmKSkgMHg3ZmZmZjMwZDIwODAgPFdlYktpdDo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIHVuc2lnbmVkIGxvbmcsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBjb25zdCYsIHVuc2lnbmVk
IGxvbmcsIElQQzo6RGF0YVJlZmVyZW5jZSBjb25zdCYpPikKICAgIGF0IC92YXIvdG1wL3BvcnRh
Z2UvbmV0LWxpYnMvd2Via2l0LWd0ay0yLjE5LjQvd29yay93ZWJraXRndGstMi4xOS40L1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoxNjUKICAgICAgICBhcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlIGNvbnRhaW5pbmcgPSB7WzFdID0gMiwgWzJdID0ge2lzTWFpbkZyYW1l
ID0gdHJ1ZSwgcmVxdWVzdCA9IHs8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZT4gPSB7bV91
cmwgPSB7bV9zdHJpbmcgPSB7bV9pbXBsID0ge3N0YXRpYyBpc1JlZlB0ciA9IDxvcHRpbWl6ZWQg
b3V0PiwgbV9wdHIgPSAweDdmZTAwMDBlNDVjOH19LCBtX2lzVmFsaWQgPSB0cnVlLCAKICAgICAg
ICAgICAgICAgICAgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gZmFsc2UsIG1fY2Fubm90QmVB
QmFzZVVSTCA9IGZhbHNlLCBtX3NjaGVtZUVuZCA9IDUsIG1fdXNlclN0YXJ0ID0gNiwgbV91c2Vy
RW5kID0gNiwgbV9wYXNzd29yZEVuZCA9IDYsIG1faG9zdEVuZCA9IDYsIG1fcG9ydEVuZCA9IDYs
IG1fcGF0aEFmdGVyTGFzdFNsYXNoID0gNiwgbV9wYXRoRW5kID0gMTAsIAogICAgICAgICAgICAg
ICAgICBtX3F1ZXJ5RW5kID0gMTB9LCBtX3RpbWVvdXRJbnRlcnZhbCA9IDAsIG1fZmlyc3RQYXJ0
eUZvckNvb2tpZXMgPSB7bV9zdHJpbmcgPSB7bV9pbXBsID0ge3N0YXRpYyBpc1JlZlB0ciA9IDxv
cHRpbWl6ZWQgb3V0PiwgbV9wdHIgPSAweDB9fSwgbV9pc1ZhbGlkID0gZmFsc2UsIG1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSA9IGZhbHNlLCAKICAgICAgICAgICAgICAgICAgbV9jYW5ub3RCZUFC
YXNlVVJMID0gZmFsc2UsIG1fc2NoZW1lRW5kID0gMCwgbV91c2VyU3RhcnQgPSAwLCBtX3VzZXJF
bmQgPSAwLCBtX3Bhc3N3b3JkRW5kID0gMCwgbV9ob3N0RW5kID0gMCwgbV9wb3J0RW5kID0gMCwg
bV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSAwLCBtX3BhdGhFbmQgPSAwLCBtX3F1ZXJ5RW5kID0gMH0s
IG1faHR0cE1ldGhvZCA9IHttX2ltcGwgPSB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGljIGlz
UmVmUHRyID0gPG9wdGltaXplZCBvdXQ+LCBtX3B0ciA9IDB4N2ZlMDAwMGU1ZWUwfX0sIG1faHR0
cEhlYWRlckZpZWxkcyA9IHttX2NvbW1vbkhlYWRlcnMgPSB7bV9pbXBsID0ge3N0YXRpYyBtX21h
eExvYWQgPSAyLCBzdGF0aWMgbV9taW5Mb2FkID0gNiwgbV90YWJsZSA9IDB4MCwgbV90YWJsZVNp
emUgPSAwLCBtX3RhYmxlU2l6ZU1hc2sgPSAwLCAKICAgICAgICAgICAgICAgICAgICAgIG1fa2V5
Q291bnQgPSAwLCBtX2RlbGV0ZWRDb3VudCA9IDB9fSwgbV91bmNvbW1vbkhlYWRlcnMgPSB7bV9p
bXBsID0ge3N0YXRpYyBtX21heExvYWQgPSAyLCBzdGF0aWMgbV9taW5Mb2FkID0gNiwgbV90YWJs
ZSA9IDB4MCwgbV90YWJsZVNpemUgPSAwLCBtX3RhYmxlU2l6ZU1hc2sgPSAwLCBtX2tleUNvdW50
ID0gMCwgbV9kZWxldGVkQ291bnQgPSAwfX19LCAKICAgICAgICAgICAgICAgIG1fcmVzcG9uc2VD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkgPSB7PFdURjo6VmVjdG9yQnVm
ZmVyPFdURjo6U3RyaW5nLCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZm
ZXJCYXNlPFdURjo6U3RyaW5nLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4MCwg
bV9jYXBhY2l0eSA9IDAsIG1fc2l6ZSA9IDAsIAogICAgICAgICAgICAgICAgICAgICAgbV9tYXNr
ID0gMH0sIDxObyBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fSwgbV9odHRwQm9keSA9
IHtzdGF0aWMgaXNSZWZQdHIgPSA8b3B0aW1pemVkIG91dD4sIG1fcHRyID0gMHgwfSwgbV9jYWNo
ZVBvbGljeSA9IFdlYkNvcmU6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3ksIG1fYWxsb3dDb29raWVz
ID0gdHJ1ZSwgCiAgICAgICAgICAgICAgICBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQgPSB0cnVl
LCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZSwgbV9yZXNvdXJjZVJlcXVlc3RCb2R5
VXBkYXRlZCA9IHRydWUsIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgPSBmYWxzZSwgbV9o
aWRkZW5Gcm9tSW5zcGVjdG9yID0gZmFsc2UsIAogICAgICAgICAgICAgICAgbV9wcmlvcml0eSA9
IFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5OjpMb3csIG1fcmVxdWVzdGVyID0gV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6UmVxdWVzdGVyOjpVbnNwZWNpZmllZCwgbV9pbml0aWF0
b3JJZGVudGlmaWVyID0ge21faW1wbCA9IHtzdGF0aWMgaXNSZWZQdHIgPSA8b3B0aW1pemVkIG91
dD4sIG1fcHRyID0gMHgwfX0sIAogICAgICAgICAgICAgICAgbV9jYWNoZVBhcnRpdGlvbiA9IHtt
X2ltcGwgPSB7c3RhdGljIGlzUmVmUHRyID0gPG9wdGltaXplZCBvdXQ+LCBtX3B0ciA9IDB4N2Zm
ZmY1ZmFiMzEwIDxXVEY6OlN0cmluZ0ltcGw6OnNfYXRvbWljRW1wdHlTdHJpbmc+fX0sIHN0YXRp
YyBzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSAwfSwgbV9hY2NlcHRFbmNvZGluZyA9IHRydWUs
IG1fc291cEZsYWdzID0gKHVua25vd246IDApLCAKICAgICAgICAgICAgICBtX2luaXRpYXRpbmdQ
YWdlSUQgPSAwfSwgc2VjdXJpdHlPcmlnaW4gPSB7cHJvdG9jb2wgPSB7bV9pbXBsID0ge3N0YXRp
YyBpc1JlZlB0ciA9IDxvcHRpbWl6ZWQgb3V0PiwgbV9wdHIgPSAweDdmZTAwMDBlNWYwMH19LCBo
b3N0ID0ge21faW1wbCA9IHtzdGF0aWMgaXNSZWZQdHIgPSA8b3B0aW1pemVkIG91dD4sIAogICAg
ICAgICAgICAgICAgICBtX3B0ciA9IDB4N2ZmZmY1ZmFiMzEwIDxXVEY6OlN0cmluZ0ltcGw6OnNf
YXRvbWljRW1wdHlTdHJpbmc+fX0sIFB5dGhvbiBFeGNlcHRpb24gPGNsYXNzICdnZGIuZXJyb3In
PiBUaGVyZSBpcyBubyBtZW1iZXIgb3IgbWV0aG9kIG5hbWVkIF9NX3BheWxvYWQuOiAKcG9ydCA9
IHs8c3RkOjpjb25zdGV4cHJfb3B0aW9uYWxfYmFzZTx1bnNpZ25lZCBzaG9ydD4+ID0ge2luaXRf
ID0gZmFsc2UsIHN0b3JhZ2VfID0ge2R1bW15XyA9IDAgJ1wwMDAnLCB2YWx1ZV8gPSAwfX0sIDxO
byBkYXRhIGZpZWxkcz59fSwgZnJhbWVJRCA9IDJ9LCAKICAgICAgICAgIFszXSA9IDUsIFs0XSA9
IHtfdnB0ci5EYXRhUmVmZXJlbmNlID0gMHg3ZmZmZjVkNzMxMDggPHZ0YWJsZSBmb3IgSVBDOjpE
YXRhUmVmZXJlbmNlKzE2PiwgbV9kYXRhID0gMHg3ZmZmZGQ3YzgxMzAgIlwwMDYiLCBtX3NpemUg
PSA5fX0KIzE4IDB4MDAwMDdmZmZmMmY4MDVkZSBpbiBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcDo6
ZGlzcGF0Y2hNZXNzYWdlICh0aGlzPXRoaXNAZW50cnk9MHg3ZmZmZGQ1ZmMwNDAsIGNvbm5lY3Rp
b249Li4uLCBkZWNvZGVyPS4uLikKICAgIGF0IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxpYnMvd2Vi
a2l0LWd0ay0yLjE5LjQvd29yay93ZWJraXRndGstMi4xOS40L1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHA6MTIzCk5vIGxvY2Fscy4KIzE5IDB4MDAwMDdm
ZmZmMzAwODE0OSBpbiBXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpkaXNwYXRjaE1lc3NhZ2Ug
KHRoaXM9dGhpc0BlbnRyeT0weDdmZmZkZDVmYzAwMCwgY29ubmVjdGlvbj0uLi4sIGRlY29kZXI9
Li4uKQogICAgYXQgL3Zhci90bXAvcG9ydGFnZS9uZXQtbGlicy93ZWJraXQtZ3RrLTIuMTkuNC93
b3JrL3dlYmtpdGd0ay0yLjE5LjQvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNz
UHJveHkuY3BwOjE1NgpObyBsb2NhbHMuCiMyMCAweDAwMDA3ZmZmZjMwNjZhNTIgaW4gV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlICh0aGlzPTB4N2ZmZmRkNWZjMDAw
LCBjb25uZWN0aW9uPS4uLiwgZGVjb2Rlcj0uLi4pIGF0IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxp
YnMvd2Via2l0LWd0ay0yLjE5LjQvd29yay93ZWJraXRndGstMi4xOS40L1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6NTkzCk5vIGxvY2Fscy4KIzIxIDB4MDAwMDdm
ZmZmMmY3YmQyMCBpbiBJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZSAoZGVjb2Rlcj0u
Li4sIHRoaXM9MHg3ZmZmZGQ3YTIwMDApIGF0IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxpYnMvd2Vi
a2l0LWd0ay0yLjE5LjQvd29yay93ZWJraXRndGstMi4xOS40L1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwOjkwMQpObyBsb2NhbHMuCiMyMiBJUEM6OkNvbm5lY3Rpb246
OmRpc3BhdGNoTWVzc2FnZSAodGhpcz0weDdmZmZkZDdhMjAwMCwgbWVzc2FnZT1zdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpEZWNvZGVyPiBjb250YWluaW5nIDB4N2ZmZmRkN2MyNmU4KQogICAgYXQgL3Zh
ci90bXAvcG9ydGFnZS9uZXQtbGlicy93ZWJraXQtZ3RrLTIuMTkuNC93b3JrL3dlYmtpdGd0ay0y
LjE5LjQvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6OTI4CiAgICAg
ICAgb2xkRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0gZmFsc2UKIzIzIDB4MDAwMDdmZmZmMmY3
YzYyNSBpbiBJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoT25lTWVzc2FnZSAodGhpcz0weDdmZmZk
ZDdhMjAwMCkgYXQgL3Zhci90bXAvcG9ydGFnZS9uZXQtbGlicy93ZWJraXQtZ3RrLTIuMTkuNC93
b3JrL3dlYmtpdGd0ay0yLjE5LjQvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHA6OTU5CiAgICAgICAgbWVzc2FnZSA9IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkRlY29kZXI+
IGNvbnRhaW5pbmcgMHgwCiMyNCAweDAwMDA3ZmZmZjUyOWMwZDMgaW4gV1RGOjpGdW5jdGlvbjx2
b2lkICgpPjo6b3BlcmF0b3IoKSgpIGNvbnN0ICh0aGlzPTxzeW50aGV0aWMgcG9pbnRlcj4pIGF0
IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxpYnMvd2Via2l0LWd0ay0yLjE5LjQvd29yay93ZWJraXRn
dGstMi4xOS40L1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmg6NTYKTm8gbG9jYWxzLgojMjUgV1RG
OjpSdW5Mb29wOjpwZXJmb3JtV29yayAodGhpcz0weDdmZmZkZDdmOTAwMCkgYXQgL3Zhci90bXAv
cG9ydGFnZS9uZXQtbGlicy93ZWJraXQtZ3RrLTIuMTkuNC93b3JrL3dlYmtpdGd0ay0yLjE5LjQv
U291cmNlL1dURi93dGYvUnVuTG9vcC5jcHA6MTIzCiAgICAgICAgZnVuY3Rpb24gPSB7bV9jYWxs
YWJsZVdyYXBwZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpGdW5jdGlvbjx2b2lkKCk+OjpDYWxs
YWJsZVdyYXBwZXJCYXNlPiBjb250YWluaW5nIDB4N2ZmZmRkN2EwZDEwfQogICAgICAgIGZ1bmN0
aW9uc0hhbmRsZWQgPSAzNgogICAgICAgIGZ1bmN0aW9uc1RvSGFuZGxlID0gPG9wdGltaXplZCBv
dXQ+CiMyNiAweDAwMDA3ZmZmZjUyY2M0NjkgaW4gV1RGOjpSdW5Mb29wOjo8bGFtYmRhKGdwb2lu
dGVyKT46Om9wZXJhdG9yKCkgKF9fY2xvc3VyZT0weDAsIHVzZXJEYXRhPTxvcHRpbWl6ZWQgb3V0
PikgYXQgL3Zhci90bXAvcG9ydGFnZS9uZXQtbGlicy93ZWJraXQtZ3RrLTIuMTkuNC93b3JrL3dl
YmtpdGd0ay0yLjE5LjQvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6NjgKTm8g
bG9jYWxzLgojMjcgV1RGOjpSdW5Mb29wOjo8bGFtYmRhKGdwb2ludGVyKT46Ol9GVU4oZ3BvaW50
ZXIpICgpIGF0IC92YXIvdG1wL3BvcnRhZ2UvbmV0LWxpYnMvd2Via2l0LWd0ay0yLjE5LjQvd29y
ay93ZWJraXRndGstMi4xOS40L1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwOjcw
Ck5vIGxvY2Fscy4KIzI4IDB4MDAwMDdmZmZmNzUxMjU4NSBpbiBnX21haW5fY29udGV4dF9kaXNw
YXRjaCAoKSBmcm9tIC91c3IvbGliNjQvbGliZ2xpYi0yLjAuc28uMApObyBzeW1ib2wgdGFibGUg
aW5mbyBhdmFpbGFibGUuCiMyOSAweDAwMDA3ZmZmZjc1MTI5MjggaW4gPz8gKCkgZnJvbSAvdXNy
L2xpYjY0L2xpYmdsaWItMi4wLnNvLjAKTm8gc3ltYm9sIHRhYmxlIGluZm8gYXZhaWxhYmxlLgoj
MzAgMHgwMDAwN2ZmZmY3NTEyOWFjIGluIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbiAoKSBmcm9t
IC91c3IvbGliNjQvbGliZ2xpYi0yLjAuc28uMApObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFpbGFi
bGUuCiMzMSAweDAwMDA3ZmZmZjdhZDZlMWQgaW4gZ19hcHBsaWNhdGlvbl9ydW4gKCkgZnJvbSAv
dXNyL2xpYjY0L2xpYmdpby0yLjAuc28uMApObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFpbGFibGUu
CiMzMiAweDAwMDA1NTU1NTU1ZDY0YmYgaW4gX3ZhbGFfbWFpbiAoYXJncz0weDdmZmZmZmZmZTg1
OCwgYXJnc19sZW5ndGgxPTEpIGF0IC92YXIvdG1wL3BvcnRhZ2UvbWFpbC1jbGllbnQvZ2Vhcnkt
MC4xMi4wL3dvcmsvZ2VhcnktMC4xMi4wL3NyYy9jbGllbnQvYXBwbGljYXRpb24vbWFpbi52YWxh
OjMzCiAgICAgICAgcmVzdWx0ID0gMAogICAgICAgIGFwcCA9IDB4NTU1NTU1YmNmMWQwCiAgICAg
ICAgX3RtcDBfID0gMHg1NTU1NTViY2YxZDAKICAgICAgICBlYyA9IDAKICAgICAgICBfdG1wMV8g
PSAweDdmZmZmZmZmZTg1OAogICAgICAgIF90bXAxX19sZW5ndGgxID0gMQogICAgICAgIF90bXAy
XyA9IDxvcHRpbWl6ZWQgb3V0PgojMzMgMHgwMDAwN2ZmZmVmYTMzZjNhIGluIF9fbGliY19zdGFy
dF9tYWluICgpIGZyb20gL2xpYjY0L2xpYmMuc28uNgpObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFp
bGFibGUuCiMzNCAweDAwMDA1NTU1NTU1ZDYzN2EgaW4gX3N0YXJ0ICgpCk5vIHN5bWJvbCB0YWJs
ZSBpbmZvIGF2YWlsYWJsZS4KKAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331155</attachid>
            <date>2018-01-11 19:01:05 -0800</date>
            <delta_ts>2018-01-11 19:43:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181438-20180111210104.patch</filename>
            <type>text/plain</type>
            <size>3469</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OGNhYTE1NDVjOGFiZjU1ZmM2MDk1MDc5YzU0YzlhMTkxMjNhMzIwLi5mMWUzNDk4ZTllNGI1YWM2
NWQ5OGZhZDdiYzQ5ZjZhOTAyM2QwYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0wMS0xMSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gUkVMRUFTRV9BU1NFUlQocmVzZXJ2ZWRab25lU2l6
ZSA+PSBtaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZSkgaW4gSlNDOjpWTTo6dXBkYXRlU3RhY2tMaW1p
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTQz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxh
dGZvcm1HVEsuY21ha2U6CisgICAgICAgICogZ3RrL0luaXRpYWxpemVKYXZhU2NyaXB0Q29yZUdU
Sy5jcHA6IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZUphdmFTY3JpcHRDb3JlR1RLKToKKwog
MjAxOC0wMS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNjY2NyBhbmQgcjIyNjY3My4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyZWMxNzdmYTc0MTUyZGZiMjJl
YmRmYTJmZDhlMjk4NDc4YmY0M2VmLi5iNTg4MzE2NDlmNDE1NDk5N2IwNDQ3NWI0ZjU1YmYxZjM4
MjA2M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC01OCw4
ICs1OCwxNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVHVEtfTElCUkFSSUVTCiApCiBBRERfV0hPTEVf
QVJDSElWRV9UT19MSUJSQVJJRVMoSmF2YVNjcmlwdENvcmVHVEtfTElCUkFSSUVTKQogCitzZXQo
SmF2YVNjcmlwdENvcmVHVEtfU09VUkNFUworICAgIGd0ay9Jbml0aWFsaXplSmF2YVNjcmlwdENv
cmVHVEsuY3BwCispCisKK3NldChKYXZhU2NyaXB0Q29yZUdUS19QUklWQVRFX0lOQ0xVREVfRElS
RUNUT1JJRVMKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUiCispCisKIGFkZF9saWJyYXJ5KEphdmFTY3JpcHRDb3JlR1RLIFNIQVJFRCAiJHtDTUFLRV9C
SU5BUllfRElSfS9jbWFrZWNvbmZpZy5oIikKLXRhcmdldF9saW5rX2xpYnJhcmllcyhKYXZhU2Ny
aXB0Q29yZUdUSyAke0phdmFTY3JpcHRDb3JlR1RLX0xJQlJBUklFU30pCitXRUJLSVRfRlJBTUVX
T1JLKEphdmFTY3JpcHRDb3JlR1RLKQogc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEphdmFTY3JpcHRD
b3JlR1RLIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgamF2YXNjcmlwdGNvcmVndGstJHtXRUJLSVRH
VEtfQVBJX1ZFUlNJT059KQogCiBXRUJLSVRfUE9QVUxBVEVfTElCUkFSWV9WRVJTSU9OKEpBVkFT
Q1JJUFRDT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2d0ay9Jbml0aWFs
aXplSmF2YVNjcmlwdENvcmVHVEsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2d0ay9Jbml0
aWFsaXplSmF2YVNjcmlwdENvcmVHVEsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4ZDM3NmQwYWM4ZTM2ODY4
YzE3ZDdmN2JhMjQwYjIzZWEyN2I0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ3RrL0luaXRpYWxpemVKYXZhU2NyaXB0Q29yZUdUSy5jcHAKQEAgLTAsMCArMSwz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCisKKy8vIFRoaXMgaXMg
dXNlZCBieSB0aGUgc2VwYXJhdGUgbGliamF2YXNjcmlwdGNvcmVndGsgbGlicmFyeS4gVGhlIEpT
QworLy8gcHVibGljIEFQSSBpcyBjYXJlZnVsIHRvIGNhbGwgSlNDOjppbml0aWFsaXplVGhyZWFk
aW5nIHdoZW5ldmVyIGEKKy8vIHB1YmxpYyBKUyBBUEkgb2JqZWN0IGlzIGNvbnN0cnVjdGVkOyBo
b3dldmVyLCB0aGF0J3Mgbm90IGdvb2QgZW5vdWdoCisvLyBmb3IgV2ViS2l0R1RLKywgYmVjYXVz
ZSB0aGUgb2JqZWN0cyBhcmUgb2Z0ZW4gb25seSBjb25zdHJ1Y3RlZCBpbgorLy8gbGlid2Via2l0
Mmd0ayBidXQgdXNlZCBpbiBsaWJqYXZhc2NyaXB0Y29yZWd0ay4gV2UgbmVlZCB0byBlbnN1cmUK
Ky8vIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZyBpcyBjYWxsZWQgaW4gYm90aCBsaWJyYXJpZXMu
CitfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpCit2b2lkIGluaXRpYWxpemVKYXZhU2NyaXB0
Q29yZUdUSygpCit7CisgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331301</attachid>
            <date>2018-01-13 19:41:24 -0800</date>
            <delta_ts>2018-01-14 17:32:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181438-20180113214123.patch</filename>
            <type>text/plain</type>
            <size>11730</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OGNhYTE1NDVjOGFiZjU1ZmM2MDk1MDc5YzU0YzlhMTkxMjNhMzIwLi5jNDc0NDAxYjYzNzdmZWY5
OWM3NGViNjBlYjliZTdhYjM0MDBmN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOC0wMS0xMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjI2MjY2KTogW0dUS10gUkVMRUFTRV9B
U1NFUlQocmVzZXJ2ZWRab25lU2l6ZSA+PSBtaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZSkgaW4gSlND
OjpWTTo6dXBkYXRlU3RhY2tMaW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTQzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzNzY3MjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2ZXJ0
IHRoZSBjaGFuZ2UgaW4gcjIyNjI2NiB0byBidWlsZCBKU0MgYXMgYSBzdGF0aWMgbGlicmFyeSBs
aW5rZWQgaW50byB0d28gc2hhcmVkIGxpYnMuCisgICAgICAgIFRoYXQgd2FzIGZvb2xpc2guIEl0
IHNlZW1lZCB0byB3b3JrIG9ubHkgYmVjYXVzZSBJIGRpZG4ndCB0ZXN0IGl0IG9uIGFueSB3ZWJw
YWdlcyB0aGF0CisgICAgICAgIHRyaWdnZXJlZCBjb2RlcGF0aHMgaW4gRXBpcGhhbnkgdGhhdCB1
c2UgdGhlIEpTQyBBUEkuIFRoZW4gd2Ugd2luZCB1cCBydW5uaW5nIHR3byBKUyBWTXMgaW4KKyAg
ICAgICAgdGhlIHNhbWUgcHJvY2VzcywgdHJ5aW5nIHRvIHNoYXJlIEpTVmFsdWVzIGJldHdlZW4g
dGhlIFZNcywgYW5kIHRoYXQgcmVhbGx5IGRvZXNuJ3Qgd29yay4KKworICAgICAgICBXZSBoYXZl
IHRvIGdpdmUgdXAgb24gdHJ5aW5nIHRvIGhpZGUgaW50ZXJuYWwgc3ltYm9scyBvZiBsaWJqYXZh
c2NyaXB0Y29yZWd0ay4gVGhlcmUncyBubworICAgICAgICB3YXkgd2UgY2FuIHBvc3NpYmx5IG1h
a2UgdGhpcyB3b3JrLiBUaGF0J3MgYSBzaGFtZS4KKworICAgICAgICBTaW5jZSB3ZSBub3cgYnVp
bGQgd2l0aCAtZnZpc2liaWxpdHk9aGlkZGVuLCB0aGlzIG1lYW5zIHdlIG5vdyBoYXZlIHRvIGV4
cGxpY2l0bHkgZXhwb3J0IGEKKyAgICAgICAgY291cGxlIFJlbW90ZUluc3BlY3RvciBzeW1ib2xz
IHRoYXQgYXJlIG5lZWRlZCBvdXRzaWRlIGxpYmphdmFzY3JpcHRjb3JlZ3RrLgorCisgICAgICAg
ICogQVBJL0pTQmFzZS5oOiBVcGRhdGUgYSBjb21tZW50LgorICAgICAgICAqIFBsYXRmb3JtR1RL
LmNtYWtlOiBSZXZlcnQgZm9vbGlzaG5lc3MuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oOiBFeHBvcnQgbmVjZXNzYXJ5IHN5bWJvbHMuCisg
ICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclV0aWxzLmg6IEV4
cG9ydCBuZWNlc3Nhcnkgc3ltYm9scy4KKyAgICAgICAgKiBqYXZhc2NyaXB0Y29yZWd0ay1zeW1i
b2xzLm1hcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg6IENs
ZWFuIHVwIGJ5IHJlbW92aW5nIHVudXNlZCBkZWZpbmVzLgorCiAyMDE4LTAxLTEwICBDb21taXQg
UXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMjI2NjY3IGFuZCByMjI2NjczLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAzMWExODBkOGFkMTE1NjE2Yjhk
ZmQ2OTI0OWNlMGVjNjM4NmIzMTQwLi43NDgxN2IxNmE3ZmU0OWZlYWMxMzAxMGQwNzcwMDIxNjgw
MTBhOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTAxLTEzICBNaWNoYWVsIENhdGFuemFy
byAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMjYyNjYp
OiBbR1RLXSBSRUxFQVNFX0FTU0VSVChyZXNlcnZlZFpvbmVTaXplID49IG1pbmltdW1SZXNlcnZl
ZFpvbmVTaXplKSBpbiBKU0M6OlZNOjp1cGRhdGVTdGFja0xpbWl0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNDM4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zNjM3NjcyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDbGVhbiB1bnVzZWQgZGVmaW5lcyBmcm9tIEV4cG9ydE1hY3Jvcy5oLCBhbmQg
YSByZWxhdGVkIGRlZmluZSBpbiBQbGF0Zm9ybS5oLiBUdXJuIG9uCisgICAgICAgIFVTRShFWFBP
UlRfTUFDUk9TKSBmb3IgR1RLLiBOb3cgV1BFIGlzIHRoZSBvbmx5IHBvcnQgdGhhdCBkb2Vzbid0
IHVzZSBpdC4gQWxzbyBkcm9wIHRoZQorICAgICAgICBhbmNpZW50IGNvbW1lbnQgdGhhdCBleHBl
Y3RzIGFsbCBwb3J0cyB0byBldmVudHVhbGx5IHVzZSB0aGUgZXhwb3J0IG1hY3JvcywgYmVjYXVz
ZSB0aGV5CisgICAgICAgIGFyZSBvbmx5IHVzZWQgZm9yIGludGVybmFsIHN5bWJvbHMgdGhhdCBM
aW51eCBwb3J0cyBkb24ndCBhY3R1YWxseSB3YW50IHRvIGV4cG9ydC4gSWYgd2UKKyAgICAgICAg
ZGVjaWRlIHRvIGRyb3AgdGhlIHNoYXJlZCBsaWJqYXZhc2NyaXB0Y29yZWd0ayBpbiB0aGUgZnV0
dXJlLCB0aGVuIEdUSyB3b3VsZCBub3QgbmVlZCB0aGVzZQorICAgICAgICBhbnltb3JlLgorCisg
ICAgICAgICogd3RmL0V4cG9ydE1hY3Jvcy5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgor
CiAyMDE4LTAxLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI2NjY3IGFuZCByMjI2NjczLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmgKaW5kZXggZmUwMGE4ZDM1NzcwYzczYWI1MmQ1MDk4Zjhi
NzhiNWNhZGUxNDVjYS4uNjFiNWU4ZGRkZGVjZTNiNTNkNWIxOTRhZWRiMmIwYThkMGEyMjNhZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5oCkBAIC03Niw3ICs3Niw3IEBAIHR5cGVkZWYg
c3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOwogI2VuZGlmCiAKIC8qIEphdmFTY3Jp
cHQgc3ltYm9sIGV4cG9ydHMgKi8KLS8qIFRoZXNlIHJ1bGVzIHNob3VsZCBzdGF5IHRoZSBzYW1l
IGFzIGluIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oICovCisvKiBUaGVzZSBydWxlcyBz
aG91bGQgc3RheSB0aGUgc2FtZSBhcyBpbiBXZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGVjbGFyYXRp
b25TcGVjaWZpZXJzLmggKi8KIAogI3VuZGVmIEpTX0VYUE9SVAogI2lmIGRlZmluZWQoSlNfTk9f
RVhQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDJlYzE3
N2ZhNzQxNTJkZmIyMmViZGZhMmZkOGUyOTg0NzhiZjQzZWYuLjM1YjhhN2M0OTY5NzdkNGUyZmE4
NWVkNDM0Zjc0NDEwNDUxNTcxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1HVEsu
Y21ha2UKQEAgLTEsMyArMSw1IEBACitzZXQoSmF2YVNjcmlwdENvcmVfT1VUUFVUX05BTUUgamF2
YXNjcmlwdGNvcmVndGstJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059KQorCiBsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9VTklGSUVEX1NPVVJDRV9MSVNUX0ZJTEVTCiAgICAgIlNvdXJjZXNHVEsu
dHh0IgogKQpAQCAtNTAsMjMgKzUyLDMgQEAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfTElC
UkFSSUVTCiBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CiApCi0KLSMgTGlua2luZyBXZWJLaXQgcHJv
cGVybHkgaXMgZXh0cmVtZWx5IHRyaWNreS4gV2UgbmVlZCB0byBidWlsZCBib3RoIGEgc3RhdGlj
IGxpYnJhcnkKLSMgYW5kIGEgc2hhcmVkIGxpYnJhcnkgZm9yIEpTQy4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5MTQuCi1zZXQoSmF2YVNjcmlwdENvcmVH
VEtfTElCUkFSSUVTCi0gICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KLSkKLUFERF9X
SE9MRV9BUkNISVZFX1RPX0xJQlJBUklFUyhKYXZhU2NyaXB0Q29yZUdUS19MSUJSQVJJRVMpCi0K
LWFkZF9saWJyYXJ5KEphdmFTY3JpcHRDb3JlR1RLIFNIQVJFRCAiJHtDTUFLRV9CSU5BUllfRElS
fS9jbWFrZWNvbmZpZy5oIikKLXRhcmdldF9saW5rX2xpYnJhcmllcyhKYXZhU2NyaXB0Q29yZUdU
SyAke0phdmFTY3JpcHRDb3JlR1RLX0xJQlJBUklFU30pCi1zZXRfdGFyZ2V0X3Byb3BlcnRpZXMo
SmF2YVNjcmlwdENvcmVHVEsgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSBqYXZhc2NyaXB0Y29yZWd0
ay0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0pCi0KLVdFQktJVF9QT1BVTEFURV9MSUJSQVJZX1ZF
UlNJT04oSkFWQVNDUklQVENPUkUpCi1zZXRfdGFyZ2V0X3Byb3BlcnRpZXMoSmF2YVNjcmlwdENv
cmVHVEsgUFJPUEVSVElFUyBWRVJTSU9OICR7SkFWQVNDUklQVENPUkVfVkVSU0lPTn0gU09WRVJT
SU9OICR7SkFWQVNDUklQVENPUkVfVkVSU0lPTl9NQUpPUn0pCi0KLWlmIChOT1QgREVWRUxPUEVS
X01PREUgQU5EIE5PVCBDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJEYXJ3aW4iKQotICAgIFdF
QktJVF9BRERfVEFSR0VUX1BST1BFUlRJRVMoSmF2YVNjcmlwdENvcmVHVEsgTElOS19GTEFHUyAi
LVdsLC0tdmVyc2lvbi1zY3JpcHQsJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2phdmFzY3Jp
cHRjb3JlZ3RrLXN5bWJvbHMubWFwIikKLWVuZGlmICgpCi0KLWluc3RhbGwoVEFSR0VUUyBKYXZh
U2NyaXB0Q29yZUdUSyBERVNUSU5BVElPTiAiJHtMSUJfSU5TVEFMTF9ESVJ9IikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5z
cGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCmluZGV4IDZkODg0ODI3OWZmZmU5MGUxYWFhMWNl
N2FiZTJjOGNlM2ZmYjRkMmIuLjAwOTdkNWM3OWRmMjI3NTU3MGZlMGNhOWYwNDg2YmFiMTVhMDc4
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2ds
aWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtNDMsMTAgKzQz
LDEwIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBSZW1vdGVJbnNwZWN0b3JTZXJ2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXImIHNpbmdsZXRv
bigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIm
IHNpbmdsZXRvbigpOwogICAgIH5SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoKTsKIAotICAgIGJvb2wg
c3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBzdGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1bnNpZ25lZCBwb3J0KTsK
ICAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9kYnVzU2VydmVyOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclV0aWxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclV0aWxzLmgKaW5kZXggNmY5NWFi
NWM1MmE1ODEwZWZmMzIwMTNiYTFmNGVhMjNlYmQ1MWVjNy4uZWE0MzMwN2FiZGQ5MzAwNmJiODc0
ZjIzZDJhOTI0ZmRkZDhkMTJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JVdGlscy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yVXRpbHMu
aApAQCAtMzUsNyArMzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR0J5dGVzIEdCeXRlczsKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiBHUmVmUHRyPEdCeXRlcz4gYmFja2VuZENvbW1hbmRzKCk7Ci1j
b25zdCBDU3RyaW5nJiBiYWNrZW5kQ29tbWFuZHNIYXNoKCk7CitKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBDU3RyaW5nJiBiYWNrZW5kQ29tbWFuZHNIYXNoKCk7CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvamF2YXNjcmlwdGNv
cmVndGstc3ltYm9scy5tYXAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvamF2YXNjcmlwdGNvcmVn
dGstc3ltYm9scy5tYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliODU2ZmYwMWYx
ZGRhNmQ4NzFhMDk4MzZkNTI3NzRhNWQxOWM0NDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2phdmFzY3JpcHRjb3Jl
Z3RrLXN5bWJvbHMubWFwCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi17Ci1nbG9iYWw6
Ci0gIEpTKjsKLWxvY2FsOgotICAqOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRXhwb3J0TWFjcm9zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0V4cG9ydE1hY3Jvcy5oCmluZGV4IGNhMzEzODkzZWQ0NmNjYTdiODNiOGQxNzI5Mzg0
M2RhZTI5NGZjODkuLjNkMTdmMzBmNmI4YTU5NWM0Y2Y0YzQ0N2FhMzVmOTRlNGY1NmU5MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRXhwb3J0TWFjcm9zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaApAQCAt
NDYsMjMgKzQ2LDggQEAKIAogI2Vsc2UgLy8gIVVTRShFWFBPUlRfTUFDUk9TKQogCi0jaWYgVVNF
KERFQ0xTUEVDX0FUVFJJQlVURSkKLQotI2lmIGRlZmluZWQoQlVJTERJTkdfSmF2YVNjcmlwdENv
cmUpIHx8IGRlZmluZWQoU1RBVElDQUxMWV9MSU5LRURfV0lUSF9KYXZhU2NyaXB0Q29yZSkKLSNk
ZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSNlbHNlCi0jZGVmaW5l
IEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKLQotI2RlZmluZSBK
U19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRBCi0KLSNlbHNlIC8vICFQTEFURk9STS4uLgotCiAj
ZGVmaW5lIEpTX0VYUE9SVERBVEEKICNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MKLQotI2VuZGlmIC8v
ICFQTEFURk9STS4uLgotCiAjZGVmaW5lIEpTX0VYUE9SVF9QUklWQVRFCiAjZGVmaW5lIEpTX0VY
UE9SVF9ISURERU4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaAppbmRleCA1MmZmMThmM2Q1NTFmOGJjYTAy
NTI4MzliNzQxNTQzMWQzNzhiYmYxLi42YzkzNzQ1YTUzNTg1OWE1YjhiMjkxMWM0MjgxYWRjNGQ0
ZTkyMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaApAQCAtNzgsOCArNzgsNyBAQAogI2RlZmluZSBX
VEZfSU1QT1JUIFdURl9JTVBPUlRfREVDTEFSQVRJT04KICNkZWZpbmUgV1RGX0hJRERFTiBXVEZf
SU1QT1JUX0RFQ0xBUkFUSU9OCiAKLS8vIEZJWE1FOiBXaGVuIGFsbCBwb3J0cyBhcmUgdXNpbmcg
dGhlIGV4cG9ydCBtYWNyb3MsIHdlIHNob3VsZCByZXBsYWNlCi0vLyBXVEZfRVhQT1JUREFUQSB3
aXRoIFdURl9FWFBPUlRfUFJJVkFURSBtYWNyb3MuCisvLyBGSVhNRTogV2Ugc2hvdWxkIHJlcGxh
Y2UgV1RGX0VYUE9SVERBVEEgd2l0aCBXVEZfRVhQT1JUX1BSSVZBVEUgbWFjcm9zLgogI2lmIGRl
ZmluZWQoV1RGX0lTX0xJTktFRF9JTl9TQU1FX0JJTkFSWSkKICNkZWZpbmUgV1RGX0VYUE9SVERB
VEEgV1RGX0VYUE9SVAogI2Vsc2UKQEAgLTg4LDE4ICs4Nyw4IEBACiAKICNlbHNlIC8vICFVU0Uo
RVhQT1JUX01BQ1JPUykKIAotI2lmIFVTRShERUNMU1BFQ19BVFRSSUJVVEUpCi0jaWYgZGVmaW5l
ZChCVUlMRElOR19XVEYpIHx8IGRlZmluZWQoU1RBVElDQUxMWV9MSU5LRURfV0lUSF9XVEYpCi0j
ZGVmaW5lIFdURl9FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotI2Vsc2UKLSNkZWZp
bmUgV1RGX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKLSNlbHNlIC8v
ICFPUyhXSU5ET1dTKSB8fCBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCiAjZGVmaW5lIFdURl9FWFBP
UlREQVRBCi0jZW5kaWYKLQotI2RlZmluZSBXVEZfRVhQT1JUQ0xBU1MgV1RGX0VYUE9SVERBVEEK
LQorI2RlZmluZSBXVEZfRVhQT1JUQ0xBU1MKICNkZWZpbmUgV1RGX0VYUE9SVAogI2RlZmluZSBX
VEZfSU1QT1JUCiAjZGVmaW5lIFdURl9ISURERU4KQEAgLTExMyw3ICsxMDIsMyBAQAogI2VuZGlm
CiAKICNkZWZpbmUgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFdURl9FWFBPUlRfUFJJVkFURQotCi0j
ZGVmaW5lIFdURl9FWFBPUlRfSElEREVOIFdURl9ISURERU4KLQotI2RlZmluZSBISURERU5fSU5M
SU5FIFdURl9FWFBPUlRfSElEREVOIGlubGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYzMxNWVlMjVmYzBl
NzY0ODc3YjNlZmQ2NDg5Y2E2MmFhZTYwODhhNC4uNDc1ZmFkNTM1ZWY3OGYxYWYxOTYzMWQyN2Q5
ZjlhNWExZDAyOTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMDY3LDE4ICsxMDY3LDEzIEBACiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1R5cGVkZWZzLmg+CiAjZW5kaWYKIAotLyogRklYTUU6IFRoaXMgZGVm
aW5lIHdvbid0IGJlIG5lZWRlZCBvbmNlICMyNzU1MSBpcyBmdWxseSBsYW5kZWQuIEhvd2V2ZXIs
Ci0gICBzaW5jZSBtb3N0IHBvcnRzIHRyeSB0byBzdXBwb3J0IHN1Yi1wcm9qZWN0IGluZGVwZW5k
ZW5jZSwgYWRkaW5nIG5ldyBoZWFkZXJzCi0gICB0byBXVEYgY2F1c2VzIG1hbnkgcG9ydHMgdG8g
YnJlYWssIGFuZCBzbyB0aGlzIHdheSB3ZSBjYW4gYWRkcmVzcyB0aGUgYnVpbGQKLSAgIGJyZWFr
YWdlcyBvbmUgcG9ydCBhdCBhIHRpbWUuICovCi0jaWYgIWRlZmluZWQoVVNFX0VYUE9SVF9NQUNS
T1MpICYmIChQTEFURk9STShDT0NPQSkgfHwgT1MoV0lORE9XUykpCisvKiBXaW5kb3dzIGFuZCBB
cHBsZSBwb3J0cyBhbHdheXMgbmVlZCBleHBvcnQgbWFjcm9zIGVuYWJsZWQuIExpbnV4IHBvcnRz
CisgKiB1c3VhbGx5IG5lZWQgdGhlbSB0dXJuZWQgb2ZmLCBidXQgR1RLIGlzIHdlaXJkIGR1ZSB0
byBpdHMgc2VwYXJhdGUKKyAqIGxpYmphdmFzY3JpcHRjb3JlZ3RrLiAqLworI2lmICFkZWZpbmVk
KFVTRV9FWFBPUlRfTUFDUk9TKSAmJiAhUExBVEZPUk0oV1BFKQogI2RlZmluZSBVU0VfRVhQT1JU
X01BQ1JPUyAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKFVTRV9FWFBPUlRfTUFDUk9TX0ZPUl9U
RVNUSU5HKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBPUyhXSU5ET1dTKSkKLSNkZWZpbmUgVVNFX0VY
UE9SVF9NQUNST1NfRk9SX1RFU1RJTkcgMQotI2VuZGlmCi0KICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKICNkZWZpbmUgVVNFX1VOSVhfRE9NQUlOX1NPQ0tFVFMgMQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGI0ZDRlNmJmZmEzNTYzYzM5MDQ4Y2VhZmY1ZTAwMDA5
OGIzYmIzMDYuLmRkNjJlMjJjMTYyM2Y5MjAwYTU4ZjQ4MGQ3ZTk2Nzk5ZDE3MTNlNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zR1RLLmNtYWtlCkBAIC0zNzYsNiArMzc2LDcgQEAgc2V0KFdlYktpdF9QS0dDT05GSUdf
RklMRSAke0NNQUtFX0JJTkFSWV9ESVJ9L1NvdXJjZS9XZWJLaXRMZWdhY3kvZ3RrL3dlYmtpdGd0
ay0KIHNldChXZWJLaXQyX1BLR0NPTkZJR19GSUxFICR7Q01BS0VfQklOQVJZX0RJUn0vU291cmNl
L1dlYktpdC93ZWJraXQyZ3RrLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5wYykKIHNldChXZWJL
aXQyV2ViRXh0ZW5zaW9uX1BLR0NPTkZJR19GSUxFICR7Q01BS0VfQklOQVJZX0RJUn0vU291cmNl
L1dlYktpdC93ZWJraXQyZ3RrLXdlYi1leHRlbnNpb24tJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059
LnBjKQogCitzZXQoSmF2YVNjcmlwdENvcmVfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChTSE9V
TERfSU5TVEFMTF9KU19TSEVMTCBPTikKIAogIyBBZGQgYSB0eXBlbGliIGZpbGUgdG8gdGhlIGxp
c3Qgb2YgYWxsIHR5cGVsaWIgZGVwZW5kZW5jaWVzLiBUaGlzIG1ha2VzIGl0IGVhc3kgdG8KZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmNjM4MmE0ZDQwODNlMjlmMmRh
MGNhMzRmNDRiNDQzMmUzYmViMmNlLi5kOGMyNTBhNDFjMzQ4Mjc3ZTBmMjNmYmRjODhmMzc5Njhh
ZWQwMWE4IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTgtMDEtMTMgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIyNjI2Nik6IFtHVEtdIFJFTEVBU0VfQVNTRVJU
KHJlc2VydmVkWm9uZVNpemUgPj0gbWluaW11bVJlc2VydmVkWm9uZVNpemUpIGluIEpTQzo6Vk06
OnVwZGF0ZVN0YWNrTGltaXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODE0MzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2Mzc2NzI0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuc3VyZSBKU0Mg
aXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeSBmb3IgR1RLLgorCisgICAgICAgICogU291cmNl
L2NtYWtlL09wdGlvbnNHVEsuY21ha2U6CisKIDIwMTgtMDEtMDkgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBP
cHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjE5LjUgcmVsZWFzZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331317</attachid>
            <date>2018-01-14 17:32:19 -0800</date>
            <delta_ts>2018-01-15 00:45:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181438-20180114193218.patch</filename>
            <type>text/plain</type>
            <size>5644</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NWQ0N2YxNmJkYmQyYzI0YzNmYjZkNGVmNDFlNWNmMjIzNTdkYmRiLi40NGVjOWE4NTZiZGI1MDIy
YTU3N2EwZDFhMjRiYTRhNGYwMGNkNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wMS0xNCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGln
YWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjI2MjY2KTogW0dUS10gUkVMRUFTRV9B
U1NFUlQocmVzZXJ2ZWRab25lU2l6ZSA+PSBtaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZSkgaW4gSlND
OjpWTTo6dXBkYXRlU3RhY2tMaW1pdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTQzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzNzY3MjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm9sbCBv
dXQgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBvZiByMjI2MjY2LiBXZSdsbCBrZWVwIHRoZSBtaW5v
ciBDTWFrZSBsaWJyYXJ5IHR5cGUgc2V0dGluZworICAgICAgICBjbGVhbnVwLCBidXQgd2UgaGF2
ZSB0byBzd2l0Y2ggYmFjayB0byBidWlsZGluZyBKU0Mgb25seSBhcyBhIHNoYXJlZCBsaWJyYXJ5
LCBhbmQgd2UgaGF2ZSB0bworICAgICAgICBnZXQgcmlkIG9mIHRoZSB2ZXJzaW9uIHNjcmlwdC4K
KworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIGphdmFzY3JpcHRjb3Jl
Z3RrLXN5bWJvbHMubWFwOiBSZW1vdmVkLgorCiAyMDE4LTAxLTE0ICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIHIyMjY5MjggYnJva2UgdGhl
IENMT09QIGJ1aWxkLiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBDTE9PUCBidWlsZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyZWMxNzdmYTc0MTUyZGZiMjJlYmRm
YTJmZDhlMjk4NDc4YmY0M2VmLi4zNWI4YTdjNDk2OTc3ZDRlMmZhODVlZDQzNGY3NDQxMDQ1MTU3
MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDMgKzEs
NSBAQAorc2V0KEphdmFTY3JpcHRDb3JlX09VVFBVVF9OQU1FIGphdmFzY3JpcHRjb3JlZ3RrLSR7
V0VCS0lUR1RLX0FQSV9WRVJTSU9OfSkKKwogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfVU5J
RklFRF9TT1VSQ0VfTElTVF9GSUxFUwogICAgICJTb3VyY2VzR1RLLnR4dCIKICkKQEAgLTUwLDIz
ICs1MiwzIEBAIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0xJQlJBUklFUwogbGlzdChBUFBF
TkQgSmF2YVNjcmlwdENvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0dMSUJf
SU5DTFVERV9ESVJTfQogKQotCi0jIExpbmtpbmcgV2ViS2l0IHByb3Blcmx5IGlzIGV4dHJlbWVs
eSB0cmlja3kuIFdlIG5lZWQgdG8gYnVpbGQgYm90aCBhIHN0YXRpYyBsaWJyYXJ5Ci0jIGFuZCBh
IHNoYXJlZCBsaWJyYXJ5IGZvciBKU0MuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc5OTE0Lgotc2V0KEphdmFTY3JpcHRDb3JlR1RLX0xJQlJBUklFUwotICAg
IEphdmFTY3JpcHRDb3JlJHtERUJVR19TVUZGSVh9Ci0pCi1BRERfV0hPTEVfQVJDSElWRV9UT19M
SUJSQVJJRVMoSmF2YVNjcmlwdENvcmVHVEtfTElCUkFSSUVTKQotCi1hZGRfbGlicmFyeShKYXZh
U2NyaXB0Q29yZUdUSyBTSEFSRUQgIiR7Q01BS0VfQklOQVJZX0RJUn0vY21ha2Vjb25maWcuaCIp
Ci10YXJnZXRfbGlua19saWJyYXJpZXMoSmF2YVNjcmlwdENvcmVHVEsgJHtKYXZhU2NyaXB0Q29y
ZUdUS19MSUJSQVJJRVN9KQotc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEphdmFTY3JpcHRDb3JlR1RL
IFBST1BFUlRJRVMgT1VUUFVUX05BTUUgamF2YXNjcmlwdGNvcmVndGstJHtXRUJLSVRHVEtfQVBJ
X1ZFUlNJT059KQotCi1XRUJLSVRfUE9QVUxBVEVfTElCUkFSWV9WRVJTSU9OKEpBVkFTQ1JJUFRD
T1JFKQotc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEphdmFTY3JpcHRDb3JlR1RLIFBST1BFUlRJRVMg
VkVSU0lPTiAke0pBVkFTQ1JJUFRDT1JFX1ZFUlNJT059IFNPVkVSU0lPTiAke0pBVkFTQ1JJUFRD
T1JFX1ZFUlNJT05fTUFKT1J9KQotCi1pZiAoTk9UIERFVkVMT1BFUl9NT0RFIEFORCBOT1QgQ01B
S0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiRGFyd2luIikKLSAgICBXRUJLSVRfQUREX1RBUkdFVF9Q
Uk9QRVJUSUVTKEphdmFTY3JpcHRDb3JlR1RLIExJTktfRkxBR1MgIi1XbCwtLXZlcnNpb24tc2Ny
aXB0LCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9qYXZhc2NyaXB0Y29yZWd0ay1zeW1ib2xz
Lm1hcCIpCi1lbmRpZiAoKQotCi1pbnN0YWxsKFRBUkdFVFMgSmF2YVNjcmlwdENvcmVHVEsgREVT
VElOQVRJT04gIiR7TElCX0lOU1RBTExfRElSfSIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvamF2YXNjcmlwdGNvcmVndGstc3ltYm9scy5tYXAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvamF2YXNjcmlwdGNvcmVndGstc3ltYm9scy5tYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDliODU2ZmYwMWYxZGRhNmQ4NzFhMDk4MzZkNTI3NzRhNWQxOWM0NDEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2phdmFzY3JpcHRjb3JlZ3RrLXN5bWJvbHMubWFwCisrKyAvZGV2L251bGwKQEAgLTEs
NiArMCwwIEBACi17Ci1nbG9iYWw6Ci0gIEpTKjsKLWxvY2FsOgotICAqOwotfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKaW5kZXggYjRkNGU2YmZmYTM1NjNjMzkwNDhjZWFmZjVlMDAwMDk4YjNiYjMwNi4u
ZGQ2MmUyMmMxNjIzZjkyMDBhNThmNDgwZDdlOTY3OTlkMTcxM2U1MiAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UKQEAgLTM3Niw2ICszNzYsNyBAQCBzZXQoV2ViS2l0X1BLR0NPTkZJR19GSUxFICR7Q01B
S0VfQklOQVJZX0RJUn0vU291cmNlL1dlYktpdExlZ2FjeS9ndGsvd2Via2l0Z3RrLQogc2V0KFdl
YktpdDJfUEtHQ09ORklHX0ZJTEUgJHtDTUFLRV9CSU5BUllfRElSfS9Tb3VyY2UvV2ViS2l0L3dl
YmtpdDJndGstJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LnBjKQogc2V0KFdlYktpdDJXZWJFeHRl
bnNpb25fUEtHQ09ORklHX0ZJTEUgJHtDTUFLRV9CSU5BUllfRElSfS9Tb3VyY2UvV2ViS2l0L3dl
YmtpdDJndGstd2ViLWV4dGVuc2lvbi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0ucGMpCiAKK3Nl
dChKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX1RZUEUgU0hBUkVEKQogc2V0KFNIT1VMRF9JTlNUQUxM
X0pTX1NIRUxMIE9OKQogCiAjIEFkZCBhIHR5cGVsaWIgZmlsZSB0byB0aGUgbGlzdCBvZiBhbGwg
dHlwZWxpYiBkZXBlbmRlbmNpZXMuIFRoaXMgbWFrZXMgaXQgZWFzeSB0bwpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL1dlYktpdENvbXBpbGVyRmxhZ3MuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2Vi
S2l0Q29tcGlsZXJGbGFncy5jbWFrZQppbmRleCA4NjkyOTBlYTlmYWIzZmI3NzZiYzFiZTJiNjhk
MDdkYjdiYzNmMDg3Li43OTUzYTE2N2YyNDk4ZTkyNWFhNGU3MGM5MWRkMGI3ODg0OWIzOThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0Q29tcGlsZXJGbGFncy5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvV2ViS2l0Q29tcGlsZXJGbGFncy5jbWFrZQpAQCAtMTA1LDEzICsxMDUsNiBA
QCBpZiAoQ09NUElMRVJfSVNfR0NDX09SX0NMQU5HKQogICAgICAgICBXRUJLSVRfQVBQRU5EX0dM
T0JBTF9DWFhfRkxBR1MoLXN0ZD1jKysxNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLWZuby1ydHRpKQogCi0gICAgICAgIGlmIChVTklYIEFORCBOT1QgREVWRUxPUEVS
X01PREUpCi0gICAgICAgICAgICAjIFRoZXNlIGFyZSB1c2VkIGV2ZW4gZm9yIHBvcnRzIHRoYXQg
dXNlIHN5bWJvbCBtYXBzIHNvIHRoYXQgdGhlCi0gICAgICAgICAgICAjIGNvbXBpbGVyIGNhbiB0
YWtlIHZpc2liaWxpdHkgaW50byBhY2NvdW50IGZvciBjb2RlIG9wdGltaXphdGlvbi4KLSAgICAg
ICAgICAgIFdFQktJVF9BUFBFTkRfR0xPQkFMX0NPTVBJTEVSX0ZMQUdTKC1mdmlzaWJpbGl0eT1o
aWRkZW4pCi0gICAgICAgICAgICBXRUJLSVRfQVBQRU5EX0dMT0JBTF9DWFhfRkxBR1MoLWZ2aXNp
YmlsaXR5LWlubGluZXMtaGlkZGVuKQotICAgICAgICBlbmRpZiAoKQotCiAgICAgICAgIGlmIChX
SU4zMikKICAgICAgICAgICAgIFdFQktJVF9BUFBFTkRfR0xPQkFMX0NPTVBJTEVSX0ZMQUdTKC1t
bm8tbXMtYml0ZmllbGRzKQogICAgICAgICAgICAgV0VCS0lUX1BSRVBFTkRfR0xPQkFMX0NPTVBJ
TEVSX0ZMQUdTKC1Xbm8tdW5rbm93bi1wcmFnbWFzKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDM0MzMyODRhMTVlYjQzODMzNTUzMWQzNDM5N2UzZTU2MDczMThhN2Eu
LjMxYmI0MDU3ODE4ZTNjMWRmZmJmNDA4MjlmZTVkOGIzOGNkNDI1MTUgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMS0xNCAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTihyMjI2MjY2KTogW0dUS10gUkVMRUFTRV9BU1NFUlQocmVzZXJ2ZWRab25lU2l6ZSA+PSBt
aW5pbXVtUmVzZXJ2ZWRab25lU2l6ZSkgaW4gSlNDOjpWTTo6dXBkYXRlU3RhY2tMaW1pdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTQzOAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYzNzY3MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgSlNDIGFzIGEgc2hhcmVkIGxpYnJhcnkuCisK
KyAgICAgICAgU3RvcCB1c2luZyAtZnZpc2liaWxpdHk9aGlkZGVuLiBUaGlzIGlzIGEgc2hhbWUs
IGJ1dCBpdCBpcyBjYXVzaW5nIHByb2JsZW1zIHRoYXQgSSBkb24ndAorICAgICAgICBrbm93IGhv
dyB0byBmaXguCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0Q29tcGlsZXJGbGFncy5jbWFrZToKKwogMjAxOC0w
MS0xMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgRU5BQkxFX0FTWU5DX0lURVJBVElPTiB0byBFTkFCTEVfSlNfQVNZTkNfSVRFUkFUSU9O
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>