Contract 0x69004509291f4a4021fa169fafdcfc2d92ad02aa 5

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5fd124f53aaa2f1e53feb316ce901bb62553077bf17e280af30ab2c7777157c2Swap Exact Token...128628982024-03-05 11:21:331 hr 30 mins ago0x6c1c46433fcc73d47d34822bfbbccecd279e4d8a IN  PhotonSwap Finance: Router0 CRO1.821539188 10,097
0xf9a42c600c402c774ada4072790828e68c79a69d264108559c823e97ba182d13Swap Exact ETH F...128609632024-03-05 8:22:314 hrs 29 mins ago0xc0ee01a64d0466b2f500f6cab92c553f913db10a IN  PhotonSwap Finance: Router1 CRO1.81953520
0xe4ec98fff874d99487454e77bfde19707b407ff4ff17b515f3b4fd3c4ad507aeSwap Exact ETH F...128603192024-03-05 7:22:525 hrs 29 mins ago0x6ec20c47e580a9964478c41f492b7d2c609e1bd2 IN  PhotonSwap Finance: Router1 CRO1.64694640
0x3dfd1e998aa06038ace99161424cd27143c7d3f2f20b3898e41a8fb26412d4adSwap Exact Token...128596412024-03-05 6:19:546 hrs 32 mins ago0x56820bc4dcc9ae3dc589267c7736efb45c2a2265 IN  PhotonSwap Finance: Router0 CRO1.7593190
0xda565035d8a81e86d844217d46731c3470eced68d95e6f07303a30211d41d6baSwap Exact Token...128590822024-03-05 5:27:537 hrs 24 mins ago0x47b7ec78b37e8db612ee8d46ecf2461b4b47edf2 IN  PhotonSwap Finance: Router0 CRO1.01990810
0x0315f49c0825910f5895c3a3969c5d0d7f6c098fbee9df0a3065c3df8be7dcb9Remove Liquidity...128586702024-03-05 4:49:268 hrs 2 mins ago0x47b7ec78b37e8db612ee8d46ecf2461b4b47edf2 IN  PhotonSwap Finance: Router0 CRO2.11096060
0xd33aff64b1c978c5270ec4809932e5196110fcbd66059c95119876ab1c19b2c8Swap Exact Token...128582832024-03-05 4:13:098 hrs 39 mins ago0x2a50ad811386e092e37badcc324c0251bfbafc7f IN  PhotonSwap Finance: Router0 CRO1.766833642 10,097
0x6b060e59090ae772eafdfce5a6b18e0a90ab7ef267bd0bfdfe33064551f5a375Swap Exact ETH F...128582142024-03-05 4:06:438 hrs 45 mins agoCronos ID Name dealm.cro IN  PhotonSwap Finance: Router50 CRO1.683592501 10,001.5
0x378b396dc8f86791d9de4a2ff027b2965bc0d72b6fab9d3f18e11475e3e16e33Add Liquidity ET...128582072024-03-05 4:06:048 hrs 46 mins agoCronos ID Name dealm.cro IN  PhotonSwap Finance: Router56 CRO2.334234557 10,097
0x6d8b9098803f97ee5c378796611cf11c8f09439e67896cb12af636f2663fc5a6Swap Exact ETH F...128571362024-03-05 2:26:4110 hrs 25 mins agoCronos ID Name millertime99.cro IN  PhotonSwap Finance: Router900 CRO3.14734180
0xe48a1614516c64504e243a51d8b415d9e1b7cdf541e3e00837fb6306b3877393Swap Exact Token...128569212024-03-05 2:06:3510 hrs 45 mins ago0xf3d3e30cf73afc65781f5eedc517866c1471b638 IN  PhotonSwap Finance: Router0 CRO1.16275240
0x0fe433f00cf365179d1110a86d8121542ec42cc19bc141e94ef500f6d332e2e4Swap Exact ETH F...128567312024-03-05 1:48:4011 hrs 3 mins agoCronos ID Name millertime99.cro IN  PhotonSwap Finance: Router50 CRO3.32005180
0x43be524f5d28f88e1d4969ed6074c1e53781cf574d85e9842d5663df54245ecaSwap Exact ETH F...128566302024-03-05 1:39:1011 hrs 13 mins ago0xe18369451746bdedd7d315c389a3b18b7ee6bb5c IN  PhotonSwap Finance: Router53 CRO1.26770150
0x90d57727a77e6d3c276b193a1fe21c5ad761d57e5fcbac912b9d0f57097c94f3Swap Exact ETH F...128566142024-03-05 1:37:3911 hrs 14 mins ago0xe18369451746bdedd7d315c389a3b18b7ee6bb5c IN  PhotonSwap Finance: Router28 CRO1.03321990
0xe8c7bd8e171fde9e31d01af672d9f2dec1f5e0fbbd1c9f96dbdd5f177ae28d2eSwap Exact Token...128564302024-03-05 1:20:1811 hrs 31 mins agoCronos ID Name burning.cro IN  PhotonSwap Finance: Router0 CRO1.223913214263 10,206.761744138
0xed09fc4dbde3ba655d95414af34687166e787cbdd5eae1f98db4e784e200dc27Add Liquidity ET...128563532024-03-05 1:12:5611 hrs 39 mins ago0x1a7c460f625a1e71ef327b7d2c32f1c1e16e51b4 IN  PhotonSwap Finance: Router90.772623694007926 CRO2.58040860
0x81f4374d1dc97997659d60fdfd1730d7541e9d014fa1fda6f1f6483658c05993Swap ETH For Exa...128563362024-03-05 1:11:2011 hrs 40 mins ago0x1a7c460f625a1e71ef327b7d2c32f1c1e16e51b4 IN  PhotonSwap Finance: Router71.106797875635732 CRO1.812552060
0x2d0860c3a11dfd9d9039b664fc6daf4553c46980cf74d25304859e678acc6ce1Swap Exact ETH F...128563322024-03-05 1:10:5711 hrs 41 mins agoCronos ID Name lustnfts.cro IN  PhotonSwap Finance: Router250 CRO1.54177510
0x9b456ba20d6aed279fe480014e37e06b42d14bc6c0d24e611b602efdf3c6a3d2Swap Exact ETH F...128562882024-03-05 1:06:4711 hrs 45 mins agoCronos ID Name millertime99.cro IN  PhotonSwap Finance: Router50 CRO1.53899760
0x2261ac12ca51f1671e503fb1287e1df43c2beeea30a6b066a3029670f5cfaa93Swap Exact Token...128562802024-03-05 1:06:0211 hrs 46 mins agoCronos ID Name millertime99.cro IN  PhotonSwap Finance: Router0 CRO1.45941970
0x6e975955dc617e03c3b411fa7276695c6a561cfb30e2d77bc8cc0c9ec14a4fb5Swap Exact Token...128562752024-03-05 1:05:3311 hrs 46 mins ago0x433de218198a115b8fc83060d0fee20358fbb941 IN  PhotonSwap Finance: Router0 CRO1.68808370
0x998261f1d73f79220e044225004492bedb1cdd4c60d77c5fe491ae7b79468a31Swap Exact Token...128562452024-03-05 1:02:4311 hrs 49 mins ago0x433de218198a115b8fc83060d0fee20358fbb941 IN  PhotonSwap Finance: Router0 CRO4.06759320
0xc10d0d8c22f74fe17e5629793aff7ef04ece2583c8cd7a32a03433f8bbb9f0b8Swap Exact ETH F...128561082024-03-05 0:49:5312 hrs 2 mins agoCronos ID Name lustnfts.cro IN  PhotonSwap Finance: Router200 CRO1.56369210
0x27d2ab289b1fe95179b766043df87e10efb8346fbd225398463c4e00e0a9cbf1Swap Exact ETH F...128544872024-03-04 22:18:1614 hrs 33 mins ago0xe18369451746bdedd7d315c389a3b18b7ee6bb5c IN  PhotonSwap Finance: Router55 CRO1.20592990
0x31cc707a653eef103e19164f6c8aef8e38a5a2309e3aab5f2d5726419ca9d27aSwap Exact Token...128544002024-03-04 22:10:1314 hrs 41 mins ago0x13ee70c805f0875fc3b48cdf84f5b09f2f01b080 IN  PhotonSwap Finance: Router0 CRO1.162528192 10,097
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5fd124f53aaa2f1e53feb316ce901bb62553077bf17e280af30ab2c7777157c2128628982024-03-05 11:21:331 hr 30 mins ago PhotonSwap Finance: Router0x6c1c46433fcc73d47d34822bfbbccecd279e4d8a27.710426887751758864 CRO
0x5fd124f53aaa2f1e53feb316ce901bb62553077bf17e280af30ab2c7777157c2128628982024-03-05 11:21:331 hr 30 mins ago Cronos: WCRO Token PhotonSwap Finance: Router27.710426887751758864 CRO
0xf9a42c600c402c774ada4072790828e68c79a69d264108559c823e97ba182d13128609632024-03-05 8:22:314 hrs 29 mins ago PhotonSwap Finance: Router Cronos: WCRO Token1 CRO
0xe4ec98fff874d99487454e77bfde19707b407ff4ff17b515f3b4fd3c4ad507ae128603192024-03-05 7:22:525 hrs 29 mins ago PhotonSwap Finance: Router Cronos: WCRO Token1 CRO
0x3dfd1e998aa06038ace99161424cd27143c7d3f2f20b3898e41a8fb26412d4ad128596412024-03-05 6:19:546 hrs 32 mins ago PhotonSwap Finance: Router0x56820bc4dcc9ae3dc589267c7736efb45c2a226515.37053311667847237 CRO
0x3dfd1e998aa06038ace99161424cd27143c7d3f2f20b3898e41a8fb26412d4ad128596412024-03-05 6:19:546 hrs 32 mins ago Cronos: WCRO Token PhotonSwap Finance: Router15.37053311667847237 CRO
0x0315f49c0825910f5895c3a3969c5d0d7f6c098fbee9df0a3065c3df8be7dcb9128586702024-03-05 4:49:268 hrs 2 mins ago PhotonSwap Finance: Router0x47b7ec78b37e8db612ee8d46ecf2461b4b47edf22.381488469134271219 CRO
0x0315f49c0825910f5895c3a3969c5d0d7f6c098fbee9df0a3065c3df8be7dcb9128586702024-03-05 4:49:268 hrs 2 mins ago Cronos: WCRO Token PhotonSwap Finance: Router2.381488469134271219 CRO
0x6b060e59090ae772eafdfce5a6b18e0a90ab7ef267bd0bfdfe33064551f5a375128582142024-03-05 4:06:438 hrs 45 mins ago PhotonSwap Finance: Router Cronos: WCRO Token50 CRO
0x378b396dc8f86791d9de4a2ff027b2965bc0d72b6fab9d3f18e11475e3e16e33128582072024-03-05 4:06:048 hrs 46 mins ago PhotonSwap Finance: RouterCronos ID Name dealm.cro1 basecro
0x378b396dc8f86791d9de4a2ff027b2965bc0d72b6fab9d3f18e11475e3e16e33128582072024-03-05 4:06:048 hrs 46 mins ago PhotonSwap Finance: Router Cronos: WCRO Token55.999999999999999999 CRO
0x6d8b9098803f97ee5c378796611cf11c8f09439e67896cb12af636f2663fc5a6128571362024-03-05 2:26:4110 hrs 25 mins ago PhotonSwap Finance: Router Cronos: WCRO Token900 CRO
0xe48a1614516c64504e243a51d8b415d9e1b7cdf541e3e00837fb6306b3877393128569212024-03-05 2:06:3510 hrs 45 mins ago PhotonSwap Finance: Router0xf3d3e30cf73afc65781f5eedc517866c1471b63836.869042778739088891 CRO
0xe48a1614516c64504e243a51d8b415d9e1b7cdf541e3e00837fb6306b3877393128569212024-03-05 2:06:3510 hrs 45 mins ago Cronos: WCRO Token PhotonSwap Finance: Router36.869042778739088891 CRO
0x0fe433f00cf365179d1110a86d8121542ec42cc19bc141e94ef500f6d332e2e4128567312024-03-05 1:48:4011 hrs 3 mins ago PhotonSwap Finance: Router Cronos: WCRO Token50 CRO
0x43be524f5d28f88e1d4969ed6074c1e53781cf574d85e9842d5663df54245eca128566302024-03-05 1:39:1011 hrs 13 mins ago PhotonSwap Finance: Router Cronos: WCRO Token53 CRO
0x90d57727a77e6d3c276b193a1fe21c5ad761d57e5fcbac912b9d0f57097c94f3128566142024-03-05 1:37:3911 hrs 14 mins ago PhotonSwap Finance: Router Cronos: WCRO Token28 CRO
0xe8c7bd8e171fde9e31d01af672d9f2dec1f5e0fbbd1c9f96dbdd5f177ae28d2e128564302024-03-05 1:20:1811 hrs 31 mins ago PhotonSwap Finance: RouterCronos ID Name burning.cro260.065670474654214787 CRO
0xe8c7bd8e171fde9e31d01af672d9f2dec1f5e0fbbd1c9f96dbdd5f177ae28d2e128564302024-03-05 1:20:1811 hrs 31 mins ago Cronos: WCRO Token PhotonSwap Finance: Router260.065670474654214787 CRO
0xed09fc4dbde3ba655d95414af34687166e787cbdd5eae1f98db4e784e200dc27128563532024-03-05 1:12:5611 hrs 39 mins ago PhotonSwap Finance: Router Cronos: WCRO Token90.772623694007926439 CRO
0x81f4374d1dc97997659d60fdfd1730d7541e9d014fa1fda6f1f6483658c05993128563362024-03-05 1:11:2011 hrs 40 mins ago PhotonSwap Finance: Router0x1a7c460f625a1e71ef327b7d2c32f1c1e16e51b44.651846589994860972 CRO
0x81f4374d1dc97997659d60fdfd1730d7541e9d014fa1fda6f1f6483658c05993128563362024-03-05 1:11:2011 hrs 40 mins ago PhotonSwap Finance: Router Cronos: WCRO Token66.454951285640871039 CRO
0x2d0860c3a11dfd9d9039b664fc6daf4553c46980cf74d25304859e678acc6ce1128563322024-03-05 1:10:5711 hrs 41 mins ago PhotonSwap Finance: Router Cronos: WCRO Token250 CRO
0x9b456ba20d6aed279fe480014e37e06b42d14bc6c0d24e611b602efdf3c6a3d2128562882024-03-05 1:06:4711 hrs 45 mins ago PhotonSwap Finance: Router Cronos: WCRO Token50 CRO
0x6e975955dc617e03c3b411fa7276695c6a561cfb30e2d77bc8cc0c9ec14a4fb5128562752024-03-05 1:05:3311 hrs 46 mins ago PhotonSwap Finance: Router0x433de218198a115b8fc83060d0fee20358fbb941769.077665315319168963 CRO
[ Download CSV Export 
Index Block
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Router02

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-11
*/

// Sources flattened with hardhat v2.1.2 https://hardhat.org

// File @uniswap/v2-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}


// File @uniswap/lib/contracts/libraries/[email protected]

// SPDX-License-Identifier: GPL-3.0-or-later

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 contracts/periphery/interfaces/IUniswapV2Router01.sol

pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}


