Skip to content

Instantly share code, notes, and snippets.

@PARC6502
Last active September 4, 2024 01:12
Show Gist options
  • Save PARC6502/85c99c04c9b3c6ae52c3c27605b4df0a to your computer and use it in GitHub Desktop.
Save PARC6502/85c99c04c9b3c6ae52c3c27605b4df0a to your computer and use it in GitHub Desktop.
OpenSimplex Noise for openprocessing
"use strict";
var OpenSimplexNoise;
(function() {
var constants_1 = {
NORM_2D: 1.0 / 47.0,
NORM_3D: 1.0 / 103.0,
NORM_4D: 1.0 / 30.0,
SQUISH_2D: (Math.sqrt(2 + 1) - 1) / 2,
SQUISH_3D: (Math.sqrt(3 + 1) - 1) / 3,
SQUISH_4D: (Math.sqrt(4 + 1) - 1) / 4,
STRETCH_2D: (1 / Math.sqrt(2 + 1) - 1) / 2,
STRETCH_3D: (1 / Math.sqrt(3 + 1) - 1) / 3,
STRETCH_4D: (1 / Math.sqrt(4 + 1) - 1) / 4,
base2D: [[1, 1, 0, 1, 0, 1, 0, 0, 0], [1, 1, 0, 1, 0, 1, 2, 1, 1]],
base3D: [
[0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1],
[2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1, 3, 1, 1, 1],
[1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 1]
],
base4D: [
[
0,
0,
0,
0,
0,
1,
1,
0,
0,
0,
1,
0,
1,
0,
0,
1,
0,
0,
1,
0,
1,
0,
0,
0,
1
],
[
3,
1,
1,
1,
0,
3,
1,
1,
0,
1,
3,
1,
0,
1,
1,
3,
0,
1,
1,
1,
4,
1,
1,
1,
1
],
[
1,
1,
0,
0,
0,
1,
0,
1,
0,
0,
1,
0,
0,
1,
0,
1,
0,
0,
0,
1,
2,
1,
1,
0,
0,
2,
1,
0,
1,
0,
2,
1,
0,
0,
1,
2,
0,
1,
1,
0,
2,
0,
1,
0,
1,
2,
0,
0,
1,
1
],
[
3,
1,
1,
1,
0,
3,
1,
1,
0,
1,
3,
1,
0,
1,
1,
3,
0,
1,
1,
1,
2,
1,
1,
0,
0,
2,
1,
0,
1,
0,
2,
1,
0,
0,
1,
2,
0,
1,
1,
0,
2,
0,
1,
0,
1,
2,
0,
0,
1,
1
]
],
gradients2D: [5, 2, 2, 5, -5, 2, -2, 5, 5, -2, 2, -5, -5, -2, -2, -5],
gradients3D: [
-11,
4,
4,
-4,
11,
4,
-4,
4,
11,
11,
4,
4,
4,
11,
4,
4,
4,
11,
-11,
-4,
4,
-4,
-11,
4,
-4,
-4,
11,
11,
-4,
4,
4,
-11,
4,
4,
-4,
11,
-11,
4,
-4,
-4,
11,
-4,
-4,
4,
-11,
11,
4,
-4,
4,
11,
-4,
4,
4,
-11,
-11,
-4,
-4,
-4,
-11,
-4,
-4,
-4,
-11,
11,
-4,
-4,
4,
-11,
-4,
4,
-4,
-11
],
gradients4D: [
3,
1,
1,
1,
1,
3,
1,
1,
1,
1,
3,
1,
1,
1,
1,
3,
-3,
1,
1,
1,
-1,
3,
1,
1,
-1,
1,
3,
1,
-1,
1,
1,
3,
3,
-1,
1,
1,
1,
-3,
1,
1,
1,
-1,
3,
1,
1,
-1,
1,
3,
-3,
-1,
1,
1,
-1,
-3,
1,
1,
-1,
-1,
3,
1,
-1,
-1,
1,
3,
3,
1,
-1,
1,
1,
3,
-1,
1,
1,
1,
-3,
1,
1,
1,
-1,
3,
-3,
1,
-1,
1,
-1,
3,
-1,
1,
-1,
1,
-3,
1,
-1,
1,
-1,
3,
3,
-1,
-1,
1,
1,
-3,
-1,
1,
1,
-1,
-3,
1,
1,
-1,
-1,
3,
-3,
-1,
-1,
1,
-1,
-3,
-1,
1,
-1,
-1,
-3,
1,
-1,
-1,
-1,
3,
3,
1,
1,
-1,
1,
3,
1,
-1,
1,
1,
3,
-1,
1,
1,
1,
-3,
-3,
1,
1,
-1,
-1,
3,
1,
-1,
-1,
1,
3,
-1,
-1,
1,
1,
-3,
3,
-1,
1,
-1,
1,
-3,
1,
-1,
1,
-1,
3,
-1,
1,
-1,
1,
-3,
-3,
-1,
1,
-1,
-1,
-3,
1,
-1,
-1,
-1,
3,
-1,
-1,
-1,
1,
-3,
3,
1,
-1,
-1,
1,
3,
-1,
-1,
1,
1,
-3,
-1,
1,
1,
-1,
-3,
-3,
1,
-1,
-1,
-1,
3,
-1,
-1,
-1,
1,
-3,
-1,
-1,
1,
-1,
-3,
3,
-1,
-1,
-1,
1,
-3,
-1,
-1,
1,
-1,
-3,
-1,
1,
-1,
-1,
-3,
-3,
-1,
-1,
-1,
-1,
-3,
-1,
-1,
-1,
-1,
-3,
-1,
-1,
-1,
-1,
-3
],
lookupPairs2D: [
0,
1,
1,
0,
4,
1,
17,
0,
20,
2,
21,
2,
22,
5,
23,
5,
26,
4,
39,
3,
42,
4,
43,
3
],
lookupPairs3D: [
0,
2,
1,
1,
2,
2,
5,
1,
6,
0,
7,
0,
32,
2,
34,
2,
129,
1,
133,
1,
160,
5,
161,
5,
518,
0,
519,
0,
546,
4,
550,
4,
645,
3,
647,
3,
672,
5,
673,
5,
674,
4,
677,
3,
678,
4,
679,
3,
680,
13,
681,
13,
682,
12,
685,
14,
686,
12,
687,
14,
712,
20,
714,
18,
809,
21,
813,
23,
840,
20,
841,
21,
1198,
19,
1199,
22,
1226,
18,
1230,
19,
1325,
23,
1327,
22,
1352,
15,
1353,
17,
1354,
15,
1357,
17,
1358,
16,
1359,
16,
1360,
11,
1361,
10,
1362,
11,
1365,
10,
1366,
9,
1367,
9,
1392,
11,
1394,
11,
1489,
10,
1493,
10,
1520,
8,
1521,
8,
1878,
9,
1879,
9,
1906,
7,
1910,
7,
2005,
6,
2007,
6,
2032,
8,
2033,
8,
2034,
7,
2037,
6,
2038,
7,
2039,
6
],
lookupPairs4D: [
0,
3,
1,
2,
2,
3,
5,
2,
6,
1,
7,
1,
8,
3,
9,
2,
10,
3,
13,
2,
16,
3,
18,
3,
22,
1,
23,
1,
24,
3,
26,
3,
33,
2,
37,
2,
38,
1,
39,
1,
41,
2,
45,
2,
54,
1,
55,
1,
56,
0,
57,
0,
58,
0,
59,
0,
60,
0,
61,
0,
62,
0,
63,
0,
256,
3,
258,
3,
264,
3,
266,
3,
272,
3,
274,
3,
280,
3,
282,
3,
2049,
2,
2053,
2,
2057,
2,
2061,
2,
2081,
2,
2085,
2,
2089,
2,
2093,
2,
2304,
9,
2305,
9,
2312,
9,
2313,
9,
16390,
1,
16391,
1,
16406,
1,
16407,
1,
16422,
1,
16423,
1,
16438,
1,
16439,
1,
16642,
8,
16646,
8,
16658,
8,
16662,
8,
18437,
6,
18439,
6,
18469,
6,
18471,
6,
18688,
9,
18689,
9,
18690,
8,
18693,
6,
18694,
8,
18695,
6,
18696,
9,
18697,
9,
18706,
8,
18710,
8,
18725,
6,
18727,
6,
131128,
0,
131129,
0,
131130,
0,
131131,
0,
131132,
0,
131133,
0,
131134,
0,
131135,
0,
131352,
7,
131354,
7,
131384,
7,
131386,
7,
133161,
5,
133165,
5,
133177,
5,
133181,
5,
133376,
9,
133377,
9,
133384,
9,
133385,
9,
133400,
7,
133402,
7,
133417,
5,
133421,
5,
133432,
7,
133433,
5,
133434,
7,
133437,
5,
147510,
4,
147511,
4,
147518,
4,
147519,
4,
147714,
8,
147718,
8,
147730,
8,
147734,
8,
147736,
7,
147738,
7,
147766,
4,
147767,
4,
147768,
7,
147770,
7,
147774,
4,
147775,
4,
149509,
6,
149511,
6,
149541,
6,
149543,
6,
149545,
5,
149549,
5,
149558,
4,
149559,
4,
149561,
5,
149565,
5,
149566,
4,
149567,
4,
149760,
9,
149761,
9,
149762,
8,
149765,
6,
149766,
8,
149767,
6,
149768,
9,
149769,
9,
149778,
8,
149782,
8,
149784,
7,
149786,
7,
149797,
6,
149799,
6,
149801,
5,
149805,
5,
149814,
4,
149815,
4,
149816,
7,
149817,
5,
149818,
7,
149821,
5,
149822,
4,
149823,
4,
149824,
37,
149825,
37,
149826,
36,
149829,
34,
149830,
36,
149831,
34,
149832,
37,
149833,
37,
149842,
36,
149846,
36,
149848,
35,
149850,
35,
149861,
34,
149863,
34,
149865,
33,
149869,
33,
149878,
32,
149879,
32,
149880,
35,
149881,
33,
149882,
35,
149885,
33,
149886,
32,
149887,
32,
150080,
49,
150082,
48,
150088,
49,
150098,
48,
150104,
47,
150106,
47,
151873,
46,
151877,
45,
151881,
46,
151909,
45,
151913,
44,
151917,
44,
152128,
49,
152129,
46,
152136,
49,
152137,
46,
166214,
43,
166215,
42,
166230,
43,
166247,
42,
166262,
41,
166263,
41,
166466,
48,
166470,
43,
166482,
48,
166486,
43,
168261,
45,
168263,
42,
168293,
45,
168295,
42,
168512,
31,
168513,
28,
168514,
31,
168517,
28,
168518,
25,
168519,
25,
280952,
40,
280953,
39,
280954,
40,
280957,
39,
280958,
38,
280959,
38,
281176,
47,
281178,
47,
281208,
40,
281210,
40,
282985,
44,
282989,
44,
283001,
39,
283005,
39,
283208,
30,
283209,
27,
283224,
30,
283241,
27,
283256,
22,
283257,
22,
297334,
41,
297335,
41,
297342,
38,
297343,
38,
297554,
29,
297558,
24,
297562,
29,
297590,
24,
297594,
21,
297598,
21,
299365,
26,
299367,
23,
299373,
26,
299383,
23,
299389,
20,
299391,
20,
299584,
31,
299585,
28,
299586,
31,
299589,
28,
299590,
25,
299591,
25,
299592,
30,
299593,
27,
299602,
29,
299606,
24,
299608,
30,
299610,
29,
299621,
26,
299623,
23,
299625,
27,
299629,
26,
299638,
24,
299639,
23,
299640,
22,
299641,
22,
299642,
21,
299645,
20,
299646,
21,
299647,
20,
299648,
61,
299649,
60,
299650,
61,
299653,
60,
299654,
59,
299655,
59,
299656,
58,
299657,
57,
299666,
55,
299670,
54,
299672,
58,
299674,
55,
299685,
52,
299687,
51,
299689,
57,
299693,
52,
299702,
54,
299703,
51,
299704,
56,
299705,
56,
299706,
53,
299709,
50,
299710,
53,
299711,
50,
299904,
61,
299906,
61,
299912,
58,
299922,
55,
299928,
58,
299930,
55,
301697,
60,
301701,
60,
301705,
57,
301733,
52,
301737,
57,
301741,
52,
301952,
79,
301953,
79,
301960,
76,
301961,
76,
316038,
59,
316039,
59,
316054,
54,
316071,
51,
316086,
54,
316087,
51,
316290,
78,
316294,
78,
316306,
73,
316310,
73,
318085,
77,
318087,
77,
318117,
70,
318119,
70,
318336,
79,
318337,
79,
318338,
78,
318341,
77,
318342,
78,
318343,
77,
430776,
56,
430777,
56,
430778,
53,
430781,
50,
430782,
53,
430783,
50,
431000,
75,
431002,
72,
431032,
75,
431034,
72,
432809,
74,
432813,
69,
432825,
74,
432829,
69,
433032,
76,
433033,
76,
433048,
75,
433065,
74,
433080,
75,
433081,
74,
447158,
71,
447159,
68,
447166,
71,
447167,
68,
447378,
73,
447382,
73,
447386,
72,
447414,
71,
447418,
72,
447422,
71,
449189,
70,
449191,
70,
449197,
69,
449207,
68,
449213,
69,
449215,
68,
449408,
67,
449409,
67,
449410,
66,
449413,
64,
449414,
66,
449415,
64,
449416,
67,
449417,
67,
449426,
66,
449430,
66,
449432,
65,
449434,
65,
449445,
64,
449447,
64,
449449,
63,
449453,
63,
449462,
62,
449463,
62,
449464,
65,
449465,
63,
449466,
65,
449469,
63,
449470,
62,
449471,
62,
449472,
19,
449473,
19,
449474,
18,
449477,
16,
449478,
18,
449479,
16,
449480,
19,
449481,
19,
449490,
18,
449494,
18,
449496,
17,
449498,
17,
449509,
16,
449511,
16,
449513,
15,
449517,
15,
449526,
14,
449527,
14,
449528,
17,
449529,
15,
449530,
17,
449533,
15,
449534,
14,
449535,
14,
449728,
19,
449729,
19,
449730,
18,
449734,
18,
449736,
19,
449737,
19,
449746,
18,
449750,
18,
449752,
17,
449754,
17,
449784,
17,
449786,
17,
451520,
19,
451521,
19,
451525,
16,
451527,
16,
451528,
19,
451529,
19,
451557,
16,
451559,
16,
451561,
15,
451565,
15,
451577,
15,
451581,
15,
451776,
19,
451777,
19,
451784,
19,
451785,
19,
465858,
18,
465861,
16,
465862,
18,
465863,
16,
465874,
18,
465878,
18,
465893,
16,
465895,
16,
465910,
14,
465911,
14,
465918,
14,
465919,
14,
466114,
18,
466118,
18,
466130,
18,
466134,
18,
467909,
16,
467911,
16,
467941,
16,
467943,
16,
468160,
13,
468161,
13,
468162,
13,
468163,
13,
468164,
13,
468165,
13,
468166,
13,
468167,
13,
580568,
17,
580570,
17,
580585,
15,
580589,
15,
580598,
14,
580599,
14,
580600,
17,
580601,
15,
580602,
17,
580605,
15,
580606,
14,
580607,
14,
580824,
17,
580826,
17,
580856,
17,
580858,
17,
582633,
15,
582637,
15,
582649,
15,
582653,
15,
582856,
12,
582857,
12,
582872,
12,
582873,
12,
582888,
12,
582889,
12,
582904,
12,
582905,
12,
596982,
14,
596983,
14,
596990,
14,
596991,
14,
597202,
11,
597206,
11,
597210,
11,
597214,
11,
597234,
11,
597238,
11,
597242,
11,
597246,
11,
599013,
10,
599015,
10,
599021,
10,
599023,
10,
599029,
10,
599031,
10,
599037,
10,
599039,
10,
599232,
13,
599233,
13,
599234,
13,
599235,
13,
599236,
13,
599237,
13,
599238,
13,
599239,
13,
599240,
12,
599241,
12,
599250,
11,
599254,
11,
599256,
12,
599257,
12,
599258,
11,
599262,
11,
599269,
10,
599271,
10,
599272,
12,
599273,
12,
599277,
10,
599279,
10,
599282,
11,
599285,
10,
599286,
11,
599287,
10,
599288,
12,
599289,
12,
599290,
11,
599293,
10,
599294,
11,
599295,
10
],
p2D: [
0,
0,
1,
-1,
0,
0,
-1,
1,
0,
2,
1,
1,
1,
2,
2,
0,
1,
2,
0,
2,
1,
0,
0,
0
],
p3D: [
0,
0,
1,
-1,
0,
0,
1,
0,
-1,
0,
0,
-1,
1,
0,
0,
0,
1,
-1,
0,
0,
-1,
0,
1,
0,
0,
-1,
1,
0,
2,
1,
1,
0,
1,
1,
1,
-1,
0,
2,
1,
0,
1,
1,
1,
-1,
1,
0,
2,
0,
1,
1,
1,
-1,
1,
1,
1,
3,
2,
1,
0,
3,
1,
2,
0,
1,
3,
2,
0,
1,
3,
1,
0,
2,
1,
3,
0,
2,
1,
3,
0,
1,
2,
1,
1,
1,
0,
0,
2,
2,
0,
0,
1,
1,
0,
1,
0,
2,
0,
2,
0,
1,
1,
0,
0,
1,
2,
0,
0,
2,
2,
0,
0,
0,
0,
1,
1,
-1,
1,
2,
0,
0,
0,
0,
1,
-1,
1,
1,
2,
0,
0,
0,
0,
1,
1,
1,
-1,
2,
3,
1,
1,
1,
2,
0,
0,
2,
2,
3,
1,
1,
1,
2,
2,
0,
0,
2,
3,
1,
1,
1,
2,
0,
2,
0,
2,
1,
1,
-1,
1,
2,
0,
0,
2,
2,
1,
1,
-1,
1,
2,
2,
0,
0,
2,
1,
-1,
1,
1,
2,
0,
0,
2,
2,
1,
-1,
1,
1,
2,
0,
2,
0,
2,
1,
1,
1,
-1,
2,
2,
0,
0,
2,
1,
1,
1,
-1,
2,
0,
2,
0
],
p4D: [
0,
0,
1,
-1,
0,
0,
0,
1,
0,
-1,
0,
0,
1,
0,
0,
-1,
0,
0,
-1,
1,
0,
0,
0,
0,
1,
-1,
0,
0,
0,
1,
0,
-1,
0,
0,
-1,
0,
1,
0,
0,
0,
-1,
1,
0,
0,
0,
0,
1,
-1,
0,
0,
-1,
0,
0,
1,
0,
0,
-1,
0,
1,
0,
0,
0,
-1,
1,
0,
2,
1,
1,
0,
0,
1,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
0,
2,
1,
0,
1,
0,
1,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
0,
2,
0,
1,
1,
0,
1,
-1,
1,
1,
0,
1,
0,
1,
1,
-1,
0,
2,
1,
0,
0,
1,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
0,
2,
0,
1,
0,
1,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
1,
0,
2,
0,
0,
1,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
1,
1,
4,
2,
1,
1,
0,
4,
1,
2,
1,
0,
4,
1,
1,
2,
0,
1,
4,
2,
1,
0,
1,
4,
1,
2,
0,
1,
4,
1,
1,
0,
2,
1,
4,
2,
0,
1,
1,
4,
1,
0,
2,
1,
4,
1,
0,
1,
2,
1,
4,
0,
2,
1,
1,
4,
0,
1,
2,
1,
4,
0,
1,
1,
2,
1,
2,
1,
1,
0,
0,
3,
2,
1,
0,
0,
3,
1,
2,
0,
0,
1,
2,
1,
0,
1,
0,
3,
2,
0,
1,
0,
3,
1,
0,
2,
0,
1,
2,
0,
1,
1,
0,
3,
0,
2,
1,
0,
3,
0,
1,
2,
0,
1,
2,
1,
0,
0,
1,
3,
2,
0,
0,
1,
3,
1,
0,
0,
2,
1,
2,
0,
1,
0,
1,
3,
0,
2,
0,
1,
3,
0,
1,
0,
2,
1,
2,
0,
0,
1,
1,
3,
0,
0,
2,
1,
3,
0,
0,
1,
2,
2,
3,
1,
1,
1,
0,
2,
1,
1,
1,
-1,
2,
2,
0,
0,
0,
2,
3,
1,
1,
0,
1,
2,
1,
1,
-1,
1,
2,
2,
0,
0,
0,
2,
3,
1,
0,
1,
1,
2,
1,
-1,
1,
1,
2,
2,
0,
0,
0,
2,
3,
1,
1,
1,
0,
2,
1,
1,
1,
-1,
2,
0,
2,
0,
0,
2,
3,
1,
1,
0,
1,
2,
1,
1,
-1,
1,
2,
0,
2,
0,
0,
2,
3,
0,
1,
1,
1,
2,
-1,
1,
1,
1,
2,
0,
2,
0,
0,
2,
3,
1,
1,
1,
0,
2,
1,
1,
1,
-1,
2,
0,
0,
2,
0,
2,
3,
1,
0,
1,
1,
2,
1,
-1,
1,
1,
2,
0,
0,
2,
0,
2,
3,
0,
1,
1,
1,
2,
-1,
1,
1,
1,
2,
0,
0,
2,
0,
2,
3,
1,
1,
0,
1,
2,
1,
1,
-1,
1,
2,
0,
0,
0,
2,
2,
3,
1,
0,
1,
1,
2,
1,
-1,
1,
1,
2,
0,
0,
0,
2,
2,
3,
0,
1,
1,
1,
2,
-1,
1,
1,
1,
2,
0,
0,
0,
2,
2,
1,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
0,
0,
0,
0,
0,
2,
1,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
0,
0,
0,
0,
0,
2,
1,
-1,
1,
1,
0,
1,
0,
1,
1,
-1,
0,
0,
0,
0,
0,
2,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
0,
0,
0,
0,
0,
2,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
1,
0,
0,
0,
0,
0,
2,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
1,
0,
0,
0,
0,
0,
2,
1,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
2,
2,
0,
0,
0,
2,
1,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
2,
2,
0,
0,
0,
2,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
2,
2,
0,
0,
0,
2,
1,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
2,
0,
2,
0,
0,
2,
1,
-1,
1,
1,
0,
1,
0,
1,
1,
-1,
2,
0,
2,
0,
0,
2,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
1,
2,
0,
2,
0,
0,
2,
1,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
2,
0,
0,
2,
0,
2,
1,
-1,
1,
1,
0,
1,
0,
1,
1,
-1,
2,
0,
0,
2,
0,
2,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
1,
2,
0,
0,
2,
0,
2,
1,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
2,
0,
0,
0,
2,
2,
1,
-1,
1,
0,
1,
1,
0,
1,
-1,
1,
2,
0,
0,
0,
2,
2,
1,
-1,
0,
1,
1,
1,
0,
-1,
1,
1,
2,
0,
0,
0,
2,
3,
1,
1,
0,
0,
0,
2,
2,
0,
0,
0,
2,
1,
1,
1,
-1,
3,
1,
0,
1,
0,
0,
2,
0,
2,
0,
0,
2,
1,
1,
1,
-1,
3,
1,
0,
0,
1,
0,
2,
0,
0,
2,
0,
2,
1,
1,
1,
-1,
3,
1,
1,
0,
0,
0,
2,
2,
0,
0,
0,
2,
1,
1,
-1,
1,
3,
1,
0,
1,
0,
0,
2,
0,
2,
0,
0,
2,
1,
1,
-1,
1,
3,
1,
0,
0,
0,
1,
2,
0,
0,
0,
2,
2,
1,
1,
-1,
1,
3,
1,
1,
0,
0,
0,
2,
2,
0,
0,
0,
2,
1,
-1,
1,
1,
3,
1,
0,
0,
1,
0,
2,
0,
0,
2,
0,
2,
1,
-1,
1,
1,
3,
1,
0,
0,
0,
1,
2,
0,
0,
0,
2,
2,
1,
-1,
1,
1,
3,
1,
0,
1,
0,
0,
2,
0,
2,
0,
0,
2,
-1,
1,
1,
1,
3,
1,
0,
0,
1,
0,
2,
0,
0,
2,
0,
2,
-1,
1,
1,
1,
3,
1,
0,
0,
0,
1,
2,
0,
0,
0,
2,
2,
-1,
1,
1,
1,
3,
3,
2,
1,
0,
0,
3,
1,
2,
0,
0,
4,
1,
1,
1,
1,
3,
3,
2,
0,
1,
0,
3,
1,
0,
2,
0,
4,
1,
1,
1,
1,
3,
3,
0,
2,
1,
0,
3,
0,
1,
2,
0,
4,
1,
1,
1,
1,
3,
3,
2,
0,
0,
1,
3,
1,
0,
0,
2,
4,
1,
1,
1,
1,
3,
3,
0,
2,
0,
1,
3,
0,
1,
0,
2,
4,
1,
1,
1,
1,
3,
3,
0,
0,
2,
1,
3,
0,
0,
1,
2,
4,
1,
1,
1,
1,
3,
3,
2,
1,
0,
0,
3,
1,
2,
0,
0,
2,
1,
1,
1,
-1,
3,
3,
2,
0,
1,
0,
3,
1,
0,
2,
0,
2,
1,
1,
1,
-1,
3,
3,
0,
2,
1,
0,
3,
0,
1,
2,
0,
2,
1,
1,
1,
-1,
3,
3,
2,
1,
0,
0,
3,
1,
2,
0,
0,
2,
1,
1,
-1,
1,
3,
3,
2,
0,
0,
1,
3,
1,
0,
0,
2,
2,
1,
1,
-1,
1,
3,
3,
0,
2,
0,
1,
3,
0,
1,
0,
2,
2,
1,
1,
-1,
1,
3,
3,
2,
0,
1,
0,
3,
1,
0,
2,
0,
2,
1,
-1,
1,
1,
3,
3,
2,
0,
0,
1,
3,
1,
0,
0,
2,
2,
1,
-1,
1,
1,
3,
3,
0,
0,
2,
1,
3,
0,
0,
1,
2,
2,
1,
-1,
1,
1,
3,
3,
0,
2,
1,
0,
3,
0,
1,
2,
0,
2,
-1,
1,
1,
1,
3,
3,
0,
2,
0,
1,
3,
0,
1,
0,
2,
2,
-1,
1,
1,
1,
3,
3,
0,
0,
2,
1,
3,
0,
0,
1,
2,
2,
-1,
1,
1,