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

    <tr>
        <th>Summary</th>
        <td>
            After 7740565f56ce, "Assertion failed: (isa<Function>(Callee) || isa<GlobalAlias>(Callee)), function analyzeAllUses" with -asan-use-stack-safety
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            compiler-rt:sanitizer,
            llvm:transforms
      </td>
    </tr>

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

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

<pre>
    Commit 7740565f56ce888f5c60d986476185477c911b25 enabled StackSafetyAnalysis (`-asan-use-stack-safety=1`) by default. Afterwards, clang crashes with ASan enabled on https://github.com/freebsd/freebsd-src/blob/main/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c :

```text
Assertion failed: (isa<Function>(Callee) || isa<GlobalAlias>(Callee)), function analyzeAllUses, file /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Analysis/StackSafetyAnalysis.cpp, line 514.
PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang -cc1 -triple x86_64-unknown-freebsd15.0 -emit-obj -disable-free -clear-ast-before-backend -main-file-name dtrace.c -mrelocation-model static -mframe-pointer=all -relaxed-aliasing -ffp-contract=on -fno-rounding-math -mconstructor-aliases -ffreestanding -mcmodel=kernel -target-cpu x86-64 -target-feature -mmx -target-feature -sse -target-feature -aes -target-feature -avx -disable-red-zone -no-implicit-float -tune-cpu generic -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=gdb -fdebug-compilation-dir=/home/dim/obj/home/dim/src/freebsd/src/amd64.amd64/sys/GENERIC-KASAN/modules/home/dim/src/freebsd/src/sys/modules/dtrace/dtrace -fdebug-prefix-map=./machine=/home/dim/src/freebsd/src/sys/amd64/include -fdebug-prefix-map=./x86=/home/dim/src/freebsd/src/sys/x86/include -fdebug-prefix-map=./i386=/home/dim/src/freebsd/src/sys/i386/include -fcoverage-compilation-dir=/home/dim/obj/home/dim/src/freebsd/src/amd64.amd64/sys/GENERIC-KASAN/modules/home/dim/src/freebsd/src/sys/modules/dtrace/dtrace -nostdsysteminc -nobuiltininc -sys-header-deps -D _SYS_VMEM_H_ -D __KERNEL__ -D SMP -D DIS_MEM -D _KERNEL -D KLD_MODULE -D KLD_TIED -D HAVE_KERNEL_OPTION_HEADERS -D SAN_NEEDS_INTERCEPTORS -D SAN_INTERCEPTOR_PREFIX=kasan -D __printf__=__freebsd_kprintf__ -O2 -Werror -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign -Wmissing-include-dirs -Wno-unknown-pragmas -Wswitch -Wno-error=tautological-compare -Wno-error=empty-body -Wno-error=parentheses-equality -Wno-error=unused-function -Wno-error=pointer-sign -Wno-error=shift-negative-value -Wno-address-of-packed-member -Wno-format-zero-length -Wno-parentheses -Wno-cast-qual -Wno-unused -std=gnu99 -ferror-limit 19 -fsanitize=kernel-address -fsanitize-recover=kernel-address -fno-sanitize-memory-param-retval -fno-sanitize-address-use-odr-indicator -fwrapv -stack-protector 1 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -mllvm -asan-stack=true -mllvm -asan-instrument-dynamic-allocas=true -mllvm -asan-globals=true -mllvm -asan-use-after-scope=true -mllvm -asan-instrumentation-with-call-threshold=0 -mllvm -asan-instrument-byval=false -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c dtrace-5c7112.c
1.      <eof> parser at end of file
2. Optimizer
 #0 0x0000000005ab54c1 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:13
 #1 0x0000000005ab34b5 llvm::sys::RunSignalHandlers() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Support/Signals.cpp:106:18
 #2 0x0000000005ab5ac2 SignalHandler(int) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:0:3
 #3 0x000000082b949570 handle_signal /share/dim/src/freebsd/llvm-18-update/lib/libthr/thread/thr_sig.c:0:3
 #4 0x000000082b948b2b thr_sighandler /share/dim/src/freebsd/llvm-18-update/lib/libthr/thread/thr_sig.c:244:1
 #5 0x00000008282642d3 ([vdso]+0x2d3)
 #6 0x000000082e43819a thr_kill /usr/obj/share/dim/src/freebsd/llvm-18-update/amd64.amd64/lib/libsys/thr_kill.S:4:0
 #7 0x000000082eb4bf54 _raise /share/dim/src/freebsd/llvm-18-update/lib/libc/gen/raise.c:0:10
 #8 0x000000082ebff509 abort /share/dim/src/freebsd/llvm-18-update/lib/libc/stdlib/abort.c:67:17
 #9 0x000000082eb2f8d1 (/lib/libc.so.7+0x9c8d1)
#10 0x0000000005029acc (anonymous namespace)::StackSafetyLocalAnalysis::analyzeAllUses(llvm::Value*, (anonymous namespace)::UseInfo<llvm::GlobalValue>&, llvm::StackLifetime const&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Analysis/StackSafetyAnalysis.cpp:0:9
#11 0x000000000502406f (anonymous namespace)::StackSafetyLocalAnalysis::run() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Analysis/StackSafetyAnalysis.cpp:550:20
#12 0x000000000502406f llvm::StackSafetyInfo::getInfo() const /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Analysis/StackSafetyAnalysis.cpp:876:32
#13 0x0000000005024c98 llvm::StackSafetyGlobalInfo::getInfo() const /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Analysis/StackSafetyAnalysis.cpp:891:19
#14 0x000000000502782e std::__1::__tree<llvm::Instruction const*, std::__1::less<llvm::Instruction const*>, std::__1::allocator<llvm::Instruction const*>>::__root[abi:sn180100]() const /usr/obj/share/dim/src/freebsd/llvm-18-update/amd64.amd64/tmp/usr/include/c++/v1/__tree:972:54
#15 0x000000000502782e std::__1::__tree_const_iterator<llvm::Instruction const*, std::__1::__tree_node<llvm::Instruction const*, void*>*, long> std::__1::__tree<llvm::Instruction const*, std::__1::less<llvm::Instruction const*>, std::__1::allocator<llvm::Instruction const*>>::find<llvm::Instruction const*>(llvm::Instruction const* const&) const /usr/obj/share/dim/src/freebsd/llvm-18-update/amd64.amd64/tmp/usr/include/c++/v1/__tree:2098:43
#16 0x000000000502782e std::__1::set<llvm::Instruction const*, std::__1::less<llvm::Instruction const*>, std::__1::allocator<llvm::Instruction const*>>::find[abi:sn180100](llvm::Instruction const* const&) const /usr/obj/share/dim/src/freebsd/llvm-18-update/amd64.amd64/tmp/usr/include/c++/v1/set:826:89
#17 0x000000000502782e llvm::StackSafetyGlobalInfo::stackAccessIsSafe(llvm::Instruction const&) const /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Analysis/StackSafetyAnalysis.cpp:983:30
#18 0x0000000006e4274d (anonymous namespace)::AddressSanitizer::ignoreAccess(llvm::Instruction*, llvm::Value*) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:1317:57
#19 0x0000000006e36970 (anonymous namespace)::AddressSanitizer::getInterestingMemoryOperands(llvm::Instruction*, llvm::SmallVectorImpl<llvm::InterestingMemoryOperand>&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:1331:9
#20 0x0000000006e36970 (anonymous namespace)::AddressSanitizer::instrumentFunction(llvm::Function&, llvm::TargetLibraryInfo const*) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:2905:7
#21 0x0000000006e33dae llvm::DenseMap<llvm::AllocaInst const*, bool, llvm::DenseMapInfo<llvm::AllocaInst const*, void>, llvm::detail::DenseMapPair<llvm::AllocaInst const*, bool>>::~DenseMap() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/ADT/DenseMap.h:782:23
#22 0x0000000006e33dae (anonymous namespace)::AddressSanitizer::~AddressSanitizer() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:647:8
#23 0x0000000006e33dae llvm::AddressSanitizerPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:1191:3
#24 0x000000000315f522 llvm::detail::PassModel<llvm::Module, llvm::AddressSanitizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:89:5
#25 0x00000000056cdea1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/IR/PassManager.h:547:10
#26 0x0000000003155d2b llvm::SmallPtrSetImplBase::isSmall() const /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:195:33
#27 0x0000000003155d2b llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:83:10
#28 0x0000000003155d2b llvm::PreservedAnalyses::~PreservedAnalyses() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/IR/PassManager.h:172:7
#29 0x0000000003155d2b (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>&, std::__1::unique_ptr<llvm::ToolOutputFile, std::__1::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1101:5
#30 0x000000000314e8a8 (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:0:3
#31 0x000000000314e8a8 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::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1328:13
#32 0x0000000003163ff4 std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>::reset[abi:sn180100](llvm::raw_pwrite_stream*) /usr/obj/share/dim/src/freebsd/llvm-18-update/amd64.amd64/tmp/usr/include/c++/v1/__memory/unique_ptr.h:263:29
#33 0x0000000003163ff4 std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>::~unique_ptr[abi:sn180100]() /usr/obj/share/dim/src/freebsd/llvm-18-update/amd64.amd64/tmp/usr/include/c++/v1/__memory/unique_ptr.h:236:71
#34 0x0000000003163ff4 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:379:3
#35 0x0000000003af9d06 std::__1::vector<std::__1::unique_ptr<clang::TemplateInstantiationCallback, std::__1::default_delete<clang::TemplateInstantiationCallback>>, std::__1::allocator<std::__1::unique_ptr<clang::TemplateInstantiationCallback, std::__1::default_delete<clang::TemplateInstantiationCallback>>>>::begin[abi:sn180100]() /usr/obj/share/dim/src/freebsd/llvm-18-update/amd64.amd64/tmp/usr/include/c++/v1/vector:1369:28
#36 0x0000000003af9d06 void clang::finalize<std::__1::vector<std::__1::unique_ptr<clang::TemplateInstantiationCallback, std::__1::default_delete<clang::TemplateInstantiationCallback>>, std::__1::allocator<std::__1::unique_ptr<clang::TemplateInstantiationCallback, std::__1::default_delete<clang::TemplateInstantiationCallback>>>>>(std::__1::vector<std::__1::unique_ptr<clang::TemplateInstantiationCallback, std::__1::default_delete<clang::TemplateInstantiationCallback>>, std::__1::allocator<std::__1::unique_ptr<clang::TemplateInstantiationCallback, std::__1::default_delete<clang::TemplateInstantiationCallback>>>>&, clang::Sema const&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/include/clang/Sema/TemplateInstCallback.h:54:16
#37 0x0000000003af9d06 clang::ParseAST(clang::Sema&, bool, bool) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/Parse/ParseAST.cpp:183:3
#38 0x000000000342c6ff clang::FrontendAction::Execute() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1073:10
#39 0x000000000335cd0d llvm::Error::getPtr() const /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/Support/Error.h:276:42
#40 0x000000000335cd0d llvm::Error::operator bool() /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/llvm/include/llvm/Support/Error.h:239:16
#41 0x000000000335cd0d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1057:23
#42 0x00000000034f769c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:272:25
#43 0x00000000027390a1 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/tools/driver/cc1_main.cpp:294:15
#44 0x000000000274842b ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/tools/driver/driver.cpp:365:12
#45 0x0000000002747517 clang_main(int, char**, llvm::ToolContext const&) /share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/clang/tools/driver/driver.cpp:405:12
#46 0x0000000002744c2d main /share/dim/src/freebsd/llvm-18-update/usr.bin/clang/clang/clang-driver.cpp:17:10
#47 0x000000082eb20e2a __libc_start1 /share/dim/src/freebsd/llvm-18-update/lib/libc/csu/libc_start1.c:157:2
Abort trap
```

