Overview
ETH Balance
0.080216878282661862 ETH
Eth Value
$232.18 (@ $2,894.39/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 29 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Execute Swap | 16802515 | 482 days ago | IN | 0.04572596 ETH | 0.03222228 | ||||
Execute Cross Ex... | 16551103 | 517 days ago | IN | 0.00029813 ETH | 0.0038043 | ||||
Execute Swap1Inc... | 16333167 | 547 days ago | IN | 0 ETH | 0.00213325 | ||||
Execute Swap1Inc... | 16333099 | 547 days ago | IN | 0 ETH | 0.00057328 | ||||
Execute Swap | 16192694 | 567 days ago | IN | 0.00558822 ETH | 0.00388304 | ||||
Execute Swap | 16192624 | 567 days ago | IN | 0.0066634 ETH | 0.00281574 | ||||
Execute Swap | 15937304 | 603 days ago | IN | 0.00650878 ETH | 0.00275098 | ||||
Execute Swap1Inc... | 15922818 | 605 days ago | IN | 0.10634824 ETH | 0.0038301 | ||||
Execute Swap | 15824872 | 618 days ago | IN | 0.0001003 ETH | 0.00196241 | ||||
Execute Swap | 15824809 | 618 days ago | IN | 0.01003 ETH | 0.0017649 | ||||
Execute Cross Ex... | 15815898 | 619 days ago | IN | 0.00030544 ETH | 0.00145654 | ||||
Execute Cross Ex... | 15815891 | 619 days ago | IN | 0.00030544 ETH | 0.00160301 | ||||
Execute Swap | 15728344 | 632 days ago | IN | 0.001003 ETH | 0.00249003 | ||||
Execute Swap | 15666019 | 640 days ago | IN | 0.00000023 ETH | 0.00170107 | ||||
Execute Swap1Inc... | 15665960 | 640 days ago | IN | 0.001003 ETH | 0.00156118 | ||||
Execute Swap1Inc... | 15665943 | 640 days ago | IN | 0.001003 ETH | 0.00190519 | ||||
Execute Swap1Inc... | 15649772 | 643 days ago | IN | 0.00000022 ETH | 0.00309034 | ||||
Execute Swap | 15632654 | 645 days ago | IN | 0.01613233 ETH | 0.00449468 | ||||
Execute Cross Ex... | 15616746 | 647 days ago | IN | 0.00000514 ETH | 0.00075617 | ||||
Execute Cross Ex... | 15616741 | 647 days ago | IN | 0.00000514 ETH | 0.00085157 | ||||
Execute Cross Ex... | 15616736 | 647 days ago | IN | 0.00031353 ETH | 0.00076792 | ||||
Execute Cross Ex... | 15616730 | 647 days ago | IN | 0.00031353 ETH | 0.00078379 | ||||
Execute Cross Ex... | 15616725 | 647 days ago | IN | 0.00031434 ETH | 0.00072105 | ||||
Execute Swap | 15616701 | 647 days ago | IN | 0.00121536 ETH | 0.00071994 | ||||
Execute Swap1Inc... | 15522950 | 661 days ago | IN | 9.78757364 ETH | 0.00346782 |
Latest 20 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
16551103 | 517 days ago | 0.00029813 ETH | ||||
16333166 | 547 days ago | 1 wei | ||||
16333166 | 547 days ago | 1 wei | ||||
15922818 | 605 days ago | 0.1 ETH | ||||
15824872 | 618 days ago | 0.0001 ETH | ||||
15824809 | 618 days ago | 0.01 ETH | ||||
15815898 | 619 days ago | 0.00030544 ETH | ||||
15815891 | 619 days ago | 0.00030544 ETH | ||||
15728344 | 632 days ago | 0.001 ETH | ||||
15665960 | 640 days ago | 0.001 ETH | ||||
15665943 | 640 days ago | 0.001 ETH | ||||
15632654 | 645 days ago | 0.01 ETH | ||||
15616746 | 647 days ago | 0.00000514 ETH | ||||
15616741 | 647 days ago | 0.00000514 ETH | ||||
15616736 | 647 days ago | 0.00031353 ETH | ||||
15616730 | 647 days ago | 0.00031353 ETH | ||||
15616725 | 647 days ago | 0.00031434 ETH | ||||
15522950 | 661 days ago | 9.78282 ETH | ||||
15522937 | 661 days ago | 1 ETH | ||||
15227164 | 708 days ago | 0.0001 ETH |
Loading...
Loading
Contract Name:
Degen
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-08 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(),"Not Owner"); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0),"Zero address not allowed"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface ISwapFactory { function swap(address tokenA, address tokenB, uint256 amount, address user, uint256 crossOrderType, uint256 dexId, uint256 deadline) external payable returns (bool); } interface IContractCaller { function callContract(address to, address token, uint256 value, bytes calldata data) external payable; } library TransferHelper { function safeApprove(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } } interface IERC20 { function balanceOf(address account) external view returns (uint256); } interface IUni { function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function WETH() external pure returns (address); } interface IReimbursement { function getLicenseeFee(address licenseeVault, address projectContract) external view returns(uint256); // return fee percentage with 2 decimals function getVaultOwner(address vault) external view returns(address); // returns address of fee receiver or address(0) if licensee can't receive the fee (fee should be returns to user) function requestReimbursement(address user, uint256 feeAmount, address licenseeVault) external returns(address); } contract Degen is Ownable { using TransferHelper for address; enum OrderType {EthForTokens, TokensForEth, TokensForTokens, EthForEth} IUni public Uni = IUni(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //mainnet network address for uniswap (valid for Ropsten as well) IUni public Sushi = IUni(0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F); // Mainnet network address for sushiswap //address public _sushi = address(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); // Ropsten network address for sushiswap //address public USDT = address(0x47A530f3Fa882502344DC491549cA9c058dbC7Da); // Ropsten test net USDT test token address public USDT = address(0xdAC17F958D2ee523a2206206994597C13D831ec7); // USDT Token Address address public system; address public contractCaller; uint256 public processingFee = 0 ; uint256 private deadlineLimit = 20*60; // 20 minutes by default uint256 private collectedFees = 1; // amount of collected fee (starts from 1 to avoid additional gas usage) address public feeReceiver; // address which receive the fee (by default is validator) IReimbursement public reimbursementContract; // reimbursement contract address address public companyVault; // the vault address of our company registered in reimbursement contract ISwapFactory public swapFactory; modifier onlySystem() { require(msg.sender == system || owner() == msg.sender,"Caller is not the system"); _; } constructor(address _swapFactory, address _system, address _contractCaller) { swapFactory = ISwapFactory(_swapFactory); system = _system; contractCaller = _contractCaller; } function setContractCaller(address _contractCaller) external onlyOwner { contractCaller = _contractCaller; } function setCompanyVault(address _comapnyVault) external onlyOwner { companyVault = _comapnyVault; } function setReimbursementContract(address _reimbursementContarct) external onlyOwner { reimbursementContract = IReimbursement(_reimbursementContarct); } function setProcessingFee(uint256 _processingFees) external onlySystem { processingFee = _processingFees; } function setSwapFactory(address _swapFactory) external onlyOwner { swapFactory = ISwapFactory(_swapFactory); } function setSystem(address _system) external onlyOwner { system = _system; } function setFeeReceiver(address _addr) external onlyOwner { feeReceiver = _addr; } function getDeadlineLimit() public view returns(uint256) { return deadlineLimit; } function setDeadlineLimit(uint256 limit) external onlyOwner { deadlineLimit = limit; } // get amount of collected fees that can be claimed function getColletedFees() external view returns (uint256) { // collectedFees starts from 1 to avoid additional gas usage to initiate storage (when collectedFees = 0) return collectedFees - 1; } // claim fees by feeReceiver function claimFee() external returns (uint256 feeAmount) { require(msg.sender == feeReceiver, "This fee can be claimed only by fee receiver!!"); feeAmount = collectedFees - 1; collectedFees = 1; TransferHelper.safeTransferETH(msg.sender, feeAmount); } // Call function processFee() at the end of main function for correct gas usage calculation. // txGas - is gasleft() on start of calling contract. Put `uint256 txGas = gasleft();` as a first command in function // feeAmount - fee amount that user paid // processing - processing fee (for cross-chain swaping) // licenseeVault - address that licensee received on registration and should provide when users comes from their site // user - address of user who has to get reimbursement (usually msg.sender) function processFee(uint256 txGas, uint256 feeAmount, uint256 processing, address licenseeVault, address user) internal { if (address(reimbursementContract) == address(0)) { if (feeAmount != 0) payable(user).transfer(feeAmount); // return fee to sender if no reimbursement contract if (processing != 0) payable(system).transfer(processing); // transfer to fee receiver return; } uint256 licenseeFeeAmount; if (licenseeVault != address(0)) { uint256 companyFeeRate = reimbursementContract.getLicenseeFee(companyVault, address(this)); uint256 licenseeFeeRate = reimbursementContract.getLicenseeFee(licenseeVault, address(this)); if (licenseeFeeRate != 0) licenseeFeeAmount = (feeAmount * licenseeFeeRate)/(licenseeFeeRate + companyFeeRate); if (licenseeFeeAmount != 0) { address licenseeFeeTo = reimbursementContract.requestReimbursement(user, licenseeFeeAmount, licenseeVault); if (licenseeFeeTo == address(0)) { payable(user).transfer(licenseeFeeAmount); // refund to user } else { payable(licenseeFeeTo).transfer(licenseeFeeAmount); // transfer to fee receiver } } } feeAmount -= licenseeFeeAmount; // company's part of fee collectedFees += feeAmount; if (processing != 0) payable(system).transfer(processing); // transfer to fee receiver txGas -= gasleft(); // get gas amount that was spent on Licensee fee txGas = txGas * tx.gasprice; // request reimbursement for user reimbursementContract.requestReimbursement(user, feeAmount+txGas+processing, companyVault); } function _swap( OrderType orderType, address[] memory path, uint256 assetInOffered, uint256 minExpectedAmount, address to, uint256 dexId, uint256 deadline ) internal returns(uint256 amountOut) { require(dexId < 2, "Invalid DEX Id!"); require(deadline >= block.timestamp, "EXPIRED: Deadline for transaction already passed."); if(dexId == 0){ uint[] memory swapResult; if(orderType == OrderType.EthForTokens) { path[0] = Uni.WETH(); swapResult = Uni.swapExactETHForTokens{value:assetInOffered}(0, path, to,block.timestamp); } else if (orderType == OrderType.TokensForEth) { path[path.length-1] = Uni.WETH(); TransferHelper.safeApprove(path[0], address(Uni), assetInOffered); swapResult = Uni.swapExactTokensForETH(assetInOffered, 0, path,to, block.timestamp); } else if (orderType == OrderType.TokensForTokens) { TransferHelper.safeApprove(path[0], address(Uni), assetInOffered); swapResult = Uni.swapExactTokensForTokens(assetInOffered, minExpectedAmount, path, to, block.timestamp); } amountOut = swapResult[swapResult.length - 1]; } else if(dexId == 1) { uint[] memory swapResult; if(orderType == OrderType.EthForTokens) { path[0] = Sushi.WETH(); swapResult = Sushi.swapExactETHForTokens{value:assetInOffered}(minExpectedAmount, path, to, block.timestamp); } else if (orderType == OrderType.TokensForEth) { path[path.length-1] = Sushi.WETH(); TransferHelper.safeApprove(path[0], address(Sushi), assetInOffered); swapResult = Sushi.swapExactTokensForETH(assetInOffered, minExpectedAmount, path, to, block.timestamp); } else if (orderType == OrderType.TokensForTokens) { TransferHelper.safeApprove(path[0], address(Sushi), assetInOffered); swapResult = Sushi.swapExactTokensForTokens(assetInOffered, minExpectedAmount, path, to, block.timestamp); } amountOut = swapResult[swapResult.length - 1]; } } function executeSwap( OrderType orderType, address[] memory path, uint256 assetInOffered, uint256 fees, uint256 minExpectedAmount, address licenseeVault, uint256 dexId, uint256 deadline ) external payable { uint256 gasA = gasleft(); uint256 receivedFees = 0; if(deadline == 0) { deadline = block.timestamp + deadlineLimit; } if(orderType == OrderType.EthForTokens){ require(msg.value >= (assetInOffered + fees), "Payment = assetInOffered + fees"); receivedFees = receivedFees + msg.value - assetInOffered; } else { require(msg.value >= fees, "fees not received"); receivedFees = receivedFees + msg.value; TransferHelper.safeTransferFrom(path[0], msg.sender, address(this), assetInOffered); } _swap(orderType, path, assetInOffered, minExpectedAmount, msg.sender, dexId, deadline); processFee(gasA, receivedFees, 0, licenseeVault, msg.sender); } function executeCrossExchange( address[] memory path, OrderType orderType, uint256 crossOrderType, uint256 assetInOffered, uint256 fees, uint256 minExpectedAmount, address licenseeVault, uint256[3] memory dexId_deadline // dexId_deadline[0] - native swap dexId, dexId_deadline[1] - foreign swap dexId, dexId_deadline[2] - deadline ) public payable { uint256[2] memory feesPrice; feesPrice[0] = gasleft(); // equivalent to gasA feesPrice[1] = 0; // processing fees if (dexId_deadline[2] == 0) { // if deadline == 0, set deadline to deadlineLimit dexId_deadline[2] = block.timestamp + deadlineLimit; } if(orderType == OrderType.EthForTokens){ require(msg.value >= (assetInOffered + fees + processingFee), "Payment = assetInOffered + fees + processingFee"); feesPrice[1] = msg.value - assetInOffered - fees; } else { require(msg.value >= (fees + processingFee), "fees not received"); feesPrice[1] = msg.value - fees; TransferHelper.safeTransferFrom(path[0], msg.sender, address(this), assetInOffered); } if(path[0] == USDT) { TransferHelper.safeApprove(USDT, address(swapFactory), assetInOffered); swapFactory.swap(USDT, path[path.length-1], assetInOffered, msg.sender, crossOrderType, dexId_deadline[1], dexId_deadline[2]); } else { address tokenB = path[path.length-1]; path[path.length-1] = USDT; uint256 minAmountExpected = _swap(orderType, path, assetInOffered, minExpectedAmount, address(this), dexId_deadline[0], dexId_deadline[2]); TransferHelper.safeApprove(USDT, address(swapFactory),minAmountExpected); swapFactory.swap(USDT, tokenB, minAmountExpected, msg.sender, crossOrderType, dexId_deadline[1], dexId_deadline[2]); } processFee(feesPrice[0], fees, feesPrice[1], licenseeVault, msg.sender); } function callbackCrossExchange( uint256 orderType, address[] memory path, uint256 assetInOffered, address user, uint256 dexId, uint256 deadline ) public returns(bool) { require(msg.sender == address(swapFactory) , "Degen : caller is not SwapFactory"); if(deadline==0) { deadline = block.timestamp + deadlineLimit; } _swap(OrderType(orderType), path, assetInOffered, uint256(0), user, dexId, deadline); return true; } // user has to approve 1Inch router contract to transfer `assetInOffered` before calling this function // when call `swap` API of 1Inch, you have to set: // `fromTokenAddress` - token user want to swap (if user swap ETH use address: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) // `toTokenAddress ` - token user want to receive // `amount` - amount of tokens user want to swap // `fromAddress` - the user's address. MAY NOT WORK // `slippage` - from user's setting function executeSwap1Inch( address[2] memory path, // path[0] - from token, path[1] - to token OrderType orderType, uint256 assetInOffered, // token amount or value of ETH (Form API response). uint256 fees, address licenseeVault, address to, // 1Inch router. Form API response. bytes memory data // Form API response. ) external payable { uint256 gasA = gasleft(); uint256 receivedFees; if(orderType == OrderType.EthForTokens){ require(msg.value >= (assetInOffered + fees), "Payment = assetInOffered + fees"); receivedFees = msg.value - assetInOffered; IContractCaller(contractCaller).callContract{value: assetInOffered}(to, address(0), assetInOffered, data); } else { require(msg.value >= fees, "fees not received"); receivedFees = msg.value; TransferHelper.safeTransferFrom(path[0], msg.sender, contractCaller, assetInOffered); //TransferHelper.safeApprove(path[0],to,assetInOffered); IContractCaller(contractCaller).callContract(to, path[0], assetInOffered, data); } processFee(gasA, receivedFees, 0, licenseeVault, msg.sender); } // user has to approve 1Inch router contract to transfer `assetInOffered` before calling this function // when call `swap` API of 1Inch, you have to set: // `fromTokenAddress` - token user want to swap (if user swap ETH use address: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) // `toTokenAddress ` - token user want to receive // `amount` - amount of tokens user want to swap // `fromAddress` - the user's address // `slippage` - from user's setting // `destReceiver` - Degen contract address function executeCrossExchange1Inch( address[2] memory path, // path[0] - from token, path[1] - to token OrderType crossOrderType, uint256 assetInOffered, // token amount or value of ETH (Form API response). uint256 fees, address licenseeVault, address to, // 1Inch router. Form API response. bytes memory data, // Form API response. uint256 toDEX, // destination dex that will be used on foreign chain. uint256 deadline ) external payable { uint256 gasA = gasleft(); uint256 _crossOrderType = uint256(crossOrderType); if(deadline==0) { deadline = block.timestamp + deadlineLimit; } uint256 balanceUSDT = IERC20(USDT).balanceOf(address(this)); if(crossOrderType == OrderType.EthForTokens || crossOrderType == OrderType.EthForEth){ require(msg.value >= (assetInOffered + fees), "Payment = assetInOffered + fees"); fees = msg.value - assetInOffered; IContractCaller(contractCaller).callContract{value: assetInOffered}(to, address(0), assetInOffered, data); } else { require(msg.value >= fees, "fees not received"); fees = msg.value; TransferHelper.safeTransferFrom(path[0], msg.sender, contractCaller, assetInOffered); //TransferHelper.safeApprove(path[0],to,assetInOffered); IContractCaller(contractCaller).callContract(to, path[0], assetInOffered, data); } balanceUSDT = IERC20(USDT).balanceOf(address(this)) - balanceUSDT; // USDT amount that received from 1Inch swap TransferHelper.safeApprove(USDT, address(swapFactory), balanceUSDT); swapFactory.swap(USDT, path[1], balanceUSDT, msg.sender, _crossOrderType, toDEX, deadline); processFee(gasA, fees, 0, licenseeVault, msg.sender); } // If someone accidentally transfer tokens to this contract, the owner will be able to rescue it and refund sender. function rescueTokens(address _token) external onlyOwner { if (address(0) == _token) { payable(msg.sender).transfer(address(this).balance); } else { uint256 available = IERC20(_token).balanceOf(address(this)); TransferHelper.safeTransfer(_token, msg.sender, available); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_swapFactory","type":"address"},{"internalType":"address","name":"_system","type":"address"},{"internalType":"address","name":"_contractCaller","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"Sushi","outputs":[{"internalType":"contract IUni","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Uni","outputs":[{"internalType":"contract IUni","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"orderType","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256","name":"assetInOffered","type":"uint256"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"dexId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"callbackCrossExchange","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimFee","outputs":[{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"companyVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"enum Degen.OrderType","name":"orderType","type":"uint8"},{"internalType":"uint256","name":"crossOrderType","type":"uint256"},{"internalType":"uint256","name":"assetInOffered","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"uint256","name":"minExpectedAmount","type":"uint256"},{"internalType":"address","name":"licenseeVault","type":"address"},{"internalType":"uint256[3]","name":"dexId_deadline","type":"uint256[3]"}],"name":"executeCrossExchange","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[2]","name":"path","type":"address[2]"},{"internalType":"enum Degen.OrderType","name":"crossOrderType","type":"uint8"},{"internalType":"uint256","name":"assetInOffered","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"address","name":"licenseeVault","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"toDEX","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"executeCrossExchange1Inch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum Degen.OrderType","name":"orderType","type":"uint8"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256","name":"assetInOffered","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"uint256","name":"minExpectedAmount","type":"uint256"},{"internalType":"address","name":"licenseeVault","type":"address"},{"internalType":"uint256","name":"dexId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"executeSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[2]","name":"path","type":"address[2]"},{"internalType":"enum Degen.OrderType","name":"orderType","type":"uint8"},{"internalType":"uint256","name":"assetInOffered","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"},{"internalType":"address","name":"licenseeVault","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeSwap1Inch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getColletedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeadlineLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reimbursementContract","outputs":[{"internalType":"contract IReimbursement","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_comapnyVault","type":"address"}],"name":"setCompanyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractCaller","type":"address"}],"name":"setContractCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setDeadlineLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_processingFees","type":"uint256"}],"name":"setProcessingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reimbursementContarct","type":"address"}],"name":"setReimbursementContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapFactory","type":"address"}],"name":"setSwapFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_system","type":"address"}],"name":"setSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFactory","outputs":[{"internalType":"contract ISwapFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"system","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17825560028054821673d9e1ce17f2641f24ae83637ab66a2cca9c378b9f1790556003805490911673dac17f958d2ee523a2206206994597c13d831ec717905560006006556104b06007556008553480156200008457600080fd5b50604051620031e6380380620031e6833981016040819052620000a79162000146565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600c80546001600160a01b039485166001600160a01b03199182161790915560048054938516938216939093179092556005805491909316911617905562000190565b80516001600160a01b03811681146200014157600080fd5b919050565b6000806000606084860312156200015c57600080fd5b620001678462000129565b9250620001776020850162000129565b9150620001876040850162000129565b90509250925092565b61304680620001a06000396000f3fe6080604052600436106101d75760003560e01c80637944f944116101025780639c9bb1e311610095578063c54e44eb11610064578063c54e44eb14610517578063de1881a814610537578063efdcd9741461054d578063f2fde38b1461056d57600080fd5b80639c9bb1e3146104a4578063b3f00674146104c4578063c34e596f146104e4578063c3d730181461050457600080fd5b8063901bd2cc116100d1578063901bd2cc1461042f5780639461446d1461044f57806395bf75fd1461046f57806399d32fc41461048f57600080fd5b80637944f944146103b15780638a77ba1a146103d15780638da5cb5b146103f15780638f32d59b1461040f57600080fd5b806342d5350b1161017a5780635af9e7c9116101495780635af9e7c914610347578063647762761461035c57806369fb10751461037c578063715018a61461039c57600080fd5b806342d5350b146102c4578063447f25ef146102e457806354cf428a14610307578063558377571461032757600080fd5b80632ffda2b4116101b65780632ffda2b41461025b5780633500ac411461026e5780633d45b7f31461029e5780634061215d146102b157600080fd5b8062ae3bf8146101dc5780630660acb4146101fe5780632a94a9c81461023b575b600080fd5b3480156101e857600080fd5b506101fc6101f736600461283b565b61058d565b005b34801561020a57600080fd5b5060015461021e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024757600080fd5b506101fc61025636600461283b565b610688565b6101fc610269366004612b5f565b6106d4565b34801561027a57600080fd5b5061028e610289366004612c22565b6107cb565b6040519015158152602001610232565b6101fc6102ac366004612915565b610876565b6101fc6102bf36600461287c565b610bfd565b3480156102d057600080fd5b50600a5461021e906001600160a01b031681565b3480156102f057600080fd5b506102f9610d81565b604051908152602001610232565b34801561031357600080fd5b5060055461021e906001600160a01b031681565b34801561033357600080fd5b506101fc61034236600461283b565b610d97565b34801561035357600080fd5b506007546102f9565b34801561036857600080fd5b506101fc61037736600461283b565b610de3565b34801561038857600080fd5b506101fc610397366004612bf0565b610e2f565b3480156103a857600080fd5b506101fc610e5e565b3480156103bd57600080fd5b50600c5461021e906001600160a01b031681565b3480156103dd57600080fd5b50600b5461021e906001600160a01b031681565b3480156103fd57600080fd5b506000546001600160a01b031661021e565b34801561041b57600080fd5b506000546001600160a01b0316331461028e565b34801561043b57600080fd5b5060025461021e906001600160a01b031681565b34801561045b57600080fd5b506101fc61046a366004612bf0565b610ed2565b34801561047b57600080fd5b5060045461021e906001600160a01b031681565b34801561049b57600080fd5b506102f9610f55565b3480156104b057600080fd5b506101fc6104bf36600461283b565b610fec565b3480156104d057600080fd5b5060095461021e906001600160a01b031681565b3480156104f057600080fd5b506101fc6104ff36600461283b565b611038565b6101fc6105123660046129c2565b611084565b34801561052357600080fd5b5060035461021e906001600160a01b031681565b34801561054357600080fd5b506102f960065481565b34801561055957600080fd5b506101fc61056836600461283b565b611470565b34801561057957600080fd5b506101fc61058836600461283b565b6114bc565b6000546001600160a01b031633146105c05760405162461bcd60e51b81526004016105b790612dc4565b60405180910390fd5b6001600160a01b0381166105fe5760405133904780156108fc02916000818181858888f193505050501580156105fa573d6000803e3d6000fd5b5050565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561064057600080fd5b505afa158015610654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106789190612c09565b90506105fa8233836114ef565b50565b6000546001600160a01b031633146106b25760405162461bcd60e51b81526004016105b790612dc4565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60005a90506000826106f0576007546106ed9042612f03565b92505b60008a600381111561070457610704612fb9565b141561074f576107148789612f03565b3410156107335760405162461bcd60e51b81526004016105b790612de7565b8761073e3483612f03565b6107489190612f5c565b90506107a1565b8634101561076f5760405162461bcd60e51b81526004016105b790612e1e565b6107793482612f03565b90506107a18960008151811061079157610791612fcf565b602002602001015133308b61160a565b6107b08a8a8a8933898961173a565b506107bf828260008833611fcd565b50505050505050505050565b600c546000906001600160a01b031633146108325760405162461bcd60e51b815260206004820152602160248201527f446567656e203a2063616c6c6572206973206e6f742053776170466163746f726044820152607960f81b60648201526084016105b7565b81610847576007546108449042612f03565b91505b61086887600381111561085c5761085c612fb9565b8787600088888861173a565b506001979650505050505050565b60005a9050600089600381111561088f5761088f612fb9565b9050826108a6576007546108a39042612f03565b92505b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156108ea57600080fd5b505afa1580156108fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109229190612c09565b905060008b600381111561093857610938612fb9565b1480610955575060038b600381111561095357610953612fb9565b145b156109fe57610964898b612f03565b3410156109835760405162461bcd60e51b81526004016105b790612de7565b61098d8a34612f5c565b60055460405163fd6ac30960e01b8152919a506001600160a01b03169063fd6ac309908c906109c7908b9060009084908d90600401612d3b565b6000604051808303818588803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b5050505050610aa6565b88341015610a1e5760405162461bcd60e51b81526004016105b790612e1e565b8b51600554349a50610a3c919033906001600160a01b03168d61160a565b6005548c5160405163fd6ac30960e01b81526001600160a01b039092169163fd6ac30991610a73918b91908f908c90600401612d3b565b600060405180830381600087803b158015610a8d57600080fd5b505af1158015610aa1573d6000803e3d6000fd5b505050505b6003546040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190612c09565b610b2b9190612f5c565b600354600c54919250610b4b916001600160a01b03918216911683612409565b600c5460035460208e015160405163f73d640d60e01b81526001600160a01b039384169363f73d640d93610b8e939116918690339089908d908d90600401612cf7565b602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be09190612b3d565b50610bef838a60008b33611fcd565b505050505050505050505050565b60005a9050600080886003811115610c1757610c17612fb9565b1415610cc157610c278688612f03565b341015610c465760405162461bcd60e51b81526004016105b790612de7565b610c508734612f5c565b60055460405163fd6ac30960e01b81529192506001600160a01b03169063fd6ac309908990610c8a90889060009084908a90600401612d3b565b6000604051808303818588803b158015610ca357600080fd5b505af1158015610cb7573d6000803e3d6000fd5b5050505050610d68565b85341015610ce15760405162461bcd60e51b81526004016105b790612e1e565b5087516005543491610cfe9133906001600160a01b03168a61160a565b600554895160405163fd6ac30960e01b81526001600160a01b039092169163fd6ac30991610d35918891908c908990600401612d3b565b600060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050505b610d76828260008833611fcd565b505050505050505050565b60006001600854610d929190612f5c565b905090565b6000546001600160a01b03163314610dc15760405162461bcd60e51b81526004016105b790612dc4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e0d5760405162461bcd60e51b81526004016105b790612dc4565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e595760405162461bcd60e51b81526004016105b790612dc4565b600755565b6000546001600160a01b03163314610e885760405162461bcd60e51b81526004016105b790612dc4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004546001600160a01b0316331480610f04575033610ef96000546001600160a01b031690565b6001600160a01b0316145b610f505760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74207468652073797374656d000000000000000060448201526064016105b7565b600655565b6009546000906001600160a01b03163314610fc95760405162461bcd60e51b815260206004820152602e60248201527f54686973206665652063616e20626520636c61696d6564206f6e6c792062792060448201526d666565207265636569766572212160901b60648201526084016105b7565b6001600854610fd89190612f5c565b60016008559050610fe9338261251d565b90565b6000546001600160a01b031633146110165760405162461bcd60e51b81526004016105b790612dc4565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110625760405162461bcd60e51b81526004016105b790612dc4565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61108c61269c565b5a81526000602082015260408201516110b2576007546110ac9042612f03565b60408301525b60008860038111156110c6576110c6612fb9565b1415611169576006546110d98688612f03565b6110e39190612f03565b34101561114a5760405162461bcd60e51b815260206004820152602f60248201527f5061796d656e74203d206173736574496e4f666665726564202b20666565732060448201526e2b2070726f63657373696e6746656560881b60648201526084016105b7565b846111558734612f5c565b61115f9190612f5c565b60208201526111cb565b6006546111769086612f03565b3410156111955760405162461bcd60e51b81526004016105b790612e1e565b61119f8534612f5c565b602082015288516111cb908a906000906111bb576111bb612fcf565b602002602001015133308961160a565b60035489516001600160a01b03909116908a906000906111ed576111ed612fcf565b60200260200101516001600160a01b0316141561130057600354600c54611221916001600160a01b03908116911688612409565b600c546003548a516001600160a01b039283169263f73d640d9216908c9061124b90600190612f5c565b8151811061125b5761125b612fcf565b602002602001015189338c8860016003811061127957611279612fcf565b602002015189600260200201516040518863ffffffff1660e01b81526004016112a89796959493929190612cf7565b602060405180830381600087803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fa9190612b3d565b5061145b565b60008960018b516113119190612f5c565b8151811061132157611321612fcf565b60200260200101519050600360009054906101000a90046001600160a01b03168a60018c516113509190612f5c565b8151811061136057611360612fcf565b6001600160a01b039092166020928302919091019091015260006113968a8c8a8930898760200201518a6002602002015161173a565b600354600c549192506113b6916001600160a01b03918216911683612409565b600c546003546001600160a01b039182169163f73d640d91168484338e8a600160200201518b600260200201516040518863ffffffff1660e01b81526004016114059796959493929190612cf7565b602060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114579190612b3d565b5050505b80516020820151610d76919087908633611fcd565b6000546001600160a01b0316331461149a5760405162461bcd60e51b81526004016105b790612dc4565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114e65760405162461bcd60e51b81526004016105b790612dc4565b610685816125eb565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161154b9190612cdb565b6000604051808303816000865af19150503d8060008114611588576040519150601f19603f3d011682016040523d82523d6000602084013e61158d565b606091505b50915091508180156115b75750805115806115b75750808060200190518101906115b79190612b3d565b6116035760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016105b7565b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169161166e9190612cdb565b6000604051808303816000865af19150503d80600081146116ab576040519150601f19603f3d011682016040523d82523d6000602084013e6116b0565b606091505b50915091508180156116da5750805115806116da5750808060200190518101906116da9190612b3d565b6117325760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b60648201526084016105b7565b505050505050565b60006002831061177e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204445582049642160881b60448201526064016105b7565b428210156117e85760405162461bcd60e51b815260206004820152603160248201527f455850495245443a20446561646c696e6520666f72207472616e73616374696f604482015270371030b63932b0b23c903830b9b9b2b21760791b60648201526084016105b7565b82611bd6576060600089600381111561180357611803612fb9565b141561194557600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561185757600080fd5b505afa15801561186b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188f919061285f565b886000815181106118a2576118a2612fcf565b6001600160a01b039283166020918202929092010152600154604051637ff36ab560e01b8152911690637ff36ab59089906118e8906000908d908b904290600401612d8f565b6000604051808303818588803b15801561190157600080fd5b505af1158015611915573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261193e9190810190612aa5565b9050611ba7565b600189600381111561195957611959612fb9565b1415611ae657600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e5919061285f565b8860018a516119f49190612f5c565b81518110611a0457611a04612fcf565b60200260200101906001600160a01b031690816001600160a01b031681525050611a5788600081518110611a3a57611a3a612fcf565b60209081029190910101516001546001600160a01b031689612409565b6001546040516318cbafe560e01b81526001600160a01b03909116906318cbafe590611a90908a906000908d908b904290600401612e49565b600060405180830381600087803b158015611aaa57600080fd5b505af1158015611abe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261193e9190810190612aa5565b6002896003811115611afa57611afa612fb9565b1415611ba757611b1688600081518110611a3a57611a3a612fcf565b6001546040516338ed173960e01b81526001600160a01b03909116906338ed173990611b4e908a908a908d908b904290600401612e49565b600060405180830381600087803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ba49190810190612aa5565b90505b8060018251611bb69190612f5c565b81518110611bc657611bc6612fcf565b6020026020010151915050611fc2565b8260011415611fc25760606000896003811115611bf557611bf5612fb9565b1415611d3657600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c4957600080fd5b505afa158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c81919061285f565b88600081518110611c9457611c94612fcf565b6001600160a01b039283166020918202929092010152600254604051637ff36ab560e01b8152911690637ff36ab5908990611cd9908a908d908b904290600401612d8f565b6000604051808303818588803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d2f9190810190612aa5565b9050611f97565b6001896003811115611d4a57611d4a612fb9565b1415611ed657600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9e57600080fd5b505afa158015611db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd6919061285f565b8860018a51611de59190612f5c565b81518110611df557611df5612fcf565b60200260200101906001600160a01b031690816001600160a01b031681525050611e4888600081518110611e2b57611e2b612fcf565b60209081029190910101516002546001600160a01b031689612409565b6002546040516318cbafe560e01b81526001600160a01b03909116906318cbafe590611e80908a908a908d908b904290600401612e49565b600060405180830381600087803b158015611e9a57600080fd5b505af1158015611eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2f9190810190612aa5565b6002896003811115611eea57611eea612fb9565b1415611f9757611f0688600081518110611e2b57611e2b612fcf565b6002546040516338ed173960e01b81526001600160a01b03909116906338ed173990611f3e908a908a908d908b904290600401612e49565b600060405180830381600087803b158015611f5857600080fd5b505af1158015611f6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f949190810190612aa5565b90505b8060018251611fa69190612f5c565b81518110611fb657611fb6612fcf565b60200260200101519150505b979650505050505050565b600a546001600160a01b031661206257831561201b576040516001600160a01b0382169085156108fc029086906000818181858888f19350505050158015612019573d6000803e3d6000fd5b505b821561205d576004546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561205b573d6000803e3d6000fd5b505b611603565b60006001600160a01b038316156122cd57600a54600b5460405163016175dd60e51b81526001600160a01b0391821660048201523060248201526000929190911690632c2ebba09060440160206040518083038186803b1580156120c557600080fd5b505afa1580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190612c09565b600a5460405163016175dd60e51b81526001600160a01b03878116600483015230602483015292935060009290911690632c2ebba09060440160206040518083038186803b15801561214e57600080fd5b505afa158015612162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121869190612c09565b905080156121af576121988282612f03565b6121a28289612f3d565b6121ac9190612f1b565b92505b82156122ca57600a546040516305c2b27f60e21b81526001600160a01b038681166004830152602482018690528781166044830152600092169063170ac9fc90606401602060405180830381600087803b15801561220c57600080fd5b505af1158015612220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612244919061285f565b90506001600160a01b038116612290576040516001600160a01b0386169085156108fc029086906000818181858888f1935050505015801561228a573d6000803e3d6000fd5b506122c8565b6040516001600160a01b0382169085156108fc029086906000818181858888f193505050501580156122c6573d6000803e3d6000fd5b505b505b50505b6122d78186612f5c565b945084600860008282546122eb9190612f03565b90915550508315612332576004546040516001600160a01b039091169085156108fc029086906000818181858888f19350505050158015612330573d6000803e3d6000fd5b505b5a61233d9087612f5c565b95506123493a87612f3d565b600a549096506001600160a01b031663170ac9fc83866123698a8a612f03565b6123739190612f03565b600b5460405160e085901b6001600160e01b03191681526001600160a01b0393841660048201526024810192909252919091166044820152606401602060405180830381600087803b1580156123c857600080fd5b505af11580156123dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612400919061285f565b50505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916124659190612cdb565b6000604051808303816000865af19150503d80600081146124a2576040519150601f19603f3d011682016040523d82523d6000602084013e6124a7565b606091505b50915091508180156124d15750805115806124d15750808060200190518101906124d19190612b3d565b6116035760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c4544000060448201526064016105b7565b604080516000808252602082019092526001600160a01b0384169083906040516125479190612cdb565b60006040518083038185875af1925050503d8060008114612584576040519150601f19603f3d011682016040523d82523d6000602084013e612589565b606091505b50509050806125e65760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b60648201526084016105b7565b505050565b6001600160a01b0381166126415760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064016105b7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60405180604001604052806002906020820280368337509192915050565b600082601f8301126126cb57600080fd5b6040516040810181811067ffffffffffffffff821117156126ee576126ee612fe5565b806040525080838560408601111561270557600080fd5b60005b600281101561273157813561271c81612ffb565b83526020928301929190910190600101612708565b509195945050505050565b600082601f83011261274d57600080fd5b8135602061276261275d83612edf565b612eae565b80838252828201915082860187848660051b890101111561278257600080fd5b60005b858110156127aa57813561279881612ffb565b84529284019290840190600101612785565b5090979650505050505050565b600082601f8301126127c857600080fd5b813567ffffffffffffffff8111156127e2576127e2612fe5565b6127f5601f8201601f1916602001612eae565b81815284602083860101111561280a57600080fd5b816020850160208301376000918101602001919091529392505050565b80356004811061283657600080fd5b919050565b60006020828403121561284d57600080fd5b813561285881612ffb565b9392505050565b60006020828403121561287157600080fd5b815161285881612ffb565b6000806000806000806000610100888a03121561289857600080fd5b6128a289896126ba565b96506128b060408901612827565b9550606088013594506080880135935060a08801356128ce81612ffb565b925060c08801356128de81612ffb565b915060e088013567ffffffffffffffff8111156128fa57600080fd5b6129068a828b016127b7565b91505092959891949750929550565b60008060008060008060008060006101408a8c03121561293457600080fd5b61293e8b8b6126ba565b985061294c60408b01612827565b975060608a0135965060808a0135955060a08a013561296a81612ffb565b945060c08a013561297a81612ffb565b935060e08a013567ffffffffffffffff81111561299657600080fd5b6129a28c828d016127b7565b9350506101008a013591506101208a013590509295985092959850929598565b600080600080600080600080610140808a8c0312156129e057600080fd5b893567ffffffffffffffff8111156129f757600080fd5b612a038c828d0161273c565b9950506020612a13818c01612827565b985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135612a3f81612ffb565b935060ff8b018c13612a5057600080fd5b612a58612e85565b8060e08d018e858f011115612a6c57600080fd5b600094505b6003851015612a90578035835260019490940193918301918301612a71565b50809450505050509295985092959890939650565b60006020808385031215612ab857600080fd5b825167ffffffffffffffff811115612acf57600080fd5b8301601f81018513612ae057600080fd5b8051612aee61275d82612edf565b80828252848201915084840188868560051b8701011115612b0e57600080fd5b600094505b83851015612b31578051835260019490940193918501918501612b13565b50979650505050505050565b600060208284031215612b4f57600080fd5b8151801515811461285857600080fd5b600080600080600080600080610100898b031215612b7c57600080fd5b612b8589612827565b9750602089013567ffffffffffffffff811115612ba157600080fd5b612bad8b828c0161273c565b97505060408901359550606089013594506080890135935060a0890135612bd381612ffb565b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215612c0257600080fd5b5035919050565b600060208284031215612c1b57600080fd5b5051919050565b60008060008060008060c08789031215612c3b57600080fd5b86359550602087013567ffffffffffffffff811115612c5957600080fd5b612c6589828a0161273c565b955050604087013593506060870135612c7d81612ffb565b9598949750929560808101359460a0909101359350915050565b600081518084526020808501945080840160005b83811015612cd05781516001600160a01b031687529582019590820190600101612cab565b509495945050505050565b60008251612ced818460208701612f73565b9190910192915050565b6001600160a01b03978816815295871660208701526040860194909452919094166060840152608083019390935260a082019290925260c081019190915260e00190565b600060018060a01b038087168352808616602084015250836040830152608060608301528251806080840152612d788160a0850160208701612f73565b601f01601f19169190910160a00195945050505050565b848152608060208201526000612da86080830186612c97565b6001600160a01b03949094166040830152506060015292915050565b6020808252600990820152682737ba1027bbb732b960b91b604082015260600190565b6020808252601f908201527f5061796d656e74203d206173736574496e4f666665726564202b206665657300604082015260600190565b6020808252601190820152701999595cc81b9bdd081c9958d95a5d9959607a1b604082015260600190565b85815284602082015260a060408201526000612e6860a0830186612c97565b6001600160a01b0394909416606083015250608001529392505050565b6040516060810167ffffffffffffffff81118282101715612ea857612ea8612fe5565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ed757612ed7612fe5565b604052919050565b600067ffffffffffffffff821115612ef957612ef9612fe5565b5060051b60200190565b60008219821115612f1657612f16612fa3565b500190565b600082612f3857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612f5757612f57612fa3565b500290565b600082821015612f6e57612f6e612fa3565b500390565b60005b83811015612f8e578181015183820152602001612f76565b83811115612f9d576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461068557600080fdfea264697066735822122041f06931924a09455dc4c7c8eb59ec788df47ebb863353a1905af2a01caa3a2264736f6c634300080700330000000000000000000000005eb3a5b2f0017debf5307f279eef58d3461b124000000000000000000000000036155633f72e34f855f128e7ef5beb214b7c27f5000000000000000000000000a75dca2cf0e8f2d536f7fac4e11a60c146ae7433
Deployed Bytecode
0x6080604052600436106101d75760003560e01c80637944f944116101025780639c9bb1e311610095578063c54e44eb11610064578063c54e44eb14610517578063de1881a814610537578063efdcd9741461054d578063f2fde38b1461056d57600080fd5b80639c9bb1e3146104a4578063b3f00674146104c4578063c34e596f146104e4578063c3d730181461050457600080fd5b8063901bd2cc116100d1578063901bd2cc1461042f5780639461446d1461044f57806395bf75fd1461046f57806399d32fc41461048f57600080fd5b80637944f944146103b15780638a77ba1a146103d15780638da5cb5b146103f15780638f32d59b1461040f57600080fd5b806342d5350b1161017a5780635af9e7c9116101495780635af9e7c914610347578063647762761461035c57806369fb10751461037c578063715018a61461039c57600080fd5b806342d5350b146102c4578063447f25ef146102e457806354cf428a14610307578063558377571461032757600080fd5b80632ffda2b4116101b65780632ffda2b41461025b5780633500ac411461026e5780633d45b7f31461029e5780634061215d146102b157600080fd5b8062ae3bf8146101dc5780630660acb4146101fe5780632a94a9c81461023b575b600080fd5b3480156101e857600080fd5b506101fc6101f736600461283b565b61058d565b005b34801561020a57600080fd5b5060015461021e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024757600080fd5b506101fc61025636600461283b565b610688565b6101fc610269366004612b5f565b6106d4565b34801561027a57600080fd5b5061028e610289366004612c22565b6107cb565b6040519015158152602001610232565b6101fc6102ac366004612915565b610876565b6101fc6102bf36600461287c565b610bfd565b3480156102d057600080fd5b50600a5461021e906001600160a01b031681565b3480156102f057600080fd5b506102f9610d81565b604051908152602001610232565b34801561031357600080fd5b5060055461021e906001600160a01b031681565b34801561033357600080fd5b506101fc61034236600461283b565b610d97565b34801561035357600080fd5b506007546102f9565b34801561036857600080fd5b506101fc61037736600461283b565b610de3565b34801561038857600080fd5b506101fc610397366004612bf0565b610e2f565b3480156103a857600080fd5b506101fc610e5e565b3480156103bd57600080fd5b50600c5461021e906001600160a01b031681565b3480156103dd57600080fd5b50600b5461021e906001600160a01b031681565b3480156103fd57600080fd5b506000546001600160a01b031661021e565b34801561041b57600080fd5b506000546001600160a01b0316331461028e565b34801561043b57600080fd5b5060025461021e906001600160a01b031681565b34801561045b57600080fd5b506101fc61046a366004612bf0565b610ed2565b34801561047b57600080fd5b5060045461021e906001600160a01b031681565b34801561049b57600080fd5b506102f9610f55565b3480156104b057600080fd5b506101fc6104bf36600461283b565b610fec565b3480156104d057600080fd5b5060095461021e906001600160a01b031681565b3480156104f057600080fd5b506101fc6104ff36600461283b565b611038565b6101fc6105123660046129c2565b611084565b34801561052357600080fd5b5060035461021e906001600160a01b031681565b34801561054357600080fd5b506102f960065481565b34801561055957600080fd5b506101fc61056836600461283b565b611470565b34801561057957600080fd5b506101fc61058836600461283b565b6114bc565b6000546001600160a01b031633146105c05760405162461bcd60e51b81526004016105b790612dc4565b60405180910390fd5b6001600160a01b0381166105fe5760405133904780156108fc02916000818181858888f193505050501580156105fa573d6000803e3d6000fd5b5050565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561064057600080fd5b505afa158015610654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106789190612c09565b90506105fa8233836114ef565b50565b6000546001600160a01b031633146106b25760405162461bcd60e51b81526004016105b790612dc4565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60005a90506000826106f0576007546106ed9042612f03565b92505b60008a600381111561070457610704612fb9565b141561074f576107148789612f03565b3410156107335760405162461bcd60e51b81526004016105b790612de7565b8761073e3483612f03565b6107489190612f5c565b90506107a1565b8634101561076f5760405162461bcd60e51b81526004016105b790612e1e565b6107793482612f03565b90506107a18960008151811061079157610791612fcf565b602002602001015133308b61160a565b6107b08a8a8a8933898961173a565b506107bf828260008833611fcd565b50505050505050505050565b600c546000906001600160a01b031633146108325760405162461bcd60e51b815260206004820152602160248201527f446567656e203a2063616c6c6572206973206e6f742053776170466163746f726044820152607960f81b60648201526084016105b7565b81610847576007546108449042612f03565b91505b61086887600381111561085c5761085c612fb9565b8787600088888861173a565b506001979650505050505050565b60005a9050600089600381111561088f5761088f612fb9565b9050826108a6576007546108a39042612f03565b92505b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156108ea57600080fd5b505afa1580156108fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109229190612c09565b905060008b600381111561093857610938612fb9565b1480610955575060038b600381111561095357610953612fb9565b145b156109fe57610964898b612f03565b3410156109835760405162461bcd60e51b81526004016105b790612de7565b61098d8a34612f5c565b60055460405163fd6ac30960e01b8152919a506001600160a01b03169063fd6ac309908c906109c7908b9060009084908d90600401612d3b565b6000604051808303818588803b1580156109e057600080fd5b505af11580156109f4573d6000803e3d6000fd5b5050505050610aa6565b88341015610a1e5760405162461bcd60e51b81526004016105b790612e1e565b8b51600554349a50610a3c919033906001600160a01b03168d61160a565b6005548c5160405163fd6ac30960e01b81526001600160a01b039092169163fd6ac30991610a73918b91908f908c90600401612d3b565b600060405180830381600087803b158015610a8d57600080fd5b505af1158015610aa1573d6000803e3d6000fd5b505050505b6003546040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190612c09565b610b2b9190612f5c565b600354600c54919250610b4b916001600160a01b03918216911683612409565b600c5460035460208e015160405163f73d640d60e01b81526001600160a01b039384169363f73d640d93610b8e939116918690339089908d908d90600401612cf7565b602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be09190612b3d565b50610bef838a60008b33611fcd565b505050505050505050505050565b60005a9050600080886003811115610c1757610c17612fb9565b1415610cc157610c278688612f03565b341015610c465760405162461bcd60e51b81526004016105b790612de7565b610c508734612f5c565b60055460405163fd6ac30960e01b81529192506001600160a01b03169063fd6ac309908990610c8a90889060009084908a90600401612d3b565b6000604051808303818588803b158015610ca357600080fd5b505af1158015610cb7573d6000803e3d6000fd5b5050505050610d68565b85341015610ce15760405162461bcd60e51b81526004016105b790612e1e565b5087516005543491610cfe9133906001600160a01b03168a61160a565b600554895160405163fd6ac30960e01b81526001600160a01b039092169163fd6ac30991610d35918891908c908990600401612d3b565b600060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050505b610d76828260008833611fcd565b505050505050505050565b60006001600854610d929190612f5c565b905090565b6000546001600160a01b03163314610dc15760405162461bcd60e51b81526004016105b790612dc4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e0d5760405162461bcd60e51b81526004016105b790612dc4565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e595760405162461bcd60e51b81526004016105b790612dc4565b600755565b6000546001600160a01b03163314610e885760405162461bcd60e51b81526004016105b790612dc4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004546001600160a01b0316331480610f04575033610ef96000546001600160a01b031690565b6001600160a01b0316145b610f505760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f74207468652073797374656d000000000000000060448201526064016105b7565b600655565b6009546000906001600160a01b03163314610fc95760405162461bcd60e51b815260206004820152602e60248201527f54686973206665652063616e20626520636c61696d6564206f6e6c792062792060448201526d666565207265636569766572212160901b60648201526084016105b7565b6001600854610fd89190612f5c565b60016008559050610fe9338261251d565b90565b6000546001600160a01b031633146110165760405162461bcd60e51b81526004016105b790612dc4565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110625760405162461bcd60e51b81526004016105b790612dc4565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61108c61269c565b5a81526000602082015260408201516110b2576007546110ac9042612f03565b60408301525b60008860038111156110c6576110c6612fb9565b1415611169576006546110d98688612f03565b6110e39190612f03565b34101561114a5760405162461bcd60e51b815260206004820152602f60248201527f5061796d656e74203d206173736574496e4f666665726564202b20666565732060448201526e2b2070726f63657373696e6746656560881b60648201526084016105b7565b846111558734612f5c565b61115f9190612f5c565b60208201526111cb565b6006546111769086612f03565b3410156111955760405162461bcd60e51b81526004016105b790612e1e565b61119f8534612f5c565b602082015288516111cb908a906000906111bb576111bb612fcf565b602002602001015133308961160a565b60035489516001600160a01b03909116908a906000906111ed576111ed612fcf565b60200260200101516001600160a01b0316141561130057600354600c54611221916001600160a01b03908116911688612409565b600c546003548a516001600160a01b039283169263f73d640d9216908c9061124b90600190612f5c565b8151811061125b5761125b612fcf565b602002602001015189338c8860016003811061127957611279612fcf565b602002015189600260200201516040518863ffffffff1660e01b81526004016112a89796959493929190612cf7565b602060405180830381600087803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fa9190612b3d565b5061145b565b60008960018b516113119190612f5c565b8151811061132157611321612fcf565b60200260200101519050600360009054906101000a90046001600160a01b03168a60018c516113509190612f5c565b8151811061136057611360612fcf565b6001600160a01b039092166020928302919091019091015260006113968a8c8a8930898760200201518a6002602002015161173a565b600354600c549192506113b6916001600160a01b03918216911683612409565b600c546003546001600160a01b039182169163f73d640d91168484338e8a600160200201518b600260200201516040518863ffffffff1660e01b81526004016114059796959493929190612cf7565b602060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114579190612b3d565b5050505b80516020820151610d76919087908633611fcd565b6000546001600160a01b0316331461149a5760405162461bcd60e51b81526004016105b790612dc4565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114e65760405162461bcd60e51b81526004016105b790612dc4565b610685816125eb565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161154b9190612cdb565b6000604051808303816000865af19150503d8060008114611588576040519150601f19603f3d011682016040523d82523d6000602084013e61158d565b606091505b50915091508180156115b75750805115806115b75750808060200190518101906115b79190612b3d565b6116035760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016105b7565b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169161166e9190612cdb565b6000604051808303816000865af19150503d80600081146116ab576040519150601f19603f3d011682016040523d82523d6000602084013e6116b0565b606091505b50915091508180156116da5750805115806116da5750808060200190518101906116da9190612b3d565b6117325760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b60648201526084016105b7565b505050505050565b60006002831061177e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204445582049642160881b60448201526064016105b7565b428210156117e85760405162461bcd60e51b815260206004820152603160248201527f455850495245443a20446561646c696e6520666f72207472616e73616374696f604482015270371030b63932b0b23c903830b9b9b2b21760791b60648201526084016105b7565b82611bd6576060600089600381111561180357611803612fb9565b141561194557600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561185757600080fd5b505afa15801561186b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188f919061285f565b886000815181106118a2576118a2612fcf565b6001600160a01b039283166020918202929092010152600154604051637ff36ab560e01b8152911690637ff36ab59089906118e8906000908d908b904290600401612d8f565b6000604051808303818588803b15801561190157600080fd5b505af1158015611915573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261193e9190810190612aa5565b9050611ba7565b600189600381111561195957611959612fb9565b1415611ae657600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e5919061285f565b8860018a516119f49190612f5c565b81518110611a0457611a04612fcf565b60200260200101906001600160a01b031690816001600160a01b031681525050611a5788600081518110611a3a57611a3a612fcf565b60209081029190910101516001546001600160a01b031689612409565b6001546040516318cbafe560e01b81526001600160a01b03909116906318cbafe590611a90908a906000908d908b904290600401612e49565b600060405180830381600087803b158015611aaa57600080fd5b505af1158015611abe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261193e9190810190612aa5565b6002896003811115611afa57611afa612fb9565b1415611ba757611b1688600081518110611a3a57611a3a612fcf565b6001546040516338ed173960e01b81526001600160a01b03909116906338ed173990611b4e908a908a908d908b904290600401612e49565b600060405180830381600087803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ba49190810190612aa5565b90505b8060018251611bb69190612f5c565b81518110611bc657611bc6612fcf565b6020026020010151915050611fc2565b8260011415611fc25760606000896003811115611bf557611bf5612fb9565b1415611d3657600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c4957600080fd5b505afa158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c81919061285f565b88600081518110611c9457611c94612fcf565b6001600160a01b039283166020918202929092010152600254604051637ff36ab560e01b8152911690637ff36ab5908990611cd9908a908d908b904290600401612d8f565b6000604051808303818588803b158015611cf257600080fd5b505af1158015611d06573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611d2f9190810190612aa5565b9050611f97565b6001896003811115611d4a57611d4a612fb9565b1415611ed657600260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9e57600080fd5b505afa158015611db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd6919061285f565b8860018a51611de59190612f5c565b81518110611df557611df5612fcf565b60200260200101906001600160a01b031690816001600160a01b031681525050611e4888600081518110611e2b57611e2b612fcf565b60209081029190910101516002546001600160a01b031689612409565b6002546040516318cbafe560e01b81526001600160a01b03909116906318cbafe590611e80908a908a908d908b904290600401612e49565b600060405180830381600087803b158015611e9a57600080fd5b505af1158015611eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2f9190810190612aa5565b6002896003811115611eea57611eea612fb9565b1415611f9757611f0688600081518110611e2b57611e2b612fcf565b6002546040516338ed173960e01b81526001600160a01b03909116906338ed173990611f3e908a908a908d908b904290600401612e49565b600060405180830381600087803b158015611f5857600080fd5b505af1158015611f6c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f949190810190612aa5565b90505b8060018251611fa69190612f5c565b81518110611fb657611fb6612fcf565b60200260200101519150505b979650505050505050565b600a546001600160a01b031661206257831561201b576040516001600160a01b0382169085156108fc029086906000818181858888f19350505050158015612019573d6000803e3d6000fd5b505b821561205d576004546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561205b573d6000803e3d6000fd5b505b611603565b60006001600160a01b038316156122cd57600a54600b5460405163016175dd60e51b81526001600160a01b0391821660048201523060248201526000929190911690632c2ebba09060440160206040518083038186803b1580156120c557600080fd5b505afa1580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190612c09565b600a5460405163016175dd60e51b81526001600160a01b03878116600483015230602483015292935060009290911690632c2ebba09060440160206040518083038186803b15801561214e57600080fd5b505afa158015612162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121869190612c09565b905080156121af576121988282612f03565b6121a28289612f3d565b6121ac9190612f1b565b92505b82156122ca57600a546040516305c2b27f60e21b81526001600160a01b038681166004830152602482018690528781166044830152600092169063170ac9fc90606401602060405180830381600087803b15801561220c57600080fd5b505af1158015612220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612244919061285f565b90506001600160a01b038116612290576040516001600160a01b0386169085156108fc029086906000818181858888f1935050505015801561228a573d6000803e3d6000fd5b506122c8565b6040516001600160a01b0382169085156108fc029086906000818181858888f193505050501580156122c6573d6000803e3d6000fd5b505b505b50505b6122d78186612f5c565b945084600860008282546122eb9190612f03565b90915550508315612332576004546040516001600160a01b039091169085156108fc029086906000818181858888f19350505050158015612330573d6000803e3d6000fd5b505b5a61233d9087612f5c565b95506123493a87612f3d565b600a549096506001600160a01b031663170ac9fc83866123698a8a612f03565b6123739190612f03565b600b5460405160e085901b6001600160e01b03191681526001600160a01b0393841660048201526024810192909252919091166044820152606401602060405180830381600087803b1580156123c857600080fd5b505af11580156123dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612400919061285f565b50505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291516000928392908716916124659190612cdb565b6000604051808303816000865af19150503d80600081146124a2576040519150601f19603f3d011682016040523d82523d6000602084013e6124a7565b606091505b50915091508180156124d15750805115806124d15750808060200190518101906124d19190612b3d565b6116035760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c4544000060448201526064016105b7565b604080516000808252602082019092526001600160a01b0384169083906040516125479190612cdb565b60006040518083038185875af1925050503d8060008114612584576040519150601f19603f3d011682016040523d82523d6000602084013e612589565b606091505b50509050806125e65760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b60648201526084016105b7565b505050565b6001600160a01b0381166126415760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064016105b7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60405180604001604052806002906020820280368337509192915050565b600082601f8301126126cb57600080fd5b6040516040810181811067ffffffffffffffff821117156126ee576126ee612fe5565b806040525080838560408601111561270557600080fd5b60005b600281101561273157813561271c81612ffb565b83526020928301929190910190600101612708565b509195945050505050565b600082601f83011261274d57600080fd5b8135602061276261275d83612edf565b612eae565b80838252828201915082860187848660051b890101111561278257600080fd5b60005b858110156127aa57813561279881612ffb565b84529284019290840190600101612785565b5090979650505050505050565b600082601f8301126127c857600080fd5b813567ffffffffffffffff8111156127e2576127e2612fe5565b6127f5601f8201601f1916602001612eae565b81815284602083860101111561280a57600080fd5b816020850160208301376000918101602001919091529392505050565b80356004811061283657600080fd5b919050565b60006020828403121561284d57600080fd5b813561285881612ffb565b9392505050565b60006020828403121561287157600080fd5b815161285881612ffb565b6000806000806000806000610100888a03121561289857600080fd5b6128a289896126ba565b96506128b060408901612827565b9550606088013594506080880135935060a08801356128ce81612ffb565b925060c08801356128de81612ffb565b915060e088013567ffffffffffffffff8111156128fa57600080fd5b6129068a828b016127b7565b91505092959891949750929550565b60008060008060008060008060006101408a8c03121561293457600080fd5b61293e8b8b6126ba565b985061294c60408b01612827565b975060608a0135965060808a0135955060a08a013561296a81612ffb565b945060c08a013561297a81612ffb565b935060e08a013567ffffffffffffffff81111561299657600080fd5b6129a28c828d016127b7565b9350506101008a013591506101208a013590509295985092959850929598565b600080600080600080600080610140808a8c0312156129e057600080fd5b893567ffffffffffffffff8111156129f757600080fd5b612a038c828d0161273c565b9950506020612a13818c01612827565b985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135612a3f81612ffb565b935060ff8b018c13612a5057600080fd5b612a58612e85565b8060e08d018e858f011115612a6c57600080fd5b600094505b6003851015612a90578035835260019490940193918301918301612a71565b50809450505050509295985092959890939650565b60006020808385031215612ab857600080fd5b825167ffffffffffffffff811115612acf57600080fd5b8301601f81018513612ae057600080fd5b8051612aee61275d82612edf565b80828252848201915084840188868560051b8701011115612b0e57600080fd5b600094505b83851015612b31578051835260019490940193918501918501612b13565b50979650505050505050565b600060208284031215612b4f57600080fd5b8151801515811461285857600080fd5b600080600080600080600080610100898b031215612b7c57600080fd5b612b8589612827565b9750602089013567ffffffffffffffff811115612ba157600080fd5b612bad8b828c0161273c565b97505060408901359550606089013594506080890135935060a0890135612bd381612ffb565b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215612c0257600080fd5b5035919050565b600060208284031215612c1b57600080fd5b5051919050565b60008060008060008060c08789031215612c3b57600080fd5b86359550602087013567ffffffffffffffff811115612c5957600080fd5b612c6589828a0161273c565b955050604087013593506060870135612c7d81612ffb565b9598949750929560808101359460a0909101359350915050565b600081518084526020808501945080840160005b83811015612cd05781516001600160a01b031687529582019590820190600101612cab565b509495945050505050565b60008251612ced818460208701612f73565b9190910192915050565b6001600160a01b03978816815295871660208701526040860194909452919094166060840152608083019390935260a082019290925260c081019190915260e00190565b600060018060a01b038087168352808616602084015250836040830152608060608301528251806080840152612d788160a0850160208701612f73565b601f01601f19169190910160a00195945050505050565b848152608060208201526000612da86080830186612c97565b6001600160a01b03949094166040830152506060015292915050565b6020808252600990820152682737ba1027bbb732b960b91b604082015260600190565b6020808252601f908201527f5061796d656e74203d206173736574496e4f666665726564202b206665657300604082015260600190565b6020808252601190820152701999595cc81b9bdd081c9958d95a5d9959607a1b604082015260600190565b85815284602082015260a060408201526000612e6860a0830186612c97565b6001600160a01b0394909416606083015250608001529392505050565b6040516060810167ffffffffffffffff81118282101715612ea857612ea8612fe5565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612ed757612ed7612fe5565b604052919050565b600067ffffffffffffffff821115612ef957612ef9612fe5565b5060051b60200190565b60008219821115612f1657612f16612fa3565b500190565b600082612f3857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612f5757612f57612fa3565b500290565b600082821015612f6e57612f6e612fa3565b500390565b60005b83811015612f8e578181015183820152602001612f76565b83811115612f9d576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461068557600080fdfea264697066735822122041f06931924a09455dc4c7c8eb59ec788df47ebb863353a1905af2a01caa3a2264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005eb3a5b2f0017debf5307f279eef58d3461b124000000000000000000000000036155633f72e34f855f128e7ef5beb214b7c27f5000000000000000000000000a75dca2cf0e8f2d536f7fac4e11a60c146ae7433
-----Decoded View---------------
Arg [0] : _swapFactory (address): 0x5eb3A5B2f0017DEBf5307F279EEf58D3461B1240
Arg [1] : _system (address): 0x36155633f72e34F855F128e7ef5bEB214B7c27f5
Arg [2] : _contractCaller (address): 0xa75DCa2CF0e8f2D536F7Fac4E11A60C146aE7433
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000005eb3a5b2f0017debf5307f279eef58d3461b1240
Arg [1] : 00000000000000000000000036155633f72e34f855f128e7ef5beb214b7c27f5
Arg [2] : 000000000000000000000000a75dca2cf0e8f2d536f7fac4e11a60c146ae7433
Deployed Bytecode Sourcemap
4898:16928:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21477:344;;;;;;;;;;-1:-1:-1;21477:344:0;;;;;:::i;:::-;;:::i;:::-;;5053:66;;;;;;;;;;-1:-1:-1;5053:66:0;;;;-1:-1:-1;;;;;5053:66:0;;;;;;-1:-1:-1;;;;;10306:32:1;;;10288:51;;10276:2;10261:18;5053:66:0;;;;;;;;6664:122;;;;;;;;;;-1:-1:-1;6664:122:0;;;;;:::i;:::-;;:::i;13226:1113::-;;;;;;:::i;:::-;;:::i;16505:542::-;;;;;;;;;;-1:-1:-1;16505:542:0;;;;;:::i;:::-;;:::i;:::-;;;13199:14:1;;13192:22;13174:41;;13162:2;13147:18;16505:542:0;13034:187:1;19384:1964:0;;;;;;:::i;:::-;;:::i;17555:1283::-;;;;;;:::i;:::-;;:::i;6053:43::-;;;;;;;;;;-1:-1:-1;6053:43:0;;;;-1:-1:-1;;;;;6053:43:0;;;7842:217;;;;;;;;;;;;;:::i;:::-;;;19837:25:1;;;19825:2;19810:18;7842:217:0;19691:177:1;5681:29:0;;;;;;;;;;-1:-1:-1;5681:29:0;;;;-1:-1:-1;;;;;5681:29:0;;;7359:90;;;;;;;;;;-1:-1:-1;7359:90:0;;;;;:::i;:::-;;:::i;7569:96::-;;;;;;;;;;-1:-1:-1;7644:13:0;;7569:96;;6920:166;;;;;;;;;;-1:-1:-1;6920:166:0;;;;;:::i;:::-;;:::i;7677:100::-;;;;;;;;;;-1:-1:-1;7677:100:0;;;;;:::i;:::-;;:::i;1247:140::-;;;;;;;;;;;;;:::i;6256:31::-;;;;;;;;;;-1:-1:-1;6256:31:0;;;;-1:-1:-1;;;;;6256:31:0;;;6144:27;;;;;;;;;;-1:-1:-1;6144:27:0;;;;-1:-1:-1;;;;;6144:27:0;;;522:79;;;;;;;;;;-1:-1:-1;560:7:0;587:6;-1:-1:-1;;;;;587:6:0;522:79;;869:92;;;;;;;;;;-1:-1:-1;909:4:0;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;869:92;;5192:68;;;;;;;;;;-1:-1:-1;5192:68:0;;;;-1:-1:-1;;;;;5192:68:0;;;7094:121;;;;;;;;;;-1:-1:-1;7094:121:0;;;;;:::i;:::-;;:::i;5653:21::-;;;;;;;;;;-1:-1:-1;5653:21:0;;;;-1:-1:-1;;;;;5653:21:0;;;8101:300;;;;;;;;;;;;;:::i;6798:114::-;;;;;;;;;;-1:-1:-1;6798:114:0;;;;;:::i;:::-;;:::i;5957:26::-;;;;;;;;;;-1:-1:-1;5957:26:0;;;;-1:-1:-1;;;;;5957:26:0;;;7223:124;;;;;;;;;;-1:-1:-1;7223:124:0;;;;;:::i;:::-;;:::i;14351:2146::-;;;;;;:::i;:::-;;:::i;5551:73::-;;;;;;;;;;-1:-1:-1;5551:73:0;;;;-1:-1:-1;;;;;5551:73:0;;;5717:32;;;;;;;;;;;;;;;;7461:96;;;;;;;;;;-1:-1:-1;7461:96:0;;;;;:::i;:::-;;:::i;1564:109::-;;;;;;;;;;-1:-1:-1;1564:109:0;;;;;:::i;:::-;;:::i;21477:344::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;21549:20:0;::::1;21545:269;;21586:51;::::0;21594:10:::1;::::0;21615:21:::1;21586:51:::0;::::1;;;::::0;::::1;::::0;;;21615:21;21594:10;21586:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21477:344:::0;:::o;21545:269::-:1;21690:39;::::0;-1:-1:-1;;;21690:39:0;;21723:4:::1;21690:39;::::0;::::1;10288:51:1::0;21670:17:0::1;::::0;-1:-1:-1;;;;;21690:24:0;::::1;::::0;::::1;::::0;10261:18:1;;21690:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21670:59;;21744:58;21772:6;21780:10;21792:9;21744:27;:58::i;21545:269::-;21477:344:::0;:::o;6664:122::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;6746:14:::1;:32:::0;;-1:-1:-1;;;;;;6746:32:0::1;-1:-1:-1::0;;;;;6746:32:0;;;::::1;::::0;;;::::1;::::0;;6664:122::o;13226:1113::-;13523:12;13538:9;13523:24;-1:-1:-1;13558:20:0;13596:13;13593:87;;13655:13;;13637:31;;:15;:31;:::i;:::-;13626:42;;13593:87;13716:22;13703:9;:35;;;;;;;;:::i;:::-;;13700:449;;;13776:21;13793:4;13776:14;:21;:::i;:::-;13762:9;:36;;13754:80;;;;-1:-1:-1;;;13754:80:0;;;;;;;:::i;:::-;13891:14;13864:24;13879:9;13864:12;:24;:::i;:::-;:41;;;;:::i;:::-;13849:56;;13700:449;;;13959:4;13946:9;:17;;13938:47;;;;-1:-1:-1;;;13938:47:0;;;;;;;:::i;:::-;14015:24;14030:9;14015:12;:24;:::i;:::-;14000:39;;14054:83;14086:4;14091:1;14086:7;;;;;;;;:::i;:::-;;;;;;;14095:10;14115:4;14122:14;14054:31;:83::i;:::-;14169:86;14175:9;14186:4;14192:14;14208:17;14227:10;14239:5;14246:8;14169:5;:86::i;:::-;;14271:60;14282:4;14288:12;14302:1;14305:13;14320:10;14271;:60::i;:::-;13512:827;;13226:1113;;;;;;;;:::o;16505:542::-;16776:11;;16729:4;;-1:-1:-1;;;;;16776:11:0;16754:10;:34;16746:81;;;;-1:-1:-1;;;16746:81:0;;18322:2:1;16746:81:0;;;18304:21:1;18361:2;18341:18;;;18334:30;18400:34;18380:18;;;18373:62;-1:-1:-1;;;18451:18:1;;;18444:31;18492:19;;16746:81:0;18120:397:1;16746:81:0;16841:11;16838:85;;16898:13;;16880:31;;:15;:31;:::i;:::-;16869:42;;16838:85;16933:84;16949:9;16939:20;;;;;;;;:::i;:::-;16961:4;16967:14;16991:1;16995:4;17001:5;17008:8;16933:5;:84::i;:::-;-1:-1:-1;17035:4:0;;16505:542;-1:-1:-1;;;;;;;16505:542:0:o;19384:1964::-;19925:12;19940:9;19925:24;;19960:23;19994:14;19986:23;;;;;;;;:::i;:::-;19960:49;-1:-1:-1;20033:11:0;20030:85;;20090:13;;20072:31;;:15;:31;:::i;:::-;20061:42;;20030:85;20164:4;;20157:37;;-1:-1:-1;;;20157:37:0;;20188:4;20157:37;;;10288:51:1;20135:19:0;;-1:-1:-1;;;;;20164:4:0;;20157:22;;10261:18:1;;20157:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20135:59;-1:-1:-1;20235:22:0;20217:14;:40;;;;;;;;:::i;:::-;;:81;;;-1:-1:-1;20279:19:0;20261:14;:37;;;;;;;;:::i;:::-;;20217:81;20214:734;;;20336:21;20353:4;20336:14;:21;:::i;:::-;20322:9;:36;;20314:80;;;;-1:-1:-1;;;20314:80:0;;;;;;;:::i;:::-;20416:26;20428:14;20416:9;:26;:::i;:::-;20473:14;;20457:105;;-1:-1:-1;;;20457:105:0;;20409:33;;-1:-1:-1;;;;;;20473:14:0;;20457:44;;20509:14;;20457:105;;20525:2;;20473:14;;20509;;20557:4;;20457:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20214:734;;;20616:4;20603:9;:17;;20595:47;;;;-1:-1:-1;;;20595:47:0;;;;;;;:::i;:::-;20720:7;;20741:14;;20664:9;;-1:-1:-1;20688:84:0;;20720:7;20729:10;;-1:-1:-1;;;;;20741:14:0;20757;20688:31;:84::i;:::-;20873:14;;20906:7;;20857:79;;-1:-1:-1;;;20857:79:0;;-1:-1:-1;;;;;20873:14:0;;;;20857:44;;:79;;20902:2;;20906:7;20915:14;;20931:4;;20857:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20214:734;20996:4;;20989:37;;-1:-1:-1;;;20989:37:0;;21020:4;20989:37;;;10288:51:1;21029:11:0;;-1:-1:-1;;;;;20996:4:0;;20989:22;;10261:18:1;;20989:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;21124:4;;21138:11;;20975:65;;-1:-1:-1;21097:67:0;;-1:-1:-1;;;;;21124:4:0;;;;21138:11;20975:65;21097:26;:67::i;:::-;21185:11;;21202:4;;21208:7;;;;21185:90;;-1:-1:-1;;;21185:90:0;;-1:-1:-1;;;;;21185:11:0;;;;:16;;:90;;21202:4;;;21217:11;;21230:10;;21242:15;;21259:5;;21266:8;;21185:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21288:52;21299:4;21305;21311:1;21314:13;21329:10;21288;:52::i;:::-;19914:1434;;;19384:1964;;;;;;;;;:::o;17555:1283::-;17975:12;17990:9;17975:24;-1:-1:-1;18010:20:0;;18054:9;:35;;;;;;;;:::i;:::-;;18051:704;;;18127:21;18144:4;18127:14;:21;:::i;:::-;18113:9;:36;;18105:80;;;;-1:-1:-1;;;18105:80:0;;;;;;;:::i;:::-;18215:26;18227:14;18215:9;:26;:::i;:::-;18272:14;;18256:105;;-1:-1:-1;;;18256:105:0;;18200:41;;-1:-1:-1;;;;;;18272:14:0;;18256:44;;18308:14;;18256:105;;18324:2;;18272:14;;18308;;18356:4;;18256:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18051:704;;;18415:4;18402:9;:17;;18394:47;;;;-1:-1:-1;;;18394:47:0;;;;;;;:::i;:::-;-1:-1:-1;18527:7:0;;18548:14;;18471:9;;18495:84;;18536:10;;-1:-1:-1;;;;;18548:14:0;18564;18495:31;:84::i;:::-;18680:14;;18713:7;;18664:79;;-1:-1:-1;;;18664:79:0;;-1:-1:-1;;;;;18680:14:0;;;;18664:44;;:79;;18709:2;;18713:7;18722:14;;18738:4;;18664:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18051:704;18770:60;18781:4;18787:12;18801:1;18804:13;18819:10;18770;:60::i;:::-;17964:874;;17555:1283;;;;;;;:::o;7842:217::-;7892:7;8050:1;8034:13;;:17;;;;:::i;:::-;8027:24;;7842:217;:::o;7359:90::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;7425:6:::1;:16:::0;;-1:-1:-1;;;;;;7425:16:0::1;-1:-1:-1::0;;;;;7425:16:0;;;::::1;::::0;;;::::1;::::0;;7359:90::o;6920:166::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;7016:21:::1;:62:::0;;-1:-1:-1;;;;;;7016:62:0::1;-1:-1:-1::0;;;;;7016:62:0;;;::::1;::::0;;;::::1;::::0;;6920:166::o;7677:100::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;7748:13:::1;:21:::0;7677:100::o;1247:140::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;1346:1:::1;1330:6:::0;;1309:40:::1;::::0;-1:-1:-1;;;;;1330:6:0;;::::1;::::0;1309:40:::1;::::0;1346:1;;1309:40:::1;1377:1;1360:19:::0;;-1:-1:-1;;;;;;1360:19:0::1;::::0;;1247:140::o;7094:121::-;6354:6;;-1:-1:-1;;;;;6354:6:0;6340:10;:20;;:45;;-1:-1:-1;6375:10:0;6364:7;560;587:6;-1:-1:-1;;;;;587:6:0;;522:79;6364:7;-1:-1:-1;;;;;6364:21:0;;6340:45;6332:81;;;;-1:-1:-1;;;6332:81:0;;16508:2:1;6332:81:0;;;16490:21:1;16547:2;16527:18;;;16520:30;16586:26;16566:18;;;16559:54;16630:18;;6332:81:0;16306:348:1;6332:81:0;7176:13:::1;:31:::0;7094:121::o;8101:300::-;8191:11;;8139:17;;-1:-1:-1;;;;;8191:11:0;8177:10;:25;8169:84;;;;-1:-1:-1;;;8169:84:0;;15397:2:1;8169:84:0;;;15379:21:1;15436:2;15416:18;;;15409:30;15475:34;15455:18;;;15448:62;-1:-1:-1;;;15526:18:1;;;15519:44;15580:19;;8169:84:0;15195:410:1;8169:84:0;8292:1;8276:13;;:17;;;;:::i;:::-;8320:1;8304:13;:17;8264:29;-1:-1:-1;8340:53:0;8371:10;8264:29;8340:30;:53::i;:::-;8101:300;:::o;6798:114::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;6876:12:::1;:28:::0;;-1:-1:-1;;;;;;6876:28:0::1;-1:-1:-1::0;;;;;6876:28:0;;;::::1;::::0;;;::::1;::::0;;6798:114::o;7223:124::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;7299:11:::1;:40:::0;;-1:-1:-1;;;;;;7299:40:0::1;-1:-1:-1::0;;;;;7299:40:0;;;::::1;::::0;;;::::1;::::0;;7223:124::o;14351:2146::-;14789:27;;:::i;:::-;14842:9;14827:24;;14837:1;14827:12;14890;;:16;14964:17;;;;14960:159;;15094:13;;15076:31;;:15;:31;:::i;:::-;15056:17;;;:51;14960:159;15147:22;15134:9;:35;;;;;;;;:::i;:::-;;15131:483;;;15231:13;;15207:21;15224:4;15207:14;:21;:::i;:::-;:37;;;;:::i;:::-;15193:9;:52;;15185:112;;;;-1:-1:-1;;;15185:112:0;;14981:2:1;15185:112:0;;;14963:21:1;15020:2;15000:18;;;14993:30;15059:34;15039:18;;;15032:62;-1:-1:-1;;;15110:18:1;;;15103:45;15165:19;;15185:112:0;14779:411:1;15185:112:0;15356:4;15327:26;15339:14;15327:9;:26;:::i;:::-;:33;;;;:::i;:::-;15312:12;;;:48;15131:483;;;15422:13;;15415:20;;:4;:20;:::i;:::-;15401:9;:35;;15393:65;;;;-1:-1:-1;;;15393:65:0;;;;;;;:::i;:::-;15488:16;15500:4;15488:9;:16;:::i;:::-;15473:12;;;:31;15551:7;;15519:83;;15551:7;;15556:1;;15551:7;;;;:::i;:::-;;;;;;;15560:10;15580:4;15587:14;15519:31;:83::i;:::-;15648:4;;15637:7;;-1:-1:-1;;;;;15648:4:0;;;;15637;;15648;;15637:7;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15637:15:0;;15634:764;;;15696:4;;15710:11;;15669:70;;-1:-1:-1;;;;;15696:4:0;;;;15710:11;15724:14;15669:26;:70::i;:::-;15754:11;;15771:4;;15782:11;;-1:-1:-1;;;;;15754:11:0;;;;:16;;15771:4;;15777;;15782:13;;15754:11;;15782:13;:::i;:::-;15777:19;;;;;;;;:::i;:::-;;;;;;;15798:14;15814:10;15826:14;15842;15857:1;15842:17;;;;;;;:::i;:::-;;;;;15861:14;15876:1;15861:17;;;;15754:125;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15634:764;;;15921:14;15938:4;15955:1;15943:4;:11;:13;;;;:::i;:::-;15938:19;;;;;;;;:::i;:::-;;;;;;;15921:36;;15994:4;;;;;;;;;-1:-1:-1;;;;;15994:4:0;15972;15989:1;15977:4;:11;:13;;;;:::i;:::-;15972:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15972:26:0;;;:19;;;;;;;;;;;:26;16013:25;16041:110;16047:9;16058:4;16064:14;16080:17;16107:4;16114:14;16013:25;16114:17;;;;16133:14;16148:1;16133:17;;;;16041:5;:110::i;:::-;16211:4;;16225:11;;16013:138;;-1:-1:-1;16184:72:0;;-1:-1:-1;;;;;16211:4:0;;;;16225:11;16013:138;16184:26;:72::i;:::-;16271:11;;16288:4;;-1:-1:-1;;;;;16271:11:0;;;;:16;;16288:4;16294:6;16302:17;16321:10;16333:14;16349;16271:11;16349:17;;;;16368:14;16383:1;16368:17;;;;16271:115;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15906:492;;15634:764;16429:12;;;16449;;;16418:71;;16429:12;16443:4;;16463:13;16478:10;16418;:71::i;7461:96::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;7530:11:::1;:19:::0;;-1:-1:-1;;;;;;7530:19:0::1;-1:-1:-1::0;;;;;7530:19:0;;;::::1;::::0;;;::::1;::::0;;7461:96::o;1564:109::-;909:4;947:6;-1:-1:-1;;;;;947:6:0;933:10;:20;726:30;;;;-1:-1:-1;;;726:30:0;;;;;;;:::i;:::-;1637:28:::1;1656:8;1637:18;:28::i;2729:297::-:0;2860:45;;;-1:-1:-1;;;;;12567:32:1;;;2860:45:0;;;12549:51:1;12616:18;;;;12609:34;;;2860:45:0;;;;;;;;;;12522:18:1;;;;2860:45:0;;;;;;;-1:-1:-1;;;;;2860:45:0;-1:-1:-1;;;2860:45:0;;;2849:57;;-1:-1:-1;;;;2849:10:0;;;;:57;;2860:45;2849:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2813:93;;;;2925:7;:57;;;;-1:-1:-1;2937:11:0;;:16;;:44;;;2968:4;2957:24;;;;;;;;;;;;:::i;:::-;2917:101;;;;-1:-1:-1;;;2917:101:0;;14621:2:1;2917:101:0;;;14603:21:1;14660:2;14640:18;;;14633:30;14699:33;14679:18;;;14672:61;14750:18;;2917:101:0;14419:355:1;2917:101:0;2802:224;;2729:297;;;:::o;3034:326::-;3183:51;;;-1:-1:-1;;;;;10917:15:1;;;3183:51:0;;;10899:34:1;10969:15;;;10949:18;;;10942:43;11001:18;;;;10994:34;;;3183:51:0;;;;;;;;;;10834:18:1;;;;3183:51:0;;;;;;;-1:-1:-1;;;;;3183:51:0;-1:-1:-1;;;3183:51:0;;;3172:63;;-1:-1:-1;;;;3172:10:0;;;;:63;;3183:51;3172:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3136:99;;;;3254:7;:57;;;;-1:-1:-1;3266:11:0;;:16;;:44;;;3297:4;3286:24;;;;;;;;;;;;:::i;:::-;3246:106;;;;-1:-1:-1;;;3246:106:0;;19488:2:1;3246:106:0;;;19470:21:1;19527:2;19507:18;;;19500:30;19566:34;19546:18;;;19539:62;-1:-1:-1;;;19617:18:1;;;19610:34;19661:19;;3246:106:0;19286:400:1;3246:106:0;3125:235;;3034:326;;;;:::o;10832:2382::-;11078:17;11135:1;11127:5;:9;11119:37;;;;-1:-1:-1;;;11119:37:0;;17221:2:1;11119:37:0;;;17203:21:1;17260:2;17240:18;;;17233:30;-1:-1:-1;;;17279:18:1;;;17272:45;17334:18;;11119:37:0;17019:339:1;11119:37:0;11187:15;11175:8;:27;;11167:89;;;;-1:-1:-1;;;11167:89:0;;18724:2:1;11167:89:0;;;18706:21:1;18763:2;18743:18;;;18736:30;18802:34;18782:18;;;18775:62;-1:-1:-1;;;18853:18:1;;;18846:47;18910:19;;11167:89:0;18522:413:1;11167:89:0;11271:10;11268:1939;;11297:24;11352:22;11339:9;:35;;;;;;;;:::i;:::-;;11336:803;;;11406:3;;;;;;;;;-1:-1:-1;;;;;11406:3:0;-1:-1:-1;;;;;11406:8:0;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11396:4;11401:1;11396:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11396:20:0;;;:7;;;;;;;;;:20;11449:3;;:76;;-1:-1:-1;;;11449:76:0;;:3;;;:25;;11481:14;;11449:76;;:3;;11500:4;;11506:2;;11509:15;;11449:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11449:76:0;;;;;;;;;;;;:::i;:::-;11436:89;;11336:803;;;11577:22;11564:9;:35;;;;;;;;:::i;:::-;;11560:579;;;11642:3;;;;;;;;;-1:-1:-1;;;;;11642:3:0;-1:-1:-1;;;;;11642:8:0;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11620:4;11637:1;11625:4;:11;:13;;;;:::i;:::-;11620:19;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;11620:32:0;;;-1:-1:-1;;;;;11620:32:0;;;;;11671:65;11698:4;11703:1;11698:7;;;;;;;;:::i;:::-;;;;;;;;;;;11715:3;;-1:-1:-1;;;;;11715:3:0;11721:14;11671:26;:65::i;:::-;11768:3;;:70;;-1:-1:-1;;;11768:70:0;;-1:-1:-1;;;;;11768:3:0;;;;:25;;:70;;11794:14;;11768:3;;11813:4;;11818:2;;11822:15;;11768:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11768:70:0;;;;;;;;;;;;:::i;11560:579::-;11890:25;11877:9;:38;;;;;;;;:::i;:::-;;11873:266;;;11936:65;11963:4;11968:1;11963:7;;;;;;;;:::i;11936:65::-;12033:3;;:90;;-1:-1:-1;;;12033:90:0;;-1:-1:-1;;;;;12033:3:0;;;;:28;;:90;;12062:14;;12078:17;;12097:4;;12103:2;;12107:15;;12033:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12033:90:0;;;;;;;;;;;;:::i;:::-;12020:103;;11873:266;12165:10;12196:1;12176:10;:17;:21;;;;:::i;:::-;12165:33;;;;;;;;:::i;:::-;;;;;;;12153:45;;11282:928;11268:1939;;;12219:5;12228:1;12219:10;12216:991;;;12246:24;12301:22;12288:9;:35;;;;;;;;:::i;:::-;;12285:851;;;12355:5;;;;;;;;;-1:-1:-1;;;;;12355:5:0;-1:-1:-1;;;;;12355:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12345:4;12350:1;12345:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12345:22:0;;;:7;;;;;;;;;:22;12400:5;;:95;;-1:-1:-1;;;12400:95:0;;:5;;;:27;;12434:14;;12400:95;;12450:17;;12469:4;;12475:2;;12479:15;;12400:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12400:95:0;;;;;;;;;;;;:::i;:::-;12387:108;;12285:851;;;12547:22;12534:9;:35;;;;;;;;:::i;:::-;;12530:606;;;12612:5;;;;;;;;;-1:-1:-1;;;;;12612:5:0;-1:-1:-1;;;;;12612:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12590:4;12607:1;12595:4;:11;:13;;;;:::i;:::-;12590:19;;;;;;;;:::i;:::-;;;;;;:34;-1:-1:-1;;;;;12590:34:0;;;-1:-1:-1;;;;;12590:34:0;;;;;12643:67;12670:4;12675:1;12670:7;;;;;;;;:::i;:::-;;;;;;;;;;;12687:5;;-1:-1:-1;;;;;12687:5:0;12695:14;12643:26;:67::i;:::-;12742:5;;:89;;-1:-1:-1;;;12742:89:0;;-1:-1:-1;;;;;12742:5:0;;;;:27;;:89;;12770:14;;12786:17;;12805:4;;12811:2;;12815:15;;12742:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12742:89:0;;;;;;;;;;;;:::i;12530:606::-;12883:25;12870:9;:38;;;;;;;;:::i;:::-;;12866:270;;;12929:67;12956:4;12961:1;12956:7;;;;;;;;:::i;12929:67::-;13028:5;;:92;;-1:-1:-1;;;13028:92:0;;-1:-1:-1;;;;;13028:5:0;;;;:30;;:92;;13059:14;;13075:17;;13094:4;;13100:2;;13104:15;;13028:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13028:92:0;;;;;;;;;;;;:::i;:::-;13015:105;;12866:270;13162:10;13193:1;13173:10;:17;:21;;;;:::i;:::-;13162:33;;;;;;;;:::i;:::-;;;;;;;13150:45;;12231:976;12216:991;10832:2382;;;;;;;;;:::o;8954:1860::-;9097:21;;-1:-1:-1;;;;;9097:21:0;9085:305;;9154:14;;9150:53;;9170:33;;-1:-1:-1;;;;;9170:22:0;;;:33;;;;;9193:9;;9170:33;;;;9193:9;9170:22;:33;;;;;;;;;;;;;;;;;;;;;9150:53;9275:15;;9271:57;;9300:6;;9292:36;;-1:-1:-1;;;;;9300:6:0;;;;9292:36;;;;;9317:10;;9300:6;9292:36;9300:6;9292:36;9317:10;9300:6;9292:36;;;;;;;;;;;;;;;;;;;;;9271:57;9372:7;;9085:305;9410:25;-1:-1:-1;;;;;9450:27:0;;;9446:866;;9519:21;;9556:12;;9519:65;;-1:-1:-1;;;9519:65:0;;-1:-1:-1;;;;;9556:12:0;;;9519:65;;;10562:34:1;9578:4:0;10612:18:1;;;10605:43;9494:22:0;;9519:21;;;;;:36;;10497:18:1;;9519:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9625:21;;:66;;-1:-1:-1;;;9625:66:0;;-1:-1:-1;;;;;10580:15:1;;;9625:66:0;;;10562:34:1;9685:4:0;10612:18:1;;;10605:43;9494:90:0;;-1:-1:-1;9599:23:0;;9625:21;;;;:36;;10497:18:1;;9625:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9599:92;-1:-1:-1;9710:20:0;;9706:127;;9800:32;9818:14;9800:15;:32;:::i;:::-;9770:27;9782:15;9770:9;:27;:::i;:::-;9769:64;;;;:::i;:::-;9749:84;;9706:127;9852:22;;9848:453;;9919:21;;:82;;-1:-1:-1;;;9919:82:0;;-1:-1:-1;;;;;12912:15:1;;;9919:82:0;;;12894:34:1;12944:18;;;12937:34;;;13007:15;;;12987:18;;;12980:43;9895:21:0;;9919;;:42;;12829:18:1;;9919:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9895:106;-1:-1:-1;;;;;;10024:27:0;;10020:266;;10076:41;;-1:-1:-1;;;;;10076:22:0;;;:41;;;;;10099:17;;10076:41;;;;10099:17;10076:22;:41;;;;;;;;;;;;;;;;;;;;;10020:266;;;10187:50;;-1:-1:-1;;;;;10187:31:0;;;:50;;;;;10219:17;;10187:50;;;;10219:17;10187:31;:50;;;;;;;;;;;;;;;;;;;;;10020:266;9876:425;9848:453;9479:833;;9446:866;10322:30;10335:17;10322:30;;:::i;:::-;;;10405:9;10388:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;10440:15:0;;10436:71;;10479:6;;10471:36;;-1:-1:-1;;;;;10479:6:0;;;;10471:36;;;;;10496:10;;10479:6;10471:36;10479:6;10471:36;10496:10;10479:6;10471:36;;;;;;;;;;;;;;;;;;;;;10436:71;10566:9;10557:18;;;;:::i;:::-;;-1:-1:-1;10643:19:0;10651:11;10557:18;10643:19;:::i;:::-;10716:21;;10635:27;;-1:-1:-1;;;;;;10716:21:0;:42;10759:4;10781:10;10765:15;10635:27;10765:9;:15;:::i;:::-;:26;;;;:::i;:::-;10793:12;;10716:90;;;;;;-1:-1:-1;;;;;;10716:90:0;;;-1:-1:-1;;;;;12912:15:1;;;10716:90:0;;;12894:34:1;12944:18;;;12937:34;;;;10793:12:0;;;;12987:18:1;;;12980:43;12829:18;;10716:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9074:1740;8954:1860;;;;;:::o;2426:295::-;2556:45;;;-1:-1:-1;;;;;12567:32:1;;;2556:45:0;;;12549:51:1;12616:18;;;;12609:34;;;2556:45:0;;;;;;;;;;12522:18:1;;;;2556:45:0;;;;;;;-1:-1:-1;;;;;2556:45:0;-1:-1:-1;;;2556:45:0;;;2545:57;;-1:-1:-1;;;;2545:10:0;;;;:57;;2556:45;2545:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2509:93;;;;2621:7;:57;;;;-1:-1:-1;2633:11:0;;:16;;:44;;;2664:4;2653:24;;;;;;;;;;;;:::i;:::-;2613:100;;;;-1:-1:-1;;;2613:100:0;;15812:2:1;2613:100:0;;;15794:21:1;15851:2;15831:18;;;15824:30;15890:32;15870:18;;;15863:60;15940:18;;2613:100:0;15610:354:1;3368:200:0;3481:12;;;3441;3481;;;;;;;;;-1:-1:-1;;;;;3459:7:0;;;3474:5;;3459:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3440:54;;;3513:7;3505:55;;;;-1:-1:-1;;;3505:55:0;;17918:2:1;3505:55:0;;;17900:21:1;17957:2;17937:18;;;17930:30;17996:34;17976:18;;;17969:62;-1:-1:-1;;;18047:18:1;;;18040:33;18090:19;;3505:55:0;17716:399:1;3505:55:0;3429:139;3368:200;;:::o;1823:214::-;-1:-1:-1;;;;;1897:22:0;;1889:58;;;;-1:-1:-1;;;1889:58:0;;17565:2:1;1889:58:0;;;17547:21:1;17604:2;17584:18;;;17577:30;17643:26;17623:18;;;17616:54;17687:18;;1889:58:0;17363:348:1;1889:58:0;1984:6;;;1963:38;;-1:-1:-1;;;;;1963:38:0;;;;1984:6;;;1963:38;;;2012:6;:17;;-1:-1:-1;;;;;;2012:17:0;-1:-1:-1;;;;;2012:17:0;;;;;;;;;;1823:214::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:757:1:-;64:5;117:3;110:4;102:6;98:17;94:27;84:55;;135:1;132;125:12;84:55;168:2;162:9;210:2;202:6;198:15;279:6;267:10;264:22;243:18;231:10;228:34;225:62;222:88;;;290:18;;:::i;:::-;330:10;326:2;319:22;;361:6;387;425:3;420:2;412:6;408:15;405:24;402:44;;;442:1;439;432:12;402:44;464:1;474:267;488:4;485:1;482:11;474:267;;;561:3;548:17;578:31;603:5;578:31;:::i;:::-;622:18;;663:4;687:12;;;;719;;;;;508:1;501:9;474:267;;;-1:-1:-1;759:6:1;;14:757;-1:-1:-1;;;;;14:757:1:o;776:748::-;830:5;883:3;876:4;868:6;864:17;860:27;850:55;;901:1;898;891:12;850:55;937:6;924:20;963:4;987:60;1003:43;1043:2;1003:43;:::i;:::-;987:60;:::i;:::-;1069:3;1093:2;1088:3;1081:15;1121:2;1116:3;1112:12;1105:19;;1156:2;1148:6;1144:15;1208:3;1203:2;1197;1194:1;1190:10;1182:6;1178:23;1174:32;1171:41;1168:61;;;1225:1;1222;1215:12;1168:61;1247:1;1257:238;1271:2;1268:1;1265:9;1257:238;;;1342:3;1329:17;1359:31;1384:5;1359:31;:::i;:::-;1403:18;;1441:12;;;;1473;;;;1289:1;1282:9;1257:238;;;-1:-1:-1;1513:5:1;;776:748;-1:-1:-1;;;;;;;776:748:1:o;1529:530::-;1571:5;1624:3;1617:4;1609:6;1605:17;1601:27;1591:55;;1642:1;1639;1632:12;1591:55;1678:6;1665:20;1704:18;1700:2;1697:26;1694:52;;;1726:18;;:::i;:::-;1770:55;1813:2;1794:13;;-1:-1:-1;;1790:27:1;1819:4;1786:38;1770:55;:::i;:::-;1850:2;1841:7;1834:19;1896:3;1889:4;1884:2;1876:6;1872:15;1868:26;1865:35;1862:55;;;1913:1;1910;1903:12;1862:55;1978:2;1971:4;1963:6;1959:17;1952:4;1943:7;1939:18;1926:55;2026:1;2001:16;;;2019:4;1997:27;1990:38;;;;2005:7;1529:530;-1:-1:-1;;;1529:530:1:o;2064:150::-;2139:20;;2188:1;2178:12;;2168:40;;2204:1;2201;2194:12;2168:40;2064:150;;;:::o;2219:247::-;2278:6;2331:2;2319:9;2310:7;2306:23;2302:32;2299:52;;;2347:1;2344;2337:12;2299:52;2386:9;2373:23;2405:31;2430:5;2405:31;:::i;:::-;2455:5;2219:247;-1:-1:-1;;;2219:247:1:o;2471:251::-;2541:6;2594:2;2582:9;2573:7;2569:23;2565:32;2562:52;;;2610:1;2607;2600:12;2562:52;2642:9;2636:16;2661:31;2686:5;2661:31;:::i;2727:943::-;2885:6;2893;2901;2909;2917;2925;2933;2986:3;2974:9;2965:7;2961:23;2957:33;2954:53;;;3003:1;3000;2993:12;2954:53;3026:44;3062:7;3051:9;3026:44;:::i;:::-;3016:54;;3089:45;3130:2;3119:9;3115:18;3089:45;:::i;:::-;3079:55;;3181:2;3170:9;3166:18;3153:32;3143:42;;3232:3;3221:9;3217:19;3204:33;3194:43;;3287:3;3276:9;3272:19;3259:33;3301:31;3326:5;3301:31;:::i;:::-;3351:5;-1:-1:-1;3408:3:1;3393:19;;3380:33;3422;3380;3422;:::i;:::-;3474:7;-1:-1:-1;3532:3:1;3517:19;;3504:33;3560:18;3549:30;;3546:50;;;3592:1;3589;3582:12;3546:50;3615:49;3656:7;3647:6;3636:9;3632:22;3615:49;:::i;:::-;3605:59;;;2727:943;;;;;;;;;;:::o;3675:1081::-;3851:6;3859;3867;3875;3883;3891;3899;3907;3915;3968:3;3956:9;3947:7;3943:23;3939:33;3936:53;;;3985:1;3982;3975:12;3936:53;4008:44;4044:7;4033:9;4008:44;:::i;:::-;3998:54;;4071:45;4112:2;4101:9;4097:18;4071:45;:::i;:::-;4061:55;;4163:2;4152:9;4148:18;4135:32;4125:42;;4214:3;4203:9;4199:19;4186:33;4176:43;;4269:3;4258:9;4254:19;4241:33;4283:31;4308:5;4283:31;:::i;:::-;4333:5;-1:-1:-1;4390:3:1;4375:19;;4362:33;4404;4362;4404;:::i;:::-;4456:7;-1:-1:-1;4514:3:1;4499:19;;4486:33;4542:18;4531:30;;4528:50;;;4574:1;4571;4564:12;4528:50;4597:49;4638:7;4629:6;4618:9;4614:22;4597:49;:::i;:::-;4587:59;;;4693:3;4682:9;4678:19;4665:33;4655:43;;4745:3;4734:9;4730:19;4717:33;4707:43;;3675:1081;;;;;;;;;;;:::o;4761:1388::-;4944:6;4952;4960;4968;4976;4984;4992;5000;5031:3;5075:2;5063:9;5054:7;5050:23;5046:32;5043:52;;;5091:1;5088;5081:12;5043:52;5131:9;5118:23;5164:18;5156:6;5153:30;5150:50;;;5196:1;5193;5186:12;5150:50;5219:61;5272:7;5263:6;5252:9;5248:22;5219:61;:::i;:::-;5209:71;;;5299:2;5320:45;5361:2;5350:9;5346:18;5320:45;:::i;:::-;5310:55;;5412:2;5401:9;5397:18;5384:32;5374:42;;5463:2;5452:9;5448:18;5435:32;5425:42;;5514:3;5503:9;5499:19;5486:33;5476:43;;5566:3;5555:9;5551:19;5538:33;5528:43;;5621:3;5610:9;5606:19;5593:33;5635:31;5660:5;5635:31;:::i;:::-;5685:5;-1:-1:-1;5728:3:1;5713:19;;5709:33;-1:-1:-1;5699:61:1;;5756:1;5753;5746:12;5699:61;5780:22;;:::i;:::-;5824:3;5862;5851:9;5847:19;5901:7;5896:2;5885:9;5881:18;5878:31;5875:51;;;5922:1;5919;5912:12;5875:51;5944:1;5935:10;;5954:165;5968:4;5965:1;5962:11;5954:165;;;6027:17;;6015:30;;5988:1;5981:9;;;;;6065:12;;;;6097;;5954:165;;;5958:3;6138:5;6128:15;;;;;;4761:1388;;;;;;;;;;;:::o;6154:892::-;6249:6;6280:2;6323;6311:9;6302:7;6298:23;6294:32;6291:52;;;6339:1;6336;6329:12;6291:52;6372:9;6366:16;6405:18;6397:6;6394:30;6391:50;;;6437:1;6434;6427:12;6391:50;6460:22;;6513:4;6505:13;;6501:27;-1:-1:-1;6491:55:1;;6542:1;6539;6532:12;6491:55;6571:2;6565:9;6594:60;6610:43;6650:2;6610:43;:::i;6594:60::-;6676:3;6700:2;6695:3;6688:15;6728:2;6723:3;6719:12;6712:19;;6759:2;6755;6751:11;6807:7;6802:2;6796;6793:1;6789:10;6785:2;6781:19;6777:28;6774:41;6771:61;;;6828:1;6825;6818:12;6771:61;6850:1;6841:10;;6860:156;6874:2;6871:1;6868:9;6860:156;;;6931:10;;6919:23;;6892:1;6885:9;;;;;6962:12;;;;6994;;6860:156;;;-1:-1:-1;7035:5:1;6154:892;-1:-1:-1;;;;;;;6154:892:1:o;7051:277::-;7118:6;7171:2;7159:9;7150:7;7146:23;7142:32;7139:52;;;7187:1;7184;7177:12;7139:52;7219:9;7213:16;7272:5;7265:13;7258:21;7251:5;7248:32;7238:60;;7294:1;7291;7284:12;7333:922;7493:6;7501;7509;7517;7525;7533;7541;7549;7602:3;7590:9;7581:7;7577:23;7573:33;7570:53;;;7619:1;7616;7609:12;7570:53;7642:36;7668:9;7642:36;:::i;:::-;7632:46;;7729:2;7718:9;7714:18;7701:32;7756:18;7748:6;7745:30;7742:50;;;7788:1;7785;7778:12;7742:50;7811:61;7864:7;7855:6;7844:9;7840:22;7811:61;:::i;:::-;7801:71;;;7919:2;7908:9;7904:18;7891:32;7881:42;;7970:2;7959:9;7955:18;7942:32;7932:42;;8021:3;8010:9;8006:19;7993:33;7983:43;;8076:3;8065:9;8061:19;8048:33;8090:31;8115:5;8090:31;:::i;:::-;7333:922;;;;-1:-1:-1;7333:922:1;;;;;;8140:5;;-1:-1:-1;;;8192:3:1;8177:19;;8164:33;;8244:3;8229:19;8216:33;;7333:922::o;8260:180::-;8319:6;8372:2;8360:9;8351:7;8347:23;8343:32;8340:52;;;8388:1;8385;8378:12;8340:52;-1:-1:-1;8411:23:1;;8260:180;-1:-1:-1;8260:180:1:o;8445:184::-;8515:6;8568:2;8556:9;8547:7;8543:23;8539:32;8536:52;;;8584:1;8581;8574:12;8536:52;-1:-1:-1;8607:16:1;;8445:184;-1:-1:-1;8445:184:1:o;8634:758::-;8763:6;8771;8779;8787;8795;8803;8856:3;8844:9;8835:7;8831:23;8827:33;8824:53;;;8873:1;8870;8863:12;8824:53;8909:9;8896:23;8886:33;;8970:2;8959:9;8955:18;8942:32;8997:18;8989:6;8986:30;8983:50;;;9029:1;9026;9019:12;8983:50;9052:61;9105:7;9096:6;9085:9;9081:22;9052:61;:::i;:::-;9042:71;;;9160:2;9149:9;9145:18;9132:32;9122:42;;9214:2;9203:9;9199:18;9186:32;9227:31;9252:5;9227:31;:::i;:::-;8634:758;;;;-1:-1:-1;8634:758:1;;9329:3;9314:19;;9301:33;;9381:3;9366:19;;;9353:33;;-1:-1:-1;8634:758:1;-1:-1:-1;;8634:758:1:o;9397:461::-;9450:3;9488:5;9482:12;9515:6;9510:3;9503:19;9541:4;9570:2;9565:3;9561:12;9554:19;;9607:2;9600:5;9596:14;9628:1;9638:195;9652:6;9649:1;9646:13;9638:195;;;9717:13;;-1:-1:-1;;;;;9713:39:1;9701:52;;9773:12;;;;9808:15;;;;9749:1;9667:9;9638:195;;;-1:-1:-1;9849:3:1;;9397:461;-1:-1:-1;;;;;9397:461:1:o;9863:274::-;9992:3;10030:6;10024:13;10046:53;10092:6;10087:3;10080:4;10072:6;10068:17;10046:53;:::i;:::-;10115:16;;;;;9863:274;-1:-1:-1;;9863:274:1:o;11039:672::-;-1:-1:-1;;;;;11410:15:1;;;11392:34;;11462:15;;;11457:2;11442:18;;11435:43;11509:2;11494:18;;11487:34;;;;11557:15;;;;11552:2;11537:18;;11530:43;11604:3;11589:19;;11582:35;;;;11372:3;11633:19;;11626:35;;;;11692:3;11677:19;;11670:35;;;;11341:3;11326:19;;11039:672::o;11716:654::-;11910:4;11956:1;11952;11947:3;11943:11;11939:19;11997:2;11989:6;11985:15;11974:9;11967:34;12049:2;12041:6;12037:15;12032:2;12021:9;12017:18;12010:43;;12089:6;12084:2;12073:9;12069:18;12062:34;12132:3;12127:2;12116:9;12112:18;12105:31;12165:6;12159:13;12209:6;12203:3;12192:9;12188:19;12181:35;12225:67;12285:6;12279:3;12268:9;12264:19;12259:2;12251:6;12247:15;12225:67;:::i;:::-;12353:2;12332:15;-1:-1:-1;;12328:29:1;12313:45;;;;12360:3;12309:55;;11716:654;-1:-1:-1;;;;;11716:654:1:o;13904:510::-;14175:6;14164:9;14157:25;14218:3;14213:2;14202:9;14198:18;14191:31;14138:4;14239:57;14291:3;14280:9;14276:19;14268:6;14239:57;:::i;:::-;-1:-1:-1;;;;;14332:32:1;;;;14327:2;14312:18;;14305:60;-1:-1:-1;14396:2:1;14381:18;14374:34;14231:65;13904:510;-1:-1:-1;;13904:510:1:o;15969:332::-;16171:2;16153:21;;;16210:1;16190:18;;;16183:29;-1:-1:-1;;;16243:2:1;16228:18;;16221:39;16292:2;16277:18;;15969:332::o;16659:355::-;16861:2;16843:21;;;16900:2;16880:18;;;16873:30;16939:33;16934:2;16919:18;;16912:61;17005:2;16990:18;;16659:355::o;18940:341::-;19142:2;19124:21;;;19181:2;19161:18;;;19154:30;-1:-1:-1;;;19215:2:1;19200:18;;19193:47;19272:2;19257:18;;18940:341::o;20380:582::-;20679:6;20668:9;20661:25;20722:6;20717:2;20706:9;20702:18;20695:34;20765:3;20760:2;20749:9;20745:18;20738:31;20642:4;20786:57;20838:3;20827:9;20823:19;20815:6;20786:57;:::i;:::-;-1:-1:-1;;;;;20879:32:1;;;;20874:2;20859:18;;20852:60;-1:-1:-1;20943:3:1;20928:19;20921:35;20778:65;20380:582;-1:-1:-1;;;20380:582:1:o;21546:251::-;21618:2;21612:9;21660:2;21648:15;;21693:18;21678:34;;21714:22;;;21675:62;21672:88;;;21740:18;;:::i;:::-;21776:2;21769:22;21546:251;:::o;21802:275::-;21873:2;21867:9;21938:2;21919:13;;-1:-1:-1;;21915:27:1;21903:40;;21973:18;21958:34;;21994:22;;;21955:62;21952:88;;;22020:18;;:::i;:::-;22056:2;22049:22;21802:275;;-1:-1:-1;21802:275:1:o;22082:183::-;22142:4;22175:18;22167:6;22164:30;22161:56;;;22197:18;;:::i;:::-;-1:-1:-1;22242:1:1;22238:14;22254:4;22234:25;;22082:183::o;22270:128::-;22310:3;22341:1;22337:6;22334:1;22331:13;22328:39;;;22347:18;;:::i;:::-;-1:-1:-1;22383:9:1;;22270:128::o;22403:217::-;22443:1;22469;22459:132;;22513:10;22508:3;22504:20;22501:1;22494:31;22548:4;22545:1;22538:15;22576:4;22573:1;22566:15;22459:132;-1:-1:-1;22605:9:1;;22403:217::o;22625:168::-;22665:7;22731:1;22727;22723:6;22719:14;22716:1;22713:21;22708:1;22701:9;22694:17;22690:45;22687:71;;;22738:18;;:::i;:::-;-1:-1:-1;22778:9:1;;22625:168::o;22798:125::-;22838:4;22866:1;22863;22860:8;22857:34;;;22871:18;;:::i;:::-;-1:-1:-1;22908:9:1;;22798:125::o;22928:258::-;23000:1;23010:113;23024:6;23021:1;23018:13;23010:113;;;23100:11;;;23094:18;23081:11;;;23074:39;23046:2;23039:10;23010:113;;;23141:6;23138:1;23135:13;23132:48;;;23176:1;23167:6;23162:3;23158:16;23151:27;23132:48;;22928:258;;;:::o;23191:127::-;23252:10;23247:3;23243:20;23240:1;23233:31;23283:4;23280:1;23273:15;23307:4;23304:1;23297:15;23323:127;23384:10;23379:3;23375:20;23372:1;23365:31;23415:4;23412:1;23405:15;23439:4;23436:1;23429:15;23455:127;23516:10;23511:3;23507:20;23504:1;23497:31;23547:4;23544:1;23537:15;23571:4;23568:1;23561:15;23587:127;23648:10;23643:3;23639:20;23636:1;23629:31;23679:4;23676:1;23669:15;23703:4;23700:1;23693:15;23719:131;-1:-1:-1;;;;;23794:31:1;;23784:42;;23774:70;;23840:1;23837;23830:12
Swarm Source
ipfs://41f06931924a09455dc4c7c8eb59ec788df47ebb863353a1905af2a01caa3a22
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,894.39 | 0.0802 | $232.18 |
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.