<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/130939>130939</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clangd] Crashes when opening a file with invalid escape sequence
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
henryhchchc
</td>
</tr>
</table>
<pre>
```c
void foo() {
printf("\o{}");
}
```
The code snippet above causes a crash in `clangd` when generating inlay hints. The crash occurs only when the malformed `printf` is inside a function.
The crash log is as follows
```log
I[18:28:11.499] clangd version 19.1.7
I[18:28:11.499] Features: linux
I[18:28:11.499] PID: 1610337
I[18:28:11.499] Working directory: /path/to/workspace
I[18:28:11.499] argv[0]: /nix/store/xkb7pp8hidrq6yam5i23csp4y1azk29d-clang-tools-19.1.7/bin/clangd
I[18:28:11.499] Starting LSP over stdin/stdout
I[18:28:11.499] <-- initialize(1)
I[18:28:11.507] --> reply:initialize(1) 7 ms
I[18:28:11.670] <-- initialized
I[18:28:11.670] <-- textDocument/didOpen
I[18:28:11.671] Failed to find compilation database for /path/to/main.c
I[18:28:11.671] ASTWorker building file /path/to/main.c version 0 with command clangd fallback
[/path/to/workspace]
/usr/bin/clang -resource-dir=/nix/store/hwp5wkjs8kf8nvvkq3byv3zid7nclrvp-clang-19.1.7/lib/clang/19 -- /path/to/main.c
I[18:28:11.671] <-- textDocument/inlayHint(2)
I[18:28:11.672] <-- textDocument/inlayHint(3)
I[18:28:11.678] Built preamble of size 232664 for file /path/to/main.c version 0 in 0.01 seconds
I[18:28:11.678] --> workspace/semanticTokens/refresh(0)
I[18:28:11.679] Indexing c17 standard library in the context of /path/to/main.c
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. /path/to/main.c:2:16: current parser token ')'
1. /path/to/main.c:1:12: parsing function body 'foo'
2. /path/to/main.c:1:12: in compound statement ('{}')
I[18:28:11.694] <-- textDocument/inlayHint(4)
I[18:28:11.695] <-- textDocument/semanticTokens/full(5)
I[18:28:11.695] <-- $/cancelRequest
I[18:28:11.695] <-- textDocument/semanticTokens/full(6)
I[18:28:11.695] <-- reply(0)
I[18:28:11.757] Indexed c17 standard library: 3493 symbols, 42 filtered
#0 0x00007fffeafee11c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/nix/store/sj58s6n3rhvp21b4zmh7igbwzgvh8kwz-llvm-19.1.7-lib/lib/libLLVM.so.19.1+0xfee11c)
#1 0x00007fffeafeb55b SignalHandler(int) (/nix/store/sj58s6n3rhvp21b4zmh7igbwzgvh8kwz-llvm-19.1.7-lib/lib/libLLVM.so.19.1+0xfeb55b)
#2 0x00007fffe9840f30 __restore_rt (/nix/store/6q2mknq81cyscjmkv72fpcsvan56qhmg-glibc-2.40-66/lib/libc.so.6+0x40f30)
#3 0x00007ffff422cfb7 Diag(clang::DiagnosticsEngine*, clang::LangOptions const&, clang::FullSourceLoc, char const*, char const*, char const*, unsigned int) (.isra.0) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xc2cfb7)
#4 0x00007ffff422fe55 ProcessCharEscape(char const*, char const*&, char const*, bool&, clang::FullSourceLoc, unsigned int, clang::DiagnosticsEngine*, clang::LangOptions const&, clang::StringLiteralEvalMethod) (.isra.0) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xc2fe55)
#5 0x00007ffff423bcb0 clang::StringLiteralParser::init(llvm::ArrayRef<clang::Token>) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xc3bcb0)
#6 0x00007ffff466c1cf clang::StringLiteral::getLocationOfByte(unsigned int, clang::SourceManager const&, clang::LangOptions const&, clang::TargetInfo const&, unsigned int*, unsigned int*) const (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x106c1cf)
#7 0x00007ffff4e6bc35 (anonymous namespace)::CheckFormatHandler::HandleNullChar(char const*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x186bc35)
#8 0x00007ffff49cf329 clang::analyze_format_string::ParsePrintfString(clang::analyze_format_string::FormatStringHandler&, char const*, char const*, clang::LangOptions const&, clang::TargetInfo const&, bool) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x13cf329)
#9 0x00007ffff4e6d366 checkFormatStringExpr(clang::Sema&, clang::Expr const*, llvm::ArrayRef<clang::Expr const*>, clang::Sema::FormatArgumentPassingKind, unsigned int, unsigned int, clang::Sema::FormatStringType, clang::Sema::VariadicCallType, bool, llvm::SmallBitVector&, (anonymous namespace)::UncoveredArgHandler&, llvm::APSInt, bool) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x186d366)
#10 0x00007ffff4e6d9c0 clang::Sema::CheckFormatArguments(llvm::ArrayRef<clang::Expr const*>, clang::Sema::FormatArgumentPassingKind, unsigned int, unsigned int, clang::Sema::FormatStringType, clang::Sema::VariadicCallType, clang::SourceLocation, clang::SourceRange, llvm::SmallBitVector&) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x186d9c0)
#11 0x00007ffff4e6dea2 clang::Sema::CheckFormatArguments(clang::FormatAttr const*, llvm::ArrayRef<clang::Expr const*>, bool, clang::Sema::VariadicCallType, clang::SourceLocation, clang::SourceRange, llvm::SmallBitVector&) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x186dea2)
#12 0x00007ffff4e6e0d7 clang::Sema::checkCall(clang::NamedDecl*, clang::FunctionProtoType const*, clang::Expr const*, llvm::ArrayRef<clang::Expr const*>, bool, clang::SourceLocation, clang::SourceRange, clang::Sema::VariadicCallType) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x186e0d7)
#13 0x00007ffff4e7b559 clang::Sema::CheckFunctionCall(clang::FunctionDecl*, clang::CallExpr*, clang::FunctionProtoType const*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x187b559)
#14 0x00007ffff5191104 clang::Sema::BuildResolvedCallExpr(clang::Expr*, clang::NamedDecl*, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*, bool, clang::CallExpr::ADLCallKind) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x1b91104)
#15 0x00007ffff51948b1 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, clang::Expr*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x1b948b1)
#16 0x00007ffff433116b clang::Parser::ParsePostfixExpressionSuffix(clang::ActionResult<clang::Expr*, true>) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xd3116b)
#17 0x00007ffff432a227 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xd2a227)
#18 0x00007ffff432c6e7 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xd2c6e7)
#19 0x00007ffff432c8b8 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xd2c8b8)
#20 0x00007ffff4330e49 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xd30e49)
#21 0x00007ffff43abd2b clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xdabd2b)
#22 0x00007ffff43ad551 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xdad551)
#23 0x00007ffff43ae07a clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xdae07a)
#24 0x00007ffff43af369 clang::Parser::ParseCompoundStatementBody(bool) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xdaf369)
#25 0x00007ffff43afdea clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xdafdea)
#26 0x00007ffff43e76a2 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xde76a2)
#27 0x00007ffff42f72d4 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xcf72d4)
#28 0x00007ffff43dfd51 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xddfd51)
#29 0x00007ffff43e0b4d clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xde0b4d)
#30 0x00007ffff43e9ced clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xde9ced)
#31 0x00007ffff43eae05 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xdeae05)
#32 0x00007ffff43eb32d clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/nix/store/j
6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xdeb32d)
#33 0x00007ffff42c26e0 clang::ParseAST(clang::Sema&, bool, bool) (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0xcc26e0)
#34 0x00007ffff67dda69 clang::FrontendAction::Execute() (/nix/store/j6hkmkijipl535dpimvjyh8bv5qjin4h-clang-19.1.7-lib/lib/libclang-cpp.so.19.1+0x31dda69)
#35 0x000000000076ffdf (/nix/store/xkb7pp8hidrq6yam5i23csp4y1azk29d-clang-tools-19.1.7/bin/clangd+0x76ffdf)
#36 0x00000000007fdbb9 (/nix/store/xkb7pp8hidrq6yam5i23csp4y1azk29d-clang-tools-19.1.7/bin/clangd+0x7fdbb9)
#37 0x00000000007fe4cf (/nix/store/xkb7pp8hidrq6yam5i23csp4y1azk29d-clang-tools-19.1.7/bin/clangd+0x7fe4cf)
#38 0x00000000007f7b33 (/nix/store/xkb7pp8hidrq6yam5i23csp4y1azk29d-clang-tools-19.1.7/bin/clangd+0x7f7b33)
#39 0x00000000007f7e9a (/nix/store/xkb7pp8hidrq6yam5i23csp4y1azk29d-clang-tools-19.1.7/bin/clangd+0x7f7e9a)
#40 0x0000000000a386e9 (/nix/store/xkb7pp8hidrq6yam5i23csp4y1azk29d-clang-tools-19.1.7/bin/clangd+0xa386e9)
#41 0x00007fffe98972e3 start_thread (/nix/store/6q2mknq81cyscjmkv72fpcsvan56qhmg-glibc-2.40-66/lib/libc.so.6+0x972e3)
#42 0x00007fffe991b2fc __GI___clone3 (/nix/store/6q2mknq81cyscjmkv72fpcsvan56qhmg-glibc-2.40-66/lib/libc.so.6+0x11b2fc)
Signalled during AST worker action: Build AST
Filename: main.c
Directory: /path/to
Command Line: /usr/bin/clang -resource-dir=/nix/store/hwp5wkjs8kf8nvvkq3byv3zid7nclrvp-clang-19.1.7/lib/clang/19 -- /path/to/main.c
Version: 0
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkW1tz4rqW_jXOiwrKlvHtIQ_kwjmpyT6dajJ7HlOyvAzqCMmRZBL6109JBoyNodN7ujn71OxLN9iS1lrf92ktyVhEa7YQANdedONFd1ekNkuprpcg1GZJ7b9XuSw2117sN_9Rz5-uJStQKaWHUw9nyEtuPH-KKsWEKd017EW30l5O7uwXnHmhbWK_-tP9UPazP31eAqKyAKQFqyowiORyDYiSWoNGBFFF9BIxgaxxTsSi8GIfvS9BoAUIUMQwsUBMcLJBSyaMHiM3pOsmKa2VRlLwTdPFLAGtCC-lWkFhh9x6HfuIacSEZgUggspaUMOkGB_46AbkcmEbEo1Kybl8102DfUxcLporD150E6ReOMX2jyAYT7LMi-5QEwJag9JMChRk42CcnGk_A2JqBdoLp4gzUX-cafv0cGebBXHgh-G5Qf9HqleLWsEUUCPVxnbz8KwiZunhmZEenr1L9aorQuHMOEQt1l5043vR3XYEwT48PNNGKvDw7OM1T6oqXbJCvcUbsooYDqmuJpuAfH_FWTFyaIyMlFyPtlDgWc6Eh2dbrk8bnxuiHPeP8yck16CQNoXrqk0ha3OmqxfejkaICWYY4ew7eDgNrEqHmYv8xHYajbzwHimouIXrqDNK0EqfGCFO_CGzg9F12hr4MHeS1isQxsOzghVfKhAnrQROMYRxKJCRqGSiQFSuKsaJVTMqiCE50YBKqfp8rwgTY3pm3On82eoGFMprxguLfMk4DI-zF7iP3plZWi9WxHrTyL8knOeEvtpIopuTyotcvsCzWquuLtBIgZa1ojAqmPLCuyPpLd-r6P31m05fy1Ss169vYb5Zh99ZkQjK1braSm8vOs7y3eAengUZGo1-GqFBzlxm-iezn1N8WmRxgj81RHhuiNQOcVMzblClgKxyDkiWSLPvgHCI43jimP8UbUwgf-wHSAOVotBnDDYTo2UNzzSsiDCMPstXENrDMwWlAr30cOo3_g-M5Wbmgyjgw0qLBgnShoiCqAJxliuiNtYn48qFsAjZ0E5R5PnTp8f76fwe6TpfMYMIyuuFnb1SGTs3lsZUNql6eObh2YKZZZ2PqVxZKfD17q9RpeQ3oI4ErWuwsSCrYyYorwto3HGVwcrZKELB1oy5IfQVFfWqsib8qT_2_GzY13CKLQKxTaC0VgqEQRVRGhQyFj7k4cRihm1CD86NE9j_7WCuv5uf2zKGbA23A7mibQfCnxuICZc_ZC0Ky4YBq0jkanyyq-_JGUVmk0-JenJuiOjkEEcyK2vOPZxGnxzOwxM754mgwL_CWw16sGj8FRfiT7rQlJP9tBhqn0TJfmZAMTgxLFXhJAuR3qxyybWHb9EE23luQLkyYxdoHg595H_4vu8nZVkCKQGCgCKn93DqhVO90c2HJ7sqciJ-Vm5Kp20jRd5fpDY2v3g4tqYciVkji14a1t-iVMciVMt1hYN88n21TNgif_--WC_T1_fvIzfLmiw8anLw_s_Hxz__GGs5tnc9fON_NP42SNlogl40eRTlaM4WgvB_ElFwUB5OL-ecNd86hw-dy9KJX4Y-enlR4Ky_KDPoUvyGV6_iLQ3oRtNvq9d1gsuK6jURUfy2XC1GC85yOsLjiT-K40OHqPUmdq44W60n4YEn5QRjWuYJumNk4eG0KXiOV3tFSG0Y1fdiwQR4eGrZPWjySMTiS2UzirZJWJutAA6azGrO564yP0rq7i2J2jWefu5CLdympDgQ1phpRcb-KSa_xcvX1Sv7xioehVFRsdX622aZ5uvo7RsTk2Wn2vepbO7RqurwSR1OLYqTHoolRBF6UpKC1rdLou41JZWdKT-KLx6MOZeSfwLNLjSdtr-Gv7lRTCwemQFF-P2a8D_ALGXxb6TBAt3SEHVpCHOa-yf9f3J1tLlhl92dPDZVimy-QumFtwf9XSL3wvtLhuiCaEOMOyHGMQ1oeTLE5tICzKOkbpH_pbzZGKvDM1JpJPUHEWQB6pQSPiGWZ6IWYB5EKTstupYHpvTUout6XArjwHcwtiAnHZAhzmkYWWeIkGKzkrVGgqxgu6DNmnBvl0BfZ1KtiNnVF3e9-fKvmnObCI5TwMWUFKQujjbKtBNlRsvQAt8SSAThm-_wUrqgXrRT1nYJYOeOWweUjeC61eJMzwahptO-Dg9nveMLv0J_TS69HOqhw7VFPetpqwjjGNFWPA009x-V6mI6hxU5DtK262D0oxTW7WBTWXfyWysHRE3Vwq1mn4i2m4b_YqIYqjTn0klvxCa-540thyca_kkUIwWjt4TzXcOGtsP45ivC-Q0zf7qnVFtofjBJ_1tQubar3qnqqe8At6f5QxPFpaWSOjFsF_s4DPy-VDLqDyN2kHx2jOlP1LP_VDEcVatdfRu8-ZWIBfxQOxelOaN-S3PQpxkI_imaD9eEzU1j_u9ZYTfj_v-wAgS3rOAeK-AXyTAWLnlbILpU_IusoLgDyo-r12z76OVJSSMtfKfK3C9J70NE_gQ_n-T_kkxZLlqmultYSPIoys7Nny34x4zt7gyTZts3Zfln6LwgLC7wFpbOnjQKsiDwJ8Ow3NSMF19BS76Gog0z7enqOPAzEj9W2GekO1yGzon1wLEBne-DaezePdoLTd26HDG5g74lJuoRM0nzYJiYKTVfxDAhcyqrgU38ME_nyPijNiTn8Fs4uSTGFsUW4-42OQyDIM4PXTzc_DebGalNyT6s66A1k2Jel6V1-xD0qZvmX0HX3AwDhW-RUTVc9hlB4cJrg-9uX0NMME7OBn9LtGkj78Z82Ni2c993S7_dlBt-QHXY1aZF231uiIHjrpcUS-EAaeFKe3DRGH4zXP8JGFkUWoyyPkZpnp7FaOreHbEr1M8g1Yv8kmGmeboPE_u9tOHDJDsb5t86OOd-G1x3nxGSvMDnc6INbr77Ye90fO5zMTcrc9v89nrJGF0UbYy4F2MRRcHZGPfxfVF2IUOUK2jT0oCyuyiW1wa6W2m3S9luUTo1wCKwrQEhrl0JOJcRB2A7W2L7Rb3pf-jkoLV-iwtSY8FvqQl71ICfkL9Azd-FiwviaJFqcZz0cCzD-HyOut3-SL_H80YWGw-nF368VThP2ziifhwFnNfDbpvVj-PwZ67BvcixsprF82Vng42vjb63QIUk7j70ORn9HZTuJbGhisPEYjdT9k9Ezyr-GVYVJwaOnpKf6PVIDLRZ5ZFdepNbOJxaFLsrXVwmuJicjdjC8w8l6-okePMK6DEILazDCeKTyfgk-AO_tX4m_av9Uz_3uObB_Yx5SUKog7wlpLeWLsriB_XXAvtFHYj7QRhQgvCB9cbPF7ujFmdJnlIKWtt7rGSgLqlrB1QLY2-5DX4-KX4I47ZAdtA8mSp-OZh9ff4bwXRw7cEMe4t6yCicB_P-o5Fgd9VxAQAvCJEFoYWotzUAAn50FqJnWT3CGnhTcA-x-VKRtxqeTG9Btk-87hnTwHKsfer1hyxqDg-rSqrdnumildpF32LT21JAHuLz8pkxpc3fBiDPn_4OjCwKLUa9t8gojsE_wmg6fz75k3b3ScflypfztI2js7aOk6Ig3bX1TNnqL4rmQeDu0R_Q2r1Uc0HHw8D51nq-W003_yRxWRbloDO_4NiFdaCx0NqPu_bLIs-HwfhV9p2F1n7Ssw8T-nvjdxZa-2nPfpKH4e-1by209rO-fcjIb7YPWbufmfgd-yRMY_it_DcWWvtB943aLMEQIm2IMi9mqYAUv--NWmer9aT7bm8W5Lik6OXlHw8vLy-USwHDuvglrgTOWuNL864zhwIVtWJigabzZ3cQAxQiu_zlDoQU9pbnTxGaMQ6CrMDe2R-XQOju5FEwe_d2e3znkQnYNvibnclB6M_m6Ip1zz88kndVXIdFFmbkCq6DZBIkSZRF8dXyOklLoFEep1lGaeBTiOOIZjhIc5yUkzC-YtfYx5EfBjjwwyyIxySM0qTMaJbFIQE_9yY-rAjjY87Xq7FUiyt3SuQ6CP0szK44yYFrd7QSYwHvyN11xyPvrtS1e7s8rxfam_icaaPbYQwz3J3J3E6H6A7dKqKXoJtjjLICYfkmzVked8SKiTXhrEDgXkRGGt5qEBSuasWv__ppl20o62v8vwEAAP__D67umA">