# Projects

User does not belong to any projects.

# User Details

User Since
Dec 6 2017, 1:24 PM (110 w, 2 d)

# Thu, Jan 16

Hi! Since this is the last commit in Instructions.cpp, you can maybe help?

Thu, Jan 16, 8:09 AM · Restricted Project

Thu, Jan 16, 6:01 AM · Restricted Project, Restricted Project

# Wed, Jan 15

Hi @tycho ! Sorry for not getting back earlier.
I implemented an alternate approach last year, which proved to be better (in terms of build times) than what I proposed in this demo patch. That is, using a thread pool instead of the process pool as implemented here. This makes compilation with /MP considerably faster, and allows for neat optimizations like file caching, re-using allocated memory pages, and possibly other things down the line. But before getting there, it requires somehow making cl::opt and the CommandLineParser thread-safe, thus revive this RFC thread. In essence, we want a mode where cl::opts have their data optionally stored in a stack context, so that we can safely call a CC1Command in each thread. I'll write a proposal to revive the RFC.

Wed, Jan 15, 7:29 PM · Restricted Project, Restricted Project
aganea added a comment to D72769: Replace CLANG_SPAWN_CC1 env var with a driver mode flag.

I guess CLANG_SPAWN_CC1 is/was mostly for debugging purposes. We have otherwise no use for that env var in production, other than for occasional testing.

I'm glad you're fixing this, this problem has came up in our profile traces as well.

Wed, Jan 15, 7:00 AM · Restricted Project

# Tue, Jan 14

