Contract 0x650af55d5877f289837c30b94af91538a7504b76

 

Contract Overview

Multichain: Router V6
Balance:
0 ETH

ETH Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763Any Swap In Auto197356272022-08-08 16:33:256 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000100421121 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820Any Swap In Auto197349382022-08-08 16:23:4716 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000085931586 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538Any Swap In Auto197341452022-08-08 16:15:4824 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000085739894 ETH
0x48678f3a9227e46fd9777cf0cccd088f0d7ad9758a3bea65090c907cb786d9f4Any Swap In Auto197336192022-08-08 16:09:0930 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000085744777 ETH
0x724e80a67bdb3c74b498d12d383396548d663b08304d00ed41048f3713f9b825Any Swap In Auto197331782022-08-08 16:03:5436 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000086124115 ETH
0x4c8b6742381b71cb86772b284ca8de3674da83462f8b7901c2fa25cbf6a94e47Any Swap Out Nat...197320192022-08-08 15:49:0850 mins ago0xbbf1286b6b9ecd12feb27cc3b44d7eafc623178d IN  Multichain: Router V60.075102465924347 ETH0.000074666961 ETH
0xa5220125f039b56a4e7d0558bea91e38354e1bc93f3988bc69f66c7b35580cb8Any Swap Out Nat...197294092022-08-08 15:21:031 hr 18 mins ago0x91fac9caef791f96ff3726da49eee06f8b15ef60 IN  Multichain: Router V60.0453 ETH0.000058792715 ETH
0xac25b4aeea03d62058cf357741cf89a453ac67e27117a23d12a754619408c87bAny Swap Out Nat...197285512022-08-08 15:08:471 hr 31 mins ago0xc70b844673bbd777c9e1cffa45401a267b16c065 IN  Multichain: Router V63.29 ETH0.00005879105 ETH
0x9c5abd91cd4f9296e551f9b47e4d06c532520b8bafab8a66c0447b114c9fdbabAny Swap Out Nat...197277202022-08-08 14:59:091 hr 40 mins ago0xc70b844673bbd777c9e1cffa45401a267b16c065 IN  Multichain: Router V60.01 ETH0.000058382589 ETH
0xaa766e9c80180ed5826e95986273eb8d7a6cf44218939391735e601940e9bdcaAny Swap In Auto197266232022-08-08 14:44:541 hr 55 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000068521407 ETH
0x7f5809e6b5a6b95a97d099aefb7b0ff7c526592d0b95acc40fc56c46e1461ebaAny Swap Out Nat...197253212022-08-08 14:29:312 hrs 10 mins ago0xf0a4db1e64f81980eafffe35fb8c547bbce0e540 IN  Multichain: Router V60.007 ETH0.000058382589 ETH
0x36560050ab047a762c1299af888294cfb517a6ca5aab9896922d646605891f7dAny Swap In Auto197253112022-08-08 14:29:312 hrs 10 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000068065441 ETH
0xe05a02978d7b7345daf006596a5aeaf8fa5e79cda71deaf9194fd05a617a11d5Any Swap Out Nat...197249952022-08-08 14:26:302 hrs 13 mins ago0x3a0ca7dbe248ef8ce5ed2237ce85c7ae6036513a IN  Multichain: Router V60.04 ETH0.000058384254 ETH
0xa2e8dcec36ff36d667aca973fa95fae72cf9255df8ab3e05477415cefda0c39dAny Swap Out Nat...197209492022-08-08 13:40:552 hrs 59 mins ago0x8d55a290d97de0d2edb22e1610bd4d4c167e4cf6 IN  Multichain: Router V60.05 ETH0.000058384254 ETH
0x0cf1edc12ad24716c5e8698532cdcf2d3d1dfb632427b249d8e18c9f43c03c41Any Swap In Auto197204042022-08-08 13:33:203 hrs 6 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000068365682 ETH
0x61423ae70e7a8aefb0765684fbc1c7626c616d50d176f13b189da723e9cd9d4bAny Swap In Auto197199752022-08-08 13:29:383 hrs 10 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000068365682 ETH
0x86f770d63f467f1b43f4c722f75c1e562fe679307b463cd0851f540d02c47685Any Swap Out Nat...197199662022-08-08 13:29:383 hrs 10 mins ago0x8d55a290d97de0d2edb22e1610bd4d4c167e4cf6 IN  Multichain: Router V60.2 ETH0.000058231081 ETH
0xa15abb44298e40031b491a8f16bad60c47ac896ee564164679b41a17cce8d855Any Swap Out Und...197198482022-08-08 13:27:583 hrs 11 mins ago0x7af4ee28586853b23e38a6a72ea7a17f1eba98d7 IN  Multichain: Router V60 ETH0.000060763094 ETH
0xd3b7b76f23b1f4b2697b84413757a667db62c562c332ffdc5c20f497c227497cAny Swap In Auto197193012022-08-08 13:21:343 hrs 18 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000068520519 ETH
0xf701af77ea569c5a885ed4b00c25c2778eee0ea52418791f2631e4a9836fd361Any Swap Out Nat...197192532022-08-08 13:21:033 hrs 18 mins ago0xda3097dd54ab80239730b824725e3223b820d86f IN  Multichain: Router V65.5 ETH0.000058385808 ETH
0x1fdd3b346ed25cf28b86e69c6296671fa1a3fd2de8999357c8512596946e0f85Any Swap Out Nat...197188452022-08-08 13:15:443 hrs 24 mins ago0x768a49d40b674a9ef54f5d1cf3d1054a749e905a IN  Multichain: Router V630 ETH0.000058590038 ETH
0x499ab9dad3e2eaaf967b88c8ff3cb5557951746c5bfdc49ceeb10a4c48b90efcAny Swap Out Nat...197183962022-08-08 13:10:093 hrs 29 mins ago0x4907bec54383a083744967df7db6196c7c243fad IN  Multichain: Router V60.007 ETH0.000058231081 ETH
0x435148d9bb596d1ced834b0bb838c005411b48dbaad14949192a112ea247bc65Any Swap In Auto197168682022-08-08 12:55:093 hrs 44 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000068677244 ETH
0x52ba40a2cee58257b9c36f8740f5d7eae78c331b04d4a3a8a3575b6f7b392d4fAny Swap In Auto197166342022-08-08 12:52:223 hrs 47 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000065309115 ETH
0xd7c96603f659ab1a6143ae5a660a664b53cfe91e12ba817ba771abd49a337d27Any Swap In Auto197166112022-08-08 12:52:063 hrs 47 mins ago0x2a038e100f8b85df21e4d44121bdbfe0c288a869 IN  Multichain: Router V60 ETH0.000065459911 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763197356272022-08-08 16:33:256 mins ago Multichain: Router V60x06827bac9ee04469908c445bfe65fb0937e93dfb2.540926815754515328 ETH
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763197356272022-08-08 16:33:256 mins ago 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 Multichain: Router V62.540926815754515328 ETH
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763197356272022-08-08 16:33:256 mins ago Multichain: Router V6 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763197356272022-08-08 16:33:256 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763197356272022-08-08 16:33:256 mins ago Multichain: Router V6 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763197356272022-08-08 16:33:256 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x959154c2567aa25829f6a8492a78059521555372917515dc0d36f757a724e763197356272022-08-08 16:33:256 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820197349382022-08-08 16:23:4716 mins ago Multichain: Router V60xa4c540730db3dc990bc6d4b644f3b8cdc82a40bd0.031664956187434286 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820197349382022-08-08 16:23:4716 mins ago 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 Multichain: Router V60.031664956187434286 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820197349382022-08-08 16:23:4716 mins ago Multichain: Router V6 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820197349382022-08-08 16:23:4716 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820197349382022-08-08 16:23:4716 mins ago Multichain: Router V6 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820197349382022-08-08 16:23:4716 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x15df731d28f6d7f5d6227b9dcc1ee2da2cf68b4cd183aae1c9862451b53e3820197349382022-08-08 16:23:4716 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538197341452022-08-08 16:15:4824 mins ago Multichain: Router V60xad065d085d6b53a934db81937aafe3498df27d5b0.008945 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538197341452022-08-08 16:15:4824 mins ago 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 Multichain: Router V60.008945 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538197341452022-08-08 16:15:4824 mins ago Multichain: Router V6 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538197341452022-08-08 16:15:4824 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538197341452022-08-08 16:15:4824 mins ago Multichain: Router V6 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538197341452022-08-08 16:15:4824 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x1c3a4b3e01d86447d22eeb747feb18aeccc7eed0acb4b74cf4ad348e24809538197341452022-08-08 16:15:4824 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
0x48678f3a9227e46fd9777cf0cccd088f0d7ad9758a3bea65090c907cb786d9f4197336192022-08-08 16:09:0930 mins ago Multichain: Router V60xe1d1ddb84063c4c85315d25dc568261c2f83b8c70.074015722713656992 ETH
0x48678f3a9227e46fd9777cf0cccd088f0d7ad9758a3bea65090c907cb786d9f4197336192022-08-08 16:09:0930 mins ago 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 Multichain: Router V60.074015722713656992 ETH
0x48678f3a9227e46fd9777cf0cccd088f0d7ad9758a3bea65090c907cb786d9f4197336192022-08-08 16:09:0930 mins ago Multichain: Router V6 0x82af49447d8a07e3bd95bd0d56f35241523fbab10 ETH
0x48678f3a9227e46fd9777cf0cccd088f0d7ad9758a3bea65090c907cb786d9f4197336192022-08-08 16:09:0930 mins ago Multichain: Router V6 0x1dd9e9e142f3f84d90af1a9f2cb617c7e08420a40 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV6Router

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2022-06-22
*/

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

pragma solidity ^0.8.2;

interface ISushiswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

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

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

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

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

