From a059b9826b88742ba2a9385eade83cc807086e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Tue, 18 May 2021 09:19:01 +0200 Subject: [PATCH] ui redesign + color aids --- art/gen/dirt.png | Bin 5819 -> 20082 bytes art/gen/road.h | 427 ++++++++++++++++++++++ code/game/source/editors/texed.c | 38 +- code/game/source/editors/texed_ops_list.c | 27 ++ code/game/source/editors/texed_widgets.c | 92 +++-- 5 files changed, 549 insertions(+), 35 deletions(-) create mode 100644 art/gen/road.h diff --git a/art/gen/dirt.png b/art/gen/dirt.png index b847c1a1630ed7aeafc18dc8bf1b6b6e9fac33ac..de02cd51ff1f026459871589ce9139fa5836aabc 100644 GIT binary patch literal 20082 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 WBWe?laTx`EEqg0%=|4Dp`TqpF3|o`{ literal 5819 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 diff --git a/art/gen/road.h b/art/gen/road.h new file mode 100644 index 0000000..7c4ffeb --- /dev/null +++ b/art/gen/road.h @@ -0,0 +1,427 @@ +//////////////////////////////////////////////////////////////////////////////////////// +// // +// ImageAsCode exporter v1.0 - Image pixel data exported as an array of bytes // +// // +// more info and bugs-report: github.com/raysan5/raylib // +// feedback and support: ray[at]raylib.com // +// // +// Copyright (c) 2020 Ramon Santamaria (@raysan5) // +// // +//////////////////////////////////////////////////////////////////////////////////////// + +// Image data information +#define ROAD_WIDTH 64 +#define ROAD_HEIGHT 64 +#define ROAD_FORMAT 6 // raylib internal pixel format + +static unsigned char ROAD_DATA[8192] = { 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x54, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x44, 0x5f, +0x66, 0x4f, 0x44, 0x5f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x66, 0x5f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x4f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x66, 0x4f, 0x44, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, +0x66, 0x4f, 0x55, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x4f, +0x44, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x6f, +0x66, 0x4f, 0x45, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, +0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x7f, +0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, +0x55, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x65, 0x4f, 0x45, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, +0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x5f, 0x56, 0x6f, +0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x4f, +0x44, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x65, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x67, 0x5f, +0x65, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x45, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x6f, +0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, +0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f, +0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x76, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, +0x76, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, +0x77, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, +0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x66, 0x6f, 0x76, 0x4f, +0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x4f, 0x45, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x5f, +0x55, 0x5f, 0x76, 0x5f, 0x66, 0x5f, 0x77, 0x6f, 0x88, 0x5f, 0x77, 0x6f, 0x88, 0x5f, 0x77, 0x5f, 0x77, 0x4f, 0x66, 0x6f, +0x77, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x7f, 0x77, 0x6f, +0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x77, 0x7f, 0x76, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x99, 0x5f, 0x99, 0x5f, 0xa9, 0x5f, 0x99, 0x5f, +0xaa, 0x5f, 0xa9, 0x5f, 0x99, 0x5f, 0x88, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x7f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x45, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x87, 0x5f, +0xbb, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xba, 0x5f, 0x87, 0x6f, 0x76, 0x6f, +0x67, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x55, 0x5f, 0x55, 0x6f, +0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x5f, +0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, +0x76, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f, +0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x98, 0x5f, 0xcc, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f, +0xdd, 0x5f, 0xbb, 0x5f, 0x88, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x4f, 0x44, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x56, 0x6f, 0x66, 0x5f, 0x65, 0x6f, +0x76, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x67, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, +0x77, 0x5f, 0x55, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f, +0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x88, 0x5f, 0xcb, 0x5f, 0xdd, 0x5f, +0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f, 0xdd, 0x4f, 0xdc, 0x4f, 0xbb, 0x6f, 0x98, 0x5f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, +0x66, 0x5f, 0x66, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, +0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, +0x66, 0x5f, 0x88, 0x5f, 0xbb, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f, 0xdc, 0x4f, 0xdc, 0x4f, 0xdc, 0x5f, 0xbb, 0x5f, +0x99, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x4f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x7f, 0x66, 0x6f, 0x77, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x6f, 0x65, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, +0x66, 0x5f, 0x66, 0x7f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x77, 0x5f, 0x88, 0x5f, 0xcc, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f, 0xdd, 0x4f, +0xdc, 0x4f, 0xcc, 0x4f, 0xcc, 0x5f, 0xbb, 0x5f, 0x98, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, +0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x67, 0x5f, 0x65, 0x6f, +0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x77, 0x5f, 0x88, 0x5f, +0xbb, 0x5f, 0xdd, 0x4f, 0xdd, 0x4f, 0xdc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x5f, 0xbb, 0x5f, 0x87, 0x5f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x56, 0x5f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x98, 0x5f, 0xbb, 0x4f, 0xdc, 0x4f, 0xdc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, +0xcc, 0x5f, 0xba, 0x5f, 0x78, 0x5f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x4f, +0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x4f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x76, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x89, 0x5f, 0xbb, 0x4f, 0xcc, 0x4f, +0xcc, 0x4f, 0xcc, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xaa, 0x5f, 0x98, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, +0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x5f, +0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x66, 0x5f, 0x98, 0x5f, 0xba, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xaa, 0x5f, +0x78, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x4f, 0x45, 0x5f, 0x65, 0x4f, 0x44, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x4f, 0x55, 0x4f, 0x44, 0x6f, 0x76, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, +0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xa9, 0x5f, 0x88, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, +0x66, 0x7f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x6f, +0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x4f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x54, 0x6f, 0x66, 0x4f, 0x77, 0x4f, +0xaa, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0x99, 0x6f, 0x87, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x7f, +0x77, 0x5f, 0x55, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x77, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x56, 0x5f, 0x65, 0x5f, 0x55, 0x7f, 0x77, 0x5f, 0x65, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x87, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, +0xba, 0x4f, 0xaa, 0x5f, 0x88, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x67, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x56, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x67, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x44, 0x5f, +0x55, 0x6f, 0x77, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0x99, 0x4f, 0xba, 0x4f, +0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0x99, 0x5f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x7f, 0x77, 0x6f, 0x66, 0x6f, +0x76, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x7f, +0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x65, 0x7f, 0x67, 0x5f, 0x65, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x88, 0x4f, 0x99, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0x99, 0x4f, +0x77, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x54, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x56, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x65, 0x6f, 0x67, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x4f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x67, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x56, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x55, 0x5f, 0x55, 0x4f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, +0xbb, 0x4f, 0xbb, 0x4f, 0xaa, 0x4f, 0x99, 0x4f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, +0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x88, 0x4f, +0xa9, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xaa, 0x4f, 0x99, 0x5f, 0x87, 0x6f, 0x66, 0x6f, +0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x67, 0x5f, 0x65, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x67, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, +0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x77, 0x4f, 0xa9, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x3f, +0xaa, 0x4f, 0x99, 0x5f, 0x88, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x65, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x76, 0x4f, 0x44, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x4f, 0x54, 0x4f, +0x44, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, +0x44, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x5f, +0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x87, 0x4f, 0x99, 0x4f, 0xba, 0x4f, +0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x4f, 0x98, 0x5f, 0x88, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, +0x67, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x65, 0x5f, 0x55, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x67, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x44, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x77, 0x7f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x88, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xa9, 0x4f, 0x98, 0x4f, +0x66, 0x5f, 0x65, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x4f, 0x44, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x65, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, +0x77, 0x6f, 0x76, 0x6f, 0x66, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0xa9, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f, +0xba, 0x3f, 0xaa, 0x3f, 0xa9, 0x4f, 0x99, 0x5f, 0x77, 0x5f, 0x65, 0x7f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x56, 0x6f, +0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x45, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, +0x56, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x55, 0x6f, 0x76, 0x5f, 0x87, 0x4f, +0xaa, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, 0xa9, 0x4f, 0x98, 0x4f, 0x66, 0x5f, 0x55, 0x5f, +0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x7f, 0x67, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x54, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, +0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, +0x77, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x77, 0x5f, +0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x4f, 0x44, 0x5f, +0x55, 0x4f, 0x54, 0x5f, 0x66, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, +0x99, 0x4f, 0x88, 0x4f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x6f, +0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x44, 0x5f, +0x55, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x4f, +0x54, 0x4f, 0x45, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x54, 0x4f, 0x55, 0x5f, +0x55, 0x6f, 0x77, 0x7f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, +0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, 0x99, 0x4f, 0x88, 0x5f, 0x77, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x45, 0x4f, +0x44, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x45, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x66, 0x5f, +0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x4f, +0x55, 0x5f, 0x88, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, 0xa9, 0x3f, 0x99, 0x4f, 0x98, 0x5f, +0x88, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x65, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x4f, +0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x6f, 0x55, 0x5f, 0x65, 0x5f, +0x55, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x87, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, +0xaa, 0x3f, 0xa9, 0x3f, 0x99, 0x4f, 0x88, 0x5f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x65, 0x7f, +0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, +0x56, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x56, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x87, 0x4f, +0x99, 0x3f, 0xaa, 0x3f, 0xaa, 0x3f, 0xaa, 0x3f, 0xa9, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x88, 0x5f, 0x87, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, +0x65, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x56, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x65, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x78, 0x4f, 0x98, 0x3f, 0xa9, 0x3f, 0xa9, 0x3f, 0xa9, 0x3f, 0x99, 0x3f, 0x99, 0x3f, +0x99, 0x4f, 0x88, 0x5f, 0x77, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x7f, 0x77, 0x6f, 0x77, 0x5f, 0x55, 0x6f, +0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x6f, 0x56, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, +0x66, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x76, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x88, 0x4f, 0x88, 0x3f, 0x99, 0x3f, +0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x88, 0x5f, 0x87, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, +0x76, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, +0x65, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x5f, +0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x4f, 0x55, 0x6f, +0x76, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, +0x66, 0x4f, 0x76, 0x4f, 0x88, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x88, 0x5f, +0x77, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x4f, 0x54, 0x5f, +0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x55, 0x6f, +0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x55, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x77, 0x4f, 0x88, 0x3f, 0x98, 0x3f, 0x99, 0x3f, 0x99, 0x3f, +0x99, 0x3f, 0x99, 0x3f, 0x98, 0x3f, 0x88, 0x4f, 0x77, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x7f, 0x77, 0x6f, +0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x77, 0x5f, +0x65, 0x6f, 0x67, 0x6f, 0x65, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, +0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x77, 0x4f, +0x88, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x88, 0x5f, 0x77, 0x6f, 0x66, 0x4f, +0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, +0x77, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x67, 0x6f, 0x66, 0x4f, 0x76, 0x3f, 0x88, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, +0x98, 0x3f, 0x88, 0x4f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, +0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x56, 0x6f, +0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x87, 0x3f, 0x88, 0x3f, 0x98, 0x3f, +0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x88, 0x4f, 0x77, 0x4f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, +0x77, 0x7f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x56, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f, +0x55, 0x7f, 0x77, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x66, 0x5f, 0x55, 0x7f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, +0x66, 0x5f, 0x77, 0x3f, 0x88, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x98, 0x5f, +0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x67, 0x5f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x88, 0x4f, 0x88, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, +0x99, 0x3f, 0x99, 0x3f, 0xa9, 0x4f, 0x99, 0x5f, 0x87, 0x5f, 0x65, 0x5f, 0x65, 0x6f, 0x67, 0x5f, 0x54, 0x5f, 0x55, 0x6f, +0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, +0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x6f, +0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x56, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, +0x77, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x88, 0x4f, +0x98, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0xa9, 0x3f, 0xaa, 0x4f, 0xaa, 0x4f, 0x99, 0x5f, 0x88, 0x7f, 0x77, 0x6f, +0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x55, 0x4f, +0x55, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x65, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x6f, +0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x44, 0x4f, +0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x77, 0x4f, 0x99, 0x3f, 0xa9, 0x3f, 0xa9, 0x3f, 0xaa, 0x3f, 0xaa, 0x4f, 0xaa, 0x4f, +0xba, 0x4f, 0xaa, 0x6f, 0x88, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, +0x65, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x65, 0x5f, 0x55, 0x6f, 0x67, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, +0x55, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, +0x56, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x77, 0x4f, 0x99, 0x4f, 0xaa, 0x3f, +0xaa, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xaa, 0x5f, 0x87, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x77, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x6f, +0x66, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x65, 0x5f, +0x55, 0x6f, 0x76, 0x6f, 0x56, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x65, 0x5f, 0x87, 0x4f, 0x99, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xaa, 0x5f, +0x77, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x54, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x4f, 0x44, 0x4f, 0x44, 0x4f, +0x44, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x88, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, +0xcb, 0x4f, 0xcb, 0x4f, 0xcc, 0x5f, 0xba, 0x5f, 0x77, 0x7f, 0x77, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, +0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, +0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x77, 0x4f, +0xaa, 0x4f, 0xbb, 0x4f, 0xcb, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x5f, 0xbb, 0x5f, 0x88, 0x5f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x65, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, +0x55, 0x5f, 0x66, 0x5f, 0x66, 0x6f, 0x88, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, 0xcb, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f, 0xdc, 0x4f, +0xdc, 0x5f, 0xbb, 0x5f, 0x88, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, +0x54, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x7f, +0x77, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, +0x77, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, +0xcc, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f, 0xdc, 0x5f, 0xdd, 0x5f, 0xcb, 0x5f, 0x88, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, +0x76, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x4f, 0x44, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f, +0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x7f, 0x76, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x66, 0x7f, 0x77, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x77, 0x7f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, +0x66, 0x5f, 0x88, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xdc, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xcc, 0x5f, +0x88, 0x6f, 0x88, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x44, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x76, 0x5f, 0x56, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, +0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, +0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x76, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xcb, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f, +0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xbb, 0x5f, 0x98, 0x6f, 0x87, 0x6f, 0x56, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x76, 0x5f, +0x55, 0x5f, 0x65, 0x5f, 0x44, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x76, 0x7f, 0x77, 0x6f, +0x76, 0x6f, 0x67, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x55, 0x5f, 0x65, 0x7f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x5f, 0x88, 0x5f, +0xba, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f, 0xdc, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xcb, 0x5f, 0x88, 0x5f, 0x77, 0x6f, +0x65, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x76, 0x6f, +0x56, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x55, 0x4f, +0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x4f, 0x44, 0x4f, 0x44, 0x4f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, +0x66, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x88, 0x4f, 0xbb, 0x4f, 0xdc, 0x4f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, +0xdd, 0x5f, 0xcc, 0x5f, 0x98, 0x6f, 0x77, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x4f, +0x44, 0x5f, 0x55, 0x5f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x87, 0x5f, 0xbb, 0x5f, 0xdc, 0x5f, +0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xbb, 0x6f, 0x98, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x76, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x4f, +0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, +0x77, 0x5f, 0x77, 0x5f, 0xbb, 0x5f, 0xcc, 0x5f, 0xdc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xdc, 0x5f, 0xdc, 0x5f, 0xbb, 0x6f, +0x98, 0x6f, 0x67, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x5f, 0x55, 0x6f, +0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x76, 0x5f, +0x55, 0x4f, 0x55, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x67, 0x7f, +0x76, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x44, 0x4f, +0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x87, 0x5f, 0xa9, 0x5f, 0xba, 0x5f, 0xaa, 0x5f, 0xaa, 0x5f, +0xba, 0x5f, 0xaa, 0x5f, 0xaa, 0x5f, 0x99, 0x5f, 0x87, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x67, 0x5f, 0x65, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x56, 0x6f, +0x65, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x45, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, +0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, +0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x7f, +0x88, 0x5f, 0x77, 0x6f, 0x87, 0x6f, 0x87, 0x5f, 0x77, 0x5f, 0x77, 0x6f, 0x87, 0x6f, 0x88, 0x7f, 0x77, 0x6f, 0x76, 0x5f, +0x55, 0x6f, 0x77, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, +0x65, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x5f, +0x65, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x6f, +0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x66, 0x5f, +0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, +0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x77, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x5f, 0x65, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x7f, 0x76, 0x6f, 0x67, 0x5f, 0x65, 0x6f, +0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x55, 0x5f, 0x56, 0x6f, 0x66, 0x6f, +0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, +0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x76, 0x6f, +0x56, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, +0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, +0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x65, 0x6f, 0x77, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, +0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x5f, +0x66, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x4f, 0x55, 0x5f, 0x44, 0x5f, +0x55, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x56, 0x5f, +0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, +0x76, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x65, 0x6f, 0x66, 0x6f, +0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, +0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f, +0x54, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x5f, 0x65, 0x6f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x5f, +0x66, 0x5f, 0x45, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, +0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, +0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, +0x66, 0x6f, 0x76, 0x6f, 0x67, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, +0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x56, 0x6f, +0x65, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x6f, +0x66, 0x4f, 0x44, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, +0x66, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66 }; diff --git a/code/game/source/editors/texed.c b/code/game/source/editors/texed.c index 4da6656..f78dfe5 100644 --- a/code/game/source/editors/texed.c +++ b/code/game/source/editors/texed.c @@ -61,6 +61,21 @@ typedef struct { }; } td_param; +typedef enum { + TCAT_STACK, + TCAT_GEN, + TCAT_DRAW, + TCAT_MOD, + + TCAT_FORCE_UINT8 = UINT8_MAX +} tcat_kind; + +typedef struct { + tcat_kind kind; + char const *icon; + Color color; +} tcat_desc; + typedef enum { TOP_NEW_IMAGE, TOP_DRAW_RECT, @@ -95,6 +110,7 @@ typedef enum { typedef struct { td_op_kind kind; char const *name; + tcat_kind cat; bool is_hidden; bool is_locked; @@ -248,16 +264,6 @@ void texed_run(int argc, char **argv) { texed_new(TD_DEFAULT_IMG_WIDTH, TD_DEFAULT_IMG_HEIGHT); - { - GuiSetStyle(TEXTBOX, TEXT_COLOR_NORMAL, ColorToInt(RAYWHITE)); - GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0x012e33ff); - GuiSetStyle(BUTTON, BASE, 0x202020ff); - GuiSetStyle(BUTTON, BASE + GUI_STATE_DISABLED*3, 0x303030ff); - GuiSetStyle(BUTTON, TEXT + GUI_STATE_FOCUSED*3, 0x303030ff); - GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0xffffffff); - GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_LEFT_SIDE); - } - while (1) { zpl_aabb2 screen = { .min = (zpl_vec2) {.x = 0.0f, .y = 0.0f}, @@ -286,6 +292,18 @@ void texed_run(int argc, char **argv) { ctx.fileDialog = InitGuiFileDialog(420, 310, zpl_bprintf("%s/art", GetWorkingDirectory()), false); } + // NOTE(zaklaus): ensure we reset styling to our defaults each frame + { + GuiSetStyle(TEXTBOX, TEXT_COLOR_NORMAL, ColorToInt(RAYWHITE)); + GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0x012e33ff); + GuiSetStyle(BUTTON, BASE, 0x202020ff); + GuiSetStyle(BUTTON, BASE + GUI_STATE_DISABLED*3, 0x303030ff); + GuiSetStyle(BUTTON, TEXT + GUI_STATE_FOCUSED*3, 0x303030ff); + GuiSetStyle(BUTTON, BORDER, 0xffffffff); + GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0xffffffff); + GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_LEFT_SIDE); + } + BeginDrawing(); ClearBackground(GetColor(0x222034)); { diff --git a/code/game/source/editors/texed_ops_list.c b/code/game/source/editors/texed_ops_list.c index fab6bf1..83c5f34 100644 --- a/code/game/source/editors/texed_ops_list.c +++ b/code/game/source/editors/texed_ops_list.c @@ -6,6 +6,7 @@ static td_op default_ops[] = { { OP(TOP_NEW_IMAGE), + .cat = TCAT_STACK, .is_locked = true, PARAMS(3) { PARAM(TPARAM_COORD, "w", "64"), @@ -14,6 +15,7 @@ static td_op default_ops[] = { } },{ OP(TOP_PUSH_IMAGE), + .cat = TCAT_STACK, PARAMS(3) { PARAM(TPARAM_COORD, "w", "64"), PARAM(TPARAM_COORD, "h", "64"), @@ -21,6 +23,7 @@ static td_op default_ops[] = { } },{ OP(TOP_POP_IMAGE), + .cat = TCAT_STACK, PARAMS(5) { PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "y", "0"), @@ -30,14 +33,17 @@ static td_op default_ops[] = { } },{ OP(TOP_IMAGE_ALPHA_MASK), + .cat = TCAT_STACK, },{ OP(TOP_IMAGE_ALPHA_MASK_CLEAR), + .cat = TCAT_STACK, PARAMS(2) { PARAM(TPARAM_COLOR, "color", "ffffffff"), PARAM(TPARAM_FLOAT, "threshold", "1.0"), } },{ OP(TOP_DRAW_RECT), + .cat = TCAT_DRAW, PARAMS(5) { PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "y", "0"), @@ -47,6 +53,7 @@ static td_op default_ops[] = { } },{ OP(TOP_DRAW_LINE), + .cat = TCAT_DRAW, PARAMS(5) { PARAM(TPARAM_COORD, "x1", "0"), PARAM(TPARAM_COORD, "y1", "0"), @@ -56,6 +63,7 @@ static td_op default_ops[] = { } },{ OP(TOP_DRAW_IMAGE), + .cat = TCAT_DRAW, PARAMS(8) { PARAM(TPARAM_STRING, "src", "samples/test.png"), PARAM(TPARAM_COORD, "x", "0"), @@ -68,6 +76,7 @@ static td_op default_ops[] = { } },{ OP(TOP_DRAW_TEXT), + .cat = TCAT_DRAW, PARAMS(5) { PARAM(TPARAM_STRING, "text", "hello world"), PARAM(TPARAM_COORD, "x", "0"), @@ -77,6 +86,7 @@ static td_op default_ops[] = { } },{ OP(TOP_DITHER), + .cat = TCAT_MOD, PARAMS(4) { PARAM(TPARAM_INT, "r_bpp", "4"), PARAM(TPARAM_INT, "g_bpp", "4"), @@ -85,6 +95,7 @@ static td_op default_ops[] = { } },{ OP(TOP_RESIZE_IMAGE), + .cat = TCAT_MOD, PARAMS(3) { PARAM(TPARAM_COORD, "w", "64"), PARAM(TPARAM_COORD, "h", "64"), @@ -92,6 +103,7 @@ static td_op default_ops[] = { } },{ OP(TOP_COLOR_TWEAKS), + .cat = TCAT_MOD, PARAMS(5) { PARAM(TPARAM_SLIDER, "contrast", "0.5"), PARAM(TPARAM_SLIDER, "brightness", "0.5"), @@ -101,24 +113,28 @@ static td_op default_ops[] = { } },{ OP(TOP_COLOR_REPLACE), + .cat = TCAT_MOD, PARAMS(2) { PARAM(TPARAM_COLOR, "original", "FFFFFFFF"), PARAM(TPARAM_COLOR, "new", "FF0000FF"), } },{ OP(TOP_IMAGE_GRAD_V), + .cat = TCAT_GEN, PARAMS(2) { PARAM(TPARAM_COLOR, "top", "ffffffff"), PARAM(TPARAM_COLOR, "bottom", "00000000"), } },{ OP(TOP_IMAGE_GRAD_H), + .cat = TCAT_GEN, PARAMS(2) { PARAM(TPARAM_COLOR, "left", "ffffffff"), PARAM(TPARAM_COLOR, "right", "00000000"), } },{ OP(TOP_IMAGE_GRAD_RAD), + .cat = TCAT_GEN, PARAMS(3) { PARAM(TPARAM_FLOAT, "density", "0.5"), PARAM(TPARAM_COLOR, "inner", "ffffffff"), @@ -126,6 +142,7 @@ static td_op default_ops[] = { } },{ OP(TOP_IMAGE_CHECKED), + .cat = TCAT_GEN, PARAMS(4) { PARAM(TPARAM_COORD, "checks_x", "16"), PARAM(TPARAM_COORD, "checks_y", "16"), @@ -134,12 +151,14 @@ static td_op default_ops[] = { } },{ OP(TOP_IMAGE_NOISE_WHITE), + .cat = TCAT_GEN, PARAMS(2) { PARAM(TPARAM_COORD, "seed", "1"), PARAM(TPARAM_FLOAT, "factor", "0.5"), } },{ OP(TOP_IMAGE_NOISE_PERLIN), + .cat = TCAT_GEN, PARAMS(3) { PARAM(TPARAM_COORD, "offset_x", "0"), PARAM(TPARAM_COORD, "offset_y", "0"), @@ -147,6 +166,7 @@ static td_op default_ops[] = { } },{ OP(TOP_IMAGE_CELLULAR), + .cat = TCAT_GEN, PARAMS(2) { PARAM(TPARAM_COORD, "seed", "1"), PARAM(TPARAM_COORD, "tile_size", "16"), @@ -155,3 +175,10 @@ static td_op default_ops[] = { }; #define DEF_OPS_LEN (int)(sizeof(default_ops) / (sizeof(default_ops[0]))) + +static tcat_desc default_cats[] = { + {.kind = TCAT_STACK, .icon = "#197#", .color = RED}, + {.kind = TCAT_GEN, .icon = "#197#", .color = BLUE}, + {.kind = TCAT_DRAW, .icon = "#197#", .color = GREEN}, + {.kind = TCAT_MOD, .icon = "#197#", .color = ORANGE}, +}; diff --git a/code/game/source/editors/texed_widgets.c b/code/game/source/editors/texed_widgets.c index f323642..0ce1a20 100644 --- a/code/game/source/editors/texed_widgets.c +++ b/code/game/source/editors/texed_widgets.c @@ -8,6 +8,9 @@ bool GuiValueBoxEco(Rectangle bounds, const char *text, int *value, int minValue static inline bool IsCtrlAcceleratorPressed(char key); +static inline +char const *prettify_op_name(int idx); + void texed_draw_topbar(zpl_aabb2 r) { zpl_aabb2 zoom_ctrl_r = zpl_aabb2_cut_left(&r, 150.0f); @@ -140,7 +143,7 @@ void texed_draw_topbar(zpl_aabb2 r) { void texed_draw_oplist_pane(zpl_aabb2 r) { // NOTE(zaklaus): add operator { - zpl_aabb2 add_op_r = zpl_aabb2_cut_right(&r, 180.0f); + zpl_aabb2 add_op_r = zpl_aabb2_cut_right(&r, 200.0f); DrawAABB(add_op_r, GetColor(0x122025)); add_op_r = zpl_aabb2_contract(&add_op_r, 3.0f); Rectangle panel_rec = aabb2_ray(add_op_r); @@ -153,18 +156,30 @@ void texed_draw_oplist_pane(zpl_aabb2 r) { Rectangle view = GuiScrollPanel(panel_rec, aabb2_ray(add_op_r), &panel_scroll); BeginScissorMode(view.x, view.y, view.width, view.height); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT); for (int i = 0; i < DEF_OPS_LEN; i += 1) { if (default_ops[i].is_locked) continue; + tcat_desc cat_info = default_cats[default_ops[i].cat]; + Color color = cat_info.color; zpl_aabb2 add_op_btn_r = zpl_aabb2_cut_top(&add_op_r, 22.5f); add_op_btn_r.min.y += panel_scroll.y; add_op_btn_r.max.y += panel_scroll.y; + add_op_btn_r.max.x -= 2.0f; zpl_aabb2_cut_bottom(&add_op_btn_r, 2.5f); - if (GuiButton(aabb2_ray(add_op_btn_r), default_ops[i].name)) { + + GuiSetStyle(BUTTON, BORDER, ColorToInt(Fade(color, 0.89f))); + GuiSetStyle(BUTTON, BORDER_WIDTH, 1); + + if (GuiButton(aabb2_ray(add_op_btn_r), prettify_op_name(i))) { texed_add_op(default_ops[i].kind); } + + GuiSetStyle(BUTTON, BORDER, 0x838383ff); + GuiSetStyle(BUTTON, BORDER_WIDTH, 2); } + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER); EndScissorMode(); } @@ -183,26 +198,17 @@ void texed_draw_oplist_pane(zpl_aabb2 r) { // NOTE(zaklaus): operator list for (int i = 0; i < zpl_array_count(ctx.ops); i += 1) { + td_op *op = &ctx.ops[i]; zpl_aabb2 op_item_r = zpl_aabb2_cut_top(&r, 25.0f); op_item_r.min.y += panel_scroll.y; op_item_r.max.y += panel_scroll.y; zpl_aabb2_cut_top(&op_item_r, 2.5f); zpl_aabb2_cut_bottom(&op_item_r, 2.5f); Rectangle list_item = aabb2_ray(op_item_r); - Color bg_color = BLUE; - - if (ctx.selected_op == i) { - bg_color = GREEN; - } - else if (ctx.ops[i].is_hidden) { - bg_color = RED; - } - else if (ctx.ops[i].is_locked) { - bg_color = SKYBLUE; - } - - DrawRectangleRec(list_item, ColorAlpha(bg_color, 0.4f)); + tcat_desc cat_info = default_cats[default_ops[texed_find_op(op->kind)].cat]; + Color bg_color = cat_info.color; + DrawRectangleRec(list_item, ColorAlpha(bg_color, ctx.selected_op == i ? 0.6f : 0.325f)); zpl_aabb2 swap_r = zpl_aabb2_cut_left(&op_item_r, 50.0f); Rectangle list_text = aabb2_ray(op_item_r); @@ -210,41 +216,61 @@ void texed_draw_oplist_pane(zpl_aabb2 r) { zpl_aabb2 swap_top = zpl_aabb2_cut_left(&swap_r, aabb2_ray(swap_r).width/2.0f); zpl_aabb2 swap_bottom = swap_r; - if (i == 0 || ctx.ops[i].is_locked || (i > 0 && ctx.ops[i-1].is_locked)) GuiSetState(GUI_STATE_DISABLED); + if (i == 0 || op->is_locked || (i > 0 && ctx.ops[i-1].is_locked)) GuiSetState(GUI_STATE_DISABLED); if (GuiButton(aabb2_ray(swap_top), "#121#")) { texed_swp_op(i, i-1); } GuiSetState(GUI_STATE_NORMAL); - if (ctx.ops[i].is_locked || (i+1 < zpl_array_count(ctx.ops) && ctx.ops[i+1].is_locked) || i+1 >= zpl_array_count(ctx.ops)) GuiSetState(GUI_STATE_DISABLED); + if (op->is_locked || (i+1 < zpl_array_count(ctx.ops) && ctx.ops[i+1].is_locked) || i+1 >= zpl_array_count(ctx.ops)) GuiSetState(GUI_STATE_DISABLED); if (GuiButton(aabb2_ray(swap_bottom), "#120#")) { texed_swp_op(i, i+1); } GuiSetState(GUI_STATE_NORMAL); + zpl_aabb2 theme_stripe = zpl_aabb2_add_right(&swap_r, 3.0f); + if (op->is_locked && op->is_hidden) { + zpl_aabb2 stripe_bottom = zpl_aabb2_cut_bottom(&theme_stripe, (theme_stripe.max.y-theme_stripe.min.y)/2.0f); + DrawAABB(theme_stripe, SKYBLUE); + DrawAABB(stripe_bottom, RED); + } else if (op->is_locked) { + DrawAABB(theme_stripe, SKYBLUE); + } else if (op->is_hidden) { + DrawAABB(theme_stripe, RED); + } + zpl_aabb2 remove_r = zpl_aabb2_cut_right(&op_item_r, 20.0f); - if (ctx.ops[i].is_locked) GuiSetState(GUI_STATE_DISABLED); + if (op->is_locked) GuiSetState(GUI_STATE_DISABLED); if (GuiButton(aabb2_ray(remove_r), "#143#")) { texed_rem_op(i); } zpl_aabb2 hidden_r = zpl_aabb2_cut_right(&op_item_r, 20.0f); + if (!default_ops[texed_find_op(op->kind)].is_locked) GuiSetState(GUI_STATE_NORMAL); - if (!default_ops[texed_find_op(ctx.ops[i].kind)].is_locked) GuiSetState(GUI_STATE_NORMAL); - if (GuiButton(aabb2_ray(hidden_r), ctx.ops[i].is_hidden ? "#45#" : "#44#")) { - ctx.ops[i].is_hidden = !ctx.ops[i].is_hidden; + if (op->is_hidden) { + GuiSetStyle(BUTTON, BASE, ColorToInt(RED)); + } + if (GuiButton(aabb2_ray(hidden_r), op->is_hidden ? "#45#" : "#44#")) { + op->is_hidden = !op->is_hidden; texed_repaint_preview(); } + GuiSetStyle(BUTTON, BASE, 0x202020ff); GuiSetState(GUI_STATE_NORMAL); zpl_aabb2 lock_r = zpl_aabb2_cut_right(&op_item_r, 20.0f); - if (default_ops[texed_find_op(ctx.ops[i].kind)].is_locked) GuiSetState(GUI_STATE_DISABLED); - if (GuiButton(aabb2_ray(lock_r), ctx.ops[i].is_locked ? "#137#" : "#138#")) { - ctx.ops[i].is_locked = !ctx.ops[i].is_locked; + if (default_ops[texed_find_op(op->kind)].is_locked) GuiSetState(GUI_STATE_DISABLED); + + if (op->is_locked) { + GuiSetStyle(BUTTON, BASE, ColorToInt(BLUE)); + } + if (GuiButton(aabb2_ray(lock_r), op->is_locked ? "#137#" : "#138#")) { + op->is_locked = !op->is_locked; ctx.is_saved = false; } + GuiSetStyle(BUTTON, BASE, 0x202020ff); GuiSetState(GUI_STATE_NORMAL); if (ctx.selected_op == i) GuiSetState(GUI_STATE_DISABLED); @@ -256,7 +282,7 @@ void texed_draw_oplist_pane(zpl_aabb2 r) { } GuiSetState(GUI_STATE_NORMAL); - GuiDrawText(zpl_bprintf("%s %s", ctx.ops[i].name, ctx.ops[i].is_locked ? "(locked)" : ""), GetTextBounds(LABEL, list_text), GuiGetStyle(LABEL, TEXT_ALIGNMENT), Fade(RAYWHITE, guiAlpha)); + GuiDrawText(zpl_bprintf("%s %s", prettify_op_name(texed_find_op(op->kind)), op->is_locked ? "(locked)" : ""), GetTextBounds(LABEL, list_text), GuiGetStyle(LABEL, TEXT_ALIGNMENT), Fade(RAYWHITE, guiAlpha)); } EndScissorMode(); @@ -643,3 +669,19 @@ bool GuiValueBoxEco(Rectangle bounds, const char *text, int *value, int minValue return pressed; } + +static inline +char const *prettify_op_name(int idx) { + static char name[200] = {0}; + zpl_snprintf(name, 200, "%s %s", default_cats[default_ops[idx].cat].icon, default_ops[idx].name+4); + zpl_str_to_lower(name); + + char *p = (char*)zpl_str_skip(name, ' ')+1; + do { + *p = zpl_char_to_upper(*p); + p = (char*)zpl_str_skip(p, '_'); + if (*p) *p = ' '; + } while(*p++); + + return name; +} \ No newline at end of file