Planet Putt Putt
namespace music {
// Golf sound effects
export const golferSwing = new music.Melody("~3, C4:0-400, E4:0-400, G4:0-400, R:0, C6:0-30")
export const golfBallLand = new music.Melody("~3, B3:0")
//Angle moving up and down
export const angleUp = new music.Melody("D4:0-400")
export const angleDown = new music.Melody("B3:0-400")
}
namespace customArt {
export const stars = img`
. . . . . . . . . . . . . . . .
. . . . . . . 1 . . . . . . . .
. . . . . . . 1 . . . . . . . .
. . . . . . 9 1 d . . . . . . .
. . . . . . c 1 c . . . . . . .
. . . . . c a 1 a c . . . . . .
. . . 9 c a 1 1 1 a c d . . . .
. 1 1 1 1 1 1 1 1 1 1 1 1 1 . .
. . . d c a 1 1 1 a c 9 . . . .
. . . . . c a 1 a c . . . . . .
. . . . . . c 1 c . . . . . . .
. . . . . . d 1 9 . . . . . . .
. . . . . . . 1 . . . . . . . .
. . . . . . . 1 . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
`
export const ufo = img`
. . . . . 7 7 7 7 6 6 . . . . .
. . . . 7 7 8 7 7 7 6 6 . . . .
. . . . 7 8 7 7 7 7 6 6 . . . .
. . . . 7 8 7 7 7 7 6 6 . . . .
. . . . 6 7 7 7 7 6 6 6 . . . .
. . . . 6 6 6 6 6 6 6 6 . . . .
. . . 1 b b b b b b b b a . . .
. . 1 8 7 b b 8 7 b b 8 7 a . .
1 1 b 7 7 b b 7 7 b b 7 7 b a a
b b b b b b b b b b b b a a a a
. c a a a a a a a a a a a c c .
. . c c c c c c c c c c c c . .
. . 3 3 5 5 3 3 5 5 3 3 5 5 . .
. . . 3 5 . . 3 5 . . 3 5 . . .
. . . 2 4 . . 2 4 . . 2 4 . . .
. . . . 2 . . . 2 . . . 2 . . .
`
export const black_hole_up = img`
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 8 8 0 0 0
0 0 8 0 8 0 0 0 0 0 0 0 0 8 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 8 8 0
0 0 8 0 8 0 0 0 0 8 8 8 8 7 8 0
0 0 0 0 0 0 0 8 8 8 7 7 7 7 8 0
0 0 0 0 0 0 8 8 7 7 7 7 8 8 0 0
0 0 0 0 0 8 8 7 7 7 7 8 8 0 0 0
0 0 0 0 8 8 7 8 2 7 8 8 0 0 0 0
0 0 0 0 8 7 7 8 2 2 2 0 0 0 0 1
0 0 0 8 8 7 7 8 2 2 2 2 2 0 0 0
0 0 0 8 7 7 7 8 2 2 2 2 2 2 0 0
0 0 8 8 7 7 7 8 2 2 2 2 2 2 2 0
0 8 8 8 7 7 7 8 2 2 2 2 2 2 0 0
0 8 8 8 7 7 8 8 2 2 2 2 2 8 0 0
8 8 7 7 7 8 8 8 2 2 8 7 7 8 8 0
`;
export const black_hole_left = img`
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8
0 0 0 0 0 0 0 0 0 0 1 0 0 0 8 8
0 0 0 0 0 0 0 0 0 1 0 0 0 0 8 7
0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 7
0 0 0 0 0 0 0 0 0 0 0 8 8 8 7 7
0 0 0 0 0 0 0 0 8 8 8 8 8 7 7 8
0 0 0 0 8 8 8 8 8 8 8 8 8 7 7 8
0 8 8 8 8 7 7 7 7 7 7 7 7 7 7 8
0 0 0 0 8 8 8 8 8 8 8 8 8 7 7 8
0 0 0 0 0 0 0 0 8 8 8 8 8 7 7 8
0 0 1 0 0 0 0 0 0 0 0 8 8 8 7 7
0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 7
0 0 0 0 0 0 0 0 0 0 8 0 0 0 8 8
0 0 0 0 0 0 0 0 0 8 1 8 0 0 0 8
0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0
`;
export const black_hole_down = img`
0 8 8 7 7 7 8 8 8 7 7 7 8 8 0 0
0 0 8 8 7 7 7 7 7 7 7 8 8 0 0 0
0 0 0 8 8 7 7 7 7 7 7 8 0 0 0 0
0 0 0 8 8 7 7 7 7 7 7 8 0 0 0 0
0 0 0 0 8 8 7 7 7 7 8 8 0 0 0 0
0 0 0 0 8 8 7 7 7 7 8 0 0 0 0 0
0 0 0 8 8 7 7 7 7 8 8 0 0 0 0 0
0 0 8 8 7 7 7 7 8 8 0 0 0 0 0 0
0 8 8 7 7 7 7 8 8 0 0 0 0 0 0 0
8 7 7 7 7 8 8 8 0 0 0 8 0 8 0 0
8 7 8 8 8 8 0 0 0 0 0 0 1 0 0 0
8 8 0 0 0 0 0 0 0 0 0 8 0 8 0 0
0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 8 8 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
`;
export const black_hole_center = img`
8 7 7 8 8 8 1 8 1 1 8 8 7 7 8 8
7 7 8 8 1 1 1 8 1 1 1 8 8 7 7 8
7 8 8 1 1 1 1 8 1 1 1 1 8 8 7 7
8 8 1 1 1 1 1 8 1 1 1 1 1 8 8 7
8 1 1 1 1 1 c 8 c 1 1 1 1 1 8 7
8 1 1 1 1 c c 8 c c 1 1 1 1 8 8
1 1 1 1 c c f 8 f c c 1 1 1 1 8
1 1 1 1 c f f 8 f f c 1 1 1 1 8
1 1 1 1 c c f f f c c 1 1 1 1 8
8 1 1 1 1 c c f c c 1 1 1 1 8 8
8 1 1 1 1 1 c c c 1 1 1 1 1 8 7
8 8 8 1 1 1 1 1 1 1 1 1 1 8 8 7
7 8 8 1 1 1 1 1 1 1 1 1 8 8 7 7
7 7 8 8 1 1 1 1 1 1 1 8 8 7 7 8
8 7 7 8 8 8 1 1 1 8 8 8 7 7 8 8
8 8 7 7 7 8 8 1 8 8 7 7 7 8 8 0
`;
export const black_hole_right = img`
0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0
8 0 0 0 0 0 0 0 8 1 8 0 0 0 0 0
8 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0
8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0
7 7 8 8 8 8 8 8 0 0 0 0 0 0 0 0
7 7 8 8 8 8 8 8 8 8 8 8 0 0 0 0
7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 0
7 7 8 8 8 8 8 8 8 8 8 8 0 0 0 0
7 7 8 8 8 8 8 8 0 0 0 0 0 0 0 0
7 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0
8 8 0 0 0 0 0 0 0 0 0 1 0 0 0 0
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
`;
export const floor_inner = img`
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
5 5 5 5 4 4 5 5 5 5 4 4 5 5 5 5
5 5 5 4 3 3 4 5 5 4 3 3 4 5 5 4
4 4 4 3 3 3 3 4 4 3 5 3 3 4 4 3
5 5 5 3 3 3 3 3 3 3 5 5 5 3 3 3
3 3 5 5 3 d 3 5 5 3 3 3 3 3 3 3
3 3 3 3 3 3 3 3 3 d 9 9 3 3 3 e
3 3 3 5 3 3 3 3 d d d d d 3 3 3
3 5 3 3 5 3 3 3 5 e e e 3 3 3 3
3 3 5 3 5 5 5 5 3 3 3 3 3 5 3 5
3 e 3 3 3 d d 3 3 3 3 3 3 3 3 3
3 3 3 3 3 e e 3 3 3 3 3 3 3 3 3
3 3 3 3 5 3 3 3 3 5 3 3 3 5 5 5
5 3 3 3 5 5 5 3 3 3 5 3 3 3 3 5
3 5 3 3 3 3 3 3 3 3 3 3 3 3 3 3
d d 3 3 3 5 3 3 5 5 3 3 3 3 3 d
`
export const meteor_front = img`
2 2 2 2 2 2 2 2 2 2 2 2 2 . . .
4 4 4 4 4 4 4 4 4 4 4 4 2 2 . .
4 3 3 3 3 5 3 5 3 5 5 4 4 2 2 .
b b b b b b b b b b 3 5 4 4 2 2
b 1 1 1 1 1 1 1 1 1 b 3 5 4 4 2
1 1 1 1 1 1 1 1 1 1 1 b b 5 4 2
b 1 1 1 1 1 1 1 1 1 1 1 b 5 4 2
1 1 1 1 1 1 1 1 1 1 1 1 b 5 4 2
b 1 1 1 1 1 1 1 1 1 1 1 b 5 4 2
1 1 1 1 1 1 1 1 1 1 1 1 b 5 4 2
b 1 1 1 1 1 1 1 1 1 1 b b 5 4 2
1 1 1 1 1 1 1 1 1 1 b 3 5 4 4 2
b b b b b b b b b b 3 5 4 4 2 2
4 3 3 3 3 5 3 5 3 5 5 4 4 2 2 .
4 4 4 4 4 4 4 4 4 4 4 4 2 2 . .
2 2 2 2 2 2 2 2 2 2 2 2 2 . . .
`
export const meteor_middle = img`
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
1 2 4 4 b b b b 4 4 4 b b b 2 b
3 3 2 2 2 5 5 5 2 3 3 3 3 5 5 5
1 1 1 4 4 4 4 b 5 5 2 2 4 4 4 1
b b 5 b b b 2 2 b b b 3 3 3 b b
1 3 4 4 4 4 4 5 5 5 5 1 1 1 1 1
b b b b 2 2 b b b 4 4 4 4 b b b
5 5 5 3 3 3 3 3 3 2 2 2 2 2 5 5
b 2 2 2 b b 4 4 4 4 4 b b b b b
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
`
export const meteor_back = img`
. . . . 2 2 2 2 2 2 2 2 2 2 2 2
. . 5 2 5 5 4 5 4 5 5 2 3 3 4 4
4 4 4 4 3 4 4 4 4 4 3 4 4 4 5 5
. . 2 2 2 3 2 3 2 3 2 2 2 3 2 2
. 5 5 5 3 4 5 5 5 4 b b b b b b
2 2 2 5 5 5 3 2 5 3 2 b 3 2 2 b
4 4 3 4 3 3 4 3 b b b b 4 4 1 b
. 2 2 2 2 3 2 5 5 5 5 b 5 5 5 2
4 4 3 4 3 4 b b b 4 b 4 4 1 1 1
. 4 4 3 5 5 3 5 b b b b 5 5 5 1
2 2 2 3 3 2 2 b 2 3 2 b b b 2 2
. 5 5 5 5 3 3 5 b b 5 1 5 1 5 5
4 4 4 . 4 3 2 4 3 2 4 3 4 2 4 1
. . 5 4 3 4 4 4 4 3 3 3 3 3 5 5
. 4 4 2 5 5 5 2 5 4 5 4 5 5 5 4
. . . . 2 2 2 2 2 2 2 2 2 2 2 2
`
export const satellite_top = img`
. . . . . . b 1 b . . . . . . .
. a a a a a a b a a a a a a a .
a a b b b 1 1 a 1 1 1 b b b a a
a b b 1 1 1 1 a 1 1 1 1 1 b b a
c a a a b b b c b b b b a a a c
. c a a a a a a a a a a a a c .
. . c c a a a a a a a a c c . .
. . . . c c c c c c c c . . . .
. . . . . a b c b . . . . . . .
. . 2 . a b b c b . . a b . . .
. . . b b b . a b b . a b a b .
. . c b b . . a a b . a b a b .
. c b b . b . . a b b b b b b b
c b b . . . b c b b . c b c b .
. . . . . . c b b . . c b c b .
. . . . c b b b . . . c b . . .
`
export const satellite_front = img`
. . . . . a a a a a a 8 7 3 4 a
. . . b b b b b b b b 8 7 3 4 b
. . 1 1 1 1 1 1 1 1 1 7 6 4 2 1
. . 1 1 1 1 1 1 1 1 1 6 6 2 2 1
. 1 1 1 1 1 1 1 1 1 1 6 6 2 2 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
b b b b b b b b b b b b b b b b
. a a a a a a a a a a a a a a a
. . a a a a a a a a a a a a a a
. . c c c c c c c c c c c c c c
. . . c c c c c c c c c c c c c
. . . . . a a a a a a a a a a a
. . . . . . . . . . . . . . . .
`
export const satellite_middle = img`
a a a a a a a a a c c a a a a a
b b b b b b b b b c c b b b b b
1 1 1 1 1 1 1 1 1 c c 1 1 1 1 1
1 1 1 1 1 1 1 1 1 c c 1 1 1 1 1
1 1 1 1 1 1 1 1 1 c c 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
b b b b b b b b b b b b b b b b
a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a
c c c c c c c c c c c c c c c c
c c c c c c c c c c c c c c c c
a a a a a a a a a a a a a a a a
. . . . . . . . . . . . . . . .
`
export const satellite_back = img`
a a a . . . . . . a a . . . . .
b b b b . . . a a c a a . . . .
1 1 1 1 1 . a c a a c a a . . .
1 1 1 1 1 1 a a c a a c a a . .
1 1 1 1 1 1 1 a c a a c a a . .
1 1 1 1 1 1 1 a c a a c a a . .
1 1 1 1 1 1 1 a c a a c a a . .
1 1 1 1 1 1 1 a c a a c a a . .
1 1 1 1 1 1 1 a c a a c a a . .
b b b b b b b a c a a c a a . .
a a a a a a a a c a a c a a . .
a a a a a . a c a a c a a . . .
c c c c c . . a a c a a . . . .
c c c c . . . . . a a . . . . .
a a a a . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
`
}
namespace customImages {
//% fixedInstance
export const titleScreen = img`
b c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a a a c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c b
b c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c a b a c c c c c c c c c c b
b c c c c c c c c c c a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a b d b a c c c c c c c c c b
b c c c c c c c c c a a a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c a d d b a c c c c c c c c c b
b c c a c c c c c c c a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a b a c c c c c c c c c c c c c c c c c c c c c c c c c c c a b a c c c c c c c c c c b
b c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c a d d b a c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b d b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a d d b a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b d d d b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a b a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b d b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a d a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c d d d d d c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c c c c c c d d c c c a a a c c c c c c c c c c c c c c d c c d d c c c c c c c c c c c c c c c c c d c c c d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d c c c c c c c c b
d a c c c c c c c c c c c c c d d c c c d d d d c c c c c c c c c c c c c c c c c c c c d d c c c c c c c c c c c c c c c d d d c c c a c c c c c c c c c c c c c c c c c c d d d c c c c c c c c c c c c c c c c d c c c d d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c b
d d a c c c c c c c c c c c c d d c c c c c c c d d d c c c c c c c c c c c c c c c c d c d c c c c c c c c c c c c c c c d d d d c c c c c c c c c c c c c c c c c c c c c d d d c c c c c c c c c c c c c c c d d c c c d d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c b
d a c c c c c c c c c c c c c d d c c c c c c c c c c d d d c c c c c c c c c c c c d d c d c c c c c c c c c c c c c c c d d c d c c c c c c c c c c c c c c c c c c c c c d d c d c c c c c c c c c c c c c c d d c c c d d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c b
b c c c c c c c c c c c c c c d d c c c c c c c c c c c c c d d d d c c c c c c c d d c c d c c c c c c d c c c c c c c c d d c d d c c c c c c c c c c c c c c c c c c c c d d c c d c c c c c c c c c c c c c d d c c c d d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c c b
b c c c c c c c c c c c c c c d d c c c c c c c c c c c c c c c c c d d c c c c d d c c c d c c c c c c c c c c c c c c c d d c c d c c c c c c c c c c c c c c c c c c c c d d c c d c c c c c c c c c c c c d c d c c c d d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c c c b
b c c c c c c c c c c c c c c d d c c c c c c c c c c c c c c c c c c d c c c d d c c c c d c c c c c c c c c c c c c c c d d c c d d c c c c c c c c c c c c c c c c c c c d d c c c d c c c c c c c c c c c d c d c c c d d c c c c c c d d d d d d d d d d d d d d d c c c c c d d d d d d d d d d c c c c c c c c c c c c b
b c c c c c c c c c c c c c c d d c c c c c d c c c c c c c c c c c c d c c c d d c c c c d c c c c c c c c c c c c c c c d d c c c d c c c c c c c c c c c c c c c c c c c d d c c c d c c c c c c c c c c c d c d c c c d d c c c c c c d c c c c c c c c c c c c d d c c c c c d c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c d d c c c c c d d d c c c c c c c c c c d c c c d d c c c c d c c c c c c c c c c c c c c c d d c c c d d c c c c c c c c c c c c c c c c c c d d c c c c d c c c c c c a c c d c c d c c c d d c c c c c c d c c c c c c c c c c c c d d c c c c c d c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c d d c c c c c d c c d d d d c c c c c c d c c c d d c c c c d c c c c c c c c c c c c c c c d d c c c c d c c c c c c c c c c c c c c c c c c d d c c c c c d c c c c c c c c d c c d c c c d d c c c c c c d c c c c c c c c c c c c d d c c c c c d c c c c c c c c c c c c c c c c c c c c c b
b a c a c a c a c a c a c a c d d c c c c c d a c a c a c d d c c c c d c a c d d c c c c d c a c a c a c a c a c a c a c d d c c c c d d a c a c a c a c a c a c a c a c a d d c c c c c d c a c a c a c a d c c d c a c d d c c c c c c d c a c a c a c a c a c a d d c c c c c d c a c a c a c a c a c a c a c a c a c a c b
b a a a a a a a a a a a a a a d d c c c c c d a a a a a a a d c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a d d c c c c c c d a a a a a a a d c c d a a a d d c c c c c c d a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a a a d d c c c c c d a a a a a a a d c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c c c d d a a a a a a a a a a a a a a a a d d c c c c c c c d a a a a a d c c c d a a a d d c c c c c d a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a a a d d c c c c c d a a a a a a a d c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c c c c d d a a a a a a a a a a a a a a a d d c c c c c c c d a a a a a d c c c d a a a d d c c c c c d a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a a b d d c c c c c d a a a a a a a d c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c c c c c d a a a a a a a a a a a a a a a d d c c c c c c c c d a a a a d c c c d a a a d d c c c c c d a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a b b d d c c c c c d a a a a a a a d c c c c d b a a d d c c c c d a a a a a a a a a a a a a a a d d c c c d c c c d d a a a a a a a a a a a a a a d d c c c c c c c c d a a a d c c c c d a a a d d c c c c c d a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a b b d d c c c c c d a a a d d d d d c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c d d c c c d a a a a a a a a a a a a a a d d c c c c c c c c c d a a d c c c c d a a a d d c c c c c d d d d d d d d d d a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a a b d d c c c c c d d d d c c c c c c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c d d c c c d d a a a a a a a a a a a a a d d c c c c c c c c c c d a d c c c c d a a a d d c c c c c c c c c c c c c d a a a a a d d c c c c c d a a a a a a a a a a a a a a a a b a a a a b
b a a a a a a a a a a a a a a d d c c c c c c c c c c c c c c c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c d a d c c c d a a a a a a a a a a a a a d d c c c c c c c c c c d d c c c c c d a a a d d c c c c c c c c c c c c d a a a a a a d d c c c c c d a a a a a a a a a a a a a a a b b b a a a b
b a a a a a a a a a a a a a a d d c c c c c c c c c c c c c c c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c d a d c c c d d a a a a a a a a a a a a d d c c c c d c c c c c c d c c c c c d a a a d d c c c c c c c c c c c d a a a a a a a d d c c c c c d a a a a a a a a a a a a a a b b d b b a a b
b a a a a a a a a a a a a a a d d c c c c c c c c c c c c c c c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c d a a d c c c d a a a a a a a a a a a a d d c c c c d d c c c c c c c c c c c d a a a d d c c c c c c c c c c d a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a b b d b b a a b
b a a a a a a a a a a a a a a d d c c c c c c c c c c c c c c c c c c d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c d d d d c c c d d a a a a a a a a a a a d d c c c c d d d c c c c c c c c c c d a a a d d c c c c c c c c c c d a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a b b b a a a b
b a a a a a a a a a a a a a a d d c c c c c c c c c c c c d d d d d d d a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c c c c c c c c c d a a a a a a a a a a a d d c c c c d d d c c c c c c c c c c d a a a d d c c c c c d d d d d a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a b a a a a b
b a a a a a a a a a a a a a a d d c c c c c d d d d d d d d a a a a a a a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c c c c c c c c c d d a a a a a a a a a a d d c c c c d a d d c c c c c c c c c d a a a d d c c c c c d a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a d d c c c c d a a a a a a a a a a a a a a a d d c c c c c c c c c c c c d a a a a a a b a a a d d c c c c d a d d d c c c c c c c c d a a a d d c c c c c d a a a a a a a a a a a a a d d c c c c c d a a a a a a a a a a a a a a a a a a a a a b
b a a a a a a a a a a a a a a d d a a a a a d a a a a a a a a a a a a a a a a d d a a a a d a a a a a a a a a a a a a a a d d a a a a d d a a a a a a a d a a a a b d b a a d d a a a a d a a d d d a a a a a a a d a a a d d a a a a a d a a a a a a a a a a a a a d d a a a a a d a a a a a a a a a a a a a a a a a a a a a b
b b a b a b a b a b a b a b a d d a a a a a d b a b a b a b a b a b a b a b a d d a a a a d a b a b a b a b a b a b a b a d d a a a a d a d a a a a a a d d a a b d d d b b d d a a a a d b a b d d a a a a a a a d a b a d d a a a a a d b a b a b a b a b a b a b d d a a a a a d a b a b a b a b a b a b a b a b a b a b a b
b b b b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a d b b b b b a a a b b b b b b b d d a a a a d b d a a a a a a a d a b b d d d b b d d a a a a d b b b b d d a a a a a a d b b b d d a a a a a a d b b b b b b b b b b b b d d a a a a a d b b b b b d b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a d b b b b b b a b b b b b b b b d d a a a a d b b d a a a a a a d d b b b d b b b d d a a a a d b b b b d d d a a a a a d b b b d d a a a a a a d b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a d d d d d d d d b b b b b b b b d d a a a a d b b b d a a a a a a d b b b b b b b d d a a a a d b b b b b d d d a a a a d b b b d d a a a a a a d b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a a a a a a a a a d b b b b b b b d d a a a a d b b b d a a a a a a d d b b b b b b d d a a a a d b b b b b b d d a a a a d b b b d d a a a a a a d b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a a a a a a a a a a d b b b b b b d d a a a a d b b b b d a a a a a a d b b b b b b d d a a a a d b b b b b b b d d a a a d b b b d d a a a a a a d d d d d d b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b a d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a a a a a a a a a a d b b b b b b d d a a a a d b b b b b d a a a a a d d b b b b b d d a a a a d b b b b b b b d d d a a d b b b d d a a a a a a a a a a a a d b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b b d b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a a a a a a a a a a a d b b b b b d d a a a a d b b b b b d a a a a a a d b b b b b d d a a a a d b b b b b b b b d d d a d b b b d d a a a a a a a a a a a a d b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b d d d b d b d b d b d b d d d a a a a a d b d b d b d b d b d b d b d b d d d a a a a a a a a a a a a a a a d b d b d d d a a a a d d b d b d b d a a a a a d d d b d b d d a a a a d b d b d b d b d b d d a d d b d d d a a a a a a a a a a a a a d b d b d b d d a a a a a d d b d b d b d b d b d b d b d b d b d b d b
b b b d b b b b b b b b b b b d d a a a a a d b b b b b b b b d b b b b b b b d d a a a a a a a a a a a a a a a a d b b b d d a a a a d b b b b b b b d a a a a a d b b b b d d a a a a d b b b b b b b b b b d d d b b b d d a a a a a a a a a a a a a a d b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b d d a a a a a d b b b b b b b b b b b b b b b b d d a a a a a a a a a a a a a a a a d b b b d d a a a a d b b b b b b b d a a a a a d d b b b d d a a a a d b b b b b b b b b b d d d b b b d d a a a a a a a a a a a a a a d b b b b d d a a a a a d b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b d d d d d d d d b b b b b b b b b b b b b b b b d d d d d d d d d d d d d d d d d d d b b b d d d d d d d b b b b b b b b d d d d d d d b b b d d d d d d d b b b b b b b b b b b d d b b b d d d d d d d d d d d d d d d d d d b b b d d d d d d d d b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b a b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b a a a b b b b b b b
b b b b d d d d d b b b b b b b b b b b b b b b b b b b b b b b b b d b b b b b b d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b a b b b b b b b b
b a b a d d 6 6 6 d d d d a b a b a b a b a b a b a b a b a b a b d d a b a b a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b a b b b b b b b a b a b a b a b a b a b a b a b a b a b a b a b a b b
b a a a d d 6 6 6 6 6 6 6 d d d a a a a a a a a a a a a a a a a d 6 d a a a a a d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b b b a a a a a a a a a a a a a a a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 d d d a a a a a a a a a a a a a d 6 d a a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 d d d d a a a a a a a a d 6 6 d a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d d a a a a a d 6 6 6 d a a a d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a d 6 6 6 6 d a a d d d d d d d d d d d d d d d d d 6 6 6 6 6 d d d d d d d 6 6 6 6 6 d d d d d d d d d d a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 d 6 6 6 6 6 6 6 6 6 6 6 6 d a a a d d 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 d d d 6 6 6 6 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 d a a d d d d 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d d d d a a a a a a a a a a a a a a a a a a a a a a a a a d a a a a a a d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d a b
b a a a d d 6 6 6 6 6 d a a a a a a d d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 d d d d a a a a a a a a a a a a a a a a a a a a d d a a a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a b
b a a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 6 6 d d d a a a a a a a a a a a a a a a a d 6 d a a a a a d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a b
b a a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 6 6 6 6 6 d d d a a a a a a a a a a a a a d 6 d a a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a b
b a a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 d d d d a a a a a a a a d 6 6 d a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a b
b a a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d d a a a a a d 6 6 6 d a a a d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a a b
b a a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a a a d 6 6 6 6 d a a d d d d d d d d d d d d d d d d d 6 6 6 6 6 d d d d d d d 6 6 6 6 6 d d d d d d d d d d a a a b a b
b a a a d d 6 6 6 6 6 d a a a d d d d d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 d 6 6 6 6 6 6 6 6 6 6 6 6 d a a a d d 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a b b b b
b a a a d d 6 6 6 6 6 d d d d 6 6 6 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 d d d 6 6 6 6 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a a b a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 d a a d d d d 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 d a a a a a a d d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a a a a b
b a a a d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a a d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 d a a d d 6 6 6 6 6 d a a a a a a a d 6 6 6 6 6 d a a b d d 6 6 6 6 6 d a a a a d d 6 6 6 6 6 d a a a a a a a a a a a a a a b
b a c a d d 6 6 6 6 6 6 6 6 6 6 6 6 d d d d d d d a c d d 6 6 6 6 6 d a c a c a c a d 6 6 6 6 6 d a c a d d 6 6 6 6 6 d c a c a d d 6 6 6 6 6 d c a c a c d d 6 6 6 6 6 d a d a c a c a d 6 6 6 6 d c a d d 6 6 6 6 6 d c a c a c a c d 6 6 6 6 6 d c a a d d 6 6 6 6 6 d a c a c d d 6 6 6 6 6 d a c a c a c a c a c a c a c b
b c c c d d 6 6 6 6 6 d d d d d d d d c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c d d 6 6 6 6 6 d c c c d d d d d 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c d d 6 6 6 6 6 d d d d 6 6 6 6 6 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c d 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c d 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c d 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 6 d c c c c c d 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 d d d d d 7 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 6 6 6 6 6 6 6 d d d d d d d c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c a c c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 d d d d d d d d c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d a a a c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d b d a a c c c c c c c a c c b
b c c c d d 7 7 7 7 7 d c c c c c c a c c c c c c c c d d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d a a a c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c a c c c c c c c c c c c c b
b c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c c d d 6 6 6 6 6 d c c c c c c c d 6 6 6 6 6 d c c c d d 6 6 6 6 6 d c c c c d d 6 6 6 6 6 d c c c c c c c c c c c c c c b
b c c c d d d d d d d d c c c c c c c c c c c c c c c c c c d d d d d d d d d d d d d d d d c c c c c c d d d d d d d d c c c c d d d d d d d d c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c d 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c d 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 d c c c c c d 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 d d d d d 7 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c d d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d d c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c c c c d d 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 d c c c c c d d 7 7 7 7 7 d c c c c d d 7 7 7 7 7 d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c d d d d d d d d c c c c c c c c c c c c c c c c c a d d d d d d d d d d d d d d d d c c c c c c d d d d d d d d c c c c d d d d d d d d c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c b c c c c c c c c c c c c c c c c c c c c c d c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c d c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a a a a a a a a c c c c c c c c a c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a b b b b a b a a b b b b b b b a a b a c a c a a a c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c a a d a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a b d b a b a a b a a b a b a a a b b b b a a a a a c c c c c a a c c c c c c c c c c a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c b
b c c c a a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a 3 b d b b d b b b b a a a a a d b b b b b b b a a a a a a a a a b d b b c c c c c c c a b b a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a c c c c c c c c c b
b c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a a a b d d d d a b a b a a b b b 3 b b b b b b b b b a a a a a d b b d d b a a c c c c a b b b d a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a a a c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c a b b a a a a b d d d d d d b b a b b a d d d d b d b b b b b a a a b a a a a a a b b d d b b a a c c a b b a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a a a c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a b a c c c c c c c c c c c b b a a a a b b b b b b d d d b b b a b d b b d d b b d d d b b b a b b b a a a b b b b a b b b b b b a c a a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c a b b b a c c c c c c c c d d b b a a b b a a a a b b 3 b b d d d d d b b b 3 b b b b b b b b b b a a b b a b a b a 3 d b b b b b b b b a c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
b c c c c c c c c c c c c c c c c c c c c c c c c c c c d c c c c c c c c c c c c c a b b b a c c c c c c d d d d b b b b a a a a a a a a a b b d b a b b b b b b b b b b b 3 b a b b a b a a a a a b b b d d d b b b b b b b b a c c c c c c c c c c c c c c c c c a c c c c c c c c c c c c c c c c c c c c c c c c c c c c b
`;
export const instructions = img`
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
c c c c a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a c c c c
c c c c a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 a c c c c
c c c c a 5 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 5 5 5 5 c 5 5 c c c c c c 5 5 c c c c c c c c 5 5 5 5 5 5 c 5 5 5 5 5 5 c c c c c c c c 5 5 5 5 5 5 c 5 5 5 5 5 5 c 5 5 c c c c c 5 5 5 5 5 5 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 5 5 5 5 c 5 5 c c c c c c 5 5 c c c c c c c c 5 5 5 5 5 5 c 5 5 5 5 5 5 c c c c c c c c 5 5 5 5 5 5 c 5 5 5 5 5 5 c 5 5 c c c c c 5 5 5 5 5 5 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 c c 5 5 c 5 5 c c c c c c 5 5 c c c c c c c c c c 5 5 c c c 5 5 c c 5 5 c c c c c c c c 5 5 c c c c c 5 5 c c 5 5 c 5 5 c c c c c 5 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 c c 5 5 c 5 5 c c c c c c 5 5 c c c c c c c c c c 5 5 c c c 5 5 c c 5 5 c c c c c c c c 5 5 c c c c c 5 5 c c 5 5 c 5 5 c c c c c 5 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 5 5 5 5 c 5 5 c c 5 5 c 5 5 c c c c c c 5 5 c c c c c c c c c c 5 5 c c c 5 5 c c 5 5 c c c c c c c c 5 5 c c c c c 5 5 c c 5 5 c 5 5 c c c c c 5 5 5 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 5 5 5 5 c 5 5 c c 5 5 c 5 5 c c c c c c 5 5 c c c c c c c c c c 5 5 c c c 5 5 c c 5 5 c c c c c c c c 5 5 c c c c c 5 5 c c 5 5 c 5 5 c c c c c 5 5 5 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 c c 5 5 c 5 5 c c 5 5 c c 5 5 c c c c c c c c c c 5 5 c c c 5 5 c c 5 5 c c c c c c c c 5 5 c c 5 5 c 5 5 c c 5 5 c 5 5 c c c c c 5 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 c c 5 5 c 5 5 c c 5 5 c c 5 5 c c c c c c c c c c 5 5 c c c 5 5 c c 5 5 c c c c c c c c 5 5 c c 5 5 c 5 5 c c 5 5 c 5 5 c c c c c 5 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 5 5 5 5 c c c 5 5 c c 5 5 c c c c c c c c c c c c 5 5 c c c 5 5 5 5 5 5 c c c c c c c c 5 5 5 5 5 5 c 5 5 5 5 5 5 c 5 5 5 5 5 5 c 5 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 5 5 c c 5 5 c 5 5 5 5 5 5 c c c 5 5 c c 5 5 c c c c c c c c c c c c 5 5 c c c 5 5 5 5 5 5 c c c c c c c c 5 5 5 5 5 5 c 5 5 5 5 5 5 c 5 5 5 5 5 5 c 5 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 c c 1 1 c c c 1 1 1 1 1 c 1 c 1 1 c 1 1 c c c 1 c c c c c 1 1 1 1 1 1 1 c c 1 1 c 1 1 c 1 1 c c 1 1 c 1 1 1 1 c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 c 1 1 c 1 c 1 1 c 1 1 1 1 c 1 c 1 1 c 1 c 1 1 1 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c 1 c c 1 c 1 c 1 1 1 1 c 1 1 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c c 1 c 1 1 c 1 1 1 1 c 1 c 1 1 c 1 1 c c 1 1 1 1 c 1 1 1 1 1 1 1 1 c c c c 1 c 1 c c 1 c 1 c c 1 c 1 1 1 1 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c c c c c 1 1 1 1 1 1 1 1 1 c 1 1 c 1 c 1 1 c 1 c 1 1 c 1 c 1 1 c 1 1 1 1 c 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c 1 c 1 1 c 1 c 1 1 c 1 c 1 1 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 c 1 1 c 1 c c c 1 1 1 c c 1 1 1 c c 1 1 c c c 1 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c 1 c 1 1 c 1 1 c c 1 1 c c c c 1 c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c 1 5 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c 1 5 c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c 1 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c c 1 5 c c c c 1 1 1 1 1 1 1 1 1 1 c c c 1 c c c c 1 c c c c c 1 1 1 1 1 1 c c c 1 1 c c c 1 c c c 1 1 c c c c 1 1 c c 1 1 c c c c c 1 c c c 1 1 c c 1 1 c 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c c c 1 5 c c c c c 1 1 1 1 1 1 1 1 c 1 1 1 1 c 1 1 1 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c 1 1 c 1 1 c 1 1 c 1 c 1 1 1 1 c 1 1 c 1 1 1 c 1 1 1 1 c 1 1 c 1 1 c 1 c c 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c c c c c c 1 5 c c c c c c 1 1 1 1 1 1 1 1 c c 1 1 c c c 1 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c 1 1 c 1 1 c c c 1 1 c c c 1 1 c 1 1 1 1 1 1 c 1 1 1 1 c 1 1 c 1 1 c 1 c 1 c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c 1 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 c 1 c 1 1 1 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c 1 1 c 1 1 c 1 c 1 1 c 1 1 1 1 c 1 1 c 1 1 1 c 1 1 1 1 c 1 1 c 1 1 c 1 c 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c 1 5 c c c c 1 1 1 1 1 1 1 1 1 c c c 1 1 c c c c 1 1 1 c 1 1 1 1 1 1 1 1 c c c 1 1 c c c 1 c 1 1 c 1 c c c c 1 1 c c 1 1 1 1 c 1 1 1 c c c 1 1 c c 1 1 c 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 1 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c 1 5 c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c 1 5 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 5 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c 5 c 5 c c c c 1 1 1 1 1 1 1 1 1 c c c 1 c c c c 1 c c c c c 1 1 1 1 1 1 c c c 1 1 1 c c 1 1 c 1 1 1 c 1 c c c c 1 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 c c c 5 c c c 1 1 1 1 1 1 1 1 c 1 1 1 1 c 1 1 1 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c 1 c 1 1 c 1 c 1 1 1 c 1 c 1 1 1 1 c 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 5 5 5 5 c c c 1 1 1 1 1 1 1 1 1 c c 1 1 c c c 1 1 1 1 c 1 1 1 1 1 1 1 1 c c c 1 1 c 1 1 c 1 c 1 c 1 c 1 c c c 1 1 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c 5 c c c c c 5 c c 1 1 1 1 1 1 1 1 1 1 1 c 1 c 1 1 1 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 1 1 c 1 1 c 1 c c 1 c c 1 c 1 1 1 1 c 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c 5 c c c c c 5 c c 1 1 1 1 1 1 1 1 c c c 1 1 c c c c 1 1 1 c 1 1 1 1 1 1 1 1 c 1 1 1 1 1 c c 1 1 c 1 1 1 c 1 c c c c 1 c 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 c c c c c c c 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 c c c c c 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c 5 5 5 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 c c c 5 c c c 1 1 1 1 1 1 1 1 c 1 1 1 c 1 c c c 1 c c c c 1 c 1 1 1 c 1 1 1 1 1 1 c 1 1 1 c 1 1 c c 1 1 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 c c c 5 c c c 1 1 1 1 1 1 1 1 c 1 1 1 c 1 1 c 1 1 c 1 1 1 1 c 1 1 1 c 1 1 1 1 1 1 c c 1 c c 1 c 1 1 c 1 c 1 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 5 5 5 c c c c 1 1 1 1 1 1 1 1 1 c 1 c 1 1 1 c 1 1 c c c 1 1 c 1 c 1 c 1 1 1 1 1 1 c 1 c 1 c 1 c c c c 1 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 c c c 5 c c c 1 1 1 1 1 1 1 1 1 c 1 c 1 1 1 c 1 1 c 1 1 1 1 c c 1 c c 1 1 1 1 1 1 c 1 1 1 c 1 c 1 1 c 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 c c c 5 c c c 5 c c c 1 1 1 1 1 1 1 1 1 1 c 1 1 1 c c c 1 c c c c 1 c 1 1 1 c 1 1 1 1 1 1 c 1 1 1 c 1 c 1 1 c 1 c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 c c 5 5 5 5 c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 c c c c c c c 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 c c c c c 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 5 5 5 5 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d 5 a c c c c
c c c c a 5 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 5 a c c c c
c c c c a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 a c c c c
c c c c a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a c c c c
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
`
export const levelOne_bg = img`
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
f f f f f f f f f f f f f f f f
`
export const levelTwo_bg = img`
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 1 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 1 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 1 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 1 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e 1 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 1 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 1 e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e 1 e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e
`
}
namespace customPalettes {
export const titlePalette = hex`000000
d7baf5
55139b
350583
40028c
490493
34e24e
77ff8c
5b1c9b
6624a8
836ff2
b189d3
55139b
ffffff
a076cb
77ff8c`
export const inGamePalette = hex`000000
ffffff
ff2121
ffd982
fc922f
fcc92f
34e24e
77ff8c
c9ffd1
bc1c7c
d1d1d1
efefef
716a75
961c96
531a68
000000`
}
namespace level {
export class Layout {
// The background color for the mini map
public mapBackgroundColor: number;
// The type is the index of the tilemap that should be rendered on the mini map.
// This can exclude things like stars/clouds. The color is the single pixel color
// that is used in the map to show the usually 16x16 tile. This can be different than
// the index used in the tilemap, and multiple maptiles can have the same color.
public mapTilesToRender: Array<{ type: number, color: number }>;
// This represents the index of the goal/hole(s) of the map. Note, if we decide to stop
// using the tilemap to track the hole and want to use a sprite instead, then we would
// need to change the map code.
public holeIndex: number;
// These are the width and height of the tilemap used for this level. Used to center the map
// on the screen, and possibly to scale the map to the size of the screen.
public height: number;
public width: number;
// The tile where the golfer will be placed when starting the level
private startTileX: number;
private startTileY: number;
constructor(startTileX: number, startTileY: number) {
this.startTileX = startTileX;
this.startTileY = startTileY;
}
public getStartingBallPosition(): { x: number, y: number } {
// Ball size is 4x4, so for setPosition we need center, so add 2 to both x & y
// we want the ball at the bottom of the tile asked, so we add 16 and then subtract 2 given ball size
return { x: (this.startTileX << 4) + 2, y: (this.startTileY << 4) + 14 };
}
}
export function showMap(ballLocationX: number, ballLocationY: number, layout: level.Layout): void {
const map = image.create(scene.screenWidth(), scene.screenHeight());
const scale = Math.floor(Math.min(scene.screenWidth() / layout.width, scene.screenHeight() / layout.height));
const offsetX = (scene.screenWidth() - layout.width * scale) / 2;
const offsetY = (scene.screenHeight() - layout.height * scale) / 2;
map.fillRect(offsetX, offsetY, layout.width * scale, layout.height * scale, 14);
for (let mapTile of layout.mapTilesToRender) {
const tiles = scene.getTilesByType(mapTile.type);
for (let tile of tiles) {
const x = ((tile.x - 8) >> 4) * scale + offsetX;
const y = ((tile.y - 8) >> 4) * scale + offsetY;
for (let row = y; row < y + scale; row++) {
for (let col = x; col < x + scale; col++) {
map.setPixel(col, row, mapTile.color);
}
}
}
}
const flags = scene.getTilesByType(layout.holeIndex);
const flagPositions = [];
for (let flag of flags) {
const x = ((flag.x - 8) >> 4) * scale + offsetX + scale / 2;
const y = ((flag.y - 8) >> 4) * scale + offsetY + scale / 2;
flagPositions.push({ x: x, y: y });
}
game.pushScene();
const smallFlag = sprites.create(img`
. . 2 1
. 2 2 1
2 2 2 1
2 2 2 1
. 2 2 1
. . 2 1
. . . 1
. . . 1
`);
for (let flagPosition of flagPositions) {
smallFlag.setPosition(flagPosition.x, flagPosition.y);
}
const smallGolfer = sprites.create(img`
. 1 1 .
1 f f 1
1 f f 1
. 1 1 .
. 2 2 .
1 1 1 1
. 1 1 .
1 . . 1
`);
const golferLocationX = (ballLocationX >> 4) * scale + offsetX + scale / 2;
const golferLocationY = (ballLocationY >> 4) * scale + offsetY + scale / 2;
smallGolfer.setPosition(golferLocationX, golferLocationY);
scene.setBackgroundImage(map);
controller.pauseUntilAnyButtonIsPressed();
smallFlag.destroy();
smallGolfer.destroy();
game.popScene();
}
function setupScene(): void {
scene.setBackgroundImage(customImages.levelTwo_bg);
scene.setTile(1, customArt.stars, false);
scene.setTile(2, customArt.ufo, true);
scene.setTile(3, customArt.black_hole_center, true);
scene.setTile(4, customArt.black_hole_up, false);
scene.setTile(5, customArt.black_hole_down, false);
scene.setTile(6, customArt.black_hole_left, false);
scene.setTile(7, customArt.black_hole_right, false);
scene.setTile(8, customArt.floor_inner, true);
scene.setTile(9, customArt.meteor_front, true);
scene.setTile(10, customArt.meteor_middle, true);
scene.setTile(11, customArt.meteor_back, true);
scene.setTile(12, customArt.satellite_top, true);
scene.setTile(13, customArt.satellite_front, true);
scene.setTile(14, customArt.satellite_middle, true);
scene.setTile(15, customArt.satellite_back, true);
}
function loadLevelOne(): level.Layout {
setupScene();
scene.setTileMap(img`
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 7 . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 . . . . . . . . . . . . . . . . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 . . . . . . . . . . . . . . . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
`)
const layout = new level.Layout(1, 22);
layout.height = 24;
layout.width = 64;
layout.holeIndex = 3;
layout.mapTilesToRender = [
{ type: 7, color: 7 },
{ type: 8, color: 5 },
{ type: 9, color: 5 },
{ type: 10, color: 5 },
{ type: 11, color: 5 },
{ type: 12, color: 10 },
{ type: 13, color: 10 },
{ type: 14, color: 10 },
{ type: 15, color: 10 },
];
return layout;
}
function loadLevelTwo(): level.Layout {
setupScene();
scene.setTileMap(img`
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . . . 4 . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 6 3 7 . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 5 . . . . .
. . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . b a a 9 . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . 8
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . 8 8 8 8
. . . 1 . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 8 8
. . . . . 8 8 8 . . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
. . . . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
`)
const layout = new level.Layout(1, 25);
layout.height = 27;
layout.width = 32;
layout.holeIndex = 3;
layout.mapTilesToRender = [
{ type: 7, color: 7 },
{ type: 8, color: 5 },
{ type: 9, color: 5 },
{ type: 10, color: 5 },
{ type: 11, color: 5 },
{ type: 12, color: 10 },
{ type: 13, color: 10 },
{ type: 14, color: 10 },
{ type: 15, color: 10 },
];
return layout;
}
function loadLevelThree(): level.Layout {
setupScene();
scene.setTileMap(img`
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. 4 . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
6 3 7 . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . .
. 5 . . 1 . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . 1 . . . . . 2 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . d e f . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . b a a a 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . 2 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . d e e e f . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . b a a 9 . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . c . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . d e e f . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . c . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . d e e e f . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . b a a a a a 9 . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . b a a 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . .
. . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . 1 .
. . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . .
. . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . .
. . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d e e e e e f . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8
. . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 8 8 8 . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 . 8 8 8 8
. . . . . 8 8 8 . . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 . . . . 8 8 8 8 8 . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
. . . . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 . . . . 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
`)
const layout = new level.Layout(1, 54);
layout.height = 56;
layout.width = 64;
layout.holeIndex = 3;
layout.mapTilesToRender = [
{ type: 7, color: 7 },
{ type: 8, color: 5 },
{ type: 9, color: 5 },
{ type: 10, color: 5 },
{ type: 11, color: 5 },
{ type: 12, color: 10 },
{ type: 13, color: 10 },
{ type: 14, color: 10 },
{ type: 15, color: 10 },
];
return layout;
}
export function loadLevel(index: number): level.Layout {
switch (index) {
case 1: return loadLevelOne();
case 2: return loadLevelTwo();
case 3: return loadLevelThree();
}
return null;
}
export const MAX_LEVEL = 3;
}
/*
Animation library for sprites
*/
namespace animation {
let onAnimationUpdate: (() => void)[] = null;
let onSpriteUpdate: (() => void)[] = null;
// Only a single animation is active within an AnimationGroup at a time.
// This allows transitioning from animations smoothly, resetting each to its initial
// frame before starting.
export class SpriteAnimationGroup {
private activeAnimationIndex: number;
private animations: Animation[];
private _sprite: Sprite;
constructor() {
this.init();
this.animations = [];
this.activeAnimationIndex = -1;
}
public get activeAnimation(): Animation {
return this.animations[this.activeAnimationIndex];
}
public get sprite(): Sprite {
return this._sprite;
}
public set sprite(sprite: Sprite) {
this._sprite = sprite;
}
/**
* Adds an animation to the group and returns the active animation index to set to start the animation
*/
public addAnimation(animation: Animation): number {
this.animations.push(animation);
return this.animations.length - 1;
}
/**
* Sets the active animation and resets that animation to its initial frame. Allows
* passing in a callback that gets invoked any time the frame of the animation changes to
* allow coordination between sprites.
*/
public setActiveAnimation(animationIndex: number, frameChangeCallback: (frame: number) => void = null): void {
this.activeAnimationIndex = animationIndex;
this.activeAnimation.reset(frameChangeCallback);
}
public stopActiveAnimation(): void {
this.activeAnimationIndex = -1;
}
public update(): void {
if (this.activeAnimationIndex < 0) {
return;
}
let newImage = this.activeAnimation.image;
if (this._sprite.image !== newImage) {
this._sprite.setImage(newImage)
}
}
private init(): void {
if (!onAnimationUpdate) {
onAnimationUpdate = [];
game.eventContext().registerFrameHandler(15, () => {
onAnimationUpdate.forEach(element => {
element();
});
});
}
onAnimationUpdate.push(() => this.activeAnimationIndex > -1 && this.activeAnimation.update());
}
}
export class Animation {
private animationComplete: boolean;
private frameChangeCallback: (frame: number) => void;
private frames: Image[];
private lastTime: number;
private loop: boolean;
// property backing fields
private _index: number;
private _interval: number;
constructor(interval: number, loop: boolean = true) {
this.reset();
this._interval = interval;
this.frames = [];
this.loop = loop;
}
public get image(): Image {
return this.frames[this._index];
}
public get interval(): number {
return this._interval;
}
public set interval(interval: number) {
this._interval = interval;
}
public get index(): number {
return this._index;
}
/**
* Add an image frame to an animation
*/
public addAnimationFrame(frame: Image): void {
this.frames.push(frame);
}
public reset(frameChangeCallback: (frame: number) => void = null): void {
this.frameChangeCallback = frameChangeCallback;
this._index = -1;
this.lastTime = control.millis();
this.animationComplete = false;
}
public update(): void {
if (this.animationComplete) {
return;
}
let currentTime = control.millis();
let dt = currentTime - this.lastTime;
if (dt >= this.interval && this.frames.length) {
this._index++;
if (!this.loop && this.frames.length > 1 && this._index === this.frames.length) {
this.animationComplete = true;
return;
}
this._index = this._index % this.frames.length;
this.frameChangeCallback && this.frameChangeCallback(this._index);
this.lastTime = currentTime;
}
}
}
/**
* Attach an animation group to a sprite
*/
export function attachAnimation(sprite: Sprite, group: SpriteAnimationGroup) {
if (!onSpriteUpdate) {
// First attach register the update call back.
// Priority 16 is slightly lower than 15 for animation update loop.
// This is allow the animation to complete, so we have the new display ready to go.
onSpriteUpdate = [];
game.eventContext().registerFrameHandler(16, () => {
onSpriteUpdate.forEach(element => {
element();
});
});
}
group.sprite = sprite;
onSpriteUpdate.push(() => group.update());
}
}
class DirectionIndicator {
private color: number;
private image: Image;
private midpoint: number;
private pointerSize: number;
private points: Array<{ x: number, y: number }>;
private size: number;
private sprite: Sprite;
constructor(size: number, pointerSize: number, color: number) {
this.size = size;
this.midpoint = this.size / 2;
this.pointerSize = pointerSize;
this.color = color;
this.image = image.create(this.size, this.size);
this.points = [
{ x: -this.midpoint, y: 0 },
{ x: -this.midpoint + this.pointerSize, y: this.pointerSize },
{ x: -this.midpoint + this.pointerSize, y: -this.pointerSize }
];
}
public hide(): void {
this.sprite.destroy();
}
public rotate(degrees: number): void {
const radians = angle * Math.PI / 180;
let x, y;
const rotatedPoints = [];
for (let localPoint of this.points) {
// rotate points
x = localPoint.x * Math.cos(radians) - localPoint.y * Math.sin(radians);
y = localPoint.y * Math.cos(radians) + localPoint.x * Math.sin(radians);
// translate into image coordinates
x += this.midpoint;
y += this.midpoint;
rotatedPoints.push({ x: x, y: y });
}
this.image.fill(0);
// Draw the 4 lines of the direction indicator
this.image.drawLine(this.midpoint, this.midpoint, rotatedPoints[1].x, rotatedPoints[1].y, this.color);
this.image.drawLine(this.midpoint, this.midpoint, rotatedPoints[2].x, rotatedPoints[2].y, this.color);
this.image.drawLine(rotatedPoints[1].x, rotatedPoints[1].y, rotatedPoints[0].x, rotatedPoints[0].y, this.color);
this.image.drawLine(rotatedPoints[2].x, rotatedPoints[2].y, rotatedPoints[0].x, rotatedPoints[0].y, this.color);
}
public show(x: number, y: number): void {
this.sprite = sprites.create(this.image);
this.sprite.z = 2;
this.sprite.setPosition(x, y);
}
}
enum GolferOrientation {
Left,
Right
}
class Golfer {
private leftStandingFrame: Image = null;
private rightStandingFrame: Image = null;
private sprite: Sprite = null;
private spriteAnimations: animation.SpriteAnimationGroup = null;
private swingingLeftAnimationIndex: number = -1;
private swingingRightAnimationIndex: number = -1;
// Backing fields for properties
private _orientation: GolferOrientation = GolferOrientation.Right;
constructor() {
const frameRight1 = img`
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 c c c . . . . .
. . . . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . c c 1 1 c c c c c c c c c c 1 1 c c . . .
. . . c 1 1 c c c 1 c c c c c c c c 1 1 c . . .
. . c c 1 c c c 1 1 c c c c c c c c c 1 c c . .
. . c 1 c c c 1 1 c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c c 1 c c c c c c c c c c c c c c c 1 c . .
. . . c 1 c c c c c c c c c c c c c c 1 c . . .
. . . c c 1 1 c c c c c c c c c c 1 1 c c . . .
. . . . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . . . c c b 1 1 1 1 1 1 1 1 1 c c . . . . .
. . . . . . c c c c 1 1 1 1 c c c c . . . . . .
. . . . . . 2 2 2 2 2 2 2 2 2 2 2 2 . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 1 c c . . . . .
. . . . . c 1 1 1 1 1 1 1 1 1 1 1 1 c . . . . .
. . . . c c 1 1 1 1 1 1 1 1 1 1 1 1 c c . . . .
. . . . c 1 c 1 1 1 1 1 1 1 1 1 1 c 1 c . . . .
. . . . c 1 1 c 1 1 1 1 1 1 1 1 c 1 1 c . . . .
. . . . . c 1 c c 1 1 1 1 1 1 c c 1 c . . . . .
. . . . . . c c 1 c 1 f 1 c c 1 c c . . . . . .
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . . . c 1 c c c c c 1 1 c . . . . . . .
. . . . . . . c 1 1 1 f c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 f c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 c f . c 1 1 c . . . . . . .
. . . . . . . c 1 1 c f . c 1 1 c . . . . . . .
. . . . . . c c 1 c . f . . c 1 c c . . . . . .
. . . . . . c 1 1 f f f . . c 1 1 c . . . . . .
`;
const frameRight2 = img`
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 c c c . . . . .
. . . . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . c c 1 1 c c c c c c c c c c 1 1 c c . . .
. . . c 1 1 c c c 1 c c c c c c c c 1 1 c . . .
. . c c 1 c c c 1 1 c c c c c c c c c 1 c c . .
. . c 1 c c c 1 1 c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c c 1 c c c c c c c c c c c c c c c 1 c . .
. . . c 1 c c c c c c c c c c c c c c 1 c . . .
. . . c c 1 1 c c c c c c c c c c 1 1 c c . . .
. . . . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . . . c c 1 1 1 1 1 1 1 1 1 1 c c . . . . .
. . . . . . c c c c 1 1 1 1 c c c c . . . . . .
. . . . . . . 2 2 2 2 2 2 2 2 2 2 2 . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 1 c c . . . . .
. . . . . c 1 1 c 1 1 1 1 1 1 1 c 1 c . . . . .
. . . . . c c 1 1 c 1 1 1 1 1 c 1 1 c . . . . .
. . . . . . c c 1 1 c 1 1 1 c 1 1 c . . . . . .
. . . . . . . c c 1 1 c 1 c 1 1 c . . . . . . .
. . . . . . . c 1 c 1 1 c 1 1 c c . . . . . . .
. f f f f f f f f f c c c c c 1 c . . . . . . .
. f . . . . . c c c c c c c c c c . . . . . . .
. . . . . . . c 1 c c 1 1 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . c c 1 c . . . . c 1 c c . . . . . .
. . . . . . c 1 1 c . . . . c 1 1 c . . . . . .
`
const frameRight3 = img`
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 c c c . . . . .
. . . . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . c c 1 1 c c c c c c c c c c 1 1 c c . . .
. . . c 1 1 c c c 1 c c c c c c c c 1 1 c . . .
. . c c 1 c c c 1 1 c c c c c c c c c 1 c c . .
. . c 1 c c c 1 1 c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. . c 1 c c c c c c c c c c c c c c c c 1 c . .
. f c c 1 c c c c c c c c c c c c c c c 1 c . .
f . c c 1 c c c c c c c c c c c c c c 1 c . . .
. f . c c 1 1 c c c c c c c c c c 1 1 c c . . .
. . f . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . f . c c 1 1 1 1 1 1 1 1 1 1 c c . . . . .
. . . . f . c c c c 1 1 1 1 c c c c . . . . . .
. . . . . f 2 2 2 2 2 2 2 2 2 2 2 2 . . . . . .
. . . . . c f c 1 1 1 1 1 1 1 1 c c c . . . . .
. . . . . c 1 c c 1 c c c c c c c 1 c . . . . .
. . . . . c 1 1 1 c c 1 1 1 1 1 1 1 c . . . . .
. . . . . . c 1 1 c 1 c c c c c c c . . . . . .
. . . . . . . c 1 c 1 1 1 1 1 1 c . . . . . . .
. . . . . . . c c c 1 1 1 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 1 1 1 1 1 c . . . . . . .
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . . . c 1 1 1 1 1 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . c c 1 c . . . . c 1 c c . . . . . .
. . . . . . c 1 1 c . . . . c 1 1 c . . . . . .
`
const frameRight4 = img`
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 c c c . . . . .
. . . . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . c c 1 1 1 c c c 1 c c c c c 1 1 c c . . .
. . . c 1 1 1 1 c c 1 1 c c c c c c 1 1 c . . .
. . c c 1 1 1 1 c 1 1 c c c c c c c c 1 c c . .
. . c 1 1 1 1 1 c c c c c c c c c c c c 1 c . .
. . c 1 1 1 1 1 c c c c c c c c c c c c 1 c . .
. . c 1 1 1 1 1 c c c c c c c c c c c c 1 c . .
. . c 1 1 1 1 1 c c c c c c c c c c c c 1 c . .
. . c c 1 1 1 1 c c c c c c c c c c c c 1 c . .
. . . c 1 1 1 1 c c c c c c c c c c c 1 c . . .
. . . c c 1 1 1 c c c c c c c c c 1 1 c c . . .
. . . . c c 1 1 1 c c c c c c 1 1 1 c c . . . .
. . . . . c c 1 1 1 1 1 1 1 1 1 1 c c . . . . .
. . . . . . c c c c 1 1 1 1 c c c c . . . . . .
. . . . . . 2 2 2 2 2 2 2 2 2 2 c c c . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 c c c . . . . .
. . . . . c 1 1 c 1 1 1 1 1 1 1 c 1 c . . . . .
. . . . . c c 1 1 c 1 1 1 1 1 c 1 1 c . . . . .
. . . . . . c c 1 1 c 1 1 1 c 1 1 c . . . . . .
. . . . . . . c c 1 1 c 1 c 1 1 c . . . . . . .
. . . . . . . c 1 c 1 1 c 1 1 c c . . . . . . f
. . . . . . . c 1 1 c c f f f f f f f f f f f f
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . . . c 1 c c 1 1 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . . c 1 c . . . . c 1 c c . . . . . .
. . . . . . . c 1 c . . . . c 1 1 c . . . . . .
`
const frameRight5 = img`
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 1 c c c . . . . .
. . . . c c 1 1 1 1 1 c c c c 1 1 1 c c . . . .
. . . c c 1 1 1 1 1 1 c c 1 c c c 1 1 c c . . .
. . . c 1 1 1 1 1 1 1 c 1 c c c c c 1 1 c . . .
. . c c 1 1 1 1 1 1 1 c c c c c c c c 1 c c . .
. . c 1 1 1 1 1 1 1 1 c c c c c c c c c 1 c . .
. . c 1 1 1 1 1 1 1 1 c c c c c c c c c 1 c . .
. . c 1 1 1 1 1 1 1 1 c c c c c c c c c 1 c . .
. . c 1 1 1 1 1 1 1 1 c c c c c c c c c 1 f . .
. . c c 1 1 1 1 1 1 1 c c c c c c c c c 1 c f .
. . . c 1 1 1 1 1 1 1 c c c c c c c c 1 c f . .
. . . c c 1 1 1 1 1 1 c c c c c c 1 1 c f . . .
. . . . c c 1 1 1 1 1 c c c c 1 1 1 c f . . . .
. . . . . c c 1 1 1 1 1 1 1 1 1 1 c f . . . . .
. . . . . . c c c c 1 1 1 1 c c c f . . . . . .
. . . . . . 2 2 2 2 2 2 2 2 2 2 f c . . . . . .
. . . . . c c c 1 1 1 1 1 1 1 f 1 c c . . . . .
. . . . . c 1 c c c c c c c f 1 1 1 c . . . . .
. . . . . c 1 1 1 1 1 1 1 c c 1 1 1 c . . . . .
. . . . . . c c c c c c c 1 c 1 1 c . . . . . .
. . . . . . . c 1 1 1 1 1 1 c 1 c . . . . . . .
. . . . . . . c 1 1 1 1 1 1 c c c . . . . . . .
. . . . . . . c 1 1 1 1 1 1 1 1 c . . . . . . .
. . . . . . . c c c c c c c c c c . . . . . . .
. . . . . . . c 1 c c 1 1 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 1 c c 1 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . . c 1 1 c . . c 1 1 c . . . . . . .
. . . . . . . c 1 c . . . . c 1 c c . . . . . .
. . . . . . . c 1 c . . . . c 1 1 c . . . . . .
`
const swingingRight = new animation.Animation(100, false);
swingingRight.addAnimationFrame(frameRight1);
swingingRight.addAnimationFrame(frameRight2);
swingingRight.addAnimationFrame(frameRight3);
swingingRight.addAnimationFrame(frameRight2);
swingingRight.addAnimationFrame(frameRight1);
swingingRight.addAnimationFrame(frameRight4);
swingingRight.addAnimationFrame(frameRight5);
this.spriteAnimations = new animation.SpriteAnimationGroup();
this.swingingRightAnimationIndex = this.spriteAnimations.addAnimation(swingingRight);
const frameLeft1 = frameRight1.clone();
const frameLeft2 = frameRight2.clone();
const frameLeft3 = frameRight3.clone();
const frameLeft4 = frameRight4.clone();
const frameLeft5 = frameRight5.clone();
frameLeft1.flipX();
frameLeft2.flipX();
frameLeft3.flipX();
frameLeft4.flipX();
frameLeft5.flipX();
const swingingLeft = new animation.Animation(100, false);
swingingLeft.addAnimationFrame(frameLeft1);
swingingLeft.addAnimationFrame(frameLeft2);
swingingLeft.addAnimationFrame(frameLeft3);
swingingLeft.addAnimationFrame(frameLeft2);
swingingLeft.addAnimationFrame(frameLeft1);
swingingLeft.addAnimationFrame(frameLeft4);
swingingLeft.addAnimationFrame(frameLeft5);
this.swingingLeftAnimationIndex = this.spriteAnimations.addAnimation(swingingLeft);
this.leftStandingFrame = frameLeft1;
this.rightStandingFrame = frameRight1;
this.sprite = sprites.create(this.rightStandingFrame, SpriteKind.Player);
this.sprite.setFlag(SpriteFlag.Ghost, true);
animation.attachAnimation(this.sprite, this.spriteAnimations);
}
public get bottom(): number {
return this.sprite.bottom;
}
public set bottom(value: number) {
this.sprite.bottom = value;
}
public get left(): number {
return this.sprite.left;
}
public set left(value: number) {
this.sprite.left = value;
}
public get right(): number {
return this.sprite.right;
}
public set right(value: number) {
this.sprite.right = value;
}
public get top(): number {
return this.sprite.top;
}
public set top(value: number) {
this.sprite.top = value;
}
public get orientation() {
return this._orientation;
}
public set orientation(value: GolferOrientation) {
if (value !== this._orientation) {
this._orientation = value;
const standingImage: Image = value === GolferOrientation.Left ? this.leftStandingFrame : this.rightStandingFrame;
this.sprite.setImage(standingImage);
}
}
public setPosition(x: number, y: number): void {
this.sprite.setPosition(x, y);
this.spriteAnimations.stopActiveAnimation();
const standingImage: Image = this.orientation === GolferOrientation.Left ? this.leftStandingFrame : this.rightStandingFrame;
this.sprite.setImage(standingImage);
}
public swing(hitBallCallback: () => void) {
const animationIndex = this.orientation === GolferOrientation.Left ? this.swingingLeftAnimationIndex : this.swingingRightAnimationIndex;
this.spriteAnimations.setActiveAnimation(animationIndex, (frame) => frame === 4 && hitBallCallback());
}
public say(text: string, timeOnScreen: number): void {
this.sprite.say(text, timeOnScreen)
}
}
class PowerMeter {
private image: Image;
private width: number;
private height: number;
private fillColor: number;
private outlineColor: number;
private power: number;
private powerIncrement: number;
private sprite: Sprite;
// property backing fields
private _isRunning: boolean;
constructor(width: number, height: number, outlineColor: number, fillColor: number) {
this.width = width;
this.height = height;
this.outlineColor = outlineColor;
this.fillColor = fillColor;
this._isRunning = false;
this.image = image.create(width, height);
game.currentScene().eventContext.registerFrameHandler(20, () => {
if (this._isRunning) {
this.power += this.powerIncrement;
if (this.power === 1 || this.power === width - 1) {
this.powerIncrement = -this.powerIncrement;
}
this.image.fill(0);
this.image.drawRect(0, 0, this.width, this.height, this.outlineColor);
this.image.fillRect(1, 1, this.power, this.height - 2, this.fillColor);
}
})
}
public get isRunning(): boolean {
return this._isRunning;
}
public start(x: number, y: number): void {
this.sprite = sprites.create(this.image);
this.sprite.z = 2;
this.sprite.setPosition(x, y);
this._isRunning = true;
this.power = 1;
this.powerIncrement = 1;
}
public stop(): number {
this.sprite.destroy();
this.sprite = null;
this._isRunning = false;
return this.power;
}
}
// A little bit of a hack as we want things to move faster than they would based on the default
// time slices of the ArcadePhysicsEngine, so we override and set it to the max time slice it supports
class GolfPhysicsEngine extends ArcadePhysicsEngine {
move(dt: number) {
super.move(0.1);
}
}
const physicsEngine = new GolfPhysicsEngine();
game.currentScene().physicsEngine = physicsEngine;
namespace SpriteKind {
export const Goal = SpriteKind.create();
}
let levelInProgress = false;
let angle = 180;
// The number of frames the ball must remain still before moving the golfer
const QUIESCENT_FRAMES_BEFORE_MOVE = 5;
let golfBallSprite: Sprite = null;
const powerMeter = new PowerMeter(32, 8, 15, 4);
const directionIndicator = new DirectionIndicator(48, 2, 4);
let ballInFlight = false;
let swingStarted = false;
let quiescentFrames = 0;
let loadedLevel = 1;
let layout = level.loadLevel(0);
const golfer = new Golfer();
golfer.setPosition(190, 190);
function showSplash(): void {
image.setPalette(customPalettes.titlePalette);
scene.setBackgroundImage(customImages.titleScreen);
waitForInput(false);
}
function showInstructions(): void {
image.setPalette(customPalettes.inGamePalette);
scene.setBackgroundImage(customImages.instructions);
waitForInput(false);
}
function setupLevel(levelToLoad: number): void {
layout = level.loadLevel(levelToLoad);
loadedLevel == 1 && info.setScore(0);
info.setBackgroundColor(13);
golfBallSprite = sprites.create(img`
. f .
f f f
. f .
`, SpriteKind.Projectile)
let startingPosition = layout.getStartingBallPosition();
golfBallSprite.setPosition(startingPosition.x, startingPosition.y)
golfBallSprite.z = 1;
scene.cameraFollowSprite(golfBallSprite);
golfer.setPosition(golfBallSprite.x - 1, golfBallSprite.y - 14);
levelInProgress = true;
}
controller.A.onEvent(ControllerButtonEvent.Pressed, () => {
if (levelInProgress && !ballInFlight && !swingStarted) {
if (powerMeter.isRunning) {
directionIndicator.hide();
let power = powerMeter.stop() * 2.4;
const radians = angle * Math.PI / 180;
info.changeScoreBy(1);
swingStarted = true;
golfer.swing(() => {
swingStarted = false;
ballInFlight = true;
golfer.say("fore!", 900)
golfBallSprite.vx = -Math.cos(radians) * power;
golfBallSprite.vy = -Math.sin(radians) * power;
golfBallSprite.ay = 9.81;
golfBallSprite.ax = 0;
});
} else {
directionIndicator.rotate(angle);
directionIndicator.show(golfBallSprite.x, golfBallSprite.y);
powerMeter.start(golfBallSprite.x + 3, golfer.top - 8);
}
}
});
function waitForInput(resetGame: boolean): void {
pause(500); // wait for users to stop pressing keys
game.waitAnyButton();
resetGame && game.reset();
}
controller.B.onEvent(ControllerButtonEvent.Pressed, () => {
if (levelInProgress) {
level.showMap(golfBallSprite.x, golfBallSprite.y, layout);
}
});
game.currentScene().eventContext.registerFrameHandler(31, () => {
if (ballInFlight) {
if (Math.abs(golfBallSprite.vx) < 1 && Math.abs(golfBallSprite.vy) < 1) {
quiescentFrames++;
} else {
quiescentFrames = 0;
}
if (quiescentFrames === QUIESCENT_FRAMES_BEFORE_MOVE) {
quiescentFrames = 0;
golfBallSprite.vx = 0;
golfBallSprite.vy = 0;
golfBallSprite.ay = 0;
ballInFlight = false;
golfer.setPosition(golfBallSprite.x - 1, golfBallSprite.y - 14);
}
}
if (powerMeter.isRunning) {
if (controller.left.isPressed() || controller.right.isPressed()) {
const targetOrientation = controller.left.isPressed() ? GolferOrientation.Left : GolferOrientation.Right;
if (golfer.orientation !== targetOrientation) {
golfer.orientation = targetOrientation;
angle = 180 - angle;
directionIndicator.rotate(angle);
}
}
if (controller.up.isPressed() || controller.down.isPressed()) {
const extents = golfer.orientation === GolferOrientation.Right ? { bottom: 180, top: 90, increment: -1 } : { bottom: 0, top: 90, increment: 1 };
if (controller.up.isPressed() && angle !== extents.top) {
angle += extents.increment;
} else if (controller.down.isPressed() && angle !== extents.bottom) {
angle -= extents.increment;
}
directionIndicator.rotate(angle);
}
}
});
scene.onHitTile(SpriteKind.Projectile, 3, (sprite: Sprite) => {
golfBallSprite.destroy();
levelInProgress = false;
let top = (screen.height - 72) >> 1;
screen.fillRect(0, top, screen.width, 55, 14)
screen.fillRect(0, top - 4, screen.width, top - 20, 3)
screen.fillRect(0, top + 55, screen.width, top - 20, 3)
let header = image.create(80, 8)
header.printCenter(loadedLevel == level.MAX_LEVEL ? "GAME OVER!" : "NICE JOB!", 0, screen.isMono ? 1 : 3, image.font8)
screen.drawTransparentImage(header.doubled(), 0, top + 7);
if (info.hasScore()) {
screen.printCenter("Score:" + info.score(), top + 31, screen.isMono ? 1 : 9, image.font8)
if (loadedLevel === level.MAX_LEVEL) {
if (info.score() < info.highScore()) {
info.saveHighScore();
screen.printCenter("New Best Score!", top + 24, screen.isMono ? 1 : 9, image.font5);
}
screen.printCenter("Best: " + info.highScore(), top + 42, screen.isMono ? 1 : 9, image.font8);
waitForInput(true);
} else {
loadedLevel++;
waitForInput(false);
setupLevel(loadedLevel);
}
}
});
// coefficient of restituion for grass
const grassSurfaceCOR = 0.5;
function collision(sprite: Sprite) {
sprite.vx *= grassSurfaceCOR;
sprite.vy *= grassSurfaceCOR;
if (sprite.isHittingTile(CollisionDirection.Left) || sprite.isHittingTile(CollisionDirection.Right)) {
sprite.vx = -sprite.vx;
}
if (sprite.isHittingTile(CollisionDirection.Top) || sprite.isHittingTile(CollisionDirection.Bottom)) {
sprite.vy = -sprite.vy;
}
}
scene.onHitTile(SpriteKind.Projectile, 8, (sprite: Sprite) => {
collision(sprite)
});
scene.onHitTile(SpriteKind.Projectile, 9, (sprite: Sprite) => {
collision(sprite)
});
scene.onHitTile(SpriteKind.Projectile, 10, (sprite: Sprite) => {
collision(sprite)
});
scene.onHitTile(SpriteKind.Projectile, 11, (sprite: Sprite) => {
collision(sprite)
});
scene.onHitTile(SpriteKind.Projectile, 12, (sprite: Sprite) => {
collision(sprite)
});
scene.onHitTile(SpriteKind.Projectile, 13, (sprite: Sprite) => {
collision(sprite)
});
scene.onHitTile(SpriteKind.Projectile, 14, (sprite: Sprite) => {
collision(sprite)
});
scene.onHitTile(SpriteKind.Projectile, 15, (sprite: Sprite) => {
collision(sprite)
});
showSplash();
showInstructions();
setupLevel(loadedLevel);
color-coded-tilemap