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