```\n// Liquidator.sol\n\nfunction bid(address account, uint256[] memory askedAssetAmounts, bool endAuction_) external nonReentrant {\n        AuctionInformation storage auctionInformation_ = auctionInformation[account];\n        if (!auctionInformation_.inAuction) revert LiquidatorErrors.NotForSale();\n\n        // Calculate the current auction price of the assets being bought.\n        uint256 totalShare = _calculateTotalShare(auctionInformation_, askedAssetAmounts);\n        uint256 price = _calculateBidPrice(auctionInformation_, totalShare);\n    \n    // Transfer an amount of "price" in "Numeraire" to the LendingPool to repay the Accounts debt.\n        // The LendingPool will call a "transferFrom" from the bidder to the pool -> the bidder must approve the LendingPool.\n        // If the amount transferred would exceed the debt, the surplus is paid out to the Account Owner and earlyTerminate is True.\n        uint128 startDebt = auctionInformation_.startDebt;\n        bool earlyTerminate = ILendingPool(auctionInformation_.creditor).auctionRepay(\n            startDebt, auctionInformation_.minimumMargin, price, account, msg.sender\n        );\n  // rest of code\n}\n```\n