Source Code
Latest 25 from a total of 9,806 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Remove Liquidity | 28221886 | 2 days ago | IN | 0 ETH | 0.00000823 | ||||
| Swap Exact Token... | 27814123 | 12 days ago | IN | 0 ETH | 0.00000462 | ||||
| Remove Liquidity | 27681905 | 15 days ago | IN | 0 ETH | 0.00000541 | ||||
| Remove Liquidity | 27678192 | 15 days ago | IN | 0 ETH | 0.00000572 | ||||
| Remove Liquidity | 27674399 | 15 days ago | IN | 0 ETH | 0.00000541 | ||||
| Remove Liquidity... | 27673852 | 15 days ago | IN | 0 ETH | 0.00000109 | ||||
| Remove Liquidity | 27492263 | 19 days ago | IN | 0 ETH | 0.000007 | ||||
| Swap Exact Token... | 27471809 | 20 days ago | IN | 0 ETH | 0.0000045 | ||||
| Swap Exact ETH F... | 26841567 | 38 days ago | IN | 0.01 ETH | 0.00000381 | ||||
| Remove Liquidity | 26532081 | 46 days ago | IN | 0 ETH | 0.00000496 | ||||
| Remove Liquidity | 26531996 | 46 days ago | IN | 0 ETH | 0.00000495 | ||||
| Remove Liquidity | 26531966 | 46 days ago | IN | 0 ETH | 0.00000495 | ||||
| Remove Liquidity | 26531808 | 46 days ago | IN | 0 ETH | 0.00000496 | ||||
| Remove Liquidity | 26531755 | 46 days ago | IN | 0 ETH | 0.00000527 | ||||
| Remove Liquidity | 26531708 | 46 days ago | IN | 0 ETH | 0.00000605 | ||||
| Remove Liquidity | 26531662 | 46 days ago | IN | 0 ETH | 0.00000605 | ||||
| Remove Liquidity | 26531574 | 46 days ago | IN | 0 ETH | 0.00000605 | ||||
| Remove Liquidity | 26531493 | 46 days ago | IN | 0 ETH | 0.00000572 | ||||
| Swap Exact Token... | 26306883 | 53 days ago | IN | 0 ETH | 0.00000582 | ||||
| Swap Exact ETH F... | 26244423 | 55 days ago | IN | 0.0035 ETH | 0.00000423 | ||||
| Swap Exact Token... | 25983987 | 62 days ago | IN | 0 ETH | 0.00000585 | ||||
| Swap Exact ETH F... | 25879076 | 65 days ago | IN | 0.011 ETH | 0.00000578 | ||||
| Swap Exact ETH F... | 25878264 | 65 days ago | IN | 0.02 ETH | 0.00000391 | ||||
| Swap Exact ETH F... | 25819249 | 67 days ago | IN | 0.0206 ETH | 0.0000059 | ||||
| Remove Liquidity... | 25800498 | 68 days ago | IN | 0 ETH | 0.0000091 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 28221886 | 2 days ago | 0 ETH | ||||
| 28221886 | 2 days ago | 0 ETH | ||||
| 27814123 | 12 days ago | 0.00963371 ETH | ||||
| 27814123 | 12 days ago | 0.00963371 ETH | ||||
| 27814123 | 12 days ago | 0 ETH | ||||
| 27814123 | 12 days ago | 0 ETH | ||||
| 27814123 | 12 days ago | 0 ETH | ||||
| 27814123 | 12 days ago | 0 ETH | ||||
| 27681905 | 15 days ago | 0 ETH | ||||
| 27681905 | 15 days ago | 0 ETH | ||||
| 27678192 | 15 days ago | 0 ETH | ||||
| 27678192 | 15 days ago | 0 ETH | ||||
| 27674399 | 15 days ago | 0 ETH | ||||
| 27674399 | 15 days ago | 0 ETH | ||||
| 27673852 | 15 days ago | 0 ETH | ||||
| 27492263 | 19 days ago | 0 ETH | ||||
| 27492263 | 19 days ago | 0 ETH | ||||
| 27471809 | 20 days ago | 0.00995778 ETH | ||||
| 27471809 | 20 days ago | 0.00995778 ETH | ||||
| 27471809 | 20 days ago | 0 ETH | ||||
| 27471809 | 20 days ago | 0 ETH | ||||
| 27471809 | 20 days ago | 0 ETH | ||||
| 27471809 | 20 days ago | 0 ETH | ||||
| 26841567 | 38 days ago | 0 ETH | ||||
| 26841567 | 38 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PancakeRouter
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/**
*Submitted for verification at lineascan.build/ on 2023-08-13
*/
// File: PheasantSwap/interfaces/IWETH.sol
pragma solidity >=0.5.0;
interface IWETH {
function deposit() external payable;
function transfer(address to, uint256 value) external returns (bool);
function withdraw(uint256) external;
}
// File: PheasantSwap/interfaces/IERC20.sol
pragma solidity >=0.5.0;
interface IERC20 {
event Approval(address indexed owner, address indexed spender, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
}
// File: PheasantSwap/interfaces/IPancakePair.sol
pragma solidity >=0.5.0;
interface IPancakePair {
event Approval(address indexed owner, address indexed spender, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(address to) external returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
// File: PheasantSwap/libraries/SafeMath.sol
pragma solidity >=0.5.0 <0.7.0;
// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
require((z = x + y) >= x, "ds-math-add-overflow");
}
function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
require((z = x - y) <= x, "ds-math-sub-underflow");
}
function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {
require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
}
}
// File: PheasantSwap/interfaces/IPancakeFactory.sol
pragma solidity >=0.5.0;
interface IPancakeFactory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint256);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
function INIT_CODE_PAIR_HASH() external view returns (bytes32);
}
// File: PheasantSwap/libraries/PancakeLibrary.sol
pragma solidity >=0.5.0;
library PancakeLibrary {
using SafeMath for uint256;
// returns sorted token addresses, used to handle return values from pairs sorted in this order
function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
require(tokenA != tokenB, "PheasantLibrary: IDENTICAL_ADDRESSES");
(token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
require(token0 != address(0), "PheasantLibrary: ZERO_ADDRESS");
}
// calculates the CREATE2 address for a pair without making any external calls
function pairFor(
address factory,
address tokenA,
address tokenB
) internal pure returns (address pair) {
(address token0, address token1) = sortTokens(tokenA, tokenB);
pair = address(
uint256(
keccak256(
abi.encodePacked(
hex"ff",
factory,
keccak256(abi.encodePacked(token0, token1)),
hex"c70f379f5b8a328cc6a6260d6d2391a9d001671af6e298516835de119ada32a1" // init code hash
)
)
)
);
}
// fetches and sorts the reserves for a pair
function getReserves(
address factory,
address tokenA,
address tokenB
) internal view returns (uint256 reserveA, uint256 reserveB) {
(address token0, ) = sortTokens(tokenA, tokenB);
pairFor(factory, tokenA, tokenB);
(uint256 reserve0, uint256 reserve1, ) = IPancakePair(pairFor(factory, tokenA, tokenB)).getReserves();
(reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
}
// given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) internal pure returns (uint256 amountB) {
require(amountA > 0, "PheasantLibrary: INSUFFICIENT_AMOUNT");
require(reserveA > 0 && reserveB > 0, "PheasantLibrary: INSUFFICIENT_LIQUIDITY");
amountB = amountA.mul(reserveB) / reserveA;
}
// given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) internal pure returns (uint256 amountOut) {
require(amountIn > 0, "PheasantLibrary: INSUFFICIENT_INPUT_AMOUNT");
require(reserveIn > 0 && reserveOut > 0, "PheasantLibrary: INSUFFICIENT_LIQUIDITY");
uint256 amountInWithFee = amountIn.mul(9970);
uint256 numerator = amountInWithFee.mul(reserveOut);
uint256 denominator = reserveIn.mul(10000).add(amountInWithFee);
amountOut = numerator / denominator;
}
// given an output amount of an asset and pair reserves, returns a required input amount of the other asset
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) internal pure returns (uint256 amountIn) {
require(amountOut > 0, "PheasantLibrary: INSUFFICIENT_OUTPUT_AMOUNT");
require(reserveIn > 0 && reserveOut > 0, "PheasantLibrary: INSUFFICIENT_LIQUIDITY");
uint256 numerator = reserveIn.mul(amountOut).mul(10000);
uint256 denominator = reserveOut.sub(amountOut).mul(9970);
amountIn = (numerator / denominator).add(1);
}
// performs chained getAmountOut calculations on any number of pairs
function getAmountsOut(
address factory,
uint256 amountIn,
address[] memory path
) internal view returns (uint256[] memory amounts) {
require(path.length >= 2, "PheasantLibrary: INVALID_PATH");
amounts = new uint256[](path.length);
amounts[0] = amountIn;
for (uint256 i; i < path.length - 1; i++) {
(uint256 reserveIn, uint256 reserveOut) = getReserves(factory, path[i], path[i + 1]);
amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
}
}
// performs chained getAmountIn calculations on any number of pairs
function getAmountsIn(
address factory,
uint256 amountOut,
address[] memory path
) internal view returns (uint256[] memory amounts) {
require(path.length >= 2, "PheasantLibrary: INVALID_PATH");
amounts = new uint256[](path.length);
amounts[amounts.length - 1] = amountOut;
for (uint256 i = path.length - 1; i > 0; i--) {
(uint256 reserveIn, uint256 reserveOut) = getReserves(factory, path[i - 1], path[i]);
amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
}
}
}
// File: PheasantSwap/interfaces/IPancakeRouter01.sol
pragma solidity >=0.6.2;
interface IPancakeRouter01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountToken, uint256 amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountToken, uint256 amountETH);
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapTokensForExactTokens(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) external pure returns (uint256 amountB);
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountOut);
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
}
// File: PheasantSwap/interfaces/IPancakeRouter02.sol
pragma solidity >=0.6.2;
interface IPancakeRouter02 is IPancakeRouter01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
// File: @uniswap/lib/contracts/libraries/TransferHelper.sol
pragma solidity >=0.6.0;
// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
function safeApprove(
address token,
address to,
uint256 value
) internal {
// bytes4(keccak256(bytes('approve(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
require(
success && (data.length == 0 || abi.decode(data, (bool))),
'TransferHelper::safeApprove: approve failed'
);
}
function safeTransfer(
address token,
address to,
uint256 value
) internal {
// bytes4(keccak256(bytes('transfer(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
require(
success && (data.length == 0 || abi.decode(data, (bool))),
'TransferHelper::safeTransfer: transfer failed'
);
}
function safeTransferFrom(
address token,
address from,
address to,
uint256 value
) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
require(
success && (data.length == 0 || abi.decode(data, (bool))),
'TransferHelper::transferFrom: transferFrom failed'
);
}
function safeTransferETH(address to, uint256 value) internal {
(bool success, ) = to.call{value: value}(new bytes(0));
require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
}
}
// File: PheasantSwap/PancakeRouter.sol
pragma solidity =0.6.6;
contract PancakeRouter is IPancakeRouter02 {
using SafeMath for uint256;
address public immutable override factory;
address public immutable override WETH;
modifier ensure(uint256 deadline) {
require(deadline >= block.timestamp, "PheasantRouter: EXPIRED");
_;
}
constructor(address _factory, address _WETH) public {
factory = _factory;
WETH = _WETH;
}
receive() external payable {
assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract
}
// **** ADD LIQUIDITY ****
function _addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin
) internal virtual returns (uint256 amountA, uint256 amountB) {
// create the pair if it doesn't exist yet
if (IPancakeFactory(factory).getPair(tokenA, tokenB) == address(0)) {
IPancakeFactory(factory).createPair(tokenA, tokenB);
}
(uint256 reserveA, uint256 reserveB) = PancakeLibrary.getReserves(factory, tokenA, tokenB);
if (reserveA == 0 && reserveB == 0) {
(amountA, amountB) = (amountADesired, amountBDesired);
} else {
uint256 amountBOptimal = PancakeLibrary.quote(amountADesired, reserveA, reserveB);
if (amountBOptimal <= amountBDesired) {
require(amountBOptimal >= amountBMin, "PheasantRouter: INSUFFICIENT_B_AMOUNT");
(amountA, amountB) = (amountADesired, amountBOptimal);
} else {
uint256 amountAOptimal = PancakeLibrary.quote(amountBDesired, reserveB, reserveA);
assert(amountAOptimal <= amountADesired);
require(amountAOptimal >= amountAMin, "PheasantRouter: INSUFFICIENT_A_AMOUNT");
(amountA, amountB) = (amountAOptimal, amountBDesired);
}
}
}
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
virtual
override
ensure(deadline)
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
)
{
(amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
address pair = PancakeLibrary.pairFor(factory, tokenA, tokenB);
TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
liquidity = IPancakePair(pair).mint(to);
}
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
virtual
override
ensure(deadline)
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
)
{
(amountToken, amountETH) = _addLiquidity(
token,
WETH,
amountTokenDesired,
msg.value,
amountTokenMin,
amountETHMin
);
address pair = PancakeLibrary.pairFor(factory, token, WETH);
TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
IWETH(WETH).deposit{value: amountETH}();
assert(IWETH(WETH).transfer(pair, amountETH));
liquidity = IPancakePair(pair).mint(to);
// refund dust eth, if any
if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);
}
// **** REMOVE LIQUIDITY ****
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) public virtual override ensure(deadline) returns (uint256 amountA, uint256 amountB) {
address pair = PancakeLibrary.pairFor(factory, tokenA, tokenB);
IPancakePair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
(uint256 amount0, uint256 amount1) = IPancakePair(pair).burn(to);
(address token0, ) = PancakeLibrary.sortTokens(tokenA, tokenB);
(amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
require(amountA >= amountAMin, "PheasantRouter: INSUFFICIENT_A_AMOUNT");
require(amountB >= amountBMin, "PheasantRouter: INSUFFICIENT_B_AMOUNT");
}
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) public virtual override ensure(deadline) returns (uint256 amountToken, uint256 amountETH) {
(amountToken, amountETH) = removeLiquidity(
token,
WETH,
liquidity,
amountTokenMin,
amountETHMin,
address(this),
deadline
);
TransferHelper.safeTransfer(token, to, amountToken);
IWETH(WETH).withdraw(amountETH);
TransferHelper.safeTransferETH(to, amountETH);
}
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external virtual override returns (uint256 amountA, uint256 amountB) {
address pair = PancakeLibrary.pairFor(factory, tokenA, tokenB);
uint256 value = approveMax ? uint256(-1) : liquidity;
IPancakePair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
(amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
}
function removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external virtual override returns (uint256 amountToken, uint256 amountETH) {
address pair = PancakeLibrary.pairFor(factory, token, WETH);
uint256 value = approveMax ? uint256(-1) : liquidity;
IPancakePair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
(amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);
}
// **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) public virtual override ensure(deadline) returns (uint256 amountETH) {
(, amountETH) = removeLiquidity(token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline);
TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
IWETH(WETH).withdraw(amountETH);
TransferHelper.safeTransferETH(to, amountETH);
}
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external virtual override returns (uint256 amountETH) {
address pair = PancakeLibrary.pairFor(factory, token, WETH);
uint256 value = approveMax ? uint256(-1) : liquidity;
IPancakePair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(
token,
liquidity,
amountTokenMin,
amountETHMin,
to,
deadline
);
}
// **** SWAP ****
// requires the initial amount to have already been sent to the first pair
function _swap(
uint256[] memory amounts,
address[] memory path,
address _to
) internal virtual {
for (uint256 i; i < path.length - 1; i++) {
(address input, address output) = (path[i], path[i + 1]);
(address token0, ) = PancakeLibrary.sortTokens(input, output);
uint256 amountOut = amounts[i + 1];
(uint256 amount0Out, uint256 amount1Out) =
input == token0 ? (uint256(0), amountOut) : (amountOut, uint256(0));
address to = i < path.length - 2 ? PancakeLibrary.pairFor(factory, output, path[i + 2]) : _to;
IPancakePair(PancakeLibrary.pairFor(factory, input, output)).swap(amount0Out, amount1Out, to, new bytes(0));
}
}
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) returns (uint256[] memory amounts) {
amounts = PancakeLibrary.getAmountsOut(factory, amountIn, path);
require(amounts[amounts.length - 1] >= amountOutMin, "PheasantRouter: INSUFFICIENT_OUTPUT_AMOUNT");
TransferHelper.safeTransferFrom(
path[0],
msg.sender,
PancakeLibrary.pairFor(factory, path[0], path[1]),
amounts[0]
);
_swap(amounts, path, to);
}
function swapTokensForExactTokens(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) returns (uint256[] memory amounts) {
amounts = PancakeLibrary.getAmountsIn(factory, amountOut, path);
require(amounts[0] <= amountInMax, "PheasantRouter: EXCESSIVE_INPUT_AMOUNT");
TransferHelper.safeTransferFrom(
path[0],
msg.sender,
PancakeLibrary.pairFor(factory, path[0], path[1]),
amounts[0]
);
_swap(amounts, path, to);
}
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable virtual override ensure(deadline) returns (uint256[] memory amounts) {
require(path[0] == WETH, "PheasantRouter: INVALID_PATH");
amounts = PancakeLibrary.getAmountsOut(factory, msg.value, path);
require(amounts[amounts.length - 1] >= amountOutMin, "PheasantRouter: INSUFFICIENT_OUTPUT_AMOUNT");
IWETH(WETH).deposit{value: amounts[0]}();
assert(IWETH(WETH).transfer(PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
_swap(amounts, path, to);
}
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) returns (uint256[] memory amounts) {
require(path[path.length - 1] == WETH, "PheasantRouter: INVALID_PATH");
amounts = PancakeLibrary.getAmountsIn(factory, amountOut, path);
require(amounts[0] <= amountInMax, "PheasantRouter: EXCESSIVE_INPUT_AMOUNT");
TransferHelper.safeTransferFrom(
path[0],
msg.sender,
PancakeLibrary.pairFor(factory, path[0], path[1]),
amounts[0]
);
_swap(amounts, path, address(this));
IWETH(WETH).withdraw(amounts[amounts.length - 1]);
TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
}
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) returns (uint256[] memory amounts) {
require(path[path.length - 1] == WETH, "PheasantRouter: INVALID_PATH");
amounts = PancakeLibrary.getAmountsOut(factory, amountIn, path);
require(amounts[amounts.length - 1] >= amountOutMin, "PheasantRouter: INSUFFICIENT_OUTPUT_AMOUNT");
TransferHelper.safeTransferFrom(
path[0],
msg.sender,
PancakeLibrary.pairFor(factory, path[0], path[1]),
amounts[0]
);
_swap(amounts, path, address(this));
IWETH(WETH).withdraw(amounts[amounts.length - 1]);
TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
}
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable virtual override ensure(deadline) returns (uint256[] memory amounts) {
require(path[0] == WETH, "PheasantRouter: INVALID_PATH");
amounts = PancakeLibrary.getAmountsIn(factory, amountOut, path);
require(amounts[0] <= msg.value, "PheasantRouter: EXCESSIVE_INPUT_AMOUNT");
IWETH(WETH).deposit{value: amounts[0]}();
assert(IWETH(WETH).transfer(PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
_swap(amounts, path, to);
// refund dust eth, if any
if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);
}
// **** SWAP (supporting fee-on-transfer tokens) ****
// requires the initial amount to have already been sent to the first pair
function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
for (uint256 i; i < path.length - 1; i++) {
(address input, address output) = (path[i], path[i + 1]);
(address token0, ) = PancakeLibrary.sortTokens(input, output);
IPancakePair pair = IPancakePair(PancakeLibrary.pairFor(factory, input, output));
uint256 amountInput;
uint256 amountOutput;
{
// scope to avoid stack too deep errors
(uint256 reserve0, uint256 reserve1, ) = pair.getReserves();
(uint256 reserveInput, uint256 reserveOutput) =
input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
amountOutput = PancakeLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
}
(uint256 amount0Out, uint256 amount1Out) =
input == token0 ? (uint256(0), amountOutput) : (amountOutput, uint256(0));
address to = i < path.length - 2 ? PancakeLibrary.pairFor(factory, output, path[i + 2]) : _to;
pair.swap(amount0Out, amount1Out, to, new bytes(0));
}
}
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) {
TransferHelper.safeTransferFrom(
path[0],
msg.sender,
PancakeLibrary.pairFor(factory, path[0], path[1]),
amountIn
);
uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
_swapSupportingFeeOnTransferTokens(path, to);
require(
IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
"PheasantRouter: INSUFFICIENT_OUTPUT_AMOUNT"
);
}
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable virtual override ensure(deadline) {
require(path[0] == WETH, "PheasantRouter: INVALID_PATH");
uint256 amountIn = msg.value;
IWETH(WETH).deposit{value: amountIn}();
assert(IWETH(WETH).transfer(PancakeLibrary.pairFor(factory, path[0], path[1]), amountIn));
uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
_swapSupportingFeeOnTransferTokens(path, to);
require(
IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
"PheasantRouter: INSUFFICIENT_OUTPUT_AMOUNT"
);
}
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external virtual override ensure(deadline) {
require(path[path.length - 1] == WETH, "PheasantRouter: INVALID_PATH");
TransferHelper.safeTransferFrom(
path[0],
msg.sender,
PancakeLibrary.pairFor(factory, path[0], path[1]),
amountIn
);
_swapSupportingFeeOnTransferTokens(path, address(this));
uint256 amountOut = IERC20(WETH).balanceOf(address(this));
require(amountOut >= amountOutMin, "PheasantRouter: INSUFFICIENT_OUTPUT_AMOUNT");
IWETH(WETH).withdraw(amountOut);
TransferHelper.safeTransferETH(to, amountOut);
}
// **** LIBRARY FUNCTIONS ****
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) public pure virtual override returns (uint256 amountB) {
return PancakeLibrary.quote(amountA, reserveA, reserveB);
}
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) public pure virtual override returns (uint256 amountOut) {
return PancakeLibrary.getAmountOut(amountIn, reserveIn, reserveOut);
}
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) public pure virtual override returns (uint256 amountIn) {
return PancakeLibrary.getAmountIn(amountOut, reserveIn, reserveOut);
}
function getAmountsOut(uint256 amountIn, address[] memory path)
public
view
virtual
override
returns (uint256[] memory amounts)
{
return PancakeLibrary.getAmountsOut(factory, amountIn, path);
}
function getAmountsIn(uint256 amountOut, address[] memory path)
public
view
virtual
override
returns (uint256[] memory amounts)
{
return PancakeLibrary.getAmountsIn(factory, amountOut, path);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c060405234801561001057600080fd5b50604051620047a0380380620047a08339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61461b620001856000398061015f5280610ce45280610d1f5280610e16528061103452806113be528061152452806118eb52806119e55280611a9b5280611b695280611caf5280611d375280611f7c5280611ff752806120a652806121725280612207528061227b528061277952806129ec5280612a425280612a765280612aea5280612c8a5280612dcd5280612e55525080610ea45280610f7b52806110fa5280611133528061126e528061144c528061150252806116725280611bfc5280611d695280611ecc52806122ad528061250652806126fe5280612727528061275752806128c45280612a205280612d1d5280612e875280613718528061375b5280613a3e5280613bbd5280613fed528061409b528061411b525061461b6000f3fe60806040526004361061014f5760003560e01c80638803dbee116100b6578063c45a01551161006f578063c45a015514610a10578063d06ca61f14610a25578063ded9382a14610ada578063e8e3370014610b4d578063f305d71914610bcd578063fb3bdb4114610c1357610188565b80638803dbee146107df578063ad5c464814610875578063ad615dec146108a6578063af2979eb146108dc578063b6f9de951461092f578063baa2abde146109b357610188565b80634a25d94a116101085780634a25d94a146104f05780635b0d5984146105865780635c11d795146105f9578063791ac9471461068f5780637ff36ab51461072557806385f8c259146107a957610188565b806302751cec1461018d578063054d50d4146101f957806318cbafe5146102415780631f00ca74146103275780632195995c146103dc57806338ed17391461045a57610188565b3661018857336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018657fe5b005b600080fd5b34801561019957600080fd5b506101e0600480360360c08110156101b057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c97565b6040805192835260208301919091528051918290030190f35b34801561020557600080fd5b5061022f6004803603606081101561021c57600080fd5b5080359060208101359060400135610db1565b60408051918252519081900360200190f35b34801561024d57600080fd5b506102d7600480360360a081101561026457600080fd5b813591602081013591810190606081016040820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460208302840111600160201b831117156102bd57600080fd5b91935091506001600160a01b038135169060200135610dc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103135781810151838201526020016102fb565b505050509050019250505060405180910390f35b34801561033357600080fd5b506102d76004803603604081101561034a57600080fd5b81359190810190604081016020820135600160201b81111561036b57600080fd5b82018360208201111561037d57600080fd5b803590602001918460208302840111600160201b8311171561039e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110f3945050505050565b3480156103e857600080fd5b506101e0600480360361016081101561040057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611129565b34801561046657600080fd5b506102d7600480360360a081101561047d57600080fd5b813591602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460208302840111600160201b831117156104d657600080fd5b91935091506001600160a01b038135169060200135611223565b3480156104fc57600080fd5b506102d7600480360360a081101561051357600080fd5b813591602081013591810190606081016040820135600160201b81111561053957600080fd5b82018360208201111561054b57600080fd5b803590602001918460208302840111600160201b8311171561056c57600080fd5b91935091506001600160a01b03813516906020013561136e565b34801561059257600080fd5b5061022f60048036036101408110156105aa57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356114fa565b34801561060557600080fd5b50610186600480360360a081101561061c57600080fd5b813591602081013591810190606081016040820135600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b91935091506001600160a01b038135169060200135611608565b34801561069b57600080fd5b50610186600480360360a08110156106b257600080fd5b813591602081013591810190606081016040820135600160201b8111156106d857600080fd5b8201836020820111156106ea57600080fd5b803590602001918460208302840111600160201b8311171561070b57600080fd5b91935091506001600160a01b03813516906020013561189d565b6102d76004803603608081101561073b57600080fd5b81359190810190604081016020820135600160201b81111561075c57600080fd5b82018360208201111561076e57600080fd5b803590602001918460208302840111600160201b8311171561078f57600080fd5b91935091506001600160a01b038135169060200135611b21565b3480156107b557600080fd5b5061022f600480360360608110156107cc57600080fd5b5080359060208101359060400135611e74565b3480156107eb57600080fd5b506102d7600480360360a081101561080257600080fd5b813591602081013591810190606081016040820135600160201b81111561082857600080fd5b82018360208201111561083a57600080fd5b803590602001918460208302840111600160201b8311171561085b57600080fd5b91935091506001600160a01b038135169060200135611e81565b34801561088157600080fd5b5061088a611f7a565b604080516001600160a01b039092168252519081900360200190f35b3480156108b257600080fd5b5061022f600480360360608110156108c957600080fd5b5080359060208101359060400135611f9e565b3480156108e857600080fd5b5061022f600480360360c08110156108ff57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611fab565b6101866004803603608081101561094557600080fd5b81359190810190604081016020820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460208302840111600160201b8311171561099957600080fd5b91935091506001600160a01b03813516906020013561212c565b3480156109bf57600080fd5b506101e0600480360360e08110156109d657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356124b8565b348015610a1c57600080fd5b5061088a6126fc565b348015610a3157600080fd5b506102d760048036036040811015610a4857600080fd5b81359190810190604081016020820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612720945050505050565b348015610ae657600080fd5b506101e06004803603610140811015610afe57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561274d565b348015610b5957600080fd5b50610baf6004803603610100811015610b7157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612861565b60408051938452602084019290925282820152519081900360600190f35b610baf600480360360c0811015610be357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561299d565b6102d760048036036080811015610c2957600080fd5b81359190810190604081016020820135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b91935091506001600160a01b038135169060200135612c42565b6000808242811015610cde576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b610d0d897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6124b8565b9093509150610d1d898685612fc4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b50505050610da58583613118565b50965096945050505050565b6000610dbe848484613210565b949350505050565b60608142811015610e0c576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610e4657fe5b905060200201356001600160a01b03166001600160a01b031614610e9f576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b610efd7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110610f1057fe5b60200260200101511015610f555760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b610ff386866000818110610f6557fe5b905060200201356001600160a01b031633610fd97f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610fa757fe5b905060200201356001600160a01b03168b8b6001818110610fc457fe5b905060200201356001600160a01b031661344c565b85600081518110610fe657fe5b602002602001015161350c565b61103282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613669915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061107157fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b505050506110e884836001855103815181106110db57fe5b6020026020010151613118565b509695505050505050565b60606111207f000000000000000000000000000000000000000000000000000000000000000084846138af565b90505b92915050565b60008060006111597f00000000000000000000000000000000000000000000000000000000000000008f8f61344c565b9050600087611168578c61116c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111e257600080fd5b505af11580156111f6573d6000803e3d6000fd5b505050506112098f8f8f8f8f8f8f6124b8565b809450819550505050509b509b9950505050505050505050565b60608142811015611269576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6112c77f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b915086826001845103815181106112da57fe5b6020026020010151101561131f5760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b61132f86866000818110610f6557fe5b6110e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b606081428110156113b4576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106113ee57fe5b905060200201356001600160a01b03166001600160a01b031614611447576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b6114a57f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b915086826000815181106114b557fe5b60200260200101511115610f555760405162461bcd60e51b81526004018080602001828103825260268152602001806144d96026913960400191505060405180910390fd5b6000806115487f00000000000000000000000000000000000000000000000000000000000000008d7f000000000000000000000000000000000000000000000000000000000000000061344c565b9050600086611557578b61155b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050506115f78d8d8d8d8d8d611fab565b9d9c50505050505050505050505050565b804281101561164c576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6116c18585600081811061165c57fe5b905060200201356001600160a01b0316336116bb7f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b905060200201356001600160a01b03168a8a6001818110610fc457fe5b8a61350c565b6000858560001981018181106116d357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173857600080fd5b505afa15801561174c573d6000803e3d6000fd5b505050506040513d602081101561176257600080fd5b505160408051602088810282810182019093528882529293506117a49290918991899182918501908490808284376000920191909152508892506139e7915050565b8661185682888860001981018181106117b957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b505afa158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b50519063ffffffff613cf216565b10156118935760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b5050505050505050565b80428110156118e1576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061191b57fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b6119848585600081811061165c57fe5b6119c28585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506139e7915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051905086811015611a995760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050506118938482613118565b60608142811015611b67576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611b9e57fe5b905060200201356001600160a01b03166001600160a01b031614611bf7576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b611c557f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110611c6857fe5b60200260200101511015611cad5760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611ce957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611d957f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b84600081518110611da257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b505050506040513d6020811015611e2357600080fd5b5051611e2b57fe5b611e6a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b5095945050505050565b6000610dbe848484613d42565b60608142811015611ec7576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b611f257f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91508682600081518110611f3557fe5b6020026020010151111561131f5760405162461bcd60e51b81526004018080602001828103825260268152602001806144d96026913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610dbe848484613e32565b60008142811015611ff1576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b612020887f000000000000000000000000000000000000000000000000000000000000000089898930896124b8565b604080516370a0823160e01b815230600482015290519194506120a492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d602081101561209d57600080fd5b5051612fc4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561210a57600080fd5b505af115801561211e573d6000803e3d6000fd5b505050506110e88483613118565b8042811015612170576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560008181106121a757fe5b905060200201356001600160a01b03166001600160a01b031614612200576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6122d97f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d602081101561235357600080fd5b505161235b57fe5b60008686600019810181811061236d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b5051604080516020898102828101820190935289825292935061243e9290918a918a9182918501908490808284376000920191909152508992506139e7915050565b87611856828989600019810181811061245357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b60008082428110156124ff576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b600061252c7f00000000000000000000000000000000000000000000000000000000000000008c8c61344c565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b505050506040513d60208110156125b157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156125fe57600080fd5b505af1158015612612573d6000803e3d6000fd5b505050506040513d604081101561262857600080fd5b508051602090910151909250905060006126428e8e613ede565b509050806001600160a01b03168e6001600160a01b031614612665578183612668565b82825b90975095508a8710156126ac5760405162461bcd60e51b81526004018080602001828103825260258152602001806145c16025913960400191505060405180910390fd5b898610156126eb5760405162461bcd60e51b81526004018080602001828103825260258152602001806144006025913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606111207f00000000000000000000000000000000000000000000000000000000000000008484613300565b600080600061279d7f00000000000000000000000000000000000000000000000000000000000000008e7f000000000000000000000000000000000000000000000000000000000000000061344c565b90506000876127ac578c6127b0565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561282657600080fd5b505af115801561283a573d6000803e3d6000fd5b5050505061284c8e8e8e8e8e8e610c97565b909f909e509c50505050505050505050505050565b600080600083428110156128aa576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6128b88c8c8c8c8c8c613fbc565b909450925060006128ea7f00000000000000000000000000000000000000000000000000000000000000008e8e61344c565b90506128f88d33838861350c565b6129048c33838761350c565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d602081101561298657600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156129e6576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b612a148a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613fbc565b90945092506000612a667f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061344c565b9050612a748b33838861350c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612acf57600080fd5b505af1158015612ae3573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612b6857600080fd5b505af1158015612b7c573d6000803e3d6000fd5b505050506040513d6020811015612b9257600080fd5b5051612b9a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612bf257600080fd5b505af1158015612c06573d6000803e3d6000fd5b505050506040513d6020811015612c1c57600080fd5b5051925034841015612c3457612c3433853403613118565b505096509650969350505050565b60608142811015612c88576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110612cbf57fe5b905060200201356001600160a01b03166001600160a01b031614612d18576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b612d767f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91503482600081518110612d8657fe5b60200260200101511115612dcb5760405162461bcd60e51b81526004018080602001828103825260268152602001806144d96026913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110612e0757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e3a57600080fd5b505af1158015612e4e573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612eb37f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b84600081518110612ec057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b5051612f4957fe5b612f8882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b81600081518110612f9557fe5b6020026020010151341115611e6a57611e6a3383600081518110612fb557fe5b60200260200101513403613118565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106130415780518252601f199092019160209182019101613022565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a3576040519150601f19603f3d011682016040523d82523d6000602084013e6130a8565b606091505b50915091508180156130d65750805115806130d657508080602001905160208110156130d357600080fd5b50515b6131115760405162461bcd60e51b815260040180806020018281038252602d815260200180614543602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106131645780518252601f199092019160209182019101613145565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b505090508061320b5760405162461bcd60e51b815260040180806020018281038252603481526020018061447a6034913960400191505060405180910390fd5b505050565b60008084116132505760405162461bcd60e51b815260040180806020018281038252602a8152602001806143b6602a913960400191505060405180910390fd5b6000831180156132605750600082115b61329b5760405162461bcd60e51b81526004018080602001828103825260278152602001806145706027913960400191505060405180910390fd5b60006132af856126f263ffffffff61423016565b905060006132c3828563ffffffff61423016565b905060006132e9836132dd8861271063ffffffff61423016565b9063ffffffff61429316565b90508082816132f457fe5b04979650505050505050565b6060600282511015613359576040805162461bcd60e51b815260206004820152601d60248201527f5068656173616e744c6962726172793a20494e56414c49445f50415448000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561337157600080fd5b5060405190808252806020026020018201604052801561339b578160200160208202803683370190505b50905082816000815181106133ac57fe5b60200260200101818152505060005b6001835103811015613444576000806133fe878685815181106133da57fe5b60200260200101518786600101815181106133f157fe5b60200260200101516142e2565b9150915061342084848151811061341157fe5b60200260200101518383613210565b84846001018151811061342f57fe5b602090810291909101015250506001016133bb565b509392505050565b600080600061345b8585613ede565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527fc70f379f5b8a328cc6a6260d6d2391a9d001671af6e298516835de119ada32a1609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106135915780518252601f199092019160209182019101613572565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5091509150818015613626575080511580613626575080806020019051602081101561362357600080fd5b50515b6136615760405162461bcd60e51b81526004018080602001828103825260318152602001806144496031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156138a95760008084838151811061368757fe5b602002602001015185846001018151811061369e57fe5b60200260200101519150915060006136b68383613ede565b50905060008785600101815181106136ca57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146136f8578260006136fc565b6000835b91509150600060028a510388106137135788613754565b6137547f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061374757fe5b602002602001015161344c565b90506137817f0000000000000000000000000000000000000000000000000000000000000000888861344c565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156137be576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561382f578181015183820152602001613817565b50505050905090810190601f16801561385c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b50506001909901985061366c975050505050505050565b50505050565b6060600282511015613908576040805162461bcd60e51b815260206004820152601d60248201527f5068656173616e744c6962726172793a20494e56414c49445f50415448000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561392057600080fd5b5060405190808252806020026020018201604052801561394a578160200160208202803683370190505b509050828160018351038151811061395e57fe5b60209081029190910101528151600019015b8015613444576000806139a08786600186038151811061398c57fe5b60200260200101518786815181106133f157fe5b915091506139c28484815181106139b357fe5b60200260200101518383613d42565b8460018503815181106139d157fe5b6020908102919091010152505060001901613970565b60005b600183510381101561320b57600080848381518110613a0557fe5b6020026020010151858460010181518110613a1c57fe5b6020026020010151915091506000613a348383613ede565b5090506000613a647f0000000000000000000000000000000000000000000000000000000000000000858561344c565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613aa557600080fd5b505afa158015613ab9573d6000803e3d6000fd5b505050506040513d6060811015613acf57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613b05578284613b08565b83835b91509150613b66828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b9550613b73868383613210565b945050505050600080856001600160a01b0316886001600160a01b031614613b9d57826000613ba1565b6000835b91509150600060028c51038a10613bb8578a613bec565b613bec7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061374757fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613c76578181015183820152602001613c5e565b50505050905090810190601f168015613ca35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613cc557600080fd5b505af1158015613cd9573d6000803e3d6000fd5b50506001909b019a506139ea9950505050505050505050565b80820382811115611123576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808411613d825760405162461bcd60e51b815260040180806020018281038252602b8152602001806144ae602b913960400191505060405180910390fd5b600083118015613d925750600082115b613dcd5760405162461bcd60e51b81526004018080602001828103825260278152602001806145706027913960400191505060405180910390fd5b6000613df1612710613de5868863ffffffff61423016565b9063ffffffff61423016565b90506000613e0b6126f2613de5868963ffffffff613cf216565b9050613e286001828481613e1b57fe5b049063ffffffff61429316565b9695505050505050565b6000808411613e725760405162461bcd60e51b81526004018080602001828103825260248152602001806144ff6024913960400191505060405180910390fd5b600083118015613e825750600082115b613ebd5760405162461bcd60e51b81526004018080602001828103825260278152602001806145706027913960400191505060405180910390fd5b82613ece858463ffffffff61423016565b81613ed557fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613f325760405162461bcd60e51b81526004018080602001828103825260248152602001806144256024913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613f52578284613f55565b83835b90925090506001600160a01b038216613fb5576040805162461bcd60e51b815260206004820152601d60248201527f5068656173616e744c6962726172793a205a45524f5f41444452455353000000604482015290519081900360640190fd5b9250929050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561403657600080fd5b505afa15801561404a573d6000803e3d6000fd5b505050506040513d602081101561406057600080fd5b50516001600160a01b0316141561411357604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156140e657600080fd5b505af11580156140fa573d6000803e3d6000fd5b505050506040513d602081101561411057600080fd5b50505b6000806141417f00000000000000000000000000000000000000000000000000000000000000008b8b6142e2565b91509150816000148015614153575080155b1561416357879350869250614223565b6000614170898484613e32565b90508781116141c357858110156141b85760405162461bcd60e51b81526004018080602001828103825260258152602001806144006025913960400191505060405180910390fd5b889450925082614221565b60006141d0898486613e32565b9050898111156141dc57fe5b8781101561421b5760405162461bcd60e51b81526004018080602001828103825260258152602001806145c16025913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061424b5750508082028282828161424857fe5b04145b611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142f18585613ede565b5090506142ff86868661344c565b5060008061430e88888861344c565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561434657600080fd5b505afa15801561435a573d6000803e3d6000fd5b505050506040513d606081101561437057600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b03878116908416146143a35780826143a6565b81815b9099909850965050505050505056fe5068656173616e744c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e545068656173616e74526f757465723a20494e56414c49445f50415448000000005068656173616e74526f757465723a20494e53554646494349454e545f425f414d4f554e545068656173616e744c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645068656173616e744c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545068656173616e74526f757465723a204558434553534956455f494e5055545f414d4f554e545068656173616e744c6962726172793a20494e53554646494349454e545f414d4f554e545068656173616e74526f757465723a20455850495245440000000000000000005472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65645068656173616e744c6962726172793a20494e53554646494349454e545f4c49515549444954595068656173616e74526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545068656173616e74526f757465723a20494e53554646494349454e545f415f414d4f554e54a26469706673582212202c797a832cfc95fae90887b277725119d82037812ea9acea79d3d78fabf3092b64736f6c634300060600330000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f
Deployed Bytecode
0x60806040526004361061014f5760003560e01c80638803dbee116100b6578063c45a01551161006f578063c45a015514610a10578063d06ca61f14610a25578063ded9382a14610ada578063e8e3370014610b4d578063f305d71914610bcd578063fb3bdb4114610c1357610188565b80638803dbee146107df578063ad5c464814610875578063ad615dec146108a6578063af2979eb146108dc578063b6f9de951461092f578063baa2abde146109b357610188565b80634a25d94a116101085780634a25d94a146104f05780635b0d5984146105865780635c11d795146105f9578063791ac9471461068f5780637ff36ab51461072557806385f8c259146107a957610188565b806302751cec1461018d578063054d50d4146101f957806318cbafe5146102415780631f00ca74146103275780632195995c146103dc57806338ed17391461045a57610188565b3661018857336001600160a01b037f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f161461018657fe5b005b600080fd5b34801561019957600080fd5b506101e0600480360360c08110156101b057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c97565b6040805192835260208301919091528051918290030190f35b34801561020557600080fd5b5061022f6004803603606081101561021c57600080fd5b5080359060208101359060400135610db1565b60408051918252519081900360200190f35b34801561024d57600080fd5b506102d7600480360360a081101561026457600080fd5b813591602081013591810190606081016040820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460208302840111600160201b831117156102bd57600080fd5b91935091506001600160a01b038135169060200135610dc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103135781810151838201526020016102fb565b505050509050019250505060405180910390f35b34801561033357600080fd5b506102d76004803603604081101561034a57600080fd5b81359190810190604081016020820135600160201b81111561036b57600080fd5b82018360208201111561037d57600080fd5b803590602001918460208302840111600160201b8311171561039e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110f3945050505050565b3480156103e857600080fd5b506101e0600480360361016081101561040057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611129565b34801561046657600080fd5b506102d7600480360360a081101561047d57600080fd5b813591602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460208302840111600160201b831117156104d657600080fd5b91935091506001600160a01b038135169060200135611223565b3480156104fc57600080fd5b506102d7600480360360a081101561051357600080fd5b813591602081013591810190606081016040820135600160201b81111561053957600080fd5b82018360208201111561054b57600080fd5b803590602001918460208302840111600160201b8311171561056c57600080fd5b91935091506001600160a01b03813516906020013561136e565b34801561059257600080fd5b5061022f60048036036101408110156105aa57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356114fa565b34801561060557600080fd5b50610186600480360360a081101561061c57600080fd5b813591602081013591810190606081016040820135600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b91935091506001600160a01b038135169060200135611608565b34801561069b57600080fd5b50610186600480360360a08110156106b257600080fd5b813591602081013591810190606081016040820135600160201b8111156106d857600080fd5b8201836020820111156106ea57600080fd5b803590602001918460208302840111600160201b8311171561070b57600080fd5b91935091506001600160a01b03813516906020013561189d565b6102d76004803603608081101561073b57600080fd5b81359190810190604081016020820135600160201b81111561075c57600080fd5b82018360208201111561076e57600080fd5b803590602001918460208302840111600160201b8311171561078f57600080fd5b91935091506001600160a01b038135169060200135611b21565b3480156107b557600080fd5b5061022f600480360360608110156107cc57600080fd5b5080359060208101359060400135611e74565b3480156107eb57600080fd5b506102d7600480360360a081101561080257600080fd5b813591602081013591810190606081016040820135600160201b81111561082857600080fd5b82018360208201111561083a57600080fd5b803590602001918460208302840111600160201b8311171561085b57600080fd5b91935091506001600160a01b038135169060200135611e81565b34801561088157600080fd5b5061088a611f7a565b604080516001600160a01b039092168252519081900360200190f35b3480156108b257600080fd5b5061022f600480360360608110156108c957600080fd5b5080359060208101359060400135611f9e565b3480156108e857600080fd5b5061022f600480360360c08110156108ff57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611fab565b6101866004803603608081101561094557600080fd5b81359190810190604081016020820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460208302840111600160201b8311171561099957600080fd5b91935091506001600160a01b03813516906020013561212c565b3480156109bf57600080fd5b506101e0600480360360e08110156109d657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356124b8565b348015610a1c57600080fd5b5061088a6126fc565b348015610a3157600080fd5b506102d760048036036040811015610a4857600080fd5b81359190810190604081016020820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612720945050505050565b348015610ae657600080fd5b506101e06004803603610140811015610afe57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561274d565b348015610b5957600080fd5b50610baf6004803603610100811015610b7157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612861565b60408051938452602084019290925282820152519081900360600190f35b610baf600480360360c0811015610be357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561299d565b6102d760048036036080811015610c2957600080fd5b81359190810190604081016020820135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b91935091506001600160a01b038135169060200135612c42565b6000808242811015610cde576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b610d0d897f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f8a8a8a308a6124b8565b9093509150610d1d898685612fc4565b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b50505050610da58583613118565b50965096945050505050565b6000610dbe848484613210565b949350505050565b60608142811015610e0c576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f1686866000198101818110610e4657fe5b905060200201356001600160a01b03166001600160a01b031614610e9f576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b610efd7f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110610f1057fe5b60200260200101511015610f555760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b610ff386866000818110610f6557fe5b905060200201356001600160a01b031633610fd97f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848a8a6000818110610fa757fe5b905060200201356001600160a01b03168b8b6001818110610fc457fe5b905060200201356001600160a01b031661344c565b85600081518110610fe657fe5b602002602001015161350c565b61103282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613669915050565b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b0316632e1a7d4d8360018551038151811061107157fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b505050506110e884836001855103815181106110db57fe5b6020026020010151613118565b509695505050505050565b60606111207f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e10738484846138af565b90505b92915050565b60008060006111597f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848f8f61344c565b9050600087611168578c61116c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111e257600080fd5b505af11580156111f6573d6000803e3d6000fd5b505050506112098f8f8f8f8f8f8f6124b8565b809450819550505050509b509b9950505050505050505050565b60608142811015611269576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6112c77f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b915086826001845103815181106112da57fe5b6020026020010151101561131f5760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b61132f86866000818110610f6557fe5b6110e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b606081428110156113b4576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f16868660001981018181106113ee57fe5b905060200201356001600160a01b03166001600160a01b031614611447576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b6114a57f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b915086826000815181106114b557fe5b60200260200101511115610f555760405162461bcd60e51b81526004018080602001828103825260268152602001806144d96026913960400191505060405180910390fd5b6000806115487f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848d7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f61344c565b9050600086611557578b61155b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050506115f78d8d8d8d8d8d611fab565b9d9c50505050505050505050505050565b804281101561164c576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6116c18585600081811061165c57fe5b905060200201356001600160a01b0316336116bb7f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848989600081811061169e57fe5b905060200201356001600160a01b03168a8a6001818110610fc457fe5b8a61350c565b6000858560001981018181106116d357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173857600080fd5b505afa15801561174c573d6000803e3d6000fd5b505050506040513d602081101561176257600080fd5b505160408051602088810282810182019093528882529293506117a49290918991899182918501908490808284376000920191909152508892506139e7915050565b8661185682888860001981018181106117b957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b505afa158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b50519063ffffffff613cf216565b10156118935760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b5050505050505050565b80428110156118e1576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f168585600019810181811061191b57fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b6119848585600081811061165c57fe5b6119c28585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506139e7915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f16916370a0823191602480820192602092909190829003018186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051905086811015611a995760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050506118938482613118565b60608142811015611b67576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031686866000818110611b9e57fe5b905060200201356001600160a01b03166001600160a01b031614611bf7576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b611c557f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073843488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110611c6857fe5b60200260200101511015611cad5760405162461bcd60e51b815260040180806020018281038252602a815260200180614597602a913960400191505060405180910390fd5b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663d0e30db083600081518110611ce957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050507f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663a9059cbb611d957f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848989600081811061169e57fe5b84600081518110611da257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b505050506040513d6020811015611e2357600080fd5b5051611e2b57fe5b611e6a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b5095945050505050565b6000610dbe848484613d42565b60608142811015611ec7576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b611f257f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91508682600081518110611f3557fe5b6020026020010151111561131f5760405162461bcd60e51b81526004018080602001828103825260268152602001806144d96026913960400191505060405180910390fd5b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f81565b6000610dbe848484613e32565b60008142811015611ff1576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b612020887f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f89898930896124b8565b604080516370a0823160e01b815230600482015290519194506120a492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d602081101561209d57600080fd5b5051612fc4565b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561210a57600080fd5b505af115801561211e573d6000803e3d6000fd5b505050506110e88483613118565b8042811015612170576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b0316858560008181106121a757fe5b905060200201356001600160a01b03166001600160a01b031614612200576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b60003490507f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b50505050507f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663a9059cbb6122d97f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848989600081811061169e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d602081101561235357600080fd5b505161235b57fe5b60008686600019810181811061236d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b5051604080516020898102828101820190935289825292935061243e9290918a918a9182918501908490808284376000920191909152508992506139e7915050565b87611856828989600019810181811061245357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b60008082428110156124ff576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b600061252c7f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848c8c61344c565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b505050506040513d60208110156125b157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156125fe57600080fd5b505af1158015612612573d6000803e3d6000fd5b505050506040513d604081101561262857600080fd5b508051602090910151909250905060006126428e8e613ede565b509050806001600160a01b03168e6001600160a01b031614612665578183612668565b82825b90975095508a8710156126ac5760405162461bcd60e51b81526004018080602001828103825260258152602001806145c16025913960400191505060405180910390fd5b898610156126eb5760405162461bcd60e51b81526004018080602001828103825260258152602001806144006025913960400191505060405180910390fd5b505050505097509795505050505050565b7f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e10738481565b60606111207f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848484613300565b600080600061279d7f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848e7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f61344c565b90506000876127ac578c6127b0565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561282657600080fd5b505af115801561283a573d6000803e3d6000fd5b5050505061284c8e8e8e8e8e8e610c97565b909f909e509c50505050505050505050505050565b600080600083428110156128aa576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b6128b88c8c8c8c8c8c613fbc565b909450925060006128ea7f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848e8e61344c565b90506128f88d33838861350c565b6129048c33838761350c565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d602081101561298657600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156129e6576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b612a148a7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f8b348c8c613fbc565b90945092506000612a667f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848c7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f61344c565b9050612a748b33838861350c565b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612acf57600080fd5b505af1158015612ae3573d6000803e3d6000fd5b50505050507f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612b6857600080fd5b505af1158015612b7c573d6000803e3d6000fd5b505050506040513d6020811015612b9257600080fd5b5051612b9a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612bf257600080fd5b505af1158015612c06573d6000803e3d6000fd5b505050506040513d6020811015612c1c57600080fd5b5051925034841015612c3457612c3433853403613118565b505096509650969350505050565b60608142811015612c88576040805162461bcd60e51b81526020600482015260176024820152600080516020614523833981519152604482015290519081900360640190fd5b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031686866000818110612cbf57fe5b905060200201356001600160a01b03166001600160a01b031614612d18576040805162461bcd60e51b815260206004820152601c60248201526000805160206143e0833981519152604482015290519081900360640190fd5b612d767f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91503482600081518110612d8657fe5b60200260200101511115612dcb5760405162461bcd60e51b81526004018080602001828103825260268152602001806144d96026913960400191505060405180910390fd5b7f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663d0e30db083600081518110612e0757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e3a57600080fd5b505af1158015612e4e573d6000803e3d6000fd5b50505050507f000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f6001600160a01b031663a9059cbb612eb37f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848989600081811061169e57fe5b84600081518110612ec057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b5051612f4957fe5b612f8882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b81600081518110612f9557fe5b6020026020010151341115611e6a57611e6a3383600081518110612fb557fe5b60200260200101513403613118565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106130415780518252601f199092019160209182019101613022565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a3576040519150601f19603f3d011682016040523d82523d6000602084013e6130a8565b606091505b50915091508180156130d65750805115806130d657508080602001905160208110156130d357600080fd5b50515b6131115760405162461bcd60e51b815260040180806020018281038252602d815260200180614543602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106131645780518252601f199092019160209182019101613145565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b505090508061320b5760405162461bcd60e51b815260040180806020018281038252603481526020018061447a6034913960400191505060405180910390fd5b505050565b60008084116132505760405162461bcd60e51b815260040180806020018281038252602a8152602001806143b6602a913960400191505060405180910390fd5b6000831180156132605750600082115b61329b5760405162461bcd60e51b81526004018080602001828103825260278152602001806145706027913960400191505060405180910390fd5b60006132af856126f263ffffffff61423016565b905060006132c3828563ffffffff61423016565b905060006132e9836132dd8861271063ffffffff61423016565b9063ffffffff61429316565b90508082816132f457fe5b04979650505050505050565b6060600282511015613359576040805162461bcd60e51b815260206004820152601d60248201527f5068656173616e744c6962726172793a20494e56414c49445f50415448000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561337157600080fd5b5060405190808252806020026020018201604052801561339b578160200160208202803683370190505b50905082816000815181106133ac57fe5b60200260200101818152505060005b6001835103811015613444576000806133fe878685815181106133da57fe5b60200260200101518786600101815181106133f157fe5b60200260200101516142e2565b9150915061342084848151811061341157fe5b60200260200101518383613210565b84846001018151811061342f57fe5b602090810291909101015250506001016133bb565b509392505050565b600080600061345b8585613ede565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527fc70f379f5b8a328cc6a6260d6d2391a9d001671af6e298516835de119ada32a1609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106135915780518252601f199092019160209182019101613572565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5091509150818015613626575080511580613626575080806020019051602081101561362357600080fd5b50515b6136615760405162461bcd60e51b81526004018080602001828103825260318152602001806144496031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156138a95760008084838151811061368757fe5b602002602001015185846001018151811061369e57fe5b60200260200101519150915060006136b68383613ede565b50905060008785600101815181106136ca57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146136f8578260006136fc565b6000835b91509150600060028a510388106137135788613754565b6137547f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384878c8b6002018151811061374757fe5b602002602001015161344c565b90506137817f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384888861344c565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156137be576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561382f578181015183820152602001613817565b50505050905090810190601f16801561385c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b50506001909901985061366c975050505050505050565b50505050565b6060600282511015613908576040805162461bcd60e51b815260206004820152601d60248201527f5068656173616e744c6962726172793a20494e56414c49445f50415448000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561392057600080fd5b5060405190808252806020026020018201604052801561394a578160200160208202803683370190505b509050828160018351038151811061395e57fe5b60209081029190910101528151600019015b8015613444576000806139a08786600186038151811061398c57fe5b60200260200101518786815181106133f157fe5b915091506139c28484815181106139b357fe5b60200260200101518383613d42565b8460018503815181106139d157fe5b6020908102919091010152505060001901613970565b60005b600183510381101561320b57600080848381518110613a0557fe5b6020026020010151858460010181518110613a1c57fe5b6020026020010151915091506000613a348383613ede565b5090506000613a647f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384858561344c565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613aa557600080fd5b505afa158015613ab9573d6000803e3d6000fd5b505050506040513d6060811015613acf57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613b05578284613b08565b83835b91509150613b66828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b9550613b73868383613210565b945050505050600080856001600160a01b0316886001600160a01b031614613b9d57826000613ba1565b6000835b91509150600060028c51038a10613bb8578a613bec565b613bec7f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384898e8d6002018151811061374757fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613c76578181015183820152602001613c5e565b50505050905090810190601f168015613ca35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613cc557600080fd5b505af1158015613cd9573d6000803e3d6000fd5b50506001909b019a506139ea9950505050505050505050565b80820382811115611123576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808411613d825760405162461bcd60e51b815260040180806020018281038252602b8152602001806144ae602b913960400191505060405180910390fd5b600083118015613d925750600082115b613dcd5760405162461bcd60e51b81526004018080602001828103825260278152602001806145706027913960400191505060405180910390fd5b6000613df1612710613de5868863ffffffff61423016565b9063ffffffff61423016565b90506000613e0b6126f2613de5868963ffffffff613cf216565b9050613e286001828481613e1b57fe5b049063ffffffff61429316565b9695505050505050565b6000808411613e725760405162461bcd60e51b81526004018080602001828103825260248152602001806144ff6024913960400191505060405180910390fd5b600083118015613e825750600082115b613ebd5760405162461bcd60e51b81526004018080602001828103825260278152602001806145706027913960400191505060405180910390fd5b82613ece858463ffffffff61423016565b81613ed557fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613f325760405162461bcd60e51b81526004018080602001828103825260248152602001806144256024913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613f52578284613f55565b83835b90925090506001600160a01b038216613fb5576040805162461bcd60e51b815260206004820152601d60248201527f5068656173616e744c6962726172793a205a45524f5f41444452455353000000604482015290519081900360640190fd5b9250929050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073849092169163e6a4390591604480820192602092909190829003018186803b15801561403657600080fd5b505afa15801561404a573d6000803e3d6000fd5b505050506040513d602081101561406057600080fd5b50516001600160a01b0316141561411357604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073849092169163c9c65396916044808201926020929091908290030181600087803b1580156140e657600080fd5b505af11580156140fa573d6000803e3d6000fd5b505050506040513d602081101561411057600080fd5b50505b6000806141417f0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e1073848b8b6142e2565b91509150816000148015614153575080155b1561416357879350869250614223565b6000614170898484613e32565b90508781116141c357858110156141b85760405162461bcd60e51b81526004018080602001828103825260258152602001806144006025913960400191505060405180910390fd5b889450925082614221565b60006141d0898486613e32565b9050898111156141dc57fe5b8781101561421b5760405162461bcd60e51b81526004018080602001828103825260258152602001806145c16025913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061424b5750508082028282828161424857fe5b04145b611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142f18585613ede565b5090506142ff86868661344c565b5060008061430e88888861344c565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561434657600080fd5b505afa15801561435a573d6000803e3d6000fd5b505050506040513d606081101561437057600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b03878116908416146143a35780826143a6565b81815b9099909850965050505050505056fe5068656173616e744c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e545068656173616e74526f757465723a20494e56414c49445f50415448000000005068656173616e74526f757465723a20494e53554646494349454e545f425f414d4f554e545068656173616e744c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645068656173616e744c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545068656173616e74526f757465723a204558434553534956455f494e5055545f414d4f554e545068656173616e744c6962726172793a20494e53554646494349454e545f414d4f554e545068656173616e74526f757465723a20455850495245440000000000000000005472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65645068656173616e744c6962726172793a20494e53554646494349454e545f4c49515549444954595068656173616e74526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545068656173616e74526f757465723a20494e53554646494349454e545f415f414d4f554e54a26469706673582212202c797a832cfc95fae90887b277725119d82037812ea9acea79d3d78fabf3092b64736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f
-----Decoded View---------------
Arg [0] : _factory (address): 0x7bf960B15Cbd9976042257Be3F6Bb2361E107384
Arg [1] : _WETH (address): 0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007bf960b15cbd9976042257be3f6bb2361e107384
Arg [1] : 000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f
Deployed Bytecode Sourcemap
18357:19330:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18838:10;-1:-1:-1;;;;;18852:4:0;18838:18;;18831:26;;;;18357:19330;;12:1:-1;9;2:12;23273:691:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23273:691:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23273:691:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;36635:256;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36635:256:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;36635:256:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;30751:897;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30751:897:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;30751:897:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;30751:897:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;30751:897:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;30751:897:0;;-1:-1:-1;30751:897:0;-1:-1:-1;;;;;;30751:897:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30751:897:0;;;;;;;;;;;;;;;;;37427:257;;5:9:-1;2:2;;;27:1;24;17:12;2:2;37427:257:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;37427:257:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;37427:257:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;37427:257:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;37427:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;37427:257:0;;-1:-1:-1;37427:257:0;;-1:-1:-1;;;;;37427:257:0:i;23972:724::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23972:724:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23972:724:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;27834:674::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27834:674:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27834:674:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27834:674:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27834:674:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27834:674:0;;-1:-1:-1;27834:674:0;-1:-1:-1;;;;;;27834:674:0;;;;;;;;:::i;29868:875::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29868:875:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;29868:875:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;29868:875:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;29868:875:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29868:875:0;;-1:-1:-1;29868:875:0;-1:-1:-1;;;;;;29868:875:0;;;;;;;;:::i;26120:827::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26120:827:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;26120:827:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;33916:762::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33916:762:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;33916:762:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;33916:762:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;33916:762:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;33916:762:0;;-1:-1:-1;33916:762:0;-1:-1:-1;;;;;;33916:762:0;;;;;;;;:::i;35502:849::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35502:849:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;35502:849:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;35502:849:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;35502:849:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;35502:849:0;;-1:-1:-1;35502:849:0;-1:-1:-1;;;;;;35502:849:0;;;;;;;;:::i;29176:684::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;29176:684:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;29176:684:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;29176:684:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;29176:684:0;;-1:-1:-1;29176:684:0;-1:-1:-1;;;;;;29176:684:0;;;;;;;;:::i;36899:255::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36899:255:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;36899:255:0;;;;;;;;;;;;:::i;28516:652::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28516:652:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;28516:652:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;28516:652:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;28516:652:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;28516:652:0;;-1:-1:-1;28516:652:0;-1:-1:-1;;;;;;28516:652:0;;;;;;;;:::i;18490:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18490:38:0;;;:::i;:::-;;;;-1:-1:-1;;;;;18490:38:0;;;;;;;;;;;;;;36395:232;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36395:232:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;36395:232:0;;;;;;;;;;;;:::i;25499:613::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25499:613:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;25499:613:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34686:808::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;34686:808:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;34686:808:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34686:808:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34686:808:0;;-1:-1:-1;34686:808:0;-1:-1:-1;;;;;;34686:808:0;;;;;;;;:::i;22385:880::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22385:880:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22385:880:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18442:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18442:41:0;;;:::i;37162:257::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;37162:257:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;37162:257:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;37162:257:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;37162:257:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;37162:257:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;37162:257:0;;-1:-1:-1;37162:257:0;;-1:-1:-1;;;;;37162:257:0:i;24704:716::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24704:716:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;24704:716:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20376:858::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20376:858:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;20376:858:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;21242:1100;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;21242:1100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31656:797::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;31656:797:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;31656:797:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;31656:797:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31656:797:0;;-1:-1:-1;31656:797:0;-1:-1:-1;;;;;;31656:797:0;;;;;;;;:::i;23273:691::-;23522:19;23543:17;23503:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;23600:196:::1;23630:5;23650:4;23669:9;23693:14;23722:12;23757:4;23777:8;23600:15;:196::i;:::-;23573:223:::0;;-1:-1:-1;23573:223:0;-1:-1:-1;23807:51:0::1;23835:5:::0;23842:2;23573:223;23807:27:::1;:51::i;:::-;23875:4;-1:-1:-1::0;;;;;23869:20:0::1;;23890:9;23869:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23869:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23869:31:0;;;;23911:45;23942:2;23946:9;23911:30;:45::i;:::-;23273:691:::0;;;;;;;;;;:::o;36635:256::-;36786:17;36823:60;36851:8;36861:9;36872:10;36823:27;:60::i;:::-;36816:67;36635:256;-1:-1:-1;;;;36635:256:0:o;30751:897::-;30981:24;30962:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31051:4:0::1;31026:29;:4:::0;;-1:-1:-1;;31031:15:0;;31026:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31026:21:0::1;-1:-1:-1::0;;;;;31026:29:0::1;;31018:70;;;::::0;;-1:-1:-1;;;31018:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;31018:70:0;;;;;;;;;;;;;::::1;;31109:53;31138:7;31147:8;31157:4;;31109:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;31109:28:0::1;::::0;-1:-1:-1;;;31109:53:0:i:1;:::-;31099:63;;31212:12;31181:7;31206:1;31189:7;:14;:18;31181:27;;;;;;;;;;;;;;:43;;31173:98;;;;-1:-1:-1::0;;;31173:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31282:178;31328:4;;31333:1;31328:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31328:7:0::1;31350:10;31375:49;31398:7;31407:4;;31412:1;31407:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31407:7:0::1;31416:4;;31421:1;31416:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31416:7:0::1;31375:22;:49::i;:::-;31439:7;31447:1;31439:10;;;;;;;;;;;;;;31282:31;:178::i;:::-;31471:35;31477:7;31486:4;;31471:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;31500:4:0::1;::::0;-1:-1:-1;31471:5:0::1;::::0;-1:-1:-1;;31471:35:0:i:1;:::-;31523:4;-1:-1:-1::0;;;;;31517:20:0::1;;31538:7;31563:1;31546:7;:14;:18;31538:27;;;;;;;;;;;;;;31517:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31517:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31517:49:0;;;;31577:63;31608:2;31612:7;31637:1;31620:7;:14;:18;31612:27;;;;;;;;;;;;;;31577:30;:63::i;:::-;30751:897:::0;;;;;;;;;:::o;37427:257::-;37574:24;37623:53;37651:7;37660:9;37671:4;37623:27;:53::i;:::-;37616:60;;37427:257;;;;;:::o;23972:724::-;24317:15;24334;24362:12;24377:47;24400:7;24409:6;24417;24377:22;:47::i;:::-;24362:62;;24435:13;24451:10;:36;;24478:9;24451:36;;;-1:-1:-1;;24451:36:0;24498:78;;;-1:-1:-1;;;24498:78:0;;24524:10;24498:78;;;;24544:4;24498:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24435:52;;-1:-1:-1;;;;;;24498:25:0;;;;;:78;;;;;-1:-1:-1;;24498:78:0;;;;;;;;-1:-1:-1;24498:25:0;:78;;;2:2:-1;;;;27:1;24;17:12;2:2;24498:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24498:78:0;;;;24608:80;24624:6;24632;24640:9;24651:10;24663;24675:2;24679:8;24608:15;:80::i;:::-;24587:101;;;;;;;;23972:724;;;;;;;;;;;;;;;;:::o;27834:674::-;28067:24;28048:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;28114:53:::1;28143:7;28152:8;28162:4;;28114:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28114:28:0::1;::::0;-1:-1:-1;;;28114:53:0:i:1;:::-;28104:63;;28217:12;28186:7;28211:1;28194:7;:14;:18;28186:27;;;;;;;;;;;;;;:43;;28178:98;;;;-1:-1:-1::0;;;28178:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28287:178;28333:4;;28338:1;28333:7;;;;;;28287:178;28476:24;28482:7;28491:4;;28476:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28497:2:0;;-1:-1:-1;28476:5:0::1;::::0;-1:-1:-1;;28476:24:0:i:1;29868:875::-:0;30098:24;30079:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30168:4:0::1;30143:29;:4:::0;;-1:-1:-1;;30148:15:0;;30143:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;30143:21:0::1;-1:-1:-1::0;;;;;30143:29:0::1;;30135:70;;;::::0;;-1:-1:-1;;;30135:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;30135:70:0;;;;;;;;;;;;;::::1;;30226:53;30254:7;30263:9;30274:4;;30226:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;30226:27:0::1;::::0;-1:-1:-1;;;30226:53:0:i:1;:::-;30216:63;;30312:11;30298:7;30306:1;30298:10;;;;;;;;;;;;;;:25;;30290:76;;;;-1:-1:-1::0;;;30290:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26120:827:::0;26477:17;26507:12;26522:44;26545:7;26554:5;26561:4;26522:22;:44::i;:::-;26507:59;;26577:13;26593:10;:36;;26620:9;26593:36;;;-1:-1:-1;;26593:36:0;26640:78;;;-1:-1:-1;;;26640:78:0;;26666:10;26640:78;;;;26686:4;26640:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26577:52;;-1:-1:-1;;;;;;26640:25:0;;;;;:78;;;;;-1:-1:-1;;26640:78:0;;;;;;;;-1:-1:-1;26640:25:0;:78;;;2:2:-1;;;;27:1;24;17:12;2:2;26640:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26640:78:0;;;;26741:198;26803:5;26823:9;26847:14;26876:12;26903:2;26920:8;26741:47;:198::i;:::-;26729:210;26120:827;-1:-1:-1;;;;;;;;;;;;;26120:827:0:o;33916:762::-;34159:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;34180:176:::1;34226:4;;34231:1;34226:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;34226:7:0::1;34248:10;34273:49;34296:7;34305:4;;34310:1;34305:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;34305:7:0::1;34314:4;;34319:1;34314:7;;;;;;34273:49;34337:8;34180:31;:176::i;:::-;34367:21;34398:4:::0;;-1:-1:-1;;34403:15:0;;34398:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;34398:21:0::1;-1:-1:-1::0;;;;;34391:39:0::1;;34431:2;34391:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;34391:43:0::1;-1:-1:-1::0;;;;;34391:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;34391:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;34391:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;34391:43:0;34445:44:::1;::::0;;34391:43:::1;34445:44:::0;;::::1;::::0;;;;;;;;;;;34391:43;;-1:-1:-1;34445:44:0::1;::::0;;;34480:4;;;;;;34445:44;::::1;::::0;34480:4;;34445:44;34480:4;34445:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;34486:2:0;;-1:-1:-1;34445:34:0::1;::::0;-1:-1:-1;;34445:44:0:i:1;:::-;34588:12:::0;34522:62:::1;34570:13:::0;34529:4;;-1:-1:-1;;34534:15:0;;34529:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;34529:21:0::1;-1:-1:-1::0;;;;;34522:39:0::1;;34562:2;34522:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;34522:43:0::1;-1:-1:-1::0;;;;;34522:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;34522:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;34522:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;34522:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;34500:170;;;;-1:-1:-1::0;;;34500:170:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18656:1;33916:762:::0;;;;;;;:::o;35502:849::-;35742:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;35796:4:0::1;35771:29;:4:::0;;-1:-1:-1;;35776:15:0;;35771:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;35771:21:0::1;-1:-1:-1::0;;;;;35771:29:0::1;;35763:70;;;::::0;;-1:-1:-1;;;35763:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;35763:70:0;;;;;;;;;;;;;::::1;;35844:176;35890:4;;35895:1;35890:7;;;;;;35844:176;36031:55;36066:4;;36031:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;36080:4:0::1;::::0;-1:-1:-1;36031:34:0::1;::::0;-1:-1:-1;;36031:55:0:i:1;:::-;36117:37;::::0;;-1:-1:-1;;;36117:37:0;;36148:4:::1;36117:37;::::0;::::1;::::0;;;36097:17:::1;::::0;-1:-1:-1;;;;;36124:4:0::1;36117:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;36117:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;36117:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;36117:37:0;;-1:-1:-1;36173:25:0;;::::1;;36165:80;;;;-1:-1:-1::0;;;36165:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36262:4;-1:-1:-1::0;;;;;36256:20:0::1;;36277:9;36256:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;36256:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;36256:31:0;;;;36298:45;36329:2;36333:9;36298:30;:45::i;29176:684::-:0;29387:24;29368:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;29443:4:::1;-1:-1:-1::0;;;;;29432:15:0::1;:4;;29437:1;29432:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29432:7:0::1;-1:-1:-1::0;;;;;29432:15:0::1;;29424:56;;;::::0;;-1:-1:-1;;;29424:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;29424:56:0;;;;;;;;;;;;;::::1;;29501:54;29530:7;29539:9;29550:4;;29501:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29501:28:0::1;::::0;-1:-1:-1;;;29501:54:0:i:1;:::-;29491:64;;29605:12;29574:7;29599:1;29582:7;:14;:18;29574:27;;;;;;;;;;;;;;:43;;29566:98;;;;-1:-1:-1::0;;;29566:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29681:4;-1:-1:-1::0;;;;;29675:19:0::1;;29702:7;29710:1;29702:10;;;;;;;;;;;;;;29675:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29675:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29675:40:0;;;;;29739:4;-1:-1:-1::0;;;;;29733:20:0::1;;29754:49;29777:7;29786:4;;29791:1;29786:7;;;;;;29754:49;29805:7;29813:1;29805:10;;;;;;;;;;;;;;29733:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;29733:83:0::1;-1:-1:-1::0;;;;;29733:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29733:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29733:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;29733:83:0;29726:91:::1;;;;29828:24;29834:7;29843:4;;29828:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29849:2:0;;-1:-1:-1;29828:5:0::1;::::0;-1:-1:-1;;29828:24:0:i:1;:::-;29176:684:::0;;;;;;;;:::o;36899:255::-;37050:16;37086:60;37113:9;37124;37135:10;37086:26;:60::i;28516:652::-;28749:24;28730:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;28796:53:::1;28824:7;28833:9;28844:4;;28796:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28796:27:0::1;::::0;-1:-1:-1;;;28796:53:0:i:1;:::-;28786:63;;28882:11;28868:7;28876:1;28868:10;;;;;;;;;;;;;;:25;;28860:76;;;;-1:-1:-1::0;;;28860:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18490:38:::0;;;:::o;36395:232::-;36535:15;36570:49;36591:7;36600:8;36610;36570:20;:49::i;25499:613::-;25777:17;25758:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;25823:94:::1;25839:5;25846:4;25852:9;25863:14;25879:12;25901:4;25908:8;25823:15;:94::i;:::-;25967:38;::::0;;-1:-1:-1;;;25967:38:0;;25999:4:::1;25967:38;::::0;::::1;::::0;;;25807:110;;-1:-1:-1;25928:78:0::1;::::0;-1:-1:-1;25956:5:0;;25963:2;;-1:-1:-1;;;;;25967:23:0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;25967:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;25967:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;25967:38:0;25928:27:::1;:78::i;:::-;26023:4;-1:-1:-1::0;;;;;26017:20:0::1;;26038:9;26017:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;26017:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;26017:31:0;;;;26059:45;26090:2;26094:9;26059:30;:45::i;34686:808::-:0;34907:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;34947:4:::1;-1:-1:-1::0;;;;;34936:15:0::1;:4;;34941:1;34936:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;34936:7:0::1;-1:-1:-1::0;;;;;34936:15:0::1;;34928:56;;;::::0;;-1:-1:-1;;;34928:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;34928:56:0;;;;;;;;;;;;;::::1;;34995:16;35014:9;34995:28;;35040:4;-1:-1:-1::0;;;;;35034:19:0::1;;35061:8;35034:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;35034:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;35034:38:0;;;;;35096:4;-1:-1:-1::0;;;;;35090:20:0::1;;35111:49;35134:7;35143:4;;35148:1;35143:7;;;;;;35111:49;35162:8;35090:81;;;;;;;;;;;;;-1:-1:-1::0;;;;;35090:81:0::1;-1:-1:-1::0;;;;;35090:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;35090:81:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;35090:81:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;35090:81:0;35083:89:::1;;;;35183:21;35214:4:::0;;-1:-1:-1;;35219:15:0;;35214:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;35214:21:0::1;-1:-1:-1::0;;;;;35207:39:0::1;;35247:2;35207:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;35207:43:0::1;-1:-1:-1::0;;;;;35207:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;35207:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;35207:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;35207:43:0;35261:44:::1;::::0;;35207:43:::1;35261:44:::0;;::::1;::::0;;;;;;;;;;;35207:43;;-1:-1:-1;35261:44:0::1;::::0;;;35296:4;;;;;;35261:44;::::1;::::0;35296:4;;35261:44;35296:4;35261:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;35302:2:0;;-1:-1:-1;35261:34:0::1;::::0;-1:-1:-1;;35261:44:0:i:1;:::-;35404:12:::0;35338:62:::1;35386:13:::0;35345:4;;-1:-1:-1;;35350:15:0;;35345:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;35345:21:0::1;-1:-1:-1::0;;;;;35338:39:0::1;;35378:2;35338:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;35338:43:0::1;-1:-1:-1::0;;;;;35338:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;22385:880:0::0;22651:15;22668;22632:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;22696:12:::1;22711:47;22734:7;22743:6;22751;22711:22;:47::i;:::-;22769:60;::::0;;-1:-1:-1;;;22769:60:0;;22801:10:::1;22769:60;::::0;::::1;::::0;-1:-1:-1;;;;;22769:31:0;::::1;:60:::0;;;;;;;;;;;;;;22696:62;;-1:-1:-1;22769:31:0;;::::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;22769:31:0;:60;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22769:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22769:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;22903:27:0::1;::::0;;-1:-1:-1;;;22903:27:0;;-1:-1:-1;;;;;22903:27:0;;::::1;;::::0;::::1;::::0;;;22867:15:::1;::::0;;;22903:23;;::::1;::::0;::::1;::::0;:27;;;;;;;;;;;22867:15;22903:23;:27;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22903:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22903:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22903:27:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;22903:27:0;-1:-1:-1;22942:14:0::1;22962:41;22988:6:::0;22996;22962:25:::1;:41::i;:::-;22941:62;;;23045:6;-1:-1:-1::0;;;;;23035:16:0::1;:6;-1:-1:-1::0;;;;;23035:16:0::1;;:58;;23076:7;23085;23035:58;;;23055:7;23064;23035:58;23014:79:::0;;-1:-1:-1;23014:79:0;-1:-1:-1;23112:21:0;;::::1;;23104:71;;;;-1:-1:-1::0;;;23104:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23205:10;23194:7;:21;;23186:71;;;;-1:-1:-1::0;;;23186:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18656:1;;;;22385:880:::0;;;;;;;;;;;:::o;18442:41::-;;;:::o;37162:257::-;37309:24;37358:53;37387:7;37396:8;37406:4;37358:28;:53::i;24704:716::-;25032:19;25053:17;25083:12;25098:44;25121:7;25130:5;25137:4;25098:22;:44::i;:::-;25083:59;;25153:13;25169:10;:36;;25196:9;25169:36;;;-1:-1:-1;;25169:36:0;25216:78;;;-1:-1:-1;;;25216:78:0;;25242:10;25216:78;;;;25262:4;25216:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25153:52;;-1:-1:-1;;;;;;25216:25:0;;;;;:78;;;;;-1:-1:-1;;25216:78:0;;;;;;;;-1:-1:-1;25216:25:0;:78;;;2:2:-1;;;;27:1;24;17:12;2:2;25216:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25216:78:0;;;;25332:80;25351:5;25358:9;25369:14;25385:12;25399:2;25403:8;25332:18;:80::i;:::-;25305:107;;;;-1:-1:-1;24704:716:0;-1:-1:-1;;;;;;;;;;;;;24704:716:0:o;20376:858::-;20738:15;20768;20798:17;20696:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;20864:85:::1;20878:6;20886;20894:14;20910;20926:10;20938;20864:13;:85::i;:::-;20843:106:::0;;-1:-1:-1;20843:106:0;-1:-1:-1;20960:12:0::1;20975:47;20998:7;21007:6:::0;21015;20975:22:::1;:47::i;:::-;20960:62;;21033:66;21065:6;21073:10;21085:4;21091:7;21033:31;:66::i;:::-;21110;21142:6;21150:10;21162:4;21168:7;21110:31;:66::i;:::-;21212:4;-1:-1:-1::0;;;;;21199:23:0::1;;21223:2;21199:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;21199:27:0::1;-1:-1:-1::0;;;;;21199:27:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21199:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21199:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;21199:27:0;20376:858;;;;-1:-1:-1;21199:27:0;;-1:-1:-1;20376:858:0;;-1:-1:-1;;;;;;;;;20376:858:0:o;21242:1100::-;21575:19;21609:17;21641;21533:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;21713:176:::1;21741:5;21761:4;21780:18;21813:9;21837:14;21866:12;21713:13;:176::i;:::-;21686:203:::0;;-1:-1:-1;21686:203:0;-1:-1:-1;21900:12:0::1;21915:44;21938:7;21947:5:::0;21954:4:::1;21915:22;:44::i;:::-;21900:59;;21970:69;22002:5;22009:10;22021:4;22027:11;21970:31;:69::i;:::-;22056:4;-1:-1:-1::0;;;;;22050:19:0::1;;22077:9;22050:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;22050:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22050:39:0;;;;;22113:4;-1:-1:-1::0;;;;;22107:20:0::1;;22128:4;22134:9;22107:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;22107:37:0::1;-1:-1:-1::0;;;;;22107:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;22107:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22107:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22107:37:0;22100:45:::1;;;;22181:4;-1:-1:-1::0;;;;;22168:23:0::1;;22192:2;22168:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;22168:27:0::1;-1:-1:-1::0;;;;;22168:27:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;22168:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22168:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22168:27:0;;-1:-1:-1;22246:9:0::1;:21:::0;-1:-1:-1;22242:92:0::1;;;22269:65;22300:10;22324:9;22312;:21;22269:30;:65::i;:::-;18656:1;21242:1100:::0;;;;;;;;;;;:::o;31656:797::-;31864:24;31845:8;18602:15;18590:8;:27;;18582:63;;;;;-1:-1:-1;;;18582:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18582:63:0;;;;;;;;;;;;;;;31920:4:::1;-1:-1:-1::0;;;;;31909:15:0::1;:4;;31914:1;31909:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31909:7:0::1;-1:-1:-1::0;;;;;31909:15:0::1;;31901:56;;;::::0;;-1:-1:-1;;;31901:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;31901:56:0;;;;;;;;;;;;;::::1;;31978:53;32006:7;32015:9;32026:4;;31978:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;31978:27:0::1;::::0;-1:-1:-1;;;31978:53:0:i:1;:::-;31968:63;;32064:9;32050:7;32058:1;32050:10;;;;;;;;;;;;;;:23;;32042:74;;;;-1:-1:-1::0;;;32042:74:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32133:4;-1:-1:-1::0;;;;;32127:19:0::1;;32154:7;32162:1;32154:10;;;;;;;;;;;;;;32127:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32127:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32127:40:0;;;;;32191:4;-1:-1:-1::0;;;;;32185:20:0::1;;32206:49;32229:7;32238:4;;32243:1;32238:7;;;;;;32206:49;32257:7;32265:1;32257:10;;;;;;;;;;;;;;32185:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;32185:83:0::1;-1:-1:-1::0;;;;;32185:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32185:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32185:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32185:83:0;32178:91:::1;;;;32280:24;32286:7;32295:4;;32280:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;32301:2:0;;-1:-1:-1;32280:5:0::1;::::0;-1:-1:-1;;32280:24:0:i:1;:::-;32367:7;32375:1;32367:10;;;;;;;;;;;;;;32355:9;:22;32351:94;;;32379:66;32410:10;32434:7;32442:1;32434:10;;;;;;;;;;;;;;32422:9;:22;32379:30;:66::i;17084:449::-:0;17316:45;;;-1:-1:-1;;;;;17316:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17316:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;17305:57:0;;;;17270:12;;17284:17;;17305:10;;;;17316:45;17305:57;;;25:18:-1;17305:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;17305:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;17269:93:0;;;;17395:7;:57;;;;-1:-1:-1;17407:11:0;;:16;;:44;;;17438:4;17427:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17427:24:0;17407:44;17373:152;;;;-1:-1:-1;;;17373:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17084:449;;;;;:::o;18047:217::-;18160:12;;;18120;18160;;;;;;;;;-1:-1:-1;;;;;18138:7:0;;;18153:5;;18138:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;18138:35:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;18119:54:0;;;18192:7;18184:72;;;;-1:-1:-1;;;18184:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18047:217;;;:::o;8079:572::-;8215:17;8264:1;8253:8;:12;8245:67;;;;-1:-1:-1;;;8245:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8343:1;8331:9;:13;:31;;;;;8361:1;8348:10;:14;8331:31;8323:83;;;;-1:-1:-1;;;8323:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8417:23;8443:18;:8;8456:4;8443:18;:12;:18;:::i;:::-;8417:44;-1:-1:-1;8472:17:0;8492:31;8417:44;8512:10;8492:31;:19;:31;:::i;:::-;8472:51;-1:-1:-1;8534:19:0;8556:41;8581:15;8556:20;:9;8570:5;8556:20;:13;:20;:::i;:::-;:24;:41;:24;:41;:::i;:::-;8534:63;;8632:11;8620:9;:23;;;;;;;8079:572;-1:-1:-1;;;;;;;8079:572:0:o;9378:562::-;9516:24;9576:1;9561:4;:11;:16;;9553:58;;;;;-1:-1:-1;;;9553:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9646:4;:11;9632:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9632:26:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;9632:26:0;;9622:36;;9682:8;9669:7;9677:1;9669:10;;;;;;;;;;;;;:21;;;;;9706:9;9701:232;9735:1;9721:4;:11;:15;9717:1;:19;9701:232;;;9759:17;9778:18;9800:42;9812:7;9821:4;9826:1;9821:7;;;;;;;;;;;;;;9830:4;9835:1;9839;9835:5;9830:11;;;;;;;;;;;;;;9800;:42::i;:::-;9758:84;;;;9874:47;9887:7;9895:1;9887:10;;;;;;;;;;;;;;9899:9;9910:10;9874:12;:47::i;:::-;9857:7;9865:1;9869;9865:5;9857:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;9738:3:0;;9701:232;;;;9378:562;;;;;:::o;6290:651::-;6413:12;6439:14;6455;6473:26;6484:6;6492;6473:10;:26::i;:::-;6718:32;;;-1:-1:-1;;6718:32:0;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;6718:32:0;;;;;6708:43;;;;;;-1:-1:-1;;;;;;6597:291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6597:291:0;;;;;;;6565:342;;;;;;;;;6290:651;-1:-1:-1;;;;;6290:651:0:o;17541:498::-;17812:51;;;-1:-1:-1;;;;;17812:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17812:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;17801:63:0;;;;17766:12;;17780:17;;17801:10;;;;17812:51;17801:63;;;25:18:-1;17801:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;17801:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;17765:99:0;;;;17897:7;:57;;;;-1:-1:-1;17909:11:0;;:16;;:44;;;17940:4;17929:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17929:24:0;17909:44;17875:156;;;;-1:-1:-1;;;17875:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17541:498;;;;;;:::o;27058:768::-;27202:9;27197:622;27231:1;27217:4;:11;:15;27213:1;:19;27197:622;;;27255:13;27270:14;27289:4;27294:1;27289:7;;;;;;;;;;;;;;27298:4;27303:1;27307;27303:5;27298:11;;;;;;;;;;;;;;27254:56;;;;27326:14;27346:40;27372:5;27379:6;27346:25;:40::i;:::-;27325:61;;;27401:17;27421:7;27429:1;27433;27429:5;27421:14;;;;;;;;;;;;;;27401:34;;27451:18;27471;27519:6;-1:-1:-1;;;;;27510:15:0;:5;-1:-1:-1;;;;;27510:15:0;;:67;;27555:9;27574:1;27510:67;;;27537:1;27541:9;27510:67;27450:127;;;;27592:10;27623:1;27609:4;:11;:15;27605:1;:19;:80;;27682:3;27605:80;;;27627:52;27650:7;27659:6;27667:4;27672:1;27676;27672:5;27667:11;;;;;;;;;;;;;;27627:22;:52::i;:::-;27592:93;;27713:46;27736:7;27745:5;27752:6;27713:22;:46::i;:::-;-1:-1:-1;;;;;27700:65:0;;27766:10;27778;27790:2;27804:1;27794:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;27794:12:0;87:42:-1;143:17;;-1:-1;27794:12:0;;27700:107;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27700:107:0;-1:-1:-1;;;;;27700:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27700:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27700:107:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;27234:3:0;;;;;-1:-1:-1;27197:622:0;;-1:-1:-1;;;;;;;;27197:622:0;;;27058:768;;;:::o;10021:583::-;10159:24;10219:1;10204:4;:11;:16;;10196:58;;;;;-1:-1:-1;;;10196:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10289:4;:11;10275:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10275:26:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;10275:26:0;;10265:36;;10342:9;10312:7;10337:1;10320:7;:14;:18;10312:27;;;;;;;;;;;;;;;;;:39;10379:11;;-1:-1:-1;;10379:15:0;10362:235;10396:5;;10362:235;;10424:17;10443:18;10465:42;10477:7;10486:4;10495:1;10491;:5;10486:11;;;;;;;;;;;;;;10499:4;10504:1;10499:7;;;;;;;10465:42;10423:84;;;;10539:46;10551:7;10559:1;10551:10;;;;;;;;;;;;;;10563:9;10574:10;10539:11;:46::i;:::-;10522:7;10534:1;10530;:5;10522:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;10403:3:0;10362:235;;32600:1308;32713:9;32708:1193;32742:1;32728:4;:11;:15;32724:1;:19;32708:1193;;;32766:13;32781:14;32800:4;32805:1;32800:7;;;;;;;;;;;;;;32809:4;32814:1;32818;32814:5;32809:11;;;;;;;;;;;;;;32765:56;;;;32837:14;32857:40;32883:5;32890:6;32857:25;:40::i;:::-;32836:61;;;32912:17;32945:46;32968:7;32977:5;32984:6;32945:22;:46::i;:::-;32912:80;;33007:19;33041:20;33153:16;33171;33193:4;-1:-1:-1;;;;;33193:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33193:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33193:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33193:18:0;;;;;;;-1:-1:-1;;;;;33152:59:0;;;;-1:-1:-1;33152:59:0;;-1:-1:-1;33231:20:0;;-1:-1:-1;;;;;33299:15:0;;;;;;;:61;;33341:8;33351;33299:61;;;33318:8;33328;33299:61;33230:130;;;;33393:56;33436:12;33400:5;-1:-1:-1;;;;;33393:23:0;;33425:4;33393:38;;;;;;;;;;;;;-1:-1:-1;;;;;33393:38:0;-1:-1:-1;;;;;33393:38:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;33393:56:0;33379:70;;33483:69;33511:11;33524:12;33538:13;33483:27;:69::i;:::-;33468:84;;32708:1193;;;;33583:18;33603;33651:6;-1:-1:-1;;;;;33642:15:0;:5;-1:-1:-1;;;;;33642:15:0;;:73;;33690:12;33712:1;33642:73;;;33669:1;33673:12;33642:73;33582:133;;;;33730:10;33761:1;33747:4;:11;:15;33743:1;:19;:80;;33820:3;33743:80;;;33765:52;33788:7;33797:6;33805:4;33810:1;33814;33810:5;33805:11;;;;;;;33765:52;33876:12;;;33886:1;33876:12;;;;;;;;;;-1:-1:-1;;;33838:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;33838:51:0;;;;;;;;;;;;;;;;;;;;;;33730:93;;-1:-1:-1;33838:9:0;;;;;;33848:10;;33860;;33730:93;;33876:12;;33838:51;;;;;;;;33876:12;;33838:51;;;;33876:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;33838:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33838:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;32745:3:0;;;;;-1:-1:-1;32708:1193:0;;-1:-1:-1;;;;;;;;;;32708:1193:0;4467:138;4560:5;;;4555:16;;;;4547:50;;;;;-1:-1:-1;;;4547:50:0;;;;;;;;;;;;-1:-1:-1;;;4547:50:0;;;;;;;;;;;;;;8772:524;8908:16;8957:1;8945:9;:13;8937:69;;;;-1:-1:-1;;;8937:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9037:1;9025:9;:13;:31;;;;;9055:1;9042:10;:14;9025:31;9017:83;;;;-1:-1:-1;;;9017:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9111:17;9131:35;9160:5;9131:24;:9;9145;9131:24;:13;:24;:::i;:::-;:28;:35;:28;:35;:::i;:::-;9111:55;-1:-1:-1;9177:19:0;9199:35;9229:4;9199:25;:10;9214:9;9199:25;:14;:25;:::i;:35::-;9177:57;;9256:32;9286:1;9269:11;9257:9;:23;;;;;;;9256:32;:29;:32;:::i;:::-;9245:43;8772:524;-1:-1:-1;;;;;;8772:524:0:o;7592:365::-;7717:15;7763:1;7753:7;:11;7745:60;;;;-1:-1:-1;;;7745:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7835:1;7824:8;:12;:28;;;;;7851:1;7840:8;:12;7824:28;7816:80;;;;-1:-1:-1;;;7816:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7941:8;7917:21;:7;7929:8;7917:21;:11;:21;:::i;:::-;:32;;;;;;;7592:365;-1:-1:-1;;;;7592:365:0:o;5851:347::-;5926:14;5942;5987:6;-1:-1:-1;;;;;5977:16:0;:6;-1:-1:-1;;;;;5977:16:0;;;5969:65;;;;-1:-1:-1;;;5969:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6073:6;-1:-1:-1;;;;;6064:15:0;:6;-1:-1:-1;;;;;6064:15:0;;:53;;6102:6;6110;6064:53;;;6083:6;6091;6064:53;6045:72;;-1:-1:-1;6045:72:0;-1:-1:-1;;;;;;6136:20:0;;6128:62;;;;;-1:-1:-1;;;6128:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5851:347;;;;;:::o;18960:1408::-;19291:48;;;-1:-1:-1;;;19291:48:0;;-1:-1:-1;;;;;19291:48:0;;;;;;;;;;;;;;;;19190:15;;;;;;19307:7;19291:32;;;;;;:48;;;;;;;;;;;;;;;:32;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;19291:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19291:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19291:48:0;-1:-1:-1;;;;;19291:62:0;;19287:146;;;19370:51;;;-1:-1:-1;;;19370:51:0;;-1:-1:-1;;;;;19370:51:0;;;;;;;;;;;;;;;;19386:7;19370:35;;;;;;:51;;;;;;;;;;;;;;;-1:-1:-1;19370:35:0;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;19370:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19370:51:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;19287:146:0;19444:16;19462;19482:51;19509:7;19518:6;19526;19482:26;:51::i;:::-;19443:90;;;;19548:8;19560:1;19548:13;:30;;;;-1:-1:-1;19565:13:0;;19548:30;19544:817;;;19617:14;;-1:-1:-1;19633:14:0;;-1:-1:-1;19544:817:0;;;19681:22;19706:56;19727:14;19743:8;19753;19706:20;:56::i;:::-;19681:81;;19799:14;19781;:32;19777:573;;19860:10;19842:14;:28;;19834:78;;;;-1:-1:-1;;;19834:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19953:14;;-1:-1:-1;19969:14:0;-1:-1:-1;19969:14:0;19777:573;;;20025:22;20050:56;20071:14;20087:8;20097;20050:20;:56::i;:::-;20025:81;;20150:14;20132;:32;;20125:40;;;;20210:10;20192:14;:28;;20184:78;;;;-1:-1:-1;;;20184:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20303:14;-1:-1:-1;20319:14:0;;-1:-1:-1;19777:573:0;19544:817;;18960:1408;;;;;;;;;;;:::o;4613:151::-;4671:9;4701:6;;;:30;;-1:-1:-1;;4716:5:0;;;4730:1;4725;4716:5;4725:1;4711:15;;;;;:20;4701:30;4693:63;;;;;-1:-1:-1;;;4693:63:0;;;;;;;;;;;;-1:-1:-1;;;4693:63:0;;;;;;;;;;;;;;4322:137;4415:5;;;4410:16;;;;4402:49;;;;;-1:-1:-1;;;4402:49:0;;;;;;;;;;;;-1:-1:-1;;;4402:49:0;;;;;;;;;;;;;;6999:480;7126:16;7144;7174:14;7194:26;7205:6;7213;7194:10;:26::i;:::-;7173:47;;;7231:32;7239:7;7248:6;7256;7231:7;:32::i;:::-;;7275:16;7293;7328:32;7336:7;7345:6;7353;7328:7;:32::i;:::-;-1:-1:-1;;;;;7315:58:0;;:60;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7315:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7315:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7315:60:0;;;;;;;-1:-1:-1;;;;;7274:101:0;;;;-1:-1:-1;7274:101:0;;-1:-1:-1;;;;;;7409:16:0;;;;;;;:62;;7452:8;7462;7409:62;;;7429:8;7439;7409:62;7386:85;;;;-1:-1:-1;6999:480:0;-1:-1:-1;;;;;;;6999:480:0:o
Swarm Source
ipfs://2c797a832cfc95fae90887b277725119d82037812ea9acea79d3d78fabf3092b
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.