0 txs
0 calls
constructor
No constructor.
functions
announcedEntryFeeNumerator
viewfunction announcedEntryFeeNumerator() view returns (uint256)
announcedExitFeeNumerator
viewfunction announcedExitFeeNumerator() view returns (uint256)
announcedFeeIncreaseTimestamp
viewfunction announcedFeeIncreaseTimestamp() view returns (uint256)
announcedManagerFeeNumerator
viewfunction announcedManagerFeeNumerator() view returns (uint256)
announcedPerformanceFeeNumerator
viewfunction announcedPerformanceFeeNumerator() view returns (uint256)
assetBalance
viewfunction assetBalance(address asset) view returns (uint256 balance)
assetDecimal
viewfunction assetDecimal(address asset) view returns (uint256 decimal)
assetPosition
viewfunction assetPosition(address) view returns (uint256)
assetValue
viewfunction assetValue(address asset, uint256 amount) view returns (uint256 value)
assetValue
viewfunction assetValue(address asset) view returns (uint256 value)
entryFeeNumerator
viewfunction entryFeeNumerator() view returns (uint256)
exitFeeNumerator
viewfunction exitFeeNumerator() view returns (uint256)
factory
viewfunction factory() view returns (address)
getDepositAssets
viewfunction getDepositAssets() view returns (address[])
getFee
viewfunction getFee() view returns (uint256, uint256, uint256, uint256, uint256)
getFeeIncreaseInfo
viewfunction getFeeIncreaseInfo() view returns (uint256, uint256, uint256, uint256, uint256)
getFundComposition
viewfunction getFundComposition() view returns (tuple[] assets, uint256[] balances, uint256[] rates)
getMaximumFee
viewfunction getMaximumFee() view returns (uint256, uint256, uint256, uint256, uint256)
getMaximumPerformanceFeeChange
viewfunction getMaximumPerformanceFeeChange() view returns (uint256 change)
getMembers
viewfunction getMembers() view returns (address[] members)
getSupportedAssets
viewfunction getSupportedAssets() view returns (tuple[])
isDepositAsset
viewfunction isDepositAsset(address asset) view returns (bool)
isMemberAllowed
viewfunction isMemberAllowed(address member) view returns (bool)
isNftMemberAllowed
viewfunction isNftMemberAllowed(address member) view returns (bool)
isSupportedAsset
viewfunction isSupportedAsset(address asset) view returns (bool)
manager
viewfunction manager() view returns (address)
managerFeeNumerator
viewfunction managerFeeNumerator() view returns (uint256)
managerName
viewfunction managerName() view returns (string)
minDepositUSD
viewfunction minDepositUSD() view returns (uint256)
nftMembershipCollectionAddress
viewfunction nftMembershipCollectionAddress() view returns (address)
numberOfMembers
viewfunction numberOfMembers() view returns (uint256 _numberOfMembers)
performanceFeeNumerator
viewfunction performanceFeeNumerator() view returns (uint256)
poolLogic
viewfunction poolLogic() view returns (address)
supportedAssets
viewfunction supportedAssets(uint256) view returns (address asset, bool isDeposit)
totalFundValue
viewfunction totalFundValue() view returns (uint256)
trader
viewfunction trader() view returns (address)
traderAssetChangeDisabled
viewfunction traderAssetChangeDisabled() view returns (bool)
validateAsset
viewfunction validateAsset(address asset) view returns (bool)
addMember
nonpayablefunction addMember(address member)
addMembers
nonpayablefunction addMembers(address[] members)
announceFeeIncrease
nonpayablefunction announceFeeIncrease(uint256 _performanceFeeNumerator, uint256 _managerFeeNumerator, uint256 _entryFeeNumerator, uint256 _exitFeeNumerator)
changeAssets
nonpayablefunction changeAssets(tuple[] _addAssets, address[] _removeAssets)
changeManager
nonpayablefunction changeManager(address newManager, string newManagerName)
commitFeeIncrease
nonpayablefunction commitFeeIncrease()
initialize
nonpayablefunction initialize(address _factory, address _manager, string _managerName, address _poolLogic, uint256 _performanceFeeNumerator, uint256 _managerFeeNumerator, tuple[] _supportedAssets)
removeMember
nonpayablefunction removeMember(address member)
removeMembers
nonpayablefunction removeMembers(address[] members)
removeTrader
nonpayablefunction removeTrader()
renounceFeeIncrease
nonpayablefunction renounceFeeIncrease()
setFeeNumerator
nonpayablefunction setFeeNumerator(uint256 _performanceFeeNumerator, uint256 _managerFeeNumerator, uint256 _entryFeeNumerator, uint256 _exitFeeNumerator)
setMinDepositUSD
nonpayablefunction setMinDepositUSD(uint256 _minDepositUSD)
setNftMembershipCollectionAddress
nonpayablefunction setNftMembershipCollectionAddress(address newNftMembershipCollectionAddress)
setPoolLogic
nonpayablefunction setPoolLogic(address _poolLogic) returns (bool)
setTrader
nonpayablefunction setTrader(address newTrader)
setTraderAssetChangeDisabled
nonpayablefunction setTraderAssetChangeDisabled(bool _disabled)
totalFundValueMutable
nonpayablefunction totalFundValueMutable() returns (uint256 total)
events
AssetAdded
event AssetAdded(address indexed fundAddress, address manager, address asset, bool isDeposit)
AssetRemoved
event AssetRemoved(address fundAddress, address manager, address asset)
ManagerFeeIncreaseAnnounced
event ManagerFeeIncreaseAnnounced(uint256 performanceFeeNumerator, uint256 managerFeeNumerator, uint256 entryFeeNumerator, uint256 exitFeeNumerator, uint256 announcedFeeActivationTime)
ManagerFeeIncreaseRenounced
event ManagerFeeIncreaseRenounced()
ManagerFeeSet
event ManagerFeeSet(address fundAddress, address manager, uint256 performanceFeeNumerator, uint256 managerFeeNumerator, uint256 entryFeeNumerator, uint256 exitFeeNumerator, uint256 denominator)
ManagerUpdated
event ManagerUpdated(address newManager, string newManagerName)
MinDepositUpdated
event MinDepositUpdated(uint256 minDepositUSD)
PoolLogicSet
event PoolLogicSet(address poolLogic, address from)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506141b8806100206000396000f3fe608060405234801561001057600080fd5b50600436106102985760003560e01c80639240d299116101635780639240d2991461044f578063977f25e91461046257806397957825146104755780639be918e61461047d5780639eab525314610490578063a1eb88d1146104a5578063a30e3fa9146104b8578063a6bc18f9146104c0578063ad60ffcc146104d3578063b74a68d7146104db578063bbbf725b146104e3578063bdbef07d146104f6578063bf0a973814610509578063bfd67ccb14610511578063c45a015514610519578063c68dbb3714610521578063ca6d56dc14610542578063cd88e55814610555578063ced72f8714610568578063d5110cfd14610570578063d8af8ed414610578578063e5406dbf1461058b578063eb7218fa146105a0578063eb9609fb146105b3578063ee5fd825146105bb578063f09d14d7146105c3578063fc43863f146105da578063fed4416a146105e257610298565b806308d7ce021461029d5780630b1ca49a146102bf5780630b422ae3146102d45780630e6f9f79146102dc57806313e12469146102f15780631758078b146102f95780631aca138b1461030e57806329c07fba1461032157806339b81fd9146103345780633c570d7d1461033c578063447d19971461034f57806346ee84b014610362578063481c6a751461037557806350b721a71461037d5780635221366314610385578063560a4a3d1461039857806360c44031146103ab5780636bfa94c6146103cb5780636c262bfe146103d35780636f452c93146103e65780636f4d469b146103ee57806370999382146104015780637b4d0c63146104145780637c8afd511461041c57806381aa5dbf1461042457806389e0a0811461042c5780638e10153d146104345780639143b91614610447575b600080fd5b6102a56105f7565b6040516102b695949392919061404d565b60405180910390f35b6102d26102cd366004613674565b610696565b005b6102d2610708565b6102e461081e565b6040516102b69190614044565b6102e4610824565b61030161082a565b6040516102b69190613b25565b6102d261031c366004613674565b610839565b6102e461032f366004613827565b61096c565b610301610a21565b6102e461034a366004613674565b610a30565b6102d261035d366004613a1a565b610a42565b6102d2610370366004613852565b610afc565b610301610ba9565b6102e4610bbe565b6102d261039336600461378c565b610bc4565b6102d26103a63660046138fe565b610d49565b6103be6103b9366004613674565b610e7c565b6040516102b69190613cd9565b6102e4610f1f565b6102d26103e13660046136ac565b6111bc565b6102e4611372565b6102d26103fc366004613852565b6113f4565b6102e461040f366004613674565b611491565b6102e461159c565b6102d26115a2565b6103be611608565b6102a5611611565b6103be610442366004613674565b611627565b6102e46117e1565b6103be61045d366004613674565b6117e7565b6102d2610470366004613a1a565b611868565b6102e4611a1e565b6103be61048b366004613674565b611a24565b610498611a41565b6040516102b69190613c36565b6102d26104b3366004613990565b611aa3565b6102e4611b0a565b6102d26104ce366004613674565b611b10565b6102e4611bd2565b6102e4611c2a565b6103be6104f1366004613674565b611c30565b6103be610504366004613674565b611c4a565b6102e4611ca1565b610301611ca7565b610301611cb6565b61053461052f3660046139ea565b611cc5565b6040516102b6929190613bd8565b6102d2610550366004613674565b611cfa565b6102e4610563366004613674565b611d6a565b6102a5611e24565b6102d2611ed5565b6102e4610586366004613674565b611f75565b610593611f84565b6040516102b69190613c83565b6102d26105ae3660046139ea565b611ffc565b6102e4612061565b6102e4612067565b6105cb61206d565b6040516102b693929190613c96565b6104986122bb565b6105ea6123be565b6040516102b69190613ce4565b6000806000806000600560009054906101000a90046001600160a01b03166001600160a01b03166308d7ce026040518163ffffffff1660e01b815260040160a06040518083038186803b15801561064d57600080fd5b505afa158015610661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106859190613a4b565b945094509450945094509091929394565b6000546201000090046001600160a01b031633146106ea576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b6106f38161244b565b6106fc57610705565b61070581612468565b50565b6000546201000090046001600160a01b0316331461075c576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b600a544210156107875760405162461bcd60e51b815260040161077e90613ece565b60405180910390fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663cc3c6df66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107d757600080fd5b505af11580156107eb573d6000803e3d6000fd5b50505050610803600954600c54601054601254612561565b60006009819055600c81905560108190556012819055600a55565b600d5481565b60125481565b6004546001600160a01b031681565b6000546201000090046001600160a01b0316331461088d576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b6001600160a01b0381166108bb57600e80546001600160a01b0319166001600160a01b038316179055610705565b6040516370a0823160e01b81526001600160a01b038216906370a08231906108e7903090600401613b25565b60206040518083038186803b1580156108ff57600080fd5b505afa92505050801561092f575060408051601f3d908101601f1916820190925261092c91810190613a02565b60015b61094b5760405162461bcd60e51b815260040161077e90613e5d565b50600e80546001600160a01b0383166001600160a01b031990911617905550565b60055460405163b3596f0760e01b815260009182916001600160a01b039091169063b3596f07906109a1908790600401613b25565b60206040518083038186803b1580156109b957600080fd5b505afa1580156109cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f19190613a02565b905060006109fe85611491565b9050610a18600a82900a610a12848761263b565b9061269d565b95945050505050565b6006546001600160a01b031681565b60086020526000908152604090205481565b6000546201000090046001600160a01b03163314610a96576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b600b548411158015610aaa5750600d548311155b8015610ab857506011548211155b8015610ac657506013548111155b610ae25760405162461bcd60e51b815260040161077e90613e2f565b610aee84848484612561565b610af6612701565b50505050565b6000546201000090046001600160a01b03163314610b50576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b60005b8151811015610ba557610b78828281518110610b6b57fe5b602002602001015161244b565b610b8157610b9d565b610b9d828281518110610b9057fe5b6020026020010151612468565b600101610b53565b5050565b6000546201000090046001600160a01b031681565b600f5481565b6000546201000090046001600160a01b03163314610c18576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b6001600160a01b038216610c65576040805162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21036b0b730b3b2b960891b604482015290519081900360640190fd5b6000805462010000600160b01b031916620100006001600160a01b038516021790558051610c9a906001906020840190613568565b507f6ed15082ad038474841528b5badca105106d4463e44b5d434130dfb299aa3669828260405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d0a578181015183820152602001610cf2565b50505050905090810190601f168015610d375780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6004546001600160a01b031633148015610d66575060145460ff16155b80610d8157506000546201000090046001600160a01b031633145b80610e225750600560009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610dd557600080fd5b505afa158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190613690565b6001600160a01b0316336001600160a01b0316145b610e3e5760405162461bcd60e51b815260040161077e90613e89565b610aee848484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061276592505050565b600e546000906001600160a01b031615801590610f175750600e546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610ec5908690600401613b25565b60206040518083038186803b158015610edd57600080fd5b505afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190613a02565b115b90505b919050565b600754600090815b818110156111b757600060078281548110610f3e57fe5b6000918252602082200154600554604051633f30232f60e21b81526001600160a01b03928316945091169063fcc08cbc90610f7d908590600401613b25565b60206040518083038186803b158015610f9557600080fd5b505afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcd9190613690565b60408051600481526024810182526020810180516001600160e01b0316633356da7160e11b1790529051919250600091829182916001600160a01b0386169161101591613b09565b6000604051808303816000865af19150503d8060008114611052576040519150601f19603f3d011682016040523d82523d6000602084013e611057565b606091505b509150915081801561107857508080602001905181019061107891906139ac565b1561110a57600654604051633f3fcd5b60e21b81526001600160a01b038681169263fcff356c926110b192909116908990600401613b39565b602060405180830381600087803b1580156110cb57600080fd5b505af11580156110df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111039190613a02565b9250611191565b60065460405163d4fac45d60e01b81526001600160a01b038681169263d4fac45d9261113e92909116908990600401613b39565b60206040518083038186803b15801561115657600080fd5b505afa15801561116a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118e9190613a02565b92505b6111a561119e868561096c565b89906128a5565b97505050505050806001019050610f27565b505090565b600054610100900460ff16806111d557506111d56128fd565b806111e3575060005460ff16155b61121e5760405162461bcd60e51b815260040180806020018281038252602e815260200180614134602e913960400191505060405180910390fd5b600054610100900460ff16158015611249576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038a1661126f5760405162461bcd60e51b815260040161077e90613f8b565b6001600160a01b0389166112955760405162461bcd60e51b815260040161077e90613f62565b6001600160a01b0386166112bb5760405162461bcd60e51b815260040161077e90613e04565b6112fb8989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061290e92505050565b600580546001600160a01b03808d166001600160a01b03199283161790925560068054928916929091169190911790556113388585600080612561565b6040805160008152602081019091526113549084908490612765565b8015611366576000805461ff00191690555b50505050505050505050565b60055460408051636bb9347360e11b815290516000926001600160a01b03169163d77268e6916004808301926020929190829003018186803b1580156113b757600080fd5b505afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613a02565b905090565b6000546201000090046001600160a01b03163314611448576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b60005b8151811015610ba557611463828281518110610b6b57fe5b1561146d57611489565b61148982828151811061147c57fe5b6020026020010151612990565b60010161144b565b600554604051633f30232f60e21b815260009182916001600160a01b039091169063fcc08cbc906114c6908690600401613b25565b60206040518083038186803b1580156114de57600080fd5b505afa1580156114f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115169190613690565b60405163067aa55560e51b81529091506001600160a01b0382169063cf54aaa090611545908690600401613b25565b60206040518083038186803b15801561155d57600080fd5b505afa158015611571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115959190613a02565b9392505050565b600a5481565b6000546201000090046001600160a01b031633146115f6576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b600480546001600160a01b0319169055565b60145460ff1681565b600954600c54601054601254600a549091929394565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561167857600080fd5b505afa15801561168c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b09190613690565b9050336001600160a01b038216146116da5760405162461bcd60e51b815260040161077e90613d6d565b306001600160a01b0316836001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561171d57600080fd5b505afa158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190613690565b6001600160a01b03161461177b5760405162461bcd60e51b815260040161077e90613dd8565b600680546001600160a01b0319166001600160a01b0385161790556040517f8c1446ebd2ac8c922b8c9716dfbdfcfef02c9fc167140d7cfd019565b423b249906117c89085903390613b39565b60405180910390a16117d8612701565b50600192915050565b60095481565b60055460405163cc435bf360e01b81526000916001600160a01b03169063cc435bf390611818908590600401613b25565b60206040518083038186803b15801561183057600080fd5b505afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1791906139ac565b6000546201000090046001600160a01b031633146118bc576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b6000806000806118ca6105f7565b50935093509350935060006118dd611372565b90508489111580156118ef5750838811155b80156118fb5750828711155b80156119075750818611155b801561191f5750600b5461191b90826128a5565b8911155b61193b5760405162461bcd60e51b815260040161077e90613fb4565b600554604080516332dbceef60e21b815290516000926001600160a01b03169163cb6f3bbc916004808301926020929190829003018186803b15801561198057600080fd5b505afa158015611994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b89190613a02565b60098b9055600c8a905560108990556012889055428101600a8190556040519192507ff1db31091564eeb7122ea77e39314eb1679f6aa3f65f5892b0424852ff2c76b891611a0e918d918d918d918d919061404d565b60405180910390a1611366612701565b60115481565b6001600160a01b0316600090815260086020526040902054151590565b60606002805480602002602001604051908101604052809291908181526020018280548015611a9957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a7b575b5050505050905090565b6000546201000090046001600160a01b03163314611af7576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b6014805460ff1916911515919091179055565b60025490565b6000546201000090046001600160a01b03163314611b64576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b6001600160a01b038116611bb0576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103a3930b232b960911b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6007546000908190815b81811015611c2257611c18611c1160078381548110611bf757fe5b6000918252602090912001546001600160a01b0316611f75565b84906128a5565b9250600101611bdc565b509091505090565b600b5481565b6000611c3b8261244b565b80610f175750610f1782610e7c565b6001600160a01b038116600090815260086020526040812054801580159061159557506007611c7a8260016129ec565b81548110611c8457fe5b600091825260209091200154600160a01b900460ff169392505050565b60105481565b600e546001600160a01b031681565b6005546001600160a01b031681565b60078181548110611cd557600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b900460ff1682565b6000546201000090046001600160a01b03163314611d4e576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b611d578161244b565b15611d6157610705565b61070581612990565b600554604051633f30232f60e21b815260009182916001600160a01b039091169063fcc08cbc90611d9f908690600401613b25565b60206040518083038186803b158015611db757600080fd5b505afa158015611dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611def9190613690565b60065460405163d4fac45d60e01b81529192506001600160a01b038084169263d4fac45d926115459216908790600401613b39565b600080600080600080600560009054906101000a90046001600160a01b03166001600160a01b03166308d7ce026040518163ffffffff1660e01b815260040160a06040518083038186803b158015611e7b57600080fd5b505afa158015611e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb39190613a4b565b600b54600d54601154601354929e919d509b5090995090975095505050505050565b6000546201000090046001600160a01b03163314611f29576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b60006009819055600c81905560108190556012819055600a8190556040517fc6f04bf43cbdf1ba5d51b4afa160bb3c7e13858b1409aa32868b239bb2f8d8499190a1611f73612701565b565b6000610f178261032f84611d6a565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015611ff357600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900460ff16151581830152825260019092019101611fa8565b50505050905090565b6000546201000090046001600160a01b03163314612050576040805162461bcd60e51b815260206004820152600c60248201526b37b7363c9036b0b730b3b2b960a11b604482015290519081900360640190fd5b61205981612a49565b610705612701565b60135481565b600c5481565b60075460609081908190806001600160401b038111801561208d57600080fd5b506040519080825280602002602001820160405280156120c757816020015b6120b46135f4565b8152602001906001900390816120ac5790505b509350806001600160401b03811180156120e057600080fd5b5060405190808252806020026020018201604052801561210a578160200160208202803683370190505b509250806001600160401b038111801561212357600080fd5b5060405190808252806020026020018201604052801561214d578160200160208202803683370190505b50915060005b818160ff1610156122b457600060078260ff168154811061217057fe5b6000918252602090912001546001600160a01b0316905061219081611d6a565b858360ff168151811061219f57fe5b60200260200101818152505060078260ff16815481106121bb57fe5b6000918252602091829020604080518082019091529101546001600160a01b038116825260ff600160a01b909104811615159282019290925287519091889190851690811061220657fe5b602090810291909101015260055460405163b3596f0760e01b81526001600160a01b039091169063b3596f0790612241908490600401613b25565b60206040518083038186803b15801561225957600080fd5b505afa15801561226d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122919190613a02565b848360ff16815181106122a057fe5b602090810291909101015250600101612153565b5050909192565b6007546060906000816001600160401b03811180156122d957600080fd5b50604051908082528060200260200182016040528015612303578160200160208202803683370190505b5090506000805b838160ff1610156123a05760078160ff168154811061232557fe5b600091825260209091200154600160a01b900460ff16156123985760078160ff168154811061235057fe5b60009182526020909120015483516001600160a01b0390911690849060ff851690811061237957fe5b6001600160a01b03909216602092830291909101909101526001909101905b60010161230a565b5060006123b08460ff84166129ec565b835103835250909250505090565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156124435780601f1061241857610100808354040283529160200191612443565b820191906000526020600020905b81548152906001019060200180831161242657829003601f168201915b505050505081565b6001600160a01b0316600090815260036020526040902054151590565b6002546001600160a01b03821660009081526003602052604081205461248f9060016129ec565b9050600060026124a08460016129ec565b815481106124aa57fe5b600091825260209091200154600280546001600160a01b0390921692508291849081106124d357fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556125078260016128a5565b6001600160a01b0380831660009081526003602052604080822093909355908616815290812055600280548061253957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b60008060008060006125716105f7565b9450945094509450945084891115801561258b5750838811155b80156125975750828711155b80156125a35750818611155b6125bf5760405162461bcd60e51b815260040161077e90613fe7565b600b899055600d889055601187905560138690556006546000546040517f4c600ceaf4d921b29696a91d97bbe90a34083dc2f447a7af0083f23a72b110e192612628926001600160a01b039182169262010000909104909116908d908d908d908d908990613b9a565b60405180910390a1505050505050505050565b60008261264a57506000612697565b8282028284828161265757fe5b04146126945760405162461bcd60e51b81526004018080602001828103825260218152602001806141626021913960400191505060405180910390fd5b90505b92915050565b60008082116126f0576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b8183816126f957fe5b049392505050565b600560009054906101000a90046001600160a01b03166001600160a01b0316633f7f5c726040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561275157600080fd5b505af1158015610af6573d6000803e3d6000fd5b60005b81518160ff16101561279b57612793828260ff168151811061278657fe5b6020026020010151612a89565b600101612768565b5060005b60ff81168311156127cf576127c784848360ff168181106127bc57fe5b905060400201612e8a565b60010161279f565b50600560009054906101000a90046001600160a01b03166001600160a01b031663aa12ae4d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561281e57600080fd5b505afa158015612832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128569190613a02565b60075411156128775760405162461bcd60e51b815260040161077e90614014565b60016128816122bb565b5110156128a05760405162461bcd60e51b815260040161077e90613f2e565b505050565b600082820183811015612694576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600061290830613562565b15905090565b6001600160a01b03821661295b576040805162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21036b0b730b3b2b960891b604482015290519081900360640190fd5b6000805462010000600160b01b031916620100006001600160a01b0385160217905580516128a0906001906020840190613568565b600280546001810182557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b039093166001600160a01b0319909316831790555460009182526003602052604090912055565b600082821115612a43576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600f8190556040517f96a008f96f1c0ab9fa3d9ddd43cdfc614848c4d054d51f43662ed900e9d094c890612a7e908390614044565b60405180910390a150565b612a9281611a24565b612aae5760405162461bcd60e51b815260040161077e90613f01565b600554604051633f30232f60e21b81526000916001600160a01b03169063fcc08cbc90612adf908590600401613b25565b60206040518083038186803b158015612af757600080fd5b505afa158015612b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2f9190613690565b90506001600160a01b03811615612bcb57612b4982611d6a565b15612b665760405162461bcd60e51b815260040161077e90613da1565b600654604051631b57eb9560e21b81526001600160a01b0383811692636d5fae5492612b9a92909116908690600401613b39565b60006040518083038186803b158015612bb257600080fd5b505afa158015612bc6573d6000803e3d6000fd5b505050505b6001600160a01b038216600090815260086020526040812054612bef9060016129ec565b600754909150815b81612c038260016128a5565b1015612dbe57600060078281548110612c1857fe5b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b900460ff1615159181019190915290506007612c5e8360016128a5565b81548110612c6857fe5b9060005260206000200160078381548110612c7f57fe5b600091825260209091208254910180546001600160a01b0319166001600160a01b0390921691909117808255915460ff600160a01b918290041615150260ff60a01b19909216919091179055612cd68260016128a5565b6008600060078581548110612ce757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902055806007612d1a8460016128a5565b81548110612d2457fe5b600091825260209182902083519101805493909201511515600160a01b0260ff60a01b196001600160a01b039092166001600160a01b03199094169390931716919091179055612d758260026128a5565b600860006007612d868660016128a5565b81548110612d9057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205550600101612bf7565b5060006008816007612dd18560016129ec565b81548110612ddb57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556007805480612e0b57fe5b600082815260208120820160001990810180546001600160a81b031916905590910190915560065490546040517f9b4f55639e5e283319baee5bc4e69a5625a8e3a1cc004af968f4fee72502202792612e7c926001600160a01b039182169262010000909104909116908890613b53565b60405180910390a150505050565b6000612e996020830183613674565b90506000612ead6040840160208501613990565b9050612eb8826117e7565b612ed45760405162461bcd60e51b815260040161077e90613d46565b600654612ee9906001600160a01b03166117e7565b1580612f725750600554604051635b16ebb760e01b81526001600160a01b0390911690635b16ebb790612f20908590600401613b25565b60206040518083038186803b158015612f3857600080fd5b505afa158015612f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7091906139ac565b155b612f8e5760405162461bcd60e51b815260040161077e90613d17565b600554604051633f30232f60e21b81526000916001600160a01b03169063fcc08cbc90612fbf908690600401613b25565b60206040518083038186803b158015612fd757600080fd5b505afa158015612feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300f9190613690565b90506001600160a01b038116156131335760408051600481526024810182526020810180516001600160e01b03166396e026bf60e01b179052905160009182916001600160a01b0385169161306391613b09565b6000604051808303816000865af19150503d80600081146130a0576040519150601f19603f3d011682016040523d82523d6000602084013e6130a5565b606091505b50915091508180156130c65750808060200190518101906130c691906139ac565b156131305760065460405163217f6c4960e21b81526001600160a01b03858116926385fdb124926130ff92909116908a90600401613bf3565b60006040518083038186803b15801561311757600080fd5b505afa15801561312b573d6000803e3d6000fd5b505050505b50505b61313c83611a24565b156131a0576001600160a01b0383166000908152600860205260408120546131659060016129ec565b9050826007828154811061317557fe5b60009182526020909120018054911515600160a01b0260ff60a01b1990921691909117905550613505565b60078054600181018255600091909152847fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68882016131de82826140bf565b506131ec90508160016128a5565b6001600160a01b0380861660009081526008602052604080822093909355600554925163032c49ed60e01b815290929091169063032c49ed90613233908890600401613b25565b60206040518083038186803b15801561324b57600080fd5b505afa15801561325f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328391906139c8565b90505b60008211801561334b575060055461ffff8216906001600160a01b031663032c49ed60076132b58660016129ec565b815481106132bf57fe5b6000918252602090912001546040516001600160e01b031960e084901b1681526132f5916001600160a01b031690600401613b25565b60206040518083038186803b15801561330d57600080fd5b505afa158015613321573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334591906139c8565b61ffff16105b156135025760006007838154811061335f57fe5b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b900460ff16151591810191909152905060076133a58460016129ec565b815481106133af57fe5b90600052602060002001600784815481106133c657fe5b600091825260209091208254910180546001600160a01b0319166001600160a01b0390921691909117808255915460ff600160a01b918290041615150260ff60a01b1990921691909117905561341d8360016128a5565b600860006007868154811061342e57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020558060076134618560016129ec565b8154811061346b57fe5b6000918252602080832084519201805494909101511515600160a01b0260ff60a01b196001600160a01b039093166001600160a01b0319909516949094179190911692909217909155839060089060076134c68460016129ec565b815481106134d057fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555060001990910190613286565b50505b6006546000546040516001600160a01b03928316927fdb9319bd5f91884f639cec9a5e01b183bedb3e6a3ab459b6e72c0b1264e7742b9261355492620100009091049091169087908790613b76565b60405180910390a250505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261359e57600085556135e4565b82601f106135b757805160ff19168380011785556135e4565b828001600101855582156135e4579182015b828111156135e45782518255916020019190600101906135c9565b506135f092915061360b565b5090565b604080518082019091526000808252602082015290565b5b808211156135f0576000815560010161360c565b8035610f1a81614110565b60008083601f84011261363c578182fd5b5081356001600160401b03811115613652578182fd5b60208301915083602060408302850101111561366d57600080fd5b9250929050565b600060208284031215613685578081fd5b813561269481614110565b6000602082840312156136a1578081fd5b815161269481614110565b600080600080600080600080600060e08a8c0312156136c9578485fd5b89356136d481614110565b985060208a01356136e481614110565b975060408a01356001600160401b03808211156136ff578687fd5b818c0191508c601f830112613712578687fd5b813581811115613720578788fd5b8d6020828501011115613731578788fd5b602083019950975061374560608d01613620565b965060808c0135955060a08c0135945060c08c0135915080821115613768578384fd5b506137758c828d0161362b565b915080935050809150509295985092959850929598565b6000806040838503121561379e578182fd5b82356137a981614110565b91506020838101356001600160401b03808211156137c5578384fd5b818601915086601f8301126137d8578384fd5b8135818111156137e457fe5b6137f6601f8201601f19168501614070565b9150808252878482850101111561380b578485fd5b8084840185840137810190920192909252919491935090915050565b60008060408385031215613839578182fd5b823561384481614110565b946020939093013593505050565b60006020808385031215613864578182fd5b82356001600160401b038082111561387a578384fd5b818501915085601f83011261388d578384fd5b81358181111561389957fe5b83810291506138a9848301614070565b8181528481019084860184860187018a10156138c3578788fd5b8795505b838610156138f157803594506138dc85614110565b848352600195909501949186019186016138c7565b5098975050505050505050565b60008060008060408587031215613913578384fd5b84356001600160401b0380821115613929578586fd5b6139358883890161362b565b9096509450602087013591508082111561394d578384fd5b818701915087601f830112613960578384fd5b81358181111561396e578485fd5b8860208083028501011115613981578485fd5b95989497505060200194505050565b6000602082840312156139a1578081fd5b813561269481614125565b6000602082840312156139bd578081fd5b815161269481614125565b6000602082840312156139d9578081fd5b815161ffff81168114612694578182fd5b6000602082840312156139fb578081fd5b5035919050565b600060208284031215613a13578081fd5b5051919050565b60008060008060808587031215613a2f578182fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a08688031215613a62578283fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b6000815180845260208085019450808401835b83811015613acf57815180516001600160a01b0316885283015115158388015260409096019590820190600101613a9d565b509495945050505050565b6000815180845260208085019450808401835b83811015613acf57815187529582019590820190600101613aed565b60008251613b1b818460208701614093565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03838116825260608201908335613c1081614110565b16602083810191909152830135613c2681614125565b8015156040840152509392505050565b6020808252825182820181905260009190848201906040850190845b81811015613c775783516001600160a01b031683529284019291840191600101613c52565b50909695505050505050565b6000602082526115956020830184613a8a565b600060608252613ca96060830186613a8a565b8281036020840152613cbb8186613ada565b90508281036040840152613ccf8185613ada565b9695505050505050565b901515815260200190565b6000602082528251806020840152613d03816040850160208701614093565b601f01601f19169190910160400192915050565b60208082526015908201527418d85b9b9bdd08185919081c1bdbdb08185cdcd95d605a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a5908185cdcd95d609a1b604082015260600190565b6020808252601a90820152791bdb9b1e481bdddb995c881859191c995cdcc8185b1b1bddd95960321b604082015260600190565b6020808252601d908201527f63616e6e6f742072656d6f7665206e6f6e2d656d707479206173736574000000604082015260600190565b602080825260129082015271696e76616c696420706f6f6c206c6f67696360701b604082015260600190565b602080825260119082015270496e76616c696420706f6f6c4c6f67696360781b604082015260600190565b6020808252601490820152730dac2dcc2cecae440cccaca40e8dede40d0d2ced60631b604082015260600190565b60208082526012908201527124b73b30b634b21031b7b63632b1ba34b7b760711b604082015260600190565b60208082526025908201527f6f6e6c79206d616e616765722c206f776e6572206f722074726164657220656e60408201526418589b195960da1b606082015260800190565b60208082526019908201527866656520696e6372656173652064656c61792061637469766560381b604082015260600190565b602080825260139082015272185cdcd95d081b9bdd081cdd5c1c1bdc9d1959606a1b604082015260600190565b6020808252601a9082015279185d081b19585cdd081bdb994819195c1bdcda5d08185cdcd95d60321b604082015260600190565b6020808252600f908201526e24b73b30b634b21036b0b730b3b2b960891b604082015260600190565b6020808252600f908201526e496e76616c696420666163746f727960881b604082015260600190565b602080825260199082015278657863656564656420616c6c6f77656420696e63726561736560381b604082015260600190565b602080825260139082015272696e76616c6964206d616e616765722066656560681b604082015260600190565b6020808252601690820152751b585e1a5b5d5b48185cdcd95d1cc81c995858da195960521b604082015260600190565b90815260200190565b948552602085019390935260408401919091526060830152608082015260a00190565b6040518181016001600160401b038111828210171561408b57fe5b604052919050565b60005b838110156140ae578181015183820152602001614096565b83811115610af65750506000910152565b81356140ca81614110565b81546001600160a01b0319166001600160a01b03919091161780825560208301356140f481614125565b60ff60a01b199190911690151560a01b60ff60a01b1617905550565b6001600160a01b038116811461070557600080fd5b801515811461070557600080fdfe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202e9e9bb0fd60e948fcc8737c1954504beb0067be272e54f32c64c464c5b713bf64736f6c63430007060033