-- title: TileMan -- author: ArchaicVirus -- desc: Generates infinite procedural terrain with Auto-Map -- site: https://github.com/archaicvirus -- license: MIT License -- version: 3.0 -- script: lua --load in generation settings defs -- ore props: -- color_keys - transparent color (despite plural name) -- sprite_id - highest sprite index for this ore -- biome_id - biome this can occur in (only one) -- map_cols - palette indices for drawing tile on world map ores = { [1] = { name = 'Iron', offset = 15000, id = 3, scale = 0.011, min = 15, max = 16, bmin = 45, bmax = 100, color_keys = 4, tile_id = 162, sprite_id = 178, biome_id = 2, map_cols = {8,11,12,13,14,15}, }, [2] = { name = 'Copper', offset = 10000, id = 4, scale = 0.013, min = 15, max = 16, bmin = 33, bmax = 40, color_keys = 1, tile_id = 161, sprite_id = 177, biome_id = 2, map_cols = {2,3,4,15}, }, [3] = { name = 'Coal', offset = 50000, id = 6, scale = 0.020, min = 14, max = 17, bmin = 35, bmax = 75, color_keys = 4, tile_id = 163, sprite_id = 179, biome_id = 3, map_cols = {0,14,15}, }, [4] = { name = 'Stone', offset = 22500, id = 5, scale = 0.018, min = 15, max = 16, bmin = 20, bmax = 70, color_keys = 4, tile_id = 160, sprite_id = 176, biome_id = 1, map_cols = {12,13,14,15}, }, } -- biome props: -- tree_id - top-left sprite index for tree -- color_key - transparent color for tree/clutter biomes = { [1] = { name = 'Desert', tile_id_offset = 0, min = 20, max = 30, t_min = 21, t_max = 25, tree_id = 193, tree_density = 0.05, color_key = 0, map_col = 4, clutter = 0.02 }, [2] = { name = 'Prairie', tile_id_offset = 16, min = 30, max = 45, t_min = 33, t_max = 40, tree_id = 196, tree_density = 0.05, color_key = 1, map_col = 6, clutter = 0.08 }, [3] = { name = 'Forest', tile_id_offset = 32, min = 45, max = 101, t_min = 47, t_max = 99, tree_id = 199, tree_density = 0.05, color_key = 1, map_col = 7, clutter = 0.05 }, } TileManager = {} TileManager.__index = TileManager auto_map = { --N E S W --tiles surrounding land --0 is land, 1 is water or other biome ['1000'] = {sprite_id = 1, rot = 0}, ['0100'] = {sprite_id = 1, rot = 1}, ['0010'] = {sprite_id = 1, rot = 2}, ['0001'] = {sprite_id = 1, rot = 3}, ['1100'] = {sprite_id = 2, rot = 1}, ['0110'] = {sprite_id = 2, rot = 2}, ['0011'] = {sprite_id = 2, rot = 3}, ['1001'] = {sprite_id = 2, rot = 0}, ['1101'] = {sprite_id = 3, rot = 0}, ['1110'] = {sprite_id = 3, rot = 1}, ['0111'] = {sprite_id = 3, rot = 2}, ['1011'] = {sprite_id = 3, rot = 3}, ['0101'] = {sprite_id = 4, rot = 0}, ['1010'] = {sprite_id = 4, rot = 1}, ['1111'] = {sprite_id = 0, rot = 0}, } function ore_sample(x, y, tile) local biome = tile.biome for i = 1, #ores do local scale = ores[i].scale -- ((4 - biome)/100) local noise = (simplex.Noise2D(x * scale + ((ores[i].offset * biome) * scale) + offset * scale, (y * scale) + ((ores[i].offset * biome) * scale) + (offset * scale)) / 2 + 0.5) * 16 if noise >= ores[i].min and noise <= ores[i].max and tile.noise >= ores[i].bmin and tile.noise <= ores[i].bmax then return i end end return false end function AutoMap(x, y) local tile = TileMan.tiles[y][x] TileMan.tiles[y][x].visited = true --Here, 'adj' is the north, east, south, and west 'neighboring' tiles (in local space) local adj = { [1] = {x = 0, y = -1}, [2] = {x = 1, y = 0}, [3] = {x = 0, y = 1}, [4] = {x = -1, y = 0}, } local key = '' for i = 1, 4 do --Grab the neighbor tile local near = TileMan.tiles[y + adj[i].y][x + adj[i].x] --Determine if neighbor is a '0' or '1', meaning 0 is land, 1 is water or a different biome if not near.is_land or near.biome < tile.biome then key = key .. '1' TileMan.tiles[y][x].border_col = biomes[near.biome].map_col else key = key .. '0' end end --Try to index the key we just created local new_tile = auto_map[key] --If key exists, then valid config detected, so set tile to the returned value, otherwise return if not new_tile then return end TileMan.tiles[y][x].sprite_id = new_tile.sprite_id + 11 + biomes[tile.biome].tile_id_offset TileMan.tiles[y][x].is_border = true --TileMan.tiles[y][x].is_tree = false TileMan.tiles[y][x].ore = false TileMan.tiles[y][x].flip = 0 TileMan.tiles[y][x].rot = new_tile.rot end function TileManager.new() --Creates a TileManager instance - cache's all the generated terrain in memory --Here, using __index metemethod, we can automatically trigger the create_tile --method whenever a non-existent value is indexed local self = setmetatable({}, TileManager) local tile_mt = { __index = function(row, x) --Here's where the magic happens, in create_tile local tile = TileManager.create_tile(x, row.y) row[x] = tile return tile end } local tiles_mt = { __index = function(tiles, y) local row = setmetatable({y = y}, tile_mt) tiles[y] = row return row end } self.tiles = setmetatable({}, tiles_mt) return self end function TileManager.create_tile(x, y) --Replace with your own function, this gets called once whenever a 'new' tile is indexed local scale = 0.0005 local scale2 = 0.025 --Here we sample 2 noise values and blend them together local base_noise = (simplex.Noise2D(x * scale + offset * scale, (y * scale) + (offset * scale)) / 2 + 0.5) * 100 local addl_noise = (simplex.Noise2D(x * scale2 + offset * scale2, (y * scale2) + (offset * scale2))) * 100 --Now base_noise is used to determine biome and land/water --base_noise = ((base_noise * 3) + addl_noise) / 4 base_noise = lerp(base_noise, addl_noise, 0.05) local tile = { noise = base_noise, is_land = base_noise >= 20 and true or false, biome = 1, is_border = false, is_tree = false, visited = false, b_visited = false, rot = 0, offset = {x = math.random(1, 2), y = math.random(1, 4)}, } for i = 1, #biomes do if base_noise > biomes[i].min and base_noise < biomes[i].max then tile.biome = i break end end tile.flip = math.random() > 0.5 and 1 or 0 --If base_noise value is high enough, then try to generate an ore type tile.ore = tile.is_land and base_noise > 21 and ore_sample(x, y, tile) or false if not tile.is_land then --Water tile tile.color = floor(math.random(2)) + 8 tile.sprite_id = WATER_SPRITE tile.rot = floor(math.random(0,3)) else tile.sprite_id = biomes[tile.biome].tile_id_offset tile.color = biomes[tile.biome].map_col end --If ore-generation was successful, then set sprite_id and color if tile.ore then tile.color = ores[tile.ore].map_cols[floor(math.random(#ores[tile.ore].map_cols))] tile.rot = math.random(4) % 4 end if tile.is_land and not tile.ore then --Generate clutter based on biome clutter scale, ex grass, rocks, trees, etc scale = 0.001 local tree = base_noise --local tree = (simplex.Noise2D((x * scale) + (offset * scale), (y * scale) + (offset * scale)) / 2 + 0.5) * 100 local tmin = biomes[tile.biome].t_min local tmax = biomes[tile.biome].t_max --local flip = math.random(0, 1) --trace('Tspawn try: ' .. biomes[tile.biome].name .. ', tmin: ' .. tmin .. ", tmax" .. tmax .. ', tnoise: ' .. tree .. ', tflip = ' .. flip) if tree >= biomes[tile.biome].t_min and tree <= biomes[tile.biome].t_max and math.random(0, 100) < (biomes[tile.biome].tree_density * 100) then --trace('trying to spawn a tree') tile.is_tree = true --tile.flip = flip elseif math.random(100) <= (biomes[tile.biome].clutter * 100) then local rand = floor(math.random(10)) tile.sprite_id = biomes[tile.biome].tile_id_offset + rand --tile.flip = math.random(1) > 0.5 and 1 or 0 if rand == 1 then tile.rot = math.random(4) % 4 end else tile.rot = math.random(4) % 4 end end return tile end function TileManager:set_tile(x, y, tile_id) local tile = self.tiles[y][x] tile_id = tile_id or biomes[tile.biome].tile_id_offset if tile.is_land and not tile.ore and not tile.is_border then self.tiles[y][x].sprite_id = tile_id self.tiles[y][x].is_tree = false end if tile.ore then self.tiles[y][x].ore = false self.tiles[y][x].is_tree = false self.tiles[y][x].sprite_id = biomes[tile.biome].tile_id_offset end end function TileManager:draw_terrain(player, screenWidth, screenHeight) local cameraTopLeftX = player.x - 116 local cameraTopLeftY = player.y - 64 local subTileX = cameraTopLeftX % 8 local subTileY = cameraTopLeftY % 8 local startX = floor(cameraTopLeftX / 8) local startY = floor(cameraTopLeftY / 8) for screenY = 1, screenHeight do for screenX = 1, screenWidth do local worldX = startX + screenX local worldY = startY + screenY local tile = self.tiles[worldY][worldX] local sx = (screenX - 1) * 8 - subTileX local sy = (screenY - 1) * 8 - subTileY --Here, AutoMap is called once per tile during draw --AutoMap is what sets the 'border' or edge tiles if not tile.visited and tile.is_land then AutoMap(worldX, worldY) end if tile.ore then rect(sx, sy, 8, 8, biomes[tile.biome].map_col) sspr(ores[tile.ore].tile_id, sx, sy, ores[tile.ore].color_keys, 1, 0, tile.rot) elseif not tile.is_border then local id, rot, flip = tile.sprite_id, tile.rot, tile.flip if not tile.is_land then --for water tiles only if worldX % 2 == 1 and worldY % 2 == 1 then flip = 3 -- Both horizontal and vertical flip elseif worldX % 2 == 1 then flip = 1 -- Horizontal flip elseif worldY % 2 == 1 then flip = 2 -- Vertical flip end --procedural water sprite id = 224 sspr(224, sx, sy, 0, 1, flip, rot) else --else is land rect(sx, sy, 8, 8, biomes[tile.biome].map_col) sspr(biomes[tile.biome].tile_id_offset, sx, sy, biomes[tile.biome].map_col, 1, 0, tile.rot) if id ~= biomes[tile.biome].tile_id_offset then sspr(id, sx, sy, biomes[tile.biome].map_col, 1, flip) end end else if tile.biome == 1 then local flip = 0 if worldX % 2 == 1 and worldY % 2 == 1 then flip = 3 -- Both horizontal and vertical flip elseif worldX % 2 == 1 then flip = 1 -- Horizontal flip elseif worldY % 2 == 1 then flip = 2 -- Vertical flip end sspr(224, sx, sy, -1, 1, flip) sspr(tile.sprite_id, sx, sy, 0, 1, 0, tile.rot) else sspr(tile.sprite_id, sx, sy, -1, 1, 0, tile.rot) end --if tile.ore then sspr(ores[tile.ore].tile_id, sx, sy, ores[tile.ore].color_keys, 1, tile.flip, tile.rot) end end --rectb(sx, sy, 8, 8, 4) --sspr(340, sx, sy, -1) end end end function TileManager:draw_clutter(player, screenWidth, screenHeight) local cameraTopLeftX = player.x - 116 local cameraTopLeftY = player.y - 64 local subTileX = cameraTopLeftX % 8 local subTileY = cameraTopLeftY % 8 local startX = floor(cameraTopLeftX / 8) local startY = floor(cameraTopLeftY / 8) for screenY = 1, screenHeight do for screenX = 1, screenWidth do local worldX = startX + screenX local worldY = startY + screenY local tile = self.tiles[worldY][worldX] local sx = (screenX - 1) * 8 - subTileX local sy = (screenY - 1) * 8 - subTileY --Here, the 19, 25, and 41 are just randomly chosen biome tiles --picked to spawn trees on, but you can use any tiles to limit trees to certain biomes if tile.is_tree then --trace('drawing tree') sspr(biomes[tile.biome].tree_id, sx - 9 + tile.offset.x, sy - 27 + tile.offset.y, biomes[tile.biome].color_key, 1, tile.flip, 0, 3, 4) --rectb(sx, sy, 8,8,2) end -- if tile.sprite_id == 19 then -- sspr(201, sx - 9 + tile.offset.x, sy - 28 + tile.offset.y, 0, 1, tile.flip, 0, 3, 4) -- elseif tile.sprite_id == 25 then -- sspr(198, sx - 6 + tile.offset.x, sy - 28 + tile.offset.y, 0, 1, tile.flip, 0, 3, 4) -- elseif tile.sprite_id == 41 then -- sspr(201, sx - 8 + tile.offset.x, sy - 28 + tile.offset.y, 0, 1, tile.flip, 0, 3, 4) -- end end end end function TileManager:draw_worldmap(player, x, y, width, height, center) --Simple pixel map, using the tile's assigned biome in - biome[i].map_col width, height = width or 240, height or 136 x, y = x or 120 - (width/2), y or 68 - (height/2) if center then x = (240/2) - (width/2) y = (136/2) - (height/2) end local map_x, map_y = x or 120 - (width/2) + 1, y or 68 - (height/2) + 2 local startX, startY = floor(player.x/8 - (width/2) + 1), floor(player.y/8 - (height/2) + 2) local biome_col = biomes[self.tiles[startY][startX].biome].map_col local skipped = 0 rectb(map_x - 1, map_y - 1, width + 2, height + 2, 9) rect(map_x, map_y, width, height, biome_col) --rect(map_x, map_y, width, height, biome_col) local biome = self.tiles[startY][startX].biome start_col = biomes[biome].map_col for y = 0, height - 1 do if y == 0 then end for x = 0, width - 1 do local tile = self.tiles[startY + y - 1][startX + x - 1] if tile.color ~= start_col or tile.ore or tile.is_tree or not tile.is_land or not tile.biome == biome then --*** For optional fog of war effect *** if rawget(self.tiles, startY + y - 1) and rawget(self.tiles[startY + y - 1], startX + x - 1) then -- local tile = self.tiles[startY + y - 1][startX + x - 1] -- if self.tiles[startY + y - 1][startX + x - 1].ore then pix(x + map_x, y + map_y, tile.is_tree and 6 or tile.color) end --else --skipped = skipped + 1 end end end --trace('skipped drawing ' .. skipped .. ' pixels') --trace('start color: ' .. biome_col) end function TileManager:save_worldmap(player, width, height) --Simple pixel map, using the tile's assigned biome in - biome[i].map_col width, height = width or 240, height or 136 x, y = 0, 0 local map_x, map_y = x or 120 - (width/2) + 1, y or 68 - (height/2) + 2 local startX, startY = floor(player.x/8 - (width/2) + 1), floor(player.y/8 - (height/2) + 2) local biome_col = biomes[self.tiles[startY][startX].biome].map_col local skipped = 0 rectb(map_x - 1, map_y - 1, width + 2, height + 2, 9) rect(map_x, map_y, width, height, biome_col) --rect(map_x, map_y, width, height, biome_col) for y = 0, height - 1 do if y == 0 then local biome = self.tiles[startY + y - 1][startX + x - 1].biome start_col = biomes[biome].map_col end for x = 0, width - 1 do local tile = self.tiles[startY + y - 1][startX + x - 1] pix(x + map_x, y + map_y, tile.is_tree and 6 or tile.color) end end end local math = math local table = table local tonumber = tonumber local ipairs = ipairs local error = error simplex = {} simplex.DIR_X = 0 simplex.DIR_Y = 1 simplex.DIR_Z = 2 simplex.DIR_W = 3 simplex.internalCache = false local Gradients3D = {{1,1,0},{-1,1,0},{1,-1,0},{-1,-1,0}, {1,0,1},{-1,0,1},{1,0,-1},{-1,0,-1}, {0,1,1},{0,-1,1},{0,1,-1},{0,-1,-1}} local Gradients4D = {{0,1,1,1}, {0,1,1,-1}, {0,1,-1,1}, {0,1,-1,-1}, {0,-1,1,1}, {0,-1,1,-1}, {0,-1,-1,1}, {0,-1,-1,-1}, {1,0,1,1}, {1,0,1,-1}, {1,0,-1,1}, {1,0,-1,-1}, {-1,0,1,1}, {-1,0,1,-1}, {-1,0,-1,1}, {-1,0,-1,-1}, {1,1,0,1}, {1,1,0,-1}, {1,-1,0,1}, {1,-1,0,-1}, {-1,1,0,1}, {-1,1,0,-1}, {-1,-1,0,1}, {-1,-1,0,-1}, {1,1,1,0}, {1,1,-1,0}, {1,-1,1,0}, {1,-1,-1,0}, {-1,1,1,0}, {-1,1,-1,0}, {-1,-1,1,0}, {-1,-1,-1,0}} local p = {151,160,137,91,90,15, 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180} -- To remove the need for index wrapping, double the permutation table length for i=1,#p do p[i-1] = p[i] p[i] = nil end for i=1,#Gradients3D do Gradients3D[i-1] = Gradients3D[i] Gradients3D[i] = nil end for i=1,#Gradients4D do Gradients4D[i-1] = Gradients4D[i] Gradients4D[i] = nil end local perm = {} for i=0,255 do perm[i] = p[i] perm[i+256] = p[i] end -- A lookup table to traverse the sim around a given point in 4D. -- Details can be found where this table is used, in the 4D noise method. local sim = { {0,1,2,3},{0,1,3,2},{0,0,0,0},{0,2,3,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,2,3,0}, {0,2,1,3},{0,0,0,0},{0,3,1,2},{0,3,2,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,3,2,0}, {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, {1,2,0,3},{0,0,0,0},{1,3,0,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,3,0,1},{2,3,1,0}, {1,0,2,3},{1,0,3,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,0,3,1},{0,0,0,0},{2,1,3,0}, {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, {2,0,1,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,0,1,2},{3,0,2,1},{0,0,0,0},{3,1,2,0}, {2,1,0,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,1,0,2},{0,0,0,0},{3,2,0,1},{3,2,1,0}} local function Dot2D(tbl, x, y) return tbl[1]*x + tbl[2]*y; end local function Dot3D(tbl, x, y, z) return tbl[1]*x + tbl[2]*y + tbl[3]*z end local function Dot4D( tbl, x,y,z,w) return tbl[1]*x + tbl[2]*y + tbl[3]*z + tbl[3]*w; end local Prev2D = {} function simplex.seed(seed) seed = seed or tstamp() math.randomseed(seed * seed) for i = 1, 256 do p[i] = math.floor(math.random()*256) end end -- 2D simplex noise function simplex.Noise2D(xin, yin) if simplex.internalCache and Prev2D[xin] and Prev2D[xin][yin] then return Prev2D[xin][yin] end local n0, n1, n2; -- Noise contributions from the three corners -- Skew the input space to determine which simplex cell we're in local F2 = 0.5*(math.sqrt(3.0)-1.0); local s = (xin+yin)*F2; -- Hairy factor for 2D local i = math.floor(xin+s); local j = math.floor(yin+s); local G2 = (3.0-math.sqrt(3.0))/6.0; local t = (i+j)*G2; local X0 = i-t; -- Unskew the cell origin back to (x,y) space local Y0 = j-t; local x0 = xin-X0; -- The x,y distances from the cell origin local y0 = yin-Y0; local i1, j1; -- Offsets for second (middle) corner of simplex in (i,j) coords if(x0>y0) then i1=1 j1=0 -- lower triangle, XY order: (0,0)->(1,0)->(1,1) else i1=0 j1=1 -- upper triangle, YX order: (0,0)->(0,1)->(1,1) end local x1 = x0 - i1 + G2; -- Offsets for middle corner in (x,y) unskewed coords local y1 = y0 - j1 + G2; local x2 = x0 - 1.0 + 2.0 * G2; -- Offsets for last corner in (x,y) unskewed coords local y2 = y0 - 1.0 + 2.0 * G2; -- Work out the hashed gradient indices of the three simplex corners local ii = i & 255 local jj = j & 255 local gi0 = perm[ii+perm[jj]] % 12; local gi1 = perm[ii+i1+perm[jj+j1]] % 12; local gi2 = perm[ii+1+perm[jj+1]] % 12; -- Calculate the contribution from the three corners local t0 = 0.5 - x0*x0-y0*y0; if t0<0 then n0 = 0.0; else t0 = t0 * t0 n0 = t0 * t0 * Dot2D(Gradients3D[gi0], x0, y0); end local t1 = 0.5 - x1*x1-y1*y1; if (t1<0) then n1 = 0.0; else t1 = t1*t1 n1 = t1 * t1 * Dot2D(Gradients3D[gi1], x1, y1); end local t2 = 0.5 - x2*x2-y2*y2; if (t2<0) then n2 = 0.0; else t2 = t2*t2 n2 = t2 * t2 * Dot2D(Gradients3D[gi2], x2, y2); end local retval = 70.0 * (n0 + n1 + n2) if simplex.internalCache then if not Prev2D[xin] then Prev2D[xin] = {} end Prev2D[xin][yin] = retval end return retval; end TileMan = TileManager.new() t = 0 m = {x = 0, y = 0, l = false} last_time = 0 fps = 60 player = {x = -1000, y = 0} sspr = spr floor = math.floor --toggle to show world-map show_map = false --toggle to show debug info debug = true --help menu show_help = true help = { [1] = 'SHIFT - Inspect tile (debug mode only)', [2] = 'TAB - Toggle debug mode', [3] = 'M - Toggle world map view', [4] = 'H - Toggle this menu', } water_anim = 0 dir = 1 --For a SET seed math.randomseed(666) --For RANDOM seed each re-load -- math.randomseed(tstamp()) offset = math.random(100000, 500000) simplex.seed() function get_sprite_pixel(sprite_id, x, y) local byte = peek(0x04000 + sprite_id * 32 + y * 4 + math.floor(x / 2)) return x % 2 == 0 and byte % 16 or byte // 16 end -- Function to set a pixel color in a sprite -- Arguments: sprite_id (0-511), x (0-7), y (0-7), color (palette index 0-15) function set_sprite_pixel(sprite_id, x, y, color) local addr = 0x04000 + sprite_id * 32 + y * 4 + math.floor(x / 2) local byte = peek(addr) if x % 2 == 0 then poke(addr, (byte - byte % 16) + color) else poke(addr, (color * 16) + byte % 16) end end --from wiki, linear interpolation function lerp(a,b,mu) return a*(1-mu)+b*mu end -- Set the size of the tiling texture local num_colors = 3 local start_color = 8 local tileSize = 8 local tileCount = 1 -- Set the water effect parameters local amplitude = num_colors local frequency = 0.22 local speed = 0.002 -- Function to update the water effect function update_water_effect(time) for sprite_id = 0, (tileCount * tileCount) - 1 do for y = 0, tileSize - 1 do for x = 0, tileSize - 1 do -- Get world coords for the current pixel local worldX = (sprite_id % tileCount) * tileSize + x local worldY = math.floor(sprite_id / tileCount) * tileSize + y -- Modulo for tiling texture local tileX = worldX % (tileSize * tileCount) local tileY = worldY % (tileSize * tileCount) -- Calculate the noise value using world coordinates and time local noiseValue = simplex.Noise2D(tileX * frequency, (tileY + time * speed) * frequency) -- Convert the noise value to a pixel color (palette index 0-15) local color = math.floor(((noiseValue + 1) / 2) * amplitude) + start_color -- Set the pixel color in the sprite set_sprite_pixel(224, x, y, color) end end end end function get_screen_cell(mouse_x, mouse_y) local cam_x, cam_y = 116 - player.x, 64 - player.y local mx = floor(cam_x) % 8 local my = floor(cam_y) % 8 return mouse_x - ((mouse_x - mx) % 8), mouse_y - ((mouse_y - my) % 8) end function get_world_cell(mouse_x, mouse_y) local cam_x = player.x - 116 local cam_y = player.y - 64 local sub_tile_x = cam_x % 8 local sub_tile_y = cam_y % 8 local sx = floor((mouse_x + sub_tile_x) / 8) local sy = floor((mouse_y + sub_tile_y) / 8) local wx = floor(cam_x / 8) + sx + 1 local wy = floor(cam_y / 8) + sy + 1 return TileMan.tiles[wy][wx], wx, wy end function clamp(value, min, max) return math.min(math.max(min, value), max) end function draw_debug(data, x, y) if debug then local width = 4 local height = #data * 7 for i = 1, #data do local length = print(data[i], 2, -10, 2, false, 1, true) if length > width then width = length + 4 end end x, y = clamp(x, 0, 240 - width), clamp(y, 0, 136 - height) rectb(x, y, width, height, 10) rect(x + 1, y + 1, width -2, height - 2, 8) for i = 1, #data do print(data[i], x + 2, i*6 - 4 + y, 11, false, 1, true) end end end function draw_tile_widget(x, y) local mx, my = mouse() local tile, wx, wy = get_world_cell(mx, my) local sx, sy = get_screen_cell(x, y) local type = tile.ore and ores[tile.ore].name or tile.is_land and 'Land' or 'Water' local biome = tile.is_land and biomes[tile.biome].name or 'Ocean' if tile.is_tree then rectb(sx + tile.offset.x - 9, sy + tile.offset.y - 26, 24, 32, 4) end local info = { 'Sprite: ' .. (tile.ore and tostring(ores[tile.ore].tile_id) or tile.is_land and tostring(tile.sprite_id) or 224), 'Type: ' .. type, 'Biome: ' .. biome, 'Coords: ' .. tostring(wx) .. ',' .. tostring(wy), } if tile.is_tree then info[4] = 'Tree' end draw_text_window(info, x, y) end function draw_text_window(data, x, y, fg, bg, text_color) fg, bg, text = fg or 9, bg or 8, text_color or 4 local width = 0 local height = #data * 7 + 3 for i = 1, #data do local string_width = print(data[i], 0, -10, 0, false, 1, true) if string_width > width then width = string_width end end width = width + 4 x, y = clamp(x, 1, 240 - width - 1), clamp(y, 1, 136 - height - 1) rectb(x, y, width, height, fg) rect(x + 1, y + 1, width - 2, height - 2, bg) for i = 1, #data do print(data[i], x + 1, y - 5 + i*7, 0, false, 1, true) print(data[i], x + 2, y - 5 + i*7, text, false, 1, true) end end function save_map() local tile1, wx, wy = get_world_cell(player.x, player.y) local start_x, start_y = wx - 120, wy - 68 for y = 0, 135 do for x = 0, 239 do local tile = TileMan.tiles[start_y + y][start_x + x] if not tile.visited and tile.is_land then AutoMap(start_x + x, start_y + y) end end end for y = 0, 135 do for x = 0, 239 do local tile = TileMan.tiles[start_y + y][start_x + x] mset(x, y, tile.sprite_id) end end sync(4, 0, true) end function TIC() local start_time = time() cls(0) if t % 2 == 0 then update_water_effect(time()) end t = t + 1 if t % 6 == 0 then water_anim = water_anim + 1 if water_anim > 3 then water_anim = 0 end end --replace mouse cursor with ours poke(0x3FFB, 341) local x, y, left = mouse() if key(23) or btn(0) then player.y = player.y - (show_map and 10 or 5) end if key(19) or btn(1) then player.y = player.y + (show_map and 10 or 5) end if key( 1) or btn(2) then player.x = player.x - (show_map and 10 or 5) end if key( 4) or btn(3) then player.x = player.x + (show_map and 10 or 5) end if keyp(49) then debug = not debug end if keyp(13) then show_map = not show_map end if keyp(37) then frequency = frequency - 0.01 end if keyp(38) then frequency = frequency + 0.01 end if keyp(8) then show_help = not show_help end if show_map then TileMan:draw_worldmap(player) else --Draw visible map TileMan:draw_terrain(player, 31, 18) TileMan:draw_clutter(player, 32, 21) end --Draw tile-grid highlight local tile, wx, wy = get_world_cell(x, y) local sx, sy = get_screen_cell(x, y) if not show_map then sspr(288, sx, sy, 0) end --Draw debug info if debug then local frame_time = floor(time() - start_time) local total_frame_time = floor(time() - last_time) draw_text_window({'Frame Time: ' .. frame_time .. 'ms', 'FPS: ' .. floor(1.0/total_frame_time * 1000)}, 2, 2) sspr(320, 116 - 8, 64, 0, 1, 0, 0, 2, 1) end if key(64) then draw_tile_widget(x + 5, y + 8) end if key(63) and keyp(20) then sync(0, 0, true) end if show_help then draw_text_window(help, 1, 25) end m.x, m.y, m.l = x, y, left if keyp(16) then save_map() end last_time = time() end -- -- 000:4444444443444444444444444444443444444444443444444444444444444444 -- 001:4444444444477446446777474477764744777777647677444777774444776744 -- 002:4445744444477444444775444447774444577444447774444447744444477444 -- 003:4647774444767774477737774767776747776777447777744447774644444444 -- 004:44444444444444444444444444444b444444bab444444b444444474444444444 -- 005:4647774444762764477232774767276746776777447777744447764644444444 -- 006:4444444445444444447444444474744444747444444444444444444444444444 -- 007:444444444444444444eddd444eddddd44ccdcdc444fcce444444444444444444 -- 008:44444444444444444444de444444cdc444444cd4444444444444444444444444 -- 009:4444444d44b444444bbd4444444bd4444444bd444d444bb444444b4444444444 -- 010:4444444444cccc444cccccc44c0c0cc44cceccc444cccc4444dede4444444444 -- 011:0000000000044000004444000444444004444440004444000004400000000000 -- 012:0000000044000404044444444444044444444444444444444444444444444444 -- 013:0000000000000044000004440000440400004444004444440404444404444444 -- 014:0000000000000000000000000000000000000000004444000444444044444444 -- 015:0404444004444440004444044044440000404400044444400044440404444440 -- 016:6666666666666666666666766666666666666666667666666666666666666666 -- 017:6666636666665666766456666767566565675676656756566666666666666666 -- 018:6666666666d666666d2d66d666d66d2d667666d6667666766666666666666666 -- 019:6666666666666666667666666675666666756656667567666666676666666666 -- 020:6676666667566666765666667664666676666766666665766666656766663667 -- 021:66666666666666666666666666666b666666bab666666b666666676666666666 -- 022:6669666666949666666866666667666666676666666766666666666666666666 -- 023:622666662c226666222266666cd666666cc66666666666666666666666666666 -- 024:66666666666cd66666edc66666dc666666666666666666666666666666666666 -- 025:66222c66622c22262c2222c2222ee22262ecce26666cc666666cc666666cc666 -- 026:666666666666666666cddd666eddddd66ccdcdc666ccce666666666666666666 -- 027:4444444444466444446666444666666446666664446666444446644444444444 -- 028:4444444466444646466666666666466666666666666666666666666666666666 -- 029:4444444444444444444446664444666644466666444666664466666644666666 -- 030:4444444444444444444444444444444444444444446666444666666466666666 -- 031:4646666446666664446666466466664444646644466666644466664646666664 -- 032:7777777776777777777777777777777777777777777777777777777777767777 -- 033:7777777777777777757777777757775775677657755775677557757775677777 -- 034:7777777777757777757757777767577677576767775757577757675777777777 -- 035:7777777776777777776777777765777677657767777775677777756777777777 -- 036:7726777772327777772647777774547777764777775677777776777777777777 -- 037:7777777777677777762677777767777777777777777776777777636777777677 -- 038:7777777777777777777777777777777777777777777777777777777777777777 -- 039:7777777777777777777777e7770770707e707f7777707f77777f7f7777777777 -- 040:777777777777777777eddd777eddddd77ccdcdc777fcce777777777777777777 -- 041:7777777777777777777777777777777777777777777777777777777777777777 -- 042:7777777777ddcdd77dcdddccddddcccdcddccdcefecceeef7ffffff777777777 -- 043:6666666666677666667777666777777667777776667777666667766666666666 -- 044:6666666677666767677777777777677777777777777777777777777777777777 -- 045:6666666666666676666667776666776766677777667677776677777767777777 -- 046:6666666666666666666666666666666666666666667777666777777677777777 -- 047:6777767667777776767777666677776766776766677777767677776667777776 -- 128:7ce7ce77cdd7edc7dec77cf7777777777ecd7de7edf77ece7ee7ecdc777777e7 -- 129:c2777727342f337733f744f772c742f7777777777437742ff323732f7d2f7f77 -- 130:7ce7cf778bd7fdb78ee778f777777777edcb7ff7fc8e78cf7ff7ffbc77777ef7 -- 131:7700700770fe70ef700f77f0770777777077770f000e70f00ef070e77f077777 -- 144:6ce6ce66cdd6edc6dec66cf6666666666ecd6de6edf66ece6ee6ecdc666666e6 -- 145:c2666626342f336633f644f662c642f6666666666436642ff323632f6d2f6f66 -- 146:6ce6cf668bd6fdb68ee668f666666666edcb6ff6fc8e68cf6ff6ffbc66666ef6 -- 147:6600600660fe60ef600f66f0660666666066660f000e60f00ef060e66f066666 -- 160:4ce4ce44cdd4edc4dec44cf4444444444ecd4de4edf44ece4ee4ecdc444444e4 -- 161:421112313c2f132133f112f112c11111111111111131112f132313231d2f1f34 -- 162:4ce4cf448bd4fdb48ee448f444444444edcb4ff4fc8e48cf4ff4ffbc44444ef4 -- 163:4400400440fe40ef400f44f0440444444044440f000e40f00ef040e44f044444 -- 193:0077777707556466746646567665656466677777677000007007777700746565 -- 194:0000000077000000657000076657007476650656776607567076755657576760 -- 195:0777700074746700565765706566666756777776677000070000000077770000 -- 196:1111111111111117111117551111155611117557111755611157575717567675 -- 197:77677777655656565575757557175676577567b765565bab571767b776761565 -- 198:1111111177111111667111115767111176767111676767117676767176176771 -- 199:1111111111111111111111111157575615656561575751566671676767677676 -- 200:1111111511111156111115755611676765617771565117776767717116756567 -- 201:7571111156561111157571116767611177177611775751717565656657575157 -- 209:0756665674665777766777007577700076670000676000000770000000700000 -- 210:6677777770733766002332700032230000333300000333300003333000023320 -- 211:6767700076756700776676700777657000077660000077600000067000000760 -- 212:55157756575757617676b676177b3b571177b7651111cc0611111c0511111bc1 -- 213:57576757656575717656567667617b7575776b57565657616165767611116c01 -- 214:6756576175656567565b57577576b67757b77771617777117bc7b111bb1b2b11 -- 215:6771717116777777116757571113211111113757117676761567177156567777 -- 216:7777561673276513113676316532673157365136765375577163656557573757 -- 217:717676766777b776166beb561777b66176325111573211111566561157577571 -- 226:0003223000033330000033300000333300002332000032230003333300033333 -- 227:0000070000000000000000000000000000000000000000000000000000000000 -- 228:11111c0c111111cb1111111c1111111b1111111b111111111111111111111111 -- 229:1111bb011111bc01b111cb0100110c010b11cbc1b0110c1c1bc1b0cb1b0c0cb1 -- 230:c011b111b0111111cc111111b0111111cc111111b11111111111111111111111 -- 231:67676765767176636777776116177711111711111171111111761111111b1111 -- 232:6515635626117367321733673217532613213321113233111133321111133211 -- 233:1676561675727575173767661567717613216661133211111321111133211111 -- 242:0003333000023320000322300003333000033330002333200032223000333300 -- 244:1111111111111111111111111111111111111111111111111111111111111111 -- 245:1cb0bb1111cc0c11111bc0111110bc11111b0b11111cb01111100c111110b011 -- 246:1111111111111111111111111111111111111111111111111111111111111111 -- 247:11b9b111111b1111111111111111111111111111111111111111111111111111 -- 248:1113321311133233111333321113332111133211111332111113321111333221 -- 249:3211111121111111111111111111111111111111111111111111111111111111 -- -- -- 032:0202020220000000000000022000000000000002200000000000000220202020 -- 064:bbf00000bf00000dbf000000bf000d00bf000d00bf000000bf00000dbbf00000 -- 065:00000fbbd00000fb000000fb00d000fb00d000fb000000fbd00000fb00000fbb -- 085:bbb00000bd000000b0b00000000b000000000000000000000000000000000000 -- -- -- 000:0202020202022202020202020202023202020202027202020202020202020202020202020202020202020202020202020202820202020202020202028202020202020202a2020202020202029202020202020202020202020202020202020202020202020202020202020202020202020202020202720202020202020202020202020202020202020202020252020202020202020202020202020202020202020292020202420202020202020202020202920202020202020202020202020202020202a20202020202020202020202020202020202020232020202020212020202020202020202020202020202020202 -- 001:027202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202021202020292020202020202020202020202020202020202020202320202020202020202020202020252024202020202020202020202020202020202020202027202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023202020202020202020202028202020202020202020202020202a20202020202020262020202020202020202020202 -- 002:02020202020202020202023202020202020202028202020202020202020202120202020202020202220202020202020202020202029202020202020202020202020202020202025202020202020202029202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202020202020202020202020202020202920202020202020202020202020202020202020202020202620202a202020202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 003:020202020262020272020202020202a202020202020202020202023222020202020202020202020202020202020202020292020202020202022202020202020202020202a20202020202020202020202020202020202020202020202020202020202028202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202028202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2 -- 004:02020202020202020202020202020202020202020222020202020202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020242020202020202020202020202020202020202020202020202020202021202020202020202020202020202020202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 005:0202720202020202025202020202520202020202020202020202020262020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202 -- 006:0202420202020202020202020202020222020292020202020202020202020202028202028202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202620202020202020202020202020202020202020202020202020202020202020202024202020202020202020202020202020202020202020202020202 -- 007:02020202020202020202020202020202020202020202020202020202020202020202020202420202020202020202020202020202a202024202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020242020202020202025202020202020202020202020202020202020202020202020202020202020212020202520202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202020202 -- 008:020212020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020292020202020202020202020202020202020202020202020202020202020202020202020202020202520282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202920202020202024202020202020202020272020202020202020202020202020202020202020202020202020202020202020202020202020202020202020252020202020202020202020202020202020202 -- 009:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202020202020202020202020202020202020232020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020212020202020222020202020202020202020252020202020202 -- 010:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202020202023202020202020202020202020202020202420282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 011:020202020202020202020232029202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020222020202020292020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202320202020202020202020202020202020202020202020202022202020202020202020202820202020202020202020202320202020202020202020202020202020202020202020202020202020202020202 -- 012:0202029202020202020202020202020202020202020202020202020202020202020282020202a202020202020202020202020202020202020202020202320202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023202020202020202020202020232020202020202020202a2020202020202920202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 013:020202020202620202020202120202020202020202020202020202020202020202020202020202020202020202020202020202220202020202020202020202020202020202020202020202020202020242020202020202020202220202020202020202020202020202720202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202220202420202020202020202020252020202020202020202020202020202020202020202020202020202023202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 014:0202020202020202020202020202020202220202020232020202027202020202020202020202020202020202020202020202020202020202020202025202020202020202020202020202020202025202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202020232020232020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202023202027202020202020202020202020202025202020202020202020202020202020202025202020202024202a2020202020202020202020202 -- 015:7202020202020202820202020202020202020202020202020202020202020202020202028202020202020242020202020222020202020202020202020202020202020202020202020202020202020202020202020202025202020202020202020202020202020202020202020202020202020202020202a2020202020272020202020202026202020202020202020202020202020202020202020202720202029202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 016:020202020202020202020202023202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020202020202020202020202020232020202020202020202020202a20242020202020202020262020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202020202320202020202020202020202820202020202020202020202020202020202021202020242020202020202 -- 017:0202020202020202020202020202020202020202020202020202020202020262020202020202020202020202020202020202026202020202020202020202020202020202024202020202020202020202020202020202020202020202020202020202020202020202026202020202020202021202020202020202020202020202020202020282020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202020252020202020202020202020202020202020202020202020202020242920202 -- 018:02020202020202220202020202020202020202022202020202020202020202020202028202020202920202020202020202020202021202020202020202020202020202020202820202020202720202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020202020202028202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202020202020202024202020202022202020202120202020202020202020202020202020202020202023202020202029202020202020202020202 -- 019:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202320202020202020232020202020202020202020202020202020202020202020202420202020202020202220202020202020202020202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020202020202020202022202020202020202020202020202020202020202a20202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202 -- 020:020202020202020202020202020202020202020202020202020202020202020202020232329202020202020202020202023202020202020202020202020202020202020202020202020202020202520202020202020202020202025202020202020202020202020202020202020202020202020202020202420202020202023202020202020202020202020262020202520202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202928202020202020202020202020202020202020202020202020292020202 -- 021:82020202020202020202020202020202023202020202020202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202720202020202020202720202020202020202020202020202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020292020202020202020202020202020202020202a202020202020222020202020202020202020202020202920202020212020202 -- 022:020202020202020202020272020202020202020202020202020202020202020202020202020202029202020202020202020202020212020202120202020202020202020202020202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202026202020222020202020202720202020202020202020202020202020202020202020202020232020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023202020202020202120202720202020202 -- 023:a202020202020202020202820202020202020202920202020202020202020202020202020202020202020202020202020262020202020202020202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202328202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202a2020202020202020202020202020252 -- 024:0202020202020202020202020202120202020202020202020202020212028202020202020202025202020202020202020202020202020202020202020202020202020202020202020202020212020202020202020202020202027292020272020202020202028202020202020202020202020202020202a2020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202029202020202020202020202020202020202020202020202020252020202020202020202020202020202020202020202020212020202020202020202020202020232020202020202020202 -- 025:020202020202020202020202020202520202020202020202020202028202020202020202020202020202020202020202420202020202020202020202020202020202a20202020202020202720202020202020202820202420202020202020202026202020202320202020202020202020202020202020202020202020292020202020202020202020202020202020202020202020202020202620202020202020202020202020202020202020202020202020202320202020202020202020202020202020202020202020202620202020202020202020202020202020202020202020202020202020202020202020202 -- 026:020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020252020202020202020202020202020202020202020202020202020202020202020202020202020202020202220202020202020202020202020202023202020202020202020202020202220202020202020202020202020202020202020202020202020202020202020222020202020202020202020202020202020202028202020202020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202020202020202020202 -- 027:020202020202020202020202020202020202020202020202020202020202020202020202020202020202220202020212620202020202020202020202020202020202026202020202020202020202020202020202920202020202a20202020202025202023202020202020202020202020202420202020202920202020202022202020202020202020202020272020202420202020202020202020202820202020202020202020202020202020202020202020222020202025202020202020202020202020202020202020202520202020202020202020202020202020202020202020202020202023202020202020202 -- 028:020202020202020202029202020202120252020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202920202020202020202020202020242020202028202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202020202a20202020202020202020202020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202020202020282020202020202 -- 029:920202020262020202020272020202020202020202020202320202020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020202020202020202020202027242020202020202020202020202020202020202020202820202020202020202420202020202020202020202020202023262620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202220202020202020202020202020202020202021202020202 -- 030:0202020202020202020202020202020202020202020202020202826202020202020202020202020202020202020202020202020202020202020272020202020202020202020202020202020202020212020262020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202920202020202020202020202020202020202020202020202020202020202020202020202720202020202020202020202020202020202020202a2020252020202020202020202020202026202020202520202020202020202020202020202020202020202020202 -- 031:020202020202020202020202020282020202020202020202020202020202020252020202024202020202020202020202320202020202020202020202020202020202020202020202020202020202029202020202020202020202020202020202020202020202420202020202220202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202420202020202020202020202020202220202020202020202020202020202027202020202020202020202020202026202023202 -- 032:020202020202020202020202020262020202020202020202020202220202020202020202020202020202020202020202020202020202020202020202020202020202020202021252020202020202020202020202020202020202020202020202020202020202720202020202020202020202020202029202020202020202020202020202020202020202020202020202020202020202020232020202020202025202020202020202020202020202020202020202020202020202020202020202020202020202024202020202020202020202020202020202a20202028202020202020202020202020202020202020202 -- 033:0202020202a2020202424202020202020202020232020202020262020202020202020202020202020202022202020202028262020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020252020202020202020202020202020202028202020202020202020202 -- 034:020202020202020202020202020202020202020202020202020202020202024202020202020202020202020202020202820202020202020202020202020202020202020202020202020202720202020202020242020202020202020202020202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202024202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 035:020202020202020202020202020202720202020222020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202220202020202020202020202020202020202020202320202020202020202020202020202020202120202020202220202020202020202020202020202020252020202020202020202020202020202020202020202020202020202020202020202020202020202020202320202020202020202425202020202020202021202020202020202020202020202020202020202020202 -- 036:0202020202020202020202020202a202020202020202020202025202020202020202020202020202020202020202020202026202020202020202020202020202020202020292020202020202020202021202020202020202020202020202020202020252020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202720202a202020202020202022202020202a20222620202020202020202020202020202020202020202020202020202020202420202a20202020202020202020202020202020202020202020202020202027202020202020202020202020202 -- 037:020202020202020202020202020202920202020202020202020202320202020202020202020202020202020202021202020202120202020202020202720202020202020202020202022202020202020202020202020292020202020222020202020202a2020202020202020202020202020202020262020292020202023202020202020202020202020202020242020202025202020202020202020202020202020202021202020202027202020202020202020202020202023202020202020202020202021202020202020202020202a202020202020202020202020202020202020202020262020212020202020202 -- 038:020202020202020202020202020212020202020202020202020202020202020202720202020202020202020202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202020202020202520202020202020202020202020202020202020202020202028202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 039:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202027202127202020222020202020202020202920202020202024262020202020202020202020202020202027202020202020202025202120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202021202029202020202320202020202820272020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 040:02020202020202024202020202020202020202020202020202020202020202a202020202020202a20202020202020202020202028202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202021202020202020202020202020202020202220202020202020202520202020202020202020202020202020202020202020202020202020202420202020202020202020202 -- 041:020202029272020202020202020202020202020202020202020202020202020202020202020202020202020202020202720202020202020242020202020202020202020202a202020202020202020202020202020202020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202020202020202020202020202020202020202025202020202027202020202020202020202020202a2020202020202020202020202020202020202020292020202020202020202020202020202020202120242020202020202020202020202020202 -- 042:020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202420202020202020202020202020202020202020202020202020202020202020202020202024202027202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202720202020202020202020202020202020202020202 -- 043:021202020202020202020202020202020232020202020202020202020202020202020202020202020202022202020202020202020202020202020202020202020202029202020202020202020202420202020202020202020202020202020202020202020202920202020202220202020202020202020202020202020202020202020202020202026202020202020202020242020202020202020202020202020202023202520272020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202026202020202320202020202020202024262020202920202 -- 044:02020202020202020202420202020202020202020202020202020202020202020202120202020202024202020202020202020202020202020202020202020202020202020202020202a202020202020202020202020202020202020202020202320202020202020202020202020202020202020202020202020202020202028202020202020222020202020202020202020202020202020202020202020202020202020212020202020202020202020202720202020202020202020202020202020262020212020202020202020202020202020202020202020202020202026202020202020202020202020202022202 -- 045:020202020202020202020202020202020202020202020202029202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202a20202020202020202020202020202028202020202027202020202520202020202020202020202020202020202020202020202020202020202020202020202020202020202020202027202028202020202020202020202027202020202020202020202020202020202020202 -- 046:02020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020232020202020202020202020202020202020202020202020202020202020202020202020202020202020202020232023202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020202 -- 047:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020202022202020202020202020202020202020202a20202020202020202420202020202022202020202020202320202020202020202020202020202020202020202026202020202020202020202020202a20202020202020202420202020222027202020202020202720202020202020202020202020202220202020202020202020202420202020202020202020202020282020202020202020202020202020202020202020202020202620202020202 -- 048:02020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202920202020202020202020202020202320202020202020202a2020202020202020202020202020202020202020202820202020202028202020202620282020202020202020202020202a2020202020202020202020202020202020202020202020202020202020232020202020202220202020202020262020202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020202 -- 049:020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020202 -- 050:020202020202020292020202120202020202020202020202020202020202020202020202020202020202029202020202020202020202020202820202020202020202023202020202020202020202020202020202020202020202020202020202620202020202020202020202020202020202020202020202020202020202020202020202020202023202025272020202020202020202027202023202024202020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202029202020202 -- 051:020202020202020202020202020222020232020202020202020202028202020202020202020202020202027202022202020202020202020202020202020202020202020202420202020202020202020202020202020202020202020202020242020202020202020202020202020202020202020202025202020202020202020202020202020202020202020202020202020202020202020202020202020202020272020202020202020202020202020202620202020202020202020202020292020272020262020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 052:020202021202020202020202021202027202020202020202020202020202020202020202020262020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202024202020202020202020202020202020202020202020202020202020202020242020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202025202020202020202020202020292020202020202020202020262020202020202020202020202020202020262023202020202020202020202020202020202020202 -- 053:0202020282020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202020202020202020202020242020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020292020202020202020202020202020202020202020202029202720202020202020232020272 -- 054:020202020202021202020202020202020202020202020202020202020202020202020202020202020202020202020202920202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202220202020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202220202020202020202020202020202020202020202020202020202020202020202020202024202020202022202020202020202020202 -- 055:02220202020202720202020202020202020202020202020202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202029202020202020202020202020202020202020202020202020202020232020202020202020202520202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202 -- 056:020202020202027202020202020202020202020202020202020202020202020202020202020272020202020202020202020202020262020202020202020202020202020202820202020202020202020202020222020202020202020202720202020202020202020202020202020202020202020202020202020202020272020202720202420202020202020202020202020202020202020202020202020202020202020202020242020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202027202020202 -- 057:0202020202020202020202020202120202020222020202020202020202020202020202020202020232020202022202020202020202020202020202020202020202020202020202a2020202020202020202020252020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020292020202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 058:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202320202020202020202020202028202020202020212020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202022202020202020202020202020242020202020202020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202020292020202020202020222020202020202020202020202026202020202 -- 059:020252020202020202020202024202020202220202020202020202020202020202020202020272020202025202020202320202020202020202020202020202020202020202020262020202023202020202020202020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202020202020202024202020202620202020202020202020202020202020202020202620202020202025202020202020202020202020202020202520202020202020202020202020202020202020202020202020202020202020202020202020202020202222202820202020202020202 -- 060:020202020202020202020202020202020202020202020202020202020202020232020202020272020202020202a20202020202020202020202020202020232020202020202020202020202020202220202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202220202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020292020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 061:0202020202020202020202020202020202020202020202720202022202020232027202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202221202020202020202020202020202020202020202020202020202020202020202020202620202020202020202020202720202020202020202020202620202020202020202020202020202920202020202020202020202020202020202020202020202020202020202020202020202020202020252020202020202 -- 062:0202020202020202020202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202920202020202020202327202020202020202020202020202a2023202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020232020202020202020202a20282020202020202 -- 063:0202020202020202020202020202020202020202020202020202a202020202020202220202020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202620202920202020202020202020202020202020202020202a202920202020202020202020202020202020202020202020202420202020202020202020202320202020202020202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202 -- 064:020202020202020202020202020202020202020202020202020202020272020202020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202020252027202020292020202020202020202020202020202024202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202020252020202020202020202020202020202020202020202020202020202020202020202320202020202020202020202020202a202020202020202820202020202020252 -- 065:02020202020202020202020212020202020202020202020202020202020202020202020202020202020202620202a2020242020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023202a2020202020202020202020202020202020202020202020202020202020202020202020202 -- 066:020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020242020202020202020202020202020202020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202020202020202020202020202020222020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020242020202020202 -- 067:0202020202020202020202020222020202020202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202027202720202520202020202020202020202920202020202020202022202620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202020232020202020202020202020202a2520202020202020202020202020202020202020202020202020202 -- 068:020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202020202020202020202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202220202023202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202120202020202020202020202020202020202020202020202020202020202020202020212020202023202020202020202020202020202020202020202029202 -- 069:02020202020202020202020202020202020202020202020202020202021202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020272020282020222020202020202020282020202020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202920202020202020202020202020202020202020202020202020202020202020202020202020202020202020202620202020202720202020202020202020202020202020202020202a202020202020202020202020202020202 -- 070:020222020202020202020202020202020202023202020202020202020202020202020202020202020202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202520202020202020202020202020202420202020202020202a2020202020202020202020202020202020202020202020202020202020202025202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202022202020202020202020202025202020202020202020202020202020202 -- 071:02025202020202020202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202720202020202020202020202020202020202026202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202a2020202020202020202020202020202020202020202020202020202020202020202 -- 072:02020202027202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202025202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020232020202020272020202020202020202020202020202020202520272a20202020202020202020202020202020202020202026202020202020202020202020202a20202020202022202020202020202020202020202120202020202020202020202020202020202020202020202020202020202020202020202 -- 073:020202020202020202020202020202020202020202020202020202020202020202020242020202020202020202920202020202020202020202020202020202020242020202020202020202020202320202020202020202020202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020242020202020202020202020202026202020202020202020202020202020202020202020202020202020202021202020202020202020202020202020202020202020202020202020202020202020202020202027202020202020202020202 -- 074:0202020202020202020202020262020202020202020202020202020202020202029202020202020202020222020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202027202020202020202520202020202020202020202620202020202020202020202020202020262020202020202020202020202020202020202020202020202a2020202420202020202020202020202020202020262020202020202020202020202 -- 075:0202020202020202020202020202020202020202020202020202020202020202020202020202020242020202020202020202020202020202020202020202020202020202020202020202020202020202020242020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020252020202020202020202020252020202020202020202020272020202020202020202020202020202020202020202020202020202020202020202020202020202020242020202020202020202028202020202020202020202020202020202a2 -- 076:020202020202020202020202020202026202020272020202020202020202020202020202020202020202020202020202020202024202020202120202020202020202020202020202020202020202020202020202020202020202020202020242720202020202026202020202020202020202020202020202820202020202020202020202020202025202520202020202020202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202026202020202020202020202020202 -- 077:020202020202020202020202620202020202020202020262020202020202020242020202020202020202020242020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020212820202020272020202020202020202020202020202020202020202023202020202020202020202020202020242020232020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020202 -- 078:0202a202020202a20202020242020202020202020202025262020202020202020272020202020202a2020272020202020202020202020202020202020202020202020202020202020202020202020202020202020202023202020202020202020202020202020202020202020202020202020202020202025202020202020202020202020202020202020202a202020202020202020202020202120202020202020202020202020202020202020202020202020202020232020202620202020202020202020202020202020202020202020202a202020202020202020202020202020202020202020202020202020202 -- 079:02020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202a202020202020202020202020202020202720202020202020202026202023202020202020202020202020202020202020202020202020202020202020202020202920202020202020202020202020202020202020202020252020202020202023202025202 -- 080:020242020202020202029202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202027202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202025202020202027202020202025202020202020202020202020202020202020202025202020202020202020202027202020202020202020252020202 -- 081:020202020202020202020202020202020202020202020202020202020202020202020202020202020232021222020202020202020202020202020202a21202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202022202020202022202020202020202020202020202020202020242020272020202026202020202020202020202020202020202020202020202020202020202020202020232920202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 082:0202020202020202020202020202020202020202020202020202020202020202020202020202020202220202820202020202020202020202020262020292020202020202020202020202020202020202020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202020202028202020202020202020202020202027202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 083:020202022202020202020202020262020202020202020202020202020202020202020202020202020202020202023202020202020202022202020202020202027202020202020202020202020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202420202820202020202020202020202020262020202020202020272020202020202020202020202020202025202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 084:02020202020202020202020202021202020202020202020202020202020202020202020202720202020202020202020202020202020202020202020202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202022202020202020202520202020202020202029202020202020202020202020282020202020202020202020202020202021202020202020202020202020202020252020202020202020202020202020202020202 -- 085:0202020202020202420202020202020202a2020202020202020202020202020202020202020202020202020232020202020202020202020202020202020202020202020202020202020202020202020202020202020272020202820202020202020202020202020202020202020202020202020202020202020292020202020202020202020202020202020202020202020202220202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020212020202020202020202020202 -- 086:0202020202029202020202020202020202020202020202020232020202020202020202020202020202020202020202020232020202020202020202020202020202020202020202020202020202020202020202020202020202029202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202029202020202020242020202020202020202020202020202022202020202020202020202023202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202 -- 087:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020202020202020202020202020202020202320202020242020202020202020202020202020202020202020202020202020202020202020202020202020202420202020202020202120202920202020202020202020202020202020202020202020202020202220202020202a2020202020202020202020202020292020202020202020202020202020202a20202020202020202020202020202029202020202020202020202020202020202020202 -- 088:020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202027202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202020202020202720202020202020202020202320202023202 -- 089:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202026202028202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202828202920202020202020202020202020202020202 -- 090:02020202020202020202020202020202020202020202020202020202020202428202020202020202020202020202020202020202020202020202020202020202020202020272020242020202020202020242020202020202020202029202020202020202020202020202020202020202020202024202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 091:020202020202023202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202020202025202020202020202020202020202020202020202020202020202020202020202020202028202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020292020202020202020202020202720202027202020202020202020202020272020202020202020202 -- 092:0202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202720202020202020202020202020252020202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202020202020202020212020202020202820202020202020202428202920202020202a20202020202020202020202020202020202020202 -- 093:020282020202020202020202020202020202020202020202020202720262020202020202020202020202020202020202020202020202020202420202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202120202020202020202020202220202020202020212020202020202025202020202020202020202020202320202a20202020202020202020202020202020202020202027202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 094:020202020202022202020202020202920202020202020202020202020202020292020202020202020202020202020202020202020202020202020202020202920202020202020212020202020202020202720202020202020202020202020202020202020202020202025202920202020202020202020202920202020202020202020202029202020202020202020202020202220202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 095:020202020202020202020202020202020202020202020202020202020202020202020282020202020202620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020272020202020202020202020202020202020202020202020202020202020202029202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202021202020202020202020202020202020202020202020202020202020202 -- 096:020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202420202020202020202020202020202020202020202020202020202020292020202021202020202020202020202020202020202028212020202920202020202020202020202020202320202020202020272020202020202020202a20202020202a20202020202020202020202020202020202020202020202021202020202020202020202020202020202020202020202820202020202020202020202020232020202020202020202720202020202020202020202020202020202 -- 097:020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202026202020202520202020202020202020242020202020202320202020202220202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202025202 -- 098:22a202020202320202027202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202220202720202020202020202020202022202020202020202020202020202020202020202020202020202020202020202820202020202020202020202020202020202020202020202020202020202020202020202023202020202020202020202020202020202020202020202020202020202020202020202a20202320202020202020202 -- 099:02020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020202020202620202020202020202020202020202020202020202020202020202020202020202020202520202920202020202024202020202020202025202020202020202223202020202020202020202028202020202020202020202020202026202020202020202020202020202020202 -- 100:020202020202020202020202020202020202020202020202020202020202020202020202020252020202020202020222020202024202020202020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202020202020202020292020202020202020202020232020202020202020202020202020202020202028202020202 -- 101:020202020232020202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202029202020202029202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020202020202021202020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 102:02020202020202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202524202020202020202020202920202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202024202020202020202a202020202020202020202022202020202020202020202020202020202a202020202020202020202020202020242020202020202020202020202020202a202020202020202020202020202020202020262020202020202 -- 103:020202020202020202020202020202020232020202020202020232020202020202020202020202020202020202020202020202020262020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202020202020202020242020202020202020202020202020202020202220202020202020202020202020202329202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 104:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202220202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202a202020202020202020202020202020202020212020202020202020202220202020202020202023202020202020202020202020202020202220202020202020202020202020202020202020202020202020202020202020202020202020202027202020202020202020202020202020202021202 -- 105:0202020202020202020202020202020202020202020252020202020202028202020202020202a2020202020202020282023202020202020202020202020202020202020232020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020272020202020202020202520202020202020202020202020202020202020202220202020202020202020202020202020202020202020202020202020202020202020202020202020202020202920202820202020202020202021202020202020202020202020232020202020202320202020202 -- 106:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020222020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202025202820202023202020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202420202020202020202020202020202020202020202020202020202020202020202020202020252020202 -- 107:020202020202028202020202020202020202020202020202020202020202720202020202020202020202020202020202020202020202020202020202020202020272020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202020202020202020202020202020202020202020282020202020202022202020202020202020202020202020202020202020202020202020202023202020202020202020202020212020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 108:0272020202920202020202020202020202020202020202024202020202020202020202020202020202020252020202020202020202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202a202020202020202020202020202020202020202 -- 109:02020202020202020202020202320202320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202024202020202020202020202020202020202020202220202020202020202020202020202020202020202021202020202020202020202020202027202020202020202a202020202020202020202020202020202020202020202020202020202020202920202020202020202020202020202020202020202022202020202020202020202020202020202020202020202820202020202020202 -- 110:02020202020202020202a202020202020202020202020202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202028202020202020202020202020262020202020242020202020202020202020202020202020212020202020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 111:02020202020242020202020202020202020202020202020202320202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202025202020202020202020202020202020202020202020202028202020202020202120202020202020202020202020202020202020202020202020202020202020202026202020202020262020202020202020202020202020202020202020202021202020202020202020202020202020202020202020202020202020202020202020202020202920202029202020202028202 -- 112:020202020232020202020202025202020202020202020202020202022202020202020202925202020202020202020202020202020202020202020202020202020202020202620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202028202020202020202020202020202020202029202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020292020202020262 -- 113:02020202020202020202020202a202020202020202020202020202020202020202020202025242020202820202020202020202020202020202020202020202024202020202020202020202020202029202020202020202720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202020202020202220202020202020232020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202920202020202020202820202 -- 114:020292020202020202020222020202020222020202020202020202020202020202020202020202020262020202020202020202020222020202020202022202029202020202020202020202020202020202020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820202020202020202023202020202020202020202020202020202020202020202020202020202020202024202020202020202020202020202020202020202020242020202 -- 115:020202020202020202520202020232a202020202020212520202020202020202520202020202020202a20202020202020202020202420202028202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020212020202020202020202020202020202020202020202020202020202020202020202020202720202020202020202020202120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 116:02020202020202020202a2020252020202820202024202020202020202020202020202020202020202020202020202020202020202025202020202020202020232920202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202420202020202020202020202020202025202020202020202020202520202020202020202020202020202020202020202020202020202020202020202020202020202a2020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202820212020202 -- 117:0202020202020202020202220202a2020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020282020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202025202020202020202220202020202020202020202021202020202020202020202320202020202620202520272020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202220202020202020202020202 -- 118:02020202520202020202120202020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202020202020202020202020202020202920202020202020202020202020202020202020202020202020202020202020202020202020202420202020262020232020202020202020272020202021202020202020202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202a202020202020202020202020202020202020202020202020202020202020202020202020202026202020202 -- 119:020202026202a20202020202020202020202020202020202020252020202020202020202020202020202020202020202020202020202020202020202023202020202020202020202520202020202020202420202020202020202020202029202020202020202020202020202020202020202022242020202029202020202020202020202020202020202020202020202020202020202020202020202020202020202020272020202020202020202020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 120:02020202020202020202020202020232020202020202020202020202020202020202520202024202020202020272020202a202020202020202020202027202020202020202020202020202020202020202620202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202029202020202720202020202020202020202020242020202020202020202020202020202020202020202020202020202020202020242020202020202020202020202020202020292 -- 121:020202020202020202020202020202020202020202020202020202020212020202020202020202020202020202020272020202120242020202020202020202020202020202020202020202020202220202020202020202220202020202020202020202820202020202020202020202020202020202020202020202020202020202020202520202020202020202820202020272820202020202020202020232020202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 122:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202020202020202020202020262920202020202020202020202020202020202020202020202020202020202220202020202020202020202320202020202020202020202020202020202020202020202020202020202020202020202020212020202020202020202 -- 123:0202020202020202020202020202020202020202020202020202424202020202020202020202020202020202020202020202020202020202020292020202020202020202020202a29202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202027202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202023202020202 -- 124:020202023202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020222020202020202020202020202020202020202020202029202020202020202920202020202020202020202020202027202020202020202020202020202020202020202020202020212020202020202020202020202020202026202020202020222520202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 125:020202020202020202020202520202020202020202020202220202020202020202020202320202020202020202020202020202020202020202020202020202920202620202020202020202020202020202020202020222020202020202020202020202020202020202025202020202420202020202020202020202020202020202020202920202020202020202020202020202020202020202020202020202020202028202520272021202020202020202020202020202020202520202020202020202020202020202020202020202020202020202020202020202020202020202020202029202020202020202020202 -- 126:020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202021202020202020202020202020202020202020202020202020232220202020202020202020202020202020202020202020202020202020202020202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202025202020202020202020202020202020202020202020202020202020202020202020202020202020202020272020202020202020202020202020202 -- 127:820202020202020202020202020202020202020202020202020202020202020202020202620202020202020202020202020202020202020202020202020202020202020202020202020202020202020252020202020202820202020202a20202020202020202020202020202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202020202020202520202520202020202020202020202020202020202020202020202720202020202020202020202020202020202620202020202020202020202020202020202020202 -- 128:020202020202020202020202020202020292020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020262020202020202020202020202020202020202020202020202020202020202620202020202620202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020212020202020202a20202020202020202020202020202020202 -- 129:02020202020202023202020202020212020202020202020202029202020202020202020202020202020202020202020202020202020202020202028202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202922202020202020202020202020202020202020202020202720202020202020202028202020202020202020202020202a20202020202020202020202020202020202028202520202020272020282020202020202020202020202020202320202020202020202020202020202020202020202a202020202020202020202020202020202020202 -- 130:02020202020202020202020202020202020202020202020202020202026202022202020202021202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a202020202020202020222020202026202020202820202020202020202020202020202020202020202020202020202020202020202020202020202020202020202022202020202020202020202020202020202020202020202020202020202020202020202520202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 131:020202020202024202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202320202020202020202020202020202020202320202020202020202620202020202020202020202020202020202020202020202020202020202620202420202020202020202020202020202020202020202020262020202020202020202020202020202020202027202020202020202020202020202024202020202020202020242020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 -- 132:020202020202020202020202020202020202a202020222020202020202020202020202020202020202020202020292020202020202020202020202023202020202020202020202020202020202020202020202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020272020202020202020202020202020202022202020202020202020202020222020202020292a20202020202020202020202020202020202020202020202020202020202026202020202020202020202020202020202020202020202 -- 133:020212a2020202020202020202020202020212020202020202020202020202020202020202022202020202020202020202020202020202020202020202420202a202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202028202720202020202020202020202020202020202020202020202020202020202020202020202020202320202020202020202020202020202020202020212020202a20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020272 -- 134:02020202020202520202020202020202021202020202020202020202020202020202020202a2020202023202020202020202020202020202020202020202020202020202020202020202020202020202220202020202020202020202020202020202020202020202a2020202020202020202020202020202020202020202020222020202020272024202020202020202020202920202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020262020202020202020202020202020202020202020222020202020202020202020202020202020202 -- 135:020202020202020202020202020202020202020202020202020202020202020202020202020202021202020202320202020202020202020202020212020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202120202020202020202020202020202020202020202020202020202020202020202020202820202020202020202020202020202020202021202020202020202020202020202020202020202020202020202026202620202020202020202020202020202020202020202020202020202020202020202020202020202520272020202 -- -- -- 000:00000000ffffffff00000000ffffffff -- 001:0123456789abcdeffedcba9876543210 -- 002:0123456789abcdef0123456789abcdef -- -- -- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 -- -- -- 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -- -- -- 000:777777676766666666575757576767b776767676666666666666666666666bc666666c06bbc575757576767b77676767666575757576767b77676767666666666666676666666666666666666666676666666666666666666666676666666766657575756565777777757577777777777777777777757577 -- 001:7777777766666666675676757676656576676776666666666666666666666c0c6666bb06c07567675767665657667677667567675767665657667677666666666666666666666666666666666666666666666666666666666666666666666666666776767676777777565656677777777777777766565657 -- 002:77777776666666665565775657576757675657666666666666666666666666cb6666bc06b55657756575767576756576655657756575767576756576666666666666666666666666663666666666666666666666666666666666666666666666767677676767565675757575777777777777777775757575 -- 003:777777666666666657575766656575767565656766666666666666666676666cb666cb06c5757576665657576756565675757576665657576756565676666d666666666666666666666566666666666666666666666666666666667677666767767777777777756767776767677777677777776767676777 -- 004:77776766666667667676b67676565676565b575766666766667666666666666b00660c06b7676b67676565676565b57577676b67676565676565b5757d66d2d66666667666666766666546776676666666666676667666666666677767777777776777777732765736777b776777777777777777677b7776 -- 005:7777766666666666677b3b5767667b757576b67766666666666666666666666b0b66cbc6cc77b3b5767667b757576b677677b3b5767667b757576b6772d66d66666666666666666656657676666666666666666666666666666677677777677777767575777367636766beb5677777776777777765beb667 -- 006:76776666666666666677b76575776b5757b77776666666666666666666666666b0660c6cb6677b76575776b5757b777766677b76575776b5757b77776d6667666666666666666666676576566666666666666666666666666667777777777777777732767653267377777b667777777777777777766b7777 -- 007:77766666676666666666cc0656565766667777666766666666666666666667666bc6b0cb66760cc0656565766667777666766cc06565657666677776677667666676666667666666657576566666666666766666666666666676777777777777777773757573657367632577777777777777777777752367 -- 008:676666666666666666666c05666576767bc7b6666666666666666766666666666b0c0cb6666666c05666576767bc7b66666666c05666576767bc7b66666666666666666666666666666666666666676666666666666667666677777777777777767767676765375575732777777777777777777777772375 -- 009:666666666666666666666bc666666c06bb6b2b666666666666666666666666666cb0bb66666666bc666636c06bb6b2b6666666bc666666c06bb6b2b6666666666666666666666666666666666666666666666666666666666777777777777777775677777776365657566567777777777777777777656657 -- 010:666666666666666666666c0c6666bb06c066b66666666666666666666666666666cc0c66666666c0c6666bb06c066b66666666c0c6666bb06c066b66666666666666666666666666666666666666666666666666666666667700700770077777756567777575737575757757777777777777777777577575 -- 011:6666666666666666666666cb6666bc06b0666666666666666676666666d66666666bc0666676666cb6666bc06b0666666666666cb6666bc06b0666666666666666666666666666666666666666666666666666666666667670fe70effe007007767676765657563566676567677777777777777767656767 -- 012:66766666666666766666676cb666cb06cc76666666666676666666666d2d66d66660bc7666666666cb666cb06cc6676666766666cb666cb06cc6666666666676666667666666676666666676667666666666667666666777700f77f00f0700f00767e7663267773677572757577777777777777757572757 -- 013:66666666666666666666666b00660c06b0666666666666666666666666d66d2d666b0b6666666666b00660c06b06666666666666b00660c06b066666666666666666666666666666666666666666666666666666666677677707777770e77fe0f67777766327733677737676677777777777777766767377 -- 014:66666666666666666666666b0b66cbc6cc6666666666666666666666667666d6666cb06666666666b0b66cbc6cc6666666666666b0b66cbc6cc66666666666666666666666666666666666666666666666666666666777777077770f77777777776777777327753267567777677777767777777667777656 -- 015:666666666676666667666666b0760c6cb666666666766666666667666676667666700c66666667666b0660c6cb666666666666666b0660c6cb66676666766666676666666766666666766666666666666676666666767777000e70f0700777000f7770077732733277327666777777777777777776667237 -- 016:6666676666666666666666666bc6b0cb666667666666666666666666666666666660b0666666666666bc6b0cb66666666666676666bc6b0cb6666666666666666666666666666666666666666666676666666666667777770ef070e77ef07fe0fe07ef077773233777332777767777777677777776772337 -- 017:6666666666666666666666666b0c0cb666666666666666666666666666666666666666666666666666b0c0cb666666666666666666b0c0cb66666666666666666666666666666666666666666666666666666666677777777f077777770f70f7700760777773332777327777777777777777777777777237 -- 018:6776777776666666666666666cb0bb6666666666666666666666666666666666666666666666666666cb0bb6666666666666666666cb0bb66669666666666666666666666666666666666666666666666666666670077777777770f7770070077007b7777777332773327777777777777777777777776233 -- 019:76556565677666666666666666cc0c66667666666666666666766666667666666676666666666666666cc0c66666666666766666666cc0c666949666666666666666666666666666666666666666666666666676fe0070077e070fe070fe70effe0b9b077677332733277777767777777777777777777723 -- 020:555757575667666666666676666bc0766666666666666676666666666666666666666666667666666666bc0666766666666666666666bc06666866766676666666766666666667666676666666666676666667770f0700f00f07e000700f77f00f07b0f07777332332777777777777777777777777777772 -- 021:657675676576766666666b666660bc6666666666666666666666666666666666666666666666666666660bc6666666666666666666660bc66667666666666666666666666666666666666666666666666666776770e77fe0f07777077707777770e77fe07777333327777777777777777777777777777777 -- 022:7577567b776767666666bab6666b0b666666666666666666666666666666666666666666666666666666b0b666666666666666666666b0b66667666666666666666666666666666666666666666666666667777777777777777770777077770f777777777777333277777776777777777777777677777777 -- 023:665565bab676767666766b66667cb0666666676666766666666667666666676666666766666666666676cb0666666666666667666676cb0666776666666666666666666667666666666666666676666666767777700777000f77f007000e70f0700777007777332777777777777777777777777777777777 -- 024:7576767b776767676666676666600c66666666666666666666666666666666666666666666666766666600c66666676666666666666600c6666666666666676666666766666666666666676666666666667777777ef07fe0fe07ef070ef070e77ef07fe07777332776777777777777777677777777777767 -- 025:5767665657667677666666666660b06666666666666666666666666666666666666666666666666666660b06666666666666666666660b0666666666666666666666666666666666666666666666666667777777770f70f7700700777f077777770f70f77776332777777777777677777777777777777777 -- 026:657576757675657666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667666666666667777777777770f77f07f07770077777777770f77703332277777777777777777777677777777777 -- 027:6656575767565656766666666676666666666666666666666666666666666666667666666666666666666666666666666676666666666666667666666666666666666666666666666666657666666666667777777e070fe00ef70fe7fe0070077e070fe070fe70ef77777775757777777777777776777777 -- 028:676565676565b575766666766666666666666676667666666676666666766666666666666666676666766666666667666666666666666766666666666666667666666676666666766666657766666676677777770f07e000007770070f0700f00f07e000700f77f077777656565777777777777777777777 -- 029:767667b757576b6776666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666646676666666666767777f07777077777777770e77fe0f07777077707777767777575757577777777777777777777 -- 030:575776b5757b777766666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667666676666666666777777777770770ef77e0777777777777770777077770f77776767676767765657575777777777 -- 031:6565657666677776667666666666676666766666666666666666666666666666666667666766666666666666676666666666676667666666666667666676666666766666667666666756666666766666667777770f77f0070f0070f0700777000f77f007000e70f077767777777777656765656577777777 -- 032:5666576767bc7b6666666666666666666666666666666766666667666666676666666666666666666666676666666666666666666666666666666666666666666666666666666666765666666666666667777777fe07ef07700700ef7ef07fe0fe07ef070ef070e777775757777777565657575757777777 -- 033:666666c06bb6b2b6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667663666666666666676777777007007777777007770f70f7700700777f07777776656565777777676767677667767777 -- 034:c6666bb06c066b66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666966666666666777770f77f07f0777f07f0777f07f077777770f77f07f07777575757576565767676776767776777 -- 035:b6666bc06b0666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666766666667666666666666666694966666666767e070fe00ef70fe70ef70fe70ef70fe77e070fe00ef70fe776767677767657777d7c7d7767777777 -- 036:cb666cb06cc666666676666666dddc76666666766666667666666766666666766666667666766666667666666666667666666676667666666666667666666666666666666676666666668676666667770f07e0000077700700777007007770070f07e000007770077677b777637567237777777677777777 -- 037:b00660c06b066666666666666ddddde666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666766666667767f0777707777777777777777777777777f077770777777777765beb6677367637d757576d77777777 -- 038:b0b66cbc6cc66666666666666cdcdcc666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666766666677777777770770ef77e070ef77e070ef77e07777770770ef77e077766b777773762356cdc23dc77777777 -- 039:6b0660c6cb6667666666666666eccc66667666666676666667666666667666666676666666666666666666666676666666766666666666666676666666666766666667666666666666767666667677770f77f0070f0070f00f0070f00f0070f00f77f0070f0070f0777752367637563757573cef77777777 -- 040:66bc6b0cb6666666666667666666666666666666666666666666666666666666666666666666676666666766666666666666666666666766666666666666666666666666666667666666666666777777fe07ef07700700ef700700ef700700effe07ef07700700ef77777237575573567676767777777767 -- 041:66b0c0cb6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777770070077777770077777700777777007700700775757700777765665756563677777776577777777 -- 042:66cb0bb66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777007007777770f770077777770070077f07f0756565677757577757575737575777765657777777 -- 043:666cc0c66666666666766666666666666676666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666677777770fe70ef7e070fe0fe00700770fe70ef0ef70f575657577565656565655365756567676767777767 -- 044:6666bc066676666666666666666667666666666666666676667666666666667666cddd766676666666766666666666766676666666666676666667666676666666666676667666666676666667777777700f77f00f07e0000f0700f070057575656776767676765755575755575377762366777677777777 -- 045:66660bc6666666666666666666666666666666666666666666666666666666666eddddd6666666666666666666666666666666666666666666666666666666666666666666666666666666666676777777077777f077770770e77fe077565656765575756567767676767676767637656575757767777777 -- 046:6666b0b6666666666666666666666666666666666666666666666666666666666ccdcdc666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777077770f777770777777777775757505655656567656777777677777777756563656565677777777 -- 047:6676cb066666666666666766676666666666676666766666666666666676666666ccce666666666666666666667666666666666666766666676666666666666666766666666666666666666666777777000e70f00f77f0077007770006677676757575f56565567777757577777335656575757577777777 -- 048:666600c6666667666666666666666666666666666666666666666766666666666666666666666766666667666666666666666766666666666666666666666766666666666666676666666766677777770ef070e7fe07ef077ef07fe006767767666756767676777766565657677776767676777575777777 -- 049:66660b06666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666676777777f07777770070077770f70f776777777767677676767565675757575765657676767765656577777 -- 050:6666666666666666666666666666666666666666666666666666666666666666666667666666666666666666666666666666666677777677666666666666666666666666666666666666666667777777770070077f07f0777700700770677777767777573777756767676767676577777777757575757777 -- 051:666666666666666666666666666666666666666666666666666666666666666666666576666666666666666666666666666666776565655676666666666666666666666666666666666666666677777770fe70ef0ef70fe770fe70effe0675757e67777777327655677b7776335672377777676767676776 -- 052:6676666666666766666666766666676666766666666667666666666666666666666665776676666666766666666666766666676657575755557666766666676666666766666666766666676667777777700f77f000777007700f77f00f0732f0065675757773676365beb665636763777576777777777765 -- 053:666666666666666666666666666666666666666666666666666666666666666666664667666666666666666666666666666676756765767565566666666666666666666666666666666666666676777777077777777777777707777770e77375757332e366532673766b7776737623566772575777777756 -- 054:666666666666666666666666666666666666666666666666666466666664666666766667666666666666666666666666666767677b7657757557666666666666666666666666666666666666667777777077770f0ef77e077077770f77776767676533757573657367652367632563757665656577777767 -- 055:66666666676666666676666667666666666666666766666666666664666666646756666666666666666666666676666667767676bab56556665576666766666667666666667666666766666666777777000e70f00f0070f0000e70f070567777770767676765375575732375755735676757575757656576 -- 056:666667666666666666666666666666666666676666666666646444666464446676566666666667666666676666666666676767677b7677757575756666666666666666666666666666666666677777770ef070e7700700ef0ef070e775656777755673777776365657656657565636777676767776765777 -- 057:66666666666666666666666666666666666666666666666644444444444444447663666666666666666666666666666667767667565667675767657666666666666666666666666666666666676777777f077777777770077f07777776767676556567777575737577577575757375757677b77763756723 -- 058:66666666666666666666666666666666666666666666664444444444444444444466666666666666666666666666666666756576757675756577565566666366666666666666666666666666677777777007777770077777700777777767f76636767676565756356765676765365356565beb6677367637 -- 059:6676666666666666667666666666666666666666666666444444444444434444446666666666666666666666667666667656565767575656667575756666566666666666666666666666666666777777fe007007fe007007fe00700706777776776777663263773657572757763777623666b77777376235 -- 060:6666666666666676666666666666667666666666666664444444434444444444446666666676666666666676666666667575b56567656567676b676776645676666666766676666666666676677777770f0700f00f0700f00f0700f000677777767777766326733666767376763377237677523676375637 -- 061:666666666666666666666666666666666666666666666444444444444444444444466666666666666666666666666666776b675757b7667675b3b776676756656666666666666666666666666676777770e77fe070e77fe070e77fe077777777776277727322753267577657623577236777723757557356 -- 062:66666666666666666666666666666666666466666666444443444444444444444444666666666666666666666666666667777b7575b67757567b776665675676666666666666666666666666667777777777777777777777777777770ef77e07777373367732233276667236723372377776566575656366 -- 063:666667666676666666666766667666666666666466644444444444444444434444444466666666666676666666666766667777666675656560cc666665775656667666666666666666766666667777777007770070077700700777000f0760f0777733277733233777332337773323777775775757573757 -- 064:666666666666666666666666666666666464446644444444444444344344444444444444666667666666666666666666666b7cb76767566650c6676666666666666666666666676666666666677777777ef07fe07ef07fe07ef07fe07007b0ef767763277333332777327237772333777676567676536575 -- 065:66666666666666666666666666666666444444444444444444444444444444444444444466666666666666666666666666b2b6bb60c666666cb666666666666666666666666666666666666667677777770f70f7770f70f7770f70f7777b9b077777b3273326332773327233772337777575727577637776 -- 066:666666666666666666666666666666444444444444444444444444444444444444444444446666666666666666666666666b660c60bb6666c0c666666666666666666666666666666666666667777777700777777f07f077770070077700b007777b9b233277332733277723372337777667673777633772 -- 067:6666666666666666666666666666664444444444444444344344444444444444434444444466666666666666666666666666660b60cb6666bc6666666676666666666666666666666666666666777777fe0070070ef70fe770fe70ef70fe70ef7677b3332677332332777772332337777677776576235772 -- 068:666666766666667666766666666664444444434444344444444444444444434444444444446666666666676666766666666667cc60bc666bc666667666666666666666766666667666766666677777770f0700f000777007700f77f0700f77f0777733327777333327777777233337777766672377233723 -- 069:6666666666666666666666666666644444444444444444444444443444444444444444344446666666666666666666666666660b60c06600b6666666666666666666666666666666666666666676777770e77fe0777777777707777777077777777733277777333277777777723337776777723377733237 -- 070:666666666666666666666666666644444344444444444444444444444344444444444444444466666666666666666666666666cc6cbc66b0b66666666666666666666666666666666666666666777777777777770ef77e077077770f7077770f777733277777332777777777772337777777772377723337 -- 071:6676666666766666666666666664444444444444444444444434444444444444443444444444446667666666666666666766666bc6c0670b667666666666676666766666667666666666666666777777700777000f0070f0000e70f0000e70f0777733277777332777777777772337777777772337723377 -- 072:66666666666666666666676644444444444444344444344444444444444444344444444444444444666666666666676666666666bc0b6cb66666666666666666666666666666666666666766677777777ef07fe0700700ef0ef070e70ef070e7777333227777332777777777772337777777777233723377 -- 073:666666666666666666666666444444444444444444444444444444444444444444444444444444446666666666666666666666666bc0c0b6666666666666666666666666666666666666666667677777770f70f7777770077f0777777f077777777677777773332277767777722333777777777723323377 -- 074:6666666666666666666666444444444444444444444444444444444444444444444444444444444446666666666666666666666666bb0bc6666666666666666666666666666666666666666667777777777770f7777770f7777770f777777777777777777777677777777777777777777777777772333377 -- 075:66666d6666666666666666444444444444434444434444444444443444444434444444344444443444666666666666666666666666c0cc666676666666666666666666666666666666666666667777777e070fe07e070fe07e070fe076777777777777777777777777777777777777777677777776233377 -- 076:6d66d2d6666667666666644444444344444444444444444444344444443444444434444444344444466666666666667666766666660cb6766666666666766666667666666666667666666766677777770f07e0000f07e0000f07e00077777777777777777777777777777777777777777777777777723377 -- 077:d2d66d6666666666666664444444444444444444444444344444444444444444444444444444444444646666666666666666666666cb0666666666666666666666666666666666666666666666767777f0777707f0777707f077770777777777777777777777777777777777777777777777777777723377 -- 078:6d66676666666666666644444344444444444444444444444444444444444444444444444444444444666666666666666666666666b0b66666666666666666666666666666666666666666666677777777777077777770777777707777777777777777767777777777777776777777767777777777723377 -- 079:67766766676666666664444444444444444443444434444444444444444444444444444444444444446666666676666666666666660bc6666666676666666666666666666676666667666666667777770f77f0070f77f0070f77f00777777777777777777777777777777777777777777777777777223337 -- 080:6666666666666666444444444444443443444444444444444444344444443444444434444444344446666666666666666666676666c00666666666666666676666666766666666666666666667777777fe07ef07fe07ef07fe07ef0777777777767777777777776776777777767777777777777777777777 -- 081:66666666666666664444444444444444444444444444444444444444444444444444444444444444464666666666666666666666660b066666666666666666666666666666666666666666666767777770070077700700777007007777767777777777777777777777777777777777757576777777767777 -- 082:666666666666664444444444444444444444444444444444444444444444444444444444444444444666666666666666666966666666666666666666666666666666666666666666666666667f07f077700777777f07f0777777777777777777777777777777677777777777777776565657777777776777 -- 083:666666666666664444434444444344444444444443444444444444444443444443444444444444444466666677677777669496666666666666666666666666666676666666666666666666760ef70fe7fe0070070ef70fe77777777777777777777777677777777777777767777775757575777777777777 -- 084:66666676666664444444444444444444444443444444444444444344444444444444444444444344466666676556565677686676666667666666676666666766666666666666667666666777007770070f0700f0007770077777777777777777777777777777777777777777777767676767677656575757 -- 085:666666666666644444444444444444444444444444444434444444444444444444444434444444444464675555757575667766666666666666666666666666666666666666666666666677677777777770e77fe0777777777777777777777777677777777777777767777777677677777777776567656565 -- 086:666666666666444444444444444444444344444444444444434444444444444444444444434444444466655657675676576766666666666666666666666666666666666666666666666777770ef77e07777777770ef77e077777777677777776777777777777777777777777777757577777775656575757 -- 087:6676666666644444444443444444434444444444443444444444444444444344443444444444444444667557577567b7767676666766666667666666676666666666676666766666667677770f0070f0700777000f0070f07777777777777777777777777777777777777777766565657777776767676776 -- 088:666666664444444443444444434444444444443444444444444444344344444444444444444444344667556665565bab67676766666666666666666666666666666666666666666666777777700700ef7ef07fe0700700ef7677777776777777777777777777776777777777775757575765657676767767 -- 089:6666666644444444444444444444444444444444444444444444444444444444444444444444444446575757576767b77676767666666666666666666666666666666666666666666777777777777007770f70f7777770077777777777777777777777777777777777777777767676777676577777777777 -- 090:666666444444444444444444444444444444444444444444444444444444444444444444444444444756767576766565766767766666666666666666666666666666666666666666677777777f07f077777777777777777777777777777777777777777777777777777777777677b7776375672377777776 -- 091:666666444344444443444444444444344344444444444434444444344443444444444434444444445565775657576757675657666676666666666666666666666666666666666666667777770ef70fe777777777777777677677777776777777767777777777776776777777765beb667736763777575767 -- 092:6666644444444444444444444434444444444444443444444434444444444444443444444444434457575766656575767565656766666666666667666666676666cddd76667666666777777700777007777777777777777777777777777777777777777777777777777777777766b777773762356dcd23cc -- 093:666664444444443444444434444444444444443444444444444444444444444444444444444444447676b67676565676565b57576666666666666666666666666eddddd666666666667677777777777777777777677777777777777777777777777777776777777777777777777752367637563757573ccd -- 094:66664444444444444444444444444444444444444444444444444444444444444444444443444444477b3b5767667b757576b6776666666666666666666666666ccdcdc666666666667777770ef77e077777777677777777777777777777777777777777777777777777777777777237575573567676767e -- 095:666444444434444444344444444444444434444444444444444444444444434444444444444444444477b76575776b5757b7777666666766676666666766666666ccce6666666666667777770f0070f07777777777777777777777777777777777777777777777777777777777765665756563677e77e765 -- 096:444444444444444444444444444434444444444444443444444434444344444444443444444444344666cc065656576666777766666666666666666666666666666666666666676667777777700700ef76777777777777777777777777777777777777777777777777777777777577575757375757777656 -- 097:4444444444444444444444444444444444444444444444444444444444444444444444444444444446466c05666576767bc7b6666666666666666666666666666666666666666666676777777777700777777777777777777776777777767777777677777777777777767777767656767653657565676767 -- 098:4444444444444444444444444444444444444444444444444444444444444444444444444444444466666bc666666c06bb6b2b666666666666666666666666666636666666666666677777777777777777777777777767777777777777776777777777777777777777777777757572757763777623667776 -- 099:4344444443444444444444444344444444434444444444344444443443444444444444444444444466666c0c6666bb06c066b6666666666666666666667666666665666666766666667777777677777777777777777777777777776777777777777777777677777777777777766767377763377237677777 -- 100:44444444444444444444434444444444444444444434444444344444444444444444434444444666666666cb6676bc06b06666766676666666766666666666666675466766666666677777777777777777777777777777777777777777777777777777777777777777777777767777657623577237777776 -- 101:444444344444443444444444444444344444444444444444444444444444443444444444444466666666666cb666cb06cc6666666666666666666666666666665665767666666666667677777777777777777777777777776777777777777777777777777777777777777777776667237723372367777777 -- 102:444444444444444443444444444444444444444444444444444444444444444443444444444666666666666b00660c06b06666666666666666666666666666666765765666666666667777777777777777777776777777777777777777777777777777767777777777777776777772337773323677777777 -- 103:443444444434444444444444443444444444434444444444444444444434444444444444444666666676666b0b66cbc6cc7666666666666666666666666667666565765666666766667777777777777777777777777777777777777777777777777777777777777777777777777777237772333777777677 -- 104:4444444444444444444444344444444443444444444434444444344444444444444444344466666666666666b0660c6cb66666666666676666666766666666666666676666666666677777777777777776777777777777677777777777777767767777777777777776777777777777233672337777777b77 -- 105:44444444444444444444444444444444444444444444444444444444444444444444444444666666666666666bc6b0cb66666666666666666666666666666666666666666666666667677777777677777777777777777777777777777777777777777777777677777777777777767772337233777777b9b7 -- 106:44444444444444444444444444444444444444444444444444444444444444444444444446666666666666666b0c0cb6666666666666666666666666666666666666666666666666777777777777677777776777777777777777777777776777777767777777677777777777777777772332337777777b77 -- 107:44444444444344444444443443444444444444444443444444444444444444344344444444666666667666666cb0bb66666666666676666666666666666666666666666666666676777777777777777777777777767777777777777777777777777777777777777776777777777777677233337777777777 -- 108:444443444444444444344444444444444444434444444444444443444434444444444444466666666666666666cc0c76667666666666666666766666666667666666676666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777723337777777777 -- 109:4444444444444444444444444444443444444444444444444444444444444444444444344464666666666666666bc066666666666666666666666666666666666666666666667767777777777777777777777777777777777777777777777777777777777777777777777777677777777772337777777777 -- 110:43444444444444444444444444444444434444444444444443444444444444444444444444666666666666666660bc66666666666666666666666666666666666666666666677777777777767777777777777777777777777777777677777777777777777777777777777777777777777772337777777776 -- 111:4444444444444344444444444434444444444444444443444444444444444444443444444466666666666766667b0b66666666666666676666666666676666666766666666767777777777777777777777777777777777777777777777777777777777777777777777777777777777777772337777777777 -- 112:4444443443444444444434444444444444444434434444444444443444443444444444444666666666666666666cb066666667666666666666666766666666666666666666777777767777777777776777777767777777777677777777777767777777677777776777777777777777777722333776777777 -- 113:444444444444444444444444444444444444444444444444444444444444444444444444464666666666666666600c66666666666666666666666666666666666666666667777777777777777777777777777777777677777777777777777777777777777777777777767777777777777776777777777775 -- 114:44475444444444444444444444444444444444444444444444444444444444444444444466666666666666666660b066666666666666666666666666666666666666666667777777772677777777677777777777777777777777777777777777777777777777777777777777777777777777777777776656 -- 115:434774444443444443444444444444444444443444444434444444344443444444444444667666666666666666666666666666666666666666766666666666666676666666777777723277777777777777777777777777777777776776777777767777777777777777777777767777775757777777777575 -- 116:4457744444444444444444444444434444344444443444444434444444444444444446666666666666666676666666766666667666766666666666666666667666666666677777777726477777777777777777777777777777777777777777e7777777777777777777777777777777756565677777776767 -- 117:447774344444444444444434444444444444444444444444444444444444444444446666666666666666666666666666666666666666666666666666666666666666666666767777777454777777777777777777777777776777777777077070777777777777777777777777777777575757577777767777 -- 118:44477544444444444444444443444444444444444444444444444444444444444446666666666666666666666666666666666666666666666666666666666666666666666677777777764777777777777777777677777776777777777e707f77777777777777777677757575656776767676767677775757 -- 119:443777444444434444344444444444444444444444444444444444444444434444466666666667666676666666766666667666666666666666666766667666666666676666777777775677777777777777777777777777777777777777707f77777777777777777777565656765677777777776776656565 -- 120:4447744443444444444444444444443444443444444434444444344443444444446666666666666666666666666666666666666666666766666666666666666666666666677777777776777777777767767777777677777777777777777f7f77777777777677777775757575656577777775757777575757 -- 121:444774444444444444444444444444444444444444444444444444444444444444666666666666666666666666666666666666666666666666666666666666757566666667677777777677777777777777777777777777777777777777767777777677777777777776677676767677777756565666767677 -- 122:44444444444444444444444444444444444444444444444444444444444444446666666666666666666666666666666666696666666666666666666666666656565666667777777777777777777767777777777757577777777777777777777777777777777777777676776767675656757575757677b777 -- 123:4444443444444444444344444444444444444444444344444344444444444444666666666666666666666666666666666694966666666666667666666666757565756676777777777777776777777777767777756565676777777767777777777777777777777767767777777777756767776767665beb66 -- 124:44344444444443444444444444444344444443444444444444ddde4444444666666667666666667666666676666666766668667666666676666666666666676767676776565757577777777777777777777777575757577777777777777777777777777777777777776777777732765736777b776766b777 -- 125:4444444444444444444444444444444444444444444444444ddddde44444666666666666666666666666666666666666666766666666666666666666666677677677776567656565677777777775757565677676767676776777777777777777777777776777777777767575777367637766beb567775236 -- 126:4444444443444444444444444344444443444444444444444cdcdcc444466666666666666666666666666666666666666667666666666666666666666676575777777756565757575777777777565656765677777777776777777777777777767777777677777777777732777653267377777b6677777237 -- 127:44444444444444444444434444444444444444444444434444eccf444446666667666666667666666676666666766666667766666676666666666766666565657676776767676776677777777575757565657777777575777777777777777777777777777777777777777375757365736763257777765665 -- 128:444434444444443443444444444444344444443443444444444444444466666666666666666666666666666666666666666666666666666666666666675657575765657676767767677777777667767676767777775656566777777776777777767777777777777777776767676537557573276777757757 -- 129:444444444444444444444444444444444444444444444444444444444466666666666666666666666666666666666666666666666666666666666666667676767676577777777777677777777676776767675656757575757777777777777777777777777777777777567777777636565756656776765676 -- 130:4444444444444444444444444444444444444444444444444444444466666666666666666666666666666666666666666666666666666666666666666677b7776375672377777776777777777677777777777567677767676777777777776777777767777777777775656777757573757575775775757275 -- 131:434444444444443444444434444444444444443444444434444444446676666666666666666666666676666666666666667666666666666666666666665beb66773676377757576777777767766777777732765736777b776777777777777777777777777677777776767676565756356767656766676737 -- 132:4444444444344444443444444444434444344444443444444444466666666666667666666676666666666666667666666666666666666766667666666666b77777376235677723777777777777767575777367637766beb56777777777777777777777777777777777677766326777367757275756777765 -- 133:44444434444444444444444444444444444444444444444444446666666666666666666666666666666666666666666666666666666666666666666666665236763756375757377767777777777732777653267377777b667777777777777777777777777777777776777776732773367773767667666723 -- 134:444444444444444444444444434444444444444444444444444666666666666666666666666666666666666666666666666666666666666666666666666772375755735676767677777777777777737575736573676325777777777677777777777777777777777777677777732775326756777767777233 -- 135:443444444444444444444444444444444444444444444444444666666666676666666666666666666666676666666666666667666766666666666666667656657565636777777765777777777767676767653755757327777777777777777777777777777777777777777777773273327732766677777723 -- -- -- 000:1010105d245db13e50ef9157ffff6daee65061be3c047f5005344c185dc95999f6e6eaf2b6baba8d8d9d444460282038 --