<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def download(self, url, dst, params=None, cache_cb=None, overwrite=False, stream=False, minimal_size=-1, maximum_size=1024 ** 6, **kwargs):
 """ Download binary content to destination. :param url: binary content url :param dst: path to the 'save_as' file :param cache_cb: (optional) a function that taking requests.Response as input, and returns a bool flag, indicate whether should update the cache. :param overwrite: bool, :param stream: bool, whether we load everything into memory at once, or read the data chunk by chunk :param minimal_size: default -1, if response content smaller than minimal_size, then delete what just download. :param maximum_size: default 1GB, if response content greater than maximum_size, then delete what just download. """

        response = self.get(
            url,
            params=params,
            cache_cb=cache_cb,
            stream=stream,
            **kwargs
        )

        if not overwrite:  # pragma: no cover
            if os.path.exists(dst):
                raise OSError("'%s' exists!" % dst)

        if stream:
            chunk_size = 1024 * 1024
            downloaded_size = 0
            with atomic_write(dst, mode="wb") as f:
                for chunk in response.iter_content(chunk_size):
                    if not chunk:  # pragma: no cover
                        break
                    f.write(chunk)
                    downloaded_size += chunk_size
                if (downloaded_size < minimal_size) or (downloaded_size > maximum_size):
                    self.raise_download_oversize_error(
                        url, downloaded_size, minimal_size, maximum_size)
        else:
            content = response.content
            downloaded_size = sys.getsizeof(content)
            if (downloaded_size < minimal_size) or (downloaded_size > maximum_size):
                self.raise_download_oversize_error(
                    url, downloaded_size, minimal_size, maximum_size)
            else:
                with atomic_write(dst, mode="wb") as f:
                    f.write(content)