From 02d4a7aac5a8cf5ce52fc342fb405877f87d2267 Mon Sep 17 00:00:00 2001 From: sergeypdev Date: Mon, 28 Apr 2025 12:22:23 +0400 Subject: [PATCH] Start implementing UI for debug viz --- game/game.odin | 36 + game/ui/microui.odin | 1755 +++ game/ui/microui_default_atlas.odin | 16519 +++++++++++++++++++++++++++ game/ui/raylib.odin | 71 + 4 files changed, 18381 insertions(+) create mode 100644 game/ui/microui.odin create mode 100644 game/ui/microui_default_atlas.odin create mode 100644 game/ui/raylib.odin diff --git a/game/game.odin b/game/game.odin index abd735f..440652a 100644 --- a/game/game.odin +++ b/game/game.odin @@ -27,6 +27,7 @@ import "game:physics" import "game:physics/bvh" import "game:physics/collision" import "libs:tracy" +import "ui" import rl "vendor:raylib" import "vendor:raylib/rlgl" @@ -84,6 +85,8 @@ Game_Memory :: struct { assetman: assets.Asset_Manager, runtime_world: Runtime_World, es: Editor_State, + ui_context: ui.Context, + default_font: rl.Font, editor: bool, preview_bvh: int, preview_node: int, @@ -662,9 +665,33 @@ update :: proc() { cam.fovy = 60 cam.projection = .PERSPECTIVE + get_runtime_world().camera = cam } } + + { + ui.begin(&g_mem.ui_context) + defer ui.end(&g_mem.ui_context) + + if ui.window( + &g_mem.ui_context, + "Hello, world", + ui.Rect{x = 0, y = 0, w = 100, h = 100}, + ui.Options{.AUTO_SIZE}, + ) { + ui.layout_column(&g_mem.ui_context) + + ui.text(&g_mem.ui_context, "It Works!") + + ui.begin_line(&g_mem.ui_context, ui.Color{255, 0, 0, 255}) + defer ui.end_line(&g_mem.ui_context) + + ui.push_line_point(&g_mem.ui_context, {0, 0}) + ui.push_line_point(&g_mem.ui_context, {1, 1}) + } + } + update_runtime_world(get_runtime_world(), dt) } } @@ -923,6 +950,8 @@ draw :: proc() { rl.ORANGE, ) } + + ui.rl_draw(&g_mem.ui_context) } if g_mem.editor { @@ -1102,6 +1131,13 @@ game_init :: proc() { physics.init_physics_scene(&g_mem.runtime_world.world.physics_scene, 100) + g_mem.default_font = rl.GetFontDefault() + ui.init(&g_mem.ui_context) + + g_mem.ui_context.style.font = ui.Font(&g_mem.default_font) + g_mem.ui_context.text_width = ui.rl_measure_text_width + g_mem.ui_context.text_height = ui.rl_measure_text_height + game_hot_reloaded(g_mem) } diff --git a/game/ui/microui.odin b/game/ui/microui.odin new file mode 100644 index 0000000..c876427 --- /dev/null +++ b/game/ui/microui.odin @@ -0,0 +1,1755 @@ +/* +** Original work: Copyright (c) 2020 rxi +** Modified work: Copyright (c) 2020 oskarnp +** Modified work: Copyright (c) 2021 gingerBill +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and associated documentation files (the "Software"), to +** deal in the Software without restriction, including without limitation the +** rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +** sell copies of the Software, and to permit persons to whom the Software is +** furnished to do so, subject to the following conditions: +** +** The above copyright notice and this permission notice shall be included in +** all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +** FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +** IN THE SOFTWARE. +*/ + +// Extended version of microui to support more drawing operations + +package ui + +import "core:fmt" +import "core:math" +import "core:sort" +import "core:strconv" +import "core:strings" +import textedit "core:text/edit" + +COMMAND_LIST_SIZE :: #config(MICROUI_COMMAND_LIST_SIZE, 256 * 1024) +ROOT_LIST_SIZE :: #config(MICROUI_ROOT_LIST_SIZE, 32) +CONTAINER_STACK_SIZE :: #config(MICROUI_CONTAINER_STACK_SIZE, 32) +CLIP_STACK_SIZE :: #config(MICROUI_CLIP_STACK_SIZE, 32) +ID_STACK_SIZE :: #config(MICROUI_ID_STACK_SIZE, 32) +LAYOUT_STACK_SIZE :: #config(MICROUI_LAYOUT_STACK_SIZE, 16) +LINE_STACK_SIZE :: #config(MICROUI_LINE_STACK_SIZE, 16) +CONTAINER_POOL_SIZE :: #config(MICROUI_CONTAINER_POOL_SIZE, 48) +TREENODE_POOL_SIZE :: #config(MICROUI_TREENODE_POOL_SIZE, 48) +MAX_WIDTHS :: #config(MICROUI_MAX_WIDTHS, 16) +SLIDER_FMT :: #config(MICROUI_SLIDER_FMT, "%.2f") +MAX_FMT :: #config(MICROUI_MAX_FMT, 127) +MAX_TEXT_STORE :: #config(MICROUI_MAX_TEXT_STORE, 1024) + +MAX_LINE_SEGMENTS :: #config(MICROUI_LINE_SEGMENTS_POOL_SIZE, 4096) + +Clip :: enum u32 { + NONE, + PART, + ALL, +} + +Color_Type :: enum u32 { + TEXT, + SELECTION_BG, + BORDER, + WINDOW_BG, + TITLE_BG, + TITLE_TEXT, + PANEL_BG, + BUTTON, + BUTTON_HOVER = BUTTON + 1, + BUTTON_FOCUS = BUTTON + 2, + BASE, + BASE_HOVER = BASE + 1, + BASE_FOCUS = BASE + 2, + SCROLL_BASE, + SCROLL_THUMB, +} + +Icon :: enum u32 { + NONE, + CLOSE, + CHECK, + COLLAPSED, + EXPANDED, + RESIZE, +} + +Result :: enum u32 { + ACTIVE, + SUBMIT, + CHANGE, +} +Result_Set :: bit_set[Result;u32] + +Opt :: enum u32 { + ALIGN_CENTER, + ALIGN_RIGHT, + NO_INTERACT, + NO_FRAME, + NO_RESIZE, + NO_SCROLL, + NO_CLOSE, + NO_TITLE, + HOLD_FOCUS, + AUTO_SIZE, + POPUP, + CLOSED, + EXPANDED, +} +Options :: distinct bit_set[Opt;u32] + +Mouse :: enum u32 { + LEFT, + RIGHT, + MIDDLE, +} +Mouse_Set :: distinct bit_set[Mouse;u32] + +Key :: enum u32 { + SHIFT, + CTRL, + ALT, + BACKSPACE, + DELETE, + RETURN, + LEFT, + RIGHT, + HOME, + END, + A, + X, + C, + V, +} +Key_Set :: distinct bit_set[Key;u32] + +Id :: distinct u32 +Real :: f32 +Font :: distinct rawptr +Vec2 :: distinct [2]i32 +Vec2f :: [2]f32 +Rect :: struct { + x, y, w, h: i32, +} +Color :: [4]u8 +Frame_Index :: distinct i32 +Pool_Item :: struct { + id: Id, + last_update: Frame_Index, +} + + +Command_Variant :: union { + ^Command_Jump, + ^Command_Clip, + ^Command_Rect, + ^Command_Text, + ^Command_Icon, + ^Command_Line, +} +Command :: struct { + variant: Command_Variant, + size: i32, +} +Command_Jump :: struct { + using command: Command, + dst: rawptr, +} +Command_Clip :: struct { + using command: Command, + rect: Rect, +} +Command_Rect :: struct { + using command: Command, + rect: Rect, + color: Color, +} +Command_Text :: struct { + using command: Command, + font: Font, + pos: Vec2, + color: Color, + str: string, /* + string data (VLA) */ +} +Command_Icon :: struct { + using command: Command, + rect: Rect, + id: Icon, + color: Color, +} +Command_Line :: struct { + using command: Command, + first_segment: i32, + num_segments: i32, + color: Color, +} + + +Layout_Type :: enum { + NONE = 0, + RELATIVE = 1, + ABSOLUTE = 2, +} + +Layout :: struct { + body, next: Rect, + position, size, max: Vec2, + widths: [MAX_WIDTHS]i32, + items, item_index, next_row: i32, + next_type: Layout_Type, + indent: i32, +} + +Line :: struct { + first_segment: i32, + color: Color, + rect: Rect, +} + +Container :: struct { + head, tail: ^Command, + rect, body: Rect, + content_size: Vec2, + scroll: Vec2, + zindex: i32, + open: b32, +} + +Style :: struct { + font: Font, + size: Vec2, + padding: i32, + spacing: i32, + indent: i32, + title_height: i32, + footer_height: i32, + scrollbar_size: i32, + thumb_size: i32, + colors: [Color_Type]Color, +} + +Context :: struct { + /* callbacks */ + text_width: proc(font: Font, str: string) -> i32, + text_height: proc(font: Font) -> i32, + draw_frame: proc(ctx: ^Context, rect: Rect, colorid: Color_Type), + /* core state */ + _style: Style, + style: ^Style, + hover_id, focus_id, last_id: Id, + last_rect: Rect, + last_zindex: i32, + updated_focus: b32, + frame: Frame_Index, + hover_root, next_hover_root: ^Container, + scroll_target: ^Container, + number_edit_buf: [MAX_FMT]u8, + number_edit_len: int, + number_edit_id: Id, + /* stacks */ + command_list: Stack(u8, COMMAND_LIST_SIZE), + root_list: Stack(^Container, ROOT_LIST_SIZE), + container_stack: Stack(^Container, CONTAINER_STACK_SIZE), + clip_stack: Stack(Rect, CLIP_STACK_SIZE), + id_stack: Stack(Id, ID_STACK_SIZE), + layout_stack: Stack(Layout, LAYOUT_STACK_SIZE), + lines_stack: Stack(Line, LINE_STACK_SIZE), + /* retained state pools */ + container_pool: [CONTAINER_POOL_SIZE]Pool_Item, + containers: [CONTAINER_POOL_SIZE]Container, + treenode_pool: [TREENODE_POOL_SIZE]Pool_Item, + /* Arbitrary drawing pools, cleared every frame */ + line_segments_pool: [MAX_LINE_SEGMENTS]Vec2f, + line_segments_num: i32, + /* input state */ + mouse_pos, last_mouse_pos: Vec2, + mouse_delta, scroll_delta: Vec2, + mouse_down_bits: Mouse_Set, + mouse_pressed_bits: Mouse_Set, + mouse_released_bits: Mouse_Set, + key_down_bits, key_pressed_bits: Key_Set, + _text_store: [MAX_TEXT_STORE]u8, + text_input: strings.Builder, // uses `_text_store` as backing store with nil_allocator. + textbox_state: textedit.State, + textbox_offset: i32, +} + +Stack :: struct($T: typeid, $N: int) { + idx: i32, + items: [N]T, +} +push :: #force_inline proc(stk: ^$T/Stack($V, $N), val: V) { + assert(stk.idx < len(stk.items)) + stk.items[stk.idx] = val + stk.idx += 1 +} +pop :: #force_inline proc(stk: ^$T/Stack($V, $N)) { + assert(stk.idx > 0) + stk.idx -= 1 +} + +unclipped_rect := Rect{0, 0, 0x1000000, 0x1000000} + +default_style := Style { + font = nil, + size = {68, 10}, + padding = 5, + spacing = 4, + indent = 24, + title_height = 24, + footer_height = 20, + scrollbar_size = 12, + thumb_size = 8, + colors = { + .TEXT = {230, 230, 230, 255}, + .SELECTION_BG = {90, 90, 90, 255}, + .BORDER = {25, 25, 25, 255}, + .WINDOW_BG = {50, 50, 50, 255}, + .TITLE_BG = {25, 25, 25, 255}, + .TITLE_TEXT = {240, 240, 240, 255}, + .PANEL_BG = {0, 0, 0, 0}, + .BUTTON = {75, 75, 75, 255}, + .BUTTON_HOVER = {95, 95, 95, 255}, + .BUTTON_FOCUS = {115, 115, 115, 255}, + .BASE = {30, 30, 30, 255}, + .BASE_HOVER = {35, 35, 35, 255}, + .BASE_FOCUS = {40, 40, 40, 255}, + .SCROLL_BASE = {43, 43, 43, 255}, + .SCROLL_THUMB = {30, 30, 30, 255}, + }, +} + +expand_rect :: proc(rect: Rect, n: i32) -> Rect { + return Rect{rect.x - n, rect.y - n, rect.w + n * 2, rect.h + n * 2} +} + +intersect_rects :: proc(r1, r2: Rect) -> Rect { + x1 := max(r1.x, r2.x) + y1 := max(r1.y, r2.y) + x2 := min(r1.x + r1.w, r2.x + r2.w) + y2 := min(r1.y + r1.h, r2.y + r2.h) + if x2 < x1 {x2 = x1} + if y2 < y1 {y2 = y1} + return Rect{x1, y1, x2 - x1, y2 - y1} +} + +rect_overlaps_vec2 :: proc(r: Rect, p: Vec2) -> bool { + return p.x >= r.x && p.x < r.x + r.w && p.y >= r.y && p.y < r.y + r.h +} + +@(private) +default_draw_frame :: proc(ctx: ^Context, rect: Rect, colorid: Color_Type) { + draw_rect(ctx, rect, ctx.style.colors[colorid]) + if colorid == .SCROLL_BASE || colorid == .SCROLL_THUMB || colorid == .TITLE_BG { + return + } + if ctx.style.colors[.BORDER].a != 0 { /* draw border */ + draw_box(ctx, expand_rect(rect, 1), ctx.style.colors[.BORDER]) + } +} + +init :: proc( + ctx: ^Context, + set_clipboard: proc(user_data: rawptr, text: string) -> (ok: bool) = nil, + get_clipboard: proc(user_data: rawptr) -> (text: string, ok: bool) = nil, + clipboard_user_data: rawptr = nil, +) { + ctx^ = {} // zero memory + ctx.draw_frame = default_draw_frame + ctx._style = default_style + ctx.style = &ctx._style + ctx.text_input = strings.builder_from_bytes(ctx._text_store[:]) + + ctx.textbox_state.set_clipboard = set_clipboard + ctx.textbox_state.get_clipboard = get_clipboard + ctx.textbox_state.clipboard_user_data = clipboard_user_data +} + +begin :: proc(ctx: ^Context) { + assert(ctx.text_width != nil, "ctx.text_width is not set") + assert(ctx.text_height != nil, "ctx.text_height is not set") + ctx.command_list.idx = 0 + ctx.root_list.idx = 0 + ctx.line_segments_num = 0 + ctx.scroll_target = nil + ctx.hover_root = ctx.next_hover_root + ctx.next_hover_root = nil + ctx.mouse_delta.x = ctx.mouse_pos.x - ctx.last_mouse_pos.x + ctx.mouse_delta.y = ctx.mouse_pos.y - ctx.last_mouse_pos.y + ctx.frame += 1 +} + +end :: proc(ctx: ^Context) { + /* check stacks */ + assert(ctx.container_stack.idx == 0) + assert(ctx.clip_stack.idx == 0) + assert(ctx.id_stack.idx == 0) + assert(ctx.layout_stack.idx == 0) + assert(ctx.lines_stack.idx == 0) + + /* handle scroll input */ + if ctx.scroll_target != nil { + ctx.scroll_target.scroll.x += ctx.scroll_delta.x + ctx.scroll_target.scroll.y += ctx.scroll_delta.y + } + + /* unset focus if focus id was not touched this frame */ + if !ctx.updated_focus { + ctx.focus_id = 0 + } + ctx.updated_focus = false + + /* bring hover root to front if mouse was pressed */ + if mouse_pressed(ctx) && + ctx.next_hover_root != nil && + ctx.next_hover_root.zindex < ctx.last_zindex && + ctx.next_hover_root.zindex >= 0 { + bring_to_front(ctx, ctx.next_hover_root) + } + + /* reset input state */ + ctx.key_pressed_bits = {} // clear + strings.builder_reset(&ctx.text_input) + ctx.mouse_pressed_bits = {} // clear + ctx.mouse_released_bits = {} // clear + ctx.scroll_delta = Vec2{0, 0} + ctx.last_mouse_pos = ctx.mouse_pos + + /* sort root containers by zindex */ + n := ctx.root_list.idx + sort.quick_sort_proc(ctx.root_list.items[:n], proc(a, b: ^Container) -> int { + return int(a.zindex) - int(b.zindex) + }) + + /* set root container jump commands */ + for i: i32 = 0; i < n; i += 1 { + cnt := ctx.root_list.items[i] + /* if this is the first container then make the first command jump to it. + ** otherwise set the previous container's tail to jump to this one */ + if i == 0 { + cmd := (^Command_Jump)(&ctx.command_list.items[0]) + cmd.dst = rawptr(uintptr(cnt.head) + size_of(Command_Jump)) + } else { + prev := ctx.root_list.items[i - 1] + prev.tail.variant.(^Command_Jump).dst = rawptr( + uintptr(cnt.head) + size_of(Command_Jump), + ) + } + /* make the last container's tail jump to the end of command list */ + if i == n - 1 { + cnt.tail.variant.(^Command_Jump).dst = rawptr( + &ctx.command_list.items[ctx.command_list.idx], + ) + } + } +} + +set_focus :: proc(ctx: ^Context, id: Id) { + ctx.focus_id = id + ctx.updated_focus = true +} + + +get_id :: proc { + get_id_string, + get_id_bytes, + get_id_rawptr, + get_id_uintptr, +} +get_id_string :: #force_inline proc(ctx: ^Context, str: string) -> Id {return get_id_bytes( + ctx, + transmute([]byte)str, + )} +get_id_rawptr :: #force_inline proc( + ctx: ^Context, + data: rawptr, + size: int, +) -> Id {return get_id_bytes(ctx, ([^]u8)(data)[:size])} +get_id_uintptr :: #force_inline proc(ctx: ^Context, ptr: uintptr) -> Id { + ptr := ptr + return get_id_bytes(ctx, ([^]u8)(&ptr)[:size_of(ptr)]) +} +get_id_bytes :: proc(ctx: ^Context, bytes: []byte) -> Id { + /* 32bit fnv-1a hash */ + HASH_INITIAL :: 2166136261 + hash :: proc(hash: ^Id, data: []byte) { + size := len(data) + cptr := ([^]u8)(raw_data(data)) + for ; size > 0; size -= 1 { + hash^ = Id(u32(hash^) ~ u32(cptr[0])) * 16777619 + cptr = cptr[1:] + } + } + + idx := ctx.id_stack.idx + res := ctx.id_stack.items[idx - 1] if idx > 0 else HASH_INITIAL + hash(&res, bytes) + ctx.last_id = res + return res +} + +push_id :: proc { + push_id_string, + push_id_bytes, + push_id_rawptr, + push_id_uintptr, +} +push_id_string :: #force_inline proc(ctx: ^Context, str: string) {push( + &ctx.id_stack, + get_id(ctx, str), + )} +push_id_rawptr :: #force_inline proc(ctx: ^Context, data: rawptr, size: int) {push( + &ctx.id_stack, + get_id(ctx, data, size), + )} +push_id_uintptr :: #force_inline proc(ctx: ^Context, ptr: uintptr) {push( + &ctx.id_stack, + get_id(ctx, ptr), + )} +push_id_bytes :: #force_inline proc(ctx: ^Context, bytes: []byte) {push( + &ctx.id_stack, + get_id(ctx, bytes), + )} + +pop_id :: proc(ctx: ^Context) { + pop(&ctx.id_stack) +} + +push_clip_rect :: proc(ctx: ^Context, rect: Rect) { + last := get_clip_rect(ctx) + push(&ctx.clip_stack, intersect_rects(rect, last)) +} + +pop_clip_rect :: proc(ctx: ^Context) { + pop(&ctx.clip_stack) +} + +get_clip_rect :: proc(ctx: ^Context) -> Rect { + assert(ctx.clip_stack.idx > 0) + return ctx.clip_stack.items[ctx.clip_stack.idx - 1] +} + +check_clip :: proc(ctx: ^Context, r: Rect) -> Clip { + cr := get_clip_rect(ctx) + if r.x > cr.x + cr.w || r.x + r.w < cr.x || r.y > cr.y + cr.h || r.y + r.h < cr.y { + return .ALL + } + if r.x >= cr.x && r.x + r.w <= cr.x + cr.w && r.y >= cr.y && r.y + r.h <= cr.y + cr.h { + return .NONE + } + return .PART +} + +get_layout :: proc(ctx: ^Context) -> ^Layout { + return &ctx.layout_stack.items[ctx.layout_stack.idx - 1] +} + +@(private) +push_layout :: proc(ctx: ^Context, body: Rect, scroll: Vec2) { + layout: Layout + layout.body = Rect{body.x - scroll.x, body.y - scroll.y, body.w, body.h} + layout.max = Vec2{-0x1000000, -0x1000000} + push(&ctx.layout_stack, layout) + layout_row(ctx, {0}) +} + +@(private) +pop_container :: proc(ctx: ^Context) { + cnt := get_current_container(ctx) + layout := get_layout(ctx) + cnt.content_size.x = layout.max.x - layout.body.x + cnt.content_size.y = layout.max.y - layout.body.y + /* pop container, layout and id */ + pop(&ctx.container_stack) + pop(&ctx.layout_stack) + pop_id(ctx) +} + +get_current_container :: proc(ctx: ^Context) -> ^Container { + assert(ctx.container_stack.idx > 0) + return ctx.container_stack.items[ctx.container_stack.idx - 1] +} + +@(private) +internal_get_container :: proc(ctx: ^Context, id: Id, opt: Options) -> ^Container { + /* try to get existing container from pool */ + idx, ok := pool_get(ctx, ctx.container_pool[:], id) + if ok { + if ctx.containers[idx].open || .CLOSED not_in opt { + pool_update(ctx, &ctx.container_pool[idx]) + } + return &ctx.containers[idx] + } + if .CLOSED in opt {return nil} + /* container not found in pool: init new container */ + idx = pool_init(ctx, ctx.container_pool[:], id) + cnt := &ctx.containers[idx] + cnt^ = {} // clear memory + cnt.open = true + bring_to_front(ctx, cnt) + return cnt +} + +get_container :: proc(ctx: ^Context, name: string, opt := Options{}) -> ^Container { + id := get_id(ctx, name) + return internal_get_container(ctx, id, opt) +} + +bring_to_front :: proc(ctx: ^Context, cnt: ^Container) { + ctx.last_zindex += 1 + cnt.zindex = ctx.last_zindex +} + +/*============================================================================ +** pool +**============================================================================*/ + +pool_init :: proc(ctx: ^Context, items: []Pool_Item, id: Id) -> int { + f := ctx.frame + n := -1 + for _, i in items { + if items[i].last_update < f { + f = items[i].last_update + n = i + } + } + assert(n > -1) + items[n].id = id + pool_update(ctx, &items[n]) + return n +} + +pool_get :: proc(ctx: ^Context, items: []Pool_Item, id: Id) -> (int, bool) { + for _, i in items { + if items[i].id == id { + return i, true + } + } + return -1, false +} + +pool_update :: proc(ctx: ^Context, item: ^Pool_Item) { + item.last_update = ctx.frame +} + +/*============================================================================ +** input handlers +**============================================================================*/ + +input_mouse_move :: proc(ctx: ^Context, x, y: i32) { + ctx.mouse_pos = Vec2{x, y} +} + +input_mouse_down :: proc(ctx: ^Context, x, y: i32, btn: Mouse) { + input_mouse_move(ctx, x, y) + ctx.mouse_down_bits += {btn} + ctx.mouse_pressed_bits += {btn} +} + +input_mouse_up :: proc(ctx: ^Context, x, y: i32, btn: Mouse) { + input_mouse_move(ctx, x, y) + ctx.mouse_down_bits -= {btn} + ctx.mouse_released_bits += {btn} +} + +input_scroll :: proc(ctx: ^Context, x, y: i32) { + ctx.scroll_delta.x += x + ctx.scroll_delta.y += y +} + +input_key_down :: proc(ctx: ^Context, key: Key) { + ctx.key_pressed_bits += {key} + ctx.key_down_bits += {key} +} + +input_key_up :: proc(ctx: ^Context, key: Key) { + ctx.key_down_bits -= {key} +} + +input_text :: proc(ctx: ^Context, text: string) { + strings.write_string(&ctx.text_input, text) +} + +/*============================================================================ +** commandlist +**============================================================================*/ + +push_command :: proc(ctx: ^Context, $Type: typeid, extra_size := 0) -> ^Type { + size := i32(size_of(Type) + extra_size) + cmd := transmute(^Type)&ctx.command_list.items[ctx.command_list.idx] + assert(ctx.command_list.idx + size < COMMAND_LIST_SIZE) + ctx.command_list.idx += size + cmd.variant = cmd + cmd.size = size + return cmd +} + +next_command :: proc "contextless" (ctx: ^Context, pcmd: ^^Command) -> bool { + cmd := pcmd^ + defer pcmd^ = cmd + if cmd != nil { + cmd = (^Command)(uintptr(cmd) + uintptr(cmd.size)) + } else { + cmd = (^Command)(&ctx.command_list.items[0]) + } + invalid_command :: #force_inline proc "contextless" (ctx: ^Context) -> ^Command { + return (^Command)(&ctx.command_list.items[ctx.command_list.idx]) + } + for cmd != invalid_command(ctx) { + if jmp, ok := cmd.variant.(^Command_Jump); ok { + cmd = (^Command)(jmp.dst) + continue + } + return true + } + return false +} + +next_command_iterator :: proc "contextless" ( + ctx: ^Context, + pcm: ^^Command, +) -> ( + Command_Variant, + bool, +) { + if next_command(ctx, pcm) { + return pcm^.variant, true + } + return nil, false +} + +@(private) +push_jump :: proc(ctx: ^Context, dst: ^Command) -> ^Command { + cmd := push_command(ctx, Command_Jump) + cmd.dst = dst + return cmd +} + +set_clip :: proc(ctx: ^Context, rect: Rect) { + cmd := push_command(ctx, Command_Clip) + cmd.rect = rect +} + +draw_rect :: proc(ctx: ^Context, rect: Rect, color: Color) { + rect := rect + rect = intersect_rects(rect, get_clip_rect(ctx)) + if rect.w > 0 && rect.h > 0 { + cmd := push_command(ctx, Command_Rect) + cmd.rect = rect + cmd.color = color + } +} + +draw_box :: proc(ctx: ^Context, rect: Rect, color: Color) { + draw_rect(ctx, Rect{rect.x + 1, rect.y, rect.w - 2, 1}, color) + draw_rect(ctx, Rect{rect.x + 1, rect.y + rect.h - 1, rect.w - 2, 1}, color) + draw_rect(ctx, Rect{rect.x, rect.y, 1, rect.h}, color) + draw_rect(ctx, Rect{rect.x + rect.w - 1, rect.y, 1, rect.h}, color) +} + +draw_text :: proc(ctx: ^Context, font: Font, str: string, pos: Vec2, color: Color) { + rect := Rect{pos.x, pos.y, ctx.text_width(font, str), ctx.text_height(font)} + clipped := check_clip(ctx, rect) + switch clipped { + case .NONE: // okay + case .ALL: + return + case .PART: + set_clip(ctx, get_clip_rect(ctx)) + } + /* add command */ + text_cmd := push_command(ctx, Command_Text, len(str)) + text_cmd.pos = pos + text_cmd.color = color + text_cmd.font = font + /* copy string */ + dst_str := ([^]byte)(text_cmd)[size_of(Command_Text):][:len(str)] + copy(dst_str, str) + text_cmd.str = string(dst_str) + /* reset clipping if it was set */ + if clipped != .NONE { + set_clip(ctx, unclipped_rect) + } +} + +draw_icon :: proc(ctx: ^Context, id: Icon, rect: Rect, color: Color) { + /* do clip command if the rect isn't fully contained within the cliprect */ + clipped := check_clip(ctx, rect) + switch clipped { + case .NONE: // okay + case .ALL: + return + case .PART: + set_clip(ctx, get_clip_rect(ctx)) + } + /* do icon command */ + cmd := push_command(ctx, Command_Icon) + cmd.id = id + cmd.rect = rect + cmd.color = color + /* reset clipping if it was set */ + if clipped != .NONE { + set_clip(ctx, unclipped_rect) + } +} + +get_line :: proc(ctx: ^Context) -> ^Line { + return &ctx.lines_stack.items[ctx.lines_stack.idx - 1] +} + +begin_line :: proc(ctx: ^Context, color: Color) { + line: Line + line.first_segment = ctx.line_segments_num + line.color = color + line.rect = layout_next(ctx) + + push(&ctx.lines_stack, line) +} + +end_line :: proc(ctx: ^Context) { + line: Line = get_line(ctx)^ + pop(&ctx.lines_stack) + + first_segment := line.first_segment + num_segments := ctx.line_segments_num - first_segment + + cmd := push_command(ctx, Command_Line) + cmd.first_segment = first_segment + cmd.num_segments = num_segments + cmd.color = line.color +} + +push_line_point :: proc(ctx: ^Context, p: Vec2f) { + line := get_line(ctx) + origin := Vec2f{f32(line.rect.x), f32(line.rect.y)} + size := Vec2f{f32(line.rect.w), f32(line.rect.h)} + ctx.line_segments_pool[ctx.line_segments_num] = p * size + origin + ctx.line_segments_num += 1 +} + +get_line_segments :: proc(ctx: ^Context, first_segment: i32, num_segments: i32) -> []Vec2f { + return ctx.line_segments_pool[first_segment:num_segments] +} + +/*============================================================================ +** layout +**============================================================================*/ + +layout_begin_column :: proc(ctx: ^Context) { + push_layout(ctx, layout_next(ctx), Vec2{0, 0}) +} + +layout_end_column :: proc(ctx: ^Context) { + b := get_layout(ctx) + pop(&ctx.layout_stack) + /* inherit position/next_row/max from child layout if they are greater */ + a := get_layout(ctx) + a.position.x = max(a.position.x, b.position.x + b.body.x - a.body.x) + a.next_row = max(a.next_row, b.next_row + b.body.y - a.body.y) + a.max.x = max(a.max.x, b.max.x) + a.max.y = max(a.max.y, b.max.y) +} + +@(deferred_in = layout_end_column) +layout_column :: proc(ctx: ^Context) -> bool { + layout_begin_column(ctx) + return true +} + +layout_row :: proc(ctx: ^Context, widths: []i32, height: i32 = 0) { + layout := get_layout(ctx) + items := len(widths) + if len(widths) > 0 { + items = copy(layout.widths[:], widths[:]) + } + layout.items = i32(items) + layout.position = Vec2{layout.indent, layout.next_row} + layout.size.y = height + layout.item_index = 0 +} + +layout_row_items :: proc(ctx: ^Context, items: i32, height: i32 = 0) { + layout := get_layout(ctx) + layout.items = items + layout.position = Vec2{layout.indent, layout.next_row} + layout.size.y = height + layout.item_index = 0 +} + + +layout_width :: proc(ctx: ^Context, width: i32) { + get_layout(ctx).size.x = width +} + +layout_height :: proc(ctx: ^Context, height: i32) { + get_layout(ctx).size.y = height +} + +layout_set_next :: proc(ctx: ^Context, r: Rect, relative: bool) { + layout := get_layout(ctx) + layout.next = r + layout.next_type = .RELATIVE if relative else .ABSOLUTE +} + +layout_next :: proc(ctx: ^Context) -> (res: Rect) { + layout := get_layout(ctx) + style := ctx.style + defer ctx.last_rect = res + + if layout.next_type != .NONE { + /* handle rect set by `layout_set_next` */ + type := layout.next_type + layout.next_type = .NONE + res = layout.next + if type == .ABSOLUTE { + return + } + } else { + /* handle next row */ + if layout.item_index == layout.items { + layout_row_items(ctx, layout.items, layout.size.y) + } + + /* position */ + res.x = layout.position.x + res.y = layout.position.y + + /* size */ + res.w = layout.items > 0 ? layout.widths[layout.item_index] : layout.size.x + res.h = layout.size.y + if res.w == 0 {res.w = style.size.x + style.padding * 2} + if res.h == 0 {res.h = style.size.y + style.padding * 2} + if res.w < 0 {res.w += layout.body.w - res.x + 1} + if res.h < 0 {res.h += layout.body.h - res.y + 1} + + layout.item_index += 1 + } + + /* update position */ + layout.position.x += res.w + style.spacing + layout.next_row = max(layout.next_row, res.y + res.h + style.spacing) + + /* apply body offset */ + res.x += layout.body.x + res.y += layout.body.y + + /* update max position */ + layout.max.x = max(layout.max.x, res.x + res.w) + layout.max.y = max(layout.max.y, res.y + res.h) + return +} + +/*============================================================================ +** controls +**============================================================================*/ + +@(private) +in_hover_root :: proc(ctx: ^Context) -> bool { + for i := ctx.container_stack.idx - 1; i >= 0; i -= 1 { + if ctx.container_stack.items[i] == ctx.hover_root { + return true + } + /* only root containers have their `head` field set; stop searching if we've + ** reached the current root container */ + if ctx.container_stack.items[i].head != nil { + break + } + } + return false +} + +draw_control_frame :: proc( + ctx: ^Context, + id: Id, + rect: Rect, + colorid: Color_Type, + opt := Options{}, +) { + if .NO_FRAME in opt { + return + } + assert(colorid == .BUTTON || colorid == .BASE) + colorid := colorid + colorid = Color_Type( + int(colorid) + int((ctx.focus_id == id) ? 2 : (ctx.hover_id == id) ? 1 : 0), + ) + ctx.draw_frame(ctx, rect, colorid) +} + +draw_control_text :: proc( + ctx: ^Context, + str: string, + rect: Rect, + colorid: Color_Type, + opt := Options{}, +) { + pos: Vec2 + font := ctx.style.font + tw := ctx.text_width(font, str) + push_clip_rect(ctx, rect) + pos.y = rect.y + (rect.h - ctx.text_height(font)) / 2 + if .ALIGN_CENTER in opt { + pos.x = rect.x + (rect.w - tw) / 2 + } else if .ALIGN_RIGHT in opt { + pos.x = rect.x + rect.w - tw - ctx.style.padding + } else { + pos.x = rect.x + ctx.style.padding + } + draw_text(ctx, font, str, pos, ctx.style.colors[colorid]) + pop_clip_rect(ctx) +} + +mouse_over :: proc(ctx: ^Context, rect: Rect) -> bool { + return( + rect_overlaps_vec2(rect, ctx.mouse_pos) && + rect_overlaps_vec2(get_clip_rect(ctx), ctx.mouse_pos) && + in_hover_root(ctx) \ + ) +} + +update_control :: proc(ctx: ^Context, id: Id, rect: Rect, opt := Options{}) { + mouseover := mouse_over(ctx, rect) + + if ctx.focus_id == id { + ctx.updated_focus = true + } + if .NO_INTERACT in opt { + return + } + if mouseover && !mouse_down(ctx) { + ctx.hover_id = id + } + + if ctx.focus_id == id { + if mouse_pressed(ctx) && !mouseover { + set_focus(ctx, 0) + } + if !mouse_down(ctx) && .HOLD_FOCUS not_in opt { + set_focus(ctx, 0) + } + } + + if ctx.hover_id == id { + if mouse_pressed(ctx) { + set_focus(ctx, id) + } else if !mouseover { + ctx.hover_id = 0 + } + } +} + +text :: proc(ctx: ^Context, text: string) { + text := text + font := ctx.style.font + color := ctx.style.colors[.TEXT] + layout_begin_column(ctx) + layout_row(ctx, {-1}, ctx.text_height(font)) + for len(text) > 0 { + w: i32 + start: int + end: int = len(text) + r := layout_next(ctx) + for ch, i in text { + if ch == ' ' || ch == '\n' { + word := text[start:i] + w += ctx.text_width(font, word) + if w > r.w && start != 0 { + end = start + break + } + w += ctx.text_width(font, text[i:i + 1]) + if ch == '\n' { + end = i + 1 + break + } + start = i + 1 + } + } + draw_text(ctx, font, text[:end], Vec2{r.x, r.y}, color) + text = text[end:] + } + layout_end_column(ctx) +} + +label :: proc(ctx: ^Context, text: string) { + draw_control_text(ctx, text, layout_next(ctx), .TEXT) +} + +button :: proc( + ctx: ^Context, + label: string, + icon: Icon = .NONE, + opt: Options = {.ALIGN_CENTER}, +) -> ( + res: Result_Set, +) { + id := len(label) > 0 ? get_id(ctx, label) : get_id(ctx, uintptr(icon)) + r := layout_next(ctx) + update_control(ctx, id, r, opt) + /* handle click */ + if ctx.mouse_pressed_bits == {.LEFT} && ctx.focus_id == id { + res += {.SUBMIT} + } + /* draw */ + draw_control_frame(ctx, id, r, .BUTTON, opt) + if len(label) > 0 { + draw_control_text(ctx, label, r, .TEXT, opt) + } + if icon != .NONE { + draw_icon(ctx, icon, r, ctx.style.colors[.TEXT]) + } + return +} + +checkbox :: proc(ctx: ^Context, label: string, state: ^bool) -> (res: Result_Set) { + id := get_id(ctx, uintptr(state)) + r := layout_next(ctx) + box := Rect{r.x, r.y, r.h, r.h} + update_control(ctx, id, r, {}) + /* handle click */ + if .LEFT in ctx.mouse_released_bits && ctx.hover_id == id { + res += {.CHANGE} + state^ = !state^ + } + /* draw */ + draw_control_frame(ctx, id, box, .BASE, {}) + if state^ { + draw_icon(ctx, .CHECK, box, ctx.style.colors[.TEXT]) + } + r = Rect{r.x + box.w, r.y, r.w - box.w, r.h} + draw_control_text(ctx, label, r, .TEXT) + return +} + +textbox_raw :: proc( + ctx: ^Context, + textbuf: []u8, + textlen: ^int, + id: Id, + r: Rect, + opt := Options{}, +) -> ( + res: Result_Set, +) { + update_control(ctx, id, r, opt | {.HOLD_FOCUS}) + + font := ctx.style.font + + if ctx.focus_id == id { + /* create a builder backed by the user's buffer */ + builder := strings.builder_from_bytes(textbuf) + non_zero_resize(&builder.buf, textlen^) + ctx.textbox_state.builder = &builder + if ctx.textbox_state.id != u64(id) { + ctx.textbox_state.id = u64(id) + ctx.textbox_state.selection = {} + } + + /* check selection bounds */ + if ctx.textbox_state.selection[0] > textlen^ || ctx.textbox_state.selection[1] > textlen^ { + ctx.textbox_state.selection = {} + } + + /* handle text input */ + if strings.builder_len(ctx.text_input) > 0 { + if textedit.input_text(&ctx.textbox_state, strings.to_string(ctx.text_input)) > 0 { + textlen^ = strings.builder_len(builder) + res += {.CHANGE} + } + } + /* handle ctrl+a */ + if .A in ctx.key_pressed_bits && + .CTRL in ctx.key_down_bits && + .ALT not_in ctx.key_down_bits { + ctx.textbox_state.selection = {textlen^, 0} + } + /* handle ctrl+x */ + if .X in ctx.key_pressed_bits && + .CTRL in ctx.key_down_bits && + .ALT not_in ctx.key_down_bits { + if textedit.cut(&ctx.textbox_state) { + textlen^ = strings.builder_len(builder) + res += {.CHANGE} + } + } + /* handle ctrl+c */ + if .C in ctx.key_pressed_bits && + .CTRL in ctx.key_down_bits && + .ALT not_in ctx.key_down_bits { + textedit.copy(&ctx.textbox_state) + } + /* handle ctrl+v */ + if .V in ctx.key_pressed_bits && + .CTRL in ctx.key_down_bits && + .ALT not_in ctx.key_down_bits { + if textedit.paste(&ctx.textbox_state) { + textlen^ = strings.builder_len(builder) + res += {.CHANGE} + } + } + /* handle left/right */ + if .LEFT in ctx.key_pressed_bits { + move: textedit.Translation = .Word_Left if .CTRL in ctx.key_down_bits else .Left + if .SHIFT in ctx.key_down_bits { + textedit.select_to(&ctx.textbox_state, move) + } else { + textedit.move_to(&ctx.textbox_state, move) + } + } + if .RIGHT in ctx.key_pressed_bits { + move: textedit.Translation = .Word_Right if .CTRL in ctx.key_down_bits else .Right + if .SHIFT in ctx.key_down_bits { + textedit.select_to(&ctx.textbox_state, move) + } else { + textedit.move_to(&ctx.textbox_state, move) + } + } + /* handle home/end */ + if .HOME in ctx.key_pressed_bits { + if .SHIFT in ctx.key_down_bits { + textedit.select_to(&ctx.textbox_state, .Start) + } else { + textedit.move_to(&ctx.textbox_state, .Start) + } + } + if .END in ctx.key_pressed_bits { + if .SHIFT in ctx.key_down_bits { + textedit.select_to(&ctx.textbox_state, .End) + } else { + textedit.move_to(&ctx.textbox_state, .End) + } + } + /* handle backspace/delete */ + if .BACKSPACE in ctx.key_pressed_bits && textlen^ > 0 { + move: textedit.Translation = .Word_Left if .CTRL in ctx.key_down_bits else .Left + textedit.delete_to(&ctx.textbox_state, move) + textlen^ = strings.builder_len(builder) + res += {.CHANGE} + } + if .DELETE in ctx.key_pressed_bits && textlen^ > 0 { + move: textedit.Translation = .Word_Right if .CTRL in ctx.key_down_bits else .Right + textedit.delete_to(&ctx.textbox_state, move) + textlen^ = strings.builder_len(builder) + res += {.CHANGE} + } + /* handle return */ + if .RETURN in ctx.key_pressed_bits { + set_focus(ctx, 0) + res += {.SUBMIT} + } + + /* handle click/drag */ + if .LEFT in ctx.mouse_down_bits { + idx := textlen^ + for i in 0 ..< textlen^ { + /* skip continuation bytes */ + if textbuf[i] >= 0x80 && textbuf[i] < 0xc0 { + continue + } + if ctx.mouse_pos.x < + r.x + ctx.textbox_offset + ctx.text_width(font, string(textbuf[:i])) { + idx = i + break + } + } + ctx.textbox_state.selection[0] = idx + if .LEFT in ctx.mouse_pressed_bits && .SHIFT not_in ctx.key_down_bits { + ctx.textbox_state.selection[1] = idx + } + } + } + + textstr := string(textbuf[:textlen^]) + + /* draw */ + draw_control_frame(ctx, id, r, .BASE, opt) + if ctx.focus_id == id { + text_color := ctx.style.colors[.TEXT] + sel_color := ctx.style.colors[.SELECTION_BG] + textw := ctx.text_width(font, textstr) + texth := ctx.text_height(font) + headx := ctx.text_width(font, textstr[:ctx.textbox_state.selection[0]]) + tailx := ctx.text_width(font, textstr[:ctx.textbox_state.selection[1]]) + ofmin := max(ctx.style.padding - headx, r.w - textw - ctx.style.padding) + ofmax := min(r.w - headx - ctx.style.padding, ctx.style.padding) + ctx.textbox_offset = clamp(ctx.textbox_offset, ofmin, ofmax) + textx := r.x + ctx.textbox_offset + texty := r.y + (r.h - texth) / 2 + push_clip_rect(ctx, r) + draw_rect( + ctx, + Rect{textx + min(headx, tailx), texty, abs(headx - tailx), texth}, + sel_color, + ) + draw_text(ctx, font, textstr, Vec2{textx, texty}, text_color) + draw_rect(ctx, Rect{textx + headx, texty, 1, texth}, text_color) + pop_clip_rect(ctx) + } else { + draw_control_text(ctx, textstr, r, .TEXT, opt) + } + + return +} + +@(private) +parse_real :: #force_inline proc(s: string) -> (Real, bool) { + f, ok := strconv.parse_f64(s) + return Real(f), ok +} + +number_textbox :: proc(ctx: ^Context, value: ^Real, r: Rect, id: Id, fmt_string: string) -> bool { + if ctx.mouse_pressed_bits == {.LEFT} && .SHIFT in ctx.key_down_bits && ctx.hover_id == id { + ctx.number_edit_id = id + nstr := fmt.bprintf(ctx.number_edit_buf[:], fmt_string, value^) + ctx.number_edit_len = len(nstr) + } + if ctx.number_edit_id == id { + res := textbox_raw(ctx, ctx.number_edit_buf[:], &ctx.number_edit_len, id, r, {}) + if .SUBMIT in res || ctx.focus_id != id { + value^, _ = parse_real(string(ctx.number_edit_buf[:ctx.number_edit_len])) + ctx.number_edit_id = 0 + } else { + return true + } + } + return false +} + +textbox :: proc(ctx: ^Context, buf: []u8, textlen: ^int, opt := Options{}) -> Result_Set { + id := get_id(ctx, uintptr(&buf[0])) + r := layout_next(ctx) + return textbox_raw(ctx, buf, textlen, id, r, opt) +} + +slider :: proc( + ctx: ^Context, + value: ^Real, + low, high: Real, + step: Real = 0.0, + fmt_string: string = SLIDER_FMT, + opt: Options = {.ALIGN_CENTER}, +) -> ( + res: Result_Set, +) { + last := value^ + v := last + id := get_id(ctx, uintptr(value)) + base := layout_next(ctx) + + /* handle text input mode */ + if number_textbox(ctx, &v, base, id, fmt_string) { + return + } + + /* handle normal mode */ + update_control(ctx, id, base, opt) + + /* handle input */ + if ctx.focus_id == id && ctx.mouse_down_bits == {.LEFT} { + v = low + Real(ctx.mouse_pos.x - base.x) * (high - low) / Real(base.w) + if step != 0.0 { + v = math.floor((v + step / 2) / step) * step + } + } + /* clamp and store value, update res */ + v = clamp(v, low, high);value^ = v + if last != v { + res += {.CHANGE} + } + + /* draw base */ + draw_control_frame(ctx, id, base, .BASE, opt) + /* draw thumb */ + w := ctx.style.thumb_size + x := i32((v - low) * Real(base.w - w) / (high - low)) + thumb := Rect{base.x + x, base.y, w, base.h} + draw_control_frame(ctx, id, thumb, .BUTTON, opt) + /* draw text */ + text_buf: [4096]byte + draw_control_text(ctx, fmt.bprintf(text_buf[:], fmt_string, v), base, .TEXT, opt) + + return +} + +number :: proc( + ctx: ^Context, + value: ^Real, + step: Real, + fmt_string: string = SLIDER_FMT, + opt: Options = {.ALIGN_CENTER}, +) -> ( + res: Result_Set, +) { + id := get_id(ctx, uintptr(value)) + base := layout_next(ctx) + last := value^ + + /* handle text input mode */ + if number_textbox(ctx, value, base, id, fmt_string) { + return + } + + /* handle normal mode */ + update_control(ctx, id, base, opt) + + /* handle input */ + if ctx.focus_id == id && ctx.mouse_down_bits == {.LEFT} { + value^ += Real(ctx.mouse_delta.x) * step + } + /* set flag if value changed */ + if value^ != last { + res += {.CHANGE} + } + + /* draw base */ + draw_control_frame(ctx, id, base, .BASE, opt) + /* draw text */ + text_buf: [4096]byte + draw_control_text(ctx, fmt.bprintf(text_buf[:], fmt_string, value^), base, .TEXT, opt) + + return +} + +@(private) +_header :: proc(ctx: ^Context, label: string, is_treenode: bool, opt := Options{}) -> Result_Set { + id := get_id(ctx, label) + idx, active := pool_get(ctx, ctx.treenode_pool[:], id) + expanded := .EXPANDED in opt ? !active : active + layout_row(ctx, {-1}) + r := layout_next(ctx) + update_control(ctx, id, r, {}) + /* handle click */ + if ctx.mouse_pressed_bits == {.LEFT} && ctx.focus_id == id { + active = !active + } + /* update pool ref */ + if idx >= 0 { + if active { + pool_update(ctx, &ctx.treenode_pool[idx]) + } else { + ctx.treenode_pool[idx] = {} + } + } else if active { + pool_init(ctx, ctx.treenode_pool[:], id) + } + /* draw */ + if is_treenode { + if ctx.hover_id == id { + ctx.draw_frame(ctx, r, .BUTTON_HOVER) + } + } else { + draw_control_frame(ctx, id, r, .BUTTON) + } + draw_icon( + ctx, + expanded ? .EXPANDED : .COLLAPSED, + Rect{r.x, r.y, r.h, r.h}, + ctx.style.colors[.TEXT], + ) + r.x += r.h - ctx.style.padding + r.w -= r.h - ctx.style.padding + draw_control_text(ctx, label, r, .TEXT) + return expanded ? {.ACTIVE} : {} +} + +header :: proc(ctx: ^Context, label: string, opt := Options{}) -> Result_Set { + return _header(ctx, label, false, opt) +} + +begin_treenode :: proc(ctx: ^Context, label: string, opt := Options{}) -> Result_Set { + res := _header(ctx, label, true, opt) + if .ACTIVE in res { + get_layout(ctx).indent += ctx.style.indent + push(&ctx.id_stack, ctx.last_id) + } + return res +} + +end_treenode :: proc(ctx: ^Context) { + get_layout(ctx).indent -= ctx.style.indent + pop_id(ctx) +} + + +scoped_end_treenode :: proc(ctx: ^Context, _: string, _: Options, result_set: Result_Set) { + if result_set != nil { + end_treenode(ctx) + } +} + +/* This is scoped and is intended to be use in the condition of a if-statement */ +@(deferred_in_out = scoped_end_treenode) +treenode :: proc(ctx: ^Context, label: string, opt := Options{}) -> Result_Set { + return begin_treenode(ctx, label, opt) +} + + +@(private) +scrollbar :: proc(ctx: ^Context, cnt: ^Container, _b: ^Rect, cs: Vec2, id_string: string, i: int) { + b := (^struct { + pos, size: [2]i32, + })(_b) + #assert(size_of(b^) == size_of(_b^)) + + /* only add scrollbar if content size is larger than body */ + maxscroll := cs[i] - b.size[i] + contentsize := b.size[i] + if maxscroll > 0 && contentsize > 0 { + id := get_id(ctx, id_string) + + /* get sizing / positioning */ + base := b^ + base.pos[1 - i] = b.pos[1 - i] + b.size[1 - i] + base.size[1 - i] = ctx.style.scrollbar_size + + /* handle input */ + update_control(ctx, id, transmute(Rect)base) + if ctx.focus_id == id && .LEFT in ctx.mouse_down_bits { + cnt.scroll[i] += ctx.mouse_delta[i] * cs[i] / base.size[i] + } + /* clamp scroll to limits */ + cnt.scroll[i] = clamp(cnt.scroll[i], 0, maxscroll) + + /* draw base and thumb */ + ctx.draw_frame(ctx, transmute(Rect)base, .SCROLL_BASE) + thumb := base + thumb.size[i] = max(ctx.style.thumb_size, base.size[i] * b.size[i] / cs[i]) + thumb.pos[i] += cnt.scroll[i] * (base.size[i] - thumb.size[i]) / maxscroll + ctx.draw_frame(ctx, transmute(Rect)thumb, .SCROLL_THUMB) + + /* set this as the scroll_target (will get scrolled on mousewheel) */ + /* if the mouse is over it */ + if mouse_over(ctx, transmute(Rect)b^) { + ctx.scroll_target = cnt + } + } else { + cnt.scroll[i] = 0 + } +} + +@(private) +scrollbars :: proc(ctx: ^Context, cnt: ^Container, body: ^Rect) { + sz := ctx.style.scrollbar_size + cs := cnt.content_size + cs.x += ctx.style.padding * 2 + cs.y += ctx.style.padding * 2 + push_clip_rect(ctx, body^) + /* resize body to make room for scrollbars */ + if cs.y > cnt.body.h {body.w -= sz} + if cs.x > cnt.body.w {body.h -= sz} + /* to create a horizontal or vertical scrollbar almost-identical code is + ** used; only the references to `x|y` `w|h` need to be switched */ + scrollbar(ctx, cnt, body, cs, "!scrollbarv", 1) // 1 = y,h + scrollbar(ctx, cnt, body, cs, "!scrollbarh", 0) // 0 = x,w + pop_clip_rect(ctx) +} + +@(private) +push_container_body :: proc(ctx: ^Context, cnt: ^Container, body: Rect, opt := Options{}) { + body := body + if .NO_SCROLL not_in opt { + scrollbars(ctx, cnt, &body) + } + push_layout(ctx, expand_rect(body, -ctx.style.padding), cnt.scroll) + cnt.body = body +} + +@(private) +begin_root_container :: proc(ctx: ^Context, cnt: ^Container) { + push(&ctx.container_stack, cnt) + /* push container to roots list and push head command */ + push(&ctx.root_list, cnt) + cnt.head = push_jump(ctx, nil) + /* set as hover root if the mouse is overlapping this container and it has a + ** higher zindex than the current hover root */ + if rect_overlaps_vec2(cnt.rect, ctx.mouse_pos) && + (ctx.next_hover_root == nil || cnt.zindex > ctx.next_hover_root.zindex) { + ctx.next_hover_root = cnt + } + /* clipping is reset here in case a root-container is made within + ** another root-containers's begin/end block; this prevents the inner + ** root-container being clipped to the outer */ + push(&ctx.clip_stack, unclipped_rect) +} + +@(private) +end_root_container :: proc(ctx: ^Context) { + /* push tail 'goto' jump command and set head 'skip' command. the final steps + ** on initing these are done in end() */ + cnt := get_current_container(ctx) + cnt.tail = push_jump(ctx, nil) + cnt.head.variant.(^Command_Jump).dst = &ctx.command_list.items[ctx.command_list.idx] + /* pop base clip rect and container */ + pop_clip_rect(ctx) + pop_container(ctx) +} + +begin_window :: proc(ctx: ^Context, title: string, rect: Rect, opt := Options{}) -> bool { + assert(title != "", "missing window title") + id := get_id(ctx, title) + cnt := internal_get_container(ctx, id, opt) + if cnt == nil || !cnt.open { + return false + } + push(&ctx.id_stack, id) + rect := rect + + if cnt.rect.w == 0 { + cnt.rect = rect + } + begin_root_container(ctx, cnt) + rect = cnt.rect + body := cnt.rect + + /* draw frame */ + if .NO_FRAME not_in opt { + ctx.draw_frame(ctx, rect, .WINDOW_BG) + } + + /* do title bar */ + if .NO_TITLE not_in opt { + tr := rect + tr.h = ctx.style.title_height + ctx.draw_frame(ctx, tr, .TITLE_BG) + + /* do title text */ + if .NO_TITLE not_in opt { + tid := get_id(ctx, "!title") + update_control(ctx, tid, tr, opt) + draw_control_text(ctx, title, tr, .TITLE_TEXT, opt) + if tid == ctx.focus_id && ctx.mouse_down_bits == {.LEFT} { + cnt.rect.x += ctx.mouse_delta.x + cnt.rect.y += ctx.mouse_delta.y + } + body.y += tr.h + body.h -= tr.h + } + + /* do `close` button */ + if .NO_CLOSE not_in opt { + cid := get_id(ctx, "!close") + r := Rect{tr.x + tr.w - tr.h, tr.y, tr.h, tr.h} + tr.w -= r.w + draw_icon(ctx, .CLOSE, r, ctx.style.colors[.TITLE_TEXT]) + update_control(ctx, cid, r, opt) + if .LEFT in ctx.mouse_released_bits && cid == ctx.hover_id { + cnt.open = false + } + } + } + + /* do `resize` handle */ + if .NO_RESIZE not_in opt { + sz := ctx.style.footer_height + rid := get_id(ctx, "!resize") + r := Rect{rect.x + rect.w - sz, rect.y + rect.h - sz, sz, sz} + draw_icon(ctx, .RESIZE, r, ctx.style.colors[.TEXT]) + update_control(ctx, rid, r, opt) + if rid == ctx.focus_id && .LEFT in ctx.mouse_down_bits { + cnt.rect.w = max(96, cnt.rect.w + ctx.mouse_delta.x) + cnt.rect.h = max(64, cnt.rect.h + ctx.mouse_delta.y) + } + body.h -= sz + } + + push_container_body(ctx, cnt, body, opt) + + /* resize to content size */ + if .AUTO_SIZE in opt { + r := get_layout(ctx).body + cnt.rect.w = cnt.content_size.x + (cnt.rect.w - r.w) + cnt.rect.h = cnt.content_size.y + (cnt.rect.h - r.h) + } + + /* close if this is a popup window and elsewhere was clicked */ + if .POPUP in opt && mouse_pressed(ctx) && ctx.hover_root != cnt { + cnt.open = false + } + + push_clip_rect(ctx, cnt.body) + return true +} + +end_window :: proc(ctx: ^Context) { + pop_clip_rect(ctx) + end_root_container(ctx) +} + + +/* This is scoped and is intended to be use in the condition of a if-statement */ +@(deferred_in_out = scoped_end_window) +window :: proc(ctx: ^Context, title: string, rect: Rect, opt := Options{}) -> bool { + return begin_window(ctx, title, rect, opt) +} + +scoped_end_window :: proc(ctx: ^Context, _: string, _: Rect, _: Options, ok: bool) { + if ok { + end_window(ctx) + } +} + +open_popup :: proc(ctx: ^Context, name: string) { + cnt := get_container(ctx, name) + /* set as hover root so popup isn't closed in begin_window() */ + ctx.hover_root = cnt + ctx.next_hover_root = cnt + /* position at mouse cursor, open and bring-to-front */ + cnt.rect = Rect{ctx.mouse_pos.x, ctx.mouse_pos.y, 1, 1} + cnt.open = true + bring_to_front(ctx, cnt) +} + +begin_popup :: proc(ctx: ^Context, name: string) -> bool { + opt := Options{.POPUP, .AUTO_SIZE, .NO_RESIZE, .NO_SCROLL, .NO_TITLE, .CLOSED} + return begin_window(ctx, name, Rect{}, opt) +} + +end_popup :: proc(ctx: ^Context) { + end_window(ctx) +} + + +/* This is scoped and is intended to be use in the condition of a if-statement */ +@(deferred_in_out = scoped_end_popup) +popup :: proc(ctx: ^Context, name: string) -> bool { + return begin_popup(ctx, name) +} + +scoped_end_popup :: proc(ctx: ^Context, _: string, ok: bool) { + if ok { + end_popup(ctx) + } +} + +begin_panel :: proc(ctx: ^Context, name: string, opt := Options{}) { + assert(name != "", "missing panel name") + push_id(ctx, name) + cnt := internal_get_container(ctx, ctx.last_id, opt) + cnt.rect = layout_next(ctx) + if .NO_FRAME not_in opt { + ctx.draw_frame(ctx, cnt.rect, .PANEL_BG) + } + push(&ctx.container_stack, cnt) + push_container_body(ctx, cnt, cnt.rect, opt) + push_clip_rect(ctx, cnt.body) +} + +end_panel :: proc(ctx: ^Context) { + pop_clip_rect(ctx) + pop_container(ctx) +} + +@(private) +mouse_released :: #force_inline proc(ctx: ^Context) -> bool {return ctx.mouse_released_bits != nil} +@(private) +mouse_pressed :: #force_inline proc(ctx: ^Context) -> bool {return ctx.mouse_pressed_bits != nil} +@(private) +mouse_down :: #force_inline proc(ctx: ^Context) -> bool {return ctx.mouse_down_bits != nil} diff --git a/game/ui/microui_default_atlas.odin b/game/ui/microui_default_atlas.odin new file mode 100644 index 0000000..ab91e68 --- /dev/null +++ b/game/ui/microui_default_atlas.odin @@ -0,0 +1,16519 @@ +package ui + +DEFAULT_ATLAS_WIDTH :: 128 +DEFAULT_ATLAS_HEIGHT :: 128 +DEFAULT_ATLAS_WHITE :: int(len(Icon) + 1) +DEFAULT_ATLAS_FONT :: int(len(Icon) + 2) +DEFAULT_ATLAS_ICON_CLOSE :: int(Icon.CLOSE) +DEFAULT_ATLAS_ICON_CHECK :: int(Icon.CHECK) +DEFAULT_ATLAS_ICON_EXPANDED :: int(Icon.EXPANDED) +DEFAULT_ATLAS_ICON_COLLAPSED :: int(Icon.COLLAPSED) +DEFAULT_ATLAS_ICON_RESIZE :: int(Icon.RESIZE) + +default_atlas_text_width :: proc(font: Font, text: string) -> (width: i32) { + for ch in text { + if ch & 0xc0 == 0x80 { + continue + } + r := min(int(ch), 127) + width += default_atlas[DEFAULT_ATLAS_FONT + r].w + } + return +} +default_atlas_text_height :: proc(font: Font) -> i32 { + return 18 +} + +default_atlas_alpha := [DEFAULT_ATLAS_WIDTH * DEFAULT_ATLAS_HEIGHT]u8 { + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x20, + 0xc0, + 0x20, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x09, + 0x32, + 0x0b, + 0x00, + 0x00, + 0x00, + 0x00, + 0x31, + 0x35, + 0x01, + 0x00, + 0x00, + 0x00, + 0x15, + 0x35, + 0x1d, + 0x30, + 0x19, + 0x00, + 0x00, + 0x0f, + 0x35, + 0x06, + 0x00, + 0x00, + 0x1f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0b, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x14, + 0x26, + 0x00, + 0x00, + 0x31, + 0x2a, + 0x00, + 0x00, + 0x00, + 0x10, + 0x31, + 0x00, + 0x00, + 0x00, + 0x00, + 0x06, + 0x3e, + 0x08, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x06, + 0x3e, + 0x08, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x40, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x31, + 0x35, + 0x2f, + 0x02, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x41, + 0x37, + 0x08, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x21, + 0xe0, + 0xea, + 0x2c, + 0x00, + 0x00, + 0x00, + 0x00, + 0x36, + 0xc4, + 0xdb, + 0xb2, + 0xd9, + 0xc1, + 0x1a, + 0x00, + 0x00, + 0xea, + 0xff, + 0x39, + 0x00, + 0x00, + 0x00, + 0x9e, + 0xff, + 0x88, + 0xbe, + 0x9c, + 0x00, + 0x00, + 0x72, + 0xff, + 0x48, + 0x00, + 0x00, + 0xbb, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1c, + 0xe4, + 0xce, + 0x8d, + 0x00, + 0x00, + 0xb5, + 0x60, + 0x00, + 0x00, + 0xea, + 0xfa, + 0x2c, + 0x00, + 0x00, + 0x4e, + 0xeb, + 0x00, + 0x00, + 0x1c, + 0x8f, + 0xea, + 0xea, + 0xee, + 0x92, + 0x1f, + 0x00, + 0x00, + 0x1c, + 0x8f, + 0xea, + 0xea, + 0xee, + 0x92, + 0x1f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x42, + 0xf3, + 0xcd, + 0xf5, + 0x3a, + 0x00, + 0x00, + 0x00, + 0xea, + 0xf2, + 0xef, + 0xe5, + 0x8f, + 0x2f, + 0x00, + 0x00, + 0x0f, + 0xa0, + 0xfe, + 0xf2, + 0xf1, + 0xfa, + 0x33, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x21, + 0xe0, + 0xea, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x35, + 0xdc, + 0x33, + 0x00, + 0x06, + 0x00, + 0x5a, + 0xd7, + 0x13, + 0x00, + 0xea, + 0xd8, + 0x92, + 0x00, + 0x00, + 0x09, + 0xf0, + 0xd9, + 0x88, + 0x7b, + 0xda, + 0x00, + 0x00, + 0xb9, + 0xe9, + 0x91, + 0x00, + 0x05, + 0xf4, + 0x03, + 0x35, + 0x02, + 0x32, + 0x1f, + 0x00, + 0x04, + 0x37, + 0x24, + 0x00, + 0x5b, + 0xa9, + 0x1b, + 0xe7, + 0x01, + 0x44, + 0xd0, + 0x02, + 0x00, + 0x00, + 0xea, + 0xe4, + 0xc3, + 0x01, + 0x00, + 0x4e, + 0xeb, + 0x00, + 0x00, + 0x8f, + 0xd8, + 0x42, + 0x01, + 0x3a, + 0xd0, + 0x9b, + 0x00, + 0x00, + 0x8f, + 0xd8, + 0x42, + 0x01, + 0x3a, + 0xd0, + 0x9b, + 0x00, + 0x2e, + 0x1a, + 0x00, + 0x03, + 0x36, + 0x19, + 0x00, + 0x04, + 0x36, + 0x00, + 0xa3, + 0xa0, + 0x00, + 0xb5, + 0x8d, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x01, + 0x3d, + 0xac, + 0xe5, + 0x03, + 0x00, + 0xa1, + 0xeb, + 0x63, + 0x0c, + 0x03, + 0x2e, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x21, + 0xe1, + 0xeb, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xd6, + 0x38, + 0x37, + 0xb4, + 0xd6, + 0xe9, + 0x35, + 0x9e, + 0x5c, + 0x00, + 0xea, + 0x87, + 0xe8, + 0x03, + 0x00, + 0x56, + 0xcc, + 0xba, + 0x88, + 0x38, + 0xff, + 0x1a, + 0x09, + 0xf7, + 0x84, + 0xd9, + 0x00, + 0x39, + 0xfe, + 0x0e, + 0xff, + 0xb7, + 0xe1, + 0xf3, + 0x94, + 0xbc, + 0xde, + 0xfb, + 0x97, + 0x73, + 0x9b, + 0x0b, + 0xfb, + 0x0b, + 0xcf, + 0x44, + 0x01, + 0x00, + 0x00, + 0xea, + 0x65, + 0xf7, + 0x63, + 0x00, + 0x4e, + 0xeb, + 0x00, + 0x01, + 0xe0, + 0x79, + 0x00, + 0x00, + 0x00, + 0x6b, + 0xea, + 0x03, + 0x01, + 0xe0, + 0x79, + 0x00, + 0x00, + 0x00, + 0x6b, + 0xea, + 0x03, + 0xb0, + 0xa4, + 0x00, + 0x39, + 0xfe, + 0xa0, + 0x00, + 0x3d, + 0xfd, + 0x00, + 0x6e, + 0xe0, + 0x5b, + 0xef, + 0x41, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x17, + 0xfd, + 0x47, + 0x18, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x21, + 0xe1, + 0xeb, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x16, + 0xe3, + 0x00, + 0xc5, + 0x51, + 0x00, + 0xd4, + 0x37, + 0x61, + 0x99, + 0x00, + 0xea, + 0x4d, + 0xe9, + 0x45, + 0x00, + 0xb2, + 0x70, + 0xbf, + 0x88, + 0x04, + 0xf0, + 0x59, + 0x48, + 0xe9, + 0x18, + 0xfd, + 0x23, + 0x77, + 0xd4, + 0x0e, + 0xff, + 0x9f, + 0x02, + 0x54, + 0xff, + 0x86, + 0x00, + 0x69, + 0xf0, + 0x39, + 0xd1, + 0x61, + 0xca, + 0x60, + 0xb6, + 0x6f, + 0xe3, + 0x98, + 0x00, + 0xea, + 0x4a, + 0x7f, + 0xec, + 0x15, + 0x4e, + 0xeb, + 0x00, + 0x32, + 0xff, + 0x36, + 0x00, + 0x00, + 0x00, + 0x29, + 0xff, + 0x3e, + 0x32, + 0xff, + 0x36, + 0x00, + 0x00, + 0x00, + 0x29, + 0xff, + 0x3f, + 0x68, + 0xe6, + 0x00, + 0x83, + 0xaf, + 0xe7, + 0x01, + 0x80, + 0xc9, + 0x00, + 0x18, + 0xf4, + 0xff, + 0x53, + 0x00, + 0x15, + 0x3b, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xc5, + 0xa2, + 0x41, + 0xff, + 0x39, + 0x00, + 0x40, + 0x73, + 0x73, + 0x35, + 0x00, + 0x00, + 0x00, + 0x3d, + 0xed, + 0x45, + 0x00, + 0x00, + 0x00, + 0x22, + 0xe1, + 0xeb, + 0x2d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x4f, + 0xb3, + 0x12, + 0xf9, + 0x04, + 0x03, + 0xef, + 0x2c, + 0x6a, + 0x94, + 0x00, + 0xea, + 0x4d, + 0x95, + 0x9e, + 0x14, + 0xf6, + 0x18, + 0xc1, + 0x88, + 0x00, + 0xb2, + 0x96, + 0x8e, + 0xa4, + 0x00, + 0xcb, + 0x6a, + 0xb5, + 0x92, + 0x0e, + 0xff, + 0x59, + 0x00, + 0x27, + 0xff, + 0x3d, + 0x00, + 0x3a, + 0xff, + 0x04, + 0x71, + 0xae, + 0x40, + 0xe0, + 0x2e, + 0xee, + 0x1e, + 0xd5, + 0x00, + 0xea, + 0x4d, + 0x08, + 0xd9, + 0xa0, + 0x4b, + 0xeb, + 0x00, + 0x20, + 0xfe, + 0x45, + 0x00, + 0x00, + 0x00, + 0x37, + 0xff, + 0x2c, + 0x20, + 0xfe, + 0x45, + 0x00, + 0x00, + 0x00, + 0x37, + 0xff, + 0x3b, + 0x21, + 0xff, + 0x29, + 0xcc, + 0x4a, + 0xe9, + 0x30, + 0xc3, + 0x81, + 0x14, + 0xdf, + 0xab, + 0xbd, + 0xcd, + 0x14, + 0x9c, + 0xb5, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xdc, + 0xa6, + 0x20, + 0xfe, + 0x42, + 0x00, + 0x63, + 0xb2, + 0xf4, + 0x76, + 0x00, + 0x00, + 0x00, + 0x13, + 0xd0, + 0xf6, + 0x45, + 0x00, + 0x22, + 0xe1, + 0xeb, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x3f, + 0xe7, + 0x03, + 0xd7, + 0x5e, + 0x75, + 0xf7, + 0x8d, + 0xc7, + 0x4a, + 0x00, + 0xea, + 0x4d, + 0x3c, + 0xf0, + 0x71, + 0xb7, + 0x00, + 0xc1, + 0x88, + 0x00, + 0x70, + 0xc9, + 0xcb, + 0x5d, + 0x00, + 0x83, + 0xa2, + 0xe9, + 0x4f, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x26, + 0xff, + 0x2d, + 0x00, + 0x39, + 0xff, + 0x00, + 0x00, + 0x00, + 0x7c, + 0x9a, + 0x1f, + 0xf1, + 0x00, + 0xaf, + 0x00, + 0xea, + 0x4d, + 0x00, + 0x44, + 0xfe, + 0x83, + 0xeb, + 0x00, + 0x00, + 0xcd, + 0x89, + 0x00, + 0x00, + 0x00, + 0x7b, + 0xd9, + 0x00, + 0x00, + 0xcd, + 0x89, + 0x00, + 0x00, + 0x00, + 0x7b, + 0xf8, + 0x08, + 0x00, + 0xd8, + 0x75, + 0xf8, + 0x0d, + 0xa7, + 0x79, + 0xf7, + 0x39, + 0x5b, + 0xfc, + 0x0a, + 0x09, + 0xba, + 0xd4, + 0xf6, + 0x39, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x31, + 0xff, + 0x75, + 0x00, + 0xcc, + 0x8f, + 0x00, + 0x00, + 0x00, + 0xdb, + 0x76, + 0x00, + 0x00, + 0x00, + 0x00, + 0x13, + 0xd0, + 0xf6, + 0x63, + 0xe1, + 0xeb, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x11, + 0xf3, + 0x44, + 0x2c, + 0x96, + 0x87, + 0x29, + 0xa3, + 0x64, + 0x00, + 0x00, + 0xea, + 0x4d, + 0x01, + 0xe1, + 0xf3, + 0x5b, + 0x00, + 0xc1, + 0x88, + 0x00, + 0x2e, + 0xf7, + 0xf5, + 0x17, + 0x00, + 0x3a, + 0xec, + 0xfc, + 0x10, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x26, + 0xff, + 0x2d, + 0x00, + 0x39, + 0xff, + 0x00, + 0x00, + 0x17, + 0xe6, + 0x19, + 0x02, + 0xee, + 0x13, + 0xd0, + 0x00, + 0xea, + 0x4d, + 0x00, + 0x00, + 0xa5, + 0xf6, + 0xeb, + 0x00, + 0x00, + 0x7d, + 0xec, + 0x7a, + 0x24, + 0x73, + 0xe7, + 0x87, + 0x00, + 0x00, + 0x7d, + 0xec, + 0x7a, + 0x24, + 0x73, + 0xe7, + 0x9c, + 0x00, + 0x00, + 0x91, + 0xda, + 0xbd, + 0x00, + 0x61, + 0xd9, + 0xed, + 0x03, + 0x2b, + 0xfe, + 0x67, + 0x1d, + 0x70, + 0xfc, + 0xf0, + 0x1a, + 0x00, + 0xea, + 0x7f, + 0x31, + 0x81, + 0xdc, + 0xdc, + 0x0a, + 0x00, + 0x79, + 0xef, + 0x83, + 0x23, + 0x1c, + 0xe1, + 0x76, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x13, + 0xd0, + 0xff, + 0xec, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x6b, + 0xdc, + 0x78, + 0x20, + 0x0d, + 0x3c, + 0x3b, + 0x00, + 0x00, + 0x00, + 0xea, + 0x4d, + 0x00, + 0x8a, + 0xf3, + 0x0b, + 0x00, + 0xc1, + 0x88, + 0x00, + 0x01, + 0xea, + 0xce, + 0x00, + 0x00, + 0x03, + 0xed, + 0xc9, + 0x00, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x26, + 0xff, + 0x2d, + 0x00, + 0x39, + 0xff, + 0x00, + 0x00, + 0x98, + 0x7e, + 0x00, + 0x00, + 0x78, + 0xe7, + 0xb0, + 0x00, + 0xea, + 0x4d, + 0x00, + 0x00, + 0x18, + 0xef, + 0xeb, + 0x00, + 0x00, + 0x06, + 0x54, + 0xb6, + 0xfb, + 0xbb, + 0x57, + 0x07, + 0x00, + 0x00, + 0x06, + 0x54, + 0xb6, + 0xfc, + 0xff, + 0x8d, + 0x01, + 0x00, + 0x00, + 0x49, + 0xff, + 0x74, + 0x00, + 0x1b, + 0xfe, + 0xa8, + 0x00, + 0x00, + 0x7f, + 0xde, + 0xff, + 0xe7, + 0x72, + 0xb1, + 0xdb, + 0x00, + 0xea, + 0xff, + 0xf8, + 0xd6, + 0x92, + 0x13, + 0x00, + 0x00, + 0x06, + 0x52, + 0xb4, + 0xfb, + 0xff, + 0xe5, + 0x55, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x13, + 0xbc, + 0x2e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0xb7, + 0xde, + 0xdb, + 0xad, + 0x50, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x07, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1b, + 0xda, + 0xbb, + 0x07, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0f, + 0x0c, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x26, + 0xe6, + 0xa0, + 0x02, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x31, + 0x17, + 0x00, + 0x00, + 0x00, + 0x2a, + 0x1e, + 0x00, + 0x35, + 0x13, + 0x00, + 0x00, + 0x00, + 0x2c, + 0x1c, + 0x00, + 0x00, + 0x0c, + 0x27, + 0x00, + 0x29, + 0x09, + 0x00, + 0x00, + 0x00, + 0x3c, + 0x24, + 0x00, + 0x00, + 0x00, + 0x31, + 0x35, + 0x30, + 0x08, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x11, + 0x44, + 0x1f, + 0x00, + 0x00, + 0x31, + 0x17, + 0x00, + 0x00, + 0x13, + 0x35, + 0x00, + 0x31, + 0x35, + 0x2b, + 0x02, + 0x00, + 0x00, + 0x00, + 0x31, + 0x35, + 0x2a, + 0x02, + 0x00, + 0x00, + 0x33, + 0x16, + 0x00, + 0x00, + 0x00, + 0x0f, + 0x35, + 0x27, + 0x28, + 0x00, + 0x00, + 0x00, + 0x1f, + 0x2e, + 0x0b, + 0xbc, + 0x31, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x13, + 0xbc, + 0x2a, + 0x0b, + 0xbc, + 0x31, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xc9, + 0x8e, + 0x00, + 0xfc, + 0x5b, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x84, + 0x00, + 0x00, + 0x59, + 0xa9, + 0x00, + 0xea, + 0x0f, + 0x00, + 0x00, + 0x34, + 0xfe, + 0xce, + 0x00, + 0x00, + 0x00, + 0xea, + 0xf2, + 0xed, + 0xfa, + 0xce, + 0x1a, + 0x00, + 0x09, + 0xb5, + 0xfd, + 0xe7, + 0xf5, + 0xaf, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x0c, + 0xcf, + 0xa7, + 0x00, + 0xea, + 0xf2, + 0xf3, + 0xea, + 0x94, + 0x00, + 0x00, + 0xea, + 0xf4, + 0xf6, + 0xec, + 0x9d, + 0x00, + 0xc0, + 0x9e, + 0x00, + 0x00, + 0x00, + 0x7a, + 0xe5, + 0x58, + 0xf8, + 0x26, + 0x00, + 0x0d, + 0xe4, + 0x7a, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1a, + 0xff, + 0x39, + 0x0e, + 0xff, + 0x43, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xc9, + 0x8e, + 0x00, + 0xfc, + 0x5b, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x84, + 0x00, + 0x00, + 0x89, + 0x79, + 0x1c, + 0xdd, + 0x00, + 0x00, + 0x00, + 0x93, + 0xad, + 0xf9, + 0x2e, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x19, + 0xe3, + 0x8c, + 0x00, + 0xab, + 0xe1, + 0x4f, + 0x02, + 0x07, + 0x1f, + 0x00, + 0xea, + 0x6d, + 0x03, + 0xb2, + 0xc6, + 0x08, + 0x00, + 0xea, + 0x6d, + 0x03, + 0x4d, + 0xff, + 0x33, + 0x00, + 0xea, + 0x6d, + 0x03, + 0x49, + 0xff, + 0x3a, + 0x67, + 0xee, + 0x06, + 0x00, + 0x00, + 0xd0, + 0x8e, + 0x00, + 0xb3, + 0xbb, + 0x00, + 0x8e, + 0xcf, + 0x05, + 0x0e, + 0xff, + 0x41, + 0x12, + 0x25, + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x20, + 0x18, + 0xff, + 0x39, + 0x0e, + 0xff, + 0x41, + 0x2e, + 0x33, + 0x01, + 0x00, + 0x03, + 0x35, + 0x01, + 0x2e, + 0x34, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x39, + 0x05, + 0x00, + 0x00, + 0x03, + 0x36, + 0x02, + 0x11, + 0x25, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xc9, + 0x8e, + 0x00, + 0xfc, + 0x5b, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x84, + 0x41, + 0xd3, + 0xf0, + 0xe3, + 0xdd, + 0xf4, + 0xd3, + 0x00, + 0x06, + 0xec, + 0x52, + 0xb4, + 0x8d, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x06, + 0xdd, + 0x86, + 0x0b, + 0xfc, + 0x81, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x8d, + 0xdd, + 0x15, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x07, + 0xf3, + 0x64, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x0a, + 0xf4, + 0x69, + 0x13, + 0xfa, + 0x4a, + 0x00, + 0x27, + 0xff, + 0x34, + 0x00, + 0x1c, + 0xf1, + 0x86, + 0xf7, + 0x33, + 0x00, + 0x0e, + 0xff, + 0xaa, + 0xd3, + 0xf8, + 0xab, + 0x01, + 0x00, + 0x87, + 0xf6, + 0xda, + 0xa5, + 0xff, + 0x39, + 0x0e, + 0xff, + 0xc0, + 0xe5, + 0xf2, + 0xd5, + 0x03, + 0x0e, + 0xff, + 0xb4, + 0xe5, + 0xf2, + 0xd6, + 0x04, + 0x00, + 0x00, + 0x00, + 0x00, + 0x6d, + 0xe7, + 0xdd, + 0xe7, + 0x6d, + 0x00, + 0x0e, + 0xff, + 0x98, + 0xd2, + 0xf8, + 0xab, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0xe9, + 0xd9, + 0xd9, + 0xd9, + 0xf7, + 0x8e, + 0x00, + 0xfc, + 0x5b, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x84, + 0x09, + 0x1d, + 0xec, + 0x2e, + 0x93, + 0x87, + 0x1d, + 0x00, + 0x52, + 0xf1, + 0x09, + 0x5d, + 0xe8, + 0x04, + 0x00, + 0xea, + 0xe4, + 0xd3, + 0xf6, + 0xb1, + 0x0d, + 0x3c, + 0xff, + 0x37, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0xc9, + 0xff, + 0x60, + 0x00, + 0x00, + 0x00, + 0xea, + 0x8a, + 0x49, + 0x9e, + 0xf1, + 0x0d, + 0x00, + 0xea, + 0xa6, + 0x71, + 0xbb, + 0xe1, + 0x1a, + 0x00, + 0xb4, + 0xa0, + 0x00, + 0x7d, + 0xda, + 0x00, + 0x00, + 0x00, + 0x74, + 0xff, + 0x93, + 0x00, + 0x00, + 0x0e, + 0xff, + 0x9c, + 0x02, + 0x2a, + 0xff, + 0x32, + 0x0e, + 0xfa, + 0x5a, + 0x00, + 0x6f, + 0xff, + 0x39, + 0x0e, + 0xff, + 0xa6, + 0x04, + 0x1e, + 0xff, + 0x42, + 0x0e, + 0xff, + 0xa5, + 0x04, + 0x1e, + 0xff, + 0x42, + 0x00, + 0x00, + 0x00, + 0x07, + 0xf1, + 0x59, + 0x00, + 0x55, + 0xf2, + 0x09, + 0x0e, + 0xff, + 0x99, + 0x01, + 0x2d, + 0xff, + 0x32, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x98, + 0x4c, + 0x4c, + 0x4c, + 0xd9, + 0x8e, + 0x00, + 0xfc, + 0x5b, + 0x00, + 0x00, + 0x00, + 0xd2, + 0x84, + 0x37, + 0x58, + 0xef, + 0x4a, + 0xc6, + 0x83, + 0x38, + 0x00, + 0xb1, + 0xd5, + 0x6f, + 0x7d, + 0xff, + 0x4c, + 0x00, + 0xea, + 0x94, + 0x47, + 0x70, + 0xe7, + 0x83, + 0x22, + 0xff, + 0x42, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0xd2, + 0xaf, + 0xe2, + 0x10, + 0x00, + 0x00, + 0xea, + 0xf5, + 0xda, + 0x94, + 0x3e, + 0x00, + 0x00, + 0xea, + 0xd6, + 0xc4, + 0xfd, + 0x27, + 0x00, + 0x00, + 0x5b, + 0xef, + 0x06, + 0xd3, + 0x81, + 0x00, + 0x00, + 0x01, + 0xbc, + 0xeb, + 0xd2, + 0x06, + 0x00, + 0x0e, + 0xff, + 0x56, + 0x00, + 0x00, + 0xdd, + 0x77, + 0x50, + 0xfb, + 0x0c, + 0x00, + 0x23, + 0xff, + 0x39, + 0x0e, + 0xff, + 0x5c, + 0x00, + 0x00, + 0xeb, + 0x68, + 0x0e, + 0xff, + 0x5c, + 0x00, + 0x00, + 0xeb, + 0x68, + 0x00, + 0x00, + 0x00, + 0x4c, + 0xfb, + 0x0b, + 0x00, + 0x08, + 0xf8, + 0x51, + 0x0e, + 0xff, + 0x52, + 0x00, + 0x00, + 0xde, + 0x77, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xc9, + 0x8e, + 0x00, + 0xd3, + 0x85, + 0x00, + 0x00, + 0x09, + 0xf4, + 0x6b, + 0x7b, + 0xc7, + 0xdf, + 0xa7, + 0xfd, + 0xa9, + 0x7f, + 0x16, + 0xfa, + 0xc4, + 0xb8, + 0xb8, + 0xe2, + 0xab, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x8e, + 0xdf, + 0x00, + 0xd2, + 0x89, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x0f, + 0xe0, + 0xa1, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x01, + 0xc6, + 0xa5, + 0x00, + 0x00, + 0x0c, + 0xf5, + 0x69, + 0xff, + 0x28, + 0x00, + 0x00, + 0x60, + 0xec, + 0x21, + 0xe4, + 0x80, + 0x00, + 0x0e, + 0xff, + 0x65, + 0x00, + 0x01, + 0xea, + 0x67, + 0x43, + 0xfe, + 0x12, + 0x00, + 0x25, + 0xff, + 0x39, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xea, + 0x68, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xea, + 0x68, + 0x00, + 0x00, + 0x00, + 0x4c, + 0xfe, + 0x16, + 0x00, + 0x11, + 0xfd, + 0x40, + 0x0e, + 0xff, + 0x65, + 0x00, + 0x01, + 0xeb, + 0x67, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xc9, + 0x8e, + 0x00, + 0x72, + 0xdf, + 0x4b, + 0x23, + 0x8c, + 0xfa, + 0x28, + 0x00, + 0x7c, + 0x81, + 0x1a, + 0xe5, + 0x00, + 0x00, + 0x70, + 0xeb, + 0x05, + 0x00, + 0x00, + 0x5c, + 0xf8, + 0x00, + 0xea, + 0x7f, + 0x22, + 0x4a, + 0xdd, + 0x95, + 0x00, + 0x84, + 0xed, + 0x7c, + 0x1d, + 0x24, + 0x32, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x40, + 0xfd, + 0x52, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x31, + 0xfc, + 0x49, + 0x00, + 0x00, + 0xa8, + 0xe3, + 0xcd, + 0x00, + 0x00, + 0x17, + 0xed, + 0x62, + 0x00, + 0x54, + 0xf9, + 0x2d, + 0x0e, + 0xff, + 0xbc, + 0x1d, + 0x5f, + 0xff, + 0x21, + 0x07, + 0xf5, + 0x7e, + 0x11, + 0x8d, + 0xff, + 0x39, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xea, + 0x68, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xea, + 0x68, + 0x00, + 0x00, + 0x00, + 0x14, + 0xf2, + 0x88, + 0x15, + 0x82, + 0xe8, + 0x03, + 0x0e, + 0xff, + 0xbc, + 0x1e, + 0x61, + 0xff, + 0x20, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0xc9, + 0x8e, + 0x00, + 0x10, + 0x85, + 0xdc, + 0xfe, + 0xd9, + 0x4c, + 0x00, + 0x00, + 0xaa, + 0x50, + 0x4b, + 0xb4, + 0x00, + 0x00, + 0xcf, + 0x97, + 0x00, + 0x00, + 0x00, + 0x0c, + 0xf4, + 0x00, + 0xea, + 0xff, + 0xff, + 0xdd, + 0x93, + 0x1c, + 0x00, + 0x08, + 0x5c, + 0xc0, + 0xfe, + 0xed, + 0x7b, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x8d, + 0xea, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x95, + 0xe0, + 0x00, + 0x00, + 0x4f, + 0xff, + 0x74, + 0x00, + 0x00, + 0xa8, + 0xc3, + 0x01, + 0x00, + 0x00, + 0xb7, + 0xca, + 0x0e, + 0xfd, + 0x6f, + 0xd4, + 0xe5, + 0x72, + 0x00, + 0x00, + 0x5c, + 0xd9, + 0xdb, + 0x63, + 0xef, + 0x39, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xea, + 0x68, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xea, + 0x68, + 0x00, + 0x00, + 0x00, + 0x00, + 0x43, + 0xdb, + 0xfc, + 0xb7, + 0x46, + 0x00, + 0x0e, + 0xff, + 0x8c, + 0xd4, + 0xe4, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0c, + 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, + 0x00, + 0x0e, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x06, + 0x00, + 0x00, + 0x00, + 0x00, + 0x02, + 0x04, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x00, + 0x00, + 0x00, + 0x0e, + 0xff, + 0x43, + 0x01, + 0x06, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0e, + 0xff, + 0x43, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0b, + 0xc2, + 0x33, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x11, + 0x79, + 0x00, + 0x00, + 0x00, + 0x00, + 0x58, + 0x8a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x2f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2e, + 0x14, + 0x00, + 0x00, + 0x04, + 0x32, + 0x3b, + 0x03, + 0x00, + 0x00, + 0x00, + 0x21, + 0x38, + 0x04, + 0x00, + 0x00, + 0x00, + 0x00, + 0x07, + 0x3b, + 0x0f, + 0x00, + 0x2e, + 0x35, + 0x35, + 0x35, + 0x16, + 0x00, + 0x00, + 0x03, + 0x26, + 0x49, + 0x1f, + 0x1e, + 0x33, + 0x33, + 0x33, + 0x33, + 0x33, + 0x00, + 0x00, + 0x18, + 0x3a, + 0x05, + 0x00, + 0x00, + 0x00, + 0x14, + 0x37, + 0x03, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2f, + 0x00, + 0x31, + 0x35, + 0x35, + 0x35, + 0x27, + 0x00, + 0x31, + 0x35, + 0x35, + 0x35, + 0x26, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x3c, + 0xa6, + 0xea, + 0x9e, + 0x53, + 0x0f, + 0x03, + 0x5f, + 0xa3, + 0x00, + 0x13, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x6d, + 0xe9, + 0xea, + 0xb4, + 0x23, + 0x00, + 0x07, + 0x98, + 0xff, + 0x61, + 0x00, + 0x27, + 0xd4, + 0xee, + 0xe8, + 0xe8, + 0x2f, + 0x32, + 0xcf, + 0xdd, + 0xe5, + 0xef, + 0x33, + 0x00, + 0x00, + 0x00, + 0x89, + 0xff, + 0x41, + 0x00, + 0xea, + 0xf9, + 0xf6, + 0xf6, + 0x64, + 0x00, + 0x25, + 0xcf, + 0xfe, + 0xd1, + 0x6c, + 0x90, + 0xf6, + 0xf6, + 0xf6, + 0xf9, + 0xff, + 0x00, + 0xa0, + 0xea, + 0xca, + 0xee, + 0x3e, + 0x00, + 0x9e, + 0xf3, + 0xe2, + 0xe3, + 0x1c, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1f, + 0xfc, + 0x00, + 0xea, + 0xf4, + 0xec, + 0xec, + 0xac, + 0x00, + 0xea, + 0xf4, + 0xec, + 0xec, + 0xa9, + 0x00, + 0x00, + 0x00, + 0x00, + 0x17, + 0x3a, + 0x05, + 0x30, + 0x0c, + 0x06, + 0x36, + 0x0c, + 0x00, + 0x00, + 0x34, + 0x13, + 0x16, + 0xf6, + 0x91, + 0xc3, + 0x79, + 0x5b, + 0x80, + 0xed, + 0xc9, + 0xd9, + 0xdb, + 0xcb, + 0x00, + 0x00, + 0x31, + 0xa9, + 0x00, + 0x00, + 0x06, + 0xf7, + 0x57, + 0x0c, + 0xbd, + 0x88, + 0x05, + 0xc6, + 0xb6, + 0xed, + 0x61, + 0x00, + 0x08, + 0x64, + 0x05, + 0x02, + 0xbf, + 0x9d, + 0x04, + 0x3a, + 0x00, + 0x01, + 0xbe, + 0xa2, + 0x00, + 0x00, + 0x3d, + 0xd1, + 0xfc, + 0x41, + 0x02, + 0xfc, + 0x41, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc9, + 0xa9, + 0x1f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x90, + 0xbf, + 0x23, + 0xfe, + 0x27, + 0x00, + 0x9b, + 0xaf, + 0x2b, + 0xfc, + 0x21, + 0x00, + 0xa9, + 0xb1, + 0x00, + 0x00, + 0x00, + 0x01, + 0x50, + 0xce, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x6f, + 0x98, + 0x1e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x7c, + 0xc1, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x85, + 0xf6, + 0xdf, + 0xbf, + 0xf9, + 0x39, + 0x1d, + 0xff, + 0x38, + 0x00, + 0x00, + 0xf6, + 0x5c, + 0x30, + 0xff, + 0x55, + 0xa7, + 0x00, + 0x00, + 0x06, + 0x21, + 0xdd, + 0xeb, + 0x45, + 0x0c, + 0x00, + 0x00, + 0x3a, + 0xc8, + 0x00, + 0x00, + 0x35, + 0xfd, + 0x09, + 0x00, + 0x77, + 0xc1, + 0x00, + 0x44, + 0x03, + 0xee, + 0x61, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xa6, + 0xa9, + 0x00, + 0x00, + 0x00, + 0x09, + 0xdb, + 0x79, + 0x00, + 0x0d, + 0xdc, + 0x43, + 0xff, + 0x41, + 0x13, + 0xff, + 0x38, + 0x0f, + 0x00, + 0x00, + 0x36, + 0xff, + 0x34, + 0x26, + 0x05, + 0x00, + 0x00, + 0x00, + 0x00, + 0x12, + 0xf3, + 0x4e, + 0x0a, + 0xf1, + 0x6b, + 0x16, + 0xce, + 0x80, + 0x6e, + 0xda, + 0x00, + 0x00, + 0x58, + 0xe9, + 0x00, + 0x01, + 0x50, + 0xce, + 0xbc, + 0x44, + 0x49, + 0xab, + 0xab, + 0xab, + 0xab, + 0xa8, + 0x0f, + 0x78, + 0xe1, + 0x98, + 0x1f, + 0x00, + 0x00, + 0x01, + 0xdb, + 0x62, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0e, + 0xfa, + 0x58, + 0x00, + 0x6f, + 0xff, + 0x39, + 0x1d, + 0xff, + 0x38, + 0x00, + 0x00, + 0xf6, + 0x5c, + 0x00, + 0x90, + 0xfc, + 0xdd, + 0x46, + 0x00, + 0x00, + 0x8b, + 0xbb, + 0x75, + 0xce, + 0x06, + 0x41, + 0x8d, + 0xa7, + 0xe7, + 0x8d, + 0x8d, + 0x6b, + 0xe3, + 0x00, + 0x00, + 0x52, + 0xf5, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x61, + 0x00, + 0x00, + 0x00, + 0x00, + 0x31, + 0xf8, + 0x3f, + 0x00, + 0x33, + 0xcb, + 0xf8, + 0x85, + 0x05, + 0x00, + 0x9c, + 0x8e, + 0x08, + 0xff, + 0x41, + 0x1f, + 0xfd, + 0xfe, + 0xfa, + 0xb8, + 0x2d, + 0x5b, + 0xf2, + 0xc9, + 0xe6, + 0xe7, + 0x5a, + 0x00, + 0x00, + 0x00, + 0x7c, + 0xd9, + 0x02, + 0x00, + 0x37, + 0xfb, + 0xf8, + 0xa4, + 0x02, + 0x2e, + 0xfd, + 0x49, + 0x26, + 0xbd, + 0xfe, + 0x35, + 0xce, + 0xac, + 0x34, + 0x00, + 0x00, + 0x24, + 0x55, + 0x55, + 0x55, + 0x55, + 0x53, + 0x00, + 0x00, + 0x08, + 0x68, + 0xd8, + 0x98, + 0x00, + 0x3b, + 0xf4, + 0x0d, + 0x00, + 0xea, + 0xe8, + 0xd6, + 0xd6, + 0x6f, + 0x00, + 0xea, + 0xb6, + 0x82, + 0x82, + 0x42, + 0x00, + 0x00, + 0x4f, + 0xfb, + 0x0c, + 0x00, + 0x23, + 0xff, + 0x39, + 0x1d, + 0xff, + 0x38, + 0x00, + 0x00, + 0xf6, + 0x5c, + 0x00, + 0x00, + 0x3a, + 0xe4, + 0xf4, + 0x89, + 0x00, + 0x24, + 0x30, + 0x0c, + 0x48, + 0x00, + 0x34, + 0x72, + 0x92, + 0xe1, + 0x72, + 0x72, + 0x5e, + 0xea, + 0x00, + 0x00, + 0x59, + 0xee, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x61, + 0x00, + 0x00, + 0x00, + 0x22, + 0xe6, + 0x76, + 0x00, + 0x00, + 0x15, + 0x57, + 0x82, + 0xe7, + 0x79, + 0x4d, + 0xd5, + 0x09, + 0x08, + 0xff, + 0x41, + 0x00, + 0x13, + 0x03, + 0x2c, + 0xcd, + 0xa5, + 0x6f, + 0xfc, + 0x30, + 0x01, + 0x81, + 0xd3, + 0x00, + 0x00, + 0x09, + 0xe9, + 0x6a, + 0x00, + 0x0f, + 0xc5, + 0xb2, + 0x78, + 0xed, + 0x63, + 0x00, + 0x7f, + 0xe4, + 0xe4, + 0xa5, + 0xeb, + 0x34, + 0xc4, + 0xcd, + 0x64, + 0x0a, + 0x00, + 0x2e, + 0x6c, + 0x6c, + 0x6c, + 0x6c, + 0x6a, + 0x00, + 0x00, + 0x29, + 0x92, + 0xe4, + 0x93, + 0x00, + 0x9a, + 0xa3, + 0x00, + 0x00, + 0xea, + 0x96, + 0x48, + 0x48, + 0x25, + 0x00, + 0xea, + 0xc8, + 0xa1, + 0xa1, + 0x52, + 0x00, + 0x00, + 0x43, + 0xfe, + 0x12, + 0x00, + 0x23, + 0xff, + 0x39, + 0x1c, + 0xff, + 0x3d, + 0x00, + 0x1c, + 0xff, + 0x5c, + 0x06, + 0x00, + 0x17, + 0xa7, + 0x8a, + 0xdd, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x3a, + 0xc8, + 0x00, + 0x00, + 0x25, + 0xff, + 0x0f, + 0x00, + 0x7f, + 0xb8, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x61, + 0x00, + 0x00, + 0x20, + 0xe0, + 0x7d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x84, + 0xe4, + 0xc4, + 0xf0, + 0xe2, + 0xe3, + 0xff, + 0xe9, + 0x00, + 0x00, + 0x00, + 0x00, + 0x7b, + 0xdd, + 0x4b, + 0xf3, + 0x07, + 0x00, + 0x47, + 0xf8, + 0x00, + 0x00, + 0x68, + 0xed, + 0x0b, + 0x00, + 0x5f, + 0xe3, + 0x02, + 0x00, + 0x5d, + 0xeb, + 0x00, + 0x00, + 0x01, + 0x00, + 0xaa, + 0xbd, + 0x00, + 0x00, + 0x35, + 0xa5, + 0xea, + 0x90, + 0x3f, + 0x92, + 0x92, + 0x92, + 0x92, + 0x90, + 0x34, + 0xbe, + 0xe0, + 0x74, + 0x10, + 0x00, + 0x09, + 0xf0, + 0x44, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x07, + 0xf5, + 0x7b, + 0x10, + 0x8b, + 0xff, + 0x39, + 0x02, + 0xe4, + 0x8c, + 0x10, + 0x86, + 0xff, + 0x5c, + 0x60, + 0xd2, + 0xa9, + 0xea, + 0xfd, + 0x77, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2a, + 0x91, + 0x00, + 0x00, + 0x01, + 0xea, + 0x87, + 0x2f, + 0xd5, + 0x81, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x61, + 0x00, + 0x1f, + 0xdf, + 0x9f, + 0x29, + 0x29, + 0x29, + 0x36, + 0x28, + 0x04, + 0x29, + 0xcd, + 0x9c, + 0x2a, + 0x35, + 0x35, + 0x3b, + 0xff, + 0x69, + 0x28, + 0x37, + 0x09, + 0x32, + 0xd3, + 0x81, + 0x16, + 0xef, + 0x7f, + 0x18, + 0xa7, + 0xaf, + 0x00, + 0x03, + 0xdb, + 0x87, + 0x00, + 0x00, + 0x3e, + 0xf5, + 0x26, + 0x05, + 0x88, + 0xc7, + 0x00, + 0x06, + 0x1b, + 0x75, + 0xf4, + 0x48, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1b, + 0x87, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x4d, + 0x56, + 0x04, + 0x00, + 0x00, + 0x00, + 0x5a, + 0xe2, + 0x02, + 0x00, + 0x00, + 0xea, + 0x81, + 0x24, + 0x24, + 0x1a, + 0x00, + 0xea, + 0x6a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x5c, + 0xda, + 0xda, + 0x71, + 0xff, + 0x39, + 0x00, + 0x68, + 0xe4, + 0xfa, + 0xa6, + 0xd0, + 0x5c, + 0x09, + 0x38, + 0x74, + 0xc9, + 0x22, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x32, + 0xb5, + 0xef, + 0x82, + 0x10, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x61, + 0x00, + 0x7e, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0x5f, + 0xdc, + 0xfc, + 0xe9, + 0xa6, + 0x22, + 0x00, + 0x00, + 0x00, + 0x08, + 0xff, + 0x41, + 0x3e, + 0xd7, + 0xfd, + 0xe4, + 0x95, + 0x17, + 0x00, + 0x47, + 0xdc, + 0xfb, + 0xb2, + 0x30, + 0x00, + 0x55, + 0xfa, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x90, + 0xe3, + 0xf2, + 0xbf, + 0x3c, + 0x00, + 0xec, + 0xfc, + 0xde, + 0x57, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xb9, + 0x85, + 0x00, + 0x00, + 0x00, + 0xea, + 0xff, + 0xff, + 0xff, + 0xba, + 0x00, + 0xea, + 0x6a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x03, + 0x04, + 0x1a, + 0xff, + 0x39, + 0x00, + 0x00, + 0x02, + 0x0a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x10, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0b, + 0x00, + 0x00, + 0x00, + 0x0f, + 0x0d, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1a, + 0xff, + 0x39, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x14, + 0xc2, + 0x2b, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x31, + 0x17, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x15, + 0x43, + 0x14, + 0x00, + 0x2d, + 0x35, + 0x35, + 0x35, + 0x35, + 0x35, + 0x32, + 0x1b, + 0x00, + 0x00, + 0x00, + 0x26, + 0x1c, + 0x35, + 0x35, + 0x35, + 0x35, + 0x35, + 0x00, + 0x00, + 0x1d, + 0x17, + 0x00, + 0x00, + 0x00, + 0x00, + 0x8c, + 0xa9, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0b, + 0xbc, + 0x2f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x3f, + 0x7a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x31, + 0x35, + 0x35, + 0x35, + 0x2b, + 0x0d, + 0x35, + 0x04, + 0x35, + 0x0e, + 0x00, + 0x12, + 0x41, + 0x0e, + 0x00, + 0x2f, + 0x14, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0xa1, + 0xf9, + 0xe4, + 0xfe, + 0x7c, + 0xc9, + 0xf0, + 0xf6, + 0xfe, + 0xf0, + 0xf0, + 0x9e, + 0xd1, + 0x02, + 0x00, + 0x14, + 0xf1, + 0x7c, + 0xf0, + 0xf0, + 0xf0, + 0xf8, + 0xff, + 0x00, + 0x00, + 0xbd, + 0xae, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0b, + 0xb2, + 0x74, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0e, + 0xff, + 0x40, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xb5, + 0x60, + 0x60, + 0x60, + 0xaa, + 0x33, + 0xfc, + 0x02, + 0xf9, + 0x36, + 0x9f, + 0xeb, + 0xd6, + 0xf7, + 0x5d, + 0xa5, + 0x99, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x2b, + 0xfe, + 0x2d, + 0x00, + 0x1a, + 0x15, + 0x00, + 0x00, + 0x6c, + 0xea, + 0x00, + 0x00, + 0x1d, + 0xf7, + 0x58, + 0x00, + 0x8a, + 0xda, + 0x00, + 0x00, + 0x00, + 0x08, + 0xd5, + 0x9c, + 0x00, + 0x35, + 0xc9, + 0xd2, + 0x34, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x06, + 0x00, + 0x00, + 0x03, + 0x35, + 0x42, + 0x09, + 0x00, + 0x00, + 0x00, + 0x07, + 0x38, + 0x03, + 0x00, + 0x00, + 0x00, + 0x28, + 0x48, + 0x36, + 0x36, + 0x0e, + 0xff, + 0x40, + 0x00, + 0x0e, + 0x36, + 0x34, + 0x17, + 0x00, + 0x00, + 0x0f, + 0x36, + 0x25, + 0x2c, + 0x00, + 0x00, + 0x1a, + 0x35, + 0x33, + 0x1a, + 0x00, + 0x00, + 0x10, + 0x36, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x95, + 0x1f, + 0xea, + 0x00, + 0xe6, + 0x22, + 0x1c, + 0x04, + 0x00, + 0x7a, + 0xcf, + 0x46, + 0xef, + 0x09, + 0x00, + 0x00, + 0x00, + 0x04, + 0x3e, + 0x21, + 0x00, + 0x04, + 0x36, + 0x34, + 0x06, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x24, + 0xff, + 0x4c, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x6c, + 0xea, + 0x00, + 0x00, + 0x00, + 0x8b, + 0xd9, + 0x1d, + 0xf5, + 0x54, + 0x00, + 0x00, + 0x00, + 0x8b, + 0xe0, + 0x0e, + 0x00, + 0xac, + 0x58, + 0x54, + 0xb7, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xa7, + 0xd5, + 0xc6, + 0xf3, + 0x42, + 0x00, + 0x6d, + 0xe1, + 0xc7, + 0xe1, + 0x49, + 0x02, + 0xca, + 0xbd, + 0xb6, + 0xff, + 0xb2, + 0x0e, + 0xff, + 0x40, + 0x0c, + 0xc7, + 0xae, + 0xba, + 0xa4, + 0x00, + 0x00, + 0x7f, + 0xdf, + 0x46, + 0xfb, + 0x38, + 0x08, + 0xd8, + 0x97, + 0xb6, + 0xb1, + 0x00, + 0x00, + 0x81, + 0xe2, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x95, + 0x0a, + 0xa3, + 0x00, + 0xa1, + 0x0d, + 0x00, + 0x00, + 0x02, + 0xa9, + 0xb9, + 0x03, + 0xe3, + 0x58, + 0x00, + 0x00, + 0x70, + 0xe7, + 0xdd, + 0xf7, + 0x11, + 0xe9, + 0xe3, + 0xd8, + 0xcf, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x84, + 0xfb, + 0xb6, + 0x33, + 0x00, + 0x00, + 0x00, + 0x6c, + 0xea, + 0x00, + 0x00, + 0x00, + 0x12, + 0xef, + 0xd9, + 0xc8, + 0x01, + 0x00, + 0x00, + 0x3b, + 0xfb, + 0x42, + 0x00, + 0x26, + 0xdf, + 0x04, + 0x02, + 0xd1, + 0x3d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x00, + 0x00, + 0xa7, + 0xa5, + 0x07, + 0xf1, + 0x3f, + 0x00, + 0x77, + 0xba, + 0x45, + 0xf4, + 0x06, + 0x01, + 0xe9, + 0x66, + 0x0e, + 0xff, + 0x45, + 0xbc, + 0xbb, + 0x07, + 0x59, + 0xf3, + 0x0a, + 0x00, + 0xd8, + 0x80, + 0x00, + 0x95, + 0xd5, + 0x8f, + 0xdb, + 0x0b, + 0x50, + 0xf9, + 0x13, + 0x00, + 0xd8, + 0x85, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x2c, + 0xb1, + 0xcf, + 0x88, + 0x4c, + 0x89, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0x9a, + 0xd6, + 0x1d, + 0x00, + 0x86, + 0xb7, + 0x00, + 0x07, + 0xf1, + 0x62, + 0x00, + 0x06, + 0x58, + 0xf8, + 0x20, + 0x00, + 0x08, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x33, + 0xbe, + 0xfe, + 0x5a, + 0x00, + 0x00, + 0x6c, + 0xea, + 0x00, + 0x00, + 0x00, + 0x00, + 0x79, + 0xff, + 0x40, + 0x00, + 0x00, + 0x0a, + 0xda, + 0x92, + 0x00, + 0x00, + 0x9a, + 0x75, + 0x00, + 0x00, + 0x53, + 0xc0, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0x8b, + 0xbf, + 0xe6, + 0xc5, + 0x49, + 0xfe, + 0xc3, + 0xc2, + 0xd2, + 0xfc, + 0x36, + 0xfe, + 0x39, + 0x2b, + 0xf8, + 0x29, + 0x0e, + 0xff, + 0xc7, + 0xf9, + 0x18, + 0x00, + 0x09, + 0xef, + 0x57, + 0x32, + 0xfd, + 0x20, + 0x00, + 0x0b, + 0xe0, + 0xff, + 0x3d, + 0x00, + 0x04, + 0xe5, + 0x69, + 0x31, + 0xfe, + 0x25, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x49, + 0x3a, + 0x47, + 0x91, + 0xbd, + 0x67, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x43, + 0xe6, + 0x15, + 0x00, + 0x00, + 0x28, + 0xfb, + 0x1a, + 0x4a, + 0xfb, + 0x0d, + 0x00, + 0x00, + 0x11, + 0xc2, + 0xf4, + 0x90, + 0x19, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xaf, + 0xbe, + 0x00, + 0x00, + 0x6c, + 0xea, + 0x00, + 0x00, + 0x00, + 0x00, + 0x47, + 0xff, + 0x12, + 0x00, + 0x00, + 0x91, + 0xda, + 0x0a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x27, + 0xfc, + 0x6a, + 0x1e, + 0x9a, + 0xc5, + 0x3b, + 0xfd, + 0x42, + 0x31, + 0x31, + 0x31, + 0x00, + 0x9f, + 0xe5, + 0xb3, + 0x5d, + 0x00, + 0x0e, + 0xff, + 0xac, + 0xd2, + 0xa4, + 0x00, + 0x00, + 0x97, + 0xac, + 0x88, + 0xbc, + 0x00, + 0x00, + 0x2b, + 0xf7, + 0xee, + 0x75, + 0x00, + 0x00, + 0x82, + 0xbf, + 0x86, + 0xc3, + 0x00, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x34, + 0x5b, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x76, + 0x40, + 0xfe, + 0x15, + 0x00, + 0x00, + 0x00, + 0x01, + 0x4f, + 0xd1, + 0xdf, + 0x00, + 0x00, + 0x00, + 0xea, + 0x83, + 0x27, + 0x27, + 0x23, + 0x39, + 0x44, + 0x14, + 0x2b, + 0xd1, + 0x7b, + 0x00, + 0x00, + 0x6c, + 0xea, + 0x00, + 0x00, + 0x00, + 0x00, + 0x47, + 0xff, + 0x12, + 0x00, + 0x40, + 0xfd, + 0x60, + 0x27, + 0x27, + 0x27, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x5f, + 0xf6, + 0x0f, + 0x1f, + 0xe4, + 0xc5, + 0x01, + 0xe0, + 0x89, + 0x0e, + 0x07, + 0x31, + 0x08, + 0xfa, + 0x4e, + 0x24, + 0x0a, + 0x00, + 0x0e, + 0xff, + 0x40, + 0x2b, + 0xf5, + 0x65, + 0x00, + 0x36, + 0xef, + 0xd1, + 0x5b, + 0x00, + 0x05, + 0xcd, + 0x9e, + 0x4b, + 0xf8, + 0x2d, + 0x00, + 0x1e, + 0xf6, + 0xda, + 0x63, + 0x00, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x95, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x10, + 0x5f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x68, + 0xd4, + 0x04, + 0xec, + 0x8a, + 0x14, + 0x3f, + 0x27, + 0x2c, + 0x01, + 0x54, + 0xee, + 0x00, + 0x00, + 0x00, + 0xea, + 0xff, + 0xff, + 0xff, + 0xe6, + 0x51, + 0xdb, + 0xfd, + 0xea, + 0xa3, + 0x11, + 0x00, + 0x00, + 0x6c, + 0xea, + 0x00, + 0x00, + 0x00, + 0x00, + 0x47, + 0xff, + 0x12, + 0x00, + 0xa0, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0f, + 0xc8, + 0xf7, + 0xdf, + 0x83, + 0xc5, + 0x00, + 0x3f, + 0xae, + 0xf4, + 0xfc, + 0x9f, + 0x0a, + 0xd2, + 0xfc, + 0xfb, + 0xf7, + 0x90, + 0x0e, + 0xff, + 0x40, + 0x00, + 0x65, + 0xf6, + 0x00, + 0x00, + 0xd4, + 0xf0, + 0x09, + 0x00, + 0x83, + 0xe5, + 0x10, + 0x00, + 0xa2, + 0xd0, + 0x00, + 0x00, + 0xb4, + 0xf4, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc6, + 0x95, + 0x95, + 0x95, + 0xb6, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x82, + 0xe8, + 0x00, + 0x00, + 0x00, + 0x00, + 0x11, + 0xf7, + 0x00, + 0x4f, + 0xbf, + 0xfe, + 0xf1, + 0x57, + 0xe9, + 0xf3, + 0xde, + 0x67, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0c, + 0x02, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x0d, + 0x0a, + 0x00, + 0xaa, + 0x94, + 0x08, + 0x02, + 0x4e, + 0xf8, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x06, + 0xbf, + 0xa0, + 0x00, + 0x00, + 0x00, + 0x00, + 0x58, + 0xaa, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x03, + 0x0f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x10, + 0x05, + 0x00, + 0x00, + 0x0f, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0xa0, + 0xae, + 0x37, + 0x49, + 0xae, + 0x9e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x42, + 0xc3, + 0xf1, + 0x1e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x58, + 0xaa, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x79, + 0xb0, + 0x96, + 0x5c, + 0x10, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x89, + 0x9f, + 0x3a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x3d, + 0x77, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x5a, + 0xff, + 0x5a, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x00, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x8f, + 0xff, + 0xff, + 0xff, + 0xff, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x3c, + 0xaa, + 0x3c, + 0x8f, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x8f, + 0xff, + 0x8f, + 0x00, + 0x8f, + 0xff, + 0x8f, + 0xff, + 0xff, + 0xff, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x8f, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x8f, + 0xff, + 0x8f, + 0xff, + 0x8f, + 0x00, + 0xff, + 0xff, + 0xff, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x14, + 0x5c, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x5c, + 0x14, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x6e, + 0xaa, + 0x00, + 0x3c, + 0xaa, + 0x3c, + 0x00, + 0x00, + 0x8f, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x8f, + 0xff, + 0x8f, + 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, + 0x18, + 0x86, + 0xbd, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x10, + 0x17, + 0x00, + 0x00, + 0x00, + 0x0a, + 0x35, + 0x13, + 0x00, + 0x00, + 0x30, + 0x20, + 0x1d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x31, + 0x17, + 0x00, + 0x33, + 0x15, + 0x07, + 0x35, + 0x35, + 0x26, + 0x35, + 0x31, + 0x03, + 0x7f, + 0x18, + 0x03, + 0x7f, + 0x18, + 0x0b, + 0xbc, + 0x31, + 0x00, + 0x00, + 0x0d, + 0x35, + 0x00, + 0x00, + 0x00, + 0x5e, + 0xff, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0x5e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xa5, + 0xff, + 0x00, + 0x5a, + 0xff, + 0x5a, + 0x00, + 0x8f, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x8f, + 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, + 0x81, + 0xd8, + 0x56, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x4f, + 0x3b, + 0x00, + 0x00, + 0x00, + 0xb5, + 0xf5, + 0xb0, + 0xe7, + 0x28, + 0x00, + 0x26, + 0xff, + 0x55, + 0x00, + 0x3e, + 0xe7, + 0x4c, + 0xdc, + 0x06, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf4, + 0x64, + 0x22, + 0xff, + 0xcb, + 0x8e, + 0xd6, + 0xeb, + 0x0b, + 0xc5, + 0x2f, + 0x0b, + 0xc5, + 0x2f, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x33, + 0xfc, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0x70, + 0x00, + 0x00, + 0x70, + 0xff, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x8f, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x17, + 0x36, + 0x36, + 0x36, + 0x36, + 0x00, + 0x00, + 0x00, + 0x00, + 0x07, + 0xcd, + 0xa8, + 0x36, + 0x03, + 0x35, + 0x00, + 0x24, + 0x0b, + 0xcf, + 0x85, + 0x36, + 0x00, + 0x32, + 0xfd, + 0x1b, + 0x01, + 0xbb, + 0x85, + 0x00, + 0x19, + 0xff, + 0x48, + 0x01, + 0xca, + 0x70, + 0x01, + 0xca, + 0x6f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2c, + 0x09, + 0x00, + 0x2c, + 0x08, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf4, + 0x64, + 0x22, + 0xff, + 0x12, + 0x00, + 0x46, + 0xeb, + 0x03, + 0x36, + 0x0e, + 0x03, + 0x36, + 0x0e, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x1f, + 0xea, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0x70, + 0x70, + 0xff, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x55, + 0x37, + 0x00, + 0x37, + 0x55, + 0x00, + 0x1e, + 0x55, + 0x1e, + 0xff, + 0x8f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x57, + 0xcc, + 0xcc, + 0xe8, + 0xf8, + 0x00, + 0x00, + 0x00, + 0x00, + 0x98, + 0xf3, + 0xe6, + 0xc9, + 0x0e, + 0xff, + 0x85, + 0xfc, + 0x93, + 0xfb, + 0xde, + 0xc9, + 0x00, + 0x41, + 0xf6, + 0x00, + 0x00, + 0x9e, + 0x99, + 0x00, + 0x0c, + 0xff, + 0x3c, + 0x2c, + 0xff, + 0x0f, + 0x00, + 0x69, + 0xd0, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x1e, + 0xf8, + 0x54, + 0x20, + 0xf8, + 0x51, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf4, + 0x64, + 0x22, + 0xff, + 0x12, + 0x00, + 0x46, + 0xeb, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x0a, + 0xa3, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0xff, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xff, + 0xa5, + 0x00, + 0xa5, + 0xff, + 0x00, + 0x5a, + 0xff, + 0x5a, + 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, + 0x14, + 0xe6, + 0x6f, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x8b, + 0x00, + 0x0e, + 0xff, + 0xc7, + 0x1f, + 0x00, + 0xee, + 0x64, + 0x00, + 0x00, + 0x64, + 0xe7, + 0x00, + 0x00, + 0x8f, + 0xba, + 0x00, + 0x01, + 0xfd, + 0x2f, + 0x54, + 0xe5, + 0x00, + 0x00, + 0x41, + 0xf6, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x02, + 0x45, + 0x09, + 0x03, + 0x46, + 0x09, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf4, + 0x64, + 0x22, + 0xff, + 0x12, + 0x00, + 0x46, + 0xeb, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0xff, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x55, + 0x37, + 0x00, + 0x37, + 0x55, + 0x00, + 0x1e, + 0x55, + 0x1e, + 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, + 0x01, + 0xb1, + 0xb6, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x8b, + 0x00, + 0x0e, + 0xff, + 0x5d, + 0x00, + 0x00, + 0xee, + 0x64, + 0x00, + 0x9b, + 0xe8, + 0x53, + 0x00, + 0x00, + 0x23, + 0xc4, + 0xd7, + 0x00, + 0xf1, + 0x22, + 0x7b, + 0xbe, + 0x00, + 0x00, + 0x1a, + 0xff, + 0x00, + 0x00, + 0x00, + 0x62, + 0xa4, + 0xa4, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf4, + 0x64, + 0x22, + 0xff, + 0x12, + 0x00, + 0x46, + 0xeb, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0x70, + 0x70, + 0xff, + 0x70, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x69, + 0xe8, + 0x17, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x8b, + 0x00, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xee, + 0x64, + 0x00, + 0x52, + 0xcc, + 0xa7, + 0x00, + 0x00, + 0x4e, + 0xea, + 0x76, + 0x00, + 0x75, + 0x0c, + 0x6f, + 0xca, + 0x00, + 0x00, + 0x26, + 0xff, + 0x00, + 0x00, + 0x00, + 0x49, + 0x7a, + 0x7a, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf4, + 0x64, + 0x22, + 0xff, + 0x12, + 0x00, + 0x46, + 0xeb, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0x70, + 0x00, + 0x00, + 0x70, + 0xff, + 0x70, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x2a, + 0xf5, + 0x4c, + 0x03, + 0x03, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x8b, + 0x00, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0xd0, + 0x8f, + 0x05, + 0x00, + 0x4a, + 0xf5, + 0x00, + 0x00, + 0x99, + 0xa2, + 0x00, + 0x08, + 0x75, + 0x17, + 0x47, + 0xf2, + 0x01, + 0x00, + 0x4e, + 0xeb, + 0x09, + 0x56, + 0x17, + 0x00, + 0x00, + 0x00, + 0x08, + 0x75, + 0x17, + 0x08, + 0x75, + 0x17, + 0x09, + 0x56, + 0x17, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf4, + 0x64, + 0x22, + 0xff, + 0x12, + 0x00, + 0x46, + 0xeb, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x5e, + 0xff, + 0x70, + 0x00, + 0x00, + 0x00, + 0x00, + 0x70, + 0xff, + 0x5e, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x9a, + 0xff, + 0xff, + 0xff, + 0xff, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc7, + 0x8b, + 0x00, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x62, + 0xee, + 0xfc, + 0x00, + 0x41, + 0xf7, + 0x00, + 0x00, + 0x9f, + 0x99, + 0x00, + 0x27, + 0xfe, + 0x4f, + 0x1a, + 0xfc, + 0x27, + 0x00, + 0x82, + 0xba, + 0x3d, + 0xf9, + 0x14, + 0x00, + 0x00, + 0x00, + 0x27, + 0xfe, + 0x4f, + 0x27, + 0xfe, + 0x4f, + 0x3d, + 0xf9, + 0x14, + 0x00, + 0xea, + 0x6d, + 0x00, + 0xf6, + 0x60, + 0x22, + 0xff, + 0x12, + 0x00, + 0x46, + 0xeb, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x0e, + 0xff, + 0x43, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x14, + 0x5c, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x5c, + 0x14, + 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, + 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, + 0x00, + 0x00, + 0x06, + 0x0e, + 0x00, + 0x13, + 0xf7, + 0x74, + 0x3a, + 0xe1, + 0x6d, + 0x00, + 0x00, + 0x12, + 0x00, + 0x00, + 0x97, + 0x9e, + 0x0d, + 0xeb, + 0x3d, + 0x71, + 0xaf, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x12, + 0x00, + 0x00, + 0x12, + 0x00, + 0x71, + 0xaf, + 0x00, + 0x00, + 0x00, + 0x00, + 0x33, + 0xff, + 0x25, + 0x22, + 0xff, + 0x3c, + 0x20, + 0x67, + 0xeb, + 0x00, + 0x00, + 0x00, + 0x17, + 0xff, + 0x42, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xc1, + 0xc1, + 0xc1, + 0xc1, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x58, + 0xa8, + 0x8b, + 0x86, + 0x0d, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x16, + 0xc8, + 0x5c, + 0x97, + 0x00, + 0x49, + 0x33, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x49, + 0x33, + 0x00, + 0x00, + 0x00, + 0x00, + 0xf9, + 0xad, + 0x00, + 0x1c, + 0xd1, + 0xd1, + 0x95, + 0xd1, + 0xc0, + 0x00, + 0x00, + 0x00, + 0xba, + 0xf7, + 0x0e, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + + /* explicit padding bytes since Odin doesn't support implicit zero padded arrays. */ + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +} + +default_atlas := [?]Rect { + DEFAULT_ATLAS_ICON_CLOSE = {88, 68, 16, 16}, + DEFAULT_ATLAS_ICON_CHECK = {0, 0, 18, 18}, + DEFAULT_ATLAS_ICON_EXPANDED = {118, 68, 7, 5}, + DEFAULT_ATLAS_ICON_COLLAPSED = {113, 68, 5, 7}, + DEFAULT_ATLAS_ICON_RESIZE = {104, 68, 9, 9}, + DEFAULT_ATLAS_WHITE = {125, 68, 3, 3}, + DEFAULT_ATLAS_FONT + 32 = {84, 68, 2, 17}, + DEFAULT_ATLAS_FONT + 33 = {39, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 34 = {114, 51, 5, 17}, + DEFAULT_ATLAS_FONT + 35 = {34, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 36 = {28, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 37 = {58, 0, 9, 17}, + DEFAULT_ATLAS_FONT + 38 = {103, 0, 8, 17}, + DEFAULT_ATLAS_FONT + 39 = {86, 68, 2, 17}, + DEFAULT_ATLAS_FONT + 40 = {42, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 41 = {45, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 42 = {34, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 43 = {40, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 44 = {48, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 45 = {51, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 46 = {54, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 47 = {124, 34, 4, 17}, + DEFAULT_ATLAS_FONT + 48 = {46, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 49 = {52, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 50 = {58, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 51 = {64, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 52 = {70, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 53 = {76, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 54 = {82, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 55 = {88, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 56 = {94, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 57 = {100, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 58 = {57, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 59 = {60, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 60 = {106, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 61 = {112, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 62 = {118, 34, 6, 17}, + DEFAULT_ATLAS_FONT + 63 = {119, 51, 5, 17}, + DEFAULT_ATLAS_FONT + 64 = {18, 0, 10, 17}, + DEFAULT_ATLAS_FONT + 65 = {41, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 66 = {48, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 67 = {55, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 68 = {111, 0, 8, 17}, + DEFAULT_ATLAS_FONT + 69 = {0, 35, 6, 17}, + DEFAULT_ATLAS_FONT + 70 = {6, 35, 6, 17}, + DEFAULT_ATLAS_FONT + 71 = {119, 0, 8, 17}, + DEFAULT_ATLAS_FONT + 72 = {18, 17, 8, 17}, + DEFAULT_ATLAS_FONT + 73 = {63, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 74 = {66, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 75 = {62, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 76 = {12, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 77 = {28, 0, 10, 17}, + DEFAULT_ATLAS_FONT + 78 = {67, 0, 9, 17}, + DEFAULT_ATLAS_FONT + 79 = {76, 0, 9, 17}, + DEFAULT_ATLAS_FONT + 80 = {69, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 81 = {85, 0, 9, 17}, + DEFAULT_ATLAS_FONT + 82 = {76, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 83 = {18, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 84 = {24, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 85 = {26, 17, 8, 17}, + DEFAULT_ATLAS_FONT + 86 = {83, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 87 = {38, 0, 10, 17}, + DEFAULT_ATLAS_FONT + 88 = {90, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 89 = {30, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 90 = {36, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 91 = {69, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 92 = {124, 51, 4, 17}, + DEFAULT_ATLAS_FONT + 93 = {72, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 94 = {42, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 95 = {15, 68, 4, 17}, + DEFAULT_ATLAS_FONT + 96 = {48, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 97 = {54, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 98 = {97, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 99 = {0, 52, 5, 17}, + DEFAULT_ATLAS_FONT + 100 = {104, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 101 = {60, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 102 = {19, 68, 4, 17}, + DEFAULT_ATLAS_FONT + 103 = {66, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 104 = {111, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 105 = {75, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 106 = {78, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 107 = {72, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 108 = {81, 68, 3, 17}, + DEFAULT_ATLAS_FONT + 109 = {48, 0, 10, 17}, + DEFAULT_ATLAS_FONT + 110 = {118, 17, 7, 17}, + DEFAULT_ATLAS_FONT + 111 = {0, 18, 7, 17}, + DEFAULT_ATLAS_FONT + 112 = {7, 18, 7, 17}, + DEFAULT_ATLAS_FONT + 113 = {14, 34, 7, 17}, + DEFAULT_ATLAS_FONT + 114 = {23, 68, 4, 17}, + DEFAULT_ATLAS_FONT + 115 = {5, 52, 5, 17}, + DEFAULT_ATLAS_FONT + 116 = {27, 68, 4, 17}, + DEFAULT_ATLAS_FONT + 117 = {21, 34, 7, 17}, + DEFAULT_ATLAS_FONT + 118 = {78, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 119 = {94, 0, 9, 17}, + DEFAULT_ATLAS_FONT + 120 = {84, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 121 = {90, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 122 = {10, 68, 5, 17}, + DEFAULT_ATLAS_FONT + 123 = {31, 68, 4, 17}, + DEFAULT_ATLAS_FONT + 124 = {96, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 125 = {35, 68, 4, 17}, + DEFAULT_ATLAS_FONT + 126 = {102, 51, 6, 17}, + DEFAULT_ATLAS_FONT + 127 = {108, 51, 6, 17}, +} diff --git a/game/ui/raylib.odin b/game/ui/raylib.odin new file mode 100644 index 0000000..9c12dd8 --- /dev/null +++ b/game/ui/raylib.odin @@ -0,0 +1,71 @@ +// Raylib renderer for microui + +package ui + +import "core:log" +import "core:strings" +import rl "vendor:raylib" +import "vendor:raylib/rlgl" + +to_rl_color :: proc(c: Color) -> rl.Color { + return rl.Color{c.r, c.g, c.b, c.a} +} + +rl_get_font_size :: proc(font: Font) -> i32 { + font := cast(^rl.Font)font + return font.baseSize if font != nil else 16 +} + +rl_measure_text_2d :: #force_inline proc(font: Font, text: string) -> rl.Vector2 { + font_size := rl_get_font_size(font) + font := (cast(^rl.Font)font)^ if font != nil else rl.GetFontDefault() + size := rl.MeasureTextEx( + font, + strings.clone_to_cstring(text, context.temp_allocator), + f32(font_size), + 0, + ) + + return size +} + +rl_measure_text_width :: proc(font: Font, text: string) -> i32 { + return i32(rl_measure_text_2d(font, text).x) +} + +rl_measure_text_height :: proc(font: Font) -> i32 { + return i32(rl_measure_text_2d(font, "A").y) +} + +rl_draw :: proc(ctx: ^Context) { + tmp_cmd: ^Command + for cmd in next_command_iterator(ctx, &tmp_cmd) { + log.debugf("ui cmd: %v", cmd) + switch c in cmd { + case ^Command_Clip: + rlgl.Scissor(c.rect.x, c.rect.y, c.rect.w, c.rect.h) + case ^Command_Text: + font := cast(^rl.Font)c.font + rl.DrawText( + strings.clone_to_cstring(c.str, context.temp_allocator), + c.pos.x, + c.pos.y, + font.baseSize if font != nil else 16, + to_rl_color(c.color), + ) + case ^Command_Rect: + rl.DrawRectangle(c.rect.x, c.rect.y, c.rect.w, c.rect.h, to_rl_color(c.color)) + case ^Command_Line: + segments := get_line_segments(ctx, c.first_segment, c.num_segments) + + for i in 1 ..< len(segments) { + p1 := segments[i - 1] + p2 := segments[i] + + rl.DrawLineV(p1, p2, to_rl_color(c.color)) + } + case ^Command_Jump: + case ^Command_Icon: + } + } +}