Make it compile on MSVC

This commit is contained in:
flowerpewpew
2024-05-03 13:44:08 +01:00
parent ddba1319de
commit 16dcd0747a
29 changed files with 17151 additions and 9 deletions

View File

@@ -8,6 +8,7 @@
#define DEMO_VIDEO_FEATURES 0
#ifdef PLATFORM_WEB
#include <emscripten.h>
#endif
@@ -199,6 +200,7 @@ Vector3 NearestPointOnLine(Vector3 p1,
float numer,denom;
const float EPS = 0.001;
Vector3 zeroV;
p13.x = p1.x - p3.x;
p13.y = p1.y - p3.y;
@@ -207,12 +209,12 @@ Vector3 NearestPointOnLine(Vector3 p1,
p43.y = p4.y - p3.y;
p43.z = p4.z - p3.z;
if (fabs(p43.x) < EPS && fabs(p43.y) < EPS && fabs(p43.z) < EPS)
return(Vector3){};
return zeroV;
p21.x = p2.x - p1.x;
p21.y = p2.y - p1.y;
p21.z = p2.z - p1.z;
if (fabs(p21.x) < EPS && fabs(p21.y) < EPS && fabs(p21.z) < EPS)
return(Vector3){};
return zeroV;
d1343 = p13.x * p43.x + p13.y * p43.y + p13.z * p43.z;
d4321 = p43.x * p21.x + p43.y * p21.y + p43.z * p21.z;
@@ -222,7 +224,7 @@ Vector3 NearestPointOnLine(Vector3 p1,
denom = d2121 * d4343 - d4321 * d4321;
if (fabs(denom) < EPS)
return (Vector3){};
return zeroV;
numer = d1343 * d4321 - d1321 * d4343;
mua = numer / denom;
@@ -278,7 +280,7 @@ int GuiFloatValueBox(Rectangle bounds, const char *text, float *value, float min
// Update control
//--------------------------------------------------------------------
if ((state != STATE_DISABLED) && !guiLocked && !guiSliderDragging)
if ((state != STATE_DISABLED) && !guiLocked)
{
Vector2 mousePoint = GetMousePosition();
@@ -586,12 +588,28 @@ void add_shape(void) {
needs_rebuild = true;
}
#ifdef _MSC_VER
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
void append_format(char** data, int* size, int* capacity, _Printf_format_string_ const char* format, ...) {
va_list arg_ptr;
va_start(arg_ptr, format);
int added = vsnprintf(*data + *size, *capacity - *size, format, arg_ptr);
*size += MIN(added, *capacity - *size);
assert(*size < *capacity);
va_end(arg_ptr);
}
#else
#define MIN(x,y) ({ \
__typeof(x) xv = (x);\
__typeof(y) yv = (y); \
xv < yv ? xv : yv;\
})
__attribute__((format(printf, 4, 5)))
void append_format(char **data, int *size, int *capacity, const char *format, ...) {
@@ -604,7 +622,7 @@ void append_format(char **data, int *size, int *capacity, const char *format, ..
va_end(arg_ptr);
}
#endif
Vector3 VertexInterp(Vector4 p1,Vector4 p2, float threshold) {
if (fabsf(threshold-p1.w) < 0.00001)
@@ -1245,10 +1263,12 @@ int main(void){
SetTargetFPS(60);
# ifndef PLATFORM_WEB
# ifndef _MSC_VER
void swizzleWindow(void);
swizzleWindow();
void makeWindowKey(void);
makeWindowKey();
# endif
# endif
const int gamepad = 0;
@@ -1494,7 +1514,7 @@ int main(void){
#endif
UpdateCameraPro(&camera, (Vector3){0, -delta.x/10, 0}, Vector3Zero(), 0);
}
} else if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && !guiSliderDragging && mouseAction == CONTROL_NONE && Vector2Distance(mouseDownPosition, GetMousePosition()) > 1) {
} else if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && mouseAction == CONTROL_NONE && Vector2Distance(mouseDownPosition, GetMousePosition()) > 1) {
mouseAction = CONTROL_ROTATE_CAMERA;
}
@@ -1512,12 +1532,15 @@ int main(void){
}
}
#ifndef PLATFORM_WEB
#ifndef PLATFORM_WEB
#ifndef _MSC_VER
extern float magnification;
if (mouseAction == CONTROL_NONE ) {
CameraMoveForward(&camera, 8*magnification, false);
}
magnification = 0;
#endif
#endif
}
@@ -1892,7 +1915,7 @@ int main(void){
BeginScissorMode((int)view_area.x, (int)view_area.y, (int)view_area.width, (int)view_area.height); {
const int first_visible = (int)floorf(-scroll_offset.y / row_height);
const int last_visible = first_visible + (int)ceilf(view_area.height / row_height);
for (int i=first_visible; i < MIN(last_visible+1,num_spheres); i++) {
for (int i=first_visible; i < __min(last_visible+1,num_spheres); i++) {
Sphere *s = &spheres[i];
const char *text = TextFormat("%c Shape %i", s->subtract ? '-' : '+', i+1);

768
src/shaders.h Normal file
View File

@@ -0,0 +1,768 @@
unsigned char shader_base_fs[] = {
0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x61, 0x73, 0x74, 0x52, 0x61, 0x79,
0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f,
0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x64,
0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x69, 0x6e, 0x20, 0x3d, 0x20,
0x30, 0x2e, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x3d, 0x20, 0x33,
0x30, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74,
0x6d, 0x69, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65,
0x63, 0x33, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28,
0x2d, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f,
0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d, 0x30, 0x3b, 0x20,
0x69, 0x3c, 0x36, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x72,
0x65, 0x63, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30,
0x31, 0x2a, 0x74, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d,
0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20,
0x72, 0x6f, 0x2b, 0x72, 0x64, 0x2a, 0x74, 0x20, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20,
0x72, 0x65, 0x73, 0x2e, 0x78, 0x3c, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73,
0x20, 0x7c, 0x7c, 0x20, 0x74, 0x3e, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x29,
0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x72, 0x65,
0x73, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x2e, 0x67, 0x62,
0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, 0x74, 0x3e, 0x74,
0x6d, 0x61, 0x78, 0x20, 0x29, 0x20, 0x6d, 0x3d, 0x76, 0x65, 0x63, 0x33,
0x28, 0x2d, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x20,
0x74, 0x2c, 0x20, 0x6d, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a,
0x0d, 0x0a, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61,
0x6c, 0x63, 0x53, 0x6f, 0x66, 0x74, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77,
0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f,
0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x64,
0x2c, 0x20, 0x69, 0x6e, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d,
0x69, 0x6e, 0x74, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72,
0x65, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d,
0x20, 0x6d, 0x69, 0x6e, 0x74, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d, 0x30,
0x3b, 0x20, 0x69, 0x3c, 0x31, 0x36, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20,
0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
0x68, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x28, 0x20, 0x72, 0x6f, 0x20, 0x2b, 0x20, 0x72, 0x64, 0x2a, 0x74,
0x20, 0x29, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e,
0x28, 0x20, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x38, 0x2e, 0x30, 0x2a, 0x68,
0x2f, 0x74, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d,
0x70, 0x28, 0x20, 0x68, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x32, 0x2c, 0x20,
0x30, 0x2e, 0x31, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, 0x68, 0x3c, 0x30,
0x2e, 0x30, 0x30, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x3e, 0x74, 0x6d,
0x61, 0x78, 0x20, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70,
0x28, 0x20, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20,
0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d,
0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x4e, 0x6f,
0x72, 0x6d, 0x61, 0x6c, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x65, 0x20, 0x3d,
0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2e, 0x30, 0x2c, 0x2d, 0x31,
0x2e, 0x30, 0x29, 0x2a, 0x30, 0x2e, 0x35, 0x37, 0x37, 0x33, 0x2a, 0x30,
0x2e, 0x30, 0x30, 0x30, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x65, 0x2e, 0x78, 0x79, 0x79, 0x2a,
0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20, 0x70,
0x6f, 0x73, 0x20, 0x2b, 0x20, 0x65, 0x2e, 0x78, 0x79, 0x79, 0x20, 0x29,
0x2e, 0x78, 0x20, 0x2b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x65, 0x2e, 0x79, 0x79, 0x78, 0x2a, 0x73, 0x69,
0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20, 0x70, 0x6f, 0x73,
0x20, 0x2b, 0x20, 0x65, 0x2e, 0x79, 0x79, 0x78, 0x20, 0x29, 0x2e, 0x78,
0x20, 0x2b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x65, 0x2e, 0x79, 0x78, 0x79, 0x2a, 0x73, 0x69, 0x67, 0x6e,
0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x2b,
0x20, 0x65, 0x2e, 0x79, 0x78, 0x79, 0x20, 0x29, 0x2e, 0x78, 0x20, 0x2b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x65, 0x2e, 0x78, 0x78, 0x78, 0x2a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64,
0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69,
0x65, 0x6c, 0x64, 0x28, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x2b, 0x20, 0x65,
0x2e, 0x78, 0x78, 0x78, 0x20, 0x29, 0x2e, 0x78, 0x20, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x65, 0x70, 0x73, 0x20, 0x3d, 0x20,
0x76, 0x65, 0x63, 0x33, 0x28, 0x20, 0x30, 0x2e, 0x30, 0x30, 0x30, 0x35,
0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20,
0x6e, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x67,
0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70, 0x6f, 0x73, 0x2b, 0x65,
0x70, 0x73, 0x2e, 0x78, 0x79, 0x79, 0x29, 0x2e, 0x78, 0x20, 0x2d, 0x20,
0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70, 0x6f,
0x73, 0x2d, 0x65, 0x70, 0x73, 0x2e, 0x78, 0x79, 0x79, 0x29, 0x2e, 0x78,
0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70, 0x6f, 0x73,
0x2b, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x78, 0x79, 0x29, 0x2e, 0x78, 0x20,
0x2d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28,
0x70, 0x6f, 0x73, 0x2d, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x78, 0x79, 0x29,
0x2e, 0x78, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x70,
0x6f, 0x73, 0x2b, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x79, 0x78, 0x29, 0x2e,
0x78, 0x20, 0x2d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x28, 0x70, 0x6f, 0x73, 0x2d, 0x65, 0x70, 0x73, 0x2e, 0x79, 0x79,
0x78, 0x29, 0x2e, 0x78, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x6f, 0x72, 0x6d,
0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x6e, 0x6f, 0x72, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a,
0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6c, 0x63,
0x41, 0x4f, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20,
0x70, 0x6f, 0x73, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x6e, 0x6f, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63,
0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x20, 0x3d,
0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d, 0x30, 0x3b,
0x20, 0x69, 0x3c, 0x35, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x20, 0x29, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x72,
0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x31, 0x20, 0x2b, 0x20, 0x30, 0x2e,
0x31, 0x32, 0x2a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x69, 0x29, 0x2f,
0x34, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x6f, 0x70, 0x6f, 0x73,
0x20, 0x3d, 0x20, 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x68, 0x72,
0x20, 0x2b, 0x20, 0x70, 0x6f, 0x73, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64,
0x64, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x28, 0x20, 0x61, 0x6f, 0x70, 0x6f, 0x73, 0x20, 0x29, 0x2e, 0x78,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f,
0x63, 0x63, 0x20, 0x2b, 0x3d, 0x20, 0x2d, 0x28, 0x64, 0x64, 0x2d, 0x68,
0x72, 0x29, 0x2a, 0x73, 0x63, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x63, 0x61, 0x20, 0x2a, 0x3d, 0x20,
0x30, 0x2e, 0x39, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x31, 0x2e, 0x30, 0x20,
0x2d, 0x20, 0x33, 0x2e, 0x30, 0x2a, 0x6f, 0x63, 0x63, 0x2c, 0x20, 0x30,
0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a,
0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x72, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
0x72, 0x20, 0x3d, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20,
0x46, 0x41, 0x4c, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f,
0x4d, 0x4f, 0x44, 0x45, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65,
0x63, 0x33, 0x28, 0x30, 0x2e, 0x29, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6c,
0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x28, 0x30, 0x2e, 0x34, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30,
0x2e, 0x36, 0x29, 0x20, 0x2b, 0x72, 0x64, 0x2e, 0x79, 0x2a, 0x30, 0x2e,
0x34, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x73, 0x74, 0x52, 0x61,
0x79, 0x28, 0x72, 0x6f, 0x2c, 0x72, 0x64, 0x29, 0x3b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d,
0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x78, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6d, 0x20, 0x3d,
0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x79, 0x7a, 0x77, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, 0x6d, 0x2e,
0x72, 0x3e, 0x2d, 0x30, 0x2e, 0x35, 0x20, 0x29, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x3d, 0x20,
0x72, 0x6f, 0x20, 0x2b, 0x20, 0x74, 0x2a, 0x72, 0x64, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x6e, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x4e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x28, 0x20, 0x70, 0x6f, 0x73, 0x20, 0x29,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f,
0x2f, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x65, 0x66, 0x20, 0x3d,
0x20, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x20, 0x72, 0x64,
0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6d,
0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d,
0x20, 0x6d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x46,
0x41, 0x4c, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d,
0x4f, 0x44, 0x45, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x69,
0x6e, 0x67, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x2f, 0x2f, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63,
0x20, 0x3d, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x41, 0x4f, 0x28, 0x20, 0x70,
0x6f, 0x73, 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x20, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x20,
0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28,
0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x63, 0x6f, 0x73, 0x28, 0x2d, 0x30,
0x2e, 0x34, 0x29, 0x2c, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x30, 0x2e, 0x37,
0x29, 0x2c, 0x20, 0x2d, 0x30, 0x2e, 0x36, 0x29, 0x20, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72,
0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x6c, 0x69, 0x67, 0x68,
0x74, 0x5f, 0x64, 0x69, 0x72, 0x2d, 0x72, 0x64, 0x20, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
0x61, 0x74, 0x20, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x3d,
0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x30, 0x2e, 0x35, 0x2b,
0x30, 0x2e, 0x35, 0x2a, 0x6e, 0x6f, 0x72, 0x2e, 0x79, 0x2c, 0x20, 0x30,
0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x64, 0x69, 0x66, 0x66, 0x75, 0x73, 0x65, 0x20, 0x3d, 0x20,
0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x20,
0x6e, 0x6f, 0x72, 0x2c, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64,
0x69, 0x72, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31,
0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x61, 0x63,
0x6b, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6c,
0x61, 0x6d, 0x70, 0x28, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x20, 0x6e, 0x6f,
0x72, 0x2c, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65,
0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x2d, 0x6c, 0x69, 0x67, 0x68, 0x74,
0x5f, 0x64, 0x69, 0x72, 0x2e, 0x78, 0x2c, 0x30, 0x2e, 0x30, 0x2c, 0x2d,
0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x2e, 0x7a, 0x29,
0x29, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x31, 0x2e, 0x30,
0x20, 0x29, 0x2a, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x20, 0x31, 0x2e,
0x30, 0x2d, 0x70, 0x6f, 0x73, 0x2e, 0x79, 0x2c, 0x30, 0x2e, 0x30, 0x2c,
0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44, 0x4f,
0x3a, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x20,
0x6f, 0x6e, 0x20, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x66, 0x66,
0x75, 0x73, 0x65, 0x20, 0x2a, 0x3d, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x53,
0x6f, 0x66, 0x74, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x28, 0x20, 0x70,
0x6f, 0x73, 0x2c, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x69,
0x72, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x32, 0x2c, 0x20, 0x32, 0x2e, 0x35,
0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x70, 0x65,
0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x20, 0x63, 0x6c, 0x61, 0x6d,
0x70, 0x28, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x20, 0x6e, 0x6f, 0x72, 0x2c,
0x20, 0x68, 0x61, 0x6c, 0x20, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c,
0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x2c, 0x31, 0x36, 0x2e, 0x30, 0x29,
0x2a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64,
0x69, 0x66, 0x66, 0x75, 0x73, 0x65, 0x20, 0x2a, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x30, 0x2e, 0x30, 0x34, 0x20,
0x2b, 0x20, 0x30, 0x2e, 0x39, 0x36, 0x2a, 0x70, 0x6f, 0x77, 0x28, 0x20,
0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x31, 0x2e, 0x30, 0x2b, 0x64, 0x6f,
0x74, 0x28, 0x68, 0x61, 0x6c, 0x2c, 0x72, 0x64, 0x29, 0x2c, 0x30, 0x2e,
0x30, 0x2c, 0x31, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x35, 0x2e, 0x30, 0x20,
0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6c, 0x69, 0x6e, 0x20,
0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x69,
0x6e, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x2e, 0x33, 0x30, 0x2a, 0x64, 0x69,
0x66, 0x66, 0x75, 0x73, 0x65, 0x2a, 0x76, 0x65, 0x63, 0x33, 0x28, 0x31,
0x2e, 0x30, 0x30, 0x2c, 0x30, 0x2e, 0x38, 0x30, 0x2c, 0x30, 0x2e, 0x35,
0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x6c, 0x69, 0x6e, 0x20, 0x2b, 0x3d, 0x20, 0x30, 0x2e, 0x34, 0x30,
0x2a, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x6e, 0x74, 0x2a, 0x76, 0x65, 0x63,
0x33, 0x28, 0x30, 0x2e, 0x34, 0x30, 0x2c, 0x30, 0x2e, 0x36, 0x30, 0x2c,
0x31, 0x2e, 0x30, 0x30, 0x29, 0x3b, 0x2f, 0x2f, 0x2a, 0x6f, 0x63, 0x63,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c,
0x69, 0x6e, 0x20, 0x2b, 0x3d, 0x20, 0x30, 0x2e, 0x35, 0x30, 0x2a, 0x62,
0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x2a, 0x76, 0x65,
0x63, 0x33, 0x28, 0x30, 0x2e, 0x32, 0x35, 0x2c, 0x30, 0x2e, 0x32, 0x35,
0x2c, 0x30, 0x2e, 0x32, 0x35, 0x29, 0x3b, 0x2f, 0x2f, 0x2a, 0x6f, 0x63,
0x63, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
0x72, 0x2a, 0x6c, 0x69, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x2b, 0x3d,
0x20, 0x31, 0x30, 0x2e, 0x30, 0x30, 0x2a, 0x73, 0x70, 0x65, 0x2a, 0x76,
0x65, 0x63, 0x33, 0x28, 0x31, 0x2e, 0x30, 0x30, 0x2c, 0x30, 0x2e, 0x39,
0x30, 0x2c, 0x30, 0x2e, 0x37, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65,
0x63, 0x33, 0x28, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x63, 0x6f,
0x6c, 0x6f, 0x72, 0x2c, 0x30, 0x2e, 0x30, 0x2c, 0x31, 0x2e, 0x30, 0x29,
0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x6d, 0x61,
0x74, 0x33, 0x20, 0x73, 0x65, 0x74, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61,
0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x6f,
0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x61,
0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x72, 0x20, 0x29,
0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x63, 0x77, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
0x6c, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x61, 0x2d, 0x72, 0x6f, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63,
0x70, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x73, 0x69, 0x6e,
0x28, 0x63, 0x72, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x63, 0x72,
0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x75, 0x20, 0x3d, 0x20, 0x6e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x63, 0x72,
0x6f, 0x73, 0x73, 0x28, 0x63, 0x77, 0x2c, 0x63, 0x70, 0x29, 0x20, 0x29,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20,
0x63, 0x76, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69,
0x7a, 0x65, 0x28, 0x20, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x28, 0x63, 0x75,
0x2c, 0x63, 0x77, 0x29, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x61, 0x74, 0x33,
0x28, 0x20, 0x63, 0x75, 0x2c, 0x20, 0x63, 0x76, 0x2c, 0x20, 0x63, 0x77,
0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f,
0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x6d,
0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
0x6c, 0x69, 0x7a, 0x65, 0x64, 0x0d, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73,
0x65, 0x63, 0x74, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x33,
0x20, 0x72, 0x64, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34,
0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x20, 0x29, 0x20, 0x20, 0x7b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
0x2d, 0x28, 0x64, 0x6f, 0x74, 0x28, 0x72, 0x6f, 0x2c, 0x70, 0x6c, 0x61,
0x6e, 0x65, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x2b, 0x70, 0x6c, 0x61, 0x6e,
0x65, 0x2e, 0x77, 0x29, 0x2f, 0x64, 0x6f, 0x74, 0x28, 0x72, 0x64, 0x2c,
0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0d,
0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d,
0x61, 0x69, 0x6e, 0x28, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x6f, 0x74, 0x20, 0x3d,
0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0d,
0x0a, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x20, 0x74,
0x75, 0x72, 0x6e, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x20,
0x41, 0x41, 0x0d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20,
0x41, 0x41, 0x20, 0x31, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x41, 0x41,
0x3e, 0x31, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x28,
0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x3d, 0x30, 0x3b, 0x20, 0x6d, 0x3c,
0x41, 0x41, 0x3b, 0x20, 0x6d, 0x2b, 0x2b, 0x20, 0x29, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20,
0x6e, 0x3d, 0x30, 0x3b, 0x20, 0x6e, 0x3c, 0x41, 0x41, 0x3b, 0x20, 0x6e,
0x2b, 0x2b, 0x20, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20,
0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69,
0x6e, 0x61, 0x74, 0x65, 0x73, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6f, 0x20, 0x3d, 0x20,
0x76, 0x65, 0x63, 0x32, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6d,
0x29, 0x2c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x6e, 0x29, 0x29, 0x20,
0x2f, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x41, 0x41, 0x29, 0x20,
0x2d, 0x20, 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x20, 0x3d,
0x20, 0x28, 0x2d, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
0x6e, 0x2e, 0x78, 0x79, 0x20, 0x2b, 0x20, 0x32, 0x2e, 0x30, 0x2a, 0x28,
0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64,
0x2e, 0x78, 0x79, 0x2b, 0x6f, 0x29, 0x29, 0x2f, 0x72, 0x65, 0x73, 0x6f,
0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x23,
0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x28,
0x2d, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
0x78, 0x79, 0x20, 0x2b, 0x20, 0x32, 0x2e, 0x30, 0x2a, 0x67, 0x6c, 0x5f,
0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x79,
0x29, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e,
0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d,
0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x72, 0x6f, 0x20, 0x3d, 0x20, 0x76, 0x69, 0x65,
0x77, 0x45, 0x79, 0x65, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x61, 0x20, 0x3d,
0x20, 0x76, 0x69, 0x65, 0x77, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b,
0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x6d, 0x61, 0x74, 0x33, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f,
0x74, 0x6f, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x73,
0x65, 0x74, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x28, 0x20, 0x72, 0x6f,
0x2c, 0x20, 0x74, 0x61, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x3b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65,
0x63, 0x33, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72,
0x61, 0x5f, 0x74, 0x6f, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x2a,
0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20,
0x76, 0x65, 0x63, 0x33, 0x28, 0x70, 0x2e, 0x78, 0x79, 0x2c, 0x32, 0x2e,
0x30, 0x29, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x6f,
0x6c, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x28, 0x20,
0x72, 0x6f, 0x2c, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x20,
0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x20, 0x63, 0x6f, 0x6c, 0x2c, 0x20,
0x76, 0x65, 0x63, 0x33, 0x28, 0x30, 0x2e, 0x34, 0x35, 0x34, 0x35, 0x29,
0x20, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x67, 0x61, 0x6d, 0x6d, 0x61,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
0x76, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x3e,
0x20, 0x30, 0x2e, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x6c, 0x61,
0x6e, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x28,
0x72, 0x6f, 0x2c, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x72, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28,
0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2e, 0x2c, 0x30, 0x29, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x69, 0x66, 0x20, 0x28, 0x64, 0x69, 0x73, 0x74, 0x20, 0x3e, 0x20,
0x30, 0x2e, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x20, 0x2b,
0x20, 0x64, 0x69, 0x73, 0x74, 0x2a, 0x72, 0x61, 0x79, 0x5f, 0x64, 0x69,
0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x66, 0x5f,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e,
0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
0x66, 0x69, 0x65, 0x6c, 0x64, 0x28, 0x74, 0x29, 0x2e, 0x78, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x69,
0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20,
0x28, 0x73, 0x64, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3c,
0x20, 0x30, 0x2e, 0x20, 0x3f, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34,
0x28, 0x31, 0x2e, 0x2c, 0x30, 0x2e, 0x2c, 0x30, 0x2e, 0x2c, 0x20, 0x73,
0x69, 0x6e, 0x28, 0x73, 0x64, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x2a, 0x38, 0x2e, 0x2b, 0x72, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x2a,
0x32, 0x2e, 0x29, 0x2f, 0x34, 0x2e, 0x20, 0x2b, 0x20, 0x30, 0x2e, 0x32,
0x35, 0x29, 0x3a, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x30,
0x2e, 0x31, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x31, 0x35, 0x2c, 0x30, 0x2e,
0x38, 0x2c, 0x73, 0x69, 0x6e, 0x28, 0x73, 0x64, 0x66, 0x5f, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x2a, 0x38, 0x2e, 0x2d, 0x72, 0x75, 0x6e, 0x54, 0x69,
0x6d, 0x65, 0x2a, 0x32, 0x2e, 0x29, 0x2f, 0x34, 0x2e, 0x20, 0x2b, 0x20,
0x30, 0x2e, 0x32, 0x35, 0x20, 0x29, 0x29, 0x20, 0x3b, 0x0d, 0x0a, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x20, 0x3d, 0x20, 0x6d,
0x69, 0x78, 0x28, 0x63, 0x6f, 0x6c, 0x2c, 0x20, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x72, 0x67, 0x62, 0x2c,
0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
0x2e, 0x61, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x74, 0x20, 0x2b, 0x3d,
0x20, 0x63, 0x6f, 0x6c, 0x3b, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x41,
0x41, 0x3e, 0x31, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x74, 0x6f, 0x74, 0x20, 0x2f, 0x3d, 0x20, 0x66,
0x6c, 0x6f, 0x61, 0x74, 0x28, 0x41, 0x41, 0x2a, 0x41, 0x41, 0x29, 0x3b,
0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d, 0x0a, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6c,
0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x20, 0x74,
0x6f, 0x74, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a,
0x7d, 0x0d, 0x0a, 0x00
};
unsigned int shader_base_fs_len = 5308;
unsigned char shader_prefix_fs[] = {
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x52, 0x6f, 0x75, 0x6e,
0x64, 0x42, 0x6f, 0x78, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70,
0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x71, 0x20, 0x3d, 0x20, 0x61,
0x62, 0x73, 0x28, 0x70, 0x29, 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x65, 0x6e,
0x67, 0x74, 0x68, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2c, 0x30, 0x2e,
0x30, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x61,
0x78, 0x28, 0x71, 0x2e, 0x78, 0x2c, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2e,
0x79, 0x2c, 0x71, 0x2e, 0x7a, 0x29, 0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29,
0x20, 0x2d, 0x20, 0x72, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x42,
0x6f, 0x78, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x2c, 0x20,
0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
0x76, 0x65, 0x63, 0x33, 0x20, 0x71, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73,
0x28, 0x70, 0x29, 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74,
0x68, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2c, 0x30, 0x2e, 0x30, 0x29,
0x29, 0x20, 0x2b, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x61, 0x78, 0x28,
0x71, 0x2e, 0x78, 0x2c, 0x6d, 0x61, 0x78, 0x28, 0x71, 0x2e, 0x79, 0x2c,
0x71, 0x2e, 0x7a, 0x29, 0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x2d,
0x20, 0x72, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a,
0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x70, 0x53, 0x6d, 0x6f, 0x6f, 0x74,
0x68, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34,
0x20, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x2c, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x20,
0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, 0x20, 0x6d, 0x61, 0x78,
0x28, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2d, 0x61, 0x62, 0x73, 0x28,
0x61, 0x2e, 0x78, 0x2d, 0x62, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x30, 0x2e,
0x30, 0x20, 0x29, 0x2f, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x20,
0x3d, 0x20, 0x68, 0x2a, 0x68, 0x2a, 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x20,
0x3d, 0x20, 0x6d, 0x2a, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2a, 0x28, 0x31,
0x2e, 0x30, 0x2f, 0x32, 0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x2e,
0x78, 0x3c, 0x62, 0x2e, 0x78, 0x29, 0x20, 0x3f, 0x20, 0x76, 0x65, 0x63,
0x34, 0x28, 0x61, 0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x6d, 0x69, 0x78, 0x28,
0x61, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61, 0x2c,
0x6d, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x62,
0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x6d, 0x69, 0x78, 0x28, 0x61, 0x2e, 0x67,
0x62, 0x61, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x31, 0x2e, 0x30,
0x2d, 0x6d, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
0x76, 0x65, 0x63, 0x34, 0x20, 0x42, 0x6c, 0x6f, 0x62, 0x62, 0x79, 0x4d,
0x69, 0x6e, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, 0x2c, 0x20,
0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
0x68, 0x20, 0x3d, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x20, 0x62, 0x6c,
0x65, 0x6e, 0x64, 0x2d, 0x61, 0x62, 0x73, 0x28, 0x61, 0x2e, 0x78, 0x2d,
0x62, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x2f,
0x62, 0x6c, 0x65, 0x6e, 0x64, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x68, 0x2a,
0x68, 0x2a, 0x30, 0x2e, 0x35, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x2a,
0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2a, 0x28, 0x31, 0x2e, 0x30, 0x2f, 0x32,
0x2e, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x61, 0x2e, 0x78, 0x3c, 0x62, 0x2e,
0x78, 0x29, 0x20, 0x3f, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x61, 0x2e,
0x78, 0x2d, 0x73, 0x2c, 0x6d, 0x69, 0x78, 0x28, 0x61, 0x2e, 0x67, 0x62,
0x61, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x6d, 0x29, 0x29, 0x20,
0x3a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x62, 0x2e, 0x78, 0x2d, 0x73,
0x2c, 0x6d, 0x69, 0x78, 0x28, 0x61, 0x2e, 0x67, 0x62, 0x61, 0x2c, 0x62,
0x2e, 0x67, 0x62, 0x61, 0x2c, 0x31, 0x2e, 0x30, 0x2d, 0x6d, 0x29, 0x29,
0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34,
0x20, 0x4d, 0x69, 0x6e, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61,
0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x62, 0x20, 0x29, 0x0d, 0x0a,
0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
0x6e, 0x20, 0x28, 0x61, 0x2e, 0x78, 0x3c, 0x62, 0x2e, 0x78, 0x29, 0x20,
0x3f, 0x20, 0x61, 0x20, 0x3a, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6f, 0x70, 0x53, 0x6d,
0x6f, 0x6f, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65,
0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x20, 0x76,
0x65, 0x63, 0x34, 0x20, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20,
0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x6c, 0x65,
0x6e, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x68, 0x20, 0x3d, 0x20, 0x20,
0x6d, 0x61, 0x78, 0x28, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x2d, 0x61,
0x62, 0x73, 0x28, 0x61, 0x2e, 0x78, 0x2d, 0x62, 0x2e, 0x78, 0x29, 0x2c,
0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x2f, 0x62, 0x6c, 0x65, 0x6e, 0x64,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x20, 0x6d, 0x20, 0x3d, 0x20, 0x68, 0x2a, 0x68, 0x2a, 0x30, 0x2e, 0x35,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x20, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x2a, 0x62, 0x6c, 0x65, 0x6e, 0x64,
0x2a, 0x28, 0x31, 0x2e, 0x30, 0x2f, 0x32, 0x2e, 0x30, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
0x28, 0x61, 0x2e, 0x78, 0x3c, 0x62, 0x2e, 0x78, 0x29, 0x20, 0x3f, 0x20,
0x76, 0x65, 0x63, 0x34, 0x28, 0x61, 0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x61,
0x2e, 0x67, 0x62, 0x61, 0x29, 0x20, 0x3a, 0x20, 0x76, 0x65, 0x63, 0x34,
0x28, 0x62, 0x2e, 0x78, 0x2d, 0x73, 0x2c, 0x62, 0x2e, 0x67, 0x62, 0x61,
0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63,
0x34, 0x20, 0x6f, 0x70, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x53, 0x75,
0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x76,
0x65, 0x63, 0x34, 0x20, 0x64, 0x31, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34,
0x20, 0x64, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6b,
0x20, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x6f,
0x70, 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x6f, 0x6e,
0x28, 0x64, 0x31, 0x2c, 0x76, 0x65, 0x63, 0x34, 0x28, 0x2d, 0x64, 0x32,
0x2e, 0x78, 0x2c, 0x20, 0x64, 0x32, 0x2e, 0x67, 0x62, 0x61, 0x29, 0x2c,
0x6b, 0x29, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x2d,
0x64, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x64, 0x32, 0x2e, 0x67, 0x62, 0x61,
0x29, 0x3b, 0x20, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65,
0x63, 0x34, 0x20, 0x6f, 0x70, 0x53, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34,
0x20, 0x64, 0x31, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x64, 0x32,
0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x6d,
0x61, 0x78, 0x28, 0x2d, 0x64, 0x32, 0x2e, 0x78, 0x2c, 0x64, 0x31, 0x2e,
0x78, 0x29, 0x2c, 0x20, 0x64, 0x31, 0x2e, 0x67, 0x62, 0x61, 0x29, 0x3b,
0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34, 0x20,
0x6f, 0x70, 0x55, 0x28, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x64, 0x31,
0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x64, 0x32, 0x20, 0x29, 0x0d,
0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
0x72, 0x6e, 0x20, 0x28, 0x64, 0x31, 0x2e, 0x78, 0x3c, 0x64, 0x32, 0x2e,
0x78, 0x29, 0x20, 0x3f, 0x20, 0x64, 0x31, 0x20, 0x3a, 0x20, 0x64, 0x32,
0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33,
0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x28, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x70, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28,
0x70, 0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x59,
0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a,
0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x79, 0x20, 0x3d,
0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70,
0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f,
0x70, 0x53, 0x79, 0x6d, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20,
0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x70, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e,
0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76,
0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x59, 0x28,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b,
0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x78, 0x79, 0x20, 0x3d,
0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20,
0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x70, 0x2e, 0x78, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73,
0x28, 0x70, 0x2e, 0x78, 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a,
0x7d, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79,
0x6d, 0x59, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20,
0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e,
0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x79,
0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x76,
0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x53, 0x79, 0x6d, 0x58, 0x59, 0x5a,
0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x20, 0x29, 0x0d, 0x0a,
0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x78, 0x79, 0x7a,
0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x2e, 0x78, 0x79, 0x7a,
0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x70, 0x52, 0x6f, 0x74, 0x61, 0x74,
0x65, 0x58, 0x59, 0x5a, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70,
0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x74, 0x68, 0x65, 0x74, 0x61,
0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x63, 0x7a, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73,
0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x2e, 0x7a, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x7a,
0x20, 0x3d, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61,
0x2e, 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x63, 0x79, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73,
0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x79,
0x20, 0x3d, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61,
0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x20, 0x63, 0x78, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73,
0x28, 0x74, 0x68, 0x65, 0x74, 0x61, 0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x78,
0x20, 0x3d, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x68, 0x65, 0x74, 0x61,
0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x6d, 0x61, 0x74, 0x33, 0x20, 0x6d, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x6d,
0x61, 0x74, 0x33, 0x28, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x7a,
0x2a, 0x63, 0x79, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x7a,
0x2a, 0x73, 0x79, 0x2a, 0x73, 0x78, 0x20, 0x2d, 0x20, 0x63, 0x78, 0x2a,
0x73, 0x7a, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x7a, 0x2a,
0x73, 0x78, 0x20, 0x2b, 0x20, 0x63, 0x7a, 0x2a, 0x63, 0x78, 0x2a, 0x73,
0x79, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x79,
0x2a, 0x73, 0x7a, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x7a,
0x2a, 0x63, 0x78, 0x20, 0x2b, 0x20, 0x73, 0x7a, 0x2a, 0x73, 0x79, 0x2a,
0x73, 0x78, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x78, 0x2a,
0x73, 0x7a, 0x2a, 0x73, 0x79, 0x20, 0x2d, 0x20, 0x63, 0x7a, 0x2a, 0x73,
0x78, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x73,
0x79, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x79, 0x2a, 0x73,
0x78, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x79, 0x2a, 0x63,
0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x61, 0x74, 0x2a, 0x70, 0x3b,
0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x00
};
unsigned int shader_prefix_fs_len = 2446;
unsigned char slicer_body_fs[] = {
0x69, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x72, 0x61, 0x67,
0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x3b, 0x0d, 0x0a, 0x6f,
0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x69, 0x6e, 0x61,
0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69,
0x66, 0x6f, 0x72, 0x6d, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x7a,
0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61,
0x69, 0x6e, 0x28, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x66, 0x5f, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65,
0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66,
0x69, 0x65, 0x6c, 0x64, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x66, 0x72,
0x61, 0x67, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20,
0x7a, 0x29, 0x29, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x66, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d,
0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28,
0x73, 0x64, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x2c, 0x20,
0x31, 0x2e, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x00
};
unsigned int slicer_body_fs_len = 202;
unsigned char selection_fs[] = {
0x6f, 0x75, 0x74, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x66, 0x69, 0x6e,
0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x2f, 0x2f,
0x20, 0x69, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x74, 0x65,
0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x3b, 0x0d, 0x0a, 0x75, 0x6e, 0x69,
0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69,
0x65, 0x77, 0x45, 0x79, 0x65, 0x3b, 0x20, 0x0d, 0x0a, 0x75, 0x6e, 0x69,
0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x69,
0x65, 0x77, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0x20, 0x0d, 0x0a,
0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x32,
0x20, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b,
0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x65, 0x63, 0x34, 0x20, 0x63, 0x61, 0x73,
0x74, 0x52, 0x61, 0x79, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76, 0x65, 0x63,
0x33, 0x20, 0x72, 0x64, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x69,
0x6e, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, 0x61, 0x78,
0x20, 0x3d, 0x20, 0x33, 0x30, 0x30, 0x2e, 0x30, 0x3b, 0x0d, 0x0a, 0x0d,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74,
0x20, 0x3d, 0x20, 0x74, 0x6d, 0x69, 0x6e, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x76,
0x65, 0x63, 0x33, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x66, 0x6f, 0x72, 0x28, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x3d,
0x30, 0x3b, 0x20, 0x69, 0x3c, 0x36, 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b,
0x20, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
0x20, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x2e,
0x30, 0x30, 0x30, 0x31, 0x2a, 0x74, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x72, 0x65,
0x73, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x28, 0x20, 0x72, 0x6f, 0x2b, 0x72, 0x64, 0x2a, 0x74, 0x20, 0x29,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
0x66, 0x28, 0x20, 0x72, 0x65, 0x73, 0x2e, 0x78, 0x3c, 0x70, 0x72, 0x65,
0x63, 0x69, 0x73, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x3e, 0x74, 0x6d, 0x61,
0x78, 0x20, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x20, 0x2b, 0x3d,
0x20, 0x72, 0x65, 0x73, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73,
0x2e, 0x67, 0x62, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20,
0x74, 0x3e, 0x74, 0x6d, 0x61, 0x78, 0x20, 0x29, 0x20, 0x6d, 0x3d, 0x76,
0x65, 0x63, 0x33, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x63, 0x34,
0x28, 0x20, 0x74, 0x2c, 0x20, 0x6d, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d,
0x0d, 0x0a, 0x0d, 0x0a, 0x6d, 0x61, 0x74, 0x33, 0x20, 0x73, 0x65, 0x74,
0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x28, 0x20, 0x69, 0x6e, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x72, 0x6f, 0x2c, 0x20, 0x69, 0x6e, 0x20, 0x76,
0x65, 0x63, 0x33, 0x20, 0x74, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
0x74, 0x20, 0x63, 0x72, 0x20, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x77, 0x20, 0x3d,
0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x74,
0x61, 0x2d, 0x72, 0x6f, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x70, 0x20, 0x3d, 0x20, 0x76, 0x65,
0x63, 0x33, 0x28, 0x73, 0x69, 0x6e, 0x28, 0x63, 0x72, 0x29, 0x2c, 0x20,
0x63, 0x6f, 0x73, 0x28, 0x63, 0x72, 0x29, 0x2c, 0x30, 0x2e, 0x30, 0x29,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20,
0x63, 0x75, 0x20, 0x3d, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69,
0x7a, 0x65, 0x28, 0x20, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x28, 0x63, 0x77,
0x2c, 0x63, 0x70, 0x29, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x63, 0x76, 0x20, 0x3d, 0x20, 0x6e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x63, 0x72,
0x6f, 0x73, 0x73, 0x28, 0x63, 0x75, 0x2c, 0x63, 0x77, 0x29, 0x20, 0x29,
0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
0x6e, 0x20, 0x6d, 0x61, 0x74, 0x33, 0x28, 0x20, 0x63, 0x75, 0x2c, 0x20,
0x63, 0x76, 0x2c, 0x20, 0x63, 0x77, 0x20, 0x29, 0x3b, 0x0d, 0x0a, 0x7d,
0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69,
0x6e, 0x28, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x28, 0x2d, 0x72,
0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79,
0x20, 0x2b, 0x20, 0x32, 0x2e, 0x30, 0x2a, 0x67, 0x6c, 0x5f, 0x46, 0x72,
0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x79, 0x29, 0x2f,
0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x79,
0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, 0x61, 0x74,
0x33, 0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x74, 0x6f, 0x5f,
0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x74, 0x43,
0x61, 0x6d, 0x65, 0x72, 0x61, 0x28, 0x20, 0x76, 0x69, 0x65, 0x77, 0x45,
0x79, 0x65, 0x2c, 0x20, 0x76, 0x69, 0x65, 0x77, 0x43, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x29, 0x3b, 0x0d, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x72, 0x61, 0x79,
0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d,
0x20, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x74, 0x6f, 0x5f, 0x77,
0x6f, 0x72, 0x6c, 0x64, 0x20, 0x2a, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
0x6c, 0x69, 0x7a, 0x65, 0x28, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x70,
0x2e, 0x78, 0x79, 0x2c, 0x32, 0x2e, 0x30, 0x29, 0x20, 0x29, 0x3b, 0x0d,
0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c,
0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34,
0x28, 0x63, 0x61, 0x73, 0x74, 0x52, 0x61, 0x79, 0x28, 0x20, 0x76, 0x69,
0x65, 0x77, 0x45, 0x79, 0x65, 0x2c, 0x20, 0x72, 0x61, 0x79, 0x5f, 0x64,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x29, 0x2e, 0x67,
0x62, 0x61, 0x2c, 0x20, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a,
0x20, 0x0d, 0x0a, 0x00
};
unsigned int selection_fs_len = 1096;