library SushiswapV2Library {
    using SafeMathSushiswap 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, 'SushiswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'SushiswapV2Library: 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(uint160(uint256(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'e18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303' // 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,) = ISushiswapV2Pair(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, 'SushiswapV2Library: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'SushiswapV2Library: 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, 'SushiswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: 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, 'SushiswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: 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, 'SushiswapV2Library: 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, 'SushiswapV2Library: 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);
        }
    }
}

// helper methods for interacting with ERC20 tokens and sending NATIVE that do not consistently return true/false
library TransferHelper {
    function safeTransferNative(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: NATIVE_TRANSFER_FAILED');
    }
}

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

interface AnyswapV1ERC20 {
    function mint(address to, uint256 amount) external returns (bool);
    function burn(address from, uint256 amount) external returns (bool);
    function setMinter(address _auth) external;
    function applyMinter() external;
    function revokeMinter(address _auth) external;
    function changeVault(address newVault) external returns (bool);
    function depositVault(uint amount, address to) external returns (uint);
    function withdrawVault(address from, uint amount, address to) external returns (uint);
    function underlying() external view returns (address);
    function deposit(uint amount, address to) external returns (uint);
    function withdraw(uint amount, address to) external returns (uint);
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyswapV6Router {
    using SafeERC20 for IERC20;
    using SafeMathSushiswap for uint;

    address public immutable factory;
    address public immutable wNATIVE;

    // delay for timelock functions
    uint public constant DELAY = 2 days;

    bool public enableSwapTrade;
    modifier swapTradeEnabled() {
        require(enableSwapTrade, 'AnyswapV6Router: SwapTrade disabled');
        _;
    }

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'AnyswapV6Router: EXPIRED');
        _;
    }

    constructor(address _factory, address _wNATIVE, address _mpc) {
        _newMPC = _mpc;
        _newMPCEffectiveTime = block.timestamp;
        factory = _factory;
        wNATIVE = _wNATIVE;
    }

    receive() external payable {
        assert(msg.sender == wNATIVE); // only accept Native via fallback from the wNative contract
    }

    address private _oldMPC;
    address private _newMPC;
    uint256 private _newMPCEffectiveTime;

    event LogChangeMPC(address indexed oldMPC, address indexed newMPC, uint indexed effectiveTime, uint chainID);
    event LogAnySwapIn(bytes32 indexed txhash, address indexed token, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, string to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForTokens(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForNative(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);

    modifier onlyMPC() {
        require(msg.sender == mpc(), "AnyswapV6Router: FORBIDDEN");
        _;
    }

    function mpc() public view returns (address) {
        if (block.timestamp >= _newMPCEffectiveTime) {
            return _newMPC;
        }
        return _oldMPC;
    }

    function cID() public view returns (uint) {
        return block.chainid;
    }

    function setEnableSwapTrade(bool enable) external onlyMPC {
        enableSwapTrade = enable;
    }

    function changeMPC(address newMPC) external onlyMPC returns (bool) {
        require(newMPC != address(0), "AnyswapV6Router: address(0)");
        _oldMPC = mpc();
        _newMPC = newMPC;
        _newMPCEffectiveTime = block.timestamp + DELAY;
        emit LogChangeMPC(_oldMPC, _newMPC, _newMPCEffectiveTime, cID());
        return true;
    }

    function changeVault(address token, address newVault) external onlyMPC returns (bool) {
        return AnyswapV1ERC20(token).changeVault(newVault);
    }

    function setMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).setMinter(_auth);
    }

    function applyMinter(address token) external onlyMPC {
        return AnyswapV1ERC20(token).applyMinter();
    }

    function revokeMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).revokeMinter(_auth);
    }

    function _anySwapOut(address from, address token, address to, uint amount, uint toChainID) internal {
        AnyswapV1ERC20(token).burn(from, amount);
        emit LogAnySwapOut(token, from, to, amount, cID(), toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to`
    function anySwapOut(address token, address to, uint amount, uint toChainID) external {
        _anySwapOut(msg.sender, token, to, amount, toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to` by minting with `underlying`
    function anySwapOutUnderlying(address token, address to, uint amount, uint toChainID) external {
        address _underlying = AnyswapV1ERC20(token).underlying();
        require(_underlying != address(0), "AnyswapV6Router: no underlying");
        IERC20(_underlying).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, address to, uint toChainID) external payable {
        require(wNATIVE != address(0), "AnyswapV6Router: zero wNATIVE");
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV6Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    function anySwapOut(address[] calldata tokens, address[] calldata to, uint[] calldata amounts, uint[] calldata toChainIDs) external {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapOut(msg.sender, tokens[i], to[i], amounts[i], toChainIDs[i]);
        }
    }

    function anySwapOut(address token, string memory to, uint amount, uint toChainID) external {
        AnyswapV1ERC20(token).burn(msg.sender, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutUnderlying(address token, string memory to, uint amount, uint toChainID) external {
        address _underlying = AnyswapV1ERC20(token).underlying();
        require(_underlying != address(0), "AnyswapV6Router: no underlying");
        IERC20(_underlying).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, string memory to, uint toChainID) external payable {
        require(wNATIVE != address(0), "AnyswapV6Router: zero wNATIVE");
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV6Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    function _anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) internal {
        AnyswapV1ERC20(token).mint(to, amount);
        emit LogAnySwapIn(txs, token, to, amount, fromChainID, cID());
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    // triggered by `anySwapOut`
    function anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying`
    function anySwapInUnderlying(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20(token).withdrawVault(to, amount, to);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying` if possible
    function anySwapInAuto(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20 _anyToken = AnyswapV1ERC20(token);
        address _underlying = _anyToken.underlying();
        if (_underlying != address(0) && IERC20(_underlying).balanceOf(token) >= amount) {
            if (_underlying == wNATIVE) {
                _anyToken.withdrawVault(to, amount, address(this));
                IwNATIVE(wNATIVE).withdraw(amount);
                TransferHelper.safeTransferNative(to, amount);
            } else {
                _anyToken.withdrawVault(to, amount, to);
            }
        }
    }

    function depositNative(address token, address to) external payable returns (uint) {
        require(wNATIVE != address(0), "AnyswapV6Router: zero wNATIVE");
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV6Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        AnyswapV1ERC20(token).depositVault(msg.value, to);
        return msg.value;
    }

    function withdrawNative(address token, uint amount, address to) external returns (uint) {
        require(wNATIVE != address(0), "AnyswapV6Router: zero wNATIVE");
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV6Router: underlying is not wNATIVE");

        uint256 old_balance = IERC20(wNATIVE).balanceOf(address(this));
        AnyswapV1ERC20(token).withdrawVault(msg.sender, amount, address(this));
        uint256 new_balance = IERC20(wNATIVE).balanceOf(address(this));
        assert(new_balance == old_balance + amount);

        IwNATIVE(wNATIVE).withdraw(amount);
        TransferHelper.safeTransferNative(to, amount);
        return amount;
    }

    // extracts mpc fee from bridge fees
    function anySwapFeeTo(address token, uint amount) external onlyMPC {
        address _mpc = mpc();
        AnyswapV1ERC20(token).mint(_mpc, amount);
        AnyswapV1ERC20(token).withdrawVault(_mpc, amount, _mpc);
    }

    function anySwapIn(bytes32[] calldata txs, address[] calldata tokens, address[] calldata to, uint256[] calldata amounts, uint[] calldata fromChainIDs) external onlyMPC {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapIn(txs[i], tokens[i], to[i], amounts[i], fromChainIDs[i]);
        }
    }

    // **** 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,) = SushiswapV2Library.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 ? SushiswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            ISushiswapV2Pair(SushiswapV2Library.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokensUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForTokens`
    function anySwapInExactTokensForTokens(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'SushiswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0], SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, to);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNative(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNativeUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForNative`
    function anySwapInExactTokensForNative(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        require(path[path.length - 1] == wNATIVE, 'AnyswapV6Router: INVALID_PATH');
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'AnyswapV6Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0],  SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, address(this));
        IwNATIVE(wNATIVE).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferNative(to, amounts[amounts.length - 1]);
    }

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

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        external
        pure
        virtual
        returns (uint amountOut)
    {
        return SushiswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        external
        pure
        virtual
        returns (uint amountIn)
    {
        return SushiswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);
    }

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

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_wNATIVE","type":"address"},{"internalType":"address","name":"_mpc","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"string","name":"to","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMPC","type":"address"},{"indexed":true,"internalType":"address","name":"newMPC","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"LogChangeMPC","type":"event"},{"inputs":[],"name":"DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"anySwapFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"txs","type":"bytes32[]"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"fromChainIDs","type":"uint256[]"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInAuto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"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"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForNative","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"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"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"toChainIDs","type":"uint256[]"}],"name":"anySwapOut","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNative","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNativeUnderlying","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokens","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokensUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMPC","type":"address"}],"name":"changeMPC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"depositNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"enableSwapTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableSwapTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b506040516200470538038062004705833981016040819052620000349162000081565b600180546001600160a01b0319166001600160a01b03928316179055426002559182166080521660a052620000cb565b80516001600160a01b03811681146200007c57600080fd5b919050565b6000806000606084860312156200009757600080fd5b620000a28462000064565b9250620000b26020850162000064565b9150620000c26040850162000064565b90509250925092565b60805160a051614549620001bc6000396000818161022e0152818161057b01528181610867015281816109260152818161127d015281816114660152818161153c0152818161158201528181611634015281816116c801528181611b2201528181611b6801528181611c1a01528181611cae01528181611df601528181611e3c01528181611f0401528181612004015281816120a70152818161234f015281816123950152818161244701526124db01526000818161062d01528181610cd201528181610e9901528181610fb1015281816113290152818161268301528181613234015261328401526145496000f3fe60806040526004361061021e5760003560e01c8063701bb89111610123578063a5e56571116100ab578063d8b9f6101161006f578063d8b9f6101461068f578063d9e35bb2146106af578063dcfb77b1146106cf578063edbdf5e2146106ef578063f75c26641461070f57600080fd5b8063a5e56571146105e8578063ad615dec146105fb578063c45a01551461061b578063c604b0b81461064f578063d06ca61f1461066f57600080fd5b806387bafe5f116100f257806387bafe5f1461052957806387cc6e2f146105495780638fd903f51461056957806399a2f2d7146105b55780639f122d6c146105c857600080fd5b8063701bb891146104b6578063825bb13c146104c9578063832e9492146104e957806385f8c2591461050957600080fd5b8063353cb3a8116101a6578063540dd52c11610175578063540dd52c1461042c5780635b7b018c1461043f57806365782f561461045f57806369b411701461047f5780636a4539721461049657600080fd5b8063353cb3a8146103a25780633f88de89146103cc578063456862aa146103ec57806352a397d51461040c57600080fd5b80630bb57203116101ed5780630bb57203146102f55780631f00ca7414610315578063241dc2df1461034257806325121b76146103625780632fc1e7281461038257600080fd5b80630175b1c414610262578063049b4e7e14610282578063054d50d4146102a2578063085c6d5e146102d557600080fd5b3661025d57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461025b5761025b613926565b005b600080fd5b34801561026e57600080fd5b5061025b61027d366004613951565b610724565b34801561028e57600080fd5b5061025b61029d366004613a5a565b610a15565b3480156102ae57600080fd5b506102c26102bd366004613aba565b610b35565b6040519081526020015b60405180910390f35b3480156102e157600080fd5b5061025b6102f0366004613af4565b610b4a565b34801561030157600080fd5b5061025b610310366004613b5d565b610b95565b34801561032157600080fd5b50610335610330366004613bda565b610ccb565b6040516102cc9190613c98565b34801561034e57600080fd5b5061025b61035d366004613cdc565b610d01565b34801561036e57600080fd5b5061025b61037d366004613d22565b610d14565b34801561038e57600080fd5b5061033561039d366004613e13565b610e17565b3480156103ae57600080fd5b506000546103bc9060ff1681565b60405190151581526020016102cc565b3480156103d857600080fd5b5061025b6103e7366004613951565b611092565b3480156103f857600080fd5b506103bc610407366004613e98565b611150565b34801561041857600080fd5b50610335610427366004613e13565b6111f6565b61025b61043a366004613ed1565b61153a565b34801561044b57600080fd5b506103bc61045a366004613f2a565b611792565b34801561046b57600080fd5b5061025b61047a366004613b5d565b6118c9565b34801561048b57600080fd5b506102c26202a30081565b3480156104a257600080fd5b5061025b6104b1366004613b5d565b6119de565b6102c26104c4366004613e98565b611b1e565b3480156104d557600080fd5b5061025b6104e4366004613951565b611da6565b3480156104f557600080fd5b506102c2610504366004613f47565b611df2565b34801561051557600080fd5b506102c2610524366004613aba565b61211f565b34801561053557600080fd5b5061025b610544366004613e98565b61212c565b34801561055557600080fd5b5061025b610564366004613f89565b6121bc565b34801561057557600080fd5b5061059d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102cc565b3480156105c157600080fd5b50466102c2565b3480156105d457600080fd5b5061025b6105e3366004613e98565b6122e7565b61025b6105f6366004613fb5565b61234d565b34801561060757600080fd5b506102c2610616366004613aba565b6125af565b34801561062757600080fd5b5061059d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561065b57600080fd5b5061025b61066a366004613a5a565b6125bc565b34801561067b57600080fd5b5061033561068a366004613bda565b61267c565b34801561069b57600080fd5b5061025b6106aa366004613b5d565b6126a9565b3480156106bb57600080fd5b5061025b6106ca366004613f2a565b612739565b3480156106db57600080fd5b5061025b6106ea366004613ff6565b6127c3565b3480156106fb57600080fd5b5061025b61070a366004613cdc565b612874565b34801561071b57600080fd5b5061059d61299e565b61072c61299e565b6001600160a01b0316336001600160a01b0316146107655760405162461bcd60e51b815260040161075c906140ba565b60405180910390fd5b61077285858585856129ce565b60008490506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107db91906140f1565b90506001600160a01b0381161580159061086057506040516370a0823160e01b81526001600160a01b0387811660048301528591908316906370a0823190602401602060405180830381865afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d919061410e565b10155b15610a0c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03160361099957604051620e75bb60e21b81526001600160a01b038316906239d6ec906108cc90889088903090600401614127565b6020604051808303816000875af11580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f919061410e565b50604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561097257600080fd5b505af1158015610986573d6000803e3d6000fd5b505050506109948585612a9c565b610a0c565b604051620e75bb60e21b81526001600160a01b038316906239d6ec906109c790889088908290600401614127565b6020604051808303816000875af11580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a919061410e565b505b50505050505050565b6000846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7991906140f1565b90506001600160a01b038116610ad15760405162461bcd60e51b815260206004820152601e60248201527f416e79737761705636526f757465723a206e6f20756e6465726c79696e670000604482015260640161075c565b610ae66001600160a01b038216338786612b6d565b336001600160a01b0386167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b7986864687604051610b2694939291906141a2565b60405180910390a35050505050565b6000610b42848484612bc7565b949350505050565b610b5261299e565b6001600160a01b0316336001600160a01b031614610b825760405162461bcd60e51b815260040161075c906140ba565b6000805460ff1916911515919091179055565b60005460ff16610bb75760405162461bcd60e51b815260040161075c906141d1565b8142811015610bd85760405162461bcd60e51b815260040161075c90614214565b85856000818110610beb57610beb61424b565b9050602002016020810190610c009190613f2a565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af1158015610c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c739190614261565b506001600160a01b038416337ffea6abdf4fd32f20966dff7619354cd82cd43dc78a3bee479f04c74dbfc585b388888c8c465b89604051610cb99695949392919061427e565b60405180910390a35050505050505050565b6060610cf87f00000000000000000000000000000000000000000000000000000000000000008484612c95565b90505b92915050565b610d0e3385858585612e2b565b50505050565b610d1c61299e565b6001600160a01b0316336001600160a01b031614610d4c5760405162461bcd60e51b815260040161075c906140ba565b60005b87811015610e0a57610df88b8b83818110610d6c57610d6c61424b565b905060200201358a8a84818110610d8557610d8561424b565b9050602002016020810190610d9a9190613f2a565b898985818110610dac57610dac61424b565b9050602002016020810190610dc19190613f2a565b888886818110610dd357610dd361424b565b90506020020135878787818110610dec57610dec61424b565b905060200201356129ce565b80610e02816142fe565b915050610d4f565b5050505050505050505050565b6060610e2161299e565b6001600160a01b0316336001600160a01b031614610e515760405162461bcd60e51b815260040161075c906140ba565b60005460ff16610e735760405162461bcd60e51b815260040161075c906141d1565b8242811015610e945760405162461bcd60e51b815260040161075c90614214565b610ef27f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612f0292505050565b9150878260018451610f049190614317565b81518110610f1457610f1461424b565b60200260200101511015610f805760405162461bcd60e51b815260206004820152602d60248201527f5375736869737761705632526f757465723a20494e53554646494349454e545f60448201526c13d55514155517d05353d55395609a1b606482015260840161075c565b6110468a88886000818110610f9757610f9761424b565b9050602002016020810190610fac9190613f2a565b6110257f00000000000000000000000000000000000000000000000000000000000000008b8b6000818110610fe357610fe361424b565b9050602002016020810190610ff89190613f2a565b8c8c600181811061100b5761100b61424b565b90506020020160208101906110209190613f2a565b613078565b856000815181106110385761103861424b565b6020026020010151876129ce565b611085828888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250613151915050565b5098975050505050505050565b61109a61299e565b6001600160a01b0316336001600160a01b0316146110ca5760405162461bcd60e51b815260040161075c906140ba565b6110d785858585856129ce565b604051620e75bb60e21b81526001600160a01b038516906239d6ec9061110590869086908290600401614127565b6020604051808303816000875af1158015611124573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611148919061410e565b505050505050565b600061115a61299e565b6001600160a01b0316336001600160a01b03161461118a5760405162461bcd60e51b815260040161075c906140ba565b6040516360e232a960e01b81526001600160a01b0383811660048301528416906360e232a9906024016020604051808303816000875af11580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190614261565b606061120061299e565b6001600160a01b0316336001600160a01b0316146112305760405162461bcd60e51b815260040161075c906140ba565b60005460ff166112525760405162461bcd60e51b815260040161075c906141d1565b82428110156112735760405162461bcd60e51b815260040161075c90614214565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687876112aa600182614317565b8181106112b9576112b961424b565b90506020020160208101906112ce9190613f2a565b6001600160a01b0316146113245760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705636526f757465723a20494e56414c49445f50415448000000604482015260640161075c565b6113827f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612f0292505050565b91508782600184516113949190614317565b815181106113a4576113a461424b565b6020026020010151101561140e5760405162461bcd60e51b815260206004820152602b60248201527f416e79737761705636526f757465723a20494e53554646494349454e545f4f5560448201526a1514155517d05353d5539560aa1b606482015260840161075c565b6114258a88886000818110610f9757610f9761424b565b61146482888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613151915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d83600185516114a29190614317565b815181106114b2576114b261424b565b60200260200101516040518263ffffffff1660e01b81526004016114d891815260200190565b600060405180830381600087803b1580156114f257600080fd5b505af1158015611506573d6000803e3d6000fd5b5050505061108585836001855161151d9190614317565b8151811061152d5761152d61424b565b6020026020010151612a9c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115805760405162461bcd60e51b815260040161075c9061432e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c91906140f1565b6001600160a01b0316146116325760405162461bcd60e51b815260040161075c90614365565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015611715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117399190614261565b61174557611745613926565b336001600160a01b0384167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798434468660405161178594939291906141a2565b60405180910390a3505050565b600061179c61299e565b6001600160a01b0316336001600160a01b0316146117cc5760405162461bcd60e51b815260040161075c906140ba565b6001600160a01b0382166118225760405162461bcd60e51b815260206004820152601b60248201527f416e79737761705636526f757465723a20616464726573732830290000000000604482015260640161075c565b61182a61299e565b60008054610100600160a81b0319166101006001600160a01b0393841602179055600180546001600160a01b03191691841691909117905561186f6202a300426143af565b60028190556001546000546001600160a01b0391821691610100909104167fcda32bc39904597666dfa9f9c845714756e1ffffad55b52e0d344673a21981214660405190815260200160405180910390a45060015b919050565b60005460ff166118eb5760405162461bcd60e51b815260040161075c906141d1565b814281101561190c5760405162461bcd60e51b815260040161075c90614214565b8585600081811061191f5761191f61424b565b90506020020160208101906119349190613f2a565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af1158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190614261565b506001600160a01b038416337f278277e0209c347189add7bd92411973b5f6b8644f7ac62ea1be984ce993f8f488888c8c46610ca6565b60005460ff16611a005760405162461bcd60e51b815260040161075c906141d1565b8142811015611a215760405162461bcd60e51b815260040161075c90614214565b611ae83387876000818110611a3857611a3861424b565b9050602002016020810190611a4d9190613f2a565b8a89896000818110611a6157611a6161424b565b9050602002016020810190611a769190613f2a565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad791906140f1565b6001600160a01b0316929190612b6d565b6001600160a01b038416337f278277e0209c347189add7bd92411973b5f6b8644f7ac62ea1be984ce993f8f488888c8c46610ca6565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b665760405162461bcd60e51b815260040161075c9061432e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf291906140f1565b6001600160a01b031614611c185760405162461bcd60e51b815260040161075c90614365565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c7357600080fd5b505af1158015611c87573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015611cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1f9190614261565b611d2b57611d2b613926565b604051630bebbf4d60e41b81523460048201526001600160a01b03838116602483015284169063bebbf4d0906044016020604051808303816000875af1158015611d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9d919061410e565b50349392505050565b611dae61299e565b6001600160a01b0316336001600160a01b031614611dde5760405162461bcd60e51b815260040161075c906140ba565b611deb85858585856129ce565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e3a5760405162461bcd60e51b815260040161075c9061432e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec691906140f1565b6001600160a01b031614611eec5760405162461bcd60e51b815260040161075c90614365565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f77919061410e565b604051620e75bb60e21b81529091506001600160a01b038616906239d6ec90611fa890339088903090600401614127565b6020604051808303816000875af1158015611fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611feb919061410e565b506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612053573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612077919061410e565b905061208385836143af565b811461209157612091613926565b604051632e1a7d4d60e01b8152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156120f357600080fd5b505af1158015612107573d6000803e3d6000fd5b505050506121158486612a9c565b5092949350505050565b6000610b42848484613353565b61213461299e565b6001600160a01b0316336001600160a01b0316146121645760405162461bcd60e51b815260040161075c906140ba565b60405163cfbd488560e01b81526001600160a01b03828116600483015283169063cfbd4885906024015b600060405180830381600087803b1580156121a857600080fd5b505af1158015611148573d6000803e3d6000fd5b6121c461299e565b6001600160a01b0316336001600160a01b0316146121f45760405162461bcd60e51b815260040161075c906140ba565b60006121fe61299e565b6040516340c10f1960e01b81526001600160a01b03808316600483015260248201859052919250908416906340c10f19906044016020604051808303816000875af1158015612251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122759190614261565b50604051620e75bb60e21b81526001600160a01b038416906239d6ec906122a490849086908290600401614127565b6020604051808303816000875af11580156122c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e919061410e565b6122ef61299e565b6001600160a01b0316336001600160a01b03161461231f5760405162461bcd60e51b815260040161075c906140ba565b604051637e51dad560e11b81526001600160a01b03828116600483015283169063fca3b5aa9060240161218e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123935760405162461bcd60e51b815260040161075c9061432e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241f91906140f1565b6001600160a01b0316146124455760405162461bcd60e51b815260040161075c90614365565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156124a057600080fd5b505af11580156124b4573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015612528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254c9190614261565b61255857612558613926565b6001600160a01b0380831690339085167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a3446604080519283526020830191909152810186905260600160405180910390a4505050565b6000610b4284848461341c565b604051632770a7eb60e21b8152336004820152602481018390526001600160a01b03851690639dc29fac906044016020604051808303816000875af1158015612609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262d9190614261565b50336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798585468660405161266e94939291906141a2565b60405180910390a350505050565b6060610cf87f00000000000000000000000000000000000000000000000000000000000000008484612f02565b60005460ff166126cb5760405162461bcd60e51b815260040161075c906141d1565b81428110156126ec5760405162461bcd60e51b815260040161075c90614214565b6127033387876000818110611a3857611a3861424b565b6001600160a01b038416337ffea6abdf4fd32f20966dff7619354cd82cd43dc78a3bee479f04c74dbfc585b388888c8c46610ca6565b61274161299e565b6001600160a01b0316336001600160a01b0316146127715760405162461bcd60e51b815260040161075c906140ba565b806001600160a01b0316630d707df86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ac57600080fd5b505af1158015611deb573d6000803e3d6000fd5b50565b60005b8781101561286957612857338a8a848181106127e4576127e461424b565b90506020020160208101906127f99190613f2a565b89898581811061280b5761280b61424b565b90506020020160208101906128209190613f2a565b8888868181106128325761283261424b565b9050602002013587878781811061284b5761284b61424b565b90506020020135612e2b565b80612861816142fe565b9150506127c6565b505050505050505050565b6000846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d891906140f1565b90506001600160a01b0381166129305760405162461bcd60e51b815260206004820152601e60248201527f416e79737761705636526f757465723a206e6f20756e6465726c79696e670000604482015260640161075c565b6129456001600160a01b038216338786612b6d565b604080518481524660208201529081018390526001600160a01b038581169133918816907f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a906060015b60405180910390a45050505050565b600060025442106129b957506001546001600160a01b031690565b5060005461010090046001600160a01b031690565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528516906340c10f19906044016020604051808303816000875af1158015612a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a419190614261565b50826001600160a01b0316846001600160a01b0316867faac9ce45fe3adf5143598c4f18a369591a20a3384aedaf1b525d29127e1fcd558585612a814690565b6040805193845260208401929092529082015260600161298f565b604080516000808252602082019092526001600160a01b038416908390604051612ac691906143c7565b60006040518083038185875af1925050503d8060008114612b03576040519150601f19603f3d011682016040523d82523d6000602084013e612b08565b606091505b5050905080612b685760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201526511905253115160d21b606482015260840161075c565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610d0e9085906134ac565b6000808411612c1c5760405162461bcd60e51b815260206004820152602d60248201526000805160206144f483398151915260448201526c17d25394155517d05353d55395609a1b606482015260840161075c565b600083118015612c2c5750600082115b612c485760405162461bcd60e51b815260040161075c906143e3565b6000612c56856103e5613633565b90506000612c648285613633565b90506000612c7e83612c78886103e8613633565b90613697565b9050612c8a8183614431565b979650505050505050565b6060600282511015612ce95760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161075c565b815167ffffffffffffffff811115612d0357612d036139a3565b604051908082528060200260200182016040528015612d2c578160200160208202803683370190505b509050828160018351612d3f9190614317565b81518110612d4f57612d4f61424b565b602002602001018181525050600060018351612d6b9190614317565b90505b8015612e2357600080612dbe8786612d87600187614317565b81518110612d9757612d9761424b565b6020026020010151878681518110612db157612db161424b565b60200260200101516136e1565b91509150612de6848481518110612dd757612dd761424b565b60200260200101518383613353565b84612df2600186614317565b81518110612e0257612e0261424b565b60200260200101818152505050508080612e1b90614453565b915050612d6e565b509392505050565b604051632770a7eb60e21b81526001600160a01b03868116600483015260248201849052851690639dc29fac906044016020604051808303816000875af1158015612e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9e9190614261565b50826001600160a01b0316856001600160a01b0316856001600160a01b03167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a85612ee64690565b604080519283526020830191909152810186905260600161298f565b6060600282511015612f565760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161075c565b815167ffffffffffffffff811115612f7057612f706139a3565b604051908082528060200260200182016040528015612f99578160200160208202803683370190505b5090508281600081518110612fb057612fb061424b565b60200260200101818152505060005b60018351612fcd9190614317565b811015612e235760008061301387868581518110612fed57612fed61424b565b60200260200101518786600161300391906143af565b81518110612db157612db161424b565b9150915061303b84848151811061302c5761302c61424b565b60200260200101518383612bc7565b846130478560016143af565b815181106130575761305761424b565b60200260200101818152505050508080613070906142fe565b915050612fbf565b600080600061308785856137ab565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b166034820152919350915086906048016040516020818303038152906040528051906020012060405160200161312f9291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527fe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b60005b600183516131629190614317565b811015610d0e5760008084838151811061317e5761317e61424b565b60200260200101518584600161319491906143af565b815181106131a4576131a461424b565b60200260200101519150915060006131bc83836137ab565b5090506000876131cd8660016143af565b815181106131dd576131dd61424b565b60200260200101519050600080836001600160a01b0316866001600160a01b03161461320b5782600061320f565b6000835b91509150600060028a516132239190614317565b881061322f578861327d565b61327d7f0000000000000000000000000000000000000000000000000000000000000000878c6132608c60026143af565b815181106132705761327061424b565b6020026020010151613078565b90506132aa7f00000000000000000000000000000000000000000000000000000000000000008888613078565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156132e7576020820181803683370190505b506040518563ffffffff1660e01b8152600401613307949392919061446a565b600060405180830381600087803b15801561332157600080fd5b505af1158015613335573d6000803e3d6000fd5b5050505050505050505050808061334b906142fe565b915050613154565b60008084116133a95760405162461bcd60e51b815260206004820152602e60248201526000805160206144f483398151915260448201526d17d3d55514155517d05353d5539560921b606482015260840161075c565b6000831180156133b95750600082115b6133d55760405162461bcd60e51b815260040161075c906143e3565b60006133ed6103e86133e78688613633565b90613633565b905060006134016103e56133e786896138a4565b90506134126001612c788385614431565b9695505050505050565b600080841161346b5760405162461bcd60e51b815260206004820152602760248201526000805160206144f483398151915260448201526617d05353d5539560ca1b606482015260840161075c565b60008311801561347b5750600082115b6134975760405162461bcd60e51b815260040161075c906143e3565b826134a28584613633565b610b429190614431565b6134be826001600160a01b03166138ef565b61350a5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161075c565b600080836001600160a01b03168360405161352591906143c7565b6000604051808303816000865af19150503d8060008114613562576040519150601f19603f3d011682016040523d82523d6000602084013e613567565b606091505b5091509150816135b95760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161075c565b805115610d0e57808060200190518101906135d49190614261565b610d0e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161075c565b6000811580613654575050808202828282816136515761365161441b565b04145b610cfb5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161075c565b80820182811015610cfb5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161075c565b60008060006136f085856137ab565b509050600080613701888888613078565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561373e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376291906144ae565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b03161461379957808261379c565b81815b90999098509650505050505050565b600080826001600160a01b0316846001600160a01b03160361381f5760405162461bcd60e51b815260206004820152602760248201527f53757368697377617056324c6962726172793a204944454e544943414c5f41446044820152664452455353455360c81b606482015260840161075c565b826001600160a01b0316846001600160a01b03161061383f578284613842565b83835b90925090506001600160a01b03821661389d5760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a205a45524f5f41444452455353604482015260640161075c565b9250929050565b80820382811115610cfb5760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161075c565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610b425750141592915050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03811681146127c057600080fd5b600080600080600060a0868803121561396957600080fd5b85359450602086013561397b8161393c565b9350604086013561398b8161393c565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139e2576139e26139a3565b604052919050565b600082601f8301126139fb57600080fd5b813567ffffffffffffffff811115613a1557613a156139a3565b613a28601f8201601f19166020016139b9565b818152846020838601011115613a3d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215613a7057600080fd5b8435613a7b8161393c565b9350602085013567ffffffffffffffff811115613a9757600080fd5b613aa3878288016139ea565b949794965050505060408301359260600135919050565b600080600060608486031215613acf57600080fd5b505081359360208301359350604090920135919050565b80151581146127c057600080fd5b600060208284031215613b0657600080fd5b8135613b1181613ae6565b9392505050565b60008083601f840112613b2a57600080fd5b50813567ffffffffffffffff811115613b4257600080fd5b6020830191508360208260051b850101111561389d57600080fd5b600080600080600080600060c0888a031215613b7857600080fd5b8735965060208801359550604088013567ffffffffffffffff811115613b9d57600080fd5b613ba98a828b01613b18565b9096509450506060880135613bbd8161393c565b969995985093969295946080840135945060a09093013592915050565b60008060408385031215613bed57600080fd5b8235915060208084013567ffffffffffffffff80821115613c0d57600080fd5b818601915086601f830112613c2157600080fd5b813581811115613c3357613c336139a3565b8060051b9150613c448483016139b9565b8181529183018401918481019089841115613c5e57600080fd5b938501935b83851015613c885784359250613c788361393c565b8282529385019390850190613c63565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613cd057835183529284019291840191600101613cb4565b50909695505050505050565b60008060008060808587031215613cf257600080fd5b8435613cfd8161393c565b93506020850135613d0d8161393c565b93969395505050506040820135916060013590565b60008060008060008060008060008060a08b8d031215613d4157600080fd5b8a3567ffffffffffffffff80821115613d5957600080fd5b613d658e838f01613b18565b909c509a5060208d0135915080821115613d7e57600080fd5b613d8a8e838f01613b18565b909a50985060408d0135915080821115613da357600080fd5b613daf8e838f01613b18565b909850965060608d0135915080821115613dc857600080fd5b613dd48e838f01613b18565b909650945060808d0135915080821115613ded57600080fd5b50613dfa8d828e01613b18565b915080935050809150509295989b9194979a5092959850565b60008060008060008060008060e0898b031215613e2f57600080fd5b883597506020890135965060408901359550606089013567ffffffffffffffff811115613e5b57600080fd5b613e678b828c01613b18565b9096509450506080890135613e7b8161393c565b979a969950949793969295929450505060a08201359160c0013590565b60008060408385031215613eab57600080fd5b8235613eb68161393c565b91506020830135613ec68161393c565b809150509250929050565b600080600060608486031215613ee657600080fd5b8335613ef18161393c565b9250602084013567ffffffffffffffff811115613f0d57600080fd5b613f19868287016139ea565b925050604084013590509250925092565b600060208284031215613f3c57600080fd5b8135613b118161393c565b600080600060608486031215613f5c57600080fd5b8335613f678161393c565b9250602084013591506040840135613f7e8161393c565b809150509250925092565b60008060408385031215613f9c57600080fd5b8235613fa78161393c565b946020939093013593505050565b600080600060608486031215613fca57600080fd5b8335613fd58161393c565b92506020840135613fe58161393c565b929592945050506040919091013590565b6000806000806000806000806080898b03121561401257600080fd5b883567ffffffffffffffff8082111561402a57600080fd5b6140368c838d01613b18565b909a50985060208b013591508082111561404f57600080fd5b61405b8c838d01613b18565b909850965060408b013591508082111561407457600080fd5b6140808c838d01613b18565b909650945060608b013591508082111561409957600080fd5b506140a68b828c01613b18565b999c989b5096995094979396929594505050565b6020808252601a908201527f416e79737761705636526f757465723a20464f5242494444454e000000000000604082015260600190565b60006020828403121561410357600080fd5b8151613b118161393c565b60006020828403121561412057600080fd5b5051919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b60005b8381101561416557818101518382015260200161414d565b83811115610d0e5750506000910152565b6000815180845261418e81602086016020860161414a565b601f01601f19169290920160200192915050565b6080815260006141b56080830187614176565b6020830195909552506040810192909252606090910152919050565b60208082526023908201527f416e79737761705636526f757465723a205377617054726164652064697361626040820152621b195960ea1b606082015260800190565b60208082526018908201527f416e79737761705636526f757465723a20455850495245440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561427357600080fd5b8151613b1181613ae6565b60a0808252810186905260008760c08301825b898110156142c15782356142a48161393c565b6001600160a01b0316825260209283019290910190600101614291565b50602084019790975250506040810193909352606083019190915260809091015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201614310576143106142e8565b5060010190565b600082821015614329576143296142e8565b500390565b6020808252601d908201527f416e79737761705636526f757465723a207a65726f20774e4154495645000000604082015260600190565b6020808252602a908201527f416e79737761705636526f757465723a20756e6465726c79696e67206973206e6040820152696f7420774e415449564560b01b606082015260800190565b600082198211156143c2576143c26142e8565b500190565b600082516143d981846020870161414a565b9190910192915050565b6020808252602a908201526000805160206144f48339815191526040820152695f4c495155494449545960b01b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261444e57634e487b7160e01b600052601260045260246000fd5b500490565b600081614462576144626142e8565b506000190190565b84815283602082015260018060a01b03831660408201526080606082015260006134126080830184614176565b80516001600160701b03811681146118c457600080fd5b6000806000606084860312156144c357600080fd5b6144cc84614497565b92506144da60208501614497565b9150604084015163ffffffff81168114613f7e57600080fdfe53757368697377617056324c6962726172793a20494e53554646494349454e54a2646970667358221220bd22f047a06e0a3ce8112660252631ae66000c30c41c62b6138b1f1ad883f29d64736f6c634300080e0033000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c400000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000002a038e100f8b85df21e4d44121bdbfe0c288a869

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

000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c400000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000002a038e100f8b85df21e4d44121bdbfe0c288a869

-----Decoded View---------------
Arg [0] : _factory (address): 0xc35dadb65012ec5796536bd9864ed8773abc74c4
Arg [1] : _wNATIVE (address): 0x82af49447d8a07e3bd95bd0d56f35241523fbab1
Arg [2] : _mpc (address): 0x2a038e100f8b85df21e4d44121bdbfe0c288a869

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c4
Arg [1] : 00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1
Arg [2] : 0000000000000000000000002a038e100f8b85df21e4d44121bdbfe0c288a869


Deployed ByteCode Sourcemap

9306:16022:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10126:10;-1:-1:-1;;;;;10140:7:0;10126:21;;10119:29;;;;:::i;:::-;9306:16022;;;;;16635:718;;;;;;;;;;-1:-1:-1;16635:718:0;;;;;:::i;:::-;;:::i;14656:407::-;;;;;;;;;;-1:-1:-1;14656:407:0;;;;;:::i;:::-;;:::i;24328:248::-;;;;;;;;;;-1:-1:-1;24328:248:0;;;;;:::i;:::-;;:::i;:::-;;;2895:25:1;;;2883:2;2868:18;24328:248:0;;;;;;;;11578:101;;;;;;;;;;-1:-1:-1;11578:101:0;;;;;:::i;:::-;;:::i;20096:433::-;;;;;;;;;;-1:-1:-1;20096:433:0;;;;;:::i;:::-;;:::i;25086:239::-;;;;;;;;;;-1:-1:-1;25086:239:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12942:157::-;;;;;;;;;;-1:-1:-1;12942:157:0;;;;;:::i;:::-;;:::i;18822:319::-;;;;;;;;;;-1:-1:-1;18822:319:0;;;;;:::i;:::-;;:::i;21260:665::-;;;;;;;;;;-1:-1:-1;21260:665:0;;;;;:::i;:::-;;:::i;9573:27::-;;;;;;;;;;-1:-1:-1;9573:27:0;;;;;;;;;;;9596:14:1;;9589:22;9571:41;;9559:2;9544:18;9573:27:0;9431:187:1;16265:245:0;;;;;;;;;;-1:-1:-1;16265:245:0;;;;;:::i;:::-;;:::i;12048:155::-;;;;;;;;;;-1:-1:-1;12048:155:0;;;;;:::i;:::-;;:::i;23190:903::-;;;;;;;;;;-1:-1:-1;23190:903:0;;;;;:::i;:::-;;:::i;15071:485::-;;;;;;:::i;:::-;;:::i;11687:353::-;;;;;;;;;;-1:-1:-1;11687:353:0;;;;;:::i;:::-;;:::i;22026:433::-;;;;;;;;;;-1:-1:-1;22026:433:0;;;;;:::i;:::-;;:::i;9529:35::-;;;;;;;;;;;;9558:6;9529:35;;22560:485;;;;;;;;;;-1:-1:-1;22560:485:0;;;;;:::i;:::-;;:::i;17361:481::-;;;;;;:::i;:::-;;:::i;15979:173::-;;;;;;;;;;-1:-1:-1;15979:173:0;;;;;:::i;:::-;;:::i;17850:691::-;;;;;;;;;;-1:-1:-1;17850:691:0;;;;;:::i;:::-;;:::i;24584:247::-;;;;;;;;;;-1:-1:-1;24584:247:0;;;;;:::i;:::-;;:::i;12471:136::-;;;;;;;;;;-1:-1:-1;12471:136:0;;;;;:::i;:::-;;:::i;18591:223::-;;;;;;;;;;-1:-1:-1;18591:223:0;;;;;:::i;:::-;;:::i;9451:32::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11743:32:1;;;11725:51;;11713:2;11698:18;9451:32:0;11579:203:1;11489:81:0;;;;;;;;;;-1:-1:-1;11549:13:0;11489:81;;12211:130;;;;;;;;;;-1:-1:-1;12211:130:0;;;;;:::i;:::-;;:::i;13633:479::-;;;;;;:::i;:::-;;:::i;24137:183::-;;;;;;;;;;-1:-1:-1;24137:183:0;;;;;:::i;:::-;;:::i;9412:32::-;;;;;;;;;;;;;;;14414:234;;;;;;;;;;-1:-1:-1;14414:234:0;;;;;:::i;:::-;;:::i;24839:239::-;;;;;;;;;;-1:-1:-1;24839:239:0;;;;;:::i;:::-;;:::i;20630:485::-;;;;;;;;;;-1:-1:-1;20630:485:0;;;;;:::i;:::-;;:::i;12349:114::-;;;;;;;;;;-1:-1:-1;12349:114:0;;;;;:::i;:::-;;:::i;14120:286::-;;;;;;;;;;-1:-1:-1;14120:286:0;;;;;:::i;:::-;;:::i;13224:401::-;;;;;;;;;;-1:-1:-1;13224:401:0;;;;;:::i;:::-;;:::i;11307:174::-;;;;;;;;;;;;;:::i;16635:718::-;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;;;;;;;;;16757:47:::1;16768:3;16773:5;16780:2;16784:6;16792:11;16757:10;:47::i;:::-;16815:24;16857:5;16815:48;;16874:19;16896:9;-1:-1:-1::0;;;;;16896:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16874:44:::0;-1:-1:-1;;;;;;16933:25:0;::::1;::::0;;::::1;::::0;:75:::1;;-1:-1:-1::0;16962:36:0::1;::::0;-1:-1:-1;;;16962:36:0;;-1:-1:-1;;;;;11743:32:1;;;16962:36:0::1;::::0;::::1;11725:51:1::0;17002:6:0;;16962:29;;::::1;::::0;::::1;::::0;11698:18:1;;16962:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;16933:75;16929:417;;;17044:7;-1:-1:-1::0;;;;;17029:22:0::1;:11;-1:-1:-1::0;;;;;17029:22:0::1;::::0;17025:310:::1;;17072:50;::::0;-1:-1:-1;;;17072:50:0;;-1:-1:-1;;;;;17072:23:0;::::1;::::0;::::1;::::0;:50:::1;::::0;17096:2;;17100:6;;17116:4:::1;::::0;17072:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17141:34:0::1;::::0;-1:-1:-1;;;17141:34:0;;::::1;::::0;::::1;2895:25:1::0;;;17150:7:0::1;-1:-1:-1::0;;;;;17141:26:0::1;::::0;::::1;::::0;2868:18:1;;17141:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17194:45;17228:2;17232:6;17194:33;:45::i;:::-;17025:310;;;17280:39;::::0;-1:-1:-1;;;17280:39:0;;-1:-1:-1;;;;;17280:23:0;::::1;::::0;::::1;::::0;:39:::1;::::0;17304:2;;17308:6;;17304:2;;17280:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17025:310;16746:607;;16635:718:::0;;;;;:::o;14656:407::-;14768:19;14805:5;-1:-1:-1;;;;;14790:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14768:56;-1:-1:-1;;;;;;14843:25:0;;14835:68;;;;-1:-1:-1;;;14835:68:0;;15039:2:1;14835:68:0;;;15021:21:1;15078:2;15058:18;;;15051:30;15117:32;15097:18;;;15090:60;15167:18;;14835:68:0;14837:354:1;14835:68:0;14914:63;-1:-1:-1;;;;;14914:36:0;;14951:10;14963:5;14970:6;14914:36;:63::i;:::-;15014:10;-1:-1:-1;;;;;14993:62:0;;;15026:2;15030:6;11549:13;15045:9;14993:62;;;;;;;;;:::i;:::-;;;;;;;;14757:306;14656:407;;;;:::o;24328:248::-;24465:14;24504:64;24536:8;24546:9;24557:10;24504:31;:64::i;:::-;24497:71;24328:248;-1:-1:-1;;;;24328:248:0:o;11578:101::-;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;11647:15:::1;:24:::0;;-1:-1:-1;;11647:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11578:101::o;20096:433::-;9654:15;;;;9646:63;;;;-1:-1:-1;;;9646:63:0;;;;;;;:::i;:::-;20340:8:::1;9799:15;9787:8;:27;;9779:64;;;;-1:-1:-1::0;;;9779:64:0::1;;;;;;;:::i;:::-;20376:4:::2;;20381:1;20376:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20361:50;::::0;-1:-1:-1;;;20361:50:0;;20390:10:::2;20361:50;::::0;::::2;17225:51:1::0;17292:18;;;17285:34;;;-1:-1:-1;;;;;20361:28:0;;;::::2;::::0;::::2;::::0;17198:18:1;;20361:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;20427:94:0;::::2;20464:10;20427:94;20458:4:::0;;20480:8;20490:12;11549:13;20504:5:::2;20511:9;20427:94;;;;;;;;;;;:::i;:::-;;;;;;;;9720:1:::1;20096:433:::0;;;;;;;:::o;25086:239::-;25214:21;25260:57;25292:7;25301:9;25312:4;25260:31;:57::i;:::-;25253:64;;25086:239;;;;;:::o;12942:157::-;13038:53;13050:10;13062:5;13069:2;13073:6;13081:9;13038:11;:53::i;:::-;12942:157;;;;:::o;18822:319::-;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;19006:6:::1;19001:133;19018:17:::0;;::::1;19001:133;;;19057:65;19068:3;;19072:1;19068:6;;;;;;;:::i;:::-;;;;;;;19076;;19083:1;19076:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19087:2;;19090:1;19087:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19094:7;;19102:1;19094:10;;;;;;;:::i;:::-;;;;;;;19106:12;;19119:1;19106:15;;;;;;;:::i;:::-;;;;;;;19057:10;:65::i;:::-;19037:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19001:133;;;;18822:319:::0;;;;;;;;;;:::o;21260:665::-;21554:21;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;9654:15:::1;::::0;::::1;;9646:63;;;;-1:-1:-1::0;;;9646:63:0::1;;;;;;;:::i;:::-;21535:8:::2;9799:15;9787:8;:27;;9779:64;;;;-1:-1:-1::0;;;9779:64:0::2;;;;;;;:::i;:::-;21598:57:::3;21631:7;21640:8;21650:4;;21598:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;21598:32:0::3;::::0;-1:-1:-1;;;21598:57:0:i:3;:::-;21588:67;;21705:12;21674:7;21699:1;21682:7;:14;:18;;;;:::i;:::-;21674:27;;;;;;;;:::i;:::-;;;;;;;:43;;21666:101;;;::::0;-1:-1:-1;;;21666:101:0;;19190:2:1;21666:101:0::3;::::0;::::3;19172:21:1::0;19229:2;19209:18;;;19202:30;19268:34;19248:18;;;19241:62;-1:-1:-1;;;19319:18:1;;;19312:43;19372:19;;21666:101:0::3;18988:409:1::0;21666:101:0::3;21778:104;21789:3;21794:4;;21799:1;21794:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21803:53;21830:7;21839:4;;21844:1;21839:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21848:4;;21853:1;21848:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21803:26;:53::i;:::-;21858:7;21866:1;21858:10;;;;;;;;:::i;:::-;;;;;;;21870:11;21778:10;:104::i;:::-;21893:24;21899:7;21908:4;;21893:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;21914:2:0;;-1:-1:-1;21893:5:0::3;::::0;-1:-1:-1;;21893:24:0:i:3;:::-;9720:1:::2;21260:665:::0;;;;;;;;;;:::o;16265:245::-;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;16393:47:::1;16404:3;16409:5;16416:2;16420:6;16428:11;16393:10;:47::i;:::-;16451:51;::::0;-1:-1:-1;;;16451:51:0;;-1:-1:-1;;;;;16451:35:0;::::1;::::0;::::1;::::0;:51:::1;::::0;16487:2;;16491:6;;16487:2;;16451:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16265:245:::0;;;;;:::o;12048:155::-;12128:4;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;12152:43:::1;::::0;-1:-1:-1;;;12152:43:0;;-1:-1:-1;;;;;11743:32:1;;;12152:43:0::1;::::0;::::1;11725:51:1::0;12152:33:0;::::1;::::0;::::1;::::0;11698:18:1;;12152:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23190:903::-:0;23484:21;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;9654:15:::1;::::0;::::1;;9646:63;;;;-1:-1:-1::0;;;9646:63:0::1;;;;;;;:::i;:::-;23465:8:::2;9799:15;9787:8;:27;;9779:64;;;;-1:-1:-1::0;;;9779:64:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23551:7:0::3;23526:32;:4:::0;;23531:15:::3;23545:1;23526:4:::0;23531:15:::3;:::i;:::-;23526:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23526:32:0::3;;23518:74;;;::::0;-1:-1:-1;;;23518:74:0;;19604:2:1;23518:74:0::3;::::0;::::3;19586:21:1::0;19643:2;19623:18;;;19616:30;19682:31;19662:18;;;19655:59;19731:18;;23518:74:0::3;19402:353:1::0;23518:74:0::3;23613:57;23646:7;23655:8;23665:4;;23613:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;23613:32:0::3;::::0;-1:-1:-1;;;23613:57:0:i:3;:::-;23603:67;;23720:12;23689:7;23714:1;23697:7;:14;:18;;;;:::i;:::-;23689:27;;;;;;;;:::i;:::-;;;;;;;:43;;23681:99;;;::::0;-1:-1:-1;;;23681:99:0;;19962:2:1;23681:99:0::3;::::0;::::3;19944:21:1::0;20001:2;19981:18;;;19974:30;20040:34;20020:18;;;20013:62;-1:-1:-1;;;20091:18:1;;;20084:41;20142:19;;23681:99:0::3;19760:407:1::0;23681:99:0::3;23791:105;23802:3;23807:4;;23812:1;23807:7;;;;;;;:::i;23791:105::-;23907:35;23913:7;23922:4;;23907:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;23936:4:0::3;::::0;-1:-1:-1;23907:5:0::3;::::0;-1:-1:-1;;23907:35:0:i:3;:::-;23962:7;-1:-1:-1::0;;;;;23953:26:0::3;;23980:7;24005:1;23988:7;:14;:18;;;;:::i;:::-;23980:27;;;;;;;;:::i;:::-;;;;;;;23953:55;;;;;;;;;;;;;2895:25:1::0;;2883:2;2868:18;;2749:177;23953:55:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;24019:66;24053:2;24057:7;24082:1;24065:7;:14;:18;;;;:::i;:::-;24057:27;;;;;;;;:::i;:::-;;;;;;;24019:33;:66::i;15071:485::-:0;15182:7;-1:-1:-1;;;;;15182:21:0;15174:63;;;;-1:-1:-1;;;15174:63:0;;;;;;;:::i;:::-;15294:7;-1:-1:-1;;;;;15256:45:0;15271:5;-1:-1:-1;;;;;15256:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15256:45:0;;15248:100;;;;-1:-1:-1;;;15248:100:0;;;;;;;:::i;:::-;15368:7;-1:-1:-1;;;;;15359:25:0;;15392:9;15359:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15422:44:0;;-1:-1:-1;;;15422:44:0;;-1:-1:-1;;;;;17243:32:1;;;15422:44:0;;;17225:51:1;15456:9:0;17292:18:1;;;17285:34;15431:7:0;15422:26;;-1:-1:-1;15422:26:0;;-1:-1:-1;17198:18:1;;;-1:-1:-1;15422:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15415:52;;;;:::i;:::-;15504:10;-1:-1:-1;;;;;15483:65:0;;;15516:2;15520:9;11549:13;15538:9;15483:65;;;;;;;;;:::i;:::-;;;;;;;;15071:485;;;:::o;11687:353::-;11748:4;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11773:20:0;::::1;11765:60;;;::::0;-1:-1:-1;;;11765:60:0;;21143:2:1;11765:60:0::1;::::0;::::1;21125:21:1::0;21182:2;21162:18;;;21155:30;21221:29;21201:18;;;21194:57;21268:18;;11765:60:0::1;20941:351:1::0;11765:60:0::1;11846:5;:3;:5::i;:::-;11836:7;:15:::0;;-1:-1:-1;;;;;;11836:15:0::1;;-1:-1:-1::0;;;;;11836:15:0;;::::1;;;::::0;;-1:-1:-1;11862:16:0;;-1:-1:-1;;;;;;11862:16:0::1;::::0;;::::1;::::0;;;::::1;::::0;;11912:23:::1;9558:6;11912:15;:23;:::i;:::-;11889:20;:46:::0;;;11973:7:::1;::::0;::::1;11964::::0;-1:-1:-1;;;;;11973:7:0;;::::1;::::0;::::1;11964::::0;;::::1;;11951:59;11549:13:::0;11951:59:::1;::::0;2895:25:1;;;2883:2;2868:18;11951:59:0::1;;;;;;;-1:-1:-1::0;12028:4:0::1;11290:1;11687:353:::0;;;:::o;22026:433::-;9654:15;;;;9646:63;;;;-1:-1:-1;;;9646:63:0;;;;;;;:::i;:::-;22270:8:::1;9799:15;9787:8;:27;;9779:64;;;;-1:-1:-1::0;;;9779:64:0::1;;;;;;;:::i;:::-;22306:4:::2;;22311:1;22306:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22291:50;::::0;-1:-1:-1;;;22291:50:0;;22320:10:::2;22291:50;::::0;::::2;17225:51:1::0;17292:18;;;17285:34;;;-1:-1:-1;;;;;22291:28:0;;;::::2;::::0;::::2;::::0;17198:18:1;;22291:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;22357:94:0;::::2;22394:10;22357:94;22388:4:::0;;22410:8;22420:12;11549:13;22434:5:::2;11489:81:::0;22560:485;9654:15;;;;9646:63;;;;-1:-1:-1;;;9646:63:0;;;;;;;:::i;:::-;22814:8:::1;9799:15;9787:8;:27;;9779:64;;;;-1:-1:-1::0;;;9779:64:0::1;;;;;;;:::i;:::-;22835:92:::2;22897:10;22909:4;;22914:1;22909:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22918:8;22857:4;;22862:1;22857:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22842:34:0::2;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22835:61:0::2;::::0;:92;;:61:::2;:92::i;:::-;-1:-1:-1::0;;;;;22943:94:0;::::2;22980:10;22943:94;22974:4:::0;;22996:8;23006:12;11549:13;23020:5:::2;11489:81:::0;17361:481;17437:4;17462:7;-1:-1:-1;;;;;17462:21:0;17454:63;;;;-1:-1:-1;;;17454:63:0;;;;;;;:::i;:::-;17574:7;-1:-1:-1;;;;;17536:45:0;17551:5;-1:-1:-1;;;;;17536:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17536:45:0;;17528:100;;;;-1:-1:-1;;;17528:100:0;;;;;;;:::i;:::-;17648:7;-1:-1:-1;;;;;17639:25:0;;17672:9;17639:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17702:44:0;;-1:-1:-1;;;17702:44:0;;-1:-1:-1;;;;;17243:32:1;;;17702:44:0;;;17225:51:1;17736:9:0;17292:18:1;;;17285:34;17711:7:0;17702:26;;-1:-1:-1;17702:26:0;;-1:-1:-1;17198:18:1;;;-1:-1:-1;17702:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17695:52;;;;:::i;:::-;17758:49;;-1:-1:-1;;;17758:49:0;;17793:9;17758:49;;;21604:25:1;-1:-1:-1;;;;;21665:32:1;;;21645:18;;;21638:60;17758:34:0;;;;;21577:18:1;;17758:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17825:9:0;;17361:481;-1:-1:-1;;;17361:481:0:o;15979:173::-;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;16097:47:::1;16108:3;16113:5;16120:2;16124:6;16132:11;16097:10;:47::i;:::-;15979:173:::0;;;;;:::o;17850:691::-;17932:4;17957:7;-1:-1:-1;;;;;17957:21:0;17949:63;;;;-1:-1:-1;;;17949:63:0;;;;;;;:::i;:::-;18069:7;-1:-1:-1;;;;;18031:45:0;18046:5;-1:-1:-1;;;;;18031:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18031:45:0;;18023:100;;;;-1:-1:-1;;;18023:100:0;;;;;;;:::i;:::-;18158:40;;-1:-1:-1;;;18158:40:0;;18192:4;18158:40;;;11725:51:1;18136:19:0;;18165:7;-1:-1:-1;;;;;18158:25:0;;;;11698:18:1;;18158:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18209:70;;-1:-1:-1;;;18209:70:0;;18136:62;;-1:-1:-1;;;;;;18209:35:0;;;;;:70;;18245:10;;18257:6;;18273:4;;18209:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18312:40:0;;-1:-1:-1;;;18312:40:0;;18346:4;18312:40;;;11725:51:1;18290:19:0;;18319:7;-1:-1:-1;;;;;18312:25:0;;;;11698:18:1;;18312:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18290:62;-1:-1:-1;18385:20:0;18399:6;18385:11;:20;:::i;:::-;18370:11;:35;18363:43;;;;:::i;:::-;18419:34;;-1:-1:-1;;;18419:34:0;;;;;2895:25:1;;;18428:7:0;-1:-1:-1;;;;;18419:26:0;;;;2868:18:1;;18419:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18464:45;18498:2;18502:6;18464:33;:45::i;:::-;-1:-1:-1;18527:6:0;;17850:691;-1:-1:-1;;;;17850:691:0:o;24584:247::-;24721:13;24759:64;24790:9;24801;24812:10;24759:30;:64::i;12471:136::-;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;12558:41:::1;::::0;-1:-1:-1;;;12558:41:0;;-1:-1:-1;;;;;11743:32:1;;;12558:41:0::1;::::0;::::1;11725:51:1::0;12558:34:0;::::1;::::0;::::1;::::0;11698:18:1;;12558:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;18591:223:::0;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;18669:12:::1;18684:5;:3;:5::i;:::-;18700:40;::::0;-1:-1:-1;;;18700:40:0;;-1:-1:-1;;;;;17243:32:1;;;18700:40:0::1;::::0;::::1;17225:51:1::0;17292:18;;;17285:34;;;18669:20:0;;-1:-1:-1;18700:26:0;;::::1;::::0;::::1;::::0;17198:18:1;;18700:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18751:55:0::1;::::0;-1:-1:-1;;;18751:55:0;;-1:-1:-1;;;;;18751:35:0;::::1;::::0;::::1;::::0;:55:::1;::::0;18787:4;;18793:6;;18787:4;;18751:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12211:130::-:0;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;12295:38:::1;::::0;-1:-1:-1;;;12295:38:0;;-1:-1:-1;;;;;11743:32:1;;;12295:38:0::1;::::0;::::1;11725:51:1::0;12295:31:0;::::1;::::0;::::1;::::0;11698:18:1;;12295:38:0::1;11579:203:1::0;13633:479:0;13738:7;-1:-1:-1;;;;;13738:21:0;13730:63;;;;-1:-1:-1;;;13730:63:0;;;;;;;:::i;:::-;13850:7;-1:-1:-1;;;;;13812:45:0;13827:5;-1:-1:-1;;;;;13812:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13812:45:0;;13804:100;;;;-1:-1:-1;;;13804:100:0;;;;;;;:::i;:::-;13924:7;-1:-1:-1;;;;;13915:25:0;;13948:9;13915:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13978:44:0;;-1:-1:-1;;;13978:44:0;;-1:-1:-1;;;;;17243:32:1;;;13978:44:0;;;17225:51:1;14012:9:0;17292:18:1;;;17285:34;13987:7:0;13978:26;;-1:-1:-1;13978:26:0;;-1:-1:-1;17198:18:1;;;-1:-1:-1;13978:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13971:52;;;;:::i;:::-;-1:-1:-1;;;;;14039:65:0;;;;14060:10;;14039:65;;;14076:9;11549:13;14039:65;;;21911:25:1;;;21967:2;21952:18;;21945:34;;;;21995:18;;21988:34;;;21899:2;21884:18;14039:65:0;;;;;;;13633:479;;;:::o;24137:183::-;24227:12;24259:53;24284:7;24293:8;24303;24259:24;:53::i;14414:234::-;14516:46;;-1:-1:-1;;;14516:46:0;;14543:10;14516:46;;;17225:51:1;17292:18;;;17285:34;;;-1:-1:-1;;;;;14516:26:0;;;;;17198:18:1;;14516:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14599:10:0;-1:-1:-1;;;;;14578:62:0;;;14611:2;14615:6;11549:13;14630:9;14578:62;;;;;;;;;:::i;:::-;;;;;;;;14414:234;;;;:::o;24839:239::-;24967:21;25013:57;25046:7;25055:8;25065:4;25013:32;:57::i;20630:485::-;9654:15;;;;9646:63;;;;-1:-1:-1;;;9646:63:0;;;;;;;:::i;:::-;20884:8:::1;9799:15;9787:8;:27;;9779:64;;;;-1:-1:-1::0;;;9779:64:0::1;;;;;;;:::i;:::-;20905:92:::2;20967:10;20979:4;;20984:1;20979:7;;;;;;;:::i;20905:92::-;-1:-1:-1::0;;;;;21013:94:0;::::2;21050:10;21013:94;21044:4:::0;;21066:8;21076:12;11549:13;21090:5:::2;11489:81:::0;12349:114;11243:5;:3;:5::i;:::-;-1:-1:-1;;;;;11229:19:0;:10;-1:-1:-1;;;;;11229:19:0;;11221:58;;;;-1:-1:-1;;;11221:58:0;;;;;;;:::i;:::-;12435:5:::1;-1:-1:-1::0;;;;;12420:33:0::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;11290:1;12349:114:::0;:::o;14120:286::-;14268:6;14263:136;14280:17;;;14263:136;;;14319:68;14331:10;14343:6;;14350:1;14343:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14354:2;;14357:1;14354:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14361:7;;14369:1;14361:10;;;;;;;:::i;:::-;;;;;;;14373;;14384:1;14373:13;;;;;;;:::i;:::-;;;;;;;14319:11;:68::i;:::-;14299:3;;;;:::i;:::-;;;;14263:136;;;;14120:286;;;;;;;;:::o;13224:401::-;13330:19;13367:5;-1:-1:-1;;;;;13352:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13330:56;-1:-1:-1;;;;;;13405:25:0;;13397:68;;;;-1:-1:-1;;;13397:68:0;;15039:2:1;13397:68:0;;;15021:21:1;15078:2;15058:18;;;15051:30;15117:32;15097:18;;;15090:60;15167:18;;13397:68:0;14837:354:1;13397:68:0;13476:63;-1:-1:-1;;;;;13476:36:0;;13513:10;13525:5;13532:6;13476:36;:63::i;:::-;13555:62;;;21911:25:1;;;11549:13:0;21967:2:1;21952:18;;21945:34;21995:18;;;21988:34;;;-1:-1:-1;;;;;13555:62:0;;;;13576:10;;13555:62;;;;;21899:2:1;21884:18;13555:62:0;;;;;;;;13319:306;13224:401;;;;:::o;11307:174::-;11343:7;11386:20;;11367:15;:39;11363:86;;-1:-1:-1;11430:7:0;;-1:-1:-1;;;;;11430:7:0;;11307:174::o;11363:86::-;-1:-1:-1;11466:7:0;;;;;-1:-1:-1;;;;;11466:7:0;;11307:174::o;15636:229::-;15747:38;;-1:-1:-1;;;15747:38:0;;-1:-1:-1;;;;;17243:32:1;;;15747:38:0;;;17225:51:1;17292:18;;;17285:34;;;15747:26:0;;;;;17198:18:1;;15747:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15826:2;-1:-1:-1;;;;;15801:56:0;15819:5;-1:-1:-1;;;;;15801:56:0;15814:3;15801:56;15830:6;15838:11;15851:5;11549:13;;11489:81;15851:5;15801:56;;;21911:25:1;;;21967:2;21952:18;;21945:34;;;;21995:18;;;21988:34;21899:2;21884:18;15801:56:0;21709:319:1;5594:201:0;5705:12;;;5667;5705;;;;;;;;;-1:-1:-1;;;;;5684:7:0;;;5698:5;;5684:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5666:52;;;5737:7;5729:58;;;;-1:-1:-1;;;5729:58:0;;22514:2:1;5729:58:0;;;22496:21:1;22553:2;22533:18;;;22526:30;22592:34;22572:18;;;22565:62;-1:-1:-1;;;22643:18:1;;;22636:36;22689:19;;5729:58:0;22312:402:1;5729:58:0;5655:140;5594:201;;:::o;8140:::-;8264:68;;;-1:-1:-1;;;;;22977:15:1;;;8264:68:0;;;22959:34:1;23029:15;;23009:18;;;23002:43;23061:18;;;;23054:34;;;8264:68:0;;;;;;;;;;22894:18:1;;;;8264:68:0;;;;;;;;-1:-1:-1;;;;;8264:68:0;-1:-1:-1;;;8264:68:0;;;8238:95;;8257:5;;8238:18;:95::i;3114:521::-;3207:14;3253:1;3242:8;:12;3234:70;;;;-1:-1:-1;;;3234:70:0;;23301:2:1;3234:70:0;;;23283:21:1;23340:2;23320:18;;;23313:30;-1:-1:-1;;;;;;;;;;;23359:18:1;;;23352:62;-1:-1:-1;;;23430:18:1;;;23423:43;23483:19;;3234:70:0;23099:409:1;3234:70:0;3335:1;3323:9;:13;:31;;;;;3353:1;3340:10;:14;3323:31;3315:86;;;;-1:-1:-1;;;3315:86:0;;;;;;;:::i;:::-;3412:20;3435:17;:8;3448:3;3435:12;:17::i;:::-;3412:40;-1:-1:-1;3463:14:0;3480:31;3412:40;3500:10;3480:19;:31::i;:::-;3463:48;-1:-1:-1;3522:16:0;3541:40;3565:15;3541:19;:9;3555:4;3541:13;:19::i;:::-;:23;;:40::i;:::-;3522:59;-1:-1:-1;3604:23:0;3522:59;3604:9;:23;:::i;:::-;3592:35;3114:521;-1:-1:-1;;;;;;;3114:521:0:o;4908:534::-;5009:21;5066:1;5051:4;:11;:16;;5043:61;;;;-1:-1:-1;;;5043:61:0;;24480:2:1;5043:61:0;;;24462:21:1;;;24499:18;;;24492:30;24558:34;24538:18;;;24531:62;24610:18;;5043:61:0;24278:356:1;5043:61:0;5136:4;:11;5125:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5125:23:0;;5115:33;;5189:9;5159:7;5184:1;5167:7;:14;:18;;;;:::i;:::-;5159:27;;;;;;;;:::i;:::-;;;;;;:39;;;;;5214:6;5237:1;5223:4;:11;:15;;;;:::i;:::-;5214:24;;5209:226;5240:5;;5209:226;;5268:14;;5303:42;5315:7;5324:4;5329:5;5333:1;5329;:5;:::i;:::-;5324:11;;;;;;;;:::i;:::-;;;;;;;5337:4;5342:1;5337:7;;;;;;;;:::i;:::-;;;;;;;5303:11;:42::i;:::-;5267:78;;;;5377:46;5389:7;5397:1;5389:10;;;;;;;;:::i;:::-;;;;;;;5401:9;5412:10;5377:11;:46::i;:::-;5360:7;5368:5;5372:1;5368;:5;:::i;:::-;5360:14;;;;;;;;:::i;:::-;;;;;;:63;;;;;5252:183;;5247:3;;;;;:::i;:::-;;;;5209:226;;;;4908:534;;;;;:::o;12615:231::-;12726:40;;-1:-1:-1;;;12726:40:0;;-1:-1:-1;;;;;17243:32:1;;;12726:40:0;;;17225:51:1;17292:18;;;17285:34;;;12726:26:0;;;;;17198:18:1;;12726:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12809:2;-1:-1:-1;;;;;12782:56:0;12803:4;-1:-1:-1;;;;;12782:56:0;12796:5;-1:-1:-1;;;;;12782:56:0;;12813:6;12821:5;11549:13;;11489:81;12821:5;12782:56;;;21911:25:1;;;21967:2;21952:18;;21945:34;;;;21995:18;;21988:34;;;21899:2;21884:18;12782:56:0;21709:319:1;4314:513:0;4415:21;4472:1;4457:4;:11;:16;;4449:61;;;;-1:-1:-1;;;4449:61:0;;24480:2:1;4449:61:0;;;24462:21:1;;;24499:18;;;24492:30;24558:34;24538:18;;;24531:62;24610:18;;4449:61:0;24278:356:1;4449:61:0;4542:4;:11;4531:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4531:23:0;;4521:33;;4578:8;4565:7;4573:1;4565:10;;;;;;;;:::i;:::-;;;;;;:21;;;;;4602:6;4597:223;4628:1;4614:4;:11;:15;;;;:::i;:::-;4610:1;:19;4597:223;;;4652:14;4668:15;4687:42;4699:7;4708:4;4713:1;4708:7;;;;;;;;:::i;:::-;;;;;;;4717:4;4722:1;4726;4722:5;;;;:::i;:::-;4717:11;;;;;;;;:::i;4687:42::-;4651:78;;;;4761:47;4774:7;4782:1;4774:10;;;;;;;;:::i;:::-;;;;;;;4786:9;4797:10;4761:12;:47::i;:::-;4744:7;4752:5;:1;4756;4752:5;:::i;:::-;4744:14;;;;;;;;:::i;:::-;;;;;;:64;;;;;4636:184;;4631:3;;;;;:::i;:::-;;;;4597:223;;1613:490;1702:12;1728:14;1744;1762:26;1773:6;1781;1762:10;:26::i;:::-;1937:32;;-1:-1:-1;;25007:2:1;25003:15;;;24999:24;;1937:32:0;;;24987:37:1;25058:15;;;25054:24;25040:12;;;25033:46;1727:61:0;;-1:-1:-1;1727:61:0;-1:-1:-1;1901:7:0;;25095:12:1;;1937:32:0;;;;;;;;;;;;1927:43;;;;;;1840:251;;;;;;;;-1:-1:-1;;;;;;25477:26:1;;25540:2;25536:15;;;;-1:-1:-1;;25532:53:1;25528:1;25519:11;;25512:74;25611:2;25602:12;;25595:28;25653:66;25648:2;25639:12;;25632:88;25745:2;25736:12;;25118:636;1840:251:0;;;;-1:-1:-1;;1840:251:0;;;;;;;;;1830:262;;1840:251;1830:262;;;;;1613:490;-1:-1:-1;;;;;;1613:490:0:o;19252:743::-;19359:6;19354:634;19385:1;19371:4;:11;:15;;;;:::i;:::-;19367:1;:19;19354:634;;;19409:13;19424:14;19443:4;19448:1;19443:7;;;;;;;;:::i;:::-;;;;;;;19452:4;19457:1;19461;19457:5;;;;:::i;:::-;19452:11;;;;;;;;:::i;:::-;;;;;;;19408:56;;;;19480:14;19499:44;19529:5;19536:6;19499:29;:44::i;:::-;-1:-1:-1;19479:64:0;-1:-1:-1;19558:14:0;19575:7;19583:5;:1;19587;19583:5;:::i;:::-;19575:14;;;;;;;;:::i;:::-;;;;;;;19558:31;;19605:15;19622;19650:6;-1:-1:-1;;;;;19641:15:0;:5;-1:-1:-1;;;;;19641:15:0;;:61;;19683:9;19699:1;19641:61;;;19665:1;19669:9;19641:61;19604:98;;;;19717:10;19748:1;19734:4;:11;:15;;;;:::i;:::-;19730:1;:19;:84;;19811:3;19730:84;;;19752:56;19779:7;19788:6;19796:4;19801:5;:1;19805;19801:5;:::i;:::-;19796:11;;;;;;;;:::i;:::-;;;;;;;19752:26;:56::i;:::-;19717:97;;19846:50;19873:7;19882:5;19889:6;19846:26;:50::i;:::-;-1:-1:-1;;;;;19829:73:0;;19921:10;19933;19945:2;19959:1;19949:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19949:12:0;;19829:147;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19393:595;;;;;;;19388:3;;;;;:::i;:::-;;;;19354:634;;3756:476;3849:13;3895:1;3883:9;:13;3875:72;;;;-1:-1:-1;;;3875:72:0;;26425:2:1;3875:72:0;;;26407:21:1;26464:2;26444:18;;;26437:30;-1:-1:-1;;;;;;;;;;;26483:18:1;;;26476:62;-1:-1:-1;;;26554:18:1;;;26547:44;26608:19;;3875:72:0;26223:410:1;3875:72:0;3978:1;3966:9;:13;:31;;;;;3996:1;3983:10;:14;3966:31;3958:86;;;;-1:-1:-1;;;3958:86:0;;;;;;;:::i;:::-;4055:14;4072:34;4101:4;4072:24;:9;4086;4072:13;:24::i;:::-;:28;;:34::i;:::-;4055:51;-1:-1:-1;4117:16:0;4136:34;4166:3;4136:25;:10;4151:9;4136:14;:25::i;:34::-;4117:53;-1:-1:-1;4192:32:0;4222:1;4193:23;4117:53;4193:9;:23;:::i;4192:32::-;4181:43;3756:476;-1:-1:-1;;;;;;3756:476:0:o;2667:325::-;2749:12;2792:1;2782:7;:11;2774:63;;;;-1:-1:-1;;;2774:63:0;;26840:2:1;2774:63:0;;;26822:21:1;26879:2;26859:18;;;26852:30;-1:-1:-1;;;;;;;;;;;26898:18:1;;;26891:62;-1:-1:-1;;;26969:18:1;;;26962:37;27016:19;;2774:63:0;26638:403:1;2774:63:0;2867:1;2856:8;:12;:28;;;;;2883:1;2872:8;:12;2856:28;2848:83;;;;-1:-1:-1;;;2848:83:0;;;;;;;:::i;:::-;2976:8;2952:21;:7;2964:8;2952:11;:21::i;:::-;:32;;;;:::i;8701:598::-;8789:27;8797:5;-1:-1:-1;;;;;8789:25:0;;:27::i;:::-;8781:71;;;;-1:-1:-1;;;8781:71:0;;27248:2:1;8781:71:0;;;27230:21:1;27287:2;27267:18;;;27260:30;27326:33;27306:18;;;27299:61;27377:18;;8781:71:0;27046:355:1;8781:71:0;8926:12;8940:23;8975:5;-1:-1:-1;;;;;8967:19:0;8987:4;8967:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8925:67;;;;9011:7;9003:52;;;;-1:-1:-1;;;9003:52:0;;27608:2:1;9003:52:0;;;27590:21:1;;;27627:18;;;27620:30;27686:34;27666:18;;;27659:62;27738:18;;9003:52:0;27406:356:1;9003:52:0;9072:17;;:21;9068:224;;9214:10;9203:30;;;;;;;;;;;;:::i;:::-;9195:85;;;;-1:-1:-1;;;9195:85:0;;27969:2:1;9195:85:0;;;27951:21:1;28008:2;27988:18;;;27981:30;28047:34;28027:18;;;28020:62;-1:-1:-1;;;28098:18:1;;;28091:40;28148:19;;9195:85:0;27767:406:1;807:178:0;859:6;911;;;:30;;-1:-1:-1;;926:5:0;;;940:1;935;926:5;935:1;921:15;;;;:::i;:::-;;:20;911:30;903:63;;;;-1:-1:-1;;;903:63:0;;28380:2:1;903:63:0;;;28362:21:1;28419:2;28399:18;;;28392:30;-1:-1:-1;;;28438:18:1;;;28431:50;28498:18;;903:63:0;28178:344:1;462:164:0;571:5;;;566:16;;;;558:49;;;;-1:-1:-1;;;558:49:0;;28729:2:1;558:49:0;;;28711:21:1;28768:2;28748:18;;;28741:30;-1:-1:-1;;;28787:18:1;;;28780:50;28847:18;;558:49:0;28527:344:1;2161:393:0;2254:13;2269;2296:14;2315:26;2326:6;2334;2315:10;:26::i;:::-;2295:46;;;2353:13;2368;2403:32;2411:7;2420:6;2428;2403:7;:32::i;:::-;-1:-1:-1;;;;;2386:62:0;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2352:98;-1:-1:-1;;;;;2352:98:0;;;-1:-1:-1;;;;;2352:98:0;;;2494:6;-1:-1:-1;;;;;2484:16:0;:6;-1:-1:-1;;;;;2484:16:0;;:62;;2527:8;2537;2484:62;;;2504:8;2514;2484:62;2461:85;;;;-1:-1:-1;2161:393:0;-1:-1:-1;;;;;;;2161:393:0:o;1168:353::-;1243:14;1259;1304:6;-1:-1:-1;;;;;1294:16:0;:6;-1:-1:-1;;;;;1294:16:0;;1286:68;;;;-1:-1:-1;;;1286:68:0;;29726:2:1;1286:68:0;;;29708:21:1;29765:2;29745:18;;;29738:30;29804:34;29784:18;;;29777:62;-1:-1:-1;;;29855:18:1;;;29848:37;29902:19;;1286:68:0;29524:403:1;1286:68:0;1393:6;-1:-1:-1;;;;;1384:15:0;:6;-1:-1:-1;;;;;1384:15:0;;:53;;1422:6;1430;1384:53;;;1403:6;1411;1384:53;1365:72;;-1:-1:-1;1365:72:0;-1:-1:-1;;;;;;1456:20:0;;1448:65;;;;-1:-1:-1;;;1448:65:0;;30134:2:1;1448:65:0;;;30116:21:1;;;30153:18;;;30146:30;30212:34;30192:18;;;30185:62;30264:18;;1448:65:0;29932:356:1;1448:65:0;1168:353;;;;;:::o;634:165::-;743:5;;;738:16;;;;730:50;;;;-1:-1:-1;;;730:50:0;;30495:2:1;730:50:0;;;30477:21:1;30534:2;30514:18;;;30507:30;-1:-1:-1;;;30553:18:1;;;30546:51;30614:18;;730:50:0;30293:345:1;7519:374:0;7579:4;7802:20;;7645:66;7842:15;;;;;:42;;-1:-1:-1;7861:23:0;;;7834:51;-1:-1:-1;;7519:374:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:594;377:6;385;393;401;409;462:3;450:9;441:7;437:23;433:33;430:53;;;479:1;476;469:12;430:53;515:9;502:23;492:33;;575:2;564:9;560:18;547:32;588:31;613:5;588:31;:::i;:::-;638:5;-1:-1:-1;695:2:1;680:18;;667:32;708:33;667:32;708:33;:::i;:::-;282:594;;;;-1:-1:-1;760:7:1;;814:2;799:18;;786:32;;-1:-1:-1;865:3:1;850:19;837:33;;282:594;-1:-1:-1;;282:594:1:o;881:127::-;942:10;937:3;933:20;930:1;923:31;973:4;970:1;963:15;997:4;994:1;987:15;1013:275;1084:2;1078:9;1149:2;1130:13;;-1:-1:-1;;1126:27:1;1114:40;;1184:18;1169:34;;1205:22;;;1166:62;1163:88;;;1231:18;;:::i;:::-;1267:2;1260:22;1013:275;;-1:-1:-1;1013:275:1:o;1293:531::-;1336:5;1389:3;1382:4;1374:6;1370:17;1366:27;1356:55;;1407:1;1404;1397:12;1356:55;1443:6;1430:20;1469:18;1465:2;1462:26;1459:52;;;1491:18;;:::i;:::-;1535:55;1578:2;1559:13;;-1:-1:-1;;1555:27:1;1584:4;1551:38;1535:55;:::i;:::-;1615:2;1606:7;1599:19;1661:3;1654:4;1649:2;1641:6;1637:15;1633:26;1630:35;1627:55;;;1678:1;1675;1668:12;1627:55;1743:2;1736:4;1728:6;1724:17;1717:4;1708:7;1704:18;1691:55;1791:1;1766:16;;;1784:4;1762:27;1755:38;;;;1770:7;1293:531;-1:-1:-1;;;1293:531:1:o;1829:594::-;1925:6;1933;1941;1949;2002:3;1990:9;1981:7;1977:23;1973:33;1970:53;;;2019:1;2016;2009:12;1970:53;2058:9;2045:23;2077:31;2102:5;2077:31;:::i;:::-;2127:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2210:18;2199:30;;2196:50;;;2242:1;2239;2232:12;2196:50;2265;2307:7;2298:6;2287:9;2283:22;2265:50;:::i;:::-;1829:594;;2255:60;;-1:-1:-1;;;;2362:2:1;2347:18;;2334:32;;2413:2;2398:18;2385:32;;1829:594;-1:-1:-1;1829:594:1:o;2428:316::-;2505:6;2513;2521;2574:2;2562:9;2553:7;2549:23;2545:32;2542:52;;;2590:1;2587;2580:12;2542:52;-1:-1:-1;;2613:23:1;;;2683:2;2668:18;;2655:32;;-1:-1:-1;2734:2:1;2719:18;;;2706:32;;2428:316;-1:-1:-1;2428:316:1:o;2931:118::-;3017:5;3010:13;3003:21;2996:5;2993:32;2983:60;;3039:1;3036;3029:12;3054:241;3110:6;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;3218:9;3205:23;3237:28;3259:5;3237:28;:::i;:::-;3284:5;3054:241;-1:-1:-1;;;3054:241:1:o;3300:367::-;3363:8;3373:6;3427:3;3420:4;3412:6;3408:17;3404:27;3394:55;;3445:1;3442;3435:12;3394:55;-1:-1:-1;3468:20:1;;3511:18;3500:30;;3497:50;;;3543:1;3540;3533:12;3497:50;3580:4;3572:6;3568:17;3556:29;;3640:3;3633:4;3623:6;3620:1;3616:14;3608:6;3604:27;3600:38;3597:47;3594:67;;;3657:1;3654;3647:12;3672:847;3803:6;3811;3819;3827;3835;3843;3851;3904:3;3892:9;3883:7;3879:23;3875:33;3872:53;;;3921:1;3918;3911:12;3872:53;3957:9;3944:23;3934:33;;4014:2;4003:9;3999:18;3986:32;3976:42;;4069:2;4058:9;4054:18;4041:32;4096:18;4088:6;4085:30;4082:50;;;4128:1;4125;4118:12;4082:50;4167:70;4229:7;4220:6;4209:9;4205:22;4167:70;:::i;:::-;4256:8;;-1:-1:-1;4141:96:1;-1:-1:-1;;4341:2:1;4326:18;;4313:32;4354:31;4313:32;4354:31;:::i;:::-;3672:847;;;;-1:-1:-1;3672:847:1;;;;4404:5;4456:3;4441:19;;4428:33;;-1:-1:-1;4508:3:1;4493:19;;;4480:33;;3672:847;-1:-1:-1;;3672:847:1:o;4524:1089::-;4617:6;4625;4678:2;4666:9;4657:7;4653:23;4649:32;4646:52;;;4694:1;4691;4684:12;4646:52;4730:9;4717:23;4707:33;;4759:2;4812;4801:9;4797:18;4784:32;4835:18;4876:2;4868:6;4865:14;4862:34;;;4892:1;4889;4882:12;4862:34;4930:6;4919:9;4915:22;4905:32;;4975:7;4968:4;4964:2;4960:13;4956:27;4946:55;;4997:1;4994;4987:12;4946:55;5033:2;5020:16;5055:2;5051;5048:10;5045:36;;;5061:18;;:::i;:::-;5107:2;5104:1;5100:10;5090:20;;5130:28;5154:2;5150;5146:11;5130:28;:::i;:::-;5192:15;;;5262:11;;;5258:20;;;5223:12;;;;5290:19;;;5287:39;;;5322:1;5319;5312:12;5287:39;5346:11;;;;5366:217;5382:6;5377:3;5374:15;5366:217;;;5462:3;5449:17;5436:30;;5479:31;5504:5;5479:31;:::i;:::-;5523:18;;;5399:12;;;;5561;;;;5366:217;;;5602:5;5592:15;;;;;;;;4524:1089;;;;;:::o;5618:632::-;5789:2;5841:21;;;5911:13;;5814:18;;;5933:22;;;5760:4;;5789:2;6012:15;;;;5986:2;5971:18;;;5760:4;6055:169;6069:6;6066:1;6063:13;6055:169;;;6130:13;;6118:26;;6199:15;;;;6164:12;;;;6091:1;6084:9;6055:169;;;-1:-1:-1;6241:3:1;;5618:632;-1:-1:-1;;;;;;5618:632:1:o;6255:525::-;6341:6;6349;6357;6365;6418:3;6406:9;6397:7;6393:23;6389:33;6386:53;;;6435:1;6432;6425:12;6386:53;6474:9;6461:23;6493:31;6518:5;6493:31;:::i;:::-;6543:5;-1:-1:-1;6600:2:1;6585:18;;6572:32;6613:33;6572:32;6613:33;:::i;:::-;6255:525;;6665:7;;-1:-1:-1;;;;6719:2:1;6704:18;;6691:32;;6770:2;6755:18;6742:32;;6255:525::o;6785:1720::-;7015:6;7023;7031;7039;7047;7055;7063;7071;7079;7087;7140:3;7128:9;7119:7;7115:23;7111:33;7108:53;;;7157:1;7154;7147:12;7108:53;7197:9;7184:23;7226:18;7267:2;7259:6;7256:14;7253:34;;;7283:1;7280;7273:12;7253:34;7322:70;7384:7;7375:6;7364:9;7360:22;7322:70;:::i;:::-;7411:8;;-1:-1:-1;7296:96:1;-1:-1:-1;7499:2:1;7484:18;;7471:32;;-1:-1:-1;7515:16:1;;;7512:36;;;7544:1;7541;7534:12;7512:36;7583:72;7647:7;7636:8;7625:9;7621:24;7583:72;:::i;:::-;7674:8;;-1:-1:-1;7557:98:1;-1:-1:-1;7762:2:1;7747:18;;7734:32;;-1:-1:-1;7778:16:1;;;7775:36;;;7807:1;7804;7797:12;7775:36;7846:72;7910:7;7899:8;7888:9;7884:24;7846:72;:::i;:::-;7937:8;;-1:-1:-1;7820:98:1;-1:-1:-1;8025:2:1;8010:18;;7997:32;;-1:-1:-1;8041:16:1;;;8038:36;;;8070:1;8067;8060:12;8038:36;8109:72;8173:7;8162:8;8151:9;8147:24;8109:72;:::i;:::-;8200:8;;-1:-1:-1;8083:98:1;-1:-1:-1;8288:3:1;8273:19;;8260:33;;-1:-1:-1;8305:16:1;;;8302:36;;;8334:1;8331;8324:12;8302:36;;8373:72;8437:7;8426:8;8415:9;8411:24;8373:72;:::i;:::-;8347:98;;8464:8;8454:18;;;8491:8;8481:18;;;6785:1720;;;;;;;;;;;;;:::o;8510:916::-;8650:6;8658;8666;8674;8682;8690;8698;8706;8759:3;8747:9;8738:7;8734:23;8730:33;8727:53;;;8776:1;8773;8766:12;8727:53;8812:9;8799:23;8789:33;;8869:2;8858:9;8854:18;8841:32;8831:42;;8920:2;8909:9;8905:18;8892:32;8882:42;;8975:2;8964:9;8960:18;8947:32;9002:18;8994:6;8991:30;8988:50;;;9034:1;9031;9024:12;8988:50;9073:70;9135:7;9126:6;9115:9;9111:22;9073:70;:::i;:::-;9162:8;;-1:-1:-1;9047:96:1;-1:-1:-1;;9247:3:1;9232:19;;9219:33;9261:31;9219:33;9261:31;:::i;:::-;8510:916;;;;-1:-1:-1;8510:916:1;;;;;;9311:5;;-1:-1:-1;;;9363:3:1;9348:19;;9335:33;;9415:3;9400:19;9387:33;;8510:916::o;9623:388::-;9691:6;9699;9752:2;9740:9;9731:7;9727:23;9723:32;9720:52;;;9768:1;9765;9758:12;9720:52;9807:9;9794:23;9826:31;9851:5;9826:31;:::i;:::-;9876:5;-1:-1:-1;9933:2:1;9918:18;;9905:32;9946:33;9905:32;9946:33;:::i;:::-;9998:7;9988:17;;;9623:388;;;;;:::o;10016:525::-;10103:6;10111;10119;10172:2;10160:9;10151:7;10147:23;10143:32;10140:52;;;10188:1;10185;10178:12;10140:52;10227:9;10214:23;10246:31;10271:5;10246:31;:::i;:::-;10296:5;-1:-1:-1;10352:2:1;10337:18;;10324:32;10379:18;10368:30;;10365:50;;;10411:1;10408;10401:12;10365:50;10434;10476:7;10467:6;10456:9;10452:22;10434:50;:::i;:::-;10424:60;;;10531:2;10520:9;10516:18;10503:32;10493:42;;10016:525;;;;;:::o;10546:247::-;10605:6;10658:2;10646:9;10637:7;10633:23;10629:32;10626:52;;;10674:1;10671;10664:12;10626:52;10713:9;10700:23;10732:31;10757:5;10732:31;:::i;10798:456::-;10875:6;10883;10891;10944:2;10932:9;10923:7;10919:23;10915:32;10912:52;;;10960:1;10957;10950:12;10912:52;10999:9;10986:23;11018:31;11043:5;11018:31;:::i;:::-;11068:5;-1:-1:-1;11120:2:1;11105:18;;11092:32;;-1:-1:-1;11176:2:1;11161:18;;11148:32;11189:33;11148:32;11189:33;:::i;:::-;11241:7;11231:17;;;10798:456;;;;;:::o;11259:315::-;11327:6;11335;11388:2;11376:9;11367:7;11363:23;11359:32;11356:52;;;11404:1;11401;11394:12;11356:52;11443:9;11430:23;11462:31;11487:5;11462:31;:::i;:::-;11512:5;11564:2;11549:18;;;;11536:32;;-1:-1:-1;;;11259:315:1:o;11787:456::-;11864:6;11872;11880;11933:2;11921:9;11912:7;11908:23;11904:32;11901:52;;;11949:1;11946;11939:12;11901:52;11988:9;11975:23;12007:31;12032:5;12007:31;:::i;:::-;12057:5;-1:-1:-1;12114:2:1;12099:18;;12086:32;12127:33;12086:32;12127:33;:::i;:::-;11787:456;;12179:7;;-1:-1:-1;;;12233:2:1;12218:18;;;;12205:32;;11787:456::o;12248:1404::-;12442:6;12450;12458;12466;12474;12482;12490;12498;12551:3;12539:9;12530:7;12526:23;12522:33;12519:53;;;12568:1;12565;12558:12;12519:53;12608:9;12595:23;12637:18;12678:2;12670:6;12667:14;12664:34;;;12694:1;12691;12684:12;12664:34;12733:70;12795:7;12786:6;12775:9;12771:22;12733:70;:::i;:::-;12822:8;;-1:-1:-1;12707:96:1;-1:-1:-1;12910:2:1;12895:18;;12882:32;;-1:-1:-1;12926:16:1;;;12923:36;;;12955:1;12952;12945:12;12923:36;12994:72;13058:7;13047:8;13036:9;13032:24;12994:72;:::i;:::-;13085:8;;-1:-1:-1;12968:98:1;-1:-1:-1;13173:2:1;13158:18;;13145:32;;-1:-1:-1;13189:16:1;;;13186:36;;;13218:1;13215;13208:12;13186:36;13257:72;13321:7;13310:8;13299:9;13295:24;13257:72;:::i;:::-;13348:8;;-1:-1:-1;13231:98:1;-1:-1:-1;13436:2:1;13421:18;;13408:32;;-1:-1:-1;13452:16:1;;;13449:36;;;13481:1;13478;13471:12;13449:36;;13520:72;13584:7;13573:8;13562:9;13558:24;13520:72;:::i;:::-;12248:1404;;;;-1:-1:-1;12248:1404:1;;-1:-1:-1;12248:1404:1;;;;;;13611:8;-1:-1:-1;;;12248:1404:1:o;13657:350::-;13859:2;13841:21;;;13898:2;13878:18;;;13871:30;13937:28;13932:2;13917:18;;13910:56;13998:2;13983:18;;13657:350::o;14012:251::-;14082:6;14135:2;14123:9;14114:7;14110:23;14106:32;14103:52;;;14151:1;14148;14141:12;14103:52;14183:9;14177:16;14202:31;14227:5;14202:31;:::i;14268:184::-;14338:6;14391:2;14379:9;14370:7;14366:23;14362:32;14359:52;;;14407:1;14404;14397:12;14359:52;-1:-1:-1;14430:16:1;;14268:184;-1:-1:-1;14268:184:1:o;14457:375::-;-1:-1:-1;;;;;14715:15:1;;;14697:34;;14762:2;14747:18;;14740:34;;;;14810:15;;;14805:2;14790:18;;14783:43;14647:2;14632:18;;14457:375::o;15196:258::-;15268:1;15278:113;15292:6;15289:1;15286:13;15278:113;;;15368:11;;;15362:18;15349:11;;;15342:39;15314:2;15307:10;15278:113;;;15409:6;15406:1;15403:13;15400:48;;;-1:-1:-1;;15444:1:1;15426:16;;15419:27;15196:258::o;15459:::-;15501:3;15539:5;15533:12;15566:6;15561:3;15554:19;15582:63;15638:6;15631:4;15626:3;15622:14;15615:4;15608:5;15604:16;15582:63;:::i;:::-;15699:2;15678:15;-1:-1:-1;;15674:29:1;15665:39;;;;15706:4;15661:50;;15459:258;-1:-1:-1;;15459:258:1:o;15722:435::-;15955:3;15944:9;15937:22;15918:4;15976:46;16017:3;16006:9;16002:19;15994:6;15976:46;:::i;:::-;16053:2;16038:18;;16031:34;;;;-1:-1:-1;16096:2:1;16081:18;;16074:34;;;;16139:2;16124:18;;;16117:34;15968:54;15722:435;-1:-1:-1;15722:435:1:o;16162:399::-;16364:2;16346:21;;;16403:2;16383:18;;;16376:30;16442:34;16437:2;16422:18;;16415:62;-1:-1:-1;;;16508:2:1;16493:18;;16486:33;16551:3;16536:19;;16162:399::o;16566:348::-;16768:2;16750:21;;;16807:2;16787:18;;;16780:30;16846:26;16841:2;16826:18;;16819:54;16905:2;16890:18;;16566:348::o;16919:127::-;16980:10;16975:3;16971:20;16968:1;16961:31;17011:4;17008:1;17001:15;17035:4;17032:1;17025:15;17330:245;17397:6;17450:2;17438:9;17429:7;17425:23;17421:32;17418:52;;;17466:1;17463;17456:12;17418:52;17498:9;17492:16;17517:28;17539:5;17517:28;:::i;17580:1001::-;17892:3;17905:22;;;17877:19;;17962:22;;;17844:4;18042:6;18015:3;18000:19;;17844:4;18076:304;18090:6;18087:1;18084:13;18076:304;;;18165:6;18152:20;18185:31;18210:5;18185:31;:::i;:::-;-1:-1:-1;;;;;18241:31:1;18229:44;;18296:4;18355:15;;;;18320:12;;;;18269:1;18105:9;18076:304;;;-1:-1:-1;18431:4:1;18416:20;;18409:36;;;;-1:-1:-1;;18476:2:1;18461:18;;18454:34;;;;18519:2;18504:18;;18497:34;;;;18562:3;18547:19;;;18540:35;18397:3;17580:1001;-1:-1:-1;;17580:1001:1:o;18586:127::-;18647:10;18642:3;18638:20;18635:1;18628:31;18678:4;18675:1;18668:15;18702:4;18699:1;18692:15;18718:135;18757:3;18778:17;;;18775:43;;18798:18;;:::i;:::-;-1:-1:-1;18845:1:1;18834:13;;18718:135::o;18858:125::-;18898:4;18926:1;18923;18920:8;18917:34;;;18931:18;;:::i;:::-;-1:-1:-1;18968:9:1;;18858:125::o;20172:353::-;20374:2;20356:21;;;20413:2;20393:18;;;20386:30;20452:31;20447:2;20432:18;;20425:59;20516:2;20501:18;;20172:353::o;20530:406::-;20732:2;20714:21;;;20771:2;20751:18;;;20744:30;20810:34;20805:2;20790:18;;20783:62;-1:-1:-1;;;20876:2:1;20861:18;;20854:40;20926:3;20911:19;;20530:406::o;21297:128::-;21337:3;21368:1;21364:6;21361:1;21358:13;21355:39;;;21374:18;;:::i;:::-;-1:-1:-1;21410:9:1;;21297:128::o;22033:274::-;22162:3;22200:6;22194:13;22216:53;22262:6;22257:3;22250:4;22242:6;22238:17;22216:53;:::i;:::-;22285:16;;;;;22033:274;-1:-1:-1;;22033:274:1:o;23513:406::-;23715:2;23697:21;;;23754:2;23734:18;;;23727:30;-1:-1:-1;;;;;;;;;;;23788:2:1;23773:18;;23766:62;-1:-1:-1;;;23859:2:1;23844:18;;23837:40;23909:3;23894:19;;23513:406::o;23924:127::-;23985:10;23980:3;23976:20;23973:1;23966:31;24016:4;24013:1;24006:15;24040:4;24037:1;24030:15;24056:217;24096:1;24122;24112:132;;24166:10;24161:3;24157:20;24154:1;24147:31;24201:4;24198:1;24191:15;24229:4;24226:1;24219:15;24112:132;-1:-1:-1;24258:9:1;;24056:217::o;24639:136::-;24678:3;24706:5;24696:39;;24715:18;;:::i;:::-;-1:-1:-1;;;24751:18:1;;24639:136::o;25759:459::-;25990:6;25979:9;25972:25;26033:6;26028:2;26017:9;26013:18;26006:34;26105:1;26101;26096:3;26092:11;26088:19;26080:6;26076:32;26071:2;26060:9;26056:18;26049:60;26145:3;26140:2;26129:9;26125:18;26118:31;25953:4;26166:46;26207:3;26196:9;26192:19;26184:6;26166:46;:::i;28876:188::-;28955:13;;-1:-1:-1;;;;;28997:42:1;;28987:53;;28977:81;;29054:1;29051;29044:12;29069:450;29156:6;29164;29172;29225:2;29213:9;29204:7;29200:23;29196:32;29193:52;;;29241:1;29238;29231:12;29193:52;29264:40;29294:9;29264:40;:::i;:::-;29254:50;;29323:49;29368:2;29357:9;29353:18;29323:49;:::i;:::-;29313:59;;29415:2;29404:9;29400:18;29394:25;29459:10;29452:5;29448:22;29441:5;29438:33;29428:61;;29485:1;29482;29475:12

Metadata Hash

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