1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-09-17 18:12:13 +02:00

285 Commits
v2.2 ... v2.2.1

Author SHA1 Message Date
Justin Lin
9c3bb9d5d5 refactor 2020-03-13 17:47:23 +08:00
Justin Lin
eab84a99a1 refactor 2020-03-13 13:21:13 +08:00
Justin Lin
f4592293b5 rename 2020-03-13 13:09:31 +08:00
Justin Lin
8c442ecc75 update 2020-03-13 12:59:00 +08:00
Justin Lin
8f13d81406 update 2020-03-13 12:58:41 +08:00
Justin Lin
711c9b902d refactor 2020-03-13 12:57:13 +08:00
Justin Lin
4b12e00759 refactor 2020-03-13 12:57:04 +08:00
Justin Lin
cd0a24e17f by vt, for example, sort by zyx for points 2020-03-13 12:53:13 +08:00
Justin Lin
5b0f5c0259 remove use 2020-03-13 12:40:05 +08:00
Justin Lin
96b686e7d8 v2.2.1 2020-03-13 09:58:00 +08:00
Justin Lin
711489a650 rename 2020-03-13 09:46:33 +08:00
Justin Lin
363f01c84f the src lt is sorted, so set sorted param to true 2020-03-13 09:44:03 +08:00
Justin Lin
8f7149a550 use binary search if lt is sorted by z, y, x 2020-03-13 09:43:15 +08:00
Justin Lin
e6c4ffc117 add bsearch 2020-03-13 09:42:36 +08:00
Justin Lin
f6b9b4b0c5 always sort before dedup 2020-03-13 09:19:39 +08:00
Justin Lin
2413e9160f dedup sorted lt fastly 2020-03-13 08:51:31 +08:00
Justin Lin
91f9df1e61 fix bug: z not sorted 2020-03-13 08:43:17 +08:00
Justin Lin
be96adb708 deleted 2020-03-12 20:47:22 +08:00
Justin Lin
b192a8ff48 dedup 2020-03-12 20:45:41 +08:00
Justin Lin
7f03bc7561 dedup 2020-03-12 20:38:29 +08:00
Justin Lin
4b50ee9f10 dedup 2020-03-12 20:37:41 +08:00
Justin Lin
66f958ddc3 dedup 2020-03-12 20:36:23 +08:00
Justin Lin
f7f0716670 move has/dedup to util 2020-03-12 20:26:16 +08:00
Justin Lin
9cdf6985c6 change polysections to sweep 2020-03-12 20:18:54 +08:00
Justin Lin
8c95e91e78 add todo.txt 2020-03-12 18:11:21 +08:00
Justin Lin
26f150e138 add px_polygon_demo 2020-03-12 10:45:25 +08:00
Justin Lin
69bf03d78e refactor 2020-03-12 08:21:01 +08:00
Justin Lin
67ec1b91aa add px_polygon 2020-03-12 08:18:10 +08:00
Justin Lin
a4db2b2072 fix offset sign 2020-03-11 14:14:39 +08:00
Justin Lin
a8bed95fb6 accept 2D offset 2020-03-11 10:13:32 +08:00
Justin Lin
4316b5dc61 refactor out ptf_circle 2020-03-11 09:48:34 +08:00
Justin Lin
5033c415db add circle_maze 2020-03-11 09:39:01 +08:00
Justin Lin
56c2da387d add comment 2020-03-10 16:51:46 +08:00
Justin Lin
6042779e5e refactor 2020-03-10 11:49:31 +08:00
Justin Lin
ebe1ddffe5 it doesn't require mirror now 2020-03-10 11:46:34 +08:00
Justin Lin
1cdb460901 fix wrong function call 2020-03-10 11:09:09 +08:00
Justin Lin
cb5bca7ee2 add px_surround_demo 2020-03-09 11:33:47 +08:00
Justin Lin
2d1bbe05f2 add px_surround 2020-03-09 11:33:16 +08:00
Justin Lin
56d169e677 noise as alpha 2020-03-09 08:58:30 +08:00
Justin Lin
ee125eafd6 seperate 3s and 3 2020-03-09 08:58:24 +08:00
Justin Lin
f41f33597f use new pnoise2 2020-03-09 08:43:55 +08:00
Justin Lin
bbc6123ede rename 2020-03-09 08:40:05 +08:00
Justin Lin
7298067343 accept x,, y directly 2020-03-09 08:38:48 +08:00
Justin Lin
a790409292 rename 2020-03-09 08:38:41 +08:00
Justin Lin
b99b57da9e accept x directly 2020-03-09 08:36:11 +08:00
Justin Lin
ce5179358d rename 2020-03-09 08:35:58 +08:00
Justin Lin
b12d8584b3 add perlin_noise_cylinder 2020-03-08 16:01:27 +08:00
Justin Lin
cd82a67fb3 add pnoise_counter_demo 2020-03-08 10:08:02 +08:00
Justin Lin
61d2706fd3 add noise param 2020-03-08 09:10:43 +08:00
Justin Lin
090cbbf4e6 rename 2020-03-08 08:48:07 +08:00
Justin Lin
7bfe89ef64 add pnoise_contour 2020-03-07 21:52:04 +08:00
Justin Lin
49ef2ab03b update demo 2020-03-07 11:10:44 +08:00
Justin Lin
78ed61b1a9 update demo 2020-03-06 19:50:13 +08:00
Justin Lin
eaab50c362 add pnoise3_demo 2020-03-06 19:40:18 +08:00
Justin Lin
ed0e30a2af add pnoise3 2020-03-06 19:38:41 +08:00
Justin Lin
53e14229c4 update demo 2020-03-06 19:35:40 +08:00
Justin Lin
6a5b580562 rename 2020-03-06 15:26:17 +08:00
Justin Lin
4c2fe1e3d5 move 2020-03-06 15:24:48 +08:00
Justin Lin
02a6c469e8 add pnoise2_demo 2020-03-06 14:54:10 +08:00
Justin Lin
5794e1678b add pnoise2 2020-03-06 14:51:37 +08:00
Justin Lin
83bd7aa9d2 seed 0 ~ 255 2020-03-06 11:21:23 +08:00
Justin Lin
2e0e06f12d refactor 2020-03-06 10:12:19 +08:00
Justin Lin
5d8bf26cd8 format 2020-03-06 10:11:36 +08:00
Justin Lin
2eb1faf550 clean unnecessary code 2020-03-06 10:10:25 +08:00
Justin Lin
1976798c64 remove default value 2020-03-06 10:08:15 +08:00
Justin Lin
e6818fe1ce refactor pnoise comm 2020-03-06 10:00:54 +08:00
Justin Lin
ac7fc33204 rename 2020-03-06 09:57:35 +08:00
Justin Lin
39bf9ae7cc rename 2020-03-06 09:57:05 +08:00
Justin Lin
d18a613609 rename 2020-03-06 09:56:51 +08:00
Justin Lin
fbf47fa042 using seed is simple 2020-03-06 09:54:30 +08:00
Justin Lin
e3e9331a70 refactor table 2020-03-06 09:19:24 +08:00
Justin Lin
e99d71d3b9 module private tables 2020-03-06 09:14:42 +08:00
Justin Lin
e9c61e1550 refactor out pnoise fade function 2020-03-06 09:06:49 +08:00
Justin Lin
55d5f6162e add demo 2020-03-05 20:32:33 +08:00
Justin Lin
bf9088bfe2 add zip3 2020-03-05 20:30:29 +08:00
Justin Lin
989353d453 rename 2020-03-05 20:29:52 +08:00
Justin Lin
ee44936f1e add zip 2020-03-05 20:25:53 +08:00
Justin Lin
ae32838d1a user can define his own xs 2020-03-05 20:23:17 +08:00
Justin Lin
f1d864e44a add pnoise1 2020-03-05 17:59:02 +08:00
Justin Lin
ec9fbc6162 add pnoise1 2020-03-05 17:58:54 +08:00
Justin Lin
51acd1cb8b re-arrange params 2020-03-05 09:24:04 +08:00
Justin Lin
3847a0b6d4 refactor 2020-03-05 08:45:39 +08:00
Justin Lin
e52d9fb0f5 refactor 2020-03-05 08:44:35 +08:00
Justin Lin
bdab6e256f add mz_hamiltonian 2020-03-05 08:43:58 +08:00
Justin Lin
f80d9a9f70 refactor 2020-03-05 08:18:19 +08:00
Justin Lin
b02e2b0415 rename 2020-03-04 11:10:45 +08:00
Justin Lin
ca644cf181 add random_scala 2020-03-04 10:16:27 +08:00
Justin Lin
aaddea18a7 add dedup 2020-03-04 10:07:01 +08:00
Justin Lin
a489367eb6 add has 2020-03-04 08:21:13 +08:00
Justin Lin
d440add9ca typo 2020-03-03 09:34:45 +08:00
Justin Lin
9a91734859 reduce style check 2020-03-03 09:29:13 +08:00
Justin Lin
c4e3ebb65a refactor 2020-03-03 09:16:26 +08:00
Justin Lin
9783d2cde0 reduce slicing check 2020-03-03 09:08:19 +08:00
Justin Lin
42650a7a19 refactor 2020-03-03 09:01:19 +08:00
Justin Lin
5f38d3fc1f performance improved when LINES 2020-03-03 08:50:19 +08:00
Justin Lin
383b249868 update demo 2020-03-02 16:15:40 +08:00
Justin Lin
6cdd6a0049 wrong commit 2020-03-02 16:12:29 +08:00
Justin Lin
0dab066caa Merge branch 'master' of https://github.com/JustinSDK/dotSCAD 2020-03-02 16:10:55 +08:00
Justin Lin
c57ae76941 update demo 2020-03-02 16:10:37 +08:00
Justin Lin
c1c4ef40d0 update demo 2020-03-02 16:08:44 +08:00
Justin Lin
0a629cefb4 add voronoi_demo 2020-03-02 15:56:32 +08:00
Justin Lin
d6213ffddb refactor 2020-03-02 15:51:51 +08:00
Justin Lin
ecf2e96a42 add voronoi_lines 2020-03-02 15:49:56 +08:00
Justin Lin
f668445d0e remove bend_extrude 2020-03-02 14:12:39 +08:00
Justin Lin
5e8514ba43 add hollow_out_cylinder 2020-03-02 11:01:33 +08:00
Justin Lin
b92eafd9ea extract gcd lcm 2020-03-01 18:28:08 +08:00
Justin Lin
7c03032564 refactor 2020-03-01 18:26:32 +08:00
Justin Lin
a569a9bbfb update demo 2020-03-01 17:07:36 +08:00
Justin Lin
22664ba0f8 add slices param 2020-03-01 16:48:04 +08:00
Justin Lin
bcee3a899d add loft_demo 2020-02-29 18:05:09 +08:00
Justin Lin
c4e42b63a9 add loft 2020-02-29 18:04:25 +08:00
Justin Lin
c7a48d26bd format 2020-02-29 11:42:26 +08:00
Justin Lin
a0332ccadf add hollow_out_vase 2020-02-29 11:42:05 +08:00
Justin Lin
5177a5f4d9 add sweep 2020-02-29 09:17:40 +08:00
Justin Lin
3efaf6e14e add voronoi_penholder 2020-02-28 20:30:59 +08:00
Justin Lin
ea019663c7 change dir 2020-02-28 20:14:06 +08:00
Justin Lin
be8a88608b modify stop condition 2020-02-28 17:53:49 +08:00
Justin Lin
a7d65e55bd stop if [] 2020-02-28 16:22:16 +08:00
Justin Lin
fbbc0f0796 add closed param 2020-02-28 15:17:59 +08:00
Justin Lin
0ce3688981 refactor 2020-02-28 15:12:19 +08:00
Justin Lin
67c10c3fbb add hollow_out_torus_knot 2020-02-28 09:21:24 +08:00
Justin Lin
f6bc560ff5 fix orientation 2020-02-27 08:33:05 +08:00
Justin Lin
32ea18b40e add hollow_out_torus 2020-02-26 16:20:34 +08:00
Justin Lin
cf1c8c71ab refactor 2020-02-26 16:20:20 +08:00
Justin Lin
2448fe26d9 should sort by xy 2020-02-26 13:43:39 +08:00
Justin Lin
0b920df2cb refactor 2020-02-26 12:37:57 +08:00
Justin Lin
5c93a7d6c9 refactor 2020-02-26 12:32:33 +08:00
Justin Lin
2598fb2be2 add sum.scad 2020-02-26 12:32:26 +08:00
Justin Lin
2ec87b2287 add m_determinant 2020-02-26 09:36:55 +08:00
Justin Lin
67982f450d update readme 2020-02-25 16:34:19 +08:00
Justin Lin
08135fb8b6 add tri_ear_clipping 2020-02-25 16:02:59 +08:00
Justin Lin
1521152c50 add tri_delaunay demo 2020-02-25 15:57:35 +08:00
Justin Lin
906de42f7f add tri_delaunay 2020-02-25 15:41:06 +08:00
Justin Lin
364345ad7f don't return undef 2020-02-25 15:35:07 +08:00
Justin Lin
0eb2e4f974 add tri_circumcircle 2020-02-25 10:30:12 +08:00
Justin Lin
9a7b5948a0 update doc 2020-02-25 10:17:57 +08:00
Justin Lin
31a150da2b use cross to refactor 2020-02-25 10:07:16 +08:00
Justin Lin
afffa07f3f update doc 2020-02-25 09:57:23 +08:00
Justin Lin
06c7490f3a avoid name collision 2020-02-25 08:13:01 +08:00
Justin Lin
25ace9564a add dep 2020-02-25 08:10:31 +08:00
Justin Lin
76cdc85635 avoid name collision 2020-02-25 08:07:26 +08:00
Justin Lin
2a8ed85596 add convext_hull 2020-02-25 08:06:15 +08:00
Justin Lin
78613f76cd move into dir 2020-02-25 07:31:14 +08:00
Justin Lin
7513ae304e format 2020-02-24 17:46:01 +08:00
Justin Lin
c843c99b11 refactor 2020-02-24 17:23:09 +08:00
Justin Lin
330d523736 rename 2020-02-24 10:10:51 +08:00
Justin Lin
3b14f473c8 add hollow_out_starburst 2020-02-24 09:22:28 +08:00
Justin Lin
1329b45c74 add hollow_out_holder 2020-02-23 20:19:12 +08:00
Justin Lin
2bc5bb863a add triangulate_tri_bisectors_demo 2020-02-23 15:51:36 +08:00
Justin Lin
94bb5ee229 add convex_hull 2020-02-23 15:45:32 +08:00
Justin Lin
ca9f4c7af3 add tri_bisectors 2020-02-23 15:45:26 +08:00
Justin Lin
4a2083d15b support 3d 2020-02-23 09:54:06 +08:00
Justin Lin
aee7794fd2 rename 2020-02-22 20:44:40 +08:00
Justin Lin
53c79bf7a4 update demo 2020-02-22 16:02:03 +08:00
Justin Lin
7868b07b02 add demo 2020-02-22 15:47:44 +08:00
Justin Lin
8fbb00c7db add voronoi_cells 2020-02-22 15:45:18 +08:00
Justin Lin
f0d77c242f add convex_intersection_for 2020-02-22 12:08:31 +08:00
Justin Lin
f206de4a1a add convex_intersection 2020-02-22 09:59:31 +08:00
Justin Lin
d2e2c7867a add impl 2020-02-22 09:59:23 +08:00
Justin Lin
fb7eab6a31 add convex_ct_clk_order 2020-02-22 09:58:59 +08:00
Justin Lin
78fc088438 add convex_center_p 2020-02-22 09:58:41 +08:00
Justin Lin
4026a206b6 add intersection_p 2020-02-22 09:58:19 +08:00
Justin Lin
b4a7ae46ad use each to refactor 2020-02-22 09:57:40 +08:00
Justin Lin
0a61fd4095 support depth 2020-02-20 10:26:07 +08:00
Justin Lin
e56c12f7a6 support depth 2020-02-20 10:22:24 +08:00
Justin Lin
1e1f4c7d65 support depth 2020-02-20 10:19:33 +08:00
Justin Lin
74e087e4dd default to half of thickness 2020-02-20 10:18:10 +08:00
Justin Lin
1d68bad5d7 update comment 2020-02-20 10:15:15 +08:00
Justin Lin
2e2b4de1eb support depth 2020-02-20 08:47:17 +08:00
Justin Lin
3640a84769 support depth 2020-02-20 08:47:01 +08:00
Justin Lin
d9b4917c43 refactor 2020-02-20 08:39:50 +08:00
Justin Lin
fa71d252bf support depth 2020-02-20 08:39:45 +08:00
Justin Lin
0dc533e681 minimum level is 1 2020-02-19 22:06:41 +08:00
Justin Lin
0b7c8467cc fix dir 2020-02-19 21:32:30 +08:00
Justin Lin
1492189de6 typo 2020-02-19 21:19:04 +08:00
Justin Lin
be515c4162 fix dir 2020-02-19 21:18:22 +08:00
Justin Lin
db1b762a39 fix dir 2020-02-19 21:14:41 +08:00
Justin Lin
c3e46716e3 update comment 2020-02-19 17:58:55 +08:00
Justin Lin
9f55817a59 refactor 2020-02-19 17:38:10 +08:00
Justin Lin
0a395fe097 refactor 2020-02-19 17:37:16 +08:00
Justin Lin
4559145519 add sf_torus 2020-02-19 17:36:27 +08:00
Justin Lin
4c3c027995 support 3d point 2020-02-19 17:33:54 +08:00
Justin Lin
94d2585d41 support twist 2020-02-19 16:25:17 +08:00
Justin Lin
fd431a751b add simple doc 2020-02-19 14:46:14 +08:00
Justin Lin
1913013326 update comment 2020-02-19 14:46:09 +08:00
Justin Lin
8a609c2f57 add sf_ring 2020-02-19 14:43:12 +08:00
Justin Lin
7a52bf3b00 format 2020-02-19 14:04:48 +08:00
Justin Lin
5d2fc04705 support 3d point 2020-02-19 14:01:06 +08:00
Justin Lin
63bc668d51 support 3d point 2020-02-19 14:00:38 +08:00
Justin Lin
e046155b36 refactor 2020-02-19 13:54:35 +08:00
Justin Lin
48603db468 refactor 2020-02-19 13:53:18 +08:00
Justin Lin
0e37195ede refactor 2020-02-19 13:46:07 +08:00
Justin Lin
1a63f93a7b format 2020-02-19 13:41:33 +08:00
Justin Lin
f5e9e17af3 rename 2020-02-19 13:40:01 +08:00
Justin Lin
7ecf84d054 rename 2020-02-19 13:39:14 +08:00
Justin Lin
ee0086343c refactor 2020-02-19 13:01:11 +08:00
Justin Lin
fe98244c30 change dir 2020-02-19 13:01:04 +08:00
Justin Lin
254c6d2d69 change dir 2020-02-19 12:55:36 +08:00
Justin Lin
d27b48bfb7 format 2020-02-19 12:54:44 +08:00
Justin Lin
5849718ed5 change dir 2020-02-19 12:49:50 +08:00
Justin Lin
ce1ef24d64 add sf_bend 2020-02-19 12:20:12 +08:00
Justin Lin
3cd0d138af support 3D point 2020-02-19 12:19:31 +08:00
Justin Lin
df1bad4887 add invert 2020-02-19 12:19:07 +08:00
Justin Lin
fa9b23a117 fix thicnkess 2020-02-19 12:18:20 +08:00
Justin Lin
b08c2d482a refactor 2020-02-19 12:12:09 +08:00
Justin Lin
2ffe6b8e94 refactor 2020-02-18 20:43:59 +08:00
Justin Lin
96ab55b0ca refactor 2020-02-18 20:43:06 +08:00
Justin Lin
ed6fafd0fc refactor 2020-02-18 20:41:59 +08:00
Justin Lin
771edcf831 add mz_get 2020-02-18 20:41:54 +08:00
Justin Lin
e924e8b25a remove unnecessary function 2020-02-18 17:18:31 +08:00
Justin Lin
c89c440bda add sf_square 2020-02-18 17:18:11 +08:00
Justin Lin
a9fd1444d8 rename 2020-02-18 17:01:02 +08:00
Justin Lin
dea79663c1 rename 2020-02-18 17:00:57 +08:00
Justin Lin
8ad280c731 rename 2020-02-18 16:56:28 +08:00
Justin Lin
60b49cbeae add dot_photo_sphere 2020-02-18 15:59:56 +08:00
Justin Lin
cd2b59ceee refactor 2020-02-18 15:59:49 +08:00
Justin Lin
9f47301aa7 add simple doc 2020-02-18 15:53:34 +08:00
Justin Lin
be8e713784 real photo_sphere 2020-02-18 15:51:35 +08:00
Justin Lin
2f7993b70a add sphere_surface 2020-02-18 15:51:27 +08:00
Justin Lin
68234d6079 accept 3D point 2020-02-18 15:03:11 +08:00
Justin Lin
02fac4ea5c refactor 2020-02-18 15:03:01 +08:00
Justin Lin
018b2e8be2 add surface_grapher 2020-02-18 11:13:11 +08:00
Justin Lin
7e0400ea91 add flat 2020-02-18 11:09:36 +08:00
Justin Lin
cd46a948df add tf_bend 2020-02-17 14:30:46 +08:00
Justin Lin
afd337e84f refactor 2020-02-16 16:58:42 +08:00
Justin Lin
a26895f101 refactor 2020-02-16 16:56:10 +08:00
Justin Lin
5d0a3e7710 refactor 2020-02-16 16:54:43 +08:00
Justin Lin
3f21202fac refactor 2020-02-16 16:52:45 +08:00
Justin Lin
016b88b2a4 just square_maze 2020-02-16 16:50:49 +08:00
Justin Lin
603611ab16 refactor 2020-02-16 16:47:11 +08:00
Justin Lin
0bb4fa6485 refactor 2020-02-16 16:40:43 +08:00
Justin Lin
f549a07981 refactor 2020-02-16 16:37:48 +08:00
Justin Lin
2b336e881a refactor 2020-02-16 16:34:30 +08:00
Justin Lin
246a3a3d84 refactor 2020-02-16 16:31:02 +08:00
Justin Lin
ec5bc38c18 refactor 2020-02-16 16:28:31 +08:00
Justin Lin
a8c7fc57b2 remove unnecessary function 2020-02-16 16:27:01 +08:00
Justin Lin
be7f736f95 refactor 2020-02-16 16:25:31 +08:00
Justin Lin
1fd45af2fa refactor 2020-02-16 16:20:55 +08:00
Justin Lin
4eaf763a85 refactor 2020-02-16 15:59:45 +08:00
Justin Lin
77df23ae83 refactor 2020-02-16 14:10:33 +08:00
Justin Lin
5f0e83cfc6 refactor 2020-02-16 14:08:56 +08:00
Justin Lin
feb29e2f5d remove unnecessary modules 2020-02-16 14:07:26 +08:00
Justin Lin
e99c0b3172 refactor 2020-02-16 14:07:07 +08:00
Justin Lin
1e8167d823 rename 2020-02-16 14:05:37 +08:00
Justin Lin
41f7f5a08c refactor 2020-02-16 12:12:35 +08:00
Justin Lin
b9e357069b add maze_walls 2020-02-16 12:12:29 +08:00
Justin Lin
d09dccd7d5 add maze_blocks 2020-02-16 12:12:18 +08:00
Justin Lin
f4bf9d83fc add tiled_line_torus 2020-02-15 21:11:09 +08:00
Justin Lin
4a7abcf263 refactor 2020-02-15 21:09:26 +08:00
Justin Lin
9a10484fee add torus_maze 2020-02-15 21:07:31 +08:00
Justin Lin
654ec5000c add simple doc 2020-02-15 19:51:27 +08:00
Justin Lin
9fea6538ac refactor 2020-02-15 19:48:21 +08:00
Justin Lin
75715369b5 add tf_torus 2020-02-15 18:25:50 +08:00
Justin Lin
37ee1d28c5 refactor 2020-02-15 18:06:04 +08:00
Justin Lin
34a9e38e12 add default value 2020-02-15 18:05:54 +08:00
Justin Lin
542cd41284 better printable setting 2020-02-14 14:20:12 +08:00
Justin Lin
18dd9276f1 printable setting 2020-02-14 09:33:13 +08:00
Justin Lin
4babdca442 fn6 2020-02-14 08:52:19 +08:00
Justin Lin
40589cf204 printable setting 2020-02-13 20:56:00 +08:00
Justin Lin
a4ff4a7746 rename 2020-02-13 17:40:44 +08:00
Justin Lin
3bbed7e8c0 add arc_tiled_lines 2020-02-13 17:19:46 +08:00
Justin Lin
d7f8885135 re-order 2020-02-13 17:02:20 +08:00
Justin Lin
ddf0f36a51 refactor 2020-02-13 17:01:28 +08:00
Justin Lin
f7a50a4580 update doc 2020-02-13 14:18:53 +08:00
Justin Lin
b9ca3bb246 add simple doc 2020-02-13 14:18:30 +08:00
Justin Lin
044b359bf4 refactor 2020-02-13 14:14:47 +08:00
Justin Lin
ef38ee2186 rename 2020-02-13 14:13:11 +08:00
Justin Lin
32ff45758c refactor 2020-02-13 14:11:43 +08:00
Justin Lin
92d57a0312 add tf_ring 2020-02-13 14:11:39 +08:00
Justin Lin
57e3facaa9 rename 2020-02-13 10:47:03 +08:00
Justin Lin
1900801cad add tf_x_twist 2020-02-13 08:04:45 +08:00
Justin Lin
6a9e1e7b06 add simple doc 2020-02-12 20:30:51 +08:00
Justin Lin
88e0876d2f refactor 2020-02-12 20:29:24 +08:00
Justin Lin
02b1d1e132 add tf_y_twist 2020-02-12 20:29:18 +08:00
Justin Lin
b1b5efe022 rename 2020-02-12 20:01:22 +08:00
Justin Lin
0486b85f2a rename 2020-02-12 19:58:08 +08:00
Justin Lin
00c7c10b22 rename 2020-02-12 17:55:23 +08:00
Justin Lin
5567476120 refactor 2020-02-10 14:25:32 +08:00
Justin Lin
0a64658378 add photo_sphere 2020-02-10 13:33:12 +08:00
Justin Lin
1f326b83e7 update doc 2020-02-10 13:14:14 +08:00
Justin Lin
cc47f81dc1 add simple doc 2020-02-09 17:55:19 +08:00
Justin Lin
4d7acb3734 fix offset 2020-02-09 17:54:32 +08:00
Justin Lin
2b121d386b add sphere_maze 2020-02-09 17:11:38 +08:00
Justin Lin
195bf91850 add experimental/pt_to_sphere 2020-02-09 17:11:31 +08:00
Justin Lin
af779562ba use rand 2020-02-08 16:00:04 +08:00
145 changed files with 4123 additions and 602 deletions

