code: func (i *IAPD) MarshalBinary() ([]byte, error) {
  	// 4 bytes: IAID
  	// 4 bytes: T1
  	// 4 bytes: T2
  	// N bytes: options slice byte count
  	buf := buffer.New(nil)
  
  	buf.WriteBytes(i.IAID[:])
  	buf.Write32(uint32(i.T1 / time.Second))
  	buf.Write32(uint32(i.T2 / time.Second))
  	opts, err := i.Options.MarshalBinary()
  	if err != nil {
  		return nil, err
  	}
  	buf.WriteBytes(opts)
  
  	return buf.Data(), nil
  }
docs: // MarshalBinary allocates a byte slice containing the data from a IAPD.