Contract 0xA52aBE4676dbfd04Df42eF7755F01A3c41f28D27 6

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x80dae290bf5a8c9cb3e41a3efc0e2703a98d33c579f3c24b5d19dcee7f623b78Swap Exact Token...148169892022-05-17 14:15:091 min ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.003074954 26.5
0x12e16e84826ebbb6fee65a8c739fdbfc07e548af9e22cf931f933612c74cd679Swap Exact AVAX ...148156952022-05-17 13:32:0244 mins ago0x14583ba17f7bc77c262cc5abdc63fb82497bbb99 IN  Lydia Finance: Router7 AVAX0.003318754 26.5
0x4112e9342df74a0284af82bbe564aec8f9a1e8d5ef6d7f3c0e5795dedd691c64Swap Exact Token...148153322022-05-17 13:19:5956 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0xabc15c7955e3256ce780a450c19f9b62688d3654a8c48f009b6c87174e594389Swap Exact Token...148132772022-05-17 12:11:282 hrs 5 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0xb8054aa952aa2dd0ef7e26674da162b5132a03b5cd82c2b62d59cd30485658bcSwap Exact Token...148120562022-05-17 11:30:302 hrs 46 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031114445 26.5
0x2b5848d91f7d93d69c04110f73c785e281818d1ca145bbfb9946f9333183b719Swap Exact Token...148101522022-05-17 10:26:523 hrs 49 mins ago0xe6338a8d34e1e80ae8f2fd72d947361076291860 IN  Lydia Finance: Router0 AVAX0.0044357025 26.5
0xb18a518599a7acee372d6fdd74c933d76a1062c701110540a3b8df7f0651484fSwap Exact Token...148098922022-05-17 10:18:093 hrs 58 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0xbec25d21c96d9993f02e6d85953d9b7d552b3174819c9d0d7ce7b6d329479446Swap Exact Token...148082962022-05-17 9:24:504 hrs 51 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031117625 26.5
0xdb1ab36d3fd00a615b2be388f504074c371639a7c48a71db6bc94cf5af2e5010Swap Exact Token...148070752022-05-17 8:43:545 hrs 32 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0x44368c67e9f2cb89d37c6cf5b53a7c2ad7dcc20b73d88803650692f124ad8822Swap Exact Token...148063872022-05-17 8:20:495 hrs 55 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0x8fab759ad6a061a5faa7e01fa66d91c03e752a302c7bdfab81cbe5f2fe64c843Swap Exact Token...148059872022-05-17 8:07:256 hrs 9 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.00293592525
0x7af8ecf9c2512fd493e2385a633700ddc33f0f08bf043d5fd90af8f95f219d21Swap Exact Token...148052742022-05-17 7:43:246 hrs 33 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031117625 26.5
0x29a0eb4296787e560f7b5c0cc6db703d6651971ec12f95ba63952d01e080b187Swap Exact Token...148040992022-05-17 7:04:187 hrs 12 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0x06b99098e5f5a30f637a6a1e1fafba55dc737114e3953e13b54ccf1edfb2455eSwap Exact Token...148038132022-05-17 6:54:407 hrs 21 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.003074954 26.5
0x4db61f94d5cebde6de0da3abd552f69d5fd5e07b9128bb83388d01e70556d85fSwap Exact Token...148029702022-05-17 6:26:217 hrs 50 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0x8f07716ee23b2bb56c3781b4796de5ae6288bf3b31bb6dace83e31f74dce9198Swap Exact Token...148025402022-05-17 6:11:558 hrs 4 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.003074954 26.5
0xd402fadf84ccf96603862bc5eea43b80ca6e078d10ccbfa49cb19edf159ce17cSwap Exact AVAX ...148016442022-05-17 5:41:558 hrs 34 mins ago0x7ab1186d0fa3b780851a92e791728f5bc0644b7f IN  Lydia Finance: Router2 AVAX0.003256136 26
0xcaa4b42401b6fa432b86747ff661bf1f52cdeaf29817ec41ae2a93754092e479Swap Exact Token...148013742022-05-17 5:32:558 hrs 43 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0xadce7f02fabebf2bdfa9a1411d22bc90e03c8da1ab765cfc38b5f9e61f1b1d52Swap Exact Token...148004682022-05-17 5:02:269 hrs 14 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.003074954 26.5
0x11aa0ae6e7b372cb06e77224eb4a1d16980b413278350d54dc1de33f26c7ef11Swap Exact Token...147996012022-05-17 4:33:299 hrs 43 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.003074954 26.5
0xb8811994e401bd16dcfef0999e1c1db529b11358743d54649c16d829e1fa4917Swap Exact AVAX ...147984542022-05-17 3:54:5910 hrs 21 mins ago0x7ab1186d0fa3b780851a92e791728f5bc0644b7f IN  Lydia Finance: Router2 AVAX0.003318754 26.5
0xad6795e97f2660e84bf38fb798ab96ed07c81845c7a5f8a6dcff4197c0028270Swap Exact Token...147977492022-05-17 3:31:3210 hrs 45 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.003074954 26.5
0x825aa8791440da399476545c24e5b1b593ce81a63521c2a29f3c981af3b91400Swap Exact Token...147973442022-05-17 3:18:0210 hrs 58 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0xf625590fba2f5c3e5715076470554700988621cb62a859b6fb6146d142576b7dSwap Exact Token...147956942022-05-17 2:22:3511 hrs 54 mins ago0xe59150cc54b28d55b9b1df175a3bdff10a29d1ba IN  Lydia Finance: Router0 AVAX0.0031120805 26.5
0x4438f2f8a04b1b7b70500898c7c998abc2ddc37b6a99e8a3657babafebc56361Swap Exact Token...147953912022-05-17 2:12:2912 hrs 4 mins ago0x4280aebb039995e3561ea5aaca6ba984a36d3a16 IN  Lydia Finance: Router0 AVAX0.003751393 26.5
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x12e16e84826ebbb6fee65a8c739fdbfc07e548af9e22cf931f933612c74cd679148156952022-05-17 13:32:0244 mins ago Lydia Finance: Router Wrapped AVAX7 AVAX
0xd402fadf84ccf96603862bc5eea43b80ca6e078d10ccbfa49cb19edf159ce17c148016442022-05-17 5:41:558 hrs 34 mins ago Lydia Finance: Router Wrapped AVAX2 AVAX
0xb8811994e401bd16dcfef0999e1c1db529b11358743d54649c16d829e1fa4917147984542022-05-17 3:54:5910 hrs 21 mins ago Lydia Finance: Router Wrapped AVAX2 AVAX
0x4438f2f8a04b1b7b70500898c7c998abc2ddc37b6a99e8a3657babafebc56361147953912022-05-17 2:12:2912 hrs 4 mins ago Lydia Finance: Router0x4280aebb039995e3561ea5aaca6ba984a36d3a161.777651424349871839 AVAX
0x4438f2f8a04b1b7b70500898c7c998abc2ddc37b6a99e8a3657babafebc56361147953912022-05-17 2:12:2912 hrs 4 mins ago Wrapped AVAX Lydia Finance: Router1.777651424349871839 AVAX
0xda45f7d51bde06e77cef92d6781317842d6c7aec40457a61f198d9e5a8099851147839712022-05-16 19:51:1018 hrs 25 mins ago Lydia Finance: Router Wrapped AVAX40.147177046844259463 AVAX
0x4d4ba31b03cbad734515a3baa5f0c67af94784be5395ceb2d60a24e81d6b159c147793172022-05-16 17:15:2021 hrs 1 min ago Lydia Finance: Router0x88126ca7165227e6c210f05a8e76b3dcd06ac6f50.763308899740085019 AVAX
0x4d4ba31b03cbad734515a3baa5f0c67af94784be5395ceb2d60a24e81d6b159c147793172022-05-16 17:15:2021 hrs 1 min ago Wrapped AVAX Lydia Finance: Router0.763308899740085019 AVAX
0x1ac1658f012a4eac3452e0169bccf3da1888fe953b2eda3a4d0c36cc3674805e147791822022-05-16 17:10:4621 hrs 5 mins ago Lydia Finance: Router0x23c305443e6e6d1d693997114a03643ec5702e950.639579696085734284 AVAX
0x1ac1658f012a4eac3452e0169bccf3da1888fe953b2eda3a4d0c36cc3674805e147791822022-05-16 17:10:4621 hrs 5 mins ago Wrapped AVAX Lydia Finance: Router0.639579696085734284 AVAX
0x5e49baa43a86d0f011be4d1a0fc34800d551e346e2ee4c890984e89264ea41ef147771322022-05-16 16:02:2422 hrs 14 mins ago Lydia Finance: Router0x9cd13b090a6c7fab4cd3ff1ff6fff4689dead0d50.158039027102837208 AVAX
0x5e49baa43a86d0f011be4d1a0fc34800d551e346e2ee4c890984e89264ea41ef147771322022-05-16 16:02:2422 hrs 14 mins ago Wrapped AVAX Lydia Finance: Router0.158039027102837208 AVAX
0x367960fd5ddb768dedb2abc4bddc6903d0b526408862c6a35eb71704ba4cd5b6147728872022-05-16 13:41:121 day 35 mins ago Lydia Finance: Router Wrapped AVAX3 AVAX
0x1cb86d86ce03b33d8c13d29fea86bb9ec94cd688f4a2b3a5cae0760bcc61ff5e147627492022-05-16 8:06:021 day 6 hrs ago Lydia Finance: Router0x100ecd92bdb113bb1ebf3f762545aa6f768e877d0.151266723858067502 AVAX
0x1cb86d86ce03b33d8c13d29fea86bb9ec94cd688f4a2b3a5cae0760bcc61ff5e147627492022-05-16 8:06:021 day 6 hrs ago Wrapped AVAX Lydia Finance: Router0.151266723858067502 AVAX
0xb162c1c2490c82202915cb36252a5d6ef9a021eb99c3460df1beb31956501d5d147587352022-05-16 5:52:061 day 8 hrs ago Lydia Finance: Router0x60a53115d4466b3b3882bdbf04c3e7e3d74133992.370493229863447336 AVAX
0xb162c1c2490c82202915cb36252a5d6ef9a021eb99c3460df1beb31956501d5d147587352022-05-16 5:52:061 day 8 hrs ago Wrapped AVAX Lydia Finance: Router2.370493229863447336 AVAX
0x4a4778639be2ef03cb8dceef2ab507be9e0c03bfc471cbcf701620ff89167b32147558202022-05-16 4:14:331 day 10 hrs ago Lydia Finance: Router0x38e1c9ac06d598388a0bee13a357ef19fd6b5beb0.213189949058862491 AVAX
0x4a4778639be2ef03cb8dceef2ab507be9e0c03bfc471cbcf701620ff89167b32147558202022-05-16 4:14:331 day 10 hrs ago Wrapped AVAX Lydia Finance: Router0.213189949058862491 AVAX
0xc763ed9c86063a95e3108df8d8ce52f72c4c435c00899715e26edbee8b4fe03d147557982022-05-16 4:13:491 day 10 hrs ago Lydia Finance: Router0x38e1c9ac06d598388a0bee13a357ef19fd6b5beb0.675030463947705281 AVAX
0xc763ed9c86063a95e3108df8d8ce52f72c4c435c00899715e26edbee8b4fe03d147557982022-05-16 4:13:491 day 10 hrs ago Wrapped AVAX Lydia Finance: Router0.675030463947705281 AVAX
0xb8b23907d17922090eb1136262254aa870b37ed3dec659896491bb45ea00796b147524722022-05-16 2:22:191 day 11 hrs ago Lydia Finance: Router0x2ab539093843c221184b6bcca8994897c5f536d12.551542132543773773 AVAX
0xb8b23907d17922090eb1136262254aa870b37ed3dec659896491bb45ea00796b147524722022-05-16 2:22:191 day 11 hrs ago Wrapped AVAX Lydia Finance: Router2.551542132543773773 AVAX
0x23a7b76ed9755ae972801ec4772c10f273b5916dcbea25364391805efcc05369147488062022-05-16 0:19:291 day 13 hrs ago Lydia Finance: Router0x349464c131d46f6724c61fc042fb3409280da7ef0.203062502774123073 AVAX
0x23a7b76ed9755ae972801ec4772c10f273b5916dcbea25364391805efcc05369147488062022-05-16 0:19:291 day 13 hrs ago Wrapped AVAX Lydia Finance: Router0.203062502774123073 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LydiaRouter

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2021-11-11
*/

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

// File @lydiafinance/lydia-finance-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

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


// File contracts/libraries/TransferHelper.sol

pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending AVAX that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferAVAX(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: AVAX_TRANSFER_FAILED');
    }
}


// File contracts/interfaces/ILydiaRouter01.sol

pragma solidity >=0.6.2;

interface ILydiaRouter01 {
    function factory() external pure returns (address);
    function WAVAX() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityAVAX(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountAVAX, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityAVAX(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountAVAX);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityAVAXWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountAVAX);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactAVAXForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactAVAX(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForAVAX(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapAVAXForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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


// File contracts/interfaces/ILydiaRouter02.sol

pragma solidity >=0.6.2;

interface ILydiaRouter02 is ILydiaRouter01 {
    function removeLiquidityAVAXSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external returns (uint amountAVAX);
    function removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountAVAX);

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


// File @lydiafinance/lydia-finance-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

interface ILydiaPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

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

    function initialize(address, address) external;
}


// File contracts/libraries/SafeMath.sol

pragma solidity =0.6.6;

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

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

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

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


// File contracts/libraries/LydiaLibrary.sol

pragma solidity >=0.5.0;

library LydiaLibrary {
    using SafeMath for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'LydiaLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'LydiaLibrary: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'47cc4f3a5e7a237c464e09c6758ac645084f198b8f64eedc923317ac4481a10c' // 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,) = ILydiaPair(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, 'LydiaLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'LydiaLibrary: 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, 'LydiaLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'LydiaLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(998);
        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, 'LydiaLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'LydiaLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(998);
        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, 'LydiaLibrary: 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, 'LydiaLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}


// File contracts/interfaces/IERC20.sol

pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

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


// File contracts/interfaces/IWAVAX.sol

pragma solidity >=0.5.0;

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


// File contracts/LydiaRouter.sol

pragma solidity =0.6.6;






contract LydiaRouter is ILydiaRouter02 {
    using SafeMath for uint;

    address public immutable override factory;
    address public immutable override WAVAX;

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

    constructor(address _factory, address _WAVAX) public {
        factory = _factory;
        WAVAX = _WAVAX;
    }

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

    // **** ADD LIQUIDITY ****
    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (ILydiaFactory(factory).getPair(tokenA, tokenB) == address(0)) {
            ILydiaFactory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = LydiaLibrary.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = LydiaLibrary.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'LydiaRouter: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = LydiaLibrary.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'LydiaRouter: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = LydiaLibrary.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = ILydiaPair(pair).mint(to);
    }
    function addLiquidityAVAX(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountAVAX, uint liquidity) {
        (amountToken, amountAVAX) = _addLiquidity(
            token,
            WAVAX,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountAVAXMin
        );
        address pair = LydiaLibrary.pairFor(factory, token, WAVAX);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWAVAX(WAVAX).deposit{value: amountAVAX}();
        assert(IWAVAX(WAVAX).transfer(pair, amountAVAX));
        liquidity = ILydiaPair(pair).mint(to);
        // refund dust avax, if any
        if (msg.value > amountAVAX) TransferHelper.safeTransferAVAX(msg.sender, msg.value - amountAVAX);
    }

    // **** REMOVE LIQUIDITY ****
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = LydiaLibrary.pairFor(factory, tokenA, tokenB);
        ILydiaPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = ILydiaPair(pair).burn(to);
        (address token0,) = LydiaLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'LydiaRouter: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'LydiaRouter: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityAVAX(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountAVAX) {
        (amountToken, amountAVAX) = removeLiquidity(
            token,
            WAVAX,
            liquidity,
            amountTokenMin,
            amountAVAXMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWAVAX(WAVAX).withdraw(amountAVAX);
        TransferHelper.safeTransferAVAX(to, amountAVAX);
    }
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountA, uint amountB) {
        address pair = LydiaLibrary.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        ILydiaPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityAVAXWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountAVAX) {
        address pair = LydiaLibrary.pairFor(factory, token, WAVAX);
        uint value = approveMax ? uint(-1) : liquidity;
        ILydiaPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountAVAX) = removeLiquidityAVAX(token, liquidity, amountTokenMin, amountAVAXMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityAVAXSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountAVAX) {
        (, amountAVAX) = removeLiquidity(
            token,
            WAVAX,
            liquidity,
            amountTokenMin,
            amountAVAXMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
        IWAVAX(WAVAX).withdraw(amountAVAX);
        TransferHelper.safeTransferAVAX(to, amountAVAX);
    }
    function removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountAVAX) {
        address pair = LydiaLibrary.pairFor(factory, token, WAVAX);
        uint value = approveMax ? uint(-1) : liquidity;
        ILydiaPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountAVAX = removeLiquidityAVAXSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountAVAXMin, to, deadline
        );
    }

    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = LydiaLibrary.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 ? LydiaLibrary.pairFor(factory, output, path[i + 2]) : _to;
            ILydiaPair(LydiaLibrary.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = LydiaLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'LydiaRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, LydiaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = LydiaLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'LydiaRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, LydiaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactAVAXForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WAVAX, 'LydiaRouter: INVALID_PATH');
        amounts = LydiaLibrary.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'LydiaRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWAVAX(WAVAX).deposit{value: amounts[0]}();
        assert(IWAVAX(WAVAX).transfer(LydiaLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactAVAX(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WAVAX, 'LydiaRouter: INVALID_PATH');
        amounts = LydiaLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'LydiaRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, LydiaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWAVAX(WAVAX).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferAVAX(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForAVAX(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WAVAX, 'LydiaRouter: INVALID_PATH');
        amounts = LydiaLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'LydiaRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, LydiaLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWAVAX(WAVAX).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferAVAX(to, amounts[amounts.length - 1]);
    }
    function swapAVAXForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WAVAX, 'LydiaRouter: INVALID_PATH');
        amounts = LydiaLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'LydiaRouter: EXCESSIVE_INPUT_AMOUNT');
        IWAVAX(WAVAX).deposit{value: amounts[0]}();
        assert(IWAVAX(WAVAX).transfer(LydiaLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust avax, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferAVAX(msg.sender, msg.value - amounts[0]);
    }

    // **** SWAP (supporting fee-on-transfer tokens) ****
    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = LydiaLibrary.sortTokens(input, output);
            ILydiaPair pair = ILydiaPair(LydiaLibrary.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = LydiaLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? LydiaLibrary.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, LydiaLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'LydiaRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactAVAXForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WAVAX, 'LydiaRouter: INVALID_PATH');
        uint amountIn = msg.value;
        IWAVAX(WAVAX).deposit{value: amountIn}();
        assert(IWAVAX(WAVAX).transfer(LydiaLibrary.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'LydiaRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForAVAXSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WAVAX, 'LydiaRouter: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, LydiaLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(WAVAX).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'LydiaRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWAVAX(WAVAX).withdraw(amountOut);
        TransferHelper.safeTransferAVAX(to, amountOut);
    }

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

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

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

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

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WAVAX","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WAVAX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAVAX","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAVAXSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAVAXWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAVAXMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAVAX","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapAVAXForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAVAXForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAVAXForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAVAXSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactAVAX","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b50604051620047f9380380620047f98339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c614674620001856000398061019f5280610e485280610f7d5280610fb8528061151352806116b1528061176752806117d5528061188452806119585280611a605280611b165280611bec5280611e845280611fd5528061205d5280612200528061232c5280612480528061250852806128f652806129995280612a0d5280612e025280612e585280612e8c5280612f00525080610cf35280610d2c5280610e265280611095528061116c528061129852806115af5280611c885280611d8e5280611f25528061208f52806121de52806123cd528061253a5280612696528061288e5280612a3f5280612c515280612cda5280612e36528061391252806139555280613b005280613c8652806140be528061416c52806141ec52506146746000f3fe60806040526004361061018f5760003560e01c806385f8c259116100d6578063baa2abde1161007f578063d06ca61f11610059578063d06ca61f14610b5c578063e8e3370014610c11578063f91b3f7214610c91576101c8565b8063baa2abde14610a66578063c45a015514610ac3578063c57559dd14610ad8576101c8565b80639fc27226116100b05780639fc2722614610939578063a2a1623d146109ac578063ad615dec14610a30576101c8565b806385f8c259146107e95780638803dbee1461081f5780638a657e67146108b5576101c8565b80635c11d7951161013857806373bc79cf1161011257806373bc79cf1461066a578063762b1562146106bd5780637a42416a14610753576101c8565b80635c11d7951461050d578063676528d1146105a357806373b295c214610639576101c8565b80632c407024116101695780632c407024146103b157806333c6b7251461042457806338ed173914610477576101c8565b8063054d50d4146101cd5780631f00ca74146102155780632195995c1461031a576101c8565b366101c857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c657fe5b005b600080fd5b3480156101d957600080fd5b50610203600480360360608110156101f057600080fd5b5080359060208101359060400135610cd7565b60408051918252519081900360200190f35b34801561022157600080fd5b506102ca6004803603604081101561023857600080fd5b81359190810190604081016020820135600160201b81111561025957600080fd5b82018360208201111561026b57600080fd5b803590602001918460208302840111600160201b8311171561028c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610cec945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103065781810151838201526020016102ee565b505050509050019250505060405180910390f35b34801561032657600080fd5b50610398600480360361016081101561033e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135610d22565b6040805192835260208301919091528051918290030190f35b3480156103bd57600080fd5b5061039860048036036101408110156103d557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610e1c565b34801561043057600080fd5b50610398600480360360c081101561044757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610f30565b34801561048357600080fd5b506102ca600480360360a081101561049a57600080fd5b813591602081013591810190606081016040820135600160201b8111156104c057600080fd5b8201836020820111156104d257600080fd5b803590602001918460208302840111600160201b831117156104f357600080fd5b91935091506001600160a01b03813516906020013561104a565b34801561051957600080fd5b506101c6600480360360a081101561053057600080fd5b813591602081013591810190606081016040820135600160201b81111561055657600080fd5b82018360208201111561056857600080fd5b803590602001918460208302840111600160201b8311171561058957600080fd5b91935091506001600160a01b03813516906020013561122e565b3480156105af57600080fd5b506102ca600480360360a08110156105c657600080fd5b813591602081013591810190606081016040820135600160201b8111156105ec57600080fd5b8201836020820111156105fe57600080fd5b803590602001918460208302840111600160201b8311171561061f57600080fd5b91935091506001600160a01b0381351690602001356114c3565b34801561064557600080fd5b5061064e611765565b604080516001600160a01b039092168252519081900360200190f35b34801561067657600080fd5b50610203600480360360c081101561068d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611789565b3480156106c957600080fd5b506101c6600480360360a08110156106e057600080fd5b813591602081013591810190606081016040820135600160201b81111561070657600080fd5b82018360208201111561071857600080fd5b803590602001918460208302840111600160201b8311171561073957600080fd5b91935091506001600160a01b03813516906020013561190a565b34801561075f57600080fd5b506102ca600480360360a081101561077657600080fd5b813591602081013591810190606081016040820135600160201b81111561079c57600080fd5b8201836020820111156107ae57600080fd5b803590602001918460208302840111600160201b831117156107cf57600080fd5b91935091506001600160a01b038135169060200135611b9c565b3480156107f557600080fd5b506102036004803603606081101561080c57600080fd5b5080359060208101359060400135611d36565b34801561082b57600080fd5b506102ca600480360360a081101561084257600080fd5b813591602081013591810190606081016040820135600160201b81111561086857600080fd5b82018360208201111561087a57600080fd5b803590602001918460208302840111600160201b8311171561089b57600080fd5b91935091506001600160a01b038135169060200135611d43565b6102ca600480360360808110156108cb57600080fd5b81359190810190604081016020820135600160201b8111156108ec57600080fd5b8201836020820111156108fe57600080fd5b803590602001918460208302840111600160201b8311171561091f57600080fd5b91935091506001600160a01b038135169060200135611e3c565b34801561094557600080fd5b50610203600480360361014081101561095d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356121d6565b6102ca600480360360808110156109c257600080fd5b81359190810190604081016020820135600160201b8111156109e357600080fd5b8201836020820111156109f557600080fd5b803590602001918460208302840111600160201b83111715610a1657600080fd5b91935091506001600160a01b0381351690602001356122e4565b348015610a3c57600080fd5b5061020360048036036060811015610a5357600080fd5b508035906020810135906040013561263b565b348015610a7257600080fd5b50610398600480360360e0811015610a8957600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612648565b348015610acf57600080fd5b5061064e61288c565b6101c660048036036080811015610aee57600080fd5b81359190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460208302840111600160201b83111715610b4257600080fd5b91935091506001600160a01b0381351690602001356128b0565b348015610b6857600080fd5b506102ca60048036036040811015610b7f57600080fd5b81359190810190604081016020820135600160201b811115610ba057600080fd5b820183602082011115610bb257600080fd5b803590602001918460208302840111600160201b83111715610bd357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612c4a945050505050565b348015610c1d57600080fd5b50610c736004803603610100811015610c3557600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612c77565b60408051938452602084019290925282820152519081900360600190f35b610c73600480360360c0811015610ca757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612db3565b6000610ce4848484613058565b949350505050565b6060610d197f00000000000000000000000000000000000000000000000000000000000000008484613148565b90505b92915050565b6000806000610d527f00000000000000000000000000000000000000000000000000000000000000008f8f613295565b9050600087610d61578c610d65565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610ddb57600080fd5b505af1158015610def573d6000803e3d6000fd5b50505050610e028f8f8f8f8f8f8f612648565b809450819550505050509b509b9950505050505050505050565b6000806000610e6c7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613295565b9050600087610e7b578c610e7f565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b50505050610f1b8e8e8e8e8e8e610f30565b909f909e509c50505050505050505050505050565b6000808242811015610f77576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b610fa6897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612648565b9093509150610fb689868561336d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b5050505061103e85836134d7565b50965096945050505050565b60608142811015611090576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b6110ee7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135cf92505050565b9150868260018451038151811061110157fe5b602002602001015110156111465760405162461bcd60e51b81526004018080602001828103825260278152602001806145af6027913960400191505060405180910390fd5b6111e48686600081811061115657fe5b905060200201356001600160a01b0316336111ca7f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061119857fe5b905060200201356001600160a01b03168b8b60018181106111b557fe5b905060200201356001600160a01b0316613295565b856000815181106111d757fe5b6020026020010151613706565b61122382878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613863915050565b509695505050505050565b8042811015611272576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b6112e78585600081811061128257fe5b905060200201356001600160a01b0316336112e17f0000000000000000000000000000000000000000000000000000000000000000898960008181106112c457fe5b905060200201356001600160a01b03168a8a60018181106111b557fe5b8a613706565b6000858560001981018181106112f957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561135e57600080fd5b505afa158015611372573d6000803e3d6000fd5b505050506040513d602081101561138857600080fd5b505160408051602088810282810182019093528882529293506113ca929091899189918291850190849080828437600092019190915250889250613aa9915050565b8661147c82888860001981018181106113df57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561144457600080fd5b505afa158015611458573d6000803e3d6000fd5b505050506040513d602081101561146e57600080fd5b50519063ffffffff613dbb16565b10156114b95760405162461bcd60e51b81526004018080602001828103825260278152602001806145af6027913960400191505060405180910390fd5b5050505050505050565b60608142811015611509576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061154357fe5b905060200201356001600160a01b03166001600160a01b0316146115aa576040805162461bcd60e51b8152602060048201526019602482015278098f2c8d2c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b6116087f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135cf92505050565b9150868260018451038151811061161b57fe5b602002602001015110156116605760405162461bcd60e51b81526004018080602001828103825260278152602001806145af6027913960400191505060405180910390fd5b6116708686600081811061115657fe5b6116af82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613863915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855103815181106116ee57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561172c57600080fd5b505af1158015611740573d6000803e3d6000fd5b50505050611223848360018551038151811061175857fe5b60200260200101516134d7565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081428110156117cf576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b6117fe887f00000000000000000000000000000000000000000000000000000000000000008989893089612648565b604080516370a0823160e01b8152306004820152905191945061188292508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561185157600080fd5b505afa158015611865573d6000803e3d6000fd5b505050506040513d602081101561187b57600080fd5b505161336d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156118e857600080fd5b505af11580156118fc573d6000803e3d6000fd5b5050505061122384836134d7565b804281101561194e576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061198857fe5b905060200201356001600160a01b03166001600160a01b0316146119ef576040805162461bcd60e51b8152602060048201526019602482015278098f2c8d2c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b6119ff8585600081811061128257fe5b611a3d858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613aa9915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611aa757600080fd5b505afa158015611abb573d6000803e3d6000fd5b505050506040513d6020811015611ad157600080fd5b5051905086811015611b145760405162461bcd60e51b81526004018080602001828103825260278152602001806145af6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b7a57600080fd5b505af1158015611b8e573d6000803e3d6000fd5b505050506114b984826134d7565b60608142811015611be2576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110611c1c57fe5b905060200201356001600160a01b03166001600160a01b031614611c83576040805162461bcd60e51b8152602060048201526019602482015278098f2c8d2c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611ce17f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061314892505050565b91508682600081518110611cf157fe5b602002602001015111156116605760405162461bcd60e51b815260040180806020018281038252602381526020018061456a6023913960400191505060405180910390fd5b6000610ce4848484613e13565b60608142811015611d89576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b611de77f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061314892505050565b91508682600081518110611df757fe5b602002602001015111156111465760405162461bcd60e51b815260040180806020018281038252602381526020018061456a6023913960400191505060405180910390fd5b60608142811015611e82576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611eb957fe5b905060200201356001600160a01b03166001600160a01b031614611f20576040805162461bcd60e51b8152602060048201526019602482015278098f2c8d2c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611f7e7f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061314892505050565b91503482600081518110611f8e57fe5b60200260200101511115611fd35760405162461bcd60e51b815260040180806020018281038252602381526020018061456a6023913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061200f57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561204257600080fd5b505af1158015612056573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6120bb7f0000000000000000000000000000000000000000000000000000000000000000898960008181106112c457fe5b846000815181106120c857fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561211f57600080fd5b505af1158015612133573d6000803e3d6000fd5b505050506040513d602081101561214957600080fd5b505161215157fe5b61219082878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613863915050565b8160008151811061219d57fe5b60200260200101513411156121cc576121cc33836000815181106121bd57fe5b602002602001015134036134d7565b5095945050505050565b6000806122247f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613295565b9050600086612233578b612237565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156122ad57600080fd5b505af11580156122c1573d6000803e3d6000fd5b505050506122d38d8d8d8d8d8d611789565b9d9c50505050505050505050505050565b6060814281101561232a576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061236157fe5b905060200201356001600160a01b03166001600160a01b0316146123c8576040805162461bcd60e51b8152602060048201526019602482015278098f2c8d2c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b6124267f0000000000000000000000000000000000000000000000000000000000000000348888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135cf92505050565b9150868260018451038151811061243957fe5b6020026020010151101561247e5760405162461bcd60e51b81526004018080602001828103825260278152602001806145af6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836000815181106124ba57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156124ed57600080fd5b505af1158015612501573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6125667f0000000000000000000000000000000000000000000000000000000000000000898960008181106112c457fe5b8460008151811061257357fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156125ca57600080fd5b505af11580156125de573d6000803e3d6000fd5b505050506040513d60208110156125f457600080fd5b50516125fc57fe5b6121cc82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613863915050565b6000610ce4848484613f03565b600080824281101561268f576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b60006126bc7f00000000000000000000000000000000000000000000000000000000000000008c8c613295565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561271757600080fd5b505af115801561272b573d6000803e3d6000fd5b505050506040513d602081101561274157600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561278e57600080fd5b505af11580156127a2573d6000803e3d6000fd5b505050506040513d60408110156127b857600080fd5b508051602090910151909250905060006127d28e8e613faf565b509050806001600160a01b03168e6001600160a01b0316146127f55781836127f8565b82825b90975095508a87101561283c5760405162461bcd60e51b81526004018080602001828103825260228152602001806145046022913960400191505060405180910390fd5b8986101561287b5760405162461bcd60e51b815260040180806020018281038252602281526020018061458d6022913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b80428110156128f4576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585600081811061292b57fe5b905060200201356001600160a01b03166001600160a01b031614612992576040805162461bcd60e51b8152602060048201526019602482015278098f2c8d2c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156129f257600080fd5b505af1158015612a06573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb612a6b7f0000000000000000000000000000000000000000000000000000000000000000898960008181106112c457fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612abb57600080fd5b505af1158015612acf573d6000803e3d6000fd5b505050506040513d6020811015612ae557600080fd5b5051612aed57fe5b600086866000198101818110612aff57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612b6457600080fd5b505afa158015612b78573d6000803e3d6000fd5b505050506040513d6020811015612b8e57600080fd5b50516040805160208981028281018201909352898252929350612bd09290918a918a918291850190849080828437600092019190915250899250613aa9915050565b8761147c8289896000198101818110612be557fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561144457600080fd5b6060610d197f000000000000000000000000000000000000000000000000000000000000000084846135cf565b60008060008342811015612cc0576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b612cce8c8c8c8c8c8c61408d565b90945092506000612d007f00000000000000000000000000000000000000000000000000000000000000008e8e613295565b9050612d0e8d338388613706565b612d1a8c338387613706565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612d7257600080fd5b505af1158015612d86573d6000803e3d6000fd5b505050506040513d6020811015612d9c57600080fd5b5051949d939c50939a509198505050505050505050565b60008060008342811015612dfc576040805162461bcd60e51b8152602060048201526014602482015260008051602061454a833981519152604482015290519081900360640190fd5b612e2a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61408d565b90945092506000612e7c7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613295565b9050612e8a8b338388613706565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ee557600080fd5b505af1158015612ef9573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612f7e57600080fd5b505af1158015612f92573d6000803e3d6000fd5b505050506040513d6020811015612fa857600080fd5b5051612fb057fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561300857600080fd5b505af115801561301c573d6000803e3d6000fd5b505050506040513d602081101561303257600080fd5b505192503484101561304a5761304a338534036134d7565b505096509650969350505050565b60008084116130985760405162461bcd60e51b81526004018080602001828103825260278152602001806144dd6027913960400191505060405180910390fd5b6000831180156130a85750600082115b6130e35760405162461bcd60e51b815260040180806020018281038252602481526020018061461b6024913960400191505060405180910390fd5b60006130f7856103e663ffffffff61430116565b9050600061310b828563ffffffff61430116565b9050600061313183613125886103e863ffffffff61430116565b9063ffffffff61436d16565b905080828161313c57fe5b04979650505050505050565b60606002825110156131a1576040805162461bcd60e51b815260206004820152601a60248201527f4c796469614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff811180156131b957600080fd5b506040519080825280602002602001820160405280156131e3578160200160208202803683370190505b50905082816001835103815181106131f757fe5b60209081029190910101528151600019015b801561328d576000806132468786600186038151811061322557fe5b602002602001015187868151811061323957fe5b60200260200101516143c5565b9150915061326884848151811061325957fe5b60200260200101518383613e13565b84600185038151811061327757fe5b6020908102919091010152505060001901613209565b509392505050565b60008060006132a48585613faf565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f47cc4f3a5e7a237c464e09c6758ac645084f198b8f64eedc923317ac4481a10c609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106133ea5780518252601f1990920191602091820191016133cb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461344c576040519150601f19603f3d011682016040523d82523d6000602084013e613451565b606091505b509150915081801561347f57508051158061347f575080806020019051602081101561347c57600080fd5b50515b6134d0576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106135235780518252601f199092019160209182019101613504565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613585576040519150601f19603f3d011682016040523d82523d6000602084013e61358a565b606091505b50509050806135ca5760405162461bcd60e51b81526004018080602001828103825260248152602001806145266024913960400191505060405180910390fd5b505050565b6060600282511015613628576040805162461bcd60e51b815260206004820152601a60248201527f4c796469614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561364057600080fd5b5060405190808252806020026020018201604052801561366a578160200160208202803683370190505b509050828160008151811061367b57fe5b60200260200101818152505060005b600183510381101561328d576000806136c0878685815181106136a957fe5b602002602001015187866001018151811061323957fe5b915091506136e28484815181106136d357fe5b60200260200101518383613058565b8484600101815181106136f157fe5b6020908102919091010152505060010161368a565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061378b5780518252601f19909201916020918201910161376c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146137ed576040519150601f19603f3d011682016040523d82523d6000602084013e6137f2565b606091505b5091509150818015613820575080511580613820575080806020019051602081101561381d57600080fd5b50515b61385b5760405162461bcd60e51b81526004018080602001828103825260248152602001806145f76024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015613aa35760008084838151811061388157fe5b602002602001015185846001018151811061389857fe5b60200260200101519150915060006138b08383613faf565b50905060008785600101815181106138c457fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146138f2578260006138f6565b6000835b91509150600060028a5103881061390d578861394e565b61394e7f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061394157fe5b6020026020010151613295565b905061397b7f00000000000000000000000000000000000000000000000000000000000000008888613295565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156139b8576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613a29578181015183820152602001613a11565b50505050905090810190601f168015613a565780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613a7857600080fd5b505af1158015613a8c573d6000803e3d6000fd5b505060019099019850613866975050505050505050565b50505050565b60005b60018351038110156135ca57600080848381518110613ac757fe5b6020026020010151858460010181518110613ade57fe5b6020026020010151915091506000613af68383613faf565b5090506000613b267f00000000000000000000000000000000000000000000000000000000000000008585613295565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613b6757600080fd5b505afa158015613b7b573d6000803e3d6000fd5b505050506040513d6060811015613b9157600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a811690891614613bce578284613bd1565b83835b91509150613c2f828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561144457600080fd5b9550613c3c868383613058565b945050505050600080856001600160a01b0316886001600160a01b031614613c6657826000613c6a565b6000835b91509150600060028c51038a10613c81578a613cb5565b613cb57f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061394157fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613d3f578181015183820152602001613d27565b50505050905090810190601f168015613d6c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613d8e57600080fd5b505af1158015613da2573d6000803e3d6000fd5b50506001909b019a50613aac9950505050505050505050565b80820382811115610d1c576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411613e535760405162461bcd60e51b81526004018080602001828103825260288152602001806144b56028913960400191505060405180910390fd5b600083118015613e635750600082115b613e9e5760405162461bcd60e51b815260040180806020018281038252602481526020018061461b6024913960400191505060405180910390fd5b6000613ec26103e8613eb6868863ffffffff61430116565b9063ffffffff61430116565b90506000613edc6103e6613eb6868963ffffffff613dbb16565b9050613ef96001828481613eec57fe5b049063ffffffff61436d16565b9695505050505050565b6000808411613f435760405162461bcd60e51b81526004018080602001828103825260218152602001806145d66021913960400191505060405180910390fd5b600083118015613f535750600082115b613f8e5760405162461bcd60e51b815260040180806020018281038252602481526020018061461b6024913960400191505060405180910390fd5b82613f9f858463ffffffff61430116565b81613fa657fe5b04949350505050565b600080826001600160a01b0316846001600160a01b031614156140035760405162461bcd60e51b81526004018080602001828103825260218152602001806144946021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610614023578284614026565b83835b90925090506001600160a01b038216614086576040805162461bcd60e51b815260206004820152601a60248201527f4c796469614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561410757600080fd5b505afa15801561411b573d6000803e3d6000fd5b505050506040513d602081101561413157600080fd5b50516001600160a01b031614156141e457604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156141b757600080fd5b505af11580156141cb573d6000803e3d6000fd5b505050506040513d60208110156141e157600080fd5b50505b6000806142127f00000000000000000000000000000000000000000000000000000000000000008b8b6143c5565b91509150816000148015614224575080155b15614234578793508692506142f4565b6000614241898484613f03565b905087811161429457858110156142895760405162461bcd60e51b815260040180806020018281038252602281526020018061458d6022913960400191505060405180910390fd5b8894509250826142f2565b60006142a1898486613f03565b9050898111156142ad57fe5b878110156142ec5760405162461bcd60e51b81526004018080602001828103825260228152602001806145046022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061431c5750508082028282828161431957fe5b04145b610d1c576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820182811015610d1c576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006143d48585613faf565b5090506000806143e5888888613295565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561441d57600080fd5b505afa158015614431573d6000803e3d6000fd5b505050506040513d606081101561444757600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614614481578082614484565b81815b9099909850965050505050505056fe4c796469614c6962726172793a204944454e544943414c5f4144445245535345534c796469614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544c796469614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544c79646961526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a20415641585f5452414e534645525f4641494c45444c79646961526f757465723a20455850495245440000000000000000000000004c79646961526f757465723a204558434553534956455f494e5055545f414d4f554e544c79646961526f757465723a20494e53554646494349454e545f425f414d4f554e544c79646961526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544c796469614c6962726172793a20494e53554646494349454e545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c45444c796469614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220df34901ad1d3702ee9ac02ff90bed48b4b1a0a62eda5922af7d4f8c5269600e964736f6c63430006060033000000000000000000000000e0c1bb6df4851feeedc3e14bd509feaf428f7655000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7

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

000000000000000000000000e0c1bb6df4851feeedc3e14bd509feaf428f7655000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7

-----Decoded View---------------
Arg [0] : _factory (address): 0xe0c1bb6df4851feeedc3e14bd509feaf428f7655
Arg [1] : _WAVAX (address): 0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e0c1bb6df4851feeedc3e14bd509feaf428f7655
Arg [1] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7


Deployed ByteCode Sourcemap

16281:18359:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16753:10;-1:-1:-1;;;;;16767:5:0;16753:19;;16746:27;;;;16281:18359;;12:1:-1;9;2:12;33600:258:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33600:258:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33600:258:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;34388:249;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34388:249:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;34388:249:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;34388:249:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34388:249:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34388:249:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34388:249:0;;-1:-1:-1;34388:249:0;;-1:-1:-1;;;;;34388:249:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;34388:249:0;;;;;;;;;;;;;;;;;21545:669;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21545:669:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;21545:669:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22220:668;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22220:668:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22220:668:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20855:684::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20855:684:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;20855:684:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25237:616::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25237:616:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;25237:616:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;25237:616:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25237:616:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25237:616:0;;-1:-1:-1;25237:616:0;-1:-1:-1;;;;;;25237:616:0;;;;;;;;:::i;30965:706::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30965:706:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;30965:706:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;30965:706:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;30965:706:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;30965:706:0;;-1:-1:-1;30965:706:0;-1:-1:-1;;;;;;30965:706:0;;;;;;;;:::i;27975:839::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27975:839:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27975:839:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27975:839:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27975:839:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27975:839:0;;-1:-1:-1;27975:839:0;-1:-1:-1;;;;;;27975:839:0;;;;;;;;:::i;16407:39::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16407:39:0;;;:::i;:::-;;;;-1:-1:-1;;;;;16407:39:0;;;;;;;;;;;;;;22967:711;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22967:711:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22967:711:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;32527:837::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32527:837:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;32527:837:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;32527:837:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;32527:837:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;32527:837:0;;-1:-1:-1;32527:837:0;-1:-1:-1;;;;;;32527:837:0;;;;;;;;:::i;27152:817::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27152:817:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27152:817:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;27152:817:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27152:817:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27152:817:0;;-1:-1:-1;27152:817:0;-1:-1:-1;;;;;;27152:817:0;;;;;;;;:::i;33866:257::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33866:257:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33866:257:0;;;;;;;;;;;;:::i;25859:594::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25859:594:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;25859:594:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;25859:594:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25859:594:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25859:594:0;;-1:-1:-1;25859:594:0;-1:-1:-1;;;;;;25859:594:0;;;;;;;;:::i;28820:802::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;28820:802:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;28820:802:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;28820:802:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;28820:802:0;;-1:-1:-1;28820:802:0;-1:-1:-1;;;;;;28820:802:0;;;;;;;;:::i;23684:717::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23684:717:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23684:717:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26459:687::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;26459:687:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;26459:687:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26459:687:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26459:687:0;;-1:-1:-1;26459:687:0;-1:-1:-1;;;;;;26459:687:0;;;;;;;;:::i;33408:184::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33408:184:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33408:184:0;;;;;;;;;;;;:::i;20008:841::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20008:841:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;20008:841:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16359:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16359:41:0;;;:::i;31677:844::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;31677:844:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;31677:844:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;31677:844:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31677:844:0;;-1:-1:-1;31677:844:0;-1:-1:-1;;;;;;31677:844:0;;;;;;;;:::i;34131:249::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34131:249:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;34131:249:0;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;34131:249:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34131:249:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34131:249:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34131:249:0;;-1:-1:-1;34131:249:0;;-1:-1:-1;;;;;34131:249:0:i;18246:730::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18246:730:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;18246:730:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;18982:983;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;18982:983:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;33600:258::-;33753:14;33792:58;33818:8;33828:9;33839:10;33792:25;:58::i;:::-;33785:65;33600:258;-1:-1:-1;;;;33600:258:0:o;34388:249::-;34532:21;34578:51;34604:7;34613:9;34624:4;34578:25;:51::i;:::-;34571:58;;34388:249;;;;;:::o;21545:669::-;21851:12;21865;21890;21905:45;21926:7;21935:6;21943;21905:20;:45::i;:::-;21890:60;;21961:10;21974;:33;;21998:9;21974:33;;;-1:-1:-1;;21974:33:0;22018:76;;;-1:-1:-1;;;22018:76:0;;22042:10;22018:76;;;;22062:4;22018:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21961:46;;-1:-1:-1;;;;;;22018:23:0;;;;;:76;;;;;-1:-1:-1;;22018:76:0;;;;;;;;-1:-1:-1;22018:23:0;:76;;;2:2:-1;;;;27:1;24;17:12;2:2;22018:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22018:76:0;;;;22126:80;22142:6;22150;22158:9;22169:10;22181;22193:2;22197:8;22126:15;:80::i;:::-;22105:101;;;;;;;;21545:669;;;;;;;;;;;;;;;;:::o;22220:668::-;22511:16;22529:15;22557:12;22572:43;22593:7;22602:5;22609;22572:20;:43::i;:::-;22557:58;;22626:10;22639;:33;;22663:9;22639:33;;;-1:-1:-1;;22639:33:0;22683:76;;;-1:-1:-1;;;22683:76:0;;22707:10;22683:76;;;;22727:4;22683:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22626:46;;-1:-1:-1;;;;;;22683:23:0;;;;;:76;;;;;-1:-1:-1;;22683:76:0;;;;;;;;-1:-1:-1;22683:23:0;:76;;;2:2:-1;;;;27:1;24;17:12;2:2;22683:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22683:76:0;;;;22798:82;22818:5;22825:9;22836:14;22852:13;22867:2;22871:8;22798:19;:82::i;:::-;22770:110;;;;-1:-1:-1;22220:668:0;-1:-1:-1;;;;;;;;;;;;;22220:668:0:o;20855:684::-;21094:16;21112:15;21075:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;21168:198:::1;21198:5;21218;21238:9;21262:14;21291:13;21327:4;21347:8;21168:15;:198::i;:::-;21140:226:::0;;-1:-1:-1;21140:226:0;-1:-1:-1;21377:51:0::1;21405:5:::0;21412:2;21140:226;21377:27:::1;:51::i;:::-;21446:5;-1:-1:-1::0;;;;;21439:22:0::1;;21462:10;21439:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21439:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21439:34:0;;;;21484:47;21516:2;21520:10;21484:31;:47::i;:::-;20855:684:::0;;;;;;;;;;:::o;25237:616::-;25461:21;25442:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;25505:51:::1;25532:7;25541:8;25551:4;;25505:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;25505:26:0::1;::::0;-1:-1:-1;;;25505:51:0:i:1;:::-;25495:61;;25606:12;25575:7;25600:1;25583:7;:14;:18;25575:27;;;;;;;;;;;;;;:43;;25567:95;;;;-1:-1:-1::0;;;25567:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25673:137;25719:4;;25724:1;25719:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;25719:7:0::1;25728:10;25740:47;25761:7;25770:4;;25775:1;25770:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;25770:7:0::1;25779:4;;25784:1;25779:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;25779:7:0::1;25740:20;:47::i;:::-;25789:7;25797:1;25789:10;;;;;;;;;;;;;;25673:31;:137::i;:::-;25821:24;25827:7;25836:4;;25821:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;25842:2:0;;-1:-1:-1;25821:5:0::1;::::0;-1:-1:-1;;25821:24:0:i:1;:::-;25237:616:::0;;;;;;;;;:::o;30965:706::-;31199:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;31220:135:::1;31266:4;;31271:1;31266:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31266:7:0::1;31275:10;31287:47;31308:7;31317:4;;31322:1;31317:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31317:7:0::1;31326:4;;31331:1;31326:7;;;;;;31287:47;31336:8;31220:31;:135::i;:::-;31366:18;31394:4:::0;;-1:-1:-1;;31399:15:0;;31394:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31394:21:0::1;-1:-1:-1::0;;;;;31387:39:0::1;;31427:2;31387:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;31387:43:0::1;-1:-1:-1::0;;;;;31387:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31387:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31387:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;31387:43:0;31441:44:::1;::::0;;31387:43:::1;31441:44:::0;;::::1;::::0;;;;;;;;;;;31387:43;;-1:-1:-1;31441:44:0::1;::::0;;;31476:4;;;;;;31441:44;::::1;::::0;31476:4;;31441:44;31476:4;31441:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;31482:2:0;;-1:-1:-1;31441:34:0::1;::::0;-1:-1:-1;;31441:44:0:i:1;:::-;31584:12:::0;31518:62:::1;31566:13:::0;31525:4;;-1:-1:-1;;31530:15:0;;31525:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31525:21:0::1;-1:-1:-1::0;;;;;31518:39:0::1;;31558:2;31518:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;31518:43:0::1;-1:-1:-1::0;;;;;31518:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31518:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31518:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;31518:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;31496:167;;;;-1:-1:-1::0;;;31496:167:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16568:1;30965:706:::0;;;;;;;:::o;27975:839::-;28190:21;28162:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28262:5:0::1;28237:30;:4:::0;;-1:-1:-1;;28242:15:0;;28237:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28237:21:0::1;-1:-1:-1::0;;;;;28237:30:0::1;;28229:68;;;::::0;;-1:-1:-1;;;28229:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;28229:68:0;;;;;;;;;;;;;::::1;;28318:51;28345:7;28354:8;28364:4;;28318:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28318:26:0::1;::::0;-1:-1:-1;;;28318:51:0:i:1;:::-;28308:61;;28419:12;28388:7;28413:1;28396:7;:14;:18;28388:27;;;;;;;;;;;;;;:43;;28380:95;;;;-1:-1:-1::0;;;28380:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28486:137;28532:4;;28537:1;28532:7;;;;;;28486:137;28634:35;28640:7;28649:4;;28634:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28663:4:0::1;::::0;-1:-1:-1;28634:5:0::1;::::0;-1:-1:-1;;28634:35:0:i:1;:::-;28687:5;-1:-1:-1::0;;;;;28680:22:0::1;;28703:7;28728:1;28711:7;:14;:18;28703:27;;;;;;;;;;;;;;28680:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;28680:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28680:51:0;;;;28742:64;28774:2;28778:7;28803:1;28786:7;:14;:18;28778:27;;;;;;;;;;;;;;28742:31;:64::i;16407:39::-:0;;;:::o;22967:711::-;23235:15;23216:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;23280:198:::1;23310:5;23330;23350:9;23374:14;23403:13;23439:4;23459:8;23280:15;:198::i;:::-;23528:38;::::0;;-1:-1:-1;;;23528:38:0;;23560:4:::1;23528:38;::::0;::::1;::::0;;;23263:215;;-1:-1:-1;23489:78:0::1;::::0;-1:-1:-1;23517:5:0;;23524:2;;-1:-1:-1;;;;;23528:23:0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;23528:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23528:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;23528:38:0;23489:27:::1;:78::i;:::-;23585:5;-1:-1:-1::0;;;;;23578:22:0::1;;23601:10;23578:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23578:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23578:34:0;;;;23623:47;23655:2;23659:10;23623:31;:47::i;32527:837::-:0;32795:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32854:5:0::1;32829:30;:4:::0;;-1:-1:-1;;32834:15:0;;32829:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32829:21:0::1;-1:-1:-1::0;;;;;32829:30:0::1;;32821:68;;;::::0;;-1:-1:-1;;;32821:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;32821:68:0;;;;;;;;;;;;;::::1;;32900:135;32946:4;;32951:1;32946:7;;;;;;32900:135;33046:55;33081:4;;33046:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;33095:4:0::1;::::0;-1:-1:-1;33046:34:0::1;::::0;-1:-1:-1;;33046:55:0:i:1;:::-;33129:38;::::0;;-1:-1:-1;;;33129:38:0;;33161:4:::1;33129:38;::::0;::::1;::::0;;;33112:14:::1;::::0;-1:-1:-1;;;;;33136:5:0::1;33129:23;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;33129:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33129:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;33129:38:0;;-1:-1:-1;33186:25:0;;::::1;;33178:77;;;;-1:-1:-1::0;;;33178:77:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33273:5;-1:-1:-1::0;;;;;33266:22:0::1;;33289:9;33266:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;33266:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33266:33:0;;;;33310:46;33342:2;33346:9;33310:31;:46::i;27152:817::-:0;27367:21;27339:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27439:5:0::1;27414:30;:4:::0;;-1:-1:-1;;27419:15:0;;27414:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27414:21:0::1;-1:-1:-1::0;;;;;27414:30:0::1;;27406:68;;;::::0;;-1:-1:-1;;;27406:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;27406:68:0;;;;;;;;;;;;;::::1;;27495:51;27521:7;27530:9;27541:4;;27495:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27495:25:0::1;::::0;-1:-1:-1;;;27495:51:0:i:1;:::-;27485:61;;27579:11;27565:7;27573:1;27565:10;;;;;;;;;;;;;;:25;;27557:73;;;;-1:-1:-1::0;;;27557:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33866:257:::0;34019:13;34057:58;34082:9;34093;34104:10;34057:24;:58::i;25859:594::-;26083:21;26064:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;26127:51:::1;26153:7;26162:9;26173:4;;26127:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26127:25:0::1;::::0;-1:-1:-1;;;26127:51:0:i:1;:::-;26117:61;;26211:11;26197:7;26205:1;26197:10;;;;;;;;;;;;;;:25;;26189:73;;;;-1:-1:-1::0;;;26189:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28820:802:::0;29034:21;29006:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;29092:5:::1;-1:-1:-1::0;;;;;29081:16:0::1;:4;;29086:1;29081:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29081:7:0::1;-1:-1:-1::0;;;;;29081:16:0::1;;29073:54;;;::::0;;-1:-1:-1;;;29073:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;29073:54:0;;;;;;;;;;;;;::::1;;29148:51;29174:7;29183:9;29194:4;;29148:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29148:25:0::1;::::0;-1:-1:-1;;;29148:51:0:i:1;:::-;29138:61;;29232:9;29218:7;29226:1;29218:10;;;;;;;;;;;;;;:23;;29210:71;;;;-1:-1:-1::0;;;29210:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29299:5;-1:-1:-1::0;;;;;29292:21:0::1;;29321:7;29329:1;29321:10;;;;;;;;;;;;;;29292:42;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29292:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29292:42:0;;;;;29359:5;-1:-1:-1::0;;;;;29352:22:0::1;;29375:47;29396:7;29405:4;;29410:1;29405:7;;;;;;29375:47;29424:7;29432:1;29424:10;;;;;;;;;;;;;;29352:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;29352:83:0::1;-1:-1:-1::0;;;;;29352:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29352:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29352:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;29352:83:0;29345:91:::1;;;;29447:24;29453:7;29462:4;;29447:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29468:2:0;;-1:-1:-1;29447:5:0::1;::::0;-1:-1:-1;;29447:24:0:i:1;:::-;29535:7;29543:1;29535:10;;;;;;;;;;;;;;29523:9;:22;29519:95;;;29547:67;29579:10;29603:7;29611:1;29603:10;;;;;;;;;;;;;;29591:9;:22;29547:31;:67::i;:::-;28820:802:::0;;;;;;;;:::o;23684:717::-;24004:15;24032:12;24047:43;24068:7;24077:5;24084;24047:20;:43::i;:::-;24032:58;;24101:10;24114;:33;;24138:9;24114:33;;;-1:-1:-1;;24114:33:0;24158:76;;;-1:-1:-1;;;24158:76:0;;24182:10;24158:76;;;;24202:4;24158:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24101:46;;-1:-1:-1;;;;;;24158:23:0;;;;;:76;;;;;-1:-1:-1;;24158:76:0;;;;;;;;-1:-1:-1;24158:23:0;:76;;;2:2:-1;;;;27:1;24;17:12;2:2;24158:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24158:76:0;;;;24258:135;24321:5;24328:9;24339:14;24355:13;24370:2;24374:8;24258:48;:135::i;:::-;24245:148;23684:717;-1:-1:-1;;;;;;;;;;;;;23684:717:0:o;26459:687::-;26676:21;26648:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;26734:5:::1;-1:-1:-1::0;;;;;26723:16:0::1;:4;;26728:1;26723:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26723:7:0::1;-1:-1:-1::0;;;;;26723:16:0::1;;26715:54;;;::::0;;-1:-1:-1;;;26715:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;26715:54:0;;;;;;;;;;;;;::::1;;26790:52;26817:7;26826:9;26837:4;;26790:52;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26790:26:0::1;::::0;-1:-1:-1;;;26790:52:0:i:1;:::-;26780:62;;26892:12;26861:7;26886:1;26869:7;:14;:18;26861:27;;;;;;;;;;;;;;:43;;26853:95;;;;-1:-1:-1::0;;;26853:95:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26966:5;-1:-1:-1::0;;;;;26959:21:0::1;;26988:7;26996:1;26988:10;;;;;;;;;;;;;;26959:42;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;26959:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;26959:42:0;;;;;27026:5;-1:-1:-1::0;;;;;27019:22:0::1;;27042:47;27063:7;27072:4;;27077:1;27072:7;;;;;;27042:47;27091:7;27099:1;27091:10;;;;;;;;;;;;;;27019:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;27019:83:0::1;-1:-1:-1::0;;;;;27019:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27019:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27019:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27019:83:0;27012:91:::1;;;;27114:24;27120:7;27129:4;;27114:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27135:2:0;;-1:-1:-1;27114:5:0::1;::::0;-1:-1:-1;;27114:24:0:i:1;33408:184::-:0;33505:12;33537:47;33556:7;33565:8;33575;33537:18;:47::i;20008:841::-;20262:12;20276;20243:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;20301:12:::1;20316:45;20337:7;20346:6;20354;20316:20;:45::i;:::-;20372:58;::::0;;-1:-1:-1;;;20372:58:0;;20402:10:::1;20372:58;::::0;::::1;::::0;-1:-1:-1;;;;;20372:29:0;::::1;:58:::0;;;;;;;;;;;;;;20301:60;;-1:-1:-1;20372:29:0;;::::1;::::0;:58;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;20372:29:0;:58;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20372:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20372:58:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;20498:25:0::1;::::0;;-1:-1:-1;;;20498:25:0;;-1:-1:-1;;;;;20498:25:0;;::::1;;::::0;::::1;::::0;;;20468:12:::1;::::0;;;20498:21;;::::1;::::0;::::1;::::0;:25;;;;;;;;;;;20468:12;20498:21;:25;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20498:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20498:25:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20498:25:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;20498:25:0;-1:-1:-1;20535:14:0::1;20554:39;20578:6:::0;20586;20554:23:::1;:39::i;:::-;20534:59;;;20635:6;-1:-1:-1::0;;;;;20625:16:0::1;:6;-1:-1:-1::0;;;;;20625:16:0::1;;:58;;20666:7;20675;20625:58;;;20645:7;20654;20625:58;20604:79:::0;;-1:-1:-1;20604:79:0;-1:-1:-1;20702:21:0;;::::1;;20694:68;;;;-1:-1:-1::0;;;20694:68:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20792:10;20781:7;:21;;20773:68;;;;-1:-1:-1::0;;;20773:68:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16568:1;;;;20008:841:::0;;;;;;;;;;;:::o;16359:41::-;;;:::o;31677:844::-;31938:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;31983:5:::1;-1:-1:-1::0;;;;;31972:16:0::1;:4;;31977:1;31972:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31972:7:0::1;-1:-1:-1::0;;;;;31972:16:0::1;;31964:54;;;::::0;;-1:-1:-1;;;31964:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31964:54:0;;;;;;;;;;;;;::::1;;32029:13;32045:9;32029:25;;32072:5;-1:-1:-1::0;;;;;32065:21:0::1;;32094:8;32065:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32065:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32065:40:0;;;;;32130:5;-1:-1:-1::0;;;;;32123:22:0::1;;32146:47;32167:7;32176:4;;32181:1;32176:7;;;;;;32146:47;32195:8;32123:81;;;;;;;;;;;;;-1:-1:-1::0;;;;;32123:81:0::1;-1:-1:-1::0;;;;;32123:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32123:81:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32123:81:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32123:81:0;32116:89:::1;;;;32216:18;32244:4:::0;;-1:-1:-1;;32249:15:0;;32244:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32244:21:0::1;-1:-1:-1::0;;;;;32237:39:0::1;;32277:2;32237:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32237:43:0::1;-1:-1:-1::0;;;;;32237:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32237:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32237:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32237:43:0;32291:44:::1;::::0;;32237:43:::1;32291:44:::0;;::::1;::::0;;;;;;;;;;;32237:43;;-1:-1:-1;32291:44:0::1;::::0;;;32326:4;;;;;;32291:44;::::1;::::0;32326:4;;32291:44;32326:4;32291:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;32332:2:0;;-1:-1:-1;32291:34:0::1;::::0;-1:-1:-1;;32291:44:0:i:1;:::-;32434:12:::0;32368:62:::1;32416:13:::0;32375:4;;-1:-1:-1;;32380:15:0;;32375:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32375:21:0::1;-1:-1:-1::0;;;;;32368:39:0::1;;32408:2;32368:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32368:43:0::1;-1:-1:-1::0;;;;;32368:43:0::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;34131:249:0::0;34275:21;34321:51;34348:7;34357:8;34367:4;34321:26;:51::i;18246:730::-;18534:12;18548;18562:14;18515:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;18610:85:::1;18624:6;18632;18640:14;18656;18672:10;18684;18610:13;:85::i;:::-;18589:106:::0;;-1:-1:-1;18589:106:0;-1:-1:-1;18706:12:0::1;18721:45;18742:7;18751:6:::0;18759;18721:20:::1;:45::i;:::-;18706:60;;18777:66;18809:6;18817:10;18829:4;18835:7;18777:31;:66::i;:::-;18854;18886:6;18894:10;18906:4;18912:7;18854:31;:66::i;:::-;18954:4;-1:-1:-1::0;;;;;18943:21:0::1;;18965:2;18943:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;18943:25:0::1;-1:-1:-1::0;;;;;18943:25:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18943:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18943:25:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18943:25:0;18246:730;;;;-1:-1:-1;18943:25:0;;-1:-1:-1;18246:730:0;;-1:-1:-1;;;;;;;;;18246:730:0:o;18982:983::-;19237:16;19255:15;19272:14;19218:8;16517:15;16505:8;:27;;16497:60;;;;;-1:-1:-1;;;16497:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;16497:60:0;;;;;;;;;;;;;;;19327:178:::1;19355:5;19375;19395:18;19428:9;19452:14;19481:13;19327;:178::i;:::-;19299:206:::0;;-1:-1:-1;19299:206:0;-1:-1:-1;19516:12:0::1;19531:43;19552:7;19561:5:::0;19568::::1;19531:20;:43::i;:::-;19516:58;;19585:69;19617:5;19624:10;19636:4;19642:11;19585:31;:69::i;:::-;19672:5;-1:-1:-1::0;;;;;19665:21:0::1;;19694:10;19665:42;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19665:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19665:42:0;;;;;19732:5;-1:-1:-1::0;;;;;19725:22:0::1;;19748:4;19754:10;19725:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;19725:40:0::1;-1:-1:-1::0;;;;;19725:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19725:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19725:40:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19725:40:0;19718:48:::1;;;;19800:4;-1:-1:-1::0;;;;;19789:21:0::1;;19811:2;19789:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;19789:25:0::1;-1:-1:-1::0;;;;;19789:25:0::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19789:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19789:25:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19789:25:0;;-1:-1:-1;19866:9:0::1;:22:::0;-1:-1:-1;19862:95:0::1;;;19890:67;19922:10;19946;19934:9;:22;19890:31;:67::i;:::-;16568:1;18982:983:::0;;;;;;;;;;;:::o;12768:509::-;12861:14;12907:1;12896:8;:12;12888:64;;;;-1:-1:-1;;;12888:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12983:1;12971:9;:13;:31;;;;;13001:1;12988:10;:14;12971:31;12963:80;;;;-1:-1:-1;;;12963:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13054:20;13077:17;:8;13090:3;13077:17;:12;:17;:::i;:::-;13054:40;-1:-1:-1;13105:14:0;13122:31;13054:40;13142:10;13122:31;:19;:31;:::i;:::-;13105:48;-1:-1:-1;13164:16:0;13183:40;13207:15;13183:19;:9;13197:4;13183:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;13164:59;;13258:11;13246:9;:23;;;;;;;12768:509;-1:-1:-1;;;;;;;12768:509:0:o;14532:528::-;14633:21;14690:1;14675:4;:11;:16;;14667:55;;;;;-1:-1:-1;;;14667:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14754:4;:11;14743:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14743:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;14743:23:0;;14733:33;;14807:9;14777:7;14802:1;14785:7;:14;:18;14777:27;;;;;;;;;;;;;;;;;:39;14841:11;;-1:-1:-1;;14841:15:0;14827:226;14858:5;;14827:226;;14886:14;14902:15;14921:42;14933:7;14942:4;14951:1;14947;:5;14942:11;;;;;;;;;;;;;;14955:4;14960:1;14955:7;;;;;;;;;;;;;;14921:11;:42::i;:::-;14885:78;;;;14995:46;15007:7;15015:1;15007:10;;;;;;;;;;;;;;15019:9;15030:10;14995:11;:46::i;:::-;14978:7;14990:1;14986;:5;14978:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;14865:3:0;14827:226;;;;14532:528;;;;;:::o;11297:478::-;11386:12;11412:14;11428;11446:26;11457:6;11465;11446:10;:26::i;:::-;11610:32;;;-1:-1:-1;;11610:32:0;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;11610:32:0;;;;;11600:43;;;;;;11513:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11513:251:0;;;;;;;11503:262;;;;;;;;;11297:478;-1:-1:-1;;;;;11297:478:0:o;1419:361::-;1614:45;;;-1:-1:-1;;;;;1614:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1614:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1603:57:0;;;;1568:12;;1582:17;;1603:10;;;;1614:45;1603:57;;;25:18:-1;1603:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1603:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1567:93:0;;;;1679:7;:57;;;;-1:-1:-1;1691:11:0;;:16;;:44;;;1722:4;1711:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1711:24:0;1691:44;1671:101;;;;;-1:-1:-1;;;1671:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1419:361;;;;;:::o;2198:197::-;2307:12;;;2269;2307;;;;;;;;;-1:-1:-1;;;;;2286:7:0;;;2300:5;;2286:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2286:34:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2268:52:0;;;2339:7;2331:56;;;;-1:-1:-1;;;2331:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:197;;;:::o;13944:507::-;14045:21;14102:1;14087:4;:11;:16;;14079:55;;;;;-1:-1:-1;;;14079:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14166:4;:11;14155:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14155:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;14155:23:0;;14145:33;;14202:8;14189:7;14197:1;14189:10;;;;;;;;;;;;;:21;;;;;14226:6;14221:223;14252:1;14238:4;:11;:15;14234:1;:19;14221:223;;;14276:14;14292:15;14311:42;14323:7;14332:4;14337:1;14332:7;;;;;;;;;;;;;;14341:4;14346:1;14350;14346:5;14341:11;;;;;;;14311:42;14275:78;;;;14385:47;14398:7;14406:1;14398:10;;;;;;;;;;;;;;14410:9;14421:10;14385:12;:47::i;:::-;14368:7;14376:1;14380;14376:5;14368:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;14255:3:0;;14221:223;;1788:402;2013:51;;;-1:-1:-1;;;;;2013:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2013:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2002:63:0;;;;1967:12;;1981:17;;2002:10;;;;2013:51;2002:63;;;25:18:-1;2002:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2002:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1966:99:0;;;;2084:7;:57;;;;-1:-1:-1;2096:11:0;;:16;;:44;;;2127:4;2116:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2116:24:0;2096:44;2076:106;;;;-1:-1:-1;;;2076:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1788:402;;;;;;:::o;24512:719::-;24619:6;24614:610;24645:1;24631:4;:11;:15;24627:1;:19;24614:610;;;24669:13;24684:14;24703:4;24708:1;24703:7;;;;;;;;;;;;;;24712:4;24717:1;24721;24717:5;24712:11;;;;;;;;;;;;;;24668:56;;;;24740:14;24759:38;24783:5;24790:6;24759:23;:38::i;:::-;24739:58;;;24812:14;24829:7;24837:1;24841;24837:5;24829:14;;;;;;;;;;;;;;24812:31;;24859:15;24876;24904:6;-1:-1:-1;;;;;24895:15:0;:5;-1:-1:-1;;;;;24895:15:0;;:61;;24937:9;24953:1;24895:61;;;24919:1;24923:9;24895:61;24858:98;;;;24971:10;25002:1;24988:4;:11;:15;24984:1;:19;:78;;25059:3;24984:78;;;25006:50;25027:7;25036:6;25044:4;25049:1;25053;25049:5;25044:11;;;;;;;;;;;;;;25006:20;:50::i;:::-;24971:91;;25088:44;25109:7;25118:5;25125:6;25088:20;:44::i;:::-;-1:-1:-1;;;;;25077:61:0;;25157:10;25169;25181:2;25195:1;25185:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;25185:12:0;87:42:-1;143:17;;-1:-1;25185:12:0;;25077:135;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25077:135:0;-1:-1:-1;;;;;25077:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25077:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25077:135:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;24648:3:0;;;;;-1:-1:-1;24614:610:0;;-1:-1:-1;;;;;;;;24614:610:0;;;24512:719;;;:::o;29769:1190::-;29882:6;29877:1075;29908:1;29894:4;:11;:15;29890:1;:19;29877:1075;;;29932:13;29947:14;29966:4;29971:1;29966:7;;;;;;;;;;;;;;29975:4;29980:1;29984;29980:5;29975:11;;;;;;;;;;;;;;29931:56;;;;30003:14;30022:38;30046:5;30053:6;30022:23;:38::i;:::-;30002:58;;;30075:15;30104:44;30125:7;30134:5;30141:6;30104:20;:44::i;:::-;30075:74;;30164:16;30195:17;30283:13;30298;30316:4;-1:-1:-1;;;;;30316:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30316:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30316:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30316:18:0;;;;;;;30282:52;;;;;-1:-1:-1;30282:52:0;;-1:-1:-1;30350:17:0;;-1:-1:-1;;;;;30391:15:0;;;;;;;:61;;30433:8;30443;30391:61;;;30410:8;30420;30391:61;30349:103;;;;30481:56;30524:12;30488:5;-1:-1:-1;;;;;30481:23:0;;30513:4;30481:38;;;;;;;;;;;;;-1:-1:-1;;;;;30481:38:0;-1:-1:-1;;;;;30481:38:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;30481:56:0;30467:70;;30567:67;30593:11;30606:12;30620:13;30567:25;:67::i;:::-;30552:82;;29877:1075;;;;30665:15;30682;30710:6;-1:-1:-1;;;;;30701:15:0;:5;-1:-1:-1;;;;;30701:15:0;;:67;;30746:12;30765:1;30701:67;;;30725:1;30729:12;30701:67;30664:104;;;;30783:10;30814:1;30800:4;:11;:15;30796:1;:19;:78;;30871:3;30796:78;;;30818:50;30839:7;30848:6;30856:4;30861:1;30865;30861:5;30856:11;;;;;;;30818:50;30927:12;;;30937:1;30927:12;;;;;;;;;;-1:-1:-1;;;30889:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;30889:51:0;;;;;;;;;;;;;;;;;;;;;;30783:91;;-1:-1:-1;30889:9:0;;;;;;30899:10;;30911;;30783:91;;30927:12;;30889:51;;;;;;;;30927:12;;30889:51;;;;30927:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30889:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30889:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;29911:3:0;;;;;-1:-1:-1;29877:1075:0;;-1:-1:-1;;;;;;;;;;29877:1075:0;10339:129;10423:5;;;10418:16;;;;10410:50;;;;;-1:-1:-1;;;10410:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13398:464;13491:13;13537:1;13525:9;:13;13517:66;;;;-1:-1:-1;;;13517:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13614:1;13602:9;:13;:31;;;;;13632:1;13619:10;:14;13602:31;13594:80;;;;-1:-1:-1;;;13594:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13685:14;13702:34;13731:4;13702:24;:9;13716;13702:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;13685:51;-1:-1:-1;13747:16:0;13766:34;13796:3;13766:25;:10;13781:9;13766:25;:14;:25;:::i;:34::-;13747:53;;13822:32;13852:1;13835:11;13823:9;:23;;;;;;;13822:32;:29;:32;:::i;:::-;13811:43;13398:464;-1:-1:-1;;;;;;13398:464:0:o;12333:313::-;12415:12;12458:1;12448:7;:11;12440:57;;;;-1:-1:-1;;;12440:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12527:1;12516:8;:12;:28;;;;;12543:1;12532:8;:12;12516:28;12508:77;;;;-1:-1:-1;;;12508:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12630:8;12606:21;:7;12618:8;12606:21;:11;:21;:::i;:::-;:32;;;;;;;12333:313;-1:-1:-1;;;;12333:313:0:o;10864:341::-;10939:14;10955;11000:6;-1:-1:-1;;;;;10990:16:0;:6;-1:-1:-1;;;;;10990:16:0;;;10982:62;;;;-1:-1:-1;;;10982:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11083:6;-1:-1:-1;;;;;11074:15:0;:6;-1:-1:-1;;;;;11074:15:0;;:53;;11112:6;11120;11074:53;;;11093:6;11101;11074:53;11055:72;;-1:-1:-1;11055:72:0;-1:-1:-1;;;;;;11146:20:0;;11138:59;;;;;-1:-1:-1;;;11138:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10864:341;;;;;:::o;16878:1362::-;17191:46;;;-1:-1:-1;;;17191:46:0;;-1:-1:-1;;;;;17191:46:0;;;;;;;;;;;;;;;;17096:12;;;;;;17205:7;17191:30;;;;;;:46;;;;;;;;;;;;;;;:30;:46;;;2:2:-1;;;;27:1;24;17:12;2:2;17191:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17191:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17191:46:0;-1:-1:-1;;;;;17191:60:0;;17187:142;;;17268:49;;;-1:-1:-1;;;17268:49:0;;-1:-1:-1;;;;;17268:49:0;;;;;;;;;;;;;;;;17282:7;17268:33;;;;;;:49;;;;;;;;;;;;;;;-1:-1:-1;17268:33:0;:49;;;2:2:-1;;;;27:1;24;17:12;2:2;17268:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17268:49:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17187:142:0;17340:13;17355;17372:49;17397:7;17406:6;17414;17372:24;:49::i;:::-;17339:82;;;;17436:8;17448:1;17436:13;:30;;;;-1:-1:-1;17453:13:0;;17436:30;17432:801;;;17505:14;;-1:-1:-1;17521:14:0;;-1:-1:-1;17432:801:0;;;17569:19;17591:54;17610:14;17626:8;17636;17591:18;:54::i;:::-;17569:76;;17682:14;17664;:32;17660:562;;17743:10;17725:14;:28;;17717:75;;;;-1:-1:-1;;;17717:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17833:14;;-1:-1:-1;17849:14:0;-1:-1:-1;17849:14:0;17660:562;;;17905:19;17927:54;17946:14;17962:8;17972;17927:18;:54::i;:::-;17905:76;;18025:14;18007;:32;;18000:40;;;;18085:10;18067:14;:28;;18059:75;;;;-1:-1:-1;;;18059:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18175:14;-1:-1:-1;18191:14:0;;-1:-1:-1;17660:562:0;17432:801;;16878:1362;;;;;;;;;;;:::o;10476:142::-;10528:6;10555;;;:30;;-1:-1:-1;;10570:5:0;;;10584:1;10579;10570:5;10579:1;10565:15;;;;;:20;10555:30;10547:63;;;;;-1:-1:-1;;;10547:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10203:128;10287:5;;;10282:16;;;;10274:49;;;;;-1:-1:-1;;;10274:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11833:387;11926:13;11941;11968:14;11987:26;11998:6;12006;11987:10;:26::i;:::-;11967:46;;;12025:13;12040;12069:32;12077:7;12086:6;12094;12069:7;:32::i;:::-;-1:-1:-1;;;;;12058:56:0;;:58;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12058:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12058:58:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12058:58:0;;;;;;;12024:92;;;;;-1:-1:-1;12024:92:0;;-1:-1:-1;;;;;;12150:16:0;;;;;;;:62;;12193:8;12203;12150:62;;;12170:8;12180;12150:62;12127:85;;;;-1:-1:-1;11833:387:0;-1:-1:-1;;;;;;;11833:387:0:o

Swarm Source

ipfs://df34901ad1d3702ee9ac02ff90bed48b4b1a0a62eda5922af7d4f8c5269600e9
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.