Commit Graph

1206 Commits

Author SHA1 Message Date
Lioncash 7635b9c6c1 Database: Remove unused includes
Quite a few includes aren't directly used anywhere within the header
itself. We can remove these to avoid unintentionally propagating them
into other source files.
2019-08-19 23:14:27 -04:00
Lioncash 263c0697bc Database: Use nullptr instead of NULL where applicable 2019-08-19 23:09:41 -04:00
Lioncash 66125c2b3b Database: Convert typedefs into using aliases 2019-08-19 23:08:35 -04:00
Lioncash 93ec114e0c Database: Use [[maybe_unused]] instead of (void)
Same behavior, but without the need to duplicate the variable name.
2019-08-19 23:06:57 -04:00
Lioncash 19f49e071d driver: Use nullptr instead of NULL where applicable
Same thing, but more typesafe, given all NULL is, is a literal 0.
2019-08-19 22:52:35 -04:00
Lioncash 789650d4c0 driver/ToolBase: Convert typedef into using alias
Same thing, but a little nicer to read.
2019-08-19 22:51:07 -04:00
Lioncash f746b30b03 driver: Make tool constructors explicit
Enforces being explicit when constructing instances of these types.
2019-08-19 22:49:27 -04:00
Lioncash 11364cbd53 driver/ToolBase: Make operator bool() explicit
Prevents error-prone conversions to bool.
2019-08-19 22:35:32 -04:00
Lioncash c390f3d489 driver: Add missing override specifiers where applicable
Adds missing override specifiers to enforce correct virtual member
function signatures.
2019-08-19 22:34:15 -04:00
Lioncash d3ac48715f driver/main: Use separate variables for error checking in main()
Avoids reusing the same variable for two different areas of behavior and
uses separately named variables. This can help debugging if the first
condition isn't true, but the tool run condition is true, as it provides
an error count to compare against.
2019-08-19 21:57:25 -04:00
Lioncash 7647fa3ca6 driver/main: Factor out argument handling to its own function
Factors out the ToolPassInfo construction to its own function keep the
code isolated from everything else. Also simplifies the assignment in
main().

We can also migrate the global cwdbuf into this function to narrow its
scope down.
2019-08-19 21:50:02 -04:00
Lioncash d76d776a0e driver/main: Factor out tool construction code to its own function
Isolates the tool construction code and also makes the assignment within
main more straightforward. While we're at it, we can also make use of
std::make_unique within the relocated function.
2019-08-19 21:38:23 -04:00
Lioncash fd61ba6cc7 driver/main: Factor out project finding code to its own function
Keeps the logic contained within its own function and makes the
assignment more straightforward within main().
2019-08-19 21:18:05 -04:00
Phillip Stephens 1fb18dbf26 Update boo 2019-08-18 18:49:27 -07:00
Phillip Stephens 269ca8a7ec Update boo 2019-08-17 22:59:38 -07:00
Phillip Stephens e4d66745f5 Update submodules 2019-08-16 18:38:25 -07:00
Phillip Stephens c411f6e784 Update athena 2019-08-15 16:08:31 -07:00
Phillip Stephens 5ae5edfc46 Update athena 2019-08-15 08:41:04 -07:00
Phillip Stephens fb529992ca Update athena 2019-08-15 07:52:37 -07:00
Phillip Stephens 401ef19682 Merge pull request #5 from lioncash/fcc
hecl/FourCC: Remove undefined behavior and make rest of interface constexpr where applicable
2019-08-15 07:47:29 -07:00
Phillip Stephens 23551de349 Merge pull request #3 from lioncash/str
hecl/hecl: Minor changes and improvements to string utilities
2019-08-15 07:47:17 -07:00
Lioncash 477645f15d hecl/FourCC: Amend clang-format discrepancies
These were formatting discrepancies that existed before all of the
previous changes. We may as well resolve them so that others don't run
into them.
2019-08-15 06:49:20 -04:00
Lioncash 64ac2e423e hecl/FourCC: Make use of constexpr constructors where applicable 2019-08-15 06:48:38 -04:00
Lioncash 9e7661eb7a hecl/FourCC: Make rest of FourCC interface constexpr where applicable
Finally, we can make the rest of the interface constexpr, except for
toString().
2019-08-15 06:48:38 -04:00
Lioncash 2f9010bc9f hecl/FourCC: Eliminate magic values in DNAFourCC 2019-08-15 06:48:38 -04:00
Lioncash 1382bbf365 hecl/FourCC: Implement operator!= in terms of operator==
Deduplicates the amount of written code. Now code only needs to ever
change in operator== to automatically reflect across the two functions.
2019-08-15 06:48:38 -04:00
Lioncash 06c436b68d hecl/FourCC: Eliminate undefined behavior within FourCC interface
Type punning like this isn't actually well-defined behavior. Only
casting to char/unsigned char is well defined. This presents a problem
when using FourCC instances in constexpr contexts, given constexpr
contexts are forbidden from having undefined behavior in them.