View File

@@ -1,4 +1,4 @@
# dotSCAD 2.2
# dotSCAD 2.2.1
> **Reduce the burden of 3D modeling in mathematics.**
@@ -95,6 +95,7 @@ See [examples](examples).
- [ellipse_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-ellipse_extrude.html)
- [stereographic_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-stereographic_extrude.html)
- [rounded_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-rounded_extrude.html)
- [bend_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-bend_extrude.html)
- 2D Shape
- [shape_taiwan](https://openhome.cc/eGossip/OpenSCAD/lib2x-shape_taiwan.html)
@@ -111,7 +112,6 @@ See [examples](examples).
- [shape_path_extend](https://openhome.cc/eGossip/OpenSCAD/lib2x-shape_path_extend.html)
- 2D Shape Extrusion
- [bend_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-bend_extrude.html)
- [path_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-path_extrude.html)
- [ring_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-ring_extrude.html)
- [helix_extrude](https://openhome.cc/eGossip/OpenSCAD/lib2x-helix_extrude.html)

View File

@@ -1,5 +1,13 @@
> Version numbers are based on [Semantic Versioning](https://semver.org/).
# v2.2.1
Bugfixes:
- `util/sort`: z not sorted.
Improvements:
- Faster when the `style` of `function_grapher` is `"LINES"` or `"HULL_LINES"`.
- Dedup pixels of `pixel/px_polyline`, `pixel/px_circle`, `pixel/px_cylinder`, `pixel/px_sphere`, `pixel/px_polygon`.
# v2.2
- Bugfixes
- `util/sort`: fix "search term not found" warning when `by` is `"idx"`.

View File

@@ -6,7 +6,7 @@ Creates a polyline from a list of `[x, y, z]` coordinates.
- `points` : The list of `[x, y, z]` points of the polyline. The points are indexed from 0 to n-1.
- `thickness` : The line thickness.
- `startingStyle` : The end-cap style of the starting point. The value must be `"CAP_BUTT"`, `"CAP_CIRCLE"` or `"CAP_SPHERE"`. The default value is `"CAP_CIRCL"`.
- `startingStyle` : The end-cap style of the starting point. The value must be `"CAP_BUTT"`, `"CAP_CIRCLE"` or `"CAP_SPHERE"`. The default value is `"CAP_CIRCLE"`.
- `endingStyle` : The end-cap style of the ending point. The value must be `"CAP_BUTT"`, `"CAP_CIRCLE"` or `"CAP_SPHERE"`. The default value is `"CAP_CIRCLE"`.
- `$fa`, `$fs`, `$fn` : Used by the `circle` or `sphere` module internally. Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) or [the sphere module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#sphere) for more details. The final fragments of a circle will be a multiple of 4 to fit edges if possible.

View File

@@ -73,7 +73,7 @@ I provide a tool [img2gray](https://github.com/JustinSDK/img2gray) for convertin
After converting the image, use the data in the text file as the `levels` value of `pixel_gray`, you can build a model like this:
include <pixel/px_gray.scad>;
use <pixel/px_gray.scad>;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],

View File

@@ -11,7 +11,7 @@ If your 2D shape is not solid, indexes of triangles are required. See [polysecti
- `shape_pts` : A list of points represent a shape. See the example below.
- `radius` : The circle radius.
- `angle` : Defaults to 360. Specifies the number of degrees to sweep, starting at the positive X axis. It also accepts a 2 element vector which defines the central angle. The first element of the vector is the beginning angle in degrees, and the second element is the ending angle.
- `twist` : The number of degrees of through which the shape is extruded.
- `twist` : The number of degrees of through which the shape is twisted.
- `scale` : Scales the 2D shape by this value over the length of the extrusion. Scale can be a scalar or a vector.
- `triangles` : `"SOLID"` (default), `"HOLLOW"` or user-defined indexes. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib2x-polysections.html) for details.
- `$fa`, `$fs`, `$fn` : Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) for more details.

View File

@@ -4,7 +4,7 @@ Returns shape points of a regular cyclic polygon. They can be used with xxx_extr
## Parameters
- `sides` : The radius of the circle.
- `sides` : The sides of the circle.
- `circle_r` : The radius of the circumcircle.
- `corner_r` : The radius of the circle at a corner.
- `$fa`, `$fs`, `$fn` : Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) for more details.

View File

@@ -19,10 +19,7 @@ Creats a [Voronoi diagram](https://en.wikipedia.org/wiki/Voronoi_diagram). The i
use <voronoi2d.scad>;
xs = rands(-20, 20, 50);
ys = rands(-20, 20, 50);
points = [for(i = [0:len(xs) - 1]) [xs[i], ys[i]]];
points = [for(i = [0:50]) rands(-20, 20, 2)];
voronoi2d(points);
translate([60, 0, 0])

View File

@@ -0,0 +1,125 @@
use <pixel/px_gray.scad>;
use <experimental/ptf_sphere.scad>;
photo_size = [100, 100];
radius = 50;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
];
dots = px_gray(levels, center = true, normalize = true);
color("white")
for(dot = dots) {
translate(ptf_sphere(photo_size, dot[0] + photo_size / 2, radius, [180, 180]))
square(dot[1] * 2.5);
}
rotate([180, 0, 0])
color("white")
for(dot = dots) {
translate(ptf_sphere(photo_size, dot[0] + photo_size / 2, radius, [180, 180]))
square(dot[1] * 2.5);
}
color("black")
sphere(50);

View File

@@ -0,0 +1,41 @@
use <hull_polyline3d.scad>;
use <experimental/tri_delaunay.scad>;
use <experimental/tri_bisectors.scad>;
use <experimental/ptf_bend.scad>;
size = [100, 40];
pt_nums = 20;
thickness = 1;
radius = 15;
fn = 12;
xs = rands(0, size[0], pt_nums);
ys = rands(0, size[1], pt_nums);
half_fn = fn / 2;
dx = size[0] / fn;
dy = size[1] / half_fn;
points = concat(
[
[0, 0], [size[0], 0],
[size[0], size[1]], [0, size[1]]
],
[for(i = [1:fn - 1]) [i * dx, 0]],
[for(i = [1:fn - 1]) [i * dx, size[1]]],
[for(i = [1:half_fn - 1]) [0, dy * i]],
[for(i = [1:half_fn - 1]) [size[0], dy * i]],
[for(i = [0:len(xs) - 1]) [xs[i], ys[i]]]
);
bisectors = [
for(tri = tri_delaunay(points))
each tri_bisectors([points[tri[0]], points[tri[1]], points[tri[2]]])
];
for(line = bisectors) {
pts = [for(p = line) ptf_bend(size, p, radius, 360)];
hull_polyline3d(
concat(pts, [pts[0]]),
thickness = thickness,
$fn = 4
);
}

View File

@@ -0,0 +1,27 @@
use <hull_polyline3d.scad>;
use <experimental/ptf_bend.scad>;
use <hollow_out_square.scad>;
width = 5;
columns = 30;
rows = 15;
radius = 30;
angle = 360;
thickness = 2;
lines = concat(
hollow_out_square([columns, rows], width),
[[
for(x = [0:width:width * columns]) [x, rows * width]
]]
);
for(line = lines) {
transformed = [for(pt = line) ptf_bend([columns * width, rows * width], pt, radius, angle)];
hull_polyline3d(transformed, thickness, $fn = 4);
}
translate([0, 0, -thickness / 2])
linear_extrude(thickness)
rotate(180 / columns)
circle(radius + thickness / 2, $fn = columns);

View File

@@ -0,0 +1,31 @@
use <util/rand.scad>;
use <experimental/tri_bisectors.scad>;
function h_lines_in_square(width) =
let(
w = width / 2,
i = ceil(rand() * 10) % 2,
tris = i == 0 ?
[
[[0, 0], [width, 0], [width, width]],
[[0, 0], [width, width], [0, width]]
]
:
[
[[width, 0], [0, width], [0, 0]],
[[width, 0], [width, width], [0, width]]
]
)
concat(tri_bisectors(tris[0]), tri_bisectors(tris[1]));
function hollow_out_square(size, width) =
let(
columns = size[0],
rows = size[1]
)
[
for(y = [0:width:width * rows - width])
for(x = [0:width:width * columns - width])
for(line = h_lines_in_square(width))
[for(p = line) p + [x, y]]
];

View File

@@ -0,0 +1,35 @@
use <shape_starburst.scad>;
use <hull_polyline3d.scad>;
use <experimental/tri_bisectors.scad>;
r1 = 30;
r2 = 12;
h = 10;
n = 5;
thickness = 1.75;
half = true;
module hollow_out_starburst(r1, r2, h, n, thickness, half = false) {
star = [for(p = shape_starburst(r1, r2, n)) [p[0], p[1], 0]];
leng = len(star);
tris = concat(
[for(i = [0:leng - 2]) [[0, 0, h], star[i], star[i + 1]]],
[[[0, 0, h], star[leng - 1], star[0]]]
);
module half_star() {
for(tri = tris) {
hull_polyline3d(concat(tri, [tri[0]]), thickness = thickness);
for(line = tri_bisectors(tri)) {
hull_polyline3d(concat(line, [line[0]]), thickness = thickness);
}
}
}
half_star();
if(!half) {
mirror([0, 0, 1]) half_star();
}
}
hollow_out_starburst(r1, r2, h, n, thickness, half);

View File

@@ -0,0 +1,22 @@
use <hull_polyline3d.scad>;
use <experimental/ptf_torus.scad>;
use <hollow_out_square.scad>;
width = 5;
columns = 10;
rows = 30;
radius = 30;
thickness = 2;
twist = 0;
lines = hollow_out_square([columns, rows], width);
for(line = lines) {
transformed = [for(pt = line) ptf_torus([columns * width, rows * width], pt, [radius, radius / 2], twist = twist)];
hull_polyline3d(transformed, thickness, $fn = 4);
}
color("black")
rotate_extrude($fn = 36)
translate([radius * 1.5, 0, 0])
circle(radius / 2);

View File

@@ -0,0 +1,65 @@
use <hull_polyline3d.scad>;
use <bezier_curve.scad>;
use <rotate_p.scad>;
use <paths2sections.scad>;
use <experimental/hollow_out_sweep.scad>;
use <experimental/tri_bisectors.scad>;
t_step = 0.1;
width = 3;
fn = 18;
line_style = "HULL_LINES"; // [LINES, HULL_LINES]
p0 = [30, 0, 0];
p1 = [80, 0, 50];
p2 = [0, 0, 60];
p3 = [25, 0, 120];
p4 = [35, 0, 130];
hollow_out_vase([p0, p1, p2, p3, p4], t_step, width, fn, line_style);
module hollow_out_vase(ctrl_pts, t_step, width, fn, line_style) {
bezier = bezier_curve(t_step,
ctrl_pts
);
fpt = ctrl_pts[len(ctrl_pts) - 1];
a_step = 360 / fn;
sects = paths2sections([
for(a = [0:a_step:360 - a_step])
[for(p = bezier) rotate_p(p, [0, 0, a])]
]);
// body
hollow_out_sweep(sects, thickness = width, style = line_style, $fn = 4);
leng_sect = len(sects[0]);
// bottom
fst_sect = sects[0];
fst_tris = concat(
[for(i = [0:leng_sect - 2]) [[0, 0, 0], fst_sect[i], fst_sect[i + 1]]],
[[[0, 0, 0], fst_sect[leng_sect - 1], fst_sect[0]]]
);
for(tri = fst_tris) {
lines = tri_bisectors(tri);
for(line = lines) {
hull_polyline3d(line, thickness = width, $fn = 4);
}
hull_polyline3d([lines[2][1], [0, 0, 0]], thickness = width, $fn = 4);
}
// mouth
lst_sect = sects[len(sects) - 1];
lst_tris = concat(
[for(i = [0:leng_sect - 2]) [[0, 0, fpt[2]], lst_sect[i], lst_sect[i + 1]]],
[[[0, 0, fpt[2]], lst_sect[leng_sect - 1], lst_sect[0]]]
);
dangling_pts = [for(tri = lst_tris) tri_bisectors(tri)[1][1]];
offset_z = [0, 0, width];
for(i = [0: leng_sect - 1]) {
hull_polyline3d([lst_sect[i] + offset_z, dangling_pts[i]], thickness = width, $fn = 4);
hull_polyline3d([lst_sect[(i + 1) % leng_sect] + offset_z, dangling_pts[i]], thickness = width, $fn = 4);
}
}

View File

@@ -0,0 +1,50 @@
use <torus_knot.scad>;
use <cross_sections.scad>;
use <circle_path.scad>;
use <shape_pentagram.scad>;
use <experimental/tri_bisectors.scad>;
use <experimental/hollow_out_sweep.scad>;
p = 2;
q = 3;
phi_step = 0.075;
thickness = .1;
section_style = "STAR"; // [STAR, CIRCLE]
line_style = "HULL_LINES"; // [LINES, HULL_LINES]
if(section_style == "STAR") {
hollow_out_torus_knot(shape_pentagram(.5), p, q, phi_step, thickness, line_style);
}
else {
hollow_out_torus_knot(circle_path(radius = .5, $fn = 12), p, q, phi_step, thickness, line_style);
}
module hollow_out_torus_knot(shape, p, q, phi_step, thickness, line_style) {
function angy_angz(p1, p2) =
let(
dx = p2[0] - p1[0],
dy = p2[1] - p1[1],
dz = p2[2] - p1[2],
ya = atan2(dz, sqrt(dx * dx + dy * dy)),
za = atan2(dy, dx)
) [ya, za];
function sects_by_path(shape, path) =
let(
lines = [
for(i = [0:len(path) - 2])
[path[i], path[i + 1]]
],
angles = [
for(line = lines)
let(a = angy_angz(line[0], line[1]))
[0, 90 - a[0], a[1]]
]
)
cross_sections(shape, path, concat([angles[0]], angles));
pts = torus_knot(p, q, phi_step);
sects = sects_by_path(shape, pts);
hollow_out_sweep(sects, thickness, closed = true, style = line_style);
}

View File

@@ -0,0 +1,33 @@
use <hull_polyline2d.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
use <experimental/ptf_circle.scad>;
module circle_maze(start, r_blocks, block_width, wall_thickness, origin_offset) {
double_r_blocks = r_blocks * 2;
blocks = mz_blocks(
start,
double_r_blocks, double_r_blocks
);
width = double_r_blocks * block_width;
walls = mz_walls(blocks, double_r_blocks, double_r_blocks, block_width);
half_width = width / 2;
offset = is_undef(origin_offset) ? [-half_width, -half_width] : origin_offset;
for(wall = walls) {
for(i = [0:len(wall) - 2]) {
p0 = ptf_circle(wall[i], offset);
p1 = ptf_circle(wall[i + 1], offset);
hull_polyline2d([p0, p1], width = wall_thickness);
}
}
}
circle_maze(
start = [1, 1],
r_blocks = 5,
block_width = 2,
wall_thickness = .75
);

View File

@@ -3,7 +3,7 @@ use <square_maze.scad>;
maze_rows = 8;
block_width = 2;
wall_thickness = 1;
inner_cube = false;
inner_cube = true;
travel_all = true;
module cube_maze(maze_rows, block_width, wall_thickness, inner_cube, travel_all) {
@@ -20,17 +20,8 @@ module cube_maze(maze_rows, block_width, wall_thickness, inner_cube, travel_all)
module two_mazes() {
module one_maze() {
translate([origin, origin, half_cube_size])
linear_extrude(wall_thickness) build_square_maze(
maze_rows,
maze_rows,
go_maze(
1, 1, // starting point
starting_maze(maze_rows, maze_rows),
maze_rows, maze_rows
),
block_width,
wall_thickness
);
linear_extrude(wall_thickness)
square_maze([1, 1], maze_rows, block_width, wall_thickness);
}
one_maze();

View File

@@ -1,5 +1,6 @@
use <bend.scad>;
use <square_maze.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
radius = 30;
height = 60;
@@ -11,8 +12,7 @@ wall_top_scale = 0.25;
fn = 24;
module build_ramp_maze(rows, columns, blocks, block_width, wall_thickness, wall_height, wall_top_scale) {
module cylinder_maze() {
module ramp_line(point1, point2, width = 1, height = 1, top_scale = 0.25) {
angle = 90 - atan((point2[1] - point1[1]) / (point2[0] - point1[0]));
offset_x = 0.5 * width * cos(angle);
@@ -32,61 +32,26 @@ module build_ramp_maze(rows, columns, blocks, block_width, wall_thickness, wall_
}
}
module draw_ramp_block(block, block_width, wall_thickness, wall_height, wall_top_scale) {
translate([get_x(block) - 1, get_y(block) - 1] * block_width) {
if(upper_wall(block) || upper_right_wall(block)) {
ramp_line(
[0, block_width], [block_width, block_width], wall_thickness, wall_height, wall_top_scale
);
}
if(right_wall(block) || upper_right_wall(block)) {
ramp_line(
[block_width, block_width], [block_width, 0], wall_thickness, wall_height, wall_top_scale
);
}
}
}
for(block = blocks) {
draw_ramp_block(
block,
block_width,
wall_thickness,
wall_height,
wall_top_scale
);
}
ramp_line(
[0, 0], [block_width * columns, 0],
wall_thickness, wall_height, wall_top_scale
);
}
module cylinder_maze() {
maze_rows = round(height / block_width);
maze_columns = round(2 * 3.14159 * radius / block_width);
maze_blocks = go_maze(
1, maze_rows,
starting_maze(maze_rows, maze_columns),
maze_blocks = mz_blocks(
[1, maze_rows],
maze_rows, maze_columns,
x_circular = true
);
walls = mz_walls(maze_blocks, maze_rows, maze_columns, block_width, left_border = false);
leng_circumference = block_width * maze_columns + wall_thickness;
bend(size = [leng_circumference, block_width * maze_rows + wall_thickness, wall_height], angle = 360 + 360 * wall_thickness / leng_circumference, frags = fn)
translate([0, wall_thickness / 2, 0]) build_ramp_maze(
maze_rows,
maze_columns,
maze_blocks,
block_width,
wall_thickness,
wall_height,
wall_top_scale
);
translate([0, wall_thickness / 2])
for(wall = walls) {
for(i = [0:len(wall) - 2]) {
ramp_line(wall[i], wall[i + 1], wall_thickness, wall_height, wall_top_scale);
}
}
}
cylinder_maze();

View File

@@ -1,5 +1,6 @@
use <line2d.scad>;
use <arc.scad>;
use <util/rand.scad>;
number_of_circles = 15;
minimum_radius = 3;
@@ -36,7 +37,7 @@ module euler_maze(n, r, d, width = 1) {
line2d(p3, p4, width = width, p1Style = "CAP_ROUND", p2Style = "CAP_ROUND");
if(n != 0) {
rand_a = rands(15, 180, 15)[0];
rand_a = rand(15, 180);
angle_between_gap = rand_a - gap_angle;
twoGapsCircle(outer_r, d,
gap_angle,

View File

@@ -1,6 +1,6 @@
use <arc.scad>;
use <square_maze.scad>;
use <heart_maze.scad>;
use <experimental/mz_blocks.scad>;
names = ["Justin", "Monica"];
font_name = "Arial Black";
@@ -31,9 +31,9 @@ module heart_base(name, font_name, font_size, radius, ring_thickness, tip_r_of_h
}
module heart2heart_maze(names, font_name, font_size, radius_of_heart, tip_r_of_heart, wall_thickness, cblocks, levels, spacing) {
maze = go_maze(1, 1,
starting_maze(cblocks, levels),
cblocks, levels, y_circular = true
maze = mz_blocks(
[1, 1],
cblocks, levels, y_circular = true
);
translate([0, 0, wall_thickness])

View File

@@ -1,8 +1,9 @@
use <line2d.scad>;
use <hollow_out.scad>;
use <square_maze.scad>;
use <ellipse_extrude.scad>;
use <arc.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_get.scad>;
radius_of_heart = 12;
height_of_heart = 25;
@@ -58,6 +59,15 @@ module heart_to_heart_wall(radius, length, angle, thickness) {
}
module heart_maze(maze, radius, cblocks, levels, thickness = 1) {
function no_wall(block) = get_wall_type(block) == "NO_WALL";
function upper_wall(block) = get_wall_type(block) == "UPPER_WALL";
function right_wall(block) = get_wall_type(block) == "RIGHT_WALL";
function upper_right_wall(block) = get_wall_type(block) == "UPPER_RIGHT_WALL";
function get_x(block) = mz_get(block, "x");
function get_y(block) = mz_get(block, "y");
function get_wall_type(block) = mz_get(block, "w");
arc_angle = 360 / cblocks;
r = radius / (levels + 1);
@@ -96,8 +106,8 @@ module heart_maze(maze, radius, cblocks, levels, thickness = 1) {
}
}
maze = go_maze(1, 1,
starting_maze(cblocks, levels),
maze = mz_blocks(
[1, 1],
cblocks, levels, y_circular = true
);

View File

@@ -1,7 +1,7 @@
use <hull_polyline3d.scad>;
use <rotate_p.scad>;
use <square_maze.scad>;
use <twisted_maze.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
use <experimental/ptf_ring.scad>;
rows = 48;
columns = 8;
@@ -14,14 +14,16 @@ leng = rows * block_width;
radius = 0.5 * leng / PI;
a_step = 360 / leng;
blocks = go_maze(
1, 1, // starting point
starting_maze(rows, columns),
rows, columns, y_circular = true
blocks = mz_blocks(
[1, 1],
rows, columns,
y_circular = true
);
walls = maze_walls(blocks, rows, columns, block_width, bottom_border = false);
for(wall_pts = y_twist(walls, angle, rows, columns, block_width)) {
z_rotated = [for(pt = wall_pts) rotate_p([radius + pt[0], 0, pt[2]], a_step * pt[1])];
hull_polyline3d(z_rotated, wall_thickness);
walls = mz_walls(blocks, rows, columns, block_width, bottom_border = false);
size = [columns * block_width, rows * block_width];
for(wall_pts = walls) {
transformed = [for(pt = wall_pts) ptf_ring(size, pt, radius, 360, angle)];
hull_polyline3d(transformed, wall_thickness);
}

View File

@@ -10,26 +10,15 @@ module pyramid_maze(maze_rows, block_width, wall_thickness) {
linear_extrude(height, scale = 0)
square(leng, center = true);
}
maze_blocks = go_maze(
1, 1, // starting point
starting_maze(maze_rows, maze_rows),
maze_rows, maze_rows
);
leng = maze_rows * block_width ;
half_leng = leng / 2;
intersection() {
linear_extrude(leng * 2)
translate([-half_leng, -half_leng]) build_square_maze(
maze_rows,
maze_rows,
maze_blocks,
block_width,
wall_thickness
);
translate([-half_leng, -half_leng])
square_maze([1, 1], maze_rows, block_width, wall_thickness);
pyramid(leng + wall_thickness);
}
}

View File

@@ -0,0 +1,27 @@
use <experimental/mz_hamiltonian.scad>;
module random_scala(rows, columns, start, width, height) {
line = mz_hamiltonian(rows, columns, start);
leng = len(line);
for(i = [0:leng - 1]) {
p1 = line[i];
translate(p1)
linear_extrude(height * i * 2 + height)
square(width + 0.01, center = true);
p2 = line[(i + 1) % leng];
translate(p1 + (p2 - p1) / 2)
linear_extrude(height * (2 * i + 1) + height)
square(width + 0.01, center = true);
}
}
random_scala(
rows = 2,
columns = 3,
start = [0, 0],
width = .5,
height = .25
);

View File

@@ -1,6 +1,7 @@
use <line2d.scad>;
use <hollow_out.scad>;
use <square_maze.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_get.scad>;
// only for creating a small maze
@@ -36,13 +37,22 @@ module regular_polygon_to_polygon_wall(radius, length, angle, thickness, sides)
}
module regular_polygon_maze(radius, cblocks, levels, thickness = 1, sides) {
function no_wall(block) = get_wall_type(block) == "NO_WALL";
function upper_wall(block) = get_wall_type(block) == "UPPER_WALL";
function right_wall(block) = get_wall_type(block) == "RIGHT_WALL";
function upper_right_wall(block) = get_wall_type(block) == "UPPER_RIGHT_WALL";
function get_x(block) = mz_get(block, "x");
function get_y(block) = mz_get(block, "y");
function get_wall_type(block) = mz_get(block, "w");
arc_angle = 360 / cblocks;
r = radius / (levels + 1);
maze = go_maze(1, 1,
starting_maze(cblocks, levels),
cblocks, levels, y_circular = true
);
maze = mz_blocks(
[1, 1],
cblocks, levels, y_circular = true
);
difference() {
render() union() {

View File

@@ -0,0 +1,38 @@
use <hull_polyline3d.scad>;
use <matrix/m_rotation.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
use <experimental/ptf_sphere.scad>;
r = 10;
rows = 24;
columns = 18;
block_width = 1;
wall_thickness = .5;
pole_offset = block_width * 1.5;
module sphere_maze() {
size = [rows * block_width, columns * block_width + pole_offset * 2];
blocks = mz_blocks(
[1, 1],
rows, columns,
y_circular = true
);
p_offset = [block_width * rows, pole_offset, 0];
mr = m_rotation(90);
walls = mz_walls(blocks, rows, columns, block_width, bottom_border = false);
for(wall_pts = walls) {
rxpts = [
for(p = wall_pts)
ptf_sphere(size, mr * [p[0], p[1], 0, 0] + p_offset, r)
];
hull_polyline3d(rxpts, wall_thickness, $fn = 6);
}
}
sphere_maze();
color("black")
rotate([0, 90, 0])
sphere(r);

View File

@@ -1,355 +1,27 @@
use <line2d.scad>;
use <polyline2d.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
// NO_WALL = 0;
// UPPER_WALL = 1;
// RIGHT_WALL = 2;
// UPPER_RIGHT_WALL = 3;
function no_wall(block) = get_wall_type(block) == 0;
function upper_wall(block) = get_wall_type(block) == 1;
function right_wall(block) = get_wall_type(block) == 2;
function upper_right_wall(block) = get_wall_type(block) == 3;
function block(x, y, wall_type, visited) = [x, y, wall_type, visited];
function get_x(block) = block[0];
function get_y(block) = block[1];
function get_wall_type(block) = block[2];
// create a starting maze for being visited later.
function starting_maze(rows, columns) = [
for(y = [1:rows])
for(x = [1:columns])
block(
x, y,
// all blocks have upper and right walls
3,
// unvisited
false
)
];
// find out the index of a block with the position (x, y)
function indexOf(x, y, maze, i = 0) =
i > len(maze) ? -1 : (
[get_x(maze[i]), get_y(maze[i])] == [x, y] ? i :
indexOf(x, y, maze, i + 1)
module square_maze(start, rows, block_width, wall_thickness) {
blocks = mz_blocks(
start,
rows, rows
);
// is (x, y) visited?
function visited(x, y, maze) = maze[indexOf(x, y, maze)][3];
walls = mz_walls(blocks, rows, rows, block_width);
// is (x, y) visitable?
function visitable(x, y, maze, rows, columns) =
y > 0 && y <= rows && // y bound
x > 0 && x <= columns && // x bound
!visited(x, y, maze); // unvisited
// setting (x, y) as being visited
function set_visited(x, y, maze) = [
for(b = maze)
[x, y] == [get_x(b), get_y(b)] ?
[x, y, get_wall_type(b), true] : b
];
// 0(right)、1(upper)、2(left)、3(down)
function rand_dirs() =
[
[0, 1, 2, 3],
[0, 1, 3, 2],
[0, 2, 1, 3],
[0, 2, 3, 1],
[0, 3, 1, 2],
[0, 3, 2, 1],
[1, 0, 2, 3],
[1, 0, 3, 2],
[1, 2, 0, 3],
[1, 2, 3, 0],
[1, 3, 0, 2],
[1, 3, 2, 0],
[2, 0, 1, 3],
[2, 0, 3, 1],
[2, 1, 0, 3],
[2, 1, 3, 0],
[2, 3, 0, 1],
[2, 3, 1, 0],
[3, 0, 1, 2],
[3, 0, 2, 1],
[3, 1, 0, 2],
[3, 1, 2, 0],
[3, 2, 0, 1],
[3, 2, 1, 0]
][round(rands(0, 24, 1)[0])];
// get x value by dir
function next_x(x, dir, columns, circular) =
let(nx = x + [1, 0, -1, 0][dir])
circular ?
nx < 1 ? nx + columns : (
nx > columns ? nx % columns : nx
)
:
nx;
// get y value by dir
function next_y(y, dir, rows, circular) =
let(ny = y + [0, 1, 0, -1][dir])
circular ?
ny < 1 ? ny + rows : (
ny > rows ? ny % rows : ny
)
:
ny;
// go right and carve the right wall
function go_right_from(x, y, maze) = [
for(b = maze) [get_x(b), get_y(b)] == [x, y] ? (
upper_right_wall(b) ?
[x, y, 1, visited(x, y, maze)] :
[x, y, 0, visited(x, y, maze)]
) : b
];
// go up and carve the upper wall
function go_up_from(x, y, maze) = [
for(b = maze) [get_x(b), get_y(b)] == [x, y] ? (
upper_right_wall(b) ?
[x, y, 2, visited(x, y, maze)] :
[x, y, 0, visited(x, y, maze)]
) : b
];
// go left and carve the right wall of the left block
function go_left_from(x, y, maze, columns) =
let(
x_minus_one = x - 1,
nx = x_minus_one < 1 ? x_minus_one + columns : x_minus_one
)
[
for(b = maze) [get_x(b), get_y(b)] == [nx, y] ? (
upper_right_wall(b) ?
[nx, y, 1, visited(nx, y, maze)] :
[nx, y, 0, visited(nx, y, maze)]
) : b
];
// go down and carve the upper wall of the down block
function go_down_from(x, y, maze, rows) = [
let(
y_minus_one = y - 1,
ny = y_minus_one < 1 ? y_minus_one + rows : y_minus_one
)
for(b = maze) [get_x(b), get_y(b)] == [x, ny] ? (
upper_right_wall(b) ?
[x, ny, 2, visited(x, ny, maze)] :
[x, ny, 0, visited(x, ny, maze)]
) : b
];
// 0(right)、1(upper)、2(left)、3(down)
function try_block(dir, x, y, maze, rows, columns) =
dir == 0 ? go_right_from(x, y, maze) :
dir == 1 ? go_up_from(x, y, maze) :
dir == 2 ? go_left_from(x, y, maze, columns) :
/*dir 3*/ go_down_from(x, y, maze, rows);
// find out visitable dirs from (x, y)
function visitable_dirs_from(x, y, maze, rows, columns, x_circular, y_circular) = [
for(dir = [0, 1, 2, 3])
if(visitable(next_x(x, dir, columns, x_circular), next_y(y, dir, rows, y_circular), maze, rows, columns))
dir
];
// go maze from (x, y)
function go_maze(x, y, maze, rows, columns, x_circular = false, y_circular = false) =
// have visitable dirs?
len(visitable_dirs_from(x, y, maze, rows, columns, x_circular, y_circular)) == 0 ?
set_visited(x, y, maze) // road closed
: walk_around_from(
x, y,
rand_dirs(),
set_visited(x, y, maze),
rows, columns,
x_circular, y_circular
);
// try four directions
function walk_around_from(x, y, dirs, maze, rows, columns, x_circular, y_circular, i = 4) =
// all done?
i > 0 ?
// not yet
walk_around_from(x, y, dirs,
// try one direction
try_routes_from(x, y, dirs[4 - i], maze, rows, columns, x_circular, y_circular),
rows, columns,
x_circular, y_circular,
i - 1)
: maze;
function try_routes_from(x, y, dir, maze, rows, columns, x_circular, y_circular) =
// is the dir visitable?
visitable(next_x(x, dir, columns, x_circular), next_y(y, dir, rows, y_circular), maze, rows, columns) ?
// try the block
go_maze(
next_x(x, dir, columns, x_circular), next_y(y, dir, rows, y_circular),
try_block(dir, x, y, maze, rows, columns),
rows, columns,
x_circular, y_circular
)
// road closed so return maze directly
: maze;
// ==========
module build_square_maze(rows, columns, blocks, block_width, wall_thickness, left_border = true, bottom_border = true) {
module build_block(block, block_width, wall_thickness) {
translate([get_x(block) - 1, get_y(block) - 1] * block_width) {
if(upper_wall(block) || upper_right_wall(block)) {
// draw a upper wall
line2d(
[0, block_width], [block_width, block_width], wall_thickness
);
}
if(right_wall(block) || upper_right_wall(block)) {
// draw a right wall
line2d(
[block_width, block_width], [block_width, 0], wall_thickness
);
for(wall = walls) {
for(i = [0:len(wall) - 2]) {
hull() {
translate(wall[i]) square(wall_thickness, center = true);
translate(wall[i + 1]) square(wall_thickness, center = true);
}
}
}
for(block = blocks) {
build_block(
block,
block_width,
wall_thickness
);
}
if(left_border) {
line2d([0, 0], [0, block_width * rows], wall_thickness);
}
if(bottom_border) {
line2d([0, 0], [block_width * columns, 0], wall_thickness);
}
}
// ==========
module build_hex_maze(y_cells, x_cells, maze_vector, cell_radius, wall_thickness, left_border = true, bottom_border = true) {
function cell_position(x_cell, y_cell) =
let(
grid_h = 2 * cell_radius * sin(60),
grid_w = cell_radius + cell_radius * cos(60)
)
[grid_w * x_cell, grid_h * y_cell + (x_cell % 2 == 0 ? 0 : grid_h / 2), 0];
module hex_seg(begin, end) {
polyline2d(
[for(a = [begin:60:end])
[cell_radius * cos(a), cell_radius * sin(a)]],
wall_thickness,
startingStyle = "CAP_ROUND", endingStyle = "CAP_ROUND"
);
}
module build_upper_right() { hex_seg(0, 60); }
module build_upper() { hex_seg(60, 120); }
module build_upper_left() { hex_seg(120, 180); }
module build_down_left() { hex_seg(180, 240); }
module build_down() { hex_seg(240, 300); }
module build_down_right() { hex_seg(300, 360); }
module build_cell(block) {
module build_right_wall(x_cell) {
if(x_cell % 2 != 0) {
build_down_right();
}
else {
build_upper_right();
}
}
module build_row_wall(x_cell, y_cell) {
if(x_cell % 2 != 0) {
build_upper_right();
build_upper_left();
}
else {
build_down_right();
}
}
x = get_x(block) - 1;
y = get_y(block) - 1;
translate(cell_position(x, y)) {
build_row_wall(x, y);
if(upper_wall(block) || upper_right_wall(block)) {
build_upper();
}
if(right_wall(block) || upper_right_wall(block)) {
build_right_wall(x);
}
}
}
// create the wall of maze
for(block = maze_vector) {
build_cell(block);
}
if(left_border) {
for(y = [0:y_cells - 1]) {
translate(cell_position(0, y)) {
build_upper_left();
build_down_left();
}
}
}
if(bottom_border) {
for(x = [0:x_cells - 1]) {
translate(cell_position(x, 0)) {
build_down();
if(x % 2 == 0) {
build_down_left();
build_down_right();
}
}
}
}
}
}
// ==========
function block_walls(block, block_width) =
let(
loc = [get_x(block) - 1, get_y(block) - 1] * block_width,
upper = upper_wall(block) || upper_right_wall(block) ? [[0, block_width] + loc, [block_width, block_width] + loc] : [],
right = right_wall(block) || upper_right_wall(block) ? [[block_width, block_width] + loc, [block_width, 0] + loc] : []
)
concat(upper, right);
function maze_walls(blocks, rows, columns, block_width, left_border = true, bottom_border = true) =
let(
left_walls = left_border ? [for(y = [0:rows - 1]) [[0, block_width * (y + 1)], [0, block_width * y]]] : [],
buttom_walls = bottom_border ? [for(x = [0:columns - 1]) [[block_width * x, 0], [block_width * (x + 1), 0]]] : []
)
concat(
[
for(block = blocks)
let(pts = block_walls(block, block_width))
if(pts != []) pts
]
, left_walls, buttom_walls
);
// ==========
square_maze(
start = [1, 1],
rows = 10,
block_width = 2,
wall_thickness = 1
);

View File

@@ -29,13 +29,7 @@ module pyramid_with_stairs(base_width, stairs_width, rows) {
}
}
module step_pyramid_maze(maze_rows, block_width, stairs_width) {
maze_blocks = go_maze(
1, 1, // starting point
starting_maze(maze_rows, maze_rows),
maze_rows, maze_rows
);
module step_pyramid_maze(maze_rows, block_width, stairs_width) {
intersection() {
pyramid_with_stairs(
maze_rows * block_width, stairs_width, maze_rows);
@@ -46,13 +40,7 @@ module step_pyramid_maze(maze_rows, block_width, stairs_width) {
translate([-(maze_rows * block_width) / 2, -(maze_rows * block_width) / 2, 0])
difference() {
build_square_maze(
maze_rows,
maze_rows,
maze_blocks,
block_width,
stairs_width
);
square_maze([1, 1], maze_rows, block_width, stairs_width);
// entry
translate([0, stairs_width])

View File

@@ -1,5 +1,7 @@
use <polyline2d.scad>;
use <stereographic_extrude.scad>;
use <square_maze.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_get.scad>;
x_cells = 10;
cell_radius = 20;
@@ -8,6 +10,102 @@ fn = 24;
shadow = "YES"; // [YES, NO]
wall_height = 1;
module build_hex_maze(y_cells, x_cells, maze_vector, cell_radius, wall_thickness, left_border = true, bottom_border = true) {
function no_wall(block) = get_wall_type(block) == "NO_WALL";
function upper_wall(block) = get_wall_type(block) == "UPPER_WALL";
function right_wall(block) = get_wall_type(block) == "RIGHT_WALL";
function upper_right_wall(block) = get_wall_type(block) == "UPPER_RIGHT_WALL";
function get_x(block) = mz_get(block, "x");
function get_y(block) = mz_get(block, "y");
function get_wall_type(block) = mz_get(block, "w");
function cell_position(x_cell, y_cell) =
let(
grid_h = 2 * cell_radius * sin(60),
grid_w = cell_radius + cell_radius * cos(60)
)
[grid_w * x_cell, grid_h * y_cell + (x_cell % 2 == 0 ? 0 : grid_h / 2), 0];
module hex_seg(begin, end) {
polyline2d(
[for(a = [begin:60:end])
[cell_radius * cos(a), cell_radius * sin(a)]],
wall_thickness,
startingStyle = "CAP_ROUND", endingStyle = "CAP_ROUND"
);
}
module build_upper_right() { hex_seg(0, 60); }
module build_upper() { hex_seg(60, 120); }
module build_upper_left() { hex_seg(120, 180); }
module build_down_left() { hex_seg(180, 240); }
module build_down() { hex_seg(240, 300); }
module build_down_right() { hex_seg(300, 360); }
module build_cell(block) {
module build_right_wall(x_cell) {
if(x_cell % 2 != 0) {
build_down_right();
}
else {
build_upper_right();
}
}
module build_row_wall(x_cell, y_cell) {
if(x_cell % 2 != 0) {
build_upper_right();
build_upper_left();
}
else {
build_down_right();
}
}
x = get_x(block) - 1;
y = get_y(block) - 1;
translate(cell_position(x, y)) {
build_row_wall(x, y);
if(upper_wall(block) || upper_right_wall(block)) {
build_upper();
}
if(right_wall(block) || upper_right_wall(block)) {
build_right_wall(x);
}
}
}
// create the wall of maze
for(block = maze_vector) {
build_cell(block);
}
if(left_border) {
for(y = [0:y_cells - 1]) {
translate(cell_position(0, y)) {
build_upper_left();
build_down_left();
}
}
}
if(bottom_border) {
for(x = [0:x_cells - 1]) {
translate(cell_position(x, 0)) {
build_down();
if(x % 2 == 0) {
build_down_left();
build_down_right();
}
}
}
}
}
module hex_maze_stereographic_projection(x_cells, cell_radius, wall_thickness, fn, wall_height, shadow) {
y_cells = round(0.866 * x_cells - 0.211);
@@ -22,7 +120,10 @@ module hex_maze_stereographic_projection(x_cells, cell_radius, wall_thickness, f
pyramid_height = square_w / sqrt(2);
// create a maze
maze_vector = go_maze(1, 1, starting_maze(y_cells, x_cells), y_cells, x_cells);
maze_vector = mz_blocks(
[1, 1],
y_cells, x_cells
);
stereographic_extrude(square_w, $fn = fn)
translate([grid_w - square_w / 2, grid_h - square_w / 2, 0])

View File

@@ -9,23 +9,11 @@ shadow = "YES"; // [YES, NO]
wall_height = 2;
module stereographic_projection_maze2(maze_rows, block_width, wall_thickness, fn, wall_height, shadow) {
maze_blocks = go_maze(
1, 1, // starting point
starting_maze(maze_rows, maze_rows),
maze_rows, maze_rows
);
length = block_width * maze_rows + wall_thickness;
module maze() {
translate([-block_width * maze_rows / 2, -block_width * maze_rows / 2, 0])
build_square_maze(
maze_rows,
maze_rows,
maze_blocks,
block_width,
wall_thickness
);
square_maze([1, 1], maze_rows, block_width, wall_thickness);
}
stereographic_extrude(shadow_side_leng = length, $fn = fn)

View File

@@ -0,0 +1,34 @@
use <hull_polyline3d.scad>;
use <experimental/ptf_torus.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
rows = 36;
columns = 12;
block_width = 2;
wall_thickness = 1;
angle = 180;
twist = 360;
leng = rows * block_width;
radius = 0.5 * leng / PI;
a_step = 360 / leng;
blocks = mz_blocks(
[1, 1],
rows, columns,
x_circular = true, y_circular = true
);
walls = mz_walls(blocks, rows, columns, block_width, left_border = false, bottom_border = false);
size = [columns * block_width, rows * block_width];
for(wall_pts = walls) {
transformed = [for(pt = wall_pts) ptf_torus(size, pt, [radius, radius / 2], twist = twist)];
hull_polyline3d(transformed, wall_thickness, $fn = 4);
}
color("black")
rotate_extrude($fn = 36)
translate([radius * 1.5, 0, 0])
circle(radius / 2);

View File

@@ -1,6 +1,7 @@
use <hull_polyline3d.scad>;
use <rotate_p.scad>;
use <square_maze.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_walls.scad>;
use <experimental/ptf_y_twist.scad>;
rows = 16;
columns = 8;
@@ -9,30 +10,15 @@ wall_thickness = 1;
angle = 180;
// $fn = 24;
function y_twist(walls, angle, rows, columns, block_width) =
let(
x_offset = columns * block_width / 2,
x_centered = [
for(wall_pts = walls)
[for(pt = wall_pts) [pt[0], pt[1], 0] + [-x_offset, 0, 0]]
],
a_step = angle / (rows * block_width)
)
[
for(wall_pts = x_centered)
[
for(pt = wall_pts)
rotate_p(pt, [0, pt[1] * a_step, 0]) + [x_offset, 0, 0]
]
];
blocks = go_maze(
1, 1, // starting point
starting_maze(rows, columns),
blocks = mz_blocks(
[1, 1],
rows, columns
);
walls = maze_walls(blocks, rows, columns, block_width);
for(wall_pts = y_twist(walls, angle, rows, columns, block_width)) {
hull_polyline3d(wall_pts, wall_thickness);
walls = mz_walls(blocks, rows, columns, block_width);
size = [columns * block_width, rows * block_width];
for(wall_pts = walls) {
transformed = [for(pt = wall_pts) ptf_y_twist(size, pt, angle)];
hull_polyline3d(transformed, wall_thickness);
}

View File

@@ -0,0 +1,59 @@
use <util/rand.scad>;
use <experimental/pnoise2s.scad>;
use <experimental/sf_solidify.scad>;
use <experimental/ptf_bend.scad>;
use <util/slice.scad>;
radius = 40;
height = 100;
thickness_scale = 1;
step = 4;
module perlin_noise_cylinder(radius, height, thickness_scale, step) {
size = [2 * PI * radius, height];
surface_inside = [
for(y = [0:step:size[1]])
concat(
[
for(x = [0:step:size[0] - 1])
[x / 10, y / 10, 0]
],
[[size[0] / 10, y / 10, 0]]
)
];
seed = rand(0, 256);
leng_row = len(surface_inside[0]);
surface_outside = [
for(ri = [0:len(surface_inside) - 1])
let(
row = surface_inside[ri],
row_for_noise = concat(slice(row, 0, leng_row - 1), [[0, row[leng_row - 1][1], 0]]),
ns = pnoise2s(row_for_noise, seed)
)
[
for(ci = [0:len(ns) - 1])
[surface_inside[ri][ci][0], surface_inside[ri][ci][1], thickness_scale * (ns[ci] + 1)]
]
];
size_div_10 = size / 10;
radius_div_10 = radius / 10;
t_surface_outside = [
for(row = surface_outside)
[for(p = row)
ptf_bend(size_div_10, p, radius_div_10, 360)
]
];
t_surface_inside = [
for(row = surface_inside)
[for(p = row)
ptf_bend(size_div_10, p, radius_div_10, 360)
]
];
sf_solidify(t_surface_outside, t_surface_inside);
}
perlin_noise_cylinder(radius, height, thickness_scale, step);

111
examples/photo_sphere.scad Normal file
View File

@@ -0,0 +1,111 @@
use <experimental/sf_sphere.scad>;
radius = 50;
thickness = 10;
depth = 5;
angle = [180, 180];
invert = false;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
];
sf_sphere(levels, radius, thickness, depth, angle, invert);

View File

@@ -0,0 +1,40 @@
use <util/rand.scad>;
use <hull_polyline3d.scad>;
use <experimental/ptf_ring.scad>;
size = [20, 100];
line_width = 1;
step = 1;
twist = 180;
$fn = 8;
module tiled_line_mobius(size, twist, step, line_width = 1) {
sizexy = is_num(size) ? [size, size] : size;
s = is_undef(step) ? line_width * 2 : step;
function rand_diagonal_line_pts(x, y, size) =
rand(0, 1) >= 0.5 ? [[x, y], [x + size, y + size]] : [[x + size, y], [x, y + size]];
lines = concat(
[
for(x = [0:s:sizexy[0] - s])
for(y = [0:s:sizexy[1] - s])
rand_diagonal_line_pts(x, y, s)
],
[
for(i = [0:step:size[1] - 1])
[[0, i], [0, i + step]]
],
[
for(i = [0:step:size[1] - 1])
[[size[0], i], [size[0], i + step]]
]
);
for(line = lines) {
pts = [for(p = line) ptf_ring(size, p, size[0], twist = twist)];
hull_polyline3d(pts, thickness = line_width);
}
}
tiled_line_mobius(size, twist, step, line_width);

View File

@@ -0,0 +1,36 @@
use <util/rand.scad>;
use <hull_polyline3d.scad>;
use <experimental/ptf_torus.scad>;
size = [20, 50];
line_width = 1;
step = 1;
twist = 180;
$fn = 4;
module tiled_line_torus(size, twist, step, line_width = 1) {
sizexy = is_num(size) ? [size, size] : size;
s = is_undef(step) ? line_width * 2 : step;
function rand_diagonal_line_pts(x, y, size) =
rand(0, 1) >= 0.5 ? [[x, y], [x + size, y + size]] : [[x + size, y], [x, y + size]];
lines = concat(
[
for(x = [0:s:sizexy[0] - s])
for(y = [0:s:sizexy[1] - s])
rand_diagonal_line_pts(x, y, s)
]
);
for(line = lines) {
pts = [for(p = line) ptf_torus(size, p, [size[0], size[0] / 2], twist = twist)];
hull_polyline3d(pts, thickness = line_width);
}
}
tiled_line_torus(size, twist, step, line_width);
color("black")
rotate_extrude($fn = 36)
translate([size[0] * 1.5, 0, 0])
circle(size[0] / 2);

View File

@@ -1,11 +1,12 @@
use <line2d.scad>;
use <util/rand.scad>;
module tiled_lines(size, line_width = 1, step) {
module tiled_lines(size, step, line_width = 1) {
sizexy = is_num(size) ? [size, size] : size;
s = is_undef(step) ? line_width * 2 : step;
module rand_diagonal_line(x, y, size) {
if(rands(0, 1, 1)[0] >= 0.5) {
if(rand(0, 1) >= 0.5) {
line2d([x, y], [x + size, y + size], width = line_width);
}
else {
@@ -21,7 +22,7 @@ module tiled_lines(size, line_width = 1, step) {
}
size = [50, 25];
line_width = 1;
step = 2;
line_width = 1;
tiled_lines(size, line_width, step);
tiled_lines(size, step, line_width);

View File

@@ -0,0 +1,53 @@
use <hull_polyline2d.scad>;
use <shape_square.scad>;
use <hollow_out.scad>;
use <bend_extrude.scad>;
use <experimental/voronoi2d_cells.scad>;
xy = [100, 40];
pt_nums = 20;
thickness = 2;
voronoi_penholder(xy, pt_nums, thickness);
module voronoi_penholder(xy, pt_nums, thickness) {
xs1 = rands(0, xy[0], pt_nums);
ys1 = rands(0, xy[1], pt_nums);
points = [for(i = [0:len(xs1) - 1]) [xs1[i], ys1[i]]];
cpts = concat(
[for(p = points) if(p[0] > xy[0] - 10) p + [-xy[0], 0]],
points,
[for(p = points) if(p[0] < 10) p + [xy[0], 0]]
);
function default_region_size(points) =
let(
xs = [for(p = points) p[0]],
ys = [for(p = points) abs(p[1])]
)
max([(max(xs) - min(xs) / 2), (max(ys) - min(ys)) / 2]);
size = default_region_size(cpts);
region_shape = shape_square(size, corner_r = size / 5);
cells = voronoi2d_cells(cpts, region_shape);
bend_extrude(size = [xy[0], xy[1]], thickness = thickness, angle = 360, $fn = 48)
{
for(i = [0:len(cpts) - 1]) {
cell = cells[i];
hull_polyline2d(concat(cell, [cell[0]]), width = thickness);
}
}
r = 0.5 * xy[0] / PI;
linear_extrude(thickness)
circle(r, $fn = 48);
translate([0, 0, xy[1]])
linear_extrude(thickness)
hollow_out(shell_thickness = thickness)
circle(r, $fn = 48);
}

View File

@@ -19,9 +19,10 @@ function _triangulate_snipable(shape_pts, u, v, w, n, indices, epsilon = 0.0001)
bx = b[0],
by = b[1],
cx = c[0],
cy = c[1]
cy = c[1],
determinant = cross([bx - ax, by - ay], [cx - ax, cy - ay])
)
epsilon > (((bx - ax) * (cy - ay)) - ((by - ay) * (cx - ax))) ?
epsilon > determinant ?
false : _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices);
function _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices, p = 0) =

View File

@@ -10,7 +10,7 @@
use <archimedean_spiral.scad>;
use <cross_sections.scad>;
use <polysections.scad>;
use <sweep.scad>;
module archimedean_spiral_extrude(shape_pts, arm_distance, init_angle, point_distance, num_of_points,
rt_dir = "CT_CLK", twist = 0, scale = 1.0, triangles = "SOLID") {
@@ -32,7 +32,7 @@ module archimedean_spiral_extrude(shape_pts, arm_distance, init_angle, point_dis
sections = cross_sections(shape_pts, points, angles, twist, scale);
polysections(
sweep(
sections,
triangles = triangles
);

View File

@@ -0,0 +1,59 @@
use <util/slice.scad>;
function _convex_hull_lt_than_by_xy(p1, p2) =
p1[0] < p2[0] || (p1[0] == p2[0] && p1[1] < p2[1]);
function _convex_hull_sort_by_xy(lt) =
let(leng = len(lt))
leng <= 1 ? lt :
let(
pivot = lt[0],
before = [for(j = 1; j < leng; j = j + 1) if(_convex_hull_lt_than_by_xy(lt[j], pivot)) lt[j]],
after = [for(j = 1; j < leng; j = j + 1) if(!_convex_hull_lt_than_by_xy(lt[j], pivot)) lt[j]]
)
concat(_convex_hull_sort_by_xy(before), [pivot], _convex_hull_sort_by_xy(after));
// oa->ob ct_clk : greater than 0
function _convex_hull_impl_dir(o, a, b) =
let(
ox = o[0],
oy = o[1],
ax = a[0],
ay = a[1],
bx = b[0],
by = b[1]
)
(ax - ox) * (by - oy) - (ay - oy) * (bx - ox);
function _convex_hull_convex_hull_lower_m(chain, p, m) =
(m >= 2 && _convex_hull_impl_dir(chain[m - 2], chain[m - 1], p) <= 0) ? _convex_hull_convex_hull_lower_m(chain, p, m - 1) : m;
function _convex_hull_lower_chain(points, leng, chain, m, i) =
i == leng ? chain :
let(
current_m = _convex_hull_convex_hull_lower_m(chain, points[i], m)
)
_convex_hull_lower_chain(
points,
leng,
concat(slice(chain, 0, current_m), [points[i]]),
current_m + 1,
i + 1
);
function _convex_hull_upper_m(chain, p, m, t) =
(m >= t && _convex_hull_impl_dir(chain[m - 2], chain[m - 1], p) <= 0) ?
_convex_hull_upper_m(chain, p, m - 1, t) : m;
function _convex_hull_upper_chain(points, chain, m, t, i) =
i < 0 ? chain :
let(
current_m = _convex_hull_upper_m(chain, points[i], m, t)
)
_convex_hull_upper_chain(
points,
concat(slice(chain, 0, current_m), [points[i]]),
current_m + 1,
t,
i - 1
);

View File

@@ -0,0 +1,10 @@
use <experimental/convex_intersection.scad>;
function _convex_intersection_for(shapes, pre, leng, i = 2) =
i == leng ? pre :
let(r = convex_intersection(pre, shapes[i]))
r == [] ? []
: _convex_intersection_for(shapes,
r,
leng, i + 1
);

View File

@@ -0,0 +1,12 @@
use <experimental/intersection_p.scad>;
function _intersection_ps(shape, line_pts, epsilon) =
let(
leng = len(shape),
pts = concat(shape, [shape[0]])
)
[
for(i = [0:leng - 1])
let(p = intersection_p(line_pts, [pts[i], pts[i + 1]], epsilon = epsilon))
if(p != []) p
];

View File

@@ -0,0 +1,18 @@
use <util/slice.scad>;
use <experimental/sum.scad>;
function _m_determinant_sub(matrix, leng, fc) =
let(
init_sub_m = [for(i = [1:leng - 1]) matrix[i]],
sub_m = [for(i = [0:len(init_sub_m) - 1])
concat(slice(init_sub_m[i], 0, fc), slice(init_sub_m[i], fc + 1))
],
sgn = pow(-1, fc % 2)
)
sgn * matrix[0][fc] * _m_determinant(sub_m);
function _m_determinant(matrix) =
let(leng = len(matrix))
leng == 2 ? matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1] :
let(indices = [for(i = [0:leng - 1]) i])
sum([for(fc = indices) _m_determinant_sub(matrix, leng, fc)]);

View File

@@ -0,0 +1,191 @@
use <experimental/_impl/_mz_comm.scad>;
// create a starting maze for being visited later.
function starting_maze(rows, columns) = [
for(y = [1:rows])
for(x = [1:columns])
block(
x, y,
// all blocks have upper and right walls
3,
// unvisited
false
)
];
// find out the index of a block with the position (x, y)
function indexOf(x, y, maze, i = 0) =
i > len(maze) ? -1 : (
[get_x(maze[i]), get_y(maze[i])] == [x, y] ? i :
indexOf(x, y, maze, i + 1)
);
// is (x, y) visited?
function visited(x, y, maze) = maze[indexOf(x, y, maze)][3];
// is (x, y) visitable?
function visitable(x, y, maze, rows, columns) =
y > 0 && y <= rows && // y bound
x > 0 && x <= columns && // x bound
!visited(x, y, maze); // unvisited
// setting (x, y) as being visited
function set_visited(x, y, maze) = [
for(b = maze)
[x, y] == [get_x(b), get_y(b)] ?
[x, y, get_wall_type(b), true] : b
];
// 0(right), 1(upper), 2(left), 3(down)
_rand_dir_table = [
[0, 1, 2, 3],
[0, 1, 3, 2],
[0, 2, 1, 3],
[0, 2, 3, 1],
[0, 3, 1, 2],
[0, 3, 2, 1],
[1, 0, 2, 3],
[1, 0, 3, 2],
[1, 2, 0, 3],
[1, 2, 3, 0],
[1, 3, 0, 2],
[1, 3, 2, 0],
[2, 0, 1, 3],
[2, 0, 3, 1],
[2, 1, 0, 3],
[2, 1, 3, 0],
[2, 3, 0, 1],
[2, 3, 1, 0],
[3, 0, 1, 2],
[3, 0, 2, 1],
[3, 1, 0, 2],
[3, 1, 2, 0],
[3, 2, 0, 1],
[3, 2, 1, 0]
];
function rand_dirs() =
_rand_dir_table[round(rands(0, 24, 1)[0])];
// get x value by dir
_next_x_table = [1, 0, -1, 0];
function next_x(x, dir, columns, circular) =
let(nx = x + _next_x_table[dir])
circular ?
nx < 1 ? nx + columns : (
nx > columns ? nx % columns : nx
)
:
nx;
// get y value by dir
_next_y_table = [0, 1, 0, -1];
function next_y(y, dir, rows, circular) =
let(ny = y + _next_y_table[dir])
circular ?
ny < 1 ? ny + rows : (
ny > rows ? ny % rows : ny
)
:
ny;
// go right and carve the right wall
function go_right_from(x, y, maze) = [
for(b = maze) [get_x(b), get_y(b)] == [x, y] ? (
upper_right_wall(b) ?
[x, y, 1, visited(x, y, maze)] :
[x, y, 0, visited(x, y, maze)]
) : b
];
// go up and carve the upper wall
function go_up_from(x, y, maze) = [
for(b = maze) [get_x(b), get_y(b)] == [x, y] ? (
upper_right_wall(b) ?
[x, y, 2, visited(x, y, maze)] :
[x, y, 0, visited(x, y, maze)]
) : b
];
// go left and carve the right wall of the left block
function go_left_from(x, y, maze, columns) =
let(
x_minus_one = x - 1,
nx = x_minus_one < 1 ? x_minus_one + columns : x_minus_one
)
[
for(b = maze) [get_x(b), get_y(b)] == [nx, y] ? (
upper_right_wall(b) ?
[nx, y, 1, visited(nx, y, maze)] :
[nx, y, 0, visited(nx, y, maze)]
) : b
];
// go down and carve the upper wall of the down block
function go_down_from(x, y, maze, rows) = [
let(
y_minus_one = y - 1,
ny = y_minus_one < 1 ? y_minus_one + rows : y_minus_one
)
for(b = maze) [get_x(b), get_y(b)] == [x, ny] ? (
upper_right_wall(b) ?
[x, ny, 2, visited(x, ny, maze)] :
[x, ny, 0, visited(x, ny, maze)]
) : b
];
// 0(right), 1(upper), 2(left), 3(down)
function try_block(dir, x, y, maze, rows, columns) =
dir == 0 ? go_right_from(x, y, maze) :
dir == 1 ? go_up_from(x, y, maze) :
dir == 2 ? go_left_from(x, y, maze, columns) :
/*dir 3*/ go_down_from(x, y, maze, rows);
// find out visitable dirs from (x, y)
_visitable_dir_table = [0, 1, 2, 3];
function visitable_dirs_from(x, y, maze, rows, columns, x_circular, y_circular) = [
for(dir = _visitable_dir_table)
if(visitable(next_x(x, dir, columns, x_circular), next_y(y, dir, rows, y_circular), maze, rows, columns))
dir
];
// go maze from (x, y)
function go_maze(x, y, maze, rows, columns, x_circular = false, y_circular = false) =
// have visitable dirs?
len(visitable_dirs_from(x, y, maze, rows, columns, x_circular, y_circular)) == 0 ?
set_visited(x, y, maze) // road closed
: walk_around_from(
x, y,
rand_dirs(),
set_visited(x, y, maze),
rows, columns,
x_circular, y_circular
);
// try four directions
function walk_around_from(x, y, dirs, maze, rows, columns, x_circular, y_circular, i = 4) =
// all done?
i > 0 ?
// not yet
walk_around_from(x, y, dirs,
// try one direction
try_routes_from(x, y, dirs[4 - i], maze, rows, columns, x_circular, y_circular),
rows, columns,
x_circular, y_circular,
i - 1)
: maze;
function try_routes_from(x, y, dir, maze, rows, columns, x_circular, y_circular) =
// is the dir visitable?
visitable(next_x(x, dir, columns, x_circular), next_y(y, dir, rows, y_circular), maze, rows, columns) ?
// try the block
go_maze(
next_x(x, dir, columns, x_circular), next_y(y, dir, rows, y_circular),
try_block(dir, x, y, maze, rows, columns),
rows, columns,
x_circular, y_circular
)
// road closed so return maze directly
: maze;

View File

@@ -0,0 +1,14 @@
// NO_WALL = 0;
// UPPER_WALL = 1;
// RIGHT_WALL = 2;
// UPPER_RIGHT_WALL = 3;
function no_wall(block) = get_wall_type(block) == 0;
function upper_wall(block) = get_wall_type(block) == 1;
function right_wall(block) = get_wall_type(block) == 2;
function upper_right_wall(block) = get_wall_type(block) == 3;
function block(x, y, wall_type, visited) = [x, y, wall_type, visited];
function get_x(block) = block[0];
function get_y(block) = block[1];
function get_wall_type(block) = block[2];

View File

@@ -0,0 +1,56 @@
use <util/has.scad>;
function _mz_hamiltonian_upper(x, y) =
let(
nx = (x - 1) * 2,
ny = (y - 1) * 2
)
[[nx, ny + 2], [nx + 1, ny + 2], [nx + 2, ny + 2]];
function _mz_hamiltonian_right(x, y) =
let(
nx = (x - 1) * 2,
ny = (y - 1) * 2
)
[[nx + 2, ny + 2], [nx + 2, ny + 1], [nx + 2, ny]];
function _mz_hamiltonian_upper_right(x, y) =
let(
nx = (x - 1) * 2,
ny = (y - 1) * 2
)
[[nx, ny + 2], [nx + 1, ny + 2], [nx + 2, ny + 2], [nx + 2, ny + 1], [nx + 2, ny]];
function _mz_hamiltonian_corner_value(dots, x, y) =
let(
c1 = has(dots, [x, y], sorted = true) ? 1 : 0,
c2 = has(dots, [x, y + 1], sorted = true) ? 2 : 0,
c3 = has(dots, [x + 1, y + 1], sorted = true) ? 4 : 0,
c4 = has(dots, [x + 1, y], sorted = true) ? 8 : 0
)
c1 + c2 + c3 + c4;
_mz_hamiltonian_dir_table = [
[4, 0], [12, 0], [13, 0], // UP
[1, 1], [3, 1], [7, 1], // DOWN
[2, 2], [6, 2], [14, 2], // LEFT
[8, 3], [9, 3], [11, 3] // RIGHT
];
function _mz_hamiltonian_dir(cr_value) =
lookup(cr_value, _mz_hamiltonian_dir_table);
_mz_hamiltonian_nxt_offset = [
[0, 1], // UP
[0, -1], // DOWN
[-1, 0], // LEFT
[1, 0] // RIGHT
];
function _mz_hamiltonian_travel(dot_pts, p, leng, i = 0) =
i == leng ? [] :
let(
dir_i = _mz_hamiltonian_dir(_mz_hamiltonian_corner_value(dot_pts, p[0], p[1])),
nxt_p = p + _mz_hamiltonian_nxt_offset[dir_i]
)
concat(
[p], _mz_hamiltonian_travel(dot_pts, nxt_p, leng, i + 1)
);

View File

@@ -0,0 +1,9 @@
use <experimental/_impl/_mz_comm.scad>;
function block_walls(block, block_width) =
let(
loc = [get_x(block) - 1, get_y(block) - 1] * block_width,
upper = upper_wall(block) || upper_right_wall(block) ? [[0, block_width] + loc, [block_width, block_width] + loc] : [],
right = right_wall(block) || upper_right_wall(block) ? [[block_width, block_width] + loc, [block_width, 0] + loc] : []
)
concat(upper, right);

View File

@@ -0,0 +1,17 @@
use <experimental/_impl/_pnoise_comm.scad>;
function _pnoise1_grad1(hashvalue, x) = (hashvalue % 2 == 0) ? x : -x;
function _pnoise1_impl(x, seed) =
let(
xi = floor(x),
xf = x - xi,
u = _pnoise_fade(xf),
a = _pnoise_lookup_poise_table(seed + xi),
b = _pnoise_lookup_poise_table(seed + xi + 1)
)
_pnoise_lerp(
_pnoise1_grad1(a, xf),
_pnoise1_grad1(b, xf - 1),
u
);

View File

@@ -0,0 +1,36 @@
use <experimental/_impl/_pnoise_comm.scad>;
function _pnoise2_grad2(hashvalue, x, y) =
let(case = hashvalue % 8)
case == 0 ? y :
case == 1 ? x + y :
case == 2 ? x:
case == 3 ? x - y:
case == 4 ? -y:
case == 5 ? -x - y:
case == 6 ? -x : -x + y;
function _pnoise2(x, y, seed) =
let(
xi = floor(x),
yi = floor(y),
xf = x - xi,
yf = y - yi,
u = _pnoise_fade(xf),
v = _pnoise_fade(yf),
aa = _pnoise_lookup_poise_table(_pnoise_lookup_poise_table(seed + xi) + yi),
ba = _pnoise_lookup_poise_table(_pnoise_lookup_poise_table(seed + xi + 1) + yi),
ab = _pnoise_lookup_poise_table(_pnoise_lookup_poise_table(seed + xi) + yi + 1),
bb = _pnoise_lookup_poise_table(_pnoise_lookup_poise_table(seed + xi + 1) + yi + 1),
y1 = _pnoise_lerp(
_pnoise2_grad2(aa, xf, yf),
_pnoise2_grad2(ba, xf - 1, yf),
u
),
y2 = _pnoise_lerp(
_pnoise2_grad2(ab, xf, yf - 1),
_pnoise2_grad2(bb, xf - 1, yf - 1),
u
)
)
_pnoise_lerp(y1, y2, v);

View File

@@ -0,0 +1,96 @@
use <experimental/_impl/_pnoise_comm.scad>;
function _pnoise3_grad3(hashvalue, x, y, z) =
let(case = hashvalue % 16)
case == 0 ? x + y :
case == 1 ? -x + y :
case == 2 ? x - y:
case == 3 ? -x - y:
case == 4 ? x + z:
case == 5 ? -x + z:
case == 6 ? x - z :
case == 7 ? -x - z :
case == 8 ? y + z :
case == 9 ? -y + z :
case == 10 ? y - z :
case == 11 ? -y - z :
case == 12 ? y + x :
case == 13 ? -y + z :
case == 14 ? y - x : -y - z;
function _pnoise3(x, y, z, seed) =
let(
xi = floor(x),
yi = floor(y),
zi = floor(z),
xf = x - xi,
yf = y - yi,
zf = z - zi,
u = _pnoise_fade(xf),
v = _pnoise_fade(yf),
w = _pnoise_fade(zf),
aaa = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi) + yi
) + zi
),
aba = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi) + yi + 1
) + zi
),
aab = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi) + yi
) + zi + 1
),
abb = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi) + yi + 1
) + zi + 1
),
baa = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi + 1) + yi
) + zi
),
bba = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi + 1) + yi + 1
) + zi
),
bab = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi + 1) + yi
) + zi + 1
),
bbb = _pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(
_pnoise_lookup_poise_table(seed + xi + 1) + yi + 1
) + zi + 1
),
x1 = _pnoise_lerp(
_pnoise3_grad3(aaa, xf, yf, zf),
_pnoise3_grad3(baa, xf - 1, yf, zf),
u
),
x2 = _pnoise_lerp(
_pnoise3_grad3(aba, xf, yf - 1, zf),
_pnoise3_grad3(bba, xf - 1, yf - 1, zf),
u
),
y1 = _pnoise_lerp(x1, x2, v),
x3 = _pnoise_lerp(
_pnoise3_grad3(aab, xf, yf, zf - 1),
_pnoise3_grad3(bab, xf - 1, yf, zf - 1),
u
),
x4 = _pnoise_lerp(
_pnoise3_grad3(abb, xf, yf - 1, zf - 1),
_pnoise3_grad3(bbb, xf - 1, yf - 1, zf - 1),
u
),
y2 = _pnoise_lerp(x3, x4, v)
)
_pnoise_lerp(y1, y2, w);

View File

@@ -0,0 +1,8 @@
_pnoise_table = [151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180];
// Simplex
function _pnoise_fade(t) = pow(t, 3) * (t * (t * 6 - 15) + 10);
function _pnoise_lerp(a, b, t) = a + t * (b - a);
function _pnoise_lookup_poise_table(i) = _pnoise_table[i % 256];

View File

@@ -0,0 +1,29 @@
use <experimental/pnoise2.scad>;
INFINITY = 1e200 * 1e200;
function _pnoise_contour_step_sub(x, y, current_noise, seed, step_leng, step_angle, heading, min_delta, maybe_heading, close_noise, maybe_x, maybe_y, theta) =
theta >= heading + 90 ? [maybe_x, maybe_y, maybe_heading] :
let(
nx = x + step_leng * cos(theta),
ny = y + step_leng * sin(theta),
new_noise = pnoise2(nx, ny, seed),
delta = abs(new_noise - current_noise)
)
delta < min_delta ?
_pnoise_contour_step_sub(x, y, current_noise, seed, step_leng, step_angle, heading, delta, theta, new_noise, nx, ny, theta + step_angle) :
_pnoise_contour_step_sub(x, y, current_noise, seed, step_leng, step_angle, heading, min_delta, maybe_heading, close_noise, maybe_x, maybe_y, theta + step_angle);
function _pnoise_contour_step(x, y, heading, noise, seed, step_leng, step_angle) =
_pnoise_contour_step_sub(
x, y,
is_undef(noise) ? pnoise2(x, y, seed) : noise,
seed, step_leng, step_angle, heading, INFINITY, heading, -1, -1, -1, heading - 90
);
function _pnoise_contour(x, y, heading, noise, seed, steps, step_leng, step_angle, i = 0) =
i == steps ? [[x, y]] :
let(
xyh = _pnoise_contour_step(x, y, heading, noise, seed, step_leng, step_angle)
)
concat([[x, y]], _pnoise_contour(xyh[0], xyh[1], xyh[2], noise, seed, steps, step_leng, step_angle, i + 1));

View File

@@ -0,0 +1,35 @@
use <util/has.scad>;
function _px_surround_corner_value(pts, x, y) =
let(
c1 = has(pts, [x, y - 1], sorted = true) || has(pts, [x - 1, y - 1], sorted = true) ? 1 : 0,
c2 = has(pts, [x - 1, y], sorted = true) || has(pts, [x - 1, y + 1], sorted = true) ? 2 : 0,
c3 = has(pts, [x, y + 1], sorted = true) || has(pts, [x + 1, y + 1], sorted = true) ? 4 : 0,
c4 = has(pts, [x + 1, y], sorted = true) || has(pts, [x + 1, y - 1], sorted = true) ? 8 : 0
)
c1 + c2 + c3 + c4;
_px_surround_dir_table = [
[4, 0], [6, 0], [7, 0], // RIGHT
[8, 1], [12, 1], [14, 1], // DOWN
[2, 2], [3, 2], [11, 2], // UP
[1, 3], [9, 3], [13, 3] // LEFT
];
function _px_surround_dir(cr_value) =
lookup(cr_value, _px_surround_dir_table);
_px_surround_nxt_offset = [
[1, 0], // RIGHT
[0, -1], // DOWN
[0, 1], // UP
[-1, 0] // LEFT
];
function _px_surround_travel(pts, p, fst) =
let(
dir_i = _px_surround_dir(_px_surround_corner_value(pts, p[0], p[1])),
nxt_p = p + _px_surround_nxt_offset[dir_i]
)
nxt_p == fst ? [p] :
concat(
[p], _px_surround_travel(pts, nxt_p, fst)
);

View File

@@ -0,0 +1,22 @@
function _sf_square_surfaces(levels, thickness, depth, invert) =
let(
rows = len(levels),
columns = len(levels[0]),
offset_z = invert ? 0 : thickness - depth,
surface1 = [
for(r = [0:rows - 1])
[
for(c = [0:columns - 1])
let(lv = invert ? 255 - levels[rows - r - 1][c] : levels[rows - r - 1][c])
[c, r, lv / 255 * depth + offset_z]
]
],
surface2 = [
for(r = [0:rows - 1])
[
for(c = [0:columns - 1])
[c, r, 0]
]
]
)
[surface1, surface2];

View File

@@ -0,0 +1,2 @@
function _sum_impl(lt, leng, i = 0) =
i >= leng - 1 ? lt[i] : (lt[i] + _sum_impl(lt, leng, i + 1));

View File

@@ -0,0 +1,48 @@
use <experimental/tri_circumcircle.scad>;
// [max, min, min, max]
function _tri_delaunay_boundIndices(points, leng, indices, i = 0) =
let(
bounds = i < leng - 1 ? _tri_delaunay_boundIndices(points, leng, indices, i + 1)
: [undef, undef, undef, undef],
p0 = points[indices[0]],
p1 = points[indices[1]],
p2 = points[i],
c_circle = tri_circumcircle([p0, p1, p2]),
r = c_circle[1],
cside = c_circle == [] ? undef : cross(p1 - p0, c_circle[0] - p1),
pside = cross(p1 - p0, p2 - p1),
pdot = (p2 - p0) * (p2 - p1)
)
pdot < 0 && 0 == pside ? [-1, 1, 1, -1] :
c_circle == [] ? bounds :
pside > 0 && cside > 0 ? [bounds[0], bounds[1], bounds[2], bounds[3] ? min(bounds[3], r) : r] :
pside > 0 && cside <= 0 ? [bounds[0], bounds[1], bounds[2] ? max(bounds[2], r) : r, bounds[3]] :
pside <= 0 && cside > 0 ? [bounds[0], bounds[1] ? max(bounds[1],r) : r, bounds[2], bounds[3]] :
[bounds[0] ? min(bounds[0], r) : r, bounds[1], bounds[2], bounds[3]]; // is_undef(cside) also returns this
function _tri_delaunay_try_triangle(points, indices_boundIndices, i) =
let(
indices = indices_boundIndices[0],
bounds = indices_boundIndices[1],
p0 = points[indices[0]],
p1 = points[indices[1]],
p2 = points[i],
c_circle = tri_circumcircle([p0, p1, p2]),
r = c_circle[1],
cside = c_circle == [] ? undef : cross(p1 - p0, c_circle[0] - p1)
)
c_circle == [] ? undef :
(cside > 1 && (!bounds[2] && (!bounds[1] || r>=bounds[1]) && (!bounds[3] || r<=bounds[3]))) ||
(cside <= 1 && (!bounds[1] && (!bounds[2] || r>=bounds[2]) && (!bounds[0] || r<=bounds[0]))) ? concat(indices, [i]) :
undef;
function _tri_delaunay_triangleIndices(points, leng, indices_boundIndices, triangles, i = 0) =
let(
indices = indices_boundIndices[0],
newtriangle = _tri_delaunay_try_triangle(points, indices_boundIndices, i),
newtriangles = newtriangle ? concat(triangles, [newtriangle]) : triangles
)
i <= indices[1] ? _tri_delaunay_triangleIndices(points, leng, indices_boundIndices, [], indices[1] + 1) :
i< leng - 1 ? _tri_delaunay_triangleIndices(points, leng, indices_boundIndices, newtriangles,i + 1) :
newtriangles;

View File

@@ -0,0 +1,92 @@
function _triangulate_in_triangle(p0, p1, p2, p) =
let(
v0 = p0 - p,
v1 = p1 - p,
v2 = p2 - p,
c0 = cross(v0, v1),
c1 = cross(v1, v2),
c2 = cross(v2, v0)
)
(c0 > 0 && c1 > 0 && c2 > 0) || (c0 < 0 && c1 < 0 && c2 < 0);
function _triangulate_snipable(shape_pts, u, v, w, n, indices, epsilon = 0.0001) =
let(
a = shape_pts[indices[u]],
b = shape_pts[indices[v]],
c = shape_pts[indices[w]],
ax = a[0],
ay = a[1],
bx = b[0],
by = b[1],
cx = c[0],
cy = c[1],
determinant = cross([bx - ax, by - ay], [cx - ax, cy - ay])
)
epsilon > determinant ?
false : _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices);
function _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices, p = 0) =
p == n ? true : (
((p == u) || (p == v) || (p == w)) ? _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices, p + 1) : (
_triangulate_in_triangle(a, b, c, shape_pts[indices[p]]) ?
false : _triangulate_snipable_sub(shape_pts, n, u, v, w, a, b, c, indices, p + 1)
)
);
// remove the elem at idx v from indices
function _triangulate_remove_v(indices, v, num_of_vertices) =
let(
nv_minuns_one = num_of_vertices - 1
)
v == 0 ? [for(i = 1; i <= nv_minuns_one; i = i + 1) indices[i]] : (
v == nv_minuns_one ? [for(i = 0; i < v; i = i + 1) indices[i]] : concat(
[for(i = 0; i < v; i = i + 1) indices[i]],
[for(i = v + 1; i <= nv_minuns_one; i = i + 1) indices[i]]
)
);
function _triangulate_zero_or_value(num_of_vertices, value) =
num_of_vertices <= value ? 0 : value;
function _triangulate_real_triangulate_sub(shape_pts, collector, indices, v, num_of_vertices, count, epsilon) =
let(
// idxes of three consecutive vertices
u = _triangulate_zero_or_value(num_of_vertices, v),
vi = _triangulate_zero_or_value(num_of_vertices, u + 1),
w = _triangulate_zero_or_value(num_of_vertices, vi + 1)
)
_triangulate_snipable(shape_pts, u, vi, w, num_of_vertices, indices, epsilon) ?
_triangulate_snip(shape_pts, collector, indices, u, vi, w, num_of_vertices, count, epsilon) :
_triangulate_real_triangulate(shape_pts, collector, indices, vi, num_of_vertices, count, epsilon);
function _triangulate_snip(shape_pts, collector, indices, u, v, w, num_of_vertices, count, epsilon) =
let(
a = indices[u],
b = indices[v],
c = indices[w],
new_nv = num_of_vertices - 1
)
_triangulate_real_triangulate(
shape_pts,
concat(collector, [[a, b, c]]),
_triangulate_remove_v(indices, v, num_of_vertices),
v,
new_nv,
2 * new_nv,
epsilon
);
function _triangulate_real_triangulate(shape_pts, collector, indices, v, num_of_vertices, count, epsilon) =
count <= 0 ? [] : (
num_of_vertices == 2 ?
collector : _triangulate_real_triangulate_sub(shape_pts, collector, indices, v, num_of_vertices, count - 1, epsilon)
);
function _tri_ear_clipping_impl(shape_pts, epsilon) =
let(
num_of_vertices = len(shape_pts),
v = num_of_vertices - 1,
indices = [for(vi = 0; vi <= v; vi = vi + 1) vi],
count = 2 * num_of_vertices
)
num_of_vertices < 3 ? [] : _triangulate_real_triangulate(shape_pts, [], indices, v, num_of_vertices, count, epsilon);

View File

@@ -0,0 +1,25 @@
use <rotate_p.scad>;
function _default_region_size(points) =
let(
xs = [for(p = points) p[0]],
ys = [for(p = points) abs(p[1])]
)
max([(max(xs) - min(xs) / 2), (max(ys) - min(ys)) / 2]);
function _cells_lt_before_intersection(shape, size, points, pt) =
let(half_region_size = 0.5 * size)
[
for(p = points)
if(pt != p)
let(
v = p - pt,
offset = (pt + p) / 2 - v / norm(v) * half_region_size,
a = atan2(v[1], v[0])
)
[
for(sp = shape)
rotate_p(sp, a) + offset
]
];

View File

@@ -0,0 +1,37 @@
function _voronoi2d_lines_tri_vertex(tri, p) =
tri[0] == p || tri[1] == p || tri[2] == p;
function _voronoi2d_lines_tri_same(tri1, tri2) =
_voronoi2d_lines_tri_vertex(tri1, tri2[0]) && _voronoi2d_lines_tri_vertex(tri1, tri2[1]) && _voronoi2d_lines_tri_vertex(tri1, tri2[2]);
function _voronoi2d_lines_tri_coedge(tri1, tri2) =
let(
n1 = _voronoi2d_lines_tri_vertex(tri2, tri1[0]) ? 1 : 0,
n2 = _voronoi2d_lines_tri_vertex(tri2, tri1[1]) ? 1 : 0,
n = n1 + n2
)
(n > 1) || ((n + (_voronoi2d_lines_tri_vertex(tri2, tri1[2]) ? 1 : 0)) > 1);
function _voronoi2d_lines_tri_neighbors_impl(tris, me, leng, nbrs = [], i = 0) =
len(nbrs) == 3 || i == leng ? nbrs :
!_voronoi2d_lines_tri_same(me, tris[i]) && _voronoi2d_lines_tri_coedge(me, tris[i]) ? _voronoi2d_lines_tri_neighbors_impl(tris, me, leng, concat(nbrs, [tris[i]]), i + 1) :
_voronoi2d_lines_tri_neighbors_impl(tris, me, leng, nbrs, i + 1);
function _voronoi2d_lines_tri_neighbors(tris, me) =
_voronoi2d_lines_tri_neighbors_impl(tris, me, len(tris));
function _voronoi2d_lines_line_has(line, p) =
p == line[0] || p == line[1];
function _voronoi2d_lines_same_line(line1, line2) =
_voronoi2d_lines_line_has(line1, line2[0]) && _voronoi2d_lines_line_has(line1, line2[1]);
function _voronoi2d_lines_lines_has(lines, line, leng, i = 0) =
i == leng ? false :
_voronoi2d_lines_same_line(lines[i], line) ? true : _voronoi2d_lines_lines_has(lines, line, leng, i + 1);
function _voronoi2d_lines_dedup_lines_impl(src, dest, leng, i = 0) =
i == leng ? dest :
_voronoi2d_lines_lines_has(dest, src[i], len(dest)) ? _voronoi2d_lines_dedup_lines_impl(src, dest, leng, i + 1) : _voronoi2d_lines_dedup_lines_impl(src, concat(dest, [src[i]]), leng, i + 1);
function _voronoi2d_lines_dedup_lines(lines) = _voronoi2d_lines_dedup_lines_impl(lines, [], len(lines));

View File

@@ -0,0 +1,3 @@
use <experimental/sum.scad>;
function convex_center_p(points) = sum(points) / len(points);

View File

@@ -0,0 +1,10 @@
use <util/sort.scad>;
use <experimental/convex_center_p.scad>;
function convex_ct_clk_order(points) =
let(
cpt = convex_center_p(points),
pts_as = [for(p = points) [p, atan2(p[1] - cpt[1], p[0] - cpt[0])]],
sorted = sort(pts_as, by = "idx", idx = 1)
)
[for(v = sorted) v[0]];

View File

@@ -0,0 +1,11 @@
use <experimental/_impl/_convex_hull_impl.scad>;
function convex_hull(points) =
let(
sorted = _convex_hull_sort_by_xy(points),
leng = len(sorted),
lwr_ch = _convex_hull_lower_chain(sorted, leng, [], 0, 0),
leng_lwr_ch = len(lwr_ch),
chain = _convex_hull_upper_chain(sorted, lwr_ch, leng_lwr_ch, leng_lwr_ch + 1, leng - 2)
)
[for(i = [0:len(chain) - 2]) chain[i]];

View File

@@ -0,0 +1,18 @@
use <in_shape.scad>;
use <experimental/_impl/_convex_intersection_impl.scad>;
use <experimental/convex_ct_clk_order.scad>;
function convex_intersection(shape1, shape2, epsilon = 0.0001) =
(shape1 == [] || shape2 == []) ? [] :
let(
leng = len(shape1),
pts = concat(shape1, [shape1[0]])
)
convex_ct_clk_order(
concat(
[for(p = shape1) if(in_shape(shape2, p, include_edge = true)) p],
[for(p = shape2) if(in_shape(shape1, p, include_edge = true)) p],
[for(i = [0:leng - 1]) each _intersection_ps(shape2, [pts[i], pts[i + 1]], epsilon)]
)
);

View File

@@ -0,0 +1,10 @@
use <experimental/convex_intersection.scad>;
use <experimental/_impl/_convex_intersection_for_impl.scad>;
function convex_intersection_for(shapes) =
let(leng = len(shapes))
_convex_intersection_for(
shapes,
convex_intersection(shapes[0], shapes[1]),
leng
);

View File

@@ -0,0 +1,15 @@
use <hull_polyline2d.scad>;
use <experimental/tri_bisectors.scad>;
use <experimental/convex_hull.scad>;
use <shape_starburst.scad>;
xs = rands(-20, 20, 150);
ys = rands(-20, 20, 150);
points = [for(i = [0:len(xs) - 1]) [xs[i], ys[i]]];
for(p = points) {
translate(p)
sphere(.5);
}
hull_shape = convex_hull(points);
#hull_polyline2d(concat(hull_shape, [hull_shape[0]]), width = 1);

View File

@@ -0,0 +1,18 @@
use <hull_polyline2d.scad>;
use <rotate_p.scad>;
use <shape_square.scad>;
use <experimental/convex_intersection.scad>;
sq1 = shape_square(size = 10, corner_r = 3, $fn = 12);
sq2 = [for(p = sq1) rotate_p(p + [5, 0], 45)];
sq3 = [for(p = sq1) rotate_p(p + [5, 0], -45)];
intersection1 = convex_intersection(sq1, sq2);
intersection2 = convex_intersection(intersection1, sq3);
polygon(intersection1);
#polygon(intersection2);
%polygon(sq1);
%polygon(sq2);
%polygon(sq3);

View File

@@ -0,0 +1,31 @@
use <shape_starburst.scad>;
use <circle_path.scad>;
use <rotate_p.scad>;
use <experimental/loft.scad>;
sects = [
for(i = 10; i >= 4; i = i - 1)
[
for(p = shape_starburst(15, 12, i % 2 == 1 ? i : i - 1)) rotate_p([p[0], p[1], 5 * (i - 4)], i * 10)
]
];
loft(sects, slices = 3);
translate([30, 0, 0])
difference() {
loft(
[
[for(p = circle_path(10, $fn = 3)) [p[0], p[1], 15]],
[for(p = circle_path(15, $fn = 24)) [p[0], p[1], 0]]
],
slices = 4
);
loft(
[
[for(p = circle_path(8, $fn = 3)) [p[0], p[1], 15.1]],
[for(p = circle_path(13, $fn = 24)) [p[0], p[1], -0.1]]
],
slices = 4
);
}

View File

@@ -0,0 +1,111 @@
use <experimental/sf_bend.scad>;
radius = 50;
thickness = 10;
depth = 8;
angle = 180;
invert = false;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
];
sf_bend(levels, radius, thickness, depth, angle, invert);

View File

@@ -0,0 +1,112 @@
use <experimental/sf_ring.scad>;
radius = 50;
thickness = 10;
depth = 5;
angle = 90;
twist = 90;
invert = true;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
];
sf_ring(levels, radius, thickness, depth, angle, twist, invert);

View File

@@ -0,0 +1,111 @@
use <experimental/sf_sphere.scad>;
radius = 50;
thickness = 10;
depth = 5;
angle = [180, 180];
invert = false;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
];
sf_sphere(levels, radius, thickness, depth, angle, invert);

View File

@@ -0,0 +1,109 @@
use <experimental/sf_square.scad>;
thicnkess = 10;
depth = 5;
invert = false;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
];
sf_square(levels, thicnkess, depth, invert);

View File

@@ -0,0 +1,112 @@
use <experimental/sf_torus.scad>;
radius = [100, 50];
thickness = 10;
depth = 5;
angle = [180, 180];
twist = -90;
invert = false;
levels = [
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 219, 255, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 85, 62, 173, 255, 255, 222, 154, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147, 16, 73, 166, 190, 8, 17, 99, 97, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 151, 11, 26, 153, 111, 61, 58, 40, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 137, 73, 74, 154, 131, 24, 18, 95, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 153, 162, 152, 97, 82, 120, 155, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 146, 146, 131, 118, 96, 75, 46, 46, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 185, 139, 130, 117, 99, 78, 53, 38, 64, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 108, 102, 95, 74, 60, 38, 47, 89, 85, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 101, 77, 67, 52, 38, 48, 82, 109, 73, 48, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 70, 40, 42, 57, 84, 107, 92, 62, 38, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 100, 89, 102, 115, 91, 72, 44, 47, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 112, 114, 102, 86, 68, 51, 41, 66, 101, 94, 140, 194, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 93, 80, 65, 51, 36, 59, 97, 100, 69, 49, 110, 93, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 70, 54, 47, 45, 69, 96, 110, 91, 58, 40, 92, 76, 70, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 222, 141, 104, 111, 140, 144, 109, 77, 41, 49, 87, 64, 42, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 227, 223, 224, 228, 227, 220, 166, 129, 116, 46, 74, 89, 42, 40, 155, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 224, 224, 224, 227, 223, 169, 130, 129, 129, 88, 100, 58, 37, 62, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 226, 226, 226, 226, 216, 134, 130, 127, 130, 118, 76, 42, 54, 92, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 223, 228, 225, 228, 221, 182, 131, 131, 129, 128, 112, 41, 56, 95, 182, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 212, 209, 212, 220, 225, 225, 153, 129, 125, 127, 130, 120, 86, 118, 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 176, 193, 191, 198, 201, 209, 134, 129, 128, 128, 127, 128, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 149, 152, 166, 168, 174, 181, 130, 128, 131, 131, 123, 128, 125, 189, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 116, 123, 128, 138, 140, 145, 136, 128, 124, 131, 128, 130, 131, 133, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 184, 224, 178, 158, 145, 108, 124, 131, 125, 130, 131, 129, 127, 130, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 221, 226, 224, 222, 102, 100, 128, 131, 125, 127, 128, 128, 127, 129, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 224, 227, 224, 194, 125, 117, 122, 128, 128, 124, 130, 128, 126, 129, 132, 145, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 228, 224, 169, 128, 129, 95, 92, 127, 132, 124, 130, 130, 123, 127, 129, 172, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 227, 226, 227, 222, 136, 128, 122, 88, 83, 106, 128, 127, 133, 123, 132, 130, 128, 129, 185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 223, 219, 219, 216, 205, 199, 196, 188, 179, 192, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 225, 226, 225, 207, 131, 129, 124, 80, 80, 82, 103, 131, 126, 126, 131, 128, 129, 128, 130, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 224, 224, 224, 224, 223, 219, 215, 205, 201, 194, 183, 176, 158, 162, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 224, 228, 174, 128, 126, 207, 178, 89, 84, 84, 115, 129, 126, 125, 127, 127, 127, 127, 134, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 222, 227, 225, 222, 227, 227, 225, 223, 224, 223, 220, 215, 208, 196, 192, 179, 171, 168, 146, 138, 195, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 225, 225, 229, 144, 132, 132, 255, 255, 164, 77, 82, 83, 114, 129, 128, 129, 131, 129, 126, 124, 142, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 222, 226, 225, 222, 224, 223, 225, 223, 222, 223, 224, 226, 221, 214, 209, 204, 192, 188, 179, 160, 160, 144, 134, 137, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 226, 227, 211, 131, 130, 149, 255, 255, 255, 140, 79, 85, 82, 127, 126, 126, 129, 129, 128, 127, 124, 154, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 221, 219, 219, 218, 220, 222, 222, 223, 223, 220, 223, 223, 219, 217, 203, 195, 191, 183, 174, 160, 150, 135, 128, 113, 186, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 224, 226, 187, 132, 131, 186, 255, 255, 255, 255, 122, 80, 85, 89, 124, 131, 127, 128, 130, 127, 129, 131, 156, 255, 255, 255, 255, 255, 225, 221, 218, 213, 207, 195, 188, 190, 197, 194, 195, 211, 219, 220, 223, 223, 218, 210, 208, 201, 189, 182, 174, 162, 153, 147, 129, 114, 97, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 227, 225, 160, 131, 127, 255, 255, 255, 255, 255, 255, 118, 81, 77, 91, 122, 129, 134, 124, 130, 130, 129, 127, 192, 255, 255, 255, 229, 219, 205, 181, 181, 173, 178, 179, 176, 176, 174, 169, 162, 172, 192, 214, 218, 218, 217, 204, 201, 191, 181, 175, 165, 159, 145, 131, 118, 106, 87, 181, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 228, 223, 222, 137, 124, 143, 255, 255, 255, 255, 255, 255, 223, 93, 81, 79, 101, 125, 127, 129, 129, 125, 134, 130, 122, 208, 255, 218, 201, 178, 177, 180, 172, 186, 173, 180, 177, 183, 178, 181, 183, 177, 175, 143, 168, 219, 200, 205, 197, 189, 187, 176, 164, 152, 150, 134, 125, 106, 93, 73, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 223, 228, 220, 196, 131, 129, 172, 255, 255, 255, 255, 255, 255, 255, 221, 91, 80, 84, 97, 129, 127, 126, 127, 126, 128, 131, 130, 217, 184, 180, 152, 123, 125, 185, 174, 181, 179, 180, 175, 181, 173, 183, 175, 177, 178, 153, 142, 181, 209, 197, 190, 181, 174, 166, 158, 144, 134, 120, 110, 90, 86, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 226, 229, 224, 168, 126, 131, 217, 255, 255, 255, 255, 255, 255, 255, 255, 221, 81, 81, 82, 105, 128, 127, 130, 126, 131, 129, 175, 184, 173, 99, 92, 133, 136, 100, 160, 179, 179, 177, 183, 177, 182, 177, 177, 180, 179, 179, 165, 145, 137, 189, 194, 181, 167, 166, 156, 142, 134, 127, 108, 95, 76, 62, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 255, 220, 228, 225, 137, 133, 132, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 83, 80, 84, 108, 131, 129, 128, 128, 134, 180, 172, 180, 158, 170, 175, 175, 154, 87, 176, 177, 179, 177, 173, 177, 136, 132, 180, 175, 168, 171, 164, 132, 121, 180, 181, 168, 161, 153, 147, 132, 116, 110, 95, 85, 60, 57, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 223, 227, 220, 206, 132, 128, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 87, 79, 80, 114, 126, 133, 131, 173, 181, 182, 174, 172, 186, 170, 185, 180, 72, 180, 177, 181, 177, 110, 99, 123, 138, 106, 104, 159, 163, 158, 159, 122, 124, 175, 165, 158, 148, 142, 129, 120, 107, 90, 78, 66, 51, 113, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 225, 224, 226, 182, 129, 131, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 83, 83, 84, 122, 124, 153, 176, 178, 180, 174, 184, 164, 174, 180, 174, 111, 180, 176, 170, 99, 154, 174, 181, 184, 169, 173, 98, 155, 161, 150, 151, 116, 112, 158, 156, 145, 133, 125, 119, 102, 89, 81, 58, 55, 85, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 223, 225, 150, 127, 131, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 209, 117, 80, 82, 89, 121, 180, 179, 180, 176, 158, 72, 69, 61, 83, 184, 175, 173, 181, 175, 148, 178, 177, 174, 175, 177, 169, 156, 119, 159, 151, 145, 141, 95, 100, 151, 142, 133, 122, 114, 97, 87, 74, 58, 53, 72, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 225, 226, 218, 133, 129, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 153, 112, 83, 78, 124, 175, 182, 179, 173, 78, 89, 176, 163, 51, 128, 178, 179, 178, 177, 175, 180, 176, 176, 175, 170, 165, 162, 157, 151, 147, 139, 140, 122, 70, 134, 136, 132, 118, 107, 94, 83, 71, 54, 54, 79, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 223, 224, 193, 131, 133, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 115, 127, 131, 129, 151, 178, 179, 172, 167, 118, 175, 169, 100, 58, 78, 179, 177, 177, 162, 96, 59, 69, 61, 99, 163, 161, 157, 155, 147, 144, 138, 130, 128, 100, 83, 127, 123, 114, 102, 90, 78, 66, 54, 56, 79, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 223, 225, 160, 126, 130, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 85, 67, 87, 87, 175, 177, 183, 180, 179, 186, 175, 77, 27, 28, 81, 176, 183, 176, 80, 81, 178, 164, 160, 48, 75, 159, 158, 149, 144, 138, 133, 128, 124, 117, 77, 90, 117, 106, 96, 86, 73, 59, 51, 68, 80, 113, 225, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 225, 227, 223, 222, 139, 128, 133, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 195, 140, 114, 169, 178, 182, 180, 173, 178, 180, 66, 34, 37, 131, 172, 178, 151, 62, 169, 168, 149, 66, 47, 31, 149, 145, 143, 139, 134, 127, 128, 115, 111, 101, 53, 114, 100, 91, 79, 68, 54, 53, 66, 89, 114, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 223, 224, 205, 132, 130, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 178, 176, 177, 180, 176, 181, 154, 83, 111, 177, 174, 183, 172, 165, 173, 174, 83, 23, 15, 30, 135, 148, 140, 134, 131, 124, 120, 112, 105, 98, 52, 94, 96, 84, 72, 60, 53, 61, 77, 95, 118, 214, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 225, 227, 175, 128, 129, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 31, 145, 173, 183, 178, 179, 174, 181, 177, 177, 176, 181, 178, 175, 173, 167, 161, 166, 100, 33, 25, 55, 142, 143, 134, 133, 123, 120, 115, 107, 104, 93, 65, 59, 88, 77, 66, 54, 53, 67, 80, 107, 131, 212, 255, 222, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 225, 227, 221, 147, 126, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 77, 4, 11, 45, 166, 167, 177, 179, 177, 176, 179, 180, 173, 172, 167, 174, 167, 166, 171, 156, 158, 106, 88, 141, 137, 131, 128, 127, 118, 113, 111, 101, 98, 93, 73, 52, 78, 68, 59, 53, 60, 74, 90, 111, 131, 202, 82, 4, 12, 36, 99, 148, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 226, 225, 222, 208, 134, 129, 150, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 29, 7, 2, 4, 17, 173, 175, 165, 168, 174, 172, 173, 170, 172, 170, 173, 162, 162, 160, 153, 156, 147, 148, 144, 133, 138, 130, 126, 115, 118, 109, 102, 97, 91, 81, 77, 76, 74, 60, 50, 56, 69, 84, 100, 116, 151, 38, 3, 1, 1, 1, 2, 2, 3, 18, 45, 113, 163, 222, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 219, 226, 226, 188, 129, 132, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 9, 2, 1, 2, 2, 9, 149, 188, 187, 167, 168, 165, 167, 166, 164, 162, 162, 161, 157, 153, 150, 147, 143, 141, 136, 131, 126, 124, 116, 114, 108, 101, 96, 91, 84, 79, 73, 85, 66, 53, 51, 65, 76, 93, 109, 130, 157, 18, 4, 1, 3, 1, 2, 1, 5, 1, 3, 9, 0, 9, 38, 227, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 225, 228, 223, 155, 131, 130, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 39, 1, 1, 5, 3, 3, 7, 3, 92, 174, 188, 196, 192, 171, 157, 159, 159, 158, 155, 153, 150, 148, 144, 139, 135, 132, 130, 125, 120, 118, 110, 107, 101, 95, 90, 84, 77, 70, 64, 78, 57, 53, 61, 72, 85, 108, 124, 140, 135, 11, 7, 0, 0, 0, 1, 3, 1, 3, 1, 1, 6, 1, 7, 107, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 229, 226, 218, 134, 128, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 7, 2, 5, 3, 1, 2, 1, 3, 11, 40, 160, 178, 175, 188, 189, 190, 184, 172, 159, 150, 145, 143, 142, 140, 135, 129, 126, 123, 118, 113, 109, 104, 100, 94, 89, 84, 78, 70, 64, 59, 72, 57, 60, 70, 85, 99, 112, 128, 158, 90, 2, 8, 0, 0, 1, 2, 1, 1, 1, 0, 0, 31, 48, 0, 51, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 225, 226, 223, 199, 132, 125, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 53, 0, 4, 2, 3, 3, 3, 1, 7, 1, 5, 8, 122, 159, 170, 175, 174, 176, 176, 175, 175, 174, 169, 159, 150, 141, 136, 130, 125, 120, 114, 107, 103, 99, 94, 87, 82, 78, 71, 62, 57, 53, 56, 60, 76, 81, 91, 108, 127, 151, 177, 25, 9, 4, 0, 5, 1, 2, 1, 0, 5, 7, 42, 104, 145, 47, 12, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 227, 224, 227, 167, 131, 130, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148, 6, 5, 4, 1, 1, 2, 0, 1, 1, 0, 4, 7, 6, 59, 139, 154, 160, 168, 168, 167, 165, 165, 166, 164, 158, 153, 150, 148, 143, 137, 131, 124, 117, 112, 105, 100, 93, 87, 80, 70, 61, 56, 53, 56, 69, 80, 92, 111, 124, 144, 160, 116, 11, 3, 0, 0, 0, 1, 1, 5, 3, 4, 103, 98, 177, 146, 79, 5, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 222, 228, 225, 225, 141, 129, 140, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 5, 2, 5, 1, 2, 4, 2, 1, 1, 1, 4, 2, 4, 4, 21, 139, 138, 149, 148, 152, 154, 156, 155, 152, 150, 147, 144, 141, 139, 136, 131, 125, 119, 112, 107, 98, 93, 86, 79, 69, 59, 52, 50, 55, 70, 86, 92, 106, 122, 133, 155, 164, 30, 8, 3, 1, 0, 3, 2, 0, 5, 12, 134, 151, 95, 83, 88, 81, 20, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 222, 227, 225, 202, 131, 129, 164, 255, 255, 255, 255, 255, 255, 255, 255, 56, 5, 2, 4, 0, 1, 7, 0, 1, 7, 1, 5, 3, 4, 4, 39, 203, 188, 116, 134, 136, 137, 140, 142, 141, 139, 137, 135, 134, 128, 126, 122, 117, 112, 107, 100, 94, 88, 81, 74, 67, 59, 54, 55, 61, 72, 79, 91, 107, 120, 135, 154, 160, 30, 14, 1, 1, 0, 5, 0, 5, 6, 17, 190, 184, 114, 128, 111, 78, 74, 8, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 226, 224, 227, 224, 176, 130, 129, 194, 255, 255, 255, 255, 255, 255, 255, 141, 6, 1, 3, 2, 3, 4, 2, 2, 1, 2, 4, 1, 3, 5, 103, 223, 212, 197, 133, 105, 121, 125, 126, 127, 127, 127, 126, 123, 120, 119, 117, 111, 105, 100, 95, 87, 81, 77, 70, 61, 55, 52, 53, 63, 75, 85, 93, 103, 121, 133, 143, 108, 11, 8, 3, 4, 1, 1, 2, 1, 4, 49, 190, 203, 170, 108, 193, 164, 118, 45, 48, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, 224, 219, 149, 127, 129, 255, 255, 255, 255, 255, 255, 255, 255, 13, 3, 1, 3, 5, 1, 1, 1, 1, 4, 2, 1, 3, 6, 153, 213, 202, 194, 177, 127, 80, 101, 110, 106, 115, 115, 112, 113, 108, 108, 105, 100, 94, 92, 89, 84, 77, 72, 65, 55, 52, 56, 52, 65, 78, 86, 95, 109, 120, 122, 93, 23, 7, 5, 1, 3, 0, 0, 3, 2, 5, 57, 208, 201, 179, 136, 151, 227, 193, 130, 55, 85, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 223, 225, 217, 130, 131, 153, 255, 255, 255, 255, 255, 255, 255, 131, 1, 2, 1, 0, 0, 2, 0, 8, 0, 0, 0, 3, 14, 62, 133, 179, 186, 164, 151, 105, 118, 89, 81, 95, 96, 94, 97, 103, 94, 99, 92, 87, 82, 77, 75, 67, 61, 56, 53, 48, 50, 65, 69, 84, 87, 102, 101, 74, 42, 9, 6, 9, 0, 2, 4, 0, 0, 0, 1, 1, 39, 190, 187, 180, 159, 109, 169, 255, 201, 112, 36, 163, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 197, 210, 197, 164, 255, 255, 255, 255, 255, 255, 255, 42, 6, 4, 0, 3, 1, 2, 2, 0, 4, 3, 2, 16, 87, 154, 134, 157, 150, 144, 112, 80, 120, 175, 102, 72, 76, 79, 81, 77, 79, 75, 77, 72, 68, 62, 61, 56, 55, 53, 53, 66, 72, 79, 84, 51, 22, 10, 6, 1, 3, 4, 2, 5, 1, 1, 0, 0, 2, 6, 2, 39, 96, 139, 163, 152, 127, 80, 169, 215, 180, 100, 9, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 211, 183, 151, 191, 255, 255, 255, 255, 220, 10, 1, 1, 1, 3, 0, 1, 0, 2, 0, 1, 6, 80, 181, 165, 141, 135, 116, 112, 92, 64, 117, 99, 109, 66, 58, 56, 65, 60, 63, 63, 62, 58, 55, 53, 52, 53, 58, 62, 69, 74, 84, 81, 22, 2, 6, 2, 2, 3, 1, 3, 0, 0, 1, 1, 0, 1, 3, 5, 97, 117, 176, 149, 134, 121, 97, 71, 125, 163, 122, 55, 37, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 192, 156, 117, 255, 255, 255, 255, 158, 1, 0, 0, 1, 0, 0, 2, 2, 1, 2, 0, 35, 113, 89, 81, 88, 108, 74, 69, 61, 75, 120, 138, 104, 112, 15, 56, 55, 53, 54, 51, 53, 56, 56, 60, 60, 66, 74, 82, 89, 94, 73, 14, 6, 8, 2, 2, 4, 1, 4, 0, 6, 7, 1, 5, 0, 1, 18, 135, 103, 143, 117, 123, 104, 86, 67, 74, 129, 80, 98, 15, 138, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 187, 160, 106, 142, 255, 255, 255, 104, 1, 5, 1, 2, 0, 3, 1, 0, 0, 5, 3, 71, 154, 123, 102, 67, 88, 78, 79, 97, 117, 148, 173, 105, 5, 8, 64, 185, 121, 77, 72, 71, 73, 77, 82, 86, 91, 96, 100, 109, 64, 9, 5, 4, 1, 2, 1, 2, 0, 2, 5, 0, 0, 2, 1, 2, 37, 201, 144, 99, 80, 69, 86, 84, 72, 77, 109, 148, 153, 53, 20, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 201, 181, 144, 96, 117, 255, 255, 255, 79, 4, 1, 1, 5, 0, 1, 0, 2, 0, 5, 2, 128, 207, 186, 153, 106, 45, 20, 32, 74, 81, 31, 9, 2, 7, 88, 255, 255, 255, 199, 146, 107, 99, 99, 95, 107, 108, 117, 117, 85, 6, 3, 2, 1, 5, 2, 0, 0, 1, 1, 4, 0, 1, 4, 4, 77, 202, 182, 104, 169, 144, 120, 79, 94, 84, 95, 121, 120, 28, 0, 127, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 204, 187, 163, 124, 79, 139, 255, 255, 255, 18, 1, 4, 1, 0, 2, 4, 1, 0, 5, 0, 16, 178, 255, 219, 185, 115, 71, 1, 0, 1, 3, 3, 3, 19, 148, 255, 255, 255, 255, 255, 255, 255, 224, 203, 172, 175, 159, 163, 155, 17, 4, 5, 0, 0, 0, 0, 1, 0, 4, 2, 1, 2, 0, 2, 83, 216, 199, 160, 113, 217, 191, 151, 86, 4, 1, 0, 2, 1, 5, 48, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 213, 255, 255, 255, 255, 255, 255, 225, 212, 198, 181, 160, 127, 89, 77, 193, 255, 255, 255, 19, 1, 0, 0, 1, 0, 5, 0, 1, 3, 0, 34, 201, 255, 255, 189, 108, 38, 1, 1, 2, 0, 2, 52, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5, 0, 1, 6, 128, 208, 196, 179, 132, 133, 255, 212, 158, 81, 3, 0, 1, 0, 4, 69, 214, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 208, 193, 199, 208, 206, 205, 198, 193, 180, 166, 149, 123, 87, 73, 138, 217, 255, 255, 255, 104, 0, 1, 1, 3, 1, 2, 9, 0, 0, 5, 36, 193, 226, 211, 169, 107, 2, 7, 0, 6, 6, 75, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 2, 4, 80, 194, 185, 173, 149, 104, 145, 255, 210, 147, 62, 4, 6, 2, 0, 74, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 205, 186, 168, 154, 151, 140, 120, 95, 70, 86, 139, 143, 125, 255, 255, 255, 118, 4, 2, 1, 1, 6, 0, 0, 1, 0, 0, 35, 141, 165, 167, 113, 72, 2, 0, 3, 8, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 4, 1, 1, 1, 0, 0, 1, 1, 1, 0, 3, 1, 7, 76, 95, 149, 156, 147, 123, 89, 143, 206, 181, 111, 36, 3, 0, 6, 73, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 177, 136, 105, 81, 113, 145, 156, 88, 84, 255, 255, 255, 197, 4, 3, 1, 1, 1, 1, 1, 4, 0, 5, 23, 130, 85, 91, 110, 5, 6, 2, 32, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 71, 9, 1, 1, 0, 0, 0, 0, 1, 1, 3, 0, 2, 46, 151, 172, 140, 132, 117, 97, 65, 121, 122, 127, 72, 3, 1, 5, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 204, 188, 165, 145, 120, 82, 69, 182, 255, 255, 255, 64, 2, 4, 1, 0, 6, 1, 0, 3, 0, 10, 133, 139, 134, 30, 3, 2, 72, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 17, 2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 6, 7, 113, 140, 120, 120, 91, 88, 66, 73, 126, 97, 108, 42, 2, 5, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 210, 196, 179, 161, 138, 118, 83, 60, 141, 255, 255, 255, 255, 100, 29, 3, 1, 1, 1, 0, 6, 2, 4, 56, 121, 33, 5, 6, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 6, 4, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 48, 103, 73, 69, 112, 68, 64, 78, 108, 150, 162, 73, 6, 15, 134, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 219, 211, 199, 186, 169, 154, 135, 106, 159, 213, 169, 203, 255, 255, 255, 255, 255, 219, 152, 93, 41, 9, 0, 0, 0, 8, 2, 3, 20, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 5, 97, 157, 141, 104, 89, 71, 95, 106, 135, 94, 22, 7, 14, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 227, 222, 218, 207, 199, 187, 176, 162, 147, 126, 114, 255, 255, 170, 113, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 100, 48, 11, 4, 57, 209, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 6, 164, 204, 176, 133, 65, 3, 3, 2, 0, 7, 3, 15, 199, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 226, 228, 227, 224, 222, 216, 209, 204, 196, 185, 174, 163, 153, 134, 115, 151, 255, 209, 157, 103, 67, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 1, 2, 0, 3, 1, 0, 2, 0, 1, 1, 25, 220, 255, 203, 147, 63, 7, 0, 1, 2, 8, 35, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 215, 211, 211, 203, 209, 202, 196, 188, 178, 172, 165, 150, 138, 125, 105, 151, 255, 184, 133, 86, 66, 156, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 5, 0, 0, 5, 2, 2, 5, 0, 0, 5, 0, 42, 255, 255, 200, 134, 46, 0, 2, 3, 2, 49, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 194, 182, 172, 197, 193, 185, 185, 174, 169, 161, 149, 145, 126, 114, 94, 131, 200, 162, 118, 79, 68, 129, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 3, 0, 0, 0, 2, 6, 0, 4, 52, 206, 210, 176, 98, 19, 5, 3, 0, 53, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 198, 111, 36, 182, 173, 177, 163, 164, 157, 143, 135, 129, 112, 101, 83, 82, 177, 135, 97, 62, 84, 138, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 162, 0, 1, 3, 0, 1, 5, 0, 0, 4, 2, 2, 60, 141, 158, 129, 86, 2, 0, 6, 74, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 229, 143, 2, 165, 165, 159, 152, 63, 61, 135, 123, 115, 104, 89, 70, 59, 128, 113, 79, 66, 103, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 8, 0, 0, 1, 2, 0, 4, 5, 0, 1, 0, 48, 124, 81, 88, 45, 5, 3, 105, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 164, 7, 111, 147, 146, 140, 41, 28, 123, 112, 99, 87, 75, 60, 63, 87, 89, 65, 80, 131, 210, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 2, 2, 0, 3, 0, 0, 2, 0, 3, 0, 38, 149, 142, 74, 0, 0, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 44, 60, 132, 126, 129, 43, 11, 103, 96, 90, 73, 61, 62, 71, 100, 90, 93, 128, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 46, 11, 0, 2, 4, 0, 0, 1, 2, 8, 100, 50, 5, 14, 136, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 147, 21, 115, 114, 106, 64, 3, 71, 83, 70, 58, 56, 73, 92, 112, 144, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 188, 118, 56, 17, 6, 2, 10, 0, 3, 3, 11, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 48, 68, 95, 94, 72, 2, 33, 68, 53, 64, 73, 91, 114, 136, 163, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 186, 127, 58, 8, 2, 25, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 210, 102, 76, 69, 67, 12, 14, 53, 67, 77, 89, 108, 138, 158, 206, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 229, 139, 79, 57, 0, 58, 90, 102, 116, 140, 158, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 169, 135, 124, 128, 136, 167, 198, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]
];
sf_torus(levels, radius, thickness, depth, angle, twist, invert);

View File

@@ -0,0 +1,18 @@
use <hull_polyline2d.scad>;
use <util/rand.scad>;
use <experimental/zip2.scad>;
use <experimental/pnoise1.scad>;
use <experimental/pnoise1s.scad>;
seed = rand();
hull_polyline2d(
[for(x = [0:.1:10]) [x, pnoise1(x, seed)]], width = .1
);
xs = [for(x = [0:.2:8.3]) x];
ys = pnoise1s(xs);
translate([0, 2])
hull_polyline2d(
zip2(xs, ys), width = .1
);

View File

@@ -0,0 +1,48 @@
use <util/rand.scad>;
use <function_grapher.scad>;
use <experimental/pnoise2s.scad>;
module demo1() {
points = [
for(y = [0:.2:10])
for(x = [0:.2:10])
[x, y]
];
noise = pnoise2s(points);
for(i = [0:len(points) - 1]) {
c = (noise[i] + 1.1) / 2;
color([c, c, c])
translate(points[i])
square(.2);
}
}
module demo2() {
points = [
for(y = [0:.2:10])
[
for(x = [0:.2:10])
[x, y]
]
];
seed = rand(0, 256);
function_grapher(
[
for(ri = [0:len(points) - 1])
let(ns = pnoise2s(points[ri], seed))
[
for(ci = [0:len(ns) - 1])
[points[ri][ci][0], points[ri][ci][1], ns[ci]]
]
],
0.25)
;
}
demo1();
translate([12, 0])
demo2();

View File

@@ -0,0 +1,70 @@
use <util/rand.scad>;
use <experimental/pnoise2s.scad>;
use <experimental/pnoise3s.scad>;
module demo1() {
for(z = [0:.2:5]) {
points = [
for(y = [0:.2:5])
for(x = [0:.2:5])
[x, y, z]
];
noise = pnoise3s(points, 3);
for(i = [0:len(points) - 1]) {
alpha = abs(noise[i] + .5);
color([.75, .75, .75, alpha < 0 ? 0 : alpha > 1 ? 1 : alpha])
translate(points[i])
cube(.2);
}
}
}
module demo2() {
points = [
for(y = [0:.2:10])
[
for(x = [0:.2:10])
[x, y]
]
];
seed = rand(0, 256);
points_with_h = [
for(ri = [0:len(points) - 1])
let(ns = pnoise2s(points[ri], seed))
[
for(ci = [0:len(ns) - 1])
[points[ri][ci][0], points[ri][ci][1], ns[ci] + 1]
]
];
h_scale = 1.5;
for(row = points_with_h) {
for(i = [0:len(row) - 1]) {
p = row[i];
pts = [
for(z = [0:.2:p[2] * h_scale]) [p[0], p[1], z]
];
noise = pnoise3s(pts, seed);
for(j = [0:len(pts) - 1]) {
if(noise[j] > 0) {
color(
pts[j][2] < 1.25 ? "green" :
pts[j][2] < 1.75 ? "Olive" : "white")
translate(pts[j])
cube(.2);
}
}
}
}
color("LimeGreen")
linear_extrude(.2)
square(10);
}
demo1();
translate([8, 0])
demo2();

View File

@@ -0,0 +1,15 @@
use <hull_polyline2d.scad>;
use <experimental/pnoise_contour.scad>;
for(y = [0:2:4]) {
for(x = [0:2:4]) {
hull_polyline2d(pnoise_contour(x, y, noise = 0.025, steps = 200), width = .1, $fn = 4);
}
}
translate([10, 0])
for(y = [0:2:4]) {
for(x = [0:2:4]) {
hull_polyline2d(pnoise_contour(x, y, steps = 100), width = .05, $fn = 4);
}
}

View File

@@ -0,0 +1,27 @@
use <pixel/px_circle.scad>;
use <pixel/px_polyline.scad>;
use <shape_pentagram.scad>;
use <hull_polyline2d.scad>;
use <experimental/px_surround.scad>;
pts = px_circle(10, true);
for(p = pts) {
translate(p)
square(1, center = true);
}
#hull_polyline2d(px_surround(pts), width = .1);
pentagram = [
for(pt = shape_pentagram(15))
[round(pt[0]), round(pt[1])]
];
pts2 = px_polyline(concat(pentagram, [pentagram[0]]));
translate([30, 0]) {
for(pt = pts2) {
translate(pt)
linear_extrude(1, scale = 0.5)
square(1, center = true);
}
#hull_polyline2d(px_surround(pts2), width = .1);
}

View File

@@ -0,0 +1,16 @@
use <hull_polyline2d.scad>;
use <experimental/tri_delaunay.scad>;
points=[for(i = [0:50]) rands(-20, 20, 2)];
for(tri = tri_delaunay(points)) {
hull_polyline2d(
[points[tri[0]], points[tri[1]], points[tri[2]], points[tri[0]]], width = .2
);
}
color("red")
for(point = points) {
translate(point)
circle(.5);
}

View File

@@ -0,0 +1,14 @@
use <hull_polyline2d.scad>;
use <triangulate.scad>;
use <shape_starburst.scad>;
use <experimental/tri_bisectors.scad>;
shape = shape_starburst(30, 12, 10);
hull_polyline2d(concat(shape, [shape[0]]), width = 1);
tris = triangulate(shape);
for(tri = tris) {
for(line = tri_bisectors([for(idx = tri) shape[idx]])) {
hull_polyline2d(line, width = 1);
}
}

View File

@@ -0,0 +1,32 @@
use <hull_polyline2d.scad>;
use <shape_square.scad>;
use <experimental/voronoi2d_cells.scad>;
xs1 = rands(-20, 20, 15);
ys1 = rands(-20, 20, 15);
points = [for(i = [0:len(xs1) - 1]) [xs1[i], ys1[i]]];
function default_region_size(points) =
let(
xs = [for(p = points) p[0]],
ys = [for(p = points) abs(p[1])]
)
max([(max(xs) - min(xs) / 2), (max(ys) - min(ys)) / 2]);
size = default_region_size(points);
region_shape = shape_square(size, corner_r = size / 10);
cells = voronoi2d_cells(points, region_shape);
for(i = [0:len(points) - 1]) {
pt = points[i];
cell = cells[i];
linear_extrude(1)
hull_polyline2d(concat(cell, [cell[0]]), width = 1);
color(rands(0, 1, 3))
translate(pt)
linear_extrude(2, scale = 0.8)
translate(-pt)
polygon(cell);
}

View File

@@ -0,0 +1,30 @@
use <hull_polyline2d.scad>;
use <experimental/voronoi2d_lines.scad>;
use <experimental/convex_hull.scad>;
pt_nums = 50;
width = 1;
points = [for(i = [0:pt_nums - 1]) rands(-50, 50, 2)];
hull_pts = convex_hull(points);
hull_polyline2d(
concat(hull_pts, [hull_pts[0]]),
width = width, $fn = 4
);
intersection() {
for(line = voronoi2d_lines(points)) {
hull_polyline2d(
line,
width = width,
$fn = 4
);
}
polygon(hull_pts);
}
#for(p = points) {
translate(p)
circle(.5);
}