Fix NetBSD bot after b4a99a061f517e60985667e39519f60186cbb469 ([Clang][Driver]…

Fixed NetBSD as suggested in rG88b8cb7215d4333ab990c99f21c7f92262ef02ef

Tue, Jan 14, 11:32 AM · Restricted Project, Restricted Project

# Mon, Jan 13

aganea added a comment to D71040: [ThinLTO/WPD] Fix index-based WPD for alias vtables.

Ping @evgeny777 @steven_wu!
Do you think you can take a look at this please? It'd be nice if it could land before the 10.0 branch. Thanks!

Mon, Jan 13, 10:16 AM · Restricted Project

Attention Apple maintainers: after this patch, do not forget to add -DCLANG_SPAWN_CC1=ON to your release scripts, to retain your previous crash reporting behavior (see discussion above). @dexonsmith @arphaman

Mon, Jan 13, 7:53 AM · Restricted Project, Restricted Project
[Clang][Driver] Re-use the calling process instead of creating a new process…
Mon, Jan 13, 7:44 AM · Restricted Project, Restricted Project

# Sun, Jan 12

aganea committed rGde797ccdd74f: [NFC] Fix compilation of CrashRecoveryContext.cpp on mingw (authored by zero9178).
[NFC] Fix compilation of CrashRecoveryContext.cpp on mingw
Sun, Jan 12, 11:47 AM · Restricted Project
Sun, Jan 12, 11:47 AM · Restricted Project, Restricted Project

Thanks for the fix Markus! I can commit on your behalf.

Sun, Jan 12, 9:08 AM · Restricted Project

# Sat, Jan 11

aganea added a comment to D72310: [mlir][VectorOps] Implement strided_slice conversion.

Hi,
This patch fails to build with MSVC (here building with latest Visual Studio 2019 16.4.2).
Could you possibly take a look please? Thanks!

```[801/3515] Building CXX object tools\mlir\lib\Conversion\VectorToLLVM\CMakeFiles\MLIRVectorToLLVM.dir\ConvertVectorToLLVM.cpp.obj
FAILED: tools/mlir/lib/Conversion/VectorToLLVM/CMakeFiles/MLIRVectorToLLVM.dir/ConvertVectorToLLVM.cpp.obj
C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1424~1.283\bin\HostX64\x64\cl.EXE  /nologo /TP -DGTEST_HAS_RTTI=0 -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools\mlir\lib\Conversion\VectorToLLVM -ID:\llvm-project\mlir\lib\Conversion\VectorToLLVM -Iinclude -ID:\llvm-project\llvm\include -ID:\llvm-project\mlir\include -Itools\mlir\include /DWIN32 /D_WINDOWS   /Zc:inline /Zi /Zc:strictStrings /Oi /Zc:rvalueCast /W4 -wd4141 -wd4146 -wd4244 -wd4267 -wd4291 -wd4345 -wd4351 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 -wd4722 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 -wd4577 -wd4091 -wd4592 -wd4319 -wd4709 -wd4324 -w14062 -we4238 /MT /O2 /Ob2   -UNDEBUG  /EHs-c- /GR- -std:c++14 /showIncludes /Fotools\mlir\lib\Conversion\VectorToLLVM\CMakeFiles\MLIRVectorToLLVM.dir\ConvertVectorToLLVM.cpp.obj /Fdtools\mlir\lib\Conversion\VectorToLLVM\CMakeFiles\MLIRVectorToLLVM.dir\MLIRVectorToLLVM.pdb /FS -c D:\llvm-project\mlir\lib\Conversion\VectorToLLVM\ConvertVectorToLLVM.cpp
D:\llvm-project\mlir\include\mlir/IR/Attributes.h(234): error C2440: '<function-style-cast>': cannot convert from 'mlir::ArrayAttr::iterator' to 'mlir::ArrayAttr::attr_value_iterator<mlir::IntegerAttr>'
D:\llvm-project\mlir\include\mlir/IR/Attributes.h(234): note: No constructor could take the source type, or constructor overload resolution was ambiguous
D:\llvm-project\mlir\lib\Conversion\VectorToLLVM\ConvertVectorToLLVM.cpp(117): note: see reference to function template instantiation 'llvm::iterator_range<mlir::ArrayAttr::attr_value_iterator<mlir::IntegerAttr>> mlir::ArrayAttr::getAsRange<mlir::IntegerAttr>(void)' being compiled
D:\llvm-project\mlir\include\mlir/IR/Attributes.h(235): error C2440: '<function-style-cast>': cannot convert from 'mlir::ArrayAttr::iterator' to 'mlir::ArrayAttr::attr_value_iterator<mlir::IntegerAttr>'
D:\llvm-project\mlir\include\mlir/IR/Attributes.h(235): note: No constructor could take the source type, or constructor overload resolution was ambiguous
D:\llvm-project\mlir\include\mlir/IR/Attributes.h(234): error C2672: 'llvm::make_range': no matching overloaded function found
D:\llvm-project\mlir\include\mlir/IR/Attributes.h(235): error C2780: 'llvm::iterator_range<IteratorT> llvm::make_range(T,T)': expects 2 arguments - 1 provided
D:\llvm-project\llvm\include\llvm/ADT/iterator_range.h(54): note: see declaration of 'llvm::make_range'
[874/2733] Building CXX object lib\Target\AArch64\CMakeFiles\LLVMAArch64CodeGen.dir\AArch64ISelDAGToDAG.cpp.obj
ninja: build stopped: subcommand failed.```
Sat, Jan 11, 12:50 PM · Restricted Project
[Support] Optionally call signal handlers when a function wrapped by the the…
Sat, Jan 11, 12:32 PM · Restricted Project, Restricted Project

# Fri, Jan 10

aganea committed rGde0a22471157: Remove umask tests (authored by aganea).
Fri, Jan 10, 6:09 PM · Restricted Project, Restricted Project
Fri, Jan 10, 5:51 PM · Restricted Project, Restricted Project
Fri, Jan 10, 5:51 PM · Restricted Project, Restricted Project

Thanks for taking the time @hans!

Fri, Jan 10, 8:15 AM · Restricted Project, Restricted Project

# Thu, Jan 9

aganea added inline comments to D71775: [ThreadPool] On Windows, extend usage to all CPU sockets and all NUMA groups.
Thu, Jan 9, 2:19 PM · Restricted Project, Restricted Project

Updated as suggested by @rnk.
I've also removed ThreadPoolStrategy::PinThreads because it wasn't conclusive. In the best case, pinning threads to a core / hyperthread, was similar in performance to that of using a full CPU socket affinity; in the worst case, it was degrading performance. The NT scheduler seems to be doing a pretty good job here, so we'll stick with it :-)

Thu, Jan 9, 2:19 PM · Restricted Project, Restricted Project
Thu, Jan 9, 2:09 PM · Restricted Project

Dropping this, I'll just deal with the existing process launching API.

Thu, Jan 9, 2:09 PM · Restricted Project
aganea added a comment to D71786: RFC: [Support] On Windows, add optional support for rpmalloc.

Am I the only one who is a little bit uncomfortable with including a replacement to the system allocator in LLVM? It seems to me that this is something that is clearly under the responsibility of the C library. Now this might still be worth doing given the large performance improvement, but yuck...

Thu, Jan 9, 9:27 AM · Restricted Project
aganea updated the diff for D71786: RFC: [Support] On Windows, add optional support for rpmalloc.
• Integrated changes as suggested by @russell.gallop - Could you please re-apply the patch on a clean git checkout see if this works?
• Fixed usage of LLVM_RPMALLOC_PAGESIZE -- it seems attribute((unused)) doesn't always prevent the symbol from being evicted by LLD -- maybe using TLS callbacks is an edge case. I extended the usage of /INCLUDE to Clang, like for MSVC.
• Fixed enabling large pages in rpmalloc, when they are provided in the 'config' struct. Previously, AdjustTokenPrivileges wasn't called in this case, and that is required for VirtualAlloc(MEM_LARGEPAGES, ...) to work.
Thu, Jan 9, 7:53 AM · Restricted Project
Thu, Jan 9, 5:59 AM · Restricted Project, Restricted Project
Thu, Jan 9, 5:59 AM · Restricted Project, Restricted Project

Changes as suggested by @hans.

Thu, Jan 9, 5:50 AM · Restricted Project, Restricted Project
Thu, Jan 9, 5:50 AM · Restricted Project, Restricted Project

# Wed, Jan 8

aganea added a comment to D71786: RFC: [Support] On Windows, add optional support for rpmalloc.

Is rpcmalloc using large pages by default if possible ? I have been toying with using large pages for some of the bump-pointer allocators in clang, namely the allocator of ASTContext and the allocator of Sema, and I am getting a ~5% improvement in parsing speed.

Not by default, but you can use set LLVM_RPMALLOC_PAGESIZE=2M or set LLVM_RPMALLOC_PAGESIZE=1G to enable large pages. However I realize that is broken (crashes), I'll investigate and get back.

Wed, Jan 8, 10:21 AM · Restricted Project
aganea added a comment to D71040: [ThinLTO/WPD] Fix index-based WPD for alias vtables.

I've used this patch since you've published it, on different contexts, things look good from my user perspective.

Wed, Jan 8, 10:21 AM · Restricted Project

# Tue, Jan 7

aganea updated the diff for D71786: RFC: [Support] On Windows, add optional support for rpmalloc.
• Changes as suggested by @rnk
• Fixed linking remarks-shlib as reported by @russell.gallop
• Reverted back to default rpmalloc settings (no more unlimited mode), ie. ENABLE_UNLIMITED_CACHE is 0 now.
• Support rpmalloc's ENABLE_STATISTICS - when enabled, allocation statistics will be printed on process exit.
Tue, Jan 7, 11:22 AM · Restricted Project
Fix issues reported by -Wrange-loop-analysis when building with latest Clang…

# Fri, Jan 3

aganea committed rGe19188af0a26: [mlir] Compilation fix: use LLVM_ATTRIBUTE_UNUSED following… (authored by aganea).
[mlir] Compilation fix: use LLVM_ATTRIBUTE_UNUSED following…
aganea added a comment to D71975: [Support] Support MF_HUGE_HINT on Linux and FreeBSD.

So I need to:

• Add a getHugePageSize similar to sys::Process::getPageSize which will do its best to find out about the huge page size(s) on the platform. This needs to be done for Windows too.
Fri, Jan 3, 1:20 PM · Restricted Project

# Thu, Jan 2

aganea added a comment to D71786: RFC: [Support] On Windows, add optional support for rpmalloc.

It fails creating a library

Thu, Jan 2, 8:53 PM · Restricted Project

# Wed, Jan 1

Hi! This patch broke the polly tests (the bot seems down). I wrote a fix here: 92b68c1937cd065a2fc44d18c1099de7da19b356 - it was trivial enough, but please let me know if you don't agree with the fix.

Wed, Jan 1, 2:39 PM · Restricted Project
[polly][Support] Un-break polly tests Previously, the polly unit tests were…
aganea committed rG6656e961c083: [mlir] Fix compilation warnings (authored by aganea).
[mlir] Fix compilation warnings
aganea committed rG316f6003ef2b: [mlir] Fix linking with LLD (authored by aganea).
aganea committed rG2b223bd1c7d5: [mlir] Fix warnings when compiling with Clang 9.0 (authored by aganea).
[mlir] Fix warnings when compiling with Clang 9.0

# Sat, Dec 21

Will it make sense to say "I don't want hyper-threads" ?

Not sure I remember correctly, but I believe one motivation behind avoiding "hyper-threads" and other virtual cores was that while they improve slightly the performance, they also increase the peak memory requirements: using heavyweight_hardware_concurrency() seemed like a good default tradeoff for most end-users.

Sat, Dec 21, 8:28 AM · Restricted Project, Restricted Project
aganea added a comment to D71786: RFC: [Support] On Windows, add optional support for rpmalloc.

Note in the bar charts how the 28-core system is faster, when compared to the 36-core. The 28-core does not suffer from the "processor group" issue fixed in D71775, the 28-cores/56-threads all fit in a single "processor group", so they are all available to the application; while the 36-cores/72-threads are projected to the application as two "processor groups", out of which only one is used by default. After D71775, the 36-core is evidently faster.

Sat, Dec 21, 8:01 AM · Restricted Project
aganea added a comment to D71786: RFC: [Support] On Windows, add optional support for rpmalloc.

Thank @amccarth, fixed!

Sat, Dec 21, 7:52 AM · Restricted Project
aganea updated the summary of D71786: RFC: [Support] On Windows, add optional support for rpmalloc.
Sat, Dec 21, 7:52 AM · Restricted Project

# Fri, Dec 20

aganea updated the summary of D71775: [ThreadPool] On Windows, extend usage to all CPU sockets and all NUMA groups.
Fri, Dec 20, 2:18 PM · Restricted Project, Restricted Project
Fri, Dec 20, 2:18 PM · Restricted Project
aganea updated the summary of D71775: [ThreadPool] On Windows, extend usage to all CPU sockets and all NUMA groups.
Fri, Dec 20, 9:29 AM · Restricted Project, Restricted Project
Fri, Dec 20, 9:20 AM · Restricted Project, Restricted Project

# Thu, Dec 19

aganea added inline comments to D71248: [clangd] Introduce paragraph, the first part of new rendering structs.
Thu, Dec 19, 11:53 AM · Restricted Project

# Dec 18 2019

I looked over this again, and also studied CrashRecoveryContext some more.

I don't really understand why this patch needs to modify the code for how the CRC is enabled and installed, etc.

I thought all we need for in-process-cc1 is to add the DumpStackAndCleanupOnFailure flag and behavior, nothing more.

Do you think this is possible, or am I missing something?

Dec 18 2019, 6:05 AM · Restricted Project, Restricted Project

# Dec 13 2019

aganea added a comment to D71040: [ThinLTO/WPD] Fix index-based WPD for alias vtables.

Strange this assertion probably means, that there are two summaries with external linkage in VTableVI. I tried reproducer out of curiosity, but it worked fine for me (no assertion on stage2 with ninja clang).

Dec 13 2019, 2:41 PM · Restricted Project

# Dec 12 2019

aganea added a comment to D71040: [ThinLTO/WPD] Fix index-based WPD for alias vtables.

I was able to successfully create an ThinLTO-built clang.exe with this patch. However when compiling with assertions on, I'm still getting this:

`Assertion failed: P.VTableVI.getSummaryList().size() == 1 || llvm::count_if( P.VTableVI.getSummaryList(), [&](const std::unique_ptr<GlobalValueSummary> &Summary) { return GlobalValue::isExternalLinkage(Summary->linkage()); }) <= 1, file D:\llvm-project\llvm\lib\Transforms\IPO\WholeProgramDevirt.cpp, line 852`

I simply built a 2-stage clang with the following cmd-line:

`stage 1: cmake -GNinja ../llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_ENABLE_PROJECTS="clang;lld;llvm" -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_C_COMPILER="C:/Program Files/LLVM/bin/clang-cl.exe" -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang-cl.exe" -DCMAKE_LINKER="C:/Program Files/LLVM/bin/lld-link.exe" -DLLVM_ENABLE_LLD=true -DLLVM_ENABLE_PDB=ON`
Dec 12 2019, 8:22 PM · Restricted Project

# Dec 11 2019

Yes this was added in rG18627115f4d2db5dc73207e0b5312f52536be7dd and rGe08b59f81d950bd5c8b8528fcb3ac4230c7b736c. It looks like it was only there to validate that specific refactoring.
Should I remove these two files, or simply commit the previous diff? (ie. -rw-rw----)

Dec 11 2019, 12:46 PM · Restricted Project, Restricted Project
aganea updated the summary of D70854: [Clang] In tests, do not always assume others permissions are set.
Dec 11 2019, 10:13 AM · Restricted Project, Restricted Project
aganea requested review of D70854: [Clang] In tests, do not always assume others permissions are set.
Dec 11 2019, 10:13 AM · Restricted Project, Restricted Project
aganea updated the diff for D70854: [Clang] In tests, do not always assume others permissions are set.

Ensure the access-rights commands (setfacl and chmod) won't fail the tests if the user doesn't have the appropriate rights to change permissions.

Dec 11 2019, 10:11 AM · Restricted Project, Restricted Project

# Dec 9 2019

Dec 9 2019, 7:57 AM · Restricted Project, Restricted Project

Added CLANG_SPAWN_CC1 cmake flag & environment variable to control whether we want a cc1 process or not. It is disabled by default. I left out the if (APPLE) part in cmake, as suggested by @rnk.

Dec 9 2019, 7:56 AM · Restricted Project, Restricted Project
Dec 9 2019, 7:38 AM · Restricted Project, Restricted Project

• Removed CrashRecoveryContext::HandleCrash() and #pragma clang handle_crash which wasn't covered by any test and most likely deprecated by #pragma clang crash
• Added refcounting to CrashRecoveryContext::Enable/Disable as well as lazy installation of the exception handlers in CrashRecoveryContext.
• Partially reverted rG4624e83ce7b124545b55e45ba13f2d900ed65654/llvm/lib/Support/Unix/Signals.inc to simplify checks for IntSigs (and to fix the issue mentioned here). @vsk

All tests pass on Windows/MSVC2019/Clang9/10 and Linux/Clang9/GCC9.1.

Dec 9 2019, 7:38 AM · Restricted Project, Restricted Project

# Dec 5 2019

I did this in driver.cpp:

```// Whether the cc1 tool should be called inside the current process, or forked
// to a new new process.
bool UseCC1ProcessFork = CLANG_FORK_CC1;```
Dec 5 2019, 11:30 AM · Restricted Project, Restricted Project
aganea added 1 auditor(s) for rG9a3f892d0182: [Signal] Allow one-shot SIGPIPE handler to be reached: rnk.

Thanks Vedant! Minor: there's still an unexpected side-effect when InitLLVM is called with InstallPipeSignalExitHandler=false or if sys::SetOneShotPipeSignalFunction is used to clear the default function. In that case, the test will fall through, and will go and call llvm::sys::RunSignalHandlers(). Whereas before it used raise the signal again, and return. What do you think?
I'm wondering if the code shouldn't read more like:

```if (llvm::is_contained(IntSigs, Sig) || Sig == SIGPIPE) {
if (auto OldInterruptFunction = InterruptFunction.exchange(nullptr))
return OldInterruptFunction();```

# Dec 4 2019

aganea added inline comments to D70277: [Signal] Allow llvm clients to opt into one-shot SIGPIPE handling.
Dec 4 2019, 3:26 PM · Restricted Project, Restricted Project
aganea added inline comments to D69452: [ThinLTO/WPD] Fix index-based WPD for available_externally vtables.
Dec 4 2019, 9:14 AM · Restricted Project

@aganea Please disable the new behavior for the Darwin platform. We rely on the fact that Clang -cc1 processes crash to report crashes using system's crash reporting infrastructure.

Dec 4 2019, 7:03 AM · Restricted Project, Restricted Project
aganea updated the diff for D70854: [Clang] In tests, do not always assume others permissions are set.

Just after I hit Submit last night, I found a better way, by disabling ACL for that folder.
Ping @tstellar @Meinersbur in case they have an opinion.
Please let me know which solution you think is better.

Dec 4 2019, 5:57 AM · Restricted Project, Restricted Project

# Dec 3 2019

aganea added inline comments to D70854: [Clang] In tests, do not always assume others permissions are set.
Dec 3 2019, 3:14 PM · Restricted Project, Restricted Project
aganea added inline comments to D70854: [Clang] In tests, do not always assume others permissions are set.
Dec 3 2019, 2:55 PM · Restricted Project, Restricted Project
[LLDB] Disable MSVC warning C4190: 'LLDBSwigPythonBreakpointCallbackFunction'…
Dec 3 2019, 6:59 AM · Restricted Project

# Dec 2 2019

Dec 2 2019, 3:25 PM · Restricted Project, Restricted Project

You're right indeed Russell, my bad, this gain is not as important as I initially claimed -- however there's a gain.

Dec 2 2019, 3:21 PM · Restricted Project, Restricted Project

# Nov 29 2019

aganea updated subscribers of D67463: [MS] Warn when shadowing template parameters under -fms-compatibility.
Nov 29 2019, 2:33 PM · Restricted Project, Restricted Project

You probably already know this, but the behavior between MSVC & Clang is different as to the value of the constant (testcase for PR43265).
See: https://godbolt.org/z/y4uvgp
Clang gives 0, while MSVC gives 5. This incompatibility is a potential source of failure, one of our tests broke because of that.

Nov 29 2019, 2:33 PM · Restricted Project, Restricted Project
On Windows, fix fuse-ld.c test when lld is provided explictly in -DCMAKE_LINKER
[CIndex] Fix annotate-deep-statements test when using a Debug build
Nov 29 2019, 7:53 AM · Restricted Project
Nov 29 2019, 6:38 AM · Restricted Project, Restricted Project
aganea retitled D70854: [Clang] In tests, do not always assume others permissions are set from [Clang] Do not always assume others permissions are set to [Clang] In tests, do not always assume others permissions are set.
Nov 29 2019, 6:38 AM · Restricted Project, Restricted Project

Thanks for analyzing this!

Nov 29 2019, 6:03 AM · Restricted Project, Restricted Project

# Nov 28 2019

aganea committed rG1abd4c94d757: [Clang] Bypass distro detection on non-Linux hosts (authored by aganea).
[Clang] Bypass distro detection on non-Linux hosts
Nov 28 2019, 2:08 PM · Restricted Project
aganea committed rGbdad3ec75ab3: [LLDB] On Windows, force error message formatting to English (authored by aganea).
[LLDB] On Windows, force error message formatting to English
Nov 28 2019, 11:24 AM · Restricted Project
[LLDB] Fix wrong argument in CommandObjectThreadStepWithTypeAndScope
Nov 28 2019, 11:01 AM · Restricted Project
aganea updated the diff for D70830: [LLDB] Disable MSVC warning C4190.
Nov 28 2019, 11:01 AM · Restricted Project
Nov 28 2019, 9:28 AM · Restricted Project

# Nov 26 2019

Do I understand correctly that the main point is to get a stack trace when CrashRecoveryContext::RunSafely() fails, instead of just returning an error?

Nov 26 2019, 10:21 AM · Restricted Project, Restricted Project

It looks like the git apply didn't work, but the script continued so this was a duff experiment, please ignore. I'll try to fix this and run it again.

Nov 26 2019, 9:35 AM · Restricted Project, Restricted Project

# Nov 25 2019

Thanks for the feedback Russell!

Nov 25 2019, 8:55 AM · Restricted Project, Restricted Project
Nov 25 2019, 8:55 AM · Restricted Project, Restricted Project

# Nov 21 2019

Nov 21 2019, 2:03 PM · Restricted Project, Restricted Project