Abhishek Gola commited on
Commit
a771188
·
1 Parent(s): b1404ee

Added handpose estimation to opencv spaces

Browse files
Files changed (5) hide show
  1. README.md +6 -0
  2. app_fixed.py +167 -0
  3. mp_handpose.py +200 -0
  4. mp_palmdet.py +2121 -0
  5. requirements.txt +4 -0
README.md CHANGED
@@ -7,6 +7,12 @@ sdk: gradio
7
  sdk_version: 5.34.2
8
  app_file: app.py
9
  pinned: false
 
 
 
 
 
 
10
  ---
11
 
12
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
7
  sdk_version: 5.34.2
8
  app_file: app.py
9
  pinned: false
10
+ short_description: Handpose estimation using Mediapipe with OpenCV
11
+ tags:
12
+ - opencv
13
+ - handpose-estimation
14
+ - palm-detection
15
+ - mediapipe
16
  ---
17
 
18
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app_fixed.py ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import cv2 as cv
3
+ import tempfile
4
+ from mp_handpose import MPHandPose
5
+ from mp_palmdet import MPPalmDet
6
+ import numpy as np
7
+ from huggingface_hub import hf_hub_download
8
+
9
+ handpose_detector_path = hf_hub_download(repo_id="opencv/handpose_estimation_mediapipe", filename="handpose_estimation_mediapipe_2023feb.onnx")
10
+ palm_detector_path = hf_hub_download(repo_id="opencv/palm_detection_mediapipe", filename="palm_detection_mediapipe_2023feb.onnx")
11
+
12
+ backend_id = cv.dnn.DNN_BACKEND_OPENCV
13
+ target_id = cv.dnn.DNN_TARGET_CPU
14
+
15
+ palm_detector = MPPalmDet(modelPath=palm_detector_path, nmsThreshold=0.3, scoreThreshold=0.6, backendId=backend_id, targetId=target_id)
16
+ handpose_detector = MPHandPose(modelPath=handpose_detector_path, confThreshold=0.9, backendId=backend_id, targetId=target_id)
17
+
18
+ def visualize(image, hands):
19
+ display_screen = image.copy()
20
+ display_3d = np.zeros((400, 400, 3), np.uint8)
21
+ cv.line(display_3d, (200, 0), (200, 400), (255, 255, 255), 2)
22
+ cv.line(display_3d, (0, 200), (400, 200), (255, 255, 255), 2)
23
+ cv.putText(display_3d, 'Main View', (0, 12), cv.FONT_HERSHEY_DUPLEX, 0.5, (0, 0, 255))
24
+ cv.putText(display_3d, 'Top View', (200, 12), cv.FONT_HERSHEY_DUPLEX, 0.5, (0, 0, 255))
25
+ cv.putText(display_3d, 'Left View', (0, 212), cv.FONT_HERSHEY_DUPLEX, 0.5, (0, 0, 255))
26
+ cv.putText(display_3d, 'Right View', (200, 212), cv.FONT_HERSHEY_DUPLEX, 0.5, (0, 0, 255))
27
+
28
+ def draw_lines(image, landmarks, is_draw_point=True, thickness=2):
29
+ connections = [
30
+ (0, 1), (1, 2), (2, 3), (3, 4),
31
+ (0, 5), (5, 6), (6, 7), (7, 8),
32
+ (0, 9), (9, 10), (10, 11), (11, 12),
33
+ (0, 13), (13, 14), (14, 15), (15, 16),
34
+ (0, 17), (17, 18), (18, 19), (19, 20)
35
+ ]
36
+ for (i, j) in connections:
37
+ cv.line(image, landmarks[i], landmarks[j], (255, 255, 255), thickness)
38
+ if is_draw_point:
39
+ for p in landmarks:
40
+ cv.circle(image, p, thickness, (0, 0, 255), -1)
41
+
42
+ gc = GestureClassification()
43
+
44
+ for handpose in hands:
45
+ bbox = handpose[0:4].astype(np.int32)
46
+ handedness = handpose[-2]
47
+ handedness_text = 'Left' if handedness <= 0.5 else 'Right'
48
+ landmarks_screen = handpose[4:67].reshape(21, 3).astype(np.int32)
49
+ landmarks_word = handpose[67:130].reshape(21, 3)
50
+ gesture = gc.classify(landmarks_screen)
51
+
52
+ cv.rectangle(display_screen, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 255, 0), 2)
53
+ cv.putText(display_screen, handedness_text, (bbox[0], bbox[1] + 12), cv.FONT_HERSHEY_DUPLEX, 0.5, (0, 0, 255))
54
+ cv.putText(display_screen, gesture, (bbox[0], bbox[1] + 30), cv.FONT_HERSHEY_DUPLEX, 0.5, (0, 0, 255))
55
+
56
+ landmarks_xy = landmarks_screen[:, 0:2]
57
+ draw_lines(display_screen, landmarks_xy, is_draw_point=False)
58
+
59
+ for p in landmarks_screen:
60
+ r = max(5 - p[2] // 5, 0)
61
+ r = min(r, 14)
62
+ cv.circle(display_screen, (p[0], p[1]), r, (0, 0, 255), -1)
63
+
64
+ # Main view
65
+ landmarks_xy = (landmarks_word[:, [0, 1]] * 1000 + 100).astype(np.int32)
66
+ draw_lines(display_3d, landmarks_xy, thickness=5)
67
+ # Top view
68
+ landmarks_xz = landmarks_word[:, [0, 2]]
69
+ landmarks_xz[:, 1] *= -1
70
+ landmarks_xz = (landmarks_xz * 1000 + [300, 100]).astype(np.int32)
71
+ draw_lines(display_3d, landmarks_xz, thickness=5)
72
+ # Left view
73
+ landmarks_yz = landmarks_word[:, [2, 1]]
74
+ landmarks_yz[:, 0] *= -1
75
+ landmarks_yz = (landmarks_yz * 1000 + [100, 300]).astype(np.int32)
76
+ draw_lines(display_3d, landmarks_yz, thickness=5)
77
+ # Right view
78
+ landmarks_zy = (landmarks_word[:, [2, 1]] * 1000 + [300, 300]).astype(np.int32)
79
+ draw_lines(display_3d, landmarks_zy, thickness=5)
80
+
81
+ return display_screen, display_3d
82
+
83
+ class GestureClassification:
84
+ def _vector_2_angle(self, v1, v2):
85
+ uv1 = v1 / np.linalg.norm(v1)
86
+ uv2 = v2 / np.linalg.norm(v2)
87
+ return np.degrees(np.arccos(np.dot(uv1, uv2)))
88
+
89
+ def _hand_angle(self, hand):
90
+ return [
91
+ self._vector_2_angle(np.array([hand[0][0] - hand[i][0], hand[0][1] - hand[i][1]]),
92
+ np.array([hand[i + 1][0] - hand[i + 2][0], hand[i + 1][1] - hand[i + 2][1]]))
93
+ for i in [2, 6, 10, 14, 18]
94
+ ]
95
+
96
+ def _finger_status(self, lmList):
97
+ originx, originy = lmList[0]
98
+ keypoint_list = [[5, 4], [6, 8], [10, 12], [14, 16], [18, 20]]
99
+ return [np.hypot(x2 - originx, y2 - originy) > np.hypot(x1 - originx, y1 - originy)
100
+ for (x1, y1), (x2, y2) in [(lmList[i], lmList[j]) for i, j in keypoint_list]]
101
+
102
+ def _classify(self, hand):
103
+ angle_list = self._hand_angle(hand)
104
+ thumbOpen, firstOpen, secondOpen, thirdOpen, fourthOpen = self._finger_status(hand)
105
+ thr_angle = 65.
106
+ thr_angle_thumb = 30.
107
+ thr_angle_s = 49.
108
+ g = "Undefined"
109
+ if angle_list[0] > thr_angle_thumb and all(a > thr_angle for a in angle_list[1:]) and not any([firstOpen, secondOpen, thirdOpen, fourthOpen]):
110
+ g = "Zero"
111
+ elif angle_list[0] > thr_angle_thumb and angle_list[1] < thr_angle_s and all(a > thr_angle for a in angle_list[2:]) and firstOpen and not any([secondOpen, thirdOpen, fourthOpen]):
112
+ g = "One"
113
+ elif angle_list[0] > thr_angle_thumb and angle_list[1] < thr_angle_s and angle_list[2] < thr_angle_s and all(a > thr_angle for a in angle_list[3:]) and not thumbOpen and firstOpen and secondOpen and not any([thirdOpen, fourthOpen]):
114
+ g = "Two"
115
+ elif angle_list[0] > thr_angle_thumb and all(a < thr_angle_s for a in angle_list[1:4]) and angle_list[4] > thr_angle and not thumbOpen and all([firstOpen, secondOpen, thirdOpen]) and not fourthOpen:
116
+ g = "Three"
117
+ elif angle_list[0] > thr_angle_thumb and all(a < thr_angle_s for a in angle_list[1:]) and all([firstOpen, secondOpen, thirdOpen, fourthOpen]):
118
+ g = "Four"
119
+ elif all(a < thr_angle_s for a in angle_list) and all([thumbOpen, firstOpen, secondOpen, thirdOpen, fourthOpen]):
120
+ g = "Five"
121
+ elif angle_list[0] < thr_angle_s and all(a > thr_angle for a in angle_list[1:4]) and angle_list[4] < thr_angle_s and thumbOpen and not any([firstOpen, secondOpen, thirdOpen]) and fourthOpen:
122
+ g = "Six"
123
+ elif angle_list[0] < thr_angle_s and angle_list[1] < thr_angle and all(a > thr_angle for a in angle_list[2:4]) and angle_list[4] > thr_angle_s and thumbOpen and firstOpen and not any([secondOpen, thirdOpen, fourthOpen]):
124
+ g = "Seven"
125
+ elif angle_list[0] < thr_angle_s and all(a < thr_angle for a in angle_list[1:3]) and angle_list[3] > thr_angle and angle_list[4] > thr_angle_s and thumbOpen and all([firstOpen, secondOpen]) and not any([thirdOpen, fourthOpen]):
126
+ g = "Eight"
127
+ elif angle_list[0] < thr_angle_s and all(a < thr_angle for a in angle_list[1:4]) and angle_list[4] > thr_angle_s and thumbOpen and all([firstOpen, secondOpen, thirdOpen]) and not fourthOpen:
128
+ g = "Nine"
129
+ return g
130
+
131
+ def classify(self, landmarks):
132
+ return self._classify(landmarks[:21, :2])
133
+
134
+ def process_video(video_path):
135
+ cap = cv.VideoCapture(video_path)
136
+ fps = cap.get(cv.CAP_PROP_FPS)
137
+ width = int(cap.get(cv.CAP_PROP_FRAME_WIDTH))
138
+ height = int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))
139
+
140
+ out_path = tempfile.mktemp(suffix=".mp4")
141
+ out_writer = cv.VideoWriter(out_path, cv.VideoWriter_fourcc(*'mp4v'), fps, (width, height))
142
+
143
+ while cap.isOpened():
144
+ ret, frame = cap.read()
145
+ if not ret:
146
+ break
147
+
148
+ palms = palm_detector.infer(frame)
149
+ hands = np.empty((0, 132))
150
+ for palm in palms:
151
+ handpose = handpose_detector.infer(frame, palm)
152
+ if handpose is not None:
153
+ hands = np.vstack((hands, handpose))
154
+ frame, _ = visualize(frame, hands)
155
+ out_writer.write(frame)
156
+
157
+ cap.release()
158
+ out_writer.release()
159
+ return out_path
160
+
161
+ gr.Interface(
162
+ fn=process_video,
163
+ inputs=gr.File(label="Upload Video", file_types=[".mp4", ".avi"]),
164
+ outputs=gr.Video(label="Processed Video"),
165
+ title="Video Edge Detection",
166
+ allow_flagging="never"
167
+ ).launch()
mp_handpose.py ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import cv2 as cv
3
+
4
+ class MPHandPose:
5
+ def __init__(self, modelPath, confThreshold=0.8, backendId=0, targetId=0):
6
+ self.model_path = modelPath
7
+ self.conf_threshold = confThreshold
8
+ self.backend_id = backendId
9
+ self.target_id = targetId
10
+
11
+ self.input_size = np.array([224, 224]) # wh
12
+ self.PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2]
13
+ self.PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0
14
+ self.PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2
15
+ self.PALM_BOX_PRE_SHIFT_VECTOR = [0, 0]
16
+ self.PALM_BOX_PRE_ENLARGE_FACTOR = 4
17
+ self.PALM_BOX_SHIFT_VECTOR = [0, -0.4]
18
+ self.PALM_BOX_ENLARGE_FACTOR = 3
19
+ self.HAND_BOX_SHIFT_VECTOR = [0, -0.1]
20
+ self.HAND_BOX_ENLARGE_FACTOR = 1.65
21
+
22
+ self.model = cv.dnn.readNet(self.model_path)
23
+ self.model.setPreferableBackend(self.backend_id)
24
+ self.model.setPreferableTarget(self.target_id)
25
+
26
+ @property
27
+ def name(self):
28
+ return self.__class__.__name__
29
+
30
+ def setBackendAndTarget(self, backendId, targetId):
31
+ self.backend_id = backendId
32
+ self.target_id = targetId
33
+ self.model.setPreferableBackend(self.backend_id)
34
+ self.model.setPreferableTarget(self.target_id)
35
+
36
+ def _cropAndPadFromPalm(self, image, palm_bbox, for_rotation = False):
37
+ # shift bounding box
38
+ wh_palm_bbox = palm_bbox[1] - palm_bbox[0]
39
+ if for_rotation:
40
+ shift_vector = self.PALM_BOX_PRE_SHIFT_VECTOR
41
+ else:
42
+ shift_vector = self.PALM_BOX_SHIFT_VECTOR
43
+ shift_vector = shift_vector * wh_palm_bbox
44
+ palm_bbox = palm_bbox + shift_vector
45
+ # enlarge bounding box
46
+ center_palm_bbox = np.sum(palm_bbox, axis=0) / 2
47
+ wh_palm_bbox = palm_bbox[1] - palm_bbox[0]
48
+ if for_rotation:
49
+ enlarge_scale = self.PALM_BOX_PRE_ENLARGE_FACTOR
50
+ else:
51
+ enlarge_scale = self.PALM_BOX_ENLARGE_FACTOR
52
+ new_half_size = wh_palm_bbox * enlarge_scale / 2
53
+ palm_bbox = np.array([
54
+ center_palm_bbox - new_half_size,
55
+ center_palm_bbox + new_half_size])
56
+ palm_bbox = palm_bbox.astype(np.int32)
57
+ palm_bbox[:, 0] = np.clip(palm_bbox[:, 0], 0, image.shape[1])
58
+ palm_bbox[:, 1] = np.clip(palm_bbox[:, 1], 0, image.shape[0])
59
+ # crop to the size of interest
60
+ image = image[palm_bbox[0][1]:palm_bbox[1][1], palm_bbox[0][0]:palm_bbox[1][0], :]
61
+ # pad to ensure conner pixels won't be cropped
62
+ if for_rotation:
63
+ side_len = np.linalg.norm(image.shape[:2])
64
+ else:
65
+ side_len = max(image.shape[:2])
66
+
67
+ side_len = int(side_len)
68
+ pad_h = side_len - image.shape[0]
69
+ pad_w = side_len - image.shape[1]
70
+ left = pad_w // 2
71
+ top = pad_h // 2
72
+ right = pad_w - left
73
+ bottom = pad_h - top
74
+ image = cv.copyMakeBorder(image, top, bottom, left, right, cv.BORDER_CONSTANT, None, (0, 0, 0))
75
+ bias = palm_bbox[0] - [left, top]
76
+ return image, palm_bbox, bias
77
+
78
+ def _preprocess(self, image, palm):
79
+ '''
80
+ Rotate input for inference.
81
+ Parameters:
82
+ image - input image of BGR channel order
83
+ palm_bbox - palm bounding box found in image of format [[x1, y1], [x2, y2]] (top-left and bottom-right points)
84
+ palm_landmarks - 7 landmarks (5 finger base points, 2 palm base points) of shape [7, 2]
85
+ Returns:
86
+ rotated_hand - rotated hand image for inference
87
+ rotate_palm_bbox - palm box of interest range
88
+ angle - rotate angle for hand
89
+ rotation_matrix - matrix for rotation and de-rotation
90
+ pad_bias - pad pixels of interest range
91
+ '''
92
+ # crop and pad image to interest range
93
+ pad_bias = np.array([0, 0], dtype=np.int32) # left, top
94
+ palm_bbox = palm[0:4].reshape(2, 2)
95
+ image, palm_bbox, bias = self._cropAndPadFromPalm(image, palm_bbox, True)
96
+ image = cv.cvtColor(image, cv.COLOR_BGR2RGB)
97
+ pad_bias += bias
98
+
99
+ # Rotate input to have vertically oriented hand image
100
+ # compute rotation
101
+ palm_bbox -= pad_bias
102
+ palm_landmarks = palm[4:18].reshape(7, 2) - pad_bias
103
+ p1 = palm_landmarks[self.PALM_LANDMARKS_INDEX_OF_PALM_BASE]
104
+ p2 = palm_landmarks[self.PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]
105
+ radians = np.pi / 2 - np.arctan2(-(p2[1] - p1[1]), p2[0] - p1[0])
106
+ radians = radians - 2 * np.pi * np.floor((radians + np.pi) / (2 * np.pi))
107
+ angle = np.rad2deg(radians)
108
+ # get bbox center
109
+ center_palm_bbox = np.sum(palm_bbox, axis=0) / 2
110
+ # get rotation matrix
111
+ rotation_matrix = cv.getRotationMatrix2D(center_palm_bbox, angle, 1.0)
112
+ # get rotated image
113
+ rotated_image = cv.warpAffine(image, rotation_matrix, (image.shape[1], image.shape[0]))
114
+ # get bounding boxes from rotated palm landmarks
115
+ homogeneous_coord = np.c_[palm_landmarks, np.ones(palm_landmarks.shape[0])]
116
+ rotated_palm_landmarks = np.array([
117
+ np.dot(homogeneous_coord, rotation_matrix[0]),
118
+ np.dot(homogeneous_coord, rotation_matrix[1])])
119
+ # get landmark bounding box
120
+ rotated_palm_bbox = np.array([
121
+ np.amin(rotated_palm_landmarks, axis=1),
122
+ np.amax(rotated_palm_landmarks, axis=1)]) # [top-left, bottom-right]
123
+
124
+ crop, rotated_palm_bbox, _ = self._cropAndPadFromPalm(rotated_image, rotated_palm_bbox)
125
+ blob = cv.resize(crop, dsize=self.input_size, interpolation=cv.INTER_AREA).astype(np.float32)
126
+ blob = blob / 255.
127
+
128
+ return blob[np.newaxis, :, :, :], rotated_palm_bbox, angle, rotation_matrix, pad_bias
129
+
130
+ def infer(self, image, palm):
131
+ # Preprocess
132
+ input_blob, rotated_palm_bbox, angle, rotation_matrix, pad_bias = self._preprocess(image, palm)
133
+
134
+ # Forward
135
+ self.model.setInput(input_blob)
136
+ output_blob = self.model.forward(self.model.getUnconnectedOutLayersNames())
137
+
138
+ # Postprocess
139
+ results = self._postprocess(output_blob, rotated_palm_bbox, angle, rotation_matrix, pad_bias)
140
+ return results # [bbox_coords, landmarks_coords, conf]
141
+
142
+ def _postprocess(self, blob, rotated_palm_bbox, angle, rotation_matrix, pad_bias):
143
+ landmarks, conf, handedness, landmarks_word = blob
144
+
145
+ conf = conf[0][0]
146
+ if conf < self.conf_threshold:
147
+ return None
148
+
149
+ landmarks = landmarks[0].reshape(-1, 3) # shape: (1, 63) -> (21, 3)
150
+ landmarks_word = landmarks_word[0].reshape(-1, 3) # shape: (1, 63) -> (21, 3)
151
+
152
+ # transform coords back to the input coords
153
+ wh_rotated_palm_bbox = rotated_palm_bbox[1] - rotated_palm_bbox[0]
154
+ scale_factor = wh_rotated_palm_bbox / self.input_size
155
+ landmarks[:, :2] = (landmarks[:, :2] - self.input_size / 2) * max(scale_factor)
156
+ landmarks[:, 2] = landmarks[:, 2] * max(scale_factor) # depth scaling
157
+ coords_rotation_matrix = cv.getRotationMatrix2D((0, 0), angle, 1.0)
158
+ rotated_landmarks = np.dot(landmarks[:, :2], coords_rotation_matrix[:, :2])
159
+ rotated_landmarks = np.c_[rotated_landmarks, landmarks[:, 2]]
160
+ rotated_landmarks_world = np.dot(landmarks_word[:, :2], coords_rotation_matrix[:, :2])
161
+ rotated_landmarks_world = np.c_[rotated_landmarks_world, landmarks_word[:, 2]]
162
+ # invert rotation
163
+ rotation_component = np.array([
164
+ [rotation_matrix[0][0], rotation_matrix[1][0]],
165
+ [rotation_matrix[0][1], rotation_matrix[1][1]]])
166
+ translation_component = np.array([
167
+ rotation_matrix[0][2], rotation_matrix[1][2]])
168
+ inverted_translation = np.array([
169
+ -np.dot(rotation_component[0], translation_component),
170
+ -np.dot(rotation_component[1], translation_component)])
171
+ inverse_rotation_matrix = np.c_[rotation_component, inverted_translation]
172
+ # get box center
173
+ center = np.append(np.sum(rotated_palm_bbox, axis=0) / 2, 1)
174
+ original_center = np.array([
175
+ np.dot(center, inverse_rotation_matrix[0]),
176
+ np.dot(center, inverse_rotation_matrix[1])])
177
+ landmarks[:, :2] = rotated_landmarks[:, :2] + original_center + pad_bias
178
+
179
+ # get bounding box from rotated_landmarks
180
+ bbox = np.array([
181
+ np.amin(landmarks[:, :2], axis=0),
182
+ np.amax(landmarks[:, :2], axis=0)]) # [top-left, bottom-right]
183
+ # shift bounding box
184
+ wh_bbox = bbox[1] - bbox[0]
185
+ shift_vector = self.HAND_BOX_SHIFT_VECTOR * wh_bbox
186
+ bbox = bbox + shift_vector
187
+ # enlarge bounding box
188
+ center_bbox = np.sum(bbox, axis=0) / 2
189
+ wh_bbox = bbox[1] - bbox[0]
190
+ new_half_size = wh_bbox * self.HAND_BOX_ENLARGE_FACTOR / 2
191
+ bbox = np.array([
192
+ center_bbox - new_half_size,
193
+ center_bbox + new_half_size])
194
+
195
+ # [0: 4]: hand bounding box found in image of format [x1, y1, x2, y2] (top-left and bottom-right points)
196
+ # [4: 67]: screen landmarks with format [x1, y1, z1, x2, y2 ... x21, y21, z21], z value is relative to WRIST
197
+ # [67: 130]: world landmarks with format [x1, y1, z1, x2, y2 ... x21, y21, z21], 3D metric x, y, z coordinate
198
+ # [130]: handedness, (left)[0, 1](right) hand
199
+ # [131]: confidence
200
+ return np.r_[bbox.reshape(-1), landmarks.reshape(-1), rotated_landmarks_world.reshape(-1), handedness[0][0], conf]
mp_palmdet.py ADDED
@@ -0,0 +1,2121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import cv2 as cv
3
+
4
+ class MPPalmDet:
5
+ def __init__(self, modelPath, nmsThreshold=0.3, scoreThreshold=0.5, topK=5000, backendId=0, targetId=0):
6
+ self.model_path = modelPath
7
+ self.nms_threshold = nmsThreshold
8
+ self.score_threshold = scoreThreshold
9
+ self.topK = topK
10
+ self.backend_id = backendId
11
+ self.target_id = targetId
12
+
13
+ self.input_size = np.array([192, 192]) # wh
14
+
15
+ self.model = cv.dnn.readNet(self.model_path)
16
+ self.model.setPreferableBackend(self.backend_id)
17
+ self.model.setPreferableTarget(self.target_id)
18
+
19
+ self.anchors = self._load_anchors()
20
+
21
+ @property
22
+ def name(self):
23
+ return self.__class__.__name__
24
+
25
+ def setBackendAndTarget(self, backendId, targetId):
26
+ self.backend_id = backendId
27
+ self.target_id = targetId
28
+ self.model.setPreferableBackend(self.backend_id)
29
+ self.model.setPreferableTarget(self.target_id)
30
+
31
+ def _preprocess(self, image):
32
+ pad_bias = np.array([0., 0.]) # left, top
33
+ ratio = min(self.input_size / image.shape[:2])
34
+ if image.shape[0] != self.input_size[0] or image.shape[1] != self.input_size[1]:
35
+ # keep aspect ratio when resize
36
+ ratio_size = (np.array(image.shape[:2]) * ratio).astype(np.int32)
37
+ image = cv.resize(image, (ratio_size[1], ratio_size[0]))
38
+ pad_h = self.input_size[0] - ratio_size[0]
39
+ pad_w = self.input_size[1] - ratio_size[1]
40
+ pad_bias[0] = left = pad_w // 2
41
+ pad_bias[1] = top = pad_h // 2
42
+ right = pad_w - left
43
+ bottom = pad_h - top
44
+ image = cv.copyMakeBorder(image, top, bottom, left, right, cv.BORDER_CONSTANT, None, (0, 0, 0))
45
+ image = cv.cvtColor(image, cv.COLOR_BGR2RGB)
46
+ image = image.astype(np.float32) / 255.0 # norm
47
+ pad_bias = (pad_bias / ratio).astype(np.int32)
48
+ return image[np.newaxis, :, :, :], pad_bias # hwc -> nhwc
49
+
50
+ def infer(self, image):
51
+ h, w, _ = image.shape
52
+
53
+ # Preprocess
54
+ input_blob, pad_bias = self._preprocess(image)
55
+
56
+ # Forward
57
+ self.model.setInput(input_blob)
58
+ output_blob = self.model.forward(self.model.getUnconnectedOutLayersNames())
59
+
60
+ # Postprocess
61
+ results = self._postprocess(output_blob, np.array([w, h]), pad_bias)
62
+
63
+ return results
64
+
65
+ def _postprocess(self, output_blob, original_shape, pad_bias):
66
+ score = output_blob[1][0, :, 0]
67
+ box_delta = output_blob[0][0, :, 0:4]
68
+ landmark_delta = output_blob[0][0, :, 4:]
69
+ scale = max(original_shape)
70
+
71
+ # get scores
72
+ score = score.astype(np.float64)
73
+ score = 1 / (1 + np.exp(-score))
74
+
75
+ # get boxes
76
+ cxy_delta = box_delta[:, :2] / self.input_size
77
+ wh_delta = box_delta[:, 2:] / self.input_size
78
+ xy1 = (cxy_delta - wh_delta / 2 + self.anchors) * scale
79
+ xy2 = (cxy_delta + wh_delta / 2 + self.anchors) * scale
80
+ boxes = np.concatenate([xy1, xy2], axis=1)
81
+ boxes -= [pad_bias[0], pad_bias[1], pad_bias[0], pad_bias[1]]
82
+ # NMS
83
+ keep_idx = cv.dnn.NMSBoxes(boxes, score, self.score_threshold, self.nms_threshold, top_k=self.topK)
84
+ if len(keep_idx) == 0:
85
+ return np.empty(shape=(0, 19))
86
+ selected_score = score[keep_idx]
87
+ selected_box = boxes[keep_idx]
88
+
89
+ # get landmarks
90
+ selected_landmarks = landmark_delta[keep_idx].reshape(-1, 7, 2)
91
+ selected_landmarks = selected_landmarks / self.input_size
92
+ selected_anchors = self.anchors[keep_idx]
93
+ for idx, landmark in enumerate(selected_landmarks):
94
+ landmark += selected_anchors[idx]
95
+ selected_landmarks *= scale
96
+ selected_landmarks -= pad_bias
97
+
98
+ # [
99
+ # [bbox_coords, landmarks_coords, score]
100
+ # ...
101
+ # [bbox_coords, landmarks_coords, score]
102
+ # ]
103
+ return np.c_[selected_box.reshape(-1, 4), selected_landmarks.reshape(-1, 14), selected_score.reshape(-1, 1)]
104
+
105
+ def _load_anchors(self):
106
+ return np.array([[0.02083333, 0.02083333],
107
+ [0.02083333, 0.02083333],
108
+ [0.0625, 0.02083333],
109
+ [0.0625, 0.02083333],
110
+ [0.10416666, 0.02083333],
111
+ [0.10416666, 0.02083333],
112
+ [0.14583333, 0.02083333],
113
+ [0.14583333, 0.02083333],
114
+ [0.1875, 0.02083333],
115
+ [0.1875, 0.02083333],
116
+ [0.22916667, 0.02083333],
117
+ [0.22916667, 0.02083333],
118
+ [0.27083334, 0.02083333],
119
+ [0.27083334, 0.02083333],
120
+ [0.3125, 0.02083333],
121
+ [0.3125, 0.02083333],
122
+ [0.35416666, 0.02083333],
123
+ [0.35416666, 0.02083333],
124
+ [0.39583334, 0.02083333],
125
+ [0.39583334, 0.02083333],
126
+ [0.4375, 0.02083333],
127
+ [0.4375, 0.02083333],
128
+ [0.47916666, 0.02083333],
129
+ [0.47916666, 0.02083333],
130
+ [0.5208333, 0.02083333],
131
+ [0.5208333, 0.02083333],
132
+ [0.5625, 0.02083333],
133
+ [0.5625, 0.02083333],
134
+ [0.6041667, 0.02083333],
135
+ [0.6041667, 0.02083333],
136
+ [0.6458333, 0.02083333],
137
+ [0.6458333, 0.02083333],
138
+ [0.6875, 0.02083333],
139
+ [0.6875, 0.02083333],
140
+ [0.7291667, 0.02083333],
141
+ [0.7291667, 0.02083333],
142
+ [0.7708333, 0.02083333],
143
+ [0.7708333, 0.02083333],
144
+ [0.8125, 0.02083333],
145
+ [0.8125, 0.02083333],
146
+ [0.8541667, 0.02083333],
147
+ [0.8541667, 0.02083333],
148
+ [0.8958333, 0.02083333],
149
+ [0.8958333, 0.02083333],
150
+ [0.9375, 0.02083333],
151
+ [0.9375, 0.02083333],
152
+ [0.9791667, 0.02083333],
153
+ [0.9791667, 0.02083333],
154
+ [0.02083333, 0.0625],
155
+ [0.02083333, 0.0625],
156
+ [0.0625, 0.0625],
157
+ [0.0625, 0.0625],
158
+ [0.10416666, 0.0625],
159
+ [0.10416666, 0.0625],
160
+ [0.14583333, 0.0625],
161
+ [0.14583333, 0.0625],
162
+ [0.1875, 0.0625],
163
+ [0.1875, 0.0625],
164
+ [0.22916667, 0.0625],
165
+ [0.22916667, 0.0625],
166
+ [0.27083334, 0.0625],
167
+ [0.27083334, 0.0625],
168
+ [0.3125, 0.0625],
169
+ [0.3125, 0.0625],
170
+ [0.35416666, 0.0625],
171
+ [0.35416666, 0.0625],
172
+ [0.39583334, 0.0625],
173
+ [0.39583334, 0.0625],
174
+ [0.4375, 0.0625],
175
+ [0.4375, 0.0625],
176
+ [0.47916666, 0.0625],
177
+ [0.47916666, 0.0625],
178
+ [0.5208333, 0.0625],
179
+ [0.5208333, 0.0625],
180
+ [0.5625, 0.0625],
181
+ [0.5625, 0.0625],
182
+ [0.6041667, 0.0625],
183
+ [0.6041667, 0.0625],
184
+ [0.6458333, 0.0625],
185
+ [0.6458333, 0.0625],
186
+ [0.6875, 0.0625],
187
+ [0.6875, 0.0625],
188
+ [0.7291667, 0.0625],
189
+ [0.7291667, 0.0625],
190
+ [0.7708333, 0.0625],
191
+ [0.7708333, 0.0625],
192
+ [0.8125, 0.0625],
193
+ [0.8125, 0.0625],
194
+ [0.8541667, 0.0625],
195
+ [0.8541667, 0.0625],
196
+ [0.8958333, 0.0625],
197
+ [0.8958333, 0.0625],
198
+ [0.9375, 0.0625],
199
+ [0.9375, 0.0625],
200
+ [0.9791667, 0.0625],
201
+ [0.9791667, 0.0625],
202
+ [0.02083333, 0.10416666],
203
+ [0.02083333, 0.10416666],
204
+ [0.0625, 0.10416666],
205
+ [0.0625, 0.10416666],
206
+ [0.10416666, 0.10416666],
207
+ [0.10416666, 0.10416666],
208
+ [0.14583333, 0.10416666],
209
+ [0.14583333, 0.10416666],
210
+ [0.1875, 0.10416666],
211
+ [0.1875, 0.10416666],
212
+ [0.22916667, 0.10416666],
213
+ [0.22916667, 0.10416666],
214
+ [0.27083334, 0.10416666],
215
+ [0.27083334, 0.10416666],
216
+ [0.3125, 0.10416666],
217
+ [0.3125, 0.10416666],
218
+ [0.35416666, 0.10416666],
219
+ [0.35416666, 0.10416666],
220
+ [0.39583334, 0.10416666],
221
+ [0.39583334, 0.10416666],
222
+ [0.4375, 0.10416666],
223
+ [0.4375, 0.10416666],
224
+ [0.47916666, 0.10416666],
225
+ [0.47916666, 0.10416666],
226
+ [0.5208333, 0.10416666],
227
+ [0.5208333, 0.10416666],
228
+ [0.5625, 0.10416666],
229
+ [0.5625, 0.10416666],
230
+ [0.6041667, 0.10416666],
231
+ [0.6041667, 0.10416666],
232
+ [0.6458333, 0.10416666],
233
+ [0.6458333, 0.10416666],
234
+ [0.6875, 0.10416666],
235
+ [0.6875, 0.10416666],
236
+ [0.7291667, 0.10416666],
237
+ [0.7291667, 0.10416666],
238
+ [0.7708333, 0.10416666],
239
+ [0.7708333, 0.10416666],
240
+ [0.8125, 0.10416666],
241
+ [0.8125, 0.10416666],
242
+ [0.8541667, 0.10416666],
243
+ [0.8541667, 0.10416666],
244
+ [0.8958333, 0.10416666],
245
+ [0.8958333, 0.10416666],
246
+ [0.9375, 0.10416666],
247
+ [0.9375, 0.10416666],
248
+ [0.9791667, 0.10416666],
249
+ [0.9791667, 0.10416666],
250
+ [0.02083333, 0.14583333],
251
+ [0.02083333, 0.14583333],
252
+ [0.0625, 0.14583333],
253
+ [0.0625, 0.14583333],
254
+ [0.10416666, 0.14583333],
255
+ [0.10416666, 0.14583333],
256
+ [0.14583333, 0.14583333],
257
+ [0.14583333, 0.14583333],
258
+ [0.1875, 0.14583333],
259
+ [0.1875, 0.14583333],
260
+ [0.22916667, 0.14583333],
261
+ [0.22916667, 0.14583333],
262
+ [0.27083334, 0.14583333],
263
+ [0.27083334, 0.14583333],
264
+ [0.3125, 0.14583333],
265
+ [0.3125, 0.14583333],
266
+ [0.35416666, 0.14583333],
267
+ [0.35416666, 0.14583333],
268
+ [0.39583334, 0.14583333],
269
+ [0.39583334, 0.14583333],
270
+ [0.4375, 0.14583333],
271
+ [0.4375, 0.14583333],
272
+ [0.47916666, 0.14583333],
273
+ [0.47916666, 0.14583333],
274
+ [0.5208333, 0.14583333],
275
+ [0.5208333, 0.14583333],
276
+ [0.5625, 0.14583333],
277
+ [0.5625, 0.14583333],
278
+ [0.6041667, 0.14583333],
279
+ [0.6041667, 0.14583333],
280
+ [0.6458333, 0.14583333],
281
+ [0.6458333, 0.14583333],
282
+ [0.6875, 0.14583333],
283
+ [0.6875, 0.14583333],
284
+ [0.7291667, 0.14583333],
285
+ [0.7291667, 0.14583333],
286
+ [0.7708333, 0.14583333],
287
+ [0.7708333, 0.14583333],
288
+ [0.8125, 0.14583333],
289
+ [0.8125, 0.14583333],
290
+ [0.8541667, 0.14583333],
291
+ [0.8541667, 0.14583333],
292
+ [0.8958333, 0.14583333],
293
+ [0.8958333, 0.14583333],
294
+ [0.9375, 0.14583333],
295
+ [0.9375, 0.14583333],
296
+ [0.9791667, 0.14583333],
297
+ [0.9791667, 0.14583333],
298
+ [0.02083333, 0.1875],
299
+ [0.02083333, 0.1875],
300
+ [0.0625, 0.1875],
301
+ [0.0625, 0.1875],
302
+ [0.10416666, 0.1875],
303
+ [0.10416666, 0.1875],
304
+ [0.14583333, 0.1875],
305
+ [0.14583333, 0.1875],
306
+ [0.1875, 0.1875],
307
+ [0.1875, 0.1875],
308
+ [0.22916667, 0.1875],
309
+ [0.22916667, 0.1875],
310
+ [0.27083334, 0.1875],
311
+ [0.27083334, 0.1875],
312
+ [0.3125, 0.1875],
313
+ [0.3125, 0.1875],
314
+ [0.35416666, 0.1875],
315
+ [0.35416666, 0.1875],
316
+ [0.39583334, 0.1875],
317
+ [0.39583334, 0.1875],
318
+ [0.4375, 0.1875],
319
+ [0.4375, 0.1875],
320
+ [0.47916666, 0.1875],
321
+ [0.47916666, 0.1875],
322
+ [0.5208333, 0.1875],
323
+ [0.5208333, 0.1875],
324
+ [0.5625, 0.1875],
325
+ [0.5625, 0.1875],
326
+ [0.6041667, 0.1875],
327
+ [0.6041667, 0.1875],
328
+ [0.6458333, 0.1875],
329
+ [0.6458333, 0.1875],
330
+ [0.6875, 0.1875],
331
+ [0.6875, 0.1875],
332
+ [0.7291667, 0.1875],
333
+ [0.7291667, 0.1875],
334
+ [0.7708333, 0.1875],
335
+ [0.7708333, 0.1875],
336
+ [0.8125, 0.1875],
337
+ [0.8125, 0.1875],
338
+ [0.8541667, 0.1875],
339
+ [0.8541667, 0.1875],
340
+ [0.8958333, 0.1875],
341
+ [0.8958333, 0.1875],
342
+ [0.9375, 0.1875],
343
+ [0.9375, 0.1875],
344
+ [0.9791667, 0.1875],
345
+ [0.9791667, 0.1875],
346
+ [0.02083333, 0.22916667],
347
+ [0.02083333, 0.22916667],
348
+ [0.0625, 0.22916667],
349
+ [0.0625, 0.22916667],
350
+ [0.10416666, 0.22916667],
351
+ [0.10416666, 0.22916667],
352
+ [0.14583333, 0.22916667],
353
+ [0.14583333, 0.22916667],
354
+ [0.1875, 0.22916667],
355
+ [0.1875, 0.22916667],
356
+ [0.22916667, 0.22916667],
357
+ [0.22916667, 0.22916667],
358
+ [0.27083334, 0.22916667],
359
+ [0.27083334, 0.22916667],
360
+ [0.3125, 0.22916667],
361
+ [0.3125, 0.22916667],
362
+ [0.35416666, 0.22916667],
363
+ [0.35416666, 0.22916667],
364
+ [0.39583334, 0.22916667],
365
+ [0.39583334, 0.22916667],
366
+ [0.4375, 0.22916667],
367
+ [0.4375, 0.22916667],
368
+ [0.47916666, 0.22916667],
369
+ [0.47916666, 0.22916667],
370
+ [0.5208333, 0.22916667],
371
+ [0.5208333, 0.22916667],
372
+ [0.5625, 0.22916667],
373
+ [0.5625, 0.22916667],
374
+ [0.6041667, 0.22916667],
375
+ [0.6041667, 0.22916667],
376
+ [0.6458333, 0.22916667],
377
+ [0.6458333, 0.22916667],
378
+ [0.6875, 0.22916667],
379
+ [0.6875, 0.22916667],
380
+ [0.7291667, 0.22916667],
381
+ [0.7291667, 0.22916667],
382
+ [0.7708333, 0.22916667],
383
+ [0.7708333, 0.22916667],
384
+ [0.8125, 0.22916667],
385
+ [0.8125, 0.22916667],
386
+ [0.8541667, 0.22916667],
387
+ [0.8541667, 0.22916667],
388
+ [0.8958333, 0.22916667],
389
+ [0.8958333, 0.22916667],
390
+ [0.9375, 0.22916667],
391
+ [0.9375, 0.22916667],
392
+ [0.9791667, 0.22916667],
393
+ [0.9791667, 0.22916667],
394
+ [0.02083333, 0.27083334],
395
+ [0.02083333, 0.27083334],
396
+ [0.0625, 0.27083334],
397
+ [0.0625, 0.27083334],
398
+ [0.10416666, 0.27083334],
399
+ [0.10416666, 0.27083334],
400
+ [0.14583333, 0.27083334],
401
+ [0.14583333, 0.27083334],
402
+ [0.1875, 0.27083334],
403
+ [0.1875, 0.27083334],
404
+ [0.22916667, 0.27083334],
405
+ [0.22916667, 0.27083334],
406
+ [0.27083334, 0.27083334],
407
+ [0.27083334, 0.27083334],
408
+ [0.3125, 0.27083334],
409
+ [0.3125, 0.27083334],
410
+ [0.35416666, 0.27083334],
411
+ [0.35416666, 0.27083334],
412
+ [0.39583334, 0.27083334],
413
+ [0.39583334, 0.27083334],
414
+ [0.4375, 0.27083334],
415
+ [0.4375, 0.27083334],
416
+ [0.47916666, 0.27083334],
417
+ [0.47916666, 0.27083334],
418
+ [0.5208333, 0.27083334],
419
+ [0.5208333, 0.27083334],
420
+ [0.5625, 0.27083334],
421
+ [0.5625, 0.27083334],
422
+ [0.6041667, 0.27083334],
423
+ [0.6041667, 0.27083334],
424
+ [0.6458333, 0.27083334],
425
+ [0.6458333, 0.27083334],
426
+ [0.6875, 0.27083334],
427
+ [0.6875, 0.27083334],
428
+ [0.7291667, 0.27083334],
429
+ [0.7291667, 0.27083334],
430
+ [0.7708333, 0.27083334],
431
+ [0.7708333, 0.27083334],
432
+ [0.8125, 0.27083334],
433
+ [0.8125, 0.27083334],
434
+ [0.8541667, 0.27083334],
435
+ [0.8541667, 0.27083334],
436
+ [0.8958333, 0.27083334],
437
+ [0.8958333, 0.27083334],
438
+ [0.9375, 0.27083334],
439
+ [0.9375, 0.27083334],
440
+ [0.9791667, 0.27083334],
441
+ [0.9791667, 0.27083334],
442
+ [0.02083333, 0.3125],
443
+ [0.02083333, 0.3125],
444
+ [0.0625, 0.3125],
445
+ [0.0625, 0.3125],
446
+ [0.10416666, 0.3125],
447
+ [0.10416666, 0.3125],
448
+ [0.14583333, 0.3125],
449
+ [0.14583333, 0.3125],
450
+ [0.1875, 0.3125],
451
+ [0.1875, 0.3125],
452
+ [0.22916667, 0.3125],
453
+ [0.22916667, 0.3125],
454
+ [0.27083334, 0.3125],
455
+ [0.27083334, 0.3125],
456
+ [0.3125, 0.3125],
457
+ [0.3125, 0.3125],
458
+ [0.35416666, 0.3125],
459
+ [0.35416666, 0.3125],
460
+ [0.39583334, 0.3125],
461
+ [0.39583334, 0.3125],
462
+ [0.4375, 0.3125],
463
+ [0.4375, 0.3125],
464
+ [0.47916666, 0.3125],
465
+ [0.47916666, 0.3125],
466
+ [0.5208333, 0.3125],
467
+ [0.5208333, 0.3125],
468
+ [0.5625, 0.3125],
469
+ [0.5625, 0.3125],
470
+ [0.6041667, 0.3125],
471
+ [0.6041667, 0.3125],
472
+ [0.6458333, 0.3125],
473
+ [0.6458333, 0.3125],
474
+ [0.6875, 0.3125],
475
+ [0.6875, 0.3125],
476
+ [0.7291667, 0.3125],
477
+ [0.7291667, 0.3125],
478
+ [0.7708333, 0.3125],
479
+ [0.7708333, 0.3125],
480
+ [0.8125, 0.3125],
481
+ [0.8125, 0.3125],
482
+ [0.8541667, 0.3125],
483
+ [0.8541667, 0.3125],
484
+ [0.8958333, 0.3125],
485
+ [0.8958333, 0.3125],
486
+ [0.9375, 0.3125],
487
+ [0.9375, 0.3125],
488
+ [0.9791667, 0.3125],
489
+ [0.9791667, 0.3125],
490
+ [0.02083333, 0.35416666],
491
+ [0.02083333, 0.35416666],
492
+ [0.0625, 0.35416666],
493
+ [0.0625, 0.35416666],
494
+ [0.10416666, 0.35416666],
495
+ [0.10416666, 0.35416666],
496
+ [0.14583333, 0.35416666],
497
+ [0.14583333, 0.35416666],
498
+ [0.1875, 0.35416666],
499
+ [0.1875, 0.35416666],
500
+ [0.22916667, 0.35416666],
501
+ [0.22916667, 0.35416666],
502
+ [0.27083334, 0.35416666],
503
+ [0.27083334, 0.35416666],
504
+ [0.3125, 0.35416666],
505
+ [0.3125, 0.35416666],
506
+ [0.35416666, 0.35416666],
507
+ [0.35416666, 0.35416666],
508
+ [0.39583334, 0.35416666],
509
+ [0.39583334, 0.35416666],
510
+ [0.4375, 0.35416666],
511
+ [0.4375, 0.35416666],
512
+ [0.47916666, 0.35416666],
513
+ [0.47916666, 0.35416666],
514
+ [0.5208333, 0.35416666],
515
+ [0.5208333, 0.35416666],
516
+ [0.5625, 0.35416666],
517
+ [0.5625, 0.35416666],
518
+ [0.6041667, 0.35416666],
519
+ [0.6041667, 0.35416666],
520
+ [0.6458333, 0.35416666],
521
+ [0.6458333, 0.35416666],
522
+ [0.6875, 0.35416666],
523
+ [0.6875, 0.35416666],
524
+ [0.7291667, 0.35416666],
525
+ [0.7291667, 0.35416666],
526
+ [0.7708333, 0.35416666],
527
+ [0.7708333, 0.35416666],
528
+ [0.8125, 0.35416666],
529
+ [0.8125, 0.35416666],
530
+ [0.8541667, 0.35416666],
531
+ [0.8541667, 0.35416666],
532
+ [0.8958333, 0.35416666],
533
+ [0.8958333, 0.35416666],
534
+ [0.9375, 0.35416666],
535
+ [0.9375, 0.35416666],
536
+ [0.9791667, 0.35416666],
537
+ [0.9791667, 0.35416666],
538
+ [0.02083333, 0.39583334],
539
+ [0.02083333, 0.39583334],
540
+ [0.0625, 0.39583334],
541
+ [0.0625, 0.39583334],
542
+ [0.10416666, 0.39583334],
543
+ [0.10416666, 0.39583334],
544
+ [0.14583333, 0.39583334],
545
+ [0.14583333, 0.39583334],
546
+ [0.1875, 0.39583334],
547
+ [0.1875, 0.39583334],
548
+ [0.22916667, 0.39583334],
549
+ [0.22916667, 0.39583334],
550
+ [0.27083334, 0.39583334],
551
+ [0.27083334, 0.39583334],
552
+ [0.3125, 0.39583334],
553
+ [0.3125, 0.39583334],
554
+ [0.35416666, 0.39583334],
555
+ [0.35416666, 0.39583334],
556
+ [0.39583334, 0.39583334],
557
+ [0.39583334, 0.39583334],
558
+ [0.4375, 0.39583334],
559
+ [0.4375, 0.39583334],
560
+ [0.47916666, 0.39583334],
561
+ [0.47916666, 0.39583334],
562
+ [0.5208333, 0.39583334],
563
+ [0.5208333, 0.39583334],
564
+ [0.5625, 0.39583334],
565
+ [0.5625, 0.39583334],
566
+ [0.6041667, 0.39583334],
567
+ [0.6041667, 0.39583334],
568
+ [0.6458333, 0.39583334],
569
+ [0.6458333, 0.39583334],
570
+ [0.6875, 0.39583334],
571
+ [0.6875, 0.39583334],
572
+ [0.7291667, 0.39583334],
573
+ [0.7291667, 0.39583334],
574
+ [0.7708333, 0.39583334],
575
+ [0.7708333, 0.39583334],
576
+ [0.8125, 0.39583334],
577
+ [0.8125, 0.39583334],
578
+ [0.8541667, 0.39583334],
579
+ [0.8541667, 0.39583334],
580
+ [0.8958333, 0.39583334],
581
+ [0.8958333, 0.39583334],
582
+ [0.9375, 0.39583334],
583
+ [0.9375, 0.39583334],
584
+ [0.9791667, 0.39583334],
585
+ [0.9791667, 0.39583334],
586
+ [0.02083333, 0.4375],
587
+ [0.02083333, 0.4375],
588
+ [0.0625, 0.4375],
589
+ [0.0625, 0.4375],
590
+ [0.10416666, 0.4375],
591
+ [0.10416666, 0.4375],
592
+ [0.14583333, 0.4375],
593
+ [0.14583333, 0.4375],
594
+ [0.1875, 0.4375],
595
+ [0.1875, 0.4375],
596
+ [0.22916667, 0.4375],
597
+ [0.22916667, 0.4375],
598
+ [0.27083334, 0.4375],
599
+ [0.27083334, 0.4375],
600
+ [0.3125, 0.4375],
601
+ [0.3125, 0.4375],
602
+ [0.35416666, 0.4375],
603
+ [0.35416666, 0.4375],
604
+ [0.39583334, 0.4375],
605
+ [0.39583334, 0.4375],
606
+ [0.4375, 0.4375],
607
+ [0.4375, 0.4375],
608
+ [0.47916666, 0.4375],
609
+ [0.47916666, 0.4375],
610
+ [0.5208333, 0.4375],
611
+ [0.5208333, 0.4375],
612
+ [0.5625, 0.4375],
613
+ [0.5625, 0.4375],
614
+ [0.6041667, 0.4375],
615
+ [0.6041667, 0.4375],
616
+ [0.6458333, 0.4375],
617
+ [0.6458333, 0.4375],
618
+ [0.6875, 0.4375],
619
+ [0.6875, 0.4375],
620
+ [0.7291667, 0.4375],
621
+ [0.7291667, 0.4375],
622
+ [0.7708333, 0.4375],
623
+ [0.7708333, 0.4375],
624
+ [0.8125, 0.4375],
625
+ [0.8125, 0.4375],
626
+ [0.8541667, 0.4375],
627
+ [0.8541667, 0.4375],
628
+ [0.8958333, 0.4375],
629
+ [0.8958333, 0.4375],
630
+ [0.9375, 0.4375],
631
+ [0.9375, 0.4375],
632
+ [0.9791667, 0.4375],
633
+ [0.9791667, 0.4375],
634
+ [0.02083333, 0.47916666],
635
+ [0.02083333, 0.47916666],
636
+ [0.0625, 0.47916666],
637
+ [0.0625, 0.47916666],
638
+ [0.10416666, 0.47916666],
639
+ [0.10416666, 0.47916666],
640
+ [0.14583333, 0.47916666],
641
+ [0.14583333, 0.47916666],
642
+ [0.1875, 0.47916666],
643
+ [0.1875, 0.47916666],
644
+ [0.22916667, 0.47916666],
645
+ [0.22916667, 0.47916666],
646
+ [0.27083334, 0.47916666],
647
+ [0.27083334, 0.47916666],
648
+ [0.3125, 0.47916666],
649
+ [0.3125, 0.47916666],
650
+ [0.35416666, 0.47916666],
651
+ [0.35416666, 0.47916666],
652
+ [0.39583334, 0.47916666],
653
+ [0.39583334, 0.47916666],
654
+ [0.4375, 0.47916666],
655
+ [0.4375, 0.47916666],
656
+ [0.47916666, 0.47916666],
657
+ [0.47916666, 0.47916666],
658
+ [0.5208333, 0.47916666],
659
+ [0.5208333, 0.47916666],
660
+ [0.5625, 0.47916666],
661
+ [0.5625, 0.47916666],
662
+ [0.6041667, 0.47916666],
663
+ [0.6041667, 0.47916666],
664
+ [0.6458333, 0.47916666],
665
+ [0.6458333, 0.47916666],
666
+ [0.6875, 0.47916666],
667
+ [0.6875, 0.47916666],
668
+ [0.7291667, 0.47916666],
669
+ [0.7291667, 0.47916666],
670
+ [0.7708333, 0.47916666],
671
+ [0.7708333, 0.47916666],
672
+ [0.8125, 0.47916666],
673
+ [0.8125, 0.47916666],
674
+ [0.8541667, 0.47916666],
675
+ [0.8541667, 0.47916666],
676
+ [0.8958333, 0.47916666],
677
+ [0.8958333, 0.47916666],
678
+ [0.9375, 0.47916666],
679
+ [0.9375, 0.47916666],
680
+ [0.9791667, 0.47916666],
681
+ [0.9791667, 0.47916666],
682
+ [0.02083333, 0.5208333],
683
+ [0.02083333, 0.5208333],
684
+ [0.0625, 0.5208333],
685
+ [0.0625, 0.5208333],
686
+ [0.10416666, 0.5208333],
687
+ [0.10416666, 0.5208333],
688
+ [0.14583333, 0.5208333],
689
+ [0.14583333, 0.5208333],
690
+ [0.1875, 0.5208333],
691
+ [0.1875, 0.5208333],
692
+ [0.22916667, 0.5208333],
693
+ [0.22916667, 0.5208333],
694
+ [0.27083334, 0.5208333],
695
+ [0.27083334, 0.5208333],
696
+ [0.3125, 0.5208333],
697
+ [0.3125, 0.5208333],
698
+ [0.35416666, 0.5208333],
699
+ [0.35416666, 0.5208333],
700
+ [0.39583334, 0.5208333],
701
+ [0.39583334, 0.5208333],
702
+ [0.4375, 0.5208333],
703
+ [0.4375, 0.5208333],
704
+ [0.47916666, 0.5208333],
705
+ [0.47916666, 0.5208333],
706
+ [0.5208333, 0.5208333],
707
+ [0.5208333, 0.5208333],
708
+ [0.5625, 0.5208333],
709
+ [0.5625, 0.5208333],
710
+ [0.6041667, 0.5208333],
711
+ [0.6041667, 0.5208333],
712
+ [0.6458333, 0.5208333],
713
+ [0.6458333, 0.5208333],
714
+ [0.6875, 0.5208333],
715
+ [0.6875, 0.5208333],
716
+ [0.7291667, 0.5208333],
717
+ [0.7291667, 0.5208333],
718
+ [0.7708333, 0.5208333],
719
+ [0.7708333, 0.5208333],
720
+ [0.8125, 0.5208333],
721
+ [0.8125, 0.5208333],
722
+ [0.8541667, 0.5208333],
723
+ [0.8541667, 0.5208333],
724
+ [0.8958333, 0.5208333],
725
+ [0.8958333, 0.5208333],
726
+ [0.9375, 0.5208333],
727
+ [0.9375, 0.5208333],
728
+ [0.9791667, 0.5208333],
729
+ [0.9791667, 0.5208333],
730
+ [0.02083333, 0.5625],
731
+ [0.02083333, 0.5625],
732
+ [0.0625, 0.5625],
733
+ [0.0625, 0.5625],
734
+ [0.10416666, 0.5625],
735
+ [0.10416666, 0.5625],
736
+ [0.14583333, 0.5625],
737
+ [0.14583333, 0.5625],
738
+ [0.1875, 0.5625],
739
+ [0.1875, 0.5625],
740
+ [0.22916667, 0.5625],
741
+ [0.22916667, 0.5625],
742
+ [0.27083334, 0.5625],
743
+ [0.27083334, 0.5625],
744
+ [0.3125, 0.5625],
745
+ [0.3125, 0.5625],
746
+ [0.35416666, 0.5625],
747
+ [0.35416666, 0.5625],
748
+ [0.39583334, 0.5625],
749
+ [0.39583334, 0.5625],
750
+ [0.4375, 0.5625],
751
+ [0.4375, 0.5625],
752
+ [0.47916666, 0.5625],
753
+ [0.47916666, 0.5625],
754
+ [0.5208333, 0.5625],
755
+ [0.5208333, 0.5625],
756
+ [0.5625, 0.5625],
757
+ [0.5625, 0.5625],
758
+ [0.6041667, 0.5625],
759
+ [0.6041667, 0.5625],
760
+ [0.6458333, 0.5625],
761
+ [0.6458333, 0.5625],
762
+ [0.6875, 0.5625],
763
+ [0.6875, 0.5625],
764
+ [0.7291667, 0.5625],
765
+ [0.7291667, 0.5625],
766
+ [0.7708333, 0.5625],
767
+ [0.7708333, 0.5625],
768
+ [0.8125, 0.5625],
769
+ [0.8125, 0.5625],
770
+ [0.8541667, 0.5625],
771
+ [0.8541667, 0.5625],
772
+ [0.8958333, 0.5625],
773
+ [0.8958333, 0.5625],
774
+ [0.9375, 0.5625],
775
+ [0.9375, 0.5625],
776
+ [0.9791667, 0.5625],
777
+ [0.9791667, 0.5625],
778
+ [0.02083333, 0.6041667],
779
+ [0.02083333, 0.6041667],
780
+ [0.0625, 0.6041667],
781
+ [0.0625, 0.6041667],
782
+ [0.10416666, 0.6041667],
783
+ [0.10416666, 0.6041667],
784
+ [0.14583333, 0.6041667],
785
+ [0.14583333, 0.6041667],
786
+ [0.1875, 0.6041667],
787
+ [0.1875, 0.6041667],
788
+ [0.22916667, 0.6041667],
789
+ [0.22916667, 0.6041667],
790
+ [0.27083334, 0.6041667],
791
+ [0.27083334, 0.6041667],
792
+ [0.3125, 0.6041667],
793
+ [0.3125, 0.6041667],
794
+ [0.35416666, 0.6041667],
795
+ [0.35416666, 0.6041667],
796
+ [0.39583334, 0.6041667],
797
+ [0.39583334, 0.6041667],
798
+ [0.4375, 0.6041667],
799
+ [0.4375, 0.6041667],
800
+ [0.47916666, 0.6041667],
801
+ [0.47916666, 0.6041667],
802
+ [0.5208333, 0.6041667],
803
+ [0.5208333, 0.6041667],
804
+ [0.5625, 0.6041667],
805
+ [0.5625, 0.6041667],
806
+ [0.6041667, 0.6041667],
807
+ [0.6041667, 0.6041667],
808
+ [0.6458333, 0.6041667],
809
+ [0.6458333, 0.6041667],
810
+ [0.6875, 0.6041667],
811
+ [0.6875, 0.6041667],
812
+ [0.7291667, 0.6041667],
813
+ [0.7291667, 0.6041667],
814
+ [0.7708333, 0.6041667],
815
+ [0.7708333, 0.6041667],
816
+ [0.8125, 0.6041667],
817
+ [0.8125, 0.6041667],
818
+ [0.8541667, 0.6041667],
819
+ [0.8541667, 0.6041667],
820
+ [0.8958333, 0.6041667],
821
+ [0.8958333, 0.6041667],
822
+ [0.9375, 0.6041667],
823
+ [0.9375, 0.6041667],
824
+ [0.9791667, 0.6041667],
825
+ [0.9791667, 0.6041667],
826
+ [0.02083333, 0.6458333],
827
+ [0.02083333, 0.6458333],
828
+ [0.0625, 0.6458333],
829
+ [0.0625, 0.6458333],
830
+ [0.10416666, 0.6458333],
831
+ [0.10416666, 0.6458333],
832
+ [0.14583333, 0.6458333],
833
+ [0.14583333, 0.6458333],
834
+ [0.1875, 0.6458333],
835
+ [0.1875, 0.6458333],
836
+ [0.22916667, 0.6458333],
837
+ [0.22916667, 0.6458333],
838
+ [0.27083334, 0.6458333],
839
+ [0.27083334, 0.6458333],
840
+ [0.3125, 0.6458333],
841
+ [0.3125, 0.6458333],
842
+ [0.35416666, 0.6458333],
843
+ [0.35416666, 0.6458333],
844
+ [0.39583334, 0.6458333],
845
+ [0.39583334, 0.6458333],
846
+ [0.4375, 0.6458333],
847
+ [0.4375, 0.6458333],
848
+ [0.47916666, 0.6458333],
849
+ [0.47916666, 0.6458333],
850
+ [0.5208333, 0.6458333],
851
+ [0.5208333, 0.6458333],
852
+ [0.5625, 0.6458333],
853
+ [0.5625, 0.6458333],
854
+ [0.6041667, 0.6458333],
855
+ [0.6041667, 0.6458333],
856
+ [0.6458333, 0.6458333],
857
+ [0.6458333, 0.6458333],
858
+ [0.6875, 0.6458333],
859
+ [0.6875, 0.6458333],
860
+ [0.7291667, 0.6458333],
861
+ [0.7291667, 0.6458333],
862
+ [0.7708333, 0.6458333],
863
+ [0.7708333, 0.6458333],
864
+ [0.8125, 0.6458333],
865
+ [0.8125, 0.6458333],
866
+ [0.8541667, 0.6458333],
867
+ [0.8541667, 0.6458333],
868
+ [0.8958333, 0.6458333],
869
+ [0.8958333, 0.6458333],
870
+ [0.9375, 0.6458333],
871
+ [0.9375, 0.6458333],
872
+ [0.9791667, 0.6458333],
873
+ [0.9791667, 0.6458333],
874
+ [0.02083333, 0.6875],
875
+ [0.02083333, 0.6875],
876
+ [0.0625, 0.6875],
877
+ [0.0625, 0.6875],
878
+ [0.10416666, 0.6875],
879
+ [0.10416666, 0.6875],
880
+ [0.14583333, 0.6875],
881
+ [0.14583333, 0.6875],
882
+ [0.1875, 0.6875],
883
+ [0.1875, 0.6875],
884
+ [0.22916667, 0.6875],
885
+ [0.22916667, 0.6875],
886
+ [0.27083334, 0.6875],
887
+ [0.27083334, 0.6875],
888
+ [0.3125, 0.6875],
889
+ [0.3125, 0.6875],
890
+ [0.35416666, 0.6875],
891
+ [0.35416666, 0.6875],
892
+ [0.39583334, 0.6875],
893
+ [0.39583334, 0.6875],
894
+ [0.4375, 0.6875],
895
+ [0.4375, 0.6875],
896
+ [0.47916666, 0.6875],
897
+ [0.47916666, 0.6875],
898
+ [0.5208333, 0.6875],
899
+ [0.5208333, 0.6875],
900
+ [0.5625, 0.6875],
901
+ [0.5625, 0.6875],
902
+ [0.6041667, 0.6875],
903
+ [0.6041667, 0.6875],
904
+ [0.6458333, 0.6875],
905
+ [0.6458333, 0.6875],
906
+ [0.6875, 0.6875],
907
+ [0.6875, 0.6875],
908
+ [0.7291667, 0.6875],
909
+ [0.7291667, 0.6875],
910
+ [0.7708333, 0.6875],
911
+ [0.7708333, 0.6875],
912
+ [0.8125, 0.6875],
913
+ [0.8125, 0.6875],
914
+ [0.8541667, 0.6875],
915
+ [0.8541667, 0.6875],
916
+ [0.8958333, 0.6875],
917
+ [0.8958333, 0.6875],
918
+ [0.9375, 0.6875],
919
+ [0.9375, 0.6875],
920
+ [0.9791667, 0.6875],
921
+ [0.9791667, 0.6875],
922
+ [0.02083333, 0.7291667],
923
+ [0.02083333, 0.7291667],
924
+ [0.0625, 0.7291667],
925
+ [0.0625, 0.7291667],
926
+ [0.10416666, 0.7291667],
927
+ [0.10416666, 0.7291667],
928
+ [0.14583333, 0.7291667],
929
+ [0.14583333, 0.7291667],
930
+ [0.1875, 0.7291667],
931
+ [0.1875, 0.7291667],
932
+ [0.22916667, 0.7291667],
933
+ [0.22916667, 0.7291667],
934
+ [0.27083334, 0.7291667],
935
+ [0.27083334, 0.7291667],
936
+ [0.3125, 0.7291667],
937
+ [0.3125, 0.7291667],
938
+ [0.35416666, 0.7291667],
939
+ [0.35416666, 0.7291667],
940
+ [0.39583334, 0.7291667],
941
+ [0.39583334, 0.7291667],
942
+ [0.4375, 0.7291667],
943
+ [0.4375, 0.7291667],
944
+ [0.47916666, 0.7291667],
945
+ [0.47916666, 0.7291667],
946
+ [0.5208333, 0.7291667],
947
+ [0.5208333, 0.7291667],
948
+ [0.5625, 0.7291667],
949
+ [0.5625, 0.7291667],
950
+ [0.6041667, 0.7291667],
951
+ [0.6041667, 0.7291667],
952
+ [0.6458333, 0.7291667],
953
+ [0.6458333, 0.7291667],
954
+ [0.6875, 0.7291667],
955
+ [0.6875, 0.7291667],
956
+ [0.7291667, 0.7291667],
957
+ [0.7291667, 0.7291667],
958
+ [0.7708333, 0.7291667],
959
+ [0.7708333, 0.7291667],
960
+ [0.8125, 0.7291667],
961
+ [0.8125, 0.7291667],
962
+ [0.8541667, 0.7291667],
963
+ [0.8541667, 0.7291667],
964
+ [0.8958333, 0.7291667],
965
+ [0.8958333, 0.7291667],
966
+ [0.9375, 0.7291667],
967
+ [0.9375, 0.7291667],
968
+ [0.9791667, 0.7291667],
969
+ [0.9791667, 0.7291667],
970
+ [0.02083333, 0.7708333],
971
+ [0.02083333, 0.7708333],
972
+ [0.0625, 0.7708333],
973
+ [0.0625, 0.7708333],
974
+ [0.10416666, 0.7708333],
975
+ [0.10416666, 0.7708333],
976
+ [0.14583333, 0.7708333],
977
+ [0.14583333, 0.7708333],
978
+ [0.1875, 0.7708333],
979
+ [0.1875, 0.7708333],
980
+ [0.22916667, 0.7708333],
981
+ [0.22916667, 0.7708333],
982
+ [0.27083334, 0.7708333],
983
+ [0.27083334, 0.7708333],
984
+ [0.3125, 0.7708333],
985
+ [0.3125, 0.7708333],
986
+ [0.35416666, 0.7708333],
987
+ [0.35416666, 0.7708333],
988
+ [0.39583334, 0.7708333],
989
+ [0.39583334, 0.7708333],
990
+ [0.4375, 0.7708333],
991
+ [0.4375, 0.7708333],
992
+ [0.47916666, 0.7708333],
993
+ [0.47916666, 0.7708333],
994
+ [0.5208333, 0.7708333],
995
+ [0.5208333, 0.7708333],
996
+ [0.5625, 0.7708333],
997
+ [0.5625, 0.7708333],
998
+ [0.6041667, 0.7708333],
999
+ [0.6041667, 0.7708333],
1000
+ [0.6458333, 0.7708333],
1001
+ [0.6458333, 0.7708333],
1002
+ [0.6875, 0.7708333],
1003
+ [0.6875, 0.7708333],
1004
+ [0.7291667, 0.7708333],
1005
+ [0.7291667, 0.7708333],
1006
+ [0.7708333, 0.7708333],
1007
+ [0.7708333, 0.7708333],
1008
+ [0.8125, 0.7708333],
1009
+ [0.8125, 0.7708333],
1010
+ [0.8541667, 0.7708333],
1011
+ [0.8541667, 0.7708333],
1012
+ [0.8958333, 0.7708333],
1013
+ [0.8958333, 0.7708333],
1014
+ [0.9375, 0.7708333],
1015
+ [0.9375, 0.7708333],
1016
+ [0.9791667, 0.7708333],
1017
+ [0.9791667, 0.7708333],
1018
+ [0.02083333, 0.8125],
1019
+ [0.02083333, 0.8125],
1020
+ [0.0625, 0.8125],
1021
+ [0.0625, 0.8125],
1022
+ [0.10416666, 0.8125],
1023
+ [0.10416666, 0.8125],
1024
+ [0.14583333, 0.8125],
1025
+ [0.14583333, 0.8125],
1026
+ [0.1875, 0.8125],
1027
+ [0.1875, 0.8125],
1028
+ [0.22916667, 0.8125],
1029
+ [0.22916667, 0.8125],
1030
+ [0.27083334, 0.8125],
1031
+ [0.27083334, 0.8125],
1032
+ [0.3125, 0.8125],
1033
+ [0.3125, 0.8125],
1034
+ [0.35416666, 0.8125],
1035
+ [0.35416666, 0.8125],
1036
+ [0.39583334, 0.8125],
1037
+ [0.39583334, 0.8125],
1038
+ [0.4375, 0.8125],
1039
+ [0.4375, 0.8125],
1040
+ [0.47916666, 0.8125],
1041
+ [0.47916666, 0.8125],
1042
+ [0.5208333, 0.8125],
1043
+ [0.5208333, 0.8125],
1044
+ [0.5625, 0.8125],
1045
+ [0.5625, 0.8125],
1046
+ [0.6041667, 0.8125],
1047
+ [0.6041667, 0.8125],
1048
+ [0.6458333, 0.8125],
1049
+ [0.6458333, 0.8125],
1050
+ [0.6875, 0.8125],
1051
+ [0.6875, 0.8125],
1052
+ [0.7291667, 0.8125],
1053
+ [0.7291667, 0.8125],
1054
+ [0.7708333, 0.8125],
1055
+ [0.7708333, 0.8125],
1056
+ [0.8125, 0.8125],
1057
+ [0.8125, 0.8125],
1058
+ [0.8541667, 0.8125],
1059
+ [0.8541667, 0.8125],
1060
+ [0.8958333, 0.8125],
1061
+ [0.8958333, 0.8125],
1062
+ [0.9375, 0.8125],
1063
+ [0.9375, 0.8125],
1064
+ [0.9791667, 0.8125],
1065
+ [0.9791667, 0.8125],
1066
+ [0.02083333, 0.8541667],
1067
+ [0.02083333, 0.8541667],
1068
+ [0.0625, 0.8541667],
1069
+ [0.0625, 0.8541667],
1070
+ [0.10416666, 0.8541667],
1071
+ [0.10416666, 0.8541667],
1072
+ [0.14583333, 0.8541667],
1073
+ [0.14583333, 0.8541667],
1074
+ [0.1875, 0.8541667],
1075
+ [0.1875, 0.8541667],
1076
+ [0.22916667, 0.8541667],
1077
+ [0.22916667, 0.8541667],
1078
+ [0.27083334, 0.8541667],
1079
+ [0.27083334, 0.8541667],
1080
+ [0.3125, 0.8541667],
1081
+ [0.3125, 0.8541667],
1082
+ [0.35416666, 0.8541667],
1083
+ [0.35416666, 0.8541667],
1084
+ [0.39583334, 0.8541667],
1085
+ [0.39583334, 0.8541667],
1086
+ [0.4375, 0.8541667],
1087
+ [0.4375, 0.8541667],
1088
+ [0.47916666, 0.8541667],
1089
+ [0.47916666, 0.8541667],
1090
+ [0.5208333, 0.8541667],
1091
+ [0.5208333, 0.8541667],
1092
+ [0.5625, 0.8541667],
1093
+ [0.5625, 0.8541667],
1094
+ [0.6041667, 0.8541667],
1095
+ [0.6041667, 0.8541667],
1096
+ [0.6458333, 0.8541667],
1097
+ [0.6458333, 0.8541667],
1098
+ [0.6875, 0.8541667],
1099
+ [0.6875, 0.8541667],
1100
+ [0.7291667, 0.8541667],
1101
+ [0.7291667, 0.8541667],
1102
+ [0.7708333, 0.8541667],
1103
+ [0.7708333, 0.8541667],
1104
+ [0.8125, 0.8541667],
1105
+ [0.8125, 0.8541667],
1106
+ [0.8541667, 0.8541667],
1107
+ [0.8541667, 0.8541667],
1108
+ [0.8958333, 0.8541667],
1109
+ [0.8958333, 0.8541667],
1110
+ [0.9375, 0.8541667],
1111
+ [0.9375, 0.8541667],
1112
+ [0.9791667, 0.8541667],
1113
+ [0.9791667, 0.8541667],
1114
+ [0.02083333, 0.8958333],
1115
+ [0.02083333, 0.8958333],
1116
+ [0.0625, 0.8958333],
1117
+ [0.0625, 0.8958333],
1118
+ [0.10416666, 0.8958333],
1119
+ [0.10416666, 0.8958333],
1120
+ [0.14583333, 0.8958333],
1121
+ [0.14583333, 0.8958333],
1122
+ [0.1875, 0.8958333],
1123
+ [0.1875, 0.8958333],
1124
+ [0.22916667, 0.8958333],
1125
+ [0.22916667, 0.8958333],
1126
+ [0.27083334, 0.8958333],
1127
+ [0.27083334, 0.8958333],
1128
+ [0.3125, 0.8958333],
1129
+ [0.3125, 0.8958333],
1130
+ [0.35416666, 0.8958333],
1131
+ [0.35416666, 0.8958333],
1132
+ [0.39583334, 0.8958333],
1133
+ [0.39583334, 0.8958333],
1134
+ [0.4375, 0.8958333],
1135
+ [0.4375, 0.8958333],
1136
+ [0.47916666, 0.8958333],
1137
+ [0.47916666, 0.8958333],
1138
+ [0.5208333, 0.8958333],
1139
+ [0.5208333, 0.8958333],
1140
+ [0.5625, 0.8958333],
1141
+ [0.5625, 0.8958333],
1142
+ [0.6041667, 0.8958333],
1143
+ [0.6041667, 0.8958333],
1144
+ [0.6458333, 0.8958333],
1145
+ [0.6458333, 0.8958333],
1146
+ [0.6875, 0.8958333],
1147
+ [0.6875, 0.8958333],
1148
+ [0.7291667, 0.8958333],
1149
+ [0.7291667, 0.8958333],
1150
+ [0.7708333, 0.8958333],
1151
+ [0.7708333, 0.8958333],
1152
+ [0.8125, 0.8958333],
1153
+ [0.8125, 0.8958333],
1154
+ [0.8541667, 0.8958333],
1155
+ [0.8541667, 0.8958333],
1156
+ [0.8958333, 0.8958333],
1157
+ [0.8958333, 0.8958333],
1158
+ [0.9375, 0.8958333],
1159
+ [0.9375, 0.8958333],
1160
+ [0.9791667, 0.8958333],
1161
+ [0.9791667, 0.8958333],
1162
+ [0.02083333, 0.9375],
1163
+ [0.02083333, 0.9375],
1164
+ [0.0625, 0.9375],
1165
+ [0.0625, 0.9375],
1166
+ [0.10416666, 0.9375],
1167
+ [0.10416666, 0.9375],
1168
+ [0.14583333, 0.9375],
1169
+ [0.14583333, 0.9375],
1170
+ [0.1875, 0.9375],
1171
+ [0.1875, 0.9375],
1172
+ [0.22916667, 0.9375],
1173
+ [0.22916667, 0.9375],
1174
+ [0.27083334, 0.9375],
1175
+ [0.27083334, 0.9375],
1176
+ [0.3125, 0.9375],
1177
+ [0.3125, 0.9375],
1178
+ [0.35416666, 0.9375],
1179
+ [0.35416666, 0.9375],
1180
+ [0.39583334, 0.9375],
1181
+ [0.39583334, 0.9375],
1182
+ [0.4375, 0.9375],
1183
+ [0.4375, 0.9375],
1184
+ [0.47916666, 0.9375],
1185
+ [0.47916666, 0.9375],
1186
+ [0.5208333, 0.9375],
1187
+ [0.5208333, 0.9375],
1188
+ [0.5625, 0.9375],
1189
+ [0.5625, 0.9375],
1190
+ [0.6041667, 0.9375],
1191
+ [0.6041667, 0.9375],
1192
+ [0.6458333, 0.9375],
1193
+ [0.6458333, 0.9375],
1194
+ [0.6875, 0.9375],
1195
+ [0.6875, 0.9375],
1196
+ [0.7291667, 0.9375],
1197
+ [0.7291667, 0.9375],
1198
+ [0.7708333, 0.9375],
1199
+ [0.7708333, 0.9375],
1200
+ [0.8125, 0.9375],
1201
+ [0.8125, 0.9375],
1202
+ [0.8541667, 0.9375],
1203
+ [0.8541667, 0.9375],
1204
+ [0.8958333, 0.9375],
1205
+ [0.8958333, 0.9375],
1206
+ [0.9375, 0.9375],
1207
+ [0.9375, 0.9375],
1208
+ [0.9791667, 0.9375],
1209
+ [0.9791667, 0.9375],
1210
+ [0.02083333, 0.9791667],
1211
+ [0.02083333, 0.9791667],
1212
+ [0.0625, 0.9791667],
1213
+ [0.0625, 0.9791667],
1214
+ [0.10416666, 0.9791667],
1215
+ [0.10416666, 0.9791667],
1216
+ [0.14583333, 0.9791667],
1217
+ [0.14583333, 0.9791667],
1218
+ [0.1875, 0.9791667],
1219
+ [0.1875, 0.9791667],
1220
+ [0.22916667, 0.9791667],
1221
+ [0.22916667, 0.9791667],
1222
+ [0.27083334, 0.9791667],
1223
+ [0.27083334, 0.9791667],
1224
+ [0.3125, 0.9791667],
1225
+ [0.3125, 0.9791667],
1226
+ [0.35416666, 0.9791667],
1227
+ [0.35416666, 0.9791667],
1228
+ [0.39583334, 0.9791667],
1229
+ [0.39583334, 0.9791667],
1230
+ [0.4375, 0.9791667],
1231
+ [0.4375, 0.9791667],
1232
+ [0.47916666, 0.9791667],
1233
+ [0.47916666, 0.9791667],
1234
+ [0.5208333, 0.9791667],
1235
+ [0.5208333, 0.9791667],
1236
+ [0.5625, 0.9791667],
1237
+ [0.5625, 0.9791667],
1238
+ [0.6041667, 0.9791667],
1239
+ [0.6041667, 0.9791667],
1240
+ [0.6458333, 0.9791667],
1241
+ [0.6458333, 0.9791667],
1242
+ [0.6875, 0.9791667],
1243
+ [0.6875, 0.9791667],
1244
+ [0.7291667, 0.9791667],
1245
+ [0.7291667, 0.9791667],
1246
+ [0.7708333, 0.9791667],
1247
+ [0.7708333, 0.9791667],
1248
+ [0.8125, 0.9791667],
1249
+ [0.8125, 0.9791667],
1250
+ [0.8541667, 0.9791667],
1251
+ [0.8541667, 0.9791667],
1252
+ [0.8958333, 0.9791667],
1253
+ [0.8958333, 0.9791667],
1254
+ [0.9375, 0.9791667],
1255
+ [0.9375, 0.9791667],
1256
+ [0.9791667, 0.9791667],
1257
+ [0.9791667, 0.9791667],
1258
+ [0.04166667, 0.04166667],
1259
+ [0.04166667, 0.04166667],
1260
+ [0.04166667, 0.04166667],
1261
+ [0.04166667, 0.04166667],
1262
+ [0.04166667, 0.04166667],
1263
+ [0.04166667, 0.04166667],
1264
+ [0.125, 0.04166667],
1265
+ [0.125, 0.04166667],
1266
+ [0.125, 0.04166667],
1267
+ [0.125, 0.04166667],
1268
+ [0.125, 0.04166667],
1269
+ [0.125, 0.04166667],
1270
+ [0.20833333, 0.04166667],
1271
+ [0.20833333, 0.04166667],
1272
+ [0.20833333, 0.04166667],
1273
+ [0.20833333, 0.04166667],
1274
+ [0.20833333, 0.04166667],
1275
+ [0.20833333, 0.04166667],
1276
+ [0.29166666, 0.04166667],
1277
+ [0.29166666, 0.04166667],
1278
+ [0.29166666, 0.04166667],
1279
+ [0.29166666, 0.04166667],
1280
+ [0.29166666, 0.04166667],
1281
+ [0.29166666, 0.04166667],
1282
+ [0.375, 0.04166667],
1283
+ [0.375, 0.04166667],
1284
+ [0.375, 0.04166667],
1285
+ [0.375, 0.04166667],
1286
+ [0.375, 0.04166667],
1287
+ [0.375, 0.04166667],
1288
+ [0.45833334, 0.04166667],
1289
+ [0.45833334, 0.04166667],
1290
+ [0.45833334, 0.04166667],
1291
+ [0.45833334, 0.04166667],
1292
+ [0.45833334, 0.04166667],
1293
+ [0.45833334, 0.04166667],
1294
+ [0.5416667, 0.04166667],
1295
+ [0.5416667, 0.04166667],
1296
+ [0.5416667, 0.04166667],
1297
+ [0.5416667, 0.04166667],
1298
+ [0.5416667, 0.04166667],
1299
+ [0.5416667, 0.04166667],
1300
+ [0.625, 0.04166667],
1301
+ [0.625, 0.04166667],
1302
+ [0.625, 0.04166667],
1303
+ [0.625, 0.04166667],
1304
+ [0.625, 0.04166667],
1305
+ [0.625, 0.04166667],
1306
+ [0.7083333, 0.04166667],
1307
+ [0.7083333, 0.04166667],
1308
+ [0.7083333, 0.04166667],
1309
+ [0.7083333, 0.04166667],
1310
+ [0.7083333, 0.04166667],
1311
+ [0.7083333, 0.04166667],
1312
+ [0.7916667, 0.04166667],
1313
+ [0.7916667, 0.04166667],
1314
+ [0.7916667, 0.04166667],
1315
+ [0.7916667, 0.04166667],
1316
+ [0.7916667, 0.04166667],
1317
+ [0.7916667, 0.04166667],
1318
+ [0.875, 0.04166667],
1319
+ [0.875, 0.04166667],
1320
+ [0.875, 0.04166667],
1321
+ [0.875, 0.04166667],
1322
+ [0.875, 0.04166667],
1323
+ [0.875, 0.04166667],
1324
+ [0.9583333, 0.04166667],
1325
+ [0.9583333, 0.04166667],
1326
+ [0.9583333, 0.04166667],
1327
+ [0.9583333, 0.04166667],
1328
+ [0.9583333, 0.04166667],
1329
+ [0.9583333, 0.04166667],
1330
+ [0.04166667, 0.125],
1331
+ [0.04166667, 0.125],
1332
+ [0.04166667, 0.125],
1333
+ [0.04166667, 0.125],
1334
+ [0.04166667, 0.125],
1335
+ [0.04166667, 0.125],
1336
+ [0.125, 0.125],
1337
+ [0.125, 0.125],
1338
+ [0.125, 0.125],
1339
+ [0.125, 0.125],
1340
+ [0.125, 0.125],
1341
+ [0.125, 0.125],
1342
+ [0.20833333, 0.125],
1343
+ [0.20833333, 0.125],
1344
+ [0.20833333, 0.125],
1345
+ [0.20833333, 0.125],
1346
+ [0.20833333, 0.125],
1347
+ [0.20833333, 0.125],
1348
+ [0.29166666, 0.125],
1349
+ [0.29166666, 0.125],
1350
+ [0.29166666, 0.125],
1351
+ [0.29166666, 0.125],
1352
+ [0.29166666, 0.125],
1353
+ [0.29166666, 0.125],
1354
+ [0.375, 0.125],
1355
+ [0.375, 0.125],
1356
+ [0.375, 0.125],
1357
+ [0.375, 0.125],
1358
+ [0.375, 0.125],
1359
+ [0.375, 0.125],
1360
+ [0.45833334, 0.125],
1361
+ [0.45833334, 0.125],
1362
+ [0.45833334, 0.125],
1363
+ [0.45833334, 0.125],
1364
+ [0.45833334, 0.125],
1365
+ [0.45833334, 0.125],
1366
+ [0.5416667, 0.125],
1367
+ [0.5416667, 0.125],
1368
+ [0.5416667, 0.125],
1369
+ [0.5416667, 0.125],
1370
+ [0.5416667, 0.125],
1371
+ [0.5416667, 0.125],
1372
+ [0.625, 0.125],
1373
+ [0.625, 0.125],
1374
+ [0.625, 0.125],
1375
+ [0.625, 0.125],
1376
+ [0.625, 0.125],
1377
+ [0.625, 0.125],
1378
+ [0.7083333, 0.125],
1379
+ [0.7083333, 0.125],
1380
+ [0.7083333, 0.125],
1381
+ [0.7083333, 0.125],
1382
+ [0.7083333, 0.125],
1383
+ [0.7083333, 0.125],
1384
+ [0.7916667, 0.125],
1385
+ [0.7916667, 0.125],
1386
+ [0.7916667, 0.125],
1387
+ [0.7916667, 0.125],
1388
+ [0.7916667, 0.125],
1389
+ [0.7916667, 0.125],
1390
+ [0.875, 0.125],
1391
+ [0.875, 0.125],
1392
+ [0.875, 0.125],
1393
+ [0.875, 0.125],
1394
+ [0.875, 0.125],
1395
+ [0.875, 0.125],
1396
+ [0.9583333, 0.125],
1397
+ [0.9583333, 0.125],
1398
+ [0.9583333, 0.125],
1399
+ [0.9583333, 0.125],
1400
+ [0.9583333, 0.125],
1401
+ [0.9583333, 0.125],
1402
+ [0.04166667, 0.20833333],
1403
+ [0.04166667, 0.20833333],
1404
+ [0.04166667, 0.20833333],
1405
+ [0.04166667, 0.20833333],
1406
+ [0.04166667, 0.20833333],
1407
+ [0.04166667, 0.20833333],
1408
+ [0.125, 0.20833333],
1409
+ [0.125, 0.20833333],
1410
+ [0.125, 0.20833333],
1411
+ [0.125, 0.20833333],
1412
+ [0.125, 0.20833333],
1413
+ [0.125, 0.20833333],
1414
+ [0.20833333, 0.20833333],
1415
+ [0.20833333, 0.20833333],
1416
+ [0.20833333, 0.20833333],
1417
+ [0.20833333, 0.20833333],
1418
+ [0.20833333, 0.20833333],
1419
+ [0.20833333, 0.20833333],
1420
+ [0.29166666, 0.20833333],
1421
+ [0.29166666, 0.20833333],
1422
+ [0.29166666, 0.20833333],
1423
+ [0.29166666, 0.20833333],
1424
+ [0.29166666, 0.20833333],
1425
+ [0.29166666, 0.20833333],
1426
+ [0.375, 0.20833333],
1427
+ [0.375, 0.20833333],
1428
+ [0.375, 0.20833333],
1429
+ [0.375, 0.20833333],
1430
+ [0.375, 0.20833333],
1431
+ [0.375, 0.20833333],
1432
+ [0.45833334, 0.20833333],
1433
+ [0.45833334, 0.20833333],
1434
+ [0.45833334, 0.20833333],
1435
+ [0.45833334, 0.20833333],
1436
+ [0.45833334, 0.20833333],
1437
+ [0.45833334, 0.20833333],
1438
+ [0.5416667, 0.20833333],
1439
+ [0.5416667, 0.20833333],
1440
+ [0.5416667, 0.20833333],
1441
+ [0.5416667, 0.20833333],
1442
+ [0.5416667, 0.20833333],
1443
+ [0.5416667, 0.20833333],
1444
+ [0.625, 0.20833333],
1445
+ [0.625, 0.20833333],
1446
+ [0.625, 0.20833333],
1447
+ [0.625, 0.20833333],
1448
+ [0.625, 0.20833333],
1449
+ [0.625, 0.20833333],
1450
+ [0.7083333, 0.20833333],
1451
+ [0.7083333, 0.20833333],
1452
+ [0.7083333, 0.20833333],
1453
+ [0.7083333, 0.20833333],
1454
+ [0.7083333, 0.20833333],
1455
+ [0.7083333, 0.20833333],
1456
+ [0.7916667, 0.20833333],
1457
+ [0.7916667, 0.20833333],
1458
+ [0.7916667, 0.20833333],
1459
+ [0.7916667, 0.20833333],
1460
+ [0.7916667, 0.20833333],
1461
+ [0.7916667, 0.20833333],
1462
+ [0.875, 0.20833333],
1463
+ [0.875, 0.20833333],
1464
+ [0.875, 0.20833333],
1465
+ [0.875, 0.20833333],
1466
+ [0.875, 0.20833333],
1467
+ [0.875, 0.20833333],
1468
+ [0.9583333, 0.20833333],
1469
+ [0.9583333, 0.20833333],
1470
+ [0.9583333, 0.20833333],
1471
+ [0.9583333, 0.20833333],
1472
+ [0.9583333, 0.20833333],
1473
+ [0.9583333, 0.20833333],
1474
+ [0.04166667, 0.29166666],
1475
+ [0.04166667, 0.29166666],
1476
+ [0.04166667, 0.29166666],
1477
+ [0.04166667, 0.29166666],
1478
+ [0.04166667, 0.29166666],
1479
+ [0.04166667, 0.29166666],
1480
+ [0.125, 0.29166666],
1481
+ [0.125, 0.29166666],
1482
+ [0.125, 0.29166666],
1483
+ [0.125, 0.29166666],
1484
+ [0.125, 0.29166666],
1485
+ [0.125, 0.29166666],
1486
+ [0.20833333, 0.29166666],
1487
+ [0.20833333, 0.29166666],
1488
+ [0.20833333, 0.29166666],
1489
+ [0.20833333, 0.29166666],
1490
+ [0.20833333, 0.29166666],
1491
+ [0.20833333, 0.29166666],
1492
+ [0.29166666, 0.29166666],
1493
+ [0.29166666, 0.29166666],
1494
+ [0.29166666, 0.29166666],
1495
+ [0.29166666, 0.29166666],
1496
+ [0.29166666, 0.29166666],
1497
+ [0.29166666, 0.29166666],
1498
+ [0.375, 0.29166666],
1499
+ [0.375, 0.29166666],
1500
+ [0.375, 0.29166666],
1501
+ [0.375, 0.29166666],
1502
+ [0.375, 0.29166666],
1503
+ [0.375, 0.29166666],
1504
+ [0.45833334, 0.29166666],
1505
+ [0.45833334, 0.29166666],
1506
+ [0.45833334, 0.29166666],
1507
+ [0.45833334, 0.29166666],
1508
+ [0.45833334, 0.29166666],
1509
+ [0.45833334, 0.29166666],
1510
+ [0.5416667, 0.29166666],
1511
+ [0.5416667, 0.29166666],
1512
+ [0.5416667, 0.29166666],
1513
+ [0.5416667, 0.29166666],
1514
+ [0.5416667, 0.29166666],
1515
+ [0.5416667, 0.29166666],
1516
+ [0.625, 0.29166666],
1517
+ [0.625, 0.29166666],
1518
+ [0.625, 0.29166666],
1519
+ [0.625, 0.29166666],
1520
+ [0.625, 0.29166666],
1521
+ [0.625, 0.29166666],
1522
+ [0.7083333, 0.29166666],
1523
+ [0.7083333, 0.29166666],
1524
+ [0.7083333, 0.29166666],
1525
+ [0.7083333, 0.29166666],
1526
+ [0.7083333, 0.29166666],
1527
+ [0.7083333, 0.29166666],
1528
+ [0.7916667, 0.29166666],
1529
+ [0.7916667, 0.29166666],
1530
+ [0.7916667, 0.29166666],
1531
+ [0.7916667, 0.29166666],
1532
+ [0.7916667, 0.29166666],
1533
+ [0.7916667, 0.29166666],
1534
+ [0.875, 0.29166666],
1535
+ [0.875, 0.29166666],
1536
+ [0.875, 0.29166666],
1537
+ [0.875, 0.29166666],
1538
+ [0.875, 0.29166666],
1539
+ [0.875, 0.29166666],
1540
+ [0.9583333, 0.29166666],
1541
+ [0.9583333, 0.29166666],
1542
+ [0.9583333, 0.29166666],
1543
+ [0.9583333, 0.29166666],
1544
+ [0.9583333, 0.29166666],
1545
+ [0.9583333, 0.29166666],
1546
+ [0.04166667, 0.375],
1547
+ [0.04166667, 0.375],
1548
+ [0.04166667, 0.375],
1549
+ [0.04166667, 0.375],
1550
+ [0.04166667, 0.375],
1551
+ [0.04166667, 0.375],
1552
+ [0.125, 0.375],
1553
+ [0.125, 0.375],
1554
+ [0.125, 0.375],
1555
+ [0.125, 0.375],
1556
+ [0.125, 0.375],
1557
+ [0.125, 0.375],
1558
+ [0.20833333, 0.375],
1559
+ [0.20833333, 0.375],
1560
+ [0.20833333, 0.375],
1561
+ [0.20833333, 0.375],
1562
+ [0.20833333, 0.375],
1563
+ [0.20833333, 0.375],
1564
+ [0.29166666, 0.375],
1565
+ [0.29166666, 0.375],
1566
+ [0.29166666, 0.375],
1567
+ [0.29166666, 0.375],
1568
+ [0.29166666, 0.375],
1569
+ [0.29166666, 0.375],
1570
+ [0.375, 0.375],
1571
+ [0.375, 0.375],
1572
+ [0.375, 0.375],
1573
+ [0.375, 0.375],
1574
+ [0.375, 0.375],
1575
+ [0.375, 0.375],
1576
+ [0.45833334, 0.375],
1577
+ [0.45833334, 0.375],
1578
+ [0.45833334, 0.375],
1579
+ [0.45833334, 0.375],
1580
+ [0.45833334, 0.375],
1581
+ [0.45833334, 0.375],
1582
+ [0.5416667, 0.375],
1583
+ [0.5416667, 0.375],
1584
+ [0.5416667, 0.375],
1585
+ [0.5416667, 0.375],
1586
+ [0.5416667, 0.375],
1587
+ [0.5416667, 0.375],
1588
+ [0.625, 0.375],
1589
+ [0.625, 0.375],
1590
+ [0.625, 0.375],
1591
+ [0.625, 0.375],
1592
+ [0.625, 0.375],
1593
+ [0.625, 0.375],
1594
+ [0.7083333, 0.375],
1595
+ [0.7083333, 0.375],
1596
+ [0.7083333, 0.375],
1597
+ [0.7083333, 0.375],
1598
+ [0.7083333, 0.375],
1599
+ [0.7083333, 0.375],
1600
+ [0.7916667, 0.375],
1601
+ [0.7916667, 0.375],
1602
+ [0.7916667, 0.375],
1603
+ [0.7916667, 0.375],
1604
+ [0.7916667, 0.375],
1605
+ [0.7916667, 0.375],
1606
+ [0.875, 0.375],
1607
+ [0.875, 0.375],
1608
+ [0.875, 0.375],
1609
+ [0.875, 0.375],
1610
+ [0.875, 0.375],
1611
+ [0.875, 0.375],
1612
+ [0.9583333, 0.375],
1613
+ [0.9583333, 0.375],
1614
+ [0.9583333, 0.375],
1615
+ [0.9583333, 0.375],
1616
+ [0.9583333, 0.375],
1617
+ [0.9583333, 0.375],
1618
+ [0.04166667, 0.45833334],
1619
+ [0.04166667, 0.45833334],
1620
+ [0.04166667, 0.45833334],
1621
+ [0.04166667, 0.45833334],
1622
+ [0.04166667, 0.45833334],
1623
+ [0.04166667, 0.45833334],
1624
+ [0.125, 0.45833334],
1625
+ [0.125, 0.45833334],
1626
+ [0.125, 0.45833334],
1627
+ [0.125, 0.45833334],
1628
+ [0.125, 0.45833334],
1629
+ [0.125, 0.45833334],
1630
+ [0.20833333, 0.45833334],
1631
+ [0.20833333, 0.45833334],
1632
+ [0.20833333, 0.45833334],
1633
+ [0.20833333, 0.45833334],
1634
+ [0.20833333, 0.45833334],
1635
+ [0.20833333, 0.45833334],
1636
+ [0.29166666, 0.45833334],
1637
+ [0.29166666, 0.45833334],
1638
+ [0.29166666, 0.45833334],
1639
+ [0.29166666, 0.45833334],
1640
+ [0.29166666, 0.45833334],
1641
+ [0.29166666, 0.45833334],
1642
+ [0.375, 0.45833334],
1643
+ [0.375, 0.45833334],
1644
+ [0.375, 0.45833334],
1645
+ [0.375, 0.45833334],
1646
+ [0.375, 0.45833334],
1647
+ [0.375, 0.45833334],
1648
+ [0.45833334, 0.45833334],
1649
+ [0.45833334, 0.45833334],
1650
+ [0.45833334, 0.45833334],
1651
+ [0.45833334, 0.45833334],
1652
+ [0.45833334, 0.45833334],
1653
+ [0.45833334, 0.45833334],
1654
+ [0.5416667, 0.45833334],
1655
+ [0.5416667, 0.45833334],
1656
+ [0.5416667, 0.45833334],
1657
+ [0.5416667, 0.45833334],
1658
+ [0.5416667, 0.45833334],
1659
+ [0.5416667, 0.45833334],
1660
+ [0.625, 0.45833334],
1661
+ [0.625, 0.45833334],
1662
+ [0.625, 0.45833334],
1663
+ [0.625, 0.45833334],
1664
+ [0.625, 0.45833334],
1665
+ [0.625, 0.45833334],
1666
+ [0.7083333, 0.45833334],
1667
+ [0.7083333, 0.45833334],
1668
+ [0.7083333, 0.45833334],
1669
+ [0.7083333, 0.45833334],
1670
+ [0.7083333, 0.45833334],
1671
+ [0.7083333, 0.45833334],
1672
+ [0.7916667, 0.45833334],
1673
+ [0.7916667, 0.45833334],
1674
+ [0.7916667, 0.45833334],
1675
+ [0.7916667, 0.45833334],
1676
+ [0.7916667, 0.45833334],
1677
+ [0.7916667, 0.45833334],
1678
+ [0.875, 0.45833334],
1679
+ [0.875, 0.45833334],
1680
+ [0.875, 0.45833334],
1681
+ [0.875, 0.45833334],
1682
+ [0.875, 0.45833334],
1683
+ [0.875, 0.45833334],
1684
+ [0.9583333, 0.45833334],
1685
+ [0.9583333, 0.45833334],
1686
+ [0.9583333, 0.45833334],
1687
+ [0.9583333, 0.45833334],
1688
+ [0.9583333, 0.45833334],
1689
+ [0.9583333, 0.45833334],
1690
+ [0.04166667, 0.5416667],
1691
+ [0.04166667, 0.5416667],
1692
+ [0.04166667, 0.5416667],
1693
+ [0.04166667, 0.5416667],
1694
+ [0.04166667, 0.5416667],
1695
+ [0.04166667, 0.5416667],
1696
+ [0.125, 0.5416667],
1697
+ [0.125, 0.5416667],
1698
+ [0.125, 0.5416667],
1699
+ [0.125, 0.5416667],
1700
+ [0.125, 0.5416667],
1701
+ [0.125, 0.5416667],
1702
+ [0.20833333, 0.5416667],
1703
+ [0.20833333, 0.5416667],
1704
+ [0.20833333, 0.5416667],
1705
+ [0.20833333, 0.5416667],
1706
+ [0.20833333, 0.5416667],
1707
+ [0.20833333, 0.5416667],
1708
+ [0.29166666, 0.5416667],
1709
+ [0.29166666, 0.5416667],
1710
+ [0.29166666, 0.5416667],
1711
+ [0.29166666, 0.5416667],
1712
+ [0.29166666, 0.5416667],
1713
+ [0.29166666, 0.5416667],
1714
+ [0.375, 0.5416667],
1715
+ [0.375, 0.5416667],
1716
+ [0.375, 0.5416667],
1717
+ [0.375, 0.5416667],
1718
+ [0.375, 0.5416667],
1719
+ [0.375, 0.5416667],
1720
+ [0.45833334, 0.5416667],
1721
+ [0.45833334, 0.5416667],
1722
+ [0.45833334, 0.5416667],
1723
+ [0.45833334, 0.5416667],
1724
+ [0.45833334, 0.5416667],
1725
+ [0.45833334, 0.5416667],
1726
+ [0.5416667, 0.5416667],
1727
+ [0.5416667, 0.5416667],
1728
+ [0.5416667, 0.5416667],
1729
+ [0.5416667, 0.5416667],
1730
+ [0.5416667, 0.5416667],
1731
+ [0.5416667, 0.5416667],
1732
+ [0.625, 0.5416667],
1733
+ [0.625, 0.5416667],
1734
+ [0.625, 0.5416667],
1735
+ [0.625, 0.5416667],
1736
+ [0.625, 0.5416667],
1737
+ [0.625, 0.5416667],
1738
+ [0.7083333, 0.5416667],
1739
+ [0.7083333, 0.5416667],
1740
+ [0.7083333, 0.5416667],
1741
+ [0.7083333, 0.5416667],
1742
+ [0.7083333, 0.5416667],
1743
+ [0.7083333, 0.5416667],
1744
+ [0.7916667, 0.5416667],
1745
+ [0.7916667, 0.5416667],
1746
+ [0.7916667, 0.5416667],
1747
+ [0.7916667, 0.5416667],
1748
+ [0.7916667, 0.5416667],
1749
+ [0.7916667, 0.5416667],
1750
+ [0.875, 0.5416667],
1751
+ [0.875, 0.5416667],
1752
+ [0.875, 0.5416667],
1753
+ [0.875, 0.5416667],
1754
+ [0.875, 0.5416667],
1755
+ [0.875, 0.5416667],
1756
+ [0.9583333, 0.5416667],
1757
+ [0.9583333, 0.5416667],
1758
+ [0.9583333, 0.5416667],
1759
+ [0.9583333, 0.5416667],
1760
+ [0.9583333, 0.5416667],
1761
+ [0.9583333, 0.5416667],
1762
+ [0.04166667, 0.625],
1763
+ [0.04166667, 0.625],
1764
+ [0.04166667, 0.625],
1765
+ [0.04166667, 0.625],
1766
+ [0.04166667, 0.625],
1767
+ [0.04166667, 0.625],
1768
+ [0.125, 0.625],
1769
+ [0.125, 0.625],
1770
+ [0.125, 0.625],
1771
+ [0.125, 0.625],
1772
+ [0.125, 0.625],
1773
+ [0.125, 0.625],
1774
+ [0.20833333, 0.625],
1775
+ [0.20833333, 0.625],
1776
+ [0.20833333, 0.625],
1777
+ [0.20833333, 0.625],
1778
+ [0.20833333, 0.625],
1779
+ [0.20833333, 0.625],
1780
+ [0.29166666, 0.625],
1781
+ [0.29166666, 0.625],
1782
+ [0.29166666, 0.625],
1783
+ [0.29166666, 0.625],
1784
+ [0.29166666, 0.625],
1785
+ [0.29166666, 0.625],
1786
+ [0.375, 0.625],
1787
+ [0.375, 0.625],
1788
+ [0.375, 0.625],
1789
+ [0.375, 0.625],
1790
+ [0.375, 0.625],
1791
+ [0.375, 0.625],
1792
+ [0.45833334, 0.625],
1793
+ [0.45833334, 0.625],
1794
+ [0.45833334, 0.625],
1795
+ [0.45833334, 0.625],
1796
+ [0.45833334, 0.625],
1797
+ [0.45833334, 0.625],
1798
+ [0.5416667, 0.625],
1799
+ [0.5416667, 0.625],
1800
+ [0.5416667, 0.625],
1801
+ [0.5416667, 0.625],
1802
+ [0.5416667, 0.625],
1803
+ [0.5416667, 0.625],
1804
+ [0.625, 0.625],
1805
+ [0.625, 0.625],
1806
+ [0.625, 0.625],
1807
+ [0.625, 0.625],
1808
+ [0.625, 0.625],
1809
+ [0.625, 0.625],
1810
+ [0.7083333, 0.625],
1811
+ [0.7083333, 0.625],
1812
+ [0.7083333, 0.625],
1813
+ [0.7083333, 0.625],
1814
+ [0.7083333, 0.625],
1815
+ [0.7083333, 0.625],
1816
+ [0.7916667, 0.625],
1817
+ [0.7916667, 0.625],
1818
+ [0.7916667, 0.625],
1819
+ [0.7916667, 0.625],
1820
+ [0.7916667, 0.625],
1821
+ [0.7916667, 0.625],
1822
+ [0.875, 0.625],
1823
+ [0.875, 0.625],
1824
+ [0.875, 0.625],
1825
+ [0.875, 0.625],
1826
+ [0.875, 0.625],
1827
+ [0.875, 0.625],
1828
+ [0.9583333, 0.625],
1829
+ [0.9583333, 0.625],
1830
+ [0.9583333, 0.625],
1831
+ [0.9583333, 0.625],
1832
+ [0.9583333, 0.625],
1833
+ [0.9583333, 0.625],
1834
+ [0.04166667, 0.7083333],
1835
+ [0.04166667, 0.7083333],
1836
+ [0.04166667, 0.7083333],
1837
+ [0.04166667, 0.7083333],
1838
+ [0.04166667, 0.7083333],
1839
+ [0.04166667, 0.7083333],
1840
+ [0.125, 0.7083333],
1841
+ [0.125, 0.7083333],
1842
+ [0.125, 0.7083333],
1843
+ [0.125, 0.7083333],
1844
+ [0.125, 0.7083333],
1845
+ [0.125, 0.7083333],
1846
+ [0.20833333, 0.7083333],
1847
+ [0.20833333, 0.7083333],
1848
+ [0.20833333, 0.7083333],
1849
+ [0.20833333, 0.7083333],
1850
+ [0.20833333, 0.7083333],
1851
+ [0.20833333, 0.7083333],
1852
+ [0.29166666, 0.7083333],
1853
+ [0.29166666, 0.7083333],
1854
+ [0.29166666, 0.7083333],
1855
+ [0.29166666, 0.7083333],
1856
+ [0.29166666, 0.7083333],
1857
+ [0.29166666, 0.7083333],
1858
+ [0.375, 0.7083333],
1859
+ [0.375, 0.7083333],
1860
+ [0.375, 0.7083333],
1861
+ [0.375, 0.7083333],
1862
+ [0.375, 0.7083333],
1863
+ [0.375, 0.7083333],
1864
+ [0.45833334, 0.7083333],
1865
+ [0.45833334, 0.7083333],
1866
+ [0.45833334, 0.7083333],
1867
+ [0.45833334, 0.7083333],
1868
+ [0.45833334, 0.7083333],
1869
+ [0.45833334, 0.7083333],
1870
+ [0.5416667, 0.7083333],
1871
+ [0.5416667, 0.7083333],
1872
+ [0.5416667, 0.7083333],
1873
+ [0.5416667, 0.7083333],
1874
+ [0.5416667, 0.7083333],
1875
+ [0.5416667, 0.7083333],
1876
+ [0.625, 0.7083333],
1877
+ [0.625, 0.7083333],
1878
+ [0.625, 0.7083333],
1879
+ [0.625, 0.7083333],
1880
+ [0.625, 0.7083333],
1881
+ [0.625, 0.7083333],
1882
+ [0.7083333, 0.7083333],
1883
+ [0.7083333, 0.7083333],
1884
+ [0.7083333, 0.7083333],
1885
+ [0.7083333, 0.7083333],
1886
+ [0.7083333, 0.7083333],
1887
+ [0.7083333, 0.7083333],
1888
+ [0.7916667, 0.7083333],
1889
+ [0.7916667, 0.7083333],
1890
+ [0.7916667, 0.7083333],
1891
+ [0.7916667, 0.7083333],
1892
+ [0.7916667, 0.7083333],
1893
+ [0.7916667, 0.7083333],
1894
+ [0.875, 0.7083333],
1895
+ [0.875, 0.7083333],
1896
+ [0.875, 0.7083333],
1897
+ [0.875, 0.7083333],
1898
+ [0.875, 0.7083333],
1899
+ [0.875, 0.7083333],
1900
+ [0.9583333, 0.7083333],
1901
+ [0.9583333, 0.7083333],
1902
+ [0.9583333, 0.7083333],
1903
+ [0.9583333, 0.7083333],
1904
+ [0.9583333, 0.7083333],
1905
+ [0.9583333, 0.7083333],
1906
+ [0.04166667, 0.7916667],
1907
+ [0.04166667, 0.7916667],
1908
+ [0.04166667, 0.7916667],
1909
+ [0.04166667, 0.7916667],
1910
+ [0.04166667, 0.7916667],
1911
+ [0.04166667, 0.7916667],
1912
+ [0.125, 0.7916667],
1913
+ [0.125, 0.7916667],
1914
+ [0.125, 0.7916667],
1915
+ [0.125, 0.7916667],
1916
+ [0.125, 0.7916667],
1917
+ [0.125, 0.7916667],
1918
+ [0.20833333, 0.7916667],
1919
+ [0.20833333, 0.7916667],
1920
+ [0.20833333, 0.7916667],
1921
+ [0.20833333, 0.7916667],
1922
+ [0.20833333, 0.7916667],
1923
+ [0.20833333, 0.7916667],
1924
+ [0.29166666, 0.7916667],
1925
+ [0.29166666, 0.7916667],
1926
+ [0.29166666, 0.7916667],
1927
+ [0.29166666, 0.7916667],
1928
+ [0.29166666, 0.7916667],
1929
+ [0.29166666, 0.7916667],
1930
+ [0.375, 0.7916667],
1931
+ [0.375, 0.7916667],
1932
+ [0.375, 0.7916667],
1933
+ [0.375, 0.7916667],
1934
+ [0.375, 0.7916667],
1935
+ [0.375, 0.7916667],
1936
+ [0.45833334, 0.7916667],
1937
+ [0.45833334, 0.7916667],
1938
+ [0.45833334, 0.7916667],
1939
+ [0.45833334, 0.7916667],
1940
+ [0.45833334, 0.7916667],
1941
+ [0.45833334, 0.7916667],
1942
+ [0.5416667, 0.7916667],
1943
+ [0.5416667, 0.7916667],
1944
+ [0.5416667, 0.7916667],
1945
+ [0.5416667, 0.7916667],
1946
+ [0.5416667, 0.7916667],
1947
+ [0.5416667, 0.7916667],
1948
+ [0.625, 0.7916667],
1949
+ [0.625, 0.7916667],
1950
+ [0.625, 0.7916667],
1951
+ [0.625, 0.7916667],
1952
+ [0.625, 0.7916667],
1953
+ [0.625, 0.7916667],
1954
+ [0.7083333, 0.7916667],
1955
+ [0.7083333, 0.7916667],
1956
+ [0.7083333, 0.7916667],
1957
+ [0.7083333, 0.7916667],
1958
+ [0.7083333, 0.7916667],
1959
+ [0.7083333, 0.7916667],
1960
+ [0.7916667, 0.7916667],
1961
+ [0.7916667, 0.7916667],
1962
+ [0.7916667, 0.7916667],
1963
+ [0.7916667, 0.7916667],
1964
+ [0.7916667, 0.7916667],
1965
+ [0.7916667, 0.7916667],
1966
+ [0.875, 0.7916667],
1967
+ [0.875, 0.7916667],
1968
+ [0.875, 0.7916667],
1969
+ [0.875, 0.7916667],
1970
+ [0.875, 0.7916667],
1971
+ [0.875, 0.7916667],
1972
+ [0.9583333, 0.7916667],
1973
+ [0.9583333, 0.7916667],
1974
+ [0.9583333, 0.7916667],
1975
+ [0.9583333, 0.7916667],
1976
+ [0.9583333, 0.7916667],
1977
+ [0.9583333, 0.7916667],
1978
+ [0.04166667, 0.875],
1979
+ [0.04166667, 0.875],
1980
+ [0.04166667, 0.875],
1981
+ [0.04166667, 0.875],
1982
+ [0.04166667, 0.875],
1983
+ [0.04166667, 0.875],
1984
+ [0.125, 0.875],
1985
+ [0.125, 0.875],
1986
+ [0.125, 0.875],
1987
+ [0.125, 0.875],
1988
+ [0.125, 0.875],
1989
+ [0.125, 0.875],
1990
+ [0.20833333, 0.875],
1991
+ [0.20833333, 0.875],
1992
+ [0.20833333, 0.875],
1993
+ [0.20833333, 0.875],
1994
+ [0.20833333, 0.875],
1995
+ [0.20833333, 0.875],
1996
+ [0.29166666, 0.875],
1997
+ [0.29166666, 0.875],
1998
+ [0.29166666, 0.875],
1999
+ [0.29166666, 0.875],
2000
+ [0.29166666, 0.875],
2001
+ [0.29166666, 0.875],
2002
+ [0.375, 0.875],
2003
+ [0.375, 0.875],
2004
+ [0.375, 0.875],
2005
+ [0.375, 0.875],
2006
+ [0.375, 0.875],
2007
+ [0.375, 0.875],
2008
+ [0.45833334, 0.875],
2009
+ [0.45833334, 0.875],
2010
+ [0.45833334, 0.875],
2011
+ [0.45833334, 0.875],
2012
+ [0.45833334, 0.875],
2013
+ [0.45833334, 0.875],
2014
+ [0.5416667, 0.875],
2015
+ [0.5416667, 0.875],
2016
+ [0.5416667, 0.875],
2017
+ [0.5416667, 0.875],
2018
+ [0.5416667, 0.875],
2019
+ [0.5416667, 0.875],
2020
+ [0.625, 0.875],
2021
+ [0.625, 0.875],
2022
+ [0.625, 0.875],
2023
+ [0.625, 0.875],
2024
+ [0.625, 0.875],
2025
+ [0.625, 0.875],
2026
+ [0.7083333, 0.875],
2027
+ [0.7083333, 0.875],
2028
+ [0.7083333, 0.875],
2029
+ [0.7083333, 0.875],
2030
+ [0.7083333, 0.875],
2031
+ [0.7083333, 0.875],
2032
+ [0.7916667, 0.875],
2033
+ [0.7916667, 0.875],
2034
+ [0.7916667, 0.875],
2035
+ [0.7916667, 0.875],
2036
+ [0.7916667, 0.875],
2037
+ [0.7916667, 0.875],
2038
+ [0.875, 0.875],
2039
+ [0.875, 0.875],
2040
+ [0.875, 0.875],
2041
+ [0.875, 0.875],
2042
+ [0.875, 0.875],
2043
+ [0.875, 0.875],
2044
+ [0.9583333, 0.875],
2045
+ [0.9583333, 0.875],
2046
+ [0.9583333, 0.875],
2047
+ [0.9583333, 0.875],
2048
+ [0.9583333, 0.875],
2049
+ [0.9583333, 0.875],
2050
+ [0.04166667, 0.9583333],
2051
+ [0.04166667, 0.9583333],
2052
+ [0.04166667, 0.9583333],
2053
+ [0.04166667, 0.9583333],
2054
+ [0.04166667, 0.9583333],
2055
+ [0.04166667, 0.9583333],
2056
+ [0.125, 0.9583333],
2057
+ [0.125, 0.9583333],
2058
+ [0.125, 0.9583333],
2059
+ [0.125, 0.9583333],
2060
+ [0.125, 0.9583333],
2061
+ [0.125, 0.9583333],
2062
+ [0.20833333, 0.9583333],
2063
+ [0.20833333, 0.9583333],
2064
+ [0.20833333, 0.9583333],
2065
+ [0.20833333, 0.9583333],
2066
+ [0.20833333, 0.9583333],
2067
+ [0.20833333, 0.9583333],
2068
+ [0.29166666, 0.9583333],
2069
+ [0.29166666, 0.9583333],
2070
+ [0.29166666, 0.9583333],
2071
+ [0.29166666, 0.9583333],
2072
+ [0.29166666, 0.9583333],
2073
+ [0.29166666, 0.9583333],
2074
+ [0.375, 0.9583333],
2075
+ [0.375, 0.9583333],
2076
+ [0.375, 0.9583333],
2077
+ [0.375, 0.9583333],
2078
+ [0.375, 0.9583333],
2079
+ [0.375, 0.9583333],
2080
+ [0.45833334, 0.9583333],
2081
+ [0.45833334, 0.9583333],
2082
+ [0.45833334, 0.9583333],
2083
+ [0.45833334, 0.9583333],
2084
+ [0.45833334, 0.9583333],
2085
+ [0.45833334, 0.9583333],
2086
+ [0.5416667, 0.9583333],
2087
+ [0.5416667, 0.9583333],
2088
+ [0.5416667, 0.9583333],
2089
+ [0.5416667, 0.9583333],
2090
+ [0.5416667, 0.9583333],
2091
+ [0.5416667, 0.9583333],
2092
+ [0.625, 0.9583333],
2093
+ [0.625, 0.9583333],
2094
+ [0.625, 0.9583333],
2095
+ [0.625, 0.9583333],
2096
+ [0.625, 0.9583333],
2097
+ [0.625, 0.9583333],
2098
+ [0.7083333, 0.9583333],
2099
+ [0.7083333, 0.9583333],
2100
+ [0.7083333, 0.9583333],
2101
+ [0.7083333, 0.9583333],
2102
+ [0.7083333, 0.9583333],
2103
+ [0.7083333, 0.9583333],
2104
+ [0.7916667, 0.9583333],
2105
+ [0.7916667, 0.9583333],
2106
+ [0.7916667, 0.9583333],
2107
+ [0.7916667, 0.9583333],
2108
+ [0.7916667, 0.9583333],
2109
+ [0.7916667, 0.9583333],
2110
+ [0.875, 0.9583333],
2111
+ [0.875, 0.9583333],
2112
+ [0.875, 0.9583333],
2113
+ [0.875, 0.9583333],
2114
+ [0.875, 0.9583333],
2115
+ [0.875, 0.9583333],
2116
+ [0.9583333, 0.9583333],
2117
+ [0.9583333, 0.9583333],
2118
+ [0.9583333, 0.9583333],
2119
+ [0.9583333, 0.9583333],
2120
+ [0.9583333, 0.9583333],
2121
+ [0.9583333, 0.9583333]], dtype=np.float32)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ opencv-python
2
+ gradio
3
+ numpy
4
+ huggingface_hub