          return mask.mask.squeeze()
  
      def reset(self):
          """ Reset all the cached objects on a face size change. """
          self._landmarks = dict()
          self._tk_faces = dict()
  
      def update(self, refresh_annotations=False):
          """ Update the viewport.
  
          Parameters
 
</s> remove         self._landmarks = dict()
        self._tk_faces = dict()
 </s> add         self._landmarks = {}
        self._tk_faces = {} </s> remove _HASHES_SEEN = dict()
 </s> add _HASHES_SEEN: Dict[str, Dict[str, int]] = {} </s> remove         face.landmarks_xy = ((face.landmarks_xy - center) * scale) + center
 </s> add         face._landmarks_xy = ((face.landmarks_xy - center) * scale) + center </s> remove def update_legacy_png_header(filename, alignments):
 </s> add def update_legacy_png_header(filename: str, alignments: Alignments
                             ) -> Optional[PNGHeaderDict]: </s> remove         retval = all("thumb" in face
 </s> add         retval = all(face.get("thumb")
        self._landmarks = {}
        self._tk_faces = {}
          return mask.mask.squeeze()
  
      def reset(self):
          """ Reset all the cached objects on a face size change. """
        self._landmarks = {}
        self._tk_faces = {}
        self._landmarks = {}
        self._tk_faces = {}
  
      def update(self, refresh_annotations=False):
          """ Update the viewport.
  
          Parameters
keep keep keep keep replace replace keep keep keep keep keep
 lib.align updates:
  - alignments.py
    - Add typed dicts for imported alignments
    - Explicitly check for presence of thumb value in alignments dict
    - linting
  - detected_face.py
    - Typing
    - Linting
    - Legacy support for pre-aligned face
    - Update dependencies to new property names 
tools/manual/faceviewer/viewport.py