<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/76469>76469</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang][ASTMergeAction] Assertion `inst_from != nullptr' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
widberg
</td>
</tr>
</table>
<pre>
When running the following on trunk (d51e06c73c33b6c35ee47542a9674da63c6b7f07)
test.sh
```sh
clang++-18 -cc1 -std=c++17 -emit-pch -o qtooltip.cpp.oclango qtooltip.cpp
clang-18 -cc1 -x c++ -ast-merge qtooltip.cpp.oclango /dev/null -ast-dump-all=json
```
qtooltip.cpp
```cpp
template <typename> struct _Optional_payload_base {
template <typename, bool = false> union _Storage;
template <typename _Up> union _Storage<_Up> {};
_Storage<int> _M_payload;
};
_Optional_payload_base<int> _M_payload;
```
The second command crashes with this backtrace
```console
virtual clang::SourceRange clang::ClassTemplateSpecializationDecl::getSourceRange() const: Assertion `inst_from != nullptr' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang-18 -cc1 -x c++ -ast-merge qtooltip.cpp.oclango /dev/null -ast-dump-all=json
1. <eof> parser at end of file
#0 0x000055555add9878 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /data/llvm-project/llvm/lib/Support/Unix/Signals.inc:727:0
#1 0x000055555add73b4 llvm::sys::RunSignalHandlers() /data/llvm-project/llvm/lib/Support/Signals.cpp:105:0
#2 0x000055555add7fce SignalHandler(int) /data/llvm-project/llvm/lib/Support/Unix/Signals.inc:403:0
#3 0x00007ffff7bc6980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#4 0x00007ffff67f4e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#5 0x00007ffff67f67f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
#6 0x00007ffff67e63fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
#7 0x00007ffff67e6472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#8 0x000055555dc766db clang::ClassTemplateSpecializationDecl::getSourceRange() const /data/llvm-project/clang/lib/AST/DeclTemplate.cpp:994:0
#9 0x000055555dc765c5 clang::ClassTemplateSpecializationDecl::getSourceRange() const /data/llvm-project/clang/lib/AST/DeclTemplate.cpp:1023:0
#10 0x000055555de958be operator() /data/llvm-project/clang/lib/AST/JSONNodeDumper.cpp:109:0
#11 0x000055555de958be void llvm::function_ref<void ()>::callback_fn<clang::JSONNodeDumper::Visit(clang::Decl const*)::'lambda0'()>(long) /data/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:0
#12 0x000055555deaa2e7 llvm::json::OStream::object(llvm::function_ref<void ()>) /data/llvm-project/llvm/include/llvm/Support/JSON.h:997:0
#13 0x000055555deaa2e7 llvm::json::OStream::attributeObject(llvm::StringRef, llvm::function_ref<void ()>)::'lambda'()::operator()() const /data/llvm-project/llvm/include/llvm/Support/JSON.h:1028:0
#14 0x000055555deaa2e7 void llvm::function_ref<void ()>::callback_fn<llvm::json::OStream::attributeObject(llvm::StringRef, llvm::function_ref<void ()>)::'lambda'()>(long) /data/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:0
#15 0x000055555deaa2e7 llvm::function_ref<void ()>::operator()() const /data/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:0
#16 0x000055555deaa2e7 llvm::json::OStream::attributeImpl(llvm::StringRef, llvm::function_ref<void ()>) /data/llvm-project/llvm/include/llvm/Support/JSON.h:1046:0
#17 0x000055555deaa2e7 llvm::json::OStream::attributeObject(llvm::StringRef, llvm::function_ref<void ()>) /data/llvm-project/llvm/include/llvm/Support/JSON.h:1028:0
#18 0x000055555deaa2e7 clang::JSONNodeDumper::Visit(clang::Decl const*) /data/llvm-project/clang/lib/AST/JSONNodeDumper.cpp:108:0
#19 0x000055555dacdf9e clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()::operator()() const /data/llvm-project/clang/include/clang/AST/ASTNodeTraverser.h:93:0
#20 0x000055555dad8792 void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)::operator()(bool) const /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:82:0
#21 0x000055555dad8792 std::_Function_handler<void (bool), void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)>::_M_invoke(std::_Any_data const&, bool&&) /usr/include/c++/7/bits/std_function.h:316:0
#22 0x000055555dad87c6 void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)::operator()(bool) const /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:74:0
#23 0x000055555dad87c6 std::_Function_handler<void (bool), void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)>::_M_invoke(std::_Any_data const&, bool&&) /usr/include/c++/7/bits/std_function.h:316:0
#24 0x000055555dace3d3 void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()) /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:103:0
#25 0x000055555dace0db llvm::PointerIntPairInfo<clang::Decl*, 3u, llvm::PointerLikeTypeTraits<clang::Decl*>>::getPointer(long) /data/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:192:0
#26 0x000055555dace0db llvm::PointerIntPair<clang::Decl*, 3u, clang::Decl::ModuleOwnershipKind, llvm::PointerLikeTypeTraits<clang::Decl*>, llvm::PointerIntPairInfo<clang::Decl*, 3u, llvm::PointerLikeTypeTraits<clang::Decl*>>>::getPointer() const /data/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:94:0
#27 0x000055555dace0db clang::Decl::getNextDeclInContext() /data/llvm-project/clang/include/clang/AST/DeclBase.h:449:0
#28 0x000055555dace0db clang::DeclContext::decl_iterator::operator++() /data/llvm-project/clang/include/clang/AST/DeclBase.h:2287:0
#29 0x000055555dace0db clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::dumpDeclContext(clang::DeclContext const*) /data/llvm-project/clang/include/clang/AST/ASTNodeTraverser.h:303:0
#30 0x000055555dace0db clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()::operator()() const /data/llvm-project/clang/include/clang/AST/ASTNodeTraverser.h:117:0
#31 0x000055555dad8792 void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)::operator()(bool) const /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:82:0
#32 0x000055555dad8792 std::_Function_handler<void (bool), void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)>::_M_invoke(std::_Any_data const&, bool&&) /usr/include/c++/7/bits/std_function.h:316:0
#33 0x000055555dad87c6 void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)::operator()(bool) const /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:74:0
#34 0x000055555dad87c6 std::_Function_handler<void (bool), void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'())::'lambda'(bool)>::_M_invoke(std::_Any_data const&, bool&&) /usr/include/c++/7/bits/std_function.h:316:0
#35 0x000055555dace3d3 void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()) /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:103:0
#36 0x000055555dace0db llvm::PointerIntPairInfo<clang::Decl*, 3u, llvm::PointerLikeTypeTraits<clang::Decl*>>::getPointer(long) /data/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:192:0
#37 0x000055555dace0db llvm::PointerIntPair<clang::Decl*, 3u, clang::Decl::ModuleOwnershipKind, llvm::PointerLikeTypeTraits<clang::Decl*>, llvm::PointerIntPairInfo<clang::Decl*, 3u, llvm::PointerLikeTypeTraits<clang::Decl*>>>::getPointer() const /data/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:94:0
#38 0x000055555dace0db clang::Decl::getNextDeclInContext() /data/llvm-project/clang/include/clang/AST/DeclBase.h:449:0
#39 0x000055555dace0db clang::DeclContext::decl_iterator::operator++() /data/llvm-project/clang/include/clang/AST/DeclBase.h:2287:0
#40 0x000055555dace0db clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::dumpDeclContext(clang::DeclContext const*) /data/llvm-project/clang/include/clang/AST/ASTNodeTraverser.h:303:0
#41 0x000055555dace0db clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()::operator()() const /data/llvm-project/clang/include/clang/AST/ASTNodeTraverser.h:117:0
#42 0x000055555dace56b void clang::NodeStreamer::AddChild<clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()>(llvm::StringRef, clang::ASTNodeTraverser<clang::JSONDumper, clang::JSONNodeDumper>::Visit(clang::Decl const*)::'lambda'()) /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:58:0
#43 0x000055555dace866 clang::JSONNodeDumper::~JSONNodeDumper() /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:116:0
#44 0x000055555dace866 clang::JSONDumper::~JSONDumper() /data/llvm-project/clang/include/clang/AST/JSONNodeDumper.h:370:0
#45 0x000055555dace866 clang::Decl::dump(llvm::raw_ostream&, bool, clang::ASTDumpOutputFormat) const /data/llvm-project/clang/lib/AST/ASTDumper.cpp:216:0
#46 0x000055555b9ce4b9 print /data/llvm-project/clang/lib/Frontend/ASTConsumers.cpp:101:0
#47 0x000055555b9ce4b9 (anonymous namespace)::ASTPrinter::HandleTranslationUnit(clang::ASTContext&) /data/llvm-project/clang/lib/Frontend/ASTConsumers.cpp:48:0
#48 0x000055555cd42649 clang::ParseAST(clang::Sema&, bool, bool) /data/llvm-project/clang/lib/Parse/ParseAST.cpp:176:0
#49 0x000055555ba098af llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>::operator bool() const /data/llvm-project/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:206:0
#50 0x000055555ba098af clang::CompilerInstance::getDiagnostics() const /data/llvm-project/clang/include/clang/Frontend/CompilerInstance.h:344:0
#51 0x000055555ba098af clang::ASTMergeAction::ExecuteAction() /data/llvm-project/clang/lib/Frontend/ASTMerge.cpp:80:0
#52 0x000055555baa5439 clang::FrontendAction::Execute() /data/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1069:0
#53 0x000055555ba30f10 llvm::Error::setChecked(bool) /data/llvm-project/llvm/include/llvm/Support/Error.h:307:0
#54 0x000055555ba30f10 llvm::Error::operator bool() /data/llvm-project/llvm/include/llvm/Support/Error.h:239:0
#55 0x000055555ba30f10 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /data/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1057:0
#56 0x000055555bb362b3 std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get() const /usr/include/c++/7/bits/shared_ptr_base.h:975:0
#57 0x000055555bb362b3 std::__shared_ptr_access<clang::FrontendOptions, (__gnu_cxx::_Lock_policy)2, false, false>::operator*() const /usr/include/c++/7/bits/shared_ptr_base.h:961:0
#58 0x000055555bb362b3 clang::CompilerInvocation::getFrontendOpts() /data/llvm-project/clang/include/clang/Frontend/CompilerInvocation.h:254:0
#59 0x000055555bb362b3 clang::CompilerInstance::getFrontendOpts() /data/llvm-project/clang/include/clang/Frontend/CompilerInstance.h:291:0
#60 0x000055555bb362b3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /data/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:273:0
#61 0x0000555559540a3e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /data/llvm-project/clang/tools/driver/cc1_main.cpp:294:0
#62 0x0000555559537cf8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /data/llvm-project/clang/tools/driver/driver.cpp:366:0
#63 0x000055555953b164 clang_main(int, char**, llvm::ToolContext const&) /data/llvm-project/clang/tools/driver/driver.cpp:407:0
#64 0x000055555954caa1 main /data/llvm-project/build/tools/clang/tools/driver/clang-driver.cpp:16:0
#65 0x00007ffff67d7c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#66 0x000055555953702a _start (/data/llvm-project/build/bin/clang-18+0x3fe302a)
./test.sh: line 2: 68625 Aborted (core dumped) clang-18 -cc1 -x c++ -ast-merge qtooltip.cpp.oclango /dev/null -ast-dump-all=json
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtv2zoS_jXKC2FDInV9yIPrxNiebU-LOucssC8CRVE2T2VSS1Jpsg_72xfUJRZlJXEubX2KBEUjUyLnm5mPw-HEFFaKbTil507wzgkuznCtt0Kef2N5RuXmLBP57fm_tpQDWXPO-AboLQWFKEvxzXwSHGhZ86_AgXEeeNQNSYQIQllIUECpHwU-xEkY-TkOEQmzqHAjByaOe-G4i_Z_TZWeq-2wyQnd9l_fTErMNw5858B3My8GM0I8MFM6d9AFaZu9CMzojulZRbZgJsB_tBClZtWcVNVcNP3txsHA-yFvQDccmGGlZzsqN3R6KAeucnrtwBWvy7J9Oq931QyXpYMu_lKCj1QZ6neIY_TwXbumu6rEmgIHLfVtRTneUQddAqVlTTRIP1WaCY7LtMK3pcB5mmFFgRO9a7sDMDkAXIJMiBI46AIUuFTNkDVngoN0rYXEG-qgB4cA6R_VVKdl124QRBeDQQaPMK7NI-nHHvTdY8Mu06o93H3K1ldbChQlgueAiN0Om98Sqy1V4BvTW6C3TIEMk69aYkKnvSG4EmV375pJXeMStJRECwct1qKWhH7BfEOHzcsSK3XVGW9dUcJwyf6LjVYXlJTtQxuqB90dGDswAUagdtACLJSi0nQATugyrnRaSLEDDvSM6wz1Ki0dGIECs5Lm8xbi5w-Xi_UlUHW2YxpgkNUbIGklpAZagK3WlTLC4cqBqw3T2zqbE7Fz4Kosr_tfs0qKvyjRDlwxpWqqHLgCxniMk7LOaRMHGkMOjAeXoJK0koJQpWgOVKOZaTY9sVKCMKxpboIJUESySneQ1xqTr8DMIIOsaXLnjpt8lmIj8Q5gual3lGsDHHz3SesZ0Q5aUlEYqlVYKioB1oDyHIgCFKxnA3AgcoF747quG5gfnOdJHMWgMWXjYXWr2ovPknHdKHrVWivePyTxt1QoLSneOTA0FjM0h0kDGWt86JXeVyxz4GpdV8a9Dlz9wdmNaWAbjks1Z5w4aBHByEELdw_ZG0GOUOZPQf5S83akf2Cel1SqjqBPRdXDMXENLTw3sOHAMZyCUGAJdmD8mgbxXWQjQB2CqCiKIspImMQuSFNJlRaSplKDRvNu9Js4TEN_VjJe38w2vG5vVHorKc7nSsxdB75zbzyYxO7damfE-EMxYVT4NI6AxMzEbLjKalbmZk6WLCOz5Z-_fft3dvcRzmHkwJVq9HDgaj43n25VTiszN-tWTXWrrhs0vDYfm6HnRuPAsxUORkjCqPAAzkSj6XFIdN5ao-nVCIlHQkJbCA1RgUGa4iaqpSZmdevVcRLbfncXrcjEFhmNRfoRPMJ3xHgtbLyGXD-CltfiIT1zEoVhnr1ioL-f0l3a0yFfrK8cuDIj9rK6-ZQkvm2EZAw4IMEpAfZcOJh_Jh5ZMTSnSRBnFIiKSqyFfCzoTEn9bf3p999FTi_qXUXlndzEFutNib0WLB8Ew6LmxFgmlbRw0LK52yJy0GX7CMFlaVbBtOAOWg4MbaNo2_5kimkHxoPHjIm6RR8umoEXzQIdlXiX5dh1DP17iTAuhVH38VDYLdX7hsWFMc366sOq0wmXlzdaYjXfmqAY2MaBtnEwhjQa2KVZLpurT-t24Wo-iKwFER9rwecosg_vxsIN-iSJbPjoWfCx1pJltaafDvVYa8n45gstzPp8vHojbw6c2djLIvlx0-wJZvFcGNt28afs8lLOn5Zdf-AkCR5m2RGGfE0CPIw9HDEhfNkMeb-rytfw4yvx3A9t7aJTmf_faR7HU_q9fO15lWV2BNXORzDJi8TaKS_WV2aQK4mvqdlqHS6inRJw-ZCGl89dYF8hJPfG2fuyb2kNNVaxXbPsLAjaWRDO4yiBbWge6GKGaRnbe3WR58utSZ8ts52QUS_vn0YnCfieW5kQ5f0k6e6-lCijGWVoEkObJt4UTZpqqAGW9rE_3XZ7531M6jWAyzdanR6tOhHpx5Txa_HV7Ln2Xl3w29QwqpcU9lXc5jLsInetpM2ttjLmwJXZQGdMq3bnnvaLVkMw5NlrJ4QHDCPhG2NOjzE_OBBFvk0TNEWTt0D0t6fV6QQif5Q5UpSjN8b8DMa8aiDx3FHmG4z97ObZYIv1WTCuqXzP9WfM5HteCNsUTdXSaLAEqLZ3Z13XD-wrvbqtjC0N9yZ7G0N1ttpQ3XV8eSnBBt_qn4xSuvAp-j-i-_hec_VR5HVJP33jVKotq_7JeP4SO011_THemXLQiysmEy5KRmtdNOWhSVNvqP6d3mjT8J4vBdf0Rh9bwr5vDpnB3mFF2xqUb5exYXwEth5I05BTUqZMd4nDKI1o4_Qr4oUwtmuzcFwQGAN-3cCX17tqaIKDENjdeFoZ5Ek7fTQKeMj9oRb4-5REPM-mCprc7L5lACeXM_7cmgg63LG-1UR-BVqdzFYETW523xhzcoz5uTUR5L_VRH5JWp1OIDrYK7_VRH7Fmgh6Uk3g16uJoMkd91tN5HRqIuiYuoPzc2oi6LESw6nVRPwfWxE4wZqI773VRI6qifhwbKggzN4ygL99BhDYX5vy0djNcRg-9g2v_40aXxizpvKUUT7qH_yNbgLmAcTvBg9Frg3vIF0ewdsvUs3xo4dP5bQ5_ZiORvynWle1Xgm5w_qZ35TvRrr7Hh0cW9rKCLOEUD9LQCUZP1rQSpqwbvIcI20puKp3VO4P5ni2wGhKoANjzAW_3YlaAY53VFXNcabkzh7NSafe3e0JniuJuSqbIwZ_8PGEa6G061D4hO8gPqyNP5pOVrZCch-GfjJ05GcsFW08McS2pjs8cn5fTDgSZTNu_3uxvuqNHY28a2UsGXaTGBeDtPA917JW7Jp-ocWS6896nPMyvOFCaUbUJd8wTg--YdwBf3lqeAilzWlcW6PAndJoAHkpdhUrTY6pNOaE3uWKA11euq4OODIW18YL305qA-8R0Iv11UcqN3TRbNHbtssbSmrdNz3puIrN4WbkjiCxHcgCaAPDgY8s_vYjTQB7NiR7zLswEdrJdoBsaMgtPHdA3Usp-5RaUb3cUvKV5oOq3Au-IN0M3aWTdpYU-EeDmpogr4IJopGhgilMj86IMb3ud_pzw-fB1Lg7qTkyqr0EZSiEGRqUN1O1xZLmaaVligmharRx7UW2h7uViaYOjNN0w-uU3Nx0o3wQ5GtaiZKRWwcm0DzVHlO_uxiU4zZUj2PEcYW2PdKs35UlkX28I4hOS939lmPxejqH9qIfxFM6T3L0WhC8jzUbqgf6PnpU-Ikhu5fVzqtgFLSTozGPVprviHiwyMDEtnHoPoK3m_ETprZm_4FaTzrC0aO-aqLe6l6ZfToa2fv10Fopk8B3MaKAEC_dYcatRHohJb790hyPIVss95urtmxmt3V__zhWFy1EabidS3ZtdhSrHkEPe1S1CqENG0WkiEGv_NJrrTHch-5wWf5JiRayOfI0pUNol_DMGKMCynGB-UCZ9qJTBYV2ghWikSqZF_otjXofNKfmWws3Bl38EKD-aC0O_RFVCMYeMBDvl9SfCO8l3e9vc2NmyR9tnMLRafc8InEE0rRkGUmVxlKnPZZjzqETVfcH8NvL5mYzTnMmfZxShuGYcS7EoBXcnU1_2ASZcWWnpxe3p9QLilyI786pGzD9m3TQApSMUwDNVRiHMACLTEhNczD-MeFESNq8ecOkZMn3f7nG6C0tZ_k5yhOU4DN67kUuitw49uOz7XmS5Bgmrhsg10sCmhSR63k4S8KkcF0UJWfsHLoQeRBG0IURjOeEujnxKaVxHBA3TxzfpTvMyrkx61zIzVnzKpPzKPTD5KzEGS1V894jCDtyQSe4OJPnjRuyeqMc3y2Z0mo_gma6bF6WtGx6BBdO8G60IwgunvzelrNalufPfzFLo9D_AwAA__95AU5V">