// Fill in the blanks to produce a syntactically valid, safe, and // complete protocol // The requirements for the desired protocol are stated in the exam protocol OfferPayGoodsRefundWithdraw { roles Buyer, Seller parameters private Seller -> Buyer: offer [out ID, out item, out price] Buyer -> Seller: pay [in ID, in price, out pDone, ] Seller -> Buyer: withdraw [in ID, out rescind] Seller -> Buyer: goods [in ID, in item, out gDone] Seller -> Buyer: refund [ ] Buyer -> Seller: allDone [in ID, ] Buyer -> Seller: allDone [ out outcome] Buyer -> Seller: allDone [ out outcome] }