func matchTaskAuction(offerAggregates [][]*mesos.Offer, taskAuction *auctiontypes.TaskAuction) (int, []*mesos.Offer) {
	taskAuction.Attempts++
	for i, offers := range offerAggregates {
		if getOffersMem(offers) > float64(taskAuction.MemoryMB) &&
			getOffersCpu(offers) > taskCpuAllocation &&
			getOffersDisk(offers) > float64(taskAuction.DiskMB) {
			taskAuction.Winner = offers[0].SlaveId.GetValue()
			taskAuction.WaitDuration = time.Now().Sub(taskAuction.QueueTime)
			offers[0].Resources = append(offers[0].Resources,
				util.NewScalarResource("mem", float64(-taskAuction.MemoryMB)),
				util.NewScalarResource("cpu", -taskCpuAllocation),
				util.NewScalarResource("disk", float64(-taskAuction.DiskMB)))
			return i, offers
		}
	}
	taskAuction.PlacementError = rep.ErrorInsufficientResources.Error()
	return -1, nil
}