<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/102784>102784</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            A/F: "cannot get DomTreeNode of block with different parent" after 8101d18
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dyung
      </td>
    </tr>
</table>

<pre>
    After commit 8101d1863cc3a6ca0ca49962903f2d7651b25659 was merged into our downstream repo, we started to see assertion failures in many of our tests, and it seems many buildbots also hit the same assertion failure.

Here is a reduced version of one of our internal tests that hits the assertion failure:
```c++
/* repro.cpp */
#define a() struct
using b = float;
a() c { b d; };
using n = b;
void e(n *, long, long);
long f;
float *g;
void h(n *i, long j) {
  for (long k; f; ++k)
 for (long l = 0; l < j; ++l)
      g[l * k] = i[l];
  c input[]{{}, {}, {}, {}, {}, {}, {}, 15.1f, 16.1f};
  e(reinterpret_cast<b *>(input), 2, 6);
}
void m() {
  c input[]{16.1f};
  h(reinterpret_cast<b *>(input), 6);
}
```

When compiled with optimizations using a compiler built from 9bb7c11 (the change immediately preceding 8101d18) there is no assertion failure and it succeeds (although the assertion failure was added in the mentioned commit so it makes sense the previous commit would not hit it, but I digress):
```
$ ~/src/upstream/9bb7c11-linux/bin/clang -c -O2 repro.cpp
$
```

When compiled with optimizations using a compiler built from 8101d18, we see an assertion failure during the compilation:
```
$ ~/src/upstream/8101d18-linux/bin/clang -c -O2 repro.cpp
clang: /home/dyung/src/upstream/llvm_clean_git/llvm/include/llvm/Support/GenericDomTree.h:400: llvm::DomTreeNodeBase<NodeT>* llvm::DominatorTreeBase<NodeT, IsPostDom>::getNode(const NodeT*) const [with NodeT = llvm::BasicBlock; bool IsPostDom = false]: Assertion `(!BB || Parent == NodeTrait::getParent(const_cast<NodeT *>(BB))) && "cannot get DomTreeNode of block with different parent"' 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: /home/dyung/src/upstream/8101d18-linux/bin/clang -c -O2 repro.cpp
1.      <eof> parser at end of file
2.      Optimizer
3. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-unroll<O2>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "repro.cpp"
4.      Running pass "slp-vectorizer" on function "_Z1hPfl"
 #0 0x000055dca663cc2f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x421bc2f)
 #1 0x000055dca663a78c llvm::sys::CleanupOnSignal(unsigned long) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x421978c)
 #2 0x000055dca657e5b8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007fc7a7875420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007fc7a734200b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007fc7a7321859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007fc7a7321729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007fc7a7321729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007fc7a7332fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #9 0x000055dca5ee216f llvm::DominatorTreeBase<llvm::BasicBlock, false>::getNode(llvm::BasicBlock const*) const (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x3ac116f)
