Cross Compile Linux For ARM Using LLVM Clang On Arch Linux
DOWNLOAD ->>> https://urluss.com/2t2Blk
The LLVMLinux team made quite some progress in enabling LLVM/clang to build the Linux kernel. There has also been a talk at the Collaboration Summit 2015 in Santa Rosa (slides). So I thought, give it a try and compile a kernel for my ARM based board of choice. The upstream kernel.org Linux kernel is not yet ready to be built using LLVM/clang, some patches are still required. Therefor I used the kernel from the LLVMLinux git server.
To compile the kernel, clang does not use its internal assembler but uses the GNU assembler (by using the -no-integrated-as option). In this case the build system picked your hosts assembler (x86_64) instead of the one provided by the cross compiler toolchain. The simplest way to work around this is creating a symlink to clang in the cross compiler toolchains directory:
This is actually not related to the LLVM/clang build itself. It happened to me when using the default cross compiler toolchain from my Ångström distribution build. This toolchain uses the gold linker by default, which does not work with the Linux kernel, the standard BFD linker is required. You can either append the Linker explicitly or symlink the correct assembler. arm-linux-gnueabihf-ld.gold
I found that clang is very different to gcc in respect to cross compiling, in GCC world you should have separate binary for everything, like PLATFORM_make or PLATFORM_ld (i*86-pc-cygwin i*86-*-linux-gnu etc. )
For those interested in CPUs to tune for, you can use --print-supported-cpus (added here). If your clang binary can compile for more than one architecture, you have to pass --target as well to select the proper architecture; for instance, to list the ARM CPUs available on the Android cross compiler, you could use --target=aarch64-unknown-linux-gui.
This document will guide you in choosing the right Clang optionsfor cross-compiling your code to a different architecture. It assumes youalready know how to compile the code in question for the host architecture,and that you know how to choose additional include and library paths.
On the other hand, Clang/LLVM is natively a cross-compiler, meaning thatone set of programs can compile to all targets by setting the -targetoption. That makes it a lot easier for programmers wishing to compile todifferent platforms and architectures, and for compiler developers thatonly have to maintain one build system, and for OS distributions, thatneed only one set of main packages.
The unofficial repository archlinuxcn has rust-nightly and Rust std library for i686, ARM, ARMv7, Windows 32 and 64 so you can just install the one you want then enjoy cross-compiling. However, you have to find an ARM toolchain by yourself. For Windows 32bit targets, you will need to get a libgcc_s_dw2-1.dll (provided by mingw-w64-gcc) to build and run.
The package name shall not be prefixed with the word cross- (it was previously proposed, but was not adopted in official packages, probably due to additional length of names), and shall consist of the package name, prefixed by GNU triplet without vendor field or with "unknown" in vendor field; example: arm-linux-gnueabihf-gcc. If shorter naming convention exists (e.g. mips-gcc), it may be used, but this is not recommended.
This weird thing allows easier cross-compiling. Sometimes, project Makefiles do not use CC & co. variables and instead use gcc directly. If you just want to try to cross-compile such project, editing the Makefile could be a very lengthy operation. However, changing the $PATH to use "our" executables first is a very quick solution. You would then run PATH=/usr/arch/bin/:$PATH make instead of make.
Once you have a GCC toolchain, configure your build of LLVM to use the newtoolchain for your host compiler and C++ standard library. Because the newversion of libstdc++ is not on the system library search path, you need to passextra linker flags so that it can be found at link time (-L) and at runtime(-rpath). If you are using CMake, this invocation should produce workingbinaries:
In this section, Cross Compiling will be done for the ARM arm64 architecutre, not for the host system. To compile the ARM arm64 architecture, you need to add two command line parameters: ARCH=arm64 and CROSS_COMPILE=aarch64-linux-gnu-. The rest of the kernel compilation process is the same as the host system.
To verify your current setup, run %LINUX_MULTIARCH_ROOT%x86_64-unknown-linux-gnu\bin\clang++ -v from the Command Prompt, which should display "clang version X.X.X ..." (see below):
The next step is to compile the same source for ARM. We simply do this by using a different compiler (arm-linux-gnueabi-gcc instead of gcc for 32 bit ARM or gcc-aarch64-linux-gnu for 64 bit ARM or aarch64).
After downloading and extracting the source code, we need to run the configure-script for libpcap first. Only this time, we need to set our compiler to the musl-compiler for our cross compilation by setting CC to: aarch64-linux-musl-gcc:
The aarch64 machine will need those dependencies. Either you could install them through the package manager (if there is any over there) or cross compile these separately. The versions do not need to be an exact match but too far away will probably give you troubles.
$(CROSS_COMPILE) is the prefix used to invoke the (32-bit) cross-compilertoolchain. The default value is arm-linux-gnueabihf-. This is the variableyou want to change in case you want to use ccache to speed you recompilations:
If the build includes a mix of 32-bit and 64-bit code, for instance if you setCFG_ARM64_core=y to build a 64-bit secure kernel, then two differenttoolchains are used, that are controlled by $(CROSS_COMPILE32) and$(CROSS_COMPILE64). The default value of $(CROSS_COMPILE32) is the valueof CROSS_COMPILE, which defaults to arm-linux-gnueabihf- as mentionedabove. The default value of $(CROSS_COMPILE64) is aarch64-linux-gnu-.Examples:
The good thing about clang is that clang is inherently a cross-compiler. It lowers C/C++ source code into LLVM IR, which is platform independent. And LLVM then lower the IR further into platform-dependent machine code. One less tool to install, one less tool to maintain.
We need to tell cmake that we are cross-compiling with clang by specifying a cmake toolchian file on the commandline.The toolchain contains the information about target platform, the compiler to use and where to find libraries.
LLVM-MinGW is a toolchain built with Clang, LLD, libc++, targetingi686, x86_64, arm and aarch64 (ARM64), with releases both for runningas a cross compiler from Linux and for running on Windows. It supportsAddress Sanitizer, Undefined Behaviour Sanitizer, and generating debuginfo in PDB format.
Downloads are archive files (.zip or .7z). No installation is required,just extract the archive and start using the programs in mingw32\bin or mingw64\bin.This allows for a relocatable compiler suite and allows having multiple versions on the same system.
In this article, I will show you how to cross compile C and C++ programs on a x86-64 machine for Raspberry Pi using Clang 9. The advantage of cross compiling on a x86-64 system for armhf is that, usually one has a beefy laptop or desktop computer that can speed up, by an order of magnitude or more, the compilation of C and C++ programs.
You need to use a cross-compiler unless you are developing on your own operating system. The compiler must know the correct target platform (CPU, operating system), otherwise you will run into trouble. If you use the compiler that comes with your system, then the compiler won't know it is compiling something else entirely. Some tutorials suggest using your system compiler and passing a lot of problematic options to the compiler. This will certainly give you a lot of problems in the future and the solution is build a cross-compiler. If you have already attempted to make an operating system without using a cross-compiler, please read the article Why do I need a Cross Compiler?.
The newest GCC is recommended as it is the latest and greatest release. For instance, you may run into trouble if you use GCC 4.6.3 to build a GCC 4.8.0 cross-compiler. If you are not using the latest major GCC release for your system compiler, we recommend that you build the newest GCC as your system compiler.
You may be able to use an older major GCC release to build a cross-compiler of a newer major GCC release. For instance, GCC 4.7.3 may be able to build a GCC 4.8.0 cross-compiler. However, if you want to use the latest and greatest GCC version for your cross-compiler, we recommend that you bootstrap the newest GCC as your system compiler first. Individuals using OS X 10.7 or earlier might want to invest in either building a system GCC (that outputs native Mach-O), or upgrading the local LLVM/Clang installation. Users with 10.8 and above should install the Command Line Tools from Apple's developer website and use Clang to cross-compile GCC.
Your distribution may ship its own patched GCC and Binutils that is customized to work on your particular Linux distribution. You should be able to build a working cross-compiler using the above source code, but you might not be able to build a new system compiler for your current Linux distribution. In that case, try a newer GCC release or get the patched source code.
The "Windows Subsystem for Linux (Beta)", released with the Windows 10 Anniversary update is also an option for using a cross compiler. (Tested 08/08/2016 with GCC 6.1.0 and Binutils 2.27) This cross-compiler works reasonably fast, although being in beta state, it may not be ideal permanent development platform.
The prefix will configure the build process so that all the files of your cross-compiler environment end up in $HOME/opt/cross. You can change that prefix to whatever you like (e.g., /opt/cross or $HOME/cross would be options). If you have administrator access and wish to make the cross-compiler toolchain available to all users, you can install it into the /usr/local prefix - or perhaps a /usr/local/cross prefix if you are willing to change the system configuration such that this directory is in the search paths for all users. Technically, you could even install directly to /usr, so that your cross-compiler would reside alongside your system compiler, but that is not recommended for several reasons (like risking to overwrite your system compiler if you get TARGET wrong, or getting into conflict with your system's package management). 2b1af7f3a8
https://sway.office.com/Ptr3UYh4z9PAyBKS
https://sway.office.com/kLMQT4gBsUDCelMv
https://sway.office.com/9s46eL6mlxzT28v1
https://sway.office.com/QT3RtH2Bz9KndUCw
https://sway.office.com/cxzW8XbzYTQMoRTp
https://sway.office.com/FotjDagIAXr22cg7
https://sway.office.com/oQPKgyZtnoYhQDY9
https://sway.office.com/lhjGpyW7J3j47uyG
https://sway.office.com/8CV9G0PFnnKCKjnQ
https://sway.office.com/hZAX61S61vgHwICW
https://sway.office.com/Jw0e5OS5p5KGww9J
https://sway.office.com/YK4lEVV869zVlZaJ
https://sway.office.com/x5KRLMDVaQNSKEeQ
https://sway.office.com/pS546Yd51hPjCpZC
https://sway.office.com/7w0UNmmzPV8hw7Rn
https://sway.office.com/cdjj2T7L6Lz0c7Yp
https://sway.office.com/HAYABt7O42Yx4Pcw
https://sway.office.com/Ziq2kKVoaqZQJjO9
https://sway.office.com/sGqq3hQHs2wF5FCD
https://sway.office.com/scsUnlD4GaCUd0hS
https://sway.office.com/25t42VozPdRG2t3S
https://sway.office.com/Hbk9Lf7MqrOSkz5r
https://sway.office.com/hJjc1YpUPMtimmAs
https://sway.office.com/kVWiEdI7CkMqzxnf
https://sway.office.com/9ZwhjSPQr5fJJzdD
https://sway.office.com/DdNe9ESFDZBx0ULo
https://sway.office.com/xJ0zU1agRsP5Jm2P
https://sway.office.com/OSVzTiOpPPcGov8a
https://sway.office.com/NZiAnF8gVT8Ey8gv
https://sway.office.com/JCNIH6pkCrkPVVYa
https://sway.office.com/1tNjxFGkdfCK75Vx
https://sway.office.com/LBiW6ud0ocBOJC0Q
https://sway.office.com/JLmFKGrrgIUCCjoC
https://sway.office.com/2lmPbd6akGo8pe7n
https://sway.office.com/6aEigHF5t3yHdnLC
https://sway.office.com/3CBtR35qE04lmcpd
https://sway.office.com/kPEVL9bANjgA7jJW
https://sway.office.com/JiJ6Yv5nSMCqweJL
https://sway.office.com/myLI34Lg06vTGM3N
https://sway.office.com/TjJqKELid6P15nJC
https://sway.office.com/lct096MUs3y8wHMH
https://sway.office.com/A2kAQgxV15AiPIf9
https://sway.office.com/Z9OtNFkiHrrHUcNO
https://sway.office.com/rjtjG4clzG88TlFB
https://sway.office.com/NXiECQgeO9xGEXr3
https://sway.office.com/J4uItbGOmv0ppdlG
https://sway.office.com/1vOzbAn5HFImpoGX
https://sway.office.com/iZXUQrZehC420xu4
https://sway.office.com/BKC604TrNHc8B34M
https://sway.office.com/FFAZluOyQ06Ayq6X
https://sway.office.com/jtbhSLumhygW8LrB
https://sway.office.com/9106nFSXmPz0WDgo
https://sway.office.com/Ke5IbgTCUaRmx0IN
https://sway.office.com/KZnLcfM4S0kWeyOe
https://sway.office.com/7HVzZR0B1Ziv8AuG
https://sway.office.com/P8sNEp2wWfMKs0OC
https://sway.office.com/z02UEpriHDbPb3tE
https://sway.office.com/3uCHh0LGy5UmQeBw
https://sway.office.com/AnIQfZt3YFlgxMbh
https://sway.office.com/tWCUsDqIR88anmey
https://sway.office.com/BVQXodxoLeNMfGYO
https://sway.office.com/UU3Hq26VGJezBRFf
https://sway.office.com/nDA6100xUM2WKCve
https://sway.office.com/PwNWGDv4TCD6J13W
https://sway.office.com/PxhDRD8dvDdTZPUS
https://sway.office.com/C9gQa1YlMYvsKx1O
https://sway.office.com/pPGIlN3AjSRPiIoh
https://sway.office.com/xxS779tbpGDaJDk1
https://sway.office.com/XECKzB8fyrsKEHA3
https://sway.office.com/4TPIHxd6mBghT9mA
https://sway.office.com/DDplXjverkzkX89c
https://sway.office.com/EK1k10GhSDHZUpTJ
https://sway.office.com/oGznVEjzDLpVhvC2
https://sway.office.com/POW5HNH4iu0vAXwu
https://sway.office.com/5v9rKSozOYl9igWF
https://sway.office.com/RwaDI9gT7k7Z6NVh
https://sway.office.com/utcTfCRQZoowDEpG
https://sway.office.com/bcEbac4yMRI2Pz6U
https://sway.office.com/oEgSLXJ4W5vyCsPB
https://sway.office.com/AAdjLCMxVHsc7J38
https://sway.office.com/4HUSyaZwffELz4vD
https://sway.office.com/OKo2Nb1YAexeiJJN
https://sway.office.com/oXLECZR6vA0AAlXc
https://sway.office.com/dtjc595gxCAKncIS
https://sway.office.com/3CaB9mUitaiwduwo
https://sway.office.com/XzKcOt4tPrHF3ICs
https://sway.office.com/GAGrZNJX898NDhLy
https://sway.office.com/kVDNZBdWAMRXwSIQ
https://sway.office.com/MLXQTIOHpG6ZNBji
https://sway.office.com/DB1QRDp838yI7R0j
https://sway.office.com/XIm6378D9gFpQeUR
https://sway.office.com/Sr5OUU4HcDwN7U7O
https://sway.office.com/BaM5ZYUPTtkIY3Ks
https://sway.office.com/wCW9msIYMMibIPjR
https://sway.office.com/Bh9NPdcRQRIDUr6O
https://sway.office.com/OXS5canpki8xJDk8
https://sway.office.com/tyzoZgVftOem83zQ
https://sway.office.com/ZCuwwLkLN0PZkKvZ
https://sway.office.com/UhAW879yJtAr0XmU
https://sway.office.com/O4ZP7VuFGsp1ptGd
https://sway.office.com/cChB2zv69KdAcyID
https://sway.office.com/fvqFG9LfBk30EYPH
https://sway.office.com/FsK8asrbckjGlCd6
https://sway.office.com/DH0VXoEeQ6D73HvW
https://sway.office.com/otKEGj4Fp2fcYX8x
https://sway.office.com/Ux5zD8SphcqmrA72
https://sway.office.com/CJw4iPoH89lMjow9
https://sway.office.com/dkAEypbl2rCWI5ba
https://sway.office.com/MEX1eBSSsh0nJV1i
https://sway.office.com/FAJhb4CUhj8zJcqX
https://sway.office.com/6dbYN9pgDeaCjfPw
https://sway.office.com/CgHNGIdlucZp8hff
https://sway.office.com/UKhG1rM3dshXkTBH
https://sway.office.com/AzQmrvqAS9CSJfQS
https://sway.office.com/odSkGzw1uM7wjiYR
https://sway.office.com/QoCeR9JNwLUbZlE7
https://sway.office.com/mB7wZiVkf2lopgPE
https://sway.office.com/HUjyhLFfViRVOQII
https://sway.office.com/nO0FgWyCuCsa2SrK
https://sway.office.com/fGxABcIjWpECs3Zi
https://sway.office.com/37kgSlVgjSfxaau1
https://sway.office.com/mm1qgH9WdKJZvkaQ
https://sway.office.com/CxCMinJhX4lWG2wI
https://sway.office.com/OzbL1brN6AS4bOCk
https://sway.office.com/bet9llcMrAvGkEqT
https://sway.office.com/kNccExWMio0Lsc3O
https://sway.office.com/1vBWl1cJ3nV3XSkM
https://sway.office.com/IoKMby9xVjq1wPXT
https://sway.office.com/kyjms1hsxHiBjm1S
https://sway.office.com/H60bRpQjm3eUWPhD
https://sway.office.com/q35JBOmcxFMjUwt0
https://sway.office.com/uDrHvzJ9amCKMBb2
https://sway.office.com/emRB3DEHB849DsOB
https://sway.office.com/Rxjs3DqCUyVxDO6r
https://sway.office.com/Cl15Kj8JMu3V3vNG
https://sway.office.com/seh9IbfNdASfEICd
https://sway.office.com/6alvj8HB7FLaurMr
https://sway.office.com/0H2hCHBlu5XxoXxp
https://sway.office.com/ViEDMeWh3Qi761wO
https://sway.office.com/FTZhk1V8ZEiTTBti
https://sway.office.com/lqswhsIMuVx9LAcq
https://sway.office.com/SE9r5p1WGpbfAQq6
https://sway.office.com/IPlrxl3plBFgcjLE
https://sway.office.com/XJlaqvWWaAkTeGNF
https://sway.office.com/DP7ils6rsf5TWom2
https://sway.office.com/2dUBuJGiAg4DN88W
https://sway.office.com/HzqTNuvItFFgBksP
https://sway.office.com/Tq1hFD8aj8NmPToB
https://sway.office.com/xvsrYFZgOSOxI5hh
https://sway.office.com/Z3vPJH3XUGoMuoFc
https://sway.office.com/kox5XG8NTTfhxSBt
https://sway.office.com/3WH7BOcXmswdOgUu
https://sway.office.com/P0zMec8kGDyTRcZ4
https://sway.office.com/ckGIwWJIJSTMFfIF
https://sway.office.com/wqTsPDDd5WCt65nO
https://sway.office.com/CQaV04Nve3qBsW2k
https://sway.office.com/ddCNm5ceeO8qxOxw
https://sway.office.com/hlkb2qrgX3RYLjZG
https://sway.office.com/DQvigEcp2P8v554p
https://sway.office.com/uYteBF2fY6A9tdei
https://sway.office.com/Ik0AWp01Z6YETomg
https://sway.office.com/SUeLmoZRSUOy0O4u
https://sway.office.com/fnAS8KtpsjzC9Ixy
https://sway.office.com/sxm33xj0P0rBxINA
https://sway.office.com/KprWaAIsHyrqGBoi
https://sway.office.com/hjvkT8sgCpKq1s8b
https://sway.office.com/fCFKJGV0fsVyBkq6
https://sway.office.com/eVLwNtOSBLCO5yMA
https://sway.office.com/yyzY62nTG5JqwAUe
https://sway.office.com/xq6ODIVcNdELJRMS
https://sway.office.com/ycLqP6AV1NonjWAg
https://sway.office.com/tewXo60dcgaCwoXF
https://sway.office.com/zILCFDJXDDSIVxmm
https://sway.office.com/YUlNpr8ARRxyYegW
https://sway.office.com/ZSo39oz0V5PH0RBZ
https://sway.office.com/W8LABOr13RqIuhoh
https://sway.office.com/LYEmg4S6tRF5UCMQ
https://sway.office.com/7qe0Zwjxtl6pjwov
https://sway.office.com/8QQxnHHkIK0JiXFd
https://sway.office.com/fX0AT4kR2x8Pnn7Y
https://sway.office.com/CHgPMrRBztHFbimp
https://sway.office.com/9SHchQvCYmp19Ibl
https://sway.office.com/x1Jvn1ggUSso4BpT
https://sway.office.com/q8FTEvJhOxCEAnE2
https://sway.office.com/XChPQPOprU4HMOUU
https://sway.office.com/B9JGtXxCyKBCH9kM
https://sway.office.com/dlgkImJRmahBE7RH
https://sway.office.com/pnrJVJZnxW6Fxxzi
https://sway.office.com/EkEkSe9mKLoVlpv4
https://sway.office.com/jH7JeoUfctRAYgnw
https://sway.office.com/WMN6CuJAtBXwTIbW
https://sway.office.com/30flyhB0EAtyPA7P
https://sway.office.com/lBqSmao1WDX1YpRQ
https://sway.office.com/XM6yabVazfw98MNL
https://sway.office.com/MmF6u8z1pCW53yWI
https://sway.office.com/mG5LmPIwDJEj07iO
https://sway.office.com/nfTDQapBLkJRE2T5
https://sway.office.com/I1WfQdug1zZB3hDE
https://sway.office.com/D336KGOxD4lcU4T3
https://sway.office.com/qFLFWFRZiz4o1hP0
https://sway.office.com/SC6HZjB9ECFYEsBV
https://sway.office.com/y1elCBgr1TynHrrT
https://sway.office.com/CTMFwP4LcYGk7mDW
https://sway.office.com/RTZr8CCkX3lICnWj
https://sway.office.com/eITxyYPIOyMVXraF
https://sway.office.com/PDQmo06MNHigq7Ls
https://sway.office.com/XRssqmUQbkcMNCOw
https://sway.office.com/JtfNrjIOx6sF0Y3t
https://sway.office.com/6BNPVyIPrazuM9DP
https://sway.office.com/QKi0k8O2nBBGpyyL
https://sway.office.com/LcLn28tSiWi5shMM
https://sway.office.com/5ufxeXfct96k8Ek0
https://sway.office.com/wuB6h5GIO1rNScmT
https://sway.office.com/2HSIrTOXTVDrk36s
https://sway.office.com/UQZabi0pjczLStsz
https://sway.office.com/Sa6GrOPF2TaEAwrv
https://sway.office.com/WSkJbR2VRljemxcD
https://sway.office.com/axxOL5q11ifVBXeK
https://sway.office.com/3AA9f990hEkmRgvo
https://sway.office.com/zvuwlz64CQmLg48J
https://sway.office.com/7lcJcEALgZeGXsvN
https://sway.office.com/F7GXwthgXmWZBJSL
https://sway.office.com/5lBfkRwmEZFLJltO
https://sway.office.com/HFCgCegfIZ4klcGY
https://sway.office.com/BxbBQiB6Z6O5bgSo
https://sway.office.com/DWRu3gjrZp3Bfch9
https://sway.office.com/DaHhnzHNr6ipUZYs
https://sway.office.com/FLEFyubYZCDD6DE2
https://sway.office.com/f2RGiyPFEZYMHQQr
https://sway.office.com/FwFjI4nAx2PhWWHh
https://sway.office.com/VS5qjP0ilEfUCFZH
https://sway.office.com/JOEqlp84BQrhIZdz
https://sway.office.com/BtKull95DS5n0vtV
https://sway.office.com/OhnXBEgTixHTUZFv
https://sway.office.com/SzrqEEpaMhFlrDCq
https://sway.office.com/IrhOwsrIk8XnfmFH
https://sway.office.com/R51EZ190fZcH8gym
https://sway.office.com/gLI8LazqIB0ditIF
https://sway.office.com/xdtCFTTtufs4N07X
https://sway.office.com/uVKhRtJcNkUi52Ka
https://sway.office.com/FnNUUAlyjNG7k7t9
https://sway.office.com/ZOeEuI3dyb9CZDjP
https://sway.office.com/gSC3aG3sabVpgiUX
https://sway.office.com/yQDzcBcww12HZWZ1
https://sway.office.com/PJUQlK03FVwhMBdU
https://sway.office.com/Zmvtn5lq018Ll3JQ
https://sway.office.com/U6IWllwzMIfZzbCN
https://sway.office.com/AwCVIOt6UCEikB17
https://sway.office.com/iaQQDmkiK3VHRUZz
https://sway.office.com/Ba8IhedYiNAZoLSH
https://sway.office.com/3xTFAjmmZIhldNrw
https://sway.office.com/SLRkeFcuyLKnLKaO
https://sway.office.com/0GqURSZLe3OF6iDL
https://sway.office.com/7EmSbNDFOvIwNv9X
https://sway.office.com/CQ13OlcpTjlmZDOg
https://sway.office.com/yHFgAV1iboO12sT5
https://sway.office.com/ekZPuBUbtX0DsEuV
https://sway.office.com/opMTmPqxJsvhPWwt
https://sway.office.com/IP9aYPkYYxg70daA
https://sway.office.com/cWGc44x27FKHzS8D
https://sway.office.com/fFtIQBmU6ZKBZwJe
https://sway.office.com/cBC5aBLt5uK3OIzs
https://sway.office.com/DZoJ3eL2G23BCjTZ
https://sway.office.com/WyNcl59Q1QzbDI7n
https://sway.office.com/gukC3tDOJbmNqz7I
https://sway.office.com/a4yyCEmB84bVJcoS
https://sway.office.com/5MLiJxIhR3U9gHu1
https://sway.office.com/Iqrn1PtFKPfPGWrd
https://sway.office.com/gmHdhbOjic82V8wi
https://sway.office.com/VrGuQtRBb6grBy78
https://sway.office.com/2de9i2Ch6yQrigLA
https://sway.office.com/yWWsgbOKsHOKuX8N
https://sway.office.com/MSgB6LCyQ471qApq
https://sway.office.com/v1H2Z78o5Y5gu1oS
https://sway.office.com/pZ8MOPP8mtBfgvde
https://sway.office.com/u1UD09VqD6r3i3Aq
https://sway.office.com/Jfd4yWBFfKM0F24b
https://sway.office.com/fyD8OxwWYftjwhGA
https://sway.office.com/4ORHSBdadaX9esPG