diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/attribute.def | 5 | ||||
-rw-r--r-- | include/tosa_generated.h | 65 | ||||
-rw-r--r-- | include/tosa_schema.h | 355 | ||||
-rw-r--r-- | include/tosa_serialization_handler.h | 1 |
4 files changed, 366 insertions, 60 deletions
diff --git a/include/attribute.def b/include/attribute.def index 0e97629..52d5179 100644 --- a/include/attribute.def +++ b/include/attribute.def @@ -57,10 +57,7 @@ DEF_ATTRIBUTE(Pad, 1, DEF_ATTRIBUTE(Axis, 1, int32_t, S, axis) -DEF_ATTRIBUTE(Resize, 4, - int16_t, V, scale, - int16_t, V, offset, - int16_t, V, border, +DEF_ATTRIBUTE(Resize, 1, ResizeMode, S, mode) DEF_ATTRIBUTE(Clamp, 2, diff --git a/include/tosa_generated.h b/include/tosa_generated.h index c907c89..994b72c 100644 --- a/include/tosa_generated.h +++ b/include/tosa_generated.h @@ -10,7 +10,7 @@ // generated, otherwise it may not be compatible. static_assert(FLATBUFFERS_VERSION_MAJOR == 24 && FLATBUFFERS_VERSION_MINOR == 3 && - FLATBUFFERS_VERSION_REVISION == 7, + FLATBUFFERS_VERSION_REVISION == 25, "Non-compatible flatbuffers version included"); namespace tosa { @@ -277,11 +277,12 @@ enum Op : uint32_t { Op_DIV_SHAPE = 78, Op_COS = 79, Op_SIN = 80, + Op_CAST_STOCHASTIC = 81, Op_MIN = Op_UNKNOWN, - Op_MAX = Op_SIN + Op_MAX = Op_CAST_STOCHASTIC }; -inline const Op (&EnumValuesOp())[81] { +inline const Op (&EnumValuesOp())[82] { static const Op values[] = { Op_UNKNOWN, Op_ARGMAX, @@ -363,13 +364,14 @@ inline const Op (&EnumValuesOp())[81] { Op_MUL_SHAPE, Op_DIV_SHAPE, Op_COS, - Op_SIN + Op_SIN, + Op_CAST_STOCHASTIC }; return values; } inline const char * const *EnumNamesOp() { - static const char * const names[82] = { + static const char * const names[83] = { "UNKNOWN", "ARGMAX", "AVG_POOL2D", @@ -451,13 +453,14 @@ inline const char * const *EnumNamesOp() { "DIV_SHAPE", "COS", "SIN", + "CAST_STOCHASTIC", nullptr }; return names; } inline const char *EnumNameOp(Op e) { - if (::flatbuffers::IsOutRange(e, Op_UNKNOWN, Op_SIN)) return ""; + if (::flatbuffers::IsOutRange(e, Op_UNKNOWN, Op_CAST_STOCHASTIC)) return ""; const size_t index = static_cast<size_t>(e); return EnumNamesOp()[index]; } @@ -1087,31 +1090,13 @@ inline ::flatbuffers::Offset<AxisAttribute> CreateAxisAttribute( struct ResizeAttribute FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { typedef ResizeAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SCALE = 4, - VT_OFFSET = 6, - VT_BORDER = 8, VT_MODE = 10 }; - const ::flatbuffers::Vector<int16_t> *scale() const { - return GetPointer<const ::flatbuffers::Vector<int16_t> *>(VT_SCALE); - } - const ::flatbuffers::Vector<int16_t> *offset() const { - return GetPointer<const ::flatbuffers::Vector<int16_t> *>(VT_OFFSET); - } - const ::flatbuffers::Vector<int16_t> *border() const { - return GetPointer<const ::flatbuffers::Vector<int16_t> *>(VT_BORDER); - } tosa::ResizeMode mode() const { return static_cast<tosa::ResizeMode>(GetField<uint32_t>(VT_MODE, 0)); } bool Verify(::flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_SCALE) && - verifier.VerifyVector(scale()) && - VerifyOffset(verifier, VT_OFFSET) && - verifier.VerifyVector(offset()) && - VerifyOffset(verifier, VT_BORDER) && - verifier.VerifyVector(border()) && VerifyField<uint32_t>(verifier, VT_MODE, 4) && verifier.EndTable(); } @@ -1121,15 +1106,6 @@ struct ResizeAttributeBuilder { typedef ResizeAttribute Table; ::flatbuffers::FlatBufferBuilder &fbb_; ::flatbuffers::uoffset_t start_; - void add_scale(::flatbuffers::Offset<::flatbuffers::Vector<int16_t>> scale) { - fbb_.AddOffset(ResizeAttribute::VT_SCALE, scale); - } - void add_offset(::flatbuffers::Offset<::flatbuffers::Vector<int16_t>> offset) { - fbb_.AddOffset(ResizeAttribute::VT_OFFSET, offset); - } - void add_border(::flatbuffers::Offset<::flatbuffers::Vector<int16_t>> border) { - fbb_.AddOffset(ResizeAttribute::VT_BORDER, border); - } void add_mode(tosa::ResizeMode mode) { fbb_.AddElement<uint32_t>(ResizeAttribute::VT_MODE, static_cast<uint32_t>(mode), 0); } @@ -1146,35 +1122,12 @@ struct ResizeAttributeBuilder { inline ::flatbuffers::Offset<ResizeAttribute> CreateResizeAttribute( ::flatbuffers::FlatBufferBuilder &_fbb, - ::flatbuffers::Offset<::flatbuffers::Vector<int16_t>> scale = 0, - ::flatbuffers::Offset<::flatbuffers::Vector<int16_t>> offset = 0, - ::flatbuffers::Offset<::flatbuffers::Vector<int16_t>> border = 0, tosa::ResizeMode mode = tosa::ResizeMode_UNKNOWN) { ResizeAttributeBuilder builder_(_fbb); builder_.add_mode(mode); - builder_.add_border(border); - builder_.add_offset(offset); - builder_.add_scale(scale); return builder_.Finish(); } -inline ::flatbuffers::Offset<ResizeAttribute> CreateResizeAttributeDirect( - ::flatbuffers::FlatBufferBuilder &_fbb, - const std::vector<int16_t> *scale = nullptr, - const std::vector<int16_t> *offset = nullptr, - const std::vector<int16_t> *border = nullptr, - tosa::ResizeMode mode = tosa::ResizeMode_UNKNOWN) { - auto scale__ = scale ? _fbb.CreateVector<int16_t>(*scale) : 0; - auto offset__ = offset ? _fbb.CreateVector<int16_t>(*offset) : 0; - auto border__ = border ? _fbb.CreateVector<int16_t>(*border) : 0; - return tosa::CreateResizeAttribute( - _fbb, - scale__, - offset__, - border__, - mode); -} - struct ClampAttribute FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { typedef ClampAttributeBuilder Builder; enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { diff --git a/include/tosa_schema.h b/include/tosa_schema.h new file mode 100644 index 0000000..0d645de --- /dev/null +++ b/include/tosa_schema.h @@ -0,0 +1,355 @@ +const char TOSA_SCHEMA[] = { +0x0a, 0x2f, 0x2f, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, +0x29, 0x20, 0x32, 0x30, 0x32, 0x30, 0x2d, 0x32, 0x30, 0x32, 0x34, 0x2c, 0x20, 0x41, 0x52, 0x4d, +0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, +0x20, 0x20, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, +0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x63, +0x65, 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x32, 0x2e, +0x30, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x22, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, +0x29, 0x3b, 0x0a, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x6d, 0x61, 0x79, +0x20, 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, +0x6c, 0x65, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, +0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, +0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x0a, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, +0x59, 0x6f, 0x75, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x6f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x61, +0x20, 0x63, 0x6f, 0x70, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x63, +0x65, 0x6e, 0x73, 0x65, 0x20, 0x61, 0x74, 0x0a, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, +0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x69, 0x63, 0x65, +0x6e, 0x73, 0x65, 0x73, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x2d, 0x32, 0x2e, 0x30, +0x0a, 0x2f, 0x2f, 0x0a, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x55, 0x6e, 0x6c, 0x65, 0x73, 0x73, +0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x70, 0x70, +0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6c, 0x61, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x61, +0x67, 0x72, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x20, 0x77, 0x72, 0x69, 0x74, +0x69, 0x6e, 0x67, 0x2c, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x0a, 0x2f, 0x2f, +0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, +0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, +0x65, 0x20, 0x69, 0x73, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, +0x20, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x22, 0x41, 0x53, 0x20, 0x49, 0x53, 0x22, 0x20, 0x42, +0x41, 0x53, 0x49, 0x53, 0x2c, 0x0a, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x57, 0x49, 0x54, 0x48, +0x4f, 0x55, 0x54, 0x20, 0x57, 0x41, 0x52, 0x52, 0x41, 0x4e, 0x54, 0x49, 0x45, 0x53, 0x20, 0x4f, +0x52, 0x20, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x20, 0x4f, 0x46, 0x20, +0x41, 0x4e, 0x59, 0x20, 0x4b, 0x49, 0x4e, 0x44, 0x2c, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, +0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c, +0x69, 0x65, 0x64, 0x2e, 0x0a, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x65, 0x20, 0x74, +0x68, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, +0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x6c, 0x61, 0x6e, 0x67, +0x75, 0x61, 0x67, 0x65, 0x20, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x70, +0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x0a, 0x2f, +0x2f, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, +0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, +0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x74, +0x6f, 0x73, 0x61, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6f, +0x72, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, +0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, +0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x22, 0x54, 0x4f, 0x53, 0x41, 0x22, +0x3b, 0x0a, 0x2f, 0x2f, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, +0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, +0x65, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x65, +0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x22, 0x74, 0x6f, 0x73, 0x61, 0x22, 0x3b, +0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x76, +0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, +0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, +0x20, 0x62, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x0a, 0x2f, 0x2f, 0x20, 0x61, 0x74, +0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, +0x6c, 0x69, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, +0x20, 0x6b, 0x65, 0x65, 0x70, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x73, 0x74, 0x61, +0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x44, 0x54, 0x79, 0x70, 0x65, +0x3a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x55, 0x4e, 0x4b, 0x4e, +0x4f, 0x57, 0x4e, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x42, 0x4f, 0x4f, 0x4c, 0x2c, +0x0a, 0x20, 0x20, 0x55, 0x49, 0x4e, 0x54, 0x38, 0x2c, 0x0a, 0x20, 0x20, 0x49, 0x4e, 0x54, 0x34, +0x2c, 0x0a, 0x20, 0x20, 0x49, 0x4e, 0x54, 0x38, 0x2c, 0x0a, 0x20, 0x20, 0x49, 0x4e, 0x54, 0x31, +0x36, 0x2c, 0x0a, 0x20, 0x20, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x49, 0x4e, +0x54, 0x34, 0x38, 0x2c, 0x0a, 0x20, 0x20, 0x46, 0x50, 0x33, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x55, +0x49, 0x4e, 0x54, 0x31, 0x36, 0x2c, 0x0a, 0x20, 0x20, 0x46, 0x50, 0x31, 0x36, 0x2c, 0x0a, 0x20, +0x20, 0x42, 0x46, 0x31, 0x36, 0x2c, 0x0a, 0x20, 0x20, 0x53, 0x48, 0x41, 0x50, 0x45, 0x2c, 0x0a, +0x20, 0x20, 0x46, 0x50, 0x38, 0x45, 0x34, 0x4d, 0x33, 0x2c, 0x0a, 0x20, 0x20, 0x46, 0x50, 0x38, +0x45, 0x35, 0x4d, 0x32, 0x2c, 0x0a, 0x7d, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x52, 0x65, +0x73, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x20, +0x7b, 0x0a, 0x20, 0x20, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x20, 0x3d, 0x20, 0x30, 0x2c, +0x0a, 0x20, 0x20, 0x4e, 0x45, 0x41, 0x52, 0x45, 0x53, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x42, 0x49, +0x4c, 0x49, 0x4e, 0x45, 0x41, 0x52, 0x2c, 0x0a, 0x7d, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x20, +0x4f, 0x70, 0x3a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x55, 0x4e, +0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x41, 0x52, 0x47, +0x4d, 0x41, 0x58, 0x2c, 0x0a, 0x20, 0x20, 0x41, 0x56, 0x47, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x32, +0x44, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x4f, 0x4e, 0x56, 0x32, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x43, +0x4f, 0x4e, 0x56, 0x33, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x44, 0x45, 0x50, 0x54, 0x48, 0x57, 0x49, +0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x32, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x46, 0x55, 0x4c, +0x4c, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x2c, 0x0a, 0x20, 0x20, +0x4d, 0x41, 0x54, 0x4d, 0x55, 0x4c, 0x2c, 0x0a, 0x20, 0x20, 0x4d, 0x41, 0x58, 0x5f, 0x50, 0x4f, +0x4f, 0x4c, 0x32, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x53, +0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x32, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x4c, 0x41, 0x4d, +0x50, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x2c, 0x0a, 0x20, +0x20, 0x53, 0x49, 0x47, 0x4d, 0x4f, 0x49, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x54, 0x41, 0x4e, 0x48, +0x2c, 0x0a, 0x20, 0x20, 0x41, 0x44, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x41, 0x52, 0x49, 0x54, 0x48, +0x4d, 0x45, 0x54, 0x49, 0x43, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x48, 0x49, 0x46, +0x54, 0x2c, 0x0a, 0x20, 0x20, 0x42, 0x49, 0x54, 0x57, 0x49, 0x53, 0x45, 0x5f, 0x41, 0x4e, 0x44, +0x2c, 0x0a, 0x20, 0x20, 0x42, 0x49, 0x54, 0x57, 0x49, 0x53, 0x45, 0x5f, 0x4f, 0x52, 0x2c, 0x0a, +0x20, 0x20, 0x42, 0x49, 0x54, 0x57, 0x49, 0x53, 0x45, 0x5f, 0x58, 0x4f, 0x52, 0x2c, 0x0a, 0x20, +0x20, 0x49, 0x4e, 0x54, 0x44, 0x49, 0x56, 0x2c, 0x0a, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x49, 0x43, +0x41, 0x4c, 0x5f, 0x41, 0x4e, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, +0x4c, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x48, 0x49, 0x46, 0x54, 0x2c, 0x0a, 0x20, 0x20, +0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x48, +0x49, 0x46, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x4f, +0x52, 0x2c, 0x0a, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x58, 0x4f, 0x52, +0x2c, 0x0a, 0x20, 0x20, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x4d, +0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x4d, 0x55, 0x4c, 0x2c, 0x0a, 0x20, +0x20, 0x50, 0x4f, 0x57, 0x2c, 0x0a, 0x20, 0x20, 0x53, 0x55, 0x42, 0x2c, 0x0a, 0x20, 0x20, 0x54, +0x41, 0x42, 0x4c, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x41, 0x42, 0x53, 0x2c, 0x0a, 0x20, 0x20, 0x42, +0x49, 0x54, 0x57, 0x49, 0x53, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x45, +0x49, 0x4c, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x4c, 0x5a, 0x2c, 0x0a, 0x20, 0x20, 0x45, 0x58, 0x50, +0x2c, 0x0a, 0x20, 0x20, 0x46, 0x4c, 0x4f, 0x4f, 0x52, 0x2c, 0x0a, 0x20, 0x20, 0x4c, 0x4f, 0x47, +0x2c, 0x0a, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x2c, +0x0a, 0x20, 0x20, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x43, +0x49, 0x50, 0x52, 0x4f, 0x43, 0x41, 0x4c, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x53, 0x51, 0x52, 0x54, +0x2c, 0x0a, 0x20, 0x20, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x45, 0x51, +0x55, 0x41, 0x4c, 0x2c, 0x0a, 0x20, 0x20, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x2c, 0x0a, +0x20, 0x20, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x2c, +0x0a, 0x20, 0x20, 0x52, 0x45, 0x44, 0x55, 0x43, 0x45, 0x5f, 0x41, 0x4e, 0x59, 0x2c, 0x0a, 0x20, +0x20, 0x52, 0x45, 0x44, 0x55, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x2c, 0x0a, 0x20, 0x20, 0x52, +0x45, 0x44, 0x55, 0x43, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x44, +0x55, 0x43, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x44, 0x55, 0x43, +0x45, 0x5f, 0x50, 0x52, 0x4f, 0x44, 0x55, 0x43, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x44, +0x55, 0x43, 0x45, 0x5f, 0x53, 0x55, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x4f, 0x4e, 0x43, 0x41, +0x54, 0x2c, 0x0a, 0x20, 0x20, 0x50, 0x41, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x53, 0x48, +0x41, 0x50, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x2c, 0x0a, +0x20, 0x20, 0x53, 0x4c, 0x49, 0x43, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x54, 0x49, 0x4c, 0x45, 0x2c, +0x0a, 0x20, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x53, 0x45, 0x2c, 0x0a, 0x20, 0x20, +0x47, 0x41, 0x54, 0x48, 0x45, 0x52, 0x2c, 0x0a, 0x20, 0x20, 0x53, 0x43, 0x41, 0x54, 0x54, 0x45, +0x52, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x53, 0x49, 0x5a, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x43, +0x41, 0x53, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x45, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x2c, 0x0a, +0x20, 0x20, 0x43, 0x4f, 0x4e, 0x53, 0x54, 0x2c, 0x0a, 0x20, 0x20, 0x49, 0x44, 0x45, 0x4e, 0x54, +0x49, 0x54, 0x59, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x2c, 0x0a, 0x20, +0x20, 0x43, 0x4f, 0x4e, 0x44, 0x5f, 0x49, 0x46, 0x2c, 0x0a, 0x20, 0x20, 0x57, 0x48, 0x49, 0x4c, +0x45, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x2c, 0x0a, 0x20, 0x20, 0x46, 0x46, 0x54, 0x32, 0x44, 0x2c, +0x0a, 0x20, 0x20, 0x52, 0x46, 0x46, 0x54, 0x32, 0x44, 0x2c, 0x0a, 0x20, 0x20, 0x45, 0x52, 0x46, +0x2c, 0x0a, 0x20, 0x20, 0x44, 0x49, 0x4d, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x4f, 0x4e, 0x53, 0x54, +0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x4f, 0x4e, 0x43, 0x41, 0x54, +0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x41, 0x44, 0x44, 0x5f, 0x53, 0x48, +0x41, 0x50, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x53, 0x55, 0x42, 0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, +0x2c, 0x0a, 0x20, 0x20, 0x4d, 0x55, 0x4c, 0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, 0x2c, 0x0a, 0x20, +0x20, 0x44, 0x49, 0x56, 0x5f, 0x53, 0x48, 0x41, 0x50, 0x45, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x4f, +0x53, 0x2c, 0x0a, 0x20, 0x20, 0x53, 0x49, 0x4e, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x41, 0x53, 0x54, +0x5f, 0x53, 0x54, 0x4f, 0x43, 0x48, 0x41, 0x53, 0x54, 0x49, 0x43, 0x2c, 0x0a, 0x7d, 0x0a, 0x0a, +0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, +0x7b, 0x0a, 0x20, 0x20, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, +0x65, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, +0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x43, +0x6f, 0x6e, 0x76, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, +0x50, 0x61, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, +0x41, 0x78, 0x69, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, +0x20, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, +0x2c, 0x0a, 0x20, 0x20, 0x43, 0x6c, 0x61, 0x6d, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, +0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x41, 0x74, 0x74, +0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x4d, 0x75, 0x6c, 0x41, 0x74, 0x74, +0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x41, 0x72, 0x69, 0x74, 0x68, 0x6d, +0x65, 0x74, 0x69, 0x63, 0x52, 0x69, 0x67, 0x68, 0x74, 0x53, 0x68, 0x69, 0x66, 0x74, 0x41, 0x74, +0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x6f, 0x6e, 0x64, 0x49, +0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x57, 0x68, +0x69, 0x6c, 0x65, 0x4c, 0x6f, 0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, +0x2c, 0x0a, 0x20, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x74, 0x74, +0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, +0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x4d, 0x61, 0x74, 0x4d, +0x75, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x46, +0x75, 0x6c, 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, +0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x65, +0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x43, 0x75, 0x73, +0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, +0x46, 0x46, 0x54, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x20, 0x20, +0x52, 0x46, 0x46, 0x54, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2c, 0x0a, 0x7d, +0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, +0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x70, 0x61, 0x64, 0x3a, 0x20, 0x5b, +0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, +0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x72, +0x69, 0x64, 0x65, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, +0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, +0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, +0x74, 0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x61, 0x63, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3a, +0x20, 0x44, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, +0x20, 0x43, 0x6f, 0x6e, 0x76, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, +0x0a, 0x20, 0x20, 0x70, 0x61, 0x64, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, +0x0a, 0x20, 0x20, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x33, +0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x64, 0x69, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, +0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, +0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x77, 0x65, +0x69, 0x67, 0x68, 0x74, 0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, +0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x20, 0x62, +0x6f, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x61, 0x63, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3a, +0x20, 0x44, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, +0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x41, 0x74, +0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x5f, +0x70, 0x61, 0x64, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, +0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, +0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, +0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x7a, 0x70, 0x3a, +0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, +0x62, 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x61, +0x63, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x44, 0x54, 0x79, 0x70, 0x65, 0x3b, 0x0a, +0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x61, 0x64, 0x41, 0x74, 0x74, 0x72, +0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x70, 0x61, 0x64, 0x5f, 0x63, 0x6f, +0x6e, 0x73, 0x74, 0x3a, 0x20, 0x5b, 0x75, 0x62, 0x79, 0x74, 0x65, 0x5d, 0x20, 0x28, 0x66, 0x6f, +0x72, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, 0x38, 0x29, 0x3b, 0x0a, 0x7d, +0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x41, 0x78, 0x69, 0x73, 0x41, 0x74, 0x74, 0x72, +0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x61, 0x78, 0x69, 0x73, 0x3a, 0x20, +0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, +0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, +0x7b, 0x0a, 0x20, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x31, +0x36, 0x5d, 0x20, 0x28, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x29, 0x3b, +0x0a, 0x20, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x31, +0x36, 0x5d, 0x20, 0x28, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x29, 0x3b, +0x0a, 0x20, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x20, 0x5b, 0x69, 0x6e, 0x74, 0x31, +0x36, 0x5d, 0x20, 0x28, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x29, 0x3b, +0x0a, 0x20, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x3a, 0x20, 0x52, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x4d, +0x6f, 0x64, 0x65, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x43, 0x6c, +0x61, 0x6d, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, +0x20, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x3a, 0x20, 0x5b, 0x75, 0x62, 0x79, 0x74, 0x65, +0x5d, 0x20, 0x28, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x20, +0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x3a, 0x20, 0x5b, +0x75, 0x62, 0x79, 0x74, 0x65, 0x5d, 0x20, 0x28, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x6c, +0x69, 0x67, 0x6e, 0x3a, 0x20, 0x38, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, +0x65, 0x20, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, +0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x7a, 0x70, 0x3a, +0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, +0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x63, +0x61, 0x6c, 0x65, 0x33, 0x32, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x64, +0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, +0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, +0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, +0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x0a, +0x20, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, +0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, +0x65, 0x20, 0x4d, 0x75, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, +0x0a, 0x20, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, +0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x41, 0x72, 0x69, 0x74, 0x68, 0x6d, +0x65, 0x74, 0x69, 0x63, 0x52, 0x69, 0x67, 0x68, 0x74, 0x53, 0x68, 0x69, 0x66, 0x74, 0x41, 0x74, +0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x6f, 0x75, 0x6e, +0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, +0x65, 0x20, 0x43, 0x6f, 0x6e, 0x64, 0x49, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, +0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, +0x3a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, +0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x3a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3b, 0x0a, +0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x4c, 0x6f, +0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, +0x63, 0x6f, 0x6e, 0x64, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x3a, 0x20, 0x73, 0x74, 0x72, 0x69, +0x6e, 0x67, 0x3b, 0x0a, 0x20, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x67, 0x72, 0x61, 0x70, 0x68, +0x3a, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, +0x6c, 0x65, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x74, 0x74, 0x72, +0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x73, 0x3a, +0x20, 0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, +0x6c, 0x65, 0x20, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, +0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3a, 0x20, 0x5b, 0x69, 0x6e, +0x74, 0x31, 0x36, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x4d, +0x61, 0x74, 0x4d, 0x75, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, +0x0a, 0x20, 0x20, 0x61, 0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, +0x20, 0x20, 0x62, 0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x7d, +0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x46, 0x75, 0x6c, 0x6c, 0x79, 0x43, 0x6f, 0x6e, +0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, +0x7b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, +0x74, 0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x7a, 0x70, +0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, +0x65, 0x20, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, +0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x5f, 0x7a, 0x70, 0x3a, +0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, +0x5f, 0x7a, 0x70, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, +0x61, 0x62, 0x6c, 0x65, 0x20, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, +0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, +0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x20, +0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x73, 0x74, 0x72, +0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, +0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x73, 0x3a, 0x5b, 0x75, 0x62, 0x79, +0x74, 0x65, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x46, 0x46, +0x54, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, +0x6e, 0x76, 0x65, 0x72, 0x73, 0x65, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x0a, 0x20, 0x20, +0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, +0x6c, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x52, 0x46, 0x46, 0x54, +0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x6c, 0x6f, +0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, +0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, +0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x3a, 0x20, 0x69, 0x6e, +0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x2d, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x69, 0x6e, +0x6f, 0x72, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x20, 0x3d, 0x20, 0x2d, 0x31, 0x3b, 0x0a, +0x20, 0x20, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x20, +0x3d, 0x20, 0x2d, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x64, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x20, +0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, +0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x54, 0x6f, 0x73, 0x61, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, +0x20, 0x7b, 0x0a, 0x20, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, +0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, +0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2c, 0x20, 0x75, 0x73, +0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x6f, 0x6c, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x64, +0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x0a, 0x20, 0x20, 0x73, 0x68, 0x61, 0x70, +0x65, 0x3a, 0x5b, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5d, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, +0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, +0x6e, 0x73, 0x6f, 0x72, 0x0a, 0x20, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x44, 0x54, 0x79, 0x70, +0x65, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x64, 0x61, 0x74, 0x61, +0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x6e, +0x73, 0x6f, 0x72, 0x0a, 0x20, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x20, 0x5b, 0x75, 0x62, 0x79, +0x74, 0x65, 0x5d, 0x20, 0x28, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x67, 0x6e, +0x3a, 0x20, 0x38, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x72, 0x61, 0x77, 0x20, 0x64, +0x61, 0x74, 0x61, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x27, +0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x65, 0x6e, +0x73, 0x6f, 0x72, 0x2e, 0x0a, 0x20, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x3a, +0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x69, 0x73, 0x20, 0x74, +0x68, 0x69, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, +0x65, 0x6e, 0x73, 0x6f, 0x72, 0x0a, 0x20, 0x20, 0x69, 0x73, 0x5f, 0x75, 0x6e, 0x72, 0x61, 0x6e, +0x6b, 0x65, 0x64, 0x3a, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x77, 0x68, 0x65, +0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6e, 0x20, +0x75, 0x6e, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x64, 0x20, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x0a, +0x20, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3a, +0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, +0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, +0x74, 0x65, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x54, 0x6f, 0x73, 0x61, +0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x6f, 0x70, 0x3a, +0x4f, 0x70, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, +0x6f, 0x72, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x0a, 0x20, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, +0x75, 0x74, 0x65, 0x3a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x3b, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x72, +0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, +0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, +0x75, 0x74, 0x73, 0x3a, 0x5b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5d, 0x3b, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, +0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x6e, +0x61, 0x6d, 0x65, 0x73, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x3a, 0x5b, +0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5d, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x2f, 0x2f, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6f, 0x75, 0x74, 0x70, +0x75, 0x74, 0x20, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x0a, +0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x54, 0x6f, 0x73, 0x61, 0x42, 0x61, 0x73, +0x69, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x6e, 0x61, 0x6d, 0x65, +0x3a, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x62, 0x61, 0x73, 0x69, 0x63, 0x20, 0x62, +0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x0a, 0x20, 0x20, 0x6f, 0x70, 0x65, 0x72, +0x61, 0x74, 0x6f, 0x72, 0x73, 0x3a, 0x5b, 0x54, 0x6f, 0x73, 0x61, 0x4f, 0x70, 0x65, 0x72, 0x61, +0x74, 0x6f, 0x72, 0x5d, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, +0x72, 0x73, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x20, 0x20, 0x74, 0x65, 0x6e, 0x73, 0x6f, +0x72, 0x73, 0x3a, 0x5b, 0x54, 0x6f, 0x73, 0x61, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x5d, 0x3b, +0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x20, +0x61, 0x72, 0x72, 0x61, 0x79, 0x0a, 0x20, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x3a, 0x5b, +0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5d, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x67, 0x72, 0x61, +0x70, 0x68, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x0a, 0x20, 0x20, 0x6f, 0x75, 0x74, 0x70, +0x75, 0x74, 0x73, 0x3a, 0x5b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5d, 0x3b, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, +0x20, 0x67, 0x72, 0x61, 0x70, 0x68, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x0a, 0x7d, +0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x54, 0x6f, 0x73, 0x61, 0x52, 0x65, 0x67, 0x69, +0x6f, 0x6e, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x73, 0x74, 0x72, 0x69, +0x6e, 0x67, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +0x2f, 0x2f, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x67, 0x69, 0x6f, +0x6e, 0x0a, 0x20, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x3a, 0x5b, 0x54, 0x6f, 0x73, 0x61, +0x42, 0x61, 0x73, 0x69, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5d, 0x3b, 0x20, 0x2f, 0x2f, 0x20, +0x62, 0x61, 0x73, 0x69, 0x63, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x20, 0x61, 0x72, 0x72, +0x61, 0x79, 0x0a, 0x7d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x54, 0x6f, 0x73, 0x61, +0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, +0x6e, 0x3a, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x72, 0x65, 0x71, 0x75, 0x69, +0x72, 0x65, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x3a, +0x5b, 0x54, 0x6f, 0x73, 0x61, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5d, 0x3b, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, +0x72, 0x72, 0x61, 0x79, 0x0a, 0x7d, 0x0a, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x74, 0x79, 0x70, +0x65, 0x20, 0x54, 0x6f, 0x73, 0x61, 0x47, 0x72, 0x61, 0x70, 0x68, 0x3b, 0x0a, 0x00 }; + +const size_t TOSA_SCHEMA_SIZE = 5629; diff --git a/include/tosa_serialization_handler.h b/include/tosa_serialization_handler.h index c09a47d..5b3882e 100644 --- a/include/tosa_serialization_handler.h +++ b/include/tosa_serialization_handler.h @@ -410,6 +410,7 @@ public: tosa_err_t SaveFileJson(const char* filename); tosa_err_t SaveFileTosaFlatbuffer(const char* filename); tosa_err_t LoadFileSchema(const char* schema_filename); + tosa_err_t LoadTosaSchema(); // data format conversion. little-endian. static tosa_err_t ConvertBF16toU8(const std::vector<bf16>& in, std::vector<uint8_t>& out); |