#10 0x000055dca565e011 llvm::ScalarEvolution::getOperandsToCreate(llvm::Value*, llvm::SmallVectorImpl<llvm::Value*>&) (.part.0) ScalarEvolution.cpp:0:0
#11 0x000055dca5674fd0 llvm::ScalarEvolution::createSCEVIter(llvm::Value*) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x3253fd0)
#12 0x000055dca559632e llvm::getPointersDiff(llvm::Type*, llvm::Value*, llvm::Type*, llvm::Value*, llvm::DataLayout const&, llvm::ScalarEvolution&, bool, bool) (.part.0) LoopAccessAnalysis.cpp:0:0
#13 0x000055dca7fba08c llvm::slpvectorizer::BoUpSLP::canFormVector(llvm::ArrayRef<llvm::StoreInst*>, llvm::SmallVector<unsigned int, 4u>&) const (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x5b9908c)
#14 0x000055dca7fba607 llvm::slpvectorizer::BoUpSLP::findExternalStoreUsersReorderIndices(llvm::slpvectorizer::BoUpSLP::TreeEntry*) const (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x5b99607)
#15 0x000055dca7ffce00 llvm::slpvectorizer::BoUpSLP::reorderTopToBottom() (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x5bdbe00)
#16 0x000055dca8019c10 llvm::SLPVectorizerPass::vectorizeStoreChain(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, unsigned int, unsigned int, unsigned int&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x5bf8c10)
#17 0x000055dca801b3f6 llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&)::'lambda'(std::set<std::pair<unsigned int, int>, llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&)::StoreDistCompare, std::allocator<std::pair<unsigned int, int>>> const&)::operator()(std::set<std::pair<unsigned int, int>, llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&)::StoreDistCompare, std::allocator<std::pair<unsigned int, int>>> const&) const SLPVectorizer.cpp:0:0
#18 0x000055dca801d2c8 llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x5bfc2c8)
#19 0x000055dca801db51 llvm::SLPVectorizerPass::vectorizeStoreChains(llvm::slpvectorizer::BoUpSLP&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x5bfcb51)
#20 0x000055dca801f02d llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#21 0x000055dca801fb23 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x5bfeb23)
#22 0x000055dca7ad9906 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x56b8906)
#23 0x000055dca5fdccb1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x3bbbcb1)
#24 0x000055dca3b614b6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x17404b6)
#25 0x000055dca5fdb5ed llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x3bba5ed)
#26 0x000055dca3b625a6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x17415a6)
#27 0x000055dca5fd9751 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x3bb8751)
#28 0x000055dca68f1d00 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#29 0x000055dca68f506c (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) BackendUtil.cpp:0:0
#30 0x000055dca68f56e6 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x44d46e6)
#31 0x000055dca6f921fc clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4b711fc)
#32 0x000055dca8dcd5ec clang::ParseAST(clang::Sema&, bool, bool) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x69ac5ec)
#33 0x000055dca6f92608 clang::CodeGenAction::ExecuteAction() (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4b71608)
#34 0x000055dca722a959 clang::FrontendAction::Execute() (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4e09959)
#35 0x000055dca71ac7ce clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4d8b7ce)
#36 0x000055dca73171a6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4ef61a6)
#37 0x000055dca37363a5 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x13153a5)
#38 0x000055dca372f39a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#39 0x000055dca6fd780d 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::'lambda'()>(long) Job.cpp:0:0
#40 0x000055dca657eac0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x415dac0)
#41 0x000055dca6fd7e2f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#42 0x000055dca6f9c38c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4b7b38c)
#43 0x000055dca6f9ce1d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4b7be1d)
#44 0x000055dca6fa5125 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x4b84125)
#45 0x000055dca37335fb clang_main(int, char**, llvm::ToolContext const&) (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x13125fb)
#46 0x000055dca362305b main (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x120205b)
#47 0x00007fc7a7323083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#48 0x000055dca372ee2e _start (/home/dyung/src/upstream/8101d18-linux/bin/clang+0x130de2e)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 20.0.0 (https://github.com/llvm/llvm-project.git 8101d1863cc3a6ca0ca49962903f2d7651b25659)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/dyung/src/upstream/8101d18-linux/bin
Build config: +assertions
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtz47aS_jWcF5RcJChe9OAHWR6fTGqy4xo72ap9UYFAU0IMAlwA9OU87G_fAkBKIi2P7RnlbDYnKWcsgQ307UN3AwRMjOEbCXAeZRdRdvmBdHar9Dl76uTmQ6XY0_mytqARVU3DLSqTOGFJmaeUpiSnJKZkvljkeBGnNWZFniUVzvJsgR6IQQ3oDTDEpVVIdRox9SCN1UAapKFVEV6hB0DGEm2BIauQAUDEGNCWK4lqwkWnwSAuUUPkE1K1H8aCscZ1JpIhbl2vxgSKquOCVcoaRIRRaMstsltAhjRHBj6L4ssoXoZ_fwINiBtEkAbWUWDoHrRx1I6rhIE5lxa0JCJIgeyWWMfGeD7PWERpP3yUx-GHRvjC_YRWfBXhpTOGVme0bVGEfVv_MGVQcwmIRLiM8AIZqztqw9POcLlBFYrSS1QLRWyU9oMO1BRFxQWqEIvSCxQVlzuC0FX6rtWu9V5xhiDCpQxSrJBQcrP_vdhRuu-o3n313F2fzXis7TAWHwZBvzu5oqKnQqhWGkW49M_unJi1l9Vb6M6xDHSHZMKLHTs693GFft93Efsu_r9NlF0IJwG6i7JL35G7pijbGwMhirhsOxvw74RzP5dO5h_5lGRnSe0_5O5DccjRWVmDR1Krwa4pMTZKV5U3fPoxwmWQCC_cANj9kx86wI22t3PT-_vArlOVjsiwfZcMx9nvQH04kf5zC9JFi5YLYOiB2y1SreUN_ydxM8OgAD8y0Gg_aS2qtWrQoqoKmiTO224-0S2RG0C8aYBxYkE8oVYDBeZG6EORU91u-9kr1fM5uAsTHaUAzLjBibBb1W22x2etD16EMR-7PEkD0hEAG-KgUW7IhtyBQQakAU_WarjnqjMD1YPqBENS-RCBuHWmrDqLPiHGNxqM8Wadhohh-s_R_0T4ymga4auuDYEzwle9jWaCy-4xwlcVlxG-ooLIDZpRNPuC9wFlN9Qf5bCdE0Iod_FbHjEo67Qbw_vUj-KHfrfqPbd3qO6fRekSRfhqqxqI8JVPbcdGF-K-WVMBRK43zle-IcJXXFLRMdg33HRtq7Sj-AdI0JxequZWA5xto3Q5j2PHz5Omyyhd9g__QzG4IAaidOU-3vpJNqHjklilHfWIEq_QJ3OtjL1UjevmyTdg3dMIl1RJY1FPuvSh37dE2YX3pn_io9-e2QUxnF4IRX3YrZQSexYhpxBhwAfKJVru_Olc5KJNcuFSyioqVuiaaJDW9XHdPC9NuN0JGZ4PYg5xppdpiDUXFz7QLHwcw3mEcxRhTIl0c2cDFh0Y0WXiykkesMp4XYMXoe054QgXHnnA-hR__fnj8uYjMl3lZiVBVbfxFYi2rurYWtsaJ6_LxlcbbrdddUZVs3e4-zVrtfodqPM6N6YDE-GrEFoCPAK4NTFbVBF6ZzWh4DzXekRSMAYYMqrTodn1JMYo6uIaQ7qTyFDNW9uLfGMJvUOsa9rdLInP0LVWG00aRPSmczHJvBHa7584yVnIoVG6AlVH6UdnXgMaEYtAMueEmgsIxLgn_hLiBujQnJ6hr52Ubua3xLjAi-tO0jD1V0A2oGdc3gcI-DICc-fAlVAPoGceMETaGZdWc2k4Nf6Zan0xoNqZVpZYN0-2QBjoGetawWkfWy6kmjnjEw2zWumZsMpz8iPMGAjwdD7BhSZurOZVZ52DuHTOnlnBZw1pWy43A_PZPVCrNP-nYyzVzOdQAeTes6HAZkqKp8B_Rzp5FAThsgY9I4JvZAO94qqdCUXYDARvPImxVDUVl45bQx5n3IIOgTlKL5PApjMw8125rNXAWfP6aVbzx1Y5o3qGhjet4PUTrTcu1yvZmZnjMLNbDWarBOvHrJV-IJrNzAO3dOs84arI_pt2SXlm1YxTh86h2Sonw13XBgHuAFovlInSi63ixs5cVlTSc3SNhsu7Z20t0E4QCzM_xQNZENpLMas0kXQbWOyJO9lqYJxaUgkwvbLiwFU6wqvwZTaY89TG9TSd1EqIKF19waHVaiJNrXQzeyDaTQUnmVYkSletBgP6HmbeHccB8QeI2BjjlgiC0yZKV0QI9TAY0s-bj2FK7KSYuUQ_I8Z0TRv49gM5__UiDj6K8Irx-5mGZtYSrh2pJVxQIkQP6DdDUKrZu1Do8PAciCMUSjU7CkTX9Yew-E0gLiKMkZKoUawT4ILgPtRiHCLlvA-g03A5xbAfaIihjmD9X8n2uha7gVCE0xjFj3Ecx1nGKMndUh3XB6nfPJnw4VpzaX2euQ3JqtwTafKwVkP6yF3C8pHZZefyx_JNhC_ixzlOKorr_XotwmkyEZsUJT0m9spVaF37Rd7wjSQiwmUn_R4GG1aqpxNyUZR0JCQeCZkVkFUlWrms_xWougf9FKT6iUgmnMfK3m4jmpWSFh6th0C6jP3_OxZpz6KoaUGKssjmOEbrtQZjlYa1tr16glcRvnos83U-DzrMNrILD1o3mwg7M-os9rok8zmOR5rMR2zSOY7jCmnCjYPold9IcdWQ4BWdfaafcPy4-4rP0sQZtLf_1dmZ-_ZkGLSuKuokfwwN916aYF0_9BmN0mWWROky2UuSjSXBSZktEKmU1_RtklgWrOF7eSalY1LsmeRTJgVeuMpyHeReG9i4YLe-J6J7swW4tE5_l7Abs6EksM5it6gr97yLY7zXUqxdxzVTDeHyx1guCgeidL7nWY55prhm-RuAQx1kcg-ZNK1ZPoLM4hD8GQBO8vqVBczRFQde9cuL52uZY_RhOTNe2pxkgqeEJkm-j0IuCI2CZ5ZnECfJgY43lAiiP94r0Q0rWC_-lxY0kczcqpUGV5MeqvKbw9SwqbYfqiFC_OaD-6emFSNj7Xq4BJL3Ie2sJdq6-bxAEzGeBxKnSjJWpZjXLH5NFeqlv1l9_O2T9eHrmBanCrApztKaxSP7jwJsli3yFMOB0G5BqXzFbS55XY8EvH1qn1v5uO3fQXpJLPlMnlRnBxzmEz9O7BieuyX1_vfUf5-VapfULQqXkognw81xF6aH1ijqisTjnCjag-ogTBv1a3vz-br3JpFXSjcBZCNbLbUmT1-hHqHuxiWYT_1c8wXjcbhG6WqXcsOCDc27PVRPOUWzarGID3KwM8p8apQ8Lt5hlJpL9vEx7OJ7jX81oM1XUJqB_iQZp25tX759QBfuPkqrn_6AEOX0z-NipH821r-mEMfv0F8HTW9Ve6sulLVqt4F8IolZBfF4UueHEpdxsqDJKBJ9vv5tJ_E1MX2ht9PCe2m1JY7TaxgeRc7V28wSZuwU0t_-np_SYnVJk7HFionFqrTO32sx84Mz_lWLHQRJkAZuwEbpylgW2mzXCjjumzeE3ddbR_6Yyu4F-oW0n_yC-P9UqHvFma90-vgYOkW4EKSpGIlwEeFyJ6AZG9Gtoo-E22Mq_42J_--Y8Ja_5MauVNMS7feJd1ISIRQlIfu-ER7-56Bq6dkoV6uGgsDvTvwNvr_B9y8AX18XjZByvOotJ8mPYVr-jbW_BNZOVzJRTMtRybSYoqbKku8qMt9c_Z9aoypLDjXC8USjOsbsdY10J_1-wqESV8Nrt1cXr9OFMtEbsLfDSwyPqOM0n3mliX46SrFcfgXTCWuePXEL4aNdRptJzwfcvY1YEbo9smiHhkgG7IIf4fnl4HTDV2iIvvvYcOu3O5ZHtlpejVc4mfqpwumb_PQ2Hw1bBL8QSTYOg6sjnU4_waDC6QiOo62ZgrDFIj5ckzCwhIvw2Wn5i2Igjgv7SunwXdoPe4l_brPmVbmI85FZR3s8Wc0orQ7jljflt0T861orraqKVuOYONr8Sas8mVenAOEfZuW_rneSYh7PqzGWswmWqwwOM9Yv_hXorRpEclZfMtL6wvKYwqHDu9Ttu5weiiQDNlI2n0ARZ-R9UBy0W73RRN9hg5eQ9KcxbFLMk4yMUVRMULQosrdExGPm_ItYKa2qsphUh6NVUl7WCYtjf7ZVKvnUqM4gSRowrX-13y_yXKGzNAaaSjz9BKIdKtqvnTysiq55C8KfkSmHA5T-jRy9A8mWu4C4W1h0kv93B-vWjm2hycO6fdDcwnrQ9KATg5p0wq79SSx4peN-CfE621ulxJfOtp294gLeynPS65DhcxuslDRds6sY-9ZfLRfHK8TFxFdZnNPv9dVh-5_OQScw1uT8SllnOeSHwzoD9IMEh42tcMnJRipjOTUf5cajeOrFn_xxwRsgmm6_hENNo5d7B6QrxeAfIF-hCkugV4g-E7k5RnK4I6G53HyF-lhO6Ncx3_L3vssnaXVn-D18hXol7fXE8fd1vwhxWL95Mhaa3n1_Ssic6DzPnM1zGKWayaGjeoGTmn5LngAff7jHL4rDoblfJZ-AcHlz2x_yOWkemFdFktSj16HjI0kloyyDkQrXRBtY3tyOBbyBhrz8qvoEouYLQjMYi5pOrZ3H5ZHJ1gM6TPZHoJ2FAeMnfFHpbJnHoz2kdPxqGWOyyBaHAl5p59TdlDuU8LSyQbxYZIuRbOPXvgmhBYWx8cL1jE_-1DSF4_Z7WZmT4pSVVRFy2U7-UblcpEmRkHFYD5Lu1bhX_VHukdTP1DxpiIA6T8bVaDqqRtMizVOSIUqTdfONF9J0S_T-3FIf5kZtw-boKcVP0iRLSTYSvxyLj-t0QdBg61Vy6yf9gRLPjyU912WSttwYfbQbbfgzze9f2DMbnyXLa1aUMfMGORh3OOi61t6m_mn_0mqo2CkRoiL0bl1LJ-keJoF3D5lVslJNQySbztijvttlM-WTNRGTtwZDjt7lr12H9Zo-PiZJ-FIRw6nLddzJ5K04InYNa6sJt2Z4PBnu8K3L8NzfGtpH6_2Bk9Bl8lq5N1W4O-lIf1bVUX_M4-nBVkIPj2gcO766WzrckBp8LfpW151uviYZI3R0dGKeTJEFuEb_zsiYbGi_CAE8yc40LemLhhvf4juM3t6ao5A96egIXqqRv0G6HJUrpz1mNa-KKh0fM5tPixUKCXuvOX5WlXnZFj-r6jM3L54rfBaIp29e-xeubzXf4ZL2jzIiJKM9svl8bESSJTh7SeDLg8-jYuBIFfCS8f-FRjxdHVrOEzxK2vNsUnOkWV0FEYeqYxDbx47l83dyL6Tkk9UZOKurkcjj3dAcp3FWof5k-0l44hjH2Zjn9GB9GpcpWq8Fr1x4Jdqu33O0nppuuMwQPvqHfhx_yD6dY_fvnv20tALAgALjkxk6ZoD3dfTuOjNo7ffMAyhQ3Zfy_uK5w2u4_hpuyMIjdyBggJJ07gTrDKDZ_fAHN_hBoX3IZvcHMHB8Fp_5rcX33ZQ927zjD4bseIetFKdaf0Ohk3dSPciDmwqBzt9wQU3YVV-iVhn-GB75pYEQwC65_oELsn6sCwccN4Vq3t8jv9hdbzeT2-sf2HnKFumCfIDzpHDLyXmZ4g_bc4LreVwv8iwFUsQlzaAq2CIrM4pxAfPkAz_HMZ7HZZLEOEszfFZkeZKnecqqMi9LlkTzGBrCxZkz8JnSmw_-EvJ5EuOinH8QpAJh_N9wwVjCA_JPI4yj7PKDPvdeqbqNieax4Maa_TCWWwHnzqNXQb3vvnWNiP9DMb0lP3RanH__zeper_tz_L8BAAD___Z0xRs">