View File

@@ -0,0 +1 @@
function flat(lt) = [for(row_pts = lt) each row_pts];

View File

@@ -0,0 +1 @@
function gcd(m, n) = n == 0 ? m : gcd(n, m % n);

View File

@@ -0,0 +1,55 @@
use <util/rand.scad>;
use <line3d.scad>;
use <hull_polyline3d.scad>;
use <experimental/tri_bisectors.scad>;
// style: LINES or HULL_LINES
module hollow_out_sweep(sections, thickness, closed = false, style = "LINES") {
function rects(sects) =
let(
sects_leng = len(sects),
shape_pt_leng = len(sects[0])
)
[
for(i = [0:sects_leng - 2])
let(
sect1 = sects[i],
sect2 = sects[i + 1]
)
for(j = [0:shape_pt_leng - 1])
let(k = (j + 1) % shape_pt_leng)
[sect1[j], sect1[k], sect2[k], sect2[j]]
];
function rand_tris(rect) =
let(
i = ceil(rand() * 10) % 2
)
i == 0 ?
[[rect[0], rect[1], rect[2]], [rect[0], rect[2], rect[3]]] :
[[rect[1], rect[2], rect[3]], [rect[1], rect[3], rect[0]]];
sects = closed ? concat(sections, [sections[0]]) : sections;
lines = [
for(rect = rects(sects))
for(tri = rand_tris(rect))
each tri_bisectors(tri)
];
if(style == "LINES") {
for(line = lines) {
line3d(
p1 = line[0],
p2 = line[1],
thickness = thickness,
p1Style = "CAP_SPHERE",
p2Style = "CAP_SPHERE"
);
}
}
else if(style == "HULL_LINES") {
for(line = lines) {
hull_polyline3d(line, thickness = thickness);
}
}
}

