Tablet V source code

View raw source.

pico-8 cartridge // http://www.pico-8.com
version 42
__lua__
-- tablet v
-- cork game jam 2024

-- caoimhe
-- https://oakreef.ie

-- made with advanced micro olatformer starter kit
-- https://www.lexaloffle.com/bbs/?tid=28793




--config
--------------------------------

--sfx
snd=
{
	jump=0,
}

--music tracks
mus=
{

}

-->8


-->8
--maths
--------------------------------

--point to box intersection.
function intersects_point_box(px,py,x,y,w,h)
	if flr(px)>=flr(x) and flr(px)<flr(x+w) and
				flr(py)>=flr(y) and flr(py)<flr(y+h) then
		return true
	else
		return false
	end
end

--box to box intersection
function intersects_box_box(
	x1,y1,
	w1,h1,
	x2,y2,
	w2,h2)

	local xd=x1-x2
	local xs=w1*0.5+w2*0.5
	if abs(xd)>=xs then return false end

	local yd=y1-y2
	local ys=h1*0.5+h2*0.5
	if abs(yd)>=ys then return false end
	
	return true
end

--check if pushing into side tile and resolve.
--requires self.dx,self.x,self.y, and 
--assumes tile flag 0 == solid
--assumes sprite size of 8x8
function collide_side(self)

	local offset=self.w/3
	for i=-(self.w/3),(self.w/3),2 do
		if self.dx < 0 then
			if self.x < 4 then
				self.x=4
				self.dx=0
				return true
			end
		end
	--if self.dx>0 then
		if fget(mget((self.x+(offset))/8,(self.y+i)/8),0) then
			self.dx=0
			self.x=(flr(((self.x+(offset))/8))*8)-(offset)
			return true
		end
	--elseif self.dx<0 then
		if fget(mget((self.x-(offset))/8,(self.y+i)/8),0) then
			self.dx=0
			self.x=(flr((self.x-(offset))/8)*8)+8+(offset)
			return true
		end
--	end
	end
	--didn't hit a solid tile.
	return false
end

--check if pushing into floor tile and resolve.
--requires self.dx,self.x,self.y,self.grounded,self.airtime and 
--assumes tile flag 0 or 1 == solid
function collide_floor(self)
	--only check for ground when falling.
	if self.dy<0 then
		return false
	end
	local landed=false
	--check for collision at multiple points along the bottom
	--of the sprite: left, center, and right.
	for i=-(self.w/3),(self.w/3),2 do
		local tile=mget((self.x+i)/8,(self.y+(self.h/2))/8)
		if fget(tile,0) or (fget(tile,1) and self.dy>=0) then
			self.dy=0
			self.y=(flr((self.y+(self.h/2))/8)*8)-(self.h/2)
			self.grounded=true
			self.airtime=0
			landed=true
		end
	end
	return landed
end

--check if pushing into roof tile and resolve.
--requires self.dy,self.x,self.y, and 
--assumes tile flag 0 == solid
function collide_roof(self)
	--check for collision at multiple points along the top
	--of the sprite: left, center, and right.
	for i=-(self.w/3),(self.w/3),2 do
		if fget(mget((self.x+i)/8,(self.y-(self.h/2))/8),0) then
			self.dy=0
			self.y=flr((self.y-(self.h/2))/8)*8+8+(self.h/2)
			self.jump_hold_time=0
		end
	end
end

--make 2d vector
function m_vec(x,y)
	local v=
	{
		x=x,
		y=y,
		
		--get the length of the vector
		get_length=function(self)
			return sqrt(self.x^2+self.y^2)
		end,
		
		--get the normal of the vector
		get_norm=function(self)
			local l = self:get_length()
			return m_vec(self.x / l, self.y / l),l;
		end,
	}
	return v
end

--square root.
function sqr(a) return a*a end

--round to the nearest whole number.
function round(a) return flr(a+0.5) end


-->8
--utils
--------------------------------



