Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 11962092 | 1351 days ago | IN | 0 ETH | 0.15925377 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15351594 | 819 days ago | 0.00097502 ETH | ||||
15351594 | 819 days ago | 0.00097502 ETH | ||||
15351400 | 819 days ago | 0.00001185 ETH | ||||
15351400 | 819 days ago | 0.00974699 ETH | ||||
15351400 | 819 days ago | 0.00975885 ETH | ||||
15072831 | 863 days ago | 0.56104125 ETH | ||||
15072831 | 863 days ago | 0.56104125 ETH | ||||
15072831 | 863 days ago | 0.56998451 ETH | ||||
15072831 | 863 days ago | 0.56998451 ETH | ||||
13929235 | 1045 days ago | 0.29637808 ETH | ||||
13929235 | 1045 days ago | 0.29637808 ETH | ||||
13929235 | 1045 days ago | 0.29645727 ETH | ||||
13929235 | 1045 days ago | 0.29645727 ETH | ||||
13281622 | 1146 days ago | 0.35 ETH | ||||
13281622 | 1146 days ago | 0.34832617 ETH | ||||
13281622 | 1146 days ago | 0.69832617 ETH | ||||
13133878 | 1169 days ago | 1.46060467 ETH | ||||
13133878 | 1169 days ago | 1.46060467 ETH | ||||
13133878 | 1169 days ago | 1.46315988 ETH | ||||
13133878 | 1169 days ago | 1.46315988 ETH | ||||
13133867 | 1169 days ago | 1.4601432 ETH | ||||
13133867 | 1169 days ago | 1.4601432 ETH | ||||
13133867 | 1169 days ago | 1.46315988 ETH | ||||
13133867 | 1169 days ago | 1.46315988 ETH | ||||
13133853 | 1169 days ago | 0.49763587 ETH |
Loading...
Loading
Contract Name:
Presto
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-03 */ // File: contracts\presto\PrestoData.sol //SPDX-License-Identifier: MIT pragma solidity ^0.7.6; struct PrestoOperation { address inputTokenAddress; uint256 inputTokenAmount; address ammPlugin; address[] liquidityPoolAddresses; address[] swapPath; bool enterInETH; bool exitInETH; address[] receivers; uint256[] receiversPercentages; } // File: contracts\presto\IPresto.sol //SPDX_License_Identifier: MIT pragma solidity ^0.7.6; pragma abicoder v2; interface IPresto { function ONE_HUNDRED() external view returns (uint256); function doubleProxy() external view returns (address); function feePercentage() external view returns (uint256); function feePercentageInfo() external view returns (uint256, address); function setDoubleProxy(address _doubleProxy) external; function setFeePercentage(uint256 _feePercentage) external; function execute(PrestoOperation[] memory operations) external payable; } // File: contracts\presto\util\IERC20.sol //SPDX_License_Identifier: MIT pragma solidity ^0.7.6; interface IERC20 { function totalSupply() external view returns(uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function decimals() external view returns (uint8); } // File: contracts\presto\util\DFOHub.sol // SPDX_License_Identifier: MIT pragma solidity ^0.7.6; interface IDoubleProxy { function proxy() external view returns (address); } interface IMVDProxy { function getMVDFunctionalitiesManagerAddress() external view returns(address); function getMVDWalletAddress() external view returns (address); function getStateHolderAddress() external view returns(address); function submit(string calldata codeName, bytes calldata data) external payable returns(bytes memory returnData); } interface IMVDFunctionalitiesManager { function isAuthorizedFunctionality(address functionality) external view returns(bool); } interface IStateHolder { function getUint256(string calldata name) external view returns(uint256); function getAddress(string calldata name) external view returns(address); function clear(string calldata varName) external returns(string memory oldDataType, bytes memory oldVal); } // File: contracts\amm-aggregator\common\AMMData.sol //SPDX_License_Identifier: MIT pragma solidity ^0.7.6; struct LiquidityPoolData { address liquidityPoolAddress; uint256 amount; address tokenAddress; bool amountIsLiquidityPool; bool involvingETH; address receiver; } struct SwapData { bool enterInETH; bool exitInETH; address[] liquidityPoolAddresses; address[] path; address inputToken; uint256 amount; address receiver; } // File: contracts\amm-aggregator\common\IAMM.sol //SPDX_License_Identifier: MIT pragma solidity ^0.7.6; //pragma abicoder v2; interface IAMM { event NewLiquidityPoolAddress(address indexed); function info() external view returns(string memory name, uint256 version); function data() external view returns(address ethereumAddress, uint256 maxTokensPerLiquidityPool, bool hasUniqueLiquidityPools); function balanceOf(address liquidityPoolAddress, address owner) external view returns(uint256, uint256[] memory, address[] memory); function byLiquidityPool(address liquidityPoolAddress) external view returns(uint256, uint256[] memory, address[] memory); function byTokens(address[] calldata liquidityPoolTokens) external view returns(uint256, uint256[] memory, address, address[] memory); function byPercentage(address liquidityPoolAddress, uint256 numerator, uint256 denominator) external view returns (uint256, uint256[] memory, address[] memory); function byLiquidityPoolAmount(address liquidityPoolAddress, uint256 liquidityPoolAmount) external view returns(uint256[] memory, address[] memory); function byTokenAmount(address liquidityPoolAddress, address tokenAddress, uint256 tokenAmount) external view returns(uint256, uint256[] memory, address[] memory); function createLiquidityPoolAndAddLiquidity(address[] calldata tokenAddresses, uint256[] calldata amounts, bool involvingETH, address receiver) external payable returns(uint256, uint256[] memory, address, address[] memory); function addLiquidity(LiquidityPoolData calldata data) external payable returns(uint256, uint256[] memory, address[] memory); function addLiquidityBatch(LiquidityPoolData[] calldata data) external payable returns(uint256[] memory, uint256[][] memory, address[][] memory); function removeLiquidity(LiquidityPoolData calldata data) external returns(uint256, uint256[] memory, address[] memory); function removeLiquidityBatch(LiquidityPoolData[] calldata data) external returns(uint256[] memory, uint256[][] memory, address[][] memory); function getSwapOutput(address tokenAddress, uint256 tokenAmount, address[] calldata, address[] calldata path) view external returns(uint256[] memory); function swapLiquidity(SwapData calldata data) external payable returns(uint256); function swapLiquidityBatch(SwapData[] calldata data) external payable returns(uint256[] memory); } // File: contracts\presto\Presto.sol //SPDX_License_Identifier: MIT pragma solidity ^0.7.6; //pragma abicoder v2; contract Presto is IPresto { uint256 public override constant ONE_HUNDRED = 1e18; mapping(address => uint256) private _tokenIndex; address[] private _tokensToTransfer; uint256[] private _tokenAmounts; address public override doubleProxy; uint256 public override feePercentage; constructor(address _doubleProxy, uint256 _feePercentage) { doubleProxy = _doubleProxy; feePercentage = _feePercentage; } receive() external payable { } modifier onlyDFO() { require(IMVDFunctionalitiesManager(IMVDProxy(IDoubleProxy(doubleProxy).proxy()).getMVDFunctionalitiesManagerAddress()).isAuthorizedFunctionality(msg.sender), "Unauthorized."); _; } function feePercentageInfo() public override view returns (uint256, address) { return (feePercentage, IMVDProxy(IDoubleProxy(doubleProxy).proxy()).getMVDWalletAddress()); } function setDoubleProxy(address _doubleProxy) public override onlyDFO { doubleProxy = _doubleProxy; } function setFeePercentage(uint256 _feePercentage) public override onlyDFO { feePercentage = _feePercentage; } function execute(PrestoOperation[] memory operations) public override payable { _transferToMe(operations); for(uint256 i = 0 ; i < operations.length; i++) { PrestoOperation memory operation = operations[i]; if(operation.ammPlugin == address(0)) { _transferTo(operation.inputTokenAddress, operation.inputTokenAmount, operation.receivers, operation.receiversPercentages); } else if(operation.liquidityPoolAddresses.length == 0) { _addLiquidity(operation); } else { _swap(operation); } } _flushAndClear(); } function _transferToMe(PrestoOperation[] memory operations) private { _collectTokens(operations); for(uint256 i = 0; i < _tokensToTransfer.length; i++) { if(_tokensToTransfer[i] == address(0)) { require(msg.value == _tokenAmounts[i], "Incorrect ETH value"); } else { _safeTransferFrom(_tokensToTransfer[i], msg.sender, address(this), _tokenAmounts[i]); } } } function _collectTokens(PrestoOperation[] memory operations) private { for(uint256 i = 0; i < operations.length; i++) { PrestoOperation memory operation = operations[i]; if(operation.ammPlugin != address(0) && operation.liquidityPoolAddresses.length == 0) { IAMM amm = IAMM(operation.ammPlugin); (address ethereumAddress,,) = (amm.data()); (uint256[] memory amounts, address[] memory tokensAddresses) = amm.byLiquidityPoolAmount(operation.inputTokenAddress, operation.inputTokenAmount); bool hasEth = false; for(uint256 z = 0; z < tokensAddresses.length; z++) { if(tokensAddresses[z] == ethereumAddress) { hasEth = true; } _collectTokenData(operation.enterInETH && tokensAddresses[z] == ethereumAddress ? address(0) : tokensAddresses[z], amounts[z]); } require(!operation.enterInETH || hasEth, "Wrong use of enterInETH in addLiquidity"); } else { _collectTokenData(operation.ammPlugin != address(0) && operation.enterInETH ? address(0) : operation.inputTokenAddress, operation.inputTokenAmount); } } } function _collectTokenData(address inputTokenAddress, uint256 inputTokenAmount) private { if(inputTokenAmount == 0) { return; } uint256 position = _tokenIndex[inputTokenAddress]; if(_tokensToTransfer.length == 0 || _tokensToTransfer[position] != inputTokenAddress) { _tokenIndex[inputTokenAddress] = (position = _tokensToTransfer.length); _tokensToTransfer.push(inputTokenAddress); _tokenAmounts.push(0); } _tokenAmounts[position] = _tokenAmounts[position] + inputTokenAmount; } function _flushAndClear() private { for(uint256 i = 0; i < _tokensToTransfer.length; i++) { _safeTransfer(_tokensToTransfer[i], msg.sender, _balanceOf(_tokensToTransfer[i])); delete _tokenIndex[_tokensToTransfer[i]]; } delete _tokensToTransfer; delete _tokenAmounts; } function _balanceOf(address tokenAddress) private view returns(uint256) { if(tokenAddress == address(0)) { return address(this).balance; } return IERC20(tokenAddress).balanceOf(address(this)); } function _addLiquidity(PrestoOperation memory operation) private { LiquidityPoolData memory liquidityPoolData = LiquidityPoolData( operation.inputTokenAddress, operation.inputTokenAmount, address(0), true, operation.enterInETH, address(this) ); (uint256 amountOut,,) = IAMM(operation.ammPlugin).addLiquidity(liquidityPoolData); _transferTo(operation.inputTokenAddress, amountOut, operation.receivers, operation.receiversPercentages); } function _swap(PrestoOperation memory operation) private { (address ethereumAddress,,) = IAMM(operation.ammPlugin).data(); if(operation.exitInETH) { operation.swapPath[operation.swapPath.length - 1] = ethereumAddress; } address outputToken = operation.swapPath[operation.swapPath.length - 1]; SwapData memory swapData = SwapData( operation.enterInETH, operation.exitInETH, operation.liquidityPoolAddresses, operation.swapPath, operation.enterInETH ? ethereumAddress : operation.inputTokenAddress, operation.inputTokenAmount, address(this) ); if(swapData.inputToken != address(0) && !swapData.enterInETH) { _safeApprove(swapData.inputToken, operation.ammPlugin, swapData.amount); } uint256 amountOut; if(swapData.enterInETH) { amountOut = IAMM(operation.ammPlugin).swapLiquidity{value : operation.inputTokenAmount}(swapData); } else { amountOut = IAMM(operation.ammPlugin).swapLiquidity(swapData); } _transferTo(operation.exitInETH ? address(0) : outputToken, amountOut, operation.receivers, operation.receiversPercentages); } function _calculateRewardPercentage(uint256 totalAmount, uint256 rewardPercentage) private pure returns (uint256) { return (totalAmount * ((rewardPercentage * 1e18) / ONE_HUNDRED)) / 1e18; } function _transferTo(address erc20TokenAddress, uint256 totalAmount, address[] memory receivers, uint256[] memory receiversPercentages) private { uint256 availableAmount = totalAmount; (uint256 dfoFeePercentage, address dfoWallet) = feePercentageInfo(); uint256 currentPartialAmount = dfoFeePercentage == 0 || dfoWallet == address(0) ? 0 : _calculateRewardPercentage(availableAmount, dfoFeePercentage); _safeTransfer(erc20TokenAddress, dfoWallet, currentPartialAmount); availableAmount -= currentPartialAmount; uint256 stillAvailableAmount = availableAmount; for(uint256 i = 0; i < receivers.length - 1; i++) { _safeTransfer(erc20TokenAddress, receivers[i], currentPartialAmount = _calculateRewardPercentage(stillAvailableAmount, receiversPercentages[i])); availableAmount -= currentPartialAmount; } _safeTransfer(erc20TokenAddress, receivers[receivers.length - 1], availableAmount); } function _safeApprove(address erc20TokenAddress, address to, uint256 value) internal { bytes memory returnData = _call(erc20TokenAddress, abi.encodeWithSelector(IERC20(erc20TokenAddress).approve.selector, to, value)); require(returnData.length == 0 || abi.decode(returnData, (bool)), 'APPROVE_FAILED'); } function _safeTransfer(address erc20TokenAddress, address to, uint256 value) private { if(value == 0) { return; } if(erc20TokenAddress == address(0)) { (bool result,) = to.call{value:value}(""); require(result, "ETH transfer failed"); return; } bytes memory returnData = _call(erc20TokenAddress, abi.encodeWithSelector(IERC20(erc20TokenAddress).transfer.selector, to, value)); require(returnData.length == 0 || abi.decode(returnData, (bool)), 'TRANSFER_FAILED'); } function _safeTransferFrom(address erc20TokenAddress, address from, address to, uint256 value) internal { bytes memory returnData = _call(erc20TokenAddress, abi.encodeWithSelector(IERC20(erc20TokenAddress).transferFrom.selector, from, to, value)); require(returnData.length == 0 || abi.decode(returnData, (bool)), 'TRANSFERFROM_FAILED'); } function _call(address location, bytes memory payload) private returns(bytes memory returnData) { assembly { let result := call(gas(), location, 0, add(payload, 0x20), mload(payload), 0, 0) let size := returndatasize() returnData := mload(0x40) mstore(returnData, size) let returnDataPayloadStart := add(returnData, 0x20) returndatacopy(returnDataPayloadStart, 0, size) mstore(0x40, add(returnDataPayloadStart, size)) switch result case 0 {revert(returnDataPayloadStart, size)} } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_doubleProxy","type":"address"},{"internalType":"uint256","name":"_feePercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ONE_HUNDRED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"doubleProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"inputTokenAddress","type":"address"},{"internalType":"uint256","name":"inputTokenAmount","type":"uint256"},{"internalType":"address","name":"ammPlugin","type":"address"},{"internalType":"address[]","name":"liquidityPoolAddresses","type":"address[]"},{"internalType":"address[]","name":"swapPath","type":"address[]"},{"internalType":"bool","name":"enterInETH","type":"bool"},{"internalType":"bool","name":"exitInETH","type":"bool"},{"internalType":"address[]","name":"receivers","type":"address[]"},{"internalType":"uint256[]","name":"receiversPercentages","type":"uint256[]"}],"internalType":"struct PrestoOperation[]","name":"operations","type":"tuple[]"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercentageInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_doubleProxy","type":"address"}],"name":"setDoubleProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercentage","type":"uint256"}],"name":"setFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051611c52380380611c5283398101604081905261002f91610058565b600380546001600160a01b0319166001600160a01b039390931692909217909155600455610090565b6000806040838503121561006a578182fd5b82516001600160a01b0381168114610080578283fd5b6020939093015192949293505050565b611bb38061009f6000396000f3fe6080604052600436106100745760003560e01c8063ae06c1b71161004e578063ae06c1b7146100f0578063b1445b6d14610112578063bfaa8cca14610125578063cbd99d031461013a5761007b565b80634eb9b592146100805780637e77a2d4146100ab578063a001ecdd146100ce5761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b5061009561015a565b6040516100a29190611885565b60405180910390f35b3480156100b757600080fd5b506100c0610169565b6040516100a2929190611b01565b3480156100da57600080fd5b506100e3610261565b6040516100a29190611af8565b3480156100fc57600080fd5b5061011061010b366004611798565b610267565b005b61011061012036600461159a565b610402565b34801561013157600080fd5b506100e36104a1565b34801561014657600080fd5b50610110610155366004611519565b6104ad565b6003546001600160a01b031681565b600480546003546040805163ec55688960e01b815290516000948594936001600160a01b03169263ec5568899281830192602092829003018186803b1580156101b157600080fd5b505afa1580156101c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e9919061153c565b6001600160a01b03166331c6903d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022157600080fd5b505afa158015610235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610259919061153c565b915091509091565b60045481565b600360009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b557600080fd5b505afa1580156102c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ed919061153c565b6001600160a01b0316636701586a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d919061153c565b6001600160a01b0316633191d332336040518263ffffffff1660e01b81526004016103889190611885565b60206040518083038186803b1580156103a057600080fd5b505afa1580156103b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d8919061177c565b6103fd5760405162461bcd60e51b81526004016103f49061194a565b60405180910390fd5b600455565b61040b8161065c565b60005b815181101561049557600082828151811061042557fe5b6020026020010151905060006001600160a01b031681604001516001600160a01b031614156104705761046b816000015182602001518360e00151846101000151610739565b61048c565b6060810151516104835761046b81610811565b61048c816108f8565b5060010161040e565b5061049e610bd7565b50565b670de0b6b3a764000081565b600360009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156104fb57600080fd5b505afa15801561050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610533919061153c565b6001600160a01b0316636701586a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561056b57600080fd5b505afa15801561057f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a3919061153c565b6001600160a01b0316633191d332336040518263ffffffff1660e01b81526004016105ce9190611885565b60206040518083038186803b1580156105e657600080fd5b505afa1580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e919061177c565b61063a5760405162461bcd60e51b81526004016103f49061194a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b61066581610c9a565b60005b6001548110156107355760006001600160a01b03166001828154811061068a57fe5b6000918252602090912001546001600160a01b031614156106e057600281815481106106b257fe5b906000526020600020015434146106db5760405162461bcd60e51b81526004016103f4906119ef565b61072d565b61072d600182815481106106f057fe5b9060005260206000200160009054906101000a90046001600160a01b031633306002858154811061071d57fe5b9060005260206000200154610f2d565b600101610668565b5050565b82600080610745610169565b915091506000826000148061076157506001600160a01b038216155b6107745761076f8484610fc4565b610777565b60005b9050610784888383610fe5565b92839003928360005b60018851038110156107e3576107d68a8983815181106107a957fe5b60200260200101516107ce858b86815181106107c157fe5b6020026020010151610fc4565b955085610fe5565b948290039460010161078d565b50610806898860018a5103815181106107f857fe5b602002602001015187610fe5565b505050505050505050565b6040805160c08101825282516001600160a01b0390811682526020808501519083015260008284018190526001606084015260a08086015115156080850152309084015284840151935163d2283c0960e01b81529293909291169063d2283c0990610880908590600401611a1c565b600060405180830381600087803b15801561089a57600080fd5b505af11580156108ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108d691908101906117c8565b505090506108f38360000151828560e00151866101000151610739565b505050565b600081604001516001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040160606040518083038186803b15801561093757600080fd5b505afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190611558565b505090508160c00151156109b65760808201518051829190600019810190811061099557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b608082015180516000919060001981019081106109cf57fe5b6020026020010151905060006040518060e001604052808560a00151151581526020018560c001511515815260200185606001518152602001856080015181526020018560a00151610a22578551610a24565b845b6001600160a01b0316815260200185602001518152602001306001600160a01b0316815250905060006001600160a01b031681608001516001600160a01b031614158015610a7157508051155b15610a8d57610a8d816080015185604001518360a001516110e3565b805160009015610b255784604001516001600160a01b0316635ff94cbf8660200151846040518363ffffffff1660e01b8152600401610acc9190611a6d565b6020604051808303818588803b158015610ae557600080fd5b505af1158015610af9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b1e91906117b0565b9050610baa565b84604001516001600160a01b0316635ff94cbf836040518263ffffffff1660e01b8152600401610b559190611a6d565b602060405180830381600087803b158015610b6f57600080fd5b505af1158015610b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba791906117b0565b90505b610bd08560c00151610bbc5783610bbf565b60005b828760e00151886101000151610739565b5050505050565b60005b600154811015610c7f57610c4260018281548110610bf457fe5b9060005260206000200160009054906101000a90046001600160a01b031633610c3d60018581548110610c2357fe5b6000918252602090912001546001600160a01b0316611141565b610fe5565b60008060018381548110610c5257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812055600101610bda565b50610c8c60016000611345565b610c9860026000611345565b565b60005b8151811015610735576000828281518110610cb457fe5b6020026020010151905060006001600160a01b031681604001516001600160a01b031614158015610ce85750606081015151155b15610eeb576000816040015190506000816001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040160606040518083038186803b158015610d3157600080fd5b505afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611558565b50508351602085015160405163684943b160e01b815292935060009283926001600160a01b0387169263684943b192610da69291906004016118bd565b60006040518083038186803b158015610dbe57600080fd5b505afa158015610dd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfa919081019061171b565b915091506000805b8251811015610eb657846001600160a01b0316838281518110610e2157fe5b60200260200101516001600160a01b03161415610e3d57600191505b610eae8760a001518015610e755750856001600160a01b0316848381518110610e6257fe5b60200260200101516001600160a01b0316145b610e9257838281518110610e8557fe5b6020026020010151610e95565b60005b858381518110610ea157fe5b60200260200101516111dc565b600101610e02565b508560a001511580610ec55750805b610ee15760405162461bcd60e51b81526004016103f4906118d6565b5050505050610f24565b6040810151610f24906001600160a01b031615801590610f0c57508160a001515b610f17578151610f1a565b60005b82602001516111dc565b50600101610c9d565b6000610f87856323b872dd60e01b868686604051602401610f5093929190611899565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611303565b9050805160001480610fa8575080806020019051810190610fa8919061177c565b610bd05760405162461bcd60e51b81526004016103f49061191d565b6000670de0b6b3a76400008083810204840281610fdd57fe5b049392505050565b80610fef576108f3565b6001600160a01b03831661107f576000826001600160a01b03168260405161101690611882565b60006040518083038185875af1925050503d8060008114611053576040519150601f19603f3d011682016040523d82523d6000602084013e611058565b606091505b50509050806110795760405162461bcd60e51b81526004016103f49061199a565b506108f3565b60006110a08463a9059cbb60e01b8585604051602401610f509291906118bd565b90508051600014806110c15750808060200190518101906110c1919061177c565b6110dd5760405162461bcd60e51b81526004016103f490611971565b50505050565b60006111048463095ea7b360e01b8585604051602401610f509291906118bd565b9050805160001480611125575080806020019051810190611125919061177c565b6110dd5760405162461bcd60e51b81526004016103f4906119c7565b60006001600160a01b0382166111585750476111d7565b6040516370a0823160e01b81526001600160a01b038316906370a0823190611184903090600401611885565b60206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d491906117b0565b90505b919050565b806111e657610735565b6001600160a01b03821660009081526020819052604090205460015415806112385750826001600160a01b03166001828154811061122057fe5b6000918252602090912001546001600160a01b031614155b156112cb5750600180546001600160a01b038416600081815260208190526040812083905582840184557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6830180546001600160a01b03191690921790915560028054938401815581527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace909201919091555b81600282815481106112d957fe5b906000526020600020015401600282815481106112f257fe5b600091825260209091200155505050565b60606000808351602085016000875af13d604051925080835260208301816000823e8082016040528280156113375761133b565b8282fd5b5050505092915050565b508054600082559060005260206000209081019061049e91905b80821115611373576000815560010161135f565b5090565b80356111d781611b5a565b600082601f830112611392578081fd5b813560206113a76113a283611b3c565b611b18565b82815281810190858301838502870184018810156113c3578586fd5b855b858110156113ea5781356113d881611b5a565b845292840192908401906001016113c5565b5090979650505050505050565b600082601f830112611407578081fd5b815160206114176113a283611b3c565b8281528181019085830183850287018401881015611433578586fd5b855b858110156113ea57815161144881611b5a565b84529284019290840190600101611435565b600082601f83011261146a578081fd5b8135602061147a6113a283611b3c565b8281528181019085830183850287018401881015611496578586fd5b855b858110156113ea57813584529284019290840190600101611498565b600082601f8301126114c4578081fd5b815160206114d46113a283611b3c565b82815281810190858301838502870184018810156114f0578586fd5b855b858110156113ea578151845292840192908401906001016114f2565b80356111d781611b6f565b60006020828403121561152a578081fd5b813561153581611b5a565b9392505050565b60006020828403121561154d578081fd5b815161153581611b5a565b60008060006060848603121561156c578182fd5b835161157781611b5a565b60208501516040860151919450925061158f81611b6f565b809150509250925092565b600060208083850312156115ac578182fd5b823567ffffffffffffffff808211156115c3578384fd5b818501915085601f8301126115d6578384fd5b81356115e46113a282611b3c565b81815284810190848601875b8481101561170c578135870161012080601f19838f03011215611611578a8bfd5b61161a81611b18565b6116258b8401611377565b815260408301358b82015261163c60608401611377565b6040820152608083013589811115611652578c8dfd5b6116608f8d83870101611382565b60608301525060a083013589811115611677578c8dfd5b6116858f8d83870101611382565b60808301525061169760c0840161150e565b60a08201526116a860e0840161150e565b60c0820152610100830135898111156116bf578c8dfd5b6116cd8f8d83870101611382565b60e0830152509082013590888211156116e4578b8cfd5b6116f28e8c8486010161145a565b6101008201528652505092870192908701906001016115f0565b50909998505050505050505050565b6000806040838503121561172d578081fd5b825167ffffffffffffffff80821115611744578283fd5b611750868387016114b4565b93506020850151915080821115611765578283fd5b50611772858286016113f7565b9150509250929050565b60006020828403121561178d578081fd5b815161153581611b6f565b6000602082840312156117a9578081fd5b5035919050565b6000602082840312156117c1578081fd5b5051919050565b6000806000606084860312156117dc578081fd5b83519250602084015167ffffffffffffffff808211156117fa578283fd5b611806878388016114b4565b9350604086015191508082111561181b578283fd5b50611828868287016113f7565b9150509250925092565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156118775781516001600160a01b031687529582019590820190600101611852565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b60208082526027908201527f57726f6e6720757365206f6620656e746572496e45544820696e206164644c696040820152667175696469747960c81b606082015260800190565b6020808252601390820152721514905394d19154919493d357d19052531151606a1b604082015260600190565b6020808252600d908201526c2ab730baba3437b934bd32b21760991b604082015260600190565b6020808252600f908201526e1514905394d1915497d19052531151608a1b604082015260600190565b602080825260139082015272115512081d1c985b9cd9995c8819985a5b1959606a1b604082015260600190565b6020808252600e908201526d1054141493d59157d1905253115160921b604082015260600190565b602080825260139082015272496e636f7272656374204554482076616c756560681b604082015260600190565b81516001600160a01b0390811682526020808401519083015260408084015182169083015260608084015115159083015260808084015115159083015260a092830151169181019190915260c00190565b600060208252825115156020830152602083015115156040830152604083015160e06060840152611aa261010084018261183f565b90506060840151601f19848303016080850152611abf828261183f565b91505060018060a01b0360808501511660a084015260a084015160c084015260c0840151611af060e0850182611832565b509392505050565b90815260200190565b9182526001600160a01b0316602082015260400190565b60405181810167ffffffffffffffff81118282101715611b3457fe5b604052919050565b600067ffffffffffffffff821115611b5057fe5b5060209081020190565b6001600160a01b038116811461049e57600080fd5b801515811461049e57600080fdfea2646970667358221220e5392624e932a9040d4bc11d67d0fb1d1a3d8807268a7ef95b02e651a55ff46f64736f6c63430007060033000000000000000000000000f869538e3904778a0cb1ff620c8e83c7df36b9460000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100745760003560e01c8063ae06c1b71161004e578063ae06c1b7146100f0578063b1445b6d14610112578063bfaa8cca14610125578063cbd99d031461013a5761007b565b80634eb9b592146100805780637e77a2d4146100ab578063a001ecdd146100ce5761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b5061009561015a565b6040516100a29190611885565b60405180910390f35b3480156100b757600080fd5b506100c0610169565b6040516100a2929190611b01565b3480156100da57600080fd5b506100e3610261565b6040516100a29190611af8565b3480156100fc57600080fd5b5061011061010b366004611798565b610267565b005b61011061012036600461159a565b610402565b34801561013157600080fd5b506100e36104a1565b34801561014657600080fd5b50610110610155366004611519565b6104ad565b6003546001600160a01b031681565b600480546003546040805163ec55688960e01b815290516000948594936001600160a01b03169263ec5568899281830192602092829003018186803b1580156101b157600080fd5b505afa1580156101c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e9919061153c565b6001600160a01b03166331c6903d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022157600080fd5b505afa158015610235573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610259919061153c565b915091509091565b60045481565b600360009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b557600080fd5b505afa1580156102c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ed919061153c565b6001600160a01b0316636701586a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d919061153c565b6001600160a01b0316633191d332336040518263ffffffff1660e01b81526004016103889190611885565b60206040518083038186803b1580156103a057600080fd5b505afa1580156103b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d8919061177c565b6103fd5760405162461bcd60e51b81526004016103f49061194a565b60405180910390fd5b600455565b61040b8161065c565b60005b815181101561049557600082828151811061042557fe5b6020026020010151905060006001600160a01b031681604001516001600160a01b031614156104705761046b816000015182602001518360e00151846101000151610739565b61048c565b6060810151516104835761046b81610811565b61048c816108f8565b5060010161040e565b5061049e610bd7565b50565b670de0b6b3a764000081565b600360009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156104fb57600080fd5b505afa15801561050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610533919061153c565b6001600160a01b0316636701586a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561056b57600080fd5b505afa15801561057f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a3919061153c565b6001600160a01b0316633191d332336040518263ffffffff1660e01b81526004016105ce9190611885565b60206040518083038186803b1580156105e657600080fd5b505afa1580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e919061177c565b61063a5760405162461bcd60e51b81526004016103f49061194a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b61066581610c9a565b60005b6001548110156107355760006001600160a01b03166001828154811061068a57fe5b6000918252602090912001546001600160a01b031614156106e057600281815481106106b257fe5b906000526020600020015434146106db5760405162461bcd60e51b81526004016103f4906119ef565b61072d565b61072d600182815481106106f057fe5b9060005260206000200160009054906101000a90046001600160a01b031633306002858154811061071d57fe5b9060005260206000200154610f2d565b600101610668565b5050565b82600080610745610169565b915091506000826000148061076157506001600160a01b038216155b6107745761076f8484610fc4565b610777565b60005b9050610784888383610fe5565b92839003928360005b60018851038110156107e3576107d68a8983815181106107a957fe5b60200260200101516107ce858b86815181106107c157fe5b6020026020010151610fc4565b955085610fe5565b948290039460010161078d565b50610806898860018a5103815181106107f857fe5b602002602001015187610fe5565b505050505050505050565b6040805160c08101825282516001600160a01b0390811682526020808501519083015260008284018190526001606084015260a08086015115156080850152309084015284840151935163d2283c0960e01b81529293909291169063d2283c0990610880908590600401611a1c565b600060405180830381600087803b15801561089a57600080fd5b505af11580156108ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108d691908101906117c8565b505090506108f38360000151828560e00151866101000151610739565b505050565b600081604001516001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040160606040518083038186803b15801561093757600080fd5b505afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190611558565b505090508160c00151156109b65760808201518051829190600019810190811061099557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b608082015180516000919060001981019081106109cf57fe5b6020026020010151905060006040518060e001604052808560a00151151581526020018560c001511515815260200185606001518152602001856080015181526020018560a00151610a22578551610a24565b845b6001600160a01b0316815260200185602001518152602001306001600160a01b0316815250905060006001600160a01b031681608001516001600160a01b031614158015610a7157508051155b15610a8d57610a8d816080015185604001518360a001516110e3565b805160009015610b255784604001516001600160a01b0316635ff94cbf8660200151846040518363ffffffff1660e01b8152600401610acc9190611a6d565b6020604051808303818588803b158015610ae557600080fd5b505af1158015610af9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b1e91906117b0565b9050610baa565b84604001516001600160a01b0316635ff94cbf836040518263ffffffff1660e01b8152600401610b559190611a6d565b602060405180830381600087803b158015610b6f57600080fd5b505af1158015610b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba791906117b0565b90505b610bd08560c00151610bbc5783610bbf565b60005b828760e00151886101000151610739565b5050505050565b60005b600154811015610c7f57610c4260018281548110610bf457fe5b9060005260206000200160009054906101000a90046001600160a01b031633610c3d60018581548110610c2357fe5b6000918252602090912001546001600160a01b0316611141565b610fe5565b60008060018381548110610c5257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812055600101610bda565b50610c8c60016000611345565b610c9860026000611345565b565b60005b8151811015610735576000828281518110610cb457fe5b6020026020010151905060006001600160a01b031681604001516001600160a01b031614158015610ce85750606081015151155b15610eeb576000816040015190506000816001600160a01b03166373d4a13a6040518163ffffffff1660e01b815260040160606040518083038186803b158015610d3157600080fd5b505afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611558565b50508351602085015160405163684943b160e01b815292935060009283926001600160a01b0387169263684943b192610da69291906004016118bd565b60006040518083038186803b158015610dbe57600080fd5b505afa158015610dd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dfa919081019061171b565b915091506000805b8251811015610eb657846001600160a01b0316838281518110610e2157fe5b60200260200101516001600160a01b03161415610e3d57600191505b610eae8760a001518015610e755750856001600160a01b0316848381518110610e6257fe5b60200260200101516001600160a01b0316145b610e9257838281518110610e8557fe5b6020026020010151610e95565b60005b858381518110610ea157fe5b60200260200101516111dc565b600101610e02565b508560a001511580610ec55750805b610ee15760405162461bcd60e51b81526004016103f4906118d6565b5050505050610f24565b6040810151610f24906001600160a01b031615801590610f0c57508160a001515b610f17578151610f1a565b60005b82602001516111dc565b50600101610c9d565b6000610f87856323b872dd60e01b868686604051602401610f5093929190611899565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611303565b9050805160001480610fa8575080806020019051810190610fa8919061177c565b610bd05760405162461bcd60e51b81526004016103f49061191d565b6000670de0b6b3a76400008083810204840281610fdd57fe5b049392505050565b80610fef576108f3565b6001600160a01b03831661107f576000826001600160a01b03168260405161101690611882565b60006040518083038185875af1925050503d8060008114611053576040519150601f19603f3d011682016040523d82523d6000602084013e611058565b606091505b50509050806110795760405162461bcd60e51b81526004016103f49061199a565b506108f3565b60006110a08463a9059cbb60e01b8585604051602401610f509291906118bd565b90508051600014806110c15750808060200190518101906110c1919061177c565b6110dd5760405162461bcd60e51b81526004016103f490611971565b50505050565b60006111048463095ea7b360e01b8585604051602401610f509291906118bd565b9050805160001480611125575080806020019051810190611125919061177c565b6110dd5760405162461bcd60e51b81526004016103f4906119c7565b60006001600160a01b0382166111585750476111d7565b6040516370a0823160e01b81526001600160a01b038316906370a0823190611184903090600401611885565b60206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d491906117b0565b90505b919050565b806111e657610735565b6001600160a01b03821660009081526020819052604090205460015415806112385750826001600160a01b03166001828154811061122057fe5b6000918252602090912001546001600160a01b031614155b156112cb5750600180546001600160a01b038416600081815260208190526040812083905582840184557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6830180546001600160a01b03191690921790915560028054938401815581527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace909201919091555b81600282815481106112d957fe5b906000526020600020015401600282815481106112f257fe5b600091825260209091200155505050565b60606000808351602085016000875af13d604051925080835260208301816000823e8082016040528280156113375761133b565b8282fd5b5050505092915050565b508054600082559060005260206000209081019061049e91905b80821115611373576000815560010161135f565b5090565b80356111d781611b5a565b600082601f830112611392578081fd5b813560206113a76113a283611b3c565b611b18565b82815281810190858301838502870184018810156113c3578586fd5b855b858110156113ea5781356113d881611b5a565b845292840192908401906001016113c5565b5090979650505050505050565b600082601f830112611407578081fd5b815160206114176113a283611b3c565b8281528181019085830183850287018401881015611433578586fd5b855b858110156113ea57815161144881611b5a565b84529284019290840190600101611435565b600082601f83011261146a578081fd5b8135602061147a6113a283611b3c565b8281528181019085830183850287018401881015611496578586fd5b855b858110156113ea57813584529284019290840190600101611498565b600082601f8301126114c4578081fd5b815160206114d46113a283611b3c565b82815281810190858301838502870184018810156114f0578586fd5b855b858110156113ea578151845292840192908401906001016114f2565b80356111d781611b6f565b60006020828403121561152a578081fd5b813561153581611b5a565b9392505050565b60006020828403121561154d578081fd5b815161153581611b5a565b60008060006060848603121561156c578182fd5b835161157781611b5a565b60208501516040860151919450925061158f81611b6f565b809150509250925092565b600060208083850312156115ac578182fd5b823567ffffffffffffffff808211156115c3578384fd5b818501915085601f8301126115d6578384fd5b81356115e46113a282611b3c565b81815284810190848601875b8481101561170c578135870161012080601f19838f03011215611611578a8bfd5b61161a81611b18565b6116258b8401611377565b815260408301358b82015261163c60608401611377565b6040820152608083013589811115611652578c8dfd5b6116608f8d83870101611382565b60608301525060a083013589811115611677578c8dfd5b6116858f8d83870101611382565b60808301525061169760c0840161150e565b60a08201526116a860e0840161150e565b60c0820152610100830135898111156116bf578c8dfd5b6116cd8f8d83870101611382565b60e0830152509082013590888211156116e4578b8cfd5b6116f28e8c8486010161145a565b6101008201528652505092870192908701906001016115f0565b50909998505050505050505050565b6000806040838503121561172d578081fd5b825167ffffffffffffffff80821115611744578283fd5b611750868387016114b4565b93506020850151915080821115611765578283fd5b50611772858286016113f7565b9150509250929050565b60006020828403121561178d578081fd5b815161153581611b6f565b6000602082840312156117a9578081fd5b5035919050565b6000602082840312156117c1578081fd5b5051919050565b6000806000606084860312156117dc578081fd5b83519250602084015167ffffffffffffffff808211156117fa578283fd5b611806878388016114b4565b9350604086015191508082111561181b578283fd5b50611828868287016113f7565b9150509250925092565b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156118775781516001600160a01b031687529582019590820190600101611852565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b60208082526027908201527f57726f6e6720757365206f6620656e746572496e45544820696e206164644c696040820152667175696469747960c81b606082015260800190565b6020808252601390820152721514905394d19154919493d357d19052531151606a1b604082015260600190565b6020808252600d908201526c2ab730baba3437b934bd32b21760991b604082015260600190565b6020808252600f908201526e1514905394d1915497d19052531151608a1b604082015260600190565b602080825260139082015272115512081d1c985b9cd9995c8819985a5b1959606a1b604082015260600190565b6020808252600e908201526d1054141493d59157d1905253115160921b604082015260600190565b602080825260139082015272496e636f7272656374204554482076616c756560681b604082015260600190565b81516001600160a01b0390811682526020808401519083015260408084015182169083015260608084015115159083015260808084015115159083015260a092830151169181019190915260c00190565b600060208252825115156020830152602083015115156040830152604083015160e06060840152611aa261010084018261183f565b90506060840151601f19848303016080850152611abf828261183f565b91505060018060a01b0360808501511660a084015260a084015160c084015260c0840151611af060e0850182611832565b509392505050565b90815260200190565b9182526001600160a01b0316602082015260400190565b60405181810167ffffffffffffffff81118282101715611b3457fe5b604052919050565b600067ffffffffffffffff821115611b5057fe5b5060209081020190565b6001600160a01b038116811461049e57600080fd5b801515811461049e57600080fdfea2646970667358221220e5392624e932a9040d4bc11d67d0fb1d1a3d8807268a7ef95b02e651a55ff46f64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f869538e3904778a0cb1ff620c8e83c7df36b9460000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _doubleProxy (address): 0xF869538e3904778A0cb1FF620C8E83c7df36B946
Arg [1] : _feePercentage (uint256): 0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f869538e3904778a0cb1ff620c8e83c7df36b946
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
5813:9830:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6045:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6560:186;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;6087:37::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6877:123::-;;;;;;;;;;-1:-1:-1;6877:123:0;;;;;:::i;:::-;;:::i;:::-;;7008:661;;;;;;:::i;:::-;;:::i;5849:51::-;;;;;;;;;;;;;:::i;6754:115::-;;;;;;;;;;-1:-1:-1;6754:115:0;;;;;:::i;:::-;;:::i;6045:35::-;;;-1:-1:-1;;;;;6045:35:0;;:::o;6560:186::-;6656:13;;;6694:11;;6681:33;;;-1:-1:-1;;;6681:33:0;;;;6619:7;;;;6656:13;-1:-1:-1;;;;;6694:11:0;;6681:31;;:33;;;;;;;;;;;6694:11;6681:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6671:64:0;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6648:90;;;;6560:186;;:::o;6087:37::-;;;;:::o;6877:123::-;6416:11;;;;;;;;;-1:-1:-1;;;;;6416:11:0;-1:-1:-1;;;;;6403:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6393:80:0;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6366:136:0;;6503:10;6366:148;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6358:174;;;;-1:-1:-1;;;6358:174:0;;;;;;;:::i;:::-;;;;;;;;;6962:13:::1;:30:::0;6877:123::o;7008:661::-;7097:25;7111:10;7097:13;:25::i;:::-;7137:9;7133:502;7157:10;:17;7153:1;:21;7133:502;;;7196:32;7231:10;7242:1;7231:13;;;;;;;;;;;;;;7196:48;;7293:1;-1:-1:-1;;;;;7262:33:0;:9;:19;;;-1:-1:-1;;;;;7262:33:0;;7259:365;;;7316:121;7328:9;:27;;;7357:9;:26;;;7385:9;:19;;;7406:9;:30;;;7316:11;:121::i;:::-;7259:365;;;7462:32;;;;:39;7459:165;;7527:24;7541:9;7527:13;:24::i;7459:165::-;7592:16;7598:9;7592:5;:16::i;:::-;-1:-1:-1;7176:3:0;;7133:502;;;;7645:16;:14;:16::i;:::-;7008:661;:::o;5849:51::-;5896:4;5849:51;:::o;6754:115::-;6416:11;;;;;;;;;-1:-1:-1;;;;;6416:11:0;-1:-1:-1;;;;;6403:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6393:80:0;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6366:136:0;;6503:10;6366:148;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6358:174;;;;-1:-1:-1;;;6358:174:0;;;;;;;:::i;:::-;6835:11:::1;:26:::0;;-1:-1:-1;;;;;;6835:26:0::1;-1:-1:-1::0;;;;;6835:26:0;;;::::1;::::0;;;::::1;::::0;;6754:115::o;7677:463::-;7756:26;7771:10;7756:14;:26::i;:::-;7797:9;7793:340;7816:17;:24;7812:28;;7793:340;;;7897:1;-1:-1:-1;;;;;7865:34:0;:17;7883:1;7865:20;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7865:20:0;:34;7862:260;;;7941:13;7955:1;7941:16;;;;;;;;;;;;;;;;7928:9;:29;7920:61;;;;-1:-1:-1;;;7920:61:0;;;;;;;:::i;:::-;7862:260;;;8022:84;8040:17;8058:1;8040:20;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8040:20:0;8062:10;8082:4;8089:13;8103:1;8089:16;;;;;;;;;;;;;;;;8022:17;:84::i;:::-;7842:3;;7793:340;;;;7677:463;:::o;12731:1005::-;12912:11;12886:23;;12984:19;:17;:19::i;:::-;12936:67;;;;13014:28;13045:16;13065:1;13045:21;:48;;;-1:-1:-1;;;;;;13070:23:0;;;13045:48;:116;;13100:61;13127:15;13144:16;13100:26;:61::i;:::-;13045:116;;;13096:1;13045:116;13014:147;;13172:65;13186:17;13205:9;13216:20;13172:13;:65::i;:::-;13248:39;;;;;;13300:28;13359:275;13401:1;13382:9;:16;:20;13378:1;:24;13359:275;;;13424:144;13438:17;13457:9;13467:1;13457:12;;;;;;;;;;;;;;13494:73;13521:20;13543;13564:1;13543:23;;;;;;;;;;;;;;13494:26;:73::i;:::-;13471:96;;;13424:13;:144::i;:::-;13583:39;;;;;13404:3;;13359:275;;;;13646:82;13660:17;13679:9;13708:1;13689:9;:16;:20;13679:31;;;;;;;;;;;;;;13712:15;13646:13;:82::i;:::-;12731:1005;;;;;;;;;:::o;10647:554::-;10768:218;;;;;;;;10800:27;;-1:-1:-1;;;;;10768:218:0;;;;;;10842:26;;;;10768:218;;;;10723:42;10768:218;;;;;;10908:4;10768:218;;;;10927:20;;;;;10768:218;;;;;;10970:4;10768:218;;;;11026:19;;;;11021:57;;-1:-1:-1;;;11021:57:0;;10768:218;;10723:42;;11021:38;;;;;:57;;10768:218;;11021:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11021:57:0;;;;;;;;;;;;:::i;:::-;10997:81;;;;11089:104;11101:9;:27;;;11130:9;11141;:19;;;11162:9;:30;;;11089:11;:104::i;:::-;10647:554;;;:::o;11209:1302::-;11280:23;11314:9;:19;;;-1:-1:-1;;;;;11309:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11279:62;;;;11357:9;:19;;;11354:118;;;11393:18;;;;11412:25;;11445:15;;11393:18;-1:-1:-1;;11412:29:0;;;11393:49;;;;;;;;;;;:67;-1:-1:-1;;;;;11393:67:0;;;-1:-1:-1;;;;;11393:67:0;;;;;11354:118;11506:18;;;;11525:25;;11484:19;;11506:18;-1:-1:-1;;11525:29:0;;;11506:49;;;;;;;;;;;;11484:71;;11568:24;11595:320;;;;;;;;11618:9;:20;;;11595:320;;;;;;11653:9;:19;;;11595:320;;;;;;11687:9;:32;;;11595:320;;;;11734:9;:18;;;11595:320;;;;11767:9;:20;;;:68;;11808:27;;11767:68;;;11790:15;11767:68;-1:-1:-1;;;;;11595:320:0;;;;;11850:9;:26;;;11595:320;;;;11899:4;-1:-1:-1;;;;;11595:320:0;;;;11568:347;;11962:1;-1:-1:-1;;;;;11931:33:0;:8;:19;;;-1:-1:-1;;;;;11931:33:0;;;:57;;;;-1:-1:-1;11969:19:0;;11968:20;11931:57;11928:160;;;12005:71;12018:8;:19;;;12039:9;:19;;;12060:8;:15;;;12005:12;:71::i;:::-;12131:19;;12100:17;;12128:242;;;12184:9;:19;;;-1:-1:-1;;;;;12179:39:0;;12227:9;:26;;;12255:8;12179:85;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12167:97;;12128:242;;;12314:9;:19;;;-1:-1:-1;;;;;12309:39:0;;12349:8;12309:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12297:61;;12128:242;12380:123;12392:9;:19;;;:46;;12427:11;12392:46;;;12422:1;12392:46;12440:9;12451;:19;;;12472:9;:30;;;12380:11;:123::i;:::-;11209:1302;;;;;:::o;10057:335::-;10106:9;10102:217;10125:17;:24;10121:28;;10102:217;;;10171:81;10185:17;10203:1;10185:20;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10185:20:0;10207:10;10219:32;10230:17;10248:1;10230:20;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10230:20:0;10219:10;:32::i;:::-;10171:13;:81::i;:::-;10274:11;:33;10286:17;10304:1;10286:20;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10286:20:0;10274:33;;;;;;;;;;;;10267:40;10286:20;10151:3;10102:217;;;-1:-1:-1;10329:24:0;10336:17;;10329:24;:::i;:::-;10364:20;10371:13;;10364:20;:::i;:::-;10057:335::o;8148:1300::-;8232:9;8228:1213;8251:10;:17;8247:1;:21;8228:1213;;;8290:32;8325:10;8336:1;8325:13;;;;;;;;;;;;;;8290:48;;8387:1;-1:-1:-1;;;;;8356:33:0;:9;:19;;;-1:-1:-1;;;;;8356:33:0;;;:81;;;;-1:-1:-1;8393:32:0;;;;:39;:44;8356:81;8353:1077;;;8458:8;8474:9;:19;;;8458:36;;8514:23;8544:3;-1:-1:-1;;;;;8544:8:0;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8663:27:0;;8692:26;;;;8637:82;;-1:-1:-1;;;8637:82:0;;8513:42;;-1:-1:-1;8575:24:0;;;;-1:-1:-1;;;;;8637:25:0;;;;;:82;;8663:27;8692:26;8637:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8637:82:0;;;;;;;;;;;;:::i;:::-;8574:145;;;;8738:11;8780:9;8776:349;8799:15;:22;8795:1;:26;8776:349;;;8876:15;-1:-1:-1;;;;;8854:37:0;:15;8870:1;8854:18;;;;;;;;;;;;;;-1:-1:-1;;;;;8854:37:0;;8851:106;;;8929:4;8920:13;;8851:106;8979:126;8997:9;:20;;;:61;;;;;9043:15;-1:-1:-1;;;;;9021:37:0;:15;9037:1;9021:18;;;;;;;;;;;;;;-1:-1:-1;;;;;9021:37:0;;8997:61;:95;;9074:15;9090:1;9074:18;;;;;;;;;;;;;;8997:95;;;9069:1;8997:95;9094:7;9102:1;9094:10;;;;;;;;;;;;;;8979:17;:126::i;:::-;8823:3;;8776:349;;;;9152:9;:20;;;9151:21;:31;;;;9176:6;9151:31;9143:83;;;;-1:-1:-1;;;9143:83:0;;;;;;;:::i;:::-;8353:1077;;;;;;;;9285:19;;;;9267:147;;-1:-1:-1;;;;;9285:33:0;;;;;:57;;;9322:9;:20;;;9285:57;:100;;9358:27;;9285:100;;;9353:1;9285:100;9387:9;:26;;;9267:17;:147::i;:::-;-1:-1:-1;8270:3:0;;8228:1213;;14662:362;14777:23;14803:114;14809:17;14851:47;;;14900:4;14906:2;14910:5;14828:88;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;14828:88:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14828:88:0;-1:-1:-1;;;;;;14828:88:0;;;;;;;;;;14803:5;:114::i;:::-;14777:140;;14936:10;:17;14957:1;14936:22;:56;;;;14973:10;14962:30;;;;;;;;;;;;:::i;:::-;14928:88;;;;-1:-1:-1;;;14928:88:0;;;;;;;:::i;12519:204::-;12624:7;12711:4;;12668:23;;;12667:39;12652:11;:55;12651:64;;;;;;;12519:204;-1:-1:-1;;;12519:204:0:o;14079:575::-;14178:10;14175:48;;14205:7;;14175:48;-1:-1:-1;;;;;14236:31:0;;14233:178;;14285:11;14301:2;-1:-1:-1;;;;;14301:7:0;14315:5;14301:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14284:41;;;14348:6;14340:38;;;;-1:-1:-1;;;14340:38:0;;;;;;;:::i;:::-;14393:7;;;14233:178;14421:23;14447:104;14453:17;14495:43;;;14540:2;14544:5;14472:78;;;;;;;;;:::i;14447:104::-;14421:130;;14570:10;:17;14591:1;14570:22;:56;;;;14607:10;14596:30;;;;;;;;;;;;:::i;:::-;14562:84;;;;-1:-1:-1;;;14562:84:0;;;;;;;:::i;:::-;14079:575;;;;:::o;13744:327::-;13840:23;13866:103;13872:17;13914:42;;;13958:2;13962:5;13891:77;;;;;;;;;:::i;13866:103::-;13840:129;;13988:10;:17;14009:1;13988:22;:56;;;;14025:10;14014:30;;;;;;;;;;;;:::i;:::-;13980:83;;;;-1:-1:-1;;;13980:83:0;;;;;;;:::i;10400:239::-;10463:7;-1:-1:-1;;;;;10486:26:0;;10483:86;;-1:-1:-1;10536:21:0;10529:28;;10483:86;10586:45;;-1:-1:-1;;;10586:45:0;;-1:-1:-1;;;;;10586:30:0;;;;;:45;;10625:4;;10586:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10579:52;;10400:239;;;;:::o;9456:593::-;9558:21;9555:59;;9596:7;;9555:59;-1:-1:-1;;;;;9645:30:0;;9626:16;9645:30;;;;;;;;;;;9691:17;:24;:29;;:81;;;9755:17;-1:-1:-1;;;;;9724:48:0;:17;9742:8;9724:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9724:27:0;:48;;9691:81;9688:275;;;-1:-1:-1;9834:17:0;:24;;-1:-1:-1;;;;;9789:30:0;;:11;:30;;;;;;;;;;:70;;;9874:41;;;;;;;;;;-1:-1:-1;;;;;;9874:41:0;;;;;;;9930:13;:21;;;;;;;;;;;;;;;;;9688:275;10025:16;9999:13;10013:8;9999:23;;;;;;;;;;;;;;;;:42;9973:13;9987:8;9973:23;;;;;;;;;;;;;;;;;:68;-1:-1:-1;9456:593:0;;:::o;15032:608::-;15103:23;15241:1;15238;15228:7;15222:14;15215:4;15206:7;15202:18;15199:1;15189:8;15182:5;15177:66;15269:16;15319:4;15313:11;15299:25;;15357:4;15345:10;15338:24;15422:4;15410:10;15406:21;15483:4;15480:1;15456:22;15441:47;15515:33;;;15509:4;15502:47;15570:6;15577:45;;;;15563:59;;15577:45;15616:4;15592:22;15585:36;15563:59;;;;;15148:485;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:138:1:-;84:20;;113:33;84:20;113:33;:::i;157:782::-;;270:3;263:4;255:6;251:17;247:27;237:2;;292:5;285;278:20;237:2;332:6;319:20;358:4;382:65;397:49;443:2;397:49;:::i;:::-;382:65;:::i;:::-;481:15;;;512:12;;;;544:15;;;590:11;;;578:24;;574:33;;571:42;-1:-1:-1;568:2:1;;;630:5;623;616:20;568:2;656:5;670:240;684:2;681:1;678:9;670:240;;;755:3;742:17;772:33;799:5;772:33;:::i;:::-;818:18;;856:12;;;;888;;;;702:1;695:9;670:240;;;-1:-1:-1;928:5:1;;227:712;-1:-1:-1;;;;;;;227:712:1:o;944:779::-;;1068:3;1061:4;1053:6;1049:17;1045:27;1035:2;;1090:5;1083;1076:20;1035:2;1123:6;1117:13;1149:4;1173:65;1188:49;1234:2;1188:49;:::i;1173:65::-;1272:15;;;1303:12;;;;1335:15;;;1381:11;;;1369:24;;1365:33;;1362:42;-1:-1:-1;1359:2:1;;;1421:5;1414;1407:20;1359:2;1447:5;1461:233;1475:2;1472:1;1469:9;1461:233;;;1539:3;1533:10;1556:33;1583:5;1556:33;:::i;:::-;1602:18;;1640:12;;;;1672;;;;1493:1;1486:9;1461:233;;1728:705;;1841:3;1834:4;1826:6;1822:17;1818:27;1808:2;;1863:5;1856;1849:20;1808:2;1903:6;1890:20;1929:4;1953:65;1968:49;2014:2;1968:49;:::i;1953:65::-;2052:15;;;2083:12;;;;2115:15;;;2161:11;;;2149:24;;2145:33;;2142:42;-1:-1:-1;2139:2:1;;;2201:5;2194;2187:20;2139:2;2227:5;2241:163;2255:2;2252:1;2249:9;2241:163;;;2312:17;;2300:30;;2350:12;;;;2382;;;;2273:1;2266:9;2241:163;;2438:702;;2562:3;2555:4;2547:6;2543:17;2539:27;2529:2;;2584:5;2577;2570:20;2529:2;2617:6;2611:13;2643:4;2667:65;2682:49;2728:2;2682:49;:::i;2667:65::-;2766:15;;;2797:12;;;;2829:15;;;2875:11;;;2863:24;;2859:33;;2856:42;-1:-1:-1;2853:2:1;;;2915:5;2908;2901:20;2853:2;2941:5;2955:156;2969:2;2966:1;2963:9;2955:156;;;3026:10;;3014:23;;3057:12;;;;3089;;;;2987:1;2980:9;2955:156;;3145:132;3212:20;;3241:30;3212:20;3241:30;:::i;3282:259::-;;3394:2;3382:9;3373:7;3369:23;3365:32;3362:2;;;3415:6;3407;3400:22;3362:2;3459:9;3446:23;3478:33;3505:5;3478:33;:::i;:::-;3530:5;3352:189;-1:-1:-1;;;3352:189:1:o;3546:263::-;;3669:2;3657:9;3648:7;3644:23;3640:32;3637:2;;;3690:6;3682;3675:22;3637:2;3727:9;3721:16;3746:33;3773:5;3746:33;:::i;3814:454::-;;;;3968:2;3956:9;3947:7;3943:23;3939:32;3936:2;;;3989:6;3981;3974:22;3936:2;4026:9;4020:16;4045:33;4072:5;4045:33;:::i;:::-;4142:2;4127:18;;4121:25;4191:2;4176:18;;4170:25;4097:5;;-1:-1:-1;4121:25:1;-1:-1:-1;4204:32:1;4170:25;4204:32;:::i;:::-;4255:7;4245:17;;;3926:342;;;;;:::o;4273:2337::-;;4419:2;4462;4450:9;4441:7;4437:23;4433:32;4430:2;;;4483:6;4475;4468:22;4430:2;4528:9;4515:23;4557:18;4598:2;4590:6;4587:14;4584:2;;;4619:6;4611;4604:22;4584:2;4662:6;4651:9;4647:22;4637:32;;4707:7;4700:4;4696:2;4692:13;4688:27;4678:2;;4734:6;4726;4719:22;4678:2;4775;4762:16;4798:65;4813:49;4859:2;4813:49;:::i;4798:65::-;4897:15;;;4928:12;;;;4960:11;;;4989:6;5004:1576;5018:2;5015:1;5012:9;5004:1576;;;5094:3;5081:17;5077:2;5073:26;5122:6;5180:2;5174;5170:7;5165:2;5156:7;5152:16;5148:30;5144:39;5141:2;;;5201:6;5193;5186:22;5141:2;5236:18;5251:2;5236:18;:::i;:::-;5281:33;5310:2;5306;5302:11;5281:33;:::i;:::-;5274:5;5267:48;5372:2;5368;5364:11;5351:25;5346:2;5339:5;5335:14;5328:49;5413:33;5442:2;5438;5434:11;5413:33;:::i;:::-;5408:2;5401:5;5397:14;5390:57;5497:3;5493:2;5489:12;5476:26;5531:2;5521:8;5518:16;5515:2;;;5552:6;5544;5537:22;5515:2;5597:71;5660:7;5655:2;5644:8;5640:2;5636:17;5632:26;5597:71;:::i;:::-;5592:2;5585:5;5581:14;5574:95;;5719:3;5715:2;5711:12;5698:26;5753:2;5743:8;5740:16;5737:2;;;5774:6;5766;5759:22;5737:2;5820:71;5883:7;5878:2;5867:8;5863:2;5859:17;5855:26;5820:71;:::i;:::-;5814:3;5807:5;5803:15;5796:96;;5929:31;5955:3;5951:2;5947:12;5929:31;:::i;:::-;5923:3;5916:5;5912:15;5905:56;5998:31;6024:3;6020:2;6016:12;5998:31;:::i;:::-;5992:3;5985:5;5981:15;5974:56;6080:3;6076:2;6072:12;6059:26;6114:2;6104:8;6101:16;6098:2;;;6135:6;6127;6120:22;6098:2;6181:71;6244:7;6239:2;6228:8;6224:2;6220:17;6216:26;6181:71;:::i;:::-;6175:3;6164:15;;6157:96;-1:-1:-1;6295:11:1;;;6282:25;;6323:16;;;6320:2;;;6357:6;6349;6342:22;6320:2;6403:71;6466:7;6461:2;6450:8;6446:2;6442:17;6438:26;6403:71;:::i;:::-;6397:3;6386:15;;6379:96;6488:18;;-1:-1:-1;;6526:12:1;;;;6558;;;;5036:1;5029:9;5004:1576;;;-1:-1:-1;6599:5:1;;4399:2211;-1:-1:-1;;;;;;;;;4399:2211:1:o;6615:656::-;;;6805:2;6793:9;6784:7;6780:23;6776:32;6773:2;;;6826:6;6818;6811:22;6773:2;6864:9;6858:16;6893:18;6934:2;6926:6;6923:14;6920:2;;;6955:6;6947;6940:22;6920:2;6983:78;7053:7;7044:6;7033:9;7029:22;6983:78;:::i;:::-;6973:88;;7107:2;7096:9;7092:18;7086:25;7070:41;;7136:2;7126:8;7123:16;7120:2;;;7157:6;7149;7142:22;7120:2;;7185:80;7257:7;7246:8;7235:9;7231:24;7185:80;:::i;:::-;7175:90;;;6763:508;;;;;:::o;7276:257::-;;7396:2;7384:9;7375:7;7371:23;7367:32;7364:2;;;7417:6;7409;7402:22;7364:2;7454:9;7448:16;7473:30;7497:5;7473:30;:::i;7538:190::-;;7650:2;7638:9;7629:7;7625:23;7621:32;7618:2;;;7671:6;7663;7656:22;7618:2;-1:-1:-1;7699:23:1;;7608:120;-1:-1:-1;7608:120:1:o;7733:194::-;;7856:2;7844:9;7835:7;7831:23;7827:32;7824:2;;;7877:6;7869;7862:22;7824:2;-1:-1:-1;7905:16:1;;7814:113;-1:-1:-1;7814:113:1:o;7932:717::-;;;;8139:2;8127:9;8118:7;8114:23;8110:32;8107:2;;;8160:6;8152;8145:22;8107:2;8194:9;8188:16;8178:26;;8248:2;8237:9;8233:18;8227:25;8271:18;8312:2;8304:6;8301:14;8298:2;;;8333:6;8325;8318:22;8298:2;8361:78;8431:7;8422:6;8411:9;8407:22;8361:78;:::i;:::-;8351:88;;8485:2;8474:9;8470:18;8464:25;8448:41;;8514:2;8504:8;8501:16;8498:2;;;8535:6;8527;8520:22;8498:2;;8563:80;8635:7;8624:8;8613:9;8609:24;8563:80;:::i;:::-;8553:90;;;8097:552;;;;;:::o;8654:106::-;-1:-1:-1;;;;;8722:31:1;8710:44;;8700:60::o;8765:469::-;;8862:5;8856:12;8889:6;8884:3;8877:19;8915:4;8944:2;8939:3;8935:12;8928:19;;8981:2;8974:5;8970:14;9002:3;9014:195;9028:6;9025:1;9022:13;9014:195;;;9093:13;;-1:-1:-1;;;;;9089:39:1;9077:52;;9149:12;;;;9184:15;;;;9125:1;9043:9;9014:195;;;-1:-1:-1;9225:3:1;;8832:402;-1:-1:-1;;;;;8832:402:1:o;9239:205::-;9439:3;9430:14::o;9449:203::-;-1:-1:-1;;;;;9613:32:1;;;;9595:51;;9583:2;9568:18;;9550:102::o;9873:375::-;-1:-1:-1;;;;;10131:15:1;;;10113:34;;10183:15;;;;10178:2;10163:18;;10156:43;10230:2;10215:18;;10208:34;;;;10063:2;10048:18;;10030:218::o;10253:274::-;-1:-1:-1;;;;;10445:32:1;;;;10427:51;;10509:2;10494:18;;10487:34;10415:2;10400:18;;10382:145::o;10532:403::-;10734:2;10716:21;;;10773:2;10753:18;;;10746:30;10812:34;10807:2;10792:18;;10785:62;-1:-1:-1;;;10878:2:1;10863:18;;10856:37;10925:3;10910:19;;10706:229::o;10940:343::-;11142:2;11124:21;;;11181:2;11161:18;;;11154:30;-1:-1:-1;;;11215:2:1;11200:18;;11193:49;11274:2;11259:18;;11114:169::o;11288:337::-;11490:2;11472:21;;;11529:2;11509:18;;;11502:30;-1:-1:-1;;;11563:2:1;11548:18;;11541:43;11616:2;11601:18;;11462:163::o;11630:339::-;11832:2;11814:21;;;11871:2;11851:18;;;11844:30;-1:-1:-1;;;11905:2:1;11890:18;;11883:45;11960:2;11945:18;;11804:165::o;11974:343::-;12176:2;12158:21;;;12215:2;12195:18;;;12188:30;-1:-1:-1;;;12249:2:1;12234:18;;12227:49;12308:2;12293:18;;12148:169::o;12322:338::-;12524:2;12506:21;;;12563:2;12543:18;;;12536:30;-1:-1:-1;;;12597:2:1;12582:18;;12575:44;12651:2;12636:18;;12496:164::o;12665:343::-;12867:2;12849:21;;;12906:2;12886:18;;;12879:30;-1:-1:-1;;;12940:2:1;12925:18;;12918:49;12999:2;12984:18;;12839:169::o;13013:665::-;13288:13;;-1:-1:-1;;;;;13284:22:1;;;13266:41;;13363:4;13351:17;;;13345:24;13323:20;;;13316:54;13430:4;13418:17;;;13412:24;13408:33;;13386:20;;;13379:63;13512:4;13500:17;;;13494:24;13487:32;13480:40;13458:20;;;13451:70;13591:4;13579:17;;;13573:24;13566:32;13559:40;13537:20;;;13530:70;13246:3;13648:17;;;13642:24;13638:33;13616:20;;;13609:63;;;;13215:3;13200:19;;13182:496::o;13683:1013::-;;13862:2;13851:9;13844:21;13921:6;13915:13;13908:21;13901:29;13896:2;13885:9;13881:18;13874:57;13999:2;13991:6;13987:15;13981:22;13974:30;13967:38;13962:2;13951:9;13947:18;13940:66;14053:2;14045:6;14041:15;14035:22;14093:4;14088:2;14077:9;14073:18;14066:32;14121:69;14185:3;14174:9;14170:19;14156:12;14121:69;:::i;:::-;14107:83;;14239:2;14231:6;14227:15;14221:22;14312:2;14308:7;14296:9;14288:6;14284:22;14280:36;14274:3;14263:9;14259:19;14252:65;14340:58;14391:6;14375:14;14340:58;:::i;:::-;14326:72;;;14481:1;14477;14472:3;14468:11;14464:19;14457:3;14449:6;14445:16;14439:23;14435:49;14429:3;14418:9;14414:19;14407:78;14540:3;14532:6;14528:16;14522:23;14516:3;14505:9;14501:19;14494:52;14595:3;14587:6;14583:16;14577:23;14609:58;14661:4;14650:9;14646:20;14630:14;14609:58;:::i;:::-;-1:-1:-1;14684:6:1;13834:862;-1:-1:-1;;;13834:862:1:o;14701:177::-;14847:25;;;14835:2;14820:18;;14802:76::o;14883:274::-;15057:25;;;-1:-1:-1;;;;;15118:32:1;15113:2;15098:18;;15091:60;15045:2;15030:18;;15012:145::o;15162:242::-;15232:2;15226:9;15262:17;;;15309:18;15294:34;;15330:22;;;15291:62;15288:2;;;15356:9;15288:2;15383;15376:22;15206:198;;-1:-1:-1;15206:198:1:o;15409:183::-;;15508:18;15500:6;15497:30;15494:2;;;15530:9;15494:2;-1:-1:-1;15581:4:1;15562:17;;;15558:28;;15484:108::o;15597:133::-;-1:-1:-1;;;;;15674:31:1;;15664:42;;15654:2;;15720:1;15717;15710:12;15735:120;15823:5;15816:13;15809:21;15802:5;15799:32;15789:2;;15845:1;15842;15835:12
Swarm Source
ipfs://e5392624e932a9040d4bc11d67d0fb1d1a3d8807268a7ef95b02e651a55ff46f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.