<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60723>60723</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
MLIR crash strangely
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hushanjushi
</td>
</tr>
</table>
<pre>
I'm making a MLIR Pass. But I meet a strange crash when the mlir-opt report error(the pass is not work correctly).
I have a mlir file like:
```mlir
func.func @r_fib(%arg0: i32) -> i32 attributes {llvm.linkage = #llvm.linkage<external>} {
%c1_i32 = arith.constant 1 : i32
%c2_i32 = arith.constant 2 : i32
%0 = arith.cmpi sle, %arg0, %c1_i32 : i32
%1 = scf.if %0 -> (i32) {
scf.yield %c1_i32 : i32
} else {
scf.yield %c2_i32 : i32
}
return %1 : i32
}
```
I want get a pass to replace IfOp with other Op. So I want to remove it first.
```
void MyPass::runOnOperation() {
func::FuncOp func {getOperation()};
func.walk([&](mlir::Operation *operation) {
scf::IfOp op = llvm::dyn_cast<scf::IfOp>(operation);
if (!op)
return;
op->remove();
}
);
}
```
But it show:
```
LLVM ERROR: operation destroyed but still has uses
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0x000056479ce32a27 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/user/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:567:13
#1 0x000056479ce30d00 llvm::sys::RunSignalHandlers() /home/user/src/llvm-project/llvm/lib/Support/Signals.cpp:105:18
#2 0x000056479ce331fa SignalHandler(int) /home/user/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:412:1
#3 0x00007f6e02a89f90 (/lib/x86_64-linux-gnu/libc.so.6+0x3bf90)
#4 0x00007f6e02ad8ccc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f6e02a89ef2 raise ./signal/../sysdeps/posix/raise.c:27:6
#6 0x00007f6e02a74472 abort ./stdlib/abort.c:81:7
#7 0x000056479ce0306b llvm::report_fatal_error(llvm::Twine const&, bool) /home/user/src/llvm-project/llvm/lib/Support/ErrorHandling.cpp:125:5
#8 0x000056479ce02eb6 (./build/bin/standalone-opt+0x1468eb6)
#9 0x000056479cdb5295 mlir::InFlightDiagnostic::attachNote(std::optional<mlir::Location>) /home/user/src/llvm-project/mlir/include/mlir/IR/Diagnostics.h:347:5
#10 0x000056479cdb5295 mlir::Operation::~Operation() /home/user/src/llvm-project/mlir/lib/IR/Operation.cpp:145:14
#11 0x000056479cdb5a80 mlir::Operation::destroy() /home/user/src/llvm-project/mlir/lib/IR/Operation.cpp:170:3
#12 0x000056479cdb5a80 llvm::ilist_traits<mlir::Operation>::deleteNode(mlir::Operation*) /home/user/src/llvm-project/mlir/lib/IR/Operation.cpp:370:7
#13 0x000056479cd5472e llvm::iplist_impl<llvm::simple_ilist<mlir::Operation>, llvm::ilist_traits<mlir::Operation>>::erase(llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void>, false, false>) /home/user/src/llvm-project/llvm/include/llvm/ADT/ilist.h:270:5
#14 0x000056479cdcee4e mlir::detail::walk(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) /home/user/src/llvm-project/mlir/lib/IR/Visitors.cpp:0:9
#15 0x000056479cc3090b (anonymous namespace)::DerecursionPass::runOnOperation() /home/user/workspace/project/mlir/standalone/lib/Standalone/Passes/Derecursion.cpp:147:1
#16 0x000056479ccc5823 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/user/src/llvm-project/mlir/lib/Pass/Pass.cpp:0:11
#17 0x000056479ccc5bf8 mlir::LogicalResult::failed() const /home/user/src/llvm-project/mlir/include/mlir/Support/LogicalResult.h:44:33
#18 0x000056479ccc5bf8 mlir::failed(mlir::LogicalResult) /home/user/src/llvm-project/mlir/include/mlir/Support/LogicalResult.h:72:58
#19 0x000056479ccc5bf8 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/user/src/llvm-project/mlir/lib/Pass/Pass.cpp:534:9
#20 0x000056479cccb9d5 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const /home/user/src/llvm-project/mlir/lib/Pass/Pass.cpp:759:5
#21 0x000056479cccb9d5 mlir::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&)::'lambda'()::operator()() const /home/user/src/llvm-project/mlir/include/mlir/IR/Threading.h:62:18
#22 0x000056479cccb9d5 __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>> std::__invoke_impl<void, mlir::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&)::'lambda'()&>(std::__invoke_other, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
#23 0x000056479cccb9d5 std::enable_if<is_invocable_r_v<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>>::type std::__invoke_r<void, mlir::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&)::'lambda'()&>(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
#24 0x000056479cccb9d5 std::_Function_handler<void (), mlir::LogicalResult mlir::failableParallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&)::'lambda'()>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
#25 0x000056479cccb196 std::__shared_ptr<std::promise<void>, (__gnu_cxx::_Lock_policy)2>::get() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:1666:16
#26 0x000056479cccb196 std::__shared_ptr_access<std::promise<void>, (__gnu_cxx::_Lock_policy)2, false, false>::_M_get() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:1363:66
#27 0x000056479cccb196 std::__shared_ptr_access<std::promise<void>, (__gnu_cxx::_Lock_policy)2, false, false>::operator->() const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/shared_ptr_base.h:1357:9
#28 0x000056479cccb196 llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()::operator()() const /home/user/src/llvm-project/llvm/include/llvm/Support/ThreadPool.h:136:15
#29 0x000056479cccb196 void std::__invoke_impl<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&>(std::__invoke_other, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
#30 0x000056479cccb196 std::enable_if<is_invocable_r_v<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&>, void>::type std::__invoke_r<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&>(llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
#31 0x000056479cccb196 std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()>::_M_invoke(std::_Any_data const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
#32 0x000056479ce16561 llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /home/user/src/llvm-project/llvm/lib/Support/ThreadPool.cpp:102:5
#33 0x000056479ce17003 std::default_delete<std::tuple<llvm::ThreadPool::grow(int)::$_0>>::operator()(std::tuple<llvm::ThreadPool::grow(int)::$_0>*) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:95:2
#34 0x000056479ce17003 std::unique_ptr<std::tuple<llvm::ThreadPool::grow(int)::$_0>, std::default_delete<std::tuple<llvm::ThreadPool::grow(int)::$_0>>>::~unique_ptr() /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/unique_ptr.h:396:4
#35 0x000056479ce17003 void llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::$_0>>(void*) /home/user/src/llvm-project/llvm/include/llvm/Support/thread.h:46:3
#36 0x000056479ce17003 void* llvm::thread::ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::$_0>>(void*) /home/user/src/llvm-project/llvm/include/llvm/Support/thread.h:55:5
#37 0x00007f6e02ad6fd4 start_thread ./nptl/pthread_create.c:442:8
#38 0x00007f6e02b5766c clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:83:0
Aborted
```
My Clang version is 16.0.0.(release-rc), builder option is:(build clang is Debian apt source,15.0.7)
```
cmake -G Ninja -S "/home/user/src/llvm-project/llvm" -DLLVM_ENABLE_PROJECTS="clang;mlir" -DLLVM_TARGETS_TO_BUILD="host" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="/home/user/workspace/project/mlir/installed" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_USE_LINKER=lld -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_CCACHE_BUILD=ON -DCMAKE_CXX_STANDARD=17 -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_BINDINGS=OFF -DLLVM_ENABLE_IDE=ON -DLLVM_BUILD_EXAMPLES=ON
```
standalone build option is:
```
cmake -G Ninja .. -DMLIR_DIR=/home/user/workspace/project/mlir/build/lib/cmake/mlir -DLLVM_EXTERNAL_LIT=/home/user/workspace/project/mlir/build/bin/llvm-lit -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_USE_LINKER=lld -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtz4jiw_jXKiyqUkbEND3kgXGY5S0KKMLtznlyyLUAbIftIchJe9refkmTjSyAzmclkLpupKQKW1Or--pO6ZUvGUtINJ-QCeJfAG5_hXG1TcbHN5Rbzf3K5pWdRmuwvZgAFO7jDd5RvIIZX89kS3mApO_AyV3AGd4QoiKFUAvMNgbHAcgsftoRDtSVwx6g4TzMFBclSoSARIhUA9XVZhqWEVEKeKviQijsYp0KQWLE9QIMOcMbAGdrPGdziewKxEQfXlBHI6B0BblEOfMf-1-X20jrncUd_QNBzRLimEUB9gDwsNg5wh5C6CKABPAfuRH-HWClBo1wRCUFwydj9rsMov8MbAoE7hgC59WvAHZFHRQTHDLgTEIx1I9sxhAB5cTfUQnVLLKjaduKUS4W5gl1Y9l6rjU7VRkdqO_WKu4xCyQhAI1gaZ78eNGg375rmMl536NqKMxgA1C8gqVkCTb09JSx5RmYwhoRJUmvYbIVOtCq_CqJywUvdarUOdQ7-LenwoMHZGOIZFqlUE4zhmMDZepHBB6q2MFVbIuAi68DbFBZtTMVdek8gVXBNhVSdo13cpzSBV3tNdM0ydyhyvuCLjAisaMoNl1pQabLZutOcx4sMWvYFlxuiWg21YW7Z1DD1AbM7XeZdAuQDbwxQ33DZyDu0hgAN00pUS4HCX7aNgSHNjLM1c-3VZM_DGEsF3FGjpiYx6tdFV_oV_wxb-gB100wX2zLruid100xzygJdWNyuUvO_pmVV4ZTT9WxDFZTb9OHpuLc_5_O_ruBkuVwsNY0O1sCESCXSPUlglCsoFWUMbrGEuSTStryZT4a3EyjzaEc1qaJ8U85YKoVbpTJDAzQFaLqhaptHnTjdATQ10No_55lI_yGxAmhKpcyJBGgKMU8g5THLE2LmQzs9Rji-UwLHpCCfnl4c6Dw6juN4fi8YxMRFGAU1z8l9QcQbQbm6VTi-W2kJAPWrSgI_hKlUguCdphEaQcqV4QmabtMdAWiaSyIAmkoRP1W7NEbPldPbPNP2AzT9yOmjvkA3HDPZoYbmnh8Ad9h1KwO6LQOcxHGOGbDMuRX1B-YJI0KWg-lbdCyVi7NMq-V4-rNfKYdayrndNYYNNfQE-L3A6nWR1qdSxy3UCdY-cRDuD9YDxw6vQuBj3w_93jmjPH883_DcFsQdmXZ8gC6dRzdaD5xqIALk9poyk34cxzAMM7UVBCfhHWUspLuMkR3hyg6MDkBTnikG0LRerWN07gF3GPiVfK-tM1kjKDCVxMiRxmKAph3zay8TkukhkKXSIGJqGslIM6cm2G8KDnq9AEEc6cFnRKnEYmIuGQn9rtatkhA0veu4jh_VqGdHcrjGCrOwzECq4tUD5QSamFuMmihN2TczYaI7MuSifFMSE2liepXm_ZbmiES-JoI2PMopS_Rfyg0MmCeYpZzofMpwoNvz-yTyGywYNAQmkYcGHqxCyYxPGd1s1ZjiDU-lokXIwkrheHudKj2hSJXYq2mmaaJznFElYp7GNkjomPGlGJnmaFpMhdWF2RKgaaWM7GyBO3R7QYWSnlmc542qoqv5-e-TMP0SFa0bjV4HOaX3emZa6VWKdduK4b5zWrEiDr22VoFOaN1KKXRMqYrulFGpQiUwVbLh2Jq2k1JhRhS5TrXHjuUjAA1f0xLXWBJUlrhNS7xegEjdksyYoic14I5qocZMc6Ex9LSFaPRyUApciMCyGXlte6p05VQ0tLFFCVGYMnuFpwkJ7dg61RkaQSVyk9evMZPmi85JC8UP1-yXl4zEYraqRmJxYThe6ctaWTMIkXFGbRD2ms6ICemRGtfrBhbZ7CnG1IHX2a8uCAVZA3dk8u7nyFYAUJX_jdndQiTa4K9n4l9UUpWKMn_Qlg8qy72G5bHrDJxIK4l5yve7NJeQ4x2RmUnHBlatMREkzoWkKf_cIqKts14LF8KmT5SuwkAVcuqXdGcm9awpcJi-gioL0Xb5Tbtir4_cEx5dZKt0kWnhwwRnhuKFQQ1nGVOti087vyoZcsz2ksorzPFG216G3hHMubk9kbwsg2141ipj_tT82q0BELQBiNZ9WI90GxpjtiQyZ6qgK6aMJIXnTMrwjQGwyhcavZkhaFIwtzaz95_X96DcKRO-OVw_p22gc1yvX2k7eF7bL6PXDc0Io7wdgHTVA2v8V-dbvZHuasalErlOnHXuOHyuQi3el7rfYEG4mvF1WmaZXxs2n1Lac3uNyQo5LdSjQeK9GPXaLDWUex7PdIhF_SIvttUA6oXdXpkoFoHPLvbrvnq9DhfZzZUG0Tj8q0bfKRADb9CIdaj7PIgN8rcGII6YdjhmjLBpKiY43gJ3FIYbnofx46OtGIY8FTvM6hnD94XMcPaQ2N-T-C06rfWIGdPrhu_faZGmtbKEV6c98u09s6qLq_lsOUq5Io-qgPvd6T_C6e-o_35DrboSMLyLEgxQUN5YPhp_Xis9M6uDlbk1RvnG5Dk-qt1b1MECHQsW7yx8axZWXYch5ffpHSnvDJiFc4Oj7wH85_fnewD_jzr9HfXfb6g9E8DLgfh0-jYP8N9CN2iyA3F41mIeYdnF4iaOjz-O66KyYuujyiFigC7Nf1s5okqacm2cTSW6zecJyD2WShyAIVzHppCugTui0qAUmysivH8PUb_luHmfEX-QZ8tHPWqfkSOZpXhPK39Vz76nlf9Np7-j_vsNtS9IK3_X3LHb1ckjqnLH3rO5YzgtH7Rvi_1u1cN2A9d7HHsfXO9x7Bdw-jvqv99Qe-75RrEQCa-KtUfjVsmQ78MEK1zbvvq2EUmqJCz3cNl9Y4Pm7inkteNSd-DXV1RyiwVJwkxpfx6uZyLdUUnKZZZ1AkD9NvvnaXwXZimj8R6gATrAtSGq_Rjo7TA5WBRGWBbh2vd986cCpr396jQwIY5jIuVr4HN082BJsJ8ONNd3gTv0a6C1t2z9YNDKB4_nNlr-TNB5QXMctjePGeRqu-DNQ84bPT-Z37EgWJEVlndDnkxzlYvGzFOO-VYaaXainp7Lhq_xrPbUDtZqc1plS0kj_Vnb39PemmawMHZ89iHi2yL2BTfH31yhn-d-uftks1tjNvjM_fIf6tFqO7ep-AW3GX8M8f5D7GqvqN0nuwCbsebzK-o3nl1_8UyxfUiv63t-9xkMM5HqAK9BlCeYqss-iDTPXrTl9sSBrlpUKY8Zosa2UddtGRA4jlsRJiFrnDMV2lM19bxE5RkjjUMjbVs3In04nFCsVg9O_VHFk8D6SvItdG-f1uSc_l9OdFpj6DLwmqOz9yzYVePXA7q-CP2eziz8-W_NhsNRkR-FvjvQOVQt9HrH4DeTVWW4PVNqv38gnAgaF1iI9HH_qqChvo2TLx_mz-SRVn97FsNvHLJz_VPmAzQ8gcCvarrnNWe5oHXQ2F8nPSgVFiq0rY6dK7YBrzhZrKfNagPl4RCsFRh5ge_HMGYpJ64RtaMyfnqwOLcnreVe3pthwPPHwxDQrDbtO7e6K9ec_TH9DaNUKJIcfX_A1R6OGOYbeE_MuSlIJez6HafjdADqC8IIluRc42miuzmfSwS0J_kgta8I6JvLMDaCqIRjElHMIc4UlGkuYr2I7HodpxMczu221Ih3-I7A8w_wmvJ_MDy_hQChl_gVwfPxfP7XVTi5Hl7OJ-HNcvE_k9HqFrhjgJDRDLiXdofroe5quPwwWd2Gq0V4-XE2H9vK21TnCghCeD4eXQ3_nNjCcPW_NxPgjpeE_U3Vdkwic7qlrDO7vl0N5_PwZjmZzj5ZSS875ka5VJiZ00zoIHYUjhZXN7P5ZAncsQW4ptjo06cn5XZmK038eDsJ57PrP005Y0kLpuHt7WS5mi2uNVCLa1gWj0bD0R-TAyqL60aXt6vh9Xi41CXdoGxSAvBxNZvflm3qfV3Orsez6w-mbDptFc7Gk0YbC_nk0_DqZj6x4o4SpzobaLnZZOYXUK3Tgefjq_lsGY5nS-O2l_isPK9uI5IRXRQe7Pu0miyvh_NwPlt9tXgb-wzxGVUv4uURAn0Be76SPsckh_Phx-vRH7aLGMdb0nLLWXLhJgN3gM_IRdcPfNcdDLzB2faiG_S6gyRwvSgJCMKDddDzozgOkige-P3YP6MXyEGug7o9p-sNuoOO0-_3I5wgHLvdtYM90HPIDlPWMS8ySsXmzLym5MJ3AuSeMRwRJs3LoBDi5AGaQj1uvfGZuDBwR_lGgp7DqFSykqKoYuTCvBfKvt2keBUU25_lgl18_ctTjGL_HwAA__8PUtVL">