Compare commits

...

2 Commits

Author SHA1 Message Date
470b909d0a
not a great sprite but it's a start 2024-02-05 23:42:59 -08:00
c570453488
more graphics
including some jank auto-rotated sprites I am now redoing by hand
2024-02-05 23:30:33 -08:00

View File

@ -76,6 +76,21 @@ function event_list:push_back(x)
self.tail = x self.tail = x
end end
function event_list:strip(f)
local p, n = self, self.next
while n do
if f(n) then
p.next = n.next
else
p = n
end
n = n.next
end
self.tail = p
return p
end
function event_list:update() function event_list:update()
local p, n = self, self.next local p, n = self, self.next
while n do while n do
@ -393,20 +408,26 @@ phinstate_jump_full = {
yo=-8, yo=-8,
} }
phinstate_jump_wane = { phinstate_jump_wane = {
s={1}, s={69},
ws=3, ws=3,
hs=3, hs=3,
xo=-12, xo=-12,
yo=-8, yo=-8,
} }
phinstate_crest = { phinstate_crest = {
s={4}, s={72},
ws=3, ws=3,
hs=2, hs=2,
xo=-12, xo=-12,
yo=-8, yo=-8,
} }
phinstate_fall_wax = phinstate_jump_wane phinstate_fall_wax = {
s={1},
ws=3,
hs=3,
xo=-12,
yo=-16,
}
phinstate_fall_full = { phinstate_fall_full = {
s={7}, s={7},
ws=2, ws=2,
@ -423,14 +444,14 @@ phinstate_dive_wane = {
yo=-16, yo=-16,
} }
phinstate_return = { phinstate_return = {
s={4}, s={104},
ws=3, ws=3,
hs=2, hs=2,
xo=-12, xo=-12,
yo=-8, yo=-8,
} }
phinstate_rise_wax = phinstate_dive_wane phinstate_rise_wax = phinstate_jump_wane
phinstate_rise_full = phinstate_dive_full phinstate_rise_full = phinstate_jump_full
phinstate_error = { phinstate_error = {
s={0}, s={0},
@ -528,14 +549,14 @@ function toyphin:update()
y=new_y y=new_y
local wet, st = y > 64, phinstate_error local wet, st = y > 64, phinstate_error
if dy < -2.5 then if dy < -2.15 then
st = wet and phinstate_rise_full or phinstate_jump_full st = wet and phinstate_rise_full or phinstate_jump_full
elseif dy <= -1.5 then elseif dy <= -1 then
st = wet and phinstate_rise_wax or phinstate_jump_wane st = wet and phinstate_rise_wax or phinstate_jump_wane
elseif dy < 1.5 then elseif dy < 1 then
-- handle idle special case later -- handle idle special case later
st = wet and phinstate_return or phinstate_crest st = wet and phinstate_return or phinstate_crest
elseif dy <= 2.5 then elseif dy <= 2.15 then
st = wet and phinstate_dive_wane or phinstate_fall_wax st = wet and phinstate_dive_wane or phinstate_fall_wax
else else
st = wet and phinstate_dive_full or phinstate_fall_full st = wet and phinstate_dive_full or phinstate_fall_full
@ -858,30 +879,38 @@ __gfx__
00000000000000000000000000000000000000002222ee7e22222000000000000000000027770000777722e2777770002eee0000eeee2272eeeee00000000000 00000000000000000000000000000000000000002222ee7e22222000000000000000000027770000777722e2777770002eee0000eeee2272eeeee00000000000
0000000000000000000000000000000000000000000eeee7000000000000000000000000770000000002222e00000000ee000000000222270000000000000000 0000000000000000000000000000000000000000000eeee7000000000000000000000000770000000002222e00000000ee000000000222270000000000000000
00000000000000000000000000000000000000000eee2200000000000000000000000000000000000222770000000000000000000222ee000000000000000000 00000000000000000000000000000000000000000eee2200000000000000000000000000000000000222770000000000000000000222ee000000000000000000
00000000000066000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000066000000000000000000000002200000000000000000000002200000000000000000000000000000000000000000000000000000000000000000
00000000000222600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000022260000000000000000000222662000000000000000000222662000000000000000000000000000070220000000000220e220000000000000000
00000000002222e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000002222e000000000000000006227222e00000000000000002227222e0000000000000000000000000222026200000000022262220000000000000000
0000000002712ee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000002712ee00000000000060026227c1eee0000000000006622227c1eee0000000000220000000000000e22e262000000000e2226220000000000000000
00000000627ceee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000627ceee00000000000222222227ceee000000000006622266272eee000000000002620000000000000ee26220000000000ee22260000000000000000
000000022277eee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000022277eee000000000022226222222eee000000000022222622222eee0000000000022620000000000000ee22600000000000ee2220000000000000000
000000222222ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000222222ee0000000000000062222222ee0000000000000022222222ee000000000000022622000000000000e226000000000000e2220000000000000000
000066226622ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000066226622ee000000000000006222222220000000000000002222222220000000000026222626622000000000eee2200002000000ee222000000000000000
0006222622226e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0006222622226e0000000000000622222226000000000000000222222226000002000002622222222222200000000ee22200020000000ee26200000000000000
00022222222226000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00022222222226000000000000022222e22600000000000000022222e226000026620222222222222777262000000ee22266022000000ee22620002000000000
00220022222222000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0022002222222200000000000062222ee000000000000000002222eee22e0000222622222eee222227c1226200000ee22226226000000ee22222022000000000
0000002226ee26000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000002226ee2600000000000662eeee000000000000000002222eee022e00000e22222eeeeeee2222eee26200000ee22222226000020ee22226262000000000
0000002226ee22600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000002226ee2260000000222222eee000000000000000662222ee0002e00000e2622e00000ee2222eeeeee2000022ee22222200000266ee2222622000000000
000000222ee002200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000222ee0022000000226622ee0000000000000000222622ee000000000002222e00000002262eeeeee000000222222222600000222226222260000000000
00000022eee002200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000022eee0022000000222222e00000000000000000222222e00000000000022ee000000022226000000000000222222222600000022222622220000000000
0000022eee0000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000022eee0000200000000e22e00000000000000000000e22e00000000000000e00000002222200000000000000006622222260000000222222220000000000
0000022ee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000022ee00000000000000222e00000000000000000000226e000000000000000000000000000000000000000000002222772200000000ee227720000000000
0000022e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000022e00000000000000002ee0000000000000000000002ee000000000000000000000000000000000000000000000eeec720000000000eeec720000000000
0006622e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0006622e00000000000000000ee0000000000000000000000ee000000000000000000000000000000000000000000000eeee1200000000000ee1720000000000
0022226e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0022226e00000000000000000000000000000000000000000000000000000000000000000022000000000000000000000eee2600000000000ee2220000000000
02222226000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 02222226000000000000000000000000000000000000000000000000000000000000000000262000000000000000000000ee26000000000000ee220000000000
022e022e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 022e022e0000000000000000000000000000000000000000000000000000000000200000002262000000000000000000000e620000000000000e200000000000
0200022e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0200022e000000000000000000000000000000000000000000000000000000000222000000022622000000000000000000002200000000000000000000000000
00000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000020000000000000000000000000000000000000000000000000000000000262000000222626622000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000e26220002226222222220000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000002222262222666222277726200000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000222ee2662222222227c122620000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000ee00eeeee222222222eee2620000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000eeeeeee2222eeeeee00000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000eeee2262eeeee0000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000022226000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000222ee00000000000000000000000000000000000000000000000000
__label__ __label__
cssscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cssscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
s777sccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc s777sccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
@ -940,25 +969,25 @@ cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccc2227cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccc2227ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccc22227ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccc277222772cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccc2772222222222cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 2ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
772222222222777272cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 222ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
2222222222227c022721111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 77272ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
2eee222222222eee2721111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 c0227211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
eeeeeeee2222eeeeee11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 eee27211111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
111ttttiiititttt1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 eeeee111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
111111iiiti111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 ttt11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111iiii11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h1
h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1 h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1
h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111 h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111
1h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h11 1h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h11
@ -970,7 +999,7 @@ h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111
h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1 h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1
h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111 h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111
1h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h11 1h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h11
1hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh1 11h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h1
111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h 111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h
hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1 hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1
h11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11h h11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11h
@ -979,7 +1008,7 @@ h11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11h
hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1 hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1
h11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11h h11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11h
1hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh1 1hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh11hh1
1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h 111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h111h
1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh 1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh
h1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hh h1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hh
hh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1h hh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1hhh1h