0 txs
27.4k 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[])
getEntryFeeInfo
viewfunction getEntryFeeInfo() view returns (uint256, uint256, uint256)
getExitFeeInfo
viewfunction getExitFeeInfo() view returns (uint256, uint256, uint256)
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)
maxSupplyCap
viewfunction maxSupplyCap() view returns (uint256)
minDepositUSD
viewfunction minDepositUSD() view returns (uint256)
nftMembershipCollectionAddress
viewfunction nftMembershipCollectionAddress() view returns (address)
numberOfMembers
viewfunction numberOfMembers() view returns (uint256 numOfMembers)
performanceFeeNumerator
viewfunction performanceFeeNumerator() view returns (uint256)
poolFeeShareNumerator
viewfunction poolFeeShareNumerator() 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 total)
trader
viewfunction trader() view returns (address)
traderAssetChangeDisabled
viewfunction traderAssetChangeDisabled() view returns (bool)
traderPrivacyChangeEnabled
viewfunction traderPrivacyChangeEnabled() 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, uint256 _entryFeeNumerator, uint256 _exitFeeNumerator, 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)
setMaxSupplyCap
nonpayablefunction setMaxSupplyCap(uint256 _maxSupplyCapD18)
setMinDepositUSD
nonpayablefunction setMinDepositUSD(uint256 _minDepositUSD)
setNftMembershipCollectionAddress
nonpayablefunction setNftMembershipCollectionAddress(address _newNftMembershipCollectionAddress)
setPoolFeeShareNumerator
nonpayablefunction setPoolFeeShareNumerator(uint256 _poolFeeShareNumerator)
setPoolLogic
nonpayablefunction setPoolLogic(address _poolLogic) returns (bool)
setPoolPrivate
nonpayablefunction setPoolPrivate(bool _privatePool)
setTrader
nonpayablefunction setTrader(address _newTrader)
setTraderAssetChangeDisabled
nonpayablefunction setTraderAssetChangeDisabled(bool _disabled)
setTraderPrivacyChangeEnabled
nonpayablefunction setTraderPrivacyChangeEnabled(bool _privacyChangeEnabled)
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)
MaxSupplyCapSet
event MaxSupplyCapSet(uint256 maxSupplyCap)
MinDepositUpdated
event MinDepositUpdated(uint256 minDepositUSD)
PoolFeeShareNumeratorUpdated
event PoolFeeShareNumeratorUpdated(address fundAddress, address manager, uint256 poolFeeShareNumerator)
PoolLogicSet
event PoolLogicSet(address poolLogic, address from)
TraderAssetChangeDisabledUpdated
event TraderAssetChangeDisabledUpdated(address fundAddress, address manager, bool disabled)
TraderPrivacyChangePermissionUpdated
event TraderPrivacyChangePermissionUpdated(address fundAddress, address manager, bool granted)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50614142806100206000396000f3fe608060405234801561001057600080fd5b50600436106102f05760003560e01c8063977f25e91161018f578063977f25e9146104e857806397957825146104fb5780639be918e6146105035780639d70902f146105165780639eab52531461051e578063a1eb88d114610533578063a30e3fa914610546578063a6bc18f91461054e578063ad60ffcc14610561578063b74a68d714610569578063bbbf725b14610571578063bdbef07d14610584578063bf0a973814610597578063bfd67ccb1461059f578063c45a0155146105a7578063c626b980146105af578063c68dbb37146105c2578063ca6d56dc146105e3578063cd88e558146105f6578063cdeae9a914610609578063ced72f8714610620578063d5110cfd14610628578063d594f1fa14610630578063d8af8ed414610643578063e5406dbf14610656578063eb7218fa1461066b578063eb9609fb1461067e578063ee5fd82514610686578063f09d14d71461068e578063f5b86086146106a5578063fc43863f146106ad578063fed4416a146106b5576102f0565b806301326431146102f557806308d7ce021461030a57806308f04ad81461032c5780630b1ca49a146103415780630b422ae3146103545780630e6f9f791461035c57806313e12469146103645780631758078b1461036c5780631aca138b1461038157806329c07fba1461039457806339b81fd9146103a75780633babaad5146103af5780633c570d7d146103c2578063410be1f6146103d5578063447d1997146103e857806346ee84b0146103fb578063481c6a751461040e57806350b721a714610416578063522136631461041e578063560a4a3d1461043157806360c44031146104445780636f452c93146104645780636f4d469b1461046c578063709993821461047f5780637b4d0c63146104925780637c8afd511461049a57806381aa5dbf146104a257806389e0a081146104aa5780638affe0bc146104b25780638e10153d146104ba5780639143b916146104cd5780639240d299146104d5575b600080fd5b610308610303366004613852565b6106ca565b005b610312610740565b604051610323959493929190613fd7565b60405180910390f35b6103346107df565b6040516103239190613fb8565b61030861034f366004613541565b6107e5565b610308610808565b6103346108d2565b6103346108d8565b6103746108de565b60405161032391906139e7565b61030861038f366004613541565b6108ed565b6103346103a23660046136e9565b6109d4565b610374610a89565b6103086103bd366004613852565b610a98565b6103346103d0366004613541565b610b50565b6103086103e33660046138ac565b610b62565b6103086103f63660046138dc565b610c61565b610308610409366004613714565b610ccf565b610374610d30565b610334610d45565b61030861042c36600461364e565b610d4b565b61030861043f3660046137c0565b610e84565b610457610452366004613541565b610fb7565b6040516103239190613bbf565b61033461105a565b61030861047a366004613714565b6110dc565b61033461048d366004613541565b61112d565b610334611238565b61030861123e565b610457611258565b610312611261565b610457611277565b6104576104c8366004613541565b611280565b610334611433565b6104576104e3366004613541565b611439565b6103086104f63660046138dc565b6114ba565b610334611630565b610457610511366004613541565b611636565b610334611653565b610526611659565b6040516103239190613b1c565b610308610541366004613852565b6116bb565b61033461171e565b61030861055c366004613541565b611724565b61033461179a565b6103346117ed565b61045761057f366004613541565b6117f3565b610457610592366004613541565b61180d565b610334611864565b61037461186a565b610374611879565b6103086105bd3660046138ac565b611888565b6105d56105d03660046138ac565b611973565b604051610323929190613abe565b6103086105f1366004613541565b6119a8565b610334610604366004613541565b6119cc565b610611611a86565b60405161032393929190613fc1565b610312611b22565b610308611bbc565b61030861063e366004613579565b611c10565b610334610651366004613541565b611dc7565b61065e611dd6565b6040516103239190613b69565b6103086106793660046138ac565b611e4e565b610334611e8b565b610334611e91565b610696611e97565b60405161032393929190613b7c565b6106116120e5565b61052661213e565b6106bd612241565b6040516103239190613bca565b6106d26122ce565b6016805460ff19168215151790556006546000546040517fb41bc0c4a5bec0f46f141701a032c05d0933c214cca3c5bfbdd8d42003a7d67f9261072d926001600160a01b039182169262010000909104909116908590613a38565b60405180910390a161073d612319565b50565b6000806000806000600560009054906101000a90046001600160a01b03166001600160a01b03166308d7ce026040518163ffffffff1660e01b815260040160a06040518083038186803b15801561079657600080fd5b505afa1580156107aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ce919061390d565b945094509450945094509091929394565b60155481565b6107ed6122ce565b6107f68161237d565b6107ff5761073d565b61073d8161239a565b6108106122ce565b600a5442101561083b5760405162461bcd60e51b815260040161083290613ddf565b60405180910390fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663cc3c6df66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561088b57600080fd5b505af115801561089f573d6000803e3d6000fd5b505050506108b7600954600c54601054601254612493565b60006009819055600c81905560108190556012819055600a55565b600d5481565b60125481565b6004546001600160a01b031681565b6108f56122ce565b6001600160a01b03811661092357600e80546001600160a01b0319166001600160a01b03831617905561073d565b6040516370a0823160e01b81526001600160a01b038216906370a082319061094f9030906004016139e7565b60206040518083038186803b15801561096757600080fd5b505afa925050508015610997575060408051601f3d908101601f19168201909252610994918101906138c4565b60015b6109b35760405162461bcd60e51b815260040161083290613d6e565b50600e80546001600160a01b0383166001600160a01b031990911617905550565b60055460405163b3596f0760e01b815260009182916001600160a01b039091169063b3596f0790610a099087906004016139e7565b60206040518083038186803b158015610a2157600080fd5b505afa158015610a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5991906138c4565b90506000610a668561112d565b9050610a80600a82900a610a7a848761256d565b906125cf565b95945050505050565b6006546001600160a01b031681565b6004546001600160a01b031633148015610ab4575060165460ff165b80610acf57506000546201000090046001600160a01b031633145b610aeb5760405162461bcd60e51b815260040161083290613f24565b600654604051633babaad560e01b81526001600160a01b0390911690633babaad590610b1b908490600401613bbf565b600060405180830381600087803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b5050505050565b60086020526000908152604090205481565b610b6a6122ce565b600560009054906101000a90046001600160a01b03166001600160a01b031663180b0d7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bb857600080fd5b505afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf091906138c4565b811115610c0f5760405162461bcd60e51b815260040161083290613bfd565b60158190556006546000546040517f751194214b7699e1d6e20a20e9d064764c53dbc9636fd95735a9890efc62aaf79261072d926001600160a01b039182169262010000909104909116908590613a5c565b610c696122ce565b600b548411158015610c7d5750600d548311155b8015610c8b57506011548211155b8015610c9957506013548111155b610cb55760405162461bcd60e51b815260040161083290613d40565b610cc184848484612493565b610cc9612319565b50505050565b610cd76122ce565b60005b8151811015610d2c57610cff828281518110610cf257fe5b602002602001015161237d565b610d0857610d24565b610d24828281518110610d1757fe5b602002602001015161239a565b600101610cda565b5050565b6000546201000090046001600160a01b031681565b600f5481565b610d536122ce565b6001600160a01b038216610da0576040805162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21036b0b730b3b2b960891b604482015290519081900360640190fd5b6000805462010000600160b01b031916620100006001600160a01b038516021790558051610dd59060019060208401906133f6565b507f6ed15082ad038474841528b5badca105106d4463e44b5d434130dfb299aa3669828260405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610e45578181015183820152602001610e2d565b50505050905090810190601f168015610e725780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b6004546001600160a01b031633148015610ea1575060145460ff16155b80610ebc57506000546201000090046001600160a01b031633145b80610f5d5750600560009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1057600080fd5b505afa158015610f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f48919061355d565b6001600160a01b0316336001600160a01b0316145b610f795760405162461bcd60e51b815260040161083290613d9a565b610cc1848484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061263392505050565b600e546000906001600160a01b0316158015906110525750600e546040516370a0823160e01b81526000916001600160a01b0316906370a08231906110009086906004016139e7565b60206040518083038186803b15801561101857600080fd5b505afa15801561102c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105091906138c4565b115b90505b919050565b60055460408051636bb9347360e11b815290516000926001600160a01b03169163d77268e6916004808301926020929190829003018186803b15801561109f57600080fd5b505afa1580156110b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d791906138c4565b905090565b6110e46122ce565b60005b8151811015610d2c576110ff828281518110610cf257fe5b1561110957611125565b61112582828151811061111857fe5b6020026020010151612773565b6001016110e7565b600554604051633f30232f60e21b815260009182916001600160a01b039091169063fcc08cbc906111629086906004016139e7565b60206040518083038186803b15801561117a57600080fd5b505afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b2919061355d565b60405163067aa55560e51b81529091506001600160a01b0382169063cf54aaa0906111e19086906004016139e7565b60206040518083038186803b1580156111f957600080fd5b505afa15801561120d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123191906138c4565b9392505050565b600a5481565b6112466122ce565b600480546001600160a01b0319169055565b60145460ff1681565b600954600c54601054601254600a549091929394565b60165460ff1681565b60055460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156112c557600080fd5b505afa1580156112d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fd919061355d565b6001600160a01b0316336001600160a01b03161461132d5760405162461bcd60e51b815260040161083290613c7e565b306001600160a01b0316826001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561137057600080fd5b505afa158015611384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a8919061355d565b6001600160a01b0316146113ce5760405162461bcd60e51b815260040161083290613ce9565b600680546001600160a01b0319166001600160a01b0384161790556040517f8c1446ebd2ac8c922b8c9716dfbdfcfef02c9fc167140d7cfd019565b423b2499061141b90849033906139fb565b60405180910390a161142b612319565b506001919050565b60095481565b60055460405163cc435bf360e01b81526000916001600160a01b03169063cc435bf39061146a9085906004016139e7565b60206040518083038186803b15801561148257600080fd5b505afa158015611496573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611052919061386e565b6114c26122ce565b6000806000806114d0610740565b50935093509350935060006114e361105a565b90508489111580156114f55750838811155b80156115015750828711155b801561150d5750818611155b80156115255750600b5461152190826127cf565b8911155b6115415760405162461bcd60e51b815260040161083290613ef1565b600554604080516332dbceef60e21b815290516000926001600160a01b03169163cb6f3bbc916004808301926020929190829003018186803b15801561158657600080fd5b505afa15801561159a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be91906138c4565b60098b9055600c8a905560108990556012889055428101600a8190556040519192507ff1db31091564eeb7122ea77e39314eb1679f6aa3f65f5892b0424852ff2c76b891611614918d918d918d918d9190613fd7565b60405180910390a1611624612319565b50505050505050505050565b60115481565b6001600160a01b0316600090815260086020526040902054151590565b60175481565b606060028054806020026020016040519081016040528092919081815260200182805480156116b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611693575b5050505050905090565b6116c36122ce565b6014805460ff19168215151790556006546000546040517f0c24a940cd7266b29315101e1310ee0105eb7dbc5e950ca2c7be2144ede8849e9261072d926001600160a01b039182169262010000909104909116908590613a38565b60025490565b61172c6122ce565b6001600160a01b038116611778576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103a3930b232b960911b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600754600090815b818110156117e8576117de6117d7600783815481106117bd57fe5b6000918252602090912001546001600160a01b0316611dc7565b84906127cf565b92506001016117a2565b505090565b600b5481565b60006117fe8261237d565b80611052575061105282610fb7565b6001600160a01b03811660009081526008602052604081205480158015906112315750600761183d826001612827565b8154811061184757fe5b600091825260209091200154600160a01b900460ff169392505050565b60105481565b600e546001600160a01b031681565b6005546001600160a01b031681565b6118906122ce565b8015806119225750600660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e657600080fd5b505afa1580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191e91906138c4565b8110155b61193e5760405162461bcd60e51b815260040161083290613e12565b60178190556040517f930660bff8790438d268548a59d949d0959f702b19236a2ccf427c623cce3d5c9061072d908390613fb8565b6007818154811061198357600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b900460ff1682565b6119b06122ce565b6119b98161237d565b156119c35761073d565b61073d81612773565b600554604051633f30232f60e21b815260009182916001600160a01b039091169063fcc08cbc90611a019086906004016139e7565b60206040518083038186803b158015611a1957600080fd5b505afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a51919061355d565b60065460405163d4fac45d60e01b81529192506001600160a01b038084169263d4fac45d926111e192169087906004016139fb565b6000806000601154601554600560009054906101000a90046001600160a01b03166001600160a01b031663180b0d7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015611adf57600080fd5b505afa158015611af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1791906138c4565b925092509250909192565b6000806000806000600b54600d54601154601354600560009054906101000a90046001600160a01b03166001600160a01b031663180b0d7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8457600080fd5b505afa158015611b98573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ce91906138c4565b611bc46122ce565b60006009819055600c81905560108190556012819055600a8190556040517fc6f04bf43cbdf1ba5d51b4afa160bb3c7e13858b1409aa32868b239bb2f8d8499190a1611c0e612319565b565b600054610100900460ff1680611c295750611c29612884565b80611c37575060005460ff16155b611c725760405162461bcd60e51b815260040180806020018281038252602e8152602001806140be602e913960400191505060405180910390fd5b600054610100900460ff16158015611c9d576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038c16611cc35760405162461bcd60e51b815260040161083290613ec8565b6001600160a01b038b16611ce95760405162461bcd60e51b815260040161083290613e9f565b6001600160a01b038816611d0f5760405162461bcd60e51b815260040161083290613d15565b611d4f8b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061289592505050565b600580546001600160a01b03808f166001600160a01b03199283161790925560068054928b1692909116919091179055611d8b87878787612493565b604080516000815260208101909152611da79084908490612633565b8015611db9576000805461ff00191690555b505050505050505050505050565b6000611052826103a2846119cc565b60606007805480602002602001604051908101604052809291908181526020016000905b82821015611e4557600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900460ff16151581830152825260019092019101611dfa565b50505050905090565b611e566122ce565b600f8190556040517f96a008f96f1c0ab9fa3d9ddd43cdfc614848c4d054d51f43662ed900e9d094c89061072d908390613fb8565b60135481565b600c5481565b60075460609081908190806001600160401b0381118015611eb757600080fd5b50604051908082528060200260200182016040528015611ef157816020015b611ede613482565b815260200190600190039081611ed65790505b509350806001600160401b0381118015611f0a57600080fd5b50604051908082528060200260200182016040528015611f34578160200160208202803683370190505b509250806001600160401b0381118015611f4d57600080fd5b50604051908082528060200260200182016040528015611f77578160200160208202803683370190505b50915060005b818160ff1610156120de57600060078260ff1681548110611f9a57fe5b6000918252602090912001546001600160a01b03169050611fba816119cc565b858360ff1681518110611fc957fe5b60200260200101818152505060078260ff1681548110611fe557fe5b6000918252602091829020604080518082019091529101546001600160a01b038116825260ff600160a01b909104811615159282019290925287519091889190851690811061203057fe5b602090810291909101015260055460405163b3596f0760e01b81526001600160a01b039091169063b3596f079061206b9084906004016139e7565b60206040518083038186803b15801561208357600080fd5b505afa158015612097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bb91906138c4565b848360ff16815181106120ca57fe5b602090810291909101015250600101611f7d565b5050909192565b6000806000601354601554600560009054906101000a90046001600160a01b03166001600160a01b031663180b0d7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015611adf57600080fd5b6007546060906000816001600160401b038111801561215c57600080fd5b50604051908082528060200260200182016040528015612186578160200160208202803683370190505b5090506000805b838160ff1610156122235760078160ff16815481106121a857fe5b600091825260209091200154600160a01b900460ff161561221b5760078160ff16815481106121d357fe5b60009182526020909120015483516001600160a01b0390911690849060ff85169081106121fc57fe5b6001600160a01b03909216602092830291909101909101526001909101905b60010161218d565b5060006122338460ff8416612827565b835103835250909250505090565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156122c65780601f1061229b576101008083540402835291602001916122c6565b820191906000526020600020905b8154815290600101906020018083116122a957829003601f168201915b505050505081565b6000546201000090046001600160a01b03163314611c0e576040805162461bcd60e51b8152602060048201526003602482015262191a0d60ea1b604482015290519081900360640190fd5b600560009054906101000a90046001600160a01b03166001600160a01b0316633f7f5c726040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561236957600080fd5b505af1158015610cc9573d6000803e3d6000fd5b6001600160a01b0316600090815260036020526040902054151590565b6002546001600160a01b0382166000908152600360205260408120546123c1906001612827565b9050600060026123d2846001612827565b815481106123dc57fe5b600091825260209091200154600280546001600160a01b03909216925082918490811061240557fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556124398260016127cf565b6001600160a01b0380831660009081526003602052604080822093909355908616815290812055600280548061246b57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b60008060008060006124a3610740565b945094509450945094508489111580156124bd5750838811155b80156124c95750828711155b80156124d55750818611155b6124f15760405162461bcd60e51b815260040161083290613f5b565b600b899055600d889055601187905560138690556006546000546040517f4c600ceaf4d921b29696a91d97bbe90a34083dc2f447a7af0083f23a72b110e19261255a926001600160a01b039182169262010000909104909116908d908d908d908d908990613a80565b60405180910390a1505050505050505050565b60008261257c575060006125c9565b8282028284828161258957fe5b04146125c65760405162461bcd60e51b81526004018080602001828103825260218152602001806140ec6021913960400191505060405180910390fd5b90505b92915050565b6000808211612622576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b81838161262b57fe5b049392505050565b60005b81518160ff16101561266957612661828260ff168151811061265457fe5b6020026020010151612917565b600101612636565b5060005b60ff811683111561269d5761269584848360ff1681811061268a57fe5b905060400201612d18565b60010161266d565b50600560009054906101000a90046001600160a01b03166001600160a01b031663aa12ae4d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126ec57600080fd5b505afa158015612700573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272491906138c4565b60075411156127455760405162461bcd60e51b815260040161083290613f88565b600161274f61213e565b51101561276e5760405162461bcd60e51b815260040161083290613e6b565b505050565b600280546001810182557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b039093166001600160a01b0319909316831790555460009182526003602052604090912055565b6000828201838110156125c6576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008282111561287e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600061288f306133f0565b15905090565b6001600160a01b0382166128e2576040805162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21036b0b730b3b2b960891b604482015290519081900360640190fd5b6000805462010000600160b01b031916620100006001600160a01b03851602179055805161276e9060019060208401906133f6565b61292081611636565b61293c5760405162461bcd60e51b815260040161083290613e3e565b600554604051633f30232f60e21b81526000916001600160a01b03169063fcc08cbc9061296d9085906004016139e7565b60206040518083038186803b15801561298557600080fd5b505afa158015612999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129bd919061355d565b90506001600160a01b03811615612a59576129d7826119cc565b156129f45760405162461bcd60e51b815260040161083290613cb2565b600654604051631b57eb9560e21b81526001600160a01b0383811692636d5fae5492612a28929091169086906004016139fb565b60006040518083038186803b158015612a4057600080fd5b505afa158015612a54573d6000803e3d6000fd5b505050505b6001600160a01b038216600090815260086020526040812054612a7d906001612827565b600754909150815b81612a918260016127cf565b1015612c4c57600060078281548110612aa657fe5b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b900460ff1615159181019190915290506007612aec8360016127cf565b81548110612af657fe5b9060005260206000200160078381548110612b0d57fe5b600091825260209091208254910180546001600160a01b0319166001600160a01b0390921691909117808255915460ff600160a01b918290041615150260ff60a01b19909216919091179055612b648260016127cf565b6008600060078581548110612b7557fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902055806007612ba88460016127cf565b81548110612bb257fe5b600091825260209182902083519101805493909201511515600160a01b0260ff60a01b196001600160a01b039092166001600160a01b03199094169390931716919091179055612c038260026127cf565b600860006007612c148660016127cf565b81548110612c1e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205550600101612a85565b5060006008816007612c5f856001612827565b81548110612c6957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556007805480612c9957fe5b600082815260208120820160001990810180546001600160a81b031916905590910190915560065490546040517f9b4f55639e5e283319baee5bc4e69a5625a8e3a1cc004af968f4fee72502202792612d0a926001600160a01b039182169262010000909104909116908890613a15565b60405180910390a150505050565b6000612d276020830183613541565b90506000612d3b6040840160208501613852565b9050612d4682611439565b612d625760405162461bcd60e51b815260040161083290613c57565b600654612d77906001600160a01b0316611439565b1580612e005750600554604051635b16ebb760e01b81526001600160a01b0390911690635b16ebb790612dae9085906004016139e7565b60206040518083038186803b158015612dc657600080fd5b505afa158015612dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dfe919061386e565b155b612e1c5760405162461bcd60e51b815260040161083290613c28565b600554604051633f30232f60e21b81526000916001600160a01b03169063fcc08cbc90612e4d9086906004016139e7565b60206040518083038186803b158015612e6557600080fd5b505afa158015612e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9d919061355d565b90506001600160a01b03811615612fc15760408051600481526024810182526020810180516001600160e01b03166396e026bf60e01b179052905160009182916001600160a01b03851691612ef1916139cb565b6000604051808303816000865af19150503d8060008114612f2e576040519150601f19603f3d011682016040523d82523d6000602084013e612f33565b606091505b5091509150818015612f54575080806020019051810190612f54919061386e565b15612fbe5760065460405163217f6c4960e21b81526001600160a01b03858116926385fdb12492612f8d92909116908a90600401613ad9565b60006040518083038186803b158015612fa557600080fd5b505afa158015612fb9573d6000803e3d6000fd5b505050505b50505b612fca83611636565b1561302e576001600160a01b038316600090815260086020526040812054612ff3906001612827565b9050826007828154811061300357fe5b60009182526020909120018054911515600160a01b0260ff60a01b1990921691909117905550613393565b60078054600181018255600091909152847fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688820161306c8282614049565b5061307a90508160016127cf565b6001600160a01b0380861660009081526008602052604080822093909355600554925163032c49ed60e01b815290929091169063032c49ed906130c19088906004016139e7565b60206040518083038186803b1580156130d957600080fd5b505afa1580156130ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613111919061388a565b90505b6000821180156131d9575060055461ffff8216906001600160a01b031663032c49ed6007613143866001612827565b8154811061314d57fe5b6000918252602090912001546040516001600160e01b031960e084901b168152613183916001600160a01b0316906004016139e7565b60206040518083038186803b15801561319b57600080fd5b505afa1580156131af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d3919061388a565b61ffff16105b15613390576000600783815481106131ed57fe5b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b900460ff1615159181019190915290506007613233846001612827565b8154811061323d57fe5b906000526020600020016007848154811061325457fe5b600091825260209091208254910180546001600160a01b0319166001600160a01b0390921691909117808255915460ff600160a01b918290041615150260ff60a01b199092169190911790556132ab8360016127cf565b60086000600786815481106132bc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020558060076132ef856001612827565b815481106132f957fe5b6000918252602080832084519201805494909101511515600160a01b0260ff60a01b196001600160a01b039093166001600160a01b031990951694909417919091169290921790915583906008906007613354846001612827565b8154811061335e57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555060001990910190613114565b50505b6006546000546040516001600160a01b03928316927fdb9319bd5f91884f639cec9a5e01b183bedb3e6a3ab459b6e72c0b1264e7742b926133e292620100009091049091169087908790613a38565b60405180910390a250505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261342c5760008555613472565b82601f1061344557805160ff1916838001178555613472565b82800160010185558215613472579182015b82811115613472578251825591602001919060010190613457565b5061347e929150613499565b5090565b604080518082019091526000808252602082015290565b5b8082111561347e576000815560010161349a565b80356110558161409a565b60008083601f8401126134ca578182fd5b5081356001600160401b038111156134e0578182fd5b6020830191508360206040830285010111156134fb57600080fd5b9250929050565b60008083601f840112613513578182fd5b5081356001600160401b03811115613529578182fd5b6020830191508360208285010111156134fb57600080fd5b600060208284031215613552578081fd5b81356125c68161409a565b60006020828403121561356e578081fd5b81516125c68161409a565b60008060008060008060008060008060006101208c8e03121561359a578687fd5b6135a48c3561409a565b8b359a506135b560208d013561409a565b60208c013599506001600160401b038060408e013511156135d4578788fd5b6135e48e60408f01358f01613502565b909a5098506135f560608e016134ae565b975060808d0135965060a08d0135955060c08d0135945060e08d01359350806101008e01351115613624578283fd5b506136368d6101008e01358e016134b9565b81935080925050509295989b509295989b9093969950565b60008060408385031215613660578182fd5b823561366b8161409a565b91506020838101356001600160401b0380821115613687578384fd5b818601915086601f83011261369a578384fd5b8135818111156136a657fe5b6136b8601f8201601f19168501613ffa565b915080825287848285010111156136cd578485fd5b8084840185840137810190920192909252919491935090915050565b600080604083850312156136fb578182fd5b82356137068161409a565b946020939093013593505050565b60006020808385031215613726578182fd5b82356001600160401b038082111561373c578384fd5b818501915085601f83011261374f578384fd5b81358181111561375b57fe5b838102915061376b848301613ffa565b8181528481019084860184860187018a1015613785578788fd5b8795505b838610156137b3578035945061379e8561409a565b84835260019590950194918601918601613789565b5098975050505050505050565b600080600080604085870312156137d5578384fd5b84356001600160401b03808211156137eb578586fd5b6137f7888389016134b9565b9096509450602087013591508082111561380f578384fd5b818701915087601f830112613822578384fd5b813581811115613830578485fd5b8860208083028501011115613843578485fd5b95989497505060200194505050565b600060208284031215613863578081fd5b81356125c6816140af565b60006020828403121561387f578081fd5b81516125c6816140af565b60006020828403121561389b578081fd5b815161ffff811681146125c6578182fd5b6000602082840312156138bd578081fd5b5035919050565b6000602082840312156138d5578081fd5b5051919050565b600080600080608085870312156138f1578182fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a08688031215613924578283fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b6000815180845260208085019450808401835b8381101561399157815180516001600160a01b031688528301511515838801526040909601959082019060010161395f565b509495945050505050565b6000815180845260208085019450808401835b83811015613991578151875295820195908201906001016139af565b600082516139dd81846020870161401d565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03838116825260608201908335613af68161409a565b16602083810191909152830135613b0c816140af565b8015156040840152509392505050565b6020808252825182820181905260009190848201906040850190845b81811015613b5d5783516001600160a01b031683529284019291840191600101613b38565b50909695505050505050565b600060208252611231602083018461394c565b600060608252613b8f606083018661394c565b8281036020840152613ba1818661399c565b90508281036040840152613bb5818561399c565b9695505050505050565b901515815260200190565b6000602082528251806020840152613be981604085016020870161401d565b601f01601f19169190910160400192915050565b60208082526011908201527034b73b30b634b210373ab6b2b930ba37b960791b604082015260600190565b60208082526015908201527418d85b9b9bdd08185919081c1bdbdb08185cdcd95d605a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a5908185cdcd95d609a1b604082015260600190565b6020808252601a90820152791bdb9b1e481bdddb995c881859191c995cdcc8185b1b1bddd95960321b604082015260600190565b6020808252601d908201527f63616e6e6f742072656d6f7665206e6f6e2d656d707479206173736574000000604082015260600190565b602080825260129082015271696e76616c696420706f6f6c206c6f67696360701b604082015260600190565b602080825260119082015270496e76616c696420706f6f6c4c6f67696360781b604082015260600190565b6020808252601490820152730dac2dcc2cecae440cccaca40e8dede40d0d2ced60631b604082015260600190565b60208082526012908201527124b73b30b634b21031b7b63632b1ba34b7b760711b604082015260600190565b60208082526025908201527f6f6e6c79206d616e616765722c206f776e6572206f722074726164657220656e60408201526418589b195960da1b606082015260800190565b60208082526019908201527866656520696e6372656173652064656c61792061637469766560381b604082015260600190565b6020808252601290820152710696e76616c696420737570706c79206361760741b604082015260600190565b602080825260139082015272185cdcd95d081b9bdd081cdd5c1c1bdc9d1959606a1b604082015260600190565b6020808252601a9082015279185d081b19585cdd081bdb994819195c1bdcda5d08185cdcd95d60321b604082015260600190565b6020808252600f908201526e24b73b30b634b21036b0b730b3b2b960891b604082015260600190565b6020808252600f908201526e496e76616c696420666163746f727960881b604082015260600190565b602080825260199082015278657863656564656420616c6c6f77656420696e63726561736560381b604082015260600190565b6020808252601e908201527f6f6e6c79206d616e61676572206f722074726164657220656e61626c65640000604082015260600190565b602080825260139082015272696e76616c6964206d616e616765722066656560681b604082015260600190565b6020808252601690820152751b585e1a5b5d5b48185cdcd95d1cc81c995858da195960521b604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b6040518181016001600160401b038111828210171561401557fe5b604052919050565b60005b83811015614038578181015183820152602001614020565b83811115610cc95750506000910152565b81356140548161409a565b81546001600160a01b0319166001600160a01b039190911617808255602083013561407e816140af565b60ff60a01b199190911690151560a01b60ff60a01b1617905550565b6001600160a01b038116811461073d57600080fd5b801515811461073d57600080fdfe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200b2304958f6498758b04170c4b4d75735c1346425a54a7e843bb25dde26cc12164736f6c63430007060033