// File contracts/periphery/interfaces/IUniswapV2Router02.sol

pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


// File @uniswap/v2-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}


// File contracts/periphery/libraries/SafeMath.sol

pragma solidity =0.6.6;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}


// File contracts/periphery/libraries/UniswapV2Library.sol

pragma solidity >=0.5.0;

library UniswapV2Library {
    using SafeMath for uint;

    // 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, 'UniswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'UniswapV2Library: 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(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'01429e880a7972ebfbba904a5bbe32a816e78273e4b38ffa6bdeaebce8adba7c' // init code hash
            ))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        (uint reserve0, uint reserve1,) = IUniswapV2Pair(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(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: 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(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).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(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint 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, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}


// File contracts/periphery/interfaces/IERC20.sol

pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}


// File contracts/periphery/interfaces/IWETH.sol

pragma solidity >=0.5.0;

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}


// File contracts/periphery/UniswapV2Router02.sol

pragma solidity =0.6.6;






contract UniswapV2Router02 is IUniswapV2Router02 {
    using SafeMath for uint;

    address public immutable override factory;
    address public immutable override WETH;

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'UniswapV2Router: 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,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {
            IUniswapV2Factory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IUniswapV2Pair(pair).mint(to);
    }
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
        (amountToken, amountETH) = _addLiquidity(
            token,
            WETH,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountETHMin
        );
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWETH(WETH).deposit{value: amountETH}();
        assert(IWETH(WETH).transfer(pair, amountETH));
        liquidity = IUniswapV2Pair(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,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);
        (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint 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,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountA, uint amountB) {
        address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(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,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountETH) {
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(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,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint 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,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountETH) {
        address pair = UniswapV2Library.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IUniswapV2Pair(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(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = UniswapV2Library.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.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(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.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(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(UniswapV2Library.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 (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = UniswapV2Library.sortTokens(input, output);
            IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');
        uint amountIn = msg.value;
        IWETH(WETH).deposit{value: amountIn}();
        assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(WETH).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).withdraw(amountOut);
        TransferHelper.safeTransferETH(to, amountOut);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
        return UniswapV2Library.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountOut)
    {
        return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountIn)
    {
        return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return UniswapV2Library.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return UniswapV2Library.getAmountsIn(factory, amountOut, path);
    }
}

Contract ABI

[{"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"}]

60c060405234801561001057600080fd5b506040516200479d3803806200479d8339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c614618620001856000398061015f5280610ce45280610d1f5280610e16528061103452806113be528061152452806118eb52806119e55280611a9b5280611b695280611caf5280611d375280611f7c5280611ff752806120a652806121725280612207528061227b528061277952806129ec5280612a425280612a765280612aea5280612c8a5280612dcd5280612e55525080610ea45280610f7b52806110fa5280611133528061126e528061144c528061150252806116725280611bfc5280611d695280611ecc52806122ad528061250652806126fe5280612727528061275752806128c45280612a205280612d1d5280612e875280613718528061375b5280613a3e5280613bbd5280613fed528061409b528061411b52506146186000f3fe60806040526004361061014f5760003560e01c80638803dbee116100b6578063c45a01551161006f578063c45a015514610a10578063d06ca61f14610a25578063ded9382a14610ada578063e8e3370014610b4d578063f305d71914610bcd578063fb3bdb4114610c1357610188565b80638803dbee146107df578063ad5c464814610875578063ad615dec146108a6578063af2979eb146108dc578063b6f9de951461092f578063baa2abde146109b357610188565b80634a25d94a116101085780634a25d94a146104f05780635b0d5984146105865780635c11d795146105f9578063791ac9471461068f5780637ff36ab51461072557806385f8c259146107a957610188565b806302751cec1461018d578063054d50d4146101f957806318cbafe5146102415780631f00ca74146103275780632195995c146103dc57806338ed17391461045a57610188565b3661018857336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018657fe5b005b600080fd5b34801561019957600080fd5b506101e0600480360360c08110156101b057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c97565b6040805192835260208301919091528051918290030190f35b34801561020557600080fd5b5061022f6004803603606081101561021c57600080fd5b5080359060208101359060400135610db1565b60408051918252519081900360200190f35b34801561024d57600080fd5b506102d7600480360360a081101561026457600080fd5b813591602081013591810190606081016040820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460208302840111600160201b831117156102bd57600080fd5b91935091506001600160a01b038135169060200135610dc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103135781810151838201526020016102fb565b505050509050019250505060405180910390f35b34801561033357600080fd5b506102d76004803603604081101561034a57600080fd5b81359190810190604081016020820135600160201b81111561036b57600080fd5b82018360208201111561037d57600080fd5b803590602001918460208302840111600160201b8311171561039e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110f3945050505050565b3480156103e857600080fd5b506101e0600480360361016081101561040057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611129565b34801561046657600080fd5b506102d7600480360360a081101561047d57600080fd5b813591602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460208302840111600160201b831117156104d657600080fd5b91935091506001600160a01b038135169060200135611223565b3480156104fc57600080fd5b506102d7600480360360a081101561051357600080fd5b813591602081013591810190606081016040820135600160201b81111561053957600080fd5b82018360208201111561054b57600080fd5b803590602001918460208302840111600160201b8311171561056c57600080fd5b91935091506001600160a01b03813516906020013561136e565b34801561059257600080fd5b5061022f60048036036101408110156105aa57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356114fa565b34801561060557600080fd5b50610186600480360360a081101561061c57600080fd5b813591602081013591810190606081016040820135600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b91935091506001600160a01b038135169060200135611608565b34801561069b57600080fd5b50610186600480360360a08110156106b257600080fd5b813591602081013591810190606081016040820135600160201b8111156106d857600080fd5b8201836020820111156106ea57600080fd5b803590602001918460208302840111600160201b8311171561070b57600080fd5b91935091506001600160a01b03813516906020013561189d565b6102d76004803603608081101561073b57600080fd5b81359190810190604081016020820135600160201b81111561075c57600080fd5b82018360208201111561076e57600080fd5b803590602001918460208302840111600160201b8311171561078f57600080fd5b91935091506001600160a01b038135169060200135611b21565b3480156107b557600080fd5b5061022f600480360360608110156107cc57600080fd5b5080359060208101359060400135611e74565b3480156107eb57600080fd5b506102d7600480360360a081101561080257600080fd5b813591602081013591810190606081016040820135600160201b81111561082857600080fd5b82018360208201111561083a57600080fd5b803590602001918460208302840111600160201b8311171561085b57600080fd5b91935091506001600160a01b038135169060200135611e81565b34801561088157600080fd5b5061088a611f7a565b604080516001600160a01b039092168252519081900360200190f35b3480156108b257600080fd5b5061022f600480360360608110156108c957600080fd5b5080359060208101359060400135611f9e565b3480156108e857600080fd5b5061022f600480360360c08110156108ff57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611fab565b6101866004803603608081101561094557600080fd5b81359190810190604081016020820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460208302840111600160201b8311171561099957600080fd5b91935091506001600160a01b03813516906020013561212c565b3480156109bf57600080fd5b506101e0600480360360e08110156109d657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356124b8565b348015610a1c57600080fd5b5061088a6126fc565b348015610a3157600080fd5b506102d760048036036040811015610a4857600080fd5b81359190810190604081016020820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612720945050505050565b348015610ae657600080fd5b506101e06004803603610140811015610afe57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561274d565b348015610b5957600080fd5b50610baf6004803603610100811015610b7157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612861565b60408051938452602084019290925282820152519081900360600190f35b610baf600480360360c0811015610be357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561299d565b6102d760048036036080811015610c2957600080fd5b81359190810190604081016020820135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b91935091506001600160a01b038135169060200135612c42565b6000808242811015610cde576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b610d0d897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6124b8565b9093509150610d1d898685612fc4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b50505050610da58583613118565b50965096945050505050565b6000610dbe848484613210565b949350505050565b60608142811015610e0c576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610e4657fe5b905060200201356001600160a01b03166001600160a01b031614610e9f576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b610efd7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110610f1057fe5b60200260200101511015610f555760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b610ff386866000818110610f6557fe5b905060200201356001600160a01b031633610fd97f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610fa757fe5b905060200201356001600160a01b03168b8b6001818110610fc457fe5b905060200201356001600160a01b031661344c565b85600081518110610fe657fe5b602002602001015161350c565b61103282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613669915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061107157fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b505050506110e884836001855103815181106110db57fe5b6020026020010151613118565b509695505050505050565b60606111207f000000000000000000000000000000000000000000000000000000000000000084846138af565b90505b92915050565b60008060006111597f00000000000000000000000000000000000000000000000000000000000000008f8f61344c565b9050600087611168578c61116c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111e257600080fd5b505af11580156111f6573d6000803e3d6000fd5b505050506112098f8f8f8f8f8f8f6124b8565b809450819550505050509b509b9950505050505050505050565b60608142811015611269576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6112c77f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b915086826001845103815181106112da57fe5b6020026020010151101561131f5760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b61132f86866000818110610f6557fe5b6110e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b606081428110156113b4576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106113ee57fe5b905060200201356001600160a01b03166001600160a01b031614611447576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b6114a57f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b915086826000815181106114b557fe5b60200260200101511115610f555760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b6000806115487f00000000000000000000000000000000000000000000000000000000000000008d7f000000000000000000000000000000000000000000000000000000000000000061344c565b9050600086611557578b61155b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050506115f78d8d8d8d8d8d611fab565b9d9c50505050505050505050505050565b804281101561164c576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6116c18585600081811061165c57fe5b905060200201356001600160a01b0316336116bb7f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b905060200201356001600160a01b03168a8a6001818110610fc457fe5b8a61350c565b6000858560001981018181106116d357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173857600080fd5b505afa15801561174c573d6000803e3d6000fd5b505050506040513d602081101561176257600080fd5b505160408051602088810282810182019093528882529293506117a49290918991899182918501908490808284376000920191909152508892506139e7915050565b8661185682888860001981018181106117b957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b505afa158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b50519063ffffffff613cf216565b10156118935760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b5050505050505050565b80428110156118e1576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061191b57fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b6119848585600081811061165c57fe5b6119c28585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506139e7915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051905086811015611a995760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050506118938482613118565b60608142811015611b67576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611b9e57fe5b905060200201356001600160a01b03166001600160a01b031614611bf7576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b611c557f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110611c6857fe5b60200260200101511015611cad5760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611ce957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611d957f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b84600081518110611da257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b505050506040513d6020811015611e2357600080fd5b5051611e2b57fe5b611e6a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b5095945050505050565b6000610dbe848484613d42565b60608142811015611ec7576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b611f257f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91508682600081518110611f3557fe5b6020026020010151111561131f5760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610dbe848484613e32565b60008142811015611ff1576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b612020887f000000000000000000000000000000000000000000000000000000000000000089898930896124b8565b604080516370a0823160e01b815230600482015290519194506120a492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d602081101561209d57600080fd5b5051612fc4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561210a57600080fd5b505af115801561211e573d6000803e3d6000fd5b505050506110e88483613118565b8042811015612170576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560008181106121a757fe5b905060200201356001600160a01b03166001600160a01b031614612200576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6122d97f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d602081101561235357600080fd5b505161235b57fe5b60008686600019810181811061236d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b5051604080516020898102828101820190935289825292935061243e9290918a918a9182918501908490808284376000920191909152508992506139e7915050565b87611856828989600019810181811061245357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b60008082428110156124ff576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b600061252c7f00000000000000000000000000000000000000000000000000000000000000008c8c61344c565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b505050506040513d60208110156125b157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156125fe57600080fd5b505af1158015612612573d6000803e3d6000fd5b505050506040513d604081101561262857600080fd5b508051602090910151909250905060006126428e8e613ede565b509050806001600160a01b03168e6001600160a01b031614612665578183612668565b82825b90975095508a8710156126ac5760405162461bcd60e51b815260040180806020018281038252602681526020018061451a6026913960400191505060405180910390fd5b898610156126eb5760405162461bcd60e51b81526004018080602001828103825260268152602001806144606026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606111207f00000000000000000000000000000000000000000000000000000000000000008484613300565b600080600061279d7f00000000000000000000000000000000000000000000000000000000000000008e7f000000000000000000000000000000000000000000000000000000000000000061344c565b90506000876127ac578c6127b0565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561282657600080fd5b505af115801561283a573d6000803e3d6000fd5b5050505061284c8e8e8e8e8e8e610c97565b909f909e509c50505050505050505050505050565b600080600083428110156128aa576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6128b88c8c8c8c8c8c613fbc565b909450925060006128ea7f00000000000000000000000000000000000000000000000000000000000000008e8e61344c565b90506128f88d33838861350c565b6129048c33838761350c565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d602081101561298657600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156129e6576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b612a148a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613fbc565b90945092506000612a667f00000000000000000000000000000000000000000000000000000000000000008c7f000000000000000000000000000000000000000000000000000000000000000061344c565b9050612a748b33838861350c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612acf57600080fd5b505af1158015612ae3573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612b6857600080fd5b505af1158015612b7c573d6000803e3d6000fd5b505050506040513d6020811015612b9257600080fd5b5051612b9a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612bf257600080fd5b505af1158015612c06573d6000803e3d6000fd5b505050506040513d6020811015612c1c57600080fd5b5051925034841015612c3457612c3433853403613118565b505096509650969350505050565b60608142811015612c88576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110612cbf57fe5b905060200201356001600160a01b03166001600160a01b031614612d18576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b612d767f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91503482600081518110612d8657fe5b60200260200101511115612dcb5760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110612e0757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e3a57600080fd5b505af1158015612e4e573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612eb37f00000000000000000000000000000000000000000000000000000000000000008989600081811061169e57fe5b84600081518110612ec057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b5051612f4957fe5b612f8882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b81600081518110612f9557fe5b6020026020010151341115611e6a57611e6a3383600081518110612fb557fe5b60200260200101513403613118565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106130415780518252601f199092019160209182019101613022565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a3576040519150601f19603f3d011682016040523d82523d6000602084013e6130a8565b606091505b50915091508180156130d65750805115806130d657508080602001905160208110156130d357600080fd5b50515b6131115760405162461bcd60e51b815260040180806020018281038252602d81526020018061456b602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106131645780518252601f199092019160209182019101613145565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b505090508061320b5760405162461bcd60e51b81526004018080602001828103825260348152602001806144076034913960400191505060405180910390fd5b505050565b60008084116132505760405162461bcd60e51b815260040180806020018281038252602b815260200180614598602b913960400191505060405180910390fd5b6000831180156132605750600082115b61329b5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b60006132af856103e563ffffffff61423016565b905060006132c3828563ffffffff61423016565b905060006132e9836132dd886103e863ffffffff61423016565b9063ffffffff61429316565b90508082816132f457fe5b04979650505050505050565b6060600282511015613359576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561337157600080fd5b5060405190808252806020026020018201604052801561339b578160200160208202803683370190505b50905082816000815181106133ac57fe5b60200260200101818152505060005b6001835103811015613444576000806133fe878685815181106133da57fe5b60200260200101518786600101815181106133f157fe5b60200260200101516142e2565b9150915061342084848151811061341157fe5b60200260200101518383613210565b84846001018151811061342f57fe5b602090810291909101015250506001016133bb565b509392505050565b600080600061345b8585613ede565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f01429e880a7972ebfbba904a5bbe32a816e78273e4b38ffa6bdeaebce8adba7c609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106135915780518252601f199092019160209182019101613572565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5091509150818015613626575080511580613626575080806020019051602081101561362357600080fd5b50515b6136615760405162461bcd60e51b81526004018080602001828103825260318152602001806143d66031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156138a95760008084838151811061368757fe5b602002602001015185846001018151811061369e57fe5b60200260200101519150915060006136b68383613ede565b50905060008785600101815181106136ca57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146136f8578260006136fc565b6000835b91509150600060028a510388106137135788613754565b6137547f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061374757fe5b602002602001015161344c565b90506137817f0000000000000000000000000000000000000000000000000000000000000000888861344c565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156137be576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561382f578181015183820152602001613817565b50505050905090810190601f16801561385c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b50506001909901985061366c975050505050505050565b50505050565b6060600282511015613908576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561392057600080fd5b5060405190808252806020026020018201604052801561394a578160200160208202803683370190505b509050828160018351038151811061395e57fe5b60209081029190910101528151600019015b8015613444576000806139a08786600186038151811061398c57fe5b60200260200101518786815181106133f157fe5b915091506139c28484815181106139b357fe5b60200260200101518383613d42565b8460018503815181106139d157fe5b6020908102919091010152505060001901613970565b60005b600183510381101561320b57600080848381518110613a0557fe5b6020026020010151858460010181518110613a1c57fe5b6020026020010151915091506000613a348383613ede565b5090506000613a647f0000000000000000000000000000000000000000000000000000000000000000858561344c565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613aa557600080fd5b505afa158015613ab9573d6000803e3d6000fd5b505050506040513d6060811015613acf57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613b05578284613b08565b83835b91509150613b66828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b9550613b73868383613210565b945050505050600080856001600160a01b0316886001600160a01b031614613b9d57826000613ba1565b6000835b91509150600060028c51038a10613bb8578a613bec565b613bec7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061374757fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613c76578181015183820152602001613c5e565b50505050905090810190601f168015613ca35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613cc557600080fd5b505af1158015613cd9573d6000803e3d6000fd5b50506001909b019a506139ea9950505050505050505050565b80820382811115611123576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808411613d825760405162461bcd60e51b815260040180806020018281038252602c8152602001806143aa602c913960400191505060405180910390fd5b600083118015613d925750600082115b613dcd5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b6000613df16103e8613de5868863ffffffff61423016565b9063ffffffff61423016565b90506000613e0b6103e5613de5868963ffffffff613cf216565b9050613e286001828481613e1b57fe5b049063ffffffff61429316565b9695505050505050565b6000808411613e725760405162461bcd60e51b81526004018080602001828103825260258152602001806144ae6025913960400191505060405180910390fd5b600083118015613e825750600082115b613ebd5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b82613ece858463ffffffff61423016565b81613ed557fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613f325760405162461bcd60e51b815260040180806020018281038252602581526020018061443b6025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613f52578284613f55565b83835b90925090506001600160a01b038216613fb5576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561403657600080fd5b505afa15801561404a573d6000803e3d6000fd5b505050506040513d602081101561406057600080fd5b50516001600160a01b0316141561411357604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156140e657600080fd5b505af11580156140fa573d6000803e3d6000fd5b505050506040513d602081101561411057600080fd5b50505b6000806141417f00000000000000000000000000000000000000000000000000000000000000008b8b6142e2565b91509150816000148015614153575080155b1561416357879350869250614223565b6000614170898484613e32565b90508781116141c357858110156141b85760405162461bcd60e51b81526004018080602001828103825260268152602001806144606026913960400191505060405180910390fd5b889450925082614221565b60006141d0898486613e32565b9050898111156141dc57fe5b8781101561421b5760405162461bcd60e51b815260040180806020018281038252602681526020018061451a6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061424b5750508082028282828161424857fe5b04145b611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142f18585613ede565b50905060008061430288888861344c565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561433a57600080fd5b505afa15801561434e573d6000803e3d6000fd5b505050506040513d606081101561436457600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b038781169084161461439757808261439a565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e56414c49445f50415448000000556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20455850495245440000000000000000a26469706673582212208305e58e6f6ceb88157f7b1a45711a29901e467561f8c113f048fe25f21c614964736f6c63430006060033000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8750000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80638803dbee116100b6578063c45a01551161006f578063c45a015514610a10578063d06ca61f14610a25578063ded9382a14610ada578063e8e3370014610b4d578063f305d71914610bcd578063fb3bdb4114610c1357610188565b80638803dbee146107df578063ad5c464814610875578063ad615dec146108a6578063af2979eb146108dc578063b6f9de951461092f578063baa2abde146109b357610188565b80634a25d94a116101085780634a25d94a146104f05780635b0d5984146105865780635c11d795146105f9578063791ac9471461068f5780637ff36ab51461072557806385f8c259146107a957610188565b806302751cec1461018d578063054d50d4146101f957806318cbafe5146102415780631f00ca74146103275780632195995c146103dc57806338ed17391461045a57610188565b3661018857336001600160a01b037f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23161461018657fe5b005b600080fd5b34801561019957600080fd5b506101e0600480360360c08110156101b057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c97565b6040805192835260208301919091528051918290030190f35b34801561020557600080fd5b5061022f6004803603606081101561021c57600080fd5b5080359060208101359060400135610db1565b60408051918252519081900360200190f35b34801561024d57600080fd5b506102d7600480360360a081101561026457600080fd5b813591602081013591810190606081016040820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460208302840111600160201b831117156102bd57600080fd5b91935091506001600160a01b038135169060200135610dc6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103135781810151838201526020016102fb565b505050509050019250505060405180910390f35b34801561033357600080fd5b506102d76004803603604081101561034a57600080fd5b81359190810190604081016020820135600160201b81111561036b57600080fd5b82018360208201111561037d57600080fd5b803590602001918460208302840111600160201b8311171561039e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506110f3945050505050565b3480156103e857600080fd5b506101e0600480360361016081101561040057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611129565b34801561046657600080fd5b506102d7600480360360a081101561047d57600080fd5b813591602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460208302840111600160201b831117156104d657600080fd5b91935091506001600160a01b038135169060200135611223565b3480156104fc57600080fd5b506102d7600480360360a081101561051357600080fd5b813591602081013591810190606081016040820135600160201b81111561053957600080fd5b82018360208201111561054b57600080fd5b803590602001918460208302840111600160201b8311171561056c57600080fd5b91935091506001600160a01b03813516906020013561136e565b34801561059257600080fd5b5061022f60048036036101408110156105aa57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356114fa565b34801561060557600080fd5b50610186600480360360a081101561061c57600080fd5b813591602081013591810190606081016040820135600160201b81111561064257600080fd5b82018360208201111561065457600080fd5b803590602001918460208302840111600160201b8311171561067557600080fd5b91935091506001600160a01b038135169060200135611608565b34801561069b57600080fd5b50610186600480360360a08110156106b257600080fd5b813591602081013591810190606081016040820135600160201b8111156106d857600080fd5b8201836020820111156106ea57600080fd5b803590602001918460208302840111600160201b8311171561070b57600080fd5b91935091506001600160a01b03813516906020013561189d565b6102d76004803603608081101561073b57600080fd5b81359190810190604081016020820135600160201b81111561075c57600080fd5b82018360208201111561076e57600080fd5b803590602001918460208302840111600160201b8311171561078f57600080fd5b91935091506001600160a01b038135169060200135611b21565b3480156107b557600080fd5b5061022f600480360360608110156107cc57600080fd5b5080359060208101359060400135611e74565b3480156107eb57600080fd5b506102d7600480360360a081101561080257600080fd5b813591602081013591810190606081016040820135600160201b81111561082857600080fd5b82018360208201111561083a57600080fd5b803590602001918460208302840111600160201b8311171561085b57600080fd5b91935091506001600160a01b038135169060200135611e81565b34801561088157600080fd5b5061088a611f7a565b604080516001600160a01b039092168252519081900360200190f35b3480156108b257600080fd5b5061022f600480360360608110156108c957600080fd5b5080359060208101359060400135611f9e565b3480156108e857600080fd5b5061022f600480360360c08110156108ff57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611fab565b6101866004803603608081101561094557600080fd5b81359190810190604081016020820135600160201b81111561096657600080fd5b82018360208201111561097857600080fd5b803590602001918460208302840111600160201b8311171561099957600080fd5b91935091506001600160a01b03813516906020013561212c565b3480156109bf57600080fd5b506101e0600480360360e08110156109d657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356124b8565b348015610a1c57600080fd5b5061088a6126fc565b348015610a3157600080fd5b506102d760048036036040811015610a4857600080fd5b81359190810190604081016020820135600160201b811115610a6957600080fd5b820183602082011115610a7b57600080fd5b803590602001918460208302840111600160201b83111715610a9c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612720945050505050565b348015610ae657600080fd5b506101e06004803603610140811015610afe57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561274d565b348015610b5957600080fd5b50610baf6004803603610100811015610b7157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612861565b60408051938452602084019290925282820152519081900360600190f35b610baf600480360360c0811015610be357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561299d565b6102d760048036036080811015610c2957600080fd5b81359190810190604081016020820135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b91935091506001600160a01b038135169060200135612c42565b6000808242811015610cde576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b610d0d897f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae238a8a8a308a6124b8565b9093509150610d1d898685612fc4565b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b50505050610da58583613118565b50965096945050505050565b6000610dbe848484613210565b949350505050565b60608142811015610e0c576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae231686866000198101818110610e4657fe5b905060200201356001600160a01b03166001600160a01b031614610e9f576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b610efd7f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110610f1057fe5b60200260200101511015610f555760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b610ff386866000818110610f6557fe5b905060200201356001600160a01b031633610fd97f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758a8a6000818110610fa757fe5b905060200201356001600160a01b03168b8b6001818110610fc457fe5b905060200201356001600160a01b031661344c565b85600081518110610fe657fe5b602002602001015161350c565b61103282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613669915050565b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b0316632e1a7d4d8360018551038151811061107157fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b505050506110e884836001855103815181106110db57fe5b6020026020010151613118565b509695505050505050565b60606111207f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d87584846138af565b90505b92915050565b60008060006111597f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758f8f61344c565b9050600087611168578c61116c565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111e257600080fd5b505af11580156111f6573d6000803e3d6000fd5b505050506112098f8f8f8f8f8f8f6124b8565b809450819550505050509b509b9950505050505050505050565b60608142811015611269576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6112c77f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b915086826001845103815181106112da57fe5b6020026020010151101561131f5760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b61132f86866000818110610f6557fe5b6110e882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b606081428110156113b4576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2316868660001981018181106113ee57fe5b905060200201356001600160a01b03166001600160a01b031614611447576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b6114a57f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b915086826000815181106114b557fe5b60200260200101511115610f555760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b6000806115487f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758d7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2361344c565b9050600086611557578b61155b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115d157600080fd5b505af11580156115e5573d6000803e3d6000fd5b505050506115f78d8d8d8d8d8d611fab565b9d9c50505050505050505050505050565b804281101561164c576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6116c18585600081811061165c57fe5b905060200201356001600160a01b0316336116bb7f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758989600081811061169e57fe5b905060200201356001600160a01b03168a8a6001818110610fc457fe5b8a61350c565b6000858560001981018181106116d357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173857600080fd5b505afa15801561174c573d6000803e3d6000fd5b505050506040513d602081101561176257600080fd5b505160408051602088810282810182019093528882529293506117a49290918991899182918501908490808284376000920191909152508892506139e7915050565b8661185682888860001981018181106117b957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b505afa158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b50519063ffffffff613cf216565b10156118935760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b5050505050505050565b80428110156118e1576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23168585600019810181811061191b57fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b6119848585600081811061165c57fe5b6119c28585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506139e7915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2316916370a0823191602480820192602092909190829003018186803b158015611a2c57600080fd5b505afa158015611a40573d6000803e3d6000fd5b505050506040513d6020811015611a5657600080fd5b5051905086811015611a995760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050506118938482613118565b60608142811015611b67576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031686866000818110611b9e57fe5b905060200201356001600160a01b03166001600160a01b031614611bf7576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b611c557f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8753488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061330092505050565b91508682600184510381518110611c6857fe5b60200260200101511015611cad5760405162461bcd60e51b815260040180806020018281038252602b815260200180614540602b913960400191505060405180910390fd5b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663d0e30db083600081518110611ce957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050507f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663a9059cbb611d957f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758989600081811061169e57fe5b84600081518110611da257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611df957600080fd5b505af1158015611e0d573d6000803e3d6000fd5b505050506040513d6020811015611e2357600080fd5b5051611e2b57fe5b611e6a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b5095945050505050565b6000610dbe848484613d42565b60608142811015611ec7576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b611f257f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91508682600081518110611f3557fe5b6020026020010151111561131f5760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2381565b6000610dbe848484613e32565b60008142811015611ff1576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b612020887f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2389898930896124b8565b604080516370a0823160e01b815230600482015290519194506120a492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d602081101561209d57600080fd5b5051612fc4565b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561210a57600080fd5b505af115801561211e573d6000803e3d6000fd5b505050506110e88483613118565b8042811015612170576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b0316858560008181106121a757fe5b905060200201356001600160a01b03166001600160a01b031614612200576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b60003490507f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561226057600080fd5b505af1158015612274573d6000803e3d6000fd5b50505050507f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663a9059cbb6122d97f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758989600081811061169e57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d602081101561235357600080fd5b505161235b57fe5b60008686600019810181811061236d57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b5051604080516020898102828101820190935289825292935061243e9290918a918a9182918501908490808284376000920191909152508992506139e7915050565b87611856828989600019810181811061245357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b60008082428110156124ff576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b600061252c7f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758c8c61344c565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b505050506040513d60208110156125b157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b1580156125fe57600080fd5b505af1158015612612573d6000803e3d6000fd5b505050506040513d604081101561262857600080fd5b508051602090910151909250905060006126428e8e613ede565b509050806001600160a01b03168e6001600160a01b031614612665578183612668565b82825b90975095508a8710156126ac5760405162461bcd60e51b815260040180806020018281038252602681526020018061451a6026913960400191505060405180910390fd5b898610156126eb5760405162461bcd60e51b81526004018080602001828103825260268152602001806144606026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d87581565b60606111207f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758484613300565b600080600061279d7f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758e7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2361344c565b90506000876127ac578c6127b0565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561282657600080fd5b505af115801561283a573d6000803e3d6000fd5b5050505061284c8e8e8e8e8e8e610c97565b909f909e509c50505050505050505050505050565b600080600083428110156128aa576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b6128b88c8c8c8c8c8c613fbc565b909450925060006128ea7f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758e8e61344c565b90506128f88d33838861350c565b6129048c33838761350c565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d602081101561298657600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156129e6576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b612a148a7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae238b348c8c613fbc565b90945092506000612a667f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758c7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae2361344c565b9050612a748b33838861350c565b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612acf57600080fd5b505af1158015612ae3573d6000803e3d6000fd5b50505050507f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612b6857600080fd5b505af1158015612b7c573d6000803e3d6000fd5b505050506040513d6020811015612b9257600080fd5b5051612b9a57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612bf257600080fd5b505af1158015612c06573d6000803e3d6000fd5b505050506040513d6020811015612c1c57600080fd5b5051925034841015612c3457612c3433853403613118565b505096509650969350505050565b60608142811015612c88576040805162461bcd60e51b815260206004820152601860248201526000805160206145c3833981519152604482015290519081900360640190fd5b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031686866000818110612cbf57fe5b905060200201356001600160a01b03166001600160a01b031614612d18576040805162461bcd60e51b815260206004820152601d60248201526000805160206144fa833981519152604482015290519081900360640190fd5b612d767f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506138af92505050565b91503482600081518110612d8657fe5b60200260200101511115612dcb5760405162461bcd60e51b81526004018080602001828103825260278152602001806144d36027913960400191505060405180910390fd5b7f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663d0e30db083600081518110612e0757fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e3a57600080fd5b505af1158015612e4e573d6000803e3d6000fd5b50505050507f0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae236001600160a01b031663a9059cbb612eb37f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758989600081811061169e57fe5b84600081518110612ec057fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050506040513d6020811015612f4157600080fd5b5051612f4957fe5b612f8882878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613669915050565b81600081518110612f9557fe5b6020026020010151341115611e6a57611e6a3383600081518110612fb557fe5b60200260200101513403613118565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106130415780518252601f199092019160209182019101613022565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a3576040519150601f19603f3d011682016040523d82523d6000602084013e6130a8565b606091505b50915091508180156130d65750805115806130d657508080602001905160208110156130d357600080fd5b50515b6131115760405162461bcd60e51b815260040180806020018281038252602d81526020018061456b602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106131645780518252601f199092019160209182019101613145565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b505090508061320b5760405162461bcd60e51b81526004018080602001828103825260348152602001806144076034913960400191505060405180910390fd5b505050565b60008084116132505760405162461bcd60e51b815260040180806020018281038252602b815260200180614598602b913960400191505060405180910390fd5b6000831180156132605750600082115b61329b5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b60006132af856103e563ffffffff61423016565b905060006132c3828563ffffffff61423016565b905060006132e9836132dd886103e863ffffffff61423016565b9063ffffffff61429316565b90508082816132f457fe5b04979650505050505050565b6060600282511015613359576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561337157600080fd5b5060405190808252806020026020018201604052801561339b578160200160208202803683370190505b50905082816000815181106133ac57fe5b60200260200101818152505060005b6001835103811015613444576000806133fe878685815181106133da57fe5b60200260200101518786600101815181106133f157fe5b60200260200101516142e2565b9150915061342084848151811061341157fe5b60200260200101518383613210565b84846001018151811061342f57fe5b602090810291909101015250506001016133bb565b509392505050565b600080600061345b8585613ede565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f01429e880a7972ebfbba904a5bbe32a816e78273e4b38ffa6bdeaebce8adba7c609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106135915780518252601f199092019160209182019101613572565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135f3576040519150601f19603f3d011682016040523d82523d6000602084013e6135f8565b606091505b5091509150818015613626575080511580613626575080806020019051602081101561362357600080fd5b50515b6136615760405162461bcd60e51b81526004018080602001828103825260318152602001806143d66031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156138a95760008084838151811061368757fe5b602002602001015185846001018151811061369e57fe5b60200260200101519150915060006136b68383613ede565b50905060008785600101815181106136ca57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146136f8578260006136fc565b6000835b91509150600060028a510388106137135788613754565b6137547f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875878c8b6002018151811061374757fe5b602002602001015161344c565b90506137817f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875888861344c565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156137be576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561382f578181015183820152602001613817565b50505050905090810190601f16801561385c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561387e57600080fd5b505af1158015613892573d6000803e3d6000fd5b50506001909901985061366c975050505050505050565b50505050565b6060600282511015613908576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561392057600080fd5b5060405190808252806020026020018201604052801561394a578160200160208202803683370190505b509050828160018351038151811061395e57fe5b60209081029190910101528151600019015b8015613444576000806139a08786600186038151811061398c57fe5b60200260200101518786815181106133f157fe5b915091506139c28484815181106139b357fe5b60200260200101518383613d42565b8460018503815181106139d157fe5b6020908102919091010152505060001901613970565b60005b600183510381101561320b57600080848381518110613a0557fe5b6020026020010151858460010181518110613a1c57fe5b6020026020010151915091506000613a348383613ede565b5090506000613a647f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875858561344c565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613aa557600080fd5b505afa158015613ab9573d6000803e3d6000fd5b505050506040513d6060811015613acf57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613b05578284613b08565b83835b91509150613b66828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181e57600080fd5b9550613b73868383613210565b945050505050600080856001600160a01b0316886001600160a01b031614613b9d57826000613ba1565b6000835b91509150600060028c51038a10613bb8578a613bec565b613bec7f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875898e8d6002018151811061374757fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613c76578181015183820152602001613c5e565b50505050905090810190601f168015613ca35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613cc557600080fd5b505af1158015613cd9573d6000803e3d6000fd5b50506001909b019a506139ea9950505050505050505050565b80820382811115611123576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808411613d825760405162461bcd60e51b815260040180806020018281038252602c8152602001806143aa602c913960400191505060405180910390fd5b600083118015613d925750600082115b613dcd5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b6000613df16103e8613de5868863ffffffff61423016565b9063ffffffff61423016565b90506000613e0b6103e5613de5868963ffffffff613cf216565b9050613e286001828481613e1b57fe5b049063ffffffff61429316565b9695505050505050565b6000808411613e725760405162461bcd60e51b81526004018080602001828103825260258152602001806144ae6025913960400191505060405180910390fd5b600083118015613e825750600082115b613ebd5760405162461bcd60e51b81526004018080602001828103825260288152602001806144866028913960400191505060405180910390fd5b82613ece858463ffffffff61423016565b81613ed557fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613f325760405162461bcd60e51b815260040180806020018281038252602581526020018061443b6025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613f52578284613f55565b83835b90925090506001600160a01b038216613fb5576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8759092169163e6a4390591604480820192602092909190829003018186803b15801561403657600080fd5b505afa15801561404a573d6000803e3d6000fd5b505050506040513d602081101561406057600080fd5b50516001600160a01b0316141561411357604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8759092169163c9c65396916044808201926020929091908290030181600087803b1580156140e657600080fd5b505af11580156140fa573d6000803e3d6000fd5b505050506040513d602081101561411057600080fd5b50505b6000806141417f000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8758b8b6142e2565b91509150816000148015614153575080155b1561416357879350869250614223565b6000614170898484613e32565b90508781116141c357858110156141b85760405162461bcd60e51b81526004018080602001828103825260268152602001806144606026913960400191505060405180910390fd5b889450925082614221565b60006141d0898486613e32565b9050898111156141dc57fe5b8781101561421b5760405162461bcd60e51b815260040180806020018281038252602681526020018061451a6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061424b5750508082028282828161424857fe5b04145b611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611123576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142f18585613ede565b50905060008061430288888861344c565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561433a57600080fd5b505afa15801561434e573d6000803e3d6000fd5b505050506040513d606081101561436457600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b038781169084161461439757808261439a565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e56414c49445f50415448000000556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20455850495245440000000000000000a26469706673582212208305e58e6f6ceb88157f7b1a45711a29901e467561f8c113f048fe25f21c614964736f6c63430006060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000462c98cae5affeed576c98a55daa922604e2d8750000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23

-----Decoded View---------------
Arg [0] : _factory (address): 0x462c98cae5affeed576c98a55daa922604e2d875
Arg [1] : _WETH (address): 0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000462c98cae5affeed576c98a55daa922604e2d875
Arg [1] : 0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23


Deployed ByteCode Sourcemap

16753:18549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17235:10;-1:-1:-1;;;;;17249:4:0;17235:18;;17228:26;;;;16753:18549;;12:1:-1;9;2:12;21385:673:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21385:673:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;21385:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;34246:262;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34246:262:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34246:262:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28554:850;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28554:850:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;28554:850:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;28554:850:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;28554:850: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;28554:850:0;;-1:-1:-1;28554:850:0;-1:-1:-1;;;;;;28554:850: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;28554:850:0;;;;;;;;;;;;;;;;;35046:253;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35046:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;35046:253:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;35046:253:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;35046:253: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;35046:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35046:253:0;;-1:-1:-1;35046:253:0;;-1:-1:-1;;;;;35046:253:0:i;22064:677::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22064:677:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22064:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25771:628::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25771:628:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;25771:628:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;25771:628:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25771:628: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;25771:628:0;;-1:-1:-1;25771:628:0;-1:-1:-1;;;;;;25771:628:0;;;;;;;;:::i;27720:828::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27720:828:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27720:828:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27720:828:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27720:828: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;27720:828:0;;-1:-1:-1;27720:828:0;-1:-1:-1;;;;;;27720:828:0;;;;;;;;:::i;24201:718::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24201:718:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;24201:718:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31587:714::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31587:714:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;31587:714:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;31587:714:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;31587:714: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;31587:714:0;;-1:-1:-1;31587:714:0;-1:-1:-1;;;;;;31587:714:0;;;;;;;;:::i;33163:843::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33163:843:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;33163:843:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;33163:843:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;33163:843: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;33163:843:0;;-1:-1:-1;33163:843:0;-1:-1:-1;;;;;;33163:843:0;;;;;;;;:::i;27017:697::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27017:697:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27017:697:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27017:697: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;27017:697:0;;-1:-1:-1;27017:697:0;-1:-1:-1;;;;;;27017:697:0;;;;;;;;:::i;34516:261::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34516:261:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34516:261:0;;;;;;;;;;;;:::i;26405:606::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26405:606:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;26405:606:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;26405:606:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26405:606: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;26405:606:0;;-1:-1:-1;26405:606:0;-1:-1:-1;;;;;;26405:606:0;;;;;;;;:::i;16889:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16889:38:0;;;:::i;:::-;;;;-1:-1:-1;;;;;16889:38:0;;;;;;;;;;;;;;34050:188;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34050:188:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34050:188:0;;;;;;;;;;;;:::i;23495:700::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23495:700:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23495:700:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32307:850::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;32307:850:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;32307:850:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;32307:850: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;32307:850:0;;-1:-1:-1;32307:850:0;-1:-1:-1;;;;;;32307:850:0;;;;;;;;:::i;20514:865::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20514:865:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;20514:865:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16841:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16841:41:0;;;:::i;34785:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34785:253:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;34785:253:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;34785:253:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34785:253: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;34785:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34785:253:0;;-1:-1:-1;34785:253:0;;-1:-1:-1;;;;;34785:253:0:i;22747:669::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22747:669:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22747:669:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18753:738::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18753:738:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;18753:738:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19497:974;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;19497:974:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29410:810::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;29410:810:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;29410:810:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;29410:810: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;29410:810:0;;-1:-1:-1;29410:810:0;-1:-1:-1;;;;;;29410:810:0;;;;;;;;:::i;21385:673::-;21622:16;21640:14;21603:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;21694:196:::1;21724:5;21744:4;21763:9;21787:14;21816:12;21851:4;21871:8;21694:15;:196::i;:::-;21667:223:::0;;-1:-1:-1;21667:223:0;-1:-1:-1;21901:51:0::1;21929:5:::0;21936:2;21667:223;21901:27:::1;:51::i;:::-;21969:4;-1:-1:-1::0;;;;;21963:20:0::1;;21984:9;21963:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21963:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21963:31:0;;;;22005:45;22036:2;22040:9;22005:30;:45::i;:::-;21385:673:::0;;;;;;;;;;:::o;34246:262::-;34399:14;34438:62;34468:8;34478:9;34489:10;34438:29;:62::i;:::-;34431:69;34246:262;-1:-1:-1;;;;34246:262:0:o;28554:850::-;28768:21;28740:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28840:4:0::1;28815:29;:4:::0;;-1:-1:-1;;28820:15:0;;28815:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28815:21:0::1;-1:-1:-1::0;;;;;28815:29:0::1;;28807:71;;;::::0;;-1:-1:-1;;;28807:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28807:71:0;;;;;;;;;;;;;::::1;;28899:55;28930:7;28939:8;28949:4;;28899:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28899:30:0::1;::::0;-1:-1:-1;;;28899:55:0:i:1;:::-;28889:65;;29004:12;28973:7;28998:1;28981:7;:14;:18;28973:27;;;;;;;;;;;;;;:43;;28965:99;;;;-1:-1:-1::0;;;28965:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29075:141;29121:4;;29126:1;29121:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29121:7:0::1;29130:10;29142:51;29167:7;29176:4;;29181:1;29176:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29176:7:0::1;29185:4;;29190:1;29185:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29185:7:0::1;29142:24;:51::i;:::-;29195:7;29203:1;29195:10;;;;;;;;;;;;;;29075:31;:141::i;:::-;29227:35;29233:7;29242:4;;29227:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29256:4:0::1;::::0;-1:-1:-1;29227:5:0::1;::::0;-1:-1:-1;;29227:35:0:i:1;:::-;29279:4;-1:-1:-1::0;;;;;29273:20:0::1;;29294:7;29319:1;29302:7;:14;:18;29294:27;;;;;;;;;;;;;;29273:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29273:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29273:49:0;;;;29333:63;29364:2;29368:7;29393:1;29376:7;:14;:18;29368:27;;;;;;;;;;;;;;29333:30;:63::i;:::-;28554:850:::0;;;;;;;;;:::o;35046:253::-;35190:21;35236:55;35266:7;35275:9;35286:4;35236:29;:55::i;:::-;35229:62;;35046:253;;;;;:::o;22064:677::-;22370:12;22384;22409;22424:49;22449:7;22458:6;22466;22424:24;:49::i;:::-;22409:64;;22484:10;22497;:33;;22521:9;22497:33;;;-1:-1:-1;;22497:33:0;22541:80;;;-1:-1:-1;;;22541:80:0;;22569:10;22541:80;;;;22589:4;22541:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22484:46;;-1:-1:-1;;;;;;22541:27:0;;;;;:80;;;;;-1:-1:-1;;22541:80:0;;;;;;;;-1:-1:-1;22541:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;22541:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22541:80:0;;;;22653;22669:6;22677;22685:9;22696:10;22708;22720:2;22724:8;22653:15;:80::i;:::-;22632:101;;;;;;;;22064:677;;;;;;;;;;;;;;;;:::o;25771:628::-;25995:21;25976:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;26039:55:::1;26070:7;26079:8;26089:4;;26039:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26039:30:0::1;::::0;-1:-1:-1;;;26039:55:0:i:1;:::-;26029:65;;26144:12;26113:7;26138:1;26121:7;:14;:18;26113:27;;;;;;;;;;;;;;:43;;26105:99;;;;-1:-1:-1::0;;;26105:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26215:141;26261:4;;26266:1;26261:7;;;;;;26215:141;26367:24;26373:7;26382:4;;26367:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26388:2:0;;-1:-1:-1;26367:5:0::1;::::0;-1:-1:-1;;26367:24:0:i:1;27720:828::-:0;27934:21;27906:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28006:4:0::1;27981:29;:4:::0;;-1:-1:-1;;27986:15:0;;27981:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27981:21:0::1;-1:-1:-1::0;;;;;27981:29:0::1;;27973:71;;;::::0;;-1:-1:-1;;;27973:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27973:71:0;;;;;;;;;;;;;::::1;;28065:55;28095:7;28104:9;28115:4;;28065:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28065:29:0::1;::::0;-1:-1:-1;;;28065:55:0:i:1;:::-;28055:65;;28153:11;28139:7;28147:1;28139:10;;;;;;;;;;;;;;:25;;28131:77;;;;-1:-1:-1::0;;;28131:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24201:718:::0;24519:14;24546:12;24561:46;24586:7;24595:5;24602:4;24561:24;:46::i;:::-;24546:61;;24618:10;24631;:33;;24655:9;24631:33;;;-1:-1:-1;;24631:33:0;24675:80;;;-1:-1:-1;;;24675:80:0;;24703:10;24675:80;;;;24723:4;24675:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24618:46;;-1:-1:-1;;;;;;24675:27:0;;;;;:80;;;;;-1:-1:-1;;24675:80:0;;;;;;;;-1:-1:-1;24675:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;24675:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24675:80:0;;;;24778:133;24840:5;24847:9;24858:14;24874:12;24888:2;24892:8;24778:47;:133::i;:::-;24766:145;24201:718;-1:-1:-1;;;;;;;;;;;;;24201:718:0:o;31587:714::-;31821:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;31842:139:::1;31888:4;;31893:1;31888:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31888:7:0::1;31897:10;31909:51;31934:7;31943:4;;31948:1;31943:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31943:7:0::1;31952:4;;31957:1;31952:7;;;;;;31909:51;31962:8;31842:31;:139::i;:::-;31992:18;32020:4:::0;;-1:-1:-1;;32025:15:0;;32020:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32020:21:0::1;-1:-1:-1::0;;;;;32013:39:0::1;;32053:2;32013:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32013:43:0::1;-1:-1:-1::0;;;;;32013:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32013:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32013:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32013:43:0;32067:44:::1;::::0;;32013:43:::1;32067:44:::0;;::::1;::::0;;;;;;;;;;;32013:43;;-1:-1:-1;32067:44:0::1;::::0;;;32102:4;;;;;;32067:44;::::1;::::0;32102:4;;32067:44;32102:4;32067:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;32108:2:0;;-1:-1:-1;32067:34:0::1;::::0;-1:-1:-1;;32067:44:0:i:1;:::-;32210:12:::0;32144:62:::1;32192:13:::0;32151:4;;-1:-1:-1;;32156:15:0;;32151:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32151:21:0::1;-1:-1:-1::0;;;;;32144:39:0::1;;32184:2;32144:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32144:43:0::1;-1:-1:-1::0;;;;;32144:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32144:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32144:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32144:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;32122:171;;;;-1:-1:-1::0;;;32122:171:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17053:1;31587:714:::0;;;;;;;:::o;33163:843::-;33430:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33489:4:0::1;33464:29;:4:::0;;-1:-1:-1;;33469:15:0;;33464:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33464:21:0::1;-1:-1:-1::0;;;;;33464:29:0::1;;33456:71;;;::::0;;-1:-1:-1;;;33456:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;33456:71:0;;;;;;;;;;;;;::::1;;33538:139;33584:4;;33589:1;33584:7;;;;;;33538:139;33688:55;33723:4;;33688:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;33737:4:0::1;::::0;-1:-1:-1;33688:34:0::1;::::0;-1:-1:-1;;33688:55:0:i:1;:::-;33771:37;::::0;;-1:-1:-1;;;33771:37:0;;33802:4:::1;33771:37;::::0;::::1;::::0;;;33754:14:::1;::::0;-1:-1:-1;;;;;33778:4:0::1;33771:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;33771:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33771:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;33771:37:0;;-1:-1:-1;33827:25:0;;::::1;;33819:81;;;;-1:-1:-1::0;;;33819:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33917:4;-1:-1:-1::0;;;;;33911:20:0::1;;33932:9;33911:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;33911:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33911:31:0;;;;33953:45;33984:2;33988:9;33953:30;:45::i;27017:697::-:0;27233:21;27205:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;27291:4:::1;-1:-1:-1::0;;;;;27280:15:0::1;:4;;27285:1;27280:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;27280:7:0::1;-1:-1:-1::0;;;;;27280:15:0::1;;27272:57;;;::::0;;-1:-1:-1;;;27272:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27272:57:0;;;;;;;;;;;;;::::1;;27350:56;27381:7;27390:9;27401:4;;27350:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27350:30:0::1;::::0;-1:-1:-1;;;27350:56:0:i:1;:::-;27340:66;;27456:12;27425:7;27450:1;27433:7;:14;:18;27425:27;;;;;;;;;;;;;;:43;;27417:99;;;;-1:-1:-1::0;;;27417:99:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27533:4;-1:-1:-1::0;;;;;27527:19:0::1;;27554:7;27562:1;27554:10;;;;;;;;;;;;;;27527:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27527:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27527:40:0;;;;;27591:4;-1:-1:-1::0;;;;;27585:20:0::1;;27606:51;27631:7;27640:4;;27645:1;27640:7;;;;;;27606:51;27659:7;27667:1;27659:10;;;;;;;;;;;;;;27585:85;;;;;;;;;;;;;-1:-1:-1::0;;;;;27585:85:0::1;-1:-1:-1::0;;;;;27585:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27585:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27585:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27585:85:0;27578:93:::1;;;;27682:24;27688:7;27697:4;;27682:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27703:2:0;;-1:-1:-1;27682:5:0::1;::::0;-1:-1:-1;;27682:24:0:i:1;:::-;27017:697:::0;;;;;;;;:::o;34516:261::-;34669:13;34707:62;34736:9;34747;34758:10;34707:28;:62::i;26405:606::-;26629:21;26610:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;26673:55:::1;26703:7;26712:9;26723:4;;26673:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26673:29:0::1;::::0;-1:-1:-1;;;26673:55:0:i:1;:::-;26663:65;;26761:11;26747:7;26755:1;26747:10;;;;;;;;;;;;;;:25;;26739:77;;;;-1:-1:-1::0;;;26739:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16889:38:::0;;;:::o;34050:188::-;34147:12;34179:51;34202:7;34211:8;34221;34179:22;:51::i;23495:700::-;23761:14;23742:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;23804:196:::1;23834:5;23854:4;23873:9;23897:14;23926:12;23961:4;23981:8;23804:15;:196::i;:::-;24050:38;::::0;;-1:-1:-1;;;24050:38:0;;24082:4:::1;24050:38;::::0;::::1;::::0;;;23788:212;;-1:-1:-1;24011:78:0::1;::::0;-1:-1:-1;24039:5:0;;24046:2;;-1:-1:-1;;;;;24050: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;24050:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24050:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;24050:38:0;24011:27:::1;:78::i;:::-;24106:4;-1:-1:-1::0;;;;;24100:20:0::1;;24121:9;24100:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24100:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24100:31:0;;;;24142:45;24173:2;24177:9;24142:30;:45::i;32307:850::-:0;32567:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;32612:4:::1;-1:-1:-1::0;;;;;32601:15:0::1;:4;;32606:1;32601:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32601:7:0::1;-1:-1:-1::0;;;;;32601:15:0::1;;32593:57;;;::::0;;-1:-1:-1;;;32593:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;32593:57:0;;;;;;;;;;;;;::::1;;32661:13;32677:9;32661:25;;32703:4;-1:-1:-1::0;;;;;32697:19:0::1;;32724:8;32697:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32697:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32697:38:0;;;;;32759:4;-1:-1:-1::0;;;;;32753:20:0::1;;32774:51;32799:7;32808:4;;32813:1;32808:7;;;;;;32774:51;32827:8;32753:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;32753:83:0::1;-1:-1:-1::0;;;;;32753:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32753:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32753:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32753:83:0;32746:91:::1;;;;32848:18;32876:4:::0;;-1:-1:-1;;32881:15:0;;32876:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32876:21:0::1;-1:-1:-1::0;;;;;32869:39:0::1;;32909:2;32869:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32869:43:0::1;-1:-1:-1::0;;;;;32869:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32869:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32869:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32869:43:0;32923:44:::1;::::0;;32869:43:::1;32923:44:::0;;::::1;::::0;;;;;;;;;;;32869:43;;-1:-1:-1;32923:44:0::1;::::0;;;32958:4;;;;;;32923:44;::::1;::::0;32958:4;;32923:44;32958:4;32923:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;32964:2:0;;-1:-1:-1;32923:34:0::1;::::0;-1:-1:-1;;32923:44:0:i:1;:::-;33066:12:::0;33000:62:::1;33048:13:::0;33007:4;;-1:-1:-1;;33012:15:0;;33007:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33007:21:0::1;-1:-1:-1::0;;;;;33000:39:0::1;;33040:2;33000:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;33000:43:0::1;-1:-1:-1::0;;;;;33000:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;20514:865:0::0;20768:12;20782;20749:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;20807:12:::1;20822:49;20847:7;20856:6;20864;20822:24;:49::i;:::-;20882:62;::::0;;-1:-1:-1;;;20882:62:0;;20916:10:::1;20882:62;::::0;::::1;::::0;-1:-1:-1;;;;;20882:33:0;::::1;:62:::0;;;;;;;;;;;;;;20807:64;;-1:-1:-1;20882:33:0;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;20882:33:0;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20882:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20882:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;21012:29:0::1;::::0;;-1:-1:-1;;;21012:29:0;;-1:-1:-1;;;;;21012:29:0;;::::1;;::::0;::::1;::::0;;;20982:12:::1;::::0;;;21012:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;20982:12;21012:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;21012:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21012:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;21012:29:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;21012:29:0;-1:-1:-1;21053:14:0::1;21072:43;21100:6:::0;21108;21072:27:::1;:43::i;:::-;21052:63;;;21157:6;-1:-1:-1::0;;;;;21147:16:0::1;:6;-1:-1:-1::0;;;;;21147:16:0::1;;:58;;21188:7;21197;21147:58;;;21167:7;21176;21147:58;21126:79:::0;;-1:-1:-1;21126:79:0;-1:-1:-1;21224:21:0;;::::1;;21216:72;;;;-1:-1:-1::0;;;21216:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21318:10;21307:7;:21;;21299:72;;;;-1:-1:-1::0;;;21299:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17053:1;;;;20514:865:::0;;;;;;;;;;;:::o;16841:41::-;;;:::o;34785:253::-;34929:21;34975:55;35006:7;35015:8;35025:4;34975:30;:55::i;22747:669::-;23036:16;23054:14;23081:12;23096:46;23121:7;23130:5;23137:4;23096:24;:46::i;:::-;23081:61;;23153:10;23166;:33;;23190:9;23166:33;;;-1:-1:-1;;23166:33:0;23210:80;;;-1:-1:-1;;;23210:80:0;;23238:10;23210:80;;;;23258:4;23210:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23153:46;;-1:-1:-1;;;;;;23210:27:0;;;;;:80;;;;;-1:-1:-1;;23210:80:0;;;;;;;;-1:-1:-1;23210:27:0;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;23210:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23210:80:0;;;;23328;23347:5;23354:9;23365:14;23381:12;23395:2;23399:8;23328:18;:80::i;:::-;23301:107;;;;-1:-1:-1;22747:669:0;-1:-1:-1;;;;;;;;;;;;;22747:669:0:o;18753:738::-;19041:12;19055;19069:14;19022:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;19117:85:::1;19131:6;19139;19147:14;19163;19179:10;19191;19117:13;:85::i;:::-;19096:106:::0;;-1:-1:-1;19096:106:0;-1:-1:-1;19213:12:0::1;19228:49;19253:7;19262:6:::0;19270;19228:24:::1;:49::i;:::-;19213:64;;19288:66;19320:6;19328:10;19340:4;19346:7;19288:31;:66::i;:::-;19365;19397:6;19405:10;19417:4;19423:7;19365:31;:66::i;:::-;19469:4;-1:-1:-1::0;;;;;19454:25:0::1;;19480:2;19454:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;19454:29:0::1;-1:-1:-1::0;;;;;19454:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19454:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19454:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19454:29:0;18753:738;;;;-1:-1:-1;19454:29:0;;-1:-1:-1;18753:738:0;;-1:-1:-1;;;;;;;;;18753:738:0:o;19497:974::-;19750:16;19768:14;19784;19731:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;19838:176:::1;19866:5;19886:4;19905:18;19938:9;19962:14;19991:12;19838:13;:176::i;:::-;19811:203:::0;;-1:-1:-1;19811:203:0;-1:-1:-1;20025:12:0::1;20040:46;20065:7;20074:5:::0;20081:4:::1;20040:24;:46::i;:::-;20025:61;;20097:69;20129:5;20136:10;20148:4;20154:11;20097:31;:69::i;:::-;20183:4;-1:-1:-1::0;;;;;20177:19:0::1;;20204:9;20177:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20177:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20177:39:0;;;;;20240:4;-1:-1:-1::0;;;;;20234:20:0::1;;20255:4;20261:9;20234:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;20234:37:0::1;-1:-1:-1::0;;;;;20234:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20234:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20234:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20234:37:0;20227:45:::1;;;;20310:4;-1:-1:-1::0;;;;;20295:25:0::1;;20321:2;20295:29;;;;;;;;;;;;;-1:-1:-1::0;;;;;20295:29:0::1;-1:-1:-1::0;;;;;20295:29:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20295:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20295:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20295:29:0;;-1:-1:-1;20375:9:0::1;:21:::0;-1:-1:-1;20371:92:0::1;;;20398:65;20429:10;20453:9;20441;:21;20398:30;:65::i;:::-;17053:1;19497:974:::0;;;;;;;;;;;:::o;29410:810::-;29623:21;29595:8;16998:15;16986:8;:27;;16978:64;;;;;-1:-1:-1;;;16978:64:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16978:64:0;;;;;;;;;;;;;;;29681:4:::1;-1:-1:-1::0;;;;;29670:15:0::1;:4;;29675:1;29670:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29670:7:0::1;-1:-1:-1::0;;;;;29670:15:0::1;;29662:57;;;::::0;;-1:-1:-1;;;29662:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;29662:57:0;;;;;;;;;;;;;::::1;;29740:55;29770:7;29779:9;29790:4;;29740:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29740:29:0::1;::::0;-1:-1:-1;;;29740:55:0:i:1;:::-;29730:65;;29828:9;29814:7;29822:1;29814:10;;;;;;;;;;;;;;:23;;29806:75;;;;-1:-1:-1::0;;;29806:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29898:4;-1:-1:-1::0;;;;;29892:19:0::1;;29919:7;29927:1;29919:10;;;;;;;;;;;;;;29892:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29892:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29892:40:0;;;;;29956:4;-1:-1:-1::0;;;;;29950:20:0::1;;29971:51;29996:7;30005:4;;30010:1;30005:7;;;;;;29971:51;30024:7;30032:1;30024:10;;;;;;;;;;;;;;29950:85;;;;;;;;;;;;;-1:-1:-1::0;;;;;29950:85:0::1;-1:-1:-1::0;;;;;29950:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29950:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29950:85:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;29950:85:0;29943:93:::1;;;;30047:24;30053:7;30062:4;;30047:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;30068:2:0;;-1:-1:-1;30047:5:0::1;::::0;-1:-1:-1;;30047:24:0:i:1;:::-;30134:7;30142:1;30134:10;;;;;;;;;;;;;;30122:9;:22;30118:94;;;30146:66;30177:10;30201:7;30209:1;30201:10;;;;;;;;;;;;;;30189:9;:22;30146:30;:66::i;1571:449::-:0;1803:45;;;-1:-1:-1;;;;;1803:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1803:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1792:57:0;;;;1757:12;;1771:17;;1792:10;;;;1803:45;1792:57;;;25:18:-1;1792: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;;;1792: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;;1756:93:0;;;;1882:7;:57;;;;-1:-1:-1;1894:11:0;;:16;;:44;;;1925:4;1914:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1914:24:0;1894:44;1860:152;;;;-1:-1:-1;;;1860:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1571:449;;;;;:::o;2534:217::-;2647:12;;;2607;2647;;;;;;;;;-1:-1:-1;;;;;2625:7:0;;;2640:5;;2625: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;;;2625: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;;2606:54:0;;;2679:7;2671:72;;;;-1:-1:-1;;;2671:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2534:217;;;:::o;13182:517::-;13275:14;13321:1;13310:8;:12;13302:68;;;;-1:-1:-1;;;13302:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13401:1;13389:9;:13;:31;;;;;13419:1;13406:10;:14;13389:31;13381:84;;;;-1:-1:-1;;;13381:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13476:20;13499:17;:8;13512:3;13499:17;:12;:17;:::i;:::-;13476:40;-1:-1:-1;13527:14:0;13544:31;13476:40;13564:10;13544:31;:19;:31;:::i;:::-;13527:48;-1:-1:-1;13586:16:0;13605:40;13629:15;13605:19;:9;13619:4;13605:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;13586:59;;13680:11;13668:9;:23;;;;;;;13182:517;-1:-1:-1;;;;;;;13182:517:0:o;14374:511::-;14475:21;14532:1;14517:4;:11;:16;;14509:59;;;;;-1:-1:-1;;;14509:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14600:4;:11;14589:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14589:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;14589:23:0;;14579:33;;14636:8;14623:7;14631:1;14623:10;;;;;;;;;;;;;:21;;;;;14660:6;14655:223;14686:1;14672:4;:11;:15;14668:1;:19;14655:223;;;14710:14;14726:15;14745:42;14757:7;14766:4;14771:1;14766:7;;;;;;;;;;;;;;14775:4;14780:1;14784;14780:5;14775:11;;;;;;;;;;;;;;14745;:42::i;:::-;14709:78;;;;14819:47;14832:7;14840:1;14832:10;;;;;;;;;;;;;;14844:9;14855:10;14819:12;:47::i;:::-;14802:7;14810:1;14814;14810:5;14802:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;14689:3:0;;14655:223;;;;14374:511;;;;;:::o;11699:478::-;11788:12;11814:14;11830;11848:26;11859:6;11867;11848:10;:26::i;:::-;12012:32;;;-1:-1:-1;;12012:32:0;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;12012:32:0;;;;;12002:43;;;;;;-1:-1:-1;;;;;;11915:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11915:251:0;;;;;;;11905:262;;;;;;;;;11699:478;-1:-1:-1;;;;;11699:478:0:o;2028:498::-;2299:51;;;-1:-1:-1;;;;;2299:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2299:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2288:63:0;;;;2253:12;;2267:17;;2288:10;;;;2299:51;2288:63;;;25:18:-1;2288: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;;;2288: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;;2252:99:0;;;;2384:7;:57;;;;-1:-1:-1;2396:11:0;;:16;;:44;;;2427:4;2416:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2416:24:0;2396:44;2362:156;;;;-1:-1:-1;;;2362:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2028:498;;;;;;:::o;25030:735::-;25137:6;25132:626;25163:1;25149:4;:11;:15;25145:1;:19;25132:626;;;25187:13;25202:14;25221:4;25226:1;25221:7;;;;;;;;;;;;;;25230:4;25235:1;25239;25235:5;25230:11;;;;;;;;;;;;;;25186:56;;;;25258:14;25277:42;25305:5;25312:6;25277:27;:42::i;:::-;25257:62;;;25334:14;25351:7;25359:1;25363;25359:5;25351:14;;;;;;;;;;;;;;25334:31;;25381:15;25398;25426:6;-1:-1:-1;;;;;25417:15:0;:5;-1:-1:-1;;;;;25417:15:0;;:61;;25459:9;25475:1;25417:61;;;25441:1;25445:9;25417:61;25380:98;;;;25493:10;25524:1;25510:4;:11;:15;25506:1;:19;:82;;25585:3;25506:82;;;25528:54;25553:7;25562:6;25570:4;25575:1;25579;25575:5;25570:11;;;;;;;;;;;;;;25528:24;:54::i;:::-;25493:95;;25618:48;25643:7;25652:5;25659:6;25618:24;:48::i;:::-;-1:-1:-1;;;;;25603:69:0;;25691:10;25703;25715:2;25729:1;25719:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;25719:12:0;87:42:-1;143:17;;-1:-1;25719:12:0;;25603:143;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25603:143:0;-1:-1:-1;;;;;25603:143: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;25603:143:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25603:143:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;25166:3:0;;;;;-1:-1:-1;25132:626:0;;-1:-1:-1;;;;;;;;25132:626:0;;;25030:735;;;:::o;14966:532::-;15067:21;15124:1;15109:4;:11;:16;;15101:59;;;;;-1:-1:-1;;;15101:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15192:4;:11;15181:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15181:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;15181:23:0;;15171:33;;15245:9;15215:7;15240:1;15223:7;:14;:18;15215:27;;;;;;;;;;;;;;;;;:39;15279:11;;-1:-1:-1;;15279:15:0;15265:226;15296:5;;15265:226;;15324:14;15340:15;15359:42;15371:7;15380:4;15389:1;15385;:5;15380:11;;;;;;;;;;;;;;15393:4;15398:1;15393:7;;;;;;;15359:42;15323:78;;;;15433:46;15445:7;15453:1;15445:10;;;;;;;;;;;;;;15457:9;15468:10;15433:11;:46::i;:::-;15416:7;15428:1;15424;:5;15416:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;15303:3:0;15265:226;;30367:1214;30480:6;30475:1099;30506:1;30492:4;:11;:15;30488:1;:19;30475:1099;;;30530:13;30545:14;30564:4;30569:1;30564:7;;;;;;;;;;;;;;30573:4;30578:1;30582;30578:5;30573:11;;;;;;;;;;;;;;30529:56;;;;30601:14;30620:42;30648:5;30655:6;30620:27;:42::i;:::-;30600:62;;;30677:19;30714:48;30739:7;30748:5;30755:6;30714:24;:48::i;:::-;30677:86;;30778:16;30809:17;30897:13;30912;30930:4;-1:-1:-1;;;;;30930:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30930:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30930:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30930:18:0;;;;;;;-1:-1:-1;;;;;30896:52:0;;;;-1:-1:-1;30896:52:0;;-1:-1:-1;30964:17:0;;-1:-1:-1;;;;;31005:15:0;;;;;;;:61;;31047:8;31057;31005:61;;;31024:8;31034;31005:61;30963:103;;;;31095:56;31138:12;31102:5;-1:-1:-1;;;;;31095:23:0;;31127:4;31095:38;;;;;;;;;;;;;-1:-1:-1;;;;;31095:38:0;-1:-1:-1;;;;;31095:38:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;31095:56:0;31081:70;;31181:71;31211:11;31224:12;31238:13;31181:29;:71::i;:::-;31166:86;;30475:1099;;;;31283:15;31300;31328:6;-1:-1:-1;;;;;31319:15:0;:5;-1:-1:-1;;;;;31319:15:0;;:67;;31364:12;31383:1;31319:67;;;31343:1;31347:12;31319:67;31282:104;;;;31401:10;31432:1;31418:4;:11;:15;31414:1;:19;:82;;31493:3;31414:82;;;31436:54;31461:7;31470:6;31478:4;31483:1;31487;31483:5;31478:11;;;;;;;31436:54;31549:12;;;31559:1;31549:12;;;;;;;;;;-1:-1:-1;;;31511:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;31511:51:0;;;;;;;;;;;;;;;;;;;;;;31401:95;;-1:-1:-1;31511:9:0;;;;;;31521:10;;31533;;31401:95;;31549:12;;31511:51;;;;;;;;31549:12;;31511:51;;;;31549: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;31511:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31511:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;30509:3:0;;;;;-1:-1:-1;30475:1099:0;;-1:-1:-1;;;;;;;;;;30475:1099:0;10715:129;10799:5;;;10794:16;;;;10786:50;;;;;-1:-1:-1;;;10786:50:0;;;;;;;;;;;;-1:-1:-1;;;10786:50:0;;;;;;;;;;;;;;13820:472;13913:13;13959:1;13947:9;:13;13939:70;;;;-1:-1:-1;;;13939:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14040:1;14028:9;:13;:31;;;;;14058:1;14045:10;:14;14028:31;14020:84;;;;-1:-1:-1;;;14020:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14115:14;14132:34;14161:4;14132:24;:9;14146;14132:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;14115:51;-1:-1:-1;14177:16:0;14196:34;14226:3;14196:25;:10;14211:9;14196:25;:14;:25;:::i;:34::-;14177:53;;14252:32;14282:1;14265:11;14253:9;:23;;;;;;;14252:32;:29;:32;:::i;:::-;14241:43;13820:472;-1:-1:-1;;;;;;13820:472:0:o;12739:321::-;12821:12;12864:1;12854:7;:11;12846:61;;;;-1:-1:-1;;;12846:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12937:1;12926:8;:12;:28;;;;;12953:1;12942:8;:12;12926:28;12918:81;;;;-1:-1:-1;;;12918:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13044:8;13020:21;:7;13032:8;13020:21;:11;:21;:::i;:::-;:32;;;;;;;12739:321;-1:-1:-1;;;;12739:321:0:o;11258:349::-;11333:14;11349;11394:6;-1:-1:-1;;;;;11384:16:0;:6;-1:-1:-1;;;;;11384:16:0;;;11376:66;;;;-1:-1:-1;;;11376:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11481:6;-1:-1:-1;;;;;11472:15:0;:6;-1:-1:-1;;;;;11472:15:0;;:53;;11510:6;11518;11472:53;;;11491:6;11499;11472:53;11453:72;;-1:-1:-1;11453:72:0;-1:-1:-1;;;;;;11544:20:0;;11536:63;;;;;-1:-1:-1;;;11536:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11258:349;;;;;:::o;17357:1390::-;17670:50;;;-1:-1:-1;;;17670:50:0;;-1:-1:-1;;;;;17670:50:0;;;;;;;;;;;;;;;;17575:12;;;;;;17688:7;17670:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;17670:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17670:50:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17670:50:0;-1:-1:-1;;;;;17670:64:0;;17666:150;;;17751:53;;;-1:-1:-1;;;17751:53:0;;-1:-1:-1;;;;;17751:53:0;;;;;;;;;;;;;;;;17769:7;17751:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;17751:37:0;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;17751:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17751:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17666:150:0;17827:13;17842;17859:53;17888:7;17897:6;17905;17859:28;:53::i;:::-;17826:86;;;;17927:8;17939:1;17927:13;:30;;;;-1:-1:-1;17944:13:0;;17927:30;17923:817;;;17996:14;;-1:-1:-1;18012:14:0;;-1:-1:-1;17923:817:0;;;18060:19;18082:58;18105:14;18121:8;18131;18082:22;:58::i;:::-;18060:80;;18177:14;18159;:32;18155:574;;18238:10;18220:14;:28;;18212:79;;;;-1:-1:-1;;;18212:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18332:14;;-1:-1:-1;18348:14:0;-1:-1:-1;18348:14:0;18155:574;;;18404:19;18426:58;18449:14;18465:8;18475;18426:22;:58::i;:::-;18404:80;;18528:14;18510;:32;;18503:40;;;;18588:10;18570:14;:28;;18562:79;;;;-1:-1:-1;;;18562:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18682:14;-1:-1:-1;18698:14:0;;-1:-1:-1;18155:574:0;17923:817;;17357:1390;;;;;;;;;;;:::o;10852:142::-;10904:6;10931;;;:30;;-1:-1:-1;;10946:5:0;;;10960:1;10955;10946:5;10955:1;10941:15;;;;;:20;10931:30;10923:63;;;;;-1:-1:-1;;;10923:63:0;;;;;;;;;;;;-1:-1:-1;;;10923:63:0;;;;;;;;;;;;;;10579:128;10663:5;;;10658:16;;;;10650:49;;;;;-1:-1:-1;;;10650:49:0;;;;;;;;;;;;-1:-1:-1;;;10650:49:0;;;;;;;;;;;;;;12235:391;12328:13;12343;12370:14;12389:26;12400:6;12408;12389:10;:26::i;:::-;12369:46;;;12427:13;12442;12475:32;12483:7;12492:6;12500;12475:7;:32::i;:::-;-1:-1:-1;;;;;12460:60:0;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12460:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12460:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12460:62:0;;;;;;;-1:-1:-1;;;;;12426:96:0;;;;-1:-1:-1;12426:96:0;;-1:-1:-1;;;;;;12556:16:0;;;;;;;:62;;12599:8;12609;12556:62;;;12576:8;12586;12556:62;12533:85;;;;-1:-1:-1;12235:391:0;-1:-1:-1;;;;;;;12235:391:0:o

Swarm Source

ipfs://8305e58e6f6ceb88157f7b1a45711a29901e467561f8c113f048fe25f21c6149
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.