sokol-luajit/bin/shaderbin/shader_gen.h
2024-10-30 11:51:36 +10:30

713 lines
49 KiB
C

#pragma once
/*
#version:1# (machine generated, don't edit!)
Generated by sokol-shdc (https://github.com/floooh/sokol-tools)
Cmdline:
sokol-shdc -i ./samples/sdf-sapp.glsl -o F:\dev\luajit\Thunc\sokol-luajit\bin/shaderbin/shader_gen.h -l glsl410 -f sokol
Overview:
=========
Shader program: 'sdf':
Get shader desc: sdf_shader_desc(sg_query_backend());
Vertex shader: vs
Attributes:
ATTR_vs_position => 0
Uniform block 'vs_params':
C struct: vs_params_t
Bind slot: SLOT_vs_params => 0
Fragment shader: fs
*/
#if !defined(SOKOL_GFX_INCLUDED)
#error "Please include sokol_gfx.h before shader_gen.h"
#endif
#if !defined(SOKOL_SHDC_ALIGN)
#if defined(_MSC_VER)
#define SOKOL_SHDC_ALIGN(a) __declspec(align(a))
#else
#define SOKOL_SHDC_ALIGN(a) __attribute__((aligned(a)))
#endif
#endif
#define ATTR_vs_position (0)
#define SLOT_vs_params (0)
#pragma pack(push,1)
SOKOL_SHDC_ALIGN(16) typedef struct vs_params_t {
float aspect;
float time;
uint8_t _pad_8[8];
} vs_params_t;
#pragma pack(pop)
/*
#version 410
uniform vec4 vs_params[1];
layout(location = 0) in vec4 position;
layout(location = 0) out vec2 pos;
layout(location = 1) out vec3 eye;
layout(location = 4) out vec3 fwd;
layout(location = 3) out vec3 right;
layout(location = 2) out vec3 up;
vec3 eye_pos(float time, vec3 center)
{
return center + vec3(sin(time * 0.0500000007450580596923828125) * 3.0, sin(time * 0.100000001490116119384765625) * 2.0, cos(time * 0.0500000007450580596923828125) * 3.0);
}
void lookat(vec3 eye_1, vec3 center, vec3 up_1, inout vec3 out_fwd, inout vec3 out_right, out vec3 out_up)
{
out_fwd = normalize(center - eye_1);
out_right = normalize(cross(out_fwd, up_1));
out_up = cross(out_right, out_fwd);
}
void main()
{
gl_Position = position;
pos.x = position.x * vs_params[0].x;
pos.y = position.y;
float param = vs_params[0].y * 5.0;
vec3 param_1 = vec3(0.0);
eye = eye_pos(param, param_1);
vec3 param_2 = eye;
vec3 param_3 = vec3(0.0);
vec3 param_4 = vec3(0.0, 1.0, 0.0);
vec3 param_5;
vec3 param_6;
vec3 param_7;
lookat(param_2, param_3, param_4, param_5, param_6, param_7);
fwd = param_5;
right = param_6;
up = param_7;
}
*/
static const uint8_t vs_source_glsl410[1205] = {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x73,0x5f,0x70,0x61,
0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,
0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,
0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,
0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,
0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,
0x20,0x65,0x79,0x65,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,
0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x34,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,
0x65,0x63,0x33,0x20,0x66,0x77,0x64,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x6f,0x75,
0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,0x6c,0x61,
0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x75,0x70,0x3b,0x0a,
0x0a,0x76,0x65,0x63,0x33,0x20,0x65,0x79,0x65,0x5f,0x70,0x6f,0x73,0x28,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x74,0x69,0x6d,0x65,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x63,
0x65,0x6e,0x74,0x65,0x72,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,
0x75,0x72,0x6e,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b,0x20,0x76,0x65,0x63,
0x33,0x28,0x73,0x69,0x6e,0x28,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,0x2e,0x30,
0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,
0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x33,
0x2e,0x30,0x2c,0x20,0x73,0x69,0x6e,0x28,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x30,
0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,
0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,
0x32,0x2e,0x30,0x2c,0x20,0x63,0x6f,0x73,0x28,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,
0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,
0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x20,
0x2a,0x20,0x33,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,
0x6c,0x6f,0x6f,0x6b,0x61,0x74,0x28,0x76,0x65,0x63,0x33,0x20,0x65,0x79,0x65,0x5f,
0x31,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x65,0x6e,0x74,0x65,0x72,0x2c,0x20,
0x76,0x65,0x63,0x33,0x20,0x75,0x70,0x5f,0x31,0x2c,0x20,0x69,0x6e,0x6f,0x75,0x74,
0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x75,0x74,0x5f,0x66,0x77,0x64,0x2c,0x20,0x69,
0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x75,0x74,0x5f,0x72,0x69,
0x67,0x68,0x74,0x2c,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x75,
0x74,0x5f,0x75,0x70,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,
0x66,0x77,0x64,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,
0x63,0x65,0x6e,0x74,0x65,0x72,0x20,0x2d,0x20,0x65,0x79,0x65,0x5f,0x31,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x72,0x69,0x67,0x68,0x74,0x20,0x3d,
0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x72,0x6f,0x73,0x73,
0x28,0x6f,0x75,0x74,0x5f,0x66,0x77,0x64,0x2c,0x20,0x75,0x70,0x5f,0x31,0x29,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x75,0x70,0x20,0x3d,0x20,0x63,
0x72,0x6f,0x73,0x73,0x28,0x6f,0x75,0x74,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,
0x6f,0x75,0x74,0x5f,0x66,0x77,0x64,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,
0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,
0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x70,0x6f,0x73,
0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x78,
0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2a,0x20,
0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,
0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x76,0x73,0x5f,0x70,0x61,0x72,
0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x20,0x2a,0x20,0x35,0x2e,0x30,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,
0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x65,0x79,0x65,0x20,0x3d,0x20,0x65,0x79,0x65,0x5f,0x70,0x6f,0x73,0x28,
0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,
0x32,0x20,0x3d,0x20,0x65,0x79,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,
0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,
0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,
0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,
0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x6f,0x6b,0x61,0x74,0x28,
0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,
0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,
0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x77,0x64,0x20,0x3d,
0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x69,
0x67,0x68,0x74,0x20,0x3d,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x75,0x70,0x20,0x3d,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x3b,
0x0a,0x7d,0x0a,0x0a,0x00,
};
/*
#version 410
layout(location = 1) in vec3 eye;
layout(location = 4) in vec3 fwd;
layout(location = 3) in vec3 right;
layout(location = 0) in vec2 pos;
layout(location = 2) in vec3 up;
layout(location = 0) out vec4 frag_color;
float sd_sphere(vec3 p, float s)
{
return length(p) - s;
}
float sd_mandelbulb(vec3 p, inout vec4 res_color)
{
vec3 w = p;
float _49 = dot(p, p);
float m = _49;
vec4 trap = vec4(abs(p), _49);
float dz = 1.0;
for (int i = 0; i < 4; i++)
{
float _76 = m * m;
dz = fma(8.0 * sqrt(((_76 * _76) * _76) * m), dz, 1.0);
vec3 _653 = w;
float _100 = _653.x * _653.x;
float _104 = _100 * _100;
float _112 = _653.y * _653.y;
float _124 = _653.z * _653.z;
float _128 = _124 * _124;
float _132 = fma(_653.x, _653.x, _124);
float _147 = inversesqrt((((((_132 * _132) * _132) * _132) * _132) * _132) * _132);
float _170 = fma(2.0 * _124, _100, fma(_100 * (-6.0), _112, fma(_112 * (-6.0), _124, fma(_124, _124, fma(_100, _100, _112 * _112)))));
float _176 = fma(_653.z, _653.z, fma(_653.x, _653.x, -_112));
vec3 _670 = vec3(fma(((((((64.0 * _653.x) * _653.y) * _653.z) * fma(_653.x, _653.x, -_124)) * _176) * fma(_124, _124, fma(_100, _100, -((6.0 * _100) * _124)))) * _170, _147, p.x), fma(_170, _170, fma((((-16.0) * _112) * _132) * _176, _176, p.y)), fma(((((-8.0) * _653.y) * _176) * fma(_128, _128, fma(-((28.0 * _100) * _124), _128, fma(70.0 * _104, _128, fma(_104, _104, -(((28.0 * _104) * _100) * _124)))))) * _170, _147, p.z));
w = _670;
trap = min(trap, vec4(abs(_670), m));
float _277 = dot(_670, _670);
m = _277;
if (_277 > 256.0)
{
break;
}
}
res_color = vec4(m, trap.yzw);
return ((0.25 * log(m)) * sqrt(m)) / dz;
}
float d_scene(vec3 p, out vec4 res_color)
{
vec3 param = p;
float param_1 = 1.10000002384185791015625;
float _310 = sd_sphere(param, param_1);
float d = _310;
if (_310 < 0.100000001490116119384765625)
{
vec3 param_2 = p;
vec4 param_3;
float _319 = sd_mandelbulb(param_2, param_3);
res_color = param_3;
d = _319;
}
else
{
res_color = vec4(0.0);
}
return d;
}
vec3 surface_normal(vec3 p, float dp)
{
vec3 param = p + vec3(0.001000000047497451305389404296875, 0.0, 0.0);
vec4 param_1;
float _335 = d_scene(param, param_1);
vec3 param_2 = p + vec3(0.0, 0.001000000047497451305389404296875, 0.0);
vec4 param_3;
float _345 = d_scene(param_2, param_3);
vec3 param_4 = p + vec3(0.0, 0.0, 0.001000000047497451305389404296875);
vec4 param_5;
float _355 = d_scene(param_4, param_5);
return normalize(vec3(_335 - dp, _345 - dp, _355 - dp));
}
vec3 calc_color(vec3 ro, vec3 rd, float t, vec4 tra)
{
vec3 param = ro + (rd * t);
float param_1 = t;
vec3 _377 = surface_normal(param, param_1);
vec3 _384 = normalize(vec3(0.57700002193450927734375, 0.57700002193450927734375, -0.57700002193450927734375) - rd);
float _391 = clamp(0.0500000007450580596923828125 * log(tra.x), 0.0, 1.0);
float _401 = clamp(dot(vec3(0.57700002193450927734375, 0.57700002193450927734375, -0.57700002193450927734375), _377), 0.0, 1.0);
return sqrt(pow(mix(mix(mix(vec3(0.00999999977648258209228515625), vec3(0.100000001490116119384765625, 0.20000000298023223876953125, 0.300000011920928955078125), vec3(clamp(tra.y, 0.0, 1.0))), vec3(0.0199999995529651641845703125, 0.100000001490116119384765625, 0.300000011920928955078125), vec3(clamp(tra.z * tra.z, 0.0, 1.0))), vec3(0.300000011920928955078125, 0.100000001490116119384765625, 0.0199999995529651641845703125), vec3(clamp(pow(tra.w, 6.0), 0.0, 1.0))) * (((((vec3(10.5, 7.69999980926513671875, 4.900000095367431640625) * _401) + (vec3(1.0, 0.800000011920928955078125, 0.60000002384185791015625) * (clamp(fma(0.5, dot(vec3(-0.7070000171661376953125, 0.0, 0.7070000171661376953125), _377), 0.5), 0.0, 1.0) * _391))) + (vec3(0.1500000059604644775390625, 0.300000011920928955078125, 0.449999988079071044921875) * (fma(0.300000011920928955078125, _377.y, 0.699999988079071044921875) * fma(0.800000011920928955078125, _391, 0.20000000298023223876953125)))) + (vec3(0.875, 0.75, 0.625) * fma(0.949999988079071044921875, _391, 0.0500000007450580596923828125))) + vec3((4.0 * clamp(1.0 + dot(rd, _377), 0.0, 1.0)) * _391)), vec3(0.699999988079071044921875, 0.89999997615814208984375, 1.0)) + vec3(((pow(clamp(dot(_377, _384), 0.0, 1.0), 32.0) * _401) * fma(0.959999978542327880859375, pow(clamp(1.0 - dot(_384, vec3(0.57700002193450927734375, 0.57700002193450927734375, -0.57700002193450927734375)), 0.0, 1.0), 5.0), 0.039999999105930328369140625)) * 15.0));
}
void main()
{
vec3 _561 = ((eye + (fwd * 1.7999999523162841796875)) + (right * pos.x)) + (up * pos.y);
vec3 _566 = normalize(_561 - eye);
vec4 color = vec4(0.100000001490116119384765625, 0.20000000298023223876953125, 0.300000011920928955078125, 1.0);
float t = 0.0;
vec4 param_1;
for (int i = 0; i < 96; i++)
{
vec3 _584 = _561 + (_566 * t);
vec3 param = _584;
float _590 = d_scene(param, param_1);
if (_590 < 0.001000000047497451305389404296875)
{
vec3 param_2 = _584;
vec3 param_3 = _566;
float param_4 = _590;
vec4 param_5 = param_1;
vec3 _604 = calc_color(param_2, param_3, param_4, param_5);
vec4 _641 = color;
_641.x = _604.x;
_641.y = _604.y;
_641.z = _604.z;
color = _641;
break;
}
else
{
vec4 _618 = color;
vec3 _620 = _618.xyz + (vec3(0.0030000000260770320892333984375, 0.001000000047497451305389404296875, 0.0) * float(i));
vec4 _648 = _618;
_648.x = _620.x;
_648.y = _620.y;
_648.z = _620.z;
color = _648;
}
if (t > 3.0)
{
break;
}
t += _590;
}
frag_color = color;
}
*/
static const uint8_t fs_source_glsl410[6135] = {
0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61,
0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x65,0x79,0x65,0x3b,0x0a,
0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
0x3d,0x20,0x34,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x66,0x77,0x64,
0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,
0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x72,
0x69,0x67,0x68,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,
0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,
0x63,0x32,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,
0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,
0x76,0x65,0x63,0x33,0x20,0x75,0x70,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,
0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
0x72,0x3b,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x64,0x5f,0x73,0x70,0x68,
0x65,0x72,0x65,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x73,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,
0x6e,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x70,0x29,0x20,0x2d,0x20,0x73,0x3b,
0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x64,0x5f,0x6d,0x61,0x6e,
0x64,0x65,0x6c,0x62,0x75,0x6c,0x62,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,
0x69,0x6e,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x72,0x65,0x73,0x5f,0x63,
0x6f,0x6c,0x6f,0x72,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,
0x20,0x77,0x20,0x3d,0x20,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
0x74,0x20,0x5f,0x34,0x39,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x70,0x2c,0x20,0x70,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x20,0x3d,
0x20,0x5f,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x74,
0x72,0x61,0x70,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x61,0x62,0x73,0x28,0x70,
0x29,0x2c,0x20,0x5f,0x34,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x64,0x7a,0x20,0x3d,0x20,0x31,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,
0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,0x20,0x20,
0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x5f,0x37,0x36,0x20,0x3d,0x20,0x6d,0x20,0x2a,0x20,0x6d,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x7a,0x20,0x3d,0x20,0x66,0x6d,0x61,0x28,0x38,
0x2e,0x30,0x20,0x2a,0x20,0x73,0x71,0x72,0x74,0x28,0x28,0x28,0x5f,0x37,0x36,0x20,
0x2a,0x20,0x5f,0x37,0x36,0x29,0x20,0x2a,0x20,0x5f,0x37,0x36,0x29,0x20,0x2a,0x20,
0x6d,0x29,0x2c,0x20,0x64,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x35,0x33,0x20,
0x3d,0x20,0x77,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x5f,0x31,0x30,0x30,0x20,0x3d,0x20,0x5f,0x36,0x35,0x33,0x2e,0x78,
0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x30,0x34,0x20,0x3d,0x20,
0x5f,0x31,0x30,0x30,0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x31,0x32,0x20,
0x3d,0x20,0x5f,0x36,0x35,0x33,0x2e,0x79,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,
0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x5f,0x31,0x32,0x34,0x20,0x3d,0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a,0x20,0x2a,
0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,
0x32,0x34,0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x32,0x20,0x3d,0x20,
0x66,0x6d,0x61,0x28,0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20,0x5f,0x36,0x35,0x33,
0x2e,0x78,0x2c,0x20,0x5f,0x31,0x32,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x34,0x37,0x20,0x3d,0x20,
0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x73,0x71,0x72,0x74,0x28,0x28,0x28,0x28,0x28,
0x28,0x5f,0x31,0x33,0x32,0x20,0x2a,0x20,0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,
0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,
0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,
0x5f,0x31,0x33,0x32,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x28,
0x32,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x2c,0x20,0x5f,0x31,0x30,0x30,
0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x30,0x30,0x20,0x2a,0x20,0x28,0x2d,0x36,
0x2e,0x30,0x29,0x2c,0x20,0x5f,0x31,0x31,0x32,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,
0x31,0x31,0x32,0x20,0x2a,0x20,0x28,0x2d,0x36,0x2e,0x30,0x29,0x2c,0x20,0x5f,0x31,
0x32,0x34,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x32,0x34,0x2c,0x20,0x5f,0x31,
0x32,0x34,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x30,0x30,0x2c,0x20,0x5f,0x31,
0x30,0x30,0x2c,0x20,0x5f,0x31,0x31,0x32,0x20,0x2a,0x20,0x5f,0x31,0x31,0x32,0x29,
0x29,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,
0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x28,0x5f,
0x36,0x35,0x33,0x2e,0x7a,0x2c,0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a,0x2c,0x20,0x66,
0x6d,0x61,0x28,0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20,0x5f,0x36,0x35,0x33,0x2e,
0x78,0x2c,0x20,0x2d,0x5f,0x31,0x31,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x37,0x30,0x20,0x3d,0x20,
0x76,0x65,0x63,0x33,0x28,0x66,0x6d,0x61,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x36,
0x34,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,0x78,0x29,0x20,0x2a,0x20,
0x5f,0x36,0x35,0x33,0x2e,0x79,0x29,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,0x7a,
0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20,
0x5f,0x36,0x35,0x33,0x2e,0x78,0x2c,0x20,0x2d,0x5f,0x31,0x32,0x34,0x29,0x29,0x20,
0x2a,0x20,0x5f,0x31,0x37,0x36,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,
0x32,0x34,0x2c,0x20,0x5f,0x31,0x32,0x34,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,
0x30,0x30,0x2c,0x20,0x5f,0x31,0x30,0x30,0x2c,0x20,0x2d,0x28,0x28,0x36,0x2e,0x30,
0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x29,
0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x30,0x2c,0x20,0x5f,0x31,0x34,0x37,
0x2c,0x20,0x70,0x2e,0x78,0x29,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x37,0x30,
0x2c,0x20,0x5f,0x31,0x37,0x30,0x2c,0x20,0x66,0x6d,0x61,0x28,0x28,0x28,0x28,0x2d,
0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x31,0x31,0x32,0x29,0x20,0x2a,0x20,
0x5f,0x31,0x33,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x36,0x2c,0x20,0x5f,0x31,
0x37,0x36,0x2c,0x20,0x70,0x2e,0x79,0x29,0x29,0x2c,0x20,0x66,0x6d,0x61,0x28,0x28,
0x28,0x28,0x28,0x2d,0x38,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x36,0x35,0x33,0x2e,
0x79,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x36,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,
0x28,0x5f,0x31,0x32,0x38,0x2c,0x20,0x5f,0x31,0x32,0x38,0x2c,0x20,0x66,0x6d,0x61,
0x28,0x2d,0x28,0x28,0x32,0x38,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x29,
0x20,0x2a,0x20,0x5f,0x31,0x32,0x34,0x29,0x2c,0x20,0x5f,0x31,0x32,0x38,0x2c,0x20,
0x66,0x6d,0x61,0x28,0x37,0x30,0x2e,0x30,0x20,0x2a,0x20,0x5f,0x31,0x30,0x34,0x2c,
0x20,0x5f,0x31,0x32,0x38,0x2c,0x20,0x66,0x6d,0x61,0x28,0x5f,0x31,0x30,0x34,0x2c,
0x20,0x5f,0x31,0x30,0x34,0x2c,0x20,0x2d,0x28,0x28,0x28,0x32,0x38,0x2e,0x30,0x20,
0x2a,0x20,0x5f,0x31,0x30,0x34,0x29,0x20,0x2a,0x20,0x5f,0x31,0x30,0x30,0x29,0x20,
0x2a,0x20,0x5f,0x31,0x32,0x34,0x29,0x29,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,
0x31,0x37,0x30,0x2c,0x20,0x5f,0x31,0x34,0x37,0x2c,0x20,0x70,0x2e,0x7a,0x29,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x20,0x3d,0x20,0x5f,0x36,
0x37,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x61,0x70,
0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x74,0x72,0x61,0x70,0x2c,0x20,0x76,0x65,0x63,
0x34,0x28,0x61,0x62,0x73,0x28,0x5f,0x36,0x37,0x30,0x29,0x2c,0x20,0x6d,0x29,0x29,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x5f,0x36,0x37,0x30,0x2c,
0x20,0x5f,0x36,0x37,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x6d,0x20,0x3d,0x20,0x5f,0x32,0x37,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37,0x37,0x20,0x3e,0x20,0x32,0x35,0x36,
0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,
0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,
0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x2c,0x20,0x74,0x72,0x61,0x70,0x2e,0x79,0x7a,
0x77,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,
0x28,0x30,0x2e,0x32,0x35,0x20,0x2a,0x20,0x6c,0x6f,0x67,0x28,0x6d,0x29,0x29,0x20,
0x2a,0x20,0x73,0x71,0x72,0x74,0x28,0x6d,0x29,0x29,0x20,0x2f,0x20,0x64,0x7a,0x3b,
0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x5f,0x73,0x63,0x65,0x6e,
0x65,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,
0x63,0x34,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x29,0x0a,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,
0x20,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x31,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,
0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,
0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,
0x30,0x20,0x3d,0x20,0x73,0x64,0x5f,0x73,0x70,0x68,0x65,0x72,0x65,0x28,0x70,0x61,
0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x20,0x3d,0x20,0x5f,0x33,0x31,
0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31,0x30,0x20,
0x3c,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,
0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,
0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,
0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x70,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x31,0x39,0x20,0x3d,0x20,0x73,0x64,0x5f,0x6d,
0x61,0x6e,0x64,0x65,0x6c,0x62,0x75,0x6c,0x62,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,
0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,
0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x64,0x20,0x3d,0x20,0x5f,0x33,0x31,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x5f,0x63,0x6f,0x6c,
0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,
0x20,0x64,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x73,0x75,0x72,0x66,
0x61,0x63,0x65,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x28,0x76,0x65,0x63,0x33,0x20,
0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x70,0x29,0x0a,0x7b,0x0a,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,
0x70,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,
0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,
0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,
0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x33,0x35,0x20,0x3d,0x20,0x64,0x5f,0x73,0x63,
0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,
0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,
0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x70,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,
0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,
0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,
0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,
0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x34,
0x35,0x20,0x3d,0x20,0x64,0x5f,0x73,0x63,0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,
0x3d,0x20,0x70,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,
0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,
0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,
0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x35,0x35,0x20,0x3d,0x20,0x64,0x5f,
0x73,0x63,0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x2c,0x20,0x70,
0x61,0x72,0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,
0x75,0x72,0x6e,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x76,0x65,
0x63,0x33,0x28,0x5f,0x33,0x33,0x35,0x20,0x2d,0x20,0x64,0x70,0x2c,0x20,0x5f,0x33,
0x34,0x35,0x20,0x2d,0x20,0x64,0x70,0x2c,0x20,0x5f,0x33,0x35,0x35,0x20,0x2d,0x20,
0x64,0x70,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x65,0x63,0x33,0x20,0x63,0x61,
0x6c,0x63,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x76,0x65,0x63,0x33,0x20,0x72,0x6f,
0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x64,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,
0x20,0x74,0x2c,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x61,0x29,0x0a,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,
0x20,0x72,0x6f,0x20,0x2b,0x20,0x28,0x72,0x64,0x20,0x2a,0x20,0x74,0x29,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,
0x31,0x20,0x3d,0x20,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x5f,0x33,0x37,0x37,0x20,0x3d,0x20,0x73,0x75,0x72,0x66,0x61,0x63,0x65,0x5f,0x6e,
0x6f,0x72,0x6d,0x61,0x6c,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x5f,0x33,0x38,0x34,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,
0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,
0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c,
0x20,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,
0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x35,
0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,
0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x20,0x2d,0x20,0x72,0x64,0x29,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x33,0x39,0x31,0x20,0x3d,0x20,
0x63,0x6c,0x61,0x6d,0x70,0x28,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,
0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,
0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x6c,0x6f,0x67,0x28,0x74,0x72,0x61,0x2e,0x78,
0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x34,0x30,0x31,0x20,0x3d,0x20,0x63,
0x6c,0x61,0x6d,0x70,0x28,0x64,0x6f,0x74,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,
0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,
0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,
0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,
0x37,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,
0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x29,0x2c,
0x20,0x5f,0x33,0x37,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,
0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x71,
0x72,0x74,0x28,0x70,0x6f,0x77,0x28,0x6d,0x69,0x78,0x28,0x6d,0x69,0x78,0x28,0x6d,
0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x30,0x39,0x39,0x39,0x39,
0x39,0x39,0x39,0x37,0x37,0x36,0x34,0x38,0x32,0x35,0x38,0x32,0x30,0x39,0x32,0x32,
0x38,0x35,0x31,0x35,0x36,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,
0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,
0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,
0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,
0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30,
0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,
0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,
0x61,0x6d,0x70,0x28,0x74,0x72,0x61,0x2e,0x79,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,
0x31,0x2e,0x30,0x29,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,
0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36,
0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x31,
0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,
0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30,
0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,
0x30,0x37,0x38,0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,
0x61,0x6d,0x70,0x28,0x74,0x72,0x61,0x2e,0x7a,0x20,0x2a,0x20,0x74,0x72,0x61,0x2e,
0x7a,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x2c,0x20,
0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,
0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,
0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,
0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,
0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,
0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x2c,
0x20,0x76,0x65,0x63,0x33,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x70,0x6f,0x77,0x28,
0x74,0x72,0x61,0x2e,0x77,0x2c,0x20,0x36,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,
0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x28,0x28,0x28,
0x76,0x65,0x63,0x33,0x28,0x31,0x30,0x2e,0x35,0x2c,0x20,0x37,0x2e,0x36,0x39,0x39,
0x39,0x39,0x39,0x38,0x30,0x39,0x32,0x36,0x35,0x31,0x33,0x36,0x37,0x31,0x38,0x37,
0x35,0x2c,0x20,0x34,0x2e,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x35,0x33,0x36,
0x37,0x34,0x33,0x31,0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x34,
0x30,0x31,0x29,0x20,0x2b,0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,
0x20,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,
0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,
0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,
0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x28,0x63,0x6c,0x61,0x6d,0x70,
0x28,0x66,0x6d,0x61,0x28,0x30,0x2e,0x35,0x2c,0x20,0x64,0x6f,0x74,0x28,0x76,0x65,
0x63,0x33,0x28,0x2d,0x30,0x2e,0x37,0x30,0x37,0x30,0x30,0x30,0x30,0x31,0x37,0x31,
0x36,0x36,0x31,0x33,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,
0x30,0x2c,0x20,0x30,0x2e,0x37,0x30,0x37,0x30,0x30,0x30,0x30,0x31,0x37,0x31,0x36,
0x36,0x31,0x33,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x5f,0x33,
0x37,0x37,0x29,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,
0x31,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x33,0x39,0x31,0x29,0x29,0x29,0x20,0x2b,
0x20,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x31,0x35,0x30,0x30,0x30,0x30,0x30,
0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,
0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,
0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,
0x30,0x2e,0x34,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,
0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x20,0x2a,0x20,0x28,0x66,
0x6d,0x61,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,
0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x5f,
0x33,0x37,0x37,0x2e,0x79,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,
0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,
0x35,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x30,0x2e,0x38,0x30,0x30,0x30,0x30,
0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,
0x31,0x32,0x35,0x2c,0x20,0x5f,0x33,0x39,0x31,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,
0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x76,
0x65,0x63,0x33,0x28,0x30,0x2e,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x37,0x35,0x2c,
0x20,0x30,0x2e,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x66,0x6d,0x61,0x28,0x30,0x2e,
0x39,0x34,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,
0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x5f,0x33,0x39,0x31,0x2c,0x20,
0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,
0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x29,
0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,
0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2b,0x20,0x64,0x6f,0x74,0x28,
0x72,0x64,0x2c,0x20,0x5f,0x33,0x37,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,
0x31,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x33,0x39,0x31,0x29,0x29,0x2c,0x20,
0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,
0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,
0x20,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,
0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,
0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x28,0x70,0x6f,0x77,0x28,0x63,
0x6c,0x61,0x6d,0x70,0x28,0x64,0x6f,0x74,0x28,0x5f,0x33,0x37,0x37,0x2c,0x20,0x5f,
0x33,0x38,0x34,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,
0x20,0x33,0x32,0x2e,0x30,0x29,0x20,0x2a,0x20,0x5f,0x34,0x30,0x31,0x29,0x20,0x2a,
0x20,0x66,0x6d,0x61,0x28,0x30,0x2e,0x39,0x35,0x39,0x39,0x39,0x39,0x39,0x37,0x38,
0x35,0x34,0x32,0x33,0x32,0x37,0x38,0x38,0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x2c,
0x20,0x70,0x6f,0x77,0x28,0x63,0x6c,0x61,0x6d,0x70,0x28,0x31,0x2e,0x30,0x20,0x2d,
0x20,0x64,0x6f,0x74,0x28,0x5f,0x33,0x38,0x34,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,
0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,
0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,0x35,0x37,0x37,
0x30,0x30,0x30,0x30,0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,
0x34,0x33,0x37,0x35,0x2c,0x20,0x2d,0x30,0x2e,0x35,0x37,0x37,0x30,0x30,0x30,0x30,
0x32,0x31,0x39,0x33,0x34,0x35,0x30,0x39,0x32,0x37,0x37,0x33,0x34,0x33,0x37,0x35,
0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x35,
0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,
0x32,0x35,0x29,0x29,0x20,0x2a,0x20,0x31,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x7d,
0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x31,0x20,0x3d,0x20,
0x28,0x28,0x65,0x79,0x65,0x20,0x2b,0x20,0x28,0x66,0x77,0x64,0x20,0x2a,0x20,0x31,
0x2e,0x37,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x32,0x33,0x31,0x36,0x32,0x38,0x34,
0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x72,0x69,0x67,
0x68,0x74,0x20,0x2a,0x20,0x70,0x6f,0x73,0x2e,0x78,0x29,0x29,0x20,0x2b,0x20,0x28,
0x75,0x70,0x20,0x2a,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x35,0x36,0x36,0x20,0x3d,0x20,0x6e,0x6f,0x72,
0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x35,0x36,0x31,0x20,0x2d,0x20,0x65,0x79,
0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,
0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x31,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,
0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,
0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,
0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,
0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
0x61,0x74,0x20,0x74,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x3b,0x0a,0x20,0x20,
0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,
0x3b,0x20,0x69,0x20,0x3c,0x20,0x39,0x36,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x0a,0x20,
0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,
0x33,0x20,0x5f,0x35,0x38,0x34,0x20,0x3d,0x20,0x5f,0x35,0x36,0x31,0x20,0x2b,0x20,
0x28,0x5f,0x35,0x36,0x36,0x20,0x2a,0x20,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,
0x20,0x5f,0x35,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,
0x6c,0x6f,0x61,0x74,0x20,0x5f,0x35,0x39,0x30,0x20,0x3d,0x20,0x64,0x5f,0x73,0x63,
0x65,0x6e,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,
0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,
0x28,0x5f,0x35,0x39,0x30,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,
0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,
0x3d,0x20,0x5f,0x35,0x38,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,
0x20,0x3d,0x20,0x5f,0x35,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,
0x5f,0x34,0x20,0x3d,0x20,0x5f,0x35,0x39,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x61,0x72,0x61,
0x6d,0x5f,0x35,0x20,0x3d,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x3b,0x0a,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,
0x5f,0x36,0x30,0x34,0x20,0x3d,0x20,0x63,0x61,0x6c,0x63,0x5f,0x63,0x6f,0x6c,0x6f,
0x72,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,
0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x2c,0x20,0x70,0x61,0x72,
0x61,0x6d,0x5f,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x34,0x31,0x20,0x3d,0x20,0x63,
0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x5f,0x36,0x34,0x31,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x36,0x30,0x34,0x2e,
0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,
0x36,0x34,0x31,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x30,0x34,0x2e,0x79,0x3b,0x0a,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x36,0x34,0x31,
0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x36,0x30,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,
0x20,0x5f,0x36,0x34,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,
0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36,0x31,0x38,
0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x36,0x32,0x30,0x20,
0x3d,0x20,0x5f,0x36,0x31,0x38,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x28,0x76,0x65,
0x63,0x33,0x28,0x30,0x2e,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,
0x36,0x30,0x37,0x37,0x30,0x33,0x32,0x30,0x38,0x39,0x32,0x33,0x33,0x33,0x39,0x38,
0x34,0x33,0x37,0x35,0x2c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,
0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,
0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x30,0x2e,0x30,0x29,0x20,
0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x36,
0x34,0x38,0x20,0x3d,0x20,0x5f,0x36,0x31,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x36,0x34,0x38,0x2e,0x78,0x20,0x3d,0x20,
0x5f,0x36,0x32,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x5f,0x36,0x34,0x38,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x32,
0x30,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x5f,0x36,0x34,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x36,0x32,0x30,0x2e,0x7a,
0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,
0x6c,0x6f,0x72,0x20,0x3d,0x20,0x5f,0x36,0x34,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,
0x20,0x28,0x74,0x20,0x3e,0x20,0x33,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x20,0x2b,0x3d,0x20,0x5f,
0x35,0x39,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,
0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,
0x72,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
static inline const sg_shader_desc* sdf_shader_desc(sg_backend backend) {
if (backend == SG_BACKEND_GLCORE) {
static sg_shader_desc desc;
static bool valid;
if (!valid) {
valid = true;
desc.attrs[0].name = "position";
desc.vs.source = (const char*)vs_source_glsl410;
desc.vs.entry = "main";
desc.vs.uniform_blocks[0].size = 16;
desc.vs.uniform_blocks[0].layout = SG_UNIFORMLAYOUT_STD140;
desc.vs.uniform_blocks[0].uniforms[0].name = "vs_params";
desc.vs.uniform_blocks[0].uniforms[0].type = SG_UNIFORMTYPE_FLOAT4;
desc.vs.uniform_blocks[0].uniforms[0].array_count = 1;
desc.fs.source = (const char*)fs_source_glsl410;
desc.fs.entry = "main";
desc.label = "sdf_shader";
}
return &desc;
}
return 0;
}