ETH Price: $3,499.06 (-0.30%)
Gas: 2 Gwei

Token

FoccerAid (ItsComingHome🏴󠁧󠁢󠁥󠁮󠁧󠁿)
 

Overview

Max Total Supply

1,966,562,022 ItsComingHome🏴󠁧󠁢󠁥󠁮󠁧󠁿

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
19,949,234.051439281765451928 ItsComingHome🏴󠁧󠁢󠁥󠁮󠁧󠁿

Value
$0.00
0xE5B0B92d08293E0B2CFB6743d76Fb13dC4B5Ae53
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ItsComingHome

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-10
*/

/**
                                  ...........::::::::::::.........:555PPPPPPPPPPPPPPP^                        .  ..........::::::::::............     
                                  .    ......:.....:::.........   :PGGGPPGGGPPPPPPPPP:   .~777~:      .^^^^^: .:::::::::...:.....................     
                     :~!!~:       .^~!7!^.....~!777::^?JJ?:J555PPPG&&&#P#&&&#PPB&&&#P: .YB&&&&&#Y.    !&&&&&#::#&&#####BBB5^PGPP555YYJ^..........     
                   ~P#&&@&#P!    7G&@@@@&B7...P@@@#:.~@@@B:&@@@@@@@@@@&P&@@@#PPB@&&#P:.P&&&Y!5&#&5    5&&&&&@!.PGG#@@@@&&@G^&@@@@@@@@@~..........     
                  !#&&G??G&&&!  J@@@#J5@@@@7..P@@@B:.~@@@B:!!~J@@@@BGGGP&@@@#PPB@&&#P:?&&&G  :#&&#:  .B&&Y&&@Y .. ?@@@@!:^^^&@@@P!777?^..........     
                  P&#&7  !##&5 ^&@&@?  P@@@#:.P@@@B:.~@@@B... 7@@@@GPPPP&@@@#55B@&&#P^G&&&5  .5PPP^  ~&&#~#&@B. . ?@@@@~...^&@@@Y ...............     
                  ?&#&B?. ::^: ?@&&@~  J@@@@!.P@@@B:.~@@@B....7@@@@GPPPP&@@@&BB#&&&#5~#&&&5          Y&&P G&&&^ . ?@@@@~...^&@@@P~~~^............     
                   Y&&&&BJ^    5@&&&~  ?@@@@? P@@@B:.~@@@B....7@@@@GPPPP&@@@@@@&&&&#5!#&&&5 :?????: .G&&J J@&@? . ?@@@@~...^&@@@@@@@G............     
                    !P&&&&#5^  5@&&&~  ?@@@@J P@@@B:.~@@@B....7@@@@GPPPP&@@@#GG#&&&#5!#&&&5 ~@&&&&~ ^&&&J~J&&@P . ?@@@@~...^&@@@BPPGY............     
                      ~5#&&&#! 5@&&&~  ?@@@@?.P@@@B:.~@@@B....7@@@@GPPPP&@@@#P5B&&&#P^B&&&5 .!5&#&~ ?&&&@@@&&@#:. ?@@@@~...^&@@@Y................     
                 .7?77. ^P&&&B.7@&&@~  J@@@@~.P@@@B:.~@@@B....7@@@@GPPPP&@@@#PPB&&&#P:J&&&#^ .P&#&~ P&&BJJJB&&@!  ?@@@@~...^&@@@Y................     
                 .G&&&~  !&&&#.:&@&@J .G@@@B:.P@@@#~:?@@@B....7@@@@GPPPP&@@@#PPB@&&&P:.P&&&BPB&&&&~:#&@J   J@@@Y  ?@@@@~...^&@@@G777!!^..........     
                  !#&&BYYB&&&?  7&@@&GB@@@#~..7@@@@&#@@@&7....7@@@@GPPPP&@@@#PPB&&&#P: .?GB##GY!PG^!BGB~   ~##&P. ?@@@@~...^&@@@@@@@@@?..........     
                   ~5B#&&#B5~    ~P#&@@&BY^....!5B###BGY~.....^J?7?PPPPPGGGGPPPPPPPPP:    .:.               ..::..:^~~~:...:7?JJJYY55P!...........    
                     .::::         .^^^^. ........::::.........   .PGPPPPPPPPPPPPPPPP~::::::::^^^:^^:::::::::::::::....:::...................         
!?777!!!~~~~^^^^^^::::::..:::::::::::::^^^^~~~~~!!!!!7777?????JJJJYPPPPPPPPPPPPPPPPP5555555555555555555555PP5PPP5555555555YYYYYJJJ????777!!!~~~~^^^^::
JGPPPPPPPPPPP5555555555555555555PPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPPPPPPPPPPPP55555555555555555555PPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGPPPP
JPPPPPPP55555555555555555555PPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPPPPPPPPPPPPP555555555555555555555PPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPP
JPPPPPPP55555555555555555555PPPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPPPPPPPPPPPPP555555555555555555555PPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPP
JPPPPPPP55555555555555555555PPPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPPPPPPPPPPPPP555555555555555555555PPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPP
JPPPPPPP55555555555555555555PPPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPPPPPPPPPPPPP555555555555555555555PPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPP
JPPPPPPPP5555555555555555555PPPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPPPPPPPPPPPP5PPPPPPP5555555PPPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGPPPPPPP
?55555555P5PP55555555PPPPPPPPPPPPPPGGGGGGGGGGGGGGGGGGGGGGPPPPPP5555PPPPPPPPPPPPPPPPPP7~~~~~~~~~~~~~~~~~!!!!!7777???JJJJYYY5555PPPPPPPPGGGGGGGGGGGGGGGG
.....::::^^^^^^~~~~~~!!!!!!!!7777777777777777!!!!!!!~~~~^^^:::::..:PPPPPPPPPPPPPPPPPP:                                .....::::::^^^^^^^~~~~~~~!!!!!!!
   .                                      ......................::~GGGGGGGBGPGGGBGP5PYJJJ. ~YJJJJJJJJ!       . .~7JJJ7~....:^^^^:::.:......           
   YBGGY    ?5YJ. .!JY5YJ!.   .7???!..~JJY7.:Y55PPPPPY?^........G@@@@@@@@@@@P#@@@#P5G@&&&^ ?@&&&&&&&@5        ^G&@@@@@@G~..:B@&&5.:.Y#BG:.?GPP555YYY! 
   ~&@@&~  ~&&&? ~G&&&&&&&B!  .#@@@5  J@@@5.^&@@@@@@@@@&J.......5GG#@@@@&##BP#@&&#P5G&&&#^ ?&###!~~~~^       :B@@@P!Y@@@&~.:#@@@@?..P@@&^ 5@@@@@@@@@5 
    Y@&&P .G&&5 ^#&##J:7#&&&~ .#&&@5  ?@@@5.^&@@@P^~G@@@@~....... :P@@@@BPPPP#@&&#55G&&&#^ ?&##B.            ?@&@&^ .B@@@P.:#@@@@&~.P@@&^ 5@@@&!~!!!^ 
    .#&&&~J&&B. J&##B.  P&&&P .#&&@5  ?@@@5.^&@@@5..7@@@@!........:G@@@@BPPPP#@&&#PPG&&&#^ ?&##B~^^^.        P@&@#:..5@@@&^:#@@@@@G.P@@&^ 5@@@&.      
     7@&&B#&&~  G&##G.  5&&&#..#&&@5  ?@@@5.^&@@@5.^P@@@B:........:G@@@@BPPPP#@&&&&&&&&&#^ ?&####&&&~       .G@&@B:. Y@@@@~.#@@&@@@J5@@&^ 5@@@&!^^^.  
      G&&&&&J   G&#&G.  5&&&&^.#&&@5  ?@@@5.^&@@@&B&@@&P^.........:G@@@@BPPPP#@&&&###&&&#^ ?&###5Y55^       .G@&@B:. Y@@@@!.#@@GP@@&G@@&^ 5@@@@@@@@~  
      ~&&&&P.   G##&G.  5&&&&^.#&&@5  ?@@@5.^&@@@#G@@@#:..........:G@@@@BPPPP#@&&#55G&&&#^ ?&##B.            G@&@#:. Y@@@@~.#@@B^#@@@@@&^ 5@@@@PPPP^  
      .#&&&J    P&##G.  5&&&#:.#&&@5  ?@@@5.^&@@@Y.B@@@?..........:G@@@@BPPPP#@&&#P5G&&&#^ ?&##B.            J@&@&:..P@@@&::#@@B.7@@@@@&^ 5@@@&.      
      .#&&&J    J&##B.  P&&&G .#&&@Y  ?@@@5.^&@@@5.?@@@#:.........:G@@@@BPPPP#@&&#P5G&&&#^ ?&###7~~~~~       ^&@@@J.~&@@@5.:#@@B:.Y@@@@&^ 5@@@&.      
      .#&&&J    :B&##J.!#&&&7 .B@&@G::5@@@Y.^&@@@5.^#@@@?.........:G@@@@BPPPP#@@@#P5G@&&&^ ?@&&&&&&&@B.       !#@@@#&@@@B^.:#@@B:::G@@@&^ 5@@@&?!!!!~ 
      .#&&@Y     ~G&&&#&&&&J   7&@@@&&@@@B^.^&@@@5..Y@@@#:........:G&&&&BPPPPB###BP5GYJJJ. ~????????J?         ^JGB###G?:..:G&@G::.^#@@&^ 5@@@@@@@@@B 
       ~!!!^      .!J5PP5?^     ^JPGBBG5?:..:JYJJ!::^?77!:........:PGGGGGGGGPPPPPPPPP:                        .  ..:::....::^^^^:::.^!!!:.~???JJJJYY? 
                                   ...............:::.............:55555YYYYJJJ??????:                        .............:.:::::::.......          
                                   
                                   /*

                                                      
 .---.  .----.    ,--.     ,--.                       
/_   | /  ,.  \  /  .'    /  .'                       
 |   ||  |  \  |.  / -.  .  / -.                      
 |   | '  `-'  '| .-.  ' | .-.  '                     
 |   |  `- /  ' ' \  |  |' \  |  |                    
 |   |   ,'  /  \  `'  / \  `'  /           ,------.  
 `---'  `---'    `----'   `----'           '  .--.  ' 
 .-----.   .----.   .-----.  .-----.       |  |  |  | 
/ ,-.   \ /  ..  \ / ,-.   \/ ,-.   \      '--'  |  | 
'-'  |  |.  /  \  .'-'  |  |'-'  |  |          __.  | 
   .'  / |  |  '  |   .'  /    .'  /          |   .'  
 .'  /__ '  \  /  ' .'  /__  .'  /__          |___|   
|       | \  `'  / |       ||       |         .---.   
`-------'  `---''  `-------'`-------'         '---' 


//SPDX-License-Identifier: MIT
2 x projects .. 1x longterm / 1x Gamble .. 1 tg Let the chaos decend 
tg - https://t.me/FoccerPortal
Website - https://foccertoken.com
twitter - https://twitter.com/FoccerToken2022

This is a short term Charity Launch with 4% in and out tax for England football team in the WorldCup 2022 
2% of tax will go to childrens christmas charity
2% of tax will go to the development of the FOCCER Project 
30mins after Launch will be 4 and 6 then will revert to normal
LP will be locked instantly / and there is functions in the contract to not allow tax to be put above these levels.

FOCCER is a longterm play and will try to create the SportsMeta by creating a sports only Blockchain and is already live on ETH blockchain ... CA: 0x59203358D7DDfE80e0ABe75B0aa534BC4d22AA7F
ItsComingHome is a short term gamble play that gives to children's christmas charity, 
2 projects both foccer 

*/

