0 txs
2k calls
constructor
constructor()
functions
addressExists
viewfunction addressExists(address _tAdr) view returns (bool exists)
bannedBuyersForCf
viewfunction bannedBuyersForCf(uint256, address) view returns (bool)
bannedBuyersGlobal
viewfunction bannedBuyersGlobal(address) view returns (bool)
BUYERS
viewfunction BUYERS(uint256, address) view returns (uint256 bDepo, uint256 tAlloc, bool claimed, bool refunded)
cfContract
viewfunction cfContract() view returns (address)
cfMgContract
viewfunction cfMgContract() view returns (address)
CfProjects
viewfunction CfProjects() view returns (uint256)
Cfs
viewfunction Cfs(uint256) view returns (address tAdr, tuple u1, tuple b1, tuple pAlloc, string tokenName, address cfOwner)
getBuyer
viewfunction getBuyer(uint256 _cf, address _buyer) view returns (tuple)
getBuyerCf
viewfunction getBuyerCf(uint256 _cf) view returns (address[])
getCf
viewfunction getCf(uint256 _cfId) view returns (tuple cf)
getCfByParticipant
viewfunction getCfByParticipant() view returns (uint256[] cfId, string[] cfName, uint256[] endDate, uint256[] bDepo, uint256[] status)
getFFAStatus
viewfunction getFFAStatus(uint256 _cf) view returns (bool isActive)
getProjectOwnedByAddress
viewfunction getProjectOwnedByAddress() view returns (uint256[])
getStatusCf
viewfunction getStatusCf(uint256 _cf) view returns (uint256)
isFFAActive
viewfunction isFFAActive(uint256) view returns (bool)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
tAdrList
viewfunction tAdrList(uint256) view returns (address)
addBuyer
nonpayablefunction addBuyer(uint256 _cf, address _buyer, tuple buyer)
addCf
nonpayablefunction addCf(tuple cf) returns (uint256 projectId)
banBuyer
nonpayablefunction banBuyer(address _buyer)
banBuyerForCf
nonpayablefunction banBuyerForCf(uint256 _cf, address _buyer)
batchBanBuyer
nonpayablefunction batchBanBuyer(address[] _buyers)
batchBanBuyerForCf
nonpayablefunction batchBanBuyerForCf(uint256 _cf, address[] _buyers)
batchUnbanBuyer
nonpayablefunction batchUnbanBuyer(address[] _buyers)
batchUnbanBuyerForCf
nonpayablefunction batchUnbanBuyerForCf(uint256 _cf, address[] _buyers)
initialize
nonpayablefunction initialize()
renounceOwnership
nonpayablefunction renounceOwnership()
setCancelled
nonpayablefunction setCancelled(uint256 _cf)
setCf
nonpayablefunction setCf(address _cfAddress)
setCfMg
nonpayablefunction setCfMg(address _cfMgAddress)
setFFA
nonpayablefunction setFFA(uint256 _cf, bool isActive)
setFinalized
nonpayablefunction setFinalized(uint256 _cf)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unbanBuyer
nonpayablefunction unbanBuyer(address _buyer)
unbanBuyerForCf
nonpayablefunction unbanBuyerForCf(uint256 _cf, address _buyer)
updateBuyer
nonpayablefunction updateBuyer(uint256 _cf, address _buyer, tuple buyer)
updatePool
nonpayablefunction updatePool(uint256 _cfId, tuple pAlloc)
updateRaisedAmount
nonpayablefunction updateRaisedAmount(uint256 _cfId, uint256 _raisedAmt)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address _beneficiary)
withdrawToken
nonpayablefunction withdrawToken(address _beneficiary, address _token)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
BuyerAdded
event BuyerAdded(uint256 indexed projectId, address buyer)
BuyerBannedForCf
event BuyerBannedForCf(uint256 indexed cfId, address indexed buyer)
BuyerBannedGlobally
event BuyerBannedGlobally(address indexed buyer)
BuyerUnbannedForCf
event BuyerUnbannedForCf(uint256 indexed cfId, address indexed buyer)
BuyerUnbannedGlobally
event BuyerUnbannedGlobally(address indexed buyer)
BuyerUpdated
event BuyerUpdated(uint256 indexed projectId, address buyer)
CancelledSet
event CancelledSet(uint256 indexed projectId)
CfAdded
event CfAdded(uint256 indexed projectId)
CfCancelled
event CfCancelled(uint256 indexed projectId, bool status)
CfFinalized
event CfFinalized(uint256 indexed projectId, bool status)
FFASet
event FFASet(uint256 indexed projectId, bool status)
FinalizedSet
event FinalizedSet(uint256 indexed projectId)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolUpdated
event PoolUpdated(uint256 indexed projectId)
RaisedAmountUpdated
event RaisedAmountUpdated(uint256 indexed projectId, uint256 raisedAmt)
Upgraded
event Upgraded(address indexed implementation)
errors
FailedToWithdrawEth
error FailedToWithdrawEth(address owner, address target, uint256 value)
NothingToWithdraw
error NothingToWithdraw()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516140786200012d60003960008181610f0e01528181610f4e01528181611590015281816115d00152818161172301528181611ea90152611ee901526140786000f3fe6080604052600436106102675760003560e01c8063715018a611610144578063c2fc8f8d116100b6578063eee3325c1161007a578063eee3325c14610817578063ef2d113014610847578063f2fde38b14610874578063f8416be514610894578063f93b4ff3146108b4578063fe75fce8146108e457600080fd5b8063c2fc8f8d14610777578063cd0ca2d214610797578063e452351b146107b7578063e4c3e733146107d7578063e742b378146107f757600080fd5b806394700ab11161010857806394700ab1146106aa5780639d29f699146106ca5780639dd5e481146106f7578063a502522214610717578063a5b53a7114610737578063aa72c1d81461075757600080fd5b8063715018a6146105c75780637d6716a0146105dc5780638129fc1c146105fc57806382fd9818146106115780638da5cb5b1461068c57600080fd5b80633aeac4e1116101dd57806351cff8d9116101a157806351cff8d9146104d557806352d1902d146104f5578063535d9e9f1461050a57806354c2a4a71461053057806364842d911461055057806365177dea1461057057600080fd5b80633aeac4e114610434578063459a3bb9146104545780634e52b3c31461046a5780634f1ef2861461048a57806350feca511461049d57600080fd5b8063292dda151161022f578063292dda151461034757806330a61e25146103825780633659cfe6146103a2578063377cf5f0146103c257806339ff2b34146103e25780633a0e850b1461041457600080fd5b8063075475131461026c57806307ed452c1461028e5780631095e036146102b957806314007974146102f957806325e65b9b14610319575b600080fd5b34801561027857600080fd5b5061028c61028736600461332c565b610904565b005b34801561029a57600080fd5b506102a36109e7565b6040516102b09190613384565b60405180910390f35b3480156102c557600080fd5b506102e96102d436600461332c565b60e16020526000908152604090205460ff1681565b60405190151581526020016102b0565b34801561030557600080fd5b5061028c610314366004613397565b610af7565b34801561032557600080fd5b506103396103343660046133b9565b610b94565b6040519081526020016102b0565b34801561035357600080fd5b506102e96103623660046133d2565b60e060209081526000928352604080842090915290825290205460ff1681565b34801561038e57600080fd5b5061028c61039d366004613410565b610e6b565b3480156103ae57600080fd5b5061028c6103bd36600461332c565b610f04565b3480156103ce57600080fd5b5061028c6103dd366004613480565b610fc9565b3480156103ee57600080fd5b506104026103fd3660046133b9565b61105e565b6040516102b09695949392919061356e565b34801561042057600080fd5b5061033961042f366004613881565b611215565b34801561044057600080fd5b5061028c61044f366004613949565b6113fb565b34801561046057600080fd5b5061033960c95481565b34801561047657600080fd5b5061028c610485366004613977565b6114a5565b61028c610498366004613a1c565b611586565b3480156104a957600080fd5b506104bd6104b83660046133b9565b61163f565b6040516001600160a01b0390911681526020016102b0565b3480156104e157600080fd5b5061028c6104f036600461332c565b61165f565b34801561050157600080fd5b50610339611716565b34801561051657600080fd5b5061051f6117c9565b6040516102b0959493929190613a7f565b34801561053c57600080fd5b5061028c61054b366004613480565b611c10565b34801561055c57600080fd5b5061028c61056b366004613b2e565b611ca0565b34801561057c57600080fd5b5061059061058b3660046133d2565b611d37565b6040516102b09190815181526020808301519082015260408083015115159082015260609182015115159181019190915260800190565b3480156105d357600080fd5b5061028c611db7565b3480156105e857600080fd5b5061028c6105f7366004613b79565b611dcb565b34801561060857600080fd5b5061028c611e9f565b34801561061d57600080fd5b5061066461062c3660046133d2565b60e360209081526000928352604080842090915290825290208054600182015460029092015490919060ff8082169161010090041684565b60408051948552602085019390935290151591830191909152151560608201526080016102b0565b34801561069857600080fd5b506033546001600160a01b03166104bd565b3480156106b657600080fd5b5060cb546104bd906001600160a01b031681565b3480156106d657600080fd5b506106ea6106e53660046133b9565b612054565b6040516102b09190613ba7565b34801561070357600080fd5b5061028c6107123660046133b9565b612110565b34801561072357600080fd5b506102e961073236600461332c565b6121a1565b34801561074357600080fd5b5061028c6107523660046133d2565b61222d565b34801561076357600080fd5b5061028c61077236600461332c565b612321565b34801561078357600080fd5b5061028c61079236600461332c565b61234b565b3480156107a357600080fd5b5061028c6107b2366004613b2e565b612426565b3480156107c357600080fd5b5061028c6107d23660046133b9565b6124b7565b3480156107e357600080fd5b5061028c6107f236600461332c565b612546565b34801561080357600080fd5b5061028c6108123660046133d2565b612570565b34801561082357600080fd5b506102e96108323660046133b9565b60e56020526000908152604090205460ff1681565b34801561085357600080fd5b506108676108623660046133b9565b612662565b6040516102b09190613bf4565b34801561088057600080fd5b5061028c61088f36600461332c565b61283d565b3480156108a057600080fd5b5060ca546104bd906001600160a01b031681565b3480156108c057600080fd5b506102e96108cf3660046133b9565b600090815260e5602052604090205460ff1690565b3480156108f057600080fd5b5061028c6108ff366004613977565b6128b3565b60cb546001600160a01b0316331480610927575060ca546001600160a01b031633145b8061093157503330145b6109565760405162461bcd60e51b815260040161094d90613cc3565b60405180910390fd5b6001600160a01b03811661097c5760405162461bcd60e51b815260040161094d90613d08565b6001600160a01b038116600090815260e1602052604090205460ff16156109e4576001600160a01b038116600081815260e16020526040808220805460ff19169055517f776d261caf8bd7142c0e6ad58fa25d748854594e868964bc0403ee46c3267f569190a25b50565b6060600060015b60c9548111610a3a57600081815260e26020526040902060130154336001600160a01b0390911603610a285781610a2481613d37565b9250505b80610a3281613d37565b9150506109ee565b50600080826001600160401b03811115610a5657610a56613620565b604051908082528060200260200182016040528015610a7f578160200160208202803683370190505b50905060015b60c9548111610aef57600081815260e26020526040902060130154336001600160a01b0390911603610add5780828481518110610ac457610ac4613d5e565b602090810291909101015282610ad981613d37565b9350505b80610ae781613d37565b915050610a85565b509392505050565b60cb546001600160a01b0316331480610b1a575060ca546001600160a01b031633145b80610b2457503330145b610b405760405162461bcd60e51b815260040161094d90613cc3565b600082815260e26020526040908190206006018290555182907fc30df48272cf570a186ef4a2245f0386d11cf60d4dd2b30528514a17e401e78390610b889084815260200190565b60405180910390a25050565b600081815260e260209081526040808320815160c0808201845282546001600160a01b0316825283518082018552600184015481526002840154818701526003840154818601526004840154606080830191909152600580860154608080850191909152600687015460a080860191909152868a019490945287518084018952600788015460ff80821615158352610100820481161515838d015262010000909104161515818a015286890152875194850188526008870180548652600988015499860199909952600a87015485890152600b87015485840152600c870154908501528651808401978890528998959792880195938501929091600d88019182845b815481526020019060010190808311610c96575050505050815250508152602001601282018054610cc690613d74565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf290613d74565b8015610d3f5780601f10610d1457610100808354040283529160200191610d3f565b820191906000526020600020905b815481529060010190602001808311610d2257829003601f168201915b5050509183525050601391909101546001600160a01b0316602091820152600085815260e5825260409081902054908301519091015191925060ff169015610d8b575060049392505050565b60408201515180610db7575042826020015160800151108015610db75750602082015160a08101519051115b15610dc6575060039392505050565b60208083015160a08101519101511480610df0575042826020015160800151108015610df0575080155b15610dff575060029392505050565b42826020015160600151108015610e1d575042826020015160800151115b80610e385750808015610e3857506000826060015160400151115b15610e47575060019392505050565b428260200151606001511115610e61575060009392505050565b5060ff9392505050565b60cb546001600160a01b0316331480610e8e575060ca546001600160a01b031633145b80610e9857503330145b610eb45760405162461bcd60e51b815260040161094d90613cc3565b600082815260e56020908152604091829020805460ff1916841515908117909155915191825283917f63044fbc5b4f2bc3581f43a93da3d89389faeb1a2f3524bd49ad0e9ffd7769269101610b88565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f4c5760405162461bcd60e51b815260040161094d90613dae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f7e6129aa565b6001600160a01b031614610fa45760405162461bcd60e51b815260040161094d90613dfa565b610fad816129c6565b604080516000808252602082019092526109e4918391906129ce565b60cb546001600160a01b0316331480610fec575060ca546001600160a01b031633145b80610ff657503330145b6110125760405162461bcd60e51b815260040161094d90613cc3565b60005b818110156110595761104783838381811061103257611032613d5e565b9050602002016020810190610287919061332c565b8061105181613d37565b915050611015565b505050565b60e2602090815260009182526040918290208054835160c08082018652600184015482526002840154828601526003840154828701526004840154606080840191909152600580860154608080860191909152600687015460a08087019190915289518085018b52600789015460ff80821615158352610100820481161515838d015262010000909104161515818c01528a519586018b52600889018054875260098a01549a87019a909a52600a890154868c0152600b89015494860194909452600c880154918501919091528851808201998a90526001600160a01b0390961698949792969593949293908501929091600d87019182845b815481526020019060010190808311611157575050505050815250509080601201805461118390613d74565b80601f01602080910402602001604051908101604052809291908181526020018280546111af90613d74565b80156111fc5780601f106111d1576101008083540402835291602001916111fc565b820191906000526020600020905b8154815290600101906020018083116111df57829003601f168201915b505050601390930154919250506001600160a01b031686565b60cb546000906001600160a01b031633148061123b575060ca546001600160a01b031633145b8061124557503330145b6112615760405162461bcd60e51b815260040161094d90613cc3565b60c9805490600061127183613d37565b909155505060c954600090815260e26020908152604091829020845181546001600160a01b0319166001600160a01b039091161781558482015180516001830155808301516002830155808401516003830155606080820151600484015560808083015160058086019190915560a0938401516006860155888701518051600787018054838a0151938b015161ffff1990911692151561ff00191692909217610100931515939093029290921762ff0000191662010000911515919091021790558289015180516008870190815596810151600987015596870151600a86015591860151600b850155850151600c84015590840151869492939161137991600d8601916131cb565b505050608082015160128201906113909082613e8c565b5060a09190910151601390910180546001600160a01b0319166001600160a01b0390921691909117905581516113c590612b39565b60c9546040517fa19f7434261a8fe9efcb08194d581f4377bfb8c930416547c18d3c2cd5a38e6290600090a25060c9545b919050565b611403612bc0565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613f4b565b90508060000361149157604051630686827b60e51b815260040160405180910390fd5b6110596001600160a01b0383168483612c1a565b60cb546001600160a01b03163314806114c8575060ca546001600160a01b031633145b806114d257503330145b6114ee5760405162461bcd60e51b815260040161094d90613cc3565b600083815260e3602090815260408083206001600160a01b03861680855290835292819020845181558483015160018201558482015160029091018054606087015115156101000261ff00199315159390931661ffff19909116179190911790555191825284917fc9c0284444dc179f6b1b16567f967b4e07d10e7b19cc239d84a09095ca2f7e1291015b60405180910390a2505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115ce5760405162461bcd60e51b815260040161094d90613dae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116006129aa565b6001600160a01b0316146116265760405162461bcd60e51b815260040161094d90613dfa565b61162f826129c6565b61163b828260016129ce565b5050565b60cc816014811061164f57600080fd5b01546001600160a01b0316905081565b611667612bc0565b47600081900361168a57604051630686827b60e51b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116d7576040519150601f19603f3d011682016040523d82523d6000602084013e6116dc565b606091505b505090508061105957604051639d11f56360e01b81523360048201526001600160a01b03841660248201526044810183905260640161094d565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161094d565b50600080516020613ffc83398151915290565b606080606080606060c9546001600160401b038111156117eb576117eb613620565b604051908082528060200260200182016040528015611814578160200160208202803683370190505b50945060c9546001600160401b0381111561183157611831613620565b60405190808252806020026020018201604052801561186457816020015b606081526020019060019003908161184f5790505b50935060c9546001600160401b0381111561188157611881613620565b6040519080825280602002602001820160405280156118aa578160200160208202803683370190505b50925060c9546001600160401b038111156118c7576118c7613620565b6040519080825280602002602001820160405280156118f0578160200160208202803683370190505b50915060c9546001600160401b0381111561190d5761190d613620565b604051908082528060200260200182016040528015611936578160200160208202803683370190505b509050600060015b60c9548111611c0757600081815260e3602090815260408083203384529091529020548015611bf457600082815260e260209081526040808320815160c0808201845282546001600160a01b0316825283518082018552600184015481526002840154818701526003840154818601526004840154606080830191909152600580860154608080850191909152600687015460a080860191909152868a019490945287518084018952600788015460ff80821615158352610100820481161515838d015262010000909104161515818a015286890152875194850188526008870180548652600988015499860199909952600a87015485890152600b87015485840152600c87015490850152865180840197889052949795969188019593949285019291600d8801919082845b815481526020019060010190808311611a6b575050505050815250508152602001601282018054611a9b90613d74565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac790613d74565b8015611b145780601f10611ae957610100808354040283529160200191611b14565b820191906000526020600020905b815481529060010190602001808311611af757829003601f168201915b5050509183525050601391909101546001600160a01b0316602090910152895190915083908a9086908110611b4b57611b4b613d5e565b6020026020010181815250508060800151888581518110611b6e57611b6e613d5e565b6020026020010181905250806020015160800151878581518110611b9457611b94613d5e565b60200260200101818152505081868581518110611bb357611bb3613d5e565b602002602001018181525050611bc883610b94565b858581518110611bda57611bda613d5e565b602090810291909101015283611bef81613d37565b945050505b5080611bff81613d37565b91505061193e565b50509091929394565b60cb546001600160a01b0316331480611c33575060ca546001600160a01b031633145b80611c3d57503330145b611c595760405162461bcd60e51b815260040161094d90613cc3565b60005b8181101561105957611c8e838383818110611c7957611c79613d5e565b9050602002016020810190610792919061332c565b80611c9881613d37565b915050611c5c565b60cb546001600160a01b0316331480611cc3575060ca546001600160a01b031633145b80611ccd57503330145b611ce95760405162461bcd60e51b815260040161094d90613cc3565b60005b81811015611d3157611d1f84848484818110611d0a57611d0a613d5e565b9050602002016020810190610812919061332c565b80611d2981613d37565b915050611cec565b50505050565b604080516080808201835260008083526020808401829052838501829052606093840182905286825260e381528482206001600160a01b038716835281529084902084519283018552805483526001810154918301919091526002015460ff80821615159483019490945261010090049092161515908201525b92915050565b611dbf612bc0565b611dc96000612c6c565b565b60cb546001600160a01b0316331480611dee575060ca546001600160a01b031633145b80611df857503330145b611e145760405162461bcd60e51b815260040161094d90613cc3565b600082815260e2602090815260409182902083516008820190815591840151600982015591830151600a8301556060830151600b8301556080830151600c83015560a08301518392611e6d91600d9091019060056131cb565b50506040518391507f141d729c29cc848b27c53f7dbe9f9542cedc4ed2efa7bd2aeb2a4bdce06a407f90600090a25050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003611ee75760405162461bcd60e51b815260040161094d90613dae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f196129aa565b6001600160a01b031614611f3f5760405162461bcd60e51b815260040161094d90613dfa565b600054610100900460ff1615808015611f5f5750600054600160ff909116105b80611f795750303b158015611f79575060005460ff166001145b611fdc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161094d565b6000805460ff191660011790558015611fff576000805461ff0019166101001790555b612007612cbe565b600f60c95580156109e4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600081815260e46020526040812060609161206e82612ced565b90506000816001600160401b0381111561208a5761208a613620565b6040519080825280602002602001820160405280156120b3578160200160208202803683370190505b50905060005b82811015612107576120cb8482612cf7565b8282815181106120dd576120dd613d5e565b6001600160a01b0390921660209283029190910190910152806120ff81613d37565b9150506120b9565b50949350505050565b60cb546001600160a01b0316331480612133575060ca546001600160a01b031633145b8061213d57503330145b6121595760405162461bcd60e51b815260040161094d90613cc3565b600081815260e26020526040808220600701805461ff0019166101001790555182917fbd25ebe771653ab95942ce3398c940ac1d6813ff36f3e321b8d9c62fa77bb70f91a250565b6000805b601481101561222457826001600160a01b031660cc82601481106121cb576121cb613d5e565b01546001600160a01b0316036121e45750600192915050565b600060cc82601481106121f9576121f9613d5e565b01546001600160a01b0316036122125750600092915050565b8061221c81613d37565b9150506121a5565b50600092915050565b60cb546001600160a01b0316331480612250575060ca546001600160a01b031633145b8061225a57503330145b6122765760405162461bcd60e51b815260040161094d90613cc3565b6001600160a01b03811661229c5760405162461bcd60e51b815260040161094d90613d08565b600082815260e0602090815260408083206001600160a01b038516845290915290205460ff1661163b57600082815260e0602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551909184917fe287af29c7f87cef6e200b70a1af4924c713781e38a6f7484820ad1e2a7792cb9190a35050565b612329612bc0565b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b60cb546001600160a01b031633148061236e575060ca546001600160a01b031633145b8061237857503330145b6123945760405162461bcd60e51b815260040161094d90613cc3565b6001600160a01b0381166123ba5760405162461bcd60e51b815260040161094d90613d08565b6001600160a01b038116600090815260e1602052604090205460ff166109e4576001600160a01b038116600081815260e16020526040808220805460ff19166001179055517f8ea9567c92bfdb5936479e72d3cb8e7a2fa843d9a155b8953f26996b1370a5ed9190a250565b60cb546001600160a01b0316331480612449575060ca546001600160a01b031633145b8061245357503330145b61246f5760405162461bcd60e51b815260040161094d90613cc3565b60005b81811015611d31576124a58484848481811061249057612490613d5e565b9050602002016020810190610752919061332c565b806124af81613d37565b915050612472565b60cb546001600160a01b03163314806124da575060ca546001600160a01b031633145b806124e457503330145b6125005760405162461bcd60e51b815260040161094d90613cc3565b600081815260e26020526040808220600701805460ff191660011790555182917f013e2ac949bc129b955d51fade2ae9b617c585404087872fa7c8272187f035c691a250565b61254e612bc0565b60ca80546001600160a01b0319166001600160a01b0392909216919091179055565b60cb546001600160a01b0316331480612593575060ca546001600160a01b031633145b8061259d57503330145b6125b95760405162461bcd60e51b815260040161094d90613cc3565b6001600160a01b0381166125df5760405162461bcd60e51b815260040161094d90613d08565b600082815260e0602090815260408083206001600160a01b038516845290915290205460ff161561163b57600082815260e0602090815260408083206001600160a01b0385168085529252808320805460ff1916905551909184917f337fa795cb3cbb677b52619ec9e26ca20ce7b326262361fd35042a636aa34dc09190a35050565b61266a613209565b600082815260e26020908152604091829020825160c0808201855282546001600160a01b0316825284518082018652600184015481526002840154818601526003840154818701526004840154606080830191909152600580860154608080850191909152600687015460a0808601919091528689019490945288518084018a52600788015460ff80821615158352610100820481161515838c015262010000909104161515818b0152868a0152885194850189526008870180548652600988015498860198909852600a870154858a0152600b87015485840152600c8701549085015287518084019889905294979596918801959394919392850192600d8801919082845b8154815260200190600101908083116127705750505050508152505081526020016012820180546127a090613d74565b80601f01602080910402602001604051908101604052809291908181526020018280546127cc90613d74565b80156128195780601f106127ee57610100808354040283529160200191612819565b820191906000526020600020905b8154815290600101906020018083116127fc57829003601f168201915b5050509183525050601391909101546001600160a01b031660209091015292915050565b612845612bc0565b6001600160a01b0381166128aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161094d565b6109e481612c6c565b60cb546001600160a01b03163314806128d6575060ca546001600160a01b031633145b806128e057503330145b6128fc5760405162461bcd60e51b815260040161094d90613cc3565b600083815260e3602090815260408083206001600160a01b03861684528252808320845181558285015160018201558185015160029091018054606087015115156101000261ff00199315159390931661ffff199091161791909117905585835260e4909152902061296e9083612d0a565b506040516001600160a01b038316815283907fd28f937e71e8a89ddbefb8937335b2ae03fb74ce63dd6a6f316724c5a7e6c3dc90602001611579565b600080516020613ffc833981519152546001600160a01b031690565b6109e4612bc0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612a015761105983612d1f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a5b575060408051601f3d908101601f19168201909252612a5891810190613f4b565b60015b612abe5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161094d565b600080516020613ffc8339815191528114612b2d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161094d565b50611059838383612dbb565b612b42816121a1565b6109e45760005b601481101561163b57600060cc8260148110612b6757612b67613d5e565b01546001600160a01b031603612bae578160cc8260148110612b8b57612b8b613d5e565b0180546001600160a01b0319166001600160a01b03929092169190911790555050565b80612bb881613d37565b915050612b49565b6033546001600160a01b03163314611dc95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161094d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611059908490612de0565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612ce55760405162461bcd60e51b815260040161094d90613f64565b611dc9612eb5565b6000611db1825490565b6000612d038383612ee5565b9392505050565b6000612d03836001600160a01b038416612f0f565b6001600160a01b0381163b612d8c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161094d565b600080516020613ffc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612dc483612f5e565b600082511180612dd15750805b1561105957611d318383612f9e565b6000612e35826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612fc39092919063ffffffff16565b9050805160001480612e56575080806020019051810190612e569190613faf565b6110595760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161094d565b600054610100900460ff16612edc5760405162461bcd60e51b815260040161094d90613f64565b611dc933612c6c565b6000826000018281548110612efc57612efc613d5e565b9060005260206000200154905092915050565b6000818152600183016020526040812054612f5657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611db1565b506000611db1565b612f6781612d1f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612d03838360405180606001604052806027815260200161401c60279139612fda565b6060612fd28484600085613052565b949350505050565b6060600080856001600160a01b031685604051612ff79190613fcc565b600060405180830381855af49150503d8060008114613032576040519150601f19603f3d011682016040523d82523d6000602084013e613037565b606091505b50915091506130488683838761312d565b9695505050505050565b6060824710156130b35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161094d565b600080866001600160a01b031685876040516130cf9190613fcc565b60006040518083038185875af1925050503d806000811461310c576040519150601f19603f3d011682016040523d82523d6000602084013e613111565b606091505b50915091506131228783838761312d565b979650505050505050565b6060831561319c578251600003613195576001600160a01b0385163b6131955760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161094d565b5081612fd2565b612fd283838151156131b15781518083602001fd5b8060405162461bcd60e51b815260040161094d9190613fe8565b82600581019282156131f9579160200282015b828111156131f95782518255916020019190600101906131de565b5061320592915061329e565b5090565b6040518060c0016040528060006001600160a01b0316815260200161325d6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152604080516060810182526000808252602082810182905292820152910190815260200161328a6132b3565b815260606020820152600060409091015290565b5b80821115613205576000815560010161329f565b6040518060c0016040528060008152602001600081526020016000815260200160008152602001600081526020016132e96132ee565b905290565b6040518060a001604052806005906020820280368337509192915050565b6001600160a01b03811681146109e457600080fd5b80356113f68161330c565b60006020828403121561333e57600080fd5b8135612d038161330c565b600081518084526020808501945080840160005b838110156133795781518752958201959082019060010161335d565b509495945050505050565b602081526000612d036020830184613349565b600080604083850312156133aa57600080fd5b50508035926020909101359150565b6000602082840312156133cb57600080fd5b5035919050565b600080604083850312156133e557600080fd5b8235915060208301356133f78161330c565b809150509250929050565b80151581146109e457600080fd5b6000806040838503121561342357600080fd5b8235915060208301356133f781613402565b60008083601f84011261344757600080fd5b5081356001600160401b0381111561345e57600080fd5b6020830191508360208260051b850101111561347957600080fd5b9250929050565b6000806020838503121561349357600080fd5b82356001600160401b038111156134a957600080fd5b6134b585828601613435565b90969095509350505050565b805182526020808201518184015260408201516040840152606082015160608401526080820151608084015260a082015160a0840160005b6005811015613516578251825291830191908301906001016134f9565b505050505050565b60005b83811015613539578181015183820152602001613521565b50506000910152565b6000815180845261355a81602086016020860161351e565b601f01601f19169290920160200192915050565b6001600160a01b0387811682526000906102c0906135c4602085018a805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b8751151560e085015260208801511515610100850152604088015115156101208501526135f56101408501886134c1565b8161028085015261360882850187613542565b92508085166102a08501525050979650505050505050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561365857613658613620565b60405290565b60405160a081016001600160401b038111828210171561365857613658613620565b600060c0828403121561369257600080fd5b61369a613636565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015292915050565b6000606082840312156136ea57600080fd5b604051606081018181106001600160401b038211171561370c5761370c613620565b604052905080823561371d81613402565b8152602083013561372d81613402565b6020820152604083013561374081613402565b6040919091015292915050565b600061014080838503121561376157600080fd5b613769613636565b915082358252602080840135818401526040840135604084015260608401356060840152608084013560808401528460bf8501126137a657600080fd5b6137ae61365e565b9184019180868411156137c057600080fd5b60a086015b848110156137dc57803583529183019183016137c5565b5060a08501525091949350505050565b60006001600160401b038084111561380657613806613620565b604051601f8501601f19908116603f0116810190828211818310171561382e5761382e613620565b8160405280935085815286868601111561384757600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261387257600080fd5b612d03838335602085016137ec565b60006020828403121561389357600080fd5b81356001600160401b03808211156138aa57600080fd5b908301906102c082860312156138bf57600080fd5b6138c7613636565b6138d083613321565b81526138df8660208501613680565b60208201526138f18660e085016136d8565b604082015261390486610140850161374d565b60608201526102808301358281111561391c57600080fd5b61392887828601613861565b60808301525061393b6102a08401613321565b60a082015295945050505050565b6000806040838503121561395c57600080fd5b82356139678161330c565b915060208301356133f78161330c565b600080600083850360c081121561398d57600080fd5b84359350602085013561399f8161330c565b92506080603f19820112156139b357600080fd5b50604051608081018181106001600160401b03821117156139d6576139d6613620565b604090815285013581526060850135602082015260808501356139f881613402565b604082015260a0850135613a0b81613402565b606082015292959194509192509050565b60008060408385031215613a2f57600080fd5b8235613a3a8161330c565b915060208301356001600160401b03811115613a5557600080fd5b8301601f81018513613a6657600080fd5b613a75858235602084016137ec565b9150509250929050565b60a081526000613a9260a0830188613349565b6020838203818501528188518084528284019150828160051b850101838b0160005b83811015613ae257601f19878403018552613ad0838351613542565b94860194925090850190600101613ab4565b50508681036040880152613af6818b613349565b9450505050508281036060840152613b0e8186613349565b90508281036080840152613b228185613349565b98975050505050505050565b600080600060408486031215613b4357600080fd5b8335925060208401356001600160401b03811115613b6057600080fd5b613b6c86828701613435565b9497909650939450505050565b6000806101608385031215613b8d57600080fd5b82359150613b9e846020850161374d565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613be85783516001600160a01b031683529284019291840191600101613bc3565b50909695505050505050565b60208152600060018060a01b038084511660208401526020840151613c516040850182805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b506040848101518051151561010086015260208101511515610120860152015115156101408401526060840151613c8c6101608501826134c1565b5060808401516102c0806102a0860152613caa6102e0860183613542565b91508260a0870151168186015250809250505092915050565b60208082526025908201527f43616c6c6572206973206e6f742074686520617574686f72697a656420636f6e6040820152641d1c9858dd60da1b606082015260800190565b602080825260159082015274496e76616c6964206275796572206164647265737360581b604082015260600190565b600060018201613d5757634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680613d8857607f821691505b602082108103613da857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b601f82111561105957600081815260208120601f850160051c81016020861015613e6d5750805b601f850160051c820191505b8181101561351657828155600101613e79565b81516001600160401b03811115613ea557613ea5613620565b613eb981613eb38454613d74565b84613e46565b602080601f831160018114613eee5760008415613ed65750858301515b600019600386901b1c1916600185901b178555613516565b600085815260208120601f198616915b82811015613f1d57888601518255948401946001909101908401613efe565b5085821015613f3b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613f5d57600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215613fc157600080fd5b8151612d0381613402565b60008251613fde81846020870161351e565b9190910192915050565b602081526000612d03602083018461354256fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f04f0d4abb830331a3ba904c5636f7dfb1414d4c34a29ea2a696fd46466cf00364736f6c63430008130033