code: func (i *Intervals) MarshalBinary() (data []byte, err error) {
  	d := make([][]byte, len(i.ranges)+1)
  	d[0] = []byte(strconv.FormatUint(i.start, 36))
  	for j := range i.ranges {
  		r := i.ranges[j]
  		d[j+1] = []byte(strconv.FormatUint(r[0], 36) + "," + strconv.FormatUint(r[1], 36))
  	}
  	return bytes.Join(d, []byte(";")), nil
  }
docs: // MarshalBinary encodes Intervals parameters into a semicolon separated list.
  // The first element in the list is base36-encoded start value. The following
  // elements are two base36-encoded value ranges separated by comma.