pragma solidity =0.8.16;
pragma experimental ABIEncoderV2;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner { //Change
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ItsComingHome is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public foccerWallet;
    address public focceraidWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("FoccerAid", unicode"ItsComingHome🏴󠁧󠁢󠁥󠁮󠁧󠁿") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 4;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 6;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1966562022 * 1e18;

        maxTransactionAmount = 39331240 * 1e18;
        maxWallet = 39331240 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        foccerWallet = address(0x5C896dD79679bb7FD2D5a5d7f645E28c8d0d3Fb4);
        focceraidWallet = address(0x5cF2301F791CAc79C1e9EA689Af65Ecb6D7A15cb);

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAndTxnAmount(uint256 newTxnNum, uint256 newMaxWalletNum) external onlyOwner {
        require(
            newTxnNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxTxn lower than 0.5%"
        );
        require(
            newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newMaxWalletNum * (10**18);
        maxTransactionAmount = newTxnNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 8, "Must keep fees at 8% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

                if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;

    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddress,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        uint256 marketingbalance = address(this).balance;
        uint amt = marketingbalance.div(2);
        (success, ) = address(foccerWallet).call{value: amt}("");
        (success, ) = address(focceraidWallet).call{value: marketingbalance.sub(amt)}("");
    }
}
//Reverend313 - TG @TehReverend1

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"foccerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"focceraidWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600981526020017f466f63636572416964000000000000000000000000000000000000000000000081525060405180606001604052806029815260200162005487602991398160039081620000a9919062000cd1565b508060049081620000bb919062000cd1565b505050620000de620000d26200051860201b60201c565b6200052060201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200010a816001620005e660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b0919062000e22565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e919062000e22565b6040518363ffffffff1660e01b81526004016200025d92919062000e65565b6020604051808303816000875af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000e22565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620002eb60a0516001620005e660201b60201c565b6200030060a0516001620006d060201b60201c565b600060049050600080600690506000806b065ab3b4d438f8bd8bd8000090506a2088b6caf02f774da000006008819055506a2088b6caf02f774da00000600a8190555061271060058262000355919062000ec1565b62000361919062000f51565b60098190555084600d8190555083600e81905550600e54600d5462000387919062000f89565b600c819055508260108190555081601181905550601154601054620003ad919062000f89565b600f81905550600f54601481905550735c896dd79679bb7fd2d5a5d7f645e28c8d0d3fb4600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735cf2301f791cac79c1e9ea689af65ecb6d7a15cb600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004886200047a6200077160201b60201c565b60016200079b60201b60201c565b6200049b3060016200079b60201b60201c565b620004b061dead60016200079b60201b60201c565b620004d2620004c46200077160201b60201c565b6001620005e660201b60201c565b620004e5306001620005e660201b60201c565b620004fa61dead6001620005e660201b60201c565b6200050c3382620008d560201b60201c565b50505050505062001121565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005f66200051860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200061c6200077160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000675576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066c9062001025565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007ab6200051860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007d16200077160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200082a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008219062001025565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008c9919062001064565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000947576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093e90620010d1565b60405180910390fd5b6200095b6000838362000a4d60201b60201c565b80600260008282546200096f919062000f89565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009c6919062000f89565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a2d919062001104565b60405180910390a362000a496000838362000a5260201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ad957607f821691505b60208210810362000aef5762000aee62000a91565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b1a565b62000b65868362000b1a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bb262000bac62000ba68462000b7d565b62000b87565b62000b7d565b9050919050565b6000819050919050565b62000bce8362000b91565b62000be662000bdd8262000bb9565b84845462000b27565b825550505050565b600090565b62000bfd62000bee565b62000c0a81848462000bc3565b505050565b5b8181101562000c325762000c2660008262000bf3565b60018101905062000c10565b5050565b601f82111562000c815762000c4b8162000af5565b62000c568462000b0a565b8101602085101562000c66578190505b62000c7e62000c758562000b0a565b83018262000c0f565b50505b505050565b600082821c905092915050565b600062000ca66000198460080262000c86565b1980831691505092915050565b600062000cc1838362000c93565b9150826002028217905092915050565b62000cdc8262000a57565b67ffffffffffffffff81111562000cf85762000cf762000a62565b5b62000d04825462000ac0565b62000d1182828562000c36565b600060209050601f83116001811462000d49576000841562000d34578287015190505b62000d40858262000cb3565b86555062000db0565b601f19841662000d598662000af5565b60005b8281101562000d835784890151825560018201915060208501945060208101905062000d5c565b8683101562000da3578489015162000d9f601f89168262000c93565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dea8262000dbd565b9050919050565b62000dfc8162000ddd565b811462000e0857600080fd5b50565b60008151905062000e1c8162000df1565b92915050565b60006020828403121562000e3b5762000e3a62000db8565b5b600062000e4b8482850162000e0b565b91505092915050565b62000e5f8162000ddd565b82525050565b600060408201905062000e7c600083018562000e54565b62000e8b602083018462000e54565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ece8262000b7d565b915062000edb8362000b7d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f175762000f1662000e92565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f5e8262000b7d565b915062000f6b8362000b7d565b92508262000f7e5762000f7d62000f22565b5b828204905092915050565b600062000f968262000b7d565b915062000fa38362000b7d565b925082820190508082111562000fbe5762000fbd62000e92565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200100d60208362000fc4565b91506200101a8262000fd5565b602082019050919050565b60006020820190508181036000830152620010408162000ffe565b9050919050565b60008115159050919050565b6200105e8162001047565b82525050565b60006020820190506200107b600083018462001053565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010b9601f8362000fc4565b9150620010c68262001081565b602082019050919050565b60006020820190508181036000830152620010ec81620010aa565b9050919050565b620010fe8162000b7d565b82525050565b60006020820190506200111b6000830184620010f3565b92915050565b60805160a0516143166200117160003960008181610be70152611297015260008181610a0601528181612c7301528181612d5401528181612d7b01528181612e170152612e3e01526143166000f3fe6080604052600436106102085760003560e01c80638a8c523c11610118578063c8c8ebe4116100a0578063dd62ed3e1161006f578063dd62ed3e1461077a578063df8b87d4146107b7578063e2f45605146107e2578063f2fde38b1461080d578063f8b45b05146108365761020f565b8063c8c8ebe4146106bc578063c92a222d146106e7578063d257b34f14610712578063d85ba0631461074f5761020f565b80639a7a23d6116100e75780639a7a23d6146105c5578063a457c2d7146105ee578063a9059cbb1461062b578063bbc0c74214610668578063c0246668146106935761020f565b80638a8c523c1461052f5780638da5cb5b1461054657806395d89b4114610571578063961883991461059c5761020f565b8063395093511161019b5780636a486a8e1161016a5780636a486a8e1461045c5780636ddd17131461048757806370a08231146104b2578063715018a6146104ef5780637571336a146105065761020f565b8063395093511461038e57806349bd5a5e146103cb5780634fbee193146103f657806366ca9b83146104335761020f565b806318160ddd116101d757806318160ddd146102d057806323b872dd146102fb57806327c8f83514610338578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612f28565b610861565b005b34801561024957600080fd5b50610252610954565b60405161025f9190612ff8565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190613078565b6109e6565b60405161029c91906130d3565b60405180910390f35b3480156102b157600080fd5b506102ba610a04565b6040516102c7919061314d565b60405180910390f35b3480156102dc57600080fd5b506102e5610a28565b6040516102f29190613177565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d9190613192565b610a32565b60405161032f91906130d3565b60405180910390f35b34801561034457600080fd5b5061034d610b2a565b60405161035a91906131f4565b60405180910390f35b34801561036f57600080fd5b50610378610b30565b604051610385919061322b565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190613078565b610b39565b6040516103c291906130d3565b60405180910390f35b3480156103d757600080fd5b506103e0610be5565b6040516103ed91906131f4565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613246565b610c09565b60405161042a91906130d3565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612f28565b610c5f565b005b34801561046857600080fd5b50610471610d49565b60405161047e9190613177565b60405180910390f35b34801561049357600080fd5b5061049c610d4f565b6040516104a991906130d3565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613246565b610d62565b6040516104e69190613177565b60405180910390f35b3480156104fb57600080fd5b50610504610daa565b005b34801561051257600080fd5b5061052d6004803603810190610528919061329f565b610e32565b005b34801561053b57600080fd5b50610544610f09565b005b34801561055257600080fd5b5061055b610fbd565b60405161056891906131f4565b60405180910390f35b34801561057d57600080fd5b50610586610fe7565b6040516105939190612ff8565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be9190612f28565b611079565b005b3480156105d157600080fd5b506105ec60048036038101906105e7919061329f565b611219565b005b3480156105fa57600080fd5b5061061560048036038101906106109190613078565b611331565b60405161062291906130d3565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613078565b61141c565b60405161065f91906130d3565b60405180910390f35b34801561067457600080fd5b5061067d61143a565b60405161068a91906130d3565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b5919061329f565b61144d565b005b3480156106c857600080fd5b506106d1611572565b6040516106de9190613177565b60405180910390f35b3480156106f357600080fd5b506106fc611578565b60405161070991906131f4565b60405180910390f35b34801561071e57600080fd5b50610739600480360381019061073491906132df565b61159e565b60405161074691906130d3565b60405180910390f35b34801561075b57600080fd5b506107646116f3565b6040516107719190613177565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c919061330c565b6116f9565b6040516107ae9190613177565b60405180910390f35b3480156107c357600080fd5b506107cc611780565b6040516107d991906131f4565b60405180910390f35b3480156107ee57600080fd5b506107f76117a6565b6040516108049190613177565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f9190613246565b6117ac565b005b34801561084257600080fd5b5061084b6118a3565b6040516108589190613177565b60405180910390f35b6108696118a9565b73ffffffffffffffffffffffffffffffffffffffff16610887610fbd565b73ffffffffffffffffffffffffffffffffffffffff16146108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d490613398565b60405180910390fd5b81601081905550806011819055506011546010546108fb91906133e7565b600f81905550600f546014819055506008600f541115610950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094790613467565b60405180910390fd5b5050565b606060038054610963906134b6565b80601f016020809104026020016040519081016040528092919081815260200182805461098f906134b6565b80156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b5050505050905090565b60006109fa6109f36118a9565b84846118b1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610a3f848484611a7a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a8a6118a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190613559565b60405180910390fd5b610b1e85610b166118a9565b8584036118b1565b60019150509392505050565b61dead81565b60006012905090565b6000610bdb610b466118a9565b848460016000610b546118a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd691906133e7565b6118b1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c676118a9565b73ffffffffffffffffffffffffffffffffffffffff16610c85610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290613398565b60405180910390fd5b81600d8190555080600e81905550600e54600d54610cf991906133e7565b600c819055506005600c541115610d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3c906135c5565b60405180910390fd5b5050565b600f5481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db26118a9565b73ffffffffffffffffffffffffffffffffffffffff16610dd0610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90613398565b60405180910390fd5b610e3060006124d6565b565b610e3a6118a9565b73ffffffffffffffffffffffffffffffffffffffff16610e58610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590613398565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f116118a9565b73ffffffffffffffffffffffffffffffffffffffff16610f2f610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613398565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ff6906134b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611022906134b6565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b5050505050905090565b6110816118a9565b73ffffffffffffffffffffffffffffffffffffffff1661109f610fbd565b73ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90613398565b60405180910390fd5b670de0b6b3a76400006103e8600561110b610a28565b61111591906135e5565b61111f919061366e565b611129919061366e565b82101561116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116290613711565b60405180910390fd5b670de0b6b3a76400006103e86005611181610a28565b61118b91906135e5565b611195919061366e565b61119f919061366e565b8110156111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d8906137a3565b60405180910390fd5b670de0b6b3a7640000816111f591906135e5565b600a81905550670de0b6b3a76400008261120f91906135e5565b6008819055505050565b6112216118a9565b73ffffffffffffffffffffffffffffffffffffffff1661123f610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90613398565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90613835565b60405180910390fd5b61132d828261259c565b5050565b600080600160006113406118a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f4906138c7565b60405180910390fd5b6114116114086118a9565b858584036118b1565b600191505092915050565b60006114306114296118a9565b8484611a7a565b6001905092915050565b600b60009054906101000a900460ff1681565b6114556118a9565b73ffffffffffffffffffffffffffffffffffffffff16611473610fbd565b73ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613398565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161156691906130d3565b60405180910390a25050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115a86118a9565b73ffffffffffffffffffffffffffffffffffffffff166115c6610fbd565b73ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613398565b60405180910390fd5b620186a0600161162a610a28565b61163491906135e5565b61163e919061366e565b821015611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790613959565b60405180910390fd5b6103e8600561168d610a28565b61169791906135e5565b6116a1919061366e565b8211156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da906139eb565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6117b46118a9565b73ffffffffffffffffffffffffffffffffffffffff166117d2610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613a7d565b60405180910390fd5b6118a0816124d6565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790613b0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690613ba1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a6d9190613177565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090613c33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90613cc5565b60405180910390fd5b60008103611b7157611b6c8383600061263d565b6124d1565b611b79610fbd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611be75750611bb7610fbd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c205750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c735750600560149054906101000a900460ff16155b1561205657600b60009054906101000a900460ff16611d6d57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d2d5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6390613d31565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e105750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611eb757600854811115611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5190613dc3565b60405180910390fd5b600a54611e6683610d62565b82611e7191906133e7565b1115611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990613e2f565b60405180910390fd5b612055565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f5a5750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fa957600854811115611fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9b90613ec1565b60405180910390fd5b612054565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661205357600a5461200683610d62565b8261201191906133e7565b1115612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990613e2f565b60405180910390fd5b5b5b5b5b600061206130610d62565b9050600060095482101590508080156120865750600b60019054906101000a900460ff165b801561209f5750600560149054906101000a900460ff16155b80156120f55750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561214b5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121a15750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e5576001600560146101000a81548160ff0219169083151502179055506121c96128bc565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061229b5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122a557600090505b600081156124b857601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561230857506000600f54115b156123a2576123356064612327600f5488612b8890919063ffffffff16565b612b9e90919063ffffffff16565b9050600f546011548261234891906135e5565b612352919061366e565b6013600082825461236391906133e7565b92505081905550600f546010548261237b91906135e5565b612385919061366e565b6012600082825461239691906133e7565b92505081905550612494565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123fd57506000600c54115b156124935761242a606461241c600c5488612b8890919063ffffffff16565b612b9e90919063ffffffff16565b9050600c54600e548261243d91906135e5565b612447919061366e565b6013600082825461245891906133e7565b92505081905550600c54600d548261247091906135e5565b61247a919061366e565b6012600082825461248b91906133e7565b925050819055505b5b60008111156124a9576124a887308361263d565b5b80856124b59190613ee1565b94505b6124c387878761263d565b601454600f81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390613c33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361271b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271290613cc5565b60405180910390fd5b612726838383612bb4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a390613f87565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461283f91906133e7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128a39190613177565b60405180910390a36128b6848484612bb9565b50505050565b60006128c730610d62565b905060006012546013546128db91906133e7565b90506000808314806128ed5750600082145b156128fa57505050612b86565b601460095461290991906135e5565b83111561292257601460095461291f91906135e5565b92505b60006002836013548661293591906135e5565b61293f919061366e565b612949919061366e565b905060006129608286612bbe90919063ffffffff16565b9050600047905061297082612bd4565b60006129858247612bbe90919063ffffffff16565b905060006129b0876129a260125485612b8890919063ffffffff16565b612b9e90919063ffffffff16565b9050600081836129c09190613ee1565b9050600060138190555060006012819055506000861180156129e25750600081115b15612a2f576129f18682612e11565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601354604051612a2693929190613fa7565b60405180910390a15b60004790506000612a4a600283612b9e90919063ffffffff16565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612a929061400f565b60006040518083038185875af1925050503d8060008114612acf576040519150601f19603f3d011682016040523d82523d6000602084013e612ad4565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b268284612bbe90919063ffffffff16565b604051612b329061400f565b60006040518083038185875af1925050503d8060008114612b6f576040519150601f19603f3d011682016040523d82523d6000602084013e612b74565b606091505b50508099505050505050505050505050505b565b60008183612b9691906135e5565b905092915050565b60008183612bac919061366e565b905092915050565b505050565b505050565b60008183612bcc9190613ee1565b905092915050565b6000600267ffffffffffffffff811115612bf157612bf0614024565b5b604051908082528060200260200182016040528015612c1f5781602001602082028036833780820191505090505b5090503081600081518110612c3757612c36614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d009190614097565b81600181518110612d1457612d13614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d79307f0000000000000000000000000000000000000000000000000000000000000000846118b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ddb9594939291906141bd565b600060405180830381600087803b158015612df557600080fd5b505af1158015612e09573d6000803e3d6000fd5b505050505050565b612e3c307f0000000000000000000000000000000000000000000000000000000000000000846118b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ea396959493929190614217565b60606040518083038185885af1158015612ec1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ee6919061428d565b5050505050565b600080fd5b6000819050919050565b612f0581612ef2565b8114612f1057600080fd5b50565b600081359050612f2281612efc565b92915050565b60008060408385031215612f3f57612f3e612eed565b5b6000612f4d85828601612f13565b9250506020612f5e85828601612f13565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa2578082015181840152602081019050612f87565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fca82612f68565b612fd48185612f73565b9350612fe4818560208601612f84565b612fed81612fae565b840191505092915050565b600060208201905081810360008301526130128184612fbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130458261301a565b9050919050565b6130558161303a565b811461306057600080fd5b50565b6000813590506130728161304c565b92915050565b6000806040838503121561308f5761308e612eed565b5b600061309d85828601613063565b92505060206130ae85828601612f13565b9150509250929050565b60008115159050919050565b6130cd816130b8565b82525050565b60006020820190506130e860008301846130c4565b92915050565b6000819050919050565b600061311361310e6131098461301a565b6130ee565b61301a565b9050919050565b6000613125826130f8565b9050919050565b60006131378261311a565b9050919050565b6131478161312c565b82525050565b6000602082019050613162600083018461313e565b92915050565b61317181612ef2565b82525050565b600060208201905061318c6000830184613168565b92915050565b6000806000606084860312156131ab576131aa612eed565b5b60006131b986828701613063565b93505060206131ca86828701613063565b92505060406131db86828701612f13565b9150509250925092565b6131ee8161303a565b82525050565b600060208201905061320960008301846131e5565b92915050565b600060ff82169050919050565b6132258161320f565b82525050565b6000602082019050613240600083018461321c565b92915050565b60006020828403121561325c5761325b612eed565b5b600061326a84828501613063565b91505092915050565b61327c816130b8565b811461328757600080fd5b50565b60008135905061329981613273565b92915050565b600080604083850312156132b6576132b5612eed565b5b60006132c485828601613063565b92505060206132d58582860161328a565b9150509250929050565b6000602082840312156132f5576132f4612eed565b5b600061330384828501612f13565b91505092915050565b6000806040838503121561332357613322612eed565b5b600061333185828601613063565b925050602061334285828601613063565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613382602083612f73565b915061338d8261334c565b602082019050919050565b600060208201905081810360008301526133b181613375565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133f282612ef2565b91506133fd83612ef2565b9250828201905080821115613415576134146133b8565b5b92915050565b7f4d757374206b6565702066656573206174203825206f72206c65737300000000600082015250565b6000613451601c83612f73565b915061345c8261341b565b602082019050919050565b6000602082019050818103600083015261348081613444565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134ce57607f821691505b6020821081036134e1576134e0613487565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613543602883612f73565b915061354e826134e7565b604082019050919050565b6000602082019050818103600083015261357281613536565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b60006135af601c83612f73565b91506135ba82613579565b602082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b60006135f082612ef2565b91506135fb83612ef2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613634576136336133b8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061367982612ef2565b915061368483612ef2565b9250826136945761369361363f565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006136fb602183612f73565b91506137068261369f565b604082019050919050565b6000602082019050818103600083015261372a816136ee565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061378d602483612f73565b915061379882613731565b604082019050919050565b600060208201905081810360008301526137bc81613780565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061381f603983612f73565b915061382a826137c3565b604082019050919050565b6000602082019050818103600083015261384e81613812565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006138b1602583612f73565b91506138bc82613855565b604082019050919050565b600060208201905081810360008301526138e0816138a4565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613943603583612f73565b915061394e826138e7565b604082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006139d5603483612f73565b91506139e082613979565b604082019050919050565b60006020820190508181036000830152613a04816139c8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a67602683612f73565b9150613a7282613a0b565b604082019050919050565b60006020820190508181036000830152613a9681613a5a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613af9602483612f73565b9150613b0482613a9d565b604082019050919050565b60006020820190508181036000830152613b2881613aec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b8b602283612f73565b9150613b9682613b2f565b604082019050919050565b60006020820190508181036000830152613bba81613b7e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613c1d602583612f73565b9150613c2882613bc1565b604082019050919050565b60006020820190508181036000830152613c4c81613c10565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613caf602383612f73565b9150613cba82613c53565b604082019050919050565b60006020820190508181036000830152613cde81613ca2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613d1b601683612f73565b9150613d2682613ce5565b602082019050919050565b60006020820190508181036000830152613d4a81613d0e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613dad603583612f73565b9150613db882613d51565b604082019050919050565b60006020820190508181036000830152613ddc81613da0565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613e19601383612f73565b9150613e2482613de3565b602082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613eab603683612f73565b9150613eb682613e4f565b604082019050919050565b60006020820190508181036000830152613eda81613e9e565b9050919050565b6000613eec82612ef2565b9150613ef783612ef2565b9250828203905081811115613f0f57613f0e6133b8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f71602683612f73565b9150613f7c82613f15565b604082019050919050565b60006020820190508181036000830152613fa081613f64565b9050919050565b6000606082019050613fbc6000830186613168565b613fc96020830185613168565b613fd66040830184613168565b949350505050565b600081905092915050565b50565b6000613ff9600083613fde565b915061400482613fe9565b600082019050919050565b600061401a82613fec565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506140918161304c565b92915050565b6000602082840312156140ad576140ac612eed565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6130ee565b612ef2565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141348161303a565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d26000830188613168565b6141df60208301876140f0565b81810360408301526141f1818661415f565b905061420060608301856131e5565b61420d6080830184613168565b9695505050505050565b600060c08201905061422c60008301896131e5565b6142396020830188613168565b61424660408301876140f0565b61425360608301866140f0565b61426060808301856131e5565b61426d60a0830184613168565b979650505050505050565b60008151905061428781612efc565b92915050565b6000806000606084860312156142a6576142a5612eed565b5b60006142b486828701614278565b93505060206142c586828701614278565b92505060406142d686828701614278565b915050925092509256fea2646970667358221220d5503077117b5da249dc4d2549418ba7e6e440018d6dad38f4e5487c7fcfebfc64736f6c63430008100033497473436f6d696e67486f6d65f09f8fb4f3a081a7f3a081a2f3a081a5f3a081aef3a081a7f3a081bf

Deployed Bytecode

0x6080604052600436106102085760003560e01c80638a8c523c11610118578063c8c8ebe4116100a0578063dd62ed3e1161006f578063dd62ed3e1461077a578063df8b87d4146107b7578063e2f45605146107e2578063f2fde38b1461080d578063f8b45b05146108365761020f565b8063c8c8ebe4146106bc578063c92a222d146106e7578063d257b34f14610712578063d85ba0631461074f5761020f565b80639a7a23d6116100e75780639a7a23d6146105c5578063a457c2d7146105ee578063a9059cbb1461062b578063bbc0c74214610668578063c0246668146106935761020f565b80638a8c523c1461052f5780638da5cb5b1461054657806395d89b4114610571578063961883991461059c5761020f565b8063395093511161019b5780636a486a8e1161016a5780636a486a8e1461045c5780636ddd17131461048757806370a08231146104b2578063715018a6146104ef5780637571336a146105065761020f565b8063395093511461038e57806349bd5a5e146103cb5780634fbee193146103f657806366ca9b83146104335761020f565b806318160ddd116101d757806318160ddd146102d057806323b872dd146102fb57806327c8f83514610338578063313ce567146103635761020f565b806302dbd8f81461021457806306fdde031461023d578063095ea7b3146102685780631694505e146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612f28565b610861565b005b34801561024957600080fd5b50610252610954565b60405161025f9190612ff8565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190613078565b6109e6565b60405161029c91906130d3565b60405180910390f35b3480156102b157600080fd5b506102ba610a04565b6040516102c7919061314d565b60405180910390f35b3480156102dc57600080fd5b506102e5610a28565b6040516102f29190613177565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d9190613192565b610a32565b60405161032f91906130d3565b60405180910390f35b34801561034457600080fd5b5061034d610b2a565b60405161035a91906131f4565b60405180910390f35b34801561036f57600080fd5b50610378610b30565b604051610385919061322b565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190613078565b610b39565b6040516103c291906130d3565b60405180910390f35b3480156103d757600080fd5b506103e0610be5565b6040516103ed91906131f4565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613246565b610c09565b60405161042a91906130d3565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612f28565b610c5f565b005b34801561046857600080fd5b50610471610d49565b60405161047e9190613177565b60405180910390f35b34801561049357600080fd5b5061049c610d4f565b6040516104a991906130d3565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613246565b610d62565b6040516104e69190613177565b60405180910390f35b3480156104fb57600080fd5b50610504610daa565b005b34801561051257600080fd5b5061052d6004803603810190610528919061329f565b610e32565b005b34801561053b57600080fd5b50610544610f09565b005b34801561055257600080fd5b5061055b610fbd565b60405161056891906131f4565b60405180910390f35b34801561057d57600080fd5b50610586610fe7565b6040516105939190612ff8565b60405180910390f35b3480156105a857600080fd5b506105c360048036038101906105be9190612f28565b611079565b005b3480156105d157600080fd5b506105ec60048036038101906105e7919061329f565b611219565b005b3480156105fa57600080fd5b5061061560048036038101906106109190613078565b611331565b60405161062291906130d3565b60405180910390f35b34801561063757600080fd5b50610652600480360381019061064d9190613078565b61141c565b60405161065f91906130d3565b60405180910390f35b34801561067457600080fd5b5061067d61143a565b60405161068a91906130d3565b60405180910390f35b34801561069f57600080fd5b506106ba60048036038101906106b5919061329f565b61144d565b005b3480156106c857600080fd5b506106d1611572565b6040516106de9190613177565b60405180910390f35b3480156106f357600080fd5b506106fc611578565b60405161070991906131f4565b60405180910390f35b34801561071e57600080fd5b50610739600480360381019061073491906132df565b61159e565b60405161074691906130d3565b60405180910390f35b34801561075b57600080fd5b506107646116f3565b6040516107719190613177565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c919061330c565b6116f9565b6040516107ae9190613177565b60405180910390f35b3480156107c357600080fd5b506107cc611780565b6040516107d991906131f4565b60405180910390f35b3480156107ee57600080fd5b506107f76117a6565b6040516108049190613177565b60405180910390f35b34801561081957600080fd5b50610834600480360381019061082f9190613246565b6117ac565b005b34801561084257600080fd5b5061084b6118a3565b6040516108589190613177565b60405180910390f35b6108696118a9565b73ffffffffffffffffffffffffffffffffffffffff16610887610fbd565b73ffffffffffffffffffffffffffffffffffffffff16146108dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d490613398565b60405180910390fd5b81601081905550806011819055506011546010546108fb91906133e7565b600f81905550600f546014819055506008600f541115610950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094790613467565b60405180910390fd5b5050565b606060038054610963906134b6565b80601f016020809104026020016040519081016040528092919081815260200182805461098f906134b6565b80156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b5050505050905090565b60006109fa6109f36118a9565b84846118b1565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610a3f848484611a7a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a8a6118a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190613559565b60405180910390fd5b610b1e85610b166118a9565b8584036118b1565b60019150509392505050565b61dead81565b60006012905090565b6000610bdb610b466118a9565b848460016000610b546118a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd691906133e7565b6118b1565b6001905092915050565b7f000000000000000000000000905b2a8759d46b41db76edf655231f5cf1b1b5fe81565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610c676118a9565b73ffffffffffffffffffffffffffffffffffffffff16610c85610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd290613398565b60405180910390fd5b81600d8190555080600e81905550600e54600d54610cf991906133e7565b600c819055506005600c541115610d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3c906135c5565b60405180910390fd5b5050565b600f5481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db26118a9565b73ffffffffffffffffffffffffffffffffffffffff16610dd0610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90613398565b60405180910390fd5b610e3060006124d6565b565b610e3a6118a9565b73ffffffffffffffffffffffffffffffffffffffff16610e58610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590613398565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f116118a9565b73ffffffffffffffffffffffffffffffffffffffff16610f2f610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613398565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ff6906134b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611022906134b6565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b5050505050905090565b6110816118a9565b73ffffffffffffffffffffffffffffffffffffffff1661109f610fbd565b73ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90613398565b60405180910390fd5b670de0b6b3a76400006103e8600561110b610a28565b61111591906135e5565b61111f919061366e565b611129919061366e565b82101561116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116290613711565b60405180910390fd5b670de0b6b3a76400006103e86005611181610a28565b61118b91906135e5565b611195919061366e565b61119f919061366e565b8110156111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d8906137a3565b60405180910390fd5b670de0b6b3a7640000816111f591906135e5565b600a81905550670de0b6b3a76400008261120f91906135e5565b6008819055505050565b6112216118a9565b73ffffffffffffffffffffffffffffffffffffffff1661123f610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90613398565b60405180910390fd5b7f000000000000000000000000905b2a8759d46b41db76edf655231f5cf1b1b5fe73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90613835565b60405180910390fd5b61132d828261259c565b5050565b600080600160006113406118a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f4906138c7565b60405180910390fd5b6114116114086118a9565b858584036118b1565b600191505092915050565b60006114306114296118a9565b8484611a7a565b6001905092915050565b600b60009054906101000a900460ff1681565b6114556118a9565b73ffffffffffffffffffffffffffffffffffffffff16611473610fbd565b73ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613398565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161156691906130d3565b60405180910390a25050565b60085481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115a86118a9565b73ffffffffffffffffffffffffffffffffffffffff166115c6610fbd565b73ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161390613398565b60405180910390fd5b620186a0600161162a610a28565b61163491906135e5565b61163e919061366e565b821015611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790613959565b60405180910390fd5b6103e8600561168d610a28565b61169791906135e5565b6116a1919061366e565b8211156116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da906139eb565b60405180910390fd5b8160098190555060019050919050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6117b46118a9565b73ffffffffffffffffffffffffffffffffffffffff166117d2610fbd565b73ffffffffffffffffffffffffffffffffffffffff1614611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f90613398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90613a7d565b60405180910390fd5b6118a0816124d6565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790613b0f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198690613ba1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a6d9190613177565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae090613c33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90613cc5565b60405180910390fd5b60008103611b7157611b6c8383600061263d565b6124d1565b611b79610fbd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611be75750611bb7610fbd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c205750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c735750600560149054906101000a900460ff16155b1561205657600b60009054906101000a900460ff16611d6d57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d2d5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6390613d31565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e105750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611eb757600854811115611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5190613dc3565b60405180910390fd5b600a54611e6683610d62565b82611e7191906133e7565b1115611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990613e2f565b60405180910390fd5b612055565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f5a5750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fa957600854811115611fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9b90613ec1565b60405180910390fd5b612054565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661205357600a5461200683610d62565b8261201191906133e7565b1115612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990613e2f565b60405180910390fd5b5b5b5b5b600061206130610d62565b9050600060095482101590508080156120865750600b60019054906101000a900460ff165b801561209f5750600560149054906101000a900460ff16155b80156120f55750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561214b5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121a15750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e5576001600560146101000a81548160ff0219169083151502179055506121c96128bc565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061229b5750601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122a557600090505b600081156124b857601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561230857506000600f54115b156123a2576123356064612327600f5488612b8890919063ffffffff16565b612b9e90919063ffffffff16565b9050600f546011548261234891906135e5565b612352919061366e565b6013600082825461236391906133e7565b92505081905550600f546010548261237b91906135e5565b612385919061366e565b6012600082825461239691906133e7565b92505081905550612494565b601760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123fd57506000600c54115b156124935761242a606461241c600c5488612b8890919063ffffffff16565b612b9e90919063ffffffff16565b9050600c54600e548261243d91906135e5565b612447919061366e565b6013600082825461245891906133e7565b92505081905550600c54600d548261247091906135e5565b61247a919061366e565b6012600082825461248b91906133e7565b925050819055505b5b60008111156124a9576124a887308361263d565b5b80856124b59190613ee1565b94505b6124c387878761263d565b601454600f81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390613c33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361271b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271290613cc5565b60405180910390fd5b612726838383612bb4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156127ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a390613f87565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461283f91906133e7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128a39190613177565b60405180910390a36128b6848484612bb9565b50505050565b60006128c730610d62565b905060006012546013546128db91906133e7565b90506000808314806128ed5750600082145b156128fa57505050612b86565b601460095461290991906135e5565b83111561292257601460095461291f91906135e5565b92505b60006002836013548661293591906135e5565b61293f919061366e565b612949919061366e565b905060006129608286612bbe90919063ffffffff16565b9050600047905061297082612bd4565b60006129858247612bbe90919063ffffffff16565b905060006129b0876129a260125485612b8890919063ffffffff16565b612b9e90919063ffffffff16565b9050600081836129c09190613ee1565b9050600060138190555060006012819055506000861180156129e25750600081115b15612a2f576129f18682612e11565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601354604051612a2693929190613fa7565b60405180910390a15b60004790506000612a4a600283612b9e90919063ffffffff16565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051612a929061400f565b60006040518083038185875af1925050503d8060008114612acf576040519150601f19603f3d011682016040523d82523d6000602084013e612ad4565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b268284612bbe90919063ffffffff16565b604051612b329061400f565b60006040518083038185875af1925050503d8060008114612b6f576040519150601f19603f3d011682016040523d82523d6000602084013e612b74565b606091505b50508099505050505050505050505050505b565b60008183612b9691906135e5565b905092915050565b60008183612bac919061366e565b905092915050565b505050565b505050565b60008183612bcc9190613ee1565b905092915050565b6000600267ffffffffffffffff811115612bf157612bf0614024565b5b604051908082528060200260200182016040528015612c1f5781602001602082028036833780820191505090505b5090503081600081518110612c3757612c36614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d009190614097565b81600181518110612d1457612d13614053565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d79307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846118b1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ddb9594939291906141bd565b600060405180830381600087803b158015612df557600080fd5b505af1158015612e09573d6000803e3d6000fd5b505050505050565b612e3c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846118b1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ea396959493929190614217565b60606040518083038185885af1158015612ec1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ee6919061428d565b5050505050565b600080fd5b6000819050919050565b612f0581612ef2565b8114612f1057600080fd5b50565b600081359050612f2281612efc565b92915050565b60008060408385031215612f3f57612f3e612eed565b5b6000612f4d85828601612f13565b9250506020612f5e85828601612f13565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa2578082015181840152602081019050612f87565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fca82612f68565b612fd48185612f73565b9350612fe4818560208601612f84565b612fed81612fae565b840191505092915050565b600060208201905081810360008301526130128184612fbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130458261301a565b9050919050565b6130558161303a565b811461306057600080fd5b50565b6000813590506130728161304c565b92915050565b6000806040838503121561308f5761308e612eed565b5b600061309d85828601613063565b92505060206130ae85828601612f13565b9150509250929050565b60008115159050919050565b6130cd816130b8565b82525050565b60006020820190506130e860008301846130c4565b92915050565b6000819050919050565b600061311361310e6131098461301a565b6130ee565b61301a565b9050919050565b6000613125826130f8565b9050919050565b60006131378261311a565b9050919050565b6131478161312c565b82525050565b6000602082019050613162600083018461313e565b92915050565b61317181612ef2565b82525050565b600060208201905061318c6000830184613168565b92915050565b6000806000606084860312156131ab576131aa612eed565b5b60006131b986828701613063565b93505060206131ca86828701613063565b92505060406131db86828701612f13565b9150509250925092565b6131ee8161303a565b82525050565b600060208201905061320960008301846131e5565b92915050565b600060ff82169050919050565b6132258161320f565b82525050565b6000602082019050613240600083018461321c565b92915050565b60006020828403121561325c5761325b612eed565b5b600061326a84828501613063565b91505092915050565b61327c816130b8565b811461328757600080fd5b50565b60008135905061329981613273565b92915050565b600080604083850312156132b6576132b5612eed565b5b60006132c485828601613063565b92505060206132d58582860161328a565b9150509250929050565b6000602082840312156132f5576132f4612eed565b5b600061330384828501612f13565b91505092915050565b6000806040838503121561332357613322612eed565b5b600061333185828601613063565b925050602061334285828601613063565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613382602083612f73565b915061338d8261334c565b602082019050919050565b600060208201905081810360008301526133b181613375565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133f282612ef2565b91506133fd83612ef2565b9250828201905080821115613415576134146133b8565b5b92915050565b7f4d757374206b6565702066656573206174203825206f72206c65737300000000600082015250565b6000613451601c83612f73565b915061345c8261341b565b602082019050919050565b6000602082019050818103600083015261348081613444565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134ce57607f821691505b6020821081036134e1576134e0613487565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613543602883612f73565b915061354e826134e7565b604082019050919050565b6000602082019050818103600083015261357281613536565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b60006135af601c83612f73565b91506135ba82613579565b602082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b60006135f082612ef2565b91506135fb83612ef2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613634576136336133b8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061367982612ef2565b915061368483612ef2565b9250826136945761369361363f565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b60006136fb602183612f73565b91506137068261369f565b604082019050919050565b6000602082019050818103600083015261372a816136ee565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061378d602483612f73565b915061379882613731565b604082019050919050565b600060208201905081810360008301526137bc81613780565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061381f603983612f73565b915061382a826137c3565b604082019050919050565b6000602082019050818103600083015261384e81613812565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006138b1602583612f73565b91506138bc82613855565b604082019050919050565b600060208201905081810360008301526138e0816138a4565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613943603583612f73565b915061394e826138e7565b604082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006139d5603483612f73565b91506139e082613979565b604082019050919050565b60006020820190508181036000830152613a04816139c8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a67602683612f73565b9150613a7282613a0b565b604082019050919050565b60006020820190508181036000830152613a9681613a5a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613af9602483612f73565b9150613b0482613a9d565b604082019050919050565b60006020820190508181036000830152613b2881613aec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b8b602283612f73565b9150613b9682613b2f565b604082019050919050565b60006020820190508181036000830152613bba81613b7e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613c1d602583612f73565b9150613c2882613bc1565b604082019050919050565b60006020820190508181036000830152613c4c81613c10565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613caf602383612f73565b9150613cba82613c53565b604082019050919050565b60006020820190508181036000830152613cde81613ca2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613d1b601683612f73565b9150613d2682613ce5565b602082019050919050565b60006020820190508181036000830152613d4a81613d0e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613dad603583612f73565b9150613db882613d51565b604082019050919050565b60006020820190508181036000830152613ddc81613da0565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613e19601383612f73565b9150613e2482613de3565b602082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613eab603683612f73565b9150613eb682613e4f565b604082019050919050565b60006020820190508181036000830152613eda81613e9e565b9050919050565b6000613eec82612ef2565b9150613ef783612ef2565b9250828203905081811115613f0f57613f0e6133b8565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613f71602683612f73565b9150613f7c82613f15565b604082019050919050565b60006020820190508181036000830152613fa081613f64565b9050919050565b6000606082019050613fbc6000830186613168565b613fc96020830185613168565b613fd66040830184613168565b949350505050565b600081905092915050565b50565b6000613ff9600083613fde565b915061400482613fe9565b600082019050919050565b600061401a82613fec565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506140918161304c565b92915050565b6000602082840312156140ad576140ac612eed565b5b60006140bb84828501614082565b91505092915050565b6000819050919050565b60006140e96140e46140df846140c4565b6130ee565b612ef2565b9050919050565b6140f9816140ce565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141348161303a565b82525050565b6000614146838361412b565b60208301905092915050565b6000602082019050919050565b600061416a826140ff565b614174818561410a565b935061417f8361411b565b8060005b838110156141b0578151614197888261413a565b97506141a283614152565b925050600181019050614183565b5085935050505092915050565b600060a0820190506141d26000830188613168565b6141df60208301876140f0565b81810360408301526141f1818661415f565b905061420060608301856131e5565b61420d6080830184613168565b9695505050505050565b600060c08201905061422c60008301896131e5565b6142396020830188613168565b61424660408301876140f0565b61425360608301866140f0565b61426060808301856131e5565b61426d60a0830184613168565b979650505050505050565b60008151905061428781612efc565b92915050565b6000806000606084860312156142a6576142a5612eed565b5b60006142b486828701614278565b93505060206142c586828701614278565b92505060406142d686828701614278565b915050925092509256fea2646970667358221220d5503077117b5da249dc4d2549418ba7e6e440018d6dad38f4e5487c7fcfebfc64736f6c63430008100033

Deployed Bytecode Sourcemap

21745:12566:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26891:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10281:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11195:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21828:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10602:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11372:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21931:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10501:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11872:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21886:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27975:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26550:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22403:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22251:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10718:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8406:112;;;;;;;;;;;;;:::i;:::-;;26375:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25238:112;;;;;;;;;;;;;:::i;:::-;;8183:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10389:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25863:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27467:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12095:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10853:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22211:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27277:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22096:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22057:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25358:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22291:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11036:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22023:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22138:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8526:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22178:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26891:378;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27035:13:::1;27016:16;:32;;;;27078:13;27059:16;:32;;;;27137:16;;27118;;:35;;;;:::i;:::-;27102:13;:51;;;;27178:13;;27164:11;:27;;;;27227:1;27210:13;;:18;;27202:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;26891:378:::0;;:::o;10281:100::-;10335:13;10368:5;10361:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10281:100;:::o;11195:169::-;11278:4;11295:39;11304:12;:10;:12::i;:::-;11318:7;11327:6;11295:8;:39::i;:::-;11352:4;11345:11;;11195:169;;;;:::o;21828:51::-;;;:::o;10602:108::-;10663:7;10690:12;;10683:19;;10602:108;:::o;11372:492::-;11512:4;11529:36;11539:6;11547:9;11558:6;11529:9;:36::i;:::-;11578:24;11605:11;:19;11617:6;11605:19;;;;;;;;;;;;;;;:33;11625:12;:10;:12::i;:::-;11605:33;;;;;;;;;;;;;;;;11578:60;;11677:6;11657:16;:26;;11649:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11764:57;11773:6;11781:12;:10;:12::i;:::-;11814:6;11795:16;:25;11764:8;:57::i;:::-;11852:4;11845:11;;;11372:492;;;;;:::o;21931:53::-;21977:6;21931:53;:::o;10501:93::-;10559:5;10584:2;10577:9;;10501:93;:::o;11872:215::-;11960:4;11977:80;11986:12;:10;:12::i;:::-;12000:7;12046:10;12009:11;:25;12021:12;:10;:12::i;:::-;12009:25;;;;;;;;;;;;;;;:34;12035:7;12009:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11977:8;:80::i;:::-;12075:4;12068:11;;11872:215;;;;:::o;21886:38::-;;;:::o;27975:126::-;28041:4;28065:19;:28;28085:7;28065:28;;;;;;;;;;;;;;;;;;;;;;;;;28058:35;;27975:126;;;:::o;26550:333::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26692:13:::1;26674:15;:31;;;;26734:13;26716:15;:31;;;;26791:15;;26773;;:33;;;;:::i;:::-;26758:12;:48;;;;26841:1;26825:12;;:17;;26817:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;26550:333:::0;;:::o;22403:28::-;;;;:::o;22251:31::-;;;;;;;;;;;;;:::o;10718:127::-;10792:7;10819:9;:18;10829:7;10819:18;;;;;;;;;;;;;;;;10812:25;;10718:127;;;:::o;8406:112::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8480:30:::1;8507:1;8480:18;:30::i;:::-;8406:112::o:0;26375:167::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26530:4:::1;26488:31;:39;26520:6;26488:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;26375:167:::0;;:::o;25238:112::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25309:4:::1;25293:13;;:20;;;;;;;;;;;;;;;;;;25338:4;25324:11;;:18;;;;;;;;;;;;;;;;;;25238:112::o:0;8183:87::-;8229:7;8256:6;;;;;;;;;;;8249:13;;8183:87;:::o;10389:104::-;10445:13;10478:7;10471:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10389:104;:::o;25863:504::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26040:4:::1;26032;26027:1;26011:13;:11;:13::i;:::-;:17;;;;:::i;:::-;26010:26;;;;:::i;:::-;26009:35;;;;:::i;:::-;25996:9;:48;;25974:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;26188:4;26180;26175:1;26159:13;:11;:13::i;:::-;:17;;;;:::i;:::-;26158:26;;;;:::i;:::-;26157:35;;;;:::i;:::-;26138:15;:54;;26116:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;26298:6;26279:15;:26;;;;:::i;:::-;26267:9;:38;;;;26352:6;26339:9;:20;;;;:::i;:::-;26316;:43;;;;25863:504:::0;;:::o;27467:304::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27611:13:::1;27603:21;;:4;:21;;::::0;27581:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27722:41;27751:4;27757:5;27722:28;:41::i;:::-;27467:304:::0;;:::o;12095:413::-;12188:4;12205:24;12232:11;:25;12244:12;:10;:12::i;:::-;12232:25;;;;;;;;;;;;;;;:34;12258:7;12232:34;;;;;;;;;;;;;;;;12205:61;;12305:15;12285:16;:35;;12277:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12398:67;12407:12;:10;:12::i;:::-;12421:7;12449:15;12430:16;:34;12398:8;:67::i;:::-;12496:4;12489:11;;;12095:413;;;;:::o;10853:175::-;10939:4;10956:42;10966:12;:10;:12::i;:::-;10980:9;10991:6;10956:9;:42::i;:::-;11016:4;11009:11;;10853:175;;;;:::o;22211:33::-;;;;;;;;;;;;;:::o;27277:182::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27393:8:::1;27362:19;:28;27382:7;27362:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27433:7;27417:34;;;27442:8;27417:34;;;;;;:::i;:::-;;;;;;;;27277:182:::0;;:::o;22096:35::-;;;;:::o;22057:30::-;;;;;;;;;;;;;:::o;25358:497::-;25466:4;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25545:6:::1;25540:1;25524:13;:11;:13::i;:::-;:17;;;;:::i;:::-;25523:28;;;;:::i;:::-;25510:9;:41;;25488:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;25700:4;25695:1;25679:13;:11;:13::i;:::-;:17;;;;:::i;:::-;25678:26;;;;:::i;:::-;25665:9;:39;;25643:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;25816:9;25795:18;:30;;;;25843:4;25836:11;;25358:497:::0;;;:::o;22291:27::-;;;;:::o;11036:151::-;11125:7;11152:11;:18;11164:5;11152:18;;;;;;;;;;;;;;;:27;11171:7;11152:27;;;;;;;;;;;;;;;;11145:34;;11036:151;;;;:::o;22023:27::-;;;;;;;;;;;;;:::o;22138:33::-;;;;:::o;8526:201::-;8329:12;:10;:12::i;:::-;8318:23;;:7;:5;:7::i;:::-;:23;;;8310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8635:1:::1;8615:22;;:8;:22;;::::0;8607:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8691:28;8710:8;8691:18;:28::i;:::-;8526:201:::0;:::o;22178:24::-;;;;:::o;7729:98::-;7782:7;7809:10;7802:17;;7729:98;:::o;13664:380::-;13817:1;13800:19;;:5;:19;;;13792:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13898:1;13879:21;;:7;:21;;;13871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13982:6;13952:11;:18;13964:5;13952:18;;;;;;;;;;;;;;;:27;13971:7;13952:27;;;;;;;;;;;;;;;:36;;;;14020:7;14004:32;;14013:5;14004:32;;;14029:6;14004:32;;;;;;:::i;:::-;;;;;;;;13664:380;;;:::o;28109:3667::-;28257:1;28241:18;;:4;:18;;;28233:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28334:1;28320:16;;:2;:16;;;28312:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28403:1;28393:6;:11;28389:93;;28421:28;28437:4;28443:2;28447:1;28421:15;:28::i;:::-;28464:7;;28389:93;28532:7;:5;:7::i;:::-;28524:15;;:4;:15;;;;:49;;;;;28566:7;:5;:7::i;:::-;28560:13;;:2;:13;;;;28524:49;:86;;;;;28608:1;28594:16;;:2;:16;;;;28524:86;:128;;;;;28645:6;28631:21;;:2;:21;;;;28524:128;:158;;;;;28674:8;;;;;;;;;;;28673:9;28524:158;28502:1684;;;28722:13;;;;;;;;;;;28717:223;;28794:19;:25;28814:4;28794:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28823:19;:23;28843:2;28823:23;;;;;;;;;;;;;;;;;;;;;;;;;28794:52;28760:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;28717:223;29014:25;:31;29040:4;29014:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;29071:31;:35;29103:2;29071:35;;;;;;;;;;;;;;;;;;;;;;;;;29070:36;29014:92;28988:1183;;;29193:20;;29183:6;:30;;29149:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;29401:9;;29384:13;29394:2;29384:9;:13::i;:::-;29375:6;:22;;;;:::i;:::-;:35;;29341:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28988:1183;;;29579:25;:29;29605:2;29579:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;29634:31;:37;29666:4;29634:37;;;;;;;;;;;;;;;;;;;;;;;;;29633:38;29579:92;29553:618;;;29758:20;;29748:6;:30;;29714:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;29553:618;;;29951:31;:35;29983:2;29951:35;;;;;;;;;;;;;;;;;;;;;;;;;29946:225;;30071:9;;30054:13;30064:2;30054:9;:13::i;:::-;30045:6;:22;;;;:::i;:::-;:35;;30011:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;29946:225;29553:618;28988:1183;28502:1684;30198:28;30229:24;30247:4;30229:9;:24::i;:::-;30198:55;;30266:12;30305:18;;30281:20;:42;;30266:57;;30354:7;:35;;;;;30378:11;;;;;;;;;;;30354:35;:61;;;;;30407:8;;;;;;;;;;;30406:9;30354:61;:110;;;;;30433:25;:31;30459:4;30433:31;;;;;;;;;;;;;;;;;;;;;;;;;30432:32;30354:110;:153;;;;;30482:19;:25;30502:4;30482:25;;;;;;;;;;;;;;;;;;;;;;;;;30481:26;30354:153;:194;;;;;30525:19;:23;30545:2;30525:23;;;;;;;;;;;;;;;;;;;;;;;;;30524:24;30354:194;30336:326;;;30586:4;30575:8;;:15;;;;;;;;;;;;;;;;;;30607:10;:8;:10::i;:::-;30645:5;30634:8;;:16;;;;;;;;;;;;;;;;;;30336:326;30674:12;30690:8;;;;;;;;;;;30689:9;30674:24;;30715:19;:25;30735:4;30715:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;30744:19;:23;30764:2;30744:23;;;;;;;;;;;;;;;;;;;;;;;;;30715:52;30711:100;;;30794:5;30784:15;;30711:100;30823:12;30856:7;30852:831;;;30908:25;:29;30934:2;30908:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;30957:1;30941:13;;:17;30908:50;30904:630;;;30986:34;31016:3;30986:25;30997:13;;30986:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;30979:41;;31089:13;;31069:16;;31062:4;:23;;;;:::i;:::-;31061:41;;;;:::i;:::-;31039:18;;:63;;;;;;;:::i;:::-;;;;;;;;31171:13;;31151:16;;31144:4;:23;;;;:::i;:::-;31143:41;;;;:::i;:::-;31121:18;;:63;;;;;;;:::i;:::-;;;;;;;;30904:630;;;31246:25;:31;31272:4;31246:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;31296:1;31281:12;;:16;31246:51;31242:292;;;31325:33;31354:3;31325:24;31336:12;;31325:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;31318:40;;31426:12;;31407:15;;31400:4;:22;;;;:::i;:::-;31399:39;;;;:::i;:::-;31377:18;;:61;;;;;;;:::i;:::-;;;;;;;;31506:12;;31487:15;;31480:4;:22;;;;:::i;:::-;31479:39;;;;:::i;:::-;31457:18;;:61;;;;;;;:::i;:::-;;;;;;;;31242:292;30904:630;31561:1;31554:4;:8;31550:91;;;31583:42;31599:4;31613;31620;31583:15;:42::i;:::-;31550:91;31667:4;31657:14;;;;;:::i;:::-;;;30852:831;31695:33;31711:4;31717:2;31721:6;31695:15;:33::i;:::-;31755:11;;31739:13;:27;;;;28222:3554;;;;28109:3667;;;;:::o;8735:191::-;8809:16;8828:6;;;;;;;;;;;8809:25;;8854:8;8845:6;;:17;;;;;;;;;;;;;;;;;;8909:8;8878:40;;8899:8;8878:40;;;;;;;;;;;;8798:128;8735:191;:::o;27779:188::-;27896:5;27862:25;:31;27888:4;27862:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27953:5;27919:40;;27947:4;27919:40;;;;;;;;;;;;27779:188;;:::o;12516:733::-;12674:1;12656:20;;:6;:20;;;12648:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12758:1;12737:23;;:9;:23;;;12729:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12813:47;12834:6;12842:9;12853:6;12813:20;:47::i;:::-;12873:21;12897:9;:17;12907:6;12897:17;;;;;;;;;;;;;;;;12873:41;;12950:6;12933:13;:23;;12925:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13071:6;13055:13;:22;13035:9;:17;13045:6;13035:17;;;;;;;;;;;;;;;:42;;;;13123:6;13099:9;:20;13109:9;13099:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13164:9;13147:35;;13156:6;13147:35;;;13175:6;13147:35;;;;;;:::i;:::-;;;;;;;;13195:46;13215:6;13223:9;13234:6;13195:19;:46::i;:::-;12637:612;12516:733;;;:::o;32671:1637::-;32710:23;32736:24;32754:4;32736:9;:24::i;:::-;32710:50;;32771:25;32833:18;;32799;;:52;;;;:::i;:::-;32771:80;;32862:12;32910:1;32891:15;:20;:46;;;;32936:1;32915:17;:22;32891:46;32887:85;;;32954:7;;;;;32887:85;33027:2;33006:18;;:23;;;;:::i;:::-;32988:15;:41;32984:115;;;33085:2;33064:18;;:23;;;;:::i;:::-;33046:41;;32984:115;33111:23;33224:1;33191:17;33156:18;;33138:15;:36;;;;:::i;:::-;33137:71;;;;:::i;:::-;:88;;;;:::i;:::-;33111:114;;33236:26;33265:36;33285:15;33265;:19;;:36;;;;:::i;:::-;33236:65;;33314:25;33342:21;33314:49;;33376:36;33393:18;33376:16;:36::i;:::-;33425:18;33446:44;33472:17;33446:21;:25;;:44;;;;:::i;:::-;33425:65;;33503:23;33529:81;33582:17;33529:34;33544:18;;33529:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;33503:107;;33623:23;33662:15;33649:10;:28;;;;:::i;:::-;33623:54;;33711:1;33690:18;:22;;;;33744:1;33723:18;:22;;;;33780:1;33762:15;:19;:42;;;;;33803:1;33785:15;:19;33762:42;33758:278;;;33821:46;33834:15;33851;33821:12;:46::i;:::-;33887:137;33920:18;33957:15;33991:18;;33887:137;;;;;;;;:::i;:::-;;;;;;;;33758:278;34048:24;34075:21;34048:48;;34107:8;34118:23;34139:1;34118:16;:20;;:23;;;;:::i;:::-;34107:34;;34174:12;;;;;;;;;;;34166:26;;34200:3;34166:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34152:56;;;;;34241:15;;;;;;;;;;;34233:29;;34270:25;34291:3;34270:16;:20;;:25;;;;:::i;:::-;34233:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34219:81;;;;;32699:1609;;;;;;;;;;;32671:1637;:::o;15670:98::-;15728:7;15759:1;15755;:5;;;;:::i;:::-;15748:12;;15670:98;;;;:::o;15776:::-;15834:7;15865:1;15861;:5;;;;:::i;:::-;15854:12;;15776:98;;;;:::o;14052:125::-;;;;:::o;14185:124::-;;;;:::o;15564:98::-;15622:7;15653:1;15649;:5;;;;:::i;:::-;15642:12;;15564:98;;;;:::o;31784:503::-;31852:21;31890:1;31876:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31852:40;;31921:4;31903;31908:1;31903:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;31947:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31937:4;31942:1;31937:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;31982:62;31999:4;32014:15;32032:11;31982:8;:62::i;:::-;32083:15;:66;;;32164:11;32190:1;32206:4;32233;32253:15;32083:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31839:448;31784:503;:::o;32295:368::-;32378:62;32395:4;32410:15;32428:11;32378:8;:62::i;:::-;32453:15;:31;;;32492:9;32525:4;32545:11;32571:1;32587;21977:6;32629:15;32453:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32295:368;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:118::-;5968:24;5986:5;5968:24;:::i;:::-;5963:3;5956:37;5881:118;;:::o;6005:222::-;6098:4;6136:2;6125:9;6121:18;6113:26;;6149:71;6217:1;6206:9;6202:17;6193:6;6149:71;:::i;:::-;6005:222;;;;:::o;6233:86::-;6268:7;6308:4;6301:5;6297:16;6286:27;;6233:86;;;:::o;6325:112::-;6408:22;6424:5;6408:22;:::i;:::-;6403:3;6396:35;6325:112;;:::o;6443:214::-;6532:4;6570:2;6559:9;6555:18;6547:26;;6583:67;6647:1;6636:9;6632:17;6623:6;6583:67;:::i;:::-;6443:214;;;;:::o;6663:329::-;6722:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:119;;;6777:79;;:::i;:::-;6739:119;6897:1;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6868:117;6663:329;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:329::-;7792:6;7841:2;7829:9;7820:7;7816:23;7812:32;7809:119;;;7847:79;;:::i;:::-;7809:119;7967:1;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7938:117;7733:329;;;;:::o;8068:474::-;8136:6;8144;8193:2;8181:9;8172:7;8168:23;8164:32;8161:119;;;8199:79;;:::i;:::-;8161:119;8319:1;8344:53;8389:7;8380:6;8369:9;8365:22;8344:53;:::i;:::-;8334:63;;8290:117;8446:2;8472:53;8517:7;8508:6;8497:9;8493:22;8472:53;:::i;:::-;8462:63;;8417:118;8068:474;;;;;:::o;8548:182::-;8688:34;8684:1;8676:6;8672:14;8665:58;8548:182;:::o;8736:366::-;8878:3;8899:67;8963:2;8958:3;8899:67;:::i;:::-;8892:74;;8975:93;9064:3;8975:93;:::i;:::-;9093:2;9088:3;9084:12;9077:19;;8736:366;;;:::o;9108:419::-;9274:4;9312:2;9301:9;9297:18;9289:26;;9361:9;9355:4;9351:20;9347:1;9336:9;9332:17;9325:47;9389:131;9515:4;9389:131;:::i;:::-;9381:139;;9108:419;;;:::o;9533:180::-;9581:77;9578:1;9571:88;9678:4;9675:1;9668:15;9702:4;9699:1;9692:15;9719:191;9759:3;9778:20;9796:1;9778:20;:::i;:::-;9773:25;;9812:20;9830:1;9812:20;:::i;:::-;9807:25;;9855:1;9852;9848:9;9841:16;;9876:3;9873:1;9870:10;9867:36;;;9883:18;;:::i;:::-;9867:36;9719:191;;;;:::o;9916:178::-;10056:30;10052:1;10044:6;10040:14;10033:54;9916:178;:::o;10100:366::-;10242:3;10263:67;10327:2;10322:3;10263:67;:::i;:::-;10256:74;;10339:93;10428:3;10339:93;:::i;:::-;10457:2;10452:3;10448:12;10441:19;;10100:366;;;:::o;10472:419::-;10638:4;10676:2;10665:9;10661:18;10653:26;;10725:9;10719:4;10715:20;10711:1;10700:9;10696:17;10689:47;10753:131;10879:4;10753:131;:::i;:::-;10745:139;;10472:419;;;:::o;10897:180::-;10945:77;10942:1;10935:88;11042:4;11039:1;11032:15;11066:4;11063:1;11056:15;11083:320;11127:6;11164:1;11158:4;11154:12;11144:22;;11211:1;11205:4;11201:12;11232:18;11222:81;;11288:4;11280:6;11276:17;11266:27;;11222:81;11350:2;11342:6;11339:14;11319:18;11316:38;11313:84;;11369:18;;:::i;:::-;11313:84;11134:269;11083:320;;;:::o;11409:227::-;11549:34;11545:1;11537:6;11533:14;11526:58;11618:10;11613:2;11605:6;11601:15;11594:35;11409:227;:::o;11642:366::-;11784:3;11805:67;11869:2;11864:3;11805:67;:::i;:::-;11798:74;;11881:93;11970:3;11881:93;:::i;:::-;11999:2;11994:3;11990:12;11983:19;;11642:366;;;:::o;12014:419::-;12180:4;12218:2;12207:9;12203:18;12195:26;;12267:9;12261:4;12257:20;12253:1;12242:9;12238:17;12231:47;12295:131;12421:4;12295:131;:::i;:::-;12287:139;;12014:419;;;:::o;12439:178::-;12579:30;12575:1;12567:6;12563:14;12556:54;12439:178;:::o;12623:366::-;12765:3;12786:67;12850:2;12845:3;12786:67;:::i;:::-;12779:74;;12862:93;12951:3;12862:93;:::i;:::-;12980:2;12975:3;12971:12;12964:19;;12623:366;;;:::o;12995:419::-;13161:4;13199:2;13188:9;13184:18;13176:26;;13248:9;13242:4;13238:20;13234:1;13223:9;13219:17;13212:47;13276:131;13402:4;13276:131;:::i;:::-;13268:139;;12995:419;;;:::o;13420:348::-;13460:7;13483:20;13501:1;13483:20;:::i;:::-;13478:25;;13517:20;13535:1;13517:20;:::i;:::-;13512:25;;13705:1;13637:66;13633:74;13630:1;13627:81;13622:1;13615:9;13608:17;13604:105;13601:131;;;13712:18;;:::i;:::-;13601:131;13760:1;13757;13753:9;13742:20;;13420:348;;;;:::o;13774:180::-;13822:77;13819:1;13812:88;13919:4;13916:1;13909:15;13943:4;13940:1;13933:15;13960:185;14000:1;14017:20;14035:1;14017:20;:::i;:::-;14012:25;;14051:20;14069:1;14051:20;:::i;:::-;14046:25;;14090:1;14080:35;;14095:18;;:::i;:::-;14080:35;14137:1;14134;14130:9;14125:14;;13960:185;;;;:::o;14151:220::-;14291:34;14287:1;14279:6;14275:14;14268:58;14360:3;14355:2;14347:6;14343:15;14336:28;14151:220;:::o;14377:366::-;14519:3;14540:67;14604:2;14599:3;14540:67;:::i;:::-;14533:74;;14616:93;14705:3;14616:93;:::i;:::-;14734:2;14729:3;14725:12;14718:19;;14377:366;;;:::o;14749:419::-;14915:4;14953:2;14942:9;14938:18;14930:26;;15002:9;14996:4;14992:20;14988:1;14977:9;14973:17;14966:47;15030:131;15156:4;15030:131;:::i;:::-;15022:139;;14749:419;;;:::o;15174:223::-;15314:34;15310:1;15302:6;15298:14;15291:58;15383:6;15378:2;15370:6;15366:15;15359:31;15174:223;:::o;15403:366::-;15545:3;15566:67;15630:2;15625:3;15566:67;:::i;:::-;15559:74;;15642:93;15731:3;15642:93;:::i;:::-;15760:2;15755:3;15751:12;15744:19;;15403:366;;;:::o;15775:419::-;15941:4;15979:2;15968:9;15964:18;15956:26;;16028:9;16022:4;16018:20;16014:1;16003:9;15999:17;15992:47;16056:131;16182:4;16056:131;:::i;:::-;16048:139;;15775:419;;;:::o;16200:244::-;16340:34;16336:1;16328:6;16324:14;16317:58;16409:27;16404:2;16396:6;16392:15;16385:52;16200:244;:::o;16450:366::-;16592:3;16613:67;16677:2;16672:3;16613:67;:::i;:::-;16606:74;;16689:93;16778:3;16689:93;:::i;:::-;16807:2;16802:3;16798:12;16791:19;;16450:366;;;:::o;16822:419::-;16988:4;17026:2;17015:9;17011:18;17003:26;;17075:9;17069:4;17065:20;17061:1;17050:9;17046:17;17039:47;17103:131;17229:4;17103:131;:::i;:::-;17095:139;;16822:419;;;:::o;17247:224::-;17387:34;17383:1;17375:6;17371:14;17364:58;17456:7;17451:2;17443:6;17439:15;17432:32;17247:224;:::o;17477:366::-;17619:3;17640:67;17704:2;17699:3;17640:67;:::i;:::-;17633:74;;17716:93;17805:3;17716:93;:::i;:::-;17834:2;17829:3;17825:12;17818:19;;17477:366;;;:::o;17849:419::-;18015:4;18053:2;18042:9;18038:18;18030:26;;18102:9;18096:4;18092:20;18088:1;18077:9;18073:17;18066:47;18130:131;18256:4;18130:131;:::i;:::-;18122:139;;17849:419;;;:::o;18274:240::-;18414:34;18410:1;18402:6;18398:14;18391:58;18483:23;18478:2;18470:6;18466:15;18459:48;18274:240;:::o;18520:366::-;18662:3;18683:67;18747:2;18742:3;18683:67;:::i;:::-;18676:74;;18759:93;18848:3;18759:93;:::i;:::-;18877:2;18872:3;18868:12;18861:19;;18520:366;;;:::o;18892:419::-;19058:4;19096:2;19085:9;19081:18;19073:26;;19145:9;19139:4;19135:20;19131:1;19120:9;19116:17;19109:47;19173:131;19299:4;19173:131;:::i;:::-;19165:139;;18892:419;;;:::o;19317:239::-;19457:34;19453:1;19445:6;19441:14;19434:58;19526:22;19521:2;19513:6;19509:15;19502:47;19317:239;:::o;19562:366::-;19704:3;19725:67;19789:2;19784:3;19725:67;:::i;:::-;19718:74;;19801:93;19890:3;19801:93;:::i;:::-;19919:2;19914:3;19910:12;19903:19;;19562:366;;;:::o;19934:419::-;20100:4;20138:2;20127:9;20123:18;20115:26;;20187:9;20181:4;20177:20;20173:1;20162:9;20158:17;20151:47;20215:131;20341:4;20215:131;:::i;:::-;20207:139;;19934:419;;;:::o;20359:225::-;20499:34;20495:1;20487:6;20483:14;20476:58;20568:8;20563:2;20555:6;20551:15;20544:33;20359:225;:::o;20590:366::-;20732:3;20753:67;20817:2;20812:3;20753:67;:::i;:::-;20746:74;;20829:93;20918:3;20829:93;:::i;:::-;20947:2;20942:3;20938:12;20931:19;;20590:366;;;:::o;20962:419::-;21128:4;21166:2;21155:9;21151:18;21143:26;;21215:9;21209:4;21205:20;21201:1;21190:9;21186:17;21179:47;21243:131;21369:4;21243:131;:::i;:::-;21235:139;;20962:419;;;:::o;21387:223::-;21527:34;21523:1;21515:6;21511:14;21504:58;21596:6;21591:2;21583:6;21579:15;21572:31;21387:223;:::o;21616:366::-;21758:3;21779:67;21843:2;21838:3;21779:67;:::i;:::-;21772:74;;21855:93;21944:3;21855:93;:::i;:::-;21973:2;21968:3;21964:12;21957:19;;21616:366;;;:::o;21988:419::-;22154:4;22192:2;22181:9;22177:18;22169:26;;22241:9;22235:4;22231:20;22227:1;22216:9;22212:17;22205:47;22269:131;22395:4;22269:131;:::i;:::-;22261:139;;21988:419;;;:::o;22413:221::-;22553:34;22549:1;22541:6;22537:14;22530:58;22622:4;22617:2;22609:6;22605:15;22598:29;22413:221;:::o;22640:366::-;22782:3;22803:67;22867:2;22862:3;22803:67;:::i;:::-;22796:74;;22879:93;22968:3;22879:93;:::i;:::-;22997:2;22992:3;22988:12;22981:19;;22640:366;;;:::o;23012:419::-;23178:4;23216:2;23205:9;23201:18;23193:26;;23265:9;23259:4;23255:20;23251:1;23240:9;23236:17;23229:47;23293:131;23419:4;23293:131;:::i;:::-;23285:139;;23012:419;;;:::o;23437:224::-;23577:34;23573:1;23565:6;23561:14;23554:58;23646:7;23641:2;23633:6;23629:15;23622:32;23437:224;:::o;23667:366::-;23809:3;23830:67;23894:2;23889:3;23830:67;:::i;:::-;23823:74;;23906:93;23995:3;23906:93;:::i;:::-;24024:2;24019:3;24015:12;24008:19;;23667:366;;;:::o;24039:419::-;24205:4;24243:2;24232:9;24228:18;24220:26;;24292:9;24286:4;24282:20;24278:1;24267:9;24263:17;24256:47;24320:131;24446:4;24320:131;:::i;:::-;24312:139;;24039:419;;;:::o;24464:222::-;24604:34;24600:1;24592:6;24588:14;24581:58;24673:5;24668:2;24660:6;24656:15;24649:30;24464:222;:::o;24692:366::-;24834:3;24855:67;24919:2;24914:3;24855:67;:::i;:::-;24848:74;;24931:93;25020:3;24931:93;:::i;:::-;25049:2;25044:3;25040:12;25033:19;;24692:366;;;:::o;25064:419::-;25230:4;25268:2;25257:9;25253:18;25245:26;;25317:9;25311:4;25307:20;25303:1;25292:9;25288:17;25281:47;25345:131;25471:4;25345:131;:::i;:::-;25337:139;;25064:419;;;:::o;25489:172::-;25629:24;25625:1;25617:6;25613:14;25606:48;25489:172;:::o;25667:366::-;25809:3;25830:67;25894:2;25889:3;25830:67;:::i;:::-;25823:74;;25906:93;25995:3;25906:93;:::i;:::-;26024:2;26019:3;26015:12;26008:19;;25667:366;;;:::o;26039:419::-;26205:4;26243:2;26232:9;26228:18;26220:26;;26292:9;26286:4;26282:20;26278:1;26267:9;26263:17;26256:47;26320:131;26446:4;26320:131;:::i;:::-;26312:139;;26039:419;;;:::o;26464:240::-;26604:34;26600:1;26592:6;26588:14;26581:58;26673:23;26668:2;26660:6;26656:15;26649:48;26464:240;:::o;26710:366::-;26852:3;26873:67;26937:2;26932:3;26873:67;:::i;:::-;26866:74;;26949:93;27038:3;26949:93;:::i;:::-;27067:2;27062:3;27058:12;27051:19;;26710:366;;;:::o;27082:419::-;27248:4;27286:2;27275:9;27271:18;27263:26;;27335:9;27329:4;27325:20;27321:1;27310:9;27306:17;27299:47;27363:131;27489:4;27363:131;:::i;:::-;27355:139;;27082:419;;;:::o;27507:169::-;27647:21;27643:1;27635:6;27631:14;27624:45;27507:169;:::o;27682:366::-;27824:3;27845:67;27909:2;27904:3;27845:67;:::i;:::-;27838:74;;27921:93;28010:3;27921:93;:::i;:::-;28039:2;28034:3;28030:12;28023:19;;27682:366;;;:::o;28054:419::-;28220:4;28258:2;28247:9;28243:18;28235:26;;28307:9;28301:4;28297:20;28293:1;28282:9;28278:17;28271:47;28335:131;28461:4;28335:131;:::i;:::-;28327:139;;28054:419;;;:::o;28479:241::-;28619:34;28615:1;28607:6;28603:14;28596:58;28688:24;28683:2;28675:6;28671:15;28664:49;28479:241;:::o;28726:366::-;28868:3;28889:67;28953:2;28948:3;28889:67;:::i;:::-;28882:74;;28965:93;29054:3;28965:93;:::i;:::-;29083:2;29078:3;29074:12;29067:19;;28726:366;;;:::o;29098:419::-;29264:4;29302:2;29291:9;29287:18;29279:26;;29351:9;29345:4;29341:20;29337:1;29326:9;29322:17;29315:47;29379:131;29505:4;29379:131;:::i;:::-;29371:139;;29098:419;;;:::o;29523:194::-;29563:4;29583:20;29601:1;29583:20;:::i;:::-;29578:25;;29617:20;29635:1;29617:20;:::i;:::-;29612:25;;29661:1;29658;29654:9;29646:17;;29685:1;29679:4;29676:11;29673:37;;;29690:18;;:::i;:::-;29673:37;29523:194;;;;:::o;29723:225::-;29863:34;29859:1;29851:6;29847:14;29840:58;29932:8;29927:2;29919:6;29915:15;29908:33;29723:225;:::o;29954:366::-;30096:3;30117:67;30181:2;30176:3;30117:67;:::i;:::-;30110:74;;30193:93;30282:3;30193:93;:::i;:::-;30311:2;30306:3;30302:12;30295:19;;29954:366;;;:::o;30326:419::-;30492:4;30530:2;30519:9;30515:18;30507:26;;30579:9;30573:4;30569:20;30565:1;30554:9;30550:17;30543:47;30607:131;30733:4;30607:131;:::i;:::-;30599:139;;30326:419;;;:::o;30751:442::-;30900:4;30938:2;30927:9;30923:18;30915:26;;30951:71;31019:1;31008:9;31004:17;30995:6;30951:71;:::i;:::-;31032:72;31100:2;31089:9;31085:18;31076:6;31032:72;:::i;:::-;31114;31182:2;31171:9;31167:18;31158:6;31114:72;:::i;:::-;30751:442;;;;;;:::o;31199:147::-;31300:11;31337:3;31322:18;;31199:147;;;;:::o;31352:114::-;;:::o;31472:398::-;31631:3;31652:83;31733:1;31728:3;31652:83;:::i;:::-;31645:90;;31744:93;31833:3;31744:93;:::i;:::-;31862:1;31857:3;31853:11;31846:18;;31472:398;;;:::o;31876:379::-;32060:3;32082:147;32225:3;32082:147;:::i;:::-;32075:154;;32246:3;32239:10;;31876:379;;;:::o;32261:180::-;32309:77;32306:1;32299:88;32406:4;32403:1;32396:15;32430:4;32427:1;32420:15;32447:180;32495:77;32492:1;32485:88;32592:4;32589:1;32582:15;32616:4;32613:1;32606:15;32633:143;32690:5;32721:6;32715:13;32706:22;;32737:33;32764:5;32737:33;:::i;:::-;32633:143;;;;:::o;32782:351::-;32852:6;32901:2;32889:9;32880:7;32876:23;32872:32;32869:119;;;32907:79;;:::i;:::-;32869:119;33027:1;33052:64;33108:7;33099:6;33088:9;33084:22;33052:64;:::i;:::-;33042:74;;32998:128;32782:351;;;;:::o;33139:85::-;33184:7;33213:5;33202:16;;33139:85;;;:::o;33230:158::-;33288:9;33321:61;33339:42;33348:32;33374:5;33348:32;:::i;:::-;33339:42;:::i;:::-;33321:61;:::i;:::-;33308:74;;33230:158;;;:::o;33394:147::-;33489:45;33528:5;33489:45;:::i;:::-;33484:3;33477:58;33394:147;;:::o;33547:114::-;33614:6;33648:5;33642:12;33632:22;;33547:114;;;:::o;33667:184::-;33766:11;33800:6;33795:3;33788:19;33840:4;33835:3;33831:14;33816:29;;33667:184;;;;:::o;33857:132::-;33924:4;33947:3;33939:11;;33977:4;33972:3;33968:14;33960:22;;33857:132;;;:::o;33995:108::-;34072:24;34090:5;34072:24;:::i;:::-;34067:3;34060:37;33995:108;;:::o;34109:179::-;34178:10;34199:46;34241:3;34233:6;34199:46;:::i;:::-;34277:4;34272:3;34268:14;34254:28;;34109:179;;;;:::o;34294:113::-;34364:4;34396;34391:3;34387:14;34379:22;;34294:113;;;:::o;34443:732::-;34562:3;34591:54;34639:5;34591:54;:::i;:::-;34661:86;34740:6;34735:3;34661:86;:::i;:::-;34654:93;;34771:56;34821:5;34771:56;:::i;:::-;34850:7;34881:1;34866:284;34891:6;34888:1;34885:13;34866:284;;;34967:6;34961:13;34994:63;35053:3;35038:13;34994:63;:::i;:::-;34987:70;;35080:60;35133:6;35080:60;:::i;:::-;35070:70;;34926:224;34913:1;34910;34906:9;34901:14;;34866:284;;;34870:14;35166:3;35159:10;;34567:608;;;34443:732;;;;:::o;35181:831::-;35444:4;35482:3;35471:9;35467:19;35459:27;;35496:71;35564:1;35553:9;35549:17;35540:6;35496:71;:::i;:::-;35577:80;35653:2;35642:9;35638:18;35629:6;35577:80;:::i;:::-;35704:9;35698:4;35694:20;35689:2;35678:9;35674:18;35667:48;35732:108;35835:4;35826:6;35732:108;:::i;:::-;35724:116;;35850:72;35918:2;35907:9;35903:18;35894:6;35850:72;:::i;:::-;35932:73;36000:3;35989:9;35985:19;35976:6;35932:73;:::i;:::-;35181:831;;;;;;;;:::o;36018:807::-;36267:4;36305:3;36294:9;36290:19;36282:27;;36319:71;36387:1;36376:9;36372:17;36363:6;36319:71;:::i;:::-;36400:72;36468:2;36457:9;36453:18;36444:6;36400:72;:::i;:::-;36482:80;36558:2;36547:9;36543:18;36534:6;36482:80;:::i;:::-;36572;36648:2;36637:9;36633:18;36624:6;36572:80;:::i;:::-;36662:73;36730:3;36719:9;36715:19;36706:6;36662:73;:::i;:::-;36745;36813:3;36802:9;36798:19;36789:6;36745:73;:::i;:::-;36018:807;;;;;;;;;:::o;36831:143::-;36888:5;36919:6;36913:13;36904:22;;36935:33;36962:5;36935:33;:::i;:::-;36831:143;;;;:::o;36980:663::-;37068:6;37076;37084;37133:2;37121:9;37112:7;37108:23;37104:32;37101:119;;;37139:79;;:::i;:::-;37101:119;37259:1;37284:64;37340:7;37331:6;37320:9;37316:22;37284:64;:::i;:::-;37274:74;;37230:128;37397:2;37423:64;37479:7;37470:6;37459:9;37455:22;37423:64;:::i;:::-;37413:74;;37368:129;37536:2;37562:64;37618:7;37609:6;37598:9;37594:22;37562:64;:::i;:::-;37552:74;;37507:129;36980:663;;;;;:::o

Swarm Source

ipfs://d5503077117b5da249dc4d2549418ba7e6e440018d6dad38f4e5487c7fcfebfc
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.