41 txs
68 calls
constructor
constructor(address _WETH)
functions
addrFreezeTime
viewfunction addrFreezeTime(address) view returns (uint256)
countInviteesOf
viewfunction countInviteesOf(address user) view returns (uint256 total)
customFeeBP
viewfunction customFeeBP(address) view returns (uint8)
defaultFeeBP
viewfunction defaultFeeBP() view returns (uint8)
feeTiers
viewfunction feeTiers(uint256) view returns (uint256 amount, uint8 discount)
getActualSwapAmount
viewfunction getActualSwapAmount(address sender, address token, uint256 amount) view returns (uint256 actualSwapAmount, uint256 feeAmount)
getFeeLadder
viewfunction getFeeLadder() view returns (tuple[])
getFeeLadderDiscount
viewfunction getFeeLadderDiscount(address account) view returns (uint256)
getInviteesOf
viewfunction getInviteesOf(address user, uint256 page, uint256 pageSize) view returns (address[] items, uint256 total)
getSwapFee
viewfunction getSwapFee(address account, address token) view returns (uint256 effectiveFeeBP, tuple[] ladder)
inviteesOf
viewfunction inviteesOf(address, uint256) view returns (address)
inviterOf
viewfunction inviterOf(address) view returns (address)
isFeeExemptToken
viewfunction isFeeExemptToken(address) view returns (bool)
owner
viewfunction owner() view returns (address)
recordSwapNumber
viewfunction recordSwapNumber(address) view returns (uint256)
subsidyParameter
viewfunction subsidyParameter() view returns (bool isSingleSubsidy, uint256 singleSubsidyAmount, bool isFullSubsidy, uint256 fullSubsidyAmount, uint256 fullFreezeTime, uint256 requiredSwapsForFullSubsidy)
swapAddress
viewfunction swapAddress() view returns (address)
SWaptorXToken
viewfunction SWaptorXToken() view returns (address)
walletAddress
viewfunction walletAddress() view returns (address)
WETH
viewfunction WETH() view returns (address)
inviterSwap
payablefunction inviterSwap(tuple desc, uint256 deadline, address inviter) payable returns (uint256 amountOut, uint256 gasUsed)
ownerWithdraw
nonpayablefunction ownerWithdraw(address token, uint256 amount)
renounceOwnership
nonpayablefunction renounceOwnership()
setCustomFeeToken
nonpayablefunction setCustomFeeToken(address token, uint8 fee)
setDefaultSwapFee
nonpayablefunction setDefaultSwapFee(uint8 fee)
setFeeLadder
nonpayablefunction setFeeLadder(tuple[] fees)
setFreeSwapToken
nonpayablefunction setFreeSwapToken(address token, bool isFree)
setSubsidyParameter
nonpayablefunction setSubsidyParameter(tuple parameter)
setSwapAddress
nonpayablefunction setSwapAddress(address _address)
setWalletAddress
nonpayablefunction setWalletAddress(address _address)
swap
payablefunction swap(tuple desc, uint256 deadline) payable returns (uint256 amountOut, uint256 gasUsed)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
DefaultFeeChanged
event DefaultFeeChanged(address indexed owner, uint8 fee)
FeeTokenChanged
event FeeTokenChanged(address indexed owner, address indexed token, uint8 fee)
FreeTokenChanged
event FreeTokenChanged(address indexed owner, address indexed token, bool free)
InviterBound
event InviterBound(address indexed user, address indexed inviter)
InviterFeeFailed
event InviterFeeFailed(address indexed user, address indexed inviter, address indexed token, uint256 amount)
InviterFeePaid
event InviterFeePaid(address indexed user, address indexed inviter, address indexed token, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SubsidyFailed
event SubsidyFailed(address indexed to, uint256 amount)
SubsidyPaid
event SubsidyPaid(address indexed to, uint256 amount)
SwapAddressSet
event SwapAddressSet(address indexed owner, address indexed previousAddress, address indexed newAddress)
Swapped
event Swapped(address indexed sender, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut, address indexed recipient)
WalletAddressSet
event WalletAddressSet(address indexed owner, address indexed previousWallet, address indexed newWallet)
Withdraw
event Withdraw(address indexed sender, address indexed token, address indexed to, uint256 amount)
errors
No errors.
creation bytecode
0x60c060405273613bd9ca27dde1c6e677b19674c699031f03221e60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60055f6101000a81548160ff021916908360ff1602179055506e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff168152503480156100bf575f5ffd5b50604051615ff9380380615ff983398181016040528101906100e191906102e9565b335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101766040518060c00160405280600115158152602001670de0b6b3a7640000815260200160011515815260200168015af1d78b58c400008152602001620151808152602001600581525061021e60201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101db9061036e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505061038c565b80600b5f820151815f015f6101000a81548160ff021916908315150217905550602082015181600101556040820151816002015f6101000a81548160ff021916908315150217905550606082015181600301556080820151816004015560a0820151816005015590505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102b88261028f565b9050919050565b6102c8816102ae565b81146102d2575f5ffd5b50565b5f815190506102e3816102bf565b92915050565b5f602082840312156102fe576102fd61028b565b5b5f61030b848285016102d5565b91505092915050565b5f82825260208201905092915050565b7f53776170746f72583a20574554482063616e6e6f74206265207a65726f0000005f82015250565b5f610358601d83610314565b915061036382610324565b602082019050919050565b5f6020820190508181035f8301526103858161034c565b9050919050565b60805160a051615c306103c95f395f612f9601525f81816119a801528181612cef01528181612d6f015281816131a001526131df0152615c305ff3fe6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063c8ced35511610094578063defb0d4811610063578063defb0d481461072f578063f2fde38b1461076c578063f59b530714610794578063f83cecce146107be576101ed565b8063c8ced35514610667578063d9c88e14146106a3578063dce9d9a3146106cb578063dd6d60af146106f3576101ed565b8063aad355ec116100d0578063aad355ec1461059d578063ac1a386a146105d9578063ad5c464814610601578063b7a855451461062b576101ed565b80638da5cb5b146104e75780639b9c592f146105115780639cd7b1491461054d5780639f1fe2e014610575576101ed565b80634c54dc5211610179578063715018a611610148578063715018a6146104435780637dc4b9cc1461045957806380f6d7821461048157806381df36d4146104ab576101ed565b80634c54dc521461038a57806354a43209146103c757806364487525146103f15780636ad5b3ea14610419576101ed565b806326ec6705116101b557806326ec6705146102b65780632de192dc146102f25780634413229f1461032f5780634b8f961814610359576101ed565b8063040f6a28146101f157806305aba783146102195780630e3c5a4614610248578063230ed44a14610279576101ed565b366101ed57005b5f5ffd5b3480156101fc575f5ffd5b5061021760048036038101906102129190613d6a565b6107fa565b005b348015610224575f5ffd5b5061022d61093a565b60405161023f96959493929190613dc7565b60405180910390f35b610262600480360381019061025d9190613e72565b61097b565b604051610270929190613ecc565b60405180910390f35b348015610284575f5ffd5b5061029f600480360381019061029a9190613ef3565b6109de565b6040516102ad929190613f2d565b60405180910390f35b3480156102c1575f5ffd5b506102dc60048036038101906102d79190613fae565b610a19565b6040516102e99190613fd9565b60405180910390f35b3480156102fd575f5ffd5b5061031860048036038101906103139190613ff2565b610a2e565b604051610326929190614123565b60405180910390f35b34801561033a575f5ffd5b50610343610ca0565b6040516103509190614151565b60405180910390f35b610373600480360381019061036e919061416a565b610cb2565b604051610381929190613ecc565b60405180910390f35b348015610395575f5ffd5b506103b060048036038101906103ab91906141d6565b610d1f565b6040516103be9291906142dd565b60405180910390f35b3480156103d2575f5ffd5b506103db610f61565b6040516103e8919061430b565b60405180910390f35b3480156103fc575f5ffd5b506104176004803603810190610412919061438c565b610fe2565b005b348015610424575f5ffd5b5061042d611133565b60405161043a91906143e6565b60405180910390f35b34801561044e575f5ffd5b50610457611159565b005b348015610464575f5ffd5b5061047f600480360381019061047a9190613fae565b6111f2565b005b34801561048c575f5ffd5b50610495611421565b6040516104a291906143e6565b60405180910390f35b3480156104b6575f5ffd5b506104d160048036038101906104cc9190613fae565b611446565b6040516104de91906143ff565b60405180910390f35b3480156104f2575f5ffd5b506104fb611463565b60405161050891906143e6565b60405180910390f35b34801561051c575f5ffd5b5061053760048036038101906105329190614418565b611487565b60405161054491906143e6565b60405180910390f35b348015610558575f5ffd5b50610573600480360381019061056e9190614480565b6114cf565b005b348015610580575f5ffd5b5061059b600480360381019061059691906145e7565b61161a565b005b3480156105a8575f5ffd5b506105c360048036038101906105be9190613fae565b6116b4565b6040516105d09190613fd9565b60405180910390f35b3480156105e4575f5ffd5b506105ff60048036038101906105fa9190613fae565b6117ce565b005b34801561060c575f5ffd5b506106156119a6565b60405161062291906143e6565b60405180910390f35b348015610636575f5ffd5b50610651600480360381019061064c9190613fae565b6119ca565b60405161065e9190614151565b60405180910390f35b348015610672575f5ffd5b5061068d60048036038101906106889190613fae565b6119e7565b60405161069a91906143e6565b60405180910390f35b3480156106ae575f5ffd5b506106c960048036038101906106c49190614418565b611a17565b005b3480156106d6575f5ffd5b506106f160048036038101906106ec9190614612565b611d1e565b005b3480156106fe575f5ffd5b5061071960048036038101906107149190613fae565b611eb1565b6040516107269190613fd9565b60405180910390f35b34801561073a575f5ffd5b5061075560048036038101906107509190614650565b611f7e565b604051610763929190613ecc565b60405180910390f35b348015610777575f5ffd5b50610792600480360381019061078d9190613fae565b611fc0565b005b34801561079f575f5ffd5b506107a86120c8565b6040516107b591906143e6565b60405180910390f35b3480156107c9575f5ffd5b506107e460048036038101906107df9190613fae565b6120ed565b6040516107f19190613fd9565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087f906146fa565b60405180910390fd5b8060ff16606410156108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690614762565b60405180910390fd5b8060055f6101000a81548160ff021916908360ff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f0392bea7ef37e4d641c8494ac5df247e23621bf044dfaf806939681ba4d6716b8260405161092f9190614151565b60405180910390a250565b600b805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060030154908060040154908060050154905086565b5f5f82428110156109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b8906147ca565b60405180910390fd5b5f5a90506109ce86612102565b93505a8103925050509250929050565b600281815481106109ed575f80fd5b905f5260205f2090600202015f91509050805f015490806001015f9054906101000a900460ff16905082565b6009602052805f5260405f205f915090505481565b5f60605f5f905060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610a8c575f9050610b4a565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115610b345760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff169050610b49565b60055f9054906101000a900460ff1660ff1690505b5b5f8103610bd9575f600280805480602002602001604051908101604052809291908181526020015f905b82821015610bc9578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610b74565b5050505090509250925050610c99565b5f610be3866116b4565b90505f811115610c14576064816064610bfc9190614815565b83610c079190614848565b610c1191906148b6565b91505b81600280805480602002602001604051908101604052809291908181526020015f905b82821015610c8c578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610c37565b5050505090509350935050505b9250929050565b60055f9054906101000a900460ff1681565b5f5f8342811015610cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cef906147ca565b60405180910390fd5b5f5a9050610d05856125d9565b610d0e87612102565b93505a810392505050935093915050565b60605f5f8385610d2f9190614848565b90505f60085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020018280548015610dec57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610da3575b505050505090508051925080518210610e51575f67ffffffffffffffff811115610e1957610e186144d2565b5b604051908082528060200260200182016040528015610e475781602001602082028036833780820191505090505b5093505050610f59565b5f8583610e5e91906148e6565b90508151811115610e6e57815190505b5f8382610e7b9190614815565b90508067ffffffffffffffff811115610e9757610e966144d2565b5b604051908082528060200260200182016040528015610ec55781602001602082028036833780820191505090505b5095505f5f90505b81811015610f5357838186610ee291906148e6565b81518110610ef357610ef2614919565b5b6020026020010151878281518110610f0e57610f0d614919565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050610ecd565b50505050505b935093915050565b60606002805480602002602001604051908101604052809291908181526020015f905b82821015610fd9578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610f84565b50505050905090565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611067906146fa565b60405180910390fd5b81819050600910156110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae90614990565b60405180910390fd5b60025f6110c49190613cd2565b5f5f90505b8282905081101561112e5760028383838181106110e9576110e8614919565b5b905060400201908060018154018082558091505060019003905f5260205f2090600202015f9091909190915081816111219190614b2d565b50508060010190506110c9565b505050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de906146fa565b60405180910390fd5b6111f05f612878565b565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611277906146fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e590614bab565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b11611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90614c13565b60405180910390fd5b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe56ffd1dcc40a4c88a9b03492a3d6f93418f6416851ca05115822708049359ea60405160405180910390a45050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6008602052815f5260405f2081815481106114a0575f80fd5b905f5260205f20015f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611554906146fa565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5aa4741595783fbabd32f180df08362734a0830e60dafbd28d3446a31203dfd28360405161160e91906143ff565b60405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f906146fa565b60405180910390fd5b6116b181612939565b50565b5f5f600280549050036116c9575f90506117c9565b5f6116f560015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129a6565b90505f8103611707575f9150506117c9565b5f5f90505f5f90505b6002805490508110156117c2576002818154811061173157611730614919565b5b905f5260205f2090600202015f015483106117b757816002828154811061175b5761175a614919565b5b905f5260205f2090600202016001015f9054906101000a900460ff1660ff1611156117b6576002818154811061179457611793614919565b5b905f5260205f2090600202016001015f9054906101000a900460ff1660ff1691505b5b806001019050611710565b5080925050505b919050565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461185c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611853906146fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c190614ca1565b60405180910390fd5b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6972f6774c8c58489b0d6ddf22bb06502764dce4feb3d825b3bc78771b3aba3b60405160405180910390a45050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6004602052805f5260405f205f915054906101000a900460ff1681565b6007602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115f9054906101000a900460ff1615611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90614d09565b60405180910390fd5b600160115f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0790614d71565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611bb75750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed90614dd9565b60405180910390fd5b611bff82612aa2565b15611c3557611c30600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612aed565b611c63565b611c6282600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612b9a565b5b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f784604051611cf99190613fd9565b60405180910390a45f60115f6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da3906146fa565b60405180910390fd5b8060ff1660641015611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614e41565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f180bb0038fa9138b235773bd62aee0a35fcfcb252dadf015cccdf70192a63f9083604051611ea59190614151565b60405180910390a35050565b5f5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020018280548015611f6d57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611f24575b505050505090508051915050919050565b5f5f5f611f8b8686610a2e565b5090506127108185611f9d9190614848565b611fa791906148b6565b91508184611fb59190614815565b925050935093915050565b3373ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612045906146fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b390614ecf565b60405180910390fd5b6120c581612878565b50565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f915090505481565b5f60115f9054906101000a900460ff1615612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614d09565b60405180910390fd5b600160115f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16825f0160208101906121959190613fae565b73ffffffffffffffffffffffffffffffffffffffff16036121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e290614f37565b60405180910390fd5b8160200160208101906121fe9190613fae565b73ffffffffffffffffffffffffffffffffffffffff16825f0160208101906122269190613fae565b73ffffffffffffffffffffffffffffffffffffffff160361227c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227390614fc5565b60405180910390fd5b5f8260600135116122c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b990615053565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168260800160208101906122ec9190613fae565b73ffffffffffffffffffffffffffffffffffffffff1603612342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612339906150e1565b60405180910390fd5b5f61235d835f0160208101906123589190613fae565b612aa2565b156123fe575f34116123a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239b9061516f565b60405180910390fd5b826040013534146123ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e1906151fd565b60405180910390fd5b3490506123f78382612cca565b91506124ef565b5f3414612440576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124379061528b565b60405180910390fd5b5f838060c0019061245191906152b5565b90500361247e57612477835f01602081019061246d9190613fae565b8460400135612df4565b90506124b0565b6124ad835f0160208101906124939190613fae565b8460400135858060c001906124a891906152b5565b612e7e565b90505b6124cb8360200160208101906124c69190613fae565b612aa2565b156124e1576124da8382613139565b91506124ee565b6124eb8382613323565b91505b5b61251a60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336133c1565b82608001602081019061252d9190613fae565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f1eeaa4acf3c225a4033105c2647625dbb298dec93b14e16253c4231e26c02b1d855f01602081019061258d9190613fae565b8660200160208101906125a09190613fae565b85876040516125b29493929190615317565b60405180910390a3505f60115f6101000a81548160ff021916908315150217905550919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160315612875573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160315612875573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160315612875575f73ffffffffffffffffffffffffffffffffffffffff1660075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612875578060075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2033908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fad19acbfe329ed02112851f095801de1e5474be0e6fcb5810aaf795fb120249f60405160405180910390a35b50565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600b5f820151815f015f6101000a81548160ff021916908315150217905550602082015181600101556040820151816002015f6101000a81548160ff021916908315150217905550606082015181600301556080820151816004015560a0820151816005015590505050565b5f5f5f8473ffffffffffffffffffffffffffffffffffffffff166370a08231856040516024016129d691906143e6565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612a2491906153ac565b5f60405180830381855afa9150503d805f8114612a5c576040519150601f19603f3d011682016040523d82523d5f602084013e612a61565b606091505b5091509150811580612a74575060208151105b15612a83575f92505050612a9c565b80806020019051810190612a9791906153d6565b925050505b92915050565b5f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612b1290615424565b5f6040518083038185875af1925050503d805f8114612b4c576040519150601f19603f3d011682016040523d82523d5f602084013e612b51565b606091505b5050905080612b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8c90615482565b60405180910390fd5b505050565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612bcb9291906154a0565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612c1991906153ac565b5f604051808303815f865af19150503d805f8114612c52576040519150601f19603f3d011682016040523d82523d5f602084013e612c57565b606091505b5091509150818015612c8457505f81511480612c83575080806020019051810190612c8291906154db565b5b5b612cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cba90615550565b60405180910390fd5b5050505050565b5f5f5f612ce933865f016020810190612ce39190613fae565b86611f7e565b915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015612d53575f5ffd5b505af1158015612d65573d5f5f3e3d5ffd5b5050505050612dcf7f0000000000000000000000000000000000000000000000000000000000000000866020016020810190612da19190613fae565b848860600135898060a00190612db791906152b5565b8b6080016020810190612dca9190613fae565b613720565b9250612dec855f016020810190612de69190613fae565b82613861565b505092915050565b5f5f612e0084306129a6565b9050612e0e84333086613b9f565b5f612e1985306129a6565b90505f8282612e289190614815565b11612e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5f906155de565b60405180910390fd5b8181612e749190614815565b9250505092915050565b5f5f5f8484810190612e9091906156ac565b9150915060018103612f7e575f8773ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b84604051602001612ece929190615751565b604051602081830303815290604052604051612eea91906153ac565b5f604051808303815f865af19150503d805f8114612f23576040519150601f19603f3d011682016040523d82523d5f602084013e612f28565b606091505b5050905080612f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f63906157c2565b60405180910390fd5b612f768888612df4565b93505061312f565b600281036130f3575f612f9188306129a6565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166330f28b7a60e01b85604051602001612fe5929190615751565b60405160208183030381529060405260405161300191906153ac565b5f604051808303815f865af19150503d805f811461303a576040519150601f19603f3d011682016040523d82523d5f602084013e61303f565b606091505b5050905080613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307a9061582a565b60405180910390fd5b5f61308e8a306129a6565b90505f838261309d9190614815565b116130dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d4906158b8565b60405180910390fd5b82816130e99190614815565b955050505061312e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312590615946565b60405180910390fd5b5b5050949350505050565b5f5f5f61315833865f0160208101906131529190613fae565b86611f7e565b915091505f8560800160208101906131709190613fae565b73ffffffffffffffffffffffffffffffffffffffff163190506131db865f01602081019061319e9190613fae565b7f00000000000000000000000000000000000000000000000000000000000000008589606001358a8060a001906131d591906152b5565b30613720565b93507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff1660e01b81526004016132369190613fd9565b5f604051808303815f87803b15801561324d575f5ffd5b505af115801561325f573d5f5f3e3d5ffd5b5050505061327f8660800160208101906132799190613fae565b85612aed565b5f8660800160208101906132939190613fae565b73ffffffffffffffffffffffffffffffffffffffff163190508660600135826132bc91906148e6565b8110156132fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f5906159d4565b60405180910390fd5b613319875f0160208101906133139190613fae565b84613861565b5050505092915050565b5f5f5f61334233865f01602081019061333c9190613fae565b86611f7e565b9150915061339c855f01602081019061335b9190613fae565b86602001602081019061336e9190613fae565b848860600135898060a0019061338491906152b5565b8b60800160208101906133979190613fae565b613720565b92506133b9855f0160208101906133b39190613fae565b82613861565b505092915050565b5f5f9050600b5f015f9054906101000a900460ff16156133ef57600b60010154816133ec91906148e6565b90505b600b6002015f9054906101000a900460ff16801561344a575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20544210155b156135a9575f6001600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461349a91906148e6565b9050600b60050154811061355457600b60030154826134b991906148e6565b91505f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b600401544261350e91906148e6565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506135a7565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154809291906135a1906159f2565b91905055505b505b5f81111561371b575f8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040516024016135e19291906154a0565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161362f91906153ac565b5f604051808303815f865af19150503d805f8114613668576040519150601f19603f3d011682016040523d82523d5f602084013e61366d565b606091505b5050905080156136ca578273ffffffffffffffffffffffffffffffffffffffff167fee765c46d4000d6814b7e8ccbac30f1e4b338d4f7877f248977e4cf58d5171b3836040516136bd9190613fd9565b60405180910390a2613719565b8273ffffffffffffffffffffffffffffffffffffffff167f69d659978bdc48bd71af43956da9c4a9156c815240b1b32873b0be09d67e5161836040516137109190613fd9565b60405180910390a25b505b505050565b5f61374d8860065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688612b9a565b5f61375888846129a6565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d8d339e8a88888888336040518763ffffffff1660e01b81526004016137be96959493929190615a75565b5f604051808303815f87803b1580156137d5575f5ffd5b505af11580156137e7573d5f5f3e3d5ffd5b505050505f6137f689856129a6565b9050868261380491906148e6565b811015613846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383d90615b3f565b60405180910390fd5b81816138529190614815565b92505050979650505050505050565b6003811115613b9b575f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613b99575f6064601e8461390d9190614848565b61391791906148b6565b90505f61392385612aa2565b1561399b578273ffffffffffffffffffffffffffffffffffffffff16826175309060405161395090615424565b5f60405180830381858888f193505050503d805f811461398b576040519150601f19603f3d011682016040523d82523d5f602084013e613990565b606091505b505080915050613a92565b5f5f8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86866040516024016139cc9291906154a0565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613a1a91906153ac565b5f604051808303815f865af19150503d805f8114613a53576040519150601f19603f3d011682016040523d82523d5f602084013e613a58565b606091505b5091509150818015613a8557505f81511480613a84575080806020019051810190613a8391906154db565b5b5b15613a8f57600192505b50505b8015613b19578473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2f53f4bc51eacf2a763977cdcd71796df85a447da196668cb3b2d34dbe1090f185604051613b0c9190613fd9565b60405180910390a4613b96565b8473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fb9c939330099311c6ddc823739cb6c67865d871f77ebba134c841e39c7dce72a85604051613b8d9190613fd9565b60405180910390a45b50505b505b5050565b5f5f8573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401613bd293929190615b5d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613c2091906153ac565b5f604051808303815f865af19150503d805f8114613c59576040519150601f19603f3d011682016040523d82523d5f602084013e613c5e565b606091505b5091509150818015613c8b57505f81511480613c8a575080806020019051810190613c8991906154db565b5b5b613cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc190615bdc565b60405180910390fd5b505050505050565b5080545f8255600202905f5260205f2090810190613cf09190613cf3565b50565b5b80821115613d1f575f5f82015f9055600182015f6101000a81549060ff021916905550600201613cf4565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f60ff82169050919050565b613d4981613d34565b8114613d53575f5ffd5b50565b5f81359050613d6481613d40565b92915050565b5f60208284031215613d7f57613d7e613d2c565b5b5f613d8c84828501613d56565b91505092915050565b5f8115159050919050565b613da981613d95565b82525050565b5f819050919050565b613dc181613daf565b82525050565b5f60c082019050613dda5f830189613da0565b613de76020830188613db8565b613df46040830187613da0565b613e016060830186613db8565b613e0e6080830185613db8565b613e1b60a0830184613db8565b979650505050505050565b5f5ffd5b5f60e08284031215613e3f57613e3e613e26565b5b81905092915050565b613e5181613daf565b8114613e5b575f5ffd5b50565b5f81359050613e6c81613e48565b92915050565b5f5f60408385031215613e8857613e87613d2c565b5b5f83013567ffffffffffffffff811115613ea557613ea4613d30565b5b613eb185828601613e2a565b9250506020613ec285828601613e5e565b9150509250929050565b5f604082019050613edf5f830185613db8565b613eec6020830184613db8565b9392505050565b5f60208284031215613f0857613f07613d2c565b5b5f613f1584828501613e5e565b91505092915050565b613f2781613d34565b82525050565b5f604082019050613f405f830185613db8565b613f4d6020830184613f1e565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f7d82613f54565b9050919050565b613f8d81613f73565b8114613f97575f5ffd5b50565b5f81359050613fa881613f84565b92915050565b5f60208284031215613fc357613fc2613d2c565b5b5f613fd084828501613f9a565b91505092915050565b5f602082019050613fec5f830184613db8565b92915050565b5f5f6040838503121561400857614007613d2c565b5b5f61401585828601613f9a565b925050602061402685828601613f9a565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61406281613daf565b82525050565b61407181613d34565b82525050565b604082015f82015161408b5f850182614059565b50602082015161409e6020850182614068565b50505050565b5f6140af8383614077565b60408301905092915050565b5f602082019050919050565b5f6140d182614030565b6140db818561403a565b93506140e68361404a565b805f5b838110156141165781516140fd88826140a4565b9750614108836140bb565b9250506001810190506140e9565b5085935050505092915050565b5f6040820190506141365f830185613db8565b818103602083015261414881846140c7565b90509392505050565b5f6020820190506141645f830184613f1e565b92915050565b5f5f5f6060848603121561418157614180613d2c565b5b5f84013567ffffffffffffffff81111561419e5761419d613d30565b5b6141aa86828701613e2a565b93505060206141bb86828701613e5e565b92505060406141cc86828701613f9a565b9150509250925092565b5f5f5f606084860312156141ed576141ec613d2c565b5b5f6141fa86828701613f9a565b935050602061420b86828701613e5e565b925050604061421c86828701613e5e565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61425881613f73565b82525050565b5f614269838361424f565b60208301905092915050565b5f602082019050919050565b5f61428b82614226565b6142958185614230565b93506142a083614240565b805f5b838110156142d05781516142b7888261425e565b97506142c283614275565b9250506001810190506142a3565b5085935050505092915050565b5f6040820190508181035f8301526142f58185614281565b90506143046020830184613db8565b9392505050565b5f6020820190508181035f83015261432381846140c7565b905092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261434c5761434b61432b565b5b8235905067ffffffffffffffff8111156143695761436861432f565b5b60208301915083604082028301111561438557614384614333565b5b9250929050565b5f5f602083850312156143a2576143a1613d2c565b5b5f83013567ffffffffffffffff8111156143bf576143be613d30565b5b6143cb85828601614337565b92509250509250929050565b6143e081613f73565b82525050565b5f6020820190506143f95f8301846143d7565b92915050565b5f6020820190506144125f830184613da0565b92915050565b5f5f6040838503121561442e5761442d613d2c565b5b5f61443b85828601613f9a565b925050602061444c85828601613e5e565b9150509250929050565b61445f81613d95565b8114614469575f5ffd5b50565b5f8135905061447a81614456565b92915050565b5f5f6040838503121561449657614495613d2c565b5b5f6144a385828601613f9a565b92505060206144b48582860161446c565b9150509250929050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614508826144c2565b810181811067ffffffffffffffff82111715614527576145266144d2565b5b80604052505050565b5f614539613d23565b905061454582826144ff565b919050565b5f60c0828403121561455f5761455e6144be565b5b61456960c0614530565b90505f6145788482850161446c565b5f83015250602061458b84828501613e5e565b602083015250604061459f8482850161446c565b60408301525060606145b384828501613e5e565b60608301525060806145c784828501613e5e565b60808301525060a06145db84828501613e5e565b60a08301525092915050565b5f60c082840312156145fc576145fb613d2c565b5b5f6146098482850161454a565b91505092915050565b5f5f6040838503121561462857614627613d2c565b5b5f61463585828601613f9a565b925050602061464685828601613d56565b9150509250929050565b5f5f5f6060848603121561466757614666613d2c565b5b5f61467486828701613f9a565b935050602061468586828701613f9a565b925050604061469686828701613e5e565b9150509250925092565b5f82825260208201905092915050565b7f53776170746f72583a2063616c6c6572206973206e6f74206f776e65720000005f82015250565b5f6146e4601d836146a0565b91506146ef826146b0565b602082019050919050565b5f6020820190508181035f830152614711816146d8565b9050919050565b7f53776170746f72583a20696e76616c69642064656661756c74206665650000005f82015250565b5f61474c601d836146a0565b915061475782614718565b602082019050919050565b5f6020820190508181035f83015261477981614740565b9050919050565b7f53776170746f72583a20646561646c696e6520657870697265640000000000005f82015250565b5f6147b4601a836146a0565b91506147bf82614780565b602082019050919050565b5f6020820190508181035f8301526147e1816147a8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61481f82613daf565b915061482a83613daf565b9250828203905081811115614842576148416147e8565b5b92915050565b5f61485282613daf565b915061485d83613daf565b925082820261486b81613daf565b91508282048414831517614882576148816147e8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6148c082613daf565b91506148cb83613daf565b9250826148db576148da614889565b5b828204905092915050565b5f6148f082613daf565b91506148fb83613daf565b9250828201905080821115614913576149126147e8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f53776170746f72583a546f6f206d616e790000000000000000000000000000005f82015250565b5f61497a6011836146a0565b915061498582614946565b602082019050919050565b5f6020820190508181035f8301526149a78161496e565b9050919050565b5f81356149ba81613e48565b80915050919050565b5f815f1b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6149f9846149c3565b9350801983169250808416831791505092915050565b5f819050919050565b5f614a32614a2d614a2884613daf565b614a0f565b613daf565b9050919050565b5f819050919050565b614a4b82614a18565b614a5e614a5782614a39565b83546149ce565b8255505050565b5f8135614a7181613d40565b80915050919050565b5f60ff614a86846149c3565b9350801983169250808416831791505092915050565b5f614ab6614ab1614aac84613d34565b614a0f565b613d34565b9050919050565b5f819050919050565b614acf82614a9c565b614ae2614adb82614abd565b8354614a7a565b8255505050565b5f81015f830180614af9816149ae565b9050614b058184614a42565b505050600181016020830180614b1a81614a65565b9050614b268184614ac6565b5050505050565b614b378282614ae9565b5050565b7f53776170746f72583a207377617020616464726573732063616e6e6f742062655f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614b956025836146a0565b9150614ba082614b3b565b604082019050919050565b5f6020820190508181035f830152614bc281614b89565b9050919050565b7f53776170746f72583a2073776170206164647265737320696e76616c696400005f82015250565b5f614bfd601e836146a0565b9150614c0882614bc9565b602082019050919050565b5f6020820190508181035f830152614c2a81614bf1565b9050919050565b7f53776170746f72583a2077616c6c657420616464726573732063616e6e6f74205f8201527f6265207a65726f00000000000000000000000000000000000000000000000000602082015250565b5f614c8b6027836146a0565b9150614c9682614c31565b604082019050919050565b5f6020820190508181035f830152614cb881614c7f565b9050919050565b7f53776170746f72583a207265656e7472616e63790000000000000000000000005f82015250565b5f614cf36014836146a0565b9150614cfe82614cbf565b602082019050919050565b5f6020820190508181035f830152614d2081614ce7565b9050919050565b7f53776170746f72583a2077616c6c6574206e6f7420636f6e66696775726564005f82015250565b5f614d5b601f836146a0565b9150614d6682614d27565b602082019050919050565b5f6020820190508181035f830152614d8881614d4f565b9050919050565b7f53776170746f72583a206e6f74206f776e6572000000000000000000000000005f82015250565b5f614dc36013836146a0565b9150614dce82614d8f565b602082019050919050565b5f6020820190508181035f830152614df081614db7565b9050919050565b7f53776170746f72583a20696e76616c6964206665652076616c756500000000005f82015250565b5f614e2b601b836146a0565b9150614e3682614df7565b602082019050919050565b5f6020820190508181035f830152614e5881614e1f565b9050919050565b7f53776170746f72583a206e6577206f776e65722063616e6e6f74206265207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f614eb96022836146a0565b9150614ec482614e5f565b604082019050919050565b5f6020820190508181035f830152614ee681614ead565b9050919050565b7f53776170746f72583a20696e76616c696420746f6b656e496e000000000000005f82015250565b5f614f216019836146a0565b9150614f2c82614eed565b602082019050919050565b5f6020820190508181035f830152614f4e81614f15565b9050919050565b7f53776170746f72583a20746f6b656e496e20657175616c7320746f6b656e4f755f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f614faf6021836146a0565b9150614fba82614f55565b604082019050919050565b5f6020820190508181035f830152614fdc81614fa3565b9050919050565b7f53776170746f72583a20616d6f756e744d696e4f7574206d757374206265203e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f61503d6022836146a0565b915061504882614fe3565b604082019050919050565b5f6020820190508181035f83015261506a81615031565b9050919050565b7f53776170746f72583a20726563697069656e742063616e6e6f74206265207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f6150cb6022836146a0565b91506150d682615071565b604082019050919050565b5f6020820190508181035f8301526150f8816150bf565b9050919050565b7f53776170746f72583a206d73672e76616c7565206d757374206265203e2030205f8201527f666f722045544820696e70757400000000000000000000000000000000000000602082015250565b5f615159602d836146a0565b9150615164826150ff565b604082019050919050565b5f6020820190508181035f8301526151868161514d565b9050919050565b7f53776170746f72583a206d73672e76616c7565206d69736d61746368207769745f8201527f6820616d6f756e74496e00000000000000000000000000000000000000000000602082015250565b5f6151e7602a836146a0565b91506151f28261518d565b604082019050919050565b5f6020820190508181035f830152615214816151db565b9050919050565b7f53776170746f72583a206e6f2045544820616c6c6f77656420666f72204552435f8201527f323020696e707574000000000000000000000000000000000000000000000000602082015250565b5f6152756028836146a0565b91506152808261521b565b604082019050919050565b5f6020820190508181035f8301526152a281615269565b9050919050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f833560016020038436030381126152d1576152d06152a9565b5b80840192508235915067ffffffffffffffff8211156152f3576152f26152ad565b5b60208301925060018202360383131561530f5761530e6152b1565b5b509250929050565b5f60808201905061532a5f8301876143d7565b61533760208301866143d7565b6153446040830185613db8565b6153516060830184613db8565b95945050505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f6153868261535a565b6153908185615364565b93506153a081856020860161536e565b80840191505092915050565b5f6153b7828461537c565b915081905092915050565b5f815190506153d081613e48565b92915050565b5f602082840312156153eb576153ea613d2c565b5b5f6153f8848285016153c2565b91505092915050565b50565b5f61540f5f83615364565b915061541a82615401565b5f82019050919050565b5f61542e82615404565b9150819050919050565b7f53776170746f72583a20455448207472616e73666572206661696c65640000005f82015250565b5f61546c601d836146a0565b915061547782615438565b602082019050919050565b5f6020820190508181035f83015261549981615460565b9050919050565b5f6040820190506154b35f8301856143d7565b6154c06020830184613db8565b9392505050565b5f815190506154d581614456565b92915050565b5f602082840312156154f0576154ef613d2c565b5b5f6154fd848285016154c7565b91505092915050565b7f53776170746f72583a53540000000000000000000000000000000000000000005f82015250565b5f61553a600b836146a0565b915061554582615506565b602082019050919050565b5f6020820190508181035f8301526155678161552e565b9050919050565b7f53776170746f72583a20696e76616c6964207472616e7366657220616d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6155c86021836146a0565b91506155d38261556e565b604082019050919050565b5f6020820190508181035f8301526155f5816155bc565b9050919050565b5f5ffd5b5f67ffffffffffffffff82111561561a576156196144d2565b5b615623826144c2565b9050602081019050919050565b828183375f83830152505050565b5f61565061564b84615600565b614530565b90508281526020810184848401111561566c5761566b6155fc565b5b615677848285615630565b509392505050565b5f82601f8301126156935761569261432b565b5b81356156a384826020860161563e565b91505092915050565b5f5f604083850312156156c2576156c1613d2c565b5b5f83013567ffffffffffffffff8111156156df576156de613d30565b5b6156eb8582860161567f565b92505060206156fc85828601613e5e565b9150509250929050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b61574b61574682615706565b615731565b82525050565b5f61575c828561573a565b60048201915061576c828461537c565b91508190509392505050565b7f53776170746f72583a207065726d6974206661696c65640000000000000000005f82015250565b5f6157ac6017836146a0565b91506157b782615778565b602082019050919050565b5f6020820190508181035f8301526157d9816157a0565b9050919050565b7f53776170746f72583a207065726d6974322063616c6c206661696c65640000005f82015250565b5f615814601d836146a0565b915061581f826157e0565b602082019050919050565b5f6020820190508181035f83015261584181615808565b9050919050565b7f53776170746f72583a207065726d69743220646964206e6f7420696e637265615f8201527f73652062616c616e636500000000000000000000000000000000000000000000602082015250565b5f6158a2602a836146a0565b91506158ad82615848565b604082019050919050565b5f6020820190508181035f8301526158cf81615896565b9050919050565b7f53776170746f72583a20756e737570706f72746564207065726d6974207665725f8201527f73696f6e00000000000000000000000000000000000000000000000000000000602082015250565b5f6159306024836146a0565b915061593b826158d6565b604082019050919050565b5f6020820190508181035f83015261595d81615924565b9050919050565b7f53776170746f72583a20696e73756666696369656e7420455448206f757470755f8201527f7420726563656976656400000000000000000000000000000000000000000000602082015250565b5f6159be602a836146a0565b91506159c982615964565b604082019050919050565b5f6020820190508181035f8301526159eb816159b2565b9050919050565b5f6159fc82613daf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615a2e57615a2d6147e8565b5b600182019050919050565b5f82825260208201905092915050565b5f615a548385615a39565b9350615a61838584615630565b615a6a836144c2565b840190509392505050565b5f60a082019050615a885f8301896143d7565b615a956020830188613db8565b8181036040830152615aa8818688615a49565b9050615ab760608301856143d7565b615ac460808301846143d7565b979650505050505050565b7f53776170746f72583a20696e73756666696369656e74206f75747075742072655f8201527f6365697665640000000000000000000000000000000000000000000000000000602082015250565b5f615b296026836146a0565b9150615b3482615acf565b604082019050919050565b5f6020820190508181035f830152615b5681615b1d565b9050919050565b5f606082019050615b705f8301866143d7565b615b7d60208301856143d7565b615b8a6040830184613db8565b949350505050565b7f53776170746f72583a53544600000000000000000000000000000000000000005f82015250565b5f615bc6600c836146a0565b9150615bd182615b92565b602082019050919050565b5f6020820190508181035f830152615bf381615bba565b905091905056fea26469706673582212205b1a600b59fd1dc4d44b2e118010d94222b2972bc7272f5fbd46c61da6571d1164736f6c634300081e00330000000000000000000000004200000000000000000000000000000000000006