View File

@@ -0,0 +1,9 @@
use <__comm__/__line_intersection.scad>;
use <__comm__/__in_line.scad>;
function intersection_p(line_pts1, line_pts2, ext = false, epsilon = 0.0001) =
let(
pt = __line_intersection(line_pts1, line_pts2, epsilon)
)
ext ? pt :
pt != [] && __in_line(line_pts1, pt, epsilon) && __in_line(line_pts2, pt, epsilon) ? pt : [];

View File

@@ -0,0 +1,3 @@
use <experimental/gcd.scad>;
function lcm(m, n) = m * n / gcd(m, n);

View File

@@ -0,0 +1,56 @@
use <experimental/lcm.scad>;
use <experimental/sweep.scad>;
module loft(sections, slices = 1) {
function inter_pts(p1, p2, n) =
let(
v = p2 - p1,
dx = v[0] / n,
dy = v[1] / n,
dz = v[2] / n
)
[for(i = [1:n - 1]) p1 + [dx, dy, dz] * i];
function _interpolate(sect, leng, n, i = 0) =
i == leng ? [] :
let(
p1 = sect[i],
p2 = sect[(i + 1) % leng]
)
concat(
[p1],
inter_pts(p1, p2, n),
_interpolate(sect, leng, n, i + 1)
);
function interpolate(sect, n) =
n <= 1 ? sect : _interpolate(sect, len(sect), n);
module _loft(sect1, sect2, slices) {
function inter_sects(s1, s2, s_leng, slices) =
slices == 1 ? [] :
let(
dps = [
for(i = [0:lcm_n - 1])
(s2[i] - s1[i]) / slices
]
)
[for(i = [1:slices - 1]) s1 + dps * i];
lcm_n = lcm(len(sect1), len(sect2));
new_sect1 = interpolate(sect1, lcm_n / len(sect1));
new_sect2 = interpolate(sect2, lcm_n / len(sect2));
sweep(
concat(
[new_sect1],
inter_sects(new_sect1, new_sect2, lcm_n, slices),
[new_sect2]
)
);
}
for(i = [0:len(sections) - 2]) {
_loft(sections[i], sections[i + 1], slices);
}
}

