<?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>229235</bug_id>
          
          <creation_ts>2021-08-18 06:30:16 -0700</creation_ts>
          <short_desc>REGRESSION(r279256): Crash in JSC::FTL::saveAllRegisters</short_desc>
          <delta_ts>2022-03-11 05:33:46 -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>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fabiscafe</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>pnormand</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1785099</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-18 06:30:16 -0700</bug_when>
    <thetext>Unfortunately I&apos;ve had to downgrade WebKitGTK 2.33.3 (r281074) -&gt; 2.33.2 (r278597) in the GNOME runtime due to a FTL crash. This occurs 100% of the time when loading any article on https://arstechnica.com/. It also occurs 100% when loading chat rooms in https://gnome.element.io/.

(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007ff13f048867 in __GI_abort () at abort.c:79
#2  0x00007ff13d6ef668 in std::__replacement_assert(char const*, int, char const*, char const*)
    (__file=&lt;optimized out&gt;, __line=&lt;optimized out&gt;, __function=&lt;optimized out&gt;, __condition=&lt;optimized out&gt;)
    at /usr/include/c++/11.1.0/x86_64-unknown-linux-gnu/bits/c++config.h:504
#3  0x00007ff13df0c63c in std::array&lt;unsigned int, 1ul&gt;::operator[](unsigned long) const (this=0x7fef83ac91d0, __n=0)
    at /usr/include/c++/11.1.0/array:193
#4  std::array&lt;unsigned int, 1ul&gt;::operator[](unsigned long) const (__n=&lt;optimized out&gt;, this=&lt;optimized out&gt;)
    at /usr/include/c++/11.1.0/array:193
#5  WTF::Bitmap&lt;32ul, unsigned int&gt;::get(unsigned long, WTF::Dependency) const
    (dependency=..., n=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at WTF/Headers/wtf/Bitmap.h:164
#6  JSC::RegisterSet::get(JSC::Reg) const (reg=..., this=&lt;optimized out&gt;)
    at ../Source/JavaScriptCore/jit/RegisterSet.h:99
#7  JSC::FTL::(anonymous namespace)::Regs::Regs (this=&lt;optimized out&gt;)
    at ../Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:83
#8  JSC::FTL::saveAllRegisters(JSC::AssemblyHelpers&amp;, char*)
    (jit=..., scratchMemory=scratchMemory@entry=0x7ff1368609c8 &quot;\360\206a\304\360\177&quot;)
    at ../Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:111
#9  0x00007ff13df14071 in JSC::FTL::genericGenerationThunkGenerator(JSC::VM&amp;, JSC::FunctionPtr&lt;(WTF::PtrTag)1&gt;, char const*, unsigned int, JSC::FTL::FrameAndStackAdjustmentRequirement, JSC::PtrTag)
    (vm=&lt;optimized out&gt;, generationFunction=..., name=&lt;optimized out&gt;, extraPopsToRestore=&lt;optimized out&gt;, frameAndStackAdjustmentRequirement=(unknown: 0x83ac92c0), resultTag=&lt;optimized out&gt;)
    at ../Source/JavaScriptCore/ftl/FTLThunks.cpp:81
#10 0x00007ff13df14a26 in JSC::FTL::osrExitGenerationThunkGenerator(JSC::VM&amp;) (vm=&lt;optimized out&gt;)
    at WTF/Headers/wtf/PtrTag.h:308
#11 0x00007ff13e0af39e in operator() (__closure=&lt;synthetic pointer&gt;)
    at ../Source/JavaScriptCore/jit/JITThunks.cpp:170
#12 JSC::JITThunks::ctiStubImpl&lt;JSC::JITThunks::ctiStub(JSC::VM&amp;, JSC::ThunkGenerator)::&lt;lambda()&gt; &gt;(JSC::ThunkGenerator, struct {...}) (this=0x7ff136aabf28, key=&lt;optimized out&gt;, generateThunk=...)
    at ../Source/JavaScriptCore/jit/JITThunks.cpp:159
#13 0x00007ff13e0af5c2 in JSC::JITThunks::ctiStub(JSC::VM&amp;, JSC::MacroAssemblerCodeRef&lt;(WTF::PtrTag)26129&gt; (*)(JSC::VM&amp;)) (this=&lt;optimized out&gt;, vm=&lt;optimized out&gt;, generator=&lt;optimized out&gt;)
    at ../Source/JavaScriptCore/jit/JITThunks.cpp:169
#14 0x00007ff13e527f52 in JSC::VM::getCTIStub(JSC::MacroAssemblerCodeRef&lt;(WTF::PtrTag)26129&gt; (*)(JSC::VM&amp;))
    (this=&lt;optimized out&gt;, generator=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/bits/unique_ptr.h:173
#15 0x00007ff13defce84 in operator() (linkBuffer=&lt;optimized out&gt;, __closure=&lt;optimized out&gt;)
    at ../Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp:52
#16 WTF::SharedTaskFunctor&lt;void(JSC::LinkBuffer&amp;), JSC::FTL::OSRExitHandle::emitExitThunk(JSC::FTL::State&amp;, JSC::CCallHelpers&amp;)::&lt;lambda(JSC::LinkBuffer&amp;)&gt; &gt;::run(JSC::LinkBuffer &amp;) (this=0x7ff0446795a0, arguments#0=...)
    at WTF/Headers/wtf/SharedTask.h:91
#17 0x00007ff13d786900 in JSC::LinkBuffer::performFinalization() (this=this@entry=0x7ff084007fa0)
    at ../Source/JavaScriptCore/assembler/LinkBuffer.cpp:476
#18 0x00007ff13d786979 in JSC::LinkBuffer::finalizeCodeWithoutDisassemblyImpl() (this=0x7ff084007fa0)
    at ../Source/JavaScriptCore/assembler/LinkBuffer.cpp:71
#19 0x00007ff13df033f8 in JSC::LinkBuffer::finalizeCodeWithoutDisassembly&lt;(WTF::PtrTag)357&gt;() (this=&lt;optimized out&gt;)
    at ../Source/JavaScriptCore/assembler/LinkBuffer.h:310
#20 JSC::FTL::link(JSC::FTL::State&amp;) (state=...) at ../Source/JavaScriptCore/ftl/FTLLink.cpp:165
#21 0x00007ff13dc47903 in JSC::DFG::Plan::compileInThreadImpl() (this=0x7ff084043c40)
    at ../Source/JavaScriptCore/dfg/DFGPlan.cpp:476
#22 0x00007ff13e08be76 in JSC::JITPlan::compileInThread(JSC::JITWorklistThread*)
    (this=0x7ff084043c40, thread=thread@entry=0x7ff084418cf0) at ../Source/JavaScriptCore/jit/JITPlan.cpp:165
#23 0x00007ff13e0dad8a in JSC::JITWorklistThread::work() (this=0x7ff084418cf0)
    at ../Source/JavaScriptCore/jit/JITWorklistThread.cpp:123
#24 0x00007ff13e767a39 in operator() (__closure=&lt;optimized out&gt;) at ../Source/WTF/wtf/AutomaticThread.cpp:229
#25 WTF::Detail::CallableWrapper&lt;WTF::AutomaticThread::start(const WTF::AbstractLocker&amp;)::&lt;lambda()&gt;, void&gt;::call(void--Type &lt;RET&gt; for more, q to quit, c to continue without paging--
) (this=0x7ff084091a50) at ../Source/WTF/wtf/Function.h:53
#26 0x00007ff13e78ad5e in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;)
    at ../Source/WTF/wtf/Function.h:79
#27 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7ff0840923f0)
    at ../Source/WTF/wtf/Threading.cpp:187
#28 0x00007ff13e7e76dd in WTF::wtfThreadEntryPoint(void*) (context=&lt;optimized out&gt;)
    at ../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:241
#29 0x00007ff13cff53ba in start_thread (arg=0x7fef83acb640) at pthread_create.c:481
#30 0x00007ff13f127ad3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

I&apos;ll attach a full backtrace as well.

Unfortunately I am *not* able to reproduce this crash with my local build of WebKit trunk outside flatpak. I&apos;ll try building r281074 to see if I can reproduce there. I can only bisect it if I can reproduce it in my own local build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785100</commentid>
    <comment_count>1</comment_count>
      <attachid>435763</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-18 06:31:00 -0700</bug_when>
    <thetext>Created attachment 435763
Full backtrace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785109</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-18 07:54:10 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0) 
&gt; Unfortunately I am *not* able to reproduce this crash with my local build of
&gt; WebKit trunk outside flatpak. I&apos;ll try building r281074 to see if I can
&gt; reproduce there. I can only bisect it if I can reproduce it in my own local
&gt; build.

Unfortunately my local build of r281074 works fine. :S</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785116</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-18 08:44:51 -0700</bug_when>
    <thetext>Workaround: the crashes go away when I set JSC_useFTLJIT=0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785118</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-18 08:46:45 -0700</bug_when>
    <thetext>Oh and there is this console output:

/usr/include/c++/11.1.0/array:196: constexpr const value_type&amp; std::array&lt;_Tp, _Nm&gt;::operator[](std::array&lt;_Tp, _Nm&gt;::size_type) const [with _Tp = unsigned int; long unsigned int _Nm = 1; std::array&lt;_Tp, _Nm&gt;::const_reference = const unsigned int&amp;; std::array&lt;_Tp, _Nm&gt;::size_type = long unsigned int]: Assertion &apos;__n &lt; this-&gt;size()&apos; failed.

We can see from the backtrace that __n is 0, so presumably the array&apos;s size must be 0 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786438</commentid>
    <comment_count>5</comment_count>
    <who name="Fabian Bornschein">fabiscafe</who>
    <bug_when>2021-08-23 08:56:01 -0700</bug_when>
    <thetext>I experience the same thing and get the same error

Webkit version 2.33.3 (from https://webkitgtk.org/releases/webkitgtk-2.33.3.tar.xz)
+ https://bugs.webkit.org/show_bug.cgi?id=229152#c18 patch applied

Build options:
    -DPORT=GTK \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_LIBDIR=lib \
    -DCMAKE_INSTALL_LIBEXECDIR=lib \
    -DCMAKE_SKIP_RPATH=ON \
    -DENABLE_GTKDOC=ON \
    -DENABLE_MINIBROWSER=ON \
    -DUSE_SOUP2=ON

Happen to me on any mastodon timeline, as well as the given sites https://arstechnica.com/, https://gnome.element.io/

The line 

/usr/include/c++/11.1.0/array:196: constexpr const value_type&amp; std::array&lt;_Tp, _Nm&gt;::operator[](std::array&lt;_Tp, _Nm&gt;::size_type) const [with _Tp = unsigned int; long unsigned int _Nm = 1; std::array&lt;_Tp, _Nm&gt;::const_reference = const unsigned int&amp;; std::array&lt;_Tp, _Nm&gt;::size_type = long unsigned int]: Assertion &apos;__n &lt; this-&gt;size()&apos; failed.

also appears.

2.33.2 (also from the tar.xz) works just fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786447</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-23 09:19:17 -0700</bug_when>
    <thetext>Hi Fabian, what distribution are you using?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786477</commentid>
    <comment_count>7</comment_count>
    <who name="Fabian Bornschein">fabiscafe</who>
    <bug_when>2021-08-23 11:01:21 -0700</bug_when>
    <thetext>Ahh sorry. It&apos;s on Arch Linux for me.

my bt
==================================================

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007fbfe89ab862 in __GI_abort () at abort.c:79
#2  0x00007fbfe6e0caca in std::__replacement_assert(char const*, int, char const*, char const*) (__file=&lt;optimized out&gt;, __line=&lt;optimized out&gt;, __function=&lt;optimized out&gt;, __condition=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/x86_64-pc-linux-gnu/bits/c++config.h:504
#3  0x00007fbfe776fb2c in std::array&lt;unsigned int, 1ul&gt;::operator[](unsigned long) const (__n=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/array:196
#4  WTF::Bitmap&lt;32ul, unsigned int&gt;::get(unsigned long, WTF::Dependency) const (dependency=..., n=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/src/debug/build/WTF/Headers/wtf/Bitmap.h:164
#5  JSC::RegisterSet::get(JSC::Reg) const (reg=..., this=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/RegisterSet.h:99
#6  JSC::FTL::(anonymous namespace)::Regs::Regs (this=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:83
#7  JSC::FTL::saveAllRegisters(JSC::AssemblyHelpers&amp;, char*) (jit=..., scratchMemory=scratchMemory@entry=0x7fbfe026e688 &quot;pC_,\277\177&quot;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:111
#8  0x00007fbfe7778f8c in JSC::FTL::genericGenerationThunkGenerator(JSC::VM&amp;, JSC::FunctionPtr&lt;(WTF::PtrTag)1&gt;, char const*, unsigned int, JSC::FTL::FrameAndStackAdjustmentRequirement, JSC::PtrTag)
    (vm=&lt;optimized out&gt;, generationFunction=..., name=&lt;optimized out&gt;, extraPopsToRestore=&lt;optimized out&gt;, frameAndStackAdjustmentRequirement=(unknown: 0xd37fc300), resultTag=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLThunks.cpp:81
#9  0x00007fbfe7779a86 in JSC::FTL::osrExitGenerationThunkGenerator(JSC::VM&amp;) (vm=&lt;optimized out&gt;) at /usr/src/debug/build/WTF/Headers/wtf/PtrTag.h:308
#10 0x00007fbfe7952796 in operator() (__closure=&lt;synthetic pointer&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/JITThunks.cpp:170
#11 JSC::JITThunks::ctiStubImpl&lt;JSC::JITThunks::ctiStub(JSC::VM&amp;, JSC::ThunkGenerator)::&lt;lambda()&gt; &gt;(JSC::ThunkGenerator, struct {...}) (this=0x7fbfe04aaf28, key=&lt;optimized out&gt;, generateThunk=...) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/JITThunks.cpp:159
#12 0x00007fbfe79529d2 in JSC::JITThunks::ctiStub(JSC::VM&amp;, JSC::MacroAssemblerCodeRef&lt;(WTF::PtrTag)26129&gt; (*)(JSC::VM&amp;)) (this=&lt;optimized out&gt;, vm=&lt;optimized out&gt;, generator=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/JITThunks.cpp:169
#13 0x00007fbfe7e828a3 in JSC::VM::getCTIStub(JSC::MacroAssemblerCodeRef&lt;(WTF::PtrTag)26129&gt; (*)(JSC::VM&amp;)) (this=&lt;optimized out&gt;, generator=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/bits/unique_ptr.h:173
#14 0x00007fbfe775ee65 in operator() (linkBuffer=&lt;optimized out&gt;, __closure=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp:52
#15 WTF::SharedTaskFunctor&lt;void(JSC::LinkBuffer&amp;), JSC::FTL::OSRExitHandle::emitExitThunk(JSC::FTL::State&amp;, JSC::CCallHelpers&amp;)::&lt;lambda(JSC::LinkBuffer&amp;)&gt; &gt;::run(JSC::LinkBuffer &amp;) (this=0x7fbef4017630, arguments#0=...) at /usr/src/debug/build/WTF/Headers/wtf/SharedTask.h:91
#16 0x00007fbfe6eb1a70 in JSC::LinkBuffer::performFinalization() (this=this@entry=0x7fbf5c640960) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/assembler/LinkBuffer.cpp:476
#17 0x00007fbfe6eb1ae9 in JSC::LinkBuffer::finalizeCodeWithoutDisassemblyImpl() (this=0x7fbf5c640960) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/assembler/LinkBuffer.cpp:71
#18 0x00007fbfe7766a0c in JSC::LinkBuffer::finalizeCodeWithoutDisassembly&lt;(WTF::PtrTag)357&gt;() (this=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/assembler/LinkBuffer.h:310
#19 JSC::FTL::link(JSC::FTL::State&amp;) (state=...) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLLink.cpp:165
#20 0x00007fbfe743539d in JSC::DFG::Plan::compileInThreadImpl() (this=0x7fbed0434380) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/dfg/DFGPlan.cpp:476
#21 0x00007fbfe7929019 in JSC::JITPlan::compileInThread(JSC::JITWorklistThread*) (this=0x7fbed0434380, thread=thread@entry=0x7fbf5c676a68) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/JITPlan.cpp:165
#22 0x00007fbfe797f28d in JSC::JITWorklistThread::work() (this=0x7fbf5c676a68) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/JITWorklistThread.cpp:123
#23 0x00007fbfe80e4471 in operator() (__closure=0x7fbf3440b038) at /usr/src/debug/webkitgtk-2.33.3/Source/WTF/wtf/AutomaticThread.cpp:229
#24 WTF::Detail::CallableWrapper&lt;WTF::AutomaticThread::start(const WTF::AbstractLocker&amp;)::&lt;lambda()&gt;, void&gt;::call(void) (this=0x7fbf3440b030) at /usr/src/debug/webkitgtk-2.33.3/Source/WTF/wtf/Function.h:53
#25 0x00007fbfe810bd23 in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/WTF/wtf/Function.h:79
#26 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fbf5c676318) at /usr/src/debug/webkitgtk-2.33.3/Source/WTF/wtf/Threading.cpp:187
#27 0x00007fbfe817e45e in WTF::wtfThreadEntryPoint(void*) (context=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/WTF/wtf/posix/ThreadingPOSIX.cpp:241
#28 0x00007fbfe6755259 in start_thread (arg=0x7fbed37fe640) at pthread_create.c:481
#29 0x00007fbfe8a835e3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786670</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-08-23 23:21:45 -0700</bug_when>
    <thetext>I see gcc 11.1 in both cases, maybe it&apos;s related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786680</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-24 00:32:42 -0700</bug_when>
    <thetext>&gt; constexpr const value_type&amp; std::array&lt;_Tp, _Nm&gt;::operator[](std::array&lt;_Tp, _Nm&gt;::size_type) const [with _Tp = unsigned int; long unsigned int _Nm = 1; std::array&lt;_Tp, _Nm&gt;::const_reference = const unsigned int&amp;; std::array&lt;_Tp, _Nm&gt;::size_type = long unsigned int]: Assertion &apos;__n &lt; this-&gt;size()&apos; failed

This is an access into a std::array&lt;unsigned int, 1&gt;, as determined in WTF::Bitmap. Per backtrace, __n should be 0, but for whatever reason the assertion still pops off.

The assertion in std::array&apos;s operator[] is new for libstdc++ 11.1.0, it&apos;s not used in previous versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786696</commentid>
    <comment_count>10</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-24 02:35:31 -0700</bug_when>
    <thetext>With GCC 10, when an OOB assert is placed in Bitmap&lt;&gt;::get(), it&apos;s triggered later in FTL::saveAllRegisters(), when saving all the FPR registers. When passing the MacroAssembler::lastRegister() value to Regs::nextFPRegister(), this method immediately collects the index value of the next FP register, which ends up being 32, which causes access beyond the bounds of Bitmap&apos;s std::array&lt;&gt;.

An additional check in Regs::nextFPRegister() would fix that:

```
        while (next &lt;= MacroAssembler::lastFPRegister() &amp;&amp; special.get(next))
            next = MacroAssembler::nextFPRegister(next);
```

But this doesn&apos;t exactly match the backtraces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786724</commentid>
    <comment_count>11</comment_count>
    <who name="Fabian Bornschein">fabiscafe</who>
    <bug_when>2021-08-24 06:31:42 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #8)
&gt; I see gcc 11.1 in both cases, maybe it&apos;s related.

I can confirm this. GCC10 rebuild works fine for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786733</commentid>
    <comment_count>12</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-08-24 07:31:54 -0700</bug_when>
    <thetext>I just built trunk today (r281492) on Arch Linux with GCC 11.1.0 and I cannot
hit this issue anymore. Maybe some of the commits that touched JSC recently
have had the side effect of fixing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787123</commentid>
    <comment_count>13</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-08-25 02:59:27 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #12)
&gt; I just built trunk today (r281492) on Arch Linux with GCC 11.1.0 and I cannot
&gt; hit this issue anymore. Maybe some of the commits that touched JSC recently
&gt; have had the side effect of fixing this?

I went ahead and tested a build of WebKitGTK 2.33.3 — still no crash, I&apos;ve been
using the MiniBrowser to read Ars Technica, and chat using Element for half an
hour, so I suppose I should have hit the problem by now ¯\_(ツ)_/¯</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787150</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-25 06:31:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/82337517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787152</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-25 06:37:21 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #13)
&gt; I went ahead and tested a build of WebKitGTK 2.33.3 — still no crash, I&apos;ve
&gt; been
&gt; using the MiniBrowser to read Ars Technica, and chat using Element for half
&gt; an
&gt; hour, so I suppose I should have hit the problem by now ¯\_(ツ)_/¯

Yes, this crash occurs immediately when using either page. My guess is it occurs whenever FTL tier is reached, but that&apos;s just a blind guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787170</commentid>
    <comment_count>16</comment_count>
    <who name="Fabian Bornschein">fabiscafe</who>
    <bug_when>2021-08-25 08:05:32 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #13)
&gt; I went ahead and tested a build of WebKitGTK 2.33.3 — still no crash, I&apos;ve
&gt; been

Unfortunately I&apos;m on a limited connection and unable to checkout the full webkit repo to see if trunk is fine.

@Adrian If you have some time, this is my PKGBUILD where, after build and installing, I hit the problem:
https://gitlab.com/fabis_cafe/gnome-unstable/-/tree/webkit2gtk_b/webkit2gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787174</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-25 08:37:57 -0700</bug_when>
    <thetext>Thanks to Zan&apos;s investigation, I guessed that I might be able to reproduce if I did: -DCMAKE_CXX_FLAGS=&quot;-D_GLIBCXX_ASSERTIONS&quot;

And I guessed correctly! So I will bisect this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787284</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-25 13:42:33 -0700</bug_when>
    <thetext>I&apos;m on the last stages of my bisect. It probably broke in r279256. Will update the bug title after I&apos;ve confirmed for sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787287</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-25 13:45:54 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #18)
&gt; I&apos;m on the last stages of my bisect. It probably broke in r279256. Will
&gt; update the bug title after I&apos;ve confirmed for sure.

@Michael Can you reproduce this crash after https://trac.webkit.org/changeset/280578/webkit ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787337</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-25 14:54:24 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #19)
&gt; @Michael Can you reproduce this crash after
&gt; https://trac.webkit.org/changeset/280578/webkit ?

Yes, that commit predates 2.33.3.

(In reply to Michael Catanzaro from comment #18)
&gt; I&apos;m on the last stages of my bisect. It probably broke in r279256. Will
&gt; update the bug title after I&apos;ve confirmed for sure.

I&apos;ve narrowed the first bad commit down to r279254-r279263. This is a small enough range that I&apos;m very confident it will turn out to be r279256 &quot;Use ldp and stp more for saving / restoring registers on ARM64.&quot; It&apos;s the only JSC commit in this range, and it notably touches FTL::saveAllRegisters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787352</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-25 15:21:53 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #20)
&gt; I&apos;m very confident it will turn out to be r279256

Confirmed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788479</commentid>
    <comment_count>22</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-30 05:37:19 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #12)
&gt; I just built trunk today (r281492) on Arch Linux with GCC 11.1.0 and I cannot
&gt; hit this issue anymore. Maybe some of the commits that touched JSC recently
&gt; have had the side effect of fixing this?

For the assertion to actually trigger, the `-D_GLIBCXX_ASSERTIONS` define is required in CFLAGS and CXXFLAGS. With that, I can reproduce the libstdc++ assert on a GCC 11 build with yesterday&apos;s main.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788494</commentid>
    <comment_count>23</comment_count>
      <attachid>436769</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-30 07:29:44 -0700</bug_when>
    <thetext>Created attachment 436769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788495</commentid>
    <comment_count>24</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-30 07:32:56 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #23)
&gt; Created attachment 436769 [details]
&gt; Patch

I was able to reproduce the problem on a JetStream run, for a JSCOnly build. The last-register check I described before fixed the problem, so this patch applies that check for both GPRReg and FPRReg iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788524</commentid>
    <comment_count>25</comment_count>
      <attachid>436769</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-30 09:15:55 -0700</bug_when>
    <thetext>Comment on attachment 436769
Patch

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

Thank you, Zan!

&gt; Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:93
&gt;      GPRReg nextRegister(GPRReg current)
&gt;      {
&gt;          auto next = MacroAssembler::nextRegister(current);
&gt; -        while (special.get(next))
&gt; +        while (next &lt;= MacroAssembler::lastRegister() &amp;&amp; special.get(next))
&gt;              next = MacroAssembler::nextRegister(next);
&gt;          return next;
&gt;      }

Hi Mark, does this look OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788657</commentid>
    <comment_count>26</comment_count>
      <attachid>436769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-30 14:14:51 -0700</bug_when>
    <thetext>Comment on attachment 436769
Patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:93
&gt;&gt;      }
&gt; 
&gt; Hi Mark, does this look OK?

This fix seems not OK to me since we are returning non-valid register if we are reaching to MacroAssembler::lastRegister() (and if it is special register).
Can you investigate what is happening here? Why are we exhausting the registers?
The pasted backtrace is,

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007fbfe89ab862 in __GI_abort () at abort.c:79
#2  0x00007fbfe6e0caca in std::__replacement_assert(char const*, int, char const*, char const*) (__file=&lt;optimized out&gt;, __line=&lt;optimized out&gt;, __function=&lt;optimized out&gt;, __condition=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/x86_64-pc-linux-gnu/bits/c++config.h:504
#3  0x00007fbfe776fb2c in std::array&lt;unsigned int, 1ul&gt;::operator[](unsigned long) const (__n=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/array:196
#4  WTF::Bitmap&lt;32ul, unsigned int&gt;::get(unsigned long, WTF::Dependency) const (dependency=..., n=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/src/debug/build/WTF/Headers/wtf/Bitmap.h:164
#5  JSC::RegisterSet::get(JSC::Reg) const (reg=..., this=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/RegisterSet.h:99
#6  JSC::FTL::(anonymous namespace)::Regs::Regs (this=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:83
#7  JSC::FTL::saveAllRegisters(JSC::AssemblyHelpers&amp;, char*) (jit=..., scratchMemory=scratchMemory@entry=0x7fbfe026e688 &quot;pC_,\277\177&quot;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:111


So, in FTLSaveRestore.cpp:111, we define

Regs regs;

and this Regs constructor is doing,

   77     Regs()
   78     {
   79         special = RegisterSet::stackRegisters();
   80         special.merge(RegisterSet::reservedHardwareRegisters());
   81
   82         first = MacroAssembler::firstRegister();
   83         while (special.get(first))
   84             first = MacroAssembler::nextRegister(first);
   85     }

from the code, this is impossible to get exceeding first register since it is `MacroAssembler::firstRegister()`.
And we are not including all registers into special registers. So MacroAssember::nextRegister must succeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788659</commentid>
    <comment_count>27</comment_count>
      <attachid>436769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-30 14:19:30 -0700</bug_when>
    <thetext>Comment on attachment 436769
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:93
&gt;&gt;&gt;      }
&gt;&gt; 
&gt;&gt; Hi Mark, does this look OK?
&gt; 
&gt; This fix seems not OK to me since we are returning non-valid register if we are reaching to MacroAssembler::lastRegister() (and if it is special register).
&gt; Can you investigate what is happening here? Why are we exhausting the registers?
&gt; The pasted backtrace is,
&gt; 
&gt; #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
&gt; #1  0x00007fbfe89ab862 in __GI_abort () at abort.c:79
&gt; #2  0x00007fbfe6e0caca in std::__replacement_assert(char const*, int, char const*, char const*) (__file=&lt;optimized out&gt;, __line=&lt;optimized out&gt;, __function=&lt;optimized out&gt;, __condition=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/x86_64-pc-linux-gnu/bits/c++config.h:504
&gt; #3  0x00007fbfe776fb2c in std::array&lt;unsigned int, 1ul&gt;::operator[](unsigned long) const (__n=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/include/c++/11.1.0/array:196
&gt; #4  WTF::Bitmap&lt;32ul, unsigned int&gt;::get(unsigned long, WTF::Dependency) const (dependency=..., n=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/src/debug/build/WTF/Headers/wtf/Bitmap.h:164
&gt; #5  JSC::RegisterSet::get(JSC::Reg) const (reg=..., this=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/jit/RegisterSet.h:99
&gt; #6  JSC::FTL::(anonymous namespace)::Regs::Regs (this=&lt;optimized out&gt;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:83
&gt; #7  JSC::FTL::saveAllRegisters(JSC::AssemblyHelpers&amp;, char*) (jit=..., scratchMemory=scratchMemory@entry=0x7fbfe026e688 &quot;pC_,\277\177&quot;) at /usr/src/debug/webkitgtk-2.33.3/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:111
&gt; 
&gt; 
&gt; So, in FTLSaveRestore.cpp:111, we define
&gt; 
&gt; Regs regs;
&gt; 
&gt; and this Regs constructor is doing,
&gt; 
&gt;    77     Regs()
&gt;    78     {
&gt;    79         special = RegisterSet::stackRegisters();
&gt;    80         special.merge(RegisterSet::reservedHardwareRegisters());
&gt;    81
&gt;    82         first = MacroAssembler::firstRegister();
&gt;    83         while (special.get(first))
&gt;    84             first = MacroAssembler::nextRegister(first);
&gt;    85     }
&gt; 
&gt; from the code, this is impossible to get exceeding first register since it is `MacroAssembler::firstRegister()`.
&gt; And we are not including all registers into special registers. So MacroAssember::nextRegister must succeed.

Let&apos;s consider about the state when this function is called.
first should be eax because of `static constexpr RegisterID firstRegister() { return X86Registers::eax; }`. And then, special must not include eax since this is not a reserved registers.
So... why is `MacroAssembler::nextRegister` called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788729</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-30 16:43:11 -0700</bug_when>
    <thetext>The problem is RegisterSet::reservedHardwareRegisters is returning an empty RegisterSet, so &quot;special&quot; only contains rsp and rbp (returned by RegisterSet::stackRegisters).

I tried this debug:

RegisterSet reserved = RegisterSet::reservedHardwareRegisters();
reserved.forEach([](const Reg&amp; reg) { WTFLogAlways(&quot;%s&quot;, reg.debugName()); });

and it printed nothing.

Whereas:

special.forEach([](const Reg&amp; reg) { WTFLogAlways(&quot;%s&quot;, reg.debugName()); });

prints &quot;rsp&quot; followed by &quot;rbp&quot;, unchanged both before and after this line:

special.merge(RegisterSet::reservedHardwareRegisters());

So next step is to debug RegisterSet::reservedHardwareRegisters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788788</commentid>
    <comment_count>29</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-30 23:12:47 -0700</bug_when>
    <thetext>The backtraces pasted here so far are faulty, here&apos;s one from a non-optimized build:

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff75a3537 in __GI_abort () at abort.c:79
#2  0x0000555555626b19 in std::__replacement_assert () at /usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h:514
#3  0x00005555556d91dd in std::array&lt;unsigned int, 1ul&gt;::operator[] () at /usr/include/c++/11/array:196
#4  0x00005555556d3c42 in WTF::Bitmap&lt;32ul, unsigned int&gt;::get () at WTF/Headers/wtf/Bitmap.h:164
#5  0x00005555556cc3ad in JSC::RegisterSet::get () at /work/webkit/git/Source/JavaScriptCore/jit/RegisterSet.h:99
#6  0x0000555556f0af46 in nextFPRegister () at /work/webkit/git/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:98
#7  0x0000555556f0b128 in JSC::FTL::saveAllRegisters () at /work/webkit/git/Source/JavaScriptCore/ftl/FTLSaveRestore.cpp:142

The problem comes from the FPR storing loop at the end, specifically when handling the MacroAssembler::lastFPRegister() value. At the end of that loop, Regs::nextFPRegister() is called with that value.

But immediately, Regs::nextFPRegister() retrieves the MacroAssembler::nextFPRegister() value of that last register, and calls RegisterSet::get() with that FPRegister.

In raw numbers, MacroAssembler::lastFPRegister() is FPRegisterID(15), MacroAssembler::nextFPRegister() for that value returns FPRegisterID(16). RegisterSet::get() implicitly converts that FPRegisterID to a Reg object, which internally holds index of 32 (the 16 that&apos;s the FPRegisterID&apos;s value that&apos;s additionally offset by the count of existing GP registers, which is also 16). RegisterSet::get() then uses that index value to access into the zero-indexed Bitmap (and the underlying one-sized std::array&lt;uint32_t&gt;) at which point the assert happens because of the out-of-bounds access.

So the additional condition in Regs::nextRegister() and Regs::nextFPRegister() would prevent accessing into RegisterSet beyond the valid register range. For Regs::nextRegister() call with MacroAssembler::lastRegister() (= RegisterID(15)), RegisterSet::get() is called with RegisterID(16), but the Reg object for that register ID ends up with an index of 16, which doesn&apos;t go out of the Bitmap&apos;s bounds, but it does end up querying the state belonging to FPRegisterID(0). Whereas for Regs::nextFPRegister() and FPRegisterID(15), things go sideways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788806</commentid>
    <comment_count>30</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-31 00:56:56 -0700</bug_when>
    <thetext>Zan&apos;s debug stack trace does explain what actually went wrong.  Looking at the loops in FTLSaveRestore.cpp in my original patch in http://trac.webkit.org/r279256, I see where I had introduced this bug which allows us to now iterate past MacroAssembler::lastRegister() and MacroAssembler::lastFPRegister() respectively.

In practice though, I think this bug would not cause any issues: Reg is instantiated on the stack.  We&apos;ll read past the end of the Bitmap in Reg until we find the first uint32_t after that has a set bit.  This will result in an index exceeding MacroAssembler::lastRegister() or MacroAssembler::lastFPRegister(), and the loops in saveAllRegisters() and restoreAllRegisters() will eventually reject the invalid RegisterID or FPRegisterID.  However, because GCC added the assertion to std::array, you&apos;re now seeing a crash.

As for the fix, it is unfortunate that each look iteration now includes 2 comparisons against MacroAssembler::lastRegister() or MacroAssembler::lastFPRegister().  Instead, can you just remove Regs::nextRegister() and Regs::nextFPRegister(), and restore the original loop structure in http://trac.webkit.org/r279256?  For example,

```
    for (MacroAssembler::FPRegisterID reg = MacroAssembler::firstFPRegister(); reg &lt;= MacroAssembler::lastFPRegister(); reg = MacroAssembler::nextFPRegister(reg)) {
        if (regs.special.get(reg))
            continue;
        spooler.storeFPR({ reg, static_cast&lt;ptrdiff_t&gt;(offsetOfFPR(reg)) });
    }
    spooler.finalizeFPR();
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788939</commentid>
    <comment_count>31</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-31 09:25:33 -0700</bug_when>
    <thetext>The save/restore iterations can be simplified as suggested, which is nice. Regs::nextFPRegister() can be removed, Regs::nextRegister() not really since it&apos;s still used for initializing different GPR values.

I still adjusted Regs::nextRegsiter() to also use a for-loop and access into RegisterSet inside that loop, only for RegisterID values below or equal to MacroAssembler::lastRegister().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788941</commentid>
    <comment_count>32</comment_count>
      <attachid>436895</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-31 09:27:27 -0700</bug_when>
    <thetext>Created attachment 436895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788984</commentid>
    <comment_count>33</comment_count>
      <attachid>436895</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-31 11:21:26 -0700</bug_when>
    <thetext>Comment on attachment 436895
Patch

Unfortunately there are 189 failures on the jsc-armv7-tests EWS.  Several tests are crashing with exit code 139 (139 - 128 = 11, so that&apos;s SIGSEGV), while others are crashing with exit code 134 (134 - 128 = 6, SIGABRT). Unfortunately the EWS doesn&apos;t provide any backtraces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789004</commentid>
    <comment_count>34</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-31 12:00:26 -0700</bug_when>
    <thetext>I don&apos;t know what&apos;s going on there, the run for this patch only &quot;produced&quot; one failure whereas the 189 failures are apparently expected as they are listed as pre-existing, as also evident on other jobs.

Plus, the proposed change is inside FTL which isn&apos;t used on 32-bit JIT targets like the ARMv7, so there should be no changes in behavior there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789031</commentid>
    <comment_count>35</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-08-31 12:35:54 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #34)
&gt; Plus, the proposed change is inside FTL which isn&apos;t used on 32-bit JIT
&gt; targets like the ARMv7, so there should be no changes in behavior there.

Good point. Maybe we just got unlucky and the test is flaky. I&apos;ve clicked &quot;Retry failed builds.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789208</commentid>
    <comment_count>36</comment_count>
      <attachid>436895</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-31 20:33:10 -0700</bug_when>
    <thetext>Comment on attachment 436895
Patch

r=me.  Don&apos;t know if the jsc-mips-tests failure is real, but I can&apos;t see why this patch can possibly cause any failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789270</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-01 02:03:55 -0700</bug_when>
    <thetext>Committed r281843 (241176@main): &lt;https://commits.webkit.org/241176@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436895.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>435763</attachid>
            <date>2021-08-18 06:31:00 -0700</date>
            <delta_ts>2021-08-19 07:08:57 -0700</delta_ts>
            <desc>Full backtrace</desc>
            <filename>full backtrace</filename>
            <type>text/plain</type>
            <size>35413</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">KGdkYikgYnQgZnVsbAojMCAgX19HSV9yYWlzZSAoc2lnPXNpZ0BlbnRyeT02KSBhdCAuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9yYWlzZS5jOjQ5CiAgICAgICAgc2V0ID0gCiAgICAgICAgICAg
IHtfX3ZhbCA9IHswLCAxNDA2Njk5MTcwMDQ5ODQsIDY0MTc2Mjk0NjkwMDI5NTY4LCA1NzQyMDg5
NTI0ODk3MzgyNCwgNTc0MjA4OTUyNDg5NzM4MjQsIDY0MTc2Mjk0NjkwMDI5NTY4LCA5ODc4NDI0
NzgwOCwgMCwgMCwgMTA3Mzc0MTgyMywgMTQwNjY5OTE2OTUxMzYwLCAwLCAwLCAwLCAxNDA2NjY2
ODMwMzc1ODQsIDE0MDY3NDExMTgyNjg3Nn19CiAgICAgICAgcGlkID0gPG9wdGltaXplZCBvdXQ+
CiAgICAgICAgdGlkID0gPG9wdGltaXplZCBvdXQ+CiMxICAweDAwMDA3ZmYxM2YwNDg4NjcgaW4g
X19HSV9hYm9ydCAoKSBhdCBhYm9ydC5jOjc5CiAgICAgICAgc2F2ZV9zdGFnZSA9IDEKICAgICAg
ICBhY3QgPSAKICAgICAgICAgIHtfX3NpZ2FjdGlvbl9oYW5kbGVyID0ge3NhX2hhbmRsZXIgPSAw
eDdmZWY4M2FjOTE2MCwgc2Ffc2lnYWN0aW9uID0gMHg3ZmVmODNhYzkxNjB9LCBzYV9tYXNrID0g
e19fdmFsID0gezE0MDY3NDExMjM4Mjg5OSwgMTk2LCAxNDA2NzQxMTI1NTE4OTYsIDE0MDY3NDEx
MjM4Mjg4MCwgMSwgMCwgMTc4Mzc1MjE5MDUyOTM1NDI2NTYsIDE0MDY2OTkxNjY4OTg5NiwgMTQw
NjY2NjgzMDM2MzUyLCAxNDA2NzA5ODM2OTg0MDAsIDAsIDIwOCwgMTcsIDE0MDY2NjY4MzAzNjM1
MiwgMTQwNjc0MDk1MTUxNTU1LCAxMjg4NDkwMTg4OH19LCBzYV9mbGFncyA9IC0yMDg1ODQyMjQw
LCBzYV9yZXN0b3JlciA9IDB4YX0KICAgICAgICBzaWdzID0gCiAgICAgICAgICAgIHtfX3ZhbCA9
IHszMiwgMCwgMzkwNzIwOTA1OTczMDY1NDQwOCwgMTc4Mzc1MjE5MDUyOTM1NDI2NTYsIDE0MDY2
NjY4MzAzNzU4NCwgMTYsIDE0MDY2NjY4MzAzNjMyMCwgMCwgMTYsIDE0MDY2NjY4MzAzNjM1Miwg
MTQwNjY2NjgzMDM2MDY0LCAxNDA2NzQxMjEzMTk0MjcsIDIwNjE1ODQzMDI0OCwgMTQwNjY2Njgz
MDM2MDgwLCAxNDA2NjY2ODMwMzU4ODgsIDE3ODM3NTIxOTA1MjkzNTQyNjU2fX0KIzIgIDB4MDAw
MDdmZjEzZDZlZjY2OCBpbiBzdGQ6Ol9fcmVwbGFjZW1lbnRfYXNzZXJ0KGNoYXIgY29uc3QqLCBp
bnQsIGNoYXIgY29uc3QqLCBjaGFyIGNvbnN0KikKICAgIChfX2ZpbGU9PG9wdGltaXplZCBvdXQ+
LCBfX2xpbmU9PG9wdGltaXplZCBvdXQ+LCBfX2Z1bmN0aW9uPTxvcHRpbWl6ZWQgb3V0PiwgX19j
b25kaXRpb249PG9wdGltaXplZCBvdXQ+KQogICAgYXQgL3Vzci9pbmNsdWRlL2MrKy8xMS4xLjAv
eDg2XzY0LXVua25vd24tbGludXgtZ251L2JpdHMvYysrY29uZmlnLmg6NTA0CiMzICAweDAwMDA3
ZmYxM2RmMGM2M2MgaW4gc3RkOjphcnJheTx1bnNpZ25lZCBpbnQsIDF1bD46Om9wZXJhdG9yW10o
dW5zaWduZWQgbG9uZykgY29uc3QgKHRoaXM9MHg3ZmVmODNhYzkxZDAsIF9fbj0wKQogICAgYXQg
L3Vzci9pbmNsdWRlL2MrKy8xMS4xLjAvYXJyYXk6MTkzCiAgICAgICAgcmVncyA9IAogICAgICAg
ICAge3NwZWNpYWwgPSB7c3RhdGljIGdwck9mZnNldCA9IDAsIHN0YXRpYyBmcHJPZmZzZXQgPSAx
NiwgbV9iaXRzID0ge3N0YXRpYyB3b3JkU2l6ZSA9IDMyLCBzdGF0aWMgd29yZHMgPSAxLCBiaXRz
ID0ge19NX2VsZW1zID0gezQ4fX19fSwgZmlyc3QgPSBKU0M6Olg4NlJlZ2lzdGVyczo6ZWF4fQog
ICAgICAgIGJhc2VHUFIgPSA8b3B0aW1pemVkIG91dD4KIzQgIHN0ZDo6YXJyYXk8dW5zaWduZWQg
aW50LCAxdWw+OjpvcGVyYXRvcltdKHVuc2lnbmVkIGxvbmcpIGNvbnN0IChfX249PG9wdGltaXpl
ZCBvdXQ+LCB0aGlzPTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0IC91c3IvaW5jbHVkZS9jKysvMTEu
MS4wL2FycmF5OjE5MwogICAgICAgIHJlZ3MgPSAKICAgICAgICAgIHtzcGVjaWFsID0ge3N0YXRp
YyBncHJPZmZzZXQgPSAwLCBzdGF0aWMgZnByT2Zmc2V0ID0gMTYsIG1fYml0cyA9IHtzdGF0aWMg
d29yZFNpemUgPSAzMiwgc3RhdGljIHdvcmRzID0gMSwgYml0cyA9IHtfTV9lbGVtcyA9IHs0OH19
fX0sIGZpcnN0ID0gSlNDOjpYODZSZWdpc3RlcnM6OmVheH0KICAgICAgICBiYXNlR1BSID0gPG9w
dGltaXplZCBvdXQ+CiM1ICBXVEY6OkJpdG1hcDwzMnVsLCB1bnNpZ25lZCBpbnQ+OjpnZXQodW5z
aWduZWQgbG9uZywgV1RGOjpEZXBlbmRlbmN5KSBjb25zdAogICAgKGRlcGVuZGVuY3k9Li4uLCBu
PTxvcHRpbWl6ZWQgb3V0PiwgdGhpcz08b3B0aW1pemVkIG91dD4pIGF0IFdURi9IZWFkZXJzL3d0
Zi9CaXRtYXAuaDoxNjQKICAgICAgICByZWdzID0gCiAgICAgICAgICB7c3BlY2lhbCA9IHtzdGF0
aWMgZ3ByT2Zmc2V0ID0gMCwgc3RhdGljIGZwck9mZnNldCA9IDE2LCBtX2JpdHMgPSB7c3RhdGlj
IHdvcmRTaXplID0gMzIsIHN0YXRpYyB3b3JkcyA9IDEsIGJpdHMgPSB7X01fZWxlbXMgPSB7NDh9
fX19LCBmaXJzdCA9IEpTQzo6WDg2UmVnaXN0ZXJzOjplYXh9CiAgICAgICAgYmFzZUdQUiA9IDxv
cHRpbWl6ZWQgb3V0PgojNiAgSlNDOjpSZWdpc3RlclNldDo6Z2V0KEpTQzo6UmVnKSBjb25zdCAo
cmVnPS4uLiwgdGhpcz08b3B0aW1pemVkIG91dD4pCiAgICBhdCAuLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0Lmg6OTkKICAgICAgICByZWdzID0gCiAgICAgICAgICB7c3Bl
Y2lhbCA9IHtzdGF0aWMgZ3ByT2Zmc2V0ID0gMCwgc3RhdGljIGZwck9mZnNldCA9IDE2LCBtX2Jp
dHMgPSB7c3RhdGljIHdvcmRTaXplID0gMzIsIHN0YXRpYyB3b3JkcyA9IDEsIGJpdHMgPSB7X01f
ZWxlbXMgPSB7NDh9fX19LCBmaXJzdCA9IEpTQzo6WDg2UmVnaXN0ZXJzOjplYXh9CiAgICAgICAg
YmFzZUdQUiA9IDxvcHRpbWl6ZWQgb3V0PgojNyAgSlNDOjpGVEw6Oihhbm9ueW1vdXMgbmFtZXNw
YWNlKTo6UmVnczo6UmVncyAodGhpcz08b3B0aW1pemVkIG91dD4pCiAgICBhdCAuLi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcDo4MwogICAgICAgIHJlZ3MgPSAK
ICAgICAgICAgIHtzcGVjaWFsID0ge3N0YXRpYyBncHJPZmZzZXQgPSAwLCBzdGF0aWMgZnByT2Zm
c2V0ID0gMTYsIG1fYml0cyA9IHtzdGF0aWMgd29yZFNpemUgPSAzMiwgc3RhdGljIHdvcmRzID0g
MSwgYml0cyA9IHtfTV9lbGVtcyA9IHs0OH19fX0sIGZpcnN0ID0gSlNDOjpYODZSZWdpc3RlcnM6
OmVheH0KICAgICAgICBiYXNlR1BSID0gPG9wdGltaXplZCBvdXQ+CiM4ICBKU0M6OkZUTDo6c2F2
ZUFsbFJlZ2lzdGVycyhKU0M6OkFzc2VtYmx5SGVscGVycyYsIGNoYXIqKQogICAgKGppdD0uLi4s
IHNjcmF0Y2hNZW1vcnk9c2NyYXRjaE1lbW9yeUBlbnRyeT0weDdmZjEzNjg2MDljOCAiXDM2MFwy
MDZhXDMwNFwzNjBcMTc3IikKICAgIGF0IC4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2F2ZVJlc3RvcmUuY3BwOjExMQogICAgICAgIHJlZ3MgPSAKICAgICAgICAgIHtzcGVjaWFsID0g
e3N0YXRpYyBncHJPZmZzZXQgPSAwLCBzdGF0aWMgZnByT2Zmc2V0ID0gMTYsIG1fYml0cyA9IHtz
dGF0aWMgd29yZFNpemUgPSAzMiwgc3RhdGljIHdvcmRzID0gMSwgYml0cyA9IHtfTV9lbGVtcyA9
IHs0OH19fX0sIGZpcnN0ID0gSlNDOjpYODZSZWdpc3RlcnM6OmVheH0KLS1UeXBlIDxSRVQ+IGZv
ciBtb3JlLCBxIHRvIHF1aXQsIGMgdG8gY29udGludWUgd2l0aG91dCBwYWdpbmctLWMKICAgICAg
ICBiYXNlR1BSID0gPG9wdGltaXplZCBvdXQ+CiM5ICAweDAwMDA3ZmYxM2RmMTQwNzEgaW4gSlND
OjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoSlNDOjpWTSYsIEpTQzo6RnVu
Y3Rpb25QdHI8KFdURjo6UHRyVGFnKTE+LCBjaGFyIGNvbnN0KiwgdW5zaWduZWQgaW50LCBKU0M6
OkZUTDo6RnJhbWVBbmRTdGFja0FkanVzdG1lbnRSZXF1aXJlbWVudCwgSlNDOjpQdHJUYWcpICh2
bT08b3B0aW1pemVkIG91dD4sIGdlbmVyYXRpb25GdW5jdGlvbj0uLi4sIG5hbWU9PG9wdGltaXpl
ZCBvdXQ+LCBleHRyYVBvcHNUb1Jlc3RvcmU9PG9wdGltaXplZCBvdXQ+LCBmcmFtZUFuZFN0YWNr
QWRqdXN0bWVudFJlcXVpcmVtZW50PSh1bmtub3duOiAweDgzYWM5MmMwKSwgcmVzdWx0VGFnPTxv
cHRpbWl6ZWQgb3V0PikgYXQgLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3Mu
Y3BwOjgxCiAgICAgICAgaml0ID0gezxKU0M6Ok1hY3JvQXNzZW1ibGVyPiA9IHs8SlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82ND4gPSB7PEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb24+ID0gezxK
U0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8SlNDOjpYODZBc3NlbWJsZXI+PiA9IHs8SlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyQmFzZT4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIG1fcmFuZG9t
U291cmNlSXNJbml0aWFsaXplZCA9IGZhbHNlLCBtX3JhbmRvbVNvdXJjZSA9IHttX3NlZWQgPSAw
LCBtX2xvdyA9IDEsIG1faGlnaCA9IDgzODg2NzJ9LCBtX2Fzc2VtYmxlciA9IHttX2Zvcm1hdHRl
ciA9IHtzdGF0aWMgbWF4SW5zdHJ1Y3Rpb25TaXplID0gMTYsIG1fYnVmZmVyID0ge21fc3RvcmFn
ZSA9IHtzdGF0aWMgSW5saW5lQ2FwYWNpdHkgPSAxMjgsIG1fYnVmZmVyID0gMHg3ZmYwODQwMGI4
NzAgIlZIXDI3NlwzMTBcdFwyMDZcMDY2XDM2MVwxNzciLCBtX2lubGluZUJ1ZmZlciA9ICJWSFwy
NzZcMzEwXHRcMjA2XDA2NlwzNjFcMTc3XDAwMFwwMDBIXDIxMVwwMDZMXDIxMV5cYkhcMjEzRCRc
YkhcMjExRlwwMjBeSFwyNDFcMDcwW1wzMDFcMDY0XDM2MVwxNzdcMDAwXDAwMEhcMjA1XDMwMFww
MTdcMjA0XDAwM1wwMDBcMDAwXDAwMEhcMjExXDMwNUhcMjEzRVwwMjBIXDIxM1wyMDBcMjAwXDAw
MFwwMDBcMDAwSFwyMDNcMzAwXDAyMFwyMTNcMjAwXDM0NFwwMDBcMDAwXDAwMFwzNjdcMzMwXDMw
MVwzNDBcMDAzSGNcMzAwSFwwMDFcMzUwSFwyMTFcMzA0SFwyMDNcMzU0XGJWSFwyNzZcMzEwXHRc
MjA2XDA2NlwzNjFcMTc3XDAwMFwwMDBIXDIxM0ZcMDIwSFwyMTFEJFxiSFwyMTNcMDA2TFwyMTNe
XGJcMzYxXDE3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCIsIG1fY2FwYWNp
dHkgPSA0MzJ9LCBtX2luZGV4ID0gMzM0fX0sIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gLTIx
NDc0ODM2NDgsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gLTIxNDc0ODM2NDh9LCBt
X3RlbXBSZWdpc3RlcnNWYWxpZEJpdHMgPSAwLCBtX2FsbG93U2NyYXRjaFJlZ2lzdGVyID0gdHJ1
ZSwgbV9saW5rVGFza3MgPSB7PFdURjo6VmVjdG9yQnVmZmVyPFdURjo6UmVmUHRyPFdURjo6U2hh
cmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiwgV1RGOjpSYXdQdHJUcmFpdHM8V1RGOjpT
aGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4sIFdURjo6RGVmYXVsdFJlZkRlcmVm
VHJhaXRzPFdURjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+ID4sIDAsIFdU
Rjo6RmFzdE1hbGxvYz4+ID0gezxXVEY6OlZlY3RvckJ1ZmZlckJhc2U8V1RGOjpSZWZQdHI8V1RG
OjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+LCBXVEY6OlJhd1B0clRyYWl0czxX
VEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiwgV1RGOjpEZWZhdWx0UmVm
RGVyZWZUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4gPiwg
V1RGOjpGYXN0TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDAsIG1fY2FwYWNpdHkgPSAwLCBtX3Np
emUgPSAwfSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCBtX2xhdGVMaW5r
VGFza3MgPSB7PFdURjo6VmVjdG9yQnVmZmVyPFdURjo6UmVmUHRyPFdURjo6U2hhcmVkVGFzazx2
b2lkKEpTQzo6TGlua0J1ZmZlciYpPiwgV1RGOjpSYXdQdHJUcmFpdHM8V1RGOjpTaGFyZWRUYXNr
PHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4sIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFdU
Rjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+ID4sIDAsIFdURjo6RmFzdE1h
bGxvYz4+ID0gezxXVEY6OlZlY3RvckJ1ZmZlckJhc2U8V1RGOjpSZWZQdHI8V1RGOjpTaGFyZWRU
YXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJl
ZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4gPiwgV1RGOjpGYXN0
TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDAsIG1fY2FwYWNpdHkgPSAwLCBtX3NpemUgPSAwfSwg
PE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59fSwgc3RhdGljIHNfc2NyYXRjaFJl
Z2lzdGVyID0gSlNDOjpYODZSZWdpc3RlcnM6OnIxMSwgc3RhdGljIERvdWJsZUNvbmRpdGlvbkJp
dEludmVydCA9IDE2LCBzdGF0aWMgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCA9IDMyLCBzdGF0
aWMgRG91YmxlQ29uZGl0aW9uQml0cyA9IDQ4LCBzdGF0aWMgc3RhY2tQb2ludGVyUmVnaXN0ZXIg
PSBKU0M6Olg4NlJlZ2lzdGVyczo6ZXNwLCBzdGF0aWMgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBK
U0M6Olg4NlJlZ2lzdGVyczo6ZWJwfSwgc3RhdGljIG51bUdQUnMgPSAxNiwgc3RhdGljIG51bUZQ
UnMgPSAxNiwgc3RhdGljIEludmFsaWRHUFJSZWcgPSBKU0M6Olg4NlJlZ2lzdGVyczo6SW52YWxp
ZEdQUlJlZ30sIHN0YXRpYyBCbGluZGluZ01vZHVsdXMgPSA2NH0sIG1fY29kZUJsb2NrID0gMHgw
LCBtX2Jhc2VsaW5lQ29kZUJsb2NrID0gMHgwfQogICAgICAgIHN0YWNrUG9pbnRlclJlZ2lzdGVy
ID0gSlNDOjpYODZSZWdpc3RlcnM6OmVzcAogICAgICAgIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0g
SlNDOjpYODZSZWdpc3RlcnM6OmVicAogICAgICAgIHB1c2hUb1NhdmVCeXRlT2Zmc2V0ID0gOAog
ICAgICAgIHN0YWNrTWlzYWxpZ25tZW50ID0gMzIKICAgICAgICBudW1iZXJPZlJlcXVpcmVkUG9w
cyA9IDIKICAgICAgICBzY3JhdGNoQnVmZmVyID0gMHg3ZmYxMzY4NjA5YzAKICAgICAgICBidWZm
ZXIgPSAweDdmZjEzNjg2MDljOCAiXDM2MFwyMDZhXDMwNFwzNjBcMTc3IgogICAgICAgIHBhdGNo
QnVmZmVyID0ge3N0YXRpYyBudW1iZXJPZlByb2ZpbGVzID0gMjIsIHN0YXRpYyBudW1iZXJPZlBy
b2ZpbGVzRXhjbHVkaW5nVG90YWwgPSAyMSwgbV9leGVjdXRhYmxlTWVtb3J5ID0ge21fcHRyID0g
MHgwfSwgbV9zaXplID0gMTc4Mzc1MjE5MDUyOTM1NDI2NTYsIG1fZGlkQWxsb2NhdGUgPSAxODQs
IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCA9IDcsIG1fcHJvZmlsZSA9IDMyNzUyLCBtX2NvZGUgPSB7
PEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyQmFzZT4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIG1f
dmFsdWUgPSAweDdmZjEzNmFmZTAzMH0sIG1fbGlua1Rhc2tzID0gezxXVEY6OlZlY3RvckJ1ZmZl
cjxXVEY6OlJlZlB0cjxXVEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4sIFdU
Rjo6UmF3UHRyVHJhaXRzPFdURjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+
LCBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6Okxp
bmtCdWZmZXImKT4gPiA+LCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZm
ZXJCYXNlPFdURjo6UmVmUHRyPFdURjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYp
PiwgV1RGOjpSYXdQdHJUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVy
Jik+ID4sIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFdURjo6U2hhcmVkVGFzazx2b2lkKEpT
Qzo6TGlua0J1ZmZlciYpPiA+ID4sIFdURjo6RmFzdE1hbGxvYz4+ID0ge21fYnVmZmVyID0gMHg3
ZmYwZTgwMWVjNjAsIG1fY2FwYWNpdHkgPSAyMjA5MTI1MTUyLCBtX3NpemUgPSAzMjc1MX0sIDxO
byBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fSwgbV9sYXRlTGlua1Rhc2tzID0gezxX
VEY6OlZlY3RvckJ1ZmZlcjxXVEY6OlJlZlB0cjxXVEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6Okxp
bmtCdWZmZXImKT4sIFdURjo6UmF3UHRyVHJhaXRzPFdURjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6
TGlua0J1ZmZlciYpPiA+LCBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxXVEY6OlNoYXJlZFRh
c2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiA+LCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8
V1RGOjpWZWN0b3JCdWZmZXJCYXNlPFdURjo6UmVmUHRyPFdURjo6U2hhcmVkVGFzazx2b2lkKEpT
Qzo6TGlua0J1ZmZlciYpPiwgV1RGOjpSYXdQdHJUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQo
SlNDOjpMaW5rQnVmZmVyJik+ID4sIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFdURjo6U2hh
cmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+ID4sIFdURjo6RmFzdE1hbGxvYz4+ID0g
e21fYnVmZmVyID0gMHgyMDAsIG1fY2FwYWNpdHkgPSAxMDQ3OTgwOTg4LCBtX3NpemUgPSAzMjc1
M30sIDxObyBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fSwgbV9tYWluVGhyZWFkRmlu
YWxpemF0aW9uVGFza3MgPSB7PFdURjo6VmVjdG9yQnVmZmVyPFdURjo6UmVmUHRyPFdURjo6U2hh
cmVkVGFzazx2b2lkKCk+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZCgp
PiA+LCBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZCgpPiA+
ID4sIDAsIFdURjo6RmFzdE1hbGxvYz4+ID0gezxXVEY6OlZlY3RvckJ1ZmZlckJhc2U8V1RGOjpS
ZWZQdHI8V1RGOjpTaGFyZWRUYXNrPHZvaWQoKT4sIFdURjo6UmF3UHRyVHJhaXRzPFdURjo6U2hh
cmVkVGFzazx2b2lkKCk+ID4sIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFdURjo6U2hhcmVk
VGFzazx2b2lkKCk+ID4gPiwgV1RGOjpGYXN0TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDdmZjBl
ODAxZWM2MCwgbV9jYXBhY2l0eSA9IDEwNDgwNTI4MTIsIG1fc2l6ZSA9IDMyNzUzfSwgPE5vIGRh
dGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59fQojMTAgMHgwMDAwN2ZmMTNkZjE0YTI2IGlu
IEpTQzo6RlRMOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKEpTQzo6Vk0mKSAodm09
PG9wdGltaXplZCBvdXQ+KSBhdCBXVEYvSGVhZGVycy93dGYvUHRyVGFnLmg6MzA4CiMxMSAweDAw
MDA3ZmYxM2UwYWYzOWUgaW4gb3BlcmF0b3IoKSAoX19jbG9zdXJlPTxzeW50aGV0aWMgcG9pbnRl
cj4pIGF0IC4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcDoxNzAKICAg
ICAgICBsb2NrZXIgPSB7PFdURjo6QWJzdHJhY3RMb2NrZXI+ID0gezxObyBkYXRhIGZpZWxkcz59
LCBtX2xvY2thYmxlID0gMHg3ZmYxMzZhYWJmNDB9CiAgICAgICAgY29kZVJlZiA9IHs8SlNDOjpN
YWNyb0Fzc2VtYmxlckNvZGVSZWZCYXNlPiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgbV9jb2RlUHRy
ID0gezxKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2U+ID0gezxObyBkYXRhIGZpZWxkcz59
LCBtX3ZhbHVlID0gMHg3ZmVmODNhYzk2MzB9LCBtX2V4ZWN1dGFibGVNZW1vcnkgPSB7bV9wdHIg
PSAweDdmZjEzZTAxODgwNyA8SlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxvY2F0ZSh1bnNp
Z25lZCBsb25nLCBKU0M6OkpJVENvbXBpbGF0aW9uRWZmb3J0KSszMTE+fX0KICAgICAgICBuZWVk
c0Nyb3NzTW9kaWZ5aW5nQ29kZUZlbmNlID0gPG9wdGltaXplZCBvdXQ+CiAgICAgICAgYWRkUmVz
dWx0ID0ge2l0ZXJhdG9yID0gezxzdGQ6Oml0ZXJhdG9yPHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90
YWcsIFdURjo6S2V5VmFsdWVQYWlyPEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPChXVEY6OlB0
clRhZykyNjEyOT4gKCopKEpTQzo6Vk0mKSwgSlNDOjpKSVRUaHVua3M6OkVudHJ5PiwgbG9uZywg
V1RGOjpLZXlWYWx1ZVBhaXI8SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY8KFdURjo6UHRyVGFn
KTI2MTI5PiAoKikoSlNDOjpWTSYpLCBKU0M6OkpJVFRodW5rczo6RW50cnk+KiwgV1RGOjpLZXlW
YWx1ZVBhaXI8SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY8KFdURjo6UHRyVGFnKTI2MTI5PiAo
KikoSlNDOjpWTSYpLCBKU0M6OkpJVFRodW5rczo6RW50cnk+Jj4+ID0gezxObyBkYXRhIGZpZWxk
cz59LCBtX2l0ZXJhdG9yID0gezxzdGQ6Oml0ZXJhdG9yPHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90
YWcsIFdURjo6S2V5VmFsdWVQYWlyPEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPChXVEY6OlB0
clRhZykyNjEyOT4gKCopKEpTQzo6Vk0mKSwgSlNDOjpKSVRUaHVua3M6OkVudHJ5PiwgbG9uZywg
V1RGOjpLZXlWYWx1ZVBhaXI8SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY8KFdURjo6UHRyVGFn
KTI2MTI5PiAoKikoSlNDOjpWTSYpLCBKU0M6OkpJVFRodW5rczo6RW50cnk+IGNvbnN0KiwgV1RG
OjpLZXlWYWx1ZVBhaXI8SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY8KFdURjo6UHRyVGFnKTI2
MTI5PiAoKikoSlNDOjpWTSYpLCBKU0M6OkpJVFRodW5rczo6RW50cnk+IGNvbnN0Jj4+ID0gezxO
byBkYXRhIGZpZWxkcz59LCBtX3Bvc2l0aW9uID0gMHg5LCBtX2VuZFBvc2l0aW9uID0gMHg3ZmYx
M2U3ZWYzZDggPGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKHN0ZDo6dW5pcXVlX2xv
Y2s8Ym1hbGxvYzo6TXV0ZXg+JiwgdW5zaWduZWQgbG9uZywgc3RkOjphcnJheTxibWFsbG9jOjpM
aXN0PGJtYWxsb2M6OlNtYWxsUGFnZT4sIDExMnVsPiYsIGJtYWxsb2M6OkZhaWx1cmVBY3Rpb24p
KzQwPn19LCBpc05ld0VudHJ5ID0gMjI0fQojMTIgSlNDOjpKSVRUaHVua3M6OmN0aVN0dWJJbXBs
PEpTQzo6SklUVGh1bmtzOjpjdGlTdHViKEpTQzo6Vk0mLCBKU0M6OlRodW5rR2VuZXJhdG9yKTo6
PGxhbWJkYSgpPiA+KEpTQzo6VGh1bmtHZW5lcmF0b3IsIHN0cnVjdCB7Li4ufSkgKHRoaXM9MHg3
ZmYxMzZhYWJmMjgsIGtleT08b3B0aW1pemVkIG91dD4sIGdlbmVyYXRlVGh1bms9Li4uKSBhdCAu
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHA6MTU5CiAgICAgICAgbG9j
a2VyID0gezxXVEY6OkFic3RyYWN0TG9ja2VyPiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgbV9sb2Nr
YWJsZSA9IDB4N2ZmMTM2YWFiZjQwfQogICAgICAgIGNvZGVSZWYgPSB7PEpTQzo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmQmFzZT4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIG1fY29kZVB0ciA9IHs8SlND
OjpNYWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlPiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgbV92YWx1
ZSA9IDB4N2ZlZjgzYWM5NjMwfSwgbV9leGVjdXRhYmxlTWVtb3J5ID0ge21fcHRyID0gMHg3ZmYx
M2UwMTg4MDcgPEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUodW5zaWduZWQgbG9u
ZywgSlNDOjpKSVRDb21waWxhdGlvbkVmZm9ydCkrMzExPn19CiAgICAgICAgbmVlZHNDcm9zc01v
ZGlmeWluZ0NvZGVGZW5jZSA9IDxvcHRpbWl6ZWQgb3V0PgogICAgICAgIGFkZFJlc3VsdCA9IHtp
dGVyYXRvciA9IHs8c3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBXVEY6
OktleVZhbHVlUGFpcjxKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZjwoV1RGOjpQdHJUYWcpMjYx
Mjk+ICgqKShKU0M6OlZNJiksIEpTQzo6SklUVGh1bmtzOjpFbnRyeT4sIGxvbmcsIFdURjo6S2V5
VmFsdWVQYWlyPEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPChXVEY6OlB0clRhZykyNjEyOT4g
KCopKEpTQzo6Vk0mKSwgSlNDOjpKSVRUaHVua3M6OkVudHJ5PiosIFdURjo6S2V5VmFsdWVQYWly
PEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPChXVEY6OlB0clRhZykyNjEyOT4gKCopKEpTQzo6
Vk0mKSwgSlNDOjpKSVRUaHVua3M6OkVudHJ5PiY+PiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgbV9p
dGVyYXRvciA9IHs8c3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBXVEY6
OktleVZhbHVlUGFpcjxKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZjwoV1RGOjpQdHJUYWcpMjYx
Mjk+ICgqKShKU0M6OlZNJiksIEpTQzo6SklUVGh1bmtzOjpFbnRyeT4sIGxvbmcsIFdURjo6S2V5
VmFsdWVQYWlyPEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPChXVEY6OlB0clRhZykyNjEyOT4g
KCopKEpTQzo6Vk0mKSwgSlNDOjpKSVRUaHVua3M6OkVudHJ5PiBjb25zdCosIFdURjo6S2V5VmFs
dWVQYWlyPEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPChXVEY6OlB0clRhZykyNjEyOT4gKCop
KEpTQzo6Vk0mKSwgSlNDOjpKSVRUaHVua3M6OkVudHJ5PiBjb25zdCY+PiA9IHs8Tm8gZGF0YSBm
aWVsZHM+fSwgbV9wb3NpdGlvbiA9IDB4OSwgbV9lbmRQb3NpdGlvbiA9IDB4N2ZmMTNlN2VmM2Q4
IDxibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPGJtYWxs
b2M6Ok11dGV4PiYsIHVuc2lnbmVkIGxvbmcsIHN0ZDo6YXJyYXk8Ym1hbGxvYzo6TGlzdDxibWFs
bG9jOjpTbWFsbFBhZ2U+LCAxMTJ1bD4mLCBibWFsbG9jOjpGYWlsdXJlQWN0aW9uKSs0MD59fSwg
aXNOZXdFbnRyeSA9IDIyNH0KIzEzIDB4MDAwMDdmZjEzZTBhZjVjMiBpbiBKU0M6OkpJVFRodW5r
czo6Y3RpU3R1YihKU0M6OlZNJiwgSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY8KFdURjo6UHRy
VGFnKTI2MTI5PiAoKikoSlNDOjpWTSYpKSAodGhpcz08b3B0aW1pemVkIG91dD4sIHZtPTxvcHRp
bWl6ZWQgb3V0PiwgZ2VuZXJhdG9yPTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwOjE2OQojMTQgMHgwMDAwN2ZmMTNlNTI3ZjUyIGlu
IEpTQzo6Vk06OmdldENUSVN0dWIoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWY8KFdURjo6UHRy
VGFnKTI2MTI5PiAoKikoSlNDOjpWTSYpKSAodGhpcz08b3B0aW1pemVkIG91dD4sIGdlbmVyYXRv
cj08b3B0aW1pemVkIG91dD4pIGF0IC91c3IvaW5jbHVkZS9jKysvMTEuMS4wL2JpdHMvdW5pcXVl
X3B0ci5oOjE3MwojMTUgMHgwMDAwN2ZmMTNkZWZjZTg0IGluIG9wZXJhdG9yKCkgKGxpbmtCdWZm
ZXI9PG9wdGltaXplZCBvdXQ+LCBfX2Nsb3N1cmU9PG9wdGltaXplZCBvdXQ+KSBhdCAuLi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRIYW5kbGUuY3BwOjUyCiMxNiBXVEY6OlNo
YXJlZFRhc2tGdW5jdG9yPHZvaWQoSlNDOjpMaW5rQnVmZmVyJiksIEpTQzo6RlRMOjpPU1JFeGl0
SGFuZGxlOjplbWl0RXhpdFRodW5rKEpTQzo6RlRMOjpTdGF0ZSYsIEpTQzo6Q0NhbGxIZWxwZXJz
Jik6OjxsYW1iZGEoSlNDOjpMaW5rQnVmZmVyJik+ID46OnJ1bihKU0M6OkxpbmtCdWZmZXIgJikg
KHRoaXM9MHg3ZmYwNDQ2Nzk1YTAsIGFyZ3VtZW50cyMwPS4uLikgYXQgV1RGL0hlYWRlcnMvd3Rm
L1NoYXJlZFRhc2suaDo5MQojMTcgMHgwMDAwN2ZmMTNkNzg2OTAwIGluIEpTQzo6TGlua0J1ZmZl
cjo6cGVyZm9ybUZpbmFsaXphdGlvbigpICh0aGlzPXRoaXNAZW50cnk9MHg3ZmYwODQwMDdmYTAp
IGF0IC4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6NDc2
CiAgICAgICAgdGFzayA9IEAweDdmZjA0NDZkYzAyMDoge21fcHRyID0gMHg3ZmYwNDQ2Nzk1YTB9
CiAgICAgICAgX19mb3JfcmFuZ2UgPSBAMHg3ZmYwODQwMDdmYzA6IHs8V1RGOjpWZWN0b3JCdWZm
ZXI8V1RGOjpSZWZQdHI8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+LCBX
VEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4g
PiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpM
aW5rQnVmZmVyJik+ID4gPiwgMCwgV1RGOjpGYXN0TWFsbG9jPj4gPSB7PFdURjo6VmVjdG9yQnVm
ZmVyQmFzZTxXVEY6OlJlZlB0cjxXVEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXIm
KT4sIFdURjo6UmF3UHRyVHJhaXRzPFdURjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZl
ciYpPiA+LCBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZChK
U0M6OkxpbmtCdWZmZXImKT4gPiA+LCBXVEY6OkZhc3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4
N2ZmMDQ0NmRjMDAwLCBtX2NhcGFjaXR5ID0gMTYsIG1fc2l6ZSA9IDExfSwgPE5vIGRhdGEgZmll
bGRzPn0sIDxObyBkYXRhIGZpZWxkcz59CiAgICAgICAgX19mb3JfYmVnaW4gPSAweDdmZjA0NDZk
YzAyMAogICAgICAgIF9fZm9yX2VuZCA9IDB4N2ZmMDQ0NmRjMDU4CiMxOCAweDAwMDA3ZmYxM2Q3
ODY5NzkgaW4gSlNDOjpMaW5rQnVmZmVyOjpmaW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHlJ
bXBsKCkgKHRoaXM9MHg3ZmYwODQwMDdmYTApIGF0IC4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6NzEKIzE5IDB4MDAwMDdmZjEzZGYwMzNmOCBpbiBKU0M6
OkxpbmtCdWZmZXI6OmZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseTwoV1RGOjpQdHJUYWcp
MzU3PigpICh0aGlzPTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmg6MzEwCiAgICAgICAgZHVtcERpc2Fzc2VtYmx5ID0gZmFs
c2UKICAgICAgICBiM0NvZGVSZWYgPSB7PEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmQmFzZT4g
PSB7PE5vIGRhdGEgZmllbGRzPn0sIG1fY29kZVB0ciA9IHs8SlNDOjpNYWNyb0Fzc2VtYmxlckNv
ZGVQdHJCYXNlPiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgbV92YWx1ZSA9IDB4N2ZmMDg0MDI0N2Yw
fSwgbV9leGVjdXRhYmxlTWVtb3J5ID0ge21fcHRyID0gMHg3ZmYwNDQ2ZWY0MjB9fQogICAgICAg
IGFyaXR5Q2hlY2tDb2RlUmVmID0gezxKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZkJhc2U+ID0g
ezxObyBkYXRhIGZpZWxkcz59LCBtX2NvZGVQdHIgPSB7PEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyQmFzZT4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIG1fdmFsdWUgPSAweDdmZjA0NDZlZjQ1MH0s
IG1fZXhlY3V0YWJsZU1lbW9yeSA9IHttX3B0ciA9IDB4N2ZmMDg0MDA4MWY4fX0KICAgICAgICBn
cmFwaCA9IDxvcHRpbWl6ZWQgb3V0PgogICAgICAgIGNvZGVCbG9jayA9IDB4N2ZmMDY0MjZjYmIw
CiAgICAgICAgdm0gPSA8b3B0aW1pemVkIG91dD4KICAgICAgICBqaXQgPSB7PEpTQzo6QXNzZW1i
bHlIZWxwZXJzPiA9IHs8SlNDOjpNYWNyb0Fzc2VtYmxlcj4gPSB7PEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZfNjQ+ID0gezxKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uPiA9IHs8SlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEpTQzo6WDg2QXNzZW1ibGVyPj4gPSB7PEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlckJhc2U+ID0gezxObyBkYXRhIGZpZWxkcz59LCBtX3JhbmRvbVNvdXJjZUlz
SW5pdGlhbGl6ZWQgPSBmYWxzZSwgbV9yYW5kb21Tb3VyY2UgPSB7bV9zZWVkID0gMCwgbV9sb3cg
PSAxLCBtX2hpZ2ggPSA4Mzg4NjcyfSwgbV9hc3NlbWJsZXIgPSB7bV9mb3JtYXR0ZXIgPSB7c3Rh
dGljIG1heEluc3RydWN0aW9uU2l6ZSA9IDE2LCBtX2J1ZmZlciA9IHttX3N0b3JhZ2UgPSB7c3Rh
dGljIElubGluZUNhcGFjaXR5ID0gMTI4LCBtX2J1ZmZlciA9IDB4N2ZmMTM2OGMzNjAwICJcMjEz
dCRcMDMwXDIwM1wzNzZcMDAzXDAxN1wyMDMiLCBtX2lubGluZUJ1ZmZlciA9ICJVSFwyMTFcMzQ1
SFwyMTVlXDMyMEhcMjcwXDI2MFwzMTMmZFwzNjBcMTc3XDAwMFwwMDBIXDIxMUVcMDIwSFwyMTVc
MjA1cFwzNzdcMzc3XDM3N0lcMjczUF1cMzAxXDA2NFwzNjFcMTc3XDAwMFwwMDBJOVwwMDNcMDE3
XDIwN1wwMDBcMDAwXDAwMFwwMDBIXDIxM304SFwyNzBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBc
Mzc2XDM3N0hcMjA1XDM3MFwwMTdcMjA1XDAwMFwwMDBcMDAwXDAwMExcMjEzRTBMXDIwNVwzMDBc
MDE3XDIwNVwwMDBcMDAwXDAwMFwwMDBBXDIwMHhcMDA1XDAyNlwwMTdcMjAyXDAwMFwwMDBcMDAw
XDAwMFwyMDE/c15cMDAwXDAwMFwwMTdcMjA1XDAwMFwwMDBcMDAwXDAwMEhcMjEzV1xiXDM2Nlwz
MDJcMDAxaURcMzYwXDE3N1wwMDBcMDAwQHJcMDAzXDIwNFwzNjBcMTc3XDAwMCIsIG1fY2FwYWNp
dHkgPSA2NDh9LCBtX2luZGV4ID0gOTZ9fSwgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQgPSAtMjE0
NzQ4MzY0OCwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSAtMjE0NzQ4MzY0OH0sIG1f
dGVtcFJlZ2lzdGVyc1ZhbGlkQml0cyA9IDAsIG1fYWxsb3dTY3JhdGNoUmVnaXN0ZXIgPSB0cnVl
LCBtX2xpbmtUYXNrcyA9IHs8V1RGOjpWZWN0b3JCdWZmZXI8V1RGOjpSZWZQdHI8V1RGOjpTaGFy
ZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNo
YXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZU
cmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4gPiwgMCwgV1RG
OjpGYXN0TWFsbG9jPj4gPSB7PFdURjo6VmVjdG9yQnVmZmVyQmFzZTxXVEY6OlJlZlB0cjxXVEY6
OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4sIFdURjo6UmF3UHRyVHJhaXRzPFdU
Rjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+LCBXVEY6OkRlZmF1bHRSZWZE
ZXJlZlRyYWl0czxXVEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiA+LCBX
VEY6OkZhc3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4MCwgbV9jYXBhY2l0eSA9IDAsIG1fc2l6
ZSA9IDB9LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIG1fbGF0ZUxpbmtU
YXNrcyA9IHs8V1RGOjpWZWN0b3JCdWZmZXI8V1RGOjpSZWZQdHI8V1RGOjpTaGFyZWRUYXNrPHZv
aWQoSlNDOjpMaW5rQnVmZmVyJik+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJlZFRhc2s8
dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM8V1RG
OjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4gPiwgMCwgV1RGOjpGYXN0TWFs
bG9jPj4gPSB7PFdURjo6VmVjdG9yQnVmZmVyQmFzZTxXVEY6OlJlZlB0cjxXVEY6OlNoYXJlZFRh
c2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4sIFdURjo6UmF3UHRyVHJhaXRzPFdURjo6U2hhcmVk
VGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+LCBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0
czxXVEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiA+LCBXVEY6OkZhc3RN
YWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4MCwgbV9jYXBhY2l0eSA9IDAsIG1fc2l6ZSA9IDB9LCA8
Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn19LCBzdGF0aWMgc19zY3JhdGNoUmVn
aXN0ZXIgPSBKU0M6Olg4NlJlZ2lzdGVyczo6cjExLCBzdGF0aWMgRG91YmxlQ29uZGl0aW9uQml0
SW52ZXJ0ID0gMTYsIHN0YXRpYyBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsID0gMzIsIHN0YXRp
YyBEb3VibGVDb25kaXRpb25CaXRzID0gNDgsIHN0YXRpYyBzdGFja1BvaW50ZXJSZWdpc3RlciA9
IEpTQzo6WDg2UmVnaXN0ZXJzOjplc3AsIHN0YXRpYyBmcmFtZVBvaW50ZXJSZWdpc3RlciA9IEpT
Qzo6WDg2UmVnaXN0ZXJzOjplYnB9LCBzdGF0aWMgbnVtR1BScyA9IDE2LCBzdGF0aWMgbnVtRlBS
cyA9IDE2LCBzdGF0aWMgSW52YWxpZEdQUlJlZyA9IEpTQzo6WDg2UmVnaXN0ZXJzOjpJbnZhbGlk
R1BSUmVnfSwgc3RhdGljIEJsaW5kaW5nTW9kdWx1cyA9IDY0fSwgbV9jb2RlQmxvY2sgPSAweDdm
ZjA2NDI2Y2JiMCwgbV9iYXNlbGluZUNvZGVCbG9jayA9IDB4N2ZmMDY0MmNlZWMwfSwgPE5vIGRh
dGEgZmllbGRzPn0KICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjp1bmlxdWVfcHRyPGNsYXNzIEpT
Qzo6TGlua0J1ZmZlcj4gPSB7Z2V0KCkgPSAweDdmZjA0NDY3MjAwMH0KICAgICAgICBmcmFtZSA9
IHtiYXNlID0gSlNDOjpYODZSZWdpc3RlcnM6OmVzcCwgb2Zmc2V0ID0gLTh9CiMyMCBKU0M6OkZU
TDo6bGluayhKU0M6OkZUTDo6U3RhdGUmKSAoc3RhdGU9Li4uKSBhdCAuLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwOjE2NQogICAgICAgIGR1bXBEaXNhc3NlbWJseSA9IGZh
bHNlCiAgICAgICAgYjNDb2RlUmVmID0gezxKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZkJhc2U+
ID0gezxObyBkYXRhIGZpZWxkcz59LCBtX2NvZGVQdHIgPSB7PEpTQzo6TWFjcm9Bc3NlbWJsZXJD
b2RlUHRyQmFzZT4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIG1fdmFsdWUgPSAweDdmZjA4NDAyNDdm
MH0sIG1fZXhlY3V0YWJsZU1lbW9yeSA9IHttX3B0ciA9IDB4N2ZmMDQ0NmVmNDIwfX0KICAgICAg
ICBhcml0eUNoZWNrQ29kZVJlZiA9IHs8SlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWZCYXNlPiA9
IHs8Tm8gZGF0YSBmaWVsZHM+fSwgbV9jb2RlUHRyID0gezxKU0M6Ok1hY3JvQXNzZW1ibGVyQ29k
ZVB0ckJhc2U+ID0gezxObyBkYXRhIGZpZWxkcz59LCBtX3ZhbHVlID0gMHg3ZmYwNDQ2ZWY0NTB9
LCBtX2V4ZWN1dGFibGVNZW1vcnkgPSB7bV9wdHIgPSAweDdmZjA4NDAwODFmOH19CiAgICAgICAg
Z3JhcGggPSA8b3B0aW1pemVkIG91dD4KICAgICAgICBjb2RlQmxvY2sgPSAweDdmZjA2NDI2Y2Ji
MAogICAgICAgIHZtID0gPG9wdGltaXplZCBvdXQ+CiAgICAgICAgaml0ID0gezxKU0M6OkFzc2Vt
Ymx5SGVscGVycz4gPSB7PEpTQzo6TWFjcm9Bc3NlbWJsZXI+ID0gezxKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2XzY0PiA9IHs8SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbj4gPSB7PEpTQzo6QWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxKU0M6Olg4NkFzc2VtYmxlcj4+ID0gezxKU0M6OkFic3RyYWN0
TWFjcm9Bc3NlbWJsZXJCYXNlPiA9IHs8Tm8gZGF0YSBmaWVsZHM+fSwgbV9yYW5kb21Tb3VyY2VJ
c0luaXRpYWxpemVkID0gZmFsc2UsIG1fcmFuZG9tU291cmNlID0ge21fc2VlZCA9IDAsIG1fbG93
ID0gMSwgbV9oaWdoID0gODM4ODY3Mn0sIG1fYXNzZW1ibGVyID0ge21fZm9ybWF0dGVyID0ge3N0
YXRpYyBtYXhJbnN0cnVjdGlvblNpemUgPSAxNiwgbV9idWZmZXIgPSB7bV9zdG9yYWdlID0ge3N0
YXRpYyBJbmxpbmVDYXBhY2l0eSA9IDEyOCwgbV9idWZmZXIgPSAweDdmZjEzNjhjMzYwMCAiXDIx
M3QkXDAzMFwyMDNcMzc2XDAwM1wwMTdcMjAzIiwgbV9pbmxpbmVCdWZmZXIgPSAiVUhcMjExXDM0
NUhcMjE1ZVwzMjBIXDI3MFwyNjBcMzEzJmRcMzYwXDE3N1wwMDBcMDAwSFwyMTFFXDAyMEhcMjE1
XDIwNXBcMzc3XDM3N1wzNzdJXDI3M1BdXDMwMVwwNjRcMzYxXDE3N1wwMDBcMDAwSTlcMDAzXDAx
N1wyMDdcMDAwXDAwMFwwMDBcMDAwSFwyMTN9OEhcMjcwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAw
XDM3NlwzNzdIXDIwNVwzNzBcMDE3XDIwNVwwMDBcMDAwXDAwMFwwMDBMXDIxM0UwTFwyMDVcMzAw
XDAxN1wyMDVcMDAwXDAwMFwwMDBcMDAwQVwyMDB4XDAwNVwwMjZcMDE3XDIwMlwwMDBcMDAwXDAw
MFwwMDBcMjAxP3NeXDAwMFwwMDBcMDE3XDIwNVwwMDBcMDAwXDAwMFwwMDBIXDIxM1dcYlwzNjZc
MzAyXDAwMWlEXDM2MFwxNzdcMDAwXDAwMEByXDAwM1wyMDRcMzYwXDE3N1wwMDAiLCBtX2NhcGFj
aXR5ID0gNjQ4fSwgbV9pbmRleCA9IDk2fX0sIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gLTIx
NDc0ODM2NDgsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gLTIxNDc0ODM2NDh9LCBt
X3RlbXBSZWdpc3RlcnNWYWxpZEJpdHMgPSAwLCBtX2FsbG93U2NyYXRjaFJlZ2lzdGVyID0gdHJ1
ZSwgbV9saW5rVGFza3MgPSB7PFdURjo6VmVjdG9yQnVmZmVyPFdURjo6UmVmUHRyPFdURjo6U2hh
cmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiwgV1RGOjpSYXdQdHJUcmFpdHM8V1RGOjpT
aGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4sIFdURjo6RGVmYXVsdFJlZkRlcmVm
VHJhaXRzPFdURjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+ID4sIDAsIFdU
Rjo6RmFzdE1hbGxvYz4+ID0gezxXVEY6OlZlY3RvckJ1ZmZlckJhc2U8V1RGOjpSZWZQdHI8V1RG
OjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+LCBXVEY6OlJhd1B0clRyYWl0czxX
VEY6OlNoYXJlZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiwgV1RGOjpEZWZhdWx0UmVm
RGVyZWZUcmFpdHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4gPiwg
V1RGOjpGYXN0TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDAsIG1fY2FwYWNpdHkgPSAwLCBtX3Np
emUgPSAwfSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCBtX2xhdGVMaW5r
VGFza3MgPSB7PFdURjo6VmVjdG9yQnVmZmVyPFdURjo6UmVmUHRyPFdURjo6U2hhcmVkVGFzazx2
b2lkKEpTQzo6TGlua0J1ZmZlciYpPiwgV1RGOjpSYXdQdHJUcmFpdHM8V1RGOjpTaGFyZWRUYXNr
PHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4sIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFdU
Rjo6U2hhcmVkVGFzazx2b2lkKEpTQzo6TGlua0J1ZmZlciYpPiA+ID4sIDAsIFdURjo6RmFzdE1h
bGxvYz4+ID0gezxXVEY6OlZlY3RvckJ1ZmZlckJhc2U8V1RGOjpSZWZQdHI8V1RGOjpTaGFyZWRU
YXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+LCBXVEY6OlJhd1B0clRyYWl0czxXVEY6OlNoYXJl
ZFRhc2s8dm9pZChKU0M6OkxpbmtCdWZmZXImKT4gPiwgV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8V1RGOjpTaGFyZWRUYXNrPHZvaWQoSlNDOjpMaW5rQnVmZmVyJik+ID4gPiwgV1RGOjpGYXN0
TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDAsIG1fY2FwYWNpdHkgPSAwLCBtX3NpemUgPSAwfSwg
PE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59fSwgc3RhdGljIHNfc2NyYXRjaFJl
Z2lzdGVyID0gSlNDOjpYODZSZWdpc3RlcnM6OnIxMSwgc3RhdGljIERvdWJsZUNvbmRpdGlvbkJp
dEludmVydCA9IDE2LCBzdGF0aWMgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCA9IDMyLCBzdGF0
aWMgRG91YmxlQ29uZGl0aW9uQml0cyA9IDQ4LCBzdGF0aWMgc3RhY2tQb2ludGVyUmVnaXN0ZXIg
PSBKU0M6Olg4NlJlZ2lzdGVyczo6ZXNwLCBzdGF0aWMgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBK
U0M6Olg4NlJlZ2lzdGVyczo6ZWJwfSwgc3RhdGljIG51bUdQUnMgPSAxNiwgc3RhdGljIG51bUZQ
UnMgPSAxNiwgc3RhdGljIEludmFsaWRHUFJSZWcgPSBKU0M6Olg4NlJlZ2lzdGVyczo6SW52YWxp
ZEdQUlJlZ30sIHN0YXRpYyBCbGluZGluZ01vZHVsdXMgPSA2NH0sIG1fY29kZUJsb2NrID0gMHg3
ZmYwNjQyNmNiYjAsIG1fYmFzZWxpbmVDb2RlQmxvY2sgPSAweDdmZjA2NDJjZWVjMH0sIDxObyBk
YXRhIGZpZWxkcz59CiAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6dW5pcXVlX3B0cjxjbGFzcyBK
U0M6OkxpbmtCdWZmZXI+ID0ge2dldCgpID0gMHg3ZmYwNDQ2NzIwMDB9CiAgICAgICAgZnJhbWUg
PSB7YmFzZSA9IEpTQzo6WDg2UmVnaXN0ZXJzOjplc3AsIG9mZnNldCA9IC04fQojMjEgMHgwMDAw
N2ZmMTNkYzQ3OTAzIGluIEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkgKHRo
aXM9MHg3ZmYwODQwNDNjNDApIGF0IC4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHA6NDc2CiAgICAgICAgc2FmZXBvaW50UmVzdWx0ID0ge21fZGlkR2V0Q2FuY2VsbGVkID0g
ZmFsc2UsIG1fd2FzQ2hlY2tlZCA9IHRydWV9CiAgICAgICAgc3RhdGUgPSB7Z3JhcGggPSBAMHg3
ZmVmODNhYzk3ZTAsIHByb2MgPSBzdGQ6OnVuaXF1ZV9wdHI8Y2xhc3MgSlNDOjpCMzo6UHJvY2Vk
dXJlPiA9IHtnZXQoKSA9IDB4N2ZmMDg0MDZkYWY4fSwgYWxsb2NhdGlvbkZhaWxlZCA9IGZhbHNl
LCBqaXRDb2RlID0ge21fcHRyID0gMHg3ZmYwNDQ2ZGIwMDB9LCBnZW5lcmF0ZWRGdW5jdGlvbiA9
IHs8SlNDOjpDb2RlTG9jYXRpb25Db21tb248KFdURjo6UHRyVGFnKTM1Nz4+ID0gezxKU0M6Ok1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjwoV1RGOjpQdHJUYWcpMzU3Pj4gPSB7PEpTQzo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyQmFzZT4gPSB7PE5vIGRhdGEgZmllbGRzPn0sIG1fdmFsdWUgPSAweDdmZjBl
ODAxZWM2MH0sIDxObyBkYXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fSwgZmluYWxpemVy
ID0gMHg3ZmYwODQwMWM0MDAsIGRlZmF1bHRFeGNlcHRpb25IYW5kbGUgPSB7bV9wdHIgPSAweDB9
LCBleGNlcHRpb25IYW5kbGVyID0ge21fZGF0YSA9IHttX3B0ciA9IDB4N2ZmMDQ0NjkyMmQ4fX0s
IGNhcHR1cmVkVmFsdWUgPSAweDdmZjA0NDZmMDE2OH0KICAgICAgICBkZmcgPSB7PEpTQzo6U2Nh
bm5hYmxlPiA9IHtfdnB0ci5TY2FubmFibGUgPSAweDdmZjEzZWIzMjM3MCA8dnRhYmxlIGZvciBK
U0M6OkRGRzo6R3JhcGgrNDg+fSwgbV9zdGFja0NoZWNrZXIgPSB7c3RhdGljIGRlZmF1bHRSZXNl
cnZlZFpvbmVTaXplID0gNjU1MzYsIG1fc3RhY2tMaW1pdCA9IDB4N2ZlZjgzMmRjMDAwfSwgbV92
bSA9IEAweDdmZjEzNGMwYTAwMCwgbV9wbGFuID0gQDB4N2ZmMDg0MDQzYzQwLCBtX2NvZGVCbG9j
ayA9IDB4N2ZmMDY0MjZjYmIwLCBtX3Byb2ZpbGVkQmxvY2sgPSAweDdmZjA2NDJjZWVjMCwgbV9i
bG9ja3MgPSB7PFdURjo6VmVjdG9yQnVmZmVyPFdURjo6UmVmUHRyPEpTQzo6REZHOjpCYXNpY0Js
b2NrLCBXVEY6OlJhd1B0clRyYWl0czxKU0M6OkRGRzo6QmFzaWNCbG9jaz4sIFdURjo6RGVmYXVs
dFJlZkRlcmVmVHJhaXRzPEpTQzo6REZHOjpCYXNpY0Jsb2NrPiA+LCA4LCBXVEY6OkZhc3RNYWxs
b2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZmZXJCYXNlPFdURjo6UmVmUHRyPEpTQzo6REZHOjpCYXNp
Y0Jsb2NrLCBXVEY6OlJhd1B0clRyYWl0czxKU0M6OkRGRzo6QmFzaWNCbG9jaz4sIFdURjo6RGVm
YXVsdFJlZkRlcmVmVHJhaXRzPEpTQzo6REZHOjpCYXNpY0Jsb2NrPiA+LCBXVEY6OkZhc3RNYWxs
b2M+PiA9IHttX2J1ZmZlciA9IDB4N2ZlZjgzYWM5ODIwLCBtX2NhcGFjaXR5ID0gOCwgbV9zaXpl
ID0gMH0sIG1faW5saW5lQnVmZmVyID0ge3tfX2RhdGEgPSAiXDAwMFwwMDBcMDAwXDAwMFwwMDBc
MDAwXDAwMCIsIF9fYWxpZ24gPSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gIlwwMDBc
MDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxkcz59fSwg
e19fZGF0YSA9ICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIiwgX19hbGlnbiA9IHs8Tm8g
ZGF0YSBmaWVsZHM+fX0sIHtfX2RhdGEgPSAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCIs
IF9fYWxpZ24gPSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gImBcMzQ0XDAwMFwzNTBc
MzYwXDE3N1wwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxkcz59fSwge19fZGF0YSA9ICJc
MDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIiwgX19hbGlnbiA9IHs8Tm8gZGF0YSBmaWVsZHM+
fX0sIHtfX2RhdGEgPSAicDdaXDMwNFwzNjBcMTc3XDAwMCIsIF9fYWxpZ24gPSB7PE5vIGRhdGEg
ZmllbGRzPn19LCB7X19kYXRhID0gIlwyMDBcMzQ0XDAwMFwzNTBcMzYwXDE3N1wwMDAiLCBfX2Fs
aWduID0gezxObyBkYXRhIGZpZWxkcz59fX19LCA8Tm8gZGF0YSBmaWVsZHM+fSwgbV9yb290cyA9
IHs8V1RGOjpWZWN0b3JCdWZmZXI8SlNDOjpERkc6OkJhc2ljQmxvY2sqLCAxLCBXVEY6OkZhc3RN
YWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZmZXJCYXNlPEpTQzo6REZHOjpCYXNpY0Jsb2NrKiwg
V1RGOjpGYXN0TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDdmZWY4M2FjOTg3MCwgbV9jYXBhY2l0
eSA9IDEsIG1fc2l6ZSA9IDB9LCBtX2lubGluZUJ1ZmZlciA9IHt7X19kYXRhID0gIkByXDAwM1wy
MDRcMzYwXDE3N1wwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxkcz59fX19LCA8Tm8gZGF0
YSBmaWVsZHM+fSwgbV92YXJBcmdDaGlsZHJlbiA9IHs8V1RGOjpWZWN0b3JCdWZmZXI8SlNDOjpE
Rkc6OkVkZ2UsIDE2LCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZmZXJCYXNl
PEpTQzo6REZHOjpFZGdlLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4N2ZlZjgz
YWM5ODg4LCBtX2NhcGFjaXR5ID0gMTYsIG1fc2l6ZSA9IDB9LCBtX2lubGluZUJ1ZmZlciA9IHt7
X19kYXRhID0gIlwwMDB4XDMyNGhEXDM2MFwxNzciLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxk
cz59fSwge19fZGF0YSA9ICJcMDAwcFwzNTdoRFwzNjBcMTc3IiwgX19hbGlnbiA9IHs8Tm8gZGF0
YSBmaWVsZHM+fX0sIHtfX2RhdGEgPSAiXDAwMFwzMjBcMzIwaERcMzYwXDE3NyIsIF9fYWxpZ24g
PSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gIlwwMDBcYlwzMjJoRFwzNjBcMTc3Iiwg
X19hbGlnbiA9IHs8Tm8gZGF0YSBmaWVsZHM+fX0sIHtfX2RhdGEgPSAiXDMzMFwzNjN+PlwzNjFc
MTc3XDAwMCIsIF9fYWxpZ24gPSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gIlwwMDBc
MDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxkcz59fSwg
e19fZGF0YSA9ICJcMDAwRUVmXDI1MlwyMzNcMjEzIiwgPGluY29tcGxldGUgc2VxdWVuY2UgXDM2
Nz4sIF9fYWxpZ24gPSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gIlwwMDBcMzQwXDI1
N1wwNjZcMzYxXDE3N1wwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxkcz59fSwge19fZGF0
YSA9ICJcMDAwXDM2MFwyNjc+XDM2MVwxNzdcMDAwIiwgX19hbGlnbiA9IHs8Tm8gZGF0YSBmaWVs
ZHM+fX0sIHtfX2RhdGEgPSAiXDI0MFwyMzFcMjU0XDIwM1wzNTdcMTc3XDAwMCIsIF9fYWxpZ24g
PSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gIlwwMDFcMDAwXDAwMFwwMDBcMDAwXDAw
MFwwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxkcz59fSwge19fZGF0YSA9ICLMmlwyNTRc
MjAzXDM1N1wxNzdcMDAwIiwgX19hbGlnbiA9IHs8Tm8gZGF0YSBmaWVsZHM+fX0sIHtfX2RhdGEg
PSAiXGFcMjEwXDAwMT5cMzYxXDE3N1wwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZpZWxkcz59
fSwge19fZGF0YSA9ICJgXDIzMVwyNTRcMjAzXDM1N1wxNzdcMDAwIiwgX19hbGlnbiA9IHs8Tm8g
ZGF0YSBmaWVsZHM+fX0sIHtfX2RhdGEgPSAiXDIxNVwzNjd+PlwzNjFcMTc3XDAwMCIsIF9fYWxp
Z24gPSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gIlxiQlpcMzA0XDM2MFwxNzdcMDAw
IiwgX19hbGlnbiA9IHs8Tm8gZGF0YSBmaWVsZHM+fX19fSwgPE5vIGRhdGEgZmllbGRzPn0sIG1f
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzID0gezxXVEY6OlZlY3RvckJ1ZmZlcjxKU0M6OlVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlIGNvbnN0KiwgMCwgV1RGOjpGYXN0TWFsbG9jPj4gPSB7PFdURjo6
VmVjdG9yQnVmZmVyQmFzZTxKU0M6OlVubGlua2VkU2ltcGxlSnVtcFRhYmxlIGNvbnN0KiwgV1RG
OjpGYXN0TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDAsIG1fY2FwYWNpdHkgPSAwLCBtX3NpemUg
PSAwfSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCBtX3N3aXRjaEp1bXBU
YWJsZXMgPSB7PFdURjo6VmVjdG9yQnVmZmVyPEpTQzo6U2ltcGxlSnVtcFRhYmxlLCAwLCBXVEY6
OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZmZXJCYXNlPEpTQzo6U2ltcGxlSnVtcFRh
YmxlLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4MCwgbV9jYXBhY2l0eSA9IDAs
IG1fc2l6ZSA9IDB9LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIG1fdW5s
aW5rZWRTdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gezxXVEY6OlZlY3RvckJ1ZmZlcjxKU0M6OlVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlIGNvbnN0KiwgMCwgV1RGOjpGYXN0TWFsbG9jPj4gPSB7PFdU
Rjo6VmVjdG9yQnVmZmVyQmFzZTxKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlIGNvbnN0Kiwg
V1RGOjpGYXN0TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDAsIG1fY2FwYWNpdHkgPSAwLCBtX3Np
emUgPSAwfSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCBtX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMgPSB7PFdURjo6VmVjdG9yQnVmZmVyPEpTQzo6U3RyaW5nSnVtcFRhYmxl
LCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZmZXJCYXNlPEpTQzo6U3Ry
aW5nSnVtcFRhYmxlLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4MCwgbV9jYXBh
Y2l0eSA9IDAsIG1fc2l6ZSA9IDB9LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRz
Pn0sIG1fZnJvemVuVmFsdWVNYXAgPSB7bV9pbXBsID0ge3ttX3RhYmxlID0gMHg3ZmYwODQwNjY0
OTAsIG1fdGFibGVGb3JMTERCID0gMHg3ZmYwODQwNjY0OTB9fX0sIG1fZnJvemVuVmFsdWVzID0g
e21faGVhZCA9IDB4N2ZmMDg0MDExODQwfSwgbV91aW50MzJWYWx1ZXNJblVzZSA9IHs8V1RGOjpW
ZWN0b3JCdWZmZXI8dW5zaWduZWQgaW50LCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpW
ZWN0b3JCdWZmZXJCYXNlPHVuc2lnbmVkIGludCwgV1RGOjpGYXN0TWFsbG9jPj4gPSB7bV9idWZm
ZXIgPSAweDdmZjA4NDAxYzE0MCwgbV9jYXBhY2l0eSA9IDE2LCBtX3NpemUgPSAyfSwgPE5vIGRh
dGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCBtX3N0b3JhZ2VBY2Nlc3NEYXRhID0ge21f
aGVhZCA9IDB4MH0sIG1fcm9vdFRvQXJndW1lbnRzID0ge21faW1wbCA9IHt7bV90YWJsZSA9IDB4
MCwgbV90YWJsZUZvckxMREIgPSAweDB9fX0sIG1fYXJndW1lbnRGb3JtYXRzID0gezxXVEY6OlZl
Y3RvckJ1ZmZlcjxXVEY6OlZlY3RvcjxKU0M6OkRGRzo6Rmx1c2hGb3JtYXQsIDAsIFdURjo6Q3Jh
c2hPbk92ZXJmbG93LCAxNiwgV1RGOjpGYXN0TWFsbG9jPiwgMCwgV1RGOjpGYXN0TWFsbG9jPj4g
PSB7PFdURjo6VmVjdG9yQnVmZmVyQmFzZTxXVEY6OlZlY3RvcjxKU0M6OkRGRzo6Rmx1c2hGb3Jt
YXQsIDAsIFdURjo6Q3Jhc2hPbk92ZXJmbG93LCAxNiwgV1RGOjpGYXN0TWFsbG9jPiwgV1RGOjpG
YXN0TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDdmZjA4NDAxNDMwMCwgbV9jYXBhY2l0eSA9IDE2
LCBtX3NpemUgPSAxfSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59LCBtX3Zh
cmlhYmxlQWNjZXNzRGF0YSA9IHttX3NpemUgPSAzNSwgbV9zZWdtZW50cyA9IHs8V1RGOjpWZWN0
b3JCdWZmZXI8V1RGOjpTZWdtZW50ZWRWZWN0b3I8SlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0
YSwgMTY+OjpTZWdtZW50KiwgMCwgV1RGOjpGYXN0TWFsbG9jPj4gPSB7PFdURjo6VmVjdG9yQnVm
ZmVyQmFzZTxXVEY6OlNlZ21lbnRlZFZlY3RvcjxKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRh
LCAxNj46OlNlZ21lbnQqLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4N2ZmMDg0
MDcwZDgwLCBtX2NhcGFjaXR5ID0gMTYsIG1fc2l6ZSA9IDN9LCA8Tm8gZGF0YSBmaWVsZHM+fSwg
PE5vIGRhdGEgZmllbGRzPn19LCBtX2FyZ3VtZW50UG9zaXRpb25zID0ge21fc2l6ZSA9IDMsIG1f
c2VnbWVudHMgPSB7PFdURjo6VmVjdG9yQnVmZmVyPFdURjo6U2VnbWVudGVkVmVjdG9yPEpTQzo6
REZHOjpBcmd1bWVudFBvc2l0aW9uLCA4Pjo6U2VnbWVudCosIDAsIFdURjo6RmFzdE1hbGxvYz4+
ID0gezxXVEY6OlZlY3RvckJ1ZmZlckJhc2U8V1RGOjpTZWdtZW50ZWRWZWN0b3I8SlNDOjpERkc6
OkFyZ3VtZW50UG9zaXRpb24sIDg+OjpTZWdtZW50KiwgV1RGOjpGYXN0TWFsbG9jPj4gPSB7bV9i
dWZmZXIgPSAweDdmZjA4NDA3MGM4MCwgbV9jYXBhY2l0eSA9IDE2LCBtX3NpemUgPSAxfSwgPE5v
IGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59fSwgbV90cmFuc2l0aW9ucyA9IHttX2hl
YWQgPSAweDB9LCBtX2JyYW5jaERhdGEgPSB7bV9oZWFkID0gMHgwfSwgbV9zd2l0Y2hEYXRhID0g
e21faGVhZCA9IDB4MH0sIG1fbXVsdGlHZXRCeU9mZnNldERhdGEgPSB7bV9oZWFkID0gMHgwfSwg
bV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YSA9IHttX2hlYWQgPSAweDB9LCBtX211bHRpRGVsZXRlQnlP
ZmZzZXREYXRhID0ge21faGVhZCA9IDB4MH0sIG1fbWF0Y2hTdHJ1Y3R1cmVEYXRhID0ge21faGVh
ZCA9IDB4MH0sIG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSA9IHttX2hlYWQgPSAweDB9LCBt
X2NhbGxWYXJhcmdzRGF0YSA9IHttX2hlYWQgPSAweDB9LCBtX2xvYWRWYXJhcmdzRGF0YSA9IHtt
X2hlYWQgPSAweDB9LCBtX3N0YWNrQWNjZXNzRGF0YSA9IHttX2hlYWQgPSAweDdmZjA0NDZmMDA5
MH0sIG1fbGF6eUpTVmFsdWVzID0ge21faGVhZCA9IDB4MH0sIG1fY2FsbERPTUdldHRlckRhdGEg
PSB7bV9oZWFkID0gMHgwfSwgbV9iaXRWZWN0b3JzID0ge21faGVhZCA9IDB4MH0sIG1faW5saW5l
VmFyaWFibGVEYXRhID0gezxXVEY6OlZlY3RvckJ1ZmZlcjxKU0M6OkRGRzo6SW5saW5lVmFyaWFi
bGVEYXRhLCA0LCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZmZXJCYXNlPEpT
Qzo6REZHOjpJbmxpbmVWYXJpYWJsZURhdGEsIFdURjo6RmFzdE1hbGxvYz4+ID0ge21fYnVmZmVy
ID0gMHg3ZmVmODNhYzlhMzgsIG1fY2FwYWNpdHkgPSA0LCBtX3NpemUgPSAwfSwgbV9pbmxpbmVC
dWZmZXIgPSB7e19fZGF0YSA9ICJcMjI1XGFcZj5cMzYxXDE3NyIsICdcMDAwJyA8cmVwZWF0cyAx
NyB0aW1lcz4sIF9fYWxpZ24gPSB7PE5vIGRhdGEgZmllbGRzPn19LCB7X19kYXRhID0gIlwwMDBc
MDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAw8KWsg1wzNTdcMTc3XDAwMFwwMDBAXDI0MlwyNTRc
MjAzXDM1N1wxNzdcMDAwIiwgX19hbGlnbiA9IHs8Tm8gZGF0YSBmaWVsZHM+fX0sIHtfX2RhdGEg
PSAiYFwyNDJcMjU0XDIwM1wzNTdcMTc3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBc
MDAwXDAwMCBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiLCBfX2FsaWduID0gezxObyBkYXRhIGZp
ZWxkcz59fSwge19fZGF0YSA9ICJcMDAxXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMGBcMzQ0
XDAwMFwzNTBcMzYwXDE3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCIsIF9f
YWxpZ24gPSB7PE5vIGRhdGEgZmllbGRzPn19fX0sIDxObyBkYXRhIGZpZWxkcz59LCBtX2J5dGVj
b2RlTGl2ZW5lc3MgPSB7bV9pbXBsID0ge3ttX3RhYmxlID0gMHgwLCBtX3RhYmxlRm9yTExEQiA9
IDB4MH19fSwgbV9zYWZlVG9Mb2FkID0ge21faW1wbCA9IHt7bV90YWJsZSA9IDB4MCwgbV90YWJs
ZUZvckxMREIgPSAweDB9fX0sIG1fZG9tSklUU25pcHBldHMgPSB7PFdURjo6VmVjdG9yQnVmZmVy
PFdURjo6UmVmPEpTQzo6U25pcHBldCwgV1RGOjpSYXdQdHJUcmFpdHM8SlNDOjpTbmlwcGV0PiA+
LCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RGOjpWZWN0b3JCdWZmZXJCYXNlPFdURjo6UmVm
PEpTQzo6U25pcHBldCwgV1RGOjpSYXdQdHJUcmFpdHM8SlNDOjpTbmlwcGV0PiA+LCBXVEY6OkZh
c3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4MCwgbV9jYXBhY2l0eSA9IDAsIG1fc2l6ZSA9IDB9
LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIG1fY3BzRG9taW5hdG9ycyA9
IHN0ZDo6dW5pcXVlX3B0cjxjbGFzcyBKU0M6OkRGRzo6RG9taW5hdG9yczxKU0M6OkRGRzo6Q1BT
Q0ZHPj4gPSB7Z2V0KCkgPSAweDB9LCBtX3NzYURvbWluYXRvcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8
Y2xhc3MgSlNDOjpERkc6OkRvbWluYXRvcnM8SlNDOjpERkc6OkNGRz4+ID0ge2dldCgpID0gMHgw
fSwgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6OnVuaXF1ZV9wdHI8Y2xhc3MgSlNDOjpERkc6Ok5h
dHVyYWxMb29wczxKU0M6OkRGRzo6Q1BTQ0ZHPj4gPSB7Z2V0KCkgPSAweDB9LCBtX3NzYU5hdHVy
YWxMb29wcyA9IHN0ZDo6dW5pcXVlX3B0cjxjbGFzcyBKU0M6OkRGRzo6TmF0dXJhbExvb3BzPEpT
Qzo6REZHOjpDRkc+PiA9IHtnZXQoKSA9IDB4MH0sIG1fc3NhQ0ZHID0gc3RkOjp1bmlxdWVfcHRy
PGNsYXNzIEpTQzo6REZHOjpDRkc+ID0ge2dldCgpID0gMHgwfSwgbV9jcHNDRkcgPSBzdGQ6OnVu
aXF1ZV9wdHI8Y2xhc3MgSlNDOjpERkc6OkNQU0NGRz4gPSB7Z2V0KCkgPSAweDB9LCBtX2JhY2t3
YXJkc0NGRyA9IHN0ZDo6dW5pcXVlX3B0cjxjbGFzcyBKU0M6OkRGRzo6QmFja3dhcmRzQ0ZHPiA9
IHtnZXQoKSA9IDB4MH0sIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6dW5pcXVlX3B0cjxj
bGFzcyBKU0M6OkRGRzo6QmFja3dhcmRzRG9taW5hdG9ycz4gPSB7Z2V0KCkgPSAweDB9LCBtX2Nv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjp1bmlxdWVfcHRyPGNsYXNzIEpTQzo6REZH
OjpDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gPSB7Z2V0KCkgPSAweDB9LCBtX3RtcHMgPSAw
LCBtX2xvY2FsVmFycyA9IDE4LCBtX25leHRNYWNoaW5lTG9jYWwgPSA1LCBtX3BhcmFtZXRlclNs
b3RzID0gNiwgbV9udW1iZXJPZkVudHJ5cG9pbnRzID0gMSwgbV9lbnRyeXBvaW50SW5kZXhUb0Nh
dGNoQnl0ZWNvZGVJbmRleCA9IHttX2ltcGwgPSB7e21fdGFibGUgPSAweDAsIG1fdGFibGVGb3JM
TERCID0gMHgwfX19LCBtX2NhdGNoRW50cnlwb2ludHMgPSB7PFdURjo6VmVjdG9yQnVmZmVyPEpT
Qzo6REZHOjpDYXRjaEVudHJ5cG9pbnREYXRhLCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RG
OjpWZWN0b3JCdWZmZXJCYXNlPEpTQzo6REZHOjpDYXRjaEVudHJ5cG9pbnREYXRhLCBXVEY6OkZh
c3RNYWxsb2M+PiA9IHttX2J1ZmZlciA9IDB4MCwgbV9jYXBhY2l0eSA9IDAsIG1fc2l6ZSA9IDB9
LCA8Tm8gZGF0YSBmaWVsZHM+fSwgPE5vIGRhdGEgZmllbGRzPn0sIG1fbG9jYWxTdHJpbmdzID0g
e21faW1wbCA9IHt7bV90YWJsZSA9IDB4MCwgbV90YWJsZUZvckxMREIgPSAweDB9fX0sIG1fY29w
aWVkU3RyaW5ncyA9IHttX2ltcGwgPSB7e21fdGFibGUgPSAweDAsIG1fdGFibGVGb3JMTERCID0g
MHgwfX19LCBtX2ZpeHBvaW50U3RhdGUgPSBKU0M6OkRGRzo6Rml4cG9pbnRDb252ZXJnZWQsIG1f
c3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUgPSBKU0M6OkRGRzo6SGF2ZU5vdFN0YXJ0ZWRSZWdp
c3RlcmluZywgbV9mb3JtID0gSlNDOjpERkc6OlNTQSwgbV91bmlmaWNhdGlvblN0YXRlID0gSlND
OjpERkc6Okdsb2JhbGx5VW5pZmllZCwgbV9wbGFuU3RhZ2UgPSBKU0M6OkRGRzo6UGxhblN0YWdl
OjpBZnRlckZpeHVwLCBtX3JlZkNvdW50U3RhdGUgPSBKU0M6OkRGRzo6RXhhY3RSZWZDb3VudCwg
bV9oYXNEZWJ1Z2dlckVuYWJsZWQgPSBmYWxzZSwgbV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IGZh
bHNlLCBtX2lzSW5TU0FDb252ZXJzaW9uID0gZmFsc2UsIG1faXNWYWxpZGF0aW5nID0gZmFsc2Us
IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgaW50
PiBbbm8gY29udGFpbmVkIHZhbHVlXSwgbV9pbmRleGluZ0NhY2hlID0gc3RkOjp1bmlxdWVfcHRy
PGNsYXNzIEpTQzo6REZHOjpGbG93SW5kZXhpbmc+ID0ge2dldCgpID0gMHg3ZmYwNDQ2ZWYxYjB9
LCBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBzdGQ6OnVuaXF1ZV9wdHI8Y2xhc3MgSlNDOjpERkc6
OkZsb3dNYXA8SlNDOjpERkc6OkFic3RyYWN0VmFsdWU+PiA9IHtnZXQoKSA9IDB4N2ZmMDg0MDAz
MGM4fSwgbV9lbnRyeVN3aXRjaERhdGEgPSB7bV9oZWFkID0gMHgwfSwgc3RyaW5nU3RydWN0dXJl
ID0ge21fc3RydWN0dXJlID0gMHg3ZmYxMzZhYjEyMjh9LCBzeW1ib2xTdHJ1Y3R1cmUgPSB7bV9z
dHJ1Y3R1cmUgPSAweDdmZjBjNDZmODM4MH0sIG1fc2xvd0dldEJ5VmFsID0ge21faW1wbCA9IHt7
bV90YWJsZSA9IDB4MCwgbV90YWJsZUZvckxMREIgPSAweDB9fX0sIG1fbm9kZXMgPSB7bV92ZWN0
b3IgPSB7PFdURjo6VmVjdG9yQnVmZmVyPHN0ZDo6dW5pcXVlX3B0cjxKU0M6OkRGRzo6Tm9kZSwg
c3RkOjpkZWZhdWx0X2RlbGV0ZTxKU0M6OkRGRzo6Tm9kZT4gPiwgMCwgV1RGOjpGYXN0TWFsbG9j
Pj4gPSB7PFdURjo6VmVjdG9yQnVmZmVyQmFzZTxzdGQ6OnVuaXF1ZV9wdHI8SlNDOjpERkc6Ok5v
ZGUsIHN0ZDo6ZGVmYXVsdF9kZWxldGU8SlNDOjpERkc6Ok5vZGU+ID4sIFdURjo6RmFzdE1hbGxv
Yz4+ID0ge21fYnVmZmVyID0gMHgwLCBtX2NhcGFjaXR5ID0gMCwgbV9zaXplID0gMH0sIDxObyBk
YXRhIGZpZWxkcz59LCA8Tm8gZGF0YSBmaWVsZHM+fSwgbV9pbmRleEZyZWVMaXN0ID0gezxXVEY6
OlZlY3RvckJ1ZmZlcjx1bnNpZ25lZCBsb25nLCAwLCBXVEY6OkZhc3RNYWxsb2M+PiA9IHs8V1RG
OjpWZWN0b3JCdWZmZXJCYXNlPHVuc2lnbmVkIGxvbmcsIFdURjo6RmFzdE1hbGxvYz4+ID0ge21f
YnVmZmVyID0gMHgwLCBtX2NhcGFjaXR5ID0gMCwgbV9zaXplID0gMH0sIDxObyBkYXRhIGZpZWxk
cz59LCA8Tm8gZGF0YSBmaWVsZHM+fX0sIG1fc3RydWN0dXJlU2V0cyA9IHttX3NpemUgPSA1LCBt
X3NlZ21lbnRzID0gezxXVEY6OlZlY3RvckJ1ZmZlcjxXVEY6OlNlZ21lbnRlZFZlY3RvcjxKU0M6
OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCwgMTY+OjpTZWdtZW50KiwgMCwgV1RGOjpGYXN0
TWFsbG9jPj4gPSB7PFdURjo6VmVjdG9yQnVmZmVyQmFzZTxXVEY6OlNlZ21lbnRlZFZlY3RvcjxK
U0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCwgMTY+OjpTZWdtZW50KiwgV1RGOjpGYXN0
TWFsbG9jPj4gPSB7bV9idWZmZXIgPSAweDdmZjA4NDA3MDE4MCwgbV9jYXBhY2l0eSA9IDE2LCBt
X3NpemUgPSAxfSwgPE5vIGRhdGEgZmllbGRzPn0sIDxObyBkYXRhIGZpZWxkcz59fSwgbV9wcmVm
aXggPSB7cGhhc2VOdW1iZXIgPSA1OCwgYmxvY2tJbmRleCA9IC0xLCBub2RlSW5kZXggPSAtMSwg
cHJlZml4U3RyID0gMHgwLCBub0hlYWRlciA9IGZhbHNlLCBzdGF0aWMgbm9TdHJpbmcgPSAweDAs
IG1fZW5hYmxlZCA9IHRydWV9fQogICAgICAgIGNoYW5nZWQgPSA8b3B0aW1pemVkIG91dD4KIzIy
IDB4MDAwMDdmZjEzZTA4YmU3NiBpbiBKU0M6OkpJVFBsYW46OmNvbXBpbGVJblRocmVhZChKU0M6
OkpJVFdvcmtsaXN0VGhyZWFkKikgKHRoaXM9MHg3ZmYwODQwNDNjNDAsIHRocmVhZD10aHJlYWRA
ZW50cnk9MHg3ZmYwODQ0MThjZjApIGF0IC4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UGxhbi5jcHA6MTY1CiAgICAgICAgYmVmb3JlID0ge3N0YXRpYyBjbG9ja1R5cGUgPSBXVEY6OkNs
b2NrVHlwZTo6TW9ub3RvbmljLCBtX3ZhbHVlID0gMH0KICAgICAgICBjb2RlQmxvY2tOYW1lID0g
e21fYnVmZmVyID0ge21fcHRyID0gMHgwfX0KICAgICAgICBjb21waWxhdGlvblNjb3BlID0ge21f
b2xkVmFsdWUgPSBmYWxzZX0KICAgICAgICBwYXRoID0gPG9wdGltaXplZCBvdXQ+CiAgICAgICAg
YWZ0ZXIgPSB7c3RhdGljIGNsb2NrVHlwZSA9IFdURjo6Q2xvY2tUeXBlOjpNb25vdG9uaWMsIG1f
dmFsdWUgPSA8b3B0aW1pemVkIG91dD59CiAgICAgICAgcGF0aE5hbWUgPSAweGY3OGI5YmFhNjY0
NTQ1MDAgPGVycm9yOiBDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4Zjc4YjliYWE2
NjQ1NDUwMD4KIzIzIDB4MDAwMDdmZjEzZTBkYWQ4YSBpbiBKU0M6OkpJVFdvcmtsaXN0VGhyZWFk
Ojp3b3JrKCkgKHRoaXM9MHg3ZmYwODQ0MThjZjApIGF0IC4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUV29ya2xpc3RUaHJlYWQuY3BwOjEyMwojMjQgMHgwMDAwN2ZmMTNlNzY3YTM5IGlu
IG9wZXJhdG9yKCkgKF9fY2xvc3VyZT08b3B0aW1pemVkIG91dD4pIGF0IC4uL1NvdXJjZS9XVEYv
d3RmL0F1dG9tYXRpY1RocmVhZC5jcHA6MjI5CiAgICAgICAgcmVzdWx0ID0gPG9wdGltaXplZCBv
dXQ+CiAgICAgICAgc3RvcEltcGwgPSB7X190aHJlYWQgPSA8c3ludGhldGljIHBvaW50ZXI+fQoj
MjUgV1RGOjpEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxXVEY6OkF1dG9tYXRpY1RocmVhZDo6c3Rh
cnQoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYpOjo8bGFtYmRhKCk+LCB2b2lkPjo6Y2FsbCh2
b2lkKSAodGhpcz0weDdmZjA4NDA5MWE1MCkgYXQgLi4vU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aDo1MwojMjYgMHgwMDAwN2ZmMTNlNzhhZDVlIGluIFdURjo6RnVuY3Rpb248dm9pZCAoKT46Om9w
ZXJhdG9yKCkoKSBjb25zdCAodGhpcz08c3ludGhldGljIHBvaW50ZXI+KSBhdCAuLi9Tb3VyY2Uv
V1RGL3d0Zi9GdW5jdGlvbi5oOjc5CiAgICAgICAgZnVuY3Rpb24gPSB7bV9jYWxsYWJsZVdyYXBw
ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8Y2xhc3MgV1RGOjpEZXRhaWw6OkNhbGxhYmxlV3JhcHBlckJh
c2U8dm9pZD4+ID0ge2dldCgpID0gMHg3ZmYwODQwOTFhNTB9fQojMjcgV1RGOjpUaHJlYWQ6OmVu
dHJ5UG9pbnQoV1RGOjpUaHJlYWQ6Ok5ld1RocmVhZENvbnRleHQqKSAobmV3VGhyZWFkQ29udGV4
dD0weDdmZjA4NDA5MjNmMCkgYXQgLi4vU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcDoxODcK
ICAgICAgICBmdW5jdGlvbiA9IHttX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6dW5pcXVlX3B0cjxj
bGFzcyBXVEY6OkRldGFpbDo6Q2FsbGFibGVXcmFwcGVyQmFzZTx2b2lkPj4gPSB7Z2V0KCkgPSAw
eDdmZjA4NDA5MWE1MH19CiMyOCAweDAwMDA3ZmYxM2U3ZTc2ZGQgaW4gV1RGOjp3dGZUaHJlYWRF
bnRyeVBvaW50KHZvaWQqKSAoY29udGV4dD08b3B0aW1pemVkIG91dD4pIGF0IC4uL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDoyNDEKIzI5IDB4MDAwMDdmZjEzY2ZmNTNi
YSBpbiBzdGFydF90aHJlYWQgKGFyZz0weDdmZWY4M2FjYjY0MCkgYXQgcHRocmVhZF9jcmVhdGUu
Yzo0ODEKICAgICAgICByZXQgPSA8b3B0aW1pemVkIG91dD4KICAgICAgICBwZCA9IDB4N2ZlZjgz
YWNiNjQwCiAgICAgICAgdW53aW5kX2J1ZiA9IHtjYW5jZWxfam1wX2J1ZiA9IHt7am1wX2J1ZiA9
IHsxNDA2NjY2ODMwNDU0NDAsIDc4NTg3ODQ1OTEwNjA2ODkwODMsIDE0MDcyMDYxMzQ1NTg3Miwg
MTQwNzIwNjEzNDU1NTY2LCAxNDA3MjA2MTM0NTU1NjcsIDAsIDc4NTg3ODQ1OTA5MDU0OTk4MzUs
IDc4NjcwODA4Mjk5NTI0ODM1MTV9LCBtYXNrX3dhc19zYXZlZCA9IDB9fSwgcHJpdiA9IHtwYWQg
PSB7MHgwLCAweDAsIDB4MCwgMHgwfSwgZGF0YSA9IHtwcmV2ID0gMHgwLCBjbGVhbnVwID0gMHgw
LCBjYW5jZWx0eXBlID0gMH19fQogICAgICAgIG5vdF9maXJzdF9jYWxsID0gMAojMzAgMHgwMDAw
N2ZmMTNmMTI3YWQzIGluIGNsb25lICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4
Nl82NC9jbG9uZS5TOjk1Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436769</attachid>
            <date>2021-08-30 07:29:44 -0700</date>
            <delta_ts>2021-08-31 09:27:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229235-20210830162943.patch</filename>
            <type>text/plain</type>
            <size>2017</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OTBmZDBkZDM1MmRkOWJmODVhZGNmZmY5Y2IyY2VjNGFkYWI0OTRmLi40NDUyM2EzYWVkODRlYmNk
MGZhYTYxYzQwNjYzNGQ4ZTY4NGQ3ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wOC0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjc5MjU2KTogQ3Jhc2ggaW4gSlNDOjpGVEw6OnNh
dmVBbGxSZWdpc3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTIzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODIzMzc1MTc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMU2F2ZVJl
c3RvcmUuY3BwOiBXaGVuIGl0ZXJhdGluZyB0aHJvdWdoIEdQUlJlZyBhbmQgRlBSUmVnCisgICAg
ICAgIHZhbHVlcyBpbiBSZWdzOjpuZXh0UmVnaXN0ZXIoKSBhbmQgUmVnczo6bmV4dEZQUmVnaXN0
ZXIoKSwgYXZvaWQKKyAgICAgICAgcXVlcnlpbmcgUmVnaXN0ZXJTZXQgc3RhdGUgZm9yIHJlZ2lz
dGVycyB0aGF0IGFyZSBiZXlvbmQgdGhlIGxhc3QgdmFsaWQKKyAgICAgICAgR1BSUmVnIG9yIEZQ
UlJlZyB2YWx1ZXMuIFRoaXMgYXZvaWRzIGFjY2VzcyBiZXlvbmQgdGhlIGJvdW5kcyBvZiB0aGUK
KyAgICAgICAgV1RGOjpCaXRtYXAgdXNlZCBpbnNpZGUgUmVnaXN0ZXJTZXQuCisKIDIwMjEtMDgt
MjkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IG9wZW5GaWxlIGZ1bmN0aW9uIHRvIGpzYy5jcHAgdGhhdCBsaW5rcyB0byBmaWxlIGJhY2tlZCBt
ZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3Rv
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAKaW5k
ZXggY2VkYzlkYTc1YjQ4ZDI0OTRjMzlkZmMxZjFhZDI3ZjcyOTdmMzc2OS4uMTZjNTQ0Zjc1ZjE1
MTA5YmVjMDYzODFjNjlmNDk0N2ViMzc1ZjkzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTYXZlUmVzdG9yZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IFJlZ3Mgewog
ICAgIEdQUlJlZyBuZXh0UmVnaXN0ZXIoR1BSUmVnIGN1cnJlbnQpCiAgICAgewogICAgICAgICBh
dXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKGN1cnJlbnQpOwotICAgICAg
ICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4dCkpCisgICAgICAgIHdoaWxlIChuZXh0IDw9IE1hY3Jv
QXNzZW1ibGVyOjpsYXN0UmVnaXN0ZXIoKSAmJiBzcGVjaWFsLmdldChuZXh0KSkKICAgICAgICAg
ICAgIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKG5leHQpOwogICAgICAgICBy
ZXR1cm4gbmV4dDsKICAgICB9CkBAIC05NSw3ICs5NSw3IEBAIHN0cnVjdCBSZWdzIHsKICAgICBG
UFJSZWcgbmV4dEZQUmVnaXN0ZXIoRlBSUmVnIGN1cnJlbnQpCiAgICAgewogICAgICAgICBhdXRv
IG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dEZQUmVnaXN0ZXIoY3VycmVudCk7Ci0gICAgICAg
IHdoaWxlIChzcGVjaWFsLmdldChuZXh0KSkKKyAgICAgICAgd2hpbGUgKG5leHQgPD0gTWFjcm9B
c3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCkgJiYgc3BlY2lhbC5nZXQobmV4dCkpCiAgICAgICAg
ICAgICBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKG5leHQpOwogICAgICAg
ICByZXR1cm4gbmV4dDsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436895</attachid>
            <date>2021-08-31 09:27:27 -0700</date>
            <delta_ts>2021-09-01 02:03:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229235-20210831182726.patch</filename>
            <type>text/plain</type>
            <size>5282</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTc2YmM4YjQ5NDg4NjhhNjMwNTMxZWU4YjMzYTIwNmQ4ZTJlMGM4Li40NzQ3M2VkNzY5YzNkMzU1
NDI2NjRlMDgxOWFmNzcyNjU5OWNkNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMS0wOC0zMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjc5MjU2KTogQ3Jhc2ggaW4gSlNDOjpGVEw6OnNh
dmVBbGxSZWdpc3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTIzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODIzMzc1MTc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgb3V0LW9mLWJv
dW5kcyBhY2Nlc3MgaW50byBSZWdpc3RlclNldCdzIHVuZGVybHlpbmcgQml0bWFwIHRoYXQKKyAg
ICAgICAgb2NjdXJzIGluIEZUTDo6c2F2ZUFsbFJlZ2lzdGVycygpIGFuZCBGVEw6OnJlc3RvcmVB
bGxSZWdpc3RlcnMoKS4gSGVscGVyCisgICAgICAgIFJlZ3M6Om5leHRSZWdpc3RlcigpIGFuZCBS
ZWdzOjpuZXh0RlBSZWdpc3RlcigpIG1ldGhvZHMgY2FuIGluY3JlYXNlIHRoZQorICAgICAgICBy
ZWdpc3RlciBJRCB2YWx1ZXMgYmV5b25kIHRoZSB2YWxpZCB2YWx1ZXMsIGF0IHdoaWNoIHBvaW50
IHRoZXJlJ3MgYQorICAgICAgICBwb3NzaWJpbGl0eSBvZiBtaXN1c2UgaWYgdGhlc2UgcmVnaXN0
ZXIgSUQgdmFsdWVzIGFyZSB1c2VkIHRvIGluZGV4IGludG8KKyAgICAgICAgdGhlIEJpdG1hcC4K
KworICAgICAgICBUbyBhdm9pZCB0aGlzLCBpdGVyYXRpbmcgb3ZlciBSZWdpc3RlcklEIGFuZCBG
UFJlZ2lzdGVySUQgcmFuZ2VzIGlzCisgICAgICAgIHNpbXBsaWZpZWQgeWV0IGtlcHQgZWZmaWNp
ZW50LCBhbmQgYWNjZXNzIGludG8gdGhlIFJlZ2lzdGVyU2V0IGlzIG5vdworICAgICAgICBvbmx5
IGRvbmUgaWYgdGhlIHJlZ2lzdGVyIElEIHZhbHVlcyBhcmUgdmFsaWQuCisKKyAgICAgICAgVGhp
cyBlbmFibGVzIHJlbW92aW5nIFJlZ3M6Om5leHRGUFJlZ2lzdGVyKCkuIFJlZ3M6Om5leHRSZWdp
c3RlcigpIGlzCisgICAgICAgIHN0aWxsIHVzZWQgYnV0IGlzIG5vdCBhZGp1c3RlZCB0byBhbHNv
IHVzZSBhIGZvci1sb29wIHRvIGl0ZXJhdGUgYWNyb3NzCisgICAgICAgIHRoZSB2YWxpZCBSZWdp
c3RlcklEIHZhbHVlcywgYW5kIG9ubHkgZm9yIHRob3NlIHZhbHVlcyB0aGUgYWNjZXNzIGludG8K
KyAgICAgICAgdGhlIFJlZ2lzdGVyU2V0IGlzIHBvc3NpYmxlLgorCisgICAgICAgICogZnRsL0ZU
TFNhdmVSZXN0b3JlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpzYXZlQWxsUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6RlRMOjpyZXN0b3JlQWxsUmVnaXN0ZXJzKToKKwogMjAyMS0wOC0zMSAg
QWRpdGkgU2luZ2ggIDxhc2luZ2hAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgT2Jq
ZWN0Lmhhc093bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNh
dmVSZXN0b3JlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUu
Y3BwCmluZGV4IGNlZGM5ZGE3NWI0OGQyNDk0YzM5ZGZjMWYxYWQyN2Y3Mjk3ZjM3NjkuLjBmMmMw
NWU1NmI3Y2UzNWEzNzA4N2M4ZWRhN2ZlNjQyZmQ3YjVhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCkBAIC04NywxNiArODcsMTAgQEAgc3RydWN0
IFJlZ3MgewogICAgIEdQUlJlZyBuZXh0UmVnaXN0ZXIoR1BSUmVnIGN1cnJlbnQpCiAgICAgewog
ICAgICAgICBhdXRvIG5leHQgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lzdGVyKGN1cnJlbnQp
OwotICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4dCkpCi0gICAgICAgICAgICBuZXh0ID0g
TWFjcm9Bc3NlbWJsZXI6Om5leHRSZWdpc3RlcihuZXh0KTsKLSAgICAgICAgcmV0dXJuIG5leHQ7
Ci0gICAgfQotCi0gICAgRlBSUmVnIG5leHRGUFJlZ2lzdGVyKEZQUlJlZyBjdXJyZW50KQotICAg
IHsKLSAgICAgICAgYXV0byBuZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKGN1
cnJlbnQpOwotICAgICAgICB3aGlsZSAoc3BlY2lhbC5nZXQobmV4dCkpCi0gICAgICAgICAgICBu
ZXh0ID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJlZ2lzdGVyKG5leHQpOworICAgICAgICBmb3Ig
KDsgbmV4dCA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IG5leHQgPSBNYWNyb0Fz
c2VtYmxlcjo6bmV4dFJlZ2lzdGVyKG5leHQpKSB7CisgICAgICAgICAgICBpZiAoIXNwZWNpYWwu
Z2V0KG5leHQpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBuZXh0OwogICAgIH0KIApAQCAtMTI2LDggKzEyMCwxMSBAQCB2b2lkIHNhdmVBbGxSZWdp
c3RlcnMoQXNzZW1ibHlIZWxwZXJzJiBqaXQsIGNoYXIqIHNjcmF0Y2hNZW1vcnkpCiAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpTdG9yZVJlZ1Nwb29sZXIgc3Bvb2xlcihqaXQsIGJhc2VHUFIpOwogCiAg
ICAgLy8gR2V0IGFsbCBvZiB0aGUgb3RoZXIgR1BScyBvdXQgb2YgdGhlIHdheS4KLSAgICBmb3Ig
KEdQUlJlZyByZWcgPSBmaXJzdFRvU2F2ZUdQUjsgcmVnIDw9IE1hY3JvQXNzZW1ibGVyOjpsYXN0
UmVnaXN0ZXIoKTsgcmVnID0gcmVncy5uZXh0UmVnaXN0ZXIocmVnKSkKKyAgICBmb3IgKE1hY3Jv
QXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZyA9IGZpcnN0VG9TYXZlR1BSOyByZWcgPD0gTWFjcm9B
c3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpOyByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6bmV4dFJlZ2lz
dGVyKHJlZykpIHsKKyAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBzcG9vbGVyLnN0b3JlR1BSKHsgcmVnLCBzdGF0aWNfY2Fz
dDxwdHJkaWZmX3Q+KG9mZnNldE9mR1BSKHJlZykpIH0pOworICAgIH0KICAgICBzcG9vbGVyLmZp
bmFsaXplR1BSKCk7CiAgICAgCiAgICAgLy8gUmVzdG9yZSB0aGUgZmlyc3QgcmVnaXN0ZXIgaW50
byB0aGUgc2Vjb25kIG9uZSBhbmQgc2F2ZSBpdC4KQEAgLTEzOSw4ICsxMzYsMTEgQEAgdm9pZCBz
YXZlQWxsUmVnaXN0ZXJzKEFzc2VtYmx5SGVscGVycyYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5
KQogI2VuZGlmCiAgICAgCiAgICAgLy8gRmluYWxseSBzYXZlIGFsbCBGUFIncy4KLSAgICBmb3Ig
KE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJl
ZyA9IHJlZ3MubmV4dEZQUmVnaXN0ZXIocmVnKSkKKyAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpG
UFJlZ2lzdGVySUQgcmVnID0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpOyByZWcg
PD0gTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVy
OjpuZXh0RlBSZWdpc3RlcihyZWcpKSB7CisgICAgICAgIGlmIChyZWdzLnNwZWNpYWwuZ2V0KHJl
ZykpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgc3Bvb2xlci5zdG9yZUZQUih7IHJl
Zywgc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkZQUihyZWcpKSB9KTsKKyAgICB9CiAg
ICAgc3Bvb2xlci5maW5hbGl6ZUZQUigpOwogfQogCkBAIC0xNTUsOCArMTU1LDExIEBAIHZvaWQg
cmVzdG9yZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2NyYXRjaE1l
bW9yeSkKICAgICBBc3NlbWJseUhlbHBlcnM6OkxvYWRSZWdTcG9vbGVyIHNwb29sZXIoaml0LCBi
YXNlR1BSKTsKIAogICAgIC8vIFJlc3RvcmUgYWxsIEZQUidzLgotICAgIGZvciAoTWFjcm9Bc3Nl
bWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVy
KCk7IHJlZyA8PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gcmVncy5u
ZXh0RlBSZWdpc3RlcihyZWcpKQorICAgIGZvciAoTWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJ
RCByZWcgPSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCk7IHJlZyA8PSBNYWNyb0Fz
c2VtYmxlcjo6bGFzdEZQUmVnaXN0ZXIoKTsgcmVnID0gTWFjcm9Bc3NlbWJsZXI6Om5leHRGUFJl
Z2lzdGVyKHJlZykpIHsKKyAgICAgICAgaWYgKHJlZ3Muc3BlY2lhbC5nZXQocmVnKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBzcG9vbGVyLmxvYWRGUFIoeyByZWcsIHN0YXRpY19j
YXN0PHB0cmRpZmZfdD4ob2Zmc2V0T2ZGUFIocmVnKSkgfSk7CisgICAgfQogICAgIHNwb29sZXIu
ZmluYWxpemVGUFIoKTsKICAgICAKICNpZiBDUFUoQVJNNjQpCkBAIC0xNjcsOCArMTcwLDExIEBA
IHZvaWQgcmVzdG9yZUFsbFJlZ2lzdGVycyhBc3NlbWJseUhlbHBlcnMmIGppdCwgY2hhciogc2Ny
YXRjaE1lbW9yeSkKICNlbHNlCiAgICAgR1BSUmVnIGZpcnN0VG9SZXN0b3JlR1BSID0gcmVncy5u
ZXh0UmVnaXN0ZXIoYmFzZUdQUik7CiAjZW5kaWYKLSAgICBmb3IgKE1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIHJlZyA9IGZpcnN0VG9SZXN0b3JlR1BSOyByZWcgPD0gTWFjcm9Bc3NlbWJsZXI6
Omxhc3RSZWdpc3RlcigpOyByZWcgPSByZWdzLm5leHRSZWdpc3RlcihyZWcpKQorICAgIGZvciAo
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnID0gZmlyc3RUb1Jlc3RvcmVHUFI7IHJlZyA8
PSBNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCk7IHJlZyA9IE1hY3JvQXNzZW1ibGVyOjpu
ZXh0UmVnaXN0ZXIocmVnKSkgeworICAgICAgICBpZiAocmVncy5zcGVjaWFsLmdldChyZWcpKQor
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHNwb29sZXIubG9hZEdQUih7IHJlZywgc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihvZmZzZXRPZkdQUihyZWcpKSB9KTsKKyAgICB9CiAgICAgc3Bv
b2xlci5maW5hbGl6ZUdQUigpOwogCiAjaWYgQ1BVKEFSTTY0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>