Generalize SDR white level handling into a color scale

This gives applications better control over how and when light levels are adjusted when working with HDR content and display.
main
Sam Lantinga 2024-02-05 23:20:43 -08:00
parent 82d89ff4fb
commit d4caef5b89
34 changed files with 3279 additions and 3234 deletions

View File

@ -1459,6 +1459,38 @@ extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer *renderer, Uint8
*/ */
extern DECLSPEC int SDLCALL SDL_GetRenderDrawColorFloat(SDL_Renderer *renderer, float *r, float *g, float *b, float *a); extern DECLSPEC int SDLCALL SDL_GetRenderDrawColorFloat(SDL_Renderer *renderer, float *r, float *g, float *b, float *a);
/**
* Set the color scale used for render operations.
*
* The color scale is an additional scale multiplied into the pixel color value while rendering. This can be used to adjust the brightness of colors during HDR rendering, or changing HDR video brightness when playing on an SDR display.
*
* The color scale does not affect the alpha channel, only the color brightness.
*
* \param renderer the rendering context
* \param scale the color scale value
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_GetRenderColorScale
*/
extern DECLSPEC int SDLCALL SDL_SetRenderColorScale(SDL_Renderer *renderer, float scale);
/**
* Get the color scale used for render operations.
*
* \param renderer the rendering context
* \param scale a pointer filled in with the current color scale value
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_SetRenderColorScale
*/
extern DECLSPEC int SDLCALL SDL_GetRenderColorScale(SDL_Renderer *renderer, float *scale);
/** /**
* Set the blend mode used for drawing operations (Fill and Line). * Set the blend mode used for drawing operations (Fill and Line).
* *

View File

@ -967,6 +967,8 @@ SDL3_0.0.0 {
SDL_GetSurfaceColorspace; SDL_GetSurfaceColorspace;
SDL_ConvertSurfaceFormatAndColorspace; SDL_ConvertSurfaceFormatAndColorspace;
SDL_CopyProperties; SDL_CopyProperties;
SDL_SetRenderColorScale;
SDL_GetRenderColorScale;
# extra symbols go here (don't modify this line) # extra symbols go here (don't modify this line)
local: *; local: *;
}; };

View File

@ -992,3 +992,5 @@
#define SDL_GetSurfaceColorspace SDL_GetSurfaceColorspace_REAL #define SDL_GetSurfaceColorspace SDL_GetSurfaceColorspace_REAL
#define SDL_ConvertSurfaceFormatAndColorspace SDL_ConvertSurfaceFormatAndColorspace_REAL #define SDL_ConvertSurfaceFormatAndColorspace SDL_ConvertSurfaceFormatAndColorspace_REAL
#define SDL_CopyProperties SDL_CopyProperties_REAL #define SDL_CopyProperties SDL_CopyProperties_REAL
#define SDL_SetRenderColorScale SDL_SetRenderColorScale_REAL
#define SDL_GetRenderColorScale SDL_GetRenderColorScale_REAL

View File

@ -1017,3 +1017,5 @@ SDL_DYNAPI_PROC(int,SDL_SetSurfaceColorspace,(SDL_Surface *a, SDL_Colorspace b),
SDL_DYNAPI_PROC(int,SDL_GetSurfaceColorspace,(SDL_Surface *a, SDL_Colorspace *b),(a,b),return) SDL_DYNAPI_PROC(int,SDL_GetSurfaceColorspace,(SDL_Surface *a, SDL_Colorspace *b),(a,b),return)
SDL_DYNAPI_PROC(SDL_Surface*,SDL_ConvertSurfaceFormatAndColorspace,(SDL_Surface *a, Uint32 b, SDL_Colorspace c),(a,b,c),return) SDL_DYNAPI_PROC(SDL_Surface*,SDL_ConvertSurfaceFormatAndColorspace,(SDL_Surface *a, Uint32 b, SDL_Colorspace c),(a,b,c),return)
SDL_DYNAPI_PROC(int,SDL_CopyProperties,(SDL_PropertiesID a, SDL_PropertiesID b),(a,b),return) SDL_DYNAPI_PROC(int,SDL_CopyProperties,(SDL_PropertiesID a, SDL_PropertiesID b),(a,b),return)
SDL_DYNAPI_PROC(int,SDL_SetRenderColorScale,(SDL_Renderer *a, float b),(a,b),return)
SDL_DYNAPI_PROC(int,SDL_GetRenderColorScale,(SDL_Renderer *a, float *b),(a,b),return)

View File

@ -196,72 +196,72 @@ static SDL_INLINE void DebugLogRenderCommands(const SDL_RenderCommand *cmd)
break; break;
case SDL_RENDERCMD_SETDRAWCOLOR: case SDL_RENDERCMD_SETDRAWCOLOR:
SDL_Log(" %u. set draw color (first=%u, r=%d, g=%d, b=%d, a=%d)", i++, SDL_Log(" %u. set draw color (first=%u, r=%d, g=%d, b=%d, a=%d, color_scale=%g)", i++,
(unsigned int) cmd->data.color.first, (unsigned int) cmd->data.color.first,
(int) cmd->data.color.r, (int) cmd->data.color.g, (int) cmd->data.color.r, (int) cmd->data.color.g,
(int) cmd->data.color.b, (int) cmd->data.color.a); (int) cmd->data.color.b, (int) cmd->data.color.a, cmd->data.color.color_scale);
break; break;
case SDL_RENDERCMD_CLEAR: case SDL_RENDERCMD_CLEAR:
SDL_Log(" %u. clear (first=%u, r=%d, g=%d, b=%d, a=%d)", i++, SDL_Log(" %u. clear (first=%u, r=%d, g=%d, b=%d, a=%d, color_scale=%g)", i++,
(unsigned int) cmd->data.color.first, (unsigned int) cmd->data.color.first,
(int) cmd->data.color.r, (int) cmd->data.color.g, (int) cmd->data.color.r, (int) cmd->data.color.g,
(int) cmd->data.color.b, (int) cmd->data.color.a); (int) cmd->data.color.b, (int) cmd->data.color.a, cmd->data.color.color_scale);
break; break;
case SDL_RENDERCMD_DRAW_POINTS: case SDL_RENDERCMD_DRAW_POINTS:
SDL_Log(" %u. draw points (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d)", i++, SDL_Log(" %u. draw points (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, color_scale=%g)", i++,
(unsigned int) cmd->data.draw.first, (unsigned int) cmd->data.draw.first,
(unsigned int) cmd->data.draw.count, (unsigned int) cmd->data.draw.count,
(int) cmd->data.draw.r, (int) cmd->data.draw.g, (int) cmd->data.draw.r, (int) cmd->data.draw.g,
(int) cmd->data.draw.b, (int) cmd->data.draw.a, (int) cmd->data.draw.b, (int) cmd->data.draw.a,
(int) cmd->data.draw.blend); (int) cmd->data.draw.blend, cmd->data.draw.color_scale);
break; break;
case SDL_RENDERCMD_DRAW_LINES: case SDL_RENDERCMD_DRAW_LINES:
SDL_Log(" %u. draw lines (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d)", i++, SDL_Log(" %u. draw lines (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, color_scale=%g)", i++,
(unsigned int) cmd->data.draw.first, (unsigned int) cmd->data.draw.first,
(unsigned int) cmd->data.draw.count, (unsigned int) cmd->data.draw.count,
(int) cmd->data.draw.r, (int) cmd->data.draw.g, (int) cmd->data.draw.r, (int) cmd->data.draw.g,
(int) cmd->data.draw.b, (int) cmd->data.draw.a, (int) cmd->data.draw.b, (int) cmd->data.draw.a,
(int) cmd->data.draw.blend); (int) cmd->data.draw.blend, cmd->data.draw.color_scale);
break; break;
case SDL_RENDERCMD_FILL_RECTS: case SDL_RENDERCMD_FILL_RECTS:
SDL_Log(" %u. fill rects (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d)", i++, SDL_Log(" %u. fill rects (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, color_scale=%g)", i++,
(unsigned int) cmd->data.draw.first, (unsigned int) cmd->data.draw.first,
(unsigned int) cmd->data.draw.count, (unsigned int) cmd->data.draw.count,
(int) cmd->data.draw.r, (int) cmd->data.draw.g, (int) cmd->data.draw.r, (int) cmd->data.draw.g,
(int) cmd->data.draw.b, (int) cmd->data.draw.a, (int) cmd->data.draw.b, (int) cmd->data.draw.a,
(int) cmd->data.draw.blend); (int) cmd->data.draw.blend, cmd->data.draw.color_scale);
break; break;
case SDL_RENDERCMD_COPY: case SDL_RENDERCMD_COPY:
SDL_Log(" %u. copy (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, tex=%p)", i++, SDL_Log(" %u. copy (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, color_scale=%g, tex=%p)", i++,
(unsigned int) cmd->data.draw.first, (unsigned int) cmd->data.draw.first,
(unsigned int) cmd->data.draw.count, (unsigned int) cmd->data.draw.count,
(int) cmd->data.draw.r, (int) cmd->data.draw.g, (int) cmd->data.draw.r, (int) cmd->data.draw.g,
(int) cmd->data.draw.b, (int) cmd->data.draw.a, (int) cmd->data.draw.b, (int) cmd->data.draw.a,
(int) cmd->data.draw.blend, cmd->data.draw.texture); (int) cmd->data.draw.blend, cmd->data.draw.color_scale, cmd->data.draw.texture);
break; break;
case SDL_RENDERCMD_COPY_EX: case SDL_RENDERCMD_COPY_EX:
SDL_Log(" %u. copyex (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, tex=%p)", i++, SDL_Log(" %u. copyex (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, color_scale=%g, tex=%p)", i++,
(unsigned int) cmd->data.draw.first, (unsigned int) cmd->data.draw.first,
(unsigned int) cmd->data.draw.count, (unsigned int) cmd->data.draw.count,
(int) cmd->data.draw.r, (int) cmd->data.draw.g, (int) cmd->data.draw.r, (int) cmd->data.draw.g,
(int) cmd->data.draw.b, (int) cmd->data.draw.a, (int) cmd->data.draw.b, (int) cmd->data.draw.a,
(int) cmd->data.draw.blend, cmd->data.draw.texture); (int) cmd->data.draw.blend, cmd->data.draw.color_scale, cmd->data.draw.texture);
break; break;
case SDL_RENDERCMD_GEOMETRY: case SDL_RENDERCMD_GEOMETRY:
SDL_Log(" %u. geometry (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, tex=%p)", i++, SDL_Log(" %u. geometry (first=%u, count=%u, r=%d, g=%d, b=%d, a=%d, blend=%d, color_scale=%g, tex=%p)", i++,
(unsigned int) cmd->data.draw.first, (unsigned int) cmd->data.draw.first,
(unsigned int) cmd->data.draw.count, (unsigned int) cmd->data.draw.count,
(int) cmd->data.draw.r, (int) cmd->data.draw.g, (int) cmd->data.draw.r, (int) cmd->data.draw.g,
(int) cmd->data.draw.b, (int) cmd->data.draw.a, (int) cmd->data.draw.b, (int) cmd->data.draw.a,
(int) cmd->data.draw.blend, cmd->data.draw.texture); (int) cmd->data.draw.blend, cmd->data.draw.color_scale, cmd->data.draw.texture);
break; break;
} }
@ -467,6 +467,7 @@ static int QueueCmdSetDrawColor(SDL_Renderer *renderer, SDL_FColor *color)
if (cmd) { if (cmd) {
cmd->command = SDL_RENDERCMD_SETDRAWCOLOR; cmd->command = SDL_RENDERCMD_SETDRAWCOLOR;
cmd->data.color.first = 0; /* render backend will fill this in. */ cmd->data.color.first = 0; /* render backend will fill this in. */
cmd->data.color.color_scale = renderer->color_scale;
cmd->data.color.color = *color; cmd->data.color.color = *color;
retval = renderer->QueueSetDrawColor(renderer, cmd); retval = renderer->QueueSetDrawColor(renderer, cmd);
if (retval < 0) { if (retval < 0) {
@ -489,6 +490,7 @@ static int QueueCmdClear(SDL_Renderer *renderer)
cmd->command = SDL_RENDERCMD_CLEAR; cmd->command = SDL_RENDERCMD_CLEAR;
cmd->data.color.first = 0; cmd->data.color.first = 0;
cmd->data.color.color_scale = renderer->color_scale;
cmd->data.color.color = renderer->color; cmd->data.color.color = renderer->color;
return 0; return 0;
} }
@ -527,6 +529,7 @@ static SDL_RenderCommand *PrepQueueCmdDraw(SDL_Renderer *renderer, const SDL_Ren
cmd->command = cmdtype; cmd->command = cmdtype;
cmd->data.draw.first = 0; /* render backend will fill this in. */ cmd->data.draw.first = 0; /* render backend will fill this in. */
cmd->data.draw.count = 0; /* render backend will fill this in. */ cmd->data.draw.count = 0; /* render backend will fill this in. */
cmd->data.draw.color_scale = renderer->color_scale;
cmd->data.draw.color = *color; cmd->data.draw.color = *color;
cmd->data.draw.blend = blendMode; cmd->data.draw.blend = blendMode;
cmd->data.draw.texture = texture; cmd->data.draw.texture = texture;
@ -953,6 +956,8 @@ SDL_Renderer *SDL_CreateRendererWithProperties(SDL_PropertiesID props)
renderer->line_method = SDL_GetRenderLineMethod(); renderer->line_method = SDL_GetRenderLineMethod();
renderer->color_scale = 1.0f;
if (SDL_GetWindowFlags(window) & (SDL_WINDOW_HIDDEN | SDL_WINDOW_MINIMIZED)) { if (SDL_GetWindowFlags(window) & (SDL_WINDOW_HIDDEN | SDL_WINDOW_MINIMIZED)) {
renderer->hidden = SDL_TRUE; renderer->hidden = SDL_TRUE;
} else { } else {
@ -2835,6 +2840,24 @@ int SDL_GetRenderDrawColorFloat(SDL_Renderer *renderer, float *r, float *g, floa
return 0; return 0;
} }
int SDL_SetRenderColorScale(SDL_Renderer *renderer, float scale)
{
CHECK_RENDERER_MAGIC(renderer, -1);
renderer->color_scale = scale;
return 0;
}
int SDL_GetRenderColorScale(SDL_Renderer *renderer, float *scale)
{
CHECK_RENDERER_MAGIC(renderer, -1);
if (scale) {
*scale = renderer->color_scale;
}
return 0;
}
int SDL_SetRenderDrawBlendMode(SDL_Renderer *renderer, SDL_BlendMode blendMode) int SDL_SetRenderDrawBlendMode(SDL_Renderer *renderer, SDL_BlendMode blendMode)
{ {
CHECK_RENDERER_MAGIC(renderer, -1); CHECK_RENDERER_MAGIC(renderer, -1);

View File

@ -127,6 +127,7 @@ typedef struct SDL_RenderCommand
{ {
size_t first; size_t first;
size_t count; size_t count;
float color_scale;
SDL_FColor color; SDL_FColor color;
SDL_BlendMode blend; SDL_BlendMode blend;
SDL_Texture *texture; SDL_Texture *texture;
@ -134,6 +135,7 @@ typedef struct SDL_RenderCommand
struct struct
{ {
size_t first; size_t first;
float color_scale;
SDL_FColor color; SDL_FColor color;
} color; } color;
} data; } data;
@ -251,6 +253,7 @@ struct SDL_Renderer
SDL_Colorspace output_colorspace; SDL_Colorspace output_colorspace;
float color_scale;
SDL_FColor color; /**< Color for drawing operations values */ SDL_FColor color; /**< Color for drawing operations values */
SDL_BlendMode blendMode; /**< The drawing blend mode */ SDL_BlendMode blendMode; /**< The drawing blend mode */

View File

@ -815,9 +815,9 @@ static int D3D_QueueSetViewport(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
static int D3D_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count) static int D3D_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count)
{ {
const DWORD color = D3DCOLOR_COLORVALUE(cmd->data.draw.color.r, const DWORD color = D3DCOLOR_COLORVALUE(cmd->data.draw.color.r * cmd->data.draw.color_scale,
cmd->data.draw.color.g, cmd->data.draw.color.g * cmd->data.draw.color_scale,
cmd->data.draw.color.b, cmd->data.draw.color.b * cmd->data.draw.color_scale,
cmd->data.draw.color.a); cmd->data.draw.color.a);
const size_t vertslen = count * sizeof(Vertex); const size_t vertslen = count * sizeof(Vertex);
Vertex *verts = (Vertex *)SDL_AllocateRenderVertices(renderer, vertslen, 0, &cmd->data.draw.first); Vertex *verts = (Vertex *)SDL_AllocateRenderVertices(renderer, vertslen, 0, &cmd->data.draw.first);
@ -847,6 +847,7 @@ static int D3D_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
int i; int i;
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
Vertex *verts = (Vertex *)SDL_AllocateRenderVertices(renderer, count * sizeof(Vertex), 0, &cmd->data.draw.first); Vertex *verts = (Vertex *)SDL_AllocateRenderVertices(renderer, count * sizeof(Vertex), 0, &cmd->data.draw.first);
const float color_scale = cmd->data.draw.color_scale;
if (!verts) { if (!verts) {
return -1; return -1;
@ -875,7 +876,7 @@ static int D3D_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
verts->x = xy_[0] * scale_x - 0.5f; verts->x = xy_[0] * scale_x - 0.5f;
verts->y = xy_[1] * scale_y - 0.5f; verts->y = xy_[1] * scale_y - 0.5f;
verts->z = 0.0f; verts->z = 0.0f;
verts->color = D3DCOLOR_COLORVALUE(col_->r, col_->g, col_->b, col_->a); verts->color = D3DCOLOR_COLORVALUE(col_->r * color_scale, col_->g * color_scale, col_->b * color_scale, col_->a);
if (texture) { if (texture) {
float *uv_ = (float *)((char *)uv + j * uv_stride); float *uv_ = (float *)((char *)uv + j * uv_stride);
@ -1205,7 +1206,10 @@ static int D3D_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
case SDL_RENDERCMD_CLEAR: case SDL_RENDERCMD_CLEAR:
{ {
const DWORD color = D3DCOLOR_COLORVALUE(cmd->data.color.color.r, cmd->data.color.color.g, cmd->data.color.color.b, cmd->data.color.color.a); const DWORD color = D3DCOLOR_COLORVALUE(cmd->data.color.color.r * cmd->data.color.color_scale,
cmd->data.color.color.g * cmd->data.color.color_scale,
cmd->data.color.color.b * cmd->data.color.color_scale,
cmd->data.color.color.a);
const SDL_Rect *viewport = &data->drawstate.viewport; const SDL_Rect *viewport = &data->drawstate.viewport;
const int backw = istarget ? renderer->target->w : data->pparams.BackBufferWidth; const int backw = istarget ? renderer->target->w : data->pparams.BackBufferWidth;
const int backh = istarget ? renderer->target->h : data->pparams.BackBufferHeight; const int backh = istarget ? renderer->target->h : data->pparams.BackBufferHeight;

View File

@ -8,10 +8,10 @@
// cbuffer Constants // cbuffer Constants
// { // {
// //
// float scRGB_output; // Offset: 0 Size: 4 // float scRGB_output; // Offset: 0 Size: 4 [unused]
// float SDR_whitelevel; // Offset: 4 Size: 4 // float color_scale; // Offset: 4 Size: 4
// float HDR_whitelevel; // Offset: 8 Size: 4 [unused] // float unused1; // Offset: 8 Size: 4 [unused]
// float maxCLL; // Offset: 12 Size: 4 [unused] // float unused2; // Offset: 12 Size: 4 [unused]
// float4 Yoffset; // Offset: 16 Size: 16 [unused] // float4 Yoffset; // Offset: 16 Size: 16 [unused]
// float4 Rcoeff; // Offset: 32 Size: 16 [unused] // float4 Rcoeff; // Offset: 32 Size: 16 [unused]
// float4 Gcoeff; // Offset: 48 Size: 16 [unused] // float4 Gcoeff; // Offset: 48 Size: 16 [unused]
@ -54,239 +54,199 @@
// Level9 shader bytecode: // Level9 shader bytecode:
// //
ps_2_0 ps_2_0
def c1, 0.0125000002, 1, 0, 0
dcl t1 dcl t1
mul r0.w, c0.x, c0.x mul r0.xyz, t1, c0.y
mov r0.x, c1.x mov r0.w, t1.w
mul r0.x, r0.x, c0.y
cmp r0.xyz, -r0.w, c1.y, r0.x
mov r0.w, c1.y
mul r0, r0, t1
mov oC0, r0 mov oC0, r0
// approximately 7 instruction slots used // approximately 3 instruction slots used
ps_4_0 ps_4_0
dcl_constantbuffer CB0[1], immediateIndexed dcl_constantbuffer CB0[1], immediateIndexed
dcl_input_ps linear v2.xyzw dcl_input_ps linear v2.xyzw
dcl_output o0.xyzw dcl_output o0.xyzw
dcl_temps 1 dcl_temps 1
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x mov r0.x, cb0[0].y
mul r0.y, cb0[0].y, l(0.012500)
movc r0.xyz, r0.xxxx, r0.yyyy, l(1.000000,1.000000,1.000000,0)
mov r0.w, l(1.000000) mov r0.w, l(1.000000)
mul o0.xyzw, r0.xyzw, v2.xyzw mul o0.xyzw, r0.xxxw, v2.xyzw
ret ret
// Approximately 6 instruction slots used // Approximately 4 instruction slots used
#endif #endif
const BYTE g_main[] = const BYTE g_main[] =
{ {
68, 88, 66, 67, 132, 13, 68, 88, 66, 67, 76, 154,
165, 35, 17, 157, 163, 217, 233, 103, 201, 50, 167, 173,
158, 71, 117, 171, 46, 252, 112, 159, 134, 20, 133, 254,
9, 215, 1, 0, 0, 0, 166, 35, 1, 0, 0, 0,
224, 4, 0, 0, 6, 0, 24, 4, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 0, 0,
4, 1, 0, 0, 244, 1, 172, 0, 0, 0, 56, 1,
0, 0, 112, 2, 0, 0, 0, 0, 180, 1, 0, 0,
56, 4, 0, 0, 172, 4, 112, 3, 0, 0, 228, 3,
0, 0, 65, 111, 110, 57, 0, 0, 65, 111, 110, 57,
196, 0, 0, 0, 196, 0, 108, 0, 0, 0, 108, 0,
0, 0, 0, 2, 255, 255, 0, 0, 0, 2, 255, 255,
148, 0, 0, 0, 48, 0, 60, 0, 0, 0, 48, 0,
0, 0, 1, 0, 36, 0, 0, 0, 1, 0, 36, 0,
0, 0, 48, 0, 0, 0, 0, 0, 48, 0, 0, 0,
48, 0, 0, 0, 36, 0, 48, 0, 0, 0, 36, 0,
0, 0, 48, 0, 0, 0, 0, 0, 48, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2,
255, 255, 81, 0, 0, 5, 255, 255, 31, 0, 0, 2,
1, 0, 15, 160, 205, 204,
76, 60, 0, 0, 128, 63,
0, 0, 0, 0, 0, 0,
0, 0, 31, 0, 0, 2,
0, 0, 0, 128, 1, 0, 0, 0, 0, 128, 1, 0,
15, 176, 5, 0, 0, 3, 15, 176, 5, 0, 0, 3,
0, 0, 8, 128, 0, 0, 0, 0, 7, 128, 1, 0,
0, 160, 0, 0, 0, 160, 228, 176, 0, 0, 85, 160,
1, 0, 0, 2, 0, 0, 1, 0, 0, 2, 0, 0,
1, 128, 1, 0, 0, 160, 8, 128, 1, 0, 255, 176,
5, 0, 0, 3, 0, 0, 1, 0, 0, 2, 0, 8,
1, 128, 0, 0, 0, 128,
0, 0, 85, 160, 88, 0,
0, 4, 0, 0, 7, 128,
0, 0, 255, 129, 1, 0,
85, 160, 0, 0, 0, 128,
1, 0, 0, 2, 0, 0,
8, 128, 1, 0, 85, 160,
5, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 128, 15, 128, 0, 0, 228, 128,
1, 0, 228, 176, 1, 0, 255, 255, 0, 0, 83, 72,
0, 2, 0, 8, 15, 128, 68, 82, 132, 0, 0, 0,
0, 0, 228, 128, 255, 255, 64, 0, 0, 0, 33, 0,
0, 0, 83, 72, 68, 82, 0, 0, 89, 0, 0, 4,
232, 0, 0, 0, 64, 0, 70, 142, 32, 0, 0, 0,
0, 0, 58, 0, 0, 0, 0, 0, 1, 0, 0, 0,
89, 0, 0, 4, 70, 142, 98, 16, 0, 3, 242, 16,
32, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0,
1, 0, 0, 0, 98, 16, 101, 0, 0, 3, 242, 32,
0, 3, 242, 16, 16, 0,
2, 0, 0, 0, 101, 0,
0, 3, 242, 32, 16, 0,
0, 0, 0, 0, 104, 0,
0, 2, 1, 0, 0, 0,
57, 0, 0, 11, 18, 0,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 0, 104, 0, 0, 2, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 6,
0, 0, 0, 0, 0, 0, 18, 0, 16, 0, 0, 0,
0, 0, 10, 128, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 8,
34, 0, 16, 0, 0, 0,
0, 0, 26, 128, 32, 0, 0, 0, 26, 128, 32, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 5,
130, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0, 0, 0, 1, 64, 0, 0,
205, 204, 76, 60, 55, 0, 0, 0, 128, 63, 56, 0,
0, 12, 114, 0, 16, 0, 0, 7, 242, 32, 16, 0,
0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 12,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
86, 5, 16, 0, 0, 0, 70, 30, 16, 0, 2, 0,
0, 0, 2, 64, 0, 0, 0, 0, 62, 0, 0, 1,
0, 0, 128, 63, 0, 0, 83, 84, 65, 84, 116, 0,
128, 63, 0, 0, 128, 63, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 54, 0,
0, 5, 130, 0, 16, 0,
0, 0, 0, 0, 1, 64,
0, 0, 0, 0, 128, 63,
56, 0, 0, 7, 242, 32,
16, 0, 0, 0, 0, 0,
70, 14, 16, 0, 0, 0,
0, 0, 70, 30, 16, 0,
2, 0, 0, 0, 62, 0,
0, 1, 83, 84, 65, 84,
116, 0, 0, 0, 6, 0,
0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 2, 0,
0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
82, 68, 69, 70, 192, 1,
0, 0, 1, 0, 0, 0,
72, 0, 0, 0, 1, 0,
0, 0, 28, 0, 0, 0,
0, 4, 255, 255, 0, 1,
0, 0, 149, 1, 0, 0,
60, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 67, 111, 110, 115,
116, 97, 110, 116, 115, 0,
171, 171, 60, 0, 0, 0,
8, 0, 0, 0, 96, 0,
0, 0, 80, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 32, 1, 0, 0,
0, 0, 0, 0, 4, 0,
0, 0, 2, 0, 0, 0,
48, 1, 0, 0, 0, 0,
0, 0, 64, 1, 0, 0,
4, 0, 0, 0, 4, 0,
0, 0, 2, 0, 0, 0,
48, 1, 0, 0, 0, 0,
0, 0, 79, 1, 0, 0,
8, 0, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0,
48, 1, 0, 0, 0, 0,
0, 0, 94, 1, 0, 0,
12, 0, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0,
48, 1, 0, 0, 0, 0,
0, 0, 101, 1, 0, 0,
16, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0,
112, 1, 0, 0, 0, 0,
0, 0, 128, 1, 0, 0,
32, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0,
112, 1, 0, 0, 0, 0,
0, 0, 135, 1, 0, 0,
48, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0,
112, 1, 0, 0, 0, 0,
0, 0, 142, 1, 0, 0,
64, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0,
112, 1, 0, 0, 0, 0,
0, 0, 115, 99, 82, 71,
66, 95, 111, 117, 116, 112,
117, 116, 0, 171, 171, 171,
0, 0, 3, 0, 1, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 83, 68,
82, 95, 119, 104, 105, 116,
101, 108, 101, 118, 101, 108,
0, 72, 68, 82, 95, 119,
104, 105, 116, 101, 108, 101,
118, 101, 108, 0, 109, 97,
120, 67, 76, 76, 0, 89,
111, 102, 102, 115, 101, 116,
0, 171, 171, 171, 1, 0,
3, 0, 1, 0, 4, 0,
0, 0, 0, 0, 0, 0,
0, 0, 82, 99, 111, 101,
102, 102, 0, 71, 99, 111,
101, 102, 102, 0, 66, 99,
111, 101, 102, 102, 0, 77,
105, 99, 114, 111, 115, 111,
102, 116, 32, 40, 82, 41,
32, 72, 76, 83, 76, 32,
83, 104, 97, 100, 101, 114,
32, 67, 111, 109, 112, 105,
108, 101, 114, 32, 49, 48,
46, 49, 0, 171, 171, 171,
73, 83, 71, 78, 108, 0,
0, 0, 3, 0, 0, 0,
8, 0, 0, 0, 80, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
15, 0, 0, 0, 92, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 1, 0, 0, 0,
3, 0, 0, 0, 101, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
15, 15, 0, 0, 83, 86, 1, 0, 0, 0, 0, 0,
95, 80, 79, 83, 73, 84,
73, 79, 78, 0, 84, 69,
88, 67, 79, 79, 82, 68,
0, 67, 79, 76, 79, 82,
0, 171, 79, 83, 71, 78,
44, 0, 0, 0, 1, 0,
0, 0, 8, 0, 0, 0,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83, 86, 95, 84, 65, 82, 0, 0, 0, 0, 0, 0,
71, 69, 84, 0, 171, 171 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 68,
69, 70, 180, 1, 0, 0,
1, 0, 0, 0, 72, 0,
0, 0, 1, 0, 0, 0,
28, 0, 0, 0, 0, 4,
255, 255, 0, 1, 0, 0,
137, 1, 0, 0, 60, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
67, 111, 110, 115, 116, 97,
110, 116, 115, 0, 171, 171,
60, 0, 0, 0, 8, 0,
0, 0, 96, 0, 0, 0,
80, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
32, 1, 0, 0, 0, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 48, 1,
0, 0, 0, 0, 0, 0,
64, 1, 0, 0, 4, 0,
0, 0, 4, 0, 0, 0,
2, 0, 0, 0, 48, 1,
0, 0, 0, 0, 0, 0,
76, 1, 0, 0, 8, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 48, 1,
0, 0, 0, 0, 0, 0,
84, 1, 0, 0, 12, 0,
0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 48, 1,
0, 0, 0, 0, 0, 0,
92, 1, 0, 0, 16, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 100, 1,
0, 0, 0, 0, 0, 0,
116, 1, 0, 0, 32, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 100, 1,
0, 0, 0, 0, 0, 0,
123, 1, 0, 0, 48, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 100, 1,
0, 0, 0, 0, 0, 0,
130, 1, 0, 0, 64, 0,
0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 100, 1,
0, 0, 0, 0, 0, 0,
115, 99, 82, 71, 66, 95,
111, 117, 116, 112, 117, 116,
0, 171, 171, 171, 0, 0,
3, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 99, 111, 108, 111,
114, 95, 115, 99, 97, 108,
101, 0, 117, 110, 117, 115,
101, 100, 49, 0, 117, 110,
117, 115, 101, 100, 50, 0,
89, 111, 102, 102, 115, 101,
116, 0, 1, 0, 3, 0,
1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0,
82, 99, 111, 101, 102, 102,
0, 71, 99, 111, 101, 102,
102, 0, 66, 99, 111, 101,
102, 102, 0, 77, 105, 99,
114, 111, 115, 111, 102, 116,
32, 40, 82, 41, 32, 72,
76, 83, 76, 32, 83, 104,
97, 100, 101, 114, 32, 67,
111, 109, 112, 105, 108, 101,
114, 32, 49, 48, 46, 49,
0, 171, 171, 171, 73, 83,
71, 78, 108, 0, 0, 0,
3, 0, 0, 0, 8, 0,
0, 0, 80, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 15, 0,
0, 0, 92, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
1, 0, 0, 0, 3, 0,
0, 0, 101, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
2, 0, 0, 0, 15, 15,
0, 0, 83, 86, 95, 80,
79, 83, 73, 84, 73, 79,
78, 0, 84, 69, 88, 67,
79, 79, 82, 68, 0, 67,
79, 76, 79, 82, 0, 171,
79, 83, 71, 78, 44, 0,
0, 0, 1, 0, 0, 0,
8, 0, 0, 0, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
15, 0, 0, 0, 83, 86,
95, 84, 65, 82, 71, 69,
84, 0, 171, 171
}; };

View File

@ -8,9 +8,9 @@ struct PixelShaderInput
cbuffer Constants : register(b0) cbuffer Constants : register(b0)
{ {
float scRGB_output; float scRGB_output;
float SDR_whitelevel; float color_scale;
float HDR_whitelevel; float unused1;
float maxCLL; float unused2;
float4 Yoffset; float4 Yoffset;
float4 Rcoeff; float4 Rcoeff;
@ -50,11 +50,12 @@ float sRGBfromLinear(float v)
float4 GetOutputColor(float4 rgba) float4 GetOutputColor(float4 rgba)
{ {
if (scRGB_output) { float4 output;
rgba.rgb = scRGBfromNits(rgba.rgb * SDR_whitelevel);
}
return rgba; output.rgb = rgba.rgb * color_scale;
output.a = rgba.a;
return output;
} }
float4 GetOutputColorFromSRGB(float3 rgb) float4 GetOutputColorFromSRGB(float3 rgb)
@ -62,14 +63,30 @@ float4 GetOutputColorFromSRGB(float3 rgb)
float4 output; float4 output;
if (scRGB_output) { if (scRGB_output) {
output.r = sRGBtoLinear(rgb.r); rgb.r = sRGBtoLinear(rgb.r);
output.g = sRGBtoLinear(rgb.g); rgb.g = sRGBtoLinear(rgb.g);
output.b = sRGBtoLinear(rgb.b); rgb.b = sRGBtoLinear(rgb.b);
rgb = scRGBfromNits(rgb * SDR_whitelevel);
} else {
output.rgb = rgb.rgb;
} }
output.rgb = rgb * color_scale;
output.a = 1.0; output.a = 1.0;
return output; return output;
} }
float4 GetOutputColorFromSCRGB(float3 rgb)
{
float4 output;
output.rgb = rgb * color_scale;
output.a = 1.0;
if (!scRGB_output) {
output.r = sRGBfromLinear(output.r);
output.g = sRGBfromLinear(output.g);
output.b = sRGBfromLinear(output.b);
output.rgb = clamp(output.rgb, 0.0, 1.0);
}
return output;
}

View File

@ -9,9 +9,9 @@
// { // {
// //
// float scRGB_output; // Offset: 0 Size: 4 // float scRGB_output; // Offset: 0 Size: 4
// float SDR_whitelevel; // Offset: 4 Size: 4 [unused] // float color_scale; // Offset: 4 Size: 4
// float HDR_whitelevel; // Offset: 8 Size: 4 // float unused1; // Offset: 8 Size: 4 [unused]
// float maxCLL; // Offset: 12 Size: 4 // float unused2; // Offset: 12 Size: 4 [unused]
// float4 Yoffset; // Offset: 16 Size: 16 // float4 Yoffset; // Offset: 16 Size: 16
// float4 Rcoeff; // Offset: 32 Size: 16 // float4 Rcoeff; // Offset: 32 Size: 16
// float4 Gcoeff; // Offset: 48 Size: 16 // float4 Gcoeff; // Offset: 48 Size: 16
@ -76,8 +76,7 @@ mul r0.xyz, r0.xyzx, l(10000.000000, 10000.000000, 10000.000000, 0.000000)
dp3 r1.x, l(1.660496, -0.587656, -0.072840, 0.000000), r0.xyzx dp3 r1.x, l(1.660496, -0.587656, -0.072840, 0.000000), r0.xyzx
dp3 r1.y, l(-0.124547, 1.132895, -0.008348, 0.000000), r0.xyzx dp3 r1.y, l(-0.124547, 1.132895, -0.008348, 0.000000), r0.xyzx
dp3 r1.z, l(-0.018154, -0.100597, 1.118751, 0.000000), r0.xyzx dp3 r1.z, l(-0.018154, -0.100597, 1.118751, 0.000000), r0.xyzx
div r0.xyz, r1.xyzx, cb0[0].wwww mul r0.xyz, r1.xyzx, cb0[0].yyyy
mul r0.xyz, r0.xyzx, cb0[0].zzzz
mul r1.xyz, r0.xyzx, l(0.012500, 0.012500, 0.012500, 0.000000) mul r1.xyz, r0.xyzx, l(0.012500, 0.012500, 0.012500, 0.000000)
ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x
if_z r0.w if_z r0.w
@ -92,26 +91,26 @@ endif
mov r1.w, l(1.000000) mov r1.w, l(1.000000)
mul o0.xyzw, r1.xyzw, v2.xyzw mul o0.xyzw, r1.xyzw, v2.xyzw
ret ret
// Approximately 36 instruction slots used // Approximately 35 instruction slots used
#endif #endif
const BYTE g_main[] = const BYTE g_main[] =
{ {
68, 88, 66, 67, 39, 74, 68, 88, 66, 67, 95, 217,
221, 114, 82, 86, 93, 130, 108, 181, 38, 184, 86, 20,
9, 184, 52, 173, 245, 104, 51, 33, 123, 248, 135, 60,
96, 202, 1, 0, 0, 0, 0, 250, 1, 0, 0, 0,
184, 9, 0, 0, 5, 0, 144, 9, 0, 0, 5, 0,
0, 0, 52, 0, 0, 0, 0, 0, 52, 0, 0, 0,
80, 3, 0, 0, 196, 3, 72, 3, 0, 0, 188, 3,
0, 0, 248, 3, 0, 0, 0, 0, 240, 3, 0, 0,
28, 9, 0, 0, 82, 68, 244, 8, 0, 0, 82, 68,
69, 70, 20, 3, 0, 0, 69, 70, 12, 3, 0, 0,
1, 0, 0, 0, 236, 0, 1, 0, 0, 0, 236, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
60, 0, 0, 0, 0, 5, 60, 0, 0, 0, 0, 5,
255, 255, 0, 1, 0, 0, 255, 255, 0, 1, 0, 0,
233, 2, 0, 0, 82, 68, 225, 2, 0, 0, 82, 68,
49, 49, 60, 0, 0, 0, 49, 49, 60, 0, 0, 0,
24, 0, 0, 0, 32, 0, 24, 0, 0, 0, 32, 0,
0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 0,
@ -159,47 +158,47 @@ const BYTE g_main[] =
255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
124, 2, 0, 0, 4, 0, 124, 2, 0, 0, 4, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 88, 2, 2, 0, 0, 0, 88, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 139, 2, 0, 0, 0, 0, 136, 2,
0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 0, 0,
4, 0, 0, 0, 2, 0, 4, 0, 0, 0, 0, 0,
0, 0, 88, 2, 0, 0, 0, 0, 88, 2, 0, 0,
0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0,
0, 0, 154, 2, 0, 0, 0, 0, 144, 2, 0, 0,
12, 0, 0, 0, 4, 0, 12, 0, 0, 0, 4, 0,
0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
88, 2, 0, 0, 0, 0, 88, 2, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
161, 2, 0, 0, 16, 0, 152, 2, 0, 0, 16, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 176, 2, 2, 0, 0, 0, 168, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 212, 2, 0, 0, 0, 0, 204, 2,
0, 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 0,
16, 0, 0, 0, 2, 0, 16, 0, 0, 0, 2, 0,
0, 0, 176, 2, 0, 0, 0, 0, 168, 2, 0, 0,
0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0,
0, 0, 219, 2, 0, 0, 0, 0, 211, 2, 0, 0,
48, 0, 0, 0, 16, 0, 48, 0, 0, 0, 16, 0,
0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
176, 2, 0, 0, 0, 0, 168, 2, 0, 0, 0, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255,
255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
226, 2, 0, 0, 64, 0, 218, 2, 0, 0, 64, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 176, 2, 2, 0, 0, 0, 168, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0,
0, 0, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255,
@ -213,303 +212,296 @@ const BYTE g_main[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 81, 2, 0, 0, 0, 0, 81, 2, 0, 0,
83, 68, 82, 95, 119, 104, 99, 111, 108, 111, 114, 95,
105, 116, 101, 108, 101, 118, 115, 99, 97, 108, 101, 0,
101, 108, 0, 72, 68, 82, 117, 110, 117, 115, 101, 100,
95, 119, 104, 105, 116, 101, 49, 0, 117, 110, 117, 115,
108, 101, 118, 101, 108, 0, 101, 100, 50, 0, 89, 111,
109, 97, 120, 67, 76, 76, 102, 102, 115, 101, 116, 0,
0, 89, 111, 102, 102, 115, 102, 108, 111, 97, 116, 52,
101, 116, 0, 102, 108, 111, 0, 171, 1, 0, 3, 0,
97, 116, 52, 0, 1, 0, 1, 0, 4, 0, 0, 0,
3, 0, 1, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 160, 2,
0, 0, 82, 99, 111, 101,
102, 102, 0, 71, 99, 111,
101, 102, 102, 0, 66, 99,
111, 101, 102, 102, 0, 77,
105, 99, 114, 111, 115, 111,
102, 116, 32, 40, 82, 41,
32, 72, 76, 83, 76, 32,
83, 104, 97, 100, 101, 114,
32, 67, 111, 109, 112, 105,
108, 101, 114, 32, 49, 48,
46, 49, 0, 171, 171, 171,
73, 83, 71, 78, 108, 0,
0, 0, 3, 0, 0, 0,
8, 0, 0, 0, 80, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
169, 2, 0, 0, 82, 99, 1, 0, 0, 0, 3, 0,
111, 101, 102, 102, 0, 71, 0, 0, 0, 0, 0, 0,
99, 111, 101, 102, 102, 0, 15, 0, 0, 0, 92, 0,
66, 99, 111, 101, 102, 102, 0, 0, 0, 0, 0, 0,
0, 77, 105, 99, 114, 111, 0, 0, 0, 0, 3, 0,
115, 111, 102, 116, 32, 40,
82, 41, 32, 72, 76, 83,
76, 32, 83, 104, 97, 100,
101, 114, 32, 67, 111, 109,
112, 105, 108, 101, 114, 32,
49, 48, 46, 49, 0, 171,
171, 171, 73, 83, 71, 78,
108, 0, 0, 0, 3, 0,
0, 0, 8, 0, 0, 0,
80, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
3, 3, 0, 0, 101, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0,
15, 15, 0, 0, 83, 86,
95, 80, 79, 83, 73, 84,
73, 79, 78, 0, 84, 69,
88, 67, 79, 79, 82, 68,
0, 67, 79, 76, 79, 82,
0, 171, 79, 83, 71, 78,
44, 0, 0, 0, 1, 0,
0, 0, 8, 0, 0, 0,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0,
92, 0, 0, 0, 0, 0, 83, 86, 95, 84, 65, 82,
0, 0, 0, 0, 0, 0, 71, 69, 84, 0, 171, 171,
3, 0, 0, 0, 1, 0, 83, 72, 69, 88, 252, 4,
0, 0, 3, 3, 0, 0, 0, 0, 80, 0, 0, 0,
101, 0, 0, 0, 0, 0, 63, 1, 0, 0, 106, 8,
0, 0, 0, 0, 0, 0, 0, 1, 89, 0, 0, 4,
3, 0, 0, 0, 2, 0, 70, 142, 32, 0, 0, 0,
0, 0, 15, 15, 0, 0, 0, 0, 5, 0, 0, 0,
83, 86, 95, 80, 79, 83, 90, 0, 0, 3, 0, 96,
73, 84, 73, 79, 78, 0, 16, 0, 0, 0, 0, 0,
84, 69, 88, 67, 79, 79,
82, 68, 0, 67, 79, 76,
79, 82, 0, 171, 79, 83,
71, 78, 44, 0, 0, 0,
1, 0, 0, 0, 8, 0,
0, 0, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 15, 0,
0, 0, 83, 86, 95, 84,
65, 82, 71, 69, 84, 0,
171, 171, 83, 72, 69, 88,
28, 5, 0, 0, 80, 0,
0, 0, 71, 1, 0, 0,
106, 8, 0, 1, 89, 0,
0, 4, 70, 142, 32, 0,
0, 0, 0, 0, 5, 0,
0, 0, 90, 0, 0, 3,
0, 96, 16, 0, 0, 0,
0, 0, 88, 24, 0, 4,
0, 112, 16, 0, 0, 0,
0, 0, 85, 85, 0, 0,
88, 24, 0, 4, 0, 112, 88, 24, 0, 4, 0, 112,
16, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0,
85, 85, 0, 0, 98, 16, 85, 85, 0, 0, 88, 24,
0, 3, 50, 16, 16, 0, 0, 4, 0, 112, 16, 0,
1, 0, 0, 0, 98, 16, 1, 0, 0, 0, 85, 85,
0, 3, 242, 16, 16, 0, 0, 0, 98, 16, 0, 3,
2, 0, 0, 0, 101, 0, 50, 16, 16, 0, 1, 0,
0, 3, 242, 32, 16, 0, 0, 0, 98, 16, 0, 3,
0, 0, 0, 0, 104, 0, 242, 16, 16, 0, 2, 0,
0, 2, 4, 0, 0, 0, 0, 0, 101, 0, 0, 3,
242, 32, 16, 0, 0, 0,
0, 0, 104, 0, 0, 2,
4, 0, 0, 0, 69, 0,
0, 139, 194, 0, 0, 128,
67, 85, 21, 0, 18, 0,
16, 0, 0, 0, 0, 0,
70, 16, 16, 0, 1, 0,
0, 0, 70, 126, 16, 0,
0, 0, 0, 0, 0, 96,
16, 0, 0, 0, 0, 0,
69, 0, 0, 139, 194, 0, 69, 0, 0, 139, 194, 0,
0, 128, 67, 85, 21, 0, 0, 128, 67, 85, 21, 0,
18, 0, 16, 0, 0, 0, 98, 0, 16, 0, 0, 0,
0, 0, 70, 16, 16, 0, 0, 0, 70, 16, 16, 0,
1, 0, 0, 0, 70, 126, 1, 0, 0, 0, 38, 125,
16, 0, 0, 0, 0, 0, 16, 0, 1, 0, 0, 0,
0, 96, 16, 0, 0, 0, 0, 96, 16, 0, 0, 0,
0, 0, 69, 0, 0, 139, 0, 0, 0, 0, 0, 8,
194, 0, 0, 128, 67, 85, 114, 0, 16, 0, 0, 0,
21, 0, 98, 0, 16, 0,
0, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0,
38, 125, 16, 0, 1, 0,
0, 0, 0, 96, 16, 0,
0, 0, 0, 0, 0, 0,
0, 8, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
70, 130, 32, 0, 0, 0,
0, 0, 1, 0, 0, 0,
16, 0, 0, 8, 18, 0,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 70, 130, 32, 0,
0, 0, 0, 0, 2, 0,
0, 0, 16, 0, 0, 8,
34, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 70, 130, 0, 0, 0, 0, 70, 130,
32, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
3, 0, 0, 0, 16, 0, 1, 0, 0, 0, 16, 0,
0, 8, 66, 0, 16, 0, 0, 8, 18, 0, 16, 0,
1, 0, 0, 0, 70, 2, 1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 130, 32, 0, 0, 0, 70, 130, 32, 0, 0, 0,
0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0,
47, 0, 0, 6, 114, 0, 16, 0, 0, 8, 34, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 128, 129, 0,
0, 0, 1, 0, 0, 0,
56, 0, 0, 10, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
172, 205, 79, 60, 172, 205,
79, 60, 172, 205, 79, 60,
0, 0, 0, 0, 25, 0,
0, 5, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
0, 0, 0, 10, 114, 0,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0, 70, 2, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0, 0, 0, 70, 130, 32, 0,
0, 0, 86, 191, 0, 0, 0, 0, 0, 0, 3, 0,
86, 191, 0, 0, 86, 191, 0, 0, 16, 0, 0, 8,
0, 0, 0, 0, 52, 0, 66, 0, 16, 0, 1, 0,
0, 10, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 50, 0, 0, 16,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 128,
65, 0, 0, 0, 0, 0,
0, 0, 2, 64, 0, 0,
0, 128, 149, 65, 0, 128,
149, 65, 0, 128, 149, 65,
0, 0, 0, 0, 2, 64,
0, 0, 0, 208, 150, 65,
0, 208, 150, 65, 0, 208,
150, 65, 0, 0, 0, 0,
14, 0, 0, 7, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 70, 130,
32, 0, 0, 0, 0, 0,
4, 0, 0, 0, 47, 0,
0, 6, 114, 0, 16, 0, 0, 6, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2, 0, 0, 0, 0, 70, 2,
16, 128, 129, 0, 0, 0, 16, 128, 129, 0, 0, 0,
0, 0, 0, 0, 56, 0, 1, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0, 0, 10, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2, 0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 107, 224, 2, 64, 0, 0, 172, 205,
200, 64, 107, 224, 200, 64, 79, 60, 172, 205, 79, 60,
107, 224, 200, 64, 0, 0, 172, 205, 79, 60, 0, 0,
0, 0, 25, 0, 0, 5, 0, 0, 25, 0, 0, 5,
114, 0, 16, 0, 0, 0, 114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0,
0, 10, 114, 0, 16, 0, 0, 10, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2, 1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 64, 2, 64, 0, 0, 0, 0,
28, 70, 0, 64, 28, 70, 86, 191, 0, 0, 86, 191,
0, 64, 28, 70, 0, 0, 0, 0, 86, 191, 0, 0,
0, 0, 16, 0, 0, 10, 0, 0, 52, 0, 0, 10,
18, 0, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
34, 139, 212, 63, 160, 112,
22, 191, 35, 45, 149, 189,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
16, 0, 0, 10, 34, 0,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 127, 18,
255, 189, 180, 2, 145, 63,
13, 198, 8, 188, 0, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 16, 0,
0, 10, 66, 0, 16, 0,
1, 0, 0, 0, 2, 64,
0, 0, 179, 183, 148, 188,
205, 5, 206, 189, 60, 51,
143, 63, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 14, 0, 0, 8,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 246, 143,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 56, 0,
0, 8, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
166, 138, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
56, 0, 0, 10, 114, 0,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
205, 204, 76, 60, 205, 204,
76, 60, 205, 204, 76, 60,
0, 0, 0, 0, 57, 0,
0, 11, 130, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
10, 128, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
31, 0, 0, 3, 58, 0,
16, 0, 0, 0, 0, 0,
29, 0, 0, 10, 114, 0,
16, 0, 2, 0, 0, 0,
2, 64, 0, 0, 209, 60,
128, 62, 209, 60, 128, 62,
209, 60, 128, 62, 0, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 66, 96,
37, 62, 66, 96, 37, 62,
66, 96, 37, 62, 0, 0,
0, 0, 47, 0, 0, 6,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 128,
129, 0, 0, 0, 1, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 2, 64,
0, 0, 85, 85, 213, 62,
85, 85, 213, 62, 85, 85,
213, 62, 0, 0, 0, 0,
25, 0, 0, 5, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 50, 0, 0, 15,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 2, 64,
0, 0, 61, 10, 135, 63,
61, 10, 135, 63, 61, 10,
135, 63, 0, 0, 0, 0,
2, 64, 0, 0, 174, 71,
97, 189, 174, 71, 97, 189,
174, 71, 97, 189, 0, 0,
0, 0, 55, 32, 0, 9,
114, 0, 16, 0, 1, 0, 114, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
2, 0, 0, 0, 70, 2, 1, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
50, 0, 0, 16, 114, 0,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 3, 0, 70, 2, 16, 128, 65, 0,
0, 0, 21, 0, 0, 1, 0, 0, 0, 0, 0, 0,
54, 0, 0, 5, 130, 0, 2, 64, 0, 0, 0, 128,
149, 65, 0, 128, 149, 65,
0, 128, 149, 65, 0, 0,
0, 0, 2, 64, 0, 0,
0, 208, 150, 65, 0, 208,
150, 65, 0, 208, 150, 65,
0, 0, 0, 0, 14, 0,
0, 7, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
1, 64, 0, 0, 0, 0, 70, 2, 16, 0, 0, 0,
128, 63, 56, 0, 0, 7, 0, 0, 47, 0, 0, 6,
242, 32, 16, 0, 0, 0, 114, 0, 16, 0, 0, 0,
0, 0, 70, 14, 16, 0, 0, 0, 70, 2, 16, 128,
1, 0, 0, 0, 70, 30, 129, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 107, 224, 200, 64,
107, 224, 200, 64, 107, 224,
200, 64, 0, 0, 0, 0,
25, 0, 0, 5, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 64, 28, 70,
0, 64, 28, 70, 0, 64,
28, 70, 0, 0, 0, 0,
16, 0, 0, 10, 18, 0,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 34, 139,
212, 63, 160, 112, 22, 191,
35, 45, 149, 189, 0, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 16, 0,
0, 10, 34, 0, 16, 0,
1, 0, 0, 0, 2, 64,
0, 0, 127, 18, 255, 189,
180, 2, 145, 63, 13, 198,
8, 188, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 16, 0, 0, 10,
66, 0, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
179, 183, 148, 188, 205, 5,
206, 189, 60, 51, 143, 63,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
56, 0, 0, 8, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 86, 133, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 205, 204, 76, 60,
205, 204, 76, 60, 205, 204,
76, 60, 0, 0, 0, 0,
57, 0, 0, 11, 130, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 10, 128, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 31, 0, 0, 3,
58, 0, 16, 0, 0, 0,
0, 0, 29, 0, 0, 10,
114, 0, 16, 0, 2, 0,
0, 0, 2, 64, 0, 0,
209, 60, 128, 62, 209, 60,
128, 62, 209, 60, 128, 62,
0, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
56, 0, 0, 10, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
66, 96, 37, 62, 66, 96,
37, 62, 66, 96, 37, 62,
0, 0, 0, 0, 47, 0,
0, 6, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 128, 129, 0, 0, 0,
1, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 85, 85,
213, 62, 85, 85, 213, 62,
85, 85, 213, 62, 0, 0,
0, 0, 25, 0, 0, 5,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 50, 0,
0, 15, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 61, 10,
135, 63, 61, 10, 135, 63,
61, 10, 135, 63, 0, 0,
0, 0, 2, 64, 0, 0,
174, 71, 97, 189, 174, 71,
97, 189, 174, 71, 97, 189,
0, 0, 0, 0, 55, 32,
0, 9, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 2, 0, 0, 0, 16, 0, 2, 0, 0, 0,
62, 0, 0, 1, 83, 84, 70, 2, 16, 0, 0, 0,
65, 84, 148, 0, 0, 0, 0, 0, 70, 2, 16, 0,
36, 0, 0, 0, 4, 0, 3, 0, 0, 0, 21, 0,
0, 1, 54, 0, 0, 5,
130, 0, 16, 0, 1, 0,
0, 0, 1, 64, 0, 0,
0, 0, 128, 63, 56, 0,
0, 7, 242, 32, 16, 0,
0, 0, 0, 0, 70, 14,
16, 0, 1, 0, 0, 0,
70, 30, 16, 0, 2, 0,
0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 148, 0,
0, 0, 35, 0, 0, 0,
4, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
27, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 28, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 2, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0
}; };

View File

@ -24,7 +24,6 @@ float4 main(PixelShaderInput input) : SV_TARGET
-0.124547, 1.132895, -0.008348, -0.124547, 1.132895, -0.008348,
-0.018154, -0.100597, 1.118751 -0.018154, -0.100597, 1.118751
}; };
float4 Output;
float3 yuv; float3 yuv;
yuv.x = theTextureY.Sample(theSampler, input.tex).r; yuv.x = theTextureY.Sample(theSampler, input.tex).r;
@ -40,19 +39,7 @@ float4 main(PixelShaderInput input) : SV_TARGET
rgb = mul(mat2020to709, rgb); rgb = mul(mat2020to709, rgb);
rgb = (rgb / maxCLL) * HDR_whitelevel;
rgb = scRGBfromNits(rgb); rgb = scRGBfromNits(rgb);
if (!scRGB_output) { return GetOutputColorFromSCRGB(rgb) * input.color;
rgb.r = sRGBfromLinear(rgb.r);
rgb.g = sRGBfromLinear(rgb.g);
rgb.b = sRGBfromLinear(rgb.b);
rgb.rgb = clamp(rgb.rgb, 0.0, 1.0);
}
Output.rgb = rgb.rgb;
Output.a = 1.0;
return Output * input.color;
} }

View File

@ -9,9 +9,9 @@
// { // {
// //
// float scRGB_output; // Offset: 0 Size: 4 // float scRGB_output; // Offset: 0 Size: 4
// float SDR_whitelevel; // Offset: 4 Size: 4 [unused] // float color_scale; // Offset: 4 Size: 4
// float HDR_whitelevel; // Offset: 8 Size: 4 [unused] // float unused1; // Offset: 8 Size: 4 [unused]
// float maxCLL; // Offset: 12 Size: 4 [unused] // float unused2; // Offset: 12 Size: 4 [unused]
// float4 Yoffset; // Offset: 16 Size: 16 // float4 Yoffset; // Offset: 16 Size: 16
// float4 Rcoeff; // Offset: 32 Size: 16 // float4 Rcoeff; // Offset: 32 Size: 16
// float4 Gcoeff; // Offset: 48 Size: 16 // float4 Gcoeff; // Offset: 48 Size: 16
@ -101,11 +101,12 @@
cmp r2.z, r1.w, r0.x, r2.w cmp r2.z, r1.w, r0.x, r2.w
mul r1.w, c0.x, c0.x mul r1.w, c0.x, c0.x
cmp r0.xyz, -r1.w, r1, r2 cmp r0.xyz, -r1.w, r1, r2
mul r0.xyz, r0, c0.y
mov r0.w, c6.y mov r0.w, c6.y
mul r0, r0, t1 mul r0, r0, t1
mov oC0, r0 mov oC0, r0
// approximately 39 instruction slots used (2 texture, 37 arithmetic) // approximately 40 instruction slots used (2 texture, 38 arithmetic)
ps_4_0 ps_4_0
dcl_constantbuffer CB0[5], immediateIndexed dcl_constantbuffer CB0[5], immediateIndexed
dcl_sampler s0, mode_default dcl_sampler s0, mode_default
@ -133,27 +134,28 @@ if_nz r0.x
exp r3.xyz, r3.xyzx exp r3.xyz, r3.xyzx
movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx
endif endif
mov r1.w, l(1.000000) mul r0.xyz, r1.xyzx, cb0[0].yyyy
mul o0.xyzw, r1.xyzw, v2.xyzw mov r0.w, l(1.000000)
mul o0.xyzw, r0.xyzw, v2.xyzw
ret ret
// Approximately 21 instruction slots used // Approximately 22 instruction slots used
#endif #endif
const BYTE g_main[] = const BYTE g_main[] =
{ {
68, 88, 66, 67, 57, 206, 68, 88, 66, 67, 58, 20,
5, 226, 160, 185, 110, 25, 110, 34, 151, 86, 32, 17,
70, 167, 109, 22, 187, 226, 118, 15, 98, 32, 139, 247,
244, 122, 1, 0, 0, 0, 137, 113, 1, 0, 0, 0,
52, 9, 0, 0, 6, 0, 88, 9, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 0, 0,
232, 2, 0, 0, 196, 5, 248, 2, 0, 0, 244, 5,
0, 0, 64, 6, 0, 0, 0, 0, 112, 6, 0, 0,
140, 8, 0, 0, 0, 9, 176, 8, 0, 0, 36, 9,
0, 0, 65, 111, 110, 57, 0, 0, 65, 111, 110, 57,
168, 2, 0, 0, 168, 2, 184, 2, 0, 0, 184, 2,
0, 0, 0, 2, 255, 255, 0, 0, 0, 2, 255, 255,
112, 2, 0, 0, 56, 0, 128, 2, 0, 0, 56, 0,
0, 0, 1, 0, 44, 0, 0, 0, 1, 0, 44, 0,
0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 0, 0,
56, 0, 2, 0, 36, 0, 56, 0, 2, 0, 36, 0,
@ -257,141 +259,149 @@ const BYTE g_main[] =
0, 160, 88, 0, 0, 4, 0, 160, 88, 0, 0, 4,
0, 0, 7, 128, 1, 0, 0, 0, 7, 128, 1, 0,
255, 129, 1, 0, 228, 128, 255, 129, 1, 0, 228, 128,
2, 0, 228, 128, 1, 0, 2, 0, 228, 128, 5, 0,
0, 2, 0, 0, 8, 128, 0, 3, 0, 0, 7, 128,
6, 0, 85, 160, 5, 0, 0, 0, 228, 128, 0, 0,
0, 3, 0, 0, 15, 128, 85, 160, 1, 0, 0, 2,
0, 0, 228, 128, 1, 0, 0, 0, 8, 128, 6, 0,
228, 176, 1, 0, 0, 2, 85, 160, 5, 0, 0, 3,
0, 8, 15, 128, 0, 0, 0, 0, 15, 128, 0, 0,
228, 128, 255, 255, 0, 0, 228, 128, 1, 0, 228, 176,
83, 72, 68, 82, 212, 2, 1, 0, 0, 2, 0, 8,
0, 0, 64, 0, 0, 0, 15, 128, 0, 0, 228, 128,
181, 0, 0, 0, 89, 0, 255, 255, 0, 0, 83, 72,
0, 4, 70, 142, 32, 0, 68, 82, 244, 2, 0, 0,
0, 0, 0, 0, 5, 0, 64, 0, 0, 0, 189, 0,
0, 0, 90, 0, 0, 3, 0, 0, 89, 0, 0, 4,
0, 96, 16, 0, 0, 0, 70, 142, 32, 0, 0, 0,
0, 0, 88, 24, 0, 4, 0, 0, 5, 0, 0, 0,
0, 112, 16, 0, 0, 0, 90, 0, 0, 3, 0, 96,
0, 0, 85, 85, 0, 0, 16, 0, 0, 0, 0, 0,
88, 24, 0, 4, 0, 112, 88, 24, 0, 4, 0, 112,
16, 0, 1, 0, 0, 0,
85, 85, 0, 0, 98, 16,
0, 3, 50, 16, 16, 0,
1, 0, 0, 0, 98, 16,
0, 3, 242, 16, 16, 0,
2, 0, 0, 0, 101, 0,
0, 3, 242, 32, 16, 0,
0, 0, 0, 0, 104, 0,
0, 2, 4, 0, 0, 0,
69, 0, 0, 9, 242, 0,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 16, 16, 0, 1, 0, 85, 85, 0, 0, 88, 24,
0, 0, 70, 126, 16, 0, 0, 4, 0, 112, 16, 0,
0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 85, 85,
16, 0, 0, 0, 0, 0, 0, 0, 98, 16, 0, 3,
69, 0, 0, 9, 242, 0, 50, 16, 16, 0, 1, 0,
0, 0, 98, 16, 0, 3,
242, 16, 16, 0, 2, 0,
0, 0, 101, 0, 0, 3,
242, 32, 16, 0, 0, 0,
0, 0, 104, 0, 0, 2,
4, 0, 0, 0, 69, 0,
0, 9, 242, 0, 16, 0,
0, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
70, 16, 16, 0, 1, 0, 70, 126, 16, 0, 0, 0,
0, 0, 38, 125, 16, 0, 0, 0, 0, 96, 16, 0,
1, 0, 0, 0, 0, 96, 0, 0, 0, 0, 69, 0,
16, 0, 0, 0, 0, 0, 0, 9, 242, 0, 16, 0,
54, 0, 0, 5, 18, 0, 1, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
10, 0, 16, 0, 0, 0, 38, 125, 16, 0, 1, 0,
0, 0, 0, 0, 0, 8, 0, 0, 0, 96, 16, 0,
114, 0, 16, 0, 0, 0, 0, 0, 0, 0, 54, 0,
0, 0, 70, 2, 16, 0, 0, 5, 18, 0, 16, 0,
1, 0, 0, 0, 70, 130, 1, 0, 0, 0, 10, 0,
32, 0, 0, 0, 0, 0,
1, 0, 0, 0, 16, 0,
0, 8, 18, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 130, 32, 0, 0, 0, 0, 0, 0, 8, 114, 0,
0, 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0,
16, 0, 0, 8, 34, 0, 70, 2, 16, 0, 1, 0,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 70, 130, 32, 0, 0, 0, 70, 130, 32, 0,
0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0,
0, 0, 16, 0, 0, 8, 0, 0, 16, 0, 0, 8,
66, 0, 16, 0, 1, 0, 18, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 70, 130, 0, 0, 0, 0, 70, 130,
32, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
4, 0, 0, 0, 57, 0, 2, 0, 0, 0, 16, 0,
0, 11, 18, 0, 16, 0, 0, 8, 34, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
10, 128, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
31, 0, 4, 3, 10, 0,
16, 0, 0, 0, 0, 0,
29, 0, 0, 10, 114, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 230, 174,
37, 61, 230, 174, 37, 61,
230, 174, 37, 61, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
2, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 145, 131,
158, 61, 145, 131, 158, 61,
145, 131, 158, 61, 0, 0,
0, 0, 0, 0, 0, 10,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 2, 64,
0, 0, 174, 71, 97, 61,
174, 71, 97, 61, 174, 71,
97, 61, 0, 0, 0, 0,
56, 0, 0, 11, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 128, 129, 0,
0, 0, 3, 0, 0, 0,
2, 64, 0, 0, 111, 167,
114, 63, 111, 167, 114, 63,
111, 167, 114, 63, 0, 0,
0, 0, 47, 0, 0, 5,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 154, 153,
25, 64, 154, 153, 25, 64,
154, 153, 25, 64, 0, 0,
0, 0, 25, 0, 0, 5,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 55, 0,
0, 9, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2, 1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 2, 0, 70, 130, 32, 0, 0, 0,
0, 0, 3, 0, 0, 0,
16, 0, 0, 8, 66, 0,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 70, 130, 32, 0,
0, 0, 0, 0, 4, 0,
0, 0, 57, 0, 0, 11,
18, 0, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 10, 128,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 31, 0,
4, 3, 10, 0, 16, 0,
0, 0, 0, 0, 29, 0,
0, 10, 114, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 230, 174, 37, 61,
230, 174, 37, 61, 230, 174,
37, 61, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 2, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 21, 0, 1, 0, 0, 0, 2, 64,
0, 1, 54, 0, 0, 5, 0, 0, 145, 131, 158, 61,
130, 0, 16, 0, 1, 0, 145, 131, 158, 61, 145, 131,
158, 61, 0, 0, 0, 0,
0, 0, 0, 10, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
174, 71, 97, 61, 174, 71,
97, 61, 174, 71, 97, 61,
0, 0, 0, 0, 56, 0,
0, 11, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 128, 129, 0, 0, 0,
3, 0, 0, 0, 2, 64,
0, 0, 111, 167, 114, 63,
111, 167, 114, 63, 111, 167,
114, 63, 0, 0, 0, 0,
47, 0, 0, 5, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 2, 64,
0, 0, 154, 153, 25, 64,
154, 153, 25, 64, 154, 153,
25, 64, 0, 0, 0, 0,
25, 0, 0, 5, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 55, 0, 0, 9,
114, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 2, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 21, 0, 0, 1,
56, 0, 0, 8, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 86, 133, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 5,
130, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0, 0, 0, 1, 64, 0, 0,
0, 0, 128, 63, 56, 0, 0, 0, 128, 63, 56, 0,
0, 7, 242, 32, 16, 0, 0, 7, 242, 32, 16, 0,
0, 0, 0, 0, 70, 14, 0, 0, 0, 0, 70, 14,
16, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 30, 16, 0, 2, 0, 70, 30, 16, 0, 2, 0,
0, 0, 62, 0, 0, 1, 0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 116, 0, 83, 84, 65, 84, 116, 0,
0, 0, 21, 0, 0, 0, 0, 0, 22, 0, 0, 0,
4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0,
12, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -408,12 +418,12 @@ const BYTE g_main[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 68, 0, 0, 0, 0, 82, 68,
69, 70, 68, 2, 0, 0, 69, 70, 56, 2, 0, 0,
1, 0, 0, 0, 204, 0, 1, 0, 0, 0, 204, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
28, 0, 0, 0, 0, 4, 28, 0, 0, 0, 0, 4,
255, 255, 0, 1, 0, 0, 255, 255, 0, 1, 0, 0,
25, 2, 0, 0, 156, 0, 13, 2, 0, 0, 156, 0,
0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -453,46 +463,44 @@ const BYTE g_main[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196, 1, 0, 0, 4, 0, 196, 1, 0, 0, 4, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 180, 1, 2, 0, 0, 0, 180, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
211, 1, 0, 0, 8, 0, 208, 1, 0, 0, 8, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 180, 1, 0, 0, 0, 0, 180, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
226, 1, 0, 0, 12, 0, 216, 1, 0, 0, 12, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 180, 1, 0, 0, 0, 0, 180, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
233, 1, 0, 0, 16, 0, 224, 1, 0, 0, 16, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4, 2, 0, 0, 32, 0, 248, 1, 0, 0, 32, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
11, 2, 0, 0, 48, 0, 255, 1, 0, 0, 48, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
18, 2, 0, 0, 64, 0, 6, 2, 0, 0, 64, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115, 99, 82, 71, 66, 95, 115, 99, 82, 71, 66, 95,
111, 117, 116, 112, 117, 116, 111, 117, 116, 112, 117, 116,
0, 171, 171, 171, 0, 0, 0, 171, 171, 171, 0, 0,
3, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 83, 68, 82, 95, 0, 0, 99, 111, 108, 111,
119, 104, 105, 116, 101, 108, 114, 95, 115, 99, 97, 108,
101, 118, 101, 108, 0, 72, 101, 0, 117, 110, 117, 115,
68, 82, 95, 119, 104, 105, 101, 100, 49, 0, 117, 110,
116, 101, 108, 101, 118, 101, 117, 115, 101, 100, 50, 0,
108, 0, 109, 97, 120, 67, 89, 111, 102, 102, 115, 101,
76, 76, 0, 89, 111, 102, 116, 0, 1, 0, 3, 0,
102, 115, 101, 116, 0, 171,
171, 171, 1, 0, 3, 0,
1, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82, 99, 111, 101, 102, 102, 82, 99, 111, 101, 102, 102,

View File

@ -9,9 +9,9 @@
// { // {
// //
// float scRGB_output; // Offset: 0 Size: 4 // float scRGB_output; // Offset: 0 Size: 4
// float SDR_whitelevel; // Offset: 4 Size: 4 [unused] // float color_scale; // Offset: 4 Size: 4
// float HDR_whitelevel; // Offset: 8 Size: 4 [unused] // float unused1; // Offset: 8 Size: 4 [unused]
// float maxCLL; // Offset: 12 Size: 4 [unused] // float unused2; // Offset: 12 Size: 4 [unused]
// float4 Yoffset; // Offset: 16 Size: 16 // float4 Yoffset; // Offset: 16 Size: 16
// float4 Rcoeff; // Offset: 32 Size: 16 // float4 Rcoeff; // Offset: 32 Size: 16
// float4 Gcoeff; // Offset: 48 Size: 16 // float4 Gcoeff; // Offset: 48 Size: 16
@ -102,11 +102,12 @@
cmp r2.z, r1.w, r0.x, r2.w cmp r2.z, r1.w, r0.x, r2.w
mul r1.w, c0.x, c0.x mul r1.w, c0.x, c0.x
cmp r0.xyz, -r1.w, r1, r2 cmp r0.xyz, -r1.w, r1, r2
mul r0.xyz, r0, c0.y
mov r0.w, c6.y mov r0.w, c6.y
mul r0, r0, t1 mul r0, r0, t1
mov oC0, r0 mov oC0, r0
// approximately 40 instruction slots used (2 texture, 38 arithmetic) // approximately 41 instruction slots used (2 texture, 39 arithmetic)
ps_4_0 ps_4_0
dcl_constantbuffer CB0[5], immediateIndexed dcl_constantbuffer CB0[5], immediateIndexed
dcl_sampler s0, mode_default dcl_sampler s0, mode_default
@ -134,27 +135,28 @@ if_nz r0.x
exp r3.xyz, r3.xyzx exp r3.xyz, r3.xyzx
movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx
endif endif
mov r1.w, l(1.000000) mul r0.xyz, r1.xyzx, cb0[0].yyyy
mul o0.xyzw, r1.xyzw, v2.xyzw mov r0.w, l(1.000000)
mul o0.xyzw, r0.xyzw, v2.xyzw
ret ret
// Approximately 21 instruction slots used // Approximately 22 instruction slots used
#endif #endif
const BYTE g_main[] = const BYTE g_main[] =
{ {
68, 88, 66, 67, 103, 251, 68, 88, 66, 67, 150, 187,
56, 113, 174, 118, 96, 85, 194, 202, 50, 132, 111, 243,
191, 91, 87, 213, 153, 143, 88, 169, 196, 166, 186, 146,
217, 253, 1, 0, 0, 0, 56, 89, 1, 0, 0, 0,
64, 9, 0, 0, 6, 0, 100, 9, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 0, 0,
244, 2, 0, 0, 208, 5, 4, 3, 0, 0, 0, 6,
0, 0, 76, 6, 0, 0, 0, 0, 124, 6, 0, 0,
152, 8, 0, 0, 12, 9, 188, 8, 0, 0, 48, 9,
0, 0, 65, 111, 110, 57, 0, 0, 65, 111, 110, 57,
180, 2, 0, 0, 180, 2, 196, 2, 0, 0, 196, 2,
0, 0, 0, 2, 255, 255, 0, 0, 0, 2, 255, 255,
124, 2, 0, 0, 56, 0, 140, 2, 0, 0, 56, 0,
0, 0, 1, 0, 44, 0, 0, 0, 1, 0, 44, 0,
0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 0, 0,
56, 0, 2, 0, 36, 0, 56, 0, 2, 0, 36, 0,
@ -260,141 +262,149 @@ const BYTE g_main[] =
0, 160, 88, 0, 0, 4, 0, 160, 88, 0, 0, 4,
0, 0, 7, 128, 1, 0, 0, 0, 7, 128, 1, 0,
255, 129, 1, 0, 228, 128, 255, 129, 1, 0, 228, 128,
2, 0, 228, 128, 1, 0, 2, 0, 228, 128, 5, 0,
0, 2, 0, 0, 8, 128, 0, 3, 0, 0, 7, 128,
6, 0, 85, 160, 5, 0, 0, 0, 228, 128, 0, 0,
0, 3, 0, 0, 15, 128, 85, 160, 1, 0, 0, 2,
0, 0, 228, 128, 1, 0, 0, 0, 8, 128, 6, 0,
228, 176, 1, 0, 0, 2, 85, 160, 5, 0, 0, 3,
0, 8, 15, 128, 0, 0, 0, 0, 15, 128, 0, 0,
228, 128, 255, 255, 0, 0, 228, 128, 1, 0, 228, 176,
83, 72, 68, 82, 212, 2, 1, 0, 0, 2, 0, 8,
0, 0, 64, 0, 0, 0, 15, 128, 0, 0, 228, 128,
181, 0, 0, 0, 89, 0, 255, 255, 0, 0, 83, 72,
0, 4, 70, 142, 32, 0, 68, 82, 244, 2, 0, 0,
0, 0, 0, 0, 5, 0, 64, 0, 0, 0, 189, 0,
0, 0, 90, 0, 0, 3, 0, 0, 89, 0, 0, 4,
0, 96, 16, 0, 0, 0, 70, 142, 32, 0, 0, 0,
0, 0, 88, 24, 0, 4, 0, 0, 5, 0, 0, 0,
0, 112, 16, 0, 0, 0, 90, 0, 0, 3, 0, 96,
0, 0, 85, 85, 0, 0, 16, 0, 0, 0, 0, 0,
88, 24, 0, 4, 0, 112, 88, 24, 0, 4, 0, 112,
16, 0, 1, 0, 0, 0,
85, 85, 0, 0, 98, 16,
0, 3, 50, 16, 16, 0,
1, 0, 0, 0, 98, 16,
0, 3, 242, 16, 16, 0,
2, 0, 0, 0, 101, 0,
0, 3, 242, 32, 16, 0,
0, 0, 0, 0, 104, 0,
0, 2, 4, 0, 0, 0,
69, 0, 0, 9, 242, 0,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 16, 16, 0, 1, 0, 85, 85, 0, 0, 88, 24,
0, 0, 70, 126, 16, 0, 0, 4, 0, 112, 16, 0,
0, 0, 0, 0, 0, 96, 1, 0, 0, 0, 85, 85,
16, 0, 0, 0, 0, 0, 0, 0, 98, 16, 0, 3,
69, 0, 0, 9, 242, 0, 50, 16, 16, 0, 1, 0,
0, 0, 98, 16, 0, 3,
242, 16, 16, 0, 2, 0,
0, 0, 101, 0, 0, 3,
242, 32, 16, 0, 0, 0,
0, 0, 104, 0, 0, 2,
4, 0, 0, 0, 69, 0,
0, 9, 242, 0, 16, 0,
0, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
70, 16, 16, 0, 1, 0, 70, 126, 16, 0, 0, 0,
0, 0, 102, 124, 16, 0, 0, 0, 0, 96, 16, 0,
1, 0, 0, 0, 0, 96, 0, 0, 0, 0, 69, 0,
16, 0, 0, 0, 0, 0, 0, 9, 242, 0, 16, 0,
54, 0, 0, 5, 18, 0, 1, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
10, 0, 16, 0, 0, 0, 102, 124, 16, 0, 1, 0,
0, 0, 0, 0, 0, 8, 0, 0, 0, 96, 16, 0,
114, 0, 16, 0, 0, 0, 0, 0, 0, 0, 54, 0,
0, 0, 70, 2, 16, 0, 0, 5, 18, 0, 16, 0,
1, 0, 0, 0, 70, 130, 1, 0, 0, 0, 10, 0,
32, 0, 0, 0, 0, 0,
1, 0, 0, 0, 16, 0,
0, 8, 18, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 130, 32, 0, 0, 0, 0, 0, 0, 8, 114, 0,
0, 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0,
16, 0, 0, 8, 34, 0, 70, 2, 16, 0, 1, 0,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 70, 130, 32, 0, 0, 0, 70, 130, 32, 0,
0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0,
0, 0, 16, 0, 0, 8, 0, 0, 16, 0, 0, 8,
66, 0, 16, 0, 1, 0, 18, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 70, 130, 0, 0, 0, 0, 70, 130,
32, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
4, 0, 0, 0, 57, 0, 2, 0, 0, 0, 16, 0,
0, 11, 18, 0, 16, 0, 0, 8, 34, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
10, 128, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
31, 0, 4, 3, 10, 0,
16, 0, 0, 0, 0, 0,
29, 0, 0, 10, 114, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 230, 174,
37, 61, 230, 174, 37, 61,
230, 174, 37, 61, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
2, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 145, 131,
158, 61, 145, 131, 158, 61,
145, 131, 158, 61, 0, 0,
0, 0, 0, 0, 0, 10,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 2, 64,
0, 0, 174, 71, 97, 61,
174, 71, 97, 61, 174, 71,
97, 61, 0, 0, 0, 0,
56, 0, 0, 11, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 128, 129, 0,
0, 0, 3, 0, 0, 0,
2, 64, 0, 0, 111, 167,
114, 63, 111, 167, 114, 63,
111, 167, 114, 63, 0, 0,
0, 0, 47, 0, 0, 5,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 154, 153,
25, 64, 154, 153, 25, 64,
154, 153, 25, 64, 0, 0,
0, 0, 25, 0, 0, 5,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 55, 0,
0, 9, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2, 1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 2, 0, 70, 130, 32, 0, 0, 0,
0, 0, 3, 0, 0, 0,
16, 0, 0, 8, 66, 0,
16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0,
0, 0, 70, 130, 32, 0,
0, 0, 0, 0, 4, 0,
0, 0, 57, 0, 0, 11,
18, 0, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 10, 128,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 31, 0,
4, 3, 10, 0, 16, 0,
0, 0, 0, 0, 29, 0,
0, 10, 114, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 230, 174, 37, 61,
230, 174, 37, 61, 230, 174,
37, 61, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 2, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 21, 0, 1, 0, 0, 0, 2, 64,
0, 1, 54, 0, 0, 5, 0, 0, 145, 131, 158, 61,
130, 0, 16, 0, 1, 0, 145, 131, 158, 61, 145, 131,
158, 61, 0, 0, 0, 0,
0, 0, 0, 10, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
174, 71, 97, 61, 174, 71,
97, 61, 174, 71, 97, 61,
0, 0, 0, 0, 56, 0,
0, 11, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 128, 129, 0, 0, 0,
3, 0, 0, 0, 2, 64,
0, 0, 111, 167, 114, 63,
111, 167, 114, 63, 111, 167,
114, 63, 0, 0, 0, 0,
47, 0, 0, 5, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 56, 0, 0, 10,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 2, 64,
0, 0, 154, 153, 25, 64,
154, 153, 25, 64, 154, 153,
25, 64, 0, 0, 0, 0,
25, 0, 0, 5, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 55, 0, 0, 9,
114, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 2, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 21, 0, 0, 1,
56, 0, 0, 8, 114, 0,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 86, 133, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 54, 0, 0, 5,
130, 0, 16, 0, 0, 0,
0, 0, 1, 64, 0, 0, 0, 0, 1, 64, 0, 0,
0, 0, 128, 63, 56, 0, 0, 0, 128, 63, 56, 0,
0, 7, 242, 32, 16, 0, 0, 7, 242, 32, 16, 0,
0, 0, 0, 0, 70, 14, 0, 0, 0, 0, 70, 14,
16, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 30, 16, 0, 2, 0, 70, 30, 16, 0, 2, 0,
0, 0, 62, 0, 0, 1, 0, 0, 62, 0, 0, 1,
83, 84, 65, 84, 116, 0, 83, 84, 65, 84, 116, 0,
0, 0, 21, 0, 0, 0, 0, 0, 22, 0, 0, 0,
4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0,
12, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -411,12 +421,12 @@ const BYTE g_main[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 68, 0, 0, 0, 0, 82, 68,
69, 70, 68, 2, 0, 0, 69, 70, 56, 2, 0, 0,
1, 0, 0, 0, 204, 0, 1, 0, 0, 0, 204, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
28, 0, 0, 0, 0, 4, 28, 0, 0, 0, 0, 4,
255, 255, 0, 1, 0, 0, 255, 255, 0, 1, 0, 0,
25, 2, 0, 0, 156, 0, 13, 2, 0, 0, 156, 0,
0, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -456,46 +466,44 @@ const BYTE g_main[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196, 1, 0, 0, 4, 0, 196, 1, 0, 0, 4, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 180, 1, 2, 0, 0, 0, 180, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
211, 1, 0, 0, 8, 0, 208, 1, 0, 0, 8, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 180, 1, 0, 0, 0, 0, 180, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
226, 1, 0, 0, 12, 0, 216, 1, 0, 0, 12, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 180, 1, 0, 0, 0, 0, 180, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
233, 1, 0, 0, 16, 0, 224, 1, 0, 0, 16, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4, 2, 0, 0, 32, 0, 248, 1, 0, 0, 32, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
11, 2, 0, 0, 48, 0, 255, 1, 0, 0, 48, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
18, 2, 0, 0, 64, 0, 6, 2, 0, 0, 64, 0,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
2, 0, 0, 0, 244, 1, 2, 0, 0, 0, 232, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
115, 99, 82, 71, 66, 95, 115, 99, 82, 71, 66, 95,
111, 117, 116, 112, 117, 116, 111, 117, 116, 112, 117, 116,
0, 171, 171, 171, 0, 0, 0, 171, 171, 171, 0, 0,
3, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 83, 68, 82, 95, 0, 0, 99, 111, 108, 111,
119, 104, 105, 116, 101, 108, 114, 95, 115, 99, 97, 108,
101, 118, 101, 108, 0, 72, 101, 0, 117, 110, 117, 115,
68, 82, 95, 119, 104, 105, 101, 100, 49, 0, 117, 110,
116, 101, 108, 101, 118, 101, 117, 115, 101, 100, 50, 0,
108, 0, 109, 97, 120, 67, 89, 111, 102, 102, 115, 101,
76, 76, 0, 89, 111, 102, 116, 0, 1, 0, 3, 0,
102, 115, 101, 116, 0, 171,
171, 171, 1, 0, 3, 0,
1, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82, 99, 111, 101, 102, 102, 82, 99, 111, 101, 102, 102,

View File

@ -8,10 +8,10 @@
// cbuffer Constants // cbuffer Constants
// { // {
// //
// float scRGB_output; // Offset: 0 Size: 4 // float scRGB_output; // Offset: 0 Size: 4 [unused]
// float SDR_whitelevel; // Offset: 4 Size: 4 // float color_scale; // Offset: 4 Size: 4
// float HDR_whitelevel; // Offset: 8 Size: 4 [unused] // float unused1; // Offset: 8 Size: 4 [unused]
// float maxCLL; // Offset: 12 Size: 4 [unused] // float unused2; // Offset: 12 Size: 4 [unused]
// float4 Yoffset; // Offset: 16 Size: 16 [unused] // float4 Yoffset; // Offset: 16 Size: 16 [unused]
// float4 Rcoeff; // Offset: 32 Size: 16 [unused] // float4 Rcoeff; // Offset: 32 Size: 16 [unused]
// float4 Gcoeff; // Offset: 48 Size: 16 [unused] // float4 Gcoeff; // Offset: 48 Size: 16 [unused]
@ -63,19 +63,15 @@
// Level9 shader bytecode: // Level9 shader bytecode:
// //
ps_2_0 ps_2_0
def c1, 0.0125000002, 0, 0, 0
dcl t0.xy dcl t0.xy
dcl t1 dcl t1
dcl_2d s0 dcl_2d s0
texld r0, t0, s0 texld r0, t0, s0
mul r1.w, c0.x, c0.x mul r0.xyz, r0, c0.y
mul r1.xyz, r0, c0.y
mul r1.xyz, r1, c1.x
cmp r0.xyz, -r1.w, r0, r1
mul r0, r0, t1 mul r0, r0, t1
mov oC0, r0 mov oC0, r0
// approximately 7 instruction slots used (1 texture, 6 arithmetic) // approximately 4 instruction slots used (1 texture, 3 arithmetic)
ps_4_0 ps_4_0
dcl_constantbuffer CB0[1], immediateIndexed dcl_constantbuffer CB0[1], immediateIndexed
dcl_sampler s0, mode_default dcl_sampler s0, mode_default
@ -83,32 +79,29 @@ dcl_resource_texture2d (float,float,float,float) t0
dcl_input_ps linear v1.xy dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyzw dcl_input_ps linear v2.xyzw
dcl_output o0.xyzw dcl_output o0.xyzw
dcl_temps 2 dcl_temps 1
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x sample r0.xyzw, v1.xyxx, t0.xyzw, s0
sample r1.xyzw, v1.xyxx, t0.xyzw, s0 mul r0.xyz, r0.xyzx, cb0[0].yyyy
mul r0.yzw, r1.xxyz, cb0[0].yyyy mul o0.xyzw, r0.xyzw, v2.xyzw
mul r0.yzw, r0.yyzw, l(0.000000, 0.012500, 0.012500, 0.012500)
movc r1.xyz, r0.xxxx, r0.yzwy, r1.xyzx
mul o0.xyzw, r1.xyzw, v2.xyzw
ret ret
// Approximately 7 instruction slots used // Approximately 4 instruction slots used
#endif #endif
const BYTE g_main[] = const BYTE g_main[] =
{ {
68, 88, 66, 67, 129, 29, 68, 88, 66, 67, 159, 171,
250, 77, 23, 118, 4, 254, 49, 134, 139, 171, 105, 34,
122, 59, 184, 144, 253, 202, 166, 1, 101, 132, 110, 4,
233, 166, 1, 0, 0, 0, 121, 76, 1, 0, 0, 0,
172, 5, 0, 0, 6, 0, 220, 4, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 0, 0,
40, 1, 0, 0, 108, 2, 220, 0, 0, 0, 168, 1,
0, 0, 232, 2, 0, 0, 0, 0, 36, 2, 0, 0,
4, 5, 0, 0, 120, 5, 52, 4, 0, 0, 168, 4,
0, 0, 65, 111, 110, 57, 0, 0, 65, 111, 110, 57,
232, 0, 0, 0, 232, 0, 156, 0, 0, 0, 156, 0,
0, 0, 0, 2, 255, 255, 0, 0, 0, 2, 255, 255,
180, 0, 0, 0, 52, 0, 104, 0, 0, 0, 52, 0,
0, 0, 1, 0, 40, 0, 0, 0, 1, 0, 40, 0,
0, 0, 52, 0, 0, 0, 0, 0, 52, 0, 0, 0,
52, 0, 1, 0, 36, 0, 52, 0, 1, 0, 36, 0,
@ -116,10 +109,6 @@ const BYTE g_main[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 2, 255, 255, 0, 0, 0, 2, 255, 255,
81, 0, 0, 5, 1, 0,
15, 160, 205, 204, 76, 60,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
31, 0, 0, 2, 0, 0, 31, 0, 0, 2, 0, 0,
0, 128, 0, 0, 3, 176, 0, 128, 0, 0, 3, 176,
31, 0, 0, 2, 0, 0, 31, 0, 0, 2, 0, 0,
@ -129,213 +118,183 @@ const BYTE g_main[] =
66, 0, 0, 3, 0, 0, 66, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 176, 15, 128, 0, 0, 228, 176,
0, 8, 228, 160, 5, 0, 0, 8, 228, 160, 5, 0,
0, 3, 1, 0, 8, 128, 0, 3, 0, 0, 7, 128,
0, 0, 0, 160, 0, 0, 0, 0, 228, 128, 0, 0,
0, 160, 5, 0, 0, 3, 85, 160, 5, 0, 0, 3,
1, 0, 7, 128, 0, 0, 0, 0, 15, 128, 0, 0,
228, 128, 0, 0, 85, 160, 228, 128, 1, 0, 228, 176,
5, 0, 0, 3, 1, 0, 1, 0, 0, 2, 0, 8,
7, 128, 1, 0, 228, 128,
1, 0, 0, 160, 88, 0,
0, 4, 0, 0, 7, 128,
1, 0, 255, 129, 0, 0,
228, 128, 1, 0, 228, 128,
5, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 128, 15, 128, 0, 0, 228, 128,
1, 0, 228, 176, 1, 0, 255, 255, 0, 0, 83, 72,
0, 2, 0, 8, 15, 128, 68, 82, 196, 0, 0, 0,
0, 0, 228, 128, 255, 255, 64, 0, 0, 0, 49, 0,
0, 0, 83, 72, 68, 82, 0, 0, 89, 0, 0, 4,
60, 1, 0, 0, 64, 0, 70, 142, 32, 0, 0, 0,
0, 0, 79, 0, 0, 0, 0, 0, 1, 0, 0, 0,
89, 0, 0, 4, 70, 142, 90, 0, 0, 3, 0, 96,
32, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
1, 0, 0, 0, 90, 0, 88, 24, 0, 4, 0, 112,
0, 3, 0, 96, 16, 0, 16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 88, 24, 85, 85, 0, 0, 98, 16,
0, 4, 0, 112, 16, 0, 0, 3, 50, 16, 16, 0,
0, 0, 0, 0, 85, 85, 1, 0, 0, 0, 98, 16,
0, 0, 98, 16, 0, 3, 0, 3, 242, 16, 16, 0,
50, 16, 16, 0, 1, 0, 2, 0, 0, 0, 101, 0,
0, 0, 98, 16, 0, 3, 0, 3, 242, 32, 16, 0,
242, 16, 16, 0, 2, 0, 0, 0, 0, 0, 104, 0,
0, 0, 101, 0, 0, 3, 0, 2, 1, 0, 0, 0,
242, 32, 16, 0, 0, 0,
0, 0, 104, 0, 0, 2,
2, 0, 0, 0, 57, 0,
0, 11, 18, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
10, 128, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
69, 0, 0, 9, 242, 0, 69, 0, 0, 9, 242, 0,
16, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 16, 16, 0, 1, 0, 70, 16, 16, 0, 1, 0,
0, 0, 70, 126, 16, 0, 0, 0, 70, 126, 16, 0,
0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 96,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
56, 0, 0, 8, 226, 0, 56, 0, 0, 8, 114, 0,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
6, 9, 16, 0, 1, 0, 70, 2, 16, 0, 0, 0,
0, 0, 86, 133, 32, 0, 0, 0, 86, 133, 32, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 56, 0, 0, 10, 0, 0, 56, 0, 0, 7,
226, 0, 16, 0, 0, 0, 242, 32, 16, 0, 0, 0,
0, 0, 86, 14, 16, 0, 0, 0, 70, 14, 16, 0,
0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 70, 30,
0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0,
205, 204, 76, 60, 205, 204, 62, 0, 0, 1, 83, 84,
76, 60, 205, 204, 76, 60, 65, 84, 116, 0, 0, 0,
55, 0, 0, 9, 114, 0, 4, 0, 0, 0, 1, 0,
16, 0, 1, 0, 0, 0,
6, 0, 16, 0, 0, 0,
0, 0, 150, 7, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
56, 0, 0, 7, 242, 32,
16, 0, 0, 0, 0, 0,
70, 14, 16, 0, 1, 0,
0, 0, 70, 30, 16, 0,
2, 0, 0, 0, 62, 0,
0, 1, 83, 84, 65, 84,
116, 0, 0, 0, 7, 0,
0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
82, 68, 69, 70, 20, 2,
0, 0, 1, 0, 0, 0,
156, 0, 0, 0, 3, 0,
0, 0, 28, 0, 0, 0,
0, 4, 255, 255, 0, 1,
0, 0, 233, 1, 0, 0,
124, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 135, 0, 0, 0,
2, 0, 0, 0, 5, 0,
0, 0, 4, 0, 0, 0,
255, 255, 255, 255, 0, 0,
0, 0, 1, 0, 0, 0,
13, 0, 0, 0, 146, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
116, 104, 101, 83, 97, 109,
112, 108, 101, 114, 0, 116,
104, 101, 84, 101, 120, 116,
117, 114, 101, 0, 67, 111,
110, 115, 116, 97, 110, 116,
115, 0, 146, 0, 0, 0,
8, 0, 0, 0, 180, 0,
0, 0, 80, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 116, 1, 0, 0,
0, 0, 0, 0, 4, 0,
0, 0, 2, 0, 0, 0,
132, 1, 0, 0, 0, 0,
0, 0, 148, 1, 0, 0,
4, 0, 0, 0, 4, 0,
0, 0, 2, 0, 0, 0,
132, 1, 0, 0, 0, 0,
0, 0, 163, 1, 0, 0,
8, 0, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
132, 1, 0, 0, 0, 0,
0, 0, 178, 1, 0, 0,
12, 0, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
132, 1, 0, 0, 0, 0,
0, 0, 185, 1, 0, 0,
16, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196, 1, 0, 0, 0, 0,
0, 0, 212, 1, 0, 0,
32, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196, 1, 0, 0, 0, 0,
0, 0, 219, 1, 0, 0,
48, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196, 1, 0, 0, 0, 0,
0, 0, 226, 1, 0, 0,
64, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
196, 1, 0, 0, 0, 0,
0, 0, 115, 99, 82, 71,
66, 95, 111, 117, 116, 112,
117, 116, 0, 171, 171, 171,
0, 0, 3, 0, 1, 0,
1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 83, 68,
82, 95, 119, 104, 105, 116,
101, 108, 101, 118, 101, 108,
0, 72, 68, 82, 95, 119,
104, 105, 116, 101, 108, 101,
118, 101, 108, 0, 109, 97,
120, 67, 76, 76, 0, 89,
111, 102, 102, 115, 101, 116,
0, 171, 171, 171, 1, 0,
3, 0, 1, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 82, 99, 111, 101,
102, 102, 0, 71, 99, 111,
101, 102, 102, 0, 66, 99,
111, 101, 102, 102, 0, 77,
105, 99, 114, 111, 115, 111,
102, 116, 32, 40, 82, 41,
32, 72, 76, 83, 76, 32,
83, 104, 97, 100, 101, 114,
32, 67, 111, 109, 112, 105,
108, 101, 114, 32, 49, 48,
46, 49, 0, 171, 171, 171,
73, 83, 71, 78, 108, 0,
0, 0, 3, 0, 0, 0,
8, 0, 0, 0, 80, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 3, 0, 0, 0, 82, 68, 69, 70,
8, 2, 0, 0, 1, 0,
0, 0, 156, 0, 0, 0,
3, 0, 0, 0, 28, 0,
0, 0, 0, 4, 255, 255,
0, 1, 0, 0, 221, 1,
0, 0, 124, 0, 0, 0,
3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
15, 0, 0, 0, 92, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
3, 3, 0, 0, 101, 0, 1, 0, 0, 0, 135, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0,
15, 15, 0, 0, 83, 86, 5, 0, 0, 0, 4, 0,
95, 80, 79, 83, 73, 84, 0, 0, 255, 255, 255, 255,
73, 79, 78, 0, 84, 69, 0, 0, 0, 0, 1, 0,
88, 67, 79, 79, 82, 68, 0, 0, 13, 0, 0, 0,
0, 67, 79, 76, 79, 82, 146, 0, 0, 0, 0, 0,
0, 171, 79, 83, 71, 78, 0, 0, 0, 0, 0, 0,
44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 1, 0,
0, 0, 116, 104, 101, 83,
97, 109, 112, 108, 101, 114,
0, 116, 104, 101, 84, 101,
120, 116, 117, 114, 101, 0,
67, 111, 110, 115, 116, 97,
110, 116, 115, 0, 146, 0,
0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 0, 0,
32, 0, 0, 0, 0, 0, 180, 0, 0, 0, 80, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 116, 1,
0, 0, 0, 0, 0, 0,
4, 0, 0, 0, 0, 0,
0, 0, 132, 1, 0, 0,
0, 0, 0, 0, 148, 1,
0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 2, 0,
0, 0, 132, 1, 0, 0,
0, 0, 0, 0, 160, 1,
0, 0, 8, 0, 0, 0,
4, 0, 0, 0, 0, 0,
0, 0, 132, 1, 0, 0,
0, 0, 0, 0, 168, 1,
0, 0, 12, 0, 0, 0,
4, 0, 0, 0, 0, 0,
0, 0, 132, 1, 0, 0,
0, 0, 0, 0, 176, 1,
0, 0, 16, 0, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 184, 1, 0, 0,
0, 0, 0, 0, 200, 1,
0, 0, 32, 0, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 184, 1, 0, 0,
0, 0, 0, 0, 207, 1,
0, 0, 48, 0, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 184, 1, 0, 0,
0, 0, 0, 0, 214, 1,
0, 0, 64, 0, 0, 0,
16, 0, 0, 0, 0, 0,
0, 0, 184, 1, 0, 0,
0, 0, 0, 0, 115, 99,
82, 71, 66, 95, 111, 117,
116, 112, 117, 116, 0, 171,
171, 171, 0, 0, 3, 0,
1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0,
99, 111, 108, 111, 114, 95,
115, 99, 97, 108, 101, 0,
117, 110, 117, 115, 101, 100,
49, 0, 117, 110, 117, 115,
101, 100, 50, 0, 89, 111,
102, 102, 115, 101, 116, 0,
1, 0, 3, 0, 1, 0,
4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 99,
111, 101, 102, 102, 0, 71,
99, 111, 101, 102, 102, 0,
66, 99, 111, 101, 102, 102,
0, 77, 105, 99, 114, 111,
115, 111, 102, 116, 32, 40,
82, 41, 32, 72, 76, 83,
76, 32, 83, 104, 97, 100,
101, 114, 32, 67, 111, 109,
112, 105, 108, 101, 114, 32,
49, 48, 46, 49, 0, 171,
171, 171, 73, 83, 71, 78,
108, 0, 0, 0, 3, 0,
0, 0, 8, 0, 0, 0,
80, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0,
3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 15, 0, 0, 0, 0, 0, 15, 0, 0, 0,
83, 86, 95, 84, 65, 82, 92, 0, 0, 0, 0, 0,
71, 69, 84, 0, 171, 171 0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 1, 0,
0, 0, 3, 3, 0, 0,
101, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
3, 0, 0, 0, 2, 0,
0, 0, 15, 15, 0, 0,
83, 86, 95, 80, 79, 83,
73, 84, 73, 79, 78, 0,
84, 69, 88, 67, 79, 79,
82, 68, 0, 67, 79, 76,
79, 82, 0, 171, 79, 83,
71, 78, 44, 0, 0, 0,
1, 0, 0, 0, 8, 0,
0, 0, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 15, 0,
0, 0, 83, 86, 95, 84,
65, 82, 71, 69, 84, 0,
171, 171
}; };

View File

@ -9,9 +9,9 @@
// { // {
// //
// float scRGB_output; // Offset: 0 Size: 4 // float scRGB_output; // Offset: 0 Size: 4
// float SDR_whitelevel; // Offset: 4 Size: 4 [unused] // float color_scale; // Offset: 4 Size: 4
// float HDR_whitelevel; // Offset: 8 Size: 4 [unused] // float unused1; // Offset: 8 Size: 4 [unused]
// float maxCLL; // Offset: 12 Size: 4 [unused] // float unused2; // Offset: 12 Size: 4 [unused]
// float4 Yoffset; // Offset: 16 Size: 16 // float4 Yoffset; // Offset: 16 Size: 16
// float4 Rcoeff; // Offset: 32 Size: 16 // float4 Rcoeff; // Offset: 32 Size: 16
// float4 Gcoeff; // Offset: 48 Size: 16 // float4 Gcoeff; // Offset: 48 Size: 16
@ -106,11 +106,12 @@
cmp r2.z, r1.w, r0.x, r2.w cmp r2.z, r1.w, r0.x, r2.w
mul r1.w, c0.x, c0.x mul r1.w, c0.x, c0.x
cmp r0.xyz, -r1.w, r1, r2 cmp r0.xyz, -r1.w, r1, r2
mul r0.xyz, r0, c0.y
mov r0.w, c6.y mov r0.w, c6.y
mul r0, r0, t1 mul r0, r0, t1
mov oC0, r0 mov oC0, r0
// approximately 41 instruction slots used (3 texture, 38 arithmetic) // approximately 42 instruction slots used (3 texture, 39 arithmetic)
ps_4_0 ps_4_0
dcl_constantbuffer CB0[5], immediateIndexed dcl_constantbuffer CB0[5], immediateIndexed
dcl_sampler s0, mode_default dcl_sampler s0, mode_default
@ -141,27 +142,28 @@ if_nz r0.x
exp r3.xyz, r3.xyzx exp r3.xyz, r3.xyzx
movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx
endif endif
mov r1.w, l(1.000000) mul r0.xyz, r1.xyzx, cb0[0].yyyy
mul o0.xyzw, r1.xyzw, v2.xyzw mov r0.w, l(1.000000)
mul o0.xyzw, r0.xyzw, v2.xyzw
ret ret
// Approximately 23 instruction slots used // Approximately 24 instruction slots used
#endif #endif
const BYTE g_main[] = const BYTE g_main[] =
{ {
68, 88, 66, 67, 9, 92, 68, 88, 66, 67, 84, 14,
101, 235, 212, 83, 42, 215, 232, 134, 42, 204, 66, 203,
158, 193, 215, 73, 102, 13, 56, 83, 173, 74, 161, 2,
226, 183, 1, 0, 0, 0, 47, 168, 1, 0, 0, 0,
212, 9, 0, 0, 6, 0, 248, 9, 0, 0, 6, 0,
0, 0, 56, 0, 0, 0, 0, 0, 56, 0, 0, 0,
20, 3, 0, 0, 56, 6, 36, 3, 0, 0, 104, 6,
0, 0, 180, 6, 0, 0, 0, 0, 228, 6, 0, 0,
44, 9, 0, 0, 160, 9, 80, 9, 0, 0, 196, 9,
0, 0, 65, 111, 110, 57, 0, 0, 65, 111, 110, 57,
212, 2, 0, 0, 212, 2, 228, 2, 0, 0, 228, 2,
0, 0, 0, 2, 255, 255, 0, 0, 0, 2, 255, 255,
152, 2, 0, 0, 60, 0, 168, 2, 0, 0, 60, 0,
0, 0, 1, 0, 48, 0, 0, 0, 1, 0, 48, 0,
0, 0, 60, 0, 0, 0, 0, 0, 60, 0, 0, 0,
60, 0, 3, 0, 36, 0, 60, 0, 3, 0, 36, 0,
@ -273,152 +275,160 @@ const BYTE g_main[] =
0, 4, 0, 0, 7, 128, 0, 4, 0, 0, 7, 128,
1, 0, 255, 129, 1, 0, 1, 0, 255, 129, 1, 0,
228, 128, 2, 0, 228, 128, 228, 128, 2, 0, 228, 128,
1, 0, 0, 2, 0, 0,
8, 128, 6, 0, 85, 160,
5, 0, 0, 3, 0, 0, 5, 0, 0, 3, 0, 0,
15, 128, 0, 0, 228, 128, 7, 128, 0, 0, 228, 128,
1, 0, 228, 176, 1, 0, 0, 0, 85, 160, 1, 0,
0, 2, 0, 8, 15, 128, 0, 2, 0, 0, 8, 128,
0, 0, 228, 128, 255, 255, 6, 0, 85, 160, 5, 0,
0, 0, 83, 72, 68, 82, 0, 3, 0, 0, 15, 128,
28, 3, 0, 0, 64, 0, 0, 0, 228, 128, 1, 0,
0, 0, 199, 0, 0, 0, 228, 176, 1, 0, 0, 2,
89, 0, 0, 4, 70, 142, 0, 8, 15, 128, 0, 0,
32, 0, 0, 0, 0, 0, 228, 128, 255, 255, 0, 0,
5, 0, 0, 0, 90, 0, 83, 72, 68, 82, 60, 3,
0, 3, 0, 96, 16, 0, 0, 0, 64, 0, 0, 0,
0, 0, 0, 0, 88, 24, 207, 0, 0, 0, 89, 0,
0, 4, 0, 112, 16, 0, 0, 4, 70, 142, 32, 0,
0, 0, 0, 0, 85, 85, 0, 0, 0, 0, 5, 0,
0, 0, 90, 0, 0, 3,
0, 96, 16, 0, 0, 0,
0, 0, 88, 24, 0, 4, 0, 0, 88, 24, 0, 4,
0, 112, 16, 0, 1, 0, 0, 112, 16, 0, 0, 0,
0, 0, 85, 85, 0, 0, 0, 0, 85, 85, 0, 0,
88, 24, 0, 4, 0, 112, 88, 24, 0, 4, 0, 112,
16, 0, 2, 0, 0, 0,
85, 85, 0, 0, 98, 16,
0, 3, 50, 16, 16, 0,
1, 0, 0, 0, 98, 16,
0, 3, 242, 16, 16, 0,
2, 0, 0, 0, 101, 0,
0, 3, 242, 32, 16, 0,
0, 0, 0, 0, 104, 0,
0, 2, 4, 0, 0, 0,
69, 0, 0, 9, 242, 0,
16, 0, 0, 0, 0, 0,
70, 16, 16, 0, 1, 0,
0, 0, 70, 126, 16, 0,
0, 0, 0, 0, 0, 96,
16, 0, 0, 0, 0, 0,
69, 0, 0, 9, 242, 0,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
70, 16, 16, 0, 1, 0, 85, 85, 0, 0, 88, 24,
0, 0, 70, 126, 16, 0, 0, 4, 0, 112, 16, 0,
1, 0, 0, 0, 0, 96, 2, 0, 0, 0, 85, 85,
16, 0, 0, 0, 0, 0, 0, 0, 98, 16, 0, 3,
69, 0, 0, 9, 242, 0, 50, 16, 16, 0, 1, 0,
16, 0, 2, 0, 0, 0, 0, 0, 98, 16, 0, 3,
70, 16, 16, 0, 1, 0, 242, 16, 16, 0, 2, 0,
0, 0, 150, 124, 16, 0, 0, 0, 101, 0, 0, 3,
2, 0, 0, 0, 0, 96, 242, 32, 16, 0, 0, 0,
16, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 2,
54, 0, 0, 5, 18, 0, 4, 0, 0, 0, 69, 0,
16, 0, 2, 0, 0, 0, 0, 9, 242, 0, 16, 0,
10, 0, 16, 0, 0, 0, 0, 0, 0, 0, 70, 16,
0, 0, 54, 0, 0, 5,
34, 0, 16, 0, 2, 0,
0, 0, 10, 0, 16, 0,
1, 0, 0, 0, 0, 0,
0, 8, 114, 0, 16, 0,
0, 0, 0, 0, 70, 2,
16, 0, 2, 0, 0, 0,
70, 130, 32, 0, 0, 0,
0, 0, 1, 0, 0, 0,
16, 0, 0, 8, 18, 0,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0, 70, 126, 16, 0, 0, 0,
0, 0, 70, 130, 32, 0, 0, 0, 0, 96, 16, 0,
0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 69, 0,
0, 0, 16, 0, 0, 8, 0, 9, 242, 0, 16, 0,
34, 0, 16, 0, 1, 0, 1, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0,
70, 126, 16, 0, 1, 0,
0, 0, 0, 96, 16, 0,
0, 0, 0, 0, 69, 0,
0, 9, 242, 0, 16, 0,
2, 0, 0, 0, 70, 16,
16, 0, 1, 0, 0, 0,
150, 124, 16, 0, 2, 0,
0, 0, 0, 96, 16, 0,
0, 0, 0, 0, 54, 0,
0, 5, 18, 0, 16, 0,
2, 0, 0, 0, 10, 0,
16, 0, 0, 0, 0, 0,
54, 0, 0, 5, 34, 0,
16, 0, 2, 0, 0, 0,
10, 0, 16, 0, 1, 0,
0, 0, 0, 0, 0, 8,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 70, 130, 2, 0, 0, 0, 70, 130,
32, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
3, 0, 0, 0, 16, 0, 1, 0, 0, 0, 16, 0,
0, 8, 66, 0, 16, 0, 0, 8, 18, 0, 16, 0,
1, 0, 0, 0, 70, 2, 1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 130, 32, 0, 0, 0, 70, 130, 32, 0, 0, 0,
0, 0, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0,
57, 0, 0, 11, 18, 0, 16, 0, 0, 8, 34, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 10, 128, 32, 0,
0, 0, 0, 0, 0, 0,
0, 0, 31, 0, 4, 3,
10, 0, 16, 0, 0, 0,
0, 0, 29, 0, 0, 10,
114, 0, 16, 0, 0, 0,
0, 0, 2, 64, 0, 0,
230, 174, 37, 61, 230, 174,
37, 61, 230, 174, 37, 61,
0, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
56, 0, 0, 10, 114, 0,
16, 0, 2, 0, 0, 0,
70, 2, 16, 0, 1, 0,
0, 0, 2, 64, 0, 0,
145, 131, 158, 61, 145, 131,
158, 61, 145, 131, 158, 61,
0, 0, 0, 0, 0, 0,
0, 10, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 174, 71,
97, 61, 174, 71, 97, 61,
174, 71, 97, 61, 0, 0,
0, 0, 56, 0, 0, 11,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 128,
129, 0, 0, 0, 3, 0,
0, 0, 2, 64, 0, 0,
111, 167, 114, 63, 111, 167,
114, 63, 111, 167, 114, 63,
0, 0, 0, 0, 47, 0,
0, 5, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
56, 0, 0, 10, 114, 0,
16, 0, 3, 0, 0, 0,
70, 2, 16, 0, 3, 0,
0, 0, 2, 64, 0, 0,
154, 153, 25, 64, 154, 153,
25, 64, 154, 153, 25, 64,
0, 0, 0, 0, 25, 0,
0, 5, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
55, 0, 0, 9, 114, 0,
16, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0,
70, 2, 16, 0, 0, 0, 70, 2, 16, 0, 0, 0,
0, 0, 70, 130, 32, 0,
0, 0, 0, 0, 3, 0,
0, 0, 16, 0, 0, 8,
66, 0, 16, 0, 1, 0,
0, 0, 70, 2, 16, 0, 0, 0, 70, 2, 16, 0,
0, 0, 0, 0, 70, 130,
32, 0, 0, 0, 0, 0,
4, 0, 0, 0, 57, 0,
0, 11, 18, 0, 16, 0,
0, 0, 0, 0, 2, 64,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
10, 128, 32, 0, 0, 0,
0, 0, 0, 0, 0, 0,
31, 0, 4, 3, 10, 0,
16, 0, 0, 0, 0, 0,
29, 0, 0, 10, 114, 0,
16, 0, 0, 0, 0, 0,
2, 64, 0, 0, 230, 174,
37, 61, 230, 174, 37, 61,
230, 174, 37, 61, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
2, 0, 0, 0, 70, 2, 2, 0, 0, 0, 70, 2,
16, 0, 1, 0, 0, 0,
2, 64, 0, 0, 145, 131,
158, 61, 145, 131, 158, 61,
145, 131, 158, 61, 0, 0,
0, 0, 0, 0, 0, 10,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 2, 64,
0, 0, 174, 71, 97, 61,
174, 71, 97, 61, 174, 71,
97, 61, 0, 0, 0, 0,
56, 0, 0, 11, 114, 0,
16, 0, 3, 0, 0, 0, 16, 0, 3, 0, 0, 0,
21, 0, 0, 1, 54, 0, 70, 2, 16, 128, 129, 0,
0, 0, 3, 0, 0, 0,
2, 64, 0, 0, 111, 167,
114, 63, 111, 167, 114, 63,
111, 167, 114, 63, 0, 0,
0, 0, 47, 0, 0, 5,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 56, 0,
0, 10, 114, 0, 16, 0,
3, 0, 0, 0, 70, 2,
16, 0, 3, 0, 0, 0,
2, 64, 0, 0, 154, 153,
25, 64, 154, 153, 25, 64,
154, 153, 25, 64, 0, 0,
0, 0, 25, 0, 0, 5,
114, 0, 16, 0, 3, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 55, 0,
0, 9, 114, 0, 16, 0,
1, 0, 0, 0, 70, 2,
16, 0, 0, 0, 0, 0,
70, 2, 16, 0, 2, 0,
0, 0, 70, 2, 16, 0,
3, 0, 0, 0, 21, 0,
0, 1, 56, 0, 0, 8,
114, 0, 16, 0, 0, 0,
0, 0, 70, 2, 16, 0,
1, 0, 0, 0, 86, 133,
32, 0, 0, 0, 0, 0,
0, 0, 0, 0, 54, 0,
0, 5, 130, 0, 16, 0, 0, 5, 130, 0, 16, 0,
1, 0, 0, 0, 1, 64, 0, 0, 0, 0, 1, 64,
0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 128, 63,
56, 0, 0, 7, 242, 32, 56, 0, 0, 7, 242, 32,
16, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
70, 14, 16, 0, 1, 0, 70, 14, 16, 0, 0, 0,
0, 0, 70, 30, 16, 0, 0, 0, 70, 30, 16, 0,
2, 0, 0, 0, 62, 0, 2, 0, 0, 0, 62, 0,
0, 1, 83, 84, 65, 84, 0, 1, 83, 84, 65, 84,
116, 0, 0, 0, 23, 0, 116, 0, 0, 0, 24, 0,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 3, 0,
0, 0, 12, 0, 0, 0, 0, 0, 13, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
@ -435,12 +445,12 @@ const BYTE g_main[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82, 68, 69, 70, 112, 2, 82, 68, 69, 70, 100, 2,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
248, 0, 0, 0, 5, 0, 248, 0, 0, 0, 5, 0,
0, 0, 28, 0, 0, 0, 0, 0, 28, 0, 0, 0,
0, 4, 255, 255, 0, 1, 0, 4, 255, 255, 0, 1,
0, 0, 69, 2, 0, 0, 0, 0, 57, 2, 0, 0,
188, 0, 0, 0, 3, 0, 188, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -487,46 +497,44 @@ const BYTE g_main[] =
0, 0, 224, 1, 0, 0, 0, 0, 224, 1, 0, 0,
0, 0, 0, 0, 240, 1, 0, 0, 0, 0, 240, 1,
0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0,
4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0,
0, 0, 224, 1, 0, 0, 0, 0, 224, 1, 0, 0,
0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 252, 1,
0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 0, 0,
4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 224, 1, 0, 0, 0, 0, 224, 1, 0, 0,
0, 0, 0, 0, 14, 2, 0, 0, 0, 0, 4, 2,
0, 0, 12, 0, 0, 0, 0, 0, 12, 0, 0, 0,
4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 224, 1, 0, 0, 0, 0, 224, 1, 0, 0,
0, 0, 0, 0, 21, 2, 0, 0, 0, 0, 12, 2,
0, 0, 16, 0, 0, 0, 0, 0, 16, 0, 0, 0,
16, 0, 0, 0, 2, 0, 16, 0, 0, 0, 2, 0,
0, 0, 32, 2, 0, 0, 0, 0, 20, 2, 0, 0,
0, 0, 0, 0, 48, 2, 0, 0, 0, 0, 36, 2,
0, 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 0,
16, 0, 0, 0, 2, 0, 16, 0, 0, 0, 2, 0,
0, 0, 32, 2, 0, 0, 0, 0, 20, 2, 0, 0,
0, 0, 0, 0, 55, 2, 0, 0, 0, 0, 43, 2,
0, 0, 48, 0, 0, 0, 0, 0, 48, 0, 0, 0,
16, 0, 0, 0, 2, 0, 16, 0, 0, 0, 2, 0,
0, 0, 32, 2, 0, 0, 0, 0, 20, 2, 0, 0,
0, 0, 0, 0, 62, 2, 0, 0, 0, 0, 50, 2,
0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0,
16, 0, 0, 0, 2, 0, 16, 0, 0, 0, 2, 0,
0, 0, 32, 2, 0, 0, 0, 0, 20, 2, 0, 0,
0, 0, 0, 0, 115, 99, 0, 0, 0, 0, 115, 99,
82, 71, 66, 95, 111, 117, 82, 71, 66, 95, 111, 117,
116, 112, 117, 116, 0, 171, 116, 112, 117, 116, 0, 171,
171, 171, 0, 0, 3, 0, 171, 171, 0, 0, 3, 0,
1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83, 68, 82, 95, 119, 104, 99, 111, 108, 111, 114, 95,
105, 116, 101, 108, 101, 118, 115, 99, 97, 108, 101, 0,
101, 108, 0, 72, 68, 82, 117, 110, 117, 115, 101, 100,
95, 119, 104, 105, 116, 101, 49, 0, 117, 110, 117, 115,
108, 101, 118, 101, 108, 0, 101, 100, 50, 0, 89, 111,
109, 97, 120, 67, 76, 76, 102, 102, 115, 101, 116, 0,
0, 89, 111, 102, 102, 115,
101, 116, 0, 171, 171, 171,
1, 0, 3, 0, 1, 0, 1, 0, 3, 0, 1, 0,
4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 82, 99, 0, 0, 0, 0, 82, 99,

View File

@ -77,12 +77,20 @@ typedef struct
typedef struct typedef struct
{ {
float scRGB_output; float scRGB_output;
float SDR_whitelevel; float color_scale;
float HDR_whitelevel; float unused1;
float maxCLL; float unused2;
float YCbCr_matrix[16]; float YCbCr_matrix[16];
} PixelShaderConstants; } PixelShaderConstants;
typedef struct
{
ID3D11Buffer *constants;
SDL_bool scRGB_output;
float color_scale;
const float *shader_params;
} PixelShaderState;
/* Per-vertex data */ /* Per-vertex data */
typedef struct typedef struct
{ {
@ -147,7 +155,6 @@ typedef struct
size_t vertexBufferSizes[8]; size_t vertexBufferSizes[8];
ID3D11VertexShader *vertexShader; ID3D11VertexShader *vertexShader;
ID3D11PixelShader *pixelShaders[NUM_SHADERS]; ID3D11PixelShader *pixelShaders[NUM_SHADERS];
ID3D11Buffer *pixelShaderConstants[NUM_SHADERS];
int blendModesCount; int blendModesCount;
D3D11_BlendMode *blendModes; D3D11_BlendMode *blendModes;
ID3D11SamplerState *nearestPixelSampler; ID3D11SamplerState *nearestPixelSampler;
@ -155,11 +162,6 @@ typedef struct
D3D_FEATURE_LEVEL featureLevel; D3D_FEATURE_LEVEL featureLevel;
SDL_bool pixelSizeChanged; SDL_bool pixelSizeChanged;
/* HDR state */
SDL_bool HDR_enabled;
int SDR_whitelevel;
int HDR_whitelevel;
/* Rasterizers */ /* Rasterizers */
ID3D11RasterizerState *mainRasterizer; ID3D11RasterizerState *mainRasterizer;
ID3D11RasterizerState *clippedRasterizer; ID3D11RasterizerState *clippedRasterizer;
@ -174,7 +176,7 @@ typedef struct
ID3D11RasterizerState *currentRasterizerState; ID3D11RasterizerState *currentRasterizerState;
ID3D11BlendState *currentBlendState; ID3D11BlendState *currentBlendState;
D3D11_Shader currentShader; D3D11_Shader currentShader;
const float *currentShaderParams[NUM_SHADERS]; PixelShaderState currentShaderState[NUM_SHADERS];
ID3D11ShaderResourceView *currentShaderResource; ID3D11ShaderResourceView *currentShaderResource;
ID3D11SamplerState *currentSampler; ID3D11SamplerState *currentSampler;
SDL_bool cliprectDirty; SDL_bool cliprectDirty;
@ -325,8 +327,8 @@ static void D3D11_ReleaseAll(SDL_Renderer *renderer)
for (i = 0; i < SDL_arraysize(data->pixelShaders); ++i) { for (i = 0; i < SDL_arraysize(data->pixelShaders); ++i) {
SAFE_RELEASE(data->pixelShaders[i]); SAFE_RELEASE(data->pixelShaders[i]);
} }
for (i = 0; i < SDL_arraysize(data->pixelShaderConstants); ++i) { for (i = 0; i < SDL_arraysize(data->currentShaderState); ++i) {
SAFE_RELEASE(data->pixelShaderConstants[i]); SAFE_RELEASE(data->currentShaderState[i].constants);
} }
SAFE_RELEASE(data->vertexShader); SAFE_RELEASE(data->vertexShader);
for (i = 0; i < SDL_arraysize(data->vertexBuffers); ++i) { for (i = 0; i < SDL_arraysize(data->vertexBuffers); ++i) {
@ -352,7 +354,7 @@ static void D3D11_ReleaseAll(SDL_Renderer *renderer)
data->currentRasterizerState = NULL; data->currentRasterizerState = NULL;
data->currentBlendState = NULL; data->currentBlendState = NULL;
data->currentShader = SHADER_NONE; data->currentShader = SHADER_NONE;
SDL_zero(data->currentShaderParams); SDL_zero(data->currentShaderState);
data->currentShaderResource = NULL; data->currentShaderResource = NULL;
data->currentSampler = NULL; data->currentSampler = NULL;
@ -380,21 +382,6 @@ static void D3D11_DestroyRenderer(SDL_Renderer *renderer)
SDL_free(renderer); SDL_free(renderer);
} }
static void D3D11_UpdateHDRState(SDL_Renderer *renderer)
{
D3D11_RenderData *data = (D3D11_RenderData *)renderer->driverdata;
/* Using some placeholder values here... */
data->HDR_enabled = SDL_TRUE;
if (renderer->output_colorspace == SDL_COLORSPACE_SCRGB && data->HDR_enabled) {
data->SDR_whitelevel = 200.0f;
data->HDR_whitelevel = 400.0f;
} else {
data->SDR_whitelevel = 80.0f;
data->HDR_whitelevel = 80.0f;
}
}
static D3D11_BLEND GetBlendFunc(SDL_BlendFactor factor) static D3D11_BLEND GetBlendFunc(SDL_BlendFactor factor)
{ {
switch (factor) { switch (factor) {
@ -736,8 +723,6 @@ static HRESULT D3D11_CreateDeviceResources(SDL_Renderer *renderer)
SDL_SetProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_D3D11_DEVICE_POINTER, data->d3dDevice); SDL_SetProperty(SDL_GetRendererProperties(renderer), SDL_PROP_RENDERER_D3D11_DEVICE_POINTER, data->d3dDevice);
D3D11_UpdateHDRState(renderer);
done: done:
SAFE_RELEASE(d3dDevice); SAFE_RELEASE(d3dDevice);
SAFE_RELEASE(d3dContext); SAFE_RELEASE(d3dContext);
@ -2139,6 +2124,9 @@ static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
const SDL_BlendMode blendMode = cmd->data.draw.blend; const SDL_BlendMode blendMode = cmd->data.draw.blend;
ID3D11BlendState *blendState = NULL; ID3D11BlendState *blendState = NULL;
SDL_bool updateSubresource = SDL_FALSE; SDL_bool updateSubresource = SDL_FALSE;
SDL_bool scRGB_output = SDL_RenderingLinearSpace(renderer);
float color_scale = cmd->data.draw.color_scale;
PixelShaderState *shader_state = &rendererData->currentShaderState[shader];
if (numShaderResources > 0) { if (numShaderResources > 0) {
shaderResource = shaderResources[0]; shaderResource = shaderResources[0];
@ -2212,20 +2200,15 @@ static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
rendererData->currentBlendState = blendState; rendererData->currentBlendState = blendState;
} }
if (!rendererData->pixelShaderConstants[shader] || if (!shader_state->constants ||
shader_params != rendererData->currentShaderParams[shader]) { scRGB_output != shader_state->scRGB_output ||
SAFE_RELEASE(rendererData->pixelShaderConstants[shader]); color_scale != shader_state->color_scale ||
shader_params != shader_state->shader_params) {
SAFE_RELEASE(shader_state->constants);
PixelShaderConstants constants; PixelShaderConstants constants;
if (renderer->output_colorspace == SDL_COLORSPACE_SCRGB) { constants.scRGB_output = (float)scRGB_output;
constants.scRGB_output = 1.0f; constants.color_scale = color_scale;
} else {
constants.scRGB_output = 0.0f;
}
constants.SDR_whitelevel = (float)rendererData->SDR_whitelevel;
constants.HDR_whitelevel = (float)rendererData->HDR_whitelevel;
constants.maxCLL = 400.0f;
if (shader_params) { if (shader_params) {
SDL_memcpy(constants.YCbCr_matrix, shader_params, sizeof(constants.YCbCr_matrix)); SDL_memcpy(constants.YCbCr_matrix, shader_params, sizeof(constants.YCbCr_matrix));
} }
@ -2240,12 +2223,16 @@ static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
SDL_zero(data); SDL_zero(data);
data.pSysMem = &constants; data.pSysMem = &constants;
HRESULT result = ID3D11Device_CreateBuffer(rendererData->d3dDevice, &desc, &data, &rendererData->pixelShaderConstants[shader]); HRESULT result = ID3D11Device_CreateBuffer(rendererData->d3dDevice, &desc, &data, &shader_state->constants);
if (FAILED(result)) { if (FAILED(result)) {
WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device::CreateBuffer [create shader constants]"), result); WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device::CreateBuffer [create shader constants]"), result);
return -1; return -1;
} }
rendererData->currentShaderParams[shader] = shader_params; shader_state->scRGB_output = scRGB_output;
shader_state->color_scale = color_scale;
shader_state->shader_params = shader_params;
/* Force the shader parameters to be re-set */
rendererData->currentShader = SHADER_NONE; rendererData->currentShader = SHADER_NONE;
} }
if (shader != rendererData->currentShader) { if (shader != rendererData->currentShader) {
@ -2255,8 +2242,8 @@ static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
} }
} }
ID3D11DeviceContext_PSSetShader(rendererData->d3dContext, rendererData->pixelShaders[shader], NULL, 0); ID3D11DeviceContext_PSSetShader(rendererData->d3dContext, rendererData->pixelShaders[shader], NULL, 0);
if (rendererData->pixelShaderConstants[shader]) { if (rendererData->currentShaderState[shader].constants) {
ID3D11DeviceContext_PSSetConstantBuffers(rendererData->d3dContext, 0, 1, &rendererData->pixelShaderConstants[shader]); ID3D11DeviceContext_PSSetConstantBuffers(rendererData->d3dContext, 0, 1, &rendererData->currentShaderState[shader].constants);
} }
rendererData->currentShader = shader; rendererData->currentShader = shader;
} }
@ -2338,8 +2325,7 @@ static void D3D11_InvalidateCachedState(SDL_Renderer *renderer)
data->currentRenderTargetView = NULL; data->currentRenderTargetView = NULL;
data->currentRasterizerState = NULL; data->currentRasterizerState = NULL;
data->currentBlendState = NULL; data->currentBlendState = NULL;
data->currentShader = NUM_SHADERS; data->currentShader = SHADER_NONE;
SDL_zero(data->currentShaderParams);
data->currentShaderResource = NULL; data->currentShaderResource = NULL;
data->currentSampler = NULL; data->currentSampler = NULL;
data->cliprectDirty = SDL_TRUE; data->cliprectDirty = SDL_TRUE;
@ -2401,14 +2387,11 @@ static int D3D11_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
SDL_bool convert_color = SDL_RenderingLinearSpace(renderer); SDL_bool convert_color = SDL_RenderingLinearSpace(renderer);
SDL_FColor color = cmd->data.color.color; SDL_FColor color = cmd->data.color.color;
if (convert_color) { if (convert_color) {
float light_scale = (float)rendererData->SDR_whitelevel / 80.0f;
SDL_ConvertToLinear(&color); SDL_ConvertToLinear(&color);
color.r *= light_scale;
color.g *= light_scale;
color.b *= light_scale;
} }
color.r *= cmd->data.color.color_scale;
color.g *= cmd->data.color.color_scale;
color.b *= cmd->data.color.color_scale;
ID3D11DeviceContext_ClearRenderTargetView(rendererData->d3dContext, D3D11_GetCurrentRenderTargetView(renderer), &color.r); ID3D11DeviceContext_ClearRenderTargetView(rendererData->d3dContext, D3D11_GetCurrentRenderTargetView(renderer), &color.r);
break; break;
} }

View File

@ -15,7 +15,7 @@
; -------------------- ----- ------ -------- -------- ------- ------ ; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw ; SV_Target 0 xyzw 0 TARGET float xyzw
; ;
; shader hash: 0f0685d8a85217756714f0196741b112 ; shader hash: d512f5b2e04a35d44c7a732df68d8917
; ;
; Pipeline Runtime Information: ; Pipeline Runtime Information:
; ;
@ -47,9 +47,9 @@
; { ; {
; ;
; float scRGB_output; ; Offset: 0 ; float scRGB_output; ; Offset: 0
; float SDR_whitelevel; ; Offset: 4 ; float color_scale; ; Offset: 4
; float HDR_whitelevel; ; Offset: 8 ; float unused1; ; Offset: 8
; float maxCLL; ; Offset: 12 ; float unused2; ; Offset: 12
; float4 Yoffset; ; Offset: 16 ; float4 Yoffset; ; Offset: 16
; float4 Rcoeff; ; Offset: 32 ; float4 Rcoeff; ; Offset: 32
; float4 Gcoeff; ; Offset: 48 ; float4 Gcoeff; ; Offset: 48
@ -91,17 +91,13 @@ define void @main() {
%4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) %4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis) %5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef) ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
%6 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0) ; CBufferLoadLegacy(handle,regIndex) %6 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%7 = extractvalue %dx.types.CBufRet.f32 %6, 0 %7 = extractvalue %dx.types.CBufRet.f32 %6, 1
%8 = fcmp fast une float %7, 0.000000e+00 %8 = fmul fast float %7, %2
%9 = extractvalue %dx.types.CBufRet.f32 %6, 1 %9 = fmul fast float %7, %3
%10 = fmul fast float %9, 0x3F899999A0000000 %10 = fmul fast float %7, %4
%11 = select i1 %8, float %10, float 1.000000e+00 call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
%12 = fmul fast float %11, %2 call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %9) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
%13 = fmul fast float %11, %3 call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %10) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
%14 = fmul fast float %11, %4
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %12) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %13) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %14) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %5) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %5) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void ret void
} }
@ -152,12 +148,12 @@ attributes #2 = { nounwind readonly }
#endif #endif
const unsigned char g_main[] = { const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0x43, 0x2e, 0xac, 0x2f, 0x03, 0x47, 0x70, 0x30, 0x44, 0x58, 0x42, 0x43, 0xe5, 0x40, 0xb7, 0x7a, 0xe3, 0x4e, 0xbb, 0x7b,
0x31, 0x59, 0x46, 0x88, 0x63, 0x21, 0xb6, 0x28, 0x01, 0x00, 0x00, 0x00, 0x59, 0x24, 0xcb, 0xd3, 0x7c, 0x44, 0x29, 0xbc, 0x01, 0x00, 0x00, 0x00,
0x55, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
0x01, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x01, 0x09, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0xed, 0x08, 0x00, 0x00,
0x1d, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -199,10 +195,10 @@ const unsigned char g_main[] = {
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x14, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0xc0, 0x06, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0xac, 0x06, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x00, 0x60, 0x00, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xa8, 0x06, 0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x94, 0x06, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa2, 0x01, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
@ -245,189 +241,70 @@ const unsigned char g_main[] = {
0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x0b, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1a, 0x50, 0x06, 0xe5, 0x50, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1a, 0x50, 0x06, 0xe5, 0x50,
0x12, 0x85, 0x50, 0x10, 0x85, 0x51, 0x20, 0x05, 0x54, 0x60, 0x05, 0x18, 0x12, 0x85, 0x50, 0x10, 0x85, 0x51, 0x20, 0x05, 0x54, 0x60, 0x05, 0x18,
0x50, 0x04, 0xe5, 0x51, 0x0a, 0x65, 0x42, 0xa5, 0x24, 0xca, 0xa0, 0x10, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0xca, 0xa0, 0x10, 0x46, 0x00, 0x8a,
0x46, 0x00, 0x8a, 0xa0, 0x40, 0xe8, 0xd5, 0x00, 0xd1, 0x19, 0x00, 0xaa, 0xa0, 0x40, 0xe8, 0xd5, 0x00, 0xd1, 0x19, 0x00, 0xaa, 0x33, 0x00, 0x64,
0x33, 0x00, 0x64, 0xc7, 0x72, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x72, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
0x20, 0x10, 0x08, 0x04, 0x00, 0x79, 0x18, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xaa, 0x00, 0x00,
0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xa2, 0x98, 0x20, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xa2, 0x98, 0x20,
0x10, 0xc6, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04, 0x41, 0x01, 0x6e, 0x6e, 0x10, 0xc6, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04, 0x41, 0x01, 0x6e, 0x6e,
0x82, 0x40, 0x1c, 0x1b, 0x86, 0x03, 0x21, 0x26, 0x08, 0xd5, 0xc7, 0x64, 0x82, 0x40, 0x1c, 0x1b, 0x86, 0x03, 0x21, 0x26, 0x08, 0x55, 0xc7, 0x64,
0xe8, 0xcd, 0x6d, 0x8e, 0x2e, 0xcc, 0x8d, 0x6e, 0x6e, 0x82, 0x40, 0x20, 0xe8, 0xcd, 0x6d, 0x8e, 0x2e, 0xcc, 0x8d, 0x6e, 0x6e, 0x82, 0x40, 0x20,
0x1b, 0x10, 0x42, 0x59, 0x88, 0x61, 0x60, 0x80, 0x0d, 0x41, 0xb3, 0x81, 0x1b, 0x10, 0x42, 0x59, 0x88, 0x61, 0x60, 0x80, 0x0d, 0x41, 0xb3, 0x81,
0x00, 0x00, 0x07, 0x98, 0x20, 0x50, 0x1e, 0x99, 0xb9, 0x31, 0xa9, 0x23, 0x00, 0x00, 0x07, 0x98, 0x20, 0x50, 0x1c, 0x99, 0xb9, 0x31, 0xa9, 0x23,
0xa1, 0xaf, 0xb7, 0x3a, 0x3a, 0xb8, 0x3a, 0xba, 0x09, 0x02, 0x91, 0x4c, 0xa1, 0xaf, 0xb7, 0x3a, 0x3a, 0xb8, 0x3a, 0xba, 0x09, 0x02, 0x91, 0x4c,
0x10, 0x08, 0x65, 0x82, 0x40, 0x2c, 0x13, 0x84, 0xa7, 0xdb, 0x80, 0x20, 0x10, 0x08, 0x65, 0x82, 0x40, 0x2c, 0x1b, 0x0c, 0x24, 0x92, 0x88, 0x89,
0x91, 0x44, 0x4c, 0x14, 0x55, 0xd1, 0x99, 0x22, 0x92, 0xfa, 0xba, 0x43, 0xe2, 0x32, 0xf6, 0xc6, 0xf6, 0x26, 0xf7, 0x35, 0x37, 0x16, 0xc6, 0x56,
0x4b, 0xa3, 0x2b, 0x63, 0x2b, 0xb3, 0x2b, 0x63, 0x9b, 0x20, 0x10, 0xcc, 0x36, 0x41, 0x20, 0x98, 0x09, 0xc2, 0xb3, 0x6d, 0x40, 0x10, 0x4b, 0xba,
0x06, 0x04, 0xb9, 0x24, 0x6c, 0xa2, 0xa8, 0x8a, 0x0e, 0x12, 0x91, 0xd4, 0x26, 0x8a, 0xc2, 0x78, 0xd4, 0xb9, 0xd5, 0xcd, 0x95, 0x91, 0xc5, 0x4c,
0xd7, 0x1d, 0x5a, 0x1a, 0x5d, 0x19, 0x5b, 0x99, 0x5d, 0x19, 0xdb, 0x04, 0x10, 0x88, 0x66, 0x83, 0x81, 0x68, 0xd2, 0x36, 0x51, 0x3c, 0xea, 0xdc,
0x81, 0x68, 0x36, 0x18, 0x88, 0x26, 0x6d, 0x13, 0x45, 0xa3, 0x2d, 0x0c, 0xea, 0xe6, 0xca, 0xc8, 0x64, 0x26, 0x08, 0x84, 0xb3, 0xc1, 0x40, 0x3a,
0x6f, 0x88, 0x89, 0x69, 0x82, 0x40, 0x38, 0x1b, 0x0c, 0xa4, 0x93, 0xbc, 0xc9, 0x9b, 0x28, 0x1e, 0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13,
0x89, 0xe2, 0x91, 0xf5, 0x66, 0x66, 0x36, 0x57, 0x46, 0x37, 0x41, 0x20, 0x04, 0xe2, 0xd9, 0x60, 0x20, 0x60, 0x20, 0x85, 0xc1, 0x44, 0xd1, 0x90,
0x9e, 0x0d, 0x06, 0x02, 0x06, 0x52, 0x18, 0x4c, 0x14, 0x0d, 0xa9, 0xb1, 0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x03, 0x19,
0xb7, 0x32, 0x33, 0xb3, 0x09, 0x02, 0x01, 0x6d, 0x30, 0x90, 0x31, 0x90, 0x03, 0x89, 0x0c, 0x26, 0x8a, 0xc6, 0xd1, 0xd8, 0x5b, 0x99, 0x99, 0xd9,
0xc8, 0x60, 0xa2, 0x68, 0x1c, 0x8d, 0xbd, 0x95, 0x99, 0x99, 0x4d, 0x10, 0x04, 0x81, 0x88, 0x36, 0x18, 0x88, 0x19, 0x48, 0x67, 0x30, 0x51, 0x34,
0x88, 0x68, 0x83, 0x81, 0x98, 0x81, 0x74, 0x06, 0x13, 0x45, 0x43, 0x68, 0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x08, 0x84, 0xb4, 0xc1, 0x40,
0xec, 0xad, 0xcc, 0xcc, 0x6c, 0x82, 0x40, 0x48, 0x1b, 0x0c, 0x24, 0x0d, 0xd2, 0x40, 0x52, 0x83, 0x89, 0xda, 0x90, 0x30, 0x55, 0xc6, 0x7d, 0x62,
0x24, 0x35, 0x98, 0xa8, 0x0d, 0x09, 0x63, 0x65, 0xdc, 0x27, 0x06, 0x65, 0x50, 0x06, 0x68, 0xb0, 0x06, 0x1b, 0x06, 0x02, 0x62, 0x83, 0x09, 0x82,
0x80, 0x06, 0x6b, 0xb0, 0x61, 0x20, 0x20, 0x36, 0x98, 0x20, 0x08, 0xc0, 0x00, 0x6c, 0x00, 0x36, 0x0c, 0xc4, 0x1b, 0xbc, 0xc1, 0x86, 0x00, 0x0e,
0x06, 0x60, 0xc3, 0x40, 0xbc, 0xc1, 0x1b, 0x6c, 0x08, 0xe0, 0x60, 0xc3, 0x36, 0x0c, 0x83, 0x1b, 0xc4, 0xc1, 0x04, 0xc1, 0xf2, 0x36, 0x04, 0x73,
0x30, 0xb8, 0x41, 0x1c, 0x4c, 0x10, 0x2c, 0x30, 0xd8, 0x10, 0xcc, 0x01, 0x40, 0xa2, 0x2d, 0x2c, 0xcd, 0x8d, 0xcb, 0x94, 0xd5, 0x17, 0xd4, 0xdb,
0x89, 0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x5c, 0x1a, 0x5d, 0xda, 0x9b, 0xdb, 0x04, 0xa1, 0xa8, 0x26, 0x08, 0x85,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0xe2, 0x9a, 0x20, 0x14, 0xd8, 0xb5, 0x21, 0x20, 0x26, 0x08, 0xc5, 0x35, 0x41, 0x28, 0xb0, 0x0d, 0x0b,
0x86, 0x80, 0x98, 0x20, 0x14, 0xd9, 0x04, 0xa1, 0xd0, 0x36, 0x2c, 0x84, 0x61, 0x07, 0x77, 0x80, 0x07, 0x79, 0xa0, 0x07, 0x83, 0x1e, 0x10, 0x7b,
0x1d, 0xdc, 0x01, 0x1e, 0xe4, 0x81, 0x1e, 0x0c, 0x7a, 0x40, 0xec, 0x01, 0x00, 0x10, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20,
0x40, 0x84, 0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x14, 0xd9, 0x86, 0x65, 0xe8, 0x83, 0x3b, 0xd8, 0x83, 0x3c, 0xf0, 0x83,
0x6c, 0x1b, 0x96, 0xa1, 0x0f, 0xee, 0x60, 0x0f, 0xf2, 0xc0, 0x0f, 0x06, 0xc1, 0x0f, 0x86, 0x3d, 0x00, 0x26, 0x08, 0xc4, 0xc4, 0x62, 0xe8, 0x89,
0x3f, 0x18, 0xf6, 0x00, 0x98, 0x20, 0x10, 0x13, 0x8b, 0xa1, 0x27, 0xa6, 0xe9, 0x49, 0x6a, 0x82, 0x40, 0x50, 0x1b, 0x04, 0x49, 0x14, 0x36, 0x2c,
0x27, 0xa9, 0x09, 0x02, 0x41, 0x6d, 0x10, 0x24, 0x51, 0xd8, 0xb0, 0x80, 0xa0, 0x10, 0x0a, 0x77, 0xb0, 0x07, 0x79, 0xe0, 0x07, 0x83, 0x1e, 0x80,
0x42, 0x28, 0xdc, 0xc1, 0x1e, 0xe4, 0x81, 0x1f, 0x0c, 0x7a, 0x00, 0x0a, 0xc2, 0x1e, 0x8c, 0xc2, 0x86, 0x81, 0x0f, 0xfe, 0x80, 0x14, 0x98, 0x4c,
0x7b, 0x30, 0x0a, 0x1b, 0x06, 0x3e, 0xf8, 0x03, 0x52, 0x60, 0x32, 0x65, 0x59, 0x7d, 0x51, 0x85, 0xc9, 0x9d, 0x95, 0xd1, 0x4d, 0x10, 0x0a, 0x6d,
0xf5, 0x45, 0x15, 0x26, 0x77, 0x56, 0x46, 0x37, 0x41, 0x28, 0xb8, 0x0d, 0xc3, 0x42, 0x98, 0xc2, 0x1d, 0x9c, 0x42, 0x1e, 0xec, 0xc1, 0xa0, 0x07,
0x0b, 0x61, 0x0a, 0x77, 0x70, 0x0a, 0x79, 0xb0, 0x07, 0x83, 0x1e, 0x10, 0xc4, 0x1e, 0x8c, 0xc2, 0x86, 0x00, 0x15, 0x36, 0x0c, 0xa5, 0x90, 0x0a,
0x7b, 0x30, 0x0a, 0x1b, 0x02, 0x54, 0xd8, 0x30, 0x94, 0x42, 0x2a, 0x00, 0xc0, 0x86, 0xc2, 0x0d, 0xea, 0x40, 0x15, 0x1e, 0x80, 0x86, 0x19, 0xdb,
0x1b, 0x0a, 0x37, 0xa8, 0x03, 0x55, 0x78, 0x00, 0x1a, 0x66, 0x6c, 0x6f, 0x5b, 0x18, 0xdd, 0x1c, 0x8b, 0x34, 0xb7, 0x39, 0xba, 0x39, 0x1a, 0x73,
0x61, 0x74, 0x73, 0x13, 0x04, 0xa2, 0x62, 0x91, 0xe6, 0x36, 0x47, 0x37, 0x69, 0x67, 0x5f, 0x6c, 0x64, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xe6, 0xe8,
0x37, 0x41, 0x20, 0x2c, 0x1a, 0x73, 0x69, 0x67, 0x5f, 0x6c, 0x64, 0x34, 0x36, 0x20, 0xac, 0x20, 0xb5, 0x82, 0x28, 0xb8, 0xc2, 0xf5, 0x0a, 0x57,
0xe6, 0xd2, 0xce, 0xbe, 0xe6, 0xe8, 0x36, 0x20, 0xac, 0xd0, 0x0a, 0xae, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29,
0xf0, 0x0a, 0xb0, 0x80, 0xc5, 0x02, 0x56, 0x85, 0x8d, 0xcd, 0xae, 0xcd, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd,
0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54, 0x21, 0xc3, 0x73, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12, 0x10, 0x4d, 0xc8, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8,
0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6, 0x04, 0x45, 0x1d, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48, 0x19, 0x32,
0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa6, 0x37, 0xb2, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29,
0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45, 0xae, 0x6c, 0xee, 0x81, 0x53, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c, 0xc8, 0xcd,
0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0xe0, 0x54, 0x22, 0xc3, 0x73, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a, 0xc0, 0x06,
0xa1, 0xcb, 0x83, 0x2b, 0x0b, 0x72, 0x73, 0x7b, 0xa3, 0x0b, 0xa3, 0x4b, 0x71, 0x50, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c,
0x7b, 0x73, 0x9b, 0x9b, 0x22, 0xb0, 0x41, 0x1c, 0xd4, 0x21, 0xc3, 0x73, 0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0x30, 0x07, 0x75, 0xc8, 0xf0, 0x5c,
0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0x2b, 0x9b, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6,
0x12, 0xcc, 0x41, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a, 0xb9, 0x3c, 0x04, 0xaa, 0xd0, 0x85, 0x0c, 0xcf, 0x65, 0xec, 0xad, 0xce, 0x8d, 0xae,
0xa8, 0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0x81, 0x2a, 0x74, 0x21, 0xc3, 0x4c, 0x6e, 0x6e, 0x4a, 0xf0, 0x0a, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
0x73, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x9b, 0x9b, 0x12, 0xc4,
0x02, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00,
0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00,
0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
0x04, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03,
0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5,
0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f,
0xdc, 0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0x06, 0x85, 0xd8, 0xa8, 0x52, 0x17, 0x75, 0x67, 0x14, 0xf0,
0x19, 0x67, 0x41, 0xb1, 0x12, 0x44, 0x58, 0x49, 0x4c, 0x30, 0x06, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x83, 0x01, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32,
0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14,
0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x21, 0x00, 0x00,
0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4,
0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a,
0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x5c, 0x23, 0x00, 0x25, 0x00, 0x14,
0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84,
0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb,
0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2,
0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e,
0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30,
0x42, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x90, 0x47, 0x70, 0x20,
0x60, 0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x92,
0x10, 0x32, 0xc6, 0x18, 0x73, 0xce, 0x49, 0x34, 0x1d, 0x08, 0x00, 0x00,
0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x0b, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1a, 0x50, 0x04, 0x65, 0x50,
0x1e, 0x54, 0x4a, 0xa2, 0x0c, 0x0a, 0x61, 0x04, 0xa0, 0x08, 0x0a, 0x84,
0xea, 0x0c, 0x00, 0xd9, 0xb1, 0x1c, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x08, 0x04, 0x02, 0x01, 0x79, 0x18, 0x00, 0x00, 0x5c, 0x00, 0x00,
0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xa2, 0x98, 0x20,
0x10, 0xc6, 0x06, 0x61, 0x20, 0x26, 0x08, 0xc4, 0xb1, 0x41, 0x18, 0x0c,
0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0x95, 0x44, 0x60,
0x82, 0x40, 0x20, 0x1b, 0x10, 0x42, 0x59, 0x88, 0x61, 0x60, 0x80, 0x0d,
0x41, 0xb3, 0x81, 0x00, 0x00, 0x07, 0x98, 0x20, 0x58, 0xd3, 0x86, 0x00,
0x9a, 0x20, 0x08, 0x00, 0x89, 0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56,
0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0x82,
0x99, 0x20, 0x14, 0xcd, 0x86, 0x80, 0x98, 0x20, 0x14, 0xce, 0x04, 0xa1,
0x78, 0x36, 0x2c, 0x04, 0x55, 0x59, 0x17, 0x36, 0x60, 0x44, 0x06, 0x10,
0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20, 0x14, 0xd0,
0x86, 0x65, 0xd8, 0xaa, 0xec, 0xe2, 0x06, 0x6e, 0xc8, 0x80, 0x09, 0x02,
0x91, 0xb0, 0x18, 0x7a, 0x62, 0x7a, 0x92, 0x9a, 0x20, 0x10, 0xca, 0x04,
0x81, 0x58, 0x36, 0x08, 0x60, 0x10, 0x06, 0x1b, 0x16, 0xef, 0xab, 0xb2,
0x8b, 0x1b, 0x30, 0x2f, 0x13, 0x83, 0x0d, 0x83, 0xd6, 0x8d, 0x01, 0x93,
0x29, 0xab, 0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09, 0x42, 0x11,
0x6d, 0x58, 0x88, 0x32, 0xa8, 0xcc, 0xe0, 0xca, 0x06, 0x8c, 0xc8, 0xc4,
0x60, 0x43, 0x70, 0x06, 0x1b, 0x06, 0x32, 0x40, 0x03, 0x60, 0x43, 0x21,
0x4d, 0x69, 0xf0, 0x00, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8,
0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32,
0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5,
0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60, 0xd4, 0x21, 0xc3, 0x73,
0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b,
0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4,
0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x4e, 0x1d, 0x32, 0x3c, 0x17, 0xbb, 0xb4,
0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0x01, 0x54,
0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd,
0x8d, 0x6e, 0x6e, 0x4a, 0x90, 0x06, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
@ -461,23 +338,137 @@ const unsigned char g_main[] = {
0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4,
0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00,
0x00, 0x61, 0x20, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00,
0x2c, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xf4, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x12, 0xf5, 0xb2, 0xe0, 0x4a, 0x35,
0xa8, 0x94, 0x00, 0x91, 0xb2, 0x2b, 0x84, 0x19, 0x80, 0x52, 0x28, 0x39, 0xd4, 0x4c, 0x7a, 0x73, 0x2d, 0xf6, 0x8d, 0x89, 0x17, 0x44, 0x58, 0x49,
0x1a, 0x63, 0x04, 0x20, 0x08, 0x82, 0xf8, 0x37, 0x46, 0xd0, 0x9a, 0x73, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00,
0x4e, 0x7a, 0x23, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
0x69, 0x84, 0x83, 0x65, 0xca, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x00, 0xf0, 0x05, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00,
0x1e, 0x62, 0x65, 0xd0, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6, 0x00, 0x79, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00,
0x97, 0x5c, 0xda, 0x82, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04,
0x06, 0x0a, 0xb6, 0x45, 0xc9, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08,
0x61, 0xb0, 0x64, 0x5c, 0xa5, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b,
0x03, 0x06, 0x4d, 0xd1, 0x8d, 0x26, 0x04, 0xc0, 0x70, 0x44, 0x80, 0x38, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52,
0xdf, 0x68, 0xc2, 0x10, 0x58, 0xb0, 0xc8, 0x67, 0xba, 0x21, 0x68, 0x06, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32,
0x0b, 0x14, 0xf9, 0x98, 0xa0, 0xc8, 0xc7, 0x06, 0x45, 0x3e, 0x23, 0x06, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81,
0x09, 0x00, 0x82, 0x60, 0x80, 0xa8, 0xc1, 0x64, 0x06, 0x66, 0xd0, 0x0d, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00,
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xa8, 0xc1, 0x64, 0x06, 0x66, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff,
0x70, 0x09, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xa8, 0xc1, 0x64, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03,
0x06, 0x66, 0xc0, 0x05, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xa8, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8,
0xc1, 0x64, 0x06, 0x66, 0xf0, 0x29, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60,
0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00,
0x00, 0x21, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85,
0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90,
0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x5c, 0x23,
0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00,
0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06,
0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a,
0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19,
0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05,
0xab, 0x10, 0x8a, 0x30, 0x42, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85,
0x90, 0x47, 0x70, 0x20, 0x60, 0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46,
0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0xc6, 0x18, 0x73, 0xce, 0x49, 0x34,
0x1d, 0x08, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x00,
0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1a,
0x50, 0x04, 0x65, 0x50, 0x1e, 0x54, 0x4a, 0xa2, 0x0c, 0x0a, 0x61, 0x04,
0xa0, 0x08, 0x0a, 0x84, 0xea, 0x0c, 0x00, 0xd9, 0xb1, 0x1c, 0x86, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x01, 0x79, 0x18, 0x00,
0x00, 0x5c, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
0x04, 0xa2, 0x98, 0x20, 0x10, 0xc6, 0x06, 0x61, 0x20, 0x26, 0x08, 0xc4,
0xb1, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
0x08, 0x95, 0x44, 0x60, 0x82, 0x40, 0x20, 0x1b, 0x10, 0x42, 0x59, 0x88,
0x61, 0x60, 0x80, 0x0d, 0x41, 0xb3, 0x81, 0x00, 0x00, 0x07, 0x98, 0x20,
0x58, 0xd3, 0x86, 0x00, 0x9a, 0x20, 0x08, 0x00, 0x89, 0xb6, 0xb0, 0x34,
0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x13, 0x84, 0x82, 0x99, 0x20, 0x14, 0xcd, 0x86, 0x80, 0x98, 0x20,
0x14, 0xce, 0x04, 0xa1, 0x78, 0x36, 0x2c, 0x04, 0x55, 0x59, 0x17, 0x36,
0x60, 0x44, 0x06, 0x10, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22,
0x9a, 0x20, 0x14, 0xd0, 0x86, 0x65, 0xd8, 0xaa, 0xec, 0xe2, 0x06, 0x6e,
0xc8, 0x80, 0x09, 0x02, 0x91, 0xb0, 0x18, 0x7a, 0x62, 0x7a, 0x92, 0x9a,
0x20, 0x10, 0xca, 0x04, 0x81, 0x58, 0x36, 0x08, 0x60, 0x10, 0x06, 0x1b,
0x16, 0xef, 0xab, 0xb2, 0x8b, 0x1b, 0x30, 0x2f, 0x13, 0x83, 0x0d, 0x83,
0xd6, 0x8d, 0x01, 0x93, 0x29, 0xab, 0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32,
0xba, 0x09, 0x42, 0x11, 0x6d, 0x58, 0x88, 0x32, 0xa8, 0xcc, 0xe0, 0xca,
0x06, 0x8c, 0xc8, 0xc4, 0x60, 0x43, 0x70, 0x06, 0x1b, 0x06, 0x32, 0x40,
0x03, 0x60, 0x43, 0x21, 0x4d, 0x69, 0xf0, 0x00, 0x55, 0xd8, 0xd8, 0xec,
0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32,
0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1,
0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60,
0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a,
0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca,
0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x4e, 0x1d, 0x32,
0x3c, 0x17, 0xbb, 0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba,
0xb2, 0x29, 0x01, 0x54, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e,
0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x90, 0x06, 0x00, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x00, 0x00,
0x00, 0x71, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d,
0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c,
0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x04, 0xd2, 0x70, 0xf9,
0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58,
0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50,
0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d,
0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10,
0x0c, 0x80, 0x34, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x29, 0x00, 0x00,
0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
0x00, 0x44, 0x0a, 0x61, 0x06, 0xa0, 0x14, 0x4a, 0xae, 0xec, 0xa8, 0x94,
0x00, 0xbd, 0x11, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x00,
0x5d, 0xc4, 0x52, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18,
0x1b, 0x32, 0x59, 0xcd, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x06,
0x97, 0x50, 0x17, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xd1,
0x29, 0x15, 0xe6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x78,
0x8b, 0x95, 0x49, 0xca, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x1d,
0x52, 0x68, 0xa3, 0x09, 0x41, 0x60, 0x81, 0x21, 0x1f, 0x13, 0x0c, 0xf9,
0xd8, 0x60, 0xc8, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x90, 0x31,
0x78, 0xbe, 0xcf, 0x1a, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0x19,
0x83, 0xe7, 0xfb, 0x18, 0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x90,
0x31, 0x78, 0xbe, 0xaf, 0x0a, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00,
0x19, 0x83, 0xe7, 0xfb, 0x30, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00 0x00
}; };

View File

@ -8,9 +8,9 @@ struct PixelShaderInput
cbuffer Constants : register(b1) cbuffer Constants : register(b1)
{ {
float scRGB_output; float scRGB_output;
float SDR_whitelevel; float color_scale;
float HDR_whitelevel; float unused1;
float maxCLL; float unused2;
float4 Yoffset; float4 Yoffset;
float4 Rcoeff; float4 Rcoeff;
@ -50,11 +50,12 @@ float sRGBfromLinear(float v)
float4 GetOutputColor(float4 rgba) float4 GetOutputColor(float4 rgba)
{ {
if (scRGB_output) { float4 output;
rgba.rgb = scRGBfromNits(rgba.rgb * SDR_whitelevel);
}
return rgba; output.rgb = rgba.rgb * color_scale;
output.a = rgba.a;
return output;
} }
float4 GetOutputColorFromSRGB(float3 rgb) float4 GetOutputColorFromSRGB(float3 rgb)
@ -62,14 +63,30 @@ float4 GetOutputColorFromSRGB(float3 rgb)
float4 output; float4 output;
if (scRGB_output) { if (scRGB_output) {
output.r = sRGBtoLinear(rgb.r); rgb.r = sRGBtoLinear(rgb.r);
output.g = sRGBtoLinear(rgb.g); rgb.g = sRGBtoLinear(rgb.g);
output.b = sRGBtoLinear(rgb.b); rgb.b = sRGBtoLinear(rgb.b);
rgb = scRGBfromNits(rgb * SDR_whitelevel);
} else {
output.rgb = rgb.rgb;
} }
output.rgb = rgb * color_scale;
output.a = 1.0; output.a = 1.0;
return output; return output;
} }
float4 GetOutputColorFromSCRGB(float3 rgb)
{
float4 output;
output.rgb = rgb * color_scale;
output.a = 1.0;
if (!scRGB_output) {
output.r = sRGBfromLinear(output.r);
output.g = sRGBfromLinear(output.g);
output.b = sRGBfromLinear(output.b);
output.rgb = clamp(output.rgb, 0.0, 1.0);
}
return output;
}

View File

@ -15,7 +15,7 @@
; -------------------- ----- ------ -------- -------- ------- ------ ; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw ; SV_Target 0 xyzw 0 TARGET float xyzw
; ;
; shader hash: 968795c6bef99c8e3efb14dda2a7210c ; shader hash: ca751de73a0041df73e385f66530634e
; ;
; Pipeline Runtime Information: ; Pipeline Runtime Information:
; ;
@ -47,9 +47,9 @@
; { ; {
; ;
; float scRGB_output; ; Offset: 0 ; float scRGB_output; ; Offset: 0
; float SDR_whitelevel; ; Offset: 4 ; float color_scale; ; Offset: 4
; float HDR_whitelevel; ; Offset: 8 ; float unused1; ; Offset: 8
; float maxCLL; ; Offset: 12 ; float unused2; ; Offset: 12
; float4 Yoffset; ; Offset: 16 ; float4 Yoffset; ; Offset: 16
; float4 Rcoeff; ; Offset: 32 ; float4 Rcoeff; ; Offset: 32
; float4 Gcoeff; ; Offset: 48 ; float4 Gcoeff; ; Offset: 48
@ -179,95 +179,91 @@ define void @main() {
%85 = fmul fast float %74, 0xC066B147C0000000 %85 = fmul fast float %74, 0xC066B147C0000000
%86 = call float @dx.op.tertiary.f32(i32 46, float 0xBFB9C0B9A0000000, float %77, float %85) ; FMad(a,b,c) %86 = call float @dx.op.tertiary.f32(i32 46, float 0xBFB9C0B9A0000000, float %77, float %85) ; FMad(a,b,c)
%87 = call float @dx.op.tertiary.f32(i32 46, float 0x3FF1E66780000000, float %78, float %86) ; FMad(a,b,c) %87 = call float @dx.op.tertiary.f32(i32 46, float 0x3FF1E66780000000, float %78, float %86) ; FMad(a,b,c)
%88 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 0) ; CBufferLoadLegacy(handle,regIndex) %88 = fmul fast float %81, 0x3F899999A0000000
%89 = extractvalue %dx.types.CBufRet.f32 %88, 3 %89 = fmul fast float %84, 0x3F899999A0000000
%90 = fdiv fast float %81, %89 %90 = fmul fast float %87, 0x3F899999A0000000
%91 = fdiv fast float %84, %89 %91 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%92 = fdiv fast float %87, %89 %92 = extractvalue %dx.types.CBufRet.f32 %91, 1
%93 = extractvalue %dx.types.CBufRet.f32 %88, 2 %93 = fmul fast float %88, %92
%94 = fmul fast float %93, %90 %94 = fmul fast float %89, %92
%95 = fmul fast float %93, %91 %95 = fmul fast float %90, %92
%96 = fmul fast float %93, %92 %96 = extractvalue %dx.types.CBufRet.f32 %91, 0
%97 = fmul fast float %94, 0x3F899999A0000000 %97 = fcmp fast une float %96, 0.000000e+00
%98 = fmul fast float %95, 0x3F899999A0000000 br i1 %97, label %141, label %98
%99 = fmul fast float %96, 0x3F899999A0000000
%100 = extractvalue %dx.types.CBufRet.f32 %88, 0
%101 = fcmp fast une float %100, 0.000000e+00
br i1 %101, label %145, label %102
; <label>:102 ; preds = %0 ; <label>:98 ; preds = %0
%103 = fcmp fast ugt float %97, 0x3F69A5C380000000 %99 = fcmp fast ugt float %93, 0x3F69A5C380000000
br i1 %103, label %106, label %104 br i1 %99, label %102, label %100
; <label>:104 ; preds = %102 ; <label>:100 ; preds = %98
%105 = fmul fast float %94, 0x3FC4AC0840000000 %101 = fmul fast float %93, 0x4029D70A40000000
br label %113 br label %109
; <label>:106 ; preds = %102 ; <label>:102 ; preds = %98
%107 = call float @dx.op.unary.f32(i32 6, float %97) ; FAbs(value) %103 = call float @dx.op.unary.f32(i32 6, float %93) ; FAbs(value)
%108 = call float @dx.op.unary.f32(i32 23, float %107) ; Log(value) %104 = call float @dx.op.unary.f32(i32 23, float %103) ; Log(value)
%109 = fmul fast float %108, 0x3FDAAAAAA0000000 %105 = fmul fast float %104, 0x3FDAAAAAA0000000
%110 = call float @dx.op.unary.f32(i32 21, float %109) ; Exp(value) %106 = call float @dx.op.unary.f32(i32 21, float %105) ; Exp(value)
%111 = fmul fast float %110, 0x3FF0E147A0000000 %107 = fmul fast float %106, 0x3FF0E147A0000000
%112 = fadd fast float %111, 0xBFAC28F5C0000000 %108 = fadd fast float %107, 0xBFAC28F5C0000000
br label %113 br label %109
; <label>:113 ; preds = %106, %104 ; <label>:109 ; preds = %102, %100
%114 = phi float [ %105, %104 ], [ %112, %106 ] %110 = phi float [ %101, %100 ], [ %108, %102 ]
%115 = fcmp fast ugt float %98, 0x3F69A5C380000000 %111 = fcmp fast ugt float %94, 0x3F69A5C380000000
br i1 %115, label %118, label %116 br i1 %111, label %114, label %112
; <label>:116 ; preds = %113 ; <label>:112 ; preds = %109
%117 = fmul fast float %95, 0x3FC4AC0840000000 %113 = fmul fast float %94, 0x4029D70A40000000
br label %125 br label %121
; <label>:118 ; preds = %113 ; <label>:114 ; preds = %109
%119 = call float @dx.op.unary.f32(i32 6, float %98) ; FAbs(value) %115 = call float @dx.op.unary.f32(i32 6, float %94) ; FAbs(value)
%120 = call float @dx.op.unary.f32(i32 23, float %119) ; Log(value) %116 = call float @dx.op.unary.f32(i32 23, float %115) ; Log(value)
%121 = fmul fast float %120, 0x3FDAAAAAA0000000 %117 = fmul fast float %116, 0x3FDAAAAAA0000000
%122 = call float @dx.op.unary.f32(i32 21, float %121) ; Exp(value) %118 = call float @dx.op.unary.f32(i32 21, float %117) ; Exp(value)
%123 = fmul fast float %122, 0x3FF0E147A0000000 %119 = fmul fast float %118, 0x3FF0E147A0000000
%124 = fadd fast float %123, 0xBFAC28F5C0000000 %120 = fadd fast float %119, 0xBFAC28F5C0000000
br label %125 br label %121
; <label>:125 ; preds = %118, %116 ; <label>:121 ; preds = %114, %112
%126 = phi float [ %117, %116 ], [ %124, %118 ] %122 = phi float [ %113, %112 ], [ %120, %114 ]
%127 = fcmp fast ugt float %99, 0x3F69A5C380000000 %123 = fcmp fast ugt float %95, 0x3F69A5C380000000
br i1 %127, label %130, label %128 br i1 %123, label %126, label %124
; <label>:128 ; preds = %125 ; <label>:124 ; preds = %121
%129 = fmul fast float %96, 0x3FC4AC0840000000 %125 = fmul fast float %95, 0x4029D70A40000000
br label %137 br label %133
; <label>:130 ; preds = %125 ; <label>:126 ; preds = %121
%131 = call float @dx.op.unary.f32(i32 6, float %99) ; FAbs(value) %127 = call float @dx.op.unary.f32(i32 6, float %95) ; FAbs(value)
%132 = call float @dx.op.unary.f32(i32 23, float %131) ; Log(value) %128 = call float @dx.op.unary.f32(i32 23, float %127) ; Log(value)
%133 = fmul fast float %132, 0x3FDAAAAAA0000000 %129 = fmul fast float %128, 0x3FDAAAAAA0000000
%134 = call float @dx.op.unary.f32(i32 21, float %133) ; Exp(value) %130 = call float @dx.op.unary.f32(i32 21, float %129) ; Exp(value)
%135 = fmul fast float %134, 0x3FF0E147A0000000 %131 = fmul fast float %130, 0x3FF0E147A0000000
%136 = fadd fast float %135, 0xBFAC28F5C0000000 %132 = fadd fast float %131, 0xBFAC28F5C0000000
br label %137 br label %133
; <label>:137 ; preds = %130, %128 ; <label>:133 ; preds = %126, %124
%138 = phi float [ %129, %128 ], [ %136, %130 ] %134 = phi float [ %125, %124 ], [ %132, %126 ]
%139 = call float @dx.op.binary.f32(i32 35, float %114, float 0.000000e+00) ; FMax(a,b) %135 = call float @dx.op.binary.f32(i32 35, float %110, float 0.000000e+00) ; FMax(a,b)
%140 = call float @dx.op.binary.f32(i32 35, float %126, float 0.000000e+00) ; FMax(a,b) %136 = call float @dx.op.binary.f32(i32 35, float %122, float 0.000000e+00) ; FMax(a,b)
%141 = call float @dx.op.binary.f32(i32 35, float %138, float 0.000000e+00) ; FMax(a,b) %137 = call float @dx.op.binary.f32(i32 35, float %134, float 0.000000e+00) ; FMax(a,b)
%142 = call float @dx.op.binary.f32(i32 36, float %139, float 1.000000e+00) ; FMin(a,b) %138 = call float @dx.op.binary.f32(i32 36, float %135, float 1.000000e+00) ; FMin(a,b)
%143 = call float @dx.op.binary.f32(i32 36, float %140, float 1.000000e+00) ; FMin(a,b) %139 = call float @dx.op.binary.f32(i32 36, float %136, float 1.000000e+00) ; FMin(a,b)
%144 = call float @dx.op.binary.f32(i32 36, float %141, float 1.000000e+00) ; FMin(a,b) %140 = call float @dx.op.binary.f32(i32 36, float %137, float 1.000000e+00) ; FMin(a,b)
br label %145 br label %141
; <label>:145 ; preds = %137, %0 ; <label>:141 ; preds = %133, %0
%146 = phi float [ %97, %0 ], [ %142, %137 ] %142 = phi float [ %93, %0 ], [ %138, %133 ]
%147 = phi float [ %98, %0 ], [ %143, %137 ] %143 = phi float [ %94, %0 ], [ %139, %133 ]
%148 = phi float [ %99, %0 ], [ %144, %137 ] %144 = phi float [ %95, %0 ], [ %140, %133 ]
%149 = fmul fast float %146, %5 %145 = fmul fast float %142, %5
%150 = fmul fast float %147, %6 %146 = fmul fast float %143, %6
%151 = fmul fast float %148, %7 %147 = fmul fast float %144, %7
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %149) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %145) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %150) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %146) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %151) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %147) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void ret void
} }
@ -285,10 +281,10 @@ declare %dx.types.ResRet.f32 @dx.op.sample.f32(i32, %dx.types.Handle, %dx.types.
declare float @dx.op.dot3.f32(i32, float, float, float, float, float, float) #0 declare float @dx.op.dot3.f32(i32, float, float, float, float, float, float) #0
; Function Attrs: nounwind readnone ; Function Attrs: nounwind readnone
declare float @dx.op.binary.f32(i32, float, float) #0 declare float @dx.op.unary.f32(i32, float) #0
; Function Attrs: nounwind readnone ; Function Attrs: nounwind readnone
declare float @dx.op.unary.f32(i32, float) #0 declare float @dx.op.binary.f32(i32, float, float) #0
; Function Attrs: nounwind readonly ; Function Attrs: nounwind readonly
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2 declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
@ -340,12 +336,12 @@ attributes #2 = { nounwind readonly }
#endif #endif
const unsigned char g_main[] = { const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0xd7, 0xb2, 0xf3, 0x32, 0x99, 0x2d, 0x1b, 0xbc, 0x44, 0x58, 0x42, 0x43, 0xb9, 0x73, 0x6f, 0xd7, 0x57, 0x11, 0xe0, 0x9b,
0x77, 0xc4, 0xc1, 0x3d, 0x37, 0xe0, 0x46, 0x69, 0x01, 0x00, 0x00, 0x00, 0x59, 0x35, 0x56, 0xad, 0x95, 0x35, 0x69, 0xd8, 0x01, 0x00, 0x00, 0x00,
0xa9, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x95, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0xd1, 0x0b, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0xc9, 0x0b, 0x00, 0x00,
0xed, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0xe5, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -404,10 +400,10 @@ const unsigned char g_main[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0xc4, 0x08, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0xbc, 0x08, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x00, 0x60, 0x00, 0x00, 0x00, 0x2f, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xac, 0x08, 0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xa4, 0x08, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x26, 0x02, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
@ -430,8 +426,8 @@ const unsigned char g_main[] = {
0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70, 0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d, 0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc4, 0x40, 0x0c, 0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
0x03, 0x45, 0x65, 0x18, 0x88, 0x81, 0xa6, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x14, 0x15, 0x62, 0x20, 0x86, 0x81, 0xa6, 0xa3, 0x86, 0xcb, 0x9f, 0xb0,
0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11,
0x31, 0x0c, 0xc3, 0x50, 0x88, 0x8a, 0x60, 0x08, 0xb2, 0x4a, 0x31, 0x10, 0x31, 0x0c, 0xc3, 0x50, 0x88, 0x8a, 0x60, 0x08, 0xb2, 0x4a, 0x31, 0x10,
0xc3, 0x30, 0x10, 0x36, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xd0, 0xc3, 0x30, 0x10, 0x36, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xd0,
@ -476,11 +472,11 @@ const unsigned char g_main[] = {
0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0,
0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac, 0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac,
0x00, 0x03, 0xca, 0xa3, 0x74, 0x03, 0x0a, 0x57, 0x80, 0x8a, 0x92, 0x28, 0x00, 0x03, 0xca, 0xa3, 0x68, 0x03, 0x0a, 0x56, 0x80, 0x8a, 0x92, 0x28,
0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xad, 0x06, 0x28, 0x9c, 0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xad, 0x06, 0x28, 0x9c,
0x01, 0x20, 0x71, 0x06, 0x80, 0xc6, 0x19, 0x00, 0x2a, 0x67, 0x00, 0xc8, 0x01, 0x20, 0x71, 0x06, 0x80, 0xc6, 0x19, 0x00, 0x2a, 0x67, 0x00, 0xc8,
0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20,
0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xcf, 0x00, 0x00,
0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
@ -500,371 +496,369 @@ const unsigned char g_main[] = {
0xc0, 0x86, 0x40, 0xdb, 0x40, 0x48, 0xc0, 0xb5, 0x4d, 0x10, 0xc4, 0x80, 0xc0, 0x86, 0x40, 0xdb, 0x40, 0x48, 0xc0, 0xb5, 0x4d, 0x10, 0xc4, 0x80,
0x0c, 0xc8, 0xcc, 0x8d, 0x49, 0x1d, 0x09, 0x7d, 0xbd, 0xd5, 0xd1, 0xc1, 0x0c, 0xc8, 0xcc, 0x8d, 0x49, 0x1d, 0x09, 0x7d, 0xbd, 0xd5, 0xd1, 0xc1,
0xd5, 0xd1, 0x4d, 0x10, 0x08, 0x68, 0x82, 0x40, 0x44, 0x13, 0x04, 0x4d, 0xd5, 0xd1, 0x4d, 0x10, 0x08, 0x68, 0x82, 0x40, 0x44, 0x13, 0x04, 0x4d,
0x0c, 0x36, 0x20, 0x88, 0xf7, 0x11, 0x60, 0xd0, 0x34, 0x61, 0x40, 0x67, 0x0c, 0x36, 0x20, 0x88, 0xf7, 0x11, 0x60, 0xd0, 0x34, 0x61, 0xc0, 0x65,
0x8a, 0x48, 0xea, 0xeb, 0x0e, 0x2d, 0x8d, 0xae, 0x8c, 0xad, 0xcc, 0xae, 0xec, 0x8d, 0xed, 0x4d, 0xee, 0x6b, 0x6e, 0x2c, 0x8c, 0xad, 0x6c, 0x82,
0x8c, 0x6d, 0x82, 0x40, 0x48, 0x1b, 0x0c, 0x64, 0x0c, 0x3e, 0x32, 0x00, 0x40, 0x48, 0x1b, 0x10, 0x64, 0x0c, 0x3e, 0x32, 0x00, 0x83, 0xa6, 0x09,
0x83, 0x86, 0x0e, 0x12, 0x91, 0xd4, 0xd7, 0x1d, 0x5a, 0x1a, 0x5d, 0x19, 0x03, 0x1e, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x31, 0x13, 0x04, 0x62,
0x5b, 0x99, 0x5d, 0x19, 0xdb, 0x04, 0x81, 0x98, 0x36, 0x20, 0x88, 0x19, 0xda, 0x60, 0x20, 0x66, 0xf0, 0x9d, 0x01, 0x18, 0x34, 0x3c, 0xea, 0xdc,
0x7c, 0x67, 0x00, 0x06, 0x4d, 0x13, 0x06, 0x34, 0xda, 0xc2, 0xf0, 0x86, 0xea, 0xe6, 0xca, 0xc8, 0x64, 0x26, 0x08, 0x04, 0xb5, 0xc1, 0x40, 0xd2,
0x98, 0x98, 0x26, 0x08, 0x04, 0xb5, 0x01, 0x41, 0xd2, 0xe0, 0x53, 0x03, 0xe0, 0x53, 0x03, 0x30, 0x68, 0x78, 0x64, 0xbd, 0x99, 0x99, 0xcd, 0x95,
0x30, 0x68, 0x9a, 0x30, 0xe0, 0x91, 0xf5, 0x66, 0x66, 0x36, 0x57, 0x46, 0xd1, 0x4d, 0x10, 0x88, 0x6a, 0x03, 0x82, 0xb0, 0xc1, 0xd7, 0x06, 0x60,
0x37, 0x41, 0x20, 0xaa, 0x0d, 0x08, 0xc2, 0x06, 0x5f, 0x1b, 0x80, 0x41, 0xd0, 0x34, 0x61, 0x40, 0x43, 0x6a, 0xec, 0xad, 0xcc, 0xcc, 0x6c, 0x82,
0xd3, 0x84, 0x01, 0x0d, 0xa9, 0xb1, 0xb7, 0x32, 0x33, 0xb3, 0x09, 0x02, 0x40, 0x58, 0x1b, 0x10, 0xe4, 0x0d, 0x3e, 0x38, 0x00, 0x83, 0xa6, 0x09,
0x61, 0x6d, 0x40, 0x90, 0x37, 0xf8, 0xe0, 0x00, 0x0c, 0x9a, 0x26, 0x0c, 0x03, 0x1a, 0x47, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x13, 0x04, 0xe2, 0xda,
0x68, 0x1c, 0x8d, 0xbd, 0x95, 0x99, 0x99, 0x4d, 0x10, 0x88, 0x6b, 0x03, 0x80, 0x20, 0x72, 0xf0, 0xcd, 0x01, 0x18, 0x34, 0x4d, 0x18, 0xd0, 0x10,
0x82, 0xc8, 0xc1, 0x37, 0x07, 0x60, 0xd0, 0x34, 0x61, 0x40, 0x43, 0x68, 0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd8, 0x06, 0x04, 0xa9,
0xec, 0xad, 0xcc, 0xcc, 0x6c, 0x82, 0x40, 0x60, 0x1b, 0x10, 0xa4, 0x0e, 0x83, 0xcf, 0x0e, 0xc0, 0xa0, 0x69, 0xc2, 0x60, 0x43, 0x52, 0x89, 0x41,
0x3e, 0x3b, 0x00, 0x83, 0xa6, 0x09, 0x83, 0x0d, 0x49, 0x25, 0x06, 0x65, 0x19, 0xa0, 0xc1, 0x1a, 0xb8, 0x41, 0x1c, 0xd0, 0xc1, 0x1d, 0x6c, 0x18,
0x80, 0x06, 0x6b, 0xe0, 0x06, 0x71, 0x40, 0x07, 0x77, 0xb0, 0x61, 0x20, 0x88, 0x0e, 0x0f, 0x26, 0x08, 0x02, 0xb0, 0x01, 0xd8, 0x30, 0x10, 0x7b,
0x3a, 0x3c, 0x98, 0x20, 0x08, 0xc0, 0x06, 0x60, 0xc3, 0x40, 0xec, 0xc1, 0xb0, 0x07, 0x1b, 0x02, 0x3e, 0xd8, 0x30, 0x0c, 0x7a, 0xd0, 0x07, 0x13,
0x1e, 0x6c, 0x08, 0xf8, 0x60, 0xc3, 0x30, 0xe8, 0x41, 0x1f, 0x4c, 0x10, 0x04, 0x33, 0x38, 0x83, 0x0d, 0xc1, 0x1f, 0x90, 0x68, 0x0b, 0x4b, 0x73,
0xcc, 0xe0, 0x0c, 0x36, 0x04, 0x7f, 0x40, 0xa2, 0x2d, 0x2c, 0xcd, 0x8d, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6,
0xcb, 0x94, 0xd5, 0x17, 0xd4, 0xdb, 0x5c, 0x1a, 0x5d, 0xda, 0x9b, 0xdb, 0x36, 0x41, 0x28, 0xb8, 0x09, 0x42, 0xd1, 0x6d, 0x08, 0x88, 0x09, 0x42,
0x04, 0xa1, 0xe0, 0x26, 0x08, 0x45, 0xb7, 0x21, 0x20, 0x26, 0x08, 0x85, 0xe1, 0x4d, 0x10, 0x8a, 0x6f, 0xc3, 0x42, 0x88, 0xc2, 0x28, 0x90, 0x42,
0x37, 0x41, 0x28, 0xbe, 0x0d, 0x0b, 0x21, 0x0a, 0xa3, 0x40, 0x0a, 0xa5, 0x29, 0x98, 0xc2, 0x60, 0x0a, 0xc4, 0x29, 0x00, 0x44, 0xa8, 0x8a, 0xb0,
0x60, 0x0a, 0x83, 0x29, 0x10, 0xa7, 0x00, 0x10, 0xa1, 0x2a, 0xc2, 0x1a, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26, 0x08, 0x05, 0x18, 0x6c, 0x10, 0xbe,
0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20, 0x14, 0x60, 0xb0, 0x41, 0xf8, 0xbe, 0x6f, 0xc3, 0x32, 0xa4, 0xc2, 0x28, 0x9c, 0x42, 0x29, 0xa8, 0xc2, 0xa0,
0x0d, 0xcb, 0x90, 0x0a, 0xa3, 0x70, 0x0a, 0xa5, 0xa0, 0x0a, 0x83, 0x2a, 0x0a, 0xc3, 0x29, 0xac, 0x02, 0x8b, 0xa1, 0x27, 0xa6, 0x27, 0xa9, 0x09,
0x0c, 0xa7, 0xb0, 0x0a, 0x2c, 0x86, 0x9e, 0x98, 0x9e, 0xa4, 0x26, 0x08, 0x02, 0x91, 0x6d, 0x10, 0x3e, 0x57, 0xd8, 0xb0, 0x30, 0xad, 0x30, 0x0a,
0x44, 0xb6, 0x41, 0xf8, 0x5c, 0x61, 0xc3, 0xc2, 0xb4, 0xc2, 0x28, 0x9c, 0xa7, 0x50, 0x0a, 0xaa, 0x30, 0x98, 0x02, 0x73, 0x0a, 0xaf, 0xb0, 0x61,
0x42, 0x29, 0xa8, 0xc2, 0x60, 0x0a, 0xcc, 0x29, 0xbc, 0xc2, 0x86, 0x01, 0x40, 0x05, 0x56, 0x80, 0x05, 0x26, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72,
0x15, 0x58, 0x01, 0x16, 0x98, 0x4c, 0x59, 0x7d, 0x51, 0x85, 0xc9, 0x9d, 0x67, 0x65, 0x74, 0x13, 0x84, 0x22, 0x0c, 0x36, 0x2c, 0x84, 0x2c, 0x8c,
0x95, 0xd1, 0x4d, 0x10, 0x8a, 0x30, 0xd8, 0xb0, 0x10, 0xb2, 0x30, 0x0a, 0xc2, 0x2c, 0x94, 0xc2, 0x29, 0x0c, 0xa6, 0x40, 0x9c, 0xc2, 0x2b, 0x6c,
0xb3, 0x50, 0x0a, 0xa7, 0x30, 0x98, 0x02, 0x71, 0x0a, 0xaf, 0xb0, 0x21, 0x08, 0x68, 0x61, 0xc3, 0x10, 0x0b, 0xb5, 0x00, 0x6c, 0x28, 0xf4, 0x20,
0xa0, 0x85, 0x0d, 0x43, 0x2c, 0xd4, 0x02, 0xb0, 0xa1, 0xd0, 0x83, 0x50, 0x14, 0x6c, 0x81, 0x03, 0x88, 0x88, 0xc9, 0x85, 0xb9, 0x8d, 0xa1, 0x95,
0xb0, 0x05, 0x0e, 0x20, 0x22, 0x26, 0x17, 0xe6, 0x36, 0x86, 0x56, 0x36, 0xcd, 0xd1, 0x30, 0x63, 0x7b, 0x0b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x1a,
0x47, 0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e, 0x6e, 0x82, 0x40, 0x68, 0x2c, 0x8b, 0x34, 0xb7, 0x39, 0xba, 0xb9, 0x09, 0x02, 0xb1, 0xd1, 0x98, 0x4b,
0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x26, 0x08, 0xc4, 0x46, 0x63, 0x2e, 0xed, 0x3b, 0xfb, 0x62, 0x23, 0xa3, 0x31, 0x97, 0x76, 0xf6, 0x35, 0x47, 0x47,
0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x5c, 0xda, 0xd9, 0xd7, 0x1c, 0x1d, 0x11, 0x84, 0xae, 0x0c, 0xef, 0xcb, 0xed, 0x4d, 0xae, 0x6d, 0x03, 0x83, 0x0b,
0xba, 0x32, 0xbc, 0x2f, 0xb7, 0x37, 0xb9, 0xb6, 0x0d, 0x0c, 0x2e, 0x90, 0x64, 0x90, 0x0b, 0xba, 0xb0, 0x0b, 0xbc, 0xd0, 0x0b, 0x88, 0x2f, 0x90,
0x41, 0x2e, 0xe8, 0xc2, 0x2e, 0xf0, 0x42, 0x2f, 0x20, 0xbe, 0x40, 0x06, 0xc1, 0x2f, 0x30, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca,
0xbf, 0xc0, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9,
0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e,
0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32, 0x3c, 0x17, 0xbb, 0x30, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x50, 0xd4, 0x21, 0xc3, 0x73, 0x99,
0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51, 0x87, 0x0c, 0xcf, 0x65, 0x0e, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12,
0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac, 0x8c, 0x6d, 0x4a, 0x80, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6,
0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0xca, 0xe6, 0xa6, 0x04, 0x5b, 0x25, 0x32, 0x3c, 0x17, 0xba, 0x3c, 0xb8,
0x9b, 0x9b, 0x12, 0x6c, 0x95, 0xc8, 0xf0, 0x5c, 0xe8, 0xf2, 0xe0, 0xca, 0xb2, 0x20, 0x37, 0xb7, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9,
0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0xe6, 0xa6, 0x29, 0x02, 0x1e, 0xf4, 0x41, 0x1d, 0x32, 0x3c, 0x17, 0xbb, 0xb4, 0xb2,
0x08, 0x78, 0xd0, 0x07, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0xc1, 0x1f, 0xd4,
0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0x7f, 0x50, 0x87, 0x21, 0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73,
0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0xa3, 0x9b, 0x9b, 0x12, 0xd8, 0x42, 0x17, 0x32, 0x3c, 0x97, 0xb1, 0xb7,
0x6e, 0x6e, 0x4a, 0x60, 0x0b, 0x5d, 0xc8, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0x3a, 0x37, 0xba, 0x32, 0xb9, 0xb9, 0x29, 0xc1, 0x2f, 0x00, 0x00, 0x00,
0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04, 0xbf, 0x00, 0x79, 0x18, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x66, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e,
0x00, 0x56, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e, 0x80, 0x34, 0x40, 0x84, 0x80, 0x34, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0xdb, 0xc1, 0x36, 0x5c, 0xbe,
0xf9, 0xc5, 0x6d, 0xdb, 0xc1, 0x36, 0x5c, 0xbe, 0xf3, 0xf8, 0x42, 0x40, 0xf3, 0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84,
0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x5f, 0x01, 0x08, 0x98, 0x5f, 0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f,
0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x44, 0x04, 0x30, 0x2f, 0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x04, 0xce,
0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x04, 0xce, 0x70, 0xf9, 0xce, 0xe3, 0x70, 0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x5b, 0xc0,
0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x5b, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d, 0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc,
0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71, 0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81, 0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x86,
0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x86, 0x20, 0x0d, 0x97, 0xef, 0x20, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x44, 0x44, 0x13, 0x02, 0x44, 0x98,
0x3c, 0xfe, 0x44, 0x44, 0x13, 0x02, 0x44, 0x98, 0x5f, 0xdc, 0xb6, 0x19, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40,
0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00,
0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00,
0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x75, 0x1d, 0xe7, 0x3a, 0x00, 0x41,
0x00, 0x96, 0x87, 0x95, 0xc6, 0xbe, 0xf9, 0x9c, 0x8e, 0x3e, 0xfb, 0x14, 0xdf, 0x73, 0xe3, 0x85, 0xf6, 0x65, 0x30, 0x63, 0x4e, 0x44, 0x58, 0x49,
0xdd, 0xa2, 0xa7, 0x21, 0x0c, 0x44, 0x58, 0x49, 0x4c, 0xb4, 0x0c, 0x00, 0x4c, 0xa8, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x2a, 0x03, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x00, 0x00, 0x44, 0x58, 0x49, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x9c, 0x0c, 0x00, 0x00, 0x90, 0x0c, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x24, 0x03, 0x00, 0x00, 0x21, 0x03, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b,
0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62,
0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32,
0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81,
0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00,
0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff,
0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03,
0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8,
0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60,
0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00,
0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85,
0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90,
0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xa0, 0xc1,
0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xa0, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x08, 0x40, 0x09, 0x00, 0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e,
0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40, 0x00, 0x29, 0xc6, 0x40, 0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20,
0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4, 0x88, 0x62, 0x20, 0xe4, 0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f,
0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98, 0x25, 0xa4, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40,
0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70, 0x50, 0x71, 0xcf, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd,
0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58, 0xb0, 0x10, 0x28, 0x58, 0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40,
0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d, 0x10, 0xc4, 0x40, 0x4d, 0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8,
0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc4, 0x40, 0x0c, 0x29, 0xc3, 0x40, 0x0c, 0x14, 0x15, 0x62, 0x20, 0x86, 0x81, 0xa6, 0xa3,
0x03, 0x45, 0x65, 0x18, 0x88, 0x81, 0xa6, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98,
0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0x0c, 0xc3, 0x50, 0x88, 0x8a, 0x60, 0x08,
0x31, 0x0c, 0xc3, 0x50, 0x88, 0x8a, 0x60, 0x08, 0xb2, 0x4a, 0x31, 0x10, 0xb2, 0x4a, 0x31, 0x10, 0xc3, 0x30, 0x10, 0x36, 0x47, 0x10, 0x14, 0x83,
0xc3, 0x30, 0x10, 0x36, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xd0, 0x21, 0x0a, 0x82, 0xd0, 0x68, 0x1b, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99,
0x68, 0x1b, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8, 0xda, 0x60, 0x1c, 0xd8, 0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16,
0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8, 0xca, 0x01, 0x1f, 0xe8, 0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14,
0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca, 0xf8, 0xc0, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f,
0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e,
0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc, 0xfc, 0x00, 0x0c, 0xfc, 0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e,
0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8, 0xe6, 0xe1, 0x17, 0xe8, 0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc,
0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0, 0x24, 0x06, 0xe3, 0xc0, 0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4,
0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40, 0x50, 0x0e, 0xf8, 0x40, 0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4,
0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50, 0xc0, 0x07, 0xf6, 0x50, 0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c,
0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0, 0x60, 0x0e, 0xec, 0xf0, 0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74,
0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0, 0xe0, 0x07, 0x60, 0xe0, 0x07, 0x48, 0xf0, 0x3e, 0x02, 0x2f, 0xe1, 0x9c,
0x07, 0x48, 0xf0, 0x3e, 0x02, 0x2f, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x46, 0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0x0c, 0xc3, 0xe0, 0x79, 0x9e,
0x92, 0x10, 0x32, 0x0c, 0xc3, 0xe0, 0x79, 0x9e, 0x47, 0xe2, 0x4d, 0xd2, 0x47, 0xe2, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c,
0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x20, 0x32, 0x1d, 0x88, 0x29,
0x44, 0xa0, 0x80, 0x20, 0x32, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00,
0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00,
0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67, 0x02, 0x02, 0x20, 0x00,
0x00, 0xc0, 0x90, 0x67, 0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8f, 0x05, 0x04, 0xc0,
0x00, 0x00, 0x80, 0x21, 0x8f, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08,
0x00, 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b, 0x10, 0x00, 0x03, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x81,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x81, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c,
0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04,
0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a,
0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42, 0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x70, 0x06,
0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x70, 0x06, 0x80, 0xc6, 0x19, 0x00, 0x80, 0xc6, 0x19, 0x00, 0x2a, 0x67, 0x00, 0xc8, 0x1c, 0xcb, 0x61, 0x08,
0x2a, 0x67, 0x00, 0xc8, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b,
0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0xd9, 0x10, 0x04, 0x13, 0x04, 0x42, 0x99, 0x20, 0x10, 0xcb, 0x06, 0x61,
0x04, 0x42, 0x99, 0x20, 0x10, 0xcb, 0x06, 0x61, 0x20, 0x26, 0x08, 0x04, 0x20, 0x26, 0x08, 0x04, 0xb3, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b,
0xb3, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x06, 0xc4, 0x20, 0x26, 0x08, 0x61, 0x80, 0x11, 0x98, 0x20, 0x10, 0xcd,
0x08, 0x61, 0x80, 0x11, 0x98, 0x20, 0x10, 0xcd, 0x04, 0x81, 0x70, 0x36, 0x04, 0x81, 0x70, 0x36, 0x08, 0x44, 0xb3, 0x21, 0x21, 0x94, 0x85, 0x20,
0x08, 0x44, 0xb3, 0x21, 0x21, 0x94, 0x85, 0x20, 0x06, 0x86, 0x70, 0x36, 0x06, 0x86, 0x70, 0x36, 0x24, 0x83, 0xb2, 0x10, 0xc3, 0xc0, 0x10, 0xce,
0x24, 0x83, 0xb2, 0x10, 0xc3, 0xc0, 0x10, 0xce, 0x06, 0xe1, 0x81, 0x26, 0x06, 0xe1, 0x81, 0x26, 0x08, 0x63, 0x90, 0x4d, 0x10, 0x88, 0x67, 0x03,
0x08, 0x63, 0x90, 0x4d, 0x10, 0x88, 0x67, 0x03, 0x42, 0x48, 0x0b, 0x31, 0x42, 0x48, 0x0b, 0x31, 0x0c, 0x13, 0xb0, 0x21, 0xa0, 0x26, 0x08, 0x65,
0x0c, 0x13, 0xb0, 0x21, 0xa0, 0x26, 0x08, 0x65, 0xa0, 0x6d, 0x40, 0x08, 0xa0, 0x6d, 0x40, 0x08, 0x6b, 0x21, 0x88, 0x81, 0x00, 0x36, 0x04, 0xd7,
0x6b, 0x21, 0x88, 0x81, 0x00, 0x36, 0x04, 0xd7, 0x06, 0x22, 0x02, 0x2a, 0x06, 0x22, 0x02, 0x2a, 0x6c, 0x82, 0x60, 0x06, 0xdb, 0x86, 0x40, 0x9b,
0x6c, 0x82, 0x60, 0x06, 0xdb, 0x86, 0x40, 0x9b, 0x20, 0x08, 0x00, 0x89, 0x20, 0x08, 0x00, 0x89, 0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56, 0x5f,
0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0x42, 0x9a,
0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0x42, 0x9a, 0x20, 0x14, 0xd3, 0x86, 0x20, 0x14, 0xd3, 0x86, 0x80, 0x98, 0x20, 0x14, 0xd4, 0x04, 0xa1, 0xa8,
0x80, 0x98, 0x20, 0x14, 0xd4, 0x04, 0xa1, 0xa8, 0x36, 0x2c, 0x84, 0xf7, 0x36, 0x2c, 0x84, 0xf7, 0x81, 0x41, 0x18, 0x88, 0xc1, 0x20, 0x06, 0xc4,
0x81, 0x41, 0x18, 0x88, 0xc1, 0x20, 0x06, 0xc4, 0x18, 0x00, 0x44, 0xa8, 0x18, 0x00, 0x44, 0xa8, 0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26,
0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26, 0x08, 0x85, 0x35, 0x41, 0x08, 0x85, 0x35, 0x41, 0x20, 0xa0, 0x0d, 0xc2, 0x19, 0x9c, 0xc1, 0x86,
0x20, 0xa0, 0x0d, 0xc2, 0x19, 0x9c, 0xc1, 0x86, 0x65, 0x28, 0x83, 0x6f, 0x65, 0x28, 0x83, 0x6f, 0x0c, 0xc2, 0xc0, 0x0c, 0x06, 0x33, 0x18, 0xc6,
0x0c, 0xc2, 0xc0, 0x0c, 0x06, 0x33, 0x18, 0xc6, 0x00, 0x0d, 0x58, 0x0c, 0x00, 0x0d, 0x58, 0x0c, 0x3d, 0x31, 0x3d, 0x49, 0x4d, 0x10, 0x88, 0x68,
0x3d, 0x31, 0x3d, 0x49, 0x4d, 0x10, 0x88, 0x68, 0x83, 0x70, 0x06, 0x6b, 0x83, 0x70, 0x06, 0x6b, 0xb0, 0x61, 0x61, 0xd4, 0xe0, 0x1b, 0x83, 0x30,
0xb0, 0x61, 0x61, 0xd4, 0xe0, 0x1b, 0x83, 0x30, 0x30, 0x83, 0x41, 0x0c, 0x30, 0x83, 0x41, 0x0c, 0x98, 0x31, 0x60, 0x83, 0x0d, 0x03, 0x19, 0xa4,
0x98, 0x31, 0x60, 0x83, 0x0d, 0x03, 0x19, 0xa4, 0x41, 0x1b, 0x30, 0x99, 0x41, 0x1b, 0x30, 0x99, 0xb2, 0xfa, 0xa2, 0x0a, 0x93, 0x3b, 0x2b, 0xa3,
0xb2, 0xfa, 0xa2, 0x0a, 0x93, 0x3b, 0x2b, 0xa3, 0x9b, 0x20, 0x14, 0xd7, 0x9b, 0x20, 0x14, 0xd7, 0x86, 0x85, 0x78, 0x83, 0x0f, 0x0e, 0xc2, 0x60,
0x86, 0x85, 0x78, 0x83, 0x0f, 0x0e, 0xc2, 0x60, 0x0c, 0x06, 0x31, 0x20, 0x0c, 0x06, 0x31, 0x20, 0xc6, 0x80, 0x0d, 0x36, 0x04, 0x71, 0xb0, 0x61,
0xc6, 0x80, 0x0d, 0x36, 0x04, 0x71, 0xb0, 0x61, 0x70, 0x03, 0x39, 0x00, 0x70, 0x03, 0x39, 0x00, 0x36, 0x14, 0x5c, 0x37, 0x07, 0x19, 0x50, 0x85,
0x36, 0x14, 0x5c, 0x37, 0x07, 0x19, 0x50, 0x85, 0x8d, 0xcd, 0xae, 0xcd, 0x8d, 0xcd, 0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10,
0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54, 0x21, 0xc3, 0x73, 0x54, 0x21, 0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12, 0x10, 0x4d, 0xc8, 0x12, 0x10, 0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4,
0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6, 0x04, 0x46, 0x1d, 0xa6, 0x04, 0x46, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32,
0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa6, 0x37, 0xb2, 0xb9, 0xa6, 0x37, 0xb2, 0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf,
0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45, 0xae, 0x6c, 0xee, 0x45, 0xae, 0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0x80,
0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0x80, 0xd5, 0x21, 0xc3, 0x73, 0xd5, 0x21, 0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2,
0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0x2b, 0x9b, 0x0b, 0xa3, 0x2b, 0x9b, 0x12, 0x68, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc,
0x12, 0x68, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x73,
0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x73, 0x00, 0x79, 0x18, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x66, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e,
0x00, 0x56, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e, 0x80, 0x34, 0x40, 0x84, 0x80, 0x34, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0xdb, 0xc1, 0x36, 0x5c, 0xbe,
0xf9, 0xc5, 0x6d, 0xdb, 0xc1, 0x36, 0x5c, 0xbe, 0xf3, 0xf8, 0x42, 0x40, 0xf3, 0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84,
0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84, 0x01, 0x08, 0x98, 0x5f, 0x01, 0x08, 0x98, 0x5f, 0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f,
0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x44, 0x04, 0x30, 0x2f, 0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x04, 0xce,
0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x04, 0xce, 0x70, 0xf9, 0xce, 0xe3, 0x70, 0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x5b, 0xc0,
0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x5b, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d, 0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc,
0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71, 0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81, 0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x86,
0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x86, 0x20, 0x0d, 0x97, 0xef, 0x20, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x44, 0x44, 0x13, 0x02, 0x44, 0x98,
0x3c, 0xfe, 0x44, 0x44, 0x13, 0x02, 0x44, 0x98, 0x5f, 0xdc, 0xb6, 0x19, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40,
0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00,
0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x13, 0x04, 0x4c,
0x00, 0x63, 0x01, 0x00, 0x00, 0x13, 0x04, 0x4c, 0x2c, 0x10, 0x00, 0x00, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xa4, 0x8d, 0x00,
0x00, 0x2f, 0x00, 0x00, 0x00, 0xa4, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x44, 0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0x21, 0x95, 0x5b, 0x29, 0x94, 0x5c,
0x14, 0x5e, 0x21, 0x95, 0x5b, 0x29, 0x94, 0x5c, 0xd9, 0x15, 0x57, 0x19, 0xd9, 0x15, 0x57, 0x19, 0x15, 0xc2, 0x0c, 0x40, 0xa9, 0x94, 0x0b, 0x0d,
0x15, 0xc2, 0x0c, 0x40, 0xa9, 0x94, 0x0b, 0x0d, 0x63, 0x04, 0x20, 0x08, 0x63, 0x04, 0x20, 0x08, 0xe3, 0xe1, 0x18, 0x8c, 0x11, 0xb0, 0xaf, 0x3b,
0xe3, 0xe1, 0x18, 0x8c, 0x11, 0xb0, 0xaf, 0x3b, 0xa2, 0x63, 0x30, 0x46, 0xa2, 0x63, 0x30, 0x46, 0x00, 0x96, 0x3c, 0x1b, 0xff, 0xc2, 0x18, 0xc1,
0x00, 0x96, 0x3c, 0x1b, 0xff, 0xc2, 0x18, 0xc1, 0x98, 0xae, 0x6a, 0xee, 0x98, 0xae, 0x6a, 0xee, 0x0b, 0x63, 0x04, 0x2a, 0xbe, 0xde, 0xa9, 0x38,
0x0b, 0x63, 0x04, 0x2a, 0xbe, 0xde, 0xa9, 0x38, 0x8c, 0x11, 0xd0, 0x35, 0x8c, 0x11, 0xd0, 0x35, 0x28, 0xe6, 0xdf, 0x18, 0x41, 0x0b, 0xc7, 0x31,
0x28, 0xe6, 0xdf, 0x18, 0x41, 0x0b, 0xc7, 0x31, 0xe8, 0x0b, 0x63, 0x04, 0xe8, 0x0b, 0x63, 0x04, 0x7e, 0x2c, 0xae, 0x73, 0x38, 0x8c, 0x11, 0xb4,
0x7e, 0x2c, 0xae, 0x73, 0x38, 0x8c, 0x11, 0xb4, 0x6e, 0xc8, 0xf3, 0xbe, 0x6e, 0xc8, 0xf3, 0xbe, 0x30, 0x46, 0xc0, 0xe7, 0xac, 0x8f, 0x7f, 0x63,
0x30, 0x46, 0xc0, 0xe7, 0xac, 0x8f, 0x7f, 0x63, 0x04, 0x20, 0x08, 0x82, 0x04, 0x20, 0x08, 0x82, 0xf8, 0x37, 0x46, 0xe0, 0xf6, 0xb1, 0x68, 0xfb,
0xf8, 0x37, 0x46, 0xe0, 0xf6, 0xb1, 0x68, 0xfb, 0xc2, 0x18, 0x41, 0x1f, 0xc2, 0x18, 0x41, 0x1f, 0x8b, 0x2e, 0xfe, 0x8d, 0x11, 0xd4, 0x6a, 0xad,
0x8b, 0x2e, 0xfe, 0x8d, 0x11, 0xd4, 0x6a, 0xad, 0xb6, 0xdf, 0x18, 0x81, 0xb6, 0xdf, 0x18, 0x81, 0x2c, 0xba, 0x3d, 0x0d, 0x06, 0x63, 0x04, 0x3c,
0x28, 0xe2, 0xaa, 0xf8, 0x8d, 0x11, 0xf0, 0xf0, 0xaa, 0xd3, 0xdd, 0x18, 0xbc, 0xea, 0x74, 0x37, 0x46, 0xd0, 0x9a, 0x73, 0x4e, 0x7a, 0x63, 0x04,
0x41, 0x6b, 0xce, 0x39, 0xe9, 0x8d, 0x11, 0xac, 0x23, 0x1e, 0xb3, 0x60, 0xeb, 0x88, 0xc7, 0x2c, 0x18, 0x8c, 0x11, 0x80, 0x20, 0xdd, 0xe6, 0x60,
0x30, 0x46, 0x00, 0x82, 0x74, 0x9b, 0x83, 0xc1, 0x18, 0x01, 0x08, 0x82, 0x30, 0x46, 0x00, 0x82, 0xe0, 0x9a, 0x83, 0xc1, 0x18, 0x01, 0x08, 0x82,
0x6b, 0x0e, 0x06, 0x63, 0x04, 0x20, 0x08, 0xb2, 0xf5, 0x2f, 0x8c, 0x11, 0x6c, 0xfd, 0x0b, 0x63, 0x04, 0x6c, 0x3b, 0xff, 0xa4, 0x37, 0x03, 0x30,
0xb0, 0xed, 0xfc, 0x93, 0xde, 0x0c, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xb0,
0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xb0, 0xe5, 0x01, 0x18, 0xb4, 0xe5, 0x01, 0x18, 0xb4, 0x01, 0x1e, 0xe0, 0x81, 0x19, 0x8c, 0x18, 0x24,
0x01, 0x1e, 0xe0, 0x81, 0x19, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0xc1, 0x00, 0x08, 0x82, 0xc1, 0xa6, 0x07, 0x61, 0xe0, 0x06, 0x78, 0x80, 0x07,
0xa6, 0x07, 0x61, 0xe0, 0x06, 0x78, 0x80, 0x07, 0x67, 0x30, 0x62, 0x90, 0x67, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xdb, 0x1e, 0x88, 0x41,
0x00, 0x20, 0x08, 0x06, 0xdb, 0x1e, 0x88, 0x41, 0x1c, 0xe4, 0x41, 0x1e, 0x1c, 0xe4, 0x41, 0x1e, 0xa0, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
0xa0, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x6c, 0x7c, 0x30, 0x06, 0x6c, 0x7c, 0x30, 0x06, 0x6f, 0xa0, 0x07, 0x7b, 0x90, 0x06, 0x23, 0x06,
0x6f, 0xa0, 0x07, 0x7b, 0x90, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x09, 0x00, 0x82, 0x60, 0x60, 0x94, 0x02, 0x18, 0xe4, 0xc1, 0x1e, 0xc4,
0x60, 0x94, 0x02, 0x18, 0xe4, 0xc1, 0x1e, 0xc4, 0xc1, 0x37, 0x62, 0x90, 0xc1, 0x37, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x29, 0x84, 0x81,
0x00, 0x20, 0x08, 0x06, 0x86, 0x29, 0x84, 0x81, 0x1e, 0xf0, 0x81, 0x1a, 0x1e, 0xf0, 0x81, 0x1a, 0x80, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
0x80, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xa7, 0x20, 0x06, 0x18, 0xa7, 0x20, 0x06, 0x7b, 0xd0, 0x07, 0x72, 0x10, 0x06, 0x23, 0x06,
0x7b, 0xd0, 0x07, 0x72, 0x10, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x09, 0x00, 0x82, 0x60, 0x60, 0xa0, 0xc2, 0x18, 0xf0, 0x81, 0x1f, 0xd8,
0x60, 0xa0, 0xc2, 0x18, 0xf0, 0x81, 0x1f, 0xd8, 0x81, 0x18, 0x8c, 0x18, 0x81, 0x18, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x91, 0x0a, 0x64,
0x24, 0x00, 0x08, 0x82, 0x81, 0x91, 0x0a, 0x64, 0x00, 0x0a, 0x7f, 0x50, 0x00, 0x0a, 0x7f, 0x50, 0x07, 0x63, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08,
0x07, 0x63, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x2a, 0x94, 0x06, 0x86, 0x2a, 0x94, 0x41, 0x28, 0x80, 0x82, 0x1b, 0x90, 0xc1, 0x88,
0x41, 0x28, 0x80, 0x82, 0x1b, 0x90, 0xc1, 0x88, 0xc1, 0x03, 0x80, 0x20, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xa9, 0xe0, 0x06, 0x09, 0x22, 0x04,
0x18, 0x34, 0xa9, 0xe0, 0x06, 0x09, 0x22, 0x04, 0x0c, 0x13, 0x0a, 0xa1, 0x0c, 0x13, 0x0a, 0xa1, 0x50, 0x06, 0xcc, 0x68, 0x42, 0x00, 0x8c, 0x18,
0x50, 0x06, 0xcc, 0x68, 0x42, 0x00, 0x8c, 0x18, 0x3c, 0x00, 0x08, 0x82, 0x3c, 0x00, 0x08, 0x82, 0x41, 0xb3, 0x0a, 0x70, 0xc0, 0x28, 0xc4, 0xe0,
0x41, 0xb3, 0x0a, 0x70, 0xc0, 0x28, 0xc4, 0xe0, 0x38, 0xa3, 0x30, 0x0a, 0x38, 0xa3, 0x30, 0x0a, 0x67, 0xe0, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
0x67, 0xe0, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x18, 0x1c, 0x10, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x81, 0xa5, 0x0a, 0x6e, 0xc0,
0x00, 0x08, 0x82, 0x81, 0xa5, 0x0a, 0x6e, 0xc0, 0x9c, 0xc2, 0x68, 0x42, 0x9c, 0xc2, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20,
0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0xd8, 0x80, 0xc0, 0xc7, 0xd8, 0x80, 0xc0, 0xc7, 0x86, 0x03, 0x3e, 0x36, 0x1c, 0xf0, 0x19, 0x31,
0x86, 0x03, 0x3e, 0x36, 0x1c, 0xf0, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04, 0x38, 0x00, 0x10, 0x04, 0x03, 0x2b, 0x16, 0xea, 0x60, 0x5a, 0x85, 0xd1,
0x03, 0x2b, 0x16, 0xea, 0x60, 0x5a, 0x85, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x84, 0x00, 0x18, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58,
0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04, 0x83, 0x00, 0x10, 0x04, 0x83, 0x07, 0x17, 0xf8, 0xe0, 0x30, 0x8a, 0x41, 0x08,
0x07, 0x17, 0xf8, 0xe0, 0x30, 0x8a, 0x41, 0x08, 0x46, 0x0c, 0x0e, 0x00, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0xc0, 0xb2, 0x05, 0x3d, 0xc0, 0x5a,
0x04, 0xc1, 0xc0, 0xb2, 0x05, 0x3d, 0xc0, 0x5a, 0x61, 0x34, 0x21, 0x00, 0x61, 0x34, 0x21, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46,
0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c, 0x16, 0x00, 0x04, 0x0c, 0x16, 0x00, 0x04, 0xc1, 0xe0, 0xe9, 0x85, 0x50, 0x60, 0x16, 0x65,
0xc1, 0xe0, 0xe9, 0x85, 0x50, 0x60, 0x16, 0x65, 0x10, 0x82, 0x11, 0x83, 0x10, 0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xb0, 0x76, 0xe1, 0x0f,
0x03, 0x00, 0x41, 0x30, 0xb0, 0x76, 0xe1, 0x0f, 0x3a, 0x3e, 0x18, 0x4d, 0x3a, 0x3e, 0x18, 0x4d, 0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d, 0x18,
0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d, 0x18, 0x84, 0x11, 0x83, 0x05, 0x84, 0x11, 0x83, 0x05, 0x00, 0x41, 0x30, 0x78, 0xc4, 0xc1, 0x14, 0x22,
0x00, 0x41, 0x30, 0x78, 0xc4, 0xc1, 0x14, 0x22, 0xe8, 0x19, 0x84, 0x60, 0xe8, 0x19, 0x84, 0x60, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x71,
0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa6, 0x70, 0xd8, 0x85, 0x65, 0xc4, 0xd8, 0x85, 0x65, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x71, 0xe0,
0xc0, 0x00, 0x40, 0x10, 0x0c, 0x26, 0x71, 0xe0, 0x85, 0x63, 0xc4, 0xc0, 0x85, 0x63, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x72, 0xe8, 0x85,
0x00, 0x40, 0x10, 0x0c, 0xa6, 0x71, 0xe8, 0x85, 0x61, 0xc4, 0xc0, 0x00, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x72, 0x08, 0x85, 0x61,
0x40, 0x10, 0x0c, 0x26, 0x72, 0x08, 0x85, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x73, 0x10, 0x85, 0x61, 0xc4,
0x10, 0x0c, 0xa6, 0x72, 0x10, 0x85, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x73, 0x18, 0x85, 0xc1, 0x06, 0x37,
0x0c, 0x26, 0x73, 0x18, 0x85, 0xc1, 0x06, 0x37, 0x90, 0x8f, 0x0d, 0x6f, 0x90, 0x8f, 0x0d, 0x6f, 0x20, 0x1f, 0x1b, 0xe0, 0x40, 0x3e, 0x23, 0x06,
0x20, 0x1f, 0x1b, 0xe0, 0x40, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x06, 0x00, 0x82, 0x60, 0x10, 0xad, 0x03, 0x2a, 0x0c, 0x23, 0x06, 0x06,
0x30, 0xa9, 0x03, 0x2a, 0x0c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x30, 0x00, 0x82, 0x60, 0x10, 0xb1, 0x43, 0x2a, 0x0c, 0x23, 0x06, 0x06, 0x00,
0xad, 0x43, 0x2a, 0x0c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x30, 0xb1, 0x82, 0x60, 0x10, 0xb5, 0x83, 0x2a, 0x0c, 0x36, 0xd4, 0x01, 0x7c, 0x6c,
0x83, 0x2a, 0x0c, 0x36, 0xd4, 0x01, 0x7c, 0x6c, 0xb0, 0x03, 0xf8, 0xd8, 0xb0, 0x03, 0xf8, 0xd8, 0x70, 0x07, 0xf0, 0x19, 0x31, 0x38, 0x00, 0x10,
0x70, 0x07, 0xf0, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x28, 0x1e, 0x04, 0x83, 0x09, 0x1e, 0x62, 0x61, 0xa8, 0x83, 0x11, 0x83, 0x03, 0x00,
0x62, 0x61, 0xa8, 0x83, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0x88, 0xe4, 0x41, 0x30, 0x98, 0xe2, 0x41, 0x16, 0x06, 0x3b, 0x18, 0x31, 0x38, 0x00,
0x41, 0x16, 0x06, 0x3b, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x68, 0x10, 0x04, 0x83, 0x49, 0x1e, 0x66, 0x61, 0xb8, 0x03, 0x4b, 0xf8, 0x40,
0x1e, 0x66, 0x61, 0xb8, 0x03, 0x4b, 0xf8, 0x40, 0x3e, 0x96, 0xf4, 0x81, 0x3e, 0x96, 0xf4, 0x81, 0x7c, 0x2c, 0xf1, 0x03, 0xf9, 0x18, 0x28, 0x0c,
0x7c, 0x2c, 0xf1, 0x03, 0xf9, 0x18, 0x28, 0x0c, 0xf1, 0xb1, 0x50, 0x18, 0xf1, 0xb1, 0x50, 0x18, 0xe2, 0x63, 0xa2, 0x30, 0xc4, 0xc7, 0x92, 0x81,
0xe2, 0x63, 0xa2, 0x30, 0xc4, 0xc7, 0x92, 0x81, 0x3e, 0x96, 0x0c, 0xf4, 0x3e, 0x96, 0x0c, 0xf4, 0xb1, 0x64, 0xa0, 0xcf, 0x88, 0x81, 0x01, 0x80,
0xb1, 0x64, 0xa0, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x4c, 0xfc, 0x20, 0x18, 0x44, 0xfd, 0x60, 0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20,
0x60, 0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x4c, 0xfd, 0x70, 0x18, 0x44, 0xfe, 0x70, 0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18,
0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x4c, 0xfe, 0x80, 0x0f, 0x44, 0xff, 0x80, 0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44,
0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x4c, 0xff, 0xc0, 0x0b, 0xc3, 0x20, 0xc1, 0x0b, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0x21,
0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x4c, 0x20, 0xd1, 0x0b, 0xc3, 0x88, 0xd1, 0x0b, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0x22, 0xe1,
0x81, 0x01, 0x80, 0x20, 0x18, 0x4c, 0x21, 0xe1, 0x0b, 0x83, 0x0d, 0xad, 0x0b, 0x83, 0x0d, 0xad, 0x20, 0x1f, 0x1b, 0x5c, 0x41, 0x3e, 0x36, 0xbc,
0x20, 0x1f, 0x1b, 0x5c, 0x41, 0x3e, 0x36, 0xbc, 0x82, 0x7c, 0x46, 0x0c, 0x82, 0x7c, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x32, 0x89, 0x71,
0x0c, 0x00, 0x04, 0xc1, 0x60, 0x2a, 0x89, 0x71, 0x18, 0x46, 0x0c, 0x0c, 0x18, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x3a, 0x09, 0x72, 0x18,
0x00, 0x04, 0xc1, 0x60, 0x32, 0x09, 0x72, 0x18, 0x46, 0x0c, 0x0c, 0x00, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x42, 0x89, 0x72, 0x18, 0x4c,
0x04, 0xc1, 0x60, 0x3a, 0x89, 0x72, 0x18, 0x4c, 0x20, 0x07, 0xf9, 0x98, 0x20, 0x07, 0xf9, 0x98, 0x50, 0x0e, 0xf2, 0xb1, 0xa2, 0x1c, 0xe4, 0x33,
0x50, 0x0e, 0xf2, 0xb1, 0xa2, 0x1c, 0xe4, 0x33, 0x62, 0x80, 0x00, 0x20, 0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x58, 0x4a, 0xb4, 0x43, 0x39, 0x0c,
0x08, 0x06, 0x58, 0x4a, 0xb4, 0x43, 0x39, 0x0c, 0xc1, 0x88, 0x01, 0x02, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x60, 0x2a, 0xe1, 0x0e, 0xe5,
0x80, 0x20, 0x18, 0x60, 0x2a, 0xe1, 0x0e, 0xe5, 0x30, 0x04, 0x86, 0x94, 0x30, 0x04, 0x86, 0x94, 0x83, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1,
0x83, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0x00, 0x63, 0x09, 0x78, 0x00, 0x63, 0x09, 0x78, 0x28, 0x07, 0x23, 0x18, 0x31, 0x40, 0x00, 0x10,
0x28, 0x07, 0x23, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x03, 0xac, 0x25, 0x04, 0x03, 0xac, 0x25, 0xe2, 0xa1, 0x1c, 0x8c, 0xc0, 0x96, 0x72, 0x90,
0xe2, 0xa1, 0x1c, 0x8c, 0xc0, 0x96, 0x72, 0x90, 0xcf, 0x88, 0x01, 0x02, 0xcf, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x60, 0x2f, 0x31, 0x0f, 0xe5,
0x80, 0x20, 0x18, 0x60, 0x2f, 0x31, 0x0f, 0xe5, 0x90, 0x04, 0x23, 0x06, 0x90, 0x04, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0x80, 0xc1, 0x04, 0x3d,
0x08, 0x00, 0x82, 0x60, 0x80, 0xc1, 0x04, 0x3d, 0x94, 0x43, 0x12, 0x8c, 0x94, 0x43, 0x12, 0xd8, 0xf1, 0x0b, 0xf2, 0xb1, 0x02, 0x1c, 0xe4, 0x63,
0x18, 0x1c, 0x00, 0x08, 0x82, 0x81, 0x25, 0x13, 0xf6, 0x40, 0x0b, 0x2e, 0x43, 0x38, 0xc8, 0x67, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0xac, 0x9a,
0x31, 0x9a, 0x10, 0x0c, 0x96, 0x04, 0xf4, 0xb1, 0x43, 0xa0, 0x8f, 0x15, 0xc8, 0x87, 0x5b, 0x88, 0x89, 0xd1, 0x84, 0x20, 0xb0, 0x22, 0x90, 0x8f,
0x03, 0x7d, 0x46, 0x13, 0x0a, 0xc1, 0x02, 0x42, 0x3e, 0x26, 0x10, 0xf2, 0x15, 0x82, 0x7c, 0xac, 0x18, 0xe4, 0x33, 0x9a, 0x50, 0x00, 0xc3, 0x11,
0xb1, 0x81, 0x90, 0x8f, 0x0d, 0xe8, 0x20, 0x1f, 0x1b, 0xd2, 0x41, 0x3e, 0x41, 0x38, 0x38, 0xdf, 0x2c, 0xc3, 0x12, 0x04, 0xc3, 0x11, 0x85, 0x3a,
0x36, 0xa8, 0x83, 0x7c, 0x46, 0x13, 0x18, 0x60, 0x38, 0x22, 0x28, 0x07, 0x28, 0xdf, 0x2c, 0xc3, 0x20, 0x04, 0x66, 0xb0, 0x83, 0x7c, 0x66, 0x09,
0xe7, 0x9b, 0x65, 0x58, 0x82, 0x60, 0x38, 0xa2, 0x70, 0x07, 0xe5, 0x9b, 0x88, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88, 0xc0, 0x22, 0x27, 0x8e,
0x65, 0x18, 0x84, 0xc0, 0x12, 0x78, 0x90, 0xcf, 0x2c, 0x01, 0x31, 0x62, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88, 0xc2, 0xa2, 0x1f, 0x02, 0x0b,
0x60, 0x00, 0x20, 0x08, 0x06, 0xd3, 0x58, 0xf4, 0xc4, 0x31, 0x62, 0x60, 0xe0, 0x41, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x10, 0x8d, 0x05,
0x00, 0x20, 0x08, 0x06, 0x13, 0x59, 0x84, 0x44, 0x60, 0x01, 0x3d, 0xc8, 0x48, 0x04, 0x16, 0xcc, 0x83, 0x7c, 0x2c, 0xa8, 0x07, 0xf8, 0xcc, 0x12,
0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x26, 0xb3, 0x20, 0x89, 0xc0, 0x10, 0x03, 0x15, 0x83, 0x23, 0x08, 0xc3, 0x70, 0x44, 0x33, 0x0f, 0xca,
0x82, 0x7b, 0x90, 0x8f, 0x05, 0xf9, 0x00, 0x9f, 0x59, 0x02, 0x62, 0xa0, 0x37, 0xcb, 0x60, 0x14, 0x81, 0x39, 0xf5, 0x20, 0x9f, 0x59, 0x82, 0x63,
0x62, 0x70, 0x04, 0x61, 0x18, 0x8e, 0x68, 0xee, 0x41, 0xf9, 0x66, 0x19, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0xb4, 0x10, 0x8b, 0x67, 0xc4,
0x8c, 0x22, 0xb0, 0x28, 0x1f, 0xe4, 0x33, 0x4b, 0x70, 0x8c, 0x18, 0x18, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0xb5, 0x30, 0x89, 0xc0, 0x82, 0x7c,
0x00, 0x08, 0x82, 0xc1, 0xc4, 0x16, 0x66, 0xf1, 0x8c, 0x18, 0x18, 0x00, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0x6c, 0x91, 0x12,
0x08, 0x82, 0xc1, 0xd4, 0x16, 0x2a, 0x11, 0x58, 0xd0, 0x0f, 0xf2, 0x19, 0x81, 0x05, 0xfc, 0x20, 0x1f, 0x0b, 0xfc, 0x01, 0x3e, 0xb3, 0x04, 0xc7,
0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xe9, 0x2d, 0x5a, 0x22, 0xb0, 0x00, 0x40, 0xc5, 0xe0, 0x14, 0x82, 0x31, 0x1c, 0x51, 0xf1, 0x83, 0xf2, 0xcd,
0x24, 0xe4, 0x63, 0x81, 0x48, 0xc0, 0x67, 0x96, 0xe0, 0x18, 0xa8, 0x18, 0x32, 0x24, 0x48, 0x60, 0x96, 0x3f, 0xc8, 0x67, 0x96, 0x40, 0x19, 0x31,
0x9c, 0x42, 0x30, 0x86, 0x23, 0x2a, 0x90, 0x50, 0xbe, 0x59, 0x86, 0x04, 0x30, 0x00, 0x10, 0x04, 0x83, 0x48, 0x2e, 0xd6, 0xe2, 0x1a, 0x31, 0x30,
0x09, 0x2c, 0x13, 0x09, 0xf9, 0xcc, 0x12, 0x28, 0x23, 0x06, 0x06, 0x00, 0x00, 0x10, 0x04, 0x83, 0x68, 0x2e, 0x5e, 0x22, 0xb0, 0x40, 0x24, 0xe4,
0x82, 0x60, 0x30, 0xd5, 0xc5, 0x5b, 0x5c, 0x23, 0x06, 0x06, 0x00, 0x82, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x51, 0x5d, 0xc8, 0x44, 0x60,
0x60, 0x30, 0xd9, 0xc5, 0x4c, 0x04, 0x16, 0x98, 0x84, 0x7c, 0x46, 0x0c, 0x41, 0x49, 0xc8, 0xc7, 0x82, 0x93, 0x80, 0xcf, 0x2c, 0x81, 0x32, 0x50,
0x0c, 0x00, 0x04, 0xc1, 0x60, 0xc2, 0x0b, 0x9b, 0x08, 0x2c, 0x48, 0x09, 0x31, 0x38, 0x88, 0x90, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0xc1, 0x84,
0xf9, 0x58, 0xb0, 0x12, 0xf0, 0x99, 0x25, 0x50, 0x06, 0x2a, 0x06, 0x07, 0x17, 0x39, 0x31, 0xf5, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x4c,
0x11, 0x92, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0x88, 0xfa, 0xa2, 0x27, 0x79, 0xa1, 0x13, 0x8b, 0x3f, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0xc1,
0xa6, 0x90, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0xc8, 0x2f, 0x7c, 0xa4, 0x17, 0x3b, 0x31, 0xfc, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18,
0x62, 0x11, 0x89, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0x88, 0xfe, 0xe2, 0x4c, 0x7b, 0x21, 0x16, 0x43, 0x4b, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82,
0x27, 0x86, 0x91, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x08, 0x34, 0xc1, 0xc4, 0x17, 0x63, 0x31, 0xb8, 0xc4, 0x88, 0xc1, 0x01, 0x80, 0x20,
0xcc, 0x62, 0x88, 0x89, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0x88, 0x42, 0x18, 0x4c, 0x7d, 0x41, 0x16, 0xc3, 0x4b, 0xcc, 0x12, 0x2c, 0x03, 0x15,
0xe3, 0x2c, 0x06, 0x99, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x83, 0x48, 0x03, 0x2b, 0x00, 0x86, 0x32, 0x50, 0x31, 0xb0, 0x02, 0x60, 0x28, 0x03,
0x34, 0xd0, 0x62, 0x98, 0x89, 0x59, 0x82, 0x65, 0xa0, 0x62, 0x60, 0x05, 0x15, 0x03, 0x2b, 0x00, 0x86, 0x62, 0x43, 0x48, 0xc8, 0xc7, 0x86, 0x90,
0xc0, 0x50, 0x06, 0x2a, 0x06, 0x56, 0x00, 0x0c, 0x65, 0xa0, 0x62, 0x60, 0x90, 0x8f, 0x0d, 0x21, 0x21, 0x9f, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30,
0x05, 0xc0, 0x50, 0x6c, 0x28, 0x09, 0xf9, 0xd8, 0x50, 0x12, 0xf2, 0xb1, 0x40, 0x50, 0x23, 0x2d, 0xfe, 0xe2, 0x2f, 0xea, 0x62, 0x18, 0x31, 0x48,
0xa1, 0x24, 0xe4, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x08, 0x6b, 0x00, 0x10, 0x04, 0x03, 0x04, 0x35, 0xd2, 0xe2, 0x2f, 0xfe, 0xa2, 0x2d,
0xb4, 0xc5, 0x68, 0x8c, 0x46, 0x5e, 0x0c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x84, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0x50, 0x23, 0x2d, 0xfe,
0x60, 0x80, 0xb0, 0x46, 0x5b, 0x8c, 0xc6, 0x68, 0xc4, 0x85, 0x30, 0x62, 0xe2, 0x2f, 0xe8, 0x22, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0x04,
0x90, 0x00, 0x20, 0x08, 0x06, 0x08, 0x6b, 0xb4, 0xc5, 0x68, 0x8c, 0x06, 0x35, 0xd2, 0xe2, 0x2f, 0xfe, 0xe2, 0x2e, 0x42, 0x02, 0x01, 0x00, 0x00,
0x5e, 0x04, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb0, 0x46, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00
0x8c, 0xc6, 0x68, 0xec, 0x45, 0x49, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00
}; };

View File

@ -35,7 +35,6 @@ float4 main(PixelShaderInput input) : SV_TARGET
-0.124547, 1.132895, -0.008348, -0.124547, 1.132895, -0.008348,
-0.018154, -0.100597, 1.118751 -0.018154, -0.100597, 1.118751
}; };
float4 Output;
float3 yuv; float3 yuv;
yuv.x = theTextureY.Sample(theSampler, input.tex).r; yuv.x = theTextureY.Sample(theSampler, input.tex).r;
@ -51,19 +50,7 @@ float4 main(PixelShaderInput input) : SV_TARGET
rgb = mul(mat2020to709, rgb); rgb = mul(mat2020to709, rgb);
rgb = (rgb / maxCLL) * HDR_whitelevel;
rgb = scRGBfromNits(rgb); rgb = scRGBfromNits(rgb);
if (!scRGB_output) { return GetOutputColorFromSCRGB(rgb) * input.color;
rgb.r = sRGBfromLinear(rgb.r);
rgb.g = sRGBfromLinear(rgb.g);
rgb.b = sRGBfromLinear(rgb.b);
rgb.rgb = clamp(rgb.rgb, 0.0, 1.0);
}
Output.rgb = rgb.rgb;
Output.a = 1.0;
return Output * input.color;
} }

View File

@ -15,7 +15,7 @@
; -------------------- ----- ------ -------- -------- ------- ------ ; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw ; SV_Target 0 xyzw 0 TARGET float xyzw
; ;
; shader hash: cc645201caeda2fb0fc8359ec49d865f ; shader hash: 7be734894192b87b750f26f182766c91
; ;
; Pipeline Runtime Information: ; Pipeline Runtime Information:
; ;
@ -47,9 +47,9 @@
; { ; {
; ;
; float scRGB_output; ; Offset: 0 ; float scRGB_output; ; Offset: 0
; float SDR_whitelevel; ; Offset: 4 ; float color_scale; ; Offset: 4
; float HDR_whitelevel; ; Offset: 8 ; float unused1; ; Offset: 8
; float maxCLL; ; Offset: 12 ; float unused2; ; Offset: 12
; float4 Yoffset; ; Offset: 16 ; float4 Yoffset; ; Offset: 16
; float4 Rcoeff; ; Offset: 32 ; float4 Rcoeff; ; Offset: 32
; float4 Gcoeff; ; Offset: 48 ; float4 Gcoeff; ; Offset: 48
@ -188,15 +188,19 @@ define void @main() {
br label %76 br label %76
; <label>:76 ; preds = %69, %67, %0 ; <label>:76 ; preds = %69, %67, %0
%77 = phi float [ %53, %69 ], [ %53, %67 ], [ %27, %0 ] %77 = phi float [ %27, %0 ], [ %53, %69 ], [ %53, %67 ]
%78 = phi float [ %65, %69 ], [ %65, %67 ], [ %32, %0 ] %78 = phi float [ %32, %0 ], [ %65, %69 ], [ %65, %67 ]
%79 = phi float [ %75, %69 ], [ %68, %67 ], [ %37, %0 ] %79 = phi float [ %37, %0 ], [ %75, %69 ], [ %68, %67 ]
%80 = fmul fast float %77, %5 %80 = extractvalue %dx.types.CBufRet.f32 %38, 1
%81 = fmul fast float %78, %6 %81 = fmul fast float %77, %5
%82 = fmul fast float %79, %7 %82 = fmul fast float %81, %80
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %80) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %83 = fmul fast float %78, %6
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %81) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %84 = fmul fast float %83, %80
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %82) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %85 = fmul fast float %79, %7
%86 = fmul fast float %85, %80
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %82) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %84) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %86) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void ret void
} }
@ -263,12 +267,12 @@ attributes #2 = { nounwind readonly }
#endif #endif
const unsigned char g_main[] = { const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0x65, 0x5e, 0xf7, 0x28, 0x4d, 0x11, 0x14, 0x24, 0x44, 0x58, 0x42, 0x43, 0x2f, 0x4e, 0x08, 0xaf, 0x84, 0x7b, 0x9a, 0xe0,
0x0b, 0xc5, 0xe0, 0xbc, 0x16, 0x46, 0x0a, 0x73, 0x01, 0x00, 0x00, 0x00, 0x28, 0x5a, 0x6c, 0x95, 0x41, 0x20, 0x49, 0xc2, 0x01, 0x00, 0x00, 0x00,
0x75, 0x15, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x7d, 0x15, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x81, 0x0b, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x7d, 0x0b, 0x00, 0x00,
0x9d, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x99, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -327,10 +331,10 @@ const unsigned char g_main[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0x74, 0x08, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0x70, 0x08, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5c, 0x08, 0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x13, 0x02, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
@ -396,11 +400,11 @@ const unsigned char g_main[] = {
0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0,
0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac, 0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac,
0x00, 0x03, 0xca, 0xa3, 0x88, 0xca, 0x35, 0x80, 0x8a, 0x92, 0x28, 0x83, 0x00, 0x03, 0xca, 0xa3, 0x94, 0xca, 0x36, 0x80, 0x8a, 0x92, 0x28, 0x83,
0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01,
0x20, 0x6f, 0x06, 0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c, 0x20, 0x6f, 0x06, 0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c,
0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10,
0x00, 0x79, 0x18, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x00, 0x79, 0x18, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
@ -420,56 +424,205 @@ const unsigned char g_main[] = {
0x04, 0x5c, 0xdb, 0x04, 0xc1, 0x13, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47, 0x04, 0x5c, 0xdb, 0x04, 0xc1, 0x13, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47,
0x42, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0xc2, 0x99, 0x42, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0xc2, 0x99,
0x20, 0x10, 0xcf, 0x04, 0xc1, 0x02, 0x83, 0x0d, 0x08, 0xe2, 0x7d, 0x04, 0x20, 0x10, 0xcf, 0x04, 0xc1, 0x02, 0x83, 0x0d, 0x08, 0xe2, 0x7d, 0x04,
0x18, 0x34, 0x4d, 0x18, 0xd0, 0x99, 0x22, 0x92, 0xfa, 0xba, 0x43, 0x4b, 0x18, 0x34, 0x4d, 0x18, 0x70, 0x19, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a,
0xa3, 0x2b, 0x63, 0x2b, 0xb3, 0x2b, 0x63, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x1b, 0x0b, 0x63, 0x2b, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x04, 0x19, 0x83,
0x03, 0x19, 0x83, 0x8f, 0x0c, 0xc0, 0xa0, 0xa1, 0x83, 0x44, 0x24, 0xf5, 0x8f, 0x0c, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0x47, 0x9d, 0x5b, 0xdd, 0x5c,
0x75, 0x87, 0x96, 0x46, 0x57, 0xc6, 0x56, 0x66, 0x57, 0xc6, 0x36, 0x41, 0x19, 0x59, 0xcc, 0x04, 0x81, 0x88, 0x36, 0x18, 0x88, 0x19, 0x7c, 0x67,
0x20, 0xa2, 0x0d, 0x06, 0x62, 0x06, 0xdf, 0x19, 0x80, 0x41, 0x43, 0xa3, 0x00, 0x06, 0x0d, 0x8f, 0x3a, 0xb7, 0xba, 0xb9, 0x32, 0x32, 0x99, 0x09,
0x2d, 0x0c, 0x6f, 0x88, 0x89, 0x69, 0x82, 0x40, 0x48, 0x1b, 0x0c, 0x24, 0x02, 0x21, 0x6d, 0x30, 0x90, 0x34, 0xf8, 0xd4, 0x00, 0x0c, 0x1a, 0x1e,
0x0d, 0x3e, 0x35, 0x00, 0x83, 0x86, 0x47, 0xd6, 0x9b, 0x99, 0xd9, 0x5c, 0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13, 0x04, 0x62, 0xda, 0x80,
0x19, 0xdd, 0x04, 0x81, 0x98, 0x36, 0x20, 0x08, 0x1b, 0x7c, 0x6d, 0x00, 0x20, 0x6c, 0xf0, 0xb5, 0x01, 0x18, 0x34, 0x4d, 0x18, 0xd0, 0x90, 0x1a,
0x06, 0x4d, 0x13, 0x06, 0x34, 0xa4, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x04, 0x79, 0x83,
0x08, 0x04, 0xb5, 0x01, 0x41, 0xde, 0xe0, 0x83, 0x03, 0x30, 0x68, 0x9a, 0x0f, 0x0e, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0xc6, 0xd1, 0xd8, 0x5b, 0x99,
0x30, 0xa0, 0x71, 0x34, 0xf6, 0x56, 0x66, 0x66, 0x36, 0x41, 0x20, 0xaa, 0x99, 0xd9, 0x04, 0x81, 0xa8, 0x36, 0x20, 0x88, 0x1c, 0x7c, 0x73, 0x00,
0x0d, 0x08, 0x22, 0x07, 0xdf, 0x1c, 0x80, 0x41, 0xd3, 0x84, 0x01, 0x0d, 0x06, 0x4d, 0x13, 0x06, 0x34, 0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26,
0xa1, 0xb1, 0xb7, 0x32, 0x33, 0xb3, 0x09, 0x02, 0x61, 0x6d, 0x40, 0x90, 0x08, 0x84, 0xb5, 0x01, 0x41, 0xea, 0xe0, 0xb3, 0x03, 0x30, 0x68, 0x9a,
0x3a, 0xf8, 0xec, 0x00, 0x0c, 0x9a, 0x26, 0x0c, 0x36, 0x24, 0x95, 0x18, 0x30, 0xd8, 0x90, 0x54, 0x62, 0x50, 0x06, 0x68, 0xb0, 0x06, 0x6e, 0x10,
0x94, 0x01, 0x1a, 0xac, 0x81, 0x1b, 0xc4, 0x01, 0x1d, 0xdc, 0xc1, 0x86, 0x07, 0x74, 0x70, 0x07, 0x1b, 0x06, 0xa2, 0xc3, 0x83, 0x09, 0x82, 0x00,
0x81, 0xe8, 0xf0, 0x60, 0x82, 0x20, 0x00, 0x1b, 0x80, 0x0d, 0x03, 0xb1, 0x6c, 0x00, 0x36, 0x0c, 0xc4, 0x1e, 0xec, 0xc1, 0x86, 0x80, 0x0f, 0x36,
0x07, 0x7b, 0xb0, 0x21, 0xe0, 0x83, 0x0d, 0xc3, 0xa0, 0x07, 0x7d, 0x30, 0x0c, 0x83, 0x1e, 0xf4, 0xc1, 0x04, 0x41, 0x0c, 0xca, 0x60, 0x43, 0xf0,
0x41, 0x10, 0x83, 0x32, 0xd8, 0x10, 0xfc, 0x01, 0x89, 0xb6, 0xb0, 0x34, 0x07, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd,
0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x4d, 0x10, 0x0a, 0x6d, 0x82, 0x50,
0x6e, 0x13, 0x84, 0x42, 0x9b, 0x20, 0x14, 0xdb, 0x86, 0x80, 0x98, 0x20, 0x6c, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x70, 0x13, 0x84, 0xa2, 0xdb, 0xb0,
0x14, 0xdc, 0x04, 0xa1, 0xe8, 0x36, 0x2c, 0x84, 0x28, 0x8c, 0x02, 0x29, 0x10, 0xa2, 0x30, 0x0a, 0xa4, 0x50, 0x0a, 0xa6, 0x30, 0x98, 0x02, 0x71,
0x94, 0x82, 0x29, 0x0c, 0xa6, 0x40, 0x9c, 0x02, 0x40, 0x84, 0xaa, 0x08, 0x0a, 0x00, 0x11, 0xaa, 0x22, 0xac, 0xa1, 0xa7, 0x27, 0x29, 0xa2, 0x09,
0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x78, 0x1b, 0x84, 0xef, 0x42, 0xe1, 0x6d, 0x10, 0xbe, 0x6f, 0xc3, 0x32, 0xa4, 0xc2, 0x28, 0x9c,
0xdb, 0xb0, 0x0c, 0xa9, 0x30, 0x0a, 0xa7, 0x50, 0x0a, 0xaa, 0x30, 0xa8, 0x42, 0x29, 0xa8, 0xc2, 0xa0, 0x0a, 0xc3, 0x29, 0xac, 0x02, 0x8b, 0xa1,
0xc2, 0x70, 0x0a, 0xab, 0xc0, 0x62, 0xe8, 0x89, 0xe9, 0x49, 0x6a, 0x82, 0x27, 0xa6, 0x27, 0xa9, 0x09, 0x02, 0x71, 0x6d, 0x10, 0x3e, 0x57, 0xd8,
0x40, 0x5c, 0x1b, 0x84, 0xcf, 0x15, 0x36, 0x2c, 0x4c, 0x2b, 0x8c, 0xc2, 0xb0, 0x30, 0xad, 0x30, 0x0a, 0xa7, 0x50, 0x0a, 0xaa, 0x30, 0x98, 0x02,
0x29, 0x94, 0x82, 0x2a, 0x0c, 0xa6, 0xc0, 0x9c, 0xc2, 0x2b, 0x6c, 0x18, 0x73, 0x0a, 0xaf, 0xb0, 0x61, 0x40, 0x05, 0x56, 0x80, 0x05, 0x26, 0x53,
0x50, 0x81, 0x15, 0x60, 0x81, 0xc9, 0x94, 0xd5, 0x17, 0x55, 0x98, 0xdc, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x13, 0x84, 0xe2, 0xdb,
0x59, 0x19, 0xdd, 0x04, 0xa1, 0xf8, 0x36, 0x2c, 0x84, 0x2c, 0x8c, 0xc2, 0xb0, 0x10, 0xb2, 0x30, 0x0a, 0xb3, 0x50, 0x0a, 0xa7, 0x30, 0x98, 0x02,
0x2c, 0x94, 0xc2, 0x29, 0x0c, 0xa6, 0x40, 0x9c, 0xc2, 0x2b, 0x6c, 0x08, 0x71, 0x0a, 0xaf, 0xb0, 0x21, 0xa0, 0x85, 0x0d, 0x43, 0x2c, 0xd4, 0x02,
0x68, 0x61, 0xc3, 0x10, 0x0b, 0xb5, 0x00, 0x6c, 0x28, 0xf4, 0x20, 0x14, 0xb0, 0xa1, 0xd0, 0x83, 0x50, 0xb0, 0x05, 0x0e, 0x20, 0x22, 0x26, 0x17,
0x6c, 0x81, 0x03, 0x88, 0x88, 0xc9, 0x85, 0xb9, 0x8d, 0xa1, 0x95, 0xcd, 0xe6, 0x36, 0x86, 0x56, 0x36, 0x47, 0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e,
0xd1, 0x30, 0x63, 0x7b, 0x0b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x18, 0x8b, 0x6e, 0x82, 0x40, 0x60, 0x2c, 0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x26, 0x08,
0x34, 0xb7, 0x39, 0xba, 0xb9, 0x09, 0x02, 0x91, 0xd1, 0x98, 0x4b, 0x3b, 0x44, 0x46, 0x63, 0x2e, 0xed, 0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x5c, 0xda,
0xfb, 0x62, 0x23, 0xa3, 0x31, 0x97, 0x76, 0xf6, 0x35, 0x47, 0x47, 0x84, 0xd9, 0xd7, 0x1c, 0x1d, 0x11, 0xba, 0x32, 0xbc, 0x2f, 0xb7, 0x37, 0xb9,
0xae, 0x0c, 0xef, 0xcb, 0xed, 0x4d, 0xae, 0x6d, 0x03, 0x83, 0x0b, 0x64, 0xb6, 0x0d, 0x0c, 0x2e, 0x90, 0x41, 0x2e, 0xe8, 0xc2, 0x2e, 0xf0, 0x42,
0x90, 0x0b, 0xba, 0xb0, 0x0b, 0xbc, 0xd0, 0x0b, 0x88, 0x2f, 0x90, 0xc1, 0x2f, 0x20, 0xbe, 0x40, 0x06, 0xbf, 0xc0, 0x54, 0x61, 0x63, 0xb3, 0x6b,
0x2f, 0x30, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0,
0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13,
0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0x32, 0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51,
0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x50, 0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x87, 0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d,
0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0xac, 0x8c, 0x6d, 0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b,
0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x6c, 0x95, 0xc8, 0xf0,
0xe6, 0xa6, 0x04, 0x5b, 0x25, 0x32, 0x3c, 0x17, 0xba, 0x3c, 0xb8, 0xb2, 0x5c, 0xe8, 0xf2, 0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8,
0x20, 0x37, 0xb7, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9, 0x29, 0xd2, 0xde, 0xdc, 0xe6, 0xa6, 0x08, 0x78, 0xd0, 0x07, 0x75, 0xc8, 0xf0,
0x02, 0x1e, 0xf4, 0x41, 0x1d, 0x32, 0x3c, 0x17, 0xbb, 0xb4, 0xb2, 0xbb, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca,
0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0xc1, 0x1f, 0xd4, 0x21, 0xa6, 0x04, 0x7f, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e,
0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x60, 0x0b, 0x5d, 0xc8,
0x9b, 0x9b, 0x12, 0xd8, 0x42, 0x17, 0x32, 0x3c, 0x97, 0xb1, 0xb7, 0x3a, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04,
0x37, 0xba, 0x32, 0xb9, 0xb9, 0x29, 0xc1, 0x2f, 0x00, 0x79, 0x18, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00,
0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4,
0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00,
0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d,
0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c,
0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9,
0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18,
0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb,
0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c,
0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b,
0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9,
0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7b, 0xe7, 0x34, 0x89, 0x41, 0x92, 0xb8, 0x7b, 0x75, 0x0f, 0x26,
0xf1, 0x82, 0x76, 0x6c, 0x91, 0x44, 0x58, 0x49, 0x4c, 0xdc, 0x09, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x77, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xc4, 0x09, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x6e, 0x02, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x54, 0x00, 0x00,
0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00,
0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00,
0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00,
0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0,
0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42,
0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06, 0x80, 0xbe, 0x19, 0x00,
0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3,
0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61, 0x20, 0x26, 0x08, 0x84,
0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13, 0x04, 0x82, 0xd9, 0x20,
0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x90,
0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b, 0x84, 0x07, 0x9a, 0x20,
0x7c, 0xd7, 0x04, 0x81, 0x68, 0x36, 0x20, 0x84, 0xb4, 0x10, 0xc3, 0x30,
0x01, 0x1b, 0x02, 0x6a, 0x82, 0x10, 0x06, 0xd8, 0x06, 0x84, 0xb0, 0x16,
0x82, 0x18, 0x08, 0x60, 0x43, 0x70, 0x6d, 0x20, 0x22, 0xa0, 0xc2, 0x26,
0x08, 0x62, 0x90, 0x6d, 0x08, 0xb4, 0x09, 0x82, 0x00, 0x90, 0x68, 0x0b,
0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97,
0xf6, 0xe6, 0x36, 0x41, 0x28, 0xa0, 0x09, 0x42, 0x11, 0x6d, 0x08, 0x88,
0x09, 0x42, 0x21, 0x4d, 0x10, 0x8a, 0x69, 0xc3, 0x42, 0x78, 0x1f, 0x18,
0x84, 0x81, 0x18, 0x0c, 0x62, 0x40, 0x8c, 0x01, 0x40, 0x84, 0xaa, 0x08,
0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x50, 0x13, 0x04, 0xc2,
0xd9, 0x20, 0x9c, 0xc1, 0x19, 0x6c, 0x58, 0x86, 0x32, 0xf8, 0xc6, 0x20,
0x0c, 0xcc, 0x60, 0x30, 0x83, 0x61, 0x0c, 0xd0, 0x80, 0xc5, 0xd0, 0x13,
0xd3, 0x93, 0xd4, 0x04, 0x81, 0x78, 0x36, 0x08, 0x67, 0xb0, 0x06, 0x1b,
0x16, 0x46, 0x0d, 0xbe, 0x31, 0x08, 0x03, 0x33, 0x18, 0xc4, 0x80, 0x19,
0x03, 0x36, 0xd8, 0x30, 0x90, 0x41, 0x1a, 0xb4, 0x01, 0x93, 0x29, 0xab,
0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09, 0x42, 0x51, 0x6d, 0x58,
0x88, 0x37, 0xf8, 0xe0, 0x20, 0x0c, 0xc6, 0x60, 0x10, 0x03, 0x62, 0x0c,
0xd8, 0x60, 0x43, 0x10, 0x07, 0x1b, 0x06, 0x37, 0x90, 0x03, 0x60, 0x43,
0xc1, 0x75, 0x73, 0x90, 0x01, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2,
0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb,
0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf,
0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60, 0xd4, 0x21, 0xc3,
0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63,
0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea,
0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x58, 0x1d, 0x32, 0x3c, 0x17, 0xbb,
0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0x81,
0x56, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d,
0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x30, 0x07, 0x00, 0x00, 0x79, 0x18, 0x00,
0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
@ -508,217 +661,69 @@ const unsigned char g_main[] = {
0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f,
0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4b,
0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x64, 0x52, 0x01, 0xca, 0xed, 0xa2, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x8d, 0x00,
0xfb, 0x0f, 0xc8, 0x35, 0x9e, 0xc4, 0x9d, 0x86, 0x5f, 0x44, 0x58, 0x49, 0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0xa9, 0x94, 0x4b, 0xb9, 0x95, 0xc2,
0x4c, 0xd0, 0x09, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x74, 0x02, 0x00, 0x0c, 0x40, 0x21, 0x94, 0x5d, 0xc9, 0xd1, 0x30, 0x02, 0x30, 0x46, 0xa0,
0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb, 0xa7, 0xe5, 0xfd, 0x8d,
0x00, 0xb8, 0x09, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41, 0xcc, 0x83, 0x7d, 0xee,
0x00, 0x6b, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x95, 0x01, 0x92, 0x91,
0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x01, 0x19, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x99, 0x41,
0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0xa2, 0x91, 0x01, 0x19, 0x4c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x9d, 0x81, 0xd2, 0x95, 0x41, 0x19, 0x50, 0x23, 0x06, 0x09, 0x00, 0x82,
0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x60, 0x70, 0xa1, 0xc1, 0xb2, 0x99, 0xc1, 0x19, 0x54, 0x23, 0x06, 0x09,
0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x00, 0x82, 0x60, 0x60, 0xbc, 0x81, 0x53, 0x06, 0x67, 0xd0, 0x3d, 0x23,
0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1, 0x63, 0x06, 0x68, 0x60,
0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc4, 0x01, 0x74, 0x06,
0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x69, 0xe0, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc8, 0x41,
0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x84, 0x06, 0x6a, 0x20, 0x06, 0xd2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x18, 0x73, 0x20, 0xb1, 0xc1, 0x1a, 0x84, 0xc1, 0x34, 0x62, 0x90, 0x00,
0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x20, 0x08, 0x06, 0x06, 0x1d, 0x4c, 0x6d, 0xc0, 0x06, 0x1a, 0x35, 0x62,
0x00, 0x54, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x1c, 0x68, 0x09, 0x22, 0x04, 0xcb,
0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0xd2, 0x06, 0x6d, 0x50, 0x2d, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00,
0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x20, 0x08, 0x06, 0x4d, 0x1d, 0x70, 0x8c, 0x42, 0x0c, 0x4d, 0xf3, 0x06,
0x08, 0x40, 0x09, 0x00, 0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x6f, 0x70, 0x35, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0x23, 0x06,
0x00, 0x29, 0xc6, 0x40, 0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x07, 0x00, 0x82, 0x60, 0x40, 0xd5, 0x01, 0xc6, 0xcc, 0xc1, 0x68, 0x42,
0x88, 0x62, 0x20, 0xe4, 0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0xd8, 0x80, 0xc0, 0xc7,
0x25, 0xa4, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x86, 0x03, 0x3e, 0x36, 0x1c, 0xf0, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04,
0x50, 0x71, 0xcf, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0x03, 0x8a, 0x0f, 0xbe, 0xe9, 0x0e, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41,
0xb0, 0x10, 0x28, 0x58, 0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x1e,
0x10, 0xc4, 0x40, 0x4d, 0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x51, 0x38, 0x83, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10,
0x29, 0xc3, 0x40, 0x0c, 0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0x04, 0x03, 0x2a, 0x14, 0xc8, 0x00, 0xcb, 0x83, 0xd1, 0x84, 0x00, 0x18,
0xe4, 0x73, 0x1b, 0x55, 0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04,
0x18, 0x86, 0x42, 0x4c, 0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x83, 0xe7, 0x14, 0xd8, 0x80, 0x59, 0x94, 0x41, 0x08, 0x46, 0x0c, 0x0e,
0x21, 0x0a, 0x82, 0xb0, 0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0x00, 0x04, 0xc1, 0x80, 0x32, 0x85, 0x34, 0xe8, 0xd4, 0x60, 0x34, 0x21,
0xda, 0x60, 0x1c, 0xd8, 0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c, 0x16, 0x00,
0xca, 0x01, 0x1f, 0xe8, 0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0x04, 0xc1, 0xe0, 0x61, 0x85, 0x38, 0x88, 0xa0, 0x67, 0x10, 0x82, 0x11,
0xf8, 0xc0, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0x56, 0xc1, 0x0d, 0xc4, 0x00, 0x15,
0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0x46, 0x13, 0x02, 0x60, 0x38, 0x22, 0x70, 0x03, 0xe7, 0x9b, 0x65, 0x08,
0xfc, 0x00, 0x0c, 0xfc, 0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0x94, 0x60, 0x38, 0xc2, 0x51, 0x03, 0xe5, 0x9b, 0x65, 0x18, 0x84, 0xc0,
0xe6, 0xe1, 0x17, 0xe8, 0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x1e, 0x36, 0x90, 0xcf, 0x2c, 0x01, 0x61, 0x90, 0x1b, 0xc0, 0x67, 0xc4,
0x24, 0x06, 0xe3, 0xc0, 0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x59, 0x68, 0x85, 0xc0, 0x82, 0x38,
0x50, 0x0e, 0xf8, 0x40, 0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0xb4, 0xb0, 0x07,
0xc0, 0x07, 0xf6, 0x50, 0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x81, 0x05, 0x74, 0x20, 0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88,
0x60, 0x0e, 0xec, 0xf0, 0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0x6c, 0xc1, 0x0f, 0x82, 0x59, 0x02, 0x62, 0xa0, 0x62, 0x70, 0x04, 0x61,
0xe0, 0x07, 0x60, 0xe0, 0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x18, 0x8e, 0x90, 0xe6, 0x40, 0xf9, 0x66, 0x19, 0x8c, 0x22, 0xb0, 0xa9,
0x46, 0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x0e, 0xe4, 0x33, 0x4b, 0x70, 0x18, 0x75, 0x07, 0xf0, 0x19, 0x31, 0x30,
0x46, 0xde, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x00, 0x10, 0x04, 0x83, 0x68, 0x17, 0x6c, 0x21, 0xb0, 0x40, 0x0f, 0xe4,
0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x51, 0x2f, 0x90, 0x42, 0x60,
0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x41, 0x1f, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x5f,
0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x38, 0x85, 0x60, 0x96, 0xe0, 0x18, 0xa8, 0x18, 0x9c, 0x42, 0x30, 0x86,
0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x23, 0x2c, 0x3e, 0x50, 0xbe, 0x59, 0x86, 0x04, 0x09, 0xec, 0xf2, 0x03,
0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xf9, 0xcc, 0x12, 0x28, 0x86, 0x81, 0x02, 0x7c, 0x46, 0x0c, 0x0c, 0x00,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x04, 0xc1, 0x20, 0x22, 0x87, 0x5f, 0x08, 0x2c, 0x18, 0x05, 0xf9, 0x8c,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0x64, 0x0e, 0xad, 0x10, 0x58, 0x60,
0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x0a, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x08, 0x1d, 0x60,
0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x21, 0x98, 0x25, 0x50, 0x06, 0x3a, 0x06, 0x58, 0x00, 0xc8, 0x20, 0x21,
0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x03, 0x64, 0xa0, 0x63, 0x40, 0x05, 0x80, 0x4a, 0x28, 0x64, 0xa0, 0x63,
0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0x00, 0x05, 0xc0, 0x48, 0x24, 0x64, 0x34, 0x01, 0x0c, 0x02, 0x23, 0x44,
0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x41, 0x3e, 0x16, 0x08, 0xf2, 0xb1, 0x62, 0x14, 0xe4, 0x63, 0x01, 0x21,
0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x1f, 0x33, 0x48, 0x41, 0x3e, 0x16, 0x18, 0xf2, 0x19, 0x31, 0x48, 0x00,
0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x1e, 0x70, 0xe1, 0x1d, 0xde, 0xa1, 0x1c, 0x8a,
0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1,
0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x7a, 0x61, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x1e,
0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x70, 0xe1, 0x1d, 0xde, 0x81, 0x1c, 0x82, 0x11, 0x83, 0x04, 0x00, 0x41,
0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1, 0x1d, 0xce, 0xa1, 0x14, 0x10,
0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00,
0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c,
0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04,
0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a,
0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06,
0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08,
0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b,
0xd9, 0x10, 0x04, 0x13, 0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61,
0x20, 0x26, 0x08, 0x84, 0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b,
0x06, 0xc4, 0x20, 0x26, 0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13,
0x04, 0x82, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18,
0x18, 0xc2, 0xd9, 0x90, 0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b,
0x84, 0x07, 0x9a, 0x20, 0x7c, 0xd7, 0x04, 0x81, 0x68, 0x36, 0x20, 0x84,
0xb4, 0x10, 0xc3, 0x30, 0x01, 0x1b, 0x02, 0x6a, 0x82, 0x10, 0x06, 0xd8,
0x06, 0x84, 0xb0, 0x16, 0x82, 0x18, 0x08, 0x60, 0x43, 0x70, 0x6d, 0x20,
0x22, 0xa0, 0xc2, 0x26, 0x08, 0x62, 0x90, 0x6d, 0x08, 0xb4, 0x09, 0x82,
0x00, 0x90, 0x68, 0x0b, 0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5,
0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0x36, 0x41, 0x28, 0xa0, 0x09, 0x42,
0x11, 0x6d, 0x08, 0x88, 0x09, 0x42, 0x21, 0x4d, 0x10, 0x8a, 0x69, 0xc3,
0x42, 0x78, 0x1f, 0x18, 0x84, 0x81, 0x18, 0x0c, 0x62, 0x40, 0x8c, 0x01,
0x40, 0x84, 0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50,
0x50, 0x13, 0x04, 0xc2, 0xd9, 0x20, 0x9c, 0xc1, 0x19, 0x6c, 0x58, 0x86,
0x32, 0xf8, 0xc6, 0x20, 0x0c, 0xcc, 0x60, 0x30, 0x83, 0x61, 0x0c, 0xd0,
0x80, 0xc5, 0xd0, 0x13, 0xd3, 0x93, 0xd4, 0x04, 0x81, 0x78, 0x36, 0x08,
0x67, 0xb0, 0x06, 0x1b, 0x16, 0x46, 0x0d, 0xbe, 0x31, 0x08, 0x03, 0x33,
0x18, 0xc4, 0x80, 0x19, 0x03, 0x36, 0xd8, 0x30, 0x90, 0x41, 0x1a, 0xb4,
0x01, 0x93, 0x29, 0xab, 0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09,
0x42, 0x51, 0x6d, 0x58, 0x88, 0x37, 0xf8, 0xe0, 0x20, 0x0c, 0xc6, 0x60,
0x10, 0x03, 0x62, 0x0c, 0xd8, 0x60, 0x43, 0x10, 0x07, 0x1b, 0x06, 0x37,
0x90, 0x03, 0x60, 0x43, 0xc1, 0x75, 0x73, 0x90, 0x01, 0x55, 0xd8, 0xd8,
0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15,
0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01,
0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a,
0x60, 0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b,
0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4,
0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x58, 0x1d,
0x32, 0x3c, 0x17, 0xbb, 0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30,
0xba, 0xb2, 0x29, 0x81, 0x56, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e,
0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x30, 0x07, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02,
0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11,
0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18, 0x81, 0x33, 0x5c, 0xbe,
0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb, 0x16, 0x30, 0x0d, 0x97,
0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c, 0xd4, 0xe4, 0x17, 0xb7,
0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b, 0x00, 0xf3, 0x2c, 0x84,
0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3,
0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00,
0xc1, 0x00, 0x48, 0x03, 0x00, 0x61, 0x20, 0x00, 0x00, 0xbb, 0x00, 0x00,
0x00, 0x13, 0x04, 0x4b, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x64, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0xa9, 0x94,
0x4b, 0xb9, 0x95, 0xc2, 0x0c, 0x40, 0x21, 0x94, 0x5d, 0xc9, 0xd1, 0x30,
0x02, 0x30, 0x46, 0xa0, 0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb,
0xa7, 0xe5, 0xfd, 0x8d, 0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41,
0xcc, 0x83, 0x7d, 0xee, 0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
0x95, 0x01, 0x92, 0x91, 0x01, 0x19, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x70, 0x99, 0x41, 0xa2, 0x91, 0x01, 0x19, 0x4c, 0x23, 0x06, 0x09,
0x00, 0x82, 0x60, 0x70, 0x9d, 0x81, 0xd2, 0x95, 0x41, 0x19, 0x50, 0x23,
0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0xa1, 0xc1, 0xb2, 0x99, 0xc1, 0x19,
0x54, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xbc, 0x81, 0x53, 0x06,
0x67, 0xd0, 0x3d, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1,
0x63, 0x06, 0x68, 0x60, 0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60,
0xc4, 0x01, 0x74, 0x06, 0x69, 0xe0, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x60, 0xc8, 0x41, 0x84, 0x06, 0x6a, 0x20, 0x06, 0xd2, 0x88, 0x41,
0x02, 0x80, 0x20, 0x18, 0x18, 0x73, 0x20, 0xb1, 0xc1, 0x1a, 0x84, 0xc1,
0x34, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x06, 0x1d, 0x4c, 0x6d, 0xc0,
0x06, 0x1a, 0x35, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x1c, 0x68,
0x09, 0x22, 0x04, 0xcb, 0xd2, 0x06, 0x6d, 0x50, 0x2d, 0xa3, 0x09, 0x01,
0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0x1d, 0x70, 0x8c, 0x42,
0x0c, 0x4d, 0xf3, 0x06, 0x6f, 0x70, 0x35, 0xa3, 0x09, 0x01, 0x30, 0x9a,
0x20, 0x04, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x40, 0xd5, 0x01, 0xc6,
0xcc, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20,
0xd8, 0x80, 0xc0, 0xc7, 0x86, 0x03, 0x3e, 0x36, 0x1c, 0xf0, 0x19, 0x31,
0x38, 0x00, 0x10, 0x04, 0x03, 0x8a, 0x0f, 0xbe, 0xe9, 0x0e, 0x46, 0x13,
0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01,
0x40, 0x10, 0x0c, 0x1e, 0x51, 0x38, 0x83, 0xc3, 0x28, 0x06, 0x21, 0x18,
0x31, 0x38, 0x00, 0x10, 0x04, 0x03, 0x2a, 0x14, 0xc8, 0x00, 0xcb, 0x83,
0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31,
0x58, 0x00, 0x10, 0x04, 0x83, 0xe7, 0x14, 0xd8, 0x80, 0x59, 0x94, 0x41,
0x08, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x80, 0x32, 0x85, 0x34, 0xe8,
0xd4, 0x60, 0x34, 0x21, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10,
0x46, 0x0c, 0x16, 0x00, 0x04, 0xc1, 0xe0, 0x61, 0x85, 0x38, 0x88, 0xa0,
0x67, 0x10, 0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0x56, 0xc1,
0x0d, 0xc4, 0x00, 0x15, 0x46, 0x13, 0x02, 0x60, 0x38, 0x22, 0x70, 0x03,
0xe7, 0x9b, 0x65, 0x08, 0x94, 0x60, 0x38, 0xc2, 0x51, 0x03, 0xe5, 0x9b,
0x65, 0x18, 0x84, 0xc0, 0x1e, 0x36, 0x90, 0xcf, 0x2c, 0x01, 0x61, 0x90,
0x1b, 0xc0, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x59, 0x68,
0x85, 0xc0, 0x82, 0x38, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18,
0x44, 0xb4, 0xb0, 0x07, 0x81, 0x05, 0x74, 0x20, 0x9f, 0x11, 0x03, 0x03,
0x00, 0x41, 0x30, 0x88, 0x6c, 0xc1, 0x0f, 0x82, 0x59, 0x02, 0x62, 0xa0,
0x62, 0x70, 0x04, 0x61, 0x18, 0x8e, 0x90, 0xe6, 0x40, 0xf9, 0x66, 0x19,
0x8c, 0x22, 0xb0, 0xa9, 0x0e, 0xe4, 0x33, 0x4b, 0x70, 0x18, 0x75, 0x07,
0xf0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x68, 0x17, 0x6c, 0x21,
0xb0, 0x40, 0x0f, 0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x51,
0x2f, 0x90, 0x42, 0x60, 0x41, 0x1f, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40,
0x10, 0x0c, 0xa2, 0x5f, 0x38, 0x85, 0x60, 0x96, 0xe0, 0x18, 0xa8, 0x18,
0x9c, 0x42, 0x30, 0x86, 0x23, 0x2c, 0x3e, 0x50, 0xbe, 0x59, 0x86, 0x04,
0x09, 0xec, 0xf2, 0x03, 0xf9, 0xcc, 0x12, 0x28, 0x86, 0x81, 0x02, 0x7c,
0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x22, 0x87, 0x5f, 0x08, 0x2c,
0x18, 0x05, 0xf9, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0x64, 0x0e,
0xad, 0x10, 0x58, 0x60, 0x0a, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04,
0x83, 0x08, 0x1d, 0x60, 0x21, 0x98, 0x25, 0x50, 0x06, 0x3a, 0x06, 0x32,
0x48, 0xc8, 0x00, 0x81, 0x05, 0x60, 0xa0, 0x63, 0xa0, 0x12, 0x0a, 0x41,
0x05, 0x60, 0xa0, 0x63, 0x30, 0x12, 0x09, 0x01, 0x05, 0xc0, 0x86, 0x50,
0x90, 0x8f, 0x0d, 0xa1, 0x20, 0x1f, 0x1b, 0x42, 0x41, 0x3e, 0x23, 0x06,
0x09, 0x00, 0x82, 0x60, 0x80, 0xc8, 0x03, 0x2d, 0xac, 0xc3, 0x3a, 0x84,
0xc3, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x88, 0x3c, 0xd0, 0xc2,
0x3a, 0xac, 0x43, 0x2e, 0x08, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
0xc8, 0x03, 0x2d, 0xac, 0xc3, 0x3a, 0x80, 0x43, 0x30, 0x62, 0x90, 0x00,
0x20, 0x08, 0x06, 0x88, 0x3c, 0xd0, 0xc2, 0x3a, 0xac, 0xc3, 0x38, 0x84,
0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };

View File

@ -15,7 +15,7 @@
; -------------------- ----- ------ -------- -------- ------- ------ ; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw ; SV_Target 0 xyzw 0 TARGET float xyzw
; ;
; shader hash: 3b6d9e8afa50617a15a7f6eade871e3f ; shader hash: 09cefd67edfe90788167dffafb728f7d
; ;
; Pipeline Runtime Information: ; Pipeline Runtime Information:
; ;
@ -47,9 +47,9 @@
; { ; {
; ;
; float scRGB_output; ; Offset: 0 ; float scRGB_output; ; Offset: 0
; float SDR_whitelevel; ; Offset: 4 ; float color_scale; ; Offset: 4
; float HDR_whitelevel; ; Offset: 8 ; float unused1; ; Offset: 8
; float maxCLL; ; Offset: 12 ; float unused2; ; Offset: 12
; float4 Yoffset; ; Offset: 16 ; float4 Yoffset; ; Offset: 16
; float4 Rcoeff; ; Offset: 32 ; float4 Rcoeff; ; Offset: 32
; float4 Gcoeff; ; Offset: 48 ; float4 Gcoeff; ; Offset: 48
@ -188,15 +188,19 @@ define void @main() {
br label %76 br label %76
; <label>:76 ; preds = %69, %67, %0 ; <label>:76 ; preds = %69, %67, %0
%77 = phi float [ %53, %69 ], [ %53, %67 ], [ %27, %0 ] %77 = phi float [ %27, %0 ], [ %53, %69 ], [ %53, %67 ]
%78 = phi float [ %65, %69 ], [ %65, %67 ], [ %32, %0 ] %78 = phi float [ %32, %0 ], [ %65, %69 ], [ %65, %67 ]
%79 = phi float [ %75, %69 ], [ %68, %67 ], [ %37, %0 ] %79 = phi float [ %37, %0 ], [ %75, %69 ], [ %68, %67 ]
%80 = fmul fast float %77, %5 %80 = extractvalue %dx.types.CBufRet.f32 %38, 1
%81 = fmul fast float %78, %6 %81 = fmul fast float %77, %5
%82 = fmul fast float %79, %7 %82 = fmul fast float %81, %80
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %80) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %83 = fmul fast float %78, %6
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %81) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %84 = fmul fast float %83, %80
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %82) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %85 = fmul fast float %79, %7
%86 = fmul fast float %85, %80
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %82) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %84) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %86) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void ret void
} }
@ -263,12 +267,12 @@ attributes #2 = { nounwind readonly }
#endif #endif
const unsigned char g_main[] = { const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0xa1, 0xda, 0x7e, 0xda, 0x56, 0xd3, 0x95, 0xd2, 0x44, 0x58, 0x42, 0x43, 0xb7, 0xa4, 0x73, 0xa5, 0xd0, 0x31, 0x18, 0x8c,
0xcd, 0x0e, 0x9b, 0x05, 0x80, 0x43, 0xbe, 0x34, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0x77, 0x74, 0x8a, 0x6d, 0x8f, 0x8a, 0x01, 0x00, 0x00, 0x00,
0x75, 0x15, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x7d, 0x15, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x81, 0x0b, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x7d, 0x0b, 0x00, 0x00,
0x9d, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0x99, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -327,10 +331,10 @@ const unsigned char g_main[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0x74, 0x08, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0x70, 0x08, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5c, 0x08, 0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x13, 0x02, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
@ -396,11 +400,11 @@ const unsigned char g_main[] = {
0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0,
0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac, 0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac,
0x00, 0x03, 0xca, 0xa3, 0x88, 0xca, 0x35, 0x80, 0x8a, 0x92, 0x28, 0x83, 0x00, 0x03, 0xca, 0xa3, 0x94, 0xca, 0x36, 0x80, 0x8a, 0x92, 0x28, 0x83,
0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01,
0x20, 0x6f, 0x06, 0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c, 0x20, 0x6f, 0x06, 0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c,
0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10,
0x00, 0x79, 0x18, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x00, 0x79, 0x18, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
@ -420,56 +424,205 @@ const unsigned char g_main[] = {
0x04, 0x5c, 0xdb, 0x04, 0xc1, 0x13, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47, 0x04, 0x5c, 0xdb, 0x04, 0xc1, 0x13, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47,
0x42, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0xc2, 0x99, 0x42, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0xc2, 0x99,
0x20, 0x10, 0xcf, 0x04, 0xc1, 0x02, 0x83, 0x0d, 0x08, 0xe2, 0x7d, 0x04, 0x20, 0x10, 0xcf, 0x04, 0xc1, 0x02, 0x83, 0x0d, 0x08, 0xe2, 0x7d, 0x04,
0x18, 0x34, 0x4d, 0x18, 0xd0, 0x99, 0x22, 0x92, 0xfa, 0xba, 0x43, 0x4b, 0x18, 0x34, 0x4d, 0x18, 0x70, 0x19, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a,
0xa3, 0x2b, 0x63, 0x2b, 0xb3, 0x2b, 0x63, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x1b, 0x0b, 0x63, 0x2b, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x04, 0x19, 0x83,
0x03, 0x19, 0x83, 0x8f, 0x0c, 0xc0, 0xa0, 0xa1, 0x83, 0x44, 0x24, 0xf5, 0x8f, 0x0c, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0x47, 0x9d, 0x5b, 0xdd, 0x5c,
0x75, 0x87, 0x96, 0x46, 0x57, 0xc6, 0x56, 0x66, 0x57, 0xc6, 0x36, 0x41, 0x19, 0x59, 0xcc, 0x04, 0x81, 0x88, 0x36, 0x18, 0x88, 0x19, 0x7c, 0x67,
0x20, 0xa2, 0x0d, 0x06, 0x62, 0x06, 0xdf, 0x19, 0x80, 0x41, 0x43, 0xa3, 0x00, 0x06, 0x0d, 0x8f, 0x3a, 0xb7, 0xba, 0xb9, 0x32, 0x32, 0x99, 0x09,
0x2d, 0x0c, 0x6f, 0x88, 0x89, 0x69, 0x82, 0x40, 0x48, 0x1b, 0x0c, 0x24, 0x02, 0x21, 0x6d, 0x30, 0x90, 0x34, 0xf8, 0xd4, 0x00, 0x0c, 0x1a, 0x1e,
0x0d, 0x3e, 0x35, 0x00, 0x83, 0x86, 0x47, 0xd6, 0x9b, 0x99, 0xd9, 0x5c, 0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13, 0x04, 0x62, 0xda, 0x80,
0x19, 0xdd, 0x04, 0x81, 0x98, 0x36, 0x20, 0x08, 0x1b, 0x7c, 0x6d, 0x00, 0x20, 0x6c, 0xf0, 0xb5, 0x01, 0x18, 0x34, 0x4d, 0x18, 0xd0, 0x90, 0x1a,
0x06, 0x4d, 0x13, 0x06, 0x34, 0xa4, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x04, 0x79, 0x83,
0x08, 0x04, 0xb5, 0x01, 0x41, 0xde, 0xe0, 0x83, 0x03, 0x30, 0x68, 0x9a, 0x0f, 0x0e, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0xc6, 0xd1, 0xd8, 0x5b, 0x99,
0x30, 0xa0, 0x71, 0x34, 0xf6, 0x56, 0x66, 0x66, 0x36, 0x41, 0x20, 0xaa, 0x99, 0xd9, 0x04, 0x81, 0xa8, 0x36, 0x20, 0x88, 0x1c, 0x7c, 0x73, 0x00,
0x0d, 0x08, 0x22, 0x07, 0xdf, 0x1c, 0x80, 0x41, 0xd3, 0x84, 0x01, 0x0d, 0x06, 0x4d, 0x13, 0x06, 0x34, 0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26,
0xa1, 0xb1, 0xb7, 0x32, 0x33, 0xb3, 0x09, 0x02, 0x61, 0x6d, 0x40, 0x90, 0x08, 0x84, 0xb5, 0x01, 0x41, 0xea, 0xe0, 0xb3, 0x03, 0x30, 0x68, 0x9a,
0x3a, 0xf8, 0xec, 0x00, 0x0c, 0x9a, 0x26, 0x0c, 0x36, 0x24, 0x95, 0x18, 0x30, 0xd8, 0x90, 0x54, 0x62, 0x50, 0x06, 0x68, 0xb0, 0x06, 0x6e, 0x10,
0x94, 0x01, 0x1a, 0xac, 0x81, 0x1b, 0xc4, 0x01, 0x1d, 0xdc, 0xc1, 0x86, 0x07, 0x74, 0x70, 0x07, 0x1b, 0x06, 0xa2, 0xc3, 0x83, 0x09, 0x82, 0x00,
0x81, 0xe8, 0xf0, 0x60, 0x82, 0x20, 0x00, 0x1b, 0x80, 0x0d, 0x03, 0xb1, 0x6c, 0x00, 0x36, 0x0c, 0xc4, 0x1e, 0xec, 0xc1, 0x86, 0x80, 0x0f, 0x36,
0x07, 0x7b, 0xb0, 0x21, 0xe0, 0x83, 0x0d, 0xc3, 0xa0, 0x07, 0x7d, 0x30, 0x0c, 0x83, 0x1e, 0xf4, 0xc1, 0x04, 0x41, 0x0c, 0xca, 0x60, 0x43, 0xf0,
0x41, 0x10, 0x83, 0x32, 0xd8, 0x10, 0xfc, 0x01, 0x89, 0xb6, 0xb0, 0x34, 0x07, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd,
0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x4d, 0x10, 0x0a, 0x6d, 0x82, 0x50,
0x6e, 0x13, 0x84, 0x42, 0x9b, 0x20, 0x14, 0xdb, 0x86, 0x80, 0x98, 0x20, 0x6c, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x70, 0x13, 0x84, 0xa2, 0xdb, 0xb0,
0x14, 0xdc, 0x04, 0xa1, 0xe8, 0x36, 0x2c, 0x84, 0x28, 0x8c, 0x02, 0x29, 0x10, 0xa2, 0x30, 0x0a, 0xa4, 0x50, 0x0a, 0xa6, 0x30, 0x98, 0x02, 0x71,
0x94, 0x82, 0x29, 0x0c, 0xa6, 0x40, 0x9c, 0x02, 0x40, 0x84, 0xaa, 0x08, 0x0a, 0x00, 0x11, 0xaa, 0x22, 0xac, 0xa1, 0xa7, 0x27, 0x29, 0xa2, 0x09,
0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x78, 0x1b, 0x84, 0xef, 0x42, 0xe1, 0x6d, 0x10, 0xbe, 0x6f, 0xc3, 0x32, 0xa4, 0xc2, 0x28, 0x9c,
0xdb, 0xb0, 0x0c, 0xa9, 0x30, 0x0a, 0xa7, 0x50, 0x0a, 0xaa, 0x30, 0xa8, 0x42, 0x29, 0xa8, 0xc2, 0xa0, 0x0a, 0xc3, 0x29, 0xac, 0x02, 0x8b, 0xa1,
0xc2, 0x70, 0x0a, 0xab, 0xc0, 0x62, 0xe8, 0x89, 0xe9, 0x49, 0x6a, 0x82, 0x27, 0xa6, 0x27, 0xa9, 0x09, 0x02, 0x71, 0x6d, 0x10, 0x3e, 0x57, 0xd8,
0x40, 0x5c, 0x1b, 0x84, 0xcf, 0x15, 0x36, 0x2c, 0x4c, 0x2b, 0x8c, 0xc2, 0xb0, 0x30, 0xad, 0x30, 0x0a, 0xa7, 0x50, 0x0a, 0xaa, 0x30, 0x98, 0x02,
0x29, 0x94, 0x82, 0x2a, 0x0c, 0xa6, 0xc0, 0x9c, 0xc2, 0x2b, 0x6c, 0x18, 0x73, 0x0a, 0xaf, 0xb0, 0x61, 0x40, 0x05, 0x56, 0x80, 0x05, 0x26, 0x53,
0x50, 0x81, 0x15, 0x60, 0x81, 0xc9, 0x94, 0xd5, 0x17, 0x55, 0x98, 0xdc, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x13, 0x84, 0xe2, 0xdb,
0x59, 0x19, 0xdd, 0x04, 0xa1, 0xf8, 0x36, 0x2c, 0x84, 0x2c, 0x8c, 0xc2, 0xb0, 0x10, 0xb2, 0x30, 0x0a, 0xb3, 0x50, 0x0a, 0xa7, 0x30, 0x98, 0x02,
0x2c, 0x94, 0xc2, 0x29, 0x0c, 0xa6, 0x40, 0x9c, 0xc2, 0x2b, 0x6c, 0x08, 0x71, 0x0a, 0xaf, 0xb0, 0x21, 0xa0, 0x85, 0x0d, 0x43, 0x2c, 0xd4, 0x02,
0x68, 0x61, 0xc3, 0x10, 0x0b, 0xb5, 0x00, 0x6c, 0x28, 0xf4, 0x20, 0x14, 0xb0, 0xa1, 0xd0, 0x83, 0x50, 0xb0, 0x05, 0x0e, 0x20, 0x22, 0x26, 0x17,
0x6c, 0x81, 0x03, 0x88, 0x88, 0xc9, 0x85, 0xb9, 0x8d, 0xa1, 0x95, 0xcd, 0xe6, 0x36, 0x86, 0x56, 0x36, 0x47, 0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e,
0xd1, 0x30, 0x63, 0x7b, 0x0b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x18, 0x8b, 0x6e, 0x82, 0x40, 0x60, 0x2c, 0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x26, 0x08,
0x34, 0xb7, 0x39, 0xba, 0xb9, 0x09, 0x02, 0x91, 0xd1, 0x98, 0x4b, 0x3b, 0x44, 0x46, 0x63, 0x2e, 0xed, 0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x5c, 0xda,
0xfb, 0x62, 0x23, 0xa3, 0x31, 0x97, 0x76, 0xf6, 0x35, 0x47, 0x47, 0x84, 0xd9, 0xd7, 0x1c, 0x1d, 0x11, 0xba, 0x32, 0xbc, 0x2f, 0xb7, 0x37, 0xb9,
0xae, 0x0c, 0xef, 0xcb, 0xed, 0x4d, 0xae, 0x6d, 0x03, 0x83, 0x0b, 0x64, 0xb6, 0x0d, 0x0c, 0x2e, 0x90, 0x41, 0x2e, 0xe8, 0xc2, 0x2e, 0xf0, 0x42,
0x90, 0x0b, 0xba, 0xb0, 0x0b, 0xbc, 0xd0, 0x0b, 0x88, 0x2f, 0x90, 0xc1, 0x2f, 0x20, 0xbe, 0x40, 0x06, 0xbf, 0xc0, 0x54, 0x61, 0x63, 0xb3, 0x6b,
0x2f, 0x30, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0,
0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13,
0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0x32, 0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51,
0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x50, 0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x87, 0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d,
0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0xac, 0x8c, 0x6d, 0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b,
0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x6c, 0x95, 0xc8, 0xf0,
0xe6, 0xa6, 0x04, 0x5b, 0x25, 0x32, 0x3c, 0x17, 0xba, 0x3c, 0xb8, 0xb2, 0x5c, 0xe8, 0xf2, 0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8,
0x20, 0x37, 0xb7, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9, 0x29, 0xd2, 0xde, 0xdc, 0xe6, 0xa6, 0x08, 0x78, 0xd0, 0x07, 0x75, 0xc8, 0xf0,
0x02, 0x1e, 0xf4, 0x41, 0x1d, 0x32, 0x3c, 0x17, 0xbb, 0xb4, 0xb2, 0xbb, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca,
0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0xc1, 0x1f, 0xd4, 0x21, 0xa6, 0x04, 0x7f, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e,
0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73, 0xa3, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x60, 0x0b, 0x5d, 0xc8,
0x9b, 0x9b, 0x12, 0xd8, 0x42, 0x17, 0x32, 0x3c, 0x97, 0xb1, 0xb7, 0x3a, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04,
0x37, 0xba, 0x32, 0xb9, 0xb9, 0x29, 0xc1, 0x2f, 0x00, 0x79, 0x18, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00,
0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4,
0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00,
0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d,
0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c,
0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9,
0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18,
0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb,
0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c,
0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b,
0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9,
0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x09, 0xce, 0xfd, 0x67, 0xed, 0xfe, 0x90, 0x78, 0x81, 0x67, 0xdf,
0xfa, 0xfb, 0x72, 0x8f, 0x7d, 0x44, 0x58, 0x49, 0x4c, 0xdc, 0x09, 0x00,
0x00, 0x60, 0x00, 0x00, 0x00, 0x77, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xc4, 0x09, 0x00,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x6e, 0x02, 0x00,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x54, 0x00, 0x00,
0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00,
0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00,
0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00,
0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0,
0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42,
0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06, 0x80, 0xbe, 0x19, 0x00,
0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3,
0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61, 0x20, 0x26, 0x08, 0x84,
0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13, 0x04, 0x82, 0xd9, 0x20,
0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x90,
0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b, 0x84, 0x07, 0x9a, 0x20,
0x7c, 0xd7, 0x04, 0x81, 0x68, 0x36, 0x20, 0x84, 0xb4, 0x10, 0xc3, 0x30,
0x01, 0x1b, 0x02, 0x6a, 0x82, 0x10, 0x06, 0xd8, 0x06, 0x84, 0xb0, 0x16,
0x82, 0x18, 0x08, 0x60, 0x43, 0x70, 0x6d, 0x20, 0x22, 0xa0, 0xc2, 0x26,
0x08, 0x62, 0x90, 0x6d, 0x08, 0xb4, 0x09, 0x82, 0x00, 0x90, 0x68, 0x0b,
0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97,
0xf6, 0xe6, 0x36, 0x41, 0x28, 0xa0, 0x09, 0x42, 0x11, 0x6d, 0x08, 0x88,
0x09, 0x42, 0x21, 0x4d, 0x10, 0x8a, 0x69, 0xc3, 0x42, 0x78, 0x1f, 0x18,
0x84, 0x81, 0x18, 0x0c, 0x62, 0x40, 0x8c, 0x01, 0x40, 0x84, 0xaa, 0x08,
0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x50, 0x13, 0x04, 0xc2,
0xd9, 0x20, 0x9c, 0xc1, 0x19, 0x6c, 0x58, 0x86, 0x32, 0xf8, 0xc6, 0x20,
0x0c, 0xcc, 0x60, 0x30, 0x83, 0x61, 0x0c, 0xd0, 0x80, 0xc5, 0xd0, 0x13,
0xd3, 0x93, 0xd4, 0x04, 0x81, 0x78, 0x36, 0x08, 0x67, 0xb0, 0x06, 0x1b,
0x16, 0x46, 0x0d, 0xbe, 0x31, 0x08, 0x03, 0x33, 0x18, 0xc4, 0x80, 0x19,
0x03, 0x36, 0xd8, 0x30, 0x90, 0x41, 0x1a, 0xb4, 0x01, 0x93, 0x29, 0xab,
0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09, 0x42, 0x51, 0x6d, 0x58,
0x88, 0x37, 0xf8, 0xe0, 0x20, 0x0c, 0xc6, 0x60, 0x10, 0x03, 0x62, 0x0c,
0xd8, 0x60, 0x43, 0x10, 0x07, 0x1b, 0x06, 0x37, 0x90, 0x03, 0x60, 0x43,
0xc1, 0x75, 0x73, 0x90, 0x01, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2,
0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb,
0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf,
0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60, 0xd4, 0x21, 0xc3,
0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63,
0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea,
0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x58, 0x1d, 0x32, 0x3c, 0x17, 0xbb,
0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0x81,
0x56, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d,
0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x30, 0x07, 0x00, 0x00, 0x79, 0x18, 0x00,
0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
@ -508,217 +661,69 @@ const unsigned char g_main[] = {
0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f,
0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x6d, 0x9e, 0x8a, 0xfa, 0x50, 0x61, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x8d, 0x00,
0x7a, 0x15, 0xa7, 0xf6, 0xea, 0xde, 0x87, 0x1e, 0x3f, 0x44, 0x58, 0x49, 0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0xa9, 0x94, 0x4b, 0xb9, 0x95, 0xc2,
0x4c, 0xd0, 0x09, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x74, 0x02, 0x00, 0x0c, 0x40, 0x21, 0x94, 0x5d, 0xc9, 0xd1, 0x30, 0x02, 0x30, 0x46, 0xa0,
0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb, 0xa7, 0xe5, 0xfd, 0x8d,
0x00, 0xb8, 0x09, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41, 0xcc, 0x83, 0x7d, 0xee,
0x00, 0x6b, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x95, 0x01, 0x92, 0x91,
0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x01, 0x19, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x99, 0x41,
0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0xa2, 0x91, 0x01, 0x19, 0x4c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x9d, 0x81, 0xd2, 0x95, 0x41, 0x19, 0x50, 0x23, 0x06, 0x09, 0x00, 0x82,
0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x60, 0x70, 0xa1, 0xc1, 0xb2, 0x99, 0xc1, 0x19, 0x54, 0x23, 0x06, 0x09,
0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x00, 0x82, 0x60, 0x60, 0xbc, 0x81, 0x53, 0x06, 0x67, 0xd0, 0x3d, 0x23,
0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1, 0x63, 0x06, 0x68, 0x60,
0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc4, 0x01, 0x74, 0x06,
0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x69, 0xe0, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc8, 0x41,
0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x84, 0x06, 0x6a, 0x20, 0x06, 0xd2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x18, 0x73, 0x20, 0xb1, 0xc1, 0x1a, 0x84, 0xc1, 0x34, 0x62, 0x90, 0x00,
0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x20, 0x08, 0x06, 0x06, 0x1d, 0x4c, 0x6d, 0xc0, 0x06, 0x1a, 0x35, 0x62,
0x00, 0x54, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x1c, 0x68, 0x09, 0x22, 0x04, 0xcb,
0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0xd2, 0x06, 0x6d, 0x50, 0x2d, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00,
0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x20, 0x08, 0x06, 0x4d, 0x1d, 0x70, 0x8c, 0x42, 0x0c, 0x4d, 0xf3, 0x06,
0x08, 0x40, 0x09, 0x00, 0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x6f, 0x70, 0x35, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0x23, 0x06,
0x00, 0x29, 0xc6, 0x40, 0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x07, 0x00, 0x82, 0x60, 0x40, 0xd5, 0x01, 0xc6, 0xcc, 0xc1, 0x68, 0x42,
0x88, 0x62, 0x20, 0xe4, 0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0xd8, 0x80, 0xc0, 0xc7,
0x25, 0xa4, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x06, 0x03, 0x3e, 0x36, 0x20, 0xf0, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04,
0x50, 0x71, 0xcf, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0x03, 0x8a, 0x0f, 0xbe, 0xe9, 0x0e, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41,
0xb0, 0x10, 0x28, 0x58, 0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x1e,
0x10, 0xc4, 0x40, 0x4d, 0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x51, 0x38, 0x83, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10,
0x29, 0xc3, 0x40, 0x0c, 0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0x04, 0x03, 0x2a, 0x14, 0xc8, 0x00, 0xcb, 0x83, 0xd1, 0x84, 0x00, 0x18,
0xe4, 0x73, 0x1b, 0x55, 0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04,
0x18, 0x86, 0x42, 0x4c, 0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x83, 0xe7, 0x14, 0xd8, 0x80, 0x59, 0x94, 0x41, 0x08, 0x46, 0x0c, 0x0e,
0x21, 0x0a, 0x82, 0xb0, 0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0x00, 0x04, 0xc1, 0x80, 0x32, 0x85, 0x34, 0xe8, 0xd4, 0x60, 0x34, 0x21,
0xda, 0x60, 0x1c, 0xd8, 0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c, 0x16, 0x00,
0xca, 0x01, 0x1f, 0xe8, 0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0x04, 0xc1, 0xe0, 0x61, 0x85, 0x38, 0x88, 0xa0, 0x67, 0x10, 0x82, 0x11,
0xf8, 0xc0, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0x56, 0xc1, 0x0d, 0xc4, 0x00, 0x15,
0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0x46, 0x13, 0x02, 0x60, 0x38, 0x22, 0x70, 0x03, 0xe7, 0x9b, 0x65, 0x08,
0xfc, 0x00, 0x0c, 0xfc, 0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0x94, 0x60, 0x38, 0xc2, 0x51, 0x03, 0xe5, 0x9b, 0x65, 0x18, 0x84, 0xc0,
0xe6, 0xe1, 0x17, 0xe8, 0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x1e, 0x36, 0x90, 0xcf, 0x2c, 0x01, 0x61, 0x90, 0x1b, 0xc0, 0x67, 0xc4,
0x24, 0x06, 0xe3, 0xc0, 0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x59, 0x68, 0x85, 0xc0, 0x82, 0x38,
0x50, 0x0e, 0xf8, 0x40, 0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0xb4, 0xb0, 0x07,
0xc0, 0x07, 0xf6, 0x50, 0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x81, 0x05, 0x74, 0x20, 0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88,
0x60, 0x0e, 0xec, 0xf0, 0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0x6c, 0xc1, 0x0f, 0x82, 0x59, 0x02, 0x62, 0xa0, 0x62, 0x70, 0x04, 0x61,
0xe0, 0x07, 0x60, 0xe0, 0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x18, 0x8e, 0x90, 0xe6, 0x40, 0xf9, 0x66, 0x19, 0x8c, 0x22, 0xb0, 0xa9,
0x46, 0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x0e, 0xe4, 0x33, 0x4b, 0x70, 0x18, 0x75, 0x07, 0xf0, 0x19, 0x31, 0x30,
0x46, 0xde, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x00, 0x10, 0x04, 0x83, 0x68, 0x17, 0x6c, 0x21, 0xb0, 0x40, 0x0f, 0xe4,
0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x51, 0x2f, 0x90, 0x42, 0x60,
0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x41, 0x1f, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x5f,
0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x38, 0x85, 0x60, 0x96, 0xe0, 0x18, 0xa8, 0x18, 0x9c, 0x42, 0x30, 0x86,
0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x23, 0x2c, 0x3e, 0x50, 0xbe, 0x59, 0x86, 0x04, 0x09, 0xec, 0xf2, 0x03,
0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xf9, 0xcc, 0x12, 0x28, 0x86, 0x81, 0x02, 0x7c, 0x46, 0x0c, 0x0c, 0x00,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x04, 0xc1, 0x20, 0x22, 0x87, 0x5f, 0x08, 0x2c, 0x18, 0x05, 0xf9, 0x8c,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0x64, 0x0e, 0xad, 0x10, 0x58, 0x60,
0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x0a, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x08, 0x1d, 0x60,
0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x21, 0x98, 0x25, 0x50, 0x06, 0x3a, 0x06, 0x58, 0x00, 0xc8, 0x20, 0x21,
0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x03, 0x64, 0xa0, 0x63, 0x40, 0x05, 0x80, 0x4a, 0x28, 0x64, 0xa0, 0x63,
0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0x00, 0x05, 0xc0, 0x48, 0x24, 0x64, 0x34, 0x01, 0x0c, 0x02, 0x23, 0x44,
0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x41, 0x3e, 0x16, 0x08, 0xf2, 0xb1, 0x62, 0x14, 0xe4, 0x63, 0x01, 0x21,
0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x1f, 0x33, 0x48, 0x41, 0x3e, 0x16, 0x18, 0xf2, 0x19, 0x31, 0x48, 0x00,
0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x1e, 0x70, 0xe1, 0x1d, 0xde, 0xa1, 0x1c, 0x8a,
0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1,
0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x7a, 0x61, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x1e,
0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x70, 0xe1, 0x1d, 0xde, 0x81, 0x1c, 0x82, 0x11, 0x83, 0x04, 0x00, 0x41,
0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1, 0x1d, 0xce, 0xa1, 0x14, 0x10,
0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00,
0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c,
0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04,
0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a,
0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06,
0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08,
0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b,
0xd9, 0x10, 0x04, 0x13, 0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61,
0x20, 0x26, 0x08, 0x84, 0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b,
0x06, 0xc4, 0x20, 0x26, 0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13,
0x04, 0x82, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18,
0x18, 0xc2, 0xd9, 0x90, 0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b,
0x84, 0x07, 0x9a, 0x20, 0x7c, 0xd7, 0x04, 0x81, 0x68, 0x36, 0x20, 0x84,
0xb4, 0x10, 0xc3, 0x30, 0x01, 0x1b, 0x02, 0x6a, 0x82, 0x10, 0x06, 0xd8,
0x06, 0x84, 0xb0, 0x16, 0x82, 0x18, 0x08, 0x60, 0x43, 0x70, 0x6d, 0x20,
0x22, 0xa0, 0xc2, 0x26, 0x08, 0x62, 0x90, 0x6d, 0x08, 0xb4, 0x09, 0x82,
0x00, 0x90, 0x68, 0x0b, 0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5,
0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0x36, 0x41, 0x28, 0xa0, 0x09, 0x42,
0x11, 0x6d, 0x08, 0x88, 0x09, 0x42, 0x21, 0x4d, 0x10, 0x8a, 0x69, 0xc3,
0x42, 0x78, 0x1f, 0x18, 0x84, 0x81, 0x18, 0x0c, 0x62, 0x40, 0x8c, 0x01,
0x40, 0x84, 0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50,
0x50, 0x13, 0x04, 0xc2, 0xd9, 0x20, 0x9c, 0xc1, 0x19, 0x6c, 0x58, 0x86,
0x32, 0xf8, 0xc6, 0x20, 0x0c, 0xcc, 0x60, 0x30, 0x83, 0x61, 0x0c, 0xd0,
0x80, 0xc5, 0xd0, 0x13, 0xd3, 0x93, 0xd4, 0x04, 0x81, 0x78, 0x36, 0x08,
0x67, 0xb0, 0x06, 0x1b, 0x16, 0x46, 0x0d, 0xbe, 0x31, 0x08, 0x03, 0x33,
0x18, 0xc4, 0x80, 0x19, 0x03, 0x36, 0xd8, 0x30, 0x90, 0x41, 0x1a, 0xb4,
0x01, 0x93, 0x29, 0xab, 0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09,
0x42, 0x51, 0x6d, 0x58, 0x88, 0x37, 0xf8, 0xe0, 0x20, 0x0c, 0xc6, 0x60,
0x10, 0x03, 0x62, 0x0c, 0xd8, 0x60, 0x43, 0x10, 0x07, 0x1b, 0x06, 0x37,
0x90, 0x03, 0x60, 0x43, 0xc1, 0x75, 0x73, 0x90, 0x01, 0x55, 0xd8, 0xd8,
0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15,
0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01,
0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a,
0x60, 0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b,
0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4,
0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x58, 0x1d,
0x32, 0x3c, 0x17, 0xbb, 0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30,
0xba, 0xb2, 0x29, 0x81, 0x56, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e,
0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x30, 0x07, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02,
0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11,
0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18, 0x81, 0x33, 0x5c, 0xbe,
0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb, 0x16, 0x30, 0x0d, 0x97,
0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c, 0xd4, 0xe4, 0x17, 0xb7,
0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b, 0x00, 0xf3, 0x2c, 0x84,
0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3,
0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00,
0xc1, 0x00, 0x48, 0x03, 0x00, 0x61, 0x20, 0x00, 0x00, 0xbb, 0x00, 0x00,
0x00, 0x13, 0x04, 0x4b, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0x64, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0xa9, 0x94,
0x4b, 0xb9, 0x95, 0xc2, 0x0c, 0x40, 0x21, 0x94, 0x5d, 0xc9, 0xd1, 0x30,
0x02, 0x30, 0x46, 0xa0, 0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb,
0xa7, 0xe5, 0xfd, 0x8d, 0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41,
0xcc, 0x83, 0x7d, 0xee, 0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
0x95, 0x01, 0x92, 0x91, 0x01, 0x19, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x70, 0x99, 0x41, 0xa2, 0x91, 0x01, 0x19, 0x4c, 0x23, 0x06, 0x09,
0x00, 0x82, 0x60, 0x70, 0x9d, 0x81, 0xd2, 0x95, 0x41, 0x19, 0x50, 0x23,
0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0xa1, 0xc1, 0xb2, 0x99, 0xc1, 0x19,
0x54, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xbc, 0x81, 0x53, 0x06,
0x67, 0xd0, 0x3d, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1,
0x63, 0x06, 0x68, 0x60, 0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60,
0xc4, 0x01, 0x74, 0x06, 0x69, 0xe0, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x60, 0xc8, 0x41, 0x84, 0x06, 0x6a, 0x20, 0x06, 0xd2, 0x88, 0x41,
0x02, 0x80, 0x20, 0x18, 0x18, 0x73, 0x20, 0xb1, 0xc1, 0x1a, 0x84, 0xc1,
0x34, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x06, 0x1d, 0x4c, 0x6d, 0xc0,
0x06, 0x1a, 0x35, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x1c, 0x68,
0x09, 0x22, 0x04, 0xcb, 0xd2, 0x06, 0x6d, 0x50, 0x2d, 0xa3, 0x09, 0x01,
0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x4d, 0x1d, 0x70, 0x8c, 0x42,
0x0c, 0x4d, 0xf3, 0x06, 0x6f, 0x70, 0x35, 0xa3, 0x09, 0x01, 0x30, 0x9a,
0x20, 0x04, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0x40, 0xd5, 0x01, 0xc6,
0xcc, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20,
0xd8, 0x80, 0xc0, 0xc7, 0x06, 0x03, 0x3e, 0x36, 0x20, 0xf0, 0x19, 0x31,
0x38, 0x00, 0x10, 0x04, 0x03, 0x8a, 0x0f, 0xbe, 0xe9, 0x0e, 0x46, 0x13,
0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01,
0x40, 0x10, 0x0c, 0x1e, 0x51, 0x38, 0x83, 0xc3, 0x28, 0x06, 0x21, 0x18,
0x31, 0x38, 0x00, 0x10, 0x04, 0x03, 0x2a, 0x14, 0xc8, 0x00, 0xcb, 0x83,
0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31,
0x58, 0x00, 0x10, 0x04, 0x83, 0xe7, 0x14, 0xd8, 0x80, 0x59, 0x94, 0x41,
0x08, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x80, 0x32, 0x85, 0x34, 0xe8,
0xd4, 0x60, 0x34, 0x21, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10,
0x46, 0x0c, 0x16, 0x00, 0x04, 0xc1, 0xe0, 0x61, 0x85, 0x38, 0x88, 0xa0,
0x67, 0x10, 0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0x56, 0xc1,
0x0d, 0xc4, 0x00, 0x15, 0x46, 0x13, 0x02, 0x60, 0x38, 0x22, 0x70, 0x03,
0xe7, 0x9b, 0x65, 0x08, 0x94, 0x60, 0x38, 0xc2, 0x51, 0x03, 0xe5, 0x9b,
0x65, 0x18, 0x84, 0xc0, 0x1e, 0x36, 0x90, 0xcf, 0x2c, 0x01, 0x61, 0x90,
0x1b, 0xc0, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x59, 0x68,
0x85, 0xc0, 0x82, 0x38, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18,
0x44, 0xb4, 0xb0, 0x07, 0x81, 0x05, 0x74, 0x20, 0x9f, 0x11, 0x03, 0x03,
0x00, 0x41, 0x30, 0x88, 0x6c, 0xc1, 0x0f, 0x82, 0x59, 0x02, 0x62, 0xa0,
0x62, 0x70, 0x04, 0x61, 0x18, 0x8e, 0x90, 0xe6, 0x40, 0xf9, 0x66, 0x19,
0x8c, 0x22, 0xb0, 0xa9, 0x0e, 0xe4, 0x33, 0x4b, 0x70, 0x18, 0x75, 0x07,
0xf0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x68, 0x17, 0x6c, 0x21,
0xb0, 0x40, 0x0f, 0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x51,
0x2f, 0x90, 0x42, 0x60, 0x41, 0x1f, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40,
0x10, 0x0c, 0xa2, 0x5f, 0x38, 0x85, 0x60, 0x96, 0xe0, 0x18, 0xa8, 0x18,
0x9c, 0x42, 0x30, 0x86, 0x23, 0x2c, 0x3e, 0x50, 0xbe, 0x59, 0x86, 0x04,
0x09, 0xec, 0xf2, 0x03, 0xf9, 0xcc, 0x12, 0x28, 0x86, 0x81, 0x02, 0x7c,
0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x22, 0x87, 0x5f, 0x08, 0x2c,
0x18, 0x05, 0xf9, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0x64, 0x0e,
0xad, 0x10, 0x58, 0x60, 0x0a, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04,
0x83, 0x08, 0x1d, 0x60, 0x21, 0x98, 0x25, 0x50, 0x06, 0x3a, 0x06, 0x32,
0x48, 0xc8, 0x00, 0x81, 0x05, 0x60, 0xa0, 0x63, 0xa0, 0x12, 0x0a, 0x41,
0x05, 0x60, 0xa0, 0x63, 0x30, 0x12, 0x09, 0x01, 0x05, 0xc0, 0x86, 0x50,
0x90, 0x8f, 0x0d, 0xa1, 0x20, 0x1f, 0x1b, 0x42, 0x41, 0x3e, 0x23, 0x06,
0x09, 0x00, 0x82, 0x60, 0x80, 0xc8, 0x03, 0x2d, 0xac, 0xc3, 0x3a, 0x84,
0xc3, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x88, 0x3c, 0xd0, 0xc2,
0x3a, 0xac, 0x43, 0x2e, 0x08, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
0xc8, 0x03, 0x2d, 0xac, 0xc3, 0x3a, 0x80, 0x43, 0x30, 0x62, 0x90, 0x00,
0x20, 0x08, 0x06, 0x88, 0x3c, 0xd0, 0xc2, 0x3a, 0xac, 0xc3, 0x38, 0x84,
0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };

View File

@ -15,7 +15,7 @@
; -------------------- ----- ------ -------- -------- ------- ------ ; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw ; SV_Target 0 xyzw 0 TARGET float xyzw
; ;
; shader hash: 1b1e5b884e6ecd091a288baa1abeb2b8 ; shader hash: b58b213e0d598eac28cdb76f8fd261ee
; ;
; Pipeline Runtime Information: ; Pipeline Runtime Information:
; ;
@ -47,9 +47,9 @@
; { ; {
; ;
; float scRGB_output; ; Offset: 0 ; float scRGB_output; ; Offset: 0
; float SDR_whitelevel; ; Offset: 4 ; float color_scale; ; Offset: 4
; float HDR_whitelevel; ; Offset: 8 ; float unused1; ; Offset: 8
; float maxCLL; ; Offset: 12 ; float unused2; ; Offset: 12
; float4 Yoffset; ; Offset: 16 ; float4 Yoffset; ; Offset: 16
; float4 Rcoeff; ; Offset: 32 ; float4 Rcoeff; ; Offset: 32
; float4 Gcoeff; ; Offset: 48 ; float4 Gcoeff; ; Offset: 48
@ -106,32 +106,18 @@ define void @main() {
%13 = extractvalue %dx.types.ResRet.f32 %10, 2 %13 = extractvalue %dx.types.ResRet.f32 %10, 2
%14 = extractvalue %dx.types.ResRet.f32 %10, 3 %14 = extractvalue %dx.types.ResRet.f32 %10, 3
%15 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %3, i32 0) ; CBufferLoadLegacy(handle,regIndex) %15 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %3, i32 0) ; CBufferLoadLegacy(handle,regIndex)
%16 = extractvalue %dx.types.CBufRet.f32 %15, 0 %16 = extractvalue %dx.types.CBufRet.f32 %15, 1
%17 = fcmp fast une float %16, 0.000000e+00 %17 = fmul fast float %11, %4
br i1 %17, label %18, label %26 %18 = fmul fast float %17, %16
%19 = fmul fast float %12, %5
; <label>:18 ; preds = %0 %20 = fmul fast float %19, %16
%19 = extractvalue %dx.types.CBufRet.f32 %15, 1 %21 = fmul fast float %13, %6
%20 = fmul fast float %11, 0x3F899999A0000000 %22 = fmul fast float %21, %16
%21 = fmul fast float %20, %19 %23 = fmul fast float %14, %7
%22 = fmul fast float %12, 0x3F899999A0000000 call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %18) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
%23 = fmul fast float %22, %19 call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %20) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
%24 = fmul fast float %13, 0x3F899999A0000000 call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %22) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
%25 = fmul fast float %24, %19 call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %23) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
br label %26
; <label>:26 ; preds = %18, %0
%27 = phi float [ %21, %18 ], [ %11, %0 ]
%28 = phi float [ %23, %18 ], [ %12, %0 ]
%29 = phi float [ %25, %18 ], [ %13, %0 ]
%30 = fmul fast float %27, %4
%31 = fmul fast float %28, %5
%32 = fmul fast float %29, %6
%33 = fmul fast float %14, %7
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %30) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %31) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %32) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %33) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void ret void
} }
@ -190,12 +176,12 @@ attributes #2 = { nounwind readonly }
#endif #endif
const unsigned char g_main[] = { const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0x5d, 0x45, 0xc6, 0xe6, 0x85, 0x88, 0x78, 0x6d, 0x44, 0x58, 0x42, 0x43, 0xb7, 0x4d, 0x38, 0xab, 0xd5, 0x9f, 0xa3, 0xeb,
0x06, 0xc7, 0x99, 0x2c, 0x84, 0xd4, 0x74, 0x81, 0x01, 0x00, 0x00, 0x00, 0x40, 0x70, 0xe8, 0xcb, 0xf6, 0x29, 0x85, 0xeb, 0x01, 0x00, 0x00, 0x00,
0xd5, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x41, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
0x31, 0x02, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0xc9, 0x0a, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0x95, 0x0a, 0x00, 0x00,
0xe5, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0xb1, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -249,10 +235,10 @@ const unsigned char g_main[] = {
0xff, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41,
0x54, 0x00, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x54, 0xcc, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xf3, 0x01, 0x00,
0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
0x00, 0xe8, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xb4, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00,
0x00, 0xf7, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00,
0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04,
0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08,
0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b,
@ -309,81 +295,218 @@ const unsigned char g_main[] = {
0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x16, 0x08, 0x00, 0x16, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x00, 0x40, 0x16, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x45, 0x50, 0x12, 0x05, 0x1a, 0x50, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x45, 0x50, 0x12, 0x05, 0x1a, 0x50,
0x06, 0xe5, 0x50, 0x08, 0x05, 0x51, 0x18, 0x05, 0x52, 0x40, 0x05, 0x56, 0x06, 0xe5, 0x50, 0x08, 0x05, 0x51, 0x18, 0x05, 0x52, 0x40, 0x05, 0x56,
0x80, 0x01, 0xe5, 0x51, 0x16, 0xc5, 0x44, 0xa5, 0x24, 0xca, 0xa0, 0x10, 0x80, 0x01, 0xe5, 0x51, 0x38, 0x54, 0x4a, 0xa2, 0x0c, 0x0a, 0x61, 0x04,
0x46, 0x00, 0x8a, 0xa0, 0x40, 0x48, 0xd6, 0x00, 0xe5, 0x19, 0x00, 0xd2, 0xa0, 0x08, 0x0a, 0x84, 0x64, 0x0d, 0x50, 0x9e, 0x01, 0x20, 0x3d, 0x03,
0x33, 0x00, 0xb4, 0x67, 0x00, 0xa8, 0xcf, 0x00, 0x90, 0x1f, 0xcb, 0x61, 0x40, 0x7b, 0x06, 0x80, 0xfa, 0x0c, 0x00, 0xf9, 0xb1, 0x1c, 0x86, 0x00,
0x08, 0x00, 0x00, 0x80, 0xe7, 0x01, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x08, 0x04, 0x02, 0x01, 0x79, 0x18, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
0xd9, 0x10, 0x04, 0x13, 0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7, 0x06, 0x61, 0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04,
0x20, 0x36, 0x08, 0x04, 0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x20, 0x1b, 0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x20, 0x1b, 0x86, 0x03, 0x21, 0x26,
0x86, 0x03, 0x21, 0x26, 0x08, 0xd9, 0x47, 0x85, 0x0e, 0xad, 0x8c, 0xaa, 0x08, 0x99, 0x47, 0x85, 0x0e, 0xad, 0x8c, 0xaa, 0x0c, 0x8f, 0xae, 0x4e,
0x0c, 0x8f, 0xae, 0x4e, 0xae, 0x6c, 0x82, 0x40, 0x24, 0x13, 0x04, 0x42, 0xae, 0x6c, 0x82, 0x40, 0x24, 0x13, 0x04, 0x42, 0xd9, 0x20, 0x10, 0xcd,
0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x10, 0x3c, 0x13,
0xd9, 0x10, 0x3c, 0x13, 0x84, 0x2d, 0x0c, 0x98, 0x0c, 0xbd, 0xb9, 0xcd, 0x84, 0x0d, 0x0c, 0x98, 0x0c, 0xbd, 0xb9, 0xcd, 0xd1, 0x85, 0xb9, 0xd1,
0xd1, 0x85, 0xb9, 0xd1, 0xcd, 0x4d, 0x10, 0x88, 0x65, 0x03, 0x42, 0x44, 0xcd, 0x4d, 0x10, 0x88, 0x65, 0x03, 0x42, 0x44, 0x12, 0x31, 0x0c, 0x13,
0x12, 0x31, 0x0c, 0x13, 0xb0, 0x21, 0xa0, 0x26, 0x08, 0x9d, 0x18, 0x50, 0xb0, 0x21, 0xa0, 0x26, 0x08, 0x5d, 0x18, 0x50, 0xa1, 0x43, 0x2b, 0x9b,
0xa1, 0x43, 0x2b, 0x9b, 0x0a, 0x6b, 0x83, 0x63, 0x2b, 0x93, 0xdb, 0x80, 0x0a, 0x6b, 0x83, 0x63, 0x2b, 0x93, 0xdb, 0x80, 0x10, 0xd6, 0x45, 0x10,
0x10, 0xd6, 0x45, 0x10, 0x03, 0x01, 0x6c, 0x08, 0xb0, 0x0d, 0x04, 0x04, 0x03, 0x01, 0x6c, 0x08, 0xb0, 0x0d, 0x04, 0x04, 0x54, 0xd9, 0x04, 0x41,
0x54, 0xd9, 0x04, 0x41, 0x03, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47, 0x42, 0xfb, 0xc8, 0xcc, 0x8d, 0x49, 0x1d, 0x09, 0x7d, 0xbd, 0xd5, 0xd1, 0xc1,
0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0x82, 0x99, 0x20, 0xd5, 0xd1, 0x4d, 0x10, 0x08, 0x66, 0x82, 0x40, 0x34, 0x1b, 0x0c, 0x84,
0x10, 0xcd, 0x04, 0x41, 0xf2, 0x36, 0x20, 0x08, 0xd7, 0x11, 0x5e, 0xd3, 0xeb, 0x08, 0xaf, 0xe1, 0x32, 0xf6, 0xc6, 0xf6, 0x26, 0xf7, 0x35, 0x37,
0x7c, 0x74, 0xa6, 0x88, 0xa4, 0xbe, 0xee, 0xd0, 0xd2, 0xe8, 0xca, 0xd8, 0x16, 0xc6, 0x56, 0x36, 0x41, 0x20, 0x9c, 0x09, 0x82, 0xd4, 0x6d, 0x40,
0xca, 0xec, 0xca, 0xd8, 0x26, 0x08, 0x84, 0xb3, 0x01, 0x41, 0xc2, 0xa0, 0x10, 0x30, 0xe8, 0xc2, 0xc0, 0x6b, 0x1a, 0x31, 0xe0, 0x51, 0xe7, 0x56,
0x13, 0x03, 0xaf, 0x69, 0x3e, 0x3a, 0x48, 0x44, 0x52, 0x5f, 0x77, 0x68, 0x37, 0x57, 0x46, 0x16, 0x33, 0x41, 0x20, 0x9e, 0x0d, 0x06, 0x42, 0x06,
0x69, 0x74, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x13, 0x04, 0xe2, 0xd9, 0x5d, 0x19, 0x78, 0x0d, 0x8f, 0x3a, 0xb7, 0xba, 0xb9, 0x32, 0x32, 0x99,
0x60, 0x20, 0x64, 0xd0, 0x95, 0x81, 0xd7, 0xd0, 0x68, 0x0b, 0xc3, 0x1b, 0x09, 0x02, 0x01, 0x6d, 0x30, 0x90, 0x33, 0xe8, 0xd0, 0xc0, 0x6b, 0x78,
0x62, 0x62, 0x9a, 0x20, 0x10, 0xd0, 0x06, 0x03, 0x39, 0x83, 0x0e, 0x0d, 0x64, 0xbd, 0x99, 0x99, 0xcd, 0x95, 0xd1, 0x4d, 0x10, 0x88, 0x68, 0x83,
0xbc, 0x86, 0x47, 0xd6, 0x9b, 0x99, 0xd9, 0x5c, 0x19, 0xdd, 0x04, 0x81, 0x81, 0xa8, 0x41, 0xb7, 0x06, 0x5e, 0x43, 0x43, 0x6a, 0xec, 0xad, 0xcc,
0x88, 0x36, 0x18, 0x88, 0x1a, 0x74, 0x6b, 0xe0, 0x35, 0x34, 0xa4, 0xc6, 0xcc, 0x6c, 0x82, 0x40, 0x48, 0x1b, 0x0c, 0xa4, 0x0d, 0x3a, 0x37, 0xf0,
0xde, 0xca, 0xcc, 0xcc, 0x26, 0x08, 0x84, 0xb4, 0xc1, 0x40, 0xda, 0xa0, 0x1a, 0x1a, 0x47, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x13, 0x04, 0x62, 0xda,
0x73, 0x03, 0xaf, 0xa1, 0x71, 0x34, 0xf6, 0x56, 0x66, 0x66, 0x36, 0x41, 0x60, 0x20, 0x70, 0xd0, 0xc5, 0x81, 0xd7, 0xd0, 0x10, 0x1a, 0x7b, 0x2b,
0x20, 0xa6, 0x0d, 0x06, 0x02, 0x07, 0x5d, 0x1c, 0x78, 0x0d, 0x0d, 0xa1, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x03, 0x99, 0x83, 0x8e, 0x0e,
0xb1, 0xb7, 0x32, 0x33, 0xb3, 0x09, 0x02, 0x41, 0x6d, 0x30, 0x90, 0x39, 0xbc, 0x66, 0x43, 0x32, 0x7d, 0x63, 0x60, 0x06, 0x69, 0xc0, 0x06, 0x6f,
0xe8, 0xe8, 0xc0, 0x6b, 0x36, 0x24, 0x13, 0x18, 0x8c, 0x81, 0x19, 0xa4, 0x20, 0x07, 0x75, 0xb0, 0x61, 0x20, 0x36, 0x3b, 0x98, 0x20, 0x08, 0xc0,
0x01, 0x1b, 0xbc, 0x81, 0x1c, 0xd4, 0xc1, 0x86, 0x81, 0xd8, 0xec, 0x60, 0x06, 0x60, 0xc3, 0x40, 0xe4, 0x41, 0x1e, 0x6c, 0x08, 0xf4, 0x60, 0xc3,
0x82, 0x20, 0x00, 0x1b, 0x80, 0x0d, 0x03, 0x91, 0x07, 0x79, 0xb0, 0x21, 0x30, 0xe0, 0xc1, 0x1e, 0x4c, 0x10, 0x3c, 0x31, 0xd8, 0x10, 0xf4, 0x01,
0xd0, 0x83, 0x0d, 0xc3, 0x80, 0x07, 0x7b, 0x30, 0x41, 0xf0, 0xc6, 0x60, 0x89, 0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73,
0x43, 0xd0, 0x07, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0xb8, 0x4c, 0x59, 0x7d, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0xe2, 0x9a, 0x20, 0x14, 0xd8,
0x41, 0xbd, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x4d, 0x10, 0x0a, 0x6c, 0x86, 0x80, 0x98, 0x20, 0x14, 0xd9, 0x04, 0xa1, 0xd0, 0x36, 0x2c, 0x04,
0x82, 0x50, 0x64, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x68, 0x13, 0x84, 0x62, 0x28, 0x84, 0x82, 0x28, 0x8c, 0x02, 0x29, 0x0c, 0xa4, 0x40, 0x94, 0x02,
0xdb, 0xb0, 0x10, 0xa0, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x30, 0x90, 0x40, 0x84, 0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50,
0x02, 0x51, 0x0a, 0x00, 0x11, 0xaa, 0x22, 0xac, 0xa1, 0xa7, 0x27, 0x29, 0x6c, 0x1b, 0x84, 0xae, 0xdb, 0xb0, 0x0c, 0xa7, 0x10, 0x0a, 0xa5, 0x30,
0xa2, 0x09, 0x42, 0xc1, 0x6d, 0x10, 0xba, 0x6e, 0xc3, 0x32, 0x9c, 0x42, 0x0a, 0xa8, 0x30, 0xa0, 0xc2, 0x50, 0x0a, 0xa9, 0xc0, 0x62, 0xe8, 0x89,
0x28, 0x94, 0xc2, 0x28, 0xa0, 0xc2, 0x80, 0x0a, 0x43, 0x29, 0xa4, 0x02, 0xe9, 0x49, 0x6a, 0x82, 0x40, 0x54, 0x1b, 0x84, 0x8e, 0x15, 0x36, 0x2c,
0x8b, 0xa1, 0x27, 0xa6, 0x27, 0xa9, 0x09, 0x02, 0x51, 0x6d, 0x10, 0x3a, 0xcc, 0x2a, 0x84, 0x42, 0x29, 0x8c, 0x02, 0x2a, 0x0c, 0xa4, 0xc0, 0x94,
0x56, 0xd8, 0xb0, 0x30, 0xab, 0x10, 0x0a, 0xa5, 0x30, 0x0a, 0xa8, 0x30, 0x42, 0x2b, 0x6c, 0x18, 0x4c, 0x41, 0x15, 0x5c, 0x81, 0xc9, 0x94, 0xd5,
0x90, 0x02, 0x53, 0x0a, 0xad, 0xb0, 0x61, 0x30, 0x05, 0x55, 0x70, 0x05, 0x17, 0x55, 0x98, 0xdc, 0x59, 0x19, 0xdd, 0x04, 0xa1, 0xe0, 0x36, 0x2c,
0x26, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x13, 0x84, 0x04, 0x2c, 0x84, 0x42, 0x2c, 0x8c, 0x42, 0x29, 0x0c, 0xa4, 0x40, 0x94,
0xa2, 0xdb, 0xb0, 0x10, 0xb0, 0x10, 0x0a, 0xb1, 0x30, 0x0a, 0xa5, 0x30, 0x42, 0x2b, 0x6c, 0x08, 0x64, 0x61, 0xc3, 0xf0, 0x0a, 0xb3, 0x00, 0x6c,
0x90, 0x02, 0x51, 0x0a, 0xad, 0xb0, 0x21, 0x90, 0x85, 0x0d, 0xc3, 0x2b, 0x28, 0xf0, 0xe0, 0x0f, 0x68, 0x41, 0x03, 0x68, 0x98, 0xb1, 0xbd, 0x85,
0xcc, 0x02, 0xb0, 0xa1, 0xc0, 0x83, 0x3f, 0xa0, 0x05, 0x0d, 0x20, 0x22, 0xd1, 0xcd, 0xb1, 0x48, 0x73, 0x9b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x16,
0x26, 0x17, 0xe6, 0x36, 0x86, 0x56, 0x36, 0x47, 0xc3, 0x8c, 0xed, 0x2d, 0x8d, 0xb9, 0xb4, 0xb3, 0x2f, 0x36, 0x32, 0x1a, 0x73, 0x69, 0x67, 0x5f,
0x8c, 0x6e, 0x6e, 0x82, 0x40, 0x58, 0x2c, 0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x73, 0x74, 0x44, 0xe8, 0xca, 0xf0, 0xbe, 0xdc, 0xde, 0xe4, 0xda, 0x36,
0x26, 0x08, 0xc4, 0x45, 0x63, 0x2e, 0xed, 0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x28, 0xb6, 0xe0, 0xdd, 0x02, 0x2e, 0xe4, 0x02, 0xa2, 0x0b, 0x61, 0xb0,
0x5c, 0xda, 0xd9, 0xd7, 0x1c, 0x1d, 0x11, 0xba, 0x32, 0xbc, 0x2f, 0xb7, 0x0b, 0x43, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37,
0x37, 0xb9, 0xb6, 0x0d, 0x8c, 0x2d, 0x0c, 0xb7, 0x80, 0x0b, 0xb9, 0xa0, 0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e,
0x0b, 0xbb, 0x80, 0xf0, 0x82, 0x18, 0xf4, 0xc2, 0x50, 0x85, 0x8d, 0xcd, 0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63,
0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54, 0x21, 0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0,
0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12, 0x10, 0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48,
0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6, 0x04, 0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2,
0x45, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa6, 0xb9, 0x29, 0x41, 0x56, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c,
0x37, 0xb2, 0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45, 0xae, 0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a,
0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0x90, 0x55, 0x22, 0x60, 0x07, 0x7b, 0x50, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e,
0xc3, 0x73, 0xa1, 0xcb, 0x83, 0x2b, 0x0b, 0x72, 0x73, 0x7b, 0xa3, 0x0b, 0x89, 0x6c, 0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0xd0, 0x07, 0x75, 0xc8,
0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0x9b, 0x22, 0xd8, 0xc1, 0x1e, 0xd4, 0x21, 0xf0, 0x5c, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8,
0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0xe6, 0xa6, 0x04, 0xb4, 0xd0, 0x85, 0x0c, 0xcf, 0x65, 0xec, 0xad, 0xce,
0x2b, 0x9b, 0x12, 0xf4, 0x41, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a, 0x8d, 0xae, 0x4c, 0x6e, 0x6e, 0x4a, 0xb0, 0x0b, 0x00, 0x79, 0x18, 0x00,
0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0x01, 0x2d, 0x74, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x9b, 0x9b, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
0x12, 0xf4, 0x02, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d,
0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83,
0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78,
0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70,
0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc,
0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3,
0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c,
0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83,
0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03,
0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68,
0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60,
0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80,
0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98,
0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec,
0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c,
0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d,
0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43,
0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03,
0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03,
0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28,
0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4,
0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1,
0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
0x00, 0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02,
0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11,
0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe,
0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e,
0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11,
0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00,
0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53,
0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x8b, 0x21,
0x3e, 0x0d, 0x59, 0x8e, 0xac, 0x28, 0xcd, 0xb7, 0x6f, 0x8f, 0xd2, 0x61,
0xee, 0x44, 0x58, 0x49, 0x4c, 0x88, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00,
0x00, 0xe2, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0,
0xde, 0x21, 0x0c, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20,
0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23,
0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84,
0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45,
0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18,
0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88,
0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4,
0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46,
0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0,
0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff,
0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff,
0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00,
0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00,
0x00, 0x89, 0x20, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48,
0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22,
0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4,
0x4c, 0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08,
0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18,
0x80, 0x10, 0x52, 0x06, 0xa1, 0x9b, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90,
0xfc, 0x95, 0x90, 0x56, 0x62, 0xf2, 0x8b, 0xdb, 0x46, 0xc5, 0x18, 0x63,
0x10, 0x2a, 0xf7, 0x0c, 0x97, 0x3f, 0x61, 0x0f, 0x21, 0xf9, 0x21, 0xd0,
0x0c, 0x0b, 0x81, 0x82, 0x55, 0x18, 0x45, 0x18, 0x1b, 0x63, 0x0c, 0x42,
0xc8, 0xa0, 0x76, 0xd4, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0xcf, 0x6d,
0x54, 0xb1, 0x12, 0x93, 0x5f, 0xdc, 0x36, 0x22, 0xc6, 0x18, 0xa3, 0x10,
0x8f, 0x30, 0x42, 0x70, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x10, 0x49,
0x73, 0x20, 0x60, 0x18, 0x81, 0x18, 0x66, 0x6a, 0x83, 0x71, 0x60, 0x87,
0x70, 0x98, 0x87, 0x79, 0x70, 0x03, 0x5a, 0x28, 0x07, 0x7c, 0xa0, 0x87,
0x7a, 0x90, 0x87, 0x72, 0x90, 0x03, 0x52, 0xe0, 0x03, 0x7b, 0x28, 0x87,
0x71, 0xa0, 0x87, 0x77, 0x90, 0x07, 0x3e, 0x30, 0x07, 0x76, 0x78, 0x87,
0x70, 0xa0, 0x07, 0x36, 0x00, 0x03, 0x3a, 0xf0, 0x03, 0x30, 0xf0, 0x03,
0x3d, 0xd0, 0x83, 0x76, 0x48, 0x07, 0x78, 0x98, 0x87, 0x5f, 0xa0, 0x87,
0x7c, 0x80, 0x87, 0x72, 0x40, 0x01, 0x99, 0x49, 0x0c, 0xc6, 0x81, 0x1d,
0xc2, 0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e,
0xea, 0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c,
0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d,
0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f,
0x90, 0x60, 0x2f, 0xe1, 0x4b, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24,
0x84, 0x8c, 0x31, 0x86, 0xb5, 0xd6, 0x92, 0xbe, 0x49, 0x9a, 0x22, 0x4a,
0x98, 0x7c, 0x16, 0x60, 0x9e, 0x85, 0x88, 0xd8, 0x09, 0x98, 0x08, 0x14,
0x10, 0xe2, 0xe9, 0x40, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00,
0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x45, 0x50,
0x12, 0x05, 0x1a, 0x50, 0x06, 0xe5, 0x41, 0xa5, 0x24, 0xca, 0xa0, 0x10,
0x46, 0x00, 0x8a, 0xa0, 0x40, 0x28, 0xcf, 0x00, 0xd0, 0x9e, 0x01, 0xa0,
0x3e, 0x03, 0x40, 0x7e, 0x2c, 0x87, 0x21, 0x00, 0x00, 0x00, 0x9e, 0x07,
0x00, 0x02, 0x81, 0x40, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6a, 0x00, 0x00,
0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xc2, 0x98, 0x20,
0x10, 0xc7, 0x06, 0x61, 0x20, 0x26, 0x08, 0x04, 0xb2, 0x41, 0x18, 0x0c,
0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0x19, 0x45, 0x60,
0x82, 0x40, 0x24, 0x13, 0x04, 0x42, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84,
0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x10, 0x3c, 0x13, 0x84, 0xad,
0x9a, 0x20, 0x10, 0xcb, 0x06, 0x84, 0x88, 0x16, 0x62, 0x18, 0x24, 0x60,
0x43, 0x30, 0x4d, 0x10, 0x3a, 0x6b, 0x03, 0x42, 0x54, 0x0b, 0x41, 0x0c,
0x04, 0xb0, 0x21, 0xb0, 0x36, 0x10, 0x10, 0x40, 0x5d, 0x13, 0x04, 0xef,
0xda, 0x10, 0x64, 0x13, 0x04, 0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0xc6,
0x65, 0xca, 0xea, 0x0b, 0xea, 0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x6d,
0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0x02,
0x9a, 0x20, 0x14, 0xd1, 0x86, 0x85, 0xe8, 0xbc, 0x0f, 0x0c, 0xc2, 0x60,
0x08, 0x03, 0x42, 0x0c, 0x00, 0x22, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f,
0x52, 0x44, 0x13, 0x84, 0x42, 0x9a, 0x20, 0x10, 0xcc, 0x06, 0xc1, 0x0c,
0xcc, 0x60, 0xc3, 0x32, 0x90, 0x81, 0x27, 0x06, 0x60, 0x50, 0x06, 0x43,
0x19, 0x0c, 0x62, 0x70, 0x06, 0x2c, 0x86, 0x9e, 0x98, 0x9e, 0xa4, 0x26,
0x08, 0x44, 0xb3, 0x41, 0x30, 0x03, 0x35, 0xd8, 0xb0, 0x30, 0x69, 0xe0,
0x89, 0x01, 0x18, 0x94, 0xc1, 0x10, 0x06, 0x8c, 0x18, 0xac, 0xc1, 0x86,
0x61, 0x0c, 0xd0, 0x80, 0x0d, 0x98, 0x4c, 0x59, 0x7d, 0x51, 0x85, 0xc9,
0x9d, 0x95, 0xd1, 0x4d, 0x10, 0x8a, 0x69, 0xc3, 0x42, 0xb8, 0x81, 0xf7,
0x06, 0x60, 0x20, 0x06, 0x43, 0x18, 0x10, 0x62, 0xb0, 0x06, 0x1b, 0x02,
0x38, 0xd8, 0x30, 0xb4, 0x41, 0x1c, 0x00, 0x1b, 0x8a, 0x8d, 0x93, 0x03,
0x0c, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46,
0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5,
0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c,
0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a,
0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x00, 0x29,
0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x36,
0x37, 0x25, 0xb8, 0xea, 0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25,
0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09, 0xb2, 0x3a, 0x64, 0x78,
0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73,
0x53, 0x02, 0x39, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00,
0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
@ -409,187 +532,38 @@ const unsigned char g_main[] = {
0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00,
0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
0x00, 0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03,
0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5,
0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50,
0x93, 0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43,
0xcc, 0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00, 0xd2, 0x00, 0x00, 0x00,
0xbe, 0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x00, 0x61, 0x20, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41,
0x06, 0x40, 0x30, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x24, 0x47, 0x00,
0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xcc, 0x00, 0x14, 0x42, 0x29, 0x94, 0x5c, 0xe1, 0x95, 0x1d, 0x95,
0x00, 0x1b, 0x1e, 0x5b, 0x88, 0x4e, 0x6e, 0xcd, 0x09, 0x1a, 0x28, 0x8b, 0x12, 0xa0, 0x31, 0x03, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x30,
0xaa, 0x1a, 0xbe, 0xb2, 0xb8, 0x44, 0x58, 0x49, 0x4c, 0xe8, 0x07, 0x00, 0x71, 0x05, 0xa4, 0x69, 0xc9, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x4c,
0x00, 0x60, 0x00, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x9d, 0x31, 0x6d, 0x9b, 0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x93,
0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x77, 0x44, 0x5c, 0xb7, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x31,
0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xf1, 0x01, 0x00, 0x06, 0xca, 0xd6, 0x4d, 0xcb, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18,
0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x64, 0xb0, 0x70, 0x9e, 0xc1, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81,
0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x51, 0x06, 0x4c, 0xf7, 0x51, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x18, 0x66, 0xd0, 0x78, 0x60, 0x80, 0x39, 0x23, 0x06, 0x09, 0x00, 0x82,
0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x60, 0x60, 0x9c, 0x81, 0x23, 0x06, 0x61, 0x70, 0x3d, 0x23, 0x06, 0x09,
0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x00, 0x82, 0x60, 0x60, 0xa0, 0xc1, 0x33, 0x06, 0x62, 0xa0, 0x40, 0x23,
0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0x9c, 0x41, 0x93, 0x20, 0x42, 0xa0,
0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x28, 0x63, 0x30, 0x06, 0x91, 0x32, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42,
0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20,
0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x08, 0x06, 0xd0, 0x1a, 0x44, 0x0c, 0x1a, 0x8c, 0x26, 0x04, 0x81, 0x19,
0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0x8d, 0x7c, 0x2c, 0x10, 0xe4, 0x63, 0x87, 0x23, 0x1f, 0x0b, 0x08, 0xf9,
0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x18, 0xf2, 0xc8, 0xc7, 0x02, 0x43, 0x3e, 0x96, 0x40, 0xf2, 0x19, 0x31,
0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x48, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x0e, 0xba, 0x38, 0x88, 0x83, 0x33,
0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x50, 0x00, 0x00, 0x30, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0xb1, 0x83, 0x2e, 0x0e,
0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0xe2, 0x20, 0x23, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0xb1, 0x83,
0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x2e, 0x0e, 0xe2, 0xc0, 0x0c, 0x84, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30,
0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x80, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x40, 0xec, 0xa0, 0x8b, 0x83, 0x38, 0x48, 0x83, 0x00, 0x01, 0x00, 0x00,
0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0xcd,
0x51, 0xc3, 0xe5, 0x4f, 0xd8, 0x43, 0x48, 0x3e, 0xb7, 0x51, 0xc5, 0x4a,
0x4c, 0x7e, 0x71, 0xdb, 0x88, 0x18, 0x86, 0x61, 0x28, 0xc4, 0x43, 0x30,
0x04, 0x41, 0x73, 0x04, 0x41, 0x31, 0x18, 0xa2, 0x20, 0x08, 0x89, 0xa6,
0x81, 0x80, 0x61, 0x04, 0x62, 0x98, 0xa9, 0x0d, 0xc6, 0x81, 0x1d, 0xc2,
0x61, 0x1e, 0xe6, 0xc1, 0x0d, 0x68, 0xa1, 0x1c, 0xf0, 0x81, 0x1e, 0xea,
0x41, 0x1e, 0xca, 0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, 0xc6,
0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2,
0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, 0xf4,
0x40, 0x0f, 0xda, 0x21, 0x1d, 0xe0, 0x61, 0x1e, 0x7e, 0x81, 0x1e, 0xf2,
0x01, 0x1e, 0xca, 0x01, 0x05, 0xc4, 0x4c, 0x62, 0x30, 0x0e, 0xec, 0x10,
0x0e, 0xf3, 0x30, 0x0f, 0x6e, 0x40, 0x0b, 0xe5, 0x80, 0x0f, 0xf4, 0x50,
0x0f, 0xf2, 0x50, 0x0e, 0x72, 0x40, 0x0a, 0x7c, 0x60, 0x0f, 0xe5, 0x30,
0x0e, 0xf4, 0xf0, 0x0e, 0xf2, 0xc0, 0x07, 0xe6, 0xc0, 0x0e, 0xef, 0x10,
0x0e, 0xf4, 0xc0, 0x06, 0x60, 0x40, 0x07, 0x7e, 0x00, 0x06, 0x7e, 0x80,
0x04, 0xeb, 0x22, 0xec, 0x12, 0xce, 0x69, 0xa4, 0x09, 0x68, 0x26, 0x09,
0x21, 0xc3, 0x30, 0x0c, 0x96, 0x65, 0x59, 0xa4, 0xdd, 0x24, 0x4d, 0x11,
0x25, 0x4c, 0x3e, 0x0b, 0x30, 0xcf, 0x42, 0x44, 0xec, 0x04, 0x4c, 0x04,
0x0a, 0x08, 0xe2, 0xd2, 0x81, 0x98, 0x02, 0x00, 0x00, 0x13, 0x14, 0x72,
0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72,
0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e,
0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07,
0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07,
0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06,
0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e,
0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00,
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01,
0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08,
0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c,
0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04,
0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a,
0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6c, 0x06,
0x80, 0xb6, 0x19, 0x00, 0xea, 0x66, 0x00, 0xc8, 0x1b, 0xcb, 0x61, 0x08,
0x00, 0x00, 0x80, 0xe7, 0x01, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b,
0xd9, 0x10, 0x04, 0x13, 0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7, 0x06, 0x61,
0x20, 0x26, 0x08, 0x04, 0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b,
0x06, 0xc4, 0x20, 0x26, 0x08, 0x19, 0x45, 0x60, 0x82, 0x40, 0x24, 0x13,
0x04, 0x42, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18,
0x18, 0xc2, 0xd9, 0x10, 0x3c, 0x13, 0x84, 0xad, 0x9a, 0x20, 0x10, 0xcb,
0x06, 0x84, 0x88, 0x16, 0x62, 0x18, 0x24, 0x60, 0x43, 0x30, 0x4d, 0x10,
0x3a, 0x6b, 0x03, 0x42, 0x54, 0x0b, 0x41, 0x0c, 0x04, 0xb0, 0x21, 0xb0,
0x36, 0x10, 0x10, 0x40, 0x5d, 0x13, 0x04, 0xef, 0xda, 0x10, 0x64, 0x13,
0x04, 0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0xc6, 0x65, 0xca, 0xea, 0x0b,
0xea, 0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x6d, 0x82, 0x50, 0x38, 0x13,
0x84, 0xe2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x14, 0xd1,
0x86, 0x85, 0xe8, 0xbc, 0x0f, 0x0c, 0xc2, 0x60, 0x08, 0x03, 0x42, 0x0c,
0x00, 0x22, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84,
0x42, 0x9a, 0x20, 0x10, 0xcc, 0x06, 0xc1, 0x0c, 0xcc, 0x60, 0xc3, 0x32,
0x90, 0x81, 0x27, 0x06, 0x60, 0x50, 0x06, 0x43, 0x19, 0x0c, 0x62, 0x70,
0x06, 0x2c, 0x86, 0x9e, 0x98, 0x9e, 0xa4, 0x26, 0x08, 0x44, 0xb3, 0x41,
0x30, 0x03, 0x35, 0xd8, 0xb0, 0x30, 0x69, 0xe0, 0x89, 0x01, 0x18, 0x94,
0xc1, 0x10, 0x06, 0x8c, 0x18, 0xac, 0xc1, 0x86, 0x61, 0x0c, 0xd0, 0x80,
0x0d, 0x98, 0x4c, 0x59, 0x7d, 0x51, 0x85, 0xc9, 0x9d, 0x95, 0xd1, 0x4d,
0x10, 0x8a, 0x69, 0xc3, 0x42, 0xb8, 0x81, 0xf7, 0x06, 0x60, 0x20, 0x06,
0x43, 0x18, 0x10, 0x62, 0xb0, 0x06, 0x1b, 0x02, 0x38, 0xd8, 0x30, 0xb4,
0x41, 0x1c, 0x00, 0x1b, 0x8a, 0x8d, 0x93, 0x03, 0x0c, 0xa8, 0xc2, 0xc6,
0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46, 0x37, 0x25, 0x08, 0xaa,
0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x4d, 0x09,
0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x72, 0x53,
0x02, 0xa3, 0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a, 0x18, 0x59, 0x99, 0x5c,
0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x00, 0x29, 0x43, 0x86, 0xe7, 0x22,
0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x36, 0x37, 0x25, 0xb8, 0xea,
0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25, 0x91, 0x4d, 0xd1, 0x85,
0xd1, 0x95, 0x4d, 0x09, 0xb2, 0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74,
0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x53, 0x02, 0x39, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
0x00, 0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02,
0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11,
0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe,
0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e,
0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11,
0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00,
0xd2, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x55, 0x00, 0x00,
0x00, 0x13, 0x04, 0x43, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
0x00, 0x24, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x44, 0x94, 0xdd, 0x0c, 0x40,
0x21, 0x94, 0x42, 0xc9, 0x15, 0x1e, 0x0d, 0x23, 0x00, 0x63, 0x04, 0xad,
0x39, 0xe7, 0xa4, 0x37, 0x03, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09,
0x00, 0x82, 0x60, 0x30, 0x79, 0x85, 0xc4, 0x71, 0xcb, 0x88, 0x41, 0x02,
0x80, 0x20, 0x18, 0x4c, 0x9f, 0x51, 0x75, 0x1d, 0x33, 0x62, 0x90, 0x00,
0x20, 0x08, 0x06, 0x13, 0x18, 0x1c, 0x93, 0xf7, 0x35, 0x23, 0x06, 0x09,
0x00, 0x82, 0x60, 0x60, 0x94, 0x81, 0xd2, 0x7d, 0xd5, 0x32, 0x62, 0x90,
0x00, 0x20, 0x08, 0x06, 0x86, 0x19, 0x2c, 0x1e, 0x18, 0x38, 0xcc, 0x88,
0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x67, 0xc0, 0x7c, 0x61, 0x60, 0x35,
0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xa0, 0x41, 0x03, 0x06, 0x62,
0xa0, 0x39, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xa4, 0x81, 0x43,
0x06, 0x63, 0x90, 0x3d, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xa8,
0xc1, 0x53, 0x06, 0x64, 0x20, 0x41, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60,
0xd0, 0xa4, 0x41, 0x93, 0x20, 0x42, 0xa0, 0x28, 0x65, 0x50, 0x06, 0x91,
0x32, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3,
0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x50, 0x1b, 0x5c,
0x8c, 0x1a, 0x8c, 0x26, 0x04, 0xc0, 0x70, 0x44, 0x30, 0x39, 0xdf, 0x2c,
0x43, 0x20, 0x04, 0xa3, 0x09, 0x43, 0x60, 0x08, 0x25, 0x1f, 0x0b, 0x04,
0xf9, 0x58, 0x62, 0xc9, 0xc7, 0x02, 0x42, 0x3e, 0xa6, 0x60, 0xf2, 0xb1,
0xc0, 0x90, 0xcf, 0x2c, 0x81, 0x30, 0x50, 0x31, 0x28, 0x01, 0x07, 0x0c,
0x54, 0x0c, 0x48, 0xc0, 0x01, 0x03, 0x15, 0x83, 0x11, 0x70, 0x80, 0x0d,
0x98, 0x7c, 0x6c, 0xc0, 0xe4, 0x63, 0x03, 0x26, 0x1f, 0x8b, 0x30, 0xf9,
0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x02, 0x0a, 0x65, 0xb0, 0x07,
0x7b, 0x10, 0x07, 0xc4, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa0,
0x50, 0x06, 0x7b, 0xb0, 0x07, 0x69, 0x30, 0x8c, 0x18, 0x24, 0x00, 0x08,
0x82, 0x01, 0x02, 0x0a, 0x65, 0xb0, 0x07, 0x7b, 0x00, 0x07, 0xc2, 0x88,
0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xa0, 0x50, 0x06, 0x7b, 0xb0, 0x07,
0x73, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; };

View File

@ -15,7 +15,7 @@
; -------------------- ----- ------ -------- -------- ------- ------ ; -------------------- ----- ------ -------- -------- ------- ------
; SV_Target 0 xyzw 0 TARGET float xyzw ; SV_Target 0 xyzw 0 TARGET float xyzw
; ;
; shader hash: aeabef18573b8fa3aa8e115b1104fd50 ; shader hash: 6db8687cf82d7e20b49d5858e541af33
; ;
; Pipeline Runtime Information: ; Pipeline Runtime Information:
; ;
@ -47,9 +47,9 @@
; { ; {
; ;
; float scRGB_output; ; Offset: 0 ; float scRGB_output; ; Offset: 0
; float SDR_whitelevel; ; Offset: 4 ; float color_scale; ; Offset: 4
; float HDR_whitelevel; ; Offset: 8 ; float unused1; ; Offset: 8
; float maxCLL; ; Offset: 12 ; float unused2; ; Offset: 12
; float4 Yoffset; ; Offset: 16 ; float4 Yoffset; ; Offset: 16
; float4 Rcoeff; ; Offset: 32 ; float4 Rcoeff; ; Offset: 32
; float4 Gcoeff; ; Offset: 48 ; float4 Gcoeff; ; Offset: 48
@ -191,15 +191,19 @@ define void @main() {
br label %78 br label %78
; <label>:78 ; preds = %71, %69, %0 ; <label>:78 ; preds = %71, %69, %0
%79 = phi float [ %55, %71 ], [ %55, %69 ], [ %29, %0 ] %79 = phi float [ %29, %0 ], [ %55, %71 ], [ %55, %69 ]
%80 = phi float [ %67, %71 ], [ %67, %69 ], [ %34, %0 ] %80 = phi float [ %34, %0 ], [ %67, %71 ], [ %67, %69 ]
%81 = phi float [ %77, %71 ], [ %70, %69 ], [ %39, %0 ] %81 = phi float [ %39, %0 ], [ %77, %71 ], [ %70, %69 ]
%82 = fmul fast float %79, %6 %82 = extractvalue %dx.types.CBufRet.f32 %40, 1
%83 = fmul fast float %80, %7 %83 = fmul fast float %79, %6
%84 = fmul fast float %81, %8 %84 = fmul fast float %83, %82
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %82) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %85 = fmul fast float %80, %7
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %83) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %86 = fmul fast float %85, %82
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %84) ; StoreOutput(outputSigId,rowIndex,colIndex,value) %87 = fmul fast float %81, %8
%88 = fmul fast float %87, %82
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %84) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %86) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %88) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %9) ; StoreOutput(outputSigId,rowIndex,colIndex,value) call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %9) ; StoreOutput(outputSigId,rowIndex,colIndex,value)
ret void ret void
} }
@ -267,12 +271,12 @@ attributes #2 = { nounwind readonly }
#endif #endif
const unsigned char g_main[] = { const unsigned char g_main[] = {
0x44, 0x58, 0x42, 0x43, 0xa5, 0xea, 0x92, 0xfe, 0x55, 0x82, 0x62, 0x02, 0x44, 0x58, 0x42, 0x43, 0xb2, 0x27, 0x53, 0x68, 0xbb, 0xc1, 0x48, 0xdf,
0x84, 0xb9, 0x5a, 0x72, 0x12, 0x89, 0x5d, 0x85, 0x01, 0x00, 0x00, 0x00, 0x97, 0xd5, 0xb8, 0xf6, 0xcd, 0x97, 0xb1, 0x37, 0x01, 0x00, 0x00, 0x00,
0x05, 0x16, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0d, 0x16, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
0x61, 0x02, 0x00, 0x00, 0x49, 0x03, 0x00, 0x00, 0xe5, 0x0b, 0x00, 0x00, 0x61, 0x02, 0x00, 0x00, 0x49, 0x03, 0x00, 0x00, 0xdd, 0x0b, 0x00, 0x00,
0x01, 0x0c, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00, 0xf9, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@ -337,10 +341,10 @@ const unsigned char g_main[] = {
0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00,
0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
0xff, 0x53, 0x54, 0x41, 0x54, 0x94, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0xff, 0x53, 0x54, 0x41, 0x54, 0x8c, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00,
0x00, 0x25, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x23, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x7c, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x74, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0,
0xde, 0x21, 0x0c, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20,
0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23,
0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84,
0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45,
@ -406,11 +410,11 @@ const unsigned char g_main[] = {
0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04,
0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0xa1, 0x10, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0xa1, 0x10,
0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac, 0x00, 0x03, 0xca, 0xa3, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac, 0x00, 0x03, 0xca, 0xa3,
0x88, 0x4a, 0x36, 0x80, 0x8a, 0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28, 0x94, 0x4a, 0x37, 0x80, 0x8a, 0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28,
0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01, 0x20, 0x6f, 0x06, 0x80, 0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01, 0x20, 0x6f, 0x06, 0x80,
0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00,
0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x79, 0x18, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x79, 0x18, 0x00,
0x00, 0xd7, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
@ -431,208 +435,57 @@ const unsigned char g_main[] = {
0x86, 0x80, 0xdb, 0x40, 0x50, 0x40, 0xd6, 0x4d, 0x10, 0x3c, 0x31, 0x20, 0x86, 0x80, 0xdb, 0x40, 0x50, 0x40, 0xd6, 0x4d, 0x10, 0x3c, 0x31, 0x20,
0x33, 0x37, 0x26, 0x75, 0x24, 0xf4, 0xf5, 0x56, 0x47, 0x07, 0x57, 0x47, 0x33, 0x37, 0x26, 0x75, 0x24, 0xf4, 0xf5, 0x56, 0x47, 0x07, 0x57, 0x47,
0x37, 0x41, 0x20, 0x9c, 0x09, 0x02, 0xf1, 0x4c, 0x10, 0x2c, 0x30, 0xd8, 0x37, 0x41, 0x20, 0x9c, 0x09, 0x02, 0xf1, 0x4c, 0x10, 0x2c, 0x30, 0xd8,
0x80, 0x20, 0x60, 0x10, 0x06, 0x84, 0x18, 0x34, 0xcd, 0x18, 0xd0, 0x99, 0x80, 0x20, 0x60, 0x10, 0x06, 0x84, 0x18, 0x34, 0xcd, 0x18, 0x70, 0x19,
0x22, 0x92, 0xfa, 0xba, 0x43, 0x4b, 0xa3, 0x2b, 0x63, 0x2b, 0xb3, 0x2b, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a, 0x1b, 0x0b, 0x63, 0x2b, 0x9b, 0x20,
0x63, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x03, 0x29, 0x83, 0x30, 0x30, 0x03, 0x10, 0xd0, 0x06, 0x04, 0x29, 0x83, 0x30, 0x30, 0x03, 0x31, 0x68, 0x9a,
0x31, 0x68, 0xe8, 0x20, 0x11, 0x49, 0x7d, 0xdd, 0xa1, 0xa5, 0xd1, 0x95, 0x31, 0xe0, 0x51, 0xe7, 0x56, 0x37, 0x57, 0x46, 0x16, 0x33, 0x41, 0x20,
0xb1, 0x95, 0xd9, 0x95, 0xb1, 0x4d, 0x10, 0x88, 0x68, 0x83, 0x81, 0xa0, 0xa2, 0x0d, 0x06, 0x82, 0x06, 0x61, 0x90, 0x06, 0x62, 0xd0, 0xf0, 0xa8,
0x41, 0x18, 0xa4, 0x81, 0x18, 0x34, 0x34, 0xda, 0xc2, 0xf0, 0x86, 0x98, 0x73, 0xab, 0x9b, 0x2b, 0x23, 0x93, 0x99, 0x20, 0x10, 0xd2, 0x06, 0x03,
0x98, 0x26, 0x08, 0x84, 0xb4, 0xc1, 0x40, 0xd6, 0x20, 0x0c, 0xd8, 0x40, 0x59, 0x83, 0x30, 0x60, 0x03, 0x31, 0x68, 0x78, 0x64, 0xbd, 0x99, 0x99,
0x0c, 0x1a, 0x1e, 0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13, 0x04, 0xcd, 0x95, 0xd1, 0x4d, 0x10, 0x88, 0x69, 0x03, 0x82, 0xb8, 0x41, 0x18,
0x62, 0xda, 0x80, 0x20, 0x6e, 0x10, 0x06, 0x6f, 0x20, 0x06, 0x4d, 0x33, 0xbc, 0x81, 0x18, 0x34, 0xcd, 0x18, 0xd0, 0x90, 0x1a, 0x7b, 0x2b, 0x33,
0x06, 0x34, 0xa4, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x08, 0x04, 0xb5, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x04, 0x89, 0x83, 0x30, 0x90, 0x03,
0x01, 0x41, 0xe2, 0x20, 0x0c, 0xe4, 0x40, 0x0c, 0x9a, 0x66, 0x0c, 0x68, 0x31, 0x68, 0x9a, 0x31, 0xa0, 0x71, 0x34, 0xf6, 0x56, 0x66, 0x66, 0x36,
0x1c, 0x8d, 0xbd, 0x95, 0x99, 0x99, 0x4d, 0x10, 0x88, 0x6a, 0x03, 0x82, 0x41, 0x20, 0xaa, 0x0d, 0x08, 0x42, 0x07, 0x61, 0x50, 0x07, 0x62, 0xd0,
0xd0, 0x41, 0x18, 0xd4, 0x81, 0x18, 0x34, 0xcd, 0x18, 0xd0, 0x10, 0x1a, 0x34, 0x63, 0x40, 0x43, 0x68, 0xec, 0xad, 0xcc, 0xcc, 0x6c, 0x82, 0x40,
0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd6, 0x06, 0x04, 0xb9, 0x83, 0x58, 0x1b, 0x10, 0xe4, 0x0e, 0xc2, 0x00, 0x0f, 0xc4, 0xa0, 0x69, 0xc6,
0x30, 0xc0, 0x03, 0x31, 0x68, 0x9a, 0x31, 0xd8, 0x90, 0x5c, 0x64, 0x70, 0x60, 0x43, 0x72, 0x91, 0xc1, 0x19, 0xa8, 0x41, 0x1b, 0xc0, 0xc1, 0x1c,
0x06, 0x6a, 0xd0, 0x06, 0x70, 0x30, 0x07, 0x76, 0x90, 0x07, 0x1b, 0x06, 0xd8, 0x41, 0x1e, 0x6c, 0x18, 0x88, 0x4f, 0x0f, 0x26, 0x08, 0x02, 0xb0,
0xe2, 0xd3, 0x83, 0x09, 0x82, 0x00, 0x6c, 0x00, 0x36, 0x0c, 0x44, 0x1f, 0x01, 0xd8, 0x30, 0x10, 0x7d, 0xd0, 0x07, 0x1b, 0x02, 0x3f, 0xd8, 0x30,
0xf4, 0xc1, 0x86, 0xc0, 0x0f, 0x36, 0x0c, 0x03, 0x1f, 0xfc, 0xc1, 0x04, 0x0c, 0x7c, 0xf0, 0x07, 0x13, 0x04, 0x31, 0x28, 0x83, 0x0d, 0x41, 0x28,
0x41, 0x0c, 0xca, 0x60, 0x43, 0x10, 0x0a, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0x90, 0x68, 0x0b, 0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36,
0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd, 0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x97, 0x46, 0x97, 0xf6, 0xe6, 0x36, 0x41, 0x28, 0xb4, 0x09, 0x42, 0xb1,
0x4d, 0x10, 0x0a, 0x6d, 0x82, 0x50, 0x6c, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x6d, 0x08, 0x88, 0x09, 0x42, 0xc1, 0x4d, 0x10, 0x8a, 0x6e, 0xc3, 0x42,
0x70, 0x13, 0x84, 0xa2, 0xdb, 0xb0, 0x10, 0xa4, 0x50, 0x0a, 0xa6, 0x70, 0x90, 0x42, 0x29, 0x98, 0xc2, 0x29, 0xa0, 0xc2, 0x80, 0x0a, 0x44, 0x2a,
0x0a, 0xa8, 0x30, 0xa0, 0x02, 0x91, 0x0a, 0x00, 0x11, 0xaa, 0x22, 0xac, 0x00, 0x44, 0xa8, 0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26, 0x08,
0xa1, 0xa7, 0x27, 0x29, 0xa2, 0x09, 0x42, 0xe1, 0x6d, 0x10, 0xc2, 0x20, 0x85, 0xb7, 0x41, 0x08, 0x83, 0x30, 0xd8, 0xb0, 0x0c, 0xab, 0x50, 0x0a,
0x0c, 0x36, 0x2c, 0xc3, 0x2a, 0x94, 0x42, 0x2a, 0x9c, 0x02, 0x2b, 0x0c, 0xa9, 0x70, 0x0a, 0xac, 0x30, 0xb0, 0xc2, 0x90, 0x0a, 0xad, 0xc0, 0x62,
0xac, 0x30, 0xa4, 0x42, 0x2b, 0xb0, 0x18, 0x7a, 0x62, 0x7a, 0x92, 0x9a, 0xe8, 0x89, 0xe9, 0x49, 0x6a, 0x82, 0x40, 0x5c, 0x1b, 0x84, 0x30, 0x80,
0x20, 0x10, 0xd7, 0x06, 0x21, 0x0c, 0x60, 0x61, 0xc3, 0xc2, 0xbc, 0x42, 0x85, 0x0d, 0x0b, 0xf3, 0x0a, 0xa5, 0x90, 0x0a, 0xa7, 0xc0, 0x0a, 0x03,
0x29, 0xa4, 0xc2, 0x29, 0xb0, 0xc2, 0x80, 0x0a, 0x4c, 0x2a, 0xc4, 0xc2, 0x2a, 0x30, 0xa9, 0x10, 0x0b, 0x1b, 0x06, 0x55, 0x70, 0x05, 0x59, 0x60,
0x86, 0x41, 0x15, 0x5c, 0x41, 0x16, 0x98, 0x4c, 0x59, 0x7d, 0x51, 0x85, 0x32, 0x65, 0xf5, 0x45, 0x15, 0x26, 0x77, 0x56, 0x46, 0x37, 0x41, 0x28,
0xc9, 0x9d, 0x95, 0xd1, 0x4d, 0x10, 0x8a, 0x6f, 0xc3, 0x42, 0xd0, 0x42, 0xbe, 0x0d, 0x0b, 0x41, 0x0b, 0xa5, 0x50, 0x0b, 0xa7, 0x90, 0x0a, 0x03,
0x29, 0xd4, 0xc2, 0x29, 0xa4, 0xc2, 0x80, 0x0a, 0x44, 0x2a, 0xc4, 0xc2, 0x2a, 0x10, 0xa9, 0x10, 0x0b, 0x1b, 0x02, 0x5b, 0xd8, 0x30, 0xcc, 0xc2,
0x86, 0xc0, 0x16, 0x36, 0x0c, 0xb3, 0x70, 0x0b, 0xc0, 0x86, 0x82, 0x0f, 0x2d, 0x00, 0x1b, 0x0a, 0x3e, 0x18, 0x05, 0x5c, 0xf0, 0x00, 0x22, 0x62,
0x46, 0x01, 0x17, 0x3c, 0x80, 0x88, 0x98, 0x5c, 0x98, 0xdb, 0x18, 0x5a, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x34, 0xcc, 0xd8, 0xde, 0xc2,
0xd9, 0x1c, 0x0d, 0x33, 0xb6, 0xb7, 0x30, 0xba, 0xb9, 0x09, 0x02, 0x81, 0xe8, 0xe6, 0x26, 0x08, 0x04, 0xc6, 0x22, 0xcd, 0x6d, 0x8e, 0x6e, 0x6e,
0xb1, 0x48, 0x73, 0x9b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x19, 0x8d, 0xb9, 0x82, 0x40, 0x64, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xd8, 0xc8, 0x68, 0xcc,
0xb4, 0xb3, 0x2f, 0x36, 0x32, 0x1a, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x74, 0xa5, 0x9d, 0x7d, 0xcd, 0xd1, 0x11, 0xa1, 0x2b, 0xc3, 0xfb, 0x72, 0x7b,
0x44, 0xe8, 0xca, 0xf0, 0xbe, 0xdc, 0xde, 0xe4, 0xda, 0x36, 0x30, 0xba, 0x93, 0x6b, 0xdb, 0xc0, 0xe8, 0x82, 0x19, 0xec, 0x02, 0x2f, 0xf4, 0x82,
0x60, 0x06, 0xbb, 0xc0, 0x0b, 0xbd, 0xe0, 0x0b, 0xbf, 0x80, 0x80, 0x83, 0x2f, 0xfc, 0x02, 0x02, 0x0e, 0x66, 0x10, 0x0e, 0x61, 0x50, 0x85, 0x8d,
0x19, 0x84, 0x43, 0x18, 0x54, 0x61, 0x63, 0xb3, 0x6b, 0x73, 0x49, 0x23, 0xcd, 0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54,
0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0, 0x5c, 0xec, 0xca, 0x21, 0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12,
0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13, 0x32, 0x3c, 0x17, 0x10, 0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6,
0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51, 0x87, 0x0c, 0xcf, 0x04, 0x45, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9,
0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d, 0xac, 0x8c, 0x6d, 0xa6, 0x37, 0xb2, 0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45,
0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b, 0x7b, 0xab, 0x93, 0xae, 0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0xd0, 0x55,
0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x74, 0x95, 0xc8, 0xf0, 0x5c, 0xe8, 0xf2, 0x22, 0xc3, 0x73, 0xa1, 0xcb, 0x83, 0x2b, 0x0b, 0x72, 0x73, 0x7b, 0xa3,
0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8, 0xd2, 0xde, 0xdc, 0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0x9b, 0x22, 0xe8, 0xc1, 0x1f, 0xd4,
0xe6, 0xa6, 0x08, 0x7a, 0xf0, 0x07, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0x21, 0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b,
0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0xa1, 0xa3, 0x2b, 0x9b, 0x12, 0x84, 0x42, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37,
0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0x3a, 0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0x01, 0x2e,
0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x80, 0x0b, 0x5d, 0xc8, 0xf0, 0x5c, 0xc6, 0x74, 0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x9b,
0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04, 0xe1, 0x00, 0x00, 0x9b, 0x12, 0x84, 0x03, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00,
0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02,
0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11,
0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18, 0x81, 0x33, 0x5c, 0xbe,
0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb, 0x16, 0x30, 0x0d, 0x97,
0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c, 0xd4, 0xe4, 0x17, 0xb7,
0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b, 0x00, 0xf3, 0x2c, 0x84,
0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e,
0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3,
0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00,
0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53,
0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xab, 0xef,
0x18, 0x57, 0x3b, 0x8f, 0xa3, 0xaa, 0x8e, 0x11, 0x5b, 0x11, 0x04, 0xfd,
0x50, 0x44, 0x58, 0x49, 0x4c, 0xfc, 0x09, 0x00, 0x00, 0x60, 0x00, 0x00,
0x00, 0x7f, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0xe4, 0x09, 0x00, 0x00, 0x42, 0x43, 0xc0,
0xde, 0x21, 0x0c, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20,
0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23,
0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84,
0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45,
0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18,
0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88,
0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4,
0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46,
0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0,
0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff,
0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff,
0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00,
0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00,
0x00, 0x89, 0x20, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88,
0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23,
0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4,
0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a, 0x66, 0x00, 0xe6,
0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40, 0x10, 0x44, 0x41, 0x90,
0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4, 0xa6, 0xe1, 0xf2, 0x27,
0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x51,
0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70, 0xf9, 0x13, 0xf6, 0x10,
0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58, 0x0a, 0xa3, 0x10, 0x0c,
0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d, 0x41, 0x06, 0x62, 0x18,
0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c, 0x14, 0x1d, 0x35, 0x5c,
0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55, 0xac, 0xc4, 0xe4, 0x17,
0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c, 0x04, 0x43, 0x10, 0x35,
0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0, 0xe8, 0x1a, 0x08, 0x18,
0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8, 0x21, 0x1c, 0xe6, 0x61,
0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8, 0xa1, 0x1e, 0xe4, 0xa1,
0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1,
0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x81,
0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc, 0x40, 0x0f, 0xf4, 0xa0,
0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8, 0x21, 0x1f, 0xe0, 0xa1,
0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0, 0x0e, 0xe1, 0x30, 0x0f,
0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40, 0x0f, 0xf5, 0x20, 0x0f,
0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50, 0x0e, 0xe3, 0x40, 0x0f,
0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0, 0x0e, 0xe1, 0x40, 0x0f,
0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0, 0x07, 0x48, 0xd0, 0x36,
0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0x0c,
0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4,
0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x20,
0x30, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72,
0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72,
0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e,
0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07,
0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07,
0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07,
0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06,
0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e,
0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01,
0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x87,
0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21,
0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x59, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0,
0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28, 0x82,
0x02, 0xa1, 0x6e, 0x06, 0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48,
0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20,
0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x70, 0x00, 0x00,
0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0x02, 0x99, 0x20,
0x10, 0xc9, 0x06, 0x61, 0x20, 0x26, 0x08, 0x84, 0xb2, 0x41, 0x18, 0x0c,
0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0x9d, 0x45, 0x60,
0x82, 0x40, 0x2c, 0x13, 0x04, 0x82, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84,
0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x90, 0x0c, 0xca, 0x42, 0x0c,
0x03, 0x43, 0x38, 0x1b, 0x12, 0x46, 0x59, 0x08, 0x66, 0x60, 0x08, 0x67,
0xc3, 0xf0, 0x40, 0xd1, 0x04, 0xe1, 0xbb, 0x26, 0x08, 0x44, 0xb3, 0x01,
0x21, 0xa6, 0x85, 0x18, 0x06, 0x0a, 0xd8, 0x10, 0x54, 0x13, 0x84, 0x30,
0xc0, 0x36, 0x20, 0xc4, 0xb5, 0x10, 0xc4, 0x40, 0x00, 0x1b, 0x02, 0x6c,
0x03, 0x21, 0x01, 0x56, 0x36, 0x41, 0x10, 0x83, 0x6c, 0x43, 0xb0, 0x4d,
0x10, 0x04, 0x80, 0x44, 0x5b, 0x58, 0x9a, 0x1b, 0x97, 0x29, 0xab, 0x2f,
0xa8, 0xb7, 0xb9, 0x34, 0xba, 0xb4, 0x37, 0xb7, 0x09, 0x42, 0x01, 0x4d,
0x10, 0x8a, 0x68, 0x43, 0x40, 0x4c, 0x10, 0x0a, 0x69, 0x82, 0x50, 0x4c,
0x1b, 0x16, 0xe2, 0x03, 0x83, 0x30, 0x10, 0x83, 0x31, 0x18, 0xc6, 0x80,
0x20, 0x03, 0x80, 0x08, 0x55, 0x11, 0xd6, 0xd0, 0xd3, 0x93, 0x14, 0xd1,
0x04, 0xa1, 0xa0, 0x26, 0x08, 0x84, 0xb3, 0x41, 0x40, 0x03, 0x34, 0xd8,
0xb0, 0x0c, 0x66, 0x00, 0x06, 0x64, 0x20, 0x06, 0x67, 0x30, 0x9c, 0xc1,
0x40, 0x06, 0x69, 0xc0, 0x62, 0xe8, 0x89, 0xe9, 0x49, 0x6a, 0x82, 0x40,
0x3c, 0x1b, 0x04, 0x34, 0x60, 0x83, 0x0d, 0x0b, 0xb3, 0x06, 0x60, 0x40,
0x06, 0x62, 0x70, 0x06, 0xc3, 0x18, 0x30, 0x64, 0xd0, 0x06, 0x1b, 0x86,
0x32, 0x50, 0x03, 0x37, 0x60, 0x32, 0x65, 0xf5, 0x45, 0x15, 0x26, 0x77,
0x56, 0x46, 0x37, 0x41, 0x28, 0xaa, 0x0d, 0x0b, 0x01, 0x07, 0x60, 0x10,
0x07, 0x62, 0x40, 0x06, 0xc3, 0x18, 0x10, 0x64, 0xd0, 0x06, 0x1b, 0x02,
0x39, 0xd8, 0x30, 0xbc, 0xc1, 0x1c, 0x00, 0x1b, 0x8a, 0xce, 0xa3, 0x03,
0x0d, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46,
0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5,
0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c,
0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a,
0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x00, 0x29,
0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x36,
0x37, 0x25, 0xc8, 0xea, 0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25,
0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09, 0xb6, 0x3a, 0x64, 0x78,
0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73,
0x53, 0x02, 0x3a, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00,
0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
@ -670,71 +523,223 @@ const unsigned char g_main[] = {
0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9,
0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x61, 0x20, 0x00, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc3, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4b, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x8d, 0x00, 0x50, 0x51, 0x02, 0x44, 0x00, 0x6d, 0xb8, 0x68, 0x7c, 0xf8, 0x2d, 0x7e, 0x20, 0xb4, 0x9d, 0x58,
0x94, 0x4a, 0xb9, 0x94, 0x5b, 0xe1, 0x95, 0xc2, 0x0c, 0x40, 0x21, 0x94, 0x58, 0xe5, 0x41, 0xaf, 0x33, 0x44, 0x58, 0x49, 0x4c, 0x0c, 0x0a, 0x00,
0x5c, 0xd9, 0xd1, 0x30, 0x02, 0x30, 0x46, 0xa0, 0xb3, 0xe6, 0x1c, 0x82, 0x00, 0x60, 0x00, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
0xc1, 0x18, 0xc1, 0xbb, 0xa7, 0xe5, 0xfd, 0x8d, 0x11, 0xb8, 0x7d, 0x2c, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf4, 0x09, 0x00,
0xda, 0xde, 0x18, 0x41, 0xcc, 0x83, 0x7d, 0xee, 0x8d, 0x11, 0x98, 0xf7, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x7a, 0x02, 0x00,
0xba, 0xca, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
0x00, 0x82, 0x60, 0x70, 0x95, 0x41, 0x92, 0x85, 0x41, 0x18, 0x48, 0x23, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x99, 0x81, 0xa2, 0x95, 0x41, 0x19, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
0x4c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x9d, 0xc1, 0xb2, 0x95, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
0x41, 0x19, 0x50, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0xa1, 0x01, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
0xe3, 0x99, 0x81, 0x19, 0x54, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
0xa5, 0x41, 0xc3, 0x9d, 0x01, 0x1a, 0x58, 0x23, 0x06, 0x09, 0x00, 0x82, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
0x60, 0x60, 0xc0, 0xc1, 0x63, 0x06, 0x68, 0xe0, 0x41, 0x23, 0x06, 0x09, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
0x00, 0x82, 0x60, 0x60, 0xc4, 0x01, 0x74, 0x06, 0x69, 0x70, 0x45, 0x23, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc8, 0x41, 0x84, 0x06, 0x6a, 0xf0, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
0x49, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xcc, 0x81, 0x94, 0x06, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
0x6b, 0x30, 0x06, 0xd3, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x74, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
0x30, 0xb5, 0x01, 0x1b, 0x88, 0x01, 0x35, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x54, 0x00, 0x00,
0x06, 0x46, 0x1d, 0x50, 0x6e, 0xd0, 0x06, 0x5b, 0x35, 0x62, 0xf0, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
0x20, 0x08, 0x06, 0x0d, 0x1d, 0x60, 0x09, 0x22, 0x04, 0x0c, 0xe3, 0x06, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
0x6e, 0x60, 0x31, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00,
0x06, 0x8d, 0x1d, 0x68, 0x8c, 0x42, 0x0c, 0x8e, 0x03, 0x07, 0x70, 0x80, 0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
0x39, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
0x1e, 0x70, 0x0f, 0x63, 0x14, 0x10, 0x24, 0x07, 0x72, 0xa0, 0x41, 0xa3, 0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
0x09, 0x01, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0xd4, 0x1d, 0x64, 0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
0x4d, 0x1d, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
0x82, 0x0d, 0x09, 0x7c, 0x6c, 0x40, 0xe0, 0x63, 0xc3, 0x01, 0x9f, 0x11, 0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0xfc, 0x00, 0x0c, 0xa8, 0x3c, 0x18, 0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
0x4d, 0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d, 0x18, 0x84, 0x11, 0x83, 0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
0x05, 0x00, 0x41, 0x30, 0x78, 0x48, 0x41, 0x0d, 0x0e, 0xa3, 0x18, 0x84, 0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
0x60, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0xa8, 0x51, 0x28, 0x83, 0x6c, 0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
0x0f, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08, 0x46, 0x13, 0x06, 0x61, 0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x54, 0x78, 0x03, 0x66, 0x51, 0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04, 0x03, 0x0a, 0x15, 0xd4, 0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
0xc0, 0x63, 0x83, 0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04, 0x83, 0xc7, 0x15, 0xe8, 0x20, 0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
0x82, 0x9e, 0x41, 0x08, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0x80, 0x6a, 0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
0x85, 0x37, 0x18, 0x03, 0x55, 0x18, 0x4d, 0x08, 0x80, 0xe1, 0x88, 0x00, 0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
0x0e, 0x9c, 0x6f, 0x96, 0x21, 0x50, 0x82, 0xe1, 0x08, 0x87, 0x0d, 0x94, 0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
0x6f, 0x96, 0x61, 0x10, 0x02, 0x7b, 0xdc, 0x40, 0x3e, 0xb3, 0x04, 0x84, 0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
0x41, 0x70, 0x00, 0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88, 0x68, 0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
0xe1, 0x15, 0x02, 0x0b, 0xe6, 0x40, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
0x60, 0x10, 0xd9, 0x82, 0x1f, 0x04, 0x16, 0xd8, 0x81, 0x7c, 0x46, 0x0c, 0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
0x0c, 0x00, 0x04, 0xc1, 0x20, 0xc2, 0x85, 0x50, 0x08, 0x66, 0x09, 0x88, 0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
0x81, 0x8a, 0xc1, 0x11, 0x84, 0x61, 0x38, 0x42, 0xaa, 0x03, 0xe5, 0x9b, 0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
0x65, 0x30, 0x8a, 0xc0, 0xa6, 0x3b, 0x90, 0xcf, 0x2c, 0xc1, 0x61, 0x54, 0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00,
0x1e, 0xc0, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x5e, 0xc0, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
0x85, 0xc0, 0x02, 0x3e, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
0x44, 0xbf, 0x70, 0x0a, 0x81, 0x05, 0x7f, 0x20, 0x9f, 0x11, 0x03, 0x03, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
0x00, 0x41, 0x30, 0x88, 0xc2, 0x41, 0x15, 0x82, 0x59, 0x82, 0x63, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
0x62, 0x70, 0x0a, 0xc1, 0x18, 0x8e, 0xb0, 0xfc, 0x40, 0xf9, 0x66, 0x19, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
0x12, 0x24, 0xb0, 0x0b, 0x14, 0xe4, 0x33, 0x4b, 0xa0, 0x18, 0x26, 0x0a, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
0xf0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0xc8, 0x1c, 0xc2, 0x21, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
0xb0, 0xa0, 0x14, 0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x11, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
0x3a, 0xc0, 0x42, 0x60, 0x01, 0x2a, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
0x10, 0x0c, 0x22, 0x75, 0x98, 0x85, 0x60, 0x96, 0x40, 0x19, 0xe8, 0x18, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
0xc8, 0x20, 0x21, 0x03, 0x04, 0x16, 0x80, 0x81, 0x8e, 0x81, 0x4a, 0x28, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
0x04, 0x15, 0x80, 0x81, 0x8e, 0xc1, 0x48, 0x24, 0x04, 0x14, 0x00, 0x1b, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
0x44, 0x41, 0x3e, 0x36, 0x88, 0x82, 0x7c, 0x6c, 0x10, 0x05, 0xf9, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0x42, 0x0f, 0xb6, 0xd0, 0x0e, 0xed, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
0x30, 0x0e, 0xc3, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xf4, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
0x0b, 0xed, 0xd0, 0x0e, 0xbb, 0x20, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
0x01, 0x42, 0x0f, 0xb6, 0xd0, 0x0e, 0xed, 0x20, 0x0e, 0xc1, 0x88, 0x41, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x80, 0x20, 0x18, 0x20, 0xf4, 0x60, 0x0b, 0xed, 0xd0, 0x0e, 0xe5, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x0a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00,
0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0,
0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42,
0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06, 0x80, 0xbe, 0x19, 0x00,
0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3,
0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
0x00, 0x70, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61, 0x20, 0x26, 0x08, 0x84,
0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13, 0x04, 0x82, 0xd9, 0x20,
0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x90,
0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b, 0x12, 0x46, 0x59, 0x08,
0x66, 0x60, 0x08, 0x67, 0xc3, 0xf0, 0x40, 0xd1, 0x04, 0xe1, 0xbb, 0x26,
0x08, 0x44, 0xb3, 0x01, 0x21, 0xa6, 0x85, 0x18, 0x06, 0x0a, 0xd8, 0x10,
0x54, 0x13, 0x84, 0x30, 0xc0, 0x36, 0x20, 0xc4, 0xb5, 0x10, 0xc4, 0x40,
0x00, 0x1b, 0x02, 0x6c, 0x03, 0x21, 0x01, 0x56, 0x36, 0x41, 0x10, 0x83,
0x6c, 0x43, 0xb0, 0x4d, 0x10, 0x04, 0x80, 0x44, 0x5b, 0x58, 0x9a, 0x1b,
0x97, 0x29, 0xab, 0x2f, 0xa8, 0xb7, 0xb9, 0x34, 0xba, 0xb4, 0x37, 0xb7,
0x09, 0x42, 0x01, 0x4d, 0x10, 0x8a, 0x68, 0x43, 0x40, 0x4c, 0x10, 0x0a,
0x69, 0x82, 0x50, 0x4c, 0x1b, 0x16, 0xe2, 0x03, 0x83, 0x30, 0x10, 0x83,
0x31, 0x18, 0xc6, 0x80, 0x20, 0x03, 0x80, 0x08, 0x55, 0x11, 0xd6, 0xd0,
0xd3, 0x93, 0x14, 0xd1, 0x04, 0xa1, 0xa0, 0x26, 0x08, 0x84, 0xb3, 0x41,
0x40, 0x03, 0x34, 0xd8, 0xb0, 0x0c, 0x66, 0x00, 0x06, 0x64, 0x20, 0x06,
0x67, 0x30, 0x9c, 0xc1, 0x40, 0x06, 0x69, 0xc0, 0x62, 0xe8, 0x89, 0xe9,
0x49, 0x6a, 0x82, 0x40, 0x3c, 0x1b, 0x04, 0x34, 0x60, 0x83, 0x0d, 0x0b,
0xb3, 0x06, 0x60, 0x40, 0x06, 0x62, 0x70, 0x06, 0xc3, 0x18, 0x30, 0x64,
0xd0, 0x06, 0x1b, 0x86, 0x32, 0x50, 0x03, 0x37, 0x60, 0x32, 0x65, 0xf5,
0x45, 0x15, 0x26, 0x77, 0x56, 0x46, 0x37, 0x41, 0x28, 0xaa, 0x0d, 0x0b,
0x01, 0x07, 0x60, 0x10, 0x07, 0x62, 0x40, 0x06, 0xc3, 0x18, 0x10, 0x64,
0xd0, 0x06, 0x1b, 0x02, 0x39, 0xd8, 0x30, 0xbc, 0xc1, 0x1c, 0x00, 0x1b,
0x8a, 0xce, 0xa3, 0x03, 0x0d, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92,
0x46, 0x56, 0xe6, 0x46, 0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8,
0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78,
0x2e, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e, 0x19,
0x9e, 0xcb, 0x1c, 0x5a, 0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19,
0xdb, 0x94, 0x00, 0x29, 0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56,
0x27, 0x37, 0x56, 0x36, 0x37, 0x25, 0xc8, 0xea, 0x90, 0xe1, 0xb9, 0xd8,
0xa5, 0x95, 0xdd, 0x25, 0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09,
0xb6, 0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f,
0x69, 0x6e, 0x74, 0x73, 0x53, 0x02, 0x3a, 0x00, 0x00, 0x79, 0x18, 0x00,
0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d,
0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83,
0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78,
0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70,
0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc,
0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3,
0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c,
0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83,
0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03,
0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68,
0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60,
0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80,
0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98,
0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec,
0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c,
0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d,
0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43,
0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03,
0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03,
0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28,
0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4,
0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1,
0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f,
0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c,
0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x66, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
0x07, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
0x34, 0xc3, 0x42, 0x18, 0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33,
0xdd, 0x7e, 0x71, 0xdb, 0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2,
0x00, 0x83, 0xd8, 0x3c, 0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70,
0xf9, 0xce, 0xe3, 0x4b, 0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09,
0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f,
0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03,
0x00, 0x61, 0x20, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4b,
0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x8d, 0x00,
0x50, 0x51, 0x02, 0x44, 0x94, 0x4a, 0xb9, 0x94, 0x5b, 0xe1, 0x95, 0xc2,
0x0c, 0x40, 0x21, 0x94, 0x5c, 0xd9, 0xd1, 0x30, 0x02, 0x30, 0x46, 0xa0,
0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb, 0xa7, 0xe5, 0xfd, 0x8d,
0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41, 0xcc, 0x83, 0x7d, 0xee,
0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x95, 0x41, 0x92, 0x85,
0x41, 0x18, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x99, 0x81,
0xa2, 0x95, 0x41, 0x19, 0x4c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
0x9d, 0xc1, 0xb2, 0x95, 0x41, 0x19, 0x50, 0x23, 0x06, 0x09, 0x00, 0x82,
0x60, 0x70, 0xa1, 0x01, 0xe3, 0x99, 0x81, 0x19, 0x54, 0x23, 0x06, 0x09,
0x00, 0x82, 0x60, 0x70, 0xa5, 0x41, 0xc3, 0x9d, 0x01, 0x1a, 0x58, 0x23,
0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1, 0x63, 0x06, 0x68, 0xe0,
0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc4, 0x01, 0x74, 0x06,
0x69, 0x70, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc8, 0x41,
0x84, 0x06, 0x6a, 0xf0, 0x49, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60,
0xcc, 0x81, 0x94, 0x06, 0x6b, 0x30, 0x06, 0xd3, 0x88, 0x41, 0x02, 0x80,
0x20, 0x18, 0x18, 0x74, 0x30, 0xb5, 0x01, 0x1b, 0x88, 0x01, 0x35, 0x62,
0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x1d, 0x50, 0x6e, 0xd0, 0x06, 0x5b,
0x35, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x1d, 0x60, 0x09, 0x22,
0x04, 0x0c, 0xe3, 0x06, 0x6e, 0x60, 0x31, 0xa3, 0x09, 0x01, 0x30, 0x62,
0xf0, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x1d, 0x68, 0x8c, 0x42, 0x0c, 0x8e,
0x03, 0x07, 0x70, 0x80, 0x39, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00,
0x20, 0x08, 0x06, 0x0d, 0x1e, 0x70, 0x0f, 0x63, 0x14, 0x10, 0x24, 0x07,
0x72, 0xa0, 0x41, 0xa3, 0x09, 0x01, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08,
0x06, 0xd4, 0x1d, 0x64, 0x4d, 0x1d, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
0x10, 0x8c, 0x26, 0x0c, 0x82, 0x0d, 0x09, 0x7c, 0x6c, 0x40, 0xe0, 0x63,
0xc3, 0x01, 0x9f, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0xfc, 0x00,
0x0c, 0xa8, 0x3c, 0x18, 0x4d, 0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d,
0x18, 0x84, 0x11, 0x83, 0x05, 0x00, 0x41, 0x30, 0x78, 0x48, 0x41, 0x0d,
0x0e, 0xa3, 0x18, 0x84, 0x60, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0xa8,
0x51, 0x28, 0x83, 0x6c, 0x0f, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08,
0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x54,
0x78, 0x03, 0x66, 0x51, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04,
0x03, 0x0a, 0x15, 0xd4, 0xc0, 0x63, 0x83, 0xd1, 0x84, 0x00, 0x18, 0x4d,
0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04, 0x83,
0xc7, 0x15, 0xe8, 0x20, 0x82, 0x9e, 0x41, 0x08, 0x46, 0x0c, 0x0e, 0x00,
0x04, 0xc1, 0x80, 0x6a, 0x85, 0x37, 0x18, 0x03, 0x55, 0x18, 0x4d, 0x08,
0x80, 0xe1, 0x88, 0x00, 0x0e, 0x9c, 0x6f, 0x96, 0x21, 0x50, 0x82, 0xe1,
0x08, 0x87, 0x0d, 0x94, 0x6f, 0x96, 0x61, 0x10, 0x02, 0x7b, 0xdc, 0x40,
0x3e, 0xb3, 0x04, 0x84, 0x41, 0x70, 0x00, 0x9f, 0x11, 0x03, 0x03, 0x00,
0x41, 0x30, 0x88, 0x68, 0xe1, 0x15, 0x02, 0x0b, 0xe6, 0x40, 0x3e, 0x23,
0x06, 0x06, 0x00, 0x82, 0x60, 0x10, 0xd9, 0x82, 0x1f, 0x04, 0x16, 0xd8,
0x81, 0x7c, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0xc2, 0x85, 0x50,
0x08, 0x66, 0x09, 0x88, 0x81, 0x8a, 0xc1, 0x11, 0x84, 0x61, 0x38, 0x42,
0xaa, 0x03, 0xe5, 0x9b, 0x65, 0x30, 0x8a, 0xc0, 0xa6, 0x3b, 0x90, 0xcf,
0x2c, 0xc1, 0x61, 0x54, 0x1e, 0xc0, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10,
0x0c, 0xa2, 0x5e, 0xc0, 0x85, 0xc0, 0x02, 0x3e, 0x90, 0xcf, 0x88, 0x81,
0x01, 0x80, 0x20, 0x18, 0x44, 0xbf, 0x70, 0x0a, 0x81, 0x05, 0x7f, 0x20,
0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88, 0xc2, 0x41, 0x15, 0x82,
0x59, 0x82, 0x63, 0xa0, 0x62, 0x70, 0x0a, 0xc1, 0x18, 0x8e, 0xb0, 0xfc,
0x40, 0xf9, 0x66, 0x19, 0x12, 0x24, 0xb0, 0x0b, 0x14, 0xe4, 0x33, 0x4b,
0xa0, 0x18, 0x26, 0x0a, 0xf0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83,
0xc8, 0x1c, 0xc2, 0x21, 0xb0, 0xa0, 0x14, 0xe4, 0x33, 0x62, 0x60, 0x00,
0x20, 0x08, 0x06, 0x11, 0x3a, 0xc0, 0x42, 0x60, 0x01, 0x2a, 0xc8, 0x67,
0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x75, 0x98, 0x85, 0x60, 0x96,
0x40, 0x19, 0xe8, 0x18, 0x60, 0x01, 0x20, 0x83, 0x84, 0x0c, 0x90, 0x81,
0x8e, 0x01, 0x15, 0x00, 0x2a, 0xa1, 0x90, 0x81, 0x8e, 0x01, 0x14, 0x00,
0x23, 0x91, 0x90, 0xd1, 0x04, 0x30, 0x08, 0x8c, 0x18, 0x05, 0xf9, 0x58,
0x20, 0xc8, 0xc7, 0x0a, 0x52, 0x90, 0x8f, 0x05, 0x84, 0x7c, 0xcc, 0x28,
0x05, 0xf9, 0x58, 0x60, 0xc8, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c,
0x10, 0x7c, 0xd0, 0x85, 0x78, 0x88, 0x87, 0x73, 0x28, 0x46, 0x0c, 0x12,
0x00, 0x04, 0xc1, 0x00, 0xc1, 0x07, 0x5d, 0x88, 0x87, 0x78, 0xf8, 0x85,
0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10, 0x7c, 0xd0, 0x85, 0x78,
0x88, 0x07, 0x73, 0x08, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0xc1,
0x07, 0x5d, 0x88, 0x87, 0x78, 0x48, 0x07, 0x53, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00
}; };

View File

@ -91,9 +91,9 @@ typedef struct
typedef struct typedef struct
{ {
float scRGB_output; float scRGB_output;
float SDR_whitelevel; float color_scale;
float HDR_whitelevel; float unused1;
float maxCLL; float unused2;
float YCbCr_matrix[16]; float YCbCr_matrix[16];
} PixelShaderConstants; } PixelShaderConstants;
@ -147,6 +147,8 @@ typedef struct
typedef struct typedef struct
{ {
D3D12_Shader shader; D3D12_Shader shader;
SDL_bool scRGB_output;
float color_scale;
const float *shader_params; const float *shader_params;
SDL_BlendMode blendMode; SDL_BlendMode blendMode;
D3D12_PRIMITIVE_TOPOLOGY_TYPE topology; D3D12_PRIMITIVE_TOPOLOGY_TYPE topology;
@ -191,11 +193,6 @@ typedef struct
DXGI_FORMAT renderTargetFormat; DXGI_FORMAT renderTargetFormat;
SDL_bool pixelSizeChanged; SDL_bool pixelSizeChanged;
/* HDR state */
SDL_bool HDR_enabled;
int SDR_whitelevel;
int HDR_whitelevel;
/* Descriptor heaps */ /* Descriptor heaps */
ID3D12DescriptorHeap *rtvDescriptorHeap; ID3D12DescriptorHeap *rtvDescriptorHeap;
UINT rtvDescriptorSize; UINT rtvDescriptorSize;
@ -570,21 +567,6 @@ static void D3D12_DestroyRenderer(SDL_Renderer *renderer)
SDL_free(renderer); SDL_free(renderer);
} }
static void D3D12_UpdateHDRState(SDL_Renderer *renderer)
{
D3D12_RenderData *data = (D3D12_RenderData *)renderer->driverdata;
/* Using some placeholder values here... */
data->HDR_enabled = SDL_FALSE;
if (renderer->output_colorspace == SDL_COLORSPACE_SCRGB && data->HDR_enabled) {
data->SDR_whitelevel = 200.0f;
data->HDR_whitelevel = 400.0f;
} else {
data->SDR_whitelevel = 80.0f;
data->HDR_whitelevel = 80.0f;
}
}
static D3D12_BLEND GetBlendFunc(SDL_BlendFactor factor) static D3D12_BLEND GetBlendFunc(SDL_BlendFactor factor)
{ {
switch (factor) { switch (factor) {
@ -1148,8 +1130,6 @@ static HRESULT D3D12_CreateDeviceResources(SDL_Renderer *renderer)
SDL_SetProperty(props, SDL_PROP_RENDERER_D3D12_DEVICE_POINTER, data->d3dDevice); SDL_SetProperty(props, SDL_PROP_RENDERER_D3D12_DEVICE_POINTER, data->d3dDevice);
SDL_SetProperty(props, SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER, data->commandQueue); SDL_SetProperty(props, SDL_PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER, data->commandQueue);
D3D12_UpdateHDRState(renderer);
done: done:
SAFE_RELEASE(d3dDevice); SAFE_RELEASE(d3dDevice);
return result; return result;
@ -2551,6 +2531,8 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
int i; int i;
D3D12_CPU_DESCRIPTOR_HANDLE firstShaderResource; D3D12_CPU_DESCRIPTOR_HANDLE firstShaderResource;
DXGI_FORMAT rtvFormat = rendererData->renderTargetFormat; DXGI_FORMAT rtvFormat = rendererData->renderTargetFormat;
SDL_bool scRGB_output = SDL_RenderingLinearSpace(renderer);
float color_scale = cmd->data.draw.color_scale;
if (rendererData->textureRenderTarget) { if (rendererData->textureRenderTarget) {
rtvFormat = rendererData->textureRenderTarget->mainTextureFormat; rtvFormat = rendererData->textureRenderTarget->mainTextureFormat;
@ -2671,16 +2653,14 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
0); 0);
} }
if (updateSubresource == SDL_TRUE || (shader_params && shader_params != rendererData->currentPipelineState->shader_params)) { if (updateSubresource == SDL_TRUE ||
scRGB_output != rendererData->currentPipelineState->scRGB_output ||
color_scale != rendererData->currentPipelineState->color_scale ||
(shader_params && shader_params != rendererData->currentPipelineState->shader_params)) {
PixelShaderConstants constants; PixelShaderConstants constants;
if (renderer->output_colorspace == SDL_COLORSPACE_SCRGB) {
constants.scRGB_output = 1.0f; constants.scRGB_output = (float)scRGB_output;
} else { constants.color_scale = color_scale;
constants.scRGB_output = 0.0f;
}
constants.SDR_whitelevel = (float)rendererData->SDR_whitelevel;
constants.HDR_whitelevel = (float)rendererData->HDR_whitelevel;
constants.maxCLL = 400.0f;
if (shader_params) { if (shader_params) {
SDL_memcpy(constants.YCbCr_matrix, shader_params, sizeof(constants.YCbCr_matrix)); SDL_memcpy(constants.YCbCr_matrix, shader_params, sizeof(constants.YCbCr_matrix));
@ -2691,6 +2671,9 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
20, 20,
&constants, &constants,
0); 0);
rendererData->currentPipelineState->scRGB_output = scRGB_output;
rendererData->currentPipelineState->color_scale = color_scale;
rendererData->currentPipelineState->shader_params = shader_params; rendererData->currentPipelineState->shader_params = shader_params;
} }
@ -2832,14 +2815,11 @@ static int D3D12_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
SDL_bool convert_color = SDL_RenderingLinearSpace(renderer); SDL_bool convert_color = SDL_RenderingLinearSpace(renderer);
SDL_FColor color = cmd->data.color.color; SDL_FColor color = cmd->data.color.color;
if (convert_color) { if (convert_color) {
float light_scale = (float)rendererData->SDR_whitelevel / 80.0f;
SDL_ConvertToLinear(&color); SDL_ConvertToLinear(&color);
color.r *= light_scale;
color.g *= light_scale;
color.b *= light_scale;
} }
color.r *= cmd->data.color.color_scale;
color.g *= cmd->data.color.color_scale;
color.b *= cmd->data.color.color_scale;
D3D_CALL(rendererData->commandList, ClearRenderTargetView, rtvDescriptor, &color.r, 0, NULL); D3D_CALL(rendererData->commandList, ClearRenderTargetView, rtvDescriptor, &color.r, 0, NULL);
break; break;
} }

View File

@ -1049,7 +1049,8 @@ static int METAL_QueueSetDrawColor(SDL_Renderer *renderer, SDL_RenderCommand *cm
static int METAL_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count) static int METAL_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count)
{ {
const SDL_FColor *color = &cmd->data.draw.color; SDL_FColor color = cmd->data.draw.color;
const float color_scale = cmd->data.draw.color_scale;
const size_t vertlen = (2 * sizeof(float) + 4 * sizeof(float)) * count; const size_t vertlen = (2 * sizeof(float) + 4 * sizeof(float)) * count;
float *verts = (float *)SDL_AllocateRenderVertices(renderer, vertlen, DEVICE_ALIGN(8), &cmd->data.draw.first); float *verts = (float *)SDL_AllocateRenderVertices(renderer, vertlen, DEVICE_ALIGN(8), &cmd->data.draw.first);
@ -1058,20 +1059,25 @@ static int METAL_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
} }
cmd->data.draw.count = count; cmd->data.draw.count = count;
color.r *= color_scale;
color.g *= color_scale;
color.b *= color_scale;
for (int i = 0; i < count; i++, points++) { for (int i = 0; i < count; i++, points++) {
*(verts++) = points->x; *(verts++) = points->x;
*(verts++) = points->y; *(verts++) = points->y;
*(verts++) = color->r; *(verts++) = color.r;
*(verts++) = color->g; *(verts++) = color.g;
*(verts++) = color->b; *(verts++) = color.b;
*(verts++) = color->a; *(verts++) = color.a;
} }
return 0; return 0;
} }
static int METAL_QueueDrawLines(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count) static int METAL_QueueDrawLines(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count)
{ {
const SDL_FColor *color = &cmd->data.draw.color; SDL_FColor color = cmd->data.draw.color;
const float color_scale = cmd->data.draw.color_scale;
size_t vertlen; size_t vertlen;
float *verts; float *verts;
@ -1084,13 +1090,17 @@ static int METAL_QueueDrawLines(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
} }
cmd->data.draw.count = count; cmd->data.draw.count = count;
color.r *= color_scale;
color.g *= color_scale;
color.b *= color_scale;
for (int i = 0; i < count; i++, points++) { for (int i = 0; i < count; i++, points++) {
*(verts++) = points->x; *(verts++) = points->x;
*(verts++) = points->y; *(verts++) = points->y;
*(verts++) = color->r; *(verts++) = color.r;
*(verts++) = color->g; *(verts++) = color.g;
*(verts++) = color->b; *(verts++) = color.b;
*(verts++) = color->a; *(verts++) = color.a;
} }
/* If the line segment is completely horizontal or vertical, /* If the line segment is completely horizontal or vertical,
@ -1125,6 +1135,7 @@ static int METAL_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, S
int num_vertices, const void *indices, int num_indices, int size_indices, int num_vertices, const void *indices, int num_indices, int size_indices,
float scale_x, float scale_y) float scale_x, float scale_y)
{ {
const float color_scale = cmd->data.draw.color_scale;
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
const size_t vertlen = (2 * sizeof(float) + 4 * sizeof(float) + (texture ? 2 : 0) * sizeof(float)) * count; const size_t vertlen = (2 * sizeof(float) + 4 * sizeof(float) + (texture ? 2 : 0) * sizeof(float)) * count;
float *verts = (float *)SDL_AllocateRenderVertices(renderer, vertlen, DEVICE_ALIGN(8), &cmd->data.draw.first); float *verts = (float *)SDL_AllocateRenderVertices(renderer, vertlen, DEVICE_ALIGN(8), &cmd->data.draw.first);
@ -1156,9 +1167,9 @@ static int METAL_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, S
col_ = (SDL_FColor *)((char *)color + j * color_stride); col_ = (SDL_FColor *)((char *)color + j * color_stride);
*(verts++) = col_->r; *(verts++) = col_->r * color_scale;
*(verts++) = col_->g; *(verts++) = col_->g * color_scale;
*(verts++) = col_->b; *(verts++) = col_->b * color_scale;
*(verts++) = col_->a; *(verts++) = col_->a;
if (texture) { if (texture) {
@ -1393,9 +1404,9 @@ static int METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
statecache.viewport_dirty = SDL_TRUE; statecache.viewport_dirty = SDL_TRUE;
{ {
const float r = cmd->data.color.color.r; const float r = cmd->data.color.color.r * cmd->data.color.color_scale;
const float g = cmd->data.color.color.g; const float g = cmd->data.color.color.g * cmd->data.color.color_scale;
const float b = cmd->data.color.color.b; const float b = cmd->data.color.color.b * cmd->data.color.color_scale;
const float a = cmd->data.color.color.a; const float a = cmd->data.color.color.a;
MTLClearColor color = MTLClearColorMake(r, g, b, a); MTLClearColor color = MTLClearColorMake(r, g, b, a);

View File

@ -983,6 +983,7 @@ static int GL_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
GLfloat *verts; GLfloat *verts;
size_t sz = 2 * sizeof(GLfloat) + 4 * sizeof(GLfloat) + (texture ? 2 : 0) * sizeof(GLfloat); size_t sz = 2 * sizeof(GLfloat) + 4 * sizeof(GLfloat) + (texture ? 2 : 0) * sizeof(GLfloat);
const float color_scale = cmd->data.draw.color_scale;
verts = (GLfloat *)SDL_AllocateRenderVertices(renderer, count * sz, 0, &cmd->data.draw.first); verts = (GLfloat *)SDL_AllocateRenderVertices(renderer, count * sz, 0, &cmd->data.draw.first);
if (!verts) { if (!verts) {
@ -1016,9 +1017,9 @@ static int GL_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_
*(verts++) = xy_[1] * scale_y; *(verts++) = xy_[1] * scale_y;
col_ = (SDL_FColor *)((char *)color + j * color_stride); col_ = (SDL_FColor *)((char *)color + j * color_stride);
*(verts++) = col_->r; *(verts++) = col_->r * color_scale;
*(verts++) = col_->g; *(verts++) = col_->g * color_scale;
*(verts++) = col_->b; *(verts++) = col_->b * color_scale;
*(verts++) = col_->a; *(verts++) = col_->a;
if (texture) { if (texture) {
@ -1231,9 +1232,9 @@ static int GL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, vo
switch (cmd->command) { switch (cmd->command) {
case SDL_RENDERCMD_SETDRAWCOLOR: case SDL_RENDERCMD_SETDRAWCOLOR:
{ {
const float r = cmd->data.color.color.r; const float r = cmd->data.color.color.r * cmd->data.color.color_scale;
const float g = cmd->data.color.color.g; const float g = cmd->data.color.color.g * cmd->data.color.color_scale;
const float b = cmd->data.color.color.b; const float b = cmd->data.color.color.b * cmd->data.color.color_scale;
const float a = cmd->data.color.color.a; const float a = cmd->data.color.color.a;
if (data->drawstate.clear_color_dirty || if (data->drawstate.clear_color_dirty ||
(r != data->drawstate.color.r) || (r != data->drawstate.color.r) ||
@ -1241,7 +1242,10 @@ static int GL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, vo
(b != data->drawstate.color.b) || (b != data->drawstate.color.b) ||
(a != data->drawstate.color.a)) { (a != data->drawstate.color.a)) {
data->glColor4f(r, g, b, a); data->glColor4f(r, g, b, a);
data->drawstate.color = cmd->data.color.color; data->drawstate.color.r = r;
data->drawstate.color.g = g;
data->drawstate.color.b = b;
data->drawstate.color.a = a;
data->drawstate.color_dirty = SDL_FALSE; data->drawstate.color_dirty = SDL_FALSE;
} }
break; break;
@ -1274,9 +1278,9 @@ static int GL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, vo
case SDL_RENDERCMD_CLEAR: case SDL_RENDERCMD_CLEAR:
{ {
const float r = cmd->data.color.color.r; const float r = cmd->data.color.color.r * cmd->data.color.color_scale;
const float g = cmd->data.color.color.g; const float g = cmd->data.color.color.g * cmd->data.color.color_scale;
const float b = cmd->data.color.color.b; const float b = cmd->data.color.color.b * cmd->data.color.color_scale;
const float a = cmd->data.color.color.a; const float a = cmd->data.color.color.a;
if (data->drawstate.clear_color_dirty || if (data->drawstate.clear_color_dirty ||
(r != data->drawstate.clear_color.r) || (r != data->drawstate.clear_color.r) ||
@ -1284,7 +1288,10 @@ static int GL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, vo
(b != data->drawstate.clear_color.b) || (b != data->drawstate.clear_color.b) ||
(a != data->drawstate.clear_color.a)) { (a != data->drawstate.clear_color.a)) {
data->glClearColor(r, g, b, a); data->glClearColor(r, g, b, a);
data->drawstate.clear_color = cmd->data.color.color; data->drawstate.clear_color.r = r;
data->drawstate.clear_color.g = g;
data->drawstate.clear_color.b = b;
data->drawstate.clear_color.a = a;
data->drawstate.clear_color_dirty = SDL_FALSE; data->drawstate.clear_color_dirty = SDL_FALSE;
} }

View File

@ -744,11 +744,16 @@ static int GLES2_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
SDL_VertexSolid *verts = (SDL_VertexSolid *)SDL_AllocateRenderVertices(renderer, count * sizeof(*verts), 0, &cmd->data.draw.first); SDL_VertexSolid *verts = (SDL_VertexSolid *)SDL_AllocateRenderVertices(renderer, count * sizeof(*verts), 0, &cmd->data.draw.first);
int i; int i;
SDL_FColor color = cmd->data.draw.color; SDL_FColor color = cmd->data.draw.color;
const float color_scale = cmd->data.draw.color_scale;
if (!verts) { if (!verts) {
return -1; return -1;
} }
color.r *= color_scale;
color.g *= color_scale;
color.b *= color_scale;
if (colorswap) { if (colorswap) {
float r = color.r; float r = color.r;
color.r = color.b; color.r = color.b;
@ -773,11 +778,16 @@ static int GLES2_QueueDrawLines(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
GLfloat prevx, prevy; GLfloat prevx, prevy;
SDL_VertexSolid *verts = (SDL_VertexSolid *)SDL_AllocateRenderVertices(renderer, count * sizeof(*verts), 0, &cmd->data.draw.first); SDL_VertexSolid *verts = (SDL_VertexSolid *)SDL_AllocateRenderVertices(renderer, count * sizeof(*verts), 0, &cmd->data.draw.first);
SDL_FColor color = cmd->data.draw.color; SDL_FColor color = cmd->data.draw.color;
const float color_scale = cmd->data.draw.color_scale;
if (!verts) { if (!verts) {
return -1; return -1;
} }
color.r *= color_scale;
color.g *= color_scale;
color.b *= color_scale;
if (colorswap) { if (colorswap) {
float r = color.r; float r = color.r;
color.r = color.b; color.r = color.b;
@ -826,6 +836,7 @@ static int GLES2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, S
int i; int i;
const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32)); const SDL_bool colorswap = (renderer->target && (renderer->target->format == SDL_PIXELFORMAT_BGRA32 || renderer->target->format == SDL_PIXELFORMAT_BGRX32));
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
const float color_scale = cmd->data.draw.color_scale;
cmd->data.draw.count = count; cmd->data.draw.count = count;
size_indices = indices ? size_indices : 0; size_indices = indices ? size_indices : 0;
@ -858,6 +869,10 @@ static int GLES2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, S
verts->position.x = xy_[0] * scale_x; verts->position.x = xy_[0] * scale_x;
verts->position.y = xy_[1] * scale_y; verts->position.y = xy_[1] * scale_y;
col_.r *= color_scale;
col_.g *= color_scale;
col_.b *= color_scale;
if (colorswap) { if (colorswap) {
float r = col_.r; float r = col_.r;
col_.r = col_.b; col_.r = col_.b;
@ -897,6 +912,10 @@ static int GLES2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, S
verts->position.x = xy_[0] * scale_x; verts->position.x = xy_[0] * scale_x;
verts->position.y = xy_[1] * scale_y; verts->position.y = xy_[1] * scale_y;
col_.r *= color_scale;
col_.g *= color_scale;
col_.b *= color_scale;
if (colorswap) { if (colorswap) {
float r = col_.r; float r = col_.r;
col_.r = col_.b; col_.r = col_.b;
@ -1246,9 +1265,9 @@ static int GLES2_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
case SDL_RENDERCMD_CLEAR: case SDL_RENDERCMD_CLEAR:
{ {
const float r = colorswap ? cmd->data.color.color.b : cmd->data.color.color.r; const float r = (colorswap ? cmd->data.color.color.b : cmd->data.color.color.r) * cmd->data.color.color_scale;
const float g = cmd->data.color.color.g; const float g = cmd->data.color.color.g * cmd->data.color.color_scale;
const float b = colorswap ? cmd->data.color.color.r : cmd->data.color.color.b; const float b = (colorswap ? cmd->data.color.color.r : cmd->data.color.color.b) * cmd->data.color.color_scale;
const float a = cmd->data.color.color.a; const float a = cmd->data.color.color.a;
if (data->drawstate.clear_color_dirty || if (data->drawstate.clear_color_dirty ||
(r != data->drawstate.clear_color.r) || (r != data->drawstate.clear_color.r) ||
@ -1256,7 +1275,10 @@ static int GLES2_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
(b != data->drawstate.clear_color.b) || (b != data->drawstate.clear_color.b) ||
(a != data->drawstate.clear_color.a)) { (a != data->drawstate.clear_color.a)) {
data->glClearColor(r, g, g, a); data->glClearColor(r, g, g, a);
data->drawstate.clear_color = cmd->data.color.color; data->drawstate.clear_color.r = r;
data->drawstate.clear_color.g = g;
data->drawstate.clear_color.b = b;
data->drawstate.clear_color.a = a;
data->drawstate.clear_color_dirty = SDL_FALSE; data->drawstate.clear_color_dirty = SDL_FALSE;
} }

View File

@ -103,21 +103,21 @@ static int PixelFormatToPS2PSM(Uint32 format)
} }
} }
static gs_rgbaq float_color_to_RGBAQ(const SDL_FColor *color) static gs_rgbaq float_color_to_RGBAQ(const SDL_FColor *color, float color_scale)
{ {
uint8_t colorR = (uint8_t)SDL_roundf(SDL_clamp(color->r, 0.0f, 1.0f) * 255.0f); uint8_t colorR = (uint8_t)SDL_roundf(SDL_clamp(color->r * color_scale, 0.0f, 1.0f) * 255.0f);
uint8_t colorG = (uint8_t)SDL_roundf(SDL_clamp(color->g, 0.0f, 1.0f) * 255.0f); uint8_t colorG = (uint8_t)SDL_roundf(SDL_clamp(color->g * color_scale, 0.0f, 1.0f) * 255.0f);
uint8_t colorB = (uint8_t)SDL_roundf(SDL_clamp(color->b, 0.0f, 1.0f) * 255.0f); uint8_t colorB = (uint8_t)SDL_roundf(SDL_clamp(color->b * color_scale, 0.0f, 1.0f) * 255.0f);
uint8_t colorA = (uint8_t)SDL_roundf(SDL_clamp(color->a, 0.0f, 1.0f) * 255.0f); uint8_t colorA = (uint8_t)SDL_roundf(SDL_clamp(color->a, 0.0f, 1.0f) * 255.0f);
return color_to_RGBAQ(colorR, colorG, colorB, colorA, 0x00); return color_to_RGBAQ(colorR, colorG, colorB, colorA, 0x00);
} }
static uint64_t float_GS_SETREG_RGBAQ(const SDL_FColor *color) static uint64_t float_GS_SETREG_RGBAQ(const SDL_FColor *color, float color_scale)
{ {
uint8_t colorR = (uint8_t)SDL_roundf(SDL_clamp(color->r, 0.0f, 1.0f) * 255.0f); uint8_t colorR = (uint8_t)SDL_roundf(SDL_clamp(color->r * color_scale, 0.0f, 1.0f) * 255.0f);
uint8_t colorG = (uint8_t)SDL_roundf(SDL_clamp(color->g, 0.0f, 1.0f) * 255.0f); uint8_t colorG = (uint8_t)SDL_roundf(SDL_clamp(color->g * color_scale, 0.0f, 1.0f) * 255.0f);
uint8_t colorB = (uint8_t)SDL_roundf(SDL_clamp(color->b, 0.0f, 1.0f) * 255.0f); uint8_t colorB = (uint8_t)SDL_roundf(SDL_clamp(color->b * color_scale, 0.0f, 1.0f) * 255.0f);
uint8_t colorA = (uint8_t)SDL_roundf(SDL_clamp(color->a, 0.0f, 1.0f) * 255.0f); uint8_t colorA = (uint8_t)SDL_roundf(SDL_clamp(color->a, 0.0f, 1.0f) * 255.0f);
return GS_SETREG_RGBAQ(colorR, colorG, colorB, colorA, 0x00); return GS_SETREG_RGBAQ(colorR, colorG, colorB, colorA, 0x00);
@ -246,7 +246,7 @@ static int PS2_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, c
cmd->data.draw.count = count; cmd->data.draw.count = count;
rgbaq = float_color_to_RGBAQ(&cmd->data.draw.color); rgbaq = float_color_to_RGBAQ(&cmd->data.draw.color, cmd->data.draw.color_scale);
for (i = 0; i < count; i++, vertices++, points++) { for (i = 0; i < count; i++, vertices++, points++) {
vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, points->x, points->y, 0); vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, points->x, points->y, 0);
@ -263,6 +263,7 @@ static int PS2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
int i; int i;
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata; PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata;
const float color_scale = cmd->data.draw.color_scale;
cmd->data.draw.count = count; cmd->data.draw.count = count;
size_indices = indices ? size_indices : 0; size_indices = indices ? size_indices : 0;
@ -295,7 +296,7 @@ static int PS2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
uv_ = (float *)((char *)uv + j * uv_stride); uv_ = (float *)((char *)uv + j * uv_stride);
vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, xy_[0] * scale_x, xy_[1] * scale_y, 0); vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, xy_[0] * scale_x, xy_[1] * scale_y, 0);
vertices->rgbaq = float_color_to_RGBAQ(col_); vertices->rgbaq = float_color_to_RGBAQ(col_, color_scale);
vertices->uv = vertex_to_UV(ps2_tex, uv_[0] * ps2_tex->Width, uv_[1] * ps2_tex->Height); vertices->uv = vertex_to_UV(ps2_tex, uv_[0] * ps2_tex->Width, uv_[1] * ps2_tex->Height);
vertices++; vertices++;
@ -326,7 +327,7 @@ static int PS2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
col_ = (SDL_FColor *)((char *)color + j * color_stride); col_ = (SDL_FColor *)((char *)color + j * color_stride);
vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, xy_[0] * scale_x, xy_[1] * scale_y, 0); vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, xy_[0] * scale_x, xy_[1] * scale_y, 0);
vertices->rgbaq = float_color_to_RGBAQ(col_); vertices->rgbaq = float_color_to_RGBAQ(col_, color_scale);
vertices++; vertices++;
} }
@ -363,7 +364,7 @@ static int PS2_RenderSetDrawColor(SDL_Renderer *renderer, SDL_RenderCommand *cmd
{ {
PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata; PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata;
data->drawColor = float_GS_SETREG_RGBAQ(&cmd->data.color.color); data->drawColor = float_GS_SETREG_RGBAQ(&cmd->data.color.color, cmd->data.color.color_scale);
return 0; return 0;
} }
@ -381,7 +382,7 @@ static int PS2_RenderClear(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
offsetY = data->gsGlobal->OffsetY; offsetY = data->gsGlobal->OffsetY;
data->gsGlobal->OffsetX = (int)(2048.0f * 16.0f); data->gsGlobal->OffsetX = (int)(2048.0f * 16.0f);
data->gsGlobal->OffsetY = (int)(2048.0f * 16.0f); data->gsGlobal->OffsetY = (int)(2048.0f * 16.0f);
gsKit_clear(data->gsGlobal, float_GS_SETREG_RGBAQ(&cmd->data.color.color)); gsKit_clear(data->gsGlobal, float_GS_SETREG_RGBAQ(&cmd->data.color.color, cmd->data.color.color_scale));
/* Put back original offset */ /* Put back original offset */
data->gsGlobal->OffsetX = offsetX; data->gsGlobal->OffsetX = offsetX;

View File

@ -656,6 +656,7 @@ static int PSP_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
{ {
int i; int i;
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
const float color_scale = cmd->data.draw.color_scale;
cmd->data.draw.count = count; cmd->data.draw.count = count;
size_indices = indices ? size_indices : 0; size_indices = indices ? size_indices : 0;
@ -688,9 +689,9 @@ static int PSP_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
verts->y = xy_[1] * scale_y; verts->y = xy_[1] * scale_y;
verts->z = 0; verts->z = 0;
verts->col.r = (Uint8)SDL_roundf(SDL_clamp(col_->r, 0.0f, 1.0f) * 255.0f); verts->col.r = (Uint8)SDL_roundf(SDL_clamp(col_->r * color_scale, 0.0f, 1.0f) * 255.0f);
verts->col.g = (Uint8)SDL_roundf(SDL_clamp(col_->g, 0.0f, 1.0f) * 255.0f); verts->col.g = (Uint8)SDL_roundf(SDL_clamp(col_->g * color_scale, 0.0f, 1.0f) * 255.0f);
verts->col.b = (Uint8)SDL_roundf(SDL_clamp(col_->b, 0.0f, 1.0f) * 255.0f); verts->col.b = (Uint8)SDL_roundf(SDL_clamp(col_->b * color_scale, 0.0f, 1.0f) * 255.0f);
verts->col.a = (Uint8)SDL_roundf(SDL_clamp(col_->a, 0.0f, 1.0f) * 255.0f); verts->col.a = (Uint8)SDL_roundf(SDL_clamp(col_->a, 0.0f, 1.0f) * 255.0f);
verts++; verts++;
@ -727,9 +728,9 @@ static int PSP_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
verts->y = xy_[1] * scale_y; verts->y = xy_[1] * scale_y;
verts->z = 0; verts->z = 0;
verts->col.r = (Uint8)SDL_roundf(SDL_clamp(col_->r, 0.0f, 1.0f) * 255.0f); verts->col.r = (Uint8)SDL_roundf(SDL_clamp(col_->r * color_scale, 0.0f, 1.0f) * 255.0f);
verts->col.g = (Uint8)SDL_roundf(SDL_clamp(col_->g, 0.0f, 1.0f) * 255.0f); verts->col.g = (Uint8)SDL_roundf(SDL_clamp(col_->g * color_scale, 0.0f, 1.0f) * 255.0f);
verts->col.b = (Uint8)SDL_roundf(SDL_clamp(col_->b, 0.0f, 1.0f) * 255.0f); verts->col.b = (Uint8)SDL_roundf(SDL_clamp(col_->b * color_scale, 0.0f, 1.0f) * 255.0f);
verts->col.a = (Uint8)SDL_roundf(SDL_clamp(col_->a, 0.0f, 1.0f) * 255.0f); verts->col.a = (Uint8)SDL_roundf(SDL_clamp(col_->a, 0.0f, 1.0f) * 255.0f);
verts->u = uv_[0] * psp_texture->textureWidth; verts->u = uv_[0] * psp_texture->textureWidth;
@ -1063,9 +1064,9 @@ static int PSP_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
switch (cmd->command) { switch (cmd->command) {
case SDL_RENDERCMD_SETDRAWCOLOR: case SDL_RENDERCMD_SETDRAWCOLOR:
{ {
const Uint8 r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r, 0.0f, 1.0f) * 255.0f); const Uint8 r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g, 0.0f, 1.0f) * 255.0f); const Uint8 g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b, 0.0f, 1.0f) * 255.0f); const Uint8 b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f); const Uint8 a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f);
drawstate.color = GU_RGBA(r, g, b, a); drawstate.color = GU_RGBA(r, g, b, a);
break; break;
@ -1094,9 +1095,9 @@ static int PSP_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
case SDL_RENDERCMD_CLEAR: case SDL_RENDERCMD_CLEAR:
{ {
const Uint8 r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r, 0.0f, 1.0f) * 255.0f); const Uint8 r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g, 0.0f, 1.0f) * 255.0f); const Uint8 g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b, 0.0f, 1.0f) * 255.0f); const Uint8 b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f); const Uint8 a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f);
sceGuClearColor(GU_RGBA(r, g, b, a)); sceGuClearColor(GU_RGBA(r, g, b, a));
sceGuClearStencil(a); sceGuClearStencil(a);

View File

@ -546,6 +546,7 @@ static int SW_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
void *verts; void *verts;
size_t sz = texture ? sizeof(GeometryCopyData) : sizeof(GeometryFillData); size_t sz = texture ? sizeof(GeometryCopyData) : sizeof(GeometryFillData);
const float color_scale = cmd->data.draw.color_scale;
verts = SDL_AllocateRenderVertices(renderer, count * sz, 0, &cmd->data.draw.first); verts = SDL_AllocateRenderVertices(renderer, count * sz, 0, &cmd->data.draw.first);
if (!verts) { if (!verts) {
@ -584,9 +585,9 @@ static int SW_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_
ptr->dst.y = (int)(xy_[1] * scale_y); ptr->dst.y = (int)(xy_[1] * scale_y);
trianglepoint_2_fixedpoint(&ptr->dst); trianglepoint_2_fixedpoint(&ptr->dst);
ptr->color.r = (Uint8)SDL_roundf(SDL_clamp(col_.r, 0.0f, 1.0f) * 255.0f); ptr->color.r = (Uint8)SDL_roundf(SDL_clamp(col_.r * color_scale, 0.0f, 1.0f) * 255.0f);
ptr->color.g = (Uint8)SDL_roundf(SDL_clamp(col_.g, 0.0f, 1.0f) * 255.0f); ptr->color.g = (Uint8)SDL_roundf(SDL_clamp(col_.g * color_scale, 0.0f, 1.0f) * 255.0f);
ptr->color.b = (Uint8)SDL_roundf(SDL_clamp(col_.b, 0.0f, 1.0f) * 255.0f); ptr->color.b = (Uint8)SDL_roundf(SDL_clamp(col_.b * color_scale, 0.0f, 1.0f) * 255.0f);
ptr->color.a = (Uint8)SDL_roundf(SDL_clamp(col_.a, 0.0f, 1.0f) * 255.0f); ptr->color.a = (Uint8)SDL_roundf(SDL_clamp(col_.a, 0.0f, 1.0f) * 255.0f);
ptr++; ptr++;
@ -615,9 +616,9 @@ static int SW_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_
ptr->dst.y = (int)(xy_[1] * scale_y); ptr->dst.y = (int)(xy_[1] * scale_y);
trianglepoint_2_fixedpoint(&ptr->dst); trianglepoint_2_fixedpoint(&ptr->dst);
ptr->color.r = (Uint8)SDL_roundf(SDL_clamp(col_.r, 0.0f, 1.0f) * 255.0f); ptr->color.r = (Uint8)SDL_roundf(SDL_clamp(col_.r * color_scale, 0.0f, 1.0f) * 255.0f);
ptr->color.g = (Uint8)SDL_roundf(SDL_clamp(col_.g, 0.0f, 1.0f) * 255.0f); ptr->color.g = (Uint8)SDL_roundf(SDL_clamp(col_.g * color_scale, 0.0f, 1.0f) * 255.0f);
ptr->color.b = (Uint8)SDL_roundf(SDL_clamp(col_.b, 0.0f, 1.0f) * 255.0f); ptr->color.b = (Uint8)SDL_roundf(SDL_clamp(col_.b * color_scale, 0.0f, 1.0f) * 255.0f);
ptr->color.a = (Uint8)SDL_roundf(SDL_clamp(col_.a, 0.0f, 1.0f) * 255.0f); ptr->color.a = (Uint8)SDL_roundf(SDL_clamp(col_.a, 0.0f, 1.0f) * 255.0f);
ptr++; ptr++;
@ -698,9 +699,9 @@ static int SW_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, vo
switch (cmd->command) { switch (cmd->command) {
case SDL_RENDERCMD_SETDRAWCOLOR: case SDL_RENDERCMD_SETDRAWCOLOR:
{ {
drawstate.color.r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r, 0.0f, 1.0f) * 255.0f); drawstate.color.r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
drawstate.color.g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g, 0.0f, 1.0f) * 255.0f); drawstate.color.g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
drawstate.color.b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b, 0.0f, 1.0f) * 255.0f); drawstate.color.b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
drawstate.color.a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f); drawstate.color.a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f);
break; break;
} }
@ -721,9 +722,9 @@ static int SW_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, vo
case SDL_RENDERCMD_CLEAR: case SDL_RENDERCMD_CLEAR:
{ {
const Uint8 r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r, 0.0f, 1.0f) * 255.0f); const Uint8 r = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.r * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g, 0.0f, 1.0f) * 255.0f); const Uint8 g = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.g * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b, 0.0f, 1.0f) * 255.0f); const Uint8 b = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.b * cmd->data.color.color_scale, 0.0f, 1.0f) * 255.0f);
const Uint8 a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f); const Uint8 a = (Uint8)SDL_roundf(SDL_clamp(cmd->data.color.color.a, 0.0f, 1.0f) * 255.0f);
/* By definition the clear ignores the clip rect */ /* By definition the clear ignores the clip rect */
SDL_SetSurfaceClipRect(surface, NULL); SDL_SetSurfaceClipRect(surface, NULL);

View File

@ -670,7 +670,10 @@ static int VITA_GXM_QueueSetDrawColor(SDL_Renderer *renderer, SDL_RenderCommand
{ {
VITA_GXM_RenderData *data = (VITA_GXM_RenderData *)renderer->driverdata; VITA_GXM_RenderData *data = (VITA_GXM_RenderData *)renderer->driverdata;
data->drawstate.color = cmd->data.color.color; data->drawstate.color.r = cmd->data.color.color.r * cmd->data.color.color_scale;
data->drawstate.color.g = cmd->data.color.color.g * cmd->data.color.color_scale;
data->drawstate.color.b = cmd->data.color.color.b * cmd->data.color.color_scale;
data->drawstate.color.a = cmd->data.color.color.a;
return 0; return 0;
} }
@ -730,6 +733,7 @@ static int VITA_GXM_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd
VITA_GXM_RenderData *data = (VITA_GXM_RenderData *)renderer->driverdata; VITA_GXM_RenderData *data = (VITA_GXM_RenderData *)renderer->driverdata;
int i; int i;
int count = indices ? num_indices : num_vertices; int count = indices ? num_indices : num_vertices;
const float color_scale = cmd->data.draw.color_scale;
cmd->data.draw.count = count; cmd->data.draw.count = count;
size_indices = indices ? size_indices : 0; size_indices = indices ? size_indices : 0;
@ -765,6 +769,10 @@ static int VITA_GXM_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd
col_ = *(SDL_FColor *)((char *)color + j * color_stride); col_ = *(SDL_FColor *)((char *)color + j * color_stride);
uv_ = (float *)((char *)uv + j * uv_stride); uv_ = (float *)((char *)uv + j * uv_stride);
col_.r *= color_scale;
col_.g *= color_scale;
col_.b *= color_scale;
vertices[i].x = xy_[0] * scale_x; vertices[i].x = xy_[0] * scale_x;
vertices[i].y = xy_[1] * scale_y; vertices[i].y = xy_[1] * scale_y;
vertices[i].u = uv_[0] * vita_texture->wscale; vertices[i].u = uv_[0] * vita_texture->wscale;
@ -802,6 +810,10 @@ static int VITA_GXM_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd
xy_ = (float *)((char *)xy + j * xy_stride); xy_ = (float *)((char *)xy + j * xy_stride);
col_ = *(SDL_FColor *)((char *)color + j * color_stride); col_ = *(SDL_FColor *)((char *)color + j * color_stride);
col_.r *= color_scale;
col_.g *= color_scale;
col_.b *= color_scale;
vertices[i].x = xy_[0] * scale_x; vertices[i].x = xy_[0] * scale_x;
vertices[i].y = xy_[1] * scale_y; vertices[i].y = xy_[1] * scale_y;
vertices[i].color = col_; vertices[i].color = col_;
@ -815,6 +827,7 @@ static int VITA_GXM_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd
static int VITA_GXM_RenderClear(SDL_Renderer *renderer, SDL_RenderCommand *cmd) static int VITA_GXM_RenderClear(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{ {
void *color_buffer; void *color_buffer;
SDL_FColor color;
VITA_GXM_RenderData *data = (VITA_GXM_RenderData *)renderer->driverdata; VITA_GXM_RenderData *data = (VITA_GXM_RenderData *)renderer->driverdata;
unset_clip_rectangle(data); unset_clip_rectangle(data);
@ -826,8 +839,12 @@ static int VITA_GXM_RenderClear(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
sceGxmSetFragmentProgram(data->gxm_context, data->clearFragmentProgram); sceGxmSetFragmentProgram(data->gxm_context, data->clearFragmentProgram);
// set the clear color // set the clear color
color = cmd->data.color.color;
color.r *= cmd->data.color.color_scale;
color.g *= cmd->data.color.color_scale;
color.b *= cmd->data.color.color_scale;
sceGxmReserveFragmentDefaultUniformBuffer(data->gxm_context, &color_buffer); sceGxmReserveFragmentDefaultUniformBuffer(data->gxm_context, &color_buffer);
sceGxmSetUniformDataF(color_buffer, data->clearClearColorParam, 0, 4, &cmd->data.color.color.r); sceGxmSetUniformDataF(color_buffer, data->clearClearColorParam, 0, 4, &color.r);
// draw the clear triangle // draw the clear triangle
sceGxmSetVertexStream(data->gxm_context, 0, data->clearVertices); sceGxmSetVertexStream(data->gxm_context, 0, data->clearVertices);

View File

@ -35,6 +35,8 @@ static int renderer_index = 0;
static int stage_count = 6; static int stage_count = 6;
static int stage_index = 0; static int stage_index = 0;
static int done; static int done;
static float SDR_color_scale = 1.0f;
static float HDR_color_scale = 1.0f;
static void FreeRenderer(void) static void FreeRenderer(void)
{ {
@ -47,6 +49,7 @@ static void CreateRenderer(void)
{ {
SDL_PropertiesID props; SDL_PropertiesID props;
SDL_RendererInfo info; SDL_RendererInfo info;
float SDR_white_level;
props = SDL_CreateProperties(); props = SDL_CreateProperties();
SDL_SetProperty(props, SDL_PROP_RENDERER_CREATE_WINDOW_POINTER, window); SDL_SetProperty(props, SDL_PROP_RENDERER_CREATE_WINDOW_POINTER, window);
@ -62,6 +65,16 @@ static void CreateRenderer(void)
SDL_GetRendererInfo(renderer, &info); SDL_GetRendererInfo(renderer, &info);
SDL_Log("Created renderer %s\n", info.name); SDL_Log("Created renderer %s\n", info.name);
renderer_name = info.name; renderer_name = info.name;
/* If HDR is enabled... */
if (colorspace == SDL_COLORSPACE_SCRGB) {
SDR_white_level = 200.0f;
} else {
SDR_white_level = 80.0f;
}
SDR_color_scale = SDR_white_level / 80.0f;
SDL_SetRenderColorScale(renderer, SDR_color_scale);
} }
static void NextRenderer( void ) static void NextRenderer( void )
@ -429,7 +442,9 @@ static void RenderGradientDrawing(void)
DrawTextWhite(x, y, "HDR gradient (%d nits)", 400); DrawTextWhite(x, y, "HDR gradient (%d nits)", 400);
y += TEXT_LINE_ADVANCE; y += TEXT_LINE_ADVANCE;
SDL_SetRenderColorScale(renderer, HDR_color_scale);
DrawGradient(x, y, WINDOW_WIDTH - 2 * x, 64.0f, 0.0f, sRGBfromNits(400.0f)); DrawGradient(x, y, WINDOW_WIDTH - 2 * x, 64.0f, 0.0f, sRGBfromNits(400.0f));
SDL_SetRenderColorScale(renderer, SDR_color_scale);
y += 64.0f; y += 64.0f;
y += TEXT_LINE_ADVANCE; y += TEXT_LINE_ADVANCE;
@ -437,7 +452,9 @@ static void RenderGradientDrawing(void)
DrawTextWhite(x, y, "HDR gradient (%d nits)", 1000); DrawTextWhite(x, y, "HDR gradient (%d nits)", 1000);
y += TEXT_LINE_ADVANCE; y += TEXT_LINE_ADVANCE;
SDL_SetRenderColorScale(renderer, HDR_color_scale);
DrawGradient(x, y, WINDOW_WIDTH - 2 * x, 64.0f, 0.0f, sRGBfromNits(1000)); DrawGradient(x, y, WINDOW_WIDTH - 2 * x, 64.0f, 0.0f, sRGBfromNits(1000));
SDL_SetRenderColorScale(renderer, SDR_color_scale);
y += 64.0f; y += 64.0f;
} }

View File

@ -646,6 +646,10 @@ static SDL_bool GetTextureForD3D11Frame(AVFrame *frame, SDL_Texture **texture)
SDL_QueryTexture(*texture, NULL, NULL, &texture_width, &texture_height); SDL_QueryTexture(*texture, NULL, NULL, &texture_width, &texture_height);
} }
if (!*texture || (UINT)texture_width != desc.Width || (UINT)texture_height != desc.Height) { if (!*texture || (UINT)texture_width != desc.Width || (UINT)texture_height != desc.Height) {
SDL_bool HDR_display = SDL_TRUE;
SDL_bool HDR_video = SDL_FALSE;
float display_white_level, video_white_level;
if (*texture) { if (*texture) {
SDL_DestroyTexture(*texture); SDL_DestroyTexture(*texture);
} }
@ -658,9 +662,11 @@ static SDL_bool GetTextureForD3D11Frame(AVFrame *frame, SDL_Texture **texture)
break; break;
case DXGI_FORMAT_P010: case DXGI_FORMAT_P010:
SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER, SDL_PIXELFORMAT_P010); SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER, SDL_PIXELFORMAT_P010);
HDR_video = SDL_TRUE;
break; break;
case DXGI_FORMAT_P016: case DXGI_FORMAT_P016:
SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER, SDL_PIXELFORMAT_P016); SDL_SetNumberProperty(props, SDL_PROP_TEXTURE_CREATE_FORMAT_NUMBER, SDL_PIXELFORMAT_P016);
HDR_video = SDL_TRUE;
break; break;
default: default:
/* This should be checked above */ /* This should be checked above */
@ -675,6 +681,20 @@ static SDL_bool GetTextureForD3D11Frame(AVFrame *frame, SDL_Texture **texture)
if (!*texture) { if (!*texture) {
return SDL_FALSE; return SDL_FALSE;
} }
if (HDR_video != HDR_display) {
/* Use some reasonable assumptions for white levels */
if (HDR_display) {
display_white_level = 200.0f; /* SDR white level */
video_white_level = 80.0f;
} else {
display_white_level = 80.0f;
video_white_level = 400.0f;
}
SDL_SetRenderColorScale(renderer, display_white_level / video_white_level);
} else {
SDL_SetRenderColorScale(renderer, 1.0f);
}
} }
ID3D11Resource *dx11_resource = SDL_GetProperty(SDL_GetTextureProperties(*texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER, NULL); ID3D11Resource *dx11_resource = SDL_GetProperty(SDL_GetTextureProperties(*texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_POINTER, NULL);