View File

@@ -0,0 +1,3 @@
use <experimental/_impl/_m_determinant_impl.scad>;
function m_determinant(matrix) = _m_determinant(matrix);

View File

@@ -0,0 +1,8 @@
use <experimental/_impl/_mz_blocks_impl.scad>;
function mz_blocks(start, rows, columns, maze, x_circular = false, y_circular = false) =
go_maze(
start[0], start[1], // starting point
is_undef(maze) ? starting_maze(rows, columns) : maze,
rows, columns, x_circular, y_circular
);

View File

@@ -0,0 +1,9 @@
function mz_get(block, query) =
let(
i = search(query, [
["x", 0],
["y", 1],
["w", 2]
])[0]
)
i != 2 ? block[i] : ["NO_WALL", "UPPER_WALL", "RIGHT_WALL", "UPPER_RIGHT_WALL"][block[i]];

View File

@@ -0,0 +1,31 @@
use <experimental/_impl/_mz_hamiltonian_impl.scad>;
use <experimental/mz_blocks.scad>;
use <experimental/mz_get.scad>;
use <util/sort.scad>;
use <util/dedup.scad>;
function mz_hamiltonian(rows, columns, start) =
let(
blocks = mz_blocks(
[1, 1],
rows, columns
),
all = concat(
[
for(block = blocks)
let(
x = mz_get(block, "x"),
y = mz_get(block, "y"),
wall_type = mz_get(block, "w"),
pts = wall_type == "UPPER_WALL" ? _mz_hamiltonian_upper(x, y) :
wall_type == "RIGHT_WALL" ? _mz_hamiltonian_right(x, y) :
wall_type == "UPPER_RIGHT_WALL" ? _mz_hamiltonian_upper_right(x, y) : []
)
each pts
],
[for(x = [0:columns * 2 - 1]) [x, 0]],
[for(y = [0:rows * 2 - 1]) [0, y]]
),
dot_pts = dedup(sort(all, by = "vt"), sorted = true)
)
_mz_hamiltonian_travel(dot_pts, start, rows * columns * 4);