Because of that, any attempt to use the const char* constructor within a
constexpr context would always result in a compilation error.
2019-08-15 06:48:31 -04:00
Lioncash 0f74cce2ca hecl/FourCC: Tidy up constructors
Marks constructors as noexcept and explicitly defaults the copy
constructor/assignment and move constructor/assignment.
2019-08-15 05:28:11 -04:00
Lioncash 9ec19d99cd hecl/hecl: Make hash constructors explicit where applicable 2019-08-15 03:06:56 -04:00
Lioncash 06548409f8 hecl/hecl: Make Hash constexpr 2019-08-15 03:00:42 -04:00
Lioncash 216b038a7d hecl/SystemChar: Unify StrLen implementations and make constexpr
We can utilize std::char_traits to generically handle the defined
character type. Since C++17, std::char_traits' length() function is
constexpr, so we can also make StrLen constexpr.
2019-08-15 02:28:31 -04:00
Lioncash 58e0c7eaa7 hecl/SystemChar: Cast to unsigned char before calling tolower/toupper
Performed for the same reasons outlined within
b32f16b519eafacb9de4852855486270f73d5e2e (avoiding undefined behavior).
2019-08-15 02:28:31 -04:00
Lioncash b63d848846 hecl/hecl: Amend lingering formatting inconsistencies
Amends formatting issues that were pre-existing to get them out of the
way.
2019-08-15 02:28:09 -04:00
Lioncash 485782e3a7 hecl/hecl: Convert typedefs to using aliases
Same thing, but slightly nicer to read.
2019-08-15 02:26:12 -04:00
Lioncash eb872cdf88 hecl/hecl: Assign ResourceLock's good member in the initializer list
Same behavior, but more idiomatic. While we're at it, we can make said
constructor and the conversion operator explicit to make the class a
little less error-prone.
2019-08-15 02:26:12 -04:00
Lioncash 92b87676c2 hecl/hecl: Make Entry take SystemString by value and move it
This allows callers to move into the constructor and subsequently move
into the member variable, avoiding copies altogether.
2019-08-15 02:26:12 -04:00
Lioncash dae3e6123f hecl/hecl: Make string conv operator+ instances friend functions
Makes both operators symmetrical to one another.
2019-08-15 02:26:12 -04:00
Lioncash c7aae83a75 hecl/hecl: Slightly improve resource usage within string conv operator+ funcs
We already construct a std::string instance, so we can just append to
it instead of creating another temporary with std::string's operator+.
We also change this to append using the string view getter functions, as
this allows the appending process to do less work. When a pointer is
passed in, a strlen call would need to be performed in order to
determine the total characters to append. However, we already know the
size (via the string view).
2019-08-15 02:26:12 -04:00
Lioncash c513a4b61f hecl/hecl: Make use of std::char_traits with StrNCmp
Same behavior, but allows removing the use of ifdefs, unifying the code
paths.
2019-08-15 02:26:12 -04:00
Lioncash ef6b41ea15 hecl/hecl: Amend string functions operating on string views to use interface functions
We don't really need to call out to the C functions to perform the
comparison behavior when the views already have a comparison function
as part of their interface.
2019-08-15 02:26:03 -04:00
Lioncash e0b5a4e2f7 hecl/hecl: Cast to unsigned char before calling std::isspace
std::string_view instances can contain character values that lie outside
the range of an unsigned char (negative values). If such a value is
passed into std::isspace, then the behavior of the function is
undefined. To avoid this, we add these casts.
2019-08-15 01:21:10 -04:00
Lioncash 91ff474c44 hecl/hecl: Handle bounded strings within CaseInsensitiveCompare
std::string_view instances aren't guaranteed to be null-terminated, so
we shouldn't be treating them as if they are in these functions, and
should instead use a bounded comparison based off their sizes.

