<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/123471>123471</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang] Clang crashes when attempting to call a member function via CRTP in a default argument expression
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
venkatrao1
</td>
</tr>
</table>
<pre>
I'm using this [clang19 docker image](https://hub.docker.com/layers/silkeh/clang/19/images/sha256-12b393a8a03b2b2296a28e01651c0be35d5fc7c612df71a93ed2be4a61f46598) to reproduce, here's a [godbolt reproduction](https://godbolt.org/z/jcorvY5K6) as well.
Reproduction file:
```cpp
template<typename Derived>
struct CRTPBase {
auto& self() { return static_cast<Derived&>(*this); }
};
template<typename T = int>
struct Foo : CRTPBase<Foo<T>> {
int x() const { return 5; }
// illegal to call a non-static member fn "self" here, I think
int callXByDefault(int val = self().x()) { return val; }
private:
using CRTPBase<Foo<T>>::self;
};
int main() {
return Foo{}.callXByDefault();
}
```
Note: removing the template parameter T from Foo produces an error instead of crashing, which I think should be the correct behavior with the template parameter as well.
[stderr.txt](https://github.com/user-attachments/files/18465707/stderr.txt)
[repro-b39b7a.cpp.txt](https://github.com/user-attachments/files/18465709/repro-b39b7a.cpp.txt)
[repro-b39b7a.sh.txt](https://github.com/user-attachments/files/18465708/repro-b39b7a.sh.txt)
I get the following in stderr:
```
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++ -c -std=c++20 -emit-llvm -Xclang -disable-llvm-passes repro.cpp
1. <eof> parser at end of file
2. repro.cpp:17:5: LLVM IR generation of declaration 'main'
3. repro.cpp:17:5: Generating code for declaration 'main'
#0 0x00007f72f89ca3c6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb73c6)
#1 0x00007f72f89c8070 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xeb5070)
#2 0x00007f72f8910210 (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xdfd210)
#3 0x00007f72f764f050 (/lib/x86_64-linux-gnu/libc.so.6+0x3c050)
#4 0x00007f730169fb5f clang::CodeGen::CodeGenFunction::GetAddressOfBaseClass(clang::CodeGen::Address, clang::CXXRecordDecl const*, clang::CXXBaseSpecifier const* const*, clang::CXXBaseSpecifier const* const*, bool, clang::SourceLocation) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x1fa4b5f)
#5 0x00007f73017403b4 (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x20453b4)
#6 0x00007f730173ef7d clang::CodeGen::CodeGenFunction::EmitPointerWithAlignment(clang::Expr const*, clang::CodeGen::LValueBaseInfo*, clang::CodeGen::TBAAAccessInfo*, clang::CodeGen::KnownNonNull_t) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2043f7d)
#7 0x00007f730176a5d9 clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(clang::CallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot, bool, clang::NestedNameSpecifier*, bool, clang::Expr const*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x206f5d9)
#8 0x00007f7301769819 clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(clang::CXXMemberCallExpr const*, clang::CodeGen::ReturnValueSlot) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x206e819)
#9 0x00007f7301757031 clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x205c031)
#10 0x00007f7301743999 clang::CodeGen::CodeGenFunction::EmitCallExprLValue(clang::CallExpr const*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2048999)
#11 0x00007f7301742aa5 clang::CodeGen::CodeGenFunction::EmitLValueHelper(clang::Expr const*, clang::CodeGen::KnownNonNull_t) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2047aa5)
#12 0x00007f730174b88c clang::CodeGen::CodeGenFunction::EmitCastLValue(clang::CastExpr const*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x205088c)
#13 0x00007f7301742a95 clang::CodeGen::CodeGenFunction::EmitLValueHelper(clang::Expr const*, clang::CodeGen::KnownNonNull_t) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2047a95)
#14 0x00007f730173768d clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*, clang::CodeGen::KnownNonNull_t) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x203c68d)
#15 0x00007f730176a7a4 clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(clang::CallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot, bool, clang::NestedNameSpecifier*, bool, clang::Expr const*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x206f7a4)
#16 0x00007f7301769819 clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(clang::CXXMemberCallExpr const*, clang::CodeGen::ReturnValueSlot) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x206e819)
#17 0x00007f7301757031 clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x205c031)
#18 0x00007f73017a0a3e (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x20a5a3e)
#19 0x00007f73017a10bf (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x20a60bf)
#20 0x00007f730178f59d clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x209459d)
#21 0x00007f7301737210 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x203c210)
#22 0x00007f7301737856 clang::CodeGen::CodeGenFunction::EmitAnyExprToTemp(clang::Expr const*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x203c856)
#23 0x00007f7301692162 clang::CodeGen::CodeGenFunction::EmitCallArg(clang::CodeGen::CallArgList&, clang::Expr const*, clang::QualType) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x1f97162)
#24 0x00007f730169174f clang::CodeGen::CodeGenFunction::EmitCallArgs(clang::CodeGen::CallArgList&, clang::CodeGen::CodeGenFunction::PrototypeWrapper, llvm::iterator_range<clang::Stmt::CastIterator<clang::Expr, clang::Expr const* const, clang::Stmt const* const>>, clang::CodeGen::CodeGenFunction::AbstractCallee, unsigned int, clang::CodeGen::CodeGenFunction::EvaluationOrder) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x1f9674f)
#25 0x00007f7301768f7f (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x206df7f)
#26 0x00007f7301768a75 clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorCall(clang::CXXMethodDecl const*, clang::CodeGen::CGCallee const&, clang::CodeGen::ReturnValueSlot, llvm::Value*, llvm::Value*, clang::QualType, clang::CallExpr const*, clang::CodeGen::CallArgList*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x206da75)
#27 0x00007f730176b2fb clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(clang::CallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot, bool, clang::NestedNameSpecifier*, bool, clang::Expr const*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x20702fb)
#28 0x00007f7301769819 clang::CodeGen::CodeGenFunction::EmitCXXMemberCallExpr(clang::CXXMemberCallExpr const*, clang::CodeGen::ReturnValueSlot) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x206e819)
#29 0x00007f7301757031 clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x205c031)
#30 0x00007f73017a0a3e (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x20a5a3e)
#31 0x00007f730178f59d clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x209459d)
#32 0x00007f730189a3fe clang::CodeGen::CodeGenFunction::EmitReturnStmt(clang::ReturnStmt const&) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x219f3fe)
#33 0x00007f73018a2b7c clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x21a7b7c)
#34 0x00007f7301901063 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2206063)
#35 0x00007f73019228d0 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x22278d0)
#36 0x00007f730191c0f4 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x22210f4)
#37 0x00007f730191fe68 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2224e68)
#38 0x00007f730191aef1 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x221fef1)
#39 0x00007f73019bd13c (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x22c213c)
#40 0x00007f73018f03fe clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x21f53fe)
#41 0x00007f730033121a clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0xc3621a)
#42 0x00007f73023f87a5 clang::FrontendAction::Execute() (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2cfd7a5)
#43 0x00007f73023666f4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2c6b6f4)
#44 0x00007f730247657e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x2d7b57e)
#45 0x000055bbf1bb9bc9 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-19/bin/clang+0x11bc9)
#46 0x000055bbf1bb6b55 (/usr/lib/llvm-19/bin/clang+0xeb55)
#47 0x00007f7301ff9369 (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x28fe369)
#48 0x00007f72f890ffa8 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/llvm-19/bin/../lib/libLLVM.so.19.1+0xdfcfa8)
#49 0x00007f7301ff8cdd clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x28fdcdd)
#50 0x00007f7301fbde05 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x28c2e05)
#51 0x00007f7301fbe06e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x28c306e)
#52 0x00007f7301fdb64c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/usr/lib/llvm-19/bin/../lib/libclang-cpp.so.19.1+0x28e064c)
#53 0x000055bbf1bb65a1 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-19/bin/clang+0xe5a1)
#54 0x000055bbf1bc4356 main (/usr/lib/llvm-19/bin/clang+0x1c356)
#55 0x00007f72f763a24a (/lib/x86_64-linux-gnu/libc.so.6+0x2724a)
#56 0x00007f72f763a305 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x27305)
#57 0x000055bbf1bb47b1 _start (/usr/lib/llvm-19/bin/clang+0xc7b1)
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Debian clang version 19.1.7 (++20250114103228+cd708029e0b2-1~exp1~20250114103334.78)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-19/bin
clang++: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/repro-b39b7a.cpp
clang++: note: diagnostic msg: /tmp/repro-b39b7a.sh
clang++: note: diagnostic msg:
********************
```
`repro-b39b7a.cpp` and `repro-b39b7a.sh` are attached, with .txt extensions as the original file types are not allowed.
Sorry if the formatting's a bit off, this is my first time reporting an issue here.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1tT5Diy_jXmRUGFLPn6wIMpoIddprsP1Jnp80TIcrrK27blkORqOA_72zcku_CFKrqpqZ7Y2NkIIgA7nZcvU5kp2cmUKtY1wIXjXzr-1Rlr9UbIiy3UX5mWTLhnqcieL24dElaoVUW9RnpTKOT4l7xk9dqNUSb4V5CoqNgaHP_KIdFG60Y5NHHIjUNuNm266GgWXFQOuSnZM0jlkBtVlF9h45Aby8ohN27skBvLyN7eMOIH5y5JaUxZxDBNSUpIHDASAXYD3-U4Bepnfs5DHrgky0OXxRQykoLHAjf3Aj-OHBIjLZCERoqs5eCQJdqABIeECjFjyVpkqSj1C4kuRL3Pkp5uIaRR9v8dcvMPLuT2__y_B0YIU-gblOXCwYmDk_sRM5QXJRg2OHEC3P3wpnFwoqFqSqbBoUv93EDNKkBXIIstZA69dnCitGy5Rsv71edLpgA54aWDE4RYq4VDAqSgzB1ijXTCSyRBt7JGSjNd8EfOlHbocseQBIanIU6MEx0SO_QSOeGV0Su8cuhlp_o-pVbIoVeoqPVErRshkEOTF_UcurwRwqHLlSGj1y_qFrVGT72eXNRKj7X1BzWQpe7gRkVZwpqVxnuclSViqBb1eWcbqqBKQaK8Rg4hHQqk9-sS3Zoorb--iDaPf7l8voKctaV2SGQubllpjRogXPQqztDcsnIEFE4aWWwtPIkV0C2LQxAYKppYGR2-I6CNFhUr6sGBlmEv1rAJL53wavFK_c51PbdRUDk4-SisZkhCJbbdegW08yhqmGQVaJBohXIpKuvBfmEoxGoEUgqJilppYBkSOeKSqU1hlucSfdsUfLMDF6mNaMsMpWBFcCElcI1S2LBtIST6VujNIeHTpeL4l0pnIOVCP-m9C6_QJot06aNVIM-Z1oxvKqi1yRRmeZnfbuQFfohDkzwGhiTuZNjlfZ7SOA3ZgjfNiaSZnLWX9V65anMisdFcbM-5k4qTW7QGbfHPRVmKbyYUCpMZDC6zXOTg5PPddfJwjVSbVoVGDKXt2uRDIbVZfm9oWpbb3a_zRop_ANcmiSvVWm0RqzNU1Lxssz5OTDyhlPGvWrIuGzfWDg5KQYaUaGV32TzJlBK8YBoyJNsaKS6LRpuwedCMf0VZWzWdLXjh4PizFGvJKsTkuu1gownqi8ulQy7ROUfnSmcOveLdFYLROVSFPjf6o_MvlhidZ4ViaQnnnVVMKVBddVh0ads10hy6BJGbLNcwqUxUawS1XTQ23-OEGLLhOZq4oUMT32h1d_fbr-j2Hq2hBslskRA5yoCXrP_XlFybG0IHJ_Qwpw89h3qNuMiMu-VhPsghFCP8hDHGYR6SPIo5ozxA1o1dqnpW3R-fZVFri_Oq81Q0EEn27VEoLYFVpqyQpS0NJoeZ5HTTKmliokh3kWEre2q0uFkshltFanBYKLFw44XrkEv8BGlIedCFsdHWnWkb4RDv0_a-rR-Kdc3KX1idlbbBiE6kkI9DPChEpgq5mLj4j0vJ8oy4Iyl0LCUMvBz7Oykdk6coeAy887Ko26fzdd12N7hhGliOlGN_xNAbGFLsBnGe-nm_Nix-S5HBB6gn_9y0ddcM2YsfQCdZJkGpT7mpdMuSKYPyISY9sQmOMcmXL_fAhcyugJddL-CQ5DWRkfDQAC_yAuQL3R97IBWinD34YNPNneB2sRwTMJbZuUn6Y3-6OfNSPx_w9yf4hx6mqXciWQR7Pk29QVYwlUUhD7P3-fq6KvRnUdQa5O-F3iRlsa5NRp26-_qpkQc9MpZx9xsrWzAeuq1z8R3i1WWSJNyUgx8g_nstvtUfRf2xLcvHozLQQUxpHmYDpuEU04D5Wfx-TJdfvvxqG9dP8lNj0raQ3f9LVpYGztl66q--Efa_gt6ItxfTWLN721tadzyUQh9YFR9Bacg-smpYUYeX0EzB03kgyP0sHjwQzTwQR-4f8cABxOe3j0P1hCBA5I5AiKcg-CGm7hEgHBdtf5LJPsfU7RtZQl08y5w0jo_xe29cl4q-a_gJ80gUx_FgjTuzhjDmv9-azopfoGxAHpmTf2LmDBnzB4vJzOI0ivgx_lN6v--U_mm-83EU8cES-sp38X-g7-KR77xZJxEG0RGdxD6__RvYSnkQZYOt_rzCh8z7b4X_yRU-ZN7ggeCvXuENCOFfr8LPOjuGGYWTyWI-ozDImjVQzMVpfjpZAU7zF1lk1rlEuR8fkT0fOCuZfO3MV47sVu7pvBR7fjzkR-LOawFx8futSernHzDl4JnCer0ns52yJLycwhiTydzkyA-ONnklVlA1bxp-SkMiPxgMobPTH-IG5Likksj1G2c-PcVdYQwK3i4jk3v_07Jy9dzAKU9g4tANyIDB_ATMDb13noCNMHjr4OtNEL4v5bMUWujnBn6XrLE94nJ04Fnorql4lKxeg0OX48MsXemhK77tKac03eI77JfdH9NTMl3pOUX3duu9xiWp0pJxCyPYY_62tq-gs-4E-Z3srresbO3R3SeZGahOGD1B6I1y-bw7jPLwdHUjyPJwJGveB0UsPGKfsacTNajv6Ybe1V8uP3S-2xG_GeB7mtEhlPtdQXL46t4EMZX2no5msjBP28hmLBy2TWR-WJiSPP3vVuKnFrwQkzwdPPCXPyw0IPz1Dgsp_vO2EtT9T2rv6bTXjWJGc3i_NZ2nbSMysWa4PqobJ7PFjXOajzwzbXcjRtLwmCNHUTWirTOj9e-F3ohWP3DRzA8gR1STmrgn-72xlzkdFixMw-HQcvbiN8YuDuh7X_zaLwzA3Jza_qEUKStNPZnW8Jfnv9dK7Ahv61z8jMAgOMABHcCYdnExIVH23T3sryJru8_3urDojN5pfgV5URedsT8CTXd9aHJOZyoJo2zYu85eAscux_l3jzP3m_pvZKKL8-G8cPZONnZzCKLjTDxs2AmV9yCIBuWjmfIM8u8W57nyK9HcwRZ6VccmdFdOCr6bQz6qtNPmIk4zl_KTyeLEpUMO86ZVPcrxrDZdMv4V6mwpatVWILuL3YdAb0P0QYq2uYf8lPk398e1yJt0CZhSl7hsrPtnJhUkD6upcg9QsVkdOW395zQgLhvUnJR_QvMonL6XvJGi1lBnybhIPgFvNRz5pdUB_HiehaPXhx6dKhYEwTyPVU1RgrytlWY1h4lqvbYTaGeWnLTe8CANRhnKmxRf4oWBH8J0O2TVHGzYvnyJNO8xJjaedGVnYeqHo4jdFUnfT9PcTdM45THi3H3sv1UeMn0iJXs2y4cu-YaN2tX-ZGhyjSzRVhTZD-ve2W8PY9yUD9saL5jpF6S-_y5-kPqjAJtWkTyPaXAyaKMcaDBSPZp-PIjznEWjyrmUTG3ugYstyOelCdOn_kDvvq0fWA7l8wT_vG9CHqX1gYEX7T4Pvz7J149ZznM2VC0vnoEV8Wyy58lksd0l4OXSXYqqYnU2Txd7I8h-mGuuicbYxEqHLgfCBy2Lem0pdwePLw88PvKnJ9ft_kmZKvijsuR9XE6IzYVHLVmh1e72jB0rS7MKu5PT_r4hGe3CktEgw6kiJePZsB3zpyUvTzPA_kGgbXpgrxLzDv1JLpk9aAgOHeW9QZpMitOpseAE8LBCfXeGBeAA3ovF30SqDgPxN5HeFWq6fxvFXsXK8jfgWsjbqinHsdqwwoTJ67PrN7HrA-pnIkhxMKR0f7q5z7M08Pghba9Gf0_q057CdAj5PxHB0-VqwIE3NJ0-nZcZn_UN-q4Q7nS2KSZ5dZK9EqLsk_g797ajUuWzoef2valK3KN-YCeI3ldOOR29G_T96afmlBGPve9TcxISb2gl_WDOkGIfPT6aZx6VZlI_jlT-YRF0nBHCmW-8MHVRx_xdUPAw7eHdXTM_NOnmoF7GR1De94yI94GYs6KErBtygqdCd7MXLrXebRWg8y3SAikAVIyaOiPpCtKC1T3jLUhViBqZMFyEne7dYArxset6LqbEXuNZiCNMYsApOXf_CU-N-88REaXeIuzr9IrJNZi-AfWwNnyELE5WGwksQ5XIoDRUjVDFk4MT212WJWRXhTX9TRRfIVb3g2dZwda1UHZGT60tH5zslsdRP3aeqR9QSlarZPkLWv1yjW4-3d19-v324wd0c3t3_YBWn-zly__9gO6vP3-6Xzl2MujzvumiSNmJzUMTRi8EEpDtBSBDTHf8ftxscqOrZs902B9nojbvxf-Pu2A0LOYE-JVNAbZwzm-pjb0jAXXTbJDZQUKzbBb6SSN40lCbFaAQU3ZATMhiXdSstENUSD83oOzztdDIdGbfIOvnBh-ElM-oyPspN1kxre2koh3sTQuNRJ4bcXZkuVCoekZ5IZVGuqigH28r6jViNbIDa3Z-dHGWXdAspjE7gwv7mQsJXJ-cbS4w8NgNo8gLOeURpm5GWOD7aeblqRdhfFZc9CsyciMvdskCcpLyNMtdD4dZjl3Hw1CxolyYtbQQcn1m5V64ZhvinpUshVLZWWxCevcSx786kxd28aXtWjkeLgul1cBCF7q0A9xL-4R_hewf3aQdKPRtA7VBH6rGWjuM0-5maPtdBNoWzM6xoqJGDGXduOnLNB2Cp0aCMs46a2V5cfxQYG_u9oL8KwAA___gWKRx">