Minimized test case:

```c
// clang -cc1 -triple x86_64-- -S -O2 -fsanitize=address dtrace-min.c
long cpu_core_0_1;
long dtrace_fuword64_nocheck(void *)
 __attribute__((ifunc("dtrace_fuword64_nocheck"
 "_resolver")));
void dtrace_fuword64(void *uaddr) {
  cpu_core_0_1 = dtrace_fuword64_nocheck(uaddr);
}
long *dtrace_fuword64_nocheck_resolver() { return 0; }
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsPNmSnDa7T4NvVOoCsTR9MRe4l3gqHntqehyfc0UJEN2KQeKXxCy5yLOfkgQN9PQscTLO5PxxTblBy6dvX4QAS0l3jJAzJ3zvhKt3uFV7Ls5WtKZK3CesEDR_l_Hi_mzJ65oqMJ8HbhiFZRjlJI7jMswjt1jEUTCPvDgM5vN84XkZCgFhOKtIAbYK59-2uCTqPmG4updUAgfFTuRCLDGDrSRQ6jFQmkGOv_KcyHXQAmT3oCAlbis1A0mpiLjFopAOWoK8wmwHcoHlnkhwS9UeJFvMDotyBvZKNdLxEwdtHLTZUbVvs1nOawdtSkFIJovhCkqRO2iTVTxz0KbGlDloI--lgzZ5UVT6hzMlqO7lDWGSV1hQ3d0qM4jXNddzCiVwTg4XsxxoDNyV4_b_R679U-RO2aZESiIU5QyUmFakcPxEM4hK7PjLTcty3ef4awfFS1xVhGjWOPOlM18CO-inime4SiqK5dE487cEZQcFYC2B30hSVV8kMZwsaUWApnaPhUGcag5Zfgx8qqqbGnoxbJsCKzLhh-lqBP-V5Kq71T-mrxe4gzYn1GCWN41GoaKMgNALZpYflx_XyXYNZJtpfcMga3dAkIYLBRQ_EmvW7uSsQ3PGxU6jbuY5aAMwKwBledUWBKg9seoCMpx_66S0BI0gjeA5kZIUQPJW2GY9E0vJc4oVKYBoGZC5oI3qUDTEgKKtm4N43Rkw_y4F3wlcAyx2bU2Y0rh26grz3ANQCdpUBNzFURoFsGXfGL9lsKPBC2cugKSmCvLsVwALKrVCm24A84pgAbFUMCMlFwRqWggrANQqC7UoIcM1AQftg7UgFc-xFj6seUEqIBVWVPeUAtcENpwyRYTjr3BVAShIhe9IAbFWJqqRLssGGmnjXDn-ijMAS8ah4C0rKNvBGqs9gHXOmVSizRUXdjKReq4gRCpsRupBBgXHX30jgpEKQIXFjiiYN61mCIyCQ1NJsGoFAbCu7x42SkkeNmK95IPGm7uBjYIU8DfOCICMQ1o3Fc2pgmXFsQJQtYwYTHaEEaFZVJCs3UHKSg6_UVY4_srQgisDorjFooQ3REhjn6ugm7AjQsOibOf4q12RAVhaQDmvG1pZWRRUs9xBmz2vB7Pj2a_HTceWaO9xXUTBzPx_8FQ_rT-tr86X8Odkm3zSbowXbaWN_CUALYhhypEjO9DQCFLSO1jjxvFXM-Ms8z1l5AQxTy3UY96b56Pg7-LoD4LWM14AmPp_GLKZMgad8xsi8I78syXLuFSFvJeK1JTl-j5raaUoM3fyXsI9wQURsCCNBHAF0u3_btNfLtYX6YfU3Kc_r68-rT-m5m57cal_Vufb9GJ9Yfptt778-eMqvfi8-vJx3d9dn69X-vpD8su6h_P58vr886f0wzpZra-2BmjyKf20Xq-26fmn6_XVcn15_XnoGbWll1frzfn_aBejswuLXiMoU2WaOv4qTTv-pN_6VgA_IwC_EiG4APCrcYNfpRI0VzquKa7uG-1ZvtZUapc4bez8J8RCJyHwa67d839arIG0rCAlgF8Z790s1NnWCFSnS1pppB3YB4RG4F2NdaO8pSrf216DpOOvFG4Vr_iO5rgy2oe1rxuPIHWj7qHO3KbteiRTeyKJhETjSdXRiJa1khTwkDNMp0_pGPXIPS0VZGSHFb0h8AZXbYcSLgpBpIS8hI0OWAWsSZ0RYXtLLmqs4G9EcFgRtlMdqSNEbcOYs4ZRGk0ApdKOecfaxQLA0mADK52-Ak83SMyoor-RQ9Dp0Rn1QUGMKZ8awzg8DKtJzcW9xgzXUBB1o3GZjOhJ1UktLwSkrKA5VlqxyluBmxvQ5bpah4gOlsADsNyxNh9HkhmaeQDemAEabMW5Nr2hQVYNgLXOtYDNog1UrRhCc33cQ01c1qkILO4ZrmkOcaVzAnly-M7kkqf7NFW4NOLPeUOeWc66Q52bwxxXFVR7QeSeV1pc7qM4Zvc3WGcIJa50jC81RyXdAbhK05-Wy9T4idXX5GqD0uXmPE22F7piAPAO5F3eA8N87nloltvMzOsyM8dfEl46_ho0WEgiAFZAJ0-8NEmwHYxm4HOjaE1_I8K2AAf5LnDv3P5fiLMwyD1gMl0_cfxEu1hzcaldikkOr62TjYdBAt-mXCpBcO2gSGeZlCmTyr9S8r1tG500O2jzhdE73UB3DFdyRlnu-Mkc-Y6feP5ApXdEpR9k4Skqr1pmQX3ArKiIkLqc-yGE9BTowsFPPDfS_8cDBehYTjhHYIKrLqz-Vra7jp-MeO4PGMcoWwSLcO6CvcE1lWbidyBqEalopvbCQRtteLiwFxro7AQewREecYYy0I236IhXQgQFgZbigEo4RiVGUYAK3-wYhO9vCsmdcOWg9-4dKnxd3R6mReNpJPBjb4ENBd9oZZjYSnFIxP4gHdOk7ECVTa36NWZbx08Cw9oDUvMJUlmQlWEAUoGp_J6i-7CwHrcjzEEbA-ogUG-0dDxduixDdwFwpsvoP7myVIW9N9DM4tFcrz4fVl9MV0dlXHhGiGNYM8lncyPMRR4X3kGc2hdNXa6LFjjPNQDMOLuveSuBrnRlY9zswjqm0R7DR57j6rD9YHqP9z5GvvkXnaw4KNFe-Zk1vkhyzkru-Mthut1_sUD8defdh26D1kdaEkVrAkyhbMa8ng96wb6LVZgRw70jhgduVP45houWvXJkeBGdYagpRe5AKjpF6pG8LCgrat24I8rcWIKMEP9esuK5jn4-Gsjyj8nKF_FpsqzCvmXiFp52KCP1DI6Im8eIAJP7awLS1OsvlCBkYp3n3caUrmU64zOG_nByRaR8fqq28FOzbVatdDH0AhD6z04XnCsnfI8zqpMs5sWu57omyk2l8ZfFL1U3B3BdAaql56D35m9z4zlo0zMyWcyRNqJgEEX4R0SRGvxTqoh4GW9O8raDxXjxMtnecFr0sjINFWc7nfr_P9CY0mxFvmTN-Okxk1D0d6sZchexzp_8Qc-il-mZJOqfJr3T1v72pWVYncQoMi56kNT8lKReFHnMvkWS50TKc6mHPMeH6I1EqEWsy2d_lFXEYyZEJEDzoHgugUrsftG22z8StpXuGBfEcuUxfvR-7UQO-3r51rXATJZc1Jo359OdHs24I2r6Ot33dHkQzgdeLaa88qPF3P0-XpnURRFBpKJsd2F26D43RGBWvJx32xpX1S9md-28bqojgz4Nvc_03x63fW-S2SP3L2P2sE93eC49ZvHQeFQBXZuHch9pJrAwOfXIMb81_qGFGzp-Migr8o745xd47N1WhElygZuJ1iQmOOhFJzEo47yasqaf_aCofASCyWxsSBrGFkRhWk0BXmIqXozSKED9fqDntWq3Ibx0Dcnq2kGbft3ZXrM_1lknGrIBhE5J4bu0-PcHza9bpX6fHkaBdprxwAD_aTU8BnOJ5aQOH0ZemGeBD4y0D3AXmOEdmepON-WtujzPlIsjZZlUi74XliFCj9iL5tOFPZbwkOApg05xeDLiUhBJxA0pLC-J_B4O94b4jxDbA1s-v3LQxvDU4mPCJ8OVsepY22U4iGlaSUZ5QfD4ucoIzPPC-S_kreFpaPyENySiKDpS_rBA2XGyc6nEliid7LzHknTRXZquV94FesT7j7AyZHkLHYX9kU3Pv5Os30_1_ODYdkydKR7GMoufJu6hY7GknXA4P4qwk8romc2iUe60OEXXM1F7XVOVSEnqrLr_QKqmj9tXLeuezZp4cEkbUlGmZWnO19lB7-2RuKRLRE8V7i2j_2lJ2qipQQt8mza3giqS9o9pT83uTqSmBamIIs9AsC7HupUXI3LNefW5VU2rNtS6uT-ExdH0MQoP-bTkTLa1ToH-6lTcrtUH9iUvyE_miVW38BdFq0P4dr1JXJg-b_e9gMQ4_l6tGbf_A1TlrQrJnSRY07MCvYRGmGuud0CsLk5Zv6J4x7hUNJdrtjNGfKygH8yhsy3BIt9rs-dMjvaAJkM7vJ8ZZYvQZwZ9xGx3ash4M0tQtrsi5bS5zyCS0yIclGyysyBaSW_IFSmXTF0eKdlN2Xl5bcZbcz7v0b3If_X04Ex8FI_OtWhdRVNdjfyyDN4CD20nkeSxxz9PItGz-Efv19tDcHrkgV8m9KPIN7snA9_9t8z330fLPv7w7S3x1490auUN_A1O8fcJq7Ru1RzmMXW2PbD8hdEj55xsr5ecmRdU_vLS5jFD7q6sm-xM2Z8vpkFnUi76uFwUbnRCJewxScdfPqNr49hA6qbCipwzqTBT1HBmiasqw_m3Fyrei8EdPOjTz5TeNPYjS8rIjrK3ZEO9_BPPj7QGoWETzY9OqdANp8XYcErKcGXODJ8Qwr_a9cO0a-2g-F8B_H0CeJAdb0mNX-sAWx8ZRmbdtehVHbQZ492j2-2AaVuPBiOfnzLyERmXWEiSbK-nYc8uE40f09jfVwyABpP-N9le90msfbg8UDTdHgpQHpXlmKKN0AH7UGbYEuyO5K16ha2uKQn90qPLSRT33PnRZpc_3RTyw7xwi1FdtLZvlCT26a4ui37wjuRwhNugYtMvc9wuGI7bBe6LqeCNPfzU6dOP2qE7SYa_mBpL4J0iY1Jc1w2tiLDuIicT5erL2vhxXXzlFHKkfseYHhQwnE-fJQbTijAo59Ein-xeWOoGgDfdO7RTSh-w5pXr3p7Wa6NGm0ex7J9km81YNOyrBZOKDM39hYs9kOdeal95HxWciRD4_oqUOnTssTg-DTVtGx24ex3yFeeVeXdR0Buic78e58MzexMCRpQGU0qDOEAZ6Bm29CwH46dOgDwk-_hQA-dVVye9dkx8QL-96OukKNTUj1xTeET9PPTmVr97SZuXYKwcjdiSN0pb4B7TFh3RFuSoAJqq70CulWKWmY899NhMfuEEFe_oOVtw9HIHcgnCIE0rmuWpVFgo78--aZHLtrvpAJqXLTzrz7qvR5g3OpTAzdEHJsZfnbigzLzSVgBFpAJ592zs1Hcp8p6-jYM2T3y4AAK4tW_Ojl-x7N-b7F7Eq7WFWoAVZzuQN22ac0FSVyeq70c9dkJatrdcFFGQMp7vic5uY1OcWdfSvV6SplhpnWoVSVMTTmNatiw3l-hRSOjwdgpKBZG8MuqG-q9kLA4ImRWPwIwQaTWR9hsc3QQwIQw4_uoJevrph-Wc-WrECAclj8wdIR13ywNBVCsYcB3_PTjAOVKBd8WZXyz8BX5Hzry5h4JFGM2Dd_uz3IsDFLhRFLrhPAzjApVFHoVBsSjmXhZn7-gZclHgBu7c873AD2Zu6fluiMN5GS9QWMydwCU1ptVMq_GMi907KmVLzuL5AvnvKpyRSpovyyCUd1EKCuX4iRyO3iAHLR2EOt-jRgdAkBOu3okzYyJZu5NO4FZUKjmspqiqyJn5NMzkwzT2PR70d35ZBdmv0pz-xs27VlRnT3ygpj8TM_WYhrfaVRr2_l8AAAD__4irsZU">