cptspr = {1,2,3,20,21,22,23,65,66,67,68,69,70,71,72,73,74,128,129,130,144,145,146,161}
--print with corrupt characters
function printx(str,x,y,col)
	print(str,x,y,col)

	local st=-1
	local nd=-1
	for i=1,#str do
		if str[i] == '#' then
			--print('#',x+i*4-4,y,8)
			if st==-1 then
				st=i
				nd=i
			else
				nd=i
			end
		else
			if st!=-1 then
				rectfill(x+(st-1)*4-1, y-1, x+(st+nd-st)*4-1, y+5,4)
				for j=0,nd-st do
					srand(i+j+st+nd+#str)
					local s=rnd(cptspr)
					local xf = flr(rnd(4))
					local yf = flr(rnd(2))
					for i=0,15 do
						pal(i,rnd({0,1,2,3,4,5,6,7}))
					end
					sspr(s%16*8+xf,  flr(s/16)*8+yf, 4, 6, x+(st+j-1)*4-1, y-1)
					pal()
				end
				st=-1
				nd=-1
			end
		end
	end
	srand(time())
end

--print string with outline.
function printo(str,startx,
																starty,col,
																col_bg)
	print(str,startx+1,starty,col_bg)
	print(str,startx-1,starty,col_bg)
	print(str,startx,starty+1,col_bg)
	print(str,startx,starty-1,col_bg)
	print(str,startx+1,starty-1,col_bg)
	print(str,startx-1,starty-1,col_bg)
	print(str,startx-1,starty+1,col_bg)
	print(str,startx+1,starty+1,col_bg)
	print(str,startx,starty,col)
end

--print string centered with 
--outline.
function printc(
	str,x,y,
	col,col_bg,
	special_chars)

	local len=(#str*4)+(special_chars*3)
	local startx=x-(len/2)
	local starty=y-2
	printo(str,startx,starty,col,col_bg)
end

--objects
--------------------------------

--make the player
function m_player(x,y)

	--todo: refactor with m_vec.
	local p=
	{
		x=x,
		y=y,

		dx=0,
		dy=0,

		w=8,
		h=16,
		
		max_dx=0.6,--max x speed
		max_dy=2,--max y speed

		jump_speed=-1.5,--jump veloclity
		acc=0.05,--acceleration
		dcc=0.9,--decceleration
		air_dcc=0.98,--air decceleration
		grav=0.15,

		attacking=0,
		
		--helper for more complex
		--button press tracking.
		--todo: generalize button index.

		attack_button=
		{
			update=function(self)
				--start with assumption
				--that not a new press.
				self.is_pressed=false
				if btn(4) then
					if not self.is_down then
						self.is_pressed=true
					end
					self.is_down=true
					self.ticks_down+=1
				else
					self.is_down=false
					self.is_pressed=false
					self.ticks_down=0
				end
			end,
			--state
			is_pressed=false,--pressed this frame
			is_down=false,--currently down
			ticks_down=0,--how long down
		},

		jump_button=
		{
			update=function(self)
				--start with assumption
				--that not a new press.
				self.is_pressed=false
				if btn(5) then
					if not self.is_down then
						self.is_pressed=true
					end
					self.is_down=true
					self.ticks_down+=1
				else
					self.is_down=false
					self.is_pressed=false
					self.ticks_down=0
				end
			end,
			--state
			is_pressed=false,--pressed this frame
			is_down=false,--currently down
			ticks_down=0,--how long down
		},

		jump_hold_time=0,--how long jump is held
		min_jump_press=5,--min time jump can be held
		max_jump_press=10,--max time jump can be held

		jump_btn_released=true,--can we jump again?
		grounded=false,--on ground

		airtime=0,--time since grounded
		
		--animation definitions.
		--use with set_anim()
		anims=
		{
			["stand"]=
			{
				ticks=1,--how long is each frame shown.
				frames={2},--what frames are shown.
			},
			["walk"]=
			{
				ticks=8,
				frames={3,4,5,6},
			},
			["jump"]=
			{
				ticks=1,
				frames={1},
			},
			["slide"]=
			{
				ticks=1,
				frames={7},
			},
		},

		atk_len=18,

		atk_anims = {
			{8,16,8,4,-3,-3},
			{17,16,10,3,-3,-3},
			{17,16,12,3,-2,-2},
			{32,16,8,6,-3,-3},
			{40,16,8,6,-3,-3},
		},

		curanim="walk",--currently playing animation
		curframe=1,--curent frame of animation.
		animtick=0,--ticks until next frame should show.
		flipx=false,--show sprite be flipped.
		
		--request new animation to play.
		set_anim=function(self,anim)
			if(anim==self.curanim)return--early out.
			local a=self.anims[anim]
			self.animtick=a.ticks--ticks count down.
			self.curanim=anim
			self.curframe=1
		end,
		
		--call once per tick.
		update=function(self)
	
			--todo: kill enemies.
			
			--track button presses
			local bl=btn(0) --left
			local br=btn(1) --right
			
			--move left/right
			if self.attacking>self.atk_len-6 or not(bl or br) then
				if self.grounded then
					self.dx*=self.dcc
				else
					self.dx*=self.air_dcc
				end
			elseif bl then
				self.dx-=self.acc
				br=false--handle double press
			elseif br then
				self.dx+=self.acc
			end

			--limit walk speed
			self.dx=mid(-self.max_dx,self.dx,self.max_dx)
			
			--move in x
			self.x+=self.dx
			
			--hit walls
			collide_side(self)

			--jump buttons
			self.jump_button:update()
			self.attack_button:update()

			--jump is complex.
			--we allow jump if:
			--	on ground
			--	recently on ground
			--	pressed btn right before landing
			--also, jump velocity is
			--not instant. it applies over
			--multiple frames.
			if self.jump_button.is_down then
				--is player on ground recently.
				--allow for jump right after 
				--walking off ledge.
				local on_ground=(self.grounded or self.airtime<5)
				--was btn presses recently?
				--allow for pressing right before
				--hitting ground.
				local new_jump_btn=self.jump_button.ticks_down<10
				--is player continuing a jump
				--or starting a new one?
				if self.jump_hold_time>0 or (on_ground and new_jump_btn) then
					if(self.jump_hold_time==0)sfx(snd.jump)--new jump snd
					self.jump_hold_time+=1
					--keep applying jump velocity
					--until max jump time.
					if self.jump_hold_time<self.max_jump_press then
						self.dy=self.jump_speed--keep going up while held
					end
				end
			else
				self.jump_hold_time=0
			end

			if self.attacking > 0 then
				self.attacking-=1
			else
				if self.attack_button.is_pressed then
					self.attacking=self.atk_len
				end
			end

			
			--move in y
			self.dy+=self.grav
			self.dy=mid(-self.max_dy,self.dy,self.max_dy)
			self.y+=self.dy

			--floor
			if not collide_floor(self) then
				self:set_anim("jump")
				self.grounded=false
				self.airtime+=1
			end

			--roof
			collide_roof(self)

			--handle playing correct animation when
			--on the ground.
			if self.grounded then
				if br then
					if self.dx<0 then
						--pressing right but still moving left.
						self:set_anim("slide")
					else
						self:set_anim("walk")
					end
				elseif bl then
					if self.dx>0 then
						--pressing left but still moving right.
						self:set_anim("slide")
					else
						self:set_anim("walk")
					end
				else
					self:set_anim("stand")
				end
			end

			--flip
			if br then
				self.flipx=false
			elseif bl then
				self.flipx=true
			end

			--anim tick
			self.animtick-=1
			if self.animtick<=0 then
				self.curframe+=1
				local a=self.anims[self.curanim]
				self.animtick=a.ticks--reset timer
				if self.curframe>#a.frames then
					self.curframe=1--loop
				end
			end

		end,

		--draw the player
		draw=function(self)
			local a=self.anims[self.curanim]
			local frame=a.frames[self.curframe]
			spr(frame,
				self.x-(self.w/2),
				self.y-(self.h/2),
				self.w/8,self.h/8,
				self.flipx,
				false)
			if self.attacking == 0 then
				sspr(0,16,6,8,self.x-3,self.y-3,6,8,self.flipx)
			else
				local l=self.atk_len
				local a=self.atk_anims[flr((l-self.attacking)/(l/#self.atk_anims))+1]
				local xf=self.flipx and a[4]-a[5]-14  or a[5]
				sspr(a[1],a[2],a[3],a[4],self.x+xf,self.y+a[6],a[3],a[4],self.flipx)
			end
		end,
	}

	return p
end

--make the camera.
function m_cam(target)
	local c=
	{
		tar=target,--target to follow.
		pos=m_vec(target.x,target.y),
		
		--how far from center of screen target must
		--be before camera starts following.
		--allows for movement in center without camera
		--constantly moving.
		pull_threshold=16,

		--min and max positions of camera.
		--the edges of the level.
		pos_min=m_vec(64,64),
		pos_max=m_vec(960,64),
		
		shake_remaining=0,
		shake_force=0,

		update=function(self)

			self.shake_remaining=max(0,self.shake_remaining-1)
			
			--follow target outside of
			--pull range.
			if self:pull_max_x()<self.tar.x then
				self.pos.x+=min(self.tar.x-self:pull_max_x(),4)
			end
			if self:pull_min_x()>self.tar.x then
				self.pos.x+=min((self.tar.x-self:pull_min_x()),4)
			end
			if self:pull_max_y()<self.tar.y then
				self.pos.y+=min(self.tar.y-self:pull_max_y(),4)
			end
			if self:pull_min_y()>self.tar.y then
				self.pos.y+=min((self.tar.y-self:pull_min_y()),4)
			end

			--lock to edge
			if(self.pos.x<self.pos_min.x)self.pos.x=self.pos_min.x
			if(self.pos.x>self.pos_max.x)self.pos.x=self.pos_max.x
			if(self.pos.y<self.pos_min.y)self.pos.y=self.pos_min.y
			if(self.pos.y>self.pos_max.y)self.pos.y=self.pos_max.y
		end,

		cam_pos=function(self)
			--calculate camera shake.
			local shk=m_vec(0,0)
			if self.shake_remaining>0 then
				shk.x=rnd(self.shake_force)-(self.shake_force/2)
				shk.y=rnd(self.shake_force)-(self.shake_force/2)
			end
			return self.pos.x-64+shk.x,self.pos.y-64+shk.y
		end,

		pull_max_x=function(self)
			return self.pos.x+self.pull_threshold
		end,

		pull_min_x=function(self)
			return self.pos.x-self.pull_threshold
		end,

		pull_max_y=function(self)
			return self.pos.y+self.pull_threshold
		end,

		pull_min_y=function(self)
			return self.pos.y-self.pull_threshold
		end,
		
		shake=function(self,ticks,force)
			self.shake_remaining=ticks
			self.shake_force=force
		end
	}

	return c
end


-->8
--game flow
--------------------------------

--reset the game to its initial
--state. use this instead of
--_init()
function reset()
	ticks=0
	p1=m_player(8,100)
	p1:set_anim("walk")
	cam=m_cam(p1)
end

-->8
--p8 functions
--------------------------------

function _init()
	reset()
end

function _update60()
	ticks+=1
	p1:update()
	cam:update()
	--demo camera shake
	-- if(btnp(4))cam:shake(15,2)
end

function _draw()

	cls(0)
	
	camera(cam:cam_pos())
	
	map(0,0,0,0,128,128)
	
	p1:draw()
	
	--hud
	camera(0,0)

	clip(0,0,128,32)
	rectfill(0,0,127,32,4)

	for i, l in pairs(text[1]) do
		local y=32+8*i-time()*4
		if y >-6 and y< 36 then
			printx(l,2,32+8*i-time()*4,0)
		end
	end

	clip()
	palt(7,true)
	palt(0,false)
	sspr(0,88,128,8,0,32)
	palt()

end

-->8
--text

text={
	{
"           tablet v",
"",
"they stood at the forest's edge",
"gazing at the top of the cedar",
"tree, gazing at the entrance to",
"the forest. where humbaba would",
"walk there was a trail, the",
"roads led straight on, the path",
"was excellent. then they saw",
"the cedar mountain, the",
"dwelling of the gods, the",
"throne dais of imini.",

"across the face of the mountain",
"the cedar brought forth",
"luxurious foliage, its shade",
"was good, extremely pleasant.",
"the thornbushes were matted",
"together, the w##d# were a",
"thicket ### #### among the",
"cedars, ### ## ## ## #### ",
"#### the boxwood, the forest",
"was surrounded by a ravine two",
"leagues long, ########### ##  ",
"## #### #### ############### ",
"and again for two-thirds,",
"#### ####  ## #### ########## ",
"#############################       ",
"############ ################ ",
"##### ############ ##########       ",
"##### suddenly the swords ### ",
"and after the sheaths ####### ",
"#####the axes were smeared### ",
"##################dagger and sword",
"",
"",
"",
"",
"",
"    alone",
"",
"",
"",
"",
"",
"humbaba spoke to gilgamesh saying:",
"\"he does not come###### ",
"####################################### ",
"################################## ",
"###################################### ",
"###########enlil####################### ",
"enkidu spoke to humbaba, saying:",
"\"humbaba ####     one alone",
"#####strangers###### ",
"a slippery path is not feared",
"by two people who help each",
"other.",
"",
"",
"",
"twice three times...",
"a three-ply rope cannot be cut",
"the mighty lion--two cubs can roll him over."


}}
__gfx__
01234567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
89abcdef000111000001110000011100000111000001110000011100000111000000000000000000000000000000000000000000000000000000000000000000
00700700001414000014140000141400001414000014140000141400001414000000000000000000000000000000000000000000000000000000000000000000
00077000001444000014440000144400001444000014440000144400001444000000000000000000000000000000000000000000000000000000000000000000
00077000001144000011440000114400001144000011440000114400001144000000000000000000000000000000000000000000000000000000000000000000
00700700022122000221220002212200002122000021220002212200022122000000000000000000000000000000000000000000000000000000000000000000
00000000022122000221220002212200002122000021220002212200022122000000000000000000000000000000000000000000000000000000000000000000
00000000002222000022220000222200002222000022220000222200002222000000000000000000000000000000000000000000000000000000000000000000
00000000001220000012204000122040001224000012200000122400001220000000000000000000000000000000000000000000000000000000000000000000
00000000001220000012200400122004001224000012200000122400001220000000000000000000000000000000000000000000000000000000000000000000
00000000001222000012220000122200001222000012220000122200001222000000000000000000000000000000000000000000000000000000000000000000
00000000004022000012220000122200001222000012220000122200001222000000000000000000000000000000000000000000000000000000000000000000
00000000004005000042220000222220000455000022222000045500000405000000000000000000000000000000000000000000000000000000000000000000
00000000040050000040050004400050005400000550004000540000000405000000000000000000000000000000000000000000000000000000000000000000
00000000044055000040050004000050005440000500004000544000004000500000000000000000000000000000000000000000000000000000000000000000
00000000000000000044055004400055000440000550004400044000004400550000000000000000000000000000000000000000000000000000000000000000
2200000022000000a224449aaaaaa000220000002200000000000000000000000000000000000000000000000000000000000000000000000000000000000000
220000002200090002200900000000002200000a2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000
4000000004449aaa0000000000000000040000aa0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000
4000000000090000000000000000000000490aa00409000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0490000000000000000000000000000000049a000049aaaa00000000000000000000000000000000000000000000000000000000000000000000000000000000
09aa0000000000000000000000000000000009000009000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1ff11ff10bbbbbbbbbbbbbb0000013bbbb310000bbbbbbbb000013bb00000000b3b1000000100100001001000000000000000000000000000000008882888200
49944994bb3b3b3bb3b3b3bb00013b3bb3331000b3b3b3b300133b3b00000000bb33100001011000000110100001000000000000000000000000082888288280
01100110b3b333333b3b3b3b000013bbbb3100003b3b3b3b000133bb00001010b3b1000010101011110101010000001000000000000000000000888288888882
00000000bb333131131333bb01013b3bb33310101333313100133b3b01013130bb33100010011101101110010000000000000000000000000088888889998828
00000000b3b310100101333b131333bbbb33313103131010000133bb13133331b3b33100011000100100011001000000000000000000000008118899a00a9888
00000000bb310000000013bb33333b3bb3b3b3b30101000000001b3bb3b3b3b3bb33100010101100001101010000000000000000000000008118899000009982
00000000b3b310000001333bb3b3b3bbbb3b3b3b00000000000133bb3b3b3b3bb3b33100101101011010110100000100000000000000000088889a000000a928
00000000bb310000000013bbbbbbbbb00bbbbbbb0000000000001b3bbbbbbbbbbb31000011000110011000110000000000000000000000008880900000099a88
10000000000000010001333bb3331000000000000000000000000000cccccccc0000000000000000000000000000000000000000000000000007900000099882
1010001000010101000013b33b3100000000000000000000000000000c0c00c00000000000000000000000000000000000000000000000000079900000099828
10000000100000010000133bb3310000000000000000000000000000000001000000000000000000000000000000000000000000000000000799000000aa8880
10101000001010010000011331100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000998880
11000000000100010000010110100000000000000000000000000000001010010000000000000000000000000000000000000000000000000000000000998820
100100010000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009a8280
11000000000000010000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000a98882
10000000010000010000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000998828
10100000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000998888
10010000000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000998882
100000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009a8828
10100000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a98888
10000000010001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009998882
00000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009998822
00000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000998828
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009a8888
00000000000000000000000000000000000000000000000000000000500500500000000000000000000000000000000000000000000000001ff11ff11ff11ff1
00000000000000000000000000000000000000000000900000000000550600000000000000000000000000000000000000000000000000004994499449944994
00000000000000000000000000000000000000000009a90000000000605500000000000000000000000000000000000000000000000000000110011001198118
0000000000000000000000000000000000000000000a7a0000000000600500000000000000000000000000000000000000000000000000000000000000098888
00000000000000000000000000055500000000000009f900000000000006000000000000000000000000000000000000000000000000000000000000000a8822
00000000000000000000000000555550000000000001400000000000000600000000000000000000000000000000000000000000000000000000000000099888
0000000000000000000000000005055000500000000140000033500000060000000000000000000000000000000000000000000000000000000000000000a988
00000000000000000000000000555500055005000000100003555300000000000000000000000000000000000000000000000000000000000000000000009988
000ffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00ff6666666666666666ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00f6fffff6f6f6f6ffff6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00f6ff6ff6f6f6f6f6ff6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00ff66fff6f6f6f6ff66ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000ffff0f6f6f6f60ffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000f6f6f6f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000f6f6f6f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
66666666f6f6f6f60666666000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6ffffff6f6f6f6f66fff6ff600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6ffffff6f6f6f6f66ffff6f600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6ffffff6f6f6f6f66ffffff600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6ffffff6f6f6f6f66ffffff600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6ffffff6f6f6f6f66ffffff600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6ffffff6f6f6f6f66ffffff600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
66666666f6f6f6f60666666000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000f6f6f6f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000f6f6f6f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000f6f6f6f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000f6f6f6f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000006666666666000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000006ffffffffff600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000006ffffffffffff60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00006666666666666666000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00444444444000000000000044444444444444444444444440000004444444444444444444444444444444444444444444444444444444444444444444444444
00000400000044440000000000444444444444444444000004444400000004444444400000000000000000000000444444444444400000044444444444000000
04440004444444444444444044000000000000000000444444444444444440000000004404444444444044444440000000000000004444400000000000044444
00444404444440444444444044444444444444444444444404444400444444444444444440444444444404444444444444444404444444404444444444404444
70044440044444044444444400000000000044444444404444444444000044444444444444000000000004444444444444444440000000004444444444440400
77704444404000000000000007777777777700000044444444444444444444000440000000077777777770000000000000000000777777770000000000000007
77770000000077777777777777777777777777777000000000000000000000077000777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737373737373737373737373737373737
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777737
__label__
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444440004000400040444000400044444040444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444044040404040444044440444444040444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444044000400440444004440444444040444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444044040404040444044440444444000444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444044040400040004000440444444404444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44000404040004040444444004000440044004004444440004000444440004040400044444000440040004000440040004404440044444000400444004000444
44404404040444040444440444404404040404040444440404404444444044040404444444044404040404044404444044044404444444044404040444044444
44404400040044000444440004404404040404040444440004404444444044000400444444004404040044004400044044444400044444004404040444004444
44404404040444440444444404404404040404040444440404404444444044040404444444044404040404044444044044444444044444044404040404044444
44404404040004000444440044404400440044000444440404404444444044040400044444044400440404000400444044444400444444000400040004000444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44400400040004000400444004444400040004444400040404000444440004400400044444400400044444000404040004444440040004004400040004444444
44044404044404404404040444444404044044444440440404044444444044040404044444040404444444404404040444444404440444040404040404444444
00444444444000000000000044444444444444444444444440000004444444444444444444444444444444444444444444444444444444444444444444444444
00000400000044440000000000444444444444444444000004444400000004444444400000000000000000000000444444444444400000044444444444000000
04440004444444444444444044000000000000000000444444444444444440000000004404444444444044444440000000000000004444400000000000044444
00444404444440444444444044444444444444444444444404444400444444444444444440444444444404444444444444444404444444404444444444404444
00044440044444044444444400000000000044444444404444444444000044444444444444000000000004444444444444444440000000004444444444440400
00004444404000000000000001011010110000000044444444444444444444000440000000000000000000000000000000000000110000110000000000000000
00000000000000000000101011011011010100000000000000000000000000000000000001000000000000000000101101011011010110101101101101011011
00000110001100000000011000111100011000000000000000000000000000000000000000000000000000000000110001101100011001100011110001101100
01000010010000100100000000000000000000100100001001000000000000000000000000000000000100000000000000000010010010000000000000000000
10100101100000011010000000000000000001011000010110000001000000000000000000000001010100010000000000000001101010100010000000000000
01011010101111010101000000000000000010101011101010110000001000000000000000001000000100000010000000001101010110000000000000000000
10011001110110111001000000000000000010011101100111010000000000000000000000000010100100000000000000001011100110101000000000000000
01100110001001000110000000000000000001100010011000100100000000000000000000000001000101000000000000000100011011000000000000000000
01011010110000110101000000000000000010101100101011000000000000000000000000000000010100000000000000000011010110010001000000000000
11011011010110101101000000000000000010110101101101010000010000000000000000000000000100000100000000001010110111000000000000000000
00111100011001100011000000000000000011000110110001100000000000000000000000000100000100000000000000000110001110000000000000000000
01000000000000100100000000000000000000100100001001000010010000000000100000000000000100000000001001000010010010000000000000000000
10100000000000011010000000000000000001011000010110000101100000000000101000100001010100000000000110100001101010100010000000000001
01010000000011010101000000000000000010101011101010111010101100000000100000001000000100000000110101011101010110000000000000000000
10010000000010111001000000000000000010011101100111011001110100000000101010000010100100000000101110011011100110101000000000000000
01100000000001000110000000000000000001100010011000100110001000000000110000000001000100000000010001100100011011000000000000000100
01010000000000110101000000000000000010101100101011001010110000000000100100010000010100000000001101010011010110010001000000000000
11010000000010101101000000000000000010110101101101011011010100000000110000000000000100000000101011011010110111000000000000000000
00110000000001100011000000000000000011000110110001101100011000000000100000000100000100000000011000110110001110000000000000000000
00000010010000000000000000000000000000000000000000000010010000100100100000000000000100100100001001000000000010000000000000000000
00000001101000000000000000000000000000000000000000000101100001011000101000100001010100011010000110100000000010100010000000000000
00001101010100000000000000000000000000000000000000001010101110101011100000001000000111010101110101010000000010000000000000000000
00001011100100000000000000000000000000000000000000001001110110011101101010000010100110111001101110010000000010101000000000000000
00000100011000000000000000000000000000000000000000000110001001100010110000000001000101000110010001100000000011000000000000000000
00000011010100000000000000000000000000000000000000001010110010101100100100010000010100110101001101010000000010010001000000000000
00001010110100000000000000000000000000000000000000001011010110110101110000000000000110101101101011010000000011000000000000000000
00000110001100000000000000000000000000000000000000001100011011000110100000000100000101100011011000110000000010000000000000000000
01000010010000000000000000000000000000000000000000000000000000000000100000000000000100000000000000000000000010000000000000000000
10100101100000000000000000000000000000000000000000000000000000000000101000100001010100000000000000000000000010100010000000000000
01011010101100000000000000000000000000000000000000000000000000000000100000001000000100000000000000000000000010000000000000000000
10011001110100000000000000000000000000000000000000000000000000000000101010000010100100000000000000000000000010101000000000000000
01100110001000000000000000000000000000000000000000000000000000000000110000000001000100000000000000000000000011000000000000000000
01011010110000000000000000000000000000000000000000000000000000000000100100010000010100000000000000000000000010010001000000000000
11011011010100000000000000000000000000000000000000000000000000000000110000000000000100000000000000000000000011000000000000000000
00111100011000000000000000000000000000000000000000000000000000000000100000000100000100000000000000000000000010000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000101000100000000000000000000000000000000010100010000000000000
00000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000010101000000000000000
00000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000011000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000100100010000000000000000000000000000000010010001000000000000
00000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000011000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000000000000010100010000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000014140000000000000000000000000010000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000014440000000000000000000000000010101000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000011440000000000000000000000000011000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000221220000000000000000000000000010010001000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000221220000000000000000000000000011000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000422220000000000000000000000000010000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000412200000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000049200000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000009aa20000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000012aa0000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000422aa000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000040040000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000044044000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000044044000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb00110
00000000000000000000000000000000000000000000000000000000000000000000bb3b3b3bb3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3bb1ff1
00000000000000000000000000000000000000000000000000000000000000000000b3b333333b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b4994
00000000000000000000000000000000000000000000000000000000000000000000bb3331311333313113333131133331311333313113333131131333bb0110
00000000000000000000000000000000000000000000000000000000000000055500b3b3101003131010031310100313101003131010031310100101333b0000
00000000000000000000000000000000000000000000000000000000000000555550bb3100000101000001010000010100000101000001010000000013bb0000
00000000000000000000000000000000000000000000000000000000000000050550b3b3100000000000000000000000000000000000000000000001333b0000
00000000000000000000000000000000000000000000000000000000000000555500bb3100000000000000000000000000000000000000000000000013bb0000
0000000000000000000000000000000000000000000000000000000000000bbbbbbb001001000000000000000000000000000000000000000000000013bb0000
000000000000000000000000000000000000000000000000000000000000bb3b3b3b00011010000000000000000000000000000000000000000000133b3b0000
000000000000000000000000000000000000000000000000000000000000b3b33333110101010000000000000000000000000000000000000000000133bb0000
000000000000000000000000000000000000000000000000000000000000bb33313110111001000000000000000000000000000000000000000000133b3b0000
000000000000000000000000000000000000000000000000000000000000b3b31010010001100000000000000000000000000000000000000000000133bb0000
000000000000000000000000000000000000000000000000000000000000bb31000000110101000000000000000000000000000000000000000000001b3b0000
000000000000000000000000000000000000000000000000000000335000b3b31000101011010000000000000000000000000000000000000000000133bb0000
000000000000000000000000000000000000000000000000000003555300bb31000001100011000000000000000000000000000000000000000000001b3b0000
00000000000000000000000000000000000000000000000000000bbbbbbb0010010000000000000000000000000000000000000000000000000000100100cccc
0000000000000000000000000000000000000000000000000000bb3b3b3b01011000000000000000000000000000000000000000000000000000000110100c0c
0000000000000000000000000000000000000000000000000000b3b3333310101011000000000000000000000000000000000000000000000000110101010000
0000000000000000000000000000000000000000000000000000bb33313110011101000000000000000000000000000000000000000000000000101110010100
0000000000000000000000000000000000000000000000000000b3b3101001100010000000000000000000000000000000000000000000000000010001100010
0000000000000000000000000000000000000000000000000000bb31000010101100000000000000000000000000000000000000000000000000001101010000
5000000000000000000000000000000000000000000000500000b3b3100010110101000000000000000000000000000000000000000000000000101011010100
5300000000000000000000000000000000000000000005500500bb31000011000110000000000000000000000000000000000000000000000000011000110000
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb3b1000000000000001001000000000000000000000000000000000000000000001001000000
b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3bb33100000000000000110100000000000000000000000000000000000000000000110100000
3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3bb3b1000000000000110101010000000000000000000000000000000000000000110101010000
3131133331311333313113333131133331311333313113333131bb33100000000000101110010000000000000000000000000000000000000000101110010000
1010031310100313101003131010031310100313101003131010b3b3310000000000010001100000000000000000000000000000000000000000010001100000
0000010100000101000001010000010100000101000001010000bb33100000000000001101010000000000000000000000000000000000000000001101010000
0000000000000000000000000000000000000000000000000000b3b3310000000000101011010000000000000000000000000000000000000000101011010000
0000000000000000000000000000000000000000000000000000bb31000000000000011000110000000000000000000000000000000000000000011000110000

__gff__
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002010101010101010100000001000000000001010000000000000000000000100000000000000000000000000000020201010000000000000000000000000202
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__map__
71717171717171717171717171717171717100000000004949490000000000004b4b00004a494a4a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073737373737373737373737373737373
7070707070707070704970707070704a4900000000004a4b4a49494949490000004a4a4a004a4949000000000000004a4a0000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073737373737373737373737373737373
70707070707070707070707070707049000000000049494a494b4a00004a4949494a4b4a4a4a494a4a00000000004a4a4a0000004a4a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073737373737373737373737373737373
7070707049707049494a70707070704a004a494b4b0000004949494949494b4a4a0000004b4b4a4a00490000004a4a4a000000004a4a4a00000000004949000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000073737373737373737373737373737373
70707070707049004a4949707070704a004a494b4b00004b000049494a49494949495149494a4a0000494949004a4a00000000004a4a4a4a4a00004949490000000000004a4a00007700000000000074770000000000000000005f00000000000000000000000000000000000000000073737373737373737373737373737373
49707049497049494a004a7070704a494a000049494b0000514b004a50000000004a4a4a00004949495000494900005100000000004a4a4a4a494949004a000000004a4a4a000000747400000000777700815f00000000005f919100000000000000000000000000000000000000000073737373737373737373737373737373
494970704970704a494a0070514a4a004a0000494949005051004a4a50004b0000005100000000000050000061000051000000000000004a4a494900004a0000004a4a4a0000000000747400007774779191915f5f5f815f91915f00000000000000000000000000000000000000000073737373737373737373737373737373
70704a4b494a4a50494949605151004a0000000000494950514a4a00500000000000510000000000005000006100005100000000000000514b500000000000005000490000000000770074774b77770000008191915f5f8191000000000000000000000000000000000000000000000073737373737373737373737373737373
4a500000614a4a500049005051614a490000000000000050510000005000004b4b0051000000000000500000610000510000000000000051005000000000000050004900000000000000005700400000000000009181826f00000000000000000000000000000000000000000000000073737373737373737373737373737373
0060004b610000500051005061510000000000000000005000000000500000000000510000000000000000006100000000000000000000514b60000000000073500049004e4f0000000000574b400000000000005e5f6f6f00000000000000000000000000000000000000000000000073737373737373737373737373737373
00604b00510000500051006051510000404040000000000000000000500000004b00000000000000000000000000000000000000000000610000000000000000500049005e5f0000000000574b400000000000005e825f6f00000000000000000000000000000000000000000000000073737373737373737373737373737373
0050000061000000005100505151000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f00000000005700400000000000005e00006f00000000000000000000000000000000000000000000000073737373737373737373737373737373
00504b0051000000000000606100004040404000000073414545454545424040404040404040404040404c404040404040404c4c40404040454040404040404040404040407f40404040404040404040404c4c4c4c4c4c4040404040444444444444444c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c404040
00600000000000737400000000510000000000000076414a0000000000460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073737373737373737373737373737373
00760000000076414200760051517600000000007441497000000000004a5757575757575757575757575757575757575757575757575757575757575757575757575753575757575757575757575757575757575757575757575757575757575757575757575757737373737373737373737373737373737373737373737373
49454545454545535245454545454545454545454548704a00000000004a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
01060000250512b051330513d05100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000