              "mask shape: %s, raw_mask shape: %s", mask.shape, raw_mask.shape)
          return mask, raw_mask
  
      def _get_mask(self,
                    detected_face: "DetectedFace",
                    predicted_mask: Optional[np.ndarray],
                    centering: Literal["legacy", "face", "head"],
                    sub_crop_offset: Optional[np.ndarray]) -> np.ndarray:
          """ Return the requested mask with any requested blurring applied.
  
 
</s> remove         if not self.skip and self._do_erode:
 </s> add         if self._config.get("type") is not None and self._do_erode: </s> remove     def process(self,  # type:ignore # pylint:disable=arguments-differ
                detected_face: "DetectedFace",
                sub_crop_offset: Optional[np.ndarray],
                centering: Literal["legacy", "face", "head"],
                predicted_mask: Optional[np.ndarray] = None) -> Tuple[np.ndarray, np.ndarray]:
 </s> add         Gradient is created from 1/16th distance from the edge of the face box and uses the
        parameters as provided for mask blend settings

        Parameters
        ----------
        output_size: int
            The size of the box that contains the swapped face

        Returns
        -------
        :class:`numpy.ndarray`
            The box mask
        """
        box = np.zeros((output_size, output_size, 1), dtype="float32")
        edge = output_size // 32
        box[edge:-edge, edge:-edge] = 1.0

        box = BlurMask(self._config["type"],
                       box, self._config["kernel_size"],
                       self._config["passes"]).blurred
        return box

    def run(self,
            detected_face: DetectedFace,
            sub_crop_offset: Optional[np.ndarray],
            centering: Literal["legacy", "face", "head"],
            predicted_mask: Optional[np.ndarray] = None) -> Tuple[np.ndarray, np.ndarray]: </s> remove         logger.trace(  # type: ignore
            "detected_face: %s, sub_crop_offset: %s, centering: '%s', predicted_mask: %s",
            detected_face, sub_crop_offset, centering, predicted_mask is not None)
 </s> add         logger.trace("Performing mask adjustment: (detected_face: %s, "  # type: ignore
                     "sub_crop_offset: %s, centering: '%s', predicted_mask: %s",
                     detected_face, sub_crop_offset, centering, predicted_mask is not None) </s> remove         self._coverage_ratio = coverage_ratio
 </s> add     def _set_config(self,
                    configfile: Optional[str],
                    config: Optional[FaceswapConfig]) -> dict:
        """ Set the correct configuration for the plugin based on whether a config file
        or pre-loaded config has been passed in.

        Parameters
        ----------
        configfile: str
            Location of custom configuration ``ini`` file. If ``None`` then use the
            default config location
        config: :class:`lib.config.FaceswapConfig`
            Pre-loaded :class:`lib.config.FaceswapConfig`. If passed, then this will be
            used over any configuration on disk. If ``None`` then it is ignored.

        Returns
        -------
        dict
            The configuration in dictionary form for the given from
            :attr:`lib.config.FaceswapConfig.config_dict`
        """
        section = ".".join(self.__module__.split(".")[-2:])
        if config is None:
            retval = Config(section, configfile=configfile).config_dict
        else:
            config.section = section
            retval = config.config_dict
            config.section = None
        logger.debug("Config: %s", retval)
        return retval

    def _get_box(self, output_size: int) -> np.ndarray:
        """ Apply a gradient overlay to the edge of the swap box to smooth out any hard areas
        that where the face intersects with the edge of the swap area.
                  detected_face: DetectedFace,
              "mask shape: %s, raw_mask shape: %s", mask.shape, raw_mask.shape)
          return mask, raw_mask
  
      def _get_mask(self,
                  detected_face: DetectedFace,
                    predicted_mask: Optional[np.ndarray],
                    centering: Literal["legacy", "face", "head"],
                    sub_crop_offset: Optional[np.ndarray]) -> np.ndarray:
          """ Return the requested mask with any requested blurring applied.
  
keep keep keep keep replace keep keep keep keep keep
 convert: remove box blend plugin 
plugins/convert/mask/mask_blend.py