code: func FindTailLineStartIndex(f io.ReadSeeker, n int64) (int64, error) {
  	if n < 0 {
  		return 0, nil
  	}
  	size, err := f.Seek(0, io.SeekEnd)
  	if err != nil {
  		return 0, err
  	}
  	var left, cnt int64
  	buf := make([]byte, blockSize)
  	for right := size; right > 0 && cnt <= n; right -= blockSize {
  		left = right - blockSize
  		if left < 0 {
  			left = 0
  			buf = make([]byte, right)
  		}
  		if _, err := f.Seek(left, io.SeekStart); err != nil {
  			return 0, err
  		}
  		if _, err := f.Read(buf); err != nil {
  			return 0, err
  		}
  		cnt += int64(bytes.Count(buf, eol))
  	}
  	for ; cnt > n; cnt-- {
  		idx := bytes.Index(buf, eol) + 1
  		buf = buf[idx:]
  		left += int64(idx)
  	}
  	return left, nil
  }
docs: // FindTailLineStartIndex returns the start of last nth line.
  // * If n < 0, return the beginning of the file.
  // * If n >= 0, return the beginning of last nth line.
  // Notice that if the last line is incomplete (no end-of-line), it will not be counted
  // as one line.