<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read(self, size=-1):
 """Returns 'size' amount of bytes or less if there is no more data. If no size is given all data is returned. size can be >= 0."""

        if self.closed:
            raise ValueError("I/O operation on closed file")
        with map_azure_exceptions(key=self.key):
            if size < 0:
                size = self.size - self.pos

            end = min(self.pos + size - 1, self.size - 1)
            if self.pos > end:
                return b''
            b = self.block_blob_service.get_blob_to_bytes(
                    container_name=self.container_name,
                    blob_name=self.key,
                    start_range=self.pos,
                    end_range=end,  # end_range is inclusive
                    max_connections=self.max_connections,
            )
            self.pos += len(b.content)
            return b.content