View File

@@ -0,0 +1,15 @@
use <experimental/_impl/_mz_walls_impl.scad>;
function mz_walls(blocks, rows, columns, block_width, left_border = true, bottom_border = true) =
let(
left_walls = left_border ? [for(y = [0:rows - 1]) [[0, block_width * (y + 1)], [0, block_width * y]]] : [],
buttom_walls = bottom_border ? [for(x = [0:columns - 1]) [[block_width * x, 0], [block_width * (x + 1), 0]]] : []
)
concat(
[
for(block = blocks)
let(pts = block_walls(block, block_width))
if(pts != []) pts
]
, left_walls, buttom_walls
);

14
src/experimental/note.md Normal file
View File

@@ -0,0 +1,14 @@
- deprecate `polysections`, use `sweep`.
- deprecate `trianglate`, use `tri_ear_clipping`.
- `sort` supports a list of ints?
- `px_union`, `px_intersection`, `px_difference`?
- `bsearch` supports `by`, `idx`?
- `bsearch` supports a list of ints?
Preview
- `sweep`
- `util/has`
- `util/dedup`
- `util/bsearch` for a sorted lt by z, y, x
- `util/sort` supports `by = "vt"`

View File

@@ -0,0 +1,4 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise1_impl.scad>;
function pnoise1(x, seed) = _pnoise1_impl(x, seed % 256);

View File

@@ -0,0 +1,6 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise1_impl.scad>;
function pnoise1s(xs, seed) =
let(sd = is_undef(seed) ? floor(rand(0, 256)) : seed % 256)
[for(x = xs) _pnoise1_impl(x, sd)];

View File

@@ -0,0 +1,4 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise2_impl.scad>;
function pnoise2(x, y, seed) = _pnoise2(x, y, seed % 256);

View File

@@ -0,0 +1,6 @@
use <util/rand.scad>;
use <experimental/_impl/_pnoise2_impl.scad>;
function pnoise2s(points, seed) =
let(sd = is_undef(seed) ? floor(rand(0, 256)) : seed % 256)
[for(p = points) _pnoise2(p[0], p[1], sd)];

Some files were not shown because too many files have changed in this diff Show More