25 txs
26 calls
constructor
constructor(uint256 _fundraisingGoal, string _name, string _symbol, uint256 _fundraisingDeadline, uint256 _fundExpiry, address _daoManager, address _liquidityLockerFactory, uint256 _maxWhitelistAmount, address _protocolAdmin, uint256 _maxPublicContributionAmount)
functions
contributions
viewfunction contributions(address) view returns (uint256)
contributors
viewfunction contributors(uint256) view returns (address)
daoToken
viewfunction daoToken() view returns (address)
fundExpiry
viewfunction fundExpiry() view returns (uint256)
fundraisingDeadline
viewfunction fundraisingDeadline() view returns (uint256)
fundraisingFinalized
viewfunction fundraisingFinalized() view returns (bool)
fundraisingGoal
viewfunction fundraisingGoal() view returns (uint256)
getWhitelistLength
viewfunction getWhitelistLength() view returns (uint256)
goalReached
viewfunction goalReached() view returns (bool)
liquidityLocker
viewfunction liquidityLocker() view returns (address)
liquidityLockerFactory
viewfunction liquidityLockerFactory() view returns (address)
lpFeesCut
viewfunction lpFeesCut() view returns (uint8)
maxPublicContributionAmount
viewfunction maxPublicContributionAmount() view returns (uint256)
maxWhitelistAmount
viewfunction maxWhitelistAmount() view returns (uint256)
name
viewfunction name() view returns (string)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
POSITION_MANAGER
viewfunction POSITION_MANAGER() view returns (address)
protocolAdmin
viewfunction protocolAdmin() view returns (address)
SUPPLY_TO_FUNDRAISERS
viewfunction SUPPLY_TO_FUNDRAISERS() view returns (uint256)
SUPPLY_TO_LP
viewfunction SUPPLY_TO_LP() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalRaised
viewfunction totalRaised() view returns (uint256)
UNI_V3_FEE
viewfunction UNI_V3_FEE() view returns (uint24)
UNISWAP_V3_FACTORY
viewfunction UNISWAP_V3_FACTORY() view returns (address)
WETH
viewfunction WETH() view returns (address)
whitelist
viewfunction whitelist(address) view returns (bool)
whitelistArray
viewfunction whitelistArray(uint256) view returns (address)
addToWhitelist
nonpayablefunction addToWhitelist(address[] addresses)
contribute
payablefunction contribute() payable
emergencyEscape
nonpayablefunction emergencyEscape()
execute
nonpayablefunction execute(address[] contracts, bytes[] data, uint256[] msgValues)
extendFundExpiry
nonpayablefunction extendFundExpiry(uint256 newFundExpiry)
extendFundraisingDeadline
nonpayablefunction extendFundraisingDeadline(uint256 newFundraisingDeadline)
finalizeFundraising
nonpayablefunction finalizeFundraising(int24 initialTick, int24 upperTick, bytes32 salt)
refund
nonpayablefunction refund()
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address removedAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
setMaxPublicContributionAmount
nonpayablefunction setMaxPublicContributionAmount(uint256 _maxPublicContributionAmount)
setMaxWhitelistAmount
nonpayablefunction setMaxWhitelistAmount(uint256 _maxWhitelistAmount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AddWhitelist
event AddWhitelist(address)
Contribution
event Contribution(address indexed contributor, uint256 amount)
FundraisingFinalized
event FundraisingFinalized(bool success)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Refund
event Refund(address indexed contributor, uint256 amount)
RemoveWhitelist
event RemoveWhitelist(address)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
T
error T()
creation bytecode
0x60806040526009805460ff1916603c17905534801561001d57600080fd5b50604051613a0c380380613a0c83398101604081905261003c9161032c565b846001600160a01b03811661006c57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61007581610207565b5060018055896100d75760405162461bcd60e51b815260206004820152602760248201527f46756e6472616973696e6720676f616c206d75737420626520677265617465726044820152660207468616e20360cc1b6064820152608401610063565b4287116101355760405162461bcd60e51b815260206004820152602660248201527f5f66756e6472616973696e67446561646c696e65203e20626c6f636b2e74696d6044820152650657374616d760d41b6064820152608401610063565b60075486116101905760405162461bcd60e51b815260206004820152602160248201527f5f66756e64457870697279203e2066756e6472616973696e67446561646c696e6044820152606560f81b6064820152608401610063565b600a61019c8a8261048c565b50600b6101a9898261048c565b50600599909955600795909555600893909355600280546001600160a01b039283166001600160a01b0319909116179055600d9290925550600980549190921661010002610100600160a81b03199091161790555050600e5561054a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261027e57600080fd5b81516001600160401b0381111561029757610297610257565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102c5576102c5610257565b6040528181528382016020018510156102dd57600080fd5b60005b828110156102fc576020818601810151838301820152016102e0565b506000918101602001919091529392505050565b80516001600160a01b038116811461032757600080fd5b919050565b6000806000806000806000806000806101408b8d03121561034c57600080fd5b8a5160208c0151909a506001600160401b0381111561036a57600080fd5b6103768d828e0161026d565b60408d0151909a5090506001600160401b0381111561039457600080fd5b6103a08d828e0161026d565b60608d015160808e0151919a50985096506103bf905060a08c01610310565b94506103cd60c08c01610310565b60e08c015190945092506103e46101008c01610310565b915060006101208c01519050809150509295989b9194979a5092959850565b600181811c9082168061041757607f821691505b60208210810361043757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561048757806000526020600020601f840160051c810160208510156104645750805b601f840160051c820191505b818110156104845760008155600101610470565b50505b505050565b81516001600160401b038111156104a5576104a5610257565b6104b9816104b38454610403565b8461043d565b6020601f8211600181146104ed57600083156104d55750848201515b600019600385901b1c1916600184901b178455610484565b600084815260208120601f198516915b8281101561051d57878501518255602094850194600190920191016104fd565b508482101561053b5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6134b3806105596000396000f3fe60806040526004361061024a5760003560e01c8063715018a6116101395780639b19251a116100b6578063d251fefc1161007a578063d251fefc14610706578063d7bb99ba14610726578063e2d968271461072e578063e8c5e8e214610744578063f2fde38b14610764578063f73e5aab1461078457600080fd5b80639b19251a1461067a5780639e7b08d5146106aa578063a13202e9146106c0578063ad5c4648146106d5578063c5c4744c146106f057600080fd5b80638ab1d681116100fd5780638ab1d681146105e75780638da5cb5b14610607578063947fe8121461062557806395d89b41146106455780639759164a1461065a57600080fd5b8063715018a61461055357806372e041a0146105685780637d3d6522146105885780637f649783146105a757806384d4875e146105c757600080fd5b80633cb5d100116101c75780634afcccfe1161018b5780634afcccfe146104b357806356e1b2cf146104dd57806357aa0201146104f2578063590e1ae31461051e5780636f96953c1461053357600080fd5b80633cb5d100146103f75780633d9c804314610417578063420f68611461044157806342e94c90146104665780634914b0301461049357600080fd5b80631af1a5021161020e5780631af1a502146103415780631bea83fe146103615780632109db59146103a157806329d645d6146103c1578063343365f6146103e157600080fd5b806306a9d1a91461027c57806306fdde03146102a5578063150b7a02146102c7578063166d0c4c1461030c5780631a8d949a1461032b57600080fd5b3661027757600654610100900460ff16158015610268575060075442105b15610275576102756107ac565b005b600080fd5b34801561028857600080fd5b5061029260075481565b6040519081526020015b60405180910390f35b3480156102b157600080fd5b506102ba610b54565b60405161029c91906121eb565b3480156102d357600080fd5b506102f36102e236600461224e565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161029c565b34801561031857600080fd5b506102926a52b7d2dcc80cd2e400000081565b34801561033757600080fd5b5061029260085481565b34801561034d57600080fd5b5061027561035c3660046122ef565b610be2565b34801561036d57600080fd5b506103897303a520b32c04bf3beef7beb72e919cf822ed34f181565b6040516001600160a01b03909116815260200161029c565b3480156103ad57600080fd5b506102756103bc3660046122ef565b610ca1565b3480156103cd57600080fd5b506102756103dc3660046122ef565b610da6565b3480156103ed57600080fd5b50610292600d5481565b34801561040357600080fd5b506103896104123660046122ef565b610def565b34801561042357600080fd5b5061042d61271081565b60405162ffffff909116815260200161029c565b34801561044d57600080fd5b506009546103899061010090046001600160a01b031681565b34801561047257600080fd5b50610292610481366004612308565b600f6020526000908152604090205481565b34801561049f57600080fd5b50600c54610389906001600160a01b031681565b3480156104bf57600080fd5b506006546104cd9060ff1681565b604051901515815260200161029c565b3480156104e957600080fd5b50610275610e19565b3480156104fe57600080fd5b5060095461050c9060ff1681565b60405160ff909116815260200161029c565b34801561052a57600080fd5b50610275610f61565b34801561053f57600080fd5b50600254610389906001600160a01b031681565b34801561055f57600080fd5b506102756110ef565b34801561057457600080fd5b50610275610583366004612343565b611101565b34801561059457600080fd5b506006546104cd90610100900460ff1681565b3480156105b357600080fd5b506102756105c23660046123cb565b611892565b3480156105d357600080fd5b506102756105e23660046122ef565b611a4e565b3480156105f357600080fd5b50610275610602366004612308565b611a97565b34801561061357600080fd5b506000546001600160a01b0316610389565b34801561063157600080fd5b5061027561064036600461240d565b611c37565b34801561065157600080fd5b506102ba611dbc565b34801561066657600080fd5b50600354610389906001600160a01b031681565b34801561068657600080fd5b506104cd610695366004612308565b60106020526000908152604090205460ff1681565b3480156106b657600080fd5b5061029260055481565b3480156106cc57600080fd5b50601154610292565b3480156106e157600080fd5b506103896006602160991b0181565b3480156106fc57600080fd5b5061029260045481565b34801561071257600080fd5b506103896107213660046122ef565b611dc9565b6102756107ac565b34801561073a57600080fd5b50610292600e5481565b34801561075057600080fd5b506102926b033b2e3c9fd0803ce800000081565b34801561077057600080fd5b5061027561077f366004612308565b611dd9565b34801561079057600080fd5b506103897333128a8fc17869897dce68ed026d694621f6fdfd81565b6107b4611e14565b600654610100900460ff16156108085760405162461bcd60e51b815260206004820152601460248201527311dbd85b08185b1c9958591e481c995858da195960621b60448201526064015b60405180910390fd5b60075442106108485760405162461bcd60e51b815260206004820152600c60248201526b111958591b1a5b99481a1a5d60a21b60448201526064016107ff565b600034116108a45760405162461bcd60e51b815260206004820152602360248201527f436f6e747269627574696f6e206d75737420626520677265617465722074686160448201526206e20360ec1b60648201526084016107ff565b600d541561097c573360009081526010602052604090205460ff1661090b5760405162461bcd60e51b815260206004820152601760248201527f596f7520617265206e6f742077686974656c697374656400000000000000000060448201526064016107ff565b600d54336000908152600f60205260409020546109299034906124c9565b11156109775760405162461bcd60e51b815260206004820152601c60248201527f457863656564696e67206d617857686974656c697374416d6f756e740000000060448201526064016107ff565b6109fe565b600e54156109fe57600e54336000908152600f60205260409020546109a29034906124c9565b11156109fe5760405162461bcd60e51b815260206004820152602560248201527f457863656564696e67206d61785075626c6963436f6e747269627574696f6e416044820152641b5bdd5b9d60da1b60648201526084016107ff565b600554600454349190610a129083906124c9565b1115610a6257600454600554610a2891906124e2565b9050336108fc610a3883346124e2565b6040518115909202916000818181858888f19350505050158015610a60573d6000803e3d6000fd5b505b336000908152600f60205260408120549003610abb57601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b031916331790555b336000908152600f602052604081208054839290610ada9084906124c9565b925050819055508060046000828254610af391906124c9565b909155505060405181815233907f4d154d4aae216bed6d0926db77c00df2b57c6b5ba4eee05775de20facede3a7b9060200160405180910390a260055460045403610b48576006805461ff0019166101001790555b50610b5260018055565b565b600a8054610b61906124f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8d906124f5565b8015610bda5780601f10610baf57610100808354040283529160200191610bda565b820191906000526020600020905b815481529060010190602001808311610bbd57829003601f168201915b505050505081565b610bea611e3e565b6008548111610c3b5760405162461bcd60e51b815260206004820152601d60248201527f4d7573742063686f6f7365206c617465722066756e642065787069727900000060448201526064016107ff565b6008819055600354604051630d78d28160e11b8152600481018390526001600160a01b0390911690631af1a50290602401600060405180830381600087803b158015610c8657600080fd5b505af1158015610c9a573d6000803e3d6000fd5b5050505050565b6000546001600160a01b0316331480610cc9575060095461010090046001600160a01b031633145b610ce55760405162461bcd60e51b81526004016107ff9061252f565b600654610100900460ff1615610d3d5760405162461bcd60e51b815260206004820152601c60248201527f46756e6472616973696e6720676f616c2077617320726561636865640000000060448201526064016107ff565b6007548111610da15760405162461bcd60e51b815260206004820152602a60248201527f6e65772066756e6472616973696e6720646561646c696e65206d757374206265604482015269203e206f6c64206f6e6560b01b60648201526084016107ff565b600755565b6000546001600160a01b0316331480610dce575060095461010090046001600160a01b031633145b610dea5760405162461bcd60e51b81526004016107ff9061252f565b600d55565b60128181548110610dff57600080fd5b6000918252602090912001546001600160a01b0316905081565b60095461010090046001600160a01b03163314610e715760405162461bcd60e51b815260206004820152601660248201527536bab9ba10313290383937ba37b1b7b61030b236b4b760511b60448201526064016107ff565b60065460ff1615610ec45760405162461bcd60e51b815260206004820152601d60248201527f66756e6472616973696e6720616c72656164792066696e616c697a656400000060448201526064016107ff565b60095460405160009161010090046001600160a01b03169047908381818185875af1925050503d8060008114610f16576040519150601f19603f3d011682016040523d82523d6000602084013e610f1b565b606091505b5050905080610f5e5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107ff565b50565b610f69611e14565b600654610100900460ff1615610fc15760405162461bcd60e51b815260206004820152601c60248201527f46756e6472616973696e6720676f616c2077617320726561636865640000000060448201526064016107ff565b60075442116110125760405162461bcd60e51b815260206004820152601860248201527f446561646c696e65206e6f74207265616368656420796574000000000000000060448201526064016107ff565b336000908152600f602052604090205461106e5760405162461bcd60e51b815260206004820152601a60248201527f4e6f20636f6e747269627574696f6e7320746f20726566756e6400000000000060448201526064016107ff565b336000818152600f6020526040808220805490839055905190929183156108fc02918491818181858888f193505050501580156110af573d6000803e3d6000fd5b5060405181815233907fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9060200160405180910390a250610b5260018055565b6110f7611e3e565b610b526000611e6b565b611109611e3e565b600654610100900460ff166111605760405162461bcd60e51b815260206004820152601c60248201527f46756e6472616973696e6720676f616c206e6f7420726561636865640000000060448201526064016107ff565b60065460ff16156111b35760405162461bcd60e51b815260206004820152601960248201527f44414f20746f6b656e7320616c7265616479206d696e7465640000000000000060448201526064016107ff565b600081600a600b6040516111c6906121de565b6111d1929190612609565b8190604051809103906000f59050801580156111f1573d6000803e3d6000fd5b50600c80546001600160a01b0319166001600160a01b0383169081179091559091506006602160991b01116112575760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081cd85b1d60a21b60448201526064016107ff565b60005b60125481101561133a5760006012828154811061127957611279612637565b60009182526020808320909101546001600160a01b0316808352600f909152604082205460045491935091906112bb6b033b2e3c9fd0803ce80000008461264d565b6112c5919061267a565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201839052919250908616906340c10f1990604401600060405180830381600087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b50506001909501945061125a9350505050565b50604051600181527fe64f408051437053caebc2ec8b10a45148f5acee3a6922908871b997f80d335d9060200160405180910390a16006805460ff19166001179055600061138b600286900b611ebb565b60405163a167129560e01b81526001600160a01b03841660048201526006602160991b01602482015261271060448201529091506000907333128a8fc17869897dce68ed026d694621f6fdfd9063a1671295906064016020604051808303816000875af1158015611400573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611424919061269c565b60405163f637731d60e01b81526001600160a01b0384811660048301529192509082169063f637731d90602401600060405180830381600087803b15801561146b57600080fd5b505af115801561147f573d6000803e3d6000fd5b505060408051610160810182526001600160a01b0387168082526006602160991b0160208301526127108284015260028b810b60608401528a900b60808301526a52b7d2dcc80cd2e400000060a08301819052600060c0840181905260e084018190526101008401523061012084018190524261014085015293516340c10f1960e01b81526004810194909452602484015290935091506340c10f1990604401600060405180830381600087803b15801561153957600080fd5b505af115801561154d573d6000803e3d6000fd5b50505050836001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561158c57600080fd5b505af11580156115a0573d6000803e3d6000fd5b505060405163095ea7b360e01b81527303a520b32c04bf3beef7beb72e919cf822ed34f160048201526a52b7d2dcc80cd2e400000060248201526001600160a01b038716925063095ea7b391506044016020604051808303816000875af115801561160f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163391906126b9565b50604051634418b22b60e11b81526000907303a520b32c04bf3beef7beb72e919cf822ed34f19063883164569061166e9085906004016126db565b6080604051808303816000875af115801561168d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b1919061279f565b50506002549192506000916001600160a01b031690506376b5c47d7303a520b32c04bf3beef7beb72e919cf822ed34f16116f36000546001600160a01b031690565b60085460095460405160e086901b6001600160e01b03191681526001600160a01b03948516600482015293909216602484015267ffffffffffffffff1660448301526064820186905260ff1660848201523060a482015260c4016020604051808303816000875af115801561176c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611790919061269c565b604051632142170760e11b81523060048201526001600160a01b0382166024820152604481018490529091507303a520b32c04bf3beef7beb72e919cf822ed34f1906342842e0e90606401600060405180830381600087803b1580156117f557600080fd5b505af1158015611809573d6000803e3d6000fd5b50506040516367a4d1c360e01b8152600481018590526001600160a01b03841692506367a4d1c39150602401600060405180830381600087803b15801561184f57600080fd5b505af1158015611863573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b03949094169390931790925550505050505050505050565b6000546001600160a01b03163314806118ba575060095461010090046001600160a01b031633145b6118d65760405162461bcd60e51b81526004016107ff9061252f565b60005b81811015611a4957601060008484848181106118f7576118f7612637565b905060200201602081019061190c9190612308565b6001600160a01b0316815260208101919091526040016000205460ff16611a415760016010600085858581811061194557611945612637565b905060200201602081019061195a9190612308565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055601183838381811061199657611996612637565b90506020020160208101906119ab9190612308565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b039092169190911790557fe463fa6bdecb16f96f58191d902152633214e760ea443684105a7eef1ad16b9d838383818110611a1057611a10612637565b9050602002016020810190611a259190612308565b6040516001600160a01b03909116815260200160405180910390a15b6001016118d9565b505050565b6000546001600160a01b0316331480611a76575060095461010090046001600160a01b031633145b611a925760405162461bcd60e51b81526004016107ff9061252f565b600e55565b6000546001600160a01b0316331480611abf575060095461010090046001600160a01b031633145b611adb5760405162461bcd60e51b81526004016107ff9061252f565b6001600160a01b0381166000908152601060205260408120805460ff191690555b601154811015611bf757816001600160a01b031660118281548110611b2357611b23612637565b6000918252602090912001546001600160a01b031603611bef5760118054611b4d906001906124e2565b81548110611b5d57611b5d612637565b600091825260209091200154601180546001600160a01b039092169183908110611b8957611b89612637565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506011805480611bc857611bc86127f3565b600082815260209020810160001990810180546001600160a01b0319169055019055611bf7565b600101611afc565b506040516001600160a01b03821681527fa6667e187c57c5b0fa4e1122a695ed0754287513bcb4901fa6c1f44ba22c01879060200160405180910390a150565b611c3f611e3e565b60065460ff16611c4e57600080fd5b8483148015611c5c57508281145b611ca15760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f240d8cadccee8d0e640dad2e6dac2e8c6d60531b60448201526064016107ff565b60005b85811015611db3576000878783818110611cc057611cc0612637565b9050602002016020810190611cd59190612308565b6001600160a01b0316848484818110611cf057611cf0612637565b90506020020135878785818110611d0957611d09612637565b9050602002810190611d1b9190612809565b604051611d29929190612850565b60006040518083038185875af1925050503d8060008114611d66576040519150601f19603f3d011682016040523d82523d6000602084013e611d6b565b606091505b5050905080611daa5760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0819985a5b195960aa1b60448201526064016107ff565b50600101611ca4565b50505050505050565b600b8054610b61906124f5565b60118181548110610dff57600080fd5b611de1611e3e565b6001600160a01b038116611e0b57604051631e4fbdf760e01b8152600060048201526024016107ff565b610f5e81611e6b565b600260015403611e3757604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6000546001600160a01b03163314610b525760405163118cdaa760e01b81523360048201526024016107ff565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008360020b12611ed2578260020b611eda565b8260020b6000035b9050620d89e8811115611f00576040516315e4079d60e11b815260040160405180910390fd5b600081600116600003611f1757600160801b611f29565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611f5d576ffff97272373d413259a46990580e213a0260801c5b6004821615611f7c576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611f9b576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611fba576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611fd9576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611ff8576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612017576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612037576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612057576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612077576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612097576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156120b7576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156120d7576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156120f7576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612117576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612138576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612158576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612177576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612194576b048a170391f7dc42444e8fa20260801c5b60008460020b13156121b55780600019816121b1576121b1612664565b0490505b6401000000008106156121c95760016121cc565b60005b60ff16602082901c0192505050919050565b610c1d8061286183390190565b602081526000825180602084015260005b8181101561221957602081860181015160408684010152016121fc565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610f5e57600080fd5b60008060008060006080868803121561226657600080fd5b853561227181612239565b9450602086013561228181612239565b935060408601359250606086013567ffffffffffffffff8111156122a457600080fd5b8601601f810188136122b557600080fd5b803567ffffffffffffffff8111156122cc57600080fd5b8860208284010111156122de57600080fd5b959894975092955050506020019190565b60006020828403121561230157600080fd5b5035919050565b60006020828403121561231a57600080fd5b813561232581612239565b9392505050565b8035600281900b811461233e57600080fd5b919050565b60008060006060848603121561235857600080fd5b6123618461232c565b925061236f6020850161232c565b9150604084013590509250925092565b60008083601f84011261239157600080fd5b50813567ffffffffffffffff8111156123a957600080fd5b6020830191508360208260051b85010111156123c457600080fd5b9250929050565b600080602083850312156123de57600080fd5b823567ffffffffffffffff8111156123f557600080fd5b6124018582860161237f565b90969095509350505050565b6000806000806000806060878903121561242657600080fd5b863567ffffffffffffffff81111561243d57600080fd5b61244989828a0161237f565b909750955050602087013567ffffffffffffffff81111561246957600080fd5b61247589828a0161237f565b909550935050604087013567ffffffffffffffff81111561249557600080fd5b6124a189828a0161237f565b979a9699509497509295939492505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156124dc576124dc6124b3565b92915050565b818103818111156124dc576124dc6124b3565b600181811c9082168061250957607f821691505b60208210810361252957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601e908201527f4d757374206265206f776e6572206f722070726f746f636f6c41646d696e0000604082015260600190565b8054600090600181811c9082168061257f57607f821691505b60208210810361259f57634e487b7160e01b600052602260045260246000fd5b818652602086018180156125ba57600181146125d0576125fe565b60ff198516825283151560051b820195506125fe565b60008781526020902060005b858110156125f8578154848201526001909101906020016125dc565b83019650505b505050505092915050565b60408152600061261c6040830185612566565b828103602084015261262e8185612566565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176124dc576124dc6124b3565b634e487b7160e01b600052601260045260246000fd5b60008261269757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156126ae57600080fd5b815161232581612239565b6000602082840312156126cb57600080fd5b8151801515811461232557600080fd5b81516001600160a01b031681526101608101602083015161270760208401826001600160a01b03169052565b50604083015161271e604084018262ffffff169052565b506060830151612733606084018260020b9052565b506080830151612748608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010083015161010083015261012083015161278f6101208401826001600160a01b03169052565b5061014092830151919092015290565b600080600080608085870312156127b557600080fd5b845160208601519094506fffffffffffffffffffffffffffffffff811681146127dd57600080fd5b6040860151606090960151949790965092505050565b634e487b7160e01b600052603160045260246000fd5b6000808335601e1984360301811261282057600080fd5b83018035915067ffffffffffffffff82111561283b57600080fd5b6020019150368190038213156123c457600080fd5b818382376000910190815291905056fe608060405234801561001057600080fd5b50604051610c1d380380610c1d83398101604081905261002f91610198565b338282600361003e838261028a565b50600461004b828261028a565b5050506001600160a01b03811661007c57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100858161008d565b505050610348565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261010657600080fd5b81516001600160401b0381111561011f5761011f6100df565b604051601f8201601f19908116603f011681016001600160401b038111828210171561014d5761014d6100df565b60405281815283820160200185101561016557600080fd5b60005b8281101561018457602081860181015183830182015201610168565b506000918101602001919091529392505050565b600080604083850312156101ab57600080fd5b82516001600160401b038111156101c157600080fd5b6101cd858286016100f5565b602085015190935090506001600160401b038111156101eb57600080fd5b6101f7858286016100f5565b9150509250929050565b600181811c9082168061021557607f821691505b60208210810361023557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561028557806000526020600020601f840160051c810160208510156102625750805b601f840160051c820191505b81811015610282576000815560010161026e565b50505b505050565b81516001600160401b038111156102a3576102a36100df565b6102b7816102b18454610201565b8461023b565b6020601f8211600181146102eb57600083156102d35750848201515b600019600385901b1c1916600184901b178455610282565b600084815260208120601f198516915b8281101561031b57878501518255602094850194600190920191016102fb565b50848210156103395786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6108c6806103576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070f565b60405180910390f35b610105610100366004610779565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a3565b6102bd565b604051601281526020016100e9565b61015c610157366004610779565b6102e1565b005b61011961016c3660046107e0565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610779565b61031a565b6101196101d3366004610802565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107e0565b610328565b60606003805461022090610835565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610835565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fc565b506001949350505050565b6102e961045b565b6102f38282610488565b5050565b6102ff61045b565b61030960006104be565b565b60606004805461022090610835565b6000336102b18185856103fc565b61033061045b565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104be565b50565b6103788383836001610510565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198110156103f657818110156103e757604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f684848484036000610510565b50505050565b6001600160a01b03831661042657604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b0382166104505760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e5565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b25760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03841661053a5760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056457604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d791815260200190565b60405180910390a350505050565b6001600160a01b038316610610578060026000828254610605919061086f565b909155506106829050565b6001600160a01b038316600090815260208190526040902054818110156106635760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069e576002805482900390556106bd565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070291815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561073d5760208186018101516040868401015201610720565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461077457600080fd5b919050565b6000806040838503121561078c57600080fd5b6107958361075d565b946020939093013593505050565b6000806000606084860312156107b857600080fd5b6107c18461075d565b92506107cf6020850161075d565b929592945050506040919091013590565b6000602082840312156107f257600080fd5b6107fb8261075d565b9392505050565b6000806040838503121561081557600080fd5b61081e8361075d565b915061082c6020840161075d565b90509250929050565b600181811c9082168061084957607f821691505b60208210810361086957634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea264697066735822122040b67f5942b469be3a82425a524b2df28b352134f4e32fcfcc67e09c3d40f97764736f6c634300081c0033a26469706673582212208e67d62a99c2a4cea914552406b9443216828649438bf0913c09c096f2600d2a64736f6c634300081c0033000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000677d5ad700000000000000000000000000000000000000000000000000000000677d68e7000000000000000000000000aa8d210f7c34a056bb573f15962673c5c24fbd1000000000000000000000000021104fa3b456d9171d46996ee8bfb377a936bf5d00000000000000000000000000000000000000000000000000071afd498d0000000000000000000000000000aa8d210f7c34a056bb573f15962673c5c24fbd1000000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000000000000000075969747a68616b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045949545a00000000000000000000000000000000000000000000000000000000