diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fee26f8 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ + +.PHONY: pui ptap + +all: pui ptap + +pui: + $(MAKE) -C pui + +ptap: + $(MAKE) -C ptap diff --git a/ptap/Makefile b/ptap/Makefile index 60777e5..d0ac347 100644 --- a/ptap/Makefile +++ b/ptap/Makefile @@ -6,7 +6,7 @@ LDFLAGS += `pkg-config lv2core pugl-0 --libs` PTAPSRC := ptap.cpp PTAPSRC += ptapui.cpp -PTAPOBJ := $(PTAPSRC:.cpp=.o) +PTAPOBJ := $(PTAPSRC:.cpp=.o) ../pui/*.o PTAPO := ptap.so CPP := g++ @@ -20,7 +20,7 @@ depend: makedepend $(PTAPSRC) $(PTAPO): $(PTAPOBJ) - $(CC) $(LDFLAGS) -shared -fPIC -Wl,-soname,$(PTAPO) $(PTAPOBJ) -o $@ + $(CPP) $(LDFLAGS) -shared -fPIC -Wl,-soname,$(PTAPO) $(PTAPOBJ) -o $@ .cpp.o: $(CPP) -c -fPIC $(CFLAGS) $< -o $@ diff --git a/ptap/ptapui.cpp b/ptap/ptapui.cpp index 1f10a31..018dc15 100644 --- a/ptap/ptapui.cpp +++ b/ptap/ptapui.cpp @@ -9,8 +9,12 @@ #include #include #include +#include +#include "../pui/pui.h" -struct PTapUI { +#define TAPS 6 + +/*struct PTapUI : PTextures { PuglView *view; pthread_t thread; LV2UI_Write_Function write; @@ -18,8 +22,143 @@ struct PTapUI { int width; int height; bool exit; + + int mx; + int my; + int mb; + int mm; + Widget *active; + + Container *widget; + + void InitWidgets(); +};*/ + +struct PTapUI : PUi { + pthread_t thread; + LV2UI_Write_Function write; + LV2UI_Controller controller; + int width; + int height; + bool exit; + + virtual ~PTapUI() {} + + void InitWidgets(); + + /* virtual */ void ParameterChanged(const Widget *w); }; +void PTapUI::InitWidgets() +{ + widget = new Container(); + widget->colour = Colour(0.6, 0.6, 0.6, 1.0); + widget->w = this->width; + widget->h = this->height; + + int padding = 3; + + int c_w = (this->width * 0.5f); + int c_h = (this->height * 0.25f); + + int slide_w = 25 + padding; + int slide_h = c_h - padding - padding; + + for (int i = 0; i < TAPS + 2; i++) { + Container *c = new Container(); + c->x = (i & 1) * c_w; + c->y = (i >> 1) * c_h; + c->w = c_w; + c->h = c_h; + + Container *c2 = new Container(); + c2->x = c->x; + c2->y = c->y; + c2->w = slide_w * TAPS + padding * 2; + c2->h = c->h; + c2->Pad(padding, padding); + + Container *c3 = new Container(); + c3->colour = Colour(0, 0, 0, 0.2f); + c3->x = c2->x + c2->w; + c3->y = c->y; + c3->w = slide_w * 2 + padding * 2; + c3->h = c->h; + c3->Pad(padding, padding); + + Container *c4 = new Container(); + c4->x = c3->x + c3->w; + c4->y = c->y; + c4->w = c->w - (c4->x - c->x) + padding * 2; + c4->h = c->h; + c4->Pad(padding, padding); + + for (int j = 0; j < TAPS; j++) { + Slider *slider = new VSlider(); + slider->tex = this; + slider->big = false; + slider->x = c2->x + j * slide_w;//(j & 1) * slide_w; + slider->y = c2->y + 10;// + (j >> 1) * slide_h; + slider->w = slide_w; + slider->h = slide_h - 10; + slider->min = -1.f; + slider->max = 1.f; + slider->port = (i * 10) + 4 + j; + slider->Pad(padding, padding); + c2->children.push_back(slider); + } + + for (int j = 0; j < 2; j++) { + Slider *slider = new VSlider(); + slider->tex = this; + slider->big = false; + slider->x = c3->x + j * slide_w;//(j & 1) * slide_w; + slider->y = c3->y + 10;// + (j >> 1) * slide_h; + slider->w = slide_w; + slider->h = slide_h - 10; + slider->min = -1.f; + slider->max = 1.f; + slider->port = (i * 10) + 4 + TAPS + j; + slider->Pad(padding, padding); + c3->children.push_back(slider); + } + + for (int j = 0; j < 1; j++) { + Slider *slider = new VSlider(); + slider->tex = this; + slider->big = true; + slider->x = c4->x + j * slide_w;//(j & 1) * slide_w; + slider->y = c4->y + 10;// + (j >> 1) * slide_h; + slider->w = slide_w; + slider->h = slide_h - 10; + slider->min = -1.f; + slider->max = 1.f; + slider->port = (i * 10) + 4 + TAPS + 2 + j; + slider->Pad(padding, padding); + c4->children.push_back(slider); + } + + if (i < TAPS) { + Knob *k = new Knob(); + k->tex = this; + k->x = c->x + (TAPS + 3) * slide_w; + k->y = c->y + 10; + k->w = c->w - (k->x - c->x); + k->h = c->h - 10; + k->min = 0.f; + k->max = 10.f; + k->port = (i * 10) + 4 + 9; + k->Pad(padding, padding); + c4->children.push_back(k); + } + + c->children.push_back(c2); + c->children.push_back(c3); + c->children.push_back(c4); + this->widget->children.push_back(c); + } +} + static void *ui_thread(void *ptr) { PTapUI *pui = (PTapUI *)ptr; @@ -30,56 +169,11 @@ static void *ui_thread(void *ptr) return NULL; } -static void parameterChanged(PTapUI *pui, uint32_t index, float value) +void PTapUI::ParameterChanged(const Widget *w) { - pui->write(pui->controller, index, sizeof value, 0, &value); -} + if (w->port == UINT_MAX) return; -static void onReshape(PuglView *view, int width, int height) -{ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glViewport(0, 0, width, height); - glOrtho(0, width, height, 0, 0, 1); - glMatrixMode(GL_MODELVIEW); - glDisable(GL_DEPTH_TEST); - glLoadIdentity(); -} - -static void onDisplay(PuglView *view) -{ - PTapUI *pui = (PTapUI *)puglGetHandle(view); - - glClear(GL_COLOR_BUFFER_BIT); - glBegin(GL_QUADS); - - GLdouble x2 = 2.0; - GLdouble y2 = 2.0; - GLdouble x1 = pui->width - 2.0; - GLdouble y1 = pui->height - 2.0; - glColor3f(1.0f, 0.2f, 0.0f); - glVertex2f(x1, y1); - glVertex2f(x1, y2); - glColor3f(0.0f, 1.0f, 0.0f); - glVertex2f(x2, x2); - glVertex2f(x2, y1); - glEnd(); -} - -static void onKeyboard(PuglView *view, bool press, uint32_t key) -{ -} - -static void onMotion(PuglView *view, int x, int y) -{ -} - -static void onMouse(PuglView *view, int button, bool press, int x, int y) -{ -} - -static void onScroll(PuglView *view, float dx, float dy) -{ + this->write(this->controller, w->port, sizeof w->value, 0, &w->value); } static LV2UI_Handle ptapui_instantiate( @@ -109,18 +203,16 @@ static LV2UI_Handle ptapui_instantiate( PTapUI *pui = new PTapUI(); pui->write = write_function; pui->controller = controller; - pui->width = 320; - pui->height = 240; + pui->width = 750; + pui->height = 500; pui->exit = false; + pui->InitWidgets(); + pui->view = puglCreate(parent, "PTap", pui->width, pui->height, true); puglSetHandle(pui->view, pui); - puglSetDisplayFunc(pui->view, onDisplay); - puglSetReshapeFunc(pui->view, onReshape); - puglSetKeyboardFunc(pui->view, onKeyboard); - puglSetMotionFunc(pui->view, onMotion); - puglSetMouseFunc(pui->view, onMouse); - puglSetScrollFunc(pui->view, onScroll); + + pui->SetFunc(); if (resize) { resize->ui_resize(resize->handle, pui->width, pui->height); @@ -148,6 +240,12 @@ static void ptapui_port_event( uint32_t format, const void *buffer) { + PUi *pui = (PUi *)ui; + Widget *w = pui->widget->GetWidget(port_index); + if (!w) return; + + w->SetValue(*((float *)buffer)); + pui->Repaint(); } static const void *ptapui_extension_data(const char *uri) diff --git a/pui/Makefile b/pui/Makefile new file mode 100644 index 0000000..eac22fe --- /dev/null +++ b/pui/Makefile @@ -0,0 +1,31 @@ +CFLAGS := -Wall -O3 -g -D_GNU_SOURCE +LDFLAGS := -lm + +CFLAGS += `pkg-config pugl-0 --cflags` +LDFLAGS += `pkg-config pugl-0 --libs` + +PUISRC := container.cpp +PUISRC += knob.cpp +PUISRC += pui.cpp +PUISRC += slider.cpp +PUISRC += textures.cpp +PUISRC += widget.cpp +PUIOBJ := $(PUISRC:.cpp=.o) + +CPP := g++ + +all: $(PUIOBJ) + +clean: + rm $(PUIOBJ) $(PUIO) + +depend: + makedepend $(PUISRC) + +#$(PUIO): $(PUIOBJ) +# $(CPP) -dynamiclib $(LDFLAGS) -static $(PUIOBJ) -o $@ +# $(CPP) $(LDFLAGS) -shared -fPIC -Wl,-soname,$(PUIO) $(PUIOBJ) -o $@ + +%.o: %.cpp + $(CPP) -c -fPIC $(CFLAGS) $< -o $@ + diff --git a/pui/container.cpp b/pui/container.cpp new file mode 100644 index 0000000..c4b02b7 --- /dev/null +++ b/pui/container.cpp @@ -0,0 +1,59 @@ +#include +#include "pui.h" + +Container::~Container() +{ + std::list::iterator it; + for (it = children.begin(); it != children.end(); ++it) { + delete *it; + } +} + +void Container::OnPaint() const +{ + if (this->colour.a) { + glBegin(GL_QUADS); + glColor4f(colour.r, colour.g, colour.b, colour.a); + glVertex2f( x, y); + glVertex2f( x, h + y); + glVertex2f(w + x, h + y); + glVertex2f(w + x, y); + glEnd(); + } +/* + glBegin(GL_LINE_LOOP); + glColor3f(0.0, 0.0, 0.0); + glVertex2f( x, y); + glVertex2f( x, h + y); + glVertex2f(w + x, h + y); + glVertex2f(w + x, y); +// glVertex2f( x, y); + glEnd(); +*/ + std::list::const_iterator it; + for (it = children.begin(); it != children.end(); ++it) { + (*it)->OnPaint(); + } +} + +Widget *Container::GetWidget(int x, int y) +{ + std::list::iterator it; + for (it = children.begin(); it != children.end(); ++it) { + if ((*it)->Hit(x, y)) return (*it)->GetWidget(x, y); + } + return NULL; +} + +Widget *Container::GetWidget(uint32_t port) +{ + if (this->port == port) return this; + + std::list::iterator it; + for (it = children.begin(); it != children.end(); ++it) { + Widget *w = (*it)->GetWidget(port); + if (w) return w; + } + return NULL; + +} diff --git a/pui/container.h b/pui/container.h new file mode 100644 index 0000000..decb4f2 --- /dev/null +++ b/pui/container.h @@ -0,0 +1,19 @@ +#ifndef CONTAINER_H +#define CONTAINER_H + +#include + +struct Container : Widget { + std::list children; + Colour colour; + + ~Container(); + + /* virtual */ Widget *GetWidget(int x, int y); + + /* virtual */ Widget *GetWidget(uint32_t port); + + /* virtual */ void OnPaint() const; +}; + +#endif /* CONTAINER_H */ diff --git a/pui/knob.cpp b/pui/knob.cpp new file mode 100644 index 0000000..2f30c8e --- /dev/null +++ b/pui/knob.cpp @@ -0,0 +1,53 @@ +#include +#include "pui.h" + +float Knob::GetNewValue(int x, int y) +{ + int p = 20; + if (false) { + int x2 = this->x + p; + int w2 = this->w - p - p; + if (x <= x2) return min; + if (x >= x2 + w2) return max; + return (x - x2) * (max - min) / w2 + min; + } else { + int y2 = this->y + p; + int h2 = this->h - p - p; + if (y <= y2) return max; + if (y >= y2 + h2) return min; + return (y2 + h2 - y) * (max - min) / h2 + min; + } +} + +void Knob::OnPaint() const +{ +// float m = (value - min) / (max - min); + +// printf("%d\n", tex[TEX_TROUGH1]); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + + int t = TEX_KNOB; + int w2 = tex->w[t]; + int h2 = tex->h[t]; + int mx, my; + mx = (w - w2) * 0.5f + x; + my = (h - h2) * 0.5f + y; + + glBindTexture(GL_TEXTURE_2D, tex->tex[t]); + glBegin(GL_QUADS); + glColor3f(1.0, 1.0, 1.0); + glTexCoord2f(0.0, 0.0); + glVertex2f( mx, my); + glTexCoord2f(0.0, 1.0); + glVertex2f( mx, h2 + my); + glTexCoord2f(1.0, 1.0); + glVertex2f(w2 + mx, h2 + my); + glTexCoord2f(1.0, 0.0); + glVertex2f(w2 + mx, my); + glEnd(); + glDisable(GL_TEXTURE_2D); +} + diff --git a/pui/knob.h b/pui/knob.h new file mode 100644 index 0000000..23ca0ae --- /dev/null +++ b/pui/knob.h @@ -0,0 +1,10 @@ +#ifndef KNOB_H +#define KNOB_H + +struct Knob : Widget { + /* virtual */ float GetNewValue(int x, int y); + + /* virtual */ void OnPaint() const; +}; + +#endif /* KNOB_H */ diff --git a/pui/pui.cpp b/pui/pui.cpp new file mode 100644 index 0000000..68ffcb7 --- /dev/null +++ b/pui/pui.cpp @@ -0,0 +1,144 @@ +#include +#include +#include "pui.h" + +PUi::~PUi() +{ + delete this->widget; +} + +void PUi::OnReshape(int w, int h) +{ + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glViewport(0, 0, w, h); + glOrtho(0, w, h, 0, 0, 1); + glMatrixMode(GL_MODELVIEW); + glDisable(GL_DEPTH_TEST); + glLoadIdentity(); +} + +void PUi::OnDisplay() +{ + if (!this->initialised) this->InitTextures(); + + glClear(GL_COLOR_BUFFER_BIT); + this->widget->OnPaint(); +} + +void PUi::OnMotion(int x, int y) +{ + if (!this->mb) { + /* No button */ + Widget *w = this->widget->GetWidget(x, y); + if (this->active != w) { + if (this->active) this->active->active = false; + this->active = w; + if (this->active) this->active->active = true; + this->Repaint(); + } + return; + } + + if (this->active && this->mb == 2) { + /* Left button drag */ + float value = this->active->GetNewValue(x, y); + if (this->active->SetValue(value)) { + this->ParameterChanged(this->active); + this->Repaint(); + } + } +} + +void PUi::OnMouse(int button, bool press, int x, int y) +{ + /* Keep track of button state */ + if (press) { + this->mb |= (1 << button); + } else { + this->mb &= ~(1 << button); + } + + if (!this->mb) { + /* No button press, check for widget focus change */ + Widget *w = this->widget->GetWidget(x, y); + if (this->active != w) { + if (this->active) this->active->active = false; + this->active = w; + if (this->active) this->active->active = true; + this->Repaint(); + } + return; + } + + if (this->active) { + /* RMB, zero value */ + float value = (this->mb & 8) ? 0 : this->active->GetNewValue(x, y); + if (this->active->SetValue(value)) { + this->ParameterChanged(this->active); + this->Repaint(); + } + } +} + +void PUi::OnScroll(float dx, float dy) +{ + if (this->active) { + float value = this->active->value + (dy * .1f); + if (this->active->SetValue(value)) { + this->ParameterChanged(this->active); + this->Repaint(); + } + } +} + +static void onReshape(PuglView *view, int width, int height) +{ + PUi *pui = (PUi *)puglGetHandle(view); + pui->OnReshape(width, height); +} + +static void onDisplay(PuglView *view) +{ + PUi *pui = (PUi *)puglGetHandle(view); + pui->OnDisplay(); +} + +static void onKeyboard(PuglView *view, bool press, uint32_t key) +{ + printf("keyboard %d %X\n", press, key); +} + +static void onSpecial(PuglView *view, bool press, PuglKey key) +{ + printf("special %d %X\n", press, key); +} + +static void onMotion(PuglView *view, int x, int y) +{ + PUi *pui = (PUi *)puglGetHandle(view); + pui->OnMotion(x, y); +} + +static void onMouse(PuglView *view, int button, bool press, int x, int y) +{ + PUi *pui = (PUi *)puglGetHandle(view); + pui->OnMouse(button, press, x, y); +} + +static void onScroll(PuglView *view, float dx, float dy) +{ + PUi *pui = (PUi *)puglGetHandle(view); + pui->OnScroll(dx, dy); +} + +void PUi::SetFunc() +{ + puglSetDisplayFunc(this->view, onDisplay); + puglSetReshapeFunc(this->view, onReshape); + puglSetKeyboardFunc(this->view, onKeyboard); + puglSetSpecialFunc(this->view, onSpecial); + puglSetMotionFunc(this->view, onMotion); + puglSetMouseFunc(this->view, onMouse); + puglSetScrollFunc(this->view, onScroll); +} diff --git a/pui/pui.h b/pui/pui.h new file mode 100644 index 0000000..8185722 --- /dev/null +++ b/pui/pui.h @@ -0,0 +1,36 @@ +#ifndef PUI_H +#define PUI_H + +#include "textures.h" +#include "widget.h" +#include "container.h" +#include "knob.h" +#include "slider.h" + +struct PUi : PTextures { + PuglView *view; + Container *widget; + + Widget *active; + int mx, my, mb, mm; + + virtual ~PUi(); + + inline void Repaint() { puglPostRedisplay(this->view); } + + void OnReshape(int w, int h); + + void OnDisplay(); + + void OnMotion(int x, int y); + + void OnMouse(int button, bool press, int x, int y); + + void OnScroll(float dx, float dy); + + virtual void ParameterChanged(const Widget *widget) = 0; + + void SetFunc(); +}; + +#endif /* PUI_H */ diff --git a/pui/slider.cpp b/pui/slider.cpp new file mode 100644 index 0000000..6111658 --- /dev/null +++ b/pui/slider.cpp @@ -0,0 +1,220 @@ +#include +#include "pui.h" + +static const int trough1_cut = 15; +static const int trough2_cut = 20; +static const int pad = 20; + +float HSlider::GetNewValue(int x, int y) +{ + int x2 = this->x + pad; + int w2 = this->w - pad - pad; + if (x <= x2) return min; + if (x >= x2 + w2) return max; + return (x - x2) * (max - min) / w2 + min; +} + +void HSlider::OnPaint() const +{ + float m = (value - min) / (max - min); + +// printf("%d\n", tex[TEX_TROUGH1]); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + + int t = big ? TEX_TROUGH1 : TEX_TROUGH1; + int w2 = tex->w[t]; + int h2 = tex->h[t]; + int mx, my; + mx = (w - w2) * 0.5f + x; + my = (h - h2) * 0.5f + y; + + int cut = big ? trough2_cut : trough1_cut; + float fc = (float)cut / h2; + + glBindTexture(GL_TEXTURE_2D, tex->tex[t]); + glBegin(GL_QUADS); + glColor3f(1.0, 1.0, 1.0); + glTexCoord2f(0.0, 0.0); + glVertex2f( mx, y); + glTexCoord2f(0.0, fc); + glVertex2f( mx, y + cut); + glTexCoord2f(1.0, fc); + glVertex2f(w2 + mx, y + cut); + glTexCoord2f(1.0, 0.0); + glVertex2f(w2 + mx, y); + + glTexCoord2f(0.0, fc); + glVertex2f( mx, y + cut); + glTexCoord2f(0.0, 1.0 - fc); + glVertex2f( mx, h + y - cut); + glTexCoord2f(1.0, 1.0 - fc); + glVertex2f(w2 + mx, h + y - cut); + glTexCoord2f(1.0, fc); + glVertex2f(w2 + mx, y + cut); + + glTexCoord2f(0.0, 1.0 - fc); + glVertex2f( mx, h + y - cut); + glTexCoord2f(0.0, 1.0); + glVertex2f( mx, h + y); + glTexCoord2f(1.0, 1.0); + glVertex2f(w2 + mx, h + y); + glTexCoord2f(1.0, 1.0 - fc); + glVertex2f(w2 + mx, h + y - cut); +/* + glTexCoord2f(0.0, 0.0); + glVertex2f( mx, my); + glTexCoord2f(0.0, 1.0); + glVertex2f( mx, h2 + my); + glTexCoord2f(1.0, 1.0); + glVertex2f(w2 + mx, h2 + my); + glTexCoord2f(1.0, 0.0); + glVertex2f(w2 + mx, my);*/ + glEnd(); + + if (big) { + t = active ? TEX_SLIDER2_PRE : TEX_SLIDER2; + } else { + t = active ? TEX_SLIDER1_PRE : TEX_SLIDER1; + } + w2 = tex->w[t]; + h2 = tex->h[t]; + + int x3 = this->x + pad; + int w3 = this->w - pad - pad; + mx = w3 * m + x3 - w2 * 0.5f; + my = (h - h2) * 0.5f + y; + + glBindTexture(GL_TEXTURE_2D, tex->tex[t]); + glBegin(GL_QUADS); + glColor4f(1.0, 0.0, 0.0, 0.5); + glTexCoord2f(0.0, 0.0); + glVertex2f( mx, my); + glTexCoord2f(0.0, 1.0); + glVertex2f( mx, h2 + my); + glTexCoord2f(1.0, 1.0); + glVertex2f(w2 + mx, h2 + my); + glTexCoord2f(1.0, 0.0); + glVertex2f(w2 + mx, my); + glEnd(); + + glDisable(GL_TEXTURE_2D); + +/* glBegin(GL_QUADS); + glColor4f(0.5f, 0.3f, 0.5f, 0.5f); + glVertex2f( x, y); + glVertex2f( x, h + y); + glVertex2f(w + x, h + y); + glVertex2f(w + x, y); + glEnd();*/ +} + + +float VSlider::GetNewValue(int x, int y) +{ + int y2 = this->y + pad; + int h2 = this->h - pad - pad; + if (y <= y2) return max; + if (y >= y2 + h2) return min; + return (y2 + h2 - y) * (max - min) / h2 + min; +} + +void VSlider::OnPaint() const +{ + float m = (value - min) / (max - min); + +// printf("%d\n", tex[TEX_TROUGH1]); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + + int t = big ? TEX_TROUGH1 : TEX_TROUGH1; + int w2 = tex->w[t]; + int h2 = tex->h[t]; + int mx, my; + mx = (w - w2) * 0.5f + x; + my = (h - h2) * 0.5f + y; + + int cut = big ? trough2_cut : trough1_cut; + float fc = (float)cut / h2; + + glBindTexture(GL_TEXTURE_2D, tex->tex[t]); + glBegin(GL_QUADS); + glColor3f(1.0, 1.0, 1.0); + + glTexCoord2f(0.0, 0.0); + glVertex2f( mx, y); + glTexCoord2f(0.0, fc); + glVertex2f( mx, y + cut); + glTexCoord2f(1.0, fc); + glVertex2f(w2 + mx, y + cut); + glTexCoord2f(1.0, 0.0); + glVertex2f(w2 + mx, y); + + glTexCoord2f(0.0, fc); + glVertex2f( mx, y + cut); + glTexCoord2f(0.0, 1.0 - fc); + glVertex2f( mx, h + y - cut); + glTexCoord2f(1.0, 1.0 - fc); + glVertex2f(w2 + mx, h + y - cut); + glTexCoord2f(1.0, fc); + glVertex2f(w2 + mx, y + cut); + + glTexCoord2f(0.0, 1.0 - fc); + glVertex2f( mx, h + y - cut); + glTexCoord2f(0.0, 1.0); + glVertex2f( mx, h + y); + glTexCoord2f(1.0, 1.0); + glVertex2f(w2 + mx, h + y); + glTexCoord2f(1.0, 1.0 - fc); + glVertex2f(w2 + mx, h + y - cut); +/* + glTexCoord2f(0.0, 0.0); + glVertex2f( mx, my); + glTexCoord2f(0.0, 1.0); + glVertex2f( mx, h2 + my); + glTexCoord2f(1.0, 1.0); + glVertex2f(w2 + mx, h2 + my); + glTexCoord2f(1.0, 0.0); + glVertex2f(w2 + mx, my);*/ + glEnd(); + + if (big) { + t = active ? TEX_SLIDER2_PRE : TEX_SLIDER2; + } else { + t = active ? TEX_SLIDER1_PRE : TEX_SLIDER1; + } + w2 = tex->w[t]; + h2 = tex->h[t]; + int y3 = this->y + pad; + int h3 = this->h - pad - pad; + mx = (w - w2) * 0.5f + x; + my = h3 - h3 * m + y3 - h2 * 0.5f; + + glBindTexture(GL_TEXTURE_2D, tex->tex[t]); + glBegin(GL_QUADS); + if (big) glColor3f(1.f, 0.f, 0.f); + glTexCoord2f(0.0, 0.0); + glVertex2f( mx, my); + glTexCoord2f(0.0, 1.0); + glVertex2f( mx, h2 + my); + glTexCoord2f(1.0, 1.0); + glVertex2f(w2 + mx, h2 + my); + glTexCoord2f(1.0, 0.0); + glVertex2f(w2 + mx, my); + glEnd(); + + glDisable(GL_TEXTURE_2D); + +/* glBegin(GL_QUADS); + glColor4f(0.5f, 0.3f, 0.5f, 0.5f); + glVertex2f( x, y); + glVertex2f( x, h + y); + glVertex2f(w + x, h + y); + glVertex2f(w + x, y); + glEnd();*/ +} + diff --git a/pui/slider.h b/pui/slider.h new file mode 100644 index 0000000..1be180c --- /dev/null +++ b/pui/slider.h @@ -0,0 +1,20 @@ +#ifndef SLIDER_H +#define SLIDER_H + +struct Slider : Widget { + bool big; +}; + +struct HSlider : Slider { + /* virtual */ float GetNewValue(int x, int y); + + /* virtual */ void OnPaint() const; +}; + +struct VSlider : Slider { + /* virtual */ float GetNewValue(int x, int y); + + /* virtual */ void OnPaint() const; +}; + +#endif /* SLIDER_H */ diff --git a/pui/textures.cpp b/pui/textures.cpp new file mode 100644 index 0000000..23d43f7 --- /dev/null +++ b/pui/textures.cpp @@ -0,0 +1,60 @@ +#include +#include "pui.h" + +#include "textures/slider1-vert.c" +#include "textures/slider1-vert-prelight.c" +#include "textures/trough1-vertical.c" +#include "textures/slider2-vert.c" +#include "textures/slider2-vert-prelight.c" +#include "textures/trough2-vertical.c" +#include "textures/knob4.c" + +void PTextures::BindTexture(int texture, int width, int height, const unsigned char *data) +{ + glBindTexture(GL_TEXTURE_2D, tex[texture]); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); + + w[texture] = width; + h[texture] = height; +} + +void PTextures::InitTextures() +{ + if (initialised) return; + initialised = true; + + glGenTextures(TEX_END, this->tex); + + BindTexture(TEX_SLIDER1, + slider1_vert.width, + slider1_vert.height, + slider1_vert.pixel_data); + BindTexture(TEX_SLIDER1_PRE, + slider1_vert_prelight.width, + slider1_vert_prelight.height, + slider1_vert_prelight.pixel_data); + BindTexture(TEX_TROUGH1, + trough1_vertical.width, + trough1_vertical.height, + trough1_vertical.pixel_data); + BindTexture(TEX_SLIDER2, + slider2_vert.width, + slider2_vert.height, + slider2_vert.pixel_data); + BindTexture(TEX_SLIDER2_PRE, + slider2_vert_prelight.width, + slider2_vert_prelight.height, + slider2_vert_prelight.pixel_data); + BindTexture(TEX_TROUGH2, + trough2_vertical.width, + trough2_vertical.height, + trough2_vertical.pixel_data); + BindTexture(TEX_KNOB, + knob4.width, + knob4.height, + knob4.pixel_data); +} diff --git a/pui/textures.h b/pui/textures.h new file mode 100644 index 0000000..85fedb0 --- /dev/null +++ b/pui/textures.h @@ -0,0 +1,29 @@ +#ifndef TEXTURES_H +#define TEXTURES_H + +enum { + TEX_SLIDER1, + TEX_SLIDER1_PRE, + TEX_TROUGH1, + + TEX_SLIDER2, + TEX_SLIDER2_PRE, + TEX_TROUGH2, + + TEX_KNOB, + + TEX_END, +}; + +struct PTextures { + bool initialised; + + GLuint tex[TEX_END]; + int w[TEX_END]; + int h[TEX_END]; + + void InitTextures(); + void BindTexture(int texture, int width, int height, const unsigned char *data); +}; + +#endif /* TEXTURES_H */ diff --git a/pui/textures/knob4.c b/pui/textures/knob4.c new file mode 100644 index 0000000..7cb5bcd --- /dev/null +++ b/pui/textures/knob4.c @@ -0,0 +1,1088 @@ +/* GIMP RGBA C-Source image dump (knob4.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[80 * 80 * 4 + 1]; +} knob4 = { + 80, 80, 4, + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\17\17\17\21\11\11\11""6\12\12\12I\16\16" + "\16[\17\17\17w\17\17\17\226\20\20\20\261\21\21\21\307\23\23\23\332\24\24" + "\24\330\24\24\24\304\26\26\26\255\27\27\27\222\33\33\33s\35\35\35X\36\36" + "\36E\37\37\37""2'''\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\11\11\34" + "\10\10\10\\\12\12\12\262\12\12\12\341\17\17\17\347\34\34\34\361###\373++" + "+\377444\377>>>\377FFF\377LLL\377JJJ\377AAA\377999\377000\377)))\377$$$\372" + "\37\37\37\357\33\33\33\345\37\37\37\334\"\"\"\247(((R,,,\27\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\6\6\6)\7\7\7m\10\10\10" + "\301\11\11\11\343\34\34\34\367;;;\377VVV\377QQQ\377FFF\377<<<\377555\377" + ",,,\377$$$\377\34\34\34\377\26\26\26\377\30\30\30\377\40\40\40\377)))\377" + "000\377666\377<<<\377AAA\377GGG\377BBB\377...\377\37\37\37\363###\335&&&" + "\264---`---\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\7\7\7M\10\10\10\312\11\11\11\344\"\"" + "\"\373AAA\377XXX\377FFF\377(((\377\17\17\17\377\15\15\15\377\16\16\16\377" + "\16\17\17\377\15\22\22\377\20\22\22\377\22\22\22\377\14\26\26\377\13\27\27" + "\377\14\30\30\377\16\30\30\377\30\30\30\377\27\31\31\377\25\32\32\377\32" + "\33\33\377\34\34\34\377\35\35\35\377###\377222\377@@@\377AAA\377///\377$" + "$$\371'''\335---\271555?\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\4\4\4;\7\7\7\275\17\17\17\354@@@\377WWW\377===\377\37\37" + "\37\377\12\12\12\377\12\12\12\377\11\15\15\377\14\14\14\377\12\21\21\377" + "\2\30\30\377\0\31\31\377\0\31\31\377\13\23\23\377\22\22\22\377\4\30\30\377" + "\0\31\31\377\0\31\31\377\4\30\30\377\30\30\30\377\21\31\31\377\0\31\31\377" + "\0\31\31\377\3\31\31\377\25\34\34\377\36\36\36\377\32\36\36\377\40\40\40" + "\377###\377///\377999\377>>>\377)))\377'''\345333\251<<" + ">>|CCC\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\11\11""9\10\10" + "\10\326$$$\374VVV\377555\377\6\6\6\377\2\3\3\377\2\16\16\377\0\27\27\377" + "\1\26\26\377\7\7\7\377\7\14\14\377\0\31\31\377\0\31\31\377\1\27\27\377\10" + "\20\20\377\15\15\15\377\14\20\20\377\17\20\20\377\20\20\20\377\21\21\21\377" + "\22\22\22\377\23\23\23\377\24\24\24\377\25\25\25\377\26\26\26\377\27\27\27" + "\377\30\30\30\377\32\32\32\377\32\33\33\377\30\34\34\377\35\35\35\377\24" + "\34\34\377\3\31\31\377\0\31\31\377\0\31\31\377\34!!\377###\377\5\32\32\377" + "\2\31\31\377\23\37\37\377%&&\377+++\377222\377...\377(((\372===\303III*\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\10\10]\10\10\10\342;;;\377GGG\377\13\13" + "\13\377\1\1\1\377\2\2\2\377\1\21\21\377\0\31\31\377\0\31\31\377\0\31\31\377" + "\5\15\15\377\10\10\10\377\5\21\21\377\10\15\15\377\13\13\13\377\14\14\14" + "\377\15\15\15\377\16\16\16\377\17\17\17\377\20\20\20\377\21\21\21\377\26" + "\26\26\377)))\377@@@\377>>>\377+++\377\32\32\32\377\30\30\30\377\32\32\32" + "\377\33\33\33\377\34\34\34\377\35\35\35\377\36\36\36\377\37\37\37\377\31" + "\36\36\377\21\35\35\377\"\"\"\377\27\37\37\377\0\31\31\377\0\31\31\377\0" + "\31\31\377\16\36\36\377(((\377)))\377,,,\377000\377$$$\377===\324MMMF\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\5\12\12\12\205\16\16\16\352KKK\377555\377\3\3\3\377\2\7\7\377" + "\1\17\17\377\3\3\3\377\3\7\7\377\0\31\31\377\0\31\31\377\1\26\26\377\5\14" + "\14\377\10\10\10\377\11\11\11\377\12\12\12\377\13\13\13\377\17\17\17\377" + "GGG\377\213\213\213\377\257\257\257\377\307\307\307\377\331\331\331\377\344" + "\344\344\377\342\342\342\377\337\337\337\377\334\334\334\377\331\331\331" + "\377\326\326\326\377\310\310\310\377\263\263\263\377\234\234\234\377{{{\377" + "EEE\377\40\40\40\377\37\37\37\377\40\40\40\377!!!\377\"\"\"\377\31\40\40" + "\377\6\33\33\377\0\31\31\377\1\32\32\377!%%\377(((\377\22\40\40\377\"''\377" + "+++\377---\377$$$\377:::\341KKKj\200\200\200\2\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\20\20\20\13\13\13\252\26\26\26\363SSS\377" + "$$$\377\5\5\5\377\2\16\16\377\0\30\30\377\0\31\31\377\3\14\14\377\4\4\4\377" + "\2\17\17\377\4\15\15\377\7\7\7\377\7\7\7\377\10\10\10\377\23\23\23\377UU" + "U\377\240\240\240\377\345\345\345\377\354\354\354\377\350\350\350\377\360" + "\360\360\377\360\360\360\377\361\361\361\377\362\362\362\377\364\364\364" + "\377\366\366\366\377\364\364\364\377\361\361\361\377\353\353\353\377\346" + "\346\346\377\340\340\340\377\332\332\332\377\313\313\313\377\303\303\303" + "\377\270\270\270\377\203\203\203\377OOO\377&&&\377\"\"\"\377###\377$$$\377" + "\30!!\377\23\40\40\377'''\377\32##\377\0\31\31\377\1\31\31\377\27##\377-" + "--\377,,,\377%%%\377666\355KKK\216MMM\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\10\10\10!\13\13\13\310\37\37\37\373UUU\377\30\30\30\377\6\6\6\377" + "\4\13\13\377\0\31\31\377\0\31\31\377\0\31\31\377\1\27\27\377\5\6\6\377\6" + "\6\6\377\6\6\6\377\7\7\7\377&&&\377\243\243\243\377\356\356\356\377\356\356" + "\356\377\356\356\356\377\366\366\366\377\373\373\373\377\374\374\374\377" + "\373\373\373\377\372\372\372\377\372\372\372\377\371\371\371\377\370\370" + "\370\377\367\367\367\377\366\366\366\377\366\366\366\377\365\365\365\377" + "\364\364\364\377\363\363\363\377\362\362\362\377\362\362\362\377\354\354" + "\354\377\332\332\332\377\303\303\303\377\264\264\264\377\257\257\257\377" + "zzz\377111\377$$$\377%%%\377&&&\377&''\377\4\32\32\377\0\31\31\377\0\31\31" + "\377\0\31\31\377\40''\377...\377,,,\377%%%\377...\367LLL\254YYY\27\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\17\17\17\21\14\14\14\307'''\376PPP\377\20\20\20\377\6" + "\11\11\377\6\11\11\377\6\6\6\377\2\21\21\377\0\31\31\377\1\25\25\377\5\11" + "\11\377\6\6\6\377\7\7\7\377\31\31\31\377\216\216\216\377\357\357\357\377" + "\355\355\355\377\371\371\371\377\375\375\375\377\375\375\375\377\375\375" + "\375\377\374\374\374\377\373\373\373\377\372\372\372\377\371\371\371\377" + "\371\371\371\377\370\370\370\377\367\367\367\377\366\366\366\377\366\366" + "\366\377\365\365\365\377\364\364\364\377\363\363\363\377\362\362\362\377" + "\362\362\362\377\361\361\361\377\360\360\360\377\357\357\357\377\356\356" + "\356\377\352\352\352\377\326\326\326\377\260\260\260\377\245\245\245\377" + "ggg\377,,,\377'''\377(((\377#''\377\11\35\35\377\0\31\31\377\22!!\377---" + "\377),,\377),,\377---\377###\377)))\375PPP\255UUU\14\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\15\15" + "\15\253\34\34\34\372PPP\377\15\15\15\377\10\14\14\377\1\27\27\377\2\26\26" + "\377\7\10\10\377\7\10\10\377\4\17\17\377\7\7\7\377\7\7\7\377\17\17\17\377" + "www\377\350\350\350\377\355\355\355\377\371\371\371\377\377\377\377\377\376" + "\376\376\377\375\375\375\377\374\374\374\377\374\374\374\377\373\373\373" + "\377\372\372\372\377\371\371\371\377\370\370\370\377\370\370\370\377\367" + "\367\367\377\366\366\366\377\365\365\365\377\365\365\365\377\364\364\364" + "\377\363\363\363\377\362\362\362\377\361\361\361\377\361\361\361\377\360" + "\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377\355\355\355" + "\377\354\354\354\377\352\352\352\377\315\315\315\377\242\242\242\377\227" + "\227\227\377XXX\377***\377)))\377)))\377\27\"\"\377*++\377*++\377\11\35\35" + "\377\5\33\33\377)--\377...\377\37\37\37\377222\366WWW\215UUU\3\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\17\17\17\206" + "\25\25\25\362RRR\377\24\24\24\377\11\15\15\377\1\30\30\377\0\31\31\377\0" + "\31\31\377\2\24\24\377\10\10\10\377\10\10\10\377\10\10\10\377///\377\327" + "\327\327\377\355\355\355\377\367\367\367\377\376\376\376\377\377\377\377" + "\377\376\376\376\377\375\375\375\377\374\374\374\377\373\373\373\377\373" + "\373\373\377\372\372\372\377\371\371\371\377\370\370\370\377\370\370\370" + "\377\367\367\367\377\366\366\366\377\365\365\365\377\364\364\364\377\364" + "\364\364\377\363\363\363\377\362\362\362\377\361\361\361\377\360\360\360" + "\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377\355" + "\355\355\377\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351" + "\377\346\346\346\377\301\301\301\377\226\226\226\377\202\202\202\377777\377" + "***\377+++\377,,,\377\14\36\36\377\0\31\31\377\0\31\31\377\5\33\33\377)-" + "-\377+++\377\34\34\34\377>>>\353^^^g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21\21\21\\\21\21\21\352MMM\377\37\37\37\377" + "\14\14\14\377\10\17\17\377\1\31\31\377\0\31\31\377\1\31\31\377\7\15\15\377" + "\11\11\11\377\11\11\11\377NNN\377\350\350\350\377\357\357\357\377\376\376" + "\376\377\377\377\377\377\376\376\376\377\376\376\376\377\375\375\375\377" + "\374\374\374\377\373\373\373\377\373\373\373\377\372\372\372\377\371\371" + "\371\377\370\370\370\377\367\367\367\377\367\367\367\377\366\366\366\377" + "\365\365\365\377\364\364\364\377\363\363\363\377\363\363\363\377\362\362" + "\362\377\361\361\361\377\360\360\360\377\360\360\360\377\357\357\357\377" + "\356\356\356\377\355\355\355\377\354\354\354\377\354\354\354\377\353\353" + "\353\377\352\352\352\377\351\351\351\377\350\350\350\377\350\350\350\377" + "\347\347\347\377\336\336\336\377\236\236\236\377\205\205\205\377AAA\377+" + "++\377,,,\377\"((\377\2\32\32\377\0\31\31\377\2\32\32\377$++\377222\377&" + "&&\377\33\33\33\377III\337gggC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\22\22\22""8\21\21\21\341BBB\377***\377\14\16\16\377\13\17\17\377\14" + "\14\14\377\11\17\17\377\1\27\27\377\11\16\16\377\12\12\12\377\12\12\12\377" + "uuu\377\355\355\355\377\364\364\364\377\377\377\377\377\377\377\377\377\376" + "\376\376\377\376\376\376\377\375\375\375\377\374\374\374\377\373\373\373" + "\377\372\372\372\377\372\372\372\377\371\371\371\377\370\370\370\377\367" + "\367\367\377\367\367\367\377\366\366\366\377\365\365\365\377\364\364\364" + "\377\363\363\363\377\363\363\363\377\362\362\362\377\361\361\361\377\360" + "\360\360\377\357\357\357\377\357\357\357\377\356\356\356\377\355\355\355" + "\377\354\354\354\377\353\353\353\377\353\353\353\377\352\352\352\377\351" + "\351\351\377\350\350\350\377\347\347\347\377\347\347\347\377\346\346\346" + "\377\345\345\345\377\342\342\342\377\251\251\251\377\200\200\200\377MMM\377" + ",,,\377---\377$**\377\5\33\33\377&,,\377222\377*..\377133\377\37\37\37\377" + "\34\34\34\377SSS\321kkk&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22\22\22\34\23\23" + "\23\324222\377888\377\17\17\17\377\4\25\25\377\1\31\31\377\11\21\21\377\14" + "\14\14\377\14\15\15\377\14\14\14\377\22\22\22\377\240\240\240\377\352\352" + "\352\377\367\367\367\377\377\377\377\377\377\377\377\377\376\376\376\377" + "\375\375\375\377\375\375\375\377\374\374\374\377\373\373\373\377\372\372" + "\372\377\371\371\371\377\371\371\371\377\370\370\370\377\367\367\367\377" + "\366\366\366\377\366\366\366\377\365\365\365\377\364\364\364\377\363\363" + "\363\377\362\362\362\377\362\362\362\377\361\361\361\377\360\360\360\377" + "\357\357\357\377\356\356\356\377\356\356\356\377\355\355\355\377\354\354" + "\354\377\353\353\353\377\352\352\352\377\352\352\352\377\351\351\351\377" + "\350\350\350\377\347\347\347\377\347\347\347\377\346\346\346\377\345\345" + "\345\377\344\344\344\377\343\343\343\377\343\343\343\377\270\270\270\377" + "yyy\377ZZZ\377///\377///\377/00\377111\377\"**\377\2\32\32\377\20!!\3774" + "44\377\30\30\30\377###\377[[[\274xxx\21\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\25\25\25\225" + "\35\35\35\374FFF\377\20\20\20\377\11\25\25\377\0\31\31\377\0\31\31\377\0" + "\31\31\377\13\17\17\377\15\15\15\377\15\15\15\377\240\240\240\377\346\346" + "\346\377\372\372\372\377\377\377\377\377\377\377\377\377\376\376\376\377" + "\375\375\375\377\374\374\374\377\374\374\374\377\373\373\373\377\372\372" + "\372\377\371\371\371\377\371\371\371\377\370\370\370\377\367\367\367\377" + "\366\366\366\377\365\365\365\377\365\365\365\377\364\364\364\377\363\363" + "\363\377\362\362\362\377\361\361\361\377\361\361\361\377\360\360\360\377" + "\357\357\357\377\356\356\356\377\356\356\356\377\355\355\355\377\354\354" + "\354\377\353\353\353\377\352\352\352\377\352\352\352\377\351\351\351\377" + "\350\350\350\377\347\347\347\377\346\346\346\377\346\346\346\377\345\345" + "\345\377\344\344\344\377\343\343\343\377\343\343\343\377\342\342\342\377" + "\341\341\341\377\304\304\304\377uuu\377TTT\377///\377000\377(,,\377\0\31" + "\31\377\0\31\31\377\0\31\31\377\35((\377222\377\22\22\22\377888\371hhhq\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\27\27\27,\26\26\26\341FFF\377\34\34\34\377\20\21\21\377\3" + "\30\30\377\0\31\31\377\0\31\31\377\7\25\25\377\16\16\16\377\16\16\16\377" + "uuu\377\344\344\344\377\371\371\371\377\377\377\377\377\377\377\377\377\376" + "\376\376\377\375\375\375\377\374\374\374\377\374\374\374\377\373\373\373" + "\377\372\372\372\377\371\371\371\377\370\370\370\377\370\370\370\377\367" + "\367\367\377\366\366\366\377\365\365\365\377\364\364\364\377\364\364\364" + "\377\363\363\363\377\362\362\362\377\361\361\361\377\361\361\361\377\360" + "\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377\355\355\355" + "\377\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\351" + "\351\351\377\350\350\350\377\347\347\347\377\346\346\346\377\346\346\346" + "\377\345\345\345\377\344\344\344\377\343\343\343\377\342\342\342\377\342" + "\342\342\377\341\341\341\377\340\340\340\377\337\337\337\377\301\301\301" + "\377hhh\377EEE\377000\377111\377\26$$\377\0\31\31\377\0\31\31\377\11\36\36" + "\377455\377\"\"\"\377\26\26\26\377YYY\322{{{\33\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\30\30\251###\376" + ";;;\377\23\23\23\377\22\22\22\377\20\21\21\377\6\26\26\377\3\27\27\377\20" + "\21\21\377\17\17\17\377PPP\377\343\343\343\377\365\365\365\377\377\377\377" + "\377\377\377\377\377\376\376\376\377\375\375\375\377\374\374\374\377\373" + "\373\373\377\373\373\373\377\372\372\372\377\371\371\371\377\370\370\370" + "\377\367\367\367\377\367\367\367\377\366\366\366\377\365\365\365\377\364" + "\364\364\377\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361" + "\377\360\360\360\377\360\360\360\377\357\357\357\377\356\356\356\377\355" + "\355\355\377\354\354\354\377\354\354\354\377\353\353\353\377\352\352\352" + "\377\351\351\351\377\350\350\350\377\350\350\350\377\347\347\347\377\346" + "\346\346\377\345\345\345\377\345\345\345\377\344\344\344\377\343\343\343" + "\377\342\342\342\377\341\341\341\377\341\341\341\377\340\340\340\377\337" + "\337\337\377\336\336\336\377\335\335\335\377\253\253\253\377aaa\377<<<\377" + "222\377233\377\13\37\37\377\23##\377455\377777\377777\377\16\16\16\37722" + "2\375iii\203\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\36\36\36<\27\27\27\345HHH\377\32\32\32\377\13\26\26\377\11\26" + "\26\377\21\22\22\377\22\22\22\377\20\21\21\377\21\21\21\377333\377\333\333" + "\333\377\355\355\355\377\377\377\377\377\376\376\376\377\376\376\376\377" + "\375\375\375\377\374\374\374\377\373\373\373\377\372\372\372\377\372\372" + "\372\377\371\371\371\377\370\370\370\377\367\367\367\377\367\367\367\377" + "\366\366\366\377\365\365\365\377\364\364\364\377\363\363\363\377\363\363" + "\363\377\362\362\362\377\361\361\361\377\360\360\360\377\357\357\357\377" + "\357\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377\353\353" + "\353\377\353\353\353\377\352\352\352\377\351\351\351\377\350\350\350\377" + "\350\350\350\377\347\347\347\377\346\346\346\377\345\345\345\377\344\344" + "\344\377\344\344\344\377\343\343\343\377\342\342\342\377\341\341\341\377" + "\340\340\340\377\340\340\340\377\337\337\337\377\336\336\336\377\335\335" + "\335\377\335\335\335\377\334\334\334\377\216\216\216\377XXX\377777\37733" + "3\377122\377555\377455\377\32''\377\40++\377&&&\377\21\21\21\377YYY\330\200" + "\200\200&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2" + "\33\33\33\272)))\377555\377\24\26\26\377\1\30\30\377\0\31\31\377\2\30\30" + "\377\20\24\24\377\22\22\22\377\30\30\30\377\310\310\310\377\343\343\343\377" + "\377\377\377\377\376\376\376\377\375\375\375\377\375\375\375\377\374\374" + "\374\377\373\373\373\377\372\372\372\377\372\372\372\377\371\371\371\377" + "\370\370\370\377\367\367\367\377\366\366\366\377\366\366\366\377\365\365" + "\365\377\364\364\364\377\363\363\363\377\362\362\362\377\362\362\362\377" + "\361\361\361\377\360\360\360\377\357\357\357\377\357\357\357\377\356\356" + "\356\377\355\355\355\377\354\354\354\377\353\353\353\377\353\353\353\377" + "\352\352\352\377\351\351\351\377\350\350\350\377\347\347\347\377\347\347" + "\347\377\346\346\346\377\345\345\345\377\344\344\344\377\344\344\344\377" + "\343\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377\340\340" + "\340\377\337\337\337\377\336\336\336\377\335\335\335\377\334\334\334\377" + "\334\334\334\377\333\333\333\377\330\330\330\377rrr\377OOO\377444\377444" + "\377,00\377\6\34\34\377\0\31\31\377\4\33\33\377577\377\13\13\13\377,,,\377" + "lll\225\377\377\377\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!!!" + "M\30\30\30\353GGG\377\31\31\31\377\12\30\30\377\0\31\31\377\0\31\31\377\3" + "\30\30\377\24\24\24\377\23\23\23\377qqq\377\327\327\327\377\375\375\375\377" + "\376\376\376\377\375\375\375\377\375\375\375\377\374\374\374\377\373\373" + "\373\377\372\372\372\377\371\371\371\377\371\371\371\377\370\370\370\377" + "\367\367\367\377\366\366\366\377\366\366\366\377\365\365\365\377\364\364" + "\364\377\363\363\363\377\362\362\362\377\362\362\362\377\361\361\361\377" + "\360\360\360\377\357\357\357\377\356\356\356\377\356\356\356\377\355\355" + "\355\377\354\354\354\377\353\353\353\377\352\352\352\377\352\352\352\377" + "\351\351\351\377\350\350\350\377\347\347\347\377\346\346\346\377\346\346" + "\346\377\345\345\345\377\344\344\344\377\343\343\343\377\343\343\343\377" + "\342\342\342\377\341\341\341\377\340\340\340\377\337\337\337\377\337\337" + "\337\377\336\336\336\377\335\335\335\377\334\334\334\377\333\333\333\377" + "\333\333\333\377\332\332\332\377\331\331\331\377\315\315\315\377PPP\377<" + "<<\377555\377555\377\10\35\35\377\0\31\31\377\0\31\31\377\32((\377+++\377" + "\17\17\17\377SSS\337\205\205\2052\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\1\36\36\36\306---\377///\377\27\27\27\377\14\30\30\377\1\31\31\377" + "\0\31\31\377\15\26\26\377\24\24\24\377###\377\320\320\320\377\355\355\355" + "\377\376\376\376\377\375\375\375\377\374\374\374\377\374\374\374\377\373" + "\373\373\377\372\372\372\377\371\371\371\377\370\370\370\377\370\370\370" + "\377\367\367\367\377\366\366\366\377\365\365\365\377\364\364\364\377\364" + "\364\364\377\363\363\363\377\362\362\362\377\361\361\361\377\361\361\361" + "\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355\355\377\355" + "\355\355\377\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351" + "\377\351\351\351\377\350\350\350\377\347\347\347\377\346\346\346\377\346" + "\346\346\377\345\345\345\377\344\344\344\377\343\343\343\377\342\342\342" + "\377\342\342\342\377\341\341\341\377\340\340\340\377\337\337\337\377\336" + "\336\336\377\336\336\336\377\335\335\335\377\334\334\334\377\333\333\333" + "\377\333\333\333\377\332\332\332\377\331\331\331\377\330\330\330\377\327" + "\327\327\377\222\222\222\377DDD\377555\377666\377#,,\377\0\31\31\377\3\33" + "\33\377\36**\377999\377\22\22\22\377(((\377ooo\241\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0$$$+\34\34\34\341CCC\377\33\33\33\377\30\30\30\377\27\27" + "\27\377\25\27\27\377\13\27\27\377\26\26\26\377\25\25\25\377\201\201\201\377" + "\322\322\322\377\375\375\375\377\375\375\375\377\374\374\374\377\373\373" + "\373\377\373\373\373\377\372\372\372\377\371\371\371\377\370\370\370\377" + "\370\370\370\377\367\367\367\377\366\366\366\377\365\365\365\377\364\364" + "\364\377\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361\377" + "\360\360\360\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355" + "\355\377\355\355\355\377\354\354\354\377\353\353\353\377\352\352\352\377" + "\351\351\351\377\351\351\351\377\350\350\350\377\347\347\347\377\346\346" + "\346\377\345\345\345\377\345\345\345\377\344\344\344\377\343\343\343\377" + "\342\342\342\377\341\341\341\377\341\341\341\377\340\340\340\377\337\337" + "\337\377\336\336\336\377\336\336\336\377\335\335\335\377\334\334\334\377" + "\333\333\333\377\332\332\332\377\332\332\332\377\331\331\331\377\330\330" + "\330\377\327\327\327\377\326\326\326\377\321\321\321\377HHH\377888\37766" + "6\377777\377\35))\377577\377:::\377999\377+++\377\25\25\25\377aaa\322\212" + "\212\212\30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&&&l\34\34\34\374<<<\377\32\32" + "\32\377\6\31\31\377\16\31\31\377\26\30\30\377\27\27\27\377\27\27\27\377/" + "//\377\314\314\314\377\355\355\355\377\375\375\375\377\374\374\374\377\373" + "\373\373\377\373\373\373\377\372\372\372\377\371\371\371\377\370\370\370" + "\377\367\367\367\377\367\367\367\377\366\366\366\377\365\365\365\377\364" + "\364\364\377\363\363\363\377\363\363\363\377\362\362\362\377\361\361\361" + "\377\360\360\360\377\360\360\360\377\357\357\357\377\356\356\356\377\355" + "\355\355\377\354\354\354\377\354\354\354\377\353\353\353\377\352\352\352" + "\377\351\351\351\377\350\350\350\377\350\350\350\377\347\347\347\377\346" + "\346\346\377\345\345\345\377\345\345\345\377\344\344\344\377\343\343\343" + "\377\342\342\342\377\341\341\341\377\341\341\341\377\340\340\340\377\337" + "\337\337\377\336\336\336\377\335\335\335\377\335\335\335\377\334\334\334" + "\377\333\333\333\377\332\332\332\377\331\331\331\377\331\331\331\377\330" + "\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377\325\325\325" + "\377\227\227\227\377===\377888\377888\377999\377688\377!,,\377\16!!\3777" + "77\377\21\21\21\377EEE\365\210\210\210I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$" + "$$\276***\377---\377\23\31\31\377\0\31\31\377\0\31\31\377\3\31\31\377\30" + "\30\30\377\30\30\30\377\221\221\221\377\317\317\317\377\375\375\375\377\374" + "\374\374\377\373\373\373\377\372\372\372\377\372\372\372\377\371\371\371" + "\377\370\370\370\377\367\367\367\377\366\366\366\377\366\366\366\377\365" + "\365\365\377\364\364\364\377\363\363\363\377\363\363\363\377\362\362\362" + "\377\361\361\361\377\360\360\360\377\357\357\357\377\357\357\357\377\356" + "\356\356\377\355\355\355\377\354\354\354\377\353\353\353\377\353\353\353" + "\377\352\352\352\377\351\351\351\377\350\350\350\377\347\347\347\377\347" + "\347\347\377\346\346\346\377\345\345\345\377\344\344\344\377\344\344\344" + "\377\343\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377\340" + "\340\340\377\337\337\337\377\336\336\336\377\335\335\335\377\334\334\334" + "\377\334\334\334\377\333\333\333\377\332\332\332\377\331\331\331\377\330" + "\330\330\377\330\330\330\377\327\327\327\377\326\326\326\377\325\325\325" + "\377\325\325\325\377\324\324\324\377\321\321\321\377TTT\377???\377888\377" + "999\377\6\35\35\377\0\31\31\377\0\31\31\377)//\377\30\30\30\377---\377uu" + "u\227\0\0\0\0\0\0\0\0\0\0\0\0,,,\35\"\"\"\336;;;\377\37\37\37\377\12\31\31" + "\377\0\31\31\377\0\31\31\377\13\31\31\377\31\31\31\377\"\"\"\377\305\305" + "\305\377\353\353\353\377\374\374\374\377\373\373\373\377\372\372\372\377" + "\371\371\371\377\371\371\371\377\370\370\370\377\367\367\367\377\366\366" + "\366\377\366\366\366\377\365\365\365\377\364\364\364\377\363\363\363\377" + "\362\362\362\377\362\362\362\377\361\361\361\377\360\360\360\377\357\357" + "\357\377\356\356\356\377\356\356\356\377\355\355\355\377\354\354\354\377" + "\353\353\353\377\352\352\352\377\352\352\352\377\351\351\351\377\350\350" + "\350\377\347\347\347\377\347\347\347\377\346\346\346\377\345\345\345\377" + "\344\344\344\377\343\343\343\377\343\343\343\377\342\342\342\377\341\341" + "\341\377\340\340\340\377\337\337\337\377\337\337\337\377\336\336\336\377" + "\335\335\335\377\334\334\334\377\334\334\334\377\333\333\333\377\332\332" + "\332\377\331\331\331\377\330\330\330\377\330\330\330\377\327\327\327\377" + "\326\326\326\377\325\325\325\377\324\324\324\377\324\324\324\377\323\323" + "\323\377\322\322\322\377\234\234\234\377KKK\377999\377999\377\30''\377\0" + "\31\31\377\0\31\31\377\26%%\377(((\377\32\32\32\377kkk\313\210\210\210\17" + "\0\0\0\0\0\0\0\0...Y\34\34\34\367;;;\377\35\35\35\377\12\32\32\377\1\31\31" + "\377\0\31\31\377\25\33\33\377\32\32\32\377SSS\377\300\300\300\377\372\372" + "\372\377\373\373\373\377\372\372\372\377\371\371\371\377\371\371\371\377" + "\370\370\370\377\367\367\367\377\366\366\366\377\365\365\365\377\365\365" + "\365\377\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361\377" + "\361\361\361\377\360\360\360\377\357\357\357\377\356\356\356\377\356\356" + "\356\377\355\355\355\377\354\354\354\377\353\353\353\377\352\352\352\377" + "\352\352\352\377\351\351\351\377\350\350\350\377\347\347\347\377\346\346" + "\346\377\346\346\346\377\345\345\345\377\344\344\344\377\343\343\343\377" + "\343\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377\337\337" + "\337\377\337\337\337\377\336\336\336\377\335\335\335\377\334\334\334\377" + "\333\333\333\377\333\333\333\377\332\332\332\377\331\331\331\377\330\330" + "\330\377\327\327\327\377\327\327\327\377\326\326\326\377\325\325\325\377" + "\324\324\324\377\323\323\323\377\323\323\323\377\322\322\322\377\321\321" + "\321\377\306\306\306\377PPP\377@@@\377:::\377,22\377\0\31\31\377\2\32\32" + "\377\24$$\377444\377\26\26\26\377MMM\355\225\225\225:\0\0\0\0\0\0\0\0)))" + "\255%%%\377///\377\36\36\36\377\35\35\35\377\33\34\34\377\23\33\33\377\33" + "\33\33\377\33\33\33\377\207\207\207\377\315\315\315\377\373\373\373\377\372" + "\372\372\377\371\371\371\377\370\370\370\377\370\370\370\377\367\367\367" + "\377\366\366\366\377\365\365\365\377\364\364\364\377\364\364\364\377\363" + "\363\363\377\362\362\362\377\361\361\361\377\361\361\361\377\360\360\360" + "\377\357\357\357\377\356\356\356\377\355\355\355\377\355\355\355\377\354" + "\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\351\351\351" + "\377\350\350\350\377\347\347\347\377\346\346\346\377\345\345\345\377\345" + "\345\345\377\344\344\344\377\343\343\343\377\342\342\342\377\342\342\342" + "\377\341\341\341\377\340\340\340\377\337\337\337\377\336\336\336\377\336" + "\336\336\377\335\335\335\377\334\334\334\377\333\333\333\377\332\332\332" + "\377\332\332\332\377\331\331\331\377\330\330\330\377\327\327\327\377\326" + "\326\326\377\326\326\326\377\325\325\325\377\324\324\324\377\323\323\323" + "\377\323\323\323\377\322\322\322\377\321\321\321\377\320\320\320\377\317" + "\317\317\377qqq\377LLL\377:::\377999\377%--\377566\377666\377555\377\32\32" + "\32\377555\377~~~\204\0\0\0\0""999\22)))\333444\377$$$\377\26\36\36\377\22" + "\34\34\377\31\35\35\377\35\35\35\377\34\34\34\377\37\37\37\377\263\263\263" + "\377\341\341\341\377\372\372\372\377\371\371\371\377\370\370\370\377\367" + "\367\367\377\367\367\367\377\366\366\366\377\365\365\365\377\364\364\364" + "\377\363\363\363\377\363\363\363\377\362\362\362\377\361\361\361\377\360" + "\360\360\377\360\360\360\377\357\357\357\377\356\356\356\377\355\355\355" + "\377\354\354\354\377\354\354\354\377\353\353\353\377\352\352\352\377\351" + "\351\351\377\350\350\350\377\350\350\350\377\347\347\347\377\346\346\346" + "\377\345\345\345\377\345\345\345\377\344\344\344\377\343\343\343\377\342" + "\342\342\377\341\341\341\377\341\341\341\377\340\340\340\377\337\337\337" + "\377\336\336\336\377\335\335\335\377\335\335\335\377\334\334\334\377\333" + "\333\333\377\332\332\332\377\332\332\332\377\331\331\331\377\330\330\330" + "\377\327\327\327\377\326\326\326\377\326\326\326\377\325\325\325\377\324" + "\324\324\377\323\323\323\377\322\322\322\377\322\322\322\377\321\321\321" + "\377\320\320\320\377\317\317\317\377\316\316\316\377\235\235\235\377\\\\" + "\\\377:::\377888\377888\377/33\377!++\377%--\377&&&\377\40\40\40\377ttt\303" + "\200\200\200\10""4446###\345888\377\40\40\40\377\12\33\33\377\0\31\31\377" + "\0\31\31\377\23\34\34\377\35\35\35\377FFF\377\264\264\264\377\364\364\364" + "\377\371\371\371\377\370\370\370\377\367\367\367\377\367\367\367\377\366" + "\366\366\377\365\365\365\377\364\364\364\377\363\363\363\377\363\363\363" + "\377\362\362\362\377\361\361\361\377\360\360\360\377\357\357\357\377\357" + "\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377\353\353\353" + "\377\353\353\353\377\352\352\352\377\351\351\351\377\350\350\350\377\350" + "\350\350\377\347\347\347\377\346\346\346\377\345\345\345\377\344\344\344" + "\377\344\344\344\377\343\343\343\377\342\342\342\377\341\341\341\377\340" + "\340\340\377\340\340\340\377\337\337\337\377\336\336\336\377\335\335\335" + "\377\335\335\335\377\334\334\334\377\333\333\333\377\332\332\332\377\331" + "\331\331\377\331\331\331\377\330\330\330\377\327\327\327\377\326\326\326" + "\377\325\325\325\377\325\325\325\377\324\324\324\377\323\323\323\377\322" + "\322\322\377\322\322\322\377\321\321\321\377\320\320\320\377\317\317\317" + "\377\316\316\316\377\316\316\316\377\301\301\301\377bbb\377CCC\377888\377" + "#,,\377\0\31\31\377\0\31\31\377\21\"\"\377...\377\36\36\36\377aaa\327\233" + "\233\233!666G\37\37\37\360777\377!!!\377\4\32\32\377\0\31\31\377\0\31\31" + "\377\32\36\36\377\36\36\36\377sss\377\274\274\274\377\371\371\371\377\370" + "\370\370\377\367\367\367\377\366\366\366\377\366\366\366\377\365\365\365" + "\377\364\364\364\377\363\363\363\377\362\362\362\377\362\362\362\377\361" + "\361\361\377\360\360\360\377\357\357\357\377\357\357\357\377\356\356\356" + "\377\355\355\355\377\354\354\354\377\353\353\353\377\353\353\353\377\352" + "\352\352\377\351\351\351\377\350\350\350\377\347\347\347\377\347\347\347" + "\377\346\346\346\377\345\345\345\377\344\344\344\377\343\343\343\377\343" + "\343\343\377\342\342\342\377\341\341\341\377\340\340\340\377\340\340\340" + "\377\337\337\337\377\336\336\336\377\335\335\335\377\334\334\334\377\334" + "\334\334\377\333\333\333\377\332\332\332\377\331\331\331\377\330\330\330" + "\377\330\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377\324" + "\324\324\377\324\324\324\377\323\323\323\377\322\322\322\377\321\321\321" + "\377\321\321\321\377\320\320\320\377\317\317\317\377\316\316\316\377\315" + "\315\315\377\315\315\315\377\314\314\314\377xxx\377RRR\377888\377-11\377" + "\0\31\31\377\0\31\31\377\7\35\35\377000\377\35\35\35\377XXX\344\241\241\241" + ".999Y\36\36\36\374222\377\40\"\"\377\0\31\31\377\0\31\31\377\1\31\31\377" + "\37\37\37\377\37\37\37\377\214\214\214\377\315\315\315\377\370\370\370\377" + "\367\367\367\377\366\366\366\377\365\365\365\377\365\365\365\377\364\364" + "\364\377\363\363\363\377\362\362\362\377\362\362\362\377\361\361\361\377" + "\360\360\360\377\357\357\357\377\356\356\356\377\356\356\356\377\355\355" + "\355\377\354\354\354\377\353\353\353\377\352\352\352\377\352\352\352\377" + "\351\351\351\377\350\350\350\377\347\347\347\377\346\346\346\377\346\346" + "\346\377\345\345\345\377\344\344\344\377\343\343\343\377\343\343\343\377" + "\342\342\342\377\341\341\341\377\340\340\340\377\337\337\337\377\337\337" + "\337\377\336\336\336\377\335\335\335\377\334\334\334\377\333\333\333\377" + "\333\333\333\377\332\332\332\377\331\331\331\377\330\330\330\377\327\327" + "\327\377\327\327\327\377\326\326\326\377\325\325\325\377\324\324\324\377" + "\324\324\324\377\323\323\323\377\322\322\322\377\321\321\321\377\320\320" + "\320\377\320\320\320\377\317\317\317\377\316\316\316\377\315\315\315\377" + "\314\314\314\377\314\314\314\377\313\313\313\377\222\222\222\377^^^\3777" + "77\377555\377\1\31\31\377\0\31\31\377\0\31\31\377011\377\36\36\36\377NNN" + "\362\240\240\240;666v\37\37\37\377///\377###\377\36!!\377\31\40\40\377\25" + "\36\36\377!!!\377\40\40\40\377\226\226\226\377\323\323\323\377\367\367\367" + "\377\366\366\366\377\365\365\365\377\364\364\364\377\364\364\364\377\363" + "\363\363\377\362\362\362\377\361\361\361\377\361\361\361\377\360\360\360" + "\377\357\357\357\377\356\356\356\377\355\355\355\377\355\355\355\377\354" + "\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\351\351\351" + "\377\350\350\350\377\347\347\347\377\346\346\346\377\346\346\346\377\345" + "\345\345\377\344\344\344\377\343\343\343\377\342\342\342\377\342\342\342" + "\377\341\341\341\377\340\340\340\377\337\337\337\377\336\336\336\377\336" + "\336\336\377\335\335\335\377\334\334\334\377\333\333\333\377\333\333\333" + "\377\332\332\332\377\331\331\331\377\330\330\330\377\327\327\327\377\327" + "\327\327\377\326\326\326\377\325\325\325\377\324\324\324\377\323\323\323" + "\377\323\323\323\377\322\322\322\377\321\321\321\377\320\320\320\377\320" + "\320\320\377\317\317\317\377\316\316\316\377\315\315\315\377\314\314\314" + "\377\314\314\314\377\313\313\313\377\312\312\312\377\236\236\236\377kkk\377" + "777\377666\377\"++\377&--\377-00\377111\377\37\37\37\377FFF\377\236\236\236" + "L666\223\40\40\40\377,,,\377\"##\377\"##\377\"\"\"\377\"\"\"\377\"\"\"\377" + "!!!\377\235\235\235\377\331\331\331\377\366\366\366\377\365\365\365\377\364" + "\364\364\377\364\364\364\377\363\363\363\377\362\362\362\377\361\361\361" + "\377\360\360\360\377\360\360\360\377\357\357\357\377\356\356\356\377\355" + "\355\355\377\355\355\355\377\354\354\354\377\353\353\353\377\352\352\352" + "\377\351\351\351\377\351\351\351\377\350\350\350\377\347\347\347\377\346" + "\346\346\377\345\345\345\377\345\345\345\377\344\344\344\377\343\343\343" + "\377\342\342\342\377\341\341\341\377\341\341\341\377\340\340\340\377\337" + "\337\337\377\336\336\336\377\336\336\336\377\335\335\335\377\334\334\334" + "\377\333\333\333\377\332\332\332\377\332\332\332\377\331\331\331\377\330" + "\330\330\377\327\327\327\377\326\326\326\377\326\326\326\377\325\325\325" + "\377\324\324\324\377\323\323\323\377\322\322\322\377\322\322\322\377\321" + "\321\321\377\320\320\320\377\317\317\317\377\317\317\317\377\316\316\316" + "\377\315\315\315\377\314\314\314\377\313\313\313\377\313\313\313\377\312" + "\312\312\377\311\311\311\377\251\251\251\377uuu\377666\377555\377555\377" + "444\377233\377122\377!!!\377@@@\377\215\215\215i777\254\40\40\40\377***\377" + "\26\40\40\377\0\31\31\377\2\32\32\377\17\35\35\377###\377'''\377\233\233" + "\233\377\341\341\341\377\365\365\365\377\364\364\364\377\363\363\363\377" + "\363\363\363\377\362\362\362\377\361\361\361\377\360\360\360\377\360\360" + "\360\377\357\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377" + "\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\350\350" + "\350\377\350\350\350\377\347\347\347\377\346\346\346\377\345\345\345\377" + "\344\344\344\377\344\344\344\377\343\343\343\377\342\342\342\377\341\341" + "\341\377\340\340\340\377\340\340\340\377\337\337\337\377\336\336\336\377" + "\335\335\335\377\335\335\335\377\334\334\334\377\333\333\333\377\332\332" + "\332\377\331\331\331\377\331\331\331\377\330\330\330\377\327\327\327\377" + "\326\326\326\377\325\325\325\377\325\325\325\377\324\324\324\377\323\323" + "\323\377\322\322\322\377\322\322\322\377\321\321\321\377\320\320\320\377" + "\317\317\317\377\316\316\316\377\316\316\316\377\315\315\315\377\314\314" + "\314\377\313\313\313\377\312\312\312\377\312\312\312\377\311\311\311\377" + "\310\310\310\377\262\262\262\377\177\177\177\377666\377555\377\26$$\377\3" + "\33\33\377\0\31\31\377\36((\377$$$\377888\377\211\211\211\204999\301\"\"" + "\"\377)))\377\25\40\40\377\0\31\31\377\0\31\31\377\17\35\35\377$$$\37722" + "2\377\226\226\226\377\351\351\351\377\364\364\364\377\363\363\363\377\362" + "\362\362\377\362\362\362\377\361\361\361\377\360\360\360\377\357\357\357" + "\377\357\357\357\377\356\356\356\377\355\355\355\377\354\354\354\377\353" + "\353\353\377\353\353\353\377\352\352\352\377\351\351\351\377\350\350\350" + "\377\347\347\347\377\347\347\347\377\346\346\346\377\345\345\345\377\344" + "\344\344\377\344\344\344\377\343\343\343\377\342\342\342\377\341\341\341" + "\377\340\340\340\377\340\340\340\377\337\337\337\377\336\336\336\377\335" + "\335\335\377\334\334\334\377\334\334\334\377\333\333\333\377\332\332\332" + "\377\331\331\331\377\330\330\330\377\330\330\330\377\327\327\327\377\326" + "\326\326\377\325\325\325\377\325\325\325\377\324\324\324\377\323\323\323" + "\377\322\322\322\377\321\321\321\377\321\321\321\377\320\320\320\377\317" + "\317\317\377\316\316\316\377\315\315\315\377\315\315\315\377\314\314\314" + "\377\313\313\313\377\312\312\312\377\312\312\312\377\311\311\311\377\310" + "\310\310\377\307\307\307\377\272\272\272\377\205\205\205\377;;;\377444\377" + "\26$$\377\0\31\31\377\0\31\31\377\34''\377'''\377000\377\205\205\205\233" + "<<<\322###\377)))\377\24\40\40\377\0\31\31\377\0\31\31\377\21\37\37\377%" + "%%\377???\377\221\221\221\377\362\362\362\377\363\363\363\377\362\362\362" + "\377\362\362\362\377\361\361\361\377\360\360\360\377\357\357\357\377\356" + "\356\356\377\356\356\356\377\355\355\355\377\354\354\354\377\353\353\353" + "\377\352\352\352\377\352\352\352\377\351\351\351\377\350\350\350\377\347" + "\347\347\377\347\347\347\377\346\346\346\377\345\345\345\377\344\344\344" + "\377\343\343\343\377\343\343\343\377\342\342\342\377\341\341\341\377\340" + "\340\340\377\337\337\337\377\337\337\337\377\336\336\336\377\335\335\335" + "\377\334\334\334\377\334\334\334\377\333\333\333\377\332\332\332\377\331" + "\331\331\377\330\330\330\377\330\330\330\377\327\327\327\377\326\326\326" + "\377\325\325\325\377\324\324\324\377\324\324\324\377\323\323\323\377\322" + "\322\322\377\321\321\321\377\321\321\321\377\320\320\320\377\317\317\317" + "\377\316\316\316\377\315\315\315\377\315\315\315\377\314\314\314\377\313" + "\313\313\377\312\312\312\377\311\311\311\377\311\311\311\377\310\310\310" + "\377\307\307\307\377\306\306\306\377\300\300\300\377\213\213\213\377DDD\377" + "444\377\27%%\377\0\31\31\377\0\31\31\377\33&&\377***\377+++\377\205\205\205" + "\260>>>\322\37\37\37\377)))\377\34##\377\20\37\37\377\17\36\36\377\32\"\"" + "\377&&&\377===\377\213\213\213\377\361\361\361\377\362\362\362\377\361\361" + "\361\377\361\361\361\377\360\360\360\377\357\357\357\377\356\356\356\377" + "\356\356\356\377\355\355\355\377\354\354\354\377\353\353\353\377\352\352" + "\352\377\352\352\352\377\351\351\351\377\350\350\350\377\347\347\347\377" + "\346\346\346\377\346\346\346\377\345\345\345\377\344\344\344\377\343\343" + "\343\377\342\342\342\377\342\342\342\377\341\341\341\377\340\340\340\377" + "\337\337\337\377\337\337\337\377\336\336\336\377\335\335\335\377\334\334" + "\334\377\333\333\333\377\333\333\333\377\332\332\332\377\331\331\331\377" + "\330\330\330\377\327\327\327\377\327\327\327\377\326\326\326\377\325\325" + "\325\377\324\324\324\377\323\323\323\377\323\323\323\377\322\322\322\377" + "\321\321\321\377\320\320\320\377\320\320\320\377\317\317\317\377\316\316" + "\316\377\315\315\315\377\314\314\314\377\314\314\314\377\313\313\313\377" + "\312\312\312\377\311\311\311\377\310\310\310\377\310\310\310\377\307\307" + "\307\377\306\306\306\377\305\305\305\377\300\300\300\377\220\220\220\377" + "DDD\377444\377#++\377\24##\377\24##\377\"))\377)))\377,,,\377\207\207\207" + "\260@@@\300\34\34\34\377)))\377(((\377(((\377'''\377'''\377'''\377333\377" + "\206\206\206\377\345\345\345\377\361\361\361\377\360\360\360\377\360\360" + "\360\377\357\357\357\377\356\356\356\377\355\355\355\377\355\355\355\377" + "\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\351\351" + "\351\377\350\350\350\377\347\347\347\377\346\346\346\377\345\345\345\377" + "\345\345\345\377\344\344\344\377\343\343\343\377\342\342\342\377\341\341" + "\341\377\341\341\341\377\340\340\340\377\337\337\337\377\336\336\336\377" + "\336\336\336\377\335\335\335\377\334\334\334\377\333\333\333\377\332\332" + "\332\377\332\332\332\377\331\331\331\377\330\330\330\377\327\327\327\377" + "\326\326\326\377\326\326\326\377\325\325\325\377\324\324\324\377\323\323" + "\323\377\323\323\323\377\322\322\322\377\321\321\321\377\320\320\320\377" + "\317\317\317\377\317\317\317\377\316\316\316\377\315\315\315\377\314\314" + "\314\377\313\313\313\377\313\313\313\377\312\312\312\377\311\311\311\377" + "\310\310\310\377\310\310\310\377\307\307\307\377\306\306\306\377\305\305" + "\305\377\304\304\304\377\273\273\273\377\226\226\226\377;;;\377333\37722" + "2\377111\377111\377000\377)))\377444\377\212\212\212\231BBB\251\34\34\34" + "\377'''\377\40%%\377\22\40\40\377\17\37\37\377\26!!\377'''\377+++\377\200" + "\200\200\377\327\327\327\377\360\360\360\377\360\360\360\377\357\357\357" + "\377\356\356\356\377\355\355\355\377\354\354\354\377\354\354\354\377\353" + "\353\353\377\352\352\352\377\351\351\351\377\350\350\350\377\350\350\350" + "\377\347\347\347\377\346\346\346\377\345\345\345\377\345\345\345\377\344" + "\344\344\377\343\343\343\377\342\342\342\377\341\341\341\377\341\341\341" + "\377\340\340\340\377\337\337\337\377\336\336\336\377\335\335\335\377\335" + "\335\335\377\334\334\334\377\333\333\333\377\332\332\332\377\332\332\332" + "\377\331\331\331\377\330\330\330\377\327\327\327\377\326\326\326\377\326" + "\326\326\377\325\325\325\377\324\324\324\377\323\323\323\377\322\322\322" + "\377\322\322\322\377\321\321\321\377\320\320\320\377\317\317\317\377\316" + "\316\316\377\316\316\316\377\315\315\315\377\314\314\314\377\313\313\313" + "\377\313\313\313\377\312\312\312\377\311\311\311\377\310\310\310\377\307" + "\307\307\377\307\307\307\377\306\306\306\377\305\305\305\377\304\304\304" + "\377\303\303\303\377\267\267\267\377\232\232\232\377333\377222\377\33&&\377" + "\22\"\"\377\25##\377%**\377***\377===\377\216\216\216\201FFF\217\36\36\36" + "\377%%%\377\35$$\377\0\31\31\377\0\31\31\377\13\35\35\377(((\377(((\377z" + "zz\377\310\310\310\377\357\357\357\377\357\357\357\377\356\356\356\377\355" + "\355\355\377\354\354\354\377\353\353\353\377\353\353\353\377\352\352\352" + "\377\351\351\351\377\350\350\350\377\350\350\350\377\347\347\347\377\346" + "\346\346\377\345\345\345\377\344\344\344\377\344\344\344\377\343\343\343" + "\377\342\342\342\377\341\341\341\377\340\340\340\377\340\340\340\377\337" + "\337\337\377\336\336\336\377\335\335\335\377\335\335\335\377\334\334\334" + "\377\333\333\333\377\332\332\332\377\331\331\331\377\331\331\331\377\330" + "\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377\325\325\325" + "\377\324\324\324\377\323\323\323\377\322\322\322\377\321\321\321\377\321" + "\321\321\377\320\320\320\377\317\317\317\377\316\316\316\377\316\316\316" + "\377\315\315\315\377\314\314\314\377\313\313\313\377\312\312\312\377\312" + "\312\312\377\311\311\311\377\310\310\310\377\307\307\307\377\306\306\306" + "\377\306\306\306\377\305\305\305\377\304\304\304\377\303\303\303\377\302" + "\302\302\377\264\264\264\377\227\227\227\377333\377222\377\15\37\37\377\0" + "\31\31\377\0\31\31\377!((\377+++\377DDD\377\231\231\231fLLLr\"\"\"\377\"" + "\"\"\377$((\377\0\31\31\377\0\31\31\377\6\33\33\377***\377)))\377ooo\377" + "\271\271\271\377\357\357\357\377\356\356\356\377\355\355\355\377\354\354" + "\354\377\353\353\353\377\353\353\353\377\352\352\352\377\351\351\351\377" + "\350\350\350\377\347\347\347\377\347\347\347\377\346\346\346\377\345\345" + "\345\377\344\344\344\377\343\343\343\377\343\343\343\377\342\342\342\377" + "\341\341\341\377\340\340\340\377\337\337\337\377\337\337\337\377\336\336" + "\336\377\335\335\335\377\334\334\334\377\334\334\334\377\333\333\333\377" + "\332\332\332\377\331\331\331\377\330\330\330\377\330\330\330\377\327\327" + "\327\377\326\326\326\377\325\325\325\377\324\324\324\377\324\324\324\377" + "\323\323\323\377\322\322\322\377\321\321\321\377\321\321\321\377\320\320" + "\320\377\317\317\317\377\316\316\316\377\315\315\315\377\315\315\315\377" + "\314\314\314\377\313\313\313\377\312\312\312\377\311\311\311\377\311\311" + "\311\377\310\310\310\377\307\307\307\377\306\306\306\377\305\305\305\377" + "\305\305\305\377\304\304\304\377\303\303\303\377\302\302\302\377\302\302" + "\302\377\262\262\262\377\220\220\220\377222\377111\377\7\34\34\377\0\31\31" + "\377\0\31\31\377&**\377---\377LLL\377\261\261\261HUUUT(((\374\37\37\37\377" + "*++\377\0\31\31\377\3\33\33\377\11\35\35\377+++\377***\377bbb\377\250\250" + "\250\377\356\356\356\377\355\355\355\377\354\354\354\377\353\353\353\377" + "\352\352\352\377\352\352\352\377\351\351\351\377\350\350\350\377\347\347" + "\347\377\346\346\346\377\346\346\346\377\345\345\345\377\344\344\344\377" + "\343\343\343\377\343\343\343\377\342\342\342\377\341\341\341\377\340\340" + "\340\377\337\337\337\377\337\337\337\377\336\336\336\377\335\335\335\377" + "\334\334\334\377\333\333\333\377\333\333\333\377\332\332\332\377\331\331" + "\331\377\330\330\330\377\327\327\327\377\327\327\327\377\326\326\326\377" + "\325\325\325\377\324\324\324\377\324\324\324\377\323\323\323\377\322\322" + "\322\377\321\321\321\377\320\320\320\377\320\320\320\377\317\317\317\377" + "\316\316\316\377\315\315\315\377\314\314\314\377\314\314\314\377\313\313" + "\313\377\312\312\312\377\311\311\311\377\311\311\311\377\310\310\310\377" + "\307\307\307\377\306\306\306\377\305\305\305\377\305\305\305\377\304\304" + "\304\377\303\303\303\377\302\302\302\377\301\301\301\377\301\301\301\377" + "\262\262\262\377\205\205\205\377222\377111\377\12\36\36\377\3\33\33\377\0" + "\31\31\377,--\377...\377UUU\362\271\271\2717YYYB000\357\35\35\35\377---\377" + ")++\377,,,\377,,,\377+++\377+++\377QQQ\377\206\206\206\377\355\355\355\377" + "\354\354\354\377\353\353\353\377\352\352\352\377\351\351\351\377\351\351" + "\351\377\350\350\350\377\347\347\347\377\346\346\346\377\346\346\346\377" + "\345\345\345\377\344\344\344\377\343\343\343\377\342\342\342\377\342\342" + "\342\377\341\341\341\377\340\340\340\377\337\337\337\377\336\336\336\377" + "\336\336\336\377\335\335\335\377\334\334\334\377\333\333\333\377\333\333" + "\333\377\332\332\332\377\331\331\331\377\330\330\330\377\327\327\327\377" + "\327\327\327\377\326\326\326\377\325\325\325\377\324\324\324\377\323\323" + "\323\377\323\323\323\377\322\322\322\377\321\321\321\377\320\320\320\377" + "\320\320\320\377\317\317\317\377\316\316\316\377\315\315\315\377\314\314" + "\314\377\314\314\314\377\313\313\313\377\312\312\312\377\311\311\311\377" + "\310\310\310\377\310\310\310\377\307\307\307\377\306\306\306\377\305\305" + "\305\377\304\304\304\377\304\304\304\377\303\303\303\377\302\302\302\377" + "\301\301\301\377\300\300\300\377\300\300\300\377\255\255\255\377vvv\3771" + "11\377000\377///\377///\377*,,\377...\377...\377bbb\343\270\270\270+\\\\" + "\\2999\343\32\32\32\377---\377---\377&**\377\31$$\377\40''\377,,,\377<<<" + "\377ddd\377\341\341\341\377\353\353\353\377\352\352\352\377\351\351\351\377" + "\351\351\351\377\350\350\350\377\347\347\347\377\346\346\346\377\345\345" + "\345\377\345\345\345\377\344\344\344\377\343\343\343\377\342\342\342\377" + "\341\341\341\377\341\341\341\377\340\340\340\377\337\337\337\377\336\336" + "\336\377\336\336\336\377\335\335\335\377\334\334\334\377\333\333\333\377" + "\332\332\332\377\332\332\332\377\331\331\331\377\330\330\330\377\327\327" + "\327\377\326\326\326\377\326\326\326\377\325\325\325\377\324\324\324\377" + "\323\323\323\377\322\322\322\377\322\322\322\377\321\321\321\377\320\320" + "\320\377\317\317\317\377\316\316\316\377\316\316\316\377\315\315\315\377" + "\314\314\314\377\313\313\313\377\313\313\313\377\312\312\312\377\311\311" + "\311\377\310\310\310\377\307\307\307\377\307\307\307\377\306\306\306\377" + "\305\305\305\377\304\304\304\377\303\303\303\377\303\303\303\377\302\302" + "\302\377\301\301\301\377\300\300\300\377\300\300\300\377\276\276\276\377" + "\263\263\263\377QQQ\377000\377#**\377\33&&\377'++\377---\377...\377...\377" + "ooo\325\265\265\265\37ZZZ\21KKK\324\25\25\25\377&&&\377\31%%\377\0\31\31" + "\377\0\31\31\377\20\40\40\377---\377...\377^^^\377\265\265\265\377\352\352" + "\352\377\351\351\351\377\350\350\350\377\350\350\350\377\347\347\347\377" + "\346\346\346\377\345\345\345\377\344\344\344\377\344\344\344\377\343\343" + "\343\377\342\342\342\377\341\341\341\377\340\340\340\377\340\340\340\377" + "\337\337\337\377\336\336\336\377\335\335\335\377\335\335\335\377\334\334" + "\334\377\333\333\333\377\332\332\332\377\331\331\331\377\331\331\331\377" + "\330\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377\325\325" + "\325\377\324\324\324\377\323\323\323\377\322\322\322\377\322\322\322\377" + "\321\321\321\377\320\320\320\377\317\317\317\377\316\316\316\377\316\316" + "\316\377\315\315\315\377\314\314\314\377\313\313\313\377\312\312\312\377" + "\312\312\312\377\311\311\311\377\310\310\310\377\307\307\307\377\307\307" + "\307\377\306\306\306\377\305\305\305\377\304\304\304\377\303\303\303\377" + "\303\303\303\377\302\302\302\377\301\301\301\377\300\300\300\377\277\277" + "\277\377\277\277\277\377\273\273\273\377\260\260\260\377222\377000\377\21" + "!!\377\0\31\31\377\0\31\31\377\30$$\377000\377///\377\211\211\211\274\252" + "\252\252\11\0\0\0\0SSS\242\36\36\36\377\33\33\33\377',,\377\0\31\31\377\0" + "\31\31\377\4\33\33\377...\377...\377LLL\377\202\202\202\377\351\351\351\377" + "\350\350\350\377\347\347\347\377\347\347\347\377\346\346\346\377\345\345" + "\345\377\344\344\344\377\344\344\344\377\343\343\343\377\342\342\342\377" + "\341\341\341\377\340\340\340\377\340\340\340\377\337\337\337\377\336\336" + "\336\377\335\335\335\377\334\334\334\377\334\334\334\377\333\333\333\377" + "\332\332\332\377\331\331\331\377\330\330\330\377\330\330\330\377\327\327" + "\327\377\326\326\326\377\325\325\325\377\325\325\325\377\324\324\324\377" + "\323\323\323\377\322\322\322\377\321\321\321\377\321\321\321\377\320\320" + "\320\377\317\317\317\377\316\316\316\377\315\315\315\377\315\315\315\377" + "\314\314\314\377\313\313\313\377\312\312\312\377\312\312\312\377\311\311" + "\311\377\310\310\310\377\307\307\307\377\306\306\306\377\306\306\306\377" + "\305\305\305\377\304\304\304\377\303\303\303\377\302\302\302\377\302\302" + "\302\377\301\301\301\377\300\300\300\377\277\277\277\377\276\276\276\377" + "\276\276\276\377\271\271\271\377\207\207\207\377000\377///\377\3\32\32\377" + "\0\31\31\377\0\31\31\377$))\377333\377DDD\377\233\233\233{\0\0\0\2\0\0\0" + "\0cccP222\365\23\23\23\377///\377\4\33\33\377\0\31\31\377\2\32\32\377),," + "\377///\377;;;\377TTT\377\342\342\342\377\347\347\347\377\347\347\347\377" + "\346\346\346\377\345\345\345\377\344\344\344\377\343\343\343\377\343\343" + "\343\377\342\342\342\377\341\341\341\377\340\340\340\377\337\337\337\377" + "\337\337\337\377\336\336\336\377\335\335\335\377\334\334\334\377\334\334" + "\334\377\333\333\333\377\332\332\332\377\331\331\331\377\330\330\330\377" + "\330\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377\324\324" + "\324\377\324\324\324\377\323\323\323\377\322\322\322\377\321\321\321\377" + "\320\320\320\377\320\320\320\377\317\317\317\377\316\316\316\377\315\315" + "\315\377\315\315\315\377\314\314\314\377\313\313\313\377\312\312\312\377" + "\311\311\311\377\311\311\311\377\310\310\310\377\307\307\307\377\306\306" + "\306\377\305\305\305\377\305\305\305\377\304\304\304\377\303\303\303\377" + "\302\302\302\377\301\301\301\377\301\301\301\377\300\300\300\377\277\277" + "\277\377\276\276\276\377\276\276\276\377\275\275\275\377\300\300\300\377" + "[[[\377///\377),,\377\2\32\32\377\0\31\31\377\4\33\33\377...\377222\377^" + "^^\355\277\277\2774\0\0\0\2\0\0\0\0lll\32KKK\326\22\22\22\377'''\377\36(" + "(\377$++\377011\377000\377000\377222\377KKK\377\265\265\265\377\346\346\346" + "\377\346\346\346\377\345\345\345\377\344\344\344\377\343\343\343\377\342" + "\342\342\377\342\342\342\377\341\341\341\377\340\340\340\377\337\337\337" + "\377\336\336\336\377\336\336\336\377\335\335\335\377\334\334\334\377\333" + "\333\333\377\333\333\333\377\332\332\332\377\331\331\331\377\330\330\330" + "\377\327\327\327\377\327\327\327\377\326\326\326\377\325\325\325\377\324" + "\324\324\377\323\323\323\377\323\323\323\377\322\322\322\377\321\321\321" + "\377\320\320\320\377\320\320\320\377\317\317\317\377\316\316\316\377\315" + "\315\315\377\314\314\314\377\314\314\314\377\313\313\313\377\312\312\312" + "\377\311\311\311\377\310\310\310\377\310\310\310\377\307\307\307\377\306" + "\306\306\377\305\305\305\377\304\304\304\377\304\304\304\377\303\303\303" + "\377\302\302\302\377\301\301\301\377\301\301\301\377\300\300\300\377\277" + "\277\277\377\276\276\276\377\275\275\275\377\275\275\275\377\277\277\277" + "\377\301\301\301\377444\377///\377...\377,--\377\40''\377\33$$\377222\377" + "111\377\205\205\205\302\252\252\252\17\0\0\0\1\0\0\0\0\0\0\0\0XXX\256\31" + "\31\31\377\30\30\30\377222\377222\377*..\377\25##\377011\377111\377AAA\377" + "bbb\377\345\345\345\377\345\345\345\377\344\344\344\377\343\343\343\377\342" + "\342\342\377\341\341\341\377\341\341\341\377\340\340\340\377\337\337\337" + "\377\336\336\336\377\336\336\336\377\335\335\335\377\334\334\334\377\333" + "\333\333\377\332\332\332\377\332\332\332\377\331\331\331\377\330\330\330" + "\377\327\327\327\377\326\326\326\377\326\326\326\377\325\325\325\377\324" + "\324\324\377\323\323\323\377\323\323\323\377\322\322\322\377\321\321\321" + "\377\320\320\320\377\317\317\317\377\317\317\317\377\316\316\316\377\315" + "\315\315\377\314\314\314\377\313\313\313\377\313\313\313\377\312\312\312" + "\377\311\311\311\377\310\310\310\377\310\310\310\377\307\307\307\377\306" + "\306\306\377\305\305\305\377\304\304\304\377\304\304\304\377\303\303\303" + "\377\302\302\302\377\301\301\301\377\300\300\300\377\300\300\300\377\277" + "\277\277\377\276\276\276\377\275\275\275\377\275\275\275\377\274\274\274" + "\377\303\303\303\377\216\216\216\377///\377-..\377\24\"\"\377&**\377,,,\377" + "+++\377666\377>>>\377\231\231\231\211\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0hhh" + "]111\372\15\15\15\377333\377\22\"\"\377\0\31\31\377\0\31\31\377\37))\377" + "222\377444\377>>>\377\256\256\256\377\344\344\344\377\343\343\343\377\342" + "\342\342\377\341\341\341\377\341\341\341\377\340\340\340\377\337\337\337" + "\377\336\336\336\377\335\335\335\377\335\335\335\377\334\334\334\377\333" + "\333\333\377\332\332\332\377\332\332\332\377\331\331\331\377\330\330\330" + "\377\327\327\327\377\326\326\326\377\326\326\326\377\325\325\325\377\324" + "\324\324\377\323\323\323\377\322\322\322\377\322\322\322\377\321\321\321" + "\377\320\320\320\377\317\317\317\377\316\316\316\377\316\316\316\377\315" + "\315\315\377\314\314\314\377\313\313\313\377\313\313\313\377\312\312\312" + "\377\311\311\311\377\310\310\310\377\307\307\307\377\307\307\307\377\306" + "\306\306\377\305\305\305\377\304\304\304\377\303\303\303\377\303\303\303" + "\377\302\302\302\377\301\301\301\377\300\300\300\377\277\277\277\377\277" + "\277\277\377\276\276\276\377\275\275\275\377\274\274\274\377\273\273\273" + "\377\301\301\301\377\311\311\311\377>>>\377...\377\34&&\377\0\31\31\377\0" + "\31\31\377\20\40\40\377...\377666\377XXX\364\300\300\300=\0\0\0\2\0\0\0\1" + "\0\0\0\0\0\0\0\0uuu#KKK\331\15\15\15\377(((\377\35((\377\0\31\31\377\0\31" + "\31\377\10\35\35\377333\377333\377777\377QQQ\377\340\340\340\377\342\342" + "\342\377\341\341\341\377\340\340\340\377\340\340\340\377\337\337\337\377" + "\336\336\336\377\335\335\335\377\335\335\335\377\334\334\334\377\333\333" + "\333\377\332\332\332\377\331\331\331\377\331\331\331\377\330\330\330\377" + "\327\327\327\377\326\326\326\377\325\325\325\377\325\325\325\377\324\324" + "\324\377\323\323\323\377\322\322\322\377\321\321\321\377\321\321\321\377" + "\320\320\320\377\317\317\317\377\316\316\316\377\315\315\315\377\315\315" + "\315\377\314\314\314\377\313\313\313\377\312\312\312\377\312\312\312\377" + "\311\311\311\377\310\310\310\377\307\307\307\377\306\306\306\377\306\306" + "\306\377\305\305\305\377\304\304\304\377\303\303\303\377\302\302\302\377" + "\302\302\302\377\301\301\301\377\300\300\300\377\277\277\277\377\277\277" + "\277\377\276\276\276\377\275\275\275\377\274\274\274\377\273\273\273\377" + "\274\274\274\377\313\313\313\377\205\205\205\377...\377---\377\7\34\34\377" + "\0\31\31\377\0\31\31\377\30##\377555\377222\377~~~\311\256\256\256\26\0\0" + "\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\1```\262\34\34\34\377\12\12\12\377233" + "\377\3\33\33\377\0\31\31\377\10\35\35\377/22\377444\377444\377DDD\377\242" + "\242\242\377\341\341\341\377\340\340\340\377\337\337\337\377\337\337\337" + "\377\336\336\336\377\335\335\335\377\334\334\334\377\334\334\334\377\333" + "\333\333\377\332\332\332\377\331\331\331\377\330\330\330\377\330\330\330" + "\377\327\327\327\377\326\326\326\377\325\325\325\377\324\324\324\377\324" + "\324\324\377\323\323\323\377\322\322\322\377\321\321\321\377\321\321\321" + "\377\320\320\320\377\317\317\317\377\316\316\316\377\315\315\315\377\315" + "\315\315\377\314\314\314\377\313\313\313\377\312\312\312\377\311\311\311" + "\377\311\311\311\377\310\310\310\377\307\307\307\377\306\306\306\377\305" + "\305\305\377\305\305\305\377\304\304\304\377\303\303\303\377\302\302\302" + "\377\302\302\302\377\301\301\301\377\300\300\300\377\277\277\277\377\276" + "\276\276\377\276\276\276\377\275\275\275\377\274\274\274\377\273\273\273" + "\377\272\272\272\377\306\306\306\377\315\315\315\377777\377---\377(++\377" + "\7\34\34\377\0\31\31\377\3\32\32\377*++\377:::\377???\377\233\233\233\217" + "\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0uuu?FFF\345\15\15\15\377" + "$$$\377\40**\377%--\377555\377555\377555\377555\377===\377UUU\377\330\330" + "\330\377\337\337\337\377\337\337\337\377\336\336\336\377\335\335\335\377" + "\334\334\334\377\333\333\333\377\333\333\333\377\332\332\332\377\331\331" + "\331\377\330\330\330\377\327\327\327\377\327\327\327\377\326\326\326\377" + "\325\325\325\377\324\324\324\377\324\324\324\377\323\323\323\377\322\322" + "\322\377\321\321\321\377\320\320\320\377\320\320\320\377\317\317\317\377" + "\316\316\316\377\315\315\315\377\314\314\314\377\314\314\314\377\313\313" + "\313\377\312\312\312\377\311\311\311\377\311\311\311\377\310\310\310\377" + "\307\307\307\377\306\306\306\377\305\305\305\377\305\305\305\377\304\304" + "\304\377\303\303\303\377\302\302\302\377\301\301\301\377\301\301\301\377" + "\300\300\300\377\277\277\277\377\276\276\276\377\275\275\275\377\275\275" + "\275\377\274\274\274\377\273\273\273\377\272\272\272\377\274\274\274\377" + "\325\325\325\377{{{\377---\377---\377,,,\377+++\377\36&&\377\31##\377777" + "\377222\377qqq\331\307\307\307)\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\200\200\200\2ggg\243$$$\377\14\14\14\377666\377666\377.22\377\16!" + "!\377\35((\377666\377666\377PPP\377|||\377\335\335\335\377\336\336\336\377" + "\335\335\335\377\334\334\334\377\333\333\333\377\333\333\333\377\332\332" + "\332\377\331\331\331\377\330\330\330\377\327\327\327\377\327\327\327\377" + "\326\326\326\377\325\325\325\377\324\324\324\377\323\323\323\377\323\323" + "\323\377\322\322\322\377\321\321\321\377\320\320\320\377\317\317\317\377" + "\317\317\317\377\316\316\316\377\315\315\315\377\314\314\314\377\313\313" + "\313\377\313\313\313\377\312\312\312\377\311\311\311\377\310\310\310\377" + "\310\310\310\377\307\307\307\377\306\306\306\377\305\305\305\377\304\304" + "\304\377\304\304\304\377\303\303\303\377\302\302\302\377\301\301\301\377" + "\300\300\300\377\300\300\300\377\277\277\277\377\276\276\276\377\275\275" + "\275\377\275\275\275\377\274\274\274\377\273\273\273\377\272\272\272\377" + "\271\271\271\377\320\320\320\377\302\302\302\377222\377---\377\30$$\377\13" + "\35\35\377%))\377***\377---\377;;;\377GGG\377\243\243\243\202\0\0\0\3\0\0" + "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200\200\2000RRR\334" + "\21\21\21\377###\377*00\377\1\32\32\377\0\31\31\377\2\32\32\377/33\37766" + "6\377;;;\377XXX\377\230\230\230\377\335\335\335\377\334\334\334\377\333\333" + "\333\377\332\332\332\377\332\332\332\377\331\331\331\377\330\330\330\377" + "\327\327\327\377\326\326\326\377\326\326\326\377\325\325\325\377\324\324" + "\324\377\323\323\323\377\322\322\322\377\322\322\322\377\321\321\321\377" + "\320\320\320\377\317\317\317\377\316\316\316\377\316\316\316\377\315\315" + "\315\377\314\314\314\377\313\313\313\377\313\313\313\377\312\312\312\377" + "\311\311\311\377\310\310\310\377\307\307\307\377\307\307\307\377\306\306" + "\306\377\305\305\305\377\304\304\304\377\303\303\303\377\303\303\303\377" + "\302\302\302\377\301\301\301\377\300\300\300\377\300\300\300\377\277\277" + "\277\377\276\276\276\377\275\275\275\377\274\274\274\377\274\274\274\377" + "\273\273\273\377\272\272\272\377\271\271\271\377\315\315\315\377\326\326" + "\326\377CCC\377---\377%))\377\1\31\31\377\0\31\31\377\1\31\31\377\37%%\377" + ";;;\377333\377|||\317\277\277\277\40\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ooo\217///\376\17\17\17\377555\377\14" + "\40\40\377\0\31\31\377\0\31\31\377\16!!\377777\377777\377CCC\377___\377\261" + "\261\261\377\333\333\333\377\332\332\332\377\331\331\331\377\331\331\331" + "\377\330\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377\325" + "\325\325\377\324\324\324\377\323\323\323\377\322\322\322\377\322\322\322" + "\377\321\321\321\377\320\320\320\377\317\317\317\377\316\316\316\377\316" + "\316\316\377\315\315\315\377\314\314\314\377\313\313\313\377\312\312\312" + "\377\312\312\312\377\311\311\311\377\310\310\310\377\307\307\307\377\307" + "\307\307\377\306\306\306\377\305\305\305\377\304\304\304\377\303\303\303" + "\377\303\303\303\377\302\302\302\377\301\301\301\377\300\300\300\377\277" + "\277\277\377\277\277\277\377\276\276\276\377\275\275\275\377\274\274\274" + "\377\273\273\273\377\273\273\273\377\272\272\272\377\271\271\271\377\311" + "\311\311\377\341\341\341\377[[[\377---\377,,,\377\12\35\35\377\0\31\31\377" + "\0\31\31\377\11\35\35\377///\377;;;\377OOO\375\251\251\251n\0\0\0\3\0\0\0" + "\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\207\207" + "\207$]]]\323\26\26\26\377!!!\377/33\377\1\31\31\377\12\37\37\377.33\3778" + "88\377888\377888\377NNN\377jjj\377\303\303\303\377\331\331\331\377\330\330" + "\330\377\330\330\330\377\327\327\327\377\326\326\326\377\325\325\325\377" + "\325\325\325\377\324\324\324\377\323\323\323\377\322\322\322\377\321\321" + "\321\377\321\321\321\377\320\320\320\377\317\317\317\377\316\316\316\377" + "\315\315\315\377\315\315\315\377\314\314\314\377\313\313\313\377\312\312" + "\312\377\312\312\312\377\311\311\311\377\310\310\310\377\307\307\307\377" + "\306\306\306\377\306\306\306\377\305\305\305\377\304\304\304\377\303\303" + "\303\377\302\302\302\377\302\302\302\377\301\301\301\377\300\300\300\377" + "\277\277\277\377\276\276\276\377\276\276\276\377\275\275\275\377\274\274" + "\274\377\273\273\273\377\272\272\272\377\272\272\272\377\271\271\271\377" + "\303\303\303\377\344\344\344\377zzz\377,,,\377,,,\377+++\377#((\377\7\34" + "\34\377\1\31\31\377\"&&\377???\377555\377\207\207\207\304\270\270\270\31" + "\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0yyyz999\373\24\24\24\377...\377)00\377899\377:::\377\37*" + "*\377%..\377999\377999\377\\\\\\\377vvv\377\303\303\303\377\330\330\330\377" + "\327\327\327\377\326\326\326\377\325\325\325\377\324\324\324\377\324\324" + "\324\377\323\323\323\377\322\322\322\377\321\321\321\377\320\320\320\377" + "\320\320\320\377\317\317\317\377\316\316\316\377\315\315\315\377\314\314" + "\314\377\314\314\314\377\313\313\313\377\312\312\312\377\311\311\311\377" + "\311\311\311\377\310\310\310\377\307\307\307\377\306\306\306\377\305\305" + "\305\377\305\305\305\377\304\304\304\377\303\303\303\377\302\302\302\377" + "\301\301\301\377\301\301\301\377\300\300\300\377\277\277\277\377\276\276" + "\276\377\276\276\276\377\275\275\275\377\274\274\274\377\273\273\273\377" + "\272\272\272\377\272\272\272\377\271\271\271\377\304\304\304\377\343\343" + "\343\377\236\236\236\377,,,\377,,,\377\34%%\377\27\"\"\377***\377())\377" + "\35$$\377999\377999\377XXX\370\265\265\265]\0\0\0\3\0\0\0\1\0\0\0\1\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\213\213" + "\213\26mmm\273'''\377\25\25\25\377333\377899\377\27&&\377\0\31\31\377\1\31" + "\31\377+11\377:::\377;;;\377bbb\377zzz\377\266\266\266\377\326\326\326\377" + "\325\325\325\377\324\324\324\377\323\323\323\377\323\323\323\377\322\322" + "\322\377\321\321\321\377\320\320\320\377\320\320\320\377\317\317\317\377" + "\316\316\316\377\315\315\315\377\314\314\314\377\314\314\314\377\313\313" + "\313\377\312\312\312\377\311\311\311\377\310\310\310\377\310\310\310\377" + "\307\307\307\377\306\306\306\377\305\305\305\377\304\304\304\377\304\304" + "\304\377\303\303\303\377\302\302\302\377\301\301\301\377\301\301\301\377" + "\300\300\300\377\277\277\277\377\276\276\276\377\275\275\275\377\275\275" + "\275\377\274\274\274\377\273\273\273\377\272\272\272\377\271\271\271\377" + "\271\271\271\377\313\313\313\377\351\351\351\377\241\241\241\377///\377," + ",,\377\40&&\377\1\31\31\377\0\31\31\377\20\37\37\377())\377444\377>>>\377" + "CCC\377\230\230\230\244\257\257\257\20\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\217" + "\217\217)eee\317\40\40\40\377\30\30\30\377344\377\12\37\37\377\0\31\31\377" + "\0\31\31\377\3\33\33\377255\377999\377999\377YYY\377\200\200\200\377\251" + "\251\251\377\324\324\324\377\323\323\323\377\323\323\323\377\322\322\322" + "\377\321\321\321\377\320\320\320\377\317\317\317\377\317\317\317\377\316" + "\316\316\377\315\315\315\377\314\314\314\377\313\313\313\377\313\313\313" + "\377\312\312\312\377\311\311\311\377\310\310\310\377\310\310\310\377\307" + "\307\307\377\306\306\306\377\305\305\305\377\304\304\304\377\304\304\304" + "\377\303\303\303\377\302\302\302\377\301\301\301\377\300\300\300\377\300" + "\300\300\377\277\277\277\377\276\276\276\377\275\275\275\377\274\274\274" + "\377\274\274\274\377\273\273\273\377\272\272\272\377\271\271\271\377\272" + "\272\272\377\324\324\324\377\353\353\353\377\177\177\177\377,,,\377+++\377" + "%((\377\2\32\32\377\0\31\31\377\0\31\31\377\7\33\33\377,--\377AAA\377:::" + "\377\212\212\212\277\304\304\304\36\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\217\217\217DZZZ\336\34\34\34\377\36\36\36\377144\377\6\34\34\377" + "\0\31\31\377\31''\377888\377888\377888\377888\377QQQ\377\210\210\210\377" + "\237\237\237\377\316\316\316\377\322\322\322\377\321\321\321\377\320\320" + "\320\377\317\317\317\377\316\316\316\377\316\316\316\377\315\315\315\377" + "\314\314\314\377\313\313\313\377\312\312\312\377\312\312\312\377\311\311" + "\311\377\310\310\310\377\307\307\307\377\307\307\307\377\306\306\306\377" + "\305\305\305\377\304\304\304\377\303\303\303\377\303\303\303\377\302\302" + "\302\377\301\301\301\377\300\300\300\377\277\277\277\377\277\277\277\377" + "\276\276\276\377\275\275\275\377\274\274\274\377\273\273\273\377\273\273" + "\273\377\272\272\272\377\271\271\271\377\274\274\274\377\335\335\335\377" + "\346\346\346\377aaa\377,,,\377+++\377+++\377***\377\23!!\377\0\31\31\377" + "\5\33\33\377'**\377CCC\377555\377zzz\325\307\307\3072\0\0\0\3\0\0\0\1\0\0" + "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\207\207\207fMMM\354\35\35\35" + "\377%%%\377.22\377\35))\377777\377777\377777\377777\377777\377777\377FFF" + "\377\211\211\211\377\226\226\226\377\271\271\271\377\317\317\317\377\317" + "\317\317\377\316\316\316\377\315\315\315\377\315\315\315\377\314\314\314" + "\377\313\313\313\377\312\312\312\377\312\312\312\377\311\311\311\377\310" + "\310\310\377\307\307\307\377\306\306\306\377\306\306\306\377\305\305\305" + "\377\304\304\304\377\303\303\303\377\302\302\302\377\302\302\302\377\301" + "\301\301\377\300\300\300\377\277\277\277\377\277\277\277\377\276\276\276" + "\377\275\275\275\377\274\274\274\377\273\273\273\377\273\273\273\377\272" + "\272\272\377\272\272\272\377\320\320\320\377\351\351\351\377\327\327\327" + "\377JJJ\377+++\377+++\377***\377***\377)))\377)))\377\25!!\377\"&&\377CC" + "C\377555\377jjj\346\275\275\275M\0\0\0\4\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\252\252\3\203\203\203\206@@@\370\36" + "\36\36\377(((\377666\377666\377666\377666\377666\377666\377666\377666\377" + ":::\377ggg\377\231\231\231\377\242\242\242\377\300\300\300\377\315\315\315" + "\377\315\315\315\377\314\314\314\377\313\313\313\377\312\312\312\377\311" + "\311\311\377\311\311\311\377\310\310\310\377\307\307\307\377\306\306\306" + "\377\305\305\305\377\305\305\305\377\304\304\304\377\303\303\303\377\302" + "\302\302\377\302\302\302\377\301\301\301\377\300\300\300\377\277\277\277" + "\377\276\276\276\377\276\276\276\377\275\275\275\377\274\274\274\377\273" + "\273\273\377\272\272\272\377\272\272\272\377\314\314\314\377\346\346\346" + "\377\350\350\350\377\211\211\211\377333\377+++\377+++\377***\377***\377)" + "))\377)))\377(((\377)))\377BBB\377999\377YYY\364\261\261\261lUUU\6\0\0\0" + "\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\252\252\252\14}}}\243777\376\37\37\37\377%%%\377444\377555\377555\377" + "555\377555\377555\377555\377555\377555\377>>>\377uuu\377\246\246\246\377" + "\255\255\255\377\303\303\303\377\312\312\312\377\312\312\312\377\311\311" + "\311\377\311\311\311\377\310\310\310\377\307\307\307\377\306\306\306\377" + "\305\305\305\377\305\305\305\377\304\304\304\377\303\303\303\377\302\302" + "\302\377\301\301\301\377\301\301\301\377\300\300\300\377\277\277\277\377" + "\276\276\276\377\275\275\275\377\275\275\275\377\274\274\274\377\273\273" + "\273\377\274\274\274\377\312\312\312\377\342\342\342\377\356\356\356\377" + "\230\230\230\377999\377+++\377+++\377***\377***\377)))\377)))\377(((\377" + "(((\377,,,\377EEE\377888\377NNN\374\246\246\246\212\242\242\242\13\0\0\0" + "\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\246\246\246\27\200\200\200\243BBB\367!!!\377$$$\37722" + "2\377444\377444\377444\377444\377444\377444\377444\377444\377444\377CCC\377" + "\205\205\205\377\261\261\261\377\264\264\264\377\273\273\273\377\303\303" + "\303\377\307\307\307\377\307\307\307\377\306\306\306\377\305\305\305\377" + "\304\304\304\377\304\304\304\377\303\303\303\377\302\302\302\377\301\301" + "\301\377\300\300\300\377\300\300\300\377\277\277\277\377\276\276\276\377" + "\275\275\275\377\275\275\275\377\300\300\300\377\315\315\315\377\333\333" + "\333\377\355\355\355\377\360\360\360\377\250\250\250\377BBB\377,,,\377++" + "+\377+++\377***\377***\377)))\377)))\377(((\377(((\377111\377FFF\377444\377" + "ZZZ\365\247\247\247\213\274\274\274\23\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\261\261\261\15\212\212\212\205SSS\354###\377%%%\377000\377333\377" + "333\377333\377333\377333\377333\377333\377333\377333\377333\377;;;\377bb" + "b\377\217\217\217\377\273\273\273\377\302\302\302\377\301\301\301\377\307" + "\307\307\377\307\307\307\377\307\307\307\377\307\307\307\377\304\304\304" + "\377\302\302\302\377\301\301\301\377\304\304\304\377\307\307\307\377\313" + "\313\313\377\317\317\317\377\324\324\324\377\333\333\333\377\354\354\354" + "\377\345\345\345\377\256\256\256\377ppp\377777\377,,,\377+++\377+++\377*" + "**\377***\377)))\377)))\377(((\377(((\377'''\377777\377DDD\377666\377iii" + "\347\263\263\263l\242\242\242\13\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\277\277\277\4\230\230\230cddd\336)))\377'''\377...\3772" + "22\377222\377222\377222\377222\377222\377222\377222\377222\377222\377222" + "\377111\377555\377[[[\377\213\213\213\377\246\246\246\377\271\271\271\377" + "\312\312\312\377\325\325\325\377\331\331\331\377\334\334\334\377\336\336" + "\336\377\341\341\341\377\343\343\343\377\333\333\333\377\315\315\315\377" + "\273\273\273\377\233\233\233\377bbb\377000\377,,,\377,,,\377+++\377+++\377" + "***\377***\377)))\377)))\377(((\377(((\377'''\377(((\377???\377AAA\377::" + ":\377yyy\325\276\276\276NUUU\6\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\245\245\245Attt\314222\377'''\377" + "+++\377000\377111\377111\377111\377111\377111\377111\377111\377111\37711" + "1\377000\377000\377000\377000\377000\377///\377///\377222\377CCC\377UUU\377" + "SSS\377AAA\377111\377---\377---\377---\377,,,\377,,,\377,,,\377+++\377++" + "+\377***\377***\377)))\377)))\377)))\377(((\377(((\377'''\377555\377HHH\377" + "<<<\377CCC\377\212\212\212\277\314\314\3142\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\263\263\263%\202\202\202\264FFF\373'''\377+++\377...\377000\377000\377" + "000\377000\377000\377000\377000\377000\377///\377///\377///\377///\377//" + "/\377///\377...\377...\377...\377...\377---\377---\377---\377,,,\377,,,\377" + ",,,\377+++\377+++\377+++\377***\377***\377)))\377)))\377)))\377(((\377((" + "(\377'''\377111\377GGG\377AAA\377666\377WWW\371\233\233\233\243\314\314\314" + "\36\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\270\270\270\22\235\235" + "\235mvvv\315AAA\376)))\377///\377000\377///\377///\377///\377///\377///\377" + "///\377///\377...\377...\377...\377...\377...\377---\377---\377---\377--" + "-\377,,,\377,,,\377,,,\377,,,\377+++\377+++\377+++\377***\377***\377)))\377" + ")))\377)))\377(((\377(((\377'''\377...\377DDD\377CCC\377444\377OOO\375\211" + "\211\211\303\274\274\274[\277\277\277\20\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\277\277\277\34\233\233\233\177o" + "oo\326<<<\377+++\377222\377111\377000\377...\377...\377...\377...\377---" + "\377---\377---\377---\377---\377,,,\377,,,\377,,,\377,,,\377+++\377+++\377" + "+++\377+++\377***\377***\377***\377)))\377)))\377)))\377(((\377(((\377))" + ")\377444\377BBB\377FFF\377666\377HHH\377\177\177\177\317\262\262\262m\302" + "\302\302\31\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\310\310%\230\230\230\217f" + "ff\340777\377,,,\377222\377666\377555\377111\377...\377,,,\377,,,\377,,," + "\377,,,\377,,,\377,,,\377+++\377+++\377+++\377+++\377***\377***\377***\377" + ")))\377)))\377)))\377(((\377(((\377+++\377666\377DDD\377HHH\377???\37766" + "6\377BBB\377vvv\331\253\253\253\177\316\316\316\37\0\0\0\4\0\0\0\2\0\0\0" + "\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1\311\311\311/\226\226\226" + "\234vvv\316QQQ\370999\377...\377333\377999\377888\377444\377222\377000\377" + "...\377,,,\377***\377***\377***\377***\377)))\377)))\377+++\377---\37711" + "1\377444\377:::\377EEE\377EEE\377===\377333\377AAA\377ZZZ\365\201\201\201" + "\311\250\250\250\215\330\330\330'\0\0\0\4\0\0\0\2\0\0\0\1\0\0\0\1\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1\320\320\320" + "\33\301\301\301F\231\231\231\223\201\201\201\306YYY\361???\377///\377333" + "\377555\377999\377;;;\377???\377@@@\377AAA\377@@@\377@@@\377BBB\377CCC\377" + "BBB\377@@@\377>>>\377<<<\377999\377444\377EEE\377```\356\213\213\213\301" + "\246\246\246\211\322\322\322>\337\337\337\30\0\0\0\3\0\0\0\2\0\0\0\1\0\0" + "\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\325\325\325\22\321\321\3217\240\240" + "\240\201\214\214\214\276nnn\330bbb\350VVV\372NNN\377FFF\377>>>\377777\377" + "111\377111\377777\377???\377GGG\377PPP\377ZZZ\371ddd\347ttt\326\222\222\222" + "\267\254\254\254x\333\333\3332\322\322\322\21\0\0\0\3\0\0\0\2\0\0\0\1\0\0" + "\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\346\346\346\12\335\335\335\36\333\333\333*\335\335\3355\301" + "\301\301N\254\254\254k\241\241\241\205\236\236\236\235\231\231\231\262\234" + "\234\234\261\236\236\236\233\244\244\244\201\261\261\261h\304\304\304J\346" + "\346\3462\340\340\340)\345\345\345\35\314\314\314\12\0\0\0\1\0\0\0\1\0\0" + "\0\1\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0", +}; + diff --git a/pui/textures/slider1-vert-prelight.c b/pui/textures/slider1-vert-prelight.c new file mode 100644 index 0000000..7546685 --- /dev/null +++ b/pui/textures/slider1-vert-prelight.c @@ -0,0 +1,170 @@ +/* GIMP RGBA C-Source image dump (slider1-vert-prelight.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[25 * 38 * 4 + 1]; +} slider1_vert_prelight = { + 25, 38, 4, + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\4\0\0\0\6\0\0\0\10\0\0\0\11\0\0\0\12" + "\0\0\0\12\0\0\0\12\0\0\0\12\0\0\0\12\0\0\0\12\0\0\0\11\0\0\0\10\0\0\0\6\0" + "\0\0\4\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\1\0\0\0\2@@@\14\327\327\327e\360\360\360\310\374\374\374" + "\377\374\374\374\377\374\374\374\377\374\374\374\377\374\374\374\377\374" + "\374\374\377\374\374\374\377\374\374\374\377\374\374\374\377\355\355\355" + "\312\303\303\303o\37\37\37\31\0\0\0\11\0\0\0\1\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\11\306\306\306l\370\370\370" + "\377\370\370\370\377\370\370\370\377\370\370\370\377\370\370\370\377\370" + "\370\370\377\370\370\370\377\370\370\370\377\370\370\370\377\370\370\370" + "\377\370\370\370\377\370\370\370\377\370\370\370\377\242\242\242\204\0\0" + "\0\37\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\5\0\0\0\27\337\337\337\320\364\364\364\377\364\364\364\377\364\364" + "\364\377\364\364\364\377\364\364\364\377\364\364\364\377\364\364\364\377" + "\364\364\364\377\364\364\364\377\364\364\364\377\364\364\364\377\364\364" + "\364\377\364\364\364\377\322\322\322\335\0\0\0B\0\0\0\25\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\11\0\0\0&\361\361\361\377" + "\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361" + "\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377" + "\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361" + "\361\377\0\0\0`\0\0\0$\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\0\0\0\13\0\0\0/\355\355\355\377\355\355\355\377\355\355\355\377" + "\355\355\355\377\355\355\355\377\355\355\355\377\355\355\355\377\355\355" + "\355\377\355\355\355\377\355\355\355\377\355\355\355\377\355\355\355\377" + "\355\355\355\377\355\355\355\377\355\355\355\377\0\0\0o\0\0\0-\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\351" + "\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351" + "\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351" + "\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351" + "\377\351\351\351\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346" + "\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\0\0\0u\0" + "\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0" + "\14\0\0\0""2\220\220\220\377\220\220\220\377\220\220\220\377\220\220\220" + "\377\220\220\220\377\220\220\220\377\220\220\220\377\220\220\220\377\220" + "\220\220\377\220\220\220\377\220\220\220\377\220\220\220\377\220\220\220" + "\377\220\220\220\377\220\220\220\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\230\230\230\377" + "\230\230\230\377\230\230\230\377\230\230\230\377\230\230\230\377\230\230" + "\230\377\230\230\230\377\230\230\230\377\230\230\230\377\230\230\230\377" + "\230\230\230\377\230\230\230\377\230\230\230\377\230\230\230\377\230\230" + "\230\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\14\0\0\0""2\237\237\237\377\237\237\237\377\237\237\237" + "\377\237\237\237\377\237\237\237\377\237\237\237\377\237\237\237\377\237" + "\237\237\377\237\237\237\377\237\237\237\377\237\237\237\377\237\237\237" + "\377\237\237\237\377\237\237\237\377\237\237\237\377\0\0\0u\0\0\0""0\20F" + "\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2" + "\246\246\246\377\246\246\246\377\246\246\246\377\246\246\246\377\246\246" + "\246\377\246\246\246\377\246\246\246\377\246\246\246\377\246\246\246\377" + "\246\246\246\377\246\246\246\377\246\246\246\377\246\246\246\377\246\246" + "\246\377\246\246\246\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\256\256\256\377\256\256\256" + "\377\256\256\256\377\256\256\256\377\256\256\256\377\256\256\256\377\256" + "\256\256\377\256\256\256\377\256\256\256\377\256\256\256\377\256\256\256" + "\377\256\256\256\377\256\256\256\377\256\256\256\377\256\256\256\377\0\0" + "\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\0\0\0\14\0\0\0""2\262\266\266\377\262\266\266\377\262\266\266\377\262\266" + "\266\377\262\266\266\377\262\266\266\377\262\266\266\377\262\266\266\377" + "\262\266\266\377\262\266\266\377\262\266\266\377\262\266\266\377\262\266" + "\266\377\262\266\266\377\262\266\266\377\0\0\0u\0\0\0""0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\23\23""5@\266\366\377" + ">\267\366\377@\274\366\377B\301\366\377C\306\366\377E\312\366\377E\315\366" + "\377F\315\366\377E\315\366\377E\312\366\377C\306\366\377B\301\366\377@\274" + "\366\377>\267\366\377>\267\366\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\23\23""5A\266\366\377@\270" + "\366\377A\275\366\377B\303\366\377D\307\366\377F\313\366\377F\315\366\377" + "G\317\366\377F\315\366\377F\313\366\377D\307\366\377B\303\366\377A\275\366" + "\377@\270\366\377@\270\366\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\311\315\315\377\311\315" + "\315\377\311\315\315\377\311\315\315\377\311\315\315\377\311\315\315\377" + "\311\315\315\377\311\315\315\377\311\315\315\377\311\315\315\377\311\315" + "\315\377\311\315\315\377\311\315\315\377\311\315\315\377\311\315\315\377" + "\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\14\0\0\0""2\323\323\323\377\323\323\323\377\323\323\323\377\323" + "\323\323\377\323\323\323\377\323\323\323\377\323\323\323\377\323\323\323" + "\377\323\323\323\377\323\323\323\377\323\323\323\377\323\323\323\377\323" + "\323\323\377\323\323\323\377\323\323\323\377\0\0\0u\0\0\0""0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\333\333" + "\333\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377" + "\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333" + "\333\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377" + "\333\333\333\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\342\342\342\377\342\342\342\377\342" + "\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342" + "\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342" + "\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\0\0\0u\0\0\0" + """0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14" + "\0\0\0""2\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377" + "\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352" + "\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377" + "\352\352\352\377\352\352\352\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F" + "\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\361\361\361\377\361" + "\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361" + "\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361" + "\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361" + "\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\0\0\0\14\0\0\0""2\303\303\303\377\303\303\303\377\303\303\303\377" + "\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303" + "\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377" + "\303\303\303\377\303\303\303\377\303\303\303\377\0\0\0u\0\0\0""0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\273" + "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273" + "\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273" + "\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273" + "\377\273\273\273\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\263\263\263\377\263\263\263\377" + "\263\263\263\377\263\263\263\377\263\263\263\377\263\263\263\377\263\263" + "\263\377\263\263\263\377\263\263\263\377\263\263\263\377\263\263\263\377" + "\263\263\263\377\263\263\263\377\263\263\263\377\263\263\263\377\0\0\0u\0" + "\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0" + "\13\0\0\0""1\254\254\254\377\254\254\254\377\254\254\254\377\254\254\254" + "\377\254\254\254\377\254\254\254\377\254\254\254\377\254\254\254\377\254" + "\254\254\377\254\254\254\377\254\254\254\377\254\254\254\377\254\254\254" + "\377\254\254\254\377\254\254\254\377\0\0\0s\0\0\0/\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\12\0\0\0,\217\217\217\332\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244" + "\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\207\207\207" + "\346\0\0\0k\0\0\0*\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F" + "\230\0\0\0\0\7\0\0\0\40]]]\221\235\235\235\377\235\235\235\377\235\235\235" + "\377\235\235\235\377\235\235\235\377\235\235\235\377\235\235\235\377\235" + "\235\235\377\235\235\235\377\235\235\235\377\235\235\235\377\235\235\235" + "\377\235\235\235\377LLL\263\0\0\0U\0\0\0\36\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\0\0\0\3\0\0\0\20\11\11\11""9RRR\233~~~\341" + "\225\225\225\377\225\225\225\377\225\225\225\377\225\225\225\377\225\225" + "\225\377\225\225\225\377\225\225\225\377\225\225\225\377\225\225\225\377" + "|||\344HHH\261\5\5\5i\0\0\0""5\0\0\0\17\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\5\0\0\0\25\0\0\0""0\0\0\0L\0\0" + "\0]\0\0\0d\0\0\0d\0\0\0d\0\0\0d\0\0\0d\0\0\0d\0\0\0d\0\0\0c\0\0\0\\\0\0\0" + "K\0\0\0""0\0\0\0\25\0\0\0\5\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\4\0\0\0\14\0\0\0\30\0\0\0!\0\0\0%\0" + "\0\0&\0\0\0&\0\0\0&\0\0\0&\0\0\0&\0\0\0&\0\0\0%\0\0\0!\0\0\0\30\0\0\0\14" + "\0\0\0\4\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\5\0\0\0\6\0\0\0\6" + "\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\4\0\0\0\2" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0", +}; + diff --git a/pui/textures/slider1-vert-prelight.png b/pui/textures/slider1-vert-prelight.png new file mode 100644 index 0000000..4460428 Binary files /dev/null and b/pui/textures/slider1-vert-prelight.png differ diff --git a/pui/textures/slider1-vert.c b/pui/textures/slider1-vert.c new file mode 100644 index 0000000..b393c29 --- /dev/null +++ b/pui/textures/slider1-vert.c @@ -0,0 +1,168 @@ +/* GIMP RGBA C-Source image dump (slider1-vert.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[25 * 38 * 4 + 1]; +} slider1_vert = { + 25, 38, 4, + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\4\0\0\0\6\0\0\0\10\0\0\0\11\0\0\0\12" + "\0\0\0\12\0\0\0\12\0\0\0\12\0\0\0\12\0\0\0\12\0\0\0\11\0\0\0\10\0\0\0\6\0" + "\0\0\4\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\1\0\0\0\2@@@\14\327\327\327e\360\360\360\310\374\374\374" + "\377\374\374\374\377\374\374\374\377\374\374\374\377\374\374\374\377\374" + "\374\374\377\374\374\374\377\374\374\374\377\374\374\374\377\355\355\355" + "\312\303\303\303o\37\37\37\31\0\0\0\11\0\0\0\1\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\11\306\306\306l\370\370\370" + "\377\370\370\370\377\370\370\370\377\370\370\370\377\370\370\370\377\370" + "\370\370\377\370\370\370\377\370\370\370\377\370\370\370\377\370\370\370" + "\377\370\370\370\377\370\370\370\377\370\370\370\377\242\242\242\204\0\0" + "\0\37\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\5\0\0\0\27\337\337\337\320\364\364\364\377\364\364\364\377\364\364" + "\364\377\364\364\364\377\364\364\364\377\364\364\364\377\364\364\364\377" + "\364\364\364\377\364\364\364\377\364\364\364\377\364\364\364\377\364\364" + "\364\377\364\364\364\377\322\322\322\335\0\0\0B\0\0\0\25\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\11\0\0\0&\361\361\361\377" + "\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361" + "\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377" + "\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361" + "\361\377\0\0\0`\0\0\0$\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\0\0\0\13\0\0\0/\355\355\355\377\355\355\355\377\355\355\355\377" + "\355\355\355\377\355\355\355\377\355\355\355\377\355\355\355\377\355\355" + "\355\377\355\355\355\377\355\355\355\377\355\355\355\377\355\355\355\377" + "\355\355\355\377\355\355\355\377\355\355\355\377\0\0\0o\0\0\0-\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\351" + "\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351" + "\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351" + "\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351" + "\377\351\351\351\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346" + "\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\0\0\0u\0" + "\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0" + "\14\0\0\0""2\220\220\220\377\220\220\220\377\220\220\220\377\220\220\220" + "\377\220\220\220\377\220\220\220\377\220\220\220\377\220\220\220\377\220" + "\220\220\377\220\220\220\377\220\220\220\377\220\220\220\377\220\220\220" + "\377\220\220\220\377\220\220\220\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\230\230\230\377" + "\230\230\230\377\230\230\230\377\230\230\230\377\230\230\230\377\230\230" + "\230\377\230\230\230\377\230\230\230\377\230\230\230\377\230\230\230\377" + "\230\230\230\377\230\230\230\377\230\230\230\377\230\230\230\377\230\230" + "\230\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\14\0\0\0""2\237\237\237\377\237\237\237\377\237\237\237" + "\377\237\237\237\377\237\237\237\377\237\237\237\377\237\237\237\377\237" + "\237\237\377\237\237\237\377\237\237\237\377\237\237\237\377\237\237\237" + "\377\237\237\237\377\237\237\237\377\237\237\237\377\0\0\0u\0\0\0""0\20F" + "\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2" + "\246\246\246\377\246\246\246\377\246\246\246\377\246\246\246\377\246\246" + "\246\377\246\246\246\377\246\246\246\377\246\246\246\377\246\246\246\377" + "\246\246\246\377\246\246\246\377\246\246\246\377\246\246\246\377\246\246" + "\246\377\246\246\246\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\256\256\256\377\256\256\256" + "\377\256\256\256\377\256\256\256\377\256\256\256\377\256\256\256\377\256" + "\256\256\377\256\256\256\377\256\256\256\377\256\256\256\377\256\256\256" + "\377\256\256\256\377\256\256\256\377\256\256\256\377\256\256\256\377\0\0" + "\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\0\0\0\14\0\0\0""2\265\265\265\377\265\265\265\377\265\265\265\377\265\265" + "\265\377\265\265\265\377\265\265\265\377\265\265\265\377\265\265\265\377" + "\265\265\265\377\265\265\265\377\265\265\265\377\265\265\265\377\265\265" + "\265\377\265\265\265\377\265\265\265\377\0\0\0u\0\0\0""0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2,)O\377,)O\377" + ",+U\377+.^\377+1d\377+3j\377+5n\377+5o\377+5n\377+3j\377+1d\377+.^\377,+" + "U\377,)O\377,)O\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2-*Q\377-*Q\377--W\377-0`\377-2f\377" + "-4k\377-6o\377-6p\377-6o\377-4k\377-2f\377-0`\377--W\377-*Q\377-*Q\377\0" + "\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\14\0\0\0""2\314\314\314\377\314\314\314\377\314\314\314\377\314" + "\314\314\377\314\314\314\377\314\314\314\377\314\314\314\377\314\314\314" + "\377\314\314\314\377\314\314\314\377\314\314\314\377\314\314\314\377\314" + "\314\314\377\314\314\314\377\314\314\314\377\0\0\0u\0\0\0""0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\323\323" + "\323\377\323\323\323\377\323\323\323\377\323\323\323\377\323\323\323\377" + "\323\323\323\377\323\323\323\377\323\323\323\377\323\323\323\377\323\323" + "\323\377\323\323\323\377\323\323\323\377\323\323\323\377\323\323\323\377" + "\323\323\323\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\333\333\333\377\333\333\333\377\333" + "\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333" + "\377\333\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377\333" + "\333\333\377\333\333\333\377\333\333\333\377\333\333\333\377\0\0\0u\0\0\0" + """0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14" + "\0\0\0""2\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377" + "\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342" + "\342\377\342\342\342\377\342\342\342\377\342\342\342\377\342\342\342\377" + "\342\342\342\377\342\342\342\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F" + "\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\352\352\352\377\352" + "\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352" + "\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352" + "\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352" + "\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\0\0\0\14\0\0\0""2\361\361\361\377\361\361\361\377\361\361\361\377" + "\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361" + "\361\377\361\361\361\377\361\361\361\377\361\361\361\377\361\361\361\377" + "\361\361\361\377\361\361\361\377\361\361\361\377\0\0\0u\0\0\0""0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\303" + "\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303" + "\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303" + "\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303" + "\377\303\303\303\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\14\0\0\0""2\273\273\273\377\273\273\273\377" + "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273" + "\273\377\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377" + "\273\273\273\377\273\273\273\377\273\273\273\377\273\273\273\377\0\0\0u\0" + "\0\0""0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0" + "\14\0\0\0""2\263\263\263\377\263\263\263\377\263\263\263\377\263\263\263" + "\377\263\263\263\377\263\263\263\377\263\263\263\377\263\263\263\377\263" + "\263\263\377\263\263\263\377\263\263\263\377\263\263\263\377\263\263\263" + "\377\263\263\263\377\263\263\263\377\0\0\0u\0\0\0""0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\13\0\0\0""1\254\254\254\377" + "\254\254\254\377\254\254\254\377\254\254\254\377\254\254\254\377\254\254" + "\254\377\254\254\254\377\254\254\254\377\254\254\254\377\254\254\254\377" + "\254\254\254\377\254\254\254\377\254\254\254\377\254\254\254\377\254\254" + "\254\377\0\0\0s\0\0\0/\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\0\0\0\12\0\0\0,\217\217\217\332\244\244\244\377\244\244\244\377" + "\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244" + "\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377" + "\244\244\244\377\244\244\244\377\207\207\207\346\0\0\0k\0\0\0*\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\7\0\0\0\40]]]\221" + "\235\235\235\377\235\235\235\377\235\235\235\377\235\235\235\377\235\235" + "\235\377\235\235\235\377\235\235\235\377\235\235\235\377\235\235\235\377" + "\235\235\235\377\235\235\235\377\235\235\235\377\235\235\235\377LLL\263\0" + "\0\0U\0\0\0\36\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\3\0\0\0\20\11\11\11""9RRR\233~~~\341\225\225\225\377\225\225\225" + "\377\225\225\225\377\225\225\225\377\225\225\225\377\225\225\225\377\225" + "\225\225\377\225\225\225\377\225\225\225\377|||\344HHH\261\5\5\5i\0\0\0""5" + "\0\0\0\17\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0" + "\0\1\0\0\0\5\0\0\0\25\0\0\0""0\0\0\0L\0\0\0]\0\0\0d\0\0\0d\0\0\0d\0\0\0d" + "\0\0\0d\0\0\0d\0\0\0d\0\0\0c\0\0\0\\\0\0\0K\0\0\0""0\0\0\0\25\0\0\0\5\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0" + "\1\0\0\0\4\0\0\0\14\0\0\0\30\0\0\0!\0\0\0%\0\0\0&\0\0\0&\0\0\0&\0\0\0&\0" + "\0\0&\0\0\0&\0\0\0%\0\0\0!\0\0\0\30\0\0\0\14\0\0\0\4\0\0\0\1\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\1\0\0\0\3\0\0\0\5\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0" + "\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\4\0\0\0\2\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0", +}; + diff --git a/pui/textures/slider1-vert.png b/pui/textures/slider1-vert.png new file mode 100644 index 0000000..ec4b4f7 Binary files /dev/null and b/pui/textures/slider1-vert.png differ diff --git a/pui/textures/slider2-vert-prelight.c b/pui/textures/slider2-vert-prelight.c new file mode 100644 index 0000000..c3105f8 --- /dev/null +++ b/pui/textures/slider2-vert-prelight.c @@ -0,0 +1,294 @@ +/* GIMP RGBA C-Source image dump (slider2-vert-prelight.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[36 * 46 * 4 + 1]; +} slider2_vert_prelight = { + 36, 46, 4, + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0" + "\0\0\2\0\0\0\3\0\0\0\4\0\0\0\4\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0" + "\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0" + "\0\0\5\0\0\0\5\0\0\0\5\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0" + "\0\0\1\0\0\0\3\0\0\0\5\0\0\0\10\0\0\0\13\0\0\0\15\0\0\0\16\0\0\0\16\0\0\0" + "\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0" + "\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\16\0\0\0\16\0\0\0\14\0\0\0" + "\12\0\0\0\7\0\0\0\4\0\0\0\2\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\6\0\0\0\14\240\240\2400\346" + "\346\346\260\360\360\360\351\363\363\363\377\363\363\363\377\363\363\363" + "\377\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377\363" + "\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363" + "\377\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377\357" + "\357\357\351\345\345\345\261\225\225\2253\0\0\0\20\0\0\0\12\0\0\0\5\0\0\0" + "\2\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\2\0\0\0" + "\6\0\0\0\15\216\216\2164\355\355\355\362\357\357\357\377\357\357\357\377" + "\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357" + "\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377" + "\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357" + "\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377" + "\354\354\354\363{{{<\0\0\0\24\0\0\0\12\0\0\0\4\0\0\0\1\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\11\0\0\0\25\330\330\330\265" + "\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352" + "\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377" + "\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352" + "\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377" + "\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\322\322" + "\322\272\0\0\0!\0\0\0\21\0\0\0\7\0\0\0\2\0\0\0\1\20F\230\0\20F\230\0\20F" + "\230\0\0\0\0\1\0\0\0\5\0\0\0\15\0\0\0\36\340\340\340\354\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346" + "\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346" + "\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\336\336\336\356\0\0\0""1" + "\0\0\0\31\0\0\0\12\0\0\0\3\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\0\0\0\2" + "\0\0\0\6\0\0\0\20\0\0\0&\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341" + "\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341" + "\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\0\0\0?\0\0\0!\0\0\0\16\0" + "\0\0\5\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\6\0\0\0\22\0\0" + "\0+\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335" + "\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377" + "\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335" + "\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377" + "\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335" + "\335\377\335\335\335\377\0\0\0K\0\0\0'\0\0\0\21\0\0\0\6\0\0\0\2\20F\230\0" + "\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\23\0\0\0.\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\0\0\0T\0\0\0,\0\0\0\24\0\0\0\7\0\0\0\2\20F\230\0\20F\230\0\20F\230\0" + "\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377" + "\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377" + "\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\0\0\0Z\0\0\0""1" + "\0\0\0\26\0\0\0\10\0\0\0\2\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7" + "\0\0\0\24\0\0\0/\317\317\317\377\317\317\317\377\317\317\317\377\317\317" + "\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377" + "\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317" + "\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377" + "\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317" + "\317\377\317\317\317\377\317\317\317\377\0\0\0a\0\0\0""5\0\0\0\30\0\0\0\11" + "\0\0\0\3\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244" + "\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244" + "\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244" + "\377\244\244\244\377\0\0\0f\0\0\0:\0\0\0\33\0\0\0\12\0\0\0\3\20F\230\0\20" + "F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\251\251\251\377\251\251" + "\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377" + "\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251" + "\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377" + "\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251" + "\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377" + "\0\0\0l\0\0\0>\0\0\0\36\0\0\0\13\0\0\0\4\20F\230\0\20F\230\0\20F\230\0\0" + "\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255" + "\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255" + "\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\0\0\0r\0\0\0C\0\0\0" + "!\0\0\0\15\0\0\0\4\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24" + "\0\0\0/\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261" + "\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261" + "\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261" + "\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261" + "\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261" + "\261\261\377\261\261\261\377\0\0\0w\0\0\0H\0\0\0$\0\0\0\17\0\0\0\5\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\266\266\266\377\266" + "\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266" + "\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266" + "\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266" + "\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266" + "\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266" + "\377\0\0\0|\0\0\0L\0\0\0'\0\0\0\20\0\0\0\5\20F\230\0\20F\230\0\20F\230\0" + "\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\272\272\272\377\272\272\272\377\272\272" + "\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377" + "\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272" + "\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377" + "\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272" + "\272\377\272\272\272\377\272\272\272\377\272\272\272\377\0\0\0\200\0\0\0" + "O\0\0\0)\0\0\0\22\0\0\0\6\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0" + "\0\0\24\0\0\0/\275\276\276\377\275\276\276\377\275\276\276\377\275\276\276" + "\377\275\276\276\377\275\276\276\377\275\276\276\377\275\276\276\377\275" + "\276\276\377\275\276\276\377\275\276\276\377\275\276\276\377\275\276\276" + "\377\275\276\276\377\275\276\276\377\275\276\276\377\275\276\276\377\275" + "\276\276\377\275\276\276\377\275\276\276\377\275\276\276\377\275\276\276" + "\377\275\276\276\377\275\276\276\377\0\0\0\204\0\0\0S\0\0\0+\0\0\0\23\0\0" + "\0\6\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\31\31""3\264" + "\307\307\377\261\311\311\377\261\311\311\377\261\311\311\377\261\311\311" + "\377\261\311\311\377\261\311\311\377\261\311\311\377\261\311\311\377\261" + "\311\311\377\261\311\311\377\261\311\311\377\261\311\311\377\261\311\311" + "\377\261\311\311\377\261\311\311\377\261\311\311\377\261\311\311\377\261" + "\311\311\377\261\311\311\377\261\311\311\377\261\311\311\377\261\311\311" + "\377\264\307\307\377\0\11\11\211\0\0\0U\0\0\0-\0\0\0\24\0\0\0\7\20F\230\0" + "\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\14\14\25\0NN>1\251\377\377,\261\377" + "\377-\267\377\377/\274\377\3771\301\377\3772\306\377\3774\313\377\3775\317" + "\377\3776\323\377\3777\325\377\3778\327\377\3778\330\377\3778\330\377\377" + "8\327\377\3777\325\377\3776\323\377\3775\317\377\3774\313\377\3772\306\377" + "\3771\301\377\377/\274\377\377-\267\377\377,\261\377\3771\251\377\377\0!" + "!\223\0\0\0X\0\0\0/\0\0\0\25\0\0\0\7\20F\230\0\20F\230\0\20F\230\0\0\0\0" + "\2\0\0\0\7\0\14\14\25\0NN>1\251\377\377,\261\377\377-\267\377\377/\274\377" + "\3771\301\377\3772\306\377\3774\313\377\3775\317\377\3776\323\377\3777\325" + "\377\3778\327\377\3778\330\377\3778\330\377\3778\327\377\3777\325\377\377" + "6\323\377\3775\317\377\3774\313\377\3772\306\377\3771\301\377\377/\274\377" + "\377-\267\377\377,\261\377\3771\251\377\377\0\40\40\225\0\0\0[\0\0\0""1\0" + "\0\0\26\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0" + "\31\31""3\300\323\323\377\274\324\324\377\274\324\324\377\274\324\324\377" + "\274\324\324\377\274\324\324\377\274\324\324\377\274\324\324\377\274\324" + "\324\377\274\324\324\377\274\324\324\377\274\324\324\377\274\324\324\377" + "\274\324\324\377\274\324\324\377\274\324\324\377\274\324\324\377\274\324" + "\324\377\274\324\324\377\274\324\324\377\274\324\324\377\274\324\324\377" + "\274\324\324\377\300\323\323\377\0\11\11\222\0\0\0]\0\0\0""3\0\0\0\26\0\0" + "\0\10\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377" + "\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377" + "\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377" + "\324\324\324\377\0\0\0\222\0\0\0_\0\0\0""4\0\0\0\27\0\0\0\10\20F\230\0\20" + "F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\330\330\330\377\330\330" + "\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377" + "\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330" + "\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377" + "\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330" + "\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377" + "\0\0\0\224\0\0\0a\0\0\0""5\0\0\0\30\0\0\0\11\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\334\334\334\377\334\334\334\377\334\334" + "\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377" + "\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334" + "\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377" + "\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334" + "\334\377\334\334\334\377\334\334\334\377\334\334\334\377\0\0\0\225\0\0\0" + "b\0\0\0""6\0\0\0\30\0\0\0\11\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0" + "\7\0\0\0\24\0\0\0/\341\341\341\377\341\341\341\377\341\341\341\377\341\341" + "\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341" + "\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341" + "\341\377\341\341\341\377\341\341\341\377\0\0\0\225\0\0\0b\0\0\0""6\0\0\0" + "\30\0\0\0\11\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0" + "/\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345" + "\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377" + "\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345" + "\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377" + "\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345" + "\345\377\345\345\345\377\0\0\0\224\0\0\0a\0\0\0""5\0\0\0\30\0\0\0\11\20F" + "\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\351\351\351\377" + "\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351" + "\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377" + "\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351" + "\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377" + "\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351" + "\351\377\0\0\0\223\0\0\0`\0\0\0""4\0\0\0\27\0\0\0\10\20F\230\0\20F\230\0" + "\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\356\356\356\377\356\356\356\377" + "\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356" + "\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377" + "\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356" + "\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377" + "\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\0\0\0\220" + "\0\0\0^\0\0\0""3\0\0\0\26\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\0\0\0\2" + "\0\0\0\7\0\0\0\24\0\0\0/\304\304\304\377\304\304\304\377\304\304\304\377" + "\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304" + "\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377" + "\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304" + "\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377" + "\304\304\304\377\304\304\304\377\304\304\304\377\0\0\0\216\0\0\0[\0\0\0""1" + "\0\0\0\26\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24" + "\0\0\0/\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276" + "\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276" + "\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276" + "\276\276\377\276\276\276\377\0\0\0\212\0\0\0X\0\0\0/\0\0\0\24\0\0\0\7\20" + "F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\270\270\270\377" + "\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270" + "\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377" + "\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270" + "\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377" + "\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270" + "\270\377\0\0\0\205\0\0\0T\0\0\0,\0\0\0\23\0\0\0\7\20F\230\0\20F\230\0\20" + "F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\262\262\262\377\262\262\262\377\262" + "\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262" + "\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262" + "\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262" + "\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262" + "\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\0\0\0~\0\0\0" + "N\0\0\0(\0\0\0\21\0\0\0\6\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0" + "\0\0\24\0\0\0/\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255" + "\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255" + "\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\0\0\0u\0\0\0F\0\0\0#\0\0\0\16\0\0\0" + "\5\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\23\0\0\0-\242\242" + "\242\356\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377" + "\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247" + "\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377" + "\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247" + "\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377" + "\235\235\235\365\0\0\0i\0\0\0>\0\0\0\36\0\0\0\14\0\0\0\4\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\2\0\0\0\6\0\0\0\22\0\0\0+\212\212\212\303\241\241\241" + "\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241" + "\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241" + "\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241" + "\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241" + "\377\241\241\241\377\241\241\241\377\241\241\241\377}}}\326\0\0\0[\0\0\0" + """4\0\0\0\30\0\0\0\11\0\0\0\3\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0" + "\6\0\0\0\20\0\0\0%444\\\230\230\230\366\234\234\234\377\234\234\234\377\234" + "\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234" + "\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\234" + "\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234" + "\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\227" + "\227\227\371%%%\202\0\0\0J\0\0\0)\0\0\0\22\0\0\0\7\0\0\0\2\20F\230\0\20F" + "\230\0\20F\230\0\0\0\0\1\0\0\0\4\0\0\0\15\0\0\0\36\0\0\0""8+++kyyy\317\215" + "\215\215\364\226\226\226\377\226\226\226\377\226\226\226\377\226\226\226" + "\377\226\226\226\377\226\226\226\377\226\226\226\377\226\226\226\377\226" + "\226\226\377\226\226\226\377\226\226\226\377\226\226\226\377\226\226\226" + "\377\226\226\226\377\226\226\226\377\226\226\226\377\215\215\215\365ttt\327" + "###\205\0\0\0V\0\0\0""7\0\0\0\35\0\0\0\15\0\0\0\5\0\0\0\1\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\11\0\0\0\25\0\0\0&\0\0\0<\0\0\0Q\0\0\0" + "`\0\0\0j\0\0\0n\0\0\0o\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0" + "\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0o\0\0\0m\0\0\0i\0\0\0_\0\0\0N\0\0\0""9\0" + "\0\0$\0\0\0\23\0\0\0\10\0\0\0\3\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\0\0\0\2\0\0\0\5\0\0\0\14\0\0\0\27\0\0\0#\0\0\0""0\0\0\0""9\0\0\0" + ">\0\0\0A\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0" + "\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0@\0\0\0=\0\0\0""7\0\0\0.\0\0\0!\0\0\0\24" + "\0\0\0\13\0\0\0\4\0\0\0\2\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\0\0\0\1\0\0\0\3\0\0\0\6\0\0\0\13\0\0\0\21\0\0\0\30\0\0\0\34\0\0\0\37\0" + "\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0" + "\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\36\0" + "\0\0\33\0\0\0\26\0\0\0\20\0\0\0\12\0\0\0\5\0\0\0\2\0\0\0\1\20F\230\0\20F" + "\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\2\0\0\0\4\0" + "\0\0\7\0\0\0\12\0\0\0\13\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0" + "\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0" + "\0\15\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\13\0\0\0\11\0\0\0\6\0\0\0\4\0\0\0" + "\2\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\4\0\0\0\4" + "\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4" + "\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\3\0\0\0\2" + "\0\0\0\1\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0", +}; + diff --git a/pui/textures/slider2-vert-prelight.png b/pui/textures/slider2-vert-prelight.png new file mode 100644 index 0000000..aa80a8c Binary files /dev/null and b/pui/textures/slider2-vert-prelight.png differ diff --git a/pui/textures/slider2-vert.c b/pui/textures/slider2-vert.c new file mode 100644 index 0000000..7fdcd86 --- /dev/null +++ b/pui/textures/slider2-vert.c @@ -0,0 +1,292 @@ +/* GIMP RGBA C-Source image dump (slider2-vert.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[36 * 46 * 4 + 1]; +} slider2_vert = { + 36, 46, 4, + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1\0\0\0\1" + "\0\0\0\1\0\0\0\1\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0" + "\0\0\2\0\0\0\3\0\0\0\4\0\0\0\4\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0" + "\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0\0\0\5\0" + "\0\0\5\0\0\0\5\0\0\0\5\0\0\0\4\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\20F\230\0" + "\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0" + "\0\0\1\0\0\0\3\0\0\0\5\0\0\0\10\0\0\0\13\0\0\0\15\0\0\0\16\0\0\0\16\0\0\0" + "\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0" + "\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\17\0\0\0\16\0\0\0\16\0\0\0\14\0\0\0" + "\12\0\0\0\7\0\0\0\4\0\0\0\2\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\6\0\0\0\14\240\240\2400\346" + "\346\346\260\360\360\360\351\363\363\363\377\363\363\363\377\363\363\363" + "\377\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377\363" + "\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363" + "\377\363\363\363\377\363\363\363\377\363\363\363\377\363\363\363\377\357" + "\357\357\351\345\345\345\261\225\225\2253\0\0\0\20\0\0\0\12\0\0\0\5\0\0\0" + "\2\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\2\0\0\0" + "\6\0\0\0\15\216\216\2164\355\355\355\362\357\357\357\377\357\357\357\377" + "\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357" + "\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377" + "\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357" + "\357\377\357\357\357\377\357\357\357\377\357\357\357\377\357\357\357\377" + "\354\354\354\363{{{<\0\0\0\24\0\0\0\12\0\0\0\4\0\0\0\1\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\11\0\0\0\25\330\330\330\265" + "\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352" + "\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377" + "\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352" + "\352\377\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377" + "\352\352\352\377\352\352\352\377\352\352\352\377\352\352\352\377\322\322" + "\322\272\0\0\0!\0\0\0\21\0\0\0\7\0\0\0\2\0\0\0\1\20F\230\0\20F\230\0\20F" + "\230\0\0\0\0\1\0\0\0\5\0\0\0\15\0\0\0\36\340\340\340\354\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346" + "\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346" + "\346\377\346\346\346\377\346\346\346\377\346\346\346\377\346\346\346\377" + "\346\346\346\377\346\346\346\377\346\346\346\377\336\336\336\356\0\0\0""1" + "\0\0\0\31\0\0\0\12\0\0\0\3\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\0\0\0\2" + "\0\0\0\6\0\0\0\20\0\0\0&\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341" + "\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341" + "\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377" + "\341\341\341\377\341\341\341\377\341\341\341\377\0\0\0?\0\0\0!\0\0\0\16\0" + "\0\0\5\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\6\0\0\0\22\0\0" + "\0+\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335" + "\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377" + "\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335" + "\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377" + "\335\335\335\377\335\335\335\377\335\335\335\377\335\335\335\377\335\335" + "\335\377\335\335\335\377\0\0\0K\0\0\0'\0\0\0\21\0\0\0\6\0\0\0\2\20F\230\0" + "\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\23\0\0\0.\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\0\0\0T\0\0\0,\0\0\0\24\0\0\0\7\0\0\0\2\20F\230\0\20F\230\0\20F\230\0" + "\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377" + "\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377" + "\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324" + "\324\377\324\324\324\377\324\324\324\377\324\324\324\377\0\0\0Z\0\0\0""1" + "\0\0\0\26\0\0\0\10\0\0\0\2\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7" + "\0\0\0\24\0\0\0/\317\317\317\377\317\317\317\377\317\317\317\377\317\317" + "\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377" + "\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317" + "\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377" + "\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317" + "\317\377\317\317\317\377\317\317\317\377\0\0\0a\0\0\0""5\0\0\0\30\0\0\0\11" + "\0\0\0\3\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244" + "\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244" + "\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244" + "\244\244\377\244\244\244\377\244\244\244\377\244\244\244\377\244\244\244" + "\377\244\244\244\377\0\0\0f\0\0\0:\0\0\0\33\0\0\0\12\0\0\0\3\20F\230\0\20" + "F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\251\251\251\377\251\251" + "\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377" + "\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251" + "\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377" + "\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251" + "\251\377\251\251\251\377\251\251\251\377\251\251\251\377\251\251\251\377" + "\0\0\0l\0\0\0>\0\0\0\36\0\0\0\13\0\0\0\4\20F\230\0\20F\230\0\20F\230\0\0" + "\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255" + "\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255" + "\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255" + "\377\255\255\255\377\255\255\255\377\255\255\255\377\0\0\0r\0\0\0C\0\0\0" + "!\0\0\0\15\0\0\0\4\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24" + "\0\0\0/\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261" + "\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261" + "\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261" + "\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261" + "\377\261\261\261\377\261\261\261\377\261\261\261\377\261\261\261\377\261" + "\261\261\377\261\261\261\377\0\0\0w\0\0\0H\0\0\0$\0\0\0\17\0\0\0\5\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\266\266\266\377\266" + "\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266" + "\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266" + "\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266" + "\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266" + "\266\266\377\266\266\266\377\266\266\266\377\266\266\266\377\266\266\266" + "\377\0\0\0|\0\0\0L\0\0\0'\0\0\0\20\0\0\0\5\20F\230\0\20F\230\0\20F\230\0" + "\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\272\272\272\377\272\272\272\377\272\272" + "\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377" + "\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272" + "\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377" + "\272\272\272\377\272\272\272\377\272\272\272\377\272\272\272\377\272\272" + "\272\377\272\272\272\377\272\272\272\377\272\272\272\377\0\0\0\200\0\0\0" + "O\0\0\0)\0\0\0\22\0\0\0\6\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0" + "\0\0\24\0\0\0/\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276" + "\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276" + "\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\0\0\0\204\0\0\0S\0\0\0+\0\0\0\23\0\0" + "\0\6\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\303\303" + "\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377" + "\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303" + "\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377" + "\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303" + "\303\377\303\303\303\377\303\303\303\377\303\303\303\377\303\303\303\377" + "\303\303\303\377\0\0\0\207\0\0\0U\0\0\0-\0\0\0\24\0\0\0\7\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\4\0""1\377\4\0""1\377\4\3""8" + "\377\3\6@\377\3\11H\377\3\13O\377\3\16U\377\2\20[\377\2\22a\377\2\24e\377" + "\2\25h\377\2\25i\377\2\25i\377\2\25h\377\2\24e\377\2\22a\377\2\20[\377\3" + "\16U\377\3\13O\377\3\11H\377\3\6@\377\4\3""8\377\4\0""1\377\4\0""1\377\0" + "\0\0\212\0\0\0X\0\0\0/\0\0\0\25\0\0\0\7\20F\230\0\20F\230\0\20F\230\0\0\0" + "\0\2\0\0\0\7\0\0\0\24\0\0\0/\4\0""1\377\4\0""1\377\4\3""8\377\3\6@\377\3" + "\11H\377\3\13O\377\3\16U\377\2\20[\377\2\22a\377\2\24e\377\2\25h\377\2\25" + "i\377\2\25i\377\2\25h\377\2\24e\377\2\22a\377\2\20[\377\3\16U\377\3\13O\377" + "\3\11H\377\3\6@\377\4\3""8\377\4\0""1\377\4\0""1\377\0\0\0\215\0\0\0[\0\0" + "\0""1\0\0\0\26\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0" + "\0\24\0\0\0/\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317" + "\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317" + "\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317" + "\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317" + "\317\317\377\317\317\317\377\317\317\317\377\317\317\317\377\317\317\317" + "\377\317\317\317\377\317\317\317\377\0\0\0\220\0\0\0]\0\0\0""3\0\0\0\26\0" + "\0\0\10\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\324" + "\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324" + "\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324" + "\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324" + "\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324" + "\324\324\377\324\324\324\377\324\324\324\377\324\324\324\377\324\324\324" + "\377\324\324\324\377\0\0\0\222\0\0\0_\0\0\0""4\0\0\0\27\0\0\0\10\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330" + "\330\330\377\330\330\330\377\330\330\330\377\330\330\330\377\330\330\330" + "\377\0\0\0\224\0\0\0a\0\0\0""5\0\0\0\30\0\0\0\11\20F\230\0\20F\230\0\20F" + "\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\334\334\334\377\334\334\334\377\334" + "\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334" + "\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334" + "\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334" + "\377\334\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\334" + "\334\334\377\334\334\334\377\334\334\334\377\334\334\334\377\0\0\0\225\0" + "\0\0b\0\0\0""6\0\0\0\30\0\0\0\11\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0" + "\0\0\7\0\0\0\24\0\0\0/\341\341\341\377\341\341\341\377\341\341\341\377\341" + "\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341" + "\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341" + "\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341" + "\377\341\341\341\377\341\341\341\377\341\341\341\377\341\341\341\377\341" + "\341\341\377\341\341\341\377\341\341\341\377\0\0\0\225\0\0\0b\0\0\0""6\0" + "\0\0\30\0\0\0\11\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0" + "\0\0/\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345" + "\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345" + "\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345" + "\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345" + "\377\345\345\345\377\345\345\345\377\345\345\345\377\345\345\345\377\345" + "\345\345\377\345\345\345\377\0\0\0\224\0\0\0a\0\0\0""5\0\0\0\30\0\0\0\11" + "\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\351\351\351" + "\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351" + "\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351" + "\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351" + "\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351" + "\377\351\351\351\377\351\351\351\377\351\351\351\377\351\351\351\377\351" + "\351\351\377\0\0\0\223\0\0\0`\0\0\0""4\0\0\0\27\0\0\0\10\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\356\356\356\377\356\356\356" + "\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356" + "\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356" + "\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356" + "\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356" + "\377\356\356\356\377\356\356\356\377\356\356\356\377\356\356\356\377\0\0" + "\0\220\0\0\0^\0\0\0""3\0\0\0\26\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\0" + "\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\304\304\304\377\304\304\304\377\304\304\304" + "\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304" + "\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304" + "\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304" + "\304\304\377\304\304\304\377\304\304\304\377\304\304\304\377\304\304\304" + "\377\304\304\304\377\304\304\304\377\304\304\304\377\0\0\0\216\0\0\0[\0\0" + "\0""1\0\0\0\26\0\0\0\10\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0" + "\0\24\0\0\0/\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276" + "\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276" + "\276\276\377\276\276\276\377\276\276\276\377\276\276\276\377\276\276\276" + "\377\276\276\276\377\276\276\276\377\0\0\0\212\0\0\0X\0\0\0/\0\0\0\24\0\0" + "\0\7\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\270\270" + "\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377" + "\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270" + "\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377" + "\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270" + "\270\377\270\270\270\377\270\270\270\377\270\270\270\377\270\270\270\377" + "\270\270\270\377\0\0\0\205\0\0\0T\0\0\0,\0\0\0\23\0\0\0\7\20F\230\0\20F\230" + "\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\24\0\0\0/\262\262\262\377\262\262\262" + "\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262" + "\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262" + "\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262" + "\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262" + "\377\262\262\262\377\262\262\262\377\262\262\262\377\262\262\262\377\0\0" + "\0~\0\0\0N\0\0\0(\0\0\0\21\0\0\0\6\20F\230\0\20F\230\0\20F\230\0\0\0\0\2" + "\0\0\0\7\0\0\0\24\0\0\0/\255\255\255\377\255\255\255\377\255\255\255\377" + "\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255" + "\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377" + "\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255" + "\255\377\255\255\255\377\255\255\255\377\255\255\255\377\255\255\255\377" + "\255\255\255\377\255\255\255\377\255\255\255\377\0\0\0u\0\0\0F\0\0\0#\0\0" + "\0\16\0\0\0\5\20F\230\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\7\0\0\0\23\0\0" + "\0-\242\242\242\356\247\247\247\377\247\247\247\377\247\247\247\377\247\247" + "\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377" + "\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247" + "\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377" + "\247\247\247\377\247\247\247\377\247\247\247\377\247\247\247\377\247\247" + "\247\377\235\235\235\365\0\0\0i\0\0\0>\0\0\0\36\0\0\0\14\0\0\0\4\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\2\0\0\0\6\0\0\0\22\0\0\0+\212\212\212\303\241" + "\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241" + "\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241" + "\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241" + "\377\241\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377\241" + "\241\241\377\241\241\241\377\241\241\241\377\241\241\241\377}}}\326\0\0\0" + "[\0\0\0""4\0\0\0\30\0\0\0\11\0\0\0\3\20F\230\0\20F\230\0\20F\230\0\0\0\0" + "\2\0\0\0\6\0\0\0\20\0\0\0%444\\\230\230\230\366\234\234\234\377\234\234\234" + "\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\234" + "\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234" + "\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\234" + "\234\234\377\234\234\234\377\234\234\234\377\234\234\234\377\234\234\234" + "\377\227\227\227\371%%%\202\0\0\0J\0\0\0)\0\0\0\22\0\0\0\7\0\0\0\2\20F\230" + "\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\4\0\0\0\15\0\0\0\36\0\0\0""8+++kyyy" + "\317\215\215\215\364\226\226\226\377\226\226\226\377\226\226\226\377\226" + "\226\226\377\226\226\226\377\226\226\226\377\226\226\226\377\226\226\226" + "\377\226\226\226\377\226\226\226\377\226\226\226\377\226\226\226\377\226" + "\226\226\377\226\226\226\377\226\226\226\377\226\226\226\377\215\215\215" + "\365ttt\327###\205\0\0\0V\0\0\0""7\0\0\0\35\0\0\0\15\0\0\0\5\0\0\0\1\20F" + "\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\11\0\0\0\25\0\0\0&\0\0\0" + "<\0\0\0Q\0\0\0`\0\0\0j\0\0\0n\0\0\0o\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0" + "\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0p\0\0\0o\0\0\0m\0\0\0i\0\0\0_\0\0" + "\0N\0\0\0""9\0\0\0$\0\0\0\23\0\0\0\10\0\0\0\3\0\0\0\1\20F\230\0\20F\230\0" + "\20F\230\0\20F\230\0\0\0\0\2\0\0\0\5\0\0\0\14\0\0\0\27\0\0\0#\0\0\0""0\0" + "\0\0""9\0\0\0>\0\0\0A\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0" + "\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0B\0\0\0@\0\0\0=\0\0\0""7\0\0\0.\0" + "\0\0!\0\0\0\24\0\0\0\13\0\0\0\4\0\0\0\2\20F\230\0\20F\230\0\20F\230\0\20" + "F\230\0\20F\230\0\0\0\0\1\0\0\0\3\0\0\0\6\0\0\0\13\0\0\0\21\0\0\0\30\0\0" + "\0\34\0\0\0\37\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0" + "\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0\0\40\0\0" + "\0\40\0\0\0\36\0\0\0\33\0\0\0\26\0\0\0\20\0\0\0\12\0\0\0\5\0\0\0\2\0\0\0" + "\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0" + "\0\0\2\0\0\0\4\0\0\0\7\0\0\0\12\0\0\0\13\0\0\0\14\0\0\0\15\0\0\0\15\0\0\0" + "\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0" + "\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\14\0\0\0\13\0\0\0\11\0\0\0" + "\6\0\0\0\4\0\0\0\2\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0\20F\230" + "\0\20F\230\0\20F\230\0\20F\230\0\0\0\0\1\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\4" + "\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4" + "\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\4" + "\0\0\0\3\0\0\0\2\0\0\0\1\0\0\0\1\20F\230\0\20F\230\0\20F\230\0\20F\230\0", +}; + diff --git a/pui/textures/slider2-vert.png b/pui/textures/slider2-vert.png new file mode 100644 index 0000000..28fee17 Binary files /dev/null and b/pui/textures/slider2-vert.png differ diff --git a/pui/textures/trough1-vertical.c b/pui/textures/trough1-vertical.c new file mode 100644 index 0000000..92db15a --- /dev/null +++ b/pui/textures/trough1-vertical.c @@ -0,0 +1,189 @@ +/* GIMP RGBA C-Source image dump (trough1-vertical.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[25 * 90 * 4 + 1]; +} trough1_vertical = { + 25, 90, 4, + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0\2'''!...\34CSk\0CSk\0C" + "Sk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk" + "\0CSk\0CSk\0CSk\0CSk\0\10\10\10C\31\31\31\341III\377PPP\375FFF\302...\26" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0$$$\34\26\26\26\363mmm\377eee\377...\377999\377$$$\306" + "\0\0\0\6CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0(((s;;;\377+++\377\13\13\13\377\16\16\16\377\34\34\34" + "\377\20\20\20\377\0\0\0,CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk" + "\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0///|777\377999\377\11\11\11\377\15\15" + "\15\377\33\33\33\377\7\7\7\377\7\7\7G\0\0\0\5CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0@@@4&&&\375\31\31\31" + "\377\40\40\40\377\25\25\25\377\"\"\"\377\20\20\20\361\0\0\0""9\0\0\0\5CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0\0\0\0\1:::\211\37\37\37\376\36\36\36\377(((\377\35\35\35\370\14\14" + "\14\246\0\0\0\40CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0C" + "Sk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0\3***I***\235\36\36\36\261\10\10" + "\10\205\0\0\0>\0\0\0\4CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0\1\0\0\0\12\0\0\0\13\0" + "\0\0\13\0\0\0\6CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0\20\5\5\5""7\377\377" + "\377\4CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0C" + "Sk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0d\1\1\1\366\351\351\351" + "\34CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0" + "\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0" + "\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n" + "\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1" + "\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1" + "\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk" + "\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377" + "\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343" + "\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0C" + "Sk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343" + "\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343" + "\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0" + "\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0" + "\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n" + "\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1" + "\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1" + "\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk" + "\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377" + "\343\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343" + "\343\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0C" + "Sk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343" + "\343\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343" + "\37CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0\0\0\0n\1\1\1\377\343\343\343\37CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0\0\0\0d\1\1\1\366\351\351\351\34CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0\0\0\0\20\5\5\5""7\377\377\377\4CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\22\22\22c.." + ".\262>>>\260888[\0\0\0\1CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk" + "\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\6\6\6\235666\377___\377\\" + "\\\\\377BBB\377'''\217\0\0\0\1CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0(((-(((\377qqq\377\17\17\17\377" + "%%%\377!!!\377\31\31\31\374\0\0\0\40CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0C" + "Sk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0""000f555\377555\377\5\5" + "\5\377\6\6\6\377\21\21\21\377\12\12\12\377\5\5\5dCSk\0CSk\0CSk\0CSk\0CSk" + "\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0""999C)))\377" + "%%%\377\30\30\30\377\32\32\32\377\27\27\27\377\22\22\22\376\10\10\10\\\0" + "\0\0\4CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0C" + "Sk\0CSk\0CSk\0\0\0\0\1""222\314\21\21\21\377\13\13\13\377%%%\377###\377\23" + "\23\23\331\0\0\0@\0\0\0\7CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0""666\23""333\257***\355%%%\357\35" + "\35\35\312\5\5\5i\0\0\0\30CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0C" + "Sk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0\0\0\0\10\0\0\0\27\0\0\0" + ",\0\0\0""0\0\0\0\24\0\0\0\1CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0" + "CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CSk\0CS" + "k\0CSk\0CSk\0", +}; + diff --git a/pui/textures/trough1-vertical.png b/pui/textures/trough1-vertical.png new file mode 100644 index 0000000..2b706dc Binary files /dev/null and b/pui/textures/trough1-vertical.png differ diff --git a/pui/textures/trough2-vertical.c b/pui/textures/trough2-vertical.c new file mode 100644 index 0000000..d25a521 --- /dev/null +++ b/pui/textures/trough2-vertical.c @@ -0,0 +1,287 @@ +/* GIMP RGBA C-Source image dump (trough2-vertical.c) */ + +static const struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[35 * 100 * 4 + 1]; +} trough2_vertical = { + 35, 100, 4, + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0\22\22\22\16!!!\37?Vs\0?Vs\0?" + "Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs" + "\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0\0\0\0" + "\6\2\2\2w\20\20\20\351###\377444\377???\343???\215333\5?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0\0\0\0\1\16\16\16\270\20\20\20\377" + "NNN\377qqq\377sss\377\\\\\\\377III\377AAA\313777\16?Vs\0?Vs\0?Vs\0?Vs\0?" + "Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs" + "\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0\37\37\37{\31\31\31\377ddd\377\177\177\177" + "\377\177\177\177\377(((\377???\377LLL\377666\377***\235?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0\40\40\40\330GGG\377ddd\377444\377+++" + "\377\0\0\0\377***\377;;;\377***\377!!!\371\11\11\11\34?Vs\0?Vs\0?Vs\0?Vs" + "\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0...\26\"\"\"\377___\377NNN\377\11\11\11\377\0\0" + "\0\377\0\0\0\377\23\23\23\377$$$\377\26\26\26\377\25\25\25\377\6\6\6P\0\0" + "\0\4?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs" + "\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0III\7(((\376PPP\377RRR\377>>>\377" + "\3\3\3\377\4\4\4\377\13\13\13\377%%%\377\2\2\2\377\11\11\11\377\0\0\0o\0" + "\0\0\12?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0" + "?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0""222\347444\377<<<\377" + "...\377\10\10\10\377***\377\27\27\27\377\22\22\22\377\17\17\17\377\3\3\3" + "\371\0\0\0Z\0\0\0\17?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?V" + "s\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0?Vs\0<< +#include "pui.h" + +bool Widget::SetValue(float newvalue) +{ + /* Clamp new value */ + if (newvalue <= this->min) newvalue = this->min; + if (newvalue >= this->max) newvalue = this->max; + + /* Value is different? */ + if (newvalue == this->value) return false; + + this->value = newvalue; + return true; +} + +void Widget::Pad(int xpad, int ypad) +{ + this->x += xpad; + this->y += ypad; + this->w -= xpad + xpad; + this->h -= ypad + ypad; +} + +void Frame::OnPaint() const +{ + glBegin(GL_QUADS); + glColor4f(colour.r, colour.g, colour.b, colour.a); + glVertex2f( x, y); + glVertex2f( x, h + y); + glVertex2f(w + x, h + y); + glVertex2f(w + x, y); + glEnd(); +} + diff --git a/pui/widget.h b/pui/widget.h new file mode 100644 index 0000000..3e93394 --- /dev/null +++ b/pui/widget.h @@ -0,0 +1,61 @@ +#ifndef WIDGET_H +#define WIDGET_H + +#include +#include + +struct Rect { + int x; + int y; + int w; + int h; + + inline bool Hit(int hitx, int hity) + { + return hitx >= x && hitx < x + w && hity >= y && hity < y + h; + } +}; + +struct Colour { + float r, g, b, a; + + Colour() {} + Colour(float r, float g, float b) : r(r), g(g), b(b), a(1.f) {} + Colour(float r, float g, float b, float a) : r(r), g(g), b(b), a(a) {} +}; + +struct Widget : Rect { + const PTextures *tex; + + uint32_t port; + float min; + float max; + float value; + + bool active; + + Widget() : port(UINT_MAX) {} + + virtual ~Widget() {} + + virtual Widget *GetWidget(int x, int y) { return this; } + virtual Widget *GetWidget(uint32_t port) { return this->port == port ? this : NULL; } + virtual float GetNewValue(int x, int y) { return this->value; } + virtual bool SetValue(float newvalue); + + virtual void OnPaint() const {} + + void Pad(int xpad, int ypad); +}; + +struct Frame : Widget { + Colour colour; + + /* virtual */ void OnPaint() const; +}; + +struct Label : Widget { + char *text; +}; + +#endif /* WIDGET_H */