<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/136569>136569</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR] JitRunner crashed with `PromoteIntegerOperand ` OP
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sweead
</td>
</tr>
</table>
<pre>
test commit: [788b50a](https://github.com/llvm/llvm-project/commit/788b50a4384985f2c221cfd8d290cabc6f59e646)
step to reproduce:
```
mlir-runner test.mlir -e main -entry-point-result=void -shared-libs=/home/workdir/llvm-project/build/lib/libmlir_runner_utils.so
```
test case:
```
module {
llvm.func @malloc(i64) -> !llvm.ptr
llvm.func @free(!llvm.ptr)
llvm.func @aligned_alloc(i64, i64) -> !llvm.ptr
llvm.func @main() -> () {
llvm.return
}
llvm.func @async_execute_fn(%arg0: !llvm.ptr, %arg1: i64, %arg2: i64, %arg3: i64, %arg4: i64, %arg5: i64, %arg6: i64, %arg7: i64, %arg8: i64, %arg9: i64, %arg10: i64, %arg11: i64, %arg12: !llvm.ptr, %arg13: !llvm.ptr, %arg14: i64, %arg15: i64, %arg16: i64, %arg17: i64, %arg18: i64, %arg19: !llvm.ptr, %arg20: !llvm.ptr, %arg21: i64, %arg22: i64, %arg23: i64, %arg24: i64, %arg25: i64, %arg26: !llvm.ptr, %arg27: !llvm.ptr, %arg28: i64, %arg29: i64, %arg30: i64, %arg31: i64, %arg32: i64) -> !llvm.ptr attributes {passthrough = ["presplitcoroutine"], sym_visibility = "private"} {
%0 = llvm.mlir.constant(0 : i32) : i32
%1 = llvm.mlir.zero : !llvm.ptr
%2 = llvm.mlir.constant(1 : i64) : i64
%3 = llvm.mlir.constant(0 : i64) : i64
%4 = llvm.mlir.addressof @__resume : !llvm.ptr
%5 = llvm.mlir.constant(false) : i1
%6 = llvm.call @mlirAsyncRuntimeCreateToken() : () -> !llvm.ptr
%7 = llvm.intr.coro.id %0, %1, %1, %1 : (i32, !llvm.ptr, !llvm.ptr, !llvm.ptr) -> !llvm.token
%8 = llvm.intr.coro.size : i64
%9 = llvm.intr.coro.align : i64
%10 = llvm.add %8, %9 : i64
%11 = llvm.sub %10, %2 : i64
%12 = llvm.sub %3, %9 : i64
%13 = llvm.and %11, %12 : i64
%14 = llvm.call @aligned_alloc(%9, %13) : (i64, i64) -> !llvm.ptr
%15 = llvm.intr.coro.begin %7, %14 : (!llvm.token, !llvm.ptr) -> !llvm.ptr
%16 = llvm.intr.coro.save %15 : (!llvm.ptr) -> !llvm.token
llvm.call @mlirAsyncRuntimeExecute(%15, %4) : (!llvm.ptr, !llvm.ptr) -> ()
%17 = llvm.intr.coro.suspend %16, %5 : i8
%18 = llvm.sext %17 : i8 to i32
llvm.switch %18 : i32, ^bb3 [
0: ^bb1,
1: ^bb2
]
^bb1: // pred: ^bb0
llvm.call @mlirAsyncRuntimeEmplaceToken(%6) : (!llvm.ptr) -> ()
llvm.br ^bb2
^bb2: // 2 preds: ^bb0, ^bb1
%19 = llvm.intr.coro.free %7, %15 : (!llvm.token, !llvm.ptr) -> !llvm.ptr
llvm.call @free(%19) : (!llvm.ptr) -> ()
llvm.br ^bb3
^bb3: // 2 preds: ^bb0, ^bb2
%20 = llvm.mlir.none : !llvm.token
%21 = llvm.intr.coro.end %15, %5, %20 : (!llvm.ptr, i1, !llvm.token) -> i1
llvm.return %6 : !llvm.ptr
}
llvm.func @mlirAsyncRuntimeAddRef(!llvm.ptr, i64) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeDropRef(!llvm.ptr, i64) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeCreateToken() -> !llvm.ptr attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeCreateValue(i64) -> !llvm.ptr attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeCreateGroup(i64) -> !llvm.ptr attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeEmplaceToken(!llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeEmplaceValue(!llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeSetTokenError(!llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeSetValueError(!llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeIsTokenError(!llvm.ptr) -> i1 attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeIsValueError(!llvm.ptr) -> i1 attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeIsGroupError(!llvm.ptr) -> i1 attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeAwaitToken(!llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeAwaitValue(!llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeAwaitAllInGroup(!llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeExecute(!llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeGetValueStorage(!llvm.ptr) -> !llvm.ptr attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeAddTokenToGroup(!llvm.ptr, !llvm.ptr) -> i64 attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeAwaitTokenAndExecute(!llvm.ptr, !llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeAwaitValueAndExecute(!llvm.ptr, !llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimeAwaitAllInGroupAndExecute(!llvm.ptr, !llvm.ptr, !llvm.ptr) attributes {sym_visibility = "private"}
llvm.func @mlirAsyncRuntimGetNumWorkerThreads() -> i64 attributes {sym_visibility = "private"}
llvm.func @__resume(%arg0: !llvm.ptr) attributes {sym_visibility = "private"} {
llvm.intr.coro.resume %arg0 : !llvm.ptr
llvm.return
}
}
```
Crash backtrace:
```
PromoteIntegerOperand Op #3: t115: i8,ch = llvm.coro.suspend t112, TargetConstant:i64<60>, t105, Constant:i1<0>
LLVM ERROR: Do not know how to promote this operator's operand!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: mlir-runner test.mlir -e main -entry-point-result=void -shared-libs=/home/workdir/llvm-project/build/lib/libmlir_runner_utils.so
1. Running pass 'Function Pass Manager' on module 'LLVMDialectModule'.
2. Running pass 'X86 DAG->DAG Instruction Selection' on function '@async_execute_fn'
#0 0x000055d6c52e4808 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/workdir/llvm-project/build/bin/mlir-runner+0x503808)
#1 0x000055d6c52e247e llvm::sys::RunSignalHandlers() (/home/workdir/llvm-project/build/bin/mlir-runner+0x50147e)
#2 0x000055d6c52e4fd1 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007fb16890e520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007fb1689629fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007fb16890e476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007fb1688f47f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x000055d6c5295b4c llvm::report_fatal_error(llvm::Twine const&, bool) (/home/workdir/llvm-project/build/bin/mlir-runner+0x4b4b4c)
#8 0x000055d6c5295996 (/home/workdir/llvm-project/build/bin/mlir-runner+0x4b4996)
#9 0x000055d6c5c67e4f (/home/workdir/llvm-project/build/bin/mlir-runner+0xe86e4f)
#10 0x000055d6c5bb42e9 llvm::DAGTypeLegalizer::run() (/home/workdir/llvm-project/build/bin/mlir-runner+0xdd32e9)
#11 0x000055d6c5bb9c14 llvm::SelectionDAG::LegalizeTypes() (/home/workdir/llvm-project/build/bin/mlir-runner+0xdd8c14)
#12 0x000055d6c5b384da llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/home/workdir/llvm-project/build/bin/mlir-runner+0xd574da)
#13 0x000055d6c5b36e76 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xd55e76)
#14 0x000055d6c5b342b1 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xd532b1)
#15 0x000055d6c5b31879 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xd50879)
#16 0x000055d6c6a59ca1 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x1c78ca1)
#17 0x000055d6c833eda5 llvm::FPPassManager::runOnFunction(llvm::Function&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x355dda5)
#18 0x000055d6c83469c2 llvm::FPPassManager::runOnModule(llvm::Module&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x35659c2)
#19 0x000055d6c833f7ac llvm::legacy::PassManagerImpl::run(llvm::Module&) (/home/workdir/llvm-project/build/bin/mlir-runner+0x355e7ac)
#20 0x000055d6c5ccbaa5 llvm::orc::SimpleCompiler::operator()(llvm::Module&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeeaaa5)
#21 0x000055d6c5d0a736 decltype(auto) llvm::orc::ThreadSafeModule::withModuleDo<llvm::orc::IRCompileLayer::IRCompiler&>(llvm::orc::IRCompileLayer::IRCompiler&) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf29736)
#22 0x000055d6c5d0a3ff llvm::orc::IRCompileLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf293ff)
#23 0x000055d6c5d33063 llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf52063)
#24 0x000055d6c5d33063 llvm::orc::IRTransformLayer::emit(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>, llvm::orc::ThreadSafeModule) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf52063)
#25 0x000055d6c5d0d81d llvm::orc::BasicIRLayerMaterializationUnit::materialize(std::unique_ptr<llvm::orc::MaterializationResponsibility, std::default_delete<llvm::orc::MaterializationResponsibility>>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf2c81d)
#26 0x000055d6c5cdb352 llvm::orc::MaterializationTask::run() (/home/workdir/llvm-project/build/bin/mlir-runner+0xefa352)
#27 0x000055d6c5cce634 llvm::orc::ExecutionSession::dispatchTask(std::unique_ptr<llvm::orc::Task, std::default_delete<llvm::orc::Task>>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeed634)
#28 0x000055d6c5cdd2ca llvm::orc::ExecutionSession::dispatchOutstandingMUs() (/home/workdir/llvm-project/build/bin/mlir-runner+0xefc2ca)
#29 0x000055d6c5cdf551 llvm::orc::ExecutionSession::OL_completeLookup(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState>>, std::shared_ptr<llvm::orc::AsynchronousSymbolQuery>, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>>> const&)>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xefe551)
#30 0x000055d6c5cfbcf8 llvm::orc::InProgressFullLookupState::complete(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState>>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf1acf8)
#31 0x000055d6c5cd0e2a llvm::orc::ExecutionSession::OL_applyQueryPhase1(std::unique_ptr<llvm::orc::InProgressLookupState, std::default_delete<llvm::orc::InProgressLookupState>>, llvm::Error) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeefe2a)
#32 0x000055d6c5ccde81 llvm::orc::ExecutionSession::lookup(llvm::orc::LookupKind, std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>>> const&, llvm::orc::SymbolLookupSet, llvm::orc::SymbolState, llvm::unique_function<void (llvm::Expected<llvm::DenseMap<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>, llvm::detail::DenseMapPair<llvm::orc::SymbolStringPtr, llvm::orc::ExecutorSymbolDef>>>)>, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>>> const&)>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xeece81)
#33 0x000055d6c5cdd50b llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>>> const&, llvm::orc::SymbolLookupSet, llvm::orc::LookupKind, llvm::orc::SymbolState, std::function<void (llvm::DenseMap<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>, llvm::DenseMapInfo<llvm::orc::JITDylib*, void>, llvm::detail::DenseMapPair<llvm::orc::JITDylib*, llvm::DenseSet<llvm::orc::SymbolStringPtr, llvm::DenseMapInfo<llvm::orc::SymbolStringPtr, void>>>> const&)>) (/home/workdir/llvm-project/build/bin/mlir-runner+0xefc50b)
#34 0x000055d6c5cddaf6 llvm::orc::ExecutionSession::lookup(std::vector<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>, std::allocator<std::pair<llvm::orc::JITDylib*, llvm::orc::JITDylibLookupFlags>>> const&, llvm::orc::SymbolStringPtr, llvm::orc::SymbolState) (/home/workdir/llvm-project/build/bin/mlir-runner+0xefcaf6)
#35 0x000055d6c5d12120 llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::orc::SymbolStringPtr) (/home/workdir/llvm-project/build/bin/mlir-runner+0xf31120)
#36 0x000055d6c57f3bb9 llvm::orc::LLJIT::lookupLinkerMangled(llvm::orc::JITDylib&, llvm::StringRef) (/home/workdir/llvm-project/build/bin/mlir-runner+0xa12bb9)
#37 0x000055d6c57f2e5c mlir::ExecutionEngine::lookup(llvm::StringRef) const (/home/workdir/llvm-project/build/bin/mlir-runner+0xa11e5c)
#38 0x000055d6c57ef2d4 mlir::ExecutionEngine::lookupPacked(llvm::StringRef) const (/home/workdir/llvm-project/build/bin/mlir-runner+0xa0e2d4)
#39 0x000055d6c57dca0d compileAndExecute((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, void**, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) JitRunner.cpp:0:0
#40 0x000055d6c57d9ff0 compileAndExecuteVoidFunction((anonymous namespace)::Options&, mlir::Operation*, llvm::StringRef, (anonymous namespace)::CompileAndExecuteConfig, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>) JitRunner.cpp:0:0
#41 0x000055d6c57d8326 mlir::JitRunnerMain(int, char**, mlir::DialectRegistry const&, mlir::JitRunnerConfig) (/home/workdir/llvm-project/build/bin/mlir-runner+0x9f7326)
#42 0x000055d6c50f0b4f main (/home/workdir/llvm-project/build/bin/mlir-runner+0x30fb4f)
#43 0x00007fb1688f5d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#44 0x00007fb1688f5e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#45 0x000055d6c50f06c5 _start (/home/workdir/llvm-project/build/bin/mlir-runner+0x30f6c5)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsfFtT4zqX9q8xNy4oWz5fcJFOoD_2B9MM8O6Zu5QsLScaHNkjyU2zf_2UZDs-hkO_geKiq7rBkaW1nnXWKWAp2YYDnFvBNytYneBKbQtxLp8AMD1JC_p8rkAqmxS7HVOWt7Ct4FsUx2ngYCtYWSjeKlVKy1tY6NJClxumtlV6RoqdhS7z_Gf767QUxf8AURa6bEihy4aM78V-EgcZIgi5JKMxRYlDcErCLEgg9EMLJZazsJyFVFDaqrAFlKKgFQHN1llYodP8cxa7nIlTUXEOwtbAz3SDfQr2DjNunwJX4vm0LBhXpwJklSvLW_0sGLVP5RYLoKc5S6XlrSx0uS12YKHLp0I8UiamcqQVy6luZmn9U7Na17zXlWK5PJPFCJ7lLGp1YjkHvqBVDrYVfbOchW1rfmdZxYlt-c4O53lBLBSz0LdQYp9a3oVtIdd0KpWYjsgEgIXifh-jyFE3nGsHoOsB_aX9ApsRLsYNl31f89zK0DAToCrBTYsVrWZAyGdO1vALSKVgndUUAyw2jnG5vghLu37j6jcN2LoFTVq8SYs_aQkmLeGkJZq0xJOWZNLiOtOmKWoXHRbRO_xqKog7lcSdiuJOZXGnwrjJQc7osEnQjE2mRkFTq6CpNGgqDQoPc44Ov5pKh6a28qa28qbSeJ0009CwsVKCpZUCqd2_xFKqrSiqzda2vJXOmxZCpQBZ5kyRQhSVYhwshEweXdryebf-ySRLWc7Ucz1GD2A_sTLdolUvrCwUOKaPYa9TzxkpuFSYKwvF-tXCZh4ysdg87ge6o4H_gCjssQId_TFAh3m4dk8Z7eOeh_cquAMD_dFATKkAKYtM54n1WmftHcyhrYcHh_lmOJew5-l2Y8JuDMF5btJazsRCJ6W7iiu2g6UArOCheIQ229UI4oO52FCOOsqMK41GFGeMGus1buWOf7eUjfWWU6c-_HGERBm0tR3jOSCS_QNTAyRzXU2VmPZ1ez6IqZErbuSYMa3bczxZpTWBpjua6Y4m3b0XiPc8DnNa82t1Okfdn1p9XAs1p5aE1zP66zWy4RHM6TKFDePGO1rafudNfdO9Yt8hq3DWwvgn7IEMOLzoMG3ZPhQNF3WhrjXkBo0Y_iAs3uCmcTshqSWYDRZZyRIac4YNo1oYFvfG9vxbwi-1p6e76Sljk__qDk9Mke1-WJMnl7YVXKSpZxJ1Tdi261qn27Ur7ZvdffM-qwb1rKbpa5Sg58N2KYDueztvUu6uzDHp5ZogPKTYOU2at6now2sePf1Yo0IGl-wBa-XvpUV3NhPoaeXAeSeu9R7nHWhiP2MN3OS3RfY6kb23idyrjGhcU3nBh8WmHyN6gDuno9Zh28hofyPnQHwwt6-vRoGNqHWl6k2j25I1rYD13Hpm8TBysQWld5DNwKgT2nAi84Z5yescV6IoP5nltGS_MmM7Ite_cV7B4cXaxzH-Loqq_FzGk3w1iNaPY9jq-OMZ3oMy0l0IUYjP4mjE-zyOV_IlEZtE9DGMX5L0QxmbYPl8xosnzNTnhYth93nBYtgt8vyKt7noEzJCbz760rzzA1h_byL1XhUCb2ZU_BkpeEGp8aeHYlbn8zMxFvof690LTt9mmM-wUxcFXw9WFy1fCdt3UP9R7f6rEI8gHrYCMJX9edSR3Kfd0Xlhx_c3hBvvP3dT83b_qOZ1YB9pfs-6-Tnczl8KLLd2ismjEnjuROJWFLtCwRVXsAHxowSBObV_lLaFPLNAUW6zcxtbaEm2vV2J_vpXua5ZpD5gsQG1bHe1vIWe6XnL0LG8C_1euY5ZbfR7uJa3NO8N4uvrv2_si7u7H3ea66qweaHsR1482dviSa-VyxqxrbZM2oUGrHSFjJoPnFpIL0lury8W9xe2rNIdUza202pjCygLoTSRdx8LMSkrkHqlpvXDOMkrqjGATYYqPrOcxb3C5NGm1a6sFe6c1QvzW1FsBN7ZWGyqHXBllntf8EzIPbPvKs4Z39glltK2UHRZcaJYwe1b3XCDOd6A1rpdcLs9GEKRNt6K4RyIujGNFoq0QtCU4H_Hob1afNfBulp8t6-4VKKqWdyDJsAK3tDPWt4WimZPY6J6G9FzbOeX4zhOENCQBAj82ImNs2ozeAv5LOuHW8G4MkZ6MFGB4q6TwE_rQioBeGchs6XDuDLLfZ0C3qzilHELXfZsa6Fvzq_A8WKn3RqwkOeOACM_gjnAdxW_ZxuO8_-HOc1BtKnuOJhcP4IOExorMaOuPeCuF3BaJ0tbsg3jWbFWFlroz9ovzWPSjJBnpNRB4Jj_NQOvYRBlqRvGiQNm48FIUjvmrzhch_5pznj163TDq_oFOZPFWWgg-yhATofYHxIMUZIRu1SmKKwfWZ6_j3oSJhnpqAdjuH4U2htpxHsvbD8KO8LhgHCc-VHm2TjVGepdZFEcZV5HNhraLwlSn_R8qs6B6wwrnK-hWV10rx-eGAfbHEs07p8WRX4sX_NTP_V7uo3HWJMkPBajJOnpOhkwImEEfnYURhCH4GfNHQDkucMUlKY-gqSn_dXi-8NzCdewwTn7B0Rjk4ofMaAp9RAkHSR3BCkhrt-DtM-2q8X3uqVFp5EeM9NQGhPX74ANM03qxT7FB4Bd3UNety4LCt_r2fuOKY35iACDyKe4A-iNAIYQha8CrFsXef4NS0a-5QV5lIMQ25fSLsqOBT-ANsFo-P4Ivo9S91X4ouI_-A0mW8ahRTqAP3l3RPweSt0OfzDC78ZR8gJ-7bbk-QtI4cRRL_zCvhQhDhKC-1YYAdHTq54Is9g_ALRLopjgnu4HVST2PKA46KG-vNVA22ng5-P1goBSHHR44yFeP0wIegPedpba94ym6YhYwyAhqMOajHSbRbhfofOeH_dQX-3KvF8uPhRxABEme8RoWNUISfHAGwpBmpBkuzKHZbErWd7quVuimYnvhwIHwLjnFWhY-qiDIy-0KZBcPZfa6rhSheY9I0q9p3CPM2hQmtYnprb151VhecuZcVd3jfjX-LlVwb5NaFn1Sjj-rZFH0lKGksjr6gRCYy15WTankjmAYC5LxlLR-nPF2f9WsC6VmFfPDVYgmJ5eYJ0S7kCWBW83S8ySoqVEIcNVrtYUclDwO9S8i2bX4S3mPZ5uvaybD6LhFIJ6nhN687p9EJjLrBC7P9o9rN0AOaHXadf_o90P1G4wygs0dukcHjPRvbozmh1J9S9urmVb3mK3fwFfXOfHSgQkdmmnzHBYQmnqBWhOmSOID1g-fsQiETLsBd2cBEWjCg-h58_Bq_f_WcHvQUo9p6t1z2SJFdkatO-wbt3_nUasVXJMWwHQ0OsWpige2Yoigt-vjB-Vkgpzyvjm5l_HXEdDRhDplqlotLlBsyBw3w73x_WaFHrapuC6KB7N-dybDXjFzZ42SFmPvVfmkOOdFp2nsk-Be1r1hvdhNOZ4aCsKXlTy_nmXFvl_ViCex2Ta_WTLW5qN9MF0bAVcwg0u5zn8dfWwejb7cothcjbD7kHND6vB3CvB-Oa2PiCbcrzi2YE55cxws9M6UyReJzYSoSU0oEJBYZYPKd5idkDtX1Ep5l9_h-WY6SKDIOjWyqNjB5KlJItnZyF7N7-s8nzg6vp1G4VfLP6OVA5dTLK405k7ylkOoHek2B_Xa1yW-bMJ79stluB-Ma31fbm5w3OsWpUB6pL_6LiGEArxO5J_3mb8mRG1VP-fcTpQzU8gejXvLfct5fszw6RHzewyxxs5Ttfmujv-eJ7jlDE7ts46jcFBvdhr71Zdj8YzX6xAF79KIAroQLyXy9KLqXTkAoWoe68gO2LK_TfKx--C3yf6Jrn_qfB_KvzRkiyBuFfhvfGCIHDS30iyf3LoO3LosPy8nmT_BP-f4D_W8jpw0i74_XHw4yz8E_z_XvC_Vu0HsX00s-KsO_XwRrubLnKRM5uHrv-6eujb8prxRxA3mG9yoPNT506Fb1bDkZZZnuu2V6O0kMNdxyjz0nT2tOuoQtZSme9THUcq7KI07Y7UR1ecogxBQMw9ylEgXvAN4zCKwwM4jdseCa0LQXd4OrrkFEGGqP82tLeYPI60_1GYHUC02wEd3ZeKKMEOtUl9-je6BR5jXvDnXVFJm-MdyNLcqExquD9KLZlsXKQT2lw0ru8ELA46z9J-hfpyDGhZ8IxtBjcRF4NUeGBnoL623FzFeOtGwHDQfrfkL6bujGJHVx8t5PnOSK1JljlTtf5dMNq7SPFVVfxVlOqOlBp7KOzpYT_0pv5bMM3VVbLFonOQrntzffkONkwq8TwoZzNEW3UcJ9ElWeShrkb5w80dJ3NSP6vvhR_lmoeTpb27i743upAa0OSdF3NRQpOu-vj-mCD4jr1e6zFrqbBQ654sb2YBfo9FMNZQSAK7Jn4sHYWkuVGySAuhwCwoSCHAXPCH9oiv_U7FCT33aOIl-ATO3cgPkB9Gjn-yPXc9iBPkxE6AfQdcPwCCaUJjz0_ijDrOCTtHDgocH7mu7weOf5bhlDqhR3zkYOxEruU7sMMsP9MSnBVic2K-lXDuemEQJic5TiGX5_VfcjGuav54y4k4NxKn1UZavpMzqWRHQTGVmz-vdXN9dWcFqy7S6i82ALWfmNraVujMf1XECh37x-1JJfLz3_9SRSPBz3P0fwEAAP__O3pUDg">