6 txs
8 calls
constructor
constructor(address _airnodeRrp)
functions
_qrngUint256
viewfunction _qrngUint256() view returns (uint256)
_qrngUint256Array
viewfunction _qrngUint256Array(uint256) view returns (uint256)
airnode
viewfunction airnode() view returns (address)
airnodeRrp
viewfunction airnodeRrp() view returns (address)
api3RaffleInfo
viewfunction api3RaffleInfo(bytes32) view returns (uint256 id, uint256 size)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
destinationWallet
viewfunction destinationWallet() view returns (address)
endpointIdUint256
viewfunction endpointIdUint256() view returns (bytes32)
endpointIdUint256Array
viewfunction endpointIdUint256Array() view returns (bytes32)
entriesList
viewfunction entriesList(uint256, uint256) view returns (uint48 currentEntriesLength, address player)
expectingRequestWithIdToBeFulfilled
viewfunction expectingRequestWithIdToBeFulfilled(bytes32) view returns (bool)
freeEntriesPerWallet
viewfunction freeEntriesPerWallet(bytes32) view returns (bool)
fundingList
viewfunction fundingList(uint256) view returns (uint128 minimumFundsInWeis, uint128 desiredFundsInWeis)
getEntriesBought
viewfunction getEntriesBought(uint256 _raffleId) view returns (tuple[])
getEntriesCount
viewfunction getEntriesCount(uint256 raffleId) view returns (uint256)
getLastRaffle
viewfunction getLastRaffle() view returns (uint256)
getRafflesEntryInfo
viewfunction getRafflesEntryInfo(uint256 _raffleId) view returns (tuple)
getRafflesLength
viewfunction getRafflesLength() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getWinnerAddressFromRandom
viewfunction getWinnerAddressFromRandom(uint256 _raffleId, uint256 _normalizedRandomNumber) view returns (address)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MINTERCONTRACT_ROLE
viewfunction MINTERCONTRACT_ROLE() view returns (bytes32)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
pricesList
viewfunction pricesList(uint256) view returns (uint48 id, uint48 numEntries, uint168 price)
raffles
viewfunction raffles(uint256) view returns (uint256 prizeNumber, uint48 platformPercentage, address prizeAddress, address winner, address seller, uint256 randomNumber)
rafflesEntryInfo
viewfunction rafflesEntryInfo(uint256) view returns (bool requireWhitelisting, uint8 status, uint48 walletsCap, uint48 entriesLength, uint128 amountRaised, address requiredTokenAddress, uint256 requiredTokenBalance, uint256 requiredStakingBalance)
requests
viewfunction requests(uint256) view returns (uint256 randomNumber, uint256 nomalizedRandomNumber)
requiredNFTWallets
viewfunction requiredNFTWallets(bytes32) view returns (address)
sponsorWallet
viewfunction sponsorWallet() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
walletsCap
viewfunction walletsCap(bytes32) view returns (uint48)
whitelistCollections
viewfunction whitelistCollections(bytes32) view returns (bool)
buyEntry
payablefunction buyEntry(uint256 _raffleId, uint256 _id, string _brandId) payable
cancelRaffle
nonpayablefunction cancelRaffle(uint256 _raffleId)
createRaffle
nonpayablefunction createRaffle(uint128 _desiredFundsInWeis, address _prizeAddress, uint48 _prizeNumber, uint128 _minimumFundsInWeis, tuple[] _prices, uint48 _commissionInBasicPoints, uint8 _entryType) returns (uint256)
fulfillUint256
nonpayablefunction fulfillUint256(bytes32 requestId, bytes data)
giveBatchEntriesForFree
nonpayablefunction giveBatchEntriesForFree(uint256 _raffleId, address[] _freePlayers)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
requestWithdraw
nonpayablefunction requestWithdraw()
revertCloseRequested
nonpayablefunction revertCloseRequested(uint256 raffleId)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDestinationAddress
nonpayablefunction setDestinationAddress(address _newAddress)
setRequestParameters
nonpayablefunction setRequestParameters(address _airnode, bytes32 _endpointIdUint256, bytes32 _endpointIdUint256Array, address _sponsorWallet)
setRequiredStakingAmount
nonpayablefunction setRequiredStakingAmount(uint256 _stakingAmount)
setRequiredTokenAddress
nonpayablefunction setRequiredTokenAddress(address _tokenAddress)
setRequiredTokenAmount
nonpayablefunction setRequiredTokenAmount(uint256 _tokenAmount)
setWinner
nonpayablefunction setWinner(uint256 _raffleId)
stakeNFT
nonpayablefunction stakeNFT(uint256 _raffleId)
transferRemainingFunds
nonpayablefunction transferRemainingFunds(uint256 _raffleId)
withdraw
nonpayablefunction withdraw()
events
EarlyCashoutTriggered
event EarlyCashoutTriggered(uint256 indexed raffleId, uint256 amountRaised)
EntryCancelled
event EntryCancelled(uint256 indexed raffleId, uint256 amountOfEntriesCanceled, address player)
EntrySold
event EntrySold(uint256 indexed raffleId, address indexed buyer, string indexed brandId, uint256 currentSize, uint256 priceStructureId)
FeeTransferredToPlatform
event FeeTransferredToPlatform(uint256 indexed raffleId, uint256 amountTransferred)
FreeEntry
event FreeEntry(uint256 indexed raffleId, address[] buyer, uint256 amount, uint256 currentSize)
RaffleCancelled
event RaffleCancelled(uint256 indexed raffleId, uint256 amountRaised)
RaffleCreated
event RaffleCreated(uint256 indexed raffleId, address indexed nftAddress, uint256 indexed nftId)
RaffleEnded
event RaffleEnded(uint256 indexed raffleId, address indexed winner, uint256 amountRaised, uint256 randomNumber)
RaffleStarted
event RaffleStarted(uint256 indexed raffleId, address indexed seller)
RaffleStatusUpdated
event RaffleStatusUpdated(uint256 indexed raffleId, uint8 newStatus)
RandomNumberCreated
event RandomNumberCreated(uint256 indexed idFromMetawin, uint256 randomNumber, uint256 normalizedRandomNumber)
ReceivedUint256
event ReceivedUint256(bytes32 indexed requestId, uint256 response)
ReceivedUint256Array
event ReceivedUint256Array(bytes32 indexed requestId, uint256[] response)
Refund
event Refund(uint256 indexed raffleId, uint256 amountInWeis, address indexed player)
RemainingFundsTransferred
event RemainingFundsTransferred(uint256 indexed raffleId, uint256 amountInWeis)
RequestedUint256
event RequestedUint256(bytes32 indexed requestId)
RequestedUint256Array
event RequestedUint256Array(bytes32 indexed requestId, uint256 size)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetWinnerTriggered
event SetWinnerTriggered(uint256 indexed raffleId, uint256 amountRaised)
WithdrawalRequested
event WithdrawalRequested(address indexed airnode, address indexed sponsorWallet)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
CreateRaffleError
error CreateRaffleError(string errorType)
EntryNotAllowed
error EntryNotAllowed(string errorType)
creation bytecode
0x60a0604052600a80546001600160a01b0319167352a032cf59ea274f9d745f29b6d514fe95ba192d1790553480156200003757600080fd5b50604051620043fa380380620043fa8339810160408190526200005a91620001eb565b8080806200009d7f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c7313503b622abc0bd30a7e9687057df6e8c42fb9286200013c565b50620000ab6000336200013c565b50600b80546001600160a01b0319166d76a84fef008cdabe6409d2fe638b1790556001600160a01b0381166080819052604051632b77c09f60e21b81523060048201526001602482015263addf027c90604401600060405180830381600087803b1580156200011957600080fd5b505af11580156200012e573d6000803e3d6000fd5b50505050505050506200021d565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620001e1576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620001983390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001e5565b5060005b92915050565b600060208284031215620001fe57600080fd5b81516001600160a01b03811681146200021657600080fd5b9392505050565b6080516141ac6200024e600039600081816107b8015281816111b4015281816119f8015261201d01526141ac6000f3fe6080604052600436106102e45760003560e01c80636d48f05611610190578063a217fddf116100dc578063ddba6e6b11610095578063f5b541a61161006f578063f5b541a614610a96578063f720e70814610ab8578063f8b4aa6914610b04578063ffc4e20f14610b2457600080fd5b8063ddba6e6b146109d7578063e9b6443e14610a56578063f369145514610a7657600080fd5b8063a217fddf1461093a578063a36ff4d81461094f578063b3423eec1461096f578063bf90fb4e14610984578063c9858ae5146109a4578063d547741f146109b757600080fd5b806381d12c58116101495780638ce3afa7116101235780638ce3afa7146108c257806391d14854146108d757806393a75d02146108f7578063a19954af1461092457600080fd5b806381d12c581461082e5780638499e1b214610862578063851244f71461089257600080fd5b80636d48f056146107275780636eb604e0146107705780636ec3c3931461079057806371bab666146107a65780637c903fc0146107da5780637fa4cacb1461080e57600080fd5b8063321bd1fd1161024f5780633a3956c21161020857806353b7a59b116101e257806353b7a59b146106645780635675e4e4146106845780635d4bc0ce146106a45780635fba31711461070757600080fd5b80633a3956c2146105fb5780633ccfd60b1461062f5780634006efe01461064457600080fd5b8063321bd1fd1461051e57806336568abe1461053e578063365e36581461055e57806336734e341461058b57806336a418bf146105ab5780633718d90a146105db57600080fd5b80631a0187f5116102a15780631a0187f51461042b578063248a9ca314610479578063249aaf85146104a957806327bd9890146104c95780632f2ff15d146104de578063317f3059146104fe57600080fd5b8063013805c5146102e957806301ffc9a714610334578063039be5581461036457806306bb8b53146103c557806307b9fc57146103e75780630df716021461040b575b600080fd5b3480156102f557600080fd5b506103096103043660046138a5565b610b51565b6040805165ffffffffffff90931683526001600160a01b039091166020830152015b60405180910390f35b34801561034057600080fd5b5061035461034f3660046138c7565b610b99565b604051901515815260200161032b565b34801561037057600080fd5b506103a561037f3660046138f1565b6004602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161032b565b3480156103d157600080fd5b506103e56103e03660046138f1565b610bd0565b005b3480156103f357600080fd5b506103fd60125481565b60405190815260200161032b565b34801561041757600080fd5b506103e56104263660046138f1565b610bee565b34801561043757600080fd5b506104616104463660046138f1565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161032b565b34801561048557600080fd5b506103fd6104943660046138f1565b60009081526020819052604090206001015490565b3480156104b557600080fd5b506103e56104c436600461391f565b610c63565b3480156104d557600080fd5b506103fd610c9e565b3480156104ea57600080fd5b506103e56104f936600461393c565b610cb2565b34801561050a57600080fd5b506103e56105193660046138f1565b610cd7565b34801561052a57600080fd5b506103fd6105393660046138f1565b610eae565b34801561054a57600080fd5b506103e561055936600461393c565b610ecf565b34801561056a57600080fd5b5061057e6105793660046138f1565b610f07565b60405161032b919061396c565b34801561059757600080fd5b506103e56105a6366004613a3d565b610f95565b3480156105b757600080fd5b506103546105c63660046138f1565b60086020526000908152604090205460ff1681565b3480156105e757600080fd5b506103e56105f6366004613b44565b6111a9565b34801561060757600080fd5b5061061b6106163660046138f1565b61138c565b60405161032b989796959493929190613bc8565b34801561063b57600080fd5b506103e561140a565b34801561065057600080fd5b506103e561065f3660046138f1565b611452565b34801561067057600080fd5b50600a54610461906001600160a01b031681565b34801561069057600080fd5b506103e561069f366004613c2d565b611588565b3480156106b057600080fd5b506106c46106bf3660046138f1565b6115ce565b6040805196875265ffffffffffff90951660208701526001600160a01b0393841694860194909452908216606085015216608083015260a082015260c00161032b565b34801561071357600080fd5b506103e56107223660046138f1565b61162e565b34801561073357600080fd5b5061075b6107423660046138f1565b6002602052600090815260409020805460019091015482565b6040805192835260208301919091520161032b565b34801561077c57600080fd5b506103e561078b3660046138f1565b611651565b34801561079c57600080fd5b506103fd60155481565b3480156107b257600080fd5b506104617f000000000000000000000000000000000000000000000000000000000000000081565b3480156107e657600080fd5b506103fd7fde5ee446972f4e39ab62c03aa34b2096680a875c3fdb3eb2f947cbb93341c05881565b34801561081a57600080fd5b506103e561082936600461391f565b61188c565b34801561083a57600080fd5b5061075b6108493660046138f1565b6001602081905260009182526040909120805491015482565b34801561086e57600080fd5b5061035461087d3660046138f1565b60096020526000908152604090205460ff1681565b34801561089e57600080fd5b506103546108ad3660046138f1565b60176020526000908152604090205460ff1681565b3480156108ce57600080fd5b50600f546103fd565b3480156108e357600080fd5b506103546108f236600461393c565b6118ba565b34801561090357600080fd5b506109176109123660046138f1565b6118e3565b60405161032b9190613c77565b34801561093057600080fd5b506103fd60135481565b34801561094657600080fd5b506103fd600081565b34801561095b57600080fd5b50601154610461906001600160a01b031681565b34801561097b57600080fd5b506103e56119c0565b34801561099057600080fd5b50601454610461906001600160a01b031681565b6103e56109b2366004613d00565b611a59565b3480156109c357600080fd5b506103e56109d236600461393c565b611a74565b3480156109e357600080fd5b50610a286109f23660046138f1565b6003602052600090815260409020805460019091015465ffffffffffff80831692600160301b900416906001600160a81b031683565b6040805165ffffffffffff94851681529390921660208401526001600160a81b03169082015260600161032b565b348015610a6257600080fd5b506103fd610a71366004613d94565b611a99565b348015610a8257600080fd5b50610461610a913660046138a5565b611b8a565b348015610aa257600080fd5b506103fd60008051602061415783398151915281565b348015610ac457600080fd5b50610aed610ad33660046138f1565b60076020526000908152604090205465ffffffffffff1681565b60405165ffffffffffff909116815260200161032b565b348015610b1057600080fd5b506103e5610b1f3660046138f1565b611d11565b348015610b3057600080fd5b506103fd610b3f3660046138f1565b60009081526005602052604090205490565b60056020528160005260406000208181548110610b6d57600080fd5b60009182526020909120015465ffffffffffff81169250600160301b90046001600160a01b0316905082565b60006001600160e01b03198216637965db0b60e01b1480610bca57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020614157833981519152610be881611d2f565b50600d55565b600080516020614157833981519152610c0681611d2f565b6000610c1183611d3c565b90506000610c1d611fb8565b9050610c5d84836060015165ffffffffffff1683604080518082018252938452602080850193845260009283526002905290209151825551600190910155565b50505050565b600080516020614157833981519152610c7b81611d2f565b50600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600f546000908190610bca90600190613e85565b600082815260208190526040902060010154610ccd81611d2f565b610c5d83836120d6565b600080516020614157833981519152610cef81611d2f565b600060108381548110610d0457610d04613e98565b60009182526020909120600490910201905060068154610100900460ff166007811115610d3357610d33613b90565b1480610d59575060038154610100900460ff166007811115610d5757610d57613b90565b145b610d995760405162461bcd60e51b815260206004820152600c60248201526b57726f6e672073746174757360a01b60448201526064015b60405180910390fd5b805461ff00191661030017808255600a546040516000926001600160a01b0390921691600160701b90046001600160801b0316908381818185875af1925050503d8060008114610e05576040519150601f19603f3d011682016040523d82523d6000602084013e610e0a565b606091505b5050905080610e515760405162461bcd60e51b81526020600482015260136024820152724661696c2073656e642045746820746f204d5760681b6044820152606401610d90565b8154604051600160701b9091046001600160801b0316815284907fcdef6558dae40f2699846eedf449462daab85b1224ad7f077569ba91aaa949259060200160405180910390a2508054600160701b600160f01b03191690555050565b60168181548110610ebe57600080fd5b600091825260209091200154905081565b6001600160a01b0381163314610ef85760405163334bd91960e11b815260040160405180910390fd5b610f028282612168565b505050565b606060056000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610f8a576000848152602090819020604080518082019091529084015465ffffffffffff81168252600160301b90046001600160a01b031681830152825260019092019101610f3c565b505050509050919050565b600080516020614157833981519152610fad81611d2f565b600060108481548110610fc257610fc2613e98565b60009182526020909120600490910201905060018154610100900460ff166007811115610ff157610ff1613b90565b1461103e5760405162461bcd60e51b815260206004820152601960248201527f526166666c65206973206e6f7420696e206163636570746564000000000000006044820152606401610d90565b82516000805b8281101561111a57600086828151811061106057611060613e98565b6020026020010151905060006040518060400160405280848860000160089054906101000a900465ffffffffffff1665ffffffffffff166110a19190613eae565b6110ac906001613eae565b65ffffffffffff90811682526001600160a01b0394851660209283015260008c81526005835260408120805460018181018355918352918490208551920180549590940151909616600160301b026001600160d01b0319909416911617919091179055509182019101611044565b508254611137908290600160401b900465ffffffffffff16613ec1565b835465ffffffffffff60401b1916600160401b65ffffffffffff92831681029190911780865560405189937f4da4f5fab0816c65315b6f5d15f879f96b98661133d7b3787788f291367604fb93611199938b9389939290910490911690613ee7565b60405180910390a2505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461121a5760405162461bcd60e51b8152602060048201526016602482015275043616c6c6572206e6f74204169726e6f6465205252560541b6044820152606401610d90565b60008381526017602052604090205460ff1661126f5760405162461bcd60e51b81526020600482015260146024820152732932b8bab2b9ba1024a2103737ba1035b737bbb760611b6044820152606401610d90565b6000838152601760205260408120805460ff19169055611291828401846138f1565b601581905560405181815290915084907f1ca47bacd454c26163f84eff4aa514e291ba9fa67ad6029e39567c122bbed30f9060200160405180910390a260008481526002602090815260408083208151808301909252805482526001015491810182905291906113019084613f62565b61130c906001613eae565b604080518082018252858152602080820184815286516000908152600180845290859020845181559151910155855183518881529182018590529394509092917f7c40e661b8212d0c4f60ac6e6ebed99c28680c7b3ede5b82f3b0254543f62fca910160405180910390a2825161138390836121d3565b50505050505050565b6010818154811061139c57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015460ff80841695506101008404169362010000840465ffffffffffff90811694600160401b810490911693600160701b9091046001600160801b0316926001600160a01b03909116919088565b600061141581611d2f565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561144e573d6000803e3d6000fd5b5050565b60008051602061415783398151915261146a81611d2f565b60046010838154811061147f5761147f613e98565b6000918252602090912060049091020154610100900460ff1660078111156114a9576114a9613b90565b146115055760405162461bcd60e51b815260206004820152602660248201527f526166666c65206973206e6f7420696e20636c6f73652072657175657374656460448201526520737461746560d01b6064820152608401610d90565b60016010838154811061151a5761151a613e98565b60009182526020909120600490910201805461ff00191661010083600781111561154657611546613b90565b0217905550817fc1191e7178b58ad510709587719f39ec315fa79e81ee7ba5c5ef3c894e94a651600160405161157c9190613f76565b60405180910390a25050565b600061159381611d2f565b50601180546001600160a01b039586166001600160a01b03199182161790915560129390935560139190915560148054919093169116179055565b600f81815481106115de57600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015492945065ffffffffffff8216936001600160a01b03600160301b90930483169391831692169086565b60008051602061415783398151915261164681611d2f565b61144e8260006121f8565b6000600f828154811061166657611666613e98565b9060005260206000209060050201905060006010838154811061168b5761168b613e98565b60009182526020822060049091020191508154610100900460ff1660078111156116b7576116b7613b90565b146116f95760405162461bcd60e51b8152602060048201526012602482015271149859999b19481b9bdd0810d4915055115160721b6044820152606401610d90565b600182015482546040516331a9108f60e11b81526004810191909152600160301b9091046001600160a01b03169033908290636352211e90602401602060405180830381865afa158015611751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117759190613f8f565b6001600160a01b0316146117cb5760405162461bcd60e51b815260206004820152601a60248201527f4e4654206973206e6f74206f776e65642062792063616c6c65720000000000006044820152606401610d90565b815461010061ff00199091161782556003830180546001600160a01b0319163390811790915583546040516323b872dd60e01b8152600481019290925230602483015260448201526001600160a01b038216906323b872dd90606401600060405180830381600087803b15801561184157600080fd5b505af1158015611855573d6000803e3d6000fd5b50506040513392508691507f8bb509eedfd1c4847b0a8a2b4493cf2ebb9970dc367e477cd2a8523e212dc1db90600090a350505050565b600061189781611d2f565b50600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6118eb61385f565b601082815481106118fe576118fe613e98565b6000918252602091829020604080516101008082019092526004909302909101805460ff808216151585529394919391850192900416600781111561194557611945613b90565b600781111561195657611956613b90565b8152815465ffffffffffff62010000820481166020840152600160401b82041660408301526001600160801b03600160701b90910416606082015260018201546001600160a01b03166080820152600282015460a082015260039091015460c09091015292915050565b60006119cb81611d2f565b601154601454604051631d414cbd60e01b81526001600160a01b03928316600482015290821660248201527f000000000000000000000000000000000000000000000000000000000000000090911690631d414cbd90604401600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b5050505050565b6000611a67858585856123db565b9050611a52818686612a51565b600082815260208190526040902060010154611a8f81611d2f565b610c5d8383612168565b6000600080516020614157833981519152611ab381611d2f565b6001600160a01b038916611af857604051636b221d4560e11b815260206004820152600b60248201526a139195081a5cc81b9d5b1b60aa1b6044820152606401610d90565b6113888465ffffffffffff161115611b4957604051636b221d4560e11b81526020600482015260136024820152720c6dedadad2e6e6d2dedc40e8dede40d0d2ced606b1b6044820152606401610d90565b611b618a8a8a65ffffffffffff168a8a8a8a8a612ba0565b611b6961304f565b600f54600090611b7b90600190613e85565b9b9a5050505050505050505050565b60008281526005602052604081208190611ba490846131c6565b60008581526005602052604081208054929350909183908110611bc957611bc9613e98565b600091825260209091200154600160301b90046001600160a01b031690508015611bf6579150610bca9050565b6000825b81158015611c4157506000878152600560205260408120805483908110611c2357611c23613e98565b600091825260209091200154600160301b90046001600160a01b0316145b15611c7b5780600003611c7057600087815260056020526040902054611c6990600190613e85565b9050611bfa565b611c69600182613e85565b8115611cc15760405162461bcd60e51b8152602060048201526015602482015274105b1b081d5cd95c9cc8189b1858dadb1a5cdd1959605a1b6044820152606401610d90565b6000878152600560205260409020805482908110611ce157611ce1613e98565b600091825260209091200154600160301b90046001600160a01b03169450610bca9350505050565b505092915050565b600080516020614157833981519152611d2981611d2f565b50600e55565b611d39813361329d565b50565b611d4461385f565b600060108381548110611d5957611d59613e98565b6000918252602080832086845260049182905260409093209102909101915060018254610100900460ff166007811115611d9557611d95613b90565b14611ddb5760405162461bcd60e51b8152602060048201526016602482015275526166666c6520696e2077726f6e672073746174757360501b6044820152606401610d90565b805482546001600160801b03918216600160701b9091049091161015611e435760405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f7567682066756e6473207261697365640000000000000000006044820152606401610d90565b81548154600160701b9091046001600160801b03908116600160801b909204161115611eb15760405162461bcd60e51b815260206004820152601860248201527f446573697265642066756e6473206e6f742072616973656400000000000000006044820152606401610d90565b815461ff0019166104001780835560408051600160701b9092046001600160801b031682525185917ff2be214756d2fbc1e781d10809ddef33000009d805be55356bb348134ce21c68919081900360200190a260408051610100808201909252835460ff8082161515835291928592602085019291909104166007811115611f3b57611f3b613b90565b6007811115611f4c57611f4c613b90565b8152815465ffffffffffff62010000820481166020840152600160401b82041660408301526001600160801b03600160701b90910416606082015260018201546001600160a01b03166080820152600282015460a082015260039091015460c090910152949350505050565b601154601254601454604051636e6be03f60e01b81526001600160a01b0393841660048201526024810192909252306044830181905290831660648301526084820152631b8c6c8560e11b60a482015260e060c4820152600060e482018190529182917f000000000000000000000000000000000000000000000000000000000000000090911690636e6be03f90610104016020604051808303816000875af1158015612069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208d9190613fac565b600081815260176020526040808220805460ff191660011790555191925082917fcba2da2f3c0c732a104019a3104936397dde7343964c1518ceb760052e4537b19190a2919050565b60006120e283836118ba565b612160576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556121183390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610bca565b506000610bca565b600061217483836118ba565b15612160576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610bca565b60006121df83836132d6565b9050610f028160400151826000015183606001516136bc565b6000600f838154811061220d5761220d613e98565b9060005260206000209060050201905060006010848154811061223257612232613e98565b60009182526020909120600490910201905060018154610100900460ff16600781111561226157612261613b90565b1480612287575060008154610100900460ff16600781111561228557612285613b90565b145b6122c25760405162461bcd60e51b815260206004820152600c60248201526b57726f6e672073746174757360a01b6044820152606401610d90565b60018154610100900460ff1660078111156122df576122df613b90565b03612382578265ffffffffffff1660000361231e5760018201548254600384015461231e926001600160a01b03600160301b90910481169291166136bc565b8265ffffffffffff16600103612348578154600383015461234891906001600160a01b031661372d565b8265ffffffffffff1660020361238257600182015482546003840154612382926001600160a01b03600160301b90910481169291166137c7565b805461ff0019166106001780825560408051600160701b9092046001600160801b031682525185917fd512a34b0f0618078770fcd85d974df1ab46a7882e8b3d45aa91764f4961aed2919081900360200190a250505050565b6123e361385f565b6000601086815481106123f8576123f8613e98565b60009182526020909120600490910201905060018154610100900460ff16600781111561242757612427613b90565b146124675760405163efeb42cf60e01b815260206004820152600f60248201526e139bdd081a5b881050d0d154151151608a1b6044820152606401610d90565b6000858152600360209081526040918290208251606081018452815465ffffffffffff808216808452600160301b90920416938201939093526001909101546001600160a81b03169281019290925287146124fa5760405163efeb42cf60e01b81526020600482015260126024820152711259081b9bdd081a5b881c9859999b19525960721b6044820152606401610d90565b602081015160408201516001600160a81b0316341461255c5760405163efeb42cf60e01b815260206004820152601760248201527f6d73672e76616c7565206e6f74207468652070726963650000000000000000006044820152606401610d90565b81604001516001600160a81b031660000361266e573233146125c15760405163efeb42cf60e01b815260206004820152601760248201527f74782e6f726967696e20213d206d73672e73656e6465720000000000000000006044820152606401610d90565b6040805133602082015290810189905260009060600160408051601f1981840301815291815281516020928301206000818152600990935291205490915060ff1615156001036126545760405163efeb42cf60e01b815260206004820152601d60248201527f506c6179657220616c726561647920676f74206672656520656e7472790000006044820152606401610d90565b6000908152600960205260409020805460ff191660011790555b60028301541561273157600183015460028401546040516370a0823160e01b81523360048201526001600160a01b039092169182906370a0823190602401602060405180830381865afa1580156126c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ed9190613fac565b101561272f5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610d90565b505b60038301541561280257604051636386c1c760e01b81523360048201526000907370c3a6cef3bc1355a17dd4a477ce414d9b8c703990636386c1c79060240161016060405180830381865afa15801561278e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b29190613fc5565b90508360030154816040015110156128005760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610d90565b505b825460408051808201909152600160401b90910465ffffffffffff16906000908061282d8585613ec1565b65ffffffffffff90811682523360209283015260008d815260058352604081208054600181018255818352848320865191018054958701516001600160a01b0316600160301b026001600160d01b03199096169190941617939093179091558c8152815492935090916128a2576128a2613e98565b600091825260209091200180546001600160d01b0319169055845434908690600e906128df908490600160701b90046001600160801b0316614063565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550828261290f9190613ec1565b855465ffffffffffff91909116600160401b0265ffffffffffff60401b199091161785556040516129439089908990614083565b604080519182900382208754600160401b900465ffffffffffff168352602083018c90529133918d917f9c7badb763bd51dd75e7dfd39f42cc0994c1626ae34abac4a86d899041b7f8d2910160405180910390a460408051610100808201909252865460ff80821615158352919288926020850192919091041660078111156129ce576129ce613b90565b60078111156129df576129df613b90565b8152815462010000810465ffffffffffff9081166020840152600160401b8204166040830152600160701b90046001600160801b0316606082015260018201546001600160a01b03166080820152600282015460a082015260039091015460c0909101529a9950505050505050505050565b604083015165ffffffffffff1615610f02576000818152600360209081526040808320815160608082018452825465ffffffffffff8082168452600160301b90910481168387019081526001909401546001600160a81b03168386015284518087018a9052338187015285518082038701815292018552815191860191909120808752600790955294839020549288015191519094928316929190911690612af99083613ec1565b65ffffffffffff161115612b465760405163efeb42cf60e01b815260206004820152601360248201527215d85b1b195d08185b1c9958591e481d5cd959606a1b6044820152606401610d90565b60208084015160008481526007909252604090912054612b6e919065ffffffffffff16613ec1565b600092835260076020526040909220805465ffffffffffff191665ffffffffffff909316929092179091555050505050565b6040805160c08101825287815265ffffffffffff808516602083019081526001600160a01b03808c169484019485526000606085018181526080860182815260a08701838152600f8054600181810183558287528a5160059092027f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80281019290925597517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac803820180549c518916600160301b026001600160d01b0319909d1691909a16179a909a1790975591517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac804890180549186166001600160a01b031992831617905590517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac805890180549190951691161790925590517f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac806909501949094559054919291612d0e9190613e85565b90506000859003612d4e57604051636b221d4560e11b81526020600482015260096024820152684e6f2070726963657360b81b6044820152606401610d90565b60005b85811015612f0157868682818110612d6b57612d6b613e98565b9050606002016020016020810190612d839190614093565b65ffffffffffff16600003612dcd57604051636b221d4560e11b815260206004820152600f60248201526e06e756d456e7472696573206973203608c1b6044820152606401610d90565b600060405180606001604052808465ffffffffffff168152602001898985818110612dfa57612dfa613e98565b9050606002016020016020810190612e129190614093565b65ffffffffffff168152602001898985818110612e3157612e31613e98565b9050606002016040016020810190612e4991906140ae565b6001600160a81b03169052905080600360008a8a86818110612e6d57612e6d613e98565b612e839260206060909202019081019150614093565b65ffffffffffff9081168252602080830193909352604091820160002084518154948601518316600160301b026bffffffffffffffffffffffff199095169216919091179290921782559190910151600191820180546001600160a81b039092166001600160a81b0319909216919091179055919091019050612d51565b50604080518082019091526001600160801b0380891682528b166020820152600f54600490600090612f3590600190613e85565b8152602080820192909252604001600020825192909101516001600160801b03908116600160801b029216919091179055600f5488906001600160a01b038b1690612f8290600190613e85565b6040517f81781e053ec72aa8731479536c4da8f819ef3283d2c0dea5c4f0d938bed8489590600090a460408051808201825260018082523360208084019182526000868152600582529485208054938401815580865290852084519301805492516001600160a01b0316600160301b026001600160d01b031990931665ffffffffffff94909416939093179190911790915583835280549192909161302957613029613e98565b600091825260209091200180546001600160d01b03191690555050505050505050505050565b6040805161010080820183526000808352602083018181529383018190526060830181905260808301819052600c546001600160a01b031660a0840152600d5460c0840152600e5460e0840152601080546001810182559152825160049091027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67201805491151560ff1983168117825594519394859491939192849261ff001990921661ffff19909116179083600781111561310d5761310d613b90565b021790555060408201518154606084015160808501516dffffffffffffffffffffffff0000199092166201000065ffffffffffff9485160265ffffffffffff60401b191617600160401b939091169290920291909117600160701b600160f01b031916600160701b6001600160801b039092169190910217815560a08201516001820180546001600160a01b0319166001600160a01b0390921691909117905560c0820151600282015560e09091015160039091015550565b815460009081036131d957506000610bca565b82546000905b8082101561323e5760006131f3838361383d565b90508486828154811061320857613208613e98565b60009182526020909120015465ffffffffffff16111561322a57809150613238565b613235816001613eae565b92505b506131df565b60008211801561327c57508385613256600185613e85565b8154811061326657613266613e98565b60009182526020909120015465ffffffffffff16145b156132955761328c600183613e85565b92505050610bca565b509050610bca565b6132a782826118ba565b61144e5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610d90565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526000600f848154811061331d5761331d613e98565b9060005260206000209060050201905060006010858154811061334257613342613e98565b60009182526020909120600490910201905060028154610100900460ff16600781111561337157613371613b90565b1480613397575060048154610100900460ff16600781111561339557613395613b90565b145b6133dc5760405162461bcd60e51b8152602060048201526016602482015275526166666c6520696e2077726f6e672073746174757360501b6044820152606401610d90565b600482018490556133ed8585611b8a565b6002830180546001600160a01b0319166001600160a01b0392909216919091179055805461ff0019166105001780825560018301546000916127109161344d9165ffffffffffff90911690600160701b90046001600160801b03166140d7565b61345791906140fa565b82546001600160801b03918216925060009161347d918491600160701b90910416613e85565b60038501546040519192506000916001600160a01b039091169083908381818185875af1925050503d80600081146134d1576040519150601f19603f3d011682016040523d82523d6000602084013e6134d6565b606091505b505090508061351e5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610d90565b600a546040516000916001600160a01b03169085908381818185875af1925050503d806000811461356b576040519150601f19603f3d011682016040523d82523d6000602084013e613570565b606091505b50509050806135b95760405162461bcd60e51b81526020600482015260156024820152744661696c65642073656e642045746820746f204d5760581b6044820152606401610d90565b887f7378e11c2b0ec7514bbf7ba369980eedcba0bca03e116dc9e7138f7748e211d6856040516135eb91815260200190565b60405180910390a26002860154855460408051600160701b9092046001600160801b03168252602082018b90526001600160a01b03909216918b917fe0b2a72a0644b093aac275024c05c7c28851a0b572557a32241d13634a0f3e08910160405180910390a350506040805160c08101825285548152600186015465ffffffffffff81166020830152600160301b90046001600160a01b03908116928201929092526002860154821660608201526003860154909116608082015260049094015460a0850152509195945050505050565b6040516323b872dd60e01b81523060048201526001600160a01b038281166024830152604482018490528491908216906323b872dd90606401600060405180830381600087803b15801561370f57600080fd5b505af1158015613723573d6000803e3d6000fd5b5050505050505050565b6000816001600160a01b03168360405160006040518083038185875af1925050503d806000811461377a576040519150601f19603f3d011682016040523d82523d6000602084013e61377f565b606091505b5050905080610f025760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610d90565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284919082169063a9059cbb906044016020604051808303816000875af1158015613819573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a529190614120565b600061384c6002848418614142565b61385890848416613eae565b9392505050565b60408051610100810190915260008082526020820190815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b600080604083850312156138b857600080fd5b50508035926020909101359150565b6000602082840312156138d957600080fd5b81356001600160e01b03198116811461385857600080fd5b60006020828403121561390357600080fd5b5035919050565b6001600160a01b0381168114611d3957600080fd5b60006020828403121561393157600080fd5b81356138588161390a565b6000806040838503121561394f57600080fd5b8235915060208301356139618161390a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156139bf578151805165ffffffffffff1685528601516001600160a01b0316868501529284019290850190600101613989565b5091979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715613a0657613a066139cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613a3557613a356139cc565b604052919050565b60008060408385031215613a5057600080fd5b8235915060208084013567ffffffffffffffff80821115613a7057600080fd5b818601915086601f830112613a8457600080fd5b813581811115613a9657613a966139cc565b8060051b9150613aa7848301613a0c565b8181529183018401918481019089841115613ac157600080fd5b938501935b83851015613aeb5784359250613adb8361390a565b8282529385019390850190613ac6565b8096505050505050509250929050565b60008083601f840112613b0d57600080fd5b50813567ffffffffffffffff811115613b2557600080fd5b602083019150836020828501011115613b3d57600080fd5b9250929050565b600080600060408486031215613b5957600080fd5b83359250602084013567ffffffffffffffff811115613b7757600080fd5b613b8386828701613afb565b9497909650939450505050565b634e487b7160e01b600052602160045260246000fd5b60088110613bc457634e487b7160e01b600052602160045260246000fd5b9052565b88151581526101008101613bdf602083018a613ba6565b65ffffffffffff97881660408301529590961660608701526001600160801b039390931660808601526001600160a01b039190911660a085015260c084015260e09092019190915292915050565b60008060008060808587031215613c4357600080fd5b8435613c4e8161390a565b935060208501359250604085013591506060850135613c6c8161390a565b939692955090935050565b815115158152602080830151610100830191613c9590840182613ba6565b50604083015165ffffffffffff808216604085015280606086015116606085015250506001600160801b03608084015116608083015260a0830151613ce560a08401826001600160a01b03169052565b5060c083015160c083015260e083015160e083015292915050565b60008060008060608587031215613d1657600080fd5b8435935060208501359250604085013567ffffffffffffffff811115613d3b57600080fd5b613d4787828801613afb565b95989497509550505050565b80356001600160801b0381168114613d6a57600080fd5b919050565b803565ffffffffffff81168114613d6a57600080fd5b803560038110613d6a57600080fd5b60008060008060008060008060e0898b031215613db057600080fd5b613db989613d53565b97506020890135613dc98161390a565b9650613dd760408a01613d6f565b9550613de560608a01613d53565b9450608089013567ffffffffffffffff80821115613e0257600080fd5b818b0191508b601f830112613e1657600080fd5b813581811115613e2557600080fd5b8c6020606083028501011115613e3a57600080fd5b602083019650809550505050613e5260a08a01613d6f565b9150613e6060c08a01613d85565b90509295985092959890939650565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bca57610bca613e6f565b634e487b7160e01b600052603260045260246000fd5b80820180821115610bca57610bca613e6f565b65ffffffffffff818116838216019080821115613ee057613ee0613e6f565b5092915050565b606080825284519082018190526000906020906080840190828801845b82811015613f295781516001600160a01b031684529284019290840190600101613f04565b5050506020840195909552505065ffffffffffff91909116604090910152919050565b634e487b7160e01b600052601260045260246000fd5b600082613f7157613f71613f4c565b500690565b60208101610bca8284613ba6565b8051613d6a8161390a565b600060208284031215613fa157600080fd5b81516138588161390a565b600060208284031215613fbe57600080fd5b5051919050565b60006101608284031215613fd857600080fd5b613fe06139e2565b613fe983613f84565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012061404b818501613f84565b90820152610140928301519281019290925250919050565b6001600160801b03818116838216019080821115613ee057613ee0613e6f565b8183823760009101908152919050565b6000602082840312156140a557600080fd5b61385882613d6f565b6000602082840312156140c057600080fd5b81356001600160a81b038116811461385857600080fd5b6001600160801b03818116838216028082169190828114611d0957611d09613e6f565b60006001600160801b038084168061411457614114613f4c565b92169190910492915050565b60006020828403121561413257600080fd5b8151801515811461385857600080fd5b60008261415157614151613f4c565b50049056fe523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0ca2646970667358221220e13c1f136a2eeef4effad640a0f62f5dc73b8ab3d670e088f000e4cf127a2c7964736f6c63430008180033000000000000000000000000a0ad79d995ddeeb18a14eaef56a549a04e3aa1bd