From 663bdcea036d64070a708e1f065c051bcf7c59d8 Mon Sep 17 00:00:00 2001 From: poojanagrawal Date: Tue, 2 Jun 2026 15:57:33 +0200 Subject: [PATCH 01/12] feat(Standard-Compositions): Imported standard metal fractions from MESA Imported standard metal fractions from MESA to build compositions from one of the standard schemes --- .../composition/io/StandardAbundancesBinary.h | 1461 +++++++++++++++++ .../composition/io/standard_compositions.h | 79 + .../lib/io/standard_compositions.cpp | 346 ++++ src/composition/meson.build | 12 +- tests/composition/meson.build | 2 + tests/composition/sandbox/meson.build | 1 + tests/composition/sandbox/sandbox.cpp | 48 + 7 files changed, 1947 insertions(+), 2 deletions(-) create mode 100644 src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h create mode 100644 src/composition/include/fourdst/composition/io/standard_compositions.h create mode 100644 src/composition/lib/io/standard_compositions.cpp create mode 100644 tests/composition/sandbox/meson.build create mode 100644 tests/composition/sandbox/sandbox.cpp diff --git a/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h b/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h new file mode 100644 index 0000000..a3d5844 --- /dev/null +++ b/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h @@ -0,0 +1,1461 @@ +#pragma once + +#include + +const unsigned char StandardAbundances[] = { + 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x20, 0x5b, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, + 0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x69, 0x73, 0x6f, 0x74, 0x6f, 0x70, + 0x69, 0x63, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5d, 0x0a, 0x43, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x20, 0x4f, 0x4e, 0x3a, 0x20, 0x32, 0x30, 0x32, 0x36, 0x2d, + 0x30, 0x35, 0x2d, 0x32, 0x32, 0x0a, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x53, 0x45, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x20, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x0a, 0x09, 0x20, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x20, 0x5b, 0x27, + 0x41, 0x47, 0x38, 0x39, 0x27, 0x2c, 0x20, 0x27, 0x47, 0x4e, 0x39, 0x33, 0x27, 0x2c, 0x20, 0x27, + 0x47, 0x53, 0x39, 0x38, 0x27, 0x2c, 0x20, 0x27, 0x4c, 0x30, 0x33, 0x27, 0x2c, 0x20, 0x27, 0x41, + 0x47, 0x53, 0x30, 0x35, 0x27, 0x2c, 0x20, 0x27, 0x41, 0x47, 0x53, 0x53, 0x30, 0x39, 0x27, 0x2c, + 0x20, 0x27, 0x41, 0x30, 0x39, 0x5f, 0x50, 0x72, 0x7a, 0x79, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x27, + 0x2c, 0x20, 0x27, 0x4d, 0x42, 0x32, 0x32, 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, + 0x65, 0x72, 0x69, 0x63, 0x27, 0x2c, 0x20, 0x27, 0x41, 0x41, 0x47, 0x32, 0x31, 0x5f, 0x70, 0x68, + 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72, 0x69, 0x63, 0x27, 0x2c, 0x20, 0x27, 0x4c, 0x30, + 0x39, 0x27, 0x5d, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x41, 0x47, 0x38, 0x39, + 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x61, 0x6e, 0x64, + 0x65, 0x72, 0x73, 0x20, 0x26, 0x20, 0x67, 0x72, 0x65, 0x76, 0x65, 0x73, 0x73, 0x65, 0x20, 0x31, + 0x39, 0x38, 0x39, 0x2c, 0x20, 0x70, 0x61, 0x70, 0x65, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x41, 0x44, 0x53, 0x20, + 0x0a, 0x09, 0x09, 0x20, 0x48, 0x45, 0x5f, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, + 0x3a, 0x20, 0x6e, 0x61, 0x6e, 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, + 0x45, 0x53, 0x5f, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, + 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, + 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, + 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, + 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, + 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, + 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x5d, + 0x0a, 0x09, 0x09, 0x20, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x3a, 0x20, + 0x5b, 0x2d, 0x36, 0x2e, 0x32, 0x37, 0x38, 0x34, 0x39, 0x30, 0x39, 0x38, 0x30, 0x38, 0x32, 0x36, + 0x31, 0x36, 0x35, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x30, 0x35, 0x37, 0x38, 0x32, 0x33, 0x39, 0x38, + 0x34, 0x34, 0x34, 0x37, 0x37, 0x30, 0x33, 0x2c, 0x20, 0x2d, 0x36, 0x2e, 0x35, 0x31, 0x35, 0x31, + 0x38, 0x38, 0x31, 0x31, 0x34, 0x39, 0x36, 0x34, 0x33, 0x36, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x37, + 0x39, 0x31, 0x34, 0x34, 0x35, 0x39, 0x39, 0x33, 0x35, 0x36, 0x37, 0x39, 0x34, 0x33, 0x33, 0x2c, + 0x20, 0x2d, 0x31, 0x2e, 0x32, 0x33, 0x33, 0x33, 0x39, 0x34, 0x31, 0x38, 0x38, 0x35, 0x33, 0x38, + 0x33, 0x34, 0x34, 0x34, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x32, 0x39, 0x35, 0x33, 0x37, 0x32, 0x39, + 0x38, 0x35, 0x37, 0x33, 0x31, 0x31, 0x37, 0x32, 0x31, 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x36, 0x37, + 0x30, 0x38, 0x31, 0x33, 0x30, 0x32, 0x39, 0x30, 0x33, 0x31, 0x32, 0x35, 0x33, 0x2c, 0x20, 0x2d, + 0x31, 0x2e, 0x30, 0x33, 0x34, 0x35, 0x38, 0x35, 0x36, 0x36, 0x38, 0x37, 0x34, 0x35, 0x34, 0x38, + 0x31, 0x35, 0x2c, 0x20, 0x2d, 0x32, 0x2e, 0x37, 0x35, 0x34, 0x37, 0x36, 0x30, 0x34, 0x32, 0x39, + 0x34, 0x34, 0x33, 0x39, 0x36, 0x39, 0x34, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x34, 0x35, 0x38, 0x38, + 0x33, 0x39, 0x35, 0x33, 0x35, 0x35, 0x39, 0x31, 0x36, 0x39, 0x39, 0x34, 0x2c, 0x20, 0x2d, 0x32, + 0x2e, 0x35, 0x31, 0x34, 0x36, 0x31, 0x31, 0x36, 0x38, 0x35, 0x36, 0x38, 0x34, 0x36, 0x39, 0x35, + 0x36, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x34, 0x32, 0x36, 0x36, 0x38, 0x36, 0x39, 0x35, 0x32, 0x31, + 0x32, 0x31, 0x32, 0x36, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x33, 0x36, 0x36, 0x39, 0x39, 0x39, 0x35, + 0x38, 0x31, 0x34, 0x33, 0x31, 0x32, 0x37, 0x30, 0x35, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x36, 0x35, + 0x37, 0x35, 0x36, 0x39, 0x34, 0x39, 0x31, 0x37, 0x30, 0x37, 0x34, 0x37, 0x36, 0x36, 0x2c, 0x20, + 0x2d, 0x33, 0x2e, 0x37, 0x34, 0x38, 0x36, 0x37, 0x39, 0x30, 0x37, 0x34, 0x37, 0x36, 0x32, 0x36, + 0x30, 0x36, 0x34, 0x2c, 0x20, 0x2d, 0x32, 0x2e, 0x33, 0x31, 0x30, 0x39, 0x36, 0x39, 0x38, 0x32, + 0x33, 0x32, 0x31, 0x30, 0x36, 0x31, 0x39, 0x37, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x37, 0x33, 0x37, + 0x37, 0x38, 0x36, 0x36, 0x31, 0x37, 0x38, 0x36, 0x34, 0x37, 0x33, 0x32, 0x2c, 0x20, 0x2d, 0x32, + 0x2e, 0x34, 0x38, 0x31, 0x36, 0x35, 0x37, 0x30, 0x30, 0x30, 0x38, 0x31, 0x39, 0x33, 0x33, 0x35, + 0x2c, 0x20, 0x2d, 0x35, 0x2e, 0x36, 0x38, 0x38, 0x31, 0x35, 0x35, 0x36, 0x32, 0x34, 0x34, 0x37, + 0x38, 0x36, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x38, 0x31, 0x34, 0x37, 0x34, 0x37, 0x38, + 0x35, 0x38, 0x37, 0x37, 0x39, 0x35, 0x39, 0x33, 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x37, 0x30, 0x31, + 0x33, 0x37, 0x38, 0x37, 0x32, 0x36, 0x32, 0x34, 0x39, 0x38, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x30, + 0x32, 0x39, 0x30, 0x35, 0x36, 0x30, 0x39, 0x38, 0x31, 0x30, 0x30, 0x30, 0x37, 0x35, 0x2c, 0x20, + 0x2d, 0x33, 0x2e, 0x31, 0x35, 0x35, 0x30, 0x33, 0x34, 0x36, 0x32, 0x34, 0x31, 0x36, 0x38, 0x38, + 0x35, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x31, 0x2e, 0x31, 0x37, 0x33, 0x38, 0x39, 0x31, 0x38, 0x38, + 0x31, 0x34, 0x31, 0x37, 0x38, 0x32, 0x37, 0x34, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x37, 0x35, 0x32, + 0x33, 0x36, 0x31, 0x31, 0x31, 0x33, 0x37, 0x39, 0x34, 0x32, 0x33, 0x31, 0x2c, 0x20, 0x2d, 0x32, + 0x2e, 0x34, 0x31, 0x32, 0x38, 0x34, 0x34, 0x30, 0x30, 0x33, 0x36, 0x31, 0x31, 0x37, 0x33, 0x39, + 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x33, 0x35, 0x34, 0x31, 0x35, 0x34, 0x37, 0x35, 0x36, 0x34, 0x31, + 0x35, 0x36, 0x38, 0x32, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x39, 0x35, 0x38, 0x38, 0x32, 0x37, 0x33, + 0x35, 0x34, 0x32, 0x36, 0x37, 0x36, 0x33, 0x37, 0x33, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, + 0x20, 0x41, 0x47, 0x38, 0x39, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x47, + 0x4e, 0x39, 0x33, 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, + 0x47, 0x72, 0x65, 0x76, 0x65, 0x73, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x4e, 0x6f, 0x65, + 0x6c, 0x73, 0x20, 0x31, 0x39, 0x39, 0x33, 0x20, 0x0a, 0x09, 0x09, 0x20, 0x48, 0x45, 0x5f, 0x41, + 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x3a, 0x20, 0x31, 0x30, 0x2e, 0x39, 0x39, 0x0a, + 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x4f, + 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x3a, 0x20, 0x54, 0x72, 0x75, 0x65, + 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, 0x2c, + 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, + 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, + 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, + 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, + 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x41, 0x73, + 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, + 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, + 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, + 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, 0x61, + 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, 0x2c, + 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, + 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, + 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, 0x41, + 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, + 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, + 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x33, 0x2e, 0x33, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x32, 0x2c, + 0x20, 0x32, 0x2e, 0x37, 0x39, 0x2c, 0x20, 0x38, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x37, 0x2e, 0x39, + 0x37, 0x2c, 0x20, 0x38, 0x2e, 0x38, 0x37, 0x2c, 0x20, 0x34, 0x2e, 0x34, 0x38, 0x2c, 0x20, 0x38, + 0x2e, 0x30, 0x38, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x33, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x38, 0x2c, + 0x20, 0x36, 0x2e, 0x34, 0x37, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x35, 0x2e, 0x34, + 0x35, 0x2c, 0x20, 0x37, 0x2e, 0x32, 0x2c, 0x20, 0x35, 0x2e, 0x32, 0x38, 0x2c, 0x20, 0x36, 0x2e, + 0x35, 0x32, 0x2c, 0x20, 0x35, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x36, 0x2c, 0x20, + 0x33, 0x2e, 0x31, 0x37, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x34, 0x2e, 0x30, 0x2c, + 0x20, 0x35, 0x2e, 0x36, 0x37, 0x2c, 0x20, 0x35, 0x2e, 0x33, 0x39, 0x2c, 0x20, 0x37, 0x2e, 0x35, + 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x36, 0x2e, 0x32, 0x35, 0x2c, 0x20, 0x34, 0x2e, + 0x32, 0x31, 0x2c, 0x20, 0x34, 0x2e, 0x36, 0x2c, 0x20, 0x33, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x33, + 0x2e, 0x34, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x37, 0x2c, 0x20, 0x33, 0x2e, 0x33, 0x38, 0x2c, + 0x20, 0x32, 0x2e, 0x36, 0x33, 0x2c, 0x20, 0x33, 0x2e, 0x32, 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x34, + 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x39, 0x37, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x32, + 0x2e, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x39, 0x32, 0x2c, 0x20, + 0x31, 0x2e, 0x38, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x39, + 0x2c, 0x20, 0x31, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x37, 0x2c, 0x20, 0x30, 0x2e, + 0x38, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x33, 0x2c, 0x20, + 0x32, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x33, + 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x31, 0x2e, + 0x31, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x2c, 0x20, + 0x31, 0x2e, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x31, 0x2c, + 0x20, 0x31, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x31, + 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x33, 0x2c, 0x20, 0x30, + 0x2e, 0x31, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x33, 0x2c, + 0x20, 0x30, 0x2e, 0x38, 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x30, 0x2e, + 0x36, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x35, 0x2c, 0x20, + 0x31, 0x2e, 0x33, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x37, + 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x33, 0x2c, 0x20, 0x32, 0x2e, + 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x39, 0x2c, 0x20, + 0x2d, 0x30, 0x2e, 0x35, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x47, 0x4e, 0x39, 0x33, + 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x47, 0x53, 0x39, 0x38, 0x0a, 0x09, + 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x47, 0x72, 0x65, 0x76, 0x65, + 0x73, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x75, 0x76, 0x61, 0x6c, 0x20, 0x31, + 0x39, 0x39, 0x38, 0x2c, 0x20, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x31, 0x20, 0x0a, 0x09, 0x09, + 0x20, 0x48, 0x45, 0x5f, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x3a, 0x20, 0x31, + 0x30, 0x2e, 0x39, 0x33, 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, + 0x53, 0x5f, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x3a, + 0x20, 0x54, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x3a, + 0x20, 0x5b, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, 0x4f, 0x2c, + 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, 0x53, 0x69, + 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, 0x61, 0x2c, + 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, 0x46, 0x65, + 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, 0x2c, + 0x47, 0x65, 0x2c, 0x41, 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x52, + 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, 0x6f, 0x2c, + 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, 0x2c, 0x49, + 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, 0x2c, + 0x43, 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, 0x2c, 0x4e, + 0x64, 0x2c, 0x53, 0x6d, 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, 0x44, 0x79, + 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x4c, 0x75, 0x2c, + 0x48, 0x66, 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, 0x49, 0x72, + 0x2c, 0x50, 0x74, 0x2c, 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x50, 0x62, 0x2c, + 0x42, 0x69, 0x2c, 0x54, 0x68, 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x42, 0x55, + 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x33, 0x2e, 0x33, 0x31, 0x2c, 0x20, + 0x31, 0x2e, 0x34, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x37, 0x39, 0x2c, 0x20, 0x38, 0x2e, 0x35, 0x32, + 0x2c, 0x20, 0x37, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x38, 0x2e, 0x38, 0x33, 0x2c, 0x20, 0x34, 0x2e, + 0x34, 0x38, 0x2c, 0x20, 0x38, 0x2e, 0x30, 0x38, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x32, 0x2c, 0x20, + 0x37, 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x36, 0x2e, 0x34, 0x39, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x36, + 0x2c, 0x20, 0x35, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x32, 0x2c, 0x20, 0x35, 0x2e, 0x32, + 0x38, 0x2c, 0x20, 0x36, 0x2e, 0x34, 0x2c, 0x20, 0x35, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x36, 0x2e, + 0x33, 0x35, 0x2c, 0x20, 0x33, 0x2e, 0x31, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x34, 0x2c, 0x20, 0x34, + 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x35, 0x2e, 0x36, 0x39, 0x2c, 0x20, 0x35, 0x2e, 0x35, 0x33, 0x2c, + 0x20, 0x37, 0x2e, 0x35, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x31, 0x2c, 0x20, 0x36, 0x2e, 0x32, 0x35, + 0x2c, 0x20, 0x34, 0x2e, 0x32, 0x39, 0x2c, 0x20, 0x34, 0x2e, 0x36, 0x37, 0x2c, 0x20, 0x33, 0x2e, + 0x31, 0x33, 0x2c, 0x20, 0x33, 0x2e, 0x36, 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x37, 0x2c, 0x20, + 0x33, 0x2e, 0x34, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x36, 0x33, 0x2c, 0x20, 0x33, 0x2e, 0x33, 0x31, + 0x2c, 0x20, 0x32, 0x2e, 0x34, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x32, 0x2e, + 0x32, 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x36, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x2c, 0x20, 0x31, + 0x2e, 0x39, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x38, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x2c, 0x20, + 0x31, 0x2e, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x36, 0x2c, + 0x20, 0x30, 0x2e, 0x38, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x30, + 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x32, + 0x2e, 0x31, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x32, 0x2c, + 0x20, 0x31, 0x2e, 0x32, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x38, + 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x38, 0x2c, 0x20, 0x30, 0x2e, + 0x35, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x35, 0x2c, 0x20, + 0x31, 0x2e, 0x31, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x37, + 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x36, 0x2c, 0x20, 0x30, 0x2e, + 0x31, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x33, 0x2c, + 0x20, 0x30, 0x2e, 0x36, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x33, + 0x39, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x39, 0x2c, 0x20, 0x30, + 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x33, 0x2c, + 0x20, 0x32, 0x2e, 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, + 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x47, + 0x53, 0x39, 0x38, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x4c, 0x30, 0x33, + 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x4c, 0x6f, 0x64, + 0x64, 0x65, 0x72, 0x73, 0x20, 0x32, 0x30, 0x30, 0x33, 0x2c, 0x20, 0x41, 0x70, 0x4a, 0x2c, 0x20, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x31, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x20, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x0a, 0x09, + 0x09, 0x20, 0x48, 0x45, 0x5f, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x3a, 0x20, + 0x31, 0x30, 0x2e, 0x38, 0x39, 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, + 0x45, 0x53, 0x5f, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, + 0x3a, 0x20, 0x54, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, + 0x3a, 0x20, 0x5b, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, 0x4f, + 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, 0x53, + 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, 0x61, + 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, 0x46, + 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, + 0x2c, 0x47, 0x65, 0x2c, 0x41, 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, + 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, 0x6f, + 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, 0x2c, + 0x49, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, + 0x2c, 0x43, 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, 0x2c, + 0x4e, 0x64, 0x2c, 0x53, 0x6d, 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, 0x44, + 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x4c, 0x75, + 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, 0x49, + 0x72, 0x2c, 0x50, 0x74, 0x2c, 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x50, 0x62, + 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x42, + 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x33, 0x2e, 0x32, 0x38, 0x2c, + 0x20, 0x31, 0x2e, 0x34, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x37, 0x38, 0x2c, 0x20, 0x38, 0x2e, 0x33, + 0x39, 0x2c, 0x20, 0x37, 0x2e, 0x38, 0x33, 0x2c, 0x20, 0x38, 0x2e, 0x36, 0x39, 0x2c, 0x20, 0x34, + 0x2e, 0x34, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x38, 0x37, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x2c, 0x20, + 0x37, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x36, 0x2e, 0x34, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x34, + 0x2c, 0x20, 0x35, 0x2e, 0x34, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x31, 0x39, 0x2c, 0x20, 0x35, 0x2e, + 0x32, 0x36, 0x2c, 0x20, 0x36, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x35, 0x2e, 0x31, 0x31, 0x2c, 0x20, + 0x36, 0x2e, 0x33, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x37, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x32, + 0x2c, 0x20, 0x34, 0x2e, 0x30, 0x2c, 0x20, 0x35, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x35, 0x2e, 0x35, + 0x2c, 0x20, 0x37, 0x2e, 0x34, 0x37, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x31, 0x2c, 0x20, 0x36, 0x2e, + 0x32, 0x32, 0x2c, 0x20, 0x34, 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x34, 0x2e, 0x36, 0x33, 0x2c, 0x20, + 0x33, 0x2e, 0x31, 0x2c, 0x20, 0x33, 0x2e, 0x36, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x32, 0x2c, + 0x20, 0x33, 0x2e, 0x33, 0x36, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x39, 0x2c, 0x20, 0x33, 0x2e, 0x32, + 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x36, 0x2c, 0x20, 0x32, 0x2e, 0x39, 0x31, 0x2c, 0x20, 0x32, + 0x2e, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x32, 0x2c, 0x20, 0x31, + 0x2e, 0x39, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x38, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x31, 0x2c, + 0x20, 0x31, 0x2e, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x32, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x34, + 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x30, + 0x36, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x34, 0x2c, 0x20, 0x32, + 0x2e, 0x32, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x38, 0x2c, 0x20, + 0x31, 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x38, + 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x2c, 0x20, 0x30, 0x2e, + 0x35, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x31, 0x2c, 0x20, + 0x31, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, + 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x2c, 0x20, 0x30, 0x2e, + 0x30, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x37, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x34, 0x2c, + 0x20, 0x30, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x33, + 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x37, 0x2c, 0x20, 0x30, + 0x2e, 0x38, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x31, 0x2c, + 0x20, 0x32, 0x2e, 0x30, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x30, + 0x39, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x34, 0x39, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, + 0x4c, 0x30, 0x33, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x41, 0x47, 0x53, + 0x30, 0x35, 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x41, + 0x73, 0x70, 0x6c, 0x75, 0x6e, 0x64, 0x2c, 0x20, 0x47, 0x72, 0x65, 0x76, 0x65, 0x73, 0x73, 0x65, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x75, 0x76, 0x61, 0x6c, 0x20, 0x32, 0x30, 0x30, 0x35, + 0x20, 0x0a, 0x09, 0x09, 0x20, 0x48, 0x45, 0x5f, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, + 0x45, 0x3a, 0x20, 0x6e, 0x61, 0x6e, 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, + 0x52, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, + 0x54, 0x3a, 0x20, 0x54, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, + 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, + 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, + 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, + 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, + 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, + 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x41, 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, + 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, + 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, + 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, + 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, + 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, + 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x4c, + 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, + 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x50, + 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, + 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x33, 0x2e, 0x32, 0x35, + 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x37, 0x2c, 0x20, 0x38, 0x2e, 0x33, + 0x39, 0x2c, 0x20, 0x37, 0x2e, 0x37, 0x38, 0x2c, 0x20, 0x38, 0x2e, 0x36, 0x36, 0x2c, 0x20, 0x34, + 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x38, 0x34, 0x2c, 0x20, 0x36, 0x2e, 0x31, 0x37, 0x2c, + 0x20, 0x37, 0x2e, 0x35, 0x33, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x37, 0x2c, 0x20, 0x37, 0x2e, 0x35, + 0x31, 0x2c, 0x20, 0x35, 0x2e, 0x33, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x31, 0x34, 0x2c, 0x20, 0x35, + 0x2e, 0x35, 0x2c, 0x20, 0x36, 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x38, 0x2c, 0x20, + 0x36, 0x2e, 0x33, 0x31, 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x35, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x2c, + 0x20, 0x34, 0x2e, 0x30, 0x2c, 0x20, 0x35, 0x2e, 0x36, 0x34, 0x2c, 0x20, 0x35, 0x2e, 0x33, 0x39, + 0x2c, 0x20, 0x37, 0x2e, 0x34, 0x35, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x36, 0x2e, + 0x32, 0x33, 0x2c, 0x20, 0x34, 0x2e, 0x32, 0x31, 0x2c, 0x20, 0x34, 0x2e, 0x36, 0x2c, 0x20, 0x32, + 0x2e, 0x38, 0x38, 0x2c, 0x20, 0x33, 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x39, 0x2c, + 0x20, 0x33, 0x2e, 0x33, 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x33, 0x2e, 0x32, + 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x36, 0x2c, 0x20, 0x32, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x32, 0x2e, + 0x32, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x39, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x32, 0x2c, 0x20, + 0x31, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x38, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x32, + 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x39, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x2c, 0x20, 0x31, 0x2e, + 0x37, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x2c, 0x20, 0x32, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, + 0x30, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x39, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x32, + 0x2e, 0x32, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x37, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x37, 0x2c, + 0x20, 0x31, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x37, + 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x31, 0x2c, 0x20, 0x30, + 0x2e, 0x35, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x38, 0x2c, + 0x20, 0x31, 0x2e, 0x31, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x39, + 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x2c, 0x20, 0x30, 0x2e, + 0x30, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x38, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x37, 0x2c, + 0x20, 0x31, 0x2e, 0x31, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x34, + 0x35, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x34, 0x2c, 0x20, 0x31, + 0x2e, 0x30, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x33, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x2c, 0x20, + 0x32, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x36, 0x2c, + 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x32, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x41, 0x47, + 0x53, 0x30, 0x35, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x41, 0x47, 0x53, + 0x53, 0x30, 0x39, 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, + 0x41, 0x73, 0x70, 0x6c, 0x75, 0x6e, 0x64, 0x2c, 0x20, 0x47, 0x72, 0x65, 0x76, 0x65, 0x73, 0x73, + 0x65, 0x2c, 0x20, 0x53, 0x61, 0x75, 0x76, 0x61, 0x6c, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x53, + 0x63, 0x6f, 0x74, 0x74, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x20, 0x41, 0x6e, 0x6e, 0x75, 0x2e, 0x20, 0x52, 0x65, 0x76, 0x2e, 0x20, + 0x41, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x2e, 0x20, 0x41, 0x73, 0x74, 0x72, 0x6f, 0x70, 0x68, 0x79, + 0x73, 0x2e, 0x20, 0x32, 0x30, 0x30, 0x39, 0x2e, 0x20, 0x34, 0x37, 0x3a, 0x34, 0x38, 0x31, 0x3f, + 0x35, 0x32, 0x32, 0x20, 0x0a, 0x09, 0x09, 0x20, 0x48, 0x45, 0x5f, 0x41, 0x42, 0x55, 0x4e, 0x44, + 0x41, 0x4e, 0x43, 0x45, 0x3a, 0x20, 0x6e, 0x61, 0x6e, 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, + 0x51, 0x55, 0x49, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, + 0x49, 0x47, 0x48, 0x54, 0x3a, 0x20, 0x54, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, + 0x4d, 0x42, 0x4f, 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, + 0x2c, 0x4e, 0x2c, 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, + 0x41, 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, + 0x4b, 0x2c, 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, + 0x4d, 0x6e, 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, + 0x6e, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x41, 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, + 0x2c, 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, + 0x62, 0x2c, 0x4d, 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, + 0x2c, 0x43, 0x64, 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, + 0x49, 0x2c, 0x58, 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, + 0x2c, 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, + 0x54, 0x62, 0x2c, 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, + 0x62, 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, + 0x4f, 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, + 0x6c, 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, + 0x09, 0x20, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x33, + 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x37, 0x2c, 0x20, + 0x38, 0x2e, 0x34, 0x33, 0x2c, 0x20, 0x37, 0x2e, 0x38, 0x33, 0x2c, 0x20, 0x38, 0x2e, 0x36, 0x39, + 0x2c, 0x20, 0x34, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x39, 0x33, 0x2c, 0x20, 0x36, 0x2e, + 0x32, 0x34, 0x2c, 0x20, 0x37, 0x2e, 0x36, 0x2c, 0x20, 0x36, 0x2e, 0x34, 0x35, 0x2c, 0x20, 0x37, + 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x35, 0x2e, 0x34, 0x31, 0x2c, 0x20, 0x37, 0x2e, 0x31, 0x32, 0x2c, + 0x20, 0x35, 0x2e, 0x35, 0x2c, 0x20, 0x36, 0x2e, 0x34, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x33, 0x2c, + 0x20, 0x36, 0x2e, 0x33, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x31, 0x35, 0x2c, 0x20, 0x34, 0x2e, 0x39, + 0x35, 0x2c, 0x20, 0x33, 0x2e, 0x39, 0x33, 0x2c, 0x20, 0x35, 0x2e, 0x36, 0x34, 0x2c, 0x20, 0x35, + 0x2e, 0x34, 0x33, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x39, 0x2c, 0x20, + 0x36, 0x2e, 0x32, 0x32, 0x2c, 0x20, 0x34, 0x2e, 0x31, 0x39, 0x2c, 0x20, 0x34, 0x2e, 0x35, 0x36, + 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x32, 0x2e, + 0x33, 0x2c, 0x20, 0x33, 0x2e, 0x33, 0x34, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x34, 0x2c, 0x20, 0x33, + 0x2e, 0x32, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x38, 0x37, 0x2c, + 0x20, 0x32, 0x2e, 0x32, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x34, + 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x38, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x30, + 0x2e, 0x39, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x2c, + 0x20, 0x31, 0x2e, 0x37, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x30, 0x34, + 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x2e, + 0x35, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x38, 0x2c, 0x20, + 0x32, 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x38, 0x2c, + 0x20, 0x30, 0x2e, 0x37, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, + 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x37, 0x2c, 0x20, 0x30, + 0x2e, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x38, 0x2c, 0x20, 0x30, + 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x34, 0x2c, 0x20, + 0x30, 0x2e, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x32, + 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x31, 0x2e, + 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x32, 0x2c, 0x20, 0x30, + 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x2c, 0x20, + 0x31, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x32, + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x34, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x41, + 0x47, 0x53, 0x53, 0x30, 0x39, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x41, + 0x30, 0x39, 0x5f, 0x50, 0x72, 0x7a, 0x79, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x0a, 0x09, 0x09, 0x20, + 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x45, 0x68, 0x73, 0x61, 0x6e, 0x20, 0x4d, 0x6f, 0x72, 0x61, 0x76, + 0x76, 0x65, 0x6a, 0x69, 0x2c, 0x20, 0x4f, 0x63, 0x74, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x32, 0x30, + 0x31, 0x33, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x73, 0x73, 0x20, 0x66, 0x72, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x20, 0x66, + 0x72, 0x6f, 0x6d, 0x20, 0x41, 0x73, 0x70, 0x6c, 0x75, 0x6e, 0x64, 0x20, 0x65, 0x74, 0x20, 0x61, + 0x6c, 0x2e, 0x20, 0x28, 0x32, 0x30, 0x30, 0x39, 0x29, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, + 0x2d, 0x73, 0x74, 0x61, 0x72, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x20, 0x6f, 0x66, 0x20, 0x4e, 0x69, 0x65, 0x76, 0x61, 0x20, 0x26, 0x20, 0x50, 0x72, 0x7a, + 0x79, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x20, 0x32, 0x30, 0x31, 0x32, 0x2c, 0x20, 0x41, 0x26, 0x41, + 0x2c, 0x20, 0x35, 0x33, 0x39, 0x2c, 0x20, 0x31, 0x34, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x50, + 0x72, 0x7a, 0x79, 0x62, 0x69, 0x6c, 0x6c, 0x61, 0x20, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x2e, 0x20, + 0x28, 0x32, 0x30, 0x31, 0x33, 0x29, 0x2c, 0x20, 0x45, 0x41, 0x53, 0x20, 0x70, 0x72, 0x6f, 0x63, + 0x65, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, + 0x3a, 0x20, 0x68, 0x65, 0x2c, 0x20, 0x63, 0x2c, 0x20, 0x6e, 0x2c, 0x20, 0x6f, 0x2c, 0x20, 0x6e, + 0x65, 0x2c, 0x20, 0x6d, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x69, 0x2c, 0x20, 0x73, + 0x2c, 0x20, 0x61, 0x72, 0x2c, 0x20, 0x66, 0x65, 0x20, 0x0a, 0x09, 0x09, 0x20, 0x48, 0x45, 0x5f, + 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x3a, 0x20, 0x31, 0x30, 0x2e, 0x39, 0x39, + 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x54, + 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x3a, 0x20, 0x54, 0x72, 0x75, + 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, + 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, + 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, + 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, + 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, + 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x41, + 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, + 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, + 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, + 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, + 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, + 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, + 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x54, + 0x61, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, + 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, + 0x68, 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, + 0x43, 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x33, 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, + 0x2c, 0x20, 0x32, 0x2e, 0x37, 0x2c, 0x20, 0x38, 0x2e, 0x33, 0x33, 0x2c, 0x20, 0x37, 0x2e, 0x37, + 0x39, 0x2c, 0x20, 0x38, 0x2e, 0x37, 0x36, 0x2c, 0x20, 0x34, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x38, + 0x2e, 0x30, 0x39, 0x2c, 0x20, 0x36, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x36, 0x2c, + 0x20, 0x36, 0x2e, 0x33, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x2c, 0x20, 0x35, 0x2e, 0x34, 0x31, 0x2c, + 0x20, 0x37, 0x2e, 0x31, 0x34, 0x2c, 0x20, 0x35, 0x2e, 0x35, 0x2c, 0x20, 0x36, 0x2e, 0x35, 0x2c, + 0x20, 0x35, 0x2e, 0x30, 0x33, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x31, + 0x35, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x35, 0x2c, 0x20, 0x33, 0x2e, 0x39, 0x33, 0x2c, 0x20, 0x35, + 0x2e, 0x36, 0x34, 0x2c, 0x20, 0x35, 0x2e, 0x34, 0x33, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x32, 0x2c, + 0x20, 0x34, 0x2e, 0x39, 0x39, 0x2c, 0x20, 0x36, 0x2e, 0x32, 0x32, 0x2c, 0x20, 0x34, 0x2e, 0x31, + 0x39, 0x2c, 0x20, 0x34, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x34, 0x2c, 0x20, 0x33, + 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x2c, 0x20, 0x33, 0x2e, 0x33, 0x34, 0x2c, 0x20, + 0x32, 0x2e, 0x35, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x32, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x32, + 0x2c, 0x20, 0x32, 0x2e, 0x38, 0x37, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x31, 0x2c, 0x20, 0x32, 0x2e, + 0x35, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x38, 0x38, 0x2c, 0x20, + 0x31, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x37, + 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x31, 0x2c, 0x20, 0x30, 0x2e, + 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x30, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x31, 0x2c, 0x20, 0x32, + 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x34, 0x2c, + 0x20, 0x31, 0x2e, 0x30, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x31, + 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x32, 0x2c, 0x20, 0x31, 0x2e, + 0x34, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x32, 0x2c, 0x20, + 0x31, 0x2e, 0x30, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x2c, 0x20, + 0x30, 0x2e, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x2c, + 0x20, 0x30, 0x2e, 0x38, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x35, + 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x30, + 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, 0x2c, 0x20, + 0x31, 0x2e, 0x36, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x37, + 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x36, + 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x34, 0x5d, 0x0a, + 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x41, 0x30, 0x39, 0x5f, 0x50, 0x72, 0x7a, 0x79, 0x62, 0x69, + 0x6c, 0x6c, 0x61, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x4d, 0x42, 0x32, + 0x32, 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72, 0x69, 0x63, 0x0a, 0x09, + 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x45, 0x6b, 0x61, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x61, 0x20, 0x4d, 0x61, 0x67, 0x67, 0x20, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x2e, + 0x20, 0x2c, 0x20, 0x41, 0x26, 0x41, 0x20, 0x36, 0x36, 0x31, 0x2c, 0x20, 0x41, 0x31, 0x34, 0x30, + 0x20, 0x28, 0x32, 0x30, 0x32, 0x32, 0x29, 0x20, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, + 0x65, 0x72, 0x69, 0x63, 0x20, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x20, + 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x41, 0x73, 0x70, 0x6c, 0x75, 0x6e, 0x64, 0x2c, 0x20, 0x47, 0x72, 0x65, 0x76, 0x65, + 0x73, 0x73, 0x65, 0x2c, 0x20, 0x53, 0x61, 0x75, 0x76, 0x61, 0x6c, 0x2c, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x61, 0x62, 0x75, 0x6e, + 0x64, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x0a, 0x09, 0x09, 0x20, 0x48, 0x45, 0x5f, 0x41, 0x42, + 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x3a, 0x20, 0x6e, 0x61, 0x6e, 0x0a, 0x20, 0x09, 0x09, + 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, + 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x3a, 0x20, 0x54, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, + 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, + 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, + 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, + 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, + 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x43, + 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x41, 0x73, 0x2c, 0x53, 0x65, + 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x59, 0x2c, 0x5a, + 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, 0x50, 0x64, + 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, + 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x4c, 0x61, + 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, 0x2c, 0x45, 0x75, 0x2c, + 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x54, + 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, + 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, 0x41, 0x75, 0x2c, 0x48, + 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, 0x2c, 0x55, 0x2c, + 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x3a, + 0x20, 0x5b, 0x33, 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, 0x2c, 0x20, 0x32, 0x2e, + 0x37, 0x2c, 0x20, 0x38, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x39, 0x38, 0x2c, 0x20, 0x38, + 0x2e, 0x37, 0x37, 0x2c, 0x20, 0x34, 0x2e, 0x34, 0x2c, 0x20, 0x38, 0x2e, 0x31, 0x35, 0x2c, 0x20, + 0x36, 0x2e, 0x32, 0x39, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x36, 0x2e, 0x34, 0x33, + 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x39, 0x2c, 0x20, 0x35, 0x2e, 0x34, 0x31, 0x2c, 0x20, 0x37, 0x2e, + 0x31, 0x36, 0x2c, 0x20, 0x35, 0x2e, 0x32, 0x35, 0x2c, 0x20, 0x36, 0x2e, 0x35, 0x2c, 0x20, 0x35, + 0x2e, 0x31, 0x34, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x37, 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x37, 0x2c, + 0x20, 0x34, 0x2e, 0x39, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x38, 0x39, 0x2c, 0x20, 0x35, 0x2e, 0x37, + 0x34, 0x2c, 0x20, 0x35, 0x2e, 0x35, 0x32, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x2c, 0x20, 0x34, 0x2e, + 0x39, 0x35, 0x2c, 0x20, 0x36, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x34, 0x2e, 0x31, 0x39, 0x2c, 0x20, + 0x34, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x36, 0x35, + 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x2c, 0x20, 0x33, 0x2e, 0x33, 0x34, 0x2c, 0x20, 0x32, 0x2e, 0x35, + 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x32, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x32, 0x2c, 0x20, 0x32, + 0x2e, 0x38, 0x37, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x35, 0x38, 0x2c, + 0x20, 0x31, 0x2e, 0x34, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x38, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x37, + 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x37, 0x2c, 0x20, 0x30, + 0x2e, 0x39, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x2c, 0x20, + 0x32, 0x2e, 0x30, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x31, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x38, + 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x34, 0x2c, 0x20, 0x31, 0x2e, + 0x30, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x2c, 0x20, 0x31, + 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x32, 0x2c, + 0x20, 0x30, 0x2e, 0x39, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x30, + 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x34, + 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x2c, 0x20, 0x30, 0x2e, + 0x38, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x2d, + 0x30, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x36, + 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x36, + 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x31, 0x37, 0x2c, 0x20, 0x30, + 0x2e, 0x39, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x35, 0x2c, 0x20, + 0x30, 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x35, 0x34, 0x5d, 0x0a, 0x09, 0x20, 0x45, + 0x4e, 0x44, 0x20, 0x4d, 0x42, 0x32, 0x32, 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, + 0x65, 0x72, 0x69, 0x63, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x41, 0x41, + 0x47, 0x32, 0x31, 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72, 0x69, 0x63, + 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x41, 0x73, 0x70, + 0x6c, 0x75, 0x6e, 0x64, 0x20, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x2e, 0x20, 0x41, 0x26, 0x41, 0x20, + 0x36, 0x35, 0x33, 0x2c, 0x20, 0x41, 0x31, 0x34, 0x31, 0x20, 0x28, 0x32, 0x30, 0x32, 0x31, 0x29, + 0x20, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72, 0x69, 0x63, 0x20, 0x61, 0x62, + 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x20, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x65, 0x74, 0x65, 0x6f, + 0x72, 0x69, 0x63, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x0a, 0x09, 0x09, 0x20, 0x48, + 0x45, 0x5f, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x3a, 0x20, 0x6e, 0x61, 0x6e, + 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x54, + 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x3a, 0x20, 0x54, 0x72, 0x75, + 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, + 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, + 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, + 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, + 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, + 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x41, + 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, + 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, + 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, + 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, + 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, + 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, + 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x54, + 0x61, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, + 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, + 0x68, 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, + 0x43, 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x30, 0x2e, 0x39, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x38, + 0x2c, 0x20, 0x32, 0x2e, 0x37, 0x2c, 0x20, 0x38, 0x2e, 0x34, 0x36, 0x2c, 0x20, 0x37, 0x2e, 0x38, + 0x33, 0x2c, 0x20, 0x38, 0x2e, 0x36, 0x39, 0x2c, 0x20, 0x34, 0x2e, 0x34, 0x2c, 0x20, 0x38, 0x2e, + 0x30, 0x36, 0x2c, 0x20, 0x36, 0x2e, 0x32, 0x32, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x35, 0x2c, 0x20, + 0x36, 0x2e, 0x34, 0x33, 0x2c, 0x20, 0x37, 0x2e, 0x35, 0x31, 0x2c, 0x20, 0x35, 0x2e, 0x34, 0x31, + 0x2c, 0x20, 0x37, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x35, 0x2e, 0x33, 0x31, 0x2c, 0x20, 0x36, 0x2e, + 0x33, 0x38, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x37, 0x2c, 0x20, 0x36, 0x2e, 0x33, 0x2c, 0x20, 0x33, + 0x2e, 0x31, 0x34, 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x37, 0x2c, 0x20, 0x33, 0x2e, 0x39, 0x2c, 0x20, + 0x35, 0x2e, 0x36, 0x32, 0x2c, 0x20, 0x35, 0x2e, 0x34, 0x32, 0x2c, 0x20, 0x37, 0x2e, 0x34, 0x36, + 0x2c, 0x20, 0x34, 0x2e, 0x39, 0x34, 0x2c, 0x20, 0x36, 0x2e, 0x32, 0x2c, 0x20, 0x34, 0x2e, 0x31, + 0x38, 0x2c, 0x20, 0x34, 0x2e, 0x35, 0x36, 0x2c, 0x20, 0x33, 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x33, + 0x2e, 0x36, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x2c, 0x20, 0x33, 0x2e, 0x33, 0x34, 0x2c, 0x20, + 0x32, 0x2e, 0x35, 0x34, 0x2c, 0x20, 0x33, 0x2e, 0x31, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x33, 0x32, + 0x2c, 0x20, 0x32, 0x2e, 0x38, 0x33, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x31, 0x2c, 0x20, 0x32, 0x2e, + 0x35, 0x39, 0x2c, 0x20, 0x31, 0x2e, 0x34, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x38, 0x38, 0x2c, 0x20, + 0x31, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x37, + 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x37, 0x31, 0x2c, 0x20, 0x30, 0x2e, + 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x31, 0x2c, 0x20, 0x32, + 0x2e, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x32, 0x2c, + 0x20, 0x31, 0x2e, 0x30, 0x38, 0x2c, 0x20, 0x32, 0x2e, 0x32, 0x37, 0x2c, 0x20, 0x31, 0x2e, 0x31, + 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x35, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x35, 0x2c, 0x20, 0x31, + 0x2e, 0x34, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x32, 0x2c, + 0x20, 0x31, 0x2e, 0x30, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x33, 0x31, 0x2c, 0x20, 0x31, 0x2e, 0x31, + 0x2c, 0x20, 0x30, 0x2e, 0x34, 0x38, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x33, 0x2c, 0x20, 0x30, 0x2e, + 0x31, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x2c, 0x20, 0x30, + 0x2e, 0x38, 0x35, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x31, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x39, + 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x36, 0x2c, 0x20, 0x31, 0x2e, 0x33, 0x35, 0x2c, 0x20, 0x31, 0x2e, + 0x33, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x36, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x31, 0x2c, 0x20, + 0x31, 0x2e, 0x31, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x39, 0x32, 0x2c, 0x20, 0x31, 0x2e, 0x39, 0x35, + 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x33, 0x2c, 0x20, 0x2d, 0x30, + 0x2e, 0x35, 0x34, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x41, 0x41, 0x47, 0x32, 0x31, + 0x5f, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x70, 0x68, 0x65, 0x72, 0x69, 0x63, 0x0a, 0x0a, 0x09, + 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x4c, 0x30, 0x39, 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, + 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x4c, 0x6f, 0x64, 0x64, 0x65, 0x72, 0x73, 0x20, 0x30, + 0x39, 0x20, 0x0a, 0x09, 0x09, 0x20, 0x48, 0x45, 0x5f, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, + 0x43, 0x45, 0x3a, 0x20, 0x6e, 0x61, 0x6e, 0x0a, 0x20, 0x09, 0x09, 0x20, 0x52, 0x45, 0x51, 0x55, + 0x49, 0x52, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x57, 0x45, 0x49, 0x47, + 0x48, 0x54, 0x3a, 0x20, 0x46, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, + 0x42, 0x4f, 0x4c, 0x3a, 0x20, 0x5b, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x43, 0x2c, + 0x4e, 0x2c, 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x41, + 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x4b, + 0x2c, 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x4d, + 0x6e, 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, + 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x41, 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, + 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, + 0x2c, 0x4d, 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, + 0x43, 0x64, 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x49, + 0x2c, 0x58, 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, + 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x54, + 0x62, 0x2c, 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, + 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x4f, + 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, + 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, 0x2c, 0x55, 0x2c, 0x5d, 0x0a, 0x09, 0x09, + 0x20, 0x41, 0x42, 0x55, 0x4e, 0x44, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x3a, 0x20, 0x5b, 0x2d, 0x37, + 0x2e, 0x39, 0x37, 0x36, 0x39, 0x31, 0x34, 0x33, 0x31, 0x39, 0x33, 0x36, 0x37, 0x39, 0x31, 0x37, + 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x38, 0x32, 0x31, 0x33, 0x38, 0x31, 0x31, 0x31, 0x37, 0x32, 0x38, + 0x33, 0x33, 0x38, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x32, 0x35, 0x34, 0x36, 0x36, 0x35, 0x31, 0x32, + 0x35, 0x34, 0x37, 0x33, 0x39, 0x37, 0x37, 0x2c, 0x20, 0x2d, 0x32, 0x2e, 0x36, 0x32, 0x36, 0x30, + 0x36, 0x38, 0x39, 0x35, 0x32, 0x38, 0x32, 0x32, 0x31, 0x32, 0x32, 0x2c, 0x20, 0x2d, 0x33, 0x2e, + 0x30, 0x38, 0x38, 0x32, 0x30, 0x36, 0x38, 0x38, 0x30, 0x34, 0x37, 0x37, 0x38, 0x35, 0x37, 0x37, + 0x2c, 0x20, 0x2d, 0x32, 0x2e, 0x31, 0x36, 0x31, 0x32, 0x30, 0x33, 0x32, 0x36, 0x32, 0x32, 0x39, + 0x30, 0x38, 0x34, 0x38, 0x36, 0x2c, 0x20, 0x2d, 0x36, 0x2e, 0x33, 0x37, 0x38, 0x33, 0x36, 0x35, + 0x33, 0x39, 0x39, 0x31, 0x37, 0x39, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x2d, 0x32, 0x2e, 0x37, 0x34, + 0x30, 0x38, 0x33, 0x35, 0x37, 0x37, 0x37, 0x39, 0x38, 0x39, 0x36, 0x30, 0x33, 0x2c, 0x20, 0x2d, + 0x34, 0x2e, 0x34, 0x33, 0x39, 0x34, 0x37, 0x31, 0x33, 0x39, 0x39, 0x37, 0x30, 0x38, 0x32, 0x37, + 0x38, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x31, 0x36, 0x35, 0x32, 0x35, 0x32, 0x32, 0x38, 0x32, 0x32, + 0x37, 0x38, 0x35, 0x37, 0x34, 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x32, 0x30, 0x33, 0x36, 0x34, 0x30, + 0x39, 0x32, 0x31, 0x36, 0x37, 0x38, 0x36, 0x32, 0x35, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x31, 0x31, + 0x33, 0x36, 0x36, 0x35, 0x36, 0x33, 0x37, 0x39, 0x31, 0x37, 0x31, 0x38, 0x36, 0x38, 0x2c, 0x20, + 0x2d, 0x35, 0x2e, 0x31, 0x35, 0x31, 0x39, 0x33, 0x35, 0x32, 0x36, 0x32, 0x36, 0x36, 0x38, 0x39, + 0x32, 0x39, 0x2c, 0x20, 0x2d, 0x33, 0x2e, 0x34, 0x33, 0x31, 0x36, 0x35, 0x33, 0x30, 0x39, 0x38, + 0x31, 0x34, 0x34, 0x35, 0x30, 0x31, 0x37, 0x2c, 0x20, 0x2d, 0x35, 0x2e, 0x32, 0x39, 0x38, 0x38, + 0x35, 0x37, 0x33, 0x33, 0x32, 0x37, 0x38, 0x35, 0x32, 0x32, 0x39, 0x2c, 0x20, 0x2d, 0x34, 0x2e, + 0x30, 0x33, 0x35, 0x31, 0x37, 0x33, 0x32, 0x30, 0x39, 0x38, 0x34, 0x30, 0x39, 0x32, 0x36, 0x2c, + 0x20, 0x2d, 0x35, 0x2e, 0x33, 0x39, 0x34, 0x37, 0x32, 0x33, 0x39, 0x39, 0x36, 0x39, 0x36, 0x33, + 0x32, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x31, 0x37, 0x38, 0x33, 0x39, 0x37, 0x34, 0x38, + 0x30, 0x38, 0x37, 0x30, 0x36, 0x30, 0x36, 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x33, 0x37, 0x32, 0x36, + 0x30, 0x34, 0x30, 0x39, 0x32, 0x35, 0x32, 0x38, 0x36, 0x38, 0x38, 0x2c, 0x20, 0x2d, 0x35, 0x2e, + 0x34, 0x38, 0x39, 0x31, 0x37, 0x37, 0x34, 0x33, 0x30, 0x39, 0x38, 0x32, 0x38, 0x2c, 0x20, 0x2d, + 0x36, 0x2e, 0x33, 0x39, 0x37, 0x33, 0x39, 0x37, 0x39, 0x37, 0x31, 0x37, 0x36, 0x32, 0x30, 0x32, + 0x33, 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x37, 0x32, 0x38, 0x30, 0x34, 0x35, 0x39, 0x31, 0x39, 0x31, + 0x33, 0x36, 0x33, 0x39, 0x36, 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x38, 0x35, 0x37, 0x32, 0x38, 0x31, + 0x34, 0x33, 0x38, 0x33, 0x32, 0x32, 0x31, 0x36, 0x39, 0x2c, 0x20, 0x2d, 0x32, 0x2e, 0x38, 0x38, + 0x36, 0x34, 0x39, 0x35, 0x37, 0x35, 0x30, 0x30, 0x33, 0x39, 0x30, 0x32, 0x35, 0x36, 0x2c, 0x20, + 0x2d, 0x35, 0x2e, 0x34, 0x32, 0x30, 0x34, 0x35, 0x35, 0x31, 0x37, 0x34, 0x39, 0x35, 0x38, 0x39, + 0x36, 0x37, 0x2c, 0x20, 0x2d, 0x34, 0x2e, 0x31, 0x30, 0x32, 0x32, 0x37, 0x32, 0x31, 0x33, 0x36, + 0x30, 0x37, 0x39, 0x36, 0x34, 0x2c, 0x20, 0x2d, 0x36, 0x2e, 0x30, 0x32, 0x35, 0x36, 0x30, 0x32, + 0x30, 0x33, 0x37, 0x30, 0x34, 0x36, 0x31, 0x34, 0x38, 0x35, 0x2c, 0x20, 0x2d, 0x35, 0x2e, 0x36, + 0x33, 0x33, 0x37, 0x33, 0x38, 0x35, 0x35, 0x37, 0x36, 0x32, 0x36, 0x30, 0x32, 0x39, 0x2c, 0x20, + 0x2d, 0x37, 0x2e, 0x31, 0x35, 0x35, 0x30, 0x35, 0x32, 0x31, 0x34, 0x31, 0x30, 0x33, 0x39, 0x32, + 0x31, 0x32, 0x2c, 0x20, 0x2d, 0x36, 0x2e, 0x36, 0x34, 0x32, 0x32, 0x32, 0x30, 0x34, 0x30, 0x34, + 0x34, 0x30, 0x31, 0x34, 0x33, 0x31, 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x39, 0x30, 0x31, 0x39, 0x38, + 0x33, 0x39, 0x35, 0x30, 0x34, 0x38, 0x34, 0x32, 0x37, 0x37, 0x35, 0x2c, 0x20, 0x2d, 0x36, 0x2e, + 0x38, 0x33, 0x35, 0x34, 0x36, 0x34, 0x35, 0x34, 0x35, 0x39, 0x36, 0x36, 0x38, 0x34, 0x31, 0x35, + 0x2c, 0x20, 0x2d, 0x36, 0x2e, 0x36, 0x35, 0x39, 0x33, 0x36, 0x31, 0x30, 0x37, 0x30, 0x30, 0x36, + 0x39, 0x32, 0x39, 0x38, 0x2c, 0x20, 0x2d, 0x36, 0x2e, 0x38, 0x39, 0x31, 0x35, 0x33, 0x32, 0x39, + 0x31, 0x34, 0x34, 0x31, 0x32, 0x33, 0x34, 0x39, 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x37, 0x37, 0x30, + 0x38, 0x34, 0x35, 0x37, 0x39, 0x39, 0x33, 0x36, 0x32, 0x38, 0x30, 0x38, 0x2c, 0x20, 0x2d, 0x37, + 0x2e, 0x32, 0x35, 0x33, 0x32, 0x37, 0x33, 0x31, 0x36, 0x38, 0x34, 0x36, 0x39, 0x38, 0x36, 0x31, + 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x39, 0x34, 0x37, 0x34, 0x30, 0x34, 0x30, 0x35, 0x31, 0x31, 0x39, + 0x36, 0x33, 0x31, 0x36, 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x35, 0x36, 0x39, 0x31, 0x32, 0x33, 0x31, + 0x35, 0x37, 0x30, 0x37, 0x39, 0x36, 0x33, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x37, 0x30, 0x31, 0x37, + 0x39, 0x37, 0x34, 0x39, 0x37, 0x36, 0x33, 0x35, 0x34, 0x39, 0x33, 0x2c, 0x20, 0x2d, 0x38, 0x2e, + 0x31, 0x37, 0x33, 0x34, 0x38, 0x37, 0x33, 0x35, 0x36, 0x37, 0x32, 0x32, 0x31, 0x2c, 0x20, 0x2d, + 0x38, 0x2e, 0x33, 0x30, 0x36, 0x36, 0x39, 0x39, 0x38, 0x30, 0x31, 0x37, 0x39, 0x39, 0x35, 0x32, + 0x33, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x39, 0x38, 0x31, 0x33, 0x33, 0x36, 0x31, 0x30, 0x30, 0x30, + 0x38, 0x39, 0x37, 0x36, 0x31, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x34, 0x30, 0x32, 0x34, 0x33, 0x32, + 0x36, 0x37, 0x31, 0x38, 0x32, 0x38, 0x36, 0x31, 0x35, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x38, 0x33, + 0x38, 0x39, 0x30, 0x32, 0x39, 0x35, 0x37, 0x37, 0x30, 0x30, 0x32, 0x31, 0x32, 0x2c, 0x20, 0x2d, + 0x38, 0x2e, 0x33, 0x31, 0x34, 0x31, 0x39, 0x33, 0x32, 0x37, 0x33, 0x30, 0x38, 0x35, 0x39, 0x2c, + 0x20, 0x2d, 0x39, 0x2e, 0x32, 0x35, 0x31, 0x35, 0x39, 0x36, 0x37, 0x39, 0x37, 0x32, 0x36, 0x35, + 0x32, 0x35, 0x34, 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x39, 0x33, 0x30, 0x30, 0x31, 0x34, 0x39, 0x35, + 0x32, 0x33, 0x35, 0x31, 0x30, 0x35, 0x31, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x39, 0x38, 0x30, 0x39, + 0x38, 0x32, 0x39, 0x37, 0x33, 0x34, 0x36, 0x38, 0x31, 0x36, 0x34, 0x2c, 0x20, 0x2d, 0x37, 0x2e, + 0x37, 0x38, 0x34, 0x31, 0x34, 0x37, 0x30, 0x37, 0x39, 0x39, 0x31, 0x31, 0x32, 0x33, 0x36, 0x2c, + 0x20, 0x2d, 0x38, 0x2e, 0x34, 0x31, 0x37, 0x31, 0x37, 0x38, 0x36, 0x34, 0x32, 0x37, 0x35, 0x39, + 0x37, 0x37, 0x34, 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x37, 0x30, 0x37, 0x30, 0x34, 0x30, 0x30, 0x36, + 0x38, 0x32, 0x37, 0x31, 0x38, 0x39, 0x31, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x38, 0x36, 0x39, 0x31, + 0x34, 0x39, 0x34, 0x39, 0x38, 0x32, 0x39, 0x39, 0x30, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x37, 0x2e, + 0x37, 0x37, 0x33, 0x34, 0x33, 0x31, 0x34, 0x34, 0x30, 0x30, 0x32, 0x31, 0x34, 0x38, 0x33, 0x2c, + 0x20, 0x2d, 0x38, 0x2e, 0x37, 0x35, 0x39, 0x34, 0x34, 0x34, 0x30, 0x34, 0x38, 0x35, 0x35, 0x38, + 0x36, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x33, 0x34, 0x35, 0x31, 0x38, 0x35, 0x39, 0x39, 0x38, 0x35, + 0x39, 0x34, 0x39, 0x31, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x31, 0x37, 0x37, 0x36, 0x32, 0x37, 0x34, + 0x38, 0x39, 0x33, 0x31, 0x34, 0x35, 0x39, 0x35, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x32, 0x33, 0x34, + 0x38, 0x30, 0x33, 0x36, 0x31, 0x37, 0x36, 0x35, 0x34, 0x38, 0x35, 0x38, 0x2c, 0x20, 0x2d, 0x38, + 0x2e, 0x39, 0x35, 0x38, 0x35, 0x33, 0x38, 0x30, 0x39, 0x30, 0x34, 0x37, 0x34, 0x35, 0x39, 0x34, + 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x33, 0x38, 0x36, 0x39, 0x37, 0x30, 0x35, 0x31, 0x37, 0x37, 0x35, + 0x37, 0x34, 0x38, 0x38, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x38, 0x30, 0x39, 0x35, 0x30, 0x34, 0x39, + 0x30, 0x39, 0x36, 0x38, 0x33, 0x31, 0x30, 0x38, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x35, 0x35, 0x38, + 0x38, 0x38, 0x38, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x39, 0x33, 0x38, 0x2c, 0x20, 0x2d, 0x38, + 0x2e, 0x37, 0x34, 0x34, 0x37, 0x33, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x33, 0x32, 0x32, + 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x33, 0x38, 0x35, 0x38, 0x34, 0x39, 0x37, 0x31, 0x32, 0x33, 0x33, + 0x37, 0x35, 0x38, 0x35, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x39, 0x31, 0x39, 0x35, 0x31, 0x38, 0x39, + 0x34, 0x39, 0x38, 0x33, 0x34, 0x33, 0x33, 0x36, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x37, 0x32, 0x35, + 0x39, 0x36, 0x32, 0x33, 0x31, 0x30, 0x36, 0x37, 0x35, 0x34, 0x39, 0x39, 0x2c, 0x20, 0x2d, 0x38, + 0x2e, 0x39, 0x31, 0x35, 0x32, 0x38, 0x37, 0x35, 0x37, 0x37, 0x37, 0x36, 0x37, 0x39, 0x35, 0x34, + 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x37, 0x33, 0x38, 0x33, 0x34, 0x30, 0x33, 0x38, 0x30, 0x37, 0x39, + 0x36, 0x30, 0x37, 0x33, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x31, 0x31, 0x38, 0x30, 0x37, 0x31, 0x30, + 0x30, 0x33, 0x34, 0x33, 0x34, 0x35, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x39, 0x38, 0x32, 0x34, 0x32, + 0x33, 0x37, 0x30, 0x39, 0x38, 0x36, 0x31, 0x35, 0x31, 0x33, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x31, + 0x36, 0x30, 0x37, 0x37, 0x38, 0x30, 0x38, 0x35, 0x39, 0x37, 0x30, 0x34, 0x39, 0x2c, 0x20, 0x2d, + 0x39, 0x2e, 0x35, 0x32, 0x38, 0x30, 0x31, 0x35, 0x33, 0x35, 0x32, 0x34, 0x39, 0x38, 0x34, 0x38, + 0x37, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x34, 0x35, 0x32, 0x34, 0x33, 0x36, 0x39, 0x33, 0x32, 0x32, + 0x30, 0x36, 0x32, 0x34, 0x39, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x34, 0x35, 0x31, 0x37, 0x37, 0x35, + 0x32, 0x33, 0x38, 0x38, 0x33, 0x31, 0x37, 0x34, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x31, 0x36, 0x36, + 0x38, 0x35, 0x31, 0x32, 0x31, 0x34, 0x36, 0x37, 0x35, 0x34, 0x34, 0x38, 0x2c, 0x20, 0x2d, 0x38, + 0x2e, 0x39, 0x37, 0x37, 0x38, 0x37, 0x34, 0x32, 0x31, 0x31, 0x33, 0x35, 0x34, 0x37, 0x39, 0x38, + 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x35, 0x39, 0x39, 0x31, 0x33, 0x30, 0x34, 0x32, 0x39, 0x32, 0x31, + 0x30, 0x37, 0x36, 0x39, 0x2c, 0x20, 0x2d, 0x38, 0x2e, 0x39, 0x38, 0x39, 0x34, 0x32, 0x32, 0x31, + 0x36, 0x39, 0x32, 0x32, 0x31, 0x33, 0x33, 0x39, 0x2c, 0x20, 0x2d, 0x37, 0x2e, 0x37, 0x32, 0x35, + 0x38, 0x35, 0x35, 0x39, 0x38, 0x37, 0x35, 0x36, 0x31, 0x36, 0x30, 0x39, 0x35, 0x2c, 0x20, 0x2d, + 0x39, 0x2e, 0x31, 0x30, 0x32, 0x33, 0x34, 0x39, 0x36, 0x37, 0x36, 0x33, 0x36, 0x32, 0x38, 0x34, + 0x33, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x35, 0x35, 0x33, 0x34, 0x33, 0x34, 0x33, 0x38, 0x37, 0x35, + 0x30, 0x37, 0x32, 0x34, 0x2c, 0x20, 0x2d, 0x39, 0x2e, 0x38, 0x31, 0x30, 0x35, 0x35, 0x37, 0x32, + 0x36, 0x31, 0x31, 0x33, 0x36, 0x34, 0x36, 0x38, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, + 0x4c, 0x30, 0x39, 0x0a, 0x0a, 0x45, 0x4e, 0x44, 0x20, 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x20, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0a, + 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x20, 0x69, 0x73, + 0x6f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x0a, 0x09, 0x20, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x20, 0x5b, 0x4c, 0x30, + 0x33, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x4c, 0x30, 0x39, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5d, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x4c, 0x30, 0x33, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x20, 0x36, 0x20, 0x6f, 0x66, 0x20, 0x4c, 0x6f, 0x64, 0x64, 0x65, 0x72, + 0x73, 0x20, 0x28, 0x32, 0x30, 0x30, 0x33, 0x29, 0x2c, 0x20, 0x41, 0x70, 0x4a, 0x2c, 0x20, 0x35, + 0x39, 0x31, 0x3a, 0x20, 0x31, 0x32, 0x32, 0x30, 0x20, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x54, 0x4f, + 0x4d, 0x49, 0x43, 0x20, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x3a, 0x20, 0x5b, 0x31, 0x2c, 0x31, + 0x2c, 0x32, 0x2c, 0x32, 0x2c, 0x33, 0x2c, 0x33, 0x2c, 0x34, 0x2c, 0x35, 0x2c, 0x35, 0x2c, 0x36, + 0x2c, 0x36, 0x2c, 0x37, 0x2c, 0x37, 0x2c, 0x38, 0x2c, 0x38, 0x2c, 0x38, 0x2c, 0x39, 0x2c, 0x31, + 0x30, 0x2c, 0x31, 0x30, 0x2c, 0x31, 0x30, 0x2c, 0x31, 0x31, 0x2c, 0x31, 0x32, 0x2c, 0x31, 0x32, + 0x2c, 0x31, 0x32, 0x2c, 0x31, 0x33, 0x2c, 0x31, 0x34, 0x2c, 0x31, 0x34, 0x2c, 0x31, 0x34, 0x2c, + 0x31, 0x35, 0x2c, 0x31, 0x36, 0x2c, 0x31, 0x36, 0x2c, 0x31, 0x36, 0x2c, 0x31, 0x36, 0x2c, 0x31, + 0x37, 0x2c, 0x31, 0x37, 0x2c, 0x31, 0x38, 0x2c, 0x31, 0x38, 0x2c, 0x31, 0x38, 0x2c, 0x31, 0x39, + 0x2c, 0x31, 0x39, 0x2c, 0x31, 0x39, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, + 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x31, 0x2c, 0x32, 0x32, 0x2c, 0x32, + 0x32, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x33, 0x2c, 0x32, 0x33, + 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x35, 0x2c, + 0x32, 0x36, 0x2c, 0x32, 0x36, 0x2c, 0x32, 0x36, 0x2c, 0x32, 0x36, 0x2c, 0x32, 0x37, 0x2c, 0x32, + 0x38, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x39, + 0x2c, 0x32, 0x39, 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x30, 0x2c, + 0x33, 0x30, 0x2c, 0x33, 0x31, 0x2c, 0x33, 0x31, 0x2c, 0x33, 0x32, 0x2c, 0x33, 0x32, 0x2c, 0x33, + 0x32, 0x2c, 0x33, 0x32, 0x2c, 0x33, 0x32, 0x2c, 0x33, 0x33, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, + 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x35, 0x2c, + 0x33, 0x35, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x36, 0x2c, 0x33, + 0x36, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x37, 0x2c, 0x33, 0x37, 0x2c, 0x33, 0x38, 0x2c, 0x33, 0x38, + 0x2c, 0x33, 0x38, 0x2c, 0x33, 0x38, 0x2c, 0x33, 0x39, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x30, 0x2c, + 0x34, 0x30, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x31, 0x2c, 0x34, 0x32, 0x2c, 0x34, + 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, + 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, + 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x35, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, + 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x37, 0x2c, 0x34, 0x37, + 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, + 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x39, 0x2c, 0x34, 0x39, 0x2c, 0x35, + 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, + 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x31, 0x2c, + 0x35, 0x31, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, + 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x33, 0x2c, 0x35, 0x34, + 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, + 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x35, 0x2c, 0x35, 0x36, 0x2c, 0x35, + 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, + 0x2c, 0x35, 0x37, 0x2c, 0x35, 0x37, 0x2c, 0x35, 0x38, 0x2c, 0x35, 0x38, 0x2c, 0x35, 0x38, 0x2c, + 0x35, 0x38, 0x2c, 0x35, 0x39, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, + 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, + 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, + 0x36, 0x33, 0x2c, 0x36, 0x33, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, + 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x35, 0x2c, 0x36, 0x36, + 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, + 0x36, 0x36, 0x2c, 0x36, 0x37, 0x2c, 0x36, 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, + 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, 0x39, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, + 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, + 0x37, 0x31, 0x2c, 0x37, 0x31, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, + 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x33, 0x2c, 0x37, 0x33, 0x2c, 0x37, 0x34, + 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x35, 0x2c, + 0x37, 0x35, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, + 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x37, 0x2c, 0x37, 0x37, 0x2c, 0x37, 0x38, + 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, 0x2c, + 0x37, 0x39, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, + 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x31, 0x2c, 0x38, 0x31, 0x2c, 0x38, 0x32, + 0x2c, 0x38, 0x32, 0x2c, 0x38, 0x32, 0x2c, 0x38, 0x32, 0x2c, 0x38, 0x33, 0x2c, 0x39, 0x30, 0x2c, + 0x39, 0x32, 0x2c, 0x39, 0x32, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, + 0x3a, 0x20, 0x5b, 0x48, 0x2c, 0x48, 0x2c, 0x48, 0x65, 0x2c, 0x48, 0x65, 0x2c, 0x4c, 0x69, 0x2c, + 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x42, 0x2c, 0x43, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, + 0x4e, 0x2c, 0x4f, 0x2c, 0x4f, 0x2c, 0x4f, 0x2c, 0x46, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x65, 0x2c, + 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, 0x4d, 0x67, 0x2c, 0x4d, 0x67, 0x2c, 0x41, + 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x53, 0x69, 0x2c, 0x53, 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x53, + 0x2c, 0x53, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x43, 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x41, 0x72, + 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x4b, 0x2c, 0x4b, 0x2c, 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, + 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, + 0x69, 0x2c, 0x54, 0x69, 0x2c, 0x54, 0x69, 0x2c, 0x54, 0x69, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, + 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x43, 0x72, 0x2c, 0x43, 0x72, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, + 0x2c, 0x46, 0x65, 0x2c, 0x46, 0x65, 0x2c, 0x46, 0x65, 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, + 0x4e, 0x69, 0x2c, 0x4e, 0x69, 0x2c, 0x4e, 0x69, 0x2c, 0x4e, 0x69, 0x2c, 0x4e, 0x69, 0x2c, 0x43, + 0x75, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x5a, 0x6e, 0x2c, 0x5a, 0x6e, 0x2c, 0x5a, 0x6e, + 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x65, 0x2c, 0x47, 0x65, 0x2c, + 0x47, 0x65, 0x2c, 0x47, 0x65, 0x2c, 0x47, 0x65, 0x2c, 0x41, 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x53, + 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, + 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x4b, 0x72, 0x2c, + 0x4b, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x53, + 0x72, 0x2c, 0x53, 0x72, 0x2c, 0x53, 0x72, 0x2c, 0x59, 0x2c, 0x5a, 0x72, 0x2c, 0x5a, 0x72, 0x2c, + 0x5a, 0x72, 0x2c, 0x5a, 0x72, 0x2c, 0x5a, 0x72, 0x2c, 0x4e, 0x62, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, + 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, + 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, + 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, 0x50, 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x50, + 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x41, 0x67, + 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, + 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x49, 0x6e, 0x2c, 0x49, 0x6e, 0x2c, 0x53, + 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, + 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, + 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, + 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, 0x2c, + 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, + 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x43, 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, + 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, + 0x4c, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, 0x43, 0x65, 0x2c, 0x43, 0x65, 0x2c, 0x43, + 0x65, 0x2c, 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, + 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, + 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x45, + 0x75, 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, + 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x54, 0x62, 0x2c, 0x44, 0x79, 0x2c, + 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x44, + 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x45, 0x72, 0x2c, 0x45, 0x72, 0x2c, 0x45, 0x72, + 0x2c, 0x45, 0x72, 0x2c, 0x45, 0x72, 0x2c, 0x54, 0x6d, 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, + 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x4c, + 0x75, 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x48, 0x66, 0x2c, 0x48, 0x66, 0x2c, 0x48, 0x66, + 0x2c, 0x48, 0x66, 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, 0x57, + 0x2c, 0x57, 0x2c, 0x57, 0x2c, 0x57, 0x2c, 0x52, 0x65, 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, + 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, + 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x49, 0x72, 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, + 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, 0x2c, 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, + 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x48, + 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x54, 0x6c, 0x2c, 0x50, 0x62, 0x2c, 0x50, 0x62, 0x2c, 0x50, 0x62, + 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, 0x2c, 0x55, 0x2c, 0x55, 0x5d, 0x0a, 0x09, + 0x09, 0x20, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x20, 0x4d, 0x41, 0x53, 0x53, 0x3a, 0x20, 0x5b, + 0x31, 0x2c, 0x32, 0x2c, 0x33, 0x2c, 0x34, 0x2c, 0x36, 0x2c, 0x37, 0x2c, 0x39, 0x2c, 0x31, 0x30, + 0x2c, 0x31, 0x31, 0x2c, 0x31, 0x32, 0x2c, 0x31, 0x33, 0x2c, 0x31, 0x34, 0x2c, 0x31, 0x35, 0x2c, + 0x31, 0x36, 0x2c, 0x31, 0x37, 0x2c, 0x31, 0x38, 0x2c, 0x31, 0x39, 0x2c, 0x32, 0x30, 0x2c, 0x32, + 0x31, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x33, 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x35, 0x2c, 0x32, 0x36, + 0x2c, 0x32, 0x37, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x39, 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x31, 0x2c, + 0x33, 0x32, 0x2c, 0x33, 0x33, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x35, 0x2c, 0x33, + 0x37, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x38, 0x2c, 0x34, 0x30, 0x2c, 0x33, 0x39, 0x2c, 0x34, 0x30, + 0x2c, 0x34, 0x31, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x33, 0x2c, 0x34, 0x34, 0x2c, + 0x34, 0x36, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x35, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x37, 0x2c, 0x34, + 0x38, 0x2c, 0x34, 0x39, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x31, 0x2c, 0x35, 0x30, + 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x33, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x35, 0x2c, 0x35, 0x34, 0x2c, + 0x35, 0x36, 0x2c, 0x35, 0x37, 0x2c, 0x35, 0x38, 0x2c, 0x35, 0x39, 0x2c, 0x35, 0x38, 0x2c, 0x36, + 0x30, 0x2c, 0x36, 0x31, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x33, 0x2c, 0x36, 0x35, + 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x37, 0x2c, 0x36, 0x38, 0x2c, 0x37, 0x30, 0x2c, + 0x36, 0x39, 0x2c, 0x37, 0x31, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x33, 0x2c, 0x37, + 0x34, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x35, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x37, + 0x2c, 0x37, 0x38, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x32, 0x2c, 0x37, 0x39, 0x2c, 0x38, 0x31, 0x2c, + 0x37, 0x38, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x32, 0x2c, 0x38, 0x33, 0x2c, 0x38, 0x34, 0x2c, 0x38, + 0x36, 0x2c, 0x38, 0x35, 0x2c, 0x38, 0x37, 0x2c, 0x38, 0x34, 0x2c, 0x38, 0x36, 0x2c, 0x38, 0x37, + 0x2c, 0x38, 0x38, 0x2c, 0x38, 0x39, 0x2c, 0x39, 0x30, 0x2c, 0x39, 0x31, 0x2c, 0x39, 0x32, 0x2c, + 0x39, 0x34, 0x2c, 0x39, 0x36, 0x2c, 0x39, 0x33, 0x2c, 0x39, 0x32, 0x2c, 0x39, 0x34, 0x2c, 0x39, + 0x35, 0x2c, 0x39, 0x36, 0x2c, 0x39, 0x37, 0x2c, 0x39, 0x38, 0x2c, 0x31, 0x30, 0x30, 0x2c, 0x39, + 0x36, 0x2c, 0x39, 0x38, 0x2c, 0x39, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2c, 0x31, 0x30, 0x31, 0x2c, + 0x31, 0x30, 0x32, 0x2c, 0x31, 0x30, 0x34, 0x2c, 0x31, 0x30, 0x33, 0x2c, 0x31, 0x30, 0x32, 0x2c, + 0x31, 0x30, 0x34, 0x2c, 0x31, 0x30, 0x35, 0x2c, 0x31, 0x30, 0x36, 0x2c, 0x31, 0x30, 0x38, 0x2c, + 0x31, 0x31, 0x30, 0x2c, 0x31, 0x30, 0x37, 0x2c, 0x31, 0x30, 0x39, 0x2c, 0x31, 0x30, 0x36, 0x2c, + 0x31, 0x30, 0x38, 0x2c, 0x31, 0x31, 0x30, 0x2c, 0x31, 0x31, 0x31, 0x2c, 0x31, 0x31, 0x32, 0x2c, + 0x31, 0x31, 0x33, 0x2c, 0x31, 0x31, 0x34, 0x2c, 0x31, 0x31, 0x36, 0x2c, 0x31, 0x31, 0x33, 0x2c, + 0x31, 0x31, 0x35, 0x2c, 0x31, 0x31, 0x32, 0x2c, 0x31, 0x31, 0x34, 0x2c, 0x31, 0x31, 0x35, 0x2c, + 0x31, 0x31, 0x36, 0x2c, 0x31, 0x31, 0x37, 0x2c, 0x31, 0x31, 0x38, 0x2c, 0x31, 0x31, 0x39, 0x2c, + 0x31, 0x32, 0x30, 0x2c, 0x31, 0x32, 0x32, 0x2c, 0x31, 0x32, 0x34, 0x2c, 0x31, 0x32, 0x31, 0x2c, + 0x31, 0x32, 0x33, 0x2c, 0x31, 0x32, 0x30, 0x2c, 0x31, 0x32, 0x32, 0x2c, 0x31, 0x32, 0x33, 0x2c, + 0x31, 0x32, 0x34, 0x2c, 0x31, 0x32, 0x35, 0x2c, 0x31, 0x32, 0x36, 0x2c, 0x31, 0x32, 0x38, 0x2c, + 0x31, 0x33, 0x30, 0x2c, 0x31, 0x32, 0x37, 0x2c, 0x31, 0x32, 0x34, 0x2c, 0x31, 0x32, 0x36, 0x2c, + 0x31, 0x32, 0x38, 0x2c, 0x31, 0x32, 0x39, 0x2c, 0x31, 0x33, 0x30, 0x2c, 0x31, 0x33, 0x31, 0x2c, + 0x31, 0x33, 0x32, 0x2c, 0x31, 0x33, 0x34, 0x2c, 0x31, 0x33, 0x36, 0x2c, 0x31, 0x33, 0x33, 0x2c, + 0x31, 0x33, 0x30, 0x2c, 0x31, 0x33, 0x32, 0x2c, 0x31, 0x33, 0x34, 0x2c, 0x31, 0x33, 0x35, 0x2c, + 0x31, 0x33, 0x36, 0x2c, 0x31, 0x33, 0x37, 0x2c, 0x31, 0x33, 0x38, 0x2c, 0x31, 0x33, 0x38, 0x2c, + 0x31, 0x33, 0x39, 0x2c, 0x31, 0x33, 0x36, 0x2c, 0x31, 0x33, 0x38, 0x2c, 0x31, 0x34, 0x30, 0x2c, + 0x31, 0x34, 0x32, 0x2c, 0x31, 0x34, 0x31, 0x2c, 0x31, 0x34, 0x32, 0x2c, 0x31, 0x34, 0x33, 0x2c, + 0x31, 0x34, 0x34, 0x2c, 0x31, 0x34, 0x35, 0x2c, 0x31, 0x34, 0x36, 0x2c, 0x31, 0x34, 0x38, 0x2c, + 0x31, 0x35, 0x30, 0x2c, 0x31, 0x34, 0x34, 0x2c, 0x31, 0x34, 0x37, 0x2c, 0x31, 0x34, 0x38, 0x2c, + 0x31, 0x34, 0x39, 0x2c, 0x31, 0x35, 0x30, 0x2c, 0x31, 0x35, 0x32, 0x2c, 0x31, 0x35, 0x34, 0x2c, + 0x31, 0x35, 0x31, 0x2c, 0x31, 0x35, 0x33, 0x2c, 0x31, 0x35, 0x32, 0x2c, 0x31, 0x35, 0x34, 0x2c, + 0x31, 0x35, 0x35, 0x2c, 0x31, 0x35, 0x36, 0x2c, 0x31, 0x35, 0x37, 0x2c, 0x31, 0x35, 0x38, 0x2c, + 0x31, 0x36, 0x30, 0x2c, 0x31, 0x35, 0x39, 0x2c, 0x31, 0x35, 0x36, 0x2c, 0x31, 0x35, 0x38, 0x2c, + 0x31, 0x36, 0x30, 0x2c, 0x31, 0x36, 0x31, 0x2c, 0x31, 0x36, 0x32, 0x2c, 0x31, 0x36, 0x33, 0x2c, + 0x31, 0x36, 0x34, 0x2c, 0x31, 0x36, 0x35, 0x2c, 0x31, 0x36, 0x32, 0x2c, 0x31, 0x36, 0x34, 0x2c, + 0x31, 0x36, 0x36, 0x2c, 0x31, 0x36, 0x37, 0x2c, 0x31, 0x36, 0x38, 0x2c, 0x31, 0x37, 0x30, 0x2c, + 0x31, 0x36, 0x39, 0x2c, 0x31, 0x36, 0x38, 0x2c, 0x31, 0x37, 0x30, 0x2c, 0x31, 0x37, 0x31, 0x2c, + 0x31, 0x37, 0x32, 0x2c, 0x31, 0x37, 0x33, 0x2c, 0x31, 0x37, 0x34, 0x2c, 0x31, 0x37, 0x36, 0x2c, + 0x31, 0x37, 0x35, 0x2c, 0x31, 0x37, 0x36, 0x2c, 0x31, 0x37, 0x34, 0x2c, 0x31, 0x37, 0x36, 0x2c, + 0x31, 0x37, 0x37, 0x2c, 0x31, 0x37, 0x38, 0x2c, 0x31, 0x37, 0x39, 0x2c, 0x31, 0x38, 0x30, 0x2c, + 0x31, 0x38, 0x30, 0x2c, 0x31, 0x38, 0x31, 0x2c, 0x31, 0x38, 0x30, 0x2c, 0x31, 0x38, 0x32, 0x2c, + 0x31, 0x38, 0x33, 0x2c, 0x31, 0x38, 0x34, 0x2c, 0x31, 0x38, 0x36, 0x2c, 0x31, 0x38, 0x35, 0x2c, + 0x31, 0x38, 0x37, 0x2c, 0x31, 0x38, 0x34, 0x2c, 0x31, 0x38, 0x36, 0x2c, 0x31, 0x38, 0x37, 0x2c, + 0x31, 0x38, 0x38, 0x2c, 0x31, 0x38, 0x39, 0x2c, 0x31, 0x39, 0x30, 0x2c, 0x31, 0x39, 0x32, 0x2c, + 0x31, 0x39, 0x31, 0x2c, 0x31, 0x39, 0x33, 0x2c, 0x31, 0x39, 0x30, 0x2c, 0x31, 0x39, 0x32, 0x2c, + 0x31, 0x39, 0x34, 0x2c, 0x31, 0x39, 0x35, 0x2c, 0x31, 0x39, 0x36, 0x2c, 0x31, 0x39, 0x38, 0x2c, + 0x31, 0x39, 0x37, 0x2c, 0x31, 0x39, 0x36, 0x2c, 0x31, 0x39, 0x38, 0x2c, 0x31, 0x39, 0x39, 0x2c, + 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30, 0x31, 0x2c, 0x32, 0x30, 0x32, 0x2c, 0x32, 0x30, 0x34, 0x2c, + 0x32, 0x30, 0x33, 0x2c, 0x32, 0x30, 0x35, 0x2c, 0x32, 0x30, 0x34, 0x2c, 0x32, 0x30, 0x36, 0x2c, + 0x32, 0x30, 0x37, 0x2c, 0x32, 0x30, 0x38, 0x2c, 0x32, 0x30, 0x39, 0x2c, 0x32, 0x33, 0x32, 0x2c, + 0x32, 0x33, 0x35, 0x2c, 0x32, 0x33, 0x38, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x50, 0x45, 0x52, 0x43, + 0x45, 0x4e, 0x54, 0x41, 0x47, 0x45, 0x3a, 0x20, 0x5b, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x38, 0x30, + 0x36, 0x2c, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x39, 0x34, 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x36, 0x35, + 0x39, 0x37, 0x2c, 0x39, 0x39, 0x2e, 0x39, 0x38, 0x33, 0x34, 0x30, 0x33, 0x2c, 0x37, 0x2e, 0x35, + 0x38, 0x39, 0x2c, 0x39, 0x32, 0x2e, 0x34, 0x31, 0x31, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, + 0x31, 0x39, 0x2e, 0x38, 0x32, 0x2c, 0x38, 0x30, 0x2e, 0x31, 0x38, 0x2c, 0x39, 0x38, 0x2e, 0x38, + 0x39, 0x32, 0x32, 0x2c, 0x31, 0x2e, 0x31, 0x30, 0x37, 0x38, 0x2c, 0x39, 0x39, 0x2e, 0x36, 0x33, + 0x33, 0x37, 0x2c, 0x30, 0x2e, 0x33, 0x36, 0x36, 0x33, 0x2c, 0x39, 0x39, 0x2e, 0x37, 0x36, 0x32, + 0x38, 0x2c, 0x30, 0x2e, 0x30, 0x33, 0x37, 0x32, 0x2c, 0x30, 0x2e, 0x32, 0x30, 0x30, 0x30, 0x34, + 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x39, 0x32, 0x2e, 0x39, 0x34, 0x33, 0x31, 0x2c, 0x30, + 0x2e, 0x32, 0x32, 0x32, 0x38, 0x2c, 0x36, 0x2e, 0x38, 0x33, 0x34, 0x31, 0x2c, 0x31, 0x30, 0x30, + 0x2e, 0x30, 0x2c, 0x37, 0x38, 0x2e, 0x39, 0x39, 0x32, 0x2c, 0x31, 0x30, 0x2e, 0x30, 0x30, 0x33, + 0x2c, 0x31, 0x31, 0x2e, 0x30, 0x30, 0x35, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x39, 0x32, + 0x2e, 0x32, 0x32, 0x39, 0x36, 0x38, 0x2c, 0x34, 0x2e, 0x36, 0x38, 0x33, 0x31, 0x36, 0x2c, 0x33, + 0x2e, 0x30, 0x38, 0x37, 0x31, 0x36, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x39, 0x35, 0x2e, + 0x30, 0x31, 0x38, 0x2c, 0x30, 0x2e, 0x37, 0x35, 0x2c, 0x34, 0x2e, 0x32, 0x31, 0x35, 0x2c, 0x30, + 0x2e, 0x30, 0x31, 0x37, 0x2c, 0x37, 0x35, 0x2e, 0x37, 0x37, 0x31, 0x2c, 0x32, 0x34, 0x2e, 0x32, + 0x32, 0x39, 0x2c, 0x38, 0x34, 0x2e, 0x35, 0x39, 0x34, 0x36, 0x2c, 0x31, 0x35, 0x2e, 0x33, 0x38, + 0x30, 0x38, 0x2c, 0x30, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x2c, 0x39, 0x33, 0x2e, 0x32, 0x35, 0x38, + 0x31, 0x31, 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x31, 0x36, 0x37, 0x32, 0x2c, 0x36, 0x2e, 0x37, 0x33, + 0x30, 0x32, 0x32, 0x2c, 0x39, 0x36, 0x2e, 0x39, 0x34, 0x31, 0x2c, 0x30, 0x2e, 0x36, 0x34, 0x37, + 0x2c, 0x30, 0x2e, 0x31, 0x33, 0x35, 0x2c, 0x32, 0x2e, 0x30, 0x38, 0x36, 0x2c, 0x30, 0x2e, 0x30, + 0x30, 0x34, 0x2c, 0x30, 0x2e, 0x31, 0x38, 0x37, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x38, + 0x2e, 0x32, 0x34, 0x39, 0x2c, 0x37, 0x2e, 0x34, 0x33, 0x37, 0x2c, 0x37, 0x33, 0x2e, 0x37, 0x32, + 0x2c, 0x35, 0x2e, 0x34, 0x30, 0x39, 0x2c, 0x35, 0x2e, 0x31, 0x38, 0x35, 0x2c, 0x30, 0x2e, 0x32, + 0x34, 0x39, 0x37, 0x2c, 0x39, 0x39, 0x2e, 0x37, 0x35, 0x30, 0x33, 0x2c, 0x34, 0x2e, 0x33, 0x34, + 0x35, 0x32, 0x2c, 0x38, 0x33, 0x2e, 0x37, 0x38, 0x39, 0x35, 0x2c, 0x39, 0x2e, 0x35, 0x30, 0x30, + 0x36, 0x2c, 0x32, 0x2e, 0x33, 0x36, 0x34, 0x37, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x35, + 0x2e, 0x38, 0x34, 0x35, 0x2c, 0x39, 0x31, 0x2e, 0x37, 0x35, 0x34, 0x2c, 0x32, 0x2e, 0x31, 0x31, + 0x39, 0x2c, 0x30, 0x2e, 0x32, 0x38, 0x32, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x36, 0x38, + 0x2e, 0x30, 0x37, 0x36, 0x39, 0x2c, 0x32, 0x36, 0x2e, 0x32, 0x32, 0x33, 0x31, 0x2c, 0x31, 0x2e, + 0x31, 0x33, 0x39, 0x39, 0x2c, 0x33, 0x2e, 0x36, 0x33, 0x34, 0x35, 0x2c, 0x30, 0x2e, 0x39, 0x32, + 0x35, 0x36, 0x2c, 0x36, 0x39, 0x2e, 0x31, 0x37, 0x34, 0x2c, 0x33, 0x30, 0x2e, 0x38, 0x32, 0x36, + 0x2c, 0x34, 0x38, 0x2e, 0x36, 0x33, 0x2c, 0x32, 0x37, 0x2e, 0x39, 0x2c, 0x34, 0x2e, 0x31, 0x2c, + 0x31, 0x38, 0x2e, 0x37, 0x35, 0x2c, 0x30, 0x2e, 0x36, 0x32, 0x2c, 0x36, 0x30, 0x2e, 0x31, 0x30, + 0x37, 0x39, 0x2c, 0x33, 0x39, 0x2e, 0x38, 0x39, 0x32, 0x31, 0x2c, 0x32, 0x31, 0x2e, 0x32, 0x33, + 0x34, 0x2c, 0x32, 0x37, 0x2e, 0x36, 0x36, 0x32, 0x2c, 0x37, 0x2e, 0x37, 0x31, 0x37, 0x2c, 0x33, + 0x35, 0x2e, 0x39, 0x34, 0x33, 0x2c, 0x37, 0x2e, 0x34, 0x34, 0x34, 0x2c, 0x31, 0x30, 0x30, 0x2e, + 0x30, 0x2c, 0x30, 0x2e, 0x38, 0x38, 0x39, 0x2c, 0x39, 0x2e, 0x33, 0x36, 0x36, 0x2c, 0x37, 0x2e, + 0x36, 0x33, 0x35, 0x2c, 0x32, 0x33, 0x2e, 0x37, 0x37, 0x32, 0x2c, 0x34, 0x39, 0x2e, 0x36, 0x30, + 0x37, 0x2c, 0x38, 0x2e, 0x37, 0x33, 0x31, 0x2c, 0x35, 0x30, 0x2e, 0x36, 0x38, 0x36, 0x2c, 0x34, + 0x39, 0x2e, 0x33, 0x31, 0x34, 0x2c, 0x30, 0x2e, 0x33, 0x36, 0x32, 0x2c, 0x32, 0x2e, 0x33, 0x33, + 0x2c, 0x31, 0x31, 0x2e, 0x36, 0x35, 0x2c, 0x31, 0x31, 0x2e, 0x35, 0x35, 0x2c, 0x35, 0x36, 0x2e, + 0x39, 0x2c, 0x31, 0x37, 0x2e, 0x32, 0x31, 0x2c, 0x37, 0x32, 0x2e, 0x31, 0x36, 0x35, 0x34, 0x2c, + 0x32, 0x37, 0x2e, 0x38, 0x33, 0x34, 0x36, 0x2c, 0x30, 0x2e, 0x35, 0x35, 0x35, 0x31, 0x2c, 0x39, + 0x2e, 0x38, 0x31, 0x36, 0x38, 0x2c, 0x37, 0x2e, 0x33, 0x37, 0x37, 0x31, 0x2c, 0x38, 0x32, 0x2e, + 0x32, 0x35, 0x31, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x35, 0x31, 0x2e, 0x34, 0x35, 0x32, + 0x2c, 0x31, 0x31, 0x2e, 0x32, 0x32, 0x33, 0x2c, 0x31, 0x37, 0x2e, 0x31, 0x34, 0x36, 0x2c, 0x31, + 0x37, 0x2e, 0x33, 0x38, 0x2c, 0x32, 0x2e, 0x37, 0x39, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, + 0x2c, 0x31, 0x34, 0x2e, 0x38, 0x33, 0x36, 0x32, 0x2c, 0x39, 0x2e, 0x32, 0x34, 0x36, 0x36, 0x2c, + 0x31, 0x35, 0x2e, 0x39, 0x32, 0x30, 0x31, 0x2c, 0x31, 0x36, 0x2e, 0x36, 0x37, 0x35, 0x36, 0x2c, + 0x39, 0x2e, 0x35, 0x35, 0x35, 0x31, 0x2c, 0x32, 0x34, 0x2e, 0x31, 0x33, 0x32, 0x39, 0x2c, 0x39, + 0x2e, 0x36, 0x33, 0x33, 0x35, 0x2c, 0x35, 0x2e, 0x35, 0x34, 0x32, 0x2c, 0x31, 0x2e, 0x38, 0x36, + 0x38, 0x38, 0x2c, 0x31, 0x32, 0x2e, 0x37, 0x35, 0x37, 0x39, 0x2c, 0x31, 0x32, 0x2e, 0x35, 0x39, + 0x38, 0x35, 0x2c, 0x31, 0x37, 0x2e, 0x30, 0x36, 0x2c, 0x33, 0x31, 0x2e, 0x35, 0x35, 0x31, 0x39, + 0x2c, 0x31, 0x38, 0x2e, 0x36, 0x32, 0x31, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x31, 0x2e, + 0x30, 0x32, 0x2c, 0x31, 0x31, 0x2e, 0x31, 0x34, 0x2c, 0x32, 0x32, 0x2e, 0x33, 0x33, 0x2c, 0x32, + 0x37, 0x2e, 0x33, 0x33, 0x2c, 0x32, 0x36, 0x2e, 0x34, 0x36, 0x2c, 0x31, 0x31, 0x2e, 0x37, 0x32, + 0x2c, 0x35, 0x31, 0x2e, 0x38, 0x33, 0x39, 0x32, 0x2c, 0x34, 0x38, 0x2e, 0x31, 0x36, 0x30, 0x38, + 0x2c, 0x31, 0x2e, 0x32, 0x35, 0x2c, 0x30, 0x2e, 0x38, 0x39, 0x2c, 0x31, 0x32, 0x2e, 0x34, 0x39, + 0x2c, 0x31, 0x32, 0x2e, 0x38, 0x2c, 0x32, 0x34, 0x2e, 0x31, 0x33, 0x2c, 0x31, 0x32, 0x2e, 0x32, + 0x32, 0x2c, 0x32, 0x38, 0x2e, 0x37, 0x33, 0x2c, 0x37, 0x2e, 0x34, 0x39, 0x2c, 0x34, 0x2e, 0x32, + 0x38, 0x38, 0x2c, 0x39, 0x35, 0x2e, 0x37, 0x31, 0x32, 0x2c, 0x30, 0x2e, 0x39, 0x37, 0x31, 0x2c, + 0x30, 0x2e, 0x36, 0x35, 0x39, 0x2c, 0x30, 0x2e, 0x33, 0x33, 0x39, 0x2c, 0x31, 0x34, 0x2e, 0x35, + 0x33, 0x36, 0x2c, 0x37, 0x2e, 0x36, 0x37, 0x36, 0x2c, 0x32, 0x34, 0x2e, 0x32, 0x32, 0x33, 0x2c, + 0x38, 0x2e, 0x35, 0x38, 0x35, 0x2c, 0x33, 0x32, 0x2e, 0x35, 0x39, 0x33, 0x2c, 0x34, 0x2e, 0x36, + 0x32, 0x39, 0x2c, 0x35, 0x2e, 0x37, 0x38, 0x39, 0x2c, 0x35, 0x37, 0x2e, 0x32, 0x31, 0x33, 0x2c, + 0x34, 0x32, 0x2e, 0x37, 0x38, 0x37, 0x2c, 0x30, 0x2e, 0x30, 0x39, 0x36, 0x2c, 0x32, 0x2e, 0x36, + 0x30, 0x33, 0x2c, 0x30, 0x2e, 0x39, 0x30, 0x38, 0x2c, 0x34, 0x2e, 0x38, 0x31, 0x36, 0x2c, 0x37, + 0x2e, 0x31, 0x33, 0x39, 0x2c, 0x31, 0x38, 0x2e, 0x39, 0x35, 0x32, 0x2c, 0x33, 0x31, 0x2e, 0x36, + 0x38, 0x37, 0x2c, 0x33, 0x33, 0x2e, 0x37, 0x39, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, + 0x30, 0x2e, 0x31, 0x32, 0x39, 0x2c, 0x30, 0x2e, 0x31, 0x31, 0x32, 0x2c, 0x32, 0x2e, 0x32, 0x33, + 0x2c, 0x32, 0x37, 0x2e, 0x34, 0x36, 0x2c, 0x34, 0x2e, 0x33, 0x38, 0x2c, 0x32, 0x31, 0x2e, 0x38, + 0x2c, 0x32, 0x36, 0x2e, 0x33, 0x36, 0x2c, 0x39, 0x2e, 0x36, 0x36, 0x2c, 0x37, 0x2e, 0x38, 0x37, + 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x31, 0x30, 0x35, 0x38, 0x2c, 0x30, 0x2e, + 0x31, 0x30, 0x31, 0x32, 0x2c, 0x32, 0x2e, 0x34, 0x31, 0x37, 0x2c, 0x36, 0x2e, 0x35, 0x39, 0x32, + 0x2c, 0x37, 0x2e, 0x38, 0x35, 0x33, 0x2c, 0x31, 0x31, 0x2e, 0x32, 0x33, 0x32, 0x2c, 0x37, 0x31, + 0x2e, 0x36, 0x39, 0x39, 0x2c, 0x30, 0x2e, 0x30, 0x39, 0x30, 0x31, 0x37, 0x2c, 0x39, 0x39, 0x2e, + 0x39, 0x30, 0x39, 0x38, 0x33, 0x2c, 0x30, 0x2e, 0x31, 0x38, 0x36, 0x2c, 0x30, 0x2e, 0x32, 0x35, + 0x31, 0x2c, 0x38, 0x38, 0x2e, 0x34, 0x34, 0x39, 0x2c, 0x31, 0x31, 0x2e, 0x31, 0x31, 0x34, 0x2c, + 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x32, 0x37, 0x2e, 0x31, 0x36, 0x2c, 0x31, 0x32, 0x2e, 0x31, + 0x39, 0x2c, 0x32, 0x33, 0x2e, 0x38, 0x33, 0x2c, 0x38, 0x2e, 0x33, 0x2c, 0x31, 0x37, 0x2e, 0x31, + 0x37, 0x2c, 0x35, 0x2e, 0x37, 0x34, 0x2c, 0x35, 0x2e, 0x36, 0x32, 0x2c, 0x33, 0x2e, 0x30, 0x37, + 0x33, 0x34, 0x2c, 0x31, 0x34, 0x2e, 0x39, 0x39, 0x33, 0x34, 0x2c, 0x31, 0x31, 0x2e, 0x32, 0x34, + 0x30, 0x36, 0x2c, 0x31, 0x33, 0x2e, 0x38, 0x31, 0x38, 0x39, 0x2c, 0x37, 0x2e, 0x33, 0x37, 0x39, + 0x36, 0x2c, 0x32, 0x36, 0x2e, 0x37, 0x34, 0x32, 0x31, 0x2c, 0x32, 0x32, 0x2e, 0x37, 0x35, 0x32, + 0x2c, 0x34, 0x37, 0x2e, 0x38, 0x31, 0x2c, 0x35, 0x32, 0x2e, 0x31, 0x39, 0x2c, 0x30, 0x2e, 0x32, + 0x30, 0x32, 0x39, 0x2c, 0x32, 0x2e, 0x31, 0x38, 0x30, 0x39, 0x2c, 0x31, 0x34, 0x2e, 0x37, 0x39, + 0x39, 0x38, 0x2c, 0x32, 0x30, 0x2e, 0x34, 0x36, 0x36, 0x34, 0x2c, 0x31, 0x35, 0x2e, 0x36, 0x35, + 0x31, 0x38, 0x2c, 0x32, 0x34, 0x2e, 0x38, 0x33, 0x34, 0x37, 0x2c, 0x32, 0x31, 0x2e, 0x38, 0x36, + 0x33, 0x35, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x30, 0x35, 0x36, 0x2c, 0x30, + 0x2e, 0x30, 0x39, 0x36, 0x2c, 0x32, 0x2e, 0x33, 0x34, 0x2c, 0x31, 0x38, 0x2e, 0x39, 0x31, 0x2c, + 0x32, 0x35, 0x2e, 0x35, 0x31, 0x2c, 0x32, 0x34, 0x2e, 0x39, 0x2c, 0x32, 0x38, 0x2e, 0x31, 0x39, + 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x31, 0x33, 0x37, 0x2c, 0x31, 0x2e, 0x36, + 0x30, 0x39, 0x2c, 0x33, 0x33, 0x2e, 0x36, 0x31, 0x2c, 0x32, 0x32, 0x2e, 0x39, 0x33, 0x2c, 0x32, + 0x36, 0x2e, 0x37, 0x39, 0x2c, 0x31, 0x34, 0x2e, 0x39, 0x33, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, + 0x2c, 0x30, 0x2e, 0x31, 0x33, 0x2c, 0x33, 0x2e, 0x30, 0x34, 0x2c, 0x31, 0x34, 0x2e, 0x32, 0x38, + 0x2c, 0x32, 0x31, 0x2e, 0x38, 0x33, 0x2c, 0x31, 0x36, 0x2e, 0x31, 0x33, 0x2c, 0x33, 0x31, 0x2e, + 0x38, 0x33, 0x2c, 0x31, 0x32, 0x2e, 0x37, 0x36, 0x2c, 0x39, 0x37, 0x2e, 0x34, 0x31, 0x36, 0x2c, + 0x32, 0x2e, 0x35, 0x38, 0x34, 0x2c, 0x30, 0x2e, 0x31, 0x36, 0x32, 0x2c, 0x35, 0x2e, 0x32, 0x35, + 0x30, 0x32, 0x2c, 0x31, 0x38, 0x2e, 0x35, 0x39, 0x37, 0x33, 0x2c, 0x32, 0x37, 0x2e, 0x32, 0x38, + 0x34, 0x2c, 0x31, 0x33, 0x2e, 0x36, 0x32, 0x32, 0x35, 0x2c, 0x33, 0x35, 0x2e, 0x30, 0x38, 0x34, + 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x2c, 0x39, 0x39, 0x2e, 0x39, 0x38, 0x37, 0x37, 0x2c, + 0x30, 0x2e, 0x31, 0x31, 0x39, 0x38, 0x2c, 0x32, 0x36, 0x2e, 0x34, 0x39, 0x38, 0x35, 0x2c, 0x31, + 0x34, 0x2e, 0x33, 0x31, 0x33, 0x36, 0x2c, 0x33, 0x30, 0x2e, 0x36, 0x34, 0x32, 0x32, 0x2c, 0x32, + 0x38, 0x2e, 0x34, 0x32, 0x35, 0x39, 0x2c, 0x33, 0x37, 0x2e, 0x33, 0x39, 0x38, 0x2c, 0x36, 0x32, + 0x2e, 0x36, 0x30, 0x32, 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x38, 0x2c, 0x31, 0x2e, 0x35, 0x39, + 0x32, 0x32, 0x2c, 0x31, 0x2e, 0x36, 0x34, 0x34, 0x2c, 0x31, 0x33, 0x2e, 0x32, 0x38, 0x36, 0x35, + 0x2c, 0x31, 0x36, 0x2e, 0x31, 0x39, 0x39, 0x32, 0x2c, 0x32, 0x36, 0x2e, 0x33, 0x34, 0x33, 0x38, + 0x2c, 0x34, 0x30, 0x2e, 0x39, 0x31, 0x34, 0x32, 0x2c, 0x33, 0x37, 0x2e, 0x32, 0x37, 0x32, 0x2c, + 0x36, 0x32, 0x2e, 0x37, 0x32, 0x38, 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x33, 0x36, 0x33, 0x34, 0x2c, + 0x30, 0x2e, 0x37, 0x38, 0x32, 0x36, 0x36, 0x2c, 0x33, 0x32, 0x2e, 0x39, 0x36, 0x37, 0x2c, 0x33, + 0x33, 0x2e, 0x38, 0x33, 0x31, 0x35, 0x36, 0x2c, 0x32, 0x35, 0x2e, 0x32, 0x34, 0x31, 0x36, 0x36, + 0x2c, 0x37, 0x2e, 0x31, 0x36, 0x33, 0x34, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, + 0x2e, 0x31, 0x35, 0x33, 0x34, 0x34, 0x2c, 0x39, 0x2e, 0x39, 0x36, 0x38, 0x2c, 0x31, 0x36, 0x2e, + 0x38, 0x37, 0x33, 0x2c, 0x32, 0x33, 0x2e, 0x30, 0x39, 0x36, 0x2c, 0x31, 0x33, 0x2e, 0x31, 0x38, + 0x31, 0x2c, 0x32, 0x39, 0x2e, 0x38, 0x36, 0x33, 0x2c, 0x36, 0x2e, 0x38, 0x36, 0x35, 0x2c, 0x32, + 0x39, 0x2e, 0x35, 0x32, 0x34, 0x2c, 0x37, 0x30, 0x2e, 0x34, 0x37, 0x36, 0x2c, 0x31, 0x2e, 0x39, + 0x38, 0x32, 0x2c, 0x31, 0x38, 0x2e, 0x37, 0x33, 0x35, 0x31, 0x2c, 0x32, 0x32, 0x2e, 0x35, 0x39, + 0x2c, 0x35, 0x38, 0x2e, 0x36, 0x39, 0x32, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x31, + 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x37, 0x32, 0x2c, 0x39, 0x39, 0x2e, 0x32, 0x37, 0x34, + 0x35, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x4c, 0x30, 0x33, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x0a, 0x0a, 0x09, 0x20, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x4c, 0x30, 0x39, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x0a, 0x09, 0x09, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x54, 0x3a, 0x20, + 0x0a, 0x09, 0x09, 0x20, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x20, 0x4e, 0x55, 0x4d, 0x42, 0x45, + 0x52, 0x3a, 0x20, 0x5b, 0x31, 0x2c, 0x31, 0x2c, 0x32, 0x2c, 0x32, 0x2c, 0x33, 0x2c, 0x33, 0x2c, + 0x34, 0x2c, 0x35, 0x2c, 0x35, 0x2c, 0x36, 0x2c, 0x36, 0x2c, 0x37, 0x2c, 0x37, 0x2c, 0x38, 0x2c, + 0x38, 0x2c, 0x38, 0x2c, 0x39, 0x2c, 0x31, 0x30, 0x2c, 0x31, 0x30, 0x2c, 0x31, 0x30, 0x2c, 0x31, + 0x31, 0x2c, 0x31, 0x32, 0x2c, 0x31, 0x32, 0x2c, 0x31, 0x32, 0x2c, 0x31, 0x33, 0x2c, 0x31, 0x34, + 0x2c, 0x31, 0x34, 0x2c, 0x31, 0x34, 0x2c, 0x31, 0x35, 0x2c, 0x31, 0x36, 0x2c, 0x31, 0x36, 0x2c, + 0x31, 0x36, 0x2c, 0x31, 0x36, 0x2c, 0x31, 0x37, 0x2c, 0x31, 0x37, 0x2c, 0x31, 0x38, 0x2c, 0x31, + 0x38, 0x2c, 0x31, 0x38, 0x2c, 0x31, 0x39, 0x2c, 0x31, 0x39, 0x2c, 0x31, 0x39, 0x2c, 0x32, 0x30, + 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x30, 0x2c, + 0x32, 0x31, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x32, 0x2c, 0x32, + 0x32, 0x2c, 0x32, 0x33, 0x2c, 0x32, 0x33, 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x34, + 0x2c, 0x32, 0x34, 0x2c, 0x32, 0x35, 0x2c, 0x32, 0x36, 0x2c, 0x32, 0x36, 0x2c, 0x32, 0x36, 0x2c, + 0x32, 0x36, 0x2c, 0x32, 0x37, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x38, 0x2c, 0x32, + 0x38, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x39, 0x2c, 0x32, 0x39, 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x30, + 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x31, 0x2c, 0x33, 0x31, 0x2c, + 0x33, 0x32, 0x2c, 0x33, 0x32, 0x2c, 0x33, 0x32, 0x2c, 0x33, 0x32, 0x2c, 0x33, 0x32, 0x2c, 0x33, + 0x33, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x34, + 0x2c, 0x33, 0x34, 0x2c, 0x33, 0x35, 0x2c, 0x33, 0x35, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x36, 0x2c, + 0x33, 0x36, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x37, 0x2c, 0x33, + 0x37, 0x2c, 0x33, 0x38, 0x2c, 0x33, 0x38, 0x2c, 0x33, 0x38, 0x2c, 0x33, 0x38, 0x2c, 0x33, 0x39, + 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x30, 0x2c, + 0x34, 0x31, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, + 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x32, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, + 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x35, 0x2c, + 0x34, 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x36, 0x2c, 0x34, + 0x36, 0x2c, 0x34, 0x37, 0x2c, 0x34, 0x37, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, + 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x38, 0x2c, + 0x34, 0x39, 0x2c, 0x34, 0x39, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, + 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, + 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x31, 0x2c, 0x35, 0x31, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, + 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x32, 0x2c, 0x35, + 0x32, 0x2c, 0x35, 0x33, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, + 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x34, 0x2c, + 0x35, 0x35, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, + 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x37, 0x2c, 0x35, 0x37, 0x2c, 0x35, 0x38, + 0x2c, 0x35, 0x38, 0x2c, 0x35, 0x38, 0x2c, 0x35, 0x38, 0x2c, 0x35, 0x39, 0x2c, 0x36, 0x30, 0x2c, + 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x30, 0x2c, 0x36, + 0x30, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, + 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x32, 0x2c, 0x36, 0x33, 0x2c, 0x36, 0x33, 0x2c, 0x36, 0x34, 0x2c, + 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x34, 0x2c, 0x36, + 0x34, 0x2c, 0x36, 0x35, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, + 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x37, 0x2c, 0x36, 0x38, 0x2c, + 0x36, 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, 0x38, 0x2c, 0x36, + 0x39, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, + 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x30, 0x2c, 0x37, 0x31, 0x2c, 0x37, 0x31, 0x2c, 0x37, 0x32, 0x2c, + 0x37, 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, 0x32, 0x2c, 0x37, + 0x33, 0x2c, 0x37, 0x33, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x34, + 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x35, 0x2c, 0x37, 0x35, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, + 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x36, 0x2c, 0x37, + 0x37, 0x2c, 0x37, 0x37, 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, + 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x38, 0x2c, 0x37, 0x39, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, + 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x30, 0x2c, 0x38, + 0x31, 0x2c, 0x38, 0x31, 0x2c, 0x38, 0x32, 0x2c, 0x38, 0x32, 0x2c, 0x38, 0x32, 0x2c, 0x38, 0x32, + 0x2c, 0x38, 0x33, 0x2c, 0x39, 0x30, 0x2c, 0x39, 0x32, 0x2c, 0x39, 0x32, 0x5d, 0x0a, 0x09, 0x09, + 0x20, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x3a, 0x20, 0x5b, 0x48, 0x2c, 0x48, 0x2c, 0x48, 0x65, + 0x2c, 0x48, 0x65, 0x2c, 0x4c, 0x69, 0x2c, 0x4c, 0x69, 0x2c, 0x42, 0x65, 0x2c, 0x42, 0x2c, 0x42, + 0x2c, 0x43, 0x2c, 0x43, 0x2c, 0x4e, 0x2c, 0x4e, 0x2c, 0x4f, 0x2c, 0x4f, 0x2c, 0x4f, 0x2c, 0x46, + 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x65, 0x2c, 0x4e, 0x61, 0x2c, 0x4d, 0x67, 0x2c, + 0x4d, 0x67, 0x2c, 0x4d, 0x67, 0x2c, 0x41, 0x6c, 0x2c, 0x53, 0x69, 0x2c, 0x53, 0x69, 0x2c, 0x53, + 0x69, 0x2c, 0x50, 0x2c, 0x53, 0x2c, 0x53, 0x2c, 0x53, 0x2c, 0x53, 0x2c, 0x43, 0x6c, 0x2c, 0x43, + 0x6c, 0x2c, 0x41, 0x72, 0x2c, 0x41, 0x72, 0x2c, 0x41, 0x72, 0x2c, 0x4b, 0x2c, 0x4b, 0x2c, 0x4b, + 0x2c, 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, 0x43, 0x61, 0x2c, + 0x43, 0x61, 0x2c, 0x53, 0x63, 0x2c, 0x54, 0x69, 0x2c, 0x54, 0x69, 0x2c, 0x54, 0x69, 0x2c, 0x54, + 0x69, 0x2c, 0x54, 0x69, 0x2c, 0x56, 0x2c, 0x56, 0x2c, 0x43, 0x72, 0x2c, 0x43, 0x72, 0x2c, 0x43, + 0x72, 0x2c, 0x43, 0x72, 0x2c, 0x4d, 0x6e, 0x2c, 0x46, 0x65, 0x2c, 0x46, 0x65, 0x2c, 0x46, 0x65, + 0x2c, 0x46, 0x65, 0x2c, 0x43, 0x6f, 0x2c, 0x4e, 0x69, 0x2c, 0x4e, 0x69, 0x2c, 0x4e, 0x69, 0x2c, + 0x4e, 0x69, 0x2c, 0x4e, 0x69, 0x2c, 0x43, 0x75, 0x2c, 0x43, 0x75, 0x2c, 0x5a, 0x6e, 0x2c, 0x5a, + 0x6e, 0x2c, 0x5a, 0x6e, 0x2c, 0x5a, 0x6e, 0x2c, 0x5a, 0x6e, 0x2c, 0x47, 0x61, 0x2c, 0x47, 0x61, + 0x2c, 0x47, 0x65, 0x2c, 0x47, 0x65, 0x2c, 0x47, 0x65, 0x2c, 0x47, 0x65, 0x2c, 0x47, 0x65, 0x2c, + 0x41, 0x73, 0x2c, 0x53, 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x53, + 0x65, 0x2c, 0x53, 0x65, 0x2c, 0x42, 0x72, 0x2c, 0x42, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x4b, 0x72, + 0x2c, 0x4b, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x4b, 0x72, 0x2c, 0x52, 0x62, 0x2c, + 0x52, 0x62, 0x2c, 0x53, 0x72, 0x2c, 0x53, 0x72, 0x2c, 0x53, 0x72, 0x2c, 0x53, 0x72, 0x2c, 0x59, + 0x2c, 0x5a, 0x72, 0x2c, 0x5a, 0x72, 0x2c, 0x5a, 0x72, 0x2c, 0x5a, 0x72, 0x2c, 0x5a, 0x72, 0x2c, + 0x4e, 0x62, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, + 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x4d, 0x6f, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, + 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x75, 0x2c, 0x52, 0x68, 0x2c, + 0x50, 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x50, 0x64, 0x2c, 0x50, + 0x64, 0x2c, 0x41, 0x67, 0x2c, 0x41, 0x67, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, + 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, 0x43, 0x64, 0x2c, + 0x49, 0x6e, 0x2c, 0x49, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, + 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x6e, + 0x2c, 0x53, 0x6e, 0x2c, 0x53, 0x62, 0x2c, 0x53, 0x62, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, + 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, 0x65, 0x2c, 0x54, + 0x65, 0x2c, 0x49, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, + 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x58, 0x65, 0x2c, 0x43, + 0x73, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, + 0x2c, 0x42, 0x61, 0x2c, 0x42, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x4c, 0x61, 0x2c, 0x43, 0x65, 0x2c, + 0x43, 0x65, 0x2c, 0x43, 0x65, 0x2c, 0x43, 0x65, 0x2c, 0x50, 0x72, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, + 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, 0x2c, 0x4e, 0x64, + 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, + 0x53, 0x6d, 0x2c, 0x53, 0x6d, 0x2c, 0x45, 0x75, 0x2c, 0x45, 0x75, 0x2c, 0x47, 0x64, 0x2c, 0x47, + 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, 0x2c, 0x47, 0x64, + 0x2c, 0x54, 0x62, 0x2c, 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, + 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x44, 0x79, 0x2c, 0x48, 0x6f, 0x2c, 0x45, 0x72, 0x2c, 0x45, + 0x72, 0x2c, 0x45, 0x72, 0x2c, 0x45, 0x72, 0x2c, 0x45, 0x72, 0x2c, 0x45, 0x72, 0x2c, 0x54, 0x6d, + 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, + 0x59, 0x62, 0x2c, 0x59, 0x62, 0x2c, 0x4c, 0x75, 0x2c, 0x4c, 0x75, 0x2c, 0x48, 0x66, 0x2c, 0x48, + 0x66, 0x2c, 0x48, 0x66, 0x2c, 0x48, 0x66, 0x2c, 0x48, 0x66, 0x2c, 0x48, 0x66, 0x2c, 0x54, 0x61, + 0x2c, 0x54, 0x61, 0x2c, 0x57, 0x2c, 0x57, 0x2c, 0x57, 0x2c, 0x57, 0x2c, 0x57, 0x2c, 0x52, 0x65, + 0x2c, 0x52, 0x65, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, + 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x4f, 0x73, 0x2c, 0x49, 0x72, 0x2c, 0x49, 0x72, 0x2c, 0x50, + 0x74, 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, 0x2c, 0x50, 0x74, + 0x2c, 0x41, 0x75, 0x2c, 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, + 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x48, 0x67, 0x2c, 0x54, 0x6c, 0x2c, 0x54, 0x6c, 0x2c, 0x50, + 0x62, 0x2c, 0x50, 0x62, 0x2c, 0x50, 0x62, 0x2c, 0x50, 0x62, 0x2c, 0x42, 0x69, 0x2c, 0x54, 0x68, + 0x2c, 0x55, 0x2c, 0x55, 0x5d, 0x0a, 0x09, 0x09, 0x20, 0x41, 0x54, 0x4f, 0x4d, 0x49, 0x43, 0x20, + 0x4d, 0x41, 0x53, 0x53, 0x3a, 0x20, 0x5b, 0x31, 0x2c, 0x32, 0x2c, 0x33, 0x2c, 0x34, 0x2c, 0x36, + 0x2c, 0x37, 0x2c, 0x39, 0x2c, 0x31, 0x30, 0x2c, 0x31, 0x31, 0x2c, 0x31, 0x32, 0x2c, 0x31, 0x33, + 0x2c, 0x31, 0x34, 0x2c, 0x31, 0x35, 0x2c, 0x31, 0x36, 0x2c, 0x31, 0x37, 0x2c, 0x31, 0x38, 0x2c, + 0x31, 0x39, 0x2c, 0x32, 0x30, 0x2c, 0x32, 0x31, 0x2c, 0x32, 0x32, 0x2c, 0x32, 0x33, 0x2c, 0x32, + 0x34, 0x2c, 0x32, 0x35, 0x2c, 0x32, 0x36, 0x2c, 0x32, 0x37, 0x2c, 0x32, 0x38, 0x2c, 0x32, 0x39, + 0x2c, 0x33, 0x30, 0x2c, 0x33, 0x31, 0x2c, 0x33, 0x32, 0x2c, 0x33, 0x33, 0x2c, 0x33, 0x34, 0x2c, + 0x33, 0x36, 0x2c, 0x33, 0x35, 0x2c, 0x33, 0x37, 0x2c, 0x33, 0x36, 0x2c, 0x33, 0x38, 0x2c, 0x34, + 0x30, 0x2c, 0x33, 0x39, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x31, 0x2c, 0x34, 0x30, 0x2c, 0x34, 0x32, + 0x2c, 0x34, 0x33, 0x2c, 0x34, 0x34, 0x2c, 0x34, 0x36, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x35, 0x2c, + 0x34, 0x36, 0x2c, 0x34, 0x37, 0x2c, 0x34, 0x38, 0x2c, 0x34, 0x39, 0x2c, 0x35, 0x30, 0x2c, 0x35, + 0x30, 0x2c, 0x35, 0x31, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x32, 0x2c, 0x35, 0x33, 0x2c, 0x35, 0x34, + 0x2c, 0x35, 0x35, 0x2c, 0x35, 0x34, 0x2c, 0x35, 0x36, 0x2c, 0x35, 0x37, 0x2c, 0x35, 0x38, 0x2c, + 0x35, 0x39, 0x2c, 0x35, 0x38, 0x2c, 0x36, 0x30, 0x2c, 0x36, 0x31, 0x2c, 0x36, 0x32, 0x2c, 0x36, + 0x34, 0x2c, 0x36, 0x33, 0x2c, 0x36, 0x35, 0x2c, 0x36, 0x34, 0x2c, 0x36, 0x36, 0x2c, 0x36, 0x37, + 0x2c, 0x36, 0x38, 0x2c, 0x37, 0x30, 0x2c, 0x36, 0x39, 0x2c, 0x37, 0x31, 0x2c, 0x37, 0x30, 0x2c, + 0x37, 0x32, 0x2c, 0x37, 0x33, 0x2c, 0x37, 0x34, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x35, 0x2c, 0x37, + 0x34, 0x2c, 0x37, 0x36, 0x2c, 0x37, 0x37, 0x2c, 0x37, 0x38, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x32, + 0x2c, 0x37, 0x39, 0x2c, 0x38, 0x31, 0x2c, 0x37, 0x38, 0x2c, 0x38, 0x30, 0x2c, 0x38, 0x32, 0x2c, + 0x38, 0x33, 0x2c, 0x38, 0x34, 0x2c, 0x38, 0x36, 0x2c, 0x38, 0x35, 0x2c, 0x38, 0x37, 0x2c, 0x38, + 0x34, 0x2c, 0x38, 0x36, 0x2c, 0x38, 0x37, 0x2c, 0x38, 0x38, 0x2c, 0x38, 0x39, 0x2c, 0x39, 0x30, + 0x2c, 0x39, 0x31, 0x2c, 0x39, 0x32, 0x2c, 0x39, 0x34, 0x2c, 0x39, 0x36, 0x2c, 0x39, 0x33, 0x2c, + 0x39, 0x32, 0x2c, 0x39, 0x34, 0x2c, 0x39, 0x35, 0x2c, 0x39, 0x36, 0x2c, 0x39, 0x37, 0x2c, 0x39, + 0x38, 0x2c, 0x31, 0x30, 0x30, 0x2c, 0x39, 0x36, 0x2c, 0x39, 0x38, 0x2c, 0x39, 0x39, 0x2c, 0x31, + 0x30, 0x30, 0x2c, 0x31, 0x30, 0x31, 0x2c, 0x31, 0x30, 0x32, 0x2c, 0x31, 0x30, 0x34, 0x2c, 0x31, + 0x30, 0x33, 0x2c, 0x31, 0x30, 0x32, 0x2c, 0x31, 0x30, 0x34, 0x2c, 0x31, 0x30, 0x35, 0x2c, 0x31, + 0x30, 0x36, 0x2c, 0x31, 0x30, 0x38, 0x2c, 0x31, 0x31, 0x30, 0x2c, 0x31, 0x30, 0x37, 0x2c, 0x31, + 0x30, 0x39, 0x2c, 0x31, 0x30, 0x36, 0x2c, 0x31, 0x30, 0x38, 0x2c, 0x31, 0x31, 0x30, 0x2c, 0x31, + 0x31, 0x31, 0x2c, 0x31, 0x31, 0x32, 0x2c, 0x31, 0x31, 0x33, 0x2c, 0x31, 0x31, 0x34, 0x2c, 0x31, + 0x31, 0x36, 0x2c, 0x31, 0x31, 0x33, 0x2c, 0x31, 0x31, 0x35, 0x2c, 0x31, 0x31, 0x32, 0x2c, 0x31, + 0x31, 0x34, 0x2c, 0x31, 0x31, 0x35, 0x2c, 0x31, 0x31, 0x36, 0x2c, 0x31, 0x31, 0x37, 0x2c, 0x31, + 0x31, 0x38, 0x2c, 0x31, 0x31, 0x39, 0x2c, 0x31, 0x32, 0x30, 0x2c, 0x31, 0x32, 0x32, 0x2c, 0x31, + 0x32, 0x34, 0x2c, 0x31, 0x32, 0x31, 0x2c, 0x31, 0x32, 0x33, 0x2c, 0x31, 0x32, 0x30, 0x2c, 0x31, + 0x32, 0x32, 0x2c, 0x31, 0x32, 0x33, 0x2c, 0x31, 0x32, 0x34, 0x2c, 0x31, 0x32, 0x35, 0x2c, 0x31, + 0x32, 0x36, 0x2c, 0x31, 0x32, 0x38, 0x2c, 0x31, 0x33, 0x30, 0x2c, 0x31, 0x32, 0x37, 0x2c, 0x31, + 0x32, 0x34, 0x2c, 0x31, 0x32, 0x36, 0x2c, 0x31, 0x32, 0x38, 0x2c, 0x31, 0x32, 0x39, 0x2c, 0x31, + 0x33, 0x30, 0x2c, 0x31, 0x33, 0x31, 0x2c, 0x31, 0x33, 0x32, 0x2c, 0x31, 0x33, 0x34, 0x2c, 0x31, + 0x33, 0x36, 0x2c, 0x31, 0x33, 0x33, 0x2c, 0x31, 0x33, 0x30, 0x2c, 0x31, 0x33, 0x32, 0x2c, 0x31, + 0x33, 0x34, 0x2c, 0x31, 0x33, 0x35, 0x2c, 0x31, 0x33, 0x36, 0x2c, 0x31, 0x33, 0x37, 0x2c, 0x31, + 0x33, 0x38, 0x2c, 0x31, 0x33, 0x38, 0x2c, 0x31, 0x33, 0x39, 0x2c, 0x31, 0x33, 0x36, 0x2c, 0x31, + 0x33, 0x38, 0x2c, 0x31, 0x34, 0x30, 0x2c, 0x31, 0x34, 0x32, 0x2c, 0x31, 0x34, 0x31, 0x2c, 0x31, + 0x34, 0x32, 0x2c, 0x31, 0x34, 0x33, 0x2c, 0x31, 0x34, 0x34, 0x2c, 0x31, 0x34, 0x35, 0x2c, 0x31, + 0x34, 0x36, 0x2c, 0x31, 0x34, 0x38, 0x2c, 0x31, 0x35, 0x30, 0x2c, 0x31, 0x34, 0x34, 0x2c, 0x31, + 0x34, 0x37, 0x2c, 0x31, 0x34, 0x38, 0x2c, 0x31, 0x34, 0x39, 0x2c, 0x31, 0x35, 0x30, 0x2c, 0x31, + 0x35, 0x32, 0x2c, 0x31, 0x35, 0x34, 0x2c, 0x31, 0x35, 0x31, 0x2c, 0x31, 0x35, 0x33, 0x2c, 0x31, + 0x35, 0x32, 0x2c, 0x31, 0x35, 0x34, 0x2c, 0x31, 0x35, 0x35, 0x2c, 0x31, 0x35, 0x36, 0x2c, 0x31, + 0x35, 0x37, 0x2c, 0x31, 0x35, 0x38, 0x2c, 0x31, 0x36, 0x30, 0x2c, 0x31, 0x35, 0x39, 0x2c, 0x31, + 0x35, 0x36, 0x2c, 0x31, 0x35, 0x38, 0x2c, 0x31, 0x36, 0x30, 0x2c, 0x31, 0x36, 0x31, 0x2c, 0x31, + 0x36, 0x32, 0x2c, 0x31, 0x36, 0x33, 0x2c, 0x31, 0x36, 0x34, 0x2c, 0x31, 0x36, 0x35, 0x2c, 0x31, + 0x36, 0x32, 0x2c, 0x31, 0x36, 0x34, 0x2c, 0x31, 0x36, 0x36, 0x2c, 0x31, 0x36, 0x37, 0x2c, 0x31, + 0x36, 0x38, 0x2c, 0x31, 0x37, 0x30, 0x2c, 0x31, 0x36, 0x39, 0x2c, 0x31, 0x36, 0x38, 0x2c, 0x31, + 0x37, 0x30, 0x2c, 0x31, 0x37, 0x31, 0x2c, 0x31, 0x37, 0x32, 0x2c, 0x31, 0x37, 0x33, 0x2c, 0x31, + 0x37, 0x34, 0x2c, 0x31, 0x37, 0x36, 0x2c, 0x31, 0x37, 0x35, 0x2c, 0x31, 0x37, 0x36, 0x2c, 0x31, + 0x37, 0x34, 0x2c, 0x31, 0x37, 0x36, 0x2c, 0x31, 0x37, 0x37, 0x2c, 0x31, 0x37, 0x38, 0x2c, 0x31, + 0x37, 0x39, 0x2c, 0x31, 0x38, 0x30, 0x2c, 0x31, 0x38, 0x30, 0x2c, 0x31, 0x38, 0x31, 0x2c, 0x31, + 0x38, 0x30, 0x2c, 0x31, 0x38, 0x32, 0x2c, 0x31, 0x38, 0x33, 0x2c, 0x31, 0x38, 0x34, 0x2c, 0x31, + 0x38, 0x36, 0x2c, 0x31, 0x38, 0x35, 0x2c, 0x31, 0x38, 0x37, 0x2c, 0x31, 0x38, 0x34, 0x2c, 0x31, + 0x38, 0x36, 0x2c, 0x31, 0x38, 0x37, 0x2c, 0x31, 0x38, 0x38, 0x2c, 0x31, 0x38, 0x39, 0x2c, 0x31, + 0x39, 0x30, 0x2c, 0x31, 0x39, 0x32, 0x2c, 0x31, 0x39, 0x31, 0x2c, 0x31, 0x39, 0x33, 0x2c, 0x31, + 0x39, 0x30, 0x2c, 0x31, 0x39, 0x32, 0x2c, 0x31, 0x39, 0x34, 0x2c, 0x31, 0x39, 0x35, 0x2c, 0x31, + 0x39, 0x36, 0x2c, 0x31, 0x39, 0x38, 0x2c, 0x31, 0x39, 0x37, 0x2c, 0x31, 0x39, 0x36, 0x2c, 0x31, + 0x39, 0x38, 0x2c, 0x31, 0x39, 0x39, 0x2c, 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30, 0x31, 0x2c, 0x32, + 0x30, 0x32, 0x2c, 0x32, 0x30, 0x34, 0x2c, 0x32, 0x30, 0x33, 0x2c, 0x32, 0x30, 0x35, 0x2c, 0x32, + 0x30, 0x34, 0x2c, 0x32, 0x30, 0x36, 0x2c, 0x32, 0x30, 0x37, 0x2c, 0x32, 0x30, 0x38, 0x2c, 0x32, + 0x30, 0x39, 0x2c, 0x32, 0x33, 0x32, 0x2c, 0x32, 0x33, 0x35, 0x2c, 0x32, 0x33, 0x38, 0x5d, 0x0a, + 0x09, 0x09, 0x20, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x41, 0x47, 0x45, 0x3a, 0x20, 0x5b, + 0x39, 0x39, 0x2e, 0x39, 0x39, 0x36, 0x31, 0x31, 0x35, 0x39, 0x38, 0x30, 0x39, 0x37, 0x37, 0x37, + 0x2c, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x38, 0x38, 0x34, 0x30, 0x31, 0x39, 0x30, 0x32, 0x32, 0x32, + 0x39, 0x39, 0x32, 0x38, 0x31, 0x36, 0x2c, 0x30, 0x2e, 0x30, 0x33, 0x30, 0x37, 0x36, 0x37, 0x34, + 0x32, 0x33, 0x31, 0x37, 0x33, 0x37, 0x31, 0x33, 0x31, 0x33, 0x36, 0x2c, 0x39, 0x39, 0x2e, 0x39, + 0x36, 0x39, 0x32, 0x33, 0x32, 0x35, 0x37, 0x36, 0x38, 0x32, 0x36, 0x32, 0x39, 0x2c, 0x36, 0x2e, + 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x36, 0x35, 0x32, 0x33, 0x34, 0x2c, + 0x39, 0x33, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x34, 0x35, 0x33, 0x34, 0x37, + 0x37, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x31, 0x38, 0x2e, 0x32, 0x31, 0x37, 0x36, 0x32, + 0x36, 0x37, 0x38, 0x35, 0x32, 0x32, 0x38, 0x30, 0x30, 0x36, 0x2c, 0x38, 0x31, 0x2e, 0x37, 0x38, + 0x32, 0x33, 0x37, 0x33, 0x32, 0x31, 0x34, 0x37, 0x37, 0x32, 0x2c, 0x39, 0x38, 0x2e, 0x37, 0x39, + 0x37, 0x32, 0x32, 0x35, 0x39, 0x38, 0x38, 0x38, 0x30, 0x38, 0x33, 0x34, 0x2c, 0x31, 0x2e, 0x32, + 0x30, 0x32, 0x37, 0x37, 0x34, 0x30, 0x31, 0x31, 0x31, 0x39, 0x31, 0x36, 0x36, 0x39, 0x36, 0x2c, + 0x39, 0x39, 0x2e, 0x36, 0x30, 0x38, 0x33, 0x34, 0x35, 0x38, 0x39, 0x30, 0x36, 0x34, 0x39, 0x35, + 0x32, 0x2c, 0x30, 0x2e, 0x33, 0x39, 0x31, 0x36, 0x35, 0x34, 0x31, 0x30, 0x39, 0x33, 0x35, 0x30, + 0x34, 0x37, 0x35, 0x35, 0x2c, 0x39, 0x39, 0x2e, 0x37, 0x33, 0x35, 0x30, 0x35, 0x38, 0x38, 0x39, + 0x38, 0x30, 0x37, 0x39, 0x37, 0x34, 0x2c, 0x30, 0x2e, 0x30, 0x33, 0x39, 0x38, 0x32, 0x32, 0x35, + 0x35, 0x37, 0x33, 0x35, 0x34, 0x35, 0x34, 0x38, 0x30, 0x34, 0x35, 0x2c, 0x30, 0x2e, 0x32, 0x32, + 0x35, 0x31, 0x31, 0x38, 0x35, 0x34, 0x34, 0x35, 0x36, 0x35, 0x37, 0x30, 0x36, 0x31, 0x32, 0x2c, + 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x39, 0x32, 0x2e, 0x33, 0x30, 0x32, 0x32, 0x32, 0x30, 0x39, + 0x39, 0x39, 0x34, 0x30, 0x33, 0x35, 0x34, 0x2c, 0x30, 0x2e, 0x32, 0x33, 0x32, 0x31, 0x35, 0x38, + 0x31, 0x38, 0x34, 0x32, 0x39, 0x30, 0x31, 0x31, 0x31, 0x31, 0x37, 0x2c, 0x37, 0x2e, 0x34, 0x36, + 0x35, 0x36, 0x32, 0x30, 0x38, 0x31, 0x36, 0x33, 0x30, 0x36, 0x33, 0x36, 0x31, 0x35, 0x2c, 0x31, + 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x37, 0x37, 0x2e, 0x39, 0x30, 0x36, 0x34, 0x36, 0x34, 0x31, 0x35, + 0x32, 0x36, 0x34, 0x34, 0x36, 0x36, 0x2c, 0x31, 0x30, 0x2e, 0x33, 0x31, 0x39, 0x34, 0x30, 0x30, + 0x34, 0x37, 0x32, 0x39, 0x30, 0x32, 0x37, 0x36, 0x34, 0x2c, 0x31, 0x31, 0x2e, 0x37, 0x37, 0x34, + 0x31, 0x33, 0x35, 0x33, 0x37, 0x34, 0x34, 0x35, 0x32, 0x35, 0x38, 0x2c, 0x31, 0x30, 0x30, 0x2e, + 0x30, 0x2c, 0x39, 0x31, 0x2e, 0x38, 0x37, 0x31, 0x32, 0x33, 0x32, 0x32, 0x33, 0x33, 0x32, 0x34, + 0x39, 0x35, 0x31, 0x2c, 0x34, 0x2e, 0x38, 0x32, 0x39, 0x38, 0x35, 0x38, 0x38, 0x36, 0x32, 0x31, + 0x39, 0x35, 0x36, 0x31, 0x31, 0x2c, 0x33, 0x2e, 0x32, 0x39, 0x38, 0x39, 0x30, 0x38, 0x39, 0x30, + 0x34, 0x35, 0x35, 0x34, 0x38, 0x37, 0x37, 0x36, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x39, + 0x34, 0x2e, 0x37, 0x33, 0x30, 0x31, 0x30, 0x35, 0x30, 0x34, 0x39, 0x36, 0x39, 0x34, 0x34, 0x39, + 0x2c, 0x30, 0x2e, 0x37, 0x37, 0x31, 0x37, 0x35, 0x34, 0x33, 0x32, 0x34, 0x35, 0x38, 0x39, 0x30, + 0x31, 0x34, 0x35, 0x2c, 0x34, 0x2e, 0x34, 0x37, 0x38, 0x39, 0x35, 0x37, 0x37, 0x37, 0x39, 0x34, + 0x34, 0x33, 0x37, 0x36, 0x39, 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x39, 0x31, 0x38, 0x32, 0x38, 0x34, + 0x36, 0x32, 0x37, 0x32, 0x37, 0x33, 0x31, 0x39, 0x39, 0x37, 0x2c, 0x37, 0x34, 0x2e, 0x37, 0x38, + 0x38, 0x37, 0x37, 0x30, 0x37, 0x38, 0x32, 0x37, 0x37, 0x32, 0x39, 0x36, 0x2c, 0x32, 0x35, 0x2e, + 0x32, 0x31, 0x31, 0x32, 0x32, 0x39, 0x32, 0x31, 0x37, 0x32, 0x32, 0x37, 0x30, 0x33, 0x36, 0x2c, + 0x38, 0x33, 0x2e, 0x38, 0x33, 0x33, 0x33, 0x33, 0x31, 0x33, 0x35, 0x32, 0x38, 0x38, 0x36, 0x33, + 0x2c, 0x31, 0x36, 0x2e, 0x31, 0x34, 0x30, 0x35, 0x33, 0x30, 0x31, 0x33, 0x36, 0x37, 0x37, 0x30, + 0x36, 0x2c, 0x30, 0x2e, 0x30, 0x32, 0x36, 0x31, 0x33, 0x38, 0x35, 0x31, 0x30, 0x33, 0x34, 0x33, + 0x30, 0x38, 0x38, 0x38, 0x32, 0x35, 0x2c, 0x39, 0x32, 0x2e, 0x37, 0x38, 0x35, 0x38, 0x31, 0x37, + 0x37, 0x30, 0x34, 0x36, 0x34, 0x30, 0x36, 0x39, 0x2c, 0x30, 0x2e, 0x31, 0x36, 0x33, 0x31, 0x33, + 0x39, 0x38, 0x39, 0x39, 0x32, 0x36, 0x32, 0x37, 0x38, 0x38, 0x33, 0x35, 0x2c, 0x37, 0x2e, 0x30, + 0x35, 0x31, 0x30, 0x34, 0x32, 0x33, 0x39, 0x36, 0x30, 0x39, 0x36, 0x34, 0x39, 0x38, 0x35, 0x2c, + 0x39, 0x36, 0x2e, 0x36, 0x35, 0x38, 0x31, 0x30, 0x37, 0x38, 0x38, 0x30, 0x33, 0x36, 0x33, 0x32, + 0x33, 0x2c, 0x30, 0x2e, 0x36, 0x37, 0x38, 0x33, 0x34, 0x31, 0x36, 0x34, 0x34, 0x32, 0x37, 0x39, + 0x32, 0x37, 0x35, 0x39, 0x2c, 0x30, 0x2e, 0x31, 0x34, 0x35, 0x36, 0x34, 0x38, 0x30, 0x37, 0x31, + 0x39, 0x35, 0x38, 0x38, 0x35, 0x32, 0x35, 0x2c, 0x32, 0x2e, 0x32, 0x39, 0x30, 0x30, 0x35, 0x33, + 0x36, 0x33, 0x32, 0x38, 0x35, 0x31, 0x33, 0x34, 0x31, 0x2c, 0x30, 0x2e, 0x30, 0x30, 0x33, 0x38, + 0x30, 0x30, 0x32, 0x33, 0x33, 0x33, 0x30, 0x31, 0x33, 0x33, 0x38, 0x35, 0x32, 0x36, 0x37, 0x2c, + 0x30, 0x2e, 0x32, 0x32, 0x34, 0x30, 0x34, 0x38, 0x35, 0x33, 0x37, 0x32, 0x34, 0x35, 0x39, 0x34, + 0x31, 0x38, 0x37, 0x2c, 0x39, 0x39, 0x2e, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, + 0x39, 0x39, 0x39, 0x39, 0x39, 0x2c, 0x37, 0x2e, 0x39, 0x32, 0x38, 0x34, 0x38, 0x38, 0x31, 0x34, + 0x36, 0x32, 0x30, 0x35, 0x30, 0x38, 0x35, 0x2c, 0x37, 0x2e, 0x33, 0x30, 0x36, 0x36, 0x34, 0x35, + 0x39, 0x33, 0x38, 0x34, 0x34, 0x37, 0x39, 0x31, 0x2c, 0x37, 0x33, 0x2e, 0x38, 0x30, 0x39, 0x39, + 0x36, 0x36, 0x33, 0x37, 0x33, 0x31, 0x32, 0x31, 0x32, 0x33, 0x2c, 0x35, 0x2e, 0x35, 0x34, 0x37, + 0x35, 0x37, 0x35, 0x39, 0x39, 0x38, 0x33, 0x33, 0x35, 0x30, 0x35, 0x36, 0x35, 0x2c, 0x35, 0x2e, + 0x34, 0x30, 0x37, 0x33, 0x32, 0x33, 0x35, 0x34, 0x33, 0x38, 0x39, 0x30, 0x37, 0x31, 0x35, 0x2c, + 0x30, 0x2e, 0x32, 0x33, 0x39, 0x33, 0x38, 0x31, 0x37, 0x31, 0x31, 0x32, 0x33, 0x34, 0x31, 0x39, + 0x32, 0x33, 0x36, 0x2c, 0x39, 0x39, 0x2e, 0x37, 0x36, 0x30, 0x36, 0x31, 0x38, 0x32, 0x38, 0x38, + 0x37, 0x36, 0x35, 0x38, 0x31, 0x2c, 0x34, 0x2e, 0x31, 0x36, 0x36, 0x33, 0x32, 0x34, 0x39, 0x36, + 0x34, 0x35, 0x36, 0x34, 0x34, 0x33, 0x33, 0x2c, 0x38, 0x33, 0x2e, 0x37, 0x36, 0x35, 0x38, 0x33, + 0x30, 0x35, 0x37, 0x30, 0x35, 0x31, 0x35, 0x38, 0x36, 0x2c, 0x39, 0x2e, 0x36, 0x32, 0x34, 0x32, + 0x38, 0x33, 0x38, 0x38, 0x39, 0x39, 0x32, 0x38, 0x35, 0x35, 0x2c, 0x32, 0x2e, 0x34, 0x34, 0x33, + 0x35, 0x36, 0x30, 0x35, 0x37, 0x34, 0x39, 0x39, 0x31, 0x31, 0x36, 0x32, 0x2c, 0x31, 0x30, 0x30, + 0x2e, 0x30, 0x2c, 0x35, 0x2e, 0x36, 0x34, 0x39, 0x33, 0x31, 0x39, 0x35, 0x30, 0x34, 0x30, 0x34, + 0x32, 0x32, 0x31, 0x35, 0x2c, 0x39, 0x31, 0x2e, 0x38, 0x39, 0x34, 0x32, 0x34, 0x37, 0x33, 0x37, + 0x31, 0x33, 0x38, 0x39, 0x33, 0x33, 0x2c, 0x32, 0x2e, 0x31, 0x36, 0x34, 0x30, 0x35, 0x33, 0x38, + 0x34, 0x32, 0x32, 0x39, 0x30, 0x36, 0x39, 0x31, 0x34, 0x2c, 0x30, 0x2e, 0x32, 0x39, 0x32, 0x33, + 0x37, 0x39, 0x32, 0x38, 0x32, 0x32, 0x37, 0x37, 0x37, 0x37, 0x32, 0x31, 0x36, 0x2c, 0x31, 0x30, + 0x30, 0x2e, 0x30, 0x2c, 0x36, 0x37, 0x2e, 0x31, 0x35, 0x33, 0x39, 0x34, 0x37, 0x36, 0x31, 0x37, + 0x34, 0x37, 0x36, 0x33, 0x36, 0x2c, 0x32, 0x36, 0x2e, 0x38, 0x33, 0x31, 0x30, 0x37, 0x33, 0x34, + 0x33, 0x33, 0x30, 0x39, 0x35, 0x33, 0x36, 0x2c, 0x31, 0x2e, 0x31, 0x38, 0x32, 0x30, 0x35, 0x37, + 0x38, 0x34, 0x36, 0x32, 0x37, 0x34, 0x30, 0x36, 0x31, 0x39, 0x2c, 0x33, 0x2e, 0x38, 0x32, 0x35, + 0x36, 0x38, 0x31, 0x32, 0x31, 0x39, 0x38, 0x34, 0x30, 0x38, 0x31, 0x34, 0x38, 0x2c, 0x31, 0x2e, + 0x30, 0x30, 0x37, 0x32, 0x33, 0x39, 0x38, 0x38, 0x33, 0x33, 0x31, 0x33, 0x34, 0x32, 0x31, 0x2c, + 0x36, 0x38, 0x2e, 0x34, 0x36, 0x30, 0x33, 0x35, 0x33, 0x38, 0x39, 0x34, 0x34, 0x36, 0x38, 0x34, + 0x31, 0x2c, 0x33, 0x31, 0x2e, 0x35, 0x33, 0x39, 0x36, 0x34, 0x36, 0x31, 0x30, 0x35, 0x35, 0x33, + 0x31, 0x36, 0x30, 0x32, 0x2c, 0x34, 0x37, 0x2e, 0x35, 0x32, 0x30, 0x38, 0x33, 0x31, 0x36, 0x31, + 0x35, 0x33, 0x35, 0x32, 0x30, 0x39, 0x34, 0x2c, 0x32, 0x38, 0x2e, 0x31, 0x35, 0x38, 0x39, 0x32, + 0x31, 0x33, 0x35, 0x32, 0x31, 0x37, 0x30, 0x31, 0x38, 0x36, 0x2c, 0x34, 0x2e, 0x31, 0x38, 0x35, + 0x31, 0x38, 0x30, 0x33, 0x38, 0x33, 0x34, 0x32, 0x38, 0x39, 0x32, 0x2c, 0x31, 0x39, 0x2e, 0x34, + 0x37, 0x35, 0x30, 0x35, 0x35, 0x30, 0x39, 0x38, 0x38, 0x34, 0x35, 0x31, 0x33, 0x32, 0x2c, 0x30, + 0x2e, 0x36, 0x36, 0x30, 0x30, 0x31, 0x31, 0x35, 0x35, 0x30, 0x32, 0x30, 0x33, 0x36, 0x36, 0x32, + 0x31, 0x2c, 0x35, 0x39, 0x2e, 0x34, 0x32, 0x32, 0x32, 0x31, 0x38, 0x37, 0x34, 0x33, 0x30, 0x39, + 0x33, 0x36, 0x32, 0x2c, 0x34, 0x30, 0x2e, 0x35, 0x37, 0x37, 0x37, 0x38, 0x31, 0x32, 0x35, 0x36, + 0x39, 0x30, 0x36, 0x33, 0x38, 0x34, 0x2c, 0x32, 0x30, 0x2e, 0x34, 0x34, 0x33, 0x32, 0x33, 0x37, + 0x32, 0x36, 0x36, 0x33, 0x35, 0x30, 0x34, 0x34, 0x2c, 0x32, 0x37, 0x2e, 0x34, 0x33, 0x30, 0x37, + 0x31, 0x34, 0x31, 0x33, 0x31, 0x32, 0x35, 0x34, 0x30, 0x36, 0x37, 0x2c, 0x37, 0x2e, 0x37, 0x32, + 0x30, 0x35, 0x39, 0x37, 0x30, 0x37, 0x32, 0x35, 0x30, 0x35, 0x31, 0x37, 0x38, 0x2c, 0x33, 0x36, + 0x2e, 0x36, 0x34, 0x31, 0x35, 0x38, 0x38, 0x33, 0x34, 0x36, 0x39, 0x30, 0x37, 0x38, 0x2c, 0x37, + 0x2e, 0x37, 0x36, 0x33, 0x38, 0x36, 0x33, 0x31, 0x38, 0x32, 0x39, 0x38, 0x32, 0x35, 0x30, 0x35, + 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x38, 0x33, 0x32, 0x36, 0x36, 0x39, 0x31, + 0x33, 0x35, 0x39, 0x34, 0x34, 0x31, 0x38, 0x33, 0x31, 0x2c, 0x39, 0x2e, 0x30, 0x30, 0x37, 0x38, + 0x32, 0x39, 0x37, 0x31, 0x35, 0x32, 0x38, 0x30, 0x36, 0x33, 0x32, 0x2c, 0x37, 0x2e, 0x34, 0x33, + 0x36, 0x38, 0x32, 0x33, 0x31, 0x30, 0x34, 0x37, 0x32, 0x37, 0x32, 0x39, 0x38, 0x2c, 0x32, 0x33, + 0x2e, 0x34, 0x30, 0x34, 0x37, 0x35, 0x34, 0x30, 0x39, 0x30, 0x36, 0x30, 0x38, 0x33, 0x39, 0x36, + 0x2c, 0x35, 0x30, 0x2e, 0x32, 0x36, 0x30, 0x32, 0x30, 0x39, 0x31, 0x30, 0x35, 0x30, 0x32, 0x39, + 0x36, 0x32, 0x34, 0x2c, 0x39, 0x2e, 0x30, 0x35, 0x37, 0x37, 0x31, 0x34, 0x38, 0x34, 0x38, 0x34, + 0x30, 0x39, 0x38, 0x36, 0x2c, 0x35, 0x30, 0x2e, 0x30, 0x37, 0x35, 0x30, 0x31, 0x33, 0x31, 0x32, + 0x36, 0x32, 0x39, 0x34, 0x32, 0x39, 0x34, 0x2c, 0x34, 0x39, 0x2e, 0x39, 0x32, 0x34, 0x39, 0x38, + 0x36, 0x38, 0x37, 0x33, 0x37, 0x30, 0x35, 0x37, 0x2c, 0x30, 0x2e, 0x33, 0x33, 0x32, 0x38, 0x37, + 0x35, 0x39, 0x38, 0x34, 0x34, 0x39, 0x30, 0x32, 0x33, 0x31, 0x32, 0x2c, 0x32, 0x2e, 0x32, 0x31, + 0x39, 0x31, 0x37, 0x33, 0x32, 0x32, 0x39, 0x39, 0x30, 0x38, 0x39, 0x30, 0x38, 0x2c, 0x31, 0x31, + 0x2e, 0x33, 0x39, 0x30, 0x37, 0x36, 0x30, 0x31, 0x33, 0x31, 0x30, 0x30, 0x37, 0x32, 0x33, 0x34, + 0x2c, 0x31, 0x31, 0x2e, 0x34, 0x32, 0x33, 0x34, 0x30, 0x37, 0x35, 0x38, 0x32, 0x38, 0x37, 0x36, + 0x35, 0x31, 0x2c, 0x35, 0x36, 0x2e, 0x39, 0x39, 0x38, 0x36, 0x31, 0x30, 0x38, 0x38, 0x32, 0x39, + 0x32, 0x34, 0x30, 0x32, 0x2c, 0x31, 0x37, 0x2e, 0x36, 0x33, 0x35, 0x31, 0x37, 0x32, 0x31, 0x38, + 0x38, 0x37, 0x39, 0x33, 0x30, 0x39, 0x2c, 0x37, 0x30, 0x2e, 0x33, 0x33, 0x33, 0x30, 0x38, 0x30, + 0x31, 0x34, 0x33, 0x30, 0x30, 0x30, 0x30, 0x35, 0x2c, 0x32, 0x39, 0x2e, 0x36, 0x36, 0x36, 0x39, + 0x31, 0x39, 0x38, 0x35, 0x36, 0x39, 0x39, 0x39, 0x39, 0x36, 0x2c, 0x30, 0x2e, 0x35, 0x33, 0x35, + 0x39, 0x34, 0x35, 0x36, 0x35, 0x39, 0x34, 0x32, 0x37, 0x39, 0x33, 0x35, 0x2c, 0x39, 0x2e, 0x37, + 0x30, 0x37, 0x38, 0x38, 0x30, 0x31, 0x36, 0x38, 0x30, 0x34, 0x38, 0x34, 0x36, 0x33, 0x2c, 0x36, + 0x2e, 0x38, 0x33, 0x31, 0x38, 0x33, 0x34, 0x37, 0x37, 0x39, 0x35, 0x34, 0x30, 0x36, 0x31, 0x39, + 0x2c, 0x38, 0x32, 0x2e, 0x39, 0x32, 0x34, 0x33, 0x33, 0x39, 0x33, 0x39, 0x32, 0x39, 0x38, 0x32, + 0x39, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x35, 0x30, 0x2e, 0x37, 0x33, 0x32, 0x31, + 0x38, 0x38, 0x38, 0x38, 0x39, 0x31, 0x35, 0x35, 0x31, 0x35, 0x34, 0x2c, 0x31, 0x31, 0x2e, 0x31, + 0x38, 0x33, 0x34, 0x32, 0x36, 0x30, 0x36, 0x32, 0x38, 0x34, 0x37, 0x32, 0x2c, 0x31, 0x37, 0x2e, + 0x32, 0x38, 0x36, 0x35, 0x32, 0x33, 0x36, 0x32, 0x30, 0x38, 0x34, 0x34, 0x34, 0x36, 0x33, 0x2c, + 0x31, 0x37, 0x2e, 0x38, 0x35, 0x33, 0x32, 0x36, 0x31, 0x35, 0x38, 0x36, 0x38, 0x32, 0x34, 0x30, + 0x39, 0x33, 0x2c, 0x32, 0x2e, 0x39, 0x34, 0x34, 0x35, 0x39, 0x39, 0x38, 0x34, 0x30, 0x33, 0x32, + 0x39, 0x30, 0x37, 0x38, 0x35, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x31, 0x33, 0x2e, 0x39, + 0x30, 0x32, 0x37, 0x38, 0x36, 0x36, 0x38, 0x33, 0x38, 0x39, 0x32, 0x32, 0x32, 0x2c, 0x38, 0x2e, + 0x39, 0x34, 0x35, 0x33, 0x32, 0x34, 0x31, 0x34, 0x36, 0x35, 0x39, 0x37, 0x38, 0x38, 0x33, 0x2c, + 0x31, 0x35, 0x2e, 0x36, 0x37, 0x35, 0x33, 0x35, 0x31, 0x31, 0x34, 0x33, 0x30, 0x35, 0x37, 0x30, + 0x33, 0x32, 0x2c, 0x31, 0x36, 0x2e, 0x36, 0x36, 0x33, 0x37, 0x33, 0x39, 0x36, 0x32, 0x30, 0x35, + 0x34, 0x33, 0x34, 0x37, 0x34, 0x2c, 0x39, 0x2e, 0x37, 0x30, 0x36, 0x32, 0x31, 0x39, 0x39, 0x30, + 0x34, 0x33, 0x30, 0x33, 0x31, 0x33, 0x33, 0x2c, 0x32, 0x34, 0x2e, 0x38, 0x39, 0x35, 0x39, 0x35, + 0x33, 0x37, 0x33, 0x33, 0x37, 0x31, 0x37, 0x33, 0x32, 0x2c, 0x31, 0x30, 0x2e, 0x32, 0x31, 0x30, + 0x36, 0x32, 0x34, 0x37, 0x36, 0x37, 0x38, 0x38, 0x38, 0x39, 0x34, 0x35, 0x2c, 0x35, 0x2e, 0x32, + 0x37, 0x35, 0x31, 0x30, 0x35, 0x38, 0x37, 0x33, 0x39, 0x34, 0x37, 0x30, 0x31, 0x38, 0x2c, 0x31, + 0x2e, 0x37, 0x39, 0x35, 0x30, 0x30, 0x31, 0x33, 0x30, 0x34, 0x33, 0x32, 0x35, 0x38, 0x31, 0x36, + 0x32, 0x2c, 0x31, 0x32, 0x2e, 0x34, 0x37, 0x33, 0x34, 0x32, 0x37, 0x34, 0x33, 0x31, 0x30, 0x37, + 0x38, 0x35, 0x35, 0x37, 0x2c, 0x31, 0x32, 0x2e, 0x34, 0x33, 0x32, 0x39, 0x30, 0x39, 0x34, 0x36, + 0x37, 0x32, 0x34, 0x31, 0x38, 0x30, 0x31, 0x2c, 0x31, 0x37, 0x2e, 0x30, 0x34, 0x31, 0x39, 0x36, + 0x36, 0x36, 0x31, 0x39, 0x37, 0x31, 0x38, 0x35, 0x38, 0x2c, 0x33, 0x31, 0x2e, 0x38, 0x31, 0x37, + 0x31, 0x34, 0x37, 0x34, 0x32, 0x34, 0x38, 0x36, 0x30, 0x31, 0x37, 0x34, 0x2c, 0x31, 0x39, 0x2e, + 0x31, 0x36, 0x34, 0x34, 0x34, 0x31, 0x38, 0x37, 0x38, 0x38, 0x32, 0x38, 0x30, 0x35, 0x2c, 0x31, + 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x39, 0x38, 0x31, 0x30, 0x30, 0x38, 0x31, 0x30, 0x33, + 0x38, 0x31, 0x33, 0x36, 0x32, 0x36, 0x36, 0x2c, 0x31, 0x30, 0x2e, 0x38, 0x36, 0x35, 0x39, 0x35, + 0x35, 0x31, 0x38, 0x35, 0x36, 0x38, 0x32, 0x31, 0x30, 0x37, 0x2c, 0x32, 0x32, 0x2e, 0x30, 0x31, + 0x33, 0x35, 0x32, 0x32, 0x39, 0x33, 0x38, 0x38, 0x31, 0x36, 0x36, 0x36, 0x34, 0x2c, 0x32, 0x37, + 0x2e, 0x32, 0x31, 0x30, 0x35, 0x35, 0x34, 0x38, 0x36, 0x36, 0x33, 0x31, 0x31, 0x37, 0x33, 0x35, + 0x2c, 0x32, 0x36, 0x2e, 0x38, 0x32, 0x37, 0x32, 0x32, 0x39, 0x36, 0x35, 0x31, 0x39, 0x30, 0x33, + 0x36, 0x37, 0x35, 0x2c, 0x31, 0x32, 0x2e, 0x31, 0x30, 0x31, 0x37, 0x32, 0x39, 0x32, 0x35, 0x33, + 0x34, 0x37, 0x32, 0x31, 0x38, 0x38, 0x2c, 0x35, 0x31, 0x2e, 0x33, 0x37, 0x34, 0x32, 0x33, 0x39, + 0x31, 0x35, 0x39, 0x30, 0x35, 0x35, 0x36, 0x35, 0x35, 0x2c, 0x34, 0x38, 0x2e, 0x36, 0x32, 0x35, + 0x37, 0x36, 0x30, 0x38, 0x34, 0x30, 0x39, 0x34, 0x34, 0x33, 0x35, 0x2c, 0x31, 0x2e, 0x31, 0x39, + 0x37, 0x31, 0x36, 0x35, 0x32, 0x30, 0x33, 0x31, 0x36, 0x37, 0x34, 0x33, 0x33, 0x38, 0x2c, 0x30, + 0x2e, 0x38, 0x35, 0x33, 0x38, 0x32, 0x37, 0x32, 0x35, 0x38, 0x31, 0x31, 0x34, 0x35, 0x35, 0x31, + 0x34, 0x2c, 0x31, 0x32, 0x2e, 0x32, 0x33, 0x37, 0x30, 0x36, 0x31, 0x32, 0x39, 0x38, 0x33, 0x33, + 0x36, 0x33, 0x39, 0x36, 0x2c, 0x31, 0x32, 0x2e, 0x35, 0x39, 0x39, 0x30, 0x33, 0x34, 0x33, 0x36, + 0x32, 0x32, 0x35, 0x30, 0x30, 0x38, 0x37, 0x2c, 0x32, 0x34, 0x2e, 0x30, 0x33, 0x33, 0x36, 0x35, + 0x36, 0x31, 0x35, 0x33, 0x30, 0x38, 0x33, 0x33, 0x31, 0x37, 0x2c, 0x31, 0x32, 0x2e, 0x32, 0x35, + 0x31, 0x37, 0x34, 0x33, 0x35, 0x31, 0x33, 0x30, 0x36, 0x37, 0x37, 0x33, 0x39, 0x2c, 0x32, 0x39, + 0x2e, 0x30, 0x39, 0x37, 0x38, 0x39, 0x30, 0x38, 0x34, 0x33, 0x35, 0x38, 0x37, 0x34, 0x31, 0x38, + 0x2c, 0x37, 0x2e, 0x37, 0x32, 0x39, 0x36, 0x32, 0x31, 0x33, 0x36, 0x38, 0x33, 0x39, 0x33, 0x30, + 0x35, 0x33, 0x2c, 0x34, 0x2e, 0x34, 0x31, 0x39, 0x36, 0x37, 0x33, 0x34, 0x31, 0x33, 0x34, 0x35, + 0x35, 0x36, 0x35, 0x38, 0x2c, 0x39, 0x35, 0x2e, 0x35, 0x38, 0x30, 0x33, 0x32, 0x36, 0x35, 0x38, + 0x36, 0x35, 0x34, 0x34, 0x33, 0x34, 0x2c, 0x30, 0x2e, 0x39, 0x31, 0x33, 0x39, 0x35, 0x37, 0x34, + 0x33, 0x35, 0x36, 0x38, 0x37, 0x32, 0x34, 0x32, 0x32, 0x2c, 0x30, 0x2e, 0x36, 0x33, 0x37, 0x39, + 0x30, 0x34, 0x39, 0x38, 0x35, 0x37, 0x33, 0x38, 0x31, 0x31, 0x34, 0x32, 0x2c, 0x30, 0x2e, 0x33, + 0x32, 0x31, 0x37, 0x35, 0x30, 0x33, 0x32, 0x31, 0x37, 0x35, 0x30, 0x35, 0x31, 0x33, 0x35, 0x35, + 0x2c, 0x31, 0x34, 0x2e, 0x31, 0x37, 0x31, 0x39, 0x33, 0x35, 0x39, 0x31, 0x31, 0x31, 0x30, 0x32, + 0x34, 0x32, 0x33, 0x2c, 0x37, 0x2e, 0x35, 0x35, 0x36, 0x32, 0x33, 0x36, 0x33, 0x36, 0x30, 0x36, + 0x35, 0x34, 0x31, 0x2c, 0x32, 0x34, 0x2e, 0x30, 0x31, 0x37, 0x39, 0x36, 0x32, 0x30, 0x36, 0x31, + 0x35, 0x32, 0x31, 0x34, 0x33, 0x34, 0x2c, 0x38, 0x2e, 0x35, 0x37, 0x33, 0x32, 0x34, 0x37, 0x31, + 0x36, 0x30, 0x30, 0x30, 0x38, 0x33, 0x30, 0x34, 0x2c, 0x33, 0x33, 0x2e, 0x30, 0x31, 0x34, 0x33, + 0x38, 0x30, 0x38, 0x34, 0x30, 0x33, 0x33, 0x39, 0x34, 0x34, 0x2c, 0x34, 0x2e, 0x37, 0x35, 0x30, + 0x32, 0x34, 0x37, 0x31, 0x34, 0x31, 0x36, 0x30, 0x35, 0x30, 0x38, 0x31, 0x2c, 0x36, 0x2e, 0x30, + 0x34, 0x32, 0x33, 0x37, 0x37, 0x37, 0x38, 0x31, 0x35, 0x39, 0x33, 0x33, 0x35, 0x36, 0x2c, 0x35, + 0x36, 0x2e, 0x37, 0x38, 0x36, 0x36, 0x36, 0x30, 0x30, 0x32, 0x34, 0x34, 0x34, 0x38, 0x34, 0x35, + 0x2c, 0x34, 0x33, 0x2e, 0x32, 0x31, 0x33, 0x33, 0x33, 0x39, 0x39, 0x37, 0x35, 0x35, 0x35, 0x31, + 0x35, 0x35, 0x2c, 0x30, 0x2e, 0x30, 0x39, 0x39, 0x39, 0x38, 0x32, 0x33, 0x33, 0x36, 0x34, 0x35, + 0x35, 0x35, 0x37, 0x39, 0x31, 0x38, 0x2c, 0x32, 0x2e, 0x34, 0x38, 0x30, 0x32, 0x32, 0x38, 0x34, + 0x39, 0x32, 0x39, 0x34, 0x32, 0x33, 0x36, 0x37, 0x2c, 0x30, 0x2e, 0x38, 0x38, 0x31, 0x33, 0x34, + 0x34, 0x32, 0x39, 0x35, 0x38, 0x34, 0x34, 0x39, 0x38, 0x30, 0x33, 0x2c, 0x34, 0x2e, 0x36, 0x36, + 0x39, 0x38, 0x34, 0x31, 0x36, 0x36, 0x31, 0x32, 0x37, 0x30, 0x38, 0x38, 0x33, 0x2c, 0x36, 0x2e, + 0x39, 0x37, 0x37, 0x39, 0x33, 0x33, 0x38, 0x39, 0x38, 0x36, 0x31, 0x34, 0x33, 0x38, 0x31, 0x2c, + 0x31, 0x38, 0x2e, 0x36, 0x36, 0x35, 0x37, 0x30, 0x32, 0x33, 0x39, 0x32, 0x34, 0x38, 0x35, 0x37, + 0x30, 0x36, 0x2c, 0x33, 0x31, 0x2e, 0x37, 0x38, 0x31, 0x30, 0x35, 0x32, 0x30, 0x31, 0x34, 0x32, + 0x39, 0x30, 0x37, 0x36, 0x2c, 0x33, 0x34, 0x2e, 0x34, 0x34, 0x33, 0x39, 0x31, 0x34, 0x39, 0x30, + 0x38, 0x30, 0x39, 0x35, 0x33, 0x35, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x31, + 0x32, 0x31, 0x31, 0x31, 0x31, 0x33, 0x32, 0x31, 0x39, 0x35, 0x34, 0x35, 0x38, 0x38, 0x35, 0x33, + 0x2c, 0x30, 0x2e, 0x31, 0x30, 0x35, 0x34, 0x38, 0x34, 0x30, 0x35, 0x34, 0x36, 0x30, 0x37, 0x32, + 0x35, 0x32, 0x35, 0x33, 0x2c, 0x32, 0x2e, 0x31, 0x32, 0x35, 0x33, 0x30, 0x38, 0x33, 0x35, 0x39, + 0x34, 0x37, 0x32, 0x30, 0x31, 0x31, 0x32, 0x2c, 0x32, 0x36, 0x2e, 0x38, 0x31, 0x38, 0x39, 0x30, + 0x32, 0x32, 0x39, 0x36, 0x31, 0x31, 0x35, 0x31, 0x31, 0x36, 0x2c, 0x34, 0x2e, 0x33, 0x33, 0x35, + 0x31, 0x37, 0x31, 0x33, 0x39, 0x37, 0x36, 0x35, 0x32, 0x32, 0x31, 0x36, 0x2c, 0x32, 0x31, 0x2e, + 0x35, 0x36, 0x38, 0x34, 0x31, 0x39, 0x35, 0x32, 0x35, 0x31, 0x30, 0x31, 0x37, 0x2c, 0x32, 0x36, + 0x2e, 0x37, 0x30, 0x35, 0x38, 0x38, 0x33, 0x36, 0x36, 0x36, 0x32, 0x38, 0x39, 0x37, 0x34, 0x33, + 0x2c, 0x39, 0x2e, 0x39, 0x38, 0x34, 0x31, 0x34, 0x39, 0x34, 0x38, 0x35, 0x38, 0x33, 0x34, 0x32, + 0x33, 0x32, 0x2c, 0x38, 0x2e, 0x32, 0x33, 0x35, 0x35, 0x36, 0x39, 0x38, 0x39, 0x32, 0x39, 0x37, + 0x33, 0x31, 0x34, 0x34, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x31, 0x30, 0x35, + 0x36, 0x37, 0x34, 0x33, 0x38, 0x39, 0x35, 0x36, 0x39, 0x31, 0x33, 0x37, 0x36, 0x32, 0x2c, 0x30, + 0x2e, 0x31, 0x30, 0x37, 0x33, 0x30, 0x30, 0x31, 0x34, 0x39, 0x34, 0x30, 0x38, 0x36, 0x36, 0x32, + 0x38, 0x2c, 0x32, 0x2e, 0x33, 0x35, 0x32, 0x37, 0x39, 0x39, 0x36, 0x33, 0x39, 0x37, 0x32, 0x32, + 0x38, 0x37, 0x36, 0x2c, 0x36, 0x2e, 0x34, 0x37, 0x34, 0x35, 0x38, 0x38, 0x35, 0x36, 0x30, 0x35, + 0x32, 0x33, 0x33, 0x30, 0x31, 0x2c, 0x37, 0x2e, 0x37, 0x36, 0x30, 0x37, 0x32, 0x37, 0x31, 0x37, + 0x30, 0x30, 0x35, 0x37, 0x31, 0x37, 0x36, 0x35, 0x2c, 0x31, 0x31, 0x2e, 0x31, 0x38, 0x31, 0x30, + 0x30, 0x30, 0x37, 0x31, 0x39, 0x38, 0x38, 0x32, 0x38, 0x38, 0x2c, 0x37, 0x32, 0x2e, 0x30, 0x31, + 0x37, 0x39, 0x30, 0x39, 0x33, 0x37, 0x30, 0x38, 0x33, 0x35, 0x39, 0x38, 0x2c, 0x30, 0x2e, 0x30, + 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x31, 0x36, 0x34, 0x39, 0x36, 0x30, 0x34, + 0x35, 0x38, 0x30, 0x31, 0x30, 0x34, 0x37, 0x37, 0x38, 0x35, 0x2c, 0x30, 0x2e, 0x32, 0x35, 0x31, + 0x30, 0x37, 0x39, 0x35, 0x32, 0x30, 0x36, 0x35, 0x36, 0x30, 0x39, 0x38, 0x38, 0x34, 0x2c, 0x38, + 0x38, 0x2e, 0x33, 0x30, 0x32, 0x33, 0x36, 0x32, 0x38, 0x31, 0x35, 0x39, 0x30, 0x31, 0x37, 0x34, + 0x2c, 0x31, 0x31, 0x2e, 0x32, 0x38, 0x31, 0x35, 0x39, 0x37, 0x32, 0x30, 0x35, 0x34, 0x33, 0x31, + 0x36, 0x38, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x31, 0x37, 0x2e, 0x34, 0x31, 0x35, + 0x32, 0x36, 0x35, 0x30, 0x33, 0x35, 0x36, 0x34, 0x38, 0x31, 0x37, 0x32, 0x2c, 0x37, 0x2e, 0x38, + 0x31, 0x39, 0x39, 0x33, 0x32, 0x38, 0x39, 0x31, 0x35, 0x31, 0x31, 0x38, 0x33, 0x37, 0x2c, 0x31, + 0x35, 0x2e, 0x35, 0x31, 0x39, 0x38, 0x37, 0x37, 0x36, 0x37, 0x35, 0x36, 0x37, 0x32, 0x30, 0x35, + 0x33, 0x2c, 0x35, 0x2e, 0x37, 0x37, 0x33, 0x37, 0x36, 0x34, 0x30, 0x31, 0x36, 0x32, 0x38, 0x32, + 0x38, 0x30, 0x39, 0x2c, 0x31, 0x31, 0x2e, 0x33, 0x39, 0x34, 0x36, 0x32, 0x32, 0x38, 0x33, 0x33, + 0x37, 0x30, 0x31, 0x37, 0x32, 0x36, 0x2c, 0x33, 0x2e, 0x38, 0x35, 0x30, 0x32, 0x33, 0x37, 0x38, + 0x35, 0x32, 0x35, 0x33, 0x31, 0x34, 0x38, 0x30, 0x34, 0x2c, 0x33, 0x38, 0x2e, 0x32, 0x32, 0x36, + 0x32, 0x39, 0x39, 0x36, 0x39, 0x34, 0x36, 0x35, 0x31, 0x39, 0x33, 0x35, 0x2c, 0x32, 0x2e, 0x38, + 0x36, 0x38, 0x32, 0x34, 0x30, 0x32, 0x31, 0x35, 0x31, 0x35, 0x31, 0x35, 0x32, 0x38, 0x33, 0x2c, + 0x31, 0x35, 0x2e, 0x30, 0x30, 0x35, 0x39, 0x37, 0x35, 0x35, 0x30, 0x30, 0x31, 0x34, 0x31, 0x30, + 0x38, 0x35, 0x2c, 0x31, 0x31, 0x2e, 0x30, 0x35, 0x34, 0x36, 0x37, 0x35, 0x38, 0x32, 0x39, 0x35, + 0x35, 0x31, 0x37, 0x36, 0x36, 0x2c, 0x31, 0x33, 0x2e, 0x37, 0x32, 0x36, 0x32, 0x32, 0x32, 0x34, + 0x38, 0x38, 0x30, 0x37, 0x39, 0x38, 0x35, 0x32, 0x2c, 0x37, 0x2e, 0x34, 0x36, 0x39, 0x33, 0x37, + 0x35, 0x35, 0x36, 0x30, 0x32, 0x30, 0x33, 0x33, 0x33, 0x2c, 0x32, 0x36, 0x2e, 0x38, 0x36, 0x39, + 0x38, 0x33, 0x33, 0x36, 0x38, 0x31, 0x36, 0x31, 0x33, 0x34, 0x33, 0x32, 0x2c, 0x32, 0x33, 0x2e, + 0x30, 0x30, 0x35, 0x36, 0x37, 0x36, 0x37, 0x32, 0x35, 0x32, 0x35, 0x39, 0x30, 0x30, 0x38, 0x2c, + 0x34, 0x37, 0x2e, 0x34, 0x38, 0x39, 0x30, 0x33, 0x32, 0x36, 0x37, 0x31, 0x35, 0x39, 0x38, 0x37, + 0x34, 0x2c, 0x35, 0x32, 0x2e, 0x35, 0x31, 0x30, 0x39, 0x36, 0x37, 0x33, 0x32, 0x38, 0x34, 0x30, + 0x31, 0x32, 0x35, 0x2c, 0x30, 0x2e, 0x31, 0x38, 0x37, 0x39, 0x36, 0x32, 0x36, 0x31, 0x39, 0x34, + 0x36, 0x34, 0x32, 0x39, 0x35, 0x32, 0x2c, 0x32, 0x2e, 0x31, 0x32, 0x31, 0x39, 0x39, 0x39, 0x30, + 0x34, 0x36, 0x30, 0x38, 0x37, 0x33, 0x30, 0x38, 0x2c, 0x31, 0x34, 0x2e, 0x35, 0x39, 0x34, 0x34, + 0x38, 0x34, 0x37, 0x38, 0x31, 0x30, 0x34, 0x39, 0x35, 0x32, 0x2c, 0x32, 0x30, 0x2e, 0x32, 0x38, + 0x33, 0x30, 0x30, 0x33, 0x38, 0x36, 0x38, 0x38, 0x35, 0x34, 0x37, 0x33, 0x2c, 0x31, 0x35, 0x2e, + 0x36, 0x31, 0x34, 0x38, 0x35, 0x33, 0x32, 0x38, 0x36, 0x35, 0x33, 0x39, 0x36, 0x32, 0x38, 0x2c, + 0x32, 0x34, 0x2e, 0x39, 0x35, 0x33, 0x30, 0x39, 0x37, 0x36, 0x37, 0x33, 0x34, 0x39, 0x33, 0x31, + 0x37, 0x2c, 0x32, 0x32, 0x2e, 0x32, 0x34, 0x34, 0x35, 0x39, 0x38, 0x37, 0x32, 0x34, 0x35, 0x31, + 0x31, 0x33, 0x35, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x30, 0x34, 0x37, 0x34, + 0x38, 0x30, 0x32, 0x30, 0x31, 0x33, 0x36, 0x34, 0x36, 0x30, 0x38, 0x33, 0x38, 0x35, 0x2c, 0x30, + 0x2e, 0x30, 0x39, 0x36, 0x31, 0x37, 0x37, 0x38, 0x34, 0x33, 0x37, 0x38, 0x39, 0x38, 0x37, 0x36, + 0x32, 0x33, 0x2c, 0x32, 0x2e, 0x32, 0x38, 0x38, 0x37, 0x38, 0x39, 0x31, 0x39, 0x33, 0x39, 0x39, + 0x35, 0x33, 0x36, 0x37, 0x33, 0x2c, 0x31, 0x38, 0x2e, 0x36, 0x36, 0x39, 0x37, 0x36, 0x33, 0x30, + 0x32, 0x35, 0x30, 0x39, 0x38, 0x32, 0x30, 0x32, 0x2c, 0x32, 0x35, 0x2e, 0x33, 0x39, 0x32, 0x37, + 0x37, 0x36, 0x39, 0x32, 0x31, 0x39, 0x37, 0x31, 0x36, 0x35, 0x2c, 0x32, 0x35, 0x2e, 0x30, 0x35, + 0x33, 0x34, 0x31, 0x35, 0x32, 0x32, 0x36, 0x34, 0x35, 0x37, 0x32, 0x36, 0x35, 0x2c, 0x32, 0x38, + 0x2e, 0x34, 0x35, 0x31, 0x35, 0x39, 0x37, 0x35, 0x38, 0x37, 0x33, 0x32, 0x33, 0x30, 0x33, 0x2c, + 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x31, 0x34, 0x37, 0x34, 0x37, 0x35, 0x31, 0x37, + 0x30, 0x34, 0x35, 0x39, 0x32, 0x30, 0x33, 0x31, 0x34, 0x2c, 0x31, 0x2e, 0x35, 0x36, 0x37, 0x36, + 0x30, 0x36, 0x34, 0x34, 0x31, 0x35, 0x35, 0x34, 0x32, 0x38, 0x38, 0x33, 0x2c, 0x33, 0x33, 0x2e, + 0x32, 0x34, 0x35, 0x36, 0x33, 0x37, 0x31, 0x39, 0x32, 0x37, 0x33, 0x34, 0x32, 0x31, 0x2c, 0x32, + 0x32, 0x2e, 0x38, 0x30, 0x34, 0x30, 0x33, 0x30, 0x39, 0x38, 0x38, 0x31, 0x31, 0x31, 0x35, 0x38, + 0x2c, 0x32, 0x37, 0x2e, 0x31, 0x34, 0x36, 0x33, 0x35, 0x35, 0x34, 0x35, 0x31, 0x38, 0x31, 0x32, + 0x35, 0x38, 0x32, 0x2c, 0x31, 0x35, 0x2e, 0x30, 0x38, 0x38, 0x38, 0x39, 0x34, 0x37, 0x35, 0x35, + 0x33, 0x32, 0x38, 0x31, 0x35, 0x39, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x31, + 0x31, 0x33, 0x35, 0x39, 0x30, 0x37, 0x37, 0x35, 0x37, 0x31, 0x31, 0x31, 0x35, 0x33, 0x34, 0x33, + 0x2c, 0x32, 0x2e, 0x39, 0x31, 0x31, 0x38, 0x39, 0x30, 0x35, 0x32, 0x30, 0x31, 0x33, 0x39, 0x33, + 0x39, 0x33, 0x2c, 0x31, 0x33, 0x2e, 0x39, 0x31, 0x32, 0x38, 0x34, 0x31, 0x36, 0x31, 0x37, 0x36, + 0x38, 0x37, 0x35, 0x31, 0x32, 0x2c, 0x32, 0x31, 0x2e, 0x35, 0x35, 0x33, 0x33, 0x39, 0x38, 0x39, + 0x33, 0x33, 0x33, 0x35, 0x32, 0x31, 0x34, 0x2c, 0x31, 0x36, 0x2e, 0x31, 0x30, 0x33, 0x30, 0x37, + 0x30, 0x31, 0x30, 0x36, 0x33, 0x37, 0x31, 0x38, 0x32, 0x38, 0x2c, 0x33, 0x32, 0x2e, 0x31, 0x39, + 0x36, 0x32, 0x32, 0x33, 0x35, 0x35, 0x37, 0x33, 0x33, 0x33, 0x30, 0x33, 0x35, 0x2c, 0x31, 0x33, + 0x2e, 0x32, 0x30, 0x38, 0x39, 0x38, 0x34, 0x34, 0x38, 0x39, 0x34, 0x30, 0x34, 0x39, 0x34, 0x2c, + 0x39, 0x37, 0x2e, 0x30, 0x39, 0x36, 0x38, 0x34, 0x31, 0x39, 0x31, 0x35, 0x38, 0x32, 0x38, 0x37, + 0x32, 0x2c, 0x32, 0x2e, 0x39, 0x30, 0x33, 0x31, 0x35, 0x38, 0x30, 0x38, 0x34, 0x31, 0x37, 0x31, + 0x32, 0x37, 0x34, 0x37, 0x2c, 0x30, 0x2e, 0x31, 0x38, 0x37, 0x36, 0x35, 0x37, 0x37, 0x32, 0x39, + 0x35, 0x35, 0x36, 0x31, 0x38, 0x36, 0x39, 0x33, 0x2c, 0x35, 0x2e, 0x31, 0x32, 0x34, 0x39, 0x39, + 0x37, 0x33, 0x30, 0x33, 0x37, 0x39, 0x30, 0x32, 0x35, 0x36, 0x35, 0x2c, 0x31, 0x38, 0x2e, 0x34, + 0x35, 0x33, 0x30, 0x31, 0x30, 0x30, 0x37, 0x32, 0x39, 0x33, 0x37, 0x35, 0x35, 0x32, 0x2c, 0x32, + 0x37, 0x2e, 0x31, 0x39, 0x35, 0x39, 0x39, 0x30, 0x38, 0x38, 0x33, 0x33, 0x36, 0x36, 0x31, 0x39, + 0x33, 0x2c, 0x31, 0x33, 0x2e, 0x36, 0x34, 0x32, 0x32, 0x31, 0x33, 0x36, 0x34, 0x32, 0x30, 0x33, + 0x30, 0x32, 0x37, 0x38, 0x2c, 0x33, 0x35, 0x2e, 0x33, 0x39, 0x36, 0x31, 0x33, 0x30, 0x33, 0x36, + 0x38, 0x33, 0x31, 0x39, 0x35, 0x34, 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x32, 0x33, 0x31, 0x31, 0x30, + 0x33, 0x33, 0x35, 0x32, 0x37, 0x32, 0x30, 0x34, 0x38, 0x35, 0x32, 0x2c, 0x39, 0x39, 0x2e, 0x39, + 0x38, 0x37, 0x36, 0x38, 0x38, 0x39, 0x36, 0x36, 0x34, 0x37, 0x32, 0x38, 0x2c, 0x30, 0x2e, 0x31, + 0x34, 0x32, 0x37, 0x39, 0x32, 0x35, 0x34, 0x36, 0x32, 0x32, 0x38, 0x39, 0x38, 0x32, 0x31, 0x36, + 0x2c, 0x32, 0x36, 0x2e, 0x32, 0x30, 0x34, 0x38, 0x31, 0x32, 0x31, 0x30, 0x38, 0x38, 0x39, 0x37, + 0x33, 0x35, 0x37, 0x2c, 0x31, 0x34, 0x2e, 0x32, 0x32, 0x36, 0x38, 0x39, 0x37, 0x33, 0x35, 0x35, + 0x39, 0x32, 0x33, 0x33, 0x35, 0x36, 0x2c, 0x33, 0x30, 0x2e, 0x36, 0x35, 0x32, 0x37, 0x39, 0x39, + 0x39, 0x32, 0x33, 0x39, 0x32, 0x31, 0x38, 0x39, 0x37, 0x2c, 0x32, 0x38, 0x2e, 0x37, 0x37, 0x32, + 0x36, 0x39, 0x38, 0x30, 0x36, 0x35, 0x30, 0x32, 0x38, 0x34, 0x30, 0x34, 0x2c, 0x33, 0x35, 0x2e, + 0x33, 0x38, 0x31, 0x39, 0x39, 0x39, 0x39, 0x34, 0x35, 0x39, 0x32, 0x33, 0x39, 0x39, 0x2c, 0x36, + 0x34, 0x2e, 0x36, 0x31, 0x38, 0x30, 0x30, 0x30, 0x30, 0x35, 0x34, 0x30, 0x37, 0x36, 0x30, 0x32, + 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x34, 0x32, 0x38, 0x34, 0x39, 0x38, 0x32, 0x32, 0x39, 0x31, 0x33, + 0x35, 0x32, 0x33, 0x35, 0x39, 0x2c, 0x31, 0x2e, 0x35, 0x35, 0x39, 0x35, 0x34, 0x37, 0x34, 0x31, + 0x34, 0x34, 0x39, 0x30, 0x34, 0x35, 0x38, 0x2c, 0x31, 0x2e, 0x32, 0x34, 0x38, 0x35, 0x33, 0x38, + 0x35, 0x30, 0x36, 0x35, 0x37, 0x34, 0x34, 0x38, 0x39, 0x36, 0x2c, 0x31, 0x33, 0x2e, 0x31, 0x39, + 0x34, 0x33, 0x35, 0x34, 0x39, 0x34, 0x37, 0x38, 0x35, 0x38, 0x35, 0x35, 0x31, 0x2c, 0x31, 0x36, + 0x2e, 0x31, 0x34, 0x30, 0x34, 0x37, 0x37, 0x32, 0x37, 0x33, 0x38, 0x35, 0x35, 0x32, 0x31, 0x35, + 0x2c, 0x32, 0x36, 0x2e, 0x34, 0x30, 0x33, 0x39, 0x32, 0x36, 0x35, 0x30, 0x36, 0x39, 0x30, 0x35, + 0x34, 0x33, 0x35, 0x2c, 0x34, 0x31, 0x2e, 0x34, 0x33, 0x38, 0x38, 0x37, 0x30, 0x33, 0x36, 0x38, + 0x30, 0x32, 0x34, 0x34, 0x39, 0x36, 0x2c, 0x33, 0x37, 0x2e, 0x30, 0x31, 0x34, 0x36, 0x34, 0x33, + 0x30, 0x37, 0x30, 0x32, 0x34, 0x38, 0x33, 0x30, 0x34, 0x2c, 0x36, 0x32, 0x2e, 0x39, 0x38, 0x35, + 0x33, 0x35, 0x36, 0x39, 0x32, 0x39, 0x37, 0x35, 0x31, 0x37, 0x2c, 0x30, 0x2e, 0x30, 0x31, 0x35, + 0x32, 0x38, 0x34, 0x38, 0x30, 0x30, 0x30, 0x37, 0x31, 0x31, 0x33, 0x33, 0x39, 0x31, 0x36, 0x2c, + 0x30, 0x2e, 0x37, 0x37, 0x32, 0x32, 0x38, 0x34, 0x36, 0x33, 0x35, 0x31, 0x35, 0x38, 0x33, 0x39, + 0x37, 0x38, 0x2c, 0x33, 0x32, 0x2e, 0x37, 0x37, 0x33, 0x38, 0x32, 0x39, 0x32, 0x30, 0x34, 0x30, + 0x34, 0x31, 0x36, 0x37, 0x2c, 0x33, 0x33, 0x2e, 0x38, 0x30, 0x35, 0x35, 0x35, 0x33, 0x32, 0x30, + 0x39, 0x35, 0x33, 0x33, 0x33, 0x36, 0x35, 0x2c, 0x32, 0x35, 0x2e, 0x33, 0x38, 0x35, 0x36, 0x33, + 0x39, 0x35, 0x32, 0x38, 0x31, 0x36, 0x33, 0x33, 0x38, 0x2c, 0x37, 0x2e, 0x32, 0x34, 0x37, 0x34, + 0x30, 0x38, 0x36, 0x32, 0x33, 0x30, 0x33, 0x32, 0x30, 0x35, 0x34, 0x35, 0x2c, 0x31, 0x30, 0x30, + 0x2e, 0x30, 0x2c, 0x30, 0x2e, 0x32, 0x31, 0x33, 0x33, 0x31, 0x30, 0x31, 0x31, 0x35, 0x39, 0x30, + 0x36, 0x31, 0x37, 0x37, 0x31, 0x38, 0x2c, 0x39, 0x2e, 0x39, 0x31, 0x32, 0x33, 0x39, 0x30, 0x34, + 0x38, 0x37, 0x39, 0x33, 0x33, 0x31, 0x31, 0x38, 0x2c, 0x31, 0x36, 0x2e, 0x36, 0x37, 0x36, 0x32, + 0x38, 0x30, 0x31, 0x33, 0x32, 0x36, 0x31, 0x37, 0x39, 0x32, 0x36, 0x2c, 0x32, 0x33, 0x2e, 0x30, + 0x37, 0x32, 0x33, 0x31, 0x38, 0x36, 0x35, 0x39, 0x32, 0x37, 0x32, 0x30, 0x30, 0x37, 0x2c, 0x31, + 0x33, 0x2e, 0x31, 0x32, 0x35, 0x31, 0x30, 0x32, 0x30, 0x32, 0x39, 0x39, 0x30, 0x32, 0x32, 0x33, + 0x37, 0x2c, 0x33, 0x30, 0x2e, 0x31, 0x31, 0x38, 0x30, 0x38, 0x32, 0x33, 0x38, 0x35, 0x34, 0x36, + 0x34, 0x37, 0x39, 0x32, 0x2c, 0x36, 0x2e, 0x38, 0x38, 0x32, 0x35, 0x31, 0x36, 0x31, 0x38, 0x38, + 0x39, 0x30, 0x33, 0x37, 0x35, 0x31, 0x2c, 0x32, 0x39, 0x2e, 0x33, 0x30, 0x34, 0x36, 0x37, 0x35, + 0x35, 0x39, 0x35, 0x37, 0x31, 0x36, 0x36, 0x30, 0x36, 0x2c, 0x37, 0x30, 0x2e, 0x36, 0x39, 0x35, + 0x33, 0x32, 0x34, 0x34, 0x30, 0x34, 0x32, 0x38, 0x33, 0x34, 0x31, 0x2c, 0x31, 0x2e, 0x39, 0x36, + 0x31, 0x38, 0x30, 0x31, 0x34, 0x30, 0x36, 0x39, 0x30, 0x33, 0x39, 0x32, 0x32, 0x32, 0x2c, 0x31, + 0x38, 0x2e, 0x34, 0x32, 0x39, 0x36, 0x32, 0x36, 0x33, 0x34, 0x38, 0x30, 0x31, 0x31, 0x32, 0x38, + 0x36, 0x2c, 0x32, 0x30, 0x2e, 0x35, 0x30, 0x39, 0x37, 0x34, 0x31, 0x39, 0x38, 0x31, 0x30, 0x35, + 0x30, 0x36, 0x37, 0x2c, 0x35, 0x39, 0x2e, 0x30, 0x39, 0x38, 0x38, 0x33, 0x30, 0x32, 0x36, 0x34, + 0x30, 0x33, 0x34, 0x31, 0x32, 0x2c, 0x31, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0x31, 0x30, 0x30, 0x2e, + 0x30, 0x2c, 0x32, 0x34, 0x2e, 0x31, 0x33, 0x36, 0x37, 0x30, 0x39, 0x37, 0x35, 0x37, 0x32, 0x32, + 0x33, 0x38, 0x37, 0x33, 0x2c, 0x37, 0x35, 0x2e, 0x38, 0x36, 0x33, 0x32, 0x39, 0x30, 0x32, 0x34, + 0x32, 0x37, 0x37, 0x36, 0x31, 0x33, 0x5d, 0x0a, 0x09, 0x20, 0x45, 0x4e, 0x44, 0x20, 0x4c, 0x30, + 0x39, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x0a, 0x45, 0x4e, 0x44, 0x20, 0x53, 0x45, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x20, 0x69, 0x73, 0x6f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x0a, +}; + +const size_t StandardAbundances_len = sizeof(StandardAbundances); diff --git a/src/composition/include/fourdst/composition/io/standard_compositions.h b/src/composition/include/fourdst/composition/io/standard_compositions.h new file mode 100644 index 0000000..7235138 --- /dev/null +++ b/src/composition/include/fourdst/composition/io/standard_compositions.h @@ -0,0 +1,79 @@ +#pragma once + +#include "fourdst/config/config.h" +#include "fourdst/logging/logging.h" +#include "fourdst/composition/composition.h" + +#include "quill/Logger.h" + +#include +#include + +namespace fourdst::composition::io { + typedef std::vector ParsedChemicalData; + struct CompositionData { + std::string comment_str; + double he_abundance; + bool requires_atomic_weight; + std::vector elements; + std::vector abundances; + }; + struct IsotopicPercentage { + std::string comment_str; + std::vector atomic_numbers; + std::vector elements; + std::vector mass_numbers; + std::vector percentages; + }; + /** + * @class ChemicalFileParser + * @brief An abstract base class for chemical file parsers. + * + * This class defines the interface for parsing fortran code files that contain + * nuclide fractions. Derived classes must implement the `parse` + * method to handle specific file formats. + */ + class ChemicalFileParser { + private: + + public: + + /** + * @brief Parses a chemical file and returns the parsed data. + * + * This is a pure virtual function that must be implemented by derived + * classes. It takes a filename as input and returns a `ParsedChemicalData` + * struct containing the information extracted from the file. + * + * @param filename The path to the Chemical file to parse. + * @return A `ParsedChemicalData` struct containing the parsed reaction data. + * + * @throws std::runtime_error If the file cannot be opened or a parsing + * error occurs. + * + * @b Usage + * @code + * std::unique_ptr parser = std::make_unique(); + * try { + * ParsedChemicalData data = parser->parse("my_reactions.txt"); + * for (const auto& reaction_name : data.reactionPENames) { + * // ... process reaction name + * } + * } catch (const std::runtime_error& e) { + * // ... handle error + * } + * @endcode + */ + [[nodiscard]] CompositionData parse_compositon_data(const std::vector& data,const std::string& scheme) const ; + [[nodiscard]] IsotopicPercentage parse_isotopic_percentage(const std::vector& data,const std::string& scheme) const ; + }; + + +} + +namespace fourdst::composition { + [[nodiscard]] Composition get_composition_record(const std::string& metal_fraction_scheme, + const std::string& isotopic_percentage_scheme, + double initial_z, double initial_y); + +} \ No newline at end of file diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp new file mode 100644 index 0000000..0425d40 --- /dev/null +++ b/src/composition/lib/io/standard_compositions.cpp @@ -0,0 +1,346 @@ +#include "fourdst/composition/io/standard_compositions.h" +#include "fourdst/composition/io/StandardAbundancesBinary.h" + +#include "fourdst/composition/composition.h" +#include "fourdst/atomic/atomicSpecies.h" +#include "fourdst/atomic/species.h" +#include "fourdst/composition/utils.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace fourdst:: composition::io { + namespace { + inline void ltrim(std::string &s) { + s.erase( + s.begin(), + std::ranges::find_if(s, + [](const unsigned char ch) { + return !std::isspace(ch); + }) + ); + } + + inline void rtrim(std::string &s) { + s.erase( + std::find_if( + s.rbegin(), + s.rend(), + [](const unsigned char ch) { + return !std::isspace(ch); + }).base(), + s.end() + ); + } + + inline void trim(std::string &s) { + ltrim(s); + rtrim(s); + } + + + } + + bool to_bool(std::string s) { + std::transform(s.begin(), s.end(), s.begin(), + [](unsigned char c){ return std::tolower(c); }); + + return s == "true"; + } + + CompositionData ChemicalFileParser::parse_compositon_data(const std::vector& data,const std::string& scheme) const { + + // get file and metal_fraction_scheme + // Load the file + // find the metal_fraction_scheme + // return abundances + + // LOG_TRACE_L1(m_logger, "Parsing chemical abundance for: {}", scheme); + + bool debug = false; + if (debug){ + std::println("Parsing chemical abundance for: {}", scheme); + } + + std::istringstream stream(std::string(data.begin(), data.end())); + + // add error message if something goes wrong + + std::string line; + int start_line = 0; + int i = 0; + + CompositionData comp; + + while (std::getline(stream, line)) { + + // find where the end of the scheme block is + auto end_pos = std::ranges::search(line,std::format("END {}", scheme)); + + // exit if have reached the end of block + if (!end_pos.empty()) { + break; + } + + if (start_line>0){ + const size_t colon_pos = line.find(':'); + line = line.substr(colon_pos+1); + + line.erase(std::remove_if(line.begin(), line.end(), + [](char c){ return c == '[' || c == ']'; }), + line.end()); + + trim(line); + std::string item; + std::stringstream ss(line); + double val; + switch(i-start_line){ + case 1: + comp.comment_str = line; + break; + case 2: + comp.he_abundance = std::pow(10.0,std::stod(line)); + break; + case 3: + comp.requires_atomic_weight = to_bool(line); + break; + case 4: + while(std::getline(ss, item, ',')) { + comp.elements.push_back(item); + } + break; + case 5: + while(std::getline(ss, item, ',')) { + val = std::pow(10.0,std::stod(item)); + comp.abundances.push_back(val); + } + break; + } + } + + // find where the start of the scheme block is + auto start_pos = std::ranges::search(line, std::format("BEGIN {}", scheme)); + + if (!start_pos.empty()) { + start_line = i; + } + i+=1; + } + + // if (start_pos==0): + // raise error ("Scheme {} not found", scheme) + + + if (debug){ + std::println("he_abundance: {}", comp.he_abundance); + std::println("requires_atomic_weight: {}", comp.requires_atomic_weight); + std::println("elements: {}",comp.elements); + std::println("abundances: {}", comp.abundances); + } + + return comp; + + } + + IsotopicPercentage ChemicalFileParser::parse_isotopic_percentage(const std::vector& data,const std::string& scheme) const { + + // get file and iso_scheme + // Load the file + // find the iso_scheme + // get iso_comp data + // IsotopicPercentage object + + bool debug = false; + if (debug){ + std::println("Parsing Isotopic Percentage for: {}", scheme); + } + + std::istringstream stream(std::string(data.begin(), data.end())); + + // add error message if something goes wrong + ParsedChemicalData parsed; + + std::string line; + int start_line = 0; + int i = 0; + + IsotopicPercentage iso; + + while (std::getline(stream, line)) { + + // find where the end of the scheme block is + auto end_pos = std::ranges::search(line,std::format("END {}", scheme)); + + // exit if have reached the end of block + if (!end_pos.empty()) { + break; + } + + if (start_line>0){ + const size_t colon_pos = line.find(':'); + line = line.substr(colon_pos+1); + + line.erase(std::remove_if(line.begin(), line.end(), + [](char c){ return c == '[' || c == ']'; }), + line.end()); + + trim(line); + std::string item; + std::stringstream ss(line); + parsed.push_back(line); + switch(i-start_line){ + case 1: + iso.comment_str = line; + break; + case 2: + while(std::getline(ss, item, ',')) { + iso.atomic_numbers.push_back(std::stoi(item)); + } + break; + case 3: + while(std::getline(ss, item, ',')) { + iso.elements.push_back(item); + } + break; + case 4: + while(std::getline(ss, item, ',')) { + iso.mass_numbers.push_back(std::stoi(item)); + } + break; + case 5: + while(std::getline(ss, item, ',')) { + iso.percentages.push_back(std::stod(item)); + } + break; + } + } + + // find where the start of the scheme block is + auto start_pos = std::ranges::search(line, std::format("BEGIN {}", scheme)); + + if (!start_pos.empty()) { + start_line = i; + } + i+=1; + } + + if (debug){ + std::println("atomic_numbers: {}", iso.atomic_numbers); + std::println("elements: {}",iso.elements); + std::println("mass_numbers: {}", iso.mass_numbers); + std::println("percentages: {}", iso.percentages); + } + + return iso; + } +} + +namespace fourdst::composition { + Composition get_composition_record(const std::string& metal_fraction_scheme, + const std::string& isotopic_percentage_scheme, + double initial_z, double initial_y) { + + std::vector data; + + io::ChemicalFileParser parser; + io::CompositionData compositions; + + io::IsotopicPercentage isotopes; + + data = std::ranges::to>(StandardAbundances); + + compositions = parser.parse_compositon_data(data,metal_fraction_scheme); + isotopes = parser.parse_isotopic_percentage(data,isotopic_percentage_scheme); + + std::string name; + std::vector species; + + // construct name of the isotopes + for (const auto [E,A] : std::ranges::views::zip(isotopes.elements, isotopes.mass_numbers)){ + name = std::format("{}-{}",E,A); + // std::println("{}", name); + auto SpeciesObject = fourdst::atomic::species.at(name); + species.push_back(SpeciesObject); + + // std::println("Species: {} has mass: {}", SpeciesObject.name(), SpeciesObject.mass()); + + } + + std::vector massFracs, metal_fractions; + + // hydrogen and helium are treated separately since they are not metals + // H1 + massFracs.push_back(std::max(0.0, std::min(1.0, 1.0 - (initial_z + initial_y)))); + // H2 + massFracs.push_back(0.0); + // He3 + // anders & grevesse 1989 solar mass fractions + double xsol_he3,xsol_he4; + xsol_he3=2.9291e-05; + xsol_he4=2.7521e-01; + massFracs.push_back(initial_y*xsol_he3/(xsol_he3 + xsol_he4)); + // He4 + massFracs.push_back(initial_y*xsol_he4/(xsol_he3 + xsol_he4)); + // Metals + // multiply by atomic weight if needed + + if (compositions.requires_atomic_weight){ + // get isotope with max abundance for each metal + std::vector element_atomic_weight; + + for (size_t i = 0; i < isotopes.atomic_numbers.size();) { + size_t Z = isotopes.atomic_numbers[i]; + if (Z<2) { + continue; + } + double max_iso = isotopes.percentages[i]; + size_t loc = i; + size_t j = i ; + while (jmax_iso) { + loc = j; + } + ++j; + } + element_atomic_weight.push_back(species[loc].mass()); + i=j; + } + + for(size_t i=0;i < compositions.abundances.size();++i){ + metal_fractions.push_back(element_atomic_weight[i]*compositions.abundances[i]); + } + } else { + metal_fractions = compositions.abundances; + } + + double sum = std::accumulate(metal_fractions.begin(),metal_fractions.end(),0.0); + + for(size_t i=0;i < metal_fractions.size();++i){ + std::println("testing: {} , {}", i,compositions.elements[i]); + metal_fractions[i] = metal_fractions[i]/sum; + } + + // Z = max(0d0, min(1d0, 1d0 - (h1 + h2 + he3 + he4))) + + for (size_t i = 0; i < isotopes.atomic_numbers.size();++i) { + if (isotopes.atomic_numbers[i]<2) { + continue; + } + double frac = 1e-2*isotopes.percentages[i]*species[i].mass(); + + } + + // + Composition comp = buildCompositionFromMassFractions(species, massFracs); + return comp; + + } +} \ No newline at end of file diff --git a/src/composition/meson.build b/src/composition/meson.build index 828e8ce..91af284 100644 --- a/src/composition/meson.build +++ b/src/composition/meson.build @@ -4,7 +4,9 @@ required_headers = [ 'fourdst/composition/composition.h', 'fourdst/composition/utils.h', 'fourdst/composition/composition_abstract.h', - 'fourdst/composition/exceptions/exceptions_composition.h' + 'fourdst/composition/exceptions/exceptions_composition.h', + 'fourdst/composition/io/standard_compositions.h', + 'fourdst/composition/io/StandardAbundancesBinary.h' ] foreach h : required_headers @@ -23,6 +25,8 @@ composition_sources = files( 'lib/composition.cpp', 'lib/utils.cpp', 'lib/decorators/composition_masked.cpp', + 'lib/io/standard_compositions.cpp' + ) @@ -50,7 +54,10 @@ composition_dep = declare_dependency( # Make headers accessible composition_headers = files( 'include/fourdst/composition/composition.h', - 'include/fourdst/composition/composition_abstract.h' + 'include/fourdst/composition/composition_abstract.h', + 'include/fourdst/composition/io/standard_compositions.h', + 'include/fourdst/composition/io/StandardAbundancesBinary.h' + ) install_headers(composition_headers, subdir : 'fourdst/fourdst/composition') @@ -63,6 +70,7 @@ composition_headers_atomic = files( 'include/fourdst/atomic/atomicSpecies.h', 'include/fourdst/atomic/elements.h', 'include/fourdst/atomic/species.h', + ) install_headers(composition_headers_atomic, subdir : 'fourdst/fourdst/atomic') diff --git a/tests/composition/meson.build b/tests/composition/meson.build index 35935d9..25df1de 100644 --- a/tests/composition/meson.build +++ b/tests/composition/meson.build @@ -27,3 +27,5 @@ foreach test_file : test_sources test_exe, env: ['MESON_SOURCE_ROOT=' + meson.project_source_root(), 'MESON_BUILD_ROOT=' + meson.project_build_root()]) endforeach + +subdir('sandbox') diff --git a/tests/composition/sandbox/meson.build b/tests/composition/sandbox/meson.build new file mode 100644 index 0000000..0469d10 --- /dev/null +++ b/tests/composition/sandbox/meson.build @@ -0,0 +1 @@ +executable('sandbox', 'sandbox.cpp', dependencies: [species_weight_dep, composition_dep, config_dep,]) \ No newline at end of file diff --git a/tests/composition/sandbox/sandbox.cpp b/tests/composition/sandbox/sandbox.cpp new file mode 100644 index 0000000..3c70505 --- /dev/null +++ b/tests/composition/sandbox/sandbox.cpp @@ -0,0 +1,48 @@ +#include "fourdst/composition/io/standard_compositions.h" +#include "fourdst/composition/io/StandardAbundancesBinary.h" + +#include "fourdst/composition/composition.h" +#include "fourdst/atomic/atomicSpecies.h" +#include "fourdst/atomic/species.h" +#include "fourdst/composition/utils.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char** argv) { + + + // @input: initial_z, initial_y, metal_fraction_scheme & isotopic_percentage_scheme + // Options for metal_frac_scheme: ['AG89', 'GN93', 'GS98', 'L03', 'AGS05', 'AGSS09', 'A09_Przybilla', 'MB22_photospheric', 'AAG21_photospheric', 'L09'] + // Options for isotopic percentage scheme: [L03_data, L09_data] + + + // CLI::App app("Loading Z fractions"); + + // fourdst::config::Config config; + // fourdst::config::register_as_cli(config, app); + // app.parse(argc, argv) + + std::string metal_fraction_scheme, isotopic_percentage_scheme; + double initial_z, initial_y; + + // the following four should be user input + // initial_y can be optional + initial_z = 0.02; + initial_y = 0.24 + 2*initial_z; + metal_fraction_scheme = "AG89"; + isotopic_percentage_scheme = "L03_data"; + + fourdst::composition::io::ChemicalFileParser parser; + fourdst::composition::Composition comp; + comp = fourdst::composition::get_composition_record(metal_fraction_scheme, isotopic_percentage_scheme, initial_z, initial_y); + std::cout << comp << std::endl; + +} \ No newline at end of file From 22083d5d111622b65f19c8dd2efb2c71a9ad0806 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Tue, 2 Jun 2026 16:22:18 +0200 Subject: [PATCH 02/12] feat(standard_composition): Enum overload for compositions Added additional overloads to allow typesafe and compile time checking of requested composition --- .../composition/io/standard_compositions.h | 49 +++++++++++++++++-- .../lib/io/standard_compositions.cpp | 14 +++++- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/composition/include/fourdst/composition/io/standard_compositions.h b/src/composition/include/fourdst/composition/io/standard_compositions.h index 7235138..47d2f46 100644 --- a/src/composition/include/fourdst/composition/io/standard_compositions.h +++ b/src/composition/include/fourdst/composition/io/standard_compositions.h @@ -25,6 +25,43 @@ namespace fourdst::composition::io { std::vector mass_numbers; std::vector percentages; }; + + enum class SolarCompositions { + AG89, + GN93, + GS98, + L03, + AGS05, + AGS09, + A09_Pryzbilla, + MB22_photospheric, + AAG21_photospheric, + L09 + }; + + enum class IsotopicPercentages { + L03, + L09 + }; + + std::unordered_map SolarCompositions_to_string_map = { + {SolarCompositions::AG89, "AG89"}, + {SolarCompositions::GN93, "GN93"}, + {SolarCompositions::GS98, "GS98"}, + {SolarCompositions::L03, "L03"}, + {SolarCompositions::AGS05, "AGS05"}, + {SolarCompositions::AGS09, "AGS09"}, + {SolarCompositions::A09_Pryzbilla, "A09_Pryzbilla"}, + {SolarCompositions::MB22_photospheric, "MB22_photospheric"}, + {SolarCompositions::AAG21_photospheric, "AAG21_photospheric"}, + {SolarCompositions::L09, "L09"} + }; + + std::unordered_map IsotopicPercentages_to_string_map = { + {IsotopicPercentages::L03, "L03"}, + {IsotopicPercentages::L09, "L09"} + }; + /** * @class ChemicalFileParser * @brief An abstract base class for chemical file parsers. @@ -73,7 +110,13 @@ namespace fourdst::composition::io { namespace fourdst::composition { [[nodiscard]] Composition get_composition_record(const std::string& metal_fraction_scheme, - const std::string& isotopic_percentage_scheme, - double initial_z, double initial_y); + const std::string& isotopic_percentage_scheme, + double initial_z, + double initial_y); -} \ No newline at end of file + [[nodiscard]] Composition get_composition_record(const SolarCompositions metal_fraction_scheme, + const IsotopicPercentages isotopic_percentage_scheme, + double initial_z, + double initial_y); + +} diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index 0425d40..32ee63c 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -343,4 +343,16 @@ namespace fourdst::composition { return comp; } -} \ No newline at end of file + + Composition get_composition_record(const SolarCompositions metal_fraction_scheme, + const IsotopicPercentages isotopic_percentage_scheme, + double initial_z, + double initial_y) { + return get_composition_record( + SolarComposition_to_string_map.at(metal_fraction_scheme), + IsotopicPercentages_to_string.at(isotopic_percentage_scheme), + initial_z, + initial_y + ); + } +} From 3d2eb46d0dcf5816e7de54a58006e72e0a8b9d94 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Tue, 2 Jun 2026 17:02:19 +0200 Subject: [PATCH 03/12] feat(sandbox): added example input params --- build-config/CLI11/meson.build | 2 ++ build-config/meson.build | 1 + .../composition/io/standard_compositions.h | 12 ++++---- .../lib/io/standard_compositions.cpp | 22 +++++++-------- subprojects/cli11.wrap | 10 +++++++ tests/composition/sandbox/meson.build | 2 +- tests/composition/sandbox/sandbox.cpp | 28 +++++++++++++------ 7 files changed, 50 insertions(+), 27 deletions(-) create mode 100644 build-config/CLI11/meson.build create mode 100644 subprojects/cli11.wrap diff --git a/build-config/CLI11/meson.build b/build-config/CLI11/meson.build new file mode 100644 index 0000000..a8549f3 --- /dev/null +++ b/build-config/CLI11/meson.build @@ -0,0 +1,2 @@ +cli11_proj = subproject('cli11') +cli11_dep = cli11_proj.get_variable('CLI11_dep') \ No newline at end of file diff --git a/build-config/meson.build b/build-config/meson.build index 5174d60..59bb535 100644 --- a/build-config/meson.build +++ b/build-config/meson.build @@ -2,4 +2,5 @@ cmake = import('cmake') subdir('fourdst') subdir('xxHash') +subdir('CLI11') diff --git a/src/composition/include/fourdst/composition/io/standard_compositions.h b/src/composition/include/fourdst/composition/io/standard_compositions.h index 47d2f46..3940010 100644 --- a/src/composition/include/fourdst/composition/io/standard_compositions.h +++ b/src/composition/include/fourdst/composition/io/standard_compositions.h @@ -44,7 +44,7 @@ namespace fourdst::composition::io { L09 }; - std::unordered_map SolarCompositions_to_string_map = { + inline std::unordered_map SolarCompositions_to_string_map = { {SolarCompositions::AG89, "AG89"}, {SolarCompositions::GN93, "GN93"}, {SolarCompositions::GS98, "GS98"}, @@ -57,7 +57,7 @@ namespace fourdst::composition::io { {SolarCompositions::L09, "L09"} }; - std::unordered_map IsotopicPercentages_to_string_map = { + inline std::unordered_map IsotopicPercentages_to_string_map = { {IsotopicPercentages::L03, "L03"}, {IsotopicPercentages::L09, "L09"} }; @@ -114,9 +114,9 @@ namespace fourdst::composition { double initial_z, double initial_y); - [[nodiscard]] Composition get_composition_record(const SolarCompositions metal_fraction_scheme, - const IsotopicPercentages isotopic_percentage_scheme, - double initial_z, - double initial_y); + // [[nodiscard]] Composition get_composition_record(const SolarCompositions metal_fraction_scheme, + // const IsotopicPercentages isotopic_percentage_scheme, + // double initial_z, + // double initial_y); } diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index 32ee63c..e7126a0 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -344,15 +344,15 @@ namespace fourdst::composition { } - Composition get_composition_record(const SolarCompositions metal_fraction_scheme, - const IsotopicPercentages isotopic_percentage_scheme, - double initial_z, - double initial_y) { - return get_composition_record( - SolarComposition_to_string_map.at(metal_fraction_scheme), - IsotopicPercentages_to_string.at(isotopic_percentage_scheme), - initial_z, - initial_y - ); - } + // Composition get_composition_record(const io::SolarCompositions metal_fraction_scheme, + // const io::IsotopicPercentages isotopic_percentage_scheme, + // double initial_z, + // double initial_y) { + // return get_composition_record( + // io::SolarComposition_to_string_map.at(metal_fraction_scheme), + // io::IsotopicPercentages_to_string.at(isotopic_percentage_scheme), + // initial_z, + // initial_y + // ); + // } } diff --git a/subprojects/cli11.wrap b/subprojects/cli11.wrap new file mode 100644 index 0000000..0072590 --- /dev/null +++ b/subprojects/cli11.wrap @@ -0,0 +1,10 @@ +[wrap-file] +directory = CLI11-2.6.1 +source_url = https://github.com/CLIUtils/CLI11/archive/refs/tags/v2.6.1.tar.gz +source_filename = CLI11-2.6.1.tar.gz +source_hash = 377691f3fac2b340f12a2f79f523c780564578ba3d6eaf5238e9f35895d5ba95 +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/cli11_2.6.1-1/CLI11-2.6.1.tar.gz +wrapdb_version = 2.6.1-1 + +[provide] +dependency_names = CLI11 \ No newline at end of file diff --git a/tests/composition/sandbox/meson.build b/tests/composition/sandbox/meson.build index 0469d10..6e0a825 100644 --- a/tests/composition/sandbox/meson.build +++ b/tests/composition/sandbox/meson.build @@ -1 +1 @@ -executable('sandbox', 'sandbox.cpp', dependencies: [species_weight_dep, composition_dep, config_dep,]) \ No newline at end of file +executable('sandbox', 'sandbox.cpp', dependencies: [species_weight_dep, composition_dep, config_dep, cli11_dep]) \ No newline at end of file diff --git a/tests/composition/sandbox/sandbox.cpp b/tests/composition/sandbox/sandbox.cpp index 3c70505..196f7f5 100644 --- a/tests/composition/sandbox/sandbox.cpp +++ b/tests/composition/sandbox/sandbox.cpp @@ -15,6 +15,8 @@ #include #include #include +#include +#include "CLI/CLI.hpp" int main(int argc, char** argv) { @@ -23,21 +25,29 @@ int main(int argc, char** argv) { // Options for metal_frac_scheme: ['AG89', 'GN93', 'GS98', 'L03', 'AGS05', 'AGSS09', 'A09_Przybilla', 'MB22_photospheric', 'AAG21_photospheric', 'L09'] // Options for isotopic percentage scheme: [L03_data, L09_data] - - // CLI::App app("Loading Z fractions"); + double initial_z; + std::string metal_fraction_scheme; - // fourdst::config::Config config; - // fourdst::config::register_as_cli(config, app); - // app.parse(argc, argv) + auto keys = fourdst::composition::io::SolarCompositions_to_string_map | std::views::values | std::ranges::to(); - std::string metal_fraction_scheme, isotopic_percentage_scheme; - double initial_z, initial_y; + CLI::App app("Example App To Load Solar Composition"); + app.add_option("-z,--initial_z", initial_z, "Initial Z")->required(); + app.add_option("-c,--solar-composition", metal_fraction_scheme)-> + check( + CLI::IsMember( + keys, + CLI::ignore_case) + ); + + CLI11_PARSE(app, argc, argv); + + std::string isotopic_percentage_scheme; + double initial_y; // the following four should be user input // initial_y can be optional - initial_z = 0.02; + // initial_z = 0.02; initial_y = 0.24 + 2*initial_z; - metal_fraction_scheme = "AG89"; isotopic_percentage_scheme = "L03_data"; fourdst::composition::io::ChemicalFileParser parser; From 1619eba529454bb61733c6e3ef7fb4c9aee95970 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Wed, 3 Jun 2026 11:59:54 +0200 Subject: [PATCH 04/12] feat(standard_compositions): added working enum overloads also added docs --- .../composition/io/standard_compositions.h | 44 +++++++++++++++++-- .../lib/io/standard_compositions.cpp | 22 +++++----- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/composition/include/fourdst/composition/io/standard_compositions.h b/src/composition/include/fourdst/composition/io/standard_compositions.h index 3940010..18baebe 100644 --- a/src/composition/include/fourdst/composition/io/standard_compositions.h +++ b/src/composition/include/fourdst/composition/io/standard_compositions.h @@ -95,6 +95,9 @@ namespace fourdst::composition::io { * ParsedChemicalData data = parser->parse("my_reactions.txt"); * for (const auto& reaction_name : data.reactionPENames) { * // ... process reaction name + const mfem::GridFunction& grav_potential_at_inf(FEM& fem, const Args& args, const mfem::GridFunction& rho, bool pho_warm) { + +} * } * } catch (const std::runtime_error& e) { * // ... handle error @@ -109,14 +112,47 @@ namespace fourdst::composition::io { } namespace fourdst::composition { + /** + * @brief Function to retrieve a standard solar composition record indexed by their canonical names including + * - AG89 + * - GN93 + * - GS98 + * - L03 + * - AGS05 + * - AGS08 + * - A09_Pryzbilla + * - MB22_photospheric + * - AAG21_photospheric + * - L09 + * Further, isotopic percentages can be selected as either + * - L03 + * - L09 + * + * These data have been extracted from chem_def.f90 from MESA + * + * @note Composition names are case normalized; therefore, the inputs for metal fraction scheme and isotopic percentage scheme are case insensitive. + * + * @param metal_fraction_scheme The name of the metal fraction scheme to use. Must be one of the following: AG89, GN93, GS98, L03, AGS05, AGS08, A09_Pryzbilla, MB22_photospheric, AAG21_photospheric, L09 + * @param isotopic_percentage_scheme The name of the isotopic percentage scheme to use. Must be one of the following: L03, L09 + * @param initial_z + * @param initial_y + */ [[nodiscard]] Composition get_composition_record(const std::string& metal_fraction_scheme, const std::string& isotopic_percentage_scheme, double initial_z, double initial_y); - // [[nodiscard]] Composition get_composition_record(const SolarCompositions metal_fraction_scheme, - // const IsotopicPercentages isotopic_percentage_scheme, - // double initial_z, - // double initial_y); + /** + * @brief Overload of the string based version of this function which accepts the enums Solar + * @param metal_fraction_scheme Enum corresponding to the standard solar composition to select + * @param isotopic_percentage_scheme Enum corresponding to the isotopic percentages prescription to select + * @param initial_z + * @param initial_y + * @return + */ + [[nodiscard]] Composition get_composition_record(io::SolarCompositions metal_fraction_scheme, + io::IsotopicPercentages isotopic_percentage_scheme, + double initial_z, + double initial_y); } diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index e7126a0..45d901f 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -344,15 +344,15 @@ namespace fourdst::composition { } - // Composition get_composition_record(const io::SolarCompositions metal_fraction_scheme, - // const io::IsotopicPercentages isotopic_percentage_scheme, - // double initial_z, - // double initial_y) { - // return get_composition_record( - // io::SolarComposition_to_string_map.at(metal_fraction_scheme), - // io::IsotopicPercentages_to_string.at(isotopic_percentage_scheme), - // initial_z, - // initial_y - // ); - // } + Composition get_composition_record(const io::SolarCompositions metal_fraction_scheme, + const io::IsotopicPercentages isotopic_percentage_scheme, + double initial_z, + double initial_y) { + return get_composition_record( + io::SolarCompositions_to_string_map.at(metal_fraction_scheme), + io::IsotopicPercentages_to_string_map.at(isotopic_percentage_scheme), + initial_z, + initial_y + ); + } } From 3d09d1e0eaf466a6065d80c1572262cc6d7c8415 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Wed, 3 Jun 2026 12:00:16 +0200 Subject: [PATCH 05/12] docs(gitignore): added CLI11 source to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 48b1d01..3d34e48 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,7 @@ subprojects/libconstants/ subprojects/liblogging/ subprojects/.wraplock subprojects/tomlplusplus-*/ +subprojects/CLI11-*/ qhull.wrap quill.wrap From 5ae76be756b36c207435c239425cce253184cb2a Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Wed, 3 Jun 2026 13:28:48 +0200 Subject: [PATCH 06/12] test(tests): Standard Solar Composition Unit Tests Added first basic unit test to ensure all standard solar compositions can load. Not currently passing --- .../composition/io/standard_compositions.h | 4 +-- .../lib/io/standard_compositions.cpp | 8 ++--- tests/composition/compositionTest.cpp | 34 +++++++++++++++++++ 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/composition/include/fourdst/composition/io/standard_compositions.h b/src/composition/include/fourdst/composition/io/standard_compositions.h index 18baebe..9ff094c 100644 --- a/src/composition/include/fourdst/composition/io/standard_compositions.h +++ b/src/composition/include/fourdst/composition/io/standard_compositions.h @@ -58,8 +58,8 @@ namespace fourdst::composition::io { }; inline std::unordered_map IsotopicPercentages_to_string_map = { - {IsotopicPercentages::L03, "L03"}, - {IsotopicPercentages::L09, "L09"} + {IsotopicPercentages::L03, "L03_data"}, + {IsotopicPercentages::L09, "L09_data"} }; /** diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index 45d901f..93fc8c6 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -248,6 +248,7 @@ namespace fourdst::composition { const std::string& isotopic_percentage_scheme, double initial_z, double initial_y) { + std::vector data; io::ChemicalFileParser parser; @@ -260,18 +261,16 @@ namespace fourdst::composition { compositions = parser.parse_compositon_data(data,metal_fraction_scheme); isotopes = parser.parse_isotopic_percentage(data,isotopic_percentage_scheme); + std::string name; std::vector species; + // construct name of the isotopes for (const auto [E,A] : std::ranges::views::zip(isotopes.elements, isotopes.mass_numbers)){ name = std::format("{}-{}",E,A); - // std::println("{}", name); auto SpeciesObject = fourdst::atomic::species.at(name); species.push_back(SpeciesObject); - - // std::println("Species: {} has mass: {}", SpeciesObject.name(), SpeciesObject.mass()); - } std::vector massFracs, metal_fractions; @@ -324,7 +323,6 @@ namespace fourdst::composition { double sum = std::accumulate(metal_fractions.begin(),metal_fractions.end(),0.0); for(size_t i=0;i < metal_fractions.size();++i){ - std::println("testing: {} , {}", i,compositions.elements[i]); metal_fractions[i] = metal_fractions[i]/sum; } diff --git a/tests/composition/compositionTest.cpp b/tests/composition/compositionTest.cpp index 75fa64e..b63f69a 100644 --- a/tests/composition/compositionTest.cpp +++ b/tests/composition/compositionTest.cpp @@ -11,6 +11,7 @@ #include "fourdst/composition/exceptions/exceptions_composition.h" #include "fourdst/composition/utils.h" #include "fourdst/composition/decorators/composition_masked.h" +#include "fourdst/composition/io/standard_compositions.h" #include "fourdst/composition/utils/composition_hash.h" #include "fourdst/config/config.h" @@ -482,4 +483,37 @@ TEST_F(compositionTest, iterationOrdering) { EXPECT_EQ(sp, speciesInOrder[count]); ++count; } +} + +TEST_F(compositionTest, standardSolarCompositions) { + using namespace fourdst::composition; + + std::vector comps = { + io::SolarCompositions::AG89, + io::SolarCompositions::GS98, + io::SolarCompositions::L03, + io::SolarCompositions::A09_Pryzbilla, + io::SolarCompositions::AGS05, + io::SolarCompositions::AGS09, + io::SolarCompositions::AAG21_photospheric, + io::SolarCompositions::MB22_photospheric, + io::SolarCompositions::L09 + }; + + std::vector isos = { + io::IsotopicPercentages::L03, + io::IsotopicPercentages::L09 + }; + + + for (const auto comp : comps) { + for (const auto iso: isos) { + std::string string_comp = io::SolarCompositions_to_string_map.at(comp); + std::string string_iso = io::IsotopicPercentages_to_string_map.at(iso); + + EXPECT_NO_THROW(get_composition_record(comp, iso, 0.02, 0.28)); + EXPECT_NO_THROW(get_composition_record(string_comp, string_iso, 0.02, 0.28)); + } + } + } \ No newline at end of file From a7389fcfcebe15f3acf8ee58eb41f53a1bae1e66 Mon Sep 17 00:00:00 2001 From: poojanagrawal Date: Wed, 3 Jun 2026 13:43:32 +0200 Subject: [PATCH 07/12] fix(standard-compositions): completed the calculations of mass fractions Moved the abundance calculations to its own function instead of main, fixed calulations of mass fractions --- .../lib/io/standard_compositions.cpp | 115 ++++++++++++------ tests/composition/sandbox/sandbox.cpp | 3 +- 2 files changed, 80 insertions(+), 38 deletions(-) diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index 93fc8c6..2ce2d11 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -261,21 +261,24 @@ namespace fourdst::composition { compositions = parser.parse_compositon_data(data,metal_fraction_scheme); isotopes = parser.parse_isotopic_percentage(data,isotopic_percentage_scheme); - std::string name; std::vector species; - - // construct name of the isotopes + // construct name of the isotopes for all elements for (const auto [E,A] : std::ranges::views::zip(isotopes.elements, isotopes.mass_numbers)){ - name = std::format("{}-{}",E,A); - auto SpeciesObject = fourdst::atomic::species.at(name); - species.push_back(SpeciesObject); + if (std::ranges::contains(compositions.elements,E)) { + name = std::format("{}-{}",E,A); + // std::println("{}", name); + auto SpeciesObject = fourdst::atomic::species.at(name); + species.push_back(SpeciesObject); + // std::println("Species: {} has mass: {}", SpeciesObject.name(), SpeciesObject.mass()); + } } - std::vector massFracs, metal_fractions; + std::vector massFracs; + std::unordered_map metal_fractions; - // hydrogen and helium are treated separately since they are not metals + // hydrogen and helium are treated separately // H1 massFracs.push_back(std::max(0.0, std::min(1.0, 1.0 - (initial_z + initial_y)))); // H2 @@ -283,57 +286,97 @@ namespace fourdst::composition { // He3 // anders & grevesse 1989 solar mass fractions double xsol_he3,xsol_he4; - xsol_he3=2.9291e-05; - xsol_he4=2.7521e-01; + xsol_he3 = 2.9291e-05; + xsol_he4 = 2.7521e-01; massFracs.push_back(initial_y*xsol_he3/(xsol_he3 + xsol_he4)); // He4 massFracs.push_back(initial_y*xsol_he4/(xsol_he3 + xsol_he4)); // Metals + + double ztotal = 1.0-std::accumulate(massFracs.begin(), massFracs.end(), 0.0); + // multiply by atomic weight if needed if (compositions.requires_atomic_weight){ // get isotope with max abundance for each metal + // and store the corresponding mass std::vector element_atomic_weight; - - for (size_t i = 0; i < isotopes.atomic_numbers.size();) { + size_t i = 0; + while (i < isotopes.atomic_numbers.size()) { size_t Z = isotopes.atomic_numbers[i]; - if (Z<2) { + if (Z<=2) { + ++i; continue; } double max_iso = isotopes.percentages[i]; size_t loc = i; size_t j = i ; - while (jmax_iso) { - loc = j; + + if (std::ranges::contains(compositions.elements,isotopes.elements[i])) { + while (jmax_iso) { + loc = j; + } + ++j; } - ++j; + element_atomic_weight.push_back(species[loc].mass()); } - element_atomic_weight.push_back(species[loc].mass()); i=j; } - for(size_t i=0;i < compositions.abundances.size();++i){ - metal_fractions.push_back(element_atomic_weight[i]*compositions.abundances[i]); + metal_fractions.emplace(compositions.elements[i], element_atomic_weight[i]*compositions.abundances[i]); + // std::println("metal_fractions: {}", metal_fractions); } + } else { - metal_fractions = compositions.abundances; - } - - double sum = std::accumulate(metal_fractions.begin(),metal_fractions.end(),0.0); - - for(size_t i=0;i < metal_fractions.size();++i){ - metal_fractions[i] = metal_fractions[i]/sum; - } - - // Z = max(0d0, min(1d0, 1d0 - (h1 + h2 + he3 + he4))) - - for (size_t i = 0; i < isotopes.atomic_numbers.size();++i) { - if (isotopes.atomic_numbers[i]<2) { - continue; + for (const auto [E,A] : std::ranges::views::zip(compositions.elements, compositions.abundances)) { + metal_fractions.emplace(E,A); } - double frac = 1e-2*isotopes.percentages[i]*species[i].mass(); + } + double sum = [&metal_fractions]() { + double accumulator = 0.0; + for (const auto& frac : metal_fractions | std::views::values) { + accumulator += frac; + } + return accumulator; + }(); + + for (auto& frac : metal_fractions | std::views::values) { + frac/=sum; + } + + double zsum = 0.0; + + // get mass Fracs for each metal and scale it to required ztotal + for (size_t i = 0; i < species.size();++i) { + size_t Z = isotopes.atomic_numbers[i]; + if (Z<=2) continue; + + if (metal_fractions.contains(isotopes.elements[i])) { + double frac = 1e-2*isotopes.percentages[i]*species[i].mass(); + double frac_sum = 0.0; + size_t j = i ; + while (j 0.0) { + for (size_t i = 0; i < massFracs.size();++i) { + if (isotopes.atomic_numbers[i]<=2) continue; + massFracs[i] *= ztotal/zsum; + } } // @@ -341,7 +384,7 @@ namespace fourdst::composition { return comp; } - + Composition get_composition_record(const io::SolarCompositions metal_fraction_scheme, const io::IsotopicPercentages isotopic_percentage_scheme, double initial_z, diff --git a/tests/composition/sandbox/sandbox.cpp b/tests/composition/sandbox/sandbox.cpp index 196f7f5..589d130 100644 --- a/tests/composition/sandbox/sandbox.cpp +++ b/tests/composition/sandbox/sandbox.cpp @@ -23,7 +23,7 @@ int main(int argc, char** argv) { // @input: initial_z, initial_y, metal_fraction_scheme & isotopic_percentage_scheme // Options for metal_frac_scheme: ['AG89', 'GN93', 'GS98', 'L03', 'AGS05', 'AGSS09', 'A09_Przybilla', 'MB22_photospheric', 'AAG21_photospheric', 'L09'] - // Options for isotopic percentage scheme: [L03_data, L09_data] + // Options for isotopic percentage scheme: ['L03_data', 'L09_data'] double initial_z; std::string metal_fraction_scheme; @@ -50,7 +50,6 @@ int main(int argc, char** argv) { initial_y = 0.24 + 2*initial_z; isotopic_percentage_scheme = "L03_data"; - fourdst::composition::io::ChemicalFileParser parser; fourdst::composition::Composition comp; comp = fourdst::composition::get_composition_record(metal_fraction_scheme, isotopic_percentage_scheme, initial_z, initial_y); std::cout << comp << std::endl; From 376df477e3c8d472382fb5eea1f11500b59a2866 Mon Sep 17 00:00:00 2001 From: poojanagrawal Date: Thu, 4 Jun 2026 13:53:35 +0200 Subject: [PATCH 08/12] fix(Standard-Compositions): fixed the compositions that were not working --- .../composition/io/StandardAbundancesBinary.h | 2 +- .../composition/io/standard_compositions.h | 8 +-- .../lib/io/standard_compositions.cpp | 55 +++++++++---------- tests/composition/compositionTest.cpp | 5 +- 4 files changed, 34 insertions(+), 36 deletions(-) diff --git a/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h b/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h index a3d5844..ac4c05f 100644 --- a/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h +++ b/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h @@ -7,7 +7,7 @@ const unsigned char StandardAbundances[] = { 0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x69, 0x73, 0x6f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5d, 0x0a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x20, 0x4f, 0x4e, 0x3a, 0x20, 0x32, 0x30, 0x32, 0x36, 0x2d, - 0x30, 0x35, 0x2d, 0x32, 0x32, 0x0a, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x53, 0x45, 0x43, 0x54, + 0x30, 0x36, 0x2d, 0x30, 0x34, 0x0a, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x20, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0a, 0x09, 0x20, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x20, 0x5b, 0x27, 0x41, 0x47, 0x38, 0x39, 0x27, 0x2c, 0x20, 0x27, 0x47, 0x4e, 0x39, 0x33, 0x27, 0x2c, 0x20, 0x27, diff --git a/src/composition/include/fourdst/composition/io/standard_compositions.h b/src/composition/include/fourdst/composition/io/standard_compositions.h index 9ff094c..38fc77e 100644 --- a/src/composition/include/fourdst/composition/io/standard_compositions.h +++ b/src/composition/include/fourdst/composition/io/standard_compositions.h @@ -32,8 +32,8 @@ namespace fourdst::composition::io { GS98, L03, AGS05, - AGS09, - A09_Pryzbilla, + AGSS09, + A09_Przybilla, MB22_photospheric, AAG21_photospheric, L09 @@ -50,8 +50,8 @@ namespace fourdst::composition::io { {SolarCompositions::GS98, "GS98"}, {SolarCompositions::L03, "L03"}, {SolarCompositions::AGS05, "AGS05"}, - {SolarCompositions::AGS09, "AGS09"}, - {SolarCompositions::A09_Pryzbilla, "A09_Pryzbilla"}, + {SolarCompositions::AGSS09, "AGSS09"}, + {SolarCompositions::A09_Przybilla, "A09_Przybilla"}, {SolarCompositions::MB22_photospheric, "MB22_photospheric"}, {SolarCompositions::AAG21_photospheric, "AAG21_photospheric"}, {SolarCompositions::L09, "L09"} diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index 2ce2d11..c69881d 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -262,14 +262,14 @@ namespace fourdst::composition { isotopes = parser.parse_isotopic_percentage(data,isotopic_percentage_scheme); std::string name; - std::vector species; + std::vector species; + // construct name of the isotopes for all elements for (const auto [E,A] : std::ranges::views::zip(isotopes.elements, isotopes.mass_numbers)){ if (std::ranges::contains(compositions.elements,E)) { name = std::format("{}-{}",E,A); - // std::println("{}", name); - auto SpeciesObject = fourdst::atomic::species.at(name); + auto SpeciesObject = atomic::species.at(name); species.push_back(SpeciesObject); // std::println("Species: {} has mass: {}", SpeciesObject.name(), SpeciesObject.mass()); } @@ -299,35 +299,32 @@ namespace fourdst::composition { if (compositions.requires_atomic_weight){ // get isotope with max abundance for each metal - // and store the corresponding mass - std::vector element_atomic_weight; - size_t i = 0; - while (i < isotopes.atomic_numbers.size()) { - size_t Z = isotopes.atomic_numbers[i]; - if (Z<=2) { - ++i; - continue; - } - double max_iso = isotopes.percentages[i]; - size_t loc = i; - size_t j = i ; + // and store the corresponding mass number + auto element_atomic_weight = [&isotopes]() { + std::unordered_map> elem_info; - if (std::ranges::contains(compositions.elements,isotopes.elements[i])) { - while (jmax_iso) { - loc = j; - } - ++j; + for (const auto& [iso, prcnt, a] : std::views::zip(isotopes.elements, isotopes.percentages, isotopes.mass_numbers)) { + if (iso == "H" || iso == "He") { + continue; + } + if (elem_info.contains(iso) && elem_info.at(iso).first <= prcnt) { + elem_info[iso] = std::make_pair(prcnt, a); + } else if (! elem_info.contains(iso)) { + elem_info[iso] = std::make_pair(prcnt, a); } - element_atomic_weight.push_back(species[loc].mass()); } - i=j; - } - for(size_t i=0;i < compositions.abundances.size();++i){ - metal_fractions.emplace(compositions.elements[i], element_atomic_weight[i]*compositions.abundances[i]); - // std::println("metal_fractions: {}", metal_fractions); - } + return elem_info; + }(); + for (const auto [E,A] : std::ranges::views::zip(compositions.elements, compositions.abundances)) { + // std::println("element: {}", E); + auto name = std::format("{}-{}",E,element_atomic_weight.at(E).second); + // std::println("{}", name); + auto SpeciesObject = atomic::species.at(name); + double weight = SpeciesObject.mass(); + metal_fractions.emplace(E,A*weight); + // std::println("End"); + } } else { for (const auto [E,A] : std::ranges::views::zip(compositions.elements, compositions.abundances)) { metal_fractions.emplace(E,A); @@ -370,7 +367,7 @@ namespace fourdst::composition { } } - std::println("ztotal: {}, zsum:{}", ztotal, zsum); + // std::println("ztotal: {}, zsum:{}", ztotal, zsum); //Renormalize if (zsum > 0.0) { for (size_t i = 0; i < massFracs.size();++i) { diff --git a/tests/composition/compositionTest.cpp b/tests/composition/compositionTest.cpp index b63f69a..ffd74ee 100644 --- a/tests/composition/compositionTest.cpp +++ b/tests/composition/compositionTest.cpp @@ -492,9 +492,9 @@ TEST_F(compositionTest, standardSolarCompositions) { io::SolarCompositions::AG89, io::SolarCompositions::GS98, io::SolarCompositions::L03, - io::SolarCompositions::A09_Pryzbilla, + io::SolarCompositions::A09_Przybilla, io::SolarCompositions::AGS05, - io::SolarCompositions::AGS09, + io::SolarCompositions::AGSS09, io::SolarCompositions::AAG21_photospheric, io::SolarCompositions::MB22_photospheric, io::SolarCompositions::L09 @@ -511,6 +511,7 @@ TEST_F(compositionTest, standardSolarCompositions) { std::string string_comp = io::SolarCompositions_to_string_map.at(comp); std::string string_iso = io::IsotopicPercentages_to_string_map.at(iso); + // std::println("Testing: {} with {}", string_comp, string_iso); EXPECT_NO_THROW(get_composition_record(comp, iso, 0.02, 0.28)); EXPECT_NO_THROW(get_composition_record(string_comp, string_iso, 0.02, 0.28)); } From 50a5c2cd06bb80c7d4b5ef0891337e03c0acce6d Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Fri, 5 Jun 2026 10:23:53 +0200 Subject: [PATCH 09/12] MERGE: Merge standard abundances branch with updated install rules branch --- .../fourdst/composition/{ => utils}/utils.h | 0 src/composition/lib/composition.cpp | 2 +- .../lib/io/standard_compositions.cpp | 2 +- src/composition/lib/utils.cpp | 2 +- src/composition/meson.build | 29 +++++++++++++------ tests/composition/compositionTest.cpp | 3 +- tests/composition/sandbox/sandbox.cpp | 2 +- 7 files changed, 25 insertions(+), 15 deletions(-) rename src/composition/include/fourdst/composition/{ => utils}/utils.h (100%) diff --git a/src/composition/include/fourdst/composition/utils.h b/src/composition/include/fourdst/composition/utils/utils.h similarity index 100% rename from src/composition/include/fourdst/composition/utils.h rename to src/composition/include/fourdst/composition/utils/utils.h diff --git a/src/composition/lib/composition.cpp b/src/composition/lib/composition.cpp index ec25c1c..3cf3ee2 100644 --- a/src/composition/lib/composition.cpp +++ b/src/composition/lib/composition.cpp @@ -38,7 +38,7 @@ #include #include "fourdst/composition/utils/composition_hash.h" -#include "fourdst/composition/utils.h" +#include "../include/fourdst/composition/utils/utils.h" #include "fourdst/composition/exceptions/exceptions_composition.h" diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index c69881d..5bd02ad 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -4,7 +4,7 @@ #include "fourdst/composition/composition.h" #include "fourdst/atomic/atomicSpecies.h" #include "fourdst/atomic/species.h" -#include "fourdst/composition/utils.h" +#include "../../include/fourdst/composition/utils/utils.h" #include #include diff --git a/src/composition/lib/utils.cpp b/src/composition/lib/utils.cpp index 2d21910..e165972 100644 --- a/src/composition/lib/utils.cpp +++ b/src/composition/lib/utils.cpp @@ -2,7 +2,7 @@ #include "fourdst/composition/exceptions/exceptions_composition.h" #include "fourdst/atomic/atomicSpecies.h" #include "fourdst/atomic/species.h" -#include "fourdst/composition/utils.h" +#include "../include/fourdst/composition/utils/utils.h" #include "fourdst/logging/logging.h" #include diff --git a/src/composition/meson.build b/src/composition/meson.build index 91af284..3736f23 100644 --- a/src/composition/meson.build +++ b/src/composition/meson.build @@ -26,7 +26,6 @@ composition_sources = files( 'lib/utils.cpp', 'lib/decorators/composition_masked.cpp', 'lib/io/standard_compositions.cpp' - ) @@ -55,16 +54,28 @@ composition_dep = declare_dependency( composition_headers = files( 'include/fourdst/composition/composition.h', 'include/fourdst/composition/composition_abstract.h', - 'include/fourdst/composition/io/standard_compositions.h', - 'include/fourdst/composition/io/StandardAbundancesBinary.h' - ) -install_headers(composition_headers, subdir : 'fourdst/fourdst/composition') +install_headers(composition_headers, subdir : 'fourdst/composition') composition_headers_utils = files( - 'include/fourdst/composition/utils.h', + 'include/fourdst/composition/utils/utils.h', + 'include/fourdst/composition/utils/composition_hash.h' ) -install_headers(composition_headers_utils, subdir : 'fourdst/fourdst/composition/utils') +install_headers(composition_headers_utils, subdir : 'fourdst/composition/utils') + +composition_headers_io = files( + 'include/fourdst/composition/io/standard_compositions.h', + 'include/fourdst/composition/io/StandardAbundancesBinary.h' +) + +install_headers(composition_headers_io, subdir : 'fourdst/composition/io') + +composition_headers_decorators = files( + 'include/fourdst/composition/decorators/composition_masked.h', + 'include/fourdst/composition/decorators/composition_decorator_abstract.h', +) + +install_headers(composition_headers_decorators, subdir : 'fourdst/composition/decorators') composition_headers_atomic = files( 'include/fourdst/atomic/atomicSpecies.h', @@ -72,12 +83,12 @@ composition_headers_atomic = files( 'include/fourdst/atomic/species.h', ) -install_headers(composition_headers_atomic, subdir : 'fourdst/fourdst/atomic') +install_headers(composition_headers_atomic, subdir : 'fourdst/atomic') composition_exception_headers = files( 'include/fourdst/composition/exceptions/exceptions_composition.h', ) -install_headers(composition_exception_headers, subdir : 'fourdst/fourdst/composition/exceptions') +install_headers(composition_exception_headers, subdir : 'fourdst/composition/exceptions') v = meson.project_version() diff --git a/tests/composition/compositionTest.cpp b/tests/composition/compositionTest.cpp index ffd74ee..693f58d 100644 --- a/tests/composition/compositionTest.cpp +++ b/tests/composition/compositionTest.cpp @@ -9,7 +9,7 @@ #include "fourdst/atomic/species.h" #include "fourdst/composition/composition.h" #include "fourdst/composition/exceptions/exceptions_composition.h" -#include "fourdst/composition/utils.h" +#include "fourdst/composition/utils/utils.h" #include "fourdst/composition/decorators/composition_masked.h" #include "fourdst/composition/io/standard_compositions.h" #include "fourdst/composition/utils/composition_hash.h" @@ -511,7 +511,6 @@ TEST_F(compositionTest, standardSolarCompositions) { std::string string_comp = io::SolarCompositions_to_string_map.at(comp); std::string string_iso = io::IsotopicPercentages_to_string_map.at(iso); - // std::println("Testing: {} with {}", string_comp, string_iso); EXPECT_NO_THROW(get_composition_record(comp, iso, 0.02, 0.28)); EXPECT_NO_THROW(get_composition_record(string_comp, string_iso, 0.02, 0.28)); } diff --git a/tests/composition/sandbox/sandbox.cpp b/tests/composition/sandbox/sandbox.cpp index 589d130..82be862 100644 --- a/tests/composition/sandbox/sandbox.cpp +++ b/tests/composition/sandbox/sandbox.cpp @@ -4,7 +4,7 @@ #include "fourdst/composition/composition.h" #include "fourdst/atomic/atomicSpecies.h" #include "fourdst/atomic/species.h" -#include "fourdst/composition/utils.h" +#include "../../../src/composition/include/fourdst/composition/utils/utils.h" #include #include From ee7470f96959b297e2ddcb311b502c991a2e3d80 Mon Sep 17 00:00:00 2001 From: poojanagrawal Date: Fri, 5 Jun 2026 22:47:15 +0200 Subject: [PATCH 10/12] fix(standard_compositions.cpp): found and fixed h and he leaking out of the composition data added a check for H and He getting added to SpeciesObject and cleaned up some variable names and filenames --- ...esBinary.h => StandardMetalFractionsBinary.h} | 4 ++-- src/composition/lib/io/standard_compositions.cpp | 16 ++++++++-------- src/composition/meson.build | 4 ++-- tests/composition/sandbox/sandbox.cpp | 12 +----------- 4 files changed, 13 insertions(+), 23 deletions(-) rename src/composition/include/fourdst/composition/io/{StandardAbundancesBinary.h => StandardMetalFractionsBinary.h} (99%) diff --git a/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h b/src/composition/include/fourdst/composition/io/StandardMetalFractionsBinary.h similarity index 99% rename from src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h rename to src/composition/include/fourdst/composition/io/StandardMetalFractionsBinary.h index ac4c05f..3b0aa01 100644 --- a/src/composition/include/fourdst/composition/io/StandardAbundancesBinary.h +++ b/src/composition/include/fourdst/composition/io/StandardMetalFractionsBinary.h @@ -2,7 +2,7 @@ #include -const unsigned char StandardAbundances[] = { +const unsigned char StandardMetalFractions[] = { 0x53, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x20, 0x5b, 0x61, 0x62, 0x75, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x69, 0x73, 0x6f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5d, 0x0a, 0x43, @@ -1458,4 +1458,4 @@ const unsigned char StandardAbundances[] = { 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x0a, }; -const size_t StandardAbundances_len = sizeof(StandardAbundances); +const size_t StandardMetalFractions_len = sizeof(StandardMetalFractions); diff --git a/src/composition/lib/io/standard_compositions.cpp b/src/composition/lib/io/standard_compositions.cpp index c69881d..092ed73 100644 --- a/src/composition/lib/io/standard_compositions.cpp +++ b/src/composition/lib/io/standard_compositions.cpp @@ -1,5 +1,5 @@ #include "fourdst/composition/io/standard_compositions.h" -#include "fourdst/composition/io/StandardAbundancesBinary.h" +#include "fourdst/composition/io/StandardMetalFractionsBinary.h" #include "fourdst/composition/composition.h" #include "fourdst/atomic/atomicSpecies.h" @@ -252,13 +252,13 @@ namespace fourdst::composition { std::vector data; io::ChemicalFileParser parser; - io::CompositionData compositions; + io::CompositionData metals; io::IsotopicPercentage isotopes; - data = std::ranges::to>(StandardAbundances); + data = std::ranges::to>(StandardMetalFractions); - compositions = parser.parse_compositon_data(data,metal_fraction_scheme); + metals = parser.parse_compositon_data(data,metal_fraction_scheme); isotopes = parser.parse_isotopic_percentage(data,isotopic_percentage_scheme); std::string name; @@ -267,7 +267,7 @@ namespace fourdst::composition { // construct name of the isotopes for all elements for (const auto [E,A] : std::ranges::views::zip(isotopes.elements, isotopes.mass_numbers)){ - if (std::ranges::contains(compositions.elements,E)) { + if (std::ranges::contains(metals.elements,E ) || E == "H" || E == "He") { name = std::format("{}-{}",E,A); auto SpeciesObject = atomic::species.at(name); species.push_back(SpeciesObject); @@ -297,7 +297,7 @@ namespace fourdst::composition { // multiply by atomic weight if needed - if (compositions.requires_atomic_weight){ + if (metals.requires_atomic_weight){ // get isotope with max abundance for each metal // and store the corresponding mass number auto element_atomic_weight = [&isotopes]() { @@ -316,7 +316,7 @@ namespace fourdst::composition { return elem_info; }(); - for (const auto [E,A] : std::ranges::views::zip(compositions.elements, compositions.abundances)) { + for (const auto [E,A] : std::ranges::views::zip(metals.elements, metals.abundances)) { // std::println("element: {}", E); auto name = std::format("{}-{}",E,element_atomic_weight.at(E).second); // std::println("{}", name); @@ -326,7 +326,7 @@ namespace fourdst::composition { // std::println("End"); } } else { - for (const auto [E,A] : std::ranges::views::zip(compositions.elements, compositions.abundances)) { + for (const auto [E,A] : std::ranges::views::zip(metals.elements, metals.abundances)) { metal_fractions.emplace(E,A); } } diff --git a/src/composition/meson.build b/src/composition/meson.build index 91af284..fa4658e 100644 --- a/src/composition/meson.build +++ b/src/composition/meson.build @@ -6,7 +6,7 @@ required_headers = [ 'fourdst/composition/composition_abstract.h', 'fourdst/composition/exceptions/exceptions_composition.h', 'fourdst/composition/io/standard_compositions.h', - 'fourdst/composition/io/StandardAbundancesBinary.h' + 'fourdst/composition/io/StandardMetalFractionsBinary.h' ] foreach h : required_headers @@ -56,7 +56,7 @@ composition_headers = files( 'include/fourdst/composition/composition.h', 'include/fourdst/composition/composition_abstract.h', 'include/fourdst/composition/io/standard_compositions.h', - 'include/fourdst/composition/io/StandardAbundancesBinary.h' + 'include/fourdst/composition/io/StandardMetalFractionsBinary.h' ) install_headers(composition_headers, subdir : 'fourdst/fourdst/composition') diff --git a/tests/composition/sandbox/sandbox.cpp b/tests/composition/sandbox/sandbox.cpp index 589d130..b2a3095 100644 --- a/tests/composition/sandbox/sandbox.cpp +++ b/tests/composition/sandbox/sandbox.cpp @@ -1,21 +1,12 @@ #include "fourdst/composition/io/standard_compositions.h" -#include "fourdst/composition/io/StandardAbundancesBinary.h" - #include "fourdst/composition/composition.h" -#include "fourdst/atomic/atomicSpecies.h" #include "fourdst/atomic/species.h" -#include "fourdst/composition/utils.h" #include #include -#include -#include #include -#include #include -#include #include -#include #include "CLI/CLI.hpp" int main(int argc, char** argv) { @@ -32,7 +23,7 @@ int main(int argc, char** argv) { CLI::App app("Example App To Load Solar Composition"); app.add_option("-z,--initial_z", initial_z, "Initial Z")->required(); - app.add_option("-c,--solar-composition", metal_fraction_scheme)-> + app.add_option("-c,--metal-fraction-scheme", metal_fraction_scheme)-> check( CLI::IsMember( keys, @@ -46,7 +37,6 @@ int main(int argc, char** argv) { // the following four should be user input // initial_y can be optional - // initial_z = 0.02; initial_y = 0.24 + 2*initial_z; isotopic_percentage_scheme = "L03_data"; From 46b7a12fe7a241199e5c5a7d1dcefce09a51b960 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Mon, 8 Jun 2026 09:08:11 -0400 Subject: [PATCH 11/12] build(headers): installing headers to correct location --- meson.build | 1 - src/composition/meson.build | 6 ++++++ subprojects/libconfig.wrap | 2 +- subprojects/libconstants.wrap | 2 +- subprojects/liblogging.wrap | 2 +- tests/composition/compositionTest.cpp | 4 ++-- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index 922b2b8..93fc895 100644 --- a/meson.build +++ b/meson.build @@ -51,7 +51,6 @@ if get_option('pkg_config') description: 'Composition module for SERiF and related projects', version: meson.project_version(), libraries: [libcomposition], - subdirs: ['fourdst'], filebase: 'fourdst_composition', install_dir: join_paths(get_option('libdir'), 'pkgconfig') ) diff --git a/src/composition/meson.build b/src/composition/meson.build index 4741ef4..ca7836a 100644 --- a/src/composition/meson.build +++ b/src/composition/meson.build @@ -90,6 +90,12 @@ composition_exception_headers = files( ) install_headers(composition_exception_headers, subdir : 'fourdst/composition/exceptions') +composition_iterator_headers = files( + 'include/fourdst/composition/iterators/composition_abstract_iterator.h', +) + +install_headers(composition_iterator_headers, subdir : 'fourdst/composition/iterators') + v = meson.project_version() conf_data = configuration_data() diff --git a/subprojects/libconfig.wrap b/subprojects/libconfig.wrap index ba46330..90fd85d 100644 --- a/subprojects/libconfig.wrap +++ b/subprojects/libconfig.wrap @@ -1,6 +1,6 @@ [wrap-git] url = https://github.com/4D-STAR/libconfig.git -revision = v2.0.2 +revision = v2.2.6 depth = 1 [provide] diff --git a/subprojects/libconstants.wrap b/subprojects/libconstants.wrap index bdf9f60..a0acb4e 100644 --- a/subprojects/libconstants.wrap +++ b/subprojects/libconstants.wrap @@ -1,6 +1,6 @@ [wrap-git] url = https://github.com/4D-STAR/libconstants.git -revision = v1.1.1 +revision = v1.1.2 depth = 1 [provide] diff --git a/subprojects/liblogging.wrap b/subprojects/liblogging.wrap index 48bea5a..33a7d1f 100644 --- a/subprojects/liblogging.wrap +++ b/subprojects/liblogging.wrap @@ -1,6 +1,6 @@ [wrap-git] url = https://github.com/4D-STAR/liblogging.git -revision = v1.1.1 +revision = v1.1.2 depth = 1 [provide] diff --git a/tests/composition/compositionTest.cpp b/tests/composition/compositionTest.cpp index 693f58d..5226a88 100644 --- a/tests/composition/compositionTest.cpp +++ b/tests/composition/compositionTest.cpp @@ -511,8 +511,8 @@ TEST_F(compositionTest, standardSolarCompositions) { std::string string_comp = io::SolarCompositions_to_string_map.at(comp); std::string string_iso = io::IsotopicPercentages_to_string_map.at(iso); - EXPECT_NO_THROW(get_composition_record(comp, iso, 0.02, 0.28)); - EXPECT_NO_THROW(get_composition_record(string_comp, string_iso, 0.02, 0.28)); + EXPECT_NO_THROW((void)get_composition_record(comp, iso, 0.02, 0.28)); + EXPECT_NO_THROW((void)get_composition_record(string_comp, string_iso, 0.02, 0.28)); } } From d4525104c3530796c2c00ea5fdfe16293149ea7e Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Mon, 8 Jun 2026 09:13:45 -0400 Subject: [PATCH 12/12] docs(version): v2.3.1 -> v2.4.0 This version brings standard solar compositions from MESA (PR/10) changes --- Doxyfile | 2 +- meson.build | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Doxyfile b/Doxyfile index 2790fd2..188636a 100644 --- a/Doxyfile +++ b/Doxyfile @@ -48,7 +48,7 @@ PROJECT_NAME = fourdst::libcomposition # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v2.3.1 +PROJECT_NUMBER = v2.4.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewers a diff --git a/meson.build b/meson.build index 93fc895..2a14d9d 100644 --- a/meson.build +++ b/meson.build @@ -18,7 +18,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # *********************************************************************** # -project('libcomposition', 'cpp', version: 'v2.3.1', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0') +project('libcomposition', 'cpp', version: 'v2.4.0', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0') # Add default visibility for all C++ targets add_project_arguments('-fvisibility=default', language: 'cpp')