This way we prevent an edge-case from ever becoming a problem and also
remove an ifdef, making the code uniform across all implementations.
2019-08-15 01:21:04 -04:00
Phillip Stephens 9dc1373201 Update boo 2019-08-14 06:52:24 -07:00
Phillip Stephens 78e88679a9 Update boo 2019-08-13 14:40:21 -07:00
Phillip Stephens a7c97b313c Update athena 2019-08-10 17:47:40 -07:00
Jack Andersen 7b05b41d34 Windows build fixes 2019-07-27 15:19:48 -10:00
Jack Andersen 08d15514a9 Update submodules 2019-07-20 22:42:03 -10:00
Jack Andersen 6988f86672 Massive fmtlib refactor 2019-07-19 18:22:58 -10:00
Jack Andersen b483acb8d3 Update submodules 2019-07-06 22:21:39 -10:00
Phillip Stephens efa7463a9a shaderc metal "error" fix 2019-07-01 01:26:42 -07:00
Phillip Stephens cfd365bebe Update boo 2019-06-30 21:03:54 -07:00
Phillip Stephens b251de5fd0 Update boo 2019-06-30 20:40:26 -07:00
Phillip Stephens 385f60cea3 Update boo 2019-06-30 20:15:40 -07:00
Jack Andersen 3256a05a99 Update boo 2019-06-20 20:02:34 -10:00
Jack Andersen 49eb971037 Update boo 2019-06-15 20:25:03 -10:00
Jack Andersen 4fa1a2f3b7 Fixes for ANCS cooking 2019-06-14 14:37:53 -10:00
Jack Andersen 31caec79dd Windows build fixes 2019-06-12 15:29:52 -10:00
Jack Andersen 387f8fa864 Blender Python API updates and better CMake dependency handling 2019-06-11 16:01:19 -10:00
Jack Andersen 7cc157c8b9 Support for per-stage shader hashing 2019-06-05 14:07:29 -10:00
Jack Andersen 82fc24ebe6 Update boo 2019-06-02 21:51:26 -10:00
Jack Andersen 4de7e2c0d6 Update boo 2019-05-31 23:27:44 -10:00
Jack Andersen c8c6936e0c Update boo 2019-05-31 17:40:30 -10:00
Jack Andersen 50ca5553ab Ensure ApplicationReps.hpp is generated in binary directory 2019-05-10 13:08:05 -10:00
Jack Andersen e1b01a0962 Update boo 2019-05-09 18:10:04 -10:00
Jack Andersen f596cbff83 Windows fixes for refactor 2019-05-09 18:07:48 -10:00
Jack Andersen 92e2c03a01 Fix skin binding unordered_map use 2019-05-08 13:38:00 -10:00
Jack Andersen 5c59acddf2 Blender 2.8 refactor 2019-05-07 17:47:34 -10:00
Jack Andersen 8b1b674a7d Ensure uninitialized data is not accessed in normal operation 2019-04-06 18:54:58 -10:00
Jack Andersen 2ab5c1436b Add True and False tests for bitwise enums 2019-04-02 18:29:04 -10:00
Jack Andersen 6816fea5b8 Update athena 2019-03-23 22:05:36 -10:00
Jack Andersen 4bb697cbdf Update boo 2019-03-09 23:14:04 -10:00
Jack Andersen 72b14a78a0 Correct indirect texture sampling swizzle 2019-03-07 17:33:50 -10:00
Jack Andersen 3759bf1b3d Avoid redundant pool destroy/allocs 2019-03-04 22:34:03 -10:00
Jack Andersen f262e59e68 Update boo 2019-03-03 13:03:33 -10:00
Jack Andersen 927be4e839 Proper blending modes for handling alpha test 2019-03-02 20:17:41 -10:00
Jack Andersen 1f04f7ae12 Add closefrom call to RunProcess 2019-02-26 19:13:19 -10:00
Jack Andersen 6626557cc4 TexGen bug fix with diffuse-only pass 2019-02-26 18:50:13 -10:00
Jack Andersen 8e8ecaf4aa Add fallback for diffuse expression 2019-02-24 22:10:34 -10:00
Jack Andersen a9254f6643 Ensure pipes aren't duplicated between blender instances 2019-02-24 00:14:44 -10:00
Jack Andersen 470182de06 Support for diffuse texture identification in IR 2019-02-23 21:14:43 -10:00
Jack Andersen d13bd28281 Update boo 2019-02-17 19:46:29 -10:00
Jack Andersen fc40190933 Implicit switch fallthrough refactor 2019-02-17 19:44:46 -10:00
Jack Andersen fdbfbf74fd Update athena 2019-02-15 15:31:21 -10:00
Jack Andersen f46cd474a6 Update boo 2019-02-11 21:19:02 -10:00
Jack Andersen 3cc65704d3 Disable contiguous surface splitting 2019-02-09 18:41:13 -10:00
Jack Andersen b6af26fa91 addColor term for standard shader model 2019-02-07 21:55:39 -10:00
Jack Andersen d88c9cc21b Debug mode for metal shaders 2019-02-03 15:38:14 -10:00
Jack Andersen 23a6d66a8c Add -j argument for hecl cooking 2019-02-03 14:01:12 -10:00
Jack Andersen f35285b076 Windows fixes 2019-01-28 22:25:51 -10:00
Phillip Stephens 7542cb9650 Minor fixes 2019-01-26 15:21:30 -08:00
Jack Andersen 8cbb1e650f Update boo 2019-01-21 18:23:42 -10:00
Jack Andersen 0178e8b7d6 PATH generation fixes for blender addon 2019-01-15 18:22:30 -10:00
Jack Andersen 6ff366f214 Update boo 2019-01-02 17:47:07 -10:00
Jack Andersen 96895c6150 Update submodules 2018-12-30 19:01:30 -10:00
Jack Andersen 1d95cf9221 Update lzokay 2018-12-26 11:39:49 -10:00
Jack Andersen 206e54210c Switch to lzokay library 2018-12-19 17:44:40 -10:00
Jack Andersen 838afd73ae Update athena 2018-12-16 17:52:24 -10:00
Jack Andersen 0af86ab3c2 Update submodules 2018-12-15 20:30:35 -10:00
Jack Andersen f695aa44d4 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/hecl 2018-12-12 21:39:03 -10:00
Jack Andersen d8da828d12 Update athena 2018-12-12 21:38:40 -10:00
Phillip Stephens f776f89bee Minor Console fixes 2018-12-09 21:12:10 -08:00
Jack Andersen 7a68a5350b Update athena 2018-12-07 20:44:26 -10:00
Jack Andersen 72193079ae New code style refactor 2018-12-07 19:18:42 -10:00
Jack Andersen 54c466276b SIMD refactor 2018-12-07 15:31:11 -10:00
Jack Andersen 1b073abb76 Change cheats CVar key 2018-11-23 22:08:44 -10:00
Phillip Stephens 6695e9596d Fix heclTest build 2018-11-09 15:31:51 -08:00
Jack Andersen e2ec1f69a3 Vertex shaders do rigging computations in object space 2018-11-07 14:53:00 -10:00
Jack Andersen e140b16af8 Update boo 2018-11-04 21:25:18 -10:00
Jack Andersen b2586432c7 Proper CRLF-handling for #define 2018-11-01 14:32:28 -10:00
Jack Andersen 344148e3b3 Add direct SDNA parser for blend files 2018-10-21 22:14:32 -10:00
Jack Andersen a230eeb3b1 Macros for shader extensions to determine blend factors 2018-10-20 18:13:25 -10:00
Jack Andersen 808e46a4ef Update boo 2018-10-18 16:19:17 -10:00
Jack Andersen 561bdac1c4 macOS build fixes 2018-10-18 14:57:16 -10:00
Jack Andersen 3698199403 Reflection sampler fixes 2018-10-18 13:55:42 -10:00
Jack Andersen 2e824b6bb5 Update boo 2018-10-16 17:26:21 -10:00
Jack Andersen ba6e920034 Generate ApplicationReps.hpp in binary directory 2018-10-16 15:01:33 -10:00
Jack Andersen 46a6fc67ed Update submodules 2018-10-15 21:26:26 -10:00
Jack Andersen d395f4a79e macOS build fixes 2018-10-15 17:15:05 -10:00
Jack Andersen 61a50aa57e Windows sync fixes for API changes 2018-10-14 10:09:15 -10:00
Jack Andersen aef455e1ab Attachment model support in blender addon 2018-10-11 10:48:13 -10:00
Jack Andersen d1f0450401 Convert to pragma once 2018-10-06 17:38:44 -10:00
Jack Andersen 0c3dece31d Update logvisor 2018-10-06 16:57:55 -10:00
Jack Andersen 0ee18025dd Huge shader infrastructure refactor 2018-10-06 16:53:57 -10:00
Jack Andersen 170ff23843 Ensure bintoc creates output directory 2018-09-08 11:34:37 -10:00
Jack Andersen 31e3ee4d34 Update boo 2018-09-03 14:15:16 -10:00
Jack Andersen 808f227b8d Update boo 2018-09-02 20:33:02 -10:00
Jack Andersen e16ef9709d Update submodules 2018-09-02 14:45:32 -10:00
Jack Andersen be1184f822 Update boo 2018-08-27 19:42:14 -10:00
Jack Andersen ddc415b668 Update submodules 2018-08-27 17:47:39 -10:00
Jack Andersen a53748aff8 Update submodules 2018-08-25 21:57:25 -10:00
Jack Andersen 7ab391ccee Update submodules 2018-08-24 22:38:48 -10:00
Jack Andersen 4da4b76434 Update submodules 2018-08-19 10:07:47 -10:00
Jack Andersen 9a0934482e Update boo 2018-08-18 14:28:34 -10:00
Jack Andersen 0d64508ad4 Update submodules 2018-08-18 12:16:53 -10:00
Jack Andersen e41680d467 Update athena 2018-08-09 20:19:07 -10:00
Jack Andersen 66fa8bbf9b Update submodules 2018-07-27 18:33:24 -10:00
Jack Andersen 5b5e8212c3 Update boo 2018-06-27 15:15:57 -10:00
Jack Andersen 3f45710fb2 Fix cook tool crash 2018-06-15 16:26:30 -10:00
Phillip Stephens 61f744e15d Defer values for unregistered CVars 2018-06-12 20:19:08 -07:00
Phillip Stephens 801214d9a8 Add support for string literals in Console::executeString, add implicit get/set for CVars 2018-06-12 19:03:29 -07:00
Jack Andersen eff677ca20 Update boo 2018-06-11 15:16:00 -10:00
Jack Andersen 11f6617c2f Update boo 2018-06-07 14:43:18 -10:00
Jack Andersen 03cb7cf237 Ensure lighting extension is passed vec3 2018-06-06 18:36:46 -10:00
Jack Andersen cded4dfe1d Update boo 2018-06-01 20:06:10 -10:00
Jack Andersen 56a0661d33 Update boo 2018-06-01 14:02:20 -10:00
Jack Andersen 4c974c5275 Update boo 2018-05-31 20:37:40 -10:00
Jack Andersen b50f0d8c10 Update boo 2018-05-28 17:41:13 -10:00
Jack Andersen 37ff06314e Windows fixes 2018-05-28 10:24:16 -10:00
Jack Andersen 13e6bf0274 Update boo 2018-05-27 11:35:49 -10:00
Jack Andersen 1689902af3 Update boo 2018-05-26 19:14:06 -10:00
Jack Andersen ae1c4ce890 Update boo 2018-05-26 18:20:27 -10:00
Jack Andersen c6b979f38e Update boo 2018-05-26 11:29:54 -10:00
Jack Andersen 5bfa33c21f Update boo 2018-05-25 17:42:03 -10:00
Jack Andersen c11557bcff Make SIGINT a bit cleaner for packaging 2018-05-25 17:07:04 -10:00
Jack Andersen ec58e5b35f Use glslang from upstream remote 2018-05-25 12:17:22 -10:00
Jack Andersen e77d62ab15 Update submodules 2018-05-25 12:02:52 -10:00
Jack Andersen 77f814192e Windows build fixes 2018-05-24 20:34:58 -10:00
Jack Andersen 85bab33ae3 Update boo 2018-05-21 21:48:44 -10:00
Jack Andersen 6cadafa764 Update boo 2018-05-20 12:38:06 -10:00
Phillip Stephens 6ac9a1de8a Update boo 2018-05-20 08:37:48 -07:00
Phillip Stephens c5bcd88851 Fix compiling of heclTest 2018-05-20 08:31:59 -07:00
Jack Andersen d0d330062f Resource tracing and memory leak fixes 2018-05-19 20:12:32 -10:00
Jack Andersen 33d9ce1638 Update boo 2018-05-17 18:16:18 -10:00
Jack Andersen 69c08292d2 Update boo 2018-05-14 16:55:50 -10:00
Jack Andersen 9c30a44a65 Fix see through collision material 2018-05-10 21:02:19 -10:00
Jack Andersen fef55d7fc0 Update boo 2018-05-09 21:25:09 -10:00
Jack Andersen b866ab0509 Add sanitizers to executable targets 2018-05-06 13:08:52 -10:00
Jack Andersen 7c69b0f465 Update boo 2018-05-06 12:45:44 -10:00
Jack Andersen f2d9f1328f Update boo 2018-05-05 15:32:36 -10:00
Jack Andersen 421e8d71eb Update boo 2018-05-05 15:29:57 -10:00
Jack Andersen 01994c82e3 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/hecl 2018-05-05 10:56:27 -10:00
Jack Andersen fda615f47e Cook meshes with primitive restart indices 2018-05-05 10:55:59 -10:00
Phillip Stephens 0aac384e60 Fix windows build 2018-05-01 17:41:51 -07:00
Phillip Stephens eae0dbd2bb Add ability to flag commands 2018-04-29 20:11:37 -07:00
Phillip Stephens 031c139e2d Merge commit '13b41ab' 2018-04-26 14:11:49 -07:00
Phillip Stephens 694bc0a888 Add ability to unregister command on the fly 2018-04-26 14:10:32 -07:00
Jack Andersen aa84d7c725 Add emissive cycles shaders 2018-04-14 20:04:08 -10:00
Jack Andersen 2c5a662fec Add adjacent area lightmap cooking 2018-04-08 14:08:33 -10:00
Jack Andersen 396790181a Minimized shader hash generation; more compatible MultiProgressPrinter 2018-04-07 10:52:35 -10:00
Jack Andersen 1eaa57bba2 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/hecl 2018-04-03 22:28:31 -10:00
Jack Andersen b54dedb22b Minor cook fixes 2018-04-03 22:28:13 -10:00
Jack Andersen e32b86f14e Update athena 2018-04-02 14:43:19 -10:00
Jack Andersen 94988eb9e5 GX shader cook fixes; Resource cook passes 2018-04-01 18:26:21 -10:00
Jack Andersen c9f61eb9da Fixes for GameCube targeting 2018-03-27 22:06:34 -10:00
Jack Andersen d1a66e15d4 Add parallel progress printing 2018-03-23 11:40:12 -10:00
Jack Andersen 6180ec82b3 Fix lightmap script 2018-03-06 17:25:20 -10:00
Jack Andersen 905386d5e2 Update athena 2018-03-03 18:24:42 -10:00
Phillip Stephens d40f9ffe30 Update athena 2018-02-27 17:43:34 -08:00
Jack Andersen d83f557f38 Update athena 2018-02-26 20:03:04 -10:00
Jack Andersen f2d6f643c9 PATH cooking bug fix 2018-02-26 00:38:50 -10:00
Jack Andersen 3acb9c9e3d Initial PATH cooking support 2018-02-24 22:23:00 -10:00
Jack Andersen 2f6d9d2509 Minor macro adjustment 2018-02-23 20:33:01 -10:00
Jack Andersen 06797cd9fc Add PATH .blend file type 2018-02-23 20:15:12 -10:00
Jack Andersen 3eedbd3c3b Template-based DNA refactor 2018-02-21 21:23:15 -10:00
Jack Andersen d5f2e4a349 Update boo 2018-02-06 15:38:03 -10:00
Jack Andersen 1685f03cf3 Update boo 2018-02-04 21:04:14 -10:00
Jack Andersen 7a60440d58 Add shader mode for constant alpha overwrite 2018-02-04 20:54:35 -10:00
Jack Andersen ae076c5a32 Update boo 2018-02-02 14:34:15 -10:00
Jack Andersen ca48078600 Update boo 2018-02-01 13:13:08 -10:00
Jack Andersen 85a9e156b3 Update boo 2018-01-29 21:49:38 -10:00