<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64976>64976</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] `Inline` Pass crashed with Assertion failure "cast<Ty>() argument of incompatible type!"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Colloportus0
</td>
</tr>
</table>
<pre>
MLIR built at commit 5624e86a
Reproduced with:
`mlir-opt --inline temp.mlir`
temp.mlir:
``` milr
module {
func.func private @func1() -> tensor<24xi1> {
%17 = llvm.mlir.constant(31 : index) : i64
%18 = builtin.unrealized_conversion_cast %17 : i64 to index
%29 = llvm.mlir.constant(24 : index) : i64
%30 = builtin.unrealized_conversion_cast %29 : i64 to index
%31 = llvm.mlir.constant(23 : index) : i64
%32 = builtin.unrealized_conversion_cast %31 : i64 to index
%35 = llvm.mlir.constant(20 : index) : i64
%36 = builtin.unrealized_conversion_cast %35 : i64 to index
%39 = llvm.mlir.constant(18 : index) : i64
%40 = builtin.unrealized_conversion_cast %39 : i64 to index
%49 = llvm.mlir.constant(12 : index) : i64
%50 = builtin.unrealized_conversion_cast %49 : i64 to index
%51 = llvm.mlir.constant(11 : index) : i64
%52 = builtin.unrealized_conversion_cast %51 : i64 to index
%55 = llvm.mlir.constant(9 : index) : i64
%56 = builtin.unrealized_conversion_cast %55 : i64 to index
%59 = llvm.mlir.constant(6 : index) : i64
%60 = builtin.unrealized_conversion_cast %59 : i64 to index
%63 = llvm.mlir.constant(4 : index) : i64
%64 = builtin.unrealized_conversion_cast %63 : i64 to index
%65 = llvm.mlir.constant(3 : index) : i64
%66 = builtin.unrealized_conversion_cast %65 : i64 to index
%72 = llvm.mlir.constant(1705294429 : i32) : i32
%74 = llvm.mlir.constant(1546631969 : i32) : i32
%75 = llvm.mlir.constant(1.32902208E+9 : f32) : f32
%76 = llvm.mlir.constant(1.57770394E+9 : f32) : f32
%79 = llvm.mlir.constant(914179401 : i64) : i64
%80 = llvm.mlir.constant(1869062064 : i64) : i64
%81 = llvm.mlir.constant(-1446 : i16) : i16
%82 = llvm.mlir.constant(1904121856 : i32) : i32
%83 = llvm.mlir.constant(972215468 : i64) : i64
%85 = llvm.mlir.constant(899409538 : i64) : i64
%86 = llvm.mlir.constant(24915 : i16) : i16
%alloc_2 = memref.alloc() : memref<24xi32>
%alloc_3 = memref.alloc() : memref<11x12xi16>
%alloc_4 = memref.alloc() : memref<11x12xi64>
%96 = spirv.BitCount %82 : i32
%99 = spirv.IsNan %76 : f32
%101 = spirv.Not %74 : i32
%103 = spirv.CL.ceil %75 : f32
%104 = spirv.CL.ceil %76 : f32
%105 = spirv.CL.cos %103 : f32
%106 = spirv.CL.erf %105 : f32
%108 = spirv.CL.fabs %76 : f32
%109 = spirv.CL.floor %75 : f32
%110 = spirv.CL.log %75 : f32
%111 = spirv.CL.rint %109 : f32
%112 = spirv.CL.round %106 : f32
%114 = spirv.CL.sin %103 : f32
%116 = spirv.CL.tanh %75 : f32
%118 = spirv.CL.fmax %112, %110 : f32
%119 = spirv.CL.s_max %74, %96 : i32
%120 = spirv.CL.s_min %74, %72 : i32
%123 = spirv.CL.fma %103, %111, %106 : f32
%124 = spirv.CL.fmax %110, %105 : f32
%125 = spirv.CL.fmin %116, %123 : f32
%130 = spirv.FOrdLessThan %105, %118 : f32
%135 = spirv.FUnordLessThanEqual %124, %104 : f32
%141 = spirv.LogicalEqual %130, %135 : i1
%144 = spirv.SGreaterThan %86, %81 : i16
%153 = spirv.GL.Acos %124 : f32
%154 = spirv.GL.Asin %124 : f32
%157 = spirv.GL.Cos %103 : f32
%158 = spirv.GL.Cosh %108 : f32
%159 = spirv.GL.Exp %106 : f32
%160 = spirv.GL.FAbs %158 : f32
%161 = spirv.GL.FSign %157 : f32
%168 = spirv.GL.Sinh %112 : f32
%169 = spirv.GL.Sqrt %153 : f32
%170 = spirv.GL.Tan %154 : f32
%171 = spirv.GL.Tanh %161 : f32
%172 = spirv.GL.FClamp %106, %125, %160 : f32
%173 = spirv.GL.FMax %114, %171 : f32
%176 = spirv.GL.FindUMsb %120 : i32
%180 = spirv.GL.SClamp %85, %79, %80 : i64
%185 = spirv.GL.UMax %80, %180 : i64
%188 = vector.broadcast %141 : i1 to vector<2xi1>
%192 = vector.flat_transpose %188 {columns = 1 : i32, rows = 2 : i32} : vector<2xi1> -> vector<2xi1>
memref.store %176, %alloc_2[%64] : memref<24xi32>
%194 = llvm.sext %86 : i16 to i64
%195 = builtin.unrealized_conversion_cast %194 : i64 to index
%206 = scf.while (%arg0 = %80) : (i64) -> i64 {
%alloc_15 = memref.alloc(%50, %195) : memref<?x?x24xi32>
scf.execute_region {
%214 = func.call @__mlir_math_fpowi_f32_i32(%172, %101) : (f32, i32) -> f32
%215 = func.call @__mlir_math_fpowi_f32_i32(%169, %119) : (f32, i32) -> f32
scf.yield
}
scf.condition(%99) %83 : i64
} do {
^bb0(%arg0: i64):
%alloc_15 = memref.alloc(%30, %36, %32) : memref<?x?x?xi1>
affine.vector_store %192, %alloc_15[%56, %18, %40] : memref<?x?x?xi1>, vector<2xi1>
memref.store %arg0, %alloc_4[%60, %52] : memref<11x12xi64>
scf.yield %185 : i64
}
%210 = affine.load %alloc_3[%66, %40] : memref<11x12xi16>
%213 = tensor.empty() : tensor<24xi1>
return %213 : tensor<24xi1>
}
func.func private @func2(%arg0: tensor<24xi64>, %arg1: tensor<24x11xi1>) -> tensor<11x12xi64> {
memref.alloca_scope {
%255 = func.call @func1() : () -> tensor<24xi1>
}
%252 = tensor.empty() : tensor<11x12xi64>
return %252 : tensor<11x12xi64>
}
func.func private @__mlir_math_fpowi_f32_i32(%arg0: f32, %arg1: i32) -> f32 attributes {llvm.linkage = #llvm.linkage<linkonce_odr>} {
%0 = llvm.mlir.constant(1.000000e+00 : f32) : f32
%1 = llvm.mlir.constant(0 : i32) : i32
%2 = llvm.mlir.constant(1 : i32) : i32
%3 = llvm.mlir.constant(-2147483648 : i32) : i32
%4 = llvm.mlir.constant(2147483647 : i32) : i32
%6 = llvm.icmp "sle" %arg1, %1 : i32
%7 = llvm.icmp "eq" %arg1, %3 : i32
%8 = llvm.sub %1, %arg1 : i32
%9 = llvm.select %6, %8, %arg1 : i1, i32
%10 = llvm.select %7, %4, %9 : i1, i32
cf.br ^bb3(%0, %arg0, %10 : f32, f32, i32)
^bb3(%11: f32, %12: f32, %13: i32): // 2 preds: ^bb2, ^bb6
%16 = llvm.fmul %11, %12 : f32
cf.br ^bb5(%16 : f32)
^bb5(%17: f32): // 2 preds: ^bb3, ^bb4
%18 = llvm.lshr %13, %2 : i32
%20 = llvm.fmul %12, %12 : f32
cf.br ^bb3(%17, %20, %18 : f32, f32, i32)
}
func.func private @__mlir_math_ipowi_i1(%arg0: i1, %arg1: i1) -> i1 attributes {llvm.linkage = #llvm.linkage<linkonce_odr>} {
%0 = llvm.mlir.constant(false) : i1
%1 = llvm.mlir.constant(true) : i1
%2 = llvm.icmp "eq" %arg1, %0 : i1
cf.cond_br %2, ^bb1(%1 : i1), ^bb2
^bb1(%3: i1): // 6 preds: ^bb0, ^bb5, ^bb6, ^bb7, ^bb7, ^bb10
return %3 : i1
^bb2: // pred: ^bb0
%9 = llvm.icmp "ne" %arg1, %0 : i1
cf.cond_br %9, ^bb1(%1 : i1), ^bb1(%1 : i1)
^bb8(%10: i1, %11: i1, %12: i1): // 2 preds: ^bb2, ^bb11
%14 = llvm.mul %10, %11 : i1
cf.br ^bb10(%14 : i1)
^bb10(%15: i1): // 2 preds: ^bb8, ^bb9
%16 = llvm.lshr %12, %1 : i1
%18 = llvm.mul %11, %11 : i1
cf.br ^bb8(%15, %18, %16 : i1, i1, i1)
}
func.func private @__mlir_math_ipowi_i32(%arg0: i32, %arg1: i32) -> i32 attributes {llvm.linkage = #llvm.linkage<linkonce_odr>} {
%0 = llvm.mlir.constant(0 : i32) : i32
%1 = llvm.mlir.constant(1 : i32) : i32
%2 = llvm.mlir.constant(-1 : i32) : i32
%3 = llvm.icmp "eq" %arg1, %0 : i32
cf.cond_br %3, ^bb1(%1 : i32), ^bb2
^bb1(%4: i32): // 6 preds: ^bb0, ^bb5, ^bb6, ^bb7, ^bb7, ^bb10
return %4 : i32
^bb2: // pred: ^bb0
%5 = llvm.icmp "sle" %arg1, %0 : i32
%10 = llvm.and %arg1, %1 : i32
%11 = llvm.icmp "ne" %10, %0 : i32
cf.cond_br %11, ^bb1(%2 : i32), ^bb1(%1 : i32)
^bb8(%12: i32, %13: i32, %14: i32): // 2 preds: ^bb2, ^bb11
%17 = llvm.mul %12, %13 : i32
cf.br ^bb10(%17 : i32)
^bb10(%18: i32): // 2 preds: ^bb8, ^bb9
%19 = llvm.lshr %14, %1 : i32
%20 = llvm.icmp "eq" %19, %0 : i32
cf.cond_br %20, ^bb1(%18 : i32), ^bb11
^bb11: // pred: ^bb10
%21 = llvm.mul %13, %13 : i32
cf.br ^bb8(%18, %21, %19 : i32, i32, i32)
}
}
```
trace:
```console
Assertion failed: (isa<To>(Val) && "cast<Ty>() argument of incompatible type!"), function cast, file Casting.h, line 578.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: mlir-opt -inline reduce_temp153.mlir
#0 0x00000001025af774 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/workspace/build/bin/mlir-opt+0x1002f7774)
#1 0x00000001025ad910 llvm::sys::RunSignalHandlers() (/workspace/build/bin/mlir-opt+0x1002f5910)
#2 0x00000001025afe3c SignalHandler(int) (/workspace/build/bin/mlir-opt+0x1002f7e3c)
#3 0x00000001b0a454c4 (/usr/lib/system/libsystem_platform.dylib+0x1803414c4)
#4 0x00000001b0a2dee0 (/usr/lib/system/libsystem_pthread.dylib+0x180329ee0)
#5 0x00000001b0968340 (/usr/lib/system/libsystem_c.dylib+0x180264340)
#6 0x00000001b0967754 (/usr/lib/system/libsystem_c.dylib+0x180263754)
#7 0x0000000106a3da0c mlir::scf::WhileOp::getConditionOp() (.cold.4) (/workspace/build/bin/mlir-opt+0x104785a0c)
#8 0x0000000103b265b0 mlir::scf::WhileOp::getYieldOp() (/workspace/build/bin/mlir-opt+0x10186e5b0)
#9 0x0000000103b5a04c (anonymous namespace)::RemoveLoopInvariantArgsFromBeforeBlock::matchAndRewrite(mlir::scf::WhileOp, mlir::PatternRewriter&) const (/workspace/build/bin/mlir-opt+0x1018a204c)
#10 0x000000010647d4e8 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>)::$_2::operator()() const (/workspace/build/bin/mlir-opt+0x1041c54e8)
#11 0x000000010647a7e4 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (/workspace/build/bin/mlir-opt+0x1041c27e4)
#12 0x0000000104e3a7b4 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() (/workspace/build/bin/mlir-opt+0x102b827b4)
#13 0x0000000104e37fe4 mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/workspace/build/bin/mlir-opt+0x102b7ffe4)
#14 0x0000000104de3c64 (anonymous namespace)::Canonicalizer::runOnOperation() (/workspace/build/bin/mlir-opt+0x102b2bc64)
#15 0x0000000104dccecc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/workspace/build/bin/mlir-opt+0x102b14ecc)
#16 0x0000000104dcd5bc mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/workspace/build/bin/mlir-opt+0x102b155bc)
#17 0x0000000104df2d18 (anonymous namespace)::InlinerPass::optimizeSCCAsync(llvm::MutableArrayRef<mlir::CallGraphNode*>, mlir::MLIRContext*)::$_0::operator()(mlir::CallGraphNode*) const (/workspace/build/bin/mlir-opt+0x102b3ad18)
#18 0x0000000104df283c (anonymous namespace)::InlinerPass::inlineSCC((anonymous namespace)::Inliner&, (anonymous namespace)::CGUseList&, (anonymous namespace)::CallGraphSCC&, mlir::MLIRContext*) (/workspace/build/bin/mlir-opt+0x102b3a83c)
#19 0x0000000104deaad4 (anonymous namespace)::InlinerPass::runOnOperation() (/workspace/build/bin/mlir-opt+0x102b32ad4)
#20 0x0000000104dccecc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/workspace/build/bin/mlir-opt+0x102b14ecc)
#21 0x0000000104dcd5bc mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/workspace/build/bin/mlir-opt+0x102b155bc)
#22 0x0000000104dcf474 mlir::PassManager::run(mlir::Operation*) (/workspace/build/bin/mlir-opt+0x102b17474)
#23 0x0000000104dc76d8 performActions(llvm::raw_ostream&, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) (/workspace/build/bin/mlir-opt+0x102b0f6d8)
#24 0x0000000104dc6c00 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_1>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) (/workspace/build/bin/mlir-opt+0x102b0ec00)
#25 0x0000000104e540c8 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/workspace/build/bin/mlir-opt+0x102b9c0c8)
#26 0x0000000104dc15b4 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/workspace/build/bin/mlir-opt+0x102b095b4)
#27 0x0000000104dc1a24 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/workspace/build/bin/mlir-opt+0x102b09a24)
#28 0x00000001022bad40 main (/workspace/build/bin/mlir-opt+0x100002d40)
#29 0x000000010e041088
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtz27iS_jX0CysqAARvD36QZXs2VckkFWf21D6pIBKUsKEIDgg69vz6LRLgBbxKmjmzW2fP1MSiSHTj6yu6AdqkKNgxo_Tech8s9_GOlPLExf2OpynPuZBlAe4OPH6___zp4zf7ULJU2kTaET-fmbRt10OYBh6xwKMFtt9oLnhcRjS2fzJ5spytbasnlgfOKRMfeC7tDx9YlrKM2pKe80112_KAHlb_7O4725Zc_W-fWSo0zzOPy5Talv-gvtt2UmbRpvph54K9EkltC4PqO7RQYKHQ_mA5T7akWcGF5ewQfmOwutNjYdsWcqFvW86jnaav5xrHJuJZIUkmLRQ40K7kYllM3yqW9RcPm_RBTV9ri2WbMhOUpOwPGu8jnr1SUTCe7SNSyHaymoctuebbZ1bPMQMG4XUwDrgCTMdjGkwt_RwY5wIw6AowjapnwbgLYMAFYLxrwLgrYBbMVPvDChh8jZmcFTPhJTBoHYx7DRi8AsZd8Bl4QTS51_iMu-Iz7oLPhBdgucZl3BWXcRes5K1j8a4xkrtiJM-Zx3JBkvHwFVg8ZwXLgo0uyDHeNTbyVmzkowXn9YGLQowbHA6yepcGF7zAxcWe58DQW-eyoBe4cVAIEALBk4UeFH3SsUqGrLwlVq7v-8AJ8WWsFrw4hBj6IQZtUM7ZLABL2dMLgYeAh1e5LGSaDxBjHVTQaxlAz2SwZO0QYIhg4HprdgoWYin0EaosHqzKsmDsIAwxCF1nncmCmREOobumEJKmPNorrZzpWdBkU9_S9VRFom7rcspBlvM0wcG5iAOEbxC9VRhaJi0HfA0HDw9hhEoTRc7E6-aByR0vM9mafGzDMOyN_1j8SrI2bMYhAAHsjf6Vyzbmx4whcHpjd582EWVpG91TvPHM-Dks7mA8L7p5p8Z75ngqko7P1PjAHJ-QQ7GIJxyMTzkXSwJDYBKk_Lg4HJrDBVOGVRNPEaABAS-zuFPFFMXABAXLFlUKByqVJDstijBU6Zm8aagW2nVKmSIdaLfYa1ofa9LQm_ZDBEaUSqyW0p8ODYicEVytjhYtbK7mVIrwnMigJZ3RFnKHpNocVRrbdQgnSJ2-zM9fRPyJFsX3E9HmdFv8wYC-Ju7P-_xbxjvyp99Lkmq5Wvh4GgPu--snfmQRSTt6pxW_aTjggLyvuJdfBCWSikaEoNFAACfTOXT7pvvl02bbZAc0g9bFA4LG92cJfJNgt5J-3GA0_tTlmSmC0CR4essXPc0D5vjnrcpXauYpAjggeGHHrJNtimIgwwtT8Q51rzUmGMjw8ruQnX0mCPyBEN-1y7ozVvDhaPypE26KAA2E3qXk3Ci2Das2QLyZdOQP_Ov5cxPWbVz4cwi8ASnL4t8-F4cuWU2komCgl5cWdtBg9cMmJsDMZo1r8vhNYw7aUJylVHZ_pZHkYnMQnMTtrg5uIrDqK9SIqkZSO04mmxD12SQpkXspSFbkvKDtPP5DxNPynBX1WNjVoDtb8J_qbpev_cf6cjiv2gCbR6PLq0JyQbVRtA50IWi5D3W3Z7mPy8VfLVev6ynom2wr0jox1f3WUKOhe83OWYhXts6a2iZKNj9PLK1kCiphxFH5jbayKhQsFOhSutZSxdXYGOyVs9CdrkZdt_WZ0B0Vp5bz_Fb9myiU7RojfaNRKele0CPj2XB2JZKuReqtzoikqW1hsN9Xxf3-TORpn-T8J9snDtrX3hGo4G4XJdiTNlHuozuZWmgjKtsp3eun9MJ2LQ2vnLLSxDujaWyo3n_UX6vHEc9iJhnP1GyhmkJ3XsNA9R_tmA_2eN2nwwF0ztC1Ue2W8wXGbtdqp4mSriccGb361482kiQsoxsVi_su4kJkRBx0Vci5bRIO9AUGoyAcz4V2C9E-jvdaF_3psQ745q6LRpNOt1w9M3ZJdmwZM1x15a9Vk3ISd0gcjcSbF3-ifWwYq2VJ7fxv6DmX773ucXQg0BELKkuRdTwWBnfSzB5DINPjDFZKf1r34giHAyBsTDo8xugbwHTzvsuSfRHxnNoTOQ25EwHePzbRwTt_grJgU717u6b6aS_qqd9F6wQrJljJWY1ZdI7q2WGQrmwipWCHUtKi0ma9vqUs-0GOVK8qTv-e5eyqK55FdM9jUeGtlufBmdPSBtgG1P9RCz0AsLYft7AHBtZ2rpa2v9ZoFza9PiCIfRw4Hg7WuCxslLZM_DUmvV0vFtXlICpSaiHUGlXn0ult1jE1_X1M7Ezv_fVKnlLVrj1nsqf3mvplUkojtTHdVK19ct0Q6hW0q7TAFAe_yZTNRsAkuW3bUbI5CLUmOioUQDdp147bveAw1vE2_HocIDRDCaLBd6ezoVWfE6NnCz3byM4FjYs641Ts1PjqatDJ9mycnEvVPLd2RfY4NHpSuk2R0oulRpv9537v8QJGp8U4eQysckFxElpuhRFN-wICE3KhC-VyWtx6jq6DWTdel7hXkyerkyeDgwIKDtMm7Ipp-HcnzYSkBe22tS9NkVKUc1TosrwATFpdre4Ptfk7d9bK62I6bB8hI6D0QKcb13NFb-CKoGXi9gKnufInriCYWm6dgQI0rt7M1by9aWfyWaOobCL7gpGSTV2Fl-hq4lEfcqAfmw4KofkVTep2PhXB4Z5cz590yLaR1-R8OBmxUDchEM8I0A5wL8IYtBjD2XTZpqI2rYwhDrLXKMEuSxW0mAc9C_T6a1D7888koWH1xharN_b3V2-rRdfS6xF_omD7cE3FdkFCG6w5vUB1ZqJRrS_DrNYfiKeLgH9WVhudyF2V1twLq8qZrcqeixB13mRUotNEcCGVtjlm1UA6bnuKR1MWmrLeVDJFZpz1Sjn1fcaql-dTf5x5uskmNDWVUP05KdoRwWUwZ1NqOJFS8bI9-9XdKORgeKk9ERjZLJg0KDRiDs46OgSD_ZKxAZwLDRC02tU1aOviYX_Pmi3WoN1F_2fzEmgjVP0hBYno-EXRKhHylKq726KgQjKe2QlhqZYbBawglrP7zutdleA_Sap2ET0LeZVhIlLI6vm7el49JOJYnmkmbZ7YLIv4OSeSHVJqy_ecWpWojf6rlaueseZS3WAptXekkCw7bk7VnfodWNcPNgrk109P25cnuygPZyZtYh_Koy1ozoW0JbdPUuaVTyrrHZk8lYdNxM8Weq7MpD8-5IL_N42khZ5ZUZS0qCxdZRuWRWkZU1ueqB0JUpzsA4l-1LrT079IEv2w4_Kct8oEGwuEXwU_CnJuRa8Do3uXV7_KK2hcRnQv6TmHrqNe3m3aUwfY4E3tYAAIkEsS38e1c1UzOdvivVAXXwXLZI3je21UFHSDBPm554UUlJxrC-1sVq1yodqXev7JxY8ir4meDyVL4-qTZRZ6bqBa6AG8QQBQ4vs-7jV8yIEDfHEIwRS-b2X2wo4ZSf-DZHFKRdFsZF0NwQ2rLNSDgIYqok5kG5NV_nqzxNSJjOmc3nQHQLCLI6z5loWonIkdLPRcvBeSntVXdb3PUyITLs6b-L0eU00RAAdDHJlKxeYUKKYUXDiFPAlK4sEMKKTU1JlrzBB6gYMvnCEyeSMPO9jk7Q14-757oYJGvB3fNTXj923tEScmILKb192dbREl6uIfJ5bSL7n6cqRy1xx6fMk7x9tEPI03-Aa_wH7gEmD6RdCH5hyQ5x7AJdD-i9E07sO6BggMPOoeTP2HJhCXABxVfEnGs_czLws7I2eq2Yc6POmZv9JPnOcfs1ciGMnkVhyLZ8HPDzThgj6kPPqhxp6JjE7bLP5Gfwomq1SzICXa9XTwlUhJRaYJRZ2MQruuu68XnCCAOwtUqcjIlR72Y0yD8ezbPE9ZROpznTVxvuRUEHVWtl0XZddLfM0atlfHKwfOq1IgGDFQ0itN6EOMWSavnMV_mklHrN-f-UaLMpWX8dXeYiG8R-qS1xriQrmvduKbLIph5GIaGBaFA4sSn-J_W_QvtegNZkI-xYaZjBUYU4f4B7yWcX4RlMbvptIfBXulGnAueESL4h9c_EhZBfmW9IgOAfIPJlhnANZPDJ8ieZ42sIptFj_zNK6xsvTd0Oi3-kUD7Sbd7WfB_6CNQJrPC5U9xfdHKy3o0TueJexYDaicq3bQGyT2k2RgHmxIHFMn8lbNs6seVs7E_mgsIsrsS9aLn9sMgg6RZ8JzTXhRRKP-mh5TSVjaRO93_iX_SopiG5O8DXhRZgNnL4pRfM9H_jYj6XvBis8kI8cq8hsD7Owyq3_FL76xYkYHiGlkrlLeQNzYPVwv7leW06p5GOS2amgrhfeXy2-my6L4mBVS1J1NtQCM8ml_gJpZPdDYvxJBM_kxS3gTHLc5PHTdg6li31RxguKqx192-I91MyZq19Erm2Rn9gd92e22xXsWGS3V51KSQ0q3QpD3b4MsvCNp-osg-elXHtNKKJW_uwGfP338tuOZpG9a5m5VBTOr6gL3W9dbdHBIDM31NhgqLnBWS8eR4lRb-7Lb1YAuodW-upaSfvmtoJ9Ym0VXM5hWVI3EWzHBLdoLHNPtwkGeJSRezbMj7f01WdZBJDayLAL_r7Isgv_Osv_kLIvQQMUJ9vEAWSPrpP-YqroFko9908mdASTfiwM7pyLh4ryta-ZiZWeskLF6tN9D3dKeiKDxPpfCcnYd6QsvRUQ_H4XlPM0Ud8MkYzxLmfiSy8-EZars61fm16sCJF5spHI0KPoiLwL97QizVbiltxhrqszY7yUdaeozPXPx_lAmifL6MWFME1Kmch_TlEo6T-w8jXqhoQXrrqZ-EpE0PZDoxz7JDEF6mr_aF_4-CTu8j4ykNJJVu1FI8T72siVP6ioL9f5jkPLs-L8t24L1bvB8GgFgeL7ZT1AXg6i_DVTkKZPbLP6qGsxGsv8j_vwvEX-LI7plT33eYPMwApGZ7YZNFXQPeDpG_vVj_oYYCl1zkwT5Q30SNK9PXbVEJ6Lqk63pAC9SsOxYdUmrMt6EnSATu9HEIHQgMQb2mdS_e3fd6Q8AKMZmcjFqfAowBEFgT5602nfxvROHTkju6D30QhS6APvu3ek-CeKAQgRwAkMHewjRCPk-CRPgAIgjeMfuEUAOCJALAgChu4lCz4kDEoWRi31MQgsDeiYs3dTHzFwc7-ojy3sPh753l5IDTYv6rxIhlNGfdv3QQshyH-_EfX3YeSiPhYVBygpZdFwkk2n954xqM7mPtuUB1aFUAlUVnToB1X-kyDYPh8v6FyFuPPu9K0V6f_tJbS35_wQAAP__ghpF1A">