code: def render(self, width: int, height: int) -> List[str]:
          
          if width == 0 or height == 0:
              return [''] * height
  
          out_chars = [[' '] * width for _ in range(height)]
  
          mid_x = int((width - 1) * self.horizontal_alignment)
          mid_y = (height - 1) // 2
  
          # Horizontal line legs.
          if self.left:
              out_chars[mid_y][:mid_x + 1] = self.left * (mid_x + 1)
          if self.right:
              out_chars[mid_y][mid_x:] = self.right * (width - mid_x)
  
          # Vertical line legs.
          if self.top:
              for y in range(mid_y + 1):
                  out_chars[y][mid_x] = self.top
          if self.bottom:
              for y in range(mid_y, height):
                  out_chars[y][mid_x] = self.bottom
  
          # Central content.
          mid = self.content or self.center
          if self.content or self.center:
              content_lines = mid.split('\n')
              y = mid_y - (len(content_lines) - 1) // 2
              for dy, content_line in enumerate(content_lines):
                  s = int((len(content_line) - 1) * self.horizontal_alignment)
                  x = mid_x - s
                  for dx, c in enumerate(content_line):
                      out_chars[y + dy][x + dx] = c
  
          return [''.join(line) for line in out_chars]
docs: Returns a list of text lines representing the block's contents.
  
          Args:
              width: The width of the output text. Must be at least as large as
                  the block's minimum width.
              height: The height of the output text. Must be at least as large as
                  the block's minimum height.
  
          Returns:
              Text pre-split into lines.