Contract 0xd954551853f55deb4ae31407c423e67b1621424a

Contract Overview

BSCswap: Router
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0xb7d2d59505ff1a0aeb201d4b93ed59e053e95c2b07faf7c8776714c535fdeb1215795272020-10-22 23:49:296 secs ago0xd711538d3145b72a8f5aae0afabfb6e8f44be1d0 IN  BSCswap: Router0.003329001738425 BNB0.000670312
0xfd8a334ed1021002353fb7b87856093a77f0e0199a859f6fa59b5d3e3cbd96b515795262020-10-22 23:49:269 secs ago0xb94904eb5228a0ccea0e83179f931a4b9578b8d3 IN  BSCswap: Router0.05 BNB0.00220332
0x1fe1c245a1e1b82b31e73054c1babf80e44c5ebddecf5c7dbbe0dc3cca98da8415794972020-10-22 23:47:591 min ago0x84d4e21c1df2036f8d3fa74f7326390315f12b98 IN  BSCswap: Router0 BNB0.003982473
0xba62ef122e1bb834bda47e8d309197d07dae6094fe6c92920382812b547016fc15794912020-10-22 23:47:411 min ago0x369bdd26f8429ec038923b85ab92b9d21b51a99f IN  BSCswap: Router0 BNB0.002955523
0xc0b6c5d08e32c2a5eaba05943b6cb6116e4afacb2ae92c96b0b775a38da1d09015794852020-10-22 23:47:232 mins ago0x84d4e21c1df2036f8d3fa74f7326390315f12b98 IN  BSCswap: Router0 BNB0.000915032
0xc81b34c7f96b611d22ace7f384f59022ef124df3f6a91f43e05adfbd1536bc5515794832020-10-22 23:47:172 mins ago0x01cba3f295afaaba5fc66c6bcbfef97cfd3016ab IN  BSCswap: Router0.012154913354045 BNB0.004478077
0x61d6efc489a542b158a29c847abee5675e30dbf67394be7d7c07598f29081b8415794732020-10-22 23:46:472 mins ago0x971838439bdf0c473a2e1b5e1188d5b55f74e997 IN  BSCswap: Router0 BNB0.00261027
0x2936b0f0522a2bba31b7e59b64290fc3c2e52cd7125c810323cfbbbe927f9dca15794652020-10-22 23:46:233 mins ago0x54413c1c78bca25ba81345ec46213dec14d327c0 IN  BSCswap: Router0.009 BNB0.002533542
0x3bc4e913fc51355619ea512905719d271d55ae2a8786f38e04670aa2584efe6c15794362020-10-22 23:44:564 mins ago0x54413c1c78bca25ba81345ec46213dec14d327c0 IN  BSCswap: Router0.007 BNB0.002533542
0x7003adb33e7c24c976a411ed31bd61496ebb583e5ad35849084624f29c993c2e15794202020-10-22 23:44:085 mins ago0x54413c1c78bca25ba81345ec46213dec14d327c0 IN  BSCswap: Router0.005 BNB0.002878542
0x68a2a6c3393818a3e1e1173f8d7f6985b9d9810be898fb90711f4873635f644615793982020-10-22 23:43:026 mins ago0x05d28f44a72b931876f1dc47b604c9fe84fbf1a9 IN  BSCswap: Router0 BNB0.00227624
0x7120e6bdea1bed027070c87950148d6536c92f88f9afac985b963ce6f849bdbf15793962020-10-22 23:42:566 mins ago0x971838439bdf0c473a2e1b5e1188d5b55f74e997 IN  BSCswap: Router0 BNB0.002611351
0xcf285a5421cd63af7b4ad38eb37f56b74f8e40ec75803520fb0e7fc8864c0ce415793942020-10-22 23:42:506 mins ago0x380f88dc843bb3562c880785b707000c3b7621ca IN  BSCswap: Router0 BNB0.003572958
0xc1367639d3bfe3a3dc31547df65067869b0cf7fba3f11ab15319d221b1321a5b15793382020-10-22 23:40:029 mins ago0xcbff9be56f1d2b476e2118283b4a6cda85885d10 IN  BSCswap: Router0.3 BNB0.002533818
0x80ae66b589b48a5c90ff7f6c473ee92f68260c784ea64eafea3099f599f775b415793332020-10-22 23:39:479 mins ago0x5ba3750a16b1f63b2265a571bf8920e218f077a9 IN  BSCswap: Router0 BNB0.0022744
0xfafe44c335025636efe0e439f3eba78c5e1f7ace52b38990fb23bc591bf92e9515793212020-10-22 23:39:1110 mins ago0x6679248d0f109d6aa8c075e963f0b7cb2e38a261 IN  BSCswap: Router0.01 BNB0.004406846
0x6a4f8b1698a1f4c5711f46c4c150235cbc905718ab99565fe6ad10f67a77248615793192020-10-22 23:39:0510 mins ago0xcbff9be56f1d2b476e2118283b4a6cda85885d10 IN  BSCswap: Router0 BNB0.003971272
0xaac63f7186267846c6848bf9dc59cab67eb5e3c11e6f4dc7018c8b025b24fe5515792962020-10-22 23:37:5611 mins ago0x6679248d0f109d6aa8c075e963f0b7cb2e38a261 IN  BSCswap: Router0.05 BNB0.002534094
0x68ab90aef1ecda9691acd75be669c653866c9d8446eb37d77942e3530c6362f815792862020-10-22 23:37:2612 mins ago0x0108dc5a4a7d41220a2460b5a68efe4a8b9fd1dd IN  BSCswap: Router0.33312063 BNB0.00253437
0x93d8a34d97bdd33a108b8d999af8912f048e93027c20c910eb185f8c2760083f15792812020-10-22 23:37:1112 mins ago0x2269c513e37f736553d7ba6f5da01c007a480670 IN  BSCswap: Router0 BNB0.002610592
0xd8ed6fb1d808b1a9ec1702ed3fdbfa9ca0b2c3bb5e0db56762c9b10bd8aa49c315792692020-10-22 23:36:3513 mins ago0xa59af2b3465840fe1c4044ecf8e65957d6b587b1 IN  BSCswap: Router0 BNB0.002611351
0xdfde08af28e6f31cdc384271ce5a6d18515b4387cff8819a9f23d6998f58c02915792542020-10-22 23:35:5013 mins ago0x0e896e1dd70d1a1261378bed51d7eb253d0d2286 IN  BSCswap: Router0 BNB0.003015346
0x97bd561268339ca44fdbf9bdf10d51df21dae7cd937b100518a535d7151a958615792492020-10-22 23:35:3514 mins ago0x19c9d6a6f96af857f2146c5ca14bddc47715dfc3 IN  BSCswap: Router0 BNB0.00229642
0x29968da018ccf26320450fe9e3bb44909d941ef88b498ff4755b51be8997394415792492020-10-22 23:35:3514 mins ago0x633cb277e735331afa40aaeb74f62ba6cba43c9d IN  BSCswap: Router0 BNB0.002956351
0xce4613c1960797a3e755238bdb3a45d5396528d890adfb2ee7c860d8066ecccd15792422020-10-22 23:35:1414 mins ago0x04be8c6d71080b6e546f5960255950940415a4a7 IN  BSCswap: Router0.1 BNB0.00287937
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb7d2d59505ff1a0aeb201d4b93ed59e053e95c2b07faf7c8776714c535fdeb1215795272020-10-22 23:49:296 secs ago BSCswap: Router BSCswap: LFI 20 BNB
0xfd8a334ed1021002353fb7b87856093a77f0e0199a859f6fa59b5d3e3cbd96b515795262020-10-22 23:49:269 secs ago BSCswap: Router BSCswap: LFI 20 BNB
0xfd8a334ed1021002353fb7b87856093a77f0e0199a859f6fa59b5d3e3cbd96b515795262020-10-22 23:49:269 secs ago BSCswap: Router Binance: WBNB Token0 BNB
0xfd8a334ed1021002353fb7b87856093a77f0e0199a859f6fa59b5d3e3cbd96b515795262020-10-22 23:49:269 secs ago BSCswap: Router Binance: WBNB Token0.05 BNB
0xfd8a334ed1021002353fb7b87856093a77f0e0199a859f6fa59b5d3e3cbd96b515795262020-10-22 23:49:269 secs ago BSCswap: Router BSCswap: LFI 20 BNB
0x1fe1c245a1e1b82b31e73054c1babf80e44c5ebddecf5c7dbbe0dc3cca98da8415794972020-10-22 23:47:591 min ago BSCswap: Router BSCswap: LFI 20 BNB
0x1fe1c245a1e1b82b31e73054c1babf80e44c5ebddecf5c7dbbe0dc3cca98da8415794972020-10-22 23:47:591 min ago BSCswap: Router BSCswap: TWT0 BNB
0x1fe1c245a1e1b82b31e73054c1babf80e44c5ebddecf5c7dbbe0dc3cca98da8415794972020-10-22 23:47:591 min ago BSCswap: Router 0x4b0f1812e5df2a09796481ff14017e60055080030 BNB
0x1fe1c245a1e1b82b31e73054c1babf80e44c5ebddecf5c7dbbe0dc3cca98da8415794972020-10-22 23:47:591 min ago BSCswap: Router BSCswap: LFI 20 BNB
0x1fe1c245a1e1b82b31e73054c1babf80e44c5ebddecf5c7dbbe0dc3cca98da8415794972020-10-22 23:47:591 min ago BSCswap: Router BSCswap: TWT0 BNB
0xba62ef122e1bb834bda47e8d309197d07dae6094fe6c92920382812b547016fc15794912020-10-22 23:47:411 min ago BSCswap: Router0x369bdd26f8429ec038923b85ab92b9d21b51a99f0.235424719254701267 BNB
0xba62ef122e1bb834bda47e8d309197d07dae6094fe6c92920382812b547016fc15794912020-10-22 23:47:411 min ago Binance: WBNB Token BSCswap: Router0.235424719254701267 BNB
0xba62ef122e1bb834bda47e8d309197d07dae6094fe6c92920382812b547016fc15794912020-10-22 23:47:411 min ago BSCswap: Router Binance: WBNB Token0 BNB
0xba62ef122e1bb834bda47e8d309197d07dae6094fe6c92920382812b547016fc15794912020-10-22 23:47:411 min ago BSCswap: Router BSCswap: LFI 20 BNB
0xba62ef122e1bb834bda47e8d309197d07dae6094fe6c92920382812b547016fc15794912020-10-22 23:47:411 min ago BSCswap: Router 0x7661c7714a2ae18bd224d2bfa7619d6ab7b8f6400 BNB
0xba62ef122e1bb834bda47e8d309197d07dae6094fe6c92920382812b547016fc15794912020-10-22 23:47:411 min ago BSCswap: Router BSCswap: LFI 20 BNB
0xc0b6c5d08e32c2a5eaba05943b6cb6116e4afacb2ae92c96b0b775a38da1d09015794852020-10-22 23:47:232 mins ago BSCswap: Router BSCswap: LFI-BUSD0 BNB
0xc0b6c5d08e32c2a5eaba05943b6cb6116e4afacb2ae92c96b0b775a38da1d09015794852020-10-22 23:47:232 mins ago BSCswap: Router BSCswap: BUSD0 BNB
0xc0b6c5d08e32c2a5eaba05943b6cb6116e4afacb2ae92c96b0b775a38da1d09015794852020-10-22 23:47:232 mins ago BSCswap: Router BSCswap: TWT0 BNB
0xc81b34c7f96b611d22ace7f384f59022ef124df3f6a91f43e05adfbd1536bc5515794832020-10-22 23:47:172 mins ago BSCswap: Router0x01cba3f295afaaba5fc66c6bcbfef97cfd3016ab0.000578805397811684 BNB
0xc81b34c7f96b611d22ace7f384f59022ef124df3f6a91f43e05adfbd1536bc5515794832020-10-22 23:47:172 mins ago BSCswap: Router BSCswap: LFI-BUSD0 BNB
0xc81b34c7f96b611d22ace7f384f59022ef124df3f6a91f43e05adfbd1536bc5515794832020-10-22 23:47:172 mins ago BSCswap: Router BSCswap: BUSD0 BNB
0xc81b34c7f96b611d22ace7f384f59022ef124df3f6a91f43e05adfbd1536bc5515794832020-10-22 23:47:172 mins ago BSCswap: Router Binance: WBNB Token0 BNB
0xc81b34c7f96b611d22ace7f384f59022ef124df3f6a91f43e05adfbd1536bc5515794832020-10-22 23:47:172 mins ago BSCswap: Router Binance: WBNB Token0.011576107956233698 BNB
0xc81b34c7f96b611d22ace7f384f59022ef124df3f6a91f43e05adfbd1536bc5515794832020-10-22 23:47:172 mins ago BSCswap: Router BSCswap: BUSD0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BSCswapRouter

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-09-14
*/

/**
 *Submitted for verification at Bscscan.com on 2020-09-13
*/

// Dependency file: contracts/interfaces/IBSCswapRouter01.sol

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

// pragma solidity >=0.6.2;

interface IBSCswapRouter01 {
    function factory() external pure returns (address);
    function WBNB() 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 addLiquidityBNB(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountBNB, 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 removeLiquidityBNB(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountBNB);
    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 removeLiquidityBNBWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountBNB);
    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 swapExactBNBForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactBNB(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForBNB(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapBNBForExactTokens(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);
}

// Dependency file: contracts/interfaces/IBSCswapPair.sol

// pragma solidity >=0.5.0;

interface IBSCswapPair {
    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;
}

// Dependency file: contracts/interfaces/IWBNB.sol

// pragma solidity >=0.5.0;

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

// Dependency file: contracts/interfaces/IBEP20.sol

// pragma solidity >=0.5.0;

interface IBEP20BSCswap {
    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);
}

// Dependency file: contracts/interfaces/IBSCswapFactory.sol

// pragma solidity >=0.5.0;

interface IBSCswapFactory {
    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;
}

// Dependency file: contracts/interfaces/IBSCswapRouter02.sol

// pragma solidity >=0.6.2;

// import './IBSCswapRouter01.sol';

interface IBSCswapRouter02 is IBSCswapRouter01 {
    function removeLiquidityBNBSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external returns (uint amountBNB);
    function removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountBNB);

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

// Dependency file: contracts/libraries/TransferHelper.sol

// pragma solidity >=0.6.0;

// helper methods for interacting with BEP20 tokens and sending BNB 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 safeTransferBNB(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: BNB_TRANSFER_FAILED');
    }
}

// Dependency file: contracts/libraries/SafeMath.sol

// pragma solidity =0.6.12;

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

library SafeMathBSCswap {
    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');
    }
}

// Dependency file: contracts/libraries/BSCswapLibrary.sol

// pragma solidity >=0.5.0;

// import '../interfaces/IBSCswapPair.sol';

// import "./SafeMath.sol";

library BSCswapLibrary {
    using SafeMathBSCswap 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, 'BSCswapLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'BSCswapLibrary: 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'acc1c81cc3e9fb496da555f6bd67c3a095e579b26c1b580070cc6afa8f0a94fa' // 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,) = IBSCswapPair(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, 'BSCswapLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'BSCswapLibrary: 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, 'BSCswapLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'BSCswapLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'BSCswapLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'BSCswapLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'BSCswapLibrary: 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, 'BSCswapLibrary: 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);
        }
    }
}

pragma solidity =0.6.12;


// import './libraries/BSCswapLibrary.sol';
// import './libraries/SafeMath.sol';
// import './libraries/TransferHelper.sol';
// import './interfaces/IBSCswapRouter02.sol';
// import './interfaces/IBSCswapFactory.sol';
// import './interfaces/IBEP20.sol';
// import './interfaces/IWBNB.sol';

contract BSCswapRouter is IBSCswapRouter02 {
    using SafeMathBSCswap for uint;

    address public immutable override factory;
    address public immutable override WBNB;

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

    constructor(address _factory, address _WBNB) public {
        factory = _factory;
        WBNB = _WBNB;
    }

    receive() external payable {
        assert(msg.sender == WBNB); // only accept BNB via fallback from the WBNB 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 (IBSCswapFactory(factory).getPair(tokenA, tokenB) == address(0)) {
            IBSCswapFactory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = BSCswapLibrary.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = BSCswapLibrary.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'BSCswapRouter: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = BSCswapLibrary.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'BSCswapRouter: 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 = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IBSCswapPair(pair).mint(to);
    }
    function addLiquidityBNB(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountBNB, uint liquidity) {
        (amountToken, amountBNB) = _addLiquidity(
            token,
            WBNB,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountBNBMin
        );
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWBNB(WBNB).deposit{value: amountBNB}();
        assert(IWBNB(WBNB).transfer(pair, amountBNB));
        liquidity = IBSCswapPair(pair).mint(to);
        // refund dust BNB, if any
        if (msg.value > amountBNB) TransferHelper.safeTransferBNB(msg.sender, msg.value - amountBNB);
    }

    // **** 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 = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        IBSCswapPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IBSCswapPair(pair).burn(to);
        (address token0,) = BSCswapLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'BSCswapRouter: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'BSCswapRouter: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityBNB(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountBNB) {
        (amountToken, amountBNB) = removeLiquidity(
            token,
            WBNB,
            liquidity,
            amountTokenMin,
            amountBNBMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWBNB(WBNB).withdraw(amountBNB);
        TransferHelper.safeTransferBNB(to, amountBNB);
    }
    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 = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityBNBWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountBNB) {
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountBNB) = removeLiquidityBNB(token, liquidity, amountTokenMin, amountBNBMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityBNBSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountBNB) {
        (, amountBNB) = removeLiquidity(
            token,
            WBNB,
            liquidity,
            amountTokenMin,
            amountBNBMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IBEP20BSCswap(token).balanceOf(address(this)));
        IWBNB(WBNB).withdraw(amountBNB);
        TransferHelper.safeTransferBNB(to, amountBNB);
    }
    function removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountBNB) {
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountBNB = removeLiquidityBNBSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountBNBMin, 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,) = BSCswapLibrary.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 ? BSCswapLibrary.pairFor(factory, output, path[i + 2]) : _to;
            IBSCswapPair(BSCswapLibrary.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 = BSCswapLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.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 = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactBNBForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWBNB(WBNB).deposit{value: amounts[0]}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactBNB(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] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWBNB(WBNB).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferBNB(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForBNB(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] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWBNB(WBNB).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferBNB(to, amounts[amounts.length - 1]);
    }
    function swapBNBForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        IWBNB(WBNB).deposit{value: amounts[0]}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust BNB, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferBNB(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,) = BSCswapLibrary.sortTokens(input, output);
            IBSCswapPair pair = IBSCswapPair(BSCswapLibrary.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 = IBEP20BSCswap(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = BSCswapLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? BSCswapLibrary.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, BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IBEP20BSCswap(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IBEP20BSCswap(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactBNBForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        uint amountIn = msg.value;
        IWBNB(WBNB).deposit{value: amountIn}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IBEP20BSCswap(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IBEP20BSCswap(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForBNBSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WBNB, 'BSCswapRouter: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IBEP20BSCswap(WBNB).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWBNB(WBNB).withdraw(amountOut);
        TransferHelper.safeTransferBNB(to, amountOut);
    }

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

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

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

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

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WBNB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WBNB","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":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityBNB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","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":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityBNB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","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":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityBNBSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountBNB","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":"amountBNBMin","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":"removeLiquidityBNBWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","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":"amountBNBMin","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":"removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountBNB","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":"swapBNBForExactTokens","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":"swapExactBNBForTokens","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":"swapExactBNBForTokensSupportingFeeOnTransferTokens","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":"swapExactTokensForBNB","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":"swapExactTokensForBNBSupportingFeeOnTransferTokens","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":"swapTokensForExactBNB","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"}]

60c060405234801561001057600080fd5b50604051620046d5380380620046d58339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c614550620001856000398061015f5280610e08528061111a52806111af5280611223528061171252806118a252806119805280611aac5280611bef5280611c775280611eef5280611f59528061209f528061212752806122aa528061235e52806126c752806127a2528061287c52806129525280612adb5280612b165280612d2a5280612d805280612db45280612e28525080610cb35280610cec5280610de65280610f3b52806110125280611255528061154552806117a0528061195e5280611b3f5280611ca95280611e3f5280611fec52806121595280612432528061262a528061265352806129e05280612c0b5280612d5e528061359652806135d9528061377b52806138f15280613f445280613ffd52806140b052506145506000f3fe60806040526004361061014f5760003560e01c80638dd95002116100b6578063d06ca61f1161006f578063d06ca61f1461099d578063d46d2f8314610a52578063d67b571e14610ae8578063e058848814610b7e578063e8e3370014610bd1578063eaaed44214610c5157610188565b80638dd95002146107ed5780639cf689111461081e578063ad615dec146108a2578063b7e65949146108d8578063baa2abde1461092b578063c45a01551461098857610188565b80635c11d795116101085780635c11d795146104fe5780635d616c5b14610594578063685a0a341461062a5780638332a9631461069d57806385f8c259146107215780638803dbee1461075757610188565b8063054d50d41461018d5780631f00ca74146101d55780632195995c146102da57806334a0772d1461037157806338ed1739146103e457806350e27df31461047a57610188565b3661018857336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461018657fe5b005b600080fd5b34801561019957600080fd5b506101c3600480360360608110156101b057600080fd5b5080359060208101359060400135610c97565b60408051918252519081900360200190f35b3480156101e157600080fd5b5061028a600480360360408110156101f857600080fd5b81359190810190604081016020820135600160201b81111561021957600080fd5b82018360208201111561022b57600080fd5b803590602001918460208302840111600160201b8311171561024c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610cac945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102c65781810151838201526020016102ae565b505050509050019250505060405180910390f35b3480156102e657600080fd5b5061035860048036036101608110156102fe57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135610ce2565b6040805192835260208301919091528051918290030190f35b34801561037d57600080fd5b50610358600480360361014081101561039557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610ddc565b3480156103f057600080fd5b5061028a600480360360a081101561040757600080fd5b813591602081013591810190606081016040820135600160201b81111561042d57600080fd5b82018360208201111561043f57600080fd5b803590602001918460208302840111600160201b8311171561046057600080fd5b91935091506001600160a01b038135169060200135610ef0565b6101866004803603608081101561049057600080fd5b81359190810190604081016020820135600160201b8111156104b157600080fd5b8201836020820111156104c357600080fd5b803590602001918460208302840111600160201b831117156104e457600080fd5b91935091506001600160a01b0381351690602001356110d4565b34801561050a57600080fd5b50610186600480360360a081101561052157600080fd5b813591602081013591810190606081016040820135600160201b81111561054757600080fd5b82018360208201111561055957600080fd5b803590602001918460208302840111600160201b8311171561057a57600080fd5b91935091506001600160a01b0381351690602001356114db565b3480156105a057600080fd5b5061028a600480360360a08110156105b757600080fd5b813591602081013591810190606081016040820135600160201b8111156105dd57600080fd5b8201836020820111156105ef57600080fd5b803590602001918460208302840111600160201b8311171561061057600080fd5b91935091506001600160a01b0381351690602001356116c2565b34801561063657600080fd5b506101c3600480360361014081101561064e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611956565b61028a600480360360808110156106b357600080fd5b81359190810190604081016020820135600160201b8111156106d457600080fd5b8201836020820111156106e657600080fd5b803590602001918460208302840111600160201b8311171561070757600080fd5b91935091506001600160a01b038135169060200135611a64565b34801561072d57600080fd5b506101c36004803603606081101561074457600080fd5b5080359060208101359060400135611de7565b34801561076357600080fd5b5061028a600480360360a081101561077a57600080fd5b813591602081013591810190606081016040820135600160201b8111156107a057600080fd5b8201836020820111156107b257600080fd5b803590602001918460208302840111600160201b831117156107d357600080fd5b91935091506001600160a01b038135169060200135611df4565b3480156107f957600080fd5b50610802611eed565b604080516001600160a01b039092168252519081900360200190f35b61028a6004803603608081101561083457600080fd5b81359190810190604081016020820135600160201b81111561085557600080fd5b82018360208201111561086757600080fd5b803590602001918460208302840111600160201b8311171561088857600080fd5b91935091506001600160a01b038135169060200135611f11565b3480156108ae57600080fd5b506101c3600480360360608110156108c557600080fd5b5080359060208101359060400135612251565b3480156108e457600080fd5b506101c3600480360360c08110156108fb57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561225e565b34801561093757600080fd5b50610358600480360360e081101561094e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356123e4565b34801561099457600080fd5b50610802612628565b3480156109a957600080fd5b5061028a600480360360408110156109c057600080fd5b81359190810190604081016020820135600160201b8111156109e157600080fd5b8201836020820111156109f357600080fd5b803590602001918460208302840111600160201b83111715610a1457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061264c945050505050565b348015610a5e57600080fd5b50610186600480360360a0811015610a7557600080fd5b813591602081013591810190606081016040820135600160201b811115610a9b57600080fd5b820183602082011115610aad57600080fd5b803590602001918460208302840111600160201b83111715610ace57600080fd5b91935091506001600160a01b038135169060200135612679565b348015610af457600080fd5b5061028a600480360360a0811015610b0b57600080fd5b813591602081013591810190606081016040820135600160201b811115610b3157600080fd5b820183602082011115610b4357600080fd5b803590602001918460208302840111600160201b83111715610b6457600080fd5b91935091506001600160a01b038135169060200135612902565b348015610b8a57600080fd5b50610358600480360360c0811015610ba157600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612a8e565b348015610bdd57600080fd5b50610c336004803603610100811015610bf557600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612ba8565b60408051938452602084019290925282820152519081900360600190f35b610c33600480360360c0811015610c6757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612cdb565b6000610ca4848484612f6e565b949350505050565b6060610cd97f00000000000000000000000000000000000000000000000000000000000000008484613046565b90505b92915050565b6000806000610d127f00000000000000000000000000000000000000000000000000000000000000008f8f613193565b9050600087610d21578c610d25565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b50505050610dc28f8f8f8f8f8f8f6123e4565b809450819550505050509b509b9950505050505050505050565b6000806000610e2c7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613193565b9050600087610e3b578c610e3f565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610eb557600080fd5b505af1158015610ec9573d6000803e3d6000fd5b50505050610edb8e8e8e8e8e8e612a8e565b909f909e509c50505050505050505050505050565b60608142811015610f36576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b610f947f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061325392505050565b91508682600184510381518110610fa757fe5b60200260200101511015610fec5760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b61108a86866000818110610ffc57fe5b905060200201356001600160a01b0316336110707f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061103e57fe5b905060200201356001600160a01b03168b8b600181811061105b57fe5b905060200201356001600160a01b0316613193565b8560008151811061107d57fe5b602002602001015161338a565b6110c9828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506134e7915050565b509695505050505050565b8042811015611118576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585600081811061114f57fe5b905060200201356001600160a01b03166001600160a01b0316146111a8576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561120857600080fd5b505af115801561121c573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61129e7f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b905060200201356001600160a01b03168a8a600181811061105b57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b505161131757fe5b60008686600019810181811061132957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561138557600080fd5b505afa158015611399573d6000803e3d6000fd5b505050506040513d60208110156113af57600080fd5b505160408051602089810282810182019093528982529293506113f19290918a918a918291850190849080828437600092019190915250899250613724915050565b87611494828989600019810181811061140657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561146257600080fd5b505afa158015611476573d6000803e3d6000fd5b505050506040513d602081101561148c57600080fd5b505190613a2b565b10156114d15760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b5050505050505050565b804281101561151f576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6115778585600081811061152f57fe5b905060200201356001600160a01b0316336115717f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b8a61338a565b60008585600019810181811061158957fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115e557600080fd5b505afa1580156115f9573d6000803e3d6000fd5b505050506040513d602081101561160f57600080fd5b50516040805160208881028281018201909352888252929350611651929091899189918291850190849080828437600092019190915250889250613724915050565b86611494828888600019810181811061166657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561146257600080fd5b60608142811015611708576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061174257fe5b905060200201356001600160a01b03166001600160a01b03161461179b576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b6117f97f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061325392505050565b9150868260018451038151811061180c57fe5b602002602001015110156118515760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b61186186866000818110610ffc57fe5b6118a0828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506134e7915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855103815181106118df57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561191d57600080fd5b505af1158015611931573d6000803e3d6000fd5b505050506110c9848360018551038151811061194957fe5b6020026020010151613a7b565b6000806119a47f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613193565b90506000866119b3578b6119b7565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611a2d57600080fd5b505af1158015611a41573d6000803e3d6000fd5b50505050611a538d8d8d8d8d8d61225e565b9d9c50505050505050505050505050565b60608142811015611aaa576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611ae157fe5b905060200201356001600160a01b03166001600160a01b031614611b3a576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b611b987f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061304692505050565b91503482600081518110611ba857fe5b60200260200101511115611bed5760405162461bcd60e51b81526004018080602001828103825260258152602001806143b66025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611c2957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c5c57600080fd5b505af1158015611c70573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611cd57f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b84600081518110611ce257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d3057600080fd5b505af1158015611d44573d6000803e3d6000fd5b505050506040513d6020811015611d5a57600080fd5b5051611d6257fe5b611da1828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506134e7915050565b81600081518110611dae57fe5b6020026020010151341115611ddd57611ddd3383600081518110611dce57fe5b60200260200101513403613a7b565b5095945050505050565b6000610ca4848484613b6e565b60608142811015611e3a576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b611e987f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061304692505050565b91508682600081518110611ea857fe5b60200260200101511115610fec5760405162461bcd60e51b81526004018080602001828103825260258152602001806143b66025913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60608142811015611f57576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611f8e57fe5b905060200201356001600160a01b03166001600160a01b031614611fe7576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b6120457f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061325392505050565b9150868260018451038151811061205857fe5b6020026020010151101561209d5760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836000815181106120d957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6121857f00000000000000000000000000000000000000000000000000000000000000008989600081811061128157fe5b8460008151811061219257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156121e057600080fd5b505af11580156121f4573d6000803e3d6000fd5b505050506040513d602081101561220a57600080fd5b505161221257fe5b611ddd828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506134e7915050565b6000610ca4848484613c46565b600081428110156122a4576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6122d3887f000000000000000000000000000000000000000000000000000000000000000089898930896123e4565b90508092505061235c88858a6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561232b57600080fd5b505afa15801561233f573d6000803e3d6000fd5b505050506040513d602081101561235557600080fd5b5051613cec565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156123c257600080fd5b505af11580156123d6573d6000803e3d6000fd5b505050506110c98483613a7b565b600080824281101561242b576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b60006124587f00000000000000000000000000000000000000000000000000000000000000008c8c613193565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156124b357600080fd5b505af11580156124c7573d6000803e3d6000fd5b505050506040513d60208110156124dd57600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561252a57600080fd5b505af115801561253e573d6000803e3d6000fd5b505050506040513d604081101561255457600080fd5b5080516020909101519092509050600061256e8e8e613e56565b509050806001600160a01b03168e6001600160a01b031614612591578183612594565b82825b90975095508a8710156125d85760405162461bcd60e51b81526004018080602001828103825260248152602001806143926024913960400191505060405180910390fd5b898610156126175760405162461bcd60e51b81526004018080602001828103825260248152602001806143fb6024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060610cd97f00000000000000000000000000000000000000000000000000000000000000008484613253565b80428110156126bd576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016858560001981018181106126f757fe5b905060200201356001600160a01b03166001600160a01b031614612750576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b6127608585600081811061152f57fe5b61279e858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613724915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561280d57600080fd5b505afa158015612821573d6000803e3d6000fd5b505050506040513d602081101561283757600080fd5b505190508681101561287a5760405162461bcd60e51b81526004018080602001828103825260298152602001806144656029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156128e057600080fd5b505af11580156128f4573d6000803e3d6000fd5b505050506114d18482613a7b565b60608142811015612948576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061298257fe5b905060200201356001600160a01b03166001600160a01b0316146129db576040805162461bcd60e51b815260206004820152601b60248201526000805160206143db833981519152604482015290519081900360640190fd5b612a397f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061304692505050565b91508682600081518110612a4957fe5b602002602001015111156118515760405162461bcd60e51b81526004018080602001828103825260258152602001806143b66025913960400191505060405180910390fd5b6000808242811015612ad5576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b612b04897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6123e4565b9093509150612b14898685613cec565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612b7a57600080fd5b505af1158015612b8e573d6000803e3d6000fd5b50505050612b9c8583613a7b565b50965096945050505050565b60008060008342811015612bf1576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b612bff8c8c8c8c8c8c613f34565b90945092506000612c317f00000000000000000000000000000000000000000000000000000000000000008e8e613193565b9050612c3f8d33838861338a565b612c4b8c33838761338a565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050506040513d6020811015612cc457600080fd5b5051949d939c50939a509198505050505050505050565b60008060008342811015612d24576040805162461bcd60e51b81526020600482015260166024820152600080516020614445833981519152604482015290519081900360640190fd5b612d528a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613f34565b90945092506000612da47f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613193565b9050612db28b33838861338a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612e9d57600080fd5b505af1158015612eb1573d6000803e3d6000fd5b505050506040513d6020811015612ec757600080fd5b5051612ecf57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612f1e57600080fd5b505af1158015612f32573d6000803e3d6000fd5b505050506040513d6020811015612f4857600080fd5b5051925034841015612f6057612f6033853403613a7b565b505096509650969350505050565b6000808411612fae5760405162461bcd60e51b815260040180806020018281038252602981526020018061433f6029913960400191505060405180910390fd5b600083118015612fbe5750600082115b612ff95760405162461bcd60e51b815260040180806020018281038252602681526020018061441f6026913960400191505060405180910390fd5b6000613007856103e56141c5565b9050600061301582856141c5565b9050600061302f83613029886103e86141c5565b90614228565b905080828161303a57fe5b04979650505050505050565b606060028251101561309f576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff811180156130b757600080fd5b506040519080825280602002602001820160405280156130e1578160200160208202803683370190505b50905082816001835103815181106130f557fe5b60209081029190910101528151600019015b801561318b576000806131448786600186038151811061312357fe5b602002602001015187868151811061313757fe5b6020026020010151614277565b9150915061316684848151811061315757fe5b60200260200101518383613b6e565b84600185038151811061317557fe5b6020908102919091010152505060001901613107565b509392505050565b60008060006131a28585613e56565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527facc1c81cc3e9fb496da555f6bd67c3a095e579b26c1b580070cc6afa8f0a94fa609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b60606002825110156132ac576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff811180156132c457600080fd5b506040519080825280602002602001820160405280156132ee578160200160208202803683370190505b50905082816000815181106132ff57fe5b60200260200101818152505060005b600183510381101561318b576000806133448786858151811061332d57fe5b602002602001015187866001018151811061313757fe5b9150915061336684848151811061335757fe5b60200260200101518383612f6e565b84846001018151811061337557fe5b6020908102919091010152505060010161330e565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061340f5780518252601f1990920191602091820191016133f0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613471576040519150601f19603f3d011682016040523d82523d6000602084013e613476565b606091505b50915091508180156134a45750805115806134a457508080602001905160208110156134a157600080fd5b50515b6134df5760405162461bcd60e51b81526004018080602001828103825260248152602001806144d46024913960400191505060405180910390fd5b505050505050565b60005b600183510381101561371e5760008084838151811061350557fe5b602002602001015185846001018151811061351c57fe5b60200260200101519150915060006135348383613e56565b509050600087856001018151811061354857fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146135765782600061357a565b6000835b91509150600060028a5103881061359157886135d2565b6135d27f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106135c557fe5b6020026020010151613193565b90506135ff7f00000000000000000000000000000000000000000000000000000000000000008888613193565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561363c576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156136a457818101518382015260200161368c565b50505050905090810190601f1680156136d15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156136f357600080fd5b505af1158015613707573d6000803e3d6000fd5b5050600190990198506134ea975050505050505050565b50505050565b60005b6001835103811015613a265760008084838151811061374257fe5b602002602001015185846001018151811061375957fe5b60200260200101519150915060006137718383613e56565b50905060006137a17f00000000000000000000000000000000000000000000000000000000000000008585613193565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156137e257600080fd5b505afa1580156137f6573d6000803e3d6000fd5b505050506040513d606081101561380c57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613842578284613845565b83835b9150915061389a828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561146257600080fd5b95506138a7868383612f6e565b945050505050600080856001600160a01b0316886001600160a01b0316146138d1578260006138d5565b6000835b91509150600060028c51038a106138ec578a613920565b6139207f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106135c557fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156139aa578181015183820152602001613992565b50505050905090810190601f1680156139d75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156139f957600080fd5b505af1158015613a0d573d6000803e3d6000fd5b50506001909b019a506137279950505050505050505050565b505050565b80820382811115610cdc576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613ac75780518252601f199092019160209182019101613aa8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613b29576040519150601f19603f3d011682016040523d82523d6000602084013e613b2e565b606091505b5050905080613a265760405162461bcd60e51b815260040180806020018281038252602381526020018061448e6023913960400191505060405180910390fd5b6000808411613bae5760405162461bcd60e51b815260040180806020018281038252602a815260200180614368602a913960400191505060405180910390fd5b600083118015613bbe5750600082115b613bf95760405162461bcd60e51b815260040180806020018281038252602681526020018061441f6026913960400191505060405180910390fd5b6000613c116103e8613c0b86886141c5565b906141c5565b90506000613c256103e5613c0b8689613a2b565b9050613c3c6001828481613c3557fe5b0490614228565b9695505050505050565b6000808411613c865760405162461bcd60e51b81526004018080602001828103825260238152602001806144f86023913960400191505060405180910390fd5b600083118015613c965750600082115b613cd15760405162461bcd60e51b815260040180806020018281038252602681526020018061441f6026913960400191505060405180910390fd5b82613cdc85846141c5565b81613ce357fe5b04949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310613d695780518252601f199092019160209182019101613d4a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613dcb576040519150601f19603f3d011682016040523d82523d6000602084013e613dd0565b606091505b5091509150818015613dfe575080511580613dfe5750808060200190516020811015613dfb57600080fd5b50515b613e4f576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b600080826001600160a01b0316846001600160a01b03161415613eaa5760405162461bcd60e51b81526004018080602001828103825260238152602001806144b16023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613eca578284613ecd565b83835b90925090506001600160a01b038216613f2d576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b60008060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439058a8a6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015613fc057600080fd5b505afa158015613fd4573d6000803e3d6000fd5b505050506040513d6020811015613fea57600080fd5b50516001600160a01b031614156140a8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c9c6539689896040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b15801561407b57600080fd5b505af115801561408f573d6000803e3d6000fd5b505050506040513d60208110156140a557600080fd5b50505b6000806140d67f00000000000000000000000000000000000000000000000000000000000000008b8b614277565b915091508160001480156140e8575080155b156140f8578793508692506141b8565b6000614105898484613c46565b9050878111614158578581101561414d5760405162461bcd60e51b81526004018080602001828103825260248152602001806143fb6024913960400191505060405180910390fd5b8894509250826141b6565b6000614165898486613c46565b90508981111561417157fe5b878110156141b05760405162461bcd60e51b81526004018080602001828103825260248152602001806143926024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806141e0575050808202828282816141dd57fe5b04145b610cdc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015610cdc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006142868585613e56565b509050600080614297888888613193565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156142cf57600080fd5b505afa1580156142e3573d6000803e3d6000fd5b505050506040513d60608110156142f957600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b038781169084161461432c57808261432f565b81815b9099909850965050505050505056fe425343737761704c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54425343737761704c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5442534373776170526f757465723a20494e53554646494349454e545f415f414d4f554e5442534373776170526f757465723a204558434553534956455f494e5055545f414d4f554e5442534373776170526f757465723a20494e56414c49445f50415448000000000042534373776170526f757465723a20494e53554646494349454e545f425f414d4f554e54425343737761704c6962726172793a20494e53554646494349454e545f4c495155494449545942534373776170526f757465723a20455850495245440000000000000000000042534373776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a20424e425f5452414e534645525f4641494c4544425343737761704c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544425343737761704c6962726172793a20494e53554646494349454e545f414d4f554e54a2646970667358221220fe0d01180e0e7cd2f08af97af64f20b26dbc946f4c13f4a5d86093ecf36f619464736f6c634300060c0033000000000000000000000000ce8fd65646f2a2a897755a1188c04ace94d2b8d0000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

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

000000000000000000000000ce8fd65646f2a2a897755a1188c04ace94d2b8d0000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ce8fd65646f2a2a897755a1188c04ace94d2b8d0
Arg [1] : 000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c


Deployed ByteCode Sourcemap

16785:18461:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17266:10;-1:-1:-1;;;;;17280:4:0;17266:18;;17259:26;;;;16785:18461;;;;;34198:260;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34198:260:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;34992:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34992:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34992:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34992:251:0;;-1:-1:-1;34992:251:0;;-1:-1:-1;;;;;34992:251:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22061:673;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22061:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22740:665;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22740:665:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25755:622::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25755:622:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25755:622:0;;;;;;;;;;;;-1:-1:-1;25755:622:0;-1:-1:-1;;;;;;25755:622:0;;;;;;;;:::i;32252:858::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32252:858:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32252:858:0;;;;;;;;;;;;-1:-1:-1;32252:858:0;-1:-1:-1;;;;;;32252:858:0;;;;;;;;:::i;31522:724::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31522:724:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31522:724:0;;;;;;;;;;;;-1:-1:-1;31522:724:0;-1:-1:-1;;;;;;31522:724:0;;;;;;;;:::i;28510:842::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28510:842:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28510:842:0;;;;;;;;;;;;-1:-1:-1;28510:842:0;-1:-1:-1;;;;;;28510:842:0;;;;;;;;:::i;24197:714::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24197:714:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29358:802::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29358:802:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29358:802:0;;;;;;;;;;;;-1:-1:-1;29358:802:0;-1:-1:-1;;;;;;29358:802:0;;;;;;;;:::i;34466:259::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34466:259:0;;;;;;;;;;;;:::i;26383:600::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26383:600:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26383:600:0;;;;;;;;;;;;-1:-1:-1;26383:600:0;-1:-1:-1;;;;;;26383:600:0;;;;;;;;:::i;16922:38::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16922:38:0;;;;;;;;;;;;;;26989:689;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26989:689:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26989:689:0;;;;;;;;;;;;-1:-1:-1;26989:689:0;-1:-1:-1;;;;;;26989:689:0;;;;;;;;:::i;34004:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34004:186:0;;;;;;;;;;;;:::i;23484:707::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23484:707:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20523:853::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20523:853:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16874:41::-;;;;;;;;;;;;;:::i;34733:251::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34733:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;34733:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34733:251:0;;-1:-1:-1;34733:251:0;;-1:-1:-1;;;;;34733:251:0:i;33116:844::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33116:844:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33116:844:0;;;;;;;;;;;;-1:-1:-1;33116:844:0;-1:-1:-1;;;;;;33116:844:0;;;;;;;;:::i;27684:820::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27684:820:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27684:820:0;;;;;;;;;;;;-1:-1:-1;27684:820:0;-1:-1:-1;;;;;;27684:820:0;;;;;;;;:::i;21382:673::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21382:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18770:734::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18770:734:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19510:970;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19510:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34198:260::-;34351:14;34390:60;34418:8;34428:9;34439:10;34390:27;:60::i;:::-;34383:67;34198:260;-1:-1:-1;;;;34198:260:0:o;34992:251::-;35136:21;35182:53;35210:7;35219:9;35230:4;35182:27;:53::i;:::-;35175:60;;34992:251;;;;;:::o;22061:673::-;22367:12;22381;22406;22421:47;22444:7;22453:6;22461;22421:22;:47::i;:::-;22406:62;;22479:10;22492;:33;;22516:9;22492:33;;;-1:-1:-1;;22492:33:0;22536:78;;;-1:-1:-1;;;22536:78:0;;22562:10;22536:78;;;;22582:4;22536:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22479:46;;-1:-1:-1;;;;;;22536:25:0;;;;;:78;;;;;-1:-1:-1;;22536:78:0;;;;;;;;-1:-1:-1;22536:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22646:80;22662:6;22670;22678:9;22689:10;22701;22713:2;22717:8;22646:15;:80::i;:::-;22625:101;;;;;;;;22061:673;;;;;;;;;;;;;;;;:::o;22740:665::-;23029:16;23047:14;23074:12;23089:44;23112:7;23121:5;23128:4;23089:22;:44::i;:::-;23074:59;;23144:10;23157;:33;;23181:9;23157:33;;;-1:-1:-1;;23157:33:0;23201:78;;;-1:-1:-1;;;23201:78:0;;23227:10;23201:78;;;;23247:4;23201:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23144:46;;-1:-1:-1;;;;;;23201:25:0;;;;;:78;;;;;-1:-1:-1;;23201:78:0;;;;;;;;-1:-1:-1;23201:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23317:80;23336:5;23343:9;23354:14;23370:12;23384:2;23388:8;23317:18;:80::i;:::-;23290:107;;;;-1:-1:-1;22740:665:0;-1:-1:-1;;;;;;;;;;;;;22740:665:0:o;25755:622::-;25979:21;25960:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;26023:53:::1;26052:7;26061:8;26071:4;;26023:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26023:28:0::1;::::0;-1:-1:-1;;;26023:53:0:i:1;:::-;26013:63;;26126:12;26095:7;26120:1;26103:7;:14;:18;26095:27;;;;;;;;;;;;;;:43;;26087:97;;;;-1:-1:-1::0;;;26087:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26195:139;26241:4;;26246:1;26241:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26241:7:0::1;26250:10;26262:49;26285:7;26294:4;;26299:1;26294:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26294:7:0::1;26303:4;;26308:1;26303:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26303:7:0::1;26262:22;:49::i;:::-;26313:7;26321:1;26313:10;;;;;;;;;;;;;;26195:31;:139::i;:::-;26345:24;26351:7;26360:4;;26345:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26366:2:0;;-1:-1:-1;26345:5:0::1;::::0;-1:-1:-1;;26345:24:0:i:1;:::-;25755:622:::0;;;;;;;;;:::o;32252:858::-;32512:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;32557:4:::1;-1:-1:-1::0;;;;;32546:15:0::1;:4;;32551:1;32546:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32546:7:0::1;-1:-1:-1::0;;;;;32546:15:0::1;;32538:55;;;::::0;;-1:-1:-1;;;32538:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;32538:55:0;;;;;;;;;;;;;::::1;;32604:13;32620:9;32604:25;;32646:4;-1:-1:-1::0;;;;;32640:19:0::1;;32667:8;32640:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;32702:4;-1:-1:-1::0;;;;;32696:20:0::1;;32717:49;32740:7;32749:4;;32754:1;32749:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32749:7:0::1;32758:4;;32763:1;32758:7;;;;;;32717:49;32768:8;32696:81;;;;;;;;;;;;;-1:-1:-1::0;;;;;32696:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32696:81:0;32689:89:::1;;;;32789:18;32824:4:::0;;-1:-1:-1;;32829:15:0;;32824:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32824:21:0::1;-1:-1:-1::0;;;;;32810:46:0::1;;32857:2;32810:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32810:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32810:50:0;32871:44:::1;::::0;;32810:50:::1;32871:44:::0;;::::1;::::0;;;;;;;;;;;32810:50;;-1:-1:-1;32871:44:0::1;::::0;;;32906:4;;;;;;32871:44;::::1;::::0;32906:4;;32871:44;32906:4;32871:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;32912:2:0;;-1:-1:-1;32871:34:0::1;::::0;-1:-1:-1;;32871:44:0:i:1;:::-;33021:12:::0;32948:69:::1;33003:13:::0;32962:4;;-1:-1:-1;;32967:15:0;;32962:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32962:21:0::1;-1:-1:-1::0;;;;;32948:46:0::1;;32995:2;32948:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32948:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32948:50:0;;:54:::1;:69::i;:::-;:85;;32926:176;;;;-1:-1:-1::0;;;32926:176:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17084:1;;32252:858:::0;;;;;;:::o;31522:724::-;31756:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;31777:137:::1;31823:4;;31828:1;31823:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31823:7:0::1;31832:10;31844:49;31867:7;31876:4;;31881:1;31876:7;;;;;;31844:49;31895:8;31777:31;:137::i;:::-;31925:18;31960:4:::0;;-1:-1:-1;;31965:15:0;;31960:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31960:21:0::1;-1:-1:-1::0;;;;;31946:46:0::1;;31993:2;31946:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;31946:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31946:50:0;32007:44:::1;::::0;;31946:50:::1;32007:44:::0;;::::1;::::0;;;;;;;;;;;31946:50;;-1:-1:-1;32007:44:0::1;::::0;;;32042:4;;;;;;32007:44;::::1;::::0;32042:4;;32007:44;32042:4;32007:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;32048:2:0;;-1:-1:-1;32007:34:0::1;::::0;-1:-1:-1;;32007:44:0:i:1;:::-;32157:12:::0;32084:69:::1;32139:13:::0;32098:4;;-1:-1:-1;;32103:15:0;;32098:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32098:21:0::1;-1:-1:-1::0;;;;;32084:46:0::1;;32131:2;32084:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32084:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;28510:842:::0;28724:21;28696:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28796:4:0::1;28771:29;:4:::0;;-1:-1:-1;;28776:15:0;;28771:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28771:21:0::1;-1:-1:-1::0;;;;;28771:29:0::1;;28763:69;;;::::0;;-1:-1:-1;;;28763:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;28763:69:0;;;;;;;;;;;;;::::1;;28853:53;28882:7;28891:8;28901:4;;28853:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28853:28:0::1;::::0;-1:-1:-1;;;28853:53:0:i:1;:::-;28843:63;;28956:12;28925:7;28950:1;28933:7;:14;:18;28925:27;;;;;;;;;;;;;;:43;;28917:97;;;;-1:-1:-1::0;;;28917:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29025:139;29071:4;;29076:1;29071:7;;;;;;29025:139;29175:35;29181:7;29190:4;;29175:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29204:4:0::1;::::0;-1:-1:-1;29175:5:0::1;::::0;-1:-1:-1;;29175:35:0:i:1;:::-;29227:4;-1:-1:-1::0;;;;;29221:20:0::1;;29242:7;29267:1;29250:7;:14;:18;29242:27;;;;;;;;;;;;;;29221:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29281:63;29312:2;29316:7;29341:1;29324:7;:14;:18;29316:27;;;;;;;;;;;;;;29281:30;:63::i;24197:714::-:0;24515:14;24542:12;24557:44;24580:7;24589:5;24596:4;24557:22;:44::i;:::-;24542:59;;24612:10;24625;:33;;24649:9;24625:33;;;-1:-1:-1;;24625:33:0;24669:78;;;-1:-1:-1;;;24669:78:0;;24695:10;24669:78;;;;24715:4;24669:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24612:46;;-1:-1:-1;;;;;;24669:25:0;;;;;:78;;;;;-1:-1:-1;;24669:78:0;;;;;;;;-1:-1:-1;24669:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24770:133;24832:5;24839:9;24850:14;24866:12;24880:2;24884:8;24770:47;:133::i;:::-;24758:145;24197:714;-1:-1:-1;;;;;;;;;;;;;24197:714:0:o;29358:802::-;29571:21;29543:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;29629:4:::1;-1:-1:-1::0;;;;;29618:15:0::1;:4;;29623:1;29618:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29618:7:0::1;-1:-1:-1::0;;;;;29618:15:0::1;;29610:55;;;::::0;;-1:-1:-1;;;29610:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;29610:55:0;;;;;;;;;;;;;::::1;;29686:53;29714:7;29723:9;29734:4;;29686:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29686:27:0::1;::::0;-1:-1:-1;;;29686:53:0:i:1;:::-;29676:63;;29772:9;29758:7;29766:1;29758:10;;;;;;;;;;;;;;:23;;29750:73;;;;-1:-1:-1::0;;;29750:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29840:4;-1:-1:-1::0;;;;;29834:19:0::1;;29861:7;29869:1;29861:10;;;;;;;;;;;;;;29834:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;29898:4;-1:-1:-1::0;;;;;29892:20:0::1;;29913:49;29936:7;29945:4;;29950:1;29945:7;;;;;;29913:49;29964:7;29972:1;29964:10;;;;;;;;;;;;;;29892:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;29892:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29892:83:0;29885:91:::1;;;;29987:24;29993:7;30002:4;;29987:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;30008:2:0;;-1:-1:-1;29987:5:0::1;::::0;-1:-1:-1;;29987:24:0:i:1;:::-;30074:7;30082:1;30074:10;;;;;;;;;;;;;;30062:9;:22;30058:94;;;30086:66;30117:10;30141:7;30149:1;30141:10;;;;;;;;;;;;;;30129:9;:22;30086:30;:66::i;:::-;29358:802:::0;;;;;;;;:::o;34466:259::-;34619:13;34657:60;34684:9;34695;34706:10;34657:26;:60::i;26383:600::-;26607:21;26588:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;26651:53:::1;26679:7;26688:9;26699:4;;26651:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26651:27:0::1;::::0;-1:-1:-1;;;26651:53:0:i:1;:::-;26641:63;;26737:11;26723:7;26731:1;26723:10;;;;;;;;;;;;;;:25;;26715:75;;;;-1:-1:-1::0;;;26715:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16922:38:::0;;;:::o;26989:689::-;27205:21;27177:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;27263:4:::1;-1:-1:-1::0;;;;;27252:15:0::1;:4;;27257:1;27252:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;27252:7:0::1;-1:-1:-1::0;;;;;27252:15:0::1;;27244:55;;;::::0;;-1:-1:-1;;;27244:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27244:55:0;;;;;;;;;;;;;::::1;;27320:54;27349:7;27358:9;27369:4;;27320:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27320:28:0::1;::::0;-1:-1:-1;;;27320:54:0:i:1;:::-;27310:64;;27424:12;27393:7;27418:1;27401:7;:14;:18;27393:27;;;;;;;;;;;;;;:43;;27385:97;;;;-1:-1:-1::0;;;27385:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27499:4;-1:-1:-1::0;;;;;27493:19:0::1;;27520:7;27528:1;27520:10;;;;;;;;;;;;;;27493:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;27557:4;-1:-1:-1::0;;;;;27551:20:0::1;;27572:49;27595:7;27604:4;;27609:1;27604:7;;;;;;27572:49;27623:7;27631:1;27623:10;;;;;;;;;;;;;;27551:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;27551:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;27551:83:0;27544:91:::1;;;;27646:24;27652:7;27661:4;;27646:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27667:2:0;;-1:-1:-1;27646:5:0::1;::::0;-1:-1:-1;;27646:24:0:i:1;34004:186::-:0;34101:12;34133:49;34154:7;34163:8;34173;34133:20;:49::i;23484:707::-;23750:14;23731:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;23793:196:::1;23823:5;23843:4;23862:9;23886:14;23915:12;23950:4;23970:8;23793:15;:196::i;:::-;23777:212;;;;;;24000:85;24028:5;24035:2;24053:5;-1:-1:-1::0;;;;;24039:30:0::1;;24078:4;24039:45;;;;;;;;;;;;;-1:-1:-1::0;;;;;24039:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24039:45:0;24000:27:::1;:85::i;:::-;24102:4;-1:-1:-1::0;;;;;24096:20:0::1;;24117:9;24096:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24138:45;24169:2;24173:9;24138:30;:45::i;20523:853::-:0;20777:12;20791;20758:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;20816:12:::1;20831:47;20854:7;20863:6;20871;20831:22;:47::i;:::-;20889:60;::::0;;-1:-1:-1;;;20889:60:0;;20921:10:::1;20889:60;::::0;::::1;::::0;-1:-1:-1;;;;;20889:31:0;::::1;:60:::0;;;;;;;;;;;;;;20816:62;;-1:-1:-1;20889:31:0;;::::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;20889:31:0;:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;21017:27:0::1;::::0;;-1:-1:-1;;;21017:27:0;;-1:-1:-1;;;;;21017:27:0;;::::1;;::::0;::::1;::::0;;;20987:12:::1;::::0;;;21017:23;;::::1;::::0;::::1;::::0;:27;;;;;;;;;;;20987:12;21017:23;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21017:27:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;21017:27:0;-1:-1:-1;21056:14:0::1;21075:41;21101:6:::0;21109;21075:25:::1;:41::i;:::-;21055:61;;;21158:6;-1:-1:-1::0;;;;;21148:16:0::1;:6;-1:-1:-1::0;;;;;21148:16:0::1;;:58;;21189:7;21198;21148:58;;;21168:7;21177;21148:58;21127:79:::0;;-1:-1:-1;21127:79:0;-1:-1:-1;21225:21:0;;::::1;;21217:70;;;;-1:-1:-1::0;;;21217:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21317:10;21306:7;:21;;21298:70;;;;-1:-1:-1::0;;;21298:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17084:1;;;;20523:853:::0;;;;;;;;;;;:::o;16874:41::-;;;:::o;34733:251::-;34877:21;34923:53;34952:7;34961:8;34971:4;34923:28;:53::i;33116:844::-;33383:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33442:4:0::1;33417:29;:4:::0;;-1:-1:-1;;33422:15:0;;33417:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33417:21:0::1;-1:-1:-1::0;;;;;33417:29:0::1;;33409:69;;;::::0;;-1:-1:-1;;;33409:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;33409:69:0;;;;;;;;;;;;;::::1;;33489:137;33535:4;;33540:1;33535:7;;;;;;33489:137;33637:55;33672:4;;33637:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;33686:4:0::1;::::0;-1:-1:-1;33637:34:0::1;::::0;-1:-1:-1;;33637:55:0:i:1;:::-;33703:14;33734:4;-1:-1:-1::0;;;;;33720:29:0::1;;33758:4;33720:44;;;;;;;;;;;;;-1:-1:-1::0;;;;;33720:44:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;33720:44:0;;-1:-1:-1;33783:25:0;;::::1;;33775:79;;;;-1:-1:-1::0;;;33775:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33871:4;-1:-1:-1::0;;;;;33865:20:0::1;;33886:9;33865:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33907:45;33938:2;33942:9;33907:30;:45::i;27684:820::-:0;27898:21;27870:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27970:4:0::1;27945:29;:4:::0;;-1:-1:-1;;27950:15:0;;27945:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27945:21:0::1;-1:-1:-1::0;;;;;27945:29:0::1;;27937:69;;;::::0;;-1:-1:-1;;;27937:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;27937:69:0;;;;;;;;;;;;;::::1;;28027:53;28055:7;28064:9;28075:4;;28027:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28027:27:0::1;::::0;-1:-1:-1;;;28027:53:0:i:1;:::-;28017:63;;28113:11;28099:7;28107:1;28099:10;;;;;;;;;;;;;;:25;;28091:75;;;;-1:-1:-1::0;;;28091:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21382:673:::0;21619:16;21637:14;21600:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;21691:196:::1;21721:5;21741:4;21760:9;21784:14;21813:12;21848:4;21868:8;21691:15;:196::i;:::-;21664:223:::0;;-1:-1:-1;21664:223:0;-1:-1:-1;21898:51:0::1;21926:5:::0;21933:2;21664:223;21898:27:::1;:51::i;:::-;21966:4;-1:-1:-1::0;;;;;21960:20:0::1;;21981:9;21960:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22002:45;22033:2;22037:9;22002:30;:45::i;:::-;21382:673:::0;;;;;;;;;;:::o;18770:734::-;19058:12;19072;19086:14;19039:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;19134:85:::1;19148:6;19156;19164:14;19180;19196:10;19208;19134:13;:85::i;:::-;19113:106:::0;;-1:-1:-1;19113:106:0;-1:-1:-1;19230:12:0::1;19245:47;19268:7;19277:6:::0;19285;19245:22:::1;:47::i;:::-;19230:62;;19303:66;19335:6;19343:10;19355:4;19361:7;19303:31;:66::i;:::-;19380;19412:6;19420:10;19432:4;19438:7;19380:31;:66::i;:::-;19482:4;-1:-1:-1::0;;;;;19469:23:0::1;;19493:2;19469:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;19469:27:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19469:27:0;18770:734;;;;-1:-1:-1;19469:27:0;;-1:-1:-1;18770:734:0;;-1:-1:-1;;;;;;;;;18770:734:0:o;19510:970::-;19763:16;19781:14;19797;19744:8;17031:15;17019:8;:27;;17011:62;;;;;-1:-1:-1;;;17011:62:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17011:62:0;;;;;;;;;;;;;;;19851:176:::1;19879:5;19899:4;19918:18;19951:9;19975:14;20004:12;19851:13;:176::i;:::-;19824:203:::0;;-1:-1:-1;19824:203:0;-1:-1:-1;20038:12:0::1;20053:44;20076:7;20085:5:::0;20092:4:::1;20053:22;:44::i;:::-;20038:59;;20108:69;20140:5;20147:10;20159:4;20165:11;20108:31;:69::i;:::-;20194:4;-1:-1:-1::0;;;;;20188:19:0::1;;20215:9;20188:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;20251:4;-1:-1:-1::0;;;;;20245:20:0::1;;20266:4;20272:9;20245:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;20245:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20245:37:0;20238:45:::1;;;;20319:4;-1:-1:-1::0;;;;;20306:23:0::1;;20330:2;20306:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;20306:27:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20306:27:0;;-1:-1:-1;20384:9:0::1;:21:::0;-1:-1:-1;20380:92:0::1;;;20407:65;20438:10;20462:9;20450;:21;20407:30;:65::i;:::-;17084:1;19510:970:::0;;;;;;;;;;;:::o;14143:513::-;14236:14;14282:1;14271:8;:12;14263:66;;;;-1:-1:-1;;;14263:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14360:1;14348:9;:13;:31;;;;;14378:1;14365:10;:14;14348:31;14340:82;;;;-1:-1:-1;;;14340:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14433:20;14456:17;:8;14469:3;14456:12;:17::i;:::-;14433:40;-1:-1:-1;14484:14:0;14501:31;14433:40;14521:10;14501:19;:31::i;:::-;14484:48;-1:-1:-1;14543:16:0;14562:40;14586:15;14562:19;:9;14576:4;14562:13;:19::i;:::-;:23;;:40::i;:::-;14543:59;;14637:11;14625:9;:23;;;;;;;14143:513;-1:-1:-1;;;;;;;14143:513:0:o;15917:530::-;16018:21;16075:1;16060:4;:11;:16;;16052:57;;;;;-1:-1:-1;;;16052:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16141:4;:11;16130:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16130:23:0;;16120:33;;16194:9;16164:7;16189:1;16172:7;:14;:18;16164:27;;;;;;;;;;;;;;;;;:39;16228:11;;-1:-1:-1;;16228:15:0;16214:226;16245:5;;16214:226;;16273:14;16289:15;16308:42;16320:7;16329:4;16338:1;16334;:5;16329:11;;;;;;;;;;;;;;16342:4;16347:1;16342:7;;;;;;;;;;;;;;16308:11;:42::i;:::-;16272:78;;;;16382:46;16394:7;16402:1;16394:10;;;;;;;;;;;;;;16406:9;16417:10;16382:11;:46::i;:::-;16365:7;16377:1;16373;:5;16365:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;16252:3:0;16214:226;;;;15917:530;;;;;:::o;12666:478::-;12755:12;12781:14;12797;12815:26;12826:6;12834;12815:10;:26::i;:::-;12979:32;;;-1:-1:-1;;12979:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12969:43;;;;;;-1:-1:-1;;;;;;12882:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12872:262;;;;;;;;;12666:478;-1:-1:-1;;;;;12666:478:0:o;15327:509::-;15428:21;15485:1;15470:4;:11;:16;;15462:57;;;;;-1:-1:-1;;;15462:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15551:4;:11;15540:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15540:23:0;;15530:33;;15587:8;15574:7;15582:1;15574:10;;;;;;;;;;;;;:21;;;;;15611:6;15606:223;15637:1;15623:4;:11;:15;15619:1;:19;15606:223;;;15661:14;15677:15;15696:42;15708:7;15717:4;15722:1;15717:7;;;;;;;;;;;;;;15726:4;15731:1;15735;15731:5;15726:11;;;;;;;15696:42;15660:78;;;;15770:47;15783:7;15791:1;15783:10;;;;;;;;;;;;;;15795:9;15806:10;15770:12;:47::i;:::-;15753:7;15761:1;15765;15761:5;15753:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;15640:3:0;;15606:223;;10628:402;10853:51;;;-1:-1:-1;;;;;10853:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10853:51:0;-1:-1:-1;;;10853:51:0;;;10842:63;;;;10807:12;;10821:17;;10842:10;;;;10853:51;10842:63;;;10853:51;10842:63;;10853:51;10842:63;;;;;;;;;;-1:-1:-1;;10842:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10806:99;;;;10924:7;:57;;;;-1:-1:-1;10936:11:0;;:16;;:44;;;10967:4;10956:24;;;;;;;;;;;;;;;-1:-1:-1;10956:24:0;10936:44;10916:106;;;;-1:-1:-1;;;10916:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10628:402;;;;;;:::o;25022:727::-;25129:6;25124:618;25155:1;25141:4;:11;:15;25137:1;:19;25124:618;;;25179:13;25194:14;25213:4;25218:1;25213:7;;;;;;;;;;;;;;25222:4;25227:1;25231;25227:5;25222:11;;;;;;;;;;;;;;25178:56;;;;25250:14;25269:40;25295:5;25302:6;25269:25;:40::i;:::-;25249:60;;;25324:14;25341:7;25349:1;25353;25349:5;25341:14;;;;;;;;;;;;;;25324:31;;25371:15;25388;25416:6;-1:-1:-1;;;;;25407:15:0;:5;-1:-1:-1;;;;;25407:15:0;;:61;;25449:9;25465:1;25407:61;;;25431:1;25435:9;25407:61;25370:98;;;;25483:10;25514:1;25500:4;:11;:15;25496:1;:19;:80;;25573:3;25496:80;;;25518:52;25541:7;25550:6;25558:4;25563:1;25567;25563:5;25558:11;;;;;;;;;;;;;;25518:22;:52::i;:::-;25483:93;;25604:46;25627:7;25636:5;25643:6;25604:22;:46::i;:::-;-1:-1:-1;;;;;25591:65:0;;25675:10;25687;25699:2;25713:1;25703:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25703:12:0;;25591:139;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25591:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25158:3:0;;;;;-1:-1:-1;25124:618:0;;-1:-1:-1;;;;;;;;25124:618:0;;;25022:727;;;:::o;30307:1209::-;30420:6;30415:1094;30446:1;30432:4;:11;:15;30428:1;:19;30415:1094;;;30470:13;30485:14;30504:4;30509:1;30504:7;;;;;;;;;;;;;;30513:4;30518:1;30522;30518:5;30513:11;;;;;;;;;;;;;;30469:56;;;;30541:14;30560:40;30586:5;30593:6;30560:25;:40::i;:::-;30540:60;;;30615:17;30648:46;30671:7;30680:5;30687:6;30648:22;:46::i;:::-;30615:80;;30710:16;30741:17;30829:13;30844;30862:4;-1:-1:-1;;;;;30862:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30862:18:0;;;;;;;-1:-1:-1;;;;;30828:52:0;;;;-1:-1:-1;30828:52:0;;-1:-1:-1;30896:17:0;;-1:-1:-1;;;;;30937:15:0;;;;;;;:61;;30979:8;30989;30937:61;;;30956:8;30966;30937:61;30895:103;;;;31027:63;31077:12;31041:5;-1:-1:-1;;;;;31027:30:0;;31066:4;31027:45;;;;;;;;;;;;;-1:-1:-1;;;;;31027:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;:63;31013:77;;31120:69;31148:11;31161:12;31175:13;31120:27;:69::i;:::-;31105:84;;30415:1094;;;;31220:15;31237;31265:6;-1:-1:-1;;;;;31256:15:0;:5;-1:-1:-1;;;;;31256:15:0;;:67;;31301:12;31320:1;31256:67;;;31280:1;31284:12;31256:67;31219:104;;;;31338:10;31369:1;31355:4;:11;:15;31351:1;:19;:80;;31428:3;31351:80;;;31373:52;31396:7;31405:6;31413:4;31418:1;31422;31418:5;31413:11;;;;;;;31373:52;31484:12;;;31494:1;31484:12;;;;;;;;;;-1:-1:-1;;;31446:51:0;;;;;;;;;;;;;;-1:-1:-1;;;;;31446:51:0;;;;;;;;;;;;;;;;;;;;;;31338:93;;-1:-1:-1;31446:9:0;;;;;;31456:10;;31468;;31338:93;;31484:12;;31446:51;;;;;;;;31484:12;;31446:51;;;;31484:12;;31446:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30449:3:0;;;;;-1:-1:-1;30415:1094:0;;-1:-1:-1;;;;;;;;;;30415:1094:0;;;30307:1209;;:::o;11602:129::-;11686:5;;;11681:16;;;;11673:50;;;;;-1:-1:-1;;;11673:50:0;;;;;;;;;;;;-1:-1:-1;;;11673:50:0;;;;;;;;;;;;;;11038:195;11146:12;;;11108;11146;;;;;;;;;-1:-1:-1;;;;;11125:7:0;;;11139:5;;11125:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11125:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11107:52;;;11178:7;11170:55;;;;-1:-1:-1;;;11170:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14777:468;14870:13;14916:1;14904:9;:13;14896:68;;;;-1:-1:-1;;;14896:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14995:1;14983:9;:13;:31;;;;;15013:1;15000:10;:14;14983:31;14975:82;;;;-1:-1:-1;;;14975:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15068:14;15085:34;15114:4;15085:24;:9;15099;15085:13;:24::i;:::-;:28;;:34::i;:::-;15068:51;-1:-1:-1;15130:16:0;15149:34;15179:3;15149:25;:10;15164:9;15149:14;:25::i;:34::-;15130:53;;15205:32;15235:1;15218:11;15206:9;:23;;;;;;;15205:29;:32::i;:::-;15194:43;14777:468;-1:-1:-1;;;;;;14777:468:0:o;13704:317::-;13786:12;13829:1;13819:7;:11;13811:59;;;;-1:-1:-1;;;13811:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13900:1;13889:8;:12;:28;;;;;13916:1;13905:8;:12;13889:28;13881:79;;;;-1:-1:-1;;;13881:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14005:8;13981:21;:7;13993:8;13981:11;:21::i;:::-;:32;;;;;;;13704:317;-1:-1:-1;;;;13704:317:0:o;10259:361::-;10454:45;;;-1:-1:-1;;;;;10454:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10454:45:0;-1:-1:-1;;;10454:45:0;;;10443:57;;;;10408:12;;10422:17;;10443:10;;;;10454:45;10443:57;;;10454:45;10443:57;;10454:45;10443:57;;;;;;;;;;-1:-1:-1;;10443:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10407:93;;;;10519:7;:57;;;;-1:-1:-1;10531:11:0;;:16;;:44;;;10562:4;10551:24;;;;;;;;;;;;;;;-1:-1:-1;10551:24:0;10531:44;10511:101;;;;;-1:-1:-1;;;10511:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10259:361;;;;;:::o;12229:345::-;12304:14;12320;12365:6;-1:-1:-1;;;;;12355:16:0;:6;-1:-1:-1;;;;;12355:16:0;;;12347:64;;;;-1:-1:-1;;;12347:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12450:6;-1:-1:-1;;;;;12441:15:0;:6;-1:-1:-1;;;;;12441:15:0;;:53;;12479:6;12487;12441:53;;;12460:6;12468;12441:53;12422:72;;-1:-1:-1;12422:72:0;-1:-1:-1;;;;;;12513:20:0;;12505:61;;;;;-1:-1:-1;;;12505:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12229:345;;;;;:::o;17388:1376::-;17606:12;17620;17761:1;-1:-1:-1;;;;;17701:62:0;17717:7;-1:-1:-1;;;;;17701:32:0;;17734:6;17742;17701:48;;;;;;;;;;;;;-1:-1:-1;;;;;17701:48:0;;;;;;-1:-1:-1;;;;;17701:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17701:48:0;-1:-1:-1;;;;;17701:62:0;;17697:146;;;17796:7;-1:-1:-1;;;;;17780:35:0;;17816:6;17824;17780:51;;;;;;;;;;;;;-1:-1:-1;;;;;17780:51:0;;;;;;-1:-1:-1;;;;;17780:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17697:146:0;17854:13;17869;17886:51;17913:7;17922:6;17930;17886:26;:51::i;:::-;17853:84;;;;17952:8;17964:1;17952:13;:30;;;;-1:-1:-1;17969:13:0;;17952:30;17948:809;;;18021:14;;-1:-1:-1;18037:14:0;;-1:-1:-1;17948:809:0;;;18085:19;18107:56;18128:14;18144:8;18154;18107:20;:56::i;:::-;18085:78;;18200:14;18182;:32;18178:568;;18261:10;18243:14;:28;;18235:77;;;;-1:-1:-1;;;18235:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18353:14;;-1:-1:-1;18369:14:0;-1:-1:-1;18369:14:0;18178:568;;;18425:19;18447:56;18468:14;18484:8;18494;18447:20;:56::i;:::-;18425:78;;18547:14;18529;:32;;18522:40;;;;18607:10;18589:14;:28;;18581:77;;;;-1:-1:-1;;;18581:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18699:14;-1:-1:-1;18715:14:0;;-1:-1:-1;18178:568:0;17948:809;;17388:1376;;;;;;;;;;;:::o;11739:142::-;11791:6;11818;;;:30;;-1:-1:-1;;11833:5:0;;;11847:1;11842;11833:5;11842:1;11828:15;;;;;:20;11818:30;11810:63;;;;;-1:-1:-1;;;11810:63:0;;;;;;;;;;;;-1:-1:-1;;;11810:63:0;;;;;;;;;;;;;;11466:128;11550:5;;;11545:16;;;;11537:49;;;;;-1:-1:-1;;;11537:49:0;;;;;;;;;;;;-1:-1:-1;;;11537:49:0;;;;;;;;;;;;;;13202:389;13295:13;13310;13337:14;13356:26;13367:6;13375;13356:10;:26::i;:::-;13336:46;;;13394:13;13409;13440:32;13448:7;13457:6;13465;13440:7;:32::i;:::-;-1:-1:-1;;;;;13427:58:0;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13427:60:0;;;;;;;-1:-1:-1;;;;;13393:94:0;;;;-1:-1:-1;13393:94:0;;-1:-1:-1;;;;;;13521:16:0;;;;;;;:62;;13564:8;13574;13521:62;;;13541:8;13551;13521:62;13498:85;;;;-1:-1:-1;13202:389:0;-1:-1:-1;;;;;;;13202:389:0:o

Swarm Source

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