                      lmk = cv2.transform(lmk, matrix, lmk.shape).squeeze()
                      face.landmarks_xy[idx] = lmk
          else:
              face.landmarks_xy[landmark_index] += (shift_x, shift_y)
          face.mask = self._extractor.get_masks(frame_index, face_index)
          self._globals.tk_update.set(True)
  
      def landmarks(self, frame_index, face_index, shift_x, shift_y):
          """ Shift all of the landmarks and bounding box for the
          :class:`~lib.align.DetectedFace` object at the given frame and face indices by the
 
</s> remove         face.mask = self._extractor.get_masks(frame_index, face_index)
 </s> add  </s> remove         face.mask = self._extractor.get_masks(frame_index, face_index)
 </s> add  </s> remove         face.mask = self._extractor.get_masks(frame_index, face_index)
 </s> add  </s> remove         """ Update the jpg thumbnail and the viewport thumbnail on a face edit.
 </s> add         """ Update the jpg thumbnail, the viewport thumbnail, the landmark masks and the aligned
        face on a face edit.
                      lmk = cv2.transform(lmk, matrix, lmk.shape).squeeze()
                      face.landmarks_xy[idx] = lmk
          else:
              face.landmarks_xy[landmark_index] += (shift_x, shift_y)

          self._globals.tk_update.set(True)
  
      def landmarks(self, frame_index, face_index, shift_x, shift_y):
          """ Shift all of the landmarks and bounding box for the
          :class:`~lib.align.DetectedFace` object at the given frame and face indices by the
keep keep keep keep replace keep keep keep keep keep
 Add Misalignment Detection
  - lib.align.AlignedFace - Add average_distance property (distance from mean_face)
  - tools.manual - Add misaligned Faces filter
  - tools.sort - Add sort by distance (misaligned sort)Add "Misaligned Faces" filter to manual tool 
tools/manual/detected_faces.py