<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/99868>99868</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
crash on invalid
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
clang:frontend,
crash-on-invalid
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kadircet
</td>
</tr>
</table>
<pre>
```cpp
$ cat preproc.cc
template <int> class b;
class c : b<1> {};
template <int> class d : c {
struct {
b<1> e;
} f;
};
```
```
$ ~/repos/llvm/build/bin/clang -xc++ -fsyntax-only preproc.cc
preproc.cc:3:11: error: implicit instantiation of undefined template 'b<1>'
3 | class c : b<1> {};
| ^
preproc.cc:1:22: note: template is declared here
1 | template <int> class b;
| ^
preproc.cc:7:10: error: implicit instantiation of undefined template 'b<1>'
7 | b<1> e;
| ^
preproc.cc:1:22: note: template is declared here
1 | template <int> class b;
| ^
clang: /usr/local/google/home/kadircet/repos/llvm/clang/include/clang/AST/DeclCXX.h:464: struct DefinitionData &clang::CXXRecordDecl::data() const: Assertion `DD && "queried property of class with no definition"' 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: /usr/local/google/home/kadircet/repos/llvm/build/bin/clang -xc++ -fsyntax-only preproc.cc
1. preproc.cc:8:6: current parser token ';'
2. preproc.cc:5:16: parsing struct/union/class body 'd'
#0 0x00005579289eae28 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /usr/local/google/home/kadircet/repos/llvm/llvm/lib/Support/Unix/Signals.inc:723:13
#1 0x00005579289e89fe llvm::sys::RunSignalHandlers() /usr/local/google/home/kadircet/repos/llvm/llvm/lib/Support/Signals.cpp:106:18
#2 0x0000557928952e86 HandleCrash /usr/local/google/home/kadircet/repos/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
#3 0x0000557928952e86 CrashRecoverySignalHandler(int) /usr/local/google/home/kadircet/repos/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:390:51
#4 0x00007f44ff25a510 (/lib/x86_64-linux-gnu/libc.so.6+0x3c510)
#5 0x00007f44ff2a816c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#6 0x00007f44ff25a472 raise ./signal/../sysdeps/posix/raise.c:27:6
#7 0x00007f44ff2444b2 abort ./stdlib/abort.c:81:7
#8 0x00007f44ff2443d5 _nl_load_domain ./intl/loadmsgcat.c:1177:9
#9 0x00007f44ff2533a2 (/lib/x86_64-linux-gnu/libc.so.6+0x353a2)
#10 0x0000557928bfbba6 (/usr/local/google/home/kadircet/repos/llvm/build/bin/clang+0x7fbdba6)
#11 0x000055792c132e4b clang::CXXRecordDecl::hasSubobjectAtOffsetZeroOfEmptyBaseType(clang::ASTContext&, clang::CXXRecordDecl const*)::$_0::operator()(clang::CXXRecordDecl const*) const /usr/local/google/home/kadircet/repos/llvm/clang/lib/AST/DeclCXX.cpp:631:10
#12 0x000055792c132d1d clang::CXXRecordDecl::hasSubobjectAtOffsetZeroOfEmptyBaseType(clang::ASTContext&, clang::CXXRecordDecl const*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/AST/DeclCXX.cpp:681:13
#13 0x000055792c1343dd clang::CXXRecordDecl::addedMember(clang::Decl*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/AST/DeclCXX.cpp:1260:13
#14 0x000055792c12c722 clang::DeclContext::addHiddenDecl(clang::Decl*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/AST/DeclBase.cpp:0:13
#15 0x000055792c12c829 isPresent /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/Support/Casting.h:622:55
#16 0x000055792c12c829 isPresent<clang::Decl *> /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/Support/Casting.h:630:10
#17 0x000055792c12c829 dyn_cast<clang::NamedDecl, clang::Decl> /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/Support/Casting.h:662:3
#18 0x000055792c12c829 clang::DeclContext::addDecl(clang::Decl*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/AST/DeclBase.cpp:1745:18
#19 0x000055792b2f7d03 getLangOpts /usr/local/google/home/kadircet/repos/llvm/clang/include/clang/Sema/Sema.h:593:51
#20 0x000055792b2f7d03 clang::Sema::PushOnScopeChains(clang::NamedDecl*, clang::Scope*, bool) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Sema/SemaDecl.cpp:1510:7
#21 0x000055792b33dac2 clang::Sema::HandleField(clang::Scope*, clang::RecordDecl*, clang::SourceLocation, clang::Declarator&, clang::Expr*, clang::InClassInitStyle, clang::AccessSpecifier) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Sema/SemaDecl.cpp:0:5
#22 0x000055792b44bff0 clang::Sema::ActOnCXXMemberDeclarator(clang::Scope*, clang::AccessSpecifier, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::Expr*, clang::VirtSpecifiers const&, clang::InClassInitStyle) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Sema/SemaDeclCXX.cpp:0:0
#23 0x000055792b0335dc clang::Parser::ParseCXXClassMemberDeclaration(clang::AccessSpecifier, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::ParsingDeclRAIIObject*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseDeclCXX.cpp:3248:26
#24 0x000055792b035ced clang::Parser::ParseCXXClassMemberDeclarationWithPragmas(clang::AccessSpecifier&, clang::ParsedAttributes&, clang::TypeSpecifierType, clang::Decl*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseDeclCXX.cpp:0:0
#25 0x000055792b02e8a0 MaybeDestroyTemplateIds /usr/local/google/home/kadircet/repos/llvm/clang/include/clang/Parse/Parser.h:328:9
#26 0x000055792b02e8a0 clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseDeclCXX.cpp:3838:7
#27 0x000055792b02c338 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseDeclCXX.cpp:0:7
#28 0x000055792b053ff1 empty /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/ADT/SmallVector.h:94:46
#29 0x000055792b053ff1 empty /usr/local/google/home/kadircet/repos/llvm/clang/include/clang/Sema/ParsedAttr.h:843:40
#30 0x000055792b053ff1 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseDecl.cpp:4668:23
#31 0x000055792b0737b2 is /usr/local/google/home/kadircet/repos/llvm/clang/include/clang/Lex/Token.h:99:49
#32 0x000055792b0737b2 clang::Parser::ParseDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseTemplate.cpp:238:11
#33 0x000055792b0725b4 clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseTemplate.cpp:0:0
#34 0x000055792b071e78 ObjCDeclContextSwitch /usr/local/google/home/kadircet/repos/llvm/clang/include/clang/Parse/Parser.h:1093:11
#35 0x000055792b071e78 clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseTemplate.cpp:43:25
#36 0x000055792b04d604 ObjCDeclContextSwitch /usr/local/google/home/kadircet/repos/llvm/clang/include/clang/Parse/Parser.h:1093:11
#37 0x000055792b04d604 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseDecl.cpp:2017:25
#38 0x000055792afd63cd clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/Parser.cpp:0:0
#39 0x000055792afd4886 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/Parser.cpp:763:10
#40 0x000055792afcfe2e clang::ParseAST(clang::Sema&, bool, bool) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Parse/ParseAST.cpp:162:5
#41 0x000055792969af1f clang::FrontendAction::Execute() /usr/local/google/home/kadircet/repos/llvm/clang/lib/Frontend/FrontendAction.cpp:1082:10
#42 0x00005579296067ad getPtr /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/Support/Error.h:279:42
#43 0x00005579296067ad operator bool /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/Support/Error.h:242:16
#44 0x00005579296067ad clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Frontend/CompilerInstance.cpp:1061:23
#45 0x00005579297828ce clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /usr/local/google/home/kadircet/repos/llvm/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:280:25
#46 0x000055792629182b cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /usr/local/google/home/kadircet/repos/llvm/clang/tools/driver/cc1_main.cpp:284:15
#47 0x000055792628df0d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /usr/local/google/home/kadircet/repos/llvm/clang/tools/driver/driver.cpp:215:12
#48 0x0000557929440429 operator() /usr/local/google/home/kadircet/repos/llvm/clang/lib/Driver/Job.cpp:440:30
#49 0x0000557929440429 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#50 0x0000557928952bc6 operator() /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:0:12
#51 0x0000557928952bc6 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /usr/local/google/home/kadircet/repos/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:426:3
#52 0x000055792943fb12 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/local/google/home/kadircet/repos/llvm/clang/lib/Driver/Job.cpp:440:7
#53 0x00005579293f9cc7 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /usr/local/google/home/kadircet/repos/llvm/clang/lib/Driver/Compilation.cpp:199:15
#54 0x00005579293fa207 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /usr/local/google/home/kadircet/repos/llvm/clang/lib/Driver/Compilation.cpp:253:13
#55 0x000055792941b959 empty /usr/local/google/home/kadircet/repos/llvm/llvm/include/llvm/ADT/SmallVector.h:94:46
#56 0x000055792941b959 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /usr/local/google/home/kadircet/repos/llvm/clang/lib/Driver/Driver.cpp:1943:23
#57 0x000055792628d40d clang_main(int, char**, llvm::ToolContext const&) /usr/local/google/home/kadircet/repos/llvm/clang/tools/driver/driver.cpp:391:21
#58 0x000055792629e677 main /usr/local/google/home/kadircet/repos/llvm/build/tools/clang/tools/driver/clang-driver.cpp:17:10
#59 0x00007f44ff2456ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#60 0x00007f44ff245785 call_init ./csu/../csu/libc-start.c:128:20
#61 0x00007f44ff245785 __libc_start_main ./csu/../csu/libc-start.c:347:5
#62 0x000055792628b861 _start (/usr/local/google/home/kadircet/repos/llvm/build/bin/clang+0x564d861)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 19.0.0git (git@github.com:kadircet/llvm-project.git e60ab4acfbb1b177e30618b0d4ce6a795a067cbc)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkW01z47jR_jX0BWUVCfDz4INGtt6dfT2xa-xsXLmoQBCUsKYILgB6rRzy21MASZGg6I-ZkTybylSyokGw8fTTDXTjC0vJ1iWlF07wyQkuz3CtNlxcPOKMCULVWcqz3YUTus3_SFU57qXjzh3oA4IVqAStBCczQppyRbdVgRUFDlqwUjnoCpACSwlSB31qPzX_bUoJcNBcv1t4uqoTfXKiy1HNF0Vm5mNivjI1AZBK1EQNS0Avne4FA-BElyDvGxo22uk6xDAuhD74twOXglZcOnBZFE9bBy7TmhWZ_mWlA5ekwOUanD8TB35y4CdwnstdqfDzOS-L3QFxg7_RHDlo7nlaOyoEF_qBbauCEaYAK6XCpWJYMV4CnoO6zGjOSpqBnikYdVo7MOqpQMCJFuA91APzT9d2gqsJhBochFpCyRXVv_vGmQQZJQUWNAMbKmgv0DMC3-EifeuT_6YhRRqWe3zSoj2QSU86QPpzCdu3btxPt-PAZS2F9lJOcOHA5ZrzdUEduNzwrf7p-vqhQzcy4JKVpKgzOiiZ3907cHlJSbF4eJhtHDT3Q1-31vbAS80u02xfYoWBA8MOj4Pmi4eHr5Rwkenvm6IMK-zA2IEJILyUSouaS0mFMZgTupeXWogDQ-BA-EdNBaMZqASvqFA7bdGGkj-Z2oCSg2zfvgOhAyOQY1bQbNZwc3t9Nb-7ArJOt0wBDNJ6DbTqQgHFwUapSmpYcKnZYmpTpzPCtz0v-ue8Evx3SjRrTMqaatoALjPQkgXUhgIisNyAFJNHJTChDlx0HZ9KSTMgeS2aYv0llpIThhXNgKhLIIlglWoh3ylMHkFWbyuNzBS5s8bst4KvBd4CLNb1lpZK_qDVf2QY81pMlu_HDpqHZqyuhaClAhUWkgqg-CMtdb_Tftx1OTglIdA9yIjQn7Jy3fqZ1rI0Rl62XYJnOy0x67uwA5EL3GfXdd0giBIYJxRTGAOjrXE-uZPNw61gpTJM3zfmivtKAv-54lIJirfGERdA90WY_AjT3Q9LHbi8qyvtgQ5c_r1kz7qArUtcyBkrzfAGTVRAvVbeSKs4yemUVl_rshH1Cy6zggrZdrTjA-8Q6zRBD8baYl7cI4Y24gDSOAQNqoXpKceHZOTq0eaJit2Cl4o-qxZfhIxn7dGhKXTW9xaNDoxP5gGvoEaJjnGB1-P2W9xR7vt5DgMceC4wNm7lPsfhKvTPC1bWz-frsm5ekJnks9CBn9xnRALPdWDSywxsmTj2QgJWq0ptBMXZ6pEVxUpHV6oHnCaqzhy4LCul9R9Wm2nn9XVsiMJefjjG7EcQCMwkNXKkIdqBy5n5ayczWmnWKi5N1zA1jWQ9eMwHgiNbsO_7KQQ41UO7EaWyhhNTZCTEnkke9hLisQSUBWBVFquC42yV8S1mjbKsNMrq4q1cE9yI87xIQxpwmYx0RQjDb7RPgDDc20d3fXtES_M0xWEr84jDvmk8ytMsxaHVvDX0EA9B6qfg9Qi_wfKuTnmqY-Zc3eS5pOqfVPCb_Gpbqd0nLOn9rtJj7kDO_O6-9f52zH2pjTZrgHMN07x2oL9ym0edJGDFRTPu2S28KKV5Pkb21BjZzpiavhwir0la98TCMbGZl_1liD0xGaYjdgFOk4FGZPgoe4sMnGU0-0K3qRmfB3VNlQ_QwoOhO1LDt9WAJIIQjKB1xuiU-IVlGS0b0B-nhvaVVo-xEsFYiRgmgMlbQaXO6H48BPZzjLZgEA2xVKxcm2lGaCZRQdAjC19F5qDFiD6g-dMz3g-DjNxRL4-mIGe7ckWwHCH-G97Sxr_tTtq4_EdqEUKzMrFXIp5S4g23_okO7UV-MEhHtQbJUIMU5lHmIrCm6hqX65tKydNMne_oFrc_htggQYOETmfJ7hSuAWdGQjNhqeXmprwjvKKLDWaltMkdOM985D_mm7Y45bw4qgEGKurWOwsEZnkm6hW10ogUoQwTOK1ok3MvGdUpSvyCHoPiQVw4VN1Muq85wc36wEG_wm22MA6MV8-VOBT3uVzoqefnkqk7tSvo6PWc6Ln-XUUJy5mOSifn2e2nNZpkK6VIfT_Nc3ea5DlRN-Xi4aGJn0Mm3sH4gZ6v09rPU7_UCqcFnQuBd19pbg9_9-3a1y0WeEsVFdesyUbQ1buM8xsTao9JdsnM2LCHJjydkfpUwTX_39vJynZSF6EgI0OQt2bRZPC8eHgwsG1zGZeO320YIymbKyVYWisqD8k5aDfrjPK5zPl0fVauNZ6v88-fb9Jmley4Q7wB0v3atCLox3piGPbU-iNqA0Kz76P2H0xtbgVeb7F8g-VJGl8lWmfpewFNyn4Y8j-Ox5F7BjaHkMbYBV_wLqWXVCrBd3uvyE4UOC2swsROBON-rq1RhlMo37B0Y-SWeTLRg14NGK--fMHodWk23bJmCfFnGhnFKLZjcjRikCAUv86g7igDxx8yp_hj69v8kZb_z8rsW2OxFvzjY9LEGNgkPS9K7drez5LftuvHdcuBuWLbXAHKcw9QPfE_xdRgfqkz67stLorfKFG86YWJb_Z_elDJSUC9mVL3VjGwYl8n1n4_htn7AB2u19xqMPL3WcThBOZkTvr9ztnWvG5yp5aWLnkaZT_tLqkOOSXe0r3UUzp0681-GJpg3c8r7W2N1I1QlELAThRTrumzA5dmdGpcOdGg-oBib1l0aN7pMvNcUdHZ_NBrmnz4bRv-QNI1rjYebr89STnldMZykk7f1lGgiVNeP0tGo3w5gkHqv0phJ3FgoZsm7OOC_Wsi7r9lpP9eNu3cDo3y48ijUQxu0t8XgzWcuz-ZIj-0Q_dNmZ3nJmhk8GAK5XtHb4WFYuVa5-_f1yO_y9gfZE4T6GA_50ejNNjPQtf_6xk0mkL5ToN-dE99u8a4jRPn8N246HrRyPhWSojzLETk9dnu1bOiosTFi_Qeg55BhGrSpRPyI6aHuWREjB_H4esRg1fX9IkWh8vWNxX-o6a3ShzuL_yf4HVlFrKuJpxkv9j2hWd1QT9vKy7UnTLD0QkHjI6RKET2XoTv2qSQnEJ6QIpZUY_HejTadROpo68iWwrM7-67ZWSzEdH7u28ljEmY4NzLhxoshR4TymxOjGe3q4WU1CYEHBVy19TgsWl1fyQmhiP-oY3eDSOcgTVVt0qcdnPnSoh2_gYjk_XCHhSaAtVtoxtLfxg2HzZnv_bY_Clsw11hvq1YQcVnc-aTUMvgrQ9YvjzyjyN3w4FLjJH156Q8ew7kW6lOEsUwJtRe7Dba9AKf-NTC1QEVRx50O93uTddfvoiqi1Wxa4cq38pTQph4MUwBId5qi1lpHb8bbg9ssOiPJbQbAVYZXIAnzrLjqas4L3RxJtiTTtOXHca9Zr7Z4Oo1i2zN4ix3M9ARtPAaxgb6DdZU9Hx8Us3RxomW0aY7g42N0-jbPHTaemYndTBeWClH4vuuDxNgH7s5ntdddqB-5WmXAPvas9BgWE2mEGmnGBCY16Xp8ith_Mq8bc8IoaumCsFFkWLyuMpLO9K3zDTdbOEt-HaLy2wcXCb9V6q2Hq9061gbe-AISrBy3eYPjXPvP1ityPOzuRjgoHmKJSMraaq37mJV1gUrJTBTsns9EocLbQptof69rjLYFJ4PT2Q7-1NVV1o3rm1yjNOPLy0z3l8vWwvh4upZCSybk-Yj7wvc8cHNlIRH9L7vQ-mOQHpTIHuzT534bLey6_IO57TYWf70uu9-9KFUH4bW4ZDAzmp8lKeetWz2P9d9PmD463cFAjt_Q3lCSPQi_SZc44PcuLOJlVGMPtQVXtpUf6Xq3Jo6nI6hgWpdrmUWeAeBOvBHVGHofjNVv_JUvszTrzy9ZlJZPL0W-PcOVmEm2js_30Bt64U_iWAYIPvkYGDnsr6XJkHys3eognAK1AsMXw6erRR3IuN-yVs-0OqnyLQuh-mflzTrjQMbH2S7vtvOybpMvlPHDLPzdpD8C-SyKDFzr35VMohHcxIaRhEwh_6PcLi-A_PyxEK_OLcgepG9ZBCMLhT4QUgwWK0KluqAhoVa6bR1tb-oQGR9eJWivaox9ZHpMpFvRfTQHTcaxQEwn7CSqXE7zaMWfm6EN1cjzGkN2GsSelNCLU2mlJgUjvzIWhYK4cgn0zj0QCP1RDclgtDP4tDb35To-m5_IdWUgLydNgPS9uLmcmJzeZE-M90FMgo85GugtaTg_AkoDiSlgA2m-sNmwBMVkvESeMnMnblrZpRcM-X47uAKI5oP1BpeY5zpL2jo4tTHJE9TL_WiiCI39OLUzXxCQxwlAXbDiKSkvwvS3Ys-yy5QlqAEn9ELL4JeGHhRGJ9tLvI8zgkOaESpmyJIgwz6IQ19GqI8hZicsQvoQt-NIPS0l_kzGhLfp3GCQ5-gDEeO79ItZsVMw51xsT4z9y0vkiQO47MCp7SQ5vY6hK0poAMX-7_QPN-vwHQvdCJ7zstzVj7hgpkXweWZuDCEpPVaOr5bMKlk36ZiqqAXzX1OXoL2y7NaFBfff1-0UeHpAv4